diff --git a/ai/ai-template.lua b/ai/ai-template.lua index c5113a86..b01ec6ed 100644 --- a/ai/ai-template.lua +++ b/ai/ai-template.lua @@ -2,12 +2,14 @@ ai-template.lua Author: Percival18 -Version: 0.9.1 +Version: 0.9.2 Website: https://www.ygopro.co -To be used with ygopro percy 1.033.A and up. For help on how to use this file please read the comments thoroughly. +To be used with ygopro percy 1.033.D and up. For help on how to use this file please read the comments thoroughly. --- What's new --- +0.9.2 +-Random ai deck tweaks 0.9.1 -New functions card:is_public() @@ -303,8 +305,8 @@ end From constants.lua POS_FACEUP_ATTACK =0x1 POS_FACEDOWN_ATTACK =0x2 -POS_FACEUP_DEFENCE =0x4 -POS_FACEDOWN_DEFENCE =0x8 +POS_FACEUP_DEFENSE =0x4 +POS_FACEDOWN_DEFENSE =0x8 --]] function OnSelectPosition(id, available) local result = 0 @@ -315,7 +317,7 @@ function OnSelectPosition(id, available) --Example if id == 19665973 then --is this card battle fader? --always put battle fader in def position - result = POS_FACEUP_DEFENCE + result = POS_FACEUP_DEFENSE else -- default is attack position result = POS_FACEUP_ATTACK @@ -328,10 +330,10 @@ function OnSelectPosition(id, available) print("invalid position! find a valid value") if band(POS_FACEUP_ATTACK,available) > 0 then result = POS_FACEUP_ATTACK - elseif band(POS_FACEUP_DEFENCE,available) > 0 then - result = POS_FACEUP_DEFENCE - elseif band(POS_FACEDOWN_DEFENCE,available) > 0 then - result = POS_FACEDOWN_DEFENCE + elseif band(POS_FACEUP_DEFENSE,available) > 0 then + result = POS_FACEUP_DEFENSE + elseif band(POS_FACEDOWN_DEFENSE,available) > 0 then + result = POS_FACEDOWN_DEFENSE else result = POS_FACEDOWN_ATTACK end diff --git a/ai/ai.lua b/ai/ai.lua index cfe234a6..4e09e3c9 100644 --- a/ai/ai.lua +++ b/ai/ai.lua @@ -1,4 +1,4 @@ -Version = "0.34" +Version = "0.35" Experimental = false --[[ @@ -15,7 +15,7 @@ Experimental = false http://www.ygopro.co/Forum/tabid/95/g/posts/t/7877/AI-Updates Contributors: ytterbite, Sebrian, Skaviory, francot514 - Optional decks: Yeon, Satone, rothayz, Ildana, Iroha, Postar, Nachk, Xaddgx + Optional decks: Yeon, Satone, rothayz, Ildana, Iroha, Postar, Nachk, Xaddgx, neftalimich You can find and download optional decks here: http://www.ygopro.co/Forum/tabid/95/g/posts/t/7877/AI-Updates @@ -84,6 +84,7 @@ require("ai.decks.Generic") require("ai.decks.FireFist") require("ai.decks.HeraldicBeast") require("ai.decks.Gadget") +require("ai.decks.BLS") require("ai.decks.Bujin") require("ai.decks.Mermail") require("ai.decks.Shaddoll") @@ -107,6 +108,11 @@ require("ai.decks.Kozmo") require("ai.decks.Lightsworn") require("ai.decks.DDD") require("ai.decks.GladBeast") +require("ai.decks.ABC") +require("ai.decks.Raidraptor") +require("ai.decks.Eidolon") +requireoptional("ai.decks.ZodiacBeast") +requireoptional("ai.decks.Fluffal") requireoptional("ai.decks.Majespecter") requireoptional("ai.decks.Spellbook") requireoptional("ai.decks.X-Saber") @@ -114,7 +120,6 @@ requireoptional("ai.decks.Cth") requireoptional("ai.decks.Wizard") requireoptional("ai.decks.Express") - math.randomseed( require("os").time() ) function OnStartOfDuel() diff --git a/ai/decks/ABC.lua b/ai/decks/ABC.lua new file mode 100644 index 00000000..a7244a96 --- /dev/null +++ b/ai/decks/ABC.lua @@ -0,0 +1,1557 @@ + + +function ABCStartup(deck) + deck.Init = ABCInit + deck.Card = ABCCard + deck.Chain = ABCChain + deck.EffectYesNo = ABCEffectYesNo + deck.Position = ABCPosition + deck.YesNo = ABCYesNo + deck.BattleCommand = ABCBattleCommand + deck.AttackTarget = ABCAttackTarget + deck.AttackBoost = ABCAttackBoost + deck.Tribute = ABCTribute + deck.Option = ABCOption + deck.ChainOrder = ABCChainOrder + deck.Material = ABCMaterial + --[[ + deck.Sum + deck.DeclareCard + deck.Number + deck.Attribute + deck.MonsterType + ]] + deck.ActivateBlacklist = ABCActivateBlacklist + deck.SummonBlacklist = ABCSummonBlacklist + deck.RepositionBlacklist = ABCRepoBlacklist + deck.SetBlacklist = ABCSetBlacklist + deck.Unchainable = ABCUnchainable + --[[ + + ]] + deck.PriorityList = ABCPriorityList + + +end + + +ABCIdentifier = 01561110 -- ABC Dragon Buster + +DECK_ABC = NewDeck("ABC",ABCIdentifier,ABCStartup) + +--[[ +87979586, -- Angel Trumpeteer +46659709, -- Galaxy Soldier +30012506, -- A-Assault Core +55010259, -- Golden Gadget +77411244, -- B-Buster Drake +29021114, -- Silver Gadget +03405259, -- C-Crush Wyvern +70271583, -- Karakuri Watchdog +66625883, -- Karakuri Strategist +81846636, -- Gem-Knight Lazuli + +00911883, -- Unexpected Dai +05288597, -- Transmodify +73628505, -- Terraforming +43898403, -- Twin Twister +07394770, -- Brilliant Fusion +66399653, -- Union Hangar + +05851097, -- Vanity +40605147, -- Strike +84749824, -- Warning + +01561110, -- ABC Dragon Buster +03113836, -- Gem-Knight Seraphinite +74586817, -- Omega +66976526, -- Karakuri Bureido +23874409, -- Karakuri Burei +63767246, -- Titanic Galaxy +10443957, -- CyDra Infinity +56832966, -- Utopia Lightning +73964868, -- Pleiades +58069384, -- CyDra Nova +84013237, -- Utopia +28912357, -- Gear Giant X +82633039, -- Castel +]] +ABCActivateBlacklist={ +46659709, -- Galaxy Soldier +30012506, -- A-Assault Core +55010259, -- Golden Gadget +77411244, -- B-Buster Drake +29021114, -- Silver Gadget +03405259, -- C-Crush Wyvern +70271583, -- Karakuri Watchdog +66625883, -- Karakuri Strategist +81846636, -- Gem-Knight Lazuli + +00911883, -- Unexpected Dai +05288597, -- Transmodify +07394770, -- Brilliant Fusion +66399653, -- Union Hangar + +01561110, -- ABC Dragon Buster +74586817, -- Omega +66976526, -- Karakuri Bureido +23874409, -- Karakuri Burei +} +ABCSummonBlacklist={ +87979586, -- Angel Trumpeteer +46659709, -- Galaxy Soldier +30012506, -- A-Assault Core +55010259, -- Golden Gadget +77411244, -- B-Buster Drake +29021114, -- Silver Gadget +03405259, -- C-Crush Wyvern +70271583, -- Karakuri Watchdog +66625883, -- Karakuri Strategist +81846636, -- Gem-Knight Lazuli +55063751, -- Gameciel + +01561110, -- ABC Dragon Buster +03113836, -- Gem-Knight Seraphinite +66976526, -- Karakuri Bureido +23874409, -- Karakuri Burei + +63767246, -- Titanic Galaxy +48905153, -- Drancia +85115440, -- Bullhorn +} +ABCSetBlacklist={ +} +ABCRepoBlacklist={ +73289035, -- Tsukuyomi +} +ABCUnchainable={ +01561110, -- ABC Dragon Buster +} + +function KarakuriFilter(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0x11) and check +end + +function FilterABC(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return (FilterID(c,30012506) -- A + or FilterID(c,77411244) -- B + or FilterID(c,03405259)) -- C + and check +end + +function ACond(loc,c) + local prio = 1 + if loc == PRIO_TOHAND then + if HasID(AIHand(),c.id) then + return 0 + end + return not HasAccess(c.id) + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return not HasID(Merge(AIField(),AIGrave()),c.id,true) + end + return not HasAccess(c.id) + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_REMOVED) + and CardsMatchingFilter(AIBanish(),FilterID,c.id)==1 + and HasIDNotNegated(AIMon(),01561110,true) + then + return 0 + end + if not HasID(AIGrave(),c.id,true) then + prio = 3 + end + if not HasAccess(c.id) + or FilterLocation(c,LOCATION_OVERLAY) + and not HasID(AIGrave(),c.id,true) + then + prio = 5 + end + if FilterLocation(c,LOCATION_ONFIELD) + and CardsMatchingFilter(AIGrave(),AFilter)>0 + then + prio = prio + 2 + end + return prio + end + if loc == PRIO_BANISH then + return FilterLocation(c,LOCATION_GRAVE) + end + return true +end +function BCond(loc,c) + local prio = 1 + if loc == PRIO_TOHAND then + if HasID(AIHand(),c.id) then + return 0 + end + return not HasAccess(c.id) + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return not HasID(Merge(AIField(),AIGrave()),c.id,true) + end + if GlobalEquip then + return true + end + return not HasAccess(c.id) + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_REMOVED) + and CardsMatchingFilter(AIBanish(),FilterID,c.id)==1 + and HasIDNotNegated(AIMon(),01561110,true) + then + return 0 + end + if not HasID(AIGrave(),c.id,true) then + prio = 2 + end + if not HasAccess(c.id) + or FilterLocation(c,LOCATION_OVERLAY) + and not HasID(AIGrave(),c.id,true) + then + prio = 5 + end + if FilterLocation(c,LOCATION_ONFIELD) + then + prio = prio + 2 + end + return prio + end + if loc == PRIO_BANISH then + return FilterLocation(c,LOCATION_GRAVE) + end + return true +end +function CCond(loc,c) + local prio = 1 + if loc == PRIO_TOHAND then + if HasID(AIHand(),c.id) then + return 0 + end + return not HasAccess(c.id) + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return not HasID(Merge(AIField(),AIGrave()),c.id,true) + end + return not HasAccess(c.id) + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_REMOVED) + and CardsMatchingFilter(AIBanish(),FilterID,c.id)==1 + and HasIDNotNegated(AIMon(),01561110,true) + then + return 0 + end + if not HasID(AIGrave(),c.id,true) then + prio = 2 + end + if not HasAccess(c.id) + or FilterLocation(c,LOCATION_OVERLAY) + and not HasID(AIGrave(),c.id,true) + then + prio = 5 + end + if FilterLocation(c,LOCATION_ONFIELD) + and CardsMatchingFilter(AIHand(),AFilter)>0 + and DualityCheck() + and SpaceCheck()>0 + then + prio = prio + 2 + end + return prio + end + if loc == PRIO_BANISH then + return FilterLocation(c,LOCATION_GRAVE) + end + return true +end +function WatchdogCond(loc,c) + if loc == PRIO_TOFIELD then + if (FieldCheck(4) > 0 or ChainCheck(03405259,player_ai)) -- C + and CardsMatchingFilter(AIMon(),FilterTuner,4)==0 + then + return true + end + end +end +function StrategistCond(loc,c) + if loc == PRIO_TOFIELD then + if HasIDNotNegated(AIMon(),66976526,true,FilterOPT) -- Bureido + then + return true + end + end +end +function HangarCond(loc,c) + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + and CardsMatchingFilter(UseLists(AIST(),AIHand()),FilterID,c.id)>1 + then + return true + end + return false + end + return true +end +function DaiFilter(c) + return FilterType(c,TYPE_MONSTER) + and FilterType(c,TYPE_NORMAL) + and FilterLevelMax(c,4) +end +function DaiCond(loc,c) + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + and CardsMatchingFilter(AIDeck(),DaiFilter)==0 + then + return true + end + return false + end + return true +end +function BrilliantFusionCond(loc,c) + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + and CardsMatchingFilter(AIDeck(),FilterSet,0x1047)==0 -- Gem-Knight + then + return true + end + return false + end + return true +end +function TsukuyomiCond(loc,c) + if loc == PRIO_TOGRAVE then + return c.xyz_material_count==0 + end + return true +end +ABCPriorityList={ +--[12345678] = {1,1,1,1,1,1,1,1,1,1,XXXCond}, -- Format + +-- ABC + +[30012506] = {8,1,6,1,6,1,1,1,4,1,ACond}, -- A-Assault Core +[77411244] = {7,1,8,1,5,1,1,1,4,1,BCond}, -- B-Buster Drake +[03405259] = {6,1,7,1,5,1,1,1,4,1,CCond}, -- C-Crush Wyvern + +[55010259] = {5,3,9,3,3,1,1,1,1,1,GoldGagdetCond}, -- Golden Gadget +[29021114] = {4,2,9,2,3,1,1,1,1,1,SilverGagdetCond}, -- Silver Gadget +[65367484] = {2,1,2,1,4,1,1,1,1,1,}, -- Thrasher + +[70271583] = {1,1,5,1,5,1,1,1,1,1,WatchdogCond}, -- Karakuri Watchdog +[66625883] = {1,1,4,1,5,1,1,1,1,1,StrategistCond}, -- Karakuri Strategist + +[87979586] = {1,1,1,1,5,1,1,1,1,1,}, -- Angel Trumpeteer +[46659709] = {1,1,1,1,4,1,1,1,1,1,}, -- Galaxy Soldier + +[81846636] = {1,1,1,1,9,1,1,1,1,1,}, -- Gem-Knight Lazuli + +[00911883] = {1,1,1,1,8,1,1,1,1,1,DaiCond}, -- Unexpected Dai +[05288597] = {1,1,1,1,8,1,1,1,1,1,TransmodifyCond}, -- Transmodify +[07394770] = {1,1,1,1,8,1,1,1,1,1,BrilliantFusionCond}, -- Brilliant Fusion +[66399653] = {1,1,1,1,3,2,1,1,1,1,HangarCond}, -- Union Hangar + +[83326048] = {1,1,1,1,1,1,1,1,1,1,}, -- Dimensional Barrier + +[01561110] = {1,1,1,1,1,1,1,1,1,1,}, -- ABC Dragon Buster +[03113836] = {1,1,1,1,1,1,1,1,1,1,}, -- Gem-Knight Seraphinite +[66976526] = {1,1,1,1,1,1,1,1,1,1,}, -- Karakuri Bureido +[23874409] = {1,1,1,1,1,1,1,1,1,1,}, -- Karakuri Burei +[73289035] = {1,1,1,1,5,1,1,1,1,1,TsukuyomiCond}, -- Tsukuyomi + +[23434538] = {1,1,1,1,3,1,1,1,1,1,}, -- Maxx C +[73628505] = {1,1,1,1,5,1,1,1,1,1,}, -- Terraforming +[32807846] = {1,1,1,1,6,1,1,1,1,1,}, -- Rota +[70368879] = {1,1,1,1,7,1,1,1,1,1,}, -- Upstart +[55063751] = {1,1,1,1,4,1,1,1,1,1,}, -- Upstart + +} +ABCDragons={ +30012506, -- A-Assault Core +77411244, -- B-Buster Drake +03405259, -- C-Crush Wyvern +} +function UseDai(c,mode) + return MaxxCheck() +end +function EnableABC(cards,count,available) + -- checks, if the list has the remaining cards to allow ABC Buster to be summoned + count = count or 1 + cards = cards or AIHand() + available = available or UseLists(AIField(),AIGrave()) + local result = 0 + local result2 = 0 + for i,id in pairs(ABCDragons) do + if HasID(available,id,true) then + result = result + 1 + else + if HasID(cards,id,true) then + result2 = result2 + 1 + end + end + end + return result + result2 ==3 and (count==0 and result2>0 or result2==count) + and HasID(AIExtra(),01561110,true) + and not HasID(AIMon(),01561110,true) +end +function UseBrilliantFusion(c,mode) + if not MaxxCheck() then return false end + if mode == 1 + and (FilterLocation(c,LOCATION_HAND) + or FilterPosition(c,POS_FACEDOWN)) + then + GlobalActivatedCardID = c.id + return true + end +end +function HangarFilter(c) + return FilterAttribute(c,ATTRIBUTE_LIGHT) + and FilterRace(c,RACE_MACHINE) + and FilterType(c,TYPE_UNION) +end +function UseHangar(c,mode) + if mode == 1 + and CardsMatchingFilter(AIST(),FilterType,TYPE_FIELD)==0 + then + GlobalCardMode = 1 + return true + end + if mode == 2 + and CardsMatchingFilter(AIDeck(),HangarFilter)>0 + and (not HasIDNotNegated(AIST(),c.id,true,OPTCheck) + or NormalSummonsAvailable==0 + or CardsMatchingFilter(AIHand(),FilterABC)==0) + then + GlobalCardMode = 1 + return true + end +end +function SummonA(c,mode) + if mode == 1 + and CanXYZSummon() + and NormalSummonsAvailable()>1 + and FieldCheck(4)==0 + and HandCheck(4)>1 + then + return true + end + if mode == 2 + and CanXYZSummon() + and FieldCheck(4)==1 + then + return true + end + if mode == 3 + and HasIDNotNegated(UseLists(AIHand(),AIST()),05288597,true) -- Transmodify + and CardsMatchingFilter(UseLists(AIHand(),AIDeck()),FilterID,46659709)>1 -- Galaxy Soldier + and (CardsMatchingFilter(AIHand(),FilterAttribute,ATTRIBUTE_LIGHT)>1 + or c.id == 77411244 -- B + or c.id == 30012506 and CardsMatchingFilter(AIGrave(),HangarFilter)>0) -- A + then + return true + end + if mode == 4 + and HasIDNotNegated(AIST(),66399653,true) -- Hangar + then + return true + end + if mode == 7 + and not HasID(Merge(AIField(),AIGrave()),c.id) + then + return true + end +end +function UseA(c) + if FilterLocation(c,LOCATION_SZONE) + then + return true + end + if FilterLocation(c,LOCATION_MZONE) + then + return false + end +end +function SummonB(c,mode) + return SummonA(c,mode) +end +function UseB(c) + return UseA(c) +end +function SummonC(c,mode) + if mode == 5 + and CanXYZSummon() + and FieldCheck(4,FilterTuner)==1 + and CardsMatchingFilter(AIHand(),HangarFilter)>1 + then + return true + end + if mode == 6 + and HasIDNotNegated(UseLists(AIHand(),AIST()),05288597,true) -- Transmodify + and CardsMatchingFilter(UseLists(AIHand(),AIDeck()),FilterID,46659709)>1 -- Galaxy Soldier + and CardsMatchingFilter(AIHand(),FilterAttribute,ATTRIBUTE_LIGHT)>2 + and CardsMatchingFilter(AIHand(),HangarFilter)>1 + then + return true + end + return SummonA(c,mode) +end +function UseC(c) + return UseA(c) +end +function ABCMaterials(cards) + cards = cards or UseLists(AIField(),AIGrave()) + if HasID(cards,30012506,true) -- A + and HasID(cards,77411244,true) -- B + and HasID(cards,03405259,true) -- C + then + return true + end + return false +end +function SummonABC(c,mode) + if not MaxxCheck() then return false end + if mode == 1 + and ABCMaterials(AIGrave()) + then + GlobalMaterial = true + GlobalSSCardID = c.id + GlobalCardMode = 3 + return true + end + if mode == 2 + then + GlobalMaterial = true + GlobalSSCardID = c.id + GlobalCardMode = 3 + return true + end +end +function ABCFilter(c) + return Affected(c,TYPE_MONSTER,8) + and Targetable(c,TYPE_MONSTER) + and ShouldRemove(c) +end +function UseABC(c,mode) + local targets = SubGroup(OppField(),ABCFilter) + local prio = SubGroup(targets,FilterPriorityTarget) + local discards = AIHand() + if mode == 1 + and (#prio>0 + or #targets>0 + and (PriorityCheck(discards)>4 + or #discards>3)) + and NotNegated(c) + then + return true + end +end +function GoldGadgetFilter(c) + return FilterLevel(c,4) and FilterRace(c,RACE_MACHINE) +end +function SummonGoldGadget(c,mode) + if mode == 1 + and CardsMatchingFilter(AIHand(),GoldGadgetFilter)>1 + and OPTCheck(c.id) + and DualityCheck() + then + return true + end + if mode == 2 + and CanXYZSummon() + and FieldCheck(4)==1 + then + return true + end +end +function SummonSilverGadget(c,mode) + return SummonGoldGadget(c,mode) +end +function SummonBureido(c,mode) + if mode == 1 + and (FieldCheck(4)>2 + or HasID(AIMon(),03405259,true) and CardsMatchingFilter(AIHand(),HangarFilter)>0) + and CardsMatchingFilter(AIDeck(),FilterID,70271583)>0 -- Watchdog + and CardsMatchingFilter(AIExtra(),FilterID,c.id)>0 + then + return true + end + if mode == 2 + and CardsMatchingFilter(AIMon(),FilterID,c.id)>0 + then + return true + end + if mode == 3 + and CardsMatchingFilter(AIDeck(),FilterID,66625883)>0 -- Strategist + then + return true + end +end +function UseTransmodify(c,mode) + if mode == 1 + and (HasID(AIMon(),77411244,true) -- B + or HasID(AIMon(),30012506,true) and CardsMatchingFilter(AIGrave(),HangarFilter)>1 -- A + or CardsMatchingFilter(AIHand(),FilterAttribute,ATTRIBUTE_LIGHT)>0) + and CardsMatchingFilter(UseLists(AIHand(),AIDeck()),FilterID,46659709)>1 -- Galaxy Soldier + then + return true + end +end +function UseGalaxySoldier(c,mode) + if mode == 1 + and FieldCheck(5,FilterRace,RACE_MACHINE)==1 + then + return true + end + if mode == 2 + and FilterOPT(c) + and CardsMatchingFilter(AIHand(),FilterAttribute,ATTRIBUTE_LIGHT)>2 + then + return true + end + if mode == 3 + and CardsMatchingFilter(AIMon(),FilterTuner,3)>0 + then + return true + end + if mode == 4 + and EnableABC() + then + return true + end +end +function SummonTrumpeteer(c,mode) + if mode == 1 + and CanXYZSummon() + and FieldCheck(4,FilterNonTuner)==1 + then + return true + end + if mode == 2 + then + return true + end +end +function SummonWatchdog(c,mode) + if mode == 1 + and CanXYZSummon() + and FieldCheck(4,FilterNonTuner)==1 + then + return true + end + if mode == 2 + and CanXYZSummon() + and FieldCheck(4)==1 + then + return true + end +end +function SetB(c) + return true +end +function SetC(c) + return true +end +function MaterialFilter(c,level) + -- don't use Omega or ABC Buster as materials. TODO: unless they are crippled + level = level or 4 + return FilterLevel(c,level) + and ExcludeID(c,01561110) -- ABC Buster + and ExcludeID(c,74586817) -- Omega +end +function SummonTitanicABC(c) + local mats = SubGroup(AIMon(),MaterialFilter,8) + return #mats>1 + and MP2Check() +end +function UseTerraformingABC(c,mode) + if mode == 1 + and not HasID(AICards(),66399653,true) -- Union Hangar + then + return true + end + if mode == 2 + then + return true + end +end +function UseTsukuyomiABC(c,mode) + local st = CardsMatchingFilter(AIHand(),function(c) + return FilterType(c,TYPE_SPELL+TYPE_TRAP) + and not FilterType(c,TYPE_FIELD) + end) + local mons = CardsMatchingFilter(AIHand(),FilterType,TYPE_MONSTER) + local space = SpaceCheck(LOCATION_SZONE)-3 + if mode == 1 + and #AIHand()<4 + and (st==0 or space==0 or #AIHand()==1 + and CardsMatchingFilter(AIMon(),FilterEquipped,77411244)==0) + and OPTCheck(c) + then + OPTSet(c) + return true + end + if mode == 2 + and (st-space)+mons<4 + and (#AIHand()>1 or CardsMatchingFilter(AIMon(),FilterEquipped,77411244)>0) -- B + and OPTCheck(c) + then + return true + end +end +function SummonTsukuyomiABC(c,mode) + local st = CardsMatchingFilter(AIHand(),FilterType,TYPE_SPELL+TYPE_TRAP) + local mons = CardsMatchingFilter(AIHand(),FilterType,TYPE_MONSTER) + + CardsMatchingFilter(AIMon(),FilterEquipped,77411244) -- B + + CardsMatchingFilter(AIMon(),FilterEquipped,30012506) -- A + local space = math.min(st,SpaceCheck(LOCATION_SZONE)) + if mode == 1 + and (st-space)+mons<4 + and st+mons>0 + and CanSpecialSummon() + and MacroCheck() + then + return true + end + --[[if mode == 2 + and (st-space)+mons<4 + and st+mons>0 + and CanSpecialSummon() + and MacroCheck() + and EnableABC(Merge(st,mons),0) + then + return true + end]] +end +function SummonThrasherABC(c,mode) + if mode == 1 then + return true + end +end +function UseRotaABC(c,mode) + if mode == 1 + and not HasID(AICards(),65367484,true) -- Thrasher + and not HasIDNotNegated(AIMon(),73289035,true,OPTCheck) -- Tsukuyomi + then + return true + end + if mode == 2 + then + return true + end +end +function UseDDWABC(c,mode) + if mode == 1 + and CardsMatchingFilter(OppField(),DDWFilter)>0 + and CardsMatchingFilter(c.xyz_materials,FilterABC)>1 + then + return true + end + if mode == 2 + and CardsMatchingFilter(OppField(),DDWFilter,true)>0 + then + return true + end + if mode == 3 + and CardsMatchingFilter(OppField(),DDWFilter)>0 + and OppHasStrongestMonster() + then + return true + end + if mode == 4 + and MP2Check() + and CardsMatchingFilter(OppField(),DDWFilter)>0 + then + return true + end +end +function SummonDDWABC(c,mode) + if mode == 1 + and (CardsMatchingFilter(AIMon(),FilterABC)>1 + or EnableABC(AIField(),0,AIGrave())) + and CardsMatchingFilter(OppField(),DDWFilter)>0 + then + return true + end + if mode == 2 + and CardsMatchingFilter(OppField(),DDWFilter,true)>0 + then + return true + end + if mode == 3 + and MP2Check() + and CardsMatchingFilter(OppField(),DDWFilter,true)>0 + then + return true + end +end +function UseGGXABC(c,mode) + if mode == 1 + and (not HasIDNotNegated(AIMon(),73289035,true,HasMaterials) + or #AIHand()==0) + then + return true + end + if mode == 2 + then + return true + end +end +function SummonGGXABC(c,mode) + if mode == 1 + and EnableABC(AIField(),1,AIGrave()) + then + return true + end + if mode == 2 + and EnableABC(AIField(),0,AIGrave()) + then + return true + end +end +function SummonDwellerABC(c,mode) + if mode == 1 + and EnableABC(AIField(),1,AIGrave()) + then + return true + end +end +function UseDwellerABC(c,mode) + if mode == 1 + and EnableABC(c.xyz_materials,1,AIGrave()) + then + return true + end +end +function SummonBullhornABC(c,mode) + if mode == 1 + and MaxxCheck() + and HasIDNotNegated(AIExtra(),48905153,true) + and EnableABC(AIST(),1,AIGrave()) + then + return true + end + if mode == 2 + and MaxxCheck() + and HasIDNotNegated(AIExtra(),48905153,true) + and EnableABC(AIST(),0,AIGrave()) + then + return true + end +end +function GamecielFilter(c,source) + local result = false + if NotNegated(c) + and FilterID(c,10443957) -- CyDra Infinity + and HasMaterials(c) + then + result = true + end + if NotNegated(c) + and FilterID(c,85909450) -- HPPD + and HasMaterials(c) + then + result = true + end + if NotNegated(c) + and FilterID(c,01561110) -- ABC Dragon Buster + then + result = true + end + if NotNegated(c) + and FilterID(c,50954680) -- Crystal Wing + then + result = true + end + if c.attack>3000 + or (c.attack>2500 or not BattleTargetCheck(c,source)) + and not (Targetable(c,TYPE_MONSTER) + and Affected(c,TYPE_MONSTER,8)) + then + result = true + end + return result +end +function SummonGameciel(c,mode) + if mode == 1 + and MaxxCheck() + and CardsMatchingFilter(OppMon(),GamecielFilter,c)>0 + and CardsMatchingFilter(OppMon(),FilterSet,0xd3)==0 + then + GlobalMaterial = true + GlobalSSCardID = c.id + return true + end + if mode == 2 + and MaxxCheck() + and AIGetStrongestAttack()>c.attack + and OppHasStrongestMonster() + and CardsMatchingFilter(OppMon(),FilterSet,0xd3)==0 + then + GlobalMaterial = true + GlobalSSCardID = c.id + return true + end + if mode == 3 + and MaxxCheck() + and CardsMatchingFilter(OppMon(),FilterSet,0xd3)>0 + and OppHasStrongestMonster() + then + return true + end +end +function RepoTsukoyomi(c) + if FilterPosition(c,POS_ATTACK) then + if not (BattlePhaseCheck() and CanAttack(c)) + then + return true + end + if c.attack<1500 + and #OppMon()>0 + and not CanWinBattle(c,OppMon()) + then + return true + end + end + if FilterPosition(c,POS_DEFENSE) then + if not (BattlePhaseCheck() and CanAttack(c)) + then + return false + end + if c.attack>1500 + and #OppMon()==0 + or CanWinBattle(c,OppMon()) + then + return true + end + end +end +function ABCInit(cards) + local Act = cards.activatable_cards + local Sum = cards.summonable_cards + local SpSum = cards.spsummonable_cards + local Rep = cards.repositionable_cards + local SetMon = cards.monster_setable_cards + local SetST = cards.st_setable_cards + if HasID(SpSum,55063751,SummonGameciel,1) then + return SpSummon() + end + if HasID(SpSum,56832966,SummonUtopiaLightning,1) then + return XYZSummon() + end + if HasID(SpSum,84013237,SummonUtopia,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,48905153,SummonDrancia,1) then + return SpSummon() + end + if HasID(SpSum,10443957,SummonInfinity) then + return XYZSummon() + end + if HasID(SpSum,58069384,SummonNova) then + return XYZSummon() + end + if HasID(Act,95169481,UseDDWABC,1) then + return Activate() + end + if HasID(Act,73628505,UseTerraformingABC,1) then + return Activate() + end + if HasID(Act,28912357,UseGGXABC,1) then + return Activate() + end + if HasID(Act,32807846,UseRotaABC,1) then + return Activate() + end + if HasID(Act,01561110,UseABC,1) then + return Activate() + end + if HasID(Act,00911883,UseDai,1) then + return Activate() + end + if HasID(Act,07394770,UseBrilliantFusion,1) then + return Activate() + end + if HasID(Act,66399653,UseHangar,1) then + return Activate() + end + + if HasID(Act,05288597,UseTransmodify,1) then + return Activate() + end + if HasID(SpSum,65367484,SummonThrasherABC,1) then + return SpSummon() + end + if HasID(Sum,55010259,SummonGoldGadget,1) then + return Summon() + end + if HasID(Sum,29021114,SummonSilverGadget,1) then + return Summon() + end + if HasID(Sum,30012506,SummonA,7) then + return Summon() + end + if HasID(Sum,77411244,SummonB,7) then + return Summon() + end + if HasID(Sum,03405259,SummonC,7) then + return Summon() + end + if HasID(Act,30012506,UseA,1) then + return Activate() + end + if HasID(Act,77411244,UseB,1) then + return Activate() + end + if HasID(Act,03405259,UseC,1) then + return Activate() + end + if HasID(Act,66399653,UseHangar,2) then + return Activate() + end + if HasID(Sum,30012506,SummonA,2) then + return Summon() + end + if HasID(Sum,03405259,SummonC,5) then + return Summon() + end + if HasID(Sum,77411244,SummonB,2) then + return Summon() + end + if HasID(Sum,03405259,SummonC,2) then + return Summon() + end + if HasIDNotNegated(Act,73289035,true,UseTsukuyomiABC,2) then + for i,c in pairs(SetST) do + if not FilterType(c,TYPE_FIELD) then + return SetSpell(i) + end + end + end + if HasIDNotNegated(Act,73289035,UseTsukuyomiABC,1) then + return Activate() + end + if HasIDNotNegated(SpSum,73289035,SummonTsukuyomiABC,1) then + return XYZSummon() + end + if HasID(Act,28912357,UseGGXABC,2) then + return Activate() + end + if HasID(Act,73628505,UseTerraformingABC,2) then + return Activate() + end + if HasID(Act,32807846,UseRotaABC,2) then + return Activate() + end + if HasID(Act,95169481,UseDDWABC,2) then + return Activate() + end + if HasID(Act,95169481,UseDDWABC,3) then + return Activate() + end + if HasIDNotNegated(SpSum,85115440,SummonBullhornABC,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,95169481,SummonDDWABC,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,28912357,SummonGGXABC,1) then + return XYZSummon() + end + if HasIDNotNegated(Act,21044178,UseDwellerABC,1) then + return Activate() + end + if HasIDNotNegated(SpSum,21044178,SummonDwellerABC,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,85115440,SummonBullhornABC,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,95169481,SummonDDWABC,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,28912357,SummonGGXABC,2) then + return XYZSummon() + end + if HasID(SpSum,66976526,SummonBureido,1) then + return SynchroSummon() + end + if HasID(SpSum,66976526,SummonBureido,2) then + return SynchroSummon() + end + if HasIDNotNegated(SpSum,74586817,SummonOmega,3) then + return XYZSummon() + end + if HasID(SpSum,66976526,SummonBureido,3) then + return SynchroSummon() + end + if HasIDNotNegated(SpSum,63767246,SummonTitanicABC) then + return XYZSummon() + end + if HasID(Act,46659709,UseGalaxySoldier,2) then + return Activate() + end + if HasIDNotNegated(SpSum,85115440,SummonBullhorn,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,85115440,SummonBullhorn,2) then + return XYZSummon() + end + if HasID(Sum,03405259,SummonC,6) then + return Summon() + end + if HasID(Sum,77411244,SummonB,1) then + return Summon() + end + if HasID(Sum,30012506,SummonA,1) then + return Summon() + end + if HasID(Sum,03405259,SummonC,1) then + return Summon() + end + if HasID(Sum,87979586,SummonTrumpeteer,1) then + return Summon() + end + if HasID(Sum,70271583,SummonWatchdog,1) then + return Summon() + end + if HasID(Sum,30012506,SummonB,3) then + return Summon() + end + if HasID(Sum,77411244,SummonA,3) then + return Summon() + end + if HasID(Sum,03405259,SummonC,3) then + return Summon() + end + if HasID(Sum,55010259,SummonGoldGadget,2) then + return Summon() + end + if HasID(Sum,29021114,SummonSilverGadget,2) then + return Summon() + end + if HasID(Sum,30012506,SummonA,4) then + return Summon() + end + if HasID(Sum,77411244,SummonB,4) then + return Summon() + end + if HasID(Sum,03405259,SummonC,4) then + return Summon() + end + if HasIDNotNegated(Act,46659709,UseGalaxySoldier,1) then + return Activate() + end + if HasID(Act,46659709,UseGalaxySoldier,3) then + return Activate() + end + if HasID(SpSum,23874409,SummonBurei,1) then + return SynchroSummon() + end + if HasIDNotNegated(SpSum,95169481,SummonDDWABC,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,95169481,SummonDDWABC,3) then + return XYZSummon() + end + if HasID(SpSum,01561110,SummonABC,1) then + return SpSummon() + end + if HasID(Sum,87979586,SummonTrumpeteer,2) then + return Summon() + end + if HasID(Sum,30012506) then -- A + return Summon() + end + if HasID(Act,46659709,UseGalaxySoldier,4) then + return Activate() + end + if HasID(Act,95169481,UseDDWABC,4) then + return Activate() + end + if HasID(SetMon,77411244,SetB) then + return Set() + end + if HasID(SetMon,03405259,SetC) then + return Set() + end + if HasID(SpSum,01561110,SummonABC,2) then + return SpSummon() + end + if HasID(SpSum,55063751,SummonGameciel,2) then + return SpSummon() + end + if HasID(SpSum,55063751,SummonGameciel,3) then + return SpSummon() + end + if HasID(Rep,73289035,RepoTsukoyomi) then + return Repo() + end + return nil +end +function ATarget(cards) + return Add(cards,PRIO_TOHAND) +end +function BTarget(cards) + return Add(cards,PRIO_TOHAND) +end +function CTarget(cards) + return Add(cards,PRIO_TOFIELD) +end +function ABCTarget(cards,c,min) + if LocCheck(cards,LOCATION_REMOVED) then + return Add(cards,PRIO_TOFIELD,min) + end + if LocCheck(cards,LOCATION_HAND) then + return Add(cards,PRIO_TOGRAVE) + end + return BestTargets(cards,min,TARGET_BANISH,ABCFilter) +end +function GoldGadgetTarget(cards) + if Duel.GetTurnPlayer()==1-player_ai + and OPTCheck(29021114) + then + return Add(cards,PRIO_TOFIELD,1,FilterID,29021114) + end + return Add(cards,PRIO_TOFIELD) +end +function SilverGadgetTarget(cards) + if Duel.GetTurnPlayer()==1-player_ai + and OPTCheck(55010259) + then + return Add(cards,PRIO_TOFIELD,1,FilterID,55010259) + end + return Add(cards,PRIO_TOFIELD) +end +function GalaxySoldierTarget(cards) + if LocCheck(cards,LOCATION_HAND) then + return Add(cards,PRIO_TOGRAVE) + end + return Add(cards) +end +function BrilliantFusionTarget(cards,c,min) + if LocCheck(cards,LOCATION_DECK) then + return Add(cards,PRIO_TOGRAVE) + end + return Add(cards,PRIO_TOFIELD) +end +function TransmodifyTarget(cards) + if LocCheck(cards,LOCATION_MZONE) then + return Add(cards,PRIO_TOGRAVE) + end + return Add(cards,PRIO_TOFIELD) +end +function BureiTarget(cards) + if LocCheck(cards,LOCATION_DECK) then + return Add(cards,PRIO_TOFIELD) + end + return BestTargets(cards,1,TARGET_OTHER) +end +function BureidoTarget(cards) + return Add(cards,PRIO_TOFIELD) +end +function StrategistFilter(c) + return FilterSet(c,0x11) + and FilterController(c,1) +end +function StrategistTarget(cards) + if HasIDNotNegated(AIMon(),66976526,true) then + return BestTargets(cards,1,TARGET_OTHER,StrategistFilter) + end + return BestTargets(cards,1,TARGET_OTHER) +end +function DaiTarget(cards) + return Add(cards,PRIO_TOFIELD) +end +function HangarTarget(cards) + if GlobalCardMode == 1 then + GlobalCardMode = nil + return Add(cards) + end + GlobalEquip = true + local result = Add(cards,PRIO_TOFIELD) + GlobalEquip = nil + return result +end +function TsukuyomiTargetABC(cards) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + return Add(cards) +end +function GGXTarget(cards) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + return Add(cards) +end +ABCTargetFunctions = { +[46659709] = GalaxySoldierTarget, -- Galaxy Soldier +[30012506] = ATarget, -- A-Assault Core +[77411244] = BTarget, -- B-Buster Drake +[03405259] = CTarget, -- C-Crush Wyvern +[55010259] = GoldGadgetTarget, -- Golden Gadget +[29021114] = SilverGadgetTarget, -- Silver Gadget +[66625883] = StrategistTarget, -- Karakuri Strategist + +[00911883] = DaiTarget, -- Unexpected Dai +[05288597] = TransmodifyTarget, -- Transmodify +[07394770] = BrilliantFusionTarget, -- Brilliant Fusion +[66399653] = HangarTarget, -- Union Hangar + +[01561110] = ABCTarget, -- ABC Dragon Buster +[66976526] = BureidoTarget, -- Karakuri Bureido +[23874409] = BureiTarget, -- Karakuri Burei +[95169481] = DDWTarget, -- DDW +[73289035] = TsukuyomiTargetABC, -- Tsukuyomi +[28912357] = GGXTarget, -- GGX +} +function ABCCard(cards,min,max,id,c) + for i,v in pairs(ABCTargetFunctions) do + if id == i then + return v(cards,c,min,max) + end + end + return nil +end +function ChainABC(c,mode) + if mode == 1 -- banish + and (NotNegated(c) + or NotNegated(c,true) + and Duel.GetTurnPlayer()==1-player_ai + and ABCMaterials(AIBanish()) + and CanSpecialSummon() + and SpaceCheck()>1) + then + local targets = SubGroup(OppField(),ABCFilter) + local prio = SubGroup(targets,FilterPriorityTarget) + local discards = AIHand() + if (RemovalCheckCard(c) + or NegateCheckCard(c)) + and #targets>0 + then + return true + end + if #prio>0 + and Duel.GetTurnPlayer()==1-player_ai + then + return true + end + if Duel.CheckTiming(TIMING_END_PHASE) + and #targets>0 + and (PriorityCheck(discards,PRIO_TOGRAVE)>3 + or #discards>3) + and Duel.GetCurrentChain()==0 + then + return true + end + end + if mode == 2 then -- spsummon + if RemovalCheckCard(c) + or NegateCheckCard(c) + then + return true + end + if Duel.CheckTiming(TIMING_END_PHASE) + and CardsMatchingFilter(AIExtra(),FilterID,c.id)>0 + and Duel.GetCurrentChain()==0 + and NotNegated(c,true) + then + return true + end + if ChainCheck(c.id,player_ai,nil,CardsEqual,c) + and Negated(c) + and NotNegated(c,true) + --and CanSpecialSummon() + then + return true + end + end +end +function ChainA(c) + return true -- TODO: not disable ABC summon +end +function ChainB(c) + return true +end +function ChainC(c) + return true +end +function ChainGoldGadget(c) + OPTSet(c.id) + return true +end +function ChainSilverGadget(c) + OPTSet(c.id) + return true +end +function ChainGalaxySoldier(c) + return true +end +function ChainBureido(c) + return true +end +function ChainBurei(c) + return true +end +function ChainHangar(c) + OPTSet(c) + return true +end +function ChainLazuli(c) + return true +end +function ChainOmegaABC(c) + if Duel.GetCurrentPhase()==PHASE_STANDBY then + return #AIBanish()>0 and not HasID(AIMon(),01561110,true) + or #AIBanish()~=3 + end + if RemovalCheckCard(c) or NegateCheckCard(c) then + return true + end + if Duel.CheckTiming(TIMING_MAIN_END) + and BattlePhaseCheck() + and OppHasStrongestMonster() + then + return true + end +end +ABCChainFunctions={ +[30012506] = ChainA, -- A-Assault Core +[77411244] = ChainB, -- B-Buster Drake +[03405259] = ChainC, -- C-Crush Wyvern +[55010259] = ChainGoldGadget, -- Golden Gadget +[29021114] = ChainSilverGadget, -- Silver Gadget +[46659709] = ChainGalaxySoldier, -- Galaxy Soldier +[66976526] = ChainBureido, -- Bureido +[23874409] = ChainBurei, -- Burei +[66399653] = ChainHangar, -- Union Hangar +[81846636] = ChainLazuli, -- Gem-Knight Lazuli +[74586817] = ChainOmegaABC, -- Omega +} +function ABCChain(cards) + if HasID(cards,01561110,false,01561110*16,ChainABC,1) then + return Chain() + end + if HasID(cards,01561110,false,01561110*16+1,ChainABC,2) then + return Chain() + end + for id,v in pairs(ABCChainFunctions) do + if HasID(cards,id,v) then + return Chain() + end + end + return nil +end +function ABCEffectYesNo(id,card) + for i,v in pairs(ABCChainFunctions) do + if id == i then + return v(card) + end + end + return nil +end +function ABCMaterial(cards,min,max,id) + if id == 01561110 then + if GlobalCardMode and GlobalCardMode>0 then + GlobalCardMode = GlobalCardMode-1 + if GlobalCardMode>0 then + GlobalMaterial = true + GlobalSSCardID = id + else + GlobalCardMode = nil + end + end + return Add(cards,PRIO_BANISH,min,FilterLocation,LOCATION_GRAVE) + end + if id == 55063751 then + return BestTargets(cards,1,TARGET_TOGRAVE,GamecielFilter) + end +end +function ABCYesNo(desc) +end +function ABCTribute(cards,min, max) +end +function ABCBattleCommand(cards,targets,act) +end +function ABCAttackTarget(cards,attacker) +end +function ABCAttackBoost(cards) +end +function ABCOption(options) +end +function ABCChainOrder(cards) +end +ABCAtt={ +46659709, -- Galaxy Soldier +70271583, -- Karakuri Watchdog +66625883, -- Karakuri Strategist + +01561110, -- ABC Dragon Buster +03113836, -- Gem-Knight Seraphinite +74586817, -- Omega +66976526, -- Karakuri Bureido +23874409, -- Karakuri Burei +63767246, -- Titanic Galaxy +} +ABCVary={ +30012506, -- A-Assault Core +77411244, -- B-Buster Drake +03405259, -- C-Crush Wyvern +55010259, -- Golden Gadget +29021114, -- Silver Gadget +73289035, -- Tsukuyomi +} +ABCDef={ +81846636, -- Gem-Knight Lazuli +85115440, -- Zodiac Beast Bullhorn +48905153, -- Zodiac Beast Drancia +} +function ABCPosition(id,available) + result = nil + for i=1,#ABCAtt do + if ABCAtt[i]==id + then + result=POS_FACEUP_ATTACK + end + end + for i=1,#ABCVary do + if ABCVary[i]==id + then + if (BattlePhaseCheck() or IsBattlePhase()) + and Duel.GetTurnPlayer()==player_ai + then + result=POS_FACEUP_ATTACK + else + result=POS_FACEUP_DEFENSE + end + end + end + for i=1,#ABCDef do + if ABCDef[i]==id + then + result=POS_FACEUP_DEFENSE + end + end + return result +end \ No newline at end of file diff --git a/ai/decks/BLS.lua b/ai/decks/BLS.lua new file mode 100644 index 00000000..bfc5e2f5 --- /dev/null +++ b/ai/decks/BLS.lua @@ -0,0 +1,1098 @@ +--[[ +05405694, -- BLS Vanilla +72989439, -- BLS Envoy +07841921, -- Charging Gaia +61901281, -- Collapserpent +99234526, -- Wyverbuster +38695361, -- Envoy of Chaos +95492061, -- Manju +06628343, -- Beginning Knight +32013448, -- Evening Twilight Knight +54484652, -- BLSSS + +01845204, -- Instant Fusion +32807846, -- RotA +35261759, -- Desires +38120068, -- Trade-In +70368879, -- Upstart +73628505, -- Terraforming +14094090, -- SSRitual +45948430, -- SSOrigin +43898403, -- Twin Twister +40089744, -- Gateway to Chaos + +40605147, -- Strike +84749824, -- Warning +32360466, -- Universal Beginning + +17412721, -- Norden +58820923, -- Dark Matter +39030163, -- Full Armor +31801517, -- Galaxy Prime +63767246, -- Titanic +56832966, -- Utopia Lightning +84013237, -- Utopia +21501505, -- Cairngorgon +94380860, -- Ragnazero +48739166, -- 101 +63746411, -- Giant Hand +82633039, -- Castel +95169481, -- DDW +21044178, -- Dweller +12014404, -- Cowboy +]] + +function BLSStartup(deck) + deck.Init = BLSInit + deck.Card = BLSCard + deck.Chain = BLSChain + deck.EffectYesNo = BLSEffectYesNo + deck.Position = BLSPosition + deck.YesNo = BLSYesNo + deck.BattleCommand = BLSBattleCommand + deck.AttackTarget = BLSAttackTarget + deck.AttackBoost = BLSAttackBoost + deck.Tribute = BLSTribute + deck.Option = BLSOption + deck.ChainOrder = BLSChainOrder + deck.Sum = BLSSum + --[[ + + deck.DeclareCard + deck.Number + deck.Attribute + deck.MonsterType + ]] + deck.ActivateBlacklist = BLSActivateBlacklist + deck.SummonBlacklist = BLSSummonBlacklist + deck.RepositionBlacklist = BLSRepoBlacklist + deck.SetBlacklist = BLSSetBlacklist + deck.Unchainable = BLSUnchainable + --[[ + + ]] + deck.PriorityList = BLSPriorityList +end +BLSIdentifier = 54484652 -- BLS Super Soldier +DECK_BLS = NewDeck("BLS",BLSIdentifier,BLSStartup) +BLSActivateBlacklist={ +05405694, -- BLS Vanilla +72989439, -- BLS Envoy +07841921, -- Charging Gaia +38695361, -- Envoy of Chaos +95492061, -- Manju +06628343, -- Beginning Knight +32013448, -- Evening Twilight Knight +54484652, -- BLSSS +04810828, -- Sauravis + +01845204, -- Instant Fusion +35261759, -- Desires +14094090, -- SSRitual +45948430, -- SSOrigin +40089744, -- Gateway to Chaos + +32360466, -- Universal Beginning + +17412721, -- Norden +58820923, -- Dark Matter +39030163, -- Full Armor +31801517, -- Galaxy Prime +95169481, -- DDW +85115440, -- Zodiac Beast Bullhorn +48905153, -- Zodiac Beast Drancia +} +BLSSummonBlacklist={ +72989439, -- BLS Envoy +07841921, -- Charging Gaia +61901281, -- Collapserpent +99234526, -- Wyverbuster +38695361, -- Envoy of Chaos +95492061, -- Manju +06628343, -- Beginning Knight +32013448, -- Evening Twilight Knight + +58820923, -- Dark Matter +39030163, -- Full Armor +31801517, -- Galaxy Prime +63767246, -- Titanic +95169481, -- DDW +85115440, -- Zodiac Beast Bullhorn +48905153, -- Zodiac Beast Drancia +} +BLSSetBlacklist={ +45948430, -- SSOrigin +} +BLSRepoBlacklist={ +} +BLSUnchainable={ +48905153, -- Drancia +} +function BLSFilter(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0x10cf) and check +end +function GaiaFilter(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0xbd) and check +end +function BLSMonsterFilter(c,exclude) + return FilterType(c,TYPE_MONSTER) + and BLSFilter(c,exclude) +end +function SummonBLSSS(c,mode) + if mode == 1 + and NotNegated(c) + and not HasIDNotNegated(AIMon(),c.id,true) + then + return true + end +end +function UseSSOrigin(c,mode) + if not MaxxCheck() then return false end + if mode == 1 + and HasID(AIGrave(),54484652,SummonBLSSS,1) -- BLSSS + then + return true + end + if mode == 2 + and HasID(AIHand(),54484652,SummonBLSSS,1) -- BLSSS + then + return true + end + if mode == 3 + and (#OppMon()>0 and (#AIMon()==0 or OppHasStrongestMonster())) + then + return true + end +end +function BLSBanishFilter(c,source) + return Affected(c,TYPE_MONSTER,source.level) + and Targetable(c,TYPE_MONSTER) +end +function UseBLSSS(c,mode) + if mode == 1 + and (c.description == 32013448*16 + or c.description == 06628343* 16) + and CardsMatchingFilter(OppMon(),BLSBanishFilter,c)>0 + then + return true + end + if mode == 2 + and c.description == 32013448*16+1 + then + return true + end +end +function UseChaosGateway(c,mode) + if mode == 1 -- activate from hand + and FilterLocation(c,LOCATION_HAND) + and not HasIDNotNegated(AIST(),c.id,true) + then + return true + end + if mode == 2 -- activate on field + and FilterLocation(c,LOCATION_ONFIELD) + and FilterPosition(c,POS_FACEUP) + then + return true + end + if mode == 3 -- activate face-down + and FilterLocation(c,LOCATION_ONFIELD) + and FilterPosition(c,POS_FACEDOWN) + then + return true + end +end +function SummonWyverbusterBLS(c,mode) + if mode == 1 + and HasID(AIGrave(),32013448,true,FilterOPT,true) -- Twilight Knight + and MaxxCheck() + then + return true + end + if mode == 2 + and PriorityCheck(AIGrave(),PRIO_BANISH,1,FilterAttribute,ATTRIBUTE_DARK)>3 + and MaxxCheck() + then + return true + end +end +function SummonCollapserpentBLS(c,mode) + if mode == 1 + and HasID(AIGrave(),06628343,true,FilterOPT,true) -- Beginning Knight + and MaxxCheck() + then + return true + end + if mode == 2 + and PriorityCheck(AIGrave(),PRIO_BANISH,1,FilterAttribute,ATTRIBUTE_LIGHT)>3 + and MaxxCheck() + then + return true + end +end +function UseTradeInBLS(c,mode) + if mode == 1 then + return HasID(AIHand(),54484652,true) + or HasID(AIHand(),05405694,true) + end + if mode == 2 then + return true + end +end +function UseTerraformingBLS(c,mode) + if mode == 1 then + return true + end +end +function SummonManjuBLS(c,mode) + if mode == 1 then + return true + end +end +function SummonChargingGaia(c,mode) + if mode == 1 then + return true + end +end +function SummonBLSKnight(c,mode) + if mode == 1 + and FieldCheck(4)>0 + and c.level == 4 + and CardsMatchingFilter(AIExtra(),FilterRank,4)>0 + and CanSpecialSummon() + then + return true + end + if mode == 2 + and #AIMon()==0 + and c.attack>=1500 + and (#OppMon()==0 + or CanWinBattle(c,OppMon())) + then + return true + end +end +function SetBLSKnight(c,mode) + if mode == 1 + and not HasID(AIGrave(),c.id,true) + and TurnEndCheck() + and #AIMon()==0 + and c.level<5 + then + return true + end + if mode == 2 + and TurnEndCheck() + and #AIMon()==0 + and c.level<5 + then + return true + end +end +function SummonBLSEnvoy(c,mode) + if mode == 1 + and (#AIMon()==0 or OppHasStrongestMonster) + and ChaosSummonCheck()>3 + and MaxxCheck() + then + return true + end + if mode == 2 + and (#OppMon()>0 and (#AIMon()==0 or OppHasStrongestMonster())) + and MaxxCheck() + then + return true + end +end +function UseTwinTwisterBLS(c,mode) + local targets = DestroyCheck(OppST(),nil,true) + if mode == 1 + and HasID(AIHand(),06628343,true,FilterOPT,true) -- Beginning Knight + and CardsMatchingFilter(AIGrave(),FilterID,06628343)==0 -- Beginning Knight + and CardsMatchingFilter(AICards(),FilterID,45948430)==0 -- SSOrigin + and targets>0 + then + return true + end + if mode == 2 + and HasID(AIHand(),32013448,true,FilterOPT,true) -- Twilight Knight + and CardsMatchingFilter(AIGrave(),FilterID,32013448)==0 -- Twilight Knight + and (not HasAccess(54484652) or HasIDNotNegated(AICards(),38120068,true)) -- BLSSS, Trade-in + and targets>0 + then + return true + end +end +function SSRitualTributeCheck(source) + source = source or FindID(54484652,AIHand()) + source = source or FindID(05405694,AIHand()) + local targets = {} + for i,c in pairs(AICards()) do + if FilterType(c,TYPE_MONSTER) + and CardsNotEqual(c,source) + and (FilterLevel(c,4) + or FilterLevel(c,8) + and (FilterLocation(c,LOCATION_HAND) + or FilterCrippled(c))) + then + table.insert(targets,c) + end + end + if CardsMatchingFilter(targets,FilterLevel,4)>1 + or CardsMatchingFilter(targets,FilterLevel,8)>0 + then + return true + end +end +function UseSSRitual(c,mode) + if not MaxxCheck() then return false end + if mode == 1 + and FilterLocation(c,LOCATION_GRAVE) + and (#AIMon()==0 or OppHasStrongestMonster()) + and ChaosSummonCheck()>3 + then + return true + end + if mode == 2 + and not FilterLocation(c,LOCATION_GRAVE) + and (SSRitualTributeCheck(FindID(54484652,AIHand())) -- BLSSS + or SSRitualTributeCheck(FindID(05405694,AIHand()))) -- BLS Vanilla + and not HasID(AIMon(),54484652,true,FilterNotCrippled) + then + return true + end + if mode == 3 + and (#OppMon()>0 and (#AIMon()==0 or OppHasStrongestMonster())) + then + return true + end +end +function UseBeginning(c,mode) + if mode == 1 + then + return true + end +end + +function DDWFilter(c,backrow) + return Affected(c,TYPE_MONSTER,4) + and Targetable(c,TYPE_MONSTER) + and DestroyFilterIgnore(c) + and (not backrow + or FilterType(c,TYPE_SPELL+TYPE_TRAP) + and FilterPosition(c,POS_FACEDOWN)) +end +function SummonDDWBLS(c,mode) + if not MaxxCheck() then return false end + if mode == 1 + and CardsMatchingFilter(OppField(),DDWFilter)>0 + and ChaosSummonCheck()<4 + and (HasID(AIHand(),72989439,true) -- BLS Envoy + or HasID(AIGrave(),14094090,true) -- SS Ritual + and (HasID(AIHand(),05405694,true) -- BLS Vanilla + or HasID(AIHand(),54484652,true))) -- BLSSS + and not HasID(AIMon(),54484652,true,FilterNotCrippled) -- BLSSS + then + return true + end + if mode == 2 + and CardsMatchingFilter(OppField(),DDWFilter,true)>0 + then + return true + end + if mode == 3 + and MP2Check() + and CardsMatchingFilter(OppField(),DDWFilter,true)>0 + then + return true + end +end +function UseDDWBLS(c,mode) + if mode == 1 + and CardsMatchingFilter(OppField(),DDWFilter)>0 + and PriorityCheck(AIMon(),PRIO_TOGRAVE,1,FilterRace,RACE_BEAST+RACE_BEASTWARRIOR+RACE_WINDBEAST)>3 + then + return true + end + if mode == 2 + and CardsMatchingFilter(OppField(),DDWFilter,true)>0 + then + return true + end + if mode == 3 + and CardsMatchingFilter(OppField(),DDWFilter)>0 + and OppHasStrongestMonster() + then + return true + end + if mode == 4 + and MP2Check() + and CardsMatchingFilter(OppField(),DDWFilter)>0 + then + return true + end +end +function UseIFBLS(c,mode) + if not (WindaCheck() + and CanSpecialSummon() + and AI.GetPlayerLP(1)>1000) + then + return false + end + if mode == 1 + and CardsMatchingFilter(AIGrave(),NodenFilter,4)>0 + and HasIDNotNegated(AIExtra(),17412721,true) -- Norden + and OppHasStrongestMonster() + and SpaceCheck()>1 + and HasIDNotNegated(AICards(),14094090,true) -- SSRitual + and (HasID(AIHand(),05405694,true) + or HasID(AIHand(),54484652,true)) + and not SSRitualTributeCheck() + then + return true + end +end +function BLSInit(cards) + local Act = cards.activatable_cards + local Sum = cards.summonable_cards + local SpSum = cards.spsummonable_cards + local Rep = cards.repositionable_cards + local SetMon = cards.monster_setable_cards + local SetST = cards.st_setable_cards + if HasIDNotNegated(Act,81439173) then -- test + return Activate() + end + if HasIDNotNegated(Act,32360466,UseBeginning,1) then + return Activate() + end + if HasIDNotNegated(Act,32807846) then -- RotA + return Activate() + end + if HasIDNotNegated(Act,43898403,UseTwinTwisterBLS,1) then + return Activate() + end + if HasIDNotNegated(Act,43898403,UseTwinTwisterBLS,2) then + return Activate() + end + for mode=1,4 do + if HasIDNotNegated(Act,95169481,UseDDWBLS,mode) then + return Activate() + end + end + if HasIDNotNegated(Act,73628505,UseTerraformingBLS,1) then + return Activate() + end + if HasIDNotNegated(Act,40089744,UseChaosGateway,2) then + return Activate() + end + if HasIDNotNegated(Act,40089744,UseChaosGateway,3) then + return Activate() + end + if HasIDNotNegated(Act,40089744,UseChaosGateway,1) then + return Activate() + end + if HasIDNotNegated(Act,54484652,UseBLSSS,1) then -- banish monster on field + return Activate() + end + if HasIDNotNegated(Act,54484652,UseBLSSS,2) then -- banish from hand + return Activate() + end + if HasIDNotNegated(Act,05405694,UseBLSSS,1) then -- banish monster on field + return Activate() + end + if HasIDNotNegated(Act,05405694,UseBLSSS,2) then -- banish from hand + return Activate() + end + if HasIDNotNegated(Act,38120068,UseTradeInBLS,1) then + return Activate() + end + + if HasIDNotNegated(Act,45948430,UseSSOrigin,1) then + return Activate() + end + if HasIDNotNegated(Act,45948430,UseSSOrigin,2) then + return Activate() + end + + if HasID(SpSum,61901281,SummonCollapserpentBLS,1) then + return SpSummon() + end + if HasID(SpSum,99234526,SummonWyverbusterBLS,1) then + return SpSummon() + end + if HasIDNotNegated(Sum,95492061,SummonManjuBLS,1) then + return Summon() + end + if HasID(SpSum,06628343,SummonBeginningKnight,1) then + return SpSummon() + end + if HasID(SpSum,32013448,SummonTwilightKnight,1) then + return SpSummon() + end + + if HasIDNotNegated(Act,14094090,UseSSRitual,1) then + return Activate() + end + if HasIDNotNegated(Act,14094090,UseSSRitual,2) then + return Activate() + end + + if HasID(SpSum,72989439,SummonBLSEnvoy,1) then + return SpSummon() + end + if HasID(SpSum,61901281,SummonCollapserpentBLS,2) then + return SpSummon() + end + if HasID(SpSum,99234526,SummonWyverbusterBLS,2) then + return SpSummon() + end + if HasIDNotNegated(Act,38120068,UseTradeInBLS,2) then + return Activate() + end + local knights = {07841921,06628343,32013448,38695361} -- Beginning Knight, Twilight Knight, Envoy of Chaos + for mode=1,2 do + for i,id in pairs(knights) do + if HasID(Sum,id,SummonBLSKnight,mode) then + return Summon() + end + end + end + if HasIDNotNegated(SpSum,56832966,SummonUtopiaLightning,1) then + return XYZSummon() + end + if HasID(SpSum,84013237,SummonUtopia,1) then + return XYZSummon() + end + if HasID(SpSum,94380860,SummonRagnaZero) then + return XYZSummon() + end + if HasID(SpSum,95169481,SummonDDWBLS,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,63746411) and SummonGiantHand() then + return XYZSummon() + end + if HasID(SpSum,21501505,SummonCairngorgon) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,48905153,SummonDrancia,1) then + return SpSummon() + end + if HasIDNotNegated(SpSum,85115440,SummonBullhorn,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,85115440,SummonBullhorn,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,21044178,SummonDweller,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,82633039) and SummonSkyblaster() then + return XYZSummon() + end + if HasID(SpSum,95169481,SummonDDWBLS,2) then + return XYZSummon() + end + if HasID(SpSum,84013237,SummonUtopia,2) then + return XYZSummon() + end + + if HasIDNotNegated(SpSum,21044178,SummonDweller,2) then + return XYZSummon() + end + + + if HasID(SpSum,95169481,SummonDDWBLS,3) then + return XYZSummon() + end + if HasID(SpSum,84013237,SummonUtopia,3) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,21044178,SummonDweller,3) then + return XYZSummon() + end + if HasID(SpSum,72989439,SummonBLSEnvoy,2) then + return SpSummon() + end + if HasIDNotNegated(Act,45948430,UseSSOrigin,3) then + return Activate() + end + if HasIDNotNegated(Act,14094090,UseSSRitual,3) then + return Activate() + end + if HasIDNotNegated(Act,01845204,UseInstantFusion,1) then + return Activate() + end + if HasIDNotNegated(Act,01845204,UseInstantFusion,5) then + return Activate() + end + if HasIDNotNegated(Act,01845204,UseIFBLS,1) then + return Activate() + end + for mode=1,2 do + for i,id in pairs(knights) do + if HasID(SetMon,id,SetBLSKnight,mode) then + return Set() + end + end + end + return nil +end +function SSOriginTarget(cards,c) + if FilterType(cards[1],TYPE_RITUAL) then + return Add(cards,PRIO_TOFIELD,1,FilterLocation,LOCATION_GRAVE) + end + return Add(cards,PRIO_TOGRAVE) +end +function BLSSSTarget(cards,c) + if GaiaFilter(cards[1]) and FilterController(c,1) then + return Add(cards,PRIO_TOFIELD) + end + if LocCheck(cards,LOCATION_HAND) then + return RandomTargets(cards) + end + return BestTargets(cards,1,TARGET_BANISH,BLSBanishFilter,c) +end +function ChaosGatewayTarget(cards,c) + return Add(cards) +end +function BeginningKnightTarget(cards,c) + if LocCheck(cards,LOCATION_DECK) then + return Add(cards) + end + if LocCheck(cards,LOCATION_MZONE) then + return BestTargets(cards,1,TARGET_BANISH,BLSBanishFilter,c) + end + if LocCheck(cards,LOCATION_HAND) then + return RandomTargets(cards) + end + return Add(cards) +end +function TwilightKnightTarget(cards,c) + if LocCheck(cards,LOCATION_DECK) then + return Add(cards) + end + if LocCheck(cards,LOCATION_MZONE) then + return BestTargets(cards,1,TARGET_BANISH,BLSBanishFilter,c) + end + if LocCheck(cards,LOCATION_HAND) then + return RandomTargets(cards) + end + return Add(cards) +end +function SSRitualTarget(cards,c,min) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_BANISH,min) + end + if LocCheck(cards,LOCATION_HAND) then + return Add(cards,PRIO_TOFIELD,min) + end +end +function EnvoyTarget(cards,c) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_BANISH) + end + if GlobalCardMode == 1 then + GlobalCardMode = nil + return GlobalTargetGet(cards,true) + end + return Add(cards) +end +function BeginningTarget(cards,c,min) + if min>1 then GlobalBeginning = true end + if min==1 and HasAccess(54484652) -- BLSSS + and not HasIDNotNegated(AIHand(),38120068,true) -- Trade-In + then + return Add(cards,PRIO_TOGRAVE,min,FilterID,07841921) -- Charging Gaia + end + local result = Add(cards,PRIO_TOGRAVE,min) + GlobalBeginning = false + return result +end +function DDWTarget(cards,c) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + if FilterController(cards[1],1) then + return BestTargets(cards,1,TARGET_DESTROY,FilterID,c.id) + end + return BestTargets(cards,1,TARGET_DESTROY,DDWFilter) +end + +BLSTargetFunctions={ +[45948430] = SSOriginTarget, +[54484652] = BLSSSTarget, +[40089744] = ChaosGatewayTarget, +[95492061] = ManjuTarget, +[06628343] = BeginningKnightTarget, +[32013448] = TwilightKnightTarget, +[14094090] = SSRitualTarget, +[38695361] = EnvoyTarget, +[32360466] = BeginningTarget, +[95169481] = DDWTarget, +[48905153] = DranciaTarget, +} +function BLSCard(cards,min,max,id,c) + for i,v in pairs(BLSTargetFunctions) do + if id == i then + return v(cards,c,min,max) + end + end +end +function ChainBLSSS(c) + return true +end +function ChainBeginningKnight(c) + OPTSet(c.id) + return true +end +function ChainTwilightKnight(c) + OPTSet(c.id) + return true +end +function ChainEnvoy(c) + if FilterLocation(c,LOCATION_GRAVE) + and ChaosSummonCheck()>3 + then + local count = 1 + if HasID(AIGrave(),06628343,true,FilterOPT,true) then -- Beginning Knight + count = count + 1 + end + if HasID(AIGrave(),32013448,true,FilterOPT,true) then -- Twilight Knight + count = count + 1 + end + return Duel.GetTurnPlayer()~=player_ai + or #AIHand()+count<7 + end + if FilterLocation(c,LOCATION_HAND) + then + local aimon,oppmon=GetBattlingMons() + if aimon and oppmon then + local malus = oppmon:GetAttack()-oppmon:GetBaseAttack() + if (BLSFilter(aimon) or GaiaFilter(aimon)) + and (AttackBoostCheck(1500,malus) + or CanFinishGame(aimon,oppmon,nil,1500,malus)) + then + GlobalCardMode = 1 + GlobalTargetSet(aimon) + return true + end + end + end +end +function ChainBeginning(c) + if RemovalCheckCard(c) then + return true + end + if Duel.GetTurnPlayer()==1-player_ai + and Duel.CheckTiming(TIMING_END_PHASE) + and Duel.GetCurrentChain()==0 + then + return true + end +end +function ChainManju(c) + return true +end +BLSChainFunctions={ +[54484652] = ChainBLSSS, +[06628343] = ChainBeginningKnight, +[32013448] = ChainTwilightKnight, +[38695361] = ChainEnvoy, +[32360466] = ChainBeginning, +[48905153] = ChainDrancia, +[95492061] = ChainManju, +} +function BLSChain(cards) + for id,v in pairs(BLSChainFunctions) do + if HasID(cards,id,v) then + return Chain() + end + end +end +function BLSEffectYesNo(id,card) + for i,v in pairs(BLSChainFunctions) do + if id == i then + return v(card) + end + end + if id==06628343 then -- Beginning Knight + GlobalBLS = Duel.GetTurnCount() + return 1 + end + if id==72989439 then -- BLS Envoy + GlobalBLS = Duel.GetTurnCount() + return 1 + end + return result +end +function BLSSum(cards,sum,card) + local id = nil + if card then + id = card.id + end + if id == 14094090 then -- SSRitual + local result = {} + if CardsMatchingFilter(cards,FilterLevel,4)>1 + then + result = Add(cards,PRIO_TOGRAVE,2,FilterLevel,4) + end + if CardsMatchingFilter(cards,FilterLevel,8)>0 + then + result = Add(cards,PRIO_TOGRAVE,1,FilterLevel,8) + end + if #result>0 then + return result + end + end +end +function BLSYesNo(desc) +end +function BLSTribute(cards,min, max) +end +function BLSBattleCommand(cards,targets,act) + -- BLSSS + if HasIDNotNegated(cards,54484652) + and (CanWinBattle(cards[CurrentIndex],targets) + or #OppMon()==0 and GlobalBLS==Duel.GetTurnCount()) + then + return Attack(CurrentIndex) + end + -- BLS Vanilla + if HasIDNotNegated(cards,05405694) + and (CanWinBattle(cards[CurrentIndex],targets) + or #OppMon()==0 and GlobalBLS==Duel.GetTurnCount()) + then + return Attack(CurrentIndex) + end +end +function BLSAttackTarget(cards,attacker) +end +function BLSAttackBoost(cards) + -- Envoy of Chaos + for i=1,CardsMatchingFilter(AIHand(),FilterID,38695361) do + for j,c in pairs(cards) do + if (BLSFilter(c) or GaiaFilter(c)) + and Affected(c,TYPE_MONSTER,4) + and Targetable(c,TYPE_MONSTER) + and CurrentOwner(c)==1 + then + c.attack=c.attack+1500 + if c.bonus==nil then + c.bonus=0 + end + c.bonus=c.bonus+1500 + end + if (CardsMatchingFilter(AIMon(),BLSFilter)>0 + or CardsMatchingFilter(AIMon(),GaiaFilter)>0) + then + if Affected(c,TYPE_MONSTER,4) + and CurrentOwner(c)==2 + and c.attack-c.base_attack>1500 + then + c.attack=c.base_attack + end + end + end + end +end +function BLSOption(options) +end +function BLSChainOrder(cards) +end +BLSAtt={ +05405694, -- BLS Vanilla +72989439, -- BLS Envoy +07841921, -- Charging Gaia +61901281, -- Collapserpent +99234526, -- Wyverbuster +38695361, -- Envoy of Chaos +95492061, -- Manju +54484652, -- BLSSS +04810828, -- Sauravis +} +BLSVary={ +} +BLSDef={ +06628343, -- Beginning Knight +32013448, -- Evening Twilight Knight +} +function BLSPosition(id,available) + result = nil + for i=1,#BLSAtt do + if BLSAtt[i]==id + then + result=POS_FACEUP_ATTACK + end + end + for i=1,#BLSVary do + if BLSVary[i]==id + then + if (BattlePhaseCheck() or IsBattlePhase()) + and Duel.GetTurnPlayer()==player_ai + then + result=POS_FACEUP_ATTACK + else + result=POS_FACEUP_DEFENSE + end + end + end + for i=1,#BLSDef do + if BLSDef[i]==id + then + result=POS_FACEUP_DEFENSE + end + end + return result +end +function BLSVanillaCond(loc,c) + if loc == PRIO_TOHAND then + return true + end + if loc == PRIO_TOGRAVE then + return true + end + return true +end +function BeginningKnightCond(loc,c) + if loc == PRIO_TOHAND then + return not HasAccess(c.id) + end + if loc == PRIO_TOGRAVE then + if GetMultiple(c.id)>0 then + return false + end + if CardsMatchingFilter(AIGrave(),FilterID,c.id)==0 + and CardsMatchingFilter(AICards(),FilterID,45948430)==0 + and FilterOPT(c,true) + then + return 10 + end + return true + end + if loc == PRIO_BANISH then + return FilterOPT(c,true) + end + return true +end +function TwilightKnightCond(loc,c) + if loc == PRIO_TOHAND then + return not HasAccess(c.id) + end + if loc == PRIO_TOGRAVE then + if GetMultiple(c.id)>0 then + return false + end + if CardsMatchingFilter(AIGrave(),FilterID,c.id)==0 + and CardsMatchingFilter(Merge(AICards(),AIGrave()),FilterID,54484652)==0 + and FilterOPT(c,true) + then + return 9 + end + return true + end + if loc == PRIO_BANISH then + return FilterOPT(c,true) + end + return true +end +function BLSSSCond(loc,c) + if loc == PRIO_TOHAND then + if HasIDNotNegated(AICards(),38120068,true) + and not HasAccess(c.id) + then + return 12 + end + if not HasAccess(c.id) then + return true + end + if HasIDNotNegated(AICards(),38120068,true) then + return 6 + end + return false + end + if loc == PRIO_TOGRAVE then + if GetMultiple(c.id)>0 + or GlobalBeginning + then + return false + end + return FilterCrippled(c) or not FilterLocation(c,LOCATION_MZONE) + end + return true +end +function SSOriginCond(loc,c) + if loc == PRIO_TOHAND then + if CardsMatchingFilter(AICards(),FilterID,c.id)==0 then + return true + end + return false + end + return true +end +function EnvoyCond(loc,c) + if loc == PRIO_TOGRAVE then + if (HasID(AIGrave(),32013448,true) + or HasID(AIGrave(),06628343,true) + and GlobalBeginning) + and FilterLocation(c,LOCATION_DECK) + then + return 10 + end + end + return true +end +function ChargingGaiaCond(loc,c) + if loc == PRIO_TOGRAVE then + return not FilterLocation(c,LOCATION_DECK) + end + return true +end +BLSPriorityList={ +--[12345678] = {1,1,1,1,1,1,1,1,1,1,XXXCond}, -- Format + +-- BLS + +[05405694] = {4,2,4,1,6,3,1,1,2,1,BLSVanillaCond}, -- BLS Vanilla +[72989439] = {1,1,1,1,2,1,1,1,4,1,BLSEnvoyCond}, -- BLS Envoy +[07841921] = {1,1,1,1,5,1,1,1,1,1,ChargingGaiaCond}, -- Charging Gaia +[38695361] = {5,1,1,1,4,1,1,1,1,1,EnvoyCond}, -- Envoy of Chaos + +[06628343] = {7,1,1,1,8,1,1,1,9,1,BeginningKnightCond}, -- Beginning Knight +[32013448] = {6,1,1,1,7,1,1,1,8,1,TwilightKnightCond}, -- Evening Twilight Knight +[54484652] = {8,4,9,1,9,1,1,1,1,1,BLSSSCond}, -- BLSSS +[04810828] = {5,1,1,1,1,1,1,1,4,1,SauravisCond}, -- Sauravis + +[14094090] = {5,1,1,1,4,1,1,1,1,1,SSRitualCond}, -- SSRitual +[45948430] = {9,5,1,1,1,1,1,1,1,1,SSOriginCond}, -- SSOrigin +[40089744] = {1,1,1,1,2,1,1,1,1,1,ChaosGatewayCond}, -- Gateway to Chaos + +[32360466] = {1,1,1,1,1,1,1,1,1,1,UniversalBeginningCond}, -- Universal Beginning + +[58820923] = {1,1,1,1,1,1,1,1,4,1,DarkMatterCond}, -- Dark Matter +[39030163] = {1,1,1,1,1,1,1,1,4,1,FullArmorCond}, -- Full Armor +[31801517] = {1,1,1,1,1,1,1,1,4,1,GalaxyPrimeCond}, -- Galaxy Prime +[63767246] = {1,1,1,1,1,1,1,1,4,1,TitanicGalaxyCond}, -- Titanic +[95169481] = {1,1,1,1,1,1,1,1,1,1}, -- DDW +[85115440] = {1,1,1,1,1,1,1,1,1,1}, -- Zodiac Beast Bullhorn +[48905153] = {1,1,1,1,1,1,1,1,1,1}, -- Zodiac Beast Drancia +[56832966] = {1,1,1,1,1,1,1,1,4,1,UtopiaLightningCond}, -- Utopia Lightning +[84013237] = {1,1,1,1,1,1,1,1,4,1,UtopiaCond}, -- Utopia + +} \ No newline at end of file diff --git a/ai/decks/BurningAbyss.lua b/ai/decks/BurningAbyss.lua index 0bccf426..55d20c94 100644 --- a/ai/decks/BurningAbyss.lua +++ b/ai/decks/BurningAbyss.lua @@ -1,10 +1,46 @@ function BAFilter(c,exclude) - return IsSetCode(c.setcode,0xb1) and (exclude == nil or c.id~=exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0xb1) and check +end +function PKFilter(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0xdb) and check +end +function PKNonXYZFilter(c,exclude) + return PKFilter(c,exclude) + and FilterType(c,TYPE_MONSTER) + and not FilterType(c,TYPE_XYZ) +end +function TPKFilter(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0x10db) and check end function BAMonsterFilter(c,exclude,boss) return FilterType(c,TYPE_MONSTER) and BAFilter(c,exclude) and (FilterPosition(c,POS_FACEUP) or not FilterLocation(c,LOCATION_ONFIELD)) - and (not boss or FilterID(c,00601193) or FilterID(c,83531441)) + and (not boss or FilterID(c,00601193) or FilterID(c,83531441) + or FilterID(c,18386170) or FilterID(c,35330871)) end function BASelfDestructFilter(c,exclude) return BAMonsterFilter(c,exclude) and not BAMonsterFilter(c,exclude,true) @@ -19,49 +55,35 @@ function BAFloater(c,check) or c.id == 84764038 and (not check or OPTCheck(84764038) and CardsMatchingFilter(AIDeck(),ScarmDeckFilter)>0 and CardsMatchingFilter(AIGrave(),ScarmGraveFilter)==0) or c.id == 83531441 and (not check or CardsMatchingFilter(AIGrave(),BAMonsterFilter,83531441)>0) end +function BAXYZSummonCheck(count) + if count == nil then count = 1 end + return CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + and FieldCheck(3)==count + and CanXYZSummon(3) +end +function BAStartup(deck) + deck.Init = BAInit -function BAPriority() -AddPriority({ + deck.ActivateBlacklist = BAActivateBlacklist + deck.SummonBlacklist = BASummonBlacklist + + deck.PriorityList = BAPriorityList +end --- Burning Abyss -[57143342] = {7,2,7,3,7,1,1,1,2,1,CirCond}, -- BA Cir -[73213494] = {3,2,3,1,3,3,1,1,6,1,CalcabCond}, -- BA Calcab -[47728740] = {2,2,3,1,3,3,1,1,6,1,AlichCond}, -- BA Alich -[20758643] = {6,2,8,2,8,2,1,1,5,1,GraffCond}, -- BA Graff -[10802915] = {8,2,3,2,2,1,4,1,8,3,TourGuideCond},-- Tour Guide -[84764038] = {5,2,5,4,5,2,6,1,4,2,ScarmCond}, -- BA Scarm -[00734741] = {4,2,6,3,3,3,1,1,6,1,RubicCond}, -- BA Rubic -[36553319] = {4,2,4,1,4,3,1,1,6,1,FarfaCond}, -- BA Farfa -[09342162] = {3,2,6,1,6,3,1,1,6,1,CagnaCond}, -- BA Cagna -[62957424] = {3,2,3,1,3,3,1,1,6,1,LibicCond}, -- BA Libic -[81992475] = {9,2,9,1,9,1,1,1,6,1,BarbarCond}, -- BA Barbar -[35330871] = {8,2,1,1,2,2,1,1,5,1,MalacodaCond}, -- BA Malacoda +DECK_BA = NewDeck("Burning Abyss",57143342,BAStartup) -- BA Cir + +BAActivateBlacklist={ +53932291,63821877,90432163, -- Speedroid Taketomborg, PK Cloak, Glove +36426778,62709239,25542642, -- PK Boots, Break Sword, Fog Blade +03298689,85252081,95992081, -- PK Launch, Super Quantum Granpulse, Leviair +} +BASummonBlacklist={ +81275020,53932291,63821877, -- Speedroid Terrortop, Taketomborg, PK Cloak +36426778,90432163,62709239, -- PK Glove, Boots, Break Sword +85252081,95992081, -- Super Quantum Granpulse, Leviair +} -[73680966] = {5,1,1,1,1,1,1,1,1,1,TBOTECond}, -- The Beginning of the End -[62835876] = {9,1,1,1,5,1,1,1,1,1,GECond}, -- BA Good&Evil -[36006208] = {8,2,1,1,4,1,1,1,1,1,FireLakeCond}, -- BA Fire Lake -[20036055] = {4,2,1,1,3,1,1,1,1,1,}, -- BA Traveler -[63356631] = {1,1,1,1,1,1,1,1,1,1,PWWBCond}, -- PWWB -[71587526] = {1,1,1,1,1,1,1,1,1,1,KarmaCutCond}, -- Karma Cut -[20513882] = {1,1,1,1,1,1,1,1,1,1}, -- Painful Escape -[00601193] = {1,1,10,1,1,1,1,1,1,1,VirgilCond}, -- BA Virgil -[72167543] = {1,1,1,1,1,1,1,1,1,1}, -- Downerd Magician -[81330115] = {1,1,1,1,1,1,1,1,1,1}, -- Acid Golem of Destruction -[31320433] = {1,1,1,1,1,1,1,1,1,1}, -- Nightmare Shark -[47805931] = {1,1,1,1,1,1,1,1,1,1}, -- Giga-Brillant -[75367227] = {1,1,1,1,1,1,1,1,1,1}, -- Ghostrick Alucard -[68836428] = {1,1,1,1,1,1,1,1,1,1}, -- Tri-Edge Levia -[52558805] = {1,1,1,1,1,1,1,1,1,1}, -- Temptempo the Percussion Djinn -[78156759] = {1,1,1,1,1,1,1,1,1,1}, -- Wind-Up Zenmaines -[83531441] = {1,1,9,1,5,2,1,1,5,1,DanteCond}, -- BA Dante -[16259549] = {1,1,1,1,1,1,1,1,1,1}, -- Fortune Tune -[26563200] = {1,1,1,1,1,1,1,1,1,1}, -- Muzurythm the String Djinn -[27552504] = {1,1,1,1,1,1,1,1,1,1}, -- Beatrice, the Eternal Lady -[18386170] = {1,1,1,1,1,1,1,1,1,1}, -- Dante, Pilgrim of the Burning Abyss -[65305468] = {1,1,1,1,1,1,1,1,1,1}, -- Number F0 Utopic Future -}) -end function ScarmGraveFilter(c) return c.id == 84764038 and c.turnid == Duel.GetTurnCount() end @@ -295,12 +317,113 @@ function FireLakeCond(loc,c) end return true end +function GloveCond(loc,c) + if loc == PRIO_TOHAND then + return true + end + return true +end +function CloakCond(loc,c) + if loc == PRIO_TOHAND then + return true + end + return true +end +function BootsCond(loc,c) + if loc == PRIO_TOHAND then + return true + end + return true +end +function BreakSwordCond(loc,c) + if loc == PRIO_TOHAND then + return true + end + return true +end +function LaunchCond(loc,c) + if loc == PRIO_TOHAND then + if HasID(AIMon(),16195942,true,FilterMaterials,0) + and HasIDNotNegated(AIExtra(),01621413,true) + and DualityCheck() + and NotNegated(c) + then + return true + end + return false + end + return true +end +function FogBladeCond(loc,c) + if loc == PRIO_TOHAND then + return true + end + return true +end +BAPriorityList={ +-- Burning Abyss + +[57143342] = {7,2,7,3,7,1,1,1,2,1,CirCond}, -- BA Cir +[73213494] = {3,2,3,1,3,3,1,1,6,1,CalcabCond}, -- BA Calcab +[47728740] = {2,2,3,1,3,3,1,1,6,1,AlichCond}, -- BA Alich +[20758643] = {6,2,8,2,8,2,1,1,5,1,GraffCond}, -- BA Graff +[10802915] = {8,2,3,2,2,1,4,1,8,3,TourGuideCond},-- Tour Guide +[84764038] = {5,2,5,4,5,2,6,1,4,2,ScarmCond}, -- BA Scarm +[00734741] = {4,2,6,3,3,3,1,1,6,1,RubicCond}, -- BA Rubic +[36553319] = {4,2,4,1,4,3,1,1,6,1,FarfaCond}, -- BA Farfa +[09342162] = {3,2,6,1,6,3,1,1,6,1,CagnaCond}, -- BA Cagna +[62957424] = {3,2,3,1,3,3,1,1,6,1,LibicCond}, -- BA Libic +[81992475] = {9,2,9,1,9,1,1,1,6,1,BarbarCond}, -- BA Barbar +[35330871] = {8,2,1,1,2,2,1,1,5,1,MalacodaCond}, -- BA Malacoda + +[63821877] = {1,1,1,1,4,1,1,1,1,1,GloveCond}, -- PK Glove +[90432163] = {1,1,1,1,3,1,1,1,1,1,CloakCond}, -- PK Cloak +[36426778] = {1,1,1,1,5,1,1,1,1,1,BootsCond}, -- PK Boots + +[03298689] = {9,1,1,1,1,1,1,1,1,1,LaunchCond}, -- PK Launch (Rank-Up) +[25542642] = {6,2,1,1,1,1,1,1,1,1,FogBladeCond}, -- PK Fog Blade + +[81275020] = {9,1,5,1,1,1,1,1,1,1}, -- Speedroid Terrortop +[53932291] = {8,1,1,1,1,1,1,1,1,1}, -- Speedroid Taketomborg + +[73680966] = {5,1,1,1,1,1,1,1,1,1,TBOTECond}, -- The Beginning of the End +[62835876] = {9,1,1,1,5,1,1,1,1,1,GECond}, -- BA Good&Evil +[36006208] = {8,2,1,1,4,1,1,1,1,1,FireLakeCond}, -- BA Fire Lake +[20036055] = {4,2,1,1,3,1,1,1,1,1,}, -- BA Traveler +[63356631] = {1,1,1,1,1,1,1,1,1,1,PWWBCond}, -- PWWB +[71587526] = {1,1,1,1,1,1,1,1,1,1,KarmaCutCond}, -- Karma Cut +[20513882] = {1,1,1,1,1,1,1,1,1,1}, -- Painful Escape + +[00601193] = {1,1,10,1,1,1,1,1,1,1,VirgilCond}, -- BA Virgil +[72167543] = {1,1,1,1,1,1,1,1,1,1}, -- Downerd Magician +[81330115] = {1,1,1,1,1,1,1,1,1,1}, -- Acid Golem of Destruction +[31320433] = {1,1,1,1,1,1,1,1,1,1}, -- Nightmare Shark +[47805931] = {1,1,1,1,1,1,1,1,1,1}, -- Giga-Brillant +[75367227] = {1,1,1,1,1,1,1,1,1,1}, -- Ghostrick Alucard +[68836428] = {1,1,1,1,1,1,1,1,1,1}, -- Tri-Edge Levia +[52558805] = {1,1,1,1,1,1,1,1,1,1}, -- Temptempo the Percussion Djinn +[78156759] = {1,1,1,1,1,1,1,1,1,1}, -- Wind-Up Zenmaines +[83531441] = {1,1,9,1,5,2,1,1,5,1,DanteCond}, -- BA Dante +[16259549] = {1,1,1,1,1,1,1,1,1,1}, -- Fortune Tune +[26563200] = {1,1,1,1,1,1,1,1,1,1}, -- Muzurythm the String Djinn +[27552504] = {1,1,1,1,1,1,1,1,1,1}, -- Beatrice, the Eternal Lady +[18386170] = {1,1,1,1,1,1,1,1,1,1}, -- Dante, Pilgrim of the Burning Abyss +[65305468] = {1,1,1,1,1,1,1,1,1,1}, -- Number F0 Utopic Future +[01621413] = {1,1,1,1,1,1,1,1,1,1}, -- Requiem Dragon +[16195942] = {1,1,1,1,1,1,1,1,1,1}, -- Rebellion Dragon +[62709239] = {1,1,1,1,1,1,1,1,1,1,BreakSwordCond}, -- PK Break Sword +[85252081] = {1,1,1,1,1,1,1,1,1,1}, -- Super Quantum Granpulse +[95992081] = {1,1,1,1,1,1,1,1,1,1}, -- Leviair +} function SSBA(c) - return #AIST()==0 and (c == nil or OPTCheck(c.id)) - and CardsMatchingFilter(AIMon(),NotBAMonsterFilter)==0 and DualityCheck() - and (FieldCheck(3)==1 or FieldCheck(3)==0 and CardsMatchingFilter(AIHand(),BAMonsterFilter)>1 - and not NormalSummonCheck(player_ai)) + return #AIST()==0 + and (c == nil or OPTCheck(c.id)) + and CardsMatchingFilter(AIMon(),NotBAMonsterFilter)==0 + and DualityCheck() + and (FieldCheck(3)==1 or FieldCheck(3)==0 + and CardsMatchingFilter(AIHand(),BAMonsterFilter)>1) and OverExtendCheck(3) + and CardsMatchingFilter(AIMon(),FilterID,83531441)<2 -- Dante end function TourguideFilter(c) return bit32.band(c.type,TYPE_MONSTER)>0 and bit32.band(c.race,RACE_FIEND)>0 and c.level==3 @@ -320,7 +443,9 @@ function SummonCir() end function SummonGraff() return CardsMatchingFilter(AIMon(),NotBAMonsterFilter)==0 - and OverExtendCheck(3) and (FieldCheck(3)==1 or CardsMatchingFilter(AIMon(),BAMonsterFilter)==1) + and OverExtendCheck(3) + and (FieldCheck(3)==1 + or CardsMatchingFilter(AIMon(),BAMonsterFilter)==1) --and CardsMatchingFilter(AIDeck(),BAMonsterFilter,20758643)>0 and OPTCheck(20758643) end function SummonScarm() @@ -328,9 +453,11 @@ function SummonScarm() and OverExtendCheck(3) and (FieldCheck(3)==1 or CardsMatchingFilter(AIMon(),BAMonsterFilter)==1) --and CardsMatchingFilter(AIDeck(),ScarmDeckFilter)>0 and OPTCheck(84764038) end -function SummonBA() - return FieldCheck(3)==1 and CardsMatchingFilter(AIMon(),NotBAMonsterFilter)==0 +function SummonBA(c) + return (FieldCheck(3)==1 or CardsMatchingFilter(AIHand(),BAMonsterFilter,c)>0) + and CardsMatchingFilter(AIMon(),NotBAMonsterFilter)==0 and OverExtendCheck(3) + and CardsMatchingFilter(AIMon(),FilterID,83531441)<2 -- Dante end function SummonRubic() return FieldCheck(3)==1 and CardsMatchingFilter(AIMon(),NotBAMonsterFilter)==0 @@ -362,7 +489,8 @@ function SSScarm() and CardsMatchingFilter(AIGrave(),ScarmGraveFilter)==0 end function SummonDanteBA() - return true + return OppGetStrongestAttDef()<2500 + or not HasID(AIMon(),83531441,true) end function SetBA() return #AIMon() == 0 and DeckCheck(DECK_BA) @@ -517,6 +645,286 @@ function UsePainfulEscape(c) end return false end +function SummonPKGlove(c,mode) + if mode == 1 -- Boots in hand + and BAXYZSummonCheck(0) + and HasID(AIHand(),36426778,true) + then + return true + end + if mode == 2 -- Level 3 on field + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + and BAXYZSummonCheck(1) + then + return true + end +end +function UsePKGlove(c,mode) + if mode == 1 + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + and (CardsMatchingFilter(AIGrave(),PKFilter,62709239)>2 + and BAXYZSummonCheck(0) + or CardsMatchingFilter(AIGrave(),PKFilter,62709239)>1 + and BAXYZSummonCheck()) + and HasID(AIDeck(),25542642,true,FilterOPT,true) -- Fog Blade + and not HasID(AIGrave(),25542642,true) -- Fog Blade + and MacroCheck() + then + GlobalPKGloveID = 25542642 -- Fog Blade + return true + end + if mode == 2 + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + and HasID(AIDeck(),90432163,true,FilterOPT,true) -- PK Cloak + and CardsMatchingFilter(AIMon(),TPKFilter)>0 + and (HasID(AIDeck(),36426778,true,FilterOPT,true) -- PK Boots + or NormalSummonCheck()) + and BAXYZSummonCheck() + and MacroCheck() + then + GlobalPKGloveID = 90432163 -- PK Cloak + return true + end + if mode == 3 + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + and HasID(AIDeck(),90432163,true,FilterOPT,true) -- PK Cloak + and HasID(AIDeck(),36426778,true,FilterOPT,true) -- PK Boots + and HasID(AIGrave(),25542642,true,FilterOPT,true) -- Fog Blade + and CardsMatchingFilter(AIGrave(),PKFilter,62709239)>2 + and BAXYZSummonCheck(0) + and MacroCheck() + then + GlobalPKGloveID = 90432163 -- PK Cloak + return true + end + if mode == 4 + and HasID(AIDeck(),90432163,true,UsePKCloak) + and not HasID(AIGrave(),90432163,true) + and MacroCheck() + then + GlobalPKGloveID = 90432163 -- PK Cloak + return true + end + if mode == 5 + and HasID(AIDeck(),36426778,true,UsePKBoots,0) + and not HasID(AIGrave(),36426778,true) + and MacroCheck() + then + GlobalPKGloveID = 36426778 -- PK Boots + return true + end +end +function SummonPKCloak(c,mode) + if mode == 1 -- Boots in hand + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + and BAXYZSummonCheck(0) + and HasID(AIHand(),36426778,true) + then + return true + end + if mode == 2 -- Level 3 on field + and BAXYZSummonCheck() + then + return true + end +end +function UsePKCloak(c,mode) + return CardsMatchingFilter(AIGrave(),PKFilter,62709239)>2 + or (CardsMatchingFilter(AIHand(),PKMonsterFilter)==1 + and NormalSummonsAvailable()>0 + or CardsMatchingFilter(AIMon(),PKMonsterFilter)==1) + and HasIDNotNegated(AIDeck(),36426778,true,FilterOPT) + and BAXYZSummonCheck(0) +end +function SummonPKBoots(c,mode) + if mode == 1 -- Special Summon + and BAXYZSummonCheck() + then + OPTSet(c.id) + return true + end + if mode == 2 -- another Boots in hand + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + and BAXYZSummonCheck(0) + and HasID(AIHand(),36426778,true,CardsNotEqual,c) + then + return true + end + if mode == 3 -- Level 3 on field + and BAXYZSummonCheck() + then + return true + end +end +function UsePKBoots(c,mode) + if (mode == 1 or mode == 0) + and HasID(AIMon(),16195942,true,FilterMaterials,0) -- Rebellion Dragon + and DualityCheck() + and HasIDNotNegated(AIDeck(),03298689,true) -- PK Launch + and HasIDNotNegated(AIExtra(),01621413,true) -- Requiem Dragon + then + OPTSet(364267781) + return true + end + if (mode == 2 or mode == 0) + and TurnEndCheck() + and HasID(AIDeck(),25542642,true) -- PK Fog Blade + then + OPTSet(364267781) + return true + end +end +function UsePKLaunch(c,mode) + if mode == 1 + and HasID(AIMon(),16195942,true,FilterMaterials,0) -- Rebellion Dragon + and HasIDNotNegated(AIExtra(),01621413,true) -- Requiem Dragon + then + return true + end +end +function UsePKFogBlade(c,mode) + if FilterLocation(c,LOCATION_GRAVE) then + if mode == 1 + and BAXYZSummonCheck(1) + then + return true + end + if mode == 2 + and BAXYZSummonCheck(0) + and (CardsMatchingFilter(AIHand(),PKNonXYZFilter)>0 + and not NormalSummonCheck() + or HasID(AIHand(),36426778,FilterOPT,true)) + then + return true + end + if mode == 3 + and HasID(AIGrave(),62709239,true,FilterRevivable) -- BK Break Sword + and (HasIDNotNegated(AICards(),03298689,true) -- PK Launch + or HasIDNotNegated(AIDeck(),03298689,true) -- PK Launch + and (HasID(AIGrave(),36426778,true,FilterOPT) -- PK Boots + or HasID(AIGrave(),63821877,true))) -- PK Glove + then + GlobalCardMode = 1 + GlobalTargetSet = FindID(62709239,AIGrave()) + return true + end + end +end +function PKBreakSwordFodder(c) + if c.id == 83531441 -- Dante + and FilterMaterials(c,0) + and (FilterAttackMax(1000) + or FilterPosition(c,POS_FACEUP_ATTACK) + and not BattlePhaseCheck()) + then + return true + end + if c.id == 25542642 -- PK Fog Blade + and CardTargetCheck(c)==0 + then + return true + end + if FilterCrippled(c) then + return true + end +end +function PKBreakSwordFilter(c,prio) + return Affected(c,TYPE_MONSTER,3) + and Targetable(c,TYPE_MONSTER) + and DestroyFilter(c) + and (not prio or FilterPriorityTarget(c)) +end +function SummonPKBreakSword(c,mode) + if mode == 1 -- Rank-Up play + and OppHasStrongestMonster() + and CardsMatchingFilter(UseLists(AIMon(),AIGrave()),PKNonXYZFilter)>1 + and HasID(UseLists(AIMon(),AIGrave()),36426778,true) + and CardsMatchingFilter(OppCards(),PKBreakSwordFilter)>0 + and #OppCards()>1 + and HasIDNotNegated(UseLists(AIDeck(),AIST(),AIHand()),03298689,true) -- PK Launch + and HasIDNotNegated(AIExtra(),16195942,true) -- Rebellion Dragon + and HasIDNotNegated(AIExtra(),01621413,true) -- Requiem Dragon + then + return true + end + if mode == 2 + and CardsMatchingFilter(OppCards(),PKBreakSwordFilter,true)>0 + then + return true + end + if mode == 3 + and CardsMatchingFilter(OppCards(),PKBreakSwordFilter)>0 + and MP2Check(c) + and CardsMatchingFilter(AICards,PKBreakSwordFodder)>0 + then + return true + end +end +function UsePKBreakSword(c,mode) + if mode == 1 -- Rank-Up play + and CardsMatchingFilter(UseLists(c.xyz_materials,AIGrave()),PKNonXYZFilter)>1 + and #OppMon()>0 + and #OppField()>1 + and MacroCheck() + and DestroyCheck(OppField())>0 + and HasIDNotNegated(AIExtra(),16195942,true) -- Rebellion Dragon + then + return true + end + if mode == 2 + and CardsMatchingFilter(OppCards(),PKBreakSwordFilter,true)>0 + then + return true + end + if mode == 3 + and CardsMatchingFilter(OppCards(),PKBreakSwordFilter)>0 + and CardsMatchingFilter(AICards,PKBreakSwordFodder)>0 + then + return true + end +end +function SummonRebellionBA(c,mode) + return true +end +function GrampulseFilter(c) + return DestroyFilter(c) + and Affected(c,TYPE_MONSTER,3) + and Targetable(c,TYPE_MONSTER) +end +function SummonGrampulse(c,mode) + if mode == 1 + and CardsMatchingFilter(OppST(),GrampulseFilter)>0 + then + return true + end +end +function UseGrampulse(c,mode) + if mode == 1 + and CardsMatchingFilter(OppST(),GrampulseFilter)>0 + then + return true + end +end +function SummonLeviairBA(c,mode) + if mode == 1 + and FieldCheck(3)==3 + and CardsMatchingFilter(AIBanish(),PKNonXYZFilter)>0 + then + return true + end +end +function UseLeviair(c,mode) + if mode == 1 + and CardsMatchingFilter(AIBanish(),FilterLevel,3)>0 + then + return true + end +end +function UseAllureBA(c,mode) + if mode == 1 then + return CardsMatchingFilter(SubGroup(AIHand(),FilterAttribute,ATTRIBUTE_DARK),ExcludeID,57143342)>0 + end +end function BAInit(cards) GlobalPreparation = nil local Act = cards.activatable_cards @@ -525,9 +933,35 @@ function BAInit(cards) local Rep = cards.repositionable_cards local SetMon = cards.monster_setable_cards local SetST = cards.st_setable_cards + + if HasID(Act,85252081,UseGrampulse,1) then + return Activate() + end + if HasID(SpSum,81275020,SummonTerrortop,1) then + return SpSummon() + end + + if HasID(Act,03298689,UsePKLaunch,1) then + return Activate() + end + if HasID(Act,36426778,UsePKBoots,1) then + return Activate() + end + if HasID(Act,63821877,UsePKGlove,1) then + return Activate() + end if HasID(Act,70368879) and not HasID(AIMon(),31320433,true) then -- Upstart return {COMMAND_ACTIVATE,CurrentIndex} end + if HasID(Act,62709239,UsePKBreakSword,1) then + return Activate() + end + if HasID(Act,62709239,UsePKBreakSword,2) then + return Activate() + end + if HasID(Act,62709239,UsePKBreakSword,3) then + return Activate() + end if HasID(Act,73680966) then -- The Beginning of the End return {COMMAND_ACTIVATE,CurrentIndex} end @@ -540,9 +974,19 @@ function BAInit(cards) if HasID(Act,00601193) and UseVirgil() then return {COMMAND_ACTIVATE,CurrentIndex} end + if HasID(SpSum,62709239,SummonPKBreakSword,1) then + return SpSummon() + end if HasID(SpSum,00601193) and SummonVirgil() then return {COMMAND_SPECIAL_SUMMON,CurrentIndex} end + if HasID(SpSum,85252081,SummonLeviairBA,1) then + return SpSummon() + end + if HasID(Act,83531441,UseDante) then + GlobalActivatedCardID = 83531441 + return Activate() + end if HasID(SpSum,83531441) and SummonDanteBA() then return {COMMAND_SPECIAL_SUMMON,CurrentIndex} end @@ -555,6 +999,15 @@ function BAInit(cards) if HasID(SpSum,27552504,SummonBeatrice,2) then return {COMMAND_SPECIAL_SUMMON,CurrentIndex} end + if HasID(SpSum,62709239,SummonPKBreakSword,2) then + return SpSummon() + end + if HasID(SpSum,62709239,SummonPKBreakSword,3) then + return SpSummon() + end + if HasID(SpSum,16195942,SummonRebellionBA,1) then + return SpSummon() + end if HasID(SpSum,31320433) and SummonNightmareShark() then return {COMMAND_SPECIAL_SUMMON,CurrentIndex} end @@ -573,12 +1026,74 @@ function BAInit(cards) if HasID(SpSum,26563200) and SummonMuzurythm() then return {COMMAND_SPECIAL_SUMMON,CurrentIndex} end + if HasID(SpSum,85252081,SummonGrampulse,1) then + return SpSummon() + end if HasID(Act,62835876,false,nil,LOCATION_HAND) then -- Good & Evil return {COMMAND_ACTIVATE,CurrentIndex} end + if HasID(SpSum,53932291,SummonTaketomborg,1) + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + then + return SpSummon() + end + if HasID(Sum,81275020,SummonTerrortop,2) + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + then + return Summon() + end + if HasID(Sum,81275020,SummonTerrortop,3) + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + then + return Summon() + end + if HasID(Sum,53932291,SummonTaketomborg,2) + and CardsMatchingFilter(AIMon(),BASelfDestructFilter)==0 + then + return Summon() + end if HasID(Sum,10802915) and SummonTourguide() then return {COMMAND_SUMMON,CurrentIndex} end + if HasID(Act,25542642,UsePKFogBlade,1) then + return Activate() + end + if HasID(Act,25542642,UsePKFogBlade,2) then + return Activate() + end + if HasID(SpSum,36426778,SummonPKBoots,1) then + return SpSummon() + end + if HasID(Sum,63821877,SummonPKGlove,1) then + return Summon() + end + if HasID(Sum,90432163,SummonPKCloak,1) then + return Summon() + end + if HasID(Sum,63821877,SummonPKGlove,2) then + return Summon() + end + if HasID(Sum,90432163,SummonPKCloak,2) then + return Summon() + end + if HasID(Sum,36426778,SummonPKBoots,2) then + return Summon() + end + if HasID(Sum,36426778,SummonPKBoots,3) then + return Summon() + end + if HasID(Act,63821877,UsePKGlove,2) then + return Activate() + end + if HasID(Act,63821877,UsePKGlove,3) then + return Activate() + end + if HasID(Act,63821877,UsePKGlove,4) then + return Activate() + end + if HasID(Act,90432163,UsePKCloak,1) then + return Activate() + end if HasID(Act,62835876,false,nil,LOCATION_GRAVE) and UseGE() then -- Good & Evil return {COMMAND_ACTIVATE,CurrentIndex} end @@ -604,55 +1119,55 @@ function BAInit(cards) OPTSet(81992475) return {COMMAND_ACTIVATE,CurrentIndex} end - if HasID(Act,73213494,false,nil,LOCATION_HAND) and SSBA(Act[CurrentIndex]) then -- Calcab + if HasID(Act,73213494,false,nil,LOCATION_HAND,SSBA) then -- Calcab OPTSet(73213494) return {COMMAND_ACTIVATE,CurrentIndex} end - if HasID(Act,47728740,false,nil,LOCATION_HAND) and SSBA(Act[CurrentIndex]) then -- Alich + if HasID(Act,47728740,false,nil,LOCATION_HAND,SSBA) then -- Alich OPTSet(47728740) return {COMMAND_ACTIVATE,CurrentIndex} end - if HasID(Act,62957424,false,nil,LOCATION_HAND) and SSBA(Act[CurrentIndex]) then -- Libic + if HasID(Act,62957424,false,nil,LOCATION_HAND,SSBA) then -- Libic OPTSet(62957424) return {COMMAND_ACTIVATE,CurrentIndex} end - if HasID(Act,36553319,false,nil,LOCATION_HAND) and SSBA(Act[CurrentIndex]) then -- Farfa + if HasID(Act,36553319,false,nil,LOCATION_HAND,SSBA) then -- Farfa OPTSet(36553319) return {COMMAND_ACTIVATE,CurrentIndex} end - if HasID(Act,09342162,false,nil,LOCATION_HAND) and SSBA(Act[CurrentIndex]) then -- Cagna + if HasID(Act,09342162,false,nil,LOCATION_HAND,SSBA) then -- Cagna OPTSet(09342162) return {COMMAND_ACTIVATE,CurrentIndex} end - if HasID(Act,00734741,false,nil,LOCATION_HAND) and SSBA(Act[CurrentIndex]) then -- Rubic + if HasID(Act,00734741,false,nil,LOCATION_HAND,SSBA) then -- Rubic OPTSet(00734741) return {COMMAND_ACTIVATE,CurrentIndex} end if HasID(Sum,800734741) and SummonRubic() then return {COMMAND_SUMMON,CurrentIndex} end - if HasID(Sum,36553319) and SummonBA() then + if HasID(Sum,36553319,SummonBA) then return {COMMAND_SUMMON,CurrentIndex} end - if HasID(Sum,09342162) and SummonBA() then + if HasID(Sum,09342162,SummonBA) then return {COMMAND_SUMMON,CurrentIndex} end - if HasID(Sum,62957424) and SummonBA() then + if HasID(Sum,62957424,SummonBA) then return {COMMAND_SUMMON,CurrentIndex} end if HasID(Sum,81992475,SummonBA) then return {COMMAND_SUMMON,CurrentIndex} end - if HasID(Sum,73213494) and SummonBA() then + if HasID(Sum,73213494,SummonBA) then return {COMMAND_SUMMON,CurrentIndex} end - if HasID(Sum,47728740) and SummonBA() then + if HasID(Sum,47728740,SummonBA) then return {COMMAND_SUMMON,CurrentIndex} end if HasID(Sum,20513882,UsePainfulEscape) then return {COMMAND_SUMMON,CurrentIndex} end - if HasID(Act,00734741) and SummonBA() then + if HasID(Act,00734741,SummonBA) then return Activate() end if HasID(Act,84764038,false,nil,LOCATION_HAND) and SSScarm(Act[CurrentIndex]) then @@ -667,9 +1182,26 @@ function BAInit(cards) OPTSet(57143342) return {COMMAND_ACTIVATE,CurrentIndex} end + if HasID(Act,84764038,false,nil,LOCATION_HAND,SSBA) then -- Scarm + OPTSet(84764038) + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasID(Act,57143342,false,nil,LOCATION_HAND,SSBA) then -- Cir + OPTSet(57143342) + return {COMMAND_ACTIVATE,CurrentIndex} + end if HasID(SpSum,65305468,SummonF0,2) then return {COMMAND_SPECIAL_SUMMON,CurrentIndex} end + if HasID(Act,63821877,UsePKGlove,5) then + return Activate() + end + if HasID(Act,36426778,UsePKBoots,2) then + return Activate() + end + if HasID(Act,01475311,UseAllureBA,1) then + return Activate() + end if HasID(SetMon,57143342) and SetCir() then return {COMMAND_SET_MONSTER,CurrentIndex} end @@ -881,6 +1413,66 @@ function PainfulEscapeTarget(cards) end return Add(cards) end +function RankUpCheck(mode) + if mode == 1 -- Break Sword target selection + and HasIDNotNegated(AIExtra(),16195942,true) -- Rebellion Dragon + and HasIDNotNegated(AIExtra(),01621413,true) -- Requiem Dragon + and (HasIDNotNegated(UseLists(AIHand(),AIST()),03298689,true) -- PK Launch + or HasID(UseLists(AIMaterials(),AIGrave()),36426778,true,FilterOPT,364267781) -- PK Boots + and HasIDNotNegated(AIDeck(),03298689,true)) -- PK Launch + and MacroCheck() + and DualityCheck() + then + return true + end + return false -- TODO +end +function BreakSwordTarget(cards,min) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_TOFIELD,min) + end + if RankUpCheck(1) then + if FilterController(cards[1],1) then + return Add(cards,PRIO_TOGRAVE,1,FilterID,62709239) -- PK Break Sword + else + if #OppMon()==1 and DestroyCheck(OppField())>1 then + return BestTargets(cards,1,TARGET_DESTROY,FilterType,TYPE_SPELL+TYPE_TRAP) + end + return BestTargets(cards,1,TARGET_DESTROY) + end + end + if FilterController(cards[1],1) then + return Add(cards,PRIO_TOGRAVE) + else + return BestTargets(cards,1,TARGET_DESTROY) + end +end +function PKGloveTarget(cards) + local id = GlobalPKGloveID + if id then + GlobalPKGloveID = nil + return Add(cards,PRIO_TOGRAVE,1,FilterID,id) + end + return Add(cards,PRIO_TOGRAVE) +end +function PKBootsTarget(cards) + return Add(cards) +end +function PKCloakTarget(cards) + return Add(cards,1,PRIO_TOHAND,FilterType,TYPE_MONSTER) +end +function GrampulseTarget(cards) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + return BestTargets(cards,1,TARGET_DESTROY) +end +function LeviairTargetBA(cards) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + return Add(cards,PRIO_TOFIELD,1,PKNonXYZFilter) +end function BACard(cards,min,max,id,c) if not c and GlobalSSCardID == 27552504 then return BeatriceSummonTarget(cards) @@ -897,6 +1489,21 @@ function BACard(cards,min,max,id,c) if c then id = c.id end + if id == 63821877 then + return PKGloveTarget(cards,min) + end + if id == 95992081 then + return LeviairTargetBA(cards) + end + if id == 85252081 then + return GrampulseTarget(cards) + end + if id == 36426778 then + return PKBootsTarget(cards,min) + end + if id == 62709239 then + return BreakSwordTarget(cards,min) + end if id == 60743819 then return FiendGriefingTarget(cards) end @@ -975,6 +1582,9 @@ function BACard(cards,min,max,id,c) if id == 20513882 then return PainfulEscapeTarget(cards) end + if id == 90432163 then + return PKCloakTarget(cards) + end return nil end function ChainAlich(c) @@ -1224,7 +1834,7 @@ function ChainTraveler(c) return true end if Duel.GetTurnPlayer() == 1-player_ai - and Duel.GetCurrentPhase() == PHASE_BATTLE + and IsBattlePhase() and #AIMon()==0 and ExpectedDamage(1)>=0.7*AI.GetPlayerLP(1) then @@ -1273,7 +1883,7 @@ function ChainPainfulEscape(card) if RemovalCheckCard(card) then return true end - if Duel.GetCurrentPhase()==PHASE_BATTLE + if IsBattlePhase() and Duel.GetTurnPlayer()==1-player_ai then local aimon,oppmon = GetBattlingMons() @@ -1302,10 +1912,16 @@ function ChainPainfulEscape(card) end return false end +function ChainPKBreakSword(c) + return true +end function BAChain(cards) if HasID(cards,20036055,ChainTraveler) then return {1,CurrentIndex} end + if HasID(cards,62709239,ChainPKBreakSword) then + return Chain() + end if HasID(cards,81992475,ChainBarbar) then return {1,CurrentIndex} end @@ -1378,6 +1994,9 @@ function BAEffectYesNo(id,card) if id == 65305468 and ChainF0(card) then result = 1 end + if id == 62709239 and ChainPKBreakSword(card) then + return 1 + end if id == 18386170 and ChainPilgrim(card) then result = 1 end @@ -1424,11 +2043,10 @@ function BAEffectYesNo(id,card) return result end BAAtt={ - 00601193,26563200, -- Virgil,Muzurythm - 72167543, -- Downerd + 00601193,26563200,72167543, -- Virgil, Muzurythm, Downerd 81330115,31320433,47805931, -- Acid, Nightmare Shark, Giga-Brillant 75367227,68836428,52558805, -- Alucard, Levia, Temtempo - 18386170,65305468, -- Pilgrim, F0 + 18386170,65305468,62709239, -- Pilgrim, F0, PK Break Sword } BAVary={ 57143342,73213494,09342162, -- Cir, Calcab, Cagna @@ -1438,6 +2056,8 @@ BAVary={ BADef={ 84764038,00734741,78156759, -- Scarm, Rubic, Zenmaines 16259549,62957424,36553319, -- Fortune Tune, Farfa + 63821877,36426778, -- PK Boots, Glove + 81275020,53932291, -- Speedroid Terrortop, Taketomborg } function BAPosition(id,available) diff --git a/ai/decks/ChaosDragon.lua b/ai/decks/ChaosDragon.lua index e70759e0..37781ab7 100644 --- a/ai/decks/ChaosDragon.lua +++ b/ai/decks/ChaosDragon.lua @@ -348,18 +348,18 @@ end function SummonBLS() return OverExtendCheck() and #OppMon()>0 and ChaosSummonCheck()>4 end -function BLSFilter(c) +function BLSEnvoyFilter(c) return bit32.band(c.status,STATUS_LEAVE_CONFIRMED)==0 and c:is_affected_by(EFFECT_CANNOT_BE_EFFECT_TARGET)==0 end function BLSFilter2(c) - return BLSFilter(c) + return BLSEnvoyFilter(c) and (c.attack>=3000 or c:is_affected_by(EFFECT_CANNOT_BE_BATTLE_TARGET)==1 or c:is_affected_by(EFFECT_INDESTRUCTABLE)==1 or bit32.band(c.position,POS_FACEDOWN)>0) end function UseBLS() return CardsMatchingFilter(OppMon(),BLSFilter2)>0 or ((OppHasStrongestMonster() - or AI.GetCurrentPhase() == PHASE_MAIN2) and CardsMatchingFilter(OppMon(),BLSFilter)>0) + or AI.GetCurrentPhase() == PHASE_MAIN2) and CardsMatchingFilter(OppMon(),BLSEnvoyFilter)>0) end function REDMDFilter(c) return bit32.band(c.race,RACE_DRAGON)>0 and c:is_affected_by(EFFECT_SPSUMMON_CONDITION)==0 and c.id~=51858306 @@ -485,7 +485,7 @@ end function UsePSZ() return SummonPSZ() and #AIHand()>4 end -function UseAllure() +function UseAllureCD() return PriorityCheck(AIHand(),PRIO_BANISH,1,FilterAttribute,ATTRIBUTE_DARK)>4 end @@ -512,7 +512,7 @@ function UseCaius() return CardsMatchingFilter(OppField(),CaiusFilter)>0 or AI.GetPlayerLP(2)<=1000 end -function SummonCaius(c,mode) +function SummonCaiusCD(c,mode) if mode == 1 then return AI.GetPlayerLP(2)<=1000 elseif mode == 2 then @@ -551,10 +551,10 @@ function ChaosDragonOnSelectInit(cards, to_bp_allowed, to_ep_allowed) if HasID(Activatable,00691925) then return {COMMAND_ACTIVATE,CurrentIndex} end - if HasID(Activatable,01475311) and UseAllure() then + if HasID(Activatable,01475311) and UseAllureCD() then return {COMMAND_ACTIVATE,CurrentIndex} end - if HasIDNotNegated(Summonable,09748752,SummonCaius,1) then + if HasIDNotNegated(Summonable,09748752,SummonCaiusCD,1) then return {COMMAND_SUMMON,CurrentIndex} end if HasID(SpSummonable,65192027) and SummonDAD() then @@ -665,7 +665,7 @@ function ChaosDragonOnSelectInit(cards, to_bp_allowed, to_ep_allowed) if HasID(SpSummonable,30100551,SummonMinerva,1) then return SpSummon() end - if HasIDNotNegated(Summonable,09748752,SummonCaius,2) then + if HasIDNotNegated(Summonable,09748752,SummonCaiusCD,2) then return {COMMAND_SUMMON,CurrentIndex} end if HasID(Summonable,10802915) and SummonTourguide() and DeckCheck(DECK_CHAOSDRAGON) then diff --git a/ai/decks/Constellar.lua b/ai/decks/Constellar.lua index e34c87c5..32e80fd7 100644 --- a/ai/decks/Constellar.lua +++ b/ai/decks/Constellar.lua @@ -70,7 +70,10 @@ function SombreCond(loc,c) if (FilterLocation(c,LOCATION_GRAVE) and not OPTCheck(783585211) and OPTCheck(783585212) and HasIDNotNegated(AIMon(),78358521,true)) then - return HasID(AICards(),70908596,true) + if HasID(AICards(),70908596,true) then + return true + end + return false end return CardsMatchingFilter(cards,ConstellarNonXYZFilter)>1 and HasAccess(70908596) end diff --git a/ai/decks/DDD.lua b/ai/decks/DDD.lua index 4b763571..602eb8df 100644 --- a/ai/decks/DDD.lua +++ b/ai/decks/DDD.lua @@ -236,6 +236,7 @@ end function SummonVoidOgre(c,mode) end function SummonCrystalWing(c,mode) + return true end function SummonSiegfried(c,mode) end @@ -538,19 +539,19 @@ function DDDPosition(id,available) for i=1,#DDDVary do if DDDVary[i]==id then - if (BattlePhaseCheck() or Duel.GetCurrentPhase()==PHASE_BATTLE) + if (BattlePhaseCheck() or IsBattlePhase()) and Duel.GetTurnPlayer()==player_ai then result=POS_FACEUP_ATTACK else - result=POS_FACEUP_DEFENCE + result=POS_FACEUP_DEFENSE end end end for i=1,#DDDDef do if DDDDef[i]==id then - result=POS_FACEUP_DEFENCE + result=POS_FACEUP_DEFENSE end end return result diff --git a/ai/decks/Eidolon.lua b/ai/decks/Eidolon.lua new file mode 100644 index 00000000..42383c20 --- /dev/null +++ b/ai/decks/Eidolon.lua @@ -0,0 +1,1636 @@ +--[[ +20292186, -- Artifact Scythe +85103922, -- Artifact Moralltach +71007216, -- Wind Witch Glass Bell +86120751, -- Aleister +43722862, -- Wind Witch Ice Bell +23434538, -- Maxx "C" +70117860, -- Wind Witch Snow Bell + +01845204, -- Instant Fusion +73628505, -- Terraforming +74063034, -- Eidolon Summoning Magic +67775894, -- Wonder Wand +47679935, -- Reckless Magic Circle + +12444060, -- Artifact Sanctum +05851097, -- Vanity +40605147, -- Strike +84749824, -- Warning +43898403, -- Twin Twister + +11270236, -- Elysion +75286621, -- Merkabah +48791583, -- Magallanica +12307878, -- Purgatorio +85908279, -- Cocytus +49513164, -- Raideen +13529466, -- Caligula +50954680, -- Crystal Wing +82044279, -- Clear Wing +14577226, -- Wind Witch Winter Bell +56832966, -- Utopia Lightning +84013237, -- Utopia +]] + +function EidolonStartup(deck) + deck.Init = EidolonInit + deck.Card = EidolonCard + deck.Chain = EidolonChain + deck.EffectYesNo = EidolonEffectYesNo + deck.Position = EidolonPosition + deck.YesNo = EidolonYesNo + deck.BattleCommand = EidolonBattleCommand + deck.AttackTarget = EidolonAttackTarget + deck.AttackBoost = EidolonAttackBoost + deck.Tribute = EidolonTribute + deck.Option = EidolonOption + deck.ChainOrder = EidolonChainOrder + deck.Sum = EidolonSum + --[[ + + deck.DeclareCard + deck.Number + deck.Attribute + deck.MonsterType + ]] + deck.ActivateBlacklist = EidolonActivateBlacklist + deck.SummonBlacklist = EidolonSummonBlacklist + deck.RepositionBlacklist = EidolonRepoBlacklist + deck.SetBlacklist = EidolonSetBlacklist + deck.Unchainable = EidolonUnchainable + --[[ + + ]] + deck.PriorityList = EidolonPriorityList +end +EidolonIdentifier = 86120751 -- Aleister +DECK_Eidolon = NewDeck("Eidolon Beast",EidolonIdentifier,EidolonStartup) +EidolonActivateBlacklist={ +71007216, -- Wind Witch Glass Bell +86120751, -- Aleister +43722862, -- Wind Witch Ice Bell +70117860, -- Wind Witch Snow Bell + +01845204, -- Instant Fusion +73628505, -- Terraforming +74063034, -- Eidolon Summoning Magic +67775894, -- Wonder Wand +47679935, -- Reckless Magic Circle + +12444060, -- Artifact Sanctum + +11270236, -- Elysion +--75286621, -- Merkabah +48791583, -- Magallanica +12307878, -- Purgatorio +85908279, -- Cocytus +49513164, -- Raideen +13529466, -- Caligula +--50954680, -- Crystal Wing +82044279, -- Clear Wing +14577226, -- Wind Witch Winter Bell +} +EidolonSummonBlacklist={ +20292186, -- Artifact Scythe +85103922, -- Artifact Moralltach +71007216, -- Wind Witch Glass Bell +86120751, -- Aleister +43722862, -- Wind Witch Ice Bell +23434538, -- Maxx "C" +70117860, -- Wind Witch Snow Bell + +11270236, -- Elysion +75286621, -- Merkabah +48791583, -- Magallanica +12307878, -- Purgatorio +85908279, -- Cocytus +49513164, -- Raideen +13529466, -- Caligula +50954680, -- Crystal Wing +82044279, -- Clear Wing +14577226, -- Wind Witch Winter Bell +--56832966, -- Utopia Lightning +--84013237, -- Utopia +} +EidolonSetBlacklist={ +20292186, -- Artifact Scythe +85103922, -- Artifact Moralltach +74063034, -- Eidolon Summoning Magic +01845204, -- Instant Fusion +} +EidolonRepoBlacklist={ +11270236, -- Elysion +85908279, -- Cocytus +} +EidolonUnchainable={ +86120751, -- Aleister +49513164, -- Raideen +11270236, -- Elysion +} +function EidolonFilter(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0xf4) and check +end +function WindWitchFilter(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0xf0) and check +end +function EidolonMonsterFilter(c,exclude) + return FilterType(c,TYPE_MONSTER) + and EidolonFilter(c,exclude) +end + +function UseIceBell(c,mode) + if mode == 1 -- synchro climb for Crystal Wing + and CanSpecialSummon() + and SpaceCheck()>2 + and HasIDNotNegated(AIDeck(),71007216,true) -- Glass Bell + and HasID(Merge(AIDeck(),AIHand()),70117860,true) -- Snow Bell + and HasIDNotNegated(AIExtra(),50954680,true) -- Crystal Wing + and CardsMatchingFilter(AIExtra(),function(c) + return FilterType(c,TYPE_SYNCHRO) + and FilterLevel(c,7) + end)>0 + then + SetSummonLimit(function(c) + return (FilterLevelMin(c,5) + and FilterAttribute(c,ATTRIBUTE_WIND)) + or not FilterLocation(c,LOCATION_EXTRA) + end) + return true + end + if mode == 2 -- enable Wonder Wand + and CanSpecialSummon() + and CardsMatchingFilter(AIMon(),FilterRace,RACE_SPELLCASTER)==0 + and HasIDNotNegated(AICards(),67775894,true,FilterPosition,POS_FACEDOWN) -- Wonder Wand + then + SetSummonLimit(function(c) + return (FilterLevelMin(c,5) + and FilterAttribute(c,ATTRIBUTE_WIND)) + or not FilterLocation(c,LOCATION_EXTRA) + end) + return true + end + if mode == 3 -- just use (for a synchro) + and CanSpecialSummon() + and SpaceCheck()>1 + and HasIDNotNegated(AIDeck(),71007216,true) -- Glass Bell + --[[and CardsMatchingFilter(AIExtra(),function(c) + return FilterType(c,TYPE_SYNCHRO) + and FilterLevel(c,7) + end)>0]] + then + SetSummonLimit(function(c) + return (FilterLevelMin(c,5) + and FilterAttribute(c,ATTRIBUTE_WIND)) + or not FilterLocation(c,LOCATION_EXTRA) + end) + return true + end +end +function SummonGlassBell(c,mode) + if mode == 1 -- can make Crystal Wing somehow + and CanSpecialSummon() + and not HasID(AIMon(),c.id,true) + and (SpaceCheck()>1 + and #AIMon() == 1 + and HasID(AIMon(),43722862,true) -- Ice Bell + and HasID(Merge(AIDeck(),AIHand()),70117860,true) -- Snow Bell + or SpaceCheck()>0 + and HasID(AIMon(),43722862,true) -- Ice Bell + and HasID(AIMon(),70117860,true)) -- Snow Bell + and HasIDNotNegated(AIExtra(),50954680,true) -- Crystal Wing + and CardsMatchingFilter(AIExtra(),function(c) + return FilterType(c,TYPE_SYNCHRO) + and FilterLevel(c,7) + end)>0 + then + return true + end + if mode == 2 -- search + and CardsMatchingFilter(AIDeck(),WindWitchFilter,c.id)>0 + and OPTCheck(c.id) + then + return true + end + if mode == 3 -- enable Wonder Wand + and CardsMatchingFilter(AIMon(),FilterRace,RACE_SPELLCASTER)==0 + and HasIDNotNegated(AICards(),67775894,true,FilterPosition,POS_FACEDOWN) -- Wonder Wand + then + return true + end +end +function SummonIceBell(c,mode) + if mode == 1 -- can make Crystal Wing somehow + and CanSpecialSummon() + and not HasID(AIMon(),c.id,true) + and (SpaceCheck()>1 + and #AIMon() == 1 + and HasID(AIMon(),71007216,true) -- Glass Bell + and HasID(AIHand(),70117860,true) -- Snow Bell + or SpaceCheck()>0 + and HasID(AIMon(),71007216,true) -- Glass Bell + and HasID(AIMon(),70117860,true)) -- Snow Bell + and HasIDNotNegated(AIExtra(),50954680,true) -- Crystal Wing + and CardsMatchingFilter(AIExtra(),function(c) + return FilterType(c,TYPE_SYNCHRO) + and FilterLevel(c,7) + end)>0 + then + return true + end + if mode == 2 -- finish + and AI.GetPlayerLP(2)<=500 + then + return true + end + if mode == 3 -- enable Wonder Wand + and CardsMatchingFilter(AIMon(),FilterRace,RACE_SPELLCASTER)==0 + and HasIDNotNegated(AICards(),67775894,true,FilterPosition,POS_FACEDOWN) -- Wonder Wand + then + return true + end +end +function UseWinterBell(c,mode) + if mode == 1 + then + SetSummonLimit(function(c) + return FilterAttribute(c,ATTRIBUTE_WIND) + end) + return true + end +end +function WinterBellFilter(c) + return WindWitchFilter(c,14577226) + and c.level*200>=AI.GetPlayerLP(2) +end +function SummonWinterBell(c,mode) + if mode == 1 -- synchro climb for Crystal Wing + and CanSpecialSummon() + and not HasID(AIMon(),c.id,true) + and HasID(AIMon(),70117860,true) -- Snow Bell + and HasIDNotNegated(AIExtra(),50954680,true) -- Crystal Wing + then + return true + end + if mode == 2 -- finish game + and NotNegated(c) + and CardsMatchingFilter(Merge(AIMon(),AIGrave()),WinterBellFilter)>0 + then + return true + end + if mode == 3 -- beatstick + and CanSpecialSummon() + and CanWinBattle(c,OppMon()) + then + return true + end +end +function SummonClearWingEidolon(c,mode) + if mode == 1 -- synchro climb for Crystal Wing + and CanSpecialSummon() + and HasID(AIMon(),70117860,true) -- Snow Bell + and HasIDNotNegated(AIExtra(),50954680,true) -- Crystal Wing + then + return true + end + if mode == 2 -- just summon whenever + --and CanSpecialSummon() + then + return true + end +end +function UseSnowBell(c,mode) + if mode == 1 -- synchro climb for Crystal Wing + and CanSpecialSummon() + and not HasID(AIMon(),c.id,true) + and HasIDNotNegated(AIExtra(),50954680,true) -- Crystal Wing + and CardsMatchingFilter(AIMon(),WindWitchFilter)==2 + then + return true + end + if mode == 2 -- enable Wonder Wand + and CanSpecialSummon() + and HasIDNotNegated(AICards(),67775894,true,FilterPosition,POS_FACEDOWN) -- Wonder Wand + then + return true + end +end +function SummonSnowBell(c,mode) + if mode == 1 -- enable Wonder Wand + and CardsMatchingFilter(AIMon(),FilterRace,RACE_SPELLCASTER)==0 + and HasIDNotNegated(AICards(),67775894,true,FilterPosition,POS_FACEDOWN) -- Wonder Wand + then + return true + end +end +function UseMagicCircle(c,mode) + if mode == 1 + and HasID(AIDeck(),86120751,true) -- Aleister + then + return true + end +end +function RepoAleister(c,mode) + if mode == 1 + and FilterPosition(c,POS_FACEDOWN_DEFENSE) + and HasID(AIDeck(),74063034,true) -- Eidolon Magic + then + return true + end +end +function SummonAleister(c,mode) + if mode == 1 + and HasID(AIDeck(),74063034,true) -- Eidolon Magic + then + return true + end +end +function UseAleister(c,act) + if HasIDNotNegated(act,74063034,true,UseEidolonSummon,2) + and CardsMatchingFilter(Merge(AIField(),AIGrave(),OppGrave()),FilterID,c.id)==0 + and CardsMatchingFilter(Merge(AIField(),AIHand()),FilterID,74063034)<2 -- Eidolon Magic + then + GlobalEidolonSummonID = nil + return true + end +end +function UseMaxxEidolon(c,act) + if HasIDNotNegated(act,74063034,true,UseEidolonSummon,2) + and GlobalEidolonSummonID == 48791583 -- Magallanica + and CardsMatchingFilter(Merge(AIGrave(),OppGrave()),FilterAttribute,ATTRIBUTE_EARTH)==0 + then + GlobalEidolonSummonID = nil + return true + end +end +function UseWonderWand(c,mode) + if mode == 1 + and FilterLocation(c,LOCATION_SZONE) + and FilterPosition(c,POS_FACEUP) + and #AIDeck()>5 + then + return true + end + if mode == 2 + and HasID(AIMon(),86120751,true,FilterPosition,POS_FACEUP) + then + return true + end + if mode == 3 + and FilterPosition(c,POS_FACEDOWN) + then + return true + end +end +function UseEidolonSummon(c,mode) + if mode == 1 -- from grave + and FilterLocation(c,LOCATION_GRAVE) + then + OPTSet(c.id) + return true + end + if (mode == 2 or mode == 0) + and FilterLocation(c,LOCATION_HAND+LOCATION_SZONE) + and SpaceCheck()+CardsMatchingFilter(AIMon(),FilterID,86120751)>0 -- Aleister + then + if HasID(AIExtra(),12307878,true,SummonPurgatorio,3) + then + GlobalEidolonSummonID = 12307878 + return true + end + if HasID(AIExtra(),11270236,true,SummonElysion,1) + then + GlobalEidolonSummonID = 11270236 + return true + end + if HasID(AIExtra(),12307878,true,SummonPurgatorio,1) + then + GlobalEidolonSummonID = 12307878 + return true + end + if HasID(AIExtra(),75286621,true,SummonMerkabah,1) + then + GlobalEidolonSummonID = 75286621 + return true + end + if HasID(AIExtra(),49513164,true,SummonRaideen,1) + then + GlobalEidolonSummonID = 49513164 + return true + end + if HasID(AIExtra(),48791583,true,SummonMagallanica,1) + then + GlobalEidolonSummonID = 48791583 + return true + end + if HasID(AIExtra(),85908279,true,SummonCocytus,1) + then + GlobalEidolonSummonID = 85908279 + return true + end + if HasID(AIExtra(),11270236,true,SummonElysion,2) + then + GlobalEidolonSummonID = 11270236 + return true + end + if HasID(AIExtra(),75286621,true,SummonMerkabah,2) + then + GlobalEidolonSummonID = 75286621 + return true + end + if HasID(AIExtra(),12307878,true,SummonPurgatorio,2) + then + GlobalEidolonSummonID = 12307878 + return true + end + if HasID(AIExtra(),49513164,true,SummonRaideen,2) + then + GlobalEidolonSummonID = 49513164 + return true + end + if HasID(AIExtra(),85908279,true,SummonCocytus,2) + then + GlobalEidolonSummonID = 85908279 + return true + end + end +end +function EidolonMaterialFilter(c,mode) + if mode == 2 then + return FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_HAND) --and FilterID(c,86120751,true) -- Aleister + or FilterLocation(c,LOCATION_MZONE) + and not (FilterType(c,TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ) + or FilterCrippled(c) or FilterOwner(c,2)) + end +end +function EidolonMaterialFilter2(c,attribute) + return c.attribute == attribute + and ExcludeID(c,86120751,true) -- Aleister +end +function ElysionMaterialFilter(c,args) + local mode = args[1] + local cards = args[2] + return FilterPreviousLocation(c,LOCATION_EXTRA) + and (mode == 2 or FilterID(c,13529466) or FilterCrippled(c)) -- Caligula + and CardsMatchingFilter(cards,EidolonFilter,c)>0 +end +function CanSummonEidolon(c,mode) + if not (CanSpecialSummon() + and CheckSummonLimit(c) + and FilterLocation(c,LOCATION_EXTRA) + and EidolonFilter(c)) + then + return false + end + if mode == 1 + and HasIDNotNegated(AIMon(),c.id,true,FilterNotCrippled) + then + return false + end + local cards = {} + if mode == 1 then -- can summon using favourable materials only + cards = Merge(AIGrave(),OppGrave(),SubGroup(Merge(AIField(),AIHand()),EidolonMaterialFilter,2)) + elseif mode == 2 then -- can summon at all, regardless of materials + cards = Merge(AIHand(),AIField(),AIGrave(),OppGrave()) + end + if c.id == 11270236 then -- Elysion + return CardsMatchingFilter(AIMon(),ElysionMaterialFilter,{mode,cards})>0 + end + if not HasID(cards,86120751,true) then -- Aleister + return false + end + return CardsMatchingFilter(cards,EidolonMaterialFilter2,c.attribute)>0 +end +function SummonElysion(c,mode) + if mode == 1 + and CanSummonEidolon(c,1) + and NotNegated(c) + then + return true + end + if mode == 2 + and CanSummonEidolon(c,1) + and CanWinBattle(c,OppMon()) + then + return true + end +end +function SummonMerkabah(c,mode) + if mode == 1 + and CanSummonEidolon(c,1) + and NotNegated(c) + then + return true + end + if mode == 2 + and CanSummonEidolon(c,1) + and CanWinBattle(c,OppMon()) + then + return true + end +end +function SummonCocytus(c,mode) + if mode == 1 + and CanSummonEidolon(c,1) + and NotNegated(c) + then + return true + end + if mode == 2 + and CanSummonEidolon(c,1) + and CanWinBattle(c,OppMon()) + then + return true + end +end +function SummonMagallanica(c,mode) + if mode == 1 + and CanSummonEidolon(c,1) + and CanWinBattle(c,OppMon()) + then + return true + end +end +function SummonRaideen(c,mode) + if mode == 1 + and CanSummonEidolon(c,1) + and NotNegated(c) + then + return true + end + if mode == 2 + and CanSummonEidolon(c,1) + and CanWinBattle(c,OppMon()) + then + return true + end + if mode == 3 + and NotNegated(c) + and CanSpecialSummon() + and CheckSummonLimit(c) + and not HasIDNotNegated(AIMon(),c.id,true,FilterNotCrippled) + then + return true + end +end +function PurgatorioBattleDamage(c,targets,aleister) + c = GetCardFromScript(c) + local amount = 0 + local bonus = 0 + if FilterLocation(c,LOCATION_MZONE) and NotNegated(c) then + bonus = -100*(#OppMon()-1) -- gets reduced for each kill + end + if FilterLocation(c,LOCATION_EXTRA) and NotNegated(c) then + bonus = 100*(#OppMon()+1) + end + if MacroCheck() + and aleister + then + bonus = bonus + 1000 * CardsMatchingFilter(AIHand(),FilterID,86120751) -- Aleister + if OPTCheck(74063034) -- Eidolon Summoning Magic + and CardsMatchingFilter(Merge(AIMon(),AIGrave()),FilterID,86120751) -- Aleister + then + bonus = bonus + 1000 + end + end + for i,target in pairs(targets) do + amount = amount + BattleDamage(target,c,c.attack+bonus,nil,nil,true) + end + return amount +end +function PurgatorioFilter(c,source) + source = GetCardFromScript(source) + c = GetCardFromScript(c) + return CanWinBattle(source,{c}) +end +function SummonPurgatorio(c,mode) + if mode == 1 + and CanSummonEidolon(c,1) + and BattlePhaseCheck() + and CardsMatchingFilter(OppMon(),PurgatorioFilter,c)>1 + then + return true + end + if mode == 2 + and CanSummonEidolon(c,1) + and CanWinBattle(c,OppMon()) + then + return true + end + if mode == 3 -- finish + and CanSummonEidolon(c,1) + and BattlePhaseCheck() + then + local targets = SubGroup(OppMon(),PurgatorioFilter,c) + if PurgatorioBattleDamage(c,targets,true)>=AI.GetPlayerLP(2) then + return true + end + end +end +function SummonCaligula(c,mode) + if mode == 1 -- summon via Instant Fusion to enable Elysion + and CanSpecialSummon() + and FilterLocation(c,LOCATION_EXTRA) + and CheckSummonLimit(c) + and HasIDNotNegated(AICards(),74063034,true) -- Eidolon Magic + and HasID(AIExtra(),11270236,true) -- Elysion + and CardsMatchingFilter(Merge(AIGrave(),OppGrave()),EidolonFilter)>0 + then + return true + end +end +function UseIFEidolon(c,mode) + if AI.GetPlayerLP(1)<=1000 + or not CanSpecialSummon() + then + return false + end + if mode == 1 + and HasID(AIExtra(),13529466,true,SummonCaligula,1) + then + GlobalIFTarget=13529466 -- Caligula + return true + end + if mode == 2 + and HasIDNotNegated(AIExtra(),49513164,true,SummonRaideen,3) + then + GlobalIFTarget=49513164 -- Raideen + return true + end +end +function UseRaideen(c,mode) + if mode == 1 then + targets = SubGroup(OppMon(),RaideenFilter) + targets = SubGroup(OppMon(),MoonWhitelist) + if #targets>0 then + GlobalCardMode = 1 + GlobalTargetSet(targets[1]) + return true + end + end + if mode == 2 + then + local attackers = SubGroup(AIMon(),CanAttack) + local targets = SubGroup(OppMon(),RaideenFilter) + targets = SubGroup(targets,FilterPosition,POS_FACEUP_ATTACK) + table.sort(attackers,function(a,b) return a.attack>b.attack end) + table.sort(targets,function(a,b) return a.attack>b.attack end) + if #attackers>0 and #targets>0 + and attackers[1].attack<=targets[1].attack + then + GlobalCardMode = 1 + GlobalTargetSet(targets[1]) + return true + end + targets = SubGroup(OppMon(),RaideenFilter) + targets = SubGroup(targets,function (c) return c.equip_count>0 end) + if #targets>0 then + table.sort(targets,function(a,b) return a.equip_count>b.equip_count end) + GlobalCardMode = 1 + GlobalTargetSet(targets[1]) + return true + end + end + if mode == 3 + and HasID(AIDeck(),74063034,true) -- Eidolon Summon + then + for i,c in pairs(AIMon()) do + if FilterID(c,86120751) -- Aleister + and FilterPosition(c,POS_FACEUP) + and CanChangePos(c) + then + GlobalCardMode = 1 + GlobalTargetSet(c) + return true + end + end + end + if mode == 4 + then + local filter = function(c) + return FilterCrippled(c) + and FilterPosition(c,POS_FACEUP) + and CanChangePos(c) + end + for i,c in pairs(AIMon()) do + if filter(c) then + GlobalCardMode = 1 + GlobalTargetSet(c) + return true + end + end + end +end +function UseTerraformingEidolon(c,mode) + if mode == 1 + and not HasIDNotNegated(AIST(),05851097,true,FilterPosition,POS_FACEUP) + or OppHasStrongestMonster() + then + return true + end +end +function EidolonInit(cards) + local Act = cards.activatable_cards + local Sum = cards.summonable_cards + local SpSum = cards.spsummonable_cards + local Rep = cards.repositionable_cards + local SetMon = cards.monster_setable_cards + local SetST = cards.st_setable_cards + if HasIDNotNegated(Act,49513164,UseRaideen,1) then + return Activate() + end + if HasIDNotNegated(Act,49513164,UseRaideen,3) then + return Activate() + end + if HasIDNotNegated(Act,49513164,UseRaideen,4) then + return Activate() + end + for i,c in pairs(Rep) do + for j,id in pairs(EidolonAtt) do + if FilterPosition(c,POS_FACEDOWN_DEFENSE) + and FilterID(c,id) + then + return Repo(i) + end + end + end + if HasIDNotNegated(Act,73628505,UseTerraformingEidolon,1) then -- Terraforming + return Activate() + end + if HasIDNotNegated(Act,74063034,UseEidolonSummon,1) then + return Activate() + end + if HasIDNotNegated(Act,47679935,UseMagicCircle,1) then + return Activate() + end + if HasIDNotNegated(Act,43722862,UseIceBell,1) then + return Activate() + end + if HasIDNotNegated(Act,70117860,UseSnowBell,1) then + return Activate() + end + if HasIDNotNegated(Act,70117860,UseSnowBell,2) then + return Activate() + end + if HasID(Sum,43722862,SummonIceBell,2) then + return Summon() + end + if HasID(Sum,71007216,SummonGlassBell,1) then + return Summon() + end + if HasID(Sum,43722862,SummonIceBell,1) then + return Summon() + end + if HasID(Act,14577226,UseWinterBell,1) then + return Activate() + end + if HasID(SpSum,14577226,SummonWinterBell,2) then + return SynchroSummon() + end + if HasID(SpSum,14577226,SummonWinterBell,1) then + return SynchroSummon() + end + if HasID(SpSum,82044279,SummonClearWingEidolon,1) then + return SynchroSummon() + end + if HasID(SpSum,50954680,SummonCrystalWing,1) then + return SynchroSummon() + end + if HasID(SpSum,82044279,SummonClearWingEidolon,2) then + return SynchroSummon() + end + if HasID(SpSum,14577226,SummonWinterBell,3) then + return SynchroSummon() + end + if HasIDNotNegated(Rep,86120751,RepoAleister,1) then + return Repo() + end + if HasIDNotNegated(Sum,86120751,SummonAleister,1) then + return Summon() + end + if HasIDNotNegated(Act,67775894,UseWonderWand,1) then + return Activate() + end + if HasIDNotNegated(Act,67775894,UseWonderWand,2) then + return Activate() + end + if HasIDNotNegated(Act,67775894,UseWonderWand,3) then + return Activate() + end + if HasIDNotNegated(Act,43722862,UseIceBell,2) then + return Activate() + end + if HasID(Sum,71007216,SummonGlassBell,3) then + return Summon() + end + if HasID(Sum,43722862,SummonIceBell,3) then + return Summon() + end + if HasID(Sum,70117860,SummonSnowBell,1) then + return Summon() + end + if HasIDNotNegated(Act,01845204,UseIFEidolon,1) then + return Activate() + end + if HasID(Act,86120751,UseAleister,Act) then + return Activate() + end + if HasID(Act,23434538,UseMaxxEidolon,Act) then + return Activate() + end + if HasIDNotNegated(Act,74063034,UseEidolonSummon,2) then + return Activate() + end + if HasIDNotNegated(Act,49513164,UseRaideen,2) then + return Activate() + end + if HasIDNotNegated(Act,01845204,UseIFEidolon,2) then + return Activate() + end + if HasIDNotNegated(Act,43722862,UseIceBell,3) then + return Activate() + end + if HasID(Sum,71007216,SummonGlassBell,2) then + return Summon() + end + + if #SetST > 0 + and TurnEndCheck() + then + local setThisTurn = 0 + for i,c in pairs(AIST()) do + if FilterStatus(c,STATUS_SET_TURN) then + setThisTurn=setThisTurn+1 + end + end + local targets = {} + for i,c in pairs(SetST) do + if setThisTurn < 3 and #AIST()<4 + and (SetBlacklist(c.id)==0 + and FilterType(c,TYPE_TRAP+TYPE_QUICKPLAY) + or FilterType(c,TYPE_MONSTER) + and ArtifactFilter(c) + and HasID(AICards(),43898403,true)) -- Twin Twister + and DiscardCheck() + then + targets[#targets+1]=i + end + end + if #targets>0 then + return SetSpell(targets[math.random(#targets)]) + end + end + return nil +end +function IceBellTarget(cards) + return Add(cards,PRIO_TOFIELD) +end +function GlassBellTarget(cards) + return Add(cards) +end +function WinterBellTarget(cards) + local result = {0,0} + for i,c in pairs(cards) do + if c.level > result[1] then + result[1]=c.level + result[2]=i + end + end + return {result[2]} +end +function AleisterTarget(cards) + if LocCheck(cards,LOCATION_MZONE) then + if GlobalCardMode == 1 then + GlobalCardMode = nil + return BestTargets(cards,1,TARGET_PROTECT,FilterGlobalTarget,cards) + end + return BestTargets(cards,1,TARGET_PROTECT,FilterID,12307878) -- Purgatorio + end + return Add(cards) +end +function EidolonSummonFilter(c) + return FilterOwner(c,2) + and FilterLocation(c,LOCATION_GRAVE) +end +function EidolonSummonTarget(cards) + if LocCheck(cards,LOCATION_EXTRA) then + if GlobalEidolonSummonID then + local id = GlobalEidolonSummonID + GlobalEidolonSummonID = nil + return Add(cards,PRIO_TOFIELD,1,FilterID,id) + end + return Add(cards,PRIO_TOFIELD) + end + if CardsMatchingFilter(cards,EidolonSummonFilter)>0 + then + return BestTargets(cards,1,TARGET_BANISH,EidolonSummonFilter) + end + if CardsMatchingFilter(cards,FilterLocation,LOCATION_GRAVE)==0 + and CardsMatchingFilter(cards,FilterID,86120751)==#cards -- Aleister + then + return Add(cards,PRIO_BANISH,1,FilterLocation,LOCATION_MZONE) + end + return Add(cards,PRIO_BANISH,1,FilterLocation,LOCATION_GRAVE) +end +function RaideenTarget(cards) + if GlobalCardMode == 2 then + GlobalCardMode = nil + return BestTargets(cards,1,TARGET_FACEDOWN,FilterID,86120751) -- Aleister + end + if GlobalCardMode == 1 then + GlobalCardMode = nil + return BestTargets(cards,1,TARGET_FACEDOWN,FilterGlobalTarget,cards) + end + return BestTargets(cards,1,TARGET_FACEDOWN) +end +function ElysionTarget(cards) + if GlobalCardMode == 1 then + GlobalCardMode = nil + return BestTargets(cards,1,TARGET_BANISH,FilterGlobalTarget,cards) + end + return BestTargets(cards,1,TARGET_BANISH,FilterID,11270236) -- Elysion +end +function WonderWandTarget(cards) + return Add(cards,PRIO_TOGRAVE,1,FilterID,86120751) -- Aleister +end +function SanctumTargetEidolon(cards) + if GlobalCardMode == 1 then + GlobalCardMode = nil + local id = GlobalSanctumID + GlobalSanctumID = nil + return Add(cards,PRIO_TOFIELD,1,FilterID,id) + end + if CardsMatchingFilter(OppField,MoralltachFilter)>0 then + return Add(cards,PRIO_TOFIELD,1,FilterID,85103922) -- Moralltach + end + return Add(cards,PRIO_TOFIELD,1,FilterID,20292186) -- Scythe +end +EidolonTargetFunctions={ +[43722862] = IceBellTarget, +[71007216] = GlassBellTarget, +[14577226] = WinterBellTarget, +[86120751] = AleisterTarget, +[74063034] = EidolonSummonTarget, +[49513164] = RaideenTarget, +[11270236] = ElysionTarget, +[67775894] = WonderWandTarget, +} +function EidolonCard(cards,min,max,id,c) + for i,v in pairs(EidolonTargetFunctions) do + if id == i then + return v(cards,c,min,max) + end + end +end +function ChainIceBell(c) + return true +end +function ChainGlassBell(c) + OPTSet(c.id) + return true +end +function ChainAleister(c) + if c.description == c.id*16+1 + and NotNegated(c) + then + return true + end + if c.description == c.id*16 + and IsBattlePhase() + and Duel.GetCurrentPhase()==PHASE_DAMAGE + then + local aimon,oppmon = GetBattlingMons() + local count = CardsMatchingFilter(AIHand(),FilterID,c.id) + if aimon and oppmon + and FilterID(aimon,12307878) -- Purgatorio + then + local targets = SubGroup(OppMon(),PurgatorioFilter,aimon) + if PurgatorioBattleDamage(aimon,targets,false) < AI.GetPlayerLP(2) + and PurgatorioBattleDamage(aimon,targets,true) >= AI.GetPlayerLP(2) + and UnchainableCheck(c.id) + then + GlobalCardMode = 1 + GlobalTargetSet(aimon) + return true + end + end + if aimon and oppmon + and EidolonMonsterFilter(aimon) + and (AttackBoostCheck(1000*count) + or (CanFinishGame(aimon,oppmon,aimon:GetAttack()+1000*count) + and not CanFinishGame(aimon,oppmon))) + and UnchainableCheck(c.id) + then + GlobalCardMode = 1 + GlobalTargetSet(aimon) + return true + end + if aimon and #OppMon()==0 + and EidolonMonsterFilter(aimon) + and CanFinishGame(aimon,nil,aimon:GetAttack()+1000*count) + and not CanFinishGame(aimon,nil) + and UnchainableCheck(c.id) + then + GlobalCardMode = 1 + GlobalTargetSet(aimon) + return true + end + end +end +function RaideenFilter(c,opp) + return FilterType(c,TYPE_MONSTER) + and FilterPosition(c,POS_FACEUP) + and Affected(c,TYPE_MONSTER,5) + and Targetable(c,TYPE_MONSTER) + and not FilterType(c,TYPE_TOKEN) + and not (opp and FilterType(c,TYPE_FLIP)) +end + +function IFTargetFilter(c) + c = GetScriptFromCard(c) + return c:GetFlagEffect(1845204)~=0 +end +function ChainRaideen(c) + if Negated(c) then return false end + local targets1 = SubGroup(OppMon(),RaideenFilter,true) + local targets2 = SubGroup(targets1,MoonWhitelist) + if #targets2>0 + and (UnchainableCheck(c.id) + or RemovalCheckCard(c)) + then + return true + end + local IF = SubGroup(AIMon(),IFTargetFilter) + if Duel.CheckTiming(TIMING_END_PHASE) + and #IF>0 + then + GlobalCardMode = 1 + GlobalTargetSet(IF[1]) + return true + end + for i=1,Duel.GetCurrentChain() do + local protect = NegateCheckList(AIMon(),nil,i,RaideenFilter) + local tg = Duel.GetChainInfo(i,CHAININFO_TARGET_CARDS) + if tg and tg:GetCount()>0 + and protect and #protect>0 + and i>1 + then + GlobalCardMode = 1 + GlobalTargetSet(protect[1]) + SetNegated(i) + return true + end + protect = RemovalCheckList(AIMon(),nil,nil,i,RaideenFilter) + local e,c,id = EffectCheck(1-player_ai,i) + if e and MoonWhitelist2(e:GetHandler():GetCode()) + and protect and #protect>0 + then + GlobalCardMode = 1 + GlobalTargetSet(protect[1]) + SetNegated(i) + return true + end + end + if UnchainableCheck(c.id) + or RemovalCheckCard(c) + then + for i=1,Duel.GetCurrentChain() do + local e,c,id = EffectCheck(1-player_ai,i) + if e + and (FilterSet(c,0x95) -- Rank-Up + or FilterSet(c,0xa5)) -- Mask Change + then + local target = Duel.GetChainInfo(i,CHAININFO_TARGET_CARDS):GetFirst() + if target and RaideenFilter(target) then + GlobalCardMode = 1 + GlobalTargetSet(target[1]) + SetNegated(i) + return true + end + end + end + end + if IsBattlePhase() + and Duel.GetTurnPlayer()==1-player_ai + and (UnchainableCheck(c.id) + or RemovalCheckCard(c)) + then + local aimon,oppmon = GetBattlingMons() + if aimon and oppmon + --and WinsBattle(oppmon,aimon) + and FilterID(aimon,86120751) -- Aleister + and FilterPosition(aimon,POS_FACEUP) + and HasID(AIDeck(),74063034,true) -- Eidolon Magic + then + GlobalCardMode = 1 + GlobalTargetSet(aimon) + return true + end + if aimon and oppmon + and WinsBattle(oppmon,aimon) + and RaideenFilter(oppmon) + then + GlobalCardMode = 1 + GlobalTargetSet(oppmon) + return true + end + end + if IsBattlePhase() + and Duel.GetTurnPlayer()==player_ai + and (UnchainableCheck(c.id) + or RemovalCheckCard(c)) + then + local attackers = SubGroup(AIMon(),CanAttack) + local targets = SubGroup(OppMon(),RaideenFilter) + targets = SubGroup(targets,FilterPosition,POS_FACEUP_ATTACK) + table.sort(attackers,function(a,b) return a.attack>b.attack end) + table.sort(targets,function(a,b) return a.attack>b.attack end) + if #attackers>0 and #targets>0 + and attackers[1].attack<=targets[1].attack + then + GlobalCardMode = 1 + GlobalTargetSet(targets[1]) + return true + end + local targets = SubGroup(OppMon(),RaideenFilter) + targets = SubGroup(targets,function (c) return c.equip_count>0 end) + if #targets>0 then + table.sort(targets,function(a,b) return a.equip_count>b.equip_count end) + GlobalCardMode = 1 + GlobalTargetSet(targets[1]) + return true + end + end + if Duel.CheckTiming(TIMING_END_PHASE) + and Duel.GetCurrentChain()==0 + and HasID(AIMon(),86120751,true,FilterPosition,POS_FACEUP) -- Aleister + then + GlobalCardMode = 2 + return true + end + if Duel.CheckTiming(TIMING_END_PHASE) + and Duel.GetCurrentChain()==0 + and Duel.GetTurnPlayer()==1-player_ai + then + local filter = function(c) + return FilterCrippled(c) + and FilterPosition(c,POS_FACEUP) + and CanChangePos(c) + end + for i,c in pairs(AIMon()) do + if filter(c) then + GlobalCardMode = 1 + GlobalTargetSet(c) + return true + end + end + end + if RemovalCheckCard(c) then + if #targets1>0 + and Duel.GetTurnPlayer()==1-player_ai + then + return true + end + if HasID(AIMon(),86120751,true,FilterPosition,POS_FACEUP) -- Aleister + then + GlobalCardMode = 2 + return true + end + end +end +function ElysionFilter(c,attribute) + return Affected(c,TYPE_MONSTER,10) + and FilterAttribute(c,0x3f) -- all attributes but divine + and not attribute or FilterAttribute(c,attribute) +end +function ChainElysion(source) + if Negated(source) then return false end + local cards = SubGroup(Merge(AIMon(),AIGrave()),EidolonMonsterFilter,source) + local eidolons = {} + for i,c in pairs(cards) do + eidolons[c.attribute]=c + end + local targets = SubGroup(OppMon(),ElysionFilter) + local prio = SubGroup(targets,PriorityTarget) + --print("targets: "..#targets) + --print("priority: "..#prio) + --[[if RemovalCheckList(eidolons) + and UnchainableCheck(source.id) + then + local removal = RemovalCheckList(eidolons) + for attribute,c in removal, do + if FilterLocation(c,LOCATION_ONFIELD) + and CardsMatchingFilter(targets,FilterAttribute,attribute)>1]] + if RemovalCheckCard(source) + and #targets>0 + then + return true + end + for i,c in pairs(AIMon()) do + if EidolonMonsterFilter(c,source) + and RemovalCheckCard(c) + and CardsMatchingFilter(targets,FilterAttribute,c.attribute)>1 + then + GlobalCardMode = 1 + GlobalTargetSet(c) + return true + end + end + if UnchainableCheck(source.id) + and Duel.GetTurnPlayer()==1-player_ai + then + local phasemod = 0 + if Duel.CheckTiming(TIMING_END_PHASE) then + phasemod = 1 + end + for attribute,c in pairs(eidolons) do + if FilterLocation(c,LOCATION_GRAVE) + and CardsMatchingFilter(targets,FilterAttribute,attribute) + +CardsMatchingFilter(prio,FilterAttribute,attribute)*2>2-phasemod + then + GlobalCardMode = 1 + GlobalTargetSet(c) + return true + end + if FilterLocation(c,LOCATION_MZONE) + and CardsMatchingFilter(targets,FilterAttribute,attribute) + +CardsMatchingFilter(prio,FilterAttribute,attribute)*2>3-phasemod + then + GlobalCardMode = 1 + GlobalTargetSet(c) + return true + end + end + if #prio*2+#targets>3-phasemod then + return true + end + local aimon,oppmon = GetBattlingMons() + if IsBattlePhase() + and aimon and oppmon + and WinsBattle(oppmon,aimon) + then + for attribute,c in pairs(eidolons) do + if FilterLocation(c,LOCATION_GRAVE) + and FilterAttribute(c,oppmon:GetAttribute()) + and ElysionFilter(oppmon) + then + GlobalCardMode = 1 + GlobalTargetSet(c) + return true + end + end + if EidolonMonsterFilter(aimon,source) + and CardsMatchingFilter(targets,FilterAttribute,attribute)>0 + then + GlobalCardMode = 1 + GlobalTargetSet(aimon) + return true + end + if CardsEqual(aimon,source) + and #targets>0 + then + return true + end + end + end +end +function ChainSanctumEidolon(c) + if Negated(c) then return false end + local targets = SubGroup(OppField(),MoralltachFilter) + local prio = SubGroup(targets,PriorityTarget) + if (UnchainableCheck(c) + or RemovalCheckCard(c)) + and #prio>0 + and HasIDNotNegated(AIDeck(),85103922,true) -- Moralltach + then + GlobalCardMode = 1 + GlobalSanctumID = 85103922 -- Moralltach + return true + end + if (UnchainableCheck(c) + or RemovalCheckCard(c)) + and Duel.GetTurnPlayer()==1-player_ai + and IsMainPhase() + and HasIDNotNegated(AIDeck(),20292186,true) -- Scythe + and ScytheCheck() + then + GlobalCardMode = 1 + GlobalSanctumID = 20292186 -- Scythe + return true + end + if IsBattlePhase() + and (UnchainableCheck(c) + or RemovalCheckCard(c)) + and HasIDNotNegated(AIDeck(),85103922,true) -- Moralltach + then + local aimon, oppmon = GetBattlingMons() + if WinsBattle(oppmon,aimon) + and MoralltachFilter(oppmon) + then + GlobalCardMode = 1 + GlobalSanctumID = 85103922 -- Moralltach + return true + end + end + if Duel.CheckTiming(TIMING_END_PHASE) + and Duel.GetTurnPlayer()==1-player_ai + and CanSpecialSummon() + and Duel.GetCurrentChain()==0 + then + if HasIDNotNegated(AIDeck(),85103922,true) -- Moralltach + and #targets>0 + then + GlobalCardMode = 1 + GlobalSanctumID = 85103922 -- Moralltach + return true + end + if HasIDNotNegated(AIDeck(),20292186,true) -- Scythe + and CardsMatchingFilter(Merge(AICards(),AIGrave(),OppGrave()),FilterAttribute,ATTRIBUTE_LIGHT)==0 + then + GlobalCardMode = 1 + GlobalSanctumID = 20292186 -- Scythe + return true + end + end + if RemovalCheckCard(c) then + return true + end +end +function ChainTwinTwister(c,mode) + local targets = DestroyCheck(OppST()) + local facedown = DestroyCheck(OppST(),nil,nil,nil,FilterPosition,POS_FACEDOWN) + local prio = HasPriorityTarget(OppST(),true) + local endphase = CardsMatchingFilter(OppST(),MSTEndPhaseFilter) + local scythe = CardsMatchingFilter(AIST(),FilterID,20292186) -- Scythe + local moralltach = CardsMatchingFilter(AIST(),FilterID,85103922) -- Moralltach + local artifacts = scythe+moralltach + if not (CanSpecialSummon() + and SpaceCheck()>0 + and Duel.GetTurnPlayer()==1-player_ai) + then + scythe = 0 + moralltach = 0 + artifacts = 0 + end + if RemovalCheckCard(c) + then + return targets>1 or targets>0 + and (PriorityCheck(AIHand(),PRIO_TOGRAVE)>3 + or artifacts>0) + end + if not UnchainableCheck(c) then + return false + end + if scythe>0 + and ScytheCheck() + and targets>0 + then + GlobalTwinTwisterTarget = FindID(20292186,AIST()) + return true + end + if Duel.CheckTiming(TIMING_END_PHASE) + and Duel.GetCurrentChain()==0 + and endphase>0 + and (targets>1 + or targets>0 and artifacts>0) + then + GlobalTwinTwisterTarget = MSTEndPhaseFilter + return true + end + if Duel.GetTurnPlayer()==1-player_ai + and prio + and (targets>1 or artifacts>0) + then + return true + end + local target = RemoveOnActivation(nil,MSTFilter) + if target and (targets>1 or artifacts>0) then + GlobalTwinTwisterTarget = target + return true + end +end +EidolonChainFunctions={ +[43722862] = ChainIceBell, +[71007216] = ChainGlassBell, +[86120751] = ChainAleister, +[49513164] = ChainRaideen, +[11270236] = ChainElysion, +[12444060] = ChainSanctumEidolon, +} +function EidolonChain(cards) + for id,v in pairs(EidolonChainFunctions) do + if HasID(cards,id,v) then + return Chain() + end + end +end +function EidolonEffectYesNo(id,card) + for i,v in pairs(EidolonChainFunctions) do + if id == i + and NotNegated(card) + then + return v(card) + end + end + return result +end +function EidolonSum(cards,sum,card) +end +function EidolonYesNo(desc) + if desc == 43722862*16+1 then -- Ice Bell + if CanSpecialSummon() then + return 1 + end + return 0 + end +end +function EidolonTribute(cards,min, max) +end +function EidolonBattleCommand(cards,targets,act) + -- Purgatorio + if HasID(cards,12307878,CanWinBattle,targets) then + return Attack() + end +end +function EidolonAttackTarget(cards,attacker) +end +function EidolonAttackBoost(cards) + -- Aleister + local count = CardsMatchingFilter(AIHand(),FilterID,86120751) -- Aleister + if count>0 then + for j,c in pairs(cards) do + if EidolonMonsterFilter(c) + and Affected(c,TYPE_MONSTER,4) + and Targetable(c,TYPE_MONSTER) + and CurrentOwner(c)==1 + and MacroCheck() + then + c.attack=c.attack+1000*count + c.bonus=(c.bonus or 0)+1000*count + end + end + end +end +function EidolonOption(options) +end +function EidolonChainOrder(cards) + local result = {} + for i,c in pairs(cards) do + c.index = i + end + if HasID(cards,43722862,true) -- Wind Witch Ice Bell + and HasID(cards,71007216,true) -- Wind Witch Glass Bell + then + for i,c in pairs(cards) do + if c.id == 71007216 then -- Wind Witch Glass Bell + result[#result+1] = c.index + table.remove(cards,i) + end + end + for i,c in pairs(cards) do + if c.id == 43722862 then -- Wind Witch Ice Bell + result[#result+1] = c.index + table.remove(cards,i) + end + end + end + for i,c in pairs(cards) do + result[#result+1] = c.index + end + return result +end +EidolonAtt={ +20292186, -- Artifact Scythe +85103922, -- Artifact Moralltach +71007216, -- Wind Witch Glass Bell + +11270236, -- Elysion +75286621, -- Merkabah +48791583, -- Magallanica +12307878, -- Purgatorio +49513164, -- Raideen +50954680, -- Crystal Wing +82044279, -- Clear Wing +14577226, -- Wind Witch Winter Bell +56832966, -- Utopia Lightning +84013237, -- Utopia +} +EidolonVary={ +} +EidolonDef={ +43722862, -- Wind Witch Ice Bell +23434538, -- Maxx "C" +70117860, -- Wind Witch Snow Bell + +85908279, -- Cocytus +13529466, -- Caligula +} +function EidolonPosition(id,available) + result = nil + for i=1,#EidolonAtt do + if EidolonAtt[i]==id + then + result=POS_FACEUP_ATTACK + end + end + for i=1,#EidolonVary do + if EidolonVary[i]==id + then + if (BattlePhaseCheck() or IsBattlePhase()) + and Duel.GetTurnPlayer()==player_ai + then + result=POS_FACEUP_ATTACK + else + result=POS_FACEUP_DEFENSE + end + end + end + for i=1,#EidolonDef do + if EidolonDef[i]==id + then + result=POS_FACEUP_DEFENSE + end + end + return result +end + +function AleisterCond(loc,c) + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + and (CardsMatchingFilter(AIHand(),FilterID,c.id)>1 + or HasIDNotNegated(AICards(),74063034,true)) -- Eidolon Summon + then + return true + end + return false + end + return true +end +function SnowBellCond(loc,c) + if loc == PRIO_TOHAND then + if CardsMatchingFilter(AIMon(),WindWitchFilter)==2 + and CardsMatchingFilter(AIMon(),FilterTuner)==1 + and CanSpecialSummon() + then + return true + end + return false + end + return true +end +EidolonPriorityList={ +--[12345678] = {1,1,1,1,1,1,1,1,1,1,XXXCond}, -- Format + +-- Eidolon + +[20292186] = {1,1,1,1,5,1,1,1,3,1,ScytheCond}, -- Artifact Scythe +[85103922] = {1,1,1,1,4,1,1,1,3,1,MoralltachCond}, -- Artifact Moralltach +[71007216] = {2,1,4,1,1,1,1,1,3,1,GlassBellCond}, -- Wind Witch Glass Bell +[86120751] = {5,1,5,1,7,1,1,1,6,1,AleisterCond}, -- Aleister +[43722862] = {5,1,2,1,1,1,1,1,4,1,IceBellCond}, -- Wind Witch Ice Bell +[23434538] = {1,1,1,1,1,1,1,1,5,1,MaxxCond}, -- Maxx "C" +[70117860] = {7,1,3,1,1,1,1,1,6,1,SnowBellCond}, -- Wind Witch Snow Bell + +[01845204] = {1,1,1,1,1,1,1,1,1,1,IFCond}, -- Instant Fusion +[73628505] = {1,1,1,1,1,1,1,1,1,1,TerraformingCond}, -- Terraforming +[74063034] = {1,1,1,1,1,1,1,1,1,1,SummoningMagicCond}, -- Eidolon Summoning Magic +[67775894] = {1,1,1,1,1,1,1,1,1,1,WonderWandCond}, -- Wonder Wand +[47679935] = {1,1,1,1,1,1,1,1,1,1,RecklessCircleCond}, -- Reckless Magic Circle + +[12444060] = {1,1,1,1,1,1,1,1,1,1,SanctumCond}, -- Artifact Sanctum +[05851097] = {1,1,1,1,1,1,1,1,1,1,VanityCond}, -- Vanity +[40605147] = {1,1,1,1,1,1,1,1,1,1,StrikeCond}, -- Strike +[84749824] = {1,1,1,1,1,1,1,1,1,1,WarningCond}, -- Warning +[43898403] = {1,1,1,1,1,1,1,1,1,1,TwiTwiCond}, -- Twin Twister + +[11270236] = {1,1,1,1,1,1,1,1,1,1,ElysionCond}, -- Elysion +[75286621] = {1,1,1,1,1,1,1,1,1,1,MerkabahCond}, -- Merkabah +[48791583] = {1,1,1,1,1,1,1,1,1,1,MagallanicaCond}, -- Magallanica +[12307878] = {1,1,1,1,1,1,1,1,1,1,PurgatorioCond}, -- Purgatorio +[85908279] = {1,1,1,1,1,1,1,1,1,1,CocytusCond}, -- Cocytus +[49513164] = {1,1,1,1,1,1,1,1,1,1,RaideenCond}, -- Raideen +[13529466] = {1,1,1,1,1,1,1,1,5,1,CaligulaCond}, -- Caligula +[50954680] = {1,1,1,1,1,1,1,1,1,1,CrystalWingCond}, -- Crystal Wing +[82044279] = {1,1,1,1,1,1,1,1,1,1,ClearWingCond}, -- Clear Wing +[14577226] = {1,1,1,1,1,1,1,1,1,1,WinterBellCond}, -- Wind Witch Winter Bell +[56832966] = {1,1,1,1,1,1,1,1,1,1,LightningCond}, -- Utopia Lightning +[84013237] = {1,1,1,1,1,1,1,1,1,1,UtopiaCond}, -- Utopia +} + diff --git a/ai/decks/FireFist.lua b/ai/decks/FireFist.lua index ea57c1cb..7d2cfd7d 100644 --- a/ai/decks/FireFist.lua +++ b/ai/decks/FireFist.lua @@ -790,8 +790,9 @@ function ChainTenken() end function ChainMaxxC() for i=1,Duel.GetCurrentChain() do - if Duel.GetOperationInfo(Duel.GetCurrentChain(), CATEGORY_SPECIAL_SUMMON) - and Duel.GetChainInfo(Duel.GetCurrentChain(), CHAININFO_TRIGGERING_PLAYER)~=player_ai + if Duel.GetOperationInfo(i,CATEGORY_SPECIAL_SUMMON) + and Duel.GetChainInfo(i,CHAININFO_TRIGGERING_PLAYER)~=player_ai + and CheckNegated(i) then return true end diff --git a/ai/decks/Fluffal.lua b/ai/decks/Fluffal.lua new file mode 100644 index 00000000..1712c67d --- /dev/null +++ b/ai/decks/Fluffal.lua @@ -0,0 +1,1143 @@ +require("ai.decks.Fluffal.FluffalFilter") +require("ai.decks.Fluffal.FluffalCond") +require("ai.decks.Fluffal.FluffalSummon") +require("ai.decks.Fluffal.FluffalMaterial") +require("ai.decks.Fluffal.FluffalUse") +require("ai.decks.Fluffal.FluffalTarget") +require("ai.decks.Fluffal.FluffalChain") +require("ai.decks.Fluffal.FluffalBattle") + +function FluffalStartup(deck) + print("AI_Fluffal v0.0.2.0.5 by neftalimich.") + deck.Init = FluffalInit + deck.Card = FluffalCard + deck.Chain = FluffalChain + deck.ChainOrder = FluffalChainOrder + deck.EffectYesNo = FluffalEffectYesNo + deck.YesNo = FluffalYesNo + deck.Position = FluffalPosition + deck.BattleCommand = FluffalBattleCommand + deck.AttackTarget = FluffalAttackTarget + deck.AttackBoost = FluffalAttackBoost + + --[[ + deck.Option + deck.Sum + deck.Tribute + deck.DeclareCard + deck.Number + deck.Attribute + deck.MonsterType + ]] + + deck.ActivateBlacklist = FluffalActivateBlacklist + deck.SummonBlacklist = FluffalSummonBlacklist + deck.SetBlacklist = FluffalSetBlacklist + deck.RepositionBlacklist = FluffalRepositionBlacklist + deck.Unchainable = FluffalUnchainable + + deck.PriorityList = FluffalPriorityList + + -- DEBUG + --[[ + local e0=Effect.GlobalEffect() + e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e0:SetCode(EVENT_CHAIN_SOLVED) + e0:SetOperation(function(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(player_ai,LOCATION_HAND,0) + --Duel.ConfirmCards(1-player_ai,g) + end) + Duel.RegisterEffect(e0,0) + local e1=e0:Clone() + e1:SetCode(EVENT_TO_HAND) + Duel.RegisterEffect(e1,0) + local e2=e0:Clone() + e2:SetCode(EVENT_PHASE_START+PHASE_MAIN1) + Duel.RegisterEffect(e2,0) + local e3=Effect.GlobalEffect() + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_PUBLIC) + e3:SetTargetRange(LOCATION_HAND,0) + Duel.RegisterEffect(e3,player_ai) + --]] +end + +FluffalIdentifier = {03841833,72413000} + +DECK_FLUFFAL = NewDeck("Fluffal",FluffalIdentifier,FluffalStartup) + +FluffalActivateBlacklist={ +39246582, -- Fluffal Dog +13241004, -- Fluffal Penguin +03841833, -- Fluffal Bear +65331686, -- Fluffal Owl +98280324, -- Fluffal Sheep +87246309, -- Fluffal Octo +02729285, -- Fluffal Cat +38124994, -- Fluffal Rabit +06142488, -- Fluffal Mouse +72413000, -- Fluffal Wings +81481818, -- Fluffal Patchwork + +97567736, -- Edge Imp Tomahawk +61173621, -- Edge Imp Chain +30068120, -- Edge Imp Sabres +10802915, -- Tour Guide from the Underworld +79109599, -- King of the Swamp +06205579, -- Parasite Fusioner +67441435, -- Glow-Up Bulb + +70245411, -- Toy Vendor +06077601, -- Frightfur Fusion +43698897, -- Frightfur Factory +34773082, -- Frightfur Patchwork +28039390, -- Frightfur Reborn +01845204, -- Instant Fusion +24094653, -- Polymerization +94820406, -- Dark Fusion +05133471, -- Galaxy Cyclone +35726888, -- Foolish Burial of Belongings +43455065, -- Magical Spring +43898403, -- Twin Twister +12580477, -- Raigeki +07394770, -- Brilliant Fusion +18895832, -- System Down + +66127916, -- Fusion Reserve +98954106, -- Jar of Avarice +51452091, -- Royal Decree + +91034681, -- Frightfur Daredevil +80889750, -- Frightfur Sabre-Tooth +40636712, -- Frightfur Kraken +10383554, -- Frightfur Leo +85545073, -- Frightfur Bear +11039171, -- Frightfur Wolf +00464362, -- Frightfur Tiger +57477163, -- Frightfur Sheep +41209827, -- Starve Venom Fusion Dragon +42110604, -- Hi-Speedroid Chanbara +90809975, -- Toadally Awesome +83531441, -- Dante +} +FluffalSummonBlacklist={ +39246582, -- Fluffal Dog +13241004, -- Fluffal Penguin +03841833, -- Fluffal Bear +65331686, -- Fluffal Owl +98280324, -- Fluffal Sheep +87246309, -- Fluffal Octo +02729285, -- Fluffal Cat +38124994, -- Fluffal Rabit +06142488, -- Fluffal Mouse +72413000, -- Fluffal Wings +81481818, -- Fluffal Patchwork +97567736, -- Edge Imp Tomahawk +61173621, -- Edge Imp Chain +30068120, -- Edge Imp Sabres +10802915, -- Tour Guide from the Underworld +79109599, -- King of the Swamp +06205579, -- Parasite Fusioner +67441435, -- Glow-Up Bulb + +91034681, -- Frightfur Daredevil +80889750, -- Frightfur Sabre-Tooth +40636712, -- Frightfur Kraken +10383554, -- Frightfur Leo +85545073, -- Frightfur Bear +11039171, -- Frightfur Wolf +00464362, -- Frightfur Tiger +57477163, -- Frightfur Sheep +41209827, -- Starve Venom Fusion Dragon +42110604, -- Hi-Speedroid Chanbara +83531441, -- Dante +} +FluffalSetBlacklist={ +70245411, -- Toy Vendor +06077601, -- Frightfur Fusion +43698897, -- Frightfur Factory +34773082, -- Frightfur Patchwork +28039390, -- Frightfur Reborn +01845204, -- Instant Fusion +24094653, -- Polymerization +94820406, -- Dark Fusion +05133471, -- Galaxy Cyclone +35726888, -- Foolish Burial of Belongings +12580477, -- Raigeki +07394770, -- Brilliant Fusion +18895832, -- System Down + +51452091, -- Royal Decree +} +FluffalRepositionBlacklist={ +98280324, -- Fluffal Sheep +02729285, -- Fluffal Cat +38124994, -- Fluffal Rabit +06142488, -- Fluffal Mouse +72413000, -- Fluffal Wings +81481818, -- Fluffal Patchwork +79109599, -- King of the Swamp +06205579, -- Parasite Fusioner +67441435, -- Glow-Up Bulb +} +FluffalUnchainable={ +43455065, -- Magical Spring +66127916, -- Fusion Reserve +98954106, -- Jar of Avarice +} + +GlobalFluffalPercent = 0.0 +GlobalCanFusionSummon = false +GlobalEffectId = 0 +function FluffalInit(cards,to_bp_allowed,to_ep_allowed) -- FLUFFAL INIT + local Act = cards.activatable_cards + local Sum = cards.summonable_cards + local SpSum = cards.spsummonable_cards + local Rep = cards.repositionable_cards + local SetMon = cards.monster_setable_cards + local SetST = cards.st_setable_cards + + -- GLOBAL + GlobalPenguin = 0 + GlobalOwl = 0 + GlobalSabres = 0 + GlobalTVendor = 0 + GlobalEffectId = 0 + GlobalSummonId = 0 + GlobalFusionId = 0 + GlobalPolymerization = 0 + GlobalDFusion = 0 + GlobalFFusion = 0 + GlobalFluffalMaterial = 0 + GlobalEdgeImpMaterial = 0 + GlobalCanFusionSummon = false + + -- GLOBAL INIT + --print("--1") + GlobalFluffalPercent = CountFluffal(AIDeck()) / #AIDeck() + --print("FluffalPercent: ",(GlobalFluffalPercent * 100).." %") + if CardsMatchingFilter(Act,FluffalFusionSTFilter2) > 0 + then + GlobalCanFusionSummon = true + end + if HasIDNotNegated(Act,18895832) -- System Down + and CardsMatchingFilter(UseLists({OppMon(),OppGrave()}),FilterRace,RACE_MACHINE) > 3 + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + --print("--2") + -- FLUFFAL KAIJU + if CardsMatchingFilter(OppMon(),BossMonFilter) > 0 then + FluffalSpSumKaiju(cards.spsummonable_cards) + end + --print("--3") + -- FLUFFAL VS VANITY'S EMPTINESS + if CardsMatchingFilter(OppST(),VanityFilter) > 0 then + local vanity = FluffalVsVanity(cards,to_bp_allowed,to_ep_allowed) + if vanity then + return {vanity[1],vanity[2]} + end + return nil + end + --print("--4") + -- FLUFFAL VS DARKLAW + GlobalDarkLaw = 0 + if HasID(OppMon(),50720316,true) -- ShadowMist + and CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) > 0 + then + if HasIDNotNegated(Act,12580477) -- Raigeki + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Sum,97567736,SummonTomahawk) then + return {COMMAND_SUMMON,CurrentIndex} + end + return nil + end + if HasIDNotNegated(OppMon(),58481572,true) -- DarkLaw + then + GlobalDarkLaw = 1 + local darklaw = FluffalVsDarkLaw(cards,to_bp_allowed,to_ep_allowed) + if darklaw then + return {darklaw[1],darklaw[2]} + end + return nil + end + --print("--5") + -- FLUFFAL VS MACRO + --if MacroCheck() then -- Is not working + --local macro = FluffalVsMacro(cards,to_bp_allowed,to_ep_allowed) + --if macro then + --return {macro[1],macro[2]} + --end + --end + --print("--6") + -- FLUFFAL VS EXTRA DECK BLOCKED + if CardsMatchingFilter(OppField(),ExtraDeckBlockedFilter) > 0 then + local extra = FluffalVsExtraBlocked(cards,to_bp_allowed,to_ep_allowed) + if extra then + return {extra[1],extra[2]} + end + return nil + end + --print("--7") + -- FLUFFAL PRINCIPAL + local principal = FluffalPrincipal(cards,to_bp_allowed,to_ep_allowed) + if principal then + return {principal[1],principal[2]} + end + --print("--8") + -- FLUFFAL REPOSITION + if HasIDNotNegated(Rep,80889750,RepFSabreTooth) then + return {COMMAND_CHANGE_POS,CurrentIndex} + end + if HasIDNotNegated(Rep,40636712,RepFKraken) then + return {COMMAND_CHANGE_POS,CurrentIndex} + end + if HasIDNotNegated(Rep,57477163,RepFSheep) then + return {COMMAND_CHANGE_POS,CurrentIndex} + end + if HasIDNotNegated(Rep,83531441,RepDante) then + return {COMMAND_CHANGE_POS,CurrentIndex} + end + --print("--9") + -- TURN END + if TurnEndCheck() then + -- ACTIVE END + if HasIDNotNegated(SpSum,98280324,SpSummonSheepEnd) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Act,98280324,UseSheepEnd) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,03841833,UseBearPoly) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + -- SET ST END + if HasID(SetST,66127916) then -- FReserve + return {COMMAND_SET_ST,CurrentIndex} + end + if HasID(SetST,51452091,SetRDecree) then + return {COMMAND_SET_ST,CurrentIndex} + end + -- SET MON END + if HasIDNotNegated(SetMon,61173621,SetChain) then + return {COMMAND_SET_MONSTER,CurrentIndex} + end + if HasIDNotNegated(SetMon,30068120,SetSabres) then + return {COMMAND_SET_MONSTER,CurrentIndex} + end + if HasIDNotNegated(SetMon,72413000,SetFluffal) then -- Wings + return {COMMAND_SET_MONSTER,CurrentIndex} + end + if HasIDNotNegated(SetMon,98280324,SetFluffal) -- Sheep + and AI.GetPlayerLP(1) < 6000 + then + return {COMMAND_SET_MONSTER,CurrentIndex} + end + end + --print("--END") + return nil +end + +--[[ +39246582, -- Fluffal Dog +13241004, -- Fluffal Penguin +03841833, -- Fluffal Bear +65331686, -- Fluffal Owl +98280324, -- Fluffal Sheep +02729285, -- Fluffal Cat +38124994, -- Fluffal Rabit +06142488, -- Fluffal Mouse +72413000, -- Fluffal Wings +81481818, -- Fluffal Patchwork +87246309, -- Fluffal Octo +97567736, -- Edge Imp Tomahawk +61173621, -- Edge Imp Chain +30068120, -- Edge Imp Sabres +10802915, -- Tour Guide from the Underworld +79109599, -- King of the Swamp +06205579, -- Parasite Fusioner +67441435, -- Glow-Up Bulb + +70245411, -- Toy Vendor +06077601, -- Frightfur Fusion +43698897, -- Frightfur Factory +34773082, -- Frightfur Patchwork +28039390, -- Frightfur Reborn +01845204, -- Instant Fusion +24094653, -- Polymerization +94820406, -- Dark Fusion +05133471, -- Galaxy Cyclone +35726888, -- Foolish Burial of Belongings +43455065, -- Magical Spring +43898403, -- Twin Twister +12580477, -- Raigeki + +66127916, -- Fusion Reserve +98954106, -- Jar of Avarice +51452091, -- Royal Decree + +80889750, -- Frightfur Sabre-Tooth +40636712, -- Frightfur Kraken +10383554, -- Frightfur Leo +85545073, -- Frightfur Bear +11039171, -- Frightfur Wolf +00464362, -- Frightfur Tiger +57477163, -- Frightfur Sheep +41209827, -- Starve Venom Fusion Dragon +42110604, -- Hi-Speedroid Chanbara +83531441, -- Dante +]] +------------------------ +------- PRINCIPAL ------ +------------------------ +function FluffalPrincipal(cards,to_bp_allowed,to_ep_allowed) + --print("PRINCIPAL") + local Act = cards.activatable_cards + local Sum = cards.summonable_cards + local SpSum = cards.spsummonable_cards + local Rep = cards.repositionable_cards + local SetMon = cards.monster_setable_cards + local SetST = cards.st_setable_cards + + -- ACTIVE 0 + print("---7.0") + if HasIDNotNegated(Act,10383554,UseFLeo) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasID(Act,05133471,nil,nil,LOCATION_HAND+LOCATION_ONFIELD) + and UseGalaxyCyclone(1) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,41209827,UseFStarve) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,40636712,UseFKrakenSend) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,00440556,UseBahamutFluffal) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(SpSum,00440556,SpSummonBahamutFluffal) then + if HasIDNotNegated(Act,13241004,UsePenguin) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Act,30068120,UseSabresFPatchwork) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,07394770,false,nil,LOCATION_HAND) -- BFusion + and UseBFusion() + then + GlobalEffectId = 07394770 + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,07394770,false,nil,LOCATION_SZONE,POS_FACEDOWN) -- BFusion + and UseBFusion() + then + GlobalEffectId = 07394770 + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,01845204,UseIFusionAwesome) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,30068120,UseSabresMouse) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,06142488,UseMouse) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,34773082,UseFPatchwork) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + print("---7.1") + -- ACTIVE EFFECT PRINCIPAL + if HasIDNotNegated(Act,97567736,false,(97567736*16),UseTomahawkDamage) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,97567736,false,(97567736*16+1),UseTomahawkCopy) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,12580477) and UseRaigeki() + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,43455065,UseMSpring) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(SpSum,83531441,SpSummonDante) + and not ( + FSummonFStarve() + and HasID(UseLists({AIHand(),AIST()}),24094653,true) + ) + then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Act,13241004,UsePenguin) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,98280324,UseSheep) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,66127916,UseFReserve) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,24094653,false,nil,LOCATION_GRAVE) + and UseFSubstituteGrave(Act[CurrentIndex]) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,30068120,UseSabresNoEdgeImp) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + print("---7.2") + -- NORMAL SUMMON NO DOG + if HasIDNotNegated(Sum,65331686,SummonOwlNoFusionST) then + local CurrentIndexAux = CurrentIndex + if HasIDNotNegated(Sum,13241004,SummonPenguin) + then + return {COMMAND_SUMMON,CurrentIndex} + end + return {COMMAND_SUMMON,CurrentIndexAux} + end + if HasIDNotNegated(Sum,10802915,SummonTGuide) + and not HasID(Sum,39246582,true) + then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,87246309,SummonOcto) + and not HasID(Sum,39246582,true) + then + local CurrentIndexAux = CurrentIndex + if HasIDNotNegated(Sum,13241004,SummonPenguin) + then + return {COMMAND_SUMMON,CurrentIndex} + end + return {COMMAND_SUMMON,CurrentIndexAux} + end + print("---7.3") + -- ACTIVE TOY VENDOR PRINCIPAL + if HasIDNotNegated(Act,03841833,UseBearDiscard,1) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,35726888) and BattlePhaseCheck() then -- FBoB + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,70245411,nil,nil,LOCATION_SZONE,POS_FACEUP) -- TVendor + then + if UseTVendor(Act[CurrentIndex],true) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + if HasIDNotNegated(Act,70245411,nil,nil,LOCATION_SZONE,POS_FACEDOWN) + then + if ActiveTVendor(Act[CurrentIndex],true) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + if HasIDNotNegated(Act,72413000,UseWings) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,70245411,nil,nil,LOCATION_HAND) + then + if ActiveTVendor(Act[CurrentIndex],1) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + print("---7.4") + -- NORMAL SUMMON PRINCIPAL + if HasID(Act,43898403,UseTwinTwister) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Sum,39246582,SummonDog) then + local CurrentIndexAux = CurrentIndex + if HasIDNotNegated(Sum,13241004,SummonPenguin) + then + return {COMMAND_SUMMON,CurrentIndex} + end + return {COMMAND_SUMMON,CurrentIndexAux} + end + if HasIDNotNegated(Sum,13241004,SummonPenguinAwesome) + then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,65331686,SummonOwl) then + local CurrentIndexAux = CurrentIndex + if HasIDNotNegated(Sum,13241004,SummonPenguin) + then + return {COMMAND_SUMMON,CurrentIndex} + end + return {COMMAND_SUMMON,CurrentIndexAux} + end + print("---7.5") + -- ACTIVE 2 + if HasIDNotNegated(Act,83531441,UseDanteFluffal) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,72413000,UseWingsDisadvantage) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,79109599,UseKoS) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,03841833,UseBearPoly) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + print("---7.6") + -- NORMAL SUMMON 2 + if HasIDNotNegated(Sum,10802915,SummonTGuide) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,87246309,SummonOcto) then + local CurrentIndexAux = CurrentIndex + if HasIDNotNegated(Sum,13241004,SummonPenguin) + then + return {COMMAND_SUMMON,CurrentIndex} + end + return {COMMAND_SUMMON,CurrentIndexAux} + end + if HasIDNotNegated(Sum,97567736,SummonTomahawk) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,06142488) + and SummonMouse(2) + then + local CurrentIndexAux = CurrentIndex + if HasIDNotNegated(Sum,13241004,SummonPenguin) + then + return {COMMAND_SUMMON,CurrentIndex} + end + return {COMMAND_SUMMON,CurrentIndexAux} + end + if HasIDNotNegated(Sum,81481818,SummonPatchwork) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,06142488) + and SummonMouse(1) + then + local CurrentIndexAux = CurrentIndex + if HasIDNotNegated(Sum,13241004,SummonPenguin) + then + return {COMMAND_SUMMON,CurrentIndex} + end + return {COMMAND_SUMMON,CurrentIndexAux} + end + if HasIDNotNegated(Sum,87246309,SummonOctoDiscard) then + local CurrentIndexAux = CurrentIndex + if HasIDNotNegated(Sum,13241004,SummonPenguin) + then + return {COMMAND_SUMMON,CurrentIndex} + end + return {COMMAND_SUMMON,CurrentIndexAux} + end + if HasIDNotNegated(Sum,39246582,SummonDogEnd) then + local CurrentIndexAux = CurrentIndex + if HasIDNotNegated(Sum,13241004,SummonPenguin) + then + return {COMMAND_SUMMON,CurrentIndex} + end + return {COMMAND_SUMMON,CurrentIndexAux} + end + print("---7.7") + -- ACTIVE EFFECT SHEEP + if HasIDNotNegated(UseLists({AIHand(),AIMon()}),98280324,true) -- Sheep + and #AIMon() <= 3 + and SpSummonSheepEnd() + and CountFluffal(AIMon()) == 0 + then + for i=1,#Sum do + if not(Sum[i].id == 98280324) and FluffalFilter(Sum[i]) then + return {COMMAND_SUMMON,i} + end + end + end + print("---7.8") + -- SPECIAL SUMMON 1 + if HasIDNotNegated(SpSum,98280324,SpSummonSheep) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Act,67441435,UseBulb) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(SpSum,33198837,SpSummonNaturiaBeast) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + if HasIDNotNegated(SpSum,42110604,SpSummonChanbara) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + print("---7.9") + -- PREFUSION SUMMON + if HasIDNotNegated(Act,17194258) and BattlePhaseCheck() then -- FConscription + return {COMMAND_ACTIVATE,CurrentIndex} + end + print("---7.10") + -- ACTIVE EFFECT TOY VENDOR 2 + if HasIDNotNegated(Act,70245411,nil,nil,LOCATION_SZONE,POS_FACEUP) + then + if UseTVendor(Act[CurrentIndex],false) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + if HasIDNotNegated(Act,70245411,nil,nil,LOCATION_SZONE,POS_FACEDOWN) + then + if ActiveTVendor(Act[CurrentIndex],false) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + if HasIDNotNegated(Act,70245411,nil,nil,LOCATION_HAND) + then + if ActiveTVendor(Act[CurrentIndex],2) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + print("---7.11") + -- ACTIVE EFFECT FUSION PRINCIPAL + if HasIDNotNegated(Act,01845204,UseIFusion) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,65331686,UseOwlFusion) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,43698897,UseFFactory) + and HasID(AIGrave(),06077601,true) -- FFusion + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,43698897,ActiveFFactory) + and HasID(AIGrave(),06077601,true) -- FFusion + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,94820406,UseDFusion) then + if MaterialFSabreTooth() then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + if HasIDNotNegated(Act,24094653,false,nil,LOCATION_HAND+LOCATION_SZONE) + and UseFSubstitute(Act[CurrentIndex]) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,24094653,UsePolymerization) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,94820406,UseDFusion) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + print("---7.12") + -- ACTIVE EFFECT POST FUSION + if HasIDNotNegated(Act,66127916,UseFReserveDisadvantage) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,98954106,UseJAvarice) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + print("---7.13") + -- ACTIVE EFFECT SHEEP TOMAHAWK + if HasIDNotNegated(Act,98280324,UseSheepTomahawk) then + GlobalSheep = 1 + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(SpSum,98280324,SpSummonSheepTomahawk) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + print("---7.14") + -- ACTIVE EFFECT FUSION 2 + if HasIDNotNegated(Act,06077601,UseFFusion) + and AI.GetCurrentPhase() == PHASE_MAIN1 + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,43698897,UseFFactory) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,43698897,ActiveFFactory) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + print("---7.15") + -- ACTIVE END + if HasID(Act,05133471,nil,nil,LOCATION_GRAVE) + and UseGalaxyCyclone(2) + and ( + not FlootGateCheatCheck() + or CardsMatchingFilter(OppST(),FluffalFlootGateFilter) > 0 + ) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,28039390,UseFReborn) + and AI.GetCurrentPhase() == PHASE_MAIN1 + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + --print("---7.16") + -- NORMAL SUMMON END + if HasIDNotNegated(Sum,61173621,SummonChain) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,67441435,SummonBulb) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,30068120,SummonSabres) then + return {COMMAND_SUMMON,CurrentIndex} + end + GlobalIFusion = 0 + print("---7 END") +end + +------------------------ +------ ALTERNATIVE ----- +------------------------ +function FluffalSpSumKaiju(SpSum) + for i=1,#SpSum do + local c = SpSum[i] + if FilterSet(c,0xD3) then -- Kaiju + GlobalKaiju = 1 + return {COMMAND_SPECIAL_SUMMON,i} + end + end +end +function FluffalVsVanity(cards,to_bp_allowed,to_ep_allowed) + --print("VANITY") + local Act = cards.activatable_cards + local Sum = cards.summonable_cards + local SpSum = cards.spsummonable_cards + local Rep = cards.repositionable_cards + local SetMon = cards.monster_setable_cards + local SetST = cards.st_setable_cards + + -- VANITY ACTIVE 0 + if HasIDNotNegated(Act,12580477) and UseRaigeki() + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasID(Act,05133471,nil,nil,LOCATION_HAND+LOCATION_ONFIELD) + and UseGalaxyCyclone(1) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasID(Act,05133471,nil,nil,LOCATION_GRAVE) + and UseGalaxyCyclone(2) + and ( + not FlootGateCheatCheck() + or CardsMatchingFilter(OppST(),FluffalFlootGateFilter) > 0 + ) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasID(Act,43898403,UseTwinTwister) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,35726888) then -- FBoB + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,10383554,UseFLeo) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,41209827,UseFStarve) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,40636712,UseFKrakenSend) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + -- ACTIVE EFFECT VANITY + if HasIDNotNegated(Act,34773082,UseFPatchwork) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,97567736,false,(97567736*16),UseTomahawkDamage) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,97567736,false,(97567736*16+1),UseTomahawkCopy) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,66127916,UseFReserve) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,17194258) and BattlePhaseCheck() then -- FConscription + return {COMMAND_ACTIVATE,CurrentIndex} + end + -- VANITY ACTIVE TOY VENDOR + if HasIDNotNegated(Act,03841833,UseBearDiscard,1) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,70245411,nil,nil,LOCATION_SZONE,POS_FACEUP) -- TVendor + then + if UseTVendor(Act[CurrentIndex],1) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + if HasIDNotNegated(Act,70245411,nil,nil,LOCATION_SZONE,POS_FACEDOWN) + then + if ActiveTVendor(Act[CurrentIndex],false) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + if HasIDNotNegated(Act,72413000,UseWings) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,70245411,nil,nil,LOCATION_HAND) + then + if ActiveTVendor(Act[CurrentIndex],false) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + end + -- VANITY NORMAL SUMMON + if HasIDNotNegated(Sum,39246582,SummonDog) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,97567736,SummonTomahawk) then + return {COMMAND_SUMMON,CurrentIndex} + end + -- VANITY ACTIVE 2 + if HasIDNotNegated(Act,83531441,UseDanteFluffal) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,72413000,UseWingsDisadvantage) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,79109599,UseKoS) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + -- VANITY NORMAL SUMMON 2 + if HasIDNotNegated(Sum,87246309,SummonOcto) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,87246309,SummonOctoDiscard) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,39246582,SummonDogEnd) then + return {COMMAND_SUMMON,CurrentIndex} + end + -- VANITY NORMAL SUMMON END + if HasIDNotNegated(Sum,13241004,SummonEdgeImp) -- Penguin + then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,61173621,SummonChain) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,30068120,SummonSabres) then + return {COMMAND_SUMMON,CurrentIndex} + end + --print("END VANITY") + return nil +end +function FluffalVsDarkLaw(cards,to_bp_allowed,to_ep_allowed) + --print("DARKLAW") + local Act = cards.activatable_cards + local Sum = cards.summonable_cards + local SpSum = cards.spsummonable_cards + local Rep = cards.repositionable_cards + local SetMon = cards.monster_setable_cards + local SetST = cards.st_setable_cards + + if HasIDNotNegated(Act,12580477) -- Raigeki + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if OppGetStrongestAttack() < AIGetStrongestAttack() then + if AI.GetCurrentPhase() == PHASE_MAIN1 and to_bp_allowed then + return {COMMAND_TO_NEXT_PHASE,1} + end + end + + if HasID(Act,78474168,nil,nil,LOCATION_GRAVE) -- BreakthroughSkill + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasID(Act,78474168,nil,nil,LOCATION_ONFIELD) -- BreakthroughSkill + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,24094653,false,nil,LOCATION_HAND+LOCATION_SZONE) + and UseFSubstitute(Act[CurrentIndex]) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,24094653,UsePolymerization) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,94820406,UseDFusion) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,06077601,UseFFusion) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,79109599,UseKoS) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + + -- FLUFFAL REPOSITION + if HasIDNotNegated(Rep,40636712,RepFKraken) then + return {COMMAND_CHANGE_POS,CurrentIndex} + end + if HasIDNotNegated(Rep,57477163,RepFSheep) then + return {COMMAND_CHANGE_POS,CurrentIndex} + end + if HasIDNotNegated(Rep,83531441,RepDante) then + return {COMMAND_CHANGE_POS,CurrentIndex} + end + + return nil +end +function FluffalVsMacro(cards,to_bp_allowed,to_ep_allowed) + return nil +end +function FluffalVsExtraBlocked(cards,to_bp_allowed,to_ep_allowed) + return nil +end + +-- FluffalM +-- EdgeImp +-- Other +-- FluffalS +-- Spell +-- Trap +-- Frightfur +-- Other Fusion +-- Other XYZ + +------------------------ +------- FUNCTIONS ------ +------------------------ + +function PrioFluffalMaterial(c,mode) + local result = 0 + if mode == nil then mode = 1 end + if mode == 1 + then + if FilterLocation(c,LOCATION_MZONE) + and #AIMon() == 5 and GlobalFusionId == 80889750 -- FKraken + then + result = 4 + elseif FilterLocation(c,LOCATION_MZONE) + and #AIMon() == 2 + then + result = 2 + elseif FilterLocation(c,LOCATION_MZONE) + then + result = 1 + elseif Get_Card_Count_ID(AIHand(),c.id) > 1 + then + result = 1 + else -- HAND + result = 0 + end + if Negated(c) then + result = result + 1 + end + else + if FilterLocation(c,LOCATION_MZONE) + and #AIMon() == 5 + then + result = 4 + elseif FilterLocation(c,LOCATION_MZONE) + and #AIMon() == 4 + then + result = 2 + elseif FilterLocation(c,LOCATION_MZONE) then + result = 0 + else -- GRAVE + result = 3 + end + end + return result +end + +function PrioFrightfurMaterial(c,mode) + local result = 0 + if mode == nil then mode = 1 end + if mode == 1 + then + if Negated(c) then + result = 10 + end + else + result = 0 + end + return result +end + +function FluffalPrioMode(safemode) + local minPrio = 3 -- PrioDiscard + + if safemode == nil then safemode = true end + + if AI.GetPlayerLP(1) <= 4500 + or OppGetStrongestAttack() >= AI.GetPlayerLP(1) + then + minPrio = 2 + end + + if AI.GetPlayerLP(1) <= 2000 + or OppGetStrongestAttack() >= AI.GetPlayerLP(1) + or ExpectedDamage(1) >= AI.GetPlayerLP(1) + then + minPrio = 1 + end + + if #AIMon() <= 1 then + minPrio = minPrio - 1 + end + + if safemode and minPrio < 1 then + minPrio = 1 + end + + return minPrio +end + +function RoundCustom(num, idp) + local mult = 10^(idp or 0) + return math.floor(num * mult + 0.5) / mult +end + +function FluffalSafeSpSummon(mode) + if GlobalOppMaxxC == Duel.GetTurnCount() + then + if AIGetStrongestAttack() > OppGetStrongestAttack() then + return false + end + end + return true +end +------------------------ +-------- FILTER -------- +------------------------ + +------------------------ +--------- COND --------- +------------------------ + +------------------------ +--------- USE ---------- +------------------------ + +------------------------ +-------- SUMMON -------- +------------------------ + +------------------------ +------- MATERIAL ------- +------------------------ + +------------------------ +-------- TARGET -------- +------------------------ + +------------------------ +-------- CHAIN --------- +------------------------ + +------------------------ +-------- BATTLE -------- +------------------------ \ No newline at end of file diff --git a/ai/decks/Fluffal/FluffalBattle.lua b/ai/decks/Fluffal/FluffalBattle.lua new file mode 100644 index 00000000..acc06a12 --- /dev/null +++ b/ai/decks/Fluffal/FluffalBattle.lua @@ -0,0 +1,494 @@ +------------------------ +-------- BATTLE -------- +------------------------ +FluffalAtt={ +39246582, -- Fluffal Dog +13241004, -- Fluffal Penguin +97567736, -- Edge Imp Tomahawk + +91034681, -- Frightfur Daredevil +80889750, -- Frightfur Sabre-Tooth +40636712, -- Frightfur Kraken +10383554, -- Frightfur Leo +85545073, -- Frightfur Bear +11039171, -- Frightfur Wolf +00464362, -- Frightfur Tiger +57477163, -- Frightfur Sheep +41209827, -- Starve Venom Fusion Dragon +42110604, -- Hi-Speedroid Chanbara +83531441, -- Dante +} +FluffalDef={ +98280324, -- Fluffal Sheep +87246309, -- Fluffal Octo +02729285, -- Fluffal Cat +38124994, -- Fluffal Rabit +06142488, -- Fluffal Mouse +72413000, -- Fluffal Wings +81481818, -- Fluffal Patchwork +79109599, -- King of the Swamp +06205579, -- Parasite Fusioner +67441435, -- Glow-Up Bulb +} +function FluffalPosition(id,available) -- FLUFFAL POSITION + result = nil + for i=1,#FluffalAtt do + if FluffalAtt[i]==id + then + result = POS_FACEUP_ATTACK + end + end + for i=1,#FluffalDef do + if FluffalDef[i]==id + then + result = 4 -- POS_FACEUP_DEFENSE? + end + end + + if id == 57477163 and GlobalIFusion == 1 then -- FSheep by IFusion + return 4 -- POS_FACEUP_DEFENSE? + end + + if id == 57477163 then -- FSheep + local frightfurAtk = 2000 + FrightfurBoost(id) + --print("FSheep - Atk: "..frightfurAtk) + if FluffalCanAttack(OppMon(),frightfurAtk) == 0 + and FluffalCannotAttack(OppMon(),frightfurAtk,FilterPosition,POS_FACEUP_ATTACK) > 0 + and frightfurAtk < 3200 + then + result = 4 -- POS_FACEUP_DEFENSE? + else + result = 1 -- POS_FACEUP_ATTACK + end + end + + if id == 40636712 then -- FKraken + local frightfurAtk = 2200 + FrightfurBoost(40636712) + print("FKraken Atk: "..frightfurAtk) + if frightfurAtk < 3000 + and #OppMon() == 1 + and CardsMatchingFilter(OppMon(),FKrakenSendFilter) > 0 + and AIGetStrongestAttack() <= OppGetStrongestAttDef() + and frightfurAtk <= OppGetStrongestAttDef() + or + #OppMon() > 1 + and FluffalCanAttack(OppMon(),frightfurAtk) == 0 + or + not BattlePhaseCheck() + and frightfurAtk < 3000 + then + result = 4 -- POS_FACEUP_DEFENSE? + end + end + + if (not BattlePhaseCheck() or AI.GetCurrentPhase() == PHASE_MAIN2) + and ( + id == 65331686 -- Owl + or id == 61173621 -- Chain + or id == 30068120 -- Sabres + or id == 40636712 -- FKraken + or id == 83531441 -- Dante + ) + then + result = 4 -- POS_FACEUP_DEFENSE? + end + + if id == 03113836 -- GKSeraphinite + and GlobalEffectId == 07394770 -- BFusion + then + result = 4 + end + return result +end + +function FluffalBattleCommand(cards,activatable) -- FLUFFAL BATTLE COMMAND + ApplyATKBoosts(cards) + for i=1,#cards do + cards[i].index = i + end + + local targets = OppMon() + local attackable = {} + local mustattack = {} + for i=1,#targets do + if targets[i]:is_affected_by(EFFECT_CANNOT_BE_BATTLE_TARGET)==0 then + attackable[#attackable+1]=targets[i] + end + if targets[i]:is_affected_by(EFFECT_MUST_BE_ATTACKED)>0 then + mustattack[#mustattack+1]=targets[i] + end + end + + if #mustattack>0 then + targets = mustattack + else + targets = attackable + end + ApplyATKBoosts(targets) + -- Frightfur Attack + if HasIDNotNegated(cards,57477163) -- FSheep + and CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) > 0 + and ( + CanWinBattle(cards[CurrentIndex],targets,false,false) + or #targets == 0 + ) + then + return Attack(IndexByID(cards,57477163)) + end + if HasIDNotNegated(cards,85545073) -- FBear + and CanWinBattle(cards[CurrentIndex],targets,true,false) + then + return Attack(IndexByID(cards,85545073)) + end + if HasIDNotNegated(cards,10383554) -- FLeo + and CanWinBattle(cards[CurrentIndex],targets,false,false) + then + return Attack(IndexByID(cards,10383554)) + end + if HasIDNotNegated(cards,40636712) -- FKraken + and CanWinBattle(cards[CurrentIndex],targets,false,false) + and cards[CurrentIndex]:is_affected_by(EFFECT_CANNOT_DIRECT_ATTACK) > 0 + then + return Attack(IndexByID(cards,40636712)) + end + if HasIDNotNegated(cards,57477163) -- FSheep + and ( + CanWinBattle(cards[CurrentIndex],targets,false,false) + or #targets == 0 + ) + then + return Attack(IndexByID(cards,57477163)) + end + if HasIDNotNegated(cards,91034681) -- FDaredevil + and CanWinBattle(cards[CurrentIndex],targets,false,false) + and CardsMatchingFilter(targets,FilterPosition,POS_DEFENSE) == #targets + then + return Attack(IndexByID(cards,91034681)) + end + if HasIDNotNegated(cards,80889750) -- FSabreTooth + and CanWinBattle(cards[CurrentIndex],targets,false,false) + and CardsMatchingFilter(targets,FilterPosition,POS_ATTACK) == #targets + then + return Attack(IndexByID(cards,80889750)) + end + + return nil +end + +function FluffalAttackTarget(cards,attacker) -- FLUFFAL ATTACK TARGET + local id = attacker.id + local result ={attacker} + --print("1",attacker.id,attacker.attack,attacker.bonus) + result = {} + local atk = attacker.attack + if NotNegated(attacker) then + -- Frightfur Sheep + if id == 57477163 and CanWinBattle(attacker,cards,true,false) then + return FrighfurAttackTarget(cards,attacker,false) + end + end + return nil +end + +function FluffalAttackBoost(cards) -- FLUFFAL BOOST + for i=1,#cards do + local c = cards[i] + if c.id == 42110604 then -- Chanbara + c.attack = c.attack + 200 + end + if c.id == 57477163 then -- FSheep + local boost = FrightfurBoost(0) + if c.attack - boost == c.base_attack + and OPTCheck(57477163) + and AI.GetPlayerLP(1) > 800 + and CardsMatchingFilter(OppMon(),FilterPosition,POS_FACEUP_ATTACK) > 0 + then + c.bonus = 800 + c.attack = c.attack + 800 + end + end + end +end + +-- ATTACK FUNCTIONS +function FrighfurAttackTarget(cards,source,ignorebonus,filter,opt) + local atk = source.attack + local bonus = 0 + --print("3",source.id,source.attack,source.bonus) + if source.bonus and source.bonus > 0 then + bonus = source.bonus + end + if ignorebonus then + atk = math.max(0,atk - bonus) + end + local result = nil + for i=1,#cards do + local c = cards[i] + c.index = i + c.prio = 0 + if FilterPosition(c,POS_FACEUP_ATTACK) then + if c.attackc.attack + then + c.prio = 1 + else + c.prio = c.attack + end + else + c.prio = c.attack * -1 + end + -- FSheep own boost + if source.id == 57477163 + and OPTCheck(57477163) + then + if c.attack >= atk-bonus and c.attack <= atk + then + c.prio = c.attack * 9999 - (atk-c.attack) + end + end + end + if FilterPosition(c,POS_DEFENSE) then + -- FSheep own boost + if source.id == 57477163 + and bonus == 800 + then + if FilterPublic(c) then + if c.defense<(atk-bonus) then + c.prio = math.max(c.defense - 1,c.attack) + else + c.prio = (atk-bonus) - c.defense + end + end + else + if FilterPublic(c) then + if c.defense0 and not BattleTargetCheck(c,source) then + c.prio = -4 + end + if not AttackBlacklistCheck(c,source) then + c.prio = (c.prio or 0)-99999 + end + if CanFinishGame(source,c) then + c.prio=99999 + end + if FilterPosition(c,POS_DEFENSE) and FilterPrivate(c) then + if atk>=1500 then + c.prio = -1 + else + c.prio = -2 + end + end + if c.prio and c.prio>0 and FilterPublic(c) then + if FilterType(c,TYPE_SYNCHRO+TYPE_RITUAL+TYPE_XYZ+TYPE_FUSION) then + c.prio = c.prio + 1 + end + if FilterType(c,TYPE_EFFECT) then + c.prio = c.prio + 1 + end + if c.level>4 then + c.prio = c.prio + 1 + end + end + if CurrentOwner(c)==1 then + c.prio = -1*c.prio + end + end + table.sort(cards,function(a,b) return a.prio > b.prio end) + --print("table:") + --print("attacker: "..source.id..", atk: "..atk) + --for i=1,#cards do + --print(i..") id: "..cards[i].id.." index: "..cards[i].index.." prio: "..cards[i].prio) + --end + result={cards[1].index} + return result +end + +function FrightfurBoost(frightfurId) + local boost = 0 + local frightufs = CountFrightfurMon(AIMon()) + 1 -- Own + + if frightfurId == 80889750 -- FSabreTooth + then + if CountFrightfurMon(AIGrave()) > 0 then + frightufs = frightufs + 1 + if not HasIDNotNegated(AIMon(),00464362,true) -- FTiger Field + and HasIDNotNegated(AIGrave(),00464362,true) -- FTiger Grave + then + boost = boost + (frightufs * 300) + end + end + boost = boost + 400 + end + + if frightfurId == 00464362 -- FTiger + then + boost = boost + (frightufs * 300) + end + + if frightfurId == 57477163 -- FSheep + and CardsMatchingFilter(OppMon(),FilterPosition,POS_ATTACK) > 0 + and OPTCheck(57477163) + and AI.GetPlayerLP(1) > 800 + then + boost = boost + 800 + end + + boost = boost + (400 * CardsMatchingFilter(AIMon(),FSabreToothFilter)) --FSabreTooth + + if HasIDNotNegated(AIMon(),00464362,true) -- FTiger + then + boost = boost + (frightufs * 300) + end + + return boost +end + +function FluffalCanAttack(cards,attack,filter,opt) + local result = 0 + for i=1, #cards do + local c = cards[i] + if ( + FilterAttackMax(c,attack-1) and FilterPosition(c,POS_ATTACK) + or + FilterDefenseMax(c,attack-1) and FilterPosition(c,POS_DEFENSE) + ) + and FilterCheck(c,filter,opt) + then + result = result + 1 + end + end + return result +end +function FluffalCannotAttack(cards,attack,filter,opt) + local result = 0 + for i=1, #cards do + local c = cards[i] + if ( + FilterAttackMin(c,attack) and FilterPosition(c,POS_ATTACK) + or + FilterDefenseMin(c,attack) and FilterPosition(c,POS_DEFENSE) + ) + and FilterCheck(c,filter,opt) + then + result = result + 1 + end + end + return result +end + +function ExpectedDamageMichelet(player,filter,opt) + if player == nil then player = 1 end + local oppMons = {} + local aiAtts = {} + local aiHasAttacked = 0 + + aiAtts = SubGroup(AIMon(),FilterPosition,POS_ATTACK) + oppMons = SubGroup(OppMon(),FilterLocation,LOCATION_MZONE) + + if player == 2 then + aiAtts = SubGroup(OppMon(),FilterPosition,POS_ATTACK) + oppMons = SubGroup(AIMon(),FilterLocation,LOCATION_MZONE) + end + + if #aiAtts > 0 then + table.sort(aiAtts, function(a,b) return a.attack < b.attack end) + end + + if #oppMons > 0 then + table.sort(oppMons, + function(a,b) + local attDefA = 0 + local attDefB = 0 + if FilterPosition(a,POS_ATTACK) then + attDefA = a.attack + else + attDefA = a.defense + end + if FilterPosition(b,POS_ATTACK) then + attDefB = b.attack + else + attDefB = b.defense + end + return attDefA > attDefB + end + ) + end + + local damageExpectedInBattle = 0 + for i=1, #oppMons do + local oppM = oppMons[i] + local oppAttDef = oppM.defense + + local dealDamage = false + if FilterPosition(oppM,POS_ATTACK) then + dealDamage = true + oppAttDef = oppM.attack + end + + --print("oppMon - id: "..oppM.id.." - AttDef: "..oppAttDef) + + for j=1, #aiAtts do + local aiM = aiAtts[j] + local aiAtt = aiM.attack + if FilterCheck(aiM,filter,opt) then + if not oppM.HasBeenDefeated and not aiM.HasAttacked + and AvailableAttacks(aiM) > 0 + then + --print("aiAtt: "..aiAtt.." vs oppAttDef: "..oppAttDef) + if aiAtt > oppAttDef then + aiM.HasAttacked = true + oppM.HasBeenDefeated = true + aiHasAttacked = aiHasAttacked + 1 + if dealDamage then + damageExpectedInBattle = damageExpectedInBattle + (aiAtt - oppAttDef) + end + end + end + end + end + if not oppM.HasBeenDefeated then + damageExpectedInBattle = damageExpectedInBattle - oppAttDef + end + end + + --print("DamageExpected - In Battle: ".. damageExpectedInBattle) + + local damageExpectedDirect = 0 + if aiHasAttacked >= #oppMons + or #oppMons == 0 + then + for j=1, #aiAtts do + local aiM = aiAtts[j] + local aiAtt = aiM.attack + --print("aiMon - id: "..aiM.id.." - Att: "..aiAtt) + if FilterCheck(aiM,filter,opt) then + if not aiM.HasAttacked + and not FilterAffected(aiM,EFFECT_CANNOT_DIRECT_ATTACK) + then + --print("DirectDamage: "..(aiAtt * AvailableAttacks(aiM))) + damageExpectedDirect = damageExpectedDirect + (aiAtt * AvailableAttacks(aiM)) + end + end + end + end + + --print("DamageExpected - Direct: ".. damageExpectedDirect) + + return damageExpectedInBattle + damageExpectedDirect +end \ No newline at end of file diff --git a/ai/decks/Fluffal/FluffalChain.lua b/ai/decks/Fluffal/FluffalChain.lua new file mode 100644 index 00000000..fb7d0ba1 --- /dev/null +++ b/ai/decks/Fluffal/FluffalChain.lua @@ -0,0 +1,151 @@ +------------------------ +-------- CHAIN --------- +------------------------ +-- OtherM CHAIN +function ChainMaxxCFluffal(c) + return + CardsMatchingFilter(OppField(),MaxxCAdvantageFilter) > 0 + or ( + HasID(OppExtra(),90809975,true) -- Toadally Awesome + and CardsMatchingFilter(OppMon(),FilterRace,RACE_AQUA) >= 2 + and CardsMatchingFilter(OppMon(),FilterLevel,2) >= 2 + ) + or ( + CardsMatchingFilter(OppMon(),FilterAttribute,ATTRIBUTE_WIND) > 0 + and HasID(OppHand(),53932291,true) -- Speedroid Taketomborg + ) +end +-- Spell CHAIN +function ChainMSpring(c) + if FluffalRemovalCheckCard(c) + or UseMSpring(c) and Duel.GetCurrentPhase()==PHASE_MAIN1 + then + return true + else + return false + end + return false +end +-- Trap CHAIN +function ChainFReserve(c) + if FluffalRemovalCheckCard(c) + then + return true + elseif Duel.GetCurrentPhase() == PHASE_END + and CardsMatchingFilter(OppST(),MSTEndPhaseFilter) > 0 + and HasID(AIGrave(),24094653,true) -- Polymerization + then + return true + else + return false + end +end +function ChainJAvarice(c) + return + FluffalRemovalCheckCard(c) + or Duel.GetCurrentPhase() == PHASE_END + --or UseJAvarice(c) +end + +function FluffalRemovalCheckCard(c) + return + RemovalCheckCard(c,CATEGORY_DESTROY) + or RemovalCheckCard(c,CATEGORY_REMOVE) + or RemovalCheckCard(c,CATEGORY_TOGRAVE) + or RemovalCheckCard(c,CATEGORY_TOHAND) + or RemovalCheckCard(c,CATEGORY_REMOVE) +end +GlobalOppMaxxC = 0 +function FluffalChain(cards) -- FLUFFAL CHAIN + --print("Fluffal Chain") + if HasIDNotNegated(cards,90809975,false,(90809975*16)+1,ChainNegation) -- Toadally + then + OPTSet(cards[CurrentIndex].cardid) + return {1,CurrentIndex} + end + if HasID(cards,40636712,UseFKrakenRepo) then + return {1,CurrentIndex} + end + if HasID(cards,23434538,ChainMaxxCFluffal) then + return {1,CurrentIndex} + end + if HasID(cards,43455065,ChainMSpring) then -- MSpring + return {1,CurrentIndex} + end + if HasID(cards,43898403,ChainTwinTwister) then -- TwinTwisters + return {1,CurrentIndex} + end + if HasIDNotNegated(cards,66127916,ChainFReserve) then -- FReserve + return {1,CurrentIndex} + end + if HasIDNotNegated(cards,98954106,ChainJAvarice) then -- JAvarice + return {1,CurrentIndex} + end + if HasIDNotNegated(cards,51452091,false) then -- RDecree + return {1,CurrentIndex} + end + + -- Opp Maxx "C" + --if GlobalOppMaxxC ~= Duel.GetTurnCount() then + --for i=1,Duel.GetCurrentChain() do + --local p = Duel.GetChainInfo(i, CHAININFO_TRIGGERING_PLAYER) + --local e = Duel.GetChainInfo(i, CHAININFO_TRIGGERING_EFFECT) + --local c = nil + --if e and p and (p == 1- player_ai) then + --c=e:GetHandler() + --if c then + --if c:GetCode() == 23434538 then + --print("OppMaxxC") + --GlobalOppMaxxC = Duel.GetTurnCount() + --end + --end + --end + --end + --end + + return nil +end + +function FluffalChainOrder(cards) -- FLUFFAL CHAIN ORDER + --print("FluffalChainOrder") + local result = {} + + for i=1,#cards do + local c = cards[i] + if c.level > 4 then -- To protect Frightfur + result[#result + 1] = i + end + end + for i=1,#cards do + local c = cards[i] + if c.id == 39246582 then -- To protect Dog + result[#result + 1] = i + end + end + for i=1,#cards do + local c = cards[i] + if c.id == 13241004 then -- To protect Penguin + result[#result + 1] = i + end + end + for i=1,#cards do + local c=cards[i] + if c.level < 5 + and c.level > 0 + and not (c.id == 39246582) -- Exclude Dog + and not (c.id == 13241004) -- Exclude Penguin + then + result[#result + 1] = i + end + end + -- ST + for i=1,#cards do + local c=cards[i] + if c.level < 1 + then + result[#result + 1] = i + end + end + + return result +end \ No newline at end of file diff --git a/ai/decks/Fluffal/FluffalCond.lua b/ai/decks/Fluffal/FluffalCond.lua new file mode 100644 index 00000000..204c8aa7 --- /dev/null +++ b/ai/decks/Fluffal/FluffalCond.lua @@ -0,0 +1,2770 @@ +------------------------ +--------- COND --------- +------------------------ +-- Fluffal COND +function DogCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if not OPTCheck(c.id) and Duel.GetTurnCount() > 1 + or + Get_Card_Count_ID(AIHand(),c.id) > 1 + and GlobalFusionId ~= 80889750 -- FSabreTooth + then + return 5 + PrioFluffalMaterial(c,1) + else + return 1 + end + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if HasID(AIHand(),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + return not NormalSummonCheck() and SummonDog() + end + if FilterLocation(c,LOCATION_ONFIELD) then + if not HasID(AIHand(),c.id,true) then + if SummonDog() and not NormalSummonCheck() + then + return true + else + return 7 + end + end + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + if not OPTCheck(c.id) then + return 1 + end + if NormalSummonCheck() then + return 11 + end + return + OPTCheck(c.id) + and SummonDog() + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return false + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) or CardsMatchingFilter(AIHand(),FilterID,c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_OVERLAY) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 4 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + if Get_Card_Count_ID(AIHand(),c.id) > 1 then + return 5 + else + return not OPTCheck(c.id) + end + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +GlobalPenguinAux = 0 +function PenguinCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if OPTCheck(c.id + 1) + then + if Get_Card_Count_ID(UseLists({AIHand(),AIMon()}),c.id) == 2 then + if GlobalPenguinAux == 0 then + GlobalPenguinAux = c.cardid + end + if GlobalPenguinAux == c.cardid then + return 1 + else + return 10 + PrioFluffalMaterial(c,1) + end + else + GlobalPenguinAux = 0 + end + return 10 + PrioFluffalMaterial(c,1) + else + return 1 + end + end + if loc == PRIO_TOHAND then + if HasID(UseLists({AIHand(),AIMon()}),c.id,true) + or not OPTCheck(c.id + 1) + then + return 1 + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + -- Toadally + if ToadallyPlayCheck() then + if HasID(AIHand(),01845204,true) -- IFusion + then + return 9 + end + local waterMon = SubGroup(AIMon(),FilterAttribute,ATTRIBUTE_WATER) + if CardsMatchingFilter(waterMon,FilterLevel,4) > 0 + and not NormalSummonCheck() + then + return 10 + end + end + if CardsMatchingFilter(AIHand(),PenguinFilter) > 0 + and not NormalSummonCheck() + and OPTCheck(c.id + 1) + then + return 7 + end + return + OPTCheck(c.id + 1) + end + if FilterLocation(c,LOCATION_ONFIELD) then + if not HasID(AIHand(),c.id,true) then + if GlobalCanFusionSummon == false then + return 10 + end + if SummonPenguin() and not NormalSummonCheck() + then + return true + else + return 8 + end + end + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id + 1) or CardsMatchingFilter(AIHand(),FilterID,c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) then + return false + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.id + 1) or CardsMatchingFilter(AIHand(),FilterID,c.id) > 0 + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 5 + else + return 2 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + if Get_Card_Count_ID(AIHand(),c.id) > 1 then + return 4 + else + return not OPTCheck(c.id + 1) + end + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function BearCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if not HasID(AIDeck(),70245411,true) then + return 7 + PrioFluffalMaterial(c,1) + elseif not OPTCheck(c.id) and Duel.GetTurnCount() > 1 + or + Get_Card_Count_ID(AIHand(),c.id) > 1 + and GlobalFusionId ~= 80889750 -- FSabreTooth + then + return 6 + PrioFluffalMaterial(c,1) + else + return 1 + end + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + then + if HasID(AIHand(),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + local fluffalsGrave = CountFluffal(AIGrave()) + if HasID(AIDeck(),70245411,true) -- TVendor + and not HasID(AIHand(),70245411,true) + and OPTCheck(72413000) -- Wings + and ( + not HasID(AIST(),70245411,true) -- TVendor + or + HasID(AIGrave(),72413000,true) -- Wings + and fluffalsGrave < 2 + ) + and ( + PriorityCheck(AIHand(),PRIO_DISCARD) > FluffalPrioMode(1) + or + HasID(AIGrave(),72413000,true) -- Wings + and fluffalsGrave < 2 + ) + then + return true + else + return false + end + end + if FilterLocation(c,LOCATION_ONFIELD) then + if not HasID(AIHand(),c.id,true) then + if OPTCheck(c.id) + then + return true + else + return 6 + end + end + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIHand(),c.id,true) then + if OPTCheck(c.id) + then + return true + else + return 6 + end + end + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) + end + if FilterLocation(c,LOCATION_DECK) then + return false + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return + OPTCheck(c.id) + and HasID(AIGrave(),24094653,true) -- Polymerization + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) or CardsMatchingFilter(AIHand(),FilterID,c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) then + if not HasID(AIDeck(),70245411,true) -- TVendor + then + return 10 + end + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.id) + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 6 + else + return 3 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + if Get_Card_Count_ID(AIHand(),c.id) > 1 + or not HasID(AIDeck(),70245411,true) -- TVendor + then + return 6 + else + return not OPTCheck(c.id) + end + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function OwlCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if not OPTCheck(c.id) or GlobalOwl == 1 + or Get_Card_Count_ID(AIHand(),c.id) > 1 + then + return 3 + PrioFluffalMaterial(c,1) + else + return 1 + end + end + if loc == PRIO_TOHAND then + if HasID(AIHand(),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + if FilterLocation(c,LOCATION_DECK) + then + if not NormalSummonCheck() + then + if CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) == 0 + or CanUseFPatchwork() + then + return true + else + return false + end + else + return false + end + end + if FilterLocation(c,LOCATION_ONFIELD) then + if not HasID(AIHand(),c.id,true) + then + if not OPTCheck(c.id) then + return 9 + elseif not NormalSummonCheck() + then + return true + else + return false + end + end + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return 6 + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + if not OPTCheck(c.id) then + return 1 + end + if CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter2) == 0 + then + return 9 + end + return true + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) or CardsMatchingFilter(AIHand(),FilterID,c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) then + return false + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.id) or CardsMatchingFilter(AIHand(),FilterID,c.id) > 0 + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 7 + else + return 4 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) or CardsMatchingFilter(AIHand(),FilterID,c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function SheepCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if not OPTCheck(c.id) or Get_Card_Count_ID(AIHand(),c.id) > 1 + then + return 3 + PrioFluffalMaterial(c,1) + else + return 1 + end + end + if loc == PRIO_TOHAND then + if HasID(UseLists({AIHand(),AIMon()}),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + local edgeImpHand = CountEdgeImp(AIHand()) + local edgeImpMon = CountEdgeImp(AIMon()) + local edgeImpGrave = CountEdgeImp(AIGrave()) + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if not BattlePhaseCheck() and (edgeImpHand + edgeImpGrave) > 0 + then + return 8 + end + if edgeImpGrave > 0 + and not ( + HasID(UseLists({AIHand(),AIST()}),34773082,true) -- FPatchwork + and CountFPatchworkTarget() > 0 + and OPTCheck(34773082) + ) + then + if CardsMatchingFilter(UseLists({AIHand(),AIMon()}),FluffalFusionMonFilter) == 0 + and CountFluffal(AIMon()) > 0 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) + then + return 8 + end + else + return false + end + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return OPTCheck(c.id) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) or CardsMatchingFilter(AIHand(),FilterID,c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_OVERLAY) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.id) + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 6 + else + return 3 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) or CardsMatchingFilter(AIHand(),FilterID,c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + end + return true +end +GlobalOctoAux = 0 +function OctoCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if OPTCheck(c.id + 1) + and CardsMatchingFilter(AIBanish(),FilterType,TYPE_MONSTER) >= 1 + then + if Get_Card_Count_ID(UseLists({AIHand(),AIMon()}),c.id) == 2 then + if GlobalOctoAux == 0 then + GlobalOctoAux = c.cardid + end + if GlobalOctoAux == c.cardid then + return 1 + else + return 8 + PrioFluffalMaterial(c,1) + end + else + GlobalOctoAux = 0 + end + return 8 + PrioFluffalMaterial(c,1) + else + return 1 + end + end + if loc == PRIO_TOHAND then + if HasID(UseLists({AIHand(),AIMon()}),c.id,true) + or not OPTCheck(c.id + 1) + then + return 1 + end + if FilterLocation(c,LOCATION_DECK) + then + if CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + and CardsMatchingFilter(AIBanish(),FilterType,TYPE_MONSTER) > 0 + then + return true + else + return false + end + end + if FilterLocation(c,LOCATION_ONFIELD) then + if not HasID(AIHand(),c.id,true) then + return 6 + end + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if OPTCheck(c.id + 1) then + return 11 + else + return 8 + end + end + end + if loc == PRIO_TOFIELD then + if not OPTCheck(c.id) then + return 1 + end + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + and not ( + HasID(AIGrave(),72413000,true) -- Wings + and OPTCheck(72413000) + and CountFluffal(AIGrave()) <= 2 + ) + then + return true + else + return false + end + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id + 1) or Get_Card_Count_ID(AIHand(),c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) then + return false + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.id + 1) or Get_Card_Count_ID(AIHand(),c.id) > 0 + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 3 + else + return 2 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id + 1) or Get_Card_Count_ID(AIHand(),c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return not HasID(AIBanish(),c.id,true) + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function CatCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if OPTCheck(c.id) + and ( + GlobalPolymerization == 1 + or HasID(AIGrave(),24094653,true) --Polymerization + ) + then + return 12 + PrioFluffalMaterial(c,1) + else + return 1 + end + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + if HasID(AIHand(),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + local polyCount = CardsMatchingFilter(UseLists({AIHand(),AIST()}),FilterID,24094653) + if polyCount > 1 + and not HasID(UseLists({AIHand(),AIMon()}),13241004,true) -- Penguin + then + return 5 + elseif polyCount > 0 + then + return true + else + return false + end + end + if FilterLocation(c,LOCATION_ONFIELD) then + if not HasID(AIHand(),c.id,true) then + return 3 + end + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return 9 + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return + OPTCheck(c.id) + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id + 1) or Get_Card_Count_ID(AIHand(),c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) then + return false + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.id + 1) or Get_Card_Count_ID(AIHand(),c.id) > 0 + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 9 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) or Get_Card_Count_ID(AIHand(),c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function RabitCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if OPTCheck(c.id) + and ( + HasID(UseLists({AIHand(),AIMon(),AIGrave()}),02729285,true) -- Cat + or HasID(AIGrave(),87246309,true) -- Octo + ) + then + return 9 + PrioFluffalMaterial(c,1) + else + return 1 + PrioFluffalMaterial(c,1) + end + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + if HasID(AIHand(),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + if CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + then + return true + else + return false + end + end + if FilterLocation(c,LOCATION_ONFIELD) then + if not HasID(AIHand(),c.id,true) then + return 4 + end + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return 10 + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return + OPTCheck(c.id) + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id + 1) or Get_Card_Count_ID(AIHand(),c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) then + return false + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.id + 1) or Get_Card_Count_ID(AIHand(),c.id) > 0 + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 11 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) or Get_Card_Count_ID(AIHand(),c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function MouseCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if FilterPosition(c,POS_FACEUP_ATTACK) + and FilterLocation(c,LOCATION_ONFIELD) + then + return 8 + PrioFluffalMaterial(c,1) + elseif FilterLocation(c,LOCATION_ONFIELD) + and not OPTCheck(c.cardid) + then + return 7 + elseif not HasID(AIDeck(),c.id,true) + then + return 6 + PrioFluffalMaterial(c,1) + else + return 1 + end + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + if HasID(AIHand(),c.id,true) + then + return 1 + end + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + if FilterPosition(c,POS_FACEUP_ATTACK) then + return 6 + else + return 1 + end + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return false + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if Get_Card_Count_ID(AIDeck(),c.id) > 0 + and OPTCheck(10802915) -- TourGuide + and OPTCheck(67441435) -- Bulb + and not (HasID(AIGrave(),67441435,true) and OPDCheck(67441435)) -- Bulb + then + return true + else + return false + end + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + then + return + not OPTCheck(c.id) + or Get_Card_Count_ID(AIHand(),c.id) > 1 + or Get_Card_Count_ID(AIDeck(),c.id) == 0 + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.cardid) + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 4 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + if Get_Card_Count_ID(AIDeck(),c.id) == 1 then + return 3 + end + return + Get_Card_Count_ID(AIDeck(),c.id) == 0 + or Get_Card_Count_ID(AIHand(),c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterPosition(c,POS_FACEUP_ATTACK) then + return 10 + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function WingsCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if OPTCheck(c.id) + and HasID(AIST(),70245411,true) -- Toy Vendor + then + return 9 + else + return 6 + end + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + if HasID(UseLists({AIHand(),AIGrave(),AIMon()}),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + if HasID(AIHand(),70245411,true) -- TVendor HAND + or + HasID(AIHand(),03841833,true) -- Bear + and OPTCheck(03841833) + and HasID(AIDeck(),70245411,true) -- TVendor + or + CardsMatchingFilter(AIST(),TVendorCheckFilter,true) > 0 -- TVendor + or + HasIDNotNegated(AIST(),70245411,true) -- TVendor + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + and CardsMatchingFilter(UseLists({AIHand(),AIMon()}),FluffalFusionMonFilter) > 0 + then + return true + else + return false + end + end + if FilterLocation(c,LOCATION_ONFIELD) then + if not HasID(AIHand(),c.id,true) then + return 5 + end + end + if FilterLocation(c,LOCATION_GRAVE) then + return 0 + end + if FilterLocation(c,LOCATION_REMOVED) then + return 2 + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + return 0 + end + if FilterLocation(c,LOCATION_REMOVED) then + return 2 + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_OVERLAY) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 10 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return Get_Card_Count_ID(UseLists({AIGrave(),AIBanish()}),70245411) == 3 -- TVendor + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function PatchworkCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if GlobalFusionPerform == 2 + and GlobalFusionId ~= 40636712 -- FKraken + then + return 11 + end + return 3 + PrioFluffalMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + if HasID(AIHand(),c.id,true) + then + return 1 + end + end + if FilterLocation(c,LOCATION_ONFIELD) then + return 2 + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return CountEdgeImp(UseLists({AIHand(),AIMon()})) == 0 + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return Get_Card_Count_ID(AIHand(),c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_OVERLAY) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return Get_Card_Count_ID(AIHand(),c.id) > 0 + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 3 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + end + return true +end +-- EdgeImp COND +function TomahawkCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if GlobalFusionPerform == 2 + then + return 10 + PrioFluffalMaterial(c,1) + elseif GlobalFusionPerform > 2 then + return 5 + PrioFluffalMaterial(c,1) + end + return 5 + PrioFluffalMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + if HasID(AIHand(),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + return OPTCheck(c.id + 1) and not HasID(AIHand(),c.id,true) + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return OPTCheck(c.id + 1) and not HasID(AIHand(),c.id,true) + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return OPTCheck(c.id + 1) and HasID(AIDeck(),30068120,true) -- Sabres + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_OVERLAY) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 3 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function ChainCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if GlobalFusionId == 57477163 and OPTCheck(c.id) then -- FSheep + return 10 + end + if GlobalFusionPerform == 2 or GlobalFusionId == 40636712 -- FKraken + then + if OPTCheck(c.id) then + return 6 + PrioFluffalMaterial(c,1) + else + return 1 + end + elseif GlobalFusionPerform > 2 then + return 5 + PrioFluffalMaterial(c,1) + end + if OPTCheck(c.id) then + return 6 + PrioFluffalMaterial(c,1) + else + return 1 + end + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + if HasID(AIHand(),c.id,true) + or not OPTCheck(c.id) + then + return false + end + return OPTCheck(c.id) and not HasID(AIHand(),c.id,true) + end + if FilterLocation(c,LOCATION_ONFIELD) then + if not HasID(AIHand(),c.id,true) + and OPTCheck(c.id) + then + return 5 + else + return 2 + end + end + if FilterLocation(c,LOCATION_GRAVE) then + return OPTCheck(c.id) and not HasID(AIHand(),c.id,true) + end + if FilterLocation(c,LOCATION_REMOVED) then + return OPTCheck(c.id) and not HasID(AIHand(),c.id,true) + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if OPTCheck(c.id) + and CardsMatchingFilter(AIDeck(),FrightfurSTFilter) > 0 + and not HasID(UseLists({AIHand(),AIMon()}),c.id,true) + then + return 10 + else + return false + end + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_ONFIELD) + then + return not OPTCheck(c.id) + end + if FilterLocation(c,LOCATION_DECK) then + return false + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 5 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + if OPTCheck(c.id) and CountFPatchworkTarget() > 0 + and OPTCheck(34773082) -- FPatchwork + then + return 11 + end + return + OPTCheck(c.id) + or Get_Card_Count_ID(AIHand(),c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function SabresCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if GlobalFusionPerform == 2 or GlobalFusionId == 40636712 -- FKraken + then + return 5 + PrioFluffalMaterial(c,1) + elseif GlobalFusionPerform > 2 + then + return 1 + PrioFluffalMaterial(c,1) + end + return 5 + PrioFluffalMaterial(c,1) + end + if loc == PRIO_TOHAND then + if HasID(UseLists({AIHand(),AIMon()}),c.id,true) + then + return false + end + if FilterLocation(c,LOCATION_DECK) + then + if CountEdgeImp(UseLists({AIHand(),AIMon()})) == 0 + and not CanUseSheep(false) + and not ( + HasID(UseLists({AIHand(),AIST()}),34773082,true) -- FPatchwork + and CountFPatchworkTarget() > 0 + and OPTCheck(34773082) + ) + then + return true + else + return false + end + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if CountEdgeImp(UseLists({AIHand(),AIMon()})) == 0 + and not CanUseSheep(false) + then + return true + else + return false + end + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return + not HasID(UseLists({AIHand(),AIMon()}),98280324,true) -- Sheep + or not OPTCheck(98280324) + end + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + if not HasID(UseLists({AIHand(),AIMon()}),c.id,true) then + return 6 + else + return 3 + end + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_OVERLAY) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 8 + else + return 2 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + if CardsMatchingFilter(UseLists({AIHand(),AIMon()}),FilterID,c.id) > 1 + or CountEdgeImp(UseLists({AIHand(),AIMon()})) + or CanUseSheep() + then + return true + elseif CardsMatchingFilter(UseLists({AIHand(),AIST()}),FrightfurSTFilter) + then + return 2 + else + return false + end + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +-- OtherM COND +function TGuideCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return 10 + PrioFluffalMaterial(c,1) + end + if loc == PRIO_TOHAND then + return true + end + if loc == PRIO_TOFIELD then + return false + end + if not OPTCheck(c.id) + or not HasID(AIDeck(),30068120,true) -- Sabres + or not HasID(AIExtra(),83531441,true) -- Dante + then + return true + else + return false + end +end +function KoSCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if GlobalFusionId == 57477163 then -- FSheep + return 2 + PrioFluffalMaterial(c,1) + end + return 10 + PrioFluffalMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return not HasID(AIHand(),c.id,true) + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return CardsMatchingFilter(UseLists({AIHand(),AIST()}),FrightfurSTFilter) > 0 + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_OVERLAY) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 9 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + if GlobalCanFusionSummon == false + and HasID(UseLists({AIHand(),AIST()}),06077601,true) -- FFusion + then + return 10 + end + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + if GlobalFusionId == 57477163 then -- FSheep + return 2 + PrioFluffalMaterial(c,2) + end + return 10 + PrioFluffalMaterial(c,2) + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function PFusionerCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if GlobalFusionId == 57477163 then -- FSheep + return 2 + PrioFluffalMaterial(c,1) + end + return 10 + PrioFluffalMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return not HasID(AIHand(),c.id,true) + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if #AIMon() > 0 + then + return true + else + return false + end + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + then + return not OPTCheck(c.id) + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 9 + else + return 1 + end + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return not OPTCheck(c.id) + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + if GlobalFusionId == 57477163 then -- FSheep + return 2 + PrioFluffalMaterial(c,2) + end + return 10 + PrioFluffalMaterial(c,2) + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +-- FluffalS COND +function TVendorCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return PriorityCheck(AIGrave(),PRIO_BANISH) > 1 + end + end + if loc == PRIO_TOFIELD then + return true + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + if AI.GetPlayerLP(1) <= 2000 then + return 4 + end + end + if FilterLocation(c,LOCATION_DECK) then + return 8 + end + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.cardid) + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return + CardsMatchingFilter(AIHand(),FilterID,c.id) > 1 + or + #AIHand() < 3 + and not ( + HasID(AIGrave(),72413000,true) -- Wings + and OPTCheck(72413000) + ) + or #OppField() < 3 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FFusionCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if HasID(UseLists({AIHand(),AIST()}),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + return + Duel.GetTurnCount() >= 2 + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + if CardsMatchingFilter(UseLists({AIHand(),AIST(),AIDeck()}),FilterID,c.id) == 3 + then + return 3 + else + if CountPrioTarget(AIGrave(),PRIO_BANISH,1,nil,FluffalFilter) < 3 + then + return true + else + return false + end + end + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_REMOVED) + then + return HasID(UseLists({AIHand(),AIST()}),43698897,true) -- FFactory + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return CardsMatchingFilter(UseLists({AIST(),AIHand(),AIDeck()}),FilterID,c.id) == 3 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FFactoryCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + or FilterLocation(c,LOCATION_ONFIELD) + then + if HasID(UseLists({AIHand(),AIST()}),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + return UseFFactoryAux(true) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_ONFIELD) + then + return + not OPTCheck(c.id) + or CardsMatchingFilter(UseLists({AIHand(),AIST()}),FilterID,c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) then + return false + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return + not OPTCheck(c.id) + or CardsMatchingFilter(UseLists({AIHand(),AIST()}),FilterID,c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FPatchworkCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + if HasID(UseLists({AIHand(),AIST()}),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + if not HasID(AIDeck(),24094653,true) -- Polymerization + or CountEdgeImp(AIDeck()) == 0 + then + return 1 + end + end + if FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + then + return CountFPatchworkTarget() == 0 + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return CountFPatchworkTarget() == 0 and not HasID(AIHand(),30068120,true) -- Sabres + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FRebornCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + if HasID(UseLists({AIHand(),AIST()}),c.id,true) + then + return 1 + end + return CardsMatchingFilter(AIGrave(),FrightfurMonFilter) > 0 + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return CardsMatchingFilter(AIGrave(),FrightfurMonFilter) > 0 + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + then + return CardsMatchingFilter(AIGrave(),FrightfurMonFilter) == 0 + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return CardsMatchingFilter(AIGrave(),FrightfurMonFilter) == 0 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function IFusionCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if HasID(UseLists({AIHand(),AIST()}),c.id,true) + or not OPTCheck(c.id) + then + return 1 + end + return OPTCheck(c.id) and not HasID(AIHand(),c.id,true) + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + end + local fusionMon = SubGroup(AIExtra(),FilterType,TYPE_FUSION) + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + then + return + not OPTCheck(c.id) + or CardsMatchingFilter(UseLists({AIHand(),AIST()}),FilterID,c.id) > 1 + or CardsMatchingFilter(fusionMon,FilterLevelMax,5) == 0 + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + if not ( + OPTCheck(c.id) + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FrightfurSTFilter2) > 0 + ) + then + return true + elseif CardsMatchingFilter(fusionMon,FilterLevelMax,5) == 0 + then + return 10 + else + return false + end + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return CardsMatchingFilter(fusionMon,FilterLevelMax,5) == 0 + end + end + return true +end +function PolyCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_ONFIELD) + then + if HasID(UseLists({AIHand(),AIST()}),c.id,true) + then + return 1 + end + if c.original_id == 74335036 -- FSubstitute + then + return false + end + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return c.original_id == 74335036 -- FSubstitute + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return CardsMatchingFilter(UseLists({AIHand(),AIST()}),FilterID,c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_OVERLAY) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_DISCARD then + if HasID(AIST(),66127916,true) then -- FReserve + return 5 + end + if FilterLocation(c,LOCATION_HAND) then + if CardsMatchingFilter(UseLists({AIHand(),AIST()}),FilterID,c.id) > 2 + then + return 4 + end + return + CardsMatchingFilter(UseLists({AIHand(),AIST()}),FilterID,c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return c.original_id ~= 74335036 -- FSubstitute + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function DFusionCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + if HasID(UseLists({AIHand(),AIST()}),c.id,true) + then + return 1 + end + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return CardsMatchingFilter(UseLists({AIHand(),AIST()}),FilterID,c.id) > 1 + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + then + return false + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_DISCARD then + if FilterLocation(c,LOCATION_HAND) then + return CardsMatchingFilter(UseLists({AIHand(),AIST()}),FilterID,c.id) > 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function GCycloneCond(loc,c) + if loc == PRIO_TOHAND then + return true + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_DECK) then + if CardsMatchingFilter(OppField(),FluffalFlootGateFilter) > 0 + then + return 11 + end + return true + end + return true + end + if loc == PRIO_DISCARD then + return true + end + if loc == PRIO_BANISH then + return true + end + return true +end +-- FrightfurMon COND +function FDaredevil(loc,c) + if loc == MATERIAL_TOGRAVE then + return 4 + PrioFrightfurMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_EXTRA) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + if not HasID(AIExtra(),c.id,true) then + return 0 + end + if GlobalFFusion > 0 then + if MaterialFDaredevilBanish() then + return + FSummonFDaredevil(c) + end + else + if MaterialFDaredevil() then + return FSummonFDaredevil(c) + end + end + return 1 + end + if FilterLocation(c,LOCATION_GRAVE) then + return SpSummonFDaredevil(c) + end + if FilterLocation(c,LOCATION_REMOVED) then + return SpSummonFDaredevil(c) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_EXTRA) + or FilterLocation(c,LOCATION_OVERLAY) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 4 + else + return 1 + end + end + end + if loc == PRIO_TODECK then + return true + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FSabreToothCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return 1 + PrioFrightfurMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_EXTRA) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + if not HasID(AIExtra(),c.id,true) then + return 0 + end + if GlobalFFusion > 0 then + if MaterialFSabreToothBanish() then + if GlobalIFusion == 1 then + return 11 + end + return FSummonFSabreTooth(c) + end + else + if MaterialFSabreTooth() then + if GlobalIFusion == 1 then + return 11 + end + return FSummonFSabreTooth(c) + end + end + return 1 + end + if FilterLocation(c,LOCATION_GRAVE) then + return false --SpSummonFSabreTooth(c) + end + if FilterLocation(c,LOCATION_REMOVED) then + return false --SpSummonFSabreTooth(c) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 3 + else + return 1 + end + end + end + if loc == PRIO_TODECK then + return true + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FKrakenCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return 6 + PrioFrightfurMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_EXTRA) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + if not HasID(AIExtra(),c.id,true) then + return 0 + end + if GlobalFFusion > 0 then + if MaterialFKrakenBanish() then + return + FSummonFKraken(c) + end + else + if MaterialFKraken() then + return FSummonFKraken(c) + end + end + return 1 + end + if FilterLocation(c,LOCATION_GRAVE) then + return SpSummonFKraken(c) + end + if FilterLocation(c,LOCATION_REMOVED) then + return SpSummonFKraken(c) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_EXTRA) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 7 + else + return 1 + end + end + end + if loc == PRIO_TODECK then + return false + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FLeoCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return 1 + PrioFrightfurMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_EXTRA) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + if not HasID(AIExtra(),c.id,true) then + return 0 + end + if GlobalFFusion > 0 then + if MaterialFLeoBanish() then + return FSummonFLeo(c) + end + else + if MaterialFLeo() then + return FSummonFLeo(c) + end + end + return 1 + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_EXTRA) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TODECK then + return true + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FBearCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return 3 + PrioFrightfurMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_EXTRA) + then + return + OPTCheck(03841833) and not HasID(AIHand(),03841833,true) -- Bear + and not HasID(UseLists({AIHand(),AIST()}),70245411,true) -- TVendor + and ( + #AIHand() > 2 + or + HasID(AIHand(),72413000,true) and OPTCheck(72413000) -- Wings + or + GlobalFluffalPercent >= 0.50 + ) + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + if not HasID(AIExtra(),c.id,true) then + return 0 + end + if GlobalFFusion > 0 then + if MaterialFBearBanish() then + return FSummonFBear(c) + end + else + if MaterialFBear() then + return FSummonFBear(c) + end + end + return 1 + end + if FilterLocation(c,LOCATION_GRAVE) then + return SpSummonFBear(c) + end + if FilterLocation(c,LOCATION_REMOVED) then + return SpSummonFBear(c) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FWolfCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return 1 + PrioFrightfurMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + if not HasID(AIExtra(),c.id,true) then + return 0 + end + if GlobalFFusion > 0 then + if MaterialFWolfBanish() then + return FSummonFWolf(c) + end + else + if MaterialFWolf() then + return FSummonFWolf(c) + end + end + return 1 + end + if FilterLocation(c,LOCATION_GRAVE) then + return SpSummonFWolf(c) + end + if FilterLocation(c,LOCATION_REMOVED) then + return SpSummonFWolf(c) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FTigerCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return 5 + PrioFrightfurMaterial(c,1) + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 6 + else + return 1 + end + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + if not HasID(AIExtra(),c.id,true) + or HasID(AIMon(),c.id,true) + then + return 0 + end + if GlobalFFusion > 0 then + if MaterialFTigerBanish() then + return FSummonFTiger(c) + end + else + if MaterialFTiger() then + return FSummonFTiger(c) + end + end + return 1 + end + if FilterLocation(c,LOCATION_GRAVE) then + return SpSummonFTiger(c) + end + if FilterLocation(c,LOCATION_REMOVED) then + return SpSummonFTiger(c) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FSheepCond(loc,c) + if loc == MATERIAL_TOGRAVE then + if FilterAffected(c,EFFECT_CANNOT_ATTACK) then -- IFusion + OPTReset(c.cardid) + if GlobalFusionPerform > 0 then + GlobalIFusion = 0 + end + return 9999 + else + return 4 + PrioFrightfurMaterial(c,1) + end + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + if not HasID(AIExtra(),c.id,true) then + return 0 + end + if GlobalIFusion > 0 then + return 5 + end + if GlobalFFusion > 0 then + if MaterialFSheepBanish() then + return FSummonFSheep(c) + end + else + if MaterialFSheep() then + return FSummonFSheep(c) + end + end + return 1 + end + if FilterLocation(c,LOCATION_GRAVE) then + return SpSummonFSheep(c) + end + if FilterLocation(c,LOCATION_REMOVED) then + return SpSummonFSheep(c) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + if not HasID(AIGrave(),c.id,true) then + return 6 + else + return 1 + end + end + end + if loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FStarveCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return 0 + end + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + if not HasID(AIExtra(),c.id,true) then + return 0 + end + if MaterialFStarve() then + return FSummonFStarve(c) + end + return 1 + end + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return SpSummonFStarve(c) + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return false + end + end + return true +end +function FNordenCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return 10 + end + if loc == PRIO_TOHAND then + return true + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + local waterMon = SubGroup(UseLists({AIGrave(),AIMon()}),FilterAttribute,ATTRIBUTE_WATER) + --local graveMon = SubGroup(AIGrave(),FilterType,TYPE_MONSTER) + if CardsMatchingFilter(waterMon,FilterLevel,4) > 0 + and HasID(AIExtra(),17412721,true) -- Norden + and ToadallyPlayCheck() + and GlobalIFusion > 0 + and #AIMon() <= 3 + --and CardsMatchingFilter(graveMon,FilterLevelMax,4) > 0 + then + GlobalIFusion = 0 + return 11 + else + return false + end + end + return true + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_OVERLAY) then + return 11 + end + return true + end + if loc == PRIO_TODECK then + return true + end + if loc == PRIO_BANISH then + return true + end + return true +end +function FTAwesomeCond(loc,c) + if loc == MATERIAL_TOGRAVE then + return true + end + if loc == PRIO_TOHAND then + return true + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_EXTRA) then + return true + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.cardid) + end + return true + end + if loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_ONFIELD) then + return not OPTCheck(c.cardid) + end + return true + end + if loc == PRIO_BANISH then + return true + end + return true +end +end + +MATERIAL_TOGRAVE = 21 -- Custom +--[[PRIO_TOHAND = 1 +--PRIO_TOFIELD = 3 +--PRIO_TOGRAVE = 5 +--PRIO_DISCARD = 7 +--PRIO_BANISH = 9 +--MATERIAL_TOGRAVE = 21 +--]] +FluffalPriorityList={ + [39246582] = {8,1,7,1,4,1,3,1,9,5,DogCond}, -- Fluffal Dog + [13241004] = {6,2,10,1,3,1,2,1,3,2,PenguinCond}, -- Fluffal Penguin + [03841833] = {10,3,2,1,5,2,2,1,8,3,BearCond}, -- Fluffal Bear + [65331686] = {8,3,6,4,2,1,1,1,5,2,OwlCond}, -- Fluffal Owl + [98280324] = {4,2,0,0,2,1,3,1,7,2,SheepCond}, -- Fluffal Sheep + [87246309] = {5,2,8,3,1,1,2,1,4,2,OctoCond}, -- Fluffal Octo + [02729285] = {7,4,3,1,1,0,1,1,3,1,CatCond}, -- Fluffal Cat + [38124994] = {5,3,3,1,1,0,1,1,2,1,RabitCond}, -- Fluffal Rabit + [06142488] = {1,1,9,3,5,0,6,1,9,8,MouseCond}, -- Fluffal Mouse + [72413000] = {9,1,4,2,9,4,10,8,6,1,WingsCond}, -- Fluffal Wings + [81481818] = {2,1,5,3,5,1,4,1,5,3,PatchworkCond}, -- Fluffal Patchwork + [97567736] = {1,1,5,2,1,1,8,4,6,2,TomahawkCond}, -- Edge Imp Tomahawk + [61173621] = {8,2,4,4,7,1,9,1,4,1,ChainCond}, -- Edge Imp Chain + [30068120] = {7,3,4,3,6,3,5,3,5,1,SabresCond}, -- Edge Imp Sabres + [10802915] = {1,1,1,1,9,1,8,1,9,8,TGuideCond}, -- Tour Guide + [79109599] = {1,1,2,1,8,2,2,1,3,2,KoSCond}, -- King of the Swamp + [06205579] = {1,1,8,1,2,1,2,1,3,2,PFusionerCond}, -- Parasite Fusioner + [67441435] = {1,1,8,2,9,6,9,4,1,1,nil}, -- Glow-Up Bulb + + [70245411] = {9,5,1,1,4,1,2,0,1,1,TVendorCond}, -- Toy Vendor + [06077601] = {6,1,1,1,3,1,3,0,9,1,FFusionCond}, -- Frightfur Fusion + [43698897] = {7,3,1,1,2,1,1,0,1,1,FFactoryCond}, -- Frightfur Factory + [34773082] = {8,4,1,1,5,1,9,0,7,1,FPatchworkCond}, -- Frightfur Patchwork + [28039390] = {5,2,1,1,2,1,2,1,1,1,FRebornCond}, -- Frightfur Reborn + [01845204] = {1,1,1,1,3,2,3,1,8,1,IFusionCond}, -- Instant Fusion + [24094653] = {2,1,1,1,2,1,2,1,2,1,PolyCond}, -- Polymerization + [94820406] = {1,1,1,1,2,1,2,1,1,1,DFusionCond}, -- Dark Fusion + [05133471] = {1,1,1,1,7,5,6,5,1,1,GCycloneCond}, -- Galaxy Cyclone + [43455065] = {1,1,1,1,1,1,2,1,1,1,nil}, -- Magical Spring + [43898403] = {1,1,1,1,5,3,6,4,1,1,nil}, -- Twin Twister + + [66127916] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Fusion Reserve + [98954106] = {9,1,1,1,1,1,1,1,1,1,nil}, -- Jar of Avarice + [51452091] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Royal Decree + + [91034681] = {1,1,8,4,1,1,1,1,5,1,FDaredevil}, -- Frightfur Daredevil + [80889750] = {1,1,9,3,1,1,1,1,5,1,FSabreToothCond},-- Frightfur Sabre-Tooth + [40636712] = {1,1,8,5,5,3,1,1,2,1,FKrakenCond}, -- Frightfur Kraken + [10383554] = {1,1,11,1,2,1,1,1,9,1,FLeoCond}, -- Frightfur Leo + [85545073] = {5,1,5,2,3,1,1,1,4,1,FBearCond}, -- Frightfur Bear + [11039171] = {2,1,10,1,1,0,1,1,8,1,FWolfCond}, -- Frightfur Wolf + [00464362] = {3,1,7,4,5,4,1,1,3,1,FTigerCond}, -- Frightfur Tiger + [57477163] = {4,1,6,2,4,2,1,1,2,1,FSheepCond}, -- Frightfur Sheep + [41209827] = {2,1,10,1,1,1,1,1,1,1,FStarveCond}, -- Starve Venom Fusion Dragon + [17412721] = {1,1,4,1,1,1,9,1,1,1,FNordenCond}, -- Elder Entity Norden + [33198837] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Naturia Beast + [42110604] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Hi-Speedroid Chanbara + [90809975] = {1,1,1,1,3,1,1,1,1,1,FTAwesomeCond}, -- Toadally Awesome + [83531441] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Dante + + [07394770] = {1,1,1,1,4,3,7,3,1,1,nil}, -- Brilliant Fusion + [91731841] = {1,1,1,1,4,3,8,3,1,1,nil}, -- Gem-Knight Material +} \ No newline at end of file diff --git a/ai/decks/Fluffal/FluffalFilter.lua b/ai/decks/Fluffal/FluffalFilter.lua new file mode 100644 index 00000000..3341ef2c --- /dev/null +++ b/ai/decks/Fluffal/FluffalFilter.lua @@ -0,0 +1,439 @@ +------------------------ +-------- FILTER -------- +------------------------ +-- FluffalM FILTER +function FluffalFilter(c) + return FilterSet(c,0xA9) +end +function NotFluffalFilter(c) + return not FluffalFilter(c) +end +function PenguinFilter(c) + if c.id == 39246582 and OPTCheck(39246582) -- Dog + or c.id == 65331686 and OPTCheck(65331686) -- Owl + or c.id == 81481818 -- Patchwork + or c.id == 06142488 -- Mouse + then + return true + elseif c.id == 87246309 -- Octo + then + return UseOcto() + else + return false + end +end +function FluffalFusionProtectFilter(c) + return + c.id == 02729285 -- Cat + or c.id == 38124994 -- Rabit + or c.id == 13241004 -- Penguin +end +-- EdgeImp FILTER +function EdgeImpFilter(c) + return FilterSet(c,0xC3) +end +-- Other FILTER +function FluffalFusionMonFilter(c) + return + EdgeImpFilter(c) + or + SubstituteMaterialFilter(c) +end +function SubstituteMaterialFilter(c) + return + c.id == 81481818 -- Patchwork + and FilterLocation(c,LOCATION_MZONE) + or + c.id == 79109599 -- KoS + or + c.id == 06205579 -- PFusioner +end +-- FluffalS FILTER +function TVendorCheckFilter(c,canUse) + if canUse then + return + c.id == 70245411 + and OPTCheck(c.cardid) + else + return + c.id == 70245411 + and not OPTCheck(c.cardid) + end +end +function FrightfurSTFilter(c) + return + FilterSet(c,0xAD) + and FilterType(c,TYPE_SPELL+TYPE_TRAP) +end +-- Spell FILTER +function FusionArchetypeFilter(c) + return FilterSet(c,0x46) +end +function FluffalFusionSTFilter(c) + return + c.id == 24094653 -- Polymerization + or + c.id == 94820406 -- DFusion + or + c.id == 79109599 -- KoS + and FilterLocation(c,LOCATION_HAND) + or + c.id == 43698897 -- FFactory + and UseFFactoryAux(true) + and OPTCheck(43698897) + or + c.id == 34773082 -- FPatchwork + and OPTCheck(34773082) +end +function FluffalFusionSTFilter2(c) + return + FluffalFusionSTFilter(c) + or + c.id == 06077601 -- FFusion + and OPTCheck(06077601) +end +-- Trap FILTER +-- Frightfur FILTER +function FrightfurMonFilter(c) + return + FilterSet(c,0xAD) + and FilterType(c,TYPE_MONSTER) +end +function NotFrightfurMonFilter(c) + return + not FilterSet(c,0xAD) + and FilterType(c,TYPE_MONSTER) +end +function FrightfurMonNegatedFilter(c) + return + FilterSet(c,0xAD) + and FilterType(c,TYPE_MONSTER) + and Negated(c) +end +function FSabreToothFilter(c) + return + c.id == 80889750 and NotNegated(c) +end +function FLeoFinishFilter(c,source) + return + AI.GetPlayerLP(2) <= c.base_attack -- Origial Attack + and Targetable(c,TYPE_MONSTER) + and FluffalDestroyFilter(c) + and Affected(c,TYPE_MONSTER) +end +function FTigerDestroyFilter(c) + return ( + Targetable(c,TYPE_MONSTER) + and Affected(c,TYPE_MONSTER) + and FluffalDestroyFilter(c) + and not IgnoreList(c) + ) +end +function FKrakenSendFilter(c) + return ( + Targetable(c,TYPE_MONSTER) + and Affected(c,TYPE_MONSTER) + and FluffalSendFilter(c) + and not IgnoreList(c) + ) +end +-- Other Fusion FILTER +function FluffalNordenFilter(c) + return + FilterAttribute(c,ATTRIBUTE_WATER) + and FilterLevel(c,4) +end +-- Other XYZ FILTER +function FluffalBahamutMaterialFilter(c) + return Negated(c) + or c.id == 17412721 +end + +-- Other Filter +function FluffalDestroyFilter(c,nontarget,skipblacklist,skipignore) + return DestroyFilter(c,nontarget,skipblacklist,skipignore) + and not BypassDestroyFilter(c) +end +function FluffalSendFilter(c,nontarget) + return not FilterStatus(c,STATUS_LEAVE_CONFIRMED) + and (nontarget==true or not FilterAffected(c,EFFECT_CANNOT_BE_EFFECT_TARGET)) + and not BypassSendFilter(c) +end + +function ByPassDestroyFilter(c) + return ( + ( + ( + c.id==62541668 -- Number 77: Seven Sins + or c.id==99469936 -- Crystalzero Lancer + or c.id==67173574 -- Number C102 + or c.id==23998625 -- Number 53 + or c.id==01855932 -- Bujintei Kagotsuchi + or c.id==49678559 -- Number 102 + or c.id==76067258 -- Number 66 + or c.id==23232295 -- BB Lead Joke + or c.id==48739166 -- Number 101 + or c.id==25853045 -- Black Ray Lancer + or c.id==25341652 -- Maestroke the Symphony Dijinn + or c.id==78156759 -- Wind-Up Zenmaines + or c.id==10002346 -- Gachi Gachi Gantetsu + or c.id==65305468 -- Number F0: Utopic Future + or c.id==15914410 -- Mechquipped Angineer + ) + and c.xyz_material_count>0 + ) + or c.id==94977269 -- El Shaddoll Winda + or c.id==93302695 -- Kozmol Wickedwitch + ) + and NotNegated(c) +end +function BypassSendFilter(c) + return c.id==74586817 -- PSY-Framelord Omega +end +------------------------ +-------- COUNT --------- +------------------------ +-- General Count +function CountPrioTarget(cards,loc,minPrio,Type,filter,opt,debugMode) + local result = 0 + if minPrio == nil then + minPrio = 1 + end + for i=1, #cards do + local c = cards[i] + if debugMode ~= nil then + --print(debugMode.." - id: "..c.id) + end + c.prio = GetPriority(c,loc) + if not FilterCheck(c,filter,opt) + or not (Type == nil or bit32.band(c.type,Type) > 0) then + c.prio = -1 + end + if debugMode ~= nil then + print(debugMode.." - Prio: "..c.prio,c.original_id.." - "..GetName(c)) + end + if c.prio > minPrio then + result = result + 1 + end + end + if debugMode ~= nil then + print(debugMode.." - Count: "..result) + end + return result +end +-- FluffalM COUNT +function CountFluffal(cards) + return CardsMatchingFilter(cards,FluffalFilter) +end +-- EdgeImp COUNT +function CountEdgeImp(cards) + return CardsMatchingFilter(cards,EdgeImpFilter) +end +-- Other COUNT +-- FluffalS COUNT +function CountFPatchworkTarget() + return + math.min(CardsMatchingFilter(AIDeck(),FilterID,24094653),CountEdgeImp(AIDeck())) -- Poly/EdgeImp +end +-- Spell COUNT +-- Trap COUNT +-- Frightfur COUNT +function CountFrightfurMon(cards) + return CardsMatchingFilter(cards,FrightfurMonFilter) +end +-- Other Fusion COUNT +-- Other XYZ COUNT + +-- FUSION COUNT +function CountFrighturFusion(prio) + local result = 0 + if prio == nil then prio = 3 end + --local fusionExtra = SubGroup(AIExtra(),FilterType,TYPE_FUSION) + --CountPrioTarget(AIExtra(),PRIO_TOFIELD,3,nil,FilterType,TYPE_FUSION,"CountFrighturFusion") + result = CountPrioTarget(AIExtra(),PRIO_TOFIELD,1) + return result +end +function CountFluffalMaterial(cards,loc,safe) + local result = 0 + local minPrio = FluffalPrioMode(safe) + if loc == nil then loc = MATERIAL_TOGRAVE end + --CountPrioTarget(cards,loc,minPrio,TYPE_MONSTER,FluffalFilter,nil,"CountFluffalMaterial: ") + result = CountPrioTarget(cards,loc,minPrio,TYPE_MONSTER,FluffalFilter) + return result +end +function CountEdgeImpMaterial(cards,loc,safe) + local result = 0 + local minPrio = 1 + if loc == nil then loc = MATERIAL_TOGRAVE end + --CountPrioTarget(cards,loc,1,TYPE_MONSTER,EdgeImpFilter,nil,"CountEdgeImpMaterial: ") + result = CountPrioTarget(cards,loc,minPrio,TYPE_MONSTER,EdgeImpFilter) + return result +end + +------------------------ +-------- CHECK --------- +------------------------ +-- Xyz CHECK +function ToadallyPlayCheck() + return + HasID(AIExtra(),00440556,true) -- Bahamut + and OPTCheck(00440556) + and HasID(AIExtra(),90809975,true) -- Toadally +end +-- Flootgate CHECK +function FlootGateCheatCheck() + if HasID(OppHand(),05851097,true) -- Vanity + or HasID(OppHand(),30241314,true) -- MacroCosmos + or HasID(OppHand(),82732705,true) -- SkillDrain + then + return true + end + if HasID(OppDeck(),05851097,true) then + return HasID(OppDeck(),05851097,true) > (#OppDeck() - 5) + end + if HasID(OppDeck(),30241314,true) then + return HasID(OppDeck(),30241314,true) > (#OppDeck() - 5) + end + if HasID(OppDeck(),82732705,true) then + return HasID(OppDeck(),82732705,true) > (#OppDeck() - 5) + end + return false +end +function FluffalFlootGateFilter(c) + return + ( + c.id==05851097 -- Vanity's Emptiness + or c.id==30241314 -- Macro Cosmos + or c.id==82732705 -- Skill Drain + or c.id==58481572 -- Masked HERO Dark Law + ) + and FilterPosition(c,POS_FACEUP) and NotNegated(c) +end +-- SpSummon FlootGate +function VanityFilter(c) + return + ( + c.id==05851097 -- Vanity's Emptiness + or c.id==41855169 -- Jowgen the Spiritualist + or c.id==42009836 -- Fossil Dyna Pachycephalo + ) and FilterPosition(c,POS_FACEUP) and NotNegated(c) +end +-- SpExtra FlootGate +function ExtraDeckBlockedFilter(c) + return + ( + c.id==84171830 -- Monarch's Field + or c.id==76218313 -- Dragon Buster + ) + and FilterPosition(c,POS_FACEUP) and NotNegated(c) +end +-- Spell FlootGate +function SpellBlockedFilter(c) + return + ( + c.id == 33198837 -- Naturia Beast + or c.id == 58921041 -- Anti-Spell Fragance + ) + and FilterPosition(c,POS_FACEUP) and NotNegated(c) +end + +-- BossMon +function BossMonFilter(c) + return ( + c.id == 58481572 -- DarkLaw + or c.id == 90809975 -- Treatoad + or c.id == 01561110 -- BusterDragon + or c.id == 10443957 -- Infinity + or c.id == 48905153 -- Zodiac Beast Drancia + ) and NotNegated(c) +end +function InfinityMonFilter(c) + return ( + c.id == 90809975 -- Treatoad + or c.id == 10443957 -- Infinity + ) and NotNegated(c) +end + +-- Advantage Filter +function FTigerAdvantageFilter(c) + return + BossMonFilter(c) +end +function FSheepAdvantageFilter(c) + return + BAFilter(c) + or FluffalMetalfoesFilter(c) + or FilterSet(c,0xf1) -- ZodiacBeast +end + +function FluffalMetalfoesFilter(c) + return + --IsSetCode(c.setcode,0xe1) + c.id == 28016193 -- Orichalc + or c.id == 04688231 -- Mythriel + --or c.id == 77693536 -- Alkahest +end + +function MaxxCAdvantageFilter(c) + return + MaxxCZBAdvantageFilter(c) + or (c.id == 58069384 and HasID(OppExtra(),10443957,true)) -- Cyber Dragon Nova + +end + +function MaxxCZBAdvantageFilter(c) + return + c.id == 78872731 -- ZBRat + or c.id == 74393852 -- ZBWildbow + or c.id == 11510448 -- ZBTigress +end + +--[[ +39246582, -- Fluffal Dog +13241004, -- Fluffal Penguin +03841833, -- Fluffal Bear +65331686, -- Fluffal Owl +98280324, -- Fluffal Sheep +87246309, -- Fluffal Octo +02729285, -- Fluffal Cat +38124994, -- Fluffal Rabit +06142488, -- Fluffal Mouse +72413000, -- Fluffal Wings +81481818, -- Fluffal Patchwork +97567736, -- Edge Imp Tomahawk +61173621, -- Edge Imp Chain +30068120, -- Edge Imp Sabres +10802915, -- Tour Guide from the Underworld +79109599, -- King of the Swamp +06205579, -- Parasite Fusioner +67441435, -- Glow-Up Bulb + +70245411, -- Toy Vendor +06077601, -- Frightfur Fusion +43698897, -- Frightfur Factory +34773082, -- Frightfur Patchwork +28039390, -- Frightfur Reborn +01845204, -- Instant Fusion +24094653, -- Polymerization +94820406, -- Dark Fusion +05133471, -- Galaxy Cyclone +35726888, -- Foolish Burial of Belongings +43455065, -- Magical Spring +43898403, -- Twin Twister +12580477, -- Raigeki + +66127916, -- Fusion Reserve +98954106, -- Jar of Avarice +51452091, -- Royal Decree + +80889750, -- Frightfur Sabre-Tooth +40636712, -- Frightfur Kraken +10383554, -- Frightfur Leo +85545073, -- Frightfur Bear +11039171, -- Frightfur Wolf +00464362, -- Frightfur Tiger +57477163, -- Frightfur Sheep +41209827, -- Starve Venom Fusion Dragon +42110604, -- Hi-Speedroid Chanbara +83531441, -- Dante +]] \ No newline at end of file diff --git a/ai/decks/Fluffal/FluffalMaterial.lua b/ai/decks/Fluffal/FluffalMaterial.lua new file mode 100644 index 00000000..333ea5e4 --- /dev/null +++ b/ai/decks/Fluffal/FluffalMaterial.lua @@ -0,0 +1,211 @@ +------------------------ +------- MATERIAL ------- +------------------------ +function MaterialFDaredevil(cards) + if cards == nil then + cards = UseLists({AIMon(),AIHand()}) + end + if GlobalEdgeImpMaterial > 0 + and GlobalFluffalMaterial > 0 + then + return true + end + return false +end +function MaterialFDaredevilBanish(cards) + if cards == nil then + cards = UseLists({AIMon(),AIGrave()}) + end + return MaterialFDaredevil(cards) +end +function MaterialFSabreTooth(cards) + if cards == nil then + cards = UseLists({AIMon(),AIHand()}) + end + if ( + HasID(AIMon(),40636712,true) -- FKraken + or HasID(AIMon(),85545073,true) -- FBear + or HasID(AIMon(),00464362,true) -- FTiger + or HasID(AIMon(),57477163,true) -- FSheep + ) + and ( + GlobalEdgeImpMaterial + GlobalFluffalMaterial > 1 + or + GlobalEdgeImpMaterial + GlobalFluffalMaterial > 0 + and #OppField() < 2 + and BattlePhaseCheck() + ) + then + return true + end + return false +end +function MaterialFSabreToothBanish(cards) + if cards == nil then + cards = UseLists({AIMon(),AIGrave()}) + end + if CardsMatchingFilter(AIGrave(),FrightfurMonFilter) > 1 + and GlobalEdgeImpMaterial + GlobalFluffalMaterial > 1 + then + return true + end + return false +end + +function MaterialFKraken(cards) + if cards == nil then + cards = UseLists({AIMon(),AIHand()}) + end + if GlobalEdgeImpMaterial > 0 + and GlobalFluffalMaterial > 0 + then + return true + end + return false +end +function MaterialFKrakenBanish(cards) + if cards == nil then + cards = UseLists({AIMon(),AIGrave()}) + end + return MaterialFKraken(cards) +end + +function MaterialFLeo(cards) + if cards == nil then + cards = UseLists({AIMon(),AIHand()}) + end + if ( + HasID(cards,34688023,true) -- Saw + or CardsMatchingFilter(cards,SubstituteMaterialFilter) > 0 + ) + and GlobalFluffalMaterial > 0 + then + return true + end + return false +end +function MaterialFLeoBanish(cards) + if cards == nil then + cards = UseLists({AIMon(),AIGrave()}) + end + return MaterialFLeo(cards) +end + +function MaterialFBear(cards) + if cards == nil then + cards = UseLists({AIMon(),AIHand()}) + end + if + HasID(cards,30068120,true) -- Sabres + and HasID(cards,03841833,true) -- Bear + or + HasID(cards,30068120,true) -- Sabres + and CardsMatchingFilter(cards,SubstituteMaterialFilter) > 0 + or + HasID(cards,03841833,true) -- Bear + and CardsMatchingFilter(cards,SubstituteMaterialFilter) > 0 + then + return true + end + return false +end +function MaterialFBearBanish(cards) + if cards == nil then + cards = UseLists({AIMon(),AIGrave()}) + end + return MaterialFBear(cards) +end + +function MaterialFWolf(cards) + if cards == nil then + cards = UseLists({AIMon(),AIHand()}) + end + if HasID(cards,30068120,true) -- Sabres + and GlobalFluffalMaterial > 0 + then + return true + end + return false +end +function MaterialFWolfBanish(cards) + if cards == nil then + cards = UseLists({AIMon(),AIGrave()}) + end + return MaterialFWolf(cards) +end + +function MaterialFTiger(cards) + if cards == nil then + cards = UseLists({AIMon(),AIHand()}) + end + if ( + HasID(cards,30068120,true) -- Sabres + or + CardsMatchingFilter(cards,SubstituteMaterialFilter) > 0 + ) + and GlobalFluffalMaterial > 0 + then + return true + end + return false +end +function MaterialFTigerBanish(cards) + if cards == nil then + cards = UseLists({AIMon(),AIGrave()}) + end + return MaterialFTiger(cards) +end + +function MaterialFSheep(cards) + if cards == nil then + cards = UseLists({AIMon(),AIHand()}) + end + if ( + HasID(cards,61173621,true) -- Chain + or + CardsMatchingFilter(cards,SubstituteMaterialFilter) > 0 + ) + and GlobalFluffalMaterial > 0 + then + return true + end + return false +end +function MaterialFSheepBanish(cards) + if cards == nil then + cards = UseLists({AIMon(),AIGrave()}) + end + return MaterialFSheep(cards) +end + +function MaterialFStarve() + --print("MaterialFStarve") + local countStarveMaterial = 0 + local fsabre = CardsMatchingFilter(AIMon(),FilterID,80889750) -- FSabretooth + local frightfurs = CardsMatchingFilter(AIMon(),FrightfurMonFilter) + local monSubgroup = SubGroup(AIMon(),NotFrightfurMonFilter) + countStarveMaterial = CardsMatchingFilter(monSubgroup,FilterAttribute,ATTRIBUTE_DARK) + if (frightfurs - fsabre) > 0 + then + countStarveMaterial = countStarveMaterial + 1 + end + --print(fsabre,frightfurs,countStarveMaterial) + if countStarveMaterial >= 2 + and GlobalPolymerization == 1 + then + return true + end + return false +end + +--[[ +91034681, -- Frightfur Daredevil +80889750, -- Frightfur Sabre-Tooth +40636712, -- Frightfur Kraken +10383554, -- Frightfur Leo +85545073, -- Frightfur Bear +11039171, -- Frightfur Wolf +00464362, -- Frightfur Tiger +57477163, -- Frightfur Sheep +41209827, -- Starve Venom Fusion Dragon +]] \ No newline at end of file diff --git a/ai/decks/Fluffal/FluffalSummon.lua b/ai/decks/Fluffal/FluffalSummon.lua new file mode 100644 index 00000000..0bcbd751 --- /dev/null +++ b/ai/decks/Fluffal/FluffalSummon.lua @@ -0,0 +1,690 @@ +------------------------ +-------- SUMMON -------- +------------------------ +-- Fluffal SUMMON +function SummonDog() + return + OPTCheck(39246582) + and CountFluffal(AIDeck()) > 0 + and #AIDeck() > 17 +end +function SummonDogEnd() + return + OPTCheck(39246582) + and CountFluffal(AIDeck()) > 0 +end +function SummonPenguin() + if CardsMatchingFilter(AIHand(),PenguinFilter) > 0 + and CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) == 0 + then + return true + end + return false +end +function SummonPenguinAwesome(c) + local waterMon = SubGroup(AIMon(),FilterAttribute,ATTRIBUTE_WATER) + if ( + HasID(UseLists({AIHand(),AIST()}),01845204,true) -- IFusion + and OPTCheck(01845204) + and HasID(AIExtra(),17412721,true) -- Norden + or + CardsMatchingFilter(waterMon,FilterLevel,4) > 0 + ) + and ToadallyPlayCheck() + and #AIMon() <= 3 + then + return true + elseif CardsMatchingFilter(AIHand(),FilterID,c.id) >= 2 + and HasIDNotNegated(AIMon(),03113836,true) -- GK Seraphinite + then + return true + end + return false +end +function SummonOwl(c) + return + OPTCheck(65331686) -- Own + and CardsMatchingFilter(OppField(),ExtraDeckBlockedFilter) == 0 + and ( + CardsMatchingFilter(UseLists({AIHand(),AIMon()}),FluffalFusionMonFilter) + + + CardsMatchingFilter(AIMon(),FrightfurMonFilter) + ) > 0 +end +function SummonOwlNoFusionST(c) + return + OPTCheck(65331686) -- Own + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) == 0 + and UseOwlPoly(c) + and not OPTCheck(72413000) -- Wings + and CardsMatchingFilter(OppField(),ExtraDeckBlockedFilter) == 0 +end +function SpSummonSheep() + if OPTCheck(98280324) + and not HasID(AIMon(),98280324,true) + and CountEdgeImp(AIGrave()) > 0 + then + return true + else + return false + end +end +function SpSummonSheepTomahawk() + if OPTCheck(98280324) + and not HasID(AIMon(),98280324,true) + and HasID(AIHand(),97567736,true) -- Tomahawk + then + return true + else + return false + end +end +function SpSummonSheepEnd() + if OPTCheck(98280324) + and not HasID(AIMon(),98280324,true) + and CountEdgeImp(UseLists({AIGrave(),AIHand()})) > 0 + then + return true + else + return false + end +end +function SummonOcto() + if UseOcto() then + if CardsMatchingFilter(AIBanish(),FilterType,TYPE_MONSTER) > 0 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + then + return true + elseif CanUseSheep(true) + then + return true + end + end + return false +end +function SummonOctoDiscard() + if UseOcto() + and ( + HasID(AIHand(),70245411,true) -- TVendor + or + CardsMatchingFilter(AIST(),TVendorCheckFilter,true) > 0 + or + HasID(AIGrave(),03841833,true) -- Bear + and OPTCheck(03841833) + and HasID(AIDeck(),70245411,true) + ) + then + return true + end + return false +end +function SummonMouse(mode) + if mode == nil then + mode = 2 + end + if OPTCheck(06142488) + and Get_Card_Count_ID(AIDeck(),06142488) == mode + and #AIMon() < 3 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter2) > 0 + and ( + CountEdgeImp(UseLists({AIHand(),AIMon()})) + or CardsMatchingFilter(UseLists({AIHand(),AIMon()}),SubstituteMaterialFilter) > 0 + ) + and BattlePhaseCheck() + then + return true + else + return false + end +end +function SummonPatchwork() + if CountEdgeImp(UseLists({AIMon(),AIHand()})) == 0 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter2) > 0 + and not HasID(UseLists({AIHand(),AIST()}),01845204,true) -- IFusion + then + return true + else + return false + end +end +-- EdgeImp SUMMON +function SummonTomahawk(c) + return OPTCheck(97567736+1) +end +function SummonChain(c) + return SummonEdgeImp(c) +end +function SummonSabres(c) + return SummonEdgeImp(c) +end +function SummonEdgeImp(c) + return + BattlePhaseCheck() + and ( + OppGetStrongestAttDef() < c.attack + or + OppGetStrongestAttDef() < AIGetStrongestAttack() + and ( + CanWinBattle(c,OppMon()) + or CardsMatchingFilter(AIMon(),FrightfurMonFilter) >= #OppMon() + ) + ) +end +-- Other SUMMON +function SummonTGuide() + if HasID(AIDeck(),30068120,true) -- Sabres + and OPTCheck(06142488) -- Mouse + and #AIMon() <= 3 + then + if HasID(AIExtra(),83531441,true) -- Dante + and ( + CardsMatchingFilter(OppMon(),FilterAttackMax,2400) > 0 + or #OppMon() == 0 + ) + then + return true + elseif HasID(AIExtra(),41209827,true) -- FStarve + and CardsMatchingFilter(OppMon(),FilterSummon,SUMMON_TYPE_SPECIAL) > 0 + and CardsMatchingFilter(OppMon(),FilterLevelMin,5) > 0 + and HasID(UseLists({AIHand(),AIST()}),24094653,true) -- Polymerization + then + return true + else + return false + end + else + return false + end +end +function SummonBulb() + if FieldCheck(4) > 0 + and OPTCheck(06142488) -- Mouse + and OppGetStrongestAttDef() <= 2100 + and AI.GetCurrentPhase() == PHASE_MAIN1 + then + return true + end + return false +end +-- Frightfur SUMMON +function FSummonFDaredevil(c) + return SpSummonFDaredevil(c) +end +function SpSummonFDaredevil(c) + local frightfurAtk = c.attack + FrightfurBoost(c.id) + local canAttack = FluffalCanAttack(OppMon(),frightfurAtk) + local frightfurGrave = CountFrightfurMon(UseLists({AIGrave(),AIMon()})) + + if (frightfurGrave + 1) * 500 >= AI.GetPlayerLP(2) + or + OppGetStrongestAttDef() >= AIGetStrongestAttack() + and frightfurAtk > OppGetStrongestAttDef() + and OppGetStrongestAttDef() > 3000 + and Duel.GetTurnCount() > 1 + then + return true + end + return false +end + +function FSummonFSabreTooth(c) + if not HasIDNotNegated(AIMon(),80889750,true) -- FSabreTooth + then + return true + elseif CardsMatchingFilter(AIMon(),FilterID,80889750) < 2 + and #AIMon() <= 4 + and CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) <= 2 + and BattlePhaseCheck() + and ( + HasID(AIMon(),40636712,true) -- FKraken + or HasID(AIMon(),00464362,true) -- FTiger + ) + then + return true + else + if CardsMatchingFilter(AIMon(),FilterID,80889750) == 2 + or not BattlePhaseCheck() + or #AIMon() <= 4 + then + return 1 + end + return false + end +end +function SpSummonFSabreTooth(c) + if not HasIDNotNegated(AIMon(),80889750,true) -- FSabreTooth + then + return 1 + end + return false +end + +function FSummonFKraken(c) + return SpSummonFKraken(c) +end +function SpSummonFKraken(c) + local frightfurAtk = 2200 + FrightfurBoost(40636712) + local canAttack = FluffalCanAttack(OppMon(),frightfurAtk) + if not HasIDNotNegated(AIMon(),40636712,true) -- FKraken + then + if CardsMatchingFilter(OppMon(),FilterAffected,EFFECT_INDESTRUCTABLE) > 0 + and CardsMatchingFilter(OppMon(),FilterAffected,EFFECT_IMMUNE_EFFECT) < #OppMon() + or + CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) < 2 + and ( + #OppMon() == 0 + or + #OppMon() == 1 + and CountFluffal(UseLists({AIHand(),AIMon()})) + CountEdgeImp(UseLists({AIHand(),AIMon()})) >= 2 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + and CardsMatchingFilter(OppMon(),FilterAffected,EFFECT_IMMUNE_EFFECT) < #OppMon() + or + #OppMon() == 2 + and canAttack > 0 + or + #OppMon() > 2 + and canAttack >= 2 + ) + then + return true + else + return false + end + else + if not BattlePhaseCheck() then + return 1 + end + return false + end +end + +function FLeoFinish() + return CardsMatchingFilter(OppMon(),FLeoFinishFilter,c) > 0 +end +function FSummonFLeo(c) + return SpSummonFLeo(c) +end +function SpSummonFLeo(c) + return + not HasIDNotNegated(AIMon(),10383554,true) -- FLeo + and OPTCheck(10383554) + and FLeoFinish() +end + +function FSummonFBear(c) + return SpSummonFBear(c) +end +function SpSummonFBear(c) + if not BattlePhaseCheck() then + return 1 + end + local frightfurAtk = 2200 + FrightfurBoost(85545073) + c.attack = frightfurAtk + local canAttack = FluffalCanAttack(OppMon(),frightfurAtk) + if not HasIDNotNegated(AIMon(),85545073,true) -- FBear + then + return + #OppMon() > 0 + and canAttack > 0 + and CanWinBattle(c,OppMon(),true) + end + return false +end + +function FWolfFinish() + --print("FWolfFinish") + local cards = UseLists({AIHand(),AIMon()}) + if GlobalFFusion == 1 then cards = UseLists({AIGrave(),AIMon()}) end + local fluffalMon = CountFluffal(cards) + local frightfurMon = CountFrightfurMon(AIMon()) + local expecteDamage = ExpectedDamageMichelet(1,NotFluffalFilter) + local fBoost = FrightfurBoost(11039171) + local frightfurAtk = 2000 + fBoost + --print("FWolf - Attack",frightfurAtk) + --print("expecteDamage: "..expecteDamage) + expecteDamage = expecteDamage + (fBoost * (frightfurMon + 1)) + --print("DummyExpecteDamage: "..expecteDamage) + local materialNeeded = math.ceil((AI.GetPlayerLP(2) - expecteDamage) / frightfurAtk) + --print("MaterialNeeded: "..materialNeeded) + --print((fluffalMon + 1),fluffalMon,(fluffalMon + 1) >= materialNeeded) + return + #OppMon() == 0 + or + HasIDNotNegated(AIMon(),80889750,true) + and HasIDNotNegated(AIMon(),00464362,true) + and CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) < 3 + or + #OppMon() <= 1 + and HasIDNotNegated(AIMon(),00464362,true) + and CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) == 0 + and OppGetStrongestAttDef() < 3000 + or + #OppField() == 0 + and CountFluffal > 1 + or + HasIDNotNegated(AIMon(),00464362,true) + and CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) == 0 + and ( + AIGetStrongestAttack() > OppGetStrongestAttDef() + or frightfurAtk > OppGetStrongestAttDef() + ) + and expecteDamage < AI.GetPlayerLP(2) + and + (fluffalMon + 1) >= materialNeeded +end +function FSummonFWolf(c) + if not BattlePhaseCheck() then + return 0 + end + if not HasIDNotNegated(AIMon(),11039171,true) -- FWolf + then + return + FWolfFinish() + and CardsMatchingFilter(OppMon(),FilterAffected,EFFECT_INDESTRUCTABLE_BATTLE) == 0 + end + return false +end +function SpSummonFWolf(c) + return false +end + +function FSummonFTiger(c) + if not HasIDNotNegated(AIMon(),00464362,true) -- FTiger + and BattlePhaseCheck() + then + if CardsMatchingFilter(OppField(),FTigerAdvantageFilter) > 0 + then + return 11 + end + if GlobalFFusion > 0 + and CardsMatchingFilter(OppField(),FTigerDestroyFilter) > 3 + then + return 10 + end + if OppGetStrongestAttDef() >= AIGetStrongestAttack() + and OppGetStrongestAttDef() > 3000 + and CardsMatchingFilter(OppMon(),FilterAffected,EFFECT_IMMUNE_EFFECT) > 0 + then + if HasID(AIMon(),80889750,true) -- FSabreTooth + then + return 10 + elseif CardsMatchingFilter(OppField(),FTigerDestroyFilter) > 0 + then + return 9 + else + return 8 + end + end + return + CardsMatchingFilter(OppField(),FTigerDestroyFilter) > 1 + or + CardsMatchingFilter(OppField(),FTigerDestroyFilter) == 1 + and OppGetStrongestAttDef() >= AIGetStrongestAttack() + and HasID(AIMon(),80889750,true) -- FSabreTooth + else + if not BattlePhaseCheck() then + return 1 + end + end + return false +end +function SpSummonFTiger(c) + return + not HasID(AIMon(),00464362,true) -- FTiger + and OppGetStrongestAttDef() >= AIGetStrongestAttack() + and HasID(AIMon(),80889750,true) -- FSabreTooth + and BattlePhaseCheck() +end + +function FSummonFSheep(c) + if not HasIDNotNegated(AIMon(),57477163,true) -- FSheep + then + if Duel.GetTurnCount() == 1 + and not OPTCheck(61173621) -- Chain + then + return 1 + end + return SpSummonFSheep(c) + end + return false +end +function SpSummonFSheep(c) + local frightfurAtk = 2000 + FrightfurBoost(57477163) + if not HasIDNotNegated(AIMon(),57477163,true) -- FSheep + then + if CardsMatchingFilter(OppField(),FSheepAdvantageFilter) > 0 then + if CardsMatchingFilter(OppMon(),FilterPosition,POS_ATTACK) > 0 + or CardsMatchingFilter(OppMon(),FilterDefenseMax,frightfurAtk-1) > 0 + then + return 9 + else + return 5 + end + end + return true + else + if not BattlePhaseCheck() then + return 1 + end + end + return false +end +-- OtherF SUMMON +function FSummonFStarve(c) + return + CardsMatchingFilter(OppMon(),FilterSummon,SUMMON_TYPE_SPECIAL) > 0 + and ( + SpSummonFStarve() + or + AI.GetPlayerLP(2) <= 2800 + and CardsMatchingFilter(OppMon(),FilterPosition,POS_FACEUP_ATTACK) > 0 + ) +end +function SpSummonFStarve(c) + if not HasIDNotNegated(AIMon(),41209827,true) -- FStarve + then + return CardsMatchingFilter(OppMon(),FilterLevelMin,5) > 0 + end + return false +end + +-- OtherS SUMMON +function SpSummonNaturiaBeast(c) + return + OppGetStrongestAttack() <= 2200 +end +function SpSummonChanbara(c) + return + AI.GetCurrentPhase() == PHASE_MAIN1 + and GlobalBPAllowed + and ( + OppGetStrongestAttack() < AIGetStrongestAttack() + or CardsMatchingFilter(OppMon(),FilterAttackMax,2200) > 0 + or #OppMon() == 0 + ) +end +-- OtherX SUMMON +function SpSummonBahamutFluffal(c) + if HasID(AIExtra(),90809975,true) then -- Toadally + GlobalSummonId = 00440556 + return true + end + return false +end + +------------------------ +--------- SET ---------- +------------------------ +function SetChain(c) + return not HasID(AIMon(),c.id,true) +end +function SetSabres(c) + return SetFluffal(c) +end +function SetFluffal(c) + if CardsMatchingFilter(AIMon(),FluffalFusionMonFilter) > 0 + or #AIMon() > 0 + then + return false + end + return true +end +-- Trap SET +-- Trap Set +function SetFReserve(c) + return true +end +function SetRDecree(c) + return not HasID(AIST(),c.id,true) +end +------------------------ +------ REPOSITION ------ +------------------------ +function RepFSabreTooth(c) + if FilterPosition(c,POS_DEFENSE) + and CardsMatchingFilter(OppMon(),FilterAttackMax,c.attack) > 0 + then + return true + elseif FilterPosition(c,POS_ATTACK) + and AI.GetCurrentPhase() == PHASE_MAIN2 + and CardsMatchingFilter(OppMon(),FilterAttackMin,c.attack+1) > 0 + then + return true + else + return false + end +end +function RepFKraken(c) + if FilterPosition(c,POS_DEFENSE) + and AI.GetCurrentPhase() == PHASE_MAIN1 + then + if c.attack >= c.defense then + return true + end + if OPTCheck(c.id) + and OppGetStrongestAttack() < AIGetStrongestAttack() + then + return true + elseif not OPTCheck(c.id) + and OppGetStrongestAttack() < c.attack + then + return true + elseif not OPTCheck(c.id) + and OppGetStrongestAttack() < AIGetStrongestAttack() + and OppGetStrongestAttack() >= c.attack + and #OppMon() > 1 + then + return true + end + end + if AI.GetCurrentPhase() == PHASE_MAIN2 then + return GenericReposition(c) + end + return false +end +function RepFSheep(c) + if FilterPosition(c,POS_DEFENSE) + then + return true + else + return false + end +end + +function RepDante(c) + if FilterPosition(c,POS_DEFENSE) + and BattlePhaseCheck() + and ( + #OppMon() == 0 + or OppGetStrongestAttDef() <= c.attack + ) + and NotNegated(c) + or + FilterPosition(c,POS_FACEUP_ATTACK) + and ( + Negated(c) + or TurnEndCheck() + or OppGetStrongestAttDef()>=1000 + and OppHasStrongestMonster() + ) + then + return true + elseif FilterPosition(c,POS_FACEDOWN_DEFENSE) + and c.xyz_material_count > 0 + then + return true + else + return false + end +end + + +function GenericReposition(c) + if FilterPosition(c,POS_ATTACK) then + if c.defense > c.attack + then + return true + else + return false + end + end + if FilterPosition(c,POS_DEFENSE) then + if c.attack >= c.defense then + return true + else + return false + end + end + return false +end + +--[[ +39246582, -- Fluffal Dog +13241004, -- Fluffal Penguin +03841833, -- Fluffal Bear +65331686, -- Fluffal Owl +98280324, -- Fluffal Sheep +87246309, -- Fluffal Octo +02729285, -- Fluffal Cat +38124994, -- Fluffal Rabit +06142488, -- Fluffal Mouse +72413000, -- Fluffal Wings +81481818, -- Fluffal Patchwork +97567736, -- Edge Imp Tomahawk +61173621, -- Edge Imp Chain +30068120, -- Edge Imp Sabres +10802915, -- Tour Guide from the Underworld +79109599, -- King of the Swamp +06205579, -- Parasite Fusioner +67441435, -- Glow-Up Bulb + +70245411, -- Toy Vendor +06077601, -- Frightfur Fusion +43698897, -- Frightfur Factory +34773082, -- Frightfur Patchwork +28039390, -- Frightfur Reborn +01845204, -- Instant Fusion +24094653, -- Polymerization +94820406, -- Dark Fusion +05133471, -- Galaxy Cyclone +35726888, -- Foolish Burial of Belongings +43455065, -- Magical Spring +43898403, -- Twin Twister +12580477, -- Raigeki + +66127916, -- Fusion Reserve +98954106, -- Jar of Avarice +51452091, -- Royal Decree + +91034681, -- Frightfur Daredevil +80889750, -- Frightfur Sabre-Tooth +40636712, -- Frightfur Kraken +10383554, -- Frightfur Leo +85545073, -- Frightfur Bear +11039171, -- Frightfur Wolf +00464362, -- Frightfur Tiger +57477163, -- Frightfur Sheep +41209827, -- Starve Venom Fusion Dragon +42110604, -- Hi-Speedroid Chanbara +83531441, -- Dante +]] \ No newline at end of file diff --git a/ai/decks/Fluffal/FluffalTarget.lua b/ai/decks/Fluffal/FluffalTarget.lua new file mode 100644 index 00000000..eb8afb8d --- /dev/null +++ b/ai/decks/Fluffal/FluffalTarget.lua @@ -0,0 +1,600 @@ +------------------------ +-------- TARGET -------- +------------------------ +function DogTarget(cards,min,max,c) + --CountPrioTarget(cards,PRIO_TOHAND,1,nil,nil,nil,"DogTarget") + return Add(cards,PRIO_TOHAND,max) +end +GlobalPenguin = 0 +function PenguinTarget(cards,min,max,c) + if GlobalPenguin == 1 then + --CountPrioTarget(cards,PRIO_TOFIELD,1,nil,nil,nil,"PenguinTarget - Field") + return Add(cards,PRIO_TOFIELD,max) + end + if GlobalPenguin == 0 then + --CountPrioTarget(cards,PRIO_DISCARD,1,nil,nil,nil,"PenguinTarget - Grave") + return Add(cards,PRIO_DISCARD,min) + end +end +function OwlTarget(cards,min,max,c) + local result + if GlobalOwl == 1 then + result = FusionSummonTarget(cards,min,max,c,MATERIAL_TOGRAVE) + else + result = Add(cards) + end + return result +end +function SheepTarget(cards,min,max,c) + if LocCheck(cards,LOCATION_MZONE) then + local result = {} + for i=1, #cards do + local c = cards[i] + result[i] = c + result[i].prio = GetPriority(c,PRIO_TOHAND) + --print("SheepTarget - id: "..result[i].id.." prio: "..result[i].prio) + result[i].index = i + end + local compare = function(a,b) return a.prio>b.prio end + table.sort(result,compare) + --print("SheepTarget - MZONE to HAND") + --return Add(cards,PRIO_TOHAND,max) + return {result[1].index} + end + if LocCheck(cards,LOCATION_GRAVE) + or LocCheck(cards,LOCATION_HAND) + then + return Add(cards,PRIO_TOFIELD,max) + end +end +function OctoTarget(cards,min,max,c) + if LocCheck(cards,LOCATION_GRAVE) then + if HasID(AIGrave(),72413000,true) -- Wings + and OPTCheck(72413000) + and CountFluffal(AIGrave()) <= 2 + and CountEdgeImp(AIGrave()) > 0 + then + --CountPrioTarget(cards,PRIO_TOHAND,max,nil,EdgeImpFilter,nil,"OctoTarget") + result = Add(cards,PRIO_TOHAND,max,EdgeImpFilter) + else + --CountPrioTarget(cards,PRIO_TOHAND,max,nil,nil,nil,"OctoTarget") + result = Add(cards,PRIO_TOHAND,max) + end + GlobalOcto = 0 + return result + end + if LocCheck(cards,LOCATION_REMOVED) then + return Add(cards,PRIO_TOGRAVE,max) + end +end +function CatTarget(cards,min,max,c) + return Add(cards,PRIO_TOHAND,max) +end +function RabitTarget(cards,min,max,c) + return Add(cards,PRIO_TOHAND,max) +end +function MouseTarget(cards,min,max,c) + return Add(cards,PRIO_TOFIELD,max) +end +function WingsTarget(cards,min,max,c) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_BANISH,min) + end + if LocCheck(cards,LOCATION_SZONE) then + return Add(cards,PRIO_TOGRAVE,min) + end +end +-- EdgeImp TARGET +function TomahawkTarget(cards,min,max,c) + if LocCheck(cards,LOCATION_DECK) then + --print("TomahawkTarget - DECK to GRAVE") + return Add(cards,PRIO_TOGRAVE,max) + end + if LocCheck(cards,LOCATION_HAND) then + --print("TomahawkTarget - HAND to GRAVE") + return Add(cards,PRIO_DISCARD,min) + end +end +function ChainTarget(cards,min,max,c) + return Add(cards,PRIO_TOHAND,max) +end +GlobalSabres = 0 +function SabresTarget(cards,min,max,c) + if GlobalSabres == 1 then -- SabresMouse + return Add(cards,PRIO_DISCARD,min,FilterID,06142488) -- Mouse + end + if GlobalSabres == 2 then -- SabreFPatchwork + if CountEdgeImp(AIDeck()) == 0 then + return Add(cards,PRIO_DISCARD,min,EdgeImpFilter) -- EdgeImp + end + if not HasID(AIDeck(),24094653,true) then + return Add(cards,PRIO_DISCARD,min,FilterID,24094653) -- Polymerization + end + end + if ( + CardsMatchingFilter(AIST(),TVendorCheckFilter,true) > 0 + or HasID(AIHand(),70245411,true) -- TVendor + ) + and PriorityCheck(AIHand(),PRIO_DISCARD) > 3 + then + return Add(cards,PRIO_TOFIELD,min,FluffalFilter) + end + return Add(cards,PRIO_DISCARD) +end +-- Other TARGET +function TGuideTarget(cards,min,max,c) + return Add(cards,PRIO_TOFIELD,max) +end +function KoSTarget(cards,min,max,c) + return Add(cards,PRIO_TOHAND,max) +end +function PFusionerTarget(cards,min,max,c) + local result + GlobalPolymerization = 1 + result = FusionSummonTarget(cards,min,max,c,MATERIAL_TOGRAVE) + GlobalPolymerization = 0 + return result +end +-- FluffalS TARGET +GlobalTVendor = 0 +function TVendorTarget(cards,min,max,c) + if LocCheck(cards,LOCATION_DECK) then + --print("TVendorTarget - DECK to HAND") + GlobalTVendor = 0 + --CountPrioTarget(cards,PRIO_TOHAND,1,nil,nil,nil,"TVendorTarget - HAND") + return Add(cards,PRIO_TOHAND) + end + if GlobalTVendor == 0 then + --print("TVendorTarget - HAND to GRAVE") + GlobalTVendor = 1 + return Add(cards,PRIO_DISCARD) + end + if GlobalTVendor == 1 then + --print("TVendorTarget - HAND to FIELD") + GlobalTVendor = 2 + --CountPrioTarget(cards,PRIO_TOFIELD,1,nil,nil,nil,"TVendorTarget - HAND to FIELD") + return Add(cards,PRIO_TOFIELD) + end + if GlobalTVendor == 2 then + GlobalTVendor = 0 + end +end + +function FPatchworkTarget(cards,min,max,c) + --CountPrioTarget(cards,PRIO_TOHAND,1,nil,nil,nil,"FPatchworkTarget") + return Add(cards,PRIO_TOHAND,max) +end +function FRebornTarget(cards,min,max,c) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_TOFIELD,max) + end + if LocCheck(cards,LOCATION_REMOVED) then + return Add(cards,PRIO_TOGRAVE,max) + end +end + +-- FUSION TARGET +GlobalFusionPerform = 0 -- Perform Only +GlobalFusionId = 0 -- Fusion MonsterID + +GlobalPolymerization = 0 +function PolymerizationTarget(cards,min,max,c) + if FilterLocation(c,LOCATION_GRAVE) then -- FSubstitute + return Add(cards,PRIO_TODECK) + end + local result + GlobalPolymerization = 1 + result = FusionSummonTarget(cards,min,max,c,MATERIAL_TOGRAVE) + GlobalPolymerization = 0 + return result +end +GlobalDFusion = 0 +function DFusionTarget(cards,min,max,c) + local result + GlobalDFusion = 1 + result = FusionSummonTarget(cards,min,max,c,MATERIAL_TOGRAVE) + GlobalDFusion = 0 + return result +end +GlobalFFactory = 0 +function FFactoryTarget(cards,min,max,c) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_BANISH) + end + if LocCheck(cards,LOCATION_REMOVED) then + return Add(cards,PRIO_TOHAND) + end + local result + GlobalFFactory = 1 + result = FusionSummonTarget(cards,min,max,c,MATERIAL_TOGRAVE) + GlobalFFactory = 0 + return result +end +GlobalFFusion = 0 +function FFusionTarget(cards,min,max,c) + local result + GlobalFFusion = 1 + result = FusionSummonTarget(cards,min,max,c,PRIO_BANISH) + GlobalFFusion = 0 + return result +end + +-- Spell TARGET +GlobalIFusion = 0 +function IFusionTarget(cards,min,max,c) + GlobalIFusion = 1 + CountPrioTarget(cards,PRIO_TOFIELD,1,nil,nil,nil,"IFusionTarget") + local result = Add(cards,PRIO_TOFIELD,max) + OPTSet(cards[1].cardid) + return result +end +function FBoBTarget(cards,min,max,c) + return Add(cards,PRIO_TOGRAVE,max) +end +function MSpringTarget(cards,min,max,c) + return Add(cards,PRIO_DISCARD,min) +end +-- Trap TARGET +function FReserveTarget(cards,min,max,c) + if LocCheck(cards,LOCATION_EXTRA) then + --print("FReserveTarget - EXTRA") + return Add(cards,PRIO_TOHAND) + end + if LocCheck(cards,LOCATION_DECK) then + --print("FReserveTarget - DECK to HAND") + return Add(cards,PRIO_TOHAND) + end +end +function JAvariceTarget(cards,min,max,c) + return Add(cards,PRIO_TOHAND,5,FilterType,TYPE_SPELL+TYPE_TRAP) +end + +-- Frightfur TARGET +function FSabreToothTarget(cards,min,max,c) + return Add(cards,PRIO_TOFIELD,max) +end +function FKrakenTarget(cards,min,max,c) + return BestTargets(cards,max,TARGET_DESTROY,FKrakenSendFilter) +end +function FLeoTarget(cards,min,max,c) + return BestTargets(cards,max,TARGET_DESTROY,FTigerDestroyFilter) +end +function FTigerTarget(cards,min,max,c) + local maxTargets = CardsMatchingFilter(OppField(),FTigerDestroyFilter) + --print("maxTargets: "..maxTargets) + if maxTargets > max then + maxTargets = max + end + local result = BestTargets(cards,maxTargets,TARGET_DESTROY,FTigerDestroyFilter) + return result +end +-- OtherF TARGET +function FStarveTarget(cards,min,max,c) + return BestTargets(cards,max,TARGET_DESTROY) +end +function FNordenTarget(cards,min,max,c) + if CardsMatchingFilter(AIGrave(),FluffalNordenFilter) > 0 then + return Add(cards,PRIO_TOFIELD,max,FluffalNordenFilter) + else + return Add(cards,PRIO_TOFIELD,max) + end +end +-- Other TARGET +function BossMonsterTarget(cards,min,max,c) + local bossIndex = 1 + if HasIDNotNegated(cards,58481572,true) + then + bossIndex = IndexByID(cards,58481572) -- DarkLaw + elseif HasIDNotNegated(cards,90809975,true) + then + bossIndex = IndexByID(cards,90809975) -- Treatoad + elseif HasIDNotNegated(cards,10443957,true) + then + bossIndex = IndexByID(cards,01561110) -- ABC Buster Dragon + elseif HasIDNotNegated(cards,01561110,true) + then + bossIndex = IndexByID(cards,10443957) -- Infinity + end + if bossIndex then + print("InfiniteIndex: "..bossIndex) + return {bossIndex} + else + return BestTargets(cards,max,TARGET_DESTROY) + end +end + +-- FUSION FUNCTIONS +function MaxMaterials(fusionId,min,max) + local result = 1 + if fusionId == 80889750 -- FSabreTooth + and GlobalFusionPerform == 3 + then + result = 2 + else + result = 1 + end + + if fusionId == 11039171 then -- FWolf + result = 1 + local expectedDamage = ExpectedDamageMichelet(1,NotFluffalFilter) + local oppRemainLP = AI.GetPlayerLP(2) - expectedDamage + if oppRemainLP > 0 + then + result = math.ceil(oppRemainLP / (2000 + FrightfurBoost(fusionId))) + end + end + + if fusionId == 00464362 then -- FTiger + if CardsMatchingFilter(OppField(),FTigerAdvantageFilter) + then + return min + end + if CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + then + result = max - 2 + else + result = max - 1 + end + if #AIMon() > 4 then + result = result + 1 + end + + if (result + 1) > CardsMatchingFilter(OppField(),FTigerDestroyFilter) then + result = CardsMatchingFilter(OppField(),FTigerDestroyFilter) - 1 + end + if HasID(UseLists({AIHand(),AIMon()}),02729285,true) -- Cat + or GlobalFFusion == 0 + then + if result > 3 then + result = 3 + end + end + if CardsMatchingFilter(OppMon(),InfinityMonFilter) > 0 -- InfinityMon + and CardsMatchingFilter(UseLists({AIHand(),AIMon()}),FluffalFusionProtectFilter) == 0 + then + result = 1 + end + if CardsMatchingFilter(OppField(),FluffalFlootGateFilter) > 0 then + result = 1 + end + if CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) >= 3 + then + result = 1 + elseif CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) == 2 + then + if result > 2 then + if GlobalFFusion > 0 + then + result = 3 + else + result = 2 + end + end + elseif CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) == 1 + then + if result > 3 then + result = 3 + end + end + end + + if result > max then + result = max + end + if result < min then + result = min + end + print("MaxMaterials - fusionId "..fusionId.." max: "..max.." - Result: "..result) + return result +end +function FusionSummonTarget(cards,min,max,source,materialDest) + if LocCheck(cards,LOCATION_EXTRA) then + local result + GlobalFusionPerform = 1 + result = Add(cards,PRIO_TOFIELD) + GlobalFusionId = cards[1].id + CountPrioTarget(cards,PRIO_TOFIELD,1,nil,nil,nil,"FusionTarget") + print("FusionTarget: "..GlobalFusionId) + return result + end + + if GlobalFusionPerform == 1 then + GlobalFusionPerform = 2 + --CountPrioTarget(cards,materialDest,1,nil,nil,nil,"FusionTarget1") + return Add(cards,materialDest) + end + + if GlobalFusionPerform >= 2 then + GlobalFusionPerform = GlobalFusionPerform + 1 + --CountPrioTarget(cards,materialDest,MaxMaterials(GlobalFusionId,min,max),nil,nil,nil,"FusionTarget"..(GlobalFusionPerform-1)) + return Add(cards,materialDest,MaxMaterials(GlobalFusionId,min,max)) + end +end + +function FluffalCard(cards,min,max,id,c) -- FLUFFAL CARD + if c then + --print("FluffalCard: "..c.id.." - min: "..min.." - max: "..max) + end + -- Fluffal TARGET + if id == 39246582 then -- Dog + return DogTarget(cards,min,max,c) + end + if id == 13241004 then -- Penguin + return PenguinTarget(cards,min,max,c) + end + if id == 65331686 then -- Owl + return OwlTarget(cards,min,max,c) + end + if id == 98280324 then -- Sheep + return SheepTarget(cards) + end + if id == 87246309 then -- Octo + return OctoTarget(cards,min,max,c) + end + if id == 02729285 then -- Cat + return CatTarget(cards) + end + if id == 38124994 then -- Rabit + return RabitTarget(cards) + end + if id == 06142488 then -- Mouse + return MouseTarget(cards,min,max,c) + end + if id == 72413000 then -- Wings + return WingsTarget(cards) + end + -- EdgeImp TARGET + if id == 97567736 then -- Tomahawk + return TomahawkTarget(cards) + end + if id == 61173621 then -- Chain + return ChainTarget(cards,min,max,c) + end + if id == 30068120 then -- Sabres + return SabresTarget(cards,min,max,c) + end + -- Other TARGET + if id == 10802915 then -- TGuide + return TGuideTarget(cards) + end + if id == 79109599 then -- KoS + return KoSTarget(cards) + end + if id == 06205579 then -- PFusioner + return PFusionerTarget(cards) + end + -- FluffalS TARGET + if id == 70245411 then -- TVendor + return TVendorTarget(cards,min,max,c) + end + if id == 34773082 then -- FPatchwork + return FPatchworkTarget(cards,min,max,c) + end + if id == 28039390 then -- FReborn + return FRebornTarget(cards,min,max,c) + end + -- Fusion TARGET + if id == 24094653 then -- Polymerization + return PolymerizationTarget(cards,min,max,c) + end + if id == 94820406 then -- DFusion + return DFusionTarget(cards,min,max,c) + end + if id == 43698897 then -- FFactory + return FFactoryTarget(cards,min,max,c) + end + if id == 06077601 then -- FFusion + return FFusionTarget(cards,min,max,c) + end + if id == 01845204 then -- IFusion + return IFusionTarget(cards,min,max,c) + end + if id == 17194258 then -- FConscription + return FReserveTarget(cards,min,max,c) + end + -- Spell TARGET + if id == 35726888 then -- FBoB + return FBoBTarget(cards,min,max,c) + end + if id == 43455065 then -- MSpring + return MSpringTarget(cards,min,max,c) + end + -- Trap TARGET + if id == 66127916 then -- FReserve + return FReserveTarget(cards) + end + if id == 98954106 then -- JAvarice + return JAvariceTarget(cards) + end + if id == 78474168 then -- BTS + return BossMonsterTarget(cards,min,max,c) + end + -- Frightfur TARGET + if id == 80889750 then -- FSabreTooth + return FSabreToothTarget(cards,min,max,c) + end + if id == 40636712 then -- FKraken + return FKrakenTarget(cards,min,max,c) + end + if id == 10383554 then -- FLeo + return FLeoTarget(cards) + end + if id == 00464362 then -- FTiger + return FTigerTarget(cards,min,max,c) + end + -- OtherF TARGET + if id == 41209827 then + return FStarveTarget(cards,min,max,c) + end + if id == 17412721 then + return FNordenTarget(cards,min,max,c) + end + -- OtherX TARGET + if id == 90809975 then -- Toadally + return Add(cards,PRIO_TODECK,max,FilterID,90809975) + end + if id == 00440556 then -- Bahamut Effect + return Add(cards,PRIO_TOGRAVE) + end + if GlobalSummonId == 00440556 then -- Bahamut Summon + return Add(cards,PRIO_TOGRAVE,min,FluffalBahamutMaterialFilter) + end + + if GlobalKaiju == 1 then + GlobajKaiju = 0 + return BossMonsterTarget(cards,min,max,c) + end + + return nil +end + +--[[ +39246582, -- Fluffal Dog +13241004, -- Fluffal Penguin +03841833, -- Fluffal Bear +65331686, -- Fluffal Owl +98280324, -- Fluffal Sheep +87246309, -- Fluffal Octo +02729285, -- Fluffal Cat +38124994, -- Fluffal Rabit +06142488, -- Fluffal Mouse +72413000, -- Fluffal Wings +81481818, -- Fluffal Patchwork +97567736, -- Edge Imp Tomahawk +61173621, -- Edge Imp Chain +30068120, -- Edge Imp Sabres +10802915, -- Tour Guide from the Underworld +79109599, -- King of the Swamp +06205579, -- Parasite Fusioner +67441435, -- Glow-Up Bulb + +70245411, -- Toy Vendor +06077601, -- Frightfur Fusion +43698897, -- Frightfur Factory +34773082, -- Frightfur Patchwork +28039390, -- Frightfur Reborn +01845204, -- Instant Fusion +24094653, -- Polymerization +94820406, -- Dark Fusion +05133471, -- Galaxy Cyclone +35726888, -- Foolish Burial of Belongings +43455065, -- Magical Spring +43898403, -- Twin Twister +12580477, -- Raigeki + +66127916, -- Fusion Reserve +98954106, -- Jar of Avarice +51452091, -- Royal Decree + +91034681, -- Frightfur Daredevil +80889750, -- Frightfur Sabre-Tooth +40636712, -- Frightfur Kraken +10383554, -- Frightfur Leo +85545073, -- Frightfur Bear +11039171, -- Frightfur Wolf +00464362, -- Frightfur Tiger +57477163, -- Frightfur Sheep +41209827, -- Starve Venom Fusion Dragon +42110604, -- Hi-Speedroid Chanbara +83531441, -- Dante +]] \ No newline at end of file diff --git a/ai/decks/Fluffal/FluffalUse.lua b/ai/decks/Fluffal/FluffalUse.lua new file mode 100644 index 00000000..a12ee5f1 --- /dev/null +++ b/ai/decks/Fluffal/FluffalUse.lua @@ -0,0 +1,878 @@ +------------------------ +--------- USE ---------- +------------------------ +-- Fluffal USE +function UsePenguin(c) + if CardsMatchingFilter(AIHand(),PenguinFilter) > 0 + then + GlobalPenguin = 1 + OPTSet(c.cardid) + return true + end + return false +end +function UseBearDiscard(c,mode) + --CountPrioTarget(AIHand(),PRIO_DISCARD,1,nil,nil,nil,"DISCARD") + if CardsMatchingFilter(AIST(),TVendorCheckFilter,true) == 0 + or CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) == 0 + then + if HasID(AIHand(),72413000,true) -- Wings + or HasID(AIHand(),67441435,true) -- Bulb + then + OPTSet(c.id) + return true + elseif PriorityCheck(AIHand(),PRIO_DISCARD) > FluffalPrioMode(mode) + and ( + #AIHand() > 2 + or OppGetStrongestAttack() >= AIGetStrongestAttack() + or GlobalFluffalPercent >= 0.45 + ) + then + OPTSet(c.id) + return true + elseif not NormalSummonCheck() + and ( + HasID(AIHand(),39246582,true) and OPTCheck(39246582) -- Dog + or + HasID(AIHand(),87246309,true) and SummonOcto() -- Octo + ) + then + OPTSet(c.id) + return true + elseif CardsMatchingFilter(AIST(),TVendorCheckFilter,false) > 0 -- TVendor + and HasID(AIGrave(),72413000,true) -- Wings + and OPTCheck(72413000) + then + OPTSet(c.id) + return true + end + end + return false +end +function UseBearPoly(c) + if FilterLocation(c,LOCATION_MZONE) + and not HasID(UseLists({AIHand(),AIST()}),24094653,true) -- Polymerization + then + OPTSet(c.id) + return true + else + return false + end +end +function UseOwlPoly(c) + if CardsMatchingFilter(OppField(),SpellBlockedFilter) > 0 + or + HasID(UseLists({AIHand(),AIMon()}),61173621,true) -- Chain + and OPTCheck(61173621) + then + return false + end + if CardsMatchingFilter(AIDeck(),FilterID,24094653) > 1 -- Polymerization + then + OPTSet(c.id) + return true + elseif CardsMatchingFilter(UseLists({AIDeck(),AIHand(),AIST()}),FilterID,34773082) == 0 -- FPatchwork + then + OPTSet(c.id) + return true + elseif CardsMatchingFilter(AIDeck(),CountFPatchworkTarget) == 0 + then + OPTSet(c.id) + return true + end + return false +end +function UseOwlFusion(c) + if AI.GetPlayerLP(1) <= 500 then + return false + end + GlobalOwl = 1 + GlobalFluffalMaterial = CountFluffalMaterial(UseLists({AIMon(),AIHand()}),MATERIAL_TOGRAVE) + GlobalEdgeImpMaterial = CountEdgeImpMaterial(UseLists({AIMon(),AIHand()}),MATERIAL_TOGRAVE) + local countF = CountFrighturFusion() + GlobalOwl = 0 + if countF > 0 + then + GlobalOwl = 1 + return true + end + return false +end +function UseSheep(c) + if CountEdgeImp(AIGrave()) > 0 then + OPTSet(c.id) + return true + else + return false + end +end +function UseSheepEnd(c) + if CountEdgeImp(UseLists({AIGrave(),AIHand()})) > 0 + then + OPTSet(c.id) + return true + else + return false + end +end +function UseSheepTomahawk(c) + if HasID(AIHand(),97567736,true) -- Tomahawk + and OPTCheck(97567736 + 1) + then + OPTSet(c.id) + return true + else + return false + end +end +function CanUseSheep(includeHand) + if not HasIDNotNegated(UseLists({AIHand(),AIMon()}),98280324,true) + or not OPTCheck(98280324) + then + return 1 + end + local edgeImpGrave = 0 + if includeHand then + edgeImpGrave = CountEdgeImp(UseLists({AIHand(),AIGrave()})) + else + edgeImpGrave = CountEdgeImp(AIGrave()) + end + + if CardsMatchingFilter(OppField(),VanityFilter) == 0 + and CountFluffal(UseLists({AIHand(),AIMon()})) > 0 + and edgeImpGrave > 0 + then + return true + end + return false +end +function UseOcto() + local edgeImpGrave = CountEdgeImp(AIGrave()) + local fluffalGrave = CountFluffal(AIGrave()) + return + OPTCheck(87246309) + and (edgeImpGrave + fluffalGrave) > 0 + and ( + not HasID(UseLists({AIHand(),AIGrave()}),72413000,true) -- Wings + or not OPTCheck(72413000) + or fluffalGrave > 2 + or edgeImpGrave > 0 + ) +end +function UseMouse(c) + if OPTCheck(10802915) and OPTCheck(67441435) then + OPTSet(c.id) + OPDSet(c.cardid) + return true + end + return false +end +function UseWings(c) + if PriorityCheck(AIGrave(),PRIO_BANISH) > 1 + and CardsMatchingFilter(AIST(),TVendorCheckFilter,false) > 0 + then + OPTSet(c.id) + return true + else + return false + end +end +function UseWingsDisadvantage(c) + if ExpectedDamage(1) >= AI.GetPlayerLP(1) + and #AIMon() == 0 + and not NormalSummonCheck() + then + OPTSet(c.id) + return true + else + return false + end +end +-- EdgeImp USE +function UseTomahawkCopy(c) + OPTCheck(c.id + 1) + return true +end +function UseTomahawkDamage(c) + if + #AIHand() > 5 + or + HasID(UseLists({AIHand(),AIMon()}),98280324,true) -- Sheep + and OPTCheck(98280324) + or + AI.GetPlayerLP(2) <= 800 + or + HasID(AIHand(),61173621,true) -- Chain + and OPTCheck(61173621) + then + OPTCheck(c.id) + return true + end + return false +end +function UseSabresNoEdgeImp(c) + if PriorityCheck(AIHand(),PRIO_DISCARD) > 5 + and CountEdgeImp(UseLists({AIHand(),AIMon()})) == 0 + and #AIHand() > 5 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + and BattlePhaseCheck() + then + OPTSet(c.id) + return true + end + return false +end +function UseSabresMouse(c) + if HasID(AIHand(),06142488,true) -- Mouse Hand + and HasID(AIMon(),06142488,true) -- Mouse Field + and #AIMon() < 4 + then + GlobalSabres = 1 + OPTSet(c.id) + return true + else + return false + end +end +function UseSabresFPatchwork(c) + if HasID(UseLists({AIHand(),AIST()}),34773082,true) -- FPatchwork + and OPTCheck(34773082) + and CountFPatchworkTarget() == 0 + and ( + CountEdgeImp(AIHand()) > 0 + or HasID(AIHand(),24094653,true) -- Polymerization + ) + then + GlobalSabres = 2 + OPTSet(c.id) + return true + end + return false +end +-- Other USE +function UseKoS(c) + if CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter2) <= 1 + and not ( + HasID(AIHand(),65331686,true) -- Owl + and not NormalSummonCheck() + ) + and CardsMatchingFilter(UseLists({AIHand(),AIMon()}),FluffalFusionMonFilter) > 1 + and BattlePhaseCheck() + then + if + CardsMatchingFilter(AIDeck(),FilterID,24094653) > 1 -- Polymerization + or + CardsMatchingFilter(AIDeck(),CountFPatchworkTarget) == 0 + or + #OppField() < 2 + then + return true + end + end + if GlobalIFusion > 0 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter2) <= 1 + then + return true + end + return false +end +function UseKoSDiscard(c) + if CountFPatchworkTarget() == 0 + then + return true + end + return false +end +function UsePFusioner(c) + GlobalPolymerization = 1 + + GlobalFluffalMaterial = CountFluffalMaterial(AIMon(),MATERIAL_TOGRAVE) + GlobalEdgeImpMaterial = CountEdgeImpMaterial(AIMon(),MATERIAL_TOGRAVE) + + GlobalPolymerization = 0 + + return true +end +function UseBulb(c) + if FieldCheck(4) > 0 + and OPTCheck(06142488) -- Mouse + and AI.GetCurrentPhase() == PHASE_MAIN1 + and ( + OppGetStrongestAttDef() <= 2100 + or OppGetStrongestAttack() < AIGetStrongestAttack() + ) + then + OPDSet(c.id) + OPTSet(c.id) + return true + else + return false + end +end +-- FluffalS USE +function ActiveTVendor(c,mode) + --CountPrioTarget(AIHand(),PRIO_DISCARD,1,nil,nil,nil,"DISCARD") + if HasID(AIHand(),72413000,true) -- Wings + then + return true + elseif HasID(AIHand(),61173621,true) -- Chain + and OPTCheck(61173621) + and OPTCheck(34773082) -- FPatchwork + then + return true + elseif not NormalSummonCheck() + and ( + HasID(AIHand(),39246582,true) and OPTCheck(39246582) -- Dog + or + HasID(AIHand(),87246309,true) and SummonOcto() -- Octo + ) + and OPTCheck(72413000) and not HasID(AIGrave(),72413000,true) -- Wings + then + return false + elseif HasID(AIHand(),67441435,true) -- Bulb + then + return true + elseif PriorityCheck(AIHand(),PRIO_DISCARD) > FluffalPrioMode(mode) + and ( + CardsMatchingFilter(AIST(),TVendorCheckFilter,true) == 0 + or FilterLocation(c,LOCATION_SZONE) + ) + and ( + #AIHand() > 3 and FilterLocation(c,LOCATION_HAND) + or #AIHand() > 2 and FilterLocation(c,LOCATION_SZONE) + or GlobalFluffalPercent >= 0.45 + or OppGetStrongestAttack() >= AIGetStrongestAttack() + ) + and ( + OPTCheck(72413000) -- Wings + or GlobalFluffalPercent >= 0.40 + ) + and not ( + #AIMon() == 5 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter2) > 0 + ) + then + return true + end + return false +end +function UseTVendor(c,mode) + --CountPrioTarget(AIHand(),PRIO_DISCARD,1,nil,nil,nil,"DISCARD") + if HasID(AIHand(),72413000,true) -- Wings + then + OPTSet(c.cardid) + return true + elseif HasID(AIHand(),61173621,true) -- Chain + and OPTCheck(61173621) + and OPTCheck(34773082) -- FPatchwork + then + OPTSet(c.cardid) + return true + elseif not NormalSummonCheck() + and ( + HasID(AIHand(),39246582,true) and OPTCheck(39246582) -- Dog + or + HasID(AIHand(),87246309,true) and SummonOcto() -- Octo + ) + and OPTCheck(72413000) and not HasID(AIGrave(),72413000,true) -- Wings + then + return false + elseif HasID(AIHand(),67441435,true) -- Bulb + then + OPTSet(c.cardid) + return true + elseif PriorityCheck(AIHand(),PRIO_DISCARD) > FluffalPrioMode(mode) + and ( + #AIHand() > 2 + or GlobalFluffalPercent >= 0.45 + or OppGetStrongestAttack() >= AIGetStrongestAttack() + ) + and ( + OPTCheck(72413000) -- Wings + or GlobalFluffalPercent >= 0.40 + ) + and not ( + #AIMon() == 5 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter2) > 0 + ) + then + OPTSet(c.cardid) + return true + else + return false + end + return false +end +function ActiveFFactory(c,safemode) + return FilterLocation(c,LOCATION_HAND) and UseFFactory(c,safemode) +end +function UseFFactory(c,safemode) + if UseFFactoryAux(safemode) + or + #OppField() <= 2 + and UseFFactoryAux(false) + and BattlePhaseCheck() + then + GlobalFluffalMaterial = CountFluffalMaterial(UseLists({AIMon(),AIHand()}),MATERIAL_TOGRAVE) + GlobalEdgeImpMaterial = CountEdgeImpMaterial(UseLists({AIMon(),AIHand()}),MATERIAL_TOGRAVE) + local countF = CountFrighturFusion() + if countF > 0 + then + OPTSet(c.id) + return true + end + end +end +function UseFFactoryAux(safemode) + if safemode == nil then safemode = true end + local fusionGrave = CardsMatchingFilter(AIGrave(),FusionArchetypeFilter) + if HasID(AIGrave(),24094653,true) -- Polymerization + and safemode + then + return fusionGrave > 1 + else + return fusionGrave > 0 + end +end +function UseFPatchwork(c) + OPTSet(c.id) + return true +end +function CanUseFPatchwork() + return + HasID(UseLists({AIHand(),AIST()}),34773082,true) + and OPTSet(34773082) + and CountFPatchworkTarget() > 0 +end +function UseFReborn(c) + return true +end +-- Spell USE +function UseIFusion(c) + if AI.GetPlayerLP(1) <= 1000 then + return false + end + if HasID(AIExtra(),80889750,true) -- FSabreTooth + --and not HasID(AIMon(),57477163,true) -- FSheep + and ( + CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + or HasID(UseLists({AIHand(),AIST()}),43698897,true) -- FFactory + ) + and ( + CountFluffalMaterial(UseLists({AIHand(),AIMon()}),MATERIAL_TOGRAVE) + + CountEdgeImpMaterial(UseLists({AIHand(),AIMon()}),MATERIAL_TOGRAVE) + ) > 1 + and #AIMon() <= 3 + then + OPTSet(c.id) + return true + elseif not HasID(AIMon(),80889750,true) -- FSabreTooth + and HasID(UseLists({AIHand(),AIST()}),06077601,true) -- FFusion + and CountFrightfurMon(UseLists({AIMon(),AIGrave()})) > 2 -- Frightfurs + and CountMaterialFTarget(UseLists({AIMon(),AIGrave()}),PRIO_BANISH) > 1 + and #AIMon() <= 3 + then + OPTSet(c.id) + return true + else + return false + end +end +function UseIFusionAwesome(c) + if AI.GetPlayerLP(1) <= 1000 then + return false + end + local waterMon = SubGroup(UseLists({AIGrave(),AIMon()}),FilterAttribute,ATTRIBUTE_WATER) + local graveMon = SubGroup(AIGrave(),FilterType,TYPE_MONSTER) + if CardsMatchingFilter(waterMon,FilterLevel,4) > 0 + and HasID(AIExtra(),17412721,true) -- Norden + and ToadallyPlayCheck() + and #AIMon() <= 3 + and CardsMatchingFilter(graveMon,FilterLevelMax,4) > 0 + then + OPTSet(c.id) + return true + end +end +function UseBFusion() + if CardsMatchingFilter(AIHand(),FilterID,13241004) > 1 -- Penguin + or HasID(AIHand(),39246582,true) -- Dog + then + return true + end + return false +end +function UseMSpring(c) + local countOppSTFaceUp = CardsMatchingFilter(OppST(),FilterPosition,POS_FACEUP) + local countOppSTFaceDown = CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) + + local countAISTFaceUp = CardsMatchingFilter(AIST(),FilterPosition,POS_FACEUP) + + if countAISTFaceUp < 2 + and ( + (countOppSTFaceUp - countAISTFaceUp) > 1 + and countOppSTFaceDown == 0 + or + (countOppSTFaceUp - countAISTFaceUp) > 2 + ) + and ( + #OppPendulum() == 2 + or + (countOppSTFaceUp - countAISTFaceUp) > 2 + ) + and not HasID(OppST(),05851097,true) -- Vanity + then + return true + else + return false + end +end +-- FUSION USE +GlobalFluffalMaterial = 0 +GlobalEdgeImpMaterial = 0 +function UsePolymerization(c) + if c.original_id == 74335036 then -- FSubstitute + return false + end + GlobalPolymerization = 1 + GlobalFluffalMaterial = CountFluffalMaterial(UseLists({AIMon(),AIHand()}),MATERIAL_TOGRAVE) + GlobalEdgeImpMaterial = CountEdgeImpMaterial(UseLists({AIMon(),AIHand()}),MATERIAL_TOGRAVE) + local countF = CountFrighturFusion() + GlobalPolymerization = 0 + if countF > 0 + then + return true + end + return false +end +function UseFSubstitute(c) + if c.original_id == 74335036 -- FSubstitute + and not FilterLocation(c,LOCATION_GRAVE) + then + GlobalPolymerization = 1 + GlobalFluffalMaterial = CountFluffalMaterial(AIMon(),MATERIAL_TOGRAVE) + GlobalEdgeImpMaterial = CountEdgeImpMaterial(AIMon(),MATERIAL_TOGRAVE) + local countF = CountFrighturFusion() + GlobalPolymerization = 0 + if countF > 0 + then + return true + end + end + return false +end +function UseFSubstituteGrave(c) + if c.original_id == 74335036 + and FilterLocation(c,LOCATION_GRAVE) + then + return true + end + return false +end +function UseDFusion(c) + GlobalDFusion = 1 + + GlobalFluffalMaterial = CountFluffalMaterial(UseLists({AIMon(),AIHand()}),MATERIAL_TOGRAVE) + GlobalEdgeImpMaterial = CountEdgeImpMaterial(UseLists({AIMon(),AIHand()}),MATERIAL_TOGRAVE) + local countF = CountFrighturFusion() + + GlobalDFusion = 0 + + if countF > 0 + then + return true + end + return false +end +function UseFFusion(c) + GlobalFFusion = 1 + + GlobalFluffalMaterial = CountFluffalMaterial(UseLists({AIMon(),AIGrave()}),PRIO_BANISH) + GlobalEdgeImpMaterial = CountEdgeImpMaterial(UseLists({AIMon(),AIGrave()}),PRIO_BANISH) + local countF = CountFrighturFusion() + + GlobalFFusion = 0 + + if countF > 0 + then + OPTSet(c.id) + return true + end + return false +end + +-- Trap USE +function UseFReserve(c) + return HasID(AIGrave(),24094653,true) +end +function UseFReserveDisadvantage(c) + return + AI.GetPlayerLP(1) <= 2000 + or + AI.GetPlayerLP(1) <= 5000 + and #AIMon() == 0 + and not NormalSummonCheck() +end +function UseJAvarice(c) + local countFluffal = CountFluffal(AIGrave()) + local countGrave = #AIGrave() + local countST = CardsMatchingFilter(AIGrave(),FilterType,TYPE_SPELL+TYPE_TRAP) + if countST > 2 + and (countGrave - countFluffal) >= 5 + then + return true + elseif ExpectedDamage(1) >= AI.GetPlayerLP(1) and #AIMon() == 0 + then + return true + end + return false +end + +-- Frightfur USE +function UseFSabreTooth(c) + return true +end +function UseFKrakenSend(c) + if not BattlePhaseCheck() then + OPTSet(c.id) + return true + end + local fkrakenCanSend = CardsMatchingFilter(OppMon(),FKrakenSendFilter) + local frightfurAtk = 2200 + FrightfurBoost(c.id) + local fkrakenCanAttak = FluffalCanAttack(OppMon(),frightfurAtk) + local countOppMon = #OppMon() + local canSummonFSabres = false + if HasID(AIExtra(),80889750,true) -- FSabreTooth + and CardsMatchingFilter(AIMon(),FilterID,80889750) <= 2 + and CardsMatchingFilter(UseLists({AIHand(),AIST()}),FluffalFusionSTFilter) > 0 + and ( + CountEdgeImp(UseLists({AIHand(),AIMon()})) + + CountFluffalMaterial(UseLists({AIHand(),AIMon()}),MATERIAL_TOGRAVE,true) + ) >= 2 + then + canSummonFSabres = true + end + if countOppMon > 2 + and fkrakenCanSend > 0 + then + OPTSet(c.id) + return true + elseif canSummonFSabres then + OPTSet(c.id) + return true + elseif CardsMatchingFilter(OppMon(),FilterAffected,EFFECT_INDESTRUCTABLE) > 0 + and fkrakenCanSend > 0 + then + OPTSet(c.id) + return true + elseif OppGetStrongestAttDef() > AIGetStrongestAttack() + and fkrakenCanSend > 0 + then + OPTSet(c.id) + return true + elseif fkrakenCanAttak <= 2 + then + return false + else + OPTSet(c.id) + return true + end +end +function UseFKrakenRepo(c) + if Negated(c) then + return false + end + if c.attack <= 3500 + then + return true + end + return false +end +function UseFLeo(c) + OPTSet(c.id) + return true +end +function UseFTiger(c) + if CardsMatchingFilter(OppField(),FTigerDestroyFilter) > 0 then + return true + end + return false +end +-- Other Fusion USE +function UseFStarve(c) + GlobalActivatedCardID = c.id + OPDSet(c.id) + return true +end +-- Other XYZ USE +function UseBahamutFluffal(c) + OPTSet(c.id) + return true +end +function UseDanteFluffal(c) + GlobalActivatedCardID = c.id + OPDSet(c.id) + return true +end + +function FluffalEffectYesNo(id,card) -- FLUFFAL EFFECT YESNO + if card then + --print("EffectYesNo - Cardid: "..card.id.." - desc: "..card.description) + end + local result = nil + + if id == 39246582 then -- Dog + result = 1 + end + if id == 13241004 then -- Penguin + id = id + 1 -- Material + result = 1 + end + if id == 65331686 and UseOwlPoly(card) then -- Owl + result = 1 + end + if id == 87246309 then -- Octo + if (card.description/16) == id then + id = id + else -- Material + id = id + 1 + end + result = 1 + end + if id == 02729285 then -- Cat + result = 1 + end + if id == 38124994 then -- Rabit + result = 1 + end + + if id == 61173621 then -- Chain + result = 1 + end + + if id == 10802915 then -- TourGuide + result = 1 + end + if id == 06205579 and UsePFusioner(card) then -- PFusioner + result = 1 + end + + if id == 43698897 then -- FFactory + result = 1 + end + if id == 70245411 then -- TVendor + result = 1 + end + + if id == 91034681 then -- FDaredevil + result = 1 + end + if id == 80889750 then -- FSabreTooth + result = 1 + end + if id == 40636712 and UseFKrakenRepo(card) then -- FKraken + result = 1 + end + if id == 85545073 then -- FBear + result = 1 + end + if id == 00464362 then -- FTiger + return UseFTiger(card) + end + if id == 57477163 then -- FSheep + result = 1 + end + + if id == 41209827 then -- FStarve + result = 1 + end + + if id == 90809975 then -- Toadally + local toadallyEffect = card.description - (90809975*16) + id = 90809975 + toadallyEffect + if toadallyEffect == 0 then + elseif toadallyEffect == 1 then + result = 0 + elseif toadallyEffect == 2 then + result = 1 + elseif toadallyEffect == 3 then + result = 0 + elseif toadallyEffect == 4 then + result = 0 + end + end + + if result then + if result == 1 then + OPTSet(id) + end + end + + return result +end + +function FluffalYesNo(desc) -- FLUFFAL YESNO + if (desc / 16) > 99999 then + --print("YesNo - id: "..(desc/16).." - desc: "..desc) + else + --print("YesNo - desc: "..desc) + end + if desc == 93 then -- Choose material? + if GlobalFusionId == 80889750 then + return 1 + end + return 0 + end + return nil +end + +--[[ +39246582, -- Fluffal Dog +13241004, -- Fluffal Penguin +03841833, -- Fluffal Bear +65331686, -- Fluffal Owl +98280324, -- Fluffal Sheep +87246309, -- Fluffal Octo +02729285, -- Fluffal Cat +38124994, -- Fluffal Rabit +06142488, -- Fluffal Mouse +72413000, -- Fluffal Wings +81481818, -- Fluffal Patchwork +97567736, -- Edge Imp Tomahawk +61173621, -- Edge Imp Chain +30068120, -- Edge Imp Sabres +10802915, -- Tour Guide from the Underworld +79109599, -- King of the Swamp +06205579, -- Parasite Fusioner +67441435, -- Glow-Up Bulb + +70245411, -- Toy Vendor +06077601, -- Frightfur Fusion +43698897, -- Frightfur Factory +34773082, -- Frightfur Patchwork +28039390, -- Frightfur Reborn +01845204, -- Instant Fusion +24094653, -- Polymerization +94820406, -- Dark Fusion +05133471, -- Galaxy Cyclone +35726888, -- Foolish Burial of Belongings +43455065, -- Magical Spring +43898403, -- Twin Twister +12580477, -- Raigeki + +66127916, -- Fusion Reserve +98954106, -- Jar of Avarice +51452091, -- Royal Decree + +91034681, -- Frightfur Daredevil +80889750, -- Frightfur Sabre-Tooth +40636712, -- Frightfur Kraken +10383554, -- Frightfur Leo +85545073, -- Frightfur Bear +11039171, -- Frightfur Wolf +00464362, -- Frightfur Tiger +57477163, -- Frightfur Sheep +41209827, -- Starve Venom Fusion Dragon +42110604, -- Hi-Speedroid Chanbara +83531441, -- Dante +]] \ No newline at end of file diff --git a/ai/decks/Gadget.lua b/ai/decks/Gadget.lua index a09162a4..f9df405a 100644 --- a/ai/decks/Gadget.lua +++ b/ai/decks/Gadget.lua @@ -2,8 +2,11 @@ function IsGadget(id) return id == 86445415 -- Red or id == 41172955 -- Green or id == 13839120 -- Yellow + --or id == 55010259 -- Gold + --or id == 29021114 -- Silver end function GadgetCount(cards) + cards=cards or AIHand() local count=0 for i=1,#cards do if IsGadget(cards[i].id) then @@ -12,7 +15,147 @@ function GadgetCount(cards) end return count end - +function GoldGadgetCond(loc,c) + if loc == PRIO_TOHAND then + if not HasID(AIHand(),c.id,true) then + if not HasAccess(c.id) then + return 9 + end + if FilterLocation(c,LOCATION_GRAVE) + and not (HasID(AICards(),01845204,true) + and CardsMatchingFilter(AIGrave(),NodenFilter,4==0)) + then + return 8 + end + return true + end + return false + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return OPTCheck(c.id) and CardsMatchingFilter(AIHand(),GoldGadgetFilter)>1 + end + if FilterLocation(c,LOCATION_DECK) then + return OPTCheck(c.id) + end + return true + end +end +function SilverGadgetCond(loc,c) + if loc == PRIO_TOHAND then + if not HasID(AIHand(),c.id,true) then + if not HasAccess(c.id) then + return 8 + end + if FilterLocation(c,LOCATION_GRAVE) + and not (HasID(AICards(),01845204,true) + and CardsMatchingFilter(AIGrave(),NodenFilter,4==0)) + then + return 7 + end + return true + end + return false + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return OPTCheck(c.id) and CardsMatchingFilter(AIHand(),GoldGadgetFilter)>1 + end + if FilterLocation(c,LOCATION_DECK) then + return OPTCheck(c.id) + end + return true + end +end +function RedGadgetCond(loc,c) + if loc == PRIO_TOHAND then + if GadgetCount()==0 + and (HasID(AIHand(),55010259,true) or HasID(AIHand(),29021114)) + then + return 11 + end + if not HasID(AIHand(),c.id,true) + and NeedsCard(41172955,AIDeck(),AIHand(),true) + and CardsMatchingFilter(AIHand(),IsGadget)==0 + then + return true + end + return false + end + if loc == PRIO_TOFIELD then + if NeedsCard(41172955,AIDeck(),AIHand(),true) then + return true + end + return false + end + if loc == PRIO_TOGRAVE then + return FilterLocation(c,LOCATION_ONFIELD) + end + return true +end +function GreenGadgetCond(loc,c) + if loc == PRIO_TOHAND then + if GadgetCount()==0 + and (HasID(AIHand(),55010259,true) or HasID(AIHand(),29021114)) + then + return 12 + end + if not HasID(AIHand(),c.id,true) + and NeedsCard(86445415,AIDeck(),AIHand(),true) + and CardsMatchingFilter(AIHand(),IsGadget)==0 + then + return true + end + return false + end + if loc == PRIO_TOFIELD then + if NeedsCard(86445415,AIDeck(),AIHand(),true) then + return true + end + return false + end + if loc == PRIO_TOGRAVE then + return FilterLocation(c,LOCATION_ONFIELD) + end + return true +end +function YellowGadgetCond(loc,c) + if loc == PRIO_TOHAND then + if GadgetCount()==0 + and (HasID(AIHand(),55010259,true) or HasID(AIHand(),29021114)) + then + return 10 + end + if not HasID(AIHand(),c.id,true) + and NeedsCard(13839120,AIDeck(),AIHand(),true) + and CardsMatchingFilter(AIHand(),IsGadget)==0 + then + return true + end + return false + end + if loc == PRIO_TOFIELD then + if NeedsCard(13839120,AIDeck(),AIHand(),true) then + return true + end + return false + end + if loc == PRIO_TOGRAVE then + return FilterLocation(c,LOCATION_ONFIELD) + end + return true +end +function GadgetPriority() +AddPriority({ +[86445415] = {4,1,4,1,5,1,1,1,1,1,RedGadgetCond}, -- Red Gadget +[13839120] = {3,1,3,1,5,1,1,1,1,1,YellowGadgetCond}, -- Yellow Gadget +[41172955] = {5,2,5,2,5,1,1,1,1,1,GreenGadgetCond}, -- Green Gadget +[55010259] = {5,3,9,3,3,1,1,1,1,1,GoldGadgetCond}, -- Golden Gadget +[29021114] = {4,2,9,2,4,1,1,1,1,1,SilverGadgetCond}, -- Silver Gadget +[16947147] = {5,3,9,3,3,1,1,1,1,1,}, -- Menko +[42940404] = {4,2,9,2,4,1,1,1,1,1,}, -- Machina Gearframe +}) +end function SetBanishPriority(cards) for i=1,#cards do local c=cards[i] @@ -94,6 +237,12 @@ function SetDiscardPriority(cards) c.prio=0 end end + if c.id==16947147 then + c.prio=1 + end + if c.id==55010259 or c.id==29021114 then + c.prio=1 + end end end function DiscardCostCheck(cards,count) @@ -117,13 +266,22 @@ function DiscardCost(cards,count) end return result end +function MachinaFortressFilter(c) + return FilterRace(c,RACE_MACHINE) +end function SummonMachinaFortress(card) + if not CanSpecialSummon() then return false end local result = false if card.location == LOCATION_GRAVE then - result = HasID(AIHand(),39284521,true) or HasID(AIHand(),51617185,true) or GadgetCount(AIHand())>1 + result = HasID(AIHand(),39284521,true) + or HasID(AIHand(),51617185,true) + or GadgetCount(AIHand())>1 + or CardsMatchingFilter(AIHand(),MachinaFortressFilter)>2 else - result = HasID(AIHand(),18964575,true) or GadgetCount(AIHand())>1 + result = HasID(AIHand(),18964575,true) + or GadgetCount(AIHand())>1 or Get_Card_Count_ID(AIHand(),05556499)>1 + or CardsMatchingFilter(AIHand(),MachinaFortressFilter)>1 end return result and (OverExtendCheck() or FieldCheck(7)==1) end @@ -268,15 +426,60 @@ function JeweledRDAFilter(card,id) return card.cardid~=id and bit32.band(card.position,POS_FACEUP_ATTACK)>0 and card:is_affected_by(EFFECT_INDESTRUCTABLE_EFFECT)==0 and card:is_affected_by(EFFECT_IMMUNE_EFFECT)==0 end -function SummonGearGigant() - return OppGetStrongestAttDef()<2300 and MP2Check(2300) +function SummonGearGigant(c) + return OppGetStrongestAttDef()0 + and FieldCheck(4)==1 + and CanXYZSummon() + then + NormalSummonAdd() + return true + end + if mode == 2 + and NormalSummonsAvailable()==0 + and (HasIDNotNegated(AIHand(),55010259,true,FilterOPT,true) + or HasIDNotNegated(AIHand(),29021114,true,FilterOPT,true)) + and CardsMatchingFilter(AIHand(),GoldGadgetFilter)>1 + and CanXYZSummon() + then + NormalSummonAdd() + return true + end +end +function SummonMenko(c,mode) + if mode == 1 + and FieldCheck(4)==1 + and CanXYZSummon() + then + return true + end +end +function UseInstantFusionGadget(c,mode) + if not (WindaCheck() and CanSpecialSummon()) then return false end + if mode == 1 + and DeckCheck(DECK_GADGET) + and CardsMatchingFilter(AIGrave(),NodenFilter,4)>0 + and HasIDNotNegated(AIExtra(),17412721,true) -- Norden + and CardsMatchingFilter(AIExtra(),FilterRank,4)>0 + and SpaceCheck()>1 + then + return true + end end function GadgetOnSelectInit(cards, to_bp_allowed, to_ep_allowed) local Activatable = cards.activatable_cards @@ -288,8 +491,11 @@ function GadgetOnSelectInit(cards, to_bp_allowed, to_ep_allowed) if HasIDNotNegated(Activatable,28912357) then -- GGX return {COMMAND_ACTIVATE,CurrentIndex} end - if HasID(SpSummonable,28912357) and SummonGearGigant() then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + if HasIDNotNegated(Activatable,70368879) then -- Upstart + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasID(SpSummonable,28912357,SummonGearGigant) then + return XYZSummon() end if HasID(SpSummonable,34086406) and SummonChainGadget() then return {COMMAND_SPECIAL_SUMMON,CurrentIndex} @@ -309,6 +515,12 @@ function GadgetOnSelectInit(cards, to_bp_allowed, to_ep_allowed) if HasID(Summonable,42940404) and SummonGearframe() then return {COMMAND_SUMMON,IndexByID(Summonable,42940404)} end + if HasID(Summonable,55010259,SummonGoldGadget,1) then + return Summon() + end + if HasID(Summonable,29021114,SummonSilverGadget,1) then + return Summon() + end if HasID(Summonable,53573406) and SummonMaskedChameleon() and OverExtendCheck() then return {COMMAND_SUMMON,IndexByID(Summonable,53573406)} end @@ -321,6 +533,15 @@ function GadgetOnSelectInit(cards, to_bp_allowed, to_ep_allowed) if HasID(Summonable,13839120) and SummonGadget() then --Yellow return {COMMAND_SUMMON,IndexByID(Summonable,13839120)} end + if HasIDNotNegated(Activatable,43422537,UseDoubleSummon,1) then + return Activate() + end + if HasIDNotNegated(Activatable,43422537,UseDoubleSummon,2) then + return Activate() + end + if HasIDNotNegated(Activatable,01845204,UseInstantFusionGadget,1) then + return Activate() + end if HasID(Summonable,42940404) then return {COMMAND_SUMMON,IndexByID(Summonable,42940404)} end @@ -348,38 +569,15 @@ function GadgetOnSelectInit(cards, to_bp_allowed, to_ep_allowed) GlobalCardMode=2 return {COMMAND_ACTIVATE,CurrentIndex} end -end -function GadgetToHand(cards,count) - if count==nil then count=1 end - local result = {} - local handcount=GadgetCount(AIHand()) - for i=1,#cards do - local id=cards[i].id - cards[i].index=i - cards[i].prio=1 - if id==86445415 or id==41172955 or id==13839120 then - if handcount==0 then - cards[i].prio=5 - end - end - if id==42940404 and not HasID(AIHand(),42940404) - and not HasID(UseLists({AIHand(),AIMon(),AIGrave()}),05556499) - then - cards[i].prio=4 - end - if id==18063928 and not HasID(AIHand(),18063928) and handcount>0 then - cards[i].prio=3 - end - if cards[i].location==LOCATION_GRAVE then - cards[i].prio=cards[i].prio-1 - end + if HasID(Summonable,55010259,SummonGoldGadget,2) then + return Summon() end - - table.sort(cards,function(a,b) return a.prio>b.prio end) - for i=1,count do - result[i]=cards[i].index + if HasID(Summonable,29021114,SummonSilverGadget,2) then + return Summon() + end + if HasID(Summonable,16947147,SummonMenko,1) then + return Summon() end - return result end @@ -401,7 +599,10 @@ function MaskedChameleonTarget(cards) return {result} end function GearGigantTarget(cards) - return GadgetToHand(cards) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + return Add(cards) end function BigEyeTarget(cards) local result = nil @@ -555,6 +756,12 @@ function GadgetOnSelectCard(cards, minTargets, maxTargets,ID,triggeringCard) if ID == 83994433 then return StardustSparkTarget(cards) end + if ID == 55010259 then + return GoldGadgetTarget(cards) + end + if ID == 29021114 then + return SilverGadgetTarget(cards) + end return nil end function ChainSwiftScarecrow(id) @@ -581,10 +788,6 @@ function ChainCotHGadget() end return false end - -function ChainNaturiaBeast() - return false -end function StardustSparkFilter(card,id) return card:IsControler(player_ai) and card:IsPosition(POS_FACEUP) and not card:IsHasEffect(EFFECT_INDESTRUCTABLE_EFFECT) @@ -653,6 +856,26 @@ end function ChainMegaform() return true end +function ChainMenko(c) + if #AIMon()==0 + and HandCheck(4)>0 + and UnchainableCheck(c.id) + then + return true + end + if #AIMon()==0 + and ExpectedDamage()>0.8*AI.GetPlayerLP(1) + and UnchainableCheck(c.id) + then + return true + end + local aimon,oppmon = GetBattlingMons() + if oppmon and oppmon:GetAttack()>0.8*AI.GetPlayerLP(1) + and UnchainableCheck(c.id) + then + return true + end +end GlobalStardustSparkActivation={} function GadgetOnSelectChain(cards,only_chains_by_player) if HasID(cards,18964575) and ChainSwiftScarecrow(18964575) then @@ -664,9 +887,6 @@ function GadgetOnSelectChain(cards,only_chains_by_player) if HasID(cards,97077563) and ChainCotHGadget() then return {1,IndexByID(cards,97077563)} end - if HasID(cards,33198837) and ChainNaturiaBeast() then - return {1,IndexByID(cards,33198837)} - end if HasID(cards,83994433) and ChainStardustSpark() then GlobalStardustSparkActivation[cards[CurrentIndex].cardid]=Duel.GetTurnCount() OPTSet(cards[CurrentIndex]) @@ -675,6 +895,9 @@ function GadgetOnSelectChain(cards,only_chains_by_player) if HasID(cards,51617185) and ChainMegaform() then return {1,CurrentIndex} end + if HasID(cards,16947147,ChainMenko) then + return Chain() + end return nil end function GadgetOnSelectEffectYesNo(id,triggeringCard) @@ -687,6 +910,17 @@ function GadgetOnSelectEffectYesNo(id,triggeringCard) if id==51617185 and ChainMegaform() then result = 1 end + if id==55010259 then + OPTSet(55010259) + return 1 + end + if id==29021114 then + OPTSet(29021114) + return 1 + end + if id==16947147 and ChainMenko(triggeringCard) then + return 1 + end return result end function GadgetOnSelectOption(options) @@ -696,7 +930,7 @@ GadgetAtt={ 05556499,42940404,28912357,88033975,33198837 } GadgetDef={ - 90411554 + 90411554,48905153,85115440, } function GadgetOnSelectPosition(id, available) diff --git a/ai/decks/Generic.lua b/ai/decks/Generic.lua index 52955cf2..115de511 100644 --- a/ai/decks/Generic.lua +++ b/ai/decks/Generic.lua @@ -88,70 +88,87 @@ function SummonExtraDeck(cards,prio) -- use certain effects before doing anything else ---- if prio then - if HasIDNotNegated(SpSum,07409792) then + if HasID(Act,00691925) then -- Solar Recharge, test + return Activate() + end + if HasIDNotNegated(Act,41142615) then -- Cheerful Coffin, test + return Activate() + end + if HasIDNotNegated(SpSum,07409792) then --return {COMMAND_SPECIAL_SUMMON,CurrentIndex} -- test end + if HasIDNotNegated(Act,01621413,UseRequiem,1) then + return Activate() -- Requiem Dragon + end if HasIDNotNegated(Rep,12014404,false,nil,nil,POS_FACEUP_ATTACK) and UseCowboyDef() then return {COMMAND_CHANGE_POS,CurrentIndex} -- Gagaga Cowboy finish end if HasIDNotNegated(Act,12014404,false,nil,nil,POS_DEFENSE) and UseCowboyDef() then - return {COMMAND_ACTIVATE,CurrentIndex} -- Gagaga Cowboy finish + return Activate() -- Gagaga Cowboy finish end if HasIDNotNegated(Act,29669359) and UseVolcasaurus() then -- Volcasaurus finish - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,46772449,UseFieldNuke,1) then -- Evilswarm Exciton Knight - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,57774843,UseFieldNuke,1) then -- Judgment Dragon - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,39765958,UseJeweledRDA,0) then - return {COMMAND_ACTIVATE,CurrentIndex} -- Hot Red Dragon Archfiend + return Activate() -- Hot Red Dragon Archfiend end if HasIDNotNegated(Act,53129443) and UseDarkHole() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,12580477) and UseRaigeki() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,45986603) and UseSnatchSteal() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,89882100) then -- Night Beam - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,67616300,UseChickenGame) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasID(Act,05133471,nil,nil,LOCATION_GRAVE) and UseGalaxyCyclone(2) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,05133471,nil,nil,LOCATION_HAND+LOCATION_ONFIELD) and UseGalaxyCyclone(1) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasID(Act,60082869,nil,nil,LOCATION_SZONE,UseDustTornado) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasID(Act,05318639,nil,nil,LOCATION_SZONE,UseMST) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() + end + if HasID(Act,08267140,nil,nil,LOCATION_SZONE,UseCosmicCyclone) then + return Activate() end if HasID(Act,43898403,UseTwinTwister) then return Activate() end if HasID(Act,05318639,UseMST) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() + end + if HasID(Act,08267140,UseCosmicCyclone) then + return Activate() end if HasID(Act,18326736,UsePtolemaios) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end ---- -- summon certain monsters before anything else ---- + if MaxxCheck() then + if HasIDNotNegated(SpSum,12014404) and SummonCowboyDef() then return XYZSummon() end @@ -171,10 +188,10 @@ function SummonExtraDeck(cards,prio) return XYZSummon() end if HasID(SpSum,57774843,SummonJD,1) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SpSummon() end if HasIDNotNegated(SpSum,73580471,UseFieldNuke,-2) then -- Black Rose - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SpSummon() end if HasIDNotNegated(SpSum,16195942) and SummonRebellionFinish() then return XYZSummon() @@ -200,83 +217,94 @@ function SummonExtraDeck(cards,prio) if HasIDNotNegated(SpSum,84013237,SummonUtopiaLightningFinish,1) then return XYZSummon() end + + end ---- -- activate removal effects before progressing ---- if HasIDNotNegated(Act,10443957,UseInfinity) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,04779823) and UseMichael() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,31924889) and UseArcanite() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,80117527) and UseBigEye() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,88120966,UseGiantGrinder) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,22110647,false,353770352,UseDracossack1) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,22110647,false,353770353,UseDracossack2) then GlobalCardMode=2 - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,38495396) and UsePtolemy() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,15561463) and UseGauntletLauncher() then GlobalCardMode = 1 - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,94380860) then -- Ragnazero GlobalCardMode = 1 - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,63519819,UseTER) then return Activate() end if HasIDNotNegated(Act,22653490) then -- Chidori GlobalCardMode = 2 - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,48739166) then -- Silent Honors ARK OPTSet(48739166) - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,82633039,false,1322128625) and UseSkyblaster() then OPTSet(82633039) - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,10406322,UseAlsei) then GlobalActivatedCardID = 10406322 - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,73964868,ChainPleiades) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,61344030) then -- Paladynamo GlobalCardMode = 1 - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,50321796,UseBrionac) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,16195942) and UseRebellion() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasID(Act,31320433) and UseNightmareShark() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasID(Act,31437713) and UseHeartlanddraco() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() + end + if HasIDNotNegated(Act,01621413,UseRequiem,2) then + return Activate() -- Requiem Dragon + end + if HasIDNotNegated(Act,48905153,UseDrancia,1) then + return Activate() + end + if HasIDNotNegated(Act,48905153,UseDrancia,2) then + return Activate() end return nil end - + if MaxxCheck() then -- summon Gaia Dragon after removal effects if HasIDNotNegated(SpSum,91949988,SummonGaiaDragonFinish) then return XYZSummon() @@ -288,7 +316,7 @@ function SummonExtraDeck(cards,prio) -- Synchro if HasIDNotNegated(SpSum,52687916,SummonSyncTrishula) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end -- Trishula enabling @@ -300,53 +328,52 @@ function SummonExtraDeck(cards,prio) if HasID(Act,01845204,ShaddollUseInstantFusion,1) then return Activate() end - if HasID(SpSum,08561192,SummonLeoh) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,39765958,SummonJeweledRDA) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,83994433,SummonStardustSpark) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,44508094,SummonStardust) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,23693634,SummonColossal) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,04779823,SummonMichael) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,82044279,SummonClearWing) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasIDNotNegated(SpSum,31924889) and SummonArcanite() then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasIDNotNegated(SpSum,33698022,SummonMoonlightRose) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasIDNotNegated(SpSum,98012938,SummonVulcan) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,50321796,SummonBrionac) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,33198837,SummonNaturiaBeast) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,88033975,SummonArmades) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,90953320,SummonLibrarian) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end if HasID(SpSum,26593852,SummonCatastor) then - return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + return SynchroSummon() end -- XYZ @@ -466,6 +493,15 @@ function SummonExtraDeck(cards,prio) if HasIDNotNegated(SpSum,06511113,SummonRafflesia) then return XYZSummon() end + if HasIDNotNegated(SpSum,48905153,SummonDrancia,1) then + return SpSummon() + end + if HasIDNotNegated(SpSum,85115440,SummonBullhorn,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,85115440,SummonBullhorn,2) then + return XYZSummon() + end if HasIDNotNegated(SpSum,63746411) and SummonGiantHand() then return XYZSummon() end @@ -473,20 +509,20 @@ function SummonExtraDeck(cards,prio) return XYZSummon() end if HasIDNotNegated(Act,91499077) and UseGagagaSamurai() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(SpSum,34086406) and SummonLavalvalChain() then return XYZSummon() end if HasIDNotNegated(Act,34086406,false,545382497) and UseLavalvalChain() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasID(SpSum,11398059,SummonImpKing) then return XYZSummon() end if HasIDNotNegated(Act,11398059) then GlobalCardMode = 1 - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(SpSum,21044178,SummonDweller,2) then return XYZSummon() @@ -495,7 +531,7 @@ function SummonExtraDeck(cards,prio) return XYZSummon() end if HasIDNotNegated(Act,00581014,false,9296225) and UseEmeral() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasID(SpSum,21501505,SummonCairngorgon) then return XYZSummon() @@ -514,7 +550,7 @@ function SummonExtraDeck(cards,prio) end if HasIDNotNegated(Act,12014404,FilterPosition,POS_FACEUP_ATTACK) and UseCowboyAtt() then Global1PTGunman = 1 - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(SpSum,12014404) and SummonCowboyDef(2) then return XYZSummon() @@ -539,7 +575,7 @@ function SummonExtraDeck(cards,prio) end if HasIDNotNegated(Act,95992081) and UseLeviair() then GlobalCardMode = 1 - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(SpSum,81330115,SummonAcidGolem) then return XYZSummon() @@ -561,9 +597,10 @@ function SummonExtraDeck(cards,prio) local low = scales[#scales] local levels = 0 local mons = SubGroup(UseLists(AIHand(),AIExtra()),FilterPendulumSummonable) + local hand = SubGroup(AIHand(),FilterPendulumSummonable) local targets = {} local targets2 = {} - if ScaleCheck() == false then -- no active scales + if ScaleCheck() == false and #hand>1 then -- no active scales table.remove(mons,FindCard(high,mons,true)[1]) table.remove(mons,FindCard(low,mons,true)[1]) for i,c in pairs(mons) do @@ -576,7 +613,7 @@ function SummonExtraDeck(cards,prio) end elseif ScaleCheck() == true then -- 2 active scales, and you can still use some? print("Warning: Can activate more than 2 scales?") - else -- one scale active + elseif type(ScaleCheck()) == "number" then -- one scale active table.remove(mons,FindCard(high,mons,true)[1]) for i,c in pairs(mons) do if high.lscale>c.level and c.level>ScaleCheck() then @@ -606,36 +643,56 @@ function SummonExtraDeck(cards,prio) return PendulumSummon(i) end end - - +-- Speedroid engine + if HasID(SpSum,81275020,SummonTerrortop,1) then + return SpSummon() + end + if HasID(SpSum,53932291,SummonTaketomborg,1) then + return SpSummon() + end + if HasID(Sum,81275020,SummonTerrortop,2) then + return Summon() + end + if HasID(Sum,81275020,SummonTerrortop,3) then + return Summon() + end + if HasID(Sum,53932291,SummonTaketomborg,2) then + return Summon() + end + if HasIDNotNegated(Act,53932291,UseTaketomborg,1) then + return Activate() + end + end -- if the opponent still has stronger monsters, use Raigeki if HasID(Act,12580477) and UseRaigeki2() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end + if MaxxCheck() then -- use Soul Charge when other plays have been exhausted if HasID(Act,54447022) and UseSoulCharge() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,01845204,UseInstantFusion,2) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,01845204,UseInstantFusion,1) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,01845204,UseInstantFusion,4) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasIDNotNegated(Act,01845204,UseInstantFusion,3) then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end + end if HasIDNotNegated(Act,98645731) -- Duality and not DeckCheck(DECK_HAT) and not DeckCheck(DECK_BUJIN) then GlobalDuality = Duel.GetTurnCount() - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasID(Act,73176465) and UseFelis() then - return {COMMAND_ACTIVATE,CurrentIndex} + return Activate() end if HasID(Act,19508728,UseMoonMirror) then return Activate() @@ -651,6 +708,154 @@ function SummonExtraDeck(cards,prio) end return nil end +function SummonCrystalWing(c,mode) + return true +end +function CrystalWingFilter(c,attacker) + return NotNegated(attacker) + and c.level>4 +end +function CrystalWingCheck(attacker,targets) + return CardsMatchingFilter(targets,CrystalWingFilter,attacker)>0 +end +function SummonBullhorn(c,mode) + if not MaxxCheck() then return false end + if mode == 1 + and HasIDNotNegated(AIExtra(),48905153,true,SummonDrancia,2) + then + return true + end + if mode == 2 + and HasIDNotNegated(AIExtra(),48905153,true,SummonDrancia,3) + then + return true + end +end +function DranciaFilter(c,prio) + return Affected(c,TYPE_MONSTER,4) + and Targetable(c,TYPE_MONSTER) + and FilterPosition(c,POS_FACEUP) + and DestroyFilterIgnore(c) + and (not prio or PriorityTarget(c)) +end +function UseDrancia(c,mode) + if mode == 1 + and CardsMatchingFilter(OppField(),DranciaFilter,true)>0 + then + return true + end + if mode == 2 + and MP2Check() + and CardsMatchingFilter(OppField(),DranciaFilter)>0 + and c.xyz_material_count>1 + then + return true + end +end +function SummonDrancia(c,mode) + if not MaxxCheck() then return false end + if mode == 1 + and HasID(AIMon(),85115440,true) + then + return true + end + if mode == 2 + and CardsMatchingFilter(OppField(),DranciaFilter)>0 + and MP2Check() + then + return true + end + if mode == 3 + and MP2Check() + and CardsMatchingFilter(AIMon(),PriorityTarget)>0 + then + return true + end +end +function RequiemFilter(c,source) + return Targetable(c,TYPE_MONSTER) + and Affected(c,TYPE_MONSTER,5) + and CanDealBattleDamage(source,{c}) +end +function UseRequiem(c,mode) + if mode == 1 -- can finish game with attack + then + for i,target in pairs(SubGroup(OppMon(),RequiemFilter,c)) do + if CanFinishGame(c,target,nil,target.base_attack,target.attack) then + GlobalTargetSet(target) + GlobalCardMode = 1 + return true + end + end + end + if mode == 2 + and OppHasStrongestMonster() + and CardsMatchingFilter(OppMon(),RequiemFilter,c)>0 + then + return true + end +end +function SummonTerrortop(c,mode) + if mode == 1 -- special summon + and NotNegated(c) + and HasID(UseLists(AIHand(),AIDeck()),53932291,true) -- Taketomborg + and CardsMatchingFilter(AIExtra(),FilterRank,3)>0 + and SpaceCheck(LOCATION_MZONE)>1 + and OPTCheck(c.id) + then + return true + end + if mode == 2 -- normal summon + and NotNegated(c) + and HasID(UseLists(AIHand(),AIDeck()),53932291,true) -- Taketomborg + and CardsMatchingFilter(AIExtra(),FilterRank,3)>0 + and SpaceCheck(LOCATION_MZONE)>1 + and OPTCheck(c.id) + then + return true + end + if mode == 3 -- normal summon + and FieldCheck(3)==1 + and CardsMatchingFilter(AIExtra(),FilterRank,3)>0 + then + return true + end +end +function SummonTaketomborg(c,mode) + if mode == 1 -- special summon + and FieldCheck(3)==1 + and CardsMatchingFilter(AIExtra(),FilterRank,3)>0 + then + return true + end + if mode == 2 -- normal summon + and FieldCheck(3)==1 + and CardsMatchingFilter(AIExtra(),FilterRank,3)>0 + then + return true + end +end +function TaketomborgFilter(card,targets) + for i,c in pairs(targets) do + if FilterType(card,TYPE_SYNCHRO) + and FilterAttribute(card,ATTRIBUTE_WIND) + --and c.level+3==card.level + then + return true + end + end + return false +end +function UseTaketomborg(c,mode) + local targets = SubGroup(AIDeck(),FilterTuner) + targets = SubGroup(targets,FilterAttribute,ATTRIBUTE_WIND) + if mode == 1 + and FieldCheck(3)>1 + and CardsMatchingFilter(AIExtra(),TaketomborgFilter,targets)>0 + then + return true + end +end function TERFilter(c) return Affected(c,TYPE_MONSTER,1) and Targetable(c,TYPE_MONSTER) @@ -791,7 +996,7 @@ function UseChickenGame(c) end end function SummonRafflesia(c) - return CardsMatchingFilter(AIDeck(),TrapholeFilter)>0 + return CardsMatchingFilter(AIDeck(),TrapHoleFilter)>1 and TurnEndCheck() and (#OppMon()==0 or OppGetStrongestAttack()2) @@ -845,6 +1050,7 @@ function InfinityFilter(c,source) return Affected(c,TYPE_MONSTER,6) and Targetable(c,TYPE_MONSTER) and FilterPosition(c,POS_FACEUP_ATTACK) + and not FilterType(c,TYPE_TOKEN) and (CurrentOwner(c)==2 or CurrentOwner(c)==1 and c.attack<=1500 @@ -873,6 +1079,27 @@ function UseMST(c) end return false end +function UseCosmicCyclone(c) + if AI.GetPlayerLP(1)<=1000 then + return false + end + local filter = function(c) + return FilterPosition(c,POS_FACEDOWN) + and FilterPrivate(c) + and DestroyFilter(c) + end + local OppTargets=SubGroup(OppST(),filter) + if (#AIField()==0 + or #AIField()==CardsMatchingFilter(AIField(),FilterID,c.id)) + and #OppTargets>0 + and #OppTargets<=CardsMatchingFilter(AICards(),FilterID,c.id) + then + GlobalCardMode = 1 + GlobalTargetSet(OppTargets[math.random(1,#OppTargets)]) + return true + end + return false +end function UseDustTornado(c) return UseMST(c) end @@ -948,9 +1175,15 @@ end function FieldNukeFilter(c,source) return Affected(c,TYPE_MONSTER,source.level) end +function FieldNukeCollateralFilter(c) + return not (FilterType(c,TYPE_TOKEN) + or KozmoShip(c) + or c.id == 67237709) -- Kozmotown +end function UseFieldNuke(source,exclude) local targets = SubGroup(OppField(),FieldNukeFilter,source) - return DestroyCheck(targets,exclude,true)-DestroyCheck(AIField(),true)>0 + local collateral = SubGroup(AIField(),FieldNukeCollateralFilter) + return DestroyCheck(targets,true)+exclude-DestroyCheck(collateral,true)>0 end function SummonBelzebuth(c) if DeckCheck(DECK_CONSTELLAR) and HasIDNotNegated(AIMon(),70908596,true) @@ -1236,15 +1469,18 @@ function UseLeviair() return true end function SharkKnightFilter(c) - return bit32.band(c.position,POS_FACEUP_ATTACK)>0 - and bit32.band(c.type,TYPE_TOKEN)==0 - and (bit32.band(c.type,TYPE_XYZ+TYPE_SYNCHRO+TYPE_RITUAL+TYPE_FUSION)>0 or c.level>4) - and bit32.band(c.summon_type,SUMMON_TYPE_SPECIAL)>0 - and c:is_affected_by(EFFECT_CANNOT_BE_EFFECT_TARGET)==0 + return FilterPosition(c,POS_FACEUP_ATTACK) + and not FilterType(c,TYPE_TOKEN) + and FilterSummon(c,SUMMON_TYPE_SPECIAL) + and Affected(c,TYPE_MONSTER,4) + and Targetable(c,TYPE_MONSTER) end function SummonSharkKnight(cards) - return CardsMatchingFilter(OppMon(),SharkKnightFilter)>0 and OppHasStrongestMonster() - and HasID(AIExtra(),48739166,true) and MP2Check() + return CardsMatchingFilter(OppMon(),SharkKnightFilter)>0 + and (OppHasStrongestMonster() or HasPriorityTarget(OppMon(),nil,nil,SharkKnightFilter)) + and HasID(AIExtra(),48739166,true) + and CanSpecialSummon() + and MP2Check() end function CowboyFilter(c) return ((c.attack<3000 and bit32.band(c.position,POS_ATTACK)>0 @@ -1263,11 +1499,15 @@ function SummonCowboyAtt() and BattlePhaseCheck() and not(CanUseHand()) end function SkyblasterFilter(c) - return bit32.band(c.position,POS_FACEUP)>0 and c:is_affected_by(EFFECT_CANNOT_BE_EFFECT_TARGET)==0 + return Affected(c,TYPE_MONSTER,4) + and Targetable(c,TYPE_MONSTER) + and FilterPosition(c,POS_FACEUP) end function SummonSkyblaster() - return OppHasStrongestMonster() and CardsMatchingFilter(OppMon(),SkyblasterFilter)>0 - and HasID(AIExtra(),82633039,true) and MP2Check() + return (OppHasStrongestMonster() or HasPriorityTarget(OppMon(),nil,nil,SkyblasterFilter)) + and CardsMatchingFilter(OppMon(),SkyblasterFilter)>0 + and HasID(AIExtra(),82633039,true) + and MP2Check() end function UseSkyblaster() return CardsMatchingFilter(OppField(),SkyblasterFilter)>0 @@ -1624,8 +1864,9 @@ function SummonUtopiaLightningFinish(c,mode) end function LightningFilter(c,source) if NotNegated(source) - and source.xyz_material_count>1 + and (source.xyz_material_count>1 and CardsMatchingFilter(source.xyz_materials,FilterSet,0x7f)>0 + or FilterLocation(source,LOCATION_EXTRA)) then source.attack=5000 end @@ -1634,20 +1875,22 @@ end function LightningPrioFilter(c,source) return LightningFilter(c,source) and NotNegated(source) - and (c.id == 27279764 + and (c.id == 27279764 -- Towers + or c.id == 40061558 -- Skybase + --or c.id == 86221741 -- Ultimate Falcon or CardsMatchingFilter(AIMon(),function(card) return SelectAttackConditions(c,card) - and not FilterID(card,56832966) + and not FilterID(card,56832966) -- Utopia Lightning end)==0 - or FilterPrivate(c) + --or FilterPrivate(c) or FilterAttackMin(c,2500) - and not Targetable(c,TYPE_MONSTER) + and not (Targetable(c,TYPE_MONSTER) and Affected(c,TYPE_MONSTER,4)) or CanFinishGame(source,c)) end function SummonUtopiaLightning(c,mode) if mode == 1 - and HasID(AIMon(),84013237,true) - or HasID(AIMon(),56840427,true) + and (HasID(AIMon(),84013237,true) + or HasID(AIMon(),56840427,true)) then return true end @@ -1660,6 +1903,7 @@ function SummonUtopiaLightning(c,mode) if mode == 3 and OppHasStrongestMonster() and CardsMatchingFilter(OppMon(),LightningFilter,c)>0 and BattlePhaseCheck() + and not HasIDNotNegated(AIMon(),65305468,true) -- F0 then return true end @@ -1733,20 +1977,23 @@ function InstantFusionFilter(c) or c.id==70908596 and NotNegated(c) end function NodenFilter(c,level) - return (level and c.level==level or c.level<=4) --and c.id~=17412721 -- Norden + return (level and c.level==level or not level and c.level<=4) + and FilterType(c,TYPE_MONSTER) + and FilterRevivable(c) end function NodenTunerFilter(c,level) return NodenFilter(c,level-4) and FilterType(c,TYPE_TUNER) end function UseInstantFusion(c,mode) - if not (WindaCheck() and DualityCheck) then return false end + if not (WindaCheck() and DualityCheck()) then return false end + local b = (HasIDNotNegated(AIExtra(),17412721,true)) if mode == 1 and CardsMatchingFilter(AIGrave(),NodenFilter,4)>0 - and HasIDNotNegated(AIExtra(),17412721,true) -- Norden + and b + and SpaceCheck()>1 and (FieldCheck(4)==1 and OverExtendCheck(2,6) - or #AIMon()==0 and #OppMon()>0 - or DeckCheck(DECK_TELLARKNIGHT) and FieldCheck(4)==1 and DestroyCheck(OppField())>0) + or #AIMon()==0 and #OppMon()>0 and FieldCheck(4)==1 and DestroyCheck(OppField())>0) then GlobalCardMode = nil return true @@ -1771,7 +2018,7 @@ function UseInstantFusion(c,mode) end if mode == 5 and HasIDNotNegated(AIExtra(),17412721,true) -- Norden - and LocCheck()>1 + and SpaceCheck()>1 and (OverExtendCheck(2,6) or #AIMon()==0) then @@ -1940,6 +2187,40 @@ function ChainFiendish(card) end return false end +function ChainFogBlade(card) + if FilterLocation(card,LOCATION_SZONE) then + local c = ChainCardNegation(card,true,false,FilterType,TYPE_MONSTER) + if c and Affected(c,TYPE_TRAP) then + GlobalCardMode = 1 + GlobalTargetSet(c,OppMon()) + return true + end + if IsBattlePhase() and Duel.GetTurnPlayer()~=player_ai then + local source = Duel.GetAttacker() + local target = Duel.GetAttackTarget() + if source and target and WinsBattle(source,target) + and Targetable(source,TYPE_TRAP) and Affected(source,TYPE_TRAP) + and UnchainableCheck(25542642) + and not FilterAffected(source,EFFECT_DISABLE) + and not FilterType(source,TYPE_NORMAL) + then + GlobalCardMode = 1 + GlobalTargetSet(source) + return true + end + if source and CanFinishGame(source) and #AIMon()==0 + and Targetable(source,TYPE_TRAP) and Affected(source,TYPE_TRAP) + and UnchainableCheck(25542642) + and not FilterAffected(source,EFFECT_DISABLE) + and not FilterType(source,TYPE_NORMAL) + then + GlobalCardMode = 1 + GlobalTargetSet(source) + return true + end + end + end +end function ChainSkillDrain(card) if AI.GetPlayerLP(1)<=1000 then return false @@ -2116,10 +2397,17 @@ function ChainDecree(source) return false end function TreacherousFilter(c,type) + type=type or TYPE_TRAP return Affected(c,type,4) and Targetable(c,type) and (type~=TYPE_TRAP or not TraptrixFilter(c)) end +function FloodgateFilter(c,type) + type=type or TYPE_TRAP + return Affected(c,type,4) + and FilterController(c,2) + and (type~=TYPE_TRAP or not TraptrixFilter(c)) +end GlobalRafflesia = nil function ChainRafflesia(source,mode) if mode == 1 then @@ -2177,6 +2465,20 @@ function ChainRafflesia(source,mode) return true end end + if HasID(AIDeck(),69599136,true) + and (Duel.CheckEvent(EVENT_SUMMON_SUCCESS) + or Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS) + or Duel.CheckEvent(EVENT_FLIP_SUMMON_SUCCESS)) + then + local targets = SubGroup(summoned,FloodgateFilter,TYPE_MONSTER) + local targets2 = SubGroup(targets,FilterPriorityTarget) + if (#targets>1 or #targets2>0) + and UnchainableCheck(06511113) + then + GlobalRafflesia = 69599136 + return true + end + end end if RemovalCheckCard(c) and #AIMon()<2 then --return true @@ -2187,7 +2489,16 @@ function ChainTreacherous(c) return CardsMatchingFilter(OppMon(),TreacherousFilter,TYPE_TRAP)>1 and UnchainableCheck(99590524) end - +function ChainFloodgate(c) + local targets = SubGroup(AI.GetLastSummonedCards(),FloodgateFilter) + local targets2 = SubGroup(targets,FilterPriorityTarget) + if UnchainableCheck(c.id) + and (#targets>1 or #targets2>0) + then + return true + end + return false +end function CompulseFilter(c) return c:is_affected_by(EFFECT_CANNOT_BE_EFFECT_TARGET)==0 and c:is_affected_by(EFFECT_IMMUNE_EFFECT)==0 @@ -2309,6 +2620,49 @@ end function ChainDustTornado(c) return ChainMST(c) end +function CosmicCycloneFilter(c,ep) + return Targetable(c,TYPE_SPELL) + and Affected(c,TYPE_SPELL) + and (not ep or FilterStatus(c.STATUS_SET_TURN)) +end +function ChainCosmicCyclone(c) + if AI.GetPlayerLP(1)<=1000 then + return false + end + local targets=CardsMatchingFilter(OppST(),CosmicCycloneFilter) + local targets2=CardsMatchingFilter(OppST(),CosmicCycloneFilter,true) + local e = Duel.GetChainInfo(Duel.GetCurrentChain(),CHAININFO_TRIGGERING_EFFECT) + if RemovalCheckCard(c) then + if e and e:GetHandler():IsCode(12697630) then -- Beagalltach + return false + end + if targets > 0 then + return true + end + end + if not UnchainableCheck(c.id) then + return false + end + if Duel.GetCurrentPhase()==PHASE_END then + if targets2 > 0 then + local cards = SubGroup(OppST(),CosmicCycloneFilter,true) + GlobalCardMode = 1 + GlobalTargetSet(cards[math.random(#cards)],OppST()) + return true + end + end + local target = RemoveOnActivation(nil,CosmicCycloneFilter) + if target then + GlobalCardMode = 1 + GlobalTargetSet(target) + return true + end + if HasPriorityTarget(OppST(),true) + and Duel.GetCurrentChain()==0 then + return true + end + return false +end function ChainPanzerDragon(c) return DestroyCheck(OppField())>0 end @@ -2322,180 +2676,353 @@ function ChainTitanicGalaxy(c) return true end end +function ChainDrancia(c) + local targets = CardsMatchingFilter(OppField(),DranciaFilter) + local targets2 = CardsMatchingFilter(OppField(),DranciaFilter,true) + if RemovalCheckCard(c) + or NegateCheckCard(c) + then + return true + end + if not UnchainableCheck(48905153) then + return false + end + if targets2 and targets2 > 0 + and (AIGetStrongestAttack()<=OppGetStrongestAttDef(DranciaFilter,true) + or TurnEndCheck() or Duel.GetTurnPlayer()==1-player_ai) + then + return true + end + if targets and targets == 1 and #OppMon()==1 and BattlePhaseCheck() + and Duel.GetTurnPlayer()==player_ai + and ExpectedDamage(2)>=AI.GetPlayerLP(2) then + return true + end + if IsBattlePhase() + and Duel.GetTurnPlayer()~=player_ai + and targets>0 then + local aimon,oppmon = GetBattlingMons() + if aimon and oppmon + and (WinsBattle(oppmon,aimon) + and DranciaFilter(oppmon)) + then + GlobalCardMode = 1 + GlobalTargetSet(oppmon) + return true + end + end + if Duel.GetTurnPlayer()==1-player_ai + and Duel.CheckTiming(TIMING_END_PHASE) + and targets>0 + then + return true + end +end +GlobalDimensionalBarrier = nil +function ChainDimensionalBarrier(source) + if not UnchainableCheck(source.id) + and not RemovalCheckCard(source) + then + return false + end + local c,link = ChainCardNegation(source,false,0,nil,nil,true) + if c and Duel.GetOperationInfo(link,CATEGORY_SPECIAL_SUMMON) + and CanSpecialSummon(2) + then + local e = Duel.GetChainInfo(link, CHAININFO_TRIGGERING_EFFECT) + if FilterType(c,TYPE_SPELL+TYPE_TRAP) + and FilterType(c,TYPE_RITUAL) + then + GlobalDimensionalBarrier = TYPE_RITUAL -- Ritual summon + SetNegated(link) + return true + end + if FilterSet(c,0x95) -- Rank-Up Magic + then + GlobalDimensionalBarrier = TYPE_XYZ -- Rank-Up XYZ summon + SetNegated(link) + return true + end + if e:IsHasCategory(CATEGORY_FUSION_SUMMON) + then + GlobalDimensionalBarrier = TYPE_FUSION -- Fusion summon + SetNegated(link) + return true + end + end + if Duel.GetCurrentChain()==0 + and CanSpecialSummon(2) + and Duel.GetTurnPlayer()==1-player_ai + or RemovalCheckCard(source) + then + local cards = SubGroup(OppMon(),FilterPosition,POS_FACEUP) + if CardsMatchingFilter(cards,FilterTuner)>0 + and CardsMatchingFilter(cards,FilterNonTuner)>0 + then + --GlobalDimensionalBarrier = TYPE_SYNCHRO -- Synchro summon + --return true + end + cards=SubGroup(cards,FilterInvert,{FilterType,TYPE_TOKEN}) + for i,c in pairs(cards) do + if CardsMatchingFilter(cards,FilterLevel,c.level)>1 + then + --GlobalDimensionalBarrier = TYPE_XYZ -- XYZ summon + --return true + end + end + if CanPendulumSummon(2) + and CardsMatchingFilter(OppExtra(),FilterPosition,POS_FACEUP)+#OppHand()>1 + then + GlobalDimensionalBarrier = TYPE_PENDULUM -- Pendulum summon + return true + end + end + local c,link = ChainCardNegation(source,false,4,nil,nil,true) + if c and FilterType(c,TYPE_MONSTER) + and Affected(c,TYPE_TRAP) + then + local types={TYPE_RITUAL,TYPE_FUSION,TYPE_SYNCHRO,TYPE_XYZ,TYPE_PENDULUM} + for i,v in pairs(types) do + if FilterType(c,v) + and FilterLocation(c,LOCATION_ONFIELD) + and NotNegated(c) + then + GlobalDimensionalBarrier = v + SetNegated(link) + return true + end + end + end + if RemovalCheckCard(source) then + GlobalDimensionalBarrier = true + return true + end +end function PriorityChain(cards) -- chain these before anything else + if HasIDNotNegated(cards,48229808,ChainNegation,0) then -- Black Flame Horus + return Chain() + end if HasIDNotNegated(cards,58120309,ChainNegation) then -- Starlight Road - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,02956282,ChainNegation,2) then -- Naturia Barkion - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,33198837,ChainNegation,0) then -- Naturia Beast - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,99916754,ChainNegation,0) then -- Naturia Exterio - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,64063868,ChainNegation,2) then -- Kozmo Dark Eclipser + return Chain() end if HasID(cards,44508094,false,nil,LOCATION_MZONE,ChainNegation,2) then -- Stardust - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,82044279,ChainNegation) then -- Clear Wing Synchro Dragon - return {1,CurrentIndex} + return Chain() end if HasID(cards,61257789,false,nil,LOCATION_MZONE,ChainNegation) then -- Stardust AM - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,63767246,ChainNegation,2) then -- Titanic Galaxy + return Chain() end - if HasIDNotNegated(cards,63767246,ChainNegation) then -- Titanic Galaxy - return {1,CurrentIndex} + if HasIDNotNegated(cards,50954680,ChainNegation) then -- Crystal Wing Synchro Dragon + return Chain() end if HasIDNotNegated(cards,35952884,false,nil,LOCATION_MZONE,ChainNegation) then -- Quasar - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,24696097,ChainNegation) then -- Shooting Star - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,12408276,false,12408276*16+1,ChainNegation) -- Kozmo Dark Lady + and AI.GetPlayerLP(1)>1000 + then + return Chain() + end + if HasIDNotNegated(cards,55063751,ChainNegation) then -- Gameciel + return Chain() end if HasIDNotNegated(cards,10443957,ChainNegation) then -- Infinity - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,99188141,ChainNegation) then -- THRIO - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,66994718,ChainNegation) then -- Raptor's Gust + return Chain() end if HasID(cards,74822425,false,nil,LOCATION_MZONE,ChainNegation) then -- Shekinaga - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,75286621,ChainNegation) then -- Merkabah + return Chain() end if HasIDNotNegated(cards,27346636,ChainNegation) then -- Heraklinos - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,01621413,ChainNegation) then -- Requiem Dragon + return Chain() end if HasIDNotNegated(cards,29616929,ChainNegation) then -- Traptrix Trap Hole Nighmare - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,74294676,ChainNegation) then -- Laggia - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,42752141,ChainNegation) then -- Dolkka - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,71068247,ChainNegation) then -- Totem Bird - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,06511113,ChainRafflesia,1) then -- Rafflesia - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,96216229,ChainNegation) then -- War Chariot - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,41510920,ChainNegation) then -- Stellarnova Alpha - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,34507039,ChainNegation,2) then -- Wiretap - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,03819470,ChainNegation) and AI.GetPlayerLP(1)>1000 then -- Seven Tools - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,49010598,ChainNegation,5) then -- Divine Wrath - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,58851034,ChainNegation) then -- Cursed Seal + return Chain() end if HasIDNotNegated(cards,77414722,ChainNegation) then -- Magic Jammer - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,77538567,ChainNegation,5) then -- Dark Bribe - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,93016201,ChainNegation,0) then -- Royal Oppression - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,50323155,ChainNegation) then -- Black Horn of Heaven - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,04810828,ChainNegation) then -- Sauravis + return Chain() end if HasIDNotNegated(cards,40605147,ChainNegation) and AI.GetPlayerLP(1)>1500 then -- Solemn Notice - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,84749824,ChainNegation) and AI.GetPlayerLP(1)>2000 then -- Solemn Warning - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,41420027,ChainNegation) then -- Solemn Judgment - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,92512625,ChainNegation) and AI.GetPlayerLP(1)>3000 then -- Solemn Advice - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,59438930,ChainNegation,2) then -- Ghost Ogre - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,82732705,ChainSkillDrain) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,78474168,ChainBTS) then - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,25542642,ChainFogBlade) then + return Chain() end if HasIDNotNegated(cards,50078509,ChainFiendish) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,63746411,ChainGiantHand) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,06511113,ChainRafflesia,2) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,01639384,ChainFelgrand) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,25789292,ChainChalice) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,73445448,ChainZombiestein) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,97268402,ChainVeiler) then - return {1,CurrentIndex} + return Chain() end + if HasIDNotNegated(cards,83326048,ChainDimensionalBarrier) then + return Chain() + end + if HasIDNotNegated(cards,69599136,ChainFloodgate) then + return Chain() + end if HasIDNotNegated(cards,99590524,ChainTreacherous) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,26329679,ChainConstellarOmega) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,51452091,ChainDecree) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,59616123,ChainTrapStun) then GlobalTrapStun = Duel.GetTurnCount() - return {1,CurrentIndex} + return Chain() end return nil end function GenericChain(cards) + if HasID(cards,48905153,ChainDrancia) then + return Chain() + end if HasID(cards,43898403,ChainTwinTwister) then return Chain() end if HasID(cards,60082869,ChainDustTornado) then - return {1,CurrentIndex} + return Chain() end if HasID(cards,05318639,ChainMST) then - return {1,CurrentIndex} + return Chain() + end + if HasID(cards,08267140,ChainCosmicCyclone) then + return Chain() end if HasID(cards,94192409) and ChainCompulse() then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,10406322,UseAlsei) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,56832966,ChainUtopiaLightning) then - return {1,CurrentIndex} + return Chain() end if HasIDNotNegated(cards,55713623,ChainShrink) then - return {1,CurrentIndex} + return Chain() end if HasID(cards,33698022) then -- Moonlight Rose - return {1,CurrentIndex} + return Chain() end if HasID(cards,72959823,ChainPanzerDragon) then - return {1,CurrentIndex} + return Chain() end if HasID(cards,73176465,false,nil,LOCATION_GRAVE) then -- Felis - return {1,CurrentIndex} + return Chain() + end + if HasIDNotNegated(cards,81275020) then -- Speedroid Terrortop + OPTSet(81275020) + return Chain() end return nil end @@ -2627,14 +3154,14 @@ function SkyblasterTarget(cards,count) return BestTargets(cards,count) end function VolcasaurusTarget(cards) - return BestTargets(cards,1,true) + return BestTargets(cards,1) end function ArcaniteTarget(cards) - return BestTargets(cards,1,true) + return BestTargets(cards,1) end function PanzerDragonTarget(cards) - return BestTargets(cards,1,true) + return BestTargets(cards,1) end function CompulseTarget(cards) local result = nil @@ -2658,6 +3185,14 @@ end function DustTornadoTarget(cards) return MSTTarget(cards) end +function CosmicCycloneTarget(cards) + result = nil + if GlobalCardMode == 1 then + result=GlobalTargetGet(cards,true) + GlobalCardMode=nil + end + return BestTargets(cards,1,TARGET_BANISH,CosmicCycloneFilter) +end function SoulChargeTarget(cards,min,max) local result={} local count = max @@ -2716,6 +3251,23 @@ function TwinTwisterTarget(cards) end GlobalTwinTwisterTarget = nil end + if #targets<2 + and HasID(AIST(),20292186,true) -- Artifact Scythe + and Duel.GetTurnPlayer()==1-player_ai + and CanSpecialSummon() + and SpaceCheck()>0 + then + targets[#targets+1] = FindID(20292186,cards) + end + if #targets<2 + and HasID(AIST(),85103922,true) -- Artifact Moralltach + and Duel.GetTurnPlayer()==1-player_ai + and CanSpecialSummon() + and SpaceCheck()>0 + and CardsMatchingFilter(OppField(),MoralltachFilter)>0 + then + targets[#targets+1] = FindID(85103922,cards) + end local count = 0 local check = DestroyCheck(cards,false,true,false,FilterController,2) if #targets == 0 then @@ -2732,6 +3284,49 @@ end function PendulumSummonTarget(cards,max) return BestTargets(cards,max,TARGET_PROTECT,FilterLocation,LOCATION_EXTRA) end +function FogBladeTarget(cards,source) + if LocCheck(cards,LOCATION_ONFIELD) then + if GlobalCardMode == 1 then + GlobalCardMode = nil + return BestTargets(cards,1,TARGET_OTHER,FilterGlobalTarget,cards) + end + return BestTargets(cards,1,TARGET_OTHER) + end + if GlobalCardMode == 1 then + GlobalCardMode = nil + return Add(cards,PRIO_TOFIELD,1,FilterGlobalTarget,cards) + end + return Add(cards,PRIO_TOFIELD,1,PKNonXYZFilter) +end +function RequiemTarget(cards,min) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,LOCATION_GRAVE,min,ExcludeID,16195942) + end + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_TOFIELD) + end + if GlobalCardMode == 1 then + GlobalCardMode = nil + return BestTargets(cards,1,TARGET_OTHER,FilterGlobalTarget) + end + return BestTargets(cards,1,TARGET_OTHER) +end +function LightningTarget(cards,min) + return Add(cards,PRIO_TOGRAVE,min,ExcludeID,84013237) +end +function DranciaTarget(cards,c) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + if GlobalCardMode == 1 then + GlobalCardMode = nil + return GlobalTargetGet(cards,true) + end + return BestTargets(cards,1,TARGET_DESTROY,DranciaFilter) +end +GenericTargetFunctions = { +[48905153] = DranciaTarget, +} function GenericCard(cards,min,max,id,c) if c then id = c.id @@ -2740,9 +3335,20 @@ function GenericCard(cards,min,max,id,c) GlobalPendulumSummon = nil return PendulumSummonTarget(cards,max) end + for i,v in pairs(GenericTargetFunctions) do + if id == i then + return v(cards,c,min,max) + end + end + if id == 56832966 then + return LightningTarget(cards,min) + end if id == 63519819 then return TERTarget(cards) end + if id == 01621413 then + return RequiemTarget(cards,min) + end if id == 43898403 then return TwinTwisterTarget(cards) end @@ -2839,6 +3445,12 @@ function GenericCard(cards,min,max,id,c) if id == 99590524 then -- Treacherous return BestTargets(cards,min,TARGET_DESTROY) end + if id == 81275020 then -- Terrortop + return Add(cards) + end + if id == 25542642 then + return FogBladeTarget(cards) + end return nil end @@ -2868,6 +3480,10 @@ function GenericEffectYesNo(id,card) if id == 63767246 and ChainTitanicGalaxy(card) then result = 1 end + if id == 81275020 then -- Speedroid Terrortop + OPTSet(id) + return 1 + end return result end GenericAtt={ diff --git a/ai/decks/GladBeast.lua b/ai/decks/GladBeast.lua index 19c61d58..506bd65c 100644 --- a/ai/decks/GladBeast.lua +++ b/ai/decks/GladBeast.lua @@ -339,7 +339,7 @@ function UsePrisma(c,mode) and HasIDNotNegated(AIExtra(),27346636,true) -- Heraklinos then GlobalCardMode = 1 - GlobalTargetSet(FindID(AIExtra(),27346636)) + GlobalTargetSet(FindID(27346636,AIExtra())) return true end end @@ -1061,6 +1061,7 @@ function ChainCothGlad(c) end local aimon,oppmon=GetBattlingMons() if IsBattlePhase() + and aimon and oppmon and WinsBattle(oppmon,aimon) and GyzarusFilter(oppmon) and Duel.GetCurrentChain()==0 @@ -1070,6 +1071,7 @@ function ChainCothGlad(c) return true end if IsBattlePhase() + and oppmon and GyzarusFilter(oppmon) and #AIMon()==0 and Duel.GetCurrentChain()==0 @@ -1263,7 +1265,7 @@ function GladBeastPosition(id,available) for i=1,#GladBeastVary do if GladBeastVary[i]==id then - if (BattlePhaseCheck() or Duel.GetCurrentPhase()==PHASE_BATTLE) + if (BattlePhaseCheck() or IsBattlePhase()) and Duel.GetTurnPlayer()==player_ai then result=POS_FACEUP_ATTACK diff --git a/ai/decks/HAT.lua b/ai/decks/HAT.lua index 446748a1..8695e643 100644 --- a/ai/decks/HAT.lua +++ b/ai/decks/HAT.lua @@ -1,6 +1,8 @@ function TrapHoleFilter(c) - return bit32.band(c.type,TYPE_TRAP)>0 - and (IsSetCode(c.setcode,0x4c) or IsSetCode(c.setcode,0x89)) + return FilterType(c,TYPE_TRAP) + --and FilterType(c,TYPE_NORMAL) + and(FilterSet(c,0x4c) + or FilterSet(c,0x89)) end function TraptrixFilter(c) return bit32.band(c.type,TYPE_MONSTER)>0 and IsSetCode(c.setcode,0x108a) @@ -53,10 +55,10 @@ function IceHandCond(loc,c) return true end function MoralltachFilter(c) - return bit32.band(c.position,POS_FACEUP)>0 - and c:is_affected_by(EFFECT_INDESTRUCTABLE_EFFECT)==0 - and bit32.band(c.status,STATUS_LEAVE_CONFIRMED)==0 - and not DestroyBlacklist(c) + c=GetCardFromScript(c) + return FilterPosition(c,POS_FACEUP) + and Affected(c,TYPE_MONSTER,5) + and DestroyCheck(c,true) end function MoralltachCond(loc) if loc == PRIO_TOHAND then @@ -227,6 +229,8 @@ function ScytheCheck() local nontuners = 0 local level = {} local lvlcount = 0 + local zodiac = false + local abc = false for i=1,#OppMon() do local c = OppMon()[i] if FilterPosition(c,POS_FACEUP) then @@ -243,14 +247,19 @@ function ScytheCheck() level[c.level]=1 lvlcount=math.max(lvlcount,1) end + if FilterSet(c,0xf1) then -- Zodiac Beast + zodiac = true + end + if ABCMaterials(OppGrave()) then + abc = true + end end end - return (tuners>0 and nontuners>0 or lvlcount>1) + return (tuners>0 and nontuners>0 or lvlcount>1 or zodiac or abc) and Duel.GetTurnPlayer()==1-player_ai - and DualityCheck() + and CanSpecialSummon() and not SkillDrainCheck() - and (Duel.GetCurrentPhase()==PHASE_MAIN1 - or Duel.GetCurrentPhase()==PHASE_MAIN2) + and IsMainPhase() end function HATInit(cards) local Activatable = cards.activatable_cards @@ -489,11 +498,11 @@ function ArtifactCheckGrave(sanctum) local BeagalltachCheck = HasID(AIGrave(),12697630,true) and HasID(AIST(),85103922,true) and Duel.GetTurnPlayer()==1-player_ai and WindaCheck() if BeagalltachCheck then - GlobalTargetSet(FindID(12697630),AIGrave()) + GlobalTargetSet(FindID(12697630,AIGrave())) return true end if MoralltachCheck then - GlobalTargetSet(FindID(85103922),AIGrave()) + GlobalTargetSet(FindID(85103922,AIGrave())) return true end return false @@ -526,7 +535,7 @@ function ChainCotH(card) end if MyrmeleoCheck then GlobalCardMode = 1 - GlobalTargetSet(FindID(91812341),AIGrave()) + GlobalTargetSet(FindID(91812341,AIGrave())) return true end return true -- return true anyways to avoid destruction effects that only destroy face-down cards @@ -560,26 +569,45 @@ function ChainCotH(card) end if MyrmeleoCheck and CardsMatchingFilter(OppST(),MSTEndPhaseFilter)>0 then GlobalCardMode = 1 - GlobalTargetSet(FindID(91812341),AIGrave()) + GlobalTargetSet(FindID(91812341,AIGrave())) return true end end if ScytheCheck() and HasID(AIGrave(),20292186,true) then GlobalCardMode = 1 - GlobalTargetSet(FindID(20292186),AIGrave()) + GlobalTargetSet(FindID(20292186,AIGrave())) return true end return false end -function MoonWhitelist(c) -- cards to use Book of Moon on as soon as they hit the field, to prevent them from activating their effects - return c.id == 48739166 and c.xyz_material_count>=2 --SHArk - or c.id == 92633039 and c.xyz_material_count>=2 --Castel - or c.id == 57774843 or c.id == 72989439 or c.id == 65192027 --JD,BLS,DAD +function MoonWhitelist(c) -- cards to use Book of Moon on as soon as they hit the field + return (c.id == 48739166 and c.xyz_material_count>=2 --SHArk + or c.id == 82633039 and c.xyz_material_count>=2 --Castel + or c.id == 57774843 -- JD + or c.id == 72989439 -- BLS + or c.id == 65192027 -- DAD + or c.id == 58481572 -- Dark Law + or c.id == 50954680 -- Crystal Wing + or c.id == 47084486 and Duel.GetTurnPlayer()==player_ai -- Vanity's Fiend + or c.id == 72634965 -- Vanity's Ruler + or c.id == 10443957 -- CyDra Infinity + or c.id == 58069384 and Duel.GetTurnPlayer()==1-player_ai -- CyDra Nova + or FilterSet(c,0xf1) and FilterType(c,TYPE_XYZ) -- any Zodiac Beast XYZ + and Duel.GetTurnPlayer()==1-player_ai + ) + and not CanChangePos(c) + or c.id == 56832966 and IsBattlePhase() -- Utopia Lightning end function MoonWhitelist2(id) -- cards to chain Book of Moon to to save your monsters - return id == 29401950 or id == 44095762 -- Bottomless, Mirrorforce + return id == 29401950 -- Bottomless + or id == 44095762 -- Mirrorforce or id == 70342110 -- DPrison + or id == 05650082 -- Storming Mirror Force + or id == 40838625 -- Quaking Mirror Force + or id == 47475363 -- Drowning Mirror Force + or id == 75249652 -- Blazing Mirror Force + or id == 37104630 -- Atlantean Heavy Infantry end function MoonFilter(c) return FilterType(c,TYPE_MONSTER) @@ -608,14 +636,19 @@ function ChainBoM(card) if e then c = e:GetHandler() end - if RemovalCheckCard(card) and not c:IsCode(12697630) and targets1>0 then + if RemovalCheckCard(card) + and not c:IsCode(12697630) + and targets1>0 + then return true end if not UnchainableCheck(14087893) then return false end cg = NegateCheck() - if cg and Duel.GetCurrentChain()>1 and not DeckCheck(DECK_BA) then + if cg and Duel.GetCurrentChain()>1 + and not DeckCheck(DECK_BA) + then if c and c:GetCode() == 29616929 then return false end @@ -652,7 +685,8 @@ function ChainBoM(card) if IsBattlePhase() and Duel.GetTurnPlayer()==1-player_ai then local source = Duel.GetAttacker() local target = Duel.GetAttackTarget() - if WinsBattle(source,target) and MoonFilter2(source,1-player_ai) + if source and target + and WinsBattle(source,target) and MoonFilter2(source,1-player_ai) and not (target:GetCode()==68535320 and CardsMatchingFilter(OppMon(),DestroyFilter)>0) and not (target:GetCode()==95929069 and CardsMatchingFilter(OppST(),DestroyFilter)>0) then @@ -660,7 +694,7 @@ function ChainBoM(card) GlobalTargetSet(source,OppMon()) return true end - if CanFinishGame(source) and #AIMon()==0 + if source and CanFinishGame(source) and #AIMon()==0 and Targetable(source,TYPE_TRAP) and Affected(source,TYPE_TRAP) and UnchainableCheck(14087893) then @@ -721,6 +755,7 @@ function ChainDPrison() return false end function BottomlessFilter(c,type) + type=type or TYPE_TRAP return DestroyFilter(c,true,true) and Affected(c,type,4) and (type~=TYPE_TRAP or not TraptrixFilter(c)) diff --git a/ai/decks/HERO.lua b/ai/decks/HERO.lua index 1120d779..59dc27ec 100644 --- a/ai/decks/HERO.lua +++ b/ai/decks/HERO.lua @@ -656,7 +656,6 @@ function UseUpstart(c,mode) return false end if mode == 1 then - --print(SummonBubbleCheck()) return not (HasIDNotNegated(AICards(),00423585,true) or SummonBubbleCheck() or not NormalSummonCheck()) end @@ -726,33 +725,27 @@ function NotBubbleFilter(c) and c.id~=79979666 end function SummonBubbleCheck() - --print("bubble check") local count=2 local summons = 1 if NormalSummonCheck() then - --print("alreadys normal summoned, reducing count") count=1 end if not HasBubble() then - --print("no bubble available, abort") return false end if CardsMatchingFilter(AIHand(),FilterType,TYPE_SPELL+TYPE_TRAP)>SpaceCheck(LOCATION_SZONE) then - --print("not enough S/T space, abort") return false end if NormalSummonCheck() and CardsMatchingFilter(AIHand(),NotBubbleFilter)>0 or CardsMatchingFilter(AIHand(),NotBubbleFilter)>1 then - --print("too many monsters in hand, abort") return false end if not NormalSummonCheck() and CardsMatchingFilter(UseLists(AIHand(),AIST()),BubbleCheckFilter)>0 then - --print("bubble + another monster available, summons +1") summons = 2 end if FieldCheck(4)+summons<=4 @@ -760,10 +753,8 @@ function SummonBubbleCheck() or FieldCheck(4)+summons>1 and not CanSummonDarkLaw()) then - --print("bubble okay") return true end - --print("don't summon bubble") return false end function SetShadowMist(c) @@ -1573,7 +1564,7 @@ function ChainMaskChange(c) local heroes = SubGroup(AIMon(),HEROFilter) heroes = SubGroup(heroes,FilterPosition,POS_FACEUP) local mheroes = SubGroup(AIExtra(),MHEROFilter) - if RemovalCheckCard(c) then + if RemovalCheckCard(c,nil,nil,true) then return true end if not UnchainableCheck(21143940) then @@ -1668,7 +1659,7 @@ function ChainCotHHERO(c) if HasIDNotNegated(AICards(),21143940,true) and #OppMon()==0 and ExpectedDamage()==0 - and Duel.GetCurrentPhase()==PHASE_BATTLE + and IsBattlePhase() and Duel.GetTurnPlayer==player_ai then return true diff --git a/ai/decks/Harpie.lua b/ai/decks/Harpie.lua index 2e8cb191..7c133200 100644 --- a/ai/decks/Harpie.lua +++ b/ai/decks/Harpie.lua @@ -729,7 +729,7 @@ function ChainParty(c) then return true end - if Duel.GetCurrentPhase()==PHASE_BATTLE + if IsBattlePhase() and Duel.GetTurnPlayer()~=player_ai and UnchainableCheck(77778835) then @@ -740,7 +740,7 @@ function ChainParty(c) return true end end - if Duel.GetCurrentPhase()==PHASE_BATTLE + if IsBattlePhase() and Duel.GetTurnPlayer()==player_ai and UnchainableCheck(77778835) then @@ -814,7 +814,7 @@ function HarpiePosition(id,available) for i=1,#HarpieAtt do if HarpieAtt[i]==id then - if Duel.GetCurrentPhase()==PHASE_BATTLE + if IsBattlePhase() and Duel.GetTurnPlayer()~=player_ai then result=POS_FACEUP_DEFENSE diff --git a/ai/decks/Kozmo.lua b/ai/decks/Kozmo.lua index 807be40a..4f62b385 100644 --- a/ai/decks/Kozmo.lua +++ b/ai/decks/Kozmo.lua @@ -45,7 +45,7 @@ KozmoActivateBlacklist={ 67050396, -- Goodwitch 31061682, -- Farmgirl 56907986, -- Strawman -54063868, -- Dark Eclipser +64063868, -- Dark Eclipser 01274455, -- Soartrooper 64280356, -- Tincan 67723438, -- Emergency Teleport @@ -56,7 +56,14 @@ KozmoActivateBlacklist={ 58577036, -- Reasoning 90452877, -- Kozmojo 97077563, -- CotH - +59496924, -- Landwalker +12408276, -- Dark Lady +37679169, -- Delta Shuttle +09929398, -- Gofu +66413481, -- Yaksha +54149433, -- Garunix +57554544, -- Fire King Island +85252081, -- Granpulse } KozmoSummonBlacklist={ 55885348, -- Dark Destroyer @@ -66,9 +73,15 @@ KozmoSummonBlacklist={ 93302695, -- Wickedwitch 67050396, -- Goodwitch 31061682, -- Farmgirl -54063868, -- Dark Eclipser +64063868, -- Dark Eclipser 01274455, -- Soartrooper 64280356, -- Tincan +59496924, -- Landwalker +12408276, -- Dark Lady +37679169, -- Delta Shuttle +09929398, -- Gofu +66413481, -- Yaksha +54149433, -- Garunix 59438930, -- Ghost Ogre 56907986, -- Strawman @@ -79,6 +92,12 @@ KozmoSummonBlacklist={ 21044178, -- Abyss Dweller 18326736, -- Planetellarknight Ptolemaeus 01639384, -- Felgrand +62709239, -- Break Sword +85252081, -- Granpulse +95992081, -- Leviair +36776089, -- Centaurea +65305468, -- F0 +25862681, -- AFD } KozmoSetBlacklist={ 58577036, -- Reasoning @@ -101,6 +120,8 @@ KozmoUnchainable={ 29491334, -- Dog Fighter 94454495, -- Sliprider 90452877, -- Kozmojo +12408276, -- Dark Lady +85252081, -- Granpulse } function KozmoFilter(c,exclude) local check = true @@ -117,23 +138,41 @@ function KozmoMonsterFilter(c,exclude) return FilterType(c,TYPE_MONSTER) and KozmoFilter(c,exclude) end +function FireKingFilter(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0x81) and check +end +function FireKingMonsterFilter(c,exclude) + return FilterType(c,TYPE_MONSTER) + and FireKingFilter(c,exclude) +end function KozmoRider(c,exclude) return KozmoMonsterFilter(c,exclude) - and FilterLevelMax(c,4) + and FilterRace(c,RACE_PSYCHO) end function KozmoShip(c,exclude) return KozmoMonsterFilter(c,exclude) + and FilterRace(c,RACE_MACHINE) and FilterLevelMin(c,5) end + function DestroyerCond(loc,c) if loc == PRIO_TOHAND then - return not HasID(AIHand(),c.id) - and CardsMatchingFilter(AICards(),KozmoRider)>0 + return not HasID(AIHand(),c.id,true) + and (CardsMatchingFilter(AICards(),KozmoRider)>0 + or FireKingIslandCheck()) end if loc == PRIO_TOFIELD then return DestroyCheck(OppMon())>0 or #OppMon()==0 and CardsMatchingFilter(AIMon(),DestroyerFilter)>0 - or #OppMon()==0 and HasIDNotNegated(AIDeck(),56907986,true) + or #OppMon()==0 and HasIDNotNegated(AIDeck(),56907986,true) and #AIMon()<2 -- Strawman and DualityCheck() and MacroCheck() end @@ -141,12 +180,20 @@ function DestroyerCond(loc,c) end function ForerunnerCond(loc,c) if loc == PRIO_TOHAND then - return not HasID(AIHand(),c.id) - and CardsMatchingFilter(AICards(),KozmoRider)>0 + return not HasID(AIHand(),c.id,true) + and (CardsMatchingFilter(AICards(),KozmoRider)>0 + or FireKingIslandCheck()) end if loc == PRIO_TOFIELD then - return OppGetStrongestAttack()<=c.attack + if OppGetStrongestAttack()<=c.attack or AI.GetPlayerLP(1)<2000 + or (HasID(AIST(),90452877,true) -- Kozmojo + and CardsMatchingFilter(AIMon(),KozmoShip)==0) + or HasIDNotNegated(AIMon(),12408276,true) -- Dark Lady + then + return true + end + return false end return true end @@ -159,7 +206,9 @@ function KozmotownCond(loc,c) then return false end - return not HasID(AICards(),c.id) + if HasID(AICards(),c.id,true) then + return false + end end return true end @@ -167,19 +216,28 @@ function FarmgirlCond(loc,c) if loc == PRIO_TOHAND then return Duel.GetTurnPlayer()==player_ai and Duel.GetCurrentPhase()~=PHASE_END - and not HasID(AICards(),c.id) + and not HasID(AICards(),c.id,true) and not NormalSummonCheck() and BattlePhaseCheck() and (CanDealBattleDamage(c,OppMon()) or not OppHasStrongestMonster()) end if loc == PRIO_TOFIELD then + if IsBattlePhase() + and Duel.GetTurnPlayer()==player_ai + and (CanDealBattleDamage(c,OppMon()) + or OppMon()==0) + and not GlobalSummonNegated + and not HasID(AIMon(),c.id,true) + then + return 9 + end return Duel.GetTurnPlayer()==player_ai and (CanDealBattleDamage(c,OppMon()) or not OppHasStrongestMonster()) and OPTCheck(c.id) and not GlobalSummonNegated - and not HasID(AIMon(),31061682,true) + and not HasID(AIMon(),c.id,true) and BattlePhaseCheck() end return true @@ -188,7 +246,7 @@ function StrawmanCond(loc,c) if loc == PRIO_TOHAND then return Duel.GetTurnPlayer()==player_ai and Duel.GetCurrentPhase()~=PHASE_END - and not HasID(AICards(),c.id) + and not HasID(AICards(),c.id,true) and OPTCheck(c.id) and not NormalSummonCheck() and CardsMatchingFilter(AIBanish(),KozmoShip)>0 @@ -196,13 +254,30 @@ function StrawmanCond(loc,c) and DualityCheck() end if loc == PRIO_TOFIELD then + if KozmoComboCheck(1,2) + and HasIDNotNegated(AIST(),57554544,true) + then + return 12 + end return Duel.GetTurnPlayer()==player_ai and Duel.GetCurrentPhase()~=PHASE_END - and not HasID(AIMon(),c.id) + and not (HasID(AIMon(),c.id,true) + or HasID(AIHand(),c.id,true) + and NormalSummonsAvailable()>0) and CardsMatchingFilter(AIBanish(),KozmoShip)>0 and AI.GetPlayerLP(1)>1000 and not GlobalSummonNegated end + if loc == PRIO_TOGRAVE then + if HasIDNotNegated(AIMon(),01274455,true,FilterOPT) -- Soartrooper + and CardsMatchingFilter(AIBanish(),KozmoShip)>0 + and SpaceCheck()>1 + and AI.GetPlayerLP(1)>4000 + and not HasID(AIMon(),c.id,true) + then + return true + end + end return true end function EclipserCond(loc,c) @@ -213,13 +288,13 @@ function TincanCond(loc,c) if(Duel.GetTurnPlayer()==player_ai or Duel.GetTurnPlayer()~=player_ai and Duel.GetCurrentPhase()==PHASE_END) - and not HasID(AICards(),c.id) + and not HasID(AICards(),c.id,true) and CardsMatchingFilter(AIHand(),KozmoShip)==0 and CardsMatchingFilter(AIMon(),KozmoRider)>2 and not GlobalSummonNegated then if CardsMatchingFilter(AIMon(),KozmoRider)>0 then - return 6 + --return 6 end return true end @@ -229,13 +304,13 @@ function TincanCond(loc,c) if(Duel.GetTurnPlayer()==player_ai or Duel.GetTurnPlayer()~=player_ai and Duel.GetCurrentPhase()==PHASE_END) - and not HasID(AIMon(),c.id) + and not HasID(AIMon(),c.id,true) and CardsMatchingFilter(AIHand(),KozmoShip)==0 and CardsMatchingFilter(AIDeck(),KozmoShip)>2 and not GlobalSummonNegated then if CardsMatchingFilter(AIMon(),KozmoRider)>0 then - return 6 + --return 6 end return true end @@ -243,11 +318,40 @@ function TincanCond(loc,c) end return true end +function KozmoXYZCheck(level) + level=level or 3 + if not CanSpecialSummon() then + return false + end + if level == 3 then + if HasIDNotNegated(AIExtra(),31320433,true,SummonNightmareSharkFinish) then + return true + elseif HasIDNotNegated(AIExtra(),95992081,true,SummonLeviairKozmo,2) then + return true + elseif HasIDNotNegated(AIExtra(),62709239,true,SummonBreakSwordKozmo,2) then + return true + elseif HasIDNotNegated(AIExtra(),62709239,true,SummonBreakSwordKozmo,3) then + return true + elseif HasIDNotNegated(AIExtra(),85252081,true,SummonGranpulseKozmo,2) then + return true + end + end + if level == 5 then + if HasID(AIExtra(),58069384,true,SummonNova,1) then + return true + end + if HasID(AIExtra(),58069384,true,SummonPleiades,1) then + return true + end + end + return false -- TODO +end function SoartrooperCond(loc,c) if loc == PRIO_TOHAND then return Duel.GetTurnPlayer()==player_ai and Duel.GetCurrentPhase()~=PHASE_END - and not HasID(AICards(),c.id) + and not IsBattlePhase() + and not HasID(AICards(),c.id,true) and OPTCheck(c.id) and not NormalSummonCheck() and CardsMatchingFilter(AIGrave(),KozmoRider)>0 @@ -255,12 +359,49 @@ function SoartrooperCond(loc,c) and DualityCheck() end if loc == PRIO_TOFIELD then - return Duel.GetTurnPlayer()==player_ai + if KozmoComboCheck(1,2) + and not HasID(AIST(),57554544,true) -- Fire King Island + --and HasIDNotNegated(AIGrave(),56907986,true) -- Strawman + and Duel.GetCurrentPhase()~=PHASE_END + then + return 12 + end + if Duel.GetTurnPlayer()==player_ai and Duel.GetCurrentPhase()~=PHASE_END - and not HasID(AIMon(),c.id) + --and not HasID(AIMon(),c.id,true) and CardsMatchingFilter(AIGrave(),KozmoRider)>0 and AI.GetPlayerLP(1)>4000 and not GlobalSummonNegated + then + if FieldCheck(3)==1 + and FilterLocation(c,LOCATION_GRAVE) + and CardsMatchingFilter(AIGrave(),KozmoRider)>1 + and SpaceCheck()>1 + and KozmoXYZCheck(3) + then + return 9 + end + if HasIDNotNegated(AIGrave(),56907986,true) -- Strawman + and CardsMatchingFilter(AIBanish(),KozmoShip)>0 + and (FieldCheck(3)==1 + or (HasIDNotNegated(AIMon(),25862681,true) -- AFD + and HandCheck(3)>0)) + and SpaceCheck()>2 + then + return 9 + end + return true + end + return false + end + if loc == PRIO_TOGRAVE then + if not HasID(AIGrave(),c.id,true) + and HasID(AIMon(),c.id,true,FilterOPT) + and SpaceCheck()>2 + and AI.GetPlayerLP(1)>4000 + then + return true + end end return true end @@ -274,6 +415,7 @@ function SlipriderCond(loc,c) and (FieldCheck(5)==1 or CardsMatchingFilter(AIMon(),KozmoRider)>0 and HasID(AIHand(),c.id,true,CardsNotEqual,c)) + and KozmoXYZCheck(5) then return 9 end @@ -282,8 +424,102 @@ function SlipriderCond(loc,c) end function KozmojoCond(loc,c) if loc==PRIO_TOHAND then - return not HasIDNotNegated(AICards(),c.id,true) - and CardsMatchingFilter(AIField(),KozmoShip)>0 + if HasIDNotNegated(AICards(),c.id,true) + or CardsMatchingFilter(AIMon(),KozmoShip)==0 + or FireKingIslandCheck() and CardsMatchingFilter(AIHand(),KozmoShip)==0 + or BattlePhaseCheck() and CardsMatchingFilter(AIMon(),KozmoRider)>0 + then + return false + end + end + return true +end +function LandwalkerCond(loc,c) + if loc == PRIO_TOFIELD then + if HasIDNotNegated(AIMon(),12408276,true) -- Dark Lady + or (HasID(AIST(),90452877,true) -- Kozmojo + and CardsMatchingFilter(AIMon(),KozmoShip)==0) + then + return true + end + return false + end + return true +end +function DeltaShuttleCond(loc,c) + if loc==PRIO_TOFIELD then + if KozmoComboCheck(1) + and not HasID(AIST(),57554544,true) -- Fire King Island + then + return 13 + end + if KozmoComboCheck(3) + and HasID(AIST(),57554544,true) -- Fire King Island + then + return 13 + end + if (HasIDNotNegated(AIMon(),01274455,true) -- Soartrooper + or HasIDNotNegated(AIHand(),01274455,true) -- Soartrooper + and NormalSummonsAvailable()>0) + and CardsMatchingFilter(AIGrave(),KozmoRider)<2 + and CardsMatchingFilter(AIMon(),KozmoRider)<2 + and AI.GetPlayerLP(1)>4000 + and Duel.GetTurnPlayer()==player_ai + and Duel.GetCurrentPhase()~=PHASE_END + and not IsBattlePhase() + then + return 10 + end + end + return true +end +function DarkLadyCond(loc,c) + if loc == PRIO_TOHAND then + return CardsMatchingFilter(AICards(),KozmoRider)>0 + end + if loc == PRIO_TOFIELD then + if HasIDNotNegated(AIMon(),c.id,true) then + return 1 + end + if (Duel.GetTurnPlayer()~=player_ai + or Duel.GetCurrentPhase()==PHASE_END) + and (CardsMatchingFilter(AIMon(),KozmoShip)>0 + or not HasID(AIST(),90452877,true)) -- Kozmojo + then + return true + end + return false + end + if loc == PRIO_TOGRAVE then + if HasIDNotNegated(AIMon(),01274455,true,FilterOPT) -- Soartrooper + and SpaceCheck()>0 + and AI.GetPlayerLP(1)>3000 + and not HasID(AIMon(),c.id,true) + and not HasID(AIGrave(),c.id,true) + then + return 9 + end + return not HasID(AIGrave(),c.id,true) + end + return true +end +function FireKingIslandCond(loc,c) + if loc == PRIO_TOHAND then + if CardsMatchingFilter(AIHand(),KozmoShip)>0 + and CardsMatchingFilter(AIDeck(),FireKingMonsterFilter)>0 + and not HasID(AICards(),c.id,true) + then + return true + end + if HasID(AICards(),67237709,true) then -- Kozmotown + return 5 + end + if HasIDNotNegated(AIMon(),25862681,true) -- AFD + --and ChainCheck(25862681,1) -- AFD + then + return true + end + return false end return true end @@ -292,18 +528,24 @@ KozmoPriorityList={ -- Kozmo -[54063868] = {6,1,6,1,1,1,2,1,6,1,EclipserCond}, -- Dark Eclipser +[64063868] = {6,1,6,1,1,1,2,1,6,1,EclipserCond}, -- Dark Eclipser [55885348] = {8,3,8,4,1,1,2,1,9,1,DestroyerCond}, -- Dark Destroyer -[20849090] = {7,2,7,3,1,1,3,1,8,1,ForerunnerCond}, -- Forerunner +[20849090] = {6,2,6,3,1,1,3,1,8,1,ForerunnerCond}, -- Forerunner [29491334] = {4,1,6,1,1,1,4,1,7,1,DogfighterCond}, -- Dog Fighter [94454495] = {3,1,5,1,1,1,3,1,5,1,SlipriderCond}, -- Sliprider [93302695] = {5,1,4,1,1,1,2,1,2,1,WickedwitchCond}, -- Wickedwitch [67050396] = {1,1,3,1,1,1,4,1,2,1,GoodwitchCond}, -- Goodwitch -[31061682] = {9,2,9,2,1,1,1,1,1,1,FarmgirlCond}, -- Farmgirl -[01274455] = {4,1,4,1,1,1,1,1,1,1,SoartrooperCond}, -- Soartrooper -[56907986] = {9,1,8,1,1,1,3,1,1,1,StrawmanCond}, -- Strawman -[64280356] = {5,1,5,1,1,1,1,1,1,1,TincanCond}, -- Tincan +[31061682] = {4,2,4,2,1,1,1,1,1,1,FarmgirlCond}, -- Farmgirl +[01274455] = {10,1,8,1,3,1,1,1,1,1,SoartrooperCond}, -- Soartrooper +[56907986] = {9,1,7,1,5,1,3,1,1,1,StrawmanCond}, -- Strawman +[64280356] = {2,1,2,1,1,1,1,1,1,1,TincanCond}, -- Tincan +[59496924] = {2,1,5,1,1,1,1,1,1,1,Landwalkercond}, -- Landwalker +[12408276] = {7,1,6,3,4,2,1,1,1,1,DarkLadyCond}, -- Dark Lady +[37679169] = {1,1,2,1,1,1,1,1,1,1,DeltaShuttleCond}, -- Delta Shuttle +[09929398] = {1,1,1,1,1,1,1,1,1,1}, -- Gofu +[66413481] = {1,1,1,1,1,1,8,1,1,1}, -- Yaksha +[54149433] = {1,1,1,1,1,1,9,1,1,1,GarunixCond}, -- Garunix [37742478] = {1,1,1,1,1,1,1,1,1,1}, -- Honest [59438930] = {1,1,1,1,1,1,1,1,1,1}, -- Ghost Ogre [23434538] = {1,1,1,1,1,1,1,1,1,1}, -- Maxx "C" @@ -313,17 +555,54 @@ KozmoPriorityList={ [73628505] = {1,1,1,1,1,1,1,1,1,1}, -- Terraforming [14087893] = {1,1,1,1,1,1,1,1,1,1}, -- Book of Moon [67723438] = {1,1,1,1,1,1,1,1,1,1}, -- Emergency Teleport -[67237709] = {10,1,1,1,1,1,1,1,1,1,KozmotownCond}, -- Kozmotown +[67237709] = {6,2,1,1,1,1,1,1,1,1,KozmotownCond}, -- Kozmotown [43898403] = {1,1,1,1,1,1,1,1,1,1}, -- Twin Twister [58577036] = {1,1,1,1,1,1,1,1,1,1}, -- Reasoning +[57554544] = {8,1,1,1,1,1,1,1,1,1,FireKingIslandCond}, -- Fire King Island [05851097] = {1,1,1,1,1,1,1,1,1,1}, -- Vanity [40605147] = {1,1,1,1,1,1,1,1,1,1}, -- Notice [84749824] = {1,1,1,1,1,1,1,1,1,1}, -- Warning -[90452877] = {8,1,1,1,1,1,1,1,1,1,Kozmojocond}, -- Kozmojo +[90452877] = {8,1,1,1,1,1,1,1,1,1,KozmojoCond}, -- Kozmojo + +[25862681] = {1,1,1,1,1,1,1,1,1,1}, -- AFD } -function ActivateKozmotown(c) - return not HasID(AIST(),67237709,true,FilterPosition,POS_FACEUP) +function ActivateKozmotown(c,mode) + if mode == 1 + and FilterLocation(c,LOCATION_SZONE) + and FilterPosition(c,POS_FACEDOWN) + then + return true + end + if mode == 2 + and FilterLocation(c,LOCATION_HAND) + and CardsMatchingFilter(AIST(),FilterType,TYPE_FIELD)==0 + and (CardsMatchingFilter(AIBanish(),KozmoMonsterFilter)>0 + or UseKozmotown(c,2) + or HasIDNotNegated(AIMon(),25862681,true))--AFD + then + return true + end + if mode == 3 + then + if KozmoComboCheck(3,6) + and HasID(AIField(),57554544,true) -- Fire King Island + then + return true + end + if KozmoComboCheck(4) + and HasID(AIField(),57554544,true) -- Fire King Island + and HasID(AIGrave(),01274455,true) -- Soartrooper + then + return true + end + if KozmoComboCheck(5) + and HasID(AIField(),57554544,true) -- Fire King Island + and HasID(AIMon(),94454495,true) -- Sliprider + then + return true + end + end end function UseKozmotown(c,mode) if mode == 1 @@ -335,6 +614,22 @@ function UseKozmotown(c,mode) if mode == 2 then return TurnEndCheck() and CardsMatchingFilter(AIHand(),KozmoMonsterFilter)>2 or not NormalSummonCheck() and CardsMatchingFilter(AIHand(),KozmoRider)==0 + and CardsMatchingFilter(AIHand(),KozmoMonsterFilter)>0 + end + if mode == 3 + then + if KozmoComboCheck(3,4,5,6) + and c.description==c.id*16 + then + return true + end + if KozmoComboCheck(6) + and c.description==c.id*16+1 + and HasIDNotNegated(AIMon(),10443957,true) -- Infinity + and HasID(AIHand(),55885348,true) -- Dark Destroyer + then + return true + end end return false end @@ -352,7 +647,7 @@ function SummonFarmgirl(c,mode) return true end if mode == 2 then - return not HasID(AIMon(),c.id,true) + return CardsMatchingFilter(AIMon(),KozmoRider)==0 end end function SummonWickedWitch(c,mode) @@ -374,12 +669,12 @@ function SummonGoodWitch(c,mode) end if mode == 2 then - return not HasID(AIMon(),c.id,true) + return CardsMatchingFilter(AIMon(),KozmoRider)==0 end end function SummonStrawman(c,mode) if mode == 1 - and CardsMatchingFilter(AIBanish(),KozmoShip)==0 + and CardsMatchingFilter(AIBanish(),KozmoShip)>0 and not HasIDNotNegated(AIMon(),c.id,true) and DualityCheck() and AI.GetPlayerLP(1)>1000 @@ -387,7 +682,15 @@ function SummonStrawman(c,mode) return true end if mode == 2 then - return not HasID(AIMon(),c.id,true) + return CardsMatchingFilter(AIMon(),KozmoRider)==0 + end + if mode == 3 + and HasID(AIMon(),09929398,true) -- Gofu + and HasID(AIExtra(),25862681,true) -- AFD + and HasID(AICards(),67237709,true) -- Kozmotown + and CanSpecialSummon() + then + return true end end function SummonTincan(c,mode) @@ -399,7 +702,7 @@ function SummonTincan(c,mode) return true end if mode == 2 then - return not HasID(AIMon(),c.id,true) + return CardsMatchingFilter(AIMon(),KozmoRider)==0 end end function SummonSoartrooper(c,mode) @@ -412,12 +715,12 @@ function SummonSoartrooper(c,mode) return true end if mode == 2 then - return not HasID(AIMon(),c.id,true) + return CardsMatchingFilter(AIMon(),KozmoRider)==0 end end function UseEtele(c,mode) if mode == 1 then - if HasIDNotNegated(AIST(),67237709,true,nil,nil,POS_FACEUP,FilterOPT) + if HasIDNotNegated(AIST(),67237709,true,nil,nil,POS_FACEUP,FilterOPT) -- Kozmotown and CardsMatchingFilter(AICards(),KozmoRider)==0 and CardsMatchingFilter(AIDeck(), function(c)return KozmoRider(c) and FilterLevelMax(c,3) end)>0 @@ -425,44 +728,88 @@ function UseEtele(c,mode) then return true end - if HasIDNotNegated(AIDeck(),64280356,true) - and not HasIDNotNegated(AICards(),64280356,true) + if HasIDNotNegated(AIDeck(),64280356,true) -- Tincan + and not HasIDNotNegated(AICards(),64280356,true) -- Tincan and CardsMatchingFilter(AIHand(),KozmoShip)==0 then - return true + --return true end end if mode == 2 then if #AIMon() == 0 and (CardsMatchingFilter(AIHand(),KozmoShip)>0 - or HasIDNotNegated(AIDeck(),64280356,true)) + or HasIDNotNegated(AIDeck(),64280356,true)) -- Tincan then return true end end + if mode == 3 + and HasID(AIMon(),09929398,true) -- Gofu + then + if HasIDNotNegated(AIExtra(),73580471,true,UseFieldNuke,-2) -- Black Rose + and CardsMatchingFilter(AIDeck(),ETeleFilter,2)>0 + then + GlobalEteleLevel = 2 + return true + end + if HasIDNotNegated(AIExtra(),76774528,true,SummonScrapKozmo,0) + and CardsMatchingFilter(AIDeck(),ETeleFilter,3)>0 + then + GlobalEteleLevel = 3 + return true + end + if HasIDNotNegated(AIExtra(),25862681,true,SummonAFD,0) + and CardsMatchingFilter(AIDeck(),ETeleFilter,2)>0 + then + GlobalEteleLevel = 2 + return true + end + end return false end function UseRiderSummon(c) - if (#OppMon()>0 and not CanWinBattle(c,OppMon()) and OppHasStrongestMonster() - or HasID(AIST(),67237709,true) + if (#OppMon()>0 + and not CanWinBattle(c,OppMon()) + and OppHasStrongestMonster() + or HasID(AIST(),67237709,true) -- Kozmotown and not NormalSummonCheck() - or TurnEndCheck() and HasIDNotNegated(AIST(),67237709,true,nil,nil,POS_FACEUP,FilterOPT)) + or TurnEndCheck() + and HasIDNotNegated(AIST(),67237709,true,nil,nil,POS_FACEUP,FilterOPT)) -- Kozmotown --or not BattlePhaseCheck()) and CardsMatchingFilter(AIHand(),KozmoShip)>0 then OPTSet(c.id) return true end - if HasID(AIHand(),55885348,true) - and HasIDNotNegated(AIDeck(),56907986,true) + if HasID(AIHand(),55885348,true) -- Dark Destroyer + and HasIDNotNegated(AIDeck(),56907986,true) -- Strawman and AI.GetPlayerLP(1)>1500 - and (c.id~=31061682 or not CanDealBattleDamage(c,OppMon())) + and (CardsMatchingFilter(AIHand(),KozmoShip)>1 + or HasIDNotNegated(AIHand(),12408276,true)) -- Dark Lady + and (c.id~=31061682 or not CanDealBattleDamage(c,OppMon())) -- Farmgirl + and MP2Check() then OPTSet(c.id) return true end - if HasID(AIHand(),94454495,true) - and FieldCheck(5) == 1 + if (CardsMatchingFilter(AIHand(),KozmoShip,55885348)>0 -- Dark Destroyer + or HasIDNotNegated(AIHand(),12408276,true)) -- Dark Lady + and MP2Check() + then + OPTSet(c.id) + return true + end + if HandCheck(5,FilterRace,RACE_MACHINE)>0 + and FieldCheck(5,FilterRace,RACE_MACHINE) == 1 + and MP2Check() + then + OPTSet(c.id) + return true + end + if FieldCheck(3)>1 + and HasIDNotNegated(AIExtra(),95992081,true) -- Leviair + and (c.level<4 or CardsMatchingFilter(AIBanish(),KozmoRider,12408276)>0) + and CanSpecialSummon() then OPTSet(c.id) return true @@ -481,14 +828,14 @@ function UseFarmgirl(c,mode) OPTSet(c.id) return true end - if HasID(AIHand(),55885348,true) - and HasIDNotNegated(AIDeck(),56907986,true) + if HasID(AIHand(),55885348,true) -- Dark Destroyer + and HasIDNotNegated(AIDeck(),56907986,true) -- Strawman and AI.GetPlayerLP(1)>1000 then OPTSet(c.id) return true end - if HasID(AIHand(),94454495,true) + if HasID(AIHand(),94454495,true) -- Sliprider and FieldCheck(5) == 1 then OPTSet(c.id) @@ -498,6 +845,7 @@ function UseFarmgirl(c,mode) end function UseStrawman(c,mode) if mode == 1 + and c.description==c.id*16+1 and AI.GetPlayerLP(1)>1000 and CardsMatchingFilter(AIBanish(),KozmoShip)>0 then @@ -505,10 +853,47 @@ function UseStrawman(c,mode) return true end if mode == 2 + and c.description==c.id*16 and UseRiderSummon(c) then return true end + if mode == 3 + then + if c.description==c.id*16+1 + and KozmoComboCheck(4,5) + and HasID(AIBanish(),01274455,true) -- Soartrooper + then + return true + end + if c.description==c.id*16 + and KozmoComboCheck(1,2) + then + return true + end + if c.description==c.id*16 + and KozmoComboCheck(3,4) + and HasID(AIHand(),55885348,true) -- Dark Destroyer + then + return true + end + if c.description==c.id*16 + and KozmoComboCheck(5) + and HasID(AIMon(),01274455,true) -- Soartrooper + and HasID(AIHand(),55885348,true) -- Dark Destroyer + then + return true + end + end + if mode == 4 + and c.description==c.id*16+1 + and HasIDNotNegated(AIExtra(),73580471,true,UseFieldNuke,-1) -- Black Rose + and HasID(AIMon(),09929398,true) -- Gofu + and CardsMatchingFilter(AIBanish(),KozmoShip)>0 + and AI.GetPlayerLP(1)>1000 + then + return true + end end function UseGoodwitch(c,mode) if mode == 1 @@ -554,18 +939,609 @@ function UseTincan(c,mode) end function UseSoartrooper(c,mode) if mode == 1 then - if AI.GetPlayerLP(1)>4000 + if c.description==c.id*16+1 + and AI.GetPlayerLP(1)>4000 and CardsMatchingFilter(AIGrave(),KozmoRider)>0 then return true end + if c.description==c.id*16+1 + and AI.GetPlayerLP(1)>2000 + and HasIDNotNegated(AIGrave(),12408276,true) -- Dark Lady + then + return true + end end if mode == 2 + and c.description==c.id*16 and UseRiderSummon(c) then return true end + if mode == 3 + then + if c.description==c.id*16+1 + and NeedsCard(56907986,AIGrave(),AIMon(),true) -- Strawman + and KozmoComboCheck(1,2,5,6) + then + return true + end + if c.description==c.id*16+1 + and KozmoComboCheck(3) + and CardsMatchingFilter(AIMon(),FilterID,c.id)<2 + then + OPTSet(c) + return true + end + if c.description==c.id*16+1 + and KozmoComboCheck(4) + and (CardsMatchingFilter(AIMon(),FilterID,c.id)<2 + or HasID(AIMon(),37679169,true) -- Delta Shuttle + and NeedsCard(56907986,AIGrave(),AIMon(),true)) + then + OPTSet(c) + return true + end + if c.description==c.id*16+1 + and NeedsCard(12408276,AIGrave(),AIMon(),true) -- Dark Lady + and KozmoComboCheck(6) + then + return true + end + if c.description==c.id*16 + and KozmoComboCheck(3,4) + and CardsMatchingFilter(AIMon(),FilterID,c.id)==2 + and HasID(AIHand(),37679169,true) -- Delta Shuttle + and not OPTCheck(c) + then + return true + end + if c.description==c.id*16 + and KozmoComboCheck(5) + and HasID(AIMon(),56907986,true) -- Strawman + then + return true + end + end +end +function FireKingIslandCheck() + return HasIDNotNegated(AICards(),57554544,true,FilterOPT,true) + and CardsMatchingFilter(AIDeck(),FireKingMonsterFilter)>0 + and CanSpecialSummon() + and OPTCheck(57554544) -- Fire King Island +end +function UseFireKingIsland(c,mode) + if mode == 1 + and FilterLocation(c,LOCATION_SZONE) + and FilterPosition(c,POS_FACEUP) + and c.description==c.id*16 + and CardsMatchingFilter(AIHand(),KozmoShip)>0 + and CanSpecialSummon() + then + OPTSet(c.id) + return true + end + if mode == 2 + and (FilterPosition(c,POS_FACEDOWN) + or FilterLocation(c,LOCATION_HAND) + and CardsMatchingFilter(AIST(),FilterType,TYPE_FIELD)==0 + or KozmoComboCheck(1,2,3,4,5,6) + and HasID(AIHand(),67237709,true)) + and CardsMatchingFilter(AIHand(),KozmoShip)>0 + and CanSpecialSummon() + and OPTCheck(c.id) + then + return true + end end +function SummonGofu(c,mode) + if mode == 1 + and (NormalSummonsAvailable()>0 + and HandCheck(2)>0 + or HasIDNotNegated(AICards(),67723438,true)) -- Etele + and HasID(AICards(),67237709,true) -- Kozmotown + and HasIDNotNegated(AIExtra(),25862681,true) -- AFD + and CardsMatchingFilter(AIDeck(),FilterType,TYPE_FIELD)>0 + and CardsMatchingFilter(AIHand(),KozmoShip)==0 + and CanSpecialSummon() + then + return true + end + if mode == 2 + and (NormalSummonsAvailable()>0 + and HandCheck(2)>0 + or HasIDNotNegated(AICards(),67723438,true)) -- Etele + and HasIDNotNegated(AIExtra(),73580471,true,UseFieldNuke,-3) -- Black Rose + and CanSpecialSummon() + then + return true + end + if mode == 3 + and (NormalSummonsAvailable()>0 + and HandCheck(3)>0 + or HasIDNotNegated(AICards(),67723438,true)) -- Etele + and HasIDNotNegated(AIExtra(),76774528,true,SummonScrapKozmo,0) -- Scrap Dragon + and CardsMatchingFilter(AIHand(),KozmoShip)==0 + and CanSpecialSummon() + then + GlobalGofuTokens = true + return true + end + if mode == 4 + and TurnEndCheck() + and CanSpecialSummon() + then + GlobalGofuTokens = true + return true + end +end +function SummonAFD(c,mode) + if mode == 1 + and HasID(AICards(),67237709,true) -- Kozmotown + and CanSpecialSummon() + then + return true + end +end +function UseAFD(c,mode) + if mode == 1 + and c.description==c.id*16 + and HasID(AIST(),67237709,true) -- Kozmotown + then + return true + end + if mode == 2 + and c.description==c.id*16+1 + and CanSpecialSummon() + and not BattlePhaseCheck() + then + return true + end +end +function UseAllureKozmo(c,mode) + if mode == 1 + and (HasIDNotNegated(AIST(),67237709,true,OPTCheck) -- Kozmotown + or HasIDNotNegated(AIMon(),56907986,true)) -- Strawman + and UseAllure(c) + and not KozmoComboCheck(1,2,3,4,5,6) + then + return true + end + if mode == 2 + and UseAllure(c) + then + return true + end +end +function UseDeltaShuttle(c,mode) + if mode == 1 + and KozmoComboCheck(1,2,3,4,6) + then + return true + end + if mode == 2 + and HasIDNotNegated(AIMon(),01274455,true) -- Soartrooper + then + return true + end +end +function SummonGarunix(c,mode) + if mode == 1 + and FieldCheck(3)==1 + and CanXYZSummon(3) + then + return true + end + if mode == 2 + and KozmoComboCheck(1,3,4,5) + then + return true + end + if mode == 3 + and HasID(AIMon(),09929398,true) + and HasIDNotNegated(AIExtra(),SummonScrapKozmo(0),true) + then + return true + end +end +function SummonLeviairKozmo(c,mode) + if mode == 1 + then + if KozmoComboCheck(1,2,5) + then + return true + end + if KozmoComboCheck(4) + and HasID(AIBanish(),56907986,true) -- Strawman + then + return true + end + if KozmoComboCheck(6) + and HasID(AIMon(),12408276,true) -- Dark Lady + then + return true + end + end + if mode == 2 + and HasIDNotNegated(AIBanish(),56907986,true) -- Strawman + and CardsMatchingFilter(AIBanish(),KozmoShip)>0 + then + return true + end +end +function UseLeviairKozmo(c,mode) + if mode == 1 + and KozmoComboCheck(1,2,4,5,6) + then + return true + end + if mode == 2 + then + return true + end +end +function SummonPureHeraldKozmo(c,mode) + if mode == 1 + and KozmoComboCheck(2) + then + return true + end +end +function UsePureHeraldKozmo(c,mode) + if mode == 1 + and KozmoComboCheck(2) + then + return true + end +end + +function SummonBreakSwordKozmo(c,mode) + local targets = CardsMatchingFilter(OppField(),PKBreakSwordFilter) + local prio = CardsMatchingFilter(OppField(),PKBreakSwordFilter,true) + local fodder = CardsMatchingFilter(AIField(),KozmoDestroyFilter) + if mode == 1 + and targets>0 + then + if KozmoComboCheck(3) + then + return true + end + if KozmoComboCheck(4) + and HasID(AIMon(),56907986,true) -- Strawman + then + return true + end + end + if mode == 2 + and prio>0 + and OppHasStrongestMonster() + then + return true + end + if mode == 3 + and targets>0 + and fodder>0 + then + return true + end +end +function UseBreakSwordKozmo(c,mode) + local targets = CardsMatchingFilter(OppField(),PKBreakSwordFilter) + local prio = CardsMatchingFilter(OppField(),PKBreakSwordFilter,true) + local fodder = CardsMatchingFilter(AIField(),KozmoDestroyFilter) + if mode == 1 + and targets>0 + and KozmoComboCheck(3,4) + and HasID(AIST(),67237709,true) -- Kozmotown + then + return true + end + if mode == 2 + and prio>0 + and OppHasStrongestMonster() + then + return true + end + if mode == 3 + and targets>0 + and fodder>0 + then + return MP2Check(c) + or CardsMatchingFilter(OppST(),FilterBackrow)==0 + end +end +function SummonGranpulseKozmo(c,mode) + if mode == 1 + then + if KozmoComboCheck(3) + then + return true + end + if KozmoComboCheck(4) + and HasID(AIMon(),56907986,true) -- Strawman + then + return true + end + end + if mode == 2 + and CardsMatchingFilter(OppST(),GranpulseFilter)>0 + and MP2Check(c) + then + return true + end +end + +function UseGranpulseKozmo(c,mode) + if mode == 1 + and KozmoComboCheck(3,4) + and HasID(AIST(),67237709,true) -- Kozmotown + then + return true + end + if mode == 2 + and CardsMatchingFilter(OppST(),GranpulseFilter)>0 + then + return true + end +end +function SummonNovaKozmo(c,mode) + if mode == 1 + and KozmoComboCheck(1,2,3,4,5,6) + then + return true + end +end +function UseGoldSarcKozmo(c,mode) + if mode == 1 + and not KozmoComboCheck(1,2,3,4,5,6) + then + return true + end + if mode == 2 + then + return true + end +end +function NormalSummonKozmo(c,mode) + if mode == 1 + and OppHasStrongestMonster() + and c.attack>=OppGetStrongestAttDef() + and BattlePhaseCheck() + then + return true + end + if mode == 2 + and HasID(AIMon(),09929398,true)-- Gofu + and c.level>4 + and CardsMatchingFilter(AIMon(),KozmoMonsterFilter)==0 + then + return true + end + if mode == 3 + and c.level == 3 + and HasID(AIMon(),09929398,true) -- Gofu + and HasIDNotNegated(AIExtra(),SummonScrapKozmo(0),true) + then + return true + end + if mode == 4 + and c.level == 2 + and HasID(AIMon(),09929398,true) -- Gofu + and HasIDNotNegated(AIExtra(),73580471,true,UseFieldNuke,-2) -- Black Rose + then + return true + end +end +function SummonYaksha(c,mode) + if mode == 1 + and #AIMon()==0 + and CardsMatchingFilter(AIHand(),KozmoShip)>0 + and (CanWinBattle(c,OppMon() + or CardsMatchingFilter(OppMon(),YakshaCrashCheck)>0)) + and BattlePhaseCheck() + then + return true + end + if mode == 2 -- TODO: Break Sword/Scrap Dragon fodder + then + end +end +function SetYaksha(c,mode) + if mode == 1 + and #AIMon()==0 + and TurnEndCheck() + then + return true + end +end +function UseScrapKozmo(c,mode) + local targets = CardsMatchingFilter(OppField(),PKBreakSwordFilter) + local prio = CardsMatchingFilter(OppField(),PKBreakSwordFilter,true) + local fodder = CardsMatchingFilter(AIField(),KozmoDestroyFilter) + if mode == 1 + and prio>0 + and OppHasStrongestMonster() + then + return true + end + if mode == 2 + and targets>0 + and fodder>0 + then + return MP2Check(c) + or CardsMatchingFilter(OppST(),FilterBackrow)==0 + end +end +function SummonScrapKozmo(c,mode) + local targets = CardsMatchingFilter(OppField(),PKBreakSwordFilter) + local prio = CardsMatchingFilter(OppField(),PKBreakSwordFilter,true) + local fodder = CardsMatchingFilter(AIField(),KozmoDestroyFilter) + if not CanSpecialSummon() then return false end + if (mode == 0 or mode == 1) + and prio>0 + and OppHasStrongestMonster() + then + return true + end + if (mode == 0 or mode == 2) + and targets>0 + --and fodder>0 + then + return true + end +end +function KozmoComboIntegrityCheck() + -- cancel a combo, if the player interrupts it + if GlobalKozmoCombo[Duel.GetTurnCount()] then + local cards = NegateCheckList(AIField(),nil,nil,function(c) return c:IsControler(1-player_ai) end) + if cards then + GlobalKozmoCombo[Duel.GetTurnCount()]=nil + end + cards = RemovalCheckList(AIField(),nil,nil,nil,nil,function(c) return c:IsControler(1-player_ai) end) + if cards then + GlobalKozmoCombo[Duel.GetTurnCount()]=nil + end + end +end +GlobalKozmoCombo={} +function KozmoComboCheck(...) + local args={select("1", ...)} + if not CanSpecialSummon() + or not MacroCheck() + then + GlobalKozmoCombo={} + return false + end + for i,combo in pairs(args) do + if GlobalKozmoCombo[Duel.GetTurnCount()] + and combo == GlobalKozmoCombo[Duel.GetTurnCount()] + then + return true + end + end + local ships = SubGroup(AIHand(),KozmoShip,64063868) -- Dark Eclipser + for i,combo in pairs(args) do + if combo == 1 -- Island + Slip + Ship + and HasIDNotNegated(ships,94454495,true) -- Sliprider + and CardsMatchingFilter(ships,FilterLevelMin,6)>0 + and FireKingIslandCheck() + and NormalSummonsAvailable()>0 + and SpaceCheck()>4 + and HasIDNotNegated(AIExtra(),95992081,true) -- Leviair + and HasIDNotNegated(AIExtra(),58069384,true) -- Nova + and HasIDNotNegated(AIExtra(),10443957,true) -- Infinity + and CardsMatchingFilter(AIDeck(),FilterID,01274455)>0 -- Soartrooper + and CardsMatchingFilter(AIDeck(),FilterID,56907986)>1 -- Strawman + and CardsMatchingFilter(AIDeck(),FilterID,37679169)>0 -- Delta Shuttle + and AI.GetPlayerLP(1)>3000 + then + print("Kozmo Combo 1 detected") + GlobalKozmoCombo[Duel.GetTurnCount()]=combo + return true + end + if combo == 2 -- Island + Slip + Delta + and HasIDNotNegated(ships,94454495,true) -- Sliprider + and HasIDNotNegated(ships,37679169,true) -- Delta Shuttle + and FireKingIslandCheck() + and NormalSummonsAvailable()>0 + and SpaceCheck()>4 + and HasIDNotNegated(AIExtra(),95992081,true) -- Leviair + and HasIDNotNegated(AIExtra(),58069384,true) -- Nova + and HasIDNotNegated(AIExtra(),10443957,true) -- Infinity + and HasIDNotNegated(AIExtra(),01249315,true) -- Pure Herald + and CardsMatchingFilter(AIDeck(),FilterID,01274455)>1 -- Soartrooper + and CardsMatchingFilter(AIDeck(),FilterID,56907986)>1 -- Strawman + and CardsMatchingFilter(AIDeck(),FilterID,12408276)>0 -- Dark Lady + and AI.GetPlayerLP(1)>3000 + then + print("Kozmo Combo 2 detected") + GlobalKozmoCombo[Duel.GetTurnCount()]=combo + return true + end + if combo == 3 -- Island + Ship + Town + and CardsMatchingFilter(ships,FilterLevelMin,6)>0 + and HasIDNotNegated(AIHand(),67237709,true) -- Kozmotown + and FireKingIslandCheck() + and NormalSummonsAvailable()>0 + and SpaceCheck()>4 + and HasIDNotNegated(AIExtra(),85252081,true) -- Granpulse + and HasIDNotNegated(AIExtra(),58069384,true) -- Nova + and HasIDNotNegated(AIExtra(),10443957,true) -- Infinity + and CardsMatchingFilter(AIDeck(),FilterID,01274455)>1 -- Soartrooper + and CardsMatchingFilter(AIDeck(),FilterID,56907986)>1 -- Strawman + and CardsMatchingFilter(AIDeck(),FilterID,12408276)>0 -- Dark Lady + and CardsMatchingFilter(AIDeck(),FilterID,37679169)>0 -- Delta Shuttle + and AI.GetPlayerLP(1)>4000 + then + print("Kozmo Combo 3 detected") + GlobalKozmoCombo[Duel.GetTurnCount()]=combo + return true + end + if combo == 4 -- Island + Delta + Town + and HasIDNotNegated(ships,37679169,true) -- Delta Shuttle + and HasIDNotNegated(AIHand(),67237709,true) -- Kozmotown + and FireKingIslandCheck() + and NormalSummonsAvailable()>0 + and SpaceCheck()>4 + and HasIDNotNegated(AIExtra(),95992081,true) -- Leviair + and HasIDNotNegated(AIExtra(),58069384,true) -- Nova + and HasIDNotNegated(AIExtra(),10443957,true) -- Infinity + and CardsMatchingFilter(AIDeck(),FilterID,01274455)>2 -- Soartrooper + and CardsMatchingFilter(AIDeck(),FilterID,56907986)>0 -- Strawman + and CardsMatchingFilter(AIDeck(),FilterID,12408276)>0 -- Dark Lady + and AI.GetPlayerLP(1)>6000 + then + print("Kozmo Combo 4 detected") + GlobalKozmoCombo[Duel.GetTurnCount()]=combo + return true + end + if combo == 5 -- Island + Slip + Town + and HasIDNotNegated(ships,94454495,true) -- Sliprider + and HasIDNotNegated(AIHand(),67237709,true) -- Kozmotown + and FireKingIslandCheck() + and NormalSummonsAvailable()>0 + and SpaceCheck()>4 + and HasIDNotNegated(AIExtra(),95992081,true) -- Leviair + and HasIDNotNegated(AIExtra(),58069384,true) -- Nova + and HasIDNotNegated(AIExtra(),10443957,true) -- Infinity + and CardsMatchingFilter(AIDeck(),FilterID,01274455)>0 -- Soartrooper + and CardsMatchingFilter(AIDeck(),FilterID,56907986)>0 -- Strawman + and CardsMatchingFilter(AIDeck(),FilterID,12408276)>0 -- Dark Lady + and CardsMatchingFilter(AIDeck(),FilterLevel,5)>0 + and AI.GetPlayerLP(1)>4000 + then + print("Kozmo Combo 5 detected") + GlobalKozmoCombo[Duel.GetTurnCount()]=combo + return true + end + if combo == 6 -- Island + DD + Town + and HasIDNotNegated(ships,55885348,true) -- Dark Destroyer + and HasIDNotNegated(AIHand(),67237709,true) -- Kozmotown + and FireKingIslandCheck() + and NormalSummonsAvailable()>0 + and SpaceCheck()>4 + and HasIDNotNegated(AIExtra(),95992081,true) -- Leviair + and HasIDNotNegated(AIExtra(),58069384,true) -- Nova + and HasIDNotNegated(AIExtra(),10443957,true) -- Infinity + and CardsMatchingFilter(AIDeck(),FilterID,01274455)>1 -- Soartrooper + and CardsMatchingFilter(AIDeck(),FilterID,56907986)>0 -- Strawman + and CardsMatchingFilter(AIDeck(),FilterID,12408276)>0 -- Dark Lady + and CardsMatchingFilter(AIDeck(),FilterID,67237709)>0 -- Kozmotown + and CardsMatchingFilter(AIDeck(),FilterID,90452877)>0 -- Kozmojo + and HasIDNotNegated(AIDeck(),94454495,true) -- Sliprider + and HasIDNotNegated(AIDeck(),37679169,true) -- Delta Shuttle + and AI.GetPlayerLP(1)>6000 + then + print("Kozmo Combo 6 detected") + GlobalKozmoCombo[Duel.GetTurnCount()]=combo + return true + end + end +end +--[[function UseFieldNuke(source,exclude) + local targets = SubGroup(OppField(),FieldNukeFilter,source) + return DestroyCheck(targets,true)-DestroyCheck(AIField(),true)>0 +end]] function KozmoInit(cards) local Act = cards.activatable_cards local Sum = cards.summonable_cards @@ -573,13 +1549,64 @@ function KozmoInit(cards) local Rep = cards.repositionable_cards local SetMon = cards.monster_setable_cards local SetST = cards.st_setable_cards + if not GlobalKozmoCombo[Duel.GetTurnCount()] then + KozmoComboCheck(6,1,2,3,4,5) + end + if HasIDNotNegated(Act,62709239,UseBreakSwordKozmo,1) then + return Activate() + end + if HasIDNotNegated(Act,76774528,UseScrapKozmo,1) then + return Activate() + end + if HasIDNotNegated(Act,76774528,UseScrapKozmo,2) then + return Activate() + end + if HasIDNotNegated(Act,62709239,UseBreakSwordKozmo,2) then + return Activate() + end + if HasIDNotNegated(Act,62709239,UseBreakSwordKozmo,3) then + return Activate() + end + if HasIDNotNegated(Act,85252081,UseGranpulseKozmo,1) then + return Activate() + end + if HasIDNotNegated(Act,85252081,UseGranpulseKozmo,2) then + return Activate() + end + if HasIDNotNegated(Act,56907986,UseStrawman,4) then + return Activate() + end + if HasID(SpSum,73580471,UseFieldNuke,-1) then -- Black Rose + return SynchroSummon() + end + if HasID(SpSum,10443957,SummonInfinity,1) then + return XYZSummon() + end + if HasID(SpSum,58069384,SummonNovaKozmo,1) then + return XYZSummon() + end if HasID(Act,73628505) then -- Terraforming return Activate() end - if HasIDNotNegated(Act,67237709,false,nil,LOCATION_SZONE,POS_FACEDOWN,ActivateKozmotown) then + if HasID(Act,75500286,UseGoldSarcKozmo,1) then + return Activate() + end + if HasID(Act,01475311,UseAllureKozmo,1) then -- Allure + return Activate() + end + if HasIDNotNegated(Act,57554544,UseFireKingIsland,1) then + return Activate() + end + if HasIDNotNegated(Act,57554544,UseFireKingIsland,2) then + return Activate() + end + if HasID(Act,37679169,UseDeltaShuttle,1) then + return Activate() + end + if HasIDNotNegated(Act,67237709,ActivateKozmotown,3) then return Activate() end - if HasIDNotNegated(Act,67237709,false,nil,LOCATION_HAND,ActivateKozmotown) then + if HasIDNotNegated(Act,67237709,UseKozmotown,3) then return Activate() end if HasIDNotNegated(Act,67237709,false,67237709*16,LOCATION_SZONE,UseKozmotown,1) then @@ -591,13 +1618,76 @@ function KozmoInit(cards) if HasIDNotNegated(Act,67723438,UseEtele,1) then return Activate() end - if HasID(Sum,31061682,SummonFarmgirl,1) then + if HasIDNotNegated(Act,56907986,UseStrawman,1) then + return Activate() + end + if HasIDNotNegated(Act,56907986,UseStrawman,3) then + return Activate() + end + if HasIDNotNegated(Act,01274455,UseSoartrooper,3) then + return Activate() + end + if HasIDNotNegated(Act,95992081,UseLeviairKozmo,1) then + return Activate() + end + if HasIDNotNegated(SpSum,95992081,SummonLeviairKozmo,1) then + return XYZSummon() + end + if HasIDNotNegated(Act,01249315,UsePureHeraldKozmo,1) then + return Activate() + end + if HasIDNotNegated(SpSum,01249315,SummonPureHeraldKozmo,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,62709239,SummonBreakSwordKozmo,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,85252081,SummonGranpulseKozmo,1) then + return XYZSummon() + end + if HasID(Sum,54149433,SummonGarunix,2) then return Summon() end - if HasID(Sum,56907986,SummonStrawman,1) then + if HasIDNotNegated(Act,67237709,ActivateKozmotown,1) then + return Activate() + end + if HasIDNotNegated(Act,67237709,ActivateKozmotown,2) then + return Activate() + end + if HasID(Act,37679169,UseDeltaShuttle,2) then + return Activate() + end + if HasID(SpSum,09929398,SummonGofu,1) then + return SpSummon() + end + if HasID(Sum,56907986,SummonStrawman,3) then return Summon() end - if HasID(Sum,64280356,SummonTincan,1) then + if HasIDNotNegated(Act,25862681,UseAFD,1) then + return Activate() + end + if HasIDNotNegated(SpSum,25862681,SummonAFD,1) then + return SynchroSummon() + end + if HasIDNotNegated(Act,95992081,UseLeviairKozmo,2) then + return Activate() + end + if HasIDNotNegated(SpSum,95992081,SummonLeviairKozmo,2) then + return XYZSummon() + end + if HasID(SpSum,09929398,SummonGofu,2) then + return SpSummon() + end + if HasID(SpSum,09929398,SummonGofu,3) then + return SpSummon() + end + if HasID(Act,01475311,UseAllureKozmo,2) then -- Allure + return Activate() + end + if HasID(Sum,31061682,SummonFarmgirl,1) then + return Summon() + end + if HasID(Sum,56907986,SummonStrawman,1) then return Summon() end if HasID(Sum,67050396,SummonGoodWitch,1) then @@ -618,14 +1708,30 @@ function KozmoInit(cards) if HasID(Sum,56907986,SummonStrawman,2) then return Summon() end + if HasID(Sum,64280356,SummonTincan,1) then + return Summon() + end if HasID(Sum,64280356,SummonTincan,2) then return Summon() end - if HasIDNotNegated(Act,56907986,false,56907986*16+1,UseStrawman,1) then + + if HasIDNotNegated(Act,01274455,UseSoartrooper,1) then return Activate() end - if HasIDNotNegated(Act,01274455,false,93302695*16,UseSoartrooper,1) then - return Activate() + if HasIDNotNegated(SpSum,76774528,SummonScrapKozmo,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,62709239,SummonBreakSwordKozmo,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,85252081,SummonGranpulseKozmo,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,76774528,SummonScrapKozmo,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,62709239,SummonBreakSwordKozmo,3) then + return XYZSummon() end if HasIDNotNegated(Act,67050396,false,67050396*16+1,UseGoodwitch,1) then return Activate() @@ -633,7 +1739,7 @@ function KozmoInit(cards) if HasIDNotNegated(Act,93302695,false,93302695*16+1,UseWickedwitch,1) then return Activate() end - if HasID(Act,56907986,false,56907986*16,UseStrawman,2) then + if HasIDNotNegated(Act,56907986,UseStrawman,2) then OPTSet(56907986) return Activate() end @@ -645,29 +1751,75 @@ function KozmoInit(cards) OPTSet(93302695) return Activate() end - if HasIDNotNegated(Act,01274455,false,93302695*16+1,UseSoartrooper,2) then + if HasIDNotNegated(Act,01274455,UseSoartrooper,2) then OPTSet(01274455) return Activate() end - if HasID(Act,01475311,UseAllure) then -- Allure + if HasID(Act,31061682,false,UseFarmgirl,1) then return Activate() end - if HasID(Act,31061682,false,UseFarmgirl,1) then + if HasIDNotNegated(Act,67723438,UseEtele,3) then return Activate() end if HasIDNotNegated(Act,67723438,UseEtele,2) then return Activate() end + if HasID(Act,75500286,UseGoldSarcKozmo,2) then + return Activate() + end if HasIDNotNegated(Act,67237709,false,67237709*16+1,LOCATION_SZONE,UseKozmotown,2) then return Activate() end + if HasID(Sum,54149433,SummonGarunix,1) then + return Summon() + end + if HasID(Sum,66413481,SummonYaksha,1) then + return Summon() + end + for mode=1,2 do + for i,c in pairs(Sum) do + if NormalSummonKozmo(c,mode) + then + return Summon(i) + end + end + end + if HasID(SpSum,09929398,SummonGofu,4) then + return SpSummon() + end + if HasID(SetMon,66413481,SetYaksha,1) then + return Set() + end return nil end - -function DestroyerTarget(cards) +function DestroyerTarget(cards,c) if LocCheck(cards,LOCATION_DECK) then + if KozmoComboCheck(3) + and not HasID(AIST(),57554544,true) -- Fire King Island + then + return Add(cards,PRIO_TOFIELD,1,FilterID,94454495) -- Sliprider + end + if KozmoComboCheck(5) + and not HasID(AIST(),57554544,true) -- Fire King Island + then + return Add(cards,PRIO_TOFIELD,1,FilterID,37679169) -- Delta Shuttle + end + if KozmoComboCheck(6) then + if HasID(AIST(),57554544,true) -- Fire King Island + then + return Add(cards,PRIO_TOFIELD,1,FilterID,37679169) -- Delta Shuttle + end + if HasID(AIMon(),12408276,true) -- Dark Lady + then + return Add(cards,PRIO_TOFIELD,1,FilterID,94454495) -- Sliprider + end + return Add(cards,PRIO_TOFIELD,1,FilterID,01274455) -- Soartrooper + end return Add(cards,PRIO_TOFIELD) end + if KozmoComboCheck(3,6) then + return BestTargets(cards,1,TARGET_PROTECT,FilterID,c.id) + end if #OppMon()==0 then return BestTargets(cards,1,TARGET_PROTECT,DestroyerFilter) end @@ -687,8 +1839,20 @@ function DogFighterTarget(cards) end function SlipriderTarget(cards) if LocCheck(cards,LOCATION_DECK) then + if KozmoComboCheck(5) then + if HasID(AIST(),57554544,true) then -- Fire King Island + return Add(cards,PRIO_TOFIELD,1,FilterID,56907986) -- Strawman + end + return Add(cards,PRIO_TOFIELD,1,FilterID,01274455) -- Soartrooper + end return Add(cards,PRIO_TOFIELD) end + if KozmoComboCheck(1) then + return BestTargets(cards,1,TARGET_DESTROY,FilterID,57554544) -- Fire King Island + end + if KozmoComboCheck(5,6) then + return BestTargets(cards,1,TARGET_DESTROY,FilterID,67237709) -- Kozmotown + end return BestTargets(cards) end function WickedwitchTarget(cards) @@ -711,11 +1875,33 @@ function FarmgirlTarget(cards) end function StrawmanTarget(cards) if LocCheck(cards,LOCATION_HAND) then + if KozmoComboCheck(1,2) + then + return Add(cards,PRIO_TOFIELD,1,FilterID,94454495) -- Sliprider + end + if KozmoComboCheck(3,4,6) + then + return Add(cards,PRIO_TOFIELD,1,FilterID,55885348) -- Dark Destroyer + end return Add(cards,PRIO_TOFIELD) end + if KozmoComboCheck(5) + and HasID(AIST(),57554544,true) -- Fire King Island + then + return Add(cards,PRIO_TOFIELD,1,FilterID,94454495) -- Sliprider + end + if KozmoComboCheck(4) then + return Add(cards,PRIO_TOFIELD,1,FilterID,01274455) -- Soartrooper + end + if KozmoComboCheck(2) then + if FieldCheck(5)==0 then + return Add(cards,PRIO_TOFIELD,1,FilterID,37679169) -- Delta Shuttle + end + return Add(cards,PRIO_TOFIELD,1,FilterID,94454495) -- Sliprider + end return Add(cards,PRIO_TOFIELD,1,KozmoShip) end -function KozmotownTarget(cards,min,max) +function KozmotownTarget(cards,c,min,max) if LocCheck(cards,LOCATION_HAND) then if CardsMatchingFilter(AIMon(),KozmoRider)>0 and CardsMatchingFilter(AIHand(),KozmoShip)>0 @@ -728,28 +1914,82 @@ function KozmotownTarget(cards,min,max) end return Add(cards,PRIO_TODECK,max) elseif LocCheck(cards,LOCATION_DECK) then + if KozmoComboCheck(3,4,5) then + return Add(cards,PRIO_TOHAND,1,FilterID,55885348) -- Dark Destroyer + end + if KozmoComboCheck(6) + then + if HasID(AIHand(),55885348,true) then + return Add(cards,PRIO_TOHAND,1,FilterID,90452877) -- Kozmojo + end + return Add(cards,PRIO_TOHAND,1,FilterID,c.id) + end return Add(cards) end + if KozmoComboCheck(3,4) then + return Add(cards,PRIO_TOHAND,1,FilterID,37679169) -- Delta Shuttle + end + if KozmoComboCheck(5) then + return Add(cards,PRIO_TOHAND,1,FilterID,94454495) -- SlipRider + end + if KozmoComboCheck(6) then + return Add(cards,PRIO_TOHAND,1,FilterID,55885348) -- Dark Destroyer + end return Add(cards) end GlobalEteleSummons={} function Eteletarget(cards) local result = Add(cards,PRIO_TOFIELD) + if GlobalEteleLevel then + result = Add(cards,PRIO_TOFIELD,1,FilterLevel,GlobalEteleLevel) + GlobalEteleLevel = nil + end local c = cards[1] cards[1].summonturn=Duel.GetTurnCount() GlobalEteleSummons[#GlobalEteleSummons+1]=c return result end +function TincanFilter(c) + return KozmoShip(c) + or FilterID(c,12408276) -- Dark Lady +end function TincanTarget(cards) if LocCheck(cards,LOCATION_DECK) then - return Add(cards,nil,nil,KozmoShip) + return Add(cards,nil,nil,TincanFilter) end if LocCheck(cards,LOCATION_HAND) then return Add(cards,PRIO_TOFIELD) end end -function SoartrooperTarget(cards) +function SoartrooperTarget(cards,c) if LocCheck(cards,LOCATION_GRAVE) then + if KozmoComboCheck(1,2,6) + and SpaceCheck()>1 + then + return Add(cards,PRIO_TOFIELD,1,FilterID,56907986) --Strawman + end + if KozmoComboCheck(3) + then + if HasID(AIMon(),37679169,true) then -- Delta Shuttle + return Add(cards,PRIO_TOFIELD,1,FilterID,56907986) -- Strawman + else + return Add(cards,PRIO_TOFIELD,1,FilterID,c.id) -- Soartrooper + end + end + if KozmoComboCheck(4) + then + if CardsMatchingFilter(AIMon(),FilterID,c.id)<2 then + return Add(cards,PRIO_TOFIELD,1,FilterID,c.id) -- Soartrooper + end + return Add(cards,PRIO_TOFIELD,1,FilterID,56907986) -- Strawman + end + --[[if SpaceCheck()>1 + and CardsMatchingFilter(AIGrave(),KozmoRider,c.id)>0 + and HasID(cards,c.id,true) + and AI.GetPlayerLP(1)>3000 + then + return Add(cards,PRIO_TOFIELD,1,FilterID,c.id) + end]] return Add(cards,PRIO_TOFIELD) end if LocCheck(cards,LOCATION_HAND) then @@ -757,7 +1997,10 @@ function SoartrooperTarget(cards) end end function DarkEclipserTarget(cards) - return Add(cards,PRIO_BANISH) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_BANISH) + end + return Add(cards) end function KozmojoTarget(cards) if CurrentOwner(cards[1])==1 then @@ -769,48 +2012,249 @@ function KozmojoTarget(cards) end return BestTargets(cards,1,TARGET_BANISH) end +function FireKingIslandTarget(cards) + if LocCheck(cards,LOCATION_DECK) then + if KozmoComboCheck(1,2,3,4,5,6) + then + return Add(cards,nil,nil,FilterLevel,3) + end + return Add(cards) + end + if KozmoComboCheck(1,3) then + return Add(cards,PRIO_BANISH,1,function(c) + return ExcludeID(c,94454495) -- Sliprider + and FilterLocation(c,LOCATION_HAND) + and FilterLevelMin(c,6) + and KozmoShip(c,64063868) -- Eclipser + end) + end + if KozmoComboCheck(2,4) then + return Add(cards,PRIO_BANISH,1,FilterID,37679169) -- Delta Shuttle + end + if KozmoComboCheck(5) then + return Add(cards,PRIO_BANISH,1,FilterID,94454495) -- Sliprider + end + if KozmoComboCheck(6) then + return Add(cards,PRIO_BANISH,1,FilterID,55885348) -- Dark Destroyer + end + if CardsMatchingFilter(AIHand(),KozmoShip)>0 then + return Add(cards,PRIO_BANISH,1,function(c) + return FilterLocation(c,LOCATION_HAND) + and KozmoShip(c) + end) + end + return Add(cards,PRIO_BANISH) +end +function AFDTarget(cards) + if LocCheck(cards,LOCATION_DECK) then + return Add(cards) + end + return Add(cards,PRIO_TOFIELD) +end +function GoldSarcTarget(cards) + local access = Merge(AICards(),AIBanish()) + if HasIDNotNegated(AICards(),67237709,true) -- Kozmotown + and HasIDNotNegated(AICards(),01475311,true) -- Allure + and CardsMatchingFilter(AIHand(),FilterAttribute,ATTRIBUTE_DARK)==0 + then + return Add(cards,PRIO_TOHAND,1,FilterAttribute,ATTRIBUTE_DARK) + end + if HasIDNotNegated(AICards(),67237709,true) -- Kozmotown + then + if CardsMatchingFilter(access,KozmoShip)==0 then + return Add(cards,PRIO_TOHAND,1,KozmoShip) + end + if CardsMatchingFilter(access,KozmoRider)==0 then + return Add(cards,PRIO_TOHAND,1,KozmoRider,12408276) -- Dark Lady + end + return Add(cards,PRIO_TOHAND,1,KozmoMonsterFilter) + end + if CardsMatchingFilter(access,KozmoShip)==0 then + return Add(cards,PRIO_BANISH,1,KozmoShip) + end + if CardsMatchingFilter(access,KozmoRider)==0 then + return Add(cards,PRIO_BANISH,1,KozmoRider,12408276) -- Dark Lady + end + return Add(cards,PRIO_BANISH) +end +function AllureTarget(cards) + if FireKingIslandCheck() + and CardsMatchingFilter(AIHand(),KozmoShip)<2 + then + return Add(cards,PRIO_BANISH,1,FilterInvert,KozmoMonsterFilter) + end + return Add(cards,PRIO_BANISH) +end +function DeltaShuttleTarget(cards,c) + if LocCheck(cards,LOCATION_DECK) then + if FilterLocation(c,LOCATION_MZONE) + then + if KozmoComboCheck(1) then + return Add(cards,PRIO_TOGRAVE,1,FilterID,56907986) -- Strawman + end + if KozmoComboCheck(2) then + if CardsMatchingFilter(AIMon(),FilterID,01274455)>1 -- Soartrooper + then + return Add(cards,PRIO_TOGRAVE,1,FilterID,12408276) -- Dark Lady + end + return Add(cards,PRIO_TOGRAVE,1,FilterID,56907986) -- Strawman + end + if KozmoComboCheck(3) then + if HasID(AIST(),57554544,true) then -- Fire King Island + return Add(cards,PRIO_TOGRAVE,1,FilterID,01274455) -- Soartrooper + end + return Add(cards,PRIO_TOGRAVE,1,FilterID,56907986) -- Strawman + end + if KozmoComboCheck(4) then + return Add(cards,PRIO_TOGRAVE,1,FilterID,01274455) -- Soartrooper + end + if KozmoComboCheck(6) then + if HasID(AIST(),57554544,true) then -- Fire King Island + return Add(cards,PRIO_TOGRAVE,1,FilterID,56907986) -- Strawman + end + return Add(cards,PRIO_TOGRAVE,1,FilterID,12408276) -- Dark Lady + end + return Add(cards,PRIO_TOGRAVE) + else + if KozmoComboCheck(3,6) then + return Add(cards,PRIO_TOGRAVE,1,FilterID,01274455) -- Soartrooper + end + if KozmoComboCheck(4) then + if HasID(AIST(),57554544,true) then -- Fire King Island + return Add(cards,PRIO_TOGRAVE,1,FilterID,56907986) -- Strawman + end + return Add(cards,PRIO_TOGRAVE,1,FilterID,01274455) -- Soartrooper + end + return Add(cards,PRIO_TOFIELD) + end + end + return BestTargets(cards,1,TARGET_OTHER) +end +function LeviairTargetKozmo(cards) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + if KozmoComboCheck(1,4,5,6) then + return Add(cards,PRIO_TOFIELD,1,FilterID,56907986) -- Strawman + end + return Add(cards,PRIO_TOFIELD) +end +function LandwalkerTarget(cards) + if LocCheck(cards,LOCATION_DECK) then + return Add(cards,PRIO_TOFIELD) + end + return BestTargets(cards,1,TARGET_DESTROY) +end +function PureHeraldTarget(cards) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + if LocCheck(cards,LOCATION_GRAVE) then + if KozmoComboCheck(2) then + return Add(cards,PRIO_TOHAND,1,FilterID,01274455) -- Soartrooper + end + return Add(cards) + end + if LocCheck(cards,LOCATION_HAND) then + if KozmoComboCheck(2) then + return Add(cards,PRIO_TOHAND,1,FilterID,54149433) -- Garunix + end + return Add(cards,PRIO_TODECK) + end +end +function GranpulseTargetKozmo(cards) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + if KozmoComboCheck(3) then + return BestTargets(cards,1,TARGET_DESTROY,function(c) + return FilterID(c,67237709) -- Kozmotown + and FilterController(c,1) + end) + end + return BestTargets(cards,1,TARGET_DESTROY) +end +function KozmoDestroyFilter(c) -- cards to prefer destroying on your side of the field + return (KozmoShip(c) + or FilterID(c,67237709)) -- Kozmotown + and MacroCheck() + or FilterType(c,TYPE_TOKEN) +end +function BreakSwordTargetKozmo(cards) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE) + end + if FilterController(cards[1],1) + then + if KozmoComboCheck(3) then + return BestTargets(cards,1,TARGET_DESTROY,FilterID,67237709) -- Kozmotown + end + if CardsMatchingFilter(cards,FilterType,TYPE_TOKEN)>0 then + return BestTargets(cards,1,TARGET_PROTECT,FilterType,TYPE_TOKEN) + end + return BestTargets(cards,1,TARGET_PROTECT,KozmoDestroyFilter) + end + if OppHasStrongestMonster() then + return BestTargets(cards,1,TARGET_DESTROY,PKBreakSwordFilter) + end + return BestTargets(cards,1,TARGET_DESTROY,FilterBackrow) +end +function ScrapTargetKozmo(cards) + if FilterController(cards[1],1) + then + if CardsMatchingFilter(cards,FilterType,TYPE_TOKEN)>0 then + return BestTargets(cards,1,TARGET_PROTECT,FilterType,TYPE_TOKEN) + end + return BestTargets(cards,1,TARGET_PROTECT,KozmoDestroyFilter) + end + if OppHasStrongestMonster() then + return BestTargets(cards,1,TARGET_DESTROY,PKBreakSwordFilter) + end + return BestTargets(cards,1,TARGET_DESTROY,FilterBackrow) +end +function TerraformingTarget(cards) + return Add(cards) +end +function YakshaTarget(cards) + return Add(cards,PRIO_BANISH,1,function(c) + return FilterLocation(c,LOCATION_HAND) + and KozmoShip(c) + end) +end +KozmoTargetFunctions={ +[64280356] = TincanTarget, +[01274455] = SoartrooperTarget, +[64063868] = DarkEclipserTarget, +[67723438] = Eteletarget, +[55885348] = DestroyerTarget, +[20849090] = ForerunnerTarget, +[29491334] = DogFighterTarget, +[94454495] = SlipriderTarget, +[93302695] = WickedwitchTarget, +[67050396] = GoodwitchTarget, +[31061682] = FarmgirlTarget, +[56907986] = StrawmanTarget, +[67237709] = KozmotownTarget, +[90452877] = KozmojoTarget, +[57554544] = FireKingIslandTarget, +[25862681] = AFDTarget, +[75500286] = GoldSarcTarget, +[01475311] = AllureTarget, +[37679169] = DeltaShuttleTarget, +[95992081] = LeviairTargetKozmo, +[59496924] = LandwalkerTarget, +[01249315] = PureHeraldTarget, +[85252081] = GranpulseTargetKozmo, +[73628505] = TerraformingTarget, +[62709239] = BreakSwordTargetKozmo, +[76774528] = ScrapTargetKozmo, +[66413481] = YakshaTarget, +} function KozmoCard(cards,min,max,id,c) - if id == 64280356 then - return TincanTarget(cards) - end - if id == 01274455 then - return SoartrooperTarget(cards) - end - if id == 54063868 then - return DarkEclipserTarget(cards) - end - if id == 67723438 then - return Eteletarget(cards) - end - if id == 55885348 then - return DestroyerTarget(cards) - end - if id == 20849090 then - return ForerunnerTarget(cards) - end - if id == 29491334 then - return DogFighterTarget(cards) - end - if id == 94454495 then - return SlipriderTarget(cards) - end - if id == 93302695 then - return WickedwitchTarget(cards) - end - if id == 67050396 then - return GoodwitchTarget(cards) - end - if id == 31061682 then - return FarmgirlTarget(cards) - end - if id == 56907986 then - return StrawmanTarget(cards) - end - if id == 67237709 then - return KozmotownTarget(cards,min,max) - end - if id == 90452877 then - return KozmojoTarget(cards) + for i,v in pairs(KozmoTargetFunctions) do + if id == i then + return v(cards,c,min,max) + end end return nil end @@ -822,6 +2266,15 @@ function DestroyerFilter(c) and AvailableAttacks(c)==0 end function ChainDestroyer(c) + if KozmoComboCheck(6) + then + return true + end + if KozmoComboCheck(3,5) + and NotNegated(c) + then + return true + end if Negated(c) then return false end @@ -837,7 +2290,7 @@ function ChainDestroyer(c) return true end if #OppMon()==0 - and HasIDNotNegated(AIDeck(),56907986,true) + and HasIDNotNegated(AIDeck(),56907986,true) -- Strawman and Duel.GetTurnPlayer()==player_ai and Duel.GetCurrentPhase()~=PHASE_END and not IsBattlePhase() @@ -864,6 +2317,15 @@ function ChainSliprider(c) if Negated(c) then return false end + if KozmoComboCheck(1,2) + then + return true + end + if KozmoComboCheck(5,6) + and HasID(AIST(),67237709,true) -- Kozmotown + then + return true + end return DestroyCheck(OppST(),false,true)>0 end function ChainRiderSummon(c) @@ -878,6 +2340,18 @@ function ChainRiderSummon(c) then return false end + if not RemovalCheckCard(c,CATEGORY_DESTROY,nil,true) + and CardsMatchingFilter(AIHand(),KozmoShip)==0 + then + return false + end + if RemovalCheckCard(c,nil,nil,nil,nil,FilterID,function(c) + return FilterID(c,57554544) -- Fire King Island + or FilterID(c,90452877) -- Kozmojo + end) + then + return false + end OPTSet(c.id) return true end @@ -887,7 +2361,7 @@ function ChainRiderSummon(c) if WinsBattle(oppmon,aimon) and CardsEqual(c,aimon) and (CardsMatchingFilter(AIHand(),FilterAttackMin,oppmon:GetAttack())>0 - or HasIDNotNegated(AIHand(),55885348,true)) + or HasIDNotNegated(AIHand(),55885348,true)) -- Dark Destroyer and Duel.GetTurnPlayer()==1-player_ai then OPTSet(c.id) @@ -895,7 +2369,7 @@ function ChainRiderSummon(c) end if Duel.GetTurnPlayer()==player_ai and GlobalBPEnd and not aimon - and (AvailableAttacks(c)==0 or not CanWinBattle(c,OppMon())) + and (AvailableAttacks(c)==0 or #OppMon()>0 and not CanWinBattle(c,OppMon())) and(CardsMatchingFilter(AIHand(),CanWinBattle,OppMon())>0 or #OppMon()==0) then @@ -903,7 +2377,7 @@ function ChainRiderSummon(c) return true end end - if HasIDNotNegated(AIHand(),55885348,true) + if HasIDNotNegated(AIHand(),55885348,true) -- Dark Destroyer and HasPriorityTarget(OppMon(),true) and Duel.GetCurrentChain()<1 and (Duel.GetTurnPlayer()~=player_ai @@ -930,7 +2404,7 @@ function ChainWickedwitch(c,mode) end if not UnchainableCheck(c.id) then return false end local aimon,oppmon = GetBattlingMons() - if Duel.GetCurrentPhase()==PHASE_BATTLE + if IsBattlePhase() and WinsBattle(oppmon,aimon) and CardsEqual(c,aimon) then @@ -975,7 +2449,7 @@ function ChainEtele(c) return true end local aimon,oppmon=GetBattlingMons() - if Duel.GetCurrentPhase()==PHASE_BATTLE + if IsBattlePhase() and Duel.GetTurnPlayer()==player_ai and HasID(AIDeck(),31061682,true) and CanDealBattleDamage(FindID(31061682,AIDeck()),OppMon()) @@ -1080,7 +2554,7 @@ function ChainCotHKozmo(c) end end local aimon,oppmon=GetBattlingMons() - if Duel.GetCurrentPhase()==PHASE_BATTLE + if IsBattlePhase() and Duel.GetTurnPlayer()==player_ai and HasID(AIGrave(),31061682,true) and CanDealBattleDamage(FindID(31061682,AIGrave()),OppMon()) @@ -1094,8 +2568,50 @@ function ChainCotHKozmo(c) return true end end +function ChainLandwalker(c) + return true +end +function ChainDeltaShuttle(c) + return true +end +function ChainDarkLady(source) + local e,c,id = EffectCheck(player_ai,Duel.GetCurrentChain()) + if KozmoComboCheck(6) + and source.description==source.id*16+1 + and id == 55885348 -- Dark Destroyer + and c:IsLocation(LOCATION_MZONE) + then + return true + end +end +function ChainInfinityKozmo(source) + local e,c,id = EffectCheck(player_ai,Duel.GetCurrentChain()) + if KozmoComboCheck(6) + and id == 67237709 -- Kozmotown + and e:IsHasCategory(CATEGORY_DRAW) + then + return true + end +end +function ChainDarkEclipser(c) + if FilterLocation(c,LOCATION_GRAVE) then + return true + end +end +function ChainGofu(c) + if GlobalGofuTokens then + GlobalGofuTokens = nil + return true + end +end +function ChainYaksha(c) + if FilterLocation(c,LOCATION_HAND) then + return true + end + return CardsMatchingFilter(AIHand(),KozmoShip)>0 +end function KozmoChain(cards) - if HasIDNotNegated(cards,54063868,ChainNegation,2) then + if HasIDNotNegated(cards,64063868,ChainNegation,2) then return Chain() end if HasIDNotNegated(cards,67723438,ChainEtele) then @@ -1146,6 +2662,28 @@ function KozmoChain(cards) if HasID(cards,67237709,ChainKozmotown) then return Chain() end + if HasID(cards,59496924,ChainLandwalker) then + return Chain() + end + if HasID(cards,37679169,ChainDeltaShuttle) then + return Chain() + end + if HasID(cards,64063868,ChainDarkEclipser) then + return Chain() + end + if HasID(cards,12408276,ChainDarkLady) then + return Chain() + end + if HasID(cards,10443957,ChainInfinityKozmo) then + return Chain() + end + if HasID(cards,09929398,ChainGofu) then + return Chain() + end + if HasID(cards,66413481,ChainYaksha) then + return Chain() + end + KozmoComboIntegrityCheck() return nil end function KozmoEffectYesNo(id,card) @@ -1170,6 +2708,21 @@ function KozmoEffectYesNo(id,card) if id == 64280356 and ChainTincan(card,1) then return 1 end + if id == 59496924 and ChainLandwalker(card) then + return 1 + end + if id == 37679169 and ChainDeltaShuttle(card) then + return 1 + end + if id == 64063868 and ChainDarkEclipser(card) then + return 1 + end + if id == 09929398 and ChainGofu(card) then + return 1 + end + if id == 66413481 and ChainYaksha(card) then + return 1 + end return nil end function KozmoYesNo(desc) @@ -1202,22 +2755,33 @@ end function KozmoChainOrder(cards) end KozmoAtt={ -54063868, -- Dark Eclipser +64063868, -- Dark Eclipser 55885348, -- Dark Destroyer 20849090, -- Forerunner 94454495, -- Sliprider 67050396, -- Goodwitch 31061682, -- Farmgirl +59496924, -- Landwalker +12408276, -- Dark Lady +37679169, -- Delta Shuttle +66413481, -- Yaksha +44405066, -- Flare Metal } KozmoVary={ 29491334, -- Dog Fighter 29491335, -- Dog Fighter token 93302695, -- Wickedwitch 01274455, -- Soartrooper +25862681, -- AFD +85252081, -- Granpulse } KozmoDef={ 64280356, -- Tincan 56907986, -- Strawman +09929398, -- Gofu +09929399, -- Gofu token +54149433, -- Garunix +01249315, -- Herald of Pure Light } function KozmoPosition(id,available) result = nil @@ -1230,7 +2794,7 @@ function KozmoPosition(id,available) for i=1,#KozmoVary do if KozmoVary[i]==id then - if (BattlePhaseCheck() or Duel.GetCurrentPhase()==PHASE_BATTLE) + if (BattlePhaseCheck() or IsBattlePhase()) and Duel.GetTurnPlayer()==player_ai then result=POS_FACEUP_ATTACK diff --git a/ai/decks/Lightsworn.lua b/ai/decks/Lightsworn.lua index e7aebd52..a4a14e0d 100644 --- a/ai/decks/Lightsworn.lua +++ b/ai/decks/Lightsworn.lua @@ -172,7 +172,7 @@ function MinervaCond(loc,c) return HasIDNotNegated(AICards(),00691925,true,UseRecharge) end return true -end +end LightswornPriorityList={ --[12345678] = {1,1,1,1,1,1,1,1,1,1,XXXCond}, -- Format @@ -207,8 +207,8 @@ LightswornPriorityList={ [80696379] = {1,1,1,1,1,1,1,1,1,1,MeteorburstCond}, -- Meteorburst [82044279] = {1,1,1,1,1,1,1,1,1,1,ClearWingCond}, -- Clear Wing [73580471] = {1,1,1,1,1,1,1,1,1,1,BlackroseCond}, -- Black Rose -[56832966] = {1,1,1,1,1,1,1,1,1,1,UtopiaLightningCOnd}, -- Utopia Lightning -[84013237] = {1,1,1,1,1,1,1,1,1,1,UtopiaCond}, -- Utopia +[56832966] = {1,1,1,1,1,1,1,1,1,1}, -- Utopia Lightning +[84013237] = {1,1,1,1,1,1,1,1,1,1}, -- Utopia [21501505] = {1,1,1,1,1,1,1,1,1,1,CairngorgonCond}, -- Cairngorgon [82633039] = {1,1,1,1,1,1,1,1,1,1,CastelCond}, -- Castel [30100551] = {1,1,1,1,1,1,4,1,1,1}, -- Minerva @@ -765,8 +765,20 @@ end function FelisTarget(cards) return BestTargets(cards,1,TARGET_DESTROY) end +function FilterPero(card) + local result = true + for i,c in pairs(GlobalPeroTargets) do + if CardsEqual(c,card) then + result = false + end + end + return result +end +GlobalPeroTargets={} function PeroperoTarget(cards) - return BestTargets(cards,1,TARGET_DESTROY) + BestTargets(cards,1,TARGET_DESTROY,FilterPero) + table.insert(GlobalPeroTargets,1,cards[1]) + return {cards[1].index} end function MichaelTarget(cards,c) local result = {} @@ -825,13 +837,18 @@ function ChainLSJudgment(c) end return false end +GlobalPero=0 function ChainPero(c) if not UnchainableCheck(c.id) then --return false end - if DestroyCheck(OppField())>0 + if DestroyCheck(OppField())>GlobalPero then + GlobalPero=GlobalPero+1 return true + else + GlobalPero=0 + return false end end function ChainRainboh(c) @@ -884,6 +901,10 @@ function ChainOmega(c) end end function LightswornChain(cards) + if Duel.GetCurrentChain()<=GlobalChain then + GlobalPero=0 + GlobalPeroTargets={} + end if HasID(cards,69764158,ChainPero) then return Chain() end @@ -931,7 +952,9 @@ function LightswornTribute(cards,min, max) end function LightswornBattleCommand(cards,targets,act) SortByATK(cards) - if HasIDNotNegated(cards,44178886) and CardsMatchingFilter(OppMon(),EhrenFilter)>0 then + if HasIDNotNegated(cards,44178886) + and CardsMatchingFilter(OppMon(),EhrenFilter)>0 + then return Attack(CurrentIndex) end end @@ -941,12 +964,12 @@ function LightswornAttackTarget(cards,attacker) end end function JainBoost(c) - return Duel.GetTurnPlayer()==GetScriptFromCard(c):GetControler() + return FilterID(c,96235275) + and FilterController(c,1) and NotNegated(c) end function LightswornAttackBoost(cards) - for i=1,#cards do - local c = cards[i] + for i,c in pairs(cards) do if JainBoost(c) then c.attack=c.attack+300 end @@ -1002,7 +1025,7 @@ function LightswornPosition(id,available) for i=1,#LightswornVary do if LightswornVary[i]==id then - if (BattlePhaseCheck() or Duel.GetCurrentPhase()==PHASE_BATTLE) + if (BattlePhaseCheck() or IsBattlePhase()) and Duel.GetTurnPlayer()==player_ai then result=POS_FACEUP_ATTACK diff --git a/ai/decks/Majespecter.lua b/ai/decks/Majespecter.lua index 121da8cd..1ec82fe5 100644 --- a/ai/decks/Majespecter.lua +++ b/ai/decks/Majespecter.lua @@ -1,7 +1,7 @@ function SpecterStartup(deck) -- function called at the start of the duel, if the AI was detected playing your deck. --AI.Chat("Startup functions loaded.") - AI.Chat("You are now playing against AI_Majespecter version 1.4 by Xaddgx.") + AI.Chat("You are now playing against AI_Majespecter version 1.5 by Xaddgx.") AI.Chat("Good luck!") -- Your links to the important AI functions. If you don't specify a function, -- or your function returns nil, the default logic will be used as a fallback. @@ -18,23 +18,20 @@ function SpecterStartup(deck) deck.PriorityList = SpecterPriorityList deck.BattleCommand = SpecterBattleCommand deck.AttackTarget = SpecterAttackTarget + deck.YesNo = SpecterYesNo --[[ Other, more obscure functions, in case you need them. Same as before, not defining a function or returning nil causes default logic to take over - - deck.YesNo deck.Option deck.Sum deck.Tribute - deck.BattleCommand - deck.AttackTarget deck.DeclareCard deck.Number deck.Attribute deck.MonsterType ]] - local e0=Effect.GlobalEffect() +--[[ local e0=Effect.GlobalEffect() e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e0:SetCode(EVENT_CHAIN_SOLVED) e0:SetOperation(function(e,tp,eg,ep,ev,re,r,rp) @@ -44,15 +41,15 @@ function SpecterStartup(deck) Duel.RegisterEffect(e0,0) local e1=e0:Clone() e1:SetCode(EVENT_TO_HAND) - --Duel.RegisterEffect(e1,0) + Duel.RegisterEffect(e1,0) local e2=e0:Clone() e2:SetCode(EVENT_PHASE_START+PHASE_MAIN1) - --Duel.RegisterEffect(e2,0) + Duel.RegisterEffect(e2,0) local e3=Effect.GlobalEffect() e3:SetType(EFFECT_TYPE_FIELD) e3:SetCode(EFFECT_PUBLIC) e3:SetTargetRange(LOCATION_HAND,0) - --Duel.RegisterEffect(e3,player_ai) + Duel.RegisterEffect(e3,player_ai)]] end -- Your deck. The startup function must be on top of this line. @@ -105,6 +102,7 @@ SpecterActivateBlacklist={ 12014404, -- Cowboy 82697249, -- Dane Cook 22653490, -- Lightning Chidori +79816536, -- Summoner's Art } SpecterSummonBlacklist={ -- Blacklist of cards to never be normal summoned or set by the default AI logic (apparently this includes special summoning?) @@ -183,7 +181,8 @@ end function FoxCond(loc) if loc == PRIO_TOHAND then - return (CardsMatchingFilter(UseLists({AIST(),AIHand()}),SpecterBackrowFilter)<2 and not Duel.GetCurrentPhase()==PHASE_END + return (OPTCheck(94784213) + and CardsMatchingFilter(UseLists({AIST(),AIHand()}),SpecterBackrowFilter)<2 and not Duel.GetCurrentPhase()==PHASE_END and CardsMatchingFilter(AIDeck(),SpecterTrapFilter)>0 and not HasID(UseLists({AIExtra(),AIHand()}),94784213,true)) or (HasScales() and CardsMatchingFilter(UseLists({AIExtra(),AIMon(),AIHand()}),function(c) return c.id==94784213 end)==0) @@ -217,15 +216,19 @@ end function CrowCond(loc) --Code a to field/hand if Majespecter Cyclone would be useful for removing an opponent's monster. if loc == PRIO_TOHAND then - return OPTCheck(68395509) + return (OPTCheck(68395509) and CardsMatchingFilter(AIDeck(),SpecterSpellFilter)>0 and CardsMatchingFilter(UseLists({AIST(),AIHand()}),SpecterBackrowFilter)<2 + and not HasID(UseLists({AIExtra(),AIHand()}),68395509,true)) + or (HasScales() and CardsMatchingFilter(UseLists({AIExtra(),AIMon(),AIHand()}),function(c) return c.id==68395509 end)==0) end if loc == PRIO_TOFIELD then return OPTCheck(68395509) and CardsMatchingFilter(AIDeck(),SpecterSpellFilter)>0 - and ((not HasID(AIHand(),68395509,true) - or HasID(AIHand(),68395509,true) and NormalSummonCheck(player_ai))) + and (not HasID(AIHand(),68395509,true) + or (HasID(AIHand(),68395509,true) and NormalSummonCheck(player_ai)) + and Duel.GetTurnCount() == SpecterGlobalPendulum) + and not (HasScales() and HasID(AIExtra(),68395509,true)) end if loc == PRIO_BANISH then return NeedsSStormOverSCyclone() @@ -847,6 +850,10 @@ function SpecterMP2Check() return AI.GetCurrentPhase() == PHASE_MAIN2 or not GlobalBPAllowed end +function SpecterSetSummoners() + return Duel.GetTurnCount() == 1 or (Duel.GetCurrentPhase()==PHASE_MAIN2 or (Duel.GetCurrentPhase()==PHASE_MAIN1 and not GlobalBPAllowed)) +end + function SetSTempest() return Duel.GetTurnCount() == 1 or (Duel.GetCurrentPhase()==PHASE_MAIN2 or (Duel.GetCurrentPhase()==PHASE_MAIN1 and not GlobalBPAllowed)) end @@ -998,7 +1005,8 @@ end function SpecterSummonGranpulse2() return ((CardsMatchingFilter(OppST(),SpecterGranpulseFilter)>0 and OppHasScales() and (AI.GetCurrentPhase() == PHASE_MAIN2 or not GlobalBPAllowed) - and #OppHand()<2) + and #OppHand()<2 + and XYZSummonOkay()) or (CardsMatchingFilter(OppST(),OppDownBackrowFilter)>0 and Duel.GetTurnCount() ~= SpecterGlobalPendulum and HasScales() and CardsMatchingFilter(UseLists({AIHand(),AIExtra()}),SpecterMonsterFilter)>0)) and HasID(AIExtra(),85252081,true) @@ -1036,7 +1044,8 @@ function OppDownBackrowFilter(c) and SpecterDestroyFilter(c) and not (DestroyBlacklist(c) and (bit32.band(c.position, POS_FACEUP)>0 - or bit32.band(c.status,STATUS_IS_PUBLIC)>0)) + or FilterPublic(c)) + and not FilterPublic(c)) -- and not FilterType(c,TYPE_FIELD) end @@ -1320,7 +1329,7 @@ end function SpecterTornadoFilter4(c) if (EnemyHasFireflux() or EnemyHasPPalOrOddEyes() or EnemyHasStargazer() or EnemyHasTimegazer()) - and Duel.GetCurrentPhase() == PHASE_BATTLE then + and IsBattlePhase() then return c.attack > SpecterAIGetWeakestAttDef() and FilterPosition(c,POS_FACEUP_ATTACK) and SpecterTornadoFilter(c) @@ -1351,7 +1360,7 @@ function SpecterTornadoFilter7(c) and (FilterAffected(c,EFFECT_CANNOT_BE_BATTLE_TARGET) or FilterAffected(c,EFFECT_INDESTRUCTABLE_BATTLE)) and (FilterPosition(c,POS_FACEUP) - or FilterStatus(c,STATUS_IS_PUBLIC)) + or FilterPublic(c)) end function ChainSpecterTornado() @@ -1382,7 +1391,7 @@ function ChainSpecterTornado3() end function ChainSpecterTornado4() - if Duel.GetCurrentPhase() == PHASE_BATTLE and Duel.GetTurnPlayer()==1-player_ai then + if IsBattlePhase() and Duel.GetTurnPlayer()==1-player_ai then local source = Duel.GetAttacker() local target = Duel.GetAttackTarget() if source and target then @@ -1417,14 +1426,14 @@ end function ChainSpecterTornado6() return CardsMatchingFilter(OppMon(),SpecterTornadoFilter4)>0 and Duel.GetTurnPlayer()==1-player_ai - and Duel.GetCurrentPhase() == PHASE_BATTLE + and IsBattlePhase() and UnchainableCheck(36183881) end function ChainSpecterTornado7() return CardsMatchingFilter(OppMon(),SpecterTornadoFilter5)>0 and Duel.GetTurnPlayer()==1-player_ai - and Duel.GetCurrentPhase() == PHASE_BATTLE + and IsBattlePhase() and UnchainableCheck(36183881) end @@ -1444,7 +1453,7 @@ function ChainSpecterTornado8() and CardsMatchingFilter(AIMon(),MajespecterAttack)>4 and CardsMatchingFilter(UseLists({AIHand(),AIST()}),UsableFreelyBackrowFilter)>2 and CardsMatchingFilter(AIMon(),SpecterMonsterFilter)>3)) - and Duel.GetCurrentPhase() == PHASE_BATTLE + and IsBattlePhase() and Duel.GetTurnPlayer()==player_ai and UnchainableCheck(36183881) end @@ -1539,7 +1548,7 @@ end function SpecterCycloneFilter4(c) if (EnemyHasFireflux() or EnemyHasPPalOrOddEyes() or EnemyHasStargazer() or EnemyHasTimegazer()) - and Duel.GetCurrentPhase() == PHASE_BATTLE then + and IsBattlePhase() then return c.attack > SpecterAIGetWeakestAttDef() and FilterPosition(c,POS_FACEUP_ATTACK) and SpecterCycloneFilter(c) @@ -1571,7 +1580,7 @@ function SpecterCycloneFilter7(c) and (FilterAffected(c,EFFECT_CANNOT_BE_BATTLE_TARGET) or FilterAffected(c,EFFECT_INDESTRUCTABLE_BATTLE)) and (FilterPosition(c,POS_FACEUP) - or FilterStatus(c,STATUS_IS_PUBLIC)) + or FilterPublic(c)) end function ChainSpecterCyclone() @@ -1602,7 +1611,7 @@ function ChainSpecterCyclone3() end function ChainSpecterCyclone4() - if Duel.GetCurrentPhase() == PHASE_BATTLE and Duel.GetTurnPlayer()==1-player_ai then + if IsBattlePhase() and Duel.GetTurnPlayer()==1-player_ai then local source = Duel.GetAttacker() local target = Duel.GetAttackTarget() if source and target then @@ -1638,14 +1647,14 @@ end function ChainSpecterCyclone6() return CardsMatchingFilter(OppMon(),SpecterCycloneFilter4)>0 and Duel.GetTurnPlayer()==1-player_ai - and Duel.GetCurrentPhase() == PHASE_BATTLE + and IsBattlePhase() and UnchainableCheck(49366157) end function ChainSpecterCyclone7() return CardsMatchingFilter(OppMon(),SpecterCycloneFilter5)>0 and Duel.GetTurnPlayer()==1-player_ai - and Duel.GetCurrentPhase() == PHASE_BATTLE + and IsBattlePhase() and UnchainableCheck(49366157) end @@ -1665,7 +1674,7 @@ function ChainSpecterCyclone8() and CardsMatchingFilter(AIMon(),MajespecterAttack)>4 and CardsMatchingFilter(UseLists({AIHand(),AIST()}),UsableFreelyBackrowFilter)>2 and CardsMatchingFilter(AIMon(),SpecterMonsterFilter)>3)) - and Duel.GetCurrentPhase() == PHASE_BATTLE + and IsBattlePhase() and Duel.GetTurnPlayer()==player_ai and UnchainableCheck(49366157) end @@ -1750,7 +1759,7 @@ function SpecterEffectNegateFilter(c,card) if id == 09411399 and HasID(OppGrave(),09411399,true) then -- Don't negate Malicious if there is already a second in the graveyard. return false end - if id == 37445295 and #OppHand()>2 and not Duel.GetCurrentPhase() == PHASE_BATTLE then -- Falco + if id == 37445295 and #OppHand()>2 and not IsBattlePhase() then -- Falco return false end if id == 33420078 and #OppHand()>0 then --Plaguespreader @@ -1871,7 +1880,8 @@ function SpecterEffectNegateFilter(c,card) if id == 20563387 then return true end - if EnableShadollFunctions() or EnableBAFunctions() then + if (EnableShadollFunctions() or EnableBAFunctions() + or EnableLightswornFunctions() or EnableZombieFunctions()) then for i=1,Duel.GetCurrentChain() do e = Duel.GetChainInfo(i, CHAININFO_TRIGGERING_EFFECT) if e and (Duel.GetOperationInfo(i,CATEGORY_TOGRAVE) @@ -2708,7 +2718,7 @@ end function UseSStorm4() return CardsMatchingFilter(OppMon(),SStormFilter4)>0 - and (not MajestyCheck() or not WindaCheck()) + and not MajestyCheck() end function UseSStorm5() @@ -2784,7 +2794,7 @@ function SpecterCastelFilter(c) and Targetable(c,TYPE_MONSTER) and Affected(c,TYPE_MONSTER,4) and not SpecterCodedTargets2(c) --- and c.attack > AIGetStrongestAttack() + and c.attack == OppGetStrongestAttDef() end function SpecterUseCastel() @@ -2813,6 +2823,17 @@ function SpecterSummonUtopiaLightningRoom() and not EnemyHasBattleStallLightning() end +function SpecterSummonUtopiaLightningSmart() + return CardsMatchingFilter(OppMon(),SpecterGraveyardEffectBattleFilter)>0 + and XYZSummonOkay() + and AI.GetCurrentPhase() == PHASE_MAIN1 + and GlobalBPAllowed + and HasID(AIExtra(),56832966,true) + and not HasID(AIMon(),56832966,true) + and not EnemyHasStall() + and not EnemyHasBattleStallLightning() +end + function SpecterLightningFilter(c) return not FilterAffected(c,EFFECT_CANNOT_BE_BATTLE_TARGET) and not FilterAffected(c,EFFECT_INDESTRUCTABLE_BATTLE) @@ -2834,6 +2855,7 @@ end function SpecterSummonHeartlandFinish() return AI.GetCurrentPhase() == PHASE_MAIN1 and GlobalBPAllowed and AI.GetPlayerLP(2)<=2000 + and #OppMon()>0 and HasID(AIExtra(),31437713,true) end @@ -2995,10 +3017,15 @@ function SpecterShadollFusionGrave() end function ChainSpecterAbyss() - if (EnableBlueEyesFunctions() and Duel.GetTurnPlayer()==1-player_ai) then return true end - if (EnableShadollFunctions() and Duel.GetTurnPlayer()==1-player_ai) then return true end - if (EnableRaidraptorFunctions() and Duel.GetTurnPlayer()==1-player_ai) then return true end - if (EnableBAFunctions() and Duel.GetTurnPlayer()==1-player_ai) then return true end +-- if (EnableBlueEyesFunctions() + if (EnableShadollFunctions() + or EnableRaidraptorFunctions() + or EnableBAFunctions() + or EnableHieraticFunctions() + or EnableLightswornFunctions() + or EnableZombieFunctions() + or EnableBlueEyesAbyssFunctions()) + and Duel.GetTurnPlayer()==1-player_ai then return true end if EnableShadollFunctions() then local e for i=1,Duel.GetCurrentChain() do @@ -3017,6 +3044,30 @@ function ChainSpecterAbyss() return true end end + if EnableShadollFunctions() then + if IsBattlePhase() then + local source = Duel.GetAttacker() + local target = Duel.GetAttackTarget() + if source and target then + if source:IsControler(player_ai) then + target = Duel.GetAttacker() + source = Duel.GetAttackTarget() + end + if target:IsControler(player_ai) + and source:IsPosition(POS_FACEUP) + and target:IsPosition(POS_FACEUP_ATTACK) + and WinsBattle(target,source) + and not source:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) + and ((source:IsCode(94977269) or source:IsCode(74822425) + or source:IsCode(48424886) or source:IsCode(20366274) + or source:IsCode(19261966) or source:IsCode(74009824) + or source:IsCode(04904633)) and SpecterShadollFusionGrave()) + then + return true + end + end + end + end if EnableBAFunctions() then local e for i=1,Duel.GetCurrentChain() do @@ -3028,7 +3079,7 @@ function ChainSpecterAbyss() end end if EnableBAFunctions() then - if Duel.GetCurrentPhase() == PHASE_BATTLE then + if IsBattlePhase() then local source = Duel.GetAttacker() local target = Duel.GetAttackTarget() if source and target then @@ -3039,7 +3090,7 @@ function ChainSpecterAbyss() if target:IsControler(player_ai) and source:IsPosition(POS_FACEUP) and target:IsPosition(POS_FACEUP_ATTACK) - and Winsbattle(target,source) + and WinsBattle(target,source) and not source:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) and (source:IsCode(20758643) or source:IsCode(57143342) or source:IsCode(09342162) or source:IsCode(36553319) or source:IsCode(84764038) or source:IsCode(27552504) or (source:IsCode(62957424) and #OppHand()>0) or source:IsCode(00601193) or source:IsCode(18386170) @@ -3060,6 +3111,9 @@ function ChainSpecterAbyss() if EnableBAFunctions() and SpecterRemovalCheckOpp(83531441) and EnemyHasDante() then return true end + if EnableArtifactFunctions() and SpecterArtifactDestroyCheckOpp(OppST()) and Duel.GetTurnPlayer()==player_ai then + return true + end if RemovalCheck(21044178) then return true end @@ -3075,6 +3129,26 @@ function ChainSpecterAbyss() if SpecterStardustCheck() or SpecterStarAssaultModeCheck() then return true end + if CardsMatchingFilter(OppMon(),SpecterGraveyardEffectBattleFilter)>0 then + if IsBattlePhase() then + local source = Duel.GetAttacker() + local target = Duel.GetAttackTarget() + if source and target then + if source:IsControler(player_ai) then + target = Duel.GetAttacker() + source = Duel.GetAttackTarget() + end + if target:IsControler(player_ai) + and source:IsPosition(POS_FACEUP) + and target:IsPosition(POS_FACEUP_ATTACK) + and WinsBattle(target,source) + and not source:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) + and not target:IsCode(56832966) then + return true + end + end + end + end local e for i=1,Duel.GetCurrentChain() do e = Duel.GetChainInfo(i, CHAININFO_TRIGGERING_EFFECT) @@ -3377,7 +3451,7 @@ function CrowChangeToAttack() and (FaceupEnemies() or #OppMon()==0) end -function CrowChangeToDefense() +function CrowChangeToDefence() return AI.GetCurrentPhase() == PHASE_MAIN2 or not GlobalBPAllowed end @@ -3390,12 +3464,12 @@ function MajesterChangeToAttack() and (FaceupEnemies() or #OppMon()==0) end -function MajesterChangeToDefense() +function MajesterChangeToDefence() return AI.GetCurrentPhase() == PHASE_MAIN2 or not GlobalBPAllowed end -function CatChangeToDefense() +function CatChangeToDefence() return true end @@ -3462,7 +3536,7 @@ end function UsedUtopiaLightning() return CardsMatchingFilter(AIMon(),UsedUtopiaLightningFilter)>0 - and Duel.GetCurrentPhase() == PHASE_BATTLE + and IsBattlePhase() end function UsedUtopiaLightning2() @@ -3548,6 +3622,14 @@ function EnableBAFunctions() return CardsMatchingFilter(UseLists({OppMon(),OppDeck(),OppGrave(),OppBanish()}),EnableBAFunctionsFilter)>=10 end +function EnableHieraticFunctionsFilter(c) + return IsSetCode(c.setcode,0x69) +end + +function EnableHieraticFunctions() + return CardsMatchingFilter(UseLists({OppMon(),OppDeck(),OppGrave(),OppBanish()}),EnableHieraticFunctionsFilter)>=10 +end + function EnemyBATempest(c) return (c.id==83531441 or c.id==10802915) and FilterStatus(c,STATUS_SUMMONING) @@ -3936,6 +4018,28 @@ function SpecterRemovalCheckOpp(id,category) return false end +function SpecterArtifactDestroyCheckOpp(id,category) + if Duel.GetCurrentChain() == 0 then return false end + if not EnableArtifactFunctions() then return false end + local cat={CATEGORY_DESTROY} + if category then cat={category} end + for i=1,#cat do + for j=1,Duel.GetCurrentChain() do + local ex,cg = Duel.GetOperationInfo(j,cat[i]) + if ex and CheckNegated(j) then + if id==nil then + return cg + end + if cg and id~=nil and cg:IsExists(function(c) return c:IsControler(1-player_ai) and c:IsType(TYPE_SPELL+TYPE_TRAP) + and c:IsPosition(POS_FACEDOWN) end, 1, nil) then + return true + end + end + end + end + return false +end + function SpecterRhapsodyATKCheck() local cards=AIMon() if not HasID(UseLists({AIMon(),AIExtra()}),56832966,true) @@ -5719,7 +5823,7 @@ function SpecterAIGetWeakestAttDef() if bit32.band(cards[i].position,POS_ATTACK)>0 and cards[i].attack0 and cards[i].defense0 or bit32.band(cards[i].status,STATUS_IS_PUBLIC)>0) + and (bit32.band(cards[i].position,POS_FACEUP)>0 or FilterPublic(cards[i])) then result=cards[i].defense end @@ -5778,7 +5882,7 @@ end function SpecterSummonDane() return CardsMatchingFilter(AIMon(),SpecterDaneFilter)>3 and ((CardsMatchingFilter(AIST(),MagicianPendulumFilter)>1 - and OPTCheck(53208660)) + and not OPTCheck(53208660)) or (CardsMatchingFilter(AIHand(),ScaleHighFilter)>0 and CardsMatchingFilter(AIHand(),ScaleLowFilter)>0)) and Duel.GetTurnCount() ~= SpecterGlobalPendulum @@ -5786,6 +5890,7 @@ function SpecterSummonDane() and CardsMatchingFilter(AIST(),SpecterBackrowFilter)<4 and XYZSummonOkay() and HasID(AIExtra(),82697249,true) + and OPTCheck(31437713) and not HasID(AIST(),78949372,true) and not HasID(AIST(),05851097,true) end @@ -5793,11 +5898,12 @@ end function SpecterUseDane() return CardsMatchingFilter(AIMon(),SpecterDaneFilter)>1 and ((CardsMatchingFilter(AIST(),MagicianPendulumFilter)>1 - and OPTCheck(53208660)) + and not OPTCheck(53208660)) or (CardsMatchingFilter(AIHand(),ScaleHighFilter)>0 and CardsMatchingFilter(AIHand(),ScaleLowFilter)>0)) and Duel.GetTurnCount() ~= SpecterGlobalPendulum and CardsMatchingFilter(AIST(),SpecterBackrowFilter)<4 + and OPTCheck(31437713) and not HasID(AIST(),78949372,true) and not HasID(AIST(),05851097,true) end @@ -5957,6 +6063,555 @@ function SpecterUseChidori() return CardsMatchingFilter(OppField(),SpecterChidoriFilter2)>0 end +function SpecterSummonAbyssArchetypesMP1() + return (AIGetStrongestAttack() > OppGetStrongestAttack() or OppGetStrongestAttack() < 1700) + and XYZSummonOkay() + and Duel.GetCurrentPhase() == PHASE_MAIN1 + and ((EnableArtifactFunctions() and OppDownBackrow()) + or (CardsMatchingFilter(OppMon(),SpecterGraveyardEffectBattleFilter)>1 and GlobalBPAllowed)) +end + +function SpecterSummonAbyssArchetypesMP2() + return (AIGetStrongestAttack() > OppGetStrongestAttack() or OppGetStrongestAttack() < 1700) + and XYZSummonOkay() + and (Duel.GetCurrentPhase() == PHASE_MAIN2 or (Duel.GetCurrentPhase() == PHASE_MAIN1 and not GlobalBPAllowed)) + and (EnableHieraticFunctions() + or EnableLightswornFunctions() + or EnableZombieFunctions() + or EnableBlueEyesAbyssFunctions()) +end + +function EnableLightswornFunctionsFilter(c) + return IsSetCode(c.setcode,0x38) +end + +function EnableLightswornFunctions() + return CardsMatchingFilter(UseLists({OppMon(),OppDeck(),OppGrave(),OppBanish()}),EnableLightswornFunctionsFilter)>=10 +end + +function EnableZombieFunctionsFilter(c) + return FilterRace(c,RACE_ZOMBIE) +end + +function EnableZombieFunctions() + return CardsMatchingFilter(UseLists({OppMon(),OppDeck(),OppGrave(),OppBanish()}),EnableZombieFunctionsFilter)>=10 +end + +function EnableBlueEyesAbyssFunctionsFilter(c) + return c.id==36734924 + or c.id==71039903 + or c.id==45644898 + or c.id==56532353 +end + +function EnableBlueEyesAbyssFunctions() + return CardsMatchingFilter(OppGrave(),EnableBlueEyesAbyssFunctionsFilter)>0 +end + +function EnableArtifactFunctionsFilter(c) --Can't read setcode? + return c.id==20292186 + or c.id==85103922 + or c.id==12697630 + or c.id==12444060 + or c.id==29223325 + or c.id==69840739 + or c.id==69304426 + or c.id==84268896 + or c.id==85080444 + or c.id==56611470 + or c.id==11475049 + or c.id==34267821 + or c.id==08873112 + or c.id==48086335 + or c.id==47863787 +end + +function EnableArtifactFunctions() + return CardsMatchingFilter(UseLists({OppMon(),OppDeck(),OppGrave(),OppBanish()}),EnableArtifactFunctionsFilter)>=5 +end + +--Verserion when it gets an id. +--ABC unions when they get ids. +--Silent Swordsman when it gets an id. +--Starve Venom Fusion Dragon when it gets an id. + +function SpecterGraveyardEffectBattleFilter(c) --Anything always above 2000, assume Utopia Lightning will be on the field. + return SpecterLightningFilter(c) + and (FilterPosition(c,POS_FACEUP) + or FilterPublic(c)) + and (c.id==58604027 + or c.id==72677437 + or c.id==17286057 + or c.id==85991529 + or c.id==08062132 + or c.id==64063868 + or c.id==85771019 + or c.id==55885348 + or c.id==23015896 + or c.id==18175965 + or c.id==27103517 + or c.id==31829185 + or c.id==20849090 + or c.id==71703785 + or c.id==05556499 + or c.id==68299524 + or c.id==12624008 + or c.id==13846680 + or c.id==50957346 + or c.id==59235795 + or c.id==86229493 + or c.id==86442081 + or c.id==31986288 + or c.id==52824910 + or c.id==59496924 + or c.id==29491334 + or c.id==34294855 + or c.id==07602840 + or c.id==58990362 + or c.id==69838592 + or c.id==80887952 + or c.id==94454495 + or c.id==99946920 + or c.id==37679169 + or c.id==93927067 + or c.id==97904474 + or c.id==32146097 + or c.id==33656832 + or c.id==47606319 + or c.id==99348756 + or c.id==30106950 + or c.id==51987571 + or c.id==75252099 + or c.id==85399281 + or c.id==98719226 + or c.id==86062400 + or c.id==70074904 + or c.id==39091951 + or c.id==29687169 + or c.id==67922702 + or c.id==59312550 + or c.id==91438994 + or c.id==55010259 + or c.id==98301564 + or c.id==81354330 + or c.id==11439455 + or c.id==14763299 + or c.id==02584136 + or c.id==67483216 + or c.id==76066541 + or c.id==29654737 + or c.id==02671330 + or c.id==29021114 + or c.id==40320754 + or c.id==27655513 + or c.id==40894584 + or c.id==14541657 + or c.id==97017120 + or c.id==60806437 + or c.id==83011277 + or (c.id==02250266 and FilterPosition(c,POS_FACEUP_ATTACK)) + or c.id==57839750 + or c.id==03070049 + or c.id==84834865 + or c.id==48783998 + or c.id==95956346 + or c.id==03846170 + or c.id==03370104 + or c.id==70089580 + or c.id==77044671 + or c.id==06320631 + or c.id==75733063 + or c.id==86174055 + or c.id==04335645 + or c.id==72714226 + or c.id==16480084 + or c.id==69572169 + or c.id==66762372 + or c.id==05438492 + or c.id==62379337 + or c.id==44364207 + or c.id==07563579 + or c.id==34680482 + or c.id==60508057 + or c.id==94667532 + or c.id==44481227 + or c.id==24025620 + or (c.id==70271583 and FilterPosition(c,POS_FACEUP_DEFENSE)) + or c.id==66500065 + or c.id==45045866 + or c.id==29834183 + or c.id==41386308 + or c.id==63223467 + or c.id==24218047 + or c.id==39191307 + or c.id==81035362 + or c.id==71519605 + or c.id==42737833 + or c.id==89731911 + or c.id==93107608 + or c.id==15394083 + or c.id==56132807 + or c.id==83190280 + or c.id==37984162 + or c.id==76321376 + or c.id==17559367 + or c.id==85646474 + or c.id==93445074 + or c.id==20586572 + or c.id==66540884 + or c.id==06480253 + or c.id==02377034 + or c.id==78275321 + or c.id==24103628 + or c.id==66451379 + or c.id==56675280 + or c.id==36625827 + or c.id==89893715 + or c.id==20797524 + or c.id==07914843 + or c.id==83982270 + or c.id==83135907 + or c.id==43332022 + or c.id==51925772 + or c.id==68226653 + or c.id==54490275 + or c.id==54455435 + or c.id==02843014 + or c.id==22567609 + or c.id==95178994 + or c.id==14472500 + or (c.id==28124263 and FilterPosition(c,POS_FACEUP_ATTACK)) + or c.id==10110717 + or c.id==57844634 + or c.id==32271987 + or c.id==00525110 + or c.id==03030892 + or c.id==99675356 + or c.id==72291078 + or c.id==48588176 + or c.id==05498296 + or c.id==48411996 + or c.id==68366996 + or c.id==88845345 + or c.id==09156135 + or c.id==82994509 + or c.id==59482302 + or c.id==62437709 + or c.id==00131182 + or c.id==83392426 + or (c.id==56840658 and FilterPosition(c,POS_FACEUP)) + or c.id==02095764 + or c.id==25935625 + or c.id==64627453 + or c.id==73702909 + or c.id==35050257 + or c.id==60161788 + or c.id==55488859 + or c.id==91662792 + or c.id==18489208 + or c.id==28332833 + or (c.id==76865611 and FilterPosition(c,POS_FACEUP_DEFENSE)) + or c.id==93749093 + or c.id==50732780 + or c.id==93451636 + or c.id==00135598 + or c.id==22171591 + or c.id==56839613 + or c.id==81752019 + or c.id==94878265 + or c.id==35089369 + or c.id==10456559 + or c.id==31034919 + or c.id==48343627 + or c.id==56597272 + or c.id==61488417 + or (c.id==70546737 and FilterPosition(c,POS_FACEUP_ATTACK)) + or c.id==80244114 + or c.id==83604828 + or c.id==36021814 + or c.id==53315891 + or c.id==18386170 + or c.id==74583607 + or (c.id==57477163 and c.attack<2500) + or c.id==74009824 + or c.id==54484652 + or c.id==74892653 + or c.id==19048328 + or c.id==26949946 + or c.id==39823987 + or c.id==52145422 + or c.id==83283063 + or c.id==44852429 + or c.id==23693634 + or c.id==43202238 + or c.id==53451824 + or (c.id==25958491 and c.attack<5000) + or c.id==00601193 + or c.id==25373678 + or c.id==29143726 + or c.id==85551711 + or c.id==37279508 + or c.id==17016362 + or c.id==30100551 + or c.id==93730230 + or c.id==50789693 + or (c.id==54366836 and FilterPosition(c,POS_FACEUP_ATTACK)) + or c.id==31766317 + or c.id==85066822 + or c.id==34004470 + or c.id==38525760 + or c.id==46037213 + or c.id==47754278 + or c.id==06903857 + or c.id==66413481 + or c.id==12694768 + or c.id==73001017 + or c.id==97396380 + or c.id==98884569 + or c.id==16135253 + or c.id==36569343 + or c.id==36733451 + or c.id==80441106 + or c.id==50916353 + or c.id==78243409 + or c.id==39892082 + or c.id==59965151 + or c.id==64379430 + or c.id==81020140 + or c.id==96594609 + or c.id==51534754 + or c.id==89113320 + or c.id==16751086 + or c.id==98263709 + or c.id==07736719 + or c.id==97885363 + or c.id==45801022 + or c.id==46897277 + or c.id==55013285 + or c.id==81587028 + or c.id==12652643 + or c.id==95486586 + or c.id==75380687 + or c.id==13722870 + or c.id==04796100 + or c.id==41517968 + or c.id==72959823 + or c.id==92361635 + or c.id==50278554 + or c.id==96029574 + or c.id==95453143 + or c.id==49389523 + or c.id==76774528 + or c.id==67904682 + or c.id==04779823 + or c.id==23338098 + or c.id==13995824 + or c.id==77799846 + or c.id==20785975 + or c.id==12744567 + or c.id==71921856 + or c.id==59170782 + or c.id==79852326 + or c.id==37169670 + or c.id==69831560 + or c.id==77336644 + or c.id==38898779 + or c.id==61257789 + or (c.id==57793869 and c.attack<=5000) + or c.id==14553285 + or c.id==34079868 + or c.id==14462257 + or c.id==01764972 + or c.id==23558733 + or c.id==17189532 + or c.id==00123709 + or c.id==42280216 + or c.id==74641045 + or c.id==59911557 + or c.id==09418365 + or c.id==18426196 + or c.id==50903514 + or c.id==46572756 + or c.id==41158734 + or c.id==75363626 + or c.id==52404456 + or c.id==68535320 + or c.id==65472618 + or c.id==48252330 + or c.id==94283662 + or c.id==95929069 + or c.id==11868731 + or c.id==26016357 + or c.id==43002864 + or c.id==23899727 + or c.id==89521713 + or c.id==91350799 + or c.id==98358303 + or c.id==71341529 + or c.id==26570480 + or c.id==54149433 + or c.id==12980373 + or c.id==47077318 + or c.id==85087012 + or c.id==17475251 + or c.id==49374988 + or c.id==27971137 + or c.id==41952656 + or c.id==09861795 + or c.id==28139785 + or c.id==78349103 + or c.id==87535691 + or c.id==57116033 + or c.id==20855340 + or c.id==87340664 + or c.id==40343749 + or c.id==70054514 + or c.id==62242678 + or c.id==89474727 + or c.id==39477584 + or c.id==37910722 + or c.id==66818682 + or c.id==32995007 + or c.id==24943456 + or c.id==98558751 + or c.id==27552504 + or c.id==66970002 + or c.id==58712976 + or c.id==61344030 + or c.id==62709239 + or c.id==82962242 + or c.id==50287060 + or c.id==59975920 + or c.id==82293134 + or c.id==05361647 + or c.id==89609515 + or c.id==45547649 + or c.id==85374678 + or c.id==21593977 + or c.id==67696066 + or c.id==51858306 + or c.id==12467005 + or c.id==31709826 + or c.id==82642348 + or c.id==50720316 + or c.id==26185991 + or c.id==24701235 + or c.id==05929801 + or c.id==64306248 + or c.id==95401059 + or c.id==81992475 + or c.id==57143342 + or c.id==45010690 + or c.id==09342162 + or c.id==56223084 + or c.id==73213494 + or c.id==62957424 + or c.id==96682430 + or c.id==12369277 + or c.id==47728740 + or c.id==45593826 + or c.id==36553319 + or c.id==20758643 + or c.id==01102515 + or c.id==52823314 + or c.id==22873798 + or c.id==66540884 + or c.id==09418534 + or c.id==15341821 + or c.id==35629124 + or c.id==35429292 + or c.id==76614003 + or c.id==17932494 + or c.id==58016954 + or c.id==58551308 + or c.id==69750546 + or c.id==73146473 + or c.id==75673220 + or c.id==95457011 + or c.id==09742784 + or c.id==79814787 + or c.id==54359696 + or c.id==13455953 + or c.id==02407147 + or c.id==51275027 + or c.id==57473560 + or c.id==60990740 + or c.id==80532587 + or c.id==42566602 + or c.id==42110604 + or c.id==79606837 + or c.id==84025439 + or c.id==16691074 + or c.id==10613952 + or c.id==23649496 + or (c.id==42589641 and c.xyz_material_count>0) + or c.id==75367227 + or c.id==83531441 + or c.id==46895036 + or c.id==04904633 + or c.id==63804806 + or c.id==48948935 + or c.id==94689206 + or c.id==99365553 + or c.id==31038159 + or c.id==91250514 + or c.id==36352429 + or c.id==93298460 + or c.id==62950604 + or c.id==61901281 + or c.id==58324930 + or c.id==99234526 + or c.id==86559484 + or c.id==22134079 + or c.id==75043725 + or c.id==54629413 + or c.id==33866130 + or c.id==55969226 + or c.id==06351548 + or c.id==47030842 + or c.id==25280974 + or c.id==76543119 + or c.id==16366944 + or c.id==90361010 + or c.id==78010363 + or c.id==63665875 + or c.id==96938986 + or c.id==97064649 + or c.id==84824601 + or c.id==26202165 + or c.id==58616392 + or c.id==65277087 + or c.id==25343017 + or c.id==37349495 + or c.id==99070951 + or c.id==15169262 + or c.id==46239604 + or c.id==93969023 + or c.id==13314457 + or c.id==76442347 + or c.id==60668166 + or c.id==77360173 + or c.id==28016193 + or c.id==22061412 + or c.id==71616908 + or c.id==13108445 + or c.id==35330871 + or c.id==97836203 + or c.id==24221808 + or c.id==37993923 + or c.id==37038993 + or c.id==23454876 + or c.id==71612253 + or c.id==56638325 + or c.id==03758046 + or c.id==96381979 + or c.id==16259549) +end + +function SpecterUseSummoners() + return true +end + function SpecterInit(cards) local Act = cards.activatable_cards local Sum = cards.summonable_cards @@ -5965,6 +6620,9 @@ function SpecterInit(cards) local SetMon = cards.monster_setable_cards local SetST = cards.st_setable_cards + GlobalMaterial = false + SpecterGlobalMaterial = false + if HasIDNotNegated(Act,22653490,SpecterUseChidori) then GlobalCardMode = 1 return COMMAND_ACTIVATE,CurrentIndex @@ -5975,6 +6633,9 @@ function SpecterInit(cards) if HasIDNotNegated(Act,85252081,SpecterUseGranpulse) then return COMMAND_ACTIVATE,CurrentIndex end + if HasIDNotNegated(Act,79816536,SpecterUseSummoners) then + return COMMAND_ACTIVATE,CurrentIndex + end if HasIDNotNegated(Act,70368879,SpecterUpstart) then return COMMAND_ACTIVATE,CurrentIndex end @@ -6092,6 +6753,7 @@ function SpecterInit(cards) return SpecterXYZSummon() end if HasIDNotNegated(Act,31437713,SpecterActivateHeartlandFinish) then + OPTSet(31437713) return COMMAND_ACTIVATE,CurrentIndex end if HasIDNotNegated(Act,76473843,PlayMajesty,nil,LOCATION_HAND) then @@ -6294,6 +6956,7 @@ function SpecterInit(cards) if HasIDNotNegated(SpSum,88722973,SpecterSummonMajesterRoom) then return SpecterXYZSummon() end + for i=1,#SpSum do if PendulumCheck(SpSum[i]) and SpecterPendulumSummon() and WorthPendulumSummoning() then GlobalPendulumSummoningSpecter = true @@ -6433,6 +7096,12 @@ function SpecterInit(cards) if HasIDNotNegated(SpSum,85252081,SpecterSummonGranpulseSmart) then return SpecterXYZSummon() end + if HasIDNotNegated(SpSum,21044178,SpecterSummonAbyssArchetypesMP2) then + return SpecterXYZSummon() + end + if HasIDNotNegated(SpSum,21044178,SpecterSummonAbyssArchetypesMP1) then + return SpecterXYZSummon() + end if HasIDNotNegated(SpSum,71068247,SummonTotemBird) then return SpecterXYZSummon() end @@ -6462,6 +7131,12 @@ function SpecterInit(cards) if HasIDNotNegated(SpSum,84013237,SpecterSummonUtopiaLightning) then return SpecterXYZSummon() end + if HasIDNotNegated(SpSum,56832966,SpecterSummonUtopiaLightningSmart) then + return SpecterXYZSummon() + end + if HasIDNotNegated(SpSum,84013237,SpecterSummonUtopiaLightningSmart) then + return SpecterXYZSummon() + end if HasIDNotNegated(SpSum,62709239,SpecterSummonPhantom) then return SpecterXYZSummon() end @@ -6471,11 +7146,11 @@ function SpecterInit(cards) if HasIDNotNegated(SpSum,62709239,SpecterSummonPhantom3) then return SpecterXYZSummon() end - if HasIDNotNegated(SpSum,21044178,SpecterBlueSummonAbyss) then --- AITrashTalk("You're looking a little Blue-Eyes there. Want to talk about it?") --- AITrashTalk("Well, too bad. I'm the equivalent of talking to a Wall-E.") +--[[ if HasIDNotNegated(SpSum,21044178,SpecterBlueSummonAbyss) then + AITrashTalk("You're looking a little Blue-Eyes there. Want to talk about it?") + AITrashTalk("Well, too bad. I'm the equivalent of talking to a Wall-E.") return SpecterXYZSummon() - end + end]] if HasIDNotNegated(SpSum,21044178,SpecterShadollSummonAbyss) then AITrashTalk("I will send you to The Shadoll Realm.") return SpecterXYZSummon() @@ -6501,25 +7176,28 @@ function SpecterInit(cards) return SpecterXYZSummon() end - if HasIDNotNegated(Rep,68395509,CrowChangeToDefense,nil,LOCATION_MZONE,POS_FACEUP_ATTACK) then + if HasIDNotNegated(Rep,68395509,CrowChangeToDefence,nil,LOCATION_MZONE,POS_FACEUP_ATTACK) then return COMMAND_CHANGE_POS,CurrentIndex end if HasIDNotNegated(Rep,68395509,CrowChangeToAttack,nil,LOCATION_MZONE,POS_FACEUP_DEFENSE) then return COMMAND_CHANGE_POS,CurrentIndex end - if HasIDNotNegated(Rep,88722973,MajesterChangeToDefense,nil,LOCATION_MZONE,POS_FACEUP_ATTACK) then + if HasIDNotNegated(Rep,88722973,MajesterChangeToDefence,nil,LOCATION_MZONE,POS_FACEUP_ATTACK) then return COMMAND_CHANGE_POS,CurrentIndex end if HasIDNotNegated(Rep,88722973,MajesterChangeToAttack,nil,LOCATION_MZONE,POS_FACEUP_DEFENSE) then return COMMAND_CHANGE_POS,CurrentIndex end - if HasIDNotNegated(Rep,05506791,CatChangeToDefense,nil,LOCATION_MZONE,POS_FACEUP_ATTACK) then + if HasIDNotNegated(Rep,05506791,CatChangeToDefence,nil,LOCATION_MZONE,POS_FACEUP_ATTACK) then return COMMAND_CHANGE_POS,CurrentIndex end if HasID(SetST,53208660,SetPendulumCall) then return COMMAND_SET_ST,CurrentIndex end + if HasID(SetST,79816536,SpecterSetSummoners) then + return COMMAND_SET_ST,CurrentIndex + end if HasID(SetST,43898403,SetTwinTwister) then return COMMAND_SET_ST,CurrentIndex end @@ -6547,17 +7225,20 @@ function SpecterInit(cards) if HasIDNotNegated(Act,31437713,SpecterRaidraptorActivateHeartland) and HeartlandTalk and not HeartlandTalk2 then HeartlandTalk2 = true + OPTSet(31437713) AITrashTalk("Hey buddy, did you let this live just so you could hear another pun?") AITrashTalk("Alright, here's my last one: that card is Falcondescending.") return COMMAND_ACTIVATE,CurrentIndex end if HasIDNotNegated(Act,31437713,SpecterRaidraptorActivateHeartland) and not HeartlandTalk then HeartlandTalk = true + OPTSet(31437713) AITrashTalk("If you keep this up, I will eventually run out of puns.") AITrashTalk("That wouldn't be good for the Falconomy, would it?") return COMMAND_ACTIVATE,CurrentIndex end if HasIDNotNegated(Act,31437713,SpecterActivateHeartland) then + OPTSet(31437713) return COMMAND_ACTIVATE,CurrentIndex end end @@ -7058,6 +7739,13 @@ function SpecterChidoriTarget(cards) return BestTargets(cards,1,TARGET_TODECK,SpecterChidoriFilter1) end +function SpecterCastelTarget(cards,min,max) + if LocCheck(cards,LOCATION_OVERLAY) then + return Add(cards,PRIO_TOGRAVE,math.max(min,math.min(2,max))) + end + return BestTargets(cards,1,TARGET_TODECK,SpecterCastelFilter) +end + function SpecterCallToGravePriority(card) --Choose which card is best for Pendulum Call's discard effect. local id=card.id if id==53208660 then --Pendulum Call duplicate @@ -7295,12 +7983,138 @@ function SpecterJokerTarget(cards) --Choose which target is best for Joker's eff return Add(cards,PRIO_TOHAND) end +function SpecterMiscToGravePriority(card) --Choose which card is best for Pendulum Call's discard effect. + local id=card.id + if id==53208660 then --Pendulum Call + if CardsMatchingFilter(UseLists({AIHand(),AIExtra()}),function(c) return c.id==53208660 end)>1 then + return 13 + elseif HasScales() then + return 8 + else + return 0 + end + end + if id==76473843 then + if MajestyDiscardAvailable() then + return 14 + else + return 3 + end + end + if id==51531505 then --Dragonpit 8 + return 12 + end + if id==15146890 then --Dragonpulse 1 + return 8 + end + if id==14920218 then --Peasant 2 + return 6 + end + if id==13972452 then --Specter Storm + return 10 + end + if id==19665973 then --Fader + return 7 + end + if id==02572890 then --Tempest + return 5 + end + if id==36183881 then --Tornado + return 9 + end + if id==49366157 then --SCyclone + return 11 + end + if id==72714461 then --Insight + return 8 + end + if id==40318957 then --Joker + return 4 + end + if id==05650082 then --Storming Mirror + return 3 + end + if id==05851097 then --Vanity's + return 1 + end + if id==68395509 then --Crow + if CardsMatchingFilter(UseLists({AIHand(),AIExtra()}),function(c) return c.id==68395509 end)>1 then + return 4 + else + return 3 + end + end + if id==00645794 then --Toad + if CardsMatchingFilter(UseLists({AIHand(),AIExtra()}),function(c) return c.id==00645794 end)>1 then + return 4 + else + return 2 + end + end + if id==05506791 then --Cat + if CardsMatchingFilter(UseLists({AIHand(),AIExtra()}),function(c) return c.id==05506791 end)>1 then + return 4 + else + return 1 + end + end + if id==94784213 then --Fox + if CardsMatchingFilter(UseLists({AIHand(),AIExtra()}),function(c) return c.id==94784213 end)>1 then + return 4 + else + return 1 + end + end + if id==05506791 then --Raccoon + if CardsMatchingFilter(UseLists({AIHand(),AIExtra()}),function(c) return c.id==31991800 end)>1 then + return 4 + else + return 0 + end + end + return GetPriority(card,PRIO_TOGRAVE) +end + +function SpecterMiscDiscardAssignPriority(cards,toLocation) + local func = SpecterMiscToGravePriority +--[[ if toLocation==LOCATION_HAND then + func = SpecterMiscToGravePriority + end]] + for i=1,#cards do + cards[i].priority=func(cards[i]) + end +end + +function SpecterMiscDiscardToGrave(cards,amount) + local result = {} + for i=1,#cards do + cards[i].index=i + end + SpecterMiscDiscardAssignPriority(cards,LOCATION_HAND) + table.sort(cards,function(a,b) return a.priority>b.priority end) + for i=1,amount do + result[i]=cards[i].index + end + if result == nil then result = Add(cards,PRIO_TOGRAVE) end + return result +end + +function SpecterMiscDiscardTarget(cards) + for i=1,Duel.GetCurrentChain() do + e = Duel.GetChainInfo(i, CHAININFO_TRIGGERING_EFFECT) + if e and (e:GetHandler():GetCode()==74519184 or e:GetHandler():GetCode()==69402394) then + return SpecterMiscDiscardToGrave(cards,2) + end + end + return SpecterMiscDiscardToGrave(cards,1) +end + function SpecterCard(cards,min,max,id,c,minTargets,maxTargets,triggeringID,triggeringCard) if GlobalPendulumSummoningSpecter and Duel.GetCurrentChain()==0 then GlobalPendulumSummoningSpecter = nil local x = CardsMatchingFilter(cards,NotJokerMonsterFilter) if (CardsMatchingFilter(OppMon(),EnemySummonNegatorMonFilter)>0 and not UsableSTempest()) or EnemyHasTimeRafflesia() then - AITrashTalk("Hmm...") + AITrashTalk("Hmm...") x = math.min(x,1) if PendulumRaccoon() then return FindID(31991800,cards,true) @@ -7308,7 +8122,7 @@ function SpecterCard(cards,min,max,id,c,minTargets,maxTargets,triggeringID,trigg return FindID(68395509,cards,true) elseif PendulumFox() then return FindID(94784213,cards,true) - elseif PendulumToad() then + elseif PendulumToad() then return FindID(00645794,cards,true) elseif PendulumCat() then return FindID(05506791,cards,true) @@ -7318,7 +8132,7 @@ function SpecterCard(cards,min,max,id,c,minTargets,maxTargets,triggeringID,trigg return Add(cards,PRIO_TOFIELD,x) end end - if HasID(AIExtra(),40318957,true) then + if not HasID(AIHand(),40318957,true) then local x = CardsMatchingFilter(cards,AllMonsterFilter) end x = math.min(x,max) @@ -7395,6 +8209,9 @@ function SpecterCard(cards,min,max,id,c,minTargets,maxTargets,triggeringID,trigg if id == 22653490 then --Chidori return SpecterChidoriTarget(cards) end + if id == 82633039 then --Castel + return SpecterCastelTarget(cards,min,max) + end if SpecterGlobalMaterial then SpecterGlobalMaterial = nil return SpecterOnSelectMaterial(cards,min,max) @@ -7411,6 +8228,15 @@ function SpecterCard(cards,min,max,id,c,minTargets,maxTargets,triggeringID,trigg end end end]] + for i=1,Duel.GetCurrentChain() do + e = Duel.GetChainInfo(i, CHAININFO_TRIGGERING_EFFECT) + if (Duel.GetOperationInfo(i,CATEGORY_TOGRAVE) + or Duel.GetOperationInfo(i,CATEGORY_HANDES) + or Duel.GetOperationInfo(i,CATEGORY_DRAW)) + and e:GetHandlerPlayer()==1-player_ai then + return SpecterMiscDiscardTarget(cards) + end + end return nil end @@ -7918,6 +8744,43 @@ function SpecterBattleCommand(cards,activatable) return nil end +function SpecterYesNo(description_id) + local result = nil + if description_id == 30 then + local cards = nil + local attacker = GetAttacker() + local attack = 0 + if attacker then + cards = {attacker} + ApplyATKBoosts(cards) + attacker = cards[1] + attack = attacker.attack + end + cards=OppMon() + if #cards == 0 then + --return 1 + end + if FilterAffected(attacker,EFFECT_DIRECT_ATTACK) then + return 1 + end + ApplyATKBoosts(cards) + if CanWinBattle(attacker,cards) then + GlobalCurrentAttacker = attacker.cardid + GlobalAIIsAttacking = true + return 1 + else + return 0 + end + end + for i=1,Duel.GetCurrentChain() do + e = Duel.GetChainInfo(i, CHAININFO_TRIGGERING_EFFECT) + if e and e:GetHandler():GetCode()==69402394 then + return 0 + end + end + return nil +end + SpecterPriorityList={ -- Priority list for your cards. You want to add all cards in your deck here, -- or at least all cards you want to enable the Add function for. diff --git a/ai/decks/MegaMonarch.lua b/ai/decks/MegaMonarch.lua index 96cff71a..1dcbba71 100644 --- a/ai/decks/MegaMonarch.lua +++ b/ai/decks/MegaMonarch.lua @@ -41,6 +41,7 @@ MegaMonarchActivateBlacklist={ 69230391, -- Mega Thestalos 87288189, -- Mega Caius 09748752, -- Caius +57666212, -- Kuraz 95993388, -- Landrobe 22382087, -- Garum @@ -57,8 +58,10 @@ MegaMonarchActivateBlacklist={ 19870120, -- March 61466310, -- Return 84171830, -- Dominion +99940363, -- Frost Blast 54241725, -- Original +18235309, -- Escalation } MegaMonarchSummonBlacklist={ 96570609, -- Aither @@ -66,6 +69,7 @@ MegaMonarchSummonBlacklist={ 69230391, -- Mega Thestalos 87288189, -- Mega Caius 09748752, -- Caius +57666212, -- Kuraz 95993388, -- Landrobe 22382087, -- Garum @@ -82,8 +86,10 @@ MegaMonarchSetBlacklist={ 19870120, -- March 61466310, -- Return 84171830, -- Dominion +99940363, -- Frost Blast 54241725, -- Original +18235309, -- Escalation } MegaMonarchRepoBlacklist={ } @@ -288,19 +294,71 @@ end function ThestalosCond(loc,c) return true end - +function FrostBlastFilter(c) + return FilterPosition(c,POS_FACEDOWN) + and Affected(c,TYPE_SPELL) + and Targetable(c,TYPE_SPELL) + and ShouldRemove(c) +end +function FrostBlastCond(loc,c) + if loc == PRIO_TOHAND then + return CardsMatchingFilter(AIMon(),MonarchMonsterFilter)>0 + and CardsMatchingFilter(OppField(),FrostBlastFilter)>0 + and NotNegated(c) + end + if loc == PRIO_TOGRAVE then + return CardsMatchingFilter(AIGrave(),MonarchFilter)>0 + and CardsMatchingFilter(OppField(),FrostBlastFilter)>0 + end + return true +end +function EscalationCond(loc,c) + if loc == PRIO_TOHAND then + return not HasID(AICards(),c.id,true) + and TributesAvailable(true)>0 + and (CardsMatchingFilter(AIHand(),MonarchMonsterFilter,96570609)>0 -- Aither + or HasID(AIMon(),96570609,true) and CardsMatchingFilter(AIMon(),MonarchMonsterFilter)>1) + end + return true +end +function KurazFilter(c,prio) -- destroy opponent's cards + return Affected(c) + and Targetable(c) + and DestroyFilterIgnore(c) + and ShouldRemove(c) + and (not prio or FilterPriorityTarget(c)) +end +function KurazFilter2(c) -- destroy own cards + return Affected(c) + and Targetable(c) + and (CardsMatchingFilter(AIField(),MonarchMonsterFilter,c)>0 + and not MonarchMonsterFilter(c,57666212) -- Kuraz + or not MonarchMonsterFilter(c)) + and (c.id~=84171830 or HasID(AIHand(),84171830,true)) -- Dominion +end +function KurazCond(loc,c) + if loc == PRIO_TOFIELD then + return CardsMatchingFilter(OppField(),KurazFilter,true)>0 + or CardsMatchingFilter(AIField(),KurazFilter2)>0 + end + if loc == PRIO_TOGRAVE then + return FilterLocation(c,LOCATION_MZONE) + end + return true +end MegaMonarchPriorityList={ --[12345678] = {1,1,1,1,1,1,1,1,1,1,XXXCond}, -- Format -- MegaMonarch -[96570609] = {7,4,7,2,1,1,1,1,1,1,AitherCond}, -- Aither -[23064604] = {8,2,8,3,8,5,1,1,1,1,ErebusCond}, -- Erebus +[96570609] = {8,4,8,2,1,1,1,1,1,1,AitherCond}, -- Aither +[23064604] = {7,2,7,3,8,5,1,1,1,1,ErebusCond}, -- Erebus [69230391] = {5,2,5,1,1,1,1,1,1,1,MegaThestalosCond}, -- Mega Thestalos [87288189] = {6,3,6,1,1,1,1,1,1,1,MegaCaiusCond}, -- Mega Caius [09748752] = {1,1,4,1,1,1,1,1,1,1,CaiusCond}, -- Caius [26205777] = {1,1,3,1,1,1,1,1,1,1,ThestalosCond}, -- Thestalos +[57666212] = {1,1,9,1,7,1,1,1,1,1,KurazCond}, -- Kuraz [95993388] = {6,1,5,1,7,4,1,1,1,1,LandrobeCond}, -- Landrobe [22382087] = {5,1,6,1,8,3,1,1,1,1,GarumCond}, -- Garum @@ -310,16 +368,18 @@ MegaMonarchPriorityList={ [22842126] = {4,1,1,1,8,1,3,1,1,1,PandeityCond}, -- Pandeity [02295440] = {1,1,1,1,1,1,1,1,1,1,nil}, -- One for one [32807846] = {1,1,1,1,1,1,1,1,1,1,nil}, -- RotA -[33609262] = {10,2,1,1,6,1,8,1,8,2,TenacityCond}, -- Tenacity +[33609262] = {10,2,1,1,6,1,8,1,8,2,TenacityCond}, -- Tenacity [81439173] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Foolish [05318639] = {1,1,1,1,1,1,1,1,1,1,nil}, -- MST [79844764] = {5,2,1,1,5,1,5,1,6,2,StormforthCond}, -- Stormforth [19870120] = {7,1,1,1,1,1,6,1,6,2,MarchCond}, -- March [61466310] = {3,1,1,1,3,1,6,1,6,2,ReturnCond}, -- Return [84171830] = {9,1,1,1,2,1,7,1,7,2,DominionCond}, -- Dominion +[99940363] = {4,1,1,1,5,1,1,1,0,0,FrostBlastCond}, -- Frost Blast [54241725] = {6,1,1,1,9,1,4,1,9,1,OriginalCond}, -- Original [48716527] = {3,1,1,1,4,1,6,1,6,2,nil}, -- Erupt +[18235309] = {8,1,1,1,1,1,1,1,7,1,EscalationCond}, -- Escalation } function TributeCountM(mega) @@ -452,6 +512,7 @@ function TributeSummonsM(tributes,mode) if (tributes == 1 or tributes == 0) and (c.id==09748752 and SummonCaius(c,mode) or c.id==26205777 and SummonThestalos(c,mode) + or c.id==57666212 and SummonKuraz(c,mode) or (c.level==6 or HasIDNotNegated(AICards(),84171830,true,FilterOPT)) and (c.id==23064604 and SummonErebus(c,mode,true) or c.id==96570609 and SummonAither(c,mode,true) @@ -732,6 +793,50 @@ function UseOneforone(c,mode) end return false end +function SummonKuraz(c,mode) + if mode == 1 + and NotNegated(c) + --and (CardsMatchingFilter(OppField(),KurazFilter,true)>0 + --or CardsMatchingFilter(AIField(),KurazFilter2)>0 + then + return true + end + if mode == 2 + and (CardsMatchingFilter(OppField(),StormforthFilter,KurazFilter)>0 + or CardsMatchingFilter(AIField(),KurazFilter2)>0) + then + return true + end + if mode == 3 + and NotNegated(c) + and (CardsMatchingFilter(OppField(),KurazFilter,true)>0 + or CardsMatchingFilter(AIField(),KurazFilter2)>1) + then + return true + end +end +function UseFrostBlast(c,mode) + if mode == 1 -- regular use + and (FilterLocation(c,LOCATION_HAND) or FilterLocation(c,LOCATION_SZONE)) + and CardsMatchingFilter(OppField(),FrostBlastFilter)>0 + then + return true + end + if mode == 2 -- from grave + and FilterLocation(c,LOCATION_GRAVE) + and CardsMatchingFilter(OppField(),FrostBlastFilter)>0 + then + return true + end +end +function SetOriginal(c,sum) + if HasID(sum,57666212,true,SummonKuraz,1) + and CardsMatchingFilter(AIField(),KurazFilter2)<3 + and not HasID(UseLists(AIST(),AIGrave()),c.id,true) + then + return true + end +end function MegaMonarchInit(cards) local Act = cards.activatable_cards local Sum = cards.summonable_cards @@ -742,6 +847,12 @@ function MegaMonarchInit(cards) GlobalSummonedCard = nil GlobalTenacity = nil GlobalAither = nil + if HasID(Act,99940363,UseFrostBlast,2) then + return Activate() + end + if HasID(Act,99940363,UseFrostBlast,1) then + return Activate() + end if HasIDNotNegated(Act,32807846) then -- RotA return COMMAND_ACTIVATE,CurrentIndex end @@ -817,6 +928,13 @@ function MegaMonarchInit(cards) if HasID(Act,23064604,UseErebus) then return COMMAND_ACTIVATE,CurrentIndex end + if HasID(SetST,54241725,SetOriginal,Sum) then + return SetSpell() + end + if HasIDNotNegated(Sum,57666212,SummonKuraz,1) then + GlobalSummonedCard=Sum[CurrentIndex] + return Summon() + end if HasIDNotNegated(Act,22842126,UsePandeity,2) then return COMMAND_ACTIVATE,CurrentIndex end @@ -847,11 +965,13 @@ function MegaMonarchInit(cards) for i=1,#SetST do local c = SetST[i] if c.id == 79844764 and not HasID(AIST(),79844764,true) - and (MonarchST>1 or HasID(AIHand(),96570609,true)) + and (MonarchST>1 or HasID(AIHand(),96570609,true) + or HasID(AICards(),18235309,true)) or c.id == 54241725 and not HasID(AIST(),54241725,true) and (MonarchST>1 or CardsMatchingFilter(AIGrave(),MonarchFilter)>2) - or c.id == 05318639 - or c.id == 32807846 + or c.id == 18235309 and not HasID(AIST(),18235309,true) -- Escalation + or c.id == 05318639 -- MST + or c.id == 32807846 -- RotA then result[#result+1]=i end @@ -942,6 +1062,9 @@ function AitherTarget(cards,c) return Add(cards,PRIO_BANISH) end if LocCheck(cards,LOCATION_DECK) then + if HasIDNotNegated(cards,57666212,SummonKuraz,3) then + return Add(cards,PRIO_TOFIELD,1,FilterID,57666212) + end return Add(cards) end end @@ -949,6 +1072,9 @@ function AitherTarget(cards,c) if FilterType(cards[1],TYPE_SPELL+TYPE_TRAP) then return Add(cards,PRIO_TOGRAVE,1,FilterLocation,LOCATION_DECK) else + if HasIDNotNegated(cards,57666212,SummonKuraz,3) then + return Add(cards,PRIO_TOFIELD,1,FilterID,57666212) + end return Add(cards) end end @@ -1049,6 +1175,69 @@ function OneforoneTarget(cards) end return Add(cards,PRIO_TOFIELD) end +function KurazTarget(cards,min,max,c) + local targets = SubGroup(OppField(),KurazFilter,true) + local targets2 = SubGroup(AIField(),KurazFilter2) + local result = {} + if #targets>1 then + return BestTargets(cards,max,TARGET_DESTROY) + end + if #targets==1 then + if #targets2>0 and max == 2 then + BestTargets(cards,1,TARGET_DESTROY) + result[1]=cards[1].index + BestTargets(cards,1,TARGET_DESTROY,FilterController,1) + result[2]=cards[1].index + return result + else + return BestTargets(cards,1,TARGET_DESTROY) + end + end + if #targets==0 and #targets2>0 then + if CardsMatchingFilter(AIMon(),MonarchMonsterFilter,c)==0 then + return BestTargets(cards,math.min(#targets2,max),TARGET_DESTROY,ExcludeID,c.id) + end + return BestTargets(cards,math.min(#targets2,max)) + end + return BestTargets(cards,min,TARGET_DESTROY) +end +function EscalationTarget(cards,min) + if LocCheck(cards,LOCATION_HAND) then + local mode = 1 + if GlobalStormforth == Duel.GetTurnCount() then + mode=2 + end + if HasID(cards,87288189,SummonMegaCaius,mode) then + return {CurrentIndex} + end + if HasID(cards,23064604,SummonErebus,1) then + return {CurrentIndex} + end + if HasID(cards,69230391,SummonMegaThestalos,1) then + return {CurrentIndex} + end + if HasID(cards,09748752,SummonCaius,mode) then + return {CurrentIndex} + end + if HasID(cards,26205777,SummonThestalos,1) then + return {CurrentIndex} + end + if HasID(cards,96570609,SummonAither,1) then + return {CurrentIndex} + end + if HasID(cards,57666212,SummonKuraz,mode) then + return {CurrentIndex} + end + return Add(cards,PRIO_TOFIELD,min) + end + return Add(cards,PRIO_TOGRAVE,min,FilterController,2) +end +function FrostBlastTarget(cards) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_BANISH) + end + return BestTargets(cards,1,TARGET_DESTROY) +end function MegaMonarchCard(cards,min,max,id,c) if not c and GlobalStormforth==Duel.GetTurnCount() and min==1 and max==1 and Duel.GetTurnPlayer()==player_ai @@ -1056,6 +1245,15 @@ function MegaMonarchCard(cards,min,max,id,c) then return StormforthTarget(cards) end + if id == 99940363 then + return FrostBlastTarget(cards) + end + if id == 18235309 then + return EscalationTarget(cards,min) + end + if id == 57666212 then + return KurazTarget(cards,min,max,c) + end if id == 96570609 then return AitherTarget(cards,c) end @@ -1130,8 +1328,20 @@ function ChainAither(c) GlobalAither=cards return true end + if CardsMatchingFilter(OppMon(),KurazFilter,true)>0 + and HasIDNotNegated(AIDeck(),57666212,true) + then + GlobalSummonedCard=c + return true + end + if Duel.CheckTiming(TIMING_MAIN_END) + and Duel.GetCurrentPhase(PHASE_MAIN2) + and HasIDNotNegated(AIDeck(),57666212,true,SummonKuraz,3) + then + GlobalSummonedCard=c + return true + end end - return false end function ChainErebus(c) @@ -1169,6 +1379,11 @@ function ChainOriginal(c) OPTSet(54241725) return true end + if HasIDNotNegated(AIST(),18235309,true,ChainEscalation) + then + OPTSet(54241725) + return true + end if RemovalCheckList(AIMon(),{CATEGORY_DESTROY,CATEGORY_TOGRAVE},nil,nil,nil,FilterID,95457011) and CardsMatchingFilter(AIBanish(),MonarchFilter)==0 and not ChainCheck(96570609,player_ai) @@ -1223,12 +1438,18 @@ function ChainStormforth(c) GlobalStormforth=Duel.GetTurnCount() return true end + if HasIDNotNegated(AIST(),18235309,true,ChainEscalation) + then + GlobalStormforth=Duel.GetTurnCount() + return true + end if Duel.GetTurnPlayer()==1-player_ai and (Duel.CheckTiming(TIMING_MAIN_END) and Duel.GetCurrentPhase(PHASE_MAIN1) or ChainCheck(54241725,player_ai,nil,FilterLocation,LOCATION_GRAVE) or ChainCheck(96570609,player_ai,nil,FilterLocation,LOCATION_HAND)) - and HasIDNotNegated(AIHand(),96570609,true) + and (HasIDNotNegated(AIHand(),96570609,true) + or HasIDNotNegated(AIST(),18235309,true,FilterOPT)) and CardsMatchingFilter(OppMon(),StormforthFilter)>0 then if TributesAvailable(true)==2 @@ -1240,12 +1461,14 @@ function ChainStormforth(c) GlobalStormforth=Duel.GetTurnCount() return true end - if ChainCheck(96570609,player_ai) - and TributesAvailable(true)>1 - then - GlobalStormforth=Duel.GetTurnCount() - return true - end + end + if (ChainCheck(96570609,player_ai) -- Aither + or ChainCheck(18235309,player_ai)) -- Escalation + and TributesAvailable(true)>0 + and CardsMatchingFilter(OppMon(),StormforthFilter)>0 + then + GlobalStormforth=Duel.GetTurnCount() + return true end return false end @@ -1278,7 +1501,62 @@ function ChainEidos(c) return true end end +function ChainKuraz(c) + local targets = SubGroup(OppField(),KurazFilter,true) + local targets2 = SubGroup(AIField(),KurazFilter2) + return #targets+#targets2>0 +end +function ChainEscalation(c,mode) + if RemovalCheckCard(c) + and CanTributeSummon() + then + OPTSet(c) + return true + end + if Duel.GetTurnPlayer()==player_ai then + return false + end + if ChainCheck(79844764,player_ai) then --Stormforth + return false + end + if GlobalStormforth==Duel.GetTurnCount() + and CanTributeSummon() + and CardsMatchingFilter(OppMon(),StormforthFilter)>0 + then + return true + end + local targets = RemovalCheckList(AIMon()) + if targets and #targets>0 + and CanTributeSummon() + then + GlobalCardMode = 1 + GlobalTragetSet(targets[1]) + OPTSet(c) + return true + end + if HasPriorityTarget(OppField()) + and CanTributeSummon() + then + OPTSet(c) + return true + end + if Duel.CheckTiming(TIMING_MAIN_END) + and CanTributeSummon() + then + OPTSet(c) + return true + end +end function MegaMonarchChain(cards) + if HasID(cards,79844764,ChainStormforth) then + return 1,CurrentIndex + end + if HasID(cards,18235309,ChainEscalation) then + return Chain() + end + if HasID(cards,57666212,ChainKuraz) then + return Chain() + end if HasID(cards,96570609,ChainAither) then return 1,CurrentIndex end @@ -1300,12 +1578,13 @@ function MegaMonarchChain(cards) if HasID(cards,54241725,ChainOriginal) then return 1,CurrentIndex end - if HasID(cards,79844764,ChainStormforth) then - return 1,CurrentIndex - end + return nil end function MegaMonarchEffectYesNo(id,card) + if id == 57666212 and ChainKuraz(card) then + return 1 + end if id == 96570609 and ChainAither(card) then return 1 end @@ -1460,6 +1739,7 @@ MegaMonarchAtt={ 69230391, -- Mega Thestalos 87288189, -- Mega Caius 09748752, -- Caius +57666212, -- Kuraz } MegaMonarchDef={ 95993388, -- Landrobe diff --git a/ai/decks/Mermail.lua b/ai/decks/Mermail.lua index 0596a67c..087aadc2 100644 --- a/ai/decks/Mermail.lua +++ b/ai/decks/Mermail.lua @@ -287,7 +287,7 @@ function DivaCond(c,loc) or FieldCheck(4)>1) and Duel.GetTurnPlayer()==player_ai and not NormalSummonCheck(player_ai)) - or not HasID(AICards(),21565445,true) + --or not HasID(AICards(),21565445,true) end if loc == PRIO_TRIBUTE then return FilterLocation(c,LOCATION_MZONE) @@ -1185,13 +1185,11 @@ function UseDweller(c,mode) end function ChainDweller(c,mode) if RemovalCheckCard(c) or NegateCheckCard(c) then - --print("Dweller removed, chaining") return true end if Duel.GetTurnPlayer()==1-player_ai and MatchupCheck(c.id) then - --print("Dweller matchup, chaining asap") return true end for i=1,Duel.GetCurrentChain() do @@ -1202,7 +1200,6 @@ function ChainDweller(c,mode) if Duel.GetOperationInfo(i,CATEGORY_TOGRAVE) or Duel.GetOperationInfo(i,CATEGORY_DECKDES) then - --print("dump or mill effect activated, chaining") return true end if Duel.GetOperationInfo(i,CATEGORY_SPECIAL_SUMMON) @@ -1211,7 +1208,6 @@ function ChainDweller(c,mode) or FilterSet(ec,0x46)) and not ec:IsCode(01845204) -- Instant Fusion then - --print("ritual or fusion summon, chaining") return true end end @@ -1226,7 +1222,6 @@ function ChainDweller(c,mode) if ex then local c = GetCardFromScript(cg:GetFirst()) if CurrentOwner(c)==2 then - --print(removal by AI, chaining") return true end end @@ -1238,7 +1233,6 @@ function ChainDweller(c,mode) if WinsBattle(aimon,oppmon) or WinsBattle(oppmon,aimon) and CardsEqual(c,aimon) then - --print("winning battle, chaining") return true end end diff --git a/ai/decks/Monarch.lua b/ai/decks/Monarch.lua index 768b1d1c..e711df16 100644 --- a/ai/decks/Monarch.lua +++ b/ai/decks/Monarch.lua @@ -107,7 +107,7 @@ function TreebornCond(loc,c) then return 9 elseif CardsMatchingFilter(cards,FilterID,12538374)==1 then - return 7 + --return 7 else return 5 end @@ -175,7 +175,16 @@ function FrogFilter(c,exclude) return IsSetCode(c.setcode,0x12) and (exclude == nil or c.id~=exclude) end function MonarchMonsterFilter(c,exclude) - return false --? + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return (FilterAttack(c,2400) or FilterAttack(c,2800)) + and FilterDefense(c,1000) and check end function TributeCount(mega) local result = 0 @@ -270,7 +279,9 @@ function StormforthFilter(c,filter) return not CardsEqual(c,card) and filter(card) end)>0 end - return Affected(c,TYPE_SPELL) and not FilterAffected(c,EFFECT_UNRELEASABLE_SUM) and check + return Affected(c,TYPE_SPELL) + and not FilterAffected(c,EFFECT_UNRELEASABLE_SUM) + and check end function UseStormforth(c) if CardsMatchingFilter(OppMon(),StormforthFilter)>0 @@ -475,6 +486,23 @@ function SummonVeiler(c,mode) end return false end +function SummonTreeborn(c,mode) + if mode==1 then + if CardsMatchingFilter(AIMon(),FilterTuner,1)==1 + and HasIDNotNegated(AIExtra(),50091196,true) -- Formula + and DualityCheck() + then + return true + end + if FieldCheck(1)>0 + and (HasIDNotNegated(AIExtra(),46895036,SummonDullahan,1) + or HasIDNotNegated(AIExtra(),46895036,SummonDullahan,2)) + then + return true + end + end + return false +end function SummonRonin(c,mode) local cards = UseLists(AIMon(),AIGrave(),AIMaterials()) if mode == 1 then @@ -736,7 +764,10 @@ function MonarchInit(cards) if HasID(SpSum,53334641,SummonAngel) then return COMMAND_SPECIAL_SUMMON,CurrentIndex end - if HasIDNotNegated(Sum,97268402,SummonVeiler,1) then + if HasID(Sum,12538374,SummonTreeborn,1) then + return COMMAND_SUMMON,CurrentIndex + end + if HasID(Sum,97268402,SummonVeiler,1) then return COMMAND_SUMMON,CurrentIndex end if HasID(SpSum,50091196,SummonFormula) then diff --git a/ai/decks/Nekroz.lua b/ai/decks/Nekroz.lua index 48fd962c..10fc452c 100644 --- a/ai/decks/Nekroz.lua +++ b/ai/decks/Nekroz.lua @@ -24,7 +24,7 @@ AddPriority( [47106439] = {1,1,1,1,1,1,1,1,1,1,VisionCond}, -- Gishki Vision --[78868119] = {1,1,1,1,1,1,1,1,1,1,DivaCond}, -- Deep Sea Diva [08903700] = {3,1,1,1,9,2,1,1,1,1,ReleaserCond}, -- Djinn Releaser of Rituals -[95492061] = {10,1,1,1,5,1,5,1,1,1,ManjuCond}, -- Manju of the Ten Thousand Hands +[95492061] = {10,1,1,1,5,1,5,1,5,1,ManjuCond}, -- Manju of the Ten Thousand Hands [23401839] = {9,1,1,1,6,1,6,1,1,1,SenjuCond}, -- Senju of the Thousand Hands [13974207] = {3,1,1,1,6,1,1,1,1,1,SekkaCond}, -- Denkou Sekka [30312361] = {2,1,1,1,7,1,1,1,1,1,nil}, -- Phantom of Chaos @@ -409,6 +409,9 @@ function ManjuCond(loc,c) if loc == PRIO_TRIBUTE then return FilterLocation(c,LOCATION_MZONE) end + if loc == PRIO_BANISH then + return FilterLocation(c,LOCATION_GRAVE) + end return true end function SenjuCond(loc,c) diff --git a/ai/decks/NobleKnight.lua b/ai/decks/NobleKnight.lua index f496f51e..2ead2e5b 100644 --- a/ai/decks/NobleKnight.lua +++ b/ai/decks/NobleKnight.lua @@ -247,7 +247,10 @@ function MedrautCond(loc,c) return false end if loc == PRIO_BANISH then - return HasID(AIMon(),68618157,true) + if HasID(AIMon(),68618157,true) then + return true + end + return false end return true end diff --git a/ai/decks/Qliphort.lua b/ai/decks/Qliphort.lua index 6849b19a..cc6b3c29 100644 --- a/ai/decks/Qliphort.lua +++ b/ai/decks/Qliphort.lua @@ -178,7 +178,10 @@ function OddEyesCond(loc,c) end function LynxCond(loc,c) if loc == PRIO_TOHAND then - return HasID(UseLists({AIHand(),AIST()}),65518099,true) + if HasID(UseLists({AIHand(),AIST()}),65518099,true) then + return true + end + return false end return true end diff --git a/ai/decks/Raidraptor.lua b/ai/decks/Raidraptor.lua new file mode 100644 index 00000000..e8d13558 --- /dev/null +++ b/ai/decks/Raidraptor.lua @@ -0,0 +1,2205 @@ +--[[ +83236601, -- Tribute Lanius +60950180, -- Sharp Lanius +10194329, -- Avenge Vulture +53251824, -- Vanishing Lanius +96345188, -- Mimikry Lanius +05929801, -- Fuzzy Lanius +31314549, -- Singing Lanius +46589034, -- Pain Lanius +97219708, -- Last Strix + +01475311, -- Allure +23581825, -- Soul Shave Force +58988903, -- Skip Force +43898403, -- Twin Twister +94145683, -- Swallow's Nest +08559793, -- RR Nest + +21648584, -- Readiness +53567095, -- Icarus +05851097, -- Vanity +40605147, -- Strike +66994718, -- Gust +84749824, -- Warning + +62541668, -- Seven Sins +86221741, -- Zapdos +23603403, -- Satellite Cannon +10443957, -- CyDra Infinity +81927732, -- Revolution Falcon +56832966, -- Utopia Lightning +84013237, -- Utopia +82633039, -- Castel +96592102, -- Burner Falcon +73347079, -- Force Strix +73887236, -- Rise Falcon +65305468, -- F0 +]] + +function RaidraptorStartup(deck) + deck.Init = RaidraptorInit + deck.Card = RaidraptorCard + deck.Chain = RaidraptorChain + deck.EffectYesNo = RaidraptorEffectYesNo + deck.Position = RaidraptorPosition + deck.YesNo = RaidraptorYesNo + deck.BattleCommand = RaidraptorBattleCommand + deck.AttackTarget = RaidraptorAttackTarget + deck.AttackBoost = RaidraptorAttackBoost + deck.Tribute = RaidraptorTribute + deck.Option = RaidraptorOption + deck.ChainOrder = RaidraptorChainOrder + --[[ + deck.Sum + deck.DeclareCard + deck.Number + deck.Attribute + deck.MonsterType + ]] + deck.ActivateBlacklist = RaidraptorActivateBlacklist + deck.SummonBlacklist = RaidraptorSummonBlacklist + deck.RepositionBlacklist = RaidraptorRepoBlacklist + deck.SetBlacklist = RaidraptorSetBlacklist + deck.Unchainable = RaidraptorUnchainable + --[[ + + ]] + deck.PriorityList = RaidraptorPriorityList +end +RaidraptorIdentifier = 96345188 -- Mimikry Lanius +DECK_RAIDRAPTOR = NewDeck("Raidraptor",RaidraptorIdentifier,RaidraptorStartup) +RaidraptorActivateBlacklist={ +83236601, -- Tribute Lanius +60950180, -- Sharp Lanius +10194329, -- Avenge Vulture +53251824, -- Vanishing Lanius +96345188, -- Mimikry Lanius +05929801, -- Fuzzy Lanius +31314549, -- Singing Lanius +46589034, -- Pain Lanius +97219708, -- Last Strix + +23581825, -- Soul Shave Force +58988903, -- Skip Force +94145683, -- Swallow's Nest +08559793, -- RR Nest +01475311, -- Allure + +21648584, -- Readiness + +62541668, -- Seven Sins +86221741, -- Zapdos +23603403, -- Satellite Cannon +81927732, -- Revolution Falcon +96592102, -- Burner Falcon +73347079, -- Force Strix +73887236, -- Rise Falcon +} +RaidraptorSummonBlacklist={ +83236601, -- Tribute Lanius +60950180, -- Sharp Lanius +10194329, -- Avenge Vulture +53251824, -- Vanishing Lanius +96345188, -- Mimikry Lanius +05929801, -- Fuzzy Lanius +31314549, -- Singing Lanius +46589034, -- Pain Lanius +97219708, -- Last Strix + +62541668, -- Seven Sins +86221741, -- Zapdos +23603403, -- Satellite Cannon +81927732, -- Revolution Falcon +96592102, -- Burner Falcon +73347079, -- Force Strix +73887236, -- Rise Falcon +} +RaidraptorSetBlacklist={ +23581825, -- Soul Shave Force +58988903, -- Skip Force +} +RaidraptorRepoBlacklist={ +73347079, -- Force Strix +81927732, -- Revolution Falcon +} +RaidraptorUnchainable={ +94145683, -- Swallow's Nest +43898403, -- Twin Twister +53567095, -- Icarus +21648584, -- Readiness +97219708, -- Last Strix +} +function RaidraptorFilter(c,exclude) + local check = true + if exclude then + if type(exclude)=="table" then + check = not CardsEqual(c,exclude) + elseif type(exclude)=="number" then + check = (c.id ~= exclude) + end + end + return FilterSet(c,0xba) and check +end +function RaidraptorMonsterFilter(c,exclude) + return FilterType(c,TYPE_MONSTER) + and RaidraptorFilter(c,exclude) +end +function RaidraptorXYZFilter(c,rank) + return RaidraptorMonsterFilter(c) + and FilterType(c,TYPE_XYZ) + and (not rank or FilterRank(c,rank)) +end +function RaidraptorNonXYZFilter(c,exclude) + return RaidraptorMonsterFilter(c,exclude) + and not FilterType(c,TYPE_XYZ) +end +function FuzzyGraveFilter(c) -- TODO: possible conflict + return FilterID(c,05929801) -- Fuzzy Lanius + and c.turnid == Duel.GetTurnCount() + and OPTCheck(c.id) + and OPTCheck(c.id+1) +end +function RaidraptorSearchAvailable(c,exclude) + local result=0 + if HasIDNotNegated(AICards(),08559793,true,FilterOPT,true) + then + result=result+1 + end + if CardsMatchingFilter(AIGrave(),MimikryGraveFilter)>0 + then + result=result+1 + end + if HasIDNotNegated(AIMon(),73347079,true,FilterOPT) + then + result=result+1 + end + if FieldCheck(4)>1 and HasIDNotNegated(AIExtra(),73347079,true) + then + result=result+1 + end + if CardsMatchingFilter(AIGrave(),FuzzyGraveFilter)>0 + then + result=result+1 + end + if result>0 then return result end + return false +end +function SummonSevenSins(c,mode) + if mode == 0 then + return MP2Check() + and FilterSummonRestriction(c) + end + if mode == 1 + and HasID(AIMon(),86221741,true,Negated) + then + return true + end +end +function SummonLastStrix(c,mode) + if not DualityCheck() + or HasIDNotNegated(AIMon(),c.id,true) + then + return false + end + if (mode == 1 or mode == 0) + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and CardsMatchingFilter(AIExtra(),RaidraptorXYZFilter,8)>0 + and HasID(AIExtra(),86221741,true) -- Zapdos + then + return true + end + if (mode == 2 or mode == 0) + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and CardsMatchingFilter(AIExtra(),RaidraptorXYZFilter,4)>0 + and HasID(AIExtra(),81927732,true,SummonRevolutionFalcon,2) + then + return true + end + if (mode == 3 or mode == 0) + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and CardsMatchingFilter(AIExtra(),RaidraptorXYZFilter,6)>0 + and HasID(AIExtra(),23603403,true,SummonSatelliteCannon,1) + then + return true + end + if (mode == 4 or mode == 0) + and CardsMatchingFilter(AIExtra(),RaidraptorXYZFilter,10)>0 + and HasID(AIExtra(),62541668,true,SummonSevenSins,0) + then + return true + end +end +function UseLastStrix(c,mode) + if mode == 1 + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and CardsMatchingFilter(AIExtra(),RaidraptorXYZFilter,8)>0 + and HasID(AIExtra(),86221741,true) -- Zapdos + and MP2Check() + then + GlobalCardMode = 1 + OPTSet(c.id) + return true + end + if mode == 2 + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and CardsMatchingFilter(AIExtra(),RaidraptorXYZFilter,4)>0 + and HasID(AIExtra(),81927732,true,SummonRevolutionFalcon,2) + then + GlobalCardMode = 2 + OPTSet(c.id) + return true + end + if mode == 3 + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and CardsMatchingFilter(AIExtra(),RaidraptorXYZFilter,6)>0 + and HasID(AIExtra(),23603403,true,SummonSatelliteCannon,1) + and MP2Check() + then + GlobalCardMode = 3 + OPTSet(c.id) + return true + end + if mode == 4 + and CardsMatchingFilter(AIExtra(),RaidraptorXYZFilter,10)>0 + and HasID(AIExtra(),62541668,true,SummonSevenSins,0) + and MP2Check() + then + GlobalCardMode = 4 + OPTSet(c.id) + return true + end +end +function SkipForceFilter(c,rank) + return RaidraptorXYZFilter(c,rank) + and (Affected(c,TYPE_SPELL) + and Targetable(c,TYPE_SPELL) + and not (c.id == 96592102 + and CanWinBattle(c,OppMon()) + and BattlePhaseCheck() + and c.xyz_material_count>0 + and NotNegated(c)) + or FilterLocation(c,LOCATION_GRAVE) + and FilterRevivable(c)) +end +function SkipForceFilter2(c,rank) + return SkipForceFilter(c,rank) + and Negated(c) + and c.xyz_material_count==0 +end +function SkipForceFilter3(c,rank) + return SkipForceFilter(c,rank) + and c.xyz_material_count==0 +end +GlobalSkipForceRank = nil +function UseSkipForce(c,mode) + if FilterLocation(c,LOCATION_HAND+LOCATION_SZONE) then + if mode == 1 + and CardsMatchingFilter(AIMon(),SkipForceFilter3,8)>0 + and HasIDNotNegated(AIExtra(),86221741,true) -- Zapdos + then + GlobalSkipForceRank = 8 + return true + end + if mode == 2 + and CardsMatchingFilter(AIMon(),SkipForceFilter,4)>0 + and OppHasStrongestMonster() + and HasIDNotNegated(AIExtra(),81927732,true,SummonRevolutionFalcon,0) + then + GlobalSkipForceRank = 4 + return true + end + if mode == 3 + and CardsMatchingFilter(AIMon(),SkipForceFilter3,6)>0 + and HasIDNotNegated(AIExtra(),23603403,true,SummonSatelliteCannon,1) + then + GlobalSkipForceRank = 6 + return true + end + if mode == 4 + and CardsMatchingFilter(AIMon(),SkipForceFilter,4)>0 + and OppHasStrongestMonster() + and HasIDNotNegated(AIExtra(),81927732,true,SummonRevolutionFalcon,3) + then + GlobalSkipForceRank = 4 + return true + end + end +end +function UseSkipForceGrave(c,mode) + if FilterLocation(c,LOCATION_GRAVE) then + if mode == 1 + and CardsMatchingFilter(AIGrave(),SkipForceFilter,10)>0 + then + GlobalSkipForceRank = 10 + GlobalCardMode = 1 + return true + end + if mode == 2 + and HasIDNotNegated(AICards(),c.id,true) + and CardsMatchingFilter(AIGrave(),SkipForceFilter,4)>0 + and HasIDNotNegated(AIExtra(),81927732,true,SummonRevolutionFalcon,0) + then + GlobalSkipForceRank = 4 + GlobalCardMode = 1 + return true + end + if mode == 3 + and HasIDNotNegated(AICards(),c.id,true) + and CardsMatchingFilter(AIGrave(),SkipForceFilter,6)>0 + and HasIDNotNegated(AIExtra(),23603403,true,SummonSatelliteCannon,1) + then + GlobalSkipForceRank = 6 + GlobalCardMode = 1 + return true + end + if mode == 4 + and HasIDNotNegated(AICards(),c.id,true) + and CardsMatchingFilter(AIGrave(),SkipForceFilter,8)>0 + and HasIDNotNegated(AIExtra(),86221741,true,SummonZapdos,1) + then + GlobalSkipForceRank = 8 + GlobalCardMode = 1 + return true + end + if mode == 5 + and CardsMatchingFilter(AIGrave(),SkipForceFilter,6)>0 + and OppHasStrongestMonster() + and CardsMatchingFilter(OppMon(),RevolutionFalconFilter,FindID(81927732,AIGrave()))>0 + then + GlobalSkipForceRank = 6 + GlobalCardMode = 1 + return true + end + if mode == 6 + and CardsMatchingFilter(AIGrave(),SkipForceFilter,8)>0 + and OppHasStrongestMonster() + and OppGetStrongestAttDef()<3000 + then + GlobalSkipForceRank = 8 + GlobalCardMode = 1 + return true + end + end +end +function MimikryGraveFilter(c) + return FilterID(c,96345188) -- Mimikry Lanius + and c.turnid == Duel.GetTurnCount() + and OPTCheck(c.id) +end +function SummonTributeLanius(c,mode) + if mode == 1 + and HasIDNotNegated(AIDeck(),96345188,true,FilterOPT,true) -- Mimikry + and CardsMatchingFilter(AIGrave(),MimikryGraveFilter)==0 + and MacroCheck() + then + return true + end + if mode == 2 + and HasID(AIDeck(),05929801,true,FilterOPT,true) -- Fuzzy + and not HasID(AIHand(),05929801,true) + and DualityCheck() + and MacroCheck() + then + return true + end +end +function UseTributeLanius(c,mode) + if (mode == 0 or mode == 1) + and HasID(AIDeck(),96345188,true,FilterOPT,true) -- Mimikry + and MacroCheck() + then + if mode == 1 then OPTSet(c.id) end + return true + end + if mode == 2 + and HasID(AIDeck(),05929801,true,FilterOPT,05929802) -- Fuzzy + and not HasAccess(05929801) -- Fuzzy + and MacroCheck() + then + OPTSet(c.id) + return true + end +end +function SummonVanishingLanius(c,mode) + if mode == 1 + and (HasIDNotNegated(AIHand(),83236601,true,UseTributeLanius,0) + or HasIDNotNegated(AIHand(),96345188,true)) + and NotNegated(c) + and DualityCheck() + then + return true + end + if mode == 2 + and HandCheck(4,RaidraptorMonsterFilter,05929801)>1 + and NotNegated(c) + and DualityCheck() + then + return true + end + if mode == 3 + and HasIDNotNegated(AIHand(),97219708,true) + and HasIDNotNegated(AICards(),58988903,true) + and OPTCheck(97219708) + and not HasIDNotNegated(AIMon(),97219708,true) + then + return true + end +end +function UseVanishingLanius(c,mode) + if mode == 1 + --and FieldCheck(4)==1 + and HandCheck(4)>0 + then + return true + end + if mode == 2 + and HasIDNotNegated(AIHand(),97219708,true) + and HasIDNotNegated(AICards(),58988903,true) + and OPTCheck(97219708) + and not HasIDNotNegated(AIMon(),97219708,true) + then + return true + end +end +function SharpLaniusFilter(c,source) + if Affected(c,TYPE_MONSTER,4) + and Targetable(c,TYPE_MONSTER) + and FilterPosition(c,POS_FACEUP_ATTACK) + and (c.attack>=AIGetStrongestAttack() + and c.defense800 + and c.attack>AIGetStrongestAttack() + then + return true + end +end +function UseSharpLanius(c,mode) + if mode == 1 + and c.description == c.id*16+1 + then + return true + end + if mode == 2 + and c.description == c.id*16 + and CardsMatchingFilter(OppMon(),SharpLaniusFilter,c)>0 + then + return true + end + if mode == 3 + and c.description == c.id*16 + and CardsMatchingFilter(AIGrave(),SharpLaniusFilter3)>0 + and DualityCheck() + and CardsMatchingFilter(OppMon(),SharpLaniusFilter4,c)>0 + then + return true + end +end +function SummonSharpLanius(c,mode) + if mode == 1 + and BattlePhaseCheck() + and (#OppMon()==0 or CardsMatchingFilter(OppMon(),SharpLaniusFilter2,c)>0) + and CardsMatchingFilter(AIGrave(),SharpLaniusFilter3)>0 + and DualityCheck() + then + return true + end + if mode == 2 + and BattlePhaseCheck() + and (#OppMon()==0 or CardsMatchingFilter(OppMon(),SharpLaniusFilter2,c)>0) + then + return true + end + if mode == 3 + and BattlePhaseCheck() + and CardsMatchingFilter(OppMon(),SharpLaniusFilter4,c)>0 + then + return true + end +end +function UseFuzzyLanius(c,mode) + if mode == 1 + and FieldCheck(4) == 1 + then + OPTSet(c.id) + GlobalSummonRestriction = 0xba + return true + end + if mode == 2 + and HasID(AIHand(),46589034,true) -- Pain Lanius + and FieldCheck(4)==0 + then + OPTSet(c.id) + GlobalSummonRestriction = 0xba + return true + end + if mode == 3 + and HasID(AIHand(),31314549,true) -- Singing Lanius + and CardsMatchingFilter(AIMon(),FilterType,TYPE_XYZ)>0 + and FieldCheck(4)==0 + then + OPTSet(c.id) + GlobalSummonRestriction = 0xba + return true + end + if mode == 4 + and CardsMatchingFilter(AIMon(),RaidraptorMonsterFilter)==1 + and HasIDNotNegated(AICards(),08559793,true,FilterOPT,true) -- RR Nest + then + OPTSet(c.id) + GlobalSummonRestriction = 0xba + return true + end + if mode == 5 + and HasIDNotNegated(AIExtra(),73887236,true,SummonRiseFalcon,1) + and FieldCheck(4)==2 + and DualityCheck() + then + OPTSet(c.id) + GlobalSummonRestriction = 0xba + return true + end +end +function SummonSingingLanius(c,mode) + if mode == 1 + and FieldCheck(4) == 1 + then + return true + end + if mode == 2 + and HasID(AIHand(),46589034,true) -- Pain + and FieldCheck(4)==0 + then + return true + end + if mode == 3 + and HasID(AIHand(),05929801,true,FilterOPT,true) -- Fuzzy + and FieldCheck(4)==0 + then + return true + end + if mode == 4 + and HasIDNotNegated(AIExtra(),73887236,true,SummonRiseFalcon,1) + and FieldCheck(4)==2 + and DualityCheck() + then + return true + end + if mode == 5 + and HasIDNotNegated(AICards(),08559793,true,FilterOPT,true) + and CardsMatchingFilter(AIMon(),RaidraptorMonsterFilter)<2 + then + return true + end +end +function UseMimikryLanius(c,mode) + if mode == 1 + and FilterLocation(c,LOCATION_GRAVE) + then + OPTSet(c.id) + return true + end +end +function UseRRNest(c,mode) + if mode == 1 + and (FilterLocation(c,LOCATION_HAND) + or FilterPosition(c,POS_FACEDOWN)) + and not HasIDNotNegated(AIST(),c.id,true,FilterPosition,POS_FACEUP) + and CardsMatchingFilter(AIMon(),RaidraptorMonsterFilter)>1 + then + return true + end + if mode == 2 + and FilterLocation(c,LOCATION_SZONE) + and FilterPosition(c,POS_FACEUP) + then + OPTSet(c.id) + return true + end + if mode == 3 + and HasIDNotNegated(AICards(),66994718,true) + then + return true + end +end +function UsePainLanius(c,mode) + local dmg = 999999 + for i,target in pairs(AIMon()) do + if RaidraptorMonsterFilter(target) + and FilterLevel(target,4) + then + dmg = math.min(dmg,target.attack,target.defense) + end + end + if dmg >= AI.GetPlayerLP(1) then + return false + end + if mode == 1 + and FieldCheck(4)==1 + then + return true + end + if mode == 2 + and HasID(AIHand(),10194329,true) -- Avenge + then + return true + end + if mode == 3 + and HasIDNotNegated(AIExtra(),73887236,true,SummonRiseFalcon,1) + and FieldCheck(4)==2 + and DualityCheck() + then + return true + end +end +function SummonPainLanius(c,mode) + if mode == 1 + and #AIMon()==0 + and HasIDNotNegated(AICards(),94145683,true) -- Swallow's Nest + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and HasIDNotNegated(AIDeck(),97219708,true,SummonLastStrix,0) -- Last Strix + and DualityCheck() + then + return true + end +end +function SoulShaveFilter(c,rank) + return RaidraptorXYZFilter(c,4) + and FilterRevivable(c) +end +function UseSoulShaveForce(c,mode) + if mode == 1 + and CardsMatchingFilter(AIGrave(),SoulShaveFilter,4)>0 + and HasIDNotNegated(AIExtra(),10443957,true,SummonInfinityRR,1) -- CyDra Infinity + then + return true + end + if mode == 2 + and CardsMatchingFilter(AIGrave(),SoulShaveFilter,4)>0 + and HasIDNotNegated(AIExtra(),81927732,true,SummonRevolutionFalcon,2) -- Revolution Falcon + then + return true + end +end +function SummonForceStrix(c,mode) + if mode == 1 + and TurnEndCheck() + then + return true + end + if mode == 2 + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and (HasIDNotNegated(AIExtra(),81927732,true,SummonRevolutionFalcon,0) + or HasIDNotNegated(AIExtra(),81927732,true,SummonRevolutionFalcon,3)) + then + return true + end +end +function UseForceStrix(c,mode) + if mode == 1 + then + OPTSet(c) + return true + end +end +function SummonRaptor(c,mode) + if mode == 2 + and FieldCheck(4)==1 + and DualityCheck() + then + return true + end + if mode == 3 + and c.id~=05929801 + and HasID(AIHand(),05929801,true,OPTCheck,true) -- Fuzzy + and FieldCheck(4)==0 + and DualityCheck() + and SpaceCheck()>1 + then + return true + end + if mode == 4 + and HasIDNotNegated(AICards(),08559793,true,OPTCheck,true) -- Nest + and CardsMatchingFilter(AIMon(),RaidraptorMonsterFilter)==1 + then + return true + end + if mode == 5 + and c.id~=46589034 + and HasID(AIHand(),46589034,true,OPTCheck,true) -- Pain + and FieldCheck(4)==0 + and DualityCheck() + and SpaceCheck()>1 + then + return true + end + if mode == 6 + and HasIDNotNegated(AIExtra(),73887236,true,SummonRiseFalcon,1) + and FieldCheck(4)==2 + and DualityCheck() + then + return true + end + if mode == 1 + and c.id~=46589034 -- Pain + and HasID(AIHand(),46589034,true,OPTCheck,true) -- Pain + and c.id~=10194329 -- Avenge + and HasID(AIHand(),10194329,true,OPTCheck,true) -- Avenge + and FieldCheck(4)==0 + and DualityCheck() + and SpaceCheck()>2 + then + return true + end + if mode == 7 + and #AIMon()==0 + and HasIDNotNegated(AICards(),94145683,true) + and DualityCheck() + then + return true + end + if mode == 8 + and #AIMon()==0 + and (#OppMon()==0 + or OppHasStrongestMonster() + and CanWinBattle(c,OppMon())) + and c.attack>=1500 + then + return true + end +end +function SummonMimikry(c,mode) + if mode == 1 + and HasIDNotNegated(AIST(),53567095,true) + and DestroyCheck(OppField())>1 + then + return true + end +end +function SummonFuzzy(c,mode) + if mode == 1 + and HasIDNotNegated(AIST(),53567095,true) + and DestroyCheck(OppField())>1 + then + return true + end +end +function SetRaptor(c,mode) + if mode == 1 + and #AIMon()==0 + and HasBackrow() + then + return true + end +end +Raptors = { +83236601, -- Tribute Lanius +96345188, -- Mimikry Lanius +60950180, -- Sharp Lanius +10194329, -- Avenge Vulture +53251824, -- Vanishing Lanius +05929801, -- Fuzzy Lanius +31314549, -- Singing Lanius +--46589034, -- Pain Lanius +--97219708, -- Last Strix +} +function BladeBurnerFinishFilter(c,source) + return CanFinishGame(source,c,4000) +end +function SummonBladeBurner(c,mode) + if AI.GetPlayerLP(2)-AI.GetPlayerLP(1)>=3000 + then + c.attack=4000 + end + if mode == 4 + and BattlePhaseCheck() + and c.attack==4000 + then + return true + end + if mode == 3 + and BattlePhaseCheck() + and CanWinBattle(c,OppMon()) + and DestroyCheck(OppMon())>0 + and OppHasStrongestMonster() + then + return true + end + if mode == 1 + and BattlePhaseCheck() + and c.attack==4000 + and (CardsMatchingFilter(OppMon(),BladeBurnerFinishFilter,c)>0 + or #OppMon()==0 and AI.GetPlayerLP(2)<=c.attack) + then + return true + end + if mode == 2 + and BattlePhaseCheck() + and CanWinBattle(c,OppMon()) + and c.attack==4000 + and DestroyCheck(OppMon())>0 + then + return true + end +end +function RiseFalconFilter(c,source) + source.attack=c.attack+100 + return FilterSummon(c,SUMMON_TYPE_SPECIAL) + and CanWinBattle(source,{c}) +end +function RiseFalconFilter2(c,source) + return Affected(c,TYPE_MONSTER,4) + and Targetable(c,TYPE_MONSTER) + and c.attack+100>OppGetStrongestAttDef() +end +function RiseFalconFilter3(c,source) + return Affected(c,TYPE_MONSTER,4) + and Targetable(c,TYPE_MONSTER) + and c.attack>1000 +end +function SummonRiseFalcon(c,mode) + if mode == 1 + and (CardsMatchingFilter(OppMon(),RiseFalconFilter,c)>2 + or CardsMatchingFilter(OppMon(),RiseFalconFilter,c)>1 + and HasPriorityTarget(OppMon(),false,nil,RiseFalconFilter,c)) + and CardsMatchingFilter(OppMon(),RiseFalconFilter2)>0 + and not HasID(AIMon(),81927732,true) -- Revolution Falcon + and BattlePhaseCheck() + then + return true + end +end +function UseRiseFalcon(c,mode) + if mode == 1 + and CardsMatchingFilter(OppMon(),RiseFalconFilter3)>0 + then + return true + end +end +function SummonSatelliteCannon(c,mode) + if mode == 1 + and DestroyCheck(OppST())>2 + and (MP2Check() or #AIMon()==0) + then + return true + end +end +function SummonZapdos(c,mode) + return true +end +function UseIcarusRR(c,mode) + if mode == 1 + and (HasID(AIMon(),96345188,true,FilterOPT,true) + or HasID(AIMon(),05929801,true,FilterOPT,05929802) + and CardsMatchingFilter(AIGrave(),MimikryGraveFilter)==0) + and DestroyCheck(OppField())>1 + then + return true + end +end +function UseTwiTwiRR(c,mode) + if mode == 1 + and (HasID(AIHand(),96345188,true,FilterOPT,true) + or HasID(AIHand(),05929801,true,FilterOPT,05929802) + and CardsMatchingFilter(AIGrave(),MimikryGraveFilter)==0) + and DestroyCheck(OppST())>1 + then + return true + end + if mode == 2 + and (HasID(AIHand(),96345188,true,FilterOPT,true) + or HasID(AIHand(),05929801,true,FilterOPT,05929802) + and CardsMatchingFilter(AIGrave(),MimikryGraveFilter)==0) + and DestroyCheck(OppST())>0 + and (#AIMon()==0 or OppHasStrongestMonster()) + then + return true + end +end +function UseSwallow(c,mode) + if mode == 1 + and #AIMon() == 1 + and FieldCheck(4,SwallowFilter) == 1 + then + return true + end + if mode == 2 + and FieldCheck(1,SwallowFilter,{1,97219708}) == 1 + and not HasIDNotNegated(AIMon(),97219708,true) + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and HasIDNotNegated(AIDeck(),97219708,true,SummonLastStrix,0) -- Last Strix + and DualityCheck() + then + GlobalCardMode = 1 + GlobalTargetSet(FindCardByFilter(AIMon(),SwallowFilter,{1,97219708})) + return true + end +end +function RepoForceStrix(c) + if FilterPosition(c,POS_ATTACK) then + if not (BattlePhaseCheck() and CanAttack(c)) + then + return true + end + if c.attack<1500 + and #OppMon()>0 + and not CanWinBattle(c,OppMon()) + then + return true + end + end + if FilterPosition(c,POS_DEFENSE) then + if not (BattlePhaseCheck() and CanAttack(c)) + then + return false + end + if c.attack>1500 + and #OppMon()==0 + or CanWinBattle(c,OppMon()) + then + return true + end + end +end +function F0RRFilter(c,mode) + if mode == 1 then + return FilterID(c,73347079) -- Force Strix + and (c.attack<1500 or OppHasStrongestMonster()) + and c.xyz_material_count==0 + end + if mode == 2 then + return FilterID(c,73347079) -- Force Strix + and c.xyz_material_count==0 + and FilterPosition(c,POS_ATTACK) + end +end +function SummonF0RR(c,mode) + if mode == 1 + and BattlePhaseCheck() + and CardsMatchingFilter(AIMon(),F0RRFilter,1)>1 + and CardsMatchingFilter(OppMon(),F0Filter)>0 + then + return true + end + if mode == 2 + and not BattlePhaseCheck() + and CardsMatchingFilter(AIMon(),F0RRFilter,2)>1 + then + return true + end +end +function RepoRevolutionFalcon(c) + if FilterPosition(c,POS_ATTACK) then + if not (BattlePhaseCheck() and CanAttack(c)) + then + return true + end + if not (CanWinBattle(c,OppMon()) + or CardsMatchingFilter(OppMon(),RevolutionFalconFilter)>0 + and NotNegated(c)) + then + return true + end + end + if FilterPosition(c,POS_DEFENSE) then + if not (BattlePhaseCheck() and CanAttack(c)) + then + return false + end + if CanWinBattle(c,OppMon()) + or CardsMatchingFilter(OppMon(),RevolutionFalconFilter)>0 + and NotNegated(c) + then + return true + end + end +end +function RaidraptorInit(cards) + local Act = cards.activatable_cards + local Sum = cards.summonable_cards + local SpSum = cards.spsummonable_cards + local Rep = cards.repositionable_cards + local SetMon = cards.monster_setable_cards + local SetST = cards.st_setable_cards + if HasIDNotNegated(Act,43898403,UseTwiTwiRR,1) then + return Activate() + end + if HasIDNotNegated(Act,73887236,UseRiseFalcon,1) then + return Activate() + end + if HasIDNotNegated(Act,81927732,UseRevolutionFalcon,1) then + return Activate() + end + if HasIDNotNegated(Act,81927732,UseRevolutionFalcon,2) then + return Activate() + end + if HasIDNotNegated(Act,73347079,UseForceStrix,1) then + return Activate() + end + if HasIDNotNegated(Act,83236601,UseTributeLanius,1) then + return Activate() + end + if HasIDNotNegated(Act,83236601,UseTributeLanius,2) then + return Activate() + end + if HasID(Act,96345188,UseMimikryLanius,1) then + return Activate() + end + if HasIDNotNegated(Act,08559793,UseRRNest,2) then + return Activate() + end + if HasIDNotNegated(Act,08559793,UseRRNest,1) then + return Activate() + end + if HasIDNotNegated(Act,08559793,UseRRNest,3) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForce,1) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForce,2) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForce,3) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForceGrave,1) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForceGrave,2) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForceGrave,3) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForceGrave,4) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForceGrave,5) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForceGrave,6) then + return Activate() + end + if HasIDNotNegated(Act,97219708,UseLastStrix,2) then + return Activate() + end + if HasIDNotNegated(Act,97219708,UseLastStrix,3) then + return Activate() + end + if HasIDNotNegated(Act,97219708,UseLastStrix,1) then + return Activate() + end + if HasIDNotNegated(Act,97219708,UseLastStrix,4) then + return Activate() + end + if HasIDNotNegated(Act,23581825,UseSoulShaveForce,1) then + return Activate() + end + if HasIDNotNegated(Act,23581825,UseSoulShaveForce,2) then + return Activate() + end + if HasIDNotNegated(SpSum,96592102,SummonBladeBurner,1) then + return SpSummon() + end + if HasIDNotNegated(Act,60950180,UseSharpLanius,1) then + return Activate() + end + if HasIDNotNegated(Act,60950180,UseSharpLanius,2) then + return Activate() + end + if HasIDNotNegated(Act,60950180,UseSharpLanius,3) then + return Activate() + end + if HasIDNotNegated(Act,53251824,UseVanishingLanius,1) then + return Activate() + end + if HasIDNotNegated(Act,53251824,UseVanishingLanius,2) then + return Activate() + end + if HasIDNotNegated(Sum,53251824,SummonVanishingLanius,1) then + return Summon() + end + if HasIDNotNegated(Sum,53251824,SummonVanishingLanius,2) then + return Summon() + end + if HasIDNotNegated(Sum,53251824,SummonVanishingLanius,3) then + return Summon() + end + if HasIDNotNegated(Sum,83236601,SummonTributeLanius,1) then + return Summon() + end + if HasIDNotNegated(Sum,83236601,SummonTributeLanius,2) then + return Summon() + end + if HasIDNotNegated(Sum,60950180,SummonSharpLanius,1) then + return Summon() + end + if HasID(Act,05929801,UseFuzzyLanius,1) + and Duel.GetTurnCount()==1 + then + return Activate() + end + if HasIDNotNegated(SpSum,31314549,SummonSingingLanius,1) then + return SpSummon() + end + if HasIDNotNegated(SpSum,31314549,SummonSingingLanius,2) then + return SpSummon() + end + if HasIDNotNegated(SpSum,31314549,SummonSingingLanius,3) then + return SpSummon() + end + if HasIDNotNegated(SpSum,31314549,SummonSingingLanius,4) then + return SpSummon() + end + if HasIDNotNegated(SpSum,31314549,SummonSingingLanius,5) then + return SpSummon() + end + if HasID(Act,46589034,UsePainLanius,1) then + return Activate() + end + if HasID(Act,46589034,UsePainLanius,2) then + return Activate() + end + if HasID(Act,46589034,UsePainLanius,3) then + return Activate() + end + if HasID(Act,05929801,UseFuzzyLanius,1) then + return Activate() + end + if HasID(Act,05929801,UseFuzzyLanius,2) then + return Activate() + end + if HasID(Act,05929801,UseFuzzyLanius,3) then + return Activate() + end + if HasID(Act,05929801,UseFuzzyLanius,4) then + return Activate() + end + if HasID(Act,05929801,UseFuzzyLanius,5) then + return Activate() + end + if HasID(Act,53567095,UseIcarusRR,1) then + return Activate() + end + if HasIDNotNegated(Sum,60950180,SummonSharpLanius,2) then + return Summon() + end + if HasIDNotNegated(Sum,60950180,SummonSharpLanius,3) then + return Summon() + end + if HasID(Sum,96345188,SummonMimikry,1) then + return Summon() + end + if HasID(Sum,05929801,SummonFuzzy,1) then + return Summon() + end + if HasIDNotNegated(Sum,97219708,SummonLastStrix,1) then + return Summon() + end + for i,c in pairs(Sum) do + for mode=1,6 do + for i2,id in pairs(Raptors) do + if c.id == id and SummonRaptor(c,mode) then + return Summon(i) + end + end + end + end + if HasIDNotNegated(Sum,97219708,SummonLastStrix,1) then + return Summon() + end + if HasIDNotNegated(Sum,97219708,SummonLastStrix,2) then + return Summon() + end + if HasIDNotNegated(Sum,97219708,SummonLastStrix,3) then + return Summon() + end + if HasIDNotNegated(Sum,97219708,SummonLastStrix,4) then + return Summon() + end + if HasIDNotNegated(SpSum,73887236,SummonRiseFalcon,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,96592102,SummonBladeBurner,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,96592102,SummonBladeBurner,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,96592102,SummonBladeBurner,3) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,73347079,SummonForceStrix,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,73347079,SummonForceStrix,1) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,96592102,SummonBladeBurner,4) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,62541668,SummonSevenSins,1) then + return XYZSummon() + end + if HasIDNotNegated(Act,94145683,UseSwallow,1) then + return Activate() + end + if HasIDNotNegated(Act,01475311,UseAllure) then + return Activate() + end + if HasIDNotNegated(Act,58988903,UseSkipForce,4) then + return Activate() + end + if HasIDNotNegated(Act,43898403,UseTwiTwiRR,2) then + return Activate() + end + if HasIDNotNegated(Sum,46589034,SummonPainLanius,1) then + return Summon() + end + if HasIDNotNegated(Act,94145683,UseSwallow,2) then + return Activate() + end + for i,c in pairs(Sum) do + for mode=7,8 do + for i2,id in pairs(Raptors) do + if c.id == id and SummonRaptor(c,mode) then + return Summon(i) + end + end + end + end + for i,c in pairs(SetMon) do + for i2,id in pairs(Raptors) do + if c.id == id and SetRaptor(c,1) then + return Set(i) + end + end + end + if HasID(Rep,73347079,RepoForceStrix) then + return Repo() + end + if HasID(Rep,81927732,RepoRevolutionFalcon) then + return Repo() + end + if HasID(SpSum,65305468,SummonF0RR,1) then + return XYZSummon() + end + if HasID(SpSum,65305468,SummonF0RR,2) then + return XYZSummon() + end + local attack = false + for i,c in pairs(AIMon()) do + if CanAttackSafely(c,nil,.5) then + attack = true + end + end + if HasID(AIHand(),97219708,SummonLastStrix,0) + and CardsMatchingFilter(UseLists(AIST(),AIGrave()),FilterType,TYPE_SPELL+TYPE_TRAP)==0 + and #AIMon()>0 and attack + and SpaceCheck()>1 + and BattlePhaseCheck() + then + return SetSpell(math.random(#SetST)) + end + return nil +end +function LastStrixTarget(cards) + if LocCheck(cards,LOCATION_EXTRA) then + if GlobalCardMode and GlobalCardMode == 1 then + GlobalCardMode = nil + return Add(cards,PRIO_TOFIELD,1,FilterRank,8) + end + if GlobalCardMode and GlobalCardMode == 2 then + GlobalCardMode = nil + return Add(cards,PRIO_TOFIELD,1,FilterRank,4) + end + if GlobalCardMode and GlobalCardMode == 3 then + GlobalCardMode = nil + return Add(cards,PRIO_TOFIELD,1,FilterRank,6) + end + if GlobalCardMode and GlobalCardMode == 4 then + GlobalCardMode = nil + return Add(cards,PRIO_TOFIELD,1,FilterRank,10) + end + if HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and CardsMatchingFilter(cards,RaidraptorXYZFilter,8)>0 + and HasID(AIExtra(),86221741,true) -- Zapdos + then + return Add(cards,PRIO_TOFIELD,1,FilterRank,8) + end + end + return Add(cards,PRIO_TOFIELD) +end +function SkipForceTarget(cards) + if LocCheck(cards,LOCATION_MZONE) then + if GlobalSkipForceRank then + local rank = GlobalSkipForceRank + GlobalSkipForceRank = nil + return Add(cards,PRIO_TOGRAVE,1,SkipForceFilter,rank) + end + if CardsMatchingFilter(cards,SkipForceFilter,8)>0 + and HasID(AIExtra(),86221741,true) -- Zapdos + then + return Add(cards,PRIO_TOGRAVE,1,SkipForceFilter,8) + end + return Add(cards,PRIO_TOGRAVE) + end + if LocCheck(cards,LOCATION_EXTRA) then + if HasID(cards,86221741,true) then -- Zapdos + return Add(cards,PRIO_TOFIELD,1,FilterID,86221741) -- Zapdos + end + return Add(cards,PRIO_TOFIELD) + end + if LocCheck(cards,LOCATION_GRAVE) then + if GlobalCardMode == 1 then + GlobalCardMode = nil + local filter = nil + if GlobalSkipForceRank then + filter = function(c)return not FilterRank(c,GlobalSkipForceRank) end + end + return Add(cards,PRIO_BANISH,1,filter) + end + if GlobalSkipForceRank then + local rank = GlobalSkipForceRank + GlobalSkipForceRank = nil + return Add(cards,PRIO_TOGRAVE,1,SkipForceFilter,rank) + end + return Add(cards,PRIO_TOFIELD) + end +end +function SummonInfinityRR(c,mode) + if mode == 1 + and FilterSummonRestriction(c) + then + return true + end +end +function RevolutionFalconFilter(c,source) + return FilterSummon(c,SUMMON_TYPE_SPECIAL) + and Affected(c,TYPE_MONSTER,4) + and BattleTargetCheck(c,source) + and FilterController(c,2) +end +function RevolutionFalconFinish(source) + local targets = SubGroup(OppMon(),RevolutionFalconFilter,source) + local dmg = 0 + for i,target in pairs(targets) do + dmg = dmg + BattleDamage(target,source,nil,0) + end + return dmg >= AI.GetPlayerLP(2) +end +function UseRevolutionFalcon(c,mode) + if mode == 1 + and c.description == c.id*16 + and CardsMatchingFilter(OppMon(),RevolutionFalconFilter,c)>1 + then + return true + end + if mode == 2 + and c.description == c.id*16+1 + then + return false -- TODO + end +end +function SummonRevolutionFalcon(c,mode) + if (mode == 0 or mode == 1) + and RevolutionFalconFinish(c) + and BattlePhaseCheck() + and CardsMatchingFilter(OppMon(),RevolutionFalconFilter,c)>0 + then + return true + end + if (mode == 0 or mode == 2) + and BattlePhaseCheck() + and CardsMatchingFilter(OppMon(),RevolutionFalconFilter,c)>1 + then + return true + end + if mode == 3 + and CardsMatchingFilter(OppMon(),RevolutionFalconFilter,c)>0 + and OppHasStrongestMonster() + and BattlePhaseCheck() + then + return true + end +end +function SoulShaveTarget(cards) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_BANISH) + end + if HasIDNotNegated(cards,81927732,true,SummonRevolutionFalcon,1) then + return Add(cards,PRIO_TOFIELD,1,FilterID,81927732) + end + if HasIDNotNegated(cards,81927732,true,SummonRevolutionFalcon,2) + and CardsMatchingFilter(OppMon(),RevolutionFalconFilter,c)>2 + then + return Add(cards,PRIO_TOFIELD,1,FilterID,81927732) + end + if HasIDNotNegated(cards,10443957,true,SummonInfinityRR,1) then + return Add(cards,PRIO_TOFIELD,1,FilterID,10443957) + end + if HasIDNotNegated(cards,81927732,true,SummonRevolutionFalcon,2) then + return Add(cards,PRIO_TOFIELD,1,FilterID,81927732) + end + return Add(cards,PRIO_TOFIELD) +end +function ZapdosTarget(cards) + return Add(cards,PRIO_TOGRAVE,1,FilterInvert,RaidraptorXYZFilter) +end +function RRNestTarget(cards) + return Add(cards) +end +function MimikryTarget(cards) + return Add(cards) +end +function VanishingTarget(cards) + if HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and HasIDNotNegated(AIHand(),97219708,true) -- Last Strix + and not HasIDNotNegated(AIField(),97219708,true) -- Last Strix + and (HasID(AIHand(),46589034,true,FilterOPT,true) -- Pain Lanius + or HasID(AIHand(),05929801,true,FilterOPT,true) -- Fuzzy Lanius + or HasID(AIHand(),31314549,true) -- Singing Lanius + or FieldCheck(4)>1) + then + return Add(cards,PRIO_TOFIELD,1,FilterID,97219708) -- Last Strix + end + return Add(cards,PRIO_TOFIELD,1,FilterLevel,4) +end +function TributeTarget(cards) + local result = Add(cards,PRIO_TOGRAVE) -- TODO: Consider Rank-Up search + return result +end +function PainLaniusTarget(cards) + local dmg = 99999 + local valid = {} + local result = nil + for i,c in pairs(cards) do + if FilterLevel(c,4) + then + local v = math.min(c.attack,c.defense) + if v0 + then + return true + end + if not IsBattlePhase() then + return true + end +end +function ChainSatelliteCannon(c) + if c.description == c.id*16 then + return true + end + if c.description == c.id*16+1 then + return false -- TODO + end +end +function ChainLastStrix(c) + if Duel.GetTurnPlayer() == player_ai then + return SummonLastStrix(c,0) + else + return #AIMon()==1 + and AI.GetPlayerLP(1)-ExpectedDamage()<=800 + end +end +function ChainReadinessGrave(c,check) + if FilterLocation(c,LOCATION_SZONE) and not check then + return false + end + if RemovalCheckCard(c) then + return true + end + if Duel.GetTurnPlayer()~=player_ai + and IsBattlePhase() + then + if #AIMon()==0 + and AI.GetPlayerLP(1)-ExpectedDamage()<=800 + then + return true + end + local aimon,oppmon=GetBattlingMons() + if oppmon + and CanFinishGame(oppmon,aimon) + then + return true + end + end + if GetBurnDamage() + and ((AI.GetPlayerLP(1)-GetBurnDamage()<=800) + or GetBurnDamage()>3000) + then + return true + end +end +function ReadinessExcludeFilter(c) + c=GetCardFromScript(c) + if c.id == 73347079 then + return c.xyz_material_count>0 and FilterPosition(c,POS_DEFENSE) + end + return (c.attack>1500 + or FilterPosition(c,POS_DEFENSE)) + and Affected(c,TYPE_TRAP) +end +function LightningCanAttack(c) + return CanAttack(c) + and c.xyz_material_count>1 + and CardsMatchingFilter(c.xyz_materials,FilterSet,0x7f)>0 +end +function ChainReadiness(c) + if FilterLocation(c,LOCATION_GRAVE) then + return false + end + if RemovalCheckCard(c) then + return true + end + local aimon,oppmon=GetBattlingMons() + if IsBattlePhase() + and WinsBattle(oppmon,aimon) + and RaidraptorMonsterFilter(aimon) + and ReadinessExcludeFilter(aimon) + then + return true + end + if IsBattlePhase() + and HasIDNotNegated(AIMon(),86221741,true) -- Zapdos + and HasIDNotNegated(OppMon(),56832966,true,LightningCanAttack) -- Utopia Lightning + then + --return true unaffected :/ + end + if ChainReadinessGrave(c,true) + and CardsMatchingFilter(AIGrave(),RaidraptorMonsterFilter)>0 + then + return true + end + --[[ TODO: revisit, once burn gets a player check + if AI.GetPlayerLP()-ExpectedBurn()<800 then + return true + end]] +end +function ChainBoMRR(card) + local targets1 = CardsMatchingFilter(OppMon(),MoonOppFilter) + local targets2 = CardsMatchingFilter(OppMon(),MoonPriorityFilter) + local e=Duel.GetChainInfo(Duel.GetCurrentChain(), CHAININFO_TRIGGERING_EFFECT) + local c = nil + if e then + c = e:GetHandler() + end + if RemovalCheckCard(card) and not c:IsCode(12697630) and targets1>0 then + return true + end + if not UnchainableCheck(14087893) then + return false + end + + cg = NegateCheck() + if cg and Duel.GetCurrentChain()>1 and not DeckCheck(DECK_BA) then + if c and c:GetCode() == 29616929 then + return false + end + if cg:IsExists(function(c) return c:IsControler(player_ai) end, 1, nil) + then + local g=cg:Filter(MoonFilter2,nil,player_ai):GetMaxGroup(Card.GetAttack) + if g then + GlobalCardMode = 1 + GlobalTargetSet(g:GetFirst(),AIMon()) + return true + end + end + end + cg = RemovalCheck() + if cg then + if cg:IsExists(function(c) return c:IsControler(player_ai) end, 1, nil) then + local g=cg:Filter(MoonFilter2,nil,player_ai):GetMaxGroup(Card.GetAttack) + if g and e and MoonWhitelist2(e:GetHandler():GetCode()) then + GlobalCardMode = 1 + GlobalTargetSet(g:GetFirst(),AIMon()) + return true + end + end + end +end +function SwallowFilter(c,params) + local level = 4 + local id = nil + if params then + if type(params) == "table" then + level = params[1] or 4 + id = params[2] or nil + end + if type(params) == "number" then + level = 4 + id = params + end + end + return Affected(c,TYPE_SPELL) + and Targetable(c,TYPE_SPELL) + and FilterRace(c,RACE_WINDBEAST) + and FilterLevel(c,level) + and (not id or id ~= c.id) +end +function SwallowFinishFilter(c) + return c.attack>=AI.GetPlayerLP(2) + --and CardsMatchingFilter(AIMon(),SwallowFilter,{4,c.id})>0 +end +function ChainSwallow(card) + local targets = SubGroup(AIMon(),SwallowFilter) + if RemovalCheckCard(card) + and #targets>0 + then + return true + end + if not UnchainableCheck(94145683) then + return false + end + for i,c in pairs(targets) do + if NegateCheckCard(c) + and Duel.GetCurrentChain()>1 + then + GlobalCardMode = 1 + GlobalTargetSet(c) + return true + end + if RemovalCheckCard(c,nil,nil,true) + then + GlobalCardMode = 1 + GlobalTargetSet(c) + return true + end + end + if IsBattlePhase() + and #targets>0 + and #OppMon()==0 + and ExpectedDamage(2)==0 + and CardsMatchingFilter(AIDeck(),SwallowFinishFilter)>0 + then + GlobalSwallowAttack = AI.GetPlayerLP(2) + return true + end +end +RaidraptorChainFunctions={ +[05929801] = ChainFuzzy, -- Fuzzy +[10194329] = ChainAvenge, -- Avenge Vulture +[97219708] = ChainLastStrix, -- Last Strix + +[86221741] = ChainZapdos, -- Zapdos +[96592102] = ChainBladeBurner, -- Blade Burner +[23603403] = ChainSatelliteCannon, -- Satellite Cannon + +[21648584] = ChainReadiness, -- Readiness +[94145683] = ChainSwallow, -- Swallow's Nest + +} +function RaidraptorChain(cards) + for id,v in pairs(RaidraptorChainFunctions) do + if HasID(cards,id,v) then + return Chain() + end + end + if HasID(cards,21648584,ChainReadinessGrave) then + return Chain() + end + return nil +end +function RaidraptorEffectYesNo(id,card) + for i,v in pairs(RaidraptorChainFunctions) do + if id == i then + return v(card) + end + end + return nil +end +function RaidraptorYesNo(desc) +end +function RaidraptorTribute(cards,min, max) +end +function RaidraptorBattleCommand(cards,targets,act) + for i,c in pairs(cards) do + c.index=i + end + if HasIDNotNegated(cards,73887236,CanWinBattle,targets) -- Rise Falcon + then + return Attack(CurrentIndex) + end + if HasIDNotNegated(cards,81927732) then -- Revolution Falcon + if CardsMatchingFilter(targets,RevolutionFalconFilter,cards[CurrentIndex])>0 + then + return Attack(CurrentIndex) + end + end + if HasIDNotNegated(cards,96592102,CanWinBattle,targets) -- Blade Burner Falcon + then + return Attack(CurrentIndex) + end + if HasIDNotNegated(AIHand(),97219708,true,SummonLastStrix,0) + and DualityCheck() + and SpaceCheck(1) + then + SortByATK(cards) + for i,c in pairs(cards) do + if CanAttackSafely(c,targets,.5) + and RaidraptorMonsterFilter(c) + then + return Attack(i) + end + end + end +end +function RaidraptorAttackTarget(cards,attacker) + if FilterID(attacker,81927732) + and NotNegated(attacker) + then + return BestTargets(cards,1,TARGET_BATTLE,RevolutionFalconFilter,attacker,true,attacker) + end + if FilterID(attacker,73887236) + and NotNegated(attacker) + then + return BestTargets(cards,1,TARGET_BATTLE,FilterSummon,SUMMON_TYPE_SPECIAL,true,attacker) + end + if FilterID(attacker,96592102) + and NotNegated(attacker) + then + for i,c in pairs(cards) do + c.index=i + end + table.sort(cards,function(a,b) return BattleDamage(a,attacker)>=BattleDamage(b,attacker) end) + return {cards[1].index} + end +end +function RaidraptorAttackBoost(cards) + if HasIDNotNegated(AIMon(),81927732,true,FilterPosition,POS_FACEUP_ATTACK) then + for i,c in pairs(cards) do + if RevolutionFalconFilter(c) then + c.bonus = c.bonus - c.attack + c.attack = 0 + c.defense = 0 + end + end + end +end +function RaidraptorOption(options) +end +function RaidraptorChainOrder(cards) +end +RaidraptorAtt={ +83236601, -- Tribute Lanius +60950180, -- Sharp Lanius +53251824, -- Vanishing Lanius + +62541668, -- Seven Sins +86221741, -- Zapdos +23603403, -- Satellite Cannon +81927732, -- Revolution Falcon +96592102, -- Burner Falcon +73887236, -- Rise Falcon +} +RaidraptorVary={ +10194329, -- Avenge Vulture +96345188, -- Mimikry Lanius +05929801, -- Fuzzy Lanius +31314549, -- Singing Lanius +46589034, -- Pain Lanius +97219708, -- Last Strix +} +RaidraptorDef={ +73347079, -- Force Strix +} +function RaidraptorPosition(id,available) + result = nil + for i=1,#RaidraptorAtt do + if RaidraptorAtt[i]==id + then + result=POS_FACEUP_ATTACK + end + end + for i=1,#RaidraptorVary do + if RaidraptorVary[i]==id + then + if (BattlePhaseCheck() or IsBattlePhase()) + and Duel.GetTurnPlayer()==player_ai + then + result=POS_FACEUP_ATTACK + else + result=POS_FACEUP_DEFENSE + end + end + end + for i=1,#RaidraptorDef do + if RaidraptorDef[i]==id + then + result=POS_FACEUP_DEFENSE + end + end + if id == 73347079 -- Force Strix + then + local atk = (CardsMatchingFilter(AIMon(),FilterRace,RACE_WINDBEAST)-1)*500+100 + if atk > 1000 + and BattlePhaseCheck() + and (#OppMon()==0 + or OppGetStrongestAttDef()0 and OPTCheck(c.id) + or CardsMatchingFilter(AIMon(),FilterType,TYPE_XYZ)>1) + and not HasID(AIHand(),c.id,true) + and HasID(AIDeck(),96345188,true) -- Mimikry + then + return true + end + if not HasID(AIHand(),c.id,true) then + return 3 + end + return false + end + if loc == PRIO_TOFIELD then + return OPTCheck(c.id) + end + return true +end +function AvengeCond(loc,c) + if loc == PRIO_TOHAND then + if HasID(AIHand(),46589034,true) then -- Pain Lanius + return true + end + return false + end +end +function VanishingCond(loc,c) + if loc == PRIO_TOHAND then + return CardsMatchingFilter(AIHand(),RaidraptorMonsterFilter,c.id)>0 + and not HasID(AIHand(),c.id,true) + and (NormalSummonsAvailable()>0 + or CardsMatchingFilter(AIMon(),FilterType,TYPE_XYZ)>1) + end + if loc == PRIO_TOFIELD then + if HasIDNotNegated(AIHand(),97219708,true) -- Last Strix + and HasIDNotNegated(AIHand(),58988903,true) -- Skip Force + then + return true + end + if HandCheck(4,RaidraptorMonsterFilter)>0 + and FieldCheck(4)<2 + and NormalSummonsAvailable()==0 + then + return true + end + return false + end + return true +end +function MimikryCond(loc,c) + if loc == PRIO_TOFIELD then + return OPTCheck(c.id) + and CardsMatchingFilter(AIGrave(),MimikryGraveFilter)==0 + and FieldCheck(4)>0 + end + if loc == PRIO_TOGRAVE then + return OPTCheck(c.id) + and CardsMatchingFilter(AIGrave(),MimikryGraveFilter)==0 + and Duel.GetTurnPlayer()==player_ai + and Duel.GetCurrentPhase()~=PHASE_END + end + if loc == PRIO_BANISH then + return FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_GRAVE) and not MimikryGraveFilter(c) + end + return true +end +function FuzzyCond(loc,c) + if loc == PRIO_TOHAND then + return (CardsMatchingFilter(AICards(),RaidraptorNonXYZFilter,c.id)>0 + or RaidraptorSearchAvailable()) + and not HasAccess(c.id) + end + if loc == PRIO_TOFIELD then + --[[if FilterLocation(c,LOCATION_HAND) + and OPTCheck(c.id) + and HasID(AIHand(),31314549,true) + then + return 6 + end]] + if not FilterLocation(c,LOCATION_HAND) then + return not HasAccess(c.id) + and FieldCheck(4)==1 + end + end + if loc == PRIO_TOGRAVE then + return OPTCheck(c.id+1) + and not (FilterLocation(c,LOCATION_DECK) + and HasAccess(c.id)) + end + if loc == PRIO_BANISH then + return not FilterLocation(c,LOCATION_HAND) + end + return true +end +function SingingCond(loc,c) + if loc == PRIO_TOHAND then + if CardsMatchingFilter(AIMon(),FilterType,TYPE_XYZ)==1 + and (FieldCheck(4)==1 + or HasID(AIHand(),05929801,true,OPTCheck,true) -- Fuzzy + or HasID(AIHand(),46589034,true,OPTCheck,true) -- Pain + or RaidraptorSearchAvailable()) + and DualityCheck() + and SpaceCheck()+FieldCheck(4)>1 + then + return true + end + return false + end + return true +end +function PainLaniusCond(loc,c) + if loc == PRIO_TOHAND then + return FieldCheck(4,RaidraptorMonsterFilter)>0 + or HasID(AIHand(),05929801,true,FilterOPT,true) -- Fuzzy + or HasID(AIHand(),31314549,true) -- Singing + and CardsMatchingFilter(AIMon(),FilterType,TYPE_XYZ)>0 + end + return true +end +function LastStrixCond(loc,c) + if loc == PRIO_TOHAND then + return not (HasID(AICards(),c.id,true)) + and HasIDNotNegated(AICards(),58988903,true) -- Skip Force + and (NormalSummonsAvailable()>0 or BattlePhaseCheck()) + and DualityCheck() + end + if loc == PRIO_TOFIELD then + return not BattlePhaseCheck() + and NormalSummonsAvailable()==0 + and HasIDNotNegated(AICards(),58988903,true) + and OPTCheck(c.id) + end + if loc == PRIO_BANISH then + return not (FilterLocation(c,LOCATION_HAND) + and HasIDNotNegated(AICards(),58988903,true)) + end + return true +end +function RRNestCond(loc,c) + if loc == PRIO_TOHAND then + if CardsMatchingFilter(AIMon(),RaidraptorMonsterFilter)>1 then + return true + end + if CardsMatchingFilter(AIMon(),RaidraptorMonsterFilter)==1 + and HasID(AIHand(),05929801,true,OPTCheck,true) -- Fuzzy + and DualityCheck() + and SpaceCheck()>0 + then + return true + end + if CardsMatchingFilter(AIMon(),RaidraptorMonsterFilter)==1 + and HasID(AIHand(),46589034,true,OPTCheck,true) -- Pain + and AI.GetPlayerLP(1)>=1000 + and DualityCheck() + and SpaceCheck()>0 + then + return true + end + if CardsMatchingFilter(AIMon(),RaidraptorXYZFilter)==1 + and HasID(AIHand(),31314549,true) -- Singing + and DualityCheck() + and SpaceCheck()>0 + then + return true + end + return false + end + return true +end +function ForceStrixCond(loc,c) + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_MZONE) + and c.xyz_material_count==0 + then + return true + end + return false + end +end +function SharpCond(loc,c) + if loc == PRIO_TOFIELD then + if SummonSharpLanius(c,1) then + return true + end + if SummonSharpLanius(c,2) + or SummonSharpLanius(c,3) + then + return 5 + end + return false + end + return true +end +RaidraptorPriorityList={ +--[12345678] = {1,1,1,1,1,1,1,1,1,1,XXXCond}, -- Format + +-- Raidraptor + +[83236601] = {7,1,6,1,3,1,1,1,3,1,TributeCond}, -- Tribute Lanius +[60950180] = {2,1,8,1,5,1,1,1,7,1,SharpCond}, -- Sharp Lanius +[10194329] = {3,1,5,1,5,1,1,1,7,1,AvengeCond}, -- Avenge Vulture +[53251824] = {8,1,7,1,5,1,1,1,3,1,VanishingCond}, -- Vanishing Lanius +[96345188] = {1,1,8,1,9,1,1,1,6,1,MimikryCond}, -- Mimikry Lanius +[05929801] = {6,1,4,1,8,1,1,1,5,1,FuzzyCond}, -- Fuzzy Lanius +[31314549] = {4,1,3,1,5,1,1,1,5,1,SingingCond}, -- Singing Lanius +[46589034] = {5,1,1,1,5,1,1,1,5,1,PainLaniusCond}, -- Pain Lanius +[97219708] = {9,1,9,0,4,1,1,1,8,2,LastStrixCond}, -- Last Strix + +[23581825] = {1,1,1,1,1,1,1,1,1,1,}, -- Soul Shave Force +[58988903] = {1,1,1,1,1,1,1,1,1,1,}, -- Skip Force +[94145683] = {1,1,1,1,1,1,1,1,1,1,}, -- Swallow's Nest +[08559793] = {10,1,1,1,1,1,1,1,1,1,RRNestCond}, -- RR Nest + +[21648584] = {1,1,1,1,4,1,1,1,1,1,}, -- Readiness +[66994718] = {1,1,1,1,1,1,1,1,1,1,}, -- Gust + +[62541668] = {1,1,1,1,1,1,1,1,1,1,}, -- Seven Sins +[86221741] = {1,1,1,1,1,1,1,1,1,1,}, -- Zapdos +[23603403] = {1,1,1,1,1,1,1,1,1,1,}, -- Satellite Cannon +[81927732] = {1,1,1,1,1,1,1,1,1,1,}, -- Revolution Falcon +[96592102] = {1,1,1,1,1,1,1,1,1,1,}, -- Burner Falcon +[73347079] = {1,1,2,1,5,1,1,1,1,1,ForceStrixCond}, -- Force Strix +[73887236] = {1,1,1,1,1,1,1,1,1,1,}, -- Rise Falcon +} \ No newline at end of file diff --git a/ai/decks/Satellarknight.lua b/ai/decks/Satellarknight.lua index 58d34c1d..99349f05 100644 --- a/ai/decks/Satellarknight.lua +++ b/ai/decks/Satellarknight.lua @@ -92,16 +92,34 @@ function SiriusCond(loc) end function ScepterCond(loc) if loc == PRIO_TOHAND then - return HasID(AIHand(),91110378,true) and HasID(AIDeck(),91110378,true) and not HasID(AIHand(),38331564,true) + if HasID(AIHand(),91110378,true) + and HasID(AIDeck(),91110378,true) + and not HasID(AIHand(),38331564,true) + then + return true + end + return false end if loc == PRIO_TOFIELD then - return HasID(AIHand(),91110378,true) and HasID(AIDeck(),91110378,true) and Duel.GetCurrentChain()==0 + if HasID(AIHand(),91110378,true) + and HasID(AIDeck(),91110378,true) + and Duel.GetCurrentChain()==0 + then + return true + end + return false end return true end function SovereignCond(loc) if loc == PRIO_TOHAND then - return HasID(AIHand(),38331564,true) and HasID(AIDeck(),91110378,true) and not HasID(AIHand(),91110378,true) + if HasID(AIHand(),38331564,true) + and HasID(AIDeck(),91110378,true) + and not HasID(AIHand(),91110378,true) + then + return true + end + return false end if loc == PRIO_TOFIELD then return FieldCheck(4)==2 or FieldCheck(4)==1 and CardsMatchingFilter(AIHand(),function(c) return c.id==91110378 end)>1 @@ -110,7 +128,10 @@ function SovereignCond(loc) end function HonestCond(loc) if loc == PRIO_TOFIELD then - return HasID(AIGrave(),37742478,true) + if HasID(AIGrave(),37742478,true) then + return true + end + return false end return true end @@ -404,7 +425,10 @@ if DeckCheck(DECK_TELLARKNIGHT) then if HasID(SpSummonable,34086406) and SummonLavalvalChain1() then return {COMMAND_SPECIAL_SUMMON,CurrentIndex} end - if HasID(SpSummonable,21501505) and SummonCairngorgon(SpSummonable[CurrentIndex]) then + if HasID(SpSummonable,21501505) + and SummonCairngorgon(SpSummonable[CurrentIndex]) + and DeckCheck(DECK_TELLARKNIGHT) + then return {COMMAND_SPECIAL_SUMMON,CurrentIndex} end SatellarknightAssignPriority(Summonable,PRIO_TOFIELD) diff --git a/ai/decks/ZodiacBeast.lua b/ai/decks/ZodiacBeast.lua new file mode 100644 index 00000000..f5a4391f --- /dev/null +++ b/ai/decks/ZodiacBeast.lua @@ -0,0 +1,1839 @@ +function ZodiacBeastStartup(deck) + print("ZodiacBeast v1.0.1 by neftalimich.") + deck.Init = ZodiacBeastInit + deck.Card = ZodiacBeastCard + deck.Chain = ZodiacBeastChain + deck.EffectYesNo = ZodiacBeastEffectYesNo + deck.YesNo = ZodiacBeastYesNo + deck.Position = ZodiacBeastPosition + deck.Option = ZodiacBeastOption + deck.BattleCommand = ZodiacBeastBattleCommand + --[[ + deck.Sum + deck.Tribute + deck.BattleCommand + deck.AttackTarget + deck.AttackBoost + deck.Tribute + deck.DeclareCard + deck.Number + deck.Attribute + deck.MonsterType + ]] + + deck.ActivateBlacklist = ZodiacBeastActivateBlacklist + deck.SummonBlacklist = ZodiacBeastSummonBlacklist + deck.SetBlacklist = ZodiacBeastSetBlacklist + deck.Unchainable = ZodiacBeastUnchainable + --[[ + deck.RepositionBlacklist + ]] + + deck.PriorityList = ZodiacBeastPriorityList + + -- Debug Mode + --[[ + local e0=Effect.GlobalEffect() + e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e0:SetCode(EVENT_CHAIN_SOLVED) + e0:SetOperation(function(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(player_ai,LOCATION_HAND,0) + end) + Duel.RegisterEffect(e0,0) + local e1=e0:Clone() + e1:SetCode(EVENT_TO_HAND) + Duel.RegisterEffect(e1,0) + local e2=e0:Clone() + e2:SetCode(EVENT_PHASE_START+PHASE_MAIN1) + Duel.RegisterEffect(e2,0) + local e3=Effect.GlobalEffect() + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_PUBLIC) + e3:SetTargetRange(LOCATION_HAND,0) + Duel.RegisterEffect(e3,player_ai) + --]] +end + +ZodiacBeastIdentifier = {73881652} -- add the card(s) identifying your deck here + +DECK_ZodiacBeast = NewDeck("ZodiacBeast",ZodiacBeastIdentifier,ZodiacBeastStartup) + +------------------------ +--------- LIST --------- +------------------------ + +ZodiacBeastActivateBlacklist={ +-- add cards to never activate/chain here +77150143, -- ZBThroughblade +31755044, -- ZBViper +04367330, -- ZBRabbina +04145852, -- ZBRam +78872731, -- ZBMolmorat +81275020, -- STerrotop +53932291, -- STaketomborg + +46060017, -- ZBTriangle +00675319, -- ZodiacSign +57103969, -- ZBTenki +10719350, -- ZBTensu +73881652, -- ZBDirection +98954106, -- ZBJAvarice + +48905153, -- ZBDrancia +85115440, -- ZBBullhorn +11510448, -- ZBTigress +74393852, -- ZBWildbow +96381979, -- ZBTigerKing +00581014, -- ZBDaigusto +04423206, -- ZBInvoker +} +ZodiacBeastSummonBlacklist={ +-- add monsters to never summon/set here +77150143, -- ZBThroughblade +31755044, -- ZBViper +04367330, -- ZBRabbina +04145852, -- ZBRam +78872731, -- ZBMolmorat +67136033, -- ZBBearman +81275020, -- STerrotop +53932291, -- STaketomborg + +48905153, -- ZBDrancia +85115440, -- ZBBullhorn +11510448, -- ZBTigress +74393852, -- ZBWildbow +30741334, -- ZBGiantrainer +96381979, -- ZBTigerKing +00581014, -- ZBDaigusto +04423206, -- ZBInvoker +} +ZodiacBeastSetBlacklist={ +46060017, -- ZBTriangle +00675319, -- ZodiacSign +57103969, -- ZBTenki +10719350, -- ZBTensu +} +ZodiacBeastUnchainable={ +31755044, -- ZBViper +73881652, -- ZBDirection +98954106, -- ZBJAvarice +59438930, -- GO&SR +83326048, -- DBarrier +} + +------------------------ +--------- COND --------- +------------------------ + +function TemplateCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_DISCARD or loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) then + return true + end + if FilterLocation(c,LOCATION_ONFIELD) then + return true + end + end + return true +end + +function ZBThroughbladeCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + then + if ( + NormalSummonCheck() + or HasID(AIHand(),10719350,true) and OPTCheck(10719350) + ) + and ( + not HasID(AIHand(),c.id,true) + or PriorityCheck(AIHand(),PRIO_DISCARD,2,ZBFilter) > 2 + ) + and #AIMon() < 5 + then + return true + else + return false + end + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + then + return PriorityCheck(AIHand(),PRIO_DISCARD,1) > 0 + else + return false + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_DECK) then + return true + end + if FilterLocation(c,LOCATION_OVERLAY) then + return 1 + end + end + if loc == PRIO_DISCARD or loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + if not NormalSummonCheck() then + return 2 + else + return 3 + end + end + end + return true +end + +function ZBViperCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_GRAVE) + then + return not HasID(AIHand(),c.id,true) + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_OVERLAY) then + return 2 + end + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_DISCARD or loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return 1 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + end + return true +end + +function ZBRabbinaCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_GRAVE) + then + return not HasID(AIHand(),c.id,true) + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_OVERLAY) then + return 3 + end + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_DISCARD or loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return 9 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + end + return true +end + +function ZBRamCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_GRAVE) + then + return not HasID(AIHand(),c.id,true) + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_OVERLAY) then + return 4 + end + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_ONFIELD) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_DISCARD or loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return 9 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + end + return true +end + +function ZBMolmoratCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) then + return + CardsMatchingFilter(AIDeck(),FilterID,c.id) == 3 + and CardsMatchingFilter(AIMon(),ZBXyzFilter) == 0 + end + if FilterLocation(c,LOCATION_GRAVE) then + return CardsMatchingFilter(AIDeck(),FilterID,c.id) == 3 + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) then + return true + end + if FilterLocation(c,LOCATION_DECK) then + return CardsMatchingFilter(AIMon(),ZBXyzFilter) == 0 + end + if FilterLocation(c,LOCATION_GRAVE) then + if HasID(AIDeck(),c.id,true) + and #AIMon() < 5 + then + return true + else + return false + end + end + if FilterLocation(c,LOCATION_REMOVED) then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_OVERLAY) then + return 9 + end + if FilterLocation(c,LOCATION_DECK) then + return false + end + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + end + if loc == PRIO_DISCARD or loc == PRIO_TODECK then + if FilterLocation(c,LOCATION_HAND) then + return 3 + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + end + return true +end + +function ZBBearmanCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) then + local bwMon = SubGroup(AIMon(),FilterRace,RACE_BEASTWARRIOR) + if CardsMatchingFilter(bwMon,FilterLevel,4) == 2 + and not BattlePhaseCheck() + --and Duel.GetCurrentPhase == PHASE_MAIN1 + and ( + not NormalSummonCheck() + or HasID(UseLists({AIHand(),AIST()}),10719350,true) + ) + then + return 10 + end + end + end + return false +end + +function ZBTenkiCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return not HasID(UseLists({AIHand(),AIST()}),c.id,true) + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + end + return true +end + +function ZBTensuCond(loc,c) + if loc == PRIO_TOHAND then + if FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + local zbMonHand = SubGroup(AIHand(),ZBMonFilter) + return + not HasID(UseLists({AIHand(),AIST()}),c.id,true) + and CardsMatchingFilter(zbMonHand,FilterLevelMax,4) > 0 + end + end + if loc == PRIO_TOFIELD then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_TOGRAVE then + if FilterLocation(c,LOCATION_HAND) + or FilterLocation(c,LOCATION_DECK) + or FilterLocation(c,LOCATION_REMOVED) + then + return true + end + end + if loc == PRIO_BANISH then + if FilterLocation(c,LOCATION_GRAVE) + or FilterLocation(c,LOCATION_ONFIELD) + then + return true + end + end + return true +end + +function ZBDranciaCond(loc,c) + return true +end + +function ZBBullhornCond(loc,c) + return true +end + +function ZBTigressCond(loc,c) + return true +end + +function ZBWildbowCond(loc,c) + return true +end + +ZodiacBeastPriorityList={ +[77150143] = {8,1,8,1,4,1,3,1,1,1,ZBThroughbladeCond}, -- ZBThroughblade +[31755044] = {7,1,7,1,3,1,2,1,1,1,ZBViperCond}, -- ZBViper +[04367330] = {6,1,6,1,2,1,4,1,1,1,ZBRabbinaCond}, -- ZBRabbina +[04145852] = {6,1,6,1,2,1,4,1,1,1,ZBRamCond}, -- ZBRam +[78872731] = {9,1,9,1,5,1,6,1,1,1,ZBMolmoratCond}, -- ZBMolmorat +[67136033] = {1,1,1,1,1,1,9,1,1,1,ZBBearmanCond}, -- ZBBearman + +[57103969] = {8,1,1,1,1,1,1,1,1,1,ZBTenkiCond}, -- ZBTenki +[10719350] = {9,1,1,1,1,1,1,1,1,1,ZBTensuCond}, -- ZBTensu +[73881652] = {1,1,1,1,1,1,1,1,1,1,nil}, -- ZBDirection + +[48905153] = {1,1,1,1,9,1,9,1,1,1,ZBDranciaCond}, -- ZBDrancia +[85115440] = {1,1,1,1,8,1,8,1,1,1,ZBBullhornCond}, -- ZBBullhorn +[11510448] = {1,1,1,1,7,1,7,1,1,1,ZBTigressCond}, -- ZBTigress +[74393852] = {1,1,1,1,6,1,6,1,1,1,ZBWildbowCond}, -- ZBWildbow +[00581014] = {1,1,1,1,1,1,10,1,1,1,nil}, -- ZBDaigusto +} +--[[LIST +77150143, -- ZBThroughblade +31755044, -- ZBViper +04367330, -- ZBRabbina +04145852, -- ZBRam +78872731, -- ZBMolmorat +67136033, -- ZBBearman +81275020, -- STerrotop +53932291, -- STaketomborg + +46060017, -- ZBTriangle +00675319, -- ZodiacSign +57103969, -- ZBTenki +10719350, -- ZBTensu +73881652, -- ZBDirection +98954106, -- ZBJAvarice + +48905153, -- ZBDrancia +85115440, -- ZBBullhorn +11510448, -- ZBTigress +74393852, -- ZBWildbow +30741334, -- ZBGiantrainer +96381979, -- ZBTigerKing +00581014, -- ZBDaigusto +04423206, -- ZBInvoker +]] +function ZodiacBeastInit(cards) + local Act = cards.activatable_cards + local Sum = cards.summonable_cards + local SpSum = cards.spsummonable_cards + local Rep = cards.repositionable_cards + local SetMon = cards.monster_setable_cards + local SetST = cards.st_setable_cards + + -- GLOBAL RESET + GlobalZBSummonId = 0 + GlobalZBTriangle = 0 + GlobalZodiacSign = 0 + + --for i=1, #Act do + --local c = Act[i] + --print("Act",c.id) + --end + + -- ACTIVE 0 + if HasIDNotNegated(Act,43898403,UseTwinTwister) then -- TwinTwisters + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,17626381) then -- Supply Squad + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,73628505) then -- Terraforming + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,00675319) -- ZodiacSign + and not HasID(AIST(),00675319,true) + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,00581014) then -- ZBDaigusto + OPTSet(00581014) + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,04423206,UseZBInvoker) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,96381979,false,(96381979*16+1),UseZBTigerKing) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + -- ZBMolmorat EFFECT + for i=1, #Act do + local c = Act[i] + if NotNegated(c) and c.description == (78872731*16+1) + then + return {COMMAND_ACTIVATE,i} + end + end + -- Tensu + if HasIDNotNegated(Act,10719350) then -- Tensu + OPTSet(10719350) + return {COMMAND_ACTIVATE,CurrentIndex} + end + -- ACTIVE 1 + if HasIDNotNegated(Act,48905153,false,(48905153*16+1),UseZBDrancia) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,11510448,false,(11510448*16+1),UseZBTigress) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,85115440,false,(85115440*16+1),UseZBBullhorn) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + + if HasIDNotNegated(Act,67136033) then -- ZBBearman + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,30741334) then -- ZBGiantrainer + return {COMMAND_ACTIVATE,CurrentIndex} + end + + if MaxxCheck() then + -- TERROTOP + if HasIDNotNegated(SpSum,81275020) then -- STerrotop + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,81275020) -- STerrotop + and HasID(UseLists({AIDeck(),AIHand()}),53932291,true) + and not HasID(AIMon(),81275020,true) + and CardsMatchingFilter(AIMon(),FilterLevel,3) > 0 + then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(SpSum,53932291) then -- STaketomborg + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- ZBInvoker + if HasIDNotNegated(SpSum,04423206) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + + -- ZB SPECIAL SUMMON + if HasIDNotNegated(Sum,78872731,SummonZBMolmorat) then + return {COMMAND_SUMMON,CurrentIndex} + end + -- ZBWildbow + if HasIDNotNegated(SpSum,74393852,SummonZBWildbow) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- ZBTigress + if HasIDNotNegated(SpSum,11510448,SummonZBTigress) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + if HasIDNotNegated(SpSum,11510448,SummonZBTigress3) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- ZBBullhorn + if HasIDNotNegated(SpSum,85115440,SummonZBBullhorn) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- ZBTigress 2 + if HasIDNotNegated(SpSum,11510448,SummonZBTigress2) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- ZBWildbow2 + if HasIDNotNegated(SpSum,74393852,SummonZBWildbow2) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- ZBDrancia + if HasIDNotNegated(SpSum,48905153,SummonZBDrancia) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- ZBWildbowFinish + if HasIDNotNegated(SpSum,74393852) then + GlobalZBSummonId = 74393852 + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- Utopia Lightning + if HasIDNotNegated(SpSum,56832966,SummonUtopiaLightningFinish,2) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,84013237,SummonUtopiaLightningFinish,1) then + return XYZSummon() + end + -- ZBGiantrainer + if HasIDNotNegated(Sum,67136033,SummonZBBearman) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(SpSum,30741334,SummonZBGiantrainer) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- ZBTigerKing + if HasIDNotNegated(SpSum,96381979,SummonZBTigerKing) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + end + + -- ZBDaigusto + if HasIDNotNegated(SpSum,00581014,SummonZBDaigusto) then + return {COMMAND_SPECIAL_SUMMON,CurrentIndex} + end + -- Tenki + if HasIDNotNegated(Act,57103969) then -- Tenki + OPTSet(57103969) + return {COMMAND_ACTIVATE,CurrentIndex} + end + -- ZBTriangle + if HasIDNotNegated(Act,46060017,nil,nil,LOCATION_HAND,ActiveZBTriangle) + and MaxxCheck() + then + return {COMMAND_ACTIVATE,CurrentIndex} + end + if HasIDNotNegated(Act,46060017,nil,nil,LOCATION_SZONE,UseZBTriangle) + and MaxxCheck() + then + GlobalZBTriangle = 1 + return {COMMAND_ACTIVATE,CurrentIndex} + end + -- SUMMON 2 + if HasIDNotNegated(Sum,77150143,SummonZBThroughblade) then + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,04367330) then -- ZBRabbina + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,04145852) then -- ZBRam + return {COMMAND_SUMMON,CurrentIndex} + end + -- SUMMON 3 + if HasIDNotNegated(Sum,77150143) then -- ZBThroughblade + return {COMMAND_SUMMON,CurrentIndex} + end + if HasIDNotNegated(Sum,31755044) then -- ZBViper + return {COMMAND_SUMMON,CurrentIndex} + end + -- ZBViper + if HasIDNotNegated(Act,31755044,UseZBViper) then + return {COMMAND_ACTIVATE,CurrentIndex} + end + + -- Utopia + if MaxxCheck() then + if HasIDNotNegated(SpSum,56832966) then + return XYZSummon() + end + if HasIDNotNegated(SpSum,84013237) then + return XYZSummon() + end + end + + if TurnEndCheck() then + if HasIDNotNegated(SetST,73881652) then + return {COMMAND_SET_ST ,CurrentIndex} + end + if HasIDNotNegated(SetST,98954106) then + return {COMMAND_SET_ST ,CurrentIndex} + end + if HasIDNotNegated(SetST,40605147) then + return {COMMAND_SET_ST ,CurrentIndex} + end + if HasIDNotNegated(SetST,84749824) then + return {COMMAND_SET_ST ,CurrentIndex} + end + end + + return nil +end +------------------------ +-------- FILTER -------- +------------------------ +function ZBFilter(c, exceptId) + if exceptId == nil then exceptId = 0 end + return + FilterSet(c,0xf1) + and c.id ~= exceptId +end +function ZBMonFilter(c,exceptId) + if exceptId == nil then exceptId = 0 end + return + FilterSet(c,0xf1) + and FilterType(c,TYPE_MONSTER) + and c.id ~= exceptId +end +function ZBXyzFilter(c) + if c == nil then return false end + return + FilterSet(c,0xf1) + and FilterType(c,TYPE_XYZ) +end +function ZBNonXyzFilter(c, exceptId) + if exceptId == nil then exceptId = 0 end + return + IsSetCode(c.setcode,0xf1) + and not FilterType(c,TYPE_XYZ) +end + +function ZBBestDetachFilter(c) + return + not ZBFilter(c) + or c.base_attack <= 0 +end + +function ZBTriangleFilter(c) + return + c.id == 57103969 -- ZBTenki + and FilterLocation(c,LOCATION_SZONE) + and FilterPosition(c,POS_FACEUP) + or + ( + c.id == 04367330 -- ZBRabbina + or c.id == 04145852 -- ZBRam + or c.id == 81275020 -- STerrotop + or c.id == 53932291 -- STaketomborg + ) + and FilterLocation(c,LOCATION_MZONE) +end +function ZBDranciaDestroyFilter(c) + return ( + Targetable(c,TYPE_MONSTER) + and Affected(c,TYPE_MONSTER) + and DestroyFilterIgnore(c) + ) +end + +------------------------ +--------- USE ---------- +------------------------ +function UseZBViper(c) + return + FilterLocation(c,LOCATION_HAND) + and BattlePhaseCheck() + --if #AIMon() == 5 and FilterLocation(c,LOCATION_MZONE) + --or OppGetStrongestAttack() > AIGetStrongestAttack() + --then + --return true + --end + --local cards = AIMon() + --for i=1, cards do + --local c = cards[i] + --if c.id == 48905153 + --then + --if c.xyz_materials then + --return #c.xyz_materials < 2 + --else + --return true + --end + --end + --end + --return false +end +function UseZBTigress(c) + OPTSet(c.id + 1) + return true +end +function UseZBBullhorn(c) + OPTSet(c.id) + return true +end +function UseZBDrancia(c) + local xyzmat = c.xyz_materials + local countMatDetach = CardsMatchingFilter(xyzmat,ZBBestDetachFilter) + local oppMonFaceUp = SubGroup(OppField(),FilterPosition,POS_FACEUP) + local prio = SubGroup(oppMonFaceUp,FilterPriorityTarget) + if countMatDetach > 0 + and DestroyCheck(oppMonFaceUp,false,false,false,ZBDranciaDestroyFilter) > 0 + and #prio > 0 + then + return true + end + return false +end + +function ActiveZBTriangle(c) + if OPTCheck(c.id) + and not HasIDNotNegated(AIST(),c.id,true) + then + return true + end + return false +end +function UseZBTriangle(c) + if CardsMatchingFilter(AIField(),ZBTriangleFilter) > 0 + and OPTCheck(c.id) + then + OPTSet(c.id) + return true + elseif #AIMon() <= 4 + and OPTCheck(c.id) + then + OPTSet(c.id) + return true + end + return false +end + +function UseZBInvoker(c) + OPTSet(c.id) + return true +end +function UseZBTigerKing(c) + local oppMonFaceUp = SubGroup(OppMon(),FilterPosition,POS_FACEUP) + if #oppMonFaceUp > CardsMatchingFilter(oppMonFaceUp,FilterRace,RACE_BEASTWARRIOR) + then + OPTSet(c.id) + return true + end + return false +end + +function UseZBTTwisters(c) + if CardsMatchingFilter(OppST(),FilterPosition,POS_FACEDOWN) > 0 + and PriorityCheck(AIHand(),PRIO_DISCARD) > 3 + then + return true + end +end + +--[[LIST +77150143, -- ZBThroughblade +31755044, -- ZBViper +04367330, -- ZBRabbina +04145852, -- ZBRam +78872731, -- ZBMolmorat +67136033, -- ZBBearman +81275020, -- STerrotop +53932291, -- STaketomborg + +46060017, -- ZBTriangle +00675319, -- ZodiacSign +57103969, -- ZBTenki +10719350, -- ZBTensu + +48905153, -- ZBDrancia +85115440, -- ZBBullhorn +11510448, -- ZBTigress +74393852, -- ZBWildbow +30741334, -- ZBGiantrainer +96381979, -- ZBTigerKing +00581014, -- ZBDaigusto +04423206, -- ZBInvoker +]] +function ZodiacBeastEffectYesNo(id,card) + print("EffectYesNo",id) + local result = nil + if id == 81275020 then -- STerrotop + result = 1 + end + + if id == 77150143 then -- ZBThroughblade + result = 1 + end + if id == 04367330 then -- ZBRabbina + result = 1 + end + if id == 04145852 then -- ZBRam + result = 1 + end + if id == 78872731 then -- ZBMolmorat + result = 1 + end + + if id == 96381979 then -- ZBTigerKing + result = 1 + end + + if id == 46060017 then -- ZBTriangle + GlobalZBTriangle = 2 + result = 1 + end + + if result then + if result == 1 then + OPTSet(id) + end + end + + return result +end + +function ZodiacBeastYesNo(description_id) + -- Example implementation: continue attacking, let the ai decide otherwise + if (description_id/16) > 99999 then + print("YesNo - id: "..(description_id/16).." - desc: "..description_id) + if description_id/16 == 00675319 then -- ZodiacSign + if GlobalZBTriangle == 0 then + GlobalZodiacSign = 1 + return 1 + else + return 0 + end + end + else + print("YesNo - desc: "..description_id) + end +end + +function ZodiacBeastOption(options) + print("Options:") + for i=1,#options do + if options[i] == (67136033*16) then + return i + end + end + return nil +end + +------------------------ +-------- SUMMON -------- +------------------------ +function SummonZBThroughblade(c) + if CardsMatchingFilter(AIHand(),ZBFilter) > 1 + and PriorityCheck(AIHand(),PRIO_DISCARD) > 1 + then + OPTSet(c.id) + return true + end + return false +end +function SummonZBMolmorat(c) + if HasID(AIDeck(),c.id,true) + and not HasID(AIMon(),c.id,true) + and CardsMatchingFilter(AIMon(),ZBXyzFilter) == 0 + then + return true + end +end + +function SummonZBWildbow(c) + if CardsMatchingFilter(AIMon(),ZBXyzFilter) == 0 + then + GlobalZBSummonId = c.id + return true + end + return false +end +function SummonZBWildbow2(c) + if GlobalZBAttackSum < AI.GetPlayerLP(2) + then + GlobalZBSummonId = c.id + return true + end + return false +end +function SummonZBTigress(c) + local zbMon = SubGroup(AIGrave(),ZBMonFilter) + if CardsMatchingFilter(AIMon(),ZBXyzFilter) > 0 + and OPTCheck(c.id) + and CardsMatchingFilter(zbMon,FilterAttackMin,0) > 0 + then + GlobalZBSummonId = c.id + OPTSet(c.id) + return true + end + return false +end +function SummonZBTigress2(c) + if CardsMatchingFilter(AIMon(),ZBXyzFilter) > 0 + and OPTCheck(c.id) + then + GlobalZBSummonId = c.id + OPTSet(c.id) + return true + end + return false +end +function SummonZBTigress3(c) + if OPTCheck(c.id) + then + GlobalZBSummonId = c.id + OPTSet(c.id) + return true + end + return false +end +function SummonZBBullhorn(c) + if CardsMatchingFilter(AIMon(),ZBXyzFilter) > 0 + and not HasID(AIMon(),c.id,true) + and OPTCheck(c.id) + then + GlobalZBSummonId = c.id + return true + end + return false +end +function SummonZBDrancia(c) + if CardsMatchingFilter(AIMon(),ZBXyzFilter) > 0 + and not HasID(AIMon(),c.id,true) + then + GlobalZBSummonId = c.id + return true + end + return false +end + +function SummonZBBearman(c) + local bwMon = SubGroup(AIMon(),FilterRace,RACE_BEASTWARRIOR) + return + CardsMatchingFilter(bwMon,FilterLevel,4) == 2 + and not BattlePhaseCheck() +end + +function SummonZBGiantrainer(c) + return not BattlePhaseCheck() +end + +function SummonZBTigerKing(c) + return + OPTCheck(57103969) -- ZBTenki + and not HasID(UseLists({AIHand(),AIST()}),57103969,true) + or + OPTCheck(10719350) -- ZBTensu + and not HasID(UseLists({AIHand(),AIST()}),10719350,true) +end +function SummonZBDaigusto(c) + return + not HasIDNotNegated(AIMon(),c.id,true) + and CardsMatchingFilter(AIGrave(),FilterType,TYPE_MONSTER) >= 3 + and ( + not BattlePhaseCheck() + or CardsMatchingFilter(AIMon(),FilterPosition,POS_FACEUP_DEFENSE) > 0 + or TotalATK(AIMon(),2,FilterLevel,4) < 1800 + ) +end + +------------------------ +-------- TARGET -------- +------------------------ +function ZBInvokerTarget(cards,min,max) + return Add(cards,PRIO_TOFIELD,min) +end + +function ZBRabbinaTarget(cards,min,max) + if LocCheck(cards,LOCATION_GRAVE) then + return Add(cards,PRIO_TOHAND,max) + end +end +function ZBRamTarget(cards,min,max) + if LocCheck(cards,LOCATION_GRAVE) then + --CountPrioTarget(cards,PRIO_TOFIELD,1,nil,nil,nil,"ZBRamTarget") + return Add(cards,PRIO_TOFIELD,max,ZBNonXyzFilter) + end +end +function ZBMolmoratTarget(cards,min,max) + if LocCheck(cards,LOCATION_DECK) then + return Add(cards,PRIO_TOGRAVE,max) + end +end + +function ZBMaterialTarget(cards,min,max) + --print("ZBMaterialTarget: "..GlobalZBSummonId) + local result = Add(cards,PRIO_TOGRAVE,max,ZBXyzFilter) + local xyzmat = cards[1].xyz_materials + local ZBMon = SubGroup(xyzmat,ZBFilter) + GlobalZBAttackSum = 0 + for i=1,#ZBMon do + local c = ZBMon[i] + --print(c.id.." - attack: "..c.base_attack) + if c.base_attack > 0 then + GlobalZBAttackSum = GlobalZBAttackSum + c.base_attack + end + end + return result +end +function ZBAttachTarget(cards,min,max) + if LocCheck(cards,LOCATION_GRAVE) then + --CountPrioTarget(cards,PRIO_TOFIELD,1,nil,nil,nil,"ZBAttachTarget") + if OPTCheck(00581014) + and HasIDNotNegated(cards,00581014) + then -- ZBDaigusto + return {CurrentIndex} + end + return Add(cards,PRIO_TOFIELD,max) + end +end + +function ZBWildbowTarget(cards,min,max) + if LocCheck(cards,LOCATION_OVERLAY) then + --print("ZBWildbow - OVERLAY to GRAVE") + return Add(cards,PRIO_TOGRAVE,min) + end +end +function ZBTigressTarget(cards,min,max) + if LocCheck(cards,LOCATION_OVERLAY) then + --print("ZBTigressTarget - OVERLAY to GRAVE") + return Add(cards,PRIO_TOGRAVE,min) + end + if LocCheck(cards,LOCATION_GRAVE) then + --print("ZBTigressTarget - GRAVE to OVERLAY") + return ZBAttachTarget(cards,min,max) + end + if LocCheck(cards,LOCATION_MZONE) then + --print("ZBTigressTarget - MON") + return FindID(11510448,cards,true) -- Own + end +end +function ZBBullhornTarget(cards,min,max) + if LocCheck(cards,LOCATION_OVERLAY) then + --print("ZBBullhornTarget - OVERLAY to GRAVE") + return Add(cards,PRIO_TOGRAVE,min) + end + if LocCheck(cards,LOCATION_DECK) then + --CountPrioTarget(cards,PRIO_TOHAND,1,nil,nil,nil,"ZBBullhornTarget") + return Add(cards,PRIO_TOHAND,max) + end +end +function ZBDranciaTarget(cards,min,max) + if LocCheck(cards,LOCATION_OVERLAY) then + --print("ZBDranciaTarget - OVERLAY to GRAVE") + return Add(cards,PRIO_TOGRAVE,min) + end + return BestTargets(cards,max,TARGET_DESTROY,ZBDranciaDestroyFilter,nil,nil,c) +end + +GlobalZodiacSign = 0 +function ZodiacSignTarget(cards,min,max,c) + --print("ZodiacSignTarget") + CountPrioTarget(cards,PRIO_TOGRAVE,1,nil,nil,nil,"ZodiacSignTarget") + return Add(cards,PRIO_TOGRAVE,max) +end +GlobalZBTriangle = 0 +function ZBTriangleTarget(cards,min,max) + if LocCheck(cards,LOCATION_DECK) + then + print("ZBTriangleTarget - DECK to FIELD") + return Add(cards,PRIO_TOFIELD,max) + end + if GlobalZBTriangle == 1 then + print("ZBTriangleTarget - DESTROY") + if HasID(cards,57103969,true) -- Tenki + then + return FindID(57103969,cards,true) + elseif HasID(cards,53932291,true) -- STaketomborg + then + return FindID(53932291,cards,true) + elseif HasID(cards,81275020,true) -- STerrotop + then + return FindID(81275020,cards,true) + elseif HasID(cards,78872731,true) -- ZBMolmorat + then + return FindID(78872731,cards,true) + elseif HasID(cards,04367330,true) -- ZBRabbina + and CardsMatchingFilter(AIGrave(),ZBFilter,04367330) > 0 + then + return FindID(04367330,cards,true) + elseif HasID(cards,04145852,true) -- ZBRam + and CardsMatchingFilter(AIGrave(),ZBMonFilter,04145852) > 0 + then + return FindID(04145852,cards,true) + elseif HasID(cards,46060017,true) -- ZBTriangle + then + return FindID(46060017,cards,true) + else + return Add(cards,PRIO_TOGRAVE,ZBNonXyzFilter) + end + end + if GlobalZBTriangle == 2 then + print("ZBTriangleTarget - to MON") + return Add(cards,PRIO_TOGRAVE,max) + end +end +function ZBDirectionTarget(cards,min,max,source) + if FilterLocation(source,LOCATION_SZONE) then + if LocCheck(cards,LOCATION_DECK) then + --print("ZBDirectionTarget - DECK") + return Add(cards,PRIO_TOGRAVE,max) + end + if LocCheck(cards,LOCATION_MZONE) then + --print("ZBDirectionTarget - MON") + local result = {} + for i=1, #cards do + local c = cards[i] + result[i] = c + result[i].index = i + end + table.sort(result,function(a,b)return a.attack>b.attack end) + return {result[1].index} + end + end + if FilterLocation(source,LOCATION_GRAVE) then + --print("ZBDirectionTarget - GRAVE to DECK") + return Add(cards,PRIO_TODECK,max) + end +end + +--[[LIST +77150143, -- ZBThroughblade +31755044, -- ZBViper +04367330, -- ZBRabbina +04145852, -- ZBRam +78872731, -- ZBMolmorat +67136033, -- ZBBearman +81275020, -- STerrotop +53932291, -- STaketomborg + +46060017, -- ZBTriangle +00675319, -- ZodiacSign +57103969, -- ZBTenki +10719350, -- ZBTensu +73881652, -- ZBDirection +98954106, -- ZBJAvarice + +48905153, -- ZBDrancia +85115440, -- ZBBullhorn +11510448, -- ZBTigress +74393852, -- ZBWildbow +30741334, -- ZBGiantrainer +96381979, -- ZBTigerKing +00581014, -- ZBDaigusto +04423206, -- ZBInvoker +]] + +GlobalZBSummonId = 0 +function ZodiacBeastCard(cards,min,max,id,c) + -- add OnSelectCard logic here + if c then + --print("Card - CardId: ".. c.id .." - cards: "..#cards.." - min: "..min.." - max: "..max) + end + + if GlobalZodiacSign > 0 then + local result = ZodiacSignTarget(cards,min,max,id,c) + return result + end + + if id == 77150143 then -- ZBThroughblade + return Add(cards,PRIO_DISCARD,min) + end + if id == 78872731 then -- ZBMolmorat + return Add(cards,PRIO_TOGRAVE,min) + end + + if id == 31755044 then -- ZBViper + return Add(cards,PRIO_TOGRAVE,min) + end + if id == 04367330 then -- ZBRabbina + return ZBRabbinaTarget(cards,min,max) + end + if id == 04145852 then -- ZBRam + return ZBRamTarget(cards,min,max) + end + if id == 78872731 then -- ZBMolmorat + return ZBMolmoratTarget(cards,min,max) + end + + if id == 74393852 then -- ZBWildbow + return ZBWildbowTarget(cards,min,max) + end + if id == 11510448 then -- ZBTigress + return ZBTigressTarget(cards,min,max) + end + if id == 85115440 then -- ZBBullhorn + return ZBBullhornTarget(cards,min,max) + end + if id == 48905153 then -- ZBDrancia + return ZBDranciaTarget(cards,min,max,c) + end + + if id == 04423206 then -- ZBInvoker + return ZBInvokerTarget(cards,min,max) + end + if id == 96381979 then -- ZBTigerKing + return Add(cards,PRIO_TOHAND,max) + end + if id == 00581014 then -- ZBDaigusto + return Add(cards,PRIO_TODECK,max) + end + + if id == 46060017 then -- ZBTriangle + return ZBTriangleTarget(cards,min,max,c) + end + if id == 73881652 then -- ZBDirection + return ZBDirectionTarget(cards,min,max,c) + end + + if id == 57103969 then -- ZBTenki + return Add(cards,PRIO_TOHAND,max) + end + + if id == 98954106 then -- ZBJAvarice + return Add(cards,PRIO_TODECK,max) + end + + if not c + and GlobalZBSummonId ~= 0 then + local result = ZBMaterialTarget(cards,min,max) + GlobalZBSummonId = 0 + return result + end + + return nil +end +------------------------ +-------- CHAIN --------- +------------------------ +function ChainZBViper(c,aiTurn) + --print("ChainZBViper") + if NegateCheckCard(c) + or ZBRemovalCheckCard(c) + or CardsMatchingFilter(OppMon(),ArmadesCheck) > 0 + then + return true + end + if IsBattlePhase() then + local aimon,oppmon=GetBattlingMons() + local cc = nil + if aimon + then + cc = GetCardFromScript(aimon) + --print(aimon:GetCode(),oppmon:GetCode()) + if CardsEqual(c,aimon) + and aiTurn + then + return false + elseif ZBXyzFilter(cc) and aiTurn + then + return true + elseif WinsBattle(oppmon,aimon) + and ( + CardsEqual(c,aimon) + or ZBXyzFilter(cc) + ) + then + return true + + end + end + end + return false +end +function ChainZBDranciaOppTurn(c) + local oppFieldFaceUp = SubGroup(OppField(),FilterPosition,POS_FACEUP) + if (RemovalCheckCard(c) or NegateCheckCard(c)) + and #oppFieldFaceUp > 0 + then + OPTSet(c.id) + return true + end + local targets = SubGroup(oppFieldFaceUp,ZBDranciaDestroyFilter) + local prio = SubGroup(targets,FilterPriorityTarget) + if DestroyCheck(oppFieldFaceUp,false,false,false,ZBDranciaDestroyFilter) > 0 + then + local xyzmat = c.xyz_materials + if xyzmat == nil then xyzmat = {} end + + if IsBattlePhase() then + local aimon,oppmon=GetBattlingMons() + if WinsBattle(oppmon,aimon) + and CardsEqual(c,aimon) + then + OPTSet(c.id) + return true + end + end + if #prio>0 then + OPTSet(c.id) + return true + end + if Duel.CheckTiming(TIMING_END_PHASE) + and CardsMatchingFilter(xyzmat,ZBBestDetachFilter) > 0 + then + OPTSet(c.id) + return true + end + end + return false +end +function ChainZBDranciaAITurn(c) + local oppFieldFaceUp = SubGroup(OppField(),FilterPosition,POS_FACEUP) + if (RemovalCheckCard(c) or NegateCheckCard(c)) + and #oppFieldFaceUp > 0 + then + OPTSet(c.id) + return true + end + if DestroyCheck(oppFieldFaceUp,false,false,false,ZBDranciaDestroyFilter) > 0 + then + local xyzmat = c.xyz_materials + + if IsBattlePhase() then + local aimon,oppmon=GetBattlingMons() + if WinsBattle(oppmon,aimon) + and CardsEqual(c,aimon) + then + OPTSet(c.id) + return true + end + end + if Duel.GetCurrentPhase() == PHASE_END + and CardsMatchingFilter(xyzmat,ZBBestDetachFilter) > 0 + then + OPTSet(c.id) + return true + end + end + return false +end + +function ChainZBDirection(c) + if IsBattlePhase() then + if CardsMatchingFilter(OppMon(),ArmadesCheck) > 0 + then + return true + end + local aimon,oppmon=GetBattlingMons() + if aimon then + if ZBXyzFilter(GetCardFromScript(aimon)) + and WinsBattle(oppmon,aimon) + then + OPTSet(c.id) + return true + end + end + end + if Duel.GetCurrentPhase() == PHASE_END + or ZBRemovalCheckCard(c) + then + OPTSet(c.id) + return true + end + return false +end + +function ChainZBJAvarice(c,aiTurn) + if (Duel.GetCurrentPhase() == PHASE_END or aiTurn) + and CardsMatchingFilter(AIGrave(),ZBMonFilter) >= 5 + and Duel.GetCurrentChain() == 0 + or ZBRemovalCheckCard(c) + then + OPTSet(c.id) + return true + end +end + +function ZBRemovalCheckCard(c) + return + RemovalCheckCard(c,CATEGORY_DESTROY) + or RemovalCheckCard(c,CATEGORY_REMOVE) + or RemovalCheckCard(c,CATEGORY_TOGRAVE) + or RemovalCheckCard(c,CATEGORY_TOHAND) + or RemovalCheckCard(c,CATEGORY_REMOVE) +end + +GlobalRabbinaRam = 0 +function ChainZBRabbinaRam(target) + --print((target.description-1)/16) + local result = false + local xyzmat = target.xyz_materials + --print(#xyzmat) + if xyzmat then + local rabbinaMat = false + local ramMat = false + if HasID(xyzmat,04367330,true) then rabbinaMat = true end + if HasID(xyzmat,04145852,true) then ramMat = true end + --print(rabbinaMat,ramMat) + if rabbinaMat or ramMat + then + --for i=1,Duel.GetCurrentChain() do + local e = Duel.GetChainInfo(Duel.GetCurrentChain(),CHAININFO_TRIGGERING_EFFECT) + local g = Duel.GetChainInfo(Duel.GetCurrentChain(),CHAININFO_TARGET_CARDS) + local p = Duel.GetChainInfo(Duel.GetCurrentChain(),CHAININFO_TRIGGERING_PLAYER) + if p and (p == 1-player_ai) + and g + and e + then + local ce = GetCardFromScript(e:GetHandler()) + --print("OppCardid",ce.id) + g:ForEach( + function(c) + local c=GetCardFromScript(c) + --print("AICardid",c.id,c.description) + if CardsEqual(c,target) + and ( + FilterType(ce,TYPE_SPELL) and rabbinaMat + or FilterType(ce,TYPE_TRAP) and ramMat + or FilterType(ce,TYPE_MONSTER) + ) + then + --print("WORKS?",GlobalRabbinaRam) + --if GlobalRabbinaRam == 1 then + result = true + --end + --GlobalRabbinaRam = GlobalRabbinaRam + 1 + end + end + ) + end + --end + end + end + return result +end + +function IsOppLastChainEffect() + local p = Duel.GetChainInfo(Duel.GetCurrentChain(),CHAININFO_TRIGGERING_PLAYER) + if p and (p == 1-player_ai) then + return true + end + return false +end + +function ZodiacBeastChain(cards) + --for i=1, #cards do + --local c = cards[i] + --print("ZBChain",c.id) + --end + + -- add OnSelectChain logic here + if HasID(cards,4367330,IsOppLastChainEffect) then + print("CHAIN RABBINA") + GlobalZBSummonId = 1 -- For DettachTargets + return {1,CurrentIndex} + end + if HasID(cards,4145852,IsOppLastChainEffect) then + print("CHAIN RAM") + GlobalZBSummonId = 1 -- For DettachTargets + return {1,CurrentIndex} + end + if HasIDNotNegated(cards,83326048,ChainDimensionalBarrier) then + return Activate() + end + if HasIDNotNegated(cards,40605147,ChainNegation,4) and AI.GetPlayerLP(1)>1500 then -- Solemn Notice + return {1,CurrentIndex} + end + if HasIDNotNegated(cards,84749824,ChainNegation,4) and AI.GetPlayerLP(1)>2000 then -- Solemn Warning + return {1,CurrentIndex} + end + if HasIDNotNegated(cards,73881652,false,nil,LOCATION_GRAVE) -- ZBDirection + and Duel.GetCurrentChain() == 0 + and CardsMatchingFilter(AIGrave(),ZBMonFilter) >= 7 + then + return {1,CurrentIndex} + end + + local aiTurn = Duel.GetTurnPlayer() ~= (1 - player_ai) + + if HasIDNotNegated(cards,31755044,ChainZBViper,aiTurn) + then + return {1,CurrentIndex} + end + + -- OppTurn + if Duel.GetTurnPlayer() == (1 - player_ai) + then + if HasIDNotNegated(cards,73881652,false,nil,LOCATION_SZONE,ChainZBDirection) then + return {1,CurrentIndex} + end + if HasIDNotNegated(cards,48905153,ChainZBDranciaOppTurn) + then + return {1,CurrentIndex} + end + if HasIDNotNegated(cards,98954106,ChainZBJAvarice,false) then + return {1,CurrentIndex} + end + else + if HasIDNotNegated(cards,48905153,ChainZBDranciaAITurn) + then + return {1,CurrentIndex} + end + if HasIDNotNegated(cards,98954106,ChainZBJAvarice,true) then + return {1,CurrentIndex} + end + end + + return nil +end +------------------------ +-------- BATTLE -------- +------------------------ + +--[[LIST +77150143, -- ZBThroughblade +31755044, -- ZBViper +04367330, -- ZBRabbina +04145852, -- ZBRam +78872731, -- ZBMolmorat +67136033, -- ZBBearman +81275020, -- STerrotop +53932291, -- STaketomborg + +46060017, -- ZBTriangle +00675319, -- ZodiacSign +57103969, -- ZBTenki +10719350, -- ZBTensu +73881652, -- ZBDirection +98954106, -- ZBJAvarice + +48905153, -- ZBDrancia +85115440, -- ZBBullhorn +11510448, -- ZBTigress +74393852, -- ZBWildbow +30741334, -- ZBGiantrainer +96381979, -- ZBTigerKing +00581014, -- ZBDaigusto +04423206, -- ZBInvoker +]] +ZodiacBeastAtt={ +48905153, -- ZBDrancia +85115440, -- ZBBullhorn +11510448, -- ZBTigress +74393852, -- ZBWildbow +} +ZodiacBeastDef={ +31755044, -- ZBViper +04367330, -- ZBRabbina +04145852, -- ZBRam +78872731, -- ZBMolmorat +} +function ZodiacBeastPosition(id,available) + result = nil + for i=1,#ZodiacBeastAtt do + if ZodiacBeastAtt[i]==id + then + result=1 + end + end + for i=1,#ZodiacBeastDef do + if ZodiacBeastDef[i]==id + then + result=4 + end + end + -- add OnSelectPosition logic here + if id == 85115440 -- ZBBullhorn + then + --print("GlobalZBAttackSum: "..GlobalZBAttackSum) + if GlobalZBAttackSum >= 1200 + and #OppMon() == 0 + or + GlobalZBAttackSum >= OppGetStrongestAttack() + and #OppMon() > 0 + or HasID(UseLists({AIHand(),AIMon()}),31755044,true) + then + result = 1 + else + result = 4 + end + end + return result +end + +function ZodiacBeastBattleCommand(cards, activatable) + local targets = OppMon() + local attackable = {} + local mustattack = {} + for i=1,#targets do + if targets[i]:is_affected_by(EFFECT_CANNOT_BE_BATTLE_TARGET)==0 then + attackable[#attackable+1]=targets[i] + end + if targets[i]:is_affected_by(EFFECT_MUST_BE_ATTACKED)>0 then + mustattack[#mustattack+1]=targets[i] + end + end + if #mustattack>0 then + targets = mustattack + else + targets = attackable + end + + if HasIDNotNegated(cards,48905153) -- ZBDrancia + and CanWinBattle(cards[CurrentIndex],targets) + then + return Attack(CurrentIndex) + end + + return nil +end + +--[[LIST +77150143, -- ZBThroughblade +31755044, -- ZBViper +04367330, -- ZBRabbina +04145852, -- ZBRam +78872731, -- ZBMolmorat +67136033, -- ZBBearman +81275020, -- STerrotop +53932291, -- STaketomborg + +46060017, -- ZBTriangle +00675319, -- ZodiacSign +57103969, -- ZBTenki +10719350, -- ZBTensu +73881652, -- ZBDirection +98954106, -- ZBJAvarice + +48905153, -- ZBDrancia +85115440, -- ZBBullhorn +11510448, -- ZBTigress +74393852, -- ZBWildbow +30741334, -- ZBGiantrainer +96381979, -- ZBTigerKing +00581014, -- ZBDaigusto +04423206, -- ZBInvoker +]] diff --git a/ai/mod/AICheckList.lua b/ai/mod/AICheckList.lua index f00077b3..7ab53963 100644 --- a/ai/mod/AICheckList.lua +++ b/ai/mod/AICheckList.lua @@ -315,9 +315,10 @@ NSBL={ 69884162,25259669,63060238,50720316, -- Neos Alius, Goblindbergh, Blazeman,Shadow Mist 79979666,21565445,47826112,13073850, -- Bubbleman, Atlantean Neptabyss, Poseidra, Qli Stealth 51194046,18326736,58069384,10443957, -- Qli Monolith, Planetellarknight Ptolemaios, Cyber Dragon Nova, Infinity -81992475,59438930,01050186, -- BA Barbar, Ghost Ogre, Satellarknight Unukalhai +81992475,59438930,01050186,16947147, -- BA Barbar, Ghost Ogre, Satellarknight Unukalhai, Speedroid Menko 29888389,47106439,53180020,27796375, -- Gishki Shadow, Vision, Nekroz Exa, Sorcerer 67696066,68819554,44635489, -- Trick Clown, Damage Juggler, Siat +81275020,53932291, -- Speedroid Terrortop, Taketomborg } function NormalSummonBlacklist(CardId) for i=1,#NSBL do @@ -424,7 +425,9 @@ SSBL={ 18326736,58069384,10443957, -- Planetellarknight Ptolemaios, Cyber Dragon Nova, Infinity 27552504,18386170,65305468, -- Beatrice, Pilgrim, F0 56840427,16051717,30100551, -- Utopia Ray, Raikiri, Minerva -31292357,44635489, -- Hat Tricker, Siat +31292357,44635489,01621413, -- Hat Tricker, Siat, Requiem Dragon +81275020,53932291,91949988, -- Speedroid Terrortop, Taketomborg, Gaia Dragon +85115440,48905153, -- Zodiac Beast Drancia,Bullhorn } @@ -690,7 +693,8 @@ Unchainable={ 84536654,50608164,06511113,30575681, -- Form Change, Koga, Rafflesia, Treacherous, Bedwyr 27552504,18386170,60743819,20036055, -- Beatrice, Pilgrim, Fiend Griefing, Traveler 36553319,65305468,20513882,31222701, -- Farfa, F0, Painful Escape, Wavering Eyes -43898403,60082869, -- Twin Twister, Dust Tornado +43898403,60082869,83326048,69599136, -- Twin Twister, Dust Tornado, Dimensional Barrier, Floodgate Trap Hole +16947147,08267140, -- Speedroid Menko, Cosmic Cyclone } function isUnchainableTogether(CardId) for i=1,#Unchainable do @@ -912,7 +916,10 @@ ScriptedCards ={ 01050186,19508728,27796375,53180020, -- Satellarknight Unukalhai, Moon Mirror Shield, Nekroz Exa, Sorcerer 29888389,47106439,68819554,67696066, -- Gishki Shadow, Vision, Performage Damage Juggler, Trick Clown 43898403,63519819,60082869,27346636, -- Twin Twister, Thousand-Eyes Restrict, Dust Tornado, Gladbeast Heraklinos -63767246, -- Titanic Galaxy +63767246,81275020,53932291,01621413, -- Titanic Galaxy, Speedroid Terrortop, Taketomborg, Requiem Dragon +66994718,77414722,58851034,83326048, -- Raptor's Gust, Magic Jammer, Cursed Seal, Dimensional Barrier +85115440,48905153,69599136,43422537, -- Zodiac Beast Drancia,Bullhorn, Floodgate Trap Hole, Double Summon +08267140,50954680,75286621,48229808, -- Cosmic Cyclone, Crystal Wing, Merkabah, Black Flame Horus } function CardIsScripted(CardId) for i=1,#ScriptedCards do @@ -1077,3 +1084,21 @@ function GetGraveTargetPriority(c) return GraveTargetPriority[id] or 0 end +--[[RemoveOnSummonFilter={ +[82633039] = HasMaterials -- Castel + +} +function RemoveOnSummon(c) + if Negated(c) then + return false + end + for id,filter in pairs(RemoveOnSummonFilter) do + if c.id == id and filter(c) then + return true + end + end +end ]] + + + + diff --git a/ai/mod/AIHelperFunctions.lua b/ai/mod/AIHelperFunctions.lua index 623ad287..418416b9 100644 --- a/ai/mod/AIHelperFunctions.lua +++ b/ai/mod/AIHelperFunctions.lua @@ -1901,6 +1901,7 @@ function ApplyATKBoosts(Cards) end end + -- Shrink if HasIDNotNegated(AICards(),55713623,true) then for i=1,#Cards do @@ -1955,6 +1956,20 @@ function ApplyATKBoosts(Cards) end end + -- Crystal Wing + for i,c in pairs(Cards) do + if c.id == 50954680 -- Crystal Wing + and NotNegated(c) + then + local targets = FilterController(c,1) and OppMon() or AIMon() + if CardsMatchingFilter(targets,CrystalWingFilter,c)>0 + then + SortByATK(targets,true) + c.attack=(c.attack or 0)+targets[1].attack + end + end + end + -- unknown face-down monsters for i=1,#Cards do local c = Cards[i] @@ -1993,6 +2008,7 @@ function ResetOncePerTurnGlobals() if GlobalTurn == Duel.GetTurnCount() then return end + GlobalSummonRestriction = nil GlobalTurn = Duel.GetTurnCount() Global1PTLylaST = nil Global1PTGenome = nil @@ -2015,6 +2031,7 @@ function ResetOncePerTurnGlobals() GlobalSummonedThisTurn = 0 GlobalSoulExchangeActivated = 0 GlobalCostDownActivated = 0 + GlobalInfiniteLoopCheck = {} end function Globals() diff --git a/ai/mod/AIHelperFunctions2.lua b/ai/mod/AIHelperFunctions2.lua index 00cd584e..e77fc42e 100644 --- a/ai/mod/AIHelperFunctions2.lua +++ b/ai/mod/AIHelperFunctions2.lua @@ -7,9 +7,10 @@ function OnAIGoingFirstSecond(name) if name=="AI_Harpie" or name=="AI_Blackwing" or name=="AI_Shaddoll" - or name=="AI_Kozmo" + --or name=="AI_Kozmo" or name=="AI_Lightsworn" or name=="AI_GladiatorBeast" + or name=="AI_Fluffal" then player_ai = 1 result = 0 @@ -33,6 +34,7 @@ function OnPlayerGoingFirstSecond(decision) return end function Startup() + DeckCheck() if PRINT_DRAW and PRINT_DRAW == 1 then -- display draws in debug console local e4=Effect.GlobalEffect() @@ -300,8 +302,11 @@ function OppGetWeakestAttDef() return result end function OppHasStrongestMonster(skipbonus) - return #OppMon()>0 and ((AIGetStrongestAttack(skipbonus) <= OppGetStrongestAttDef()) - or HasID(AIMon(),68535320,true) and FireHandCheck() or HasID(AIMon(),95929069,true) and IceHandCheck()) + return #OppMon()>0 + and ((AIGetStrongestAttack(skipbonus) <= OppGetStrongestAttDef()) + or HasID(AIMon(),68535320,true) and FireHandCheck() + or HasID(AIMon(),95929069,true) and IceHandCheck()) + and not HasIDNotNegated(AIMon(),65305468,true) end function OppHasFacedownMonster() local cards=OppMon() @@ -485,10 +490,6 @@ function RemovalCheckCard(target,category,cardtype,targeted,chainlink,filter,opt CATEGORY_TOGRAVE,CATEGORY_TOHAND, CATEGORY_TODECK,CATEGORY_CONTROL, CATEGORY_CUSTOM_FACEDOWN,CATEGORY_CUSTOM_ATTACH} - if target and not FilterCheck(target,filter,opt) - then - return false - end if category then if type(category)=="table" then cat=category @@ -514,7 +515,8 @@ function RemovalCheckCard(target,category,cardtype,targeted,chainlink,filter,opt return false end if e and e:GetHandler() - and Negated(e:GetHandler()) + and (Negated(e:GetHandler()) + or not FilterCheck(e:GetHandler(),filter,opt)) then return false end @@ -524,7 +526,7 @@ function RemovalCheckCard(target,category,cardtype,targeted,chainlink,filter,opt if cg and target then local card=false cg:ForEach(function(c) - local c=GetCardFromScript(c,Field()) + local c=GetCardFromScript(c) if CardsEqual(c,target) then card=c end end) @@ -583,11 +585,6 @@ function RemovalCheckList(cards,category,type,targeted,chainlink,filter,opt) end function NegateCheckCard(target,type,chainlink,filter,opt) if Duel.GetCurrentChain() == 0 then return false end - if card and filter and (opt and not filter(card,opt) - or opt==nil and not filter(card)) - then - return false - end local a=1 local b=Duel.GetCurrentChain() if chainlink then @@ -601,6 +598,12 @@ function NegateCheckCard(target,type,chainlink,filter,opt) and CheckNegated(i) and (type==nil or e:GetHandler():IsType(type)) then + if e and e:GetHandler() + and (Negated(e:GetHandler()) + or not FilterCheck(e:GetHandler(),filter,opt)) + then + return false + end if target==nil then return g else @@ -619,7 +622,7 @@ function NegateCheckCard(target,type,chainlink,filter,opt) if g and target then local card=false g:ForEach(function(c) - local c=GetCardFromScript(c,Field()) + local c=GetCardFromScript(c) if CardsEqual(c,target) then card=c end @@ -649,7 +652,9 @@ function NegateCheck(id) if id==nil then return cg end - if cg and id~=nil and cg:IsExists(function(c) return c:IsControler(player_ai) and c:IsCode(id) end, 1, nil) then + if cg and id~=nil + and cg:IsExists(function(c) return c:IsControler(player_ai) and c:IsCode(id) end, 1, nil) + then return true end end @@ -700,10 +705,12 @@ function BestTargets(cards,count,target,filter,opt,immuneCheck,source) c.prio = 2 end else - if FilterPosition(c,POS_FACEUP) then - c.prio = 4 - else + if FilterPosition(c,POS_FACEUP) + and not FilterType(c,TYPE_PENDULUM) + then c.prio = 3 + else + c.prio = 4 end end if c.prio>0 then @@ -749,6 +756,9 @@ function BestTargets(cards,count,target,filter,opt,immuneCheck,source) if CurrentOwner(c) == 1 then c.prio = -1 * c.prio end + if not ShouldRemove(c) then + c.prio = -1 + end if target == TARGET_PROTECT then c.prio = -1 * c.prio end @@ -778,7 +788,8 @@ function BestTargets(cards,count,target,filter,opt,immuneCheck,source) return result end function RandomTargets(cards,count,filter,opt) - result={} + local count = count or 1 + local result={} for i=1,#cards do local c = cards[i] c.index = i @@ -947,7 +958,7 @@ function Shuffle(t) return t end -- returns true, if the source is expected to win a battle against the target -function WinsBattle(source,target) +--[[function WinsBattle(source,target) if not (source and target) then return false end source=GetScriptFromCard(source) target=GetScriptFromCard(target) @@ -960,8 +971,24 @@ function WinsBattle(source,target) and source:IsPosition(POS_FACEUP_ATTACK) and not target:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) and not source:IsHasEffect(EFFECT_CANNOT_ATTACK) -end -function NotNegated(c) +end]] +function WinsBattle(source,target) + if not (source and target) then return false end + source=GetCardFromScript(source) + target=GetCardFromScript(target) + ApplyATKBoosts({source,target}) + return FilterLocation(source,LOCATION_MZONE) + and FilterLocation(target,LOCATION_MZONE) + and (FilterPosition(target,POS_FACEUP_ATTACK) + and source.attack>=target.attack + or FilterPosition(target,POS_FACEUP_DEFENSE) + and source.attack>target.defense) + and FilterPosition(source,POS_FACEUP_ATTACK) + and not FilterAffected(target,EFFECT_INDESTRUCTABLE_BATTLE) + and not FilterAffected(source,EFFECT_CANNOT_ATTACK) +end +function NotNegated(c,onfieldonly) + onfieldonly = onfieldonly or false local disabled = false local id local type @@ -984,52 +1011,68 @@ function NotNegated(c) id = c.id player = CurrentMonOwner(c.cardid) end + local check = nil if not GlobalNegatedLoop then GlobalNegatedLoop = true - if FilterType(c,TYPE_SPELL) and id~=61740673 - and (HasIDNotNegated(Field(),84636823,true,nil,nil,POS_FACEUP) -- Spell Canceller - or HasIDNotNegated(Field(),61740673,true,nil,nil,POS_FACEUP) -- Imperial Order - or HasIDNotNegated(OppMon(),33198837,true,nil,nil,POS_FACEUP) -- Naturia Beast - or HasIDNotNegated(OppMon(),99916754,true,nil,nil,POS_FACEUP)) -- Naturia Exterio - then + check = NotNegated + end + if FilterType(c,TYPE_SPELL) and id~=61740673 + and (HasID(Field(),84636823,true,nil,nil,POS_FACEUP,check) -- Spell Canceller + or HasID(Field(),61740673,true,nil,nil,POS_FACEUP,check) -- Imperial Order + or HasID(OppMon(),33198837,true,nil,nil,POS_FACEUP,check) -- Naturia Beast + or HasID(OppMon(),99916754,true,nil,nil,POS_FACEUP,check)) -- Naturia Exterio + then + return false + end + if FilterType(c,TYPE_TRAP) and id~=51452091 + and (HasID(Field(),77585513,true,nil,nil,POS_FACEUP,check) -- Jinzo + or HasID(Field(),51452091,true,nil,nil,POS_FACEUP,check) -- Royal Decree + or HasID(OppMon(),02956282,true,nil,nil,POS_FACEUP,check) and #OppGrave()>1 -- Naturia Barkion + or HasID(OppMon(),99916754,true,nil,nil,POS_FACEUP,check)) -- Naturia Exterio + or GlobalTrapStun == Duel.GetTurnCount() + then + return false + end + if FilterType(c,TYPE_MONSTER) + then + if Duel.GetTurnCount()==GlobalFeatherStorm then return false end - if FilterType(c,TYPE_TRAP) and id~=51452091 - and (HasIDNotNegated(Field(),77585513,true,nil,nil,POS_FACEUP) -- Jinzo - or HasIDNotNegated(Field(),51452091,true,nil,nil,POS_FACEUP) -- Royal Decree - or HasIDNotNegated(OppMon(),02956282,true,nil,nil,POS_FACEUP) and #OppGrave()>1 -- Naturia Barkion - or HasIDNotNegated(OppMon(),99916754,true,nil,nil,POS_FACEUP)) -- Naturia Exterio - or GlobalTrapStun == Duel.GetTurnCount() - then + if SkillDrainCheck() then + return onfieldonly + end + if HasID(Field(),33746252,true,nil,nil,POS_FACEUP,check) then -- Majesty's Fiend return false end - if FilterType(c,TYPE_MONSTER) - then - if SkillDrainCheck() then - return false - end - if HasIDNotNegated(Field(),33746252,true,nil,nil,POS_FACEUP) then -- Majesty's Fiend - return false - end - if HasIDNotNegated(Field(),56784842,true,nil,nil,POS_FACEUP) then -- Angel 07 - return false - end - if HasIDNotNegated(Field(),53341729,true,nil,nil,POS_FACEUP) then -- Light-Imprisoning Mirror - return not FilterAttribute(c,ATTRIBUTE_LIGHT) - end - if HasIDNotNegated(Field(),99735427,true,nil,nil,POS_FACEUP) then -- Shadow-Imprisoning Mirror - return not FilterAttribute(c,ATTRIBUTE_DARK) + if HasID(Field(),56784842,true,nil,nil,POS_FACEUP,check) then -- Angel 07 + return false + end + if HasID(Field(),53341729,true,nil,nil,POS_FACEUP,check) then -- Light-Imprisoning Mirror + return onfieldonly and not FilterAttribute(c,ATTRIBUTE_LIGHT) + end + if HasID(Field(),99735427,true,nil,nil,POS_FACEUP,check) then -- Shadow-Imprisoning Mirror + return onfieldonly and not FilterAttribute(c,ATTRIBUTE_DARK) + end + if (FilterLocation(c,LOCATION_EXTRA) or FilterPreviousLocation(c,LOCATION_EXTRA)) + and HasID(Field(),89463537,true,nil,nil,POS_FACEUP,check) -- Necroz Unicore + then + return onfieldonly and false + end + if disabled and onfieldonly then + if HasID(OppST(),50078509,true,CardTargetCheck,c) then -- Fiendish Chain + return true end - if FilterLocation(c,LOCATION_EXTRA) - and HasIDNotNegated(Field(),89463537,true,nil,nil,POS_FACEUP) -- Necroz Unicore - then - return false + if HasID(OppST(),25542642,true,CardTargetCheck,c) then -- Fog Blade + return true end - if GlobalCoinormaTurn == Duel.GetTurnCount() - then - return PredictionPrincessFilter(c) + if HasID(OppMon(),63746411,true,CardTargetCheck,c) then -- Giant Hand + return true end end + if GlobalCoinormaTurn == Duel.GetTurnCount() + then + return PredictionPrincessFilter(c) + end end GlobalNegatedLoop=false return not disabled @@ -1044,6 +1087,7 @@ function DestroyFilter(c,nontarget,skipblacklist,skipignore) and (skipblacklist or not (DestroyBlacklist(c) and FilterPublic(c))) and (nontarget or not RemovalCheckCard(c)) + and ShouldRemove(c) end function DestroyFilterIgnore(c,nontarget,skipblacklist,skipignore) return DestroyFilter(c,skipblacklist) @@ -1073,13 +1117,19 @@ function FilterRace(c,race) end end function FilterLevel(c,level) - return FilterType(c,TYPE_MONSTER) and c.level==level + return FilterType(c,TYPE_MONSTER) + and not FilterType(c,TYPE_XYZ) + and c.level==level end function FilterLevelMin(c,level) - return FilterType(c,TYPE_MONSTER) and c.level>=level + return FilterType(c,TYPE_MONSTER) + and not FilterType(c,TYPE_XYZ) + and c.level>=level end function FilterLevelMax(c,level) - return FilterType(c,TYPE_MONSTER) and c.level<=level + return FilterType(c,TYPE_MONSTER) + and not FilterType(c,TYPE_XYZ) + and c.level<=level end function FilterRank(c,rank) if c.GetCode then @@ -1149,7 +1199,7 @@ function FilterDefenseMin(c,defense) else def = c.defense end - return FilterType(c,TYPE_MONSTER) and def<=defense + return FilterType(c,TYPE_MONSTER) and def>=defense end function FilterDefenseMax(c,defense) local def = 0 @@ -1161,9 +1211,11 @@ function FilterDefenseMax(c,defense) return FilterType(c,TYPE_MONSTER) and def<=defense end function FilterID(c,id) + c=GetCardFromScript(c) return c.id==id end function ExcludeID(c,id) + c=GetCardFromScript(c) return c.id~=id end function FilterCard(c1,c2) @@ -1173,12 +1225,22 @@ function ExcludeCard(c1,c2) return not CardsEqual(c1,c2) end function FilterOriginalID(c,id) + c=GetCardFromScript(c) return c.original_id==id end function ExcludeOriginalID(c,id) + c=GetCardFromScript(c) return c.original_id~=id end function FilterPosition(c,pos) + if c == nil then + print("Warning: FilterPosition null card") + PrintCallingFunction() + end + if pos == nil then + print("Warning: FilterPosition null pos") + PrintCallingFunction() + end if c.GetCode then return c:IsPosition(pos) else @@ -1197,6 +1259,7 @@ function FilterLocation(c,loc) end end function FilterPreviousLocation(c,loc) + c=GetCardFromScript(c) return bit32.band(c.previous_location,loc)>0 end function FilterStatus(c,status) @@ -1232,7 +1295,7 @@ function FilterPublic(c) return STATUS_IS_PUBLIC and FilterStatus(c,STATUS_IS_PUBLIC) or c.is_public and c:is_public() or FilterPosition(c,POS_FACEUP) - or FilterSummon(c,SUMMON_TYPE_SPECIAL) -- TODO: find better check + or FilterSummon(c,SUMMON_TYPE_SPECIAL) end function FilterPrivate(c) return not FilterPublic(c) @@ -1300,15 +1363,25 @@ function FilterTuner(c,level) and FilterType(c,TYPE_TUNER) and (not level or FilterLevel(c,level)) end +function FilterNonTuner(c,level) + return FilterType(c,TYPE_MONSTER) + and not FilterType(c,TYPE_TUNER) + and (not level or FilterLevel(c,level)) +end +function FilterBackrow(c) + return FilterType(c,TYPE_SPELL+TYPE_TRAP) + and FilterPosition(c,POS_FACEDOWN) + and FilterLocation(c,LOCATION_SZONE) +end function Scale(c) -- backwards compatibility return c.lscale end function ScaleCheck(p) - local cards=AIST() + local cards=AIPendulum() local result = 0 local count = 0 if p == 2 then - cards=OppST() + cards=OppPendulum() end for i=1,#cards do if bit32.band(cards[i].type,TYPE_PENDULUM)>0 then @@ -1325,6 +1398,25 @@ function ScaleCheck(p) end return nil end +function GetScales(p) + p=p or 1 + local result={} + for i,c in pairs(AllPendulum()) do + if FilterType(c,TYPE_PENDULUM) + and FilterController(c,p) + then + result[#result+1]=c + end + end + if #result==0 then + return false + end + return result[1],result[2] +end +function CanPendulumSummon(p) + local l,r = GetScales(p) + return l and r and math.abs(Scale(l)-Scale(r))>1 +end function FilterController(c,player) if not player then player = 1 end c=GetCardFromScript(c) @@ -1363,6 +1455,59 @@ function FilterFlipFaceup(c,checkopt) and FilterPosition(c,POS_FACEUP) and (not checkopt or OPTCheck(c.id)) end +function FilterInvert(c,args) + -- invert another filter, pass either the filter, + -- or a list containing filter + arguments + local filter = args + local opt = nil + if type(filter) == "table" then + filter = args[1] + opt = args[2] + end + return not FilterCheck(c,filter,opt) +end +GlobalSummonRestriction = nil +function FilterSummonRestriction(c) + local filter = GlobalSummonRestriction + if not filter then + return true + end + if type(filter) == "number" then + return FilterSet(c,filter) + end + return filter(c) +end +function FilterCrippled(c) + -- check, if a targed is crippled in any way + -- negated, cannot attack, face-down and cannot change position, stuff like that + if not FilterLocation(c,LOCATION_ONFIELD) then + return false + end + if Negated(c) + and not SkillDrainCheck() + and c.attack<2200 -- negated beatstick still useful + then + return true + end + if c.base_attack>=1500 -- don't consider crippled, if the ATK is low to begin with + and (c.attack<=0.5*c.base_attack + or FilterAffected(c,EFFECT_CANNOT_ATTACK)) + then + return true + end + if FilterPosition(c,POS_FACEDOWN) + and FilterAffected(c,EFFECT_CANNOT_CHANGE_POSITION) + then + return true + end + return false +end +function FilterNotCrippled(c) + return not FilterCrippled(c) +end +function FilterEquipped(c,id) + return CardsMatchingFilter(c:get_equipped_cards(),FilterID,id)>0 +end GlobalTargetList = {} -- function to prevent multiple cards to target the same card in the same chain function TargetCheck(card) @@ -1509,6 +1654,20 @@ function NormalSummonCount(player) if player == nil then player = player_ai end return Duel.GetActivityCount(player,ACTIVITY_NORMALSUMMON) end +GlobalExtraSummons={} +function NormalSummonsAvailable(player) + player = player or player_ai + local summons = NormalSummonCount(player) + local available = (GlobalExtraSummons[Duel.GetTurnCount] or 0) + 1 + if HasIDNotNegated(AIMon(),03113836,true) then -- Seraphinite + available = 2 + end + return available-summons +end +function NormalSummonAdd(amount) + amount=amount or 1 + GlobalExtraSummons[Duel.GetTurnCount()]=(GlobalExtraSummons[Duel.GetTurnCount()] or 0)+1 +end function SpecialSummonCheck(player) if player == nil then player = player_ai end -- wrapper for changed card script function @@ -1655,10 +1814,12 @@ function PriorityTarget(c,destroycheck,loc,filter,opt) -- preferred target for r if loc == nil then loc = LOCATION_ONFIELD end if loc == LOCATION_ONFIELD then if FilterType(c,TYPE_MONSTER) - and (bit32.band(c.type,TYPE_FUSION+TYPE_RITUAL+TYPE_XYZ+TYPE_SYNCHRO)>0 + and (bit32.band(c.type,TYPE_FUSION+TYPE_RITUAL+TYPE_SYNCHRO)>0 or c.level>4 and c.attack>2000 - or c.attack>=2500) + or c.attack>=2500 + or FilterType(c,TYPE_XYZ) and c.xyz_material_count>0) and not (FiendishCheck(c) and AIGetStrongestAttack()>c.attack) + and not FilterCrippled(c) then result = true end @@ -1679,6 +1840,7 @@ function PriorityTarget(c,destroycheck,loc,filter,opt) -- preferred target for r end if result and (not destroycheck or DestroyFilter(c)) and FilterPublic(c) and (filter == nil or (opt==nil and filter(c) or filter(c,opt))) + and ShouldRemove(c) then return true end @@ -1707,7 +1869,7 @@ end -- Function to determine, if a player can special summon -- true = player can special summon GlobalDuality = 0 -function DualityCheck(player) +function DualityCheck(player,skipmaxx) local cards = UseLists(AIField(),OppField()) if player == nil then player = 1 end if player == 1 and Duel.GetTurnCount()==GlobalDuality then @@ -1734,9 +1896,16 @@ function DualityCheck(player) if player == 2 and HasIDNotNegated(AIMon(),72634965,true,nil,nil,POS_FACEUP) then return false -- Vanity's Ruler end + if player == 1 and not skipmaxx and not MaxxCheck() then -- Maxx "C" + return false + end return true end +function CanSpecialSummon(player,skipmaxx) -- better name? + return DualityCheck(player,skipmaxx) -- keep old name for backwards compatibility +end + -- Function to determine, if a player's cards are being banished -- instead of being sent to the grave -- true = cards are not being banished @@ -1872,6 +2041,7 @@ end function BattleTargetCheck(c,source) return c:is_affected_by(EFFECT_INDESTRUCTABLE_BATTLE)==0 and c:is_affected_by(EFFECT_CANNOT_BE_BATTLE_TARGET)==0 + and c:is_affected_by(EFFECT_CANNOT_SELECT_BATTLE_TARGET)==0 and DestroyCountCheck(c,TYPE_MONSTER,true) and AttackBlacklistCheck(c,source) end @@ -2022,6 +2192,9 @@ function CrashCheck(c) if c.id == 29357956 and not FilterLocation(c,LOCATION_MZONE) then return true -- Nerokius end + if FilterSet(c,0xd3) then -- Kaiju + return true + end if CurrentMonOwner(c.cardid) ~= c.owner and StrongerAttackerCheck(c,AIMon()) then @@ -2153,7 +2326,7 @@ function CanChangePos(c) end function CanAttack(c,direct,filter,opt) return (FilterPosition(c,POS_FACEUP_ATTACK) - or FilterPosition(c,POS_DEFENSE) and CanChangePos(c)) + or (FilterPosition(c,POS_DEFENSE) and CanChangePos(c) and not IsBattlePhase())) and AvailableAttacks(c)>0 and not FilterAffected(c,EFFECT_CANNOT_ATTACK) and (not direct or not FilterAffected(c,EFFECT_CANNOT_DIRECT_ATTACK)) @@ -2213,6 +2386,9 @@ end -- function to determine, if a card can attack for game -- on an opponent's monster, or directly function CanFinishGame(c,target,atk,bonus,malus) + if FilterPosition(c,POS_DEFENSE) then + return false + end if not bonus then bonus = 0 end @@ -2452,13 +2628,7 @@ function CardTargetCheck(c,target) target=GetScriptFromCard(target) return c:IsHasCardTarget(target) end - for i=1,#Field() do - local tc=GetScriptFromCard(Field()[i]) - if tc and c:IsHasCardTarget(tc) then - result = result +1 - end - end - return result + return GetScriptFromCard(c):GetCardTargetCount()>0 end function FiendishCheck(target) for i=1,#Field() do @@ -2511,7 +2681,7 @@ function ChainCheck(id,player,link,filter,opt) if e and e:GetHandler() then c = e:GetHandler() if c:GetCode() == id - and not player or c:GetControler() == player + and (not player or c:GetControler() == player) and FilterCheck(c,filter,opt) then result = result+1 @@ -2788,8 +2958,27 @@ function NegateDragonRuler(c,e,source,link) return nil end +function NegateUpstart(c,e,source,link) + if GetBurnDamage(nil,link) then + return nil + end + return 0 +end + +function NegateOTKStopper(c,e,source,link) + if (BattlePhaseCheck() + or IsBattlePhase()) + and Duel.GetTurnPlayer()==player_ai + and #OppMon()==0 + and ExpectedDamage(2)>=AI.GetPlayerLP(2) + then + return 4 + end + return nil +end + NegatePriority={ -[70368879] = 0, -- Upstart +[70368879] = NegateUpstart, -- Upstart [32807846] = 0, -- RotA [12538374] = 0, -- Treeborn [19748583] = 0, -- Gwen @@ -2808,6 +2997,18 @@ NegatePriority={ [26400609] = NegateDragonRuler, [89399912] = NegateDragonRuler, [90411554] = NegateDragonRuler, + +[65367484] = 3, -- Thrasher + +[16947147] = NegateOTKStopper, -- Menko +[61318483] = NegateOTKStopper, -- Ghostrick Jackfrost +[54512827] = NegateOTKStopper, -- Ghostrick Lantern +[02830693] = NegateOTKStopper, -- Rainbow Kuriboh +[18964575] = NegateOTKStopper, -- Swift Scarecrow +[19665973] = NegateOTKStopper, -- Battle Fader +[44330098] = NegateOTKStopper, -- Gorz +[13313278] = NegateOTKStopper, -- BB Veil +[25857246] = NegateOTKStopper, -- Nekroz Valkyrus } function AdjustMonsterPrio(target,prio) if not FilterType(target,TYPE_MONSTER) then @@ -2822,6 +3023,12 @@ function AdjustMonsterPrio(target,prio) then prio=prio+1 end + if FilterType(target,TYPE_XYZ) then + if target.xyz_material_count>0 + then + prio=prio+1 + end + end if target.attack>=2000 then prio=prio+1 end @@ -2831,7 +3038,7 @@ function AdjustMonsterPrio(target,prio) if target.attack<500 then prio=prio-1 end - if atk>0 and target.attack>=atk then + if atk>=1200 and target.attack>=atk then prio=prio+1 end return prio @@ -2871,6 +3078,9 @@ function GetNegatePriority(source,link,targeted) if not CheckNegated(link) then return -1 end + if Negated(c) then + return -1 + end if FilterLocation(c,LOCATION_ONFIELD) and FilterType(c,TYPE_SPELL+TYPE_TRAP) and FilterType(c,TYPE_CONTINUOUS+TYPE_FIELD+TYPE_EQUIP+TYPE_PENDULUM) @@ -2900,6 +3110,9 @@ function GetNegatePriority(source,link,targeted) and FilterLocation(source,LOCATION_ONFIELD) then prio=prio+3 + if FilterType(targets[1],TYPE_CONTINUOUS) then + prio=prio+1 + end end prio=AdjustMonsterPrio(target,prio) end @@ -2950,6 +3163,25 @@ function GetNegatePriority(source,link,targeted) end end end + local burn = GetBurnDamage(nil,link) + if burn then + if burn >= 2000 then + prio=prio+2 + end + if AI.GetPlayerLP(1)-burn<=800 then + prio=prio+4 + end + if burn>AI.GetPlayerLP(1) then + prio=prio+100 + end + end + local aimon,oppmon = GetBattlingMons() + if Duel.GetTurnPlayer()==player_ai + and IsBattlePhase() + and aimon and CanFinishGame(aimon,oppmon) + then + prio=prio+4 + end else local targets = SubGroup(OppMon(),FilterStatus,STATUS_SUMMONING) if targets and #targets>0 then @@ -2963,16 +3195,30 @@ function GetNegatePriority(source,link,targeted) target=targets[1] prio = prio + 3 prio=AdjustMonsterPrio(target,prio) + local check = NegatePriority[target.id] + if prio>-1 and check then + if type(check) == "function" then + if check(c,e,source,link) then + prio=check(c,e,source,link) + else + --prio=-1 + end + else + prio=check + end + end end + else + prio = -1 end end local check = NegatePriority[id] if prio>-1 and check then if type(check) == "function" then - if check(c,e,source) then - prio=check(c,e,source) + if check(c,e,source,link) then + prio=check(c,e,source,link) else - prio=-1 + --prio=-1 end else prio=check @@ -3124,17 +3370,126 @@ function IsBattlePhase() return result end +function IsMainPhase() + local current=Duel.GetCurrentPhase() + local phases = + { + PHASE_MAIN1, + PHASE_MAIN2, + } + local result = false + for i,p in pairs(phases) do + if p and current == p then + result = true + end + end + return result +end + function AITrashTalk(s) -- to make the AI comment its plays. Can be disabled in ai.lua if TRASHTALK then AI.Chat(s) end end +function CanXYZSummon(rank,materialcount,filter,opt) + -- checks for space on field and rank in extra + -- does not actually check, if you have a way t put materials on board + rank = rank or 4 + materialcount = materialcount or 2 + local targets = SubGroup(AIExtra(),FilterRank,rank) + local materials = SubGroup(AIMon(),FilterLevel,rank) + return CardsMatchingFilter(AIExtra(),filter,opt)>0 + and SpaceCheck()+#materials>=materialcount + and DualityCheck() +end +function DiscardCheck() + -- checks, if the AI needs to keep a card to discard during the opponent's turn + if HasIDNotNegated(AIMon(),01561110,true) -- ABC Dragon Buster + or HasID(AIST(),04178474,true) -- Raigeki Break + or HasID(AIST(),63356631,true) -- PWWB + then + return #AIHand()>1 + end + return true +end +function ShouldRemove(c) + -- checks for cards, that should probably not be targeted with removal effects + -- like spells currently activating on the field etc + if FilterType(c,TYPE_SPELL+TYPE_TRAP) + and not FilterType(c,TYPE_CONTINUOUS+TYPE_EQUIP+TYPE_FIELD+TYPE_PENDULUM) + and FilterPosition(c,POS_FACEUP) + then + return false + end + if FilterType(c,TYPE_TOKEN) + and c.attack<1000 + then + return false + end + return true +end +function GetBurnDamage(player,start,stop) + -- returns the total burn damage expected to be dealt to the player + -- in the current chain + player=player or player_ai + start = start or 1 + stop = stop or start or Duel.GetCurrentChain() + local result = 0 - - - + for i=start,stop do + local e1=Duel.IsPlayerAffectedByEffect(player,EFFECT_REVERSE_DAMAGE) + local e2=Duel.IsPlayerAffectedByEffect(player,EFFECT_REVERSE_RECOVER) + local rd=e1 and not e2 + local rr=not e1 and e2 + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(i,CATEGORY_DAMAGE) + if ex and (cp==player or cp==PLAYER_ALL) and not rd + and not Duel.IsPlayerAffectedByEffect(player,EFFECT_NO_EFFECT_DAMAGE) + then + result = result + cv + end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(i,CATEGORY_RECOVER) + if ex and (cp==player or cp==PLAYER_ALL) and rr + and not Duel.IsPlayerAffectedByEffect(player,EFFECT_NO_EFFECT_DAMAGE) + then + result = result + cv + end + end + if result>0 then + return result + end + return false +end +GlobalInfiniteLoopCheck={} +function InfiniteLoopCheck(c,threshold) + threshold = threshold or 5 + local id = c.description + if not id or id == 0 then + id = c.id + end + GlobalInfiniteLoopCheck[id]=GlobalInfiniteLoopCheck[id] or 0 + GlobalInfiniteLoopCheck[id]=GlobalInfiniteLoopCheck[id]+1 + return GlobalInfiniteLoopCheck[id]<=threshold +end +function MaxxCheck() + return GlobalMaxxC~=Duel.GetTurnCount() +end +GlobalSummonLimit = {} +function SetSummonLimit(filter) + GlobalSummonLimit[Duel.GetTurnCount()]=GlobalSummonLimit[Duel.GetTurnCount()] or {} + GlobalSummonLimit[Duel.GetTurnCount()][#GlobalSummonLimit[Duel.GetTurnCount()]+1]=filter +end +function CheckSummonLimit(c) + if GlobalSummonLimit[Duel.GetTurnCount()] then + for i,filter in pairs(GlobalSummonLimit[Duel.GetTurnCount()]) do + if not filter(c) then + return false + end + end + end + return true +end diff --git a/ai/mod/AIOnDeckSelect.lua b/ai/mod/AIOnDeckSelect.lua index 9977c7d6..f6d3f3aa 100644 --- a/ai/mod/AIOnDeckSelect.lua +++ b/ai/mod/AIOnDeckSelect.lua @@ -24,7 +24,6 @@ DECK_HAT = NewDeck("HAT" ,45803070) -- Traptrix Dionaea DECK_QLIPHORT = NewDeck("Qliphort" ,65518099) -- Qliphort Tool DECK_NOBLEKNIGHT = NewDeck("Noble Knight" ,59057152) -- Noble Knight Medraut DECK_NEKROZ = NewDeck("Nekroz" ,14735698) -- Nekroz Exomirror -DECK_BA = NewDeck("Burning Abyss" ,36006208) -- Fire Lake of the Burning Abyss DECK_EXODIA = NewDeck("Exodia" ,{33396948,70791313}) -- Exodia the Forbidden One, Royal Magical Library DECK_DARKWORLD = NewDeck("Dark World" ,34230233) -- DW Grapha DECK_CONSTELLAR = NewDeck("Constellar" ,78358521) -- Constellar Sombre @@ -115,9 +114,10 @@ function PrioritySetup() QliphortPriority() SatellarknightPriority() --HEROPriority() - BAPriority() + --BAPriority() NekrozPriority() - + GadgetPriority() + AddPriority({ -- HERO @@ -201,6 +201,11 @@ AddPriority({ [73176465] = {1,1,1,1,6,5,1,1,1,1,FelisCond}, -- Lightsworn Felis [41386308] = {1,1,1,1,1,1,1,1,1,1,MathCond}, -- Mathematician +-- Speedroid Engine + +[81275020] = {9,1,5,1,1,1,1,1,1,1}, -- Speedroid Terrortop +[53932291] = {8,1,1,1,1,1,1,1,1,1}, -- Speedroid Taketomborg + [05318639] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Mystical Space Typhoon [82044279] = {1,1,1,1,1,1,1,1,1,1,ClearWingCond}, -- Clear Wing Synchro Dragon @@ -213,7 +218,6 @@ AddPriority({ [08561192] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Leoh, Keeper of the Sacred Tree }) - AddPriority({ -- HAT [91812341] = {6,3,5,1,1,1,1,1,1,1,MyrmeleoCond}, -- Traptrix Myrmeleo @@ -240,6 +244,7 @@ AddPriority({ [91499077] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Gagaga Samurai [63746411] = {1,1,1,1,1,1,1,1,1,1,nil}, -- Giant Hand }) + AddPriority({ --for backwards compatibility [05361647] = {1,1,1,1,9,1,1,1,1,1,nil}, -- Battlin' Boxer Glassjaw @@ -252,13 +257,14 @@ AddPriority({ [33396948] = {1,1,-1,-1,-1,-1,-1,-1,1,1,nil}, [05133471] = {1,1,1,1,4,1,1,1,1,1,nil}, -- Galaxy Cyclone + }) local deck = GetDeck() if deck and deck.PriorityList then AddPriority(deck.PriorityList,true) end - + end Prio = {} @@ -269,6 +275,7 @@ function AddPriority(list,override) end end function GetPriority(card,loc) + card.prio=0 local id=card.id if id == 76812113 then id=card.original_id @@ -291,7 +298,9 @@ function GetPriority(card,loc) end else --print("no priority defined for id: "..id..", defaulting to 0") + return 0 end + --print("got priority: "..result.." for "..GetName(card)) return result end function AssignPriority(cards,loc,filter,opt) @@ -319,8 +328,8 @@ function AssignPriority(cards,loc,filter,opt) end if loc==PRIO_TOGRAVE and FilterLocation(c,LOCATION_ONFIELD) then - if Negated(c) then - c.prio=c.prio+3 + if FilterCrippled(c) then + c.prio=c.prio+5 end if FilterPosition(c,POS_DEFENSE) and c.turnid==Duel.GetTurnCount() @@ -358,6 +367,7 @@ function AssignPriority(cards,loc,filter,opt) c.prio=11 end end + c.prio=c.prio or 0 if not FilterCheck(c,filter,opt) then c.prio=c.prio-9999 end @@ -382,6 +392,7 @@ function Add(cards,loc,count,filter,opt) for i=1,count do result[i]=cards[i].index end + --PrintList(cards,true) if #resultc.attack then c.prio = 1 else @@ -226,6 +232,7 @@ function OnSelectBattleCommand(cards,activatable) -- shortcut function that returns the proper attack index and sets some globals -- needed for attack target selection function Attack(index,direct) + index = index or CurrentIndex local i = cards[index].index if direct then GlobalAIIsAttacking = nil @@ -457,8 +464,16 @@ function OnSelectBattleCommand(cards,activatable) -- but might also attack into battle-immune targets for no reason. SortByATK(cards,true) if #targets>0 and #cards>0 then - for i=1,#cards do - if CanAttackSafely(cards[i],targets) then + for i,c in pairs(cards) do + if CanAttackSafely(c,targets) + and CardsMatchingFilter(targets,function(target) + return not (FilterAffected(target,EFFECT_CANNOT_BE_BATTLE_TARGET) + or FilterAffected(target,EFFECT_CANNOT_SELECT_BATTLE_TARGET) + or FilterAffected(target,EFFECT_INDESTRUCTABLE_BATTLE)) + and (FilterPosition(target,POS_FACEUP_ATTACK) + or c.attack>target.defense) + end)>0 + then return Attack(i) end end @@ -587,6 +602,10 @@ function AttackF0(c,source) or StareaterCheck(source) or not Affected(source,TYPE_MONSTER,c.level) end +function AttackFirstOfDragons(c,source) + return FilterType(source,TYPE_NORMAL) + or Negated(c) +end function SelectAttackConditions(c,source) if c.id == 95929069 then return AttackIceHand(c,source) @@ -615,6 +634,9 @@ function SelectAttackConditions(c,source) if c.id == 65305468 then return AttackF0(c,source) end + if c.id == 10817524 then + return AttackFirstOfDragons(c,source) + end return true end diff --git a/ai/mod/SelectChain.lua b/ai/mod/SelectChain.lua index ecb69c39..caa64e1a 100644 --- a/ai/mod/SelectChain.lua +++ b/ai/mod/SelectChain.lua @@ -32,6 +32,18 @@ function OnSelectChain(cards,only_chains_by_player,forced) ResetOncePerTurnGlobals() GlobalAIIsAttacking = nil --GetNegatePriority() + + if GlobalFeatherStorm~=Duel.GetTurnCount() + and ChainCheck(00007704,1-player_ai) -- Feather Storm + then + GlobalFeatherStorm=Duel.GetTurnCount() + end + + if GlobalMaxxC~=Duel.GetTurnCount() + and ChainCheck(23434538,1-player_ai) -- Maxx "C" + then + GlobalMaxxC=Duel.GetTurnCount() + end --------------------------------------------- -- Don't activate anything if the AI controls -- a face-up Light and Darkness Dragon. @@ -77,42 +89,73 @@ function OnSelectChain(cards,only_chains_by_player,forced) end end - local result,result2 = nil,nil + local backup = CopyTable(cards) local d = DeckCheck() + local result,result2 = nil,nil + result = PriorityChain(cards) + if result ~= nil then + if type(result)=="table" then + if (result[1]~=1 + or InfiniteLoopCheck(cards[result[2]])) + and BlacklistCheckChain(result[1],result[2],d,backup) + then + return result[1],result[2] + end + else + if (result~=1 + or InfiniteLoopCheck(cards[result2])) + and BlacklistCheckChain(result,result2,d,backup) + then + return result,result2 + end + end + end if d and d.Chain then result,result2 = d.Chain(cards,only_chains_by_player) end if result ~= nil then if type(result)=="table" then - return result[1],result[2] + if (result[1]~=1 + or InfiniteLoopCheck(cards[result[2]])) + then + return result[1],result[2] + end else - return result,result2 + if (result~=1 + or InfiniteLoopCheck(cards[result2])) + then + return result,result2 + end end end -local backup = CopyTable(cards) -local d = DeckCheck() -local SelectChainFunctions = { -PriorityChain,FireFistOnChain,HeraldicOnSelectChain, -GadgetOnSelectChain,BujinOnSelectChain,MermailOnSelectChain, -SatellarknightOnSelectChain, -ChaosDragonOnSelectChain,HATChain,QliphortChain, -NobleChain,NekrozChain,BAChain,DarkWorldChain, -ConstellarChain,BlackwingChain,HarpieChain, -HEROChain,GenericChain, -} - -for i=1,#SelectChainFunctions do - local func = SelectChainFunctions[i] - result = func(cards,only_chains_by_player) - if result ~= nil and (d == 0 - or BlacklistCheckChain(result[1],result[2],d,backup)) - then - return result[1],result[2] + backup = CopyTable(cards) + d = DeckCheck() + local SelectChainFunctions = { + FireFistOnChain,HeraldicOnSelectChain, + GadgetOnSelectChain,BujinOnSelectChain,MermailOnSelectChain, + SatellarknightOnSelectChain, + ChaosDragonOnSelectChain,HATChain,QliphortChain, + NobleChain,NekrozChain,BAChain,DarkWorldChain, + ConstellarChain,BlackwingChain,HarpieChain, + HEROChain,GenericChain, + } + + for i=1,#SelectChainFunctions do + local func = SelectChainFunctions[i] + result = func(cards,only_chains_by_player) + if result ~= nil and (d == 0 + or BlacklistCheckChain(result[1],result[2],d,backup)) + then + if result[1]~=1 + or InfiniteLoopCheck(cards[result[2]]) + then + return result[1],result[2] + end + end end -end -result = 0 + result = 0 --------------------------------------------- -- Cocoon of Evolution on field turn counter @@ -406,9 +449,10 @@ end and NecrovalleyCheck(c) and CardIsScripted(c.id) == 0 and NotNegated(c) + and InfiniteLoopCheck(c) then GlobalActivatedCardID = c.id - return 1,i + return 1,i end end diff --git a/ai/mod/SelectEffectYesNo.lua b/ai/mod/SelectEffectYesNo.lua index 5d095122..38faf9f5 100644 --- a/ai/mod/SelectEffectYesNo.lua +++ b/ai/mod/SelectEffectYesNo.lua @@ -12,6 +12,9 @@ function OnSelectEffectYesNo(id,triggeringCard) if not player_ai then player_ai = 1 end -- probably puzzle mode, so player goes first local result = nil + if not InfiniteLoopCheck(triggeringCard) then + return 0 + end local d = DeckCheck() if d and d.EffectYesNo then result = d.EffectYesNo(id,triggeringCard) @@ -37,9 +40,11 @@ function OnSelectEffectYesNo(id,triggeringCard) end end if result then - if result == true then result = 1 end + if result == true then + result = 1 + end if result == false then result = 0 end - return result + return result end if CardIsScripted(id)>0 then result = 0 @@ -92,6 +97,5 @@ function OnSelectEffectYesNo(id,triggeringCard) GlobalActivatedEffectID = id end return result - end diff --git a/ai/mod/SelectInitCommand.lua b/ai/mod/SelectInitCommand.lua index 3ab1bf89..ca37b768 100644 --- a/ai/mod/SelectInitCommand.lua +++ b/ai/mod/SelectInitCommand.lua @@ -93,7 +93,6 @@ function OnSelectInitCommand(cards, to_bp_allowed, to_ep_allowed) ResetOncePerTurnGlobals() GlobalBPAllowed = to_bp_allowed SurrenderCheck() - --------------------------------------- -- Don't do anything if the AI controls -- a face-up Light and Darkness Dragon. @@ -143,7 +142,6 @@ function OnSelectInitCommand(cards, to_bp_allowed, to_ep_allowed) end end end - -------------------------------------------------- -- Storing these lists of cards in local variables -- for faster access and gameplay. @@ -163,7 +161,6 @@ function OnSelectInitCommand(cards, to_bp_allowed, to_ep_allowed) return COMMAND_ACTIVATE,i end end - ------------------------------------------------- -- ********************************************** -- Functions for specific decks @@ -185,13 +182,16 @@ DeckCommand = SummonExtraDeck(cards,true) if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end if HasID(SpSummonableCards,80696379,SummonMeteorburst,1) then return SynchroSummon() end - -- If the AI can attack for game, attempt to do so first -- opp has no monsters to defend @@ -232,7 +232,6 @@ for i,source in pairs(AIMon()) do end end end - if d and d.Init then DeckCommand,DeckCommand2 = d.Init(cards,to_bp_allowed,to_ep_allowed) end @@ -245,7 +244,11 @@ if DeckCommand ~= nil then PrintCallingFunction() end --print("executing deck command: "..DeckCommand[1]..", "..DeckCommand[2]) - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end else if DeckCommand2==0 then @@ -254,7 +257,11 @@ if DeckCommand ~= nil then PrintCallingFunction() end --print("executing deck command: "..DeckCommand..", "..DeckCommand2) - return DeckCommand,DeckCommand2 + if DeckCommand~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand2]) + then + return DeckCommand,DeckCommand2 + end end end if not ExtraCheck then @@ -262,7 +269,11 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not ExtraCheck then @@ -270,7 +281,11 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not ExtraCheck then @@ -278,7 +293,11 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not ExtraCheck then @@ -286,7 +305,11 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not DeckCheck(DECK_TELLARKNIGHT) then @@ -294,7 +317,11 @@ if not DeckCheck(DECK_TELLARKNIGHT) then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not ExtraCheck then @@ -302,7 +329,11 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not DeckCheck(DECK_BUJIN) then @@ -310,7 +341,11 @@ if not DeckCheck(DECK_BUJIN) then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not ExtraCheck then @@ -318,7 +353,11 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not ExtraCheck then @@ -326,7 +365,11 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not (DeckCheck(DECK_BUJIN) or DeckCheck(DECK_TELLARKNIGHT) or DeckCheck(DECK_NEKROZ)) then @@ -334,7 +377,11 @@ if not (DeckCheck(DECK_BUJIN) or DeckCheck(DECK_TELLARKNIGHT) or DeckCheck(DECK_ if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not (DeckCheck(DECK_BUJIN) or DeckCheck(DECK_TELLARKNIGHT) or DeckCheck(DECK_NOBLEKNIGHT)) then @@ -342,23 +389,31 @@ if not (DeckCheck(DECK_BUJIN) or DeckCheck(DECK_TELLARKNIGHT) or DeckCheck(DECK_ if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end -if not ExtraCheck then +--[[if not ExtraCheck then DeckCommand = BAInit(cards) if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then return DeckCommand[1],DeckCommand[2] end -end +end]] if not ExtraCheck then DeckCommand = DarkWorldInit(cards) if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not ExtraCheck then @@ -366,7 +421,11 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not ExtraCheck then @@ -374,7 +433,11 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end if not ExtraCheck then @@ -382,27 +445,38 @@ if not ExtraCheck then if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end -if not ExtraCheck then +--[[if not ExtraCheck then DeckCommand = HEROInit(cards) if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2] ]) + then + return DeckCommand[1],DeckCommand[2] + end end -end +end]] if not ExtraCheck then DeckCommand = SummonExtraDeck(cards) if DeckCommand ~= nil and (d == 0 or BlacklistCheckInit(DeckCommand[1],DeckCommand[2],d,backup)) then - return DeckCommand[1],DeckCommand[2] + if DeckCommand[1]~=COMMAND_ACTIVATE + or InfiniteLoopCheck(ActivatableCards[DeckCommand[2]]) + then + return DeckCommand[1],DeckCommand[2] + end end end - -- ------------------------------------------------- -- ********************************************** @@ -487,47 +561,36 @@ end end end - ----------------------------------------------------- - -- If the AI controls a set Field Spell, activate it. - ----------------------------------------------------- - for i=1,#ActivatableCards do - if ActivatableCards[i].location == LOCATION_SZONE then - if ActivatableCards[i].type == TYPE_SPELL + TYPE_FIELD and - ActivatableCards[i].position == POS_FACEDOWN then - GlobalActivatedCardID = ActivatableCards[i].id - return COMMAND_ACTIVATE,i - end - end - end - - - ----------------------------------- - -- Activate a face-up field spell - -- effect if possible. - ----------------------------------- - for i=1,#ActivatableCards do - if ActivatableCards[i].location == LOCATION_SZONE then - if ActivatableCards[i].type == TYPE_SPELL + TYPE_FIELD then - if CardId == 33017655 then - GlobalActivatedCardID = ActivatableCards[i].id - return COMMAND_ACTIVATE,i - end - end + + -- activate field spells already on the field + for i,c in pairs(ActivatableCards) do + if FilterType(c,TYPE_SPELL) + and FilterType(c,TYPE_FIELD) + and FilterLocation(c,LOCATION_SZONE) + --and FilterPosition(c,POS_FACEDOWN) + and NecrovalleyCheck(c) + and CardIsScripted(c.id) == 0 + and NotNegated(c) + and InfiniteLoopCheck(c) + then + return COMMAND_ACTIVATE,i end end - --------------------------------------------------------- - -- Set a field spell if the AI doesn't currently control - -- a field spell - --------------------------------------------------------- - if CardsMatchingFilter(AIST(),FilterType,TYPE_FIELD)==0 then - for i=1,#cards.st_setable_cards do - local c = cards.st_setable_cards[i] - if FilterType(c,TYPE_SPELL) and FilterType(c,TYPE_FIELD) and CardIsScripted(c.id)==0 then - return COMMAND_SET_ST,i - end + -- activate field spells, if the AI doesn't control one already + for i,c in pairs(ActivatableCards) do + if FilterType(c,TYPE_SPELL) + and FilterType(c,TYPE_FIELD) + and FilterLocation(c,LOCATION_HAND) + and CardsMatchingFilter(AIST(),FilterType,TYPE_FIELD)==0 + and NecrovalleyCheck(c) + and CardIsScripted(c.id) == 0 + and NotNegated(c) + and InfiniteLoopCheck(c) + then + return COMMAND_ACTIVATE,i end - end + end ------------------------------------------------ -- Activate Soul Exchange only in Main Phase 1 @@ -1369,6 +1432,7 @@ end and CardIsScripted(c.id) == 0 and NotNegated(c) and c.description ~= 1160 -- Pendulum scale activation + and InfiniteLoopCheck(c) then GlobalActivatedCardID = c.id return COMMAND_ACTIVATE,i @@ -1912,6 +1976,40 @@ end end end + -- force a synchro or xyz summon, if AI still controls Norden and a target + if TurnEndCheck() + and HasID(AIMon(),17412721,true) + then + local norden = FindID(17412721,AIMon()) + local target = nil + if CardTargetCheck(norden) then + target = GetCardFromScript(GetScriptFromCard(norden):GetCardTarget():GetFirst()) + end + if target and FilterTuner(target) then + for i,c in pairs(SpSummonableCards) do + if FilterType(c,TYPE_SYNCHRO) + and FilterLevel(c,norden.level+target.level) + then + GlobalMaterial = true + GlobalSSCardID = c.id + return COMMAND_SPECIAL_SUMMON,i + end + end + end + if target and FilterLevel(target,4) then + for i,c in pairs(SpSummonableCards) do + if FilterType(c,TYPE_XYZ) + and FilterRank(c,4) + then + GlobalMaterial = true + GlobalSSCardID = c.id + return COMMAND_SPECIAL_SUMMON,i + end + end + end + end + + --------------------------------------------------- -- If an in-hand monster has a flip effect, set it. --------------------------------------------------- @@ -2055,7 +2153,9 @@ end and SetBlacklist(setCards[i].id)==0 and (bit32.band(setCards[i].type,TYPE_TRAP) > 0 or bit32.band(setCards[i].type,TYPE_QUICKPLAY) > 0 ) - and not HasID(AIST(),92512625,true) then + and not HasID(AIST(),92512625,true) + and DiscardCheck() + then return COMMAND_SET_ST,i end end @@ -2076,6 +2176,7 @@ end if FilterType(c,TYPE_SPELL) and not FilterType(c,TYPE_FIELD) and SetBlacklist(c.id)==0 and Get_Card_Count(AIST()) < 2 and not HasID(AIST(),92512625,true) -- Solemn Advice + and DiscardCheck() then return COMMAND_SET_ST,i end diff --git a/ai/mod/SelectOption.lua b/ai/mod/SelectOption.lua index 8a05de9a..deacbf89 100644 --- a/ai/mod/SelectOption.lua +++ b/ai/mod/SelectOption.lua @@ -26,6 +26,40 @@ function OnSelectOption(options) return result end end + + if GlobalDimensionalBarrier then + local BarrierType={ + [TYPE_RITUAL]=1057, + [TYPE_FUSION]=1056, + [TYPE_SYNCHRO]=1063, + [TYPE_XYZ]=1073, + [TYPE_PENDULUM]=1074,} + if GlobalDimensionalBarrier == true then + local cards={} + local highest=0 + result = nil + for i,v in pairs(BarrierType) do + cards[i]=CardsMatchingFilter(OppMon(),FilterType,i)*2 + + CardsMatchingFilter(SubGroup(OppGrave(),FilterType,TYPE_MONSTER),FilterType,i) + + CardsMatchingFilter(SubGroup(OppExtra(),FilterPosition,POS_FACEUP),FilterType,i) + if cards[i]>highest then + highest=cards[i] + result=v + end + end + result=result or 1073 + else + result = BarrierType[GlobalDimensionalBarrier] + end + GlobalDimensionalBarrier = nil + for i,v in pairs(options) do + if v==result then + return i + end + end + end + + for i=1,#options do -- Ptolemy M7 if options[i]==38495396*16+2 and HasPriorityTarget(OppMon(),false,nil,PtolemyFilter) diff --git a/ai/mod/SelectPosition.lua b/ai/mod/SelectPosition.lua index 24eb1ceb..2110d27c 100644 --- a/ai/mod/SelectPosition.lua +++ b/ai/mod/SelectPosition.lua @@ -25,10 +25,12 @@ function OnSelectPosition(id, available) -- attack and defense will be 0 ------------------------------------------------------- if GlobalActivatedCardID == 27337596 -- Hieratic Dragon King of Atum + or GlobalActivatedCardID == 07394770 -- Brilliant Fusion then result = POS_FACEUP_DEFENSE GlobalActivatedCardID = nil GlobalTributedCardID = nil + return result end ------------------------------------------------------ diff --git a/cards.cdb b/cards.cdb index 2d3e05d8..462a91c6 100644 Binary files a/cards.cdb and b/cards.cdb differ diff --git a/deck/AI_ABC.ydk b/deck/AI_ABC.ydk new file mode 100644 index 00000000..7ec18d59 --- /dev/null +++ b/deck/AI_ABC.ydk @@ -0,0 +1,61 @@ +#created by ... +#main +83326048 +55063751 +55063751 +65367484 +65367484 +65367484 +30012506 +30012506 +30012506 +55010259 +55010259 +77411244 +77411244 +77411244 +29021114 +29021114 +3405259 +3405259 +3405259 +23434538 +23434538 +1845204 +32807846 +70368879 +73628505 +73628505 +73628505 +43898403 +43898403 +66399653 +66399653 +66399653 +29401950 +83326048 +83326048 +5851097 +40605147 +40605147 +40605147 +84749824 +#extra +1561110 +1561110 +1561110 +17412721 +56832966 +84013237 +28912357 +63746411 +82633039 +95169481 +95169481 +73289035 +21044178 +48905153 +85115440 +!side +59438930 +581014 diff --git a/deck/AI_BLS.ydk b/deck/AI_BLS.ydk new file mode 100644 index 00000000..001614fb --- /dev/null +++ b/deck/AI_BLS.ydk @@ -0,0 +1,63 @@ +#created by ... +#main +72989439 +7841921 +61901281 +61901281 +99234526 +99234526 +38695361 +95492061 +95492061 +95492061 +6628343 +6628343 +6628343 +32013448 +32013448 +32013448 +5405694 +54484652 +54484652 +54484652 +4810828 +1845204 +32807846 +38120068 +38120068 +73628505 +14094090 +45948430 +45948430 +45948430 +43898403 +43898403 +40089744 +40089744 +40089744 +32360466 +40605147 +40605147 +40605147 +84749824 +#extra +17412721 +58820923 +39030163 +31801517 +63767246 +56832966 +84013237 +21501505 +94380860 +63746411 +82633039 +95169481 +21044178 +85115440 +48905153 +!side +61901281 +99234526 +35261759 +70368879 diff --git a/deck/AI_BurningAbyss.ydk b/deck/AI_BurningAbyss.ydk index bd5841d3..1ca2ad74 100644 --- a/deck/AI_BurningAbyss.ydk +++ b/deck/AI_BurningAbyss.ydk @@ -2,40 +2,40 @@ #main 81992475 57143342 -57143342 -9342162 73213494 62957424 62957424 +81275020 +81275020 +81275020 +47728740 36553319 36553319 36553319 20758643 10802915 +63821877 84764038 84764038 84764038 -734741 -12580477 +90432163 +90432163 +53932291 +36426778 +36426778 +36426778 +1475311 +1475311 +1475311 +70368879 81439173 -62835876 -6780 -6780 -36006208 -36006208 -53582587 -57728570 -60743819 -60743819 -60743819 -63356631 -63356631 -63356631 -71587526 -71587526 -78474168 -78474168 +3298689 +43898403 +43898403 5851097 +25542642 +25542642 +25542642 40605147 40605147 40605147 @@ -43,15 +43,15 @@ #extra 18386170 601193 -601193 -27552504 27552504 -72167543 -81330115 +1621413 +16195942 31320433 -47805931 +62709239 +62709239 +85252081 75367227 -52558805 +95992081 83531441 83531441 83531441 diff --git a/deck/AI_DarkWorld.ydk b/deck/AI_DarkWorld.ydk index 8230e35d..2cb71e7f 100644 --- a/deck/AI_DarkWorld.ydk +++ b/deck/AI_DarkWorld.ydk @@ -16,12 +16,13 @@ 10802915 84764038 1475311 -1475311 12580477 16435215 16435215 16435215 70368879 +70368879 +70368879 74117290 74117290 74117290 @@ -39,7 +40,6 @@ 41930553 41930553 82732705 -84749824 #extra 73445448 1639384 diff --git a/deck/AI_Eidolon.ydk b/deck/AI_Eidolon.ydk new file mode 100644 index 00000000..8d9ede79 --- /dev/null +++ b/deck/AI_Eidolon.ydk @@ -0,0 +1,72 @@ +#created by ... +#main +20292186 +20292186 +20292186 +85103922 +71007216 +71007216 +86120751 +86120751 +86120751 +43722862 +43722862 +43722862 +23434538 +23434538 +70117860 +1845204 +1845204 +1845204 +73628505 +73628505 +73628505 +74063034 +74063034 +74063034 +43898403 +43898403 +43898403 +67775894 +67775894 +47679935 +47679935 +47679935 +12444060 +12444060 +12444060 +5851097 +40605147 +40605147 +40605147 +84749824 +#extra +11270236 +75286621 +75286621 +48791583 +12307878 +85908279 +49513164 +49513164 +49513164 +13529466 +50954680 +82044279 +14577226 +56832966 +84013237 +!side +75286621 +17412721 +90036274 +29669359 +82633039 +581014 +12580477 +70368879 +8267140 +8267140 +83326048 +83326048 +83326048 diff --git a/deck/AI_Fluffal.ydk b/deck/AI_Fluffal.ydk new file mode 100644 index 00000000..896b96de --- /dev/null +++ b/deck/AI_Fluffal.ydk @@ -0,0 +1,74 @@ +#created by ... +#main +39246582 +39246582 +39246582 +13241004 +13241004 +61173621 +61173621 +61173621 +3841833 +3841833 +3841833 +30068120 +30068120 +79109599 +79109599 +65331686 +98280324 +98280324 +87246309 +2729285 +38124994 +72413000 +72413000 +72413000 +1845204 +5133471 +6077601 +6077601 +6077601 +24094653 +24094653 +24094653 +28039390 +34773082 +34773082 +34773082 +43698897 +70245411 +70245411 +70245411 +#extra +91034681 +41209827 +80889750 +80889750 +80889750 +40636712 +40636712 +10383554 +85545073 +11039171 +464362 +464362 +57477163 +57477163 +33198837 +!side +97567736 +23434538 +6142488 +67441435 +6205579 +81481818 +42110604 +12580477 +35726888 +53129443 +74335036 +94820406 +43455065 +43898403 +66127916 diff --git a/deck/AI_Gadget.ydk b/deck/AI_Gadget.ydk index 6230fff3..59555152 100644 --- a/deck/AI_Gadget.ydk +++ b/deck/AI_Gadget.ydk @@ -7,53 +7,56 @@ 42940404 42940404 42940404 -53573406 -53573406 +55010259 +55010259 +55010259 +29021114 +29021114 +29021114 41172955 41172955 86445415 86445415 13839120 13839120 -94656263 -94656263 -18063928 -18063928 -18063928 -18964575 -18964575 -12580477 -5318639 -5318639 -5318639 -14087893 -27243130 -27243130 +16947147 +16947147 +23434538 +23434538 +1845204 +43422537 +43422537 +70368879 +43898403 +43898403 29401950 29616929 -53582587 -83555667 +69599136 +83326048 +83326048 +83326048 5851097 -50078509 -50078509 -97077563 -97077563 -97077563 +40605147 +40605147 +40605147 84749824 #extra -39765958 -83994433 -88033975 -22110647 +17412721 80117527 56832966 +56832966 +84013237 84013237 -94380860 -11398059 +21501505 28912357 28912357 48739166 -82633039 +63746411 82633039 6511113 +48905153 +85115440 !side +22110647 +35261759 +35261759 diff --git a/deck/AI_Kozmo.ydk b/deck/AI_Kozmo.ydk index 10d00c01..3456a389 100644 --- a/deck/AI_Kozmo.ydk +++ b/deck/AI_Kozmo.ydk @@ -2,58 +2,66 @@ #main 64063868 55885348 -55885348 -55885348 20849090 20849090 +59496924 94454495 94454495 94454495 -93302695 -93302695 -67050396 -31061682 +12408276 +12408276 +37679169 +9929398 +9929398 +9929398 +66413481 31061682 +1274455 +1274455 +1274455 +54149433 +56907986 56907986 56907986 64280356 -64280356 -64280356 1475311 1475311 -12580477 +1475311 73628505 -43898403 -43898403 -67723438 +73628505 +73628505 +75500286 +75500286 67723438 +57554544 +57554544 67237709 67237709 67237709 90452877 90452877 -90452877 -97077563 -97077563 -97077563 -40605147 -40605147 -40605147 -84749824 #extra -1639384 +76774528 +73580471 +25862681 44405066 -91949988 -80117527 10443957 -56832966 73964868 -29669359 58069384 -84013237 -82633039 -21044178 31320433 62709239 +85252081 95992081 +36776089 +1249315 +10002346 +65305468 !side +82044279 +74586817 +33698022 +91949988 +29669359 +95992081 +70368879 +90452877 diff --git a/deck/AI_Majespecter.ydk b/deck/AI_Majespecter.ydk index c4370574..a1821532 100644 --- a/deck/AI_Majespecter.ydk +++ b/deck/AI_Majespecter.ydk @@ -26,9 +26,9 @@ 12580477 13972452 53208660 -53208660 -53208660 58577036 +79816536 +79816536 49366157 76473843 76473843 @@ -60,12 +60,13 @@ 85239662 59438930 19665973 -16195942 85909450 31320433 95992081 52558805 88942504 +37803970 +40450317 54447022 70368879 43898403 diff --git a/deck/AI_MegaMonarch.ydk b/deck/AI_MegaMonarch.ydk index 76abe313..e7d5ee0b 100644 --- a/deck/AI_MegaMonarch.ydk +++ b/deck/AI_MegaMonarch.ydk @@ -1,44 +1,44 @@ #created by ... #main +54241725 +54241725 +54241725 +43898403 +43898403 23064604 +96570609 +84171830 +33609262 +57666212 +59463312 +19870120 +19870120 +69230391 +9748752 23064604 23064604 -69230391 +18235309 +79844764 +22382087 87288189 -96570609 -96570609 -96570609 -9748752 -26205777 +57666212 95993388 -22382087 -59463312 59463312 59463312 95457011 95457011 -95457011 2295440 22842126 -22842126 -22842126 32807846 33609262 33609262 -33609262 81439173 -5318639 -5318639 -79844764 -79844764 -79844764 -19870120 -19870120 +99940363 +26205777 61466310 84171830 84171830 -84171830 -54241725 -54241725 +95457011 +18235309 #extra !side diff --git a/deck/AI_Qliphort.ydk b/deck/AI_Qliphort.ydk index ad0d9b9a..a55be293 100644 --- a/deck/AI_Qliphort.ydk +++ b/deck/AI_Qliphort.ydk @@ -28,6 +28,8 @@ 25067275 25789292 25789292 +31222701 +31222701 17639150 4450854 29401950 @@ -38,8 +40,6 @@ 24348804 24348804 82732705 -40605147 -40605147 #extra 91949988 80117527 diff --git a/deck/AI_Raidraptor.ydk b/deck/AI_Raidraptor.ydk new file mode 100644 index 00000000..6050bc8f --- /dev/null +++ b/deck/AI_Raidraptor.ydk @@ -0,0 +1,59 @@ +#created by ... +#main +83236601 +83236601 +83236601 +60950180 +10194329 +53251824 +53251824 +53251824 +96345188 +96345188 +96345188 +5929801 +5929801 +5929801 +31314549 +46589034 +97219708 +97219708 +97219708 +1475311 +1475311 +23581825 +58988903 +58988903 +58988903 +43898403 +43898403 +94145683 +94145683 +8559793 +21648584 +53567095 +53567095 +5851097 +40605147 +40605147 +40605147 +66994718 +66994718 +84749824 +#extra +62541668 +86221741 +86221741 +23603403 +10443957 +81927732 +56832966 +84013237 +82633039 +96592102 +73347079 +73347079 +73347079 +73887236 +65305468 +!side diff --git a/deck/AI_ZodiacBeast.ydk b/deck/AI_ZodiacBeast.ydk new file mode 100644 index 00000000..b509c36c --- /dev/null +++ b/deck/AI_ZodiacBeast.ydk @@ -0,0 +1,70 @@ +#created by ... +#main +67136033 +77150143 +77150143 +77150143 +31755044 +31755044 +31755044 +4367330 +4145852 +78872731 +78872731 +78872731 +81275020 +81275020 +81275020 +53932291 +59438930 +59438930 +23434538 +23434538 +43898403 +43898403 +10719350 +46060017 +46060017 +46060017 +57103969 +57103969 +57103969 +675319 +73881652 +73881652 +83326048 +83326048 +83326048 +98954106 +40605147 +40605147 +40605147 +84749824 +#extra +30741334 +56832966 +84013237 +96381979 +581014 +581014 +11510448 +11510448 +48905153 +48905153 +74393852 +74393852 +85115440 +85115440 +4423206 +!side +4367330 +4145852 +59438930 +12580477 +73628505 +43898403 +17626381 +17626381 +675319 +73881652 +98954106 diff --git a/deck/NewCards1033Da.ydk b/deck/NewCards1033Da.ydk new file mode 100644 index 00000000..a10e0b15 --- /dev/null +++ b/deck/NewCards1033Da.ydk @@ -0,0 +1,94 @@ +#created by ... +#main +14124483 +16178682 +12289247 +3422200 +8284390 +9000988 +11067666 +12262393 +13241004 +7279373 +4367330 +4145852 +5489987 +122520 +14558127 +6205579 +7161742 +9113513 +11110587 +11398951 +458748 +8321183 +15256925 +9553721 +13758665 +1197847 +14463695 +675319 +975299 +2819435 +13035077 +13301895 +98905 +4931121 +5153769 +9336190 +9852718 +276357 +1344018 +9030160 +58330108 +73734821 +58984738 +65976795 +69610326 +65193366 +73511233 +66815913 +71007216 +73941492 +61677004 +66938505 +64753157 +64977888 +70117860 +60954556 +70939418 +60832978 +62899696 +63845230 +#extra +13331639 +11270236 +25793414 +25586143 +12307878 +13529466 +13455674 +14577226 +12632096 +15092394 +16195943 +11510448 +14970113 +12219047 +8491961 +!side +75672051 +75702749 +76403456 +76647978 +76794549 +77150143 +78765160 +78872731 +78942513 +79094383 +81055000 +81109178 +81269231 +81481818 +82821760 \ No newline at end of file diff --git a/deck/NewCards1033Db.ydk b/deck/NewCards1033Db.ydk new file mode 100644 index 00000000..606396c5 --- /dev/null +++ b/deck/NewCards1033Db.ydk @@ -0,0 +1,94 @@ +#created by ... +#main +29432356 +30539496 +21377582 +35494087 +22211622 +30603688 +38033126 +22499034 +26420373 +17540705 +26638543 +17663375 +35618217 +34496660 +31755044 +17328157 +20155904 +18486927 +35272499 +36527535 +26308721 +33334269 +27750191 +34550857 +18210764 +25415052 +34773082 +35726888 +37469904 +36730805 +27642961 +23068051 +28369508 +30426226 +31548814 +32360466 +33280639 +34302287 +36247316 +35125879 +#extra +51788412 +51570882 +48791583 +49820233 +41209828 +40636712 +49513164 +50065971 +33541430 +47349116 +49121795 +41375811 +48905153 +51497409 +48608796 +61884774 +72332074 +73271204 +74063034 +74580251 +73055622 +72129804 +73468603 +60168186 +70147689 +74850403 +75425320 +61397885 +62645025 +67820935 +73881652 +74003290 +60675348 +61529473 +69452756 +!side +83048208 +86120751 +86937530 +87246309 +87639778 +87769556 +87917187 +88069597 +88851326 +89181134 +90243945 +90365482 +91258852 +91588074 +92092092 \ No newline at end of file diff --git a/deck/NewCards1033Dc.ydk b/deck/NewCards1033Dc.ydk new file mode 100644 index 00000000..0768115d --- /dev/null +++ b/deck/NewCards1033Dc.ydk @@ -0,0 +1,73 @@ +#created by ... +#main +56649609 +46986417 +44874522 +57761191 +44944304 +45667991 +42600274 +51644030 +40542825 +52022648 +38572779 +55997110 +52792430 +49684352 +38695361 +48461764 +56827051 +39817919 +39581190 +55705473 +42878636 +43722862 +53819028 +52900000 +40522482 +44052074 +45948430 +47185546 +47882565 +40252269 +46060017 +48605591 +49430782 +48308134 +49306994 +47679935 +54631665 +47457347 +47482043 +51858200 +#extra +75286621 +88305705 +69946549 +87182127 +85908279 +76815942 +87460579 +59843383 +66698383 +82044280 +90036274 +88581108 +86238081 +74393852 +85115440 +!side +92200612 +92970404 +94160895 +94982447 +95004025 +96073342 +96227613 +96857854 +97795930 +97949165 +98918572 +99427357 +99913726 +96157835 \ No newline at end of file diff --git a/expansions/cards-tf.cdb b/expansions/cards-tf.cdb index f4e3187b..df816c5d 100644 Binary files a/expansions/cards-tf.cdb and b/expansions/cards-tf.cdb differ diff --git a/expansions/cards-tf.zip b/expansions/cards-tf.zip index ec891b01..da6a5b37 100644 Binary files a/expansions/cards-tf.zip and b/expansions/cards-tf.zip differ diff --git a/expansions/live2016 b/expansions/live2016 deleted file mode 160000 index 205583ce..00000000 --- a/expansions/live2016 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 205583ce65dafb5a75bf0fb22ad4b9c57fa68e18 diff --git a/expansions/live2017 b/expansions/live2017 new file mode 160000 index 00000000..5bcb00d7 --- /dev/null +++ b/expansions/live2017 @@ -0,0 +1 @@ +Subproject commit 5bcb00d7c3bfff23a8a8135393bd274b575271cc diff --git a/expansions/liveanime b/expansions/liveanime new file mode 160000 index 00000000..b7163e8f --- /dev/null +++ b/expansions/liveanime @@ -0,0 +1 @@ +Subproject commit b7163e8fad16552871a68e240393e74f29fa9a82 diff --git a/language/credits.txt b/language/credits.txt deleted file mode 100644 index 173f3de4..00000000 --- a/language/credits.txt +++ /dev/null @@ -1,8 +0,0 @@ -German de -Bateriemann -http://bats-ygo.jimdo.com/ -http://www.ygopro.co/tabid/95/g/posts/t/4259/german-translation.aspx - -Spanish es -Clan Phoenix -http://www.torneosphoenix.com/ diff --git a/language/de/cards.cdb b/language/de/cards.cdb index 94d687f8..f6925c95 100644 Binary files a/language/de/cards.cdb and b/language/de/cards.cdb differ diff --git a/language/es/cards.cdb b/language/es/cards.cdb deleted file mode 100644 index ccbe7e88..00000000 Binary files a/language/es/cards.cdb and /dev/null differ diff --git a/language/es/strings.conf b/language/es/strings.conf deleted file mode 100644 index 431767e7..00000000 --- a/language/es/strings.conf +++ /dev/null @@ -1,464 +0,0 @@ -#The first line is used for comment -#line doesn't start with '!' is also neglected -#system -!system 1 Invocación Normal -!system 2 Invocación Especial -!system 3 Invocación de Volteo -!system 4 Invocación Normal Exitosa -!system 5 Invocación Especial Exitosa -!system 6 Invocación de Volteo Exitosa -!system 7 Activar -!system 10 Remover Contador(es) -!system 11 Pagar Life Points -!system 12 Remover Material(es) -!system 20 Draw Phase -!system 21 Standby Phase -!system 22 Main Phase -!system 23 Fin de Main Phase -!system 24 Battle Phase -!system 25 Fin de Battle Phase -!system 26 End Phase -!system 27 Antes de la Draw -!system 28 Inicio del Paso Battle Phase -!system 30 Repetición,¿Desea continuar el Ataque? -!system 31 ¿Quieres Atacar directamente? -!system 40 Damage Step -!system 41 Cálculo de Daño -!system 42 Fin de Damage Step -!system 43 Inicio del Damage Step -!system 60 Cara -!system 61 Cruz -!system 62 Activar Efecto -!system 63 Recibir Efecto -!system 64 Recibir vuelve a convocar -!system 70 Cartas de Monstruos -!system 71 Cartas de Mágicas -!system 72 Cartas de Trampas -!system 80 Entrando en Battle Phase -!system 81 Fin del End Phase -!system 90 ¿Invocación de Tributo? -!system 91 ¿Realizar Invocación Especial adicional? -!system 100 Primero en Jugar -!system 101 Segundo en Jugar -!system 200 ¿Activar el efecto desde la [%ls] de [%ls]? -!system 201 Ningún efecto se puede activar en este momento -!system 202 ¿Confirmar? -!system 203 ¿Desea Encadenar? -!system 204 Remover %d [%ls] -!system 205 Por favor, seleccione un tipo de orden -!system 206 Por favor, seleccione la secuencia de la cadena -!system 207 Revelando %d carta(s): -!system 208 Confirmando %d carta(s): -!system 209 La carta cumple los requisitos -!system 210 ¿Seleccione si desea continuar? -!system 211 Número de Ronda: -!system 212 Declare Carta: -!system 213 Declare Tipo: -!system 214 Declare Atributo: -!system 215 Declare Número: -!system 500 Selecciona un monstruo para tributar -!system 501 Selecciona una carta para descartar -!system 502 Selecciona una carta para destruir -!system 503 Selecciona una carta para remover -!system 504 Selecciona una carta para enviar al Cementerio -!system 505 Selecciona una carta para regresar a la mano -!system 506 Selecciona la carta para añadir a tu mano -!system 507 Selecciona la carta(s) para regresar al Deck -!system 508 Selecciona la carta para Invocar -!system 509 Selecciona un Monstruo para Invocación Especial -!system 510 Selecciona una carta para Voltear -!system 511 Selecciona un objetivo para remover -!system 512 Selecciona materiales para Invocación de Sicronía -!system 513 Selecciona materiales para Invocación de Xyz -!system 514 Selecciona una carta del side de tu adversario -!system 515 Selecciona una carta en tu side -!system 516 Selecciona un monstruo en posición de ataque -!system 517 Selecciona un monstruo en posición de defensa -!system 518 Selecciona una carta para equipar -!system 519 Selecciona el material Xyz para separar -!system 520 Selecciona el monstruo para cambiar el control -!system 521 Selecciona la carta para reemplazar -!system 522 Selecciona los monstruos en ataque -!system 523 Selecciona los monstruos en defensa -!system 524 Selecciona el monstruo en ataque -!system 525 Selecciona el monstruo en defensa -!system 526 Carta revelada -!system 527 Selecciona el lugar del campo para colocar la carta -!system 528 Selecciona un monstruo para cambiar -!system 529 Selecciona tu carta -!system 530 Selecciona la carta de tu adversario -!system 531 Selecciona los monstruos de nivel más alto para sacrificar: -!system 550 Selecciona el efecto para activar -!system 551 Selecciona el objetivo del efecto -!system 552 Selecciona Cara o Cruz -!system 553 Selecciona el resultado del dado -!system 554 Selecciona una categoría -!system 555 Selecciona una opción -!system 560 Selecciona -!system 561 Selecciona la posición de batalla -!system 562 Selecciona el atributo -!system 563 Declare el tipo -!system 564 Declare el nombre de la carta -!system 565 Selecciona un número -!system 566 Selecciona el efecto para activar -!system 567 Selecciona un rango -!system 1000 Deck -!system 1001 Mano -!system 1002 Zona de Monstruos -!system 1003 Zona de Mágicas/Trampas -!system 1004 Cementerio -!system 1005 Zona de Removidos -!system 1006 Extra Deck -!system 1007 Superponer -!system 1010 Tierra -!system 1011 Agua -!system 1012 Fuego -!system 1013 Viento -!system 1014 Luz -!system 1015 Oscuridad -!system 1016 Divino -!system 1020 Guerrero -!system 1021 Lanzador -!system 1022 Hada -!system 1023 Demonio -!system 1024 Zombi -!system 1025 Maquina -!system 1026 Aqua -!system 1027 Piro -!system 1028 Roca -!system 1029 Bestia Alada -!system 1030 Planta -!system 1031 Insecto -!system 1032 Trueno -!system 1033 Dragón -!system 1034 Bestia -!system 1035 Guerrero Bestia -!system 1036 Dinosaurio -!system 1037 Pez -!system 1038 Serpiente Marina -!system 1039 Reptil -!system 1040 Psychico -!system 1041 Bestia-Divina -!system 1042 Creator God -!system 1050 Monstruo -!system 1051 Mágica -!system 1052 Trampa -!system 1053 ??? -!system 1054 Normal -!system 1055 Efecto -!system 1056 Fusión -!system 1057 Ritual -!system 1058 Monstruos Trampa -!system 1059 Espíritu -!system 1060 Unión -!system 1061 Gemini -!system 1062 Cantante -!system 1063 Sincronía -!system 1064 Token -!system 1065 ??? -!system 1066 Juego-Rápido -!system 1067 Continua -!system 1068 Equipo -!system 1069 Campo -!system 1070 Contraefecto -!system 1071 Volteo -!system 1072 Toon -!system 1073 Xyz -!system 1080 (N/A) -#GUI -!system 1100 Destruir M/T -!system 1101 Destruir Monstruo -!system 1102 Remover -!system 1103 Enviar Cementerio -!system 1104 Regresar a la Mano -!system 1105 Regresar al Deck -!system 1106 Destruir Mano -!system 1107 Destruir Deck -!system 1108 Robar -!system 1109 Buscar -!system 1110 Añadir -!system 1111 Posición -!system 1112 Control -!system 1113 Cambio ATK/DEF -!system 1114 Piercing -!system 1115 Repetir Ataque -!system 1116 Limitar Ataques -!system 1117 Ataque Directo -!system 1118 Invocación Especial -!system 1119 Token -!system 1120 Tipo-Relacionado -!system 1121 Atributo-Relacionado -!system 1122 Daño LP -!system 1123 Recuperar LP -!system 1124 Destruir -!system 1125 Seleccionar -!system 1126 Contador -!system 1127 Apostar -!system 1128 Fusión-Relacionado -!system 1129 Cantante-Relacionado -!system 1130 Xyz-Relacionado -!system 1131 Negar Efecto -#actions -!system 1150 Activar -!system 1151 Invocar Normal -!system 1152 Invocar Especial -!system 1153 Colocar -!system 1154 Voltear -!system 1155 Defensa -!system 1156 Ataque -!system 1157 Atacar -!system 1158 Ver -#menu -!system 1200 Modo Hamachi -!system 1201 Modo Puzzle -!system 1202 Modo Repetición -!system 1203 N/A -!system 1204 Editar Deck -!system 1210 Salir -!system 1211 OK -!system 1212 Cancelar -!system 1213 Si -!system 1214 No -!system 1215 Comenzar -!system 1216 Mensaje -!system 1217 Actualizar -!system 1220 Nick: -!system 1221 Anfitrión IP: -!system 1222 Contraseña: -!system 1223 Entrar -!system 1224 Anfitrión -!system 1225 Reglas: -!system 1226 Formato: -!system 1227 Modo de Duelo: -!system 1228 ↓ Opciones Adicionales -!system 1229 No comprobar el deck -!system 1230 No mezclar el deck -!system 1231 LP Inicial: -!system 1232 Mano Inicial: -!system 1233 Cartas por robo: -!system 1234 Nombre Partida: -!system 1235 Contraseña: -!system 1236 Permitir Prioridad [TCG] -!system 1237 Tiempo Limite: -!system 1240 OCG -!system 1241 TCG -!system 1242 TCG/OCG -!system 1243 No Especificado -!system 1244 Individual -!system 1245 Match -!system 1246 Equipo -!system 1250 Anfitrión -!system 1251 → Duelo -!system 1252 → Espectador -!system 1253 Espectadores Actuales: -!system 1254 Selecciona Deck -!system 1255 Listo! -!system 1270 Información -!system 1271 Registro -!system 1272 Borrar Registro -!system 1273 Configuración -!system 1274 Posición automática de las cartas -!system 1275 ↑ Ubicación aleatoria -!system 1276 Orden automático de cadenas -!system 1277 Ninguna demora en las cadenas -!system 1280 Duelo Estándar -!system 1281 Duelo Tradicional -!system 1290 Silenciar adversario -!system 1291 Silenciar espectadores -!system 1300 Formato: -!system 1301 Deck's: -!system 1302 Guardar -!system 1303 G. Como -!system 1304 Limpiar -!system 1305 Ordenar -!system 1306 Atrás -!system 1307 Mezclar -!system 1310 (Todo) -!system 1311 Clase: -!system 1312 Monstruo -!system 1313 Mágica -!system 1314 Trampa -!system 1315 Limite: -!system 1316 Prohibidas -!system 1317 Limitadas -!system 1318 Semi Limitadas -!system 1319 Atributo: -!system 1321 Tipo: -!system 1322 ATK: -!system 1323 DEF: -!system 1324 Nivel: -!system 1325 Buscar: -!system 1326 Efectos -!system 1327 Nueva Búsqueda -!system 1328 Resultados Filtro -!system 1330 Main Deck: -!system 1331 Extra Deck: -!system 1332 Side Deck: -!system 1333 Resultados: -!system 1334 Finalizar edición del Side Deck -!system 1335 Guardado con éxito -!system 1340 ¿Guardar Repetición? -!system 1341 Guardar -!system 1342 Repeticiones: -!system 1343 Reproducir -!system 1344 Pausa -!system 1345 Avanzar -!system 1346 Cambiar -!system 1347 Volver -!system 1348 Cargar -!system 1349 Reproducir Repetición -!system 1350 Abandonar -!system 1351 Rendirse -!system 1352 Mensaje principal: -!system 1353 Turno Inicial: -!system 1390 Pensando... -!system 1391 Pensando.... -!system 1392 Pensando..... -!system 1400 No se puede conectar al anfitrión. -!system 1401 Conexión perdida. -!system 1402 Se produjo un error durante la transmisión. -!system 1403 No puede conectarse al anfitrión. -!system 1404 Contraseña incorrecta. -!system 1405 El anfitrión rechazo la conexión. -!system 1406 Deck no valido. -!system 1407 「%ls」 no se admiten. Intenta con "TCG/OCG" -!system 1408 Error al hacer Side Deck -!system 1409 Esperando que se realize el Side Deck... -!system 1410 El número de cartas no coincide. -!system 1411 El adversario no está de acuerdo(%X.0%X.%X)。 -!system 1500 Duelo terminado. -!system 1501 Repetición terminada. -!system 1502 La conexión se ha perdido. -!system 1510 Su elección:[%ls] -!system 1511 Adversario declaro:[%ls] -!system 1512 Elección del oponente:[%d] -!system 1600 Activar una carta -!system 1601 Colocar una carta -!system 1602 Cambiar una carta -!system 1603 [%ls]Invocación Normal... -!system 1604 Invocación Normal Exitosa -!system 1605 [%ls]Invocación Especial... -!system 1606 Invocación Especial Exitosa -!system 1607 [%ls]Invocación de Volteo -!system 1608 Invocación de Volteo Exitosa -!system 1609 [%ls]Esta resolviendose -!system 1610 [%ls](%ls,%d)Objetivo -!system 1611 Robaste %d carta(s) -!system 1612 Tu adversario robo %d carta(s) -!system 1613 Recibes %d daño -!system 1614 Tu adversario recibe %d de daño -!system 1615 Incrementa en %d LP -!system 1616 Tu adversario incrementa %d LP -!system 1617 [%ls] Ha colocado %d [%ls] -!system 1618 [%ls] Ha removido %d [%ls] -!system 1619 [%ls] Ataca [%ls] -!system 1620 [%ls] Ataque Directo -!system 1621 Ataque Negado -!system 1622 [%ls]Has perdido puntos -!system 1623 Resultado de la moneda: -!system 1624 Resultado de los dados: -#mod menu strings -!system 2015 FAQ -!system 2016 Ayuda -!system 2017 Inicio -!system 2023 Informacion -#mod strings -!system 2016 Ayuda -!system 2017 Inicio -!system 2018 1vs2 -!system 2019 Turbo duel -!system 2020 Anime -!system 2021 Filtro: -!system 2022 Modo CPU (beta) -!system 2023 Acerca de -!system 2024 Descripción: -!system 2025 ¿Estas seguro de borrar este deck permanentemente? -!system 2026 Borrado Exitosamente -!system 2027 Borrar -!system 2028 Volumen -!system 2029 Sala: -!system 2030 Duelistas: -!system 2031 Servidor ocupado. Porfavor intente nuevamente mas tarde. -!system 2032 No hay duelos en este momento -!system 2033 Los duelo estan creados en el servidor. Click en 'Anfitrión' para crear un nuevo duelo. -!system 2034 Nuevo version YGOPro Phoenix -!system 2035 Ya esta disponible la versión %s en ingles! Quieres descargarlo de pagina o dirigete a www.torneophoenix.com para descargar la versión en español. -!system 2036 Fallo de Conección o error de Syntaxis -!system 2037 Fallo al abrir la url -!system 2038 Fallo al analizar datos del servidor -!system 2039 El %s servidor requiere una cuenta para crear un duelo. -!system 2040 Abrir registro en la pagina http://%s ? -!system 2041 Servidor: -!system 2042 Contraseña del duelo: -!system 2043 Unirse/Crear duelo: -!system 2044 Jugar en Linea -!system 2045 MultiJugador -!system 2046 Permitir Efectos de Sonido -!system 2047 Permitir Música -#victory reason -!victory 0x0 Se ha Rendido -!victory 0x1 Los Life Points se redujeron a 0 -!victory 0x2 Tu oponente no tiene cartas en el deck -!victory 0x3 Tiempo Terminado. -!victory 0x4 Conexión Perdida. -!victory 0x10 Victoria por el efecto de Exodia -!victory 0x11 Victoria por el efecto de Final Countdown -!victory 0x12 Victoria por el efecto de Vennominaga -!victory 0x13 Victoria por el efecto de Horakhty -!victory 0x14 Victoria por el efecto de Exodius -!victory 0x15 Victoria por el efecto de Destiny Board -!victory 0x16 Victoria por el efecto de Last Turn -!victory 0x17 Victoria por el efecto de Number 88: Gimmick Puppet - Destiny Leo -!victory 0x20 Match ganado por el efecto de 「%ls」 -#counters -!counter 0x3001 Contador Mágico -!counter 0x2 Contador de Cuña -!counter 0x3003 Contador Bushido -!counter 0x3004 Contador Psiquico -!counter 0x5 Contador Shine -!counter 0x6 Contador Gem -!counter 0x7 Contador(Colosseum Cage of the Gladiator Beasts) -!counter 0x8 Contador-D -!counter 0x9 Contador Poision -!counter 0xa Contador Genex -!counter 0x300b Contador(Ancient City) -!counter 0xc Contador Thunder -!counter 0xd Contador Greed -!counter 0xe Contador-A -!counter 0xf Contador Worm -!counter 0x10 Contador Black Feather -!counter 0x11 Contador Hyper Venom -!counter 0x12 Contador Karakuri -!counter 0x13 Contador Chaos -!counter 0x14 Contador(Miracle Jurassic Egg) -!counter 0x15 Contador Ice -!counter 0x16 Contador Spellstone -!counter 0x17 Contador Nut -!counter 0x18 Contador Flower -!counter 0x19 Contador Fog -!counter 0x20 Contador Planta -!counter 0x1a Contador Double -!counter 0x1b Contador Clock -!counter 0x1c Contador D -!counter 0x1d Contador Junk -!counter 0x1e Contador Gate -!counter 0x1f Contador (B.E.S.) -!counter 0x20 Contador Cloudian -!counter 0x21 Contador Guard -!counter 0x22 Contador Dragonic -!counter 0x23 Contador Ocean -!counter 0x24 Contador String -!counter 0x25 Contador Chronicle -!counter 0x26 Contador (Metal Shooter) -!counter 0x27 Contador (Des Mosquito) -!counter 0x3028 Contador (Dar Catapulter) -!counter 0x29 Contador (Balloon Lizard) -!counter 0x2a Contador (Magic Reflector) -!counter 0x2c Contador You Got It Boss! -!counter 0x2d Contador(Kickfire) -!counter 0x2e Contador Shark -!counter 0x302b Contador (Destiny) -!counter 0x90 Contador Maiden -!counter 0x91 Contador de velocidad -!counter 0x92 Cotador Plasma -!counter 0x93 Sacred Beast Counter \ No newline at end of file diff --git a/lflist.conf b/lflist.conf index b77c293a..d171b822 100644 --- a/lflist.conf +++ b/lflist.conf @@ -1,225 +1,228 @@ -#[2016.4 TCG][2016.7 OCG][2016.4 Traditional][2016.4 Anime] -!2016.4 TCG +#[2016.8 TCG][2017.1 OCG]]2017.1 Worlds][2016.8 Traditional][2016.12 Anime] +!2016.8 TCG #forbidden -07563579 0 --Emヒグルミ -68819554 0 --Emダメージ・ジャグラー -18326736 0 --星守の騎士 プトレマイオス -27279764 0 --アポクリフォート・キラー -20663556 0 --イレカエル -20366274 0 --エルシャドール・ネフィリム -40044918 0 --E・HERO エアーマン -53804307 0 --焔征竜-ブラスター -44910027 0 --ヴィクトリー・ドラゴン -82301904 0 --混沌帝龍 -終焉の使者- -79106360 0 --カオスポッド -90411554 0 --巌征竜-レドックス -08903700 0 --儀式魔人リリーサー -26202165 0 --クリッター -78010363 0 --黒き森のウィッチ -34124316 0 --サイバーポッド -50321796 0 --氷結界の龍 ブリューナク -81122844 0 --発条空母ゼンマイティ -21593977 0 --処刑人-マキュラ -56570271 0 --D-HERO ディスクガイ -69015963 0 --デビル・フランケン -33184167 0 --同族感染ウィルス -54719828 0 --No.16 色の支配者ショック・ルーラー -90307777 0 --影霊衣の術士 シュリット -34086406 0 --ラヴァルバル・チェイン -26400609 0 --瀑征竜-タイダル -46772449 0 --励輝士 ヴェルズビュート -78706415 0 --ファイバーポッド -93369354 0 --フィッシュボーグ-ガンナー -34206604 0 --魔導サイエンティスト -33508719 0 --メタモルポット -96782886 0 --メンタルマスター -03078576 0 --八汰烏 -89399912 0 --嵐征竜-テンペスト -14878871 0 --レスキューキャット -41482598 0 --悪夢の蜃気楼 -44763025 0 --いたずら好きな双子悪魔 -19613556 0 --大嵐 -17375316 0 --押収 -74191942 0 --苦渋の選択 -42829885 0 --強引な番兵 -45986603 0 --強奪 -55144522 0 --強欲な壺 -04031928 0 --心変わり -23557835 0 --次元融合 -83764718 0 --死者蘇生 -57953380 0 --生還の宝札 -87910978 0 --洗脳-ブレインコントロール -60682203 0 --大寒波 -67169062 0 --貪欲な壺 -27770341 0 --超再生能力 -69243953 0 --蝶の短剣-エルマ -72892473 0 --手札抹殺 -79571449 0 --天使の施し -48130397 0 --超融合 -42703248 0 --ハリケーン -18144506 0 --ハーピィの羽根帚 -70828912 0 --早すぎた埋葬 -34906152 0 --マスドライバー -46448938 0 --魔導書の神判 -77565204 0 --未来融合-フューチャー・フュージョン -27970830 0 --六武の門 -46411259 0 --突然変異 -85602018 0 --遺言状 -27174286 0 --異次元からの帰還 -61740673 0 --王宮の勅命 -93016201 0 --王宮の弾圧 -41420027 0 --神の宣告 -57585212 0 --自爆スイッチ -03280747 0 --第六感 -64697231 0 --ダスト・シュート -35316708 0 --刻の封印 -80604091 0 --血の代償 -28566710 0 --ラストバトル! -18326736 0 --星守の騎士 プトレマイオス -67616300 0 --Chicken Race -31222701 0 --Wavering Eyes +53804307 0 +82301904 0 +34124316 0 +69015963 0 +56570271 0 +8903700 0 +40044918 0 +78706415 0 +93369354 0 +34206604 0 +21593977 0 +96782886 0 +33508719 0 +79106360 0 +90411554 0 +14878871 0 +26202165 0 +90307777 0 +20663556 0 +89399912 0 +26400609 0 +33184167 0 +44910027 0 +78010363 0 +3078576 0 +20366274 0 +50321796 0 +46772449 0 +34086406 0 +54719828 0 +81122844 0 +87910978 0 +69243953 0 +72892473 0 +57953380 0 +4031928 0 +60682203 0 +17375316 0 +44763025 0 +23557835 0 +77565204 0 +27970830 0 +42703248 0 +79571449 0 +18144507 0 +18144506 0 +19613556 0 +85602018 0 +34906152 0 +46411259 0 +41482598 0 +83764718 0 +83764719 0 +74191942 0 +67169062 0 +55144522 0 +70828912 0 +45986603 0 +46448938 0 +48130397 0 +27770341 0 +42829885 0 +61740673 0 +28566710 0 +27174286 0 +93016201 0 +57585212 0 +3280747 0 +41420027 0 +35316708 0 +64697231 0 +80604091 0 +80604092 0 +7563579 0 +68819554 0 +18326736 0 +67616300 0 +31222701 0 +27279764 0 +35059553 0 +17330916 0 #limit -40318957 1 --EMドクロバット・ジョーカー -17330916 1 --EMモンキーボード -92746535 1 --竜剣士ラスターP -85103922 1 --アーティファクト-モラルタ -64034255 1 --A・ジェネクス・バードマン -45222299 1 --イビリチュア・ガストクラーケ -11877465 1 --イビリチュア・マインドオーガス -99177923 1 --インフェルニティ・デーモン -68184115 1 --甲虫装機 ダンセル -69207766 1 --甲虫装機 ホーネット -72989439 1 --カオス・ソルジャー -開闢の使者- -65518099 1 --クリフォート・ツール -12580477 1 --サンダー・ボルト -78868119 1 --深海のディーヴァ -48063985 1 --聖霊獣騎 カンナホーク -59297550 1 --ゼンマイマジシャン -65192027 1 --ダーク・アームド・ドラゴン -15341821 1 --ダンディライオン -90953320 1 --TG ハイパー・ライブラリアン -26674724 1 --ブリューナクの影霊衣 -52687916 1 --氷結界の龍 トリシューラ -16226786 1 --深淵の暗殺者 -80344569 1 --N・グラン・モール -70583986 1 --氷結界の虎王ドゥローレン -33396948 1 --封印されしエクゾディア -07902349 1 --封印されし者の左腕 -70903634 1 --封印されし者の右腕 -44519536 1 --封印されし者の左足 -08124921 1 --封印されし者の右足 -41386308 1 --マスマティシャン -10802915 1 --魔界発現世行きデスガイド -71564252 1 --ライオウ -85138716 1 --レスキューラビット -88264978 1 --レッドアイズ・ダークネスメタルドラゴン -48976825 1 --異次元からの埋葬 -89463537 1 --ユニコールの影霊衣 -33782437 1 --一時休戦 -66957584 1 --インフェルニティガン -72405967 1 --王家の生け贄 -81439173 1 --おろかな埋葬 -06417578 1 --神の写し身との接触 -96729612 1 --儀式の準備 -45305419 1 --継承の印 -17639150 1 --機殻の生贄 -95308449 1 --終焉のカウントダウン -74845897 1 --真炎の爆発 -37520316 1 --精神操作 -54447022 1 --ソウル・チャージ -14087893 1 --月の書 -81674782 1 --次元の裂け目 -75500286 1 --封印の黄金櫃 -15854426 1 --霞の谷の神風 -20758643 1 --彼岸の悪鬼 グラバースニッチ -43040603 1 --モンスターゲート -23171610 1 --リミッター解除 -02295440 1 --ワン・フォー・ワン -09059700 1 --インフェルニティ・バリア -05851097 1 --虚無空間 -84749824 1 --神の警告 -94192409 1 --強制脱出装置 -53582587 1 --激流葬 -82732705 1 --スキルドレイン -32807846 1 --増援 -73599290 1 --ソウルドレイン -29401950 1 --奈落の落とし穴 -83555666 1 --破壊輪 -17078030 1 --光の護封壁 -30241314 1 --マクロコスモス -32723153 1 --マジカル・エクスプロージョン -54974237 1 --闇のデッキ破壊ウイルス -72714461 1 --慧眼の魔術師 -17412721 1 --旧神ノーデン -63519819 1 --サウザンド・アイズ・サクリファイス -18239909 1 --Ignister Prominence, The Blasting Dracoslayer -14733538 1 --Draco Face-Off -58577036 1 --Reasoning -70368879 1 --Upstart Goblin +7902349 1 +44519536 1 +70903634 1 +8124921 1 +65518099 1 +85103922 1 +72989439 1 +15341821 1 +65192027 1 +78868119 1 +33396948 1 +64034255 1 +20758643 1 +99177923 1 +68184115 1 +69207766 1 +41386308 1 +80344569 1 +16226786 1 +88264978 1 +85138716 1 +10802915 1 +45222299 1 +11877465 1 +26674724 1 +89463537 1 +48063985 1 +70583986 1 +52687916 1 +90953320 1 +14087893 1 +48976825 1 +81674782 1 +15854426 1 +6417578 1 +95308449 1 +81439173 1 +66957584 1 +23171610 1 +37520316 1 +43040603 1 +33782437 1 +2295440 1 +96729612 1 +12580477 1 +32807846 1 +74845897 1 +72405967 1 +17639150 1 +54447022 1 +45305419 1 +29401950 1 +94192409 1 +54974237 1 +9059700 1 +30241314 1 +32723153 1 +83555666 1 +83555667 1 +82732705 1 +84749824 1 +73599290 1 +53582587 1 +5851097 1 +17078030 1 +40318957 1 +92746535 1 +72714461 1 +17412721 1 +18239909 1 +14733538 1 +58577036 1 +70368879 1 +57143342 1 +55885348 1 +96570609 1 +31178212 1 +27552504 1 +67723438 1 +22842126 1 +53208660 1 +79844764 1 #semi limit -37742478 2 --オネスト -85087012 2 --カードガンナー -74311226 2 --海皇の竜騎隊 -00423585 2 --召喚僧サモンプリースト -28297833 2 --ネクロフェイス -94886282 2 --光の援軍 -57143342 2 --彼岸の悪鬼 ガトルホッグ -53129443 2 --ブラック・ホール -62265044 2 --竜の渓谷 -91623717 2 --連鎖爆撃 -29843091 2 --おジャマトリオ -36468556 2 --停戦協定 -67723438 2 --Emergency Teleport -01475311 2 --闇の誘惑 -14943837 2 --デブリ・ドラゴン +74311226 2 +85087012 2 +37742478 2 +28297833 2 +423585 2 +91623717 2 +94886282 2 +53129443 2 +62265044 2 +36468556 2 +29843091 2 +14943837 2 +23434538 2 +71564252 2 +59297550 2 -!2016.7 OCG +!2017.1 OCG #forbidden -17178486 0 --Life Equalizer -34086406 0 --ラヴァルバル・チェイン -17330916 0 --Performapal Monkeyboard -54719828 0 --No.16 色の支配者ショック・ルーラー -68819554 0 --Emダメージ・ジャグラー -07563579 0 --Emヒグルミ +31178212 0 --マジェスペクター・ユニコーン 20663556 0 --イレカエル 44910027 0 --ヴィクトリー・ドラゴン 20366274 0 --エルシャドール・ネフィリム 53804307 0 --焔征竜-ブラスター +68819554 0 --Emダメージ・ジャグラー +07563579 0 --Emヒグルミ +17330916 0 --EMモンキーボード 90411554 0 --巌征竜-レドックス 17412721 0 --旧神ノーデン -26202165 0 --クリッター 78010363 0 --黒き森のウィッチ -07391448 0 --ゴヨウ・ガーディアン 34124316 0 --サイバーポッド -63519819 0 --サウザンド・アイズ・サクリファイス 21593977 0 --処刑人-マキュラ -31560081 0 --聖なる魔術師 16923472 0 --ゼンマイハンター 56570271 0 --D-HERO ディスクガイ 18326736 0 --星守の騎士 プトレマイオス 33184167 0 --同族感染ウィルス +54719828 0 --No.16 色の支配者ショック・ルーラー 26400609 0 --瀑征竜-タイダル -50321796 0 --氷結界の龍 ブリューナク 78706415 0 --ファイバーポッド 93369354 0 --フィッシュボーグ-ガンナー 34206604 0 --魔導サイエンティスト 96782886 0 --メンタルマスター 03078576 0 --八汰烏 +34086406 0 --ラヴァルバル・チェイン 89399912 0 --嵐征竜-テンペスト -14878871 0 --レスキューキャット +57421866 0 --レベル・スティーラー 41482598 0 --悪夢の蜃気楼 44763025 0 --いたずら好きな双子悪魔 -17375316 0 --押収 19613556 0 --大嵐 +17375316 0 --押収 74191942 0 --苦渋の選択 42829885 0 --強引な番兵 45986603 0 --強奪 55144522 0 --強欲な壺 04031928 0 --心変わり -12580477 0 --サンダー・ボルト +12580477 0 --サンダー·ボルト 23557835 0 --次元融合 57953380 0 --生還の宝札 -87910978 0 --洗脳-ブレインコントロール 60682203 0 --大寒波 69243953 0 --蝶の短剣-エルマ 79571449 0 --天使の施し @@ -227,58 +230,67 @@ 42703248 0 --ハリケーン 34906152 0 --マスドライバー 46448938 0 --魔導書の神判 -77565204 0 --未来融合-フューチャー・フュージョン 46411259 0 --突然変異 85602018 0 --遺言状 27174286 0 --異次元からの帰還 93016201 0 --王宮の弾圧 -61740673 0 --王宮の勅命 03280747 0 --第六感 -64697231 0 --ダスト・シュート +64697231 0 --ダスト·シュート 80604091 0 --血の代償 35316708 0 --刻の封印 +17178486 0 --ライフチェンジャー 28566710 0 --ラストバトル! #limit -92746535 1 --竜剣士ラスターP -47075569 1 --Performapal Pendulum Sorcerer -40318957 1 --EMドクロバット・ジョーカー -85103922 1 --アーティファクト-モラルタ -64034255 1 --A・ジェネクス・バードマン -68184115 1 --甲虫装機 ダンセル -40044918 1 --E・HERO エアーマン -50720316 1 --E・HERO シャドー・ミスト -72989439 1 --カオス・ソルジャー -開闢の使者- -72714461 1 --慧眼の魔術師 +81275020 1 --SRベイゴマックス +14878871 1 --レスキューキャット +07391448 1 --ゴヨウ·ガーディアン +70583986 1 --氷結界の虎王ドゥローレン +50321796 1 --氷結界の龍 ブリューナク +90809975 1 --餅カエル +57103969 1 --炎舞-「天璣」 +87910978 1 --洗脳-ブレインコントロール +66399653 1 --ユニオン格納庫 +61740673 1 --王宮の勅命 +77565204 1 --未来融合-フューチャー·フュージョン +64034255 1 --A·ジェネクス·バードマン +40044918 1 --E·HERO エアーマン +50720316 1 --E·HERO シャドー·ミスト +40318957 1 --EMドクロバット・ジョーカー +47075569 1 --EMペンデュラム・マジシャン +74586817 1 --PSYフレームロード・Ω 06602300 1 --重爆撃禽 ボム・フェネクス 28985331 1 --終末の騎士 00423585 1 --召喚僧サモンプリースト 78868119 1 --深海のディーヴァ -65192027 1 --ダーク・アームド・ドラゴン -15341821 1 --ダンディライオン -90953320 1 --TG ハイパー・ライブラリアン +65192027 1 --ダーク·アームド·ドラゴン +90953320 1 --TG ハイパー·ライブラリアン +69015963 1 --デビル・フランケン 16226786 1 --深淵の暗殺者 90307777 1 --影霊衣の術士 シュリット 28297833 1 --ネクロフェイス +18239909 1 --爆竜剣士イグニスターP +84764038 1 --彼岸の悪鬼 スカラマリオン +83531441 1 --彼岸の旅人 ダンテ 52687916 1 --氷結界の龍 トリシューラ 33396948 1 --封印されしエクゾディア -08124921 1 --封印されし者の右足 +07902349 1 --封印されし者の左腕 70903634 1 --封印されし者の右腕 44519536 1 --封印されし者の左足 -07902349 1 --封印されし者の左腕 +08124921 1 --封印されし者の右足 26674724 1 --ブリューナクの影霊衣 -91110378 1 --光天使スローネ -41386308 1 --マスマティシャン +10802915 1 --魔界発現世行きデスガイド 33508719 1 --メタモルポット 89463537 1 --ユニコールの影霊衣 -88264978 1 --レッドアイズ・ダークネスメタルドラゴン +92746535 1 --竜剣士ラスターP +88264978 1 --レッドアイズ·ダークネスメタルドラゴン 48976825 1 --異次元からの埋葬 33782437 1 --一時休戦 66957584 1 --インフェルニティガン -06417578 1 --神の写し身との接触 81439173 1 --おろかな埋葬 +23701465 1 --原初の種 96729612 1 --儀式の準備 +67723438 1 --緊急テレポート 45305419 1 --継承の印 -23701465 1 --原初の種 17639150 1 --機殻の生贄 83764718 1 --死者蘇生 32807846 1 --増援 @@ -288,221 +300,521 @@ 67169062 1 --貪欲な壺 97211663 1 --影霊衣の反魂術 18144506 1 --ハーピィの羽根帚 -53129443 1 --ブラック・ホール +22842126 1 --汎神の帝王 +53129443 1 --ブラック·ホール +53208660 1 --ペンデュラム・コール +93600443 1 --マスク・チェンジ・セカンド 15854426 1 --霞の谷の神風 +58577036 1 --名推理 +31222701 1 --揺れる眼差し 23171610 1 --リミッター解除 +14733538 1 --竜呼相打つ 62265044 1 --竜の渓谷 -02295440 1 --ワン・フォー・ワン +02295440 1 --ワン·フォー·ワン +05851097 1 --虚無空間 84749824 1 --神の警告 41420027 1 --神の宣告 -05851097 1 --虚無空間 36468556 1 --停戦協定 83555666 1 --破壊輪 -32723153 1 --マジカル・エクスプロージョン -84764038 1 --Scarm, Malebranche of the Burning Abyss -10802915 1 --Tour Guide From the Underworld -18239909 1 --Ignister Prominence, The Blasting Dracoslayer -83531441 1 --Dante, Traveler of the Burning Abyss -67723438 1 --Emergency Teleport -84171830 1 --Domain of the True Monarch -22842126 1 --Pantheism of the Monarchs -53208660 1 --Pendulum Call -93600443 1 --Mask Change II -58577036 1 --Reasoning -43040603 1 --Monster Gate -31222701 1 --Wavering Eyes -14733538 1 --Draco Face-Off +32723153 1 --マジカル·エクスプロージョン #semi limit -45222299 2 --イビリチュア・ガストクラーケ +31560081 2 --聖なる魔術師 +15341821 2 --ダンディライオン +85103922 2 --アーティファクト-モラルタ +45222299 2 --イビリチュア·ガストクラーケ 74311226 2 --海皇の竜騎隊 -65518099 2 --クリフォート・ツール -70583986 2 --氷結界の虎王ドゥローレン -92826944 2 --馬頭鬼 +72989439 2 --カオス·ソルジャー -開闢の使者- +72714461 2 --慧眼の魔術師 +45206713 2 --DDスワラル・スライム +19580308 2 --DDラミア 10028593 2 --輪廻天狗 +84171830 2 --真帝王領域 91623717 2 --連鎖爆撃 -94886282 2 --光の援軍 -27970830 2 --六武の門 -77505534 2 --堕ち影の蠢き -17078030 2 --光の護封壁 -26202165 2 --Sangan -63519819 2 --Thousand-Eyes Restrict +43040603 2 --モンスターゲート -!2016.4 Traditional +!2017.1 Worlds #forbidden +27279764 0 --Apoqliphort Towers +53804307 0 --Blaster, Dragon Ruler of Infernos +82301904 0 --Chaos Emperor Dragon - Envoy of the End +34124316 0 --Cyber Jar +69015963 0 --Cyber-Stein +56570271 0 --Destiny HERO - Disk Commander +8903700 0 --Djinn Releaser of Rituals +40044918 0 --Elemental HERO Stratos +78706415 0 +93369354 0 +21593977 0 +34206604 0 +96782886 0 +33508719 0 +79106360 0 +17330916 0 +90411554 0 +14878871 0 +89399912 0 +26400609 0 +33184167 0 +44910027 0 +16923472 0 +78010363 0 +26202165 0 +90307777 0 +20663556 0 +3078576 0 +20366274 0 +17412721 0 +50321796 0 +7391448 0 +46772449 0 +34086406 0 +54719828 0 +18326736 0 +81122844 0 +87910978 0 +69243953 0 +72892473 0 +57953380 0 +4031928 0 +67616300 0 +60682203 0 +17375316 0 +44763025 0 +23557835 0 +77565204 0 +27970830 0 +42703248 0 +79571449 0 +18144506 0 +19613556 0 +85602018 0 +17178486 0 +34906152 0 +46411259 0 +41482598 0 +83764718 0 +74191942 0 +67169062 0 +55144522 0 +70828912 0 +12580477 0 +45986603 0 +46448938 0 +48130397 0 +27770341 0 +42829885 0 +31222701 0 +61740673 0 +28566710 0 +27174286 0 +93016201 0 +57585212 0 +3280747 0 +41420027 0 +35316708 0 +64697231 0 +80604091 0 +68819554 0 +7563579 0 +35059553 0 +57421866 0 +31178212 0 #limit -07563579 1 --Emヒグルミ -68819554 1 --Emダメージ・ジャグラー -18326736 1 --星守の騎士 プトレマイオス -27279764 1 --アポクリフォート・キラー -20663556 1 --イレカエル -20366274 1 --エルシャドール・ネフィリム -40044918 1 --E・HERO エアーマン -53804307 1 --焔征竜-ブラスター -44910027 1 --ヴィクトリー・ドラゴン -82301904 1 --混沌帝龍 -終焉の使者- -79106360 1 --カオスポッド -90411554 1 --巌征竜-レドックス -08903700 1 --儀式魔人リリーサー -26202165 1 --クリッター -78010363 1 --黒き森のウィッチ -34124316 1 --サイバーポッド -50321796 1 --氷結界の龍 ブリューナク -81122844 1 --発条空母ゼンマイティ -21593977 1 --処刑人-マキュラ -56570271 1 --D-HERO ディスクガイ -69015963 1 --デビル・フランケン -33184167 1 --同族感染ウィルス -54719828 1 --No.16 色の支配者ショック・ルーラー -90307777 1 --影霊衣の術士 シュリット -34086406 1 --ラヴァルバル・チェイン -26400609 1 --瀑征竜-タイダル -46772449 1 --励輝士 ヴェルズビュート -78706415 1 --ファイバーポッド -93369354 1 --フィッシュボーグ-ガンナー -34206604 1 --魔導サイエンティスト -33508719 1 --メタモルポット -96782886 1 --メンタルマスター -03078576 1 --八汰烏 -89399912 1 --嵐征竜-テンペスト -14878871 1 --レスキューキャット -41482598 1 --悪夢の蜃気楼 -44763025 1 --いたずら好きな双子悪魔 -19613556 1 --大嵐 -17375316 1 --押収 -74191942 1 --苦渋の選択 -42829885 1 --強引な番兵 -45986603 1 --強奪 -55144522 1 --強欲な壺 -04031928 1 --心変わり -23557835 1 --次元融合 -83764718 1 --死者蘇生 -57953380 1 --生還の宝札 -87910978 1 --洗脳-ブレインコントロール -60682203 1 --大寒波 -67169062 1 --貪欲な壺 -27770341 1 --超再生能力 -69243953 1 --蝶の短剣-エルマ -72892473 1 --手札抹殺 -79571449 1 --天使の施し -48130397 1 --超融合 -42703248 1 --ハリケーン -18144506 1 --ハーピィの羽根帚 -70828912 1 --早すぎた埋葬 -34906152 1 --マスドライバー -46448938 1 --魔導書の神判 -77565204 1 --未来融合-フューチャー・フュージョン -27970830 1 --六武の門 -46411259 1 --突然変異 -85602018 1 --遺言状 -27174286 1 --異次元からの帰還 -61740673 1 --王宮の勅命 -93016201 1 --王宮の弾圧 -41420027 1 --神の宣告 -57585212 1 --自爆スイッチ -03280747 1 --第六感 -64697231 1 --ダスト・シュート -35316708 1 --刻の封印 -80604091 1 --血の代償 -28566710 1 --ラストバトル! -18326736 1 --星守の騎士 プトレマイオス -67616300 1 --Chicken Game -31222701 1 --Wavering Eyes -40318957 1 --EMドクロバット・ジョーカー -17330916 1 --EMモンキーボード -92746535 1 --竜剣士ラスターP -85103922 1 --アーティファクト-モラルタ -64034255 1 --A・ジェネクス・バードマン -45222299 1 --イビリチュア・ガストクラーケ -11877465 1 --イビリチュア・マインドオーガス -99177923 1 --インフェルニティ・デーモン -68184115 1 --甲虫装機 ダンセル -69207766 1 --甲虫装機 ホーネット -72989439 1 --カオス・ソルジャー -開闢の使者- -65518099 1 --クリフォート・ツール -12580477 1 --サンダー・ボルト -78868119 1 --深海のディーヴァ -48063985 1 --聖霊獣騎 カンナホーク -59297550 1 --ゼンマイマジシャン -65192027 1 --ダーク・アームド・ドラゴン -15341821 1 --ダンディライオン -90953320 1 --TG ハイパー・ライブラリアン -26674724 1 --ブリューナクの影霊衣 -52687916 1 --氷結界の龍 トリシューラ -16226786 1 --深淵の暗殺者 -80344569 1 --N・グラン・モール -70583986 1 --氷結界の虎王ドゥローレン -33396948 1 --封印されしエクゾディア -07902349 1 --封印されし者の左腕 -70903634 1 --封印されし者の右腕 -44519536 1 --封印されし者の左足 -08124921 1 --封印されし者の右足 -41386308 1 --マスマティシャン -10802915 1 --魔界発現世行きデスガイド -71564252 1 --ライオウ -85138716 1 --レスキューラビット -88264978 1 --レッドアイズ・ダークネスメタルドラゴン -48976825 1 --異次元からの埋葬 -89463537 1 --ユニコールの影霊衣 -33782437 1 --一時休戦 -66957584 1 --インフェルニティガン -72405967 1 --王家の生け贄 -81439173 1 --おろかな埋葬 -06417578 1 --神の写し身との接触 -96729612 1 --儀式の準備 -45305419 1 --継承の印 -17639150 1 --機殻の生贄 -95308449 1 --終焉のカウントダウン -74845897 1 --真炎の爆発 -37520316 1 --精神操作 -54447022 1 --ソウル・チャージ -14087893 1 --月の書 -81674782 1 --次元の裂け目 -75500286 1 --封印の黄金櫃 -15854426 1 --霞の谷の神風 -20758643 1 --彼岸の悪鬼 グラバースニッチ -43040603 1 --モンスターゲート -23171610 1 --リミッター解除 -02295440 1 --ワン・フォー・ワン -09059700 1 --インフェルニティ・バリア -05851097 1 --虚無空間 -84749824 1 --神の警告 -94192409 1 --強制脱出装置 -53582587 1 --激流葬 -82732705 1 --スキルドレイン -32807846 1 --増援 -73599290 1 --ソウルドレイン -29401950 1 --奈落の落とし穴 -83555666 1 --破壊輪 -17078030 1 --光の護封壁 -30241314 1 --マクロコスモス -32723153 1 --マジカル・エクスプロージョン -54974237 1 --闇のデッキ破壊ウイルス -72714461 1 --慧眼の魔術師 -17412721 1 --旧神ノーデン -63519819 1 --サウザンド・アイズ・サクリファイス -18239909 1 --Ignister Prominence, The Blasting Dracoslayer -14733538 1 --Draco Face-Off -58577036 1 --Reasoning -70368879 1 --Upstart Goblin +28985331 1 +85103922 1 +72989439 1 +15341821 1 +65192027 1 +78868119 1 +50720316 1 +33396948 1 +64034255 1 +20758643 1 +99177923 1 +68184115 1 +69207766 1 +7902349 1 +44519536 1 +92746535 1 +41386308 1 +28297833 1 +80344569 1 +16226786 1 +47075569 1 +40318957 1 +65518099 1 +88264978 1 +85138716 1 +70903634 1 +8124921 1 +84764038 1 +423585 1 +10802915 1 +59297550 1 +72714461 1 +6602300 1 +48063985 1 +45222299 1 +11877465 1 +26674724 1 +89463537 1 +70583986 1 +18239909 1 +90953320 1 +52687916 1 +83531441 1 +14087893 1 +48976825 1 +53129443 1 +81674782 1 +15854426 1 +14733538 1 +62265044 1 +6417578 1 +67723438 1 +95308449 1 +81439173 1 +75500286 1 +66957584 1 +23171610 1 +93600443 1 +37520316 1 +43040603 1 +97211663 1 +33782437 1 +2295440 1 +22842126 1 +53208660 1 +96729612 1 +23701465 1 +58577036 1 +32807846 1 +74845897 1 +72405967 1 +17639150 1 +45305419 1 +70368879 1 +29401950 1 +36468556 1 +94192409 1 +54974237 1 +9059700 1 +30241314 1 +32723153 1 +83555666 1 +82732705 1 +84749824 1 +73599290 1 +53582587 1 +5851097 1 +55885348 1 +96570609 1 +27552504 1 +79844764 1 +57143342 1 +74586817 1 --PSYフレームロード・Ω +66399653 1 +57103969 1 +90809975 1 +81275020 1 #semi limit -37742478 2 --オネスト -85087012 2 --カードガンナー -74311226 2 --海皇の竜騎隊 -00423585 2 --召喚僧サモンプリースト -28297833 2 --ネクロフェイス -94886282 2 --光の援軍 -57143342 2 --彼岸の悪鬼 ガトルホッグ -53129443 2 --ブラック・ホール -62265044 2 --竜の渓谷 -91623717 2 --連鎖爆撃 -29843091 2 --おジャマトリオ -36468556 2 --停戦協定 -67723438 2 --Emergency Teleport -01475311 2 --闇の誘惑 -14943837 2 --デブリ・ドラゴン +74311226 2 +31560081 2 +85087012 2 +14943837 2 +37742478 2 +10028593 2 +1475311 2 +91623717 2 +94886282 2 +29843091 2 +77505534 2 +23434538 2 +19580308 2 --DDラミア +45206713 2 --DDスワラル・スライム +71564252 2 +59297550 2 +91110378 2 --光天使スローネ +84171830 2 + +!2016.8 Traditional +#forbidden +#limit +53804307 1 +82301904 1 +34124316 1 +69015963 1 +56570271 1 +8903700 1 +40044918 1 +78706415 1 +93369354 1 +34206604 1 +21593977 1 +96782886 1 +33508719 1 +79106360 1 +90411554 1 +14878871 1 +26202165 1 +90307777 1 +20663556 1 +89399912 1 +26400609 1 +33184167 1 +44910027 1 +78010363 1 +3078576 1 +20366274 1 +50321796 1 +46772449 1 +34086406 1 +54719828 1 +81122844 1 +87910978 1 +69243953 1 +72892473 1 +57953380 1 +4031928 1 +60682203 1 +17375316 1 +44763025 1 +23557835 1 +77565204 1 +27970830 1 +42703248 1 +79571449 1 +18144507 1 +18144506 1 +19613556 1 +85602018 1 +34906152 1 +46411259 1 +41482598 1 +83764718 1 +83764719 1 +74191942 1 +67169062 1 +55144522 1 +70828912 1 +45986603 1 +46448938 1 +48130397 1 +27770341 1 +42829885 1 +61740673 1 +28566710 1 +27174286 1 +93016201 1 +57585212 1 +3280747 1 +41420027 1 +35316708 1 +64697231 1 +80604091 1 +80604092 1 +7563579 1 +68819554 1 +18326736 1 +67616300 1 +31222701 1 +27279764 1 +35059553 1 +17330916 1 +7902349 1 +44519536 1 +70903634 1 +8124921 1 +65518099 1 +85103922 1 +72989439 1 +15341821 1 +65192027 1 +78868119 1 +33396948 1 +64034255 1 +20758643 1 +99177923 1 +68184115 1 +69207766 1 +41386308 1 +80344569 1 +16226786 1 +88264978 1 +85138716 1 +10802915 1 +45222299 1 +11877465 1 +26674724 1 +89463537 1 +48063985 1 +70583986 1 +52687916 1 +90953320 1 +14087893 1 +48976825 1 +81674782 1 +15854426 1 +6417578 1 +95308449 1 +81439173 1 +66957584 1 +23171610 1 +37520316 1 +43040603 1 +33782437 1 +2295440 1 +96729612 1 +12580477 1 +32807846 1 +74845897 1 +72405967 1 +17639150 1 +54447022 1 +45305419 1 +29401950 1 +94192409 1 +54974237 1 +9059700 1 +30241314 1 +32723153 1 +83555666 1 +83555667 1 +82732705 1 +84749824 1 +73599290 1 +53582587 1 +5851097 1 +17078030 1 +40318957 1 +92746535 1 +72714461 1 +17412721 1 +18239909 1 +14733538 1 +58577036 1 +70368879 1 +57143342 1 +55885348 1 +96570609 1 +31178212 1 +27552504 1 +67723438 1 +22842126 1 +53208660 1 +79844764 1 +#semi limit +74311226 2 +85087012 2 +37742478 2 +28297833 2 +423585 2 +91623717 2 +94886282 2 +53129443 2 +62265044 2 +36468556 2 +29843091 2 +14943837 2 +23434538 2 +71564252 2 +59297550 2 -!2016.4 Worlds/Anime +!2016.12 Anime +#forbidden worlds +27279764 0 --Apoqliphort Towers +53804307 0 --Blaster, Dragon Ruler of Infernos +82301904 0 --Chaos Emperor Dragon - Envoy of the End +34124316 0 --Cyber Jar +69015963 0 --Cyber-Stein +56570271 0 --Destiny HERO - Disk Commander +8903700 0 --Djinn Releaser of Rituals +40044918 0 --Elemental HERO Stratos +78706415 0 +93369354 0 +21593977 0 +34206604 0 +96782886 0 +33508719 0 +79106360 0 +17330916 0 +90411554 0 +14878871 0 +89399912 0 +26400609 0 +33184167 0 +44910027 0 +16923472 0 +78010363 0 +26202165 0 +90307777 0 +20663556 0 +3078576 0 +20366274 0 +17412721 0 +50321796 0 +7391448 0 +46772449 0 +34086406 0 +54719828 0 +18326736 0 +81122844 0 +87910978 0 +69243953 0 +72892473 0 +57953380 0 +4031928 0 +67616300 0 +60682203 0 +17375316 0 +44763025 0 +23557835 0 +77565204 0 +27970830 0 +42703248 0 +79571449 0 +18144506 0 +19613556 0 +85602018 0 +17178486 0 +34906152 0 +46411259 0 +41482598 0 +83764718 0 +74191942 0 +67169062 0 +55144522 0 +70828912 0 +12580477 0 +45986603 0 +46448938 0 +48130397 0 +27770341 0 +42829885 0 +31222701 0 +61740673 0 +28566710 0 +27174286 0 +93016201 0 +57585212 0 +3280747 0 +41420027 0 +35316708 0 +64697231 0 +80604091 0 +68819554 0 +7563579 0 +35059553 0 +57421866 0 +31178212 0 #forbidden anime +511001611 0 --Numbers Evaille +511000381 0 --Wonder Cloud +511002048 0 --Call of the Living Dead +513000122 0 --Virus Cannon +513000121 0 --Anti-Magic Arrows +513000119 0 --Card Hexative +513000111 0 --Final Attack Orders 511000822 0 --Crush Card Virus 511002481 0 --Soul Exchange 511002598 0 --Glow-Up Bulb @@ -540,8 +852,10 @@ 42664989 0 --Card of Sanctity 511000204 0 --Card of Spell Containment 511000654 0 --Card of Variation +513000037 0 --Card of Last Will 810000021 0 --Deepest Impact 511000471 0 --Drawber +511000699 0 --Big Return 810000082 0 --Giant Flood 511000554 0 --Heaven's Lost Property 100000083 0 --Illusion Gate @@ -583,107 +897,173 @@ 10000020 0 --Slifer the Sky Dragon 10000010 0 --The Winged Dragon of Ra 10000000 0 --Obelisk the Tormentor -450000130 0 --Card of Last Will +511000245 0 --The Wicked Avatar (Anime) +511000257 0 --The Wicked Eraser (Anime) +511000259 0 --The Wicked Dreadroot (Anime) 512000007 0 --Underworld Circle -512000008 0 --Nibelung's Treasure 513000000 0 --Virus Cannon 511002736 0 --Hell Gift 513000027 0 --Ebon Sun 513000007 0 --Sea of Rebirth 513000009 0 --Crush Card Virus -#forbidden tcg ocg -27279764 0 --Apoqliphort Towers -53804307 0 --Blaster, Dragon Ruler of Infernos -82301904 0 --Chaos Emperor Dragon - Envoy of the End -34124316 0 --Cyber Jar -69015963 0 --Cyber-Stein -56570271 0 --Destiny HERO - Disk Commander -08903700 0 --Djinn Releaser of Rituals -40044918 0 --Elemental HERO Stratos -78706415 0 --Fiber Jar -93369354 0 --Fishborg Blaster -21593977 0 --Makyura the Destructor -34206604 0 --Magical Scientist -31560081 0 --Magician of Faith -96782886 0 --Mind Master -33508719 0 --Morphing Jar -79106360 0 --Morphing Jar #2 -17330916 0 --Performapal Monkeyboard -90411554 0 --Redox, Dragon Ruler of Boulders -14878871 0 --Rescue Cat -89399912 0 --Tempest, Dragon Ruler of Storms -26400609 0 --Tidal, Dragon Ruler of Waterfalls -33184167 0 --Tribe-Infecting Virus -44910027 0 --Victory Dragon -16923472 0 --Wind-Up Hunter -78010363 0 --Witch of the Black Forest -26202165 0 --Sangan -90307777 0 --Shurit, Strategist of the Nekroz -20663556 0 --Substitoad -03078576 0 --Yata-Garasu -20366274 0 --El Shaddoll Construct -17412721 0 --Elder Entity Norden -50321796 0 --Brionac, Dragon of the Ice Barrier -07391448 0 --Goyo Guardian -46772449 0 --Evilswarm Exciton Knight -34086406 0 --Lavalval Chain -54719828 0 --Number 16: Shock Master -18326736 0 --Tellarknight Ptolemaeus -81122844 0 --Wind-Up Carrier Zenmaity -87910978 0 --Brain Control -69243953 0 --Butterfly Dagger - Elma -72892473 0 --Card Destruction -57953380 0 --Card of Safe Return -04031928 0 --Change of Heart -67616300 0 --Chicken Game -60682203 0 --Cold Wave -17375316 0 --Confiscation -44763025 0 --Delinquent Duo -23557835 0 --Dimension Fusion -77565204 0 --Future Fusion -27970830 0 --Gateway of the Six -42703248 0 --Giant Trunade -79571449 0 --Graceful Charity -18144506 0 --Harpie's Feather Duster -19613556 0 --Heavy Storm -85602018 0 --Last Will -17178486 0 --Life Equalizer -34906152 0 --Mass Driver -46411259 0 --Metamorphosis -41482598 0 --Mirage of Nightmare -83764718 0 --Monster Reborn -74191942 0 --Painful Choice -67169062 0 --Pot of Avarice -55144522 0 --Pot of Greed -70828912 0 --Premature Burial -12580477 0 --Raigeki -45986603 0 --Snatch Steal -46448938 0 --Spellbook of Judgment -48130397 0 --Super Polymerization -27770341 0 --Super Rejuvenation -42829885 0 --The Forceful Sentry -31222701 0 --Wavering Eyes -61740673 0 --Imperial Order -28566710 0 --Last Turn -27174286 0 --Return from the Different Dimension -93016201 0 --Royal Oppression -57585212 0 --Self-Destruct Button -03280747 0 --Sixth Sense -41420027 0 --Solemn Judgment -35316708 0 --Time Seal -64697231 0 --Trap Dustshoot -80604091 0 --Ultimate Offering -513000002 0 --Mirror Wall -513000057 0 --Sabatiel - The Philosopher's Stone -68819554 0 --Performage Damage Juggler -7563579 0 --Performage Plushfire +513000080 0 --Graveyard Rebound +513000011 0 --Burning Soul +170000170 0 --Divine Serpent Geh (Anime) +511000252 0 --Earthbound Immortal Wiraqocha Rasca (Anime) +511001307 0 --Energy Drain +511000866 0 --Xyz Treasure Ticket +513000077 0 --Beast-borg Medal of the Crimson Chain +511000429 0 --Gold Moon Coin +511002969 0 --Slow Life +511002449 0 --Prominence +95000001 0 --Darkness Outsider/Boss Duel +95000002 0 --Darkness Neosphere/Boss Duel +95000003 0 --Darkness/Boss Duel +95000004 0 --Infinity/Boss Duel +95000005 0 --Zero/Boss Duel +95000006 0 --Darkness 1/Boss Duel +95000007 0 --Darkness 2/Boss Duel +95000008 0 --Darkness 3/Boss Duel +95000009 0 --Toon Gemini Elf/Boss Duel +95000010 0 --Toon Masked Sorcerer/Boss Duel +95000011 0 --Toon Summoned Skull/Boss Duel +95000012 0 --Toon World/Boss Duel +95000013 0 --Comic Hand/Boss Duel +95000014 0 --Relinquished/Boss Duel +95000015 0 --Mimicat/Boss Duel +95000016 0 --Toon Briefcase/Boss Duel +95000017 0 --Numeron Callin/Boss Duel +95000022 0 --Number C1:Numeron Chaos Gate Shunya/Boss Duel +95000023 0 --Numeron Network/Boss Duel +95000024 0 --Numeron Chaos Ritual/Boss Duel +95000025 0 --Number C1000: Numerronius/Boss Duel +95000026 0 --Number iC1000: Numerronius Numerronia/Boss Duel +95000027 0 --Numeron Xyz Revision/Boss Duel +95000028 0 --Numeron Spell Revision/Boss Duel +95000029 0 --Nonexistence/Boss Duel +95000030 0 --Michion, the Timelord/Boss Duel +95000033 0 --Gabrion, the Timelord/Boss Duel +95000036 0 --Sandaion, the Timelord/Boss Duel +95000037 0 --Endless Emptiness/Boss Duel +95000038 0 --Lazion, the Timelord/Boss Duel +95000041 0 --Infinite Light/Boss Duel +95000042 0 --Sephylon, the Ultimate Timelord/Boss Duel + +#limit worlds +28985331 1 +85103922 1 +72989439 1 +15341821 1 +65192027 1 +78868119 1 +50720316 1 +33396948 1 +64034255 1 +20758643 1 +99177923 1 +68184115 1 +69207766 1 +7902349 1 +44519536 1 +92746535 1 +41386308 1 +28297833 1 +80344569 1 +16226786 1 +47075569 1 +40318957 1 +65518099 1 +88264978 1 +85138716 1 +70903634 1 +8124921 1 +84764038 1 +423585 1 +10802915 1 +59297550 1 +72714461 1 +6602300 1 +48063985 1 +45222299 1 +11877465 1 +26674724 1 +89463537 1 +70583986 1 +18239909 1 +90953320 1 +52687916 1 +83531441 1 +14087893 1 +48976825 1 +53129443 1 +81674782 1 +15854426 1 +14733538 1 +62265044 1 +6417578 1 +67723438 1 +95308449 1 +81439173 1 +75500286 1 +66957584 1 +23171610 1 +93600443 1 +37520316 1 +43040603 1 +97211663 1 +33782437 1 +2295440 1 +22842126 1 +53208660 1 +96729612 1 +23701465 1 +58577036 1 +32807846 1 +74845897 1 +72405967 1 +17639150 1 +45305419 1 +70368879 1 +29401950 1 +36468556 1 +94192409 1 +54974237 1 +9059700 1 +30241314 1 +32723153 1 +83555666 1 +82732705 1 +84749824 1 +73599290 1 +53582587 1 +5851097 1 +55885348 1 +96570609 1 +27552504 1 +79844764 1 +57143342 1 +74586817 1 --PSYフレームロード・Ω +66399653 1 +57103969 1 +90809975 1 +81275020 1 #limit anime +511001320 1 --Ninja Commando Kabuki +511002604 1 --Seal of Orichalcos (UDE) +511002075 1 --Bahamut Shark +511004000 1 --Destiny Draw 511000680 1 --Ice Age Panic +511004001 1 --Speed Duel +511002620 1 --Underworld Resonance - Synchro Fusion 511001614 1 --Spirit Xyz Spark 511001642 1 --Synchro Alliance +511000604 1 --Enemy Controller 100000478 1 --Ties of the Brethren 511000551 1 --Treasures of the Dead 511001172 1 --Underwater Snow Prison +511002600 1 --Number 88 +511000115 1 --Revival Jam +511002048 1 --Call of the Living Dead 511000829 1 --Re-Xyz 100000470 1 --Soul Fusion 511000809 1 --Spectral Ice Floe @@ -721,38 +1101,6 @@ 511000418 1 --Beckon to Darkness 500000147 1 --École de Zone 511000443 1 --Path to Destiny -95000001 1 --Darkness Outsider/Boss Duel -95000002 1 --Darkness Neosphere/Boss Duel -95000003 1 --Darkness/Boss Duel -95000004 1 --Infinity/Boss Duel -95000005 1 --Zero/Boss Duel -95000006 1 --Darkness 1/Boss Duel -95000007 1 --Darkness 2/Boss Duel -95000008 1 --Darkness 3/Boss Duel -95000009 1 --Toon Gemini Elf/Boss Duel -95000010 1 --Toon Masked Sorcerer/Boss Duel -95000011 1 --Toon Summoned Skull/Boss Duel -95000012 1 --Toon World/Boss Duel -95000013 1 --Comic Hand/Boss Duel -95000014 1 --Relinquished/Boss Duel -95000015 1 --Mimicat/Boss Duel -95000016 1 --Toon Briefcase/Boss Duel -95000017 1 --Numeron Callin/Boss Duel -95000022 1 --Number C1:Numeron Chaos Gate Shunya/Boss Duel -95000023 1 --Numeron Network/Boss Duel -95000024 1 --Numeron Chaos Ritual/Boss Duel -95000025 1 --Number C1000: Numerronius/Boss Duel -95000026 1 --Number iC1000: Numerronius Numerronia/Boss Duel -95000027 1 --Numeron Xyz Revision/Boss Duel -95000028 1 --Numeron Spell Revision/Boss Duel -95000029 1 --Nonexistence/Boss Duel -95000030 1 --Michion, the Timelord/Boss Duel -95000033 1 --Gabrion, the Timelord/Boss Duel -95000036 1 --Sandaion, the Timelord/Boss Duel -95000037 1 --Endless Emptiness/Boss Duel -95000038 1 --Lazion, the Timelord/Boss Duel -95000041 1 --Infinite Light/Boss Duel -95000042 1 --Sephylon, the Ultimate Timelord/Boss Duel 511001726 1 --Ancient Gear Ultimate Hound Dog 100000565 1 --Freezing Dance 511000598 1 --Fallout @@ -785,111 +1133,44 @@ 513000014 1 --T.G. Halberd Cannon 17078030 1 --Wall of Revealing Light 95200000 1 --Command Duel -#limit tcg ocg -28985331 1 --Armageddon Knight -85103922 1 --Artifact Moralltach -72989439 1 --Black Luster Soldier - Envoy of the Beginning -15341821 1 --Dandylion -65192027 1 --Dark Armed Dragon -78868119 1 --Deep Sea Diva -50720316 1 --Elemental HERO Shadow Mist -33396948 1 --Exodia the Forbidden One -64034255 1 --Genex Ally Birdman -20758643 1 --Graff, Malebranche of the Burning Abyss -99177923 1 --Infernity Archfiend -68184115 1 --Inzektor Dragonfly -69207766 1 --Inzektor Hornet -07902349 1 --Left Arm of the Forbidden One -44519536 1 --Left Leg of the Forbidden One -92746535 1 --Luster Pendulum, the Dracoslayer -41386308 1 --Mathematician -28297833 1 --Necroface -80344569 1 --Neo-Spacian Grand Mole -16226786 1 --Night Assailant -47075569 1 --Performapal Pendulum Sorcerer -40318957 1 --Performapal Skullcrobat Joker -65518099 1 --Qliphort Scout -88264978 1 --Red-Eyes Darkness Metal Dragon -85138716 1 --Rescue Rabbit -70903634 1 --Right Arm of the Forbidden One -08124921 1 --Right Leg of the Forbidden One -84764038 1 --Scarm, Malebranche of the Burning Abyss -91110378 1 --Star Seraph Sovereign -00423585 1 --Summoner Monk -71564252 1 --Thunder King Rai-Oh -10802915 1 --Tour Guide From the Underworld -59297550 1 --Wind-Up Magician -72714461 1 --Wisdom-Eye Magician -06602300 1 --Blaze Fenix, the Burning Bombardment Bird -48063985 1 --Ritual Beast Ulti-Cannahawk -63519819 1 --Thousand-Eyes Restrict -45222299 1 --Evigishki Gustkraken -11877465 1 --Evigishki Mind Augus -26674724 1 --Nekroz of Brionac -89463537 1 --Nekroz of Unicore -70583986 1 --Dewloren, Tiger King of the Ice Barrier -18239909 1 --Ignister Prominence, the Blasting Dracoslayer -90953320 1 --T.G. Hyper Librarian -52687916 1 --Trishula, Dragon of the Ice Barrier -83531441 1 --Dante, Traveler of the Burning Abyss -14087893 1 --Book of Moon -48976825 1 --Burial From a Different Dimension -53129443 1 --Dark Hole -81674782 1 --Dimensional Fissure -15854426 1 --Divine Wind of Mist Valley -84171830 1 --Domain of the True Monarchs -14733538 1 --Draco Face-Off -62265044 1 --Dragon Ravine -06417578 1 --El Shaddoll Fusion -67723438 1 --Emergency Teleport -95308449 1 --Final Countdown -81439173 1 --Foolish Burial -75500286 1 --Gold Sarcophagus -66957584 1 --Infernity Launcher -23171610 1 --Limiter Removal -93600443 1 --Mask Change II -37520316 1 --Mind Control -43040603 1 --Monster Gate -97211663 1 --Nekroz Cycle -33782437 1 --One Day of Peace -02295440 1 --One for One -22842126 1 --Pantheism of the Monarchs -53208660 1 --Pendulum Call -96729612 1 --Preparation of Rites -23701465 1 --Primal Seed -58577036 1 --Reasoning -32807846 1 --Reinforcement of the Army -74845897 1 --Rekindling -72405967 1 --Royal Tribute -17639150 1 --Saqlifice -45305419 1 --Symbol of Heritage -70368879 1 --Upstart Goblin -29401950 1 --Bottomless Trap Hole -36468556 1 --Ceasefire -94192409 1 --Compulsory Evacuation Device -54974237 1 --Eradicator Epidemic Virus -09059700 1 --Infernity Barrier -30241314 1 --Macro Cosmos -32723153 1 --Magical Explosion -83555666 1 --Ring of Destruction -82732705 1 --Skill Drain -84749824 1 --Solemn Warning -73599290 1 --Soul Drain -53582587 1 --Torrential Tribute -05851097 1 --Vanity's Emptiness +#semi limit worlds +74311226 2 +31560081 2 +85087012 2 +14943837 2 +37742478 2 +10028593 2 +1475311 2 +91623717 2 +94886282 2 +29843091 2 +77505534 2 +23434538 2 +19580308 2 --DDラミア +45206713 2 --DDスワラル・スライム +71564252 2 +59297550 2 +91110378 2 --光天使スローネ +84171830 2 +#semi limit +74311226 2 +85087012 2 +14943837 2 +37742478 2 +92826944 2 +10028593 2 +1475311 2 +91623717 2 +94886282 2 +29843091 2 +77505534 2 +23434538 2 +19580308 2 --DDラミア +45206713 2 --DDスワラル・スライム +71564252 2 +59297550 2 +91110378 2 --光天使スローネ +84171830 2 #semi limit anime 511000494 2 --Effect Shut -100000020 2 --After Glow -#semi limit tcg ocg -74311226 2 --Atlantean Dragoons -85087012 2 --Card Trooper -57143342 2 --Cir, Malebranche of the Burning Abyss -14943837 2 --Debris Dragon -37742478 2 --Honest -92826944 2 --Mezuki -10028593 2 --Reborn Tengu -01475311 2 --Allure of Darkness -91623717 2 --Chain Strike -94886282 2 --Charge of the Light Brigade -29843091 2 --Ojama Trio -77505534 2 --Sinister Shadow Games +100000020 2 --After Glow \ No newline at end of file diff --git a/readme-linux.txt b/readme-linux.txt index 838f380b..1b8bfe8a 100644 --- a/readme-linux.txt +++ b/readme-linux.txt @@ -1,42 +1,23 @@ -YGOPRO 1.032.1 V2 Duelist Set Lightlord Judgment and Machine-Gear Troopers +YGOPRO 1.033.D ============================================================ Installation ============================================================ -================ -Ubuntu 12.04 LTS -================ -32-bit: --Extract the 7zip archive --Open a terminal and run the following commands. You only need to do this once. -$ sudo apt-get install libevent-pthreads-2.0.5 -$ sudo apt-get install libopenal1 --Start ygopro by double clicking on ygopro32 - -64-bit: --Extract the 7zip archive --Open a terminal and run the following commands. You only need to do this once. -$ sudo apt-get install libevent-pthreads-2.0.5 -$ sudo apt-get install libopenal1 --Start ygopro by double clicking on ygopro64 - ========================= -Fedora 19 Desktop Edition +Fedora 24 64-bit +Linux Mint 18.1 64-bit ========================= -32-bit: --Extract the 7zip archive +Only 64-bit is supported. +-Extract the archive -Open a terminal and run the following commands. You only need to do this once. -$ sudo yum install libcurl -$ cd /usr/lib -$ ln -s libcurl.so.4 libcurl-gnutls.so.4 --Start ygopro by double clicking on ygopro32 +$ sudo apt-get install libevent-pthreads-2.0.5 +$ sudo apt-get install libopenal1 +$ sudo apt-get install libsfml-audio2.3v5 +$ sudo apt-get install libgit2-24 +$ sudo apt-get install libcurl3 -64-bit: --Extract the 7zip archive --Open a terminal and run the following commands. You only need to do this once. -$ sudo yum install libcurl -$ cd /usr/lib64 -$ ln -s libcurl.so.4 libcurl-gnutls.so.4 --Start ygopro by double clicking on ygopro64 +-Start ygopro: +$ ./ygopro +Or double click on ygopro ========================= Other Linux distributions @@ -46,75 +27,23 @@ lua5.2 freetype2 libevent libcurl +libgit2 -============================================================ -Changelog -============================================================ -New cards - -Duelist Set: Version Lightlord Judgment - -Duelist Set: Version Machine-Gear Troopers - -V Jump promotional cards - -Geargiauger - -Anime cards by 馬骨 - - Ferris, Lightsworn Archer will be added once the effect is confirmed +-Start ygopro: +$ ./ygopro +Or double click on ygopro -Changes to the ygopro client - New files for background and music. These files are optional - -Duel background is called /textures/bg-duel.jpg - -Random duel music song2.mp3 and song3.mp3 (Windows only) +If it doesn't start, use the following command the check what libraries are misssing. +$ ldd ygopro -Updates to the card database - -Name, dialog and card lore fixes - -Returned Rank-Up-Magic Astral Force anime version - -Returned match winner cards - -Added missing field spell images - -Fixed problems regarding "Cybernetic" cards - -============================================================ -Known issues -============================================================ --Some images might not match the card name --Replays from previous version will not work --Replays from AI mode will crash - -============================================================ -Donate -============================================================ -By donating you help support the development of Ygopro Percy and maintaining the servers. -http://www.ygopro.co/Community/Donate.aspx - -============================================================ -Credits -============================================================ -YGOPro mod (音效版) official website -http://www.ygopro.co - -Fluorohydride -https://github.com/Fluorohydride/ygopro - -馬骨 -YGOPro ( ADS ) 1.032.0 繁體中文版 - -遊戯王 Automatic Dueling System @まとめ -Automatic Dueling System 日本語版 - -AI script by Sebrian -http://www.ygopro.co/tabid/95/g/posts/t/2824/Some-Ai-fixes-and-updates.aspx +========================= +Auto update +========================= +If the auto-update doesn't work, you can do it manually. +- Open a new terminal +- Navigate to your ygopro folder (for example: cd ~/Desktop/ygopro-1.033.D-Percy) +- cd expansions/live2017 +- type: $ git pull +- cd ../expansions/liveanime +- type: $ git pull -============================================================ -New cards -============================================================ -Gagaga Academy Emergency Network -Geargiagear XG -Geargiano Mk-III -Geargiattacker -Geargiauger -Michael, Lightsworn Ark -Minerva, Lightsworn Maiden -Number C6: Chronomaly Chaos Atlandis -Powerful Rebirth -Raiden, Lightsworn Assailant -The Melody of Awakening Dragon -Thuggish Limited Express - Battrain -Underworld Dragon Dragonecro \ No newline at end of file diff --git a/readme.txt b/readme.txt index 2292e811..2d936934 100644 --- a/readme.txt +++ b/readme.txt @@ -1,39 +1,33 @@ -YGOPRO 1.033.A +YGOPRO 1.033.D ============================================================ Changelog ============================================================ New cards Check the list below + Anime cards updated Changes to Ygopro - New online room browser (work in progress) - A lot of bug fixes - Banlists updated - Duel screen chain buttons. Can be turned off in the system.conf file 'hide_chain_button' setting - You can now use png files for card images - Added pendulum scale filter in deck edit - Added "New cards log" in the top menu bar - Custom modifications by edo9300 - -Platform specific notes - -Windows- - Added support for animated backgrounds. To use it, add a bg.ogv to the textures folder. Default background is made by www.dreamscene.org - Fixed some issues with random music - WARNING: Windows XP is not supported - -Linux- - Built on Fedora 24 64bit - Dropped support for 32bit + Updated core engine to 1.033.D + Online game timer modified. You start with 90 seconds but get a few seconds added for each action you take. + Fixed bug with game lobby password dialog + Custom modifications for generation banlists by Buttys + Fixed music advantage/disadvantage glitches + Custom card functions by edo9300 + +Platform specific notes -Mac OS X- Version 10.8 or higher required - Added "Update log" and "New cards log" in the top menu bar - WARNING: This version will probably not work on macOS Sierra. Upgrade at your own risk + Tested on macOS Sierra 10.12.2 + Fixed image loading bugs + Various bug fixes + -Linux- + Tested on Fedora 24, Linux Mint 18.1 Cinnamon 64bit + Instant update problems workaround Changes to AI - Updated AI engine, stability updates - Changed name to [AI]Justice - AI script updated to version 0.34 by Snarky - Fixed ai deckout bug + AI script updated by Snarky New decks + ABC, BLS, Eidolon, Fluffal, Raidraptor, Zoodiac ============================================================ Known issues @@ -53,531 +47,281 @@ https://www.ygopro.co/Community/Donate.aspx Credits ============================================================ YGOPro mod (音效版) official website -http://www.ygopro.co +https://www.ygopro.co Fluorohydride https://github.com/Fluorohydride/ygopro -salix5, 馬骨, 光化靜翔 -ygopro(ADS) 繁體中文版 - AI script by Snarky Also credits to Sebrian, Ytterbite, Skaviory, francot514 and others http://www.ygopro.co/Forum/tabid/95/g/posts/t/7877/AI-Updates -Card database and card script fixes -Steeldarkeagel -YGOHack137 -marik, Arvine, RaiZZZ19, Zocom7 -Michael Lawrence Dee, UnknownGuest, Orfhen6, Evil_Hero_Gaara, ShootingStarDragon25, Jackmoonward, lDarkDemonl, exile0025 and others - Beta cards Eerie Code -ShirayukiCleber ============================================================ New Yugioh cards ============================================================ -"A" Cell Recomposition Device -A-Assault Core -ABC-Dragon Buster -Abyss Actor - Dandy Supporting Actor -Abyss Actor - Evil Heel -Abyss Actor - Extra -Abyss Actor - Funky Comedian -Abyss Actor - Pretty Heroine -Abyss Actor - Sassy Rookie -Abyss Actor - Superstar -Abyss Actor - Wild Hope -Abyss Script - Abode of the Fire Dragon -Abyss Script - Fantasy Magic -Abyss Script - Opening Ceremony -Abyss Script - Rise of the Dark Ruler -Abyss Stage Prop - Escape Stage Coach -Acrobatic Magician -Advanced Chemical Beast Dyoxen -Advanced Chemical Beast Hy Dragon -Alpha the Electromagnet Warrior -Altar of the Darklords -Amaterasu -Amazing Pendulum -Amorphactor Pain, the Imagination Dracoverlord -Amorphage Envy -Amorphage Gluttony -Amorphage Goliath -Amorphage Greed -Amorphage Infection -Amorphage Lechery -Amorphage Lysis -Amorphage Pride -Amorphage Sloth -Amorphage Wrath -Amorphous Persona -Angel Trumpeter -Angmarl the Fiendish Monarch -Apple Magician Girl -Arcana Knight Joker -Arkbrave Dragon -Aromaseraphy Angelica -Aromaseraphy Rosemary -Assault Blackwing - Chidori the Rain Sprinkling -Assault Blackwing - Onimaru the Divine Thunder -Assault Blackwing - Sayo the Rain Hider -Assault Blackwing - Sohaya the Rain Storm -Assault Wyvern -AtoZ-Dragon Buster Cannon -B-Buster Drake -Bad Aim -Beacon of White -Berry Magician Girl -Berserion the Electromagna Warrior -Beta the Electromagnet Warrior -Black Dragon Ninja +Abyss Actor - Twinkle Littlestar +Aleister the Eidolon Summoner +All-Devouring Glutton +Ancient Gear Catapult +Ancient Gear Fortress +Ancient Gear Gadget +Ancient Gear Howitzer +Ancient Gear Hunting Hound +Ancient Gear Hydra +Ancient Gear Reactor Dragon +Ancient Gear Reborn +Ancient Gear Token +Ancient Gear Wyvern +Apocalypse of the True Dracos +Apprentice Illusion Magician +Apprentice Piper +Ariel, Priestess of the Nekroz +Astrograph Sorcerer +B.E.S. Big Core MK-3 +Baobaboon +Bat Blight Virus +Bewildering Wind +Black Fang Magician Black Sheep Token -Blackwing - Decay the Ill Wind -Blackwing - Gofu the Vague Shadow -Blackwing - Tornado the Reverse Wind -Blade Garoodia the Cubic Beast -Block Dragon -Bloom Prima the Melodious Choir -Blue-Eyes Chaos MAX Dragon -Blue-Eyes Spirit Dragon -Blue-Eyes Twin Burst Dragon -Blue-Eyes White Dragon -Blue-Eyes White Dragon -Bug Emergency -Bug Matrix -Burn Out -Buster Gundil the Cubic Behemoth -C-Crush Wyvern -Card of Demise -Card of the Soul -Cardian - Ameshikou -Cardian - Botan ni Cho -Cardian - Hagi ni Inoshishi -Cardian - Inoshikacho -Cardian - Kiri -Cardian - Kiri ni Houou -Cardian - Matsu -Cardian - Matsu ni Tsuru -Cardian - Momiji ni Shika -Cardian - Susuki -Cardian - Susuki ni Tsuki -Cardian - Yanagi -Cardian - Yanagi ni Ono no Michikaze -Casting out the Darklords -Cattle Call -Celtic Guard of Noble Arms -Chaos Form -Chemical Beast Carbon Crab -Chemical Beast Hydron Hawk -Chemical Beast Oxine Ox -Chocolate Magician Girl -Chokoikoi -Cipher Bit -Cipher Mirror Knight -Cipher Twin Raptor -Cipher Wing -Clear Kuriboh -Coral Dragon -Cosmic Cyclone -Counter Gate -Crimson Nova Trinity the Dark Cubic Lord -Crimson Nova the Dark Cubic Lord -Crystal Wing Synchro Dragon -Crystron Ametrix -Crystron Citri -Crystron Entry -Crystron Impact -Crystron Phoenixion -Crystron Prasirator -Crystron Quon -Crystron Quondam -Crystron Rosenix -Crystron Smoger -Crystron Token -Crystron Trystvern -Cubic Karma -Cubic Mandala -Cubic Rebirth -Cubic Wave -Curse of Dragonfire -Cyber Angel - Benten -Cyber Angel - Dakini -Cyber Angel - Idaten -Cyber Angel - Vishnu -Cyber Petit Angel -D - Fusion -D/D Savant Nikola -D/D Savant Thomas -D3 -Dark Advance -Dark Garnex the Cubic Beast -Dark Horizon -Dark Magic Expanded -Dark Magic Succession -Dark Magic Veil -Dark Magical Circle -Dark Magician +Black Sheep Token +Black Sheep Token +Brave-Eyes Pendulum Dragon +Bug Signal +Caligula the Eidolon Beast +Celestial Crusade of the Zefra +Celestial Whirlpool of the Mythic Radiance Dragon +Chaos Ancient Gear Giant +Chaos Scepter Blast +Charming Resort Staff +Chronograph Sorcerer +Cipher Spectrum +Cipher Étranger +Clashing Whirlpool of the Mythic Radiance Dragon +Clear Wing Synchro Dragon +Clearwing Fast Dragon +Cocytus the Eidolon Beast +Crystron Gliongandr +Crystron Rion +Crystron Sulphafnir +Cyber Angel Nasatya +Cyber Tutubon +D/D Ghost +D/D/D Boulder King Darius +Da'at Metatron, the True Dracomechsoldier +Dark Contract with the Eternal Darkness +Dark Contract with the Grotesque Entity Dark Magician Dark Magician Girl -Dark Requiem Xyz Dragon -Dark Sanctuary -Darklord Amdusias -Darklord Ixtab -Darklord Lucifer -Darklord Mastema -Darklord Tezcatlipoca -Darklords Falling from Grace -Darklords' Temptation -Deep-Eyes White Dragon -Denglong, Origin of the Yang Zing -Deskbot 009 -Deskbot Base -Destiny HERO - Celestial -Destiny HERO - Dark Angel -Destiny HERO - Deadlyguy -Destiny HERO - Decisionguy -Destiny HERO - Drillguy -Destiny HERO - Dynamiteguy -Destiny HERO - Dystopiaguy -Destruction Sword Memories -Dicelops -Dig of Destiny -Digital Bug Centibit -Digital Bug Cocoondenser -Digital Bug Corebage -Digital Bug Rhinosebus -Digital Bug Scaradiator -Digital Bug Websolder -Dimension Barrier -Dimension Guardian -Dimension Mirage -Dimension Reflector -Dimension Sphinx -Dinomist Ankylos -Dinomist Eruption -Dinomist Spinos -Divine Dragon Lord Felgrand -Divine Serpent Geh -Dokidoki -Double Cipher -Dragon Core Accursed -Dragon Knight of Creation -Dragon Lord Token -Dragon Spirit of White -Dragon's Fighting Spirit -Drowning Mirror Force -Duja, the Meteoricubic Vessel -Ebon High Magician -Entering the Abyss Actor Dressing Room -Examination -Fairy Tail - Snow -Fairy Tail - Talia -Fairy's Blessing -Falling Meteor Black Dragon -Fiendish Fortune -Final Geas -Finite Cards -Flame Swordsman -Floodgate Trap Hole -Forbidden Dark Contract with the Swamp King -Forge of the True Dracos -Fortissimo -Frightfur Sanctuary -Frost Blast of the Monarchs -Fullmetalfoes Alkahest -Fullmetalfoes Fusion -Fusion Fright Waltz -Fusion Tag -Gadarla, the Mystery Dust Kaiju -Galaxy Stealth Dragon -Galaxy Worm -Galaxy-Eyes Cipher Blade Dragon -Galaxy-Eyes Cipher Dragon -Gamma the Electromagnet Warrior -Gandora-X the Dragon of Demolition -Geira Guile the Cubic King -Gendo the Ascetic Monk -Genesis Tellarknight -Ghost Beef -Ghost Reaper & Winter Cherries -Gold Gadget -Graceful Tear -Graydle Combat -Graydle Slime Jr. -Guardian of Felgrand -Hana Awase -Hanazumi -Hand-Holding Genie -Heavy Mech Support Armor -Hi-Speedroid Puzzle -Holding Arms -Holding Legs -Honor of the Eyes of Blue -Igknight Unite -Illusion Magic -Indiora Doom Volt the Cubic Emperor -Induced Explosion -Interrupted Kaiju Slumber -Jizukiru, the Star Destroying Kaiju -Junk Changer -Junkuriboh -Kaiser Vorse Raider -King Scarlet -King's Consonance -King's Synchro -Kiwi Magician Girl -Kozmo Dark Eclipser -Kozmo Dark Planet -Kozmo Delta Shuttle -Kozmo Landwalker -Kozmo Scaredy Lion -Kozmo Soartroopers -Kozmo Tincan -Kozmojo -Kozmoll Dark Lady -Kozmourning -Krystal Avatar -Krystal Dragon -Krystal Potential -Kuribohrn -Lector Pendulum, the Dracoverlord -Left Arm Offering -Lemon Magician Girl -Lord Gaia the Fierce Knight -Lullaby of Obedience -Luna Light Perfume -Lunalight Black Sheep -Lunalight Blue Cat -Lunalight Cat Dancer -Lunalight Crimson Fox -Lunalight Leo Dancer -Lunalight Panther Dancer -Lunalight Purple Butterfly -Lunalight Reincarnation Dance -Lunalight Tiger -Lunalight White Rabbit -Lunalight Wolf -Machine Angel Ritual -Magical Cavalry of Cxulub -Magical Contract Door -Magical King Moonstar -Magical Mid-Breaker Field -Magical Something -Magician Navigation -Magician of Dark Illusion -Magician's Robe -Magician's Rod -Magicians' Defense -Magnet Conversion -Magnet Field -Magnet Force -Magnet Reverse -Marshmacaron -Master Peace, the True Dracoslayer -Master with Eyes of Blue -Mausoleum of White -Metalfoes Adamante -Metalfoes Combination -Metalfoes Counter -Metalfoes Crimsonite -Metalfoes Fusion -Metalfoes Goldriver -Metalfoes Mythriel -Metalfoes Orichalc -Metalfoes Silverd -Metalfoes Steelen -Metalfoes Volflame -Metalhold the Moving Blockade -Metamorformation -Metamorphortress -Mild Turkey -Neo Blue-Eyes Ultimate Dragon -Neutron Blast -Nine Branches of the Yang Zing -Ninjitsu Art Notebook -Nirvana High Paladin -No Cheaters Allowed -Number 100: Numeron Dragon -Number 24: Dragon Nosferatu Dragulas -Number 35: Ravenous Tarantula -Number 37: Hope Woven Dragon Spider Shark -Number 38: Hope Harbinger Dragon Titanic Galaxy -Number 45: Crumble Logos -Number 51: Finish Hold the Amazing -Number 59: Back the Cook -Number 77: The Seven Sins -Number 78: Number Archive -Number 84: Pain Gainer -Number 98: Dystopia -Obelisk the Tormentor -Odd-Eyes Mirage Dragon -Odd-Eyes Persona Dragon -Odd-Eyes Phantom Dragon -PSY-Frame Accelerator -PSY-Frame Multi-Threader -Paladin of Felgrand -Palladium Oracle Mahad -Pandemic Dragon -Pandora's Treasure Box -Pendulum Hole -Performapal Allcover Hippo -Performapal Bot-Eyes Lizard -Performapal Bubblebowwow -Performapal Chain Giraffe -Performapal Corn -Performapal Dramatic Theater -Performapal Extra Slinger -Performapal Fireflux -Performapal Gold Fang -Performapal Gongato -Performapal Gumgumouton -Performapal Inflater Tapir -Performapal King Bear -Performapal Le-Bellman -Performapal Life Swordsman -Performapal Longphone Bull -Performapal Momoncarpet -Performapal Odd-Eyes Light Phoenix -Performapal Odd-Eyes Metal Claw -Performapal Odd-Eyes Unicorn -Performapal Parrotrio -Performapal Radish Horse -Performapal Seal Eel -Performapal Sellshell Crab -Performapal Show Down -Performapal Sleight Hand Magician -Performapal Swincobra -Performapal Teeter Totter Hopper -Performapal Uni -Performapal Whim Witch -Phantasmal Lord Ultimitl Bishbaalkin -Polymerization -Pot of Avidity -Pot of Desires -Pre-Preparation of Rites -Predator Plant Fly Hell -Predator Plant Moray Nepenthes -Predator Plant Squid Drosera -Premature Return -Present Card -Primal Cry -Protector with Eyes of Blue -Qliphort Down -Quarantine -Radiant Divine Bird Vene -Raidraptor - Avenge Vulture -Raidraptor - Blade Burner Falcon -Raidraptor - Booster Strix -Raidraptor - Napalm Dragonius -Raidraptor - Pain Lanius -Raidraptor - Ultimate Falcon -Rank-Up-Magic Skip Force -Rank-Up-Magic The Phantom Knights of Launch -Raremetalfoes Bismagia -Re-dyce-cle -Rebellion -Red Gardna -Red Mirror -Red Nova -Red Rising Dragon -Red Supremacy -Red Warg -Red-Eyes Insight -Red-Eyes Meteor Dragon -Red-Eyes Toon Dragon -Return of the Dragon Lords -Rise to Full Height -Ritual Sanctuary -Ruins of the Divine Dragon Lords -Ryu Ookami -SPYRAL GEAR - Big Red -SPYRAL GEAR - Drone -SPYRAL Quik-Fix -SPYRAL Super Agent -Sage with Eyes of Blue -Sauravis, the Crowned Ancient Sage -Scapeghost -Scramble Union -Scrum Force -Sentry Soldier of Stone -Shining Hope Road -Shiranui Solitaire -Silent Burning -Silent Magician -Silent Paladin -Silent Sword -Silent Swordsman -Silver Gadget -Sky Galloping Gaia the Dragon Champion -Slifer the Sky Dragon -Spark Field -Speedroid Den-Den Daiko Duke -Speedroid Pachingo-Kart -Spell Strider -Spirit of the Fall Wind -Spiritual Swords of Revealing Light -Stardust Charge Warrior -Starve Venom Fusion Dragon -Steel Cavalry of Dinon -Subterror Behemoth Stalagmo -Subterror Behemoth Umastryx -Subterror Nemesis Warrior -Summon Gate -Super Anti-Kaiju War Machine Mecha-Dogoran -Super Chemical Beast Methane Hyd -Super Conduction Machine Imperion Magnum -Super Hippo Carnival -Superheavy Samurai Ninja Sarutobi -Superheavy Samurai Soularbitrator -Tellarknight Vatlamyus -Tenmataitei -The Blazing Mars -The Despair Uranus -The Grand Jupiter -The Hidden City -The Kaiju Files -The Phantom Knights of Dark Gauntlets -The Phantom Knights of Shade Brigandine -The Phantom Knights of Tomb Shield -The Suppression Pluto -The Tripper Mercury -The True Name -The White Stone of Ancients -The Winged Dragon of Ra - Immortal Phoenix -Thunder King, the Lightningstrike Kaiju -Toon Dark Magician -Torque Tune Gear -Totem Five -Trap Hole of Spikes -Treatoad -Triamid Cruiser -Triamid Dancer -Triamid Fortress -Triamid Hunter -Triamid Kingolem -Triamid Master -Triamid Pulse -Triamid Sphinx -Tribute Burial -True King Agnimazud, the Vanisher -True King Bahrstos, the Fuhrer -Tsukumo Slash -Tuner's High -Tuning Gum -Tyrant Red Dragon Archfiend -Ultimate Providence -Unification of the Cubic Lords -Unified Front -Union Hangar -Unwavering Bond -Utchatzimime Token -Vague Shadow Token -Vijam the Cubic Seed -Vulcan Dragni the Cubic King -Wicked Acolyte Chilam Sabak -Wonder Xyz -Wrecker Panda -Zap Mustang -Zushin the Sleeping Giant +Dark Rebellion Xyz Dragon +Dark Summoning Beast +Deep Whirlpool of the Mythic Radiance Dragon +Delta The Magnet Warrior +Destruction Swordsman's Cradle +Diabound Kernel +Diamond Duston +Digital Bug LED Bug +Dinomist Howling +Disciples of the True Dracophoenix +Double Resonator +Dragoncalling Magician +Dragonic Diagram +Draius III, the True Dracoknight +Duelist Advent +Dynamite Knuckle, the True Dracofighter +Eidolon Summoning Magic +Elemental HERO Honesty Neos +Elemental Triangle of the Zoodiac +Elysion the Eidolon Beast +Envoy of Chaos +Espirit Bird Token +Eternal Nightmares +Ethereal Wyrmterfall +Eva Token +Fairy Tail - Cinderella +Fairy Tail - Kaguya +Fallen Paradise +Familiar-Possessed - Lyna +Farewell +Festival Spinning +Fire Cracker +Flower Cardian Cherry Blossom with Curtain +Flower Cardian Lightflare +Flower Cardian Moonflower +Fluffal Octo +Fluffal Patchwork +Fluffal Penguin +Foolish Burial with Belongings +Frightfur Kraken +Frightfur Patchwork +Gandora Giga Rays the Dragon of Destruction +Ghost Ash & Beautiful Spring +Great Fortress Zelos +Greedy Venom Fusion Dragon +Harpie's Feather Storm +Heavy-Armored Train Iron Wolf +Hippo Token +Hippo Token +Hippo Token +Hippo Token +Hippo Token +Hippo Token +Ignis Heat, the True Dracowarrior +Iris Magician +Kawanokami +Lunalight Kaleido Chick +Lyrical Luscinia - Assembly Nightingale +Lyrical Luscinia - Cobalt Sparrow +Lyrical Luscinia - Independent Nightingale +Lyrical Luscinia - Recite Starling +Lyrical Luscinia - Sapphire Swallow +Lyrical Luscinia - Turquoise Warbler +Machine Angel Absolute Ritual +Macromorph +Magallanica the Eidolon Beast +Magical Name - "To Mega Therion" +Magician's Encore +Magician's Left Hand +Magician's Right Hand +Majespecter Gust +Majesty Maiden, the True Dracomage +Mariamune, the True Dracophoenix +Master Peace, the True Dracoslaying King +Merkabah the Eidolon Beast +Metrognome +Mythic Radiance Dragon Token +Neo Galaxy-Eyes Cipher Dragon +Odd-Eyes Pendulum Dragon +Odd-Eyes Raging Dragon +Ostinato +Pacifis, City of Mythic Radiance +Parasite Fusioner +Passionate Duelists +Pendulumgraph of Ages +Pendulumgraph of Spacetime +Pendulumucho +Performapal Dag Daggerman +Performapal Drago Remora +Performapal Fugolem +Performapal Gatling Ghoul +Performapal Handsome Liger +Performapal Laughmaker +Performapal Return Tantan +Performapal Revue Dancer +Performapal Sky Magician +Performapal Sky Pupil +Phantasmal Miscellasaurus +Power Wall +Predaplant Chimera Rafflesia +Predaplant Cordyceps +Predaplant Darling Cobra +Predaplant Dragostapelia +Predaplant Drosophyllum Hydra +Predaplant Ophrys Scorpio +Predaplant Pteropenthes +Predaplant Sarraceniant +Predaplant Spino Dionaea +Predaplant Sundew Kingii +Predator Graft +Predator Planet +Predator Planter +Predator Plast +Purgatorio the Eidolon Beast +Purusha Shaddoll Aion +Raideen the Eidolon Beast +Raidraptor - Arsenal Falcon +Raidraptor - Etranger Falcon +Rank-Up-Magic Cipher Ascension +Recardination +Reckless Magic Circle +Revival of the True King +Ritual Beast's Promised Return +SPYRAL MISSION - Assault +SPYRAL Master Plan +SPYRAL Resort +Seasonal Direction to the Zoodiac +Shinobaron Peacock +Shinobaroness Peacock +Shinobird Calling +Shinobird Healing +Shinobird Kannagizuru +Shinobird Powerspot +Shinobird Shinobigarasu +Shinobird Token +Shinobird Tsutaebato +Shiranui Sovereignsaga +Shiranui Style Samsara +Skydive Scorcher +Space Dragster +Speedrift +Speedroid 5 6 Plane +Speedroid Bamboo Horse +Speedroid Fiendmagnet +Speedroid OMK Gum +Speedroid Passing Rider +Speedroid Vidroskull +Spiral Crash of the Mythic Radiance Dragon +Spiral Hold of the Mythic Radiance Dragon +Spiral Wave of the Mythic Radiance Dragon +Spiral, the Mythic Radiance Dragon +Spiritual Beast Tamer Winda +Startime Magician +Starving Venom Fusion Dragon +Subterror Behemoth Burrowing +Subterror Behemoth Stygokraken +Subterror Behemoth Ultramafus +Subterror Nemesis Archer +Super Quantal Finisher Alphan Ball +Super Soldier Origin +Superheavy Samurai Daihachi +Superheavy Samurai Ninja Shinobiashi +Supreme King Dragon Zarc +Supreme King Gate Infinity +Supreme King Gate Zero +Supreme King Servant Dragon Darkwurm +Switch Hero +Terminal World Next +The Beginning +The Book of the Law +The Grass is Always Tastier on the Other Side +The Phantom Knights of Cursed Javelin +The Phantom Knights of Lost Vambrace +The Phantom Knights of Mist Claws +The Phantom Knights of Wrong Magnet Ring +Tierra, Goddess of Rebirth +Transcendental Polymerization +True Draco Succession +True King Lithosazim, the Disaster +True King V.F.D., The Beast +Tune Magician +Vermillion Dragon Mech +Violet Poison Magician +Void Madness +White Veil +White Wing Magician +Wightprincess +Windwitch - Crystal Bell +Windwitch - Glass Bell +Windwitch - Ice Bell +Windwitch - Snow Bell +Windwitch - Winter Bell +Yokotuner +Yosenju's Divine Mountain Winds +Zefra Providence +Zefratorah Grammaton +Zodiac Sign +Zoodiac Boarbow +Zoodiac Broadbull +Zoodiac Cluckle +Zoodiac Drancia +Zoodiac Hammerkong +Zoodiac Lyca +Zoodiac Marmorat +Zoodiac Rabbina +Zoodiac Ram +Zoodiac Thoroughblade +Zoodiac Tigress +Zoodiac Viper +Zoodiac Xiangke \ No newline at end of file diff --git a/replay/_LastReplay.yrp b/replay/_LastReplay.yrp deleted file mode 100644 index 8cefbaa8..00000000 Binary files a/replay/_LastReplay.yrp and /dev/null differ diff --git a/replay/_replays.txt b/replay/_replays.txt new file mode 100644 index 00000000..e69de29b diff --git a/script/c10000000.lua b/script/c10000000.lua index 4fd8d19a..4db126c9 100644 --- a/script/c10000000.lua +++ b/script/c10000000.lua @@ -57,16 +57,16 @@ function c10000000.initial_effect(c) e7:SetOperation(c10000000.desop) c:RegisterEffect(e7) end -function c10000000.ttcon(e,c) +function c10000000.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c10000000.ttop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,3,3) c:SetMaterial(g) Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) end -function c10000000.setcon(e,c) +function c10000000.setcon(e,c,minc) if not c then return true end return false end diff --git a/script/c100000000.lua b/script/c100000000.lua new file mode 100644 index 00000000..0e17e54a --- /dev/null +++ b/script/c100000000.lua @@ -0,0 +1,76 @@ +--カオス・エンド・ルーラー -開闢と終焉の支配者- +function c100000000.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000000,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetHintTiming(0,0x1e0) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000000.spcon) + e1:SetOperation(c100000000.spop) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000000,1)) + e2:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c100000000.sgcost) + e2:SetTarget(c100000000.sgtg) + e2:SetOperation(c100000000.sgop) + c:RegisterEffect(e2) + --summon success + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c100000000.sumsuc) + c:RegisterEffect(e3) + --Cannot be responded + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e4) +end +function c100000000.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(aux.FALSE) +end +function c100000000.spfilter(c,att,race) + return c:IsAttribute(att) and c:IsAbleToRemoveAsCost() and c:IsRace(race) +end +function c100000000.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000000.spfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_LIGHT,RACE_WARRIOR) + and Duel.IsExistingMatchingCard(c100000000.spfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_DARK,RACE_FIEND) +end +function c100000000.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100000000.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_LIGHT,RACE_WARRIOR) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c100000000.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_DARK,RACE_FIEND) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c100000000.sgcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1000) + else Duel.PayLPCost(tp,1000) end +end +function c100000000.sgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,0x1e,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,g:GetCount()*500) +end +function c100000000.sgop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,0x1e,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_REMOVED) + Duel.Damage(1-tp,ct*500,REASON_EFFECT) +end + diff --git a/script/c100000001.lua b/script/c100000001.lua new file mode 100644 index 00000000..aae77aae --- /dev/null +++ b/script/c100000001.lua @@ -0,0 +1,33 @@ +--手をつなぐ魔人 +function c100000001.initial_effect(c) + --target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c100000001.atlimit) + c:RegisterEffect(e1) + --defup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c100000001.val) + c:RegisterEffect(e2) +end +function c100000001.atlimit(e,c) + return c~=e:GetHandler() and c:IsFaceup() +end +function c100000001.val(e,c) + local def=0 + local g=Duel.GetMatchingGroup(Card.IsPosition,c:GetControler(),LOCATION_MZONE,0,c,POS_FACEUP_DEFENSE) + local tc=g:GetFirst() + while tc do + local cdef=tc:GetBaseDefense() + def=def+(cdef>=0 and cdef or 0) + tc=g:GetNext() + end + return def +end diff --git a/script/c100000002.lua b/script/c100000002.lua new file mode 100644 index 00000000..fe19f74e --- /dev/null +++ b/script/c100000002.lua @@ -0,0 +1,102 @@ +--時械神 サンダイオン +function c100000002.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_DECK) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000002,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c100000002.ntcon) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + --damage val + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_NO_BATTLE_DAMAGE) + e5:SetCondition(c100000002.dacon) + e5:SetValue(1) + c:RegisterEffect(e5) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e8:SetCondition(c100000002.dacon) + e8:SetValue(1) + c:RegisterEffect(e8) + --LP + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetCountLimit(1) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c100000002.damcon) + e6:SetTarget(c100000002.damtg) + e6:SetOperation(c100000002.damop) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(100000002,1)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c100000002.tdcon) + e7:SetTarget(c100000002.tdtg) + e7:SetOperation(c100000002.tdop) + c:RegisterEffect(e7) +end +function c100000002.dacon(e) + return e:GetHandler():IsAttackPos() +end +function c100000002.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000002.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c100000002.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(2000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,2000) +end +function c100000002.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c100000002.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000002.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000002.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000003.lua b/script/c100000003.lua new file mode 100644 index 00000000..8756b351 --- /dev/null +++ b/script/c100000003.lua @@ -0,0 +1,94 @@ +--時械神 ハイロン +function c100000003.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_DECK) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000003,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c100000003.ntcon) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c100000003.dacon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --LP + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetCountLimit(1) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c100000003.lpcon) + e6:SetTarget(c100000003.lptg) + e6:SetOperation(c100000003.lpop) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(100000003,1)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c100000003.tdcon) + e7:SetTarget(c100000003.tdtg) + e7:SetOperation(c100000003.tdop) + c:RegisterEffect(e7) +end +function c100000003.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000003.dacon(e) + return e:GetHandler():IsAttackPos() +end +function c100000003.lpcon(e,tp,eg,ep,ev,re,r,rp) + return (e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0) + and Duel.GetLP(tp)4 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000004.dacon(e) + return e:GetHandler():IsAttackPos() +end +function c100000004.damcon(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + return bc +end +function c100000004.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local bc=e:GetHandler():GetBattleTarget() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(bc:GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,bc:GetAttack()) +end +function c100000004.damop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,bc:GetAttack(),REASON_EFFECT) +end +function c100000004.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000004.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000004.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000005.lua b/script/c100000005.lua new file mode 100644 index 00000000..886d5842 --- /dev/null +++ b/script/c100000005.lua @@ -0,0 +1,96 @@ +--時械神 ガブリオン +function c100000005.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_DECK) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000005,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c100000005.ntcon) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c100000005.dacon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --to deck + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetCountLimit(1) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c100000005.con) + e6:SetTarget(c100000005.tg) + e6:SetOperation(c100000005.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(100000005,1)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c100000005.tdcon) + e7:SetTarget(c100000005.tdtg) + e7:SetOperation(c100000005.tdop) + c:RegisterEffect(e7) +end +function c100000005.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000005.dacon(e) + return e:GetHandler():IsAttackPos() +end +function c100000005.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c100000005.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()~=tp and chkc:IsOnField() and chkc:IsAbleToDeck() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c100000005.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAbleToDeck() then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end +end +function c100000005.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000005.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000005.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000006.lua b/script/c100000006.lua new file mode 100644 index 00000000..277bd603 --- /dev/null +++ b/script/c100000006.lua @@ -0,0 +1,97 @@ +--時械神 カミオン +function c100000006.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_DECK) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000006,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c100000006.ntcon) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c100000006.dacon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --to deck + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TODECK+CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetCountLimit(1) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c100000006.con) + e6:SetTarget(c100000006.tg) + e6:SetOperation(c100000006.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(100000006,1)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c100000006.tdcon) + e7:SetTarget(c100000006.tdtg) + e7:SetOperation(c100000006.tdop) + c:RegisterEffect(e7) +end +function c100000006.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000006.dacon(e) + return e:GetHandler():IsAttackPos() +end +function c100000006.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c100000006.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()~=tp and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToDeck() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c100000006.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAbleToDeck() and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)>0 then + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end +function c100000006.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000006.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000006.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000007.lua b/script/c100000007.lua new file mode 100644 index 00000000..2214049a --- /dev/null +++ b/script/c100000007.lua @@ -0,0 +1,94 @@ +--時械神 ザフィオン +function c100000007.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_DECK) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000007,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c100000007.ntcon) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c100000007.dacon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --to deck + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetCountLimit(1) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c100000007.con) + e6:SetTarget(c100000007.tg) + e6:SetOperation(c100000007.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(100000007,1)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c100000007.tdcon) + e7:SetTarget(c100000007.tdtg) + e7:SetOperation(c100000007.tdop) + c:RegisterEffect(e7) +end +function c100000007.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000007.dacon(e) + return e:GetHandler():IsAttackPos() +end +function c100000007.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() +end +function c100000007.con(e) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c100000007.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(c100000007.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c100000007.op(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100000007.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) +end +function c100000007.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000007.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000007.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000008.lua b/script/c100000008.lua new file mode 100644 index 00000000..fc4e9f5c --- /dev/null +++ b/script/c100000008.lua @@ -0,0 +1,90 @@ +--時械神 ミチオン +function c100000008.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_DECK) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000008,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c100000008.ntcon) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c100000008.dacon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --LP + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetCountLimit(1) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c100000008.lpcon) + e6:SetTarget(c100000008.lptg) + e6:SetOperation(c100000008.lpop) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(100000008,1)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c100000008.tdcon) + e7:SetTarget(c100000008.tdtg) + e7:SetOperation(c100000008.tdop) + c:RegisterEffect(e7) +end +function c100000008.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000008.dacon(e) + return e:GetHandler():IsAttackPos() +end +function c100000008.lpcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c100000008.lptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) +end +function c100000008.lpop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.SetLP(p,Duel.GetLP(p)/2) +end +function c100000008.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000008.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000008.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000009.lua b/script/c100000009.lua new file mode 100644 index 00000000..88885483 --- /dev/null +++ b/script/c100000009.lua @@ -0,0 +1,114 @@ +--時械神 ラツィオン +function c100000009.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_DECK) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000009,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c100000009.ntcon) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c100000009.dacon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --damage + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EVENT_DRAW) + e6:SetCondition(c100000009.drcon) + e6:SetTarget(c100000009.drtg) + e6:SetOperation(c100000009.drop) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_BATTLE) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c100000009.con) + e7:SetTarget(c100000009.tg) + e7:SetOperation(c100000009.op) + c:RegisterEffect(e7) + --to deck + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(100000009,1)) + e8:SetCategory(CATEGORY_TODECK) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e8:SetCode(EVENT_PHASE+PHASE_STANDBY) + e8:SetProperty(EFFECT_FLAG_REPEAT) + e8:SetCountLimit(1) + e8:SetRange(LOCATION_MZONE) + e8:SetCondition(c100000009.tdcon) + e8:SetTarget(c100000009.tdtg) + e8:SetOperation(c100000009.tdop) + c:RegisterEffect(e8) +end +function c100000009.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000009.dacon(e) + return e:GetHandler():IsAttackPos() +end +function c100000009.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c100000009.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c100000009.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c100000009.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c100000009.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c100000009.op(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) +end +function c100000009.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000009.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000009.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000010.lua b/script/c100000010.lua new file mode 100644 index 00000000..fa72b2cb --- /dev/null +++ b/script/c100000010.lua @@ -0,0 +1,45 @@ +--時械巫女 +function c100000010.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000010.spcon) + c:RegisterEffect(e1) + --SEARCH + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c100000010.cost) + e2:SetTarget(c100000010.target) + e2:SetOperation(c100000010.activate) + c:RegisterEffect(e2) +end +function c100000010.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000010.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c100000010.filter(c) + return (c:IsSetCard(0x4a) or c:IsCode(74530899)) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c100000010.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000010.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100000010.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100000010.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100000011.lua b/script/c100000011.lua new file mode 100644 index 00000000..c3b4db78 --- /dev/null +++ b/script/c100000011.lua @@ -0,0 +1,29 @@ +--時械天使 +function c100000011.initial_effect(c) + --to HAND + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c100000011.condition) + e1:SetTarget(c100000011.thtg) + e1:SetOperation(c100000011.operation) + c:RegisterEffect(e1) +end +function c100000011.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) + and c:GetBattlePosition()==POS_FACEUP_ATTACK +end +function c100000011.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c100000011.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c100000011.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c100000011.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100000011.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SendtoHand(sg,nil,sg:GetCount(),REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000012.lua b/script/c100000012.lua new file mode 100644 index 00000000..80926576 --- /dev/null +++ b/script/c100000012.lua @@ -0,0 +1,56 @@ +--虚无械アイン +function c100000012.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c100000012.target) + c:RegisterEffect(e1) + --to Grave + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCategory(CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCost(c100000012.drcost) + e2:SetTarget(c100000012.drtg) + e2:SetOperation(c100000012.drop) + c:RegisterEffect(e2) +end +function c100000012.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c100000012.drcost(e,tp,eg,ep,ev,re,r,rp,0) and c100000012.drtg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetCategory(CATEGORY_DRAW) + e:SetOperation(c100000012.drop) + e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + c100000012.drcost(e,tp,eg,ep,ev,re,r,rp,1) + c100000012.drtg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c100000012.cfilter(c) + return (c:IsSetCard(0x4a) or c:IsCode(74530899) or c:IsCode(8967776)) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c100000012.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000012.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c100000012.cfilter,1,1,REASON_COST+REASON_DISCARD,e:GetHandler()) +end +function c100000012.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and e:GetHandler():GetFlagEffect(100000012)==0 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + e:GetHandler():RegisterFlagEffect(100000012,RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100000012.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100000013.lua b/script/c100000013.lua new file mode 100644 index 00000000..0b17cae9 --- /dev/null +++ b/script/c100000013.lua @@ -0,0 +1,140 @@ +--無限械アイン・ソフ +function c100000013.initial_effect(c) + --Activate to Grave + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100000013.cost) + e1:SetTarget(c100000013.target) + c:RegisterEffect(e1) + --your turn + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1) + e2:SetHintTiming(TIMING_END_PHASE,0) + e2:SetCondition(c100000013.spcon) + e2:SetTarget(c100000013.sptg) + e2:SetOperation(c100000013.spop) + c:RegisterEffect(e2) + --opponent's turn + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCategory(CATEGORY_DRAW) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1) + e3:SetHintTiming(0,TIMING_END_PHASE) + e3:SetCondition(c100000013.drcon) + e3:SetCost(c100000013.drcost) + e3:SetTarget(c100000013.drtg) + e3:SetOperation(c100000013.drop) + c:RegisterEffect(e3) + --salvage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(13455953,0)) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c100000013.thcon) + e4:SetTarget(c100000013.thtg) + e4:SetOperation(c100000013.thop) + c:RegisterEffect(e4) +end +function c100000013.cfilter(c) + return c:IsFaceup() and c:IsCode(100000012) and c:IsAbleToGraveAsCost() +end +function c100000013.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000013.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000013.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000013.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.GetTurnPlayer()==tp and c100000013.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetProperty(0) + e:SetOperation(c100000013.spop) + c100000013.sptg(e,tp,eg,ep,ev,re,r,rp,1) + elseif Duel.GetTurnPlayer()~=tp and c100000013.drcost(e,tp,eg,ep,ev,re,r,rp,0) and c100000013.drtg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_DRAW) + e:SetOperation(c100000013.drop) + e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + c100000013.drcost(e,tp,eg,ep,ev,re,r,rp,1) + c100000013.drtg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c100000013.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000013.spfilter(c,e,tp) + return (c:IsSetCard(0x4a) or c:IsCode(74530899) or c:IsCode(8967776)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000013.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000013.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + and e:GetHandler():GetFlagEffect(100000013)==0 end + e:GetHandler():RegisterFlagEffect(100000013,RESET_PHASE+PHASE_END,0,1) +end +function c100000013.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000013.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 c100000013.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c100000013.cosfilter(c) + return (c:IsSetCard(0x4a) or c:IsCode(74530899) or c:IsCode(8967776)) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c100000013.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000013.cosfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c100000013.cosfilter,1,1,REASON_COST+REASON_DISCARD,e:GetHandler()) +end +function c100000013.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) and e:GetHandler():GetFlagEffect(100000013)==0 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + e:GetHandler():RegisterFlagEffect(100000013,RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100000013.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c100000013.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) +end +function c100000013.thfilter(c) + return c:IsCode(100000012) and c:IsAbleToHand() +end +function c100000013.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000013.thfilter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c100000013.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c100000013.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c100000014.lua b/script/c100000014.lua new file mode 100644 index 00000000..950094ab --- /dev/null +++ b/script/c100000014.lua @@ -0,0 +1,150 @@ +--無限光アイン・ソフ・オウル +function c100000014.initial_effect(c) + --Activate to Grave + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100000014.cost) + e1:SetTarget(c100000014.target) + c:RegisterEffect(e1) + --your turn + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1) + e2:SetHintTiming(TIMING_END_PHASE,0) + e2:SetCondition(c100000014.spcon) + e2:SetTarget(c100000014.sptg) + e2:SetOperation(c100000014.spop) + c:RegisterEffect(e2) + --opponent's turn + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCategory(CATEGORY_DRAW) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1) + e3:SetHintTiming(0,TIMING_END_PHASE) + e3:SetCondition(c100000014.drcon) + e3:SetCost(c100000014.drcost) + e3:SetTarget(c100000014.drtg) + e3:SetOperation(c100000014.drop) + c:RegisterEffect(e3) + --sephylon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(13455953,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c100000014.sephcon) + e4:SetTarget(c100000014.sephtg) + e4:SetOperation(c100000014.sephop) + c:RegisterEffect(e4) + -- + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_TO_DECK) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetRange(LOCATION_SZONE) + e5:SetTarget(c100000014.etarget) + e5:SetTargetRange(LOCATION_MZONE,0) + c:RegisterEffect(e5) +end +function c100000014.cfilter(c) + return c:IsFaceup() and c:IsCode(100000013) and c:IsAbleToGraveAsCost() +end +function c100000014.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000014.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000014.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000014.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.GetTurnPlayer()==tp and c100000014.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetProperty(0) + e:SetOperation(c100000014.spop) + c100000014.sptg(e,tp,eg,ep,ev,re,r,rp,1) + elseif Duel.GetTurnPlayer()~=tp and c100000014.drcost(e,tp,eg,ep,ev,re,r,rp,0) and c100000014.drtg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_DRAW) + e:SetOperation(c100000014.drop) + e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + c100000014.drcost(e,tp,eg,ep,ev,re,r,rp,1) + c100000014.drtg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c100000014.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000014.spfilter(c,e,tp) + return (c:IsSetCard(0x4a) or c:IsCode(74530899) or c:IsCode(8967776)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000014.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000014.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + and e:GetHandler():GetFlagEffect(100000014)==0 end + e:GetHandler():RegisterFlagEffect(100000014,RESET_PHASE+PHASE_END,0,1) +end +function c100000014.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000014.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 c100000014.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c100000014.cosfilter(c) + return (c:IsSetCard(0x4a) or c:IsCode(74530899) or c:IsCode(8967776)) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c100000014.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000014.cosfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c100000014.cosfilter,1,1,REASON_COST+REASON_DISCARD,e:GetHandler()) +end +function c100000014.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) and e:GetHandler():GetFlagEffect(100000014)==0 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + e:GetHandler():RegisterFlagEffect(100000014,RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100000014.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c100000014.sephcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) +end +function c100000014.sephfilter(c,e,tp) + return c:IsCode(8967776) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000014.sephtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000014.sephfilter,tp,0x13,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000014.sephop(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 tc=Duel.SelectMatchingCard(tp,c100000014.sephfilter,tp,0x13,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end +function c100000014.etarget(e,c) + return (c:IsSetCard(0x4a) or c:IsCode(74530899) or c:IsCode(8967776)) and c:IsFaceup() +end diff --git a/script/c100000015.lua b/script/c100000015.lua new file mode 100644 index 00000000..c3415a2d --- /dev/null +++ b/script/c100000015.lua @@ -0,0 +1,86 @@ +--時械神 サディオン +function c100000015.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_DECK) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000015,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c100000015.ntcon) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c100000015.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --LP + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetCountLimit(1) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c100000015.thcon) + e6:SetOperation(c100000015.thop) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(100000015,1)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c100000015.tdcon) + e7:SetTarget(c100000015.tdtg) + e7:SetOperation(c100000015.tdop) + c:RegisterEffect(e7) +end +function c100000015.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100000015.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c100000015.thcon(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + return e:GetHandler():GetBattledGroupCount()>0 and Duel.GetLP(p)<4000 +end +function c100000015.thop(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + Duel.SetLP(tp,4000,REASON_EFFECT) +end +function c100000015.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000015.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000015.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000020.lua b/script/c100000020.lua new file mode 100644 index 00000000..a22b7a3f --- /dev/null +++ b/script/c100000020.lua @@ -0,0 +1,46 @@ +--アフター・グロー +function c100000020.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_TODECK) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100000020.activate) + c:RegisterEffect(e1) +end +function c100000020.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DRAW) + e1:SetCountLimit(1) + e1:SetCondition(c100000020.con) + e1:SetOperation(c100000020.op) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_DRAW then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN,2) + else + e1:SetLabel(0) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN) + end + Duel.RegisterEffect(e1,tp) + end +end +function c100000020.con(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and bit.band(r,REASON_RULE)~=0 and Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() + and Duel.GetCurrentPhase()==PHASE_DRAW +end +function c100000020.op(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsControler,nil,tp) + if g:GetCount()<=0 then return end + Duel.Hint(HINT_CARD,0,100000020) + Duel.ConfirmCards(1-tp,g) + if eg:IsExists(Card.IsCode,1,nil,100000020) then + Duel.Damage(1-tp,8000,REASON_EFFECT) + end + Duel.ShuffleHand(tp) +end diff --git a/script/c100000021.lua b/script/c100000021.lua new file mode 100644 index 00000000..5f06ac43 --- /dev/null +++ b/script/c100000021.lua @@ -0,0 +1,34 @@ +--女教皇の錫杖 +function c100000021.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100000021.condition) + e1:SetTarget(c100000021.target) + e1:SetOperation(c100000021.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c100000021.handcon) + c:RegisterEffect(e2) +end +function c100000021.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c100000021.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c100000021.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + Duel.BreakEffect() + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end +function c100000021.handcon(e) + return Duel.GetFieldGroupCount(e:GetHandler():GetControler(),LOCATION_MZONE,0)==0 +end diff --git a/script/c100000022.lua b/script/c100000022.lua new file mode 100644 index 00000000..6f8cbcb5 --- /dev/null +++ b/script/c100000022.lua @@ -0,0 +1,58 @@ +--サテライト・レーザー X-06S バルサム +function c100000022.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeRep(c,50400231,3,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c100000022.splimit) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_REPEAT) + e2:SetCondition(c100000022.atkcon) + e2:SetOperation(c100000022.atkop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLE_END) + e3:SetOperation(c100000022.retop) + c:RegisterEffect(e3) + --pierce + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e4) +end +c100000022.material_count=1 +c100000022.material={50400231} +function c100000022.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c100000022.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000022.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(3000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c100000022.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c==Duel.GetAttacker() and not c:IsStatus(STATUS_BATTLE_DESTROYED) then + c:ResetEffect(RESET_DISABLE,RESET_EVENT) + end +end \ No newline at end of file diff --git a/script/c100000023.lua b/script/c100000023.lua new file mode 100644 index 00000000..cf5ccf5e --- /dev/null +++ b/script/c100000023.lua @@ -0,0 +1,109 @@ +--古生代化石マシン スカルコンボイ +function c100000023.initial_effect(c) + --fusion material + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c100000023.fcon) + e0:SetOperation(c100000023.fop) + c:RegisterEffect(e0) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c100000023.splimit) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000023,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCondition(c100000023.damcon) + e2:SetTarget(c100000023.damtg) + e2:SetOperation(c100000023.damop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetCondition(c100000023.con) + e3:SetValue(2) + c:RegisterEffect(e3) +end +function c100000023.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and se:GetHandler():IsCode(100000025) +end +function c100000023.filter1(c,tp) + return (c:IsRace(RACE_ROCK) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp)) or c:IsHasEffect(511002961) +end +function c100000023.filter2(c,tp) + return (c:IsLevelAbove(7) and c:IsRace(RACE_MACHINE) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(1-tp)) or c:IsHasEffect(511002961) +end +function c100000023.fcon(e,g,gc,chkfnf) + local tp=e:GetHandlerPlayer() + local chkf=bit.band(chkfnf,0xff) + if g==nil then return true end + if gc then return (c100000023.filter1(gc,tp) and g:IsExists(c100000023.filter2,1,gc,tp)) + or (c100000023.filter2(gc,tp) and g:IsExists(c100000023.filter1,1,gc,tp)) end + local b1=0 local b2=0 local b3=0 local ct=0 + local tc=g:GetFirst() + while tc do + local match=false + if tc:IsHasEffect(511002961) then b3=b3+1 match=true + else + if c100000023.filter1(tc,tp) then b1=1 match=true end + if c100000023.filter2(tc,tp) then b2=1 match=true end + end + if match==true then ct=ct+1 end + tc=g:GetNext() + end + return b1+b2+b3>1 and ct>1 and chkf==PLAYER_NONE +end +function c100000023.fop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local tp=e:GetHandlerPlayer() + if gc then + local sg=Group.CreateGroup() + if c100000023.filter1(gc,tp) then sg:Merge(eg:Filter(c100000023.filter2,gc,tp)) end + if c100000023.filter2(gc,tp) then sg:Merge(eg:Filter(c100000023.filter1,gc,tp)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local g1=eg:Filter(c100000023.filter1,nil,tp) + local g2=eg:Filter(c100000023.filter2,nil,tp) + if g1:GetCount()==1 and g2:GetCount()>1 then + g2:Sub(g1) + elseif g2:GetCount()==1 and g1:GetCount()>1 then + g1:Sub(g2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc2=g2:Select(tp,1,1,tc1:GetFirst()) + tc1:Merge(tc2) + Duel.SetFusionMaterial(tc1) +end +function c100000023.con(e) + return Duel.GetFieldGroupCount(e:GetOwnerPlayer(),0,LOCATION_MZONE)>0 +end +function c100000023.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local d=Duel.GetAttacker() + if d==c then d=Duel.GetAttackTarget() end + return c:IsRelateToBattle() and d:IsLocation(LOCATION_GRAVE) and d:IsReason(REASON_BATTLE) and d:IsType(TYPE_MONSTER) +end +function c100000023.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c100000023.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000024.lua b/script/c100000024.lua new file mode 100644 index 00000000..d94987f0 --- /dev/null +++ b/script/c100000024.lua @@ -0,0 +1,55 @@ +--タイム・ストリーム +function c100000024.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000024.cost) + e1:SetTarget(c100000024.target) + e1:SetOperation(c100000024.activate) + c:RegisterEffect(e1) +end +function c100000024.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local lp=Duel.GetLP(tp) + local costlp=math.floor((lp+1)/2) + Duel.PayLPCost(tp,costlp) +end +function c100000024.tfilter1(c,e,tp) + local code=c:GetCode() + return (code==100000027 or code==100000622) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,true,false) +end +function c100000024.tfilter2(c,e,tp) + local code=c:GetCode() + return (code==100000028 or code==100000023 or code==100000029) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,true,false) +end +function c100000024.filter(c,e,tp) + local code=c:GetCode() + return c:IsFaceup() and (((code==100000027 or code==100000622) + and Duel.IsExistingMatchingCard(c100000024.tfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp)) + or ((code==100000026 or code==100000620 or code==100000621) + and Duel.IsExistingMatchingCard(c100000024.tfilter1,tp,LOCATION_EXTRA,0,1,nil,e,tp))) +end +function c100000024.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100000024.filter1(chkc,e,tp) or c100000024.filter2(chkc,e,tp)end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c100000024.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c100000024.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000024.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + if Duel.SendtoDeck(tc,nil,1,REASON_EFFECT)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local code=tc:GetCode() + if code==100000026 or code==100000620 or code==100000621 then + local sg=Duel.SelectMatchingCard(tp,c100000024.tfilter1,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + Duel.SpecialSummon(sg,SUMMON_TYPE_FUSION,tp,tp,true,false,POS_FACEUP) end + if code==100000027 or code==100000622 then + local sg=Duel.SelectMatchingCard(tp,c100000024.tfilter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + Duel.SpecialSummon(sg,SUMMON_TYPE_FUSION,tp,tp,true,false,POS_FACEUP) end +end diff --git a/script/c100000025.lua b/script/c100000025.lua new file mode 100644 index 00000000..ef3c8521 --- /dev/null +++ b/script/c100000025.lua @@ -0,0 +1,67 @@ +--化石融合-フォッシル・フュージョン +function c100000025.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000025.target) + e1:SetOperation(c100000025.activate) + c:RegisterEffect(e1) +end +function c100000025.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c100000025.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x304) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,nil,chkf) +end +function c100000025.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000025.filter1,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,e) + local res=Duel.IsExistingMatchingCard(c100000025.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100000025.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000025.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000025.filter1,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,e) + local sg1=Duel.GetMatchingGroup(c100000025.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100000025.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c100000026.lua b/script/c100000026.lua new file mode 100644 index 00000000..4888a192 --- /dev/null +++ b/script/c100000026.lua @@ -0,0 +1,73 @@ +--新生代化石騎士 スカルポーン +function c100000026.initial_effect(c) + --fusion material + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c100000026.fcon) + e0:SetOperation(c100000026.fop) + c:RegisterEffect(e0) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c100000026.splimit) + c:RegisterEffect(e1) +end +function c100000026.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and se:GetHandler():IsCode(100000025) +end +function c100000026.filter1(c,tp) + return (c:IsRace(RACE_ROCK) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp)) or c:IsHasEffect(511002961) +end +function c100000026.filter2(c,tp) + return (c:IsLevelBelow(4) and c:IsType(TYPE_MONSTER) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(1-tp)) or c:IsHasEffect(511002961) +end +function c100000026.fcon(e,g,gc,chkfnf) + local tp=e:GetHandlerPlayer() + local chkf=bit.band(chkfnf,0xff) + if g==nil then return true end + if gc then return (c100000026.filter1(gc,tp) and g:IsExists(c100000026.filter2,1,gc,tp)) + or (c100000026.filter2(gc,tp) and g:IsExists(c100000026.filter1,1,gc,tp)) end + local b1=0 local b2=0 local b3=0 local ct=0 + local tc=g:GetFirst() + while tc do + local match=false + if tc:IsHasEffect(511002961) then b3=b3+1 match=true + else + if c100000026.filter1(tc,tp) then b1=1 match=true end + if c100000026.filter2(tc,tp) then b2=1 match=true end + end + if match==true then ct=ct+1 end + tc=g:GetNext() + end + return b1+b2+b3>1 and ct>1 and chkf==PLAYER_NONE +end +function c100000026.fop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local tp=e:GetHandlerPlayer() + if gc then + local sg=Group.CreateGroup() + if c100000026.filter1(gc,tp) then sg:Merge(eg:Filter(c100000026.filter2,gc,tp)) end + if c100000026.filter2(gc,tp) then sg:Merge(eg:Filter(c100000026.filter1,gc,tp)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local g1=eg:Filter(c100000026.filter1,nil,tp) + local g2=eg:Filter(c100000026.filter2,nil,tp) + if g1:GetCount()==1 and g2:GetCount()>1 then + g2:Sub(g1) + elseif g2:GetCount()==1 and g1:GetCount()>1 then + g1:Sub(g2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc2=g2:Select(tp,1,1,tc1:GetFirst()) + tc1:Merge(tc2) + Duel.SetFusionMaterial(tc1) +end diff --git a/script/c100000027.lua b/script/c100000027.lua new file mode 100644 index 00000000..35d3f367 --- /dev/null +++ b/script/c100000027.lua @@ -0,0 +1,100 @@ +--中生代化石騎士 スカルナイト +function c100000027.initial_effect(c) + --fusion material + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c100000027.fcon) + e0:SetOperation(c100000027.fop) + c:RegisterEffect(e0) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c100000027.splimit) + c:RegisterEffect(e1) + --chain attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCountLimit(1) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetCondition(c100000027.atcon) + e2:SetOperation(c100000027.atop) + c:RegisterEffect(e2) +end +function c100000027.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and se:GetHandler():IsCode(100000025) +end +function c100000027.filter1(c,tp) + return (c:IsRace(RACE_ROCK) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp)) or c:IsHasEffect(511002961) +end +function c100000027.filter2(c,tp) + return ((c:GetLevel()==5 or c:GetLevel()==6) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(1-tp)) or c:IsHasEffect(511002961) +end +function c100000027.fcon(e,g,gc,chkfnf) + local tp=e:GetHandlerPlayer() + local chkf=bit.band(chkfnf,0xff) + if g==nil then return true end + if gc then return (c100000027.filter1(gc,tp) and g:IsExists(c100000027.filter2,1,gc,tp)) + or (c100000027.filter2(gc,tp) and g:IsExists(c100000027.filter1,1,gc,tp)) end + local b1=0 local b2=0 local b3=0 local ct=0 + local tc=g:GetFirst() + while tc do + local match=false + if tc:IsHasEffect(511002961) then b3=b3+1 match=true + else + if c100000027.filter1(tc,tp) then b1=1 match=true end + if c100000027.filter2(tc,tp) then b2=1 match=true end + end + if match==true then ct=ct+1 end + tc=g:GetNext() + end + return b1+b2+b3>1 and ct>1 and chkf==PLAYER_NONE +end +function c100000027.fop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local tp=e:GetHandlerPlayer() + if gc then + local sg=Group.CreateGroup() + if c100000027.filter1(gc,tp) then sg:Merge(eg:Filter(c100000027.filter2,gc,tp)) end + if c100000027.filter2(gc,tp) then sg:Merge(eg:Filter(c100000027.filter1,gc,tp)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local g1=eg:Filter(c100000027.filter1,nil,tp) + local g2=eg:Filter(c100000027.filter2,nil,tp) + if g1:GetCount()==1 and g2:GetCount()>1 then + g2:Sub(g1) + elseif g2:GetCount()==1 and g1:GetCount()>1 then + g1:Sub(g2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc2=g2:Select(tp,1,1,tc1:GetFirst()) + tc1:Merge(tc2) + Duel.SetFusionMaterial(tc1) +end +function c100000027.atcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==Duel.GetAttacker() and e:GetHandler():IsChainAttackable() + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 +end +function c100000027.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetCondition(c100000027.con) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end +function c100000027.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(e:GetOwnerPlayer(),0,LOCATION_MZONE)>0 +end diff --git a/script/c100000028.lua b/script/c100000028.lua new file mode 100644 index 00000000..0c2eed0a --- /dev/null +++ b/script/c100000028.lua @@ -0,0 +1,105 @@ +--古生代化石騎士 スカルキング +function c100000028.initial_effect(c) + --fusion material + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c100000028.fcon) + e0:SetOperation(c100000028.fop) + c:RegisterEffect(e0) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c100000028.splimit) + c:RegisterEffect(e1) + --chain attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCountLimit(1) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetCondition(c100000028.atcon) + e2:SetOperation(c100000028.atop) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) +end +function c100000028.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and se:GetHandler():IsCode(100000025) +end +function c100000028.filter1(c,tp) + return (c:IsRace(RACE_ROCK) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp)) or c:IsHasEffect(511002961) +end +function c100000028.filter2(c,tp) + return (c:IsLevelAbove(7) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(1-tp)) or c:IsHasEffect(511002961) +end +function c100000028.fcon(e,g,gc,chkfnf) + local tp=e:GetHandlerPlayer() + local chkf=bit.band(chkfnf,0xff) + if g==nil then return true end + if gc then return (c100000028.filter1(gc,tp) and g:IsExists(c100000028.filter2,1,gc,tp)) + or (c100000028.filter2(gc,tp) and g:IsExists(c100000028.filter1,1,gc,tp)) end + local b1=0 local b2=0 local b3=0 local ct=0 + local tc=g:GetFirst() + while tc do + local match=false + if tc:IsHasEffect(511002961) then b3=b3+1 match=true + else + if c100000028.filter1(tc,tp) then b1=1 match=true end + if c100000028.filter2(tc,tp) then b2=1 match=true end + end + if match==true then ct=ct+1 end + tc=g:GetNext() + end + return b1+b2+b3>1 and ct>1 and chkf==PLAYER_NONE +end +function c100000028.fop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local tp=e:GetHandlerPlayer() + if gc then + local sg=Group.CreateGroup() + if c100000028.filter1(gc,tp) then sg:Merge(eg:Filter(c100000028.filter2,gc,tp)) end + if c100000028.filter2(gc,tp) then sg:Merge(eg:Filter(c100000028.filter1,gc,tp)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local g1=eg:Filter(c100000028.filter1,nil,tp) + local g2=eg:Filter(c100000028.filter2,nil,tp) + if g1:GetCount()==1 and g2:GetCount()>1 then + g2:Sub(g1) + elseif g2:GetCount()==1 and g1:GetCount()>1 then + g1:Sub(g2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc2=g2:Select(tp,1,1,tc1:GetFirst()) + tc1:Merge(tc2) + Duel.SetFusionMaterial(tc1) +end +function c100000028.atcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==Duel.GetAttacker() and e:GetHandler():IsChainAttackable() + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 +end +function c100000028.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetCondition(c100000028.con) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end +function c100000028.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(e:GetOwnerPlayer(),0,LOCATION_MZONE)>0 +end diff --git a/script/c100000029.lua b/script/c100000029.lua new file mode 100644 index 00000000..01f0a570 --- /dev/null +++ b/script/c100000029.lua @@ -0,0 +1,114 @@ +--古生代化石竜 スカルギオス +function c100000029.initial_effect(c) + --fusion material + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c100000029.fcon) + e0:SetOperation(c100000029.fop) + c:RegisterEffect(e0) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c100000029.splimit) + c:RegisterEffect(e1) + --atk/def swap + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000029,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCountLimit(1) + e2:SetTarget(c100000029.attg) + e2:SetOperation(c100000029.atop) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) +end +function c100000029.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and se:GetHandler():IsCode(100000025) +end +function c100000029.filter1(c,tp) + return (c:IsRace(RACE_ROCK) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp)) or c:IsHasEffect(511002961) +end +function c100000029.filter2(c,tp) + return (c:IsLevelAbove(8) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(1-tp)) or c:IsHasEffect(511002961) +end +function c100000029.fcon(e,g,gc,chkfnf) + local tp=e:GetHandlerPlayer() + local chkf=bit.band(chkfnf,0xff) + if g==nil then return true end + if gc then return (c100000029.filter1(gc,tp) and g:IsExists(c100000029.filter2,1,gc,tp)) + or (c100000029.filter2(gc,tp) and g:IsExists(c100000029.filter1,1,gc,tp)) end + local b1=0 local b2=0 local b3=0 local ct=0 + local tc=g:GetFirst() + while tc do + local match=false + if tc:IsHasEffect(511002961) then b3=b3+1 match=true + else + if c100000029.filter1(tc,tp) then b1=1 match=true end + if c100000029.filter2(tc,tp) then b2=1 match=true end + end + if match==true then ct=ct+1 end + tc=g:GetNext() + end + return b1+b2+b3>1 and ct>1 and chkf==PLAYER_NONE +end +function c100000029.fop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local tp=e:GetHandlerPlayer() + if gc then + local sg=Group.CreateGroup() + if c100000029.filter1(gc,tp) then sg:Merge(eg:Filter(c100000029.filter2,gc,tp)) end + if c100000029.filter2(gc,tp) then sg:Merge(eg:Filter(c100000029.filter1,gc,tp)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local g1=eg:Filter(c100000029.filter1,nil,tp) + local g2=eg:Filter(c100000029.filter2,nil,tp) + if g1:GetCount()==1 and g2:GetCount()>1 then + g2:Sub(g1) + elseif g2:GetCount()==1 and g1:GetCount()>1 then + g1:Sub(g2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc2=g2:Select(tp,1,1,tc1:GetFirst()) + tc1:Merge(tc2) + Duel.SetFusionMaterial(tc1) +end +function c100000029.attg(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttackTarget() + if chkc then return tg and chkc==tg end + if chk==0 then return tg and tg:IsFaceup() and tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c100000029.atop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + local def=tc:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c100000030.lua b/script/c100000030.lua new file mode 100644 index 00000000..096baedb --- /dev/null +++ b/script/c100000030.lua @@ -0,0 +1,40 @@ +--次元均衡 +function c100000030.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c100000030.condition) + e1:SetTarget(c100000030.target) + e1:SetOperation(c100000030.activate) + c:RegisterEffect(e1) +end +function c100000030.cfilter(c,e,tp) + return c:IsRace(RACE_BEAST) and c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp + and c:IsLocation(LOCATION_GRAVE) and c~=Duel.GetAttacker() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000030.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000030.cfilter,1,nil,e,tp) +end +function c100000030.target(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local tc=eg:GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and a:IsCanBeEffectTarget(e) end + local g=Group.FromCards(a,tc) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,a,1,0,0) +end +function c100000030.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local ex1,tg1=Duel.GetOperationInfo(0,CATEGORY_SPECIAL_SUMMON) + local ex2,tg2=Duel.GetOperationInfo(0,CATEGORY_REMOVE) + if tg1:GetFirst():IsRelateToEffect(e) then + Duel.SpecialSummon(tg1,0,tp,tp,false,false,POS_FACEUP) + end + if tg2:GetFirst():IsRelateToEffect(e) then + Duel.Remove(tg2,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c100000031.lua b/script/c100000031.lua new file mode 100644 index 00000000..5617ea68 --- /dev/null +++ b/script/c100000031.lua @@ -0,0 +1,49 @@ +--神事の獣葬 +function c100000031.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c100000031.target) + e1:SetOperation(c100000031.activate) + c:RegisterEffect(e1) +end +function c100000031.cfilter(c,e,tp) + return c:IsRace(RACE_BEAST) and c:IsFaceup() and c:IsDestructable() +end +function c100000031.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:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(c100000031.cfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsPlayerCanDraw(tp,2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100000031.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100000031.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + if Duel.GetCurrentPhase()==PHASE_STANDBY then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c100000031.drcon) + e1:SetReset(RESET_PHASE+PHASE_STANDBY,2) + else + e1:SetReset(RESET_PHASE+PHASE_STANDBY) + end + e1:SetOperation(c100000031.drop) + Duel.RegisterEffect(e1,tp) + end +end +function c100000031.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()~=e:GetLabel() +end +function c100000031.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,100000031) + Duel.Draw(tp,2,REASON_EFFECT) +end diff --git a/script/c100000032.lua b/script/c100000032.lua new file mode 100644 index 00000000..58feabe5 --- /dev/null +++ b/script/c100000032.lua @@ -0,0 +1,35 @@ +--ダーク・アーキタイプ +function c100000032.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c100000032.condition) + e1:SetTarget(c100000032.target) + e1:SetOperation(c100000032.activate) + c:RegisterEffect(e1) +end +function c100000032.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c100000032.filter(c,e,tp,dam) + return c:IsAttackBelow(dam) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000032.target(e,tp,eg,ep,ev,re,r,rp,chk) + local dam=Duel.GetBattleDamage(tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000032.filter,tp,LOCATION_DECK,0,1,nil,e,tp,dam) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000032.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local dam=Duel.GetBattleDamage(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000032.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp,dam) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000033.lua b/script/c100000033.lua new file mode 100644 index 00000000..ab794be1 --- /dev/null +++ b/script/c100000033.lua @@ -0,0 +1,28 @@ +--ダーク・サイコ・アイ +function c100000033.initial_effect(c) + --control + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c100000033.target) + e1:SetOperation(c100000033.operation) + c:RegisterEffect(e1) +end +function c100000033.filter(c) + return c:IsFaceup() and c:IsControlerCanBeChanged() +end +function c100000033.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100000033.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000033.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c100000033.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c100000033.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c100000034.lua b/script/c100000034.lua new file mode 100644 index 00000000..0bc6908f --- /dev/null +++ b/script/c100000034.lua @@ -0,0 +1,69 @@ +--トライアングル-O +function c100000034.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000034.dcon) + e1:SetTarget(c100000034.target) + e1:SetOperation(c100000034.activate) + c:RegisterEffect(e1) +end +function c100000034.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c100000034.dcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000034.cfilter,tp,LOCATION_ONFIELD,0,1,nil,100000035) + and Duel.IsExistingMatchingCard(c100000034.cfilter,tp,LOCATION_ONFIELD,0,1,nil,100000036) + and Duel.IsExistingMatchingCard(c100000034.cfilter,tp,LOCATION_ONFIELD,0,1,nil,100000037) +end +function c100000034.filter(c) + return c:IsDestructable() +end +function c100000034.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c100000034.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + local sg=Duel.GetMatchingGroup(c100000034.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000034.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100000034.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) + --reflect + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100000034.condition) + e1:SetOperation(c100000034.operation) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000034.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) + if not ex then return false end + if cp~=PLAYER_ALL then return Duel.IsPlayerAffectedByEffect(cp,EFFECT_REVERSE_RECOVER) + else return Duel.IsPlayerAffectedByEffect(0,EFFECT_REVERSE_RECOVER) + or Duel.IsPlayerAffectedByEffect(1,EFFECT_REVERSE_RECOVER) + end +end +function c100000034.operation(e,tp,eg,ep,ev,re,r,rp) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_REFLECT_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetLabel(cid) + e2:SetValue(c100000034.refcon) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) +end +function c100000034.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c100000035.lua b/script/c100000035.lua new file mode 100644 index 00000000..2d8f16e3 --- /dev/null +++ b/script/c100000035.lua @@ -0,0 +1,25 @@ +--水晶ドクロ +function c100000035.initial_effect(c) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c100000035.target) + e1:SetOperation(c100000035.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100000035.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) +end +function c100000035.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,1000,REASON_EFFECT) +end diff --git a/script/c100000036.lua b/script/c100000036.lua new file mode 100644 index 00000000..2f4e9bcc --- /dev/null +++ b/script/c100000036.lua @@ -0,0 +1,24 @@ +--アショカ・ピラー +function c100000036.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c100000036.dmcon) + e1:SetTarget(c100000036.dmtg) + e1:SetOperation(c100000036.dmop) + c:RegisterEffect(e1) +end +function c100000036.dmcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) + and (not c:IsReason(REASON_BATTLE) or bit.band(c:GetBattlePosition(),POS_FACEUP)~=0) +end +function c100000036.dmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,2000) +end +function c100000036.dmop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,2000,REASON_EFFECT) +end diff --git a/script/c100000037.lua b/script/c100000037.lua new file mode 100644 index 00000000..61aeb5be --- /dev/null +++ b/script/c100000037.lua @@ -0,0 +1,35 @@ +--カブレラ・ストーン +function c100000037.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c100000037.sdcon) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c100000037.dmcon) + e2:SetTarget(c100000037.dmtg) + e2:SetOperation(c100000037.dmop) + c:RegisterEffect(e2) +end +function c100000037.sdcon(e) + return e:GetHandler():IsPosition(POS_FACEUP_DEFENSE) +end +function c100000037.dmcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) + and (not c:IsReason(REASON_BATTLE) or bit.band(c:GetBattlePosition(),POS_FACEUP)~=0) +end +function c100000037.dmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,2000) +end +function c100000037.dmop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,2000,REASON_EFFECT) +end diff --git a/script/c100000038.lua b/script/c100000038.lua new file mode 100644 index 00000000..247a02c5 --- /dev/null +++ b/script/c100000038.lua @@ -0,0 +1,35 @@ +--オーロラ・ドロー +function c100000038.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000038.ntcon) + e1:SetTarget(c100000038.target) + e1:SetOperation(c100000038.activate) + c:RegisterEffect(e1) +end +function c100000038.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000038.cfilter2(c) + return c:GetCode()==100000038 +end +function c100000038.ntcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c==nil then return true end + return Duel.IsExistingMatchingCard(c100000038.cfilter,tp,LOCATION_MZONE,0,1,nil) and (Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)==1 and Duel.IsExistingMatchingCard(c100000038.cfilter2,tp,LOCATION_HAND,0,1,nil)) + or Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)==0 +end +function c100000038.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100000038.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100000039.lua b/script/c100000039.lua new file mode 100644 index 00000000..bb8141dd --- /dev/null +++ b/script/c100000039.lua @@ -0,0 +1,46 @@ +--ゴースト・コンバート +function c100000039.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100000039.condition) + e1:SetCost(c100000039.cost) + e1:SetTarget(c100000039.target) + e1:SetOperation(c100000039.activate) + c:RegisterEffect(e1) +end +function c100000039.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000039.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000039.cfilter,tp,LOCATION_MZONE,0,1,nil) and rp~=tp +end +function c100000039.costfilter1(c) + return c:IsRace(RACE_MACHINE) and c:IsFaceup() and c:IsAbleToRemoveAsCost() +end +function c100000039.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000039.costfilter1,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOREMOVE) + local g=Duel.SelectMatchingCard(tp,c100000039.costfilter1,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c100000039.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end +function c100000039.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsCanTurnSet() and e:IsHasType(EFFECT_TYPE_ACTIVATE) then + Duel.BreakEffect() + c:CancelToGrave() + Duel.ChangePosition(c,POS_FACEDOWN) + Duel.RaiseEvent(c,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) + end +end diff --git a/script/c100000040.lua b/script/c100000040.lua new file mode 100644 index 00000000..a03e86b8 --- /dev/null +++ b/script/c100000040.lua @@ -0,0 +1,29 @@ +--インフィニティ・フォース +function c100000040.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c100000040.regcon) + e1:SetTarget(c100000040.rectg) + e1:SetOperation(c100000040.recop) + c:RegisterEffect(e1) +end +function c100000040.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000040.regcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000040.cfilter,tp,LOCATION_MZONE,0,1,nil) + and ep==tp +end +function c100000040.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000040.recop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100000041.lua b/script/c100000041.lua new file mode 100644 index 00000000..b7dcf04c --- /dev/null +++ b/script/c100000041.lua @@ -0,0 +1,27 @@ +--風化戦士 +function c100000041.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCondition(c100000041.atkcon) + e1:SetOperation(c100000041.atkop) + c:RegisterEffect(e1) +end +function c100000041.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000041.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-600) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100000042.lua b/script/c100000042.lua new file mode 100644 index 00000000..41f75ffb --- /dev/null +++ b/script/c100000042.lua @@ -0,0 +1,32 @@ +--アーマード・ホワイトベア +function c100000042.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000042.condition) + e1:SetTarget(c100000042.target) + e1:SetOperation(c100000042.operation) + c:RegisterEffect(e1) +end +function c100000042.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c100000042.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_BEAST) and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000042.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000042.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c100000042.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,c100000042.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000043.lua b/script/c100000043.lua new file mode 100644 index 00000000..f3f2bc64 --- /dev/null +++ b/script/c100000043.lua @@ -0,0 +1,51 @@ +--スキエルA5 +function c100000043.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000043.spcon) + e1:SetOperation(c100000043.spop) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c100000043.sdcon2) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c100000043.tg) + c:RegisterEffect(e3) +end +function c100000043.spfilter(c,code) + return c:GetCode()==code +end +function c100000043.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100000043.spfilter,1,nil,100000045) +end +function c100000043.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c100000043.spfilter,1,1,nil,100000045) + Duel.Release(g1,REASON_COST) +end +function c100000043.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000043.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100000043.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c100000043.tg(e,c) + return c:IsType(TYPE_MONSTER) +end \ No newline at end of file diff --git a/script/c100000044.lua b/script/c100000044.lua new file mode 100644 index 00000000..caa462bf --- /dev/null +++ b/script/c100000044.lua @@ -0,0 +1,85 @@ +--スキエルC5 +function c100000044.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000044.spcon) + e1:SetOperation(c100000044.spop) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c100000044.sdcon2) + c:RegisterEffect(e2) + --battle target + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000044,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c100000044.cbcon) + e3:SetOperation(c100000044.cbop) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_BATTLE_DESTROYED) + e4:SetCondition(c100000044.descon) + e4:SetTarget(c100000044.tg) + e4:SetOperation(c100000044.op) + c:RegisterEffect(e4) +end +function c100000044.spfilter(c,code) + return c:GetCode()==code +end +function c100000044.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100000044.spfilter,1,nil,100000046) +end +function c100000044.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c100000044.spfilter,1,1,nil,100000046) + Duel.Release(g1,REASON_COST) +end +function c100000044.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000044.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100000044.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c100000044.cbcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return bt:GetControler()==c:GetControler() +end +function c100000044.cbop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c100000044.cfil(c,tp) + return c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp +end +function c100000044.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000044.cfil,1,nil,1-tp) +end +function c100000044.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c100000044.op(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000045.lua b/script/c100000045.lua new file mode 100644 index 00000000..b973a2b6 --- /dev/null +++ b/script/c100000045.lua @@ -0,0 +1,82 @@ +--スキエルA3 +function c100000045.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000045.spcon) + e1:SetOperation(c100000045.spop) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c100000045.sdcon2) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000045,1)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c100000045.atcon) + e3:SetTarget(c100000045.attg) + e3:SetOperation(c100000045.atop) + c:RegisterEffect(e3) +end +function c100000045.spfilter(c,code) + return c:GetCode()==code +end +function c100000045.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100000045.spfilter,1,nil,100000058) +end +function c100000045.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c100000045.spfilter,1,1,nil,100000058) + Duel.Release(g1,REASON_COST) +end +function c100000045.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000045.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100000045.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c100000045.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()~=1 and Duel.GetCurrentPhase()~=0 +end +function c100000045.filter(c) + return c:IsFaceup() and not c:IsHasEffect(EFFECT_CANNOT_ATTACK) +end +function c100000045.attg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000045.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000045.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000045.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000045.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc: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_SET_ATTACK) + e2:SetValue(tc:GetAttack()/2) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c100000046.lua b/script/c100000046.lua new file mode 100644 index 00000000..d5bdd91a --- /dev/null +++ b/script/c100000046.lua @@ -0,0 +1,57 @@ +--スキエルC3 +function c100000046.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000046.spcon) + e1:SetOperation(c100000046.spop) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c100000046.sdcon2) + c:RegisterEffect(e2) + --battle target + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000046,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c100000046.cbcon) + e3:SetOperation(c100000046.cbop) + c:RegisterEffect(e3) +end +function c100000046.spfilter(c,code) + return c:GetCode()==code +end +function c100000046.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100000046.spfilter,1,nil,100000060) +end +function c100000046.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c100000046.spfilter,1,1,nil,100000060) + Duel.Release(g1,REASON_COST) +end +function c100000046.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000046.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100000046.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c100000046.cbcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return bt:GetControler()==c:GetControler() +end +function c100000046.cbop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end \ No newline at end of file diff --git a/script/c100000047.lua b/script/c100000047.lua new file mode 100644 index 00000000..92d7b433 --- /dev/null +++ b/script/c100000047.lua @@ -0,0 +1,68 @@ +--ワイゼルG3 +function c100000047.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000047.spcon) + e1:SetOperation(c100000047.spop) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c100000047.sdcon2) + c:RegisterEffect(e2) + --change battle target + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000047,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c100000047.cbcon) + e3:SetOperation(c100000047.cbop) + c:RegisterEffect(e3) + --battle indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e4:SetCountLimit(1) + e4:SetValue(c100000047.valcon) + c:RegisterEffect(e4) +end +function c100000047.spfilter(c,code) + return c:GetCode()==code +end +function c100000047.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100000047.spfilter,1,nil,100000053) +end +function c100000047.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c100000047.spfilter,1,1,nil,100000053) + Duel.Release(g1,REASON_COST) +end +function c100000047.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000047.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100000047.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c100000047.cbcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return c~=bt and bt:GetControler()==c:GetControler() +end +function c100000047.cbop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeAttackTarget(e:GetHandler()) +end +function c100000047.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end \ No newline at end of file diff --git a/script/c100000048.lua b/script/c100000048.lua new file mode 100644 index 00000000..8ea9989c --- /dev/null +++ b/script/c100000048.lua @@ -0,0 +1,63 @@ +--ワイゼルA3 +function c100000048.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000048.spcon) + e1:SetOperation(c100000048.spop) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c100000048.sdcon2) + c:RegisterEffect(e2) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c100000048.piercecon) + e3:SetOperation(c100000048.piercetg) + c:RegisterEffect(e3) +end +function c100000048.spfilter(c,code) + return c:GetCode()==code +end +function c100000048.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100000048.spfilter,1,nil,100000052) +end +function c100000048.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c100000048.spfilter,1,1,nil,100000052) + Duel.Release(g1,REASON_COST) +end +function c100000048.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000048.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100000048.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c100000048.piercecon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a:IsControler(tp) and d:IsDefensePos() and a:IsSetCard(0x3013) +end +function c100000048.piercetg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100000049.lua b/script/c100000049.lua new file mode 100644 index 00000000..c3fbc3b6 --- /dev/null +++ b/script/c100000049.lua @@ -0,0 +1,68 @@ +--ワイゼルT3 +function c100000049.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000049.spcon) + e1:SetOperation(c100000049.spop) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c100000049.sdcon2) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000049,1)) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_CHAINING) + e3:SetCondition(c100000049.discon) + e3:SetTarget(c100000049.distg) + e3:SetOperation(c100000049.disop) + c:RegisterEffect(e3) +end +function c100000049.spfilter(c,code) + return c:GetCode()==code +end +function c100000049.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100000049.spfilter,1,nil,100000051) +end +function c100000049.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c100000049.spfilter,1,1,nil,100000051) + Duel.Release(g1,REASON_COST) +end +function c100000049.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000049.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100000049.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c100000049.discon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c100000049.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100000049.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100000050.lua b/script/c100000050.lua new file mode 100644 index 00000000..4902d18f --- /dev/null +++ b/script/c100000050.lua @@ -0,0 +1,132 @@ +--機皇帝ワイゼル∞ +function c100000050.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(c100000050.operation) + c:RegisterEffect(e1) + --defup + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_ATTACK) + c:RegisterEffect(e2) + --cannot be target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c100000050.efr) + c:RegisterEffect(e3) + --equip + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100000050,1)) + e4:SetCategory(CATEGORY_EQUIP) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c100000050.eqtg) + e4:SetOperation(c100000050.eqop) + c:RegisterEffect(e4) + --only 1 can exists + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SUMMON) + e5:SetCondition(c100000050.excon) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetCode(EFFECT_SPSUMMON_CONDITION) + e7:SetValue(c100000050.splimit) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_SELF_DESTROY) + e8:SetCondition(c100000050.descon) + c:RegisterEffect(e8) +end +c100000050.collection={ + [39648965]=true;[68140974]=true; --Wisel + [75733063]=true;[31930787]=true; --Skiel + [2137678]=true;[4545683]=true; --Granel +} +function c100000050.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x300) or c100000050.collection[c:GetCode()]) +end +function c100000050.operation(e,c) + local wup=0 + local wg=Duel.GetMatchingGroup(c100000050.filter,c:GetControler(),LOCATION_MZONE,0,c) + local wbc=wg:GetFirst() + while wbc do + wup=wup+wbc:GetAttack() + wbc=wg:GetNext() + end + return wup +end +function c100000050.efr(e,re) + return re:GetHandler():GetControler()~=e:GetHandler():GetControler() +end +function c100000050.eqfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() +end +function c100000050.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100000050.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c100000050.eqfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c100000050.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c100000050.eqlimit(e,c) + return e:GetOwner()==c +end +function c100000050.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000050.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c100000050.exfilter(c,fid) + return c:IsFaceup() and c:IsSetCard(0x3013) and (fid==nil or c:GetFieldID()=5 and g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 + and g4:GetCount()>0 and g5:GetCount()>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc1=g1:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) + local tc2=g2:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) + local tc3=g3:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc3,0,tp,tp,false,false,POS_FACEUP) + local tc4=g4:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc4,0,tp,tp,false,false,POS_FACEUP) + local tc5=g5:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc5,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100000056.lua b/script/c100000056.lua new file mode 100644 index 00000000..c94b601c --- /dev/null +++ b/script/c100000056.lua @@ -0,0 +1,132 @@ +--機皇帝スキエル∞ +function c100000056.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(c100000056.operation) + c:RegisterEffect(e1) + --defup + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_ATTACK) + c:RegisterEffect(e2) + --cannot be target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c100000056.efr) + c:RegisterEffect(e3) + --equip + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100000056,1)) + e4:SetCategory(CATEGORY_EQUIP) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(c100000056.efr) + e4:SetTarget(c100000056.eqtg) + e4:SetOperation(c100000056.eqop) + c:RegisterEffect(e4) + --only 1 can exists + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SUMMON) + e5:SetCondition(c100000056.excon) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetCode(EFFECT_SPSUMMON_CONDITION) + e7:SetValue(c100000056.splimit) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_SELF_DESTROY) + e8:SetCondition(c100000056.descon) + c:RegisterEffect(e8) +end +c100000056.collection={ + [39648965]=true;[68140974]=true; --Wisel + [75733063]=true;[31930787]=true; --Skiel + [2137678]=true;[4545683]=true; --Granel +} +function c100000056.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x300) or c100000056.collection[c:GetCode()]) +end +function c100000056.operation(e,c) + local sup=0 + local sg=Duel.GetMatchingGroup(c100000056.filter,c:GetControler(),LOCATION_MZONE,0,c) + local sbc=sg:GetFirst() + while sbc do + sup=sup+sbc:GetAttack() + sbc=sg:GetNext() + end + return sup +end +function c100000056.efr(e,re) + return re:GetHandler():GetControler()~=e:GetHandler():GetControler() +end +function c100000056.eqfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() +end +function c100000056.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100000056.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c100000056.eqfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c100000056.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c100000056.eqlimit(e,c) + return e:GetOwner()==c +end +function c100000056.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000056.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c100000056.exfilter(c,fid) + return c:IsFaceup() and c:IsSetCard(0x3013) and (fid==nil or c:GetFieldID()0 + and Duel.IsExistingTarget(c100000061.eqfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c100000061.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c100000061.eqlimit(e,c) + return e:GetOwner()==c +end +function c100000061.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000061.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c100000061.exfilter(c,fid) + return c:IsFaceup() and c:IsSetCard(0x3013) and (fid==nil or c:GetFieldID()=5 and g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 + and g4:GetCount()>0 and g5:GetCount()>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc1=g1:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) + local tc2=g2:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) + local tc3=g3:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc3,0,tp,tp,false,false,POS_FACEUP) + local tc4=g4:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc4,0,tp,tp,false,false,POS_FACEUP) + local tc5=g5:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc5,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100000067.lua b/script/c100000067.lua new file mode 100644 index 00000000..8456a46a --- /dev/null +++ b/script/c100000067.lua @@ -0,0 +1,64 @@ +--グランド・コア +function c100000067.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c100000067.spcon) + e1:SetTarget(c100000067.sptg) + e1:SetOperation(c100000067.spop) + c:RegisterEffect(e1) + --battle indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e3:SetCountLimit(1) + e3:SetValue(c100000067.valcon) + c:RegisterEffect(e3) +end +function c100000067.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c100000067.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) +end +function c100000067.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,5,tp,0x13) +end +function c100000067.filter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000067.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) + local g1=Duel.GetMatchingGroup(c100000067.filter,tp,0x13,0,nil,4545683,e,tp) + local g2=Duel.GetMatchingGroup(c100000067.filter,tp,0x13,0,nil,100000062,e,tp) + local g3=Duel.GetMatchingGroup(c100000067.filter,tp,0x13,0,nil,100000063,e,tp) + local g4=Duel.GetMatchingGroup(c100000067.filter,tp,0x13,0,nil,100000064,e,tp) + local g5=Duel.GetMatchingGroup(c100000067.filter,tp,0x13,0,nil,100000065,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>=5 and g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 + and g4:GetCount()>0 and g5:GetCount()>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc1=g1:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) + local tc2=g2:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) + local tc3=g3:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc3,0,tp,tp,false,false,POS_FACEUP) + local tc4=g4:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc4,0,tp,tp,false,false,POS_FACEUP) + local tc5=g5:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummonStep(tc5,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100000068.lua b/script/c100000068.lua new file mode 100644 index 00000000..96b54561 --- /dev/null +++ b/script/c100000068.lua @@ -0,0 +1,104 @@ +--機皇創世 +function c100000068.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c100000068.condition) + e1:SetCost(c100000068.cost) + e1:SetTarget(c100000068.target) + e1:SetOperation(c100000068.operation) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000068.decon) + e2:SetTarget(c100000068.destg) + e2:SetValue(c100000068.value) + e2:SetOperation(c100000068.desop) + c:RegisterEffect(e2) +end +function c100000068.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,true,false) and c:IsCode(63468625) +end +function c100000068.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000068.filter,tp,0x13,0,1,nil,e,tp) +end +function c100000068.costfilter(c,code) + return c:GetCode()==code and c:IsFaceup() and c:IsAbleToRemoveAsCost() +end +function c100000068.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000068.costfilter,tp,LOCATION_GRAVE,0,1,nil,100000055) + and Duel.IsExistingMatchingCard(c100000068.costfilter,tp,LOCATION_GRAVE,0,1,nil,100000066) + and Duel.IsExistingMatchingCard(c100000068.costfilter,tp,LOCATION_GRAVE,0,1,nil,100000067) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOREMOVE) + local g1=Duel.SelectMatchingCard(tp,c100000068.costfilter,tp,LOCATION_GRAVE,0,1,1,nil,100000055) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c100000068.costfilter,tp,LOCATION_GRAVE,0,1,1,nil,100000066) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g3=Duel.SelectMatchingCard(tp,c100000068.costfilter,tp,LOCATION_GRAVE,0,1,1,nil,100000067) + g1:Merge(g2) + g1:Merge(g3) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c100000068.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000068.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000068.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c100000068.filter,tp,0x13,0,1,1,nil,e,tp):GetFirst() + if Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)==0 then return end + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c100000068.eqlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c100000068.eqlimit(e,c) + return c:GetCode()==63468625 +end +c100000068.collection={ + [39648965]=true;[68140974]=true; --Wisel + [75733063]=true;[31930787]=true; --Skiel + [2137678]=true;[4545683]=true; --Granel +} +function c100000068.cosqli(c) + return c:IsAbleToRemove() and (c:IsSetCard(0x300) or c100000068.collection[c:GetCode()]) +end +function c100000068.cosqli2(c,e) + return c==e:GetHandler():GetEquipTarget() +end +function c100000068.decon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return Duel.IsExistingMatchingCard(c100000068.cosqli,c:GetControler(),LOCATION_GRAVE,0,1,nil) +end +function c100000068.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + return eg:IsExists(c100000068.cosqli2,1,nil,e) + end + return Duel.SelectYesNo(tp,aux.Stringid(100000068,0)) +end +function c100000068.value(e,c) + return c==e:GetHandler():GetEquipTarget() +end +function c100000068.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.SelectMatchingCard(c:GetControler(),c100000068.cosqli,c:GetControler(),LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c100000069.lua b/script/c100000069.lua new file mode 100644 index 00000000..d1f6eef1 --- /dev/null +++ b/script/c100000069.lua @@ -0,0 +1,47 @@ +--暗黒の召喚神 +function c100000069.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000069,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c100000069.cost) + e1:SetTarget(c100000069.target) + e1:SetOperation(c100000069.operation) + c:RegisterEffect(e1) +end +function c100000069.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() and not Duel.CheckAttackActivity(tp) end + Duel.Release(e:GetHandler(),REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000069.filter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000069.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 + and Duel.IsExistingMatchingCard(c100000069.filter,tp,LOCATION_GRAVE,0,1,nil,6007213,e,tp) + and Duel.IsExistingMatchingCard(c100000069.filter,tp,LOCATION_GRAVE,0,1,nil,32491822,e,tp) + and Duel.IsExistingMatchingCard(c100000069.filter,tp,LOCATION_GRAVE,0,1,nil,69890967,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,LOCATION_GRAVE) +end +function c100000069.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c100000069.filter,tp,LOCATION_GRAVE,0,1,1,nil,6007213,e,tp) + local g2=Duel.SelectMatchingCard(tp,c100000069.filter,tp,LOCATION_GRAVE,0,1,1,nil,32491822,e,tp) + g1:Merge(g2) + local g3=Duel.SelectMatchingCard(tp,c100000069.filter,tp,LOCATION_GRAVE,0,1,1,nil,69890967,e,tp) + g1:Merge(g3) + if g1:GetCount()>2 then + Duel.SpecialSummon(g1,0,tp,tp,true,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000070.lua b/script/c100000070.lua new file mode 100644 index 00000000..4876052a --- /dev/null +++ b/script/c100000070.lua @@ -0,0 +1,16 @@ +--未来破壊 +function c100000070.initial_effect(c) + --discard deck + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100000070.recop) + c:RegisterEffect(e1) +end +function c100000070.recop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0) + Duel.DiscardDeck(tp,g,REASON_EFFECT) +end diff --git a/script/c100000071.lua b/script/c100000071.lua new file mode 100644 index 00000000..3fc538b5 --- /dev/null +++ b/script/c100000071.lua @@ -0,0 +1,35 @@ +--師弟の絆 +function c100000071.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000071.condition) + e1:SetTarget(c100000071.target) + e1:SetOperation(c100000071.activate) + c:RegisterEffect(e1) +end +c100000071.dark_magician_list=true +function c100000071.cfilter(c) + return c:IsFaceup() and c:IsCode(46986414) +end +function c100000071.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000071.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100000071.filter(c,e,tp) + return c:IsCode(38033121) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000071.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000071.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000071.activate(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,c100000071.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c100000072.lua b/script/c100000072.lua new file mode 100644 index 00000000..033fb9e4 --- /dev/null +++ b/script/c100000072.lua @@ -0,0 +1,43 @@ +--カオス・ブラスト +function c100000072.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000072.condition) + e1:SetTarget(c100000072.target) + e1:SetOperation(c100000072.activate) + c:RegisterEffect(e1) +end +function c100000072.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000072.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c100000072.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:GetLevel()<=3 and c:IsRace(RACE_MACHINE) and c:IsAbleToGrave() +end +function c100000072.filter(c) + return c:IsFaceup() and c:GetLevel()<5 and c:IsDestructable() and not c:IsType(TYPE_XYZ) +end +function c100000072.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c100000072.tgfilter,tp,LOCATION_DECK,0,3,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000072.tgfilter,tp,LOCATION_DECK,0,3,3,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end + if chkc then return chkc:IsOnField() and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(c100000072.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100000072.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) + Duel.ShuffleDeck(c:GetControler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100000072.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100000073.lua b/script/c100000073.lua new file mode 100644 index 00000000..0073838d --- /dev/null +++ b/script/c100000073.lua @@ -0,0 +1,38 @@ +--黒魔族復活の棺 +function c100000073.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c100000073.condition) + e1:SetTarget(c100000073.target) + e1:SetOperation(c100000073.activate) + c:RegisterEffect(e1) +end +function c100000073.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsFaceup() and tc:GetSummonPlayer()~=tp and tc:IsAbleToGrave() +end +function c100000073.filter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000073.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c100000073.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_GRAVE) +end +function c100000073.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local tg=Duel.SelectMatchingCard(tp,Card.IsAbleToGrave,tp,LOCATION_MZONE,0,1,1,nil) + tg:AddCard(tc) + Duel.SendtoGrave(tg,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000073.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000074.lua b/script/c100000074.lua new file mode 100644 index 00000000..6f4194c7 --- /dev/null +++ b/script/c100000074.lua @@ -0,0 +1,36 @@ +--大牛鬼 +function c100000074.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000074.spcon) + e1:SetOperation(c100000074.spop) + c:RegisterEffect(e1) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000074,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetOperation(c100000074.atop) + c:RegisterEffect(e3) +end +function c100000074.spfilter(c,code) + return c:GetCode()==code +end +function c100000074.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100000074.spfilter,1,nil,48649353) +end +function c100000074.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c100000074.spfilter,1,1,nil,48649353) + Duel.Release(g1,REASON_COST) +end +function c100000074.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end \ No newline at end of file diff --git a/script/c100000075.lua b/script/c100000075.lua new file mode 100644 index 00000000..7dc06c70 --- /dev/null +++ b/script/c100000075.lua @@ -0,0 +1,19 @@ +--レッド・ノヴァ +function c100000075.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000075.spcon) + c:RegisterEffect(e1) +end +function c100000075.filter(c) + return c:IsFaceup() and c:GetCode()==70902743 +end +function c100000075.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c100000075.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c100000076.lua b/script/c100000076.lua new file mode 100644 index 00000000..8fc4c59f --- /dev/null +++ b/script/c100000076.lua @@ -0,0 +1,40 @@ +--レベル・クロス +function c100000076.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000076.condition) + e1:SetCost(c100000076.cost) + e1:SetTarget(c100000076.target) + e1:SetOperation(c100000076.activate) + c:RegisterEffect(e1) +end +function c100000076.filter(c) + return c:IsFaceup() and c:IsLevelBelow(4) +end +function c100000076.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingTarget(c100000076.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c100000076.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 c100000076.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000076.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000076.filter,tp,LOCATION_MZONE,0,1,nil) end + return true +end +function c100000076.activate(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local dg=Duel.GetMatchingGroup(c100000076.filter,tp,LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tdg=dg:Select(tp,1,1,nil) + local tc=tdg:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()*2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) +end diff --git a/script/c100000078.lua b/script/c100000078.lua new file mode 100644 index 00000000..9d470884 --- /dev/null +++ b/script/c100000078.lua @@ -0,0 +1,33 @@ +--速攻召喚 +function c100000078.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c100000078.target) + e1:SetOperation(c100000078.activate) + c:RegisterEffect(e1) +end +function c100000078.filter(c) + return c:IsSummonable(true,nil) or c:IsMSetable(true,nil) +end +function c100000078.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000078.filter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c100000078.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c100000078.filter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + local s1=tc:IsSummonable(true,nil) + local s2=tc:IsMSetable(true,nil) + if (s1 and s2 and Duel.SelectPosition(tp,tc,POS_FACEUP_ATTACK+POS_FACEDOWN_DEFENSE)==POS_FACEUP_ATTACK) or not s2 then + Duel.Summon(tp,tc,true,nil) + else + Duel.MSet(tp,tc,true,nil) + end + end +end diff --git a/script/c100000079.lua b/script/c100000079.lua new file mode 100644 index 00000000..1ff9a14d --- /dev/null +++ b/script/c100000079.lua @@ -0,0 +1,67 @@ +--スクラップ・フュージョン +function c100000079.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000079.target) + e1:SetOperation(c100000079.activate) + c:RegisterEffect(e1) +end +function c100000079.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c100000079.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,nil,chkf) +end +function c100000079.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000079.filter1,tp,0,LOCATION_GRAVE,nil,e) + local res=Duel.IsExistingMatchingCard(c100000079.filter2,tp,LOCATION_EXTRA,LOCATION_EXTRA,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100000079.filter2,tp,LOCATION_EXTRA,LOCATION_EXTRA,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000079.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000079.filter1,tp,0,LOCATION_GRAVE,nil,e) + local sg1=Duel.GetMatchingGroup(c100000079.filter2,tp,LOCATION_EXTRA,LOCATION_EXTRA,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100000079.filter2,tp,LOCATION_EXTRA,LOCATION_EXTRA,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c100000080.lua b/script/c100000080.lua new file mode 100644 index 00000000..b4f5a080 --- /dev/null +++ b/script/c100000080.lua @@ -0,0 +1,142 @@ +--無限の降魔鏡 +function c100000080.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --SpecialSummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_REPEAT) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000080.regcon) + e2:SetOperation(c100000080.operation) + c:RegisterEffect(e2) + --SpecialSummon + local e3=e2:Clone() + e3:SetCondition(c100000080.regcon2) + e3:SetOperation(c100000080.operation2) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c100000080.spcon) + e4:SetOperation(c100000080.spopera) + c:RegisterEffect(e4) +end +function c100000080.cfilter(c) + return c:IsFaceup() and c:GetCode()==100000081 +end +function c100000080.regcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000080.cfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.GetTurnPlayer()==tp and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c100000080.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local r=Duel.GetLocationCount(tp,LOCATION_MZONE) + if r<=0 or not Duel.IsPlayerCanSpecialSummonMonster(tp,100000082,0,0x4011,3000,1000,10,RACE_FIEND,ATTRIBUTE_DARK) then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then r=1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + while r do + local token=Duel.CreateToken(tp,100000082) + c:CreateRelation(token,RESET_EVENT+0x1fe0000) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + token:RegisterEffect(e1,true) + --CANNOT_DIRECT_ATTACK + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + token:RegisterEffect(e2,true) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000080,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetTarget(c100000080.damtg) + e3:SetOperation(c100000080.damop) + token:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + if r==0 then r=nil end + if r~=nil then r=r-1 end + end +end +function c100000080.regcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000080.cfilter,tp,0,LOCATION_MZONE,1,nil) and Duel.GetTurnPlayer()~=tp and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 +end +function c100000080.operation2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local r=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if r<=0 or not Duel.IsPlayerCanSpecialSummonMonster(tp,100000082,0,0x4011,3000,1000,10,RACE_FIEND,ATTRIBUTE_DARK) then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then r=1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + while r do + local token=Duel.CreateToken(tp,100000082) + c:CreateRelation(token,RESET_EVENT+0x1fe0000) + Duel.SpecialSummonStep(token,0,1-tp,1-tp,false,false,POS_FACEUP) + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + token:RegisterEffect(e1,true) + --CANNOT_DIRECT_ATTACK + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + token:RegisterEffect(e2,true) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000080,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetTarget(c100000080.damtg) + e3:SetOperation(c100000080.damop) + token:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + if r==0 then r=nil end + if r~=nil then r=r-1 end + end +end +function c100000080.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(700) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,700) +end +function c100000080.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c100000080.tokendes(e) + return not Duel.IsExistingMatchingCard(c100000080.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100000080.cfilter2(c,tp,code) + return c:IsCode(code) and c:IsReason(REASON_DESTROY) +end +function c100000080.cfilter3(c) + return c:GetCode()==100000082 and c:IsDestructable() +end +function c100000080.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000080.cfilter2,1,nil,tp,100000081) or eg:IsExists(c100000080.cfilter2,1,nil,1-tp,100000081) and Duel.IsExistingMatchingCard(c100000080.cfilter3,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c100000080.spopera(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sg=Duel.GetMatchingGroup(c100000080.cfilter3,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100000081.lua b/script/c100000081.lua new file mode 100644 index 00000000..1a930e9f --- /dev/null +++ b/script/c100000081.lua @@ -0,0 +1,33 @@ +--闇の神-ダークゴッド +function c100000081.initial_effect(c) + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + c:RegisterEffect(e1) + --CANNOT_DIRECT_ATTACK + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000081,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetTarget(c100000081.damtg) + e3:SetOperation(c100000081.damop) + c:RegisterEffect(e3) +end +function c100000081.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(700) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,700) +end +function c100000081.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000083.lua b/script/c100000083.lua new file mode 100644 index 00000000..e87867d0 --- /dev/null +++ b/script/c100000083.lua @@ -0,0 +1,41 @@ +--幻魔の扉 +function c100000083.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000083.target) + e1:SetOperation(c100000083.activate) + c:RegisterEffect(e1) +end +function c100000083.filter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000083.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000083.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + Duel.BreakEffect() + local g=Duel.GetMatchingGroup(c100000083.filter,tp,0,LOCATION_GRAVE,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local spg=g:Select(tp,1,1,nil) + Duel.SpecialSummon(spg,0,tp,tp,true,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c100000083.thop) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + Duel.RegisterEffect(e1,tp) +end +function c100000083.thop(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandlerPlayer() + Duel.SetLP(tp,Duel.GetLP(p)/10,REASON_EFFECT) +end diff --git a/script/c100000084.lua b/script/c100000084.lua new file mode 100644 index 00000000..3538f913 --- /dev/null +++ b/script/c100000084.lua @@ -0,0 +1,37 @@ +--失楽園 +function c100000084.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000084,2)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE+EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c100000084.drcon) + e2:SetTarget(c100000084.drtg) + e2:SetOperation(c100000084.drop) + c:RegisterEffect(e2) +end +function c100000084.cfilter(c) + return c:IsFaceup() and (c:IsCode(69890967) or c:IsCode(6007213) or c:IsCode(32491822)) +end +function c100000084.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000084.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100000084.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100000084.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100000085.lua b/script/c100000085.lua new file mode 100644 index 00000000..f1a439e9 --- /dev/null +++ b/script/c100000085.lua @@ -0,0 +1,17 @@ +--巨大戦艦 アサルト・コア +function c100000085.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000085.spcon) + c:RegisterEffect(e1) +end +function c100000085.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c100000086.lua b/script/c100000086.lua new file mode 100644 index 00000000..1ca2f3fa --- /dev/null +++ b/script/c100000086.lua @@ -0,0 +1,53 @@ +--ミラー・リゾネーター +function c100000086.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000086.spcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --lv + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000086,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c100000086.thcon) + e2:SetTarget(c100000086.thtg) + e2:SetOperation(c100000086.thop) + c:RegisterEffect(e2) +end +function c100000086.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c100000086.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000086.filter,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c100000086.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c100000086.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100000086.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000086.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000086.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c100000086.thop(e,tp,eg,ep,ev,re,r,rp) + local tc1=Duel.GetFirstTarget() + local lv1=tc1:GetLevel() + local lv2=e:GetHandler():GetLevel() + if lv1==lv2 then return end + if tc1:IsFaceup() and e:GetHandler():IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv1) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100000087.lua b/script/c100000087.lua new file mode 100644 index 00000000..84f3b0b9 --- /dev/null +++ b/script/c100000087.lua @@ -0,0 +1,35 @@ +--チェーン・リゾネーター +function c100000087.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000087,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c100000087.spcon) + e1:SetTarget(c100000087.sptg) + e1:SetOperation(c100000087.spop) + c:RegisterEffect(e1) +end +function c100000087.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c100000087.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000087.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end +function c100000087.filter(c,e,tp) + return c:IsSetCard(0x57) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000087.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000087.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000087.spop(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,c100000087.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000088.lua b/script/c100000088.lua new file mode 100644 index 00000000..11dfad27 --- /dev/null +++ b/script/c100000088.lua @@ -0,0 +1,42 @@ +--バトル・リターン +function c100000088.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000088.condition) + e1:SetTarget(c100000088.target) + e1:SetOperation(c100000088.activate) + c:RegisterEffect(e1) +end +function c100000088.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==tp and ph>=0x08 and ph<=0x20 and (ph~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c100000088.filter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000088.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingTarget(c100000088.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000088.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000088.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+RESET_END) + e2:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c100000089.lua b/script/c100000089.lua new file mode 100644 index 00000000..140f7c24 --- /dev/null +++ b/script/c100000089.lua @@ -0,0 +1,81 @@ +--ハイパー・コート +function c100000089.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000089.condition) + e1:SetTarget(c100000089.target) + e1:SetOperation(c100000089.operation) + c:RegisterEffect(e1) +end +function c100000089.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +c100000089.collection={ + [33725002]=true;[66970002]=true;[87911394]=true;[511000993]=true;[51865604]=true; --V Salamander, Utopia V.., Z + [72677437]=true;[8062132]=true; --Venom + [78371393]=true;[4779091]=true;[31764700]=true; --Yubel + [62180201]=true;[57793869]=true;[21208154]=true; --Wicked Gods + [87526784]=true;[23915499]=true;[50319138]=true; --Crashbug + [511000908]=true;[511000909]=true;[511000910]=true; --Debugger + [61156777]=true; --BOXer + [51638941]=true;[96300057]=true;[62651957]=true;[65622692]=true;[64500000]=true; --VWXYZ + [58859575]=true;[2111707]=true;[99724761]=true;[25119460]=true;[91998119]=true;[84243274]=true; --VWXYZ Fusions +} +function c100000089.setchk(c) + return (c:IsSetCard(0x5) and c:GetCode()~=35781051 and c:GetCode()~=8396952 and c:GetCode()~=123203 and c:GetCode()~=62892347) --Arcana Force with X and V + or c:IsSetCard(0x50) or c:IsSetCard(0x32) or c:IsSetCard(0x8e) or c:IsSetCard(0x5008) or c:IsSetCard(0x41) --Venom, Volcanic, Vampire, Vision Hero, LV + or c:IsSetCard(0x30) or c:IsSetCard(0x3e) or c:IsSetCard(0x58) or c:IsSetCard(0x66) or c:IsSetCard(0x7e) --Vylon, Worm, Wind-Up, Warrior, ZW + or c:IsSetCard(0xe) or c:IsSetCard(0x100d) or c:IsSetCard(0x73) or c:IsSetCard(0xb3) or c:IsSetCard(0x9e) --Watt, X-Saber, Xyz, Yosenju, Yang Zing + or c:IsSetCard(0xc4) or c:IsSetCard(0xc1) --Zefra, PSY-Frame +end +function c100000089.filter(c) + return c:IsFaceup() and (c100000089.setchk(c) or c100000089.collection[c:GetCode()]) and c:IsRace(RACE_MACHINE) +end +function c100000089.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100000089.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000089.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c100000089.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000089.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atk/def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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(c100000089.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c100000089.efilter) + c:RegisterEffect(e3,true) + end +end +function c100000089.eqlimit(e,c) + return (c100000089.setchk(c) or c100000089.collection[c:GetCode()]) and c:IsRace(RACE_MACHINE) +end +function c100000089.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() +end diff --git a/script/c100000090.lua b/script/c100000090.lua new file mode 100644 index 00000000..0a176bb1 --- /dev/null +++ b/script/c100000090.lua @@ -0,0 +1,38 @@ +--Sin Force +function c100000090.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000090.target) + e1:SetOperation(c100000090.activate) + c:RegisterEffect(e1) +end +function c100000090.filter(c) + return c:IsFaceup() and c:IsSetCard(0x23) +end +function c100000090.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(c100000090.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c100000090.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,0,g,1,0,0) +end +function c100000090.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000090.efilter) + tc:RegisterEffect(e1) + end +end +function c100000090.efilter(e,te) + return te:IsActiveType(TYPE_SPELL) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end diff --git a/script/c100000091.lua b/script/c100000091.lua new file mode 100644 index 00000000..000d3508 --- /dev/null +++ b/script/c100000091.lua @@ -0,0 +1,35 @@ +--Sin Selector +function c100000091.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000091.cost) + e1:SetTarget(c100000091.target) + e1:SetOperation(c100000091.activate) + c:RegisterEffect(e1) +end +function c100000091.cfilter(c) + return c:IsSetCard(0x23) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c100000091.filter(c) + return c:IsSetCard(0x23) and c:IsAbleToHand() +end +function c100000091.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000091.cfilter,tp,LOCATION_GRAVE,0,2,nil) end + local g=Duel.SelectMatchingCard(tp,c100000091.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c100000091.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c100000091.filter,tp,LOCATION_DECK,0,2,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100000091.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100000091.filter,tp,LOCATION_DECK,0,2,2,nil) + if g:GetCount()>1 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100000092.lua b/script/c100000092.lua new file mode 100644 index 00000000..dd624099 --- /dev/null +++ b/script/c100000092.lua @@ -0,0 +1,42 @@ +--Sin Paradigm Shift +function c100000092.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c100000092.condition) + e1:SetCost(c100000092.cost) + e1:SetTarget(c100000092.target) + e1:SetOperation(c100000092.activate) + c:RegisterEffect(e1) +end +function c100000092.cfilter(c,tp) + return c:IsCode(8310162) and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) +end +function c100000092.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000092.cfilter,1,nil,tp) +end +function c100000092.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,Duel.GetLP(tp)/2) +end +function c100000092.filter(c,e,tp) + return c:IsCode(37115575) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000092.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000092.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0x13) +end +function c100000092.activate(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,c100000092.filter,tp,0x13,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end diff --git a/script/c100000093.lua b/script/c100000093.lua new file mode 100644 index 00000000..7560cd94 --- /dev/null +++ b/script/c100000093.lua @@ -0,0 +1,57 @@ +--Sin Cross +function c100000093.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000093.target) + e1:SetOperation(c100000093.activate) + c:RegisterEffect(e1) +end +function c100000093.filter(c,e,tp) + return c:IsSetCard(0x23) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000093.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000093.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000093.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000093.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000093.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c100000093.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + Duel.SpecialSummonComplete() + end +end +function c100000093.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c100000094.lua b/script/c100000094.lua new file mode 100644 index 00000000..0750b15a --- /dev/null +++ b/script/c100000094.lua @@ -0,0 +1,28 @@ +--Sin Tune +function c100000094.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c100000094.condition) + e1:SetTarget(c100000094.target) + e1:SetOperation(c100000094.activate) + c:RegisterEffect(e1) +end +function c100000094.cfilter(c,tp) + return c:IsSetCard(0x23) +end +function c100000094.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000094.cfilter,1,nil,tp) +end +function c100000094.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100000094.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100000096.lua b/script/c100000096.lua new file mode 100644 index 00000000..0b0e4d84 --- /dev/null +++ b/script/c100000096.lua @@ -0,0 +1,42 @@ +--サッド・ストーリー ~悲しみの記憶~ +function c100000096.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100000096.actlimit) + c:RegisterEffect(e1) + --DP + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000096.ctcon) + e2:SetOperation(c100000096.ctop) + c:RegisterEffect(e2) +end +function c100000096.actlimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetValue(c100000096.elimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000096.elimit(e,te,tp) + return te:GetHandler():IsType(TYPE_SPELL) +end +function c100000096.eqfilter(c) + return c:IsType(TYPE_MONSTER) +end +function c100000096.ctcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_DRAW and eg:IsExists(c100000096.eqfilter,1,nil) +end +function c100000096.ctop(e,tp,eg,ep,ev,re,r,rp) + if eg then + Duel.ConfirmCards(Duel.GetTurnPlayer(),eg) + Duel.SendtoDeck(eg,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000097.lua b/script/c100000097.lua new file mode 100644 index 00000000..568a3b81 --- /dev/null +++ b/script/c100000097.lua @@ -0,0 +1,42 @@ +--サッド・ストーリー ~揺るがない真実~ +function c100000097.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100000097.actlimit) + c:RegisterEffect(e1) + --DP + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000097.ctcon) + e2:SetOperation(c100000097.ctop) + c:RegisterEffect(e2) +end +function c100000097.actlimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetValue(c100000097.elimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000097.elimit(e,te,tp) + return te:GetHandler():IsType(TYPE_SPELL) +end +function c100000097.eqfilter(c) + return c:IsType(TYPE_SPELL) +end +function c100000097.ctcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_DRAW and eg:IsExists(c100000097.eqfilter,1,nil) +end +function c100000097.ctop(e,tp,eg,ep,ev,re,r,rp) + if eg then + Duel.ConfirmCards(Duel.GetTurnPlayer(),eg) + Duel.SendtoDeck(eg,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000098.lua b/script/c100000098.lua new file mode 100644 index 00000000..a4ec4c42 --- /dev/null +++ b/script/c100000098.lua @@ -0,0 +1,42 @@ +--サッド・ストーリー ~忌むべき日~ +function c100000098.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100000098.actlimit) + c:RegisterEffect(e1) + --DP + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000098.ctcon) + e2:SetOperation(c100000098.ctop) + c:RegisterEffect(e2) +end +function c100000098.actlimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetValue(c100000098.elimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000098.elimit(e,te,tp) + return te:GetHandler():IsType(TYPE_SPELL) +end +function c100000098.eqfilter(c) + return c:IsType(TYPE_TRAP) +end +function c100000098.ctcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_DRAW and eg:IsExists(c100000098.eqfilter,1,nil) +end +function c100000098.ctop(e,tp,eg,ep,ev,re,r,rp) + if eg then + Duel.ConfirmCards(Duel.GetTurnPlayer(),eg) + Duel.SendtoDeck(eg,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100000099.lua b/script/c100000099.lua new file mode 100644 index 00000000..2414c394 --- /dev/null +++ b/script/c100000099.lua @@ -0,0 +1,36 @@ +--バッド・エンド-悲しみの連鎖 +function c100000099.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c100000099.condition) + e1:SetTarget(c100000099.target) + e1:SetOperation(c100000099.activate) + c:RegisterEffect(e1) +end +function c100000099.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_SZONE,0,1,nil,100000096) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_SZONE,0,1,nil,100000097) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_SZONE,0,1,nil,100000098) +end +function c100000099.spfilter(c,e,tp) + return c:IsCode(80513550) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000099.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000099.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp)end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000099.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000099.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetFirstTarget() + if tg:IsRelateToEffect(e) then + Duel.SpecialSummon(tg,0,tp,tp,true,false,POS_FACEUP) + tg:CompleteProcedure() + end +end \ No newline at end of file diff --git a/script/c10000010.lua b/script/c10000010.lua index 02ab90be..a7965b0e 100644 --- a/script/c10000010.lua +++ b/script/c10000010.lua @@ -53,16 +53,16 @@ function c10000010.initial_effect(c) e7:SetOperation(c10000010.desop) c:RegisterEffect(e7) end -function c10000010.ttcon(e,c) +function c10000010.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c10000010.ttop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,3,3) c:SetMaterial(g) Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) end -function c10000010.setcon(e,c) +function c10000010.setcon(e,c,minc) if not c then return true end return false end diff --git a/script/c100000100.lua b/script/c100000100.lua new file mode 100644 index 00000000..113b7f39 --- /dev/null +++ b/script/c100000100.lua @@ -0,0 +1,58 @@ +--パワー・ウォール +function c100000100.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c100000100.condition) + e1:SetCost(c100000100.cost) + e1:SetTarget(c100000100.target) + e1:SetOperation(c100000100.activate) + c:RegisterEffect(e1) +end +function c100000100.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetBattleDamage(tp)>=100 and Duel.GetAttackTarget()==nil +end +function c100000100.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c100000100.target(e,tp,eg,ep,ev,re,r,rp,chk) + local dam=Duel.GetBattleDamage(tp) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if ct==1 then + Duel.DiscardDeck(tp,1,REASON_COST) + Duel.SetTargetParam(100) + else + local t={} + local l=1 + while dam>0 and ct>0 do + dam=dam-100 + ct=ct-1 + t[l]=l + l=l+1 + end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(85087012,2)) + local ac=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.DiscardDeck(tp,ac,REASON_COST) + Duel.SetTargetParam(ac*100) + end +end +function c100000100.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c100000100.damop) + e1:SetLabel(Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c100000100.damop(e,tp,eg,ep,ev,re,r,rp) + local dam=ev-e:GetLabel() + if dam<0 then dam=0 end + Duel.ChangeBattleDamage(tp,dam) +end diff --git a/script/c100000101.lua b/script/c100000101.lua new file mode 100644 index 00000000..6af8aa55 --- /dev/null +++ b/script/c100000101.lua @@ -0,0 +1,42 @@ +--おジャマンダラ +function c100000101.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000101.cost) + e1:SetTarget(c100000101.target) + e1:SetOperation(c100000101.activate) + c:RegisterEffect(e1) +end +function c100000101.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 c100000101.filter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000101.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c100000101.filter,tp,LOCATION_GRAVE,0,1,nil,12482652,e,tp) + and Duel.IsExistingMatchingCard(c100000101.filter,tp,LOCATION_GRAVE,0,1,nil,42941100,e,tp) + and Duel.IsExistingMatchingCard(c100000101.filter,tp,LOCATION_GRAVE,0,1,nil,79335209,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,0,3,0,0) +end +function c100000101.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c100000101.filter,tp,LOCATION_GRAVE,0,nil,12482652,e,tp) + local g2=Duel.GetMatchingGroup(c100000101.filter,tp,LOCATION_GRAVE,0,nil,42941100,e,tp) + local g3=Duel.GetMatchingGroup(c100000101.filter,tp,LOCATION_GRAVE,0,nil,79335209,e,tp) + if g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg3=g3:Select(tp,1,1,nil) + sg1:Merge(sg3) + Duel.SpecialSummon(sg1,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000102.lua b/script/c100000102.lua new file mode 100644 index 00000000..5ada2c02 --- /dev/null +++ b/script/c100000102.lua @@ -0,0 +1,56 @@ +--ネオス・スパイラル・フォース +function c100000102.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:SetCondition(c100000102.condition) + e1:SetCost(c100000102.cost) + e1:SetTarget(c100000102.target) + e1:SetOperation(c100000102.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(100000102,ACTIVITY_ATTACK,c100000102.counterfilter) +end +function c100000102.counterfilter(c) + return not c:IsCode(89943723) +end +function c100000102.cfilter(c) + return c:IsFaceup() and c:IsCode(89943723) +end +function c100000102.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and Duel.IsExistingMatchingCard(c100000102.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100000102.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(100000102,tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,89943723)) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000102.filter(c) + return c:IsFaceup() and not c:IsCode(89943723) +end +function c100000102.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000102.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000102.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000102.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000102.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100000103.lua b/script/c100000103.lua new file mode 100644 index 00000000..804a8632 --- /dev/null +++ b/script/c100000103.lua @@ -0,0 +1,57 @@ +--ブラック・スパイラル・フォース +function c100000103.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:SetCondition(c100000103.condition) + e1:SetCost(c100000103.cost) + e1:SetTarget(c100000103.target) + e1:SetOperation(c100000103.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(100000103,ACTIVITY_ATTACK,c100000103.counterfilter) +end +c100000103.dark_magician_list=true +function c100000103.counterfilter(c) + return not c:IsCode(46986414) +end +function c100000103.cfilter(c) + return c:IsFaceup() and c:IsCode(46986414) +end +function c100000103.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and Duel.IsExistingMatchingCard(c100000103.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100000103.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(100000103,tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,46986414)) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000103.filter(c) + return c:IsFaceup() and not c:IsCode(46986414) +end +function c100000103.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000103.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000103.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000103.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000103.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100000104.lua b/script/c100000104.lua new file mode 100644 index 00000000..740819bb --- /dev/null +++ b/script/c100000104.lua @@ -0,0 +1,43 @@ +--黒・魔・導・連・弾 +function c100000104.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000104.target) + e1:SetOperation(c100000104.activate) + c:RegisterEffect(e1) +end +c100000104.dark_magician_list=true +function c100000104.filter1(c) + return c:IsFaceup() and c:IsCode(46986414) +end +function c100000104.filter2(c) + return c:IsFaceup() and c:IsCode(38033121) +end +function c100000104.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c100000104.filter1,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c100000104.filter2,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c100000104.filter1,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000104.filter2,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000104.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc1=e:GetLabelObject() + local tc2=g:GetFirst() + if tc1==tc2 then tc2=g:GetNext() end + if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) and tc2:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(tc2:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc1:RegisterEffect(e1) + end +end diff --git a/script/c100000105.lua b/script/c100000105.lua new file mode 100644 index 00000000..1c29a5b0 --- /dev/null +++ b/script/c100000105.lua @@ -0,0 +1,43 @@ +--アルカナフォースVIII-STRENGTH +function c100000105.initial_effect(c) + --coin + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000105,0)) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c100000105.cointg) + e1:SetOperation(c100000105.coinop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100000105.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c100000105.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local res=0 + if c:IsHasEffect(73206827) then + res=1-Duel.SelectOption(tp,60,61) + else res=Duel.TossCoin(tp,1) end + local g + if res==0 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_CONTROL) + g=Duel.SelectMatchingCard(1-tp,Card.IsControlerCanBeChanged,1-tp,0,LOCATION_MZONE,1,1,e:GetHandler()) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + g=Duel.SelectMatchingCard(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + end + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.GetControl(tc,1-tc:GetControler()) + end +end diff --git a/script/c100000106.lua b/script/c100000106.lua new file mode 100644 index 00000000..6fbf9018 --- /dev/null +++ b/script/c100000106.lua @@ -0,0 +1,83 @@ +--アルカナフォースXII-THE HANGED MAN +function c100000106.initial_effect(c) + --coin + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000106,0)) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c100000106.cointg) + e1:SetOperation(c100000106.coinop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100000106.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c100000106.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local res=0 + if c:IsHasEffect(73206827) then + res=1-Duel.SelectOption(tp,60,61) + else res=Duel.TossCoin(tp,1) end + c100000106.arcanareg(c,res) +end +function c100000106.arcanareg(c,coin) + c:RegisterFlagEffect(100000106,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + --coin effect + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000106,1)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c100000106.descon) + if c:GetFlagEffectLabel(100000106)==1 then + e1:SetTarget(c100000106.destg1) + else + e1:SetTarget(c100000106.destg2) + end + e1:SetOperation(c100000106.desop) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c100000106.descon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c100000106.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c100000106.destg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000106.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100000106.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,0) +end +function c100000106.destg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100000106.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100000106.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c100000106.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(p,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c100000107.lua b/script/c100000107.lua new file mode 100644 index 00000000..6a2eaa13 --- /dev/null +++ b/script/c100000107.lua @@ -0,0 +1,66 @@ +--ザ・マテリアル・ロード +function c100000107.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c100000107.condition) + e1:SetTarget(c100000107.target) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000107,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCost(c100000107.thcost) + e2:SetTarget(c100000107.thtg) + e2:SetOperation(c100000107.thop) + c:RegisterEffect(e2) +end +function c100000107.cfilter(c) + return c:IsLevelBelow(4) and c:IsSetCard(0x5) +end +function c100000107.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000107.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c100000107.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c100000107.thcost(e,tp,eg,ep,ev,re,r,rp,0) and c100000107.thtg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e:SetOperation(c100000107.thop) + c100000107.thcost(e,tp,eg,ep,ev,re,r,rp,1) + c100000107.thtg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c100000107.costfilter(c) + return c:IsSetCard(0x5) and (c:GetLevel()==5 or c:GetLevel()==6) and c:IsAbleToGraveAsCost() +end +function c100000107.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000107.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000107.costfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000107.filter(c) + return c:IsCode(100000108) and c:IsAbleToHand() +end +function c100000107.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000107.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100000107.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local dg=Duel.SelectMatchingCard(tp,c100000107.filter,tp,LOCATION_DECK,0,1,1,nil) + if dg:GetCount()>0 then + Duel.SendtoHand(dg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,dg) + end +end diff --git a/script/c100000108.lua b/script/c100000108.lua new file mode 100644 index 00000000..a31b3d79 --- /dev/null +++ b/script/c100000108.lua @@ -0,0 +1,66 @@ +--ザ・スピリチアル・ロード +function c100000108.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c100000108.condition) + e1:SetTarget(c100000108.target) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000108,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCost(c100000108.thcost) + e2:SetTarget(c100000108.thtg) + e2:SetOperation(c100000108.thop) + c:RegisterEffect(e2) +end +function c100000108.cfilter(c) + return c:IsSetCard(0x5) and (c:GetLevel()==5 or c:GetLevel()==6) +end +function c100000108.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000108.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c100000108.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c100000108.thcost(e,tp,eg,ep,ev,re,r,rp,0) and c100000108.thtg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e:SetOperation(c100000108.thop) + c100000108.thcost(e,tp,eg,ep,ev,re,r,rp,1) + c100000108.thtg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c100000108.costfilter(c) + return c:IsSetCard(0x5) and c:GetLevel()>=7 and c:IsAbleToGraveAsCost() +end +function c100000108.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000108.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000108.costfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000108.filter(c) + return c:IsCode(100000109) and c:IsAbleToHand() +end +function c100000108.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000108.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100000108.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local dg=Duel.SelectMatchingCard(tp,c100000108.filter,tp,LOCATION_DECK,0,1,1,nil) + if dg:GetCount()>0 then + Duel.SendtoHand(dg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,dg) + end +end diff --git a/script/c100000109.lua b/script/c100000109.lua new file mode 100644 index 00000000..91b7e956 --- /dev/null +++ b/script/c100000109.lua @@ -0,0 +1,55 @@ +--ザ・ヘブンズ・ロード +function c100000109.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000109.condition) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000109,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c100000109.spcost) + e2:SetTarget(c100000109.sptg) + e2:SetOperation(c100000109.spop) + c:RegisterEffect(e2) +end +function c100000109.cfilter(c) + return c:IsSetCard(0x5) and c:GetLevel()>=7 +end +function c100000109.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000109.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c100000109.costfilter(c,code) + return c:IsFaceup() and c:IsCode(code) and c:IsAbleToGraveAsCost() +end +function c100000109.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000109.costfilter,tp,LOCATION_SZONE,0,1,nil,100000107) + and Duel.IsExistingMatchingCard(c100000109.costfilter,tp,LOCATION_SZONE,0,1,nil,100000108) + and e:GetHandler():IsAbleToGraveAsCost() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c100000109.costfilter,tp,LOCATION_SZONE,0,1,1,nil,100000107) + local g2=Duel.SelectMatchingCard(tp,c100000109.costfilter,tp,LOCATION_SZONE,0,1,1,nil,100000108) + g1:Merge(g2) + g1:AddCard(e:GetHandler()) + Duel.SendtoGrave(g1,REASON_COST) +end +function c100000109.spfilter(c,e,tp) + return c:IsCode(5861892) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000109.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000109.spfilter,tp,0x13,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000109.spop(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 tc=Duel.SelectMatchingCard(tp,c100000109.spfilter,tp,0x13,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end diff --git a/script/c100000110.lua b/script/c100000110.lua new file mode 100644 index 00000000..dc290aa6 --- /dev/null +++ b/script/c100000110.lua @@ -0,0 +1,123 @@ +--眠れる巨人ズシン +function c100000110.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_SPSUMMON_PROC) + e4:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e4:SetRange(LOCATION_HAND) + e4:SetCondition(c100000110.spcon3) + e4:SetOperation(c100000110.spop3) + c:RegisterEffect(e4) + --atk/def up + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_DAMAGE_CALCULATING) + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c100000110.atkup) + c:RegisterEffect(e5) + --unaffectable + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e7:SetRange(LOCATION_MZONE) + e7:SetCode(EFFECT_IMMUNE_EFFECT) + e7:SetValue(c100000110.efilter) + c:RegisterEffect(e7) + if not c100000110.global_check then + c100000110.global_check=true + --spsummon proc + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c100000110.spop) + Duel.RegisterEffect(e2,0) + end +end +function c100000110.spfilter1(c) + return c:IsFaceup() and c:GetLevel()==1 and c:IsType(TYPE_NORMAL) +end +function c100000110.spop(e,tp,c) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c100000110.spfilter1,Duel.GetTurnPlayer(),LOCATION_MZONE,0,nil) + local rc=g:GetFirst() + while rc do + if rc:GetFlagEffect(100000110)==0 then + local e1=Effect.CreateEffect(rc) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE_START+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c100000110.spcon1) + e1:SetLabel(0) + e1:SetOperation(c100000110.spop2) + rc:RegisterEffect(e1) + rc:RegisterFlagEffect(100000110,RESET_EVENT+0x1fe0000,0,1) + end + rc=g:GetNext() + end +end +function c100000110.spcon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000110.spop2(e,tp,c) + local c=e:GetHandler() + if c:GetControler()~=Duel.GetTurnPlayer() then return end + local ct=e:GetLabel() + if c:GetFlagEffect(100000110)~=0 and ct==8 then + c:RegisterFlagEffect(100000111,RESET_EVENT+0x1fe0000,0,1) + else + e:SetLabel(ct+1) + end +end +function c100000110.filter(c) + return c:IsFaceup() and c:GetLevel()==1 and c:IsType(TYPE_NORMAL) and c:GetFlagEffect(100000111)~=0 +end +function c100000110.spcon3(e,c) + local c=e:GetHandler() + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),c100000110.filter,1,nil) +end +function c100000110.spop3(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,c100000110.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c100000110.atkup(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d or (a~=c and d~=c) then return end + local tc=c:GetBattleTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()+1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_DISABLE_EFFECT) + tc:RegisterEffect(e4) +end +function c100000110.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end diff --git a/script/c100000111.lua b/script/c100000111.lua new file mode 100644 index 00000000..02699f09 --- /dev/null +++ b/script/c100000111.lua @@ -0,0 +1,22 @@ +--スクラム・フォース +function c100000111.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCondition(c100000111.con) + e2:SetTarget(aux.TargetBoolFunction(Card.IsDefensePos)) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c100000111.con(e) + return Duel.IsExistingMatchingCard(Card.IsDefensePos,e:GetHandlerPlayer(),LOCATION_MZONE,0,2,nil) +end diff --git a/script/c100000113.lua b/script/c100000113.lua new file mode 100644 index 00000000..d6f3ce08 --- /dev/null +++ b/script/c100000113.lua @@ -0,0 +1,37 @@ +--レッドアイズ・バーン +function c100000113.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000113.condition) + e1:SetTarget(c100000113.target) + e1:SetOperation(c100000113.activate) + c:RegisterEffect(e1) +end +function c100000113.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsSetCard(0x3b) and c:IsType(TYPE_MONSTER) +end +function c100000113.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c100000113.cfilter,nil,tp) + return g:GetCount()==1 +end +function c100000113.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=eg:Filter(c100000113.cfilter,nil,tp):GetFirst() + if chk==0 then return true end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,tc:GetAttack()) +end +function c100000113.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.HintSelection(Group.FromCards(tc)) + local atk=tc:GetAttack() + if atk<0 then return end + Duel.Damage(1-tp,atk,REASON_EFFECT,true) + Duel.Damage(tp,atk,REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c100000114.lua b/script/c100000114.lua new file mode 100644 index 00000000..fadd0c7a --- /dev/null +++ b/script/c100000114.lua @@ -0,0 +1,48 @@ +--愚者の種蒔き +function c100000114.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c100000114.target) + e1:SetOperation(c100000114.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000114,0)) + e2:SetCategory(CATEGORY_DECKDES) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000114.condition) + e2:SetTarget(c100000114.target) + e2:SetOperation(c100000114.operation) + c:RegisterEffect(e2) +end +function c100000114.condition(e) + return e:GetHandler():GetFlagEffect(100000114)==0 +end +function c100000114.filter(c) + return c:IsFaceup() and c:IsSetCard(0x5) +end +function c100000114.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000114.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000114.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tc=Duel.SelectTarget(tp,c100000114.filter,tp,LOCATION_MZONE,0,1,1,nil) + local ct=math.floor(tc:GetFirst():GetAttack()/300) + Duel.SetTargetParam(ct) + local res=Duel.TossCoin(tp,1) + if res==0 then + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,ct) + else + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,ct) + end + e:GetHandler():RegisterFlagEffect(100000114,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c100000114.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardDeck(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000115.lua b/script/c100000115.lua new file mode 100644 index 00000000..13eada62 --- /dev/null +++ b/script/c100000115.lua @@ -0,0 +1,35 @@ +--魔術師の天秤 +function c100000115.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000115.cost) + e1:SetTarget(c100000115.target) + e1:SetOperation(c100000115.activate) + c:RegisterEffect(e1) +end +function c100000115.filter(c) + return c:IsSetCard(0x5) and c:IsFaceup() +end +function c100000115.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c100000115.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c100000115.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c100000115.afilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c100000115.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000115.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100000115.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100000115.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100000116.lua b/script/c100000116.lua new file mode 100644 index 00000000..2edddab0 --- /dev/null +++ b/script/c100000116.lua @@ -0,0 +1,80 @@ +--アルカナフォースXV-THE DEVIL +function c100000116.initial_effect(c) + --coin + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000116,0)) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c100000116.cointg) + e1:SetOperation(c100000116.coinop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100000116.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c100000116.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local res=0 + if c:IsHasEffect(73206827) then + res=1-Duel.SelectOption(tp,60,61) + else res=Duel.TossCoin(tp,1) end + c100000116.arcanareg(c,res) +end +function c100000116.arcanareg(c,coin) + c:RegisterFlagEffect(100000116,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + --coin effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + if c:GetFlagEffectLabel(100000116)==1 then + e1:SetTarget(c100000116.destg1) + e1:SetOperation(c100000116.desop1) + else + e1:SetTarget(c100000116.desalltg) + e1:SetOperation(c100000116.desallop) + end + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c100000116.destg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsDestructable() end + if chk==0 then return true end + e:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,g:GetFirst():GetControler(),500) +end +function c100000116.desop1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(tc:GetPreviousControler(),500,REASON_EFFECT) + else + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end + end + end +end +function c100000116.desalltg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + e:SetCategory(CATEGORY_DESTROY) + e:SetProperty(0) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000116.desallop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100000117.lua b/script/c100000117.lua new file mode 100644 index 00000000..e4c0b108 --- /dev/null +++ b/script/c100000117.lua @@ -0,0 +1,42 @@ +--ライフ・フォース +function c100000117.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) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCondition(c100000117.con) + e2:SetCost(c100000117.cost) + e2:SetTarget(c100000117.tg) + e2:SetOperation(c100000117.op) + c:RegisterEffect(e2) +end +function c100000117.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c100000117.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c100000117.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) +end +function c100000117.op(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c100000117.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,p) +end +function c100000117.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,0) +end diff --git a/script/c100000118.lua b/script/c100000118.lua new file mode 100644 index 00000000..0cb83a39 --- /dev/null +++ b/script/c100000118.lua @@ -0,0 +1,49 @@ +--おジャマ・ゲットライド! +function c100000118.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000118.cost) + e1:SetTarget(c100000118.target) + e1:SetOperation(c100000118.activate) + c:RegisterEffect(e1) +end +function c100000118.costfilter(c,code) + return c:IsAbleToGraveAsCost() and c:IsCode(code) +end +function c100000118.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000118.costfilter,tp,LOCATION_HAND,0,1,nil,12482652) + and Duel.IsExistingMatchingCard(c100000118.costfilter,tp,LOCATION_HAND,0,1,nil,42941100) + and Duel.IsExistingMatchingCard(c100000118.costfilter,tp,LOCATION_HAND,0,1,nil,79335209) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c100000118.costfilter,tp,LOCATION_HAND,0,1,1,nil,12482652) + local g2=Duel.SelectMatchingCard(tp,c100000118.costfilter,tp,LOCATION_HAND,0,1,1,nil,42941100) + g1:Merge(g2) + local g3=Duel.SelectMatchingCard(tp,c100000118.costfilter,tp,LOCATION_HAND,0,1,1,nil,79335209) + g1:Merge(g3) + Duel.SendtoGrave(g1,REASON_COST) +end +function c100000118.filter(c,e,tp) + return c:GetLevel()<=4 and c:IsRace(RACE_MACHINE) and c:IsType(TYPE_UNION) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000118.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000118.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_DECK) +end +function c100000118.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>3 then ft=3 end + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000118.filter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c100000119.lua b/script/c100000119.lua new file mode 100644 index 00000000..d0bcbdc3 --- /dev/null +++ b/script/c100000119.lua @@ -0,0 +1,45 @@ +--おジャマ・デルタサンダー!! +function c100000119.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c100000119.condition) + e1:SetTarget(c100000119.target) + e1:SetOperation(c100000119.activate) + c:RegisterEffect(e1) +end +function c100000119.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c100000119.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000119.cfilter,tp,LOCATION_MZONE,0,1,nil,12482652) + and Duel.IsExistingMatchingCard(c100000119.cfilter,tp,LOCATION_MZONE,0,1,nil,42941100) + and Duel.IsExistingMatchingCard(c100000119.cfilter,tp,LOCATION_MZONE,0,1,nil,79335209) +end +function c100000119.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + local dam=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND+LOCATION_ONFIELD,0)*500 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100000119.costfilter(c) + return c:IsCode(8251996) and c:IsAbleToGrave() +end +function c100000119.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + Duel.BreakEffect() + local dg=Duel.GetMatchingGroup(c100000119.costfilter,tp,LOCATION_DECK+LOCATION_HAND,0,nil) + local dt=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + if dg:GetCount()>0 and dt:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_HINTMSG_TOGRAVE) + local des=dg:Select(tp,1,1,nil) + Duel.SendtoGrave(des,REASON_EFFECT) + Duel.BreakEffect() + Duel.Destroy(dt,REASON_EFFECT) + end +end diff --git a/script/c100000120.lua b/script/c100000120.lua new file mode 100644 index 00000000..688a9a2b --- /dev/null +++ b/script/c100000120.lua @@ -0,0 +1,39 @@ +--受け入れがたい結果 +function c100000120.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c100000120.condition) + e1:SetTarget(c100000120.target) + e1:SetOperation(c100000120.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100000120.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsSetCard,1,nil,0x302) +end +function c100000120.filter(c,e,tp) + return c:IsSetCard(0x302) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000120.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000120.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000120.activate(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,c100000120.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000121.lua b/script/c100000121.lua new file mode 100644 index 00000000..9d189c01 --- /dev/null +++ b/script/c100000121.lua @@ -0,0 +1,37 @@ +--開運ミラクルストーン +function c100000121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c100000121.tg) + e2:SetValue(c100000121.val) + c:RegisterEffect(e2) + --attack res + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c100000121.target) + c:RegisterEffect(e3) +end +function c100000121.tg(e,c) + return c:IsSetCard(0x302) +end +function c100000121.filter(c) + return c:IsFaceup() and c:IsSetCard(0x302) +end +function c100000121.val(e,c) + return Duel.GetMatchingGroupCount(c100000121.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*1000 +end +function c100000121.target(e,c) + return c:IsStatus(STATUS_SUMMON_TURN) and c:IsSetCard(0x302) and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 +end diff --git a/script/c100000122.lua b/script/c100000122.lua new file mode 100644 index 00000000..69722036 --- /dev/null +++ b/script/c100000122.lua @@ -0,0 +1,50 @@ +--幸運の前借り +function c100000122.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000122.target) + e1:SetOperation(c100000122.activate) + c:RegisterEffect(e1) +end +function c100000122.tfilter(c,lv,e,tp) + return c:IsSetCard(0x302) and c:GetLevel()==lv-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000122.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x302) + and Duel.IsExistingMatchingCard(c100000122.tfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,c:GetLevel(),e,tp) +end +function c100000122.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100000122.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000122.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000122.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c100000122.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c100000122.tfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,tc:GetLevel(),e,tp) + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetTargetRange(1,0) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c100000122.con) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + Duel.RegisterEffect(e1,tp) +end +function c100000122.con(e) + return Duel.GetTurnPlayer()==e:GetHandler():GetControler() and Duel.GetTurnCount()~=e:GetLabel() +end \ No newline at end of file diff --git a/script/c100000136.lua b/script/c100000136.lua new file mode 100644 index 00000000..99e190a8 --- /dev/null +++ b/script/c100000136.lua @@ -0,0 +1,54 @@ +--ディフェンス・メイデン +function c100000136.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:SetTarget(c100000136.target) + c:RegisterEffect(e1) + --change target + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000136,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000136.atkcon) + e2:SetTarget(c100000136.atktg) + e2:SetOperation(c100000136.atkop) + c:RegisterEffect(e2) +end +function c100000136.filter(c) + return c:IsFaceup() and c:IsCode(100000139) +end +function c100000136.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000136.filter(chkc) end + if chk==0 then return true end + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and c100000136.atkcon(e,tp,eg,ep,ev,re,r,rp) + and c100000136.atktg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,94) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c100000136.atkop) + c100000136.atktg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c100000136.atkcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return Duel.GetAttacker():IsControler(1-tp) and at and (at:IsFacedown() or not at:IsCode(100000139)) +end +function c100000136.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000136.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000136.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c100000136.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000136.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c100000137.lua b/script/c100000137.lua new file mode 100644 index 00000000..4c4bd772 --- /dev/null +++ b/script/c100000137.lua @@ -0,0 +1,56 @@ +--ハッピー・マリッジ +function c100000137.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:SetCondition(c100000137.con) + e1:SetTarget(c100000137.target) + e1:SetOperation(c100000137.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c100000137.value) + c:RegisterEffect(e3) +end +function c100000137.spfilter(c) + return c:GetOwner()~=c:GetControler() and c:IsFaceup() +end +function c100000137.con(e,c) + if c==nil then return true end + return Duel.IsExistingMatchingCard(c100000137.spfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c100000137.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 c100000137.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 c100000137.value(e,c) + local wup=0 + local wg=Duel.GetMatchingGroup(c100000137.spfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,nil) + local wbc=wg:GetFirst() + while wbc do + wup=wup+wbc:GetAttack() + wbc=wg:GetNext() + end + return wup +end diff --git a/script/c100000138.lua b/script/c100000138.lua new file mode 100644 index 00000000..eba96894 --- /dev/null +++ b/script/c100000138.lua @@ -0,0 +1,62 @@ +--キューピッド・キス +function c100000138.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(c100000138.target) + e1:SetOperation(c100000138.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000138,0)) + e3:SetCategory(CATEGORY_CONTROL) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetCondition(c100000138.ctcon) + e3:SetTarget(c100000138.cttg) + e3:SetOperation(c100000138.ctop) + c:RegisterEffect(e3) +end +function c100000138.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 c100000138.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c100000138.ctcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local d=Duel.GetAttackTarget() + local a=Duel.GetAttacker() + return tc==d and d and a:IsRelateToBattle() and a:IsFaceup() and a==e:GetHandler():GetEquipTarget() + and d:IsFaceup() and d:GetCounter(0x1090)>0 +end +function c100000138.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=Duel.GetAttackTarget() + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,tc,1,0,0) +end +function c100000138.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp) + end +end diff --git a/script/c100000139.lua b/script/c100000139.lua new file mode 100644 index 00000000..14714ec8 --- /dev/null +++ b/script/c100000139.lua @@ -0,0 +1,26 @@ +--恋する乙女 +function c100000139.initial_effect(c) + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetCondition(c100000139.sdcon) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetOperation(c100000139.ctop) + c:RegisterEffect(e2) +end +function c100000139.sdcon(e) + return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) +end +function c100000139.ctop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttackTarget() and Duel.GetAttackTarget()==e:GetHandler() then + local tc=Duel.GetAttacker() + if tc and tc:IsRelateToBattle() then + tc:AddCounter(0x1090,1) + end + end +end diff --git a/script/c100000140.lua b/script/c100000140.lua new file mode 100644 index 00000000..43d1a381 --- /dev/null +++ b/script/c100000140.lua @@ -0,0 +1,43 @@ +--DT ナイトメア・ハンド +function c100000140.initial_effect(c) + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c100000140.synlimit) + c:RegisterEffect(e1) + --summon/special summon success + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000140,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c100000140.sptg) + e2:SetOperation(c100000140.spop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100000140.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x301) +end +function c100000140.filter(c,e,tp) + return c:GetLevel()==2 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000140.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000140.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000140.spop(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,c100000140.filter,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 diff --git a/script/c100000141.lua b/script/c100000141.lua new file mode 100644 index 00000000..6bd14742 --- /dev/null +++ b/script/c100000141.lua @@ -0,0 +1,40 @@ +--DT デス・サブマリン +function c100000141.initial_effect(c) + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c100000141.synlimit) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000141,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,100000141+EFFECT_COUNT_CODE_DUEL) + e2:SetCondition(c100000141.spcon) + e2:SetTarget(c100000141.sptg) + e2:SetOperation(c100000141.spop) + c:RegisterEffect(e2) +end +function c100000141.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x301) +end +function c100000141.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c100000141.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c100000141.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000142.lua b/script/c100000142.lua new file mode 100644 index 00000000..6f3cf1f5 --- /dev/null +++ b/script/c100000142.lua @@ -0,0 +1,36 @@ +--DT カオスローグ +function c100000142.initial_effect(c) + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c100000142.synlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000142,0)) + e2:SetCategory(CATEGORY_DECKDES) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c100000142.dcon) + e2:SetTarget(c100000142.dtg) + e2:SetOperation(c100000142.dop) + c:RegisterEffect(e2) +end +function c100000142.synlimit(e,c) + return not c:IsSetCard(0x301) +end +function c100000142.dcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO +end +function c100000142.dtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(5) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,5) +end +function c100000142.dop(e,tp,eg,ep,ev,re,r,rp) + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardDeck(p,val,REASON_EFFECT) +end diff --git a/script/c100000143.lua b/script/c100000143.lua new file mode 100644 index 00000000..f1f65259 --- /dev/null +++ b/script/c100000143.lua @@ -0,0 +1,39 @@ +--DT カタストローグ +function c100000143.initial_effect(c) + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c100000143.synlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000143,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c100000143.descon) + e2:SetTarget(c100000143.destg) + e2:SetOperation(c100000143.desop) + c:RegisterEffect(e2) +end +function c100000143.synlimit(e,c) + return not c:IsSetCard(0x301) +end +function c100000143.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO +end +function c100000143.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100000143.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100000144.lua b/script/c100000144.lua new file mode 100644 index 00000000..a8d85645 --- /dev/null +++ b/script/c100000144.lua @@ -0,0 +1,28 @@ +--DT スパイダー・コクーン +function c100000144.initial_effect(c) + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c100000144.synlimit) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c100000144.spcon) + c:RegisterEffect(e2) +end +function c100000144.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x301) +end +function c100000144.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c100000145.lua b/script/c100000145.lua new file mode 100644 index 00000000..7494e69a --- /dev/null +++ b/script/c100000145.lua @@ -0,0 +1,64 @@ +--DT 黒の女神ウィタカ +function c100000145.initial_effect(c) + c:EnableReviveLimit() + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c100000145.synlimit) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c100000145.spcon) + e2:SetOperation(c100000145.spop) + c:RegisterEffect(e2) + --lvchange + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_LVCHANGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c100000145.lvtg) + e3:SetOperation(c100000145.lvop) + c:RegisterEffect(e3) +end +function c100000145.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x301) +end +function c100000145.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and Duel.CheckLPCost(c:GetControler(),1000) +end +function c100000145.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.PayLPCost(tp,1000) +end +function c100000145.lvfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c100000145.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000145.lvfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000145.lvfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) + and e:GetHandler():GetLevel()>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000145.lvfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c100000145.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c100000146.lua b/script/c100000146.lua new file mode 100644 index 00000000..8f1ad851 --- /dev/null +++ b/script/c100000146.lua @@ -0,0 +1,38 @@ +--DT ダーク・エイプ +function c100000146.initial_effect(c) + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c100000146.synlimit) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000146,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c100000146.drcon) + e2:SetTarget(c100000146.drtg) + e2:SetOperation(c100000146.drop) + c:RegisterEffect(e2) +end +function c100000146.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x301) +end +function c100000146.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO +end +function c100000146.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100000146.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100000147.lua b/script/c100000147.lua new file mode 100644 index 00000000..5372e1d1 --- /dev/null +++ b/script/c100000147.lua @@ -0,0 +1,26 @@ +--ダーク・ウェーブ +function c100000147.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000147.target) + e1:SetOperation(c100000147.activate) + c:RegisterEffect(e1) +end +function c100000147.filter(c) + return c:IsFaceup() and c:GetLevel()>0 and not c:IsType(TYPE_TUNER) +end +function c100000147.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000147.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000147.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000147.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000147.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + tc:RegisterFlagEffect(100000147,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end \ No newline at end of file diff --git a/script/c100000149.lua b/script/c100000149.lua new file mode 100644 index 00000000..3f6abfbc --- /dev/null +++ b/script/c100000149.lua @@ -0,0 +1,66 @@ +--次元破壊砲-STU +function c100000149.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c100000149.target) + e1:SetOperation(c100000149.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c100000149.desop) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e3) + --Pierce + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e4) +end +function c100000149.filter(c,e,tp) + return c:IsCode(84243274) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000149.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000149.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000149.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000149.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000149.eqlimit(e,c) + return e:GetOwner()==c +end +function c100000149.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) then + if Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP_ATTACK)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000149.eqlimit) + c:RegisterEffect(e1) + end +end +function c100000149.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetHandler():GetEquipTarget() + if c:IsReason(REASON_DESTROY) and tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100000150.lua b/script/c100000150.lua new file mode 100644 index 00000000..908608bd --- /dev/null +++ b/script/c100000150.lua @@ -0,0 +1,137 @@ +--ワンハンドレッド·アイ·ドラゴン +function c100000150.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + c100000150.tuner_filter=function(mc) return mc and mc:IsSetCard(0x301) end + c100000150.nontuner_filter=function(mc) return true end + c100000150.minntct=1 + c100000150.maxntct=1 + c100000150.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c100000150.syncon) + e1:SetOperation(c100000150.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c100000150.operation) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000150,1)) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c100000150.thtg) + e3:SetOperation(c100000150.thop) + c:RegisterEffect(e3) + --actlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetOperation(c100000150.atkop) + c:RegisterEffect(e4) + --add setcode + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e5:SetCode(EFFECT_ADD_SETCODE) + e5:SetValue(0x301) + c:RegisterEffect(e5) +end +function c100000150.tmatfilter(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c100000150.ntmatfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c100000150.synfilter1(c,lv,tuner,syncard) + local tlv=c:GetSynchroLevel(syncard) + if c:GetFlagEffect(100000147)==0 then + return tuner:IsExists(c100000150.synfilter2,1,nil,lv+tlv,syncard) + else + return tuner:IsExists(c100000150.synfilter2,1,nil,lv-tlv,syncard) + end +end +function c100000150.synfilter2(c,lv,syncard) + return c:GetSynchroLevel(syncard)==lv +end +function c100000150.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local tuner=Duel.GetMatchingGroup(c100000150.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c100000150.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return nontuner:IsExists(c100000150.synfilter1,1,nil,8,tuner,c) +end +function c100000150.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local tun=Duel.GetMatchingGroup(c100000150.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nont=Duel.GetMatchingGroup(c100000150.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local nontmat=nont:FilterSelect(tp,c100000150.synfilter1,1,1,nil,8,tun,c) + local mat1=nontmat:GetFirst() + g:AddCard(mat1) + local lv1=mat1:GetSynchroLevel(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t + if mat1:GetFlagEffect(100000147)==0 then + t=tun:FilterSelect(tp,c100000150.synfilter2,1,1,nil,8+lv1,c) + else + t=tun:FilterSelect(tp,c100000150.synfilter2,1,1,nil,8-lv1,c) + end + g:Merge(t) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c100000150.filter(c) + return c:IsSetCard(0xb) and c:IsType(TYPE_MONSTER) +end +function c100000150.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local wg=Duel.GetMatchingGroup(c100000150.filter,c:GetControler(),LOCATION_GRAVE,0,nil) + local wbc=wg:GetFirst() + while wbc do + local code=wbc:GetOriginalCode() + if c:IsFaceup() and c:GetFlagEffect(code)==0 then + c:CopyEffect(code,RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END,1) + c:RegisterFlagEffect(code,RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END,0,1) + end + wbc=wg:GetNext() + end +end +function c100000150.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c100000150.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c100000150.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end +function c100000150.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c100000150.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c100000150.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c100000151.lua b/script/c100000151.lua new file mode 100644 index 00000000..6cb093ce --- /dev/null +++ b/script/c100000151.lua @@ -0,0 +1,99 @@ +--ダーク・フラット・トップ +function c100000151.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + c100000151.tuner_filter=function(mc) return mc and mc:IsSetCard(0x301) end + c100000151.nontuner_filter=function(mc) return true end + c100000151.minntct=1 + c100000151.maxntct=1 + c100000151.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c100000151.syncon) + e1:SetOperation(c100000151.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000151,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c100000151.target) + e2:SetOperation(c100000151.activate) + c:RegisterEffect(e2) + --add setcode + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_ADD_SETCODE) + e3:SetValue(0x301) + c:RegisterEffect(e3) +end +function c100000151.tmatfilter(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c100000151.ntmatfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c100000151.synfilter1(c,lv,tuner,syncard) + local tlv=c:GetSynchroLevel(syncard) + if c:GetFlagEffect(100000147)==0 then + return tuner:IsExists(c100000151.synfilter2,1,nil,lv+tlv,syncard) + else + return tuner:IsExists(c100000151.synfilter2,1,nil,lv-tlv,syncard) + end +end +function c100000151.synfilter2(c,lv,syncard) + return c:GetSynchroLevel(syncard)==lv +end +function c100000151.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local tuner=Duel.GetMatchingGroup(c100000151.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c100000151.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return nontuner:IsExists(c100000151.synfilter1,1,nil,8,tuner,c) +end +function c100000151.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local tun=Duel.GetMatchingGroup(c100000151.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nont=Duel.GetMatchingGroup(c100000151.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local nontmat=nont:FilterSelect(tp,c100000151.synfilter1,1,1,nil,8,tun,c) + local mat1=nontmat:GetFirst() + g:AddCard(mat1) + local lv1=mat1:GetSynchroLevel(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t + if mat1:GetFlagEffect(100000147)==0 then + t=tun:FilterSelect(tp,c100000151.synfilter2,1,1,nil,8+lv1,c) + else + t=tun:FilterSelect(tp,c100000151.synfilter2,1,1,nil,8-lv1,c) + end + g:Merge(t) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c100000151.filter(c,e,tp) + return c:GetLevel()==8 and c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000151.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000151.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000151.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000151.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000151.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c100000152.lua b/script/c100000152.lua new file mode 100644 index 00000000..f66457fb --- /dev/null +++ b/script/c100000152.lua @@ -0,0 +1,123 @@ +--猿魔王 ゼーマン +function c100000152.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + c100000152.tuner_filter=function(mc) return mc and mc:IsSetCard(0x301) end + c100000152.nontuner_filter=function(mc) return true end + c100000152.minntct=1 + c100000152.maxntct=1 + c100000152.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c100000152.syncon) + e1:SetOperation(c100000152.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --actlimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetOperation(c100000152.lmop) + c:RegisterEffect(e2) + --negate attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(22858242,0)) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c100000152.condition) + e3:SetCost(c100000152.cost) + e3:SetTarget(c100000152.target) + e3:SetOperation(c100000152.activate) + c:RegisterEffect(e3) + --add setcode + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_ADD_SETCODE) + e4:SetValue(0x301) + c:RegisterEffect(e4) +end +function c100000152.tmatfilter(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c100000152.ntmatfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c100000152.synfilter1(c,lv,tuner,syncard) + local tlv=c:GetSynchroLevel(syncard) + if c:GetFlagEffect(100000147)==0 then + return tuner:IsExists(c100000152.synfilter2,1,nil,lv+tlv,syncard) + else + return tuner:IsExists(c100000152.synfilter2,1,nil,lv-tlv,syncard) + end +end +function c100000152.synfilter2(c,lv,syncard) + return c:GetSynchroLevel(syncard)==lv +end +function c100000152.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local tuner=Duel.GetMatchingGroup(c100000152.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c100000152.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return nontuner:IsExists(c100000152.synfilter1,1,nil,7,tuner,c) +end +function c100000152.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local tun=Duel.GetMatchingGroup(c100000152.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nont=Duel.GetMatchingGroup(c100000152.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local nontmat=nont:FilterSelect(tp,c100000152.synfilter1,1,1,nil,7,tun,c) + local mat1=nontmat:GetFirst() + g:AddCard(mat1) + local lv1=mat1:GetSynchroLevel(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t + if mat1:GetFlagEffect(100000147)==0 then + t=tun:FilterSelect(tp,c100000152.synfilter2,1,1,nil,7+lv1,c) + else + t=tun:FilterSelect(tp,c100000152.synfilter2,1,1,nil,7-lv1,c) + end + g:Merge(t) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c100000152.lmop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c100000152.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c100000152.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c100000152.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(1-tp) +end +function c100000152.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c100000152.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000152.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000152.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000152.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c100000152.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c100000153.lua b/script/c100000153.lua new file mode 100644 index 00000000..62b1aea2 --- /dev/null +++ b/script/c100000153.lua @@ -0,0 +1,125 @@ +--月影龍 クイラ +function c100000153.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + c100000153.tuner_filter=function(mc) return mc and mc:IsSetCard(0x301) end + c100000153.nontuner_filter=function(mc) return true end + c100000153.minntct=1 + c100000153.maxntct=1 + c100000153.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c100000153.syncon) + e1:SetOperation(c100000153.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000153,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c100000153.descon) + e2:SetTarget(c100000153.destg) + e2:SetOperation(c100000153.desop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000153,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c100000153.spcon) + e3:SetTarget(c100000153.sptg) + e3:SetOperation(c100000153.spop) + c:RegisterEffect(e3) + --add setcode + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_ADD_SETCODE) + e4:SetValue(0x301) + c:RegisterEffect(e4) +end +function c100000153.tmatfilter(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c100000153.ntmatfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c100000153.synfilter1(c,lv,tuner,syncard) + local tlv=c:GetSynchroLevel(syncard) + if c:GetFlagEffect(100000147)==0 then + return tuner:IsExists(c100000153.synfilter2,1,nil,lv+tlv,syncard) + else + return tuner:IsExists(c100000153.synfilter2,1,nil,lv-tlv,syncard) + end +end +function c100000153.synfilter2(c,lv,syncard) + return c:GetSynchroLevel(syncard)==lv +end +function c100000153.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local tuner=Duel.GetMatchingGroup(c100000153.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c100000153.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return nontuner:IsExists(c100000153.synfilter1,1,nil,6,tuner,c) +end +function c100000153.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local tun=Duel.GetMatchingGroup(c100000153.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nont=Duel.GetMatchingGroup(c100000153.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local nontmat=nont:FilterSelect(tp,c100000153.synfilter1,1,1,nil,6,tun,c) + local mat1=nontmat:GetFirst() + g:AddCard(mat1) + local lv1=mat1:GetSynchroLevel(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t + if mat1:GetFlagEffect(100000147)==0 then + t=tun:FilterSelect(tp,c100000153.synfilter2,1,1,nil,6+lv1,c) + else + t=tun:FilterSelect(tp,c100000153.synfilter2,1,1,nil,6-lv1,c) + end + g:Merge(t) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c100000153.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000153.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 c100000153.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end +function c100000153.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c100000153.spfilter(c,e,tp) + return c:IsCode(39823987) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000153.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000153.spfilter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000153.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000153.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c100000154.lua b/script/c100000154.lua new file mode 100644 index 00000000..e8e079c8 --- /dev/null +++ b/script/c100000154.lua @@ -0,0 +1,143 @@ +--地底のアラクネー +function c100000154.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + c100000154.tuner_filter=function(mc) return mc and mc:IsSetCard(0x301) end + c100000154.nontuner_filter=function(mc) return true end + c100000154.minntct=1 + c100000154.maxntct=1 + c100000154.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c100000154.syncon) + e1:SetOperation(c100000154.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --actlimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetOperation(c100000154.atkop) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000154,0)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c100000154.eqcon) + e3:SetTarget(c100000154.eqtg) + e3:SetOperation(c100000154.eqop) + c:RegisterEffect(e3) + --add setcode + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_ADD_SETCODE) + e4:SetValue(0x301) + c:RegisterEffect(e4) +end +function c100000154.tmatfilter(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c100000154.ntmatfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c100000154.synfilter1(c,lv,tuner,syncard) + local tlv=c:GetSynchroLevel(syncard) + if c:GetFlagEffect(100000147)==0 then + return tuner:IsExists(c100000154.synfilter2,1,nil,lv+tlv,syncard) + else + return tuner:IsExists(c100000154.synfilter2,1,nil,lv-tlv,syncard) + end +end +function c100000154.synfilter2(c,lv,syncard) + return c:GetSynchroLevel(syncard)==lv +end +function c100000154.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local tuner=Duel.GetMatchingGroup(c100000154.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c100000154.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return nontuner:IsExists(c100000154.synfilter1,1,nil,6,tuner,c) +end +function c100000154.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local tun=Duel.GetMatchingGroup(c100000154.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nont=Duel.GetMatchingGroup(c100000154.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local nontmat=nont:FilterSelect(tp,c100000154.synfilter1,1,1,nil,6,tun,c) + local mat1=nontmat:GetFirst() + g:AddCard(mat1) + local lv1=mat1:GetSynchroLevel(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t + if mat1:GetFlagEffect(100000147)==0 then + t=tun:FilterSelect(tp,c100000154.synfilter2,1,1,nil,6+lv1,c) + else + t=tun:FilterSelect(tp,c100000154.synfilter2,1,1,nil,6-lv1,c) + end + g:Merge(t) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c100000154.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c100000154.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c100000154.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c100000154.eqcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetLabelObject() + return ec==nil or ec:GetFlagEffect(100000154)==0 +end +function c100000154.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToChangeControler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c100000154.eqlimit(e,c) + return e:GetOwner()==c +end +function c100000154.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + tc:RegisterFlagEffect(100000154,RESET_EVENT+0x1fe0000,0,0) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000154.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(1) + tc:RegisterEffect(e2) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end diff --git a/script/c100000155.lua b/script/c100000155.lua new file mode 100644 index 00000000..bea42191 --- /dev/null +++ b/script/c100000155.lua @@ -0,0 +1,148 @@ +--氷結のフィッツジェラルド +function c100000155.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + c100000155.tuner_filter=function(mc) return mc and mc:IsSetCard(0x301) end + c100000155.nontuner_filter=function(mc) return true end + c100000155.minntct=1 + c100000155.maxntct=1 + c100000155.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c100000155.syncon) + e1:SetOperation(c100000155.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --actlimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetOperation(c100000155.atkop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000155,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetCondition(c100000155.spcon) + e3:SetTarget(c100000155.sptg) + e3:SetOperation(c100000155.spop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_BATTLED) + e4:SetCondition(c100000155.condition) + e4:SetOperation(c100000155.operation) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCode(EVENT_PHASE+PHASE_BATTLE) + e5:SetTarget(c100000155.destg) + e5:SetOperation(c100000155.desop) + c:RegisterEffect(e5) + --add setcode + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e6:SetCode(EFFECT_ADD_SETCODE) + e6:SetValue(0x301) + c:RegisterEffect(e6) +end +function c100000155.tmatfilter(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c100000155.ntmatfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c100000155.synfilter1(c,lv,tuner,syncard) + local tlv=c:GetSynchroLevel(syncard) + if c:GetFlagEffect(100000147)==0 then + return tuner:IsExists(c100000155.synfilter2,1,nil,lv+tlv,syncard) + else + return tuner:IsExists(c100000155.synfilter2,1,nil,lv-tlv,syncard) + end +end +function c100000155.synfilter2(c,lv,syncard) + return c:GetSynchroLevel(syncard)==lv +end +function c100000155.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local tuner=Duel.GetMatchingGroup(c100000155.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c100000155.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return nontuner:IsExists(c100000155.synfilter1,1,nil,5,tuner,c) +end +function c100000155.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local tun=Duel.GetMatchingGroup(c100000155.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nont=Duel.GetMatchingGroup(c100000155.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local nontmat=nont:FilterSelect(tp,c100000155.synfilter1,1,1,nil,5,tun,c) + local mat1=nontmat:GetFirst() + g:AddCard(mat1) + local lv1=mat1:GetSynchroLevel(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t + if mat1:GetFlagEffect(100000147)==0 then + t=tun:FilterSelect(tp,c100000155.synfilter2,1,1,nil,5+lv1,c) + else + t=tun:FilterSelect(tp,c100000155.synfilter2,1,1,nil,5-lv1,c) + end + g:Merge(t) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c100000155.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c100000155.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c100000155.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c100000155.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsLocation(LOCATION_GRAVE) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c100000155.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100000155.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end +function c100000155.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget() and Duel.GetAttackTarget():IsCode(94515289) +end +function c100000155.operation(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetAttacker() + tg:RegisterFlagEffect(100000155,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c100000155.cfilter(c) + return c:GetFlagEffect(100000155)>0 and c:IsFaceup() and c:IsDestructable() +end +function c100000155.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000155.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c100000155.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000155.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100000155.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100000156.lua b/script/c100000156.lua new file mode 100644 index 00000000..a789b8ad --- /dev/null +++ b/script/c100000156.lua @@ -0,0 +1,100 @@ +--漆黒のズムウォル +function c100000156.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + c100000156.tuner_filter=function(mc) return mc and mc:IsSetCard(0x301) end + c100000156.nontuner_filter=function(mc) return true end + c100000156.minntct=1 + c100000156.maxntct=1 + c100000156.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c100000156.syncon) + e1:SetOperation(c100000156.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --deckdes + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000156,0)) + e3:SetCategory(CATEGORY_DECKDES) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetCondition(c100000156.tgcon) + e3:SetTarget(c100000156.tgtg) + e3:SetOperation(c100000156.tgop) + c:RegisterEffect(e3) + --add setcode + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_ADD_SETCODE) + e4:SetValue(0x301) + c:RegisterEffect(e4) +end +function c100000156.tmatfilter(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c100000156.ntmatfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c100000156.synfilter1(c,lv,tuner,syncard) + local tlv=c:GetSynchroLevel(syncard) + if c:GetFlagEffect(100000147)==0 then + return tuner:IsExists(c100000156.synfilter2,1,nil,lv+tlv,syncard) + else + return tuner:IsExists(c100000156.synfilter2,1,nil,lv-tlv,syncard) + end +end +function c100000156.synfilter2(c,lv,syncard) + return c:GetSynchroLevel(syncard)==lv +end +function c100000156.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local tuner=Duel.GetMatchingGroup(c100000156.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c100000156.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return nontuner:IsExists(c100000156.synfilter1,1,nil,4,tuner,c) +end +function c100000156.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local tun=Duel.GetMatchingGroup(c100000156.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nont=Duel.GetMatchingGroup(c100000156.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local nontmat=nont:FilterSelect(tp,c100000156.synfilter1,1,1,nil,4,tun,c) + local mat1=nontmat:GetFirst() + g:AddCard(mat1) + local lv1=mat1:GetSynchroLevel(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t + if mat1:GetFlagEffect(100000147)==0 then + t=tun:FilterSelect(tp,c100000156.synfilter2,1,1,nil,4+lv1,c) + else + t=tun:FilterSelect(tp,c100000156.synfilter2,1,1,nil,4-lv1,c) + end + g:Merge(t) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c100000156.tgcon(e,c) + return Duel.GetAttackTarget()~=nil and Duel.GetAttackTarget():GetAttack()>e:GetHandler():GetBaseAttack() +end +function c100000156.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=math.floor((Duel.GetAttackTarget():GetAttack()-e:GetHandler():GetBaseAttack())/100) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,ct) +end +function c100000156.tgop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttackTarget():GetAttack()>e:GetHandler():GetBaseAttack() then + local ct=math.floor((Duel.GetAttackTarget():GetAttack()-e:GetHandler():GetBaseAttack())/100) + Duel.DiscardDeck(1-tp,ct,REASON_EFFECT) + end +end diff --git a/script/c100000157.lua b/script/c100000157.lua new file mode 100644 index 00000000..9d5ce74d --- /dev/null +++ b/script/c100000157.lua @@ -0,0 +1,28 @@ +--ブリザード・リザード +function c100000157.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000157,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c100000157.condition) + e1:SetTarget(c100000157.target) + e1:SetOperation(c100000157.operation) + c:RegisterEffect(e1) +end +function c100000157.condition(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(1-e:GetHandler():GetPreviousControler()) + return e:GetHandler():IsReason(REASON_BATTLE) +end +function c100000157.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(e:GetLabel()) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,e:GetLabel(),800) +end +function c100000157.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000158.lua b/script/c100000158.lua new file mode 100644 index 00000000..f0fe65ec --- /dev/null +++ b/script/c100000158.lua @@ -0,0 +1,44 @@ +--アイス・ミラー +function c100000158.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000158.target) + e1:SetOperation(c100000158.activate) + c:RegisterEffect(e1) +end +function c100000158.filter(c,e,tp) + return c:IsFaceup() and c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WATER) + and Duel.GetFirstMatchingCard(c100000158.filter2,tp,LOCATION_DECK,0,nil,c:GetCode(),e,tp) +end +function c100000158.filter2(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000158.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000158.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000158.filter,tp,LOCATION_MZONE,0,1,nil,e,tp)end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(100000158,0)) + Duel.SelectTarget(tp,c100000158.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000158.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.GetFirstMatchingCard(c100000158.filter2,tp,LOCATION_DECK,0,nil,tc:GetCode(),e,tp) + if Duel.SpecialSummonStep(sg,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sg:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end + end +end diff --git a/script/c100000159.lua b/script/c100000159.lua new file mode 100644 index 00000000..5b2a8bdd --- /dev/null +++ b/script/c100000159.lua @@ -0,0 +1,32 @@ +--アサルト・ガンドッグ +function c100000159.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000159,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c100000159.condition) + e1:SetTarget(c100000159.target) + e1:SetOperation(c100000159.operation) + c:RegisterEffect(e1) +end +function c100000159.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c100000159.filter(c,e,tp) + return c:IsCode(100000159) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000159.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000159.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000159.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,c100000159.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000160.lua b/script/c100000160.lua new file mode 100644 index 00000000..1502ccb2 --- /dev/null +++ b/script/c100000160.lua @@ -0,0 +1,50 @@ +--クリアー・キューブ +function c100000160.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_REMOVE_ATTRIBUTE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c100000160.ratg) + e1:SetValue(ATTRIBUTE_DARK) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000160,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCondition(c100000160.spcon) + e2:SetTarget(c100000160.sptg) + e2:SetOperation(c100000160.spop) + c:RegisterEffect(e2) +end +function c100000160.ratg(e) + return e:GetHandler() +end +function c100000160.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) +end +function c100000160.filter(c,e,tp) + return c:IsCode(100000160) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000160.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000160.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + if e:GetHandler():IsLocation(LOCATION_HAND) then + Duel.ConfirmCards(1-tp,e:GetHandler()) + Duel.ShuffleHand(tp) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000160.spop(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,c100000160.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000161.lua b/script/c100000161.lua new file mode 100644 index 00000000..d506054b --- /dev/null +++ b/script/c100000161.lua @@ -0,0 +1,45 @@ +--クリアー・ファントム +function c100000161.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_REMOVE_ATTRIBUTE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c100000161.ratg) + e1:SetValue(ATTRIBUTE_DARK) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000161,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DECKDES) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c100000161.condition) + e2:SetTarget(c100000161.target) + e2:SetOperation(c100000161.operation) + c:RegisterEffect(e2) +end +function c100000161.ratg(e) + return e:GetHandler() +end +function c100000161.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp + and c:GetReasonCard():IsRelateToBattle() and c:IsReason(REASON_BATTLE) + and c:GetBattlePosition()==POS_FACEUP_ATTACK +end +function c100000161.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local rc=e:GetHandler():GetReasonCard() + rc:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,rc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,3) +end +function c100000161.operation(e,tp,eg,ep,ev,re,r,rp) + local rc=e:GetHandler():GetReasonCard() + if rc:IsRelateToEffect(e) then + Duel.Destroy(rc,REASON_EFFECT) + end + Duel.DiscardDeck(1-tp,3,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000162.lua b/script/c100000162.lua new file mode 100644 index 00000000..7390291a --- /dev/null +++ b/script/c100000162.lua @@ -0,0 +1,40 @@ +--クリアー・レイジ・ゴーレム +function c100000162.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_REMOVE_ATTRIBUTE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c100000162.ratg) + e1:SetValue(ATTRIBUTE_DARK) + c:RegisterEffect(e1) + --DAMAGE + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000162,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c100000162.condition) + e2:SetTarget(c100000162.target) + e2:SetOperation(c100000162.operation) + c:RegisterEffect(e2) +end +function c100000162.ratg(e) + return e:GetHandler() +end +function c100000162.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetAttackTarget()==nil +end +function c100000162.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + local dam=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)*300 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100000162.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000163.lua b/script/c100000163.lua new file mode 100644 index 00000000..8227ac36 --- /dev/null +++ b/script/c100000163.lua @@ -0,0 +1,60 @@ +--クリアー・ヴィシャス・ナイト +function c100000163.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_REMOVE_ATTRIBUTE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c100000163.ratg) + e1:SetValue(ATTRIBUTE_DARK) + c:RegisterEffect(e1) + --summon with 1 tribute + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000163,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c100000163.otcon) + e2:SetOperation(c100000163.otop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c100000163.adcon) + e3:SetValue(c100000163.adval) + c:RegisterEffect(e3) +end +function c100000163.ratg(e) + return e:GetHandler() +end +function c100000163.otcon(e,c) + if c==nil then return true end + return c:GetLevel()>6 and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)~=0 and Duel.GetTributeCount(c)>0 +end +function c100000163.otop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.GetTributeGroup(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=g:Select(tp,1,1,nil) + c:SetMaterial(sg) + Duel.Release(sg, REASON_SUMMON+REASON_MATERIAL) +end +function c100000163.filter(c) + return not c:IsStatus(STATUS_LEAVE_CONFIRMED) +end +function c100000163.adcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100000163.filter,e:GetHandler():GetControler(),LOCATION_ONFIELD+LOCATION_HAND,0,1,e:GetHandler()) +end +function c100000163.adval(e,c) + local g=Duel.GetMatchingGroup(Card.IsFaceup,e:GetHandler():GetControler(),0,LOCATION_MZONE,e:GetHandler()) + if g:GetCount()==0 then + return 0 + else + local tg,val=g:GetMaxGroup(Card.GetBaseAttack) + return val + end +end \ No newline at end of file diff --git a/script/c100000164.lua b/script/c100000164.lua new file mode 100644 index 00000000..a22ad42e --- /dev/null +++ b/script/c100000164.lua @@ -0,0 +1,66 @@ +--クリアー・ウォール +function c100000164.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000164.sdcon) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c100000164.indtg) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100000164,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_DAMAGE) + e4:SetCondition(c100000164.dscon) + e4:SetTarget(c100000164.dstg) + e4:SetOperation(c100000164.dsop) + c:RegisterEffect(e4) + -- + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e5:SetCondition(c100000164.con) + e5:SetOperation(c100000164.activate) + c:RegisterEffect(e5) +end +function c100000164.sdcon(e) + return not Duel.IsEnvironment(33900648) +end +function c100000164.indtg(e,c) + return c:IsCode(97811903) or c:IsCode(82044279) or c:IsSetCard(0x306) +end +function c100000164.dscon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_BATTLE)>0 and ep==tp +end +function c100000164.dstg(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 c100000164.dsop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end +function c100000164.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)<=1000 +end +function c100000164.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end \ No newline at end of file diff --git a/script/c100000166.lua b/script/c100000166.lua new file mode 100644 index 00000000..1df1c81e --- /dev/null +++ b/script/c100000166.lua @@ -0,0 +1,81 @@ +--酸のラスト・マシン・ウィルス +function c100000166.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_TOHAND) + e1:SetCost(c100000166.cost) + e1:SetTarget(c100000166.target) + e1:SetOperation(c100000166.activate) + c:RegisterEffect(e1) +end +function c100000166.costfilter(c) + return c:IsAttribute(ATTRIBUTE_WATER) +end +function c100000166.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c100000166.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c100000166.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c100000166.tgfilter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsDestructable() +end +function c100000166.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c100000166.tgfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100000166.filter(c) + return c:IsRace(RACE_MACHINE) +end +function c100000166.activate(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE+LOCATION_HAND) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + local dg=conf:Filter(c100000166.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DRAW) + e1:SetOperation(c100000166.desop) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c100000166.turncon) + e2:SetOperation(c100000166.turnop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e2,tp) + e2:SetLabelObject(e1) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,3) + c100000166[e:GetHandler()]=e2 +end +function c100000166.desop(e,tp,eg,ep,ev,re,r,rp) + if ep==e:GetOwnerPlayer() then return end + local hg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND) + if hg:GetCount()==0 then return end + Duel.ConfirmCards(1-ep,hg) + local dg=hg:Filter(c100000166.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(ep) +end +function c100000166.turncon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c100000166.turnop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + e:GetHandler():SetTurnCounter(ct) + if ct==3 then + e:GetLabelObject():Reset() + e:GetOwner():ResetFlagEffect(1082946) + end +end diff --git a/script/c100000167.lua b/script/c100000167.lua new file mode 100644 index 00000000..d16f810c --- /dev/null +++ b/script/c100000167.lua @@ -0,0 +1,29 @@ +--奇跡の穿孔 +function c100000167.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000167.target) + e1:SetOperation(c100000167.activate) + c:RegisterEffect(e1) +end +function c100000167.tgfilter(c) + return c:IsRace(RACE_ROCK) and c:IsAbleToGrave() +end +function c100000167.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000167.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c100000167.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000167.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()==0 then return end + Duel.SendtoGrave(g,REASON_EFFECT) + Duel.BreakEffect() + Duel.ShuffleDeck(tp) + if Duel.IsPlayerCanDraw(tp,1) then + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c100000168.lua b/script/c100000168.lua new file mode 100644 index 00000000..b0732553 --- /dev/null +++ b/script/c100000168.lua @@ -0,0 +1,27 @@ +--ゼアル・カタパルト +function c100000168.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000168.target) + e1:SetOperation(c100000168.activate) + c:RegisterEffect(e1) +end +function c100000168.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsSetCard(0x7e) +end +function c100000168.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_HAND) and c100000168.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000168.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,tp,LOCATION_HAND) +end +function c100000168.activate(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 tc=Duel.SelectTarget(tp,c100000168.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) +end \ No newline at end of file diff --git a/script/c100000169.lua b/script/c100000169.lua new file mode 100644 index 00000000..b93d12db --- /dev/null +++ b/script/c100000169.lua @@ -0,0 +1,62 @@ +--爆破紋章 +function c100000169.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(c100000169.target) + e1:SetOperation(c100000169.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) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000169,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c100000169.damcon) + e3:SetTarget(c100000169.damtg) + e3:SetOperation(c100000169.damop) + c:RegisterEffect(e3) +end +function c100000169.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 c100000169.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 c100000169.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + if not ec then return end + e:SetLabelObject(ec) + e:SetLabel(ec:GetPreviousControler()) + return c:IsReason(REASON_LOST_TARGET) and ec:IsReason(REASON_DESTROY) +end +function c100000169.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetLabelObject():GetAttack()/2 + if dam<0 then dam=0 end + Duel.SetTargetPlayer(e:GetLabel()) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,e:GetLabel(),dam) +end +function c100000169.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000170.lua b/script/c100000170.lua new file mode 100644 index 00000000..94e17f8b --- /dev/null +++ b/script/c100000170.lua @@ -0,0 +1,72 @@ +--捨て猫 +function c100000170.initial_effect(c) + --target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetCondition(c100000170.atcon) + e1:SetValue(c100000170.atlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000170,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c100000170.descon) + e2:SetTarget(c100000170.destg) + e2:SetOperation(c100000170.desop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000170,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c100000170.sptg) + e3:SetOperation(c100000170.spop) + c:RegisterEffect(e3) +end +function c100000170.atcon(e,c) + return e:GetHandler():IsAttackPos() +end +function c100000170.atlimit(e,c) + return c~=e:GetHandler() +end +function c100000170.filter(c,e,tp) + return c:IsCode(100000170) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000170.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000170.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000170.spop(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,c100000170.filter,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 c100000170.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) +end +function c100000170.filter2(c,e,tp) + return c:IsCode(100000177) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000170.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000170.filter2,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000170.desop(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,c100000170.filter2,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000171.lua b/script/c100000171.lua new file mode 100644 index 00000000..b2bf3ed5 --- /dev/null +++ b/script/c100000171.lua @@ -0,0 +1,47 @@ +--捨て猫娘 +function c100000171.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000171.condition) + e1:SetCost(c100000171.cost) + e1:SetTarget(c100000171.target) + e1:SetOperation(c100000171.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c100000171.con) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c100000171.con(e,c) + return e:GetHandler():IsAttackPos() +end +function c100000171.costfilter(c) + return c:GetLevel()==1 and c:IsRace(RACE_BEAST) +end +function c100000171.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c100000171.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c100000171.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c100000171.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp +end +function c100000171.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c100000171.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000172.lua b/script/c100000172.lua new file mode 100644 index 00000000..ff4f073f --- /dev/null +++ b/script/c100000172.lua @@ -0,0 +1,56 @@ +--キャット・ガール +function c100000172.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000172,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c100000172.spcost) + e1:SetTarget(c100000172.target) + e1:SetOperation(c100000172.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) + Duel.AddCustomActivityCounter(100000172,ACTIVITY_SPSUMMON,c100000172.counterfilter) +end +function c100000172.counterfilter(c) + return c:IsAttackBelow(2000) +end +function c100000172.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(100000172,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c100000172.splimit) + e1:SetLabelObject(e) + Duel.RegisterEffect(e1,tp) +end +function c100000172.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:GetAttack()>2000 and e:GetLabelObject()~=se +end +function c100000172.filter(c,e,tp) + return c:IsCode(100000171) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000172.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000172.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_HAND) +end +function c100000172.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,c100000172.filter,tp,LOCATION_GRAVE+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 diff --git a/script/c100000173.lua b/script/c100000173.lua new file mode 100644 index 00000000..2beeaffd --- /dev/null +++ b/script/c100000173.lua @@ -0,0 +1,26 @@ +--猫招き +function c100000173.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000173.target) + e1:SetOperation(c100000173.activate) + c:RegisterEffect(e1) +end +function c100000173.filter(c) + return (c:IsSetCard(0x1305) or c:IsSetCard(0x2305)) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c100000173.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000173.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100000173.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100000173.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100000174.lua b/script/c100000174.lua new file mode 100644 index 00000000..24200996 --- /dev/null +++ b/script/c100000174.lua @@ -0,0 +1,49 @@ +--猫集会 +function c100000174.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000174,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000174.condition) + e2:SetTarget(c100000174.target) + e2:SetOperation(c100000174.operation) + c:RegisterEffect(e2) +end +c100000174.collection={ + [11439455]=true;[14878871]=true;[52346240]=true;[32933942]=true;[511001115]=true; + [5506791]=true;[8634636]=true;[25531465]=true;[24140059]=true;[77790021]=true; + [96501677]=true;[56399890]=true;[2729285]=true;[95841282]=true;[43352213]=true; + [1761063]=true;[11021521]=true;[51777272]=true;[84224627]=true; +} +function c100000174.cfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x305) or c100000174.collection[c:GetCode()]) +end +function c100000174.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000174.cfilter,1,nil,tp) +end +function c100000174.filter(c,e,tp) + return (c:IsSetCard(0x305) or c100000174.collection[c:GetCode()]) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000174.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000174.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000174.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000174.filter,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 diff --git a/script/c100000175.lua b/script/c100000175.lua new file mode 100644 index 00000000..63ac5ac0 --- /dev/null +++ b/script/c100000175.lua @@ -0,0 +1,23 @@ +--キャット・ワールド +function c100000175.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --ad up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c100000175.tg) + e2:SetValue(c100000175.val) + c:RegisterEffect(e2) +end +function c100000175.tg(e,c) + return c:IsFaceup() and (c:IsSetCard(0x1305) or c:IsSetCard(0x2305)) +end +function c100000175.val(e,c) + return c:GetBaseAttack() +end diff --git a/script/c100000176.lua b/script/c100000176.lua new file mode 100644 index 00000000..6cbb8ac2 --- /dev/null +++ b/script/c100000176.lua @@ -0,0 +1,33 @@ +--怪猫変化 +function c100000176.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c100000176.condition) + e1:SetTarget(c100000176.target) + e1:SetOperation(c100000176.activate) + c:RegisterEffect(e1) +end +function c100000176.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsCode(100000170) +end +function c100000176.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000176.cfilter,1,nil,tp) +end +function c100000176.filter(c,e,tp) + return c:IsCode(100000177) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000176.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000176.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000176.activate(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,c100000176.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000177.lua b/script/c100000177.lua new file mode 100644 index 00000000..8e4341bf --- /dev/null +++ b/script/c100000177.lua @@ -0,0 +1,61 @@ +--化け猫 +function c100000177.initial_effect(c) + --destrroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000177,0)) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c100000177.descon) + e1:SetTarget(c100000177.destg) + e1:SetOperation(c100000177.desop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000177,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c100000177.target) + e2:SetOperation(c100000177.operation) + c:RegisterEffect(e2) +end +function c100000177.descon(e,tp,eg,ep,ev,re,r,rp) + if not re then return false end + local rc=re:GetHandler() + return rc:IsCode(100000170) +end +function c100000177.defilter(c) + return c:IsFaceup() and c:IsLevelBelow(4) and c:IsDestructable() +end +function c100000177.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c100000177.defilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100000177.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100000177.defilter,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct>0 then + Duel.Damage(1-tp,ct*800,REASON_EFFECT) + end +end +function c100000177.filter(c) + return (c:IsCode(100000170) or c:IsCode(100000171)) and c:IsAbleToHand() +end +function c100000177.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000177.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000177.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c100000177.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c100000177.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c100000178.lua b/script/c100000178.lua new file mode 100644 index 00000000..3dacb296 --- /dev/null +++ b/script/c100000178.lua @@ -0,0 +1,29 @@ +--ツイン・テール・キャットレディ +function c100000178.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,1,3) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(100000178,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c100000178.cost) + e1:SetOperation(c100000178.operation) + c:RegisterEffect(e1) +end +function c100000178.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100000178.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c100000179.lua b/script/c100000179.lua new file mode 100644 index 00000000..7895ac07 --- /dev/null +++ b/script/c100000179.lua @@ -0,0 +1,34 @@ +--キャット・ガール・マジシャン +function c100000179.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(100000179,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c100000179.cost) + e1:SetOperation(c100000179.operation) + c:RegisterEffect(e1) +end +function c100000179.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100000179.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(e:GetHandler():GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e2) +end diff --git a/script/c100000180.lua b/script/c100000180.lua new file mode 100644 index 00000000..92832ecb --- /dev/null +++ b/script/c100000180.lua @@ -0,0 +1,32 @@ +--キャットフード +function c100000180.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000180.cost) + e1:SetTarget(c100000180.target) + e1:SetOperation(c100000180.activate) + c:RegisterEffect(e1) +end +function c100000180.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,100000170) end + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,100000170) + Duel.Release(g,REASON_COST) +end +function c100000180.filter(c,e,tp) + return c:IsCode(100000171) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000180.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000180.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000180.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000180.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c100000181.lua b/script/c100000181.lua new file mode 100644 index 00000000..f1eb3a80 --- /dev/null +++ b/script/c100000181.lua @@ -0,0 +1,29 @@ +--猫だまし +function c100000181.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100000181.condition) + e1:SetTarget(c100000181.target) + e1:SetOperation(c100000181.activate) + c:RegisterEffect(e1) +end +function c100000181.filter(c) + return c:IsFaceup() and c:IsRace(RACE_BEAST) +end +function c100000181.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.IsExistingMatchingCard(c100000181.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c100000181.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tg,1,0,0) +end +function c100000181.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c100000182.lua b/script/c100000182.lua new file mode 100644 index 00000000..6246bf05 --- /dev/null +++ b/script/c100000182.lua @@ -0,0 +1,38 @@ +--猫に小判 +function c100000182.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c100000182.condition) + e1:SetOperation(c100000182.activate) + c:RegisterEffect(e1) +end +function c100000182.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (d~=nil and a:GetControler()==tp and a:IsRace(RACE_BEAST) and a:IsRelateToBattle()) + or (d~=nil and d:GetControler()==tp and d:IsFaceup() and d:IsRace(RACE_BEAST) and d:IsRelateToBattle()) +end +function c100000182.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a:IsRelateToBattle() or not d:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetOwnerPlayer(tp) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + if a:GetControler()==tp then + e1:SetValue(d:GetAttack()/2) + a:RegisterEffect(e1) + else + e1:SetValue(a:GetAttack()/2) + d:RegisterEffect(e1) + end +end diff --git a/script/c100000183.lua b/script/c100000183.lua new file mode 100644 index 00000000..de70bc8c --- /dev/null +++ b/script/c100000183.lua @@ -0,0 +1,54 @@ +--マタタビ・タービン +function c100000183.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(c100000183.target) + e1:SetOperation(c100000183.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(c100000183.eqlimit) + c:RegisterEffect(e2) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(1200) + c:RegisterEffect(e3) + --cannot attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetValue(c100000183.vala) + c:RegisterEffect(e4) +end +function c100000183.eqlimit(e,c) + return c:IsSetCard(0x305) +end +function c100000183.filter(c) + return c:IsFaceup() and c:IsSetCard(0x305) +end +function c100000183.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100000183.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000183.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c100000183.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000183.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 c100000183.vala(e,c) + return c:GetControler()~=e:GetHandlerPlayer() +end diff --git a/script/c100000185.lua b/script/c100000185.lua new file mode 100644 index 00000000..d0668134 --- /dev/null +++ b/script/c100000185.lua @@ -0,0 +1,85 @@ +--好敵手の絆 +function c100000185.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL+CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_DISABLED) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c100000185.target) + e1:SetOperation(c100000185.operation) + c:RegisterEffect(e1) +end +function c100000185.filter(c,tc) + return c:IsControlerCanBeChanged() +end +function c100000185.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) + and eg:GetFirst():GetControler()==e:GetHandler():GetControler() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c100000185.filter,tp,0,LOCATION_MZONE,1,1,nil,Duel.GetAttackTarget()) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c100000185.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c100000185.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c100000185.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c100000185.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler() + return tc and tc:IsReason(REASON_DESTROY) +end +function c100000185.desop2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.GetControl(tc,tc:GetOwner()) + end +end +function c100000185.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 Duel.GetControl(tc,tp) then + if c:IsLocation(LOCATION_SZONE) and not tc:IsImmuneToEffect(e) and tc:IsAbleToChangeControler() then + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000185.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c100000185.descon) + e2:SetOperation(c100000185.desop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --Control + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c100000185.descon2) + e3:SetOperation(c100000185.desop2) + e3:SetLabelObject(tc) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + --cannot attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_CANNOT_ATTACK) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + end + end +end \ No newline at end of file diff --git a/script/c100000186.lua b/script/c100000186.lua new file mode 100644 index 00000000..53f2fcd8 --- /dev/null +++ b/script/c100000186.lua @@ -0,0 +1,99 @@ +--スフィア・フィールド +function c100000186.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --XYZ + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000186,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c100000186.target) + e2:SetOperation(c100000186.operation) + c:RegisterEffect(e2) +end +function c100000186.filter(c,e) + return c:IsType(TYPE_MONSTER) and not c:IsImmuneToEffect(e) +end +function c100000186.lvfilter(c,lv) + return c:GetLevel()==lv +end +function c100000186.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local g1=Duel.GetMatchingGroup(c100000186.filter,tp,LOCATION_HAND,0,nil,e) + local g2=Duel.GetMatchingGroup(c100000186.filter,tp,LOCATION_HAND,0,nil,e) + local gg=g1:GetFirst() + local lv=0 + local mg1=Group.CreateGroup() + local mg2=nil + while gg do + lv=gg:GetLevel() + mg2=g2:Filter(c100000186.lvfilter,gg,lv) + if mg2:GetCount()>0 then + mg1:Merge(mg2) + mg1:AddCard(gg) + end + gg=g1:GetNext() + end + if mg1:GetCount()>1 and Duel.IsExistingMatchingCard(c100000186.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) then + return true + else + return false + end + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000186.xyzfilter(c,e,tp) + return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,true,false) +end +function c100000186.operation(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + if not e:GetHandler():IsRelateToEffect(e) then return end + local g1=Duel.GetMatchingGroup(c100000186.filter,tp,LOCATION_HAND,0,nil,e) + local g2=Duel.GetMatchingGroup(c100000186.filter,tp,LOCATION_HAND,0,nil,e) + local gg=g1:GetFirst() + local lv=0 + local mg1=Group.CreateGroup() + local mg2=nil + while gg do + lv=gg:GetLevel() + mg2=g2:Filter(c100000186.lvfilter,gg,lv) + if mg2:GetCount()>0 then + mg1:Merge(mg2) + mg1:AddCard(gg) + end + gg=g1:GetNext() + end + if mg1:GetCount()>1 and Duel.IsExistingMatchingCard(c100000186.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) then + local tg1=mg1:Select(tp,1,1,nil):GetFirst() + local tg2=mg1:FilterSelect(tp,c100000186.lvfilter,1,1,tg1,tg1:GetLevel()) + tg2:AddCard(tg1) + if tg2:GetCount()<2 then return end + local xyzg=Duel.GetMatchingGroup(c100000186.xyzfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:RandomSelect(tp,1):GetFirst() + if Duel.SpecialSummonStep(xyz,SUMMON_TYPE_XYZ,tp,tp,true,false,POS_FACEUP) then + --destroy + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c100000186.descon) + e1:SetReset(RESET_EVENT+0xff0000) + xyz:RegisterEffect(e1) + Duel.Overlay(xyz,tg2) + Duel.SpecialSummonComplete() + end + end + end +end +function c100000186.descon(e) + return e:GetHandler():GetOverlayCount()==0 and e:GetHandler():IsDestructable() and Duel.GetCurrentChain()==0 +end diff --git a/script/c100000187.lua b/script/c100000187.lua new file mode 100644 index 00000000..4dd89278 --- /dev/null +++ b/script/c100000187.lua @@ -0,0 +1,29 @@ +--奈落の閃光 +function c100000187.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100000187.condition) + e1:SetTarget(c100000187.target) + e1:SetOperation(c100000187.activate) + c:RegisterEffect(e1) +end +function c100000187.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetAttack()>=2000 +end +function c100000187.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tg,1,0,0) +end +function c100000187.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() and Duel.NegateAttack() then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c100000188.lua b/script/c100000188.lua new file mode 100644 index 00000000..25be9b5a --- /dev/null +++ b/script/c100000188.lua @@ -0,0 +1,34 @@ +--奈落に蠢く者 +function c100000188.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100000188.condition) + e1:SetTarget(c100000188.target) + e1:SetOperation(c100000188.activate) + c:RegisterEffect(e1) +end +function c100000188.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetAttack()>=2000 and tp~=Duel.GetTurnPlayer() +end +function c100000188.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + local dam=tg:GetAttack() + Duel.SetTargetParam(dam/2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam/2) +end +function c100000188.activate(e,tp,eg,ep,ev,re,r,rp) + local tg,d=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS,CHAININFO_TARGET_PARAM) + local tc=tg:GetFirst() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack() then + Duel.Damage(1-tp,d,REASON_EFFECT) + end + end +end diff --git a/script/c100000189.lua b/script/c100000189.lua new file mode 100644 index 00000000..0d207062 --- /dev/null +++ b/script/c100000189.lua @@ -0,0 +1,27 @@ +--奈落の太陽 +function c100000189.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100000189.condition) + e1:SetTarget(c100000189.target) + e1:SetOperation(c100000189.activate) + c:RegisterEffect(e1) +end +function c100000189.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetAttack()>=2000 and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c100000189.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + local dam=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)*800 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100000189.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000190.lua b/script/c100000190.lua new file mode 100644 index 00000000..82f16df9 --- /dev/null +++ b/script/c100000190.lua @@ -0,0 +1,28 @@ +--ダイスロット・セブン +function c100000190.initial_effect(c) + --lv change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000190,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c100000190.target) + e1:SetOperation(c100000190.activate) + c:RegisterEffect(e1) +end +function c100000190.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c100000190.activate(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.TossDice(tp,1) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(d) + c:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100000191.lua b/script/c100000191.lua new file mode 100644 index 00000000..f9570632 --- /dev/null +++ b/script/c100000191.lua @@ -0,0 +1,34 @@ +--トリプル・エース +function c100000191.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000191.target) + e1:SetOperation(c100000191.operation) + c:RegisterEffect(e1) +end +function c100000191.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==1 + and Duel.IsExistingMatchingCard(c100000191.cfilter,tp,LOCATION_HAND,0,2,c,c:GetCode(),e,tp) +end +function c100000191.cfilter(c,code,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==1 and c:IsCode(code) +end +function c100000191.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c100000191.filter,tp,LOCATION_HAND,0,3,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_HAND) +end +function c100000191.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c100000191.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g1:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c100000191.cfilter,tp,LOCATION_HAND,0,2,2,g1:GetFirst(),g1:GetFirst():GetCode(),e,tp) + g1:Merge(g2) + Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000192.lua b/script/c100000192.lua new file mode 100644 index 00000000..a0289ecc --- /dev/null +++ b/script/c100000192.lua @@ -0,0 +1,38 @@ +--ドリーム・ダイス +function c100000192.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000192.con) + e1:SetTarget(c100000192.target) + e1:SetOperation(c100000192.operation) + c:RegisterEffect(e1) +end +function c100000192.con(e) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)~=0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 +end +function c100000192.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c100000192.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.TossDice(tp,1) + local c=e:GetHandler() + local sg=nil + if d==6 then + sg=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + else + sg=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + end + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end +end diff --git a/script/c100000193.lua b/script/c100000193.lua new file mode 100644 index 00000000..a82dff94 --- /dev/null +++ b/script/c100000193.lua @@ -0,0 +1,64 @@ +--太陽の天秤 +function c100000193.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --DESTROY + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000193.con) + e2:SetTarget(c100000193.target) + e2:SetOperation(c100000193.operation) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000193,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c100000193.damcon) + e3:SetTarget(c100000193.damtg) + e3:SetOperation(c100000193.damop) + c:RegisterEffect(e3) +end +function c100000193.con(e) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)~=0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 +end +function c100000193.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,nil,0,0) +end +function c100000193.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.TossDice(tp,1) + local c=e:GetHandler() + local sg=nil + if d==6 then + sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil):Select(tp,1,1,nil) + end + Duel.Destroy(sg,REASON_EFFECT) +end +function c100000193.damcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler() + return tc and tc:IsReason(REASON_DESTROY) +end +function c100000193.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c100000193.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end + diff --git a/script/c100000194.lua b/script/c100000194.lua new file mode 100644 index 00000000..47f82f81 --- /dev/null +++ b/script/c100000194.lua @@ -0,0 +1,89 @@ +--ダイス・クライシス +function c100000194.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL+CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c100000194.condition) + e1:SetTarget(c100000194.target) + e1:SetOperation(c100000194.operation) + c:RegisterEffect(e1) +end +function c100000194.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c100000194.filter(c,tc) + return c:IsControlerCanBeChanged() +end +function c100000194.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c100000194.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c100000194.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return tc and eg:IsContains(tc) +end +function c100000194.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c100000194.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler() + return tc +end +function c100000194.desop2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.GetControl(tc,tc:GetOwner()) + end +end +function c100000194.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.TossDice(tp,1) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if d==6 then + if tc:IsFaceup() and tc:IsRelateToEffect(e) and c:IsLocation(LOCATION_SZONE) + and not tc:IsImmuneToEffect(e) then + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000194.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c100000194.descon) + e2:SetOperation(c100000194.desop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --Control + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_SET_CONTROL) + e3:SetValue(tp) + e3:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e3) + --cannot attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_SET_ATTACK) + e4:SetValue(0) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + end + end +end \ No newline at end of file diff --git a/script/c100000195.lua b/script/c100000195.lua new file mode 100644 index 00000000..189f0a66 --- /dev/null +++ b/script/c100000195.lua @@ -0,0 +1,32 @@ +--マジェスティック・ジェスター +function c100000195.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000195,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c100000195.descon) + e1:SetTarget(c100000195.destg) + e1:SetOperation(c100000195.desop) + c:RegisterEffect(e1) +end +function c100000195.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()~=nil +end +function c100000195.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c100000195.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttackTarget() + if c==tc then tc=Duel.GetAttacker() end + if not tc:IsRelateToBattle() then return end + local d=Duel.TossDice(tp,1) + if d==6 then + if c:IsFaceup() and c:IsLocation(LOCATION_MZONE) then Duel.Destroy(tc,REASON_EFFECT) end + else + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c100000196.lua b/script/c100000196.lua new file mode 100644 index 00000000..b62f20b8 --- /dev/null +++ b/script/c100000196.lua @@ -0,0 +1,58 @@ +--アトリビュート・マスタリー +function c100000196.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(c100000196.target) + e1:SetOperation(c100000196.operation) + c:RegisterEffect(e1) + --race + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c100000196.destg) + e2:SetOperation(c100000196.desop) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) + --Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c100000196.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.Hint(HINT_SELECTMSG,tp,562) + local rc=Duel.AnnounceAttribute(tp,1,0xffff) + e:GetLabelObject():SetLabel(rc) + e:GetHandler():SetHint(CHINT_ATTRIBUTE,rc) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000196.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c100000196.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local q=e:GetLabel() + local ec=e:GetHandler():GetEquipTarget() + local bc=ec:GetBattleTarget() + if chk==0 then return ec and bc and bc:IsFaceup() and bc:IsAttribute(q) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) +end +function c100000196.desop(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + local bc=ec:GetBattleTarget() + if ec and bc and bc:IsRelateToBattle() then Duel.Destroy(bc,REASON_EFFECT) end +end diff --git a/script/c100000197.lua b/script/c100000197.lua new file mode 100644 index 00000000..a054fda5 --- /dev/null +++ b/script/c100000197.lua @@ -0,0 +1,64 @@ +--アトリビュート・ボム +function c100000197.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(c100000197.target) + e1:SetOperation(c100000197.operation) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c100000197.damcon) + e2:SetTarget(c100000197.destg) + e2:SetOperation(c100000197.desop) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) + --Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c100000197.target(e,tp,eg,ep,ev,re,r,rp,chk) + 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.Hint(HINT_SELECTMSG,tp,562) + local rc=Duel.AnnounceAttribute(tp,1,0xffff) + e:GetLabelObject():SetLabel(rc) + e:GetHandler():SetHint(CHINT_ATTRIBUTE,rc) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000197.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 c100000197.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + local rc=ec:GetReasonCard() + local q=e:GetLabel() + return c:IsReason(REASON_LOST_TARGET) and ec:IsReason(REASON_BATTLE) and rc:IsAttribute(q) +end +function c100000197.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c100000197.desop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000198.lua b/script/c100000198.lua new file mode 100644 index 00000000..e0c1dcb5 --- /dev/null +++ b/script/c100000198.lua @@ -0,0 +1,57 @@ +--属性変化-アトリビュート・カメレオン +function c100000198.initial_effect(c) + --Activate to Grave + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000198.target) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c100000198.atcon) + e2:SetTarget(c100000198.attg) + e2:SetOperation(c100000198.atop) + c:RegisterEffect(e2) +end +function c100000198.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return true end + if c100000198.atcon(e,tp,eg,ep,ev,re,r,rp) and c100000198.attg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c100000198.atop) + c100000198.attg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c100000198.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c100000198.attg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and e:GetHandler():GetFlagEffect(100000198)==0 end + e:GetHandler():RegisterFlagEffect(100000198,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c100000198.atop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,562) + local rc=Duel.AnnounceAttribute(tp,1,0xffff-tc:GetAttribute()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetValue(rc) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100000199.lua b/script/c100000199.lua new file mode 100644 index 00000000..b6107fc5 --- /dev/null +++ b/script/c100000199.lua @@ -0,0 +1,53 @@ +--狂戦士の魂 +function c100000199.initial_effect(c) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE+CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c100000199.condition) + e2:SetCost(c100000199.cost) + e2:SetTarget(c100000199.target) + e2:SetOperation(c100000199.activate) + c:RegisterEffect(e2) +end +function c100000199.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000199.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c100000199.filter(c) + return c:IsDirectAttacked() and c:IsAttackBelow(1500) +end +function c100000199.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000199.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000199.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000199.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100000199.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + while Duel.Draw(tp,1,REASON_EFFECT)~=0 and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) do + local gc=Duel.GetOperatedGroup():GetFirst() + Duel.ConfirmCards(tp,gc) + if gc and gc:IsType(TYPE_MONSTER) then + if Duel.SendtoGrave(gc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + if Duel.GetLP(1-tp)<=0 and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)<=0 then + return Duel.SetLP(tp,0) + end + end + else return Duel.ShuffleHand(tp)end + end +end diff --git a/script/c10000020.lua b/script/c10000020.lua index 8edc0777..e76e6bb7 100644 --- a/script/c10000020.lua +++ b/script/c10000020.lua @@ -64,16 +64,16 @@ function c10000020.initial_effect(c) e9:SetCode(EVENT_SPSUMMON_SUCCESS) c:RegisterEffect(e9) end -function c10000020.ttcon(e,c) +function c10000020.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c10000020.ttop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,3,3) c:SetMaterial(g) Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) end -function c10000020.setcon(e,c) +function c10000020.setcon(e,c,minc) if not c then return true end return false end diff --git a/script/c100000200.lua b/script/c100000200.lua new file mode 100644 index 00000000..3306ce7b --- /dev/null +++ b/script/c100000200.lua @@ -0,0 +1,68 @@ +--ギミック・パペット-ベビーフェイス +function c100000200.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c100000200.condition) + e1:SetOperation(c100000200.operation) + c:RegisterEffect(e1) +end +function c100000200.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) +end +function c100000200.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local a=Duel.GetAttacker() + local t=Duel.GetAttackTarget() + --revive + if c==a then + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetLabelObject(t) + e2:SetCondition(c100000200.spcon) + e2:SetCost(c100000200.cost) + e2:SetOperation(c100000200.opera) + e2:SetReset(RESET_EVENT+RESET_TOFIELD+RESET_REMOVE+RESET_TODECK+RESET_TOHAND) + c:RegisterEffect(e2) + end + if c==t then + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetLabelObject(a) + e2:SetCondition(c100000200.spcon) + e2:SetCost(c100000200.cost) + e2:SetOperation(c100000200.opera) + e2:SetReset(RESET_EVENT+RESET_TOFIELD+RESET_REMOVE+RESET_TODECK+RESET_TOHAND) + c:RegisterEffect(e2) + end +end +function c100000200.filter(c,tc) + return c==tc +end +function c100000200.spcon(e,c) + local c=e:GetHandler() + local tc=e:GetLabelObject() + if c==nil then return true end + return Duel.GetLocationCount(1-c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000200.filter,tp,0,LOCATION_GRAVE,1,nil,tc) +end +function c100000200.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100000200.opera(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + if tc:IsLocation(LOCATION_GRAVE) then + Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000206.lua b/script/c100000206.lua new file mode 100644 index 00000000..1a813ef5 --- /dev/null +++ b/script/c100000206.lua @@ -0,0 +1,34 @@ +--ギミック・パペット-スケアクロウ +function c100000206.initial_effect(c) + --target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetTarget(c100000206.tglimit) + e1:SetValue(1) + c:RegisterEffect(e1) + --to defence + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000206,0)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetCondition(c100000206.poscon) + e3:SetOperation(c100000206.posop) + c:RegisterEffect(e3) +end +function c100000206.tglimit(e,c) + return c~=e:GetHandler() +end +function c100000206.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c100000206.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end \ No newline at end of file diff --git a/script/c100000209.lua b/script/c100000209.lua new file mode 100644 index 00000000..5a321c2a --- /dev/null +++ b/script/c100000209.lua @@ -0,0 +1,55 @@ +--リペア・パペット +function c100000209.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c100000209.target) + e1:SetOperation(c100000209.activate) + c:RegisterEffect(e1) +end +function c100000209.cfilter(c,e,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) + and c:IsLevelBelow(4) and Duel.IsExistingMatchingCard(c100000209.filter,tp,LOCATION_DECK,0,1,nil,c:GetCode(),e,tp) + and (c:IsSetCard(0x83) or c:IsCode(3167573) or c:IsCode(71564150) or c:IsCode(41442341) + or c:IsCode(54098121) or c:IsCode(51119924)) +end +function c100000209.filter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000209.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and eg:IsExists(c100000209.cfilter,1,nil,e,tp) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000209.cfilter2(c,e,tp) + return c:IsLevelBelow(4) and (c:IsSetCard(0x83) or c:IsCode(3167573) or c:IsCode(71564150) or c:IsCode(41442341) + or c:IsCode(54098121) or c:IsCode(51119924)) and c:IsControler(tp) and c:IsRelateToEffect(e) + and Duel.IsExistingMatchingCard(c100000209.filter,tp,LOCATION_DECK,0,1,nil,c:GetCode(),e,tp) +end +function c100000209.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local sg=eg:Filter(c100000209.cfilter2,nil,e,tp) + if sg:GetCount()==1 then + local tc=sg:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000209.filter,tp,LOCATION_DECK,0,1,1,nil,tc:GetCode(),e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + else + local tc=sg:GetFirst() + if not tc then return end + tc=sg:GetNext() + if tc then + code=bit.bor(code,tc:GetCode()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000209.filter,tp,LOCATION_DECK,0,1,1,nil,code,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c100000210.lua b/script/c100000210.lua new file mode 100644 index 00000000..f99003f8 --- /dev/null +++ b/script/c100000210.lua @@ -0,0 +1,61 @@ +--アタック・ギミック +function c100000210.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000210.target) + e1:SetOperation(c100000210.activate) + c:RegisterEffect(e1) +end +function c100000210.filter(c) + return c:IsFaceup() and c:IsSetCard(0x83) +end +function c100000210.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000210.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000210.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000210.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c100000210.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(100000210,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c100000210.condition) + e2:SetTarget(c100000210.target2) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetOperation(c100000210.operation) + tc:RegisterEffect(e2) + end +end +function c100000210.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local d=Duel.GetAttackTarget() + if d==c then d=Duel.GetAttacker() end + e:SetLabel(d:GetAttack()) + return true +end +function c100000210.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c100000210.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000211.lua b/script/c100000211.lua new file mode 100644 index 00000000..5af1a205 --- /dev/null +++ b/script/c100000211.lua @@ -0,0 +1,108 @@ +--デステニー・ストリングス +function c100000211.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(c100000211.target) + e1:SetOperation(c100000211.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(c100000211.eqlimit) + c:RegisterEffect(e2) + --to grave + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetCost(c100000211.atcost) + e3:SetCondition(c100000211.atcon) + e3:SetTarget(c100000211.attg) + e3:SetOperation(c100000211.atop) + c:RegisterEffect(e3) +end +function c100000211.eqlimit(e,c) + return c:IsSetCard(0x83) +end +function c100000211.filter(c) + return c:IsFaceup() and c:IsSetCard(0x83) +end +function c100000211.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100000211.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000211.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c100000211.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000211.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 c100000211.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end + Duel.DiscardDeck(tp,1,REASON_COST) + local tc=Duel.GetOperatedGroup():GetFirst() + if tc:IsType(TYPE_MONSTER) then + e:SetLabel(tc:GetLevel()-1) + else + e:SetLabel(0) + end +end +function c100000211.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler():GetEquipTarget() +end +function c100000211.attg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipTarget() end + Duel.SetTargetCard(e:GetHandler():GetEquipTarget()) +end +function c100000211.atop(e,tp,eg,ep,ev,re,r,rp) + local lv=e:GetLabel() + local c=e:GetHandler() + local tc=c:GetEquipTarget() + if tc and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() and lv>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + --battle + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DAMAGE_CALCULATING) + e2:SetCondition(c100000211.indescon) + e2:SetOperation(c100000211.indesop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + else + if Duel.NegateAttack() then + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end + end +end +function c100000211.indescon(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetEquipTarget():GetBattleTarget() + return bc and bc:IsAttackPos() +end +function c100000211.indesop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetEquipTarget():GetBattleTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + bc:RegisterEffect(e1,true) +end diff --git a/script/c100000212.lua b/script/c100000212.lua new file mode 100644 index 00000000..6baa4d1d --- /dev/null +++ b/script/c100000212.lua @@ -0,0 +1,44 @@ +--ギミック・ボックス +function c100000212.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c100000212.condition) + e1:SetTarget(c100000212.target) + e1:SetOperation(c100000212.activate) + c:RegisterEffect(e1) +end +function c100000212.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c100000212.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,100000212,0,0x1,-2,0,8,RACE_MACHINE,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100000212.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,100000212,0,0x1,-2,0,8,RACE_MACHINE,ATTRIBUTE_DARK) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c100000212.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + c:AddMonsterAttribute(TYPE_MONSTER+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetValue(Duel.GetBattleDamage(tp)) + e2:SetReset(RESET_EVENT+0xfe0000) + c:RegisterEffect(e2) +end +function c100000212.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c100000218.lua b/script/c100000218.lua new file mode 100644 index 00000000..03767c1c --- /dev/null +++ b/script/c100000218.lua @@ -0,0 +1,52 @@ +--爆風紋章 +function c100000218.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000218.eqcon) + e1:SetTarget(c100000218.target) + e1:SetOperation(c100000218.activate) + c:RegisterEffect(e1) +end +function c100000218.eqcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c100000218.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c100000218.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c100000218.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local sg=Duel.GetMatchingGroup(c100000218.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c100000218.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100000218.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.BreakEffect() + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + --damage + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(sg:GetCount()) + e1:SetTarget(c100000218.datarget) + e1:SetOperation(c100000218.operation) + Duel.RegisterEffect(e1,tp) +end +function c100000218.datarget(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetLabel()*500 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100000218.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000219.lua b/script/c100000219.lua new file mode 100644 index 00000000..4f03129a --- /dev/null +++ b/script/c100000219.lua @@ -0,0 +1,61 @@ +--破滅の紋章 +function c100000219.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(c100000219.target) + e1:SetOperation(c100000219.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(c100000219.eqlimit) + c:RegisterEffect(e2) + -- + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetCountLimit(1) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c100000219.damtg) + e4:SetOperation(c100000219.damop) + c:RegisterEffect(e4) +end +function c100000219.eqlimit(e,c) + local code=c:GetCode() + return c:IsSetCard(0x76) or code==23649496 or code==47387961 +end +function c100000219.filter(c) + local code=c:GetCode() + return c:IsFaceup() and (c:IsSetCard(0x76) or code==23649496 or code==47387961) +end +function c100000219.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(c100000219.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c100000219.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000219.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 c100000219.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local dam=Duel.GetMatchingGroupCount(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*300 + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,dam) +end +function c100000219.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local dam=Duel.GetMatchingGroupCount(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*300 + Duel.Damage(tp,dam,REASON_EFFECT,true) + Duel.Damage(1-tp,dam,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c100000220.lua b/script/c100000220.lua new file mode 100644 index 00000000..ce2995e4 --- /dev/null +++ b/script/c100000220.lua @@ -0,0 +1,46 @@ +--チェンジ! ジェット・アイアン号 +function c100000220.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100000220.cost) + e1:SetTarget(c100000220.target) + e1:SetOperation(c100000220.operation) + c:RegisterEffect(e1) +end +function c100000220.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,80208158) + and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,16796157) + and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,43791861) + and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,79185500) end + local g1=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,80208158) + local g2=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,16796157) + g1:Merge(g2) + local g3=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,43791861) + g1:Merge(g3) + local g4=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,79185500) + g1:Merge(g4) + Duel.Release(g1,REASON_COST) +end +function c100000220.filter(c,e,tp) + return c:IsCode(15574615) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c100000220.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c100000220.filter,tp,0x13,0,1,nil,e,tp) + end + e:SetLabel(0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000220.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,c100000220.filter,tp,0x13,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) +end diff --git a/script/c100000221.lua b/script/c100000221.lua new file mode 100644 index 00000000..d0c381c2 --- /dev/null +++ b/script/c100000221.lua @@ -0,0 +1,36 @@ +--ヒロイック・チェンジ +function c100000221.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100000221.cost) + e1:SetTarget(c100000221.target) + e1:SetOperation(c100000221.operation) + c:RegisterEffect(e1) +end +function c100000221.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x6f) end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x6f) + Duel.Release(g,REASON_COST) +end +function c100000221.filter(c,e,tp) + return c:IsSetCard(0x6f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000221.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c:IsControler(tp) and c100000221.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000221.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000221.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000221.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000222.lua b/script/c100000222.lua new file mode 100644 index 00000000..3eebd729 --- /dev/null +++ b/script/c100000222.lua @@ -0,0 +1,35 @@ +--ヒロイック・ガード +function c100000222.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetCost(c100000222.cost) + e1:SetCondition(c100000222.condition) + e1:SetTarget(c100000222.target) + e1:SetOperation(c100000222.activate) + c:RegisterEffect(e1) +end +function c100000222.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x6f) end + local sg=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x6f) + local tc=sg:GetFirst() + local atk=tc:GetAttack() + Duel.Release(tc,REASON_COST) + e:SetLabel(atk) +end +function c100000222.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==ep +end +function c100000222.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,e:GetLabel()) +end +function c100000222.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c100000223.lua b/script/c100000223.lua new file mode 100644 index 00000000..f767d11c --- /dev/null +++ b/script/c100000223.lua @@ -0,0 +1,63 @@ +--ヒロイック・コール +function c100000223.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000223.cost) + e1:SetTarget(c100000223.target) + e1:SetOperation(c100000223.activate) + c:RegisterEffect(e1) +end +function c100000223.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetLabelObject(e) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c100000223.sumlimit) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetTargetRange(1,0) + Duel.RegisterEffect(e2,tp) +end +function c100000223.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject()~=se +end +function c100000223.filter(c,e,tp) + return c:IsSetCard(0x6f) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000223.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000223.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000223.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000223.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100000224.lua b/script/c100000224.lua new file mode 100644 index 00000000..90af7484 --- /dev/null +++ b/script/c100000224.lua @@ -0,0 +1,74 @@ +--スカブ・スカーナイト +function c100000224.initial_effect(c) + c:SetUniqueOnField(1,0,100000224) + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c100000224.sdcon) + c:RegisterEffect(e2) + --must attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_MUST_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_MUST_BE_ATTACKED) + e4:SetRange(LOCATION_MZONE) + c:RegisterEffect(e4) + -- + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_BATTLED) + e5:SetCondition(c100000224.condition) + e5:SetOperation(c100000224.operation) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_MZONE) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetCountLimit(1) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetTarget(c100000224.target) + e6:SetOperation(c100000224.activate) + c:RegisterEffect(e6) +end +function c100000224.sdcon(e) + return e:GetHandler():IsPosition(POS_FACEUP_DEFENSE) +end +function c100000224.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetAttackTarget() and Duel.GetAttackTarget()==e:GetHandler()) or Duel.GetAttacker()==e:GetHandler() +end +function c100000224.operation(e,tp,eg,ep,ev,re,r,rp) + local tg=e:GetHandler():GetBattleTarget() + tg:RegisterFlagEffect(100000224,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c100000224.cfilter(c) + return c:GetFlagEffect(100000224)~=0 and c:IsControlerCanBeChanged() +end +function c100000224.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100000224.cfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000224.cfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c100000224.cfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c100000224.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp) + end +end diff --git a/script/c100000225.lua b/script/c100000225.lua new file mode 100644 index 00000000..572d7c52 --- /dev/null +++ b/script/c100000225.lua @@ -0,0 +1,52 @@ +--希望の転生 +function c100000225.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000225.cost) + e1:SetOperation(c100000225.activate) + c:RegisterEffect(e1) +end +function c100000225.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,2,e:GetHandler()) end + Duel.DiscardHand(tp,Card.IsDiscardable,2,2,REASON_COST+REASON_DISCARD,e:GetHandler()) +end +function c100000225.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_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetCondition(c100000225.thcon) + e1:SetOperation(c100000225.thop) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY then + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,3) + e1:SetLabel(-1) + else + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e1:SetLabel(0) + end + Duel.RegisterEffect(e1,tp) +end +function c100000225.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000225.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c100000225.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=e:GetLabel() + if ct<1 then + ct=ct+1 + e:SetLabel(ct) + return + end + Duel.Hint(HINT_CARD,0,100000225) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100000225.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100000226.lua b/script/c100000226.lua new file mode 100644 index 00000000..a0e987b4 --- /dev/null +++ b/script/c100000226.lua @@ -0,0 +1,31 @@ +--規律の鏡舞台 +function c100000226.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetValue(c100000226.vala) + c:RegisterEffect(e2) + --def change + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SET_DEFENSE_FINAL) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetValue(c100000226.vald) + c:RegisterEffect(e3) +end + +function c100000226.vala(e,c) + return c:GetBaseAttack() +end +function c100000226.vald(e,c) + return c:GetBaseDefense() +end diff --git a/script/c100000227.lua b/script/c100000227.lua new file mode 100644 index 00000000..1c174d06 --- /dev/null +++ b/script/c100000227.lua @@ -0,0 +1,60 @@ +--枯山水 +function c100000227.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c100000227.spcon) + e3:SetTarget(c100000227.sptg) + e3:SetOperation(c100000227.spop) + c:RegisterEffect(e3) + --atk up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetValue(c100000227.val) + c:RegisterEffect(e4) +end +function c100000227.val(e,c) + return c:GetRank()*100 +end +function c100000227.spcon(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local ct=g:GetCount() + local tg=g:GetFirst() + return ct==1 and tg:IsFaceup() and tg:IsRace(RACE_PLANT) +end +function c100000227.filter(c,e,tp) + return c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000227.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000227.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000227.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000227.filter,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 diff --git a/script/c100000228.lua b/script/c100000228.lua new file mode 100644 index 00000000..917d749e --- /dev/null +++ b/script/c100000228.lua @@ -0,0 +1,48 @@ +--フラッシュ・エフェクト +function c100000228.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100000228.condition) + e1:SetTarget(c100000228.target) + e1:SetOperation(c100000228.activate) + c:RegisterEffect(e1) +end +function c100000228.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c100000228.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 true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) +end +function c100000228.filter2(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c100000228.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + local c=e:GetHandler() + local tc=re:GetHandler() + if tc:IsRelateToEffect(re) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(800) + tc:RegisterEffect(e1) + end + local g=Duel.GetMatchingGroup(c100000228.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local sg=g:GetFirst() + while sg do + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + sg:RegisterEffect(e1) + sg=g:GetNext() + end +end diff --git a/script/c100000229.lua b/script/c100000229.lua new file mode 100644 index 00000000..6cd77491 --- /dev/null +++ b/script/c100000229.lua @@ -0,0 +1,57 @@ +--エクシーズ・リバイバル +function c100000229.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c100000229.target) + e1:SetOperation(c100000229.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c100000229.desop) + c:RegisterEffect(e2) +end +function c100000229.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsType(TYPE_XYZ) +end +function c100000229.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000229.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000229.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000229.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000229.eqlimit(e,c) + return e:GetLabelObject()==c +end +function c100000229.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000229.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + end +end +function c100000229.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100000233.lua b/script/c100000233.lua new file mode 100644 index 00000000..41b27383 --- /dev/null +++ b/script/c100000233.lua @@ -0,0 +1,32 @@ +--豪腕特急トロッコロッコ +function c100000233.initial_effect(c) + --effect gain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c100000233.efcon) + e1:SetOperation(c100000233.efop) + c:RegisterEffect(e1) +end +function c100000233.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c100000233.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1ff0000) + rc:RegisterEffect(e1) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_TYPE) + e2:SetValue(TYPE_MONSTER+TYPE_EFFECT+TYPE_XYZ) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c100000234.lua b/script/c100000234.lua new file mode 100644 index 00000000..533a7edc --- /dev/null +++ b/script/c100000234.lua @@ -0,0 +1,20 @@ +--カースド・シンクロ +function c100000234.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c100000234.condition) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_SYNCHRO)) + c:RegisterEffect(e2) +end +function c100000234.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and Duel.GetAttacker() and Duel.GetAttacker():IsControler(1-tp) +end diff --git a/script/c100000235.lua b/script/c100000235.lua new file mode 100644 index 00000000..26eed376 --- /dev/null +++ b/script/c100000235.lua @@ -0,0 +1,110 @@ +--異次元格納庫 +function c100000235.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000235.retarget) + e1:SetOperation(c100000235.reactivate) + c:RegisterEffect(e1) + local sg=Group.CreateGroup() + sg:KeepAlive() + e1:SetLabelObject(sg) + --SPSUMMON + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c100000235.target) + e3:SetOperation(c100000235.operation) + e3:SetLabelObject(sg) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c100000235.refilter(c) + return c:IsType(TYPE_UNION) and c:IsLevelBelow(4) and c:IsAbleToRemove() +end +function c100000235.retarget(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000235.refilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,0) +end +function c100000235.reactivate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c100000235.refilter,tp,LOCATION_DECK,0,1,3,nil) + if g:GetCount()>0 then + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local sg=e:GetLabelObject() + if c:GetFlagEffect(100000235)==0 then + sg:Clear() + c:RegisterFlagEffect(100000235,RESET_EVENT+0x1680000,0,1) + end + local tc=g:GetFirst() + while tc do + sg:AddCard(tc) + tc:RegisterFlagEffect(100000235,RESET_EVENT+0x1fe0000,0,1) + tc=g:GetNext() + end + end +end +function c100000235.filter(c,e,tp) + local g=e:GetLabelObject() + return c:IsFaceup() and c:GetSummonPlayer()==tp and g:IsExists(c100000235.filter2,1,nil,c,e,tp) +end +function c100000235.filter2(c,eqc,e,tp) + return c:GetFlagEffect(100000235)~=0 and c:CheckEquipTarget(eqc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000235.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and eg:IsExists(c100000235.filter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local gc=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=e:GetLabelObject() + local gt=eg:Filter(c100000235.filter,nil,e,tp) + local gtg=gt:GetFirst() + local tg=Group.CreateGroup() + local tdg=nil + while gtg do + tdg=g:Filter(c100000235.filter2,nil,gtg,e,tp) + if tdg:GetCount()>0 then + tg:Merge(tdg) + end + gtg=gt:GetNext() + end + local sg=tg:Select(tp,1,gc,nil) + Duel.SetTargetCard(sg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,sg,gc,0,0) +end +function c100000235.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.GetLocationCount(tp,LOCATION_MZONE)1 and Duel.GetLocationCount(tp,LOCATION_SZONE)>1 + and Duel.SelectYesNo(tp,aux.Stringid(100000236,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c100000236.filter,tp,LOCATION_DECK,0,2,2,nil,tp) + if g:GetCount()>1 then + local tc=g:GetFirst() + local tc2=g:GetNext() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.MoveToField(tc2,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + end +end \ No newline at end of file diff --git a/script/c100000237.lua b/script/c100000237.lua new file mode 100644 index 00000000..3982cc7f --- /dev/null +++ b/script/c100000237.lua @@ -0,0 +1,70 @@ +--デルタ・バリア +function c100000237.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100000237.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetRange(LOCATION_SZONE) + e2:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCountLimit(1) + e2:SetCondition(c100000237.con) + e2:SetCost(c100000237.cost) + e2:SetOperation(c100000237.op) + c:RegisterEffect(e2) + Duel.AddCustomActivityCounter(100000237,ACTIVITY_CHAIN,aux.FALSE) +end +function c100000237.filter(c,tp) + local te=c:GetActivateEffect() + if not te then return false end + return c:IsCode(100000237) and (te:IsActivatable(tp) or (c:IsControler(1-tp) and te:IsActivatable(1-tp))) +end +function c100000237.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + local g=Duel.GetMatchingGroup(c100000237.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tp) + if ft>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(39910367,0)) then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(15248873,0)) + local sg=g:Select(tp,1,ft,nil) + local tc=sg:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + tc=sg:GetNext() + end + end +end +function c100000237.cfilter(c) + return c:IsFaceup() and c:IsCode(100000237) +end +function c100000237.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 and Duel.GetMatchingGroupCount(c100000237.cfilter,tp,LOCATION_ONFIELD,0,nil)==3 + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 +end +function c100000237.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(100000237,tp,ACTIVITY_CHAIN)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,0) + e1:SetValue(aux.TRUE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000237.op(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c100000237.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c100000237.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c100000238.lua b/script/c100000238.lua new file mode 100644 index 00000000..b21795e3 --- /dev/null +++ b/script/c100000238.lua @@ -0,0 +1,34 @@ +--ベアーズ・ブート・キャンプ +function c100000238.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000238.condition) + e1:SetTarget(c100000238.target) + e1:SetOperation(c100000238.activate) + c:RegisterEffect(e1) +end +function c100000238.filter(c,e,tp) + return c:GetCode()==67136033 and c:IsFaceup() +end +function c100000238.condition(e) + return Duel.IsExistingMatchingCard(c100000238.filter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,nil) +end +function c100000238.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_BEASTWARRIOR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000238.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000238.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000238.activate(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,c100000238.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + local c=e:GetHandler() + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) +end \ No newline at end of file diff --git a/script/c100000239.lua b/script/c100000239.lua new file mode 100644 index 00000000..dd95b8c6 --- /dev/null +++ b/script/c100000239.lua @@ -0,0 +1,32 @@ +--エクシーズ・トレジャー +function c100000239.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000239.target) + e1:SetOperation(c100000239.activate) + c:RegisterEffect(e1) +end +function c100000239.gfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c100000239.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetMatchingGroup(c100000239.gfilter,tp,LOCATION_MZONE,0,nil) + local ct=Duel.GetMatchingGroupCount(c100000239.gfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + e:SetLabel(ct) + return ct>0 and Duel.IsPlayerCanDraw(tp,ct) + end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel()) +end +function c100000239.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetMatchingGroup(c100000239.gfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local ct=Duel.GetMatchingGroupCount(c100000239.gfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Draw(p,ct,REASON_EFFECT) +end diff --git a/script/c100000240.lua b/script/c100000240.lua new file mode 100644 index 00000000..03de8f9c --- /dev/null +++ b/script/c100000240.lua @@ -0,0 +1,18 @@ +--フォトン・デルタ・ウィング +function c100000240.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,1) + e1:SetCondition(c100000240.con) + c:RegisterEffect(e1) +end +function c100000240.filter(c) + return c:IsFaceup() and c:GetCode()==100000240 +end +function c100000240.con(e) + return Duel.IsExistingMatchingCard(c100000240.filter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,e:GetHandler()) +end diff --git a/script/c100000241.lua b/script/c100000241.lua new file mode 100644 index 00000000..f111caa4 --- /dev/null +++ b/script/c100000241.lua @@ -0,0 +1,29 @@ +--フォトン・エスケープ +function c100000241.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c100000241.condition) + e1:SetTarget(c100000241.target) + e1:SetOperation(c100000241.activate) + c:RegisterEffect(e1) +end +function c100000241.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a:IsOnField() and d and d:IsFaceup() and d:IsControler(tp) + and (d:IsSetCard(0x55) or d:IsCode(31801517)) and d:IsAbleToRemove() +end +function c100000241.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.GetAttackTarget():CreateEffectRelation(e) +end +function c100000241.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttackTarget() + if a:IsFaceup() and a:IsRelateToEffect(e) then + Duel.Remove(a,POS_FACEUP,REASON_EFFECT) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c100000242.lua b/script/c100000242.lua new file mode 100644 index 00000000..d78b47d3 --- /dev/null +++ b/script/c100000242.lua @@ -0,0 +1,64 @@ +--光子圧力界 +function c100000242.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --trigger + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000242.damcon) + e2:SetTarget(c100000242.damtg) + e2:SetOperation(c100000242.damop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100000242.damcon(e,tp,eg,ep,ev,re,r,rp) + local tg=eg:GetFirst() + return eg:GetCount()==1 and c100000242.cfilter(tg) +end +function c100000242.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x55) +end +function c100000242.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return true end + local p=0 + if not Duel.IsExistingMatchingCard(c100000242.cfilter,tp,LOCATION_MZONE,0,1,nil) then + p=p+1 + end + if not Duel.IsExistingMatchingCard(c100000242.cfilter,tp,0,LOCATION_MZONE,1,nil) then + p=p+2 + end + Duel.SetTargetCard(eg) + if p==1 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,tc:GetLevel()*100) + elseif p==2 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetLevel()*100) + elseif p==3 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,tc:GetLevel()*100) + end +end +function c100000242.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if not e:GetHandler():IsRelateToEffect(e) or not tc or not tc:IsRelateToEffect(e) then return end + local p=0 + if not Duel.IsExistingMatchingCard(c100000242.cfilter,tp,LOCATION_MZONE,0,1,nil) then + p=p+1 + end + if not Duel.IsExistingMatchingCard(c100000242.cfilter,tp,0,LOCATION_MZONE,1,nil) then + p=p+2 + end + if p==1 or p==3 then + Duel.Damage(tp,tc:GetLevel()*100,REASON_EFFECT) + end + if p==2 or p==3 then + Duel.Damage(1-tp,tc:GetLevel()*100,REASON_EFFECT) + end +end diff --git a/script/c100000243.lua b/script/c100000243.lua new file mode 100644 index 00000000..428fcaff --- /dev/null +++ b/script/c100000243.lua @@ -0,0 +1,31 @@ +--TG メタル・スケルトン +function c100000243.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c100000243.spcon) + e1:SetTarget(c100000243.sptg) + e1:SetOperation(c100000243.spop) + c:RegisterEffect(e1) +end +function c100000243.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()~=tp +end +function c100000243.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000243.cfilter,1,nil,tp) +end +function c100000243.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100000243.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000244.lua b/script/c100000244.lua new file mode 100644 index 00000000..d64b172b --- /dev/null +++ b/script/c100000244.lua @@ -0,0 +1,49 @@ +--TG ギア・ゾンビ +function c100000244.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000244.spcon) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c100000244.con) + e2:SetTarget(c100000244.target) + e2:SetOperation(c100000244.activate) + c:RegisterEffect(e2) +end +function c100000244.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0x27) +end +function c100000244.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000244.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c100000244.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c100000244.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000244.spfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000244.spfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000244.spfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c100000244.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100000245.lua b/script/c100000245.lua new file mode 100644 index 00000000..bbf5bffa --- /dev/null +++ b/script/c100000245.lua @@ -0,0 +1,40 @@ +--TG ドリル・フィッシュ +function c100000245.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetCondition(c100000245.dircon) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c100000245.descon) + e2:SetTarget(c100000245.destg) + e2:SetOperation(c100000245.desop) + c:RegisterEffect(e2) +end +function c100000245.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0x27) +end +function c100000245.dircon(e) + local tp=e:GetHandler():GetControler() + return Duel.IsExistingMatchingCard(c100000245.spfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c100000245.descon(e,tp,eg,ep,ev,re,r,rp,chk) + return ep~=tp and Duel.GetAttackTarget()==nil +end +function c100000245.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) +end +function c100000245.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100000246.lua b/script/c100000246.lua new file mode 100644 index 00000000..ee8b5879 --- /dev/null +++ b/script/c100000246.lua @@ -0,0 +1,48 @@ +--錬金術の研究成果 +function c100000246.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000246.condition) + e1:SetCost(c100000246.cost) + e1:SetTarget(c100000246.target) + e1:SetOperation(c100000246.activate) + c:RegisterEffect(e1) +end +function c100000246.condition(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,nil,57116033) +end +function c100000246.cfilter1(c) + return c:IsCode(57116033) and c:IsAbleToGraveAsCost() +end +function c100000246.costfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c100000246.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000246.costfilter,tp,LOCATION_GRAVE,0,3,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOREMOVE) + local g=Duel.SelectMatchingCard(tp,c100000246.costfilter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c100000246.cfilter1,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.SendtoGrave(g1,REASON_COST) +end +function c100000246.filter(c,e,tp) + return c:IsCode(33776734) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000246.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100000246.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c100000246.activate(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,c100000246.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000247.lua b/script/c100000247.lua new file mode 100644 index 00000000..1a9368b2 --- /dev/null +++ b/script/c100000247.lua @@ -0,0 +1,97 @@ +--賢者の石 サバティエル +function c100000247.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_DECK) + e1:SetCondition(c100000247.thcon) + e1:SetTarget(c100000247.thtg) + e1:SetOperation(c100000247.thop) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetLabel(0) + e2:SetTarget(c100000247.target) + c:RegisterEffect(e2) +end +function c100000247.cfilter(c,tp) + return c:IsCode(57116033) and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) +end +function c100000247.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000247.cfilter,1,nil,tp) +end +function c100000247.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c100000247.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end +function c100000247.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,Duel.GetLP(tp)/2) +end +function c100000247.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 + local c=e:GetHandler() + local ct=e:GetLabel() + if chk==0 then + if ct<3 then + return c100000247.cost(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) + else + return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) + end + end + if ct<3 then + c100000247.cost(e,tp,eg,ep,ev,re,r,rp,1) + ct=ct+1 + e:GetHandler():SetTurnCounter(ct) + e:SetLabel(ct) + e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e:SetProperty(0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) + e:SetOperation(c100000247.activate1) + else + e:SetCategory(CATEGORY_ATKCHANGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + e:SetOperation(c100000247.activate2) + end +end +function c100000247.activate1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end + end +end +function c100000247.activate2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*ct) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100000248.lua b/script/c100000248.lua new file mode 100644 index 00000000..e7b7b0ce --- /dev/null +++ b/script/c100000248.lua @@ -0,0 +1,20 @@ +--氷山海 +function c100000248.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c100000248.tg) + e2:SetValue(0) + c:RegisterEffect(e2) +end +function c100000248.tg(e,c) + return c:GetPosition()==POS_FACEUP_DEFENSE +end diff --git a/script/c100000250.lua b/script/c100000250.lua new file mode 100644 index 00000000..6bdf1718 --- /dev/null +++ b/script/c100000250.lua @@ -0,0 +1,32 @@ +--レベルダウン! +function c100000250.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000250.tg) + e1:SetOperation(c100000250.activate) + c:RegisterEffect(e1) +end +function c100000250.filter(c) + return c:IsSetCard(0x41) and c:GetLevel()>2 +end +function c100000250.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000250.filter,tp,LOCATION_HAND,0,1,nil) end +end +function c100000250.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100000250.filter,tp,LOCATION_HAND,0,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(100000250,0)) + local sg=g:Select(tp,1,1,nil) + local tc=sg:GetFirst() + Duel.ConfirmCards(1-tp,sg) + if tc:GetLocation()==LOCATION_HAND then Duel.ShuffleHand(tp) end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100000251.lua b/script/c100000251.lua new file mode 100644 index 00000000..6d057301 --- /dev/null +++ b/script/c100000251.lua @@ -0,0 +1,55 @@ +--レベル・ソウル +function c100000251.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000251.cost) + e1:SetTarget(c100000251.target) + e1:SetOperation(c100000251.activate) + c:RegisterEffect(e1) +end +function c100000251.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c100000251.rmfilter(c,e,tp) + if not c:IsSetCard(0x41) or not c:IsAbleToRemoveAsCost() then return false end + local code=c:GetCode() + local class=_G["c"..code] + return Duel.IsExistingMatchingCard(c100000251.spfilter,tp,LOCATION_DECK,0,1,nil,class,e,tp) +end +function c100000251.spfilter(c,class,e,tp) + local code=c:GetCode() + for i=1,class.lvupcount do + if code==class.lvup[i] then return c:IsCanBeSpecialSummoned(e,0,tp,true,false) end + end + return false +end +function c100000251.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,nil,1,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100000251.rmfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local g1=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c100000251.rmfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local code=g2:GetFirst():GetCode() + Duel.Release(g1,REASON_COST) + Duel.Remove(g2,POS_FACEUP,REASON_COST) + Duel.SetTargetParam(code) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000251.activate(e,tp,eg,ep,ev,re,r,rp) + local code=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local class=_G["c"..code] + if class==nil or class.lvupcount==nil then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000251.spfilter,tp,LOCATION_DECK,0,1,1,nil,class,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c100000252.lua b/script/c100000252.lua new file mode 100644 index 00000000..4d3e0aa7 --- /dev/null +++ b/script/c100000252.lua @@ -0,0 +1,53 @@ +--レベル・チェンジ +function c100000252.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c100000252.condition) + e1:SetCost(c100000252.cost) + e1:SetTarget(c100000252.target) + e1:SetOperation(c100000252.activate) + c:RegisterEffect(e1) +end +function c100000252.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END and Duel.GetTurnPlayer()~=tp +end +function c100000252.costfilter(c,e,tp) + if not c:IsSetCard(0x41) or not c:IsAbleToGraveAsCost() then return false end + local code=c:GetCode() + local class=_G["c"..code] + return Duel.IsExistingMatchingCard(c100000252.spfilter,tp,LOCATION_GRAVE,0,1,nil,class,e,tp) +end +function c100000252.spfilter(c,class,e,tp) + local code=c:GetCode() + for i=1,class.lvupcount do + if code==class.lvup[i] then return c:IsCanBeSpecialSummoned(e,0,tp,true,false) end + end + return false +end +function c100000252.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000252.costfilter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000252.costfilter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SendtoGrave(g,REASON_COST) + e:SetLabel(g:GetFirst():GetCode()) +end +function c100000252.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c100000252.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local code=e:GetLabel() + local class=_G["c"..code] + if class==nil or class.lvupcount==nil then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000252.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,class,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000253.lua b/script/c100000253.lua new file mode 100644 index 00000000..2d63dd1a --- /dev/null +++ b/script/c100000253.lua @@ -0,0 +1,31 @@ +--レベル・コピー +function c100000253.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000253.target) + e1:SetOperation(c100000253.activate) + c:RegisterEffect(e1) +end +function c100000253.filter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c100000253.spfilter(c,e,tp) + return c:IsSetCard(0x41) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c100000253.filter,tp,LOCATION_MZONE,0,1,nil,c:GetCode()) +end +function c100000253.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000253.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c100000253.activate(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,c100000253.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000254.lua b/script/c100000254.lua new file mode 100644 index 00000000..5718403b --- /dev/null +++ b/script/c100000254.lua @@ -0,0 +1,51 @@ +--レベルの絆 +function c100000254.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100000254.cost) + e1:SetTarget(c100000254.target) + e1:SetOperation(c100000254.activate) + c:RegisterEffect(e1) +end +function c100000254.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,2) end + Duel.Draw(1-tp,2,REASON_EFFECT) +end +function c100000254.filter(c,e,tp) + return c:IsSetCard(0x41) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c100000254.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000254.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000254.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000254.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000254.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(92039899,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end diff --git a/script/c100000255.lua b/script/c100000255.lua new file mode 100644 index 00000000..49920b21 --- /dev/null +++ b/script/c100000255.lua @@ -0,0 +1,33 @@ +--妖魔の援軍 +function c100000255.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000255.cost) + e1:SetTarget(c100000255.target) + e1:SetOperation(c100000255.activate) + c:RegisterEffect(e1) +end +function c100000255.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1000) + else Duel.PayLPCost(tp,1000) end +end +function c100000255.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(0x10000000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000255.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c100000255.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE) +end +function c100000255.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c100000255.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,e,tp) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000256.lua b/script/c100000256.lua new file mode 100644 index 00000000..173e4ca0 --- /dev/null +++ b/script/c100000256.lua @@ -0,0 +1,23 @@ +--ダイダラボッチ +function c100000256.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c100000256.val) + c:RegisterEffect(e2) +end +function c100000256.filter(c) + return c:IsFaceup() and c:IsRace(0x10000000) +end +function c100000256.val(e,c) + return Duel.GetMatchingGroupCount(c100000256.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,e:GetHandler())*200 +end diff --git a/script/c100000257.lua b/script/c100000257.lua new file mode 100644 index 00000000..bccbda27 --- /dev/null +++ b/script/c100000257.lua @@ -0,0 +1,75 @@ +--カオス・コア +function c100000257.initial_effect(c) + c:EnableCounterPermit(0x93) + --be target + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetDescription(aux.Stringid(3657444,0)) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCondition(c100000257.ctcon) + e1:SetCost(c100000257.ctcost) + e1:SetTarget(c100000257.cttg) + e1:SetOperation(c100000257.ctop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCondition(c100000257.con) + e2:SetCost(c100000257.cost) + e2:SetOperation(c100000257.op) + c:RegisterEffect(e2) +end +function c100000257.ctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c100000257.cfilter(c,code) + return c:IsCode(code) and c:IsAbleToGraveAsCost() +end +function c100000257.ctcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000257.cfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,6007213) + and Duel.IsExistingMatchingCard(c100000257.cfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,32491822) + and Duel.IsExistingMatchingCard(c100000257.cfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,69890967) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c100000257.cfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,6007213) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c100000257.cfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,32491822) + g1:Merge(g2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g3=Duel.SelectMatchingCard(tp,c100000257.cfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,69890967) + g1:Merge(g3) + Duel.SendtoGrave(g1,REASON_COST) +end +function c100000257.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanAddCounter(0x93,1) end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x93) +end +function c100000257.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + c:AddCounter(0x93,3) + end +end +function c100000257.con(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at and at==e:GetHandler() +end +function c100000257.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x93,1,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x93,1,REASON_COST) +end +function c100000257.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e2) + end +end diff --git a/script/c100000258.lua b/script/c100000258.lua new file mode 100644 index 00000000..6b24b26d --- /dev/null +++ b/script/c100000258.lua @@ -0,0 +1,130 @@ +--カオス・フォーム +function c100000258.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c100000258.condition) + e1:SetTarget(c100000258.target) + e1:SetOperation(c100000258.operation) + c:RegisterEffect(e1) +end +function c100000258.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c100000258.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_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000258.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c100000258.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c100000258.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_SZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetLabelObject(tc) + e1:SetCondition(c100000258.condition2) + e1:SetTarget(c100000258.target2) + e1:SetOperation(c100000258.activate) + 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(c100000258.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetLabelObject(tc) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c100000258.efilter) + c:RegisterEffect(e3,true) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c100000258.descon) + e4:SetOperation(c100000258.desop) + e4:SetLabelObject(tc) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and tp~=Duel.GetTurnPlayer() then + if Duel.GetAttackTarget()==tc and Duel.IsExistingTarget(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_MONSTER) then + local atc=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + local etc=atc:RandomSelect(tp,1) + Duel.SetTargetCard(etc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(etc:GetFirst():GetTextAttack()) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(etc:GetFirst():GetTextDefense()) + tc:RegisterEffect(e2) + end + end + end +end +function c100000258.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c100000258.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() +end +function c100000258.condition2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==e:GetLabelObject() and Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c100000258.target2(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.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_MONSTER) end + local tc=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + local etc=tc:RandomSelect(tp,1) + Duel.SetTargetCard(etc) +end +function c100000258.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local rc=Duel.GetFirstTarget() + local tc=e:GetLabelObject() + if tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(rc:GetTextAttack()) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(rc:GetTextDefense()) + tc:RegisterEffect(e2) + end +end diff --git a/script/c100000260.lua b/script/c100000260.lua new file mode 100644 index 00000000..a221672a --- /dev/null +++ b/script/c100000260.lua @@ -0,0 +1,28 @@ +--クイック・エクシーズ +function c100000260.initial_effect(c) + --synchro effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetCondition(c100000260.sccon) + e1:SetTarget(c100000260.sctg) + e1:SetOperation(c100000260.scop) + c:RegisterEffect(e1) +end +function c100000260.sccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c100000260.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,1,nil,nil) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000260.scop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,nil,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.XyzSummon(tp,sg:GetFirst(),nil) + end +end diff --git a/script/c100000261.lua b/script/c100000261.lua new file mode 100644 index 00000000..192de951 --- /dev/null +++ b/script/c100000261.lua @@ -0,0 +1,32 @@ +--エクシーズ・トライアングル・フォース +function c100000261.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000261.condition) + e1:SetTarget(c100000261.target) + e1:SetOperation(c100000261.activate) + c:RegisterEffect(e1) +end +function c100000261.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c100000261.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000261.cfilter,tp,LOCATION_MZONE,0,3,nil) +end +function c100000261.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100000261.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100000262.lua b/script/c100000262.lua new file mode 100644 index 00000000..1e6748a2 --- /dev/null +++ b/script/c100000262.lua @@ -0,0 +1,23 @@ +--エクシーズ・フレーム +function c100000262.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100000262.activate) + c:RegisterEffect(e1) +end +function c100000262.activate(e,tp,eg,ep,ev,re,r,rp) + --indestructable + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(c100000262.tg) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) +end +function c100000262.tg(e,c) + return not c:IsType(TYPE_XYZ) +end \ No newline at end of file diff --git a/script/c100000263.lua b/script/c100000263.lua new file mode 100644 index 00000000..157c6f08 --- /dev/null +++ b/script/c100000263.lua @@ -0,0 +1,42 @@ +--エクシーズ弁当 +function c100000263.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c100000263.con1) + e1:SetOperation(c100000263.activate1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c100000263.con2) + e2:SetOperation(c100000263.activate2) + c:RegisterEffect(e2) +end +function c100000263.filter1(c) + return c:GetDefense()>=2000 +end +function c100000263.con1(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000263.filter1,1,nil) and re:GetHandler():IsType(TYPE_XYZ) +end +function c100000263.activate1(e,tp,eg,ep,ev,re,r,rp) + local c=eg:Filter(c100000263.filter1,nil) + local tc=re:GetHandler() + if tc:IsFaceup() then + Duel.Overlay(tc,c) + end +end +function c100000263.filter2(c) + return c:GetDefense()>=2000 and c:GetBattleTarget():IsType(TYPE_XYZ) +end +function c100000263.con2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000263.filter2,1,nil) +end +function c100000263.activate2(e,tp,eg,ep,ev,re,r,rp) + local c=eg:Filter(c100000263.filter2,nil) + local tc=c:GetFirst():GetBattleTarget() + if tc:IsFaceup() then + Duel.Overlay(tc,c) + end +end diff --git a/script/c100000264.lua b/script/c100000264.lua new file mode 100644 index 00000000..330cfbe5 --- /dev/null +++ b/script/c100000264.lua @@ -0,0 +1,39 @@ +--闇に堕ちた天使 +function c100000264.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000264.cost) + e1:SetTarget(c100000264.target) + e1:SetOperation(c100000264.Operation) + c:RegisterEffect(e1) +end +function c100000264.cosfilter(c) + return c:IsRace(RACE_FAIRY) and c:IsAbleToGraveAsCost() +end +function c100000264.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000264.cosfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000264.cosfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000264.filter(c,e,tp) + return c:IsRace(RACE_FAIRY) and c:IsAttribute(ATTRIBUTE_DARK) and c:GetLevel()>6 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000264.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_HAND) and chkc:IsControler(tp) and c100000264.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000264.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000264.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000264.Operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000265.lua b/script/c100000265.lua new file mode 100644 index 00000000..ff946fd1 --- /dev/null +++ b/script/c100000265.lua @@ -0,0 +1,40 @@ +--堕天使降臨 +function c100000265.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100000265.condition) + e1:SetCost(c100000265.cost) + e1:SetTarget(c100000265.target) + e1:SetOperation(c100000265.activate) + c:RegisterEffect(e1) +end +function c100000265.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c100000265.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,Duel.GetLP(tp)/2) +end +function c100000265.filter(c,e,tp) + return c:IsRace(RACE_FAIRY) and c:IsAttribute(ATTRIBUTE_DARK) and c:GetAttack()==Duel.GetAttacker():GetAttack() + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000265.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()==tp and chkc:GetLocation()==LOCATION_GRAVE and c100000265.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingTarget(c100000265.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000265.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c100000265.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()~=2 then return end + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c100000270.lua b/script/c100000270.lua new file mode 100644 index 00000000..e3f16730 --- /dev/null +++ b/script/c100000270.lua @@ -0,0 +1,37 @@ +--D-フォース +function c100000270.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_TODECK) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000270.target) + e1:SetOperation(c100000270.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetRange(LOCATION_DECK) + e2:SetCode(EFFECT_SKIP_DP) + e2:SetCondition(c100000270.sdcon) + c:RegisterEffect(e2) +end +function c100000270.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000270.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.BreakEffect() + c:CancelToGrave() + Duel.SendtoDeck(c,nil,0,REASON_EFFECT) + c:ReverseInDeck() + end +end +function c100000270.sdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetDecktopGroup(c:GetControler(),1) + return g:GetFirst()==c and c:IsFaceup() +end diff --git a/script/c100000271.lua b/script/c100000271.lua new file mode 100644 index 00000000..2775aada --- /dev/null +++ b/script/c100000271.lua @@ -0,0 +1,33 @@ +--D-ブースト +function c100000271.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000271.con) + e1:SetTarget(c100000271.target) + e1:SetOperation(c100000271.activate) + c:RegisterEffect(e1) +end +function c100000271.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + return tc and tc:IsCode(100000270) and tc:IsFaceup() +end +function c100000271.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100000271.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + if not tc or not tc:IsCode(100000270) or not tc:IsFaceup() then return end + Duel.DisableShuffleCheck() + Duel.SendtoDeck(tc,nil,-2,REASON_EFFECT) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + Duel.SendtoDeck(tc,nil,0,REASON_EFFECT) + tc:ReverseInDeck() +end diff --git a/script/c100000272.lua b/script/c100000272.lua new file mode 100644 index 00000000..28c6ef4f --- /dev/null +++ b/script/c100000272.lua @@ -0,0 +1,71 @@ +--血の咆哮-ブラッド・ロアー +function c100000272.initial_effect(c) + c:EnableCounterPermit(0x92) + c:SetCounterLimit(0x92,2) + --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) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c100000272.con) + e2:SetOperation(c100000272.op) + c:RegisterEffect(e2) + --destroy+DAMAGE + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000272,1)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c100000272.descost) + e3:SetTarget(c100000272.destg) + e3:SetOperation(c100000272.desop) + c:RegisterEffect(e3) +end +function c100000272.tdfilter(c) + return c:GetCode()==83965310 and c:IsFaceup() +end +function c100000272.con(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() + and Duel.IsExistingMatchingCard(c100000272.tdfilter,tp,LOCATION_MZONE,0,1,nil) + and e:GetHandler():IsCanAddCounter(0x92,1) +end +function c100000272.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c and c:IsFaceup() and c:IsRelateToEffect(e) then + c:AddCounter(0x92,1) + end +end + +function c100000272.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and e:GetHandler():GetCounter(0x92)>1 end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c100000272.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c100000272.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100000272.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000272.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100000272.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c100000272.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,atk/2,REASON_EFFECT) + end + end +end diff --git a/script/c100000273.lua b/script/c100000273.lua new file mode 100644 index 00000000..d011e185 --- /dev/null +++ b/script/c100000273.lua @@ -0,0 +1,83 @@ +--ドレイン・タイム +function c100000273.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000273.con) + e1:SetOperation(c100000273.activate) + c:RegisterEffect(e1) +end +function c100000273.filter(c) + return c:GetCode()==83965310 and c:IsFaceup() +end +function c100000273.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000273.filter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,nil) +end +function c100000273.activate(e,tp,eg,ep,ev,re,r,rp) + local op=Duel.SelectOption(tp,aux.Stringid(100000273,0),aux.Stringid(100000273,1),aux.Stringid(100000273,2),aux.Stringid(100000273,3),aux.Stringid(100000273,4)) + local res=RESET_PHASE+PHASE_END+RESET_OPPO_TURN,1 + local code=nil + if op==0 then + code=EFFECT_SKIP_DP + elseif op==1 then + code=EFFECT_SKIP_SP + elseif op==2 then + if Duel.GetCurrentPhase()==PHASE_MAIN1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_SKIP_M2) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_SKIP_M1) + e2:SetTargetRange(1,0) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + Duel.RegisterEffect(e2,1-tp) + else + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_SKIP_M1) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + end + elseif op==3 then + code=EFFECT_SKIP_BP + if Duel.GetCurrentPhase()==PHASE_MAIN1 then res=RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,1 end + end + if op~=2 and op~=4 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(code) + e1:SetTargetRange(1,1) + e1:SetReset(res) + Duel.RegisterEffect(e1,tp) + else + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_INITIAL) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c100000273.operation) + e1:SetReset(RESET_PHASE+PHASE_STANDBY,2) + Duel.RegisterEffect(e1,tp) + end +end +function c100000273.skcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END +end +function c100000273.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_SKIP_TURN) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + Duel.RegisterEffect(e2,1-tp) +end diff --git a/script/c100000274.lua b/script/c100000274.lua new file mode 100644 index 00000000..7e2cc4e3 --- /dev/null +++ b/script/c100000274.lua @@ -0,0 +1,70 @@ +--D-HERO ダークエンジェル +function c100000274.initial_effect(c) + --discard + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetTarget(c100000274.tgtg) + e1:SetOperation(c100000274.tgop) + c:RegisterEffect(e1) + --todeck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000274,1)) + e2:SetCategory(CATEGORY_TODECK) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c100000274.tdcon) + e2:SetTarget(c100000274.tdtg) + e2:SetOperation(c100000274.tdop) + c:RegisterEffect(e2) + --control + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_CONTROL) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c100000274.ctcon) + e3:SetTarget(c100000274.cttg) + e3:SetOperation(c100000274.ctop) + c:RegisterEffect(e3) +end +function c100000274.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SetOperationInfo(0,CATEGORY_HANDES,e:GetHandler(),1,0,0) +end +function c100000274.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SendtoGrave(c,REASON_EFFECT+REASON_DISCARD)~=0 then + c:RegisterFlagEffect(100000274,RESET_EVENT+0x1fe0000,0,1) + end +end +function c100000274.tdcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsReason(REASON_RETURN) +end +function c100000274.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(100000274)~=0 end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c100000274.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsAbleToDeck() then + Duel.SendtoDeck(c,1-c:GetPreviousControler(),0,REASON_EFFECT) + end +end +function c100000274.ctcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000274.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,e:GetHandler(),1,0,0) +end +function c100000274.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and not Duel.GetControl(c,1-tp) then + if not c:IsImmuneToEffect(e) and c:IsAbleToChangeControler() then + Duel.Destroy(c,REASON_EFFECT) + end + end +end diff --git a/script/c100000275.lua b/script/c100000275.lua new file mode 100644 index 00000000..bc183508 --- /dev/null +++ b/script/c100000275.lua @@ -0,0 +1,34 @@ +--D-HERO ディバインガイ +function c100000275.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --DESTROY + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetTarget(c100000275.tgtg) + e2:SetOperation(c100000275.tgop) + c:RegisterEffect(e2) +end +function c100000275.tgfilter(c) + return c:IsFaceup() and c:IsType(TYPE_EQUIP) and c:IsDestructable() +end +function c100000275.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000275.tgfilter,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100000275.tgfilter,tp,0,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100000275.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.Destroy(tc,REASON_EFFECT)==0 then return end + Duel.Damage(p,500,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100000276.lua b/script/c100000276.lua new file mode 100644 index 00000000..b971645d --- /dev/null +++ b/script/c100000276.lua @@ -0,0 +1,52 @@ +--D-アクセレーション +function c100000276.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c100000276.condition) + e1:SetTarget(c100000276.target) + e1:SetOperation(c100000276.operation) + c:RegisterEffect(e1) +end +function c100000276.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c100000276.filter(c) + return c:IsSetCard(0xc008) and c:GetAttackAnnouncedCount()>0 and c:GetEquipCount()>0 +end +function c100000276.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100000276.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000276.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g=Duel.SelectTarget(tp,c100000276.filter,tp,LOCATION_MZONE,0,1,1,nil) + local eqg=g:GetFirst():GetEquipGroup() + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eqg,eqg:GetCount(),0,0) +end +function c100000276.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local eqg=tc:GetEquipGroup() + if eqg:GetCount()>0 then + local des=Duel.Destroy(eqg,REASON_EFFECT) + if tc:IsSetCard(0xc008) then + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(atk/2) + tc:RegisterEffect(e2) + end + end + end +end \ No newline at end of file diff --git a/script/c100000277.lua b/script/c100000277.lua new file mode 100644 index 00000000..1be11233 --- /dev/null +++ b/script/c100000277.lua @@ -0,0 +1,35 @@ +--ナンバーズ・イヴォケーション +function c100000277.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000277.cost) + e1:SetTarget(c100000277.target) + e1:SetOperation(c100000277.activate) + c:RegisterEffect(e1) +end +function c100000277.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_SPELLCASTER) end + local rg=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,RACE_SPELLCASTER) + Duel.Release(rg,REASON_COST) +end +function c100000277.spfilter(c,e,tp) + return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000277.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c100000277.spfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c100000277.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000277.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000277.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000278.lua b/script/c100000278.lua new file mode 100644 index 00000000..671f4a57 --- /dev/null +++ b/script/c100000278.lua @@ -0,0 +1,49 @@ +--ビッグバン・パニック +function c100000278.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000278.target) + e1:SetOperation(c100000278.activate) + c:RegisterEffect(e1) +end +function c100000278.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c100000278.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c100000278.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c100000278.filter,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_SZONE,1,nil) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g1=Duel.SelectTarget(tp,c100000278.filter,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g2=Duel.SelectTarget(tp,c100000278.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c100000278.activate(e,tp,eg,ep,ev,re,r,rp) + local gc=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local ac1=e:GetLabelObject() + local ac2=gc:GetFirst() + local tc1=nil + local tc2=nil + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_SZONE,nil) + if ac1==ac2 then ac2=gc:GetNext() end + if ac2:IsControler(tp) then tc1=ac2 + tc2=ac1 else tc1=ac1 + tc2=ac2 end + if tc2 and tc2:IsRelateToEffect(e) then + Duel.Overlay(tc2,g) + Duel.BreakEffect() + if tc1:GetControler()~=tc2:GetControler() and tc1:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(g:GetCount()*800) + tc1:RegisterEffect(e1) + end + end +end diff --git a/script/c100000280.lua b/script/c100000280.lua new file mode 100644 index 00000000..91f2cc55 --- /dev/null +++ b/script/c100000280.lua @@ -0,0 +1,46 @@ +--神縛りの塚 +function c100000280.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsLevelAbove,10)) + e3:SetValue(1) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(269012,0)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_BATTLE_DESTROYED) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c100000280.damcon) + e4:SetTarget(c100000280.damtg) + e4:SetOperation(c100000280.damop) + c:RegisterEffect(e4) +end +function c100000280.damcon(e,tp,eg,ep,ev,re,r,rp) + local des=eg:GetFirst() + local rc=des:GetReasonCard() + return des:IsType(TYPE_MONSTER) and rc:IsRelateToBattle() and rc:IsLevelAbove(10) +end +function c100000280.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local damp=eg:GetFirst():GetPreviousControler() + Duel.SetTargetPlayer(damp) + Duel.SetTargetParam(400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,damp,400) +end +function c100000280.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,v=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,v,REASON_EFFECT) +end diff --git a/script/c100000281.lua b/script/c100000281.lua new file mode 100644 index 00000000..54d5a455 --- /dev/null +++ b/script/c100000281.lua @@ -0,0 +1,35 @@ +--パワー・ゾーン +function c100000281.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_BATTLE_DESTROYED) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCondition(c100000281.reccon) + e4:SetTarget(c100000281.rectg) + e4:SetOperation(c100000281.recop) + c:RegisterEffect(e4) +end +function c100000281.reccon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return eg:GetCount()==1 and ec:IsReason(REASON_BATTLE) +end +function c100000281.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=eg:GetFirst() + local atk=ec:GetBaseAttack() + if chk==0 then return atk>0 end + Duel.SetTargetPlayer(ec:GetPreviousControler()) + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,ec:GetPreviousControler(),atk) +end +function c100000281.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000282.lua b/script/c100000282.lua new file mode 100644 index 00000000..6ed02b32 --- /dev/null +++ b/script/c100000282.lua @@ -0,0 +1,39 @@ +--玄翼竜 ブラック・フェザー +function c100000282.initial_effect(c) + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --send + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DAMAGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c100000282.recon) + e1:SetTarget(c100000282.rectg) + e1:SetOperation(c100000282.recop) + c:RegisterEffect(e1) +end +function c100000282.recon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c100000282.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return ev>=400 and Duel.IsPlayerCanDiscardDeck(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,0) +end +function c100000282.recop(e,tp,eg,ep,ev,re,r,rp) + local ct=math.floor(ev/400) + Duel.DiscardDeck(tp,ct,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + local ct=g:FilterCount(Card.IsType,nil,TYPE_MONSTER) + if ct==0 then return end + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*400) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100000285.lua b/script/c100000285.lua new file mode 100644 index 00000000..0cc79131 --- /dev/null +++ b/script/c100000285.lua @@ -0,0 +1,39 @@ +--結束の翼 +function c100000285.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100000285.condition) + e1:SetTarget(c100000285.target) + e1:SetOperation(c100000285.activate) + c:RegisterEffect(e1) +end +function c100000285.cfilter(c) + return c:IsFaceup() and c:IsCode(80208158) +end +function c100000285.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.IsExistingMatchingCard(c100000285.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100000285.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c100000285.spfilter(c,e,tp) + return c:IsCode(43791861) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000285.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.NegateAttack() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000285.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c100000286.lua b/script/c100000286.lua new file mode 100644 index 00000000..92bc9f63 --- /dev/null +++ b/script/c100000286.lua @@ -0,0 +1,89 @@ +--バリアンズ・ゲートウェイ +function c100000286.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000286.cost) + e1:SetOperation(c100000286.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000286.dcon) + e2:SetCost(c100000286.dcost) + e2:SetTarget(c100000286.dtg) + e2:SetOperation(c100000286.dop) + c:RegisterEffect(e2) +end +function c100000286.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e3,tp) +end +function c100000286.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCondition(c100000286.reccon) + e1:SetTarget(c100000286.datarget) + e1:SetOperation(c100000286.operation) + Duel.RegisterEffect(e1,tp) +end +function c100000286.reccon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsReason,1,nil,REASON_DESTROY) +end +function c100000286.datarget(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=eg:FilterCount(Card.IsReason,nil,REASON_DESTROY)*800 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100000286.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c100000286.dcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev) +end +function c100000286.dcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c100000286.dtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c100000286.dop(e,tp,eg,ep,ev,re,r,rp) + local tc=re:GetHandler() + Duel.NegateEffect(ev) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) +end diff --git a/script/c100000287.lua b/script/c100000287.lua new file mode 100644 index 00000000..fe56eac4 --- /dev/null +++ b/script/c100000287.lua @@ -0,0 +1,85 @@ +--バリアンズ・バトル・マスター +function c100000287.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000287.cost) + e1:SetOperation(c100000287.op) + c:RegisterEffect(e1) + --negate attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(2) + e2:SetCondition(c100000287.condition) + e2:SetTarget(c100000287.target) + e2:SetOperation(c100000287.operation) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(0,TIMING_BATTLE_END+TIMING_BATTLE_PHASE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c100000287.dcon) + e3:SetCost(c100000287.dcost) + e3:SetTarget(c100000287.dtg) + e3:SetOperation(c100000287.activate) + c:RegisterEffect(e3) +end +function c100000287.costfilter(c) + return (c:IsCode(47660516) or c:IsCode(92365601) or c:IsCode(100000286)) and c:IsAbleToRemoveAsCost() +end +function c100000287.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000287.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOREMOVE) + local g=Duel.SelectMatchingCard(tp,c100000287.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + if Duel.GetAttacker()~=nil and Duel.GetAttacker():IsOnField() and Duel.GetAttacker():IsCanBeEffectTarget(e) + and Duel.SelectYesNo(tp,aux.Stringid(100000287,0)) then + e:SetLabel(1) + Duel.SetTargetCard(Duel.GetAttacker()) + e:GetHandler():RegisterFlagEffect(100000287,RESET_PHASE+PHASE_END,0,1) + else e:SetLabel(0) end +end +function c100000287.op(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(100000287)>0 then + Duel.NegateAttack() + end +end +function c100000287.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()~=nil and Duel.GetFlagEffect(tp,100000287)==0 +end +function c100000287.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c100000287.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() + if e:GetHandler():GetFlagEffect(100000287)>0 then + Duel.RegisterFlagEffect(tp,100000287,RESET_PHASE+PHASE_END,0,1) + end +end +function c100000287.dcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE and Duel.GetTurnPlayer()~=tp +end +function c100000287.dcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c100000287.dtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) + and Duel.IsExistingMatchingCard(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end +end +function c100000287.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + local g2=Duel.GetMatchingGroup(Card.IsPosition,tp,LOCATION_MZONE,0,nil,POS_FACEUP_ATTACK) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATTACK) + ga=g1:Select(tp,1,1,nil) + gd=g2:Select(tp,1,1,nil) + Duel.CalculateDamage(ga:GetFirst(),gd:GetFirst()) +end diff --git a/script/c100000290.lua b/script/c100000290.lua new file mode 100644 index 00000000..6114af3f --- /dev/null +++ b/script/c100000290.lua @@ -0,0 +1,47 @@ +--ヴォルカニック・ウォール +function c100000290.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DECKDES+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCost(c100000290.cost) + e2:SetTarget(c100000290.target) + e2:SetOperation(c100000290.operation) + c:RegisterEffect(e2) +end +function c100000290.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000290.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,3) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,3) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c100000290.cfilter(c) + return c:IsLocation(LOCATION_GRAVE) and c:IsRace(RACE_PYRO) +end +function c100000290.operation(e,tp,eg,ep,ev,re,r,rp) + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardDeck(p,val,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + local ct=g:FilterCount(c100000290.cfilter,nil) + if ct==0 then return end + local ct=Duel.Damage(1-tp,ct*500,REASON_EFFECT) +end diff --git a/script/c100000291.lua b/script/c100000291.lua new file mode 100644 index 00000000..43cbbba1 --- /dev/null +++ b/script/c100000291.lua @@ -0,0 +1,56 @@ +--ファイヤー・サイクロン +function c100000291.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100000291.cost) + e1:SetTarget(c100000291.target) + e1:SetOperation(c100000291.operation) + c:RegisterEffect(e1) +end +function c100000291.costfilter(c) + return c:IsAbleToGraveAsCost() and c:IsRace(RACE_PYRO) +end +function c100000291.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c100000291.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsType(TYPE_SPELL+TYPE_TRAP) end + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c100000291.costfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) + and Duel.IsExistingTarget(Card.IsType,tp,0,LOCATION_ONFIELD,1,nil,TYPE_SPELL+TYPE_TRAP) end + local rt=Duel.GetTargetCount(Card.IsType,tp,0,LOCATION_ONFIELD,nil,TYPE_SPELL+TYPE_TRAP) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000291.costfilter,tp,LOCATION_HAND,0,1,rt,e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) + local ct=g:GetCount() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsType,tp,0,LOCATION_ONFIELD,ct,ct,nil,TYPE_SPELL+TYPE_TRAP) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100000291.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local rg=tg:Filter(Card.IsRelateToEffect,nil,e) + if rg:GetCount()>0 then + Duel.Destroy(rg,nil,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(rg:GetCount()) + e1:SetOperation(c100000291.droperation) + Duel.RegisterEffect(e1,tp) + end +end +function c100000291.droperation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,100000291) + Duel.Draw(tp,e:GetLabel(),REASON_EFFECT) +end diff --git a/script/c100000292.lua b/script/c100000292.lua new file mode 100644 index 00000000..68f24085 --- /dev/null +++ b/script/c100000292.lua @@ -0,0 +1,36 @@ +--ヴォルカニック・アーマー +function c100000292.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DESTROYED) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000292.condition) + e2:SetTarget(c100000292.target) + e2:SetOperation(c100000292.operation) + c:RegisterEffect(e2) +end +function c100000292.filter(c,tp) + return c:IsRace(RACE_PYRO) and c:GetControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c100000292.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000292.filter,1,nil,tp) +end +function c100000292.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,500) +end +function c100000292.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000293.lua b/script/c100000293.lua new file mode 100644 index 00000000..8e771d93 --- /dev/null +++ b/script/c100000293.lua @@ -0,0 +1,38 @@ +--ヴォルカニック・フォース +function c100000293.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100000293.cost) + e1:SetTarget(c100000293.target) + e1:SetOperation(c100000293.activate) + c:RegisterEffect(e1) +end +function c100000293.costfilter(c) + return c:IsFaceup() and c:IsCode(21420702) and c:IsAbleToGraveAsCost() +end +function c100000293.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000293.costfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000293.costfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000293.filter(c,e,tp) + return c:IsCode(32543380) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000293.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000293.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0x13) +end +function c100000293.activate(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 tc=Duel.SelectMatchingCard(tp,c100000293.filter,tp,0x13,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) then + tc:CompleteProcedure() + end +end diff --git a/script/c100000295.lua b/script/c100000295.lua new file mode 100644 index 00000000..e728b060 --- /dev/null +++ b/script/c100000295.lua @@ -0,0 +1,22 @@ +--ハーピィ・レディ-朱雀の陣- +function c100000295.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100000295.condition) + e1:SetOperation(c100000295.activate) + c:RegisterEffect(e1) +end +function c100000295.cfilter(c) + return c:IsFaceup() and c:IsCode(76812113) +end +function c100000295.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000295.cfilter,tp,LOCATION_MZONE,0,2,nil) + and tp~=Duel.GetTurnPlayer() +end +function c100000295.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c100000296.lua b/script/c100000296.lua new file mode 100644 index 00000000..4ce86bdf --- /dev/null +++ b/script/c100000296.lua @@ -0,0 +1,35 @@ +--ハーピィの羽根吹雪 +function c100000296.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100000296.condition) + e1:SetTarget(c100000296.target) + e1:SetOperation(c100000296.activate) + c:RegisterEffect(e1) +end +function c100000296.filter(c) + return c:IsFaceup() and c:IsSetCard(0x64) +end +function c100000296.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.IsExistingMatchingCard(c100000296.filter,tp,LOCATION_MZONE,0,1,nil) + and re:IsActiveType(TYPE_MONSTER) and ph>=0x08 and ph<=0x20 and tp~=ep +end +function c100000296.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100000296.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c100000297.lua b/script/c100000297.lua new file mode 100644 index 00000000..3a9fc0a7 --- /dev/null +++ b/script/c100000297.lua @@ -0,0 +1,70 @@ +--エアロの爪 +function c100000297.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(c100000297.target) + e1:SetOperation(c100000297.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + 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(c100000297.eqlimit) + c:RegisterEffect(e3) + --tograve replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_SEND_REPLACE) + e4:SetTarget(c100000297.reptg) + e4:SetOperation(c100000297.repop) + c:RegisterEffect(e4) +end +function c100000297.eqlimit(e,c) + return c:IsCode(76812113) +end +function c100000297.filter(c) + return c:IsFaceup() and c:IsCode(76812113) +end +function c100000297.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c100000297.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000297.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c100000297.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000297.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 c100000297.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then return eq and c:GetDestination()==LOCATION_GRAVE + and Duel.IsExistingMatchingCard(c100000297.filter,tp,LOCATION_MZONE,0,1,eq) end + if Duel.SelectYesNo(tp,aux.Stringid(100000297,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectMatchingCard(tp,c100000297.filter,tp,LOCATION_MZONE,0,1,1,eq) + e:SetLabelObject(g:GetFirst()) + Duel.HintSelection(g) + return true + else return false end +end +function c100000297.repop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Equip(tp,e:GetHandler(),tc) +end diff --git a/script/c10000030.lua b/script/c10000030.lua index 4118e27a..5cf7c874 100644 --- a/script/c10000030.lua +++ b/script/c10000030.lua @@ -8,7 +8,7 @@ function c10000030.initial_effect(c) e1:SetDescription(aux.Stringid(10000030,1)) e1:SetCategory(CATEGORY_CONTROL) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e1:SetCost(c10000030.cost) @@ -20,7 +20,7 @@ function c10000030.initial_effect(c) e2:SetDescription(aux.Stringid(10000030,2)) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e2:SetCost(c10000030.cost) diff --git a/script/c100000300.lua b/script/c100000300.lua new file mode 100644 index 00000000..aa4c63d3 --- /dev/null +++ b/script/c100000300.lua @@ -0,0 +1,14 @@ +--The Despair Uranus +function c100000300.initial_effect(c) + --atk + 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:SetValue(c100000300.value) + c:RegisterEffect(e1) +end +function c100000300.value(e,c) + return Duel.GetMatchingGroupCount(Card.IsFaceup,e:GetHandler():GetControler(),LOCATION_SZONE,0,nil)*300 +end diff --git a/script/c100000301.lua b/script/c100000301.lua new file mode 100644 index 00000000..c07bb679 --- /dev/null +++ b/script/c100000301.lua @@ -0,0 +1,52 @@ +--The blazing MARS +function c100000301.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetCondition(c100000301.spcon) + e1:SetOperation(c100000301.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c100000301.cost) + e2:SetTarget(c100000301.target) + e2:SetOperation(c100000301.operation) + c:RegisterEffect(e2) +end +function c100000301.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c100000301.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000301.filter,tp,LOCATION_GRAVE,0,3,nil) +end +function c100000301.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100000301.filter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c100000301.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local cc=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_MZONE,0,1,1,nil); + Duel.SendtoGrave(cc,REASON_COST) +end +function c100000301.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c100000301.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000302.lua b/script/c100000302.lua new file mode 100644 index 00000000..bac938e4 --- /dev/null +++ b/script/c100000302.lua @@ -0,0 +1,56 @@ +--The grand JUPITER +function c100000302.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c100000302.spcost) + e1:SetTarget(c100000302.eqtg) + e1:SetOperation(c100000302.eqop) + c:RegisterEffect(e1) +end +function c100000302.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,2,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,2,2,REASON_COST+REASON_DISCARD,nil) +end +function c100000302.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToChangeControler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsAbleToChangeControler,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsAbleToChangeControler,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c100000302.eqlimit(e,c) + return e:GetOwner()==c +end +function c100000302.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if tc:IsFacedown() or atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c100000302.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + tc:RegisterEffect(e1) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end diff --git a/script/c100000303.lua b/script/c100000303.lua new file mode 100644 index 00000000..79f2c7e0 --- /dev/null +++ b/script/c100000303.lua @@ -0,0 +1,57 @@ +--The tripping MERCURY +function c100000303.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c100000303.ttcon) + e1:SetOperation(c100000303.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE+1) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c100000303.destg) + e2:SetOperation(c100000303.desop) + c:RegisterEffect(e2) +end +function c100000303.ttcon(e,c) + if c==nil then return true end + return Duel.GetTributeCount(c)>=3 +end +function c100000303.ttop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g, REASON_SUMMON+REASON_MATERIAL) +end +function c100000303.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler(),TYPE_MONSTER)>0 end + if e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE+1 then + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler(),TYPE_MONSTER) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) + else + e:SetCategory(CATEGORY_ATKCHANGE) + end +end +function c100000303.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE+1 then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + else + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler(),TYPE_MONSTER) + Duel.ChangePosition(g,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c100000304.lua b/script/c100000304.lua new file mode 100644 index 00000000..8d7fc2be --- /dev/null +++ b/script/c100000304.lua @@ -0,0 +1,43 @@ +--The Suppression Pluto +function c100000304.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c100000304.target) + e1:SetOperation(c100000304.operation) + c:RegisterEffect(e1) +end +function c100000304.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 + and Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,nil) + and (Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) or Duel.IsExistingTarget(nil,tp,0,LOCATION_SZONE,1,nil)) end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + e:GetHandler():SetHint(CHINT_CARD,ac) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,0,1,0,0) +end +function c100000304.filter(c) + return (c:IsType(TYPE_MONSTER) and c:IsControlerCanBeChanged()) or not c:IsType(TYPE_MONSTER) +end +function c100000304.operation(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,ac) + local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.ConfirmCards(tp,hg) + if g:GetCount()>0 then + local tc=Duel.SelectMatchingCard(tp,c100000304.filter,tp,0,LOCATION_ONFIELD,1,1,nil):GetFirst() + if tc and not Duel.GetControl(tc,tp) then + if not tc:IsType(TYPE_MONSTER) then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,tc:GetPosition(),true) + end + end + end + Duel.ShuffleHand(1-tp) +end diff --git a/script/c100000307.lua b/script/c100000307.lua new file mode 100644 index 00000000..c2488305 --- /dev/null +++ b/script/c100000307.lua @@ -0,0 +1,67 @@ +--穢された大地 +function c100000307.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetTarget(c100000307.target) + e1:SetOperation(c100000307.activate) + c:RegisterEffect(e1) + if not c100000307.global_check then + c100000307.global_check=true + c100000307[0]=true + c100000307[1]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(c100000307.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c100000307.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c100000307.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if not tc:IsStatus(STATUS_BATTLE_DESTROYED) and tc:GetLevel()>=5 and tc:IsPreviousPosition(POS_FACEUP) + and tc:IsPreviousLocation(LOCATION_MZONE) then + c100000307[tc:GetPreviousControler()]=true + end + tc=eg:GetNext() + end +end +function c100000307.clear(e,tp,eg,ep,ev,re,r,rp) + c100000307[0]=false + c100000307[1]=false +end +function c100000307.filter(c,e,tp) + return c:IsSetCard(0x21) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000307.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c100000307[tp] + and Duel.IsExistingMatchingCard(c100000307.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000307.activate(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 tc=Duel.SelectMatchingCard(tp,c100000307.filter,tp,0x13,0,1,1,nil,e,tp):GetFirst() + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100000308.lua b/script/c100000308.lua new file mode 100644 index 00000000..33eb3871 --- /dev/null +++ b/script/c100000308.lua @@ -0,0 +1,52 @@ +--デブリステーション +function c100000308.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000308.condition) + e1:SetTarget(c100000308.target) + e1:SetOperation(c100000308.operation) + c:RegisterEffect(e1) +end +function c100000308.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp + and c:IsCode(50400231) +end +function c100000308.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000308.cfilter,1,nil,tp) +end +function c100000308.spfilter(c,e,tp) + return c:IsCode(100000022) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,true,false) +end +function c100000308.gfilter(c) + return c:IsCode(50400231) and c:IsAbleToGrave() +end +function c100000308.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000308.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) + and Duel.IsExistingMatchingCard(c100000308.gfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,2,nil) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000308.operation(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c100000308.gfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,nil) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or g1:GetCount()~=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=g1:Select(tp,2,2,nil) + Duel.SendtoGrave(g2,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000308.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,SUMMON_TYPE_FUSION,tp,tp,true,false,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(3000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + tc:CompleteProcedure() + end +end diff --git a/script/c100000309.lua b/script/c100000309.lua new file mode 100644 index 00000000..eb128d82 --- /dev/null +++ b/script/c100000309.lua @@ -0,0 +1,114 @@ +--ワイゼルA5 +function c100000309.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000309.spcon) + e1:SetOperation(c100000309.spop) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c100000309.sdcon2) + e2:SetOperation(c100000309.sdop) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_PIERCE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c100000309.tg) + c:RegisterEffect(e3) + --negate + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(67098114,0)) + e4:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_CHAINING) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c100000309.discon) + e4:SetTarget(c100000309.distg) + e4:SetOperation(c100000309.disop) + c:RegisterEffect(e4) + --chain attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c100000309.piercecon) + e5:SetOperation(c100000309.piercetg) + c:RegisterEffect(e5) +end +function c100000309.spfilter(c,code) + return c:IsCode(100000048) +end +function c100000309.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100000309.spfilter,1,nil) +end +function c100000309.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c100000309.spfilter,1,1,nil) + Duel.Release(g1,REASON_COST) +end +function c100000309.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000309.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100000309.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c100000309.sdop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end + +function c100000309.tg(e,c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c100000309.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and Duel.GetAttacker() and Duel.GetAttacker():IsSetCard(0x3013) + and ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP) and Duel.IsChainNegatable(ev) +end +function c100000309.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100000309.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c100000309.piercecon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a:IsControler(tp) and d:IsDefensePos() and a:IsSetCard(0x3013) +end +function c100000309.piercetg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc and tc:IsFaceup() then + --deepen damage + 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:SetOperation(c100000309.dop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c100000309.dop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end diff --git a/script/c100000312.lua b/script/c100000312.lua new file mode 100644 index 00000000..f4bc7c39 --- /dev/null +++ b/script/c100000312.lua @@ -0,0 +1,46 @@ +--過去世 +function c100000312.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetLabel(0) + e1:SetCost(c100000312.cost) + e1:SetTarget(c100000312.target) + e1:SetOperation(c100000312.activate) + c:RegisterEffect(e1) +end +function c100000312.filter1(c,e,tp) + local lv=c:GetLevel() + local atk=c:GetAttack() + return lv>0 and Duel.IsExistingMatchingCard(c100000312.filter2,tp,LOCATION_EXTRA,0,1,nil,lv,atk,e,tp) +end +function c100000312.filter2(c,lv,atk,e,tp) + return c:GetLevel()==lv and c:GetAttack()==atk and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000312.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return Duel.CheckReleaseGroup(tp,c100000312.filter1,1,nil,e,tp) end + local rg=Duel.SelectReleaseGroup(tp,c100000312.filter1,1,1,nil,e,tp) + Duel.Release(rg,REASON_COST) + e:SetLabel(rg:GetFirst():GetAttack()) + e:SetLabelObject(rg:GetFirst()) +end +function c100000312.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()==0 then return false end + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000312.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local atk=e:GetLabel() + local lv=e:GetLabelObject():GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000312.filter2,tp,LOCATION_EXTRA,0,1,1,nil,lv,atk,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c100000315.lua b/script/c100000315.lua new file mode 100644 index 00000000..394a1d5c --- /dev/null +++ b/script/c100000315.lua @@ -0,0 +1,12 @@ +--ジャイアント・レックス +function c100000315.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetCondition(c100000315.atcon) + c:RegisterEffect(e1) +end +function c100000315.atcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==0 +end diff --git a/script/c100000316.lua b/script/c100000316.lua new file mode 100644 index 00000000..bebef467 --- /dev/null +++ b/script/c100000316.lua @@ -0,0 +1,9 @@ +--ラスオブタクス・マンモス +function c100000316.initial_effect(c) + --reflect battle dam + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e1:SetValue(1) + c:RegisterEffect(e1) +end diff --git a/script/c100000317.lua b/script/c100000317.lua new file mode 100644 index 00000000..d1b317b5 --- /dev/null +++ b/script/c100000317.lua @@ -0,0 +1,33 @@ +--超進化薬・改 +function c100000317.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000317.cost) + e1:SetTarget(c100000317.target) + e1:SetOperation(c100000317.activate) + c:RegisterEffect(e1) +end +function c100000317.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_WINDBEAST) end + local g=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,RACE_WINDBEAST) + Duel.Release(g,REASON_COST) +end +function c100000317.filter(c,e,tp) + return c:IsRace(RACE_DINOSAUR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000317.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100000317.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000317.activate(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,c100000317.filter,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 diff --git a/script/c100000318.lua b/script/c100000318.lua new file mode 100644 index 00000000..0b584be1 --- /dev/null +++ b/script/c100000318.lua @@ -0,0 +1,45 @@ +--究極進化薬 +function c100000318.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000318.cost) + e1:SetTarget(c100000318.target) + e1:SetOperation(c100000318.activate) + c:RegisterEffect(e1) +end +function c100000318.cfilter1(c,e,tp) + return c:IsRace(RACE_MACHINE) and c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c100000318.cfilter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,c,e,tp,c) +end +function c100000318.cfilter2(c,e,tp,rc) + return c:IsRace(RACE_DINOSAUR) and c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c100000318.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,c,e,tp,rc) +end +function c100000318.filter(c,e,tp,rc) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_DINOSAUR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and c~=rc +end +function c100000318.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000318.cfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100000318.cfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c100000318.cfilter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,g1:GetFirst(),e,tp,g1:GetFirst()) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c100000318.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c100000318.activate(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,c100000318.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp,nil) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000320.lua b/script/c100000320.lua new file mode 100644 index 00000000..d4b77ba5 --- /dev/null +++ b/script/c100000320.lua @@ -0,0 +1,28 @@ +--お銚子一本 +function c100000320.initial_effect(c) + --Damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c100000320.drcon) + e1:SetTarget(c100000320.damtg) + e1:SetOperation(c100000320.damop) + c:RegisterEffect(e1) +end +function c100000320.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) + and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) + and e:GetHandler():IsPreviousPosition(POS_FACEDOWN) +end +function c100000320.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c100000320.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000321.lua b/script/c100000321.lua new file mode 100644 index 00000000..ab21b6a3 --- /dev/null +++ b/script/c100000321.lua @@ -0,0 +1,28 @@ +--酔いどれタイガー +function c100000321.initial_effect(c) + --Disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c100000321.disop) + c:RegisterEffect(e1) +end +function c100000321.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + if tc and tc:IsType(TYPE_FLIP) and tc:IsPreviousPosition(POS_FACEDOWN_DEFENSE) + and Duel.GetAttacker()==c then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x17a0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x17a0000) + tc:RegisterEffect(e2) + end +end + diff --git a/script/c100000322.lua b/script/c100000322.lua new file mode 100644 index 00000000..4158d2ce --- /dev/null +++ b/script/c100000322.lua @@ -0,0 +1,15 @@ +--酔いどれエンジェル +function c100000322.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(c100000322.efilter) + c:RegisterEffect(e1) +end + +function c100000322.efilter(e,re) + return re:GetOwner():IsCode(100000323) +end diff --git a/script/c100000323.lua b/script/c100000323.lua new file mode 100644 index 00000000..5f599c7a --- /dev/null +++ b/script/c100000323.lua @@ -0,0 +1,57 @@ +--ちゃぶ台返し +function c100000323.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000323,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000323.condition) + e2:SetCost(c100000323.cost) + e2:SetTarget(c100000323.target) + e2:SetOperation(c100000323.operation) + c:RegisterEffect(e2) +end +function c100000323.confilter(c) + return c:IsFaceup() and (c:IsCode(100000322) or c:IsCode(100000321) or c:IsCode(511000719)) +end +function c100000323.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000323.confilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100000323.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 end + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c100000323.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0,e:GetHandler()) +end +function c100000323.cfilter(c) + return c:IsType(TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP) +end +function c100000323.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + local ct=g:FilterCount(c100000323.cfilter,nil) + if ct==0 then return end + Duel.BreakEffect() + local dg=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,ct,nil) + Duel.Destroy(dg,REASON_EFFECT) +end diff --git a/script/c100000330.lua b/script/c100000330.lua new file mode 100644 index 00000000..ef2e1c95 --- /dev/null +++ b/script/c100000330.lua @@ -0,0 +1,74 @@ +--Fairy Tale序章 旅立ちの暁光 +function c100000330.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --unnegatable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PREDRAW) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e3:SetCondition(c100000330.accon) + e3:SetOperation(c100000330.acop) + c:RegisterEffect(e3) + local e2=e3:Clone() + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + c:RegisterEffect(e2) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(EFFECT_CHANGE_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,1) + e4:SetValue(c100000330.val) + c:RegisterEffect(e4) + if not c100000330.global_check then + c100000330.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c100000330.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c100000330.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c100000330.val(e,re,dam,r,rp,rc) + if bit.band(r,REASON_BATTLE)~=0 then return dam/2 + else return dam end +end +function c100000330.filter(c,tp) + return c:IsCode(100000331) and c:GetActivateEffect():IsActivatable(tp) +end +function c100000330.accon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetTurnID()~=Duel.GetTurnCount() +end +function c100000330.acop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local tc=Duel.SelectMatchingCard(tp,c100000330.filter,tp,0x13,0,1,1,nil,tp):GetFirst() + if tc then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.BreakEffect() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end +end diff --git a/script/c100000331.lua b/script/c100000331.lua new file mode 100644 index 00000000..e1c22569 --- /dev/null +++ b/script/c100000331.lua @@ -0,0 +1,74 @@ +--Fairy Tale 第二章 暴怒の太陽 +function c100000331.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --unnegatable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PREDRAW) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e3:SetCondition(c100000331.accon) + e3:SetOperation(c100000331.acop) + c:RegisterEffect(e3) + local e2=e3:Clone() + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + c:RegisterEffect(e2) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(EFFECT_CHANGE_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,1) + e4:SetValue(c100000331.val) + c:RegisterEffect(e4) + if not c100000331.global_check then + c100000331.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c100000331.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c100000331.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c100000331.val(e,re,dam,r,rp,rc) + if bit.band(r,REASON_BATTLE)~=0 then return dam*2 + else return dam end +end +function c100000331.filter(c,tp) + return c:IsCode(100000332) and c:GetActivateEffect():IsActivatable(tp) +end +function c100000331.accon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetTurnID()~=Duel.GetTurnCount() +end +function c100000331.acop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local tc=Duel.SelectMatchingCard(tp,c100000331.filter,tp,0x13,0,1,1,nil,tp):GetFirst() + if tc then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.BreakEffect() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end +end diff --git a/script/c100000332.lua b/script/c100000332.lua new file mode 100644 index 00000000..015ad330 --- /dev/null +++ b/script/c100000332.lua @@ -0,0 +1,88 @@ +--Fairy Tale第三章 黄昏の夕日 +function c100000332.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_BOTH_SIDE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c100000332.sptg) + e2:SetOperation(c100000332.spop) + c:RegisterEffect(e2) + --unnegatable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PREDRAW) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e3:SetCondition(c100000332.accon) + e3:SetOperation(c100000332.acop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + c:RegisterEffect(e4) + if not c100000332.global_check then + c100000332.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c100000332.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c100000332.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c100000332.filter(c,tp) + return c:IsCode(100000333) and c:GetActivateEffect():IsActivatable(tp) +end +function c100000332.accon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetTurnID()~=Duel.GetTurnCount() +end +function c100000332.acop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local tc=Duel.SelectMatchingCard(tp,c100000332.filter,tp,0x13,0,1,1,nil,tp):GetFirst() + if tc then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.BreakEffect() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end +end +function c100000332.spfilter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000332.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000332.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000332.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000332.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000332.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c100000333.lua b/script/c100000333.lua new file mode 100644 index 00000000..3087bb02 --- /dev/null +++ b/script/c100000333.lua @@ -0,0 +1,115 @@ +--Fairy Tale最終章 忘却の妖月 +function c100000333.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c100000333.tg) + e2:SetOperation(c100000333.op) + c:RegisterEffect(e2) + --unnegatable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PREDRAW) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e3:SetCondition(c100000333.accon) + e3:SetOperation(c100000333.acop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + c:RegisterEffect(e4) + if not c100000333.global_check then + c100000333.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c100000333.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c100000333.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c100000333.filter(c,tp) + return c:IsCode(100000330) and c:GetActivateEffect():IsActivatable(tp) +end +function c100000333.accon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetTurnID()~=Duel.GetTurnCount() +end +function c100000333.acop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local tc=Duel.SelectMatchingCard(tp,c100000333.filter,tp,0x13,0,1,1,nil,tp):GetFirst() + if tc then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.BreakEffect() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end +end +function c100000333.pofilter1(c,e,tp) + return c:GetPosition()==POS_FACEUP_ATTACK and c:GetPreviousPosition()>0x3 +end +function c100000333.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return eg:IsContains(chkc) and c100000333.pofilter1(chkc) end + if chk==0 then return eg:IsExists(c100000333.pofilter1,1,nil) end + return true +end +function c100000333.spop2(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c100000333.pofilter1,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(tc:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c100000333.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFlagEffect(tp,100000330)==0 +end +function c100000333.posfilter(c,e) + return bit.band(c:GetPreviousPosition(),POS_DEFENSE)~=0 and c:IsPosition(POS_FACEUP_ATTACK) + and (not e or c:IsRelateToEffect(e)) +end +function c100000333.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c100000333.posfilter,1,nil) and rp==tp end + Duel.SetTargetCard(eg) +end +function c100000333.op(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c100000333.posfilter,nil,e) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c100000335.lua b/script/c100000335.lua new file mode 100644 index 00000000..09742cf9 --- /dev/null +++ b/script/c100000335.lua @@ -0,0 +1,33 @@ +--シューティング・ミラージュ +function c100000335.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000335.condition) + e1:SetTarget(c100000335.target) + e1:SetOperation(c100000335.activate) + c:RegisterEffect(e1) +end +function c100000335.cfilter(c,tp) + return c:IsCode(83994433) and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) +end +function c100000335.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000335.cfilter,1,nil,tp) +end +function c100000335.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100000335.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100000336.lua b/script/c100000336.lua new file mode 100644 index 00000000..a0c43d7e --- /dev/null +++ b/script/c100000336.lua @@ -0,0 +1,35 @@ +--琰魔竜 レッド・デーモン +function c100000336.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000336,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c100000336.target) + e1:SetOperation(c100000336.operation) + c:RegisterEffect(e1) +end +function c100000336.filter(c) + return c:IsAttackPos() and c:IsDestructable() +end +function c100000336.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c100000336.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + local sg=Duel.GetMatchingGroup(c100000336.filter,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000336.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100000336.filter,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + local ct=sg:GetCount() + if Duel.Destroy(sg,REASON_EFFECT)~=ct then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) + end +end diff --git a/script/c100000340.lua b/script/c100000340.lua new file mode 100644 index 00000000..d46cd677 --- /dev/null +++ b/script/c100000340.lua @@ -0,0 +1,18 @@ +--森の忍者バット +function c100000340.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000340,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000340.spcon) + c:RegisterEffect(e1) +end +function c100000340.spcon(e,c) + local tc=Duel.GetFieldCard(0,LOCATION_SZONE,5) + if tc and tc:IsFaceup() then return true end + tc=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return tc and tc:IsFaceup() +end \ No newline at end of file diff --git a/script/c100000341.lua b/script/c100000341.lua new file mode 100644 index 00000000..bd0a5d66 --- /dev/null +++ b/script/c100000341.lua @@ -0,0 +1,22 @@ +--森の剣士 ベリー +function c100000341.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000341,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c100000341.damtg) + e1:SetOperation(c100000341.damop) + c:RegisterEffect(e1) +end +function c100000341.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c100000341.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000342.lua b/script/c100000342.lua new file mode 100644 index 00000000..b114b8f3 --- /dev/null +++ b/script/c100000342.lua @@ -0,0 +1,40 @@ +--森の盗賊 チップ +function c100000342.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000342,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c100000342.sumcon) + e1:SetTarget(c100000342.sumtg) + e1:SetOperation(c100000342.sumop) + c:RegisterEffect(e1) +end +function c100000342.sumcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c100000342.sumfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_BEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000342.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000342.sumfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100000342.sumop(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,c100000342.sumfilter,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 \ No newline at end of file diff --git a/script/c100000343.lua b/script/c100000343.lua new file mode 100644 index 00000000..9d83a5ad --- /dev/null +++ b/script/c100000343.lua @@ -0,0 +1,43 @@ +--森の聖騎士 ワンコ +function c100000343.initial_effect(c) + --target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetCondition(c100000343.tgcon) + e1:SetTarget(c100000343.tglimit) + e1:SetValue(1) + c:RegisterEffect(e1) + --destroyed + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000343,0)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetOperation(c100000343.desop) + c:RegisterEffect(e2) +end +function c100000343.tgcon(e,c) + local tc=Duel.GetFieldCard(0,LOCATION_SZONE,5) + if tc and tc:IsFaceup() then return true end + tc=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return tc and tc:IsFaceup() +end +function c100000343.tglimit(e,c) + return c~=e:GetHandler() +end +function c100000343.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not bc:IsRelateToBattle() or bc:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-300) + bc:RegisterEffect(e1) +end diff --git a/script/c100000344.lua b/script/c100000344.lua new file mode 100644 index 00000000..1533b7b3 --- /dev/null +++ b/script/c100000344.lua @@ -0,0 +1,30 @@ +--森の策士 コン +function c100000344.initial_effect(c) + --return hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000344,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c100000344.rettg) + e2:SetOperation(c100000344.retop) + c:RegisterEffect(e2) +end +function c100000344.filter(c) + return c:IsType(TYPE_FIELD) and c:IsFaceup() and c:IsAbleToHand() +end +function c100000344.rettg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(c100000344.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c100000344.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c100000344.retop(e) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c100000345.lua b/script/c100000345.lua new file mode 100644 index 00000000..16f7f707 --- /dev/null +++ b/script/c100000345.lua @@ -0,0 +1,33 @@ +--森の旅人 ニャント +function c100000345.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000345,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c100000345.con) + e1:SetTarget(c100000345.target) + e1:SetOperation(c100000345.activate) + c:RegisterEffect(e1) +end +function c100000345.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsType(TYPE_FIELD) and Duel.IsChainDisablable(ev) +end +function c100000345.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100000345.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100000346.lua b/script/c100000346.lua new file mode 100644 index 00000000..806e8a97 --- /dev/null +++ b/script/c100000346.lua @@ -0,0 +1,34 @@ +--森の商人 ポン +function c100000346.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000346,0)) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c100000346.rettg) + e1:SetOperation(c100000346.retop) + c:RegisterEffect(e1) +end +function c100000346.filter(c) + return c:IsType(TYPE_FIELD) and c:IsAbleToDeck() + and Duel.IsExistingMatchingCard(c100000346.filter2,c:GetControler(),LOCATION_DECK,0,1,c) +end +function c100000346.filter2(c) + return c:IsType(TYPE_FIELD) and c:IsAbleToHand() +end +function c100000346.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000346.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100000346.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c100000346.filter,tp,LOCATION_HAND,0,1,1,nil) + local ct=g:GetFirst() + Duel.SendtoDeck(g,nil,1,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local dg=Duel.SelectMatchingCard(tp,c100000346.filter2,tp,LOCATION_DECK,0,1,1,ct) + Duel.SendtoHand(dg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,dg) +end diff --git a/script/c100000347.lua b/script/c100000347.lua new file mode 100644 index 00000000..39f85ede --- /dev/null +++ b/script/c100000347.lua @@ -0,0 +1,30 @@ +--森の霊媒師ゲッコ +function c100000347.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000347,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c100000347.target) + e1:SetOperation(c100000347.operation) + c:RegisterEffect(e1) +end +function c100000347.filter(c,e,tp) + return c:IsSetCard(0x308) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000347.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000347.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and + Duel.IsExistingTarget(c100000347.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000347.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000347.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000348.lua b/script/c100000348.lua new file mode 100644 index 00000000..cba3e6fb --- /dev/null +++ b/script/c100000348.lua @@ -0,0 +1,44 @@ +--マッハ・シンクロン +function c100000348.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000348,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetOperation(c100000348.regop) + c:RegisterEffect(e1) +end +function c100000348.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000348,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_GRAVE) + e1:SetTarget(c100000348.thtg) + e1:SetOperation(c100000348.thop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c100000348.filter(c) + return bit.band(c:GetReason(),REASON_SYNCHRO)==REASON_SYNCHRO and c:IsAbleToHand() +end +function c100000348.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000348.filter(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c100000348.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectTarget(tp,c100000348.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c100000348.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c100000349.lua b/script/c100000349.lua new file mode 100644 index 00000000..be136428 --- /dev/null +++ b/script/c100000349.lua @@ -0,0 +1,43 @@ +--チーム・プレー +function c100000349.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000349.target) + e1:SetOperation(c100000349.activate) + c:RegisterEffect(e1) +end +function c100000349.filter1(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingTarget(c100000349.filter2,tp,LOCATION_MZONE,0,1,nil,c:GetRace()) +end +function c100000349.filter2(c,rc) + local lv=c:GetLevel() + return lv>0 and c:IsRace(rc) and c:IsFaceup() and Duel.IsExistingTarget(c100000349.filter3,tp,LOCATION_MZONE,0,1,c,rc,lv) +end +function c100000349.filter3(c,rc,lv) + local lv2=c:GetLevel() + return lv2==lv and c:IsFaceup() and c:IsRace(rc) +end +function c100000349.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c100000349.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000349.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000349.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000349.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100000350.lua b/script/c100000350.lua new file mode 100644 index 00000000..80023f7f --- /dev/null +++ b/script/c100000350.lua @@ -0,0 +1,70 @@ +--氷炎の世界 +function c100000350.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --xyz + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(511001225) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c100000350.target) + c:RegisterEffect(e2) + if not c100000350.global_check then + c100000350.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c100000350.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c100000350.target(e,c) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsFaceup() +end +function c100000350.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c100000351.lua b/script/c100000351.lua new file mode 100644 index 00000000..7c1aa25f --- /dev/null +++ b/script/c100000351.lua @@ -0,0 +1,55 @@ +--トラクター・リバース +function c100000351.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000351.cost) + e1:SetTarget(c100000351.target) + e1:SetOperation(c100000351.activate) + c:RegisterEffect(e1) +end +function c100000351.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetTargetRange(1,0) + Duel.RegisterEffect(e2,tp) +end +function c100000351.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()==0 +end +function c100000351.filter2(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsFacedown() +end +function c100000351.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100000351.filter(chkc) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsExistingTarget(c100000351.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c100000351.filter2,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c100000351.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000351.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + local g=Duel.SelectMatchingCard(tp,c100000351.filter2,tp,0,LOCATION_SZONE,1,1,e:GetHandler()) + if g:GetCount()>0 then + c:CancelToGrave() + g:AddCard(c) + Duel.Overlay(tc,g) + end + end +end diff --git a/script/c100000355.lua b/script/c100000355.lua new file mode 100644 index 00000000..794b8b22 --- /dev/null +++ b/script/c100000355.lua @@ -0,0 +1,43 @@ +--護封剣の剣士 +function c100000355.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000355.spcon) + e1:SetOperation(c100000355.spop) + c:RegisterEffect(e1) + --negate attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetOperation(c100000355.operation) + c:RegisterEffect(e2) + --battle des rep + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetCountLimit(1) + e3:SetTarget(c100000355.reptg) + c:RegisterEffect(e3) +end +function c100000355.spcon(e,c) + if c==nil then return true end + return Duel.CheckReleaseGroup(c:GetControler(),nil,2,nil) +end +function c100000355.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),nil,2,2,nil) + Duel.Release(g,REASON_COST) +end +function c100000355.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c100000355.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReason(REASON_BATTLE) end + return true +end + diff --git a/script/c100000360.lua b/script/c100000360.lua new file mode 100644 index 00000000..19579eb1 --- /dev/null +++ b/script/c100000360.lua @@ -0,0 +1,25 @@ +--シャイニング・ボンバー +function c100000360.initial_effect(c) + --battle destroyed + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000360,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c100000360.condition) + e1:SetTarget(c100000360.target) + e1:SetOperation(c100000360.operation) + c:RegisterEffect(e1) +end +function c100000360.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler() and e:GetHandler():IsReason(REASON_BATTLE) +end +function c100000360.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,800) +end +function c100000360.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,800,REASON_EFFECT,true) + Duel.Damage(1-tp,800,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c100000361.lua b/script/c100000361.lua new file mode 100644 index 00000000..f7144e28 --- /dev/null +++ b/script/c100000361.lua @@ -0,0 +1,30 @@ +--シャイニング・ラビット +function c100000361.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000361,1)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c100000361.descon) + e1:SetTarget(c100000361.destg) + e1:SetOperation(c100000361.desop) + c:RegisterEffect(e1) +end +function c100000361.descon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c100000361.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c100000361.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100000361.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100000363.lua b/script/c100000363.lua new file mode 100644 index 00000000..62963da1 --- /dev/null +++ b/script/c100000363.lua @@ -0,0 +1,30 @@ +--シャイニング・ブリッジ +function c100000363.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000363.target) + e1:SetOperation(c100000363.activate) + c:RegisterEffect(e1) +end +function c100000363.filter(c) + return c:IsFaceup() and c:IsAttackBelow(1000) and c:IsSetCard(0x311) +end +function c100000363.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000363.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000363.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000363.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000363.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100000364.lua b/script/c100000364.lua new file mode 100644 index 00000000..156bf879 --- /dev/null +++ b/script/c100000364.lua @@ -0,0 +1,74 @@ +--Eternal Reverse +function c100000364.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(c100000364.target) + e1:SetOperation(c100000364.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --Turn Set + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetTarget(c100000364.tstg) + e3:SetOperation(c100000364.tsop) + c:RegisterEffect(e3) + --Save Monster + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetTarget(c100000364.destg) + e4:SetOperation(c100000364.desop) + c:RegisterEffect(e4) +end +function c100000364.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 c100000364.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 c100000364.filter(c) + return c:IsFaceup() and c:IsCanTurnSet() +end +function c100000364.tstg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c100000364.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000364.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c100000364.filter,tp,0,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c100000364.tsop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.ChangePosition(tc,POS_FACEDOWN) + end +end +function c100000364.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tg=c:GetEquipTarget() + if chk==0 then return c and not c:IsStatus(STATUS_DESTROY_CONFIRMED) + and tg and tg:IsReason(REASON_BATTLE) end + return Duel.SelectYesNo(tp,aux.Stringid(100000364,0)) +end +function c100000364.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end \ No newline at end of file diff --git a/script/c100000365.lua b/script/c100000365.lua new file mode 100644 index 00000000..0eb769ef --- /dev/null +++ b/script/c100000365.lua @@ -0,0 +1,66 @@ +--Dimension Fusion Destruction +function c100000365.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000365.target) + e1:SetOperation(c100000365.activate) + c:RegisterEffect(e1) +end +function c100000365.tfilter(c,e,tp) + return c:IsCode(43378048) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000365.filter(c,code) + return c:IsCode(code) and c:IsAbleToRemove() +end +function c100000365.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if not Duel.IsExistingMatchingCard(c100000365.tfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) then return false end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + local g1=Duel.GetMatchingGroup(c100000365.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,6007213) + local g2=Duel.GetMatchingGroup(c100000365.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,32491822) + local g3=Duel.GetMatchingGroup(c100000365.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,69890967) + if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f3=g3:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + if ft==-2 then return f1+f2+f3==3 + elseif ft==-1 then return f1+f2+f3>=2 + else return f1+f2+f3>=1 end + end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,3,0,LOCATION_ONFIELD+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000365.activate(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(c100000365.tfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) then return end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c100000365.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,6007213) + local g2=Duel.GetMatchingGroup(c100000365.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,32491822) + local g3=Duel.GetMatchingGroup(c100000365.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,69890967) + g1:Merge(g2) + g1:Merge(g3) + local g=Group.CreateGroup() + local tc=nil + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + g1:Remove(Card.IsCode,nil,tc:GetCode()) + ft=ft+1 + end + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local sg=Duel.SelectMatchingCard(tp,c100000365.tfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if sg:GetCount()>0 then + Duel.BreakEffect() + Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c100000370.lua b/script/c100000370.lua new file mode 100644 index 00000000..2b4a6fa9 --- /dev/null +++ b/script/c100000370.lua @@ -0,0 +1,101 @@ +--王家之劍 +function c100000370.initial_effect(c) + c:EnableCounterPermit(0x95) + --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(c100000370.target) + e1:SetOperation(c100000370.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c100000370.value) + 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(c100000370.eqfilter) + c:RegisterEffect(e3) + --DAMAGE + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCost(c100000370.dacost) + e4:SetOperation(c100000370.daop) + c:RegisterEffect(e4) + --add + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1) + e5:SetCondition(c100000370.drcon) + e5:SetOperation(c100000370.drop) + c:RegisterEffect(e5) +end +function c100000370.eqfilter(e,c) + return c:IsCode(6614221) +end +function c100000370.filter(c) + return c:IsFaceup() and c:IsCode(6614221) +end +function c100000370.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100000370.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000370.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c100000370.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000370.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 c100000370.value(e,c) + return e:GetHandler():GetCounter(0x95)*800 +end +function c100000370.dacost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:GetControler()==c:GetEquipTarget():GetControler() + and c:GetEquipTarget():IsAbleToGraveAsCost() and e:GetHandler():GetCounter(0x95)>3 end + local g=Group.FromCards(c,c:GetEquipTarget()) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000370.daop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,4000,REASON_EFFECT) +end +function c100000370.drcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + return ec and (ec==Duel.GetAttacker() or ec==Duel.GetAttackTarget()) +end +function c100000370.drop(e,tp,eg,ep,ev,re,r,rp) + local e6=Effect.CreateEffect(e:GetHandler()) + e6:SetCategory(CATEGORY_COUNTER) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetRange(LOCATION_SZONE) + e6:SetCountLimit(1) + e6:SetTarget(c100000370.actg) + e6:SetOperation(c100000370.acop) + e6:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e6) +end +function c100000370.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanAddCounter(0x95,1) end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x95) +end +function c100000370.acop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c and c:IsFaceup() and c:IsRelateToEffect(e) then + c:AddCounter(0x95,1) + end +end diff --git a/script/c100000380.lua b/script/c100000380.lua new file mode 100644 index 00000000..726c0808 --- /dev/null +++ b/script/c100000380.lua @@ -0,0 +1,38 @@ +--マグマオーシャン +function c100000380.initial_effect(c) + --activate + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_ACTIVATE) + e0:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e0) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e1:SetTarget(c100000380.target) + e1:SetOperation(c100000380.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100000380.filter(c) + return c:IsFaceup() and c:IsDestructable() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c100000380.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentChain()==0 and eg:IsExists(c100000380.filter,1,nil) end + local g=eg:Filter(c100000380.filter,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100000380.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c100000380.filter,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c100000381.lua b/script/c100000381.lua new file mode 100644 index 00000000..f644b64b --- /dev/null +++ b/script/c100000381.lua @@ -0,0 +1,33 @@ +--ジャングルフィールド +function c100000381.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_REPEAT) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCondition(c100000381.damcon) + e2:SetTarget(c100000381.damtg) + e2:SetOperation(c100000381.damop) + c:RegisterEffect(e2) +end +function c100000381.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetActivityCount(Duel.GetTurnPlayer(),ACTIVITY_NORMALSUMMON)==0 and Duel.GetActivityCount(Duel.GetTurnPlayer(),ACTIVITY_SPSUMMON)==0 +end +function c100000381.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(Duel.GetTurnPlayer()) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,Duel.GetTurnPlayer(),1000) +end +function c100000381.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000382.lua b/script/c100000382.lua new file mode 100644 index 00000000..d15ec156 --- /dev/null +++ b/script/c100000382.lua @@ -0,0 +1,33 @@ +--コズミック・フロンティア +function c100000382.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000382.condition) + e2:SetTarget(c100000382.target) + e2:SetOperation(c100000382.operation) + c:RegisterEffect(e2) +end +function c100000382.condition(e,tp,eg,ep,ev,re,r,rp) + local tg=eg:GetFirst() + return tg:GetSummonType()==SUMMON_TYPE_XYZ +end +function c100000382.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(rp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,rp,1) +end +function c100000382.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100000383.lua b/script/c100000383.lua new file mode 100644 index 00000000..753927e9 --- /dev/null +++ b/script/c100000383.lua @@ -0,0 +1,58 @@ +--デンジャラス・キャニオン +function c100000383.initial_effect(c) + --Activate + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_ACTIVATE) + e0:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e0) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_REPEAT) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c100000383.target) + e1:SetOperation(c100000383.activate) + c:RegisterEffect(e1) + --atk change + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_REPEAT) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c100000383.target2) + e2:SetOperation(c100000383.activate) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_REPEAT) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c100000383.target) + e3:SetOperation(c100000383.activate) + c:RegisterEffect(e3) +end +function c100000383.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) +end +function c100000383.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return c100000383.filter(tc) end + Duel.SetTargetPlayer(ep) + Duel.SetTargetParam(200) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,200) +end +function c100000383.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c100000383.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(ep) + Duel.SetTargetParam(200) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,200) +end diff --git a/script/c100000384.lua b/script/c100000384.lua new file mode 100644 index 00000000..7ee1602b --- /dev/null +++ b/script/c100000384.lua @@ -0,0 +1,94 @@ +--夕日の決闘場 +function c100000384.initial_effect(c) + --Activate + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_ACTIVATE) + e0:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e0) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_SZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE_START) + e1:SetCountLimit(1) + e1:SetCondition(c100000384.descon) + e1:SetTarget(c100000384.destg) + e1:SetOperation(c100000384.desop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c100000384.reccon) + e2:SetTarget(c100000384.rectg) + e2:SetOperation(c100000384.recop) + c:RegisterEffect(e2) + --cannot direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e3) +end +function c100000384.descon(e,tp,eg,ep,ev,re,r,rp,chk) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>1 or Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 +end +function c100000384.filter(c,tp) + return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,0,1,c) +end +function c100000384.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + local g=Group.CreateGroup() + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c100000384.filter,tp,LOCATION_MZONE,0,1,1,nil,tp):GetFirst() + g:AddCard(g1) + end + if Duel.GetFieldGroupCount(1-tp,LOCATION_MZONE,0)>1 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_FACEUP) + local g2=Duel.SelectTarget(1-tp,c100000384.filter,1-tp,LOCATION_MZONE,0,1,1,nil,1-tp):GetFirst() + g:AddCard(g2) + end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + sg:Sub(g) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000384.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Group.CreateGroup() + local g1=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + local g2=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:IsExists(Card.IsControler,1,nil,tp) or Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>1 then + sg:Merge(g1) + end + if tg:IsExists(Card.IsControler,1,nil,1-tp) or Duel.GetFieldGroupCount(1-tp,LOCATION_MZONE,0)>1 then + sg:Merge(g2) + end + sg:Sub(tg) + Duel.Destroy(sg,REASON_EFFECT) +end +function c100000384.reccon(e,tp,eg,ep,ev,re,r,rp) + local rc=eg:GetFirst() + return rc:IsRelateToBattle() and rc:IsFaceup() +end +function c100000384.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=eg:GetFirst():GetBattleTarget() + if not tc:IsFaceup() then + tc=eg:GetNext():GetBattleTarget() + end + Duel.SetTargetPlayer(tc:GetPreviousControler()) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tc:GetPreviousControler(),300) +end +function c100000384.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000390.lua b/script/c100000390.lua new file mode 100644 index 00000000..138d19d5 --- /dev/null +++ b/script/c100000390.lua @@ -0,0 +1,69 @@ +--超機合体 +function c100000390.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000390.target) + e1:SetOperation(c100000390.activate) + c:RegisterEffect(e1) +end +function c100000390.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsSetCard(0x16) and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c100000390.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c100000390.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000390.filter1,tp,LOCATION_GRAVE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c100000390.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c100000390.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000390.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000390.filter1,tp,LOCATION_GRAVE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c100000390.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c100000390.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end \ No newline at end of file diff --git a/script/c100000391.lua b/script/c100000391.lua new file mode 100644 index 00000000..6fd49915 --- /dev/null +++ b/script/c100000391.lua @@ -0,0 +1,31 @@ +--援軍出撃 +function c100000391.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c100000391.condition) + e1:SetTarget(c100000391.target) + e1:SetOperation(c100000391.activate) + c:RegisterEffect(e1) +end +function c100000391.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc and tc:IsFaceup() and tc:IsSetCard(0x16) +end +function c100000391.filter(c) + return c:IsSetCard(0x16) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c100000391.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000391.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100000391.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100000391.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c10000040.lua b/script/c10000040.lua index dda68240..0782a282 100644 --- a/script/c10000040.lua +++ b/script/c10000040.lua @@ -1,57 +1,57 @@ ---光の創造神 ホルアクティ -function c10000040.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c10000040.spcon) - e1:SetOperation(c10000040.spop) - c:RegisterEffect(e1) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e3) - --win - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetOperation(c10000040.winop) - c:RegisterEffect(e4) -end -function c10000040.spfilter(c,code) - local code1,code2=c:GetOriginalCodeRule() - return code1==code or code2==code -end -function c10000040.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 - and Duel.CheckReleaseGroup(tp,c10000040.spfilter,1,nil,10000000) - and Duel.CheckReleaseGroup(tp,c10000040.spfilter,1,nil,10000010) - and Duel.CheckReleaseGroup(tp,c10000040.spfilter,1,nil,10000020) -end -function c10000040.spop(e,tp,eg,ep,ev,re,r,rp,c) - local g1=Duel.SelectReleaseGroup(tp,c10000040.spfilter,1,1,nil,10000000) - local g2=Duel.SelectReleaseGroup(tp,c10000040.spfilter,1,1,nil,10000010) - local g3=Duel.SelectReleaseGroup(tp,c10000040.spfilter,1,1,nil,10000020) - g1:Merge(g2) - g1:Merge(g3) - Duel.Release(g1,REASON_COST) -end -function c10000040.winop(e,tp,eg,ep,ev,re,r,rp) - local WIN_REASON_CREATORGOD=0x13 - local p=e:GetHandler():GetSummonPlayer() - Duel.Win(p,WIN_REASON_CREATORGOD) -end +--光の創造神 ホルアクティ +function c10000040.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c10000040.spcon) + e1:SetOperation(c10000040.spop) + c:RegisterEffect(e1) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e3) + --win + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetOperation(c10000040.winop) + c:RegisterEffect(e4) +end +function c10000040.spfilter(c,code) + local code1,code2=c:GetOriginalCodeRule() + return code1==code or code2==code +end +function c10000040.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 + and Duel.CheckReleaseGroup(tp,c10000040.spfilter,1,nil,10000000) + and Duel.CheckReleaseGroup(tp,c10000040.spfilter,1,nil,10000010) + and Duel.CheckReleaseGroup(tp,c10000040.spfilter,1,nil,10000020) +end +function c10000040.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c10000040.spfilter,1,1,nil,10000000) + local g2=Duel.SelectReleaseGroup(tp,c10000040.spfilter,1,1,nil,10000010) + local g3=Duel.SelectReleaseGroup(tp,c10000040.spfilter,1,1,nil,10000020) + g1:Merge(g2) + g1:Merge(g3) + Duel.Release(g1,REASON_COST) +end +function c10000040.winop(e,tp,eg,ep,ev,re,r,rp) + local WIN_REASON_CREATORGOD=0x13 + local p=e:GetHandler():GetSummonPlayer() + Duel.Win(p,WIN_REASON_CREATORGOD) +end diff --git a/script/c100000410.lua b/script/c100000410.lua new file mode 100644 index 00000000..26c28d33 --- /dev/null +++ b/script/c100000410.lua @@ -0,0 +1,40 @@ +--薔薇の聖騎士 +function c100000410.initial_effect(c) + --sp summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCost(c100000410.spcost) + e1:SetTarget(c100000410.sptg) + e1:SetOperation(c100000410.spop) + c:RegisterEffect(e1) +end +c100000410.collection={ + [49674183]=true;[96470883]=true;[31986288]=true;[41160533]=true;[51085303]=true; + [41201555]=true;[75252099]=true;[58569561]=true;[96385345]=true;[17720747]=true; + [98884569]=true;[23087070]=true;[1557341]=true;[12469386]=true;[2986553]=true; + [51852507]=true;[44125452]=true;[61049315]=true;[79531196]=true;[89252157]=true; + [32485271]=true;[33698022]=true;[73580471]=true;[4290468]=true;[25090294]=true; + [45247637]=true;[71645243]=true;[73580471]=true;[4290468]=true;[25090294]=true; +} +function c100000410.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c100000410.filter(c,e,tp) + return (c:IsSetCard(0x218) or c100000410.collection[c:GetCode()]) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000410.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100000410.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000410.spop(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,c100000410.filter,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 diff --git a/script/c100000411.lua b/script/c100000411.lua new file mode 100644 index 00000000..2b925d34 --- /dev/null +++ b/script/c100000411.lua @@ -0,0 +1,34 @@ +--天啓の薔薇の鐘 +function c100000411.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000411.target) + e1:SetOperation(c100000411.activate) + c:RegisterEffect(e1) +end +c100000411.collection={ + [49674183]=true;[96470883]=true;[31986288]=true;[41160533]=true;[51085303]=true; + [41201555]=true;[75252099]=true;[58569561]=true;[96385345]=true;[17720747]=true; + [98884569]=true;[23087070]=true;[1557341]=true;[12469386]=true;[2986553]=true; + [51852507]=true;[44125452]=true;[61049315]=true;[79531196]=true;[89252157]=true; + [32485271]=true;[33698022]=true;[73580471]=true;[4290468]=true;[25090294]=true; + [45247637]=true;[71645243]=true;[73580471]=true;[4290468]=true;[25090294]=true; +} +function c100000411.filter(c) + return (c:IsSetCard(0x218) or c100000411.collection[c:GetCode()]) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c100000411.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000411.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100000411.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100000411.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100000412.lua b/script/c100000412.lua new file mode 100644 index 00000000..c6b57351 --- /dev/null +++ b/script/c100000412.lua @@ -0,0 +1,43 @@ +--白薔薇の回廊 +function c100000412.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000412,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c100000412.target) + e2:SetOperation(c100000412.operation) + c:RegisterEffect(e2) +end +c100000412.collection={ + [49674183]=true;[96470883]=true;[31986288]=true;[41160533]=true;[51085303]=true; + [41201555]=true;[75252099]=true;[58569561]=true;[96385345]=true;[17720747]=true; + [98884569]=true;[23087070]=true;[1557341]=true;[12469386]=true;[2986553]=true; + [51852507]=true;[44125452]=true;[61049315]=true;[79531196]=true;[89252157]=true; + [32485271]=true;[33698022]=true;[73580471]=true;[4290468]=true;[25090294]=true; + [45247637]=true;[71645243]=true;[73580471]=true;[4290468]=true;[25090294]=true; +} +function c100000412.filter(c,e,sp) + return (c:IsSetCard(0x218) or c100000412.collection[c:GetCode()]) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) +end +function c100000412.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000412.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000412.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000412.filter,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 diff --git a/script/c100000413.lua b/script/c100000413.lua new file mode 100644 index 00000000..8d074f67 --- /dev/null +++ b/script/c100000413.lua @@ -0,0 +1,39 @@ +--薔薇障壁大旋風 +function c100000413.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100000413.condition) + e1:SetCost(c100000413.cost) + e1:SetTarget(c100000413.target) + e1:SetOperation(c100000413.activate) + c:RegisterEffect(e1) +end +function c100000413.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c100000413.cosfilter(c) + return c:IsRace(RACE_PLANT) and c:IsAbleToRemoveAsCost() +end +function c100000413.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000413.cosfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c100000413.cosfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c100000413.filter(c) + return c:IsAttackPos() and c:IsDestructable() +end +function c100000413.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000413.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c100000413.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100000413.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100000413.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c100000414.lua b/script/c100000414.lua new file mode 100644 index 00000000..92bcbac5 --- /dev/null +++ b/script/c100000414.lua @@ -0,0 +1,42 @@ +--ローズ・フレイム +function c100000414.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000414,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c100000414.damcon) + e2:SetTarget(c100000414.damtg) + e2:SetOperation(c100000414.damop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c100000414.filter(c,tp) + return c:IsFaceup() and c:IsControler(1-tp) and c:IsRace(RACE_PLANT) +end +function c100000414.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000414.filter,1,nil,tp) +end +function c100000414.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c100000414.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000430.lua b/script/c100000430.lua new file mode 100644 index 00000000..e49a5f01 --- /dev/null +++ b/script/c100000430.lua @@ -0,0 +1,46 @@ +--地縛解放 +function c100000430.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c100000430.cost) + e1:SetTarget(c100000430.target) + e1:SetOperation(c100000430.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c100000430.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x21) end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x21) + Duel.Release(g,REASON_COST) +end +function c100000430.filter(c,tp) + return c:IsFaceup() and c:IsLevelAbove(6) and c:IsControler(1-tp) +end +function c100000430.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c100000430.filter,1,nil,tp) + and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local atk=g:GetSum(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c100000430.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + sg=Duel.GetOperatedGroup() + local tc=sg:GetFirst() + local atk=0 + while tc do + local oatk=tc:GetAttack() + if oatk<0 then oatk=0 end + atk=atk+oatk + tc=sg:GetNext() + end + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c100000431.lua b/script/c100000431.lua new file mode 100644 index 00000000..f4415341 --- /dev/null +++ b/script/c100000431.lua @@ -0,0 +1,32 @@ +--バイ=マーセの癇癪 +function c100000431.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100000431.condition) + e1:SetTarget(c100000431.target) + e1:SetOperation(c100000431.activate) + c:RegisterEffect(e1) +end +function c100000431.cfilter(c) + return c:IsPosition(POS_FACEUP) and c:IsSetCard(0x21) +end +function c100000431.condition(e,tp,eg,ep,ev,re,r,rp) + if ep==tp or not Duel.IsExistingMatchingCard(c100000431.cfilter,tp,LOCATION_MZONE,0,1,nil) then return false end + return Duel.IsChainNegatable(ev) and re:IsActiveType(TYPE_MONSTER) +end +function c100000431.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100000431.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c100000432.lua b/script/c100000432.lua new file mode 100644 index 00000000..3af6192e --- /dev/null +++ b/script/c100000432.lua @@ -0,0 +1,56 @@ +--縛られし神への祭壇 +function c100000432.initial_effect(c) + c:EnableCounterPermit(0x94) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetCondition(c100000432.condition) + e2:SetOperation(c100000432.ctop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c100000432.cost) + e3:SetTarget(c100000432.target) + e3:SetOperation(c100000432.op) + c:RegisterEffect(e3) +end +function c100000432.condition(e,tp,eg,ep,ev,re,r,rp,chk) + return Duel.GetTurnPlayer()==tp +end +function c100000432.ctop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroupCount(Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,nil,POS_FACEUP_DEFENSE) + e:GetHandler():AddCounter(0x94,sg) +end +function c100000432.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and e:GetHandler():GetCounter(0x94)>3 end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c100000432.filter(c,e,tp) + return c:IsSetCard(0x21) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000432.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000432.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000432.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000432.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c100000440.lua b/script/c100000440.lua new file mode 100644 index 00000000..db84ce63 --- /dev/null +++ b/script/c100000440.lua @@ -0,0 +1,37 @@ +--ワイズA3 +function c100000440.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000440.cost) + e1:SetTarget(c100000440.target) + e1:SetOperation(c100000440.activate) + c:RegisterEffect(e1) +end +function c100000440.costfilter(c,e,tp) + return c:IsFaceup() and c:IsCode(100000052) and c:IsAbleToGraveAsCost() +end +function c100000440.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000440.costfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000440.costfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000440.spfilter(c,e,tp) + return c:IsCode(100000048) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000440.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100000440.spfilter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000440.activate(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,c100000440.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000441.lua b/script/c100000441.lua new file mode 100644 index 00000000..911aca5f --- /dev/null +++ b/script/c100000441.lua @@ -0,0 +1,37 @@ +--ワイズG3 +function c100000441.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000441.cost) + e1:SetTarget(c100000441.target) + e1:SetOperation(c100000441.activate) + c:RegisterEffect(e1) +end +function c100000441.costfilter(c,e,tp) + return c:IsFaceup() and c:IsCode(100000053) and c:IsAbleToGraveAsCost() +end +function c100000441.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000441.costfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000441.costfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000441.spfilter(c,e,tp) + return c:IsCode(100000047) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000441.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100000441.spfilter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000441.activate(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,c100000441.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000442.lua b/script/c100000442.lua new file mode 100644 index 00000000..d7a0fd3b --- /dev/null +++ b/script/c100000442.lua @@ -0,0 +1,37 @@ +--ワイズT3 +function c100000442.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000442.cost) + e1:SetTarget(c100000442.target) + e1:SetOperation(c100000442.activate) + c:RegisterEffect(e1) +end +function c100000442.costfilter(c,e,tp) + return c:IsFaceup() and c:IsCode(100000051) and c:IsAbleToGraveAsCost() +end +function c100000442.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000442.costfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000442.costfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000442.spfilter(c,e,tp) + return c:IsCode(100000049) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000442.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100000442.spfilter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000442.activate(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,c100000442.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000444.lua b/script/c100000444.lua new file mode 100644 index 00000000..7dd289ba --- /dev/null +++ b/script/c100000444.lua @@ -0,0 +1,42 @@ +--Aキャノン +function c100000444.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_END) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c100000444.condition) + e1:SetCost(c100000444.cost) + e1:SetTarget(c100000444.target) + e1:SetOperation(c100000444.activate) + c:RegisterEffect(e1) +end +function c100000444.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return a:IsControler(tp) and a:IsSetCard(0x3013) and at:IsRelateToBattle() and not at:IsStatus(STATUS_DESTROY_CONFIRMED+STATUS_BATTLE_DESTROYED) + and not a:IsStatus(STATUS_DESTROY_CONFIRMED+STATUS_BATTLE_DESTROYED) +end +function c100000444.cfilter(c) + return c:IsFaceup() and c:IsAbleToGraveAsCost() and not c:IsStatus(STATUS_BATTLE_DESTROYED) and (c:IsCode(100000309) or c:IsCode(100000043) + or c:IsCode(100000048) or c:IsCode(100000045) or c:IsCode(100000063) or c:IsCode(100000052) or c:IsCode(100000058)) +end +function c100000444.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000444.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000444.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000444.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100000444.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100000445.lua b/script/c100000445.lua new file mode 100644 index 00000000..14092b75 --- /dev/null +++ b/script/c100000445.lua @@ -0,0 +1,37 @@ +--スカイG3 +function c100000445.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000445.cost) + e1:SetTarget(c100000445.target) + e1:SetOperation(c100000445.activate) + c:RegisterEffect(e1) +end +function c100000445.costfilter(c,e,tp) + return c:IsFaceup() and c:IsCode(100000058) and c:IsAbleToGraveAsCost() +end +function c100000445.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000445.costfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000445.costfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000445.spfilter(c,e,tp) + return c:IsCode(100000045) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000445.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100000445.spfilter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c100000445.activate(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,c100000445.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000470.lua b/script/c100000470.lua new file mode 100644 index 00000000..530d40b0 --- /dev/null +++ b/script/c100000470.lua @@ -0,0 +1,72 @@ +--スピリッツ・フュージョン +function c100000470.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000470.cost) + e1:SetTarget(c100000470.target) + e1:SetOperation(c100000470.activate) + c:RegisterEffect(e1) +end +function c100000470.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1000) + else Duel.PayLPCost(tp,1000) end +end +function c100000470.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c100000470.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,nil,chkf) +end +function c100000470.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000470.filter1,tp,LOCATION_GRAVE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c100000470.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100000470.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000470.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000470.filter1,tp,LOCATION_GRAVE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c100000470.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100000470.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c100000471.lua b/script/c100000471.lua new file mode 100644 index 00000000..3d44d057 --- /dev/null +++ b/script/c100000471.lua @@ -0,0 +1,85 @@ +--瞬間融合 +function c100000471.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000471.target) + e1:SetOperation(c100000471.activate) + c:RegisterEffect(e1) +end +function c100000471.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) +end +function c100000471.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,nil,chkf) +end +function c100000471.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE) and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000471.filter1,tp,LOCATION_MZONE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c100000471.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100000471.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000471.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE) and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000471.filter1,tp,LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c100000471.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100000471.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + --to deck + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetLabelObject(tc) + e2:SetCountLimit(1) + e2:SetCondition(c100000471.tdcon) + e2:SetOperation(c100000471.tdop) + Duel.RegisterEffect(e2,tp) + tc:RegisterFlagEffect(100000471,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc:CompleteProcedure() + end +end +function c100000471.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000471.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if g:GetFlagEffect(100000471)>0 then Duel.SendtoDeck(g,nil,2,REASON_EFFECT) end +end diff --git a/script/c100000473.lua b/script/c100000473.lua new file mode 100644 index 00000000..76e1fb90 --- /dev/null +++ b/script/c100000473.lua @@ -0,0 +1,112 @@ +--アナザー・フュージョン +function c100000473.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000473.target) + e1:SetOperation(c100000473.activate) + c:RegisterEffect(e1) + if not c100000473.global_check then + c100000473.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_TO_DECK) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c100000473.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c100000473.filter0(c,tp) + return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() +end +function c100000473.filter1(c,e,tp) + return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c100000473.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) + and (c:IsControler(tp) or c:GetFlagEffect(511002577)>0) +end +function c100000473.filter3(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c100000473.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000473.filter0,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local res=Duel.IsExistingMatchingCard(c100000473.filter2,tp,LOCATION_EXTRA,LOCATION_EXTRA,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c100000473.filter2,tp,LOCATION_EXTRA,LOCATION_EXTRA,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000473.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000473.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e,tp) + local sg1=Duel.GetMatchingGroup(c100000473.filter3,tp,LOCATION_EXTRA,LOCATION_EXTRA,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c100000473.filter3,tp,LOCATION_EXTRA,LOCATION_EXTRA,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local g=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) + Duel.ConfirmCards(tp,g) + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetLabelObject(tc) + e2:SetOperation(c100000473.desop) + Duel.RegisterEffect(e2,tp) + tc:RegisterFlagEffect(100000473,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c100000473.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if g:GetFlagEffect(100000473)>0 then Duel.Destroy(g,REASON_EFFECT) end +end +function c100000473.cfilter(c) + return c:IsLocation(LOCATION_EXTRA) and c:IsType(TYPE_FUSION) +end +function c100000473.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c100000473.cfilter,nil) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511002577,nil,0,0) + tc=g:GetNext() + end +end diff --git a/script/c100000474.lua b/script/c100000474.lua new file mode 100644 index 00000000..e683f136 --- /dev/null +++ b/script/c100000474.lua @@ -0,0 +1,60 @@ +--フュージョン・バース +function c100000474.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000474.target) + e1:SetOperation(c100000474.activate) + c:RegisterEffect(e1) +end +function c100000474.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsLocation(LOCATION_GRAVE) and not c:IsImmuneToEffect(e) +end +function c100000474.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,nil,chkf) +end +function c100000474.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,5) end + Duel.DiscardDeck(tp,5,REASON_COST) + local g=Duel.GetOperatedGroup() + local mg1=g:Filter(c100000474.filter1,nil,e) + if mg1:GetCount()==0 then return false end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local res=Duel.IsExistingMatchingCard(c100000474.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100000474.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000474.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local g=Duel.GetOperatedGroup() + local mg1=g:Filter(c100000474.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c100000474.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100000474.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c100000475.lua b/script/c100000475.lua new file mode 100644 index 00000000..a269f42c --- /dev/null +++ b/script/c100000475.lua @@ -0,0 +1,98 @@ +--チャージ・フュージョン +function c100000475.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000475.target) + e1:SetOperation(c100000475.activate) + c:RegisterEffect(e1) +end +function c100000475.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) +end +function c100000475.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,nil,chkf) +end +function c100000475.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000475.filter1,tp,LOCATION_HAND,0,nil,e) + local res=Duel.IsExistingMatchingCard(c100000475.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100000475.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000475.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000475.filter1,tp,LOCATION_HAND,0,nil,e) + local sg1=Duel.GetMatchingGroup(c100000475.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100000475.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_EVENT+0x17a0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + e1:SetLabel(Duel.GetTurnCount()) + else + e1:SetReset(RESET_EVENT+0x17a0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + e1:SetLabel(Duel.GetTurnCount()-1) + end + e1:SetCondition(c100000475.thcon) + e1:SetTarget(c100000475.thtg) + e1:SetOperation(c100000475.thop) + e:GetHandler():RegisterEffect(e1) + end +end +function c100000475.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==e:GetLabel()+4 +end +function c100000475.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c100000475.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c100000478.lua b/script/c100000478.lua new file mode 100644 index 00000000..f4aa387b --- /dev/null +++ b/script/c100000478.lua @@ -0,0 +1,56 @@ +--同胞の絆 +function c100000478.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000478.cost) + e1:SetTarget(c100000478.target) + e1:SetOperation(c100000478.activate) + c:RegisterEffect(e1) +end +function c100000478.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 c100000478.filter(c,att) + return c:IsAttribute(att) and c:IsFaceup() +end +function c100000478.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) + and Duel.IsExistingMatchingCard(c100000478.filter,tp,LOCATION_MZONE,0,1,nil,c:GetAttribute()) +end +function c100000478.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c100000478.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c100000478.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000478.spfilter,tp,LOCATION_DECK,0,2,2,nil,e,tp) + local tc=g:GetFirst() + while tc do + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(1) + tc:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_UNRELEASABLE_NONSUM) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c100000481.lua b/script/c100000481.lua new file mode 100644 index 00000000..fadedabc --- /dev/null +++ b/script/c100000481.lua @@ -0,0 +1,20 @@ +--天輪の葬送士 +function c100000481.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000481.spcon) + c:RegisterEffect(e1) +end +function c100000481.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x211) or c:IsCode(32995007)) and c:IsType(TYPE_MONSTER) +end +function c100000481.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000481.filter,tp,LOCATION_MZONE,0,1,nil) +end diff --git a/script/c100000482.lua b/script/c100000482.lua new file mode 100644 index 00000000..a6505c59 --- /dev/null +++ b/script/c100000482.lua @@ -0,0 +1,42 @@ +--天輪の葬送士 +function c100000482.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c100000482.sptg) + e1:SetOperation(c100000482.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --add setcode + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_ADD_SETCODE) + e4:SetValue(0x211) + c:RegisterEffect(e4) +end +function c100000482.filter(c,e,tp) + return c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000482.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000482.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000482.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000482.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000482.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000483.lua b/script/c100000483.lua new file mode 100644 index 00000000..04c8bf2d --- /dev/null +++ b/script/c100000483.lua @@ -0,0 +1,54 @@ +--天輪の双星道士 +function c100000483.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --synchro summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000483,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c100000483.drcon) + e1:SetTarget(c100000483.drtarg) + e1:SetOperation(c100000483.drop) + c:RegisterEffect(e1) +end +function c100000483.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c100000483.filter(c,e,tp) + return c:IsFaceup() and c:GetLevel()==2 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000483.drtarg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000483.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c100000483.drop(e,tp,eg,ep,ev,re,r,rp) + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft1<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft1=1 end + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000483.filter,tp,LOCATION_GRAVE,0,ft1,ft1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc, 0, tp, tp, false, false, POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + g:KeepAlive() + end +end diff --git a/script/c100000488.lua b/script/c100000488.lua new file mode 100644 index 00000000..bd5513d9 --- /dev/null +++ b/script/c100000488.lua @@ -0,0 +1,39 @@ +--闇竜の黒騎士 +function c100000488.initial_effect(c) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000488,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c100000488.spcost) + e1:SetTarget(c100000488.sptg) + e1:SetOperation(c100000488.spop) + c:RegisterEffect(e1) +end +function c100000488.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c100000488.spfilter(c,e,tp) + return c:IsCode(74677422) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000488.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100000488.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c100000488.spop(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,c100000488.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + g:GetFirst():RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100000489.lua b/script/c100000489.lua new file mode 100644 index 00000000..e26a097a --- /dev/null +++ b/script/c100000489.lua @@ -0,0 +1,4 @@ +--黒竜降臨 +function c100000489.initial_effect(c) + aux.AddRitualProcGreaterCode(c,100000488) +end diff --git a/script/c100000490.lua b/script/c100000490.lua new file mode 100644 index 00000000..526d347f --- /dev/null +++ b/script/c100000490.lua @@ -0,0 +1,100 @@ +--デステニー・オーバーレイ +function c100000490.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000490.target) + e1:SetOperation(c100000490.activate) + c:RegisterEffect(e1) +end +function c100000490.filter(c,e) + return c:IsFaceup() and c:IsCanBeEffectTarget(e) and not c:IsType(TYPE_TOKEN) +end +function c100000490.xyzfilter(c,mg) + return c:IsXyzSummonable(mg) +end +function c100000490.xyzfilter2(c,mg,ct) + return c:IsXyzSummonable(mg) and (c.minxyzct==ct or c.maxxyzct>=ct) +end +function c100000490.mfilter1(c,exg) + return exg:IsExists(c100000490.mfilter2,1,nil,c) +end +function c100000490.mfilter2(c,mc) + return c.xyz_filter(mc) +end +function c100000490.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local mg=Duel.GetMatchingGroup(c100000490.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e) + if chk==0 then return mg:GetCount()>0 and Duel.IsExistingMatchingCard(c100000490.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,mg) end + local exg=Duel.GetMatchingGroup(c100000490.xyzfilter,tp,LOCATION_EXTRA,0,nil,mg) + local extc=exg:GetFirst() + local minct=99 + local maxct=0 + while extc do + if extc.minxyzctmaxct then + maxct=extc.maxxyzct + end + extc=exg:GetNext() + end + local g=mg:Filter(c100000490.mfilter1,nil,exg) + local mgt=Group.CreateGroup() + local ct=0 + repeat + mgt=g:Select(tp,minct,maxct,nil) + ct=mgt:GetCount() + until exg:IsExists(c100000490.xyzfilter2,1,nil,mgt,ct) + Duel.SetTargetCard(mgt) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000490.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local xyzg=Duel.GetMatchingGroup(c100000490.xyzfilter2,tp,LOCATION_EXTRA,0,nil,g,g:GetCount()) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:Select(tp,1,1,nil):GetFirst() + Duel.XyzSummon(tp,xyz,g) + end +end diff --git a/script/c100000498.lua b/script/c100000498.lua new file mode 100644 index 00000000..833875ce --- /dev/null +++ b/script/c100000498.lua @@ -0,0 +1,41 @@ +--スモーキング・ドッグ +function c100000498.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_BEAST),4,2) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000498,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY+CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100000498.negcon) + e1:SetCost(c100000498.negcost) + e1:SetTarget(c100000498.negtg) + e1:SetOperation(c100000498.negop) + c:RegisterEffect(e1) +end +function c100000498.negcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP) and Duel.IsChainNegatable(ev) +end +function c100000498.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100000498.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100000498.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)>0 then + Duel.BreakEffect() + end +end diff --git a/script/c100000500.lua b/script/c100000500.lua new file mode 100644 index 00000000..47ada14f --- /dev/null +++ b/script/c100000500.lua @@ -0,0 +1,30 @@ +--ۼvѩ +function c100000500.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000500.sptg) + e1:SetOperation(c100000500.spop) + c:RegisterEffect(e1) +end +function c100000500.filter(c,e,sp) + return c:IsFaceup() and c:IsSetCard(0x5008) and c:IsCanBeSpecialSummoned(e,0,sp,true,false) +end +function c100000500.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c100000500.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c100000500.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000500.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000500.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000501.lua b/script/c100000501.lua new file mode 100644 index 00000000..ba25285d --- /dev/null +++ b/script/c100000501.lua @@ -0,0 +1,67 @@ +--幻影融合 +function c100000501.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000501.target) + e1:SetOperation(c100000501.activate) + c:RegisterEffect(e1) +end +function c100000501.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsSetCard(0x5008) and c:IsAbleToRemove() and c:GetFlagEffect(100000501)~=0 +end +function c100000501.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:GetCode()~=46759931 and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,nil,chkf) +end +function c100000501.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000501.filter1,tp,LOCATION_SZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c100000501.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100000501.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000501.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100000501.filter1,tp,LOCATION_SZONE,0,nil) + local sg1=Duel.GetMatchingGroup(c100000501.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100000501.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c100000502.lua b/script/c100000502.lua new file mode 100644 index 00000000..457cce25 --- /dev/null +++ b/script/c100000502.lua @@ -0,0 +1,36 @@ +--出幻 +function c100000502.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000502.condition) + e1:SetTarget(c100000502.target) + e1:SetOperation(c100000502.operation) + c:RegisterEffect(e1) +end +function c100000502.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsSetCard(0x5008) and c:IsType(TYPE_MONSTER) +end +function c100000502.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000502.cfilter,1,nil,tp) +end +function c100000502.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x5008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000502.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000502.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000502.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,c100000502.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100000503.lua b/script/c100000503.lua new file mode 100644 index 00000000..c096029b --- /dev/null +++ b/script/c100000503.lua @@ -0,0 +1,31 @@ +--幻覚 +function c100000503.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c100000503.condition) + e1:SetTarget(c100000503.target) + e1:SetOperation(c100000503.activate) + c:RegisterEffect(e1) +end +function c100000503.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) +end +function c100000503.spfilter(c) + return c:IsSetCard(0x5008) +end +function c100000503.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000503.spfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000503.spfilter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.SelectTarget(tp,c100000503.spfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000503.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local a=Duel.GetAttacker() + if a:IsOnField() and a:IsFaceup() then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c100000504.lua b/script/c100000504.lua new file mode 100644 index 00000000..0a2a068c --- /dev/null +++ b/script/c100000504.lua @@ -0,0 +1,77 @@ +--幻惑 +function c100000504.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000504.condition) + e1:SetTarget(c100000504.target) + c:RegisterEffect(e1) + --half atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetCondition(c100000504.atkcon) + e2:SetTarget(c100000504.atktg) + e2:SetOperation(c100000504.atkop) + c:RegisterEffect(e2) +end +function c100000504.cfilter(c) + return c:IsSetCard(0x5008) and c:IsFaceup() +end +function c100000504.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000504.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100000504.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return true end + if c100000504.atktg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_ATKCHANGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e:SetOperation(c100000504.atkop) + c100000504.atktg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e:SetOperation(nil) + end +end +function c100000504.atkcon(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c100000504.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=e:GetHandler():GetCardTarget() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and (not g or not g:IsExists(Card.IsLocation,1,nil,LOCATION_MZONE)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c100000504.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() 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_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c100000504.rcon) + e1:SetValue(c100000504.atkval) + tc:RegisterEffect(e1,true) + end +end +function c100000504.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c100000504.atkval(e,c) + return c:GetAttack()/2 +end diff --git a/script/c100000505.lua b/script/c100000505.lua new file mode 100644 index 00000000..42ade695 --- /dev/null +++ b/script/c100000505.lua @@ -0,0 +1,82 @@ +--V・HERO ミニマム・レイ +function c100000505.initial_effect(c) + --send + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000505,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DAMAGE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c100000505.recon) + e1:SetTarget(c100000505.rectg) + e1:SetOperation(c100000505.recop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c100000505.cost) + e2:SetOperation(c100000505.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000505,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c100000505.descon) + e3:SetTarget(c100000505.destg) + e3:SetOperation(c100000505.desop) + c:RegisterEffect(e3) +end +function c100000505.recon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c100000505.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and c:GetLocation()==LOCATION_GRAVE end +end +function c100000505.recop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetLocation()~=LOCATION_GRAVE then return false end + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + c:RegisterFlagEffect(100000501,RESET_EVENT+0x1fe0000,0,1) +end + +function c100000505.costfilter(c) + return c:IsSetCard(0x5008) +end +function c100000505.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c100000505.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c100000505.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100000505.spop(e,tp,eg,ep,ev,re,r,rp,c) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) +end + +function c100000505.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_SZONE +end +function c100000505.desfilter(c) + return c:IsDestructable() and c:IsType(TYPE_MONSTER) +end +function c100000505.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c100000505.desfilter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100000505.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100000505.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100000506.lua b/script/c100000506.lua new file mode 100644 index 00000000..b36966ed --- /dev/null +++ b/script/c100000506.lua @@ -0,0 +1,56 @@ +--V・HERO ファリス +function c100000506.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000506.spcon) + e1:SetOperation(c100000506.spop) + c:RegisterEffect(e1) + --send to grave + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000506,0)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c100000506.target) + e2:SetOperation(c100000506.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c100000506.spfilter(c) + return c:IsSetCard(0x5008) and c:IsLevelBelow(4) and c:IsAbleToGraveAsCost() +end +function c100000506.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000506.spfilter,tp,LOCATION_HAND,0,1,c) +end +function c100000506.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000506.spfilter,tp,LOCATION_HAND,0,1,1,c) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000506.tgfilter(c) + return c:IsSetCard(0x5008) and c:IsLevelBelow(4) and c:IsAbleToGrave() +end +function c100000506.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000506.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c100000506.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000506.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c100000507.lua b/script/c100000507.lua new file mode 100644 index 00000000..4370ec95 --- /dev/null +++ b/script/c100000507.lua @@ -0,0 +1,80 @@ +--V・HERO インクリース +function c100000507.initial_effect(c) + --send + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000507,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DAMAGE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c100000507.recon) + e1:SetTarget(c100000507.rectg) + e1:SetOperation(c100000507.recop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c100000507.cost) + e2:SetOperation(c100000507.spop) + c:RegisterEffect(e2) + --special summon2 + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000507,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c100000507.scon) + e3:SetTarget(c100000507.stg) + e3:SetOperation(c100000507.sop) + c:RegisterEffect(e3) +end +function c100000507.recon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c100000507.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and c:GetLocation()==LOCATION_GRAVE end +end +function c100000507.recop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetLocation()~=LOCATION_GRAVE then return false end + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + c:RegisterFlagEffect(100000501,RESET_EVENT+0x1fe0000,0,1) +end +function c100000507.costfilter(c) + return c:IsSetCard(0x5008) +end +function c100000507.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c100000507.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c100000507.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100000507.spop(e,tp,eg,ep,ev,re,r,rp,c) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) +end + +function c100000507.scon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_SZONE +end +function c100000507.filter(c,e,tp) + return c:IsSetCard(0x8) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000507.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000507.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000507.sop(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,c100000507.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000508.lua b/script/c100000508.lua new file mode 100644 index 00000000..49eb7f89 --- /dev/null +++ b/script/c100000508.lua @@ -0,0 +1,36 @@ +--V・HERO グラビート +function c100000508.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c100000508.cost) + e1:SetTarget(c100000508.sptg) + e1:SetOperation(c100000508.spop) + c:RegisterEffect(e1) +end +function c100000508.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c100000508.filter(c,e,sp) + return c:IsFaceup() and c:IsSetCard(0x5008) and c:IsCanBeSpecialSummoned(e,0,sp,true,false) +end +function c100000508.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c100000508.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c100000508.filter,tp,LOCATION_SZONE,0,2,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000508.filter,tp,LOCATION_SZONE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000508.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c100000510.lua b/script/c100000510.lua new file mode 100644 index 00000000..12ddc992 --- /dev/null +++ b/script/c100000510.lua @@ -0,0 +1,73 @@ +--V・HERO マルティプリ・ガイ +function c100000510.initial_effect(c) + --send + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000510,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DAMAGE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c100000510.recon) + e1:SetTarget(c100000510.rectg) + e1:SetOperation(c100000510.recop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c100000510.cost) + e2:SetOperation(c100000510.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000510,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c100000510.scon) + e3:SetOperation(c100000510.sop) + c:RegisterEffect(e3) +end +function c100000510.recon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c100000510.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and c:GetLocation()==LOCATION_GRAVE end +end +function c100000510.recop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetLocation()~=LOCATION_GRAVE then return false end + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + c:RegisterFlagEffect(100000501,RESET_EVENT+0x1fe0000,0,1) +end + +function c100000510.costfilter(c) + return c:IsSetCard(0x5008) +end +function c100000510.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c100000510.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c100000510.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100000510.spop(e,tp,eg,ep,ev,re,r,rp,c) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) +end +function c100000510.scon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_SZONE +end +function c100000510.sop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) and e:GetHandler():IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(e:GetHandler():GetAttack()) + e:GetHandler():RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100000511.lua b/script/c100000511.lua new file mode 100644 index 00000000..9b51cbe6 --- /dev/null +++ b/script/c100000511.lua @@ -0,0 +1,101 @@ +--V・HERO ポイズナー +function c100000511.initial_effect(c) + --send + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000511,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DAMAGE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c100000511.pcon) + e1:SetTarget(c100000511.ptg) + e1:SetOperation(c100000511.pop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c100000511.spcost) + e2:SetTarget(c100000511.sptg) + e2:SetOperation(c100000511.spop) + c:RegisterEffect(e2) +end +function c100000511.pcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c100000511.ptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,e:GetHandler(),1,0,0) +end +function c100000511.pop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(c,47408488,e,0,tp,0,0) +end +function c100000511.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x5008) end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x5008) + Duel.Release(g,REASON_COST) +end +function c100000511.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100000511.spop(e,tp,eg,ep,ev,re,r,rp,c) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(tc:GetDefense()/2) + tc:RegisterEffect(e2) + end + else + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end + end +end + +function c100000511.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_SZONE +end +function c100000511.destg(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,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c100000511.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + local def=tc:GetDefence() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(atk/2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENCE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(def/2) + tc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c100000512.lua b/script/c100000512.lua new file mode 100644 index 00000000..86d9cbe5 --- /dev/null +++ b/script/c100000512.lua @@ -0,0 +1,31 @@ +--V・HERO ウィッチ・レイド +function c100000512.initial_effect(c) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c100000512.target) + e1:SetOperation(c100000512.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100000512.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c100000512.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c100000512.filter,tp,0,LOCATION_ONFIELD,1,c) end + local sg=Duel.GetMatchingGroup(c100000512.filter,tp,0,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000512.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100000512.filter,tp,0,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100000520.lua b/script/c100000520.lua new file mode 100644 index 00000000..19234dc7 --- /dev/null +++ b/script/c100000520.lua @@ -0,0 +1,35 @@ +--アージャント・ライン +function c100000520.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000520.condition) + e1:SetTarget(c100000520.target) + e1:SetOperation(c100000520.operation) + c:RegisterEffect(e1) +end +function c100000520.cfilter(c,tp) + return c:IsSetCard(0xa008) and c:GetPreviousControler()==tp +end +function c100000520.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000520.cfilter,1,nil,tp) +end +function c100000520.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0xa008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000520.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000520.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000520.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,c100000520.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000523.lua b/script/c100000523.lua new file mode 100644 index 00000000..863dd57f --- /dev/null +++ b/script/c100000523.lua @@ -0,0 +1,42 @@ +--破損した仮面 +function c100000523.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000523.target) + e1:SetOperation(c100000523.activate) + c:RegisterEffect(e1) +end +function c100000523.filter(c,e,tp) + return c:IsSetCard(0xa008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000523.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000523.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000523.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000523.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000523.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c100000523.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tc:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end +end +function c100000523.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000524.lua b/script/c100000524.lua new file mode 100644 index 00000000..c2e8f85b --- /dev/null +++ b/script/c100000524.lua @@ -0,0 +1,41 @@ +--マスク・ファンクシャン1 +function c100000524.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000524.target) + e1:SetOperation(c100000524.activate) + c:RegisterEffect(e1) +end +function c100000524.filter(c) + return c:IsFaceup() and not c:IsDisabled() and c:IsType(TYPE_EFFECT) +end +function c100000524.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c100000524.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000524.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c100000524.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c100000524.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetCondition(c100000524.condition) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c100000524.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xa008) +end +function c100000524.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000524.cfilter,tp,0,LOCATION_MZONE,1,nil) +end diff --git a/script/c100000525.lua b/script/c100000525.lua new file mode 100644 index 00000000..8945e2f7 --- /dev/null +++ b/script/c100000525.lua @@ -0,0 +1,65 @@ +--ダブル・アタック(合体攻撃) +function c100000525.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000525.target) + e1:SetOperation(c100000525.activate) + c:RegisterEffect(e1) +end +function c100000525.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsSetCard(0xa008) +end +function c100000525.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c100000525.filter,tp,LOCATION_MZONE,0,2,nil) + and Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c100000525.filter,tp,LOCATION_MZONE,0,2,2,nil,tp) +end +function c100000525.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc1=g:GetFirst() + local tc2=g:GetNext() + if not tc1:IsPosition(POS_FACEUP_ATTACK) or not tc2:IsPosition(POS_FACEUP_ATTACK) + or not tc1:IsRelateToEffect(e) or not tc2:IsRelateToEffect(e) then return end + tc1:RegisterFlagEffect(100000525,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc2:RegisterFlagEffect(100000525,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetCondition(c100000525.condtion) + e1:SetValue(tc2:GetAttack()) + e1:SetLabelObject(tc2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc1:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetValue(tc1:GetAttack()) + e2:SetLabelObject(tc1) + tc2:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c100000525.atop) + e3:SetLabelObject(tc2) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc1:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetLabelObject(tc1) + tc2:RegisterEffect(e4) +end +function c100000525.condtion(e) + local oc=e:GetLabelObject() + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and Duel.GetAttacker():GetFlagEffect(100000525)~=0 + and oc:IsPosition(POS_FACEUP_ATTACK) and Duel.GetAttackTarget()~=nil +end +function c100000525.atop(e,tp,eg,ep,ev,re,r,rp) + local oc=e:GetLabelObject() + if Duel.GetAttacker()~=oc and oc:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangeAttacker(oc) + end +end \ No newline at end of file diff --git a/script/c100000526.lua b/script/c100000526.lua new file mode 100644 index 00000000..4bf6a0d8 --- /dev/null +++ b/script/c100000526.lua @@ -0,0 +1,49 @@ +--天馬之翼 +function c100000526.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000526.target) + e1:SetOperation(c100000526.activate) + c:RegisterEffect(e1) +end +function c100000526.filter(c,e,tp) + return c:GetCode()==100000533 or c:GetCode()==100000534 or c:GetCode()==100000537 or c:GetCode()==100000538 +end +function c100000526.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,100000527) end +end +function c100000526.activate(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(c100000526.filter,tp,LOCATION_MZONE,0,nil) + local tc=dg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + -- + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DAMAGE_CALCULATING) + e3:SetCondition(c100000526.atkcon) + e3:SetOperation(c100000526.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + tc=dg:GetNext() + end +end +function c100000526.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 + and e:GetHandler():GetEffectCount(EFFECT_DIRECT_ATTACK)==1 +end +function c100000526.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(c:GetAttack()/2) + c:RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c100000527.lua b/script/c100000527.lua new file mode 100644 index 00000000..3069453c --- /dev/null +++ b/script/c100000527.lua @@ -0,0 +1,112 @@ +--運命の戦車 +function c100000527.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000527,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c100000527.eqtg) + e1:SetOperation(c100000527.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000527,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000527.uncon) + e2:SetTarget(c100000527.sptg) + e2:SetOperation(c100000527.spop) + c:RegisterEffect(e2) + --direct_attack + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(100000527,2)) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c100000527.uncon) + e5:SetCost(c100000527.atkcost) + e5:SetOperation(c100000527.atkop) + c:RegisterEffect(e5) + --destroy sub + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_EQUIP) + e6:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e6:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e6:SetCondition(c100000527.uncon) + e6:SetValue(c100000527.repval) + c:RegisterEffect(e6) + --eqlimit + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_EQUIP_LIMIT) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e7:SetValue(c100000527.eqlimit) + c:RegisterEffect(e7) +end +function c100000527.uncon(e) + return e:GetHandler():IsStatus(STATUS_UNION) +end +function c100000527.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c100000527.eqlimit(e,c) + return c:GetCode()==100000533 or c:GetCode()==100000534 or c:GetCode()==100000537 or c:GetCode()==100000538 +end +function c100000527.filter(c) + return c:IsFaceup() and (c:GetCode()==100000533 or c:GetCode()==100000534 or c:GetCode()==100000537 or c:GetCode()==100000538) and c:GetUnionCount()==0 +end +function c100000527.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000527.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(100000527)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c100000527.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c100000527.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(100000527,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c100000527.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc:IsRelateToEffect(e) or not c100000527.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + c:SetStatus(STATUS_UNION,true) +end +function c100000527.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(100000527)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(100000527,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c100000527.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + end +end +function c100000527.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(c100000527.value) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e2) +end +function c100000527.value(e,c) + return c:GetAttack()/2 +end +function c100000527.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e3) +end diff --git a/script/c100000528.lua b/script/c100000528.lua new file mode 100644 index 00000000..292c1968 --- /dev/null +++ b/script/c100000528.lua @@ -0,0 +1,28 @@ +--白鳥の乙女 +function c100000528.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000528.target) + e1:SetOperation(c100000528.activate) + c:RegisterEffect(e1) +end +function c100000528.filter(c,e,tp) + return (c:GetCode()==100000533 or c:GetCode()==100000534 or c:GetCode()==100000537 or c:GetCode()==100000538) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000528.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000528.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000528.activate(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,c100000528.filter,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 diff --git a/script/c100000529.lua b/script/c100000529.lua new file mode 100644 index 00000000..abfa1ab3 --- /dev/null +++ b/script/c100000529.lua @@ -0,0 +1,37 @@ +--ワルキューレの抱擁 +function c100000529.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000529.target) + e1:SetOperation(c100000529.activate) + c:RegisterEffect(e1) +end +function c100000529.filter(c) + local code=c:GetCode() + return c:IsFaceup() and (code==100000533 or code==100000534 or code==100000537 or code==100000538) +end +function c100000529.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c100000529.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g1=Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g1,1,0,0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g2,1,0,0) +end +function c100000529.activate(e,tp,eg,ep,ev,re,r,rp) + local ex1,tg1=Duel.GetOperationInfo(0,CATEGORY_POSITION) + local ex2,tg2=Duel.GetOperationInfo(0,CATEGORY_REMOVE) + if tg1:GetFirst() and tg1:GetFirst():IsRelateToEffect(e) then + Duel.ChangePosition(tg1,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end + if tg2:GetFirst() and tg2:GetFirst():IsRelateToEffect(e) then + Duel.Remove(tg2,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c100000530.lua b/script/c100000530.lua new file mode 100644 index 00000000..a02c2972 --- /dev/null +++ b/script/c100000530.lua @@ -0,0 +1,97 @@ +--集いし願い +function c100000530.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000530.target) + e1:SetOperation(c100000530.operation) + c:RegisterEffect(e1) +end +function c100000530.vfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsRace(RACE_DRAGON) +end +function c100000530.sfilter(c,e,tp) + return c:GetCode()==44508094 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000530.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000530.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000530.sfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) + and Duel.GetMatchingGroup(c100000530.vfilter,tp,LOCATION_GRAVE,0,nil):GetCount()>4 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000530.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.GetFirstMatchingCard(c100000530.sfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if c:IsRelateToEffect(e) + and Duel.SpecialSummonStep(tg,0,tp,tp,false,false,POS_FACEUP) then + c:SetCardTarget(tg) + Duel.Equip(tp,c,tg) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(c100000530.val) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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(c100000530.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000530,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c100000530.atcon) + e3:SetCost(c100000530.cost) + e3:SetOperation(c100000530.atop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetOperation(c100000530.desop) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e4:SetCountLimit(1) + tg:RegisterEffect(e4) + Duel.SpecialSummonComplete() + end +end +function c100000530.val(e,c) + local g=Duel.GetMatchingGroup(c100000530.vfilter,c:GetControler(),LOCATION_GRAVE,0,c) + return g:GetSum(Card.GetBaseAttack) +end +function c100000530.eqlimit(e,c) + return c:GetCode()==44508094 +end +function c100000530.sendfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsRace(RACE_DRAGON) and c:IsAbleToExtra() +end +function c100000530.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000530.sendfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c100000530.sendfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SendtoDeck(g,nil,1,REASON_COST) +end +function c100000530.atcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + if not eg:IsContains(ec) then return false end + local bc=ec:GetBattleTarget() + return bc:IsReason(REASON_BATTLE) +end +function c100000530.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end +function c100000530.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000531.lua b/script/c100000531.lua new file mode 100644 index 00000000..ecd94248 --- /dev/null +++ b/script/c100000531.lua @@ -0,0 +1,44 @@ +--標本の閲覧 +function c100000531.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000531.cost) + e1:SetTarget(c100000531.target) + e1:SetOperation(c100000531.activate) + c:RegisterEffect(e1) +end +function c100000531.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c100000531.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000531.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100000531.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100000531.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,0,LOCATION_DECK,1,nil) end +end +function c100000531.filter(c,rc,lv) + return c:IsType(TYPE_MONSTER) and c:IsRace(rc) and c:GetLevel()==lv and c:IsAbleToGrave() +end +function c100000531.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,563) + local rc=Duel.AnnounceRace(tp,1,0xffffff) + Duel.Hint(HINT_SELECTMSG,tp,567) + local lv=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(1-tp,c100000531.filter,1-tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,rc,lv) + local tc=g:GetFirst() + if tc then + Duel.SendtoGrave(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(tp,tc) + else + local dg=Duel.GetFieldGroup(tp,0,LOCATION_DECK+LOCATION_HAND) + Duel.ConfirmCards(tp,dg) + Duel.ShuffleDeck(1-tp) + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c100000532.lua b/script/c100000532.lua new file mode 100644 index 00000000..cff062cb --- /dev/null +++ b/script/c100000532.lua @@ -0,0 +1,65 @@ +--����������� ������ +function c100000532.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000532.target) + e1:SetOperation(c100000532.operation) + c:RegisterEffect(e1) +end +function c100000532.filter(c,e,tp) + local code=c:GetCode() + return code==100000533 or code==100000534 or code==100000537 or code==100000538 +end +function c100000532.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c100000532.filter,tp,LOCATION_HAND,0,nil,e,tp) + local ct=g:GetCount() + if chk==0 then return ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct and (ct==1 or not Duel.IsPlayerAffectedByEffect(tp,59822133)) + and g:FilterCount(Card.IsCanBeSpecialSummoned,nil,e,0,tp,false,false)==ct end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,ct,0,0) +end +function c100000532.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100000532.filter,tp,LOCATION_HAND,0,nil,e,tp) + local ct=g:GetCount() + if ct<=0 or Duel.GetLocationCount(tp,LOCATION_MZONE)1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) + or g:FilterCount(Card.IsCanBeSpecialSummoned,nil,e,0,tp,false,false)~=ct then return end + local fid=e:GetHandler():GetFieldID() + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(100000532,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + g:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c100000532.retcon) + e1:SetOperation(c100000532.retop) + Duel.RegisterEffect(e1,tp) +end +function c100000532.retfilter(c,fid) + return c:GetFlagEffectLabel(100000532)==fid +end +function c100000532.retcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c100000532.retfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c100000532.retop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c100000532.retfilter,nil,e:GetLabel()) + g:DeleteGroup() + Duel.SendtoDeck(tg,nil,2,REASON_EFFECT) +end diff --git a/script/c100000533.lua b/script/c100000533.lua new file mode 100644 index 00000000..635bf68c --- /dev/null +++ b/script/c100000533.lua @@ -0,0 +1,32 @@ +--ワルキューレ・ブリュンヒルデ +function c100000533.initial_effect(c) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000533,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c100000533.target) + e2:SetOperation(c100000533.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c100000533.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,0,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100000533.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100000534.lua b/script/c100000534.lua new file mode 100644 index 00000000..af12d38b --- /dev/null +++ b/script/c100000534.lua @@ -0,0 +1,17 @@ +--ワルキューレ・ドリッド +function c100000534.initial_effect(c) + --atk def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c100000534.value) + c:RegisterEffect(e2) +end +function c100000534.filter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) +end +function c100000534.value(e,c) + return Duel.GetMatchingGroupCount(c100000534.filter,c:GetControler(),LOCATION_REMOVED,LOCATION_REMOVED,nil)*100 +end diff --git a/script/c100000535.lua b/script/c100000535.lua new file mode 100644 index 00000000..c6c16cf0 --- /dev/null +++ b/script/c100000535.lua @@ -0,0 +1,36 @@ +--Ragnarok +--Fixed by Edo9300 +function c100000535.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000535,4)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000535.target) + e1:SetOperation(c100000535.operation) + c:RegisterEffect(e1) +end +c100000535.dark_magician_list=true +function c100000535.cfilter(c) + local code=c:GetCode() + return c:IsFaceup() and (code==92377303 or code==46986414 or code==38033121 or code==30208479) +end +function c100000535.dfilter(c) + return c:IsDestructable() +end +function c100000535.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingMatchingCard(c100000535.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil) and Duel.IsExistingMatchingCard(c100000535.dfilter,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c100000535.dfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000535.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsType,tp,0x13,0,nil,TYPE_MONSTER) + if Duel.Remove(sg,POS_FACEUP,REASON_EFFECT)>0 then + local dg=Duel.GetMatchingGroup(c100000535.dfilter,tp,0,LOCATION_MZONE,nil) + if dg:GetCount()>0 then + Duel.SendtoGrave(dg,REASON_DESTROY+REASON_EFFECT) + end + end +end diff --git a/script/c100000536.lua b/script/c100000536.lua new file mode 100644 index 00000000..5bee35b9 --- /dev/null +++ b/script/c100000536.lua @@ -0,0 +1,94 @@ +--ブラック・イリュージョン +function c100000536.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c100000536.condition) + e1:SetTarget(c100000536.target) + e1:SetOperation(c100000536.activate) + c:RegisterEffect(e1) +end +c100000536.dark_magician_list=true +function c100000536.cfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and c:IsCode(46986414) and c:IsControler(tp) +end +function c100000536.condition(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + if not re:IsActiveType(TYPE_MONSTER) or ep==tp then return false end + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_BECOME_TARGET,true) + if res then + if trp~=tp and tre:IsActiveType(TYPE_MONSTER) and teg:FilterCount(c100000536.cfilter,nil,tp)==1 then + local g=teg:Filter(c100000536.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ex and tg~=nil and tc+tg:FilterCount(c100000536.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c100000536.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOHAND) + if ex and tg~=nil and tc+tg:FilterCount(c100000536.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c100000536.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_REMOVE) + if ex and tg~=nil and tc+tg:FilterCount(c100000536.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c100000536.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TODECK) + if ex and tg~=nil and tc+tg:FilterCount(c100000536.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c100000536.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_RELEASE) + if ex and tg~=nil and tc+tg:FilterCount(c100000536.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c100000536.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE) + if ex and tg~=nil and tc+tg:FilterCount(c100000536.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c100000536.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + return false +end +function c100000536.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end + local tc=e:GetLabelObject() + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c100000536.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(c100000536.efilter) + tc:RegisterEffect(e2) + end + Duel.Draw(1-tp,1,REASON_EFFECT) +end +function c100000536.efilter(e,te) + return te:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c100000537.lua b/script/c100000537.lua new file mode 100644 index 00000000..49e16d32 --- /dev/null +++ b/script/c100000537.lua @@ -0,0 +1,38 @@ +--ワルキューレ・アルテスト +function c100000537.initial_effect(c) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000537,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c100000537.target) + e2:SetOperation(c100000537.operation) + c:RegisterEffect(e2) +end +function c100000537.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c100000537.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c100000537.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000537.filter,tp,0,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c100000537.filter,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c100000537.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(tc:GetTextAttack()) + c:RegisterEffect(e1) + end +end + diff --git a/script/c100000538.lua b/script/c100000538.lua new file mode 100644 index 00000000..26a2aadd --- /dev/null +++ b/script/c100000538.lua @@ -0,0 +1,39 @@ +--ワルキューレ・ブリュンヒルデ +function c100000538.initial_effect(c) + --atk + 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:SetValue(c100000538.val) + c:RegisterEffect(e1) + --Destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c100000538.desreptg) + c:RegisterEffect(e2) +end +function c100000538.filter(c) + return (c:IsRace(RACE_DRAGON) or c:IsRace(RACE_WARRIOR)) and c:IsFaceup() +end +function c100000538.val(e,c) + return Duel.GetMatchingGroupCount(c100000538.filter,0,LOCATION_MZONE,LOCATION_MZONE,nil)*300 +end +function c100000538.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsReason(REASON_BATTLE) and c:IsFaceup() and c:GetDefense()>=1000 end + if Duel.SelectYesNo(tp,aux.Stringid(40945356,0)) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e2:SetReset(RESET_EVENT+0x1ff0000) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(-1000) + c:RegisterEffect(e2) + return true + else return false end +end diff --git a/script/c100000539.lua b/script/c100000539.lua new file mode 100644 index 00000000..0021e2c2 --- /dev/null +++ b/script/c100000539.lua @@ -0,0 +1,37 @@ +--英雄の掛橋-ビヴロスト +function c100000539.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000539.target) + e1:SetOperation(c100000539.activate) + c:RegisterEffect(e1) +end +function c100000539.filter(c) + return c:IsFaceup() and (c:GetCode()==100000533 or c:GetCode()==100000534 or c:GetCode()==100000537 or c:GetCode()==100000538) +end +function c100000539.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100000539.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000539.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c100000539.cfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100000539.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100000539.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) +end +function c100000539.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local atk=Duel.GetMatchingGroupCount(c100000539.cfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil)*500 + if tc 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:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100000540.lua b/script/c100000540.lua new file mode 100644 index 00000000..ba2b5e80 --- /dev/null +++ b/script/c100000540.lua @@ -0,0 +1,32 @@ +--トリブルドッグ +function c100000540.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000540,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000540.sptg) + e1:SetOperation(c100000540.spop) + c:RegisterEffect(e1) +end +function c100000540.filter(c) + return c:IsFaceup() and c:IsCode(100000540) +end +function c100000540.spfilter(c,e,tp) + return c:IsCode(100000540) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000540.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000540.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000540.spop(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,c100000540.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 \ No newline at end of file diff --git a/script/c100000541.lua b/script/c100000541.lua new file mode 100644 index 00000000..aaf53ebd --- /dev/null +++ b/script/c100000541.lua @@ -0,0 +1,34 @@ +--ダブル・ドッグ +function c100000541.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000541.condition) + e1:SetTarget(c100000541.target) + e1:SetOperation(c100000541.activate) + c:RegisterEffect(e1) +end +function c100000541.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_BEAST) +end +function c100000541.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000541.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100000541.filter(c,e,tp) + return c:IsCode(100000540) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100000541.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000541.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c100000541.activate(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,c100000541.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000542.lua b/script/c100000542.lua new file mode 100644 index 00000000..5abef089 --- /dev/null +++ b/script/c100000542.lua @@ -0,0 +1,51 @@ +--ローゲの焔 +function c100000542.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttackBelow,2000)) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetTarget(c100000542.sptg) + e3:SetOperation(c100000542.spop) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetCode(EVENT_BE_BATTLE_TARGET) + e4:SetRange(LOCATION_SZONE) + e4:SetOperation(c100000542.desop) + c:RegisterEffect(e4) +end +function c100000542.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsCode(100000538) +end +function c100000542.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000542.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c100000542.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.SelectMatchingCard(tp,c100000542.filter,tp,LOCATION_DECK+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 c100000542.desop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttackTarget() then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c100000543.lua b/script/c100000543.lua new file mode 100644 index 00000000..d740d073 --- /dev/null +++ b/script/c100000543.lua @@ -0,0 +1,81 @@ +--超巨大飛行艇ジャイアントヒンデンブルグ +function c100000543.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000543.spcon) + e1:SetOperation(c100000543.spop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000543,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c100000543.con) + e2:SetTarget(c100000543.target) + e2:SetOperation(c100000543.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --def 0 + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100000543,1)) + e4:SetCategory(CATEGORY_DEFCHANGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_CHANGE_POS) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c100000543.defcon) + e4:SetOperation(c100000543.defop) + c:RegisterEffect(e4) +end +function c100000543.spcon(e,c) + if c==nil then return true end + return Duel.CheckReleaseGroup(c:GetControler(),Card.IsType,2,nil,TYPE_TOKEN) +end +function c100000543.spop(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.SelectReleaseGroup(tp,Card.IsType,2,2,nil,TYPE_TOKEN) + Duel.Release(g,REASON_COST) +end +function c100000543.con(e,tp,eg,ep,ev,re,r,rp) + local tg=eg:GetFirst() + return eg:GetCount()==1 and tg~=e:GetHandler() and tg:IsLevelAbove(10) +end +function c100000543.filter(c) + return c:IsFaceup() and c:IsAttackPos() and c:IsLevelBelow(9) +end +function c100000543.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000543.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c100000543.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,sg,sg:GetCount(),0,0) +end +function c100000543.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100000543.filter,tp,0,LOCATION_MZONE,nil) + Duel.ChangePosition(sg,POS_FACEUP_DEFENSE,0,0,0) +end +function c100000543.deffilter(c) + return c:IsPreviousPosition(POS_FACEUP_ATTACK) and c:IsPosition(POS_FACEUP_DEFENSE) +end +function c100000543.defcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000543.deffilter,1,e:GetHandler()) +end +function c100000543.defop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c100000543.deffilter,e:GetHandler()) + local tc=g:GetFirst() + while tc do + if tc:GetDefense()>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end +end diff --git a/script/c100000544.lua b/script/c100000544.lua new file mode 100644 index 00000000..697c84e6 --- /dev/null +++ b/script/c100000544.lua @@ -0,0 +1,52 @@ +--超巨大不沈客船エレガントタイタニック +function c100000544.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000544.spcon) + e1:SetOperation(c100000544.spop) + c:RegisterEffect(e1) + --destroy&damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c100000544.target) + e2:SetOperation(c100000544.operation) + c:RegisterEffect(e2) +end +function c100000544.spcon(e,c) + if c==nil then return true end + return Duel.CheckReleaseGroup(c:GetControler(),Card.IsType,2,nil,TYPE_TOKEN) +end +function c100000544.spop(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.SelectReleaseGroup(tp,Card.IsType,2,2,nil,TYPE_TOKEN) + Duel.Release(g,REASON_COST) +end +function c100000544.filter(c) + return c:IsFaceup() and c:IsDestructable() and c:GetDefense()==0 +end +function c100000544.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100000544.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000544.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100000544.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,g:GetFirst():GetTextAttack()) +end +function c100000544.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(1-tp) then + local atk=tc:GetAttack() + if atk<0 then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk/2,REASON_EFFECT) + end + end +end + diff --git a/script/c100000545.lua b/script/c100000545.lua new file mode 100644 index 00000000..ab69e36f --- /dev/null +++ b/script/c100000545.lua @@ -0,0 +1,32 @@ +--フライアのリンゴ +function c100000545.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000545,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c100000545.drcon) + e1:SetTarget(c100000545.drtg) + e1:SetOperation(c100000545.drop) + c:RegisterEffect(e1) + local e3=e1:Clone() + e3:SetCode(EVENT_REMOVE) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e4) +end +function c100000545.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c100000545.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100000545.drop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c100000546.lua b/script/c100000546.lua new file mode 100644 index 00000000..00afe37e --- /dev/null +++ b/script/c100000546.lua @@ -0,0 +1,19 @@ +--宇宙花 +function c100000546.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c100000546.spcon) + c:RegisterEffect(e2) +end +function c100000546.spfilter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c100000546.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c100000546.spfilter,c:GetControler(),LOCATION_MZONE,0,2,nil) +end \ No newline at end of file diff --git a/script/c100000547.lua b/script/c100000547.lua new file mode 100644 index 00000000..4b64b7f6 --- /dev/null +++ b/script/c100000547.lua @@ -0,0 +1,24 @@ +--火銃花 +function c100000547.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44789585,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetTarget(c100000547.damtg) + e1:SetOperation(c100000547.damop) + c:RegisterEffect(e1) +end +function c100000547.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c100000547.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000548.lua b/script/c100000548.lua new file mode 100644 index 00000000..b1f2dc9c --- /dev/null +++ b/script/c100000548.lua @@ -0,0 +1,39 @@ +--トマトマトリョーシカ +function c100000548.initial_effect(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000548,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c100000548.sptg) + e2:SetOperation(c100000548.spop) + c:RegisterEffect(e2) + --xyzlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetValue(c100000548.xyzlimit) + c:RegisterEffect(e3) +end +function c100000548.filter(c,e,tp) + return c:IsCode(100000548) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000548.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000548.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c100000548.spop(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,c100000548.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) +end +function c100000548.xyzlimit(e,c) + if not c then return false end + return not c:IsRace(RACE_PLANT) +end + diff --git a/script/c100000549.lua b/script/c100000549.lua new file mode 100644 index 00000000..449e7b66 --- /dev/null +++ b/script/c100000549.lua @@ -0,0 +1,32 @@ +--トマト王レッドレッドキング +function c100000549.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_PLANT),3,2) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(100000549,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c100000549.cost) + e1:SetOperation(c100000549.operation) + c:RegisterEffect(e1) +end +function c100000549.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100000549.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END,2) + c:RegisterEffect(e1) + end +end + diff --git a/script/c100000550.lua b/script/c100000550.lua new file mode 100644 index 00000000..9dc54cd8 --- /dev/null +++ b/script/c100000550.lua @@ -0,0 +1,37 @@ +--N・シグナル +function c100000550.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100000550.condition) + e1:SetTarget(c100000550.target) + e1:SetOperation(c100000550.operation) + c:RegisterEffect(e1) +end +function c100000550.cfilter(c,tp) + return c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and c:IsType(TYPE_MONSTER) +end +function c100000550.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000550.cfilter,1,nil,tp) +end +function c100000550.spfilter(c,e,tp) + return c:IsSetCard(0x1f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000550.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000550.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c100000550.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,c100000550.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000551.lua b/script/c100000551.lua new file mode 100644 index 00000000..bc359742 --- /dev/null +++ b/script/c100000551.lua @@ -0,0 +1,48 @@ +--コンタクト・ソウル +function c100000551.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000551.condition) + e1:SetTarget(c100000551.target) + e1:SetOperation(c100000551.activate) + c:RegisterEffect(e1) +end +function c100000551.cfilter(c) + return c:IsFaceup() and c:IsCode(89943723) +end +function c100000551.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000551.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100000551.filter(c,e,tp) + return c:IsSetCard(0x1f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000551.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(0x13) and chkc:IsControler(tp) and c100000551.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000551.filter,tp,0x13,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000551.filter,tp,0x13,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000551.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c100000551.retop) + e1:SetReset(RESET_EVENT+RESET_PHASE+EVENT_PHASE+PHASE_END,1) + Duel.RegisterEffect(e1,tp) + end +end +function c100000551.retop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,0,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100000552.lua b/script/c100000552.lua new file mode 100644 index 00000000..62cab97b --- /dev/null +++ b/script/c100000552.lua @@ -0,0 +1,75 @@ +--ネオス・エナジー +function c100000552.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(c100000552.target) + e1:SetOperation(c100000552.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(800) + 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(c100000552.eqlimit) + c:RegisterEffect(e3) + --atkdown + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c100000552.atkcon) + e4:SetOperation(c100000552.atkop) + c:RegisterEffect(e4) +end +function c100000552.eqlimit(e,c) + return c:IsSetCard(0x1f) +end +function c100000552.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1f) +end +function c100000552.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100000552.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000552.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c100000552.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100000552.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c100000552.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000552.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(100000552)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-300) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + c:RegisterFlagEffect(100000552,RESET_EVENT+0x1fe0000,0,0) + e:SetLabelObject(e1) + e:SetLabel(2) + else + local pe=e:GetLabelObject() + local ct=e:GetLabel() + e:SetLabel(ct+1) + pe:SetValue(ct*-300) + end +end diff --git a/script/c100000553.lua b/script/c100000553.lua new file mode 100644 index 00000000..4f3deedd --- /dev/null +++ b/script/c100000553.lua @@ -0,0 +1,21 @@ +--ネオスペーシア・ロード +function c100000553.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c100000553.condition) + e1:SetOperation(c100000553.operation) + c:RegisterEffect(e1) +end +function c100000553.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp and c:IsCode(89943723) +end +function c100000553.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000553.cfilter,1,nil,tp) +end +function c100000553.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c100000554.lua b/script/c100000554.lua new file mode 100644 index 00000000..a211b173 --- /dev/null +++ b/script/c100000554.lua @@ -0,0 +1,66 @@ +--クロス・チェンジ +function c100000554.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetLabel(0) + e1:SetTarget(c100000554.target) + e1:SetOperation(c100000554.activate) + c:RegisterEffect(e1) +end +function c100000554.filter1(c,setcard1,setcard2,e,tp) + local lv=c:GetLevel() + return c:IsSetCard(setcard1) and c:IsAbleToDeck() + and Duel.IsExistingMatchingCard(c100000554.filter2,tp,LOCATION_DECK,0,1,nil,setcard2,lv,e,tp) +end +function c100000554.filter2(c,setcard,lv,e,tp) + return c:IsSetCard(setcard) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000554.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c100000554.filter1,tp,LOCATION_MZONE,0,1,nil,0x3008,0x1f,e,tp) + or Duel.IsExistingMatchingCard(c100000554.filter1,tp,LOCATION_MZONE,0,1,nil,0x1f,0x3008,e,tp) + end + local opt=0 + if Duel.IsExistingMatchingCard(c100000554.filter1,tp,LOCATION_MZONE,0,1,nil,0x3008,0x1f,e,tp) + and Duel.IsExistingMatchingCard(c100000554.filter1,tp,LOCATION_MZONE,0,1,nil,0x1f,0x3008,e,tp) then + opt=Duel.SelectOption(tp,aux.Stringid(100000554,0),aux.Stringid(100000554,1)) + else + if Duel.IsExistingMatchingCard(c100000554.filter1,tp,LOCATION_MZONE,0,1,nil,0x1f,0x3008,e,tp) then + opt=1 + end + end + Duel.SetTargetParam(opt) + local setcard=nil + if opt==0 then + setcard1=0x3008 + setcard2=0x1f + else + setcard1=0x1f + setcard2=0x3008 + e:SetLabel(1) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c100000554.filter1,tp,LOCATION_MZONE,0,1,1,nil,setcard1,setcard2,e,tp) +end +function c100000554.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + local opt=e:GetLabel() + if opt==0 then + setcard=0x1f + else + setcard=0x3008 + end + local lv=tc:GetLevel() + local dt=Duel.GetMatchingGroup(c100000554.filter2,tp,LOCATION_DECK,0,nil,setcard,lv,e,tp) + if tc:IsLocation(LOCATION_MZONE) and tc:IsRelateToEffect(e) and dt:GetCount()>0 then + Duel.SendtoDeck(tc,nil,1,REASON_EFFECT) + local dt=Duel.SelectMatchingCard(tp,c100000554.filter2,tp,LOCATION_DECK,0,1,1,nil,setcard,lv,e,tp) + if dt then + Duel.SpecialSummon(dt,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c100000555.lua b/script/c100000555.lua new file mode 100644 index 00000000..d627c60c --- /dev/null +++ b/script/c100000555.lua @@ -0,0 +1,49 @@ +--ENシャッフル +function c100000555.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000555.target) + e1:SetOperation(c100000555.activate) + c:RegisterEffect(e1) +end +function c100000555.filter1(c,e,tp) + return c:IsSetCard(0x3008) and c:IsAbleToDeck() + and Duel.IsExistingMatchingCard(c100000555.filter2,tp,LOCATION_DECK,0,1,nil,e,tp) +end +function c100000555.filter2(c,e,tp) + return c:IsSetCard(0x1f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000555.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c100000555.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c100000555.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) +end +function c100000555.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsLocation(LOCATION_MZONE) and tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,1,REASON_EFFECT) + Duel.BreakEffect() + local dt=Duel.GetMatchingGroup(c100000555.filter2,tp,LOCATION_DECK,0,nil,e,tp) + if dt:GetCount()>0 then + local ed=dt:Select(tp,1,1,nil):GetFirst() + if Duel.SpecialSummonStep(ed,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + ed:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + ed:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end + end + end +end diff --git a/script/c100000556.lua b/script/c100000556.lua new file mode 100644 index 00000000..734d870f --- /dev/null +++ b/script/c100000556.lua @@ -0,0 +1,29 @@ +--バリアン・ボム +function c100000556.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_TOHAND) + e1:SetCategory(CATEGORY_HANDES) + e1:SetTarget(c100000556.target) + e1:SetOperation(c100000556.operation) + c:RegisterEffect(e1) +end +function c100000556.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c100000556.filter(c) + return c:IsCode(47660516) or c:IsCode(92365601) or c:IsCode(100000286) +end +function c100000556.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100000556.filter,tp,0,LOCATION_HAND,nil) + local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.ConfirmCards(tp,hg) + if g:GetCount()>0 then + Duel.SendtoGrave(hg,REASON_EFFECT+REASON_DESTROY) + Duel.Damage(1-tp,1000,REASON_EFFECT) + end + Duel.ShuffleHand(1-tp) +end diff --git a/script/c100000557.lua b/script/c100000557.lua new file mode 100644 index 00000000..1274cb6e --- /dev/null +++ b/script/c100000557.lua @@ -0,0 +1,41 @@ +--未来への希望 +function c100000557.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000557.condition) + e1:SetCost(c100000557.cost) + e1:SetTarget(c100000557.target) + e1:SetOperation(c100000557.activate) + c:RegisterEffect(e1) +end +function c100000557.cfilter(c) + return c:IsCode(89943723) and c:IsFaceup() +end +function c100000557.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000557.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100000557.costfilter(c) + return c:IsCode(24094653) and c:IsDiscardable() +end +function c100000557.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000557.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c100000557.costfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c100000557.filter1(c,tp) + if not c:IsAbleToGrave() then return false end + return Duel.IsExistingMatchingCard(c100000557.filter2,tp,LOCATION_EXTRA,0,1,nil,c) +end +function c100000557.filter2(c,mc) + return c.material and mc:IsCode(table.unpack(c.material)) and c:IsSetCard(0x9) +end +function c100000557.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000557.filter1,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c100000557.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100000557.filter1,tp,LOCATION_DECK,0,nil,tp) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c100000560.lua b/script/c100000560.lua new file mode 100644 index 00000000..c6ce0d8d --- /dev/null +++ b/script/c100000560.lua @@ -0,0 +1,41 @@ +--オレンジ・シャーマン +function c100000560.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetDescription(aux.Stringid(100000560,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c100000560.condition) + e1:SetTarget(c100000560.target) + e1:SetOperation(c100000560.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c100000560.cfilter(c,e,tp) + return c:IsControler(tp) and c:IsFaceup() and c:IsType(TYPE_EFFECT) and (not e or c:IsRelateToEffect(e)) +end +function c100000560.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000560.cfilter,1,nil,nil,1-tp) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c100000560.filter(c,e,tp) + return c:IsSetCard(0x309) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000560.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000560.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000560.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,c100000560.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000561.lua b/script/c100000561.lua new file mode 100644 index 00000000..32da84c8 --- /dev/null +++ b/script/c100000561.lua @@ -0,0 +1,35 @@ +--グリーン・シャーマン +function c100000561.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetDescription(aux.Stringid(100000561,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c100000561.condition) + e1:SetTarget(c100000561.target) + e1:SetOperation(c100000561.operation) + c:RegisterEffect(e1) +end +function c100000561.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetOwner():IsType(TYPE_SPELL) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c100000561.filter(c,e,tp) + return c:IsSetCard(0x309) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000561.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000561.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000561.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,c100000561.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000562.lua b/script/c100000562.lua new file mode 100644 index 00000000..5ee9b534 --- /dev/null +++ b/script/c100000562.lua @@ -0,0 +1,36 @@ +--レッド・シャーマン +function c100000562.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetDescription(aux.Stringid(100000562,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c100000562.condition) + e1:SetTarget(c100000562.target) + e1:SetOperation(c100000562.operation) + c:RegisterEffect(e1) +end +function c100000562.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetOwner():IsType(TYPE_TRAP) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c100000562.filter(c,e,tp) + return c:IsSetCard(0x309) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000562.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000562.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000562.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,c100000562.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000563.lua b/script/c100000563.lua new file mode 100644 index 00000000..343346c6 --- /dev/null +++ b/script/c100000563.lua @@ -0,0 +1,35 @@ +--シャーマン・コール +function c100000563.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000563.condition) + e1:SetTarget(c100000563.target) + e1:SetOperation(c100000563.operation) + c:RegisterEffect(e1) +end +function c100000563.cfilter(c) + return c:IsFaceup() and c:GetAttack()==0 and c:IsRace(RACE_SPELLCASTER) +end +function c100000563.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000563.cfilter,tp,LOCATION_MZONE,0,2,nil) +end +function c100000563.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and + c:IsSetCard(0x309) +end +function c100000563.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000563.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000563.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,c100000563.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100000564.lua b/script/c100000564.lua new file mode 100644 index 00000000..c14cf8d6 --- /dev/null +++ b/script/c100000564.lua @@ -0,0 +1,20 @@ +--弔いの舞 +function c100000564.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetTarget(c100000564.sumlimit) + c:RegisterEffect(e2) +end +function c100000564.sumlimit(e,c,sump,sumtype,sumpos,targetp) + return c:IsLocation(LOCATION_GRAVE) +end \ No newline at end of file diff --git a/script/c100000565.lua b/script/c100000565.lua new file mode 100644 index 00000000..2776f4dc --- /dev/null +++ b/script/c100000565.lua @@ -0,0 +1,51 @@ +--氷結の舞 +function c100000565.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100000565.operation) + c:RegisterEffect(e1) + --summon limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetTarget(c100000565.sumlimit) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e3) +end +function c100000565.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetCondition(c100000565.sdescon) + e1:SetOperation(c100000565.sdesop) + if Duel.GetTurnPlayer()~=tp then + e1:SetLabel(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_OPPO_TURN,3) + else + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_OPPO_TURN,2) + end + e:GetHandler():RegisterEffect(e1) +end +function c100000565.sdescon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c100000565.sdesop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + else + e:SetLabel(0) + end +end +function c100000565.sumlimit(e,c,sump,sumtype,sumpos,targetp) + return c:IsLocation(LOCATION_HAND) +end diff --git a/script/c100000570.lua b/script/c100000570.lua new file mode 100644 index 00000000..5ac97d3b --- /dev/null +++ b/script/c100000570.lua @@ -0,0 +1,46 @@ +--超電磁竜マグネドラゴン +function c100000570.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000570,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c100000570.damcon) + e2:SetTarget(c100000570.damtg) + e2:SetOperation(c100000570.damop) + c:RegisterEffect(e2) +end +function c100000570.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsType(TYPE_MONSTER) +end +function c100000570.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local bc=e:GetHandler():GetBattleTarget() + Duel.SetTargetCard(bc) + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100000570.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=tc:GetAttack() + if dam<0 then dam=0 end + Duel.Damage(p,dam,REASON_EFFECT) + end +end diff --git a/script/c100000571.lua b/script/c100000571.lua new file mode 100644 index 00000000..271b96db --- /dev/null +++ b/script/c100000571.lua @@ -0,0 +1,50 @@ +--磁力融合 +function c100000571.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100000571.cost) + e1:SetTarget(c100000571.target) + e1:SetOperation(c100000571.activate) + c:RegisterEffect(e1) +end +function c100000571.filter(c,code) + return c:IsCode(code) +end +function c100000571.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return Duel.CheckReleaseGroup(tp,c100000571.filter,1,nil,450000350) + and Duel.CheckReleaseGroup(tp,c100000571.filter,1,nil,450000351) + and Duel.CheckReleaseGroup(tp,c100000571.filter,1,nil,450000352) end + local rg1=Duel.SelectReleaseGroup(tp,c100000571.filter,1,1,nil,450000350) + local rg2=Duel.SelectReleaseGroup(tp,c100000571.filter,1,1,nil,450000351) + local rg3=Duel.SelectReleaseGroup(tp,c100000571.filter,1,1,nil,450000352) + rg1:Merge(rg2) + rg1:Merge(rg3) + Duel.Release(rg1,REASON_COST) +end +function c100000571.spfilter(c,e,tp) + return c:IsCode(100000570) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000571.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=(e:GetLabel()==1) and 0 or -1 + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c100000571.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>chkf + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + e:SetLabel(0) +end +function c100000571.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c100000571.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if sg:GetCount()>0 then + Duel.BreakEffect() + Duel.SpecialSummon(sg,SUMMON_TYPE_FUSION,tp,tp,true,false,POS_FACEUP) + sg:GetFirst():CompleteProcedure() + end +end diff --git a/script/c100000580.lua b/script/c100000580.lua new file mode 100644 index 00000000..720be870 --- /dev/null +++ b/script/c100000580.lua @@ -0,0 +1,50 @@ +--No.21氷結のレディ・ジャスティス +function c100000580.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,2) + c:EnableReviveLimit() + --atk + 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:SetValue(c100000580.atkval) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c100000580.indes) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c100000580.cost) + e3:SetTarget(c100000580.target) + e3:SetOperation(c100000580.operation) + c:RegisterEffect(e3) +end +c100000580.xyz_number=21 +function c100000580.atkval(e,c) + return c:GetOverlayCount()*1000 +end +function c100000580.indes(e,c) + return not c:IsSetCard(0x48) +end +function c100000580.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100000580.filter(c) + return c:IsDestructable() and c:IsPosition(POS_DEFENSE) +end +function c100000580.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000580.filter,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c100000580.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100000580.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100000580.filter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100000581.lua b/script/c100000581.lua new file mode 100644 index 00000000..c23b537a --- /dev/null +++ b/script/c100000581.lua @@ -0,0 +1,68 @@ +--ランクアップ・スパイダーウェブ +function c100000581.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Rank-Up + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c100000581.target) + e2:SetOperation(c100000581.activate) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetOperation(c100000581.sdesop) + c:RegisterEffect(e3) +end +function c100000581.filter1(c,e,tp) + local rk=c:GetRank() + return rk>0 and c:IsFaceup() and c:CheckRemoveOverlayCard(tp,1,REASON_EFFECT) + and Duel.IsExistingMatchingCard(c100000581.filter2,tp,LOCATION_EXTRA,0,1,nil,rk,e,tp) +end +function c100000581.filter2(c,rk,e,tp) + return c:GetRank()==rk+1 and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c100000581.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100000581.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c100000581.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c100000581.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100000581.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + tc:RemoveOverlayCard(tp,1,1,REASON_EFFECT) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000581.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank(),e,tp) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + e:GetHandler():RegisterFlagEffect(100000581,RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END,0,0) + end +end +function c100000581.sdesop(e,tp,eg,ep,ev,re,r,rp) + if tp~=Duel.GetTurnPlayer() then return end + if e:GetHandler():GetFlagEffect(100000581)==0 then + local c=e:GetHandler() + Duel.Destroy(c,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100000582.lua b/script/c100000582.lua new file mode 100644 index 00000000..87a3af4a --- /dev/null +++ b/script/c100000582.lua @@ -0,0 +1,30 @@ +--リターン・ランク・アップ +function c100000582.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000582.target) + e1:SetOperation(c100000582.activate) + c:RegisterEffect(e1) +end + +function c100000582.tgfilter(c) + return c:IsSetCard(0x95) and c:IsAbleToHand() +end +function c100000582.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000582.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100000582.tgfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectTarget(tp,c100000582.tgfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c100000582.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c100000590.lua b/script/c100000590.lua new file mode 100644 index 00000000..5996c127 --- /dev/null +++ b/script/c100000590.lua @@ -0,0 +1,103 @@ +--ダークネス +function c100000590.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000590.target) + e1:SetOperation(c100000590.activate) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c100000590.descon) + e2:SetOperation(c100000590.desop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100000590,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c100000590.setop) + c:RegisterEffect(e3) +end +function c100000590.filter(c,code) + return c:IsCode(code) and c:IsSSetable() +end +function c100000590.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c100000590.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100000590.filter,tp,0x03,0,1,nil,100000591) + and Duel.IsExistingMatchingCard(c100000590.filter,tp,0x03,0,1,nil,100000592) + and Duel.IsExistingMatchingCard(c100000590.filter,tp,0x03,0,1,nil,100000593) + and Duel.IsExistingMatchingCard(c100000590.filter,tp,0x03,0,1,nil,100000594) + and Duel.IsExistingMatchingCard(c100000590.filter,tp,0x03,0,1,nil,100000595) end + local g=Duel.GetMatchingGroup(c100000590.desfilter,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + +end +function c100000590.sfilter(c) + return c:IsSSetable() and (c:IsCode(100000591) or c:IsCode(100000592) or c:IsCode(100000593) or c:IsCode(100000594) or c:IsCode(100000595)) +end +function c100000590.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c100000590.desfilter,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if ft<=4 then return end + Duel.BreakEffect() + --darkness + if Duel.GetMatchingGroupCount(c100000590.filter,tp,0x03,0,nil,100000591)==0 then return end + if Duel.GetMatchingGroupCount(c100000590.filter,tp,0x03,0,nil,100000592)==0 then return end + if Duel.GetMatchingGroupCount(c100000590.filter,tp,0x03,0,nil,100000593)==0 then return end + if Duel.GetMatchingGroupCount(c100000590.filter,tp,0x03,0,nil,100000594)==0 then return end + if Duel.GetMatchingGroupCount(c100000590.filter,tp,0x03,0,nil,100000595)==0 then return end + local sg=Duel.GetMatchingGroup(c100000590.sfilter,tp,0x03,0,nil) + local s1=sg:RandomSelect(tp,1):GetFirst() + Duel.SSet(tp,s1) + sg:Remove(Card.IsCode,nil,s1:GetCode()) + Duel.BreakEffect() + local s2=sg:RandomSelect(tp,1):GetFirst() + Duel.SSet(tp,s2) + sg:Remove(Card.IsCode,nil,s2:GetCode()) + Duel.BreakEffect() + local s3=sg:RandomSelect(tp,1):GetFirst() + Duel.SSet(tp,s3) + sg:Remove(Card.IsCode,nil,s3:GetCode()) + Duel.BreakEffect() + local s4=sg:RandomSelect(tp,1):GetFirst() + Duel.SSet(tp,s4) + sg:Remove(Card.IsCode,nil,s4:GetCode()) + Duel.BreakEffect() + local s5=sg:RandomSelect(tp,1):GetFirst() + Duel.SSet(tp,s5) +end +function c100000590.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c100000590.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100000590.cfilter,1,nil,tp) and re:GetHandler()~=e:GetHandler() +end +function c100000590.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100000590.desfilter,tp,LOCATION_ONFIELD,0,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c100000590.setfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TRAP) +end +function c100000590.setop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c100000590.setfilter,tp,LOCATION_ONFIELD,0,nil) + local tc=g:GetFirst() + while tc do + Duel.ChangePosition(tc,POS_FACEDOWN) + Duel.RaiseEvent(tc,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) + tc=g:GetNext() + end +end diff --git a/script/c100000591.lua b/script/c100000591.lua new file mode 100644 index 00000000..3035933f --- /dev/null +++ b/script/c100000591.lua @@ -0,0 +1,33 @@ +--ダークネス 1 +function c100000591.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000591.descon) + e1:SetTarget(c100000591.destg) + e1:SetOperation(c100000591.desop) + c:RegisterEffect(e1) +end +function c100000591.descon(e,tp,eg,ep,ev,re,r,rp) + return false +end +function c100000591.cfilter(c) + return c:IsFaceup() and (c:IsCode(100000591) or c:IsCode(100000592) or c:IsCode(100000593)) +end +function c100000591.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local ct=Duel.GetMatchingGroupCount(c100000591.cfilter,tp,LOCATION_ONFIELD,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,ct,0,0) +end +function c100000591.filter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c100000591.desop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c100000591.cfilter,tp,LOCATION_ONFIELD,0,nil) + if Duel.GetMatchingGroupCount(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil)>=ct then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,ct,ct,nil) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c100000592.lua b/script/c100000592.lua new file mode 100644 index 00000000..f2edbff3 --- /dev/null +++ b/script/c100000592.lua @@ -0,0 +1,41 @@ +--ダークネス 2 +function c100000592.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(c100000592.con) + e1:SetTarget(c100000592.tg) + e1:SetOperation(c100000592.op) + c:RegisterEffect(e1) +end +function c100000592.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c100000592.cfilter(c) + return c:IsFaceup() and (c:IsCode(100000591) or c:IsCode(100000592) or c:IsCode(100000593)) +end +function c100000592.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:GetControler()==tp and chkc:IsFaceup() end + if chk==0 then return true end + local ct=Duel.GetMatchingGroupCount(c100000591.cfilter,tp,LOCATION_ONFIELD,0,nil) + if ct>0 and Duel.GetFlagEffect(tp,100000590)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + end +end +function c100000592.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local ct=Duel.GetMatchingGroupCount(c100000591.cfilter,tp,LOCATION_ONFIELD,0,nil) + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(ct*1000) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100000593.lua b/script/c100000593.lua new file mode 100644 index 00000000..a23216be --- /dev/null +++ b/script/c100000593.lua @@ -0,0 +1,29 @@ +--ダークネス 3 +function c100000593.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c100000593.damtg) + e1:SetOperation(c100000593.damop) + c:RegisterEffect(e1) +end +function c100000593.cfilter(c) + return c:IsFaceup() and (c:IsCode(100000591) or c:IsCode(100000592) or c:IsCode(100000593)) +end +function c100000593.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetMatchingGroupCount(c100000593.cfilter,tp,LOCATION_ONFIELD,0,nil) + if ct>0 and Duel.GetFlagEffect(tp,100000590)~=0 then + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ct*1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*1000) + end +end +function c100000593.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(c100000593.cfilter,tp,LOCATION_ONFIELD,0,nil) + Duel.Damage(p,ct*1000,REASON_EFFECT) +end diff --git a/script/c100000594.lua b/script/c100000594.lua new file mode 100644 index 00000000..6debb828 --- /dev/null +++ b/script/c100000594.lua @@ -0,0 +1,111 @@ +--虚無 +function c100000594.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000594.target) + e1:SetOperation(c100000594.operation) + c:RegisterEffect(e1) +end +function c100000594.filter(c) + return c:IsFacedown() and c:CheckActivateEffect(true,true,false)~=nil +end +function c100000594.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingTarget(c100000594.filter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end +end +function c100000594.allfilter(c) + return c:IsFaceup() and c:IsCode(100000595) +end +function c100000594.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.RegisterFlagEffect(tp,100000590,RESET_CHAIN,0,1) + if Duel.IsExistingMatchingCard(c100000594.allfilter,tp,LOCATION_SZONE,0,1,nil) then + local sg=Duel.GetMatchingGroup(c100000594.filter,tp,LOCATION_SZONE,0,e:GetHandler()) + Duel.ChangePosition(sg,POS_FACEUP) + local tc=sg:GetFirst() + while tc do + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + tc=sg:GetNext() + end + else + local tc=Duel.GetMatchingGroup(c100000594.filter,tp,LOCATION_SZONE,0,e:GetHandler()):RandomSelect(tp,1):GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.ChangePosition(tc,POS_FACEUP) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c100000595.lua b/script/c100000595.lua new file mode 100644 index 00000000..dd299632 --- /dev/null +++ b/script/c100000595.lua @@ -0,0 +1,111 @@ +--無限 +function c100000595.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000595.target) + e1:SetOperation(c100000595.operation) + c:RegisterEffect(e1) +end +function c100000595.filter(c) + return c:IsFacedown() and c:CheckActivateEffect(true,true,false)~=nil +end +function c100000595.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingTarget(c100000595.filter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end +end +function c100000595.allfilter(c) + return c:IsFaceup() and c:IsCode(100000594) +end +function c100000595.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.RegisterFlagEffect(tp,100000590,RESET_CHAIN,0,1) + if Duel.IsExistingMatchingCard(c100000595.allfilter,tp,LOCATION_SZONE,0,1,nil) then + local sg=Duel.GetMatchingGroup(c100000595.filter,tp,LOCATION_SZONE,0,e:GetHandler()) + Duel.ChangePosition(sg,POS_FACEUP) + local tc=sg:GetFirst() + while tc do + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + tc=sg:GetNext() + end + else + local tc=Duel.GetMatchingGroup(c100000595.filter,tp,LOCATION_SZONE,0,e:GetHandler()):RandomSelect(tp,1):GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.ChangePosition(tc,POS_FACEUP) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c100000600.lua b/script/c100000600.lua new file mode 100644 index 00000000..bbbf5f14 --- /dev/null +++ b/script/c100000600.lua @@ -0,0 +1,29 @@ +--選手入場アナウンス +function c100000600.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000600.target) + e1:SetOperation(c100000600.activate) + c:RegisterEffect(e1) +end +function c100000600.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsSetCard(0x84) +end +function c100000600.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_HAND) and c100000600.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100000600.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000600.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,tp,LOCATION_HAND) +end +function c100000600.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000601.lua b/script/c100000601.lua new file mode 100644 index 00000000..ac84829e --- /dev/null +++ b/script/c100000601.lua @@ -0,0 +1,31 @@ +--KO BK +function c100000601.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c100000601.condition) + e1:SetTarget(c100000601.target) + e1:SetOperation(c100000601.activate) + c:RegisterEffect(e1) +end +function c100000601.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return eg:GetCount()==1 and tc:IsControler(tp) and tc:IsSetCard(0x84) + and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) +end +function c100000601.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + local atk=eg:GetFirst():GetBattleTarget():GetAttack() + if atk<0 then atk=0 end + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c100000601.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100000602.lua b/script/c100000602.lua new file mode 100644 index 00000000..d6489373 --- /dev/null +++ b/script/c100000602.lua @@ -0,0 +1,57 @@ +--アクセル・フットワーク +function c100000602.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100000602.condition) + e1:SetTarget(c100000602.target) + e1:SetOperation(c100000602.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c100000602.con2) + e2:SetTarget(c100000602.tar2) + e2:SetOperation(c100000602.act2) + c:RegisterEffect(e2) +end +function c100000602.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and re:IsActiveType(TYPE_TRAP) + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c100000602.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100000602.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c100000602.filter(c) + return c:IsFaceup() and c:IsSetCard(0x84) +end +function c100000602.con2(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:GetHandler():IsType(TYPE_COUNTER) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) + and Duel.IsExistingMatchingCard(c100000602.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c100000602.tar2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c100000602.act2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c100000603.lua b/script/c100000603.lua new file mode 100644 index 00000000..9edd8ca3 --- /dev/null +++ b/script/c100000603.lua @@ -0,0 +1,41 @@ +--カウンターズ・ハイ +function c100000603.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100000603.condition) + e1:SetTarget(c100000603.target) + e1:SetOperation(c100000603.activate) + c:RegisterEffect(e1) +end +function c100000603.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and ep~=tp and re:GetHandler():IsType(TYPE_COUNTER) + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c100000603.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100000603.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + --damage reduce + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c100000603.rdop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c100000603.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev*2) + Duel.ChangeBattleDamage(1-tp,ev*2) +end diff --git a/script/c100000604.lua b/script/c100000604.lua new file mode 100644 index 00000000..72e909dd --- /dev/null +++ b/script/c100000604.lua @@ -0,0 +1,32 @@ +--コークスクリュー・クロス +function c100000604.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100000604.condition) + e1:SetTarget(c100000604.target) + e1:SetOperation(c100000604.activate) + c:RegisterEffect(e1) +end +function c100000604.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and ep~=tp and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) + and Duel.IsChainNegatable(ev) +end +function c100000604.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100000604.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + Duel.BreakEffect() + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c100000620.lua b/script/c100000620.lua new file mode 100644 index 00000000..90b15c76 --- /dev/null +++ b/script/c100000620.lua @@ -0,0 +1,75 @@ +--新生代化石マシン スカルバギー +function c100000620.initial_effect(c) + --fusion material + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_FUSION_MATERIAL) + e1:SetCondition(c100000620.fcon) + e1:SetOperation(c100000620.fop) + c:RegisterEffect(e1) + --cannot spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetRange(LOCATION_EXTRA) + e2:SetValue(c100000620.splimit) + c:RegisterEffect(e2) +end +function c100000620.splimit(e,se,sp,st) + if bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION then return se:GetHandler():IsCode(100000025) + else return true end +end +function c100000620.filter1(c,tp) + return (c:IsRace(RACE_ROCK) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp)) or c:IsHasEffect(511002961) +end +function c100000620.filter2(c,tp) + return (c:IsType(TYPE_MONSTER) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(1-tp)) or c:IsHasEffect(511002961) +end +function c100000620.fcon(e,g,gc,chkfnf) + local tp=e:GetHandlerPlayer() + local chkf=bit.band(chkfnf,0xff) + if g==nil then return true end + if gc then return (c100000620.filter1(gc,tp) and g:IsExists(c100000620.filter2,1,gc,tp)) + or (c100000620.filter2(gc,tp) and g:IsExists(c100000620.filter1,1,gc,tp)) end + local b1=0 local b2=0 local b3=0 local ct=0 + local tc=g:GetFirst() + while tc do + local match=false + if tc:IsHasEffect(511002961) then b3=b3+1 match=true + else + if c100000620.filter1(tc,tp) then b1=1 match=true end + if c100000620.filter2(tc,tp) then b2=1 match=true end + end + if match==true then ct=ct+1 end + tc=g:GetNext() + end + return b1+b2+b3>1 and ct>1 and chkf==PLAYER_NONE +end +function c100000620.fop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local tp=e:GetHandlerPlayer() + if gc then + local sg=Group.CreateGroup() + if c100000620.filter1(gc,tp) then sg:Merge(eg:Filter(c100000620.filter2,gc,tp)) end + if c100000620.filter2(gc,tp) then sg:Merge(eg:Filter(c100000620.filter1,gc,tp)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local g1=eg:Filter(c100000620.filter1,nil,tp) + local g2=eg:Filter(c100000620.filter2,nil,tp) + if g1:GetCount()==1 and g2:GetCount()>1 then + g2:Sub(g1) + elseif g2:GetCount()==1 and g1:GetCount()>1 then + g1:Sub(g2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc2=g2:Select(tp,1,1,tc1:GetFirst()) + tc1:Merge(tc2) + Duel.SetFusionMaterial(tc1) +end diff --git a/script/c100000621.lua b/script/c100000621.lua new file mode 100644 index 00000000..ae296661 --- /dev/null +++ b/script/c100000621.lua @@ -0,0 +1,72 @@ +--新生代化石竜 スカルガー +function c100000621.initial_effect(c) + --fusion material + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c100000621.fcon) + e0:SetOperation(c100000621.fop) + c:RegisterEffect(e0) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c100000621.splimit) + c:RegisterEffect(e1) +end +function c100000621.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and se:GetHandler():IsCode(100000025) +end +function c100000621.filter1(c,tp) + return (c:IsRace(RACE_ROCK) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp)) or c:IsHasEffect(511002961) +end +function c100000621.filter2(c,tp) + return (c:IsLevelBelow(4) and c:IsRace(RACE_DINOSAUR) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(1-tp)) or c:IsHasEffect(511002961) +end +function c100000621.fcon(e,g,gc,chkfnf) + local tp=e:GetHandlerPlayer() + local chkf=bit.band(chkfnf,0xff) + if g==nil then return true end + if gc then return (c100000621.filter1(gc,tp) and g:IsExists(c100000621.filter2,1,gc,tp)) + or (c100000621.filter2(gc,tp) and g:IsExists(c100000621.filter1,1,gc,tp)) end + local b1=0 local b2=0 local b3=0 local ct=0 + local tc=g:GetFirst() + while tc do + local match=false + if tc:IsHasEffect(511002961) then b3=b3+1 match=true + else + if c100000621.filter1(tc,tp) then b1=1 match=true end + if c100000621.filter2(tc,tp) then b2=1 match=true end + end + tc=g:GetNext() + end + return b1+b2+b3>1 and ct>1 and chkf==PLAYER_NONE +end +function c100000621.fop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local tp=e:GetHandlerPlayer() + if gc then + local sg=Group.CreateGroup() + if c100000621.filter1(gc,tp) then sg:Merge(eg:Filter(c100000621.filter2,gc,tp)) end + if c100000621.filter2(gc,tp) then sg:Merge(eg:Filter(c100000621.filter1,gc,tp)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local g1=eg:Filter(c100000621.filter1,nil,tp) + local g2=eg:Filter(c100000621.filter2,nil,tp) + if g1:GetCount()==1 and g2:GetCount()>1 then + g2:Sub(g1) + elseif g2:GetCount()==1 and g1:GetCount()>1 then + g1:Sub(g2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc2=g2:Select(tp,1,1,tc1:GetFirst()) + tc1:Merge(tc2) + Duel.SetFusionMaterial(tc1) +end diff --git a/script/c100000622.lua b/script/c100000622.lua new file mode 100644 index 00000000..d94e489b --- /dev/null +++ b/script/c100000622.lua @@ -0,0 +1,75 @@ +--中生代化石マシン スカルワゴン +function c100000622.initial_effect(c) + --fusion material + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c100000622.fcon) + e0:SetOperation(c100000622.fop) + c:RegisterEffect(e0) + --cannot spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetRange(LOCATION_EXTRA) + e2:SetValue(c100000622.splimit) + c:RegisterEffect(e2) +end +function c100000622.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and se:GetHandler():IsCode(100000025) +end +function c100000622.filter1(c,tp) + return (c:IsRace(RACE_ROCK) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp)) or c:IsHasEffect(511002961) +end +function c100000622.filter2(c,tp) + return ((c:GetLevel()==5 or c:GetLevel()==6) and c:IsRace(RACE_MACHINE) and c:IsLocation(LOCATION_GRAVE) and c:IsControler(1-tp)) + or c:IsHasEffect(511002961) +end +function c100000622.fcon(e,g,gc,chkfnf) + local tp=e:GetHandlerPlayer() + local chkf=bit.band(chkfnf,0xff) + if g==nil then return true end + if gc then return (c100000622.filter1(gc,tp) and g:IsExists(c100000622.filter2,1,gc,tp)) + or (c100000622.filter2(gc,tp) and g:IsExists(c100000622.filter1,1,gc,tp)) end + local b1=0 local b2=0 local b3=0 local ct=0 + local tc=g:GetFirst() + while tc do + local match=false + if tc:IsHasEffect(511002961) then b3=b3+1 match=true + else + if c100000622.filter1(tc,tp) then b1=1 match=true end + if c100000622.filter2(tc,tp) then b2=1 match=true end + end + if match==true then ct=ct+1 end + tc=g:GetNext() + end + return b1+b2+b3>1 and ct>1 and chkf==PLAYER_NONE +end +function c100000622.fop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local tp=e:GetHandlerPlayer() + if gc then + local sg=Group.CreateGroup() + if c100000622.filter1(gc,tp) then sg:Merge(eg:Filter(c100000622.filter2,gc,tp)) end + if c100000622.filter2(gc,tp) then sg:Merge(eg:Filter(c100000622.filter1,gc,tp)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local g1=eg:Filter(c100000622.filter1,nil,tp) + local g2=eg:Filter(c100000622.filter2,nil,tp) + if g1:GetCount()==1 and g2:GetCount()>1 then + g2:Sub(g1) + elseif g2:GetCount()==1 and g1:GetCount()>1 then + g1:Sub(g2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local tc2=g2:Select(tp,1,1,tc1:GetFirst()) + tc1:Merge(tc2) + Duel.SetFusionMaterial(tc1) +end diff --git a/script/c100000633.lua b/script/c100000633.lua new file mode 100644 index 00000000..55f48ac5 --- /dev/null +++ b/script/c100000633.lua @@ -0,0 +1,31 @@ +--集結!ランドスター戦隊 +function c100000633.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100000633.target) + e1:SetOperation(c100000633.operation) + c:RegisterEffect(e1) +end +function c100000633.filter(c,e,tp) + return (c:GetCode()==3573512 or c:GetCode()==83602069 or c:GetCode()==100000630 or c:GetCode()==100000631 or c:GetCode()==100000632) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000633.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000633.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100000633.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100000633.filter,tp,LOCATION_HAND,0,ft,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end + diff --git a/script/c100000650.lua b/script/c100000650.lua new file mode 100644 index 00000000..35141f55 --- /dev/null +++ b/script/c100000650.lua @@ -0,0 +1,20 @@ +--錬金釜 カオス・ディスティル +function c100000650.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c100000650.rmtarget) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2) +end +function c100000650.rmtarget(e,c) + return e:GetHandler():GetOwner()==c:GetControler() +end diff --git a/script/c100000651.lua b/script/c100000651.lua new file mode 100644 index 00000000..4f631c74 --- /dev/null +++ b/script/c100000651.lua @@ -0,0 +1,16 @@ +--錬金獣・錫のアエトス +function c100000651.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) +end diff --git a/script/c100000652.lua b/script/c100000652.lua new file mode 100644 index 00000000..f60afe2a --- /dev/null +++ b/script/c100000652.lua @@ -0,0 +1,16 @@ +--錬金獣・鉄のランプ +function c100000652.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) +end diff --git a/script/c100000653.lua b/script/c100000653.lua new file mode 100644 index 00000000..e4ce70ac --- /dev/null +++ b/script/c100000653.lua @@ -0,0 +1,16 @@ +--錬金獣・銅のウロボロス +function c100000653.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) +end diff --git a/script/c100000654.lua b/script/c100000654.lua new file mode 100644 index 00000000..73adf1f9 --- /dev/null +++ b/script/c100000654.lua @@ -0,0 +1,16 @@ +--錬金獣・鉛のレオーン +function c100000654.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) +end diff --git a/script/c100000655.lua b/script/c100000655.lua new file mode 100644 index 00000000..70cc25b4 --- /dev/null +++ b/script/c100000655.lua @@ -0,0 +1,16 @@ +--錬金獣・銀のムーンフェイス +function c100000655.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) +end diff --git a/script/c100000656.lua b/script/c100000656.lua new file mode 100644 index 00000000..02bfd8f6 --- /dev/null +++ b/script/c100000656.lua @@ -0,0 +1,16 @@ +--錬金獣・水銀のエケネイス +function c100000656.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) +end diff --git a/script/c100000657.lua b/script/c100000657.lua new file mode 100644 index 00000000..92fc709f --- /dev/null +++ b/script/c100000657.lua @@ -0,0 +1,36 @@ + --錫の魔法陣 +function c100000657.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000657.condition) + e1:SetTarget(c100000657.target) + e1:SetOperation(c100000657.activate) + c:RegisterEffect(e1) +end +function c100000657.spfilter(c,e,tp) + return c:IsCode(100000651) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000657.cfilter(c) + return c:IsFaceup() and c:IsCode(100000650) +end +function c100000657.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000657.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c100000657.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) +end +function c100000657.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c100000657.activate(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,c100000657.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c100000658.lua b/script/c100000658.lua new file mode 100644 index 00000000..1dc19ac4 --- /dev/null +++ b/script/c100000658.lua @@ -0,0 +1,36 @@ +--鉄のランプ +function c100000658.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000658.condition) + e1:SetTarget(c100000658.target) + e1:SetOperation(c100000658.activate) + c:RegisterEffect(e1) +end +function c100000658.spfilter(c,e,tp) + return c:IsCode(100000652) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000658.cfilter(c) + return c:IsFaceup() and c:IsCode(100000650) +end +function c100000658.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000658.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c100000658.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) +end +function c100000658.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c100000658.activate(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,c100000658.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c100000659.lua b/script/c100000659.lua new file mode 100644 index 00000000..c1de13f7 --- /dev/null +++ b/script/c100000659.lua @@ -0,0 +1,36 @@ + --錫の魔法陣 +function c100000659.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000659.condition) + e1:SetTarget(c100000659.target) + e1:SetOperation(c100000659.activate) + c:RegisterEffect(e1) +end +function c100000659.spfilter(c,e,tp) + return c:IsCode(100000653) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000659.cfilter(c) + return c:IsFaceup() and c:IsCode(100000650) +end +function c100000659.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000659.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c100000659.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) +end +function c100000659.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c100000659.activate(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,c100000659.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c100000660.lua b/script/c100000660.lua new file mode 100644 index 00000000..85e05c92 --- /dev/null +++ b/script/c100000660.lua @@ -0,0 +1,36 @@ + --鉛のコンパス +function c100000660.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000660.condition) + e1:SetTarget(c100000660.target) + e1:SetOperation(c100000660.activate) + c:RegisterEffect(e1) +end +function c100000660.spfilter(c,e,tp) + return c:IsCode(100000654) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000660.cfilter(c) + return c:IsFaceup() and c:IsCode(100000650) +end +function c100000660.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000660.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c100000660.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) +end +function c100000660.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c100000660.activate(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,c100000660.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c100000661.lua b/script/c100000661.lua new file mode 100644 index 00000000..42bc9095 --- /dev/null +++ b/script/c100000661.lua @@ -0,0 +1,36 @@ + --銀の鍵 +function c100000661.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000661.condition) + e1:SetTarget(c100000661.target) + e1:SetOperation(c100000661.activate) + c:RegisterEffect(e1) +end +function c100000661.spfilter(c,e,tp) + return c:IsCode(100000655) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000661.cfilter(c) + return c:IsFaceup() and c:IsCode(100000650) +end +function c100000661.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000661.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c100000661.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) +end +function c100000661.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c100000661.activate(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,c100000661.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c100000662.lua b/script/c100000662.lua new file mode 100644 index 00000000..67819366 --- /dev/null +++ b/script/c100000662.lua @@ -0,0 +1,36 @@ + --水銀の砂時計 +function c100000662.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000662.condition) + e1:SetTarget(c100000662.target) + e1:SetOperation(c100000662.activate) + c:RegisterEffect(e1) +end +function c100000662.spfilter(c,e,tp) + return c:IsCode(100000656) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000662.cfilter(c) + return c:IsFaceup() and c:IsCode(100000650) +end +function c100000662.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000662.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c100000662.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) +end +function c100000662.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c100000662.activate(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,c100000662.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c100000663.lua b/script/c100000663.lua new file mode 100644 index 00000000..ce8fd14e --- /dev/null +++ b/script/c100000663.lua @@ -0,0 +1,36 @@ + --白の過程-アルベド +function c100000663.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000663.condition) + e1:SetTarget(c100000663.target) + e1:SetOperation(c100000663.activate) + c:RegisterEffect(e1) +end +function c100000663.spfilter(c,e,tp) + return c:IsCode(27408609) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000663.cfilter(c) + return c:IsFaceup() and c:IsCode(100000650) +end +function c100000663.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100000663.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c100000663.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) +end +function c100000663.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c100000663.activate(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,c100000663.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c100000664.lua b/script/c100000664.lua new file mode 100644 index 00000000..90998bfd --- /dev/null +++ b/script/c100000664.lua @@ -0,0 +1,46 @@ + --黒の過程-ニグレド +function c100000664.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100000664.condition) + e1:SetTarget(c100000664.target) + e1:SetOperation(c100000664.activate) + c:RegisterEffect(e1) +end +function c100000664.filter(c) + return c:IsFaceup() and c:IsSetCard(0x317) and c:IsAbleToRemove() +end +function c100000664.cfilter(c) + return c:IsFaceup() and c:IsCode(100000650) +end +function c100000664.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c==nil then return true end + return Duel.IsExistingMatchingCard(c100000664.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c100000664.filter,tp,LOCATION_MZONE,0,1,nil) + and (Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)==1 and not Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,c)) + or Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)==0 +end +function c100000664.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + local g=Duel.GetMatchingGroup(c100000664.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,g:GetCount()) +end +function c100000664.filter1(c) + return c:IsFaceup() and c:IsSetCard(0x317) and c:IsLocation(LOCATION_REMOVED) +end +function c100000664.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetMatchingGroup(c100000664.filter,tp,LOCATION_MZONE,0,nil) + if Duel.Remove(g,POS_FACEUP,REASON_EFFECT)>0 then + local og=Duel.GetOperatedGroup() + local dc=og:FilterCount(c100000664.filter1,nil) + if dc>0 then + Duel.Draw(p,dc*2,REASON_EFFECT) + end + end +end diff --git a/script/c100000700.lua b/script/c100000700.lua new file mode 100644 index 00000000..0be725d1 --- /dev/null +++ b/script/c100000700.lua @@ -0,0 +1,80 @@ +--ダークネス・シード +function c100000700.initial_effect(c) + --trigger + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c100000700.regcon) + e1:SetOperation(c100000700.regop) + c:RegisterEffect(e1) + --lp4000 + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c100000700.con) + e2:SetTarget(c100000700.lptg) + e2:SetOperation(c100000700.lpop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetCondition(c100000700.con) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c100000700.regcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsReason(REASON_RETURN) +end +function c100000700.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCondition(c100000700.spcon) + e1:SetOperation(c100000700.spop) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY then + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,3) + e1:SetLabel(-1) + else + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e1:SetLabel(0) + end + c:RegisterEffect(e1) + c:CreateEffectRelation(e1) + end +end +function c100000700.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100000700.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=e:GetLabel() + if ct<1 then + ct=ct+1 + e:SetLabel(ct) + return + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + c:RegisterFlagEffect(100000700,RESET_EVENT+0x1ff0000,0,0) + end +end +function c100000700.con(e) + return e:GetHandler():GetFlagEffect(100000700)>0 +end +function c100000700.lptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLP(tp)<4000 end + Duel.SetTargetPlayer(tp) +end +function c100000700.lpop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.SetLP(p,4000) +end diff --git a/script/c100000701.lua b/script/c100000701.lua new file mode 100644 index 00000000..bdbe826b --- /dev/null +++ b/script/c100000701.lua @@ -0,0 +1,43 @@ +--ダークネス・ブランブル +function c100000701.initial_effect(c) + --lp4000 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c100000701.condition) + e1:SetOperation(c100000701.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetOperation(c100000701.op) + c:RegisterEffect(e3) +end +function c100000701.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<4000 +end +function c100000701.operation(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + Duel.SetLP(tp,4000,REASON_EFFECT) +end +function c100000701.op(e,tp,eg,ep,ev,re,r,rp) + --Def + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(100000703) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_ONFIELD,0) + e3:SetReset(RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e3) +end diff --git a/script/c100000702.lua b/script/c100000702.lua new file mode 100644 index 00000000..bbd7a186 --- /dev/null +++ b/script/c100000702.lua @@ -0,0 +1,43 @@ +--ダークネス・レインクロー +function c100000702.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPSUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100000702.condition) + e1:SetCost(c100000702.cost) + e1:SetTarget(c100000702.target) + e1:SetOperation(c100000702.activate) + c:RegisterEffect(e1) +end +function c100000702.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c100000702.cosfilter(c,e,tp) + return c:IsCode(100000701) and c:IsAbleToGraveAsCost() +end +function c100000702.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c100000702.cosfilter,tp,LOCATION_ONFIELD,0,1,nil) end + local tc=Duel.SelectMatchingCard(tp,c100000702.cosfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + tc:AddCard(e:GetHandler()) + Duel.SendtoGrave(tc,REASON_COST) +end +function c100000702.filter(c,e,tp) + return c:IsCode(60417395) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100000702.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100000702.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000702.activate(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,c100000702.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100000703.lua b/script/c100000703.lua new file mode 100644 index 00000000..fec04fbf --- /dev/null +++ b/script/c100000703.lua @@ -0,0 +1,32 @@ +--ダークネス・アイ +function c100000703.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetOperation(c100000703.operation) + c:RegisterEffect(e1) + --reduce tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DECREASE_TRIBUTE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_HAND,0) + e2:SetCondition(c100000703.condition) + e2:SetValue(0x20002) + c:RegisterEffect(e2) +end +function c100000703.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c100000703.operation(e,tp,eg,ep,ev,re,r,rp) + --Def + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(100000703) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_ONFIELD,0) + e3:SetReset(RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e3) +end \ No newline at end of file diff --git a/script/c100000704.lua b/script/c100000704.lua new file mode 100644 index 00000000..f052892f --- /dev/null +++ b/script/c100000704.lua @@ -0,0 +1,36 @@ +--ダークネス・アウトサイダー +function c100000704.initial_effect(c) + --dishand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c100000704.spcost) + e2:SetTarget(c100000704.target) + e2:SetOperation(c100000704.operation) + c:RegisterEffect(e2) +end +function c100000704.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD,nil) +end +function c100000704.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_DECK)>0 and Duel.IsPlayerCanSpecialSummon(tp) + and e:GetHandler():IsAbleToDeck() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100000704.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000704.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c100000704.filter,tp,0,LOCATION_DECK,nil,e,tp) + Duel.ConfirmCards(tp,g) + if g:GetCount()<=0 or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or not c:IsRelateToEffect(e) or not c:IsAbleToDeck() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=g:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + Duel.BreakEffect() + Duel.SendtoDeck(c,1-tp,2,REASON_EFFECT) +end + diff --git a/script/c100000705.lua b/script/c100000705.lua new file mode 100644 index 00000000..b82b5cef --- /dev/null +++ b/script/c100000705.lua @@ -0,0 +1,60 @@ +--ダークネス・スライム +function c100000705.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_SPSUM_PARAM+EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetTargetRange(POS_FACEUP_DEFENSE,0) + e1:SetCondition(c100000705.spcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000705,0)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c100000705.atkcon) + e2:SetTarget(c100000705.atktg) + e2:SetOperation(c100000705.atkop) + c:RegisterEffect(e2) +end +function c100000705.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + return g:GetCount()>0 and g:GetSum(Card.GetAttack)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c100000705.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c100000705.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c100000705.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) then return end + local atk=tc:GetAttack() + local def=tc:GetDefense() + if (atk>0 or def>0) and c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end +end diff --git a/script/c100000706.lua b/script/c100000706.lua new file mode 100644 index 00000000..2d19363d --- /dev/null +++ b/script/c100000706.lua @@ -0,0 +1,41 @@ +--ダークネス・ネクロスライム +function c100000706.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000706,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c100000706.cost) + e1:SetTarget(c100000706.target) + e1:SetOperation(c100000706.operation) + c:RegisterEffect(e1) +end +function c100000706.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +c100000706.collection={ + [79182538]=true;[42071342]=true;[60417395]=true;[88264978]=true;[96561011]=true; + [56647086]=true;[33655493]=true;[47297616]=true;[44330098]=true;[93709215]=true; + [77121851]=true;[63120904]=true;[19153634]=true;[28933734]=true; +} +function c100000706.filter(c,e,tp) + return (c:IsSetCard(0x316) or c100000706.collection[c:GetCode()]) and c:GetCode()~=100000706 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100000706.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100000706.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c100000706.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100000706.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100000706.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c10000080.lua b/script/c10000080.lua index 0f0767ca..6eab5a3c 100644 --- a/script/c10000080.lua +++ b/script/c10000080.lua @@ -1,150 +1,150 @@ ---ラーの翼神竜-球体形 -function c10000080.initial_effect(c) - --summon with 3 tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(10000080,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) - e1:SetCondition(c10000080.ttcon1) - e1:SetOperation(c10000080.ttop1) - e1:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(10000080,1)) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_LIMIT_SUMMON_PROC) - e2:SetTargetRange(POS_FACEUP_ATTACK,1) - e2:SetCondition(c10000080.ttcon2) - e2:SetOperation(c10000080.ttop2) - e2:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LIMIT_SET_PROC) - e3:SetCondition(c10000080.setcon) - c:RegisterEffect(e3) - --cannot special summon - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_SPSUMMON_CONDITION) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e4) - --control return - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e5:SetCode(EVENT_SUMMON_SUCCESS) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e5:SetOperation(c10000080.retreg) - c:RegisterEffect(e5) - --attack limit - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_CANNOT_ATTACK) - c:RegisterEffect(e6) - --cannot be target - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e7:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) - e7:SetRange(LOCATION_MZONE) - e7:SetValue(aux.imval1) - c:RegisterEffect(e7) - local e8=e7:Clone() - e8:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e8:SetValue(aux.tgoval) - c:RegisterEffect(e8) - --spsummon - local e9=Effect.CreateEffect(c) - e9:SetDescription(aux.Stringid(10000080,2)) - e9:SetCategory(CATEGORY_SPECIAL_SUMMON) - e9:SetType(EFFECT_TYPE_IGNITION) - e9:SetRange(LOCATION_MZONE) - e9:SetCost(c10000080.spcost) - e9:SetTarget(c10000080.sptg) - e9:SetOperation(c10000080.spop) - c:RegisterEffect(e9) -end -function c10000080.ttcon1(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 -end -function c10000080.ttop1(e,tp,eg,ep,ev,re,r,rp,c) - local g=Duel.SelectTribute(tp,c,3,3) - c:SetMaterial(g) - Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) -end -function c10000080.ttcon2(e,c) - if c==nil then return true end - local tp=c:GetControler() - local mg=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) - return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>-3 and Duel.GetTributeCount(c,mg,true)>=3 -end -function c10000080.ttop2(e,tp,eg,ep,ev,re,r,rp,c) - local mg=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) - local g=Duel.SelectTribute(tp,c,3,3,mg,true) - c:SetMaterial(g) - Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) -end -function c10000080.setcon(e,c) - if not c then return true end - return false -end -function c10000080.retreg(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - c:RegisterFlagEffect(10000080,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,2) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetLabel(Duel.GetTurnCount()+1) - e1:SetCountLimit(1) - e1:SetCondition(c10000080.retcon) - e1:SetOperation(c10000080.retop) - e1:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e1,tp) -end -function c10000080.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnCount()==e:GetLabel() and e:GetOwner():GetFlagEffect(10000080)~=0 -end -function c10000080.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetOwner() - c:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_CONTROL) - e1:SetValue(c:GetOwner()) - e1:SetReset(RESET_EVENT+0xec0000) - c:RegisterEffect(e1) -end -function c10000080.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c10000080.filter(c,e,tp) - return c:IsCode(10000010) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c10000080.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c10000080.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c10000080.spop(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,c10000080.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(4000) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - end -end +--ラーの翼神竜-球体形 +function c10000080.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10000080,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c10000080.ttcon1) + e1:SetOperation(c10000080.ttop1) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(10000080,1)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e2:SetTargetRange(POS_FACEUP_ATTACK,1) + e2:SetCondition(c10000080.ttcon2) + e2:SetOperation(c10000080.ttop2) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LIMIT_SET_PROC) + e3:SetCondition(c10000080.setcon) + c:RegisterEffect(e3) + --cannot special summon + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SPSUMMON_CONDITION) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e4) + --control return + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_SUMMON_SUCCESS) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e5:SetOperation(c10000080.retreg) + c:RegisterEffect(e5) + --attack limit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e6) + --cannot be target + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e7:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e7:SetRange(LOCATION_MZONE) + e7:SetValue(aux.imval1) + c:RegisterEffect(e7) + local e8=e7:Clone() + e8:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e8:SetValue(aux.tgoval) + c:RegisterEffect(e8) + --spsummon + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(10000080,2)) + e9:SetCategory(CATEGORY_SPECIAL_SUMMON) + e9:SetType(EFFECT_TYPE_IGNITION) + e9:SetRange(LOCATION_MZONE) + e9:SetCost(c10000080.spcost) + e9:SetTarget(c10000080.sptg) + e9:SetOperation(c10000080.spop) + c:RegisterEffect(e9) +end +function c10000080.ttcon1(e,c,minc) + if c==nil then return true end + return minc<=3 and Duel.CheckTribute(c,3) +end +function c10000080.ttop1(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c10000080.ttcon2(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) + return minc<=3 and Duel.CheckTribute(c,3,3,mg,1-tp) +end +function c10000080.ttop2(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) + local g=Duel.SelectTribute(tp,c,3,3,mg,true) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c10000080.setcon(e,c,minc) + if not c then return true end + return false +end +function c10000080.retreg(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(10000080,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,2) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(Duel.GetTurnCount()+1) + e1:SetCountLimit(1) + e1:SetCondition(c10000080.retcon) + e1:SetOperation(c10000080.retop) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) +end +function c10000080.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==e:GetLabel() and e:GetOwner():GetFlagEffect(10000080)~=0 +end +function c10000080.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetOwner() + c:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetValue(c:GetOwner()) + e1:SetReset(RESET_EVENT+0xec0000) + c:RegisterEffect(e1) +end +function c10000080.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c10000080.filter(c,e,tp) + return c:IsCode(10000010) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c10000080.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c10000080.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c10000080.spop(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,c10000080.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(4000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100001001.lua b/script/c100001001.lua new file mode 100644 index 00000000..93d83897 --- /dev/null +++ b/script/c100001001.lua @@ -0,0 +1,27 @@ +--牛頭鬼(未) +function c100001001.initial_effect(c) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100001001,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c100001001.target) + e1:SetOperation(c100001001.operation) + c:RegisterEffect(e1) +end +function c100001001.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsRace(0x10000000) and c:IsAbleToGrave() +end +function c100001001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100001001.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c100001001.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100001001.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c100001002.lua b/script/c100001002.lua new file mode 100644 index 00000000..afae38ee --- /dev/null +++ b/script/c100001002.lua @@ -0,0 +1,29 @@ +--カラス天狗 +function c100001002.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100001002,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c100001002.condition) + e1:SetTarget(c100001002.target) + e1:SetOperation(c100001002.operation) + c:RegisterEffect(e1) +end +function c100001002.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_GRAVE and e:GetHandler():GetPreviousControler()==tp +end +function c100001002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100001002.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c100001003.lua b/script/c100001003.lua new file mode 100644 index 00000000..7b663a95 --- /dev/null +++ b/script/c100001003.lua @@ -0,0 +1,27 @@ +--陰摩羅鬼 +function c100001003.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100001003,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c100001003.condition) + e1:SetTarget(c100001003.target) + e1:SetOperation(c100001003.operation) + c:RegisterEffect(e1) +end +function c100001003.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_GRAVE +end +function c100001003.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100001003.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100001004.lua b/script/c100001004.lua new file mode 100644 index 00000000..e21c9873 --- /dev/null +++ b/script/c100001004.lua @@ -0,0 +1,53 @@ +--百鬼夜行 +function c100001004.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100001004.tg) + e1:SetOperation(c100001004.op) + c:RegisterEffect(e1) +end +function c100001004.filter(c,e,tp) + return c:IsRace(0x10000000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100001004.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100001004.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c100001004.op(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100001004.filter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(100001004,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + g:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabelObject(g) + e1:SetOperation(c100001004.rmop) + Duel.RegisterEffect(e1,tp) + end +end +function c100001004.rmfilter(c) + return c:GetFlagEffect(100001004)>0 +end +function c100001004.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c100001004.rmfilter,nil) + g:DeleteGroup() + Duel.Destroy(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c100001005.lua b/script/c100001005.lua new file mode 100644 index 00000000..a54790f9 --- /dev/null +++ b/script/c100001005.lua @@ -0,0 +1,32 @@ +--尾長黒馬 +function c100001005.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100001005,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c100001005.cost) + e1:SetOperation(c100001005.operation) + c:RegisterEffect(e1) +end +function c100001005.cfilter(c) + return c:IsRace(0x10000000) and c:IsAbleToGraveAsCost() +end +function c100001005.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100001005.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100001005.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100001005.operation(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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c100001006.lua b/script/c100001006.lua new file mode 100644 index 00000000..a5404260 --- /dev/null +++ b/script/c100001006.lua @@ -0,0 +1,55 @@ +--九尾の狐 +function c100001006.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c100001006.spcon) + e1:SetOperation(c100001006.spop) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + e2:SetCondition(c100001006.pcon) + c:RegisterEffect(e2) + --token + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c100001006.target) + e3:SetOperation(c100001006.operation) + c:RegisterEffect(e3) +end +function c100001006.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-2 + and Duel.CheckReleaseGroup(c:GetControler(),Card.IsRace,2,nil,0x10000000) +end +function c100001006.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,Card.IsRace,2,2,nil,0x10000000) + Duel.Release(g,REASON_COST) +end +function c100001006.pcon(e) + return e:GetHandler():GetPreviousLocation()==LOCATION_GRAVE +end +function c100001006.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c100001006.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<2 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,100001007,0,0x4011,500,500,2,RACE_BEAST,ATTRIBUTE_EARTH) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,100001007) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c100001008.lua b/script/c100001008.lua new file mode 100644 index 00000000..fba34494 --- /dev/null +++ b/script/c100001008.lua @@ -0,0 +1,57 @@ +--プラズマ戦士エイトム +function c100001008.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c100001008.spcon) + e2:SetOperation(c100001008.spop) + c:RegisterEffect(e2) + + --damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e4:SetCondition(c100001008.atkcon) + e4:SetOperation(c100001008.atkop) + c:RegisterEffect(e4) + +end +function c100001008.rfilter(c) + return c:IsLevelAbove(7) +end +function c100001008.spcon(e,c) + if c==nil then return true end + return Duel.CheckReleaseGroup(c:GetControler(),c100001008.rfilter,1,nil) +end +function c100001008.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),c100001008.rfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end + +function c100001008.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 + and e:GetHandler():GetEffectCount(EFFECT_DIRECT_ATTACK)==1 + and ep~=tp +end +function c100001008.atkop(e,tp,eg,ep,ev,re,r,rp) + --half damage + local c=e:GetHandler() + Duel.ChangeBattleDamage(ep,Duel.GetBattleDamage(ep)/2) +end \ No newline at end of file diff --git a/script/c100001009.lua b/script/c100001009.lua new file mode 100644 index 00000000..a65d7238 --- /dev/null +++ b/script/c100001009.lua @@ -0,0 +1,4 @@ +--リトマスの死儀式 +function c100001009.initial_effect(c) + aux.AddRitualProcGreaterCode(c,100001010) +end diff --git a/script/c100001010.lua b/script/c100001010.lua new file mode 100644 index 00000000..78cddf5e --- /dev/null +++ b/script/c100001010.lua @@ -0,0 +1,41 @@ +--リトマスの死の剣士 +function c100001010.initial_effect(c) + c:EnableReviveLimit() + + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c100001010.efilter) + c:RegisterEffect(e1) + + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + + --atk,def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_BASE_ATTACK) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c100001010.atkcon) + e3:SetValue(3000) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_BASE_DEFENSE) + c:RegisterEffect(e4) +end +function c100001010.efilter(e,te) + return te:IsActiveType(TYPE_TRAP) +end +function c100001010.filter(c) + return c:IsFaceup() and c:IsType(TYPE_TRAP) +end +function c100001010.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100001010.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end diff --git a/script/c100002001.lua b/script/c100002001.lua new file mode 100644 index 00000000..c9700925 --- /dev/null +++ b/script/c100002001.lua @@ -0,0 +1,22 @@ +--劫火の槍術士 ゴースト・ランサー +function c100002001.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100002001.spcon) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) +end +function c100002001.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c100002002.lua b/script/c100002002.lua new file mode 100644 index 00000000..f07b044a --- /dev/null +++ b/script/c100002002.lua @@ -0,0 +1,69 @@ +--幽合 +function c100002002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100002002.target) + e1:SetOperation(c100002002.activate) + c:RegisterEffect(e1) +end +function c100002002.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and c:IsRace(RACE_ZOMBIE) and (not e or not c:IsImmuneToEffect(e)) +end +function c100002002.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c100002002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100002002.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_DECK,0,nil) + local res=Duel.IsExistingMatchingCard(c100002002.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c100002002.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100002002.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100002002.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_DECK,0,nil,e) + local sg1=Duel.GetMatchingGroup(c100002002.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c100002002.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c100003001.lua b/script/c100003001.lua new file mode 100644 index 00000000..d3a31520 --- /dev/null +++ b/script/c100003001.lua @@ -0,0 +1,7 @@ +--機械天使の儀式 +function c100003001.initial_effect(c) + aux.AddRitualProcEqual(c,c100003001.ritual_filter) +end +function c100003001.ritual_filter(c) + return c:IsSetCard(0x2093) and bit.band(c:GetType(),0x81)==0x81 +end diff --git a/script/c100003002.lua b/script/c100003002.lua new file mode 100644 index 00000000..019214b5 --- /dev/null +++ b/script/c100003002.lua @@ -0,0 +1,35 @@ +--サイバー・エンジェル-弁天- +function c100003002.initial_effect(c) + c:EnableReviveLimit() + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100003002,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c100003002.damcon) + e2:SetTarget(c100003002.damtg) + e2:SetOperation(c100003002.damop) + c:RegisterEffect(e2) +end + +function c100003002.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c100003002.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local bc=c:GetBattleTarget() + local dam=bc:GetDefense() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100003002.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100003003.lua b/script/c100003003.lua new file mode 100644 index 00000000..5e29dc49 --- /dev/null +++ b/script/c100003003.lua @@ -0,0 +1,31 @@ +--サイバー・エンジェル-茶吉尼- +function c100003003.initial_effect(c) + c:EnableReviveLimit() + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c100003003.target) + e1:SetOperation(c100003003.activate) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) +end +function c100003003.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(1-tp,Card.IsDestructable,1-tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100003003.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100003004.lua b/script/c100003004.lua new file mode 100644 index 00000000..157d52a8 --- /dev/null +++ b/script/c100003004.lua @@ -0,0 +1,31 @@ +--サイバー・エンジェル-韋駄天- +function c100003004.initial_effect(c) + c:EnableReviveLimit() + --salvage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100003004,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c100003004.target) + e1:SetOperation(c100003004.operation) + c:RegisterEffect(e1) +end +function c100003004.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c100003004.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100003004.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c100003004.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c100003004.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c100004001.lua b/script/c100004001.lua new file mode 100644 index 00000000..d5fa2e16 --- /dev/null +++ b/script/c100004001.lua @@ -0,0 +1,71 @@ +--マスクドナイト LV3 +function c100004001.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100004001,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCondition(c100004001.spcon) + e1:SetCost(c100004001.spcost) + e1:SetTarget(c100004001.sptg) + e1:SetOperation(c100004001.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100004001,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c100004001.cost) + e2:SetTarget(c100004001.target) + e2:SetOperation(c100004001.operation) + c:RegisterEffect(e2) +end +c100004001.lvupcount=1 +c100004001.lvup={100004002} +function c100004001.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c100004001.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c100004001.spfilter(c,e,tp) + return c:IsCode(100004002) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100004001.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100004001.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c100004001.spop(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 tc=Duel.SelectMatchingCard(tp,c100004001.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c100004001.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c100004001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c100004001.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100004002.lua b/script/c100004002.lua new file mode 100644 index 00000000..f1c39dfe --- /dev/null +++ b/script/c100004002.lua @@ -0,0 +1,91 @@ +--マスクドナイト LV5 +function c100004002.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100004002,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCondition(c100004002.spcon) + e1:SetCost(c100004002.spcost) + e1:SetTarget(c100004002.sptg) + e1:SetOperation(c100004002.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100004002,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c100004002.cost) + e2:SetTarget(c100004002.target) + e2:SetOperation(c100004002.operation) + c:RegisterEffect(e2) + if not c100004002.global_check then + c100004002.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(100004002) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(100004002) + Duel.RegisterEffect(ge2,0) + local ge3=ge1:Clone() + ge3:SetCode(EVENT_FLIP) + ge3:SetLabel(100004002) + Duel.RegisterEffect(ge3,0) + end +end +c100004002.lvupcount=1 +c100004002.lvup={100004003} +c100004002.lvdncount=1 +c100004002.lvdn={100004001} +function c100004002.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(100004002)==0 +end +function c100004002.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c100004002.spfilter(c,e,tp) + return c:IsCode(100004003) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100004002.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100004002.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c100004002.spop(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 tc=Duel.SelectMatchingCard(tp,c100004002.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end +function c100004002.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c100004002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c100004002.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100004003.lua b/script/c100004003.lua new file mode 100644 index 00000000..08c3d0ce --- /dev/null +++ b/script/c100004003.lua @@ -0,0 +1,29 @@ +--マスクドナイト LV7 +function c100004003.initial_effect(c) + c:EnableReviveLimit() + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100004003,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c100004003.target) + e2:SetOperation(c100004003.operation) + c:RegisterEffect(e2) +end +c100004003.lvupcount=1 +c100004003.lvup={100004002} +c100004003.lvdncount=2 +c100004003.lvdn={100004002,100004001} +function c100004003.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1500) +end +function c100004003.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100005001.lua b/script/c100005001.lua new file mode 100644 index 00000000..c8131872 --- /dev/null +++ b/script/c100005001.lua @@ -0,0 +1,70 @@ +--テイク・オーバー5 +function c100005001.initial_effect(c) + --discard deck + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c100005001.distarget) + e1:SetOperation(c100005001.disop) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c100005001.drcon) + e2:SetCost(c100005001.drcost) + e2:SetTarget(c100005001.drtg) + e2:SetOperation(c100005001.drop) + c:RegisterEffect(e2) + --Negate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetRange(LOCATION_GRAVE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCondition(c100005001.negcon) + e3:SetOperation(c100005001.negop) + c:RegisterEffect(e3) +end +function c100005001.distarget(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,5) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(5) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,5) +end +function c100005001.disop(e,tp,eg,ep,ev,re,r,rp) + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardDeck(p,val,REASON_EFFECT) +end +function c100005001.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100005001.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100005001.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100005001.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c100005001.negcon(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainDisablable(ev) then return false end + local ex,tg,tc,p,cv=Duel.GetOperationInfo(ev,CATEGORY_DECKDES) + if re:IsHasCategory(CATEGORY_DECKDES) and (not ex or p~=1-tp) then return true end + ex,tg,tc,p,cv=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE) + return (cv==LOCATION_DECK and (not ex or p~=1-tp)) or (tg and tg:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) and (not ex or p~=1-tp)) +end +function c100005001.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c100005002.lua b/script/c100005002.lua new file mode 100644 index 00000000..0ec3bc73 --- /dev/null +++ b/script/c100005002.lua @@ -0,0 +1,42 @@ +--決闘融合-バトル・フュージョン +function c100005002.initial_effect(c) + + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetDescription(aux.Stringid(100005002,1)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100005002.condition) + e1:SetOperation(c100005002.operation) + c:RegisterEffect(e1) +end + +function c100005002.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (d~=nil and a:GetControler()==tp and a:IsType(TYPE_FUSION) and a:IsRelateToBattle()) + or (d~=nil and d:GetControler()==tp and d:IsFaceup() and d:IsType(TYPE_FUSION) and d:IsRelateToBattle()) +end + +function c100005002.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a:IsRelateToBattle() or not d:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetOwnerPlayer(tp) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + if a:GetControler()==tp then + e1:SetValue(d:GetAttack()) + a:RegisterEffect(e1) + else + e1:SetValue(a:GetAttack()) + d:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100006001.lua b/script/c100006001.lua new file mode 100644 index 00000000..77d989c3 --- /dev/null +++ b/script/c100006001.lua @@ -0,0 +1,37 @@ +--D-マインド +function c100006001.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100006001.condition) + e1:SetTarget(c100006001.target) + e1:SetOperation(c100006001.activate) + c:RegisterEffect(e1) +end + +function c100006001.dfilter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0xc008) +end + +function c100006001.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100006001.dfilter,tp,LOCATION_MZONE,0,1,nil) +end + +function c100006001.filter(c,e,tp) + return c:IsSetCard(0xc008) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100006001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100006001.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100006001.activate(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,c100006001.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100008001.lua b/script/c100008001.lua new file mode 100644 index 00000000..2f78d5dd --- /dev/null +++ b/script/c100008001.lua @@ -0,0 +1,28 @@ +--輪廻独断 +function c100008001.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100008001.target) + c:RegisterEffect(e1) + --race + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_GRAVE,LOCATION_GRAVE) + e2:SetCode(EFFECT_CHANGE_RACE) + e2:SetValue(c100008001.value) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c100008001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,563) + local rc=Duel.AnnounceRace(tp,1,0xffffff) + e:GetLabelObject():SetLabel(rc) + e:GetHandler():SetHint(CHINT_RACE,rc) +end +function c100008001.value(e,c) + return e:GetLabel() +end diff --git a/script/c100010001.lua b/script/c100010001.lua new file mode 100644 index 00000000..600f9566 --- /dev/null +++ b/script/c100010001.lua @@ -0,0 +1,97 @@ +--NO13 エーテリック・アメン +function c100010001.initial_effect(c) + --spsummon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c100010001.splimit) + c:RegisterEffect(e1) + --indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + --attack up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetValue(c100010001.atkval) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + e5:SetTarget(c100010001.destg) + e5:SetOperation(c100010001.desop) + c:RegisterEffect(e5) + --draw + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetCode(EVENT_SPSUMMON_SUCCESS) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c100010001.con) + e6:SetTarget(c100010001.tg) + e6:SetOperation(c100010001.op) + c:RegisterEffect(e6) +end +function c100010001.splimit(e,se,sp,st) + return se:GetHandler():IsSetCard(0x95) +end +function c100010001.atkval(e,c) + return e:GetHandler():GetOverlayCount()*100 +end +function c100010001.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c100010001.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c100010001.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100010001.filter,tp,0,LOCATION_ONFIELD,1,nil) + and Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c100010001.filter,tp,0,LOCATION_ONFIELD,1,1,nil) +end +function c100010001.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local dr=e:GetHandler():GetRank()-tc:GetRank() + if Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0)<=dr then + dr=Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0) + end + Duel.Overlay(e:GetHandler(),Duel.GetDecktopGroup(1-tp,dr)) + end +end +function c100010001.gfilter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsControler(tp) +end +function c100010001.con(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c100010001.gfilter,1,nil,1-tp) +end +function c100010001.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c100010001.gfilter,1,nil,1-tp) end + Duel.SetTargetCard(eg) +end +function c100010001.filter2(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsControler(tp) and c:IsRelateToEffect(e) +end +function c100010001.op(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c100010001.filter2,nil,e,1-tp) + local tc=g:GetFirst() + if not tc then return end + local dr=e:GetHandler():GetRank()-tc:GetRank() + if Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0)<=dr then + dr=Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0) + end + Duel.Overlay(e:GetHandler(),Duel.GetDecktopGroup(1-tp,dr)) +end \ No newline at end of file diff --git a/script/c10004783.lua b/script/c10004783.lua index 73725385..431464bc 100644 --- a/script/c10004783.lua +++ b/script/c10004783.lua @@ -1,27 +1,12 @@ --宝玉の解放 function c10004783.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(c10004783.target) - e1:SetOperation(c10004783.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c10004783.filter) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(800) 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(c10004783.eqlimit) - c:RegisterEffect(e3) --to field local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(10004783,0)) @@ -33,24 +18,8 @@ function c10004783.initial_effect(c) e4:SetOperation(c10004783.tfop) c:RegisterEffect(e4) end -function c10004783.eqlimit(e,c) - return c:IsSetCard(0x1034) -end function c10004783.filter(c) - return c:IsFaceup() and c:IsSetCard(0x1034) -end -function c10004783.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c10004783.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c10004783.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c10004783.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c10004783.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 + return c:IsSetCard(0x1034) end function c10004783.tfcon(e,tp,eg,ep,ev,re,r,rp) return bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)~=0 diff --git a/script/c100100001.lua b/script/c100100001.lua new file mode 100644 index 00000000..74e880ac --- /dev/null +++ b/script/c100100001.lua @@ -0,0 +1,39 @@ +--Sp-ワン·フォー·ワン +function c100100001.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100001.cost) + e1:SetTarget(c100100001.target) + e1:SetOperation(c100100001.activate) + c:RegisterEffect(e1) +end +function c100100001.costfilter(c) + return c:IsAbleToGraveAsCost() and c:IsType(TYPE_MONSTER) +end +function c100100001.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return Duel.IsExistingMatchingCard(c100100001.costfilter,tp,LOCATION_HAND,0,1,nil) + and tc and tc:IsCanRemoveCounter(tp,0x91,4,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,4,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100100001.costfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100100001.filter(c,e,tp) + return c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100001.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c100100001.activate(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,c100100001.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c100100002.lua b/script/c100100002.lua new file mode 100644 index 00000000..a4036a95 --- /dev/null +++ b/script/c100100002.lua @@ -0,0 +1,80 @@ +--Sp-遺言状 +function c100100002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100002.cost) + e1:SetOperation(c100100002.operation) + c:RegisterEffect(e1) +end +function c100100002.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,5,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,5,REASON_COST) +end +function c100100002.operation(e,tp,eg,ep,ev,re,r,rp) + --spsummon + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c100100002.check) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c100100002.spcon) + e2:SetOperation(c100100002.spop) + e2:SetLabelObject(e1) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c100100002.spcon2) + Duel.RegisterEffect(e3,tp) + local e4=e2:Clone() + e4:SetCode(EVENT_CHAIN_END) + Duel.RegisterEffect(e4,tp) + local e5=e2:Clone() + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + Duel.RegisterEffect(e5,tp) + local e6=e2:Clone() + e6:SetCode(EVENT_DAMAGE_STEP_END) + Duel.RegisterEffect(e6,tp) + local e7=e2:Clone() + e7:SetCode(EVENT_PHASE+PHASE_END) + Duel.RegisterEffect(e7,tp) +end +function c100100002.cfilter(c,tp) + return c:IsControler(tp) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c100100002.check(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==2 then return end + if eg:IsExists(c100100002.cfilter,1,nil,tp) then + e:SetLabel(1) + end +end +function c100100002.spfilter(c,e,tp) + return c:IsAttackBelow(1500) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100002.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()==1 +end +function c100100002.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()==1 and Duel.GetCurrentChain()==0 +end +function c100100002.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100002.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(100100002,0)) then + Duel.Hint(HINT_CARD,0,100100002) + Duel.Hint(HINT_OPSELECTED,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100100002.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + e:GetLabelObject():SetLabel(2) + else + e:GetLabelObject():SetLabel(0) + end +end \ No newline at end of file diff --git a/script/c100100003.lua b/script/c100100003.lua new file mode 100644 index 00000000..4b7bb7ed --- /dev/null +++ b/script/c100100003.lua @@ -0,0 +1,35 @@ +--Sp-闇の量産工場 +function c100100003.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100003.con) + e1:SetTarget(c100100003.target) + e1:SetOperation(c100100003.activate) + c:RegisterEffect(e1) +end +function c100100003.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100003.filter(c) + return c:IsType(TYPE_NORMAL) and c:IsAbleToHand() +end +function c100100003.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c100100003.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100003.filter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c100100003.filter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,2,0,0) +end +function c100100003.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c100100004.lua b/script/c100100004.lua new file mode 100644 index 00000000..86ab58db --- /dev/null +++ b/script/c100100004.lua @@ -0,0 +1,42 @@ +--Sp-闇の誘惑 +function c100100004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100004.cost) + e1:SetTarget(c100100004.target) + e1:SetOperation(c100100004.activate) + c:RegisterEffect(e1) +end +function c100100004.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100004.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100100004.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(p,Card.IsAttribute,p,LOCATION_HAND,0,1,1,nil,ATTRIBUTE_DARK) + local tg=g:GetFirst() + if tg then + if Duel.Remove(tg,POS_FACEUP,REASON_EFFECT)==0 then + Duel.ConfirmCards(1-p,tg) + Duel.ShuffleHand(p) + end + else + local sg=Duel.GetFieldGroup(p,LOCATION_HAND,0) + Duel.SendtoGrave(sg,REASON_EFFECT) + end +end diff --git a/script/c100100005.lua b/script/c100100005.lua new file mode 100644 index 00000000..5e98c506 --- /dev/null +++ b/script/c100100005.lua @@ -0,0 +1,46 @@ +--Sp-野性解放 +function c100100005.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100005.con) + e1:SetTarget(c100100005.target) + e1:SetOperation(c100100005.activate) + c:RegisterEffect(e1) +end +function c100100005.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100005.filter(c) + return c:IsFaceup() and c:IsRace(RACE_BEAST+RACE_BEASTWARRIOR) +end +function c100100005.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c100100005.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100100005.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c100100005.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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+PHASE_END) + e1:SetValue(tc:GetDefense()) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c100100005.desop) + tc:RegisterEffect(e2) + end +end +function c100100005.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c100100006.lua b/script/c100100006.lua new file mode 100644 index 00000000..455fb979 --- /dev/null +++ b/script/c100100006.lua @@ -0,0 +1,46 @@ +--Sp-突然変異 +function c100100006.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100006.cost) + e1:SetTarget(c100100006.target) + e1:SetOperation(c100100006.activate) + c:RegisterEffect(e1) +end +function c100100006.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c100100006.filter1(c,e,tp) + local lv=c:GetLevel() + return lv>0 and Duel.IsExistingMatchingCard(c100100006.filter2,tp,LOCATION_EXTRA,0,1,nil,lv,e,tp) +end +function c100100006.filter2(c,lv,e,tp) + return c:IsType(TYPE_FUSION) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100006.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return tc and tc:IsCanRemoveCounter(tp,0x91,8,REASON_COST) and Duel.CheckReleaseGroup(tp,c100100006.filter1,1,nil,e,tp) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,8,REASON_COST) + local rg=Duel.SelectReleaseGroup(tp,c100100006.filter1,1,1,nil,e,tp) + local lv=rg:GetFirst():GetLevel() + Duel.Release(rg,REASON_COST) + Duel.SetTargetParam(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100100006.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100100006.filter2,tp,LOCATION_EXTRA,0,1,1,nil,lv,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100100007.lua b/script/c100100007.lua new file mode 100644 index 00000000..34c5dbc5 --- /dev/null +++ b/script/c100100007.lua @@ -0,0 +1,74 @@ +--Sp-ミラクル·フュージョン +function c100100007.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100007.cost) + e1:SetTarget(c100100007.target) + e1:SetOperation(c100100007.activate) + c:RegisterEffect(e1) +end +function c100100007.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100007.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c100100007.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,nil,chkf) +end +function c100100007.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100100007.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c100100007.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100100007.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100100007.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100100007.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c100100007.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100100007.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c100100008.lua b/script/c100100008.lua new file mode 100644 index 00000000..4f187e4e --- /dev/null +++ b/script/c100100008.lua @@ -0,0 +1,115 @@ +--Sp-ミラクルシンクロフュージョン +function c100100008.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100008.cost) + e1:SetTarget(c100100008.target) + e1:SetOperation(c100100008.activate) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100100008,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c100100008.drcon) + e2:SetTarget(c100100008.drtg) + e2:SetOperation(c100100008.drop) + c:RegisterEffect(e2) +end +function c100100008.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100008.filter0(c) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end +function c100100008.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c100100008.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c.miracle_synchro_fusion and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and m:IsExists(c100100008.filter3,1,nil,c,m,chkf) +end +function c100100008.filter3(c,fusc,m,chkf) + return c:IsType(TYPE_SYNCHRO) and fusc:CheckFusionMaterial(m,c,chkf) +end +function c100100008.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100100008.filter0,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil) + local res=Duel.IsExistingMatchingCard(c100100008.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c100100008.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100100008.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100100008.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c100100008.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c100100008.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local gc=mg1:FilterSelect(tp,c100100008.filter3,1,1,nil,tc,mg1,chkf):GetFirst() + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,gc,chkf) + mat1:AddCard(gc) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local gc=mg2:FilterSelect(tp,c100100008.filter3,1,1,nil,tc,mg2,chkf):GetFirst() + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,gc,chkf) + mat2:AddCard(gc) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c100100008.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(r,0x41)==0x41 and rp~=tp and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEDOWN) +end +function c100100008.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100100008.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end + diff --git a/script/c100100009.lua b/script/c100100009.lua new file mode 100644 index 00000000..45ae9254 --- /dev/null +++ b/script/c100100009.lua @@ -0,0 +1,57 @@ +--Sp-迷える仔羊 +function c100100009.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100009.cost) + e1:SetTarget(c100100009.target) + e1:SetOperation(c100100009.activate) + c:RegisterEffect(e1) +end +function c100100009.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) and Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 + and Duel.GetActivityCount(tp,ACTIVITY_FLIPSUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetLabelObject(e) + e1:SetTarget(c100100009.sumlimit) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetTargetRange(1,0) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + Duel.RegisterEffect(e3,tp) +end +function c100100009.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject()~=se +end +function c100100009.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,60764582,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c100100009.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,60764582,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) then + for i=1,2 do + local token=Duel.CreateToken(tp,60764581+i) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100100010.lua b/script/c100100010.lua new file mode 100644 index 00000000..f4048778 --- /dev/null +++ b/script/c100100010.lua @@ -0,0 +1,47 @@ +--Sp-抹殺の使徒 +function c100100010.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100010.cost) + e1:SetTarget(c100100010.target) + e1:SetOperation(c100100010.activate) + c:RegisterEffect(e1) +end +function c100100010.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100010.filter(c) + return c:IsFacedown() and c:IsDestructable() and c:IsAbleToRemove() +end +function c100100010.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100100010.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100010.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100010.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c100100010.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFacedown() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT,LOCATION_REMOVED) + if tc:IsType(TYPE_FLIP) then + local code=tc:GetCode() + local g=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_DECK,LOCATION_DECK,nil,code) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + g=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + Duel.ConfirmCards(tp,g) + g=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleDeck(tp) + Duel.ShuffleDeck(1-tp) + end + end +end diff --git a/script/c100100011.lua b/script/c100100011.lua new file mode 100644 index 00000000..3823ca21 --- /dev/null +++ b/script/c100100011.lua @@ -0,0 +1,57 @@ +--Sp-星屑のきらめき +function c100100011.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100011.cost) + e1:SetTarget(c100100011.target) + e1:SetOperation(c100100011.activate) + c:RegisterEffect(e1) +end +function c100100011.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,5,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,5,REASON_COST) +end +function c100100011.spfilter(c,e,tp,rg) + if not c:IsType(TYPE_SYNCHRO) or not c:IsRace(RACE_DRAGON) or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) then return false end + if rg:IsContains(c) then + rg:RemoveCard(c) + result=rg:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),1,99) + rg:AddCard(c) + else + result=rg:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),1,99) + end + return result +end +function c100100011.rmfilter(c) + return c:GetLevel()>0 and c:IsAbleToRemove() +end +function c100100011.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + local rg=Duel.GetMatchingGroup(c100100011.rmfilter,tp,LOCATION_GRAVE,0,nil) + return Duel.IsExistingTarget(c100100011.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,rg) + end + local rg=Duel.GetMatchingGroup(c100100011.rmfilter,tp,LOCATION_GRAVE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100100011.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,rg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100100011.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then return end + local rg=Duel.GetMatchingGroup(c100100011.rmfilter,tp,LOCATION_GRAVE,0,nil) + rg:RemoveCard(tc) + if rg:CheckWithSumEqual(Card.GetLevel,tc:GetLevel(),1,99) then + local rm=rg:SelectWithSumEqual(tp,Card.GetLevel,tc:GetLevel(),1,99) + Duel.Remove(rm,POS_FACEUP,REASON_EFFECT) + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100100012.lua b/script/c100100012.lua new file mode 100644 index 00000000..c3ed0855 --- /dev/null +++ b/script/c100100012.lua @@ -0,0 +1,47 @@ +--Sp-撲滅の使徒 +function c100100012.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100012.cost) + e1:SetTarget(c100100012.target) + e1:SetOperation(c100100012.activate) + c:RegisterEffect(e1) +end +function c100100012.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100012.filter(c) + return c:IsFacedown() and c:IsDestructable() and c:IsAbleToRemove() +end +function c100100012.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_SZONE and c100100012.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100012.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100012.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c100100012.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFacedown() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT,LOCATION_REMOVED) + if tc:IsType(TYPE_TRAP) then + local code=tc:GetCode() + local g=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_DECK,LOCATION_DECK,nil,code) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + g=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + Duel.ConfirmCards(tp,g) + g=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleDeck(tp) + Duel.ShuffleDeck(1-tp) + end + end +end diff --git a/script/c100100013.lua b/script/c100100013.lua new file mode 100644 index 00000000..5de50e71 --- /dev/null +++ b/script/c100100013.lua @@ -0,0 +1,35 @@ +--Sp-振り出し +function c100100013.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100013.con) + e1:SetCost(c100100013.cost) + e1:SetTarget(c100100013.target) + e1:SetOperation(c100100013.activate) + c:RegisterEffect(e1) +end +function c100100013.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>2 +end +function c100100013.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 c100100013.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:IsAbleToDeck() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c100100013.activate(e) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,0,REASON_EFFECT) + end +end diff --git a/script/c100100014.lua b/script/c100100014.lua new file mode 100644 index 00000000..8489ab72 --- /dev/null +++ b/script/c100100014.lua @@ -0,0 +1,38 @@ +--Sp-ブラック·コア +function c100100014.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100014.con) + e1:SetCost(c100100014.cost) + e1:SetTarget(c100100014.target) + e1:SetOperation(c100100014.activate) + c:RegisterEffect(e1) +end +function c100100014.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100014.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 c100100014.filter(c) + return c:IsFaceup() and c:IsAbleToRemove() +end +function c100100014.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100100014.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100014.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c100100014.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c100100014.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c100100015.lua b/script/c100100015.lua new file mode 100644 index 00000000..86ada011 --- /dev/null +++ b/script/c100100015.lua @@ -0,0 +1,49 @@ +--Sp-孵化 +function c100100015.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetLabel(0) + e1:SetCondition(c100100015.con) + e1:SetCost(c100100015.cost) + e1:SetTarget(c100100015.target) + e1:SetOperation(c100100015.activate) + c:RegisterEffect(e1) +end +function c100100015.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100015.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(100) + return true +end +function c100100015.cfilter(c,e,tp) + local lv=c:GetLevel() + return lv>0 and Duel.IsExistingMatchingCard(c100100015.spfilter,tp,LOCATION_DECK,0,1,nil,lv+1,e,tp) +end +function c100100015.spfilter(c,lv,e,tp) + return c:GetLevel()==lv and c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100015.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=100 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c100100015.cfilter,1,nil,e,tp) + end + local rg=Duel.SelectReleaseGroup(tp,c100100015.cfilter,1,1,nil,e,tp) + e:SetLabel(rg:GetFirst():GetLevel()) + Duel.Release(rg,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100100015.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local lv=e:GetLabel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100100015.spfilter,tp,LOCATION_DECK,0,1,1,nil,lv+1,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100100016.lua b/script/c100100016.lua new file mode 100644 index 00000000..57a919d9 --- /dev/null +++ b/script/c100100016.lua @@ -0,0 +1,50 @@ +--Sp-フォース +function c100100016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100016.cost) + e1:SetTarget(c100100016.target) + e1:SetOperation(c100100016.activate) + c:RegisterEffect(e1) +end +function c100100016.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100016.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,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(100100016,0)) + local g1=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(100100016,1)) + local g2=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,g1:GetFirst()) +end +function c100100016.activate(e,tp,eg,ep,ev,re,r,rp) + local hc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if tc==hc then tc=g:GetNext() end + if hc:IsFaceup() and hc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=hc:GetBaseAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk/2) + if hc:RegisterEffect(e1) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(atk/2) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c100100017.lua b/script/c100100017.lua new file mode 100644 index 00000000..2615d0b4 --- /dev/null +++ b/script/c100100017.lua @@ -0,0 +1,51 @@ +--Sp-封印の黄金櫃 +function c100100017.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100017.cost) + e1:SetTarget(c100100017.target) + e1:SetOperation(c100100017.activate) + c:RegisterEffect(e1) +end +function c100100017.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100017.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) +end +function c100100017.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,1,nil) + local tg=g:GetFirst() + if tg==nil then return end + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) + if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_REMOVED) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e1:SetCondition(c100100017.thcon) + e1:SetOperation(c100100017.thop) + e1:SetLabel(0) + tg:RegisterEffect(e1) +end +function c100100017.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100100017.thop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + e:GetHandler():SetTurnCounter(ct+1) + if ct==1 then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,e:GetHandler()) + else e:SetLabel(1) end +end diff --git a/script/c100100018.lua b/script/c100100018.lua new file mode 100644 index 00000000..aae3dab4 --- /dev/null +++ b/script/c100100018.lua @@ -0,0 +1,35 @@ +--Sp-光の援軍 +function c100100018.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100018.cost) + e1:SetTarget(c100100018.target) + e1:SetOperation(c100100018.activate) + c:RegisterEffect(e1) +end +function c100100018.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,3) + and tc and tc:IsCanRemoveCounter(tp,0x91,4,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,4,REASON_COST) + Duel.DiscardDeck(tp,3,REASON_COST) +end +function c100100018.filter(c) + return c:IsSetCard(0x38) and c:IsLevelBelow(4) and c:IsAbleToHand() +end +function c100100018.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100018.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100100018.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100100018.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100100019.lua b/script/c100100019.lua new file mode 100644 index 00000000..dc67e404 --- /dev/null +++ b/script/c100100019.lua @@ -0,0 +1,39 @@ +--Sp-ハンマーシュート +function c100100019.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(c100100019.cost) + e1:SetTarget(c100100019.target) + e1:SetOperation(c100100019.activate) + c:RegisterEffect(e1) +end +function c100100019.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100019.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsDestructable() +end +function c100100019.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100019.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c100100019.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tg=g:GetMaxGroup(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c100100019.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100100019.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tg=g:GetMaxGroup(Card.GetAttack) + if tg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=tg:Select(tp,1,1,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + else Duel.Destroy(tg,REASON_EFFECT) end + end +end diff --git a/script/c100100020.lua b/script/c100100020.lua new file mode 100644 index 00000000..e9f4a118 --- /dev/null +++ b/script/c100100020.lua @@ -0,0 +1,31 @@ +--Sp-ハリケーン +function c100100020.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100020.cost) + e1:SetTarget(c100100020.target) + e1:SetOperation(c100100020.activate) + c:RegisterEffect(e1) +end +function c100100020.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,4,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,4,REASON_COST) +end +function c100100020.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c100100020.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c100100020.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + local sg=Duel.GetMatchingGroup(c100100020.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c100100020.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100100020.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end diff --git a/script/c100100021.lua b/script/c100100021.lua new file mode 100644 index 00000000..b84ad5dc --- /dev/null +++ b/script/c100100021.lua @@ -0,0 +1,35 @@ +--Sp-バッテリーリサイクル +function c100100021.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100021.con) + e1:SetTarget(c100100021.target) + e1:SetOperation(c100100021.activate) + c:RegisterEffect(e1) +end +function c100100021.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100021.filter(c) + return c:IsRace(RACE_THUNDER) and c:IsAttackBelow(1500) and c:IsAbleToHand() +end +function c100100021.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()==tp and chkc:GetLocation()==LOCATION_GRAVE and c100100021.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100021.filter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c100100021.filter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,2,0,0) +end +function c100100021.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c100100022.lua b/script/c100100022.lua new file mode 100644 index 00000000..2b6a87ad --- /dev/null +++ b/script/c100100022.lua @@ -0,0 +1,31 @@ +--Sp-ハーピィの羽根帚 +function c100100022.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(c100100022.cost) + e1:SetTarget(c100100022.target) + e1:SetOperation(c100100022.activate) + c:RegisterEffect(e1) +end +function c100100022.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,12,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,12,REASON_COST) +end +function c100100022.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c100100022.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c100100022.filter,tp,0,LOCATION_ONFIELD,1,c) end + local sg=Duel.GetMatchingGroup(c100100022.filter,tp,0,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100100022.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100100022.filter,tp,0,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100100023.lua b/script/c100100023.lua new file mode 100644 index 00000000..52be23dd --- /dev/null +++ b/script/c100100023.lua @@ -0,0 +1,30 @@ +--Sp-成金ゴブリン +function c100100023.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100023.con) + e1:SetTarget(c100100023.target) + e1:SetOperation(c100100023.activate) + c:RegisterEffect(e1) +end +function c100100023.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100023.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,1000) +end +function c100100023.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.Recover(1-tp,1000,REASON_EFFECT) + end +end diff --git a/script/c100100024.lua b/script/c100100024.lua new file mode 100644 index 00000000..838379ab --- /dev/null +++ b/script/c100100024.lua @@ -0,0 +1,43 @@ +--Sp-貪欲な壺 +function c100100024.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100024.cost) + e1:SetTarget(c100100024.target) + e1:SetOperation(c100100024.activate) + c:RegisterEffect(e1) +end +function c100100024.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100024.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c100100024.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100100024.filter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) + and Duel.IsExistingTarget(c100100024.filter,tp,LOCATION_GRAVE,0,5,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c100100024.filter,tp,LOCATION_GRAVE,0,5,5,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100100024.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=5 then return end + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + if ct==5 then + Duel.ShuffleDeck(tp) + Duel.BreakEffect() + Duel.Draw(tp,2,REASON_EFFECT) + end +end diff --git a/script/c100100025.lua b/script/c100100025.lua new file mode 100644 index 00000000..eaa4f808 --- /dev/null +++ b/script/c100100025.lua @@ -0,0 +1,35 @@ +--Sp-トレード·イン +function c100100025.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100025.con) + e1:SetCost(c100100025.cost) + e1:SetTarget(c100100025.target) + e1:SetOperation(c100100025.activate) + c:RegisterEffect(e1) +end +function c100100025.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100025.filter(c) + return c:GetLevel()==8 and c:IsDiscardable() +end +function c100100025.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100025.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c100100025.filter,1,1,REASON_COST+REASON_DISCARD) +end +function c100100025.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100100025.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100100026.lua b/script/c100100026.lua new file mode 100644 index 00000000..f97bd686 --- /dev/null +++ b/script/c100100026.lua @@ -0,0 +1,46 @@ +--Sp-悪魔への貢物 +function c100100026.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100026.con) + e1:SetTarget(c100100026.target) + e1:SetOperation(c100100026.activate) + c:RegisterEffect(e1) +end +function c100100026.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100026.filter(c) + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c100100026.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100026.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100100026.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100026.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c100100026.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c100100026.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100100026.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT) + if tc:IsLocation(LOCATION_GRAVE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100100026.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 + end +end diff --git a/script/c100100027.lua b/script/c100100027.lua new file mode 100644 index 00000000..3b77d776 --- /dev/null +++ b/script/c100100027.lua @@ -0,0 +1,52 @@ +--Sp-浅すぎた墓穴 +function c100100027.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c100100027.cost) + e1:SetTarget(c100100027.target) + e1:SetOperation(c100100027.operation) + c:RegisterEffect(e1) +end +function c100100027.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100027.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE) +end +function c100100027.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then + return Duel.IsExistingTarget(c100100027.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100100027.filter,1-tp,LOCATION_GRAVE,0,1,nil,e,1-tp) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE,1-tp)>0 + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectTarget(tp,c100100027.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local og=Duel.SelectTarget(1-tp,c100100027.filter,1-tp,LOCATION_GRAVE,0,1,1,nil,e,1-tp) + local sc=sg:GetFirst() + local oc=og:GetFirst() + local g=Group.FromCards(sc,oc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) + e:SetLabelObject(sc) +end +function c100100027.operation(e,tp,eg,ep,ev,re,r,rp) + local sc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local oc=g:GetFirst() + if oc==sc then oc=g:GetNext() end + if sc:IsRelateToEffect(e) then + Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + end + if oc:IsRelateToEffect(e) then + Duel.SpecialSummonStep(oc,0,1-tp,1-tp,false,false,POS_FACEDOWN_DEFENSE) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c100100028.lua b/script/c100100028.lua new file mode 100644 index 00000000..3812e12e --- /dev/null +++ b/script/c100100028.lua @@ -0,0 +1,39 @@ +--Sp-いたずら好きな双子悪魔 +function c100100028.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100028.cost) + e1:SetTarget(c100100028.target) + e1:SetOperation(c100100028.activate) + c:RegisterEffect(e1) +end +function c100100028.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return Duel.CheckLPCost(tp,1000) and tc and tc:IsCanRemoveCounter(tp,0x91,8,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,8,REASON_COST) + Duel.PayLPCost(tp,1000) +end +function c100100028.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>1 end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,2) +end +function c100100028.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,0,LOCATION_HAND) + if g:GetCount()>0 then + local sg=g:RandomSelect(p,1) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + g:RemoveCard(sg:GetFirst()) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,1-p,HINTMSG_DISCARD) + sg=g:Select(1-p,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + end + end +end diff --git a/script/c100100029.lua b/script/c100100029.lua new file mode 100644 index 00000000..654c5d35 --- /dev/null +++ b/script/c100100029.lua @@ -0,0 +1,32 @@ +--Sp-古のルール +function c100100029.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100029.con) + e1:SetTarget(c100100029.target) + e1:SetOperation(c100100029.activate) + c:RegisterEffect(e1) +end +function c100100029.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100029.filter(c,e,tp) + return c:IsLevelAbove(5) and c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100029.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100029.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100100029.activate(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,c100100029.filter,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 diff --git a/script/c100100030.lua b/script/c100100030.lua new file mode 100644 index 00000000..34e6629b --- /dev/null +++ b/script/c100100030.lua @@ -0,0 +1,57 @@ +--Sp-簡易融合 +function c100100030.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100030.con) + e1:SetCost(c100100030.cost) + e1:SetTarget(c100100030.target) + e1:SetOperation(c100100030.activate) + c:RegisterEffect(e1) +end +function c100100030.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>=2 +end +function c100100030.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,100100030)==0 and Duel.CheckLPCost(tp,1000) end + Duel.PayLPCost(tp,1000) + Duel.RegisterFlagEffect(tp,100100030,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) +end +function c100100030.filter(c,e,tp) + return c:IsType(TYPE_FUSION) and c:IsLevelBelow(5) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial() +end +function c100100030.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100030.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100100030.activate(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,c100100030.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetOperation(c100100030.desop) + tc:RegisterEffect(e2) + tc:CompleteProcedure() + end +end +function c100100030.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c100100031.lua b/script/c100100031.lua new file mode 100644 index 00000000..b748f74c --- /dev/null +++ b/script/c100100031.lua @@ -0,0 +1,33 @@ +--Sp-打ち出の小槌 +function c100100031.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(c100100031.con) + e1:SetTarget(c100100031.target) + e1:SetOperation(c100100031.activate) + c:RegisterEffect(e1) +end +function c100100031.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100031.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) + 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) +end +function c100100031.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(p,Card.IsAbleToDeck,p,LOCATION_HAND,0,1,63,nil) + 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 diff --git a/script/c100100032.lua b/script/c100100032.lua new file mode 100644 index 00000000..28b93b7b --- /dev/null +++ b/script/c100100032.lua @@ -0,0 +1,32 @@ +--Sp-おろかな埋葬 +function c100100032.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100032.cost) + e1:SetTarget(c100100032.target) + e1:SetOperation(c100100032.activate) + c:RegisterEffect(e1) +end +function c100100032.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100032.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c100100032.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100032.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c100100032.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100100032.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c100100033.lua b/script/c100100033.lua new file mode 100644 index 00000000..89fcc7b6 --- /dev/null +++ b/script/c100100033.lua @@ -0,0 +1,46 @@ +--Sp-思い出のブランコ +function c100100033.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100033.con) + e1:SetTarget(c100100033.target) + e1:SetOperation(c100100033.activate) + c:RegisterEffect(e1) +end +function c100100033.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100033.filter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100033.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100100033.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100100033.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100100033.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100100033.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c100100033.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + tc:RegisterEffect(e1,true) + end +end +function c100100033.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c100100034.lua b/script/c100100034.lua new file mode 100644 index 00000000..fb6d8dac --- /dev/null +++ b/script/c100100034.lua @@ -0,0 +1,84 @@ +--Sp-おとり人形 +function c100100034.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100034.con) + e1:SetTarget(c100100034.target) + e1:SetOperation(c100100034.activate) + c:RegisterEffect(e1) +end +function c100100034.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100034.filter(c) + return c:IsFacedown() and c:GetSequence()~=5 +end +function c100100034.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c100100034.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100034.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + Duel.SelectTarget(tp,c100100034.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) +end +function c100100034.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFaceup() then + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end + return + end + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + operation(te,tep,eg,ep,ev,re,r,rp) + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c100100035.lua b/script/c100100035.lua new file mode 100644 index 00000000..16e68637 --- /dev/null +++ b/script/c100100035.lua @@ -0,0 +1,74 @@ +--Sp-オーバーロード·フュージョン +function c100100035.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100035.cost) + e1:SetTarget(c100100035.target) + e1:SetOperation(c100100035.activate) + c:RegisterEffect(e1) +end +function c100100035.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100035.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c100100035.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_MACHINE) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c100100035.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100100035.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c100100035.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100100035.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100100035.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100100035.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c100100035.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100100035.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c100100036.lua b/script/c100100036.lua new file mode 100644 index 00000000..ed6540fd --- /dev/null +++ b/script/c100100036.lua @@ -0,0 +1,31 @@ +--Sp-大嵐 +function c100100036.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(c100100036.cost) + e1:SetTarget(c100100036.target) + e1:SetOperation(c100100036.activate) + c:RegisterEffect(e1) +end +function c100100036.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,6,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,6,REASON_COST) +end +function c100100036.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c100100036.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c100100036.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + local sg=Duel.GetMatchingGroup(c100100036.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100100036.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100100036.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100100037.lua b/script/c100100037.lua new file mode 100644 index 00000000..d986c0d6 --- /dev/null +++ b/script/c100100037.lua @@ -0,0 +1,36 @@ +--Sp-押収 +function c100100037.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100037.cost) + e1:SetTarget(c100100037.target) + e1:SetOperation(c100100037.activate) + c:RegisterEffect(e1) +end +function c100100037.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return Duel.CheckLPCost(tp,1000) and tc and tc:IsCanRemoveCounter(tp,0x91,7,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,7,REASON_COST) + Duel.PayLPCost(tp,1000) +end +function c100100037.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1) +end +function c100100037.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,0,LOCATION_HAND) + if g:GetCount()>0 then + Duel.ConfirmCards(p,g) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_DISCARD) + local sg=g:Select(p,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + Duel.ShuffleHand(1-p) + end +end diff --git a/script/c100100038.lua b/script/c100100038.lua new file mode 100644 index 00000000..1529c731 --- /dev/null +++ b/script/c100100038.lua @@ -0,0 +1,34 @@ +--Sp-エンシェント·リーフ +function c100100038.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100038.condition) + e1:SetCost(c100100038.cost) + e1:SetTarget(c100100038.target) + e1:SetOperation(c100100038.activate) + c:RegisterEffect(e1) +end +function c100100038.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)>=9000 +end +function c100100038.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,1,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,1,REASON_COST) + Duel.PayLPCost(tp,2000) +end +function c100100038.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100100038.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100100039.lua b/script/c100100039.lua new file mode 100644 index 00000000..3c93563a --- /dev/null +++ b/script/c100100039.lua @@ -0,0 +1,38 @@ +--Sp-巨竜の羽ばたき +function c100100039.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100039.con) + e1:SetTarget(c100100039.target) + e1:SetOperation(c100100039.activate) + c:RegisterEffect(e1) +end +function c100100039.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100039.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsLevelAbove(5) and c:IsAbleToHand() +end +function c100100039.dfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c100100039.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c100100039.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c100100039.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c100100039.filter,tp,LOCATION_MZONE,0,1,1,nil) + local sg=Duel.GetMatchingGroup(c100100039.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100100039.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 then + local sg=Duel.GetMatchingGroup(c100100039.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) + end +end diff --git a/script/c100100040.lua b/script/c100100040.lua new file mode 100644 index 00000000..58e2b027 --- /dev/null +++ b/script/c100100040.lua @@ -0,0 +1,44 @@ +--Sp-強制転移 +function c100100040.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100040.cost) + e1:SetTarget(c100100040.target) + e1:SetOperation(c100100040.activate) + c:RegisterEffect(e1) +end +function c100100040.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100040.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToChangeControler,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,0,0,0) +end +function c100100040.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not Duel.IsExistingMatchingCard(Card.IsAbleToChangeControler,tp,LOCATION_MZONE,0,1,nil) + or not Duel.IsExistingMatchingCard(Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,nil) + then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g1=Duel.SelectMatchingCard(tp,Card.IsAbleToChangeControler,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_CONTROL) + local g2=Duel.SelectMatchingCard(1-tp,Card.IsAbleToChangeControler,1-tp,LOCATION_MZONE,0,1,1,nil) + local c1=g1:GetFirst() + local c2=g2:GetFirst() + if Duel.SwapControl(c1,c2,0,0) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_PHASE+PHASE_END) + c1:RegisterEffect(e1) + local e2=e1:Clone() + c2:RegisterEffect(e2) + end +end diff --git a/script/c100100041.lua b/script/c100100041.lua new file mode 100644 index 00000000..2bcaf169 --- /dev/null +++ b/script/c100100041.lua @@ -0,0 +1,42 @@ +--Sp-儀式の準備 +function c100100041.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100041.con) + e1:SetTarget(c100100041.target) + e1:SetOperation(c100100041.activate) + c:RegisterEffect(e1) +end +function c100100041.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100041.filter(c) + return bit.band(c:GetType(),0x81)==0x81 and c:GetLevel()<=7 and c:IsAbleToHand() +end +function c100100041.filter2(c) + return bit.band(c:GetType(),0x82)==0x82 and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100100041.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100041.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100100041.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100100041.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + local g=Duel.GetMatchingGroup(c100100041.filter2,tp,LOCATION_GRAVE,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(100100041,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c100100042.lua b/script/c100100042.lua new file mode 100644 index 00000000..38966bd2 --- /dev/null +++ b/script/c100100042.lua @@ -0,0 +1,85 @@ +--Sp-拡散する波動 +function c100100042.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100042.con) + e1:SetCost(c100100042.cost) + e1:SetTarget(c100100042.target) + e1:SetOperation(c100100042.activate) + c:RegisterEffect(e1) +end +function c100100042.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100042.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 c100100042.filter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsLevelAbove(7) +end +function c100100042.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100100042.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100042.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100100042.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100100042.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsControler(tp) and tc:IsRelateToEffect(e) then + local ae=Effect.CreateEffect(e:GetHandler()) + ae:SetType(EFFECT_TYPE_FIELD) + ae:SetCode(EFFECT_CANNOT_ATTACK) + ae:SetTargetRange(LOCATION_MZONE,0) + ae:SetTarget(c100100042.ftarget) + ae:SetLabel(tc:GetFieldID()) + ae:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(ae,tp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_EP) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetCondition(c100100042.becon) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_ATTACK_ALL) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_BATTLE_END) + e4:SetOperation(c100100042.disop) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + end +end +function c100100042.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c100100042.becon(e) + return e:GetHandler():IsAttackable() +end +function c100100042.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not bc or not bc:IsStatus(STATUS_BATTLE_DESTROYED) then return end + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x17a0000) + bc:RegisterEffect(e1) +end diff --git a/script/c100100043.lua b/script/c100100043.lua new file mode 100644 index 00000000..618b108f --- /dev/null +++ b/script/c100100043.lua @@ -0,0 +1,25 @@ +--Sp-カオス·エンド +function c100100043.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100043.condition) + e1:SetTarget(c100100043.target) + e1:SetOperation(c100100043.activate) + c:RegisterEffect(e1) +end +function c100100043.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return Duel.GetFieldGroupCount(tp,LOCATION_REMOVED,0)>=7 and tc and tc:GetCounter(0x91)>1 +end +function c100100043.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100100043.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c100100044.lua b/script/c100100044.lua new file mode 100644 index 00000000..87a2c040 --- /dev/null +++ b/script/c100100044.lua @@ -0,0 +1,24 @@ +--Sp-火炎地獄 +function c100100044.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100044.con) + e1:SetTarget(c100100044.target) + e1:SetOperation(c100100044.activate) + c:RegisterEffect(e1) +end +function c100100044.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>0 +end +function c100100044.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,500) +end +function c100100044.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,1000,REASON_EFFECT) + Duel.Damage(tp,500,REASON_EFFECT) +end diff --git a/script/c100100045.lua b/script/c100100045.lua new file mode 100644 index 00000000..5ea1eaa1 --- /dev/null +++ b/script/c100100045.lua @@ -0,0 +1,30 @@ +--Sp-最終戦争 +function c100100045.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100045.con) + e1:SetCost(c100100045.cost) + e1:SetTarget(c100100045.target) + e1:SetOperation(c100100045.activate) + c:RegisterEffect(e1) +end +function c100100045.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>0 +end +function c100100045.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,5,e:GetHandler()) end + Duel.DiscardHand(tp,Card.IsDiscardable,5,5,REASON_COST+REASON_DISCARD) +end +function c100100045.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100100045.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c100100046.lua b/script/c100100046.lua new file mode 100644 index 00000000..958da7c9 --- /dev/null +++ b/script/c100100046.lua @@ -0,0 +1,34 @@ +--Sp-最古式念導 +function c100100046.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100046.condition) + e1:SetTarget(c100100046.target) + e1:SetOperation(c100100046.activate) + c:RegisterEffect(e1) +end +function c100100046.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_PSYCHO) +end +function c100100046.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return Duel.IsExistingMatchingCard(c100100046.cfilter,tp,LOCATION_MZONE,0,1,nil) and tc and tc:GetCounter(0x91)>1 +end +function c100100046.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) +end +function c100100046.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(tp,1000,REASON_EFFECT) + end +end diff --git a/script/c100100047.lua b/script/c100100047.lua new file mode 100644 index 00000000..82ae44c4 --- /dev/null +++ b/script/c100100047.lua @@ -0,0 +1,46 @@ +--Sp-強欲なウツボ +function c100100047.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:SetCost(c100100047.cost) + e1:SetTarget(c100100047.target) + e1:SetOperation(c100100047.activate) + c:RegisterEffect(e1) +end +function c100100047.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100047.filter(c) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToDeck() +end +function c100100047.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) + and Duel.IsExistingMatchingCard(c100100047.filter,tp,LOCATION_HAND,0,2,e:GetHandler()) end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,2,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,3) +end +function c100100047.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetMatchingGroup(c100100047.filter,p,LOCATION_HAND,0,nil) + if g:GetCount()<2 then + local hg=Duel.GetFieldGroup(p,LOCATION_HAND,0) + Duel.ConfirmCards(1-p,hg) + Duel.ShuffleHand(p) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local sg=g:Select(p,2,2,nil) + Duel.ConfirmCards(1-p,sg) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(p) + Duel.BreakEffect() + Duel.Draw(p,3,REASON_EFFECT) + end +end diff --git a/script/c100100048.lua b/script/c100100048.lua new file mode 100644 index 00000000..c4f258b4 --- /dev/null +++ b/script/c100100048.lua @@ -0,0 +1,57 @@ +--Sp-強欲で謙虚な壺 +function c100100048.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100048.con) + e1:SetCost(c100100048.cost) + e1:SetTarget(c100100048.target) + e1:SetOperation(c100100048.activate) + c:RegisterEffect(e1) +end +function c100100048.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>3 +end +function c100100048.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 and Duel.GetFlagEffect(tp,100100048)==0 end + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,100100048,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) +end +function c100100048.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)<3 then return false end + local g=Duel.GetDecktopGroup(tp,3) + local result=g:FilterCount(Card.IsAbleToHand,nil)>0 + return result + end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c100100048.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.ConfirmDecktop(p,3) + local g=Duel.GetDecktopGroup(p,3) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_ATOHAND) + local sg=g:Select(p,1,1,nil) + if sg:GetFirst():IsAbleToHand() then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-p,sg) + Duel.ShuffleHand(p) + else + Duel.SendtoGrave(sg,REASON_EFFECT) + end + Duel.ShuffleDeck(p) + end +end diff --git a/script/c100100049.lua b/script/c100100049.lua new file mode 100644 index 00000000..85824a4e --- /dev/null +++ b/script/c100100049.lua @@ -0,0 +1,35 @@ +--Sp-強引な番兵 +function c100100049.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100049.cost) + e1:SetTarget(c100100049.target) + e1:SetOperation(c100100049.activate) + c:RegisterEffect(e1) +end +function c100100049.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,8,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,8,REASON_COST) +end +function c100100049.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,0,1-tp,LOCATION_HAND) +end +function c100100049.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,0,LOCATION_HAND) + if g:GetCount()>0 then + Duel.ConfirmCards(p,g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local sg=g:Select(p,1,1,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + Duel.ShuffleHand(1-p) + end +end diff --git a/script/c100100050.lua b/script/c100100050.lua new file mode 100644 index 00000000..49124f60 --- /dev/null +++ b/script/c100100050.lua @@ -0,0 +1,45 @@ +--Sp-クロス·ソウル +function c100100050.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100050.cost) + e1:SetTarget(c100100050.target) + e1:SetOperation(c100100050.activate) + c:RegisterEffect(e1) +end +function c100100050.filter(c) + return not (c:IsHasEffect(EFFECT_UNRELEASABLE_SUM) or c:IsHasEffect(EFFECT_UNRELEASABLE_NONSUM)) +end +function c100100050.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 + and tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100100050.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100100050.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100050.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c100100050.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c100100050.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RELEASE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100100051.lua b/script/c100100051.lua new file mode 100644 index 00000000..f621edde --- /dev/null +++ b/script/c100100051.lua @@ -0,0 +1,34 @@ +--Sp-剣闘訓練所 +function c100100051.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100051.cost) + e1:SetTarget(c100100051.target) + e1:SetOperation(c100100051.activate) + c:RegisterEffect(e1) +end +function c100100051.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100051.filter(c) + local lv=c:GetLevel() + return c:IsSetCard(0x19) and lv>0 and lv<5 and c:IsAbleToHand() +end +function c100100051.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100051.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100100051.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100100051.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100100052.lua b/script/c100100052.lua new file mode 100644 index 00000000..f82e516e --- /dev/null +++ b/script/c100100052.lua @@ -0,0 +1,33 @@ +--Sp-苦渋の選択 +function c100100052.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100052.cost) + e1:SetTarget(c100100052.target) + e1:SetOperation(c100100052.activate) + c:RegisterEffect(e1) +end +function c100100052.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,12,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,12,REASON_COST) +end +function c100100052.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK,0,5,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100100052.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(100100052,0)) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK,0,5,5,nil) + if g:GetCount()<5 then return end + Duel.ConfirmCards(1-tp,g) + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(100100052,1)) + local sg=g:Select(1-tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + g:Sub(sg) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c100100053.lua b/script/c100100053.lua new file mode 100644 index 00000000..9c327d96 --- /dev/null +++ b/script/c100100053.lua @@ -0,0 +1,40 @@ +--Sp-死のマジック·ボックス +function c100100053.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100053.con) + e1:SetTarget(c100100053.target) + e1:SetOperation(c100100053.activate) + c:RegisterEffect(e1) +end +function c100100053.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100053.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingTarget(Card.IsAbleToChangeControler,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g2=Duel.SelectTarget(tp,Card.IsAbleToChangeControler,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g2,1,0,0) +end +function c100100053.activate(e,tp,eg,ep,ev,re,r,rp) + local ex1,dg=Duel.GetOperationInfo(0,CATEGORY_DESTROY) + local ex2,cg=Duel.GetOperationInfo(0,CATEGORY_CONTROL) + local dc=dg:GetFirst() + local cc=cg:GetFirst() + if dc:IsRelateToEffect(e) and cc:IsRelateToEffect(e) then + Duel.Destroy(dc,REASON_EFFECT) + if not Duel.GetControl(cc,1-tp,0,0) and not cc:IsImmuneToEffect(e) and cc:IsAbleToChangeControler() then + Duel.Destroy(cc,REASON_EFFECT) + end + end +end diff --git a/script/c100100054.lua b/script/c100100054.lua new file mode 100644 index 00000000..be839207 --- /dev/null +++ b/script/c100100054.lua @@ -0,0 +1,35 @@ +--Sp-死者への手向け +function c100100054.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100054.con) + e1:SetCost(c100100054.cost) + e1:SetTarget(c100100054.target) + e1:SetOperation(c100100054.activate) + c:RegisterEffect(e1) +end +function c100100054.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100054.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 c100100054.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100100054.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100100055.lua b/script/c100100055.lua new file mode 100644 index 00000000..2447dac2 --- /dev/null +++ b/script/c100100055.lua @@ -0,0 +1,39 @@ +--Sp-死者転生 +function c100100055.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100055.con) + e1:SetCost(c100100055.cost) + e1:SetTarget(c100100055.target) + e1:SetOperation(c100100055.activate) + c:RegisterEffect(e1) +end +function c100100055.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100055.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 c100100055.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c100100055.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100100055.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100055.tgfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectTarget(tp,c100100055.tgfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c100100055.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c100100056.lua b/script/c100100056.lua new file mode 100644 index 00000000..4283482b --- /dev/null +++ b/script/c100100056.lua @@ -0,0 +1,36 @@ +--Sp-死者蘇生 +function c100100056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100056.cost) + e1:SetTarget(c100100056.target) + e1:SetOperation(c100100056.activate) + c:RegisterEffect(e1) +end +function c100100056.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,10,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,10,REASON_COST) +end +function c100100056.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100056.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c100100056.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100100056.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100100056.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100100056.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100100057.lua b/script/c100100057.lua new file mode 100644 index 00000000..2dfad755 --- /dev/null +++ b/script/c100100057.lua @@ -0,0 +1,39 @@ +--Sp-地砕き +function c100100057.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(c100100057.cost) + e1:SetTarget(c100100057.target) + e1:SetOperation(c100100057.activate) + c:RegisterEffect(e1) +end +function c100100057.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100057.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c100100057.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100057.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c100100057.filter,tp,0,LOCATION_MZONE,nil) + local tg=g:GetMaxGroup(Card.GetDefense) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c100100057.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100100057.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tg=g:GetMaxGroup(Card.GetDefense) + if tg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=tg:Select(tp,1,1,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + else Duel.Destroy(tg,REASON_EFFECT) end + end +end diff --git a/script/c100100058.lua b/script/c100100058.lua new file mode 100644 index 00000000..3b624873 --- /dev/null +++ b/script/c100100058.lua @@ -0,0 +1,35 @@ +--Sp-シールドクラッシュ +function c100100058.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100058.cost) + e1:SetTarget(c100100058.target) + e1:SetOperation(c100100058.activate) + c:RegisterEffect(e1) +end +function c100100058.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100058.filter(c) + return not c:IsAttackPos() and c:IsDestructable() +end +function c100100058.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c100100058.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100058.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100058.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100100058.activate(e) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100100059.lua b/script/c100100059.lua new file mode 100644 index 00000000..864e4a6b --- /dev/null +++ b/script/c100100059.lua @@ -0,0 +1,27 @@ +--Sp-サンダー·ボルト +function c100100059.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(c100100059.cost) + e1:SetTarget(c100100059.target) + e1:SetOperation(c100100059.activate) + c:RegisterEffect(e1) +end +function c100100059.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,12,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,12,REASON_COST) +end +function c100100059.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100100059.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100100060.lua b/script/c100100060.lua new file mode 100644 index 00000000..4d490acd --- /dev/null +++ b/script/c100100060.lua @@ -0,0 +1,36 @@ +--Sp-サルベージ +function c100100060.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100060.con) + e1:SetTarget(c100100060.target) + e1:SetOperation(c100100060.activate) + c:RegisterEffect(e1) +end +function c100100060.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100060.filter(c) + local atk=c:GetAttack() + return atk>=0 and atk<=1500 and c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToHand() +end +function c100100060.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()==tp and chkc:GetLocation()==LOCATION_GRAVE and c100100060.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100060.filter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c100100060.filter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,2,0,0) +end +function c100100060.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c100100061.lua b/script/c100100061.lua new file mode 100644 index 00000000..307090cc --- /dev/null +++ b/script/c100100061.lua @@ -0,0 +1,39 @@ +--Sp-スタンピング·クラッシュ +function c100100061.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100061.condition) + e1:SetTarget(c100100061.target) + e1:SetOperation(c100100061.activate) + c:RegisterEffect(e1) +end +function c100100061.filter1(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c100100061.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return Duel.IsExistingMatchingCard(c100100061.filter1,tp,LOCATION_MZONE,0,1,nil) + and tc and tc:GetCounter(0x91)>2 +end +function c100100061.filter2(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c100100061.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c100100061.filter2(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100061.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100061.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100100061.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local p=tc:GetControler() + if Duel.Destroy(tc,REASON_EFFECT)==0 then return end + Duel.Damage(p,500,REASON_EFFECT) + end +end diff --git a/script/c100100062.lua b/script/c100100062.lua new file mode 100644 index 00000000..2149a98b --- /dev/null +++ b/script/c100100062.lua @@ -0,0 +1,59 @@ +--Sp-真炎の爆発 +function c100100062.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100062.cost) + e1:SetTarget(c100100062.tg) + e1:SetOperation(c100100062.op) + c:RegisterEffect(e1) +end +function c100100062.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,4,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,4,REASON_COST) +end +function c100100062.filter(c,e,tp) + return c:GetDefense()==200 and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100062.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100062.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c100100062.op(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100100062.filter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(100100062,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + g:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabelObject(g) + e1:SetOperation(c100100062.rmop) + Duel.RegisterEffect(e1,tp) + end +end +function c100100062.rmfilter(c) + return c:GetFlagEffect(100100062)>0 +end +function c100100062.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c100100062.rmfilter,nil) + g:DeleteGroup() + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c100100063.lua b/script/c100100063.lua new file mode 100644 index 00000000..ce3d720a --- /dev/null +++ b/script/c100100063.lua @@ -0,0 +1,37 @@ +--Sp-地割れ +function c100100063.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100063.con) + e1:SetTarget(c100100063.target) + e1:SetOperation(c100100063.activate) + c:RegisterEffect(e1) +end +function c100100063.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>3 +end +function c100100063.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c100100063.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100063.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c100100063.filter,tp,0,LOCATION_MZONE,nil) + local tg=g:GetMinGroup(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c100100063.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100100063.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tg=g:GetMinGroup(Card.GetAttack) + if tg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=tg:Select(tp,1,1,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + else Duel.Destroy(tg,REASON_EFFECT) end + end +end diff --git a/script/c100100064.lua b/script/c100100064.lua new file mode 100644 index 00000000..3140f585 --- /dev/null +++ b/script/c100100064.lua @@ -0,0 +1,31 @@ +--Sp-召喚師のスキル +function c100100064.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100064.con) + e1:SetTarget(c100100064.target) + e1:SetOperation(c100100064.activate) + c:RegisterEffect(e1) +end +function c100100064.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100064.filter(c) + return c:GetLevel()>=5 and c:IsType(TYPE_NORMAL) and c:IsAbleToHand() +end +function c100100064.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100064.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100100064.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100100064.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100100065.lua b/script/c100100065.lua new file mode 100644 index 00000000..dad1497a --- /dev/null +++ b/script/c100100065.lua @@ -0,0 +1,42 @@ +--Sp-終焉のカウントダウン +function c100100065.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100065.cost) + e1:SetOperation(c100100065.activate) + c:RegisterEffect(e1) +end +function c100100065.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return Duel.CheckLPCost(tp,2000) and tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) + Duel.PayLPCost(tp,2000) +end +function c100100065.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetFlagEffect(tp,100100065)~=0 then return end + Duel.RegisterFlagEffect(tp,100100065,0,0,0) + c:SetTurnCounter(0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c100100065.checkop) + e1:SetCountLimit(1) + Duel.RegisterEffect(e1,tp) + c:RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END,0,20) + c100100065[c]=e1 +end +function c100100065.checkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==20 then + Duel.Win(tp,0x11) + c:ResetFlagEffect(1082946) + end +end diff --git a/script/c100100066.lua b/script/c100100066.lua new file mode 100644 index 00000000..4a14b0ef --- /dev/null +++ b/script/c100100066.lua @@ -0,0 +1,37 @@ +--Sp-地縛旋風 +function c100100066.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100066.condition) + e1:SetCost(c100100066.cost) + e1:SetTarget(c100100066.target) + e1:SetOperation(c100100066.activate) + c:RegisterEffect(e1) +end +function c100100066.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x21) +end +function c100100066.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100100066.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100100066.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100066.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c100100066.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100066.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c100100066.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100100066.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100100066.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c100100067.lua b/script/c100100067.lua new file mode 100644 index 00000000..42f1ba25 --- /dev/null +++ b/script/c100100067.lua @@ -0,0 +1,34 @@ +--Sp-戦士の生還 +function c100100067.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100067.con) + e1:SetTarget(c100100067.target) + e1:SetOperation(c100100067.activate) + c:RegisterEffect(e1) +end +function c100100067.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>2 +end +function c100100067.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAbleToHand() +end +function c100100067.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()==tp and chkc:GetLocation()==LOCATION_GRAVE and c100100067.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100067.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c100100067.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c100100067.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c100100068.lua b/script/c100100068.lua new file mode 100644 index 00000000..9fef51fa --- /dev/null +++ b/script/c100100068.lua @@ -0,0 +1,45 @@ +--Sp-セイバー·スラッシュ +function c100100068.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(c100100068.cost) + e1:SetTarget(c100100068.target) + e1:SetOperation(c100100068.activate) + c:RegisterEffect(e1) +end +function c100100068.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100068.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c100100068.cfilter(c) + return c:IsFaceup() and c:IsAttackPos() and c:IsSetCard(0x100d) +end +function c100100068.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local ct=Duel.GetMatchingGroupCount(c100100068.cfilter,tp,LOCATION_MZONE,0,nil) + e:SetLabel(ct) + return Duel.IsExistingMatchingCard(c100100068.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,ct,c) + end + local ct=e:GetLabel() + local sg=Duel.GetMatchingGroup(c100100068.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,ct,0,0) +end +function c100100068.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c100100068.cfilter,tp,LOCATION_MZONE,0,nil) + local g=Duel.GetMatchingGroup(c100100068.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + if g:GetCount()>ct then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=g:Select(tp,ct,ct,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + end +end diff --git a/script/c100100069.lua b/script/c100100069.lua new file mode 100644 index 00000000..8295e97d --- /dev/null +++ b/script/c100100069.lua @@ -0,0 +1,50 @@ +--Sp-精神操作 +function c100100069.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100069.cost) + e1:SetTarget(c100100069.target) + e1:SetOperation(c100100069.activate) + c:RegisterEffect(e1) +end +function c100100069.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,6,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100069.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:GetControler()~=tp and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c100100069.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.GetControl(tc,tp,PHASE_END,1) then + local e1=Effect.CreateEffect(c) + local reset=RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetReset(reset) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + e2:SetReset(reset) + e2:SetValue(1) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetReset(reset) + tc:RegisterEffect(e3) + end +end diff --git a/script/c100100070.lua b/script/c100100070.lua new file mode 100644 index 00000000..eaf07c54 --- /dev/null +++ b/script/c100100070.lua @@ -0,0 +1,47 @@ +--Sp-生者の書-禁断の呪術- +function c100100070.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100070.cost) + e1:SetTarget(c100100070.target) + e1:SetOperation(c100100070.activate) + c:RegisterEffect(e1) +end +function c100100070.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100070.spfilter(c,e,tp) + return c:IsRace(RACE_ZOMBIE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100070.rmfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c100100070.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100100070.rmfilter,tp,0,LOCATION_GRAVE,1,nil) + and Duel.IsExistingTarget(c100100070.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c100100070.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,1,0,0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectTarget(tp,c100100070.rmfilter,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g2,1,0,0) +end +function c100100070.activate(e,tp,eg,ep,ev,re,r,rp) + local ex1,tg1=Duel.GetOperationInfo(0,CATEGORY_SPECIAL_SUMMON) + local ex2,tg2=Duel.GetOperationInfo(0,CATEGORY_REMOVE) + if tg1:GetFirst():IsRelateToEffect(e) and tg1:GetFirst():IsRace(RACE_ZOMBIE) then + Duel.SpecialSummon(tg1,0,tp,tp,false,false,POS_FACEUP) + end + if tg2:GetFirst():IsRelateToEffect(e) then + Duel.Remove(tg2,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c100100071.lua b/script/c100100071.lua new file mode 100644 index 00000000..df9c57bb --- /dev/null +++ b/script/c100100071.lua @@ -0,0 +1,33 @@ +--Sp-スペシャルハリケーン +function c100100071.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100071.con) + e1:SetCost(c100100071.cost) + e1:SetTarget(c100100071.target) + e1:SetOperation(c100100071.activate) + c:RegisterEffect(e1) +end +function c100100071.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>2 +end +function c100100071.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 c100100071.filter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL and c:IsDestructable() +end +function c100100071.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100071.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c100100071.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100100071.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c100100071.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c100100072.lua b/script/c100100072.lua new file mode 100644 index 00000000..75549f24 --- /dev/null +++ b/script/c100100072.lua @@ -0,0 +1,29 @@ +--Sp-魂の解放 +function c100100072.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100072.con) + e1:SetTarget(c100100072.target) + e1:SetOperation(c100100072.activate) + c:RegisterEffect(e1) +end +function c100100072.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100072.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,5,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c100100072.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c100100073.lua b/script/c100100073.lua new file mode 100644 index 00000000..83ab959d --- /dev/null +++ b/script/c100100073.lua @@ -0,0 +1,44 @@ +--Sp-大寒波 +function c100100073.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100073.condition) + e1:SetCost(c100100073.cost) + e1:SetOperation(c100100073.operation) + c:RegisterEffect(e1) +end +function c100100073.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return Duel.GetCurrentPhase()==PHASE_MAIN1 and not Duel.CheckPhaseActivity() + and tc and tc:GetCounter(0x91)>5 +end +function c100100073.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100073.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,1) + e1:SetValue(c100100073.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + --cannot set + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SSET) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetTarget(aux.TRUE) + e2:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e2,tp) +end +function c100100073.aclimit(e,re,tp) + return re:GetHandler():IsType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c100100074.lua b/script/c100100074.lua new file mode 100644 index 00000000..8995a7c1 --- /dev/null +++ b/script/c100100074.lua @@ -0,0 +1,37 @@ +--Sp-ソーラー·エクスチェンジ +function c100100074.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100074.con) + e1:SetCost(c100100074.cost) + e1:SetTarget(c100100074.target) + e1:SetOperation(c100100074.activate) + c:RegisterEffect(e1) +end +function c100100074.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>3 +end +function c100100074.costfilter(c) + return c:IsSetCard(0x38) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c100100074.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100074.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c100100074.costfilter,1,1,REASON_COST+REASON_DISCARD,nil) +end +function c100100074.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,4) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,2) +end +function c100100074.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + Duel.DiscardDeck(tp,2,REASON_EFFECT) +end diff --git a/script/c100100075.lua b/script/c100100075.lua new file mode 100644 index 00000000..70297206 --- /dev/null +++ b/script/c100100075.lua @@ -0,0 +1,37 @@ +--Sp-ソウルテイカー +function c100100075.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100075.cost) + e1:SetTarget(c100100075.target) + e1:SetOperation(c100100075.activate) + c:RegisterEffect(e1) +end +function c100100075.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100075.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c100100075.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c100100075.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100075.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100075.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,1000) +end +function c100100075.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.Recover(1-tp,1000,REASON_EFFECT) + end +end diff --git a/script/c100100076.lua b/script/c100100076.lua new file mode 100644 index 00000000..5799fabd --- /dev/null +++ b/script/c100100076.lua @@ -0,0 +1,33 @@ +--Sp-増援 +function c100100076.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100076.cost) + e1:SetTarget(c100100076.target) + e1:SetOperation(c100100076.activate) + c:RegisterEffect(e1) +end +function c100100076.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100076.filter(c) + return c:IsLevelBelow(4) and c:IsRace(RACE_WARRIOR) and c:IsAbleToHand() +end +function c100100076.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100076.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100100076.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100100076.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100100077.lua b/script/c100100077.lua new file mode 100644 index 00000000..3db59208 --- /dev/null +++ b/script/c100100077.lua @@ -0,0 +1,35 @@ +--Sp-洗脳-ブレインコントロール +function c100100077.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100077.cost) + e1:SetTarget(c100100077.target) + e1:SetOperation(c100100077.activate) + c:RegisterEffect(e1) +end +function c100100077.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,6,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,6,REASON_COST) +end +function c100100077.filter(c) + return c:IsControlerCanBeChanged() and c:IsFaceup() +end +function c100100077.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100100077.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100077.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c100100077.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c100100077.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c100100078.lua b/script/c100100078.lua new file mode 100644 index 00000000..5abde739 --- /dev/null +++ b/script/c100100078.lua @@ -0,0 +1,24 @@ +--Sp-二重召喚 +function c100100078.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100078.con) + e1:SetOperation(c100100078.activate) + c:RegisterEffect(e1) +end +function c100100078.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100078.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SET_SUMMON_COUNT_LIMIT) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(2) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c100100079.lua b/script/c100100079.lua new file mode 100644 index 00000000..d79c1acb --- /dev/null +++ b/script/c100100079.lua @@ -0,0 +1,37 @@ +--Sp-手札抹殺 +function c100100079.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100079.cost) + e1:SetTarget(c100100079.target) + e1:SetOperation(c100100079.activate) + c:RegisterEffect(e1) +end +function c100100079.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,5,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,5,REASON_COST) +end +function c100100079.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + if e:GetHandler():IsLocation(LOCATION_HAND) then h1=h1-1 end + local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + return (h1>0 or h2>0) and (h1==0 or Duel.IsPlayerCanDraw(tp,h1)) and (h2==0 or Duel.IsPlayerCanDraw(1-tp)) + end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,PLAYER_ALL,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c100100079.activate(e,tp,eg,ep,ev,re,r,rp) + local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,LOCATION_HAND) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + Duel.BreakEffect() + Duel.Draw(tp,h1,REASON_EFFECT) + Duel.Draw(1-tp,h2,REASON_EFFECT) +end diff --git a/script/c100100080.lua b/script/c100100080.lua new file mode 100644 index 00000000..174be513 --- /dev/null +++ b/script/c100100080.lua @@ -0,0 +1,54 @@ +--Sp-デビルズ·サンクチュアリ +function c100100080.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100080.cost) + e1:SetTarget(c100100080.target) + e1:SetOperation(c100100080.activate) + c:RegisterEffect(e1) +end +function c100100080.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,1,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,1,REASON_COST) +end +function c100100080.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,24874631,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c100100080.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,24874631,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,24874631) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e2:SetValue(1) + token:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetOperation(c100100080.rtcost) + token:RegisterEffect(e3,true) +end +function c100100080.rtcost(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + if Duel.GetLP(tp)>1000 and Duel.SelectYesNo(tp,aux.Stringid(100100080,0)) then + Duel.PayLPCost(tp,1000) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c100100081.lua b/script/c100100081.lua new file mode 100644 index 00000000..5974d34a --- /dev/null +++ b/script/c100100081.lua @@ -0,0 +1,34 @@ +--Sp-デステニー·ドロー +function c100100081.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100081.cost) + e1:SetTarget(c100100081.target) + e1:SetOperation(c100100081.activate) + c:RegisterEffect(e1) +end +function c100100081.filter(c) + return c:IsSetCard(0xc008) and c:IsDiscardable() +end +function c100100081.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return Duel.IsExistingMatchingCard(c100100081.filter,tp,LOCATION_HAND,0,1,nil) + and tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) + Duel.DiscardHand(tp,c100100081.filter,1,1,REASON_COST+REASON_DISCARD) +end +function c100100081.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100100081.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100100082.lua b/script/c100100082.lua new file mode 100644 index 00000000..aca4c770 --- /dev/null +++ b/script/c100100082.lua @@ -0,0 +1,38 @@ +--Sp-テールスイング +function c100100082.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100082.con) + e1:SetTarget(c100100082.target) + e1:SetOperation(c100100082.activate) + c:RegisterEffect(e1) +end +function c100100082.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100082.filter(c,tp) + return c:IsFaceup() and c:IsRace(RACE_DINOSAUR) and c:IsLevelAbove(5) + and Duel.IsExistingMatchingCard(c100100082.dfilter,tp,0,LOCATION_MZONE,1,nil,c:GetLevel()) +end +function c100100082.dfilter(c,lv) + return (c:IsFacedown() or c:IsLevelBelow(lv-1)) and c:IsAbleToHand() +end +function c100100082.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c100100082.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c100100082.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + local sg=Duel.GetMatchingGroup(c100100082.dfilter,tp,0,LOCATION_MZONE,nil,g:GetFirst():GetLevel()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,1,0,0) +end +function c100100082.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local sg=Duel.SelectMatchingCard(tp,c100100082.dfilter,tp,0,LOCATION_MZONE,1,2,nil,tc:GetLevel()) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + end +end diff --git a/script/c100100083.lua b/script/c100100083.lua new file mode 100644 index 00000000..6bcbf773 --- /dev/null +++ b/script/c100100083.lua @@ -0,0 +1,35 @@ +--Sp-調和の宝札 +function c100100083.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100083.con) + e1:SetCost(c100100083.cost) + e1:SetTarget(c100100083.target) + e1:SetOperation(c100100083.activate) + c:RegisterEffect(e1) +end +function c100100083.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>2 +end +function c100100083.filter(c) + return c:IsType(TYPE_TUNER) and c:IsRace(RACE_DRAGON) and c:IsAttackBelow(1000) and c:IsDiscardable() +end +function c100100083.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100083.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c100100083.filter,1,1,REASON_COST+REASON_DISCARD) +end +function c100100083.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100100083.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100100084.lua b/script/c100100084.lua new file mode 100644 index 00000000..906325f0 --- /dev/null +++ b/script/c100100084.lua @@ -0,0 +1,37 @@ +--Sp-調律 +function c100100084.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100084.cost) + e1:SetTarget(c100100084.target) + e1:SetOperation(c100100084.activate) + c:RegisterEffect(e1) +end +function c100100084.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100084.filter(c) + return c:IsSetCard(0x17) and c:IsType(TYPE_TUNER) and c:IsAbleToHand() +end +function c100100084.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>1 + and Duel.IsExistingMatchingCard(c100100084.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100100084.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100100084.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleDeck(tp) + end + Duel.BreakEffect() + Duel.DiscardDeck(tp,1,REASON_EFFECT) +end diff --git a/script/c100100090.lua b/script/c100100090.lua new file mode 100644 index 00000000..f6c1eeba --- /dev/null +++ b/script/c100100090.lua @@ -0,0 +1,12 @@ +--ゲート・ブロッカー +function c100100090.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(100100090) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,1) + e1:SetValue(1) + c:RegisterEffect(e1) +end diff --git a/script/c100100091.lua b/script/c100100091.lua new file mode 100644 index 00000000..44398c4b --- /dev/null +++ b/script/c100100091.lua @@ -0,0 +1,30 @@ +--ゲート・ブロッカー2 +function c100100091.initial_effect(c) + --spsummon from hand + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(c100100091.hspcon) + e1:SetOperation(c100100091.hspop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(100100090) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,1) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c100100091.hspcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),Card.IsCode,1,nil,8102334) +end +function c100100091.hspop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),Card.IsCode,1,1,nil,8102334) + Duel.Release(g,REASON_COST) +end diff --git a/script/c100100100.lua b/script/c100100100.lua new file mode 100644 index 00000000..b92af098 --- /dev/null +++ b/script/c100100100.lua @@ -0,0 +1,72 @@ +--Sp-スピード・フュージョン +function c100100100.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100100.con) + e1:SetTarget(c100100100.target) + e1:SetOperation(c100100100.activate) + c:RegisterEffect(e1) +end +function c100100100.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100100.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c100100100.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,nil,chkf) +end +function c100100100.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100100100.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c100100100.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c100100100.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100100100.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100100100.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c100100100.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c100100100.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c100100101.lua b/script/c100100101.lua new file mode 100644 index 00000000..b4601399 --- /dev/null +++ b/script/c100100101.lua @@ -0,0 +1,36 @@ +--Sp-ラピッド・ショットウィング +function c100100101.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100101.con) + e1:SetTarget(c100100101.target) + e1:SetOperation(c100100101.activate) + c:RegisterEffect(e1) +end +function c100100101.con(e,tp,eg,ep,ev,re,r,rp) + local td=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and td:GetCounter(0x91)>2 +end +function c100100101.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,nil) end + return true +end +function c100100101.activate(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tdg=dg:Select(tp,1,1,nil) + local tc=tdg:GetFirst() + local td=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if 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+PHASE_END) + e1:SetValue(td:GetCounter(0x91)*200) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100100102.lua b/script/c100100102.lua new file mode 100644 index 00000000..3a77e636 --- /dev/null +++ b/script/c100100102.lua @@ -0,0 +1,33 @@ +--Sp-エンジェル・バトン +function c100100102.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100102.cost) + e1:SetTarget(c100100102.target) + e1:SetOperation(c100100102.activate) + c:RegisterEffect(e1) +end +function c100100102.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,4,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,4,REASON_COST) +end +function c100100102.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) +end +function c100100102.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)==2 then + Duel.BreakEffect() + Duel.DiscardHand(tp,aux.TRUE,1,1,REASON_EFFECT) + end +end diff --git a/script/c100100103.lua b/script/c100100103.lua new file mode 100644 index 00000000..9959974b --- /dev/null +++ b/script/c100100103.lua @@ -0,0 +1,45 @@ +--Sp-カウントアップ +function c100100103.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100103.con) + e1:SetCost(c100100103.cost) + e1:SetTarget(c100100103.target) + e1:SetOperation(c100100103.activate) + c:RegisterEffect(e1) +end +function c100100103.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 and tc:GetCounter(0x91)<12 and not Duel.IsPlayerAffectedByEffect(tp,100100090) +end +function c100100103.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c100100103.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local cg=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,63,nil) + Duel.SendtoGrave(cg,REASON_COST) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(cg:GetCount()) +end +function c100100103.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local tc=Duel.GetFieldCard(p,LOCATION_SZONE,5) + if not tc then return end + if d<=0 or Duel.IsPlayerAffectedByEffect(p,100100090) then return end + local td=d*3 + if (12-tc:GetCounter(0x91))3 +end +function c100100109.activate(e,tp,eg,ep,ev,re,r,rp) + --indestructable + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetTargetRange(LOCATION_ONFIELD,0) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetValue(c100100109.indval) + e1:SetReset(RESET_PHASE+PHASE_END,1) + Duel.RegisterEffect(e1,tp) +end +function c100100109.indval(e,re,rp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and re:GetOwner()~=e:GetOwner() +end diff --git a/script/c100100110.lua b/script/c100100110.lua new file mode 100644 index 00000000..306d9a1b --- /dev/null +++ b/script/c100100110.lua @@ -0,0 +1,39 @@ +--Sp-シルバー・コントレイル +function c100100110.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100110.cost) + e1:SetTarget(c100100110.target) + e1:SetOperation(c100100110.activate) + c:RegisterEffect(e1) +end +function c100100110.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,1,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,1,REASON_COST) +end +function c100100110.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,nil) end + return true +end +function c100100110.activate(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tdg=dg:Select(tp,1,1,nil) + local tc=tdg:GetFirst() + if 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100100111.lua b/script/c100100111.lua new file mode 100644 index 00000000..fdaf8e6d --- /dev/null +++ b/script/c100100111.lua @@ -0,0 +1,32 @@ +--Sp-ソニック・バスター +function c100100111.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100111.cost) + e1:SetTarget(c100100111.target) + e1:SetOperation(c100100111.activate) + c:RegisterEffect(e1) +end +function c100100111.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100111.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()/2) +end +function c100100111.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Damage(1-tp,tc:GetAttack()/2,REASON_EFFECT) + end +end diff --git a/script/c100100112.lua b/script/c100100112.lua new file mode 100644 index 00000000..22b52900 --- /dev/null +++ b/script/c100100112.lua @@ -0,0 +1,28 @@ +--Sp-アクセル・ドロー +function c100100112.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100112.con) + e1:SetTarget(c100100112.target) + e1:SetOperation(c100100112.activate) + c:RegisterEffect(e1) +end +function c100100112.con(e,tp,eg,ep,ev,re,r,rp) + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + return tc1 and tc2 and tc1:GetCounter(0x91)>11 and tc2:GetCounter(0x91)<6 +end +function c100100112.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100100112.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100100113.lua b/script/c100100113.lua new file mode 100644 index 00000000..cb8f0942 --- /dev/null +++ b/script/c100100113.lua @@ -0,0 +1,21 @@ +--Sp-スピード・ジャマー +function c100100113.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100113.con) + e1:SetOperation(c100100113.activate) + c:RegisterEffect(e1) +end +function c100100113.con(e,tp,eg,ep,ev,re,r,rp) + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + return tc1 and tc2 and tc1:GetCounter(0x91)>1 and tc2:GetCounter(0x91)>5 +end +function c100100113.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if not tc then return end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,6,REASON_COST) +end diff --git a/script/c100100114.lua b/script/c100100114.lua new file mode 100644 index 00000000..7945f6be --- /dev/null +++ b/script/c100100114.lua @@ -0,0 +1,49 @@ +--Sp-オーバー・チューン +function c100100114.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100114.con) + e1:SetCost(c100100114.cost) + e1:SetTarget(c100100114.target) + e1:SetOperation(c100100114.operation) + c:RegisterEffect(e1) +end +function c100100114.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>2 +end +function c100100114.cfilter(c,e,tp) + local lv=c:GetLevel() + return lv>0 and Duel.IsExistingMatchingCard(c100100114.filter,tp,LOCATION_HAND,0,1,nil,lv,e,tp) +end +function c100100114.filter(c,lv,e,tp) + return c:IsLevelBelow(lv) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100114.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c100100114.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100100114.cfilter,1,nil,e,tp) end + local rg=Duel.SelectReleaseGroup(tp,c100100114.cfilter,1,1,nil,e,tp) + local lv=rg:GetFirst():GetLevel() + Duel.Release(rg,REASON_COST) + Duel.SetTargetParam(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100100114.operation(e,tp,eg,ep,ev,re,r,rp) + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100100114.filter,tp,LOCATION_HAND,0,1,1,nil,lv,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100100115.lua b/script/c100100115.lua new file mode 100644 index 00000000..6502d061 --- /dev/null +++ b/script/c100100115.lua @@ -0,0 +1,43 @@ +--Sp-スター・フォース +function c100100115.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100115.con) + e1:SetCost(c100100115.cost) + e1:SetOperation(c100100115.operation) + c:RegisterEffect(e1) +end +function c100100115.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100115.cfilter(c) + return c:IsFaceup() and c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(Card.IsFaceup,c:GetControler(),LOCATION_MZONE,0,1,c) +end +function c100100115.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100115.cfilter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,e:GetHandler():GetControler(),HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(e:GetHandler():GetControler(),c100100115.cfilter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,1,nil) + e:SetLabel(g:GetFirst():GetLevel()*200) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c100100115.operation(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(Card.IsFaceup,e:GetHandler():GetControler(),LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,e:GetHandler():GetControler(),HINTMSG_FACEUP) + local tdg=dg:Select(e:GetHandler():GetControler(),1,1,nil) + local tc=tdg:GetFirst() + if 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+PHASE_END) + e1:SetValue(e:GetLabel()) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100100116.lua b/script/c100100116.lua new file mode 100644 index 00000000..bb27433e --- /dev/null +++ b/script/c100100116.lua @@ -0,0 +1,45 @@ +--Sp−ゼロ・リバース +function c100100116.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100100116.cost) + e1:SetTarget(c100100116.target) + e1:SetOperation(c100100116.activate) + c:RegisterEffect(e1) +end +function c100100116.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100116.filter(c,id,e,tp) + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_EFFECT) and c:GetTurnID()==id and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100116.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100116.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,Duel.GetTurnCount(),e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c100100116.activate(e,tp,eg,ep,ev,re,r,rp) + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft1==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100100116.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,Duel.GetTurnCount(),e,tp) + local tc=g:GetFirst() + local td=tp + if tc:GetPreviousControler()~=tp then td=1-tp end + if Duel.SpecialSummonStep(tc,0,tp,td,false,false,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100100117.lua b/script/c100100117.lua new file mode 100644 index 00000000..27ee60fa --- /dev/null +++ b/script/c100100117.lua @@ -0,0 +1,28 @@ +--Sp-ギャップ・ストーム +function c100100117.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100117.con) + e1:SetTarget(c100100117.target) + e1:SetOperation(c100100117.activate) + c:RegisterEffect(e1) +end +function c100100117.con(e,tp,eg,ep,ev,re,r,rp) + if not Duel.GetFieldCard(tp,LOCATION_SZONE,5) or not Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) then return false end + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5):GetCounter(0x91) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5):GetCounter(0x91) + return tc1-tc2>=7 or tc2-tc1>=7 +end +function c100100117.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_SZONE,LOCATION_SZONE,1,c) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_SZONE,LOCATION_SZONE,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100100117.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_SZONE,LOCATION_SZONE,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100100118.lua b/script/c100100118.lua new file mode 100644 index 00000000..4144ef40 --- /dev/null +++ b/script/c100100118.lua @@ -0,0 +1,33 @@ +--Sp-ダッシュ・ピルファー +function c100100118.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100118.con) + e1:SetTarget(c100100118.target) + e1:SetOperation(c100100118.activate) + c:RegisterEffect(e1) +end +function c100100118.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>3 +end +function c100100118.filter(c) + return c:IsControlerCanBeChanged() and c:IsPosition(POS_FACEUP_DEFENSE) +end +function c100100118.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c100100118.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,1-tp,LOCATION_MZONE) +end +function c100100118.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c100100118.filter,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c100100119.lua b/script/c100100119.lua new file mode 100644 index 00000000..64dc8e6f --- /dev/null +++ b/script/c100100119.lua @@ -0,0 +1,33 @@ +--Sp-シンクロ・デフューズ +function c100100119.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100119.con) + e1:SetTarget(c100100119.target) + e1:SetOperation(c100100119.activate) + c:RegisterEffect(e1) +end +function c100100119.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100119.filter(c) + return c:IsControlerCanBeChanged() and c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c100100119.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100100119.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100119.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c100100119.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c100100119.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c100100120.lua b/script/c100100120.lua new file mode 100644 index 00000000..3db933c9 --- /dev/null +++ b/script/c100100120.lua @@ -0,0 +1,53 @@ +--Sp-ファイナル・アタック +function c100100120.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100120.cost) + e1:SetTarget(c100100120.target) + e1:SetOperation(c100100120.activate) + c:RegisterEffect(e1) +end +function c100100120.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,5,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100120.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,nil) end + return true +end +function c100100120.activate(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tdg=dg:Select(tp,1,1,nil) + local tc=tdg:GetFirst() + if tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetBaseAttack()*2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c100100120.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tc:RegisterEffect(e3) + end +end +function c100100120.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c100100121.lua b/script/c100100121.lua new file mode 100644 index 00000000..840e4aec --- /dev/null +++ b/script/c100100121.lua @@ -0,0 +1,69 @@ +--Sp-パワー・バトン +function c100100121.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c100100121.condition) + e1:SetCost(c100100121.cost) + e1:SetTarget(c100100121.target) + e1:SetOperation(c100100121.operation) + c:RegisterEffect(e1) +end +function c100100121.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + if not tc or tc:GetCounter(0x91)<3 then return false end + if d and a:GetControler()~=d:GetControler() then + if a:IsControler(tp) then e:SetLabelObject(a) + else e:SetLabelObject(d) end + return true + else return false end +end +function c100100121.costfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c100100121.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c100100121.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c100100121.costfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100100121.costfilter,tp,LOCATION_DECK,0,1,1,nil) + local atk=g:GetFirst():GetAttack() + Duel.SendtoGrave(g,REASON_COST) + Duel.SetTargetCard(tc) + Duel.SetTargetParam(atk) +end +function c100100121.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if atk<0 then atk=0 end + if tc 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+PHASE_DAMAGE_CAL) + e1:SetValue(atk) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetCode(EFFECT_DRAW_COUNT) + e2:SetValue(0) + e2:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN) + Duel.RegisterEffect(e2,tp) + end +end diff --git a/script/c100100122.lua b/script/c100100122.lua new file mode 100644 index 00000000..effaf0c0 --- /dev/null +++ b/script/c100100122.lua @@ -0,0 +1,45 @@ +--Sp-オーバー・ブースト +function c100100122.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100122.condition) + e1:SetTarget(c100100122.target) + e1:SetOperation(c100100122.activate) + c:RegisterEffect(e1) +end +function c100100122.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)<7 and not Duel.IsPlayerAffectedByEffect(tp,100100090) +end +function c100100122.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) +end +function c100100122.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local tc=Duel.GetFieldCard(p,LOCATION_SZONE,5) + if not tc or Duel.IsPlayerAffectedByEffect(p,100100090) then return end + if tc:GetCounter(0x91)<7 then + tc:AddCounter(0x91,6) + else + tc:AddCounter(0x91,12-tc:GetCounter(0x91)) + end + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c100100122.op) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tc:RegisterEffect(e3) +end +function c100100122.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if tc:GetCounter(0x91)<=1 then return end + if tc:GetCounter(0x91)>1 then + tc:RemoveCounter(tp,0x91,tc:GetCounter(0x91)-1,REASON_EFFECT) + end +end diff --git a/script/c100100123.lua b/script/c100100123.lua new file mode 100644 index 00000000..d8756b0c --- /dev/null +++ b/script/c100100123.lua @@ -0,0 +1,39 @@ +--Sp-ハイスピード・クラッシュ +function c100100123.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100123.con) + e1:SetTarget(c100100123.target) + e1:SetOperation(c100100123.operation) + c:RegisterEffect(e1) +end +function c100100123.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100123.filter(c,card) + return c:IsDestructable() and Duel.IsExistingTarget(c100100123.filter2,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c,card) +end +function c100100123.filter2(c,card) + return c:IsDestructable() and c~=card +end +function c100100123.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c100100123.filter,tp,LOCATION_ONFIELD,0,1,c,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c100100123.filter,tp,LOCATION_ONFIELD,0,1,1,c,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,c100100123.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst(),c) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,g1:GetCount(),0,0) +end +function c100100123.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100100124.lua b/script/c100100124.lua new file mode 100644 index 00000000..2db15ae4 --- /dev/null +++ b/script/c100100124.lua @@ -0,0 +1,36 @@ +--Sp-ハーフ・シーズ +function c100100124.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100124.con) + e1:SetTarget(c100100124.target) + e1:SetOperation(c100100124.operation) + c:RegisterEffect(e1) +end +function c100100124.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>2 +end +function c100100124.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,0) +end +function c100100124.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local atk=g:GetFirst():GetAttack()/2 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + if g:GetFirst():RegisterEffect(e1) then + Duel.Recover(tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c100100125.lua b/script/c100100125.lua new file mode 100644 index 00000000..a26979cf --- /dev/null +++ b/script/c100100125.lua @@ -0,0 +1,36 @@ +--Sp-運命の呪縛 +function c100100125.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100125.con) + e1:SetTarget(c100100125.target) + e1:SetOperation(c100100125.activate) + c:RegisterEffect(e1) +end +function c100100125.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100125.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()/2) +end +function c100100125.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Damage(1-tp,tc:GetAttack()/2,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100100126.lua b/script/c100100126.lua new file mode 100644 index 00000000..50deae91 --- /dev/null +++ b/script/c100100126.lua @@ -0,0 +1,28 @@ +--Sp-スロウダウン・マシーン +function c100100126.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100100126.activate) + c:RegisterEffect(e1) +end +function c100100126.activate(e,tp,eg,ep,ev,re,r,rp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE) + e2:SetCondition(c100100126.condition) + e2:SetOperation(c100100126.operation) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c100100126.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c100100126.operation(e,tp,eg,ep,ev,re,r,rp) + local d=math.floor(ev/300) + local tc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if not tc then return end + if tc:GetCounter(0x91)2 +end +function c100100127.filter(c) + return c:IsAttackBelow(1000) and c:IsFaceup() +end +function c100100127.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100100127.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100127.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100100127.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100100127.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT) + end +end diff --git a/script/c100100128.lua b/script/c100100128.lua new file mode 100644 index 00000000..e8fe1ee4 --- /dev/null +++ b/script/c100100128.lua @@ -0,0 +1,48 @@ +--Sp-ヴィジョンウィンド +function c100100128.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100128.cost) + e1:SetTarget(c100100128.target) + e1:SetOperation(c100100128.activate) + c:RegisterEffect(e1) +end +function c100100128.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100128.filter(c,e,tp) + return c:IsLevelBelow(2) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100128.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100100128.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100128.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + return true +end +function c100100128.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local dg=Duel.GetMatchingGroup(c100100128.filter,c:GetControler(),LOCATION_GRAVE,0,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,c:GetControler(),HINTMSG_SPSUMMON) + local tc=dg:Select(c:GetControler(),1,1,nil):GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c100100128.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tc:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end +end +function c100100128.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c100100129.lua b/script/c100100129.lua new file mode 100644 index 00000000..3a9fd37b --- /dev/null +++ b/script/c100100129.lua @@ -0,0 +1,40 @@ +--Sp-起爆化 +function c100100129.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100129.con) + e1:SetTarget(c100100129.target) + e1:SetOperation(c100100129.activate) + c:RegisterEffect(e1) +end +function c100100129.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100129.filter(c) + return c:GetSequence()<5 and c:IsDestructable() +end +function c100100129.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100100129.filter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100129.filter,tp,LOCATION_SZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + local sg=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_POSITION,sg,sg:GetCount(),0,0) +end +function c100100129.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + Duel.BreakEffect() + local sg=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) + if sg:GetCount()>0 then + Duel.ChangePosition(sg,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c100100130.lua b/script/c100100130.lua new file mode 100644 index 00000000..b5e07fe7 --- /dev/null +++ b/script/c100100130.lua @@ -0,0 +1,45 @@ +--Sp-シンクロ・リターン +function c100100130.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100130.con) + e1:SetTarget(c100100130.target) + e1:SetOperation(c100100130.activate) + c:RegisterEffect(e1) +end +function c100100130.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>2 +end +function c100100130.filter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100130.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and c100100130.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100100130.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_REMOVED) +end +function c100100130.activate(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(c100100130.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tdg=dg:Select(tp,1,1,nil) + local tc=tdg:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c100100130.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tc:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end +end +function c100100130.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c100100131.lua b/script/c100100131.lua new file mode 100644 index 00000000..9a7e4e80 --- /dev/null +++ b/script/c100100131.lua @@ -0,0 +1,37 @@ +--Sp-サモン・スピーダー +function c100100131.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100131.con) + e1:SetTarget(c100100131.target) + e1:SetOperation(c100100131.activate) + c:RegisterEffect(e1) +end +function c100100131.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100131.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100131.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100100131.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100100131.activate(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,c100100131.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 and Duel.SpecialSummonStep(g:GetFirst(),0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + g:GetFirst():RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100100132.lua b/script/c100100132.lua new file mode 100644 index 00000000..323ca188 --- /dev/null +++ b/script/c100100132.lua @@ -0,0 +1,58 @@ +--Sp-スピードストーム +function c100100132.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100132.con) + e1:SetTarget(c100100132.damtg) + e1:SetOperation(c100100132.damop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c100100132.condition) + e2:SetCost(c100100132.cost) + e2:SetTarget(c100100132.target) + e2:SetOperation(c100100132.operation) + c:RegisterEffect(e2) +end +function c100100132.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>3 +end +function c100100132.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c100100132.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c100100132.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c100100132.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100132.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c100100132.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c100100133.lua b/script/c100100133.lua new file mode 100644 index 00000000..57707a45 --- /dev/null +++ b/script/c100100133.lua @@ -0,0 +1,62 @@ +--Sp-デッド・シンクロン +function c100100133.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100133.cost) + e1:SetTarget(c100100133.target) + e1:SetOperation(c100100133.operation) + c:RegisterEffect(e1) +end +function c100100133.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,8,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,8,REASON_COST) +end +function c100100133.filter1(c,e,tp) + local lv1=c:GetLevel() + return c:IsLevelBelow(8) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) + and Duel.IsExistingMatchingCard(c100100133.filter2,c:GetControler(),LOCATION_GRAVE,0,1,nil,lv1) +end +function c100100133.filter2(c,lv1) + local lv2=c:GetLevel() + return c:IsAbleToRemove() and c:IsType(TYPE_TUNER) + and Duel.IsExistingMatchingCard(c100100133.filter3,c:GetControler(),LOCATION_GRAVE,0,1,c,lv1-lv2) +end +function c100100133.filter3(c,lv) + return c:IsAbleToRemove() and c:GetLevel()==lv and not c:IsType(TYPE_TUNER) +end +function c100100133.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100100133.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100100133.filter1,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100100133.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c100100133.filter1,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tg1=g1:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c100100133.filter2,tp,LOCATION_GRAVE,0,1,1,nil,tg1:GetLevel()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g3=Duel.SelectMatchingCard(tp,c100100133.filter3,tp,LOCATION_GRAVE,0,1,1,nil,tg1:GetLevel()-g2:GetFirst():GetLevel()) + g2:Merge(g3) + Duel.Remove(g2,POS_FACEUP,REASON_EFFECT) + if tg1 and Duel.SpecialSummonStep(tg1,0,tp,tp,false,false,POS_FACEUP) then + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c100100133.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tg1:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end +end +function c100100133.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c100100150.lua b/script/c100100150.lua new file mode 100644 index 00000000..0e64cf35 --- /dev/null +++ b/script/c100100150.lua @@ -0,0 +1,21 @@ +--アクセル・ゾーン +function c100100150.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c100100150.condition) + e1:SetOperation(c100100150.activate) + c:RegisterEffect(e1) +end +function c100100150.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and re:GetHandler():IsSetCard(0x200) and tc and tc:GetCounter(0x91)<7 +end +function c100100150.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not tc then return end + tc:RegisterFlagEffect(100100103,RESET_EVENT+RESET_CHAIN,0,1) + tc:AddCounter(0x91,6) +end \ No newline at end of file diff --git a/script/c100100151.lua b/script/c100100151.lua new file mode 100644 index 00000000..68e5765a --- /dev/null +++ b/script/c100100151.lua @@ -0,0 +1,98 @@ +--スピード・ブースター +function c100100151.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(c100100151.atkcon) + e1:SetTarget(c100100151.atktg1) + e1:SetOperation(c100100151.atkop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c100100151.atkcon) + e2:SetTarget(c100100151.atktg2) + e2:SetOperation(c100100151.atkop) + c:RegisterEffect(e2) + --Activate + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_ACTIVATE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1) + e3:SetCondition(c100100151.condition2) + e3:SetTarget(c100100151.target3) + e3:SetOperation(c100100151.operation2) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCountLimit(1) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c100100151.condition2) + e4:SetTarget(c100100151.target4) + e4:SetOperation(c100100151.operation2) + c:RegisterEffect(e4) +end +function c100100151.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c100100151.atktg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldCard(tp,LOCATION_SZONE,5) + and Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) end + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5):GetCounter(0x91) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5):GetCounter(0x91) + e:SetLabel(0) + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and tc1>tc2 and Duel.SelectYesNo(tp,aux.Stringid(100100151,0)) then + e:SetLabel(1) + Duel.SetTargetCard(Duel.GetAttacker()) + e:GetHandler():RegisterFlagEffect(100100151,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c100100151.atktg2(e,tp,eg,ep,ev,re,r,rp,chk) + if not Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) or not Duel.GetFieldCard(tp,LOCATION_SZONE,5) then return false end + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5):GetCounter(0x91) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5):GetCounter(0x91) + if chk==0 then return e:GetHandler():GetFlagEffect(100100151)==0 and tc1>tc2 end + e:SetLabel(1) + Duel.SetTargetCard(Duel.GetAttacker()) +end +function c100100151.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c100100151.condition2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100100151.target3(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldCard(tp,LOCATION_SZONE,5) + and Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) end + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5):GetCounter(0x91) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5):GetCounter(0x91) + if tc1>tc2 and Duel.SelectYesNo(tp,aux.Stringid(100100151,0)) then + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam((tc1-tc2)*100) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,(tc1-tc2)*100) + e:GetHandler():RegisterFlagEffect(100100151,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + else e:SetProperty(0) end +end +function c100100151.target4(e,tp,eg,ep,ev,re,r,rp,chk) + if not Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) or not Duel.GetFieldCard(tp,LOCATION_SZONE,5) then return false end + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5):GetCounter(0x91) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5):GetCounter(0x91) + if chk==0 then return tc1>tc2 and e:GetHandler():GetFlagEffect(100100151)==0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam((tc1-tc2)*100) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,(tc1-tc2)*100) +end +function c100100151.operation2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100100152.lua b/script/c100100152.lua new file mode 100644 index 00000000..53b4deb7 --- /dev/null +++ b/script/c100100152.lua @@ -0,0 +1,47 @@ +--スピード・エッジ +function c100100152.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) + e1:SetCondition(c100100152.condition) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c100100152.condition2) + e2:SetTarget(c100100152.damtg) + e2:SetOperation(c100100152.damop) + c:RegisterEffect(e2) +end +function c100100152.afilter(c) + return c:IsFaceup() and c:GetCode()==100100152 +end +function c100100152.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c100100152.afilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100100152.condition2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100100152.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldCard(tp,LOCATION_SZONE,5) and + Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) end + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5):GetCounter(0x91) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5):GetCounter(0x91) + local dam=0 + Duel.SetTargetPlayer(1-tp) + if tc1>tc2 then dam=(tc1-tc2)*200 + else return end + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100100152.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100100153.lua b/script/c100100153.lua new file mode 100644 index 00000000..4821db8a --- /dev/null +++ b/script/c100100153.lua @@ -0,0 +1,26 @@ +--フルスロットル +function c100100153.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) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetOperation(c100100153.tdop) + c:RegisterEffect(e2) +end +function c100100153.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not tc then return end + --tc:RegisterFlagEffect(100100103,RESET_EVENT+RESET_CHAIN,0,1) + if tc:IsCode(110000000) then + tc:AddCounter(0x91,1) + end +end diff --git a/script/c100100154.lua b/script/c100100154.lua new file mode 100644 index 00000000..d999d6a4 --- /dev/null +++ b/script/c100100154.lua @@ -0,0 +1,37 @@ +--スリップ・ストリーム +function c100100154.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetOperation(c100100154.op) + c:RegisterEffect(e1) +end +function c100100154.op(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_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c100100154.spcon) + e1:SetOperation(c100100154.spop) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + end + Duel.RegisterEffect(e1,tp) +end +function c100100154.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()>=e:GetLabel() and Duel.GetTurnPlayer()==tp +end +function c100100154.spop(e,tp,eg,ep,ev,re,r,rp) + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if not tc1 or not tc2 then return end + if tc2:GetCounter(0x91)>tc1:GetCounter(0x91) then + tc1:RegisterFlagEffect(100100103,RESET_EVENT+RESET_CHAIN,0,1) + tc1:AddCounter(0x91,tc2:GetCounter(0x91)-tc1:GetCounter(0x91)) + end +end diff --git a/script/c100100155.lua b/script/c100100155.lua new file mode 100644 index 00000000..752e0669 --- /dev/null +++ b/script/c100100155.lua @@ -0,0 +1,26 @@ +--スロウダウン・トラップ +function c100100155.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DAMAGE) + e2:SetCondition(c100100155.condition) + e2:SetOperation(c100100155.operation) + c:RegisterEffect(e2) +end +function c100100155.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and ev>=1000 +end +function c100100155.operation(e,tp,eg,ep,ev,re,r,rp) + local d=math.floor(ev/1000) + local tc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if not tc then return end + if tc:GetCounter(0x91)0 and td:GetCounter(0x91)>1 +end +function c100100500.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1500) end + Duel.PayLPCost(tp,1500) +end +function c100100500.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100100500.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c100100501.lua b/script/c100100501.lua new file mode 100644 index 00000000..f99a1b2a --- /dev/null +++ b/script/c100100501.lua @@ -0,0 +1,33 @@ +--Sp-リロード +function c100100501.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(c100100501.con) + e1:SetTarget(c100100501.target) + e1:SetOperation(c100100501.activate) + c:RegisterEffect(e1) +end +function c100100501.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>0 +end +function c100100501.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) + 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 c100100501.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 diff --git a/script/c100100502.lua b/script/c100100502.lua new file mode 100644 index 00000000..9c922223 --- /dev/null +++ b/script/c100100502.lua @@ -0,0 +1,55 @@ +--Sp-リミッター解除 +function c100100502.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c100100502.condition) + e1:SetCost(c100100502.cost) + e1:SetTarget(c100100502.target) + e1:SetOperation(c100100502.activate) + c:RegisterEffect(e1) +end +function c100100502.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c100100502.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,6,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,6,REASON_COST) +end +function c100100502.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c100100502.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100502.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c100100502.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100100502.filter,tp,LOCATION_MZONE,0,nil) + local c=e:GetHandler() + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c100100502.desop) + tc:RegisterEffect(e2) + tc=sg:GetNext() + end +end +function c100100502.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c100100503.lua b/script/c100100503.lua new file mode 100644 index 00000000..1685e84c --- /dev/null +++ b/script/c100100503.lua @@ -0,0 +1,45 @@ +--Sp-融合解除 +function c100100503.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100100503.target) + e1:SetOperation(c100100503.activate) + c:RegisterEffect(e1) +end +function c100100503.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsAbleToExtra() +end +function c100100503.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local td=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100100503.filter(chk) end + if chk==0 then return Duel.IsExistingTarget(c100100503.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and td and td:GetCounter(0x91)>1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c100100503.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c100100503.mgfilter(c,e,tp,fusc) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100100503.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 or bit.band(sumtype,SUMMON_TYPE_FUSION)~=SUMMON_TYPE_FUSION or mg:GetCount()==0 + or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) + or mg:IsExists(c100100503.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable and Duel.SelectYesNo(tp,aux.Stringid(100100503,0)) then + Duel.BreakEffect() + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100100504.lua b/script/c100100504.lua new file mode 100644 index 00000000..51afe10a --- /dev/null +++ b/script/c100100504.lua @@ -0,0 +1,47 @@ +--Sp-念動収集機 +function c100100504.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100100504.cost) + e1:SetTarget(c100100504.sptg) + e1:SetOperation(c100100504.spop) + c:RegisterEffect(e1) +end +function c100100504.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100504.filter(c,e,tp) + return c:IsLevelBelow(2) and c:IsRace(RACE_PSYCHO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100504.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100100504.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100100504.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100100504.filter,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) + local lv=g:GetSum(Card.GetLevel) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,lv*300) +end +function c100100504.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local og=Duel.GetOperatedGroup() + local lv=og:GetSum(Card.GetLevel) + Duel.BreakEffect() + Duel.Damage(tp,lv*300,REASON_EFFECT) + end +end diff --git a/script/c100100505.lua b/script/c100100505.lua new file mode 100644 index 00000000..16659238 --- /dev/null +++ b/script/c100100505.lua @@ -0,0 +1,38 @@ +--Sp-トルネード +function c100100505.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100505.condition) + e1:SetTarget(c100100505.target) + e1:SetOperation(c100100505.activate) + c:RegisterEffect(e1) +end +function c100100505.cfilter(c) + return c:GetSequence()~=5 +end +function c100100505.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return Duel.IsExistingMatchingCard(c100100505.cfilter,tp,0,LOCATION_SZONE,3,nil) + and tc and tc:GetCounter(0x91)>1 +end +function c100100505.filter(c) + return c:IsDestructable() and c:GetSequence()~=5 +end +function c100100505.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c100100505.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100505.filter,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100505.filter,tp,0,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100100505.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100100506.lua b/script/c100100506.lua new file mode 100644 index 00000000..a41e5906 --- /dev/null +++ b/script/c100100506.lua @@ -0,0 +1,36 @@ +--Sp-月の書 +function c100100506.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_PHASE,0x1c0+TIMING_BATTLE_PHASE) + e1:SetCost(c100100506.cost) + e1:SetTarget(c100100506.target) + e1:SetOperation(c100100506.activate) + c:RegisterEffect(e1) +end +function c100100506.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100506.filter(c) + return c:IsFaceup() and c:IsCanTurnSet() +end +function c100100506.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100100506.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100506.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c100100506.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c100100506.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c100100507.lua b/script/c100100507.lua new file mode 100644 index 00000000..40a52ba5 --- /dev/null +++ b/script/c100100507.lua @@ -0,0 +1,34 @@ +--Sp-ツイスター +function c100100507.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c100100507.con) + e1:SetTarget(c100100507.target) + e1:SetOperation(c100100507.activate) + c:RegisterEffect(e1) +end +function c100100507.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100507.filter(c) + return c:IsFaceup() and c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c100100507.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c100100507.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100507.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100507.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100100507.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100100508.lua b/script/c100100508.lua new file mode 100644 index 00000000..3dc9c509 --- /dev/null +++ b/script/c100100508.lua @@ -0,0 +1,33 @@ +--Sp-連鎖爆撃 +function c100100508.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100508.condition) + e1:SetCost(c100100508.cost) + e1:SetTarget(c100100508.target) + e1:SetOperation(c100100508.activate) + c:RegisterEffect(e1) +end +function c100100508.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()>0 and Duel.CheckChainUniqueness() +end +function c100100508.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100508.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + local dam=Duel.GetCurrentChain()*400 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100100508.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100100509.lua b/script/c100100509.lua new file mode 100644 index 00000000..e9343853 --- /dev/null +++ b/script/c100100509.lua @@ -0,0 +1,49 @@ +--Sp-スワローズ·ネスト +function c100100509.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100509.cost) + e1:SetTarget(c100100509.target) + e1:SetOperation(c100100509.activate) + c:RegisterEffect(e1) +end +function c100100509.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c100100509.cfilter(c,e,tp) + local lv=c:GetLevel() + return lv>0 and c:IsFaceup() and c:IsRace(RACE_WINDBEAST) + and Duel.IsExistingMatchingCard(c100100509.filter,tp,LOCATION_DECK,0,1,nil,lv,e,tp) +end +function c100100509.filter(c,lv,e,tp) + return c:IsRace(RACE_WINDBEAST) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100509.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c100100509.cfilter,1,nil,e,tp) + end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) + local rg=Duel.SelectReleaseGroup(tp,c100100509.cfilter,1,1,nil,e,tp) + local lv=rg:GetFirst():GetLevel() + Duel.Release(rg,REASON_COST) + Duel.SetTargetParam(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100100509.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100100509.filter,tp,LOCATION_DECK,0,1,1,nil,lv,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100100510.lua b/script/c100100510.lua new file mode 100644 index 00000000..f90cf095 --- /dev/null +++ b/script/c100100510.lua @@ -0,0 +1,65 @@ +--Sp-スケープ·ゴート +function c100100510.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100100510.cost) + e1:SetTarget(c100100510.target) + e1:SetOperation(c100100510.activate) + c:RegisterEffect(e1) +end +function c100100510.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,4,REASON_COST) and Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 + and Duel.GetActivityCount(tp,ACTIVITY_FLIPSUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,4,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetLabelObject(e) + e1:SetTarget(c100100510.sumlimit) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetTargetRange(1,0) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + Duel.RegisterEffect(e3,tp) +end +function c100100510.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject()~=se +end +function c100100510.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,73915052,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,4,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,4,0,0) +end +function c100100510.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,73915052,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) then + for i=1,4 do + local token=Duel.CreateToken(tp,73915051+i) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c100100511.lua b/script/c100100511.lua new file mode 100644 index 00000000..75801fa8 --- /dev/null +++ b/script/c100100511.lua @@ -0,0 +1,49 @@ +--Sp-スクラップ·スコール +function c100100511.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOGRAVE+CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100511.con) + e1:SetTarget(c100100511.target) + e1:SetOperation(c100100511.activate) + c:RegisterEffect(e1) +end +function c100100511.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc:GetCounter(0x91)>1 +end +function c100100511.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0x24) and c:IsDestructable() +end +function c100100511.sfilter(c) + return c:IsSetCard(0x24) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c100100511.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100100511.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100511.desfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c100100511.sfilter,tp,LOCATION_DECK,0,1,nil) + and Duel.IsPlayerCanDraw(tp,2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100511.desfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100100511.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100100511.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + if not g:GetFirst():IsLocation(LOCATION_GRAVE) then return end + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.BreakEffect() + Duel.Destroy(tc,REASON_EFFECT) + end + end +end diff --git a/script/c100100512.lua b/script/c100100512.lua new file mode 100644 index 00000000..3effc2b4 --- /dev/null +++ b/script/c100100512.lua @@ -0,0 +1,42 @@ +--Sp-収縮 +function c100100512.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100512.condition) + e1:SetCost(c100100512.cost) + e1:SetTarget(c100100512.target) + e1:SetOperation(c100100512.activate) + c:RegisterEffect(e1) +end +function c100100512.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c100100512.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100512.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c100100512.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetBaseAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk/2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100100513.lua b/script/c100100513.lua new file mode 100644 index 00000000..7fd8fcae --- /dev/null +++ b/script/c100100513.lua @@ -0,0 +1,67 @@ +--Sp-終焉の焔 +function c100100513.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c100100513.cost) + e1:SetTarget(c100100513.target) + e1:SetOperation(c100100513.activate) + c:RegisterEffect(e1) +end +function c100100513.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) and Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 + and Duel.GetActivityCount(tp,ACTIVITY_FLIPSUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(e) + e1:SetTargetRange(1,0) + e1:SetTarget(c100100513.sumlimit) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetTargetRange(1,0) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + Duel.RegisterEffect(e3,tp) +end +function c100100513.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject()~=se +end +function c100100513.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,46173680,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c100100513.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,46173680,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) then + for i=1,2 do + local token=Duel.CreateToken(tp,46173679+i) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c100100513.recon) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() + end +end +function c100100513.recon(e,c) + return not c:IsAttribute(ATTRIBUTE_DARK) +end diff --git a/script/c100100514.lua b/script/c100100514.lua new file mode 100644 index 00000000..69d008fe --- /dev/null +++ b/script/c100100514.lua @@ -0,0 +1,41 @@ +--Sp-死者への供物 +function c100100514.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetCondition(c100100514.con) + e1:SetTarget(c100100514.target) + e1:SetOperation(c100100514.activate) + c:RegisterEffect(e1) +end +function c100100514.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c100100514.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c100100514.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100100514.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100514.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100514.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100100514.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_SKIP_DP) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END,3) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c100100515.lua b/script/c100100515.lua new file mode 100644 index 00000000..8a898867 --- /dev/null +++ b/script/c100100515.lua @@ -0,0 +1,85 @@ +--Sp-地獄の暴走召喚 +function c100100515.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c100100515.condition) + e1:SetCost(c100100515.cost) + e1:SetTarget(c100100515.target) + e1:SetOperation(c100100515.activate) + c:RegisterEffect(e1) +end +function c100100515.cfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) +end +function c100100515.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c100100515.cfilter,nil,tp) + if g:GetCount()~=1 then return end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return tc:GetAttack()<=1500 and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) +end +function c100100515.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,1,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,1,REASON_COST) +end +function c100100515.filter(c,code,e,tp) + return c:GetCode()==code and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100515.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100515.filter,tp,0x13,0,1,nil,tc:GetCode(),e,tp) end + tc:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,PLAYER_ALL,0x13) +end +function c100100515.selfilter(c) + return c:IsFaceup() and not c:IsType(TYPE_TOKEN+TYPE_TRAP) +end +function c100100515.rmfilter(c) + return c:IsLocation(LOCATION_MZONE) or c:IsLocation(LOCATION_GRAVE) +end +function c100100515.sp(g,tp,pos) + local sc=g:GetFirst() + while sc do + Duel.SpecialSummonStep(sc,0,tp,tp,false,false,pos) + sc=g:GetNext() + end +end +function c100100515.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft1>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft1=1 end + local gg=Group.CreateGroup() + if ft1>0 and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(c100100515.filter,tp,0x13,0,nil,tc:GetCode(),e,tp) + if g:GetCount()<=ft1 then c100100515.sp(g,tp,POS_FACEUP_ATTACK) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local fg=g:Select(tp,ft1,ft1,nil) + c100100515.sp(fg,tp,POS_FACEUP_ATTACK) + g:Remove(c100100515.rmfilter,nil) + gg:Merge(g) + end + end + local ft2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft2>1 and Duel.IsPlayerAffectedByEffect(1-tp,59822133) then ft2=1 end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_FACEUP) + local sg=Duel.SelectMatchingCard(1-tp,c100100515.selfilter,1-tp,LOCATION_MZONE,0,1,1,nil) + if sg:GetCount()>0 then + local g=Duel.GetMatchingGroup(c100100515.filter,1-tp,0x13,0,nil,sg:GetFirst():GetCode(),e,1-tp) + if g:GetCount()<=ft2 then c100100515.sp(g,1-tp,POS_FACEUP) + else + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local fg=g:Select(1-tp,ft2,ft2,nil) + c100100515.sp(fg,1-tp,POS_FACEUP) + g:Remove(c100100515.rmfilter,nil) + gg:Merge(g) + end + end + Duel.SpecialSummonComplete() + Duel.SendtoGrave(gg,REASON_EFFECT) +end diff --git a/script/c100100516.lua b/script/c100100516.lua new file mode 100644 index 00000000..9cfdf1cb --- /dev/null +++ b/script/c100100516.lua @@ -0,0 +1,36 @@ +--Sp-サイクロン +function c100100516.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE+TIMING_EQUIP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c100100516.cost) + e1:SetTarget(c100100516.target) + e1:SetOperation(c100100516.activate) + c:RegisterEffect(e1) +end +function c100100516.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100100516.filter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c100100516.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c100100516.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100516.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100100516.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100100516.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100100517.lua b/script/c100100517.lua new file mode 100644 index 00000000..5604f494 --- /dev/null +++ b/script/c100100517.lua @@ -0,0 +1,55 @@ +--Sp-禁じられた聖杯 +function c100100517.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100517.condition) + e1:SetCost(c100100517.cost) + e1:SetTarget(c100100517.target) + e1:SetOperation(c100100517.activate) + c:RegisterEffect(e1) +end +function c100100517.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c100100517.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,1,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,1,REASON_COST) +end +function c100100517.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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c100100517.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(400) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end diff --git a/script/c100100518.lua b/script/c100100518.lua new file mode 100644 index 00000000..33e61cc3 --- /dev/null +++ b/script/c100100518.lua @@ -0,0 +1,53 @@ +--Sp-禁じられた聖槍 +function c100100518.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100100518.condition) + e1:SetCost(c100100518.cost) + e1:SetTarget(c100100518.target) + e1:SetOperation(c100100518.activate) + c:RegisterEffect(e1) +end +function c100100518.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c100100518.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,1,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,1,REASON_COST) +end +function c100100518.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c100100518.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-800) + tc: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_IMMUNE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(c100100518.efilter) + tc:RegisterEffect(e2) + end +end +function c100100518.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c100100519.lua b/script/c100100519.lua new file mode 100644 index 00000000..09614dae --- /dev/null +++ b/script/c100100519.lua @@ -0,0 +1,46 @@ +--Sp-緊急テレポート +function c100100519.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100519.cost) + e1:SetTarget(c100100519.target) + e1:SetOperation(c100100519.activate) + c:RegisterEffect(e1) +end +function c100100519.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,4,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,4,REASON_COST) +end +function c100100519.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsRace(RACE_PSYCHO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100100519.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100519.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c100100519.activate(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,c100100519.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c100100519.rmop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + tc:RegisterEffect(e1) + end +end +function c100100519.rmop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c100100520.lua b/script/c100100520.lua new file mode 100644 index 00000000..5c5eb829 --- /dev/null +++ b/script/c100100520.lua @@ -0,0 +1,72 @@ +--Sp-エネミーコントローラー +function c100100520.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetCondition(c100100520.con) + e1:SetCost(c100100520.cost) + e1:SetTarget(c100100520.target) + e1:SetOperation(c100100520.activate) + c:RegisterEffect(e1) +end +function c100100520.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>2 +end +function c100100520.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c100100520.filter(c,e) + return c:IsFaceup() and c:IsCanBeEffectTarget(e) +end +function c100100520.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then + e:SetLabel(0) + return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + end + local g=Duel.GetMatchingGroup(c100100520.filter,tp,0,LOCATION_MZONE,nil,e) + local cg=nil + if e:GetLabel()==1 then cg=g:Filter(Card.IsAbleToChangeControler,nil) + else cg=g:Filter(Card.IsControlerCanBeChanged,nil) end + local sel=0 + Duel.Hint(HINT_SELECTMSG,tp,550) + if cg:GetCount()==0 then + sel=Duel.SelectOption(tp,aux.Stringid(100100520,0)) + elseif e:GetLabel()==1 and not Duel.CheckReleaseGroup(tp,nil,1,nil) then + sel=Duel.SelectOption(tp,aux.Stringid(100100520,0)) + else + sel=Duel.SelectOption(tp,aux.Stringid(100100520,0),aux.Stringid(100100520,1)) + if sel==1 and e:GetLabel()==1 then + local rg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(rg,REASON_COST) + end + end + if sel==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local sg=g:Select(tp,1,1,nil) + Duel.SetTargetCard(sg) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local sg=cg:Select(tp,1,1,nil) + Duel.SetTargetCard(sg) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) + end + e:SetLabel(sel) +end +function c100100520.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + if e:GetLabel()==0 then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) + else + Duel.GetControl(tc,tp,PHASE_END,1) + end + end +end diff --git a/script/c100100521.lua b/script/c100100521.lua new file mode 100644 index 00000000..02762c51 --- /dev/null +++ b/script/c100100521.lua @@ -0,0 +1,36 @@ +--Sp-異次元からの埋葬 +function c100100521.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100100521.cost) + e1:SetTarget(c100100521.target) + e1:SetOperation(c100100521.activate) + c:RegisterEffect(e1) +end +function c100100521.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,3,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,3,REASON_COST) +end +function c100100521.filter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) +end +function c100100521.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and c100100521.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100100521.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(100100521,0)) + local g=Duel.SelectTarget(tp,c100100521.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,3,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c100100521.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=tg:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_RETURN) + end +end diff --git a/script/c100100522.lua b/script/c100100522.lua new file mode 100644 index 00000000..1236be42 --- /dev/null +++ b/script/c100100522.lua @@ -0,0 +1,53 @@ +--Sp-イージーチューニング +function c100100522.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(c100100522.condition) + e1:SetCost(c100100522.cost) + e1:SetTarget(c100100522.target) + e1:SetOperation(c100100522.activate) + c:RegisterEffect(e1) +end +function c100100522.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c100100522.cfilter(c) + return c:IsType(TYPE_TUNER) and c:IsAbleToRemoveAsCost() +end +function c100100522.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c100100522.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 + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c100100522.cfilter,tp,LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c100100522.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + local atk=g:GetFirst():GetAttack() + if atk<0 then atk=0 end + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetParam(atk) +end +function c100100522.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100100525.lua b/script/c100100525.lua new file mode 100644 index 00000000..3a5f6d5f --- /dev/null +++ b/script/c100100525.lua @@ -0,0 +1,98 @@ +--Sp-シンクロパニック +function c100100525.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_ONFIELD) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetOperation(c100100525.drop) + c:RegisterEffect(e1) + --activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c100100525.con) + e2:SetTarget(c100100525.tg) + e2:SetOperation(c100100525.op) + c:RegisterEffect(e2) +end +function c100100525.sycfilter(c,code) + return c:GetCode()==code +end +function c100100525.drop(e,tp,eg,ep,ev,re,r,rp) + local tg=eg:GetFirst() + if tg:GetSummonType()==SUMMON_TYPE_SYNCHRO then + local code=tg:GetCode() + local syc=Duel.GetMatchingGroup(c100100525.sycfilter,tp,LOCATION_EXTRA+LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_ONFIELD,0,nil,code) + local tc=syc:GetFirst() + while tc do + tc:RegisterFlagEffect(100100525,0,0,1) + tc=syc:GetNext() + end + end +end +function c100100525.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>6 +end +function c100100525.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetFlagEffect(100100525)~=0 +end +function c100100525.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100100525.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100100525.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft1<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100100525.filter,tp,LOCATION_EXTRA,0,ft1,ft1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc, 0, tp, tp, false, false, POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + tc:RegisterFlagEffect(100100526,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=g:GetNext() + end + g:KeepAlive() + Duel.SpecialSummonComplete() + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetReset(RESET_PHASE+PHASE_END) + e4:SetCountLimit(1) + e4:SetLabelObject(g) + e4:SetOperation(c100100525.rmop) + Duel.RegisterEffect(e4,tp) + end +end +function c100100525.rmfilter(c) + return c:GetFlagEffect(100100526)>0 +end +function c100100525.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c100100525.rmfilter,nil) + g:DeleteGroup() + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c100100700.lua b/script/c100100700.lua new file mode 100644 index 00000000..0f8703dc --- /dev/null +++ b/script/c100100700.lua @@ -0,0 +1,30 @@ +--Sp-Wheelie Breaker +function c100100700.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(c100100700.cost) + e1:SetTarget(c100100700.target) + e1:SetOperation(c100100700.activate) + c:RegisterEffect(e1) +end +function c100100700.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,6,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,6,REASON_COST) +end +function c100100700.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c100100700.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100100700.filter,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c100100700.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100100700.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100100700.filter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c100101000.lua b/script/c100101000.lua new file mode 100644 index 00000000..0a237dd3 --- /dev/null +++ b/script/c100101000.lua @@ -0,0 +1,49 @@ +--Sp-高等儀式術 +function c100101000.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100101000.cost) + e1:SetTarget(c100101000.target) + e1:SetOperation(c100101000.activate) + c:RegisterEffect(e1) +end +function c100101000.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,4,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,4,REASON_COST) +end +function c100101000.filter(c,e,tp,m) + return bit.band(c:GetType(),0x81)==0x81 and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) + and m:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) +end +function c100101000.matfilter(c) + return c:IsType(TYPE_NORMAL) and c:IsAbleToGrave() +end +function c100101000.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + local mg=Duel.GetMatchingGroup(c100101000.matfilter,tp,LOCATION_DECK,0,nil) + return Duel.IsExistingMatchingCard(c100101000.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100101000.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local mg=Duel.GetMatchingGroup(c100101000.matfilter,tp,LOCATION_DECK,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c100101000.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) + tc:SetMaterial(mat) + Duel.SendtoGrave(mat,REASON_EFFECT+REASON_MATERIAL+REASON_RITUAL) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c100101001.lua b/script/c100101001.lua new file mode 100644 index 00000000..c3cdf356 --- /dev/null +++ b/script/c100101001.lua @@ -0,0 +1,92 @@ +--Sp-宣告者の預言 +function c100101001.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100101001.cost) + e1:SetTarget(c100101001.target) + e1:SetOperation(c100101001.activate) + c:RegisterEffect(e1) + --salvage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetDescription(aux.Stringid(100101001,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(100101001) + e2:SetCost(c100101001.thcost) + e2:SetTarget(c100101001.thtg) + e2:SetOperation(c100101001.thop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +c100101001.fit_monster={44665365} +function c100101001.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,2,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,2,REASON_COST) +end +function c100101001.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=44665365 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) then return false end + if m:IsContains(c) then + m:RemoveCard(c) + result=m:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) + m:AddCard(c) + else + result=m:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) + end + return result +end +function c100101001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c100101001.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100101001.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c100101001.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + e:SetLabelObject(tc) + Duel.RaiseSingleEvent(e:GetHandler(),100101001,e,0,tp,tp,0) + end +end +function c100101001.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsAbleToRemove() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100101001.thfilter(c) + return c:IsLocation(LOCATION_GRAVE) and c:IsAbleToHand() +end +function c100101001.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetLabelObject():GetLabelObject() + local mat=tc:GetMaterial() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and mat:IsContains(chkc) end + if chk==0 then return mat:IsExists(c100101001.thfilter,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=mat:FilterSelect(tp,c100101001.thfilter,1,1,nil) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c100101001.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c100101002.lua b/script/c100101002.lua new file mode 100644 index 00000000..0b336f82 --- /dev/null +++ b/script/c100101002.lua @@ -0,0 +1,9 @@ +--Sp-大地讃頌 +function c100101002.initial_effect(c) + aux.AddRitualProcEqual(c,c100101002.ritual_filter) +end +function c100101002.ritual_filter(c) + local tc=Duel.GetFieldCard(Duel.GetTurnPlayer(),LOCATION_SZONE,5) + return c:IsType(TYPE_RITUAL) and c:IsAttribute(ATTRIBUTE_EARTH) + and tc and tc:GetCounter(0x91)>1 +end diff --git a/script/c100101003.lua b/script/c100101003.lua new file mode 100644 index 00000000..3857ac00 --- /dev/null +++ b/script/c100101003.lua @@ -0,0 +1,9 @@ +--Sp-奈落との契約 +function c100101003.initial_effect(c) + aux.AddRitualProcEqual(c,c100101003.ritual_filter) +end +function c100101003.ritual_filter(c) + local tc=Duel.GetFieldCard(Duel.GetTurnPlayer(),LOCATION_SZONE,5) + return c:IsType(TYPE_RITUAL) and c:IsAttribute(ATTRIBUTE_DARK) + and tc and tc:GetCounter(0x91)>1 +end diff --git a/script/c100200124.lua b/script/c100200124.lua new file mode 100644 index 00000000..8e59a7c5 --- /dev/null +++ b/script/c100200124.lua @@ -0,0 +1,60 @@ +--捕食植物ドラゴスタペリア +--Predaplant Dragostapelia +--Script by dest +function c100200124.initial_effect(c) + --fusion material + c:EnableReviveLimit() + if Card.IsFusionAttribute then + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsType,TYPE_FUSION),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_DARK),true) + else + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsType,TYPE_FUSION),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),true) + end + --add counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100200124,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c100200124.target) + e1:SetOperation(c100200124.operation) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c100200124.discon) + e2:SetOperation(c100200124.disop) + c:RegisterEffect(e2) +end +function c100200124.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsCanAddCounter(0x1041,1) end + if chk==0 then return Duel.IsExistingTarget(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,nil,0x1041,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,1,nil,0x1041,1) +end +function c100200124.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:AddCounter(0x1041,1) and tc:GetLevel()>1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c100200124.lvcon) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end +function c100200124.lvcon(e) + return e:GetHandler():GetCounter(0x1041)>0 +end +function c100200124.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return re:IsActiveType(TYPE_MONSTER) and re:GetHandler():GetCounter(0x1041)>0 and rp==1-tp +end +function c100200124.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end \ No newline at end of file diff --git a/script/c100200125.lua b/script/c100200125.lua new file mode 100644 index 00000000..0d28ccec --- /dev/null +++ b/script/c100200125.lua @@ -0,0 +1,104 @@ +--破壊竜ガンドラ-ギガ・レイズ +--Gandora Giga Rays the Dragon of Destruction +--Scripted by Eerie Code +function c100200125.initial_effect(c) + c:EnableReviveLimit() + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(c100200125.hspcon) + e1:SetOperation(c100200125.hspop) + c:RegisterEffect(e1) + --atk gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetValue(c100200125.value) + c:RegisterEffect(e2) + --variable effect + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100200125,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c100200125.cost) + e3:SetTarget(c100200125.target) + e3:SetOperation(c100200125.operation) + c:RegisterEffect(e3) +end +function c100200125.hspfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c100200125.hspcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local num=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetMatchingGroup(c100200125.hspfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,c) + return g:GetCount()>=2 and num>=0 and (num>0 or g:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0) +end +function c100200125.hspop(e,tp,eg,ep,ev,re,r,rp,c) + local tp=c:GetControler() + local num=Duel.GetLocationCount(tp,LOCATION_MZONE) + if num<0 then return end + local hc=2 + local g=Duel.GetMatchingGroup(c100200125.hspfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,c) + local sg=Group.CreateGroup() + if num==0 then + local sg1=g:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE) + sg:Merge(sg1) + g:RemoveCard(sg1:GetFirst()) + hc=1 + end + local sg2=g:Select(tp,hc,hc,nil) + sg:Merge(sg2) + Duel.SendtoGrave(sg,REASON_COST) +end +function c100200125.value(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_REMOVED,LOCATION_REMOVED)*300 +end +function c100200125.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c100200125.filter(c) + return c:IsType(TYPE_MONSTER) and (c:IsSetCard(0x1fa) or c:IsCode(64681432,71525232)) +end +function c100200125.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local gc=Duel.GetMatchingGroup(c100200125.filter,tp,LOCATION_GRAVE,0,nil):GetClassCount(Card.GetCode) + if chk==0 then + if gc==0 then return false end + if gc==1 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + if gc==2 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,1,c) + end + if gc==1 then + e:SetCategory(CATEGORY_DESTROY) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + else + e:SetCategory(CATEGORY_REMOVE) + local loc=LOCATION_ONFIELD + if gc>2 then loc=LOCATION_ONFIELD+LOCATION_GRAVE end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,loc,loc,c) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) + end +end +function c100200125.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local gc=Duel.GetMatchingGroup(c100200125.filter,tp,LOCATION_GRAVE,0,nil):GetClassCount(Card.GetCode) + if gc==1 then + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.Destroy(g,REASON_EFFECT) + else + local loc=LOCATION_ONFIELD + if gc>2 then loc=LOCATION_ONFIELD+LOCATION_GRAVE end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,loc,loc,c) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100213001.lua b/script/c100213001.lua new file mode 100644 index 00000000..d5772813 --- /dev/null +++ b/script/c100213001.lua @@ -0,0 +1,76 @@ +--ディアバウンド・カーネル +--Diabound Kernel +--Scripted by Eerie Code +function c100213001.initial_effect(c) + --Increase ATK + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100213001,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c100213001.atkup) + c:RegisterEffect(e1) + --Decrease ATK + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100213001,1)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,100213001) + e2:SetTarget(c100213001.atktg) + e2:SetOperation(c100213001.atkop) + c:RegisterEffect(e2) +end +function c100213001.atkup(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c100213001.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return e:GetHandler():IsAbleToRemove() and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c100213001.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=c:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.BreakEffect() + if Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)==0 then return end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetLabel(Duel.GetTurnCount()) + e2:SetLabelObject(c) + e2:SetCondition(c100213001.retcon) + e2:SetOperation(c100213001.retop) + if Duel.GetCurrentPhase()==PHASE_STANDBY then + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,2) + else + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY) + end + Duel.RegisterEffect(e2,tp) + end +end +function c100213001.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()>e:GetLabel() +end +function c100213001.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c100213006.lua b/script/c100213006.lua new file mode 100644 index 00000000..9f5a1d32 --- /dev/null +++ b/script/c100213006.lua @@ -0,0 +1,61 @@ +--スカイスクレイパー・シュート +--Skydive Scorcher +--Scripted by Eerie Code +function c100213006.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c100213006.target) + e1:SetOperation(c100213006.activate) + c:RegisterEffect(e1) +end +function c100213006.filter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x3008) and c:IsType(TYPE_FUSION) + and Duel.IsExistingMatchingCard(c100213006.desfilter,tp,0,LOCATION_MZONE,1,nil,c:GetAttack()) +end +function c100213006.desfilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c100213006.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100213006.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c100213006.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tg=Duel.SelectTarget(tp,c100213006.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + local atk=tg:GetFirst():GetAttack() + local g=Duel.GetMatchingGroup(c100213006.desfilter,tp,0,LOCATION_MZONE,nil,atk) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetTargetPlayer(1-tp) + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local dam=0 + if fc and c100213006.ffilter(fc) then + dam=g:GetSum(Card.GetBaseAttack) + else + g,dam=g:GetMaxGroup(Card.GetBaseAttack) + end + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,1,1-tp,dam) +end +function c100213006.ffilter(c) + return c:IsFaceup() and (c:IsSetCard(0x1f5) or c:IsCode(63035430,47596607)) +end +function c100213006.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetMatchingGroup(c100213006.desfilter,tp,0,LOCATION_MZONE,nil,tc:GetAttack()) + if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)>0 then + local og=Duel.GetOperatedGroup():Filter(Card.IsLocation,nil,LOCATION_GRAVE) + if og:GetCount()==0 then return end + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local dam=0 + if fc and c100213006.ffilter(fc) then + dam=og:GetSum(Card.GetBaseAttack) + else + g,dam=og:GetMaxGroup(Card.GetBaseAttack) + end + Duel.Damage(p,dam,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100213007.lua b/script/c100213007.lua new file mode 100644 index 00000000..c583bc8b --- /dev/null +++ b/script/c100213007.lua @@ -0,0 +1,71 @@ +--暗黒の召喚神 +--Dark Summoning Beast +--Scripted by Eerie Code +function c100213007.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100213007,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,100213007) + e1:SetCost(c100213007.spcost) + e1:SetTarget(c100213007.sptg) + e1:SetOperation(c100213007.spop) + c:RegisterEffect(e1) + --Search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100213007,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c100213007.thcost) + e2:SetTarget(c100213007.thtg) + e2:SetOperation(c100213007.thop) + c:RegisterEffect(e2) +end +function c100213007.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c100213007.spfilter(c,e,tp) + return c:IsCode(6007213,32491822,69890967) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c100213007.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c100213007.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100213007.spop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100213007.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end +function c100213007.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100213007.thfilter(c) + return c:IsCode(6007213,32491822,69890967) and c:IsAbleToHand() +end +function c100213007.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100213007.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100213007.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100213007.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100213008.lua b/script/c100213008.lua new file mode 100644 index 00000000..4b3b3e92 --- /dev/null +++ b/script/c100213008.lua @@ -0,0 +1,58 @@ +--失楽園 +--Fallen Paradise +--Scripted by Eerie Code +function c100213008.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Untargetable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetTarget(c100213008.immtg) + e2:SetValue(aux.tgoval) + e2:SetTargetRange(LOCATION_MZONE,0) + c:RegisterEffect(e2) + --Indes + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(c100213008.tgvalue) + c:RegisterEffect(e3) + --Draw + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DRAW) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCountLimit(1,100213008) + e4:SetCondition(c100213008.drcon) + e4:SetTarget(c100213008.drtg) + e4:SetOperation(c100213008.drop) + c:RegisterEffect(e4) +end +function c100213008.immtg(e,c) + return c:IsCode(6007213,32491822,69890967,43378048) +end +function c100213008.tgvalue(e,re,rp) + return rp~=e:GetHandlerPlayer() +end +function c100213008.drcfilter(c) + return c:IsFaceup() and c:IsCode(6007213,32491822,69890967,43378048) +end +function c100213008.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100213008.drcfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100213008.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100213008.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100213009.lua b/script/c100213009.lua new file mode 100644 index 00000000..704ef792 --- /dev/null +++ b/script/c100213009.lua @@ -0,0 +1,125 @@ +--白のヴェール +--White Veil +--Script by dest +function c100213009.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(c100213009.target) + e1:SetOperation(c100213009.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --Actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c100213009.lmop) + c:RegisterEffect(e3) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c100213009.disop) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100213009,0)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_DESTROYING) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c100213009.descon) + e4:SetTarget(c100213009.destg) + e4:SetOperation(c100213009.desop) + c:RegisterEffect(e4) + --leave + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e5:SetCode(EVENT_LEAVE_FIELD_P) + e5:SetOperation(c100213009.checkop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_LEAVE_FIELD) + e6:SetLabelObject(e5) + e6:SetOperation(c100213009.leave) + c:RegisterEffect(e6) +end +function c100213009.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 c100213009.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 c100213009.lmop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetEquipTarget() + if tc~=Duel.GetAttacker() or tc~=Duel.GetAttackTarget() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c100213009.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c100213009.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c100213009.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetEquipTarget()~=Duel.GetAttacker() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(0,LOCATION_SZONE) + e1:SetTarget(Card.IsFaceup) + c:RegisterEffect(e1) +end +function c100213009.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget()==eg:GetFirst() +end +function c100213009.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c100213009.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100213009.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local sg=Duel.GetMatchingGroup(c100213009.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c100213009.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c100213009.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(sg,REASON_EFFECT) +end +function c100213009.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c100213009.leave(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabelObject():GetLabel()==0 and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_SZONE) and c:IsStatus(STATUS_ACTIVATED) then + Duel.Damage(tp,3000,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100213051.lua b/script/c100213051.lua new file mode 100644 index 00000000..260e47c5 --- /dev/null +++ b/script/c100213051.lua @@ -0,0 +1,111 @@ +--コズミック・ブレイザー・ドラゴン +--Cosmic Blazar Dragon +--Scripted by Eerie Code +function c100213051.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),2) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.synlimit) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100213051,0)) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c100213051.discon) + e2:SetCost(c100213051.cost) + e2:SetTarget(c100213051.distg) + e2:SetOperation(c100213051.disop) + c:RegisterEffect(e2) + --disable spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100213051,1)) + e3:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_SUMMON) + e3:SetCondition(c100213051.dscon) + e3:SetCost(c100213051.cost) + e3:SetTarget(c100213051.dstg) + e3:SetOperation(c100213051.dsop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_FLIP_SUMMON) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_SPSUMMON) + c:RegisterEffect(e5) + --negate attack + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(100213051,2)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EVENT_ATTACK_ANNOUNCE) + e6:SetCountLimit(1) + e6:SetCondition(c100213051.negcon) + e6:SetCost(c100213051.cost) + e6:SetOperation(c100213051.negop) + c:RegisterEffect(e6) +end +function c100213051.discon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) +end +function c100213051.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToRemoveAsCost() end + if Duel.Remove(c,POS_FACEUP,REASON_COST+REASON_TEMPORARY)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(c) + e1:SetCountLimit(1) + e1:SetOperation(c100213051.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c100213051.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c100213051.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c100213051.dscon(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep and Duel.GetCurrentChain()==0 +end +function c100213051.dstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c100213051.dsop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) +end +function c100213051.negcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c100213051.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end +function c100213051.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end \ No newline at end of file diff --git a/script/c100213053.lua b/script/c100213053.lua new file mode 100644 index 00000000..2577b10f --- /dev/null +++ b/script/c100213053.lua @@ -0,0 +1,45 @@ +--シューティング・ソニック +--Cosmic Flare +--Scripted by Eerie Code +--The Tribute replacement has been hardcoded into the 2 "Stardust" monsters +function c100213053.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c100213053.target) + e1:SetOperation(c100213053.activate) + c:RegisterEffect(e1) +end +function c100213053.filter(c) + return c:IsFaceup() and c:IsSetCard(0xa3) and c:IsType(TYPE_SYNCHRO) +end +function c100213053.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100213053.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100213053.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c100213053.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100213053.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + --return to hand + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_START) + e1:SetOwnerPlayer(tp) + e1:SetCondition(c100213053.tdcon) + e1:SetOperation(c100213053.tdop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + end +end +function c100213053.tdcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + return tp==e:GetOwnerPlayer() and tc and tc:IsControler(1-tp) +end +function c100213053.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100213056.lua b/script/c100213056.lua new file mode 100644 index 00000000..16842a8a --- /dev/null +++ b/script/c100213056.lua @@ -0,0 +1,77 @@ +--ムーンバリア +--Light Wing Shield +--Scripted by Eerie Code +function c100213056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_DISABLED) + e1:SetTarget(c100213056.target) + c:RegisterEffect(e1) + --remove overlay replace + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100213056,2)) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_OVERLAY_REMOVE_REPLACE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c100213056.rcon) + e1:SetOperation(c100213056.rop) + c:RegisterEffect(e1) +end +function c100213056.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x107f) +end +function c100213056.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100213056.filter(chkc) end + if chk==0 then return true end + local op=0 + if Duel.IsExistingTarget(c100213056.filter,tp,LOCATION_MZONE,0,1,nil) then + op=Duel.SelectOption(tp,aux.Stringid(100213056,0),aux.Stringid(100213056,1)) + else + op=Duel.SelectOption(tp,aux.Stringid(100213056,0)) + end + if op==0 then + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(c100213056.endop) + else + e:SetCategory(CATEGORY_ATKCHANGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c100213056.filter,tp,LOCATION_MZONE,0,1,1,nil) + e:SetOperation(c100213056.atkop) + end +end +function c100213056.endop(e,tp,eg,ep,ev,re,r,rp) + local turnp=Duel.GetTurnPlayer() + Duel.SkipPhase(turnp,PHASE_MAIN1,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(turnp,PHASE_BATTLE,RESET_PHASE+PHASE_END,1,1) + Duel.SkipPhase(turnp,PHASE_MAIN2,RESET_PHASE+PHASE_END,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,turnp) +end +function c100213056.atkop(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_SET_ATTACK_FINAL) + e1:SetValue(tc:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c100213056.rcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_COST)~=0 and re:IsHasType(0x7e0) + and re:IsActiveType(TYPE_XYZ) and re:GetHandler():IsSetCard(0x107f) + and e:GetHandler():IsAbleToRemoveAsCost() + and ep==e:GetOwnerPlayer() and ev==1 +end +function c100213056.rop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end \ No newline at end of file diff --git a/script/c100213059.lua b/script/c100213059.lua new file mode 100644 index 00000000..e968fd86 --- /dev/null +++ b/script/c100213059.lua @@ -0,0 +1,58 @@ +--螺旋のストライクバースト +--Spiral Flame Strike +--Scripted by Eerie Code +function c100213059.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100213059.target) + c:RegisterEffect(e1) +end +function c100213059.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0x99) +end +function c100213059.thfilter(c) + return c:IsSetCard(0x99) and c:GetLevel()==7 and (c:IsFaceup() or not c:IsLocation(LOCATION_EXTRA)) and c:IsAbleToHand() +end +function c100213059.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) end + local b1=Duel.IsExistingMatchingCard(c100213059.desfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.IsExistingTarget(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) + local b2=Duel.IsExistingMatchingCard(c100213059.thfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,nil) + if chk==0 then return b1 or b2 end + local op=0 + if b1 and b2 then + op=Duel.SelectOption(tp,aux.Stringid(100213059,0),aux.Stringid(100213059,1)) + elseif b1 then + op=Duel.SelectOption(tp,aux.Stringid(100213059,0)) + else + op=Duel.SelectOption(tp,aux.Stringid(100213059,1))+1 + end + if op==0 then + e:SetCategory(CATEGORY_DESTROY) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + e:SetOperation(c100213059.desop) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + else + e:SetCategory(CATEGORY_TOHAND) + e:SetProperty(0) + local g=Duel.GetMatchingGroup(c100213059.thfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,nil) + e:SetOperation(c100213059.thop) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + end +end +function c100213059.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then Duel.Destroy(tc,REASON_EFFECT) end +end +function c100213059.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100213059.thfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100213060.lua b/script/c100213060.lua new file mode 100644 index 00000000..efed5893 --- /dev/null +++ b/script/c100213060.lua @@ -0,0 +1,159 @@ +--エンタメデュエル +--Dueltainment +--Scripted by Eerie Code +function c100213060.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --on special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_FZONE) + e2:SetOperation(c100213060.spop) + c:RegisterEffect(e2) + --battled 5 times + local e3=e2:Clone() + e3:SetCode(EVENT_BATTLED) + e3:SetOperation(c100213060.batop) + c:RegisterEffect(e3) + --on chain 5 + local e4=e2:Clone() + e4:SetCode(EVENT_CHAINING) + e4:SetOperation(c100213060.chainop) + c:RegisterEffect(e4) + --gambled 5 times + local e5=e2:Clone() + e5:SetCode(EVENT_CUSTOM+100213060) + e5:SetOperation(c100213060.gamop) + c:RegisterEffect(e5) + --damage + local e6=e2:Clone() + e6:SetCode(EVENT_DAMAGE) + e6:SetOperation(c100213060.damop) + c:RegisterEffect(e6) + --event counters + if not c100213060.global_flag then + c100213060.global_flag=true + c100213060[0]=0 + c100213060[1]=0 + --Checks effects that make a player toss a coin or throw a dice + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHAINING) + ge1:SetOperation(c100213060.checkop) + Duel.RegisterEffect(ge1,0) + --Checks effects that allow a player to redo a coin toss or dice roll + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_CUSTOM+100213060+100) + ge2:SetOperation(c100213060.checkop2) + Duel.RegisterEffect(ge2,0) + --Counts the number of times a monster has battled + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BATTLE_CONFIRM) + ge3:SetOperation(c100213060.checkop3) + Duel.RegisterEffect(ge3,0) + --Reset at the start of the next Draw Phase + local ge0=Effect.CreateEffect(c) + ge0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge0:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge0:SetOperation(c100213060.clear) + --Duel.RegisterEffect(ge0,0) + end +end +function c100213060.checkop(e,tp,eg,ep,ev,re,r,rp) + local ex1,g1,gc1,dp1,dv1=Duel.GetOperationInfo(0,CATEGORY_DICE) + local ex2,g2,gc2,dp2,dv2=Duel.GetOperationInfo(0,CATEGORY_COIN) + if ex1 then + if dp1==PLAYER_ALL then + c100213060[0]=c100213060[0]+dv1 + c100213060[1]=c100213060[1]+dv1 + else + c100213060[dp1]=c100213060[dp1]+dv1 + end + end + if ex2 then + if dp2==PLAYER_ALL then + c100213060[0]=c100213060[0]+dv2 + c100213060[1]=c100213060[1]+dv2 + else + c100213060[dp2]=c100213060[dp2]+dv2 + end + end + Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+100213060,re,r,rp,0,0) +end +function c100213060.checkop2(e,tp,eg,ep,ev,re,r,rp) + if ep==PLAYER_ALL then + c100213060[0]=c100213060[0]+ev + c100213060[1]=c100213060[1]+ev + else + c100213060[ep]=c100213060[ep]+ev + end + Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+100213060,re,r,rp,0,0) +end +function c100213060.checkop3(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + a:RegisterFlagEffect(100213060,RESET_EVENT+0x1fe0000,0,1) + if d then d:RegisterFlagEffect(100213060,RESET_EVENT+0x1fe0000,0,1) end +end +function c100213060.clear(e,tp,eg,ep,ev,re,r,rp) + c100213060[0]=0 + c100213060[1]=0 +end +--Utility to avoid repeating the same lines of code 5 times +function c100213060.draw_op(e,p,flag) + Duel.Hint(HINT_CARD,0,e:GetHandler():GetCode()) + Duel.Draw(p,2,REASON_EFFECT) + e:GetHandler():RegisterFlagEffect(flag+p,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c100213060.spop(e,tp,eg,ep,ev,re,r,rp) + if not eg then return end + for p=0,1 do + if e:GetHandler():GetFlagEffect(100213060+p)==0 then + if eg:Filter(Card.IsControler,nil,p):GetClassCount(Card.GetLevel)==5 then + c100213060.draw_op(e,p,100213060) + end + end + end +end +function c100213060.batop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local g=nil + if d then g=Group.FromCards(a,d) else g=Group.FromCards(a) end + local tc=g:GetFirst() + while tc do + local p=tc:GetControler() + if tc:GetFlagEffect(100213060)==5 and e:GetHandler():GetFlagEffect(100213160+p)==0 then + c100213060.draw_op(e,p,100213160) + end + tc=g:GetNext() + end +end +function c100213060.chainop(e,tp,eg,ep,ev,re,r,rp) + local ch=Duel.GetCurrentChain() + if ch>=5 and e:GetHandler():GetFlagEffect(100213260+rp)==0 then + c100213060.draw_op(e,rp,100213260) + end +end +function c100213060.gamop(e,tp,eg,ep,ev,re,r,rp) + for p=0,1 do + if e:GetHandler():GetFlagEffect(100213360+p)==0 and c100213060[p]==5 then + c100213060.draw_op(e,p,100213360) + end + end +end +function c100213060.damop(e,tp,eg,ep,ev,re,r,rp) + for p=0,1 do + if (ep==p or ep==PLAYER_ALL) and Duel.GetLP(p)<=500 + and e:GetHandler():GetFlagEffect(100213460+p)==0 then + c100213060.draw_op(e,p,100213460) + end + end +end \ No newline at end of file diff --git a/script/c100213101.lua b/script/c100213101.lua new file mode 100644 index 00000000..1642bfec --- /dev/null +++ b/script/c100213101.lua @@ -0,0 +1,134 @@ +--熱き決闘者たち +--Passionate Duelists +--Scripted by Eerie Code +function c100213101.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100213101,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c100213101.atkcon) + e2:SetTarget(c100213101.atktg) + e2:SetOperation(c100213101.atkop) + c:RegisterEffect(e2) + --prevent set + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e3:SetCode(EFFECT_CANNOT_SSET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c100213101.setcon1) + e3:SetTarget(c100213101.settg) + e3:SetTargetRange(1,0) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetTargetRange(0,1) + e4:SetCondition(c100213101.setcon2) + c:RegisterEffect(e4) + --prevent attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_ATTACK) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e5:SetTarget(c100213101.attg) + c:RegisterEffect(e5) + --add tohand + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(100213101,1)) + e6:SetCategory(CATEGORY_TOHAND) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_PREDRAW) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c100213101.thcon) + e6:SetTarget(c100213101.thtg) + e6:SetOperation(c100213101.thop) + c:RegisterEffect(e6) + --Check for single Set + if not c100213101.global_check then + c100213101.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SSET) + ge1:SetOperation(c100213101.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c100213101.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg and eg:IsExists(Card.IsPreviousLocation,1,nil,LOCATION_HAND) then + Duel.RegisterFlagEffect(rp,100213101,RESET_PHASE+PHASE_END,0,1) + end +end +function c100213101.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100213101.atkfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c100213101.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(1-tp) and c100213101.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100213101.atkfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100213101.atkfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100213101.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if Duel.NegateAttack() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c100213101.setcon1(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),100213101)>0 +end +function c100213101.setcon2(e) + return Duel.GetFlagEffect(1-e:GetHandlerPlayer(),100213101)>0 +end +function c100213101.settg(e,c) + return c:IsLocation(LOCATION_HAND) +end +function c100213101.attg(e,c) + return c:IsStatus(STATUS_SPSUMMON_TURN) and c:GetSummonLocation()==LOCATION_EXTRA +end +function c100213101.thcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c100213101.thfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c100213101.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100213101.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c100213101.thop(e,tp,eg,ep,ev,re,r,rp) + _replace_count=_replace_count+1 + if _replace_count>_replace_max or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100213101.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100214001.lua b/script/c100214001.lua new file mode 100644 index 00000000..0b5a710d --- /dev/null +++ b/script/c100214001.lua @@ -0,0 +1,70 @@ +--EMバラード +--Performapal Ballad +--Scripted by Eerie Code +function c100214001.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCondition(c100214001.atkcon1) + e1:SetOperation(c100214001.atkop1) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLED) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c100214001.atkcon2) + e2:SetTarget(c100214001.atktg2) + e2:SetOperation(c100214001.atkop2) + c:RegisterEffect(e2) +end +function c100214001.atkcon1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if not bc then return false end + if tc:IsControler(1-tp) then bc,tc=tc,bc end + e:SetLabelObject(bc) + return bc:IsFaceup() and tc:IsSetCard(0x9f) +end +function c100214001.atkop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local bc=e:GetLabelObject() + if bc:IsRelateToBattle() and bc:IsFaceup() and bc:IsControler(1-tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-600) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + end +end +function c100214001.atkcon2(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(tp) and a:IsSetCard(0x9f) +end +function c100214001.atktg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c100214001.atkop2(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local tc=Duel.GetFirstTarget() + if a:IsFaceup() and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=math.max(0,a:GetAttack()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c100214002.lua b/script/c100214002.lua new file mode 100644 index 00000000..839bfe49 --- /dev/null +++ b/script/c100214002.lua @@ -0,0 +1,70 @@ +--EMバラクーダ +--Performapal Barracuda +--Scripted by Eerie Code +function c100214002.initial_effect(c) + aux.EnablePendulumAttribute(c) + --reduce atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100214002,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCondition(c100214002.atkcon1) + e1:SetOperation(c100214002.atkop1) + c:RegisterEffect(e1) + --increase atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100214002,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,100214002) + e2:SetTarget(c100214002.atktg2) + e2:SetOperation(c100214002.atkop2) + c:RegisterEffect(e2) +end +function c100214002.atkcon1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if not bc then return false end + if tc:IsControler(1-tp) then bc,tc=tc,bc end + e:SetLabelObject(bc) + return bc:IsFaceup() and tc:IsFaceup() and tc:IsSetCard(0x9f) and bc:GetBaseAttack()~=bc:GetAttack() +end +function c100214002.atkop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local bc=e:GetLabelObject() + if bc:IsRelateToBattle() and bc:IsFaceup() and bc:IsControler(1-tp) then + local diff=math.abs(bc:GetBaseAttack()-bc:GetAttack()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-diff) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + end +end +function c100214002.atkfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) and c:GetBaseAttack()~=c:GetAttack() +end +function c100214002.atktg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100214002.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100214002.atkfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SelectTarget(tp,c100214002.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100214002.atkop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local diff=math.abs(tc:GetBaseAttack()-tc:GetAttack()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(diff) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c100214004.lua b/script/c100214004.lua new file mode 100644 index 00000000..f3e3908f --- /dev/null +++ b/script/c100214004.lua @@ -0,0 +1,102 @@ +--ペンデュラム・フュージョン +--Pendulum Fusion +--Scripted by Eerie Code +--Credits to MichaelLawrenceDee for the updated Card.IsCanBeFusionMaterial +function c100214004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,100214004+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c100214004.target) + e1:SetOperation(c100214004.activate) + c:RegisterEffect(e1) + if not c100214004.global_check then + c100214004.global_check=true + local f=Card.IsCanBeFusionMaterial + Card.IsCanBeFusionMaterial=function(c,fc,ismon) + if (c:GetSequence()==6 or c:GetSequence()==7) and c:IsLocation(LOCATION_SZONE) then + return f(c,fc,true) + end + if c:IsCode(80604091) then return f(c,fc,true) end + return f(c,fc,ismon) + end + local f2=Card.IsType + Card.IsType=function(c,tp) + if (c:GetSequence()==6 or c:GetSequence()==7) and c:IsLocation(LOCATION_SZONE) then + local opt=bit.bor(c:GetOriginalType(),TYPE_SPELL) + return bit.band(tp,opt)~=0 + end + return f2(c,tp) + end + end +end +function c100214004.filter0(c,e) + local seq=c:GetSequence() + return (seq==6 or seq==7) and c:IsCanBeFusionMaterial(nil,true) and not c:IsImmuneToEffect(e) +end +function c100214004.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c100214004.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c100214004.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) + if Duel.GetFieldCard(tp,LOCATION_SZONE,6) and Duel.GetFieldCard(tp,LOCATION_SZONE,7) then + mg1:Merge(Duel.GetMatchingGroup(c100214004.filter0,tp,LOCATION_SZONE,0,nil,e)) + end + local res=Duel.IsExistingMatchingCard(c100214004.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c100214004.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100214004.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c100214004.filter1,tp,LOCATION_MZONE,0,nil,e) + if Duel.GetFieldCard(tp,LOCATION_SZONE,6) and Duel.GetFieldCard(tp,LOCATION_SZONE,7) then + mg1:Merge(Duel.GetMatchingGroup(c100214004.filter0,tp,LOCATION_SZONE,0,nil,e)) + end + local sg1=Duel.GetMatchingGroup(c100214004.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c100214004.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end \ No newline at end of file diff --git a/script/c100214005.lua b/script/c100214005.lua new file mode 100644 index 00000000..37673e10 --- /dev/null +++ b/script/c100214005.lua @@ -0,0 +1,58 @@ +--デストーイ・デアデビル +--Frightfur Daredevil +--Scripted by Eerie Code +function c100214005.initial_effect(c) + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xc3),aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),true) + --damage after destroying + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100214005,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(aux.bdocon) + e1:SetTarget(c100214005.damtg1) + e1:SetOperation(c100214005.damop1) + c:RegisterEffect(e1) + --damage after destruction + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100214005,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c100214005.damcon2) + e2:SetTarget(c100214005.damtg2) + e2:SetOperation(c100214005.damop2) + c:RegisterEffect(e2) +end +function c100214005.damtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c100214005.damop1(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c100214005.damcon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (c:IsReason(REASON_BATTLE) or (c:GetReasonPlayer()~=tp and c:IsReason(REASON_EFFECT))) + and c:IsPreviousPosition(POS_FACEUP) +end +function c100214005.damfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0xad) +end +function c100214005.damtg2(e,tp,eg,ep,ev,re,r,rp,chk) + local gc=Duel.GetMatchingGroupCount(c100214005.damfilter,tp,LOCATION_GRAVE,0,nil) + if chk==0 then return gc>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,gc*500) +end +function c100214005.damop2(e,tp,eg,ep,ev,re,r,rp) + local gc=Duel.GetMatchingGroupCount(c100214005.damfilter,tp,LOCATION_GRAVE,0,nil) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,gc*500,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100214007.lua b/script/c100214007.lua new file mode 100644 index 00000000..434dc28a --- /dev/null +++ b/script/c100214007.lua @@ -0,0 +1,59 @@ +--R・R・R +--Raidraptor Replica +--Scripted by Eerie Code +function c100214007.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c100214007.target) + e1:SetOperation(c100214007.activate) + c:RegisterEffect(e1) +end +function c100214007.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0xba) + and Duel.IsExistingMatchingCard(c100214007.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) +end +function c100214007.spfilter(c,e,tp,cd) + return c:IsCode(cd) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100214007.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:IsCode(e:GetLabel()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c100214007.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100214007.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + e:SetLabel(g:GetFirst():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100214007.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local code=tc:GetCode() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100214007.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,code) + local sc=g:GetFirst() + if sc and Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetLabelObject(sc) + e1:SetCondition(c100214007.imcon) + e1:SetValue(aux.imval1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetValue(aux.tgoval) + tc:RegisterEffect(e2) + end + end +end +function c100214007.imcon(e) + local tp=e:GetHandlerPlayer() + local sc=e:GetLabelObject() + return sc and sc:IsFaceup() and sc:IsLocation(LOCATION_MZONE) + and sc:IsControler(tp) and bit.band(sc:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end \ No newline at end of file diff --git a/script/c100214008.lua b/script/c100214008.lua new file mode 100644 index 00000000..34c90f29 --- /dev/null +++ b/script/c100214008.lua @@ -0,0 +1,77 @@ +--連鎖召喚 +--Chain Summon +--Script by mercury233 +function c100214008.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100214008.target) + e1:SetOperation(c100214008.activate) + c:RegisterEffect(e1) +end +function c100214008.cfilter(c) + return c:IsType(TYPE_XYZ) and c:IsFaceup() +end +function c100214008.cfilter2(c,r) + return c:IsType(TYPE_XYZ) and c:GetRank()==r and c:IsFaceup() +end +function c100214008.filter(c,e,tp,r) + return c:IsType(TYPE_XYZ) and c:GetRank()=2 and rg:IsExists(Card.IsCanBeEffectTarget,1,nil,e) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100214008.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,r) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local sg=rg:FilterSelect(tp,Card.IsCanBeEffectTarget,1,1,nil,e) + Duel.SetTargetCard(sg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100214008.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local r=tc:GetRank() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100214008.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,r) + local tc=g:GetFirst() + if not tc then return end + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + tc:RegisterFlagEffect(100214008,RESET_EVENT+0x1fe0000,0,1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetLabelObject(tc) + e2:SetCondition(c100214008.retcon) + e2:SetOperation(c100214008.retop) + Duel.RegisterEffect(e2,tp) + end +end +function c100214008.retcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(100214008)~=0 then + return true + else + e:Reset() + return false + end +end +function c100214008.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100214009.lua b/script/c100214009.lua new file mode 100644 index 00000000..51f0bf92 --- /dev/null +++ b/script/c100214009.lua @@ -0,0 +1,29 @@ +--ONiサンダー +--Brohunder +--Script by nekrozar +function c100214009.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100214009,0)) + e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c100214009.thtg) + e1:SetOperation(c100214009.thop) + c:RegisterEffect(e1) +end +function c100214009.thfilter(c) + return c:IsRace(RACE_THUNDER) and c:IsAttribute(ATTRIBUTE_LIGHT) and c:GetLevel()==4 and not c:IsCode(100214009) and c:IsAbleToHand() +end +function c100214009.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100214009.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100214009.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100214009.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100214010.lua b/script/c100214010.lua new file mode 100644 index 00000000..fd91f2da --- /dev/null +++ b/script/c100214010.lua @@ -0,0 +1,64 @@ +--No.28 タイタニック・モス +--Number 28: Titanic Moth +--Script by mercury233 +function c100214010.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,2) + c:EnableReviveLimit() + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetCondition(c100214010.dircon) + c:RegisterEffect(e1) + --damage reduce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c100214010.rdcon) + e2:SetOperation(c100214010.rdop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetCondition(c100214010.damcon) + e3:SetCost(c100214010.damcost) + e3:SetTarget(c100214010.damtg) + e3:SetOperation(c100214010.damop) + c:RegisterEffect(e3) +end +c100214010.xyz_number=28 +function c100214010.dircon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)<=1 +end +function c100214010.rdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep~=tp and Duel.GetAttackTarget()==nil + and c:GetEffectCount(EFFECT_DIRECT_ATTACK)<2 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c100214010.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end +function c100214010.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c100214010.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100214010.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + if chk==0 then return ct>0 end + Duel.SetTargetPlayer(1-tp) + local dam=ct*500 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c100214010.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetFieldGroupCount(p,LOCATION_HAND,0)*500 + Duel.Damage(p,dam,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100214013.lua b/script/c100214013.lua new file mode 100644 index 00000000..dc554fd4 --- /dev/null +++ b/script/c100214013.lua @@ -0,0 +1,65 @@ +--風来王 ワイルド・ワインド +--Wandering King Wild Wind +--Script by mercury233 +function c100214013.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100214013.spcon) + e1:SetOperation(c100214013.spop) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(aux.exccon) + e2:SetCost(c100214013.thcost) + e2:SetTarget(c100214013.thtg) + e2:SetOperation(c100214013.thop) + c:RegisterEffect(e2) +end +function c100214013.filter(c) + return c:IsFaceup() and c:IsAttackBelow(1500) and c:IsRace(RACE_FIEND) and c:IsType(TYPE_TUNER) +end +function c100214013.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100214013.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c100214013.spop(e,tp,eg,ep,ev,re,r,rp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c100214013.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100214013.splimit(e,c) + return not c:IsType(TYPE_SYNCHRO) and c:IsLocation(LOCATION_EXTRA) +end +function c100214013.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100214013.thfilter(c) + return c:IsAttackBelow(1500) and c:IsRace(RACE_FIEND) and c:IsType(TYPE_TUNER) and c:IsAbleToHand() +end +function c100214013.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100214013.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100214013.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100214013.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100214014.lua b/script/c100214014.lua new file mode 100644 index 00000000..9bac8aff --- /dev/null +++ b/script/c100214014.lua @@ -0,0 +1,83 @@ +--No.70 デッドリー・シン +--Number 70: Deadly Sin +--Script by nekrozar +function c100214014.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100214014,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c100214014.rmcost) + e1:SetTarget(c100214014.rmtg) + e1:SetOperation(c100214014.rmop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100214014,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c100214014.atkcon) + e2:SetOperation(c100214014.atkop) + c:RegisterEffect(e2) +end +c100214014.xyz_number=70 +function c100214014.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100214014.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c100214014.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + tc:RegisterFlagEffect(100214014,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c100214014.retcon) + e1:SetOperation(c100214014.retop) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c100214014.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and e:GetLabelObject():GetFlagEffect(100214014)~=0 +end +function c100214014.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end +function c100214014.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler() +end +function c100214014.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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_RANK) + e2:SetValue(3) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c100214015.lua b/script/c100214015.lua new file mode 100644 index 00000000..f8466323 --- /dev/null +++ b/script/c100214015.lua @@ -0,0 +1,71 @@ +--天輪の双星道士 +--Celestial Double Star Shaman +--Script by nekrozar +function c100214015.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.NonTuner(nil)) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100214015,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCountLimit(1,100214015) + e1:SetCondition(c100214015.spcon) + e1:SetTarget(c100214015.sptg) + e1:SetOperation(c100214015.spop) + c:RegisterEffect(e1) +end +function c100214015.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c100214015.spfilter(c,e,tp) + return c:GetLevel()==2 and not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100214015.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100214015.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c100214015.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=math.min(Duel.GetLocationCount(tp,LOCATION_MZONE),4) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<=0 then return end + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100214015.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + if g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) and Duel.IsChainDisablable(0) then + Duel.NegateEffect(0) + return + end + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c100214015.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100214015.splimit(e,c) + return not c:IsType(TYPE_SYNCHRO) and c:IsLocation(LOCATION_EXTRA) +end \ No newline at end of file diff --git a/script/c100214016.lua b/script/c100214016.lua new file mode 100644 index 00000000..cfe7bc5e --- /dev/null +++ b/script/c100214016.lua @@ -0,0 +1,36 @@ +--HEROの遺産 +--Legacy of a HERO +--Scripted by Eerie Code +--requires alterations to old scripts +function c100214016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1,100214016+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c100214016.cost) + e1:SetTarget(c100214016.target) + e1:SetOperation(c100214016.activate) + c:RegisterEffect(e1) +end +function c100214016.cfilter(c) + return aux.IsMaterialListSetCard(c,0x8) and c:IsType(TYPE_FUSION) and c:IsAbleToExtraAsCost() +end +function c100214016.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100214016.cfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c100214016.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c100214016.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,3) +end +function c100214016.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c100214017.lua b/script/c100214017.lua new file mode 100644 index 00000000..4a9f07ab --- /dev/null +++ b/script/c100214017.lua @@ -0,0 +1,66 @@ +--牛頭鬼 +--Gozuki +--Script by nekrozar +function c100214017.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100214017,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,100214017) + e1:SetTarget(c100214017.tgtg) + e1:SetOperation(c100214017.tgop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100214017,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,100214117) + e2:SetCost(c100214017.spcost) + e2:SetTarget(c100214017.sptg) + e2:SetOperation(c100214017.spop) + c:RegisterEffect(e2) +end +function c100214017.tgfilter(c) + return c:IsRace(RACE_ZOMBIE) and c:IsAbleToGrave() +end +function c100214017.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100214017.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c100214017.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100214017.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c100214017.cfilter(c) + return c:IsRace(RACE_ZOMBIE) and not c:IsCode(100214017) and c:IsAbleToRemoveAsCost() +end +function c100214017.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100214017.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c100214017.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c100214017.spfilter(c,e,tp) + return c:IsRace(RACE_ZOMBIE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100214017.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100214017.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100214017.spop(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,c100214017.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 \ No newline at end of file diff --git a/script/c100214018.lua b/script/c100214018.lua new file mode 100644 index 00000000..ed1777a0 --- /dev/null +++ b/script/c100214018.lua @@ -0,0 +1,68 @@ +--V・HEROヴァイオン +--Vision HERO Vyon +--Scripted by Eerie Code +function c100214018.initial_effect(c) + --Tograve + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100214018,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,100214018) + e1:SetTarget(c100214018.tgtg) + e1:SetOperation(c100214018.tgop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --Search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100214018,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c100214018.thcost) + e3:SetTarget(c100214018.thtg) + e3:SetOperation(c100214018.thop) + c:RegisterEffect(e3) +end +function c100214018.tgfilter(c) + return c:IsSetCard(0x8) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c100214018.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100214018.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c100214018.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100214018.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c100214018.thcfilter(c) + return c:IsSetCard(0x8) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c100214018.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100214018.thcfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c100214018.thcfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c100214018.thfilter(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c100214018.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100214018.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100214018.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100214018.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100214020.lua b/script/c100214020.lua new file mode 100644 index 00000000..432c7fc1 --- /dev/null +++ b/script/c100214020.lua @@ -0,0 +1,44 @@ +--堕天使降臨 +--Darklord Descent +--Script by mercury233 +function c100214020.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100214020.cost) + e1:SetTarget(c100214020.target) + e1:SetOperation(c100214020.activate) + c:RegisterEffect(e1) +end +function c100214020.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c100214020.cfilter(c,e,tp) + return c:IsFaceup() and c:GetLevel()>0 + and Duel.IsExistingMatchingCard(c100214020.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,c:GetLevel()) +end +function c100214020.spfilter(c,e,tp,lv) + return c:IsSetCard(0xef) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100214020.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100214020.cfilter,tp,0,LOCATION_MZONE,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c100214020.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=math.min(Duel.GetLocationCount(tp,LOCATION_MZONE),2) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g=Duel.SelectMatchingCard(tp,c100214020.cfilter,tp,0,LOCATION_MZONE,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.HintSelection(g) + local lv=g:GetFirst():GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c100214020.spfilter,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp,lv) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end \ No newline at end of file diff --git a/script/c100214100.lua b/script/c100214100.lua new file mode 100644 index 00000000..c5c5db33 --- /dev/null +++ b/script/c100214100.lua @@ -0,0 +1,33 @@ +--堕天使ユコバック +--Darklord Ukoback +--Script by nekrozar +function c100214100.initial_effect(c) + --tograve + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100214100,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCountLimit(1,100214100) + e1:SetTarget(c100214100.tgtg) + e1:SetOperation(c100214100.tgop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c100214100.tgfilter(c) + return c:IsSetCard(0xef) and c:IsAbleToGrave() +end +function c100214100.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100214100.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c100214100.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100214100.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100214101.lua b/script/c100214101.lua new file mode 100644 index 00000000..8a1aba1e --- /dev/null +++ b/script/c100214101.lua @@ -0,0 +1,64 @@ +--デストーイ・リニッチ +--Frightfur Reknit +--Script by nekrozar +function c100214101.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100214101,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100214101.target) + e1:SetOperation(c100214101.activate) + c:RegisterEffect(e1) + --tograve + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100214101,1)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(aux.exccon) + e2:SetCost(c100214101.tgcost) + e2:SetTarget(c100214101.tgtg) + e2:SetOperation(c100214101.tgop) + c:RegisterEffect(e2) +end +function c100214101.filter(c,e,tp) + return c:IsSetCard(0xad) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100214101.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c100214101.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100214101.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100214101.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100214101.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c100214101.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100214101.tgfilter(c) + return c:IsFaceup() and (c:IsSetCard(0xa9) or c:IsSetCard(0xad)) and c:IsType(TYPE_MONSTER) +end +function c100214101.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c100214101.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100214101.tgfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=Duel.SelectTarget(tp,c100214101.tgfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,sg,1,0,0) +end +function c100214101.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) + end +end \ No newline at end of file diff --git a/script/c100214102.lua b/script/c100214102.lua new file mode 100644 index 00000000..d08d8b8f --- /dev/null +++ b/script/c100214102.lua @@ -0,0 +1,62 @@ +--ネクロイド・シンクロ +--Necroid Synchro +--Script by nekrozar +function c100214102.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100214102.target) + e1:SetOperation(c100214102.activate) + c:RegisterEffect(e1) +end +function c100214102.filter1(c,e,tp) + local lv=c:GetLevel() + return c:IsSetCard(0xa3) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,false,false) + and Duel.IsExistingMatchingCard(c100214102.filter2,tp,LOCATION_GRAVE,0,1,nil,tp,lv) +end +function c100214102.filter2(c,tp,lv) + local rlv=lv-c:GetLevel() + local rg=Duel.GetMatchingGroup(c100214102.filter3,tp,LOCATION_GRAVE,0,c) + return rlv>0 and c:IsType(TYPE_TUNER) and c:IsAbleToRemove() + and rg:CheckWithSumEqual(Card.GetLevel,rlv,1,2) +end +function c100214102.filter3(c) + return c:GetLevel()>0 and not c:IsType(TYPE_TUNER) and c:IsAbleToRemove() +end +function c100214102.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100214102.filter1,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100214102.activate(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 g1=Duel.SelectMatchingCard(tp,c100214102.filter1,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g1:GetFirst() + if tc then + local lv=tc:GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c100214102.filter2,tp,LOCATION_GRAVE,0,1,1,nil,tp,lv) + local rlv=lv-g2:GetFirst():GetLevel() + local rg=Duel.GetMatchingGroup(c100214102.filter3,tp,LOCATION_GRAVE,0,g2:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g3=rg:SelectWithSumEqual(tp,Card.GetLevel,rlv,1,2) + g2:Merge(g3) + Duel.Remove(g2,POS_FACEUP,REASON_EFFECT) + Duel.SpecialSummonStep(tc,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc:CompleteProcedure() + Duel.SpecialSummonComplete() + end +end \ No newline at end of file diff --git a/script/c10026986.lua b/script/c10026986.lua index 0a9e4abf..31b75727 100644 --- a/script/c10026986.lua +++ b/script/c10026986.lua @@ -25,11 +25,11 @@ end function c10026986.cfilter(c,tp) return c:IsSetCard(0x3e) and c:IsRace(RACE_REPTILE) and (c:IsControler(tp) or c:IsFaceup()) end -function c10026986.otcon(e,c) +function c10026986.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c10026986.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c10026986.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c10026986.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c10032958.lua b/script/c10032958.lua index f62beff3..9318ecf9 100644 --- a/script/c10032958.lua +++ b/script/c10032958.lua @@ -1,89 +1,87 @@ ---神竜-エクセリオン -function c10032958.initial_effect(c) - --to defense - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(10032958,0)) - e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c10032958.effop) - c:RegisterEffect(e1) -end -function c10032958.effop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_GRAVE,0,nil,10032958) - if ct>3 then ct=3 end - if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then - local opt1=Duel.SelectOption(tp,aux.Stringid(10032958,1),aux.Stringid(10032958,2),aux.Stringid(10032958,3)) - local opt2=0 - local opt3=0 - c10032958.reg(c,opt1) - if ct<2 then return end - if opt1==0 then opt2=Duel.SelectOption(tp,aux.Stringid(10032958,2),aux.Stringid(10032958,3))+1 - elseif opt1==2 then opt2=Duel.SelectOption(tp,aux.Stringid(10032958,1),aux.Stringid(10032958,2)) - else - opt2=Duel.SelectOption(tp,aux.Stringid(10032958,1),aux.Stringid(10032958,3)) - if opt2==1 then opt2=2 end - end - c10032958.reg(c,opt2) - if ct<3 then return end - if opt1~=0 and opt2~=0 then opt3=Duel.SelectOption(tp,aux.Stringid(10032958,1)) - elseif opt1~=1 and opt2~=1 then opt3=Duel.SelectOption(tp,aux.Stringid(10032958,2))+1 - else opt3=Duel.SelectOption(tp,aux.Stringid(10032958,3))+2 end - c10032958.reg(c,opt3) - end -end -function c10032958.reg(c,opt) - if opt==0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - elseif opt==1 then - --chain attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(10032958,2)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLED) - e1:SetCondition(c10032958.atcon) - e1:SetOperation(c10032958.atop) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - else - --damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(10032958,3)) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(aux.bdgcon) - e1:SetTarget(c10032958.damtg) - e1:SetOperation(c10032958.damop) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end -function c10032958.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) -end -function c10032958.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end -function c10032958.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - local bc=c:GetBattleTarget() - local dam=bc:GetAttack() - if dam<0 then dam=0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c10032958.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--神竜-エクセリオン +function c10032958.initial_effect(c) + --to defense + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10032958,0)) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c10032958.effop) + c:RegisterEffect(e1) +end +function c10032958.effop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_GRAVE,0,nil,10032958) + if ct>3 then ct=3 end + if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local opt1=Duel.SelectOption(tp,aux.Stringid(10032958,1),aux.Stringid(10032958,2),aux.Stringid(10032958,3)) + local opt2=0 + local opt3=0 + c10032958.reg(c,opt1) + if ct<2 then return end + if opt1==0 then opt2=Duel.SelectOption(tp,aux.Stringid(10032958,2),aux.Stringid(10032958,3))+1 + elseif opt1==2 then opt2=Duel.SelectOption(tp,aux.Stringid(10032958,1),aux.Stringid(10032958,2)) + else + opt2=Duel.SelectOption(tp,aux.Stringid(10032958,1),aux.Stringid(10032958,3)) + if opt2==1 then opt2=2 end + end + c10032958.reg(c,opt2) + if ct<3 then return end + if opt1~=0 and opt2~=0 then opt3=Duel.SelectOption(tp,aux.Stringid(10032958,1)) + elseif opt1~=1 and opt2~=1 then opt3=Duel.SelectOption(tp,aux.Stringid(10032958,2))+1 + else opt3=Duel.SelectOption(tp,aux.Stringid(10032958,3))+2 end + c10032958.reg(c,opt3) + end +end +function c10032958.reg(c,opt) + if opt==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + elseif opt==1 then + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10032958,2)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c10032958.atcon) + e1:SetOperation(c10032958.atop) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + else + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10032958,3)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(aux.bdgcon) + e1:SetTarget(c10032958.damtg) + e1:SetOperation(c10032958.damop) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c10032958.atcon(e,tp,eg,ep,ev,re,r,rp) + return aux.bdocon(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():IsChainAttackable() +end +function c10032958.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end +function c10032958.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local bc=c:GetBattleTarget() + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c10032958.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c100331001.lua b/script/c100331001.lua new file mode 100644 index 00000000..e0927fe3 --- /dev/null +++ b/script/c100331001.lua @@ -0,0 +1,174 @@ +--アストログラフ・マジシャン +--Astrograph Sorcerer +--Scripted by Eerie Code +function c100331001.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Replace + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100331001,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1,100331001) + e1:SetTarget(c100331001.rptg) + e1:SetOperation(c100331001.rpop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100331001,2)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c100331001.spcon) + e2:SetTarget(c100331001.sptg) + e2:SetOperation(c100331001.spop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100331001,4)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetCost(c100331001.hncost) + e3:SetTarget(c100331001.hntg) + e3:SetOperation(c100331001.hnop) + c:RegisterEffect(e3) + --Register destroyed monsters + if not c100331001.global_flag then + c100331001.global_flag=true + c100331001.desgroup=Group.CreateGroup() + c100331001.desgroup:KeepAlive() + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(c100331001.regop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c100331001.resetop) + Duel.RegisterEffect(ge2,0) + end +end +function c100331001.rpfilter(c,e,tp) + return c:IsCode(94415058) and (not c:IsForbidden() + or (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false))) +end +function c100331001.rptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100331001.rpfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c100331001.rpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Destroy(c,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c100331001.rpfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + local op=0 + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + op=Duel.SelectOption(tp,aux.Stringid(100331001,1),aux.Stringid(100331001,2)) + else + op=Duel.SelectOption(tp,aux.Stringid(100331001,1)) + end + if op==0 then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + else + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + end +end +function c100331001.regop(e,tp,eg,ep,ev,re,r,rp) + if not eg then return end + local tc=eg:GetFirst() + while tc do + c100331001.desgroup:AddCard(tc) + tc=eg:GetNext() + end +end +function c100331001.resetop(e,tp,eg,ep,ev,re,r,rp) + c100331001.desgroup:Clear() +end +function c100331001.spcfilter(c,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) + and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c100331001.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg and eg:IsExists(c100331001.spcfilter,1,nil,tp) +end +function c100331001.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c100331001.thfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and c100331001.desgroup:IsExists(c100331001.thfilter2,1,nil,c:GetOriginalCode()) +end +function c100331001.thfilter2(c,cd) + return c:GetOriginalCode()==cd +end +function c100331001.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local g=Duel.GetMatchingGroup(c100331001.thfilter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(100331001,3)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c100331001.hncfilter(c,sc) + return (c:IsSetCard(sc) + or (sc==0x10f2 and c:IsCode(1516510,16178681,72378329,88305705)) + or (sc==0x1046 and c:IsCode(41209827,51570882)) + or (sc==0x2017 and c:IsCode(50954680,82044279)) + or (sc==0x2073 and c:IsCode(16195942,1621413)) + ) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c100331001.hncost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c100331001.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,0x10f2) + and Duel.IsExistingMatchingCard(c100331001.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,0x1046) + and Duel.IsExistingMatchingCard(c100331001.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,0x2017) + and Duel.IsExistingMatchingCard(c100331001.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,0x2073) + end + local g=Group.FromCards(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100331001.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,0x10f2) + g:Merge(g1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100331001.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,0x1046) + g:Merge(g1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100331001.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,0x2017) + g:Merge(g1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100331001.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,0x2073) + g:Merge(g1) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c100331001.hnfilter(c,e,tp) + return not c:IsFaceup() and c:IsCode(100912039) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c100331001.hntg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100331001.hnfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100331001.hnop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100331001.hnfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100331002.lua b/script/c100331002.lua new file mode 100644 index 00000000..e970a6d2 --- /dev/null +++ b/script/c100331002.lua @@ -0,0 +1,140 @@ +--クロノグラフ・マジシャン +--Chronograph Sorcerer +--Scripted by Eerie Code +function c100331002.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Replace + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100331002,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1,100331002) + e1:SetTarget(c100331002.rptg) + e1:SetOperation(c100331002.rpop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100331002,2)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c100331002.spcon) + e2:SetTarget(c100331002.sptg) + e2:SetOperation(c100331002.spop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100331002,4)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetCost(c100331002.hncost) + e3:SetTarget(c100331002.hntg) + e3:SetOperation(c100331002.hnop) + c:RegisterEffect(e3) +end +function c100331002.rpfilter(c,e,tp) + return c:IsCode(20409757) and (not c:IsForbidden() + or (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false))) +end +function c100331002.rptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100331002.rpfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c100331002.rpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Destroy(c,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c100331002.rpfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + local op=0 + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + op=Duel.SelectOption(tp,aux.Stringid(100331002,1),aux.Stringid(100331002,2)) + else + op=Duel.SelectOption(tp,aux.Stringid(100331002,1)) + end + if op==0 then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + else + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + end +end +function c100331002.spcfilter(c,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:GetPreviousControler()==tp +end +function c100331002.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg and eg:IsExists(c100331002.spcfilter,1,nil,tp) +end +function c100331002.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c100331002.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + return + end + local g=Duel.GetMatchingGroup(Card.IsCanBeSpecialSummoned,tp,LOCATION_HAND,0,nil,e,0,tp,false,false) + if g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.SelectYesNo(tp,aux.Stringid(100331002,3)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end +function c100331002.hncfilter(c,sc) + return (c:IsSetCard(sc) + or (sc==0x10f2 and c:IsCode(1516510,16178681,72378329,88305705)) + or (sc==0x1046 and c:IsCode(41209827,51570882)) + or (sc==0x2017 and c:IsCode(50954680,82044279)) + or (sc==0x2073 and c:IsCode(16195942,1621413)) + ) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c100331002.hncost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c100331002.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,0x10f2) + and Duel.IsExistingMatchingCard(c100331002.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,0x1046) + and Duel.IsExistingMatchingCard(c100331002.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,0x2017) + and Duel.IsExistingMatchingCard(c100331002.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,0x2073) + end + local g=Group.FromCards(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100331002.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,0x10f2) + g:Merge(g1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100331002.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,0x1046) + g:Merge(g1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100331002.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,0x2017) + g:Merge(g1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c100331002.hncfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,0x2073) + g:Merge(g1) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c100331002.hnfilter(c,e,tp) + return not c:IsFaceup() and c:IsCode(100912039) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c100331002.hntg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c100331002.hnfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100331002.hnop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100331002.hnfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100331003.lua b/script/c100331003.lua new file mode 100644 index 00000000..7ccff88d --- /dev/null +++ b/script/c100331003.lua @@ -0,0 +1,77 @@ +--虹彩の魔術師 +--Iris Magician +--Scripted by Eerie Code +function c100331003.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Double damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100331003,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c100331003.dbtg) + e1:SetOperation(c100331003.dbop) + c:RegisterEffect(e1) + --Search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100331003,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c100331003.thcon) + e3:SetTarget(c100331003.thtg) + e3:SetOperation(c100331003.thop) + c:RegisterEffect(e3) +end +function c100331003.dbfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_SPELLCASTER) +end +function c100331003.dbtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100331003.dbfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100331003.dbfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100331003.dbfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c100331003.dbop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetCondition(c100331003.damcon) + e1:SetOperation(c100331003.damop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.BreakEffect() + Duel.Destroy(c,REASON_EFFECT) + end +end +function c100331003.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and e:GetHandler():GetBattleTarget()~=nil +end +function c100331003.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end +function c100331003.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c100331003.thfilter(c) + return c:IsSetCard(0x20f2) and c:IsAbleToHand() +end +function c100331003.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100331003.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100331003.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100331003.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100331004.lua b/script/c100331004.lua new file mode 100644 index 00000000..41228075 --- /dev/null +++ b/script/c100331004.lua @@ -0,0 +1,70 @@ +--黒牙の魔術師 +--Black Fang Magician +--Scripted by Eerie Code +function c100331004.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Halve ATK + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100331004,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c100331004.atktg) + e1:SetOperation(c100331004.atkop) + c:RegisterEffect(e1) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100331004,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c100331004.spcon) + e3:SetTarget(c100331004.sptg) + e3:SetOperation(c100331004.spop) + c:RegisterEffect(e3) +end +function c100331004.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and aux.nzatk(chkc) end + if chk==0 then return Duel.IsExistingTarget(aux.nzatk,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,aux.nzatk,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c100331004.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(math.floor(tc:GetAttack()/2)) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.BreakEffect() + Duel.Destroy(c,REASON_EFFECT) + end +end +function c100331004.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c100331004.spfilter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100331004.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100331004.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100331004.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100331004.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100331004.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c100331005.lua b/script/c100331005.lua new file mode 100644 index 00000000..f904c854 --- /dev/null +++ b/script/c100331005.lua @@ -0,0 +1,42 @@ +--白翼の魔術師 +--White Wing Magician +--Scripted by Eerie Code +function c100331005.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetRange(LOCATION_PZONE) + e1:SetCondition(c100331005.condition) + e1:SetOperation(c100331005.operation) + c:RegisterEffect(e1) + --Banish + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(LOCATION_REMOVED) + e2:SetCondition(c100331005.rmcon) + c:RegisterEffect(e2) +end +function c100331005.cfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsControler(tp) +end +function c100331005.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return e:GetHandler():GetFlagEffect(100331005)==0 and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) + and g and g:IsExists(c100331005.cfilter,1,nil,tp) and Duel.IsChainDisablable(ev) +end +function c100331005.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(100331005,0)) then + e:GetHandler():RegisterFlagEffect(100331005,RESET_EVENT+0x1fe0000,0,1) + Duel.NegateEffect(ev) + Duel.BreakEffect() + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end +function c100331005.rmcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(c:GetSummonType(),SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM and c:IsReason(REASON_MATERIAL) and c:IsReason(REASON_SYNCHRO) +end \ No newline at end of file diff --git a/script/c100331006.lua b/script/c100331006.lua new file mode 100644 index 00000000..2f6389bb --- /dev/null +++ b/script/c100331006.lua @@ -0,0 +1,72 @@ +--紫毒の魔術師 +--Violet Poison Magician +--Scripted by Eerie Code +function c100331006.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Increase ATK + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100331006,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_PZONE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCountLimit(1) + e1:SetCondition(c100331006.atkcon) + e1:SetTarget(c100331006.atktg) + e1:SetOperation(c100331006.atkop) + c:RegisterEffect(e1) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100331006,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c100331006.descon) + e3:SetTarget(c100331006.destg) + e3:SetOperation(c100331006.desop) + c:RegisterEffect(e3) +end +function c100331006.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a:IsControler(tp) then + if not d then return false end + a=d + end + return a:IsControler(tp) and a:IsAttribute(ATTRIBUTE_DARK) and a:IsRace(RACE_SPELLCASTER) +end +function c100331006.atktg(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 c100331006.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1200) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + Duel.BreakEffect() + Duel.Destroy(c,REASON_EFFECT) +end +function c100331006.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c100331006.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100331006.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100331023.lua b/script/c100331023.lua new file mode 100644 index 00000000..c3339d49 --- /dev/null +++ b/script/c100331023.lua @@ -0,0 +1,60 @@ +--星霜のペンデュラムグラフ +--Pendulumgraph of Ages +--Scripted by Eerie Code +function c100331023.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Cannot target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_SPELLCASTER)) + e2:SetValue(c100331023.evalue) + c:RegisterEffect(e2) + --Search + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,100331023) + e3:SetCondition(c100331023.thcon) + e3:SetTarget(c100331023.thtg) + e3:SetOperation(c100331023.thop) + c:RegisterEffect(e3) +end +function c100331023.evalue(e,re,rp) + return re:IsActiveType(TYPE_SPELL) and rp~=e:GetHandlerPlayer() +end +function c100331023.thcfilter(c,tp) + local pl=c:GetPreviousLocation() + local ps=c:GetPreviousSequence() + return c:IsType(TYPE_PENDULUM) and c:IsPreviousSetCard(0x98) + and c:GetPreviousControler()==tp and c:IsPreviousPosition(POS_FACEUP) + and (pl==LOCATION_MZONE or (pl==LOCATION_SZONE and (ps==6 or ps==7))) +end +function c100331023.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg and eg:IsExists(c100331023.thcfilter,1,nil,tp) +end +function c100331023.thfilter(c) + return c:IsType(TYPE_PENDULUM) and c:IsSetCard(0x98) and c:IsAbleToHand() +end +function c100331023.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100331023.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100331023.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100331041.lua b/script/c100331041.lua new file mode 100644 index 00000000..7074591d --- /dev/null +++ b/script/c100331041.lua @@ -0,0 +1,90 @@ +--星刻の魔術師 +--Startime Magician +--Scripted by Eerie Code +--Summon limit temporary, might require core update +function c100331041.initial_effect(c) + c:EnableReviveLimit() + aux.AddXyzProcedure(c,c100331041.matfilter,4,2) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c100331041.splimit) + c:RegisterEffect(e1) + --Search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100331041,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c100331041.thcost) + e2:SetTarget(c100331041.thtg) + e2:SetOperation(c100331041.thop) + c:RegisterEffect(e2) + --destroy replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c100331041.reptg) + e3:SetValue(c100331041.repval) + c:RegisterEffect(e3) +end +function c100331041.matfilter(c) + return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) +end +function c100331041.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or (bit.band(st,SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ + and (not se or se:GetHandler():IsCode(73860462))) +end +function c100331041.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100331041.thfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_DARK) + and (c:IsFaceup() or not c:IsLocation(LOCATION_EXTRA)) and c:IsAbleToHand() +end +function c100331041.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c100331041.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_EXTRA,0,nil) + if chk==0 then return g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c100331041.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100331041.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil) + local tc=g:GetFirst() + if not tc then return end + if tc:IsHasEffect(EFFECT_NECRO_VALLEY) and Duel.IsChainDisablable(0) then + Duel.NegateEffect(0) + return + end + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) +end +function c100331041.repfilter(c,tp) + local seq=c:GetSequence() + return c:IsFaceup() and c:IsControler(tp) + and (c:IsLocation(LOCATION_MZONE) or (c:IsLocation(LOCATION_SZONE) and (seq==6 or seq==7))) + and c:IsType(TYPE_PENDULUM) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c100331041.repcfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsAbleToGrave() +end +function c100331041.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:FilterCount(c100331041.repfilter,nil,tp) + local g=Duel.GetMatchingGroup(c100331041.repcfilter,tp,LOCATION_DECK,0,nil) + if chk==0 then return ct>0 and g:GetCount()>0 end + if Duel.SelectYesNo(tp,aux.Stringid(100331041,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + return true + else return false end +end +function c100331041.repval(e,c) + return c100331041.repfilter(c,e:GetHandlerPlayer()) +end diff --git a/script/c100331100.lua b/script/c100331100.lua new file mode 100644 index 00000000..943bcd38 --- /dev/null +++ b/script/c100331100.lua @@ -0,0 +1,87 @@ +--時空のペンデュラムグラフ +--Pendulumgraph of Spacetime +--Scripted by Eerie Code +function c100331100.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c100331100.target) + c:RegisterEffect(e1) + --Cannot target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_SPELLCASTER)) + e2:SetValue(c100331100.evalue) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100331100,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetHintTiming(0,0x1e0) + e3:SetCost(c100331100.descost) + e3:SetTarget(c100331100.destg) + e3:SetOperation(c100331100.desop) + c:RegisterEffect(e3) +end +function c100331100.evalue(e,re,rp) + return re:IsActiveType(TYPE_TRAP) and rp~=e:GetHandlerPlayer() +end +function c100331100.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + if c100331100.descost(e,tp,eg,ep,ev,re,r,rp,0) and c100331100.destg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_DESTROY) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + c100331100.descost(e,tp,eg,ep,ev,re,r,rp,1) + c100331100.destg(e,tp,eg,ep,ev,re,r,rp,1) + e:SetOperation(c100331100.desop) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c100331100.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,100331100)==0 end + Duel.RegisterFlagEffect(tp,100331100,RESET_PHASE+PHASE_END,0,1) +end +function c100331100.desfilter(c) + local seq=c:GetSequence() + return c:IsFaceup() and c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) + and (c:IsLocation(LOCATION_MZONE) or (seq==6 or seq==7)) +end +function c100331100.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c100331100.desfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c100331100.desfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_ONFIELD,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) +end +function c100331100.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.Destroy(g,REASON_EFFECT)~=2 then + local g2=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + if g2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(100331100,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=g2:Select(tp,1,1,nil) + Duel.HintSelection(sg) + Duel.SendtoGrave(sg,REASON_EFFECT) + end + end +end \ No newline at end of file diff --git a/script/c1003840.lua b/script/c1003840.lua index aaff6e9a..24e24a3f 100644 --- a/script/c1003840.lua +++ b/script/c1003840.lua @@ -35,7 +35,7 @@ function c1003840.cfilter(c,e,tp) and Duel.IsExistingMatchingCard(c1003840.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,lv) end function c1003840.spfilter(c,e,tp,lv) - return c:IsSetCard(0x17) and c:GetLevel()~=lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + return c:IsSetCard(0x1017) and c:GetLevel()~=lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c1003840.spcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.CheckReleaseGroup(tp,c1003840.cfilter,1,nil,e,tp) end diff --git a/script/c10060427.lua b/script/c10060427.lua index 73a3e336..46d09bc8 100644 --- a/script/c10060427.lua +++ b/script/c10060427.lua @@ -77,11 +77,11 @@ end function c10060427.otfilter(c,tp) return c:IsSetCard(0x1d) and (c:IsControler(tp) or c:IsFaceup()) end -function c10060427.otcon(e,c) +function c10060427.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c10060427.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c10060427.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c10060427.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c10069180.lua b/script/c10069180.lua index 3c0521f5..008ac016 100644 --- a/script/c10069180.lua +++ b/script/c10069180.lua @@ -21,8 +21,7 @@ function c10069180.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c10069180.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c10080320.lua b/script/c10080320.lua index 54614c49..5c7dae60 100644 --- a/script/c10080320.lua +++ b/script/c10080320.lua @@ -1,21 +1,21 @@ ---ジュラシックワールド -function c10080320.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR)) - e2:SetValue(300) - c:RegisterEffect(e2) - --Def - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end +--ジュラシックワールド +function c10080320.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR)) + e2:SetValue(300) + c:RegisterEffect(e2) + --Def + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end diff --git a/script/c100911000.lua b/script/c100911000.lua new file mode 100644 index 00000000..d21c3aeb --- /dev/null +++ b/script/c100911000.lua @@ -0,0 +1,70 @@ +--Fusion Recycling Plant +--Script by dest +function c100911000.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100911000,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCost(c100911000.thcost) + e2:SetTarget(c100911000.thtg) + e2:SetOperation(c100911000.thop) + c:RegisterEffect(e2) + --recycle + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100911000,1)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1) + e3:SetTarget(c100911000.rectg) + e3:SetOperation(c100911000.recop) + c:RegisterEffect(e3) +end +function c100911000.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c100911000.thfilter(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c100911000.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100911000.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c100911000.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100911000.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c100911000.filter(c,id) + return bit.band(c:GetReason(),0x40008)==0x40008 and c:IsType(TYPE_MONSTER) and c:GetTurnID()==id and c:IsAbleToHand() +end +function c100911000.rectg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100911000.filter(chkc,tid) end + if chk==0 then return Duel.IsExistingTarget(c100911000.filter,tp,LOCATION_GRAVE,0,1,nil,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c100911000.filter,tp,LOCATION_GRAVE,0,1,1,nil,tid) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c100911000.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912001.lua b/script/c100912001.lua new file mode 100644 index 00000000..ceabf83f --- /dev/null +++ b/script/c100912001.lua @@ -0,0 +1,112 @@ +--EMスカイ・マジシャン +--Performapal Sky Magician +--Scripted by Eerie Code +function c100912001.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(aux.chainreg) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912001,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c100912001.atkcon) + e2:SetCost(c100912001.atkcost) + e2:SetOperation(c100912001.atkop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912001,1)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,100912001) + e3:SetTarget(c100912001.thtg) + e3:SetOperation(c100912001.thop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912001,3)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e4:SetCondition(c100912001.descon) + e4:SetTarget(c100912001.destg) + e4:SetOperation(c100912001.desop) + c:RegisterEffect(e4) +end +function c100912001.atkcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and rp==tp and e:GetHandler():GetFlagEffect(1)>0 +end +function c100912001.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(100912001)==0 end + e:GetHandler():RegisterFlagEffect(100912001,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c100912001.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c100912001.thfilter(c) + return c:IsFaceup() and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:IsAbleToHand() +end +function c100912001.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c100912001.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912001.thfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c100912001.thfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c100912001.tffilter(c,tp) + return c:IsSetCard(0x98) and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:GetActivateEffect():IsActivatable(tp) +end +function c100912001.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 then + local g=Duel.GetMatchingGroup(c100912001.tffilter,tp,LOCATION_HAND,0,nil,tp) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(100912001,2)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local sc=g:Select(tp,1,1,nil):GetFirst() + Duel.MoveToField(sc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local te=sc:GetActivateEffect() + local tep=sc:GetControler() + local cost=te:GetCost() + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + Duel.RaiseEvent(sc,EVENT_CHAIN_SOLVED,te,0,tp,tp,Duel.GetCurrentChain()) + end + end +end +function c100912001.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) +end +function c100912001.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100912001.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912002.lua b/script/c100912002.lua new file mode 100644 index 00000000..768269a2 --- /dev/null +++ b/script/c100912002.lua @@ -0,0 +1,82 @@ +--EMスカイ・ピューピル +--Performapal Sky Pupil +--Scripted by Eerie Code +function c100912002.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912002,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,100912002) + e1:SetCost(c100912002.spcost) + e1:SetTarget(c100912002.sptg) + e1:SetOperation(c100912002.spop) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetTarget(c100912002.distg) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912002,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_CONFIRM) + e3:SetCondition(c100912002.descon) + e3:SetTarget(c100912002.destg) + e3:SetOperation(c100912002.desop) + c:RegisterEffect(e3) +end +function c100912002.spcfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) and c:IsLevelAbove(5) and c:IsAbleToHandAsCost() +end +function c100912002.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912002.spcfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c100912002.spcfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c100912002.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100912002.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c100912002.distg(e,c) + local uc=e:GetHandler() + if Duel.GetAttacker()==uc then + return Duel.GetAttackTarget()==c + elseif Duel.GetAttackTarget()==uc then + return Duel.GetAttacker()==c + else return false end +end +function c100912002.descfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) +end +function c100912002.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100912002.descfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c100912002.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local t=Duel.GetAttackTarget() + if chk==0 then return Duel.GetAttacker()==e:GetHandler() and t~=nil end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,t,1,0,0) +end +function c100912002.desop(e,tp,eg,ep,ev,re,r,rp) + local t=Duel.GetAttackTarget() + if t~=nil and t:IsRelateToBattle() then + Duel.Destroy(t,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912003.lua b/script/c100912003.lua new file mode 100644 index 00000000..28e3d098 --- /dev/null +++ b/script/c100912003.lua @@ -0,0 +1,29 @@ +--EMレビュー・ダンサー +--Performapal Revue Dancer +--Script by nekrozar +function c100912003.initial_effect(c) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100912003.sprcon) + c:RegisterEffect(e1) + --double tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DOUBLE_TRIBUTE) + e2:SetValue(c100912003.dtcon) + c:RegisterEffect(e2) +end +function c100912003.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c100912003.dtcon(e,c) + return c:IsSetCard(0x9f) +end \ No newline at end of file diff --git a/script/c100912004.lua b/script/c100912004.lua new file mode 100644 index 00000000..359d4b6b --- /dev/null +++ b/script/c100912004.lua @@ -0,0 +1,143 @@ +--EMユーゴーレム +--Performapal Fugolem +--Scripted by Eerie Code +function c100912004.initial_effect(c) + aux.EnablePendulumAttribute(c) + --salvage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_PZONE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1) + e1:SetCondition(c100912004.thcon) + e1:SetTarget(c100912004.thtg) + e1:SetOperation(c100912004.thop) + c:RegisterEffect(e1) + --reg + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCondition(c100912004.effcon) + e2:SetOperation(c100912004.regop) + c:RegisterEffect(e2) + --fusion + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c100912004.spcon) + e3:SetTarget(c100912004.sptg) + e3:SetOperation(c100912004.spop) + c:RegisterEffect(e3) +end +function c100912004.thcfilter(c,tp) + return c:IsControler(tp) and bit.band(c:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c100912004.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg and eg:IsExists(c100912004.thcfilter,1,nil,tp) +end +function c100912004.thfilter(c) + return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and (c:IsSetCard(0x98) or c:IsSetCard(0x99) or c:IsSetCard(0x9f)) + and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c100912004.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912004.thfilter,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE+LOCATION_EXTRA) +end +function c100912004.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100912004.thfilter),tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c100912004.effcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c100912004.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(100912004,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c100912004.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(100912004)~=0 +end +function c100912004.spfilter0(c) + return c:IsRace(RACE_DRAGON) and c:IsOnField() +end +function c100912004.spfilter1(c,e) + return c100912004.spfilter0(c) and not c:IsImmuneToEffect(e) +end +function c100912004.spfilter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) +end +function c100912004.spfilter3(c) + return c:IsCanBeFusionMaterial() and c:IsRace(RACE_DRAGON) +end +function c100912004.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=nil + if Duel.GetFusionMaterial then + mg1=Duel.GetFusionMaterial(tp):Filter(c100912004.spfilter0,c) + else + mg1=Duel.GetMatchingGroup(c100912004.spfilter0,tp,LOCATION_ONFIELD,0,c):Filter(Card.IsCanBeFusionMaterial,nil) + end + local res=Duel.IsExistingMatchingCard(c100912004.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp):Filter(c100912004.spfilter3,nil) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c100912004.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100912004.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) or c:IsControler(1-tp) then return end + local mg1=nil + if Duel.GetFusionMaterial then + mg1=Duel.GetFusionMaterial(tp):Filter(c100912004.spfilter1,c,e) + else + mg1=Duel.GetMatchingGroup(c100912004.spfilter1,tp,LOCATION_ONFIELD,0,c,e):Filter(Card.IsCanBeFusionMaterial,nil) + end + local sg1=Duel.GetMatchingGroup(c100912004.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp):Filter(c100912004.spfilter3,nil) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c100912004.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end \ No newline at end of file diff --git a/script/c100912005.lua b/script/c100912005.lua new file mode 100644 index 00000000..e0b3e29b --- /dev/null +++ b/script/c100912005.lua @@ -0,0 +1,68 @@ +--EM小判竜 +--Performapal Drago Remora +--Script by nekrozar +function c100912005.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912005,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_PZONE) + e1:SetCondition(c100912005.condition) + e1:SetTarget(c100912005.target) + e1:SetOperation(c100912005.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c100912005.atktg) + e2:SetValue(500) + c:RegisterEffect(e2) + --indes + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c100912005.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c100912005.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:GetSummonLocation()==LOCATION_EXTRA +end +function c100912005.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100912005.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912005.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c100912005.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c100912005.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLED) + e1:SetOwnerPlayer(tp) + e1:SetCondition(c100912005.rmcon) + e1:SetOperation(c100912005.rmop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + end +end +function c100912005.rmcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + return tp==e:GetOwnerPlayer() and tc and tc:IsControler(1-tp) +end +function c100912005.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) +end +function c100912005.atktg(e,c) + return c:IsRace(RACE_DRAGON) and c~=e:GetHandler() +end \ No newline at end of file diff --git a/script/c100912008.lua b/script/c100912008.lua new file mode 100644 index 00000000..60162a0f --- /dev/null +++ b/script/c100912008.lua @@ -0,0 +1,76 @@ +--SR56プレーン +--Speedroid 5 6 Plane +--Script by nekrozar +function c100912008.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912008,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,100912008) + e1:SetCondition(c100912008.spcon) + e1:SetTarget(c100912008.sptg) + e1:SetOperation(c100912008.spop) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912008,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c100912008.atktg) + e2:SetOperation(c100912008.atkop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c100912008.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsControler,1,nil,tp) +end +function c100912008.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100912008.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetTargetRange(1,0) + e1:SetTarget(c100912008.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c100912008.splimit(e,c,tp,sumtp,sumpos) + return not c:IsAttribute(ATTRIBUTE_WIND) +end +function c100912008.atktg(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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g,1,0,0) +end +function c100912008.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-600) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c100912009.lua b/script/c100912009.lua new file mode 100644 index 00000000..2a3d92ae --- /dev/null +++ b/script/c100912009.lua @@ -0,0 +1,45 @@ +--捕食植物オフリス・スコーピオ +--Predaplant Ophrys Scorpio +--Script by dest +function c100912009.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912009,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,100912009) + e1:SetCost(c100912009.spcost) + e1:SetTarget(c100912009.sptg) + e1:SetOperation(c100912009.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c100912009.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c100912009.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912009.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100912009.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100912009.spfilter(c,e,tp) + return c:IsSetCard(0x10f3) and c:GetCode()~=100912009 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912009.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912009.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100912009.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100912009.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100912010.lua b/script/c100912010.lua new file mode 100644 index 00000000..4545a7c6 --- /dev/null +++ b/script/c100912010.lua @@ -0,0 +1,35 @@ +--捕食植物ダーリング・コブラ +--Predaplant Darling Cobra +--Script by dest +function c100912010.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912010,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,100912010+EFFECT_COUNT_CODE_DUEL) + e1:SetCondition(c100912010.thcon) + e1:SetTarget(c100912010.thtg) + e1:SetOperation(c100912010.thop) + c:RegisterEffect(e1) +end +function c100912010.thcon(e,tp,eg,ep,ev,re,r,rp) + return re and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsSetCard(0x10f3) +end +function c100912010.thfilter(c) + return c:IsSetCard(0x46) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c100912010.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912010.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912010.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912010.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100912011.lua b/script/c100912011.lua new file mode 100644 index 00000000..5d0b320c --- /dev/null +++ b/script/c100912011.lua @@ -0,0 +1,60 @@ +--捕食植物コーディセップス +--Predaplant Cordyceps +--Script by dest +function c100912011.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92609670,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c100912011.spcon) + e1:SetCost(c100912011.spcost) + e1:SetTarget(c100912011.sptg) + e1:SetOperation(c100912011.spop) + c:RegisterEffect(e1) +end +function c100912011.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100912011.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100912011.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x10f3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912011.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100912011.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c100912011.filter,tp,LOCATION_GRAVE,0,2,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100912011.filter,tp,LOCATION_GRAVE,0,2,2,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c100912011.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 or (g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + if g:GetCount()>ft then g=g:Select(tp,ft,ft,nil) end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c100912011.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) +end +function c100912011.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsType(TYPE_FUSION) +end diff --git a/script/c100912012.lua b/script/c100912012.lua new file mode 100644 index 00000000..b801d43b --- /dev/null +++ b/script/c100912012.lua @@ -0,0 +1,64 @@ +--LL-コバルト・スパロー +--Lyrical Luscinia - Cobalt Sparrow +--Scripted by Eerie Code +function c100912012.initial_effect(c) + --Search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912012,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,100912012) + e1:SetTarget(c100912012.thtg) + e1:SetOperation(c100912012.thop) + c:RegisterEffect(e1) + --effect gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c100912012.efcon) + e2:SetOperation(c100912012.efop) + c:RegisterEffect(e2) +end +function c100912012.thfilter(c) + return c:IsRace(RACE_WINDBEAST) and c:GetLevel()==1 and c:IsAbleToHand() +end +function c100912012.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912012.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912012.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912012.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c100912012.efcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return r==REASON_XYZ and c:GetReasonCard():IsAttribute(ATTRIBUTE_WIND) +end +function c100912012.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local p=rc:GetControler() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(100912012,1)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT+EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(aux.tgoval) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end \ No newline at end of file diff --git a/script/c100912013.lua b/script/c100912013.lua new file mode 100644 index 00000000..ca083b7e --- /dev/null +++ b/script/c100912013.lua @@ -0,0 +1,96 @@ +--LL-サファイア・スワロー +--Lyrical Luscinia - Sapphire Swallow +--Scripted by Eerie Code +function c100912013.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912013,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,100912013) + e1:SetCondition(c100912013.spcon) + e1:SetTarget(c100912013.sptg) + e1:SetOperation(c100912013.spop) + c:RegisterEffect(e1) + --effect gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c100912013.efcon) + e2:SetOperation(c100912013.efop) + c:RegisterEffect(e2) +end +function c100912013.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) +end +function c100912013.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100912013.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100912013.spfilter(c,e,tp) + return c:IsRace(RACE_WINDBEAST) and c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912013.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c100912013.spfilter,tp,LOCATION_HAND,0,1,c,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c100912013.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100912013.spfilter,tp,LOCATION_HAND,0,1,1,c,e,tp) + if g:GetCount()>0 then + g:AddCard(c) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c100912013.efcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return r==REASON_XYZ and c:GetReasonCard():IsAttribute(ATTRIBUTE_WIND) +end +function c100912013.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local p=rc:GetControler() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(100912013,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c100912013.xyzcon) + e1:SetTarget(c100912013.xyztg) + e1:SetOperation(c100912013.xyzop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c100912013.xyzcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ +end +function c100912013.xyzfilter(c) + return c:IsSetCard(0x1f8) and c:IsType(TYPE_MONSTER) +end +function c100912013.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c100912013.xyzfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912013.xyzfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100912013.xyzfilter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c100912013.xyzop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + Duel.Overlay(c,Group.FromCards(tc)) + end +end \ No newline at end of file diff --git a/script/c100912014.lua b/script/c100912014.lua new file mode 100644 index 00000000..e5466303 --- /dev/null +++ b/script/c100912014.lua @@ -0,0 +1,48 @@ +--LL-ターコイズ・ワーブラー +--Lyrical Luscinia - Turquoise Warbler +--Scripted by Eerie Code +function c100912014.initial_effect(c) + --special summon (self) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c100912014.hspcon) + c:RegisterEffect(e1) + --special summon (LL) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912014,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCountLimit(1,100912014) + e2:SetCondition(c100912014.spcon) + e2:SetTarget(c100912014.sptg) + e2:SetOperation(c100912014.spop) + c:RegisterEffect(e2) +end +function c100912014.hspcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c100912014.spfilter(c,e,tp) + return (c:IsSetCard(0x1f8) or c:IsCode(8491961)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912014.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_HAND) +end +function c100912014.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c100912014.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil,e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100912014.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100912014.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100912015.lua b/script/c100912015.lua new file mode 100644 index 00000000..d956787c --- /dev/null +++ b/script/c100912015.lua @@ -0,0 +1,66 @@ +--DDゴースト +--D/D Ghost +--Scripted by Eerie Code +function c100912015.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912015,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c100912015.tgtg) + e1:SetOperation(c100912015.tgop) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912015,1)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_REMOVE) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c100912015.rtgtg) + e2:SetOperation(c100912015.rtgop) + c:RegisterEffect(e2) +end +function c100912015.tgfilter1(c,tp) + return ((c:IsSetCard(0xaf) and c:IsType(TYPE_MONSTER) and not c:IsCode(100912015)) or c:IsSetCard(0xae)) + and Duel.IsExistingMatchingCard(c100912015.tgfilter2,tp,LOCATION_DECK,0,1,nil,c:GetCode()) +end +function c100912015.tgfilter2(c,cd) + return c:IsCode(cd) and c:IsAbleToGrave() +end +function c100912015.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsCode(e:GetLabel()) end + if chk==0 then return Duel.IsExistingTarget(c100912015.tgfilter1,tp,LOCATION_GRAVE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c100912015.tgfilter1,tp,LOCATION_GRAVE,0,1,1,nil,tp) + e:SetLabel(g:GetFirst():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c100912015.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100912015.tgfilter2,tp,LOCATION_DECK,0,1,1,nil,tc:GetCode()) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end + end +end +function c100912015.rtgfilter(c) + return c:IsFaceup() and ((c:IsSetCard(0xaf) and c:IsType(TYPE_MONSTER) and not c:IsCode(100912015)) or c:IsSetCard(0xae)) +end +function c100912015.rtgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c100912015.rtgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912015.rtgfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c100912015.rtgfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c100912015.rtgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) + end +end \ No newline at end of file diff --git a/script/c100912016.lua b/script/c100912016.lua new file mode 100644 index 00000000..f1b7b016 --- /dev/null +++ b/script/c100912016.lua @@ -0,0 +1,60 @@ +--ダブル・リゾネーター +--Double Resonator +--Scripted by Eerie Code +function c100912016.initial_effect(c) + --tuner (summon) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetTarget(c100912016.target1) + e1:SetOperation(c100912016.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --tuner (banish) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1,100912016) + e3:SetCost(c100912016.cost) + e3:SetTarget(c100912016.target2) + e3:SetOperation(c100912016.operation) + c:RegisterEffect(e3) +end +function c100912016.filter1(c) + return c:IsFaceup() and not c:IsType(TYPE_TUNER) +end +function c100912016.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100912016.filter1(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912016.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100912016.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c100912016.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(TYPE_TUNER) + tc:RegisterEffect(e1) + end +end +function c100912016.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100912016.filter2(c) + return c100912016.filter1(c) and c:IsRace(RACE_FIEND) +end +function c100912016.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100912016.filter2(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912016.filter2,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100912016.filter2,tp,LOCATION_MZONE,0,1,1,nil) +end \ No newline at end of file diff --git a/script/c100912017.lua b/script/c100912017.lua new file mode 100644 index 00000000..e94bb6ce --- /dev/null +++ b/script/c100912017.lua @@ -0,0 +1,164 @@ +--覇王門零 +--Supreme King Gate Zero +--Scripted by Eerie Code +function c100912017.initial_effect(c) + aux.EnablePendulumAttribute(c) + --scale fix + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_CHANGE_LSCALE) + e0:SetValue(0) + c:RegisterEffect(e0) + local e0b=e0:Clone() + e0b:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e0b) + --avoid damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetRange(LOCATION_PZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_AVAILABLE_BD) + e1:SetTargetRange(1,0) + e1:SetCondition(c100912017.ndcon) + e1:SetValue(0) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912017,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c100912017.thcon) + e2:SetTarget(c100912017.thtg) + e2:SetOperation(c100912017.thop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912017,1)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c100912017.sptg) + e3:SetOperation(c100912017.spop) + c:RegisterEffect(e3) + --pendulum + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(100912017,2)) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_DESTROYED) + e6:SetProperty(EFFECT_FLAG_DELAY) + e6:SetCondition(c100912017.pencon) + e6:SetTarget(c100912017.pentg) + e6:SetOperation(c100912017.penop) + c:RegisterEffect(e6) +end +function c100912017.ndcfilter(c) + return c:IsFaceup() and c:IsCode(100912039) +end +function c100912017.ndcon(e) + return Duel.IsExistingMatchingCard(c100912017.ndcfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end +function c100912017.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsCode(100912018) +end +function c100912017.thfilter(c) + return c:IsType(TYPE_SPELL) and c:IsSetCard(0x46) and c:IsAbleToHand() +end +function c100912017.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912017.thfilter,tp,LOCATION_DECK,0,1,nil) end + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912017.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local g=Group.FromCards(c,pc) + if Duel.Destroy(g,REASON_EFFECT)==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectMatchingCard(tp,c100912017.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end + end +end +function c100912017.spfilter(c,e,tp) + return c:IsType(TYPE_FUSION+TYPE_SYNCHRO) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912017.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc:IsFaceup() and chkc~=c end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,c) + and Duel.IsExistingMatchingCard(c100912017.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,1,c) + g:AddCard(c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100912017.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end + local dg=Group.FromCards(c,tc) + if Duel.Destroy(dg,REASON_EFFECT)==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100912017.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local sc=g:GetFirst() + if Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + sc:RegisterEffect(e4,true) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e5:SetValue(1) + sc:RegisterEffect(e5,true) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + sc:RegisterEffect(e6,true) + end + Duel.SpecialSummonComplete() + end +end +function c100912017.pencon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() +end +function c100912017.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end +end +function c100912017.penop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end \ No newline at end of file diff --git a/script/c100912018.lua b/script/c100912018.lua new file mode 100644 index 00000000..4c10d54c --- /dev/null +++ b/script/c100912018.lua @@ -0,0 +1,146 @@ +--覇王門無限 +--Supreme King Gate Infinity +--Scripted by Eerie Code +function c100912018.initial_effect(c) + aux.EnablePendulumAttribute(c) + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_PZONE) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e1:SetTargetRange(1,0) + e1:SetCondition(c100912018.splimcon) + e1:SetTarget(c100912018.splimit) + c:RegisterEffect(e1) + --gain lp + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912018,0)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c100912018.rccon) + e2:SetTarget(c100912018.rctg) + e2:SetOperation(c100912018.rcop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912018,1)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c100912018.sptg) + e3:SetOperation(c100912018.spop) + c:RegisterEffect(e3) + --pendulum + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(100912018,2)) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_DESTROYED) + e6:SetProperty(EFFECT_FLAG_DELAY) + e6:SetCondition(c100912018.pencon) + e6:SetTarget(c100912018.pentg) + e6:SetOperation(c100912018.penop) + c:RegisterEffect(e6) +end +function c100912018.splimcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>0 +end +function c100912018.splimit(e,c,sump,sumtype,sumpos,targetp) + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c100912018.rccfilter(c) + return c:IsFaceup() and c:IsCode(100912039) +end +function c100912018.rccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100912018.rccfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100912018.rctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,g:GetFirst():GetAttack()) +end +function c100912018.rcop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Recover(p,tc:GetAttack(),REASON_EFFECT) + end +end +function c100912018.spfilter(c,e,tp) + return c:IsType(TYPE_XYZ+TYPE_PENDULUM) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912018.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(tp) and chkc:IsFaceup() and chkc~=c end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,c) + and Duel.IsExistingMatchingCard(c100912018.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,1,c) + g:AddCard(c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100912018.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end + local dg=Group.FromCards(c,tc) + if Duel.Destroy(dg,REASON_EFFECT)==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100912018.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local sc=g:GetFirst() + if Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + sc:RegisterEffect(e4,true) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e5:SetValue(1) + sc:RegisterEffect(e5,true) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + sc:RegisterEffect(e6,true) + end + Duel.SpecialSummonComplete() + end +end +function c100912018.pencon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() +end +function c100912018.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end +end +function c100912018.penop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end diff --git a/script/c100912019.lua b/script/c100912019.lua new file mode 100644 index 00000000..7cbba1da --- /dev/null +++ b/script/c100912019.lua @@ -0,0 +1,100 @@ +--覇王眷竜ダークヴルム +--Supreme King Servant Dragon Darkvrm +--Scripted by Eerie Code +function c100912019.initial_effect(c) + aux.EnablePendulumAttribute(c) + --pendulum set + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912019,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCondition(c100912019.pccon) + e1:SetTarget(c100912019.pctg) + e1:SetOperation(c100912019.pcop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912019,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,100912019) + e2:SetTarget(c100912019.thtg) + e2:SetOperation(c100912019.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912019,2)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_GRAVE) + e4:SetCountLimit(1,100912019+100) + e4:SetCondition(c100912019.pccon) + e4:SetTarget(c100912019.sptg) + e4:SetOperation(c100912019.spop) + c:RegisterEffect(e4) +end +function c100912019.pccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c100912019.pcfilter(c) + return c:IsSetCard(0x11fb) and c:IsType(TYPE_PENDULUM) and not c:IsForbidden() +end +function c100912019.pctg(e,tp,eg,ep,ev,re,r,rp,chk) + local seq=e:GetHandler():GetSequence() + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) + and Duel.IsExistingMatchingCard(c100912019.pcfilter,tp,LOCATION_DECK,0,1,nil) end +end +function c100912019.pcop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c100912019.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if not c:IsRelateToEffect(e) then return end + local seq=c:GetSequence() + if not Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c100912019.pcfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.MoveToField(g:GetFirst(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end +function c100912019.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsAttribute(ATTRIBUTE_DARK) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c100912019.thfilter(c) + return c:IsSetCard(0x11fb) and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c100912019.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912019.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912019.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912019.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c100912019.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c100912019.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100912023.lua b/script/c100912023.lua new file mode 100644 index 00000000..1aa6aa99 --- /dev/null +++ b/script/c100912023.lua @@ -0,0 +1,81 @@ +--真竜騎将ドライアスⅢ世 +--Draius III, the True Dracoknight +--Script by dest +function c100912023.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912101,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c100912023.otcon) + e1:SetOperation(c100912023.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c100912023.spcon) + e2:SetTarget(c100912023.sptg) + e2:SetOperation(c100912023.spop) + c:RegisterEffect(e2) + --cannot be target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c100912023.tgtg) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) + --indes + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(c100912023.indval) + c:RegisterEffect(e4) +end +function c100912023.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsReleasable() +end +function c100912023.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912023.otfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100912023.otop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=Duel.SelectMatchingCard(tp,c100912023.otfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c100912023.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and + bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c100912023.spfilter(c,e,tp) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912023.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912023.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c100912023.spop(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,c100912023.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end +function c100912023.tgtg(e,c) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c~=e:GetHandler() +end +function c100912023.indval(e,re,rp) + return rp~=e:GetHandlerPlayer() +end \ No newline at end of file diff --git a/script/c100912024.lua b/script/c100912024.lua new file mode 100644 index 00000000..a81f1204 --- /dev/null +++ b/script/c100912024.lua @@ -0,0 +1,131 @@ +--真竜剣皇マスターP +--Master Peace, the True Dracoslaying King +--Script by mercury233 +function c100912024.initial_effect(c) + --summon with s & t + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912024,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c100912024.otcon) + e1:SetOperation(c100912024.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --tribute check + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c100912024.valcheck) + c:RegisterEffect(e2) + --immune + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c100912024.efilter) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912024,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetHintTiming(0,0x1e0) + e4:SetCondition(c100912024.descon) + e4:SetCost(c100912024.descost) + e4:SetTarget(c100912024.destg) + e4:SetOperation(c100912024.desop) + c:RegisterEffect(e4) +end +function c100912024.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and not c:IsType(TYPE_MONSTER) and c:IsReleasable() +end +function c100912024.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + if Duel.CheckTribute then + local mg=Duel.GetMatchingGroup(c100912024.otfilter,tp,LOCATION_ONFIELD,0,nil) + return (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and mg:GetCount()>=2) + or (Duel.CheckTribute(c,1) and mg:GetCount()>=1) + or (Duel.CheckTribute(c,2)) + else + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local mg=Duel.GetMatchingGroup(c100912024.otfilter,tp,LOCATION_ONFIELD,0,nil) + if ft<=0 and Duel.GetTributeCount(c)<=0 then return false end + return ft>-2 and Duel.GetTributeCount(c)+mg:GetCount()>=2 + end +end +function c100912024.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c100912024.otfilter,tp,LOCATION_ONFIELD,0,nil) + local ct=2 + local g=Group.CreateGroup() + if Duel.GetTributeCount(c)0 and Duel.GetTributeCount(c)>=ct and mg:GetCount()>0 + and (g:GetCount()==0 or Duel.SelectYesNo(tp,aux.Stringid(100912024,1))) then + local ect=ct + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then ect=ect-1 end + ect=math.min(mg:GetCount(),ect) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g3=mg:Select(tp,1,ect,nil) + g:Merge(g3) + ct=ct-g3:GetCount() + end + if ct>0 then + local g4=Duel.SelectTribute(tp,c,ct,ct) + g:Merge(g4) + end + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c100912024.valcheck(e,c) + local g=c:GetMaterial() + local typ=0 + local tc=g:GetFirst() + while tc do + typ=bit.bor(typ,bit.band(tc:GetOriginalType(),0x7)) + tc=g:GetNext() + end + e:SetLabel(typ) +end +function c100912024.efilter(e,te) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE + and te:IsActiveType(e:GetLabelObject():GetLabel()) and te:GetOwner()~=e:GetOwner() +end +function c100912024.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c100912024.costfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsAbleToRemoveAsCost() +end +function c100912024.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912024.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c100912024.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c100912024.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsOnField() and chkc~=c end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100912024.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c100912025.lua b/script/c100912025.lua new file mode 100644 index 00000000..060ffa9b --- /dev/null +++ b/script/c100912025.lua @@ -0,0 +1,131 @@ +--真竜機兵ダースメタトロン +--True Draco Da'at Metatron, the Mechsoldier +--Script by nekrozar +function c100912025.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c100912025.ttcon) + e1:SetOperation(c100912025.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c100912025.setcon) + c:RegisterEffect(e2) + --tribute check + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MATERIAL_CHECK) + e3:SetValue(c100912025.valcheck) + c:RegisterEffect(e3) + --immune + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c100912025.efilter) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(100912025,1)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_DELAY) + e5:SetCode(EVENT_DESTROYED) + e5:SetCondition(c100912025.spcon) + e5:SetTarget(c100912025.sptg) + e5:SetOperation(c100912025.spop) + c:RegisterEffect(e5) +end +function c100912025.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and not c:IsType(TYPE_MONSTER) and c:IsReleasable() +end +function c100912025.ttcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + if Duel.CheckTribute then + local mg=Duel.GetMatchingGroup(c100912025.otfilter,tp,LOCATION_ONFIELD,0,nil) + return (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and mg:GetCount()>=3) + or (Duel.CheckTribute(c,1) and mg:GetCount()>=2) + or (Duel.CheckTribute(c,2) and mg:GetCount()>=1) + or (Duel.CheckTribute(c,3)) + else + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local mg=Duel.GetMatchingGroup(c100912025.otfilter,tp,LOCATION_ONFIELD,0,nil) + if ft<=0 and Duel.GetTributeCount(c)<=0 then return false end + return ft>-3 and Duel.GetTributeCount(c)+mg:GetCount()>=3 + end +end +function c100912025.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c100912025.otfilter,tp,LOCATION_ONFIELD,0,nil) + local ct=3 + local g=Group.CreateGroup() + if Duel.GetTributeCount(c)0 and Duel.GetTributeCount(c)>=ct and mg:GetCount()>0 + and Duel.SelectYesNo(tp,aux.Stringid(100912025,0)) then + local ect=ct + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then ect=ect-1 end + ect=math.min(mg:GetCount(),ect) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g3=mg:Select(tp,1,ect,nil) + g:Merge(g3) + ct=ct-g3:GetCount() + end + if ct>0 then + local g4=Duel.SelectTribute(tp,c,ct,ct) + g:Merge(g4) + end + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c100912025.setcon(e,c,minc) + if not c then return true end + return false +end +function c100912025.valcheck(e,c) + local g=c:GetMaterial() + local typ=0 + local tc=g:GetFirst() + while tc do + typ=bit.bor(typ,bit.band(tc:GetOriginalType(),0x7)) + tc=g:GetNext() + end + e:SetLabel(typ) +end +function c100912025.efilter(e,te) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE + and te:IsActiveType(e:GetLabelObject():GetLabel()) and te:GetOwner()~=e:GetOwner() +end +function c100912025.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return rp==1-tp and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c100912025.spfilter(c,e,tp) + return c:IsAttribute(0xf) and c:IsType(0x802040) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912025.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912025.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100912025.spop(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,c100912025.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c100912029.lua b/script/c100912029.lua new file mode 100644 index 00000000..7b715406 --- /dev/null +++ b/script/c100912029.lua @@ -0,0 +1,80 @@ +--電子光虫-LEDバグ +--Digital Bug - LED Bug +--Scripted by Eerie Code +function c100912029.initial_effect(c) + --xyzlimit + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetValue(c100912029.xyzlimit) + c:RegisterEffect(e0) + --Search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912029,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_CHANGE_POS) + e1:SetCountLimit(1) + e1:SetCondition(c100912029.thcon) + e1:SetTarget(c100912029.thtg) + e1:SetOperation(c100912029.thop) + c:RegisterEffect(e1) + --effect gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c100912029.efcon) + e2:SetOperation(c100912029.efop) + c:RegisterEffect(e2) +end +function c100912029.xyzlimit(e,c) + if not c then return false end + return not c:IsRace(RACE_INSECT) +end +function c100912029.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return not c:IsStatus(STATUS_CONTINUOUS_POS) and c:IsPosition(POS_FACEUP_DEFENSE) and c:IsPreviousPosition(POS_FACEUP_ATTACK) +end +function c100912029.thfilter(c) + return c:IsRace(RACE_INSECT) and c:GetLevel()==3 and c:IsAbleToHand() +end +function c100912029.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912029.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912029.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912029.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c100912029.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c100912029.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(100912029,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetOperation(c100912029.drop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c100912029.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,100912029) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c100912031.lua b/script/c100912031.lua new file mode 100644 index 00000000..936683da --- /dev/null +++ b/script/c100912031.lua @@ -0,0 +1,75 @@ +--影霊衣の巫女 エリアル +--Ariel, Priestess of the Nekroz +--Script by nekrozar +function c100912031.initial_effect(c) + --level change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912031,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c100912031.lvcost) + e1:SetOperation(c100912031.lvop) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912031,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_RELEASE) + e2:SetCountLimit(1,100912031) + e2:SetCondition(c100912031.thcon) + e2:SetTarget(c100912031.thtg) + e2:SetOperation(c100912031.thop) + c:RegisterEffect(e2) +end +function c100912031.cfilter(c) + return c:IsSetCard(0xb4) and not c:IsPublic() +end +function c100912031.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912031.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c100912031.cfilter,tp,LOCATION_HAND,0,1,63,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + e:SetLabel(g:GetCount()) +end +function c100912031.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local ct=e:GetLabel() + local sel=nil + if c:GetLevel()==1 then + sel=Duel.SelectOption(tp,aux.Stringid(100912031,2)) + else + sel=Duel.SelectOption(tp,aux.Stringid(100912031,2),aux.Stringid(100912031,3)) + end + if sel==1 then + ct=ct*-1 + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(ct) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c100912031.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c100912031.filter(c) + return c:IsSetCard(0xb4) and c:IsType(TYPE_MONSTER) and not c:IsType(TYPE_RITUAL) and c:IsAbleToHand() +end +function c100912031.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912031.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912031.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912031.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100912034.lua b/script/c100912034.lua new file mode 100644 index 00000000..f2d40955 --- /dev/null +++ b/script/c100912034.lua @@ -0,0 +1,95 @@ +--ペンデュラムーチョ +--Pendulumucho +--Scripted by Eerie Code +function c100912034.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --scale fix + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_CHANGE_LSCALE) + e0:SetValue(0) + c:RegisterEffect(e0) + local e0b=e0:Clone() + e0b:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e0b) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(1160) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c100912034.reg) + c:RegisterEffect(e1) + --toextra + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912034,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c100912034.tecon) + e2:SetTarget(c100912034.tetg) + e2:SetOperation(c100912034.teop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912034,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetTarget(c100912034.sptg) + e3:SetOperation(c100912034.spop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c100912034.reg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():RegisterFlagEffect(100912034,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) +end +function c100912034.tecon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(100912034)>0 +end +function c100912034.tefilter(c) + return (c:IsFaceup() or c:IsLocation(LOCATION_GRAVE)) and c:IsType(TYPE_PENDULUM) + and not c:IsCode(100912034) and not c:IsForbidden() +end +function c100912034.tetg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and chkc:IsControler(tp) and c100912034.tefilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912034.tefilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(100912034,1)) + Duel.SelectTarget(tp,c100912034.tefilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil) +end +function c100912034.teop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoExtraP(tc,tp,REASON_EFFECT) + end +end +function c100912034.spfilter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:GetLevel()==1 + and not c:IsCode(100912034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912034.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912034.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c100912034.spop(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,c100912034.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + g:GetFirst():RegisterEffect(e1,true) + end +end \ No newline at end of file diff --git a/script/c100912039.lua b/script/c100912039.lua new file mode 100644 index 00000000..68c01491 --- /dev/null +++ b/script/c100912039.lua @@ -0,0 +1,405 @@ +--覇王龍ズァーク +--Supreme King Dragon Zarc +--Scripted by Eerie Code +function c100912039.initial_effect(c) + c:EnableReviveLimit() + --aux.AddFusionProcFunMulti(c,false,c100912039.filters) + aux.EnablePendulumAttribute(c,false) + --fusion procedure + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c100912039.fuscon) + e0:SetOperation(c100912039.fusop) + c:RegisterEffect(e0) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --act limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(0,1) + e2:SetValue(c100912039.limval) + c:RegisterEffect(e2) + --destroy drawn + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912039,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_HAND) + e3:SetRange(LOCATION_PZONE) + e3:SetCountLimit(1) + e3:SetCondition(c100912039.ddcon) + e3:SetTarget(c100912039.ddtg) + e3:SetOperation(c100912039.ddop) + c:RegisterEffect(e3) + --destroy all + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912039,1)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetTarget(c100912039.destg) + e4:SetOperation(c100912039.desop) + c:RegisterEffect(e4) + --Immune + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(aux.tgoval) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e6:SetValue(c100912039.tgvalue) + c:RegisterEffect(e6) + --special summon + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(100912039,2)) + e7:SetCategory(CATEGORY_SPECIAL_SUMMON) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e7:SetCode(EVENT_BATTLE_DESTROYING) + e7:SetCondition(aux.bdocon) + e7:SetTarget(c100912039.sptg) + e7:SetOperation(c100912039.spop) + c:RegisterEffect(e7) + --pendulum + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(100912039,3)) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_DESTROYED) + e8:SetProperty(EFFECT_FLAG_DELAY) + e8:SetCondition(c100912039.pencon) + e8:SetTarget(c100912039.pentg) + e8:SetOperation(c100912039.penop) + c:RegisterEffect(e8) +end +c100912039.miracle_synchro_fusion=true +function c100912039.fusfilter1(c) + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_FUSION) +end +function c100912039.fusfilter2(c) + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) +end +function c100912039.fusfilter3(c) + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_XYZ) +end +function c100912039.fusfilter4(c) + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_PENDULUM) +end +c100912039.filters={c100912039.fusfilter1,c100912039.fusfilter2,c100912039.fusfilter3,c100912039.fusfilter4} +-- TO BE REMOVED ONCE THE UTILITIES ARE UPDATED +function c100912039.FConditionFilterMultiOr(c,funs,n) + for i=1,n do + if funs[i](c) then return true end + end + return false +end +function c100912039.FConditionFilterMulti(c,mg,funs,n,tbt) + for i=1,n do + local tp=2^(i-1) + if bit.band(tbt,tp)~=0 and funs[i](c) then + local t2=tbt-tp + if t2==0 then return true end + local mg2=mg:Clone() + mg2:RemoveCard(c) + if mg2:IsExists(c100912039.FConditionFilterMulti,1,nil,mg2,funs,n,t2) then return true end + end + end + return false +end +function c100912039.CloneTable(g) + local ng={} + for i=1,#g do + local sg=g[i]:Clone() + table.insert(ng,sg) + end + return ng +end +function c100912039.FConditionFilterMulti2(c,gr) + local gr2=c100912039.CloneTable(gr) + for i=1,#gr2 do + gr2[i]:RemoveCard(c) + end + table.remove(gr2,1) + if #gr2==1 then + return gr2[1]:IsExists(aux.TRUE,1,nil) + else + return gr2[1]:IsExists(c100912039.FConditionFilterMulti2,1,nil,gr2) + end +end +function c100912039.FConditionFilterMultiSelect(c,funs,n,mg,sg) + local valid=c100912039.FConditionFilterMultiValid(sg,funs,n) + if not valid then valid={0} end + local all = (2^n)-1 + for k,v in pairs(valid) do + v=bit.bxor(all,v) + if c100912039.FConditionFilterMulti(c,mg,funs,n,v) then return true end + end + return false +end +function c100912039.FConditionFilterMultiValid(g,funs,n) + local tp={} + local tc=g:GetFirst() + while tc do + local tp1={} + for i=1,n do + if funs[i](tc) then table.insert(tp1,2^(i-1)) end + end + table.insert(tp,tp1) + tc=g:GetNext() + end + return c100912039.FConditionMultiGenerateValids(tp,n) +end +function c100912039.FConditionMultiGenerateValids(vs,n) + local c=2 + while #vs > 1 do + local v1=vs[1] + table.remove(vs,1) + local v2=vs[1] + table.remove(vs,1) + table.insert(vs,1,c100912039.FConditionMultiCombine(v1,v2,n,c)) + c=c+1 + end + return vs[1] +end +function c100912039.FConditionMultiCombine(t1,t2,n,c) + local res={} + for k1,v1 in pairs(t1) do + for k2,v2 in pairs(t2) do + table.insert(res,bit.bor(v1,v2)) + end + end + res=c100912039.FConditionMultiCheckCount(res,n) + return c100912039.FConditionFilterMultiClean(res) +end +function c100912039.FConditionMultiCheckCount(vals,n) + local res={} local flags={} + for k,v in pairs(vals) do + local c=0 + for i=1,n do + if bit.band(v,2^(i-1))~=0 then c=c+1 end + end + if not flags[c] then + res[c] = {v} + flags[c] = true + else + table.insert(res[c],v) + end + end + local mk=0 + for k,v in pairs(flags) do + if k>mk then mk=k end + end + return res[mk] +end +function c100912039.FConditionFilterMultiClean(vals) + local res={} local flags={} + for k,v in pairs(vals) do + if not flags[v] then + table.insert(res,v) + flags[v] = true + end + end + return res +end +function c100912039.fuscon(e,g,gc,chkfnf) + local c=e:GetHandler() + if g==nil then return true end + if c:IsFaceup() then return false end + local chkf=bit.band(chkfnf,0xff) + local funs=c100912039.filters + local n=4 + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,c):Filter(c100912039.FConditionFilterMultiOr,nil,funs,n) + if gc then + if not gc:IsCanBeFusionMaterial(c) then return false end + local check_tot=(2^n)-1 + local mg2=mg:Clone() + mg2:RemoveCard(gc) + for i=1,n do + if funs[i](gc) then + local tbt=check_tot-2^(i-1) + if mg2:IsExists(c100912039.FConditionFilterMulti,1,nil,mg2,funs,n,tbt) then return true end + end + end + return false + end + local fs=false + local groups={} + for i=1,n do + table.insert(groups,Group.CreateGroup()) + end + local tc=mg:GetFirst() + while tc do + for i=1,n do + if funs[i](tc) then + groups[i]:AddCard(tc) + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + tc=mg:GetNext() + end + local gr2=c100912039.CloneTable(groups) + if chkf~=PLAYER_NONE then + return fs and gr2[1]:IsExists(c100912039.FConditionFilterMulti2,1,nil,gr2) + else + return gr2[1]:IsExists(c100912039.FConditionFilterMulti2,1,nil,gr2) + end +end +function c100912039.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local c=e:GetHandler() + local chkf=bit.band(chkfnf,0xff) + local funs=c100912039.filters + local n=4 + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,c):Filter(c100912039.FConditionFilterMultiOr,nil,funs,n) + if gc then + local sg=Group.FromCards(gc) + local mg=g:Clone() + mg:RemoveCard(gc) + for i=1,n-1 do + local mg2=mg:Filter(c100912039.FConditionFilterMultiSelect,nil,funs,n,mg,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg2=mg2:Select(tp,1,1,nil) + sg:AddCard(sg2:GetFirst()) + mg:RemoveCard(sg2:GetFirst()) + end + Duel.SetFusionMaterial(sg) + return + end + local sg=Group.CreateGroup() + local mg=g:Clone() + for i=1,n do + local mg2=mg:Filter(c100912039.FConditionFilterMultiSelect,nil,funs,n,mg,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg2=nil + if i==1 and chkf~=PLAYER_NONE then + sg2=mg2:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else + sg2=mg2:Select(tp,1,1,nil) + end + sg:AddCard(sg2:GetFirst()) + mg:RemoveCard(sg2:GetFirst()) + end + Duel.SetFusionMaterial(sg) +end +-- END SECTION TO BE REMOVED +function c100912039.check_fusion_material_48144509(g,chkf) + local fs=false + local mg=g:Filter(Card.IsLocation,nil,LOCATION_HAND+LOCATION_MZONE) + local funs=c100912039.filters + local groups={} + for i=1,4 do + table.insert(groups,Group.CreateGroup()) + end + local tc=mg:GetFirst() + while tc do + for i=1,4 do + if funs[i](tc) then + groups[i]:AddCard(tc) + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + tc=mg:GetNext() + end + local gr2=c100912039.CloneTable(groups) + if chkf~=PLAYER_NONE then + return fs and gr2[1]:IsExists(c100912039.FConditionFilterMulti2,1,nil,gr2) + else + return gr2[1]:IsExists(c100912039.FConditionFilterMulti2,1,nil,gr2) + end +end +function c100912039.select_fusion_material_48144509(tp,g,chkf) + local mg=g:Filter(Card.IsLocation,nil,LOCATION_HAND+LOCATION_MZONE) + local sg=Group.CreateGroup() + local funs=c100912039.filters + for i=1,4 do + local mg2=mg:Filter(c100912039.FConditionFilterMultiSelect,nil,funs,4,mg,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg2=nil + if i==1 and chkf~=PLAYER_NONE then + sg2=mg2:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else + sg2=mg2:Select(tp,1,1,nil) + end + sg:AddCard(sg2:GetFirst()) + mg:RemoveCard(sg2:GetFirst()) + end + Duel.SetFusionMaterial(sg) + return sg +end +function c100912039.limval(e,re,rp) + local rc=re:GetHandler() + return re:IsActiveType(TYPE_MONSTER) and rc:IsType(TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ) and not rc:IsImmuneToEffect(e) +end +function c100912039.ddcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DRAW +end +function c100912039.ddfilter(c,tp) + return c:IsControler(1-tp) and c:IsPreviousLocation(LOCATION_DECK) +end +function c100912039.ddtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=nil + if eg then g=eg:Filter(c100912039.ddfilter,nil,tp) end + if chk==0 then return g and g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100912039.ddop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=eg:Filter(c100912039.ddfilter,nil,tp) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c100912039.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetFieldGroup(tp,0,LOCATION_ONFIELD) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c100912039.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_ONFIELD) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c100912039.tgvalue(e,re,rp) + return rp~=e:GetHandlerPlayer() +end +function c100912039.spfilter(c,e,tp) + return c:IsSetCard(0x21fb) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912039.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c100912039.spfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,nil,e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100912039.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100912039.spfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c100912039.pencon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() +end +function c100912039.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end +end +function c100912039.penop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end diff --git a/script/c100912040.lua b/script/c100912040.lua new file mode 100644 index 00000000..3916196a --- /dev/null +++ b/script/c100912040.lua @@ -0,0 +1,141 @@ +--EMガトリングール +--Performapal Gatling Ghoul +--Scripted by Eerie Code +function c100912040.initial_effect(c) + --fusion procedure + c:EnableReviveLimit() + --aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x9f),c100912040.mat_filter,true) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c100912040.funcon) + e0:SetOperation(c100912040.funop) + c:RegisterEffect(e0) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912040,0)) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,100912040) + e1:SetCondition(c100912040.damcon) + e1:SetTarget(c100912040.damtg) + e1:SetOperation(c100912040.damop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c100912040.valcheck) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c100912040.mat_filter(c) + return c:IsFusionAttribute(ATTRIBUTE_DARK) and c:IsLevelAbove(5) +end +function c100912040.mat_fil_temp(c,fc) + local attr=c:IsAttribute(ATTRIBUTE_DARK) + if Card.IsFusionAttribute then + attr=c:IsFusionAttribute(ATTRIBUTE_DARK,fc) + end + return attr and c:IsLevelAbove(5) +end +function c100912040.funcon(e,g,gc,chkfnf) + if g==nil then return true end + local c=e:GetHandler() + local f2=aux.FilterBoolFunction(Card.IsFusionSetCard,0x9f) + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return (c100912040.mat_fil_temp(gc,c) and mg:IsExists(f2,1,gc,c)) + or (f2(gc) and mg:IsExists(c100912040.mat_fil_temp,1,gc,c)) end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=mg:GetFirst() + while tc do + if c100912040.mat_fil_temp(tc,c) then g1:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + if f2(tc) then g2:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + tc=mg:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) + else return g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) end +end +function c100912040.funop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local c=e:GetHandler() + local f2=aux.FilterBoolFunction(Card.IsFusionSetCard,0x9f) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local sg=Group.CreateGroup() + if c100912040.mat_fil_temp(gc,c) then sg:Merge(g:Filter(f2,gc,c)) end + if f2(gc) then sg:Merge(g:Filter(c100912040.mat_fil_temp,gc,c)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local sg=g:Filter(c100912040.FConditionFilterF2c,nil,c) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then + g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + local tc1=g1:GetFirst() + sg:RemoveCard(tc1) + local b1=c100912040.mat_fil_temp(tc1,c) + local b2=f2(tc1) + if b1 and not b2 then sg:Remove(c100912040.FConditionFilterF2r1,nil,c) end + if b2 and not b1 then sg:Remove(c100912040.FConditionFilterF2r2,nil,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) +end +function c100912040.FConditionFilterF2c(c,fc) + return c100912040.mat_fil_temp(c,fc) or c:IsFusionSetCard(0x9f) +end +function c100912040.FConditionFilterF2r1(c,fc) + return c100912040.mat_fil_temp(c,fc) and not c:IsFusionSetCard(0x9f) +end +function c100912040.FConditionFilterF2r2(c,fc) + return c:IsFusionSetCard(0x9f) and not c100912040.mat_fil_temp(c,fc) +end +function c100912040.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end +function c100912040.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dc=Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dc*200) + if e:GetLabel()==1 then + local g=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + end +end +function c100912040.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) + if ct>0 and Duel.Damage(p,ct*200,REASON_EFFECT)~=0 and e:GetLabel()==1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.BreakEffect() + Duel.HintSelection(g) + if Duel.Destroy(g,REASON_EFFECT)~=0 then + local dam=g:GetFirst():GetBaseAttack() + Duel.Damage(p,dam,REASON_EFFECT) + end + end + end +end +function c100912040.valcheck(e,c) + local g=c:GetMaterial() + local flag=0 + if g:IsExists(Card.IsType,1,nil,TYPE_PENDULUM) then + flag=1 + end + e:GetLabelObject():SetLabel(flag) +end \ No newline at end of file diff --git a/script/c100912041.lua b/script/c100912041.lua new file mode 100644 index 00000000..89c96a2d --- /dev/null +++ b/script/c100912041.lua @@ -0,0 +1,114 @@ +--LL-インディペンデント・ナイチンゲール +--Lyrical Luscinia - Independent Nightingale +--Scripted by Eerie Code +--Effect is not fully implemented +function c100912041.initial_effect(c) + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,100912043,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1f8),1,true,true) + --increase level + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912041,0)) + e1:SetCategory(CATEGORY_LVCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c100912041.lvcon) + e1:SetOperation(c100912041.lvop) + c:RegisterEffect(e1) + --immune + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c100912041.efilter) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c100912041.atkval) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912041,1)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCountLimit(1) + e4:SetTarget(c100912041.damtg) + e4:SetOperation(c100912041.damop) + c:RegisterEffect(e4) + --checks previous ORU on field (similar to Cipher Spectrum) + if not c100912041.global_check then + c100912041.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_LEAVE_FIELD_P) + ge1:SetOperation(c100912041.checkop) + Duel.RegisterEffect(ge1,tp) + end +end +function c100912041.checkfilter(c,tp) + return c:IsType(TYPE_XYZ) and c:GetOverlayCount()>0 +end +function c100912041.checkop(e,tp,eg,ep,ev,re,r,rp) + if not eg then return end + local sg=eg:Filter(c100912041.checkfilter,nil,tp) + local tc=sg:GetFirst() + while tc do + local oc=tc:GetOverlayCount() + if oc>0 then + for i=1,oc do + tc:RegisterFlagEffect(100912041,RESET_EVENT+0x1fe0000-EVENT_TO_GRAVE,0,1) + end + end + tc=sg:GetNext() + end +end +function c100912041.lvfilter(c) + return c:IsSetCard(0x1f8) and c:GetFlagEffect(100912041)>0 +end +function c100912041.lvcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local mg=c:GetMaterial() + return bit.band(c:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and mg and mg:IsExists(c100912041.lvfilter,1,nil) +end +function c100912041.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local mg=c:GetMaterial():Filter(c100912041.lvfilter,nil) + local lv=0 + local mc=mg:GetFirst() + while mc do + lv=lv+mc:GetFlagEffect(100912041) + mc=mg:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c100912041.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c100912041.atkval(e,c) + return c:GetLevel()*500 +end +function c100912041.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetHandler():GetLevel()*500) +end +function c100912041.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local lv=e:GetHandler():GetLevel() + Duel.Damage(p,lv*500,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100912042.lua b/script/c100912042.lua new file mode 100644 index 00000000..7f013782 --- /dev/null +++ b/script/c100912042.lua @@ -0,0 +1,80 @@ +--幻影騎士団カースド・ジャベリン +--The Phantom Knights of Cursed Javelin +--Scripted by Eerie Code +function c100912042.initial_effect(c) + aux.AddXyzProcedure(c,nil,2,2) + --disable and reduce ATK + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912042,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,100912042) + e1:SetCondition(c100912042.condition1) + e1:SetCost(c100912042.cost) + e1:SetTarget(c100912042.target) + e1:SetOperation(c100912042.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetHintTiming(TIMING_DAMAGE_STEP,0x21e0) + e2:SetCondition(c100912042.condition2) + c:RegisterEffect(e2) +end +function c100912042.condition1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():GetOverlayGroup():IsExists(Card.IsSetCard,1,nil,0x10db) +end +function c100912042.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100912042.filter(c) + return c:IsFaceup() and not (c:GetAttack()==0 and c:IsDisabled()) +end +function c100912042.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100912042.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912042.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100912042.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c100912042.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetValue(0) + tc:RegisterEffect(e3) + if tc:IsType(TYPE_TRAPMONSTER) then + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + end + end +end +function c100912042.condition2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayGroup():IsExists(Card.IsSetCard,1,nil,0x10db) + and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end \ No newline at end of file diff --git a/script/c100912043.lua b/script/c100912043.lua new file mode 100644 index 00000000..d33d8577 --- /dev/null +++ b/script/c100912043.lua @@ -0,0 +1,71 @@ +--LL-アセンブリー・ナイチンゲール +--Lyrical Luscinia - Assembly Nightingale +--Scripted by Eerie Code +function c100912043.initial_effect(c) + c:EnableReviveLimit() + aux.AddXyzProcedure(c,nil,1,2,nil,nil,5) + --ATK Up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c100912043.atkval) + c:RegisterEffect(e1) + --Direct Attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + c:RegisterEffect(e2) + --multi attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(c100912043.raval) + c:RegisterEffect(e3) + --Protection + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912043,0)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCost(c100912043.cost) + e4:SetOperation(c100912043.op) + c:RegisterEffect(e4) +end +function c100912043.atkval(e,c) + return c:GetOverlayCount()*200 +end +function c100912043.raval(e,c) + local oc=e:GetHandler():GetOverlayCount() + return math.max(0,oc-1) +end +function c100912043.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100912043.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1f8)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetValue(1) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end \ No newline at end of file diff --git a/script/c100912044.lua b/script/c100912044.lua new file mode 100644 index 00000000..0395252f --- /dev/null +++ b/script/c100912044.lua @@ -0,0 +1,76 @@ +--RR-エトランゼ・ファルコン +--Raidraptor – Etranger Falcon +--Scripted by Eerie Code +function c100912044.initial_effect(c) + c:EnableReviveLimit() + aux.AddXyzProcedure(c,nil,5,2) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912044,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c100912044.descon) + e1:SetCost(c100912044.descost) + e1:SetTarget(c100912044.destg) + e1:SetOperation(c100912044.desop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912044,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c100912044.spcon) + e2:SetTarget(c100912044.sptg) + e2:SetOperation(c100912044.spop) + c:RegisterEffect(e2) +end +function c100912044.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayGroup():IsExists(Card.IsType,1,nil,TYPE_XYZ) +end +function c100912044.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100912044.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetBaseAttack()) +end +function c100912044.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT) + end +end +function c100912044.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return rp==1-tp and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c100912044.spfilter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsSetCard(0xba) + and not c:IsCode(100912044) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912044.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100912044.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c100912044.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100912044.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100912044.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 and c:IsRelateToEffect(e) then + Duel.Overlay(tc,Group.FromCards(c)) + end +end \ No newline at end of file diff --git a/script/c100912045.lua b/script/c100912045.lua new file mode 100644 index 00000000..e23158a0 --- /dev/null +++ b/script/c100912045.lua @@ -0,0 +1,82 @@ +--DDD磐石王ダリウス +--D/D/D Boulder King Darius +--Scripted by Eerie Code +function c100912045.initial_effect(c) + c:EnableReviveLimit() + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_FIEND),3,2) + --Destroy and Draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912045,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c100912045.cost) + e1:SetTarget(c100912045.ddtg) + e1:SetOperation(c100912045.ddop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912045,1)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCondition(c100912045.incon) + e2:SetCost(c100912045.cost) + e2:SetOperation(c100912045.inop) + c:RegisterEffect(e2) +end +function c100912045.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100912045.ddfilter(c) + return c:IsFaceup() and c:IsSetCard(0xae) +end +function c100912045.ddtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c100912045.ddfilter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c100912045.ddfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100912045.ddfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100912045.ddop(e,tp,eg,ep,ev,re,r,rp) + local g,p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + g=g:Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)>0 then + Duel.Draw(p,d,REASON_EFFECT) + end +end +function c100912045.incon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsControler(1-tp) +end +function c100912045.inop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLED) + e3:SetOperation(c100912045.desop) + e3:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e3) + end +end +function c100912045.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local dc=c:GetBattleTarget() + if dc and Duel.Destroy(dc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912046.lua b/script/c100912046.lua new file mode 100644 index 00000000..eb4e5485 --- /dev/null +++ b/script/c100912046.lua @@ -0,0 +1,72 @@ +--真竜皇V.F.D +--True King V.F.D., the Beast +--Script by dest +function c100912046.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,9,2,nil,nil,5) + c:EnableReviveLimit() + --attribute change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912046,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetHintTiming(0,TIMING_DRAW_PHASE) + e1:SetCost(c100912046.atcost) + e1:SetTarget(c100912046.attg) + e1:SetOperation(c100912046.atop) + c:RegisterEffect(e1) + --true king destruction + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(100912046) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + c:RegisterEffect(e2) +end +function c100912046.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100912046.attg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,562) + local rc=Duel.AnnounceAttribute(tp,1,0xffff) + e:SetLabel(rc) +end +function c100912046.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetTargetRange(0,1) + e2:SetLabel(e:GetLabel()) + e2:SetValue(c100912046.aclimit) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetLabel(e:GetLabel()) + e3:SetTarget(c100912046.atktarget) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c100912046.aclimit(e,re,tp) + local c=re:GetHandler() + return c:IsAttribute(e:GetLabel()) and not c:IsLocation(LOCATION_SZONE) and not c:IsImmuneToEffect(e) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c100912046.atktarget(e,c) + return c:IsAttribute(e:GetLabel()) +end \ No newline at end of file diff --git a/script/c100912049.lua b/script/c100912049.lua new file mode 100644 index 00000000..12477aaa --- /dev/null +++ b/script/c100912049.lua @@ -0,0 +1,32 @@ +--魔術師の右手 +--Magician's Right Hand +--Script by nekrozar +function c100912049.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c100912049.negcon) + e2:SetOperation(c100912049.negop) + c:RegisterEffect(e2) +end +function c100912049.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c100912049.negcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100912049.cfilter,tp,LOCATION_MZONE,0,1,nil) + and rp~=tp and re:IsActiveType(TYPE_SPELL) and Duel.IsChainDisablable(ev) +end +function c100912049.negop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912050.lua b/script/c100912050.lua new file mode 100644 index 00000000..b53ab921 --- /dev/null +++ b/script/c100912050.lua @@ -0,0 +1,32 @@ +--魔術師の左手 +--Magician's Left Hand +--Script by nekrozar +function c100912050.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c100912050.negcon) + e2:SetOperation(c100912050.negop) + c:RegisterEffect(e2) +end +function c100912050.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c100912050.negcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100912050.cfilter,tp,LOCATION_MZONE,0,1,nil) + and rp~=tp and re:IsActiveType(TYPE_TRAP) and Duel.IsChainDisablable(ev) +end +function c100912050.negop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912051.lua b/script/c100912051.lua new file mode 100644 index 00000000..22c2016f --- /dev/null +++ b/script/c100912051.lua @@ -0,0 +1,64 @@ +--魔術師の再演 +--Magician's Encore +--Script by nekrozar +function c100912051.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912051,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c100912051.sptg) + e2:SetOperation(c100912051.spop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912051,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetTarget(c100912051.thtg) + e3:SetOperation(c100912051.thop) + c:RegisterEffect(e3) +end +function c100912051.spfilter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912051.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c100912051.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100912051.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100912051.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100912051.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c100912051.thfilter(c) + return c:IsSetCard(0x98) and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and not c:IsCode(100912051) and c:IsAbleToHand() +end +function c100912051.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912051.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912051.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912051.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c100912052.lua b/script/c100912052.lua new file mode 100644 index 00000000..8e8e3802 --- /dev/null +++ b/script/c100912052.lua @@ -0,0 +1,129 @@ +--超越融合 +--Transcendental Polymerization +--Scripted by Eerie Code +function c100912052.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912052,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c100912052.cost) + e1:SetTarget(c100912052.target) + e1:SetOperation(c100912052.activate) + c:RegisterEffect(e1) + --Summon Materials + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912052,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCost(c100912052.spcost) + e2:SetTarget(c100912052.sptg) + e2:SetOperation(c100912052.spop) + c:RegisterEffect(e2) +end +function c100912052.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) end + Duel.PayLPCost(tp,2000) +end +function c100912052.filter0(c,e,tp) + return c:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c100912052.filter1,tp,LOCATION_MZONE,0,1,c,e,tp,c) +end +function c100912052.filter1(c,e,tp,mc) + local mg=Group.FromCards(c,mc) + return c:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c100912052.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg) +end +function c100912052.filter2(c,e,tp,mg) + return c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(mg,nil) +end +function c100912052.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c100912052.filter0,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + Duel.SetChainLimit(aux.FALSE) + end +end +function c100912052.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=Duel.SelectMatchingCard(tp,c100912052.filter0,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + if g1:GetCount()==0 then return end + local tc1=g1:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=Duel.SelectMatchingCard(tp,c100912052.filter1,tp,LOCATION_MZONE,0,1,1,tc1,e,tp,tc1) + g1:Merge(g2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c100912052.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,g1) + local tc=sg:GetFirst() + tc:SetMaterial(g1) + Duel.SendtoGrave(g1,REASON_MATERIAL+REASON_FUSION+REASON_EFFECT) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(100912052,RESET_EVENT+0x1fe0000,0,1) + tc:CompleteProcedure() +end +function c100912052.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100912052.mgfilter(c,e,tp,fusc) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c100912052.spfilter(c,e,tp,lc) + if c:IsFaceup() and c:GetFlagEffect(100912052)~=0 then + local mg=c:GetMaterial() + return mg:GetCount()>0 and mg:GetCount()<=lc + and not mg:IsExists(c100912052.mgfilter,1,nil,e,tp,c) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + else return false end +end +function c100912052.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local lc=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100912052.spfilter(chkc,e,tp,lc) end + if chk==0 then return Duel.IsExistingTarget(c100912052.spfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp,lc) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100912052.spfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp,lc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE) +end +function c100912052.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local mg=tc:GetMaterial() + if mg:GetCount()>0 and mg:GetCount()<=Duel.GetLocationCount(tp,LOCATION_MZONE) + and not mg:IsExists(c100912052.mgfilter,1,nil,e,tp,tc) and not Duel.IsPlayerAffectedByEffect(tp,59822133) then + local sc=mg:GetFirst() + while sc do + if Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + sc:RegisterEffect(e4,true) + end + sc=mg:GetNext() + end + Duel.SpecialSummonComplete() + end +end \ No newline at end of file diff --git a/script/c100912055.lua b/script/c100912055.lua new file mode 100644 index 00000000..c8e2fb6e --- /dev/null +++ b/script/c100912055.lua @@ -0,0 +1,101 @@ +--真竜凰の使徒 +--Disciples of the True Dracophoenix +--Script by mercury233 +function c100912055.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912055,0)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,100912055) + e2:SetTarget(c100912055.drtg) + e2:SetOperation(c100912055.drop) + c:RegisterEffect(e2) + --tribute summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912055,1)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,100912155) + e3:SetTarget(c100912055.sumtg) + e3:SetOperation(c100912055.sumop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912055,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,100912255) + e4:SetCondition(c100912055.descon) + e4:SetTarget(c100912055.destg) + e4:SetOperation(c100912055.desop) + c:RegisterEffect(e4) +end +function c100912055.tdfilter(c) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsAbleToDeck() +end +function c100912055.drtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100912055.tdfilter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c100912055.tdfilter,tp,LOCATION_GRAVE,0,3,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c100912055.tdfilter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100912055.drop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)<=0 then return end + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + if g:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then Duel.ShuffleDeck(tp) end + local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + if ct>0 then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c100912055.sumfilter(c) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsSummonable(true,nil,1) +end +function c100912055.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912055.sumfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c100912055.sumop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c100912055.sumfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil,1) + end +end +function c100912055.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c100912055.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsType(TYPE_SPELL+TYPE_TRAP) end + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,TYPE_SPELL+TYPE_TRAP) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,TYPE_SPELL+TYPE_TRAP) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100912055.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912056.lua b/script/c100912056.lua new file mode 100644 index 00000000..bda986a7 --- /dev/null +++ b/script/c100912056.lua @@ -0,0 +1,105 @@ +--幻煌の都 パシフィス +--Pacifis, City of Mythic Radiance +--Script by mercury233 +function c100912056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c100912056.thcon) + e2:SetCost(c100912056.cost) + e2:SetTarget(c100912056.thtg) + e2:SetOperation(c100912056.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --token + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAINING) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetRange(LOCATION_FZONE) + e4:SetOperation(aux.chainreg) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_CHAIN_SOLVING) + e5:SetProperty(EFFECT_FLAG_DELAY) + e5:SetRange(LOCATION_FZONE) + e5:SetCondition(c100912056.spcon) + e5:SetCost(c100912056.cost) + e5:SetTarget(c100912056.sptg) + e5:SetOperation(c100912056.spop) + c:RegisterEffect(e5) + -- + Duel.AddCustomActivityCounter(100912056,ACTIVITY_SUMMON,c100912056.counterfilter) + Duel.AddCustomActivityCounter(100912056,ACTIVITY_SPSUMMON,c100912056.counterfilter) +end +function c100912056.counterfilter(c) + return not c:IsType(TYPE_EFFECT) +end +function c100912056.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(100912056,tp,ACTIVITY_SUMMON)==0 + and Duel.GetCustomActivityCount(100912056,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c100912056.splimit) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + Duel.RegisterEffect(e2,tp) +end +function c100912056.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsType(TYPE_EFFECT) +end +function c100912056.thcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:GetSummonPlayer()==tp and tc:IsFaceup() and tc:IsType(TYPE_NORMAL) +end +function c100912056.thfilter(c) + return c:IsSetCard(0x1fc) and c:IsAbleToHand() +end +function c100912056.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912056.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912056.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c100912056.spcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_MZONE,0,1,nil,TYPE_TOKEN) and e:GetHandler():GetFlagEffect(1)>0 +end +function c100912056.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,100912156,0x1fc,0x4011,2000,2000,6,RACE_WYRM,ATTRIBUTE_WATER) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c100912056.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,100912156,0x1fc,0x4011,2000,2000,6,RACE_WYRM,ATTRIBUTE_WATER) then return end + local token=Duel.CreateToken(tp,100912156) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end \ No newline at end of file diff --git a/script/c100912057.lua b/script/c100912057.lua new file mode 100644 index 00000000..391fdc3f --- /dev/null +++ b/script/c100912057.lua @@ -0,0 +1,89 @@ +--幻煌龍の螺旋突 +--Spiral Crash of the Mythic Radiance Dragon +--Script by mercury233 +function c100912057.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(c100912057.target) + e1:SetOperation(c100912057.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(c100912057.eqlimit) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912057,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_DAMAGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1,100912057) + e4:SetCondition(c100912057.spcon) + e4:SetTarget(c100912057.sptg) + e4:SetOperation(c100912057.spop) + c:RegisterEffect(e4) +end +function c100912057.eqlimit(e,c) + return c:IsType(TYPE_NORMAL) +end +function c100912057.filter(c) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) +end +function c100912057.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c100912057.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912057.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c100912057.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100912057.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 c100912057.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst()==e:GetHandler():GetEquipTarget() +end +function c100912057.spfilter(c,e,tp) + return c:IsCode(100912028) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912057.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912057.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) +end +function c100912057.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100912057.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Equip(tp,c,tc) + Duel.SpecialSummonComplete() + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_ATTACK) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(100912057,1)) then + Duel.BreakEffect() + local sg=g:Select(tp,1,1,nil) + Duel.ChangePosition(sg,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + end + end + end +end \ No newline at end of file diff --git a/script/c100912058.lua b/script/c100912058.lua new file mode 100644 index 00000000..d27274b1 --- /dev/null +++ b/script/c100912058.lua @@ -0,0 +1,89 @@ +--幻煌龍の螺旋絞 +--Spiral Hold of the Mythic Radiance Dragon +--Script by dest +function c100912058.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(c100912058.target) + e1:SetOperation(c100912058.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(c100912058.eqlimit) + c:RegisterEffect(e2) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(500) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912058,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_DESTROYING) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1,100912058) + e4:SetCondition(c100912058.spcon) + e4:SetTarget(c100912058.sptg) + e4:SetOperation(c100912058.spop) + c:RegisterEffect(e4) +end +function c100912058.eqlimit(e,c) + return c:IsType(TYPE_NORMAL) +end +function c100912058.filter(c) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) +end +function c100912058.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100912058.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912058.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c100912058.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c100912058.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 c100912058.spcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + return ec and eg:IsContains(ec) +end +function c100912058.spfilter(c,e,tp) + return c:IsCode(100912028) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912058.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912058.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c100912058.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100912058.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Equip(tp,c,tc) + Duel.SpecialSummonComplete() + Duel.BreakEffect() + Duel.Damage(1-tp,1000,REASON_EFFECT) + end + end +end \ No newline at end of file diff --git a/script/c100912062.lua b/script/c100912062.lua new file mode 100644 index 00000000..47e43f45 --- /dev/null +++ b/script/c100912062.lua @@ -0,0 +1,119 @@ +--巨大要塞ゼロス +--Great Fortress Zelos +--Scripted by Eerie Code +function c100912062.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100912062.activate) + c:RegisterEffect(e1) + --atk/def up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x15)) + e2:SetValue(500) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x15)) + e4:SetValue(c100912062.indval) + c:RegisterEffect(e4) + --cannot be target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetRange(LOCATION_FZONE) + e5:SetTargetRange(LOCATION_MZONE,0) + e5:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x15)) + e5:SetValue(aux.tgoval) + c:RegisterEffect(e5) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(100912062,1)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetRange(LOCATION_FZONE) + e6:SetCountLimit(1) + e6:SetTarget(c100912062.sptg) + e6:SetOperation(c100912062.spop) + c:RegisterEffect(e6) + --counter + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(100912062,2)) + e7:SetCategory(CATEGORY_COUNTER) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_SUMMON_SUCCESS) + e7:SetRange(LOCATION_FZONE) + e7:SetCondition(c100912062.ctcon) + e7:SetTarget(c100912062.cttg) + e7:SetOperation(c100912062.ctop) + c:RegisterEffect(e7) + local e8=e7:Clone() + e8:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e8) +end +function c100912062.thfilter(c) + return c:IsCode(66947414) and c:IsAbleToHand() +end +function c100912062.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c100912062.thfilter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(100912062,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end +function c100912062.indval(e,re,rp) + return rp~=e:GetHandlerPlayer() +end +function c100912062.spfilter(c,e,tp) + return c:IsSetCard(0x15) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912062.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912062.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c100912062.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100912062.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 c100912062.ctfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x15) and c:IsControler(tp) +end +function c100912062.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg and eg:IsExists(c100912062.ctfilter,1,nil,tp) +end +function c100912062.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ec=eg:FilterCount(c100912062.ctfilter,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,ec,0,0x1f) +end +function c100912062.ctop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=eg:Filter(c100912062.ctfilter,nil,tp) + local tc=g:GetFirst() + while tc do + tc:AddCounter(0x1f,1) + tc=g:GetNext() + end +end \ No newline at end of file diff --git a/script/c100912063.lua b/script/c100912063.lua new file mode 100644 index 00000000..2760f21e --- /dev/null +++ b/script/c100912063.lua @@ -0,0 +1,41 @@ +--デュエリスト・アドベント +--Duelist Alliance +--Scripted by Eerie Code +function c100912063.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,100912063+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c100912063.condition) + e1:SetTarget(c100912063.target) + e1:SetOperation(c100912063.activate) + c:RegisterEffect(e1) +end +function c100912063.cfilter(c) + return c:GetSequence()==6 or c:GetSequence()==7 +end +function c100912063.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c100912063.cfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) +end +function c100912063.filter(c) + if not c:IsAbleToHand() then return false end + if c:IsType(TYPE_MONSTER) then + return c:IsType(TYPE_PENDULUM) and (c:IsSetCard(0xf2) or c:IsCode(100331003,92746535,75195825,69512157,7127502,16178681,47075569)) + else + return c:IsSetCard(0xf2) or c:IsCode(37803970,2359348,76660409,53208660,100214004,68477598,60434189,77826734,74926274,69982329,83461421) + end +end +function c100912063.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912063.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912063.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912063.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100912065.lua b/script/c100912065.lua new file mode 100644 index 00000000..4f8e11c7 --- /dev/null +++ b/script/c100912065.lua @@ -0,0 +1,43 @@ +--決別 +--Farewell +--Scripted by Eerie Code +function c100912065.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100912065.condition) + e1:SetCost(c100912065.cost) + e1:SetOperation(c100912065.activate) + c:RegisterEffect(e1) +end +function c100912065.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 c100912065.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGraveAsCost() +end +function c100912065.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912065.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100912065.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c100912065.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end \ No newline at end of file diff --git a/script/c100912067.lua b/script/c100912067.lua new file mode 100644 index 00000000..beeadfa7 --- /dev/null +++ b/script/c100912067.lua @@ -0,0 +1,70 @@ +--幻影騎士団ウロング・マグネリング +--The Phantom Knights of Wrong Magnet Ring +--Script by nekrozar +function c100912067.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c100912067.condition) + e1:SetTarget(c100912067.target) + e1:SetOperation(c100912067.activate) + c:RegisterEffect(e1) +end +function c100912067.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c100912067.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,100912067,0x10db,0x21,0,0,2,RACE_WARRIOR,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c100912067.activate(e,tp,eg,ep,ev,re,r,rp) + if not Duel.NegateAttack() then return end + Duel.BreakEffect() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) + or not Duel.IsPlayerCanSpecialSummonMonster(tp,100912067,0x10db,0x21,0,0,2,RACE_WARRIOR,ATTRIBUTE_DARK) then return end + c:AddMonsterAttribute(TYPE_EFFECT) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c100912067.drcost) + e1:SetTarget(c100912067.drtg) + e1:SetOperation(c100912067.drop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() +end +function c100912067.cfilter(c) + if c:IsFacedown() or not c:IsAbleToGraveAsCost() then return false end + return (c:IsSetCard(0x10db) and c:IsType(TYPE_MONSTER)) + or (c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsType(TYPE_CONTINUOUS)) +end +function c100912067.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c100912067.cfilter,tp,LOCATION_ONFIELD,0,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c100912067.cfilter,tp,LOCATION_ONFIELD,0,1,1,c) + g:AddCard(c) + Duel.SendtoGrave(g,REASON_COST) +end +function c100912067.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c100912067.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100912068.lua b/script/c100912068.lua new file mode 100644 index 00000000..ba5e7928 --- /dev/null +++ b/script/c100912068.lua @@ -0,0 +1,75 @@ +--常闇の契約書 +--Dark Contract with the Eternal Darkness +--Scripted by Eerie Code +function c100912068.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCondition(c100912068.condition) + e2:SetValue(c100912068.evalue) + c:RegisterEffect(e2) + --cannot release + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_UNRELEASABLE_SUM) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetCondition(c100912068.condition) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + c:RegisterEffect(e5) + local e6=e3:Clone() + e6:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e6) + local e7=e3:Clone() + e7:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e7) + --damage + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(100912068,0)) + e8:SetCategory(CATEGORY_DAMAGE) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e8:SetCode(EVENT_PHASE+PHASE_STANDBY) + e8:SetRange(LOCATION_SZONE) + e8:SetCountLimit(1) + e8:SetCondition(c100912068.damcon) + e8:SetTarget(c100912068.damtg) + e8:SetOperation(c100912068.damop) + c:RegisterEffect(e8) +end +function c100912068.condition(e) + local tp=e:GetHandlerPlayer() + local pc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local pc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + return pc1 and pc2 and pc1:IsSetCard(0xaf) and pc2:IsSetCard(0xaf) +end +function c100912068.evalue(e,re,rp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and rp~=e:GetHandlerPlayer() +end +function c100912068.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c100912068.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c100912068.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100912070.lua b/script/c100912070.lua new file mode 100644 index 00000000..4e1e3cec --- /dev/null +++ b/script/c100912070.lua @@ -0,0 +1,162 @@ +--真竜の黙示録 +--Apocalypse of the True Dracos +--Script by mercury233 +function c100912070.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c100912070.target) + c:RegisterEffect(e1) + --destory and atk & def down + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912070,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+TIMING_END_PHASE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,100912070) + e2:SetCondition(c100912070.atkcon) + e2:SetCost(c100912070.cost) + e2:SetTarget(c100912070.atktg) + e2:SetOperation(c100912070.atkop) + c:RegisterEffect(e2) + --tribute summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912070,1)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(0,TIMING_MAIN_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,100912170) + e3:SetCondition(c100912070.sumcon) + e3:SetCost(c100912070.cost) + e3:SetTarget(c100912070.sumtg) + e3:SetOperation(c100912070.sumop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912070,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,100912270) + e4:SetCondition(c100912070.descon) + e4:SetTarget(c100912070.destg) + e4:SetOperation(c100912070.desop) + c:RegisterEffect(e4) +end +function c100912070.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c100912070.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return true end + local b1=c100912070.atkcon(e,tp,eg,ep,ev,re,r,rp) and c100912070.atktg(e,tp,eg,ep,ev,re,r,rp,0) + local b2=c100912070.sumcon(e,tp,eg,ep,ev,re,r,rp) and c100912070.sumtg(e,tp,eg,ep,ev,re,r,rp,0) + if (b1 or b2) and Duel.SelectYesNo(tp,94) then + local op=0 + if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(100912070,0),aux.Stringid(100912070,1)) + elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(100912070,0)) + else op=Duel.SelectOption(tp,aux.Stringid(100912070,1))+1 end + if op==0 then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c100912070.atkop) + c100912070.atktg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(CATEGORY_SUMMON) + e:SetProperty(0) + e:SetOperation(c100912070.sumop) + c100912070.sumtg(e,tp,eg,ep,ev,re,r,rp,1) + end + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c100912070.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c100912070.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) end +end +function c100912070.tgfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) +end +function c100912070.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(tp) and c100912070.tgfilter(chkc) and chkc~=c end + if chk==0 then return Duel.IsExistingTarget(c100912070.tgfilter,tp,LOCATION_ONFIELD,0,1,c) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and Duel.GetFlagEffect(tp,100912070)==0 end + Duel.RegisterFlagEffect(tp,100912070,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c100912070.tgfilter,tp,LOCATION_ONFIELD,0,1,1,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100912070.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc2=g:GetFirst() + while tc2 do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(math.ceil(tc2:GetAttack()/2)) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(math.ceil(tc2:GetDefense()/2)) + tc2:RegisterEffect(e2) + tc2=g:GetNext() + end + end + end +function c100912070.sumcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c100912070.sumfilter(c) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsSummonable(true,nil,1) +end +function c100912070.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912070.sumfilter,tp,LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(tp,100912170)==0 end + Duel.RegisterFlagEffect(tp,100912170,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c100912070.sumop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c100912070.sumfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil,1) + end +end +function c100912070.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c100912070.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100912070.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912072.lua b/script/c100912072.lua new file mode 100644 index 00000000..79fb43c6 --- /dev/null +++ b/script/c100912072.lua @@ -0,0 +1,93 @@ +--幻煌龍の戦禍 +--Clashing Whirlpool of the Mythic Radiance Dragon +--Script by dest +function c100912072.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,0x1e0) + e1:SetCondition(c100912072.condition) + e1:SetTarget(c100912072.target) + e1:SetOperation(c100912072.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c100912072.handcon) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912072,0)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c100912072.eqcost) + e3:SetTarget(c100912072.eqtg) + e3:SetOperation(c100912072.eqop) + c:RegisterEffect(e3) +end +function c100912072.cfilter(c) + return c:IsFacedown() or not c:IsType(TYPE_NORMAL) +end +function c100912072.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 + and not Duel.IsExistingMatchingCard(c100912072.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c100912072.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100912072.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c100912072.filter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c100912072.handcon(e) + return Duel.IsExistingMatchingCard(c100912072.filter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end +function c100912072.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100912072.efilter(c,e) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsCanBeEffectTarget(e) +end +function c100912072.eqfilter(c,g) + return c:IsFaceup() and c:IsType(TYPE_EQUIP) and c:IsSetCard(0x1fc) and g:IsExists(c100912072.eqcheck,1,nil,c) +end +function c100912072.eqcheck(c,ec) + return ec:CheckEquipTarget(c) +end +function c100912072.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetMatchingGroup(c100912072.efilter,tp,LOCATION_MZONE,0,nil,e) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100912072.efilter(chkc,e) end + if chk==0 then return g:GetCount()>0 and Duel.IsExistingMatchingCard(c100912072.eqfilter,tp,LOCATION_SZONE,0,1,nil,g) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100912072.efilter,tp,LOCATION_MZONE,0,1,1,nil,e) +end +function c100912072.eqop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=tg:GetFirst() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c100912072.eqfilter,tp,LOCATION_SZONE,0,nil,tg) + local eq=g:GetFirst() + while eq do + Duel.Equip(tp,eq,tc,true,true) + eq=g:GetNext() + end + Duel.EquipComplete() +end \ No newline at end of file diff --git a/script/c100912073.lua b/script/c100912073.lua new file mode 100644 index 00000000..0cdfc2eb --- /dev/null +++ b/script/c100912073.lua @@ -0,0 +1,118 @@ +--幻煌龍の浸禍 +--Deep Whirlpool of the Mythic Radiance Dragon +--Script by dest +function c100912073.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c100912073.condition) + e1:SetTarget(c100912073.target) + e1:SetOperation(c100912073.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c100912073.handcon) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912073,0)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c100912073.eqcost) + e3:SetTarget(c100912073.eqtg) + e3:SetOperation(c100912073.eqop) + c:RegisterEffect(e3) +end +function c100912073.cfilter(c) + return c:IsFacedown() or not c:IsType(TYPE_NORMAL) +end +function c100912073.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 + and not Duel.IsExistingMatchingCard(c100912073.cfilter,tp,LOCATION_MZONE,0,1,nil) + and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c100912073.mfilter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c100912073.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c100912073.mfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912073.mfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c100912073.mfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c100912073.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetValue(RESET_TURN_SET) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + end +end +function c100912073.filter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c100912073.handcon(e) + return Duel.IsExistingMatchingCard(c100912073.filter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end +function c100912073.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100912073.efilter(c,e) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsCanBeEffectTarget(e) +end +function c100912073.eqfilter(c,g) + return c:IsType(TYPE_EQUIP) and c:IsSetCard(0x1fc) and g:IsExists(c100912073.eqcheck,1,nil,c) +end +function c100912073.eqcheck(c,ec) + return ec:CheckEquipTarget(c) +end +function c100912073.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetMatchingGroup(c100912073.efilter,tp,LOCATION_MZONE,0,nil,e) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100912073.efilter(chkc,e) end + if chk==0 then return g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c100912073.eqfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil,g) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c100912073.efilter,tp,LOCATION_MZONE,0,1,1,nil,e) +end +function c100912073.eqop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=tg:GetFirst() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectMatchingCard(tp,c100912073.eqfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,tg) + local eq=g:GetFirst() + if eq then + Duel.Equip(tp,eq,tc,true) + end +end \ No newline at end of file diff --git a/script/c100912075.lua b/script/c100912075.lua new file mode 100644 index 00000000..540267e7 --- /dev/null +++ b/script/c100912075.lua @@ -0,0 +1,93 @@ +--破壊剣士の揺籃 +--Destruction Swordsman's Cradle +--Scripted by Eerie Code +function c100912075.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,100912075+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c100912075.cost) + e1:SetTarget(c100912075.target) + e1:SetOperation(c100912075.activate) + c:RegisterEffect(e1) + --Protect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c100912075.immcost) + e2:SetOperation(c100912075.immop) + c:RegisterEffect(e2) +end +function c100912075.cfilter1(c,tp) + return c:IsSetCard(0xd6) and not c:IsCode(100912075) and c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c100912075.cfilter2,tp,LOCATION_DECK,0,1,c) +end +function c100912075.cfilter2(c) + return c:IsSetCard(0xd7) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c100912075.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912075.cfilter1,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c100912075.cfilter1,tp,LOCATION_DECK,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c100912075.cfilter2,tp,LOCATION_DECK,0,1,1,g1:GetFirst()) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) +end +function c100912075.filter(c,e,tp) + return c:IsCode(11790356) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912075.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c100912075.filter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,nil,e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100912075.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100912075.filter),tp,LOCATION_EXTRA+LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + tc:RegisterFlagEffect(100912075,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,2) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCondition(c100912075.descon) + e1:SetOperation(c100912075.desop) + e1:SetReset(RESET_PHASE+PHASE_END,2) + e1:SetCountLimit(1) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) + Duel.SpecialSummonComplete() + end +end +function c100912075.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return Duel.GetTurnCount()~=e:GetLabel() and tc:GetFlagEffect(100912075)~=0 +end +function c100912075.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) +end +function c100912075.immcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c100912075.immop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(1) + e1:SetTargetRange(LOCATION_ONFIELD,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xd6)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + Duel.RegisterEffect(e2,tp) +end \ No newline at end of file diff --git a/script/c100912078.lua b/script/c100912078.lua new file mode 100644 index 00000000..be887156 --- /dev/null +++ b/script/c100912078.lua @@ -0,0 +1,62 @@ +--幽麗なる幻滝 +--Ethereal Wyrmterfall +--Script by dest +function c100912078.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912078,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c100912078.target) + e1:SetOperation(c100912078.activate) + c:RegisterEffect(e1) + --Activate2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912078,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCost(c100912078.cost) + e2:SetTarget(c100912078.target2) + e2:SetOperation(c100912078.activate2) + c:RegisterEffect(e2) +end +function c100912078.filter(c) + return c:IsRace(RACE_WYRM) and c:IsAbleToHand() +end +function c100912078.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912078.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912078.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912078.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c100912078.filter2(c) + return c:IsRace(RACE_WYRM) and c:IsAbleToGraveAsCost() +end +function c100912078.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912078.filter2,tp,LOCATION_MZONE+LOCATION_HAND,0,1,nil) end + local ft=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local g=Duel.GetMatchingGroup(c100912078.filter2,tp,LOCATION_MZONE+LOCATION_HAND,0,nil) + local ct=math.min(ft-1,g:GetCount()+1) + local sg=g:Select(tp,1,ct,nil) + e:SetLabel(sg:GetCount()+1) + Duel.SendtoGrave(sg,REASON_COST) +end +function c100912078.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel()) +end +function c100912078.activate2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100912100.lua b/script/c100912100.lua new file mode 100644 index 00000000..d7d5fe0b --- /dev/null +++ b/script/c100912100.lua @@ -0,0 +1,52 @@ +--セフィラの神意 +--Zefra Providence +--Scripted by Eerie Code +function c100912100.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,100912100+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c100912100.target) + e1:SetOperation(c100912100.activate) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_GRAVE) + e2:SetTarget(c100912100.reptg) + e2:SetValue(c100912100.repval) + e2:SetOperation(c100912100.repop) + c:RegisterEffect(e2) +end +function c100912100.filter(c) + return c:IsSetCard(0xc4) and not c:IsCode(100912100) and c:IsAbleToHand() +end +function c100912100.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912100.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912100.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912100.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c100912100.repfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xc4) and c:IsLocation(LOCATION_ONFIELD) + and c:IsControler(tp) and c:IsReason(REASON_EFFECT+REASON_BATTLE) +end +function c100912100.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() and aux.exccon(e) and eg:IsExists(c100912100.repfilter,1,nil,tp) end + return Duel.SelectYesNo(tp,aux.Stringid(100912100,0)) +end +function c100912100.repval(e,c) + return c100912100.repfilter(c,e:GetHandlerPlayer()) +end +function c100912100.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c100912101.lua b/script/c100912101.lua new file mode 100644 index 00000000..e5348361 --- /dev/null +++ b/script/c100912101.lua @@ -0,0 +1,69 @@ +--真竜戦士イグニスH +--Ignis Heat, the True Dracowarrior +--Script by nekrozar +function c100912101.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912101,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c100912101.otcon) + e1:SetOperation(c100912101.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912101,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c100912101.thcon) + e2:SetTarget(c100912101.thtg) + e2:SetOperation(c100912101.thop) + c:RegisterEffect(e2) +end +function c100912101.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsReleasable() +end +function c100912101.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912101.otfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100912101.otop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=Duel.SelectMatchingCard(tp,c100912101.otfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c100912101.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and rp~=tp and Duel.IsChainNegatable(ev) +end +function c100912101.thfilter(c,tp) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:GetType()==0x20002 and (c:IsAbleToHand() or c:GetActivateEffect():IsActivatable(tp)) +end +function c100912101.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912101.thfilter,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912101.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912101.thfilter,tp,LOCATION_DECK,0,1,1,nil,tp) + local tc=g:GetFirst() + if tc then + if tc:IsAbleToHand() and (not tc:GetActivateEffect():IsActivatable(tp) or Duel.SelectYesNo(tp,aux.Stringid(100912101,2))) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + else + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end + end +end \ No newline at end of file diff --git a/script/c100912102.lua b/script/c100912102.lua new file mode 100644 index 00000000..63ae4ce2 --- /dev/null +++ b/script/c100912102.lua @@ -0,0 +1,63 @@ +--真竜導士マジェスティM +--True Draco Majesty Maiden, the Mage +--Script by nekrozar +function c100912102.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912102,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c100912102.otcon) + e1:SetOperation(c100912102.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912102,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c100912102.thcon) + e2:SetTarget(c100912102.thtg) + e2:SetOperation(c100912102.thop) + c:RegisterEffect(e2) +end +function c100912102.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsReleasable() +end +function c100912102.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912102.otfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100912102.otop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=Duel.SelectMatchingCard(tp,c100912102.otfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c100912102.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and rp~=tp and Duel.IsChainNegatable(ev) +end +function c100912102.thfilter(c) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c100912102.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912102.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912102.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912102.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100912103.lua b/script/c100912103.lua new file mode 100644 index 00000000..ce7ce3bb --- /dev/null +++ b/script/c100912103.lua @@ -0,0 +1,69 @@ +--真竜機士ダイナマイトK +--True Draco Dynamite Knuckle, the Fighter +--Script by nekrozar +function c100912103.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912103,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c100912103.otcon) + e1:SetOperation(c100912103.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912103,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c100912103.thcon) + e2:SetTarget(c100912103.thtg) + e2:SetOperation(c100912103.thop) + c:RegisterEffect(e2) +end +function c100912103.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsReleasable() +end +function c100912103.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912103.otfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c100912103.otop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=Duel.SelectMatchingCard(tp,c100912103.otfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c100912103.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and rp~=tp and Duel.IsChainNegatable(ev) +end +function c100912103.thfilter(c,tp) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:GetType()==0x20004 and (c:IsAbleToHand() or c:GetActivateEffect():IsActivatable(tp)) +end +function c100912103.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912103.thfilter,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912103.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912103.thfilter,tp,LOCATION_DECK,0,1,1,nil,tp) + local tc=g:GetFirst() + if tc then + if tc:IsAbleToHand() and (not tc:GetActivateEffect():IsActivatable(tp) or Duel.SelectYesNo(tp,aux.Stringid(100912103,2))) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + else + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end + end +end \ No newline at end of file diff --git a/script/c100912104.lua b/script/c100912104.lua new file mode 100644 index 00000000..ebcb996a --- /dev/null +++ b/script/c100912104.lua @@ -0,0 +1,74 @@ +--ドラゴニックD +--Dragonic Diagram +--Script by nekrozar +function c100912104.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk&def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c100912104.atktg) + e2:SetValue(300) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c100912104.indtg) + e4:SetValue(c100912104.indct) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(100912104,0)) + e5:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_FZONE) + e5:SetCountLimit(1) + e5:SetTarget(c100912104.destg) + e5:SetOperation(c100912104.desop) + c:RegisterEffect(e5) +end +function c100912104.atktg(e,c) + return c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083) +end +function c100912104.indtg(e,c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) +end +function c100912104.indct(e,re,r,rp) + if bit.band(r,REASON_BATTLE)~=0 then + return 1 + else return 0 end +end +function c100912104.thfilter(c) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsAbleToHand() +end +function c100912104.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(c100912104.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,tp,LOCATION_HAND+LOCATION_ONFIELD) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912104.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,e:GetHandler()) + if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912104.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end \ No newline at end of file diff --git a/script/c100912105.lua b/script/c100912105.lua new file mode 100644 index 00000000..732c58af --- /dev/null +++ b/script/c100912105.lua @@ -0,0 +1,130 @@ +--真竜の継承 +--True Draco Succession +--Script by nekrozar +function c100912105.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912105,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,100912105) + e2:SetCondition(c100912105.drcon) + e2:SetTarget(c100912105.drtg) + e2:SetOperation(c100912105.drop) + c:RegisterEffect(e2) + --tribute summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912105,1)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,100912205) + e3:SetTarget(c100912105.sumtg) + e3:SetOperation(c100912105.sumop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912105,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,100912305) + e4:SetCondition(c100912105.descon) + e4:SetTarget(c100912105.destg) + e4:SetOperation(c100912105.desop) + c:RegisterEffect(e4) + if c100912105.counter==nil then + c100912105.counter=true + c100912105[0]=0 + c100912105[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(c100912105.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c100912105.clearop) + Duel.RegisterEffect(ge2,0) + end +end +function c100912105.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsPreviousLocation(LOCATION_ONFIELD) and (tc:IsSetCard(0x1f9) or tc:IsCode(30539496,34079868,82321037,87765315,96746083)) then + local p=tc:GetReasonPlayer() + local typ=bit.band(tc:GetOriginalType(),0x7) + if (typ==TYPE_MONSTER and Duel.GetFlagEffect(p,100912105)==0) + or (typ==TYPE_SPELL and Duel.GetFlagEffect(p,100912205)==0) + or (typ==TYPE_TRAP and Duel.GetFlagEffect(p,100912305)==0) then + c100912105[p]=c100912105[p]+1 + if typ==TYPE_MONSTER then + Duel.RegisterFlagEffect(p,100912105,RESET_PHASE+PHASE_END,0,1) + elseif typ==TYPE_SPELL then + Duel.RegisterFlagEffect(p,100912205,RESET_PHASE+PHASE_END,0,1) + else + Duel.RegisterFlagEffect(p,100912305,RESET_PHASE+PHASE_END,0,1) + end + end + end + tc=eg:GetNext() + end +end +function c100912105.clearop(e,tp,eg,ep,ev,re,r,rp) + c100912105[0]=0 + c100912105[1]=0 +end +function c100912105.drcon(e,tp,eg,ep,ev,re,r,rp) + return c100912105[tp]>0 +end +function c100912105.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,c100912105[tp]) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,c100912105[tp]) +end +function c100912105.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Draw(tp,c100912105[tp],REASON_EFFECT) +end +function c100912105.sumfilter(c) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsSummonable(true,nil,1) +end +function c100912105.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912105.sumfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c100912105.sumop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c100912105.sumfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil,1) + end +end +function c100912105.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c100912105.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsType(TYPE_SPELL+TYPE_TRAP) end + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,TYPE_SPELL+TYPE_TRAP) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,TYPE_SPELL+TYPE_TRAP) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100912105.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912106.lua b/script/c100912106.lua new file mode 100644 index 00000000..c35531bf --- /dev/null +++ b/script/c100912106.lua @@ -0,0 +1,149 @@ +--真竜皇の復活 +--Revival of the True King +--Script by nekrozar +function c100912106.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c100912106.target) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912106,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,100912106) + e2:SetCost(c100912106.cost) + e2:SetTarget(c100912106.sptg) + e2:SetOperation(c100912106.spop) + c:RegisterEffect(e2) + --tribute summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912106,1)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(0,TIMING_MAIN_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,100912206) + e3:SetCondition(c100912106.sumcon) + e3:SetCost(c100912106.cost) + e3:SetTarget(c100912106.sumtg) + e3:SetOperation(c100912106.sumop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100912106,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,100912306) + e4:SetCondition(c100912106.descon) + e4:SetTarget(c100912106.destg) + e4:SetOperation(c100912106.desop) + c:RegisterEffect(e4) +end +function c100912106.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c100912106.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return true end + local b1=c100912106.sptg(e,tp,eg,ep,ev,re,r,rp,0) + local b2=c100912106.sumcon(e,tp,eg,ep,ev,re,r,rp) and c100912106.sumtg(e,tp,eg,ep,ev,re,r,rp,0) + if (b1 or b2) and Duel.SelectYesNo(tp,94) then + local op=0 + if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(100912106,0),aux.Stringid(100912106,1)) + elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(100912106,0)) + else op=Duel.SelectOption(tp,aux.Stringid(100912106,1))+1 end + if op==0 then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c100912106.spop) + c100912106.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(CATEGORY_SUMMON) + e:SetProperty(0) + e:SetOperation(c100912106.sumop) + c100912106.sumtg(e,tp,eg,ep,ev,re,r,rp,1) + end + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c100912106.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) end +end +function c100912106.spfilter(c,e,tp) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE) +end +function c100912106.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100912106.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c100912106.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetFlagEffect(tp,100912106)==0 end + Duel.RegisterFlagEffect(tp,100912106,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c100912106.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c100912106.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) +end +function c100912106.sumcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c100912106.sumfilter(c) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsSummonable(true,nil,1) +end +function c100912106.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912106.sumfilter,tp,LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(tp,100912206)==0 end + Duel.RegisterFlagEffect(tp,100912206,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c100912106.sumop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c100912106.sumfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil,1) + end +end +function c100912106.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c100912106.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c100912106.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912107.lua b/script/c100912107.lua new file mode 100644 index 00000000..7c1743b6 --- /dev/null +++ b/script/c100912107.lua @@ -0,0 +1,105 @@ +--真竜凰マリアムネ +--True Draco Mariamune, the Phoenix +--Script by nekrozar +function c100912107.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912107,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,100912107) + e1:SetTarget(c100912107.sptg) + e1:SetOperation(c100912107.spop) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912107,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetCountLimit(1,100912207) + e2:SetCondition(c100912107.thcon) + e2:SetTarget(c100912107.thtg) + e2:SetOperation(c100912107.thop) + c:RegisterEffect(e2) +end +function c100912107.desfilter(c) + return c:IsType(TYPE_MONSTER) and ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) or c:IsLocation(LOCATION_HAND)) +end +function c100912107.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local loc=LOCATION_MZONE+LOCATION_HAND + if ft<0 then loc=LOCATION_MZONE end + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,100912046) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c100912107.desfilter,tp,loc,loc2,c) + if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and g:GetCount()>=2 and g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WIND) + and (ft>0 or g:IsExists(Card.IsLocation,-ft+1,nil,LOCATION_MZONE)) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,2,tp,loc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c100912107.rmfilter(c,tp) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove(tp) +end +function c100912107.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local loc=LOCATION_MZONE+LOCATION_HAND + if ft<0 then loc=LOCATION_MZONE end + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,100912046) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c100912107.desfilter,tp,loc,loc2,c) + if g:GetCount()<2 or not g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WIND) then return end + local g1=nil local g2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + if ft<1 then + g1=g:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE) + else + g1=g:Select(tp,1,1,nil) + end + g:RemoveCard(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + if g1:GetFirst():IsAttribute(ATTRIBUTE_WIND) then + g2=g:Select(tp,1,1,nil) + else + g2=g:FilterSelect(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_WIND) + end + g1:Merge(g2) + local rm=g1:IsExists(Card.IsAttribute,2,nil,ATTRIBUTE_WIND) + if Duel.Destroy(g1,REASON_EFFECT)==2 then + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + return + end + local rg=Duel.GetDecktopGroup(1-tp,4) + if rm and rg:GetCount()>0 and rg:FilterCount(Card.IsAbleToRemove,nil)==4 + and Duel.SelectYesNo(tp,aux.Stringid(100912107,2)) then + Duel.DisableShuffleCheck() + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) + end + end +end +function c100912107.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) +end +function c100912107.thfilter(c) + return c:GetAttribute()~=ATTRIBUTE_WIND and c:IsRace(RACE_WYRM) and c:IsAbleToHand() +end +function c100912107.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c100912107.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c100912107.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c100912107.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c100912108.lua b/script/c100912108.lua new file mode 100644 index 00000000..ab8954e2 --- /dev/null +++ b/script/c100912108.lua @@ -0,0 +1,48 @@ +--セフィラの星戦 +--Celestial Crusade of the Zefra +--Scripted by Eerie Code +function c100912108.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,100912108+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c100912108.target) + e1:SetOperation(c100912108.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c100912108.handcon) + c:RegisterEffect(e2) +end +function c100912108.filter(c) + return c:IsFaceup() and c:IsSetCard(0xc4) +end +function c100912108.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingTarget(c100912108.filter,tp,LOCATION_ONFIELD,0,1,c) + and Duel.IsExistingTarget(nil,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c100912108.filter,tp,LOCATION_ONFIELD,0,1,1,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,nil,tp,0,LOCATION_ONFIELD,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) +end +function c100912108.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c100912108.handcon(e) + local tp=e:GetHandlerPlayer() + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + return tc1 and tc1:IsSetCard(0xc4) and tc2 and tc2:IsSetCard(0xc4) +end \ No newline at end of file diff --git a/script/c100912109.lua b/script/c100912109.lua new file mode 100644 index 00000000..2f9819ec --- /dev/null +++ b/script/c100912109.lua @@ -0,0 +1,74 @@ +--ダイナミスト・ハウリング +--Dinomist Howling +--Scripted by Eerie Code +function c100912109.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c100912109.activate) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912109,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetHintTiming(0,0x1e0) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c100912109.thcost) + e2:SetTarget(c100912109.thtg) + e2:SetOperation(c100912109.thop) + c:RegisterEffect(e2) +end +function c100912109.filter(c) + return c:IsType(TYPE_PENDULUM) and c:IsSetCard(0xd8) and not c:IsForbidden() +end +function c100912109.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c100912109.filter,tp,LOCATION_DECK,0,nil) + local ct=0 + if Duel.CheckLocation(tp,LOCATION_SZONE,6) then ct=ct+1 end + if Duel.CheckLocation(tp,LOCATION_SZONE,7) then ct=ct+1 end + if ct>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(100912109,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local sg=g:Select(tp,1,ct,nil) + local sc=sg:GetFirst() + while sc do + Duel.MoveToField(sc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + sc=sg:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c100912109.splimit) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + end +end +function c100912109.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0xd8) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c100912109.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0xd8) end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0xd8) + Duel.Release(g,REASON_COST) +end +function c100912109.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c100912109.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c100912110.lua b/script/c100912110.lua new file mode 100644 index 00000000..d737afec --- /dev/null +++ b/script/c100912110.lua @@ -0,0 +1,100 @@ +--十二獣クックル +--Zoodiac Cuckle +--Scripted by Eerie Code +--Temporary alterations for compatibility with older versions of Ygopro +function c100912110.initial_effect(c) + --shuffle + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912110,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c100912110.tdcon) + e1:SetTarget(c100912110.tdtg) + e1:SetOperation(c100912110.tdop) + c:RegisterEffect(e1) + --get effect + if EFFECT_TYPE_XMATERIAL then + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100912110,1)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_XMATERIAL+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c100912110.discon) + e2:SetCost(c100912110.discost) + e2:SetTarget(c100912110.distg) + e2:SetOperation(c100912110.disop) + c:RegisterEffect(e2) + else + if not c100912110.global_check then + c100912110.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetOperation(c100912110.checkop) + Duel.RegisterEffect(ge1,0) + end + end +end +function c100912110.tdcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c100912110.tdfilter(c) + return c:IsSetCard(0xf1) and not c:IsCode(100912110) and c:IsAbleToDeck() +end +function c100912110.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c100912110.tdfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c100912110.tdfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c100912110.tdfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c100912110.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end +end +function c100912110.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsType(TYPE_XYZ) and tc:GetOriginalRace()==RACE_BEASTWARRIOR + and tc:GetFlagEffect(100912110)==0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(100912110,1)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c100912110.discon) + e1:SetCost(c100912110.discost) + e1:SetTarget(c100912110.distg) + e1:SetOperation(c100912110.disop) + tc:RegisterEffect(e1,true) + tc:RegisterFlagEffect(100912110,0,0,1) + end + tc=eg:GetNext() + end +end +function c100912110.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetOriginalRace()==RACE_BEASTWARRIOR + and not c:IsStatus(STATUS_BATTLE_DESTROYED) and ep==1-tp + and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev) + and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) + and Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):IsContains(c) +end +function c100912110.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c100912110.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c100912110.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end \ No newline at end of file diff --git a/script/c100912111.lua b/script/c100912111.lua new file mode 100644 index 00000000..fb7b9954 --- /dev/null +++ b/script/c100912111.lua @@ -0,0 +1,71 @@ +--バオバブーン +--Baobaboon +--Scripted by Eerie Code +function c100912111.initial_effect(c) + --draw and replace + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100912111,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c100912111.drtg) + e1:SetOperation(c100912111.drop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(100912111,3)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c100912111.spcon) + e3:SetTarget(c100912111.sptg) + e3:SetOperation(c100912111.spop) + c:RegisterEffect(e3) +end +function c100912111.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c100912111.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToDeck,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + Duel.BreakEffect() + if Duel.SelectOption(tp,aux.Stringid(100912111,1),aux.Stringid(100912111,2))==0 then + Duel.SendtoDeck(g,nil,0,REASON_EFFECT) + else + Duel.SendtoDeck(g,nil,1,REASON_EFFECT) + end + end +end +function c100912111.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c100912111.spfilter(c,e,tp) + return c:IsCode(100912111) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c100912111.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c100912111.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c100912111.spop(e,tp,eg,ep,ev,re,r,rp) + local ct=2 + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end + ct=math.min(ct,Duel.GetLocationCount(tp,LOCATION_MZONE)) + if ct<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c100912111.spfilter,tp,LOCATION_DECK,0,1,ct,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c10117149.lua b/script/c10117149.lua index 1fd1881f..0ab05739 100644 --- a/script/c10117149.lua +++ b/script/c10117149.lua @@ -1,91 +1,91 @@ ---ブンボーグ005 -function c10117149.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c10117149.splimit) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetTarget(c10117149.destg) - e3:SetOperation(c10117149.desop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - --atk up - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_UPDATE_ATTACK) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetRange(LOCATION_MZONE) - e5:SetValue(c10117149.atkval) - c:RegisterEffect(e5) - --spsummon - local e6=Effect.CreateEffect(c) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e6:SetCode(EVENT_DESTROYED) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e6:SetCountLimit(1,10117149) - e6:SetCondition(c10117149.spcon) - e6:SetTarget(c10117149.sptg) - e6:SetOperation(c10117149.spop) - c:RegisterEffect(e6) -end -function c10117149.splimit(e,c,tp,sumtp,sumpos) - return not c:IsSetCard(0xab) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c10117149.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c10117149.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c10117149.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c10117149.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c10117149.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c10117149.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c10117149.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xab) -end -function c10117149.atkval(e,c) - return Duel.GetMatchingGroupCount(c10117149.cfilter,c:GetControler(),LOCATION_EXTRA,0,nil)*500 -end -function c10117149.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_SZONE) and (c:GetPreviousSequence()==6 or c:GetPreviousSequence()==7) -end -function c10117149.spfilter(c,e,tp) - return c:IsSetCard(0xab) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c10117149.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c10117149.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c10117149.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c10117149.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c10117149.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ブンボーグ005 +function c10117149.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c10117149.splimit) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetTarget(c10117149.destg) + e3:SetOperation(c10117149.desop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + --atk up + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c10117149.atkval) + c:RegisterEffect(e5) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_DESTROYED) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e6:SetCountLimit(1,10117149) + e6:SetCondition(c10117149.spcon) + e6:SetTarget(c10117149.sptg) + e6:SetOperation(c10117149.spop) + c:RegisterEffect(e6) +end +function c10117149.splimit(e,c,tp,sumtp,sumpos) + return not c:IsSetCard(0xab) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c10117149.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c10117149.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c10117149.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c10117149.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c10117149.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c10117149.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c10117149.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xab) +end +function c10117149.atkval(e,c) + return Duel.GetMatchingGroupCount(c10117149.cfilter,c:GetControler(),LOCATION_EXTRA,0,nil)*500 +end +function c10117149.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_SZONE) and (c:GetPreviousSequence()==6 or c:GetPreviousSequence()==7) +end +function c10117149.spfilter(c,e,tp) + return c:IsSetCard(0xab) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c10117149.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c10117149.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c10117149.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c10117149.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c10117149.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c10178757.lua b/script/c10178757.lua index 937bca31..2fa067f3 100644 --- a/script/c10178757.lua +++ b/script/c10178757.lua @@ -1,42 +1,42 @@ ---レアル・ジェネクス・オラクル -function c10178757.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(10178757,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_HAND) - e1:SetCondition(c10178757.condition) - e1:SetTarget(c10178757.target) - e1:SetOperation(c10178757.operation) - c:RegisterEffect(e1) - --synchro limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetValue(c10178757.synlimit) - c:RegisterEffect(e2) -end -function c10178757.synlimit(e,c) - if not c then return false end - return not c:IsSetCard(0x2) -end -function c10178757.condition(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT)>0 and re:GetHandler():IsSetCard(0x2) - and e:GetHandler():GetPreviousLocation()==LOCATION_DECK and e:GetHandler():GetPreviousControler()==tp -end -function c10178757.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c10178757.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--レアル・ジェネクス・オラクル +function c10178757.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10178757,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c10178757.condition) + e1:SetTarget(c10178757.target) + e1:SetOperation(c10178757.operation) + c:RegisterEffect(e1) + --synchro limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(c10178757.synlimit) + c:RegisterEffect(e2) +end +function c10178757.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x2) +end +function c10178757.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)>0 and re:GetHandler():IsSetCard(0x2) + and e:GetHandler():GetPreviousLocation()==LOCATION_DECK and e:GetHandler():GetPreviousControler()==tp +end +function c10178757.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c10178757.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c102380.lua b/script/c102380.lua index 9832acaa..316b917c 100644 --- a/script/c102380.lua +++ b/script/c102380.lua @@ -1,74 +1,74 @@ ---溶岩魔神ラヴァ・ゴーレム -function c102380.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(102380,0)) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e1:SetRange(LOCATION_HAND) - e1:SetTargetRange(POS_FACEUP,1) - e1:SetCondition(c102380.spcon) - e1:SetOperation(c102380.spop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetDescription(aux.Stringid(102380,1)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c102380.damcon) - e2:SetTarget(c102380.damtg) - e2:SetOperation(c102380.damop) - c:RegisterEffect(e2) - --spsummon cost - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_SPSUMMON_COST) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCost(c102380.spcost) - e3:SetOperation(c102380.spcop) - c:RegisterEffect(e3) -end -function c102380.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(Card.IsReleasable,c:GetControler(),0,LOCATION_MZONE,2,nil) -end -function c102380.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,2,2,nil) - Duel.Release(g,REASON_COST) -end -function c102380.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c102380.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) -end -function c102380.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c102380.spcost(e,c,tp) - return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 -end -function c102380.spcop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) -end +--溶岩魔神ラヴァ・ゴーレム +function c102380.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(102380,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetRange(LOCATION_HAND) + e1:SetTargetRange(POS_FACEUP,1) + e1:SetCondition(c102380.spcon) + e1:SetOperation(c102380.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetDescription(aux.Stringid(102380,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c102380.damcon) + e2:SetTarget(c102380.damtg) + e2:SetOperation(c102380.damop) + c:RegisterEffect(e2) + --spsummon cost + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_COST) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCost(c102380.spcost) + e3:SetOperation(c102380.spcop) + c:RegisterEffect(e3) +end +function c102380.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(Card.IsReleasable,c:GetControler(),0,LOCATION_MZONE,2,nil) +end +function c102380.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,2,2,nil) + Duel.Release(g,REASON_COST) +end +function c102380.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c102380.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c102380.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c102380.spcost(e,c,tp) + return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 +end +function c102380.spcop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c10239627.lua b/script/c10239627.lua index f5d3b440..ad45ba1a 100644 --- a/script/c10239627.lua +++ b/script/c10239627.lua @@ -1,86 +1,86 @@ ---マジカル・アブダクター -function c10239627.initial_effect(c) - c:EnableCounterPermit(0x1,LOCATION_PZONE+LOCATION_MZONE) - --pendulum summon - aux.EnablePendulumAttribute(c) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) - e2:SetOperation(aux.chainreg) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetCode(EVENT_CHAIN_SOLVED) - e3:SetRange(LOCATION_PZONE+LOCATION_MZONE) - e3:SetOperation(c10239627.acop) - c:RegisterEffect(e3) - --to hand - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_PZONE) - e4:SetCountLimit(1) - e4:SetCost(c10239627.thcost) - e4:SetTarget(c10239627.thtg1) - e4:SetOperation(c10239627.thop1) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetRange(LOCATION_MZONE) - e5:SetTarget(c10239627.thtg2) - e5:SetOperation(c10239627.thop2) - c:RegisterEffect(e5) - --atk up - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_UPDATE_ATTACK) - e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e6:SetRange(LOCATION_MZONE) - e6:SetValue(c10239627.atkval) - c:RegisterEffect(e6) -end -function c10239627.acop(e,tp,eg,ep,ev,re,r,rp) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and e:GetHandler():GetFlagEffect(1)>0 then - e:GetHandler():AddCounter(0x1,1) - end -end -function c10239627.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x1,3,REASON_COST) end - e:GetHandler():RemoveCounter(tp,0x1,3,REASON_COST) -end -function c10239627.thfilter1(c) - return c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() -end -function c10239627.thtg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c10239627.thfilter1,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c10239627.thop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c10239627.thfilter1,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c10239627.thfilter2(c) - return c:IsRace(RACE_SPELLCASTER) and c:GetLevel()==1 and c:IsAbleToHand() -end -function c10239627.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c10239627.thfilter2,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c10239627.thop2(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c10239627.thfilter2,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c10239627.atkval(e,c) - return e:GetHandler():GetCounter(0x1)*100 -end +--マジカル・アブダクター +function c10239627.initial_effect(c) + c:EnableCounterPermit(0x1,LOCATION_PZONE+LOCATION_MZONE) + --pendulum summon + aux.EnablePendulumAttribute(c) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e2:SetOperation(aux.chainreg) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_CHAIN_SOLVED) + e3:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e3:SetOperation(c10239627.acop) + c:RegisterEffect(e3) + --to hand + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_PZONE) + e4:SetCountLimit(1) + e4:SetCost(c10239627.thcost) + e4:SetTarget(c10239627.thtg1) + e4:SetOperation(c10239627.thop1) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetRange(LOCATION_MZONE) + e5:SetTarget(c10239627.thtg2) + e5:SetOperation(c10239627.thop2) + c:RegisterEffect(e5) + --atk up + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_UPDATE_ATTACK) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetValue(c10239627.atkval) + c:RegisterEffect(e6) +end +function c10239627.acop(e,tp,eg,ep,ev,re,r,rp) + if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and e:GetHandler():GetFlagEffect(1)>0 then + e:GetHandler():AddCounter(0x1,1) + end +end +function c10239627.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x1,3,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x1,3,REASON_COST) +end +function c10239627.thfilter1(c) + return c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c10239627.thtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c10239627.thfilter1,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c10239627.thop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c10239627.thfilter1,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c10239627.thfilter2(c) + return c:IsRace(RACE_SPELLCASTER) and c:GetLevel()==1 and c:IsAbleToHand() +end +function c10239627.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c10239627.thfilter2,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c10239627.thop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c10239627.thfilter2,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c10239627.atkval(e,c) + return e:GetHandler():GetCounter(0x1)*100 +end diff --git a/script/c10248389.lua b/script/c10248389.lua index ef351307..c94f7a7b 100644 --- a/script/c10248389.lua +++ b/script/c10248389.lua @@ -1,56 +1,47 @@ ---サイバー・ブレイダー -function c10248389.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,97023549,11460577,false,false) - --indes - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetCondition(c10248389.indcon) - e1:SetValue(1) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_SET_ATTACK_FINAL) - e2:SetCondition(c10248389.atkcon) - e2:SetValue(c10248389.atkval) - c:RegisterEffect(e2) - --disable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_DISABLE) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_ONFIELD) - e3:SetCondition(c10248389.discon) - c:RegisterEffect(e3) - --disable effect - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_CHAIN_SOLVING) - e4:SetRange(LOCATION_MZONE) - e4:SetCondition(c10248389.discon) - e4:SetOperation(c10248389.disop) - c:RegisterEffect(e4) -end -function c10248389.indcon(e) - return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==1 -end -function c10248389.atkcon(e) - return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==2 -end -function c10248389.discon(e) - return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==3 -end -function c10248389.atkval(e,c) - return c:GetAttack()*2 -end -function c10248389.disop(e,tp,eg,ep,ev,re,r,rp) - local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) - if rp~=tp and (tl==LOCATION_MZONE or tl==LOCATION_SZONE) then - Duel.NegateEffect(ev) - end -end +--サイバー・ブレイダー +function c10248389.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,97023549,11460577,false,false) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetCondition(c10248389.indcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetCondition(c10248389.atkcon) + e2:SetValue(c10248389.atkval) + c:RegisterEffect(e2) + --disable effect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAIN_SOLVING) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c10248389.discon) + e4:SetOperation(c10248389.disop) + c:RegisterEffect(e4) +end +function c10248389.indcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==1 +end +function c10248389.atkcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==2 +end +function c10248389.discon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==3 +end +function c10248389.atkval(e,c) + return c:GetAttack()*2 +end +function c10248389.disop(e,tp,eg,ep,ev,re,r,rp) + if rp~=tp then + Duel.NegateEffect(ev) + end +end diff --git a/script/c1033312.lua b/script/c1033312.lua index 8a29f306..c464e243 100644 --- a/script/c1033312.lua +++ b/script/c1033312.lua @@ -1,37 +1,37 @@ ---苦渋の決断 -function c1033312.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,1033312+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c1033312.target) - e1:SetOperation(c1033312.activate) - c:RegisterEffect(e1) -end -function c1033312.tgfilter(c,tp) - return c:IsLevelBelow(4) and c:IsType(TYPE_NORMAL) and c:IsAbleToGrave() - and Duel.IsExistingMatchingCard(c1033312.thfilter,tp,LOCATION_DECK,0,1,c,c:GetCode()) -end -function c1033312.thfilter(c,code) - return c:IsCode(code) and c:IsAbleToHand() -end -function c1033312.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c1033312.tgfilter,tp,LOCATION_DECK,0,1,nil,tp) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c1033312.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c1033312.tgfilter,tp,LOCATION_DECK,0,1,1,nil,tp) - local tc=g:GetFirst() - if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=Duel.SelectMatchingCard(tp,c1033312.thfilter,tp,LOCATION_DECK,0,1,1,nil,tc:GetCode()) - if sg:GetCount()>0 then - Duel.SendtoHand(sg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,sg) - end - end -end +--苦渋の決断 +function c1033312.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,1033312+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c1033312.target) + e1:SetOperation(c1033312.activate) + c:RegisterEffect(e1) +end +function c1033312.tgfilter(c,tp) + return c:IsLevelBelow(4) and c:IsType(TYPE_NORMAL) and c:IsAbleToGrave() + and Duel.IsExistingMatchingCard(c1033312.thfilter,tp,LOCATION_DECK,0,1,c,c:GetCode()) +end +function c1033312.thfilter(c,code) + return c:IsCode(code) and c:IsAbleToHand() +end +function c1033312.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c1033312.tgfilter,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c1033312.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c1033312.tgfilter,tp,LOCATION_DECK,0,1,1,nil,tp) + local tc=g:GetFirst() + if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectMatchingCard(tp,c1033312.thfilter,tp,LOCATION_DECK,0,1,1,nil,tc:GetCode()) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end + end +end diff --git a/script/c10352095.lua b/script/c10352095.lua index ead9823b..30c8364e 100644 --- a/script/c10352095.lua +++ b/script/c10352095.lua @@ -1,46 +1,24 @@ --幻惑の巻物 function c10352095.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(c10352095.target) - e1:SetOperation(c10352095.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,nil,nil,nil,c10352095.target) --ATTRIBUTE local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e2:SetCondition(c10352095.attcon) e2:SetValue(c10352095.value) c:RegisterEffect(e2) - e1:SetLabelObject(e2) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetValue(1) - c:RegisterEffect(e4) end -function c10352095.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) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +function c10352095.target(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() Duel.Hint(HINT_SELECTMSG,tp,563) - local rc=Duel.AnnounceAttribute(tp,1,0xff-g:GetFirst():GetAttribute()) - e:GetLabelObject():SetLabel(rc) + local rc=Duel.AnnounceAttribute(tp,1,0xff-tc:GetAttribute()) + e:GetHandler():RegisterFlagEffect(10352095,RESET_EVENT+0x1fe0000,0,1,rc) e:GetHandler():SetHint(CHINT_ATTRIBUTE,rc) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) end -function c10352095.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 +function c10352095.attcon(e) + return e:GetHandler():GetFlagEffect(10352095)~=0 end function c10352095.value(e,c) - return e:GetLabel() + return e:GetHandler():GetFlagEffectLabel(10352095) end diff --git a/script/c1036974.lua b/script/c1036974.lua index 60f5acb9..058f5fc0 100644 --- a/script/c1036974.lua +++ b/script/c1036974.lua @@ -1,35 +1,35 @@ ---ミスフォーチュン -function c1036974.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c1036974.cost) - e1:SetTarget(c1036974.target) - e1:SetOperation(c1036974.activate) - c:RegisterEffect(e1) -end -function c1036974.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OATH) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c1036974.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) -end -function c1036974.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Damage(1-tp,tc:GetBaseAttack()/2,REASON_EFFECT) - end -end +--ミスフォーチュン +function c1036974.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c1036974.cost) + e1:SetTarget(c1036974.target) + e1:SetOperation(c1036974.activate) + c:RegisterEffect(e1) +end +function c1036974.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c1036974.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c1036974.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Damage(1-tp,tc:GetBaseAttack()/2,REASON_EFFECT) + end +end diff --git a/script/c10383554.lua b/script/c10383554.lua index b9f5140e..fb5a0efa 100644 --- a/script/c10383554.lua +++ b/script/c10383554.lua @@ -1,56 +1,56 @@ ---デストーイ・ホイールソウ・ライオ -function c10383554.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,34688023,aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),1,true,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1,10383554) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c10383554.cost) - e2:SetTarget(c10383554.target) - e2:SetOperation(c10383554.operation) - c:RegisterEffect(e2) -end -function c10383554.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsDirectAttacked() end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c10383554.filter(c) - return c:IsFaceup() -end -function c10383554.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c10383554.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c10383554.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c10383554.filter,tp,0,LOCATION_MZONE,1,1,nil) - local atk=g:GetFirst():GetTextAttack() - if atk<0 then atk=0 end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) -end -function c10383554.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.Damage(1-tp,atk,REASON_EFFECT) - end - end -end +--デストーイ・ホイールソウ・ライオ +function c10383554.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,34688023,aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),1,true,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,10383554) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c10383554.cost) + e2:SetTarget(c10383554.target) + e2:SetOperation(c10383554.operation) + c:RegisterEffect(e2) +end +function c10383554.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsDirectAttacked() end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c10383554.filter(c) + return c:IsFaceup() +end +function c10383554.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c10383554.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c10383554.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c10383554.filter,tp,0,LOCATION_MZONE,1,1,nil) + local atk=g:GetFirst():GetTextAttack() + if atk<0 then atk=0 end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c10383554.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c10389142.lua b/script/c10389142.lua index 3457a042..8d64cac2 100644 --- a/script/c10389142.lua +++ b/script/c10389142.lua @@ -7,6 +7,7 @@ function c10389142.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) e1:SetDescription(aux.Stringid(10389142,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c10406322.lua b/script/c10406322.lua index 5e27efd9..33c80726 100644 --- a/script/c10406322.lua +++ b/script/c10406322.lua @@ -19,7 +19,7 @@ function c10406322.initial_effect(c) e2:SetCategory(CATEGORY_TODECK) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,10406322) e2:SetCondition(c10406322.tdcon) diff --git a/script/c10424147.lua b/script/c10424147.lua index 46ad9282..73ce21b6 100644 --- a/script/c10424147.lua +++ b/script/c10424147.lua @@ -1,119 +1,119 @@ ---超量機艦マグナキャリア -function c10424147.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(10424147,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_FZONE) - e2:SetCost(c10424147.spcost1) - e2:SetTarget(c10424147.sptg1) - e2:SetOperation(c10424147.spop1) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(10424147,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_FZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCost(c10424147.spcost2) - e3:SetTarget(c10424147.sptg2) - e3:SetOperation(c10424147.spop2) - c:RegisterEffect(e3) -end -function c10424147.spcost1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c10424147.spfilter1(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x10dc) - and Duel.IsExistingMatchingCard(c10424147.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetAttribute()) -end -function c10424147.spfilter2(c,e,tp,mc,att) - return c:IsType(TYPE_XYZ) and c:IsSetCard(0x20dc) and c:IsAttribute(att) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c10424147.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c10424147.spfilter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c10424147.spfilter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c10424147.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c10424147.spop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c10424147.spfilter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetAttribute()) - local sc=g:GetFirst() - if sc then - local mg=tc:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end -end -function c10424147.spfilter3(c,e) - return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsSetCard(0x20dc) and c:IsType(TYPE_XYZ) and c:IsCanBeEffectTarget(e) -end -function c10424147.spfilter4(c,e,tp) - return c:IsCode(84025439) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c10424147.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c10424147.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - local g=Duel.GetMatchingGroup(c10424147.spfilter3,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,e) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and g:GetClassCount(Card.GetCode)>2 - and Duel.IsExistingMatchingCard(c10424147.spfilter4,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local sg1=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,sg1:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local sg2=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,sg2:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local sg3=g:Select(tp,1,1,nil) - sg1:Merge(sg2) - sg1:Merge(sg3) - Duel.SetTargetCard(sg1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c10424147.mtfilter(c,e) - return c:IsRelateToEffect(e) and not c:IsImmuneToEffect(e) -end -function c10424147.spop2(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 sg=Duel.SelectMatchingCard(tp,c10424147.spfilter4,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) - local sc=sg:GetFirst() - if sc and Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP)~=0 then - local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local g=tg:Filter(c10424147.mtfilter,nil,e) - local tc=g:GetFirst() - while tc do - local mg=tc:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - Duel.Overlay(sc,Group.FromCards(tc)) - tc=g:GetNext() - end - end -end +--超量機艦マグナキャリア +function c10424147.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(10424147,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetCost(c10424147.spcost1) + e2:SetTarget(c10424147.sptg1) + e2:SetOperation(c10424147.spop1) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(10424147,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_FZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCost(c10424147.spcost2) + e3:SetTarget(c10424147.sptg2) + e3:SetOperation(c10424147.spop2) + c:RegisterEffect(e3) +end +function c10424147.spcost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c10424147.spfilter1(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x10dc) + and Duel.IsExistingMatchingCard(c10424147.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetAttribute()) +end +function c10424147.spfilter2(c,e,tp,mc,att) + return c:IsType(TYPE_XYZ) and c:IsSetCard(0x20dc) and c:IsAttribute(att) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c10424147.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c10424147.spfilter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c10424147.spfilter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c10424147.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c10424147.spop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c10424147.spfilter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetAttribute()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end +function c10424147.spfilter3(c,e) + return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsSetCard(0x20dc) and c:IsType(TYPE_XYZ) and c:IsCanBeEffectTarget(e) +end +function c10424147.spfilter4(c,e,tp) + return c:IsCode(84025439) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c10424147.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c10424147.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local g=Duel.GetMatchingGroup(c10424147.spfilter3,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,e) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and g:GetClassCount(Card.GetCode)>2 + and Duel.IsExistingMatchingCard(c10424147.spfilter4,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,sg1:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg2=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,sg2:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg3=g:Select(tp,1,1,nil) + sg1:Merge(sg2) + sg1:Merge(sg3) + Duel.SetTargetCard(sg1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c10424147.mtfilter(c,e) + return c:IsRelateToEffect(e) and not c:IsImmuneToEffect(e) +end +function c10424147.spop2(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 sg=Duel.SelectMatchingCard(tp,c10424147.spfilter4,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local sc=sg:GetFirst() + if sc and Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(c10424147.mtfilter,nil,e) + local tc=g:GetFirst() + while tc do + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + Duel.Overlay(sc,Group.FromCards(tc)) + tc=g:GetNext() + end + end +end diff --git a/script/c10443957.lua b/script/c10443957.lua index e2697d9d..12f9f66c 100644 --- a/script/c10443957.lua +++ b/script/c10443957.lua @@ -26,7 +26,7 @@ function c10443957.initial_effect(c) e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetCode(EVENT_CHAINING) e3:SetCountLimit(1) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e3:SetRange(LOCATION_MZONE) e3:SetCondition(c10443957.discon) e3:SetCost(c10443957.discost) @@ -84,8 +84,7 @@ function c10443957.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c10443957.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c1045143.lua b/script/c1045143.lua index da734874..78ed2344 100644 --- a/script/c1045143.lua +++ b/script/c1045143.lua @@ -24,8 +24,8 @@ end function c1045143.spop(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,c1045143.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c1045143.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) end end diff --git a/script/c10509340.lua b/script/c10509340.lua index 2bc9485e..d1a270c1 100644 --- a/script/c10509340.lua +++ b/script/c10509340.lua @@ -14,9 +14,13 @@ function c10509340.initial_effect(c) c:RegisterEffect(e2) --actlimit local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetOperation(c10509340.atkop) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetValue(c10509340.aclimit) + e3:SetCondition(c10509340.actcon) c:RegisterEffect(e3) end function c10509340.disop(e,tp,eg,ep,ev,re,r,rp) @@ -35,16 +39,9 @@ function c10509340.disop(e,tp,eg,ep,ev,re,r,rp) e2:SetReset(RESET_EVENT+0x17a0000) d:RegisterEffect(e2) end -function c10509340.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c10509340.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end function c10509340.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c10509340.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end diff --git a/script/c10526791.lua b/script/c10526791.lua index fa2160c2..edfca62e 100644 --- a/script/c10526791.lua +++ b/script/c10526791.lua @@ -1,19 +1,20 @@ ---E・HERO ワイルドジャギーマン -function c10526791.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,86188410,59793705,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --attackall - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ATTACK_ALL) - e2:SetValue(1) - c:RegisterEffect(e2) -end +--E・HERO ワイルドジャギーマン +function c10526791.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,86188410,59793705,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --attackall + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ATTACK_ALL) + e2:SetValue(1) + c:RegisterEffect(e2) +end +c10526791.material_setcode=0x8 diff --git a/script/c10530913.lua b/script/c10530913.lua index 009394b4..6f1654a9 100644 --- a/script/c10530913.lua +++ b/script/c10530913.lua @@ -1,89 +1,89 @@ ---森羅の賢樹 シャーマン -function c10530913.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(10530913,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c10530913.spcon) - e1:SetTarget(c10530913.sptg) - e1:SetOperation(c10530913.spop) - c:RegisterEffect(e1) - --deck check - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(10530913,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c10530913.target) - e2:SetOperation(c10530913.operation) - c:RegisterEffect(e2) - --tohand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(10530913,2)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c10530913.thcon) - e3:SetTarget(c10530913.thtg) - e3:SetOperation(c10530913.thop) - c:RegisterEffect(e3) -end -function c10530913.cfilter(c) - return c:IsSetCard(0x90) and c:IsType(TYPE_MONSTER) -end -function c10530913.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c10530913.cfilter,1,nil) -end -function c10530913.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c10530913.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c10530913.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c10530913.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - if tc:IsRace(RACE_PLANT) then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) - else - Duel.MoveSequence(tc,1) - end -end -function c10530913.thcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c10530913.thfilter(c) - return c:IsSetCard(0x90) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c10530913.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c10530913.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c10530913.thfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c10530913.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c10530913.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--森羅の賢樹 シャーマン +function c10530913.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10530913,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c10530913.spcon) + e1:SetTarget(c10530913.sptg) + e1:SetOperation(c10530913.spop) + c:RegisterEffect(e1) + --deck check + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(10530913,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c10530913.target) + e2:SetOperation(c10530913.operation) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(10530913,2)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c10530913.thcon) + e3:SetTarget(c10530913.thtg) + e3:SetOperation(c10530913.thop) + c:RegisterEffect(e3) +end +function c10530913.cfilter(c) + return c:IsSetCard(0x90) and c:IsType(TYPE_MONSTER) +end +function c10530913.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c10530913.cfilter,1,nil) +end +function c10530913.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c10530913.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c10530913.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c10530913.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsRace(RACE_PLANT) then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) + else + Duel.MoveSequence(tc,1) + end +end +function c10530913.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c10530913.thfilter(c) + return c:IsSetCard(0x90) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c10530913.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c10530913.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c10530913.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c10530913.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c10530913.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c10591919.lua b/script/c10591919.lua index 537a3dc3..6e26418e 100644 --- a/script/c10591919.lua +++ b/script/c10591919.lua @@ -39,17 +39,28 @@ function c10591919.opa(e,tp,eg,ep,ev,re,r,rp) local tc=g:GetFirst() if not tc then return end Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(10591919,RESET_EVENT+0x1fe0000,0,1,fid) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetOperation(c10591919.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) e1:SetCountLimit(1) - tc:RegisterEffect(e1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c10591919.descon) + e1:SetOperation(c10591919.desop) + Duel.RegisterEffect(e1,tp) +end +function c10591919.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(10591919)~=e:GetLabel() then + e:Reset() + return false + else return true end end function c10591919.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) end function c10591919.cond(e) return e:GetHandler():IsDefensePos() diff --git a/script/c10613952.lua b/script/c10613952.lua index 9956764a..02552db4 100644 --- a/script/c10613952.lua +++ b/script/c10613952.lua @@ -19,7 +19,7 @@ function c10613952.initial_effect(c) e2:SetDescription(aux.Stringid(10613952,1)) e2:SetCategory(CATEGORY_DESTROY) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) e2:SetCost(c10613952.descost) diff --git a/script/c10651797.lua b/script/c10651797.lua index d0127828..173d4695 100644 --- a/script/c10651797.lua +++ b/script/c10651797.lua @@ -21,8 +21,7 @@ function c10651797.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c10651797.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c10678778.lua b/script/c10678778.lua index bc16e6c5..d400634b 100644 --- a/script/c10678778.lua +++ b/script/c10678778.lua @@ -18,7 +18,7 @@ function c10678778.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(10678778,1)) e2:SetCategory(CATEGORY_TODECK+CATEGORY_DESTROY) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetRange(LOCATION_MZONE) diff --git a/script/c10691144.lua b/script/c10691144.lua index cb6f60e9..fa913b3d 100644 --- a/script/c10691144.lua +++ b/script/c10691144.lua @@ -1,63 +1,63 @@ ---氷結界の鏡 -function c10691144.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetOperation(c10691144.activate) - c:RegisterEffect(e1) -end -function c10691144.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,10691144)~=0 then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_REMOVE) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetCondition(c10691144.rmcon) - e1:SetOperation(c10691144.rmop) - Duel.RegisterEffect(e1,tp) - Duel.RegisterFlagEffect(tp,10691144,RESET_PHASE+PHASE_END,0,1) -end -function c10691144.rmcon(e,tp,eg,ep,ev,re,r,rp) - local flag=0 - local tc=eg:GetFirst() - while tc do - local ploc=tc:GetPreviousLocation() - local te=tc:GetReasonEffect() - if tc:IsReason(REASON_EFFECT) and not tc:IsReason(REASON_REDIRECT) and bit.band(ploc,0x1e)~=0 and tc:GetPreviousControler()==tp - and te:GetOwnerPlayer()==1-tp and te:IsActiveType(TYPE_MONSTER) and te:IsActivated() then - flag=bit.bor(flag,ploc) - end - tc=eg:GetNext() - end - e:SetLabel(flag) - return flag~=0 -end -function c10691144.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=Group.CreateGroup() - local flag=e:GetLabel() - if bit.band(flag,LOCATION_HAND)~=0 then - local rg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_HAND,nil) - if rg:GetCount()>0 then - local ct=1 - if rg:GetCount()>1 then ct=Duel.SelectOption(tp,aux.Stringid(10691144,3),aux.Stringid(10691144,4))+1 end - g:Merge(rg:RandomSelect(tp,ct)) - end - end - if bit.band(flag,LOCATION_ONFIELD)~=0 then - local rg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,nil) - if rg:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - g:Merge(rg:Select(tp,1,2,nil)) - end - end - if bit.band(flag,LOCATION_GRAVE)~=0 then - local rg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,nil) - if rg:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - g:Merge(rg:Select(tp,1,2,nil)) - end - end - Duel.Remove(g,POS_FACEUP,REASON_EFFECT) -end +--氷結界の鏡 +function c10691144.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c10691144.activate) + c:RegisterEffect(e1) +end +function c10691144.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,10691144)~=0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_REMOVE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCondition(c10691144.rmcon) + e1:SetOperation(c10691144.rmop) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,10691144,RESET_PHASE+PHASE_END,0,1) +end +function c10691144.rmcon(e,tp,eg,ep,ev,re,r,rp) + local flag=0 + local tc=eg:GetFirst() + while tc do + local ploc=tc:GetPreviousLocation() + local te=tc:GetReasonEffect() + if tc:IsReason(REASON_EFFECT) and not tc:IsReason(REASON_REDIRECT) and bit.band(ploc,0x1e)~=0 and tc:GetPreviousControler()==tp + and te:GetOwnerPlayer()==1-tp and te:IsActiveType(TYPE_MONSTER) and te:IsActivated() then + flag=bit.bor(flag,ploc) + end + tc=eg:GetNext() + end + e:SetLabel(flag) + return flag~=0 +end +function c10691144.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=Group.CreateGroup() + local flag=e:GetLabel() + if bit.band(flag,LOCATION_HAND)~=0 then + local rg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_HAND,nil) + if rg:GetCount()>0 then + local ct=1 + if rg:GetCount()>1 then ct=Duel.SelectOption(tp,aux.Stringid(10691144,3),aux.Stringid(10691144,4))+1 end + g:Merge(rg:RandomSelect(tp,ct)) + end + end + if bit.band(flag,LOCATION_ONFIELD)~=0 then + local rg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,nil) + if rg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g:Merge(rg:Select(tp,1,2,nil)) + end + end + if bit.band(flag,LOCATION_GRAVE)~=0 then + local rg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,nil) + if rg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g:Merge(rg:Select(tp,1,2,nil)) + end + end + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c10753491.lua b/script/c10753491.lua index 63f3c566..8d3d47c3 100644 --- a/script/c10753491.lua +++ b/script/c10753491.lua @@ -1,72 +1,72 @@ ---森羅の神芽 スプラウト -function c10753491.initial_effect(c) - --deck check - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(10753491,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetTarget(c10753491.target) - e1:SetOperation(c10753491.operation) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(10753491,2)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,10753491) - e2:SetCondition(c10753491.spcon) - e2:SetTarget(c10753491.sptg) - e2:SetOperation(c10753491.spop) - c:RegisterEffect(e2) -end -function c10753491.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c10753491.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct==0 then return end - local ac=1 - if ct>1 then - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(10753491,1)) - ac=Duel.AnnounceNumber(tp,1,2) - end - Duel.ConfirmDecktop(tp,ac) - local g=Duel.GetDecktopGroup(tp,ac) - local sg=g:Filter(Card.IsRace,nil,RACE_PLANT) - if sg:GetCount()>0 then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REVEAL) - end - ac=ac-sg:GetCount() - if ac>0 then - Duel.SortDecktop(tp,tp,ac) - for i=1,ac do - local mg=Duel.GetDecktopGroup(tp,1) - Duel.MoveSequence(mg:GetFirst(),1) - end - end -end -function c10753491.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c10753491.filter(c,e,tp) - return c:GetLevel()==1 and c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c10753491.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c10753491.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c10753491.spop(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,c10753491.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--森羅の神芽 スプラウト +function c10753491.initial_effect(c) + --deck check + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10753491,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c10753491.target) + e1:SetOperation(c10753491.operation) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(10753491,2)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,10753491) + e2:SetCondition(c10753491.spcon) + e2:SetTarget(c10753491.sptg) + e2:SetOperation(c10753491.spop) + c:RegisterEffect(e2) +end +function c10753491.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c10753491.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if ct==0 then return end + local ac=1 + if ct>1 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(10753491,1)) + ac=Duel.AnnounceNumber(tp,1,2) + end + Duel.ConfirmDecktop(tp,ac) + local g=Duel.GetDecktopGroup(tp,ac) + local sg=g:Filter(Card.IsRace,nil,RACE_PLANT) + if sg:GetCount()>0 then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REVEAL) + end + ac=ac-sg:GetCount() + if ac>0 then + Duel.SortDecktop(tp,tp,ac) + for i=1,ac do + local mg=Duel.GetDecktopGroup(tp,1) + Duel.MoveSequence(mg:GetFirst(),1) + end + end +end +function c10753491.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c10753491.filter(c,e,tp) + return c:GetLevel()==1 and c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c10753491.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c10753491.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c10753491.spop(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,c10753491.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c10809984.lua b/script/c10809984.lua index 65e32a38..f47b5a76 100644 --- a/script/c10809984.lua +++ b/script/c10809984.lua @@ -1,33 +1,33 @@ ---世紀の大泥棒 -function c10809984.initial_effect(c) - --handes - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(10809984,0)) - e1:SetCategory(CATEGORY_HANDES) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetCondition(c10809984.drcon) - e1:SetTarget(c10809984.drtg) - e1:SetOperation(c10809984.drop) - c:RegisterEffect(e1) -end -function c10809984.drcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c10809984.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,564) - local ac=Duel.AnnounceCard(tp) - Duel.SetTargetParam(ac) - Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) -end -function c10809984.drop(e,tp,eg,ep,ev,re,r,rp) - local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,ac) - local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) - Duel.ConfirmCards(tp,hg) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) - end - Duel.ShuffleHand(1-tp) -end +--世紀の大泥棒 +function c10809984.initial_effect(c) + --handes + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10809984,0)) + e1:SetCategory(CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c10809984.drcon) + e1:SetTarget(c10809984.drtg) + e1:SetOperation(c10809984.drop) + c:RegisterEffect(e1) +end +function c10809984.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c10809984.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c10809984.drop(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,ac) + local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.ConfirmCards(tp,hg) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + end + Duel.ShuffleHand(1-tp) +end diff --git a/script/c10817524.lua b/script/c10817524.lua index c10a1cea..6fce089a 100644 --- a/script/c10817524.lua +++ b/script/c10817524.lua @@ -1,34 +1,34 @@ ---始祖竜ワイアーム -function c10817524.initial_effect(c) - c:SetUniqueOnField(1,0,10817524) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsType,TYPE_NORMAL),2,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(c10817524.indval) - c:RegisterEffect(e2) - --immune - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_IMMUNE_EFFECT) - e3:SetValue(c10817524.efilter) - c:RegisterEffect(e3) -end -function c10817524.indval(e,c) - return not c:IsType(TYPE_NORMAL) -end -function c10817524.efilter(e,te) - return te:IsActiveType(TYPE_MONSTER) and te:GetOwner()~=e:GetOwner() -end +--始祖竜ワイアーム +function c10817524.initial_effect(c) + c:SetUniqueOnField(1,0,10817524) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionType,TYPE_NORMAL),2,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c10817524.indval) + c:RegisterEffect(e2) + --immune + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetValue(c10817524.efilter) + c:RegisterEffect(e3) +end +function c10817524.indval(e,c) + return not c:IsType(TYPE_NORMAL) +end +function c10817524.efilter(e,te) + return te:IsActiveType(TYPE_MONSTER) and te:GetOwner()~=e:GetOwner() +end diff --git a/script/c10833828.lua b/script/c10833828.lua index 5d964517..f9c4b2a9 100644 --- a/script/c10833828.lua +++ b/script/c10833828.lua @@ -18,7 +18,7 @@ function c10833828.initial_effect(c) --spsummon local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(10833828,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_SZONE) e3:SetCountLimit(1) @@ -70,7 +70,7 @@ function c10833828.spop1(e,tp,eg,ep,ev,re,r,rp) Duel.SpecialSummonComplete() end function c10833828.spfilter2(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return not c:IsImmuneToEffect(e) end function c10833828.spfilter3(c,e,tp,m,g,f,chkf) return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and (not f or f(c)) @@ -84,7 +84,7 @@ function c10833828.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) local g=e:GetHandler():GetCardTarget():Filter(Card.IsControler,nil,tp) if g:GetCount()==0 then return false end local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local mg1=Duel.GetFusionMaterial(tp) local res=Duel.IsExistingMatchingCard(c10833828.spfilter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,g,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) @@ -107,7 +107,7 @@ function c10833828.spop2(e,tp,eg,ep,ev,re,r,rp) g:Remove(Card.IsImmuneToEffect,nil,e) if g:GetCount()==0 then return false end local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c10833828.spfilter2,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c10833828.spfilter2,nil,e) local sg1=Duel.GetMatchingGroup(c10833828.spfilter3,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,g,nil,chkf) local mg2=nil local sg2=nil diff --git a/script/c10960419.lua b/script/c10960419.lua index 0abff93e..ad89df08 100644 --- a/script/c10960419.lua +++ b/script/c10960419.lua @@ -1,127 +1,127 @@ ---タイムマジック・ハンマー -function c10960419.initial_effect(c) - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e1) - --equip - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_EQUIP) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetTarget(c10960419.eqtg) - e2:SetOperation(c10960419.eqop) - c:RegisterEffect(e2) -end -c10960419.material_race=RACE_SPELLCASTER -function c10960419.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc~=e:GetHandler() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) -end -function c10960419.eqop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc then return end - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsLocation(LOCATION_SZONE) or c:IsFacedown() then return end - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c10960419.eqlimit) - e1:SetLabelObject(tc) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_REMOVE+CATEGORY_DICE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_START) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c10960419.rmcon) - e2:SetTarget(c10960419.rmtg) - e2:SetOperation(c10960419.rmop) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) -end -function c10960419.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c10960419.rmcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetEquipTarget() -end -function c10960419.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - local ec=e:GetHandler():GetEquipTarget() - local tc=ec:GetBattleTarget() - if chk==0 then return tc and tc:IsAbleToRemove() end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,tc,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) -end -function c10960419.rmop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local ec=e:GetHandler():GetEquipTarget() - local tc=ec:GetBattleTarget() - if tc:IsRelateToBattle() then - local ct=Duel.TossDice(tp,1) - if Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then - tc:SetTurnCounter(0) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE_START+PHASE_DRAW) - e1:SetReset(RESET_PHASE+PHASE_STANDBY,ct) - e1:SetLabel(ct) - e1:SetLabelObject(tc) - e1:SetCountLimit(1) - e1:SetCondition(c10960419.turncon) - e1:SetOperation(c10960419.turnop) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCondition(c10960419.retcon) - e2:SetOperation(c10960419.retop) - Duel.RegisterEffect(e2,tp) - tc:RegisterFlagEffect(1082946,RESET_PHASE+PHASE_STANDBY,0,ct) - local mt=_G["c"..tc:GetCode()] - mt[tc]=e1 - end - end -end -function c10960419.turncon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - return tc:GetFlagEffect(1082946)~=0 -end -function c10960419.turnop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - local ct=tc:GetTurnCounter() - ct=ct+1 - tc:SetTurnCounter(ct) - if ct>e:GetLabel() then - tc:ResetFlagEffect(1082946) - e:Reset() - end -end -function c10960419.retcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - local ct=tc:GetTurnCounter() - if ct==e:GetLabel() then - return true - end - if ct>e:GetLabel() then - e:Reset() - end - return false -end -function c10960419.retop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.ReturnToField(tc) -end +--タイムマジック・ハンマー +function c10960419.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c10960419.eqtg) + e2:SetOperation(c10960419.eqop) + c:RegisterEffect(e2) +end +c10960419.material_race=RACE_SPELLCASTER +function c10960419.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc~=e:GetHandler() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) +end +function c10960419.eqop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsLocation(LOCATION_SZONE) or c:IsFacedown() then return end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c10960419.eqlimit) + e1:SetLabelObject(tc) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_REMOVE+CATEGORY_DICE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c10960419.rmcon) + e2:SetTarget(c10960419.rmtg) + e2:SetOperation(c10960419.rmop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c10960419.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c10960419.rmcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget() +end +function c10960419.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetEquipTarget() + local tc=ec:GetBattleTarget() + if chk==0 then return tc and tc:IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c10960419.rmop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local ec=e:GetHandler():GetEquipTarget() + local tc=ec:GetBattleTarget() + if tc:IsRelateToBattle() then + local ct=Duel.TossDice(tp,1) + if Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + tc:SetTurnCounter(0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE_START+PHASE_DRAW) + e1:SetReset(RESET_PHASE+PHASE_STANDBY,ct) + e1:SetLabel(ct) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c10960419.turncon) + e1:SetOperation(c10960419.turnop) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c10960419.retcon) + e2:SetOperation(c10960419.retop) + Duel.RegisterEffect(e2,tp) + tc:RegisterFlagEffect(1082946,RESET_PHASE+PHASE_STANDBY,0,ct) + local mt=_G["c"..tc:GetCode()] + mt[tc]=e1 + end + end +end +function c10960419.turncon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return tc:GetFlagEffect(1082946)~=0 +end +function c10960419.turnop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local ct=tc:GetTurnCounter() + ct=ct+1 + tc:SetTurnCounter(ct) + if ct>e:GetLabel() then + tc:ResetFlagEffect(1082946) + e:Reset() + end +end +function c10960419.retcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local ct=tc:GetTurnCounter() + if ct==e:GetLabel() then + return true + end + if ct>e:GetLabel() then + e:Reset() + end + return false +end +function c10960419.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.ReturnToField(tc) +end diff --git a/script/c10971759.lua b/script/c10971759.lua index eb021cdf..7014da73 100644 --- a/script/c10971759.lua +++ b/script/c10971759.lua @@ -35,9 +35,8 @@ function c10971759.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) end function c10971759.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if Duel.GetLocationCount(tp,LOCATION_MZONE)1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end local tc=g:GetFirst() while tc do Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) diff --git a/script/c10979723.lua b/script/c10979723.lua index 67cc13e9..6f1e4c76 100644 --- a/script/c10979723.lua +++ b/script/c10979723.lua @@ -1,29 +1,29 @@ ---アマゾネスペット虎 -function c10979723.initial_effect(c) - c:SetUniqueOnField(1,0,10979723) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(c10979723.val) - c:RegisterEffect(e1) - --at limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetValue(c10979723.atlimit) - c:RegisterEffect(e2) -end -function c10979723.val(e,c) - return Duel.GetMatchingGroupCount(c10979723.filter,c:GetControler(),LOCATION_MZONE,0,nil)*400 -end -function c10979723.filter(c) - return c:IsFaceup() and c:IsSetCard(0x4) -end -function c10979723.atlimit(e,c) - return c:IsFaceup() and c:IsSetCard(0x4) and c~=e:GetHandler() -end +--アマゾネスペット虎 +function c10979723.initial_effect(c) + c:SetUniqueOnField(1,0,10979723) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c10979723.val) + c:RegisterEffect(e1) + --at limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetValue(c10979723.atlimit) + c:RegisterEffect(e2) +end +function c10979723.val(e,c) + return Duel.GetMatchingGroupCount(c10979723.filter,c:GetControler(),LOCATION_MZONE,0,nil)*400 +end +function c10979723.filter(c) + return c:IsFaceup() and c:IsSetCard(0x4) +end +function c10979723.atlimit(e,c) + return c:IsFaceup() and c:IsSetCard(0x4) and c~=e:GetHandler() +end diff --git a/script/c110000000.lua b/script/c110000000.lua new file mode 100644 index 00000000..5122df3a --- /dev/null +++ b/script/c110000000.lua @@ -0,0 +1,229 @@ +--スピード・ワールド 2 +function c110000000.initial_effect(c) + c:EnableCounterPermit(0x91) + c:SetCounterLimit(0x91,12) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(0xf7) + e1:SetOperation(c110000000.op) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c110000000.damop) + c:RegisterEffect(e2) + --add counter + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EVENT_PHASE_START+PHASE_STANDBY) + e3:SetOperation(c110000000.ctop) + c:RegisterEffect(e3) + --activation + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_ACTIVATE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(1,1) + e4:SetValue(c110000000.aclimit) + Duel.RegisterEffect(e4,tp) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c110000000.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e7:SetRange(LOCATION_SZONE) + e7:SetTargetRange(1,1) + e7:SetTarget(c110000000.aclimit2) + c:RegisterEffect(e7) + --DAMAGE + local e8=Effect.CreateEffect(c) + e8:SetCategory(CATEGORY_DAMAGE) + e8:SetDescription(aux.Stringid(110000000,0)) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetType(EFFECT_TYPE_IGNITION) + e8:SetRange(LOCATION_SZONE) + e8:SetCost(c110000000.cost1) + e8:SetTarget(c110000000.tg1) + e8:SetOperation(c110000000.op1) + c:RegisterEffect(e8) + --DRAW + local e9=Effect.CreateEffect(c) + e9:SetCategory(CATEGORY_DRAW) + e9:SetDescription(aux.Stringid(110000000,1)) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetType(EFFECT_TYPE_IGNITION) + e9:SetRange(LOCATION_SZONE) + e9:SetCost(c110000000.cost2) + e9:SetTarget(c110000000.tg2) + e9:SetOperation(c110000000.op2) + c:RegisterEffect(e9) + --DESTROY + local ea=Effect.CreateEffect(c) + ea:SetCategory(CATEGORY_DESTROY) + ea:SetDescription(aux.Stringid(110000000,2)) + ea:SetProperty(EFFECT_FLAG_CARD_TARGET) + ea:SetType(EFFECT_TYPE_IGNITION) + ea:SetRange(LOCATION_SZONE) + ea:SetCost(c110000000.cost3) + ea:SetTarget(c110000000.tg3) + ea:SetOperation(c110000000.op3) + c:RegisterEffect(ea) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c110000000.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c110000000.ctcon2(e,re) + return not re:GetHandler():IsCode(100100103) and re:GetOwner()~=e:GetOwner() +end +function c110000000.filter(c) + return c:GetCode()~=110000000 +end +function c110000000.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,110000000,nil,nil,nil,nil,nil,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end +function c110000000.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() + and c:GetControler()==e:GetHandler():GetControler() and not c:IsSetCard(0x200) then + Duel.Damage(rp,2000,REASON_EFFECT) + end +end +function c110000000.ctop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,100100090) then return end + e:GetHandler():AddCounter(0x91,1) +end +function c110000000.aclimit(e,re) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and re:GetHandler():IsType(TYPE_FIELD) +end +function c110000000.aclimit2(e,c) + return c:IsType(TYPE_FIELD) +end +function c110000000.cosilter(c) + return c:IsSetCard(0x200) and not c:IsPublic() +end +function c110000000.cost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x91,4,REASON_COST) + and Duel.IsExistingMatchingCard(c110000000.cosilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + e:GetHandler():RemoveCounter(tp,0x91,4,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c110000000.cosilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) +end +function c110000000.dafilter(c) + return c:IsSetCard(0x200) and c:IsType(TYPE_SPELL) +end +function c110000000.tg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c110000000.dafilter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c110000000.op1(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c110000000.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x91,7,REASON_COST) + and Duel.IsExistingMatchingCard(c110000000.cosilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + e:GetHandler():RemoveCounter(tp,0x91,7,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c110000000.cosilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) +end +function c110000000.tg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c110000000.op2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c110000000.cost3(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x91,10,REASON_COST) + and Duel.IsExistingMatchingCard(c110000000.cosilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + e:GetHandler():RemoveCounter(tp,0x91,10,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c110000000.cosilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) +end +function c110000000.tg3(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_ONFIELD and Card.IsDestructable(chkc) end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c110000000.op3(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c110000000.tgn(e,c) + return c==e:GetHandler() +end \ No newline at end of file diff --git a/script/c110000010.lua b/script/c110000010.lua new file mode 100644 index 00000000..bc5a360f --- /dev/null +++ b/script/c110000010.lua @@ -0,0 +1,186 @@ +--ラーの翼神竜WCS効果 +function c110000010.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c110000010.ttcon) + e1:SetOperation(c110000010.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c110000010.setcon) + c:RegisterEffect(e2) + --summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e3) + --summon success + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c110000010.sumsuc) + c:RegisterEffect(e4) + --cannot be target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(1) + c:RegisterEffect(e5) + --to grave + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(110000010,0)) + e6:SetCategory(CATEGORY_TOGRAVE) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_MZONE) + e6:SetProperty(EFFECT_FLAG_REPEAT) + e6:SetCountLimit(1) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetCondition(c110000010.tgcon) + e6:SetTarget(c110000010.tgtg) + e6:SetOperation(c110000010.tgop) + c:RegisterEffect(e6) + --tribute check + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_MATERIAL_CHECK) + e7:SetValue(c110000010.valcheck) + c:RegisterEffect(e7) + --give atk effect only when summon + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_SUMMON_COST) + e8:SetOperation(c110000010.facechk) + e8:SetLabelObject(e7) + c:RegisterEffect(e8) + --destroy + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(110000010,1)) + e9:SetCategory(CATEGORY_DESTROY+CATEGORY_REMOVE) + e9:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e9:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e9:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e9:SetCode(EVENT_SPSUMMON_SUCCESS) + e9:SetCost(c110000010.descost) + e9:SetTarget(c110000010.destg) + e9:SetOperation(c110000010.desop) + c:RegisterEffect(e9) + --pay atk/def + local e10=Effect.CreateEffect(c) + e10:SetDescription(aux.Stringid(110000010,2)) + e10:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e10:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e10:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e10:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e10:SetCode(EVENT_SPSUMMON_SUCCESS) + e10:SetCost(c110000010.adcost) + e10:SetOperation(c110000010.adop) + c:RegisterEffect(e10) +end +function c110000010.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c110000010.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c110000010.setcon(e,c) + if not c then return true end + return false +end +function c110000010.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(aux.FALSE) +end +function c110000010.tgcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c110000010.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,e:GetHandler(),1,0,0) +end +function c110000010.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.SendtoGrave(c,REASON_EFFECT) + end +end +function c110000010.valcheck(e,c) + local g=c:GetMaterial() + local tc=g:GetFirst() + local atk=0 + local def=0 + while tc do + local catk=tc:GetTextAttack() + local cdef=tc:GetTextDefense() + atk=atk+(catk>=0 and catk or 0) + def=def+(cdef>=0 and cdef or 0) + tc=g:GetNext() + end + if e:GetLabel()==1 then + e:SetLabel(0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetValue(def) + c:RegisterEffect(e2) + end +end +function c110000010.facechk(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetLabel(1) +end +function c110000010.descost(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 c110000010.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c110000010.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT,LOCATION_REMOVED) + end +end +function c110000010.adcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLP(tp)>1 end + local lp=Duel.GetLP(tp) + e:SetLabel(lp-1) + Duel.PayLPCost(tp,lp-1) +end +function c110000010.adop(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_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end diff --git a/script/c110000011.lua b/script/c110000011.lua new file mode 100644 index 00000000..5254f358 --- /dev/null +++ b/script/c110000011.lua @@ -0,0 +1,103 @@ +--オベリスクの巨神兵WCS効果 +function c110000011.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c110000011.ttcon) + e1:SetOperation(c110000011.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c110000011.setcon) + c:RegisterEffect(e2) + --summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e3) + --summon success + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c110000011.sumsuc) + c:RegisterEffect(e4) + --cannot be target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(1) + c:RegisterEffect(e5) + --to grave + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(110000010,0)) + e6:SetCategory(CATEGORY_TOGRAVE) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_MZONE) + e6:SetProperty(EFFECT_FLAG_REPEAT) + e6:SetCountLimit(1) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetCondition(c110000011.tgcon) + e6:SetTarget(c110000011.tgtg) + e6:SetOperation(c110000011.tgop) + c:RegisterEffect(e6) + --destroy + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(10000000,1)) + e7:SetCategory(CATEGORY_DESTROY) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetRange(LOCATION_MZONE) + e7:SetCost(c110000011.descost) + e7:SetTarget(c110000011.destg) + e7:SetOperation(c110000011.desop) + c:RegisterEffect(e7) +end +function c110000011.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c110000011.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c110000011.setcon(e,c) + if not c then return true end + return false +end +function c110000011.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(aux.FALSE) +end +function c110000011.tgcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c110000011.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,e:GetHandler(),1,0,0) +end +function c110000011.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.SendtoGrave(c,REASON_EFFECT) + end +end +function c110000011.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,2,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,2,2,nil) + Duel.Release(g,REASON_COST) +end +function c110000011.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c110000011.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c110000012.lua b/script/c110000012.lua new file mode 100644 index 00000000..4b570863 --- /dev/null +++ b/script/c110000012.lua @@ -0,0 +1,123 @@ +--オシリスの天空竜 +function c110000012.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c110000012.ttcon) + e1:SetOperation(c110000012.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c110000012.setcon) + c:RegisterEffect(e2) + --summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e3) + --summon success + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c110000012.sumsuc) + c:RegisterEffect(e4) + --to grave + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(10000020,0)) + e5:SetCategory(CATEGORY_TOGRAVE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetCondition(c110000012.tgcon) + e5:SetTarget(c110000012.tgtg) + e5:SetOperation(c110000012.tgop) + c:RegisterEffect(e5) + --atk/def + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SET_ATTACK) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetValue(c110000012.adval) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e7) + --destroy + local e8=Effect.CreateEffect(c) + e8:SetCategory(CATEGORY_DESTROY) + e8:SetDescription(aux.Stringid(10000020,1)) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e8:SetRange(LOCATION_MZONE) + e8:SetCode(EVENT_SUMMON_SUCCESS) + e8:SetTarget(c110000012.destg) + e8:SetOperation(c110000012.desop) + c:RegisterEffect(e8) + local e9=e8:Clone() + e9:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e9) + local e10=e8:Clone() + e10:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e10) + --cannot be target + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_SINGLE) + e11:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e11:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e11:SetRange(LOCATION_MZONE) + e11:SetValue(1) + c:RegisterEffect(e11) +end +function c110000012.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c110000012.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c110000012.setcon(e,c) + if not c then return true end + return false +end +function c110000012.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(aux.FALSE) +end +function c110000012.tgcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c110000012.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,e:GetHandler(),1,0,0) +end +function c110000012.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.SendtoGrave(c,REASON_EFFECT) + end +end +function c110000012.adval(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)*1000 +end +function c110000012.filter(c,e,tp) + return c:IsControler(1-tp) and c:IsFaceup() and (c:IsDefenseBelow(2000) or c:IsAttackBelow(2000)) and (not e or c:IsRelateToEffect(e)) +end +function c110000012.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and eg:IsExists(c110000012.filter,1,nil,nil,tp) end + local g=eg:Filter(c110000012.filter,nil,nil,tp) + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c110000012.desop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c110000012.filter,nil,e,tp) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c110000099.lua b/script/c110000099.lua new file mode 100644 index 00000000..45551004 --- /dev/null +++ b/script/c110000099.lua @@ -0,0 +1,75 @@ +--Cursed Prison +--Last edited: 20 Aug 2016 MLD +function c110000099.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c110000099.target) + e1:SetOperation(c110000099.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c110000099.desop) + c:RegisterEffect(e2) + --Destroy2 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c110000099.descon2) + e3:SetOperation(c110000099.desop2) + c:RegisterEffect(e3) +end +function c110000099.filter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c110000099.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c110000099.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c110000099.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c110000099.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then + c:SetCardTarget(tc) + Duel.SpecialSummonComplete() + 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_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c110000099.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_TRIGGER) + tc:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + tc:RegisterEffect(e3,true) + end +end +function c110000099.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c110000099.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c110000099.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c110000099.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c110000100.lua b/script/c110000100.lua new file mode 100644 index 00000000..d3511c52 --- /dev/null +++ b/script/c110000100.lua @@ -0,0 +1,83 @@ +--オレイカルコス・デウテロス +function c110000100.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c110000100.atcon) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c110000100.target) + e2:SetOperation(c110000100.operation) + c:RegisterEffect(e2) + --DESTROY + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c110000100.atkcon) + e3:SetCost(c110000100.cost) + e3:SetTarget(c110000100.atktg) + e3:SetOperation(c110000100.atkop) + c:RegisterEffect(e3) + --selfdes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ADJUST) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c110000100.sdcon2) + e4:SetOperation(c110000100.sdop) + c:RegisterEffect(e4) +end +function c110000100.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(110000100)==0 +end +function c110000100.sdop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():CopyEffect(48179391,RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterFlagEffect(110000100,RESET_EVENT+0x1fe0000,0,1) +end +function c110000100.atcon(e) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc~=nil and tc:IsFaceup() and tc:IsCode(48179391) +end +function c110000100.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 end + Duel.SetTargetPlayer(tp) + local rec=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)*500 + Duel.SetTargetParam(rec) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) +end +function c110000100.operation(e,tp,eg,ep,ev,re,r,rp) + local rec=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)*500 + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Recover(p,rec,REASON_EFFECT) +end +function c110000100.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c110000100.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c110000100.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsDestructable() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c110000100.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsRelateToEffect(e) and tc:IsAttackable() and Duel.NegateAttack() then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c110000101.lua b/script/c110000101.lua new file mode 100644 index 00000000..5334389d --- /dev/null +++ b/script/c110000101.lua @@ -0,0 +1,44 @@ +--オレイカルコス・トリトス +function c110000101.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c110000101.atcon) + c:RegisterEffect(e1) + --immune + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetValue(c110000101.efilter) + c:RegisterEffect(e3) + --selfdes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ADJUST) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c110000101.sdcon2) + e4:SetOperation(c110000101.sdop) + c:RegisterEffect(e4) +end +function c110000101.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(110000101)==0 +end +function c110000101.sdop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():CopyEffect(48179391,RESET_EVENT+0x1fe0000) + e:GetHandler():CopyEffect(110000100,RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterFlagEffect(110000101,RESET_EVENT+0x1fe0000,0,1) +end +function c110000101.atcon(e) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc~=nil and tc:IsFaceup() and tc:GetCode()==110000100 +end +function c110000101.sdcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(110000101)==0 +end +function c110000101.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) and te:GetHandler():GetControler()~=e:GetHandler():GetControler() +end diff --git a/script/c110000102.lua b/script/c110000102.lua new file mode 100644 index 00000000..3e9e7233 --- /dev/null +++ b/script/c110000102.lua @@ -0,0 +1,68 @@ +--Living Fossil +function c110000102.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c110000102.target) + e1:SetOperation(c110000102.operation) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-1000) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c110000102.desop) + c:RegisterEffect(e4) +end +function c110000102.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c110000102.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and c110000102.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c110000102.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c110000102.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c110000102.eqlimit(e,c) + return e:GetOwner()==c +end +function c110000102.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c110000102.eqlimit) + c:RegisterEffect(e1) + end +end +function c110000102.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if c:IsReason(REASON_DESTROY) and tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end + diff --git a/script/c110000103.lua b/script/c110000103.lua new file mode 100644 index 00000000..00035bfc --- /dev/null +++ b/script/c110000103.lua @@ -0,0 +1,117 @@ +--Active Guard +function c110000103.initial_effect(c) + --defup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c110000103.val) + c:RegisterEffect(e1) + --no damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(110000103,0)) + e2:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCondition(c110000103.con) + e2:SetOperation(c110000103.op) + c:RegisterEffect(e2) + if not c110000103.global_check then + c110000103.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000103.atkcon) + ge1:SetTarget(c110000103.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000103.checkop) + ge2:SetLabelObject(e2) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000103.atcon) + ge3:SetOperation(c110000103.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000103.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000103.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000103.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000103.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000103.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000103.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000103.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000103.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000103.val(e,c) + return Duel.GetMatchingGroupCount(c110000103.filter,c:GetControler(),LOCATION_MZONE,0,nil)*500 +end +function c110000103.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c110000103.op(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(0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + -- + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c110000103.tgop) + e3:SetReset(RESET_EVENT+0xc6e0000) + e:GetHandler():RegisterEffect(e3) +end +function c110000103.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c110000104.lua b/script/c110000104.lua new file mode 100644 index 00000000..294a72c6 --- /dev/null +++ b/script/c110000104.lua @@ -0,0 +1,134 @@ +--Psychic Armor Head +function c110000104.initial_effect(c) + --Search + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PREDRAW) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c110000104.thcon) + e1:SetTarget(c110000104.thtg) + e1:SetOperation(c110000104.thop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c110000104.spcon) + e2:SetTarget(c110000104.sptg) + e2:SetOperation(c110000104.spop) + c:RegisterEffect(e2) + if not c110000104.global_check then + c110000104.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000104.atkcon) + ge1:SetTarget(c110000104.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000104.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000104.atcon) + ge3:SetOperation(c110000104.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000104.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000104.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000104.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000104.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000104.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000104.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000104.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000104.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000104.thcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c110000104.thfilter(c) + return c:IsType(0x10000000) and c:IsAbleToHand() and c:IsType(TYPE_MONSTER) +end +function c110000104.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c110000104.thfilter,tp,LOCATION_DECK,0,1,nil) end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c110000104.thop(e,tp,eg,ep,ev,re,r,rp) + _replace_count=_replace_count+1 + if _replace_count>_replace_max or not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown()then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c110000104.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c110000104.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c110000104.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c110000104.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c110000105.lua b/script/c110000105.lua new file mode 100644 index 00000000..dd960e5d --- /dev/null +++ b/script/c110000105.lua @@ -0,0 +1,96 @@ +--Trap Buster +function c110000105.initial_effect(c) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_SZONE) + e3:SetTarget(c110000105.distg) + c:RegisterEffect(e3) + --disable effect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAIN_SOLVING) + e4:SetRange(LOCATION_MZONE) + e4:SetOperation(c110000105.disop) + c:RegisterEffect(e4) + if not c110000105.global_check then + c110000105.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000105.atkcon) + ge1:SetTarget(c110000105.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000105.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000105.atcon) + ge3:SetOperation(c110000105.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000105.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000105.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000105.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000105.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000105.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000105.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000105.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000105.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000105.cfilter(c,tp) + return c:IsFaceup() and c:IsType(0x10000000) and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) +end +function c110000105.distg(e,c) + return c:GetCardTargetCount()>0 and c:IsType(TYPE_TRAP) + and c:GetCardTarget():IsExists(c110000105.cfilter,1,nil,e:GetHandlerPlayer()) +end +function c110000105.disop(e,tp,eg,ep,ev,re,r,rp) + if not re:IsActiveType(TYPE_TRAP) then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or not g:IsExists(c110000105.cfilter,1,nil,tp) then return end + Duel.NegateEffect(ev) +end diff --git a/script/c110000106.lua b/script/c110000106.lua new file mode 100644 index 00000000..008de031 --- /dev/null +++ b/script/c110000106.lua @@ -0,0 +1,75 @@ +--Over Boost +function c110000106.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsType,0x10000000)) + c:RegisterEffect(e1) + if not c110000106.global_check then + c110000106.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000106.atkcon) + ge1:SetTarget(c110000106.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000106.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000106.atcon) + ge3:SetOperation(c110000106.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000106.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000106.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000106.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000106.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000106.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000106.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000106.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000106.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end diff --git a/script/c110000107.lua b/script/c110000107.lua new file mode 100644 index 00000000..64e8a283 --- /dev/null +++ b/script/c110000107.lua @@ -0,0 +1,93 @@ +--Jet Gauntlet +function c110000107.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(110000107,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetTarget(c110000107.destg) + e1:SetOperation(c110000107.desop) + c:RegisterEffect(e1) + if not c110000107.global_check then + c110000107.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000107.atkcon) + ge1:SetTarget(c110000107.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000107.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000107.atcon) + ge3:SetOperation(c110000107.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000107.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 + and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000107.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000107.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000107.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000107.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000107.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000107.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000107.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000107.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetAttackTarget()==c or (Duel.GetAttacker()==c and Duel.GetAttackTarget()~=nil) end + local g=Group.FromCards(Duel.GetAttacker(),Duel.GetAttackTarget()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c110000107.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Group.CreateGroup() + local c=Duel.GetAttacker() + if c:IsRelateToBattle() then g:AddCard(c) end + c=Duel.GetAttackTarget() + if c~=nil and c:IsRelateToBattle() then g:AddCard(c) end + if g:GetCount()>0 then + Duel.Destroy(g,nil,REASON_EFFECT) + end +end diff --git a/script/c110000108.lua b/script/c110000108.lua new file mode 100644 index 00000000..2c32bfad --- /dev/null +++ b/script/c110000108.lua @@ -0,0 +1,101 @@ +--Black Hole Shield +function c110000108.initial_effect(c) + --Black Hole deflection + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c110000108.ndcon) + e1:SetCost(c110000108.ndcost) + e1:SetOperation(c110000108.ndop) + c:RegisterEffect(e1) + if not c110000108.global_check then + c110000108.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000108.atkcon) + ge1:SetTarget(c110000108.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000108.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000108.atcon) + ge3:SetOperation(c110000108.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000108.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000108.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000108.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000108.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000108.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000108.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000108.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000108.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000108.ndcon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) and d:IsFaceup() and d~=e:GetHandler() and d:IsType(0x10000000) +end +function c110000108.ndcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c110000108.ndop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d and d:IsFaceup() and d:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + d:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + d:RegisterEffect(e2) + end +end diff --git a/script/c110000109.lua b/script/c110000109.lua new file mode 100644 index 00000000..5ae3879d --- /dev/null +++ b/script/c110000109.lua @@ -0,0 +1,102 @@ +--Buster Knuckle +function c110000109.initial_effect(c) + --Piercing + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c110000109.atkup) + c:RegisterEffect(e2) + --sum limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_SUMMON) + e3:SetCondition(c110000109.sumlimit) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e5) + if not c110000109.global_check then + c110000109.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000109.atkcon) + ge1:SetTarget(c110000109.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000109.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000109.atcon) + ge3:SetOperation(c110000109.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000109.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000109.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000109.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000109.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000109.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000109.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000109.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000109.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000109.atkup(e,c) + return Duel.GetMatchingGroupCount(c110000109.filter,c:GetControler(),LOCATION_MZONE,0,nil)*200 +end +function c110000109.operation(e) + return Duel.GetMatchingGroupCount(c110000109.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,nil)==0 +end +function c110000109.sumlimit(e) + return not Duel.IsExistingMatchingCard(c110000109.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c110000110.lua b/script/c110000110.lua new file mode 100644 index 00000000..d3b9bb6d --- /dev/null +++ b/script/c110000110.lua @@ -0,0 +1,94 @@ +--Big Bang Blow +function c110000110.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c110000110.descon) + e1:SetTarget(c110000110.destg) + e1:SetOperation(c110000110.desop) + c:RegisterEffect(e1) + if not c110000110.global_check then + c110000110.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000110.atkcon) + ge1:SetTarget(c110000110.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000110.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000110.atcon) + ge3:SetOperation(c110000110.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000110.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000110.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000110.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000110.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000110.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000110.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000110.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000110.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000110.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c110000110.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c110000110.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g:GetCount(),g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c110000110.desop(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local dam=g:GetSum(Card.GetAttack) + Duel.Destroy(g,REASON_EFFECT) + Duel.Damage(1-tp,dam,REASON_EFFECT,true) + Duel.Damage(tp,dam,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c110000111.lua b/script/c110000111.lua new file mode 100644 index 00000000..b4363eec --- /dev/null +++ b/script/c110000111.lua @@ -0,0 +1,100 @@ +--Burning Knuckle +function c110000111.initial_effect(c) + --gains 200 ATK for each armor monster + 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:SetValue(c110000111.atkup) + c:RegisterEffect(e1) + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_ATKCHANGE) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_BATTLED) + e5:SetCondition(c110000111.rbcon) + e5:SetOperation(c110000111.rbop) + c:RegisterEffect(e5) + if not c110000111.global_check then + c110000111.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000111.atkcon) + ge1:SetTarget(c110000111.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000111.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000111.atcon) + ge3:SetOperation(c110000111.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000111.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000111.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000111.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000111.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000111.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000111.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000111.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000111.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000111.atkup(e,c) + return Duel.GetMatchingGroupCount(c110000111.filter,c:GetControler(),LOCATION_MZONE,0,nil)*200 +end +function c110000111.rbcon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return e:GetHandler()==Duel.GetAttacker() and d and d:IsRelateToBattle() and not d:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c110000111.rbop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + local val=e:GetHandler():GetAttack() + if not d:IsRelateToBattle() or d:IsFacedown() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-val) + e1:SetReset(RESET_EVENT+0x1fe0000) + d:RegisterEffect(e1) +end diff --git a/script/c110000112.lua b/script/c110000112.lua new file mode 100644 index 00000000..ea976233 --- /dev/null +++ b/script/c110000112.lua @@ -0,0 +1,88 @@ +--Advanced Shield +function c110000112.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e1) + --sum limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_SUMMON) + e3:SetCondition(c110000112.sumlimit) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e5) + if not c110000112.global_check then + c110000112.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000112.atkcon) + ge1:SetTarget(c110000112.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000112.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000112.atcon) + ge3:SetOperation(c110000112.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000112.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000112.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000112.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000112.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000112.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000112.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000112.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000112.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000112.sumlimit(e) + return not Duel.IsExistingMatchingCard(c110000112.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c110000113.lua b/script/c110000113.lua new file mode 100644 index 00000000..85bb4b36 --- /dev/null +++ b/script/c110000113.lua @@ -0,0 +1,59 @@ +--Phoenix Gravitation +function c110000113.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c110000113.condition) + e1:SetTarget(c110000113.target) + e1:SetOperation(c110000113.op) + c:RegisterEffect(e1) +end +function c110000113.cfilter(c) + return c:IsFaceup() and c:IsCode(110000104) +end +function c110000113.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c110000113.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c110000113.filter(c,e,tp) + return c:IsType(0x10000000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c110000113.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c110000113.filter,tp,LOCATION_GRAVE,0,4,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,4,tp,LOCATION_GRAVE) +end +function c110000113.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c110000113.filter,tp,LOCATION_GRAVE,0,nil,e,tp) + if g:GetCount()>=4 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,4,4,nil) + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(110000113,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() + sg:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabelObject(sg) + e1:SetOperation(c110000113.desop) + Duel.RegisterEffect(e1,tp) + end +end +function c110000113.desfilter(c) + return c:GetFlagEffect(110000113)>0 +end +function c110000113.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c110000113.desfilter,nil) + g:DeleteGroup() + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c110000114.lua b/script/c110000114.lua new file mode 100644 index 00000000..85d45dde --- /dev/null +++ b/script/c110000114.lua @@ -0,0 +1,70 @@ +--Full Armor Gravitation +function c110000114.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c110000114.target) + e1:SetOperation(c110000114.operation) + c:RegisterEffect(e1) +end +function c110000114.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetDecktopGroup(tp,10) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsPlayerCanSpecialSummon(tp) + and g:FilterCount(Card.IsAbleToRemove,nil)==10 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,0,tp,LOCATION_DECK) +end +function c110000114.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsType(0x10000000) +end +function c110000114.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetDecktopGroup(tp,10) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if g:FilterCount(Card.IsAbleToRemove,nil)~=10 then return end + Duel.DisableShuffleCheck() + Duel.ConfirmDecktop(tp,10) + if not Duel.IsPlayerCanSpecialSummon(tp) or ft<=0 then + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + return + end + local ct=g:FilterCount(c110000114.filter,nil,e,tp) + if ct>0 and ft>=ct then + local g2=g:Filter(c110000114.filter,nil,e,tp) + Duel.SpecialSummon(g2,0,tp,tp,false,false,POS_FACEUP) + g:Sub(g2) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + return + end + ct=1 + local g1=Duel.GetDecktopGroup(tp,ct) + local g2=Duel.GetDecktopGroup(tp,ct+1) + g2:Sub(g1) + if g1:GetFirst():IsType(0x10000000) and g1:GetFirst():IsCanBeSpecialSummoned(e,0,tp,false,false) and ft>0 then + Duel.SpecialSummonStep(g1:GetFirst(),0,tp,tp,false,false,POS_FACEUP) + g:RemoveCard(g1:GetFirst()) + ft=ft-1 + end + local tc=g2:GetFirst() + if tc:IsType(0x10000000) and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) and ft>0 then + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + g:RemoveCard(tc) + ft=ft-1 + end + while ct+1<10 do + ct=ct+1 + g1=Duel.GetDecktopGroup(tp,ct) + g2=Duel.GetDecktopGroup(tp,ct+1) + g2:Sub(g1) + tc=g2:GetFirst() + if tc:IsType(0x10000000) and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) and ft>0 then + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + g:RemoveCard(tc) + ft=ft-1 + end + end + Duel.SpecialSummonComplete() + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c110000115.lua b/script/c110000115.lua new file mode 100644 index 00000000..59eb39ec --- /dev/null +++ b/script/c110000115.lua @@ -0,0 +1,40 @@ +--Magnet Armor +function c110000115.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c110000115.target) + e1:SetOperation(c110000115.activate) + c:RegisterEffect(e1) +end +function c110000115.filter(c,e,tp) + return c:IsType(0x10000000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c110000115.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c110000115.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c110000115.activate(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,c110000115.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c110000115.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + tc:RegisterEffect(e1) + end +end +function c110000115.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c110000116.lua b/script/c110000116.lua new file mode 100644 index 00000000..4b17d8d3 --- /dev/null +++ b/script/c110000116.lua @@ -0,0 +1,65 @@ +--Armored Gravitation +function c110000116.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c110000116.target) + e1:SetOperation(c110000116.activate) + c:RegisterEffect(e1) +end +function c110000116.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsType(0x10000000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c110000116.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c110000116.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c110000116.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>4 then ft=4 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c110000116.filter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + local fid=e:GetHandler():GetFieldID() + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + tc:RegisterFlagEffect(110000116,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + g:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c110000116.tgcon) + e1:SetOperation(c110000116.tgop) + Duel.RegisterEffect(e1,tp) + end +end +function c110000116.tgfilter(c,fid) + return c:GetFlagEffectLabel(110000116)==fid +end +function c110000116.tgcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c110000116.tgfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c110000116.tgop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c110000116.tgfilter,nil,e:GetLabel()) + g:DeleteGroup() + Duel.SendtoGrave(tg,REASON_EFFECT) +end diff --git a/script/c110000117.lua b/script/c110000117.lua new file mode 100644 index 00000000..bdcc7cd9 --- /dev/null +++ b/script/c110000117.lua @@ -0,0 +1,102 @@ +--Buster Pyle +function c110000117.initial_effect(c) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c110000117.bbcon) + e3:SetTarget(c110000117.bbtar) + e3:SetOperation(c110000117.bbop) + c:RegisterEffect(e3) + if not c110000117.global_check then + c110000117.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000117.atkcon) + ge1:SetTarget(c110000117.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000117.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000117.atcon) + ge3:SetOperation(c110000117.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000117.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000117.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000117.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000117.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000117.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000117.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000117.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000117.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000117.bbcon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return e:GetHandler()==Duel.GetAttacker() and d and d:IsRelateToBattle() +end +function c110000117.bbtar(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttackTarget():IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttackTarget(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c110000117.bbop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d:IsRelateToBattle() and Duel.Destroy(d,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c110000120.lua b/script/c110000120.lua new file mode 100644 index 00000000..c19d706c --- /dev/null +++ b/script/c110000120.lua @@ -0,0 +1,99 @@ +--Double Cloth Armor +function c110000120.initial_effect(c) + --Cannot Attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(110000107,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_START) + e2:SetTarget(c110000120.destg) + e2:SetOperation(c110000120.desop) + c:RegisterEffect(e2) + if not c110000120.global_check then + c110000120.global_check=true + if Duel.GetFlagEffect(0,110000104)==0 and Duel.GetFlagEffect(1,110000104)==0 then + Duel.RegisterFlagEffect(0,110000104,0,0,1) + Duel.RegisterFlagEffect(1,110000104,0,0,1) + --cannot attack + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c110000120.atkcon) + ge1:SetTarget(c110000120.atktg) + Duel.RegisterEffect(ge1,0) + --check + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetCode(EVENT_ATTACK_ANNOUNCE) + ge2:SetOperation(c110000120.checkop) + ge2:SetLabelObject(ge1) + Duel.RegisterEffect(ge2,0) + --change attack target + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BE_BATTLE_TARGET) + ge3:SetCondition(c110000120.atcon) + ge3:SetOperation(c110000120.atop) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + Duel.RegisterEffect(ge4,1) + end + end +end +function c110000120.atkcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),110000103)~=0 and Duel.GetFlagEffect(1-e:GetHandlerPlayer(),110000103)~=0 +end +function c110000120.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(0x10000000) +end +function c110000120.checkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsType(0x10000000) then return end + if Duel.GetFlagEffect(tp,110000103)~=0 and Duel.GetFlagEffect(1-tp,110000103)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + Duel.RegisterFlagEffect(tp,110000103,RESET_PHASE+PHASE_END,0,1) + Duel.RegisterFlagEffect(1-tp,110000103,RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c110000120.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(0x10000000) +end +function c110000120.filter(c) + return c:IsFaceup() and c:IsType(0x10000000) +end +function c110000120.atop(e,tp,eg,ep,ev,re,r,rp) + local atg=Duel.GetAttacker():GetAttackableTarget() + local d=Duel.GetAttackTarget() + if atg:IsExists(c110000120.filter,1,d) and Duel.SelectYesNo(tp,aux.Stringid(21558682,0)) then + local g=atg:FilterSelect(tp,c110000120.filter,1,1,d) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c110000120.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetAttackTarget() and Duel.GetAttackTarget()==c end + local g=Group.FromCards(Duel.GetAttacker(),Duel.GetAttackTarget()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,Duel.GetAttacker():GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c110000120.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Group.CreateGroup() + local c=Duel.GetAttacker() + if c:IsRelateToBattle() then g:AddCard(c) end + Duel.Damage(1-tp,c:GetAttack()/2,REASON_EFFECT) + c=Duel.GetAttackTarget() + if c~=nil and c:IsRelateToBattle() then g:AddCard(c) end + if g:GetCount()>0 then + Duel.Destroy(g,nil,REASON_EFFECT) + end +end diff --git a/script/c11039171.lua b/script/c11039171.lua index 35dca3e5..0b60b937 100644 --- a/script/c11039171.lua +++ b/script/c11039171.lua @@ -1,28 +1,28 @@ ---デストーイ・シザー・ウルフ -function c11039171.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFunRep(c,30068120,aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),1,63,false,false) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(aux.fuslimit) - c:RegisterEffect(e2) - --multi - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetOperation(c11039171.atkop) - c:RegisterEffect(e3) -end -function c11039171.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(c:GetMaterialCount()-1) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end +--デストーイ・シザー・ウルフ +function c11039171.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFunRep(c,30068120,aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),1,63,false,false) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(aux.fuslimit) + c:RegisterEffect(e2) + --multi + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c11039171.atkop) + c:RegisterEffect(e3) +end +function c11039171.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(c:GetMaterialCount()-1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end diff --git a/script/c11050415.lua b/script/c11050415.lua index 02b7cce9..c153a03d 100644 --- a/script/c11050415.lua +++ b/script/c11050415.lua @@ -20,8 +20,8 @@ end function c11050415.activate(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,c11050415.filter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c11050415.filter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then if Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)==0 then return end local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 or (Duel.IsPlayerAffectedByEffect(tp,59822133) and ft>1) then return end diff --git a/script/c11067666.lua b/script/c11067666.lua new file mode 100644 index 00000000..5555f162 --- /dev/null +++ b/script/c11067666.lua @@ -0,0 +1,41 @@ +--白翼の魔術師 +function c11067666.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetRange(LOCATION_PZONE) + e1:SetCondition(c11067666.condition) + e1:SetOperation(c11067666.operation) + c:RegisterEffect(e1) + --Banish + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(LOCATION_REMOVED) + e2:SetCondition(c11067666.rmcon) + c:RegisterEffect(e2) +end +function c11067666.cfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsControler(tp) +end +function c11067666.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return e:GetHandler():GetFlagEffect(11067666)==0 and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) + and g and g:IsExists(c11067666.cfilter,1,nil,tp) and Duel.IsChainDisablable(ev) +end +function c11067666.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(11067666,0)) then + e:GetHandler():RegisterFlagEffect(11067666,RESET_EVENT+0x1fe0000,0,1) + if Duel.NegateEffect(ev) then + Duel.BreakEffect() + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end + end +end +function c11067666.rmcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(c:GetSummonType(),SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM and c:IsReason(REASON_MATERIAL) and c:IsReason(REASON_SYNCHRO) +end diff --git a/script/c11082056.lua b/script/c11082056.lua index 8a5ed486..e466e42f 100644 --- a/script/c11082056.lua +++ b/script/c11082056.lua @@ -1,49 +1,49 @@ ---クリティウスの牙 -function c11082056.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,11082056+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c11082056.target) - e1:SetOperation(c11082056.activate) - c:RegisterEffect(e1) - --add code - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ADD_CODE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetValue(10000060) - c:RegisterEffect(e2) -end -function c11082056.tgfilter(c,e,tp) - return c:IsType(TYPE_TRAP) and Duel.IsExistingMatchingCard(c11082056.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetCode()) -end -function c11082056.spfilter(c,e,tp,code) - return c:IsType(TYPE_FUSION) and c.material_trap and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and code==c.material_trap -end -function c11082056.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c11082056.tgfilter,tp,LOCATION_HAND+LOCATION_SZONE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c11082056.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g=Duel.SelectMatchingCard(tp,c11082056.tgfilter,tp,LOCATION_HAND+LOCATION_SZONE,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and not tc:IsImmuneToEffect(e) then - if tc:IsOnField() and tc:IsFacedown() then Duel.ConfirmCards(1-tp,tc) end - Duel.SendtoGrave(tc,REASON_EFFECT) - if not tc:IsLocation(LOCATION_GRAVE) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c11082056.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetCode()) - local sc=sg:GetFirst() - if sc then - Duel.BreakEffect() - Duel.SpecialSummon(sc,0,tp,tp,true,false,POS_FACEUP) - sc:CompleteProcedure() - end - end -end +--クリティウスの牙 +function c11082056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,11082056+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c11082056.target) + e1:SetOperation(c11082056.activate) + c:RegisterEffect(e1) + --add code + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_CODE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(10000060) + c:RegisterEffect(e2) +end +function c11082056.tgfilter(c,e,tp) + return c:IsType(TYPE_TRAP) and Duel.IsExistingMatchingCard(c11082056.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetCode()) +end +function c11082056.spfilter(c,e,tp,code) + return c:IsType(TYPE_FUSION) and c.material_trap and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and code==c.material_trap +end +function c11082056.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c11082056.tgfilter,tp,LOCATION_HAND+LOCATION_SZONE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c11082056.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g=Duel.SelectMatchingCard(tp,c11082056.tgfilter,tp,LOCATION_HAND+LOCATION_SZONE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and not tc:IsImmuneToEffect(e) then + if tc:IsOnField() and tc:IsFacedown() then Duel.ConfirmCards(1-tp,tc) end + Duel.SendtoGrave(tc,REASON_EFFECT) + if not tc:IsLocation(LOCATION_GRAVE) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c11082056.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetCode()) + local sc=sg:GetFirst() + if sc then + Duel.BreakEffect() + Duel.SpecialSummon(sc,0,tp,tp,true,false,POS_FACEUP) + sc:CompleteProcedure() + end + end +end diff --git a/script/c111008301.lua b/script/c111008301.lua new file mode 100644 index 00000000..6bb9b391 --- /dev/null +++ b/script/c111008301.lua @@ -0,0 +1,32 @@ +--フォトン・トレード +function c111008301.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c111008301.cost) + e1:SetTarget(c111008301.target) + e1:SetOperation(c111008301.activate) + c:RegisterEffect(e1) +end +function c111008301.filter(c) + return c:IsSetCard(0x55) and c:IsAbleToGraveAsCost() and c:IsType(TYPE_MONSTER) +end +function c111008301.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c111008301.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c111008301.filter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c111008301.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c111008301.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c111009401.lua b/script/c111009401.lua new file mode 100644 index 00000000..4501ee76 --- /dev/null +++ b/script/c111009401.lua @@ -0,0 +1,27 @@ +--V(ブイ)コール +function c111009401.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c111009401.target) + e1:SetOperation(c111009401.activate) + c:RegisterEffect(e1) +end +function c111009401.filter(c) + return (c:IsCode(51638941) or c:IsCode(33725002) or c:IsCode(66970002) + or c:IsCode(111009402) or c:IsSetCard(0x41) or c:IsSetCard(0x5008)) and c:IsAbleToHand() and c:IsType(TYPE_MONSTER) +end +function c111009401.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c111009401.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c111009401.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c111009401.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c111011002.lua b/script/c111011002.lua new file mode 100644 index 00000000..7f686d70 --- /dev/null +++ b/script/c111011002.lua @@ -0,0 +1,119 @@ +--カオス・フィールド +function c111011002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --XYZ + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(111011002,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCost(c111011002.spcost) + e2:SetTarget(c111011002.sptg) + e2:SetOperation(c111011002.spop) + c:RegisterEffect(e2) + --XYZ + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(111011002,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c111011002.xyztg) + e3:SetOperation(c111011002.xyzop) + c:RegisterEffect(e3) +end +function c111011002.ofilter(c,tp) + return c:CheckRemoveOverlayCard(tp,1,REASON_COST) and c:IsSetCard(0x1048) and c:IsFaceup() +end +function c111011002.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c111011002.ofilter,tp,LOCATION_MZONE,0,1,nil,tp) end + local tc=Duel.SelectMatchingCard(tp,c111011002.ofilter,tp,LOCATION_MZONE,0,1,1,nil,tp):GetFirst() + tc:RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c111011002.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c111011002.filter(c,e,tp) + return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c111011002.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local xyzg=Duel.GetMatchingGroup(c111011002.filter,tp,0,LOCATION_EXTRA,nil,e,tp) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:RandomSelect(tp,1):GetFirst() + if Duel.SpecialSummonStep(xyz,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + xyz:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + xyz:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c111011002.desop) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetCountLimit(1) + xyz:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EFFECT_CANNOT_ATTACK) + xyz:RegisterEffect(e4) + xyz:RegisterFlagEffect(111011002,RESET_EVENT+0x1fe0000,0,1) + Duel.SpecialSummonComplete() + end + else + local cg=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) + Duel.ConfirmCards(tp,cg) + end +end +function c111011002.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c111011002.tgfilter(c,e,tp) + local rank=c:GetRank() + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetFlagEffect(111011002)~=0 + and Duel.IsExistingMatchingCard(c111011002.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,rank,e,tp) +end +function c111011002.xyzfilter(c,rank,e,tp) + return c:GetRank()==rank+1 and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c111011002.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c111011002.tgfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c111011002.tgfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c111011002.tgfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c111011002.xyzop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + local sg=Group.CreateGroup() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c111011002.xyzfilter,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank(),e,tp) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c111011401.lua b/script/c111011401.lua new file mode 100644 index 00000000..95653406 --- /dev/null +++ b/script/c111011401.lua @@ -0,0 +1,71 @@ +--ストリングスシェード +function c111011401.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c111011401.target) + e1:SetOperation(c111011401.activate) + c:RegisterEffect(e1) + --salvage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(111011401,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c111011401.thcon) + e2:SetTarget(c111011401.thtg) + e2:SetOperation(c111011401.thop) + c:RegisterEffect(e2) +end +function c111011401.filter(c) + return c:IsFaceup() +end +function c111011401.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c111011401.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c111011401.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c111011401.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c111011401.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_INDESTRUCTABLE_EFFECT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end +function c111011401.thcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c111011401.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c111011401.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + _replace_count=_replace_count+1 + if _replace_count<=_replace_max and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c111011501.lua b/script/c111011501.lua new file mode 100644 index 00000000..df44c897 --- /dev/null +++ b/script/c111011501.lua @@ -0,0 +1,43 @@ +--エンジェル・ストリングス +function c111011501.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c111011501.target) + e1:SetOperation(c111011501.activate) + c:RegisterEffect(e1) +end +function c111011501.mfilter(c) + return c:IsFaceup() and c:IsSetCard(0x83) and c:IsType(TYPE_XYZ) +end +function c111011501.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsType(TYPE_XYZ) +end +function c111011501.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c111011501.mfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c111011501.mfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c111011501.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c111011501.mfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c111011501.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local mat=Duel.GetMatchingGroup(c111011501.filter,tp,LOCATION_GRAVE,0,nil,e,tp) + if tc:IsRelateToEffect(e) and mat:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local mat1=mat:Select(tp,1,1,nil):GetFirst() + if Duel.SpecialSummon(mat1,0,tp,tp,false,false,POS_FACEUP) then + Duel.BreakEffect() + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(mat1,mg) + end + Duel.Overlay(mat1,tc) + end + end +end diff --git a/script/c111011802.lua b/script/c111011802.lua new file mode 100644 index 00000000..67e574c9 --- /dev/null +++ b/script/c111011802.lua @@ -0,0 +1,94 @@ +--ランクアップ・アドバンテージ +function c111011802.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(111011802,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c111011802.drcon) + e2:SetTarget(c111011802.drtg) + e2:SetOperation(c111011802.drop) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c111011802.discon1) + e3:SetOperation(c111011802.disop1) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetRange(LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_ONFIELD) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetOperation(c111011802.spop) + c:RegisterEffect(e4) +end +function c111011802.drfilter(c) + return c:GetSummonType()==SUMMON_TYPE_XYZ +end +function c111011802.drcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return eg:IsExists(c111011802.drfilter,1,nil) and rc:IsSetCard(0x95) +end +function c111011802.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c111011802.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c111011802.discon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetFlagEffect(111011802)~=0 + and Duel.GetAttacker():GetControler()==tp +end +function c111011802.disop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttackTarget() + c:CreateRelation(tc,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetCondition(c111011802.discon2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_SZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e2:SetOperation(c111011802.disop2) + e2:SetLabelObject(tc) + c:RegisterEffect(e2) +end +function c111011802.discon2(e) + return e:GetOwner():IsRelateToCard(e:GetHandler()) +end +function c111011802.disop2(e,tp,eg,ep,ev,re,r,rp) + local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if loc==LOCATION_MZONE and re:GetHandler()==e:GetLabelObject() then + Duel.NegateEffect(ev) + end +end +function c111011802.spop(e,tp,eg,ep,ev,re,r,rp) + local tg=eg:GetFirst() + local rc=re:GetHandler() + if eg:GetCount()==1 and tg:GetSummonType()==SUMMON_TYPE_XYZ + and rc:IsSetCard(0x95) then + tg:RegisterFlagEffect(111011802,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c111011803.lua b/script/c111011803.lua new file mode 100644 index 00000000..c88f4021 --- /dev/null +++ b/script/c111011803.lua @@ -0,0 +1,36 @@ +--NO4 エーテリック・アヌビス +function c111011803.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --Search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(111011803,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_DESTROY) + e2:SetCost(c111011803.cost) + e2:SetTarget(c111011803.sptg) + e2:SetOperation(c111011803.spop) + c:RegisterEffect(e2) +end +function c111011803.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c111011803.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return Duel.GetLocationCount(tc:GetPreviousControler(),LOCATION_SZONE)>0 + and eg:GetCount()==1 and tc:IsLocation(LOCATION_GRAVE) and tc:IsType(TYPE_SPELL+TYPE_TRAP) and tc:GetPreviousControler()==tp + and tc:IsSSetable() end + tc:CreateEffectRelation(e) +end +function c111011803.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:IsRelateToEffect(e) then + Duel.SSet(tp,tc) + if tc:IsType(TYPE_TRAP) then + tc:SetStatus(STATUS_SET_TURN,false) + end + end +end diff --git a/script/c111011901.lua b/script/c111011901.lua new file mode 100644 index 00000000..af204106 --- /dev/null +++ b/script/c111011901.lua @@ -0,0 +1,91 @@ +--RUM-アストラル・フォース(アニメ) +function c111011901.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c111011901.target) + e1:SetOperation(c111011901.activate) + c:RegisterEffect(e1) + --salvage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(111011901,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c111011901.thcon) + e2:SetTarget(c111011901.thtg) + e2:SetOperation(c111011901.thop) + c:RegisterEffect(e2) +end +function c111011901.filter1(c,e,tp) + local rk=c:GetRank() + return rk>0 and c:IsFaceup() and Duel.IsExistingMatchingCard(c111011901.filter2,tp,LOCATION_EXTRA,0,1,nil,rk+1,e,tp,c:GetCode()) + and not Duel.IsExistingMatchingCard(c111011901.filter3,tp,LOCATION_MZONE,0,1,nil,rk) +end +function c111011901.filter2(c,rk,e,tp,code) + if c:IsCode(6165656) and code~=48995978 then return false end + return (c:GetRank()==rk or c:GetRank()==rk+1) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c111011901.filter3(c,rk) + return c:IsFaceup() and c:GetRank()>rk +end +function c111011901.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c111011901.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c111011901.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c111011901.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c111011901.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c111011901.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank()+1,e,tp,tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end +function c111011901.thcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c111011901.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c111011901.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + _replace_count=_replace_count+1 + if _replace_count<=_replace_max and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c111011903.lua b/script/c111011903.lua new file mode 100644 index 00000000..05b3c7fa --- /dev/null +++ b/script/c111011903.lua @@ -0,0 +1,41 @@ +--NO6 エーテリック・アポピス +function c111011903.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,2) + c:EnableReviveLimit() + --addown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(111011903,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c111011903.cost) + e1:SetTarget(c111011903.target) + e1:SetOperation(c111011903.operation) + c:RegisterEffect(e1) +end +function c111011903.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c111011903.filter(c) + return c:IsFaceup() and c:GetAttack()~=0 +end +function c111011903.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c111011903.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c111011903.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c111011903.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c111011903.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-2000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c111011904.lua b/script/c111011904.lua new file mode 100644 index 00000000..e1410d03 --- /dev/null +++ b/script/c111011904.lua @@ -0,0 +1,128 @@ +--NO8 エーテリック・セベク +function c111011904.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,2) + c:EnableReviveLimit() + --サーチ + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(111011904,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c111011904.con) + e1:SetTarget(c111011904.target) + e1:SetOperation(c111011904.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(111011904,1)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_STANDBY_PHASE+0x1c0) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c111011904.cost) + e2:SetCountLimit(1) + e2:SetTarget(c111011904.target2) + e2:SetOperation(c111011904.operation2) + c:RegisterEffect(e2) + if not c111011904.global_check then + c111011904.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c111011904.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c111011904.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c111011904.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c111011904.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c111011904.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c111011904.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c111011904.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c111011904.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c111011904.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c111011904.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c111011904.filter1,tp,LOCATION_HAND,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end +end +function c111011904.filter1(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:CheckActivateEffect(false,false,false)~=nil +end +function c111011904.operation2(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local g=Duel.SelectMatchingCard(tp,c111011904.filter1,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)~=0 then + Duel.MoveSequence(tc,5) + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end \ No newline at end of file diff --git a/script/c111011905.lua b/script/c111011905.lua new file mode 100644 index 00000000..5e29d5b4 --- /dev/null +++ b/script/c111011905.lua @@ -0,0 +1,36 @@ +--NO10 エーテリック・ホルス +function c111011905.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,10,2) + c:EnableReviveLimit() + --addown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(111011905,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c111011905.cost) + e1:SetTarget(c111011905.target) + e1:SetOperation(c111011905.operation) + c:RegisterEffect(e1) +end +function c111011905.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c111011905.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)>Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)-Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,ct,0,0) +end +function c111011905.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)-Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0) + if ct>0 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_DESTROY) + local dg=g:Select(1-tp,ct,ct,nil) + Duel.Destroy(dg,REASON_EFFECT) + end +end diff --git a/script/c111011906.lua b/script/c111011906.lua new file mode 100644 index 00000000..f11296f7 --- /dev/null +++ b/script/c111011906.lua @@ -0,0 +1,90 @@ +--NO12 エーテリック・まへす +function c111011906.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,12,2) + c:EnableReviveLimit() + --addown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(111011906,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c111011906.target) + e1:SetOperation(c111011906.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c111011906.desop) + c:RegisterEffect(e2) +end +function c111011906.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c111011906.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=e:GetHandler():GetOverlayGroup() + local count=0 + local tc=g:GetFirst() + while tc do + if c111011906.filter(tc,e,tp) then + count=count+1 + end + tc=g:GetNext() + end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if chk==0 then return ft>0 and ft>=count end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_OVERLAY) +end +function c111011906.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=c:GetOverlayGroup() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<=0 or ft0 +end +function c111011906.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=c:GetCardTarget() + local tc=g:GetFirst() + while tc do + if tc:IsLocation(LOCATION_MZONE) then + Duel.Overlay(c,tc) + end + tc=g:GetNext() + end +end diff --git a/script/c111012401.lua b/script/c111012401.lua new file mode 100644 index 00000000..62720525 --- /dev/null +++ b/script/c111012401.lua @@ -0,0 +1,65 @@ +--ギミック・シールド +function c111012401.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(c111012401.target) + e1:SetOperation(c111012401.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(c111012401.eqlimit) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_SWAP_BASE_AD) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetCountLimit(1) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c111012401.damtg) + e4:SetOperation(c111012401.damop) + c:RegisterEffect(e4) +end +function c111012401.eqlimit(e,c) + return c:IsSetCard(0x83) and c:IsType(TYPE_XYZ) +end +function c111012401.filter(c) + return c:IsFaceup() and c:IsSetCard(0x83) and c:IsType(TYPE_XYZ) +end +function c111012401.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and c111012401.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c111012401.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c111012401.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c111012401.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c111012401.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetEquipTarget() + if chk==0 then return ec and ec:GetOverlayCount()>0 end + local dam=ec:GetOverlayCount()*300 + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c111012401.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetEquipTarget() + if not c:IsRelateToEffect(e) or not ec then return end + local dam=ec:GetOverlayCount()*300 + Duel.Damage(1-tp,dam,REASON_EFFECT) +end diff --git a/script/c11102908.lua b/script/c11102908.lua index 6f447219..a181e06c 100644 --- a/script/c11102908.lua +++ b/script/c11102908.lua @@ -1,25 +1,25 @@ ---紫炎の霞城 -function c11102908.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk down - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCondition(c11102908.atkcon) - e2:SetTarget(c11102908.atktg) - e2:SetValue(-500) - c:RegisterEffect(e2) -end -function c11102908.atkcon(e) - local d=Duel.GetAttackTarget() - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and d and d:IsSetCard(0x3d) -end -function c11102908.atktg(e,c) - return c==Duel.GetAttacker() -end +--紫炎の霞城 +function c11102908.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCondition(c11102908.atkcon) + e2:SetTarget(c11102908.atktg) + e2:SetValue(-500) + c:RegisterEffect(e2) +end +function c11102908.atkcon(e) + local d=Duel.GetAttackTarget() + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and d and d:IsSetCard(0x3d) +end +function c11102908.atktg(e,c) + return c==Duel.GetAttacker() +end diff --git a/script/c11109820.lua b/script/c11109820.lua index e43f86c8..f27f54df 100644 --- a/script/c11109820.lua +++ b/script/c11109820.lua @@ -1,78 +1,78 @@ ---エクシーズ・ユニバース -function c11109820.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(11109820,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c11109820.target) - e1:SetOperation(c11109820.operation) - c:RegisterEffect(e1) -end -function c11109820.filter1(c,e,tp,ft) - if c:IsControler(tp) then ft=ft+1 end - return c:IsFaceup() and c:IsType(TYPE_XYZ) - and Duel.IsExistingTarget(c11109820.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,e,tp,c:GetRank(),ft) -end -function c11109820.filter2(c,e,tp,rk,ft) - if c:IsControler(tp) then ft=ft+1 end - return c:IsFaceup() and c:IsType(TYPE_XYZ) - and ft>0 and Duel.IsExistingMatchingCard(c11109820.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,rk+c:GetRank()) -end -function c11109820.spfilter(c,e,tp,rk) - local crk=c:GetRank() - return (crk==rk or crk==rk-1) and not c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c11109820.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) - and Duel.IsExistingTarget(c11109820.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp,ft) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g1=Duel.SelectTarget(tp,c11109820.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp,ft) - local tc=g1:GetFirst() - if tc:IsControler(tp) then ft=ft+1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g2=Duel.SelectTarget(tp,c11109820.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,tc,e,tp,tc:GetRank(),ft) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g1,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c11109820.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - --change damage - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetValue(0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - --sp_summon - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local tc1=g:GetFirst() - local tc2=g:GetNext() - if not tc1:IsRelateToEffect(e) or not tc2:IsRelateToEffect(e) then return end - Duel.SendtoGrave(g,REASON_EFFECT) - local og=Duel.GetOperatedGroup() - if og:FilterCount(Card.IsLocation,nil,LOCATION_GRAVE)<2 or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local sg=Duel.GetMatchingGroup(c11109820.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp,tc1:GetRank()+tc2:GetRank()) - if sg:GetCount()==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local ssg=sg:Select(tp,1,1,nil) - local sc=ssg:GetFirst() - if sc then - Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) - if c:IsRelateToEffect(e) then - c:CancelToGrave() - Duel.Overlay(sc,Group.FromCards(c)) - end - end -end +--エクシーズ・ユニバース +function c11109820.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(11109820,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c11109820.target) + e1:SetOperation(c11109820.operation) + c:RegisterEffect(e1) +end +function c11109820.filter1(c,e,tp,ft) + if c:IsControler(tp) then ft=ft+1 end + return c:IsFaceup() and c:IsType(TYPE_XYZ) + and Duel.IsExistingTarget(c11109820.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,e,tp,c:GetRank(),ft) +end +function c11109820.filter2(c,e,tp,rk,ft) + if c:IsControler(tp) then ft=ft+1 end + return c:IsFaceup() and c:IsType(TYPE_XYZ) + and ft>0 and Duel.IsExistingMatchingCard(c11109820.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,rk+c:GetRank()) +end +function c11109820.spfilter(c,e,tp,rk) + local crk=c:GetRank() + return (crk==rk or crk==rk-1) and not c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c11109820.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c11109820.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp,ft) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectTarget(tp,c11109820.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp,ft) + local tc=g1:GetFirst() + if tc:IsControler(tp) then ft=ft+1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectTarget(tp,c11109820.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,tc,e,tp,tc:GetRank(),ft) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g1,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c11109820.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --change damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + --sp_summon + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc1=g:GetFirst() + local tc2=g:GetNext() + if not tc1:IsRelateToEffect(e) or not tc2:IsRelateToEffect(e) then return end + Duel.SendtoGrave(g,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + if og:FilterCount(Card.IsLocation,nil,LOCATION_GRAVE)<2 or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(c11109820.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp,tc1:GetRank()+tc2:GetRank()) + if sg:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local ssg=sg:Select(tp,1,1,nil) + local sc=ssg:GetFirst() + if sc then + Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(sc,Group.FromCards(c)) + end + end +end diff --git a/script/c11110587.lua b/script/c11110587.lua new file mode 100644 index 00000000..99f718fc --- /dev/null +++ b/script/c11110587.lua @@ -0,0 +1,26 @@ +--隣の芝刈り +function c11110587.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c11110587.condition) + e1:SetTarget(c11110587.target) + e1:SetOperation(c11110587.activate) + c:RegisterEffect(e1) +end +function c11110587.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>Duel.GetFieldGroupCount(tp,0,LOCATION_DECK) +end +function c11110587.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)-Duel.GetFieldGroupCount(tp,0,LOCATION_DECK) + if chk==0 then return ct>0 and Duel.IsPlayerCanDiscardDeck(tp,ct) end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,ct) +end +function c11110587.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)-Duel.GetFieldGroupCount(tp,0,LOCATION_DECK) + if ct>0 then + Duel.DiscardDeck(tp,ct,REASON_EFFECT) + end +end diff --git a/script/c111203901.lua b/script/c111203901.lua new file mode 100644 index 00000000..514c1ece --- /dev/null +++ b/script/c111203901.lua @@ -0,0 +1,38 @@ +--黒蠍 愛の悲劇 +function c111203901.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c111203901.condition) + e1:SetCost(c111203901.cost) + e1:SetTarget(c111203901.target) + e1:SetOperation(c111203901.activate) + c:RegisterEffect(e1) +end +function c111203901.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c111203901.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c111203901.cfilter,tp,LOCATION_ONFIELD,0,1,nil,76922029) + and Duel.IsExistingMatchingCard(c111203901.cfilter,tp,LOCATION_ONFIELD,0,1,nil,74153887) +end +function c111203901.costfilter(c) + return c:IsCode(74153887) and c:IsAbleToGraveAsCost() +end +function c111203901.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c111203901.costfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local cg=Duel.SelectMatchingCard(tp,c111203901.costfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(cg,REASON_COST) +end +function c111203901.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c111203901.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c111203902.lua b/script/c111203902.lua new file mode 100644 index 00000000..a31a9063 --- /dev/null +++ b/script/c111203902.lua @@ -0,0 +1,34 @@ +--黒蠍 愛の悲劇 +function c111203902.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c111203902.condition) + e1:SetTarget(c111203902.target) + e1:SetOperation(c111203902.activate) + c:RegisterEffect(e1) +end +function c111203902.cfilter(c,code) + return c:IsFaceup() and c:GetCode()==code +end +function c111203902.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c111203902.cfilter,tp,LOCATION_MZONE,0,1,nil,76922029) + and Duel.IsExistingMatchingCard(c111203902.cfilter,tp,LOCATION_MZONE,0,1,nil,74153887) + and Duel.IsExistingMatchingCard(c111203902.cfilter,tp,LOCATION_MZONE,0,1,nil,48768179) + and Duel.IsExistingMatchingCard(c111203902.cfilter,tp,LOCATION_MZONE,0,1,nil,6967870) + and Duel.IsExistingMatchingCard(c111203902.cfilter,tp,LOCATION_MZONE,0,1,nil,61587183) +end +function c111203902.filter(c) + return c:IsFaceup() and c:IsAbleToHand(() and ( c:IsCode(76922029) or c:IsSetCard(0x1a) ) +end +function c111203902.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c111203902.filter,tp,LOCATION_MZONE,0,1,nil) end + local sg=Duel.GetMatchingGroup(c111203902.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c111203902.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c111203902.filter,tp,LOCATION_MZONE,0,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end diff --git a/script/c111215001.lua b/script/c111215001.lua new file mode 100644 index 00000000..24821c22 --- /dev/null +++ b/script/c111215001.lua @@ -0,0 +1,117 @@ +--霧の王城 +--このカードの「使用していたモンスターカードゾーンに」の部分を再現すると使用不可能にしたゾーンにモンスターが特殊召喚されてしまう為、一部処理を変更しています。 +function c111215001.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(111215001,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c111215001.spcon) + e2:SetTarget(c111215001.sptg) + e2:SetOperation(c111215001.spop) + c:RegisterEffect(e2) + --salvage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(111215001,0)) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c111215001.thcon) + e3:SetCost(c111215001.thcost) + e3:SetTarget(c111215001.thtg) + e3:SetOperation(c111215001.thop) + c:RegisterEffect(e3) +end +function c111215001.cfilter(c,e,tp) + return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_MZONE) and c:IsLocation(LOCATION_GRAVE) + and c:GetPreviousControler()==tp and (not e or c:IsRelateToEffect(e)) +end +function c111215001.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c111215001.cfilter,1,nil,nil,tp) +end +function c111215001.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=eg:Filter(c111215001.cfilter,nil,nil,tp):GetFirst() + if chk==0 then return true end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetLabel(tc:GetPreviousSequence()) + e1:SetOperation(c111215001.disop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + c:RegisterFlagEffect(tp,111215001,RESET_EVENT+0x1fe0000,0,1) +end +function c111215001.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=eg:Filter(c111215001.cfilter,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c111215001.disop(e,tp) + local c=Duel.GetLocationCount(tp,LOCATION_MZONE) + if c==0 then return end + local pseq=e:GetLabel() + local op + if pseq==0 then + op=1 + elseif pseq==1 then + op=2 + elseif pseq==2 then + op=4 + elseif pseq==3 then + op=8 + elseif pseq==4 then + op=16 + end + return op +end +function c111215001.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(tp,111215001)>4 +end +function c111215001.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local hct=hg:GetCount() + if chk==0 then return hct>0 and hg:FilterCount(Card.IsAbleToGraveAsCost,nil)==hct and e:GetHandler():IsAbleToGraveAsCost() + and Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 end + hg:AddCard(e:GetHandler()) + Duel.SendtoGrave(hg,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c111215001.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c111215001.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c111215001.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c111215001.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c111215001.filter,tp,LOCATION_GRAVE,0,1,4,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c111215001.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c111217602.lua b/script/c111217602.lua new file mode 100644 index 00000000..39c2a722 --- /dev/null +++ b/script/c111217602.lua @@ -0,0 +1,47 @@ +--宝玉割断 +function c111217602.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DRAW) + 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(c111217602.condition) + e1:SetCost(c111217602.cost) + e1:SetTarget(c111217602.target) + e1:SetOperation(c111217602.activate) + c:RegisterEffect(e1) +end +function c111217602.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c111217602.cfilter(c) + return c:IsSetCard(0x1034) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c111217602.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c111217602.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c111217602.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c111217602.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsPlayerCanDraw(1-tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c111217602.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe000) + e1:SetValue(tc:GetBaseAttack()/2) + tc:RegisterEffect(e1) + end + Duel.Draw(1-tp,1,REASON_EFFECT) +end diff --git a/script/c111280.lua b/script/c111280.lua index 3b72452b..31cfaf83 100644 --- a/script/c111280.lua +++ b/script/c111280.lua @@ -17,7 +17,7 @@ function c111280.cfilter(c) return c:IsFaceup() and c:IsCode(46986414,38033121) end function c111280.condition(e,tp,eg,ep,ev,re,r,rp) - local ct=Duel.GetMatchingGroupCount(c111280.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,nil) + local ct=Duel.GetMatchingGroupCount(c111280.cfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,nil) return ct>0 and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) end function c111280.filter(c) @@ -25,13 +25,13 @@ function c111280.filter(c) end function c111280.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then - local ct=Duel.GetMatchingGroupCount(c111280.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,nil) + local ct=Duel.GetMatchingGroupCount(c111280.cfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,nil) if ct<=1 then return Duel.IsExistingMatchingCard(c111280.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end return true end end function c111280.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c111280.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,nil) + local g=Duel.GetMatchingGroup(c111280.cfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,nil) local ct=g:GetCount() if ct>=1 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) diff --git a/script/c111300001.lua b/script/c111300001.lua new file mode 100644 index 00000000..f4cf7db9 --- /dev/null +++ b/script/c111300001.lua @@ -0,0 +1,61 @@ +--革命-トリック・バトル +function c111300001.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_DAMAGE_CALCULATING) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c111300001.preatkop) + c:RegisterEffect(e2) + local f=Card.GetReasonCard + Card.GetReasonCard=function(c) + if c:GetFlagEffect(111300001)>0 then + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a==c then return d end + if d==c then return a end + return nil + end + return f(c) + end +end +function c111300001.preatkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return end + if not a:IsPosition(POS_FACEUP_ATTACK) or not d:IsPosition(POS_FACEUP_ATTACK) then return end + if a:GetAttack()==d:GetAttack() then return end + if d:GetAttack()>a:GetAttack() then + a,d=d,a + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + d:RegisterEffect(e1) + local e2=Effect.CreateEffect(d) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetOperation(c111300001.op) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + d:RegisterEffect(e2) +end +function c111300001.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)==1 then return end + if Duel.Destroy(bc,REASON_BATTLE)==0 then + Duel.SendtoGrave(bc,REASON_BATTLE) + end + bc:SetStatus(STATUS_BATTLE_DESTROYED,true) + Duel.RaiseEvent(c,EVENT_BATTLE_DESTROYING,e,REASON_BATTLE,c:GetControler(),c:GetControler(),0) + c:RegisterFlagEffect(111300001,RESET_PHASE+PHASE_DAMAGE,0,0) + bc:RegisterFlagEffect(111300001,RESET_PHASE+PHASE_DAMAGE,0,0) +end diff --git a/script/c111302501.lua b/script/c111302501.lua new file mode 100644 index 00000000..0244b1ec --- /dev/null +++ b/script/c111302501.lua @@ -0,0 +1,101 @@ +--強化蘇生 +function c111302501.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c111302501.target) + e1:SetOperation(c111302501.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c111302501.desop) + c:RegisterEffect(e2) + --Destroy2 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c111302501.descon2) + e3:SetOperation(c111302501.desop2) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(111302501,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c111302501.damcon) + e4:SetTarget(c111302501.damtg) + e4:SetOperation(c111302501.damop) + c:RegisterEffect(e4) +end +function c111302501.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c111302501.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and c111302501.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c111302501.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c111302501.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c111302501.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_LEVEL) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end +function c111302501.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c111302501.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c111302501.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c111302501.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c111302501.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) +end +function c111302501.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c111310102.lua b/script/c111310102.lua new file mode 100644 index 00000000..e409a5c9 --- /dev/null +++ b/script/c111310102.lua @@ -0,0 +1,28 @@ +--デストラクション・トリガー +function c111310102.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c111310102.condition) + e1:SetTarget(c111310102.target) + e1:SetOperation(c111310102.activate) + c:RegisterEffect(e1) +end +function c111310102.filter(c,tp) + return c:GetPreviousControler()==tp and bit.band(c:GetReason(),0x41)==0x41 +end +function c111310102.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c111310102.filter,1,nil,tp) +end +function c111310102.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(1-tp,1) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(5) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,5) +end +function c111310102.activate(e,tp,eg,ep,ev,re,r,rp) + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardDeck(p,val,REASON_EFFECT) +end diff --git a/script/c11163040.lua b/script/c11163040.lua index fb99030b..12698455 100644 --- a/script/c11163040.lua +++ b/script/c11163040.lua @@ -1,4 +1,4 @@ ---The Kaiju Files +--壊獣の出現記録 function c11163040.initial_effect(c) c:EnableCounterPermit(0x37) c:SetCounterLimit(0x37,5) diff --git a/script/c11221418.lua b/script/c11221418.lua index 3c7c7fa8..1fc66f3f 100644 --- a/script/c11221418.lua +++ b/script/c11221418.lua @@ -1,120 +1,135 @@ ---武神隠 -function c11221418.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c11221418.target) - e1:SetOperation(c11221418.activate) - c:RegisterEffect(e1) -end -function c11221418.filter(c) - return c:IsFaceup() and c:IsSetCard(0x88) and c:IsType(TYPE_XYZ) and c:IsAbleToRemove() - and Duel.IsExistingMatchingCard(Card.IsAbleToHand,0,LOCATION_MZONE,LOCATION_MZONE,1,c) -end -function c11221418.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c11221418.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c11221418.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c11221418.filter,tp,LOCATION_MZONE,0,1,1,nil) - local tg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,g:GetFirst()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,tg,tg:GetCount(),0,0) -end -function c11221418.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 then - tc:RegisterFlagEffect(11221418,RESET_EVENT+0x1fe0000,0,0) - local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()==0 then return end - Duel.SendtoHand(g,nil,REASON_EFFECT) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE_START+PHASE_END) - e1:SetOperation(c11221418.countop) - if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END then - e1:SetLabel(1) - else - e1:SetLabel(0) - end - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - e1:SetLabelObject(tc) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - e2:SetCondition(c11221418.limcon) - e2:SetLabelObject(e1) - e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - Duel.RegisterEffect(e2,tp) - local e3=e2:Clone() - e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - Duel.RegisterEffect(e3,tp) - local e4=e3:Clone() - e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - Duel.RegisterEffect(e4,tp) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CHANGE_DAMAGE) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetTargetRange(1,1) - e5:SetValue(0) - e5:SetLabelObject(e1) - e5:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - Duel.RegisterEffect(e5,tp) - local e6=e5:Clone() - e6:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e6:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - Duel.RegisterEffect(e6,tp) - local e7=Effect.CreateEffect(c) - e7:SetCategory(CATEGORY_SPECIAL_SUMMON) - e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e7:SetCode(EVENT_PHASE+PHASE_END) - e7:SetProperty(EFFECT_FLAG_CARD_TARGET) - e7:SetCountLimit(1) - e7:SetCondition(c11221418.spcon) - e7:SetTarget(c11221418.sptg) - e7:SetOperation(c11221418.spop) - e7:SetLabelObject(e1) - e7:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - Duel.RegisterEffect(e7,tp) - end -end -function c11221418.limcon(e) - return e:GetLabelObject():GetLabel()<3 -end -function c11221418.countop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetTurnPlayer()~=tp then return end - local ct=e:GetLabel() - e:SetLabel(ct+1) -end -function c11221418.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and e:GetLabelObject():GetLabel()==2 -end -function c11221418.mfilter(c) - return c:IsSetCard(0x88) and c:IsType(TYPE_MONSTER) -end -function c11221418.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c11221418.mfilter(chkc) end - local tc=e:GetLabelObject():GetLabelObject() - if chk==0 then return tc:GetFlagEffect(11221418)~=0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g=Duel.SelectTarget(tp,c11221418.mfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) - e:GetLabelObject():SetLabel(3) -end -function c11221418.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject():GetLabelObject() - local mc=Duel.GetFirstTarget() - if mc and tc:GetFlagEffect(11221418)~=0 and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then - if mc:IsRelateToEffect(e) then - Duel.Overlay(tc,Group.FromCards(mc)) - end - end -end +--武神隠 +function c11221418.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c11221418.target) + e1:SetOperation(c11221418.activate) + c:RegisterEffect(e1) +end +function c11221418.filter(c) + return c:IsFaceup() and c:IsSetCard(0x88) and c:IsType(TYPE_XYZ) and c:IsAbleToRemove() + and Duel.IsExistingMatchingCard(Card.IsAbleToHand,0,LOCATION_MZONE,LOCATION_MZONE,1,c) +end +function c11221418.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c11221418.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c11221418.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c11221418.filter,tp,LOCATION_MZONE,0,1,1,nil) + local tg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,g:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tg,tg:GetCount(),0,0) +end +function c11221418.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 then + tc:RegisterFlagEffect(11221418,RESET_EVENT+0x1fe0000,0,0) + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + Duel.SendtoHand(g,nil,REASON_EFFECT) + local rct=Duel.GetTurnCount(tp)+1 + if Duel.GetTurnPlayer()~=tp then rct=rct+1 end + --cannot summon/flip summon/sp summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + e3:SetLabelObject(e2) + Duel.RegisterEffect(e3,tp) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e4:SetLabelObject(e3) + Duel.RegisterEffect(e4,tp) + --no damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CHANGE_DAMAGE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,1) + e5:SetValue(0) + e5:SetLabelObject(e4) + e5:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + Duel.RegisterEffect(e5,tp) + local e6=e5:Clone() + e6:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e6:SetLabelObject(e5) + e6:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + Duel.RegisterEffect(e6,tp) + --reset e2~e6 + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(11221418,0)) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCountLimit(1) + e7:SetCondition(c11221418.resetcon) + e7:SetOperation(c11221418.resetop) + e7:SetLabel(rct) + e7:SetLabelObject(e6) + e7:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + Duel.RegisterEffect(e7,tp) + --trigger effect + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(11221418,1)) + e8:SetCategory(CATEGORY_SPECIAL_SUMMON) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e8:SetCode(EVENT_PHASE+PHASE_END) + e8:SetProperty(EFFECT_FLAG_CARD_TARGET) + e8:SetCountLimit(1) + e8:SetCondition(c11221418.spcon) + e8:SetTarget(c11221418.sptg) + e8:SetOperation(c11221418.spop) + e8:SetLabel(rct) + e8:SetLabelObject(tc) + e8:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + Duel.RegisterEffect(e8,tp) + end +end +function c11221418.resetcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetLabel()==Duel.GetTurnCount(tp) +end +function c11221418.resetop(e,tp,eg,ep,ev,re,r,rp) + local e6=e:GetLabelObject() + local e5=e6:GetLabelObject() + local e4=e5:GetLabelObject() + local e3=e4:GetLabelObject() + local e2=e3:GetLabelObject() + e2:Reset() + e3:Reset() + e4:Reset() + e5:Reset() + e6:Reset() + e:Reset() +end +function c11221418.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetLabel()==Duel.GetTurnCount(tp) +end +function c11221418.mfilter(c) + return c:IsSetCard(0x88) and c:IsType(TYPE_MONSTER) +end +function c11221418.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c11221418.mfilter(chkc) end + if chk==0 then return true end + local tc=e:GetLabelObject() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=Duel.SelectTarget(tp,c11221418.mfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) +end +function c11221418.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local mc=Duel.GetFirstTarget() + if mc and tc:GetFlagEffect(11221418)~=0 and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + if mc:IsRelateToEffect(e) then + Duel.Overlay(tc,Group.FromCards(mc)) + end + end +end diff --git a/script/c11224934.lua b/script/c11224934.lua index c56bfdbe..3b6b31bd 100644 --- a/script/c11224934.lua +++ b/script/c11224934.lua @@ -1,36 +1,36 @@ ---強化空間 -function c11224934.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c11224934.condition) - e1:SetTarget(c11224934.target) - e1:SetOperation(c11224934.activate) - c:RegisterEffect(e1) -end -function c11224934.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c11224934.filter(c) - return c:IsFaceup() and c:GetOverlayCount()~=0 -end -function c11224934.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c11224934.filter,tp,LOCATION_MZONE,0,1,nil) end -end -function c11224934.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c11224934.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(tc:GetOverlayCount()*300) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--強化空間 +function c11224934.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c11224934.condition) + e1:SetTarget(c11224934.target) + e1:SetOperation(c11224934.activate) + c:RegisterEffect(e1) +end +function c11224934.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c11224934.filter(c) + return c:IsFaceup() and c:GetOverlayCount()~=0 +end +function c11224934.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c11224934.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c11224934.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c11224934.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetOverlayCount()*300) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c11228035.lua b/script/c11228035.lua index ec91d655..700ae3d1 100644 --- a/script/c11228035.lua +++ b/script/c11228035.lua @@ -1,49 +1,49 @@ ---エクシーズ・ソウル -function c11228035.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(c11228035.condition) - e1:SetTarget(c11228035.target) - e1:SetOperation(c11228035.activate) - c:RegisterEffect(e1) -end -function c11228035.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c11228035.filter(c) - return c:IsType(TYPE_XYZ) -end -function c11228035.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c11228035.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c11228035.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) - and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c11228035.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) -end -function c11228035.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) - if g:GetCount()>0 and tc:IsRelateToEffect(e) then - local atk=tc:GetRank()*200 - local sc=g:GetFirst() - while sc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(atk) - sc:RegisterEffect(e1) - sc=g:GetNext() - end - if tc:IsAbleToDeck() and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) - and Duel.SelectYesNo(tp,aux.Stringid(11228035,0)) then - Duel.BreakEffect() - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end - end -end +--エクシーズ・ソウル +function c11228035.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(c11228035.condition) + e1:SetTarget(c11228035.target) + e1:SetOperation(c11228035.activate) + c:RegisterEffect(e1) +end +function c11228035.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c11228035.filter(c) + return c:IsType(TYPE_XYZ) +end +function c11228035.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c11228035.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c11228035.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c11228035.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) +end +function c11228035.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 and tc:IsRelateToEffect(e) then + local atk=tc:GetRank()*200 + local sc=g:GetFirst() + while sc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + sc:RegisterEffect(e1) + sc=g:GetNext() + end + if tc:IsAbleToDeck() and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) + and Duel.SelectYesNo(tp,aux.Stringid(11228035,0)) then + Duel.BreakEffect() + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end + end +end diff --git a/script/c11270236.lua b/script/c11270236.lua new file mode 100644 index 00000000..6db796d5 --- /dev/null +++ b/script/c11270236.lua @@ -0,0 +1,68 @@ +--召喚獣エリュシオン +function c11270236.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xf4),c11270236.ffilter2,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c11270236.splimit) + c:RegisterEffect(e1) + --attribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_ADD_ATTRIBUTE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(0x2f) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(49513164,0)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetHintTiming(0,0x1e0) + e3:SetTarget(c11270236.rmtg) + e3:SetOperation(c11270236.rmop) + c:RegisterEffect(e3) +end +function c11270236.ffilter2(c) + return c:GetSummonLocation()==LOCATION_EXTRA and c:IsLocation(LOCATION_MZONE) +end +function c11270236.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or aux.fuslimit(e,se,sp,st) +end +function c11270236.rmfilter1(c,tp) + local att=c:GetAttribute() + return c:IsSetCard(0xf4) and c:IsType(TYPE_MONSTER) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsAbleToRemove() + and Duel.IsExistingMatchingCard(c11270236.rmfilter2,tp,0,LOCATION_MZONE,1,nil,att) +end +function c11270236.rmfilter2(c,att) + return c:IsFaceup() and c:IsAttribute(att) and c:IsAbleToRemove() +end +function c11270236.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) and chkc:IsControler(tp) and c11270236.rmfilter1(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c11270236.rmfilter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectTarget(tp,c11270236.rmfilter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,tp) + local g2=Duel.GetMatchingGroup(c11270236.rmfilter2,tp,0,LOCATION_MZONE,nil,g1:GetFirst():GetAttribute()) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g1,g1:GetCount(),0,0) +end +function c11270236.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local tg=Group.FromCards(tc) + if tc:IsFaceup() then + local g=Duel.GetMatchingGroup(c11270236.rmfilter2,tp,0,LOCATION_MZONE,nil,tc:GetAttribute()) + tg:Merge(g) + end + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c1127737.lua b/script/c1127737.lua index a0ef0cc0..56e9ba3f 100644 --- a/script/c1127737.lua +++ b/script/c1127737.lua @@ -1,57 +1,57 @@ ---異次元の古戦場-サルガッソ -function c1127737.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(1127737,0)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetRange(LOCATION_FZONE) - e2:SetCondition(c1127737.damcon1) - e2:SetTarget(c1127737.damtg1) - e2:SetOperation(c1127737.damop1) - c:RegisterEffect(e2) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetCondition(c1127737.damcon2) - e2:SetOperation(c1127737.damop2) - c:RegisterEffect(e2) -end -function c1127737.damcon1(e,tp,eg,ep,ev,re,r,rp) - return eg:GetFirst():GetSummonType()==SUMMON_TYPE_XYZ -end -function c1127737.damtg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(eg:GetFirst():GetSummonPlayer()) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,eg:GetFirst():GetSummonPlayer(),500) -end -function c1127737.damop1(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - if not Duel.IsPlayerAffectedByEffect(p,37511832) then - Duel.Damage(p,d,REASON_EFFECT) - end - end -end -function c1127737.cfilter(c) - return c:IsFaceup() and c:IsType(TYPE_XYZ) -end -function c1127737.damcon2(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c1127737.cfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,1,nil) -end -function c1127737.damop2(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetTurnPlayer() - if not Duel.IsPlayerAffectedByEffect(p,37511832) then - Duel.Hint(HINT_CARD,0,1127737) - Duel.Damage(p,500,REASON_EFFECT) - end -end +--異次元の古戦場-サルガッソ +function c1127737.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1127737,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c1127737.damcon1) + e2:SetTarget(c1127737.damtg1) + e2:SetOperation(c1127737.damop1) + c:RegisterEffect(e2) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCondition(c1127737.damcon2) + e2:SetOperation(c1127737.damop2) + c:RegisterEffect(e2) +end +function c1127737.damcon1(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():GetSummonType()==SUMMON_TYPE_XYZ +end +function c1127737.damtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(eg:GetFirst():GetSummonPlayer()) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,eg:GetFirst():GetSummonPlayer(),500) +end +function c1127737.damop1(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if not Duel.IsPlayerAffectedByEffect(p,37511832) then + Duel.Damage(p,d,REASON_EFFECT) + end + end +end +function c1127737.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c1127737.damcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c1127737.cfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,1,nil) +end +function c1127737.damop2(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetTurnPlayer() + if not Duel.IsPlayerAffectedByEffect(p,37511832) then + Duel.Hint(HINT_CARD,0,1127737) + Duel.Damage(p,500,REASON_EFFECT) + end +end diff --git a/script/c11317977.lua b/script/c11317977.lua index 29a6c315..d6156d2b 100644 --- a/script/c11317977.lua +++ b/script/c11317977.lua @@ -79,8 +79,8 @@ function c11317977.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) end function c11317977.thop2(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c11317977.thfilter2,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c11317977.thfilter2),tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c11373345.lua b/script/c11373345.lua index 42ba7872..1863c09f 100644 --- a/script/c11373345.lua +++ b/script/c11373345.lua @@ -1,42 +1,42 @@ ---無力の証明 -function c11373345.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetCondition(c11373345.condition) - e1:SetCost(c11373345.cost) - e1:SetTarget(c11373345.target) - e1:SetOperation(c11373345.activate) - c:RegisterEffect(e1) -end -function c11373345.cfilter(c) - return c:IsFaceup() and c:IsLevelAbove(7) -end -function c11373345.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c11373345.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c11373345.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c11373345.filter(c) - return c:IsFaceup() and c:IsLevelBelow(5) -end -function c11373345.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c11373345.filter,tp,0,LOCATION_MZONE,1,nil) end - local sg=Duel.GetMatchingGroup(c11373345.filter,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) -end -function c11373345.activate(e,tp,eg,ep,ev,re,r,rp) - local sg=Duel.GetMatchingGroup(c11373345.filter,tp,0,LOCATION_MZONE,nil) - Duel.Destroy(sg,REASON_EFFECT) -end +--無力の証明 +function c11373345.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetCondition(c11373345.condition) + e1:SetCost(c11373345.cost) + e1:SetTarget(c11373345.target) + e1:SetOperation(c11373345.activate) + c:RegisterEffect(e1) +end +function c11373345.cfilter(c) + return c:IsFaceup() and c:IsLevelAbove(7) +end +function c11373345.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c11373345.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c11373345.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c11373345.filter(c) + return c:IsFaceup() and c:IsLevelBelow(5) +end +function c11373345.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c11373345.filter,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c11373345.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c11373345.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c11373345.filter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c11398059.lua b/script/c11398059.lua index 37ffe400..9e5a3c7b 100644 --- a/script/c11398059.lua +++ b/script/c11398059.lua @@ -6,6 +6,8 @@ function c11398059.initial_effect(c) --search local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(11398059,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c11398951.lua b/script/c11398951.lua new file mode 100644 index 00000000..05c57a2f --- /dev/null +++ b/script/c11398951.lua @@ -0,0 +1,72 @@ +--機械天使の絶対儀式 +function c11398951.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c11398951.target) + e1:SetOperation(c11398951.activate) + c:RegisterEffect(e1) +end +function c11398951.filter(c,e,tp,m1,m2,ft) + if not c:IsSetCard(0x2093) or bit.band(c:GetType(),0x81)~=0x81 + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c) + mg:Merge(m2) + if ft>0 then + return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) + else + return ft>-1 and mg:IsExists(c11398951.mfilterf,1,nil,tp,mg,c) + end +end +function c11398951.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumEqual(Card.GetRitualLevel,rc:GetLevel(),0,99,rc) + else return false end +end +function c11398951.mfilter(c) + return c:GetLevel()>0 and c:IsRace(RACE_WARRIOR+RACE_FAIRY) and c:IsAbleToDeck() +end +function c11398951.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg1=Duel.GetRitualMaterial(tp) + local mg2=Duel.GetMatchingGroup(c11398951.mfilter,tp,LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return Duel.IsExistingMatchingCard(c11398951.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg1,mg2,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c11398951.activate(e,tp,eg,ep,ev,re,r,rp) + local mg1=Duel.GetRitualMaterial(tp) + local mg2=Duel.GetMatchingGroup(c11398951.mfilter,tp,LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c11398951.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg1,mg2,ft) + local tc=g:GetFirst() + if tc then + local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc) + mg:Merge(mg2) + local mat=nil + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c11398951.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),0,99,tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + local mat2=mat:Filter(Card.IsLocation,nil,LOCATION_GRAVE):Filter(Card.IsRace,nil,RACE_WARRIOR+RACE_FAIRY) + mat:Sub(mat2) + Duel.ReleaseRitualMaterial(mat) + Duel.SendtoDeck(mat2,nil,2,REASON_EFFECT+REASON_MATERIAL+REASON_RITUAL) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c11411223.lua b/script/c11411223.lua index b64ec9f2..3b0e3b03 100644 --- a/script/c11411223.lua +++ b/script/c11411223.lua @@ -7,6 +7,7 @@ function c11411223.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW) e1:SetDescription(aux.Stringid(11411223,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c11448373.lua b/script/c11448373.lua index e4c2af65..c8ac44cc 100644 --- a/script/c11448373.lua +++ b/script/c11448373.lua @@ -5,6 +5,7 @@ function c11448373.initial_effect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_TO_GRAVE_REDIRECT) e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) e1:SetTarget(c11448373.rmtarget) e1:SetValue(LOCATION_DECKSHF) diff --git a/script/c11471117.lua b/script/c11471117.lua index 13936d14..c3299c49 100644 --- a/script/c11471117.lua +++ b/script/c11471117.lua @@ -1,21 +1,6 @@ --ライトイレイザー function c11471117.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(c11471117.target) - e1:SetOperation(c11471117.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(c11471117.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,c11471117.filter) --remove local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(11471117,0)) @@ -28,24 +13,8 @@ function c11471117.initial_effect(c) e3:SetOperation(c11471117.rmop) c:RegisterEffect(e3) end -function c11471117.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_WARRIOR) -end function c11471117.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_WARRIOR) -end -function c11471117.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c11471117.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c11471117.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c11471117.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c11471117.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 + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_WARRIOR) end function c11471117.rmcon(e,tp,eg,ep,ev,re,r,rp) local a=Duel.GetAttacker() diff --git a/script/c11475049.lua b/script/c11475049.lua index 937fcfe5..0081fc05 100644 --- a/script/c11475049.lua +++ b/script/c11475049.lua @@ -1,56 +1,56 @@ ---アーティファクト-アキレウス -function c11475049.initial_effect(c) - --set - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MONSTER_SSET) - e1:SetValue(TYPE_SPELL) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(11475049,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c11475049.spcon) - e2:SetTarget(c11475049.sptg) - e2:SetOperation(c11475049.spop) - c:RegisterEffect(e2) - --cannot be battle target - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(11475049,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCondition(c11475049.atcon) - e3:SetOperation(c11475049.atop) - c:RegisterEffect(e3) -end -function c11475049.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) - and c:IsReason(REASON_DESTROY) and Duel.GetTurnPlayer()~=tp -end -function c11475049.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 c11475049.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end -function c11475049.atcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c11475049.atop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c11475049.atlimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c11475049.atlimit(e,c) - return c:IsFaceup() and c:IsSetCard(0x97) -end +--アーティファクト-アキレウス +function c11475049.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MONSTER_SSET) + e1:SetValue(TYPE_SPELL) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(11475049,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c11475049.spcon) + e2:SetTarget(c11475049.sptg) + e2:SetOperation(c11475049.spop) + c:RegisterEffect(e2) + --cannot be battle target + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(11475049,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c11475049.atcon) + e3:SetOperation(c11475049.atop) + c:RegisterEffect(e3) +end +function c11475049.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) + and c:IsReason(REASON_DESTROY) and Duel.GetTurnPlayer()~=tp +end +function c11475049.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 c11475049.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c11475049.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c11475049.atop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c11475049.atlimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c11475049.atlimit(e,c) + return c:IsFaceup() and c:IsSetCard(0x97) +end diff --git a/script/c1149109.lua b/script/c1149109.lua index 8d8f4eba..6347b317 100644 --- a/script/c1149109.lua +++ b/script/c1149109.lua @@ -1,51 +1,51 @@ ---デッキロック -function c1149109.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c1149109.target) - c:RegisterEffect(e1) - --disable search - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_TO_HAND) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_DECK,LOCATION_DECK) - c:RegisterEffect(e2) - --disable spsummon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e3:SetTargetRange(LOCATION_DECK,LOCATION_DECK) - c:RegisterEffect(e3) -end -function c1149109.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - c:SetTurnCounter(0) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_SZONE) - e1:SetCondition(c1149109.descon) - e1:SetOperation(c1149109.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - c:RegisterEffect(e1) -end -function c1149109.descon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c1149109.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetTurnCounter() - ct=ct+1 - c:SetTurnCounter(ct) - if ct==2 then - Duel.Destroy(c,REASON_RULE) - end -end +--デッキロック +function c1149109.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c1149109.target) + c:RegisterEffect(e1) + --disable search + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_TO_HAND) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_DECK,LOCATION_DECK) + c:RegisterEffect(e2) + --disable spsummon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetTargetRange(LOCATION_DECK,LOCATION_DECK) + c:RegisterEffect(e3) +end +function c1149109.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + c:SetTurnCounter(0) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c1149109.descon) + e1:SetOperation(c1149109.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + c:RegisterEffect(e1) +end +function c1149109.descon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c1149109.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==2 then + Duel.Destroy(c,REASON_RULE) + end +end diff --git a/script/c11493868.lua b/script/c11493868.lua index 66774312..865d33dd 100644 --- a/script/c11493868.lua +++ b/script/c11493868.lua @@ -19,7 +19,7 @@ function c11493868.initial_effect(c) --fusion local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(11493868,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_SZONE) e3:SetHintTiming(0,0x1e0) @@ -55,7 +55,7 @@ function c11493868.cost(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SendtoGrave(e:GetHandler(),REASON_COST) end function c11493868.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return c:IsOnField() and not c:IsImmuneToEffect(e) end function c11493868.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9b) and (not f or f(c)) @@ -64,7 +64,7 @@ end function c11493868.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) local res=Duel.IsExistingMatchingCard(c11493868.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) @@ -81,7 +81,7 @@ function c11493868.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c11493868.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c11493868.filter1,tp,LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c11493868.filter1,nil,e) local sg1=Duel.GetMatchingGroup(c11493868.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) local mg2=nil local sg2=nil diff --git a/script/c11501629.lua b/script/c11501629.lua index 9afed038..7b01f15f 100644 --- a/script/c11501629.lua +++ b/script/c11501629.lua @@ -1,68 +1,68 @@ ---キックファイア -function c11501629.initial_effect(c) - c:EnableCounterPermit(0x2d) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_DESTROY) - e2:SetCondition(c11501629.ctcon) - e2:SetOperation(c11501629.ctop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(11501629,0)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetHintTiming(TIMING_STANDBY_PHASE) - e3:SetCondition(c11501629.damcon) - e3:SetCost(c11501629.damcost) - e3:SetTarget(c11501629.damtg) - e3:SetOperation(c11501629.damop) - c:RegisterEffect(e3) -end -function c11501629.ctfilter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsReason(REASON_EFFECT) -end -function c11501629.ctcon(e,tp,eg,ep,ev,re,r,rp) - local ct=eg:FilterCount(c11501629.ctfilter,nil,tp) - if ct>0 and e:GetHandler():IsCanAddCounter(0x2d,ct) then - e:SetLabel(ct) - return true - else - return false - end -end -function c11501629.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x2d,e:GetLabel()) -end -function c11501629.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_STANDBY -end -function c11501629.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - e:SetLabel(e:GetHandler():GetCounter(0x2d)) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c11501629.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetCounter(0x2d)>0 end - local dam=e:GetLabel()*1000 - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c11501629.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--キックファイア +function c11501629.initial_effect(c) + c:EnableCounterPermit(0x2d) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_DESTROY) + e2:SetCondition(c11501629.ctcon) + e2:SetOperation(c11501629.ctop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(11501629,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(TIMING_STANDBY_PHASE) + e3:SetCondition(c11501629.damcon) + e3:SetCost(c11501629.damcost) + e3:SetTarget(c11501629.damtg) + e3:SetOperation(c11501629.damop) + c:RegisterEffect(e3) +end +function c11501629.ctfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsReason(REASON_EFFECT) +end +function c11501629.ctcon(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c11501629.ctfilter,nil,tp) + if ct>0 and e:GetHandler():IsCanAddCounter(0x2d,ct) then + e:SetLabel(ct) + return true + else + return false + end +end +function c11501629.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x2d,e:GetLabel()) +end +function c11501629.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_STANDBY +end +function c11501629.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabel(e:GetHandler():GetCounter(0x2d)) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c11501629.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetCounter(0x2d)>0 end + local dam=e:GetLabel()*1000 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c11501629.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c11502550.lua b/script/c11502550.lua index d7579a67..7b4922e9 100644 --- a/script/c11502550.lua +++ b/script/c11502550.lua @@ -1,122 +1,123 @@ ---E・HERO エアー・ネオス -function c11502550.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,89943723,54959865,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c11502550.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c11502550.spcon) - e2:SetOperation(c11502550.spop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(11502550,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c11502550.retcon1) - e3:SetTarget(c11502550.rettg) - e3:SetOperation(c11502550.retop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(0) - e4:SetCondition(c11502550.retcon2) - c:RegisterEffect(e4) - --atkup - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetCode(EFFECT_UPDATE_ATTACK) - e5:SetRange(LOCATION_MZONE) - e5:SetValue(c11502550.atkval) - c:RegisterEffect(e5) -end -function c11502550.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) -end -function c11502550.spfilter(c,code) - return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) -end -function c11502550.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-1 then return false end - local g1=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,nil,54959865) - if g1:GetCount()==0 or g2:GetCount()==0 then return false end - if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end - if ft>0 then return true end - local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - if ft==-1 then return f1>0 and f2>0 - else return f1>0 or f2>0 end -end -function c11502550.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g1=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,nil,54959865) - g1:Merge(g2) - local g=Group.CreateGroup() - local tc=nil - for i=1,2 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - if ft<=0 then - tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() - ft=ft+1 - else - tc=g1:Select(tp,1,1,nil):GetFirst() - end - g:AddCard(tc) - if i==1 then - g1:Clear() - if tc:IsFusionCode(89943723) then - local sg=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,tc,54959865) - g1:Merge(sg) - end - if tc:IsFusionCode(54959865) then - local sg=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) - g1:Merge(sg) - end - end - end - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c11502550.retcon1(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsHasEffect(42015635) -end -function c11502550.retcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsHasEffect(42015635) -end -function c11502550.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtra() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c11502550.retop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) -end -function c11502550.atkval(e,c) - local lps=Duel.GetLP(c:GetControler()) - local lpo=Duel.GetLP(1-c:GetControler()) - if lps>=lpo then return 0 - else return lpo-lps end -end +--E・HERO エアー・ネオス +function c11502550.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,89943723,54959865,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c11502550.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c11502550.spcon) + e2:SetOperation(c11502550.spop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(11502550,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c11502550.retcon1) + e3:SetTarget(c11502550.rettg) + e3:SetOperation(c11502550.retop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(0) + e4:SetCondition(c11502550.retcon2) + c:RegisterEffect(e4) + --atkup + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c11502550.atkval) + c:RegisterEffect(e5) +end +c11502550.material_setcode=0x8 +function c11502550.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c11502550.spfilter(c,code) + return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) +end +function c11502550.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local g1=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,nil,54959865) + if g1:GetCount()==0 or g2:GetCount()==0 then return false end + if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + if ft==-1 then return f1>0 and f2>0 + else return f1>0 or f2>0 end +end +function c11502550.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,nil,54959865) + g1:Merge(g2) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + ft=ft+1 + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + if i==1 then + g1:Clear() + if tc:IsFusionCode(89943723) then + local sg=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,tc,54959865) + g1:Merge(sg) + end + if tc:IsFusionCode(54959865) then + local sg=Duel.GetMatchingGroup(c11502550.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) + g1:Merge(sg) + end + end + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c11502550.retcon1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(42015635) +end +function c11502550.retcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasEffect(42015635) +end +function c11502550.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtra() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c11502550.retop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end +function c11502550.atkval(e,c) + local lps=Duel.GetLP(c:GetControler()) + local lpo=Duel.GetLP(1-c:GetControler()) + if lps>=lpo then return 0 + else return lpo-lps end +end diff --git a/script/c11510448.lua b/script/c11510448.lua new file mode 100644 index 00000000..148a576d --- /dev/null +++ b/script/c11510448.lua @@ -0,0 +1,79 @@ +--十二獣タイグリス +function c11510448.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3,c11510448.ovfilter,aux.Stringid(11510448,0),3,c11510448.xyzop) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c11510448.atkval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(c11510448.defval) + c:RegisterEffect(e2) + --xyz material + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(11510448,1)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c11510448.cost) + e3:SetTarget(c11510448.target) + e3:SetOperation(c11510448.operation) + c:RegisterEffect(e3) +end +function c11510448.ovfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf1) and not c:IsCode(11510448) +end +function c11510448.xyzop(e,tp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,11510448)==0 end + Duel.RegisterFlagEffect(tp,11510448,RESET_PHASE+PHASE_END,0,1) +end +function c11510448.atkfilter(c) + return c:IsSetCard(0xf1) and c:GetAttack()>=0 +end +function c11510448.atkval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c11510448.atkfilter,nil) + return g:GetSum(Card.GetAttack) +end +function c11510448.deffilter(c) + return c:IsSetCard(0xf1) and c:GetDefense()>=0 +end +function c11510448.defval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c11510448.deffilter,nil) + return g:GetSum(Card.GetDefense) +end +function c11510448.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c11510448.filter1(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c11510448.filter2(c) + return c:IsSetCard(0xf1) and c:IsType(TYPE_MONSTER) +end +function c11510448.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c11510448.filter1,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c11510448.filter2,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(11510448,2)) + Duel.SelectTarget(tp,c11510448.filter1,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(11510448,3)) + local g=Duel.SelectTarget(tp,c11510448.filter2,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) +end +function c11510448.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc1=g:Filter(Card.IsLocation,nil,LOCATION_MZONE):GetFirst() + local g2=g:Filter(Card.IsLocation,nil,LOCATION_GRAVE) + if tc1 and tc1:IsFaceup() and not tc1:IsImmuneToEffect(e) and g2:GetCount()>0 then + Duel.Overlay(tc1,g2) + end +end diff --git a/script/c11522979.lua b/script/c11522979.lua index 1e62da64..b8e3a0ae 100644 --- a/script/c11522979.lua +++ b/script/c11522979.lua @@ -18,7 +18,7 @@ function c11522979.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(11522979,1)) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) e2:SetCondition(c11522979.condition) diff --git a/script/c1154611.lua b/script/c1154611.lua index c1c34347..cc21d81a 100644 --- a/script/c1154611.lua +++ b/script/c1154611.lua @@ -1,74 +1,74 @@ ---버제스토마 레안코일리아 -function c1154611.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c1154611.target) - e1:SetOperation(c1154611.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(1154611,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c1154611.spcon) - e2:SetTarget(c1154611.sptg) - e2:SetOperation(c1154611.spop) - c:RegisterEffect(e2) -end -function c1154611.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) end - if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) -end -function c1154611.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) - end -end -function c1154611.spcon(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c1154611.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(1154611)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,1154611,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end - c:RegisterFlagEffect(1154611,RESET_CHAIN,0,1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c1154611.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,1154611,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c1154611.efilter) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetReset(RESET_EVENT+0x47e0000) - e3:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c1154611.efilter(e,re) - return re:IsActiveType(TYPE_MONSTER) -end +--バージェストマ・レアンコイリア +function c1154611.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c1154611.target) + e1:SetOperation(c1154611.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1154611,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c1154611.spcon) + e2:SetTarget(c1154611.sptg) + e2:SetOperation(c1154611.spop) + c:RegisterEffect(e2) +end +function c1154611.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c1154611.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) + end +end +function c1154611.spcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c1154611.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(1154611)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,1154611,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end + c:RegisterFlagEffect(1154611,RESET_CHAIN,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c1154611.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,1154611,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c1154611.efilter) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c1154611.efilter(e,re) + return re:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c11548522.lua b/script/c11548522.lua index 52886843..bf9c664e 100644 --- a/script/c11548522.lua +++ b/script/c11548522.lua @@ -1,21 +1,21 @@ ---迷犬マロン -function c11548522.initial_effect(c) - --to deck - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(11548522,0)) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c11548522.target) - e1:SetOperation(c11548522.operation) - c:RegisterEffect(e1) -end -function c11548522.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c11548522.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) - end -end +--迷犬マロン +function c11548522.initial_effect(c) + --to deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(11548522,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c11548522.target) + e1:SetOperation(c11548522.operation) + c:RegisterEffect(e1) +end +function c11548522.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c11548522.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) + end +end diff --git a/script/c11609969.lua b/script/c11609969.lua index 0207447a..9f6aad92 100644 --- a/script/c11609969.lua +++ b/script/c11609969.lua @@ -1,117 +1,117 @@ ---DD魔導賢者ケプラー -function c11609969.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c11609969.splimit) - c:RegisterEffect(e2) - --scale change - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_PZONE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCountLimit(1) - e3:SetCondition(c11609969.sccon) - e3:SetTarget(c11609969.sctg) - e3:SetOperation(c11609969.scop) - c:RegisterEffect(e3) - --tohand - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_SUMMON_SUCCESS) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e4:SetCountLimit(1,11609969) - e4:SetTarget(c11609969.thtg) - e4:SetOperation(c11609969.thop) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e5) -end -function c11609969.splimit(e,c,tp,sumtp,sumpos) - return not c:IsSetCard(0xaf) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c11609969.sccon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c11609969.filter(c,lv) - return c:IsFaceup() and not c:IsSetCard(0xaf) and c:IsLevelAbove(lv) -end -function c11609969.sctg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local scl=math.max(1,e:GetHandler():GetLeftScale()-2) - local g=Duel.GetMatchingGroup(c11609969.filter,tp,LOCATION_MZONE,0,nil,scl) - if e:GetHandler():GetLeftScale()>1 then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) - end -end -function c11609969.scop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:GetLeftScale()==1 then return end - local scl=2 - if c:GetLeftScale()==2 then scl=1 end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LSCALE) - e1:SetValue(-scl) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_RSCALE) - c:RegisterEffect(e2) - local g=Duel.GetMatchingGroup(c11609969.filter,tp,LOCATION_MZONE,0,nil,c:GetLeftScale()) - if g:GetCount()>0 then - Duel.BreakEffect() - Duel.Destroy(g,REASON_EFFECT) - end -end -function c11609969.filter1(c) - return c:IsFaceup() and c:IsSetCard(0xaf) and c:IsAbleToHand() -end -function c11609969.filter2(c) - return c:IsSetCard(0xae) and c:IsAbleToHand() -end -function c11609969.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c11609969.filter1(chkc) and chkc~=e:GetHandler() end - local b1=Duel.IsExistingTarget(c11609969.filter1,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) - local b2=Duel.IsExistingMatchingCard(c11609969.filter2,tp,LOCATION_DECK,0,1,nil) - if chk==0 then return b1 or b2 end - local op=0 - if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(11609969,0),aux.Stringid(11609969,1)) - elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(11609969,0)) - else op=Duel.SelectOption(tp,aux.Stringid(11609969,1))+1 end - e:SetLabel(op) - if op==0 then - e:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c11609969.filter1,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) - else - e:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) - end -end -function c11609969.thop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 then - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c11609969.filter2,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - end -end +--DD魔導賢者ケプラー +function c11609969.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c11609969.splimit) + c:RegisterEffect(e2) + --scale change + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_PZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetCondition(c11609969.sccon) + e3:SetTarget(c11609969.sctg) + e3:SetOperation(c11609969.scop) + c:RegisterEffect(e3) + --tohand + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCountLimit(1,11609969) + e4:SetTarget(c11609969.thtg) + e4:SetOperation(c11609969.thop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c11609969.splimit(e,c,tp,sumtp,sumpos) + return not c:IsSetCard(0xaf) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c11609969.sccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c11609969.filter(c,lv) + return c:IsFaceup() and not c:IsSetCard(0xaf) and c:IsLevelAbove(lv) +end +function c11609969.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local scl=math.max(1,e:GetHandler():GetLeftScale()-2) + local g=Duel.GetMatchingGroup(c11609969.filter,tp,LOCATION_MZONE,0,nil,scl) + if e:GetHandler():GetLeftScale()>1 then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + end +end +function c11609969.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:GetLeftScale()==1 then return end + local scl=2 + if c:GetLeftScale()==2 then scl=1 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LSCALE) + e1:SetValue(-scl) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_RSCALE) + c:RegisterEffect(e2) + local g=Duel.GetMatchingGroup(c11609969.filter,tp,LOCATION_MZONE,0,nil,c:GetLeftScale()) + if g:GetCount()>0 then + Duel.BreakEffect() + Duel.Destroy(g,REASON_EFFECT) + end +end +function c11609969.filter1(c) + return c:IsFaceup() and c:IsSetCard(0xaf) and c:IsAbleToHand() +end +function c11609969.filter2(c) + return c:IsSetCard(0xae) and c:IsAbleToHand() +end +function c11609969.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c11609969.filter1(chkc) and chkc~=e:GetHandler() end + local b1=Duel.IsExistingTarget(c11609969.filter1,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) + local b2=Duel.IsExistingMatchingCard(c11609969.filter2,tp,LOCATION_DECK,0,1,nil) + if chk==0 then return b1 or b2 end + local op=0 + if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(11609969,0),aux.Stringid(11609969,1)) + elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(11609969,0)) + else op=Duel.SelectOption(tp,aux.Stringid(11609969,1))+1 end + e:SetLabel(op) + if op==0 then + e:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c11609969.filter1,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + else + e:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) + end +end +function c11609969.thop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c11609969.filter2,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c11646785.lua b/script/c11646785.lua index bffb501c..4c76463e 100644 --- a/script/c11646785.lua +++ b/script/c11646785.lua @@ -14,7 +14,7 @@ function c11646785.initial_effect(c) e2:SetDescription(aux.Stringid(11646785,0)) e2:SetCategory(CATEGORY_POSITION) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e2:SetCondition(c11646785.setcon1) diff --git a/script/c11662742.lua b/script/c11662742.lua index 7e95a7d4..5de0bfe1 100644 --- a/script/c11662742.lua +++ b/script/c11662742.lua @@ -1,83 +1,83 @@ ---ジェルエンデュオ -function c11662742.initial_effect(c) - --battle indestructable - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - c:RegisterEffect(e1) - --double tribute - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DOUBLE_TRIBUTE) - e2:SetValue(c11662742.dtcon) - c:RegisterEffect(e2) - --selfdes - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_DAMAGE) - e3:SetOperation(c11662742.dmop) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(11662742,0)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_BATTLED) - e4:SetRange(LOCATION_MZONE) - e4:SetCondition(c11662742.descon) - e4:SetTarget(c11662742.destg) - e4:SetOperation(c11662742.desop) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(11662742,0)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e5:SetCode(EVENT_BATTLED) - e5:SetRange(LOCATION_MZONE) - e5:SetCondition(c11662742.descon2) - e5:SetTarget(c11662742.destg) - e5:SetOperation(c11662742.desop) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(11662742,0)) - e6:SetCategory(CATEGORY_DESTROY) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e6:SetRange(LOCATION_MZONE) - e6:SetCode(EVENT_DAMAGE) - e6:SetCondition(c11662742.descon3) - e6:SetTarget(c11662742.destg) - e6:SetOperation(c11662742.desop) - c:RegisterEffect(e6) -end -function c11662742.dtcon(e,c) - return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_FAIRY) -end -function c11662742.dmop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetControler()~=ep then return end - if bit.band(r,REASON_BATTLE)~=0 then - c:RegisterFlagEffect(11662742,RESET_PHASE+PHASE_DAMAGE,0,1) - elseif Duel.GetCurrentPhase()==PHASE_DAMAGE and not Duel.IsDamageCalculated() then - c:RegisterFlagEffect(11662743,RESET_PHASE+PHASE_DAMAGE,0,1) - end -end -function c11662742.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(11662742)>0 -end -function c11662742.descon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(11662743)>0 -end -function c11662742.descon3(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT)~=0 and e:GetHandler():GetControler()==ep - and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or Duel.IsDamageCalculated()) -end -function c11662742.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 c11662742.desop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.Destroy(e:GetHandler(),REASON_EFFECT) - end -end +--ジェルエンデュオ +function c11662742.initial_effect(c) + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + c:RegisterEffect(e1) + --double tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DOUBLE_TRIBUTE) + e2:SetValue(c11662742.dtcon) + c:RegisterEffect(e2) + --selfdes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_DAMAGE) + e3:SetOperation(c11662742.dmop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(11662742,0)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_BATTLED) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c11662742.descon) + e4:SetTarget(c11662742.destg) + e4:SetOperation(c11662742.desop) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(11662742,0)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_BATTLED) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c11662742.descon2) + e5:SetTarget(c11662742.destg) + e5:SetOperation(c11662742.desop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(11662742,0)) + e6:SetCategory(CATEGORY_DESTROY) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EVENT_DAMAGE) + e6:SetCondition(c11662742.descon3) + e6:SetTarget(c11662742.destg) + e6:SetOperation(c11662742.desop) + c:RegisterEffect(e6) +end +function c11662742.dtcon(e,c) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_FAIRY) +end +function c11662742.dmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetControler()~=ep then return end + if bit.band(r,REASON_BATTLE)~=0 then + c:RegisterFlagEffect(11662742,RESET_PHASE+PHASE_DAMAGE,0,1) + elseif Duel.GetCurrentPhase()==PHASE_DAMAGE and not Duel.IsDamageCalculated() then + c:RegisterFlagEffect(11662743,RESET_PHASE+PHASE_DAMAGE,0,1) + end +end +function c11662742.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(11662742)>0 +end +function c11662742.descon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(11662743)>0 +end +function c11662742.descon3(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and e:GetHandler():GetControler()==ep + and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or Duel.IsDamageCalculated()) +end +function c11662742.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 c11662742.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c11678191.lua b/script/c11678191.lua index e58e8fc2..bb0562ad 100644 --- a/script/c11678191.lua +++ b/script/c11678191.lua @@ -16,7 +16,7 @@ function c11678191.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c11678191.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c11678191.sptg) e2:SetOperation(c11678191.spop) c:RegisterEffect(e2) @@ -27,7 +27,7 @@ function c11678191.initial_effect(c) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_SZONE) e3:SetCountLimit(1) - e3:SetCondition(c11678191.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetTarget(c11678191.postg) e3:SetOperation(c11678191.posop) c:RegisterEffect(e3) @@ -36,7 +36,7 @@ function c11678191.initial_effect(c) e5:SetType(EFFECT_TYPE_EQUIP) e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e5:SetCondition(c11678191.uncon) + e5:SetCondition(aux.IsUnionState) e5:SetValue(c11678191.repval) c:RegisterEffect(e5) --eqlimit @@ -47,9 +47,7 @@ function c11678191.initial_effect(c) e6:SetValue(c11678191.eqlimit) c:RegisterEffect(e6) end -function c11678191.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c11678191.old_union=true function c11678191.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -77,7 +75,7 @@ function c11678191.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c11678191.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(11678191)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c11682713.lua b/script/c11682713.lua index 86c6ae2a..978cb898 100644 --- a/script/c11682713.lua +++ b/script/c11682713.lua @@ -1,51 +1,51 @@ ---森羅の葉心棒 ブレイド -function c11682713.initial_effect(c) - --deck check - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(11682713,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(aux.bdogcon) - e1:SetTarget(c11682713.target) - e1:SetOperation(c11682713.operation) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(11682713,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCondition(c11682713.tdcon) - e2:SetTarget(c11682713.tdtg) - e2:SetOperation(c11682713.tdop) - c:RegisterEffect(e2) -end -function c11682713.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c11682713.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - if tc:IsRace(RACE_PLANT) then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) - else - Duel.MoveSequence(tc,1) - end -end -function c11682713.tdcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c11682713.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c11682713.tdop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,e:GetHandler()) - end -end +--森羅の葉心棒 ブレイド +function c11682713.initial_effect(c) + --deck check + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(11682713,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(aux.bdogcon) + e1:SetTarget(c11682713.target) + e1:SetOperation(c11682713.operation) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(11682713,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c11682713.tdcon) + e2:SetTarget(c11682713.tdtg) + e2:SetOperation(c11682713.tdop) + c:RegisterEffect(e2) +end +function c11682713.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c11682713.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsRace(RACE_PLANT) then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) + else + Duel.MoveSequence(tc,1) + end +end +function c11682713.tdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c11682713.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c11682713.tdop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,e:GetHandler()) + end +end diff --git a/script/c11760174.lua b/script/c11760174.lua index 3fd15c46..b001fb63 100644 --- a/script/c11760174.lua +++ b/script/c11760174.lua @@ -1,33 +1,33 @@ ---言語道断侍 -function c11760174.initial_effect(c) - --act limit - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(11760174,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c11760174.cost) - e1:SetTarget(c11760174.target) - e1:SetOperation(c11760174.operation) - c:RegisterEffect(e1) -end -function c11760174.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,800) end - Duel.PayLPCost(tp,800) -end -function c11760174.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,11760174)==0 end -end -function c11760174.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(1,1) - e1:SetValue(c11760174.aclimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - Duel.RegisterFlagEffect(tp,11760174,RESET_PHASE+PHASE_END,0,1) -end -function c11760174.aclimit(e,re,tp) - return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) -end +--言語道断侍 +function c11760174.initial_effect(c) + --act limit + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(11760174,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c11760174.cost) + e1:SetTarget(c11760174.target) + e1:SetOperation(c11760174.operation) + c:RegisterEffect(e1) +end +function c11760174.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c11760174.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,11760174)==0 end +end +function c11760174.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,1) + e1:SetValue(c11760174.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,11760174,RESET_PHASE+PHASE_END,0,1) +end +function c11760174.aclimit(e,re,tp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c11790356.lua b/script/c11790356.lua index f8331bc2..4482ac2f 100644 --- a/script/c11790356.lua +++ b/script/c11790356.lua @@ -1,95 +1,96 @@ ---破戒蛮竜-バスター・ドラゴン -function c11790356.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --Change race - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_RACE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(RACE_DRAGON) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetCondition(c11790356.spcon) - e2:SetTarget(c11790356.sptg) - e2:SetOperation(c11790356.spop) - c:RegisterEffect(e2) - --Equip - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCategory(CATEGORY_EQUIP) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c11790356.condition) - e3:SetTarget(c11790356.target) - e3:SetOperation(c11790356.operation) - c:RegisterEffect(e3) -end -function c11790356.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xd7) -end -function c11790356.spcon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c11790356.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c11790356.filter(c,e,tp) - return c:IsCode(78193831) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c11790356.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c11790356.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c11790356.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c11790356.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c11790356.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c11790356.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c11790356.filter2(c) - return c:IsSetCard(0xd6) and c:IsType(TYPE_MONSTER) and not c:IsForbidden() -end -function c11790356.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c11790356.cfilter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c11790356.cfilter,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingMatchingCard(c11790356.filter2,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c11790356.cfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,nil,1,tp,LOCATION_GRAVE) -end -function c11790356.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local sg=Duel.SelectMatchingCard(tp,c11790356.filter2,tp,LOCATION_GRAVE,0,1,1,nil) - local sc=sg:GetFirst() - if sc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - if not Duel.Equip(tp,sc,tc,true) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c11790356.eqlimit) - e1:SetLabelObject(tc) - sc:RegisterEffect(e1) - end -end -function c11790356.eqlimit(e,c) - return e:GetLabelObject()==c -end +--破戒蛮竜-バスター・ドラゴン +function c11790356.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --Change race + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(RACE_DRAGON) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c11790356.spcon) + e2:SetTarget(c11790356.sptg) + e2:SetOperation(c11790356.spop) + c:RegisterEffect(e2) + --Equip + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(0,TIMING_END_PHASE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c11790356.condition) + e3:SetTarget(c11790356.target) + e3:SetOperation(c11790356.operation) + c:RegisterEffect(e3) +end +function c11790356.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xd7) +end +function c11790356.spcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c11790356.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c11790356.filter(c,e,tp) + return c:IsCode(78193831) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c11790356.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c11790356.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c11790356.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c11790356.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c11790356.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c11790356.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c11790356.filter2(c) + return c:IsSetCard(0xd6) and c:IsType(TYPE_MONSTER) and not c:IsForbidden() +end +function c11790356.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c11790356.cfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c11790356.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c11790356.filter2,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c11790356.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,nil,1,tp,LOCATION_GRAVE) +end +function c11790356.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local sg=Duel.SelectMatchingCard(tp,c11790356.filter2,tp,LOCATION_GRAVE,0,1,1,nil) + local sc=sg:GetFirst() + if sc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + if not Duel.Equip(tp,sc,tc,true) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c11790356.eqlimit) + e1:SetLabelObject(tc) + sc:RegisterEffect(e1) + end +end +function c11790356.eqlimit(e,c) + return e:GetLabelObject()==c +end diff --git a/script/c11819616.lua b/script/c11819616.lua index 780ba06c..c824e919 100644 --- a/script/c11819616.lua +++ b/script/c11819616.lua @@ -1,43 +1,42 @@ ---椿姫ティタニアル -function c11819616.initial_effect(c) - --negate - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(11819616,0)) - e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c11819616.discon) - e2:SetCost(c11819616.discost) - e2:SetTarget(c11819616.distg) - e2:SetOperation(c11819616.disop) - c:RegisterEffect(e2) -end -function c11819616.discon(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return tg and tg:IsExists(Card.IsOnField,1,nil) and Duel.IsChainNegatable(ev) -end -function c11819616.costfilter(c) - return c:IsFaceup() and c:IsRace(RACE_PLANT) and not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c11819616.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c11819616.costfilter,1,nil) end - local sg=Duel.SelectReleaseGroup(tp,c11819616.costfilter,1,1,nil) - Duel.Release(sg,REASON_COST) -end -function c11819616.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c11819616.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--椿姫ティタニアル +function c11819616.initial_effect(c) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(11819616,0)) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c11819616.discon) + e2:SetCost(c11819616.discost) + e2:SetTarget(c11819616.distg) + e2:SetOperation(c11819616.disop) + c:RegisterEffect(e2) +end +function c11819616.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsExists(Card.IsOnField,1,nil) and Duel.IsChainNegatable(ev) +end +function c11819616.costfilter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c11819616.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c11819616.costfilter,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,c11819616.costfilter,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c11819616.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c11819616.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c11834972.lua b/script/c11834972.lua index 8ebc147d..0c08c249 100644 --- a/script/c11834972.lua +++ b/script/c11834972.lua @@ -1,42 +1,48 @@ ---ラヴァル・ガンナー -function c11834972.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(11834972,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCondition(c11834972.condition) - e1:SetCost(c11834972.cost) - e1:SetOperation(c11834972.operation) - c:RegisterEffect(e1) -end -function c11834972.cfilter(c) - return c:IsSetCard(0x39) and c:GetCode()~=11834972 -end -function c11834972.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c11834972.cfilter,tp,LOCATION_GRAVE,0,1,nil) -end -function c11834972.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct>5 then ct=5 end - local t={} - for i=1,ct do t[i]=i end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(11834972,1)) - local ac=Duel.AnnounceNumber(tp,table.unpack(t)) - Duel.DiscardDeck(tp,ac,REASON_COST) - local g=Duel.GetOperatedGroup() - e:SetLabel(g:FilterCount(Card.IsSetCard,nil,0x39)*200) -end -function c11834972.operation(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:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetValue(e:GetLabel()) - c:RegisterEffect(e1) - end -end +--ラヴァル・ガンナー +function c11834972.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(11834972,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c11834972.condition) + e1:SetCost(c11834972.cost) + e1:SetOperation(c11834972.operation) + c:RegisterEffect(e1) +end +function c11834972.cfilter(c) + return c:IsSetCard(0x39) and c:GetCode()~=11834972 +end +function c11834972.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c11834972.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c11834972.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end + local ct={} + for i=5,1,-1 do + if Duel.IsPlayerCanDiscardDeckAsCost(tp,i) then + table.insert(ct,i) + end + end + if #ct==1 then + Duel.DiscardDeck(tp,ct[1],REASON_COST) + else + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(11834972,1)) + local ac=Duel.AnnounceNumber(tp,table.unpack(ct)) + Duel.DiscardDeck(tp,ac,REASON_COST) + end + local g=Duel.GetOperatedGroup() + e:SetLabel(g:FilterCount(Card.IsSetCard,nil,0x39)*200) +end +function c11834972.operation(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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(e:GetLabel()) + c:RegisterEffect(e1) + end +end diff --git a/script/c11901678.lua b/script/c11901678.lua index afffe609..0f895d16 100644 --- a/script/c11901678.lua +++ b/script/c11901678.lua @@ -1,7 +1,7 @@ ---ブラック・デーモンズ・ドラゴン -function c11901678.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,70781052,74677422,true,true) -end -c11901678.material_setcode=0x3b +--ブラック・デーモンズ・ドラゴン +function c11901678.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,70781052,74677422,true,true) +end +c11901678.material_setcode=0x3b diff --git a/script/c11913700.lua b/script/c11913700.lua index e2e0fd57..6c30fc4c 100644 --- a/script/c11913700.lua +++ b/script/c11913700.lua @@ -1,74 +1,43 @@ ---インスタント・ネオスペース -function c11913700.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(c11913700.target) - e1:SetOperation(c11913700.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(c11913700.eqlimit) - c:RegisterEffect(e2) - --equip effect - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(42015635) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(11913700,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c11913700.spcon) - e4:SetTarget(c11913700.sptg) - e4:SetOperation(c11913700.spop) - c:RegisterEffect(e4) -end -function c11913700.eqlimit(e,c) - return c:IsSetCard(0x9) and c:IsType(TYPE_FUSION) and not c:IsCode(31111109) -end -function c11913700.filter(c) - return c:IsFaceup() and c:IsSetCard(0x9) and c:IsType(TYPE_FUSION) and not c:IsCode(31111109) -end -function c11913700.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c11913700.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c11913700.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c11913700.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c11913700.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 c11913700.spcon(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetHandler():GetPreviousEquipTarget() - return e:GetHandler():IsReason(REASON_LOST_TARGET) and not ec:IsLocation(LOCATION_ONFIELD+LOCATION_OVERLAY) -end -function c11913700.spfilter(c,e,tp) - return c:IsCode(89943723) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c11913700.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c11913700.spfilter,tp,0x13,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) -end -function c11913700.spop(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,c11913700.spfilter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--インスタント・ネオスペース +function c11913700.initial_effect(c) + aux.AddEquipProcedure(c,nil,c11913700.filter) + --equip effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(42015635) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(11913700,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c11913700.spcon) + e4:SetTarget(c11913700.sptg) + e4:SetOperation(c11913700.spop) + c:RegisterEffect(e4) +end +function c11913700.filter(c) + return c:IsSetCard(0x9) and c:IsType(TYPE_FUSION) and not c:IsCode(31111109) +end +function c11913700.spcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetPreviousEquipTarget() + return e:GetHandler():IsReason(REASON_LOST_TARGET) and not ec:IsLocation(LOCATION_ONFIELD+LOCATION_OVERLAY) +end +function c11913700.spfilter(c,e,tp) + return c:IsCode(89943723) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c11913700.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c11913700.spfilter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c11913700.spop(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,c11913700.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c11954712.lua b/script/c11954712.lua index e5552e76..a7038de7 100644 --- a/script/c11954712.lua +++ b/script/c11954712.lua @@ -1,57 +1,57 @@ ---フライファング -function c11954712.initial_effect(c) - --reg - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetOperation(c11954712.regop) - c:RegisterEffect(e1) - --pierce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e2) - --remove - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(11954712,0)) - e3:SetCategory(CATEGORY_REMOVE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_PHASE+PHASE_BATTLE) - e3:SetCountLimit(1) - e3:SetCondition(c11954712.rmcon) - e3:SetTarget(c11954712.rmtg) - e3:SetOperation(c11954712.rmop) - c:RegisterEffect(e3) -end -function c11954712.regop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(11954712,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) -end -function c11954712.rmcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(11954712)~=0 -end -function c11954712.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) -end -function c11954712.rmop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - if Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)==0 then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetLabelObject(c) - e1:SetCondition(c11954712.retcon) - e1:SetOperation(c11954712.retop) - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - Duel.RegisterEffect(e1,tp) - end -end -function c11954712.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c11954712.retop(e,tp,eg,ep,ev,re,r,rp) - Duel.ReturnToField(e:GetLabelObject()) -end +--フライファング +function c11954712.initial_effect(c) + --reg + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetOperation(c11954712.regop) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(11954712,0)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetCountLimit(1) + e3:SetCondition(c11954712.rmcon) + e3:SetTarget(c11954712.rmtg) + e3:SetOperation(c11954712.rmop) + c:RegisterEffect(e3) +end +function c11954712.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(11954712,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) +end +function c11954712.rmcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(11954712)~=0 +end +function c11954712.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c11954712.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + if Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)==0 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetLabelObject(c) + e1:SetCondition(c11954712.retcon) + e1:SetOperation(c11954712.retop) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c11954712.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c11954712.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c11961740.lua b/script/c11961740.lua index dfaf1953..d0462fb9 100644 --- a/script/c11961740.lua +++ b/script/c11961740.lua @@ -1,52 +1,52 @@ ---タイムカプセル -function c11961740.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c11961740.target) - e1:SetOperation(c11961740.activate) - c:RegisterEffect(e1) -end -function c11961740.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) -end -function c11961740.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,1,nil) - local tc=g:GetFirst() - if tc and Duel.Remove(tc,POS_FACEDOWN,REASON_EFFECT)~=0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) then - tc:RegisterFlagEffect(11961740,RESET_EVENT+0x1fe0000,0,1) - c:CancelToGrave() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_SZONE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - e1:SetCondition(c11961740.thcon) - e1:SetOperation(c11961740.thop) - e1:SetLabel(0) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) - end - end -end -function c11961740.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c11961740.thop(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetLabel() - e:GetHandler():SetTurnCounter(ct+1) - if ct==1 then - Duel.Destroy(e:GetHandler(),REASON_RULE) - local tc=e:GetLabelObject() - if tc:GetFlagEffect(11961740)~=0 then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end - else e:SetLabel(1) end -end +--タイムカプセル +function c11961740.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c11961740.target) + e1:SetOperation(c11961740.activate) + c:RegisterEffect(e1) +end +function c11961740.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) +end +function c11961740.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if tc and Duel.Remove(tc,POS_FACEDOWN,REASON_EFFECT)~=0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) then + tc:RegisterFlagEffect(11961740,RESET_EVENT+0x1fe0000,0,1) + c:CancelToGrave() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e1:SetCondition(c11961740.thcon) + e1:SetOperation(c11961740.thop) + e1:SetLabel(0) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + end + end +end +function c11961740.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c11961740.thop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + e:GetHandler():SetTurnCounter(ct+1) + if ct==1 then + Duel.Destroy(e:GetHandler(),REASON_RULE) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(11961740)~=0 then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end + else e:SetLabel(1) end +end diff --git a/script/c1197847.lua b/script/c1197847.lua new file mode 100644 index 00000000..18b190e4 --- /dev/null +++ b/script/c1197847.lua @@ -0,0 +1,97 @@ +--幻煌龍の螺旋波 +--Spiral Wave of the Mythic Radiance Dragon +--Script by nekrozar +function c1197847.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c1197847.target) + e1:SetOperation(c1197847.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(c1197847.eqlimit) + c:RegisterEffect(e2) + --indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e3:SetCountLimit(1) + e3:SetValue(c1197847.valcon) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(1197847,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_HANDES) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_PHASE+PHASE_BATTLE) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1,1197847) + e4:SetCondition(c1197847.spcon) + e4:SetTarget(c1197847.sptg) + e4:SetOperation(c1197847.spop) + c:RegisterEffect(e4) +end +function c1197847.eqlimit(e,c) + return c:IsType(TYPE_NORMAL) +end +function c1197847.filter(c) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) +end +function c1197847.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c1197847.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c1197847.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c1197847.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c1197847.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 c1197847.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c1197847.spcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + return ec and ec:GetBattledGroupCount()>0 +end +function c1197847.spfilter(c,e,tp) + return c:IsCode(56649609) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c1197847.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c1197847.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + if Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 then + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1) + end +end +function c1197847.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c1197847.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Equip(tp,c,tc) + Duel.SpecialSummonComplete() + if Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 then + Duel.BreakEffect() + Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + end + end + end +end diff --git a/script/c120000016.lua b/script/c120000016.lua new file mode 100644 index 00000000..6425172f --- /dev/null +++ b/script/c120000016.lua @@ -0,0 +1,110 @@ +--邪龍復活の儀式 +function c120000016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c120000016.cost) + e1:SetTarget(c120000016.target) + e1:SetOperation(c120000016.activate) + c:RegisterEffect(e1) +end +c120000016.fit_monster={99267150} +function c120000016.cfilter1(c,rg) + if not c:IsAttribute(ATTRIBUTE_WIND) then return false end + rg:RemoveCard(c) + local ret=rg:IsExists(c120000016.cfilter2,1,nil,rg) + rg:AddCard(c) + return ret +end +function c120000016.cfilter2(c,rg) + if not c:IsAttribute(ATTRIBUTE_WATER) then return false end + rg:RemoveCard(c) + local ret=rg:IsExists(c120000016.cfilter3,1,nil,rg) + rg:AddCard(c) + return ret +end +function c120000016.cfilter3(c,rg) + if not c:IsAttribute(ATTRIBUTE_FIRE) then return false end + rg:RemoveCard(c) + local ret=rg:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_EARTH) + rg:AddCard(c) + return ret +end +function c120000016.cfilter4(c,rg) + if not c:IsAttribute(ATTRIBUTE_EARTH) then return false end + rg:RemoveCard(c) + local ret=rg:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WIND) + rg:AddCard(c) + return ret +end +function c120000016.cfilter5(c,rg) + if not c:IsAttribute(ATTRIBUTE_DARK) then return false end + rg:RemoveCard(c) + local ret=rg:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WATER) + rg:AddCard(c) + return ret +end +function c120000016.rfilter(c) + return c:IsFaceup() and c:IsHasEffect(EFFECT_EXTRA_RELEASE) and c:IsReleasable() +end +function c120000016.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local g1=Duel.GetMatchingGroup(Card.IsReleasable,tp,LOCATION_MZONE+LOCATION_HAND,0,nil) + local g2=Duel.GetMatchingGroup(c120000016.rfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,nil) + g1:Merge(g2) + if chk==0 then return g1:GetCount()>=6 and g1:IsExists(c120000016.cfilter1,1,nil,g1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local rg1=g1:FilterSelect(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_WATER) + g1:Sub(rg1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local rg2=g1:FilterSelect(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_FIRE) + g1:Sub(rg2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local rg3=g1:FilterSelect(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_WIND) + g1:Sub(rg3) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local rg4=g1:FilterSelect(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_EARTH) + g1:Sub(rg4) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local rg5=g1:FilterSelect(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_DARK) + g1:Sub(rg5) + rg1:Merge(rg2) + rg1:Merge(rg3) + rg1:Merge(rg4) + rg1:Merge(rg5) + Duel.Release(rg1,REASON_COST) + Duel.Release(rg2,REASON_COST) + Duel.Release(rg3,REASON_COST) + Duel.Release(rg4,REASON_COST) + Duel.Release(rg5,REASON_COST) +end +function c120000016.spfilter(c,e,tp) + return c:IsCode(99267150) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c120000016.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c120000016.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + g=Duel.GetMatchingGroup(c120000016.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end + +function c120000016.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c120000016.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if sg:GetCount()>0 then + Duel.BreakEffect() + Duel.SpecialSummon(sg,SUMMON_TYPE_FUSION,tp,tp,true,false,POS_FACEUP) + sg:GetFirst():CompleteProcedure() + local g=Duel.GetMatchingGroup(c120000016.filter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,99267150)) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end diff --git a/script/c1200843.lua b/script/c1200843.lua index a34ec869..23ca1f72 100644 --- a/script/c1200843.lua +++ b/script/c1200843.lua @@ -1,27 +1,12 @@ --八汰鏡 function c1200843.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(c1200843.target) - e1:SetOperation(c1200843.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c1200843.filter) --spirit may not return local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_SPIRIT_MAYNOT_RETURN) e2:SetRange(LOCATION_SZONE) 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(c1200843.eqlimit) - c:RegisterEffect(e3) --destroy sub local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP) @@ -30,24 +15,8 @@ function c1200843.initial_effect(c) e4:SetValue(c1200843.desval) c:RegisterEffect(e4) end -function c1200843.eqlimit(e,c) - return c:IsType(TYPE_SPIRIT) -end function c1200843.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SPIRIT) -end -function c1200843.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c1200843.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c1200843.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c1200843.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c1200843.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 + return c:IsType(TYPE_SPIRIT) end function c1200843.desval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 diff --git a/script/c12014404.lua b/script/c12014404.lua index 357a48b8..3c13f778 100644 --- a/script/c12014404.lua +++ b/script/c12014404.lua @@ -8,6 +8,7 @@ function c12014404.initial_effect(c) e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DAMAGE) e1:SetDescription(aux.Stringid(12014404,0)) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c12014404.cost) diff --git a/script/c12071500.lua b/script/c12071500.lua index c710760f..8f238d0c 100644 --- a/script/c12071500.lua +++ b/script/c12071500.lua @@ -1,72 +1,79 @@ ---ダーク・コーリング -function c12071500.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c12071500.target) - e1:SetOperation(c12071500.activate) - c:RegisterEffect(e1) -end -function c12071500.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() -end -function c12071500.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) -end -function c12071500.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c.dark_calling and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION+0x10,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c12071500.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c12071500.filter0,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil) - local res=Duel.IsExistingMatchingCard(c12071500.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c12071500.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c12071500.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c12071500.filter1,tp,LOCATION_GRAVE+LOCATION_HAND,0,nil,e) - local sg1=Duel.GetMatchingGroup(c12071500.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c12071500.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION+0x10,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2,SUMMON_TYPE_FUSION+0x10) - end - tc:CompleteProcedure() - end -end +--ダーク・コーリング +function c12071500.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c12071500.target) + e1:SetOperation(c12071500.activate) + c:RegisterEffect(e1) +end +function c12071500.filter0(c) + return c:IsLocation(LOCATION_HAND) and c:IsAbleToRemove() +end +function c12071500.filter1(c,e) + return c:IsLocation(LOCATION_HAND) and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c12071500.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c.dark_calling and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION+0x10,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c12071500.filter3(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end +function c12071500.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c12071500.filter0,nil) + local mg2=Duel.GetMatchingGroup(c12071500.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) + local res=Duel.IsExistingMatchingCard(c12071500.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c12071500.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c12071500.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c12071500.filter1,nil,e) + local mg2=Duel.GetMatchingGroup(c12071500.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) + local sg1=Duel.GetMatchingGroup(c12071500.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg3=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c12071500.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION+0x10,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2,SUMMON_TYPE_FUSION+0x10) + end + tc:CompleteProcedure() + end +end diff --git a/script/c12079734.lua b/script/c12079734.lua index 1929f7ac..b64c772a 100644 --- a/script/c12079734.lua +++ b/script/c12079734.lua @@ -12,7 +12,7 @@ function c12079734.initial_effect(c) c:RegisterEffect(e1) end function c12079734.filter1(c,ec) - return c:IsType(TYPE_UNION) and c:CheckEquipTarget(ec) + return c:IsType(TYPE_UNION) and c:CheckEquipTarget(ec) and aux.CheckUnionEquip(c,ec) end function c12079734.filter2(c) return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToDeck() @@ -23,7 +23,7 @@ function c12079734.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if e:GetLabel()==0 then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c12079734.filter1(chkc,c) else return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c12079734.filter2(chkc) end end - local b1=Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and c:GetUnionCount()==0 + local b1=Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.IsExistingTarget(c12079734.filter1,tp,LOCATION_GRAVE,0,1,nil,c) local b2=Duel.IsExistingTarget(c12079734.filter2,tp,LOCATION_MZONE,0,1,nil) and Duel.IsPlayerCanDraw(tp,1) if chk==0 then return b1 or b2 end @@ -51,10 +51,10 @@ function c12079734.operation(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if e:GetLabel()==0 then local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() and c:GetUnionCount()==0 - and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and tc:IsRelateToEffect(e) then - Duel.Equip(tp,tc,c,false) - tc:SetStatus(STATUS_UNION,true) + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and aux.CheckUnionEquip(tc,c) and Duel.Equip(tp,tc,c,false) then + aux.SetUnionState(tc) end else if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_DECK+LOCATION_EXTRA) then diff --git a/script/c12171659.lua b/script/c12171659.lua index 827b3f82..d4330aed 100644 --- a/script/c12171659.lua +++ b/script/c12171659.lua @@ -1,43 +1,43 @@ ---天空の使者 ゼラディアス -function c12171659.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(12171659,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c12171659.cost) - e1:SetTarget(c12171659.target) - e1:SetOperation(c12171659.operation) - c:RegisterEffect(e1) - --self destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_SELF_DESTROY) - e2:SetCondition(c12171659.descon) - c:RegisterEffect(e2) -end -function c12171659.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c12171659.filter(c) - return c:IsCode(56433456) and c:IsAbleToHand() -end -function c12171659.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c12171659.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c12171659.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tg=Duel.GetFirstMatchingCard(c12171659.filter,tp,LOCATION_DECK,0,nil) - if tg then - Duel.SendtoHand(tg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tg) - end -end -function c12171659.descon(e) - return not Duel.IsEnvironment(56433456) -end +--天空の使者 ゼラディアス +function c12171659.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12171659,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c12171659.cost) + e1:SetTarget(c12171659.target) + e1:SetOperation(c12171659.operation) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c12171659.descon) + c:RegisterEffect(e2) +end +function c12171659.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c12171659.filter(c) + return c:IsCode(56433456) and c:IsAbleToHand() +end +function c12171659.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c12171659.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c12171659.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetFirstMatchingCard(c12171659.filter,tp,LOCATION_DECK,0,nil) + if tg then + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end +end +function c12171659.descon(e) + return not Duel.IsEnvironment(56433456) +end diff --git a/script/c12174035.lua b/script/c12174035.lua index 358ad58f..750650fc 100644 --- a/script/c12174035.lua +++ b/script/c12174035.lua @@ -1,21 +1,6 @@ --ハイドロプレッシャーカノン function c12174035.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(c12174035.target) - e1:SetOperation(c12174035.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(c12174035.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,c12174035.filter) --handes local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(12174035,0)) @@ -28,25 +13,8 @@ function c12174035.initial_effect(c) e3:SetOperation(c12174035.hdop) c:RegisterEffect(e3) end -function c12174035.eqlimit(e,c) - return c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WATER) -end function c12174035.filter(c) - return c:IsFaceup() and c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WATER) -end -function c12174035.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c12174035.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c12174035.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c12174035.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c12174035.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 + return c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WATER) end function c12174035.hdcon(e,tp,eg,ep,ev,re,r,rp) return eg:GetFirst()==e:GetHandler():GetEquipTarget() and eg:GetFirst():IsStatus(STATUS_OPPO_BATTLE) diff --git a/script/c12181376.lua b/script/c12181376.lua index ca663df0..0ac743ff 100644 --- a/script/c12181376.lua +++ b/script/c12181376.lua @@ -1,62 +1,62 @@ ---トライアングル・X・スパーク -function c12181376.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c12181376.target) - e1:SetOperation(c12181376.activate) - c:RegisterEffect(e1) -end -function c12181376.filter(c) - return c:IsFaceup() and c:IsCode(12206212) -end -function c12181376.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c12181376.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end -end -function c12181376.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c12181376.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(2700) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end - --cannot activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c12181376.aclimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - --disable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DISABLE) - e2:SetTargetRange(0,LOCATION_SZONE) - e2:SetTarget(c12181376.distg) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - --disable trap monster - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetTarget(c12181376.distg) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) -end -function c12181376.aclimit(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP) -end -function c12181376.distg(e,c) - return c:IsType(TYPE_TRAP) -end +--トライアングル・X・スパーク +function c12181376.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c12181376.target) + e1:SetOperation(c12181376.activate) + c:RegisterEffect(e1) +end +function c12181376.filter(c) + return c:IsFaceup() and c:IsCode(12206212) +end +function c12181376.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12181376.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c12181376.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c12181376.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(2700) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + --cannot activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c12181376.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetTargetRange(0,LOCATION_SZONE) + e2:SetTarget(c12181376.distg) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + --disable trap monster + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c12181376.distg) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c12181376.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP) +end +function c12181376.distg(e,c) + return c:IsType(TYPE_TRAP) +end diff --git a/script/c12219047.lua b/script/c12219047.lua new file mode 100644 index 00000000..d7a909b7 --- /dev/null +++ b/script/c12219047.lua @@ -0,0 +1,80 @@ +--幻影騎士団カースド・ジャベリン +--The Phantom Knights of Cursed Javelin +--Scripted by Eerie Code +function c12219047.initial_effect(c) + aux.AddXyzProcedure(c,nil,2,2) + --disable and reduce ATK + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12219047,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,12219047) + e1:SetCondition(c12219047.condition1) + e1:SetCost(c12219047.cost) + e1:SetTarget(c12219047.target) + e1:SetOperation(c12219047.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetHintTiming(TIMING_DAMAGE_STEP,0x21e0) + e2:SetCondition(c12219047.condition2) + c:RegisterEffect(e2) +end +function c12219047.condition1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():GetOverlayGroup():IsExists(Card.IsSetCard,1,nil,0x10db) +end +function c12219047.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c12219047.filter(c) + return c:IsFaceup() and not (c:GetAttack()==0 and c:IsDisabled()) +end +function c12219047.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c12219047.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c12219047.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c12219047.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c12219047.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetValue(0) + tc:RegisterEffect(e3) + if tc:IsType(TYPE_TRAPMONSTER) then + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + end + end +end +function c12219047.condition2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayGroup():IsExists(Card.IsSetCard,1,nil,0x10db) + and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end diff --git a/script/c12235475.lua b/script/c12235475.lua index 2217ad96..7bcae7cd 100644 --- a/script/c12235475.lua +++ b/script/c12235475.lua @@ -1,34 +1,34 @@ ---魔轟神アシェンヴェイル -function c12235475.initial_effect(c) - --attack up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(12235475,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetCondition(c12235475.con) - e1:SetCost(c12235475.cost) - e1:SetOperation(c12235475.op) - c:RegisterEffect(e1) -end -function c12235475.con(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:GetFlagEffect(12235475)==0 and (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) -end -function c12235475.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) - e:GetHandler():RegisterFlagEffect(12235475,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) -end -function c12235475.op(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(600) - c:RegisterEffect(e1) -end +--魔轟神アシェンヴェイル +function c12235475.initial_effect(c) + --attack up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12235475,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c12235475.con) + e1:SetCost(c12235475.cost) + e1:SetOperation(c12235475.op) + c:RegisterEffect(e1) +end +function c12235475.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetFlagEffect(12235475)==0 and (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) +end +function c12235475.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + e:GetHandler():RegisterFlagEffect(12235475,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c12235475.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(600) + c:RegisterEffect(e1) +end diff --git a/script/c12247206.lua b/script/c12247206.lua index 35c0a17a..ba0b98b6 100644 --- a/script/c12247206.lua +++ b/script/c12247206.lua @@ -1,84 +1,80 @@ ---地獄の暴走召喚 -function c12247206.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c12247206.condition) - e1:SetTarget(c12247206.target) - e1:SetOperation(c12247206.activate) - c:RegisterEffect(e1) -end -function c12247206.condition(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - return eg:GetCount()==1 and tc:IsLocation(LOCATION_MZONE) and tc:IsControler(tp) and tc:IsAttackBelow(1500) - and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) -end -function c12247206.nfilter(c,tc) - return c:IsCode(tc:GetCode()) -end -function c12247206.target(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=eg:GetFirst() - if chk==0 then - local g=Duel.GetMatchingGroup(c12247206.nfilter,tp,0x13,0,nil,tc) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and g:GetCount()>0 and g:GetCount()==g:FilterCount(Card.IsCanBeSpecialSummoned,nil,e,0,tp,false,false) - end - tc:CreateEffectRelation(e) - local g=Duel.GetMatchingGroup(c12247206.filter,tp,0x13,0,nil,tc,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),PLAYER_ALL,0) -end -function c12247206.filter(c,tc,e,tp) - return c12247206.nfilter(c,tc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c12247206.selfilter(c,e,tp) - return c:IsFaceup() and Duel.IsExistingMatchingCard(c12247206.filter,tp,0x13,0,1,nil,c,e,tp) -end -function c12247206.rmfilter(c) - return c:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) -end -function c12247206.sp(g,tp,pos) - local sc=g:GetFirst() - while sc do - Duel.SpecialSummonStep(sc,0,tp,tp,false,false,pos) - sc=g:GetNext() - end -end -function c12247206.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft1>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft1=1 end - local gg=Group.CreateGroup() - local g=Duel.GetMatchingGroup(c12247206.filter,tp,0x13,0,nil,tc,e,tp) - if g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - if ft1>0 and tc:IsFaceup() and tc:IsRelateToEffect(e) then - if g:GetCount()<=ft1 then c12247206.sp(g,tp,POS_FACEUP_ATTACK) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local fg=g:Select(tp,ft1,ft1,nil) - c12247206.sp(fg,tp,POS_FACEUP_ATTACK) - g:Remove(c12247206.rmfilter,nil) - gg:Merge(g) - end - end - local ft2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) - if ft2>1 and Duel.IsPlayerAffectedByEffect(1-tp,59822133) then ft2=1 end - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_FACEUP) - local sg=Duel.SelectMatchingCard(1-tp,c12247206.selfilter,1-tp,LOCATION_MZONE,0,1,1,nil,e,1-tp) - if ft2>0 and sg:GetCount()>0 then - local g2=Duel.GetMatchingGroup(c12247206.filter,1-tp,0x13,0,nil,sg:GetFirst(),e,1-tp) - if not g2:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then - if g2:GetCount()<=ft2 then - c12247206.sp(g2,1-tp,POS_FACEUP) - else - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) - local fg=g2:Select(1-tp,ft2,ft2,nil) - c12247206.sp(fg,1-tp,POS_FACEUP) - g2:Remove(c12247206.rmfilter,nil) - gg:Merge(g2) - end - end - end - Duel.SpecialSummonComplete() - Duel.SendtoGrave(gg,REASON_EFFECT) -end +--地獄の暴走召喚 +function c12247206.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c12247206.condition) + e1:SetTarget(c12247206.target) + e1:SetOperation(c12247206.activate) + c:RegisterEffect(e1) +end +function c12247206.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsLocation(LOCATION_MZONE) and tc:IsControler(tp) and tc:IsAttackBelow(1500) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) +end +function c12247206.nfilter(c,tc) + return c:IsCode(tc:GetCode()) +end +function c12247206.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then + local g=Duel.GetMatchingGroup(c12247206.nfilter,tp,0x13,0,nil,tc) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and g:GetCount()>0 and g:GetCount()==g:FilterCount(Card.IsCanBeSpecialSummoned,nil,e,0,tp,false,false) + end + tc:CreateEffectRelation(e) + local g=Duel.GetMatchingGroup(c12247206.filter,tp,0x13,0,nil,tc,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),PLAYER_ALL,0) +end +function c12247206.filter(c,tc,e,tp) + return c12247206.nfilter(c,tc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c12247206.selfilter(c,e,tp) + return c:IsFaceup() and Duel.IsExistingMatchingCard(c12247206.filter,tp,0x13,0,1,nil,c,e,tp) +end +function c12247206.sp(g,tp,pos) + local sc=g:GetFirst() + while sc do + Duel.SpecialSummonStep(sc,0,tp,tp,false,false,pos) + sc=g:GetNext() + end +end +function c12247206.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft1>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft1=1 end + local gg=Group.CreateGroup() + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c12247206.filter),tp,0x13,0,nil,tc,e,tp) + if ft1>0 and tc:IsFaceup() and tc:IsRelateToEffect(e) then + if g:GetCount()<=ft1 then c12247206.sp(g,tp,POS_FACEUP_ATTACK) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local fg=g:Select(tp,ft1,ft1,nil) + c12247206.sp(fg,tp,POS_FACEUP_ATTACK) + g:Sub(fg) + gg:Merge(g) + end + end + local ft2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft2>1 and Duel.IsPlayerAffectedByEffect(1-tp,59822133) then ft2=1 end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_FACEUP) + local sg=Duel.SelectMatchingCard(1-tp,c12247206.selfilter,1-tp,LOCATION_MZONE,0,1,1,nil,e,1-tp) + if ft2>0 and sg:GetCount()>0 then + local g2=Duel.GetMatchingGroup(aux.NecroValleyFilter(c12247206.filter),1-tp,0x13,0,nil,sg:GetFirst(),e,1-tp) + if g2:GetCount()>0 then + if g2:GetCount()<=ft2 then + c12247206.sp(g2,1-tp,POS_FACEUP) + else + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local fg=g2:Select(1-tp,ft2,ft2,nil) + c12247206.sp(fg,1-tp,POS_FACEUP) + g2:Sub(fg) + gg:Merge(g2) + end + end + end + Duel.SpecialSummonComplete() + Duel.SendtoGrave(gg,REASON_EFFECT) +end diff --git a/script/c122520.lua b/script/c122520.lua new file mode 100644 index 00000000..0bafac19 --- /dev/null +++ b/script/c122520.lua @@ -0,0 +1,83 @@ +--EMスカイ・ピューピル +--Performapal Sky Pupil +--Scripted by Eerie Code +function c122520.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(122520,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCountLimit(1,122520) + e1:SetCost(c122520.spcost) + e1:SetTarget(c122520.sptg) + e1:SetOperation(c122520.spop) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetTarget(c122520.distg) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(122520,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_CONFIRM) + e3:SetCondition(c122520.descon) + e3:SetTarget(c122520.destg) + e3:SetOperation(c122520.desop) + c:RegisterEffect(e3) +end +function c122520.spcfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) and c:IsLevelAbove(5) and c:IsAbleToHandAsCost() +end +function c122520.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c122520.spcfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c122520.spcfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c122520.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c122520.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c122520.distg(e,c) + local uc=e:GetHandler() + if Duel.GetAttacker()==uc then + return Duel.GetAttackTarget()==c + elseif Duel.GetAttackTarget()==uc then + return Duel.GetAttacker()==c + else return false end +end +function c122520.descfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) +end +function c122520.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c122520.descfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c122520.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local t=Duel.GetAttackTarget() + if chk==0 then return Duel.GetAttacker()==e:GetHandler() and t~=nil end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,t,1,0,0) +end +function c122520.desop(e,tp,eg,ep,ev,re,r,rp) + local t=Duel.GetAttackTarget() + if t~=nil and t:IsRelateToBattle() then + Duel.Destroy(t,REASON_EFFECT) + end +end diff --git a/script/c12262393.lua b/script/c12262393.lua new file mode 100644 index 00000000..f80810fe --- /dev/null +++ b/script/c12262393.lua @@ -0,0 +1,68 @@ +--磁石の戦士δ +function c12262393.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12262393,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCountLimit(1,12262393) + e1:SetTarget(c12262393.tgtg) + e1:SetOperation(c12262393.tgop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(12262393,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,12262394) + e3:SetCost(c12262393.spcost) + e3:SetTarget(c12262393.sptg) + e3:SetOperation(c12262393.spop) + c:RegisterEffect(e3) +end +function c12262393.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x2066) and c:IsLevelBelow(4) and c:IsAbleToGrave() +end +function c12262393.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12262393.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c12262393.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c12262393.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c12262393.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x2066) and c:IsLevelBelow(4) and not c:IsCode(12262393) and c:IsAbleToRemoveAsCost() +end +function c12262393.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12262393.cfilter,tp,LOCATION_GRAVE,0,3,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c12262393.cfilter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c12262393.spfilter(c,e,tp) + return c:IsCode(75347539) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c12262393.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c12262393.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c12262393.spop(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,c12262393.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c12289247.lua b/script/c12289247.lua new file mode 100644 index 00000000..2c366845 --- /dev/null +++ b/script/c12289247.lua @@ -0,0 +1,160 @@ +--クロノグラフ・マジシャン +function c12289247.initial_effect(c) + aux.EnablePendulumAttribute(c) + --pendulum set/spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12289247,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1,12289247) + e1:SetTarget(c12289247.rptg) + e1:SetOperation(c12289247.rpop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(12289247,3)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c12289247.spcon) + e2:SetTarget(c12289247.sptg) + e2:SetOperation(c12289247.spop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(12289247,5)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c12289247.hncost) + e3:SetTarget(c12289247.hntg) + e3:SetOperation(c12289247.hnop) + c:RegisterEffect(e3) +end +function c12289247.rpfilter(c,e,tp) + return c:IsCode(20409757) and (not c:IsForbidden() + or (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false))) +end +function c12289247.rptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12289247.rpfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c12289247.rpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Destroy(c,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(12289247,6)) + local g=Duel.SelectMatchingCard(tp,c12289247.rpfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + local op=0 + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + op=Duel.SelectOption(tp,aux.Stringid(12289247,1),aux.Stringid(12289247,2)) + else + op=Duel.SelectOption(tp,aux.Stringid(12289247,1)) + end + if op==0 then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + else + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + end +end +function c12289247.spcfilter(c,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:GetPreviousControler()==tp +end +function c12289247.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c12289247.spcfilter,1,nil,tp) +end +function c12289247.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c12289247.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + return + end + local g=Duel.GetMatchingGroup(Card.IsCanBeSpecialSummoned,tp,LOCATION_HAND,0,nil,e,0,tp,false,false) + if g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.SelectYesNo(tp,aux.Stringid(12289247,4)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end +function c12289247.cfilter(c) + return (c:IsSetCard(0x10f2) or c:IsSetCard(0x2073) or c:IsSetCard(0x2017) or c:IsSetCard(0x1046)) + and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c12289247.cfilter1(c,g,ft) + local mg=g:Clone() + mg:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return c:IsSetCard(0x10f2) and mg:IsExists(c12289247.cfilter2,1,nil,mg,ft) +end +function c12289247.cfilter2(c,g,ft) + local mg=g:Clone() + mg:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return c:IsSetCard(0x2073) and mg:IsExists(c12289247.cfilter3,1,nil,mg,ft) +end +function c12289247.cfilter3(c,g,ft) + local mg=g:Clone() + mg:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return c:IsSetCard(0x2017) and mg:IsExists(c12289247.cfilter4,1,nil,ft) +end +function c12289247.cfilter4(c,ft) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return c:IsSetCard(0x1046) and ft>0 +end +function c12289247.hncost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local mg=Duel.GetMatchingGroup(c12289247.cfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chk==0 then return c:IsAbleToRemoveAsCost() + and mg:IsExists(c12289247.cfilter1,1,nil,mg,ft+1) end + local g=Group.FromCards(c) + ft=ft+1 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rc1=mg:FilterSelect(tp,c12289247.cfilter1,1,1,nil,mg,ft):GetFirst() + g:AddCard(rc1) + mg:RemoveCard(rc1) + if rc1:IsLocation(LOCATION_MZONE) then ft=ft+1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rc2=mg:FilterSelect(tp,c12289247.cfilter2,1,1,nil,mg,ft):GetFirst() + g:AddCard(rc2) + mg:RemoveCard(rc2) + if rc2:IsLocation(LOCATION_MZONE) then ft=ft+1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rc3=mg:FilterSelect(tp,c12289247.cfilter3,1,1,nil,mg,ft):GetFirst() + g:AddCard(rc3) + mg:RemoveCard(rc3) + if rc3:IsLocation(LOCATION_MZONE) then ft=ft+1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rc4=mg:FilterSelect(tp,c12289247.cfilter4,1,1,nil,ft):GetFirst() + g:AddCard(rc4) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c12289247.hnfilter(c,e,tp) + return c:IsCode(13331639) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c12289247.hntg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12289247.hnfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c12289247.hnop(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,c12289247.hnfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c12298909.lua b/script/c12298909.lua index efbf3c1a..590e2c83 100644 --- a/script/c12298909.lua +++ b/script/c12298909.lua @@ -46,8 +46,7 @@ function c12298909.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c12298909.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c12307878.lua b/script/c12307878.lua new file mode 100644 index 00000000..e3fadc80 --- /dev/null +++ b/script/c12307878.lua @@ -0,0 +1,28 @@ +--召喚獣プルガトリオ +function c12307878.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,86120751,aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_FIRE),1,true,true) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c12307878.atkval) + c:RegisterEffect(e1) + --attack all + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ATTACK_ALL) + e2:SetValue(1) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) +end +function c12307878.atkval(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_ONFIELD)*200 +end diff --git a/script/c12324546.lua b/script/c12324546.lua index 318939c2..112efef4 100644 --- a/script/c12324546.lua +++ b/script/c12324546.lua @@ -1,14 +1,6 @@ --漆黒の名馬 function c12324546.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(c12324546.target) - e1:SetOperation(c12324546.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c12324546.filter) --Atk,def up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -27,30 +19,7 @@ function c12324546.initial_effect(c) e4:SetCode(EFFECT_DESTROY_SUBSTITUTE) e4:SetValue(1) c:RegisterEffect(e4) - --Equip limit - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_EQUIP_LIMIT) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e5:SetValue(c12324546.eqlimit) - c:RegisterEffect(e5) -end -function c12324546.eqlimit(e,c) - return c:IsSetCard(0x3d) end function c12324546.filter(c) - return c:IsFaceup() and c:IsSetCard(0x3d) -end -function c12324546.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c12324546.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c12324546.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c12324546.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c12324546.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 + return c:IsSetCard(0x3d) end diff --git a/script/c12369277.lua b/script/c12369277.lua index 531085b0..56a01450 100644 --- a/script/c12369277.lua +++ b/script/c12369277.lua @@ -1,58 +1,58 @@ ---超量士ブルーレイヤー -function c12369277.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(12369277,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCountLimit(1,12369277) - e1:SetTarget(c12369277.thtg) - e1:SetOperation(c12369277.thop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - --todeck - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(12369277,1)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,12369278) - e3:SetTarget(c12369277.tdtg) - e3:SetOperation(c12369277.tdop) - c:RegisterEffect(e3) -end -function c12369277.thfilter(c) - return c:IsSetCard(0xdc) and not c:IsCode(12369277) and c:IsAbleToHand() -end -function c12369277.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c12369277.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c12369277.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c12369277.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c12369277.tdfilter(c) - return c:IsSetCard(0xdc) and c:IsAbleToDeck() -end -function c12369277.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c12369277.tdfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c12369277.tdfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c12369277.tdfilter,tp,LOCATION_GRAVE,0,1,3,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c12369277.tdop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - end -end +--超量士ブルーレイヤー +function c12369277.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12369277,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCountLimit(1,12369277) + e1:SetTarget(c12369277.thtg) + e1:SetOperation(c12369277.thop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --todeck + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(12369277,1)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,12369278) + e3:SetTarget(c12369277.tdtg) + e3:SetOperation(c12369277.tdop) + c:RegisterEffect(e3) +end +function c12369277.thfilter(c) + return c:IsSetCard(0xdc) and not c:IsCode(12369277) and c:IsAbleToHand() +end +function c12369277.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12369277.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c12369277.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c12369277.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c12369277.tdfilter(c) + return c:IsSetCard(0xdc) and c:IsAbleToDeck() +end +function c12369277.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c12369277.tdfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c12369277.tdfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c12369277.tdfilter,tp,LOCATION_GRAVE,0,1,3,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c12369277.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + end +end diff --git a/script/c12385638.lua b/script/c12385638.lua index 6272c3ba..60ee0e4f 100644 --- a/script/c12385638.lua +++ b/script/c12385638.lua @@ -1,4 +1,4 @@ ---Kozmourning +--Kozmo-エピローグ function c12385638.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) diff --git a/script/c12408276.lua b/script/c12408276.lua index acea2c4c..f6b72e5d 100644 --- a/script/c12408276.lua +++ b/script/c12408276.lua @@ -1,4 +1,4 @@ ---Kozmoll Dark Lady +--Kozmo-ダーク・エルファイバー function c12408276.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) @@ -63,8 +63,7 @@ function c12408276.negtg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c12408276.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c12451640.lua b/script/c12451640.lua index e052f3b9..b24e1420 100644 --- a/script/c12451640.lua +++ b/script/c12451640.lua @@ -1,78 +1,78 @@ ---フロント・オブザーバー -function c12451640.initial_effect(c) - --tohand - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c12451640.regop) - c:RegisterEffect(e1) -end -function c12451640.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(12451640,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c12451640.thtg1) - e1:SetOperation(c12451640.thop1) - e1:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(12451640,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c12451640.thcon) - e2:SetCost(c12451640.thcost) - e2:SetTarget(c12451640.thtg2) - e2:SetOperation(c12451640.thop2) - e2:SetLabel(Duel.GetTurnCount()) - if Duel.GetTurnPlayer()==tp then - e2:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - e2:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) - end - c:RegisterEffect(e2) -end -function c12451640.filter1(c) - return c:IsType(TYPE_PENDULUM) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsAbleToHand() -end -function c12451640.thtg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c12451640.filter1,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c12451640.thop1(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c12451640.filter1,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c12451640.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() -end -function c12451640.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c12451640.filter2(c) - return c:IsAttribute(ATTRIBUTE_EARTH) and c:IsAbleToHand() -end -function c12451640.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c12451640.filter2,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c12451640.thop2(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c12451640.filter2,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--フロント・オブザーバー +function c12451640.initial_effect(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c12451640.regop) + c:RegisterEffect(e1) +end +function c12451640.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12451640,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c12451640.thtg1) + e1:SetOperation(c12451640.thop1) + e1:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(12451640,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c12451640.thcon) + e2:SetCost(c12451640.thcost) + e2:SetTarget(c12451640.thtg2) + e2:SetOperation(c12451640.thop2) + e2:SetLabel(Duel.GetTurnCount()) + if Duel.GetTurnPlayer()==tp then + e2:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e2:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + c:RegisterEffect(e2) +end +function c12451640.filter1(c) + return c:IsType(TYPE_PENDULUM) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsAbleToHand() +end +function c12451640.thtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12451640.filter1,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c12451640.thop1(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c12451640.filter1,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c12451640.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() +end +function c12451640.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c12451640.filter2(c) + return c:IsAttribute(ATTRIBUTE_EARTH) and c:IsAbleToHand() +end +function c12451640.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12451640.filter2,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c12451640.thop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c12451640.filter2,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c12467005.lua b/script/c12467005.lua index d4c51c45..49702a97 100644 --- a/script/c12467005.lua +++ b/script/c12467005.lua @@ -1,62 +1,62 @@ ---タックルセイダー -function c12467005.initial_effect(c) - -- - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(12467005,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c12467005.target) - e1:SetOperation(c12467005.operation) - c:RegisterEffect(e1) -end -function c12467005.filter1(c) - return c:IsFaceup() and c:IsCanTurnSet() -end -function c12467005.filter2(c) - return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c12467005.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - local b1=Duel.IsExistingTarget(c12467005.filter1,tp,0,LOCATION_MZONE,1,nil) - local b2=Duel.IsExistingTarget(c12467005.filter2,tp,0,LOCATION_ONFIELD,1,nil) - if chk==0 then return b1 or b2 end - local op=0 - if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(12467005,1),aux.Stringid(12467005,2)) - elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(12467005,1)) - else op=Duel.SelectOption(tp,aux.Stringid(12467005,2))+1 end - e:SetLabel(op) - if op==0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,c12467005.filter1,tp,0,LOCATION_MZONE,1,1,nil) - e:SetCategory(CATEGORY_POSITION) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c12467005.filter2,tp,0,LOCATION_ONFIELD,1,1,nil) - e:SetCategory(CATEGORY_TOHAND) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) - end -end -function c12467005.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) then return end - if e:GetLabel()==0 then - Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) - else - local code=tc:GetCode() - Duel.SendtoHand(tc,nil,REASON_EFFECT) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c12467005.aclimit) - e1:SetLabel(code) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - end -end -function c12467005.aclimit(e,re,tp) - return re:GetHandler():IsCode(e:GetLabel()) -end +--タックルセイダー +function c12467005.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12467005,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c12467005.target) + e1:SetOperation(c12467005.operation) + c:RegisterEffect(e1) +end +function c12467005.filter1(c) + return c:IsFaceup() and c:IsCanTurnSet() +end +function c12467005.filter2(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c12467005.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local b1=Duel.IsExistingTarget(c12467005.filter1,tp,0,LOCATION_MZONE,1,nil) + local b2=Duel.IsExistingTarget(c12467005.filter2,tp,0,LOCATION_ONFIELD,1,nil) + if chk==0 then return b1 or b2 end + local op=0 + if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(12467005,1),aux.Stringid(12467005,2)) + elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(12467005,1)) + else op=Duel.SelectOption(tp,aux.Stringid(12467005,2))+1 end + e:SetLabel(op) + if op==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,c12467005.filter1,tp,0,LOCATION_MZONE,1,1,nil) + e:SetCategory(CATEGORY_POSITION) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c12467005.filter2,tp,0,LOCATION_ONFIELD,1,1,nil) + e:SetCategory(CATEGORY_TOHAND) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + end +end +function c12467005.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + if e:GetLabel()==0 then + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + else + local code=tc:GetCode() + Duel.SendtoHand(tc,nil,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c12467005.aclimit) + e1:SetLabel(code) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c12467005.aclimit(e,re,tp) + return re:GetHandler():IsCode(e:GetLabel()) +end diff --git a/script/c12469386.lua b/script/c12469386.lua index 9629caa0..31c1e7b1 100644 --- a/script/c12469386.lua +++ b/script/c12469386.lua @@ -1,33 +1,33 @@ ---返り咲く薔薇の大輪 -function c12469386.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(12469386,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_GRAVE) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_DESTROYED) - e1:SetCondition(c12469386.spcon) - e1:SetTarget(c12469386.sptg) - e1:SetOperation(c12469386.spop) - c:RegisterEffect(e1) -end -function c12469386.filter(c,tp) - return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) - and c:GetPreviousLevelOnField()>=5 and bit.band(c:GetPreviousRaceOnField(),RACE_PLANT)~=0 -end -function c12469386.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c12469386.filter,1,e:GetHandler(),tp) -end -function c12469386.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c12469386.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) - end -end +--返り咲く薔薇の大輪 +function c12469386.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12469386,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c12469386.spcon) + e1:SetTarget(c12469386.sptg) + e1:SetOperation(c12469386.spop) + c:RegisterEffect(e1) +end +function c12469386.filter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) + and c:GetPreviousLevelOnField()>=5 and bit.band(c:GetPreviousRaceOnField(),RACE_PLANT)~=0 +end +function c12469386.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c12469386.filter,1,e:GetHandler(),tp) +end +function c12469386.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c12469386.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c12470447.lua b/script/c12470447.lua index e451e22a..542f0ed0 100644 --- a/script/c12470447.lua +++ b/script/c12470447.lua @@ -1,35 +1,35 @@ ---邪悪な儀式 -function c12470447.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(0,EFFECT_FLAG2_COF) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_STANDBY_PHASE) - e1:SetCondition(c12470447.condition) - e1:SetTarget(c12470447.target) - e1:SetOperation(c12470447.activate) - c:RegisterEffect(e1) -end -function c12470447.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY and e:GetHandler():IsLocation(LOCATION_SZONE) -end -function c12470447.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)>0 end - local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c12470447.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) - if g:GetCount()>0 then - Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end +--邪悪な儀式 +function c12470447.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(0,EFFECT_FLAG2_COF) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_STANDBY_PHASE) + e1:SetCondition(c12470447.condition) + e1:SetTarget(c12470447.target) + e1:SetOperation(c12470447.activate) + c:RegisterEffect(e1) +end +function c12470447.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY and e:GetHandler():IsLocation(LOCATION_SZONE) +end +function c12470447.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)>0 end + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c12470447.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c1248895.lua b/script/c1248895.lua index 124aca86..1e1c4e50 100644 --- a/script/c1248895.lua +++ b/script/c1248895.lua @@ -1,39 +1,39 @@ ---連鎖破壊 -function c1248895.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c1248895.target) - e1:SetOperation(c1248895.activate) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c1248895.filter(c,e) - return c:IsFaceup() and c:IsAttackBelow(2000) and c:IsCanBeEffectTarget(e) -end -function c1248895.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return eg:IsContains(chkc) end - if chk==0 then return eg:IsExists(c1248895.filter,1,nil,e) end - if eg:GetCount()==1 then - Duel.SetTargetCard(eg) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=eg:FilterSelect(tp,c1248895.filter,1,1,nil,e) - Duel.SetTargetCard(g) - end -end -function c1248895.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local tpe=tc:GetType() - if bit.band(tpe,TYPE_TOKEN)~=0 then return end - local dg=Duel.GetMatchingGroup(Card.IsCode,tc:GetControler(),LOCATION_DECK+LOCATION_HAND,0,nil,tc:GetCode()) - Duel.Destroy(dg,REASON_EFFECT) -end +--連鎖破壊 +function c1248895.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c1248895.target) + e1:SetOperation(c1248895.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c1248895.filter(c,e) + return c:IsFaceup() and c:IsAttackBelow(2000) and c:IsCanBeEffectTarget(e) +end +function c1248895.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) end + if chk==0 then return eg:IsExists(c1248895.filter,1,nil,e) end + if eg:GetCount()==1 then + Duel.SetTargetCard(eg) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=eg:FilterSelect(tp,c1248895.filter,1,1,nil,e) + Duel.SetTargetCard(g) + end +end +function c1248895.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local tpe=tc:GetType() + if bit.band(tpe,TYPE_TOKEN)~=0 then return end + local dg=Duel.GetMatchingGroup(Card.IsCode,tc:GetControler(),LOCATION_DECK+LOCATION_HAND,0,nil,tc:GetCode()) + Duel.Destroy(dg,REASON_EFFECT) +end diff --git a/script/c1249315.lua b/script/c1249315.lua index b5cb38d2..54143721 100644 --- a/script/c1249315.lua +++ b/script/c1249315.lua @@ -4,17 +4,17 @@ function c1249315.initial_effect(c) aux.AddXyzProcedure(c,nil,2,2) c:EnableReviveLimit() --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(1249315,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,1249315) - e2:SetCost(c1249315.thcost) - e2:SetTarget(c1249315.thtg) - e2:SetOperation(c1249315.thop) - c:RegisterEffect(e2) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(1249315,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,1249315) + e1:SetCost(c1249315.thcost) + e1:SetTarget(c1249315.thtg) + e1:SetOperation(c1249315.thop) + c:RegisterEffect(e1) end function c1249315.thcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end @@ -32,7 +32,7 @@ function c1249315.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end function c1249315.thop(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 then + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 and tc:IsLocation(LOCATION_HAND) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0):Select(tp,1,1,nil) Duel.SendtoDeck(g,nil,2,REASON_EFFECT) diff --git a/script/c12525049.lua b/script/c12525049.lua index e95bef8b..bcec06cc 100644 --- a/script/c12525049.lua +++ b/script/c12525049.lua @@ -1,64 +1,64 @@ ---音響戦士ギータス -function c12525049.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(12525049,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1,12525049) - e2:SetCost(c12525049.spcost) - e2:SetTarget(c12525049.sptg) - e2:SetOperation(c12525049.spop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(12525049,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e3:SetTarget(c12525049.target) - e3:SetOperation(c12525049.operation) - c:RegisterEffect(e3) -end -function c12525049.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c12525049.spfilter(c,e,tp) - return c:IsSetCard(0x1066) and not c:IsCode(12525049) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c12525049.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c12525049.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c12525049.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c12525049.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c12525049.filter(c,e,tp) - return c:IsSetCard(0x1066) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c12525049.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c12525049.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c12525049.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c12525049.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c12525049.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--音響戦士ギータス +function c12525049.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(12525049,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1,12525049) + e2:SetCost(c12525049.spcost) + e2:SetTarget(c12525049.sptg) + e2:SetOperation(c12525049.spop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(12525049,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetTarget(c12525049.target) + e3:SetOperation(c12525049.operation) + c:RegisterEffect(e3) +end +function c12525049.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c12525049.spfilter(c,e,tp) + return c:IsSetCard(0x1066) and not c:IsCode(12525049) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c12525049.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c12525049.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c12525049.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c12525049.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c12525049.filter(c,e,tp) + return c:IsSetCard(0x1066) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c12525049.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c12525049.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c12525049.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c12525049.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c12525049.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c12533811.lua b/script/c12533811.lua index c2a8ba73..77f55a53 100644 --- a/script/c12533811.lua +++ b/script/c12533811.lua @@ -7,7 +7,7 @@ function c12533811.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(12533811,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c12533811.condition) e1:SetCost(c12533811.cost) diff --git a/script/c12538374.lua b/script/c12538374.lua index da8c8238..c2386b31 100644 --- a/script/c12538374.lua +++ b/script/c12538374.lua @@ -1,31 +1,31 @@ ---黄泉ガエル -function c12538374.initial_effect(c) - --Special Summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(12538374,0)) - e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1) - e1:SetCondition(c12538374.condition) - e1:SetTarget(c12538374.target) - e1:SetOperation(c12538374.operation) - c:RegisterEffect(e1) -end -function c12538374.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) or (c:IsCode(12538374) and c:IsFaceup()) -end -function c12538374.condition(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and not Duel.IsExistingMatchingCard(c12538374.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c12538374.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c12538374.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) and not Duel.IsExistingMatchingCard(c12538374.filter,tp,LOCATION_ONFIELD,0,1,nil) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end +--黄泉ガエル +function c12538374.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12538374,0)) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCondition(c12538374.condition) + e1:SetTarget(c12538374.target) + e1:SetOperation(c12538374.operation) + c:RegisterEffect(e1) +end +function c12538374.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) or (c:IsCode(12538374) and c:IsFaceup()) +end +function c12538374.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and not Duel.IsExistingMatchingCard(c12538374.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c12538374.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c12538374.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) and not Duel.IsExistingMatchingCard(c12538374.filter,tp,LOCATION_ONFIELD,0,1,nil) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c12615446.lua b/script/c12615446.lua index dc69a266..830f3295 100644 --- a/script/c12615446.lua +++ b/script/c12615446.lua @@ -6,7 +6,7 @@ function c12615446.initial_effect(c) --Position+Negate local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(12615446,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(0,0x1c0) diff --git a/script/c126218.lua b/script/c126218.lua index 0494cef9..1ddd3d75 100644 --- a/script/c126218.lua +++ b/script/c126218.lua @@ -1,39 +1,39 @@ ---悪魔のサイコロ -function c126218.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c126218.condition) - e1:SetTarget(c126218.target) - e1:SetOperation(c126218.activate) - c:RegisterEffect(e1) -end -function c126218.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c126218.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end -end -function c126218.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - if g:GetCount()>0 then - local d=Duel.TossDice(tp,1)*100 - local sc=g:GetFirst() - while sc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(-d) - sc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - sc:RegisterEffect(e2) - sc=g:GetNext() - end - end +--悪魔のサイコロ +function c126218.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c126218.condition) + e1:SetTarget(c126218.target) + e1:SetOperation(c126218.activate) + c:RegisterEffect(e1) +end +function c126218.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c126218.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c126218.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local d=Duel.TossDice(tp,1)*100 + local sc=g:GetFirst() + while sc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-d) + sc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + sc:RegisterEffect(e2) + sc=g:GetNext() + end + end end \ No newline at end of file diff --git a/script/c12632096.lua b/script/c12632096.lua new file mode 100644 index 00000000..85bf29a7 --- /dev/null +++ b/script/c12632096.lua @@ -0,0 +1,84 @@ +--超銀河眼の光波龍 +function c12632096.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,9,3) + c:EnableReviveLimit() + --control + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetDescription(aux.Stringid(12632096,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c12632096.ctcon) + e1:SetCost(c12632096.ctcost) + e1:SetTarget(c12632096.cttg) + e1:SetOperation(c12632096.ctop) + c:RegisterEffect(e1) +end +function c12632096.ctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayGroup():IsExists(Card.IsSetCard,1,nil,0xe5) +end +function c12632096.ctfilter(c) + return c:IsFaceup() and c:IsAbleToChangeControler() +end +function c12632096.ctcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local rt=math.min(Duel.GetMatchingGroupCount(c12632096.ctfilter,tp,0,LOCATION_MZONE,nil),Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_CONTROL),c:GetOverlayCount(),3) + if chk==0 then return rt>0 and c:CheckRemoveOverlayCard(tp,1,REASON_COST) end + c:RemoveOverlayCard(tp,1,rt,REASON_COST) + local ct=Duel.GetOperatedGroup():GetCount() + e:SetLabel(ct) +end +function c12632096.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,0,0) +end +function c12632096.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c12632096.atktg) + e1:SetLabel(c:GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local ct=math.min(e:GetLabel(),Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_CONTROL)) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c12632096.ctfilter,tp,0,LOCATION_MZONE,ct,ct,nil) + Duel.GetControl(g,tp,PHASE_END,1) + local og=Duel.GetOperatedGroup() + local tc=og:GetFirst() + while tc do + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SET_ATTACK_FINAL) + e4:SetValue(4500) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CHANGE_CODE) + e5:SetValue(12632096) + e5:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e5) + tc=og:GetNext() + end +end +function c12632096.atktg(e,c) + return e:GetLabel()~=c:GetFieldID() +end diff --git a/script/c1264319.lua b/script/c1264319.lua index fdd644ba..c4431593 100644 --- a/script/c1264319.lua +++ b/script/c1264319.lua @@ -1,100 +1,100 @@ ---ジェムナイト・フュージョン -function c1264319.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(1264319,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c1264319.target) - e1:SetOperation(c1264319.activate) - c:RegisterEffect(e1) - --salvage - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetDescription(aux.Stringid(1264319,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCost(c1264319.thcost) - e2:SetTarget(c1264319.thtg) - e2:SetOperation(c1264319.thop) - c:RegisterEffect(e2) -end -function c1264319.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c1264319.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c1264319.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c1264319.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c1264319.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c1264319.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c1264319.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c1264319.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c1264319.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end -function c1264319.thfilter(c) - return c:IsSetCard(0x1047) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c1264319.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c1264319.thfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c1264319.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c1264319.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c1264319.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,c) - end -end +--ジェムナイト・フュージョン +function c1264319.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(1264319,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c1264319.target) + e1:SetOperation(c1264319.activate) + c:RegisterEffect(e1) + --salvage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetDescription(aux.Stringid(1264319,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c1264319.thcost) + e2:SetTarget(c1264319.thtg) + e2:SetOperation(c1264319.thop) + c:RegisterEffect(e2) +end +function c1264319.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c1264319.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c1264319.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c1264319.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c1264319.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c1264319.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c1264319.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c1264319.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c1264319.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c1264319.thfilter(c) + return c:IsSetCard(0x1047) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c1264319.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c1264319.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c1264319.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c1264319.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c1264319.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c12644061.lua b/script/c12644061.lua index cbc8ff88..dfa321b8 100644 --- a/script/c12644061.lua +++ b/script/c12644061.lua @@ -1,82 +1,82 @@ ---アドバンスド・ダーク -function c12644061.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --attribute - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE) - e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1034)) - e2:SetValue(ATTRIBUTE_DARK) - c:RegisterEffect(e2) - --negate - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetRange(LOCATION_FZONE) - e3:SetCondition(c12644061.discon) - e3:SetOperation(c12644061.disop) - c:RegisterEffect(e3) - -- - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(12644061,0)) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e4:SetRange(LOCATION_FZONE) - e4:SetCondition(c12644061.damcon) - e4:SetCost(c12644061.damcost) - e4:SetOperation(c12644061.damop) - c:RegisterEffect(e4) -end -function c12644061.discon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local at=Duel.GetAttackTarget() - return at and a:IsSetCard(0x2034) -end -function c12644061.disop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttackTarget() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - tc:RegisterEffect(e2) -end -function c12644061.damcon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local at=Duel.GetAttackTarget() - return Duel.GetBattleDamage(tp)>0 - and ((a:IsControler(tp) and a:IsSetCard(0x1034)) or (at and at:IsControler(tp) and at:IsSetCard(0x1034))) -end -function c12644061.dfilter(c) - return c:IsSetCard(0x1034) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() -end -function c12644061.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c12644061.dfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c12644061.dfilter,tp,LOCATION_DECK,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c12644061.damop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e1:SetRange(LOCATION_FZONE) - e1:SetOperation(c12644061.dop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - c:RegisterEffect(e1) -end -function c12644061.dop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(tp,0) -end +--アドバンスド・ダーク +function c12644061.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --attribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1034)) + e2:SetValue(ATTRIBUTE_DARK) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_FZONE) + e3:SetCondition(c12644061.discon) + e3:SetOperation(c12644061.disop) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(12644061,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e4:SetRange(LOCATION_FZONE) + e4:SetCondition(c12644061.damcon) + e4:SetCost(c12644061.damcost) + e4:SetOperation(c12644061.damop) + c:RegisterEffect(e4) +end +function c12644061.discon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return at and a:IsSetCard(0x2034) +end +function c12644061.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e2) +end +function c12644061.damcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return Duel.GetBattleDamage(tp)>0 + and ((a:IsControler(tp) and a:IsSetCard(0x1034)) or (at and at:IsControler(tp) and at:IsSetCard(0x1034))) +end +function c12644061.dfilter(c) + return c:IsSetCard(0x1034) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c12644061.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12644061.dfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c12644061.dfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c12644061.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetRange(LOCATION_FZONE) + e1:SetOperation(c12644061.dop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) +end +function c12644061.dop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c12652643.lua b/script/c12652643.lua index ee45480c..f4f982c3 100644 --- a/script/c12652643.lua +++ b/script/c12652643.lua @@ -1,64 +1,61 @@ ---古代の機械究極巨人 -function c12652643.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,83104731,aux.FilterBoolFunction(Card.IsFusionSetCard,0x7),2,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --pierce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e2) - --actlimit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetOperation(c12652643.atkop) - c:RegisterEffect(e3) - --Special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(12652643,0)) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) - e4:SetCode(EVENT_DESTROYED) - e4:SetTarget(c12652643.sptg) - e4:SetOperation(c12652643.spop) - c:RegisterEffect(e4) -end -function c12652643.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c12652643.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end -function c12652643.aclimit(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c12652643.spfilter(c,e,tp) - return c:IsCode(83104731) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c12652643.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c12652643.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c12652643.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c12652643.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c12652643.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) - end -end +--古代の機械究極巨人 +function c12652643.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,83104731,aux.FilterBoolFunction(Card.IsFusionSetCard,0x7),2,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetValue(c12652643.aclimit) + e3:SetCondition(c12652643.actcon) + c:RegisterEffect(e3) + --Special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(12652643,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_DESTROYED) + e4:SetTarget(c12652643.sptg) + e4:SetOperation(c12652643.spop) + c:RegisterEffect(e4) +end +function c12652643.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c12652643.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end +function c12652643.spfilter(c,e,tp) + return c:IsCode(83104731) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c12652643.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c12652643.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c12652643.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c12652643.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c12652643.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c12670770.lua b/script/c12670770.lua index 90317929..27ebd6c2 100644 --- a/script/c12670770.lua +++ b/script/c12670770.lua @@ -113,7 +113,8 @@ end function c12670770.spop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local tg=Duel.GetMatchingGroup(c12670770.spfilter,tp,LOCATION_REMOVED,0,nil,e,tp) - if ft<=0 or tg:GetCount()==0 or (ft>1 and tg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if ft<=0 or tg:GetCount()==0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=tg:Select(tp,ft,ft,nil) local tc=g:GetFirst() diff --git a/script/c12678870.lua b/script/c12678870.lua index c3293046..ca6a6e41 100644 --- a/script/c12678870.lua +++ b/script/c12678870.lua @@ -1,102 +1,102 @@ ---聖霊獣騎 ペトルフィン -function c12678870.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10b5),aux.FilterBoolFunction(Card.IsFusionSetCard,0x20b5),true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c12678870.sprcon) - e2:SetOperation(c12678870.sprop) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetValue(1) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetHintTiming(0,TIMING_END_PHASE) - e4:SetRange(LOCATION_MZONE) - e4:SetCost(c12678870.spcost) - e4:SetTarget(c12678870.sptg) - e4:SetOperation(c12678870.spop) - c:RegisterEffect(e4) -end -function c12678870.spfilter1(c,tp) - return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() - and Duel.IsExistingMatchingCard(c12678870.spfilter2,tp,LOCATION_MZONE,0,1,c) -end -function c12678870.spfilter2(c) - return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() -end -function c12678870.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c12678870.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) -end -function c12678870.sprop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g1=Duel.SelectMatchingCard(tp,c12678870.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=Duel.SelectMatchingCard(tp,c12678870.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) - g1:Merge(g2) - c:SetMaterial(g1) - Duel.Remove(g1,POS_FACEUP,REASON_COST) -end -function c12678870.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtraAsCost() end - Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_COST) -end -function c12678870.filter1(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x10b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingTarget(c12678870.filter2,tp,LOCATION_REMOVED,0,1,c,e,tp) -end -function c12678870.filter2(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x20b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c12678870.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c12678870.filter1,tp,LOCATION_REMOVED,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectTarget(tp,c12678870.filter1,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectTarget(tp,c12678870.filter2,tp,LOCATION_REMOVED,0,1,1,g1:GetFirst(),e,tp) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) -end -function c12678870.spop(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()==0 then return end - if g:GetCount()<=ft then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,ft,ft,nil) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - g:Sub(sg) - Duel.SendtoGrave(g,REASON_RULE) - end -end +--聖霊獣騎 ペトルフィン +function c12678870.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10b5),aux.FilterBoolFunction(Card.IsFusionSetCard,0x20b5),true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c12678870.sprcon) + e2:SetOperation(c12678870.sprop) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(1) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetHintTiming(0,TIMING_END_PHASE) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c12678870.spcost) + e4:SetTarget(c12678870.sptg) + e4:SetOperation(c12678870.spop) + c:RegisterEffect(e4) +end +function c12678870.spfilter1(c,tp) + return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c12678870.spfilter2,tp,LOCATION_MZONE,0,1,c) +end +function c12678870.spfilter2(c) + return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() +end +function c12678870.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c12678870.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) +end +function c12678870.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c12678870.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c12678870.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) + g1:Merge(g2) + c:SetMaterial(g1) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c12678870.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtraAsCost() end + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_COST) +end +function c12678870.filter1(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x10b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c12678870.filter2,tp,LOCATION_REMOVED,0,1,c,e,tp) +end +function c12678870.filter2(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x20b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c12678870.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c12678870.filter1,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c12678870.filter1,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c12678870.filter2,tp,LOCATION_REMOVED,0,1,1,g1:GetFirst(),e,tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) +end +function c12678870.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 then return end + if g:GetCount()<=ft then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,ft,ft,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + g:Sub(sg) + Duel.SendtoGrave(g,REASON_RULE) + end +end diff --git a/script/c12735388.lua b/script/c12735388.lua index 590235b1..3f69639b 100644 --- a/script/c12735388.lua +++ b/script/c12735388.lua @@ -1,21 +1,6 @@ --レインボー・ヴェール function c12735388.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(c12735388.target) - e1:SetOperation(c12735388.operation) - c:RegisterEffect(e1) - --Equip limit - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EQUIP_LIMIT) - e2:SetValue(1) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c) --disable local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -25,19 +10,6 @@ function c12735388.initial_effect(c) e3:SetOperation(c12735388.disop1) c:RegisterEffect(e3) end -function c12735388.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 c12735388.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 c12735388.discon1(e,tp,eg,ep,ev,re,r,rp) local ec=e:GetHandler():GetEquipTarget() return ec and (ec==Duel.GetAttacker() or ec==Duel.GetAttackTarget()) and ec:GetBattleTarget() diff --git a/script/c1274455.lua b/script/c1274455.lua index baf952ef..e9b94d87 100644 --- a/script/c1274455.lua +++ b/script/c1274455.lua @@ -1,4 +1,4 @@ ---Kozmo Soartroopers +--Kozmo-シーミウズ function c1274455.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) diff --git a/script/c1281505.lua b/script/c1281505.lua index 893fff9c..9be1d580 100644 --- a/script/c1281505.lua +++ b/script/c1281505.lua @@ -1,64 +1,64 @@ ---ヴァイロン・テトラ -function c1281505.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(1281505,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c1281505.eqcon) - e1:SetCost(c1281505.eqcost) - e1:SetTarget(c1281505.eqtg) - e1:SetOperation(c1281505.eqop) - c:RegisterEffect(e1) - --destroy sub - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetCode(EFFECT_DESTROY_REPLACE) - e3:SetTarget(c1281505.reptg) - e3:SetOperation(c1281505.repop) - c:RegisterEffect(e3) -end -function c1281505.eqcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:GetPreviousLocation()==LOCATION_MZONE -end -function c1281505.eqcost(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 c1281505.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c1281505.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc) - --equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c1281505.eqlimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - end -end -function c1281505.eqlimit(e,c) - local tp=e:GetHandlerPlayer() - return c:IsControler(tp) -end -function c1281505.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - return Duel.SelectYesNo(tp,aux.Stringid(1281505,1)) -end -function c1281505.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) -end +--ヴァイロン・テトラ +function c1281505.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(1281505,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c1281505.eqcon) + e1:SetCost(c1281505.eqcost) + e1:SetTarget(c1281505.eqtg) + e1:SetOperation(c1281505.eqop) + c:RegisterEffect(e1) + --destroy sub + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetTarget(c1281505.reptg) + e3:SetOperation(c1281505.repop) + c:RegisterEffect(e3) +end +function c1281505.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetPreviousLocation()==LOCATION_MZONE +end +function c1281505.eqcost(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 c1281505.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c1281505.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + --equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c1281505.eqlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c1281505.eqlimit(e,c) + local tp=e:GetHandlerPlayer() + return c:IsControler(tp) +end +function c1281505.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + return Duel.SelectYesNo(tp,aux.Stringid(1281505,1)) +end +function c1281505.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c1287123.lua b/script/c1287123.lua index 382e8f1c..7ebfbfff 100644 --- a/script/c1287123.lua +++ b/script/c1287123.lua @@ -35,8 +35,7 @@ function c1287123.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c1287123.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c12923641.lua b/script/c12923641.lua index 4e1fe50c..a167bc2a 100644 --- a/script/c12923641.lua +++ b/script/c12923641.lua @@ -1,56 +1,58 @@ ---闇の護封剣 -function c12923641.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c12923641.target) - e1:SetOperation(c12923641.activate) - c:RegisterEffect(e1) - --cannot change position - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_SZONE) - e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e1:SetTargetRange(0,LOCATION_MZONE) - c:RegisterEffect(e1) -end -function c12923641.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - c:SetTurnCounter(0) - local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c12923641.descon) - e2:SetOperation(c12923641.desop) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - c:RegisterEffect(e2) -end -function c12923641.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,0,LOCATION_MZONE,nil) - if g:GetCount()>0 then - Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) - end -end -function c12923641.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c12923641.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetTurnCounter() - ct=ct+1 - c:SetTurnCounter(ct) - if ct==2 then - Duel.Destroy(c,REASON_RULE) - end -end +--闇の護封剣 +function c12923641.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c12923641.target) + e1:SetOperation(c12923641.activate) + c:RegisterEffect(e1) + --cannot change position + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) +end +function c12923641.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + c:SetTurnCounter(0) + local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) + Duel.SetTargetCard(g) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c12923641.descon) + e1:SetOperation(c12923641.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + c:RegisterEffect(e1) +end +function c12923641.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,0,LOCATION_MZONE,nil) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.ChangePosition(sg,POS_FACEDOWN_DEFENSE) + end +end +function c12923641.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c12923641.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==2 then + Duel.Destroy(c,REASON_RULE) + end +end diff --git a/script/c12940613.lua b/script/c12940613.lua index c8654a3f..091cc4fb 100644 --- a/script/c12940613.lua +++ b/script/c12940613.lua @@ -1,61 +1,61 @@ ---マドルチェ・マナー -function c12940613.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_TODECK) - 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(c12940613.condition) - e1:SetTarget(c12940613.target) - e1:SetOperation(c12940613.activate) - c:RegisterEffect(e1) -end -function c12940613.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c12940613.filter(c) - return c:IsFaceup() and c:IsSetCard(0x71) -end -function c12940613.tdfilter1(c) - return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x71) and c:IsAbleToDeck() -end -function c12940613.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c12940613.tdfilter1(chkc) end - if chk==0 then return Duel.IsExistingMatchingCard(c12940613.filter,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingTarget(c12940613.tdfilter1,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c12940613.tdfilter1,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) -end -function c12940613.tdfilter2(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) -end -function c12940613.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end - local g=Duel.GetMatchingGroup(c12940613.filter,tp,LOCATION_MZONE,0,nil) - tc=g:GetFirst() - if not tc then return end - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(800) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - tc=g:GetNext() - end - local dg=Duel.GetMatchingGroup(c12940613.tdfilter2,tp,LOCATION_GRAVE,0,nil) - if dg:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(12940613,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - Duel.SendtoDeck(dg:Select(tp,1,1,nil),nil,2,REASON_EFFECT) - end -end +--マドルチェ・マナー +function c12940613.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_TODECK) + 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(c12940613.condition) + e1:SetTarget(c12940613.target) + e1:SetOperation(c12940613.activate) + c:RegisterEffect(e1) +end +function c12940613.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c12940613.filter(c) + return c:IsFaceup() and c:IsSetCard(0x71) +end +function c12940613.tdfilter1(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x71) and c:IsAbleToDeck() +end +function c12940613.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c12940613.tdfilter1(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c12940613.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c12940613.tdfilter1,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c12940613.tdfilter1,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c12940613.tdfilter2(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c12940613.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end + local g=Duel.GetMatchingGroup(c12940613.filter,tp,LOCATION_MZONE,0,nil) + tc=g:GetFirst() + if not tc then return end + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + local dg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c12940613.tdfilter2),tp,LOCATION_GRAVE,0,nil) + if dg:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(12940613,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + Duel.SendtoDeck(dg:Select(tp,1,1,nil),nil,2,REASON_EFFECT) + end +end diff --git a/script/c12948099.lua b/script/c12948099.lua index a1187c9f..d3f6ad62 100644 --- a/script/c12948099.lua +++ b/script/c12948099.lua @@ -1,94 +1,94 @@ ---古神クトグア -function c12948099.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(12948099,0)) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c12948099.tdcon) - e1:SetTarget(c12948099.tdtg) - e1:SetOperation(c12948099.tdop) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(12948099,1)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCondition(c12948099.drcon) - e2:SetTarget(c12948099.drtg) - e2:SetOperation(c12948099.drop) - c:RegisterEffect(e2) - --effect gain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_BE_MATERIAL) - e3:SetCondition(c12948099.efcon) - e3:SetOperation(c12948099.efop) - c:RegisterEffect(e3) -end -function c12948099.tdcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c12948099.filter(c) - return c:IsType(TYPE_XYZ) and c:GetRank()==4 and c:IsAbleToExtra() -end -function c12948099.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c12948099.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(c12948099.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c12948099.tdop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c12948099.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()>0 then - Duel.SendtoDeck(g,nil,0,REASON_EFFECT) - end -end -function c12948099.drcon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_FUSION -end -function c12948099.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c12948099.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end -function c12948099.efcon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_XYZ -end -function c12948099.efop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local rc=c:GetReasonCard() - local e1=Effect.CreateEffect(rc) - e1:SetDescription(aux.Stringid(12948099,2)) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c12948099.drcon2) - e1:SetTarget(c12948099.drtg) - e1:SetOperation(c12948099.drop) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - if not rc:IsType(TYPE_EFFECT) then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ADD_TYPE) - e2:SetValue(TYPE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e2,true) - end -end -function c12948099.drcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ -end +--古神クトグア +function c12948099.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12948099,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c12948099.tdcon) + e1:SetTarget(c12948099.tdtg) + e1:SetOperation(c12948099.tdop) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(12948099,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c12948099.drcon) + e2:SetTarget(c12948099.drtg) + e2:SetOperation(c12948099.drop) + c:RegisterEffect(e2) + --effect gain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetCondition(c12948099.efcon) + e3:SetOperation(c12948099.efop) + c:RegisterEffect(e3) +end +function c12948099.tdcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c12948099.filter(c) + return c:IsType(TYPE_XYZ) and c:GetRank()==4 and c:IsAbleToExtra() +end +function c12948099.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c12948099.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c12948099.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c12948099.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c12948099.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.SendtoDeck(g,nil,0,REASON_EFFECT) + end +end +function c12948099.drcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_FUSION +end +function c12948099.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c12948099.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c12948099.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c12948099.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(12948099,2)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c12948099.drcon2) + e1:SetTarget(c12948099.drtg) + e1:SetOperation(c12948099.drop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c12948099.drcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end diff --git a/script/c12958919.lua b/script/c12958919.lua index da646742..ab27d93a 100644 --- a/script/c12958919.lua +++ b/script/c12958919.lua @@ -58,7 +58,7 @@ function c12958919.spop(e,tp,eg,ep,ev,re,r,rp) local token=Duel.CreateToken(tp,12958920) Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) ft=ft-1 - if ft<=0 or not Duel.SelectYesNo(tp,aux.Stringid(12958919,2)) then ctn=false end + if ft<=0 or not Duel.SelectYesNo(tp,aux.Stringid(12958919,2)) or Duel.IsPlayerAffectedByEffect(tp,59822133) then ctn=false end end Duel.SpecialSummonComplete() end diff --git a/script/c12965761.lua b/script/c12965761.lua index 9393fb07..7f3aaa73 100644 --- a/script/c12965761.lua +++ b/script/c12965761.lua @@ -16,7 +16,7 @@ function c12965761.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c12965761.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c12965761.sptg) e2:SetOperation(c12965761.spop) c:RegisterEffect(e2) @@ -36,7 +36,7 @@ function c12965761.initial_effect(c) e4:SetType(EFFECT_TYPE_EQUIP) e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e4:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e4:SetCondition(c12965761.uncon) + e4:SetCondition(aux.IsUnionState) e4:SetValue(c12965761.repval) c:RegisterEffect(e4) --eqlimit @@ -47,9 +47,7 @@ function c12965761.initial_effect(c) e5:SetValue(c12965761.eqlimit) c:RegisterEffect(e5) end -function c12965761.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c12965761.old_union=true function c12965761.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -77,7 +75,7 @@ function c12965761.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c12965761.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(12965761)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -95,7 +93,7 @@ function c12965761.spop(e,tp,eg,ep,ev,re,r,rp) end end function c12965761.tkcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and eg:GetFirst()==e:GetHandler():GetEquipTarget() + return aux.IsUnionState(e) and eg:GetFirst()==e:GetHandler():GetEquipTarget() end function c12965761.tktg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end diff --git a/script/c13026402.lua b/script/c13026402.lua index 39d0f6c5..0d5eca3b 100644 --- a/script/c13026402.lua +++ b/script/c13026402.lua @@ -29,8 +29,7 @@ function c13026402.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c13026402.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c13030280.lua b/script/c13030280.lua index 1b76d760..4e6fdf03 100644 --- a/script/c13030280.lua +++ b/script/c13030280.lua @@ -17,6 +17,7 @@ function c13030280.initial_effect(c) e2:SetDescription(aux.Stringid(13030280,0)) e2:SetCategory(CATEGORY_DAMAGE) e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetCondition(c13030280.damcon) e2:SetCost(c13030280.damcost) diff --git a/script/c13032689.lua b/script/c13032689.lua index 9452b964..ffcdcb2d 100644 --- a/script/c13032689.lua +++ b/script/c13032689.lua @@ -1,27 +1,12 @@ --エクシーズ・ユニット function c13032689.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(c13032689.target) - e1:SetOperation(c13032689.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c13032689.filter) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(c13032689.atkval) 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(c13032689.eqlimit) - c:RegisterEffect(e3) --remove overlay replace local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(13032689,0)) @@ -32,24 +17,8 @@ function c13032689.initial_effect(c) e4:SetOperation(c13032689.rop) c:RegisterEffect(e4) end -function c13032689.eqlimit(e,c) - return c:IsType(TYPE_XYZ) -end function c13032689.filter(c) - return c:IsFaceup() and c:IsType(TYPE_XYZ) -end -function c13032689.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c13032689.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c13032689.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c13032689.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c13032689.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 + return c:IsType(TYPE_XYZ) end function c13032689.atkval(e,c) return c:GetRank()*200 diff --git a/script/c13035077.lua b/script/c13035077.lua new file mode 100644 index 00000000..4e9ab24f --- /dev/null +++ b/script/c13035077.lua @@ -0,0 +1,74 @@ +--ドラゴニックD +--Dragonic Diagram +--Script by nekrozar +function c13035077.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk&def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c13035077.atktg) + e2:SetValue(300) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c13035077.indtg) + e4:SetValue(c13035077.indct) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(13035077,0)) + e5:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_FZONE) + e5:SetCountLimit(1) + e5:SetTarget(c13035077.destg) + e5:SetOperation(c13035077.desop) + c:RegisterEffect(e5) +end +function c13035077.atktg(e,c) + return c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083) +end +function c13035077.indtg(e,c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) +end +function c13035077.indct(e,re,r,rp) + if bit.band(r,REASON_BATTLE)~=0 then + return 1 + else return 0 end +end +function c13035077.thfilter(c) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsAbleToHand() +end +function c13035077.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(c13035077.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,tp,LOCATION_HAND+LOCATION_ONFIELD) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c13035077.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,e:GetHandler()) + if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c13035077.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c13048472.lua b/script/c13048472.lua index f973b66e..4644eb64 100644 --- a/script/c13048472.lua +++ b/script/c13048472.lua @@ -28,12 +28,11 @@ function c13048472.activate(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local g=Duel.SelectMatchingCard(tp,c13048472.filter,tp,LOCATION_DECK,0,1,1,nil,tp) if g:GetCount()>0 then - local mg=Duel.GetMatchingGroup(c13048472.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,nil,g:GetFirst()) + local mg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c13048472.filter2),tp,LOCATION_DECK+LOCATION_GRAVE,0,nil,g:GetFirst()) if mg:GetCount()>0 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local sg=mg:Select(tp,1,1,nil) g:Merge(sg) - if g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c13073850.lua b/script/c13073850.lua index 694722ce..5491336a 100644 --- a/script/c13073850.lua +++ b/script/c13073850.lua @@ -1,154 +1,153 @@ ---クリフォート・エイリアス -function c13073850.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(1,0) - e2:SetCondition(c13073850.splimcon) - e2:SetTarget(c13073850.splimit) - c:RegisterEffect(e2) - --atk up - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_PZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) - e3:SetValue(300) - c:RegisterEffect(e3) - --summon with no tribute - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(13073850,0)) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EFFECT_SUMMON_PROC) - e4:SetCondition(c13073850.ntcon) - c:RegisterEffect(e4) - --change level - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_SUMMON_COST) - e5:SetOperation(c13073850.lvop) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_SPSUMMON_COST) - e6:SetOperation(c13073850.lvop2) - c:RegisterEffect(e6) - --immune - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetCode(EFFECT_IMMUNE_EFFECT) - e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) - e7:SetRange(LOCATION_MZONE) - e7:SetCondition(c13073850.immcon) - e7:SetValue(aux.qlifilter) - c:RegisterEffect(e7) - --tohand - local e8=Effect.CreateEffect(c) - e8:SetDescription(aux.Stringid(13073850,1)) - e8:SetCategory(CATEGORY_TOHAND) - e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e8:SetCode(EVENT_SUMMON_SUCCESS) - e8:SetProperty(EFFECT_FLAG_CARD_TARGET) - e8:SetCondition(c13073850.thcon) - e8:SetTarget(c13073850.thtg) - e8:SetOperation(c13073850.thop) - c:RegisterEffect(e8) - --tribute check - local e9=Effect.CreateEffect(c) - e9:SetType(EFFECT_TYPE_SINGLE) - e9:SetCode(EFFECT_MATERIAL_CHECK) - e9:SetValue(c13073850.valcheck) - e9:SetLabelObject(e8) - c:RegisterEffect(e9) -end -function c13073850.splimcon(e) - return not e:GetHandler():IsForbidden() -end -function c13073850.splimit(e,c) - return not c:IsSetCard(0xaa) -end -function c13073850.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c13073850.lvcon(e) - return e:GetHandler():GetMaterialCount()==0 -end -function c13073850.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c13073850.lvcon) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c13073850.lvcon) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c13073850.lvop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c13073850.immcon(e) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL -end -function c13073850.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 -end -function c13073850.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) - Duel.SetChainLimit(c13073850.chlimit) -end -function c13073850.chlimit(e,ep,tp) - return tp==ep -end -function c13073850.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end -function c13073850.valcheck(e,c) - local g=c:GetMaterial() - if g:IsExists(Card.IsSetCard,1,nil,0xaa) then - e:GetLabelObject():SetLabel(1) - else - e:GetLabelObject():SetLabel(0) - end -end +--クリフォート・エイリアス +function c13073850.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetCondition(c13073850.splimcon) + e2:SetTarget(c13073850.splimit) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_PZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) + e3:SetValue(300) + c:RegisterEffect(e3) + --summon with no tribute + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(13073850,0)) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SUMMON_PROC) + e4:SetCondition(c13073850.ntcon) + c:RegisterEffect(e4) + --change level + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_SUMMON_COST) + e5:SetOperation(c13073850.lvop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SPSUMMON_COST) + e6:SetOperation(c13073850.lvop2) + c:RegisterEffect(e6) + --immune + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_IMMUNE_EFFECT) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c13073850.immcon) + e7:SetValue(aux.qlifilter) + c:RegisterEffect(e7) + --tohand + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(13073850,1)) + e8:SetCategory(CATEGORY_TOHAND) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_SUMMON_SUCCESS) + e8:SetProperty(EFFECT_FLAG_CARD_TARGET) + e8:SetCondition(c13073850.thcon) + e8:SetTarget(c13073850.thtg) + e8:SetOperation(c13073850.thop) + c:RegisterEffect(e8) + --tribute check + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetCode(EFFECT_MATERIAL_CHECK) + e9:SetValue(c13073850.valcheck) + e9:SetLabelObject(e8) + c:RegisterEffect(e9) +end +function c13073850.splimcon(e) + return not e:GetHandler():IsForbidden() +end +function c13073850.splimit(e,c) + return not c:IsSetCard(0xaa) +end +function c13073850.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c13073850.lvcon(e) + return e:GetHandler():GetMaterialCount()==0 +end +function c13073850.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c13073850.lvcon) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c13073850.lvcon) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c13073850.lvop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c13073850.immcon(e) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL +end +function c13073850.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 +end +function c13073850.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetChainLimit(c13073850.chlimit) +end +function c13073850.chlimit(e,ep,tp) + return tp==ep +end +function c13073850.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c13073850.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsSetCard,1,nil,0xaa) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end diff --git a/script/c13108445.lua b/script/c13108445.lua index c67ef71f..143dcc50 100644 --- a/script/c13108445.lua +++ b/script/c13108445.lua @@ -1,61 +1,61 @@ ---ジェムナイト・アクアマリナ -function c13108445.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,27126980,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),1,false,false) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(c13108445.splimit) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(13108445,0)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c13108445.thcon) - e3:SetTarget(c13108445.thtg) - e3:SetOperation(c13108445.thop) - c:RegisterEffect(e3) - --to defense - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_PHASE+PHASE_BATTLE) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1) - e4:SetCondition(c13108445.poscon) - e4:SetOperation(c13108445.posop) - c:RegisterEffect(e4) -end -function c13108445.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c13108445.thcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)~=0 -end -function c13108445.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c13108445.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end -function c13108445.poscon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetAttackedCount()>0 -end -function c13108445.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsAttackPos() then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end -end +--ジェムナイト・アクアマリナ +function c13108445.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,27126980,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),1,false,false) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(c13108445.splimit) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(13108445,0)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c13108445.thcon) + e3:SetTarget(c13108445.thtg) + e3:SetOperation(c13108445.thop) + c:RegisterEffect(e3) + --to defense + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_BATTLE) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCondition(c13108445.poscon) + e4:SetOperation(c13108445.posop) + c:RegisterEffect(e4) +end +function c13108445.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c13108445.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c13108445.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c13108445.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c13108445.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetAttackedCount()>0 +end +function c13108445.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsAttackPos() then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c131182.lua b/script/c131182.lua index 604b26df..e7fbbdfd 100644 --- a/script/c131182.lua +++ b/script/c131182.lua @@ -1,98 +1,98 @@ ---ミラクル・フリッパー -function c131182.initial_effect(c) - --sumlimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetCondition(c131182.excon) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(c131182.splimit) - c:RegisterEffect(e3) - --cannot be battle target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(0,LOCATION_MZONE) - e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e4:SetValue(c131182.atlimit) - c:RegisterEffect(e4) - --spsummon - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e5:SetCode(EVENT_BATTLE_DESTROYED) - e5:SetOperation(c131182.battleop) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(131182,0)) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e6:SetRange(0xff) - e6:SetCode(EVENT_PHASE+PHASE_BATTLE) - e6:SetCountLimit(1) - e6:SetCondition(c131182.spcon) - e6:SetTarget(c131182.sptg) - e6:SetOperation(c131182.spop) - c:RegisterEffect(e6) - --destroy - local e7=Effect.CreateEffect(c) - e7:SetDescription(aux.Stringid(131182,1)) - e7:SetCategory(CATEGORY_DESTROY) - e7:SetProperty(EFFECT_FLAG_CARD_TARGET) - e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e7:SetCode(EVENT_DESTROYED) - e7:SetCondition(c131182.descon) - e7:SetTarget(c131182.destg) - e7:SetOperation(c131182.desop) - c:RegisterEffect(e7) -end -function c131182.exfilter(c) - return c:IsFaceup() and c:IsCode(131182) -end -function c131182.excon(e) - local c=e:GetHandler() - return Duel.IsExistingMatchingCard(c131182.exfilter,c:GetControler(),LOCATION_ONFIELD,0,1,nil) -end -function c131182.splimit(e,se,sp,st,spos,tgp) - return not Duel.IsExistingMatchingCard(c131182.exfilter,tgp,LOCATION_ONFIELD,0,1,nil) -end -function c131182.atlimit(e,c) - return c:IsFaceup() and c~=e:GetHandler() -end -function c131182.battleop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(131182,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) -end -function c131182.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(131182)~=0 -end -function c131182.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 c131182.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,1-tp,false,false,POS_FACEUP) - end -end -function c131182.descon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT)~=0 and re:IsActiveType(TYPE_SPELL+TYPE_TRAP) -end -function c131182.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c131182.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--ミラクル・フリッパー +function c131182.initial_effect(c) + --sumlimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c131182.excon) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(c131182.splimit) + c:RegisterEffect(e3) + --cannot be battle target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetValue(c131182.atlimit) + c:RegisterEffect(e4) + --spsummon + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_BATTLE_DESTROYED) + e5:SetOperation(c131182.battleop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(131182,0)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(0xff) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetCountLimit(1) + e6:SetCondition(c131182.spcon) + e6:SetTarget(c131182.sptg) + e6:SetOperation(c131182.spop) + c:RegisterEffect(e6) + --destroy + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(131182,1)) + e7:SetCategory(CATEGORY_DESTROY) + e7:SetProperty(EFFECT_FLAG_CARD_TARGET) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_DESTROYED) + e7:SetCondition(c131182.descon) + e7:SetTarget(c131182.destg) + e7:SetOperation(c131182.desop) + c:RegisterEffect(e7) +end +function c131182.exfilter(c) + return c:IsFaceup() and c:IsCode(131182) +end +function c131182.excon(e) + local c=e:GetHandler() + return Duel.IsExistingMatchingCard(c131182.exfilter,c:GetControler(),LOCATION_ONFIELD,0,1,nil) +end +function c131182.splimit(e,se,sp,st,spos,tgp) + return not Duel.IsExistingMatchingCard(c131182.exfilter,tgp,LOCATION_ONFIELD,0,1,nil) +end +function c131182.atlimit(e,c) + return c:IsFaceup() and c~=e:GetHandler() +end +function c131182.battleop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(131182,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) +end +function c131182.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(131182)~=0 +end +function c131182.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 c131182.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,1-tp,false,false,POS_FACEUP) + end +end +function c131182.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end +function c131182.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c131182.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c1315120.lua b/script/c1315120.lua index b60490b8..4b143061 100644 --- a/script/c1315120.lua +++ b/script/c1315120.lua @@ -11,6 +11,7 @@ function c1315120.initial_effect(c) --to grave local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c1315120.regop) c:RegisterEffect(e2) diff --git a/script/c13166204.lua b/script/c13166204.lua index cc9e8950..22e73e33 100644 --- a/script/c13166204.lua +++ b/script/c13166204.lua @@ -25,8 +25,7 @@ function c13166204.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c13166204.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(re:GetHandler(),REASON_EFFECT)~=0 then + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(re:GetHandler(),REASON_EFFECT)~=0 then Duel.BreakEffect() local a=re:GetHandler():GetAttack() local b=re:GetHandler():GetDefense() diff --git a/script/c13183454.lua b/script/c13183454.lua index 416b58ce..585481e9 100644 --- a/script/c13183454.lua +++ b/script/c13183454.lua @@ -6,7 +6,7 @@ function c13183454.initial_effect(c) --atkdown local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(13183454,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCost(c13183454.cost) diff --git a/script/c13210191.lua b/script/c13210191.lua index aa134603..71ec8df9 100644 --- a/script/c13210191.lua +++ b/script/c13210191.lua @@ -1,41 +1,41 @@ ---嵐 -function c13210191.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c13210191.target) - e1:SetOperation(c13210191.activate) - c:RegisterEffect(e1) -end -function c13210191.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c13210191.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.IsExistingMatchingCard(c13210191.filter,tp,LOCATION_ONFIELD,0,1,c) end - local g1=Duel.GetMatchingGroup(c13210191.filter,tp,LOCATION_ONFIELD,0,c) - local g2=Duel.GetMatchingGroup(c13210191.filter,tp,0,LOCATION_ONFIELD,nil) - local ct1=g1:GetCount() - local ct2=g2:GetCount() - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,ct1+((ct1>ct2) and ct2 or ct1),0,0) -end -function c13210191.activate(e,tp,eg,ep,ev,re,r,rp) - local g1=Duel.GetMatchingGroup(c13210191.filter,tp,LOCATION_ONFIELD,0,e:GetHandler()) - local ct1=Duel.Destroy(g1,REASON_EFFECT) - if ct1==0 then return end - local g2=Duel.GetMatchingGroup(c13210191.filter,tp,0,LOCATION_ONFIELD,nil) - local ct2=g2:GetCount() - if ct2==0 then return end - Duel.BreakEffect() - if ct2<=ct1 then - Duel.Destroy(g2,REASON_EFFECT) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g3=g2:Select(tp,ct1,ct1,nil) - Duel.HintSelection(g3) - Duel.Destroy(g3,REASON_EFFECT) - end -end +--嵐 +function c13210191.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c13210191.target) + e1:SetOperation(c13210191.activate) + c:RegisterEffect(e1) +end +function c13210191.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c13210191.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c13210191.filter,tp,LOCATION_ONFIELD,0,1,c) end + local g1=Duel.GetMatchingGroup(c13210191.filter,tp,LOCATION_ONFIELD,0,c) + local g2=Duel.GetMatchingGroup(c13210191.filter,tp,0,LOCATION_ONFIELD,nil) + local ct1=g1:GetCount() + local ct2=g2:GetCount() + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,ct1+((ct1>ct2) and ct2 or ct1),0,0) +end +function c13210191.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c13210191.filter,tp,LOCATION_ONFIELD,0,e:GetHandler()) + local ct1=Duel.Destroy(g1,REASON_EFFECT) + if ct1==0 then return end + local g2=Duel.GetMatchingGroup(c13210191.filter,tp,0,LOCATION_ONFIELD,nil) + local ct2=g2:GetCount() + if ct2==0 then return end + Duel.BreakEffect() + if ct2<=ct1 then + Duel.Destroy(g2,REASON_EFFECT) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g3=g2:Select(tp,ct1,ct1,nil) + Duel.HintSelection(g3) + Duel.Destroy(g3,REASON_EFFECT) + end +end diff --git a/script/c13241004.lua b/script/c13241004.lua new file mode 100644 index 00000000..dda51afc --- /dev/null +++ b/script/c13241004.lua @@ -0,0 +1,61 @@ +--ファーニマル・ペンギン +function c13241004.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(13241004,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c13241004.sptg) + e1:SetOperation(c13241004.spop) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(13241004,1)) + e2:SetCategory(CATEGORY_DRAW+CATEGORY_HANDES) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCountLimit(1,13241004) + e2:SetCondition(c13241004.drcon) + e2:SetTarget(c13241004.drtg) + e2:SetOperation(c13241004.drop) + c:RegisterEffect(e2) +end +function c13241004.spfilter(c,e,tp) + return c:IsSetCard(0xa9) and not c:IsCode(13241004) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c13241004.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c13241004.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c13241004.spop(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,c13241004.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 c13241004.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsLocation(LOCATION_GRAVE) and r==REASON_FUSION and c:GetReasonCard():IsSetCard(0xad) +end +function c13241004.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) +end +function c13241004.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)==2 then + Duel.ShuffleHand(p) + Duel.BreakEffect() + Duel.DiscardHand(p,nil,1,1,REASON_EFFECT+REASON_DISCARD) + end +end diff --git a/script/c13293158.lua b/script/c13293158.lua index 30d6da64..b6865c83 100644 --- a/script/c13293158.lua +++ b/script/c13293158.lua @@ -1,61 +1,59 @@ ---E-HERO ワイルド・サイクロン -function c13293158.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,21844576,86188410,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c13293158.splimit) - c:RegisterEffect(e1) - --actlimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetOperation(c13293158.atkop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(13293158,0)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_BATTLE_DAMAGE) - e3:SetCondition(c13293158.condition) - e3:SetTarget(c13293158.target) - e3:SetOperation(c13293158.activate) - c:RegisterEffect(e3) -end -c13293158.dark_calling=true -function c13293158.splimit(e,se,sp,st) - return st==SUMMON_TYPE_FUSION+0x10 -end -function c13293158.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c13293158.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end -function c13293158.aclimit(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c13293158.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c13293158.filter(c) - return c:IsFacedown() -end -function c13293158.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c13293158.filter,tp,0,LOCATION_SZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c13293158.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c13293158.filter,tp,0,LOCATION_SZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end +--E-HERO ワイルド・サイクロン +function c13293158.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,21844576,86188410,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c13293158.splimit) + c:RegisterEffect(e1) + --actlimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,1) + e2:SetValue(c13293158.aclimit) + e2:SetCondition(c13293158.actcon) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(13293158,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetCondition(c13293158.condition) + e3:SetTarget(c13293158.target) + e3:SetOperation(c13293158.activate) + c:RegisterEffect(e3) +end +c13293158.material_setcode=0x8 +c13293158.dark_calling=true +function c13293158.splimit(e,se,sp,st) + return st==SUMMON_TYPE_FUSION+0x10 +end +function c13293158.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c13293158.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end +function c13293158.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c13293158.filter(c) + return c:IsFacedown() +end +function c13293158.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c13293158.filter,tp,0,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c13293158.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c13293158.filter,tp,0,LOCATION_SZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c13301895.lua b/script/c13301895.lua new file mode 100644 index 00000000..2e00eef4 --- /dev/null +++ b/script/c13301895.lua @@ -0,0 +1,57 @@ +--失楽園 +function c13301895.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Untargetable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c13301895.immtg) + e2:SetValue(aux.tgoval) + c:RegisterEffect(e2) + --Indes + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(c13301895.tgvalue) + c:RegisterEffect(e3) + --Draw + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DRAW) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCountLimit(1,13301895) + e4:SetCondition(c13301895.drcon) + e4:SetTarget(c13301895.drtg) + e4:SetOperation(c13301895.drop) + c:RegisterEffect(e4) +end +function c13301895.immtg(e,c) + return c:IsCode(6007213,32491822,69890967,43378048) +end +function c13301895.tgvalue(e,re,rp) + return rp~=e:GetHandlerPlayer() +end +function c13301895.drcfilter(c) + return c:IsFaceup() and c:IsCode(6007213,32491822,69890967,43378048) +end +function c13301895.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c13301895.drcfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c13301895.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c13301895.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c13317419.lua b/script/c13317419.lua index df8f4afe..18fb054d 100644 --- a/script/c13317419.lua +++ b/script/c13317419.lua @@ -1,102 +1,102 @@ ---ロケットハンド -function c13317419.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCountLimit(1,13317419) - e1:SetCondition(c13317419.condition) - e1:SetTarget(c13317419.target) - e1:SetOperation(c13317419.operation) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1,13317419) - e2:SetCondition(c13317419.descon) - e2:SetCost(c13317419.descost) - e2:SetTarget(c13317419.destg) - e2:SetOperation(c13317419.desop) - c:RegisterEffect(e2) -end -function c13317419.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c13317419.filter(c) - return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAttackAbove(800) -end -function c13317419.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c13317419.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c13317419.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c13317419.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c13317419.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(tp) then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - --Atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(800) - e1:SetReset(RESET_EVENT+0x1fe0000) - 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) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - end -end -function c13317419.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetEquipTarget() -end -function c13317419.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - e:SetLabelObject(e:GetHandler():GetEquipTarget()) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c13317419.desfilter(c) - return c:IsFaceup() -end -function c13317419.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c13317419.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c13317419.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c13317419.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c13317419.desop(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetLabelObject() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 - and ec and ec:IsFaceup() and ec:IsLocation(LOCATION_MZONE) then - Duel.BreakEffect() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - ec:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) - e2:SetReset(RESET_EVENT+0x1fe0000) - ec:RegisterEffect(e2) - end -end +--ロケットハンド +function c13317419.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCountLimit(1,13317419) + e1:SetCondition(c13317419.condition) + e1:SetTarget(c13317419.target) + e1:SetOperation(c13317419.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,13317419) + e2:SetCondition(c13317419.descon) + e2:SetCost(c13317419.descost) + e2:SetTarget(c13317419.destg) + e2:SetOperation(c13317419.desop) + c:RegisterEffect(e2) +end +function c13317419.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c13317419.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAttackAbove(800) +end +function c13317419.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c13317419.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c13317419.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c13317419.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c13317419.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(tp) then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c13317419.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget() +end +function c13317419.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabelObject(e:GetHandler():GetEquipTarget()) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c13317419.desfilter(c) + return c:IsFaceup() +end +function c13317419.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c13317419.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c13317419.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c13317419.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c13317419.desop(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetLabelObject() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 + and ec and ec:IsFaceup() and ec:IsLocation(LOCATION_MZONE) then + Duel.BreakEffect() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + ec:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000) + ec:RegisterEffect(e2) + end +end diff --git a/script/c13331639.lua b/script/c13331639.lua new file mode 100644 index 00000000..8080286e --- /dev/null +++ b/script/c13331639.lua @@ -0,0 +1,421 @@ +--覇王龍ズァーク +--Supreme King Dragon Zarc +--Scripted by Eerie Code +function c13331639.initial_effect(c) + c:EnableReviveLimit() + --aux.AddFusionProcFunMulti(c,false,c13331639.filters) + aux.EnablePendulumAttribute(c,false) + --fusion procedure + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c13331639.fuscon) + e0:SetOperation(c13331639.fusop) + c:RegisterEffect(e0) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --act limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(0,1) + e2:SetValue(c13331639.limval) + c:RegisterEffect(e2) + --destroy drawn + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(13331639,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_HAND) + e3:SetRange(LOCATION_PZONE) + e3:SetCountLimit(1) + e3:SetCondition(c13331639.ddcon) + e3:SetTarget(c13331639.ddtg) + e3:SetOperation(c13331639.ddop) + c:RegisterEffect(e3) + --destroy all + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(13331639,1)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetTarget(c13331639.destg) + e4:SetOperation(c13331639.desop) + c:RegisterEffect(e4) + --Immune + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(aux.tgoval) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e6:SetValue(c13331639.tgvalue) + c:RegisterEffect(e6) + --special summon + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(13331639,2)) + e7:SetCategory(CATEGORY_SPECIAL_SUMMON) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e7:SetCode(EVENT_BATTLE_DESTROYING) + e7:SetCondition(aux.bdocon) + e7:SetTarget(c13331639.sptg) + e7:SetOperation(c13331639.spop) + c:RegisterEffect(e7) + --pendulum + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(13331639,3)) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_DESTROYED) + e8:SetProperty(EFFECT_FLAG_DELAY) + e8:SetCondition(c13331639.pencon) + e8:SetTarget(c13331639.pentg) + e8:SetOperation(c13331639.penop) + c:RegisterEffect(e8) +end +c13331639.miracle_synchro_fusion=true +function c13331639.fusfilter1(c) + if Card.IsFusionType then + return c:IsRace(RACE_DRAGON) and c:IsFusionType(TYPE_FUSION) + else + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_FUSION) + end +end +function c13331639.fusfilter2(c) + if Card.IsFusionType then + return c:IsRace(RACE_DRAGON) and c:IsFusionType(TYPE_SYNCHRO) + else + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) + end +end +function c13331639.fusfilter3(c) + if Card.IsFusionType then + return c:IsRace(RACE_DRAGON) and c:IsFusionType(TYPE_XYZ) + else + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_XYZ) + end +end +function c13331639.fusfilter4(c) + if Card.IsFusionType then + return c:IsRace(RACE_DRAGON) and c:IsFusionType(TYPE_PENDULUM) + else + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_PENDULUM) + end +end +c13331639.filters={c13331639.fusfilter1,c13331639.fusfilter2,c13331639.fusfilter3,c13331639.fusfilter4} +-- TO BE REMOVED ONCE THE UTILITIES ARE UPDATED +function c13331639.FConditionFilterMultiOr(c,funs,n) + for i=1,n do + if funs[i](c) then return true end + end + return false +end +function c13331639.FConditionFilterMulti(c,mg,funs,n,tbt) + for i=1,n do + local tp=2^(i-1) + if bit.band(tbt,tp)~=0 and funs[i](c) then + local t2=tbt-tp + if t2==0 then return true end + local mg2=mg:Clone() + mg2:RemoveCard(c) + if mg2:IsExists(c13331639.FConditionFilterMulti,1,nil,mg2,funs,n,t2) then return true end + end + end + return false +end +function c13331639.CloneTable(g) + local ng={} + for i=1,#g do + local sg=g[i]:Clone() + table.insert(ng,sg) + end + return ng +end +function c13331639.FConditionFilterMulti2(c,gr) + local gr2=c13331639.CloneTable(gr) + for i=1,#gr2 do + gr2[i]:RemoveCard(c) + end + table.remove(gr2,1) + if #gr2==1 then + return gr2[1]:IsExists(aux.TRUE,1,nil) + else + return gr2[1]:IsExists(c13331639.FConditionFilterMulti2,1,nil,gr2) + end +end +function c13331639.FConditionFilterMultiSelect(c,funs,n,mg,sg) + local valid=c13331639.FConditionFilterMultiValid(sg,funs,n) + if not valid then valid={0} end + local all = (2^n)-1 + for k,v in pairs(valid) do + v=bit.bxor(all,v) + if c13331639.FConditionFilterMulti(c,mg,funs,n,v) then return true end + end + return false +end +function c13331639.FConditionFilterMultiValid(g,funs,n) + local tp={} + local tc=g:GetFirst() + while tc do + local tp1={} + for i=1,n do + if funs[i](tc) then table.insert(tp1,2^(i-1)) end + end + table.insert(tp,tp1) + tc=g:GetNext() + end + return c13331639.FConditionMultiGenerateValids(tp,n) +end +function c13331639.FConditionMultiGenerateValids(vs,n) + local c=2 + while #vs > 1 do + local v1=vs[1] + table.remove(vs,1) + local v2=vs[1] + table.remove(vs,1) + table.insert(vs,1,c13331639.FConditionMultiCombine(v1,v2,n,c)) + c=c+1 + end + return vs[1] +end +function c13331639.FConditionMultiCombine(t1,t2,n,c) + local res={} + for k1,v1 in pairs(t1) do + for k2,v2 in pairs(t2) do + table.insert(res,bit.bor(v1,v2)) + end + end + res=c13331639.FConditionMultiCheckCount(res,n) + return c13331639.FConditionFilterMultiClean(res) +end +function c13331639.FConditionMultiCheckCount(vals,n) + local res={} local flags={} + for k,v in pairs(vals) do + local c=0 + for i=1,n do + if bit.band(v,2^(i-1))~=0 then c=c+1 end + end + if not flags[c] then + res[c] = {v} + flags[c] = true + else + table.insert(res[c],v) + end + end + local mk=0 + for k,v in pairs(flags) do + if k>mk then mk=k end + end + return res[mk] +end +function c13331639.FConditionFilterMultiClean(vals) + local res={} local flags={} + for k,v in pairs(vals) do + if not flags[v] then + table.insert(res,v) + flags[v] = true + end + end + return res +end +function c13331639.fuscon(e,g,gc,chkfnf) + local c=e:GetHandler() + if g==nil then return true end + if c:IsFaceup() then return false end + local chkf=bit.band(chkfnf,0xff) + local funs=c13331639.filters + local n=4 + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,c):Filter(c13331639.FConditionFilterMultiOr,nil,funs,n) + if gc then + if not gc:IsCanBeFusionMaterial(c) then return false end + local check_tot=(2^n)-1 + local mg2=mg:Clone() + mg2:RemoveCard(gc) + for i=1,n do + if funs[i](gc) then + local tbt=check_tot-2^(i-1) + if mg2:IsExists(c13331639.FConditionFilterMulti,1,nil,mg2,funs,n,tbt) then return true end + end + end + return false + end + local fs=false + local groups={} + for i=1,n do + table.insert(groups,Group.CreateGroup()) + end + local tc=mg:GetFirst() + while tc do + for i=1,n do + if funs[i](tc) then + groups[i]:AddCard(tc) + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + tc=mg:GetNext() + end + local gr2=c13331639.CloneTable(groups) + if chkf~=PLAYER_NONE then + return fs and gr2[1]:IsExists(c13331639.FConditionFilterMulti2,1,nil,gr2) + else + return gr2[1]:IsExists(c13331639.FConditionFilterMulti2,1,nil,gr2) + end +end +function c13331639.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local c=e:GetHandler() + local chkf=bit.band(chkfnf,0xff) + local funs=c13331639.filters + local n=4 + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,c):Filter(c13331639.FConditionFilterMultiOr,nil,funs,n) + if gc then + local sg=Group.FromCards(gc) + local mg=g:Clone() + mg:RemoveCard(gc) + for i=1,n-1 do + local mg2=mg:Filter(c13331639.FConditionFilterMultiSelect,nil,funs,n,mg,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg2=mg2:Select(tp,1,1,nil) + sg:AddCard(sg2:GetFirst()) + mg:RemoveCard(sg2:GetFirst()) + end + Duel.SetFusionMaterial(sg) + return + end + local sg=Group.CreateGroup() + local mg=g:Clone() + for i=1,n do + local mg2=mg:Filter(c13331639.FConditionFilterMultiSelect,nil,funs,n,mg,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg2=nil + if i==1 and chkf~=PLAYER_NONE then + sg2=mg2:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else + sg2=mg2:Select(tp,1,1,nil) + end + sg:AddCard(sg2:GetFirst()) + mg:RemoveCard(sg2:GetFirst()) + end + Duel.SetFusionMaterial(sg) +end +-- END SECTION TO BE REMOVED +function c13331639.check_fusion_material_48144509(g,chkf) + local fs=false + local mg=g:Filter(Card.IsLocation,nil,LOCATION_HAND+LOCATION_MZONE) + local funs=c13331639.filters + local groups={} + for i=1,4 do + table.insert(groups,Group.CreateGroup()) + end + local tc=mg:GetFirst() + while tc do + for i=1,4 do + if funs[i](tc) then + groups[i]:AddCard(tc) + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + tc=mg:GetNext() + end + local gr2=c13331639.CloneTable(groups) + if chkf~=PLAYER_NONE then + return fs and gr2[1]:IsExists(c13331639.FConditionFilterMulti2,1,nil,gr2) + else + return gr2[1]:IsExists(c13331639.FConditionFilterMulti2,1,nil,gr2) + end +end +function c13331639.select_fusion_material_48144509(tp,g,chkf) + local mg=g:Filter(Card.IsLocation,nil,LOCATION_HAND+LOCATION_MZONE) + local sg=Group.CreateGroup() + local funs=c13331639.filters + for i=1,4 do + local mg2=mg:Filter(c13331639.FConditionFilterMultiSelect,nil,funs,4,mg,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg2=nil + if i==1 and chkf~=PLAYER_NONE then + sg2=mg2:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else + sg2=mg2:Select(tp,1,1,nil) + end + sg:AddCard(sg2:GetFirst()) + mg:RemoveCard(sg2:GetFirst()) + end + Duel.SetFusionMaterial(sg) + return sg +end +function c13331639.limval(e,re,rp) + local rc=re:GetHandler() + return re:IsActiveType(TYPE_MONSTER) and rc:IsType(TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ) and not rc:IsImmuneToEffect(e) +end +function c13331639.ddcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DRAW +end +function c13331639.ddfilter(c,tp) + return c:IsControler(1-tp) and c:IsPreviousLocation(LOCATION_DECK) +end +function c13331639.ddtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=nil + if eg then g=eg:Filter(c13331639.ddfilter,nil,tp) end + if chk==0 then return g and g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c13331639.ddop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=eg:Filter(c13331639.ddfilter,nil,tp) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c13331639.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetFieldGroup(tp,0,LOCATION_ONFIELD) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c13331639.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_ONFIELD) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c13331639.tgvalue(e,re,rp) + return rp~=e:GetHandlerPlayer() +end +function c13331639.spfilter(c,e,tp) + return c:IsSetCard(0x20f8) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c13331639.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c13331639.spfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,nil,e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c13331639.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c13331639.spfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c13331639.pencon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() +end +function c13331639.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end +end +function c13331639.penop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end diff --git a/script/c13391185.lua b/script/c13391185.lua index 99e545de..c29ec712 100644 --- a/script/c13391185.lua +++ b/script/c13391185.lua @@ -1,61 +1,61 @@ ---聖騎士ガラハド -function c13391185.initial_effect(c) - --Normal monster - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetCode(EFFECT_ADD_TYPE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c13391185.eqcon1) - e1:SetValue(TYPE_NORMAL) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_REMOVE_TYPE) - e2:SetValue(TYPE_EFFECT) - c:RegisterEffect(e2) - --tohand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(13391185,0)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,13391185) - e3:SetCondition(c13391185.thcon) - e3:SetTarget(c13391185.thtg) - e3:SetOperation(c13391185.thop) - c:RegisterEffect(e3) -end -function c13391185.eqcon1(e) - local eg=e:GetHandler():GetEquipGroup() - return not eg or not eg:IsExists(Card.IsSetCard,1,nil,0x207a) -end -function c13391185.eqcon2(e) - local eg=e:GetHandler():GetEquipGroup() - return eg and eg:IsExists(Card.IsSetCard,1,nil,0x207a) -end -function c13391185.thcon(e,tp,eg,ep,ev,re,r,rp) - return c13391185.eqcon2(e) -end -function c13391185.thfilter(c) - return c:IsSetCard(0x107a) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c13391185.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c13391185.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c13391185.thfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c13391185.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c13391185.desfilter(c) - return c:IsFaceup() and c:IsSetCard(0x207a) and c:IsType(TYPE_EQUIP) -end -function c13391185.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local dg=Duel.SelectMatchingCard(tp,c13391185.desfilter,tp,LOCATION_SZONE,0,1,1,nil) - Duel.BreakEffect() - Duel.Destroy(dg,REASON_EFFECT) - end -end +--聖騎士ガラハド +function c13391185.initial_effect(c) + --Normal monster + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c13391185.eqcon1) + e1:SetValue(TYPE_NORMAL) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_REMOVE_TYPE) + e2:SetValue(TYPE_EFFECT) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(13391185,0)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,13391185) + e3:SetCondition(c13391185.thcon) + e3:SetTarget(c13391185.thtg) + e3:SetOperation(c13391185.thop) + c:RegisterEffect(e3) +end +function c13391185.eqcon1(e) + local eg=e:GetHandler():GetEquipGroup() + return not eg or not eg:IsExists(Card.IsSetCard,1,nil,0x207a) +end +function c13391185.eqcon2(e) + local eg=e:GetHandler():GetEquipGroup() + return eg and eg:IsExists(Card.IsSetCard,1,nil,0x207a) +end +function c13391185.thcon(e,tp,eg,ep,ev,re,r,rp) + return c13391185.eqcon2(e) +end +function c13391185.thfilter(c) + return c:IsSetCard(0x107a) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c13391185.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c13391185.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c13391185.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c13391185.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c13391185.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0x207a) and c:IsType(TYPE_EQUIP) +end +function c13391185.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 and tc:IsLocation(LOCATION_HAND) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,c13391185.desfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.BreakEffect() + Duel.Destroy(dg,REASON_EFFECT) + end +end diff --git a/script/c1344018.lua b/script/c1344018.lua new file mode 100644 index 00000000..a560749b --- /dev/null +++ b/script/c1344018.lua @@ -0,0 +1,86 @@ +--時空のペンデュラムグラフ +function c1344018.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c1344018.target) + c:RegisterEffect(e1) + --Cannot target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_SPELLCASTER)) + e2:SetValue(c1344018.evalue) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(1344018,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetHintTiming(0,0x1e0) + e3:SetCost(c1344018.descost) + e3:SetTarget(c1344018.destg) + e3:SetOperation(c1344018.desop) + c:RegisterEffect(e3) +end +function c1344018.evalue(e,re,rp) + return re:IsActiveType(TYPE_TRAP) and rp~=e:GetHandlerPlayer() +end +function c1344018.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + if c1344018.descost(e,tp,eg,ep,ev,re,r,rp,0) and c1344018.destg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_DESTROY) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + c1344018.descost(e,tp,eg,ep,ev,re,r,rp,1) + c1344018.destg(e,tp,eg,ep,ev,re,r,rp,1) + e:SetOperation(c1344018.desop) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c1344018.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,1344018)==0 end + Duel.RegisterFlagEffect(tp,1344018,RESET_PHASE+PHASE_END,0,1) +end +function c1344018.desfilter(c) + local seq=c:GetSequence() + return c:IsFaceup() and c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) + and (c:IsLocation(LOCATION_MZONE) or (seq==6 or seq==7)) +end +function c1344018.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c1344018.desfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.IsExistingTarget(nil,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c1344018.desfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,nil,tp,0,LOCATION_ONFIELD,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) +end +function c1344018.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.Destroy(g,REASON_EFFECT)~=2 then + local g2=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) + if g2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(1344018,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=g2:Select(tp,1,1,nil) + Duel.HintSelection(sg) + Duel.SendtoGrave(sg,REASON_EFFECT) + end + end +end diff --git a/script/c13455674.lua b/script/c13455674.lua new file mode 100644 index 00000000..c99b5c75 --- /dev/null +++ b/script/c13455674.lua @@ -0,0 +1,157 @@ +--水晶機巧-グリオンガンド +function c13455674.initial_effect(c) + c:EnableReviveLimit() + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c13455674.syncon) + e1:SetOperation(c13455674.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(13455674,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c13455674.rmcon) + e2:SetTarget(c13455674.rmtg) + e2:SetOperation(c13455674.rmop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(13455674,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c13455674.spcon) + e3:SetTarget(c13455674.sptg) + e3:SetOperation(c13455674.spop) + c:RegisterEffect(e3) + --double tuner + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(21142671) + c:RegisterEffect(e4) +end +function c13455674.matfilter1(c,syncard) + return c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c13455674.matfilter2(c,syncard) + return c:IsNotTuner() and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c13455674.synfilter(c,syncard,lv,g1,pg,ct) + local g=Group.FromCards(c) + g:Merge(pg) + Duel.SetSelectedCard(g) + return g1:CheckWithSumEqual(Card.GetSynchroLevel,lv,ct,63,syncard) +end +function c13455674.syncon(e,c,tuner,mg) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end + local g1=nil + local g2=nil + if mg then + g1=mg:Filter(c13455674.matfilter1,nil,c) + g2=mg:Filter(c13455674.matfilter2,nil,c) + else + g1=Duel.GetMatchingGroup(c13455674.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c13455674.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + local pg=Group.CreateGroup() + local ct=2 + if tuner then + pg:AddCard(tuner) + ct=ct-1 + end + if pe then + pg:AddCard(pe:GetOwner()) + ct=ct-1 + end + return g2:IsExists(c13455674.synfilter,1,nil,c,lv,g1,pg,ct) +end +function c13455674.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) + local g=Group.CreateGroup() + local g1=nil + local g2=nil + if mg then + g1=mg:Filter(c13455674.matfilter1,nil,c) + g2=mg:Filter(c13455674.matfilter2,nil,c) + else + g1=Duel.GetMatchingGroup(c13455674.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c13455674.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + local ct=2 + if tuner then + g:AddCard(tuner) + ct=ct-1 + end + if pe then + local pc=pe:GetOwner() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + Group.FromCards(pc):Select(tp,1,1,nil) + g:AddCard(pc) + ct=ct-1 + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m2=g2:FilterSelect(tp,c13455674.synfilter,1,1,nil,c,lv,g1,g,ct) + g:Merge(m2) + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m1=g1:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,ct,63,c) + g:Merge(m1) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c13455674.rmcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c13455674.rmfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c13455674.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ct=e:GetHandler():GetMaterialCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE+LOCATION_MZONE) and chkc:IsControler(1-tp) and c13455674.rmfilter(chkc) end + if chk==0 then return ct>0 and Duel.IsExistingTarget(c13455674.rmfilter,tp,0,LOCATION_GRAVE+LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c13455674.rmfilter,tp,0,LOCATION_GRAVE+LOCATION_MZONE,1,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c13455674.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end +end +function c13455674.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) and c:GetSummonType()==SUMMON_TYPE_SYNCHRO and bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c13455674.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c13455674.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and c13455674.spfilter(chkc,e,tp) and chkc~=e:GetHandler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c13455674.spfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c13455674.spfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c13455674.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c1347977.lua b/script/c1347977.lua index 3420f4ce..99277839 100644 --- a/script/c1347977.lua +++ b/script/c1347977.lua @@ -1,47 +1,47 @@ ---聖なる守り手 -function c1347977.initial_effect(c) - --todeck - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(1347977,0)) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c1347977.target) - e1:SetOperation(c1347977.activate) - c:RegisterEffect(e1) -end -function c1347977.filter1(c) - return c:IsFaceup() and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() -end -function c1347977.filter2(c) - return c:IsFaceup() and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c1347977.filter3(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c1347977.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g1=Duel.SelectTarget(tp,c1347977.filter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - if g1:GetCount()==0 then return end - Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,1,0,0) - if Duel.IsExistingMatchingCard(c1347977.filter3,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingTarget(c1347977.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,g1:GetFirst()) - and Duel.SelectYesNo(tp,aux.Stringid(1347977,1)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g2=Duel.SelectTarget(tp,c1347977.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g2,1,0,0) - end -end -function c1347977.activate(e,tp,eg,ep,ev,re,r,rp) - local ex,g1=Duel.GetOperationInfo(0,CATEGORY_TODECK) - local ex,g2=Duel.GetOperationInfo(0,CATEGORY_TOHAND) - local tc1=g1:GetFirst() - if tc1 and tc1:IsRelateToEffect(e) then - Duel.SendtoDeck(g1,nil,0,REASON_EFFECT) - end - if g2 and g2:GetFirst():IsRelateToEffect(e) then - Duel.SendtoHand(g2,nil,REASON_EFFECT) - end -end +--聖なる守り手 +function c1347977.initial_effect(c) + --todeck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(1347977,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c1347977.target) + e1:SetOperation(c1347977.activate) + c:RegisterEffect(e1) +end +function c1347977.filter1(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c1347977.filter2(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c1347977.filter3(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c1347977.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g1=Duel.SelectTarget(tp,c1347977.filter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + if g1:GetCount()==0 then return end + Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,1,0,0) + if Duel.IsExistingMatchingCard(c1347977.filter3,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c1347977.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,g1:GetFirst()) + and Duel.SelectYesNo(tp,aux.Stringid(1347977,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g2=Duel.SelectTarget(tp,c1347977.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g2,1,0,0) + end +end +function c1347977.activate(e,tp,eg,ep,ev,re,r,rp) + local ex,g1=Duel.GetOperationInfo(0,CATEGORY_TODECK) + local ex,g2=Duel.GetOperationInfo(0,CATEGORY_TOHAND) + local tc1=g1:GetFirst() + if tc1 and tc1:IsRelateToEffect(e) then + Duel.SendtoDeck(g1,nil,0,REASON_EFFECT) + end + if g2 and g2:GetFirst():IsRelateToEffect(e) then + Duel.SendtoHand(g2,nil,REASON_EFFECT) + end +end diff --git a/script/c13529466.lua b/script/c13529466.lua new file mode 100644 index 00000000..09bd99a9 --- /dev/null +++ b/script/c13529466.lua @@ -0,0 +1,93 @@ +--召喚獣カリギュラ +function c13529466.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,86120751,aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_DARK),1,true,true) + --activate limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c13529466.aclimit1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_CHAIN_NEGATED) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c13529466.aclimit2) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(1,0) + e3:SetCondition(c13529466.econ1) + e3:SetValue(c13529466.elimit) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetOperation(c13529466.aclimit3) + c:RegisterEffect(e4) + local e5=e2:Clone() + e5:SetOperation(c13529466.aclimit4) + c:RegisterEffect(e5) + local e6=e3:Clone() + e6:SetCondition(c13529466.econ2) + e6:SetTargetRange(0,1) + c:RegisterEffect(e6) + --attack limit + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e7:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e7:SetRange(LOCATION_MZONE) + e7:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e7:SetCondition(c13529466.atkcon) + e7:SetTarget(c13529466.atktg) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e8:SetCode(EVENT_ATTACK_ANNOUNCE) + e8:SetRange(LOCATION_MZONE) + e8:SetOperation(c13529466.checkop) + e8:SetLabelObject(e7) + c:RegisterEffect(e8) +end +function c13529466.aclimit1(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp or not re:IsActiveType(TYPE_MONSTER) then return end + e:GetHandler():RegisterFlagEffect(13529466,RESET_EVENT+0x3ff0000+RESET_PHASE+PHASE_END,0,1) +end +function c13529466.aclimit2(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp or not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + e:GetHandler():ResetFlagEffect(13529466) +end +function c13529466.econ1(e) + return e:GetHandler():GetFlagEffect(13529466)~=0 +end +function c13529466.aclimit3(e,tp,eg,ep,ev,re,r,rp) + if ep==tp or not re:IsActiveType(TYPE_MONSTER) then return end + e:GetHandler():RegisterFlagEffect(13529467,RESET_EVENT+0x3ff0000+RESET_PHASE+PHASE_END,0,1) +end +function c13529466.aclimit4(e,tp,eg,ep,ev,re,r,rp) + if ep==tp or not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + e:GetHandler():ResetFlagEffect(13529467) +end +function c13529466.econ2(e) + return e:GetHandler():GetFlagEffect(13529467)~=0 +end +function c13529466.elimit(e,re,tp) + return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end +function c13529466.atkcon(e) + return e:GetHandler():GetFlagEffect(13529468)~=0 +end +function c13529466.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() +end +function c13529466.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(13529468)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + e:GetHandler():RegisterFlagEffect(13529468,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end diff --git a/script/c13599884.lua b/script/c13599884.lua index 6e184c2e..0237c0f7 100644 --- a/script/c13599884.lua +++ b/script/c13599884.lua @@ -4,7 +4,7 @@ function c13599884.initial_effect(c) e1:SetDescription(aux.Stringid(13599884,0)) e1:SetCategory(CATEGORY_DESTROY) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCode(EVENT_BATTLED) e1:SetCondition(c13599884.condition) e1:SetOperation(c13599884.operation) c:RegisterEffect(e1) diff --git a/script/c13611090.lua b/script/c13611090.lua index acaf61e0..60ba31dc 100644 --- a/script/c13611090.lua +++ b/script/c13611090.lua @@ -1,56 +1,56 @@ ---マジェスペクター・ソニック -function c13611090.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - 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(c13611090.condition) - e1:SetTarget(c13611090.target) - e1:SetOperation(c13611090.activate) - c:RegisterEffect(e1) -end -function c13611090.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c13611090.filter(c) - return c:IsFaceup() and c:IsSetCard(0xd0) -end -function c13611090.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c13611090.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c13611090.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c13611090.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c13611090.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(tc:GetAttack()*2) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(tc:GetDefense()*2) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e3:SetCondition(c13611090.rdcon) - e3:SetOperation(c13611090.rdop) - tc:RegisterEffect(e3) - end -end -function c13611090.rdcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c13611090.rdop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev/2) -end +--マジェスペクター・ソニック +function c13611090.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + 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(c13611090.condition) + e1:SetTarget(c13611090.target) + e1:SetOperation(c13611090.activate) + c:RegisterEffect(e1) +end +function c13611090.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c13611090.filter(c) + return c:IsFaceup() and c:IsSetCard(0xd0) +end +function c13611090.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c13611090.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c13611090.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c13611090.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c13611090.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(tc:GetDefense()*2) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCondition(c13611090.rdcon) + e3:SetOperation(c13611090.rdop) + tc:RegisterEffect(e3) + end +end +function c13611090.rdcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c13611090.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end diff --git a/script/c13629812.lua b/script/c13629812.lua index b41b6414..e8ba4a0e 100644 --- a/script/c13629812.lua +++ b/script/c13629812.lua @@ -1,78 +1,78 @@ ---忍法 影縫いの術 -function c13629812.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetCost(c13629812.cost) - e1:SetTarget(c13629812.target) - e1:SetOperation(c13629812.operation) - c:RegisterEffect(e1) - --return - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(13629812,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetCondition(c13629812.retcon) - e2:SetOperation(c13629812.retop) - c:RegisterEffect(e2) -end -function c13629812.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x2b) end - local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x2b) - Duel.Release(g,REASON_COST) -end -function c13629812.filter(c) - return c:IsAbleToRemove() -end -function c13629812.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c13629812.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c13629812.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c13629812.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c13629812.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - local seq=tc:GetSequence() - if tc:IsControler(1-tp) then seq=seq+16 end - if tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then - c:SetCardTarget(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_DISABLE_FIELD) - e1:SetRange(LOCATION_SZONE) - e1:SetLabel(seq) - e1:SetCondition(c13629812.discon) - e1:SetOperation(c13629812.disop) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - end -end -function c13629812.discon(e) - return e:GetHandler():GetCardTargetCount()>0 -end -function c13629812.disop(e,tp) - return bit.lshift(0x1,e:GetLabel()) -end -function c13629812.retcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=c:GetFirstCardTarget() - if tc and tc:IsLocation(LOCATION_REMOVED) and not c:IsLocation(LOCATION_DECK) then - e:SetLabelObject(tc) - tc:CreateEffectRelation(e) - return true - else return false end -end -function c13629812.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=e:GetLabelObject() - if tc:IsRelateToEffect(e) then - Duel.ReturnToField(tc) - end -end +--忍法 影縫いの術 +function c13629812.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetCost(c13629812.cost) + e1:SetTarget(c13629812.target) + e1:SetOperation(c13629812.operation) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(13629812,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c13629812.retcon) + e2:SetOperation(c13629812.retop) + c:RegisterEffect(e2) +end +function c13629812.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x2b) end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x2b) + Duel.Release(g,REASON_COST) +end +function c13629812.filter(c) + return c:IsAbleToRemove() +end +function c13629812.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c13629812.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c13629812.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c13629812.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c13629812.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + local seq=tc:GetSequence() + if tc:IsControler(1-tp) then seq=seq+16 end + if tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetLabel(seq) + e1:SetCondition(c13629812.discon) + e1:SetOperation(c13629812.disop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c13629812.discon(e) + return e:GetHandler():GetCardTargetCount()>0 +end +function c13629812.disop(e,tp) + return bit.lshift(0x1,e:GetLabel()) +end +function c13629812.retcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_REMOVED) and not c:IsLocation(LOCATION_DECK) then + e:SetLabelObject(tc) + tc:CreateEffectRelation(e) + return true + else return false end +end +function c13629812.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + if tc:IsRelateToEffect(e) then + Duel.ReturnToField(tc) + end +end diff --git a/script/c1372887.lua b/script/c1372887.lua index 0dc00aa1..0c6ff966 100644 --- a/script/c1372887.lua +++ b/script/c1372887.lua @@ -1,61 +1,61 @@ ---相乗り -function c1372887.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,1372887+EFFECT_COUNT_CODE_OATH) - e1:SetOperation(c1372887.activate) - c:RegisterEffect(e1) -end -function c1372887.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_HAND) - e1:SetCondition(c1372887.drcon1) - e1:SetOperation(c1372887.drop1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_TO_HAND) - e2:SetCondition(c1372887.regcon) - e2:SetOperation(c1372887.regop) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetCode(EVENT_CHAIN_SOLVED) - e3:SetCondition(c1372887.drcon2) - e3:SetOperation(c1372887.drop2) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) -end -function c1372887.cfilter(c,tp) - return c:IsControler(1-tp) and not c:IsReason(REASON_DRAW) and c:IsPreviousLocation(LOCATION_DECK+LOCATION_GRAVE) -end -function c1372887.drcon1(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c1372887.cfilter,1,nil,tp) - and (not re:IsHasType(EFFECT_TYPE_ACTIONS) or re:IsHasType(EFFECT_TYPE_CONTINUOUS)) -end -function c1372887.drop1(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,1372887) - Duel.Draw(tp,1,REASON_EFFECT) -end -function c1372887.regcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c1372887.cfilter,1,nil,tp) and Duel.GetFlagEffect(tp,1372887)==0 - and re:IsHasType(EFFECT_TYPE_ACTIONS) and not re:IsHasType(EFFECT_TYPE_CONTINUOUS) -end -function c1372887.regop(e,tp,eg,ep,ev,re,r,rp) - Duel.RegisterFlagEffect(tp,1372887,RESET_CHAIN,0,1) -end -function c1372887.drcon2(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFlagEffect(tp,1372887)>0 -end -function c1372887.drop2(e,tp,eg,ep,ev,re,r,rp) - Duel.ResetFlagEffect(tp,1372887) - Duel.Hint(HINT_CARD,0,1372887) - Duel.Draw(tp,1,REASON_EFFECT) -end +--相乗り +function c1372887.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,1372887+EFFECT_COUNT_CODE_OATH) + e1:SetOperation(c1372887.activate) + c:RegisterEffect(e1) +end +function c1372887.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c1372887.drcon1) + e1:SetOperation(c1372887.drop1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_TO_HAND) + e2:SetCondition(c1372887.regcon) + e2:SetOperation(c1372887.regop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_CHAIN_SOLVED) + e3:SetCondition(c1372887.drcon2) + e3:SetOperation(c1372887.drop2) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c1372887.cfilter(c,tp) + return c:IsControler(1-tp) and not c:IsReason(REASON_DRAW) and c:IsPreviousLocation(LOCATION_DECK+LOCATION_GRAVE) +end +function c1372887.drcon1(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c1372887.cfilter,1,nil,tp) + and (not re:IsHasType(EFFECT_TYPE_ACTIONS) or re:IsHasType(EFFECT_TYPE_CONTINUOUS)) +end +function c1372887.drop1(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,1372887) + Duel.Draw(tp,1,REASON_EFFECT) +end +function c1372887.regcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c1372887.cfilter,1,nil,tp) and Duel.GetFlagEffect(tp,1372887)==0 + and re:IsHasType(EFFECT_TYPE_ACTIONS) and not re:IsHasType(EFFECT_TYPE_CONTINUOUS) +end +function c1372887.regop(e,tp,eg,ep,ev,re,r,rp) + Duel.RegisterFlagEffect(tp,1372887,RESET_CHAIN,0,1) +end +function c1372887.drcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,1372887)>0 +end +function c1372887.drop2(e,tp,eg,ep,ev,re,r,rp) + Duel.ResetFlagEffect(tp,1372887) + Duel.Hint(HINT_CARD,0,1372887) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c13756293.lua b/script/c13756293.lua index e7a0c93d..de5c61ce 100644 --- a/script/c13756293.lua +++ b/script/c13756293.lua @@ -1,42 +1,42 @@ ---竜魔人 キングドラグーン -function c13756293.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,17985575,62113340,true,true) - --cannot be target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DRAGON)) - e1:SetValue(aux.tgoval) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(13756293,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c13756293.sptg) - e2:SetOperation(c13756293.spop) - c:RegisterEffect(e2) -end -function c13756293.filter(c,e,tp) - return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c13756293.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c13756293.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c13756293.spop(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,c13756293.filter,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 c13756293.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,17985575,62113340,true,true) + --cannot be target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DRAGON)) + e1:SetValue(aux.tgoval) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(13756293,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c13756293.sptg) + e2:SetOperation(c13756293.spop) + c:RegisterEffect(e2) +end +function c13756293.filter(c,e,tp) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c13756293.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c13756293.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c13756293.spop(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,c13756293.filter,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 diff --git a/script/c13758665.lua b/script/c13758665.lua new file mode 100644 index 00000000..6204c47c --- /dev/null +++ b/script/c13758665.lua @@ -0,0 +1,32 @@ +--魔術師の左手 +--Magician's Left Hand +--Script by nekrozar +function c13758665.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c13758665.negcon) + e2:SetOperation(c13758665.negop) + c:RegisterEffect(e2) +end +function c13758665.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c13758665.negcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c13758665.cfilter,tp,LOCATION_MZONE,0,1,nil) + and rp~=tp and re:IsActiveType(TYPE_TRAP) and Duel.IsChainDisablable(ev) +end +function c13758665.negop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end +end diff --git a/script/c13764881.lua b/script/c13764881.lua index 69a8493e..0579acd5 100644 --- a/script/c13764881.lua +++ b/script/c13764881.lua @@ -1,35 +1,35 @@ ---チェーン・リゾネーター -function c13764881.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(13764881,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCondition(c13764881.spcon) - e1:SetTarget(c13764881.sptg) - e1:SetOperation(c13764881.spop) - c:RegisterEffect(e1) -end -function c13764881.cfilter(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) -end -function c13764881.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c13764881.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) -end -function c13764881.filter(c,e,tp) - return c:IsSetCard(0x57) and not c:IsCode(13764881) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c13764881.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c13764881.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c13764881.spop(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,c13764881.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--チェーン・リゾネーター +function c13764881.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(13764881,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c13764881.spcon) + e1:SetTarget(c13764881.sptg) + e1:SetOperation(c13764881.spop) + c:RegisterEffect(e1) +end +function c13764881.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c13764881.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c13764881.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c13764881.filter(c,e,tp) + return c:IsSetCard(0x57) and not c:IsCode(13764881) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c13764881.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c13764881.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c13764881.spop(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,c13764881.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c13803864.lua b/script/c13803864.lua index 150bdf26..7cec5565 100644 --- a/script/c13803864.lua +++ b/script/c13803864.lua @@ -35,7 +35,8 @@ end function c13803864.spop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local tg=Duel.GetMatchingGroup(c13803864.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) - if ft<=0 or tg:GetCount()==0 or (ft>1 and tg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if ft<=0 or tg:GetCount()==0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=tg:Select(tp,ft,ft,nil) if g:GetCount()>0 then diff --git a/script/c13893596.lua b/script/c13893596.lua index 0e976161..6e45dc4d 100644 --- a/script/c13893596.lua +++ b/script/c13893596.lua @@ -1,99 +1,99 @@ ---究極封印神エクゾディオス -function c13893596.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c13893596.spcon) - e2:SetOperation(c13893596.spop) - c:RegisterEffect(e2) - --to grave - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(13893596,0)) - e3:SetCategory(CATEGORY_TOGRAVE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetTarget(c13893596.tgtg) - e3:SetOperation(c13893596.tgop) - c:RegisterEffect(e3) - --atkup - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_UPDATE_ATTACK) - e4:SetValue(c13893596.atkval) - c:RegisterEffect(e4) - --redirect - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e5:SetCondition(c13893596.recon) - e5:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e5) - --win - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e6:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) - e6:SetCode(EVENT_TO_GRAVE) - e6:SetRange(LOCATION_MZONE) - e6:SetOperation(c13893596.winop) - c:RegisterEffect(e6) -end -function c13893596.cfilter(c) - return not c:IsAbleToDeckOrExtraAsCost() -end -function c13893596.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 - and not g:IsExists(c13893596.cfilter,1,nil) -end -function c13893596.spop(e,tp,eg,ep,ev,re,r,rp,c) - local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c13893596.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c13893596.tgfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() -end -function c13893596.filter(c,rc) - return c:IsRelateToCard(rc) and c:IsSetCard(0x40) and c:IsType(TYPE_MONSTER) -end -function c13893596.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local c=e:GetHandler() - local g=Duel.SelectMatchingCard(tp,c13893596.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) - local tc=g:GetFirst() - if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) - and c:IsRelateToEffect(e) and c:IsFaceup() then - tc:CreateRelation(c,RESET_EVENT+0x1fe0000) - end -end -function c13893596.atkval(e,c) - return Duel.GetMatchingGroupCount(Card.IsType,c:GetControler(),LOCATION_GRAVE,0,nil,TYPE_NORMAL)*1000 -end -function c13893596.recon(e) - return e:GetHandler():IsFaceup() -end -function c13893596.winop(e,tp,eg,ep,ev,re,r,rp) - local WIN_REASON_EXODIUS = 0x14 - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c13893596.filter,tp,LOCATION_GRAVE,0,nil,c) - if g:GetClassCount(Card.GetCode)==5 then - Duel.Win(tp,WIN_REASON_EXODIUS) - end -end +--究極封印神エクゾディオス +function c13893596.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c13893596.spcon) + e2:SetOperation(c13893596.spop) + c:RegisterEffect(e2) + --to grave + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(13893596,0)) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetTarget(c13893596.tgtg) + e3:SetOperation(c13893596.tgop) + c:RegisterEffect(e3) + --atkup + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetValue(c13893596.atkval) + c:RegisterEffect(e4) + --redirect + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e5:SetCondition(c13893596.recon) + e5:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e5) + --win + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_DELAY) + e6:SetCode(EVENT_TO_GRAVE) + e6:SetRange(LOCATION_MZONE) + e6:SetOperation(c13893596.winop) + c:RegisterEffect(e6) +end +function c13893596.cfilter(c) + return not c:IsAbleToDeckOrExtraAsCost() +end +function c13893596.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 + and not g:IsExists(c13893596.cfilter,1,nil) +end +function c13893596.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c13893596.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c13893596.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c13893596.filter(c,rc) + return c:IsRelateToCard(rc) and c:IsSetCard(0x40) and c:IsType(TYPE_MONSTER) +end +function c13893596.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local c=e:GetHandler() + local g=Duel.SelectMatchingCard(tp,c13893596.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) + and c:IsRelateToEffect(e) and c:IsFaceup() then + tc:CreateRelation(c,RESET_EVENT+0x1fe0000) + end +end +function c13893596.atkval(e,c) + return Duel.GetMatchingGroupCount(Card.IsType,c:GetControler(),LOCATION_GRAVE,0,nil,TYPE_NORMAL)*1000 +end +function c13893596.recon(e) + return e:GetHandler():IsFaceup() +end +function c13893596.winop(e,tp,eg,ep,ev,re,r,rp) + local WIN_REASON_EXODIUS = 0x14 + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c13893596.filter,tp,LOCATION_GRAVE,0,nil,c) + if g:GetClassCount(Card.GetCode)==5 then + Duel.Win(tp,WIN_REASON_EXODIUS) + end +end diff --git a/script/c13945283.lua b/script/c13945283.lua index 32e2aefb..d24557d0 100644 --- a/script/c13945283.lua +++ b/script/c13945283.lua @@ -1,25 +1,25 @@ ---幻影の壁 -function c13945283.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(13945283,0)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLED) - e1:SetCondition(c13945283.condition) - e1:SetTarget(c13945283.target) - e1:SetOperation(c13945283.operation) - c:RegisterEffect(e1) -end -function c13945283.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttackTarget()==e:GetHandler() and not Duel.GetAttacker():IsStatus(STATUS_BATTLE_DESTROYED) -end -function c13945283.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,Duel.GetAttacker(),1,0,0) -end -function c13945283.operation(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - if not a:IsRelateToBattle() then return end - Duel.SendtoHand(a,nil,REASON_EFFECT) -end +--幻影の壁 +function c13945283.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(13945283,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c13945283.condition) + e1:SetTarget(c13945283.target) + e1:SetOperation(c13945283.operation) + c:RegisterEffect(e1) +end +function c13945283.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==e:GetHandler() and not Duel.GetAttacker():IsStatus(STATUS_BATTLE_DESTROYED) +end +function c13945283.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,Duel.GetAttacker(),1,0,0) +end +function c13945283.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsRelateToBattle() then return end + Duel.SendtoHand(a,nil,REASON_EFFECT) +end diff --git a/script/c13955608.lua b/script/c13955608.lua index e81810a6..8af017a8 100644 --- a/script/c13955608.lua +++ b/script/c13955608.lua @@ -1,51 +1,45 @@ ---機動砦 ストロング・ホールド -function c13955608.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c13955608.target) - e1:SetOperation(c13955608.activate) - c:RegisterEffect(e1) -end -function c13955608.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,13955608,0,0x21,0,2000,4,RACE_MACHINE,ATTRIBUTE_EARTH) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c13955608.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,13955608,0,0x21,0,2000,4,RACE_MACHINE,ATTRIBUTE_EARTH) then return end - c:AddMonsterAttribute(TYPE_TRAP+TYPE_EFFECT) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) - c:AddMonsterAttributeComplete() - --update attack - 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:SetValue(3000) - e1:SetCondition(c13955608.atkcon) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1,true) - Duel.SpecialSummonComplete() -end -function c13955608.atkcon(e) - local con=0 - for i=0,4 do - local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_MZONE,i) - if tc and tc:IsFaceup() then - local code=tc:GetCode() - if code==13839120 then con=bit.bor(con,1) - elseif code==86445415 then con=bit.bor(con,2) - elseif code==41172955 then con=bit.bor(con,4) - end - if con==7 then return true end - end - end - return false -end +--機動砦 ストロング・ホールド +function c13955608.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c13955608.target) + e1:SetOperation(c13955608.activate) + c:RegisterEffect(e1) +end +function c13955608.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,13955608,0,0x21,0,2000,4,RACE_MACHINE,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c13955608.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,13955608,0,0x21,0,2000,4,RACE_MACHINE,ATTRIBUTE_EARTH) then return end + c:AddMonsterAttribute(TYPE_TRAP+TYPE_EFFECT) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + --update attack + 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:SetValue(3000) + e1:SetCondition(c13955608.atkcon) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() +end +function c13955608.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c13955608.atkcon(e) + local tp=e:GetHandlerPlayer() + return Duel.IsExistingMatchingCard(c13955608.cfilter,tp,LOCATION_ONFIELD,0,1,nil,41172955) + and Duel.IsExistingMatchingCard(c13955608.cfilter,tp,LOCATION_ONFIELD,0,1,nil,86445415) + and Duel.IsExistingMatchingCard(c13955608.cfilter,tp,LOCATION_ONFIELD,0,1,nil,13839120) +end diff --git a/script/c13959634.lua b/script/c13959634.lua index 2e13bba5..5316c48f 100644 --- a/script/c13959634.lua +++ b/script/c13959634.lua @@ -1,67 +1,67 @@ ---氷霊神ムーラングレイス -function c13959634.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c13959634.spcon) - c:RegisterEffect(e2) - --handes - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(13959634,0)) - e3:SetCategory(CATEGORY_HANDES) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCountLimit(1,13959634) - e3:SetTarget(c13959634.hdtg) - e3:SetOperation(c13959634.hdop) - c:RegisterEffect(e3) - --leave - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_LEAVE_FIELD_P) - e4:SetOperation(c13959634.leaveop) - c:RegisterEffect(e4) -end -function c13959634.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and - Duel.GetMatchingGroupCount(Card.IsAttribute,c:GetControler(),LOCATION_GRAVE,0,nil,ATTRIBUTE_WATER)==5 -end -function c13959634.hdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,2) -end -function c13959634.hdop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND):RandomSelect(tp,2) - Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) -end -function c13959634.leaveop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsFacedown() then return end - local effp=e:GetHandler():GetControler() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SKIP_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - if Duel.GetTurnPlayer()==effp then - e1:SetLabel(Duel.GetTurnCount()) - e1:SetCondition(c13959634.skipcon) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) - end - Duel.RegisterEffect(e1,effp) -end -function c13959634.skipcon(e) - return Duel.GetTurnCount()~=e:GetLabel() -end +--氷霊神ムーラングレイス +function c13959634.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c13959634.spcon) + c:RegisterEffect(e2) + --handes + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(13959634,0)) + e3:SetCategory(CATEGORY_HANDES) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCountLimit(1,13959634) + e3:SetTarget(c13959634.hdtg) + e3:SetOperation(c13959634.hdop) + c:RegisterEffect(e3) + --leave + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD_P) + e4:SetOperation(c13959634.leaveop) + c:RegisterEffect(e4) +end +function c13959634.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.GetMatchingGroupCount(Card.IsAttribute,c:GetControler(),LOCATION_GRAVE,0,nil,ATTRIBUTE_WATER)==5 +end +function c13959634.hdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,2) +end +function c13959634.hdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND):RandomSelect(tp,2) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) +end +function c13959634.leaveop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsFacedown() then return end + local effp=e:GetHandler():GetControler() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + if Duel.GetTurnPlayer()==effp then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c13959634.skipcon) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + end + Duel.RegisterEffect(e1,effp) +end +function c13959634.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c13972452.lua b/script/c13972452.lua index cb3f72bc..fdd0b3bb 100644 --- a/script/c13972452.lua +++ b/script/c13972452.lua @@ -1,34 +1,34 @@ ---マジェスペクター・ストーム -function c13972452.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c13972452.cost) - e1:SetTarget(c13972452.target) - e1:SetOperation(c13972452.activate) - c:RegisterEffect(e1) -end -function c13972452.cfilter(c) - return c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_WIND) -end -function c13972452.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c13972452.cfilter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c13972452.cfilter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c13972452.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToDeck() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) -end -function c13972452.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end -end +--マジェスペクター・ストーム +function c13972452.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c13972452.cost) + e1:SetTarget(c13972452.target) + e1:SetOperation(c13972452.activate) + c:RegisterEffect(e1) +end +function c13972452.cfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_WIND) +end +function c13972452.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c13972452.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c13972452.cfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c13972452.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToDeck() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c13972452.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end +end diff --git a/script/c140000075.lua b/script/c140000075.lua new file mode 100644 index 00000000..01fe4b4e --- /dev/null +++ b/script/c140000075.lua @@ -0,0 +1,42 @@ +--Adamantine Sword Revival +function c140000075.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c140000075.condition) + e1:SetCost(c140000075.cost) + e1:SetTarget(c140000075.target) + e1:SetOperation(c140000075.activate) + c:RegisterEffect(e1) +end +function c140000075.cfilter(c,tp) + return c:IsRace(RACE_DRAGON) and c:IsPreviousLocation(LOCATION_GRAVE) +end +function c140000075.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c140000075.cfilter,nil) + return g:GetCount()==1 +end +function c140000075.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:Filter(c140000075.cfilter,nil):GetFirst() + if chk==0 then return tc:IsReleasable() end + Duel.SetTargetCard(tc) + Duel.Release(tc,REASON_COST) +end +function c140000075.filter(c,e,tp) + return c:IsCode(140000076) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c140000075.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c140000075.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c140000075.activate(e,tp,eg,ep,ev,re,r,rp) + local cc=Duel.GetFirstTarget() + if Duel.GetLocationCount(cc:GetPreviousControler(),LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c140000075.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,cc:GetPreviousControler(),true,false,POS_FACEUP_ATTACK)>0 then + Duel.RaiseSingleEvent(tc,140000075,e,REASON_EFFECT,tp,tp,cc:GetPreviousAttackOnField()) + end +end diff --git a/script/c140000076.lua b/script/c140000076.lua new file mode 100644 index 00000000..3048cf72 --- /dev/null +++ b/script/c140000076.lua @@ -0,0 +1,29 @@ +--Diamond Head Dragon +function c140000076.initial_effect(c) + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(140000075) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c140000076.atkop) + c:RegisterEffect(e2) +end +function c140000076.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(ev+1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end diff --git a/script/c140000082.lua b/script/c140000082.lua new file mode 100644 index 00000000..980df40d --- /dev/null +++ b/script/c140000082.lua @@ -0,0 +1,33 @@ +--Sky Union +function c140000082.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c140000082.cost) + e1:SetTarget(c140000082.target) + e1:SetOperation(c140000082.activate) + c:RegisterEffect(e1) +end +function c140000082.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,3,nil) end + local rg=Duel.SelectReleaseGroup(tp,nil,3,3,nil) + Duel.Release(rg,REASON_COST) +end +function c140000082.filter(c,e,tp) + return c:IsCode(140000083) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c140000082.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c140000082.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c140000082.activate(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 tc=Duel.SelectMatchingCard(tp,c140000082.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) then + tc:CompleteProcedure() + end +end diff --git a/script/c140000083.lua b/script/c140000083.lua new file mode 100644 index 00000000..d8d08772 --- /dev/null +++ b/script/c140000083.lua @@ -0,0 +1,62 @@ +--Air Fortress Ziggurat +function c140000083.initial_effect(c) + c:EnableReviveLimit() + --spsummon limit + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --immunity + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c140000083.efilter) + c:RegisterEffect(e2) + --Tokens + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetProperty(EFFECT_FLAG_REPEAT) + e3:SetCondition(c140000083.spcon) + e3:SetTarget(c140000083.sptg) + e3:SetOperation(c140000083.spop) + c:RegisterEffect(e3) + --atk limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetCondition(c140000083.atcon) + e4:SetValue(c140000083.atlimit) + c:RegisterEffect(e4) +end +function c140000083.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c140000083.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c140000083.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c140000083.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,140000085,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_WIND) then return end + local token=Duel.CreateToken(tp,140000085) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) +end +function c140000083.atcon(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,140000085) +end +function c140000083.atlimit(e,c) + return c:GetCode()~=140000085 +end diff --git a/script/c140000122.lua b/script/c140000122.lua new file mode 100644 index 00000000..82641fbf --- /dev/null +++ b/script/c140000122.lua @@ -0,0 +1,35 @@ +--Maytr Curse +function c140000122.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c140000122.condition) + e1:SetTarget(c140000122.target) + e1:SetOperation(c140000122.activate) + c:RegisterEffect(e1) +end +function c140000122.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c140000122.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local g=eg:Filter(c140000122.cfilter,nil,tp) + return g:GetCount()==1 +end +function c140000122.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) +end +function c140000122.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc1=tg:GetFirst() + local tc2=tg:GetNext() + if not tc1 or not tc1:IsRelateToEffect(e) or not tc2 or not tc2:IsRelateToEffect(e) then return end + if tc1:IsControler(tp) then tc2,tc1=tc1,tc2 end + Duel.CalculateDamage(tc1,tc2) +end diff --git a/script/c140000131.lua b/script/c140000131.lua new file mode 100644 index 00000000..5c696fa0 --- /dev/null +++ b/script/c140000131.lua @@ -0,0 +1,113 @@ +--Time Magic Hammer +function c140000131.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,71625222,46232525,1,true,true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e2) + --Future Swing + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetLabel(-1) + e1:SetCondition(c140000131.con) + e1:SetOperation(c140000131.act) + c:RegisterEffect(e1) + --Activate + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_ACTIVATE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetTarget(c140000131.target) + e3:SetOperation(c140000131.operation) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) + --Future Released + local de=Effect.CreateEffect(c) + de:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + de:SetCode(EVENT_LEAVE_FIELD) + de:SetOperation(c140000131.desop) + c:RegisterEffect(de) +end +function c140000131.hermos_filter(c) + return c:IsCode(71625222) +end +function c140000131.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 c140000131.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsLocation(LOCATION_SZONE) and tc:IsLocation(LOCATION_MZONE) then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c140000131.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c140000131.filter(c,rc) + return rc:GetCardTarget():IsContains(c) and c:GetFlagEffect(140000131)>0 +end +function c140000131.act(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==-1 then + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + Duel.Remove(g,0,REASON_EFFECT+REASON_TEMPORARY) + local tg=Duel.GetOperatedGroup() + e:SetLabel(tg:GetCount()) + local tc=tg:GetFirst() + while tc do + tc:RegisterFlagEffect(140000131,RESET_EVENT+0x1fe0000,0,1) + c:SetCardTarget(tc) + tc=tg:GetNext() + end + elseif e:GetLabel()>0 then + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 then + local g=Duel.GetMatchingGroup(c140000131.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil,c) + local sg=g:Select(1-tp,1,1,nil) + local tc=sg:GetFirst() + if tc and tc:IsLocation(LOCATION_REMOVED) then + Duel.ReturnToField(tc) + e:SetLabel(e:GetLabel()-1) + end + end + end +end +function c140000131.desop(e,tp,eg,ep,ev,re,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c140000131.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil,c) + if g:GetCount()>0 then + if g:GetCount()>Duel.GetLocationCount(1-tp,LOCATION_MZONE) then + local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + local sg=g:Select(1-tp,ft,ft,nil) + local tc=sg:GetFirst() + while tc do + Duel.ReturnToField(tc) + tc=sg:GetNext() + end + else + local tc=g:GetFirst() + while tc do + Duel.ReturnToField(tc) + tc=g:GetNext() + end + end + end +end \ No newline at end of file diff --git a/script/c14001430.lua b/script/c14001430.lua index ec23d3d7..da868781 100644 --- a/script/c14001430.lua +++ b/script/c14001430.lua @@ -1,97 +1,97 @@ ---マドルチェ・シャトー -function c14001430.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c14001430.target) - e1:SetOperation(c14001430.activate) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x71)) - e2:SetValue(500) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetRange(LOCATION_FZONE) - e4:SetCode(EFFECT_SEND_REPLACE) - e4:SetTarget(c14001430.reptg) - e4:SetValue(c14001430.repval) - c:RegisterEffect(e4) -end -function c14001430.tdfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x71) and c:IsAbleToDeck() -end -function c14001430.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c14001430.tdfilter,tp,LOCATION_GRAVE,0,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c14001430.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(c14001430.tdfilter,tp,LOCATION_GRAVE,0,nil) - if g:GetCount()>0 then - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - end -end -function c14001430.repfilter(c,tp) - return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and c:GetDestination()==LOCATION_DECK and c:IsType(TYPE_MONSTER) - and c:IsAbleToHand() -end -function c14001430.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return bit.band(r,REASON_EFFECT)~=0 and re and re:IsActiveType(TYPE_MONSTER) - and re:GetHandler():IsSetCard(0x71) and eg:IsExists(c14001430.repfilter,1,nil,tp) end - if Duel.SelectYesNo(tp,aux.Stringid(14001430,0)) then - local g=eg:Filter(c14001430.repfilter,nil,tp) - local ct=g:GetCount() - if ct>1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - g=g:Select(tp,1,ct,nil) - end - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_TO_DECK_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(LOCATION_HAND) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc:RegisterFlagEffect(14001430,RESET_EVENT+0x1de0000+RESET_PHASE+PHASE_END,0,1) - tc=g:GetNext() - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetCode(EVENT_TO_HAND) - e1:SetCountLimit(1) - e1:SetCondition(c14001430.thcon) - e1:SetOperation(c14001430.thop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - return true - else return false end -end -function c14001430.repval(e,c) - return false -end -function c14001430.thfilter(c) - return c:GetFlagEffect(14001430)~=0 -end -function c14001430.thcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c14001430.thfilter,1,nil) -end -function c14001430.thop(e,tp,eg,ep,ev,re,r,rp) - local g=eg:Filter(c14001430.thfilter,nil) - Duel.ConfirmCards(1-tp,g) - Duel.ShuffleHand(tp) -end +--マドルチェ・シャトー +function c14001430.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c14001430.target) + e1:SetOperation(c14001430.activate) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x71)) + e2:SetValue(500) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(EFFECT_SEND_REPLACE) + e4:SetTarget(c14001430.reptg) + e4:SetValue(c14001430.repval) + c:RegisterEffect(e4) +end +function c14001430.tdfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x71) and c:IsAbleToDeck() +end +function c14001430.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c14001430.tdfilter,tp,LOCATION_GRAVE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c14001430.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c14001430.tdfilter,tp,LOCATION_GRAVE,0,nil) + if g:GetCount()>0 then + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + end +end +function c14001430.repfilter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and c:GetDestination()==LOCATION_DECK and c:IsType(TYPE_MONSTER) + and c:IsAbleToHand() +end +function c14001430.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return bit.band(r,REASON_EFFECT)~=0 and re and re:IsActiveType(TYPE_MONSTER) + and re:GetHandler():IsSetCard(0x71) and eg:IsExists(c14001430.repfilter,1,nil,tp) end + if Duel.SelectYesNo(tp,aux.Stringid(14001430,0)) then + local g=eg:Filter(c14001430.repfilter,nil,tp) + local ct=g:GetCount() + if ct>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + g=g:Select(tp,1,ct,nil) + end + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TO_DECK_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(LOCATION_HAND) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(14001430,RESET_EVENT+0x1de0000+RESET_PHASE+PHASE_END,0,1) + tc=g:GetNext() + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_TO_HAND) + e1:SetCountLimit(1) + e1:SetCondition(c14001430.thcon) + e1:SetOperation(c14001430.thop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + return true + else return false end +end +function c14001430.repval(e,c) + return false +end +function c14001430.thfilter(c) + return c:GetFlagEffect(14001430)~=0 +end +function c14001430.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c14001430.thfilter,1,nil) +end +function c14001430.thop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c14001430.thfilter,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) +end diff --git a/script/c14017402.lua b/script/c14017402.lua index 13d15750..a2159466 100644 --- a/script/c14017402.lua +++ b/script/c14017402.lua @@ -1,73 +1,73 @@ ---波動竜騎士 ドラゴエクィテス -function c14017402.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,c14017402.ffilter,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),true) - --copy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(14017402,0)) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c14017402.target) - e2:SetOperation(c14017402.operation) - c:RegisterEffect(e2) - --reflect damage - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_REFLECT_DAMAGE) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,0) - e3:SetValue(c14017402.refcon) - c:RegisterEffect(e3) - --spsummon condition - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EFFECT_SPSUMMON_CONDITION) - e4:SetValue(c14017402.splimit) - c:RegisterEffect(e4) -end -c14017402.miracle_synchro_fusion=true -function c14017402.splimit(e,se,sp,st) - if e:GetHandler():IsLocation(LOCATION_EXTRA) then - return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION - end - return true -end -function c14017402.refcon(e,re,val,r,rp,rc) - return bit.band(r,REASON_EFFECT)~=0 and rp~=e:GetHandler():GetControler() and e:GetHandler():IsAttackPos() -end -function c14017402.ffilter(c) - return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) -end -function c14017402.cpfilter(c) - return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemove() -end -function c14017402.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_GRAVE and c14017402.cpfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c14017402.cpfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c14017402.cpfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c14017402.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then - if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=1 then return end - local code=tc:GetOriginalCode() - local reset_flag=RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END - c:CopyEffect(code, reset_flag, 1) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(reset_flag) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - c:RegisterEffect(e1) - end -end +--波動竜騎士 ドラゴエクィテス +function c14017402.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c14017402.ffilter,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),true) + --copy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(14017402,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c14017402.target) + e2:SetOperation(c14017402.operation) + c:RegisterEffect(e2) + --reflect damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_REFLECT_DAMAGE) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetValue(c14017402.refcon) + c:RegisterEffect(e3) + --spsummon condition + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_SPSUMMON_CONDITION) + e4:SetValue(c14017402.splimit) + c:RegisterEffect(e4) +end +c14017402.miracle_synchro_fusion=true +function c14017402.splimit(e,se,sp,st) + if e:GetHandler():IsLocation(LOCATION_EXTRA) then + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION + end + return true +end +function c14017402.refcon(e,re,val,r,rp,rc) + return bit.band(r,REASON_EFFECT)~=0 and rp~=e:GetHandler():GetControler() and e:GetHandler():IsAttackPos() +end +function c14017402.ffilter(c) + return c:IsRace(RACE_DRAGON) and c:IsFusionType(TYPE_SYNCHRO) +end +function c14017402.cpfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemove() +end +function c14017402.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and c14017402.cpfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c14017402.cpfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c14017402.cpfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c14017402.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then + if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=1 then return end + local code=tc:GetOriginalCode() + local reset_flag=RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END + c:CopyEffect(code, reset_flag, 1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(reset_flag) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + end +end diff --git a/script/c14047624.lua b/script/c14047624.lua index d7822839..9753290a 100644 --- a/script/c14047624.lua +++ b/script/c14047624.lua @@ -1,46 +1,46 @@ ---ラヴァルロード・ジャッジメント -function c14047624.initial_effect(c) - --damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(14047624,0)) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c14047624.damcost) - e1:SetTarget(c14047624.damtg) - e1:SetOperation(c14047624.damop) - c:RegisterEffect(e1) -end -function c14047624.cfilter(c) - return c:IsSetCard(0x39) and c:IsAbleToRemoveAsCost() -end -function c14047624.cfilter2(c) - return c:IsCode(14047624) and c:GetAttackAnnouncedCount()>0 -end -function c14047624.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c14047624.cfilter,tp,LOCATION_GRAVE,0,1,nil) - and not Duel.IsExistingMatchingCard(c14047624.cfilter2,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c14047624.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetProperty(EFFECT_FLAG_OATH) - e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,14047624)) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c14047624.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) -end -function c14047624.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--ラヴァルロード・ジャッジメント +function c14047624.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14047624,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c14047624.damcost) + e1:SetTarget(c14047624.damtg) + e1:SetOperation(c14047624.damop) + c:RegisterEffect(e1) +end +function c14047624.cfilter(c) + return c:IsSetCard(0x39) and c:IsAbleToRemoveAsCost() +end +function c14047624.cfilter2(c) + return c:IsCode(14047624) and c:GetAttackAnnouncedCount()>0 +end +function c14047624.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c14047624.cfilter,tp,LOCATION_GRAVE,0,1,nil) + and not Duel.IsExistingMatchingCard(c14047624.cfilter2,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c14047624.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,14047624)) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c14047624.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c14047624.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c14057297.lua b/script/c14057297.lua index 46136f3a..2dc79a5c 100644 --- a/script/c14057297.lua +++ b/script/c14057297.lua @@ -1,49 +1,49 @@ ---死なばもろとも -function c14057297.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,14057297+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c14057297.condition) - e1:SetTarget(c14057297.target) - e1:SetOperation(c14057297.activate) - c:RegisterEffect(e1) -end -function c14057297.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>=3 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>=3 -end -function c14057297.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,5) and Duel.IsPlayerCanDraw(1-tp,5) end - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,LOCATION_HAND) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,5) -end -function c14057297.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFieldGroupCount(tp,LOCATION_HAND,LOCATION_HAND)==0 then return end - local p=tp - local st=0 - for i=1,2 do - local sg=Duel.GetFieldGroup(p,LOCATION_HAND,0) - Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) - local og=Duel.GetOperatedGroup() - local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK) - if ct>0 then - st=st+ct - Duel.SortDecktop(p,p,ct) - for j=1,ct do - local mg=Duel.GetDecktopGroup(p,1) - Duel.MoveSequence(mg:GetFirst(),1) - end - end - p=1-p - end - local lp=Duel.GetLP(tp) - Duel.SetLP(tp,lp-st*300) - if Duel.GetLP(tp)>0 then - Duel.BreakEffect() - Duel.Draw(tp,5,REASON_EFFECT) - Duel.Draw(1-tp,5,REASON_EFFECT) - end -end +--死なばもろとも +function c14057297.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,14057297+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c14057297.condition) + e1:SetTarget(c14057297.target) + e1:SetOperation(c14057297.activate) + c:RegisterEffect(e1) +end +function c14057297.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>=3 and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>=3 +end +function c14057297.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,5) and Duel.IsPlayerCanDraw(1-tp,5) end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,5) +end +function c14057297.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_HAND,LOCATION_HAND)==0 then return end + local p=tp + local st=0 + for i=1,2 do + local sg=Duel.GetFieldGroup(p,LOCATION_HAND,0) + Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK) + if ct>0 then + st=st+ct + Duel.SortDecktop(p,p,ct) + for j=1,ct do + local mg=Duel.GetDecktopGroup(p,1) + Duel.MoveSequence(mg:GetFirst(),1) + end + end + p=1-p + end + local lp=Duel.GetLP(tp) + Duel.SetLP(tp,lp-st*300) + if Duel.GetLP(tp)>0 then + Duel.BreakEffect() + Duel.Draw(tp,5,REASON_EFFECT) + Duel.Draw(1-tp,5,REASON_EFFECT) + end +end diff --git a/script/c14094090.lua b/script/c14094090.lua index cf8689ca..c9fc214f 100644 --- a/script/c14094090.lua +++ b/script/c14094090.lua @@ -1,49 +1,49 @@ ---超戦士の儀式 -function c14094090.initial_effect(c) - aux.AddRitualProcEqual(c,c14094090.ritual_filter) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1,14094090) - e1:SetCondition(aux.exccon) - e1:SetCost(c14094090.spcost) - e1:SetTarget(c14094090.sptg) - e1:SetOperation(c14094090.spop) - c:RegisterEffect(e1) -end -function c14094090.ritual_filter(c) - return c:IsType(TYPE_RITUAL) and c:IsSetCard(0x10cf) -end -function c14094090.cfilter(c,att) - return c:IsAttribute(att) and c:IsAbleToRemoveAsCost() -end -function c14094090.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() - and Duel.IsExistingMatchingCard(c14094090.cfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_LIGHT) - and Duel.IsExistingMatchingCard(c14094090.cfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_DARK) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g1=Duel.SelectMatchingCard(tp,c14094090.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_LIGHT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=Duel.SelectMatchingCard(tp,c14094090.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_DARK) - g1:Merge(g2) - g1:AddCard(e:GetHandler()) - Duel.Remove(g1,POS_FACEUP,REASON_COST) -end -function c14094090.spfilter(c,e,tp) - return c:IsSetCard(0x10cf) and c:IsType(TYPE_RITUAL) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c14094090.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c14094090.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c14094090.spop(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,c14094090.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) - end -end +--超戦士の儀式 +function c14094090.initial_effect(c) + aux.AddRitualProcEqual(c,c14094090.ritual_filter) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1,14094090) + e1:SetCondition(aux.exccon) + e1:SetCost(c14094090.spcost) + e1:SetTarget(c14094090.sptg) + e1:SetOperation(c14094090.spop) + c:RegisterEffect(e1) +end +function c14094090.ritual_filter(c) + return c:IsType(TYPE_RITUAL) and c:IsSetCard(0x10cf) +end +function c14094090.cfilter(c,att) + return c:IsAttribute(att) and c:IsAbleToRemoveAsCost() +end +function c14094090.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c14094090.cfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_LIGHT) + and Duel.IsExistingMatchingCard(c14094090.cfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_DARK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c14094090.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_LIGHT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c14094090.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_DARK) + g1:Merge(g2) + g1:AddCard(e:GetHandler()) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c14094090.spfilter(c,e,tp) + return c:IsSetCard(0x10cf) and c:IsType(TYPE_RITUAL) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c14094090.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c14094090.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c14094090.spop(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,c14094090.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c1409474.lua b/script/c1409474.lua index 9ab2ef75..dc579ba8 100644 --- a/script/c1409474.lua +++ b/script/c1409474.lua @@ -34,12 +34,11 @@ function c1409474.operation(e,tp,eg,ep,ev,re,r,rp) if not tc then return end local opt=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) if (opt==0 and tc:IsType(TYPE_MONSTER)) or (opt==1 and tc:IsType(TYPE_SPELL)) or (opt==2 and tc:IsType(TYPE_TRAP)) then - local g=Duel.GetMatchingGroup(c1409474.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil,e,tp) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c1409474.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(1409474,1)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=g:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c1412158.lua b/script/c1412158.lua index c3468e29..bbf17bc0 100644 --- a/script/c1412158.lua +++ b/script/c1412158.lua @@ -1,56 +1,56 @@ ---レアメタル・ナイト -function c1412158.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,92421852,38916461,true,true) - --atk up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(1412158,0)) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c1412158.atkcon) - e1:SetValue(1000) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(1412158,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c1412158.spcon) - e2:SetTarget(c1412158.sptg) - e2:SetOperation(c1412158.spop) - c:RegisterEffect(e2) -end -function c1412158.atkcon(e) - local ph=Duel.GetCurrentPhase() - if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) then return false end - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return a==e:GetHandler() and d~=nil -end -function c1412158.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetTurnID()~=Duel.GetTurnCount() -end -function c1412158.spfilter(c,e,tp) - return c:IsCode(75923050) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c1412158.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and e:GetHandler():IsAbleToExtra() - and Duel.IsExistingMatchingCard(c1412158.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c1412158.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.SendtoDeck(c,nil,2,REASON_EFFECT)~=0 then - local tc=Duel.GetFirstMatchingCard(c1412158.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end - end -end +--レアメタル・ナイト +function c1412158.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,92421852,38916461,true,true) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(1412158,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c1412158.atkcon) + e1:SetValue(1000) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1412158,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c1412158.spcon) + e2:SetTarget(c1412158.sptg) + e2:SetOperation(c1412158.spop) + c:RegisterEffect(e2) +end +function c1412158.atkcon(e) + local ph=Duel.GetCurrentPhase() + if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a==e:GetHandler() and d~=nil +end +function c1412158.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetTurnID()~=Duel.GetTurnCount() +end +function c1412158.spfilter(c,e,tp) + return c:IsCode(75923050) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c1412158.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsAbleToExtra() + and Duel.IsExistingMatchingCard(c1412158.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c1412158.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.SendtoDeck(c,nil,2,REASON_EFFECT)~=0 then + local tc=Duel.GetFirstMatchingCard(c1412158.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c14124483.lua b/script/c14124483.lua new file mode 100644 index 00000000..3af1c9e0 --- /dev/null +++ b/script/c14124483.lua @@ -0,0 +1,82 @@ +--E・HERO オネスティ・ネオス +function c14124483.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14124483,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCountLimit(1,14124483) + e1:SetCondition(c14124483.atkcon) + e1:SetCost(c14124483.atkcost1) + e1:SetTarget(c14124483.atktg) + e1:SetOperation(c14124483.atkop1) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(14124483,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetCountLimit(1,14124484) + e2:SetCondition(c14124483.atkcon) + e2:SetTarget(c14124483.atkcost2) + e2:SetOperation(c14124483.atkop2) + c:RegisterEffect(e2) +end +function c14124483.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c14124483.atkcost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c14124483.atkfilter(c) + return c:IsFaceup() and c:IsSetCard(0x8) +end +function c14124483.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c14124483.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c14124483.atkfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c14124483.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c14124483.atkop1(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(2500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c14124483.costfilter(c) + return c:IsSetCard(0x8) and c:GetAttack()>0 and c:IsDiscardable() +end +function c14124483.atkcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c14124483.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,c14124483.costfilter,tp,LOCATION_HAND,0,1,1,nil) + e:SetLabelObject(g:GetFirst()) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c14124483.atkop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + local atk=tc:GetAttack() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c14148099.lua b/script/c14148099.lua index 5f85d8c6..49f12745 100644 --- a/script/c14148099.lua +++ b/script/c14148099.lua @@ -1,68 +1,68 @@ ---巨大戦艦 ビッグ・コア -function c14148099.initial_effect(c) - c:EnableCounterPermit(0x1f) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(14148099,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c14148099.addct) - e1:SetOperation(c14148099.addc) - c:RegisterEffect(e1) - --battle indestructable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - c:RegisterEffect(e2) - --remove counter - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(14148099,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_DAMAGE_STEP_END) - e3:SetCondition(c14148099.rctcon) - e3:SetOperation(c14148099.rctop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(14148099,2)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_DAMAGE_STEP_END) - e4:SetCondition(c14148099.descon) - e4:SetTarget(c14148099.destg) - e4:SetOperation(c14148099.desop) - c:RegisterEffect(e4) -end -function c14148099.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) -end -function c14148099.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x1f,3) - end -end -function c14148099.rctcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)~=0 -end -function c14148099.rctop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - c:RemoveCounter(tp,0x1f,1,REASON_EFFECT) - end -end -function c14148099.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)==0 -end -function c14148099.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) -end -function c14148099.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - Duel.Destroy(c,REASON_EFFECT) - end -end +--巨大戦艦 ビッグ・コア +function c14148099.initial_effect(c) + c:EnableCounterPermit(0x1f) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14148099,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c14148099.addct) + e1:SetOperation(c14148099.addc) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --remove counter + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(14148099,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c14148099.rctcon) + e3:SetOperation(c14148099.rctop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(14148099,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetCondition(c14148099.descon) + e4:SetTarget(c14148099.destg) + e4:SetOperation(c14148099.desop) + c:RegisterEffect(e4) +end +function c14148099.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) +end +function c14148099.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x1f,3) + end +end +function c14148099.rctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)~=0 +end +function c14148099.rctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + c:RemoveCounter(tp,0x1f,1,REASON_EFFECT) + end +end +function c14148099.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)==0 +end +function c14148099.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c14148099.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c14152862.lua b/script/c14152862.lua index 8bb3e35e..0e86eb76 100644 --- a/script/c14152862.lua +++ b/script/c14152862.lua @@ -10,7 +10,7 @@ function c14152862.initial_effect(c) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e1:SetCode(EVENT_CHAINING) e1:SetCondition(c14152862.discon) e1:SetCost(c14152862.discost) @@ -34,8 +34,7 @@ function c14152862.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c14152862.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c14225239.lua b/script/c14225239.lua index 6183b068..5d48bfaf 100644 --- a/script/c14225239.lua +++ b/script/c14225239.lua @@ -1,25 +1,26 @@ ---E・HERO セイラーマン -function c14225239.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,79979666,21844576,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --direct attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DIRECT_ATTACK) - e2:SetCondition(c14225239.dacon) - c:RegisterEffect(e2) -end -function c14225239.filter(c) - return c:IsFacedown() and c:GetSequence()~=5 -end -function c14225239.dacon(e) - return Duel.IsExistingMatchingCard(c14225239.filter,e:GetHandlerPlayer(),LOCATION_SZONE,0,1,nil) -end +--E・HERO セイラーマン +function c14225239.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,79979666,21844576,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetCondition(c14225239.dacon) + c:RegisterEffect(e2) +end +c14225239.material_setcode=0x8 +function c14225239.filter(c) + return c:IsFacedown() and c:GetSequence()~=5 +end +function c14225239.dacon(e) + return Duel.IsExistingMatchingCard(c14225239.filter,e:GetHandlerPlayer(),LOCATION_SZONE,0,1,nil) +end diff --git a/script/c14235211.lua b/script/c14235211.lua index 5b55d20c..158df05b 100644 --- a/script/c14235211.lua +++ b/script/c14235211.lua @@ -1,56 +1,56 @@ ---暴風竜の防人 -function c14235211.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(14235211,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetRange(LOCATION_HAND+LOCATION_MZONE) - e1:SetTarget(c14235211.eqtg) - e1:SetOperation(c14235211.eqop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e2) - --destroy sub - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetValue(1) - c:RegisterEffect(e3) -end -function c14235211.filter(c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsType(TYPE_NORMAL) -end -function c14235211.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c14235211.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c14235211.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c14235211.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c14235211.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c14235211.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) -end -function c14235211.eqlimit(e,c) - return c==e:GetLabelObject() -end +--暴風竜の防人 +function c14235211.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14235211,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c14235211.eqtg) + e1:SetOperation(c14235211.eqop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) + --destroy sub + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c14235211.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsType(TYPE_NORMAL) +end +function c14235211.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c14235211.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c14235211.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c14235211.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c14235211.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c14235211.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) +end +function c14235211.eqlimit(e,c) + return c==e:GetLabelObject() +end diff --git a/script/c14258627.lua b/script/c14258627.lua index 58e57c31..d1195335 100644 --- a/script/c14258627.lua +++ b/script/c14258627.lua @@ -1,75 +1,75 @@ ---地球巨人 ガイア・プレート -function c14258627.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c14258627.spcon) - e1:SetOperation(c14258627.spop) - c:RegisterEffect(e1) - --atk/def down - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SET_ATTACK_FINAL) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCondition(c14258627.adcon) - e2:SetTarget(c14258627.adtg) - e2:SetValue(c14258627.atkval) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_SET_DEFENSE_FINAL) - e3:SetValue(c14258627.defval) - c:RegisterEffect(e3) - --maintain - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EVENT_PHASE+PHASE_STANDBY) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1) - e4:SetCondition(c14258627.mtcon) - e4:SetOperation(c14258627.mtop) - c:RegisterEffect(e4) -end -function c14258627.filter(c) - return c:IsRace(RACE_ROCK) and c:IsAbleToRemoveAsCost() -end -function c14258627.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c14258627.filter,tp,LOCATION_GRAVE,0,2,nil) -end -function c14258627.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c14258627.filter,tp,LOCATION_GRAVE,0,2,2,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c14258627.adcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and e:GetHandler():GetBattleTarget() -end -function c14258627.adtg(e,c) - return c==e:GetHandler():GetBattleTarget() -end -function c14258627.atkval(e,c) - return c:GetAttack()/2 -end -function c14258627.defval(e,c) - return c:GetDefense()/2 -end -function c14258627.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c14258627.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsExistingMatchingCard(c14258627.filter,tp,LOCATION_GRAVE,0,1,nil) - and Duel.SelectYesNo(tp,aux.Stringid(14258627,0)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c14258627.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) - else - Duel.SendtoGrave(e:GetHandler(),REASON_RULE) - end -end +--地球巨人 ガイア・プレート +function c14258627.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c14258627.spcon) + e1:SetOperation(c14258627.spop) + c:RegisterEffect(e1) + --atk/def down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c14258627.adcon) + e2:SetTarget(c14258627.adtg) + e2:SetValue(c14258627.atkval) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_SET_DEFENSE_FINAL) + e3:SetValue(c14258627.defval) + c:RegisterEffect(e3) + --maintain + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCondition(c14258627.mtcon) + e4:SetOperation(c14258627.mtop) + c:RegisterEffect(e4) +end +function c14258627.filter(c) + return c:IsRace(RACE_ROCK) and c:IsAbleToRemoveAsCost() +end +function c14258627.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c14258627.filter,tp,LOCATION_GRAVE,0,2,nil) +end +function c14258627.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c14258627.filter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c14258627.adcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and e:GetHandler():GetBattleTarget() +end +function c14258627.adtg(e,c) + return c==e:GetHandler():GetBattleTarget() +end +function c14258627.atkval(e,c) + return c:GetAttack()/2 +end +function c14258627.defval(e,c) + return c:GetDefense()/2 +end +function c14258627.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c14258627.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsExistingMatchingCard(c14258627.filter,tp,LOCATION_GRAVE,0,1,nil) + and Duel.SelectYesNo(tp,aux.Stringid(14258627,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c14258627.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + else + Duel.SendtoGrave(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c14261867.lua b/script/c14261867.lua index fa8c296f..e12cbf95 100644 --- a/script/c14261867.lua +++ b/script/c14261867.lua @@ -1,49 +1,49 @@ ---八つ手サソリ -function c14261867.initial_effect(c) - --turn set - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(14261867,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c14261867.target) - e1:SetOperation(c14261867.operation) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(14261867,1)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) - e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e2:SetCondition(c14261867.atkcon) - e2:SetOperation(c14261867.atkop) - c:RegisterEffect(e2) -end -function c14261867.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(14261867)==0 end - c:RegisterFlagEffect(14261867,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) - Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) -end -function c14261867.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) - end -end -function c14261867.atkcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c==Duel.GetAttacker() and bc and bc:GetBattlePosition()==POS_FACEDOWN_DEFENSE -end -function c14261867.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(2400) - c:RegisterEffect(e1) - end -end +--八つ手サソリ +function c14261867.initial_effect(c) + --turn set + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14261867,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c14261867.target) + e1:SetOperation(c14261867.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(14261867,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCondition(c14261867.atkcon) + e2:SetOperation(c14261867.atkop) + c:RegisterEffect(e2) +end +function c14261867.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(14261867)==0 end + c:RegisterFlagEffect(14261867,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) +end +function c14261867.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) + end +end +function c14261867.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c==Duel.GetAttacker() and bc and bc:GetBattlePosition()==POS_FACEDOWN_DEFENSE +end +function c14261867.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(2400) + c:RegisterEffect(e1) + end +end diff --git a/script/c1426714.lua b/script/c1426714.lua index 8fabf46f..dd0b2798 100644 --- a/script/c1426714.lua +++ b/script/c1426714.lua @@ -8,9 +8,11 @@ function c1426714.initial_effect(c) e1:SetDescription(aux.Stringid(1426714,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_END_PHASE) e1:SetCondition(c1426714.spcon) e1:SetCost(c1426714.spcost) e1:SetTarget(c1426714.sptg) diff --git a/script/c14289852.lua b/script/c14289852.lua index f4edde5e..a2d1b4f3 100644 --- a/script/c14289852.lua +++ b/script/c14289852.lua @@ -1,37 +1,37 @@ ---岩投げエリア -function c14289852.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetTarget(c14289852.destg) - e2:SetValue(c14289852.value) - e2:SetOperation(c14289852.desop) - c:RegisterEffect(e2) -end -function c14289852.dfilter(c,tp) - return c:IsControler(tp) and c:IsReason(REASON_BATTLE) -end -function c14289852.repfilter(c) - return c:IsRace(RACE_ROCK) and c:IsAbleToGrave() -end -function c14289852.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c14289852.dfilter,1,nil,tp) - and Duel.IsExistingMatchingCard(c14289852.repfilter,tp,LOCATION_DECK,0,1,nil) end - return Duel.SelectYesNo(tp,aux.Stringid(14289852,0)) -end -function c14289852.value(e,c) - return c:IsControler(e:GetHandlerPlayer()) and c:IsReason(REASON_BATTLE) -end -function c14289852.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c14289852.repfilter,tp,LOCATION_DECK,0,1,1,nil) - Duel.SendtoGrave(g,REASON_EFFECT) -end +--岩投げエリア +function c14289852.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetTarget(c14289852.destg) + e2:SetValue(c14289852.value) + e2:SetOperation(c14289852.desop) + c:RegisterEffect(e2) +end +function c14289852.dfilter(c,tp) + return c:IsControler(tp) and c:IsReason(REASON_BATTLE) +end +function c14289852.repfilter(c) + return c:IsRace(RACE_ROCK) and c:IsAbleToGrave() +end +function c14289852.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c14289852.dfilter,1,nil,tp) + and Duel.IsExistingMatchingCard(c14289852.repfilter,tp,LOCATION_DECK,0,1,nil) end + return Duel.SelectYesNo(tp,aux.Stringid(14289852,0)) +end +function c14289852.value(e,c) + return c:IsControler(e:GetHandlerPlayer()) and c:IsReason(REASON_BATTLE) +end +function c14289852.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c14289852.repfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c14306092.lua b/script/c14306092.lua index 3f979d52..005f50c1 100644 --- a/script/c14306092.lua +++ b/script/c14306092.lua @@ -8,6 +8,7 @@ function c14306092.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(14306092,0)) e1:SetCategory(CATEGORY_COUNTER) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c1435851.lua b/script/c1435851.lua index 9537a93b..ccf8ff91 100644 --- a/script/c1435851.lua +++ b/script/c1435851.lua @@ -1,14 +1,6 @@ --ドラゴンの秘宝 function c1435851.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(c1435851.target) - e1:SetOperation(c1435851.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c1435851.filter) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,7 @@ function c1435851.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c1435851.eqlimit) - c:RegisterEffect(e4) -end -function c1435851.eqlimit(e,c) - return c:IsRace(RACE_DRAGON) end function c1435851.filter(c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) -end -function c1435851.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c1435851.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c1435851.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c1435851.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c1435851.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 + return c:IsRace(RACE_DRAGON) +end \ No newline at end of file diff --git a/script/c14463695.lua b/script/c14463695.lua new file mode 100644 index 00000000..687bfcd7 --- /dev/null +++ b/script/c14463695.lua @@ -0,0 +1,69 @@ +--捕食接ぎ木 +function c14463695.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c14463695.target) + e1:SetOperation(c14463695.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_LEAVE_FIELD_P) + e2:SetOperation(c14463695.checkop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c14463695.desop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) +end +function c14463695.spfilter(c,e,tp) + return c:IsSetCard(0x10f3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c14463695.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c14463695.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c14463695.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c14463695.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c14463695.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 Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c14463695.eqlimit) + c:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end +function c14463695.eqlimit(e,c) + return e:GetOwner()==c +end +function c14463695.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c14463695.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c14469229.lua b/script/c14469229.lua index 67ba8b77..6d4fea2a 100644 --- a/script/c14469229.lua +++ b/script/c14469229.lua @@ -1,75 +1,75 @@ ---宝玉の守護者 -function c14469229.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetTarget(c14469229.indtg) - e2:SetValue(c14469229.indval) - c:RegisterEffect(e2) - --double - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(14469229,0)) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e3:SetRange(LOCATION_MZONE+LOCATION_HAND) - e3:SetCost(c14469229.cost) - e3:SetTarget(c14469229.target) - e3:SetOperation(c14469229.operation) - c:RegisterEffect(e3) -end -function c14469229.indfilter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsOnField() and c:IsReason(REASON_EFFECT) - and (c:IsSetCard(0x1034) or (c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0x2034))) -end -function c14469229.indtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c14469229.indfilter,1,nil,tp) end - return true -end -function c14469229.indval(e,c) - return c14469229.indfilter(c,e:GetHandlerPlayer()) -end -function c14469229.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c14469229.target(e,tp,eg,ep,ev,re,r,rp,chk) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if a:IsControler(1-tp) then a=d end - if chk==0 then return d and a:IsSetCard(0x1034) end - e:SetLabelObject(a) -end -function c14469229.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:IsRelateToBattle() and tc:IsFaceup() then - local atk=tc:GetBaseAttack() - local def=tc:GetBaseDefense() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(atk*2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetValue(def*2) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_DAMAGE_STEP_END) - e3:SetOperation(c14469229.desop) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - tc:RegisterEffect(e3) - end -end -function c14469229.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToBattle() and c:IsFaceup() then - Duel.Destroy(c,REASON_EFFECT) - end -end +--宝玉の守護者 +function c14469229.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c14469229.indtg) + e2:SetValue(c14469229.indval) + c:RegisterEffect(e2) + --double + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(14469229,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e3:SetRange(LOCATION_MZONE+LOCATION_HAND) + e3:SetCost(c14469229.cost) + e3:SetTarget(c14469229.target) + e3:SetOperation(c14469229.operation) + c:RegisterEffect(e3) +end +function c14469229.indfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsOnField() and c:IsReason(REASON_EFFECT) + and (c:IsSetCard(0x1034) or (c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0x2034))) +end +function c14469229.indtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c14469229.indfilter,1,nil,tp) end + return true +end +function c14469229.indval(e,c) + return c14469229.indfilter(c,e:GetHandlerPlayer()) +end +function c14469229.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c14469229.target(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a:IsControler(1-tp) then a=d end + if chk==0 then return d and a:IsSetCard(0x1034) end + e:SetLabelObject(a) +end +function c14469229.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsRelateToBattle() and tc:IsFaceup() then + local atk=tc:GetBaseAttack() + local def=tc:GetBaseDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(def*2) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetOperation(c14469229.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e3) + end +end +function c14469229.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToBattle() and c:IsFaceup() then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c14541657.lua b/script/c14541657.lua index 8f12ed49..1466cf2d 100644 --- a/script/c14541657.lua +++ b/script/c14541657.lua @@ -1,57 +1,57 @@ ---黄昏の忍者-シンゲツ -function c14541657.initial_effect(c) - --untargetable - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c14541657.atlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c14541657.tglimit) - e2:SetValue(aux.tgoval) - c:RegisterEffect(e2) - --tohand - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,14541657) - e3:SetCondition(c14541657.thcon) - e3:SetTarget(c14541657.thtg) - e3:SetOperation(c14541657.thop) - c:RegisterEffect(e3) -end -function c14541657.atlimit(e,c) - return c:IsFaceup() and c:IsSetCard(0x2b) and c~=e:GetHandler() -end -function c14541657.tglimit(e,c) - return c:IsSetCard(0x2b) and c~=e:GetHandler() -end -function c14541657.thcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_BATTLE) - or (rp==1-tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp) -end -function c14541657.thfilter(c) - return c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER) and not c:IsCode(14541657) and c:IsAbleToHand() -end -function c14541657.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c14541657.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c14541657.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c14541657.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--黄昏の忍者-シンゲツ +function c14541657.initial_effect(c) + --untargetable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c14541657.atlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c14541657.tglimit) + e2:SetValue(aux.tgoval) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,14541657) + e3:SetCondition(c14541657.thcon) + e3:SetTarget(c14541657.thtg) + e3:SetOperation(c14541657.thop) + c:RegisterEffect(e3) +end +function c14541657.atlimit(e,c) + return c:IsFaceup() and c:IsSetCard(0x2b) and c~=e:GetHandler() +end +function c14541657.tglimit(e,c) + return c:IsSetCard(0x2b) and c~=e:GetHandler() +end +function c14541657.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_BATTLE) + or (rp==1-tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp) +end +function c14541657.thfilter(c) + return c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER) and not c:IsCode(14541657) and c:IsAbleToHand() +end +function c14541657.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c14541657.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c14541657.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c14541657.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c14558127.lua b/script/c14558127.lua new file mode 100644 index 00000000..a80038fc --- /dev/null +++ b/script/c14558127.lua @@ -0,0 +1,42 @@ +--灰流うらら +--Ghost Ash & Beautiful Spring +--Script by dest +function c14558127.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,14558127) + e1:SetCondition(c14558127.discon) + e1:SetCost(c14558127.discost) + e1:SetTarget(c14558127.distg) + e1:SetOperation(c14558127.disop) + c:RegisterEffect(e1) +end +function c14558127.discon(e,tp,eg,ep,ev,re,r,rp) + local ex1,g1,gc1,dp1,dv1=Duel.GetOperationInfo(ev,CATEGORY_TOHAND) + local ex2,g2,gc2,dp2,dv2=Duel.GetOperationInfo(ev,CATEGORY_SPECIAL_SUMMON) + local ex3,g3,gc3,dp3,dv3=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE) + local ex4=(Duel.GetOperationInfo(ev,CATEGORY_DRAW) or re:IsHasCategory(CATEGORY_DRAW)) + local ex5=(Duel.GetOperationInfo(ev,CATEGORY_SEARCH) or re:IsHasCategory(CATEGORY_SEARCH)) + local ex6=(Duel.GetOperationInfo(ev,CATEGORY_DECKDES) or re:IsHasCategory(CATEGORY_DECKDES)) + return ep~=tp and ((ex1 and bit.band(dv1,LOCATION_DECK)==LOCATION_DECK) + or (ex2 and bit.band(dv2,LOCATION_DECK)==LOCATION_DECK) + or (ex3 and bit.band(dv3,LOCATION_DECK)==LOCATION_DECK) + or ex4 or ex5 or ex6 + or eg:IsExists(Card.IsCode,1,nil,23434538,44394295,58577036,31222701)) and Duel.IsChainDisablable(ev) +end +function c14558127.discost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c14558127.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c14558127.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end \ No newline at end of file diff --git a/script/c14568951.lua b/script/c14568951.lua index 2c9b6076..d6e7c399 100644 --- a/script/c14568951.lua +++ b/script/c14568951.lua @@ -1,64 +1,64 @@ ---青竜の忍者 -function c14568951.initial_effect(c) - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(14568951,0)) - e1:SetCategory(CATEGORY_DISABLE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c14568951.cost) - e1:SetTarget(c14568951.target) - e1:SetOperation(c14568951.operation) - c:RegisterEffect(e1) -end -function c14568951.cfilter1(c) - return c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() -end -function c14568951.cfilter2(c) - return c:IsSetCard(0x61) and c:IsDiscardable() -end -function c14568951.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c14568951.cfilter1,tp,LOCATION_HAND,0,1,nil) - and Duel.IsExistingMatchingCard(c14568951.cfilter2,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) - local g1=Duel.SelectMatchingCard(tp,c14568951.cfilter1,tp,LOCATION_HAND,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) - local g2=Duel.SelectMatchingCard(tp,c14568951.cfilter2,tp,LOCATION_HAND,0,1,1,nil) - g1:Merge(g2) - Duel.SendtoGrave(g1,REASON_COST+REASON_DISCARD) -end -function c14568951.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return e:GetHandler():IsAttackPos() - and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c14568951.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CANNOT_ATTACK) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end -end +--青竜の忍者 +function c14568951.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14568951,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c14568951.cost) + e1:SetTarget(c14568951.target) + e1:SetOperation(c14568951.operation) + c:RegisterEffect(e1) +end +function c14568951.cfilter1(c) + return c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c14568951.cfilter2(c) + return c:IsSetCard(0x61) and c:IsDiscardable() +end +function c14568951.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c14568951.cfilter1,tp,LOCATION_HAND,0,1,nil) + and Duel.IsExistingMatchingCard(c14568951.cfilter2,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g1=Duel.SelectMatchingCard(tp,c14568951.cfilter1,tp,LOCATION_HAND,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g2=Duel.SelectMatchingCard(tp,c14568951.cfilter2,tp,LOCATION_HAND,0,1,1,nil) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST+REASON_DISCARD) +end +function c14568951.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return e:GetHandler():IsAttackPos() + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c14568951.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end diff --git a/script/c14577226.lua b/script/c14577226.lua new file mode 100644 index 00000000..3739108f --- /dev/null +++ b/script/c14577226.lua @@ -0,0 +1,80 @@ +--WW-ウィンター・ベル +function c14577226.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsAttribute,ATTRIBUTE_WIND),1) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14577226,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,14577226) + e1:SetTarget(c14577226.damtg) + e1:SetOperation(c14577226.damop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(14577226,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,14577227) + e2:SetCondition(c14577226.spcon) + e2:SetTarget(c14577226.sptg) + e2:SetOperation(c14577226.spop) + c:RegisterEffect(e2) +end +function c14577226.damfilter(c) + return c:IsSetCard(0xf0) and c:GetLevel()>0 +end +function c14577226.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c14577226.damfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c14577226.damfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c14577226.damfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetLevel()*200) +end +function c14577226.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Damage(1-tp,tc:GetLevel()*200,REASON_EFFECT) + end +end +function c14577226.spcon(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) +end +function c14577226.tgfilter(c,e,tp) + local lv=c:GetLevel() + return c:IsSetCard(0xf0) and lv>0 and Duel.IsExistingMatchingCard(c14577226.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,lv) +end +function c14577226.spfilter(c,e,tp,lv) + return c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c14577226.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c14577226.tgfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c14577226.tgfilter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c14577226.tgfilter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c14577226.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c14577226.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,tc:GetLevel()) + local sg=g:GetFirst() + if sg and Duel.SpecialSummonStep(sg,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sg:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end + end +end diff --git a/script/c14624296.lua b/script/c14624296.lua index 978928d9..6a843707 100644 --- a/script/c14624296.lua +++ b/script/c14624296.lua @@ -1,72 +1,72 @@ ---超重武者装留ダブル・ホーン -function c14624296.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_HAND+LOCATION_MZONE) - e1:SetTarget(c14624296.eqtg) - e1:SetOperation(c14624296.eqop) - c:RegisterEffect(e1) -end -function c14624296.eqfilter(c) - return c:IsFaceup() and c:IsSetCard(0x9a) -end -function c14624296.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c14624296.eqfilter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c14624296.eqfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c14624296.eqfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) -end -function c14624296.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c14624296.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_EXTRA_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(1) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1,14624296) - e3:SetTarget(c14624296.sptg) - e3:SetOperation(c14624296.spop) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) -end -function c14624296.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c14624296.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c14624296.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--超重武者装留ダブル・ホーン +function c14624296.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c14624296.eqtg) + e1:SetOperation(c14624296.eqop) + c:RegisterEffect(e1) +end +function c14624296.eqfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9a) +end +function c14624296.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c14624296.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c14624296.eqfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c14624296.eqfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c14624296.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c14624296.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,14624296) + e3:SetTarget(c14624296.sptg) + e3:SetOperation(c14624296.spop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) +end +function c14624296.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c14624296.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c14624296.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c14731897.lua b/script/c14731897.lua index 6296dd4c..33c5a951 100644 --- a/script/c14731897.lua +++ b/script/c14731897.lua @@ -1,43 +1,43 @@ ---結束 UNITY -function c14731897.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DEFCHANGE) - 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(c14731897.condition) - e1:SetTarget(c14731897.target) - e1:SetOperation(c14731897.activate) - c:RegisterEffect(e1) -end -function c14731897.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c14731897.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c14731897.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) - local def=0 - local sc=g:GetFirst() - while sc do - local cdef=sc:GetBaseDefense() - if cdef<0 then cdef=0 end - def=def+cdef - sc=g:GetNext() - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_DEFENSE) - e1:SetValue(def) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--結束 UNITY +function c14731897.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c14731897.condition) + e1:SetTarget(c14731897.target) + e1:SetOperation(c14731897.activate) + c:RegisterEffect(e1) +end +function c14731897.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c14731897.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c14731897.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local def=0 + local sc=g:GetFirst() + while sc do + local cdef=sc:GetBaseDefense() + if cdef<0 then cdef=0 end + def=def+cdef + sc=g:GetNext() + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c14733538.lua b/script/c14733538.lua index b7c77846..dd52abb3 100644 --- a/script/c14733538.lua +++ b/script/c14733538.lua @@ -1,48 +1,48 @@ ---竜呼相打つ -function c14733538.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,14733538+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c14733538.target) - e1:SetOperation(c14733538.activate) - c:RegisterEffect(e1) -end -function c14733538.filter(c,e,tp,b1,setcode) - return c:IsSetCard(setcode) and c:IsType(TYPE_PENDULUM) and not c:IsForbidden() - and (b1 or c:IsCanBeSpecialSummoned(e,0,tp,false,false)) -end -function c14733538.target(e,tp,eg,ep,ev,re,r,rp,chk) - local b1=Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) - local b2=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - if chk==0 then return (b1 or b2) - and Duel.IsExistingMatchingCard(c14733538.filter,tp,LOCATION_DECK,0,1,nil,e,tp,b1,0xc7) - and Duel.IsExistingMatchingCard(c14733538.filter,tp,LOCATION_DECK,0,1,nil,e,tp,b1,0xda) end -end -function c14733538.activate(e,tp,eg,ep,ev,re,r,rp) - local b1=Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) - local b2=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - if not b1 and not b2 then return end - local g1=Duel.GetMatchingGroup(c14733538.filter,tp,LOCATION_DECK,0,nil,e,tp,b1,0xc7) - local g2=Duel.GetMatchingGroup(c14733538.filter,tp,LOCATION_DECK,0,nil,e,tp,b1,0xda) - if g1:GetCount()==0 or g2:GetCount()==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local sg1=g1:Select(tp,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local sg2=g2:Select(tp,1,1,nil) - sg1:Merge(sg2) - Duel.ConfirmCards(1-tp,sg1) - Duel.ShuffleDeck(tp) - local cg=sg1:Select(1-tp,1,1,nil) - local tc=cg:GetFirst() - Duel.Hint(HINT_CARD,0,tc:GetCode()) - if b1 and (not b2 or not tc:IsCanBeSpecialSummoned(e,0,tp,false,false) or Duel.SelectYesNo(tp,aux.Stringid(14733538,0))) then - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - else - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end - sg1:RemoveCard(tc) - Duel.SendtoExtraP(sg1,nil,REASON_EFFECT) -end +--竜呼相打つ +function c14733538.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,14733538+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c14733538.target) + e1:SetOperation(c14733538.activate) + c:RegisterEffect(e1) +end +function c14733538.filter(c,e,tp,b1,setcode) + return c:IsSetCard(setcode) and c:IsType(TYPE_PENDULUM) and not c:IsForbidden() + and (b1 or c:IsCanBeSpecialSummoned(e,0,tp,false,false)) +end +function c14733538.target(e,tp,eg,ep,ev,re,r,rp,chk) + local b1=Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) + local b2=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + if chk==0 then return (b1 or b2) + and Duel.IsExistingMatchingCard(c14733538.filter,tp,LOCATION_DECK,0,1,nil,e,tp,b1,0xc7) + and Duel.IsExistingMatchingCard(c14733538.filter,tp,LOCATION_DECK,0,1,nil,e,tp,b1,0xda) end +end +function c14733538.activate(e,tp,eg,ep,ev,re,r,rp) + local b1=Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) + local b2=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + if not b1 and not b2 then return end + local g1=Duel.GetMatchingGroup(c14733538.filter,tp,LOCATION_DECK,0,nil,e,tp,b1,0xc7) + local g2=Duel.GetMatchingGroup(c14733538.filter,tp,LOCATION_DECK,0,nil,e,tp,b1,0xda) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.ConfirmCards(1-tp,sg1) + Duel.ShuffleDeck(tp) + local cg=sg1:Select(1-tp,1,1,nil) + local tc=cg:GetFirst() + Duel.Hint(HINT_CARD,0,tc:GetCode()) + if b1 and (not b2 or not tc:IsCanBeSpecialSummoned(e,0,tp,false,false) or Duel.SelectYesNo(tp,aux.Stringid(14733538,0))) then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + else + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + sg1:RemoveCard(tc) + Duel.SendtoExtraP(sg1,nil,REASON_EFFECT) +end diff --git a/script/c14735698.lua b/script/c14735698.lua index c3e0b128..3abbb95e 100644 --- a/script/c14735698.lua +++ b/script/c14735698.lua @@ -1,122 +1,122 @@ ---影霊衣の降魔鏡 -function c14735698.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,14735698) - e1:SetTarget(c14735698.target) - e1:SetOperation(c14735698.activate) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c14735698.thcon) - e2:SetCost(c14735698.thcost) - e2:SetTarget(c14735698.thtg) - e2:SetOperation(c14735698.thop) - c:RegisterEffect(e2) -end -function c14735698.filter(c,e,tp,m1,m2,ft) - if not c:IsSetCard(0xb4) or bit.band(c:GetType(),0x81)~=0x81 - or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end - local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c) - mg:Merge(m2) - if c:IsCode(21105106) then return c:ritual_custom_condition(mg,ft) end - if c.mat_filter then - mg=mg:Filter(c.mat_filter,nil) - end - if ft>0 then - return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) - else - return ft>-1 and mg:IsExists(c14735698.mfilterf,1,nil,tp,mg,c) - end -end -function c14735698.mfilterf(c,tp,mg,rc) - if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then - Duel.SetSelectedCard(c) - return mg:CheckWithSumEqual(Card.GetRitualLevel,rc:GetLevel(),0,99,rc) - else return false end -end -function c14735698.mfilter(c) - return c:IsSetCard(0xb4) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() -end -function c14735698.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local mg1=Duel.GetRitualMaterial(tp) - local mg2=Duel.GetMatchingGroup(c14735698.mfilter,tp,LOCATION_GRAVE,0,nil) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - return Duel.IsExistingMatchingCard(c14735698.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg1,mg2,ft) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c14735698.activate(e,tp,eg,ep,ev,re,r,rp) - local mg1=Duel.GetRitualMaterial(tp) - local mg2=Duel.GetMatchingGroup(c14735698.mfilter,tp,LOCATION_GRAVE,0,nil) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=Duel.SelectMatchingCard(tp,c14735698.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg1,mg2,ft) - local tc=tg:GetFirst() - if tc then - local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc) - mg:Merge(mg2) - if tc:IsCode(21105106) then - tc:ritual_custom_operation(mg) - local mat=tc:GetMaterial() - Duel.ReleaseRitualMaterial(mat) - else - if tc.mat_filter then - mg=mg:Filter(tc.mat_filter,nil) - end - local mat=nil - if ft>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:FilterSelect(tp,c14735698.mfilterf,1,1,nil,tp,mg,tc) - Duel.SetSelectedCard(mat) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local mat2=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),0,99,tc) - mat:Merge(mat2) - end - tc:SetMaterial(mat) - Duel.ReleaseRitualMaterial(mat) - end - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) - tc:CompleteProcedure() - end -end -function c14735698.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c14735698.cfilter(c) - return c:IsSetCard(0xb4) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c14735698.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() - and Duel.IsExistingMatchingCard(c14735698.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c14735698.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - g:AddCard(e:GetHandler()) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c14735698.thfilter(c) - return c:IsSetCard(0xb4) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() -end -function c14735698.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c14735698.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c14735698.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c14735698.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--影霊衣の降魔鏡 +function c14735698.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,14735698) + e1:SetTarget(c14735698.target) + e1:SetOperation(c14735698.activate) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c14735698.thcon) + e2:SetCost(c14735698.thcost) + e2:SetTarget(c14735698.thtg) + e2:SetOperation(c14735698.thop) + c:RegisterEffect(e2) +end +function c14735698.filter(c,e,tp,m1,m2,ft) + if not c:IsSetCard(0xb4) or bit.band(c:GetType(),0x81)~=0x81 + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c) + mg:Merge(m2) + if c:IsCode(21105106) then return c:ritual_custom_condition(mg,ft) end + if c.mat_filter then + mg=mg:Filter(c.mat_filter,nil) + end + if ft>0 then + return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) + else + return ft>-1 and mg:IsExists(c14735698.mfilterf,1,nil,tp,mg,c) + end +end +function c14735698.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumEqual(Card.GetRitualLevel,rc:GetLevel(),0,99,rc) + else return false end +end +function c14735698.mfilter(c) + return c:GetLevel()>0 and c:IsSetCard(0xb4) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c14735698.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg1=Duel.GetRitualMaterial(tp) + local mg2=Duel.GetMatchingGroup(c14735698.mfilter,tp,LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return Duel.IsExistingMatchingCard(c14735698.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg1,mg2,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c14735698.activate(e,tp,eg,ep,ev,re,r,rp) + local mg1=Duel.GetRitualMaterial(tp) + local mg2=Duel.GetMatchingGroup(c14735698.mfilter,tp,LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c14735698.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg1,mg2,ft) + local tc=tg:GetFirst() + if tc then + local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc) + mg:Merge(mg2) + if tc:IsCode(21105106) then + tc:ritual_custom_operation(mg) + local mat=tc:GetMaterial() + Duel.ReleaseRitualMaterial(mat) + else + if tc.mat_filter then + mg=mg:Filter(tc.mat_filter,nil) + end + local mat=nil + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c14735698.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),0,99,tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + end + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end +function c14735698.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c14735698.cfilter(c) + return c:IsSetCard(0xb4) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c14735698.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c14735698.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c14735698.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + g:AddCard(e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c14735698.thfilter(c) + return c:IsSetCard(0xb4) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c14735698.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c14735698.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c14735698.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c14735698.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c14745409.lua b/script/c14745409.lua index 8b4b245b..96a52f71 100644 --- a/script/c14745409.lua +++ b/script/c14745409.lua @@ -1,28 +1,13 @@ --聖剣ガラティーン function c14745409.initial_effect(c) c:SetUniqueOnField(1,0,14745409) - --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(c14745409.target) - e1:SetOperation(c14745409.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c14745409.eqfilter1) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(1000) 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(c14745409.eqlimit) - c:RegisterEffect(e3) --atkdown local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -45,25 +30,8 @@ function c14745409.initial_effect(c) e5:SetOperation(c14745409.operation) c:RegisterEffect(e5) end -function c14745409.eqlimit(e,c) - return c:IsRace(RACE_WARRIOR) -end function c14745409.eqfilter1(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c14745409.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c14745409.eqfilter1(chkc) end - if chk==0 then return Duel.IsExistingTarget(c14745409.eqfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c14745409.eqfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c14745409.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and c:CheckUniqueOnField(tp) then - Duel.Equip(tp,c,tc) - end + return c:IsRace(RACE_WARRIOR) end function c14745409.atkcon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp @@ -87,6 +55,13 @@ function c14745409.atkop(e,tp,eg,ep,ev,re,r,rp) pe:SetValue(ct*-200) end end +function c14745409.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() and c:CheckUniqueOnField(tp) then + Duel.Equip(tp,c,tc) + end +end function c14745409.eqcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) and c:IsReason(REASON_DESTROY) and c:CheckUniqueOnField(tp) diff --git a/script/c14756848.lua b/script/c14756848.lua index f381e008..07ddf3d5 100644 --- a/script/c14756848.lua +++ b/script/c14756848.lua @@ -1,121 +1,121 @@ ---超重武者ヌス-10 -function c14756848.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(14756848,0)) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c14756848.hspcon) - e1:SetValue(1) - c:RegisterEffect(e1) - --spsummon limit - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c14756848.hspcon2) - e2:SetOperation(c14756848.hspop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c14756848.descost) - e3:SetTarget(c14756848.destg) - e3:SetOperation(c14756848.desop) - c:RegisterEffect(e3) -end -function c14756848.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c14756848.hspcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and not Duel.IsExistingMatchingCard(c14756848.filter,tp,LOCATION_GRAVE,0,1,nil) -end -function c14756848.hspcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c14756848.hspop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c14756848.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c14756848.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return not c:IsSetCard(0x9a) -end -function c14756848.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c14756848.desfilter1(c) - return c:GetSequence()<5 -end -function c14756848.desfilter2(c) - return (c:GetSequence()==6 or c:GetSequence()==7) -end -function c14756848.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local sel=0 - if Duel.IsExistingMatchingCard(c14756848.desfilter1,tp,0,LOCATION_SZONE,1,nil) then sel=sel+1 end - if Duel.IsExistingMatchingCard(c14756848.desfilter2,tp,0,LOCATION_SZONE,1,nil) then sel=sel+2 end - e:SetLabel(sel) - return sel~=0 - end - local sel=e:GetLabel() - if sel==3 then - sel=Duel.SelectOption(tp,aux.Stringid(14756848,1),aux.Stringid(14756848,2))+1 - elseif sel==1 then - Duel.SelectOption(tp,aux.Stringid(14756848,1)) - else - Duel.SelectOption(tp,aux.Stringid(14756848,2)) - end - e:SetLabel(sel) - if sel==1 then - local g=Duel.GetMatchingGroup(c14756848.desfilter1,tp,0,LOCATION_SZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - else - local g=Duel.GetMatchingGroup(c14756848.desfilter2,tp,0,LOCATION_SZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - end -end -function c14756848.desop(e,tp,eg,ep,ev,re,r,rp) - local sel=e:GetLabel() - if sel==1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectMatchingCard(tp,c14756848.desfilter1,tp,0,LOCATION_SZONE,1,1,nil) - local tc=g:GetFirst() - if not tc then return end - Duel.HintSelection(g) - if Duel.Destroy(g,REASON_EFFECT)~=0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and not tc:IsLocation(LOCATION_HAND+LOCATION_DECK) - and tc:IsType(TYPE_SPELL+TYPE_TRAP) and tc:IsSSetable() - and Duel.SelectYesNo(tp,aux.Stringid(14756848,3)) then - Duel.BreakEffect() - Duel.SSet(tp,tc) - Duel.ConfirmCards(1-tp,tc) - end - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectMatchingCard(tp,c14756848.desfilter2,tp,0,LOCATION_SZONE,1,1,nil) - local tc=g:GetFirst() - if not tc then return end - Duel.HintSelection(g) - if Duel.Destroy(g,REASON_EFFECT)~=0 - and (Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7)) - and not tc:IsLocation(LOCATION_HAND+LOCATION_DECK) and not tc:IsForbidden() - and Duel.SelectYesNo(tp,aux.Stringid(14756848,4)) then - Duel.BreakEffect() - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - end - end -end +--超重武者ヌス-10 +function c14756848.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14756848,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c14756848.hspcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --spsummon limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c14756848.hspcon2) + e2:SetOperation(c14756848.hspop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c14756848.descost) + e3:SetTarget(c14756848.destg) + e3:SetOperation(c14756848.desop) + c:RegisterEffect(e3) +end +function c14756848.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c14756848.hspcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and not Duel.IsExistingMatchingCard(c14756848.filter,tp,LOCATION_GRAVE,0,1,nil) +end +function c14756848.hspcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c14756848.hspop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c14756848.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c14756848.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0x9a) +end +function c14756848.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c14756848.desfilter1(c) + return c:GetSequence()<5 +end +function c14756848.desfilter2(c) + return (c:GetSequence()==6 or c:GetSequence()==7) +end +function c14756848.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local sel=0 + if Duel.IsExistingMatchingCard(c14756848.desfilter1,tp,0,LOCATION_SZONE,1,nil) then sel=sel+1 end + if Duel.IsExistingMatchingCard(c14756848.desfilter2,tp,0,LOCATION_SZONE,1,nil) then sel=sel+2 end + e:SetLabel(sel) + return sel~=0 + end + local sel=e:GetLabel() + if sel==3 then + sel=Duel.SelectOption(tp,aux.Stringid(14756848,1),aux.Stringid(14756848,2))+1 + elseif sel==1 then + Duel.SelectOption(tp,aux.Stringid(14756848,1)) + else + Duel.SelectOption(tp,aux.Stringid(14756848,2)) + end + e:SetLabel(sel) + if sel==1 then + local g=Duel.GetMatchingGroup(c14756848.desfilter1,tp,0,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + else + local g=Duel.GetMatchingGroup(c14756848.desfilter2,tp,0,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + end +end +function c14756848.desop(e,tp,eg,ep,ev,re,r,rp) + local sel=e:GetLabel() + if sel==1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c14756848.desfilter1,tp,0,LOCATION_SZONE,1,1,nil) + local tc=g:GetFirst() + if not tc then return end + Duel.HintSelection(g) + if Duel.Destroy(g,REASON_EFFECT)~=0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and not tc:IsLocation(LOCATION_HAND+LOCATION_DECK) + and tc:IsType(TYPE_SPELL+TYPE_TRAP) and tc:IsSSetable() + and Duel.SelectYesNo(tp,aux.Stringid(14756848,3)) then + Duel.BreakEffect() + Duel.SSet(tp,tc) + Duel.ConfirmCards(1-tp,tc) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c14756848.desfilter2,tp,0,LOCATION_SZONE,1,1,nil) + local tc=g:GetFirst() + if not tc then return end + Duel.HintSelection(g) + if Duel.Destroy(g,REASON_EFFECT)~=0 + and (Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7)) + and not tc:IsLocation(LOCATION_HAND+LOCATION_DECK) and not tc:IsForbidden() + and Duel.SelectYesNo(tp,aux.Stringid(14756848,4)) then + Duel.BreakEffect() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + end +end diff --git a/script/c14763299.lua b/script/c14763299.lua index 4bd40606..b64178df 100644 --- a/script/c14763299.lua +++ b/script/c14763299.lua @@ -1,46 +1,46 @@ ---幻奏の歌姫ソロ -function c14763299.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c14763299.spcon) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(14763299,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_DESTROYED) - e2:SetCondition(c14763299.condition) - e2:SetTarget(c14763299.target) - e2:SetOperation(c14763299.operation) - c:RegisterEffect(e2) -end -function c14763299.spcon(e,c) - if c==nil then return true end - return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 - and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 - and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c14763299.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) -end -function c14763299.filter(c,e,tp) - return c:IsSetCard(0x9b) and not c:IsCode(14763299) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c14763299.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c14763299.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c14763299.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,c14763299.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--幻奏の歌姫ソロ +function c14763299.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c14763299.spcon) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(14763299,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c14763299.condition) + e2:SetTarget(c14763299.target) + e2:SetOperation(c14763299.operation) + c:RegisterEffect(e2) +end +function c14763299.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c14763299.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) +end +function c14763299.filter(c,e,tp) + return c:IsSetCard(0x9b) and not c:IsCode(14763299) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c14763299.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c14763299.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c14763299.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,c14763299.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c14799437.lua b/script/c14799437.lua index c7347f12..73978e72 100644 --- a/script/c14799437.lua +++ b/script/c14799437.lua @@ -116,15 +116,14 @@ function c14799437.negcost(e,tp,eg,ep,ev,re,r,rp,chk) Duel.Release(g,REASON_COST) end function c14799437.negtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end + if chk==0 then return re:GetHandler():IsAbleToRemove() end Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsAbleToRemove() and re:GetHandler():IsRelateToEffect(re) then + if re:GetHandler():IsRelateToEffect(re) then Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) end end function c14799437.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Remove(eg,POS_FACEUP,REASON_EFFECT) end end diff --git a/script/c14816688.lua b/script/c14816688.lua index 2611eed2..ec78c723 100644 --- a/script/c14816688.lua +++ b/script/c14816688.lua @@ -1,104 +1,114 @@ ---シャッフル・リボーン -function c14816688.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(14816688,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c14816688.condition) - e1:SetTarget(c14816688.target) - e1:SetOperation(c14816688.activate) - c:RegisterEffect(e1) - --todeck - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(14816688,1)) - e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,14816688) - e2:SetCost(c14816688.tdcost) - e2:SetTarget(c14816688.tdtg) - e2:SetOperation(c14816688.tdop) - c:RegisterEffect(e2) -end -function c14816688.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c14816688.filter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c14816688.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c14816688.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c14816688.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c14816688.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c14816688.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetCountLimit(1) - e3:SetOperation(c14816688.rmop1) - e3:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c14816688.rmop1(e,tp,eg,ep,ev,re,r,rp) - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c14816688.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c14816688.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) - and Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c14816688.tdop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)~=0 - and tc:IsLocation(LOCATION_DECK+LOCATION_EXTRA) then - if tc:IsLocation(LOCATION_DECK) then Duel.ShuffleDeck(tc:GetControler()) end - Duel.BreakEffect() - Duel.Draw(tp,1,REASON_EFFECT) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetOperation(c14816688.rmop2) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c14816688.rmop2(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_HAND,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_EFFECT) -end +--シャッフル・リボーン +function c14816688.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14816688,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c14816688.condition) + e1:SetTarget(c14816688.target) + e1:SetOperation(c14816688.activate) + c:RegisterEffect(e1) + --todeck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(14816688,1)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,14816688) + e2:SetCost(c14816688.tdcost) + e2:SetTarget(c14816688.tdtg) + e2:SetOperation(c14816688.tdop) + c:RegisterEffect(e2) +end +function c14816688.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c14816688.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c14816688.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c14816688.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c14816688.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c14816688.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c14816688.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local fid=c:GetFieldID() + tc:RegisterFlagEffect(14816688,RESET_EVENT+0x1fe0000,0,1,fid) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCountLimit(1) + e3:SetLabel(fid) + e3:SetLabelObject(tc) + e3:SetCondition(c14816688.rmcon1) + e3:SetOperation(c14816688.rmop1) + Duel.RegisterEffect(e3,tp) + Duel.SpecialSummonComplete() + end +end +function c14816688.rmcon1(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(14816688)~=e:GetLabel() then + e:Reset() + return false + else return true end +end +function c14816688.rmop1(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetLabelObject(),POS_FACEUP,REASON_EFFECT) +end +function c14816688.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c14816688.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c14816688.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)~=0 + and tc:IsLocation(LOCATION_DECK+LOCATION_EXTRA) then + if tc:IsLocation(LOCATION_DECK) then Duel.ShuffleDeck(tc:GetControler()) end + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c14816688.rmop2) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c14816688.rmop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_HAND,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c14878871.lua b/script/c14878871.lua index 354d06d8..57e43307 100644 --- a/script/c14878871.lua +++ b/script/c14878871.lua @@ -6,6 +6,7 @@ function c14878871.initial_effect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,14878871) e1:SetCost(c14878871.spcost) e1:SetTarget(c14878871.sptg) e1:SetOperation(c14878871.spop) @@ -27,6 +28,7 @@ end function c14878871.spop(e,tp,eg,ep,ev,re,r,rp) if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local c=e:GetHandler() local g=Duel.GetMatchingGroup(c14878871.filter,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()>=2 then local fid=e:GetHandler():GetFieldID() @@ -34,20 +36,31 @@ function c14878871.spop(e,tp,eg,ep,ev,re,r,rp) local sg=g:Select(tp,2,2,nil) Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) local tc=sg:GetFirst() - tc:RegisterFlagEffect(14878871,RESET_EVENT+0x1fe0000,0,1,fid) - tc=sg:GetNext() - tc:RegisterFlagEffect(14878871,RESET_EVENT+0x1fe0000,0,1,fid) + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(14878871,RESET_EVENT+0x1fe0000,0,1,fid) + tc=sg:GetNext() + end sg:KeepAlive() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(sg) - e1:SetCondition(c14878871.descon) - e1:SetOperation(c14878871.desop) - Duel.RegisterEffect(e1,tp) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCountLimit(1) + e3:SetLabel(fid) + e3:SetLabelObject(sg) + e3:SetCondition(c14878871.descon) + e3:SetOperation(c14878871.desop) + Duel.RegisterEffect(e3,tp) end end function c14878871.desfilter(c,fid) diff --git a/script/c14883228.lua b/script/c14883228.lua index 88f52841..b2b018ec 100644 --- a/script/c14883228.lua +++ b/script/c14883228.lua @@ -1,43 +1,43 @@ ---タイフーン -function c14883228.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c14883228.target) - e1:SetOperation(c14883228.activate) - c:RegisterEffect(e1) - --act in hand - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) - e2:SetCondition(c14883228.handcon) - c:RegisterEffect(e2) -end -function c14883228.cfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c14883228.handcon(e) - local tp=e:GetHandlerPlayer() - return not Duel.IsExistingMatchingCard(c14883228.cfilter,tp,LOCATION_ONFIELD,0,1,nil) - and Duel.IsExistingMatchingCard(c14883228.cfilter,tp,0,LOCATION_ONFIELD,2,nil) -end -function c14883228.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c14883228.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c14883228.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c14883228.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c14883228.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c14883228.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--タイフーン +function c14883228.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c14883228.target) + e1:SetOperation(c14883228.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c14883228.handcon) + c:RegisterEffect(e2) +end +function c14883228.cfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c14883228.handcon(e) + local tp=e:GetHandlerPlayer() + return not Duel.IsExistingMatchingCard(c14883228.cfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.IsExistingMatchingCard(c14883228.cfilter,tp,0,LOCATION_ONFIELD,2,nil) +end +function c14883228.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c14883228.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c14883228.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c14883228.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c14883228.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c14883228.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c14886469.lua b/script/c14886469.lua index 3413760c..f1d42f37 100644 --- a/script/c14886469.lua +++ b/script/c14886469.lua @@ -1,38 +1,38 @@ ---レッド・スプリンター -function c14886469.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(14886469,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCountLimit(1,14886469) - e1:SetCondition(c14886469.spcon) - e1:SetTarget(c14886469.sptg) - e1:SetOperation(c14886469.spop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c14886469.spcon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,e:GetHandler()) -end -function c14886469.filter(c,e,tp) - return c:IsLevelBelow(3) and c:IsRace(RACE_FIEND) and c:IsType(TYPE_TUNER) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c14886469.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c14886469.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c14886469.spop(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,c14886469.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--レッド・スプリンター +function c14886469.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14886469,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCountLimit(1,14886469) + e1:SetCondition(c14886469.spcon) + e1:SetTarget(c14886469.sptg) + e1:SetOperation(c14886469.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c14886469.spcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c14886469.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsRace(RACE_FIEND) and c:IsType(TYPE_TUNER) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c14886469.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c14886469.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c14886469.spop(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,aux.NecroValleyFilter(c14886469.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c14920218.lua b/script/c14920218.lua index 5715dcbd..7c93e44f 100644 --- a/script/c14920218.lua +++ b/script/c14920218.lua @@ -1,68 +1,68 @@ ---賤竜の魔術師 -function c14920218.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(14920218,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1,14920218) - e2:SetCondition(c14920218.pcon) - e2:SetTarget(c14920218.ptg) - e2:SetOperation(c14920218.pop) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(14920218,1)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,14920219) - e3:SetTarget(c14920218.thtg) - e3:SetOperation(c14920218.thop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) -end -function c14920218.pcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return tc and tc:IsSetCard(0x98) -end -function c14920218.pfilter(c) - return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and (c:IsSetCard(0x98) or c:IsSetCard(0x99)) and not c:IsCode(14920218) and c:IsAbleToHand() -end -function c14920218.ptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c14920218.pfilter,tp,LOCATION_EXTRA,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_EXTRA) -end -function c14920218.pop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c14920218.pfilter,tp,LOCATION_EXTRA,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c14920218.thfilter(c) - return c:IsType(TYPE_MONSTER) and ((c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM)) or c:IsSetCard(0x99)) and not c:IsCode(14920218) and c:IsAbleToHand() -end -function c14920218.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c14920218.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c14920218.thfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c14920218.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c14920218.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--賤竜の魔術師 +function c14920218.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(14920218,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1,14920218) + e2:SetCondition(c14920218.pcon) + e2:SetTarget(c14920218.ptg) + e2:SetOperation(c14920218.pop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(14920218,1)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,14920219) + e3:SetTarget(c14920218.thtg) + e3:SetOperation(c14920218.thop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c14920218.pcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return tc and tc:IsSetCard(0x98) +end +function c14920218.pfilter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and (c:IsSetCard(0x98) or c:IsSetCard(0x99)) and not c:IsCode(14920218) and c:IsAbleToHand() +end +function c14920218.ptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c14920218.pfilter,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_EXTRA) +end +function c14920218.pop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c14920218.pfilter,tp,LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c14920218.thfilter(c) + return c:IsType(TYPE_MONSTER) and ((c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM)) or c:IsSetCard(0x99)) and not c:IsCode(14920218) and c:IsAbleToHand() +end +function c14920218.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c14920218.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c14920218.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c14920218.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c14920218.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c14970113.lua b/script/c14970113.lua new file mode 100644 index 00000000..eda8652c --- /dev/null +++ b/script/c14970113.lua @@ -0,0 +1,78 @@ +--十二獣ハマーコング +--Zoodiac Hammerkong +--Scripted by Eerie Code +function c14970113.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3,c14970113.ovfilter,aux.Stringid(14970113,0),5,c14970113.xyzop) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c14970113.atkval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(c14970113.defval) + c:RegisterEffect(e2) + --Cannot be effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c14970113.efftg) + e3:SetCondition(c14970113.effcon) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) + --remove material + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(14970113,1)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c14970113.rmtg) + e4:SetOperation(c14970113.rmop) + c:RegisterEffect(e4) +end +function c14970113.ovfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf1) and not c:IsCode(14970113) +end +function c14970113.xyzop(e,tp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,14970113)==0 end + Duel.RegisterFlagEffect(tp,14970113,RESET_PHASE+PHASE_END,0,1) +end +function c14970113.atkfilter(c) + return c:IsSetCard(0xf1) and c:GetAttack()>=0 +end +function c14970113.atkval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c14970113.atkfilter,nil) + return g:GetSum(Card.GetAttack) +end +function c14970113.deffilter(c) + return c:IsSetCard(0xf1) and c:GetDefense()>=0 +end +function c14970113.defval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c14970113.deffilter,nil) + return g:GetSum(Card.GetDefense) +end +function c14970113.efftg(e,c) + return c:IsSetCard(0xf1) and c~=e:GetHandler() +end +function c14970113.effcon(e) + return e:GetHandler():GetOverlayCount()>0 +end +function c14970113.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c14970113.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetOverlayCount()>0 then + c:RemoveOverlayCard(tp,1,1,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c15052462.lua b/script/c15052462.lua index 79a60f83..884dab12 100644 --- a/script/c15052462.lua +++ b/script/c15052462.lua @@ -1,14 +1,6 @@ --紫水晶 function c15052462.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(c15052462.target) - e1:SetOperation(c15052462.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c15052462.filter) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,7 @@ function c15052462.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c15052462.eqlimit) - c:RegisterEffect(e4) -end -function c15052462.eqlimit(e,c) - return c:IsRace(RACE_ZOMBIE) end function c15052462.filter(c) - return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) -end -function c15052462.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c15052462.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c15052462.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c15052462.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c15052462.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 + return c:IsRace(RACE_ZOMBIE) +end \ No newline at end of file diff --git a/script/c15092394.lua b/script/c15092394.lua new file mode 100644 index 00000000..ff4409e8 --- /dev/null +++ b/script/c15092394.lua @@ -0,0 +1,76 @@ +--RR-エトランゼ・ファルコン +--Raidraptor – Etranger Falcon +--Scripted by Eerie Code +function c15092394.initial_effect(c) + c:EnableReviveLimit() + aux.AddXyzProcedure(c,nil,5,2) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(15092394,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c15092394.descon) + e1:SetCost(c15092394.descost) + e1:SetTarget(c15092394.destg) + e1:SetOperation(c15092394.desop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(15092394,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c15092394.spcon) + e2:SetTarget(c15092394.sptg) + e2:SetOperation(c15092394.spop) + c:RegisterEffect(e2) +end +function c15092394.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayGroup():IsExists(Card.IsType,1,nil,TYPE_XYZ) +end +function c15092394.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c15092394.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetBaseAttack()) +end +function c15092394.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT) + end +end +function c15092394.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return rp==1-tp and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c15092394.spfilter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsSetCard(0xba) + and not c:IsCode(15092394) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c15092394.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c15092394.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c15092394.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c15092394.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c15092394.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 and c:IsRelateToEffect(e) then + Duel.Overlay(tc,Group.FromCards(c)) + end +end diff --git a/script/c15146890.lua b/script/c15146890.lua index 9cd60484..4203a68d 100644 --- a/script/c15146890.lua +++ b/script/c15146890.lua @@ -1,47 +1,47 @@ ---竜脈の魔術師 -function c15146890.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(15146890,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetCondition(c15146890.condition) - e2:SetCost(c15146890.cost) - e2:SetTarget(c15146890.target) - e2:SetOperation(c15146890.operation) - c:RegisterEffect(e2) -end -function c15146890.condition(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return tc and tc:IsSetCard(0x98) -end -function c15146890.cfilter(c) - return c:IsType(TYPE_PENDULUM) and c:IsDiscardable() -end -function c15146890.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c15146890.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c15146890.cfilter,1,1,REASON_COST+REASON_DISCARD) -end -function c15146890.filter(c) - return c:IsFaceup() -end -function c15146890.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c15146890.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c15146890.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c15146890.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c15146890.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--竜脈の魔術師 +function c15146890.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(15146890,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c15146890.condition) + e2:SetCost(c15146890.cost) + e2:SetTarget(c15146890.target) + e2:SetOperation(c15146890.operation) + c:RegisterEffect(e2) +end +function c15146890.condition(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return tc and tc:IsSetCard(0x98) +end +function c15146890.cfilter(c) + return c:IsType(TYPE_PENDULUM) and c:IsDiscardable() +end +function c15146890.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c15146890.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c15146890.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c15146890.filter(c) + return c:IsFaceup() +end +function c15146890.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c15146890.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c15146890.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c15146890.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c15146890.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c15155568.lua b/script/c15155568.lua index 3b731cef..0f09fc96 100644 --- a/script/c15155568.lua +++ b/script/c15155568.lua @@ -1,63 +1,62 @@ ---破壊剣一閃 -function c15155568.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c15155568.condition) - e1:SetTarget(c15155568.target) - e1:SetOperation(c15155568.activate) - c:RegisterEffect(e1) - --disable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c15155568.discon) - e2:SetCost(c15155568.discost) - e2:SetTarget(c15155568.distg) - e2:SetOperation(c15155568.disop) - c:RegisterEffect(e2) -end -function c15155568.cfilter(c) - return c:IsFaceup() and aux.IsMaterialListCode(c,78193831) -end -function c15155568.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c15155568.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c15155568.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) -end -function c15155568.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) - Duel.Remove(g,POS_FACEUP,REASON_EFFECT) -end -function c15155568.tgfilter(c,tp) - return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) and c:IsSetCard(0xd7) -end -function c15155568.discon(e,tp,eg,ep,ev,re,r,rp) - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return tg and tg:IsExists(c15155568.tgfilter,1,nil,tp) and Duel.IsChainDisablable(ev) -end -function c15155568.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c15155568.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c15155568.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--破壊剣一閃 +function c15155568.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c15155568.condition) + e1:SetTarget(c15155568.target) + e1:SetOperation(c15155568.activate) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c15155568.discon) + e2:SetCost(c15155568.discost) + e2:SetTarget(c15155568.distg) + e2:SetOperation(c15155568.disop) + c:RegisterEffect(e2) +end +function c15155568.cfilter(c) + return c:IsFaceup() and aux.IsMaterialListCode(c,78193831) +end +function c15155568.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c15155568.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c15155568.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c15155568.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end +function c15155568.tgfilter(c,tp) + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) and c:IsSetCard(0xd7) +end +function c15155568.discon(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsExists(c15155568.tgfilter,1,nil,tp) and Duel.IsChainDisablable(ev) +end +function c15155568.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c15155568.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c15155568.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c1516510.lua b/script/c1516510.lua index 2aac1076..7bb7a038 100644 --- a/script/c1516510.lua +++ b/script/c1516510.lua @@ -1,86 +1,86 @@ ---ルーンアイズ・ペンデュラム・ドラゴン -function c1516510.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,16178681,aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER),1,true,false) - --multi attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c1516510.condition) - e1:SetOperation(c1516510.operation) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_MATERIAL_CHECK) - e2:SetValue(c1516510.valcheck) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) -end -function c1516510.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION -end -function c1516510.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local flag=e:GetLabel() - if bit.band(flag,0x3)~=0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) - e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) - if bit.band(flag,0x1)~=0 then - e1:SetDescription(aux.Stringid(1516510,0)) - e1:SetValue(1) - else - e1:SetDescription(aux.Stringid(1516510,1)) - e1:SetValue(2) - end - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - end - if bit.band(flag,0x4)~=0 then - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_IMMUNE_EFFECT) - e4:SetValue(c1516510.efilter) - e4:SetOwnerPlayer(tp) - e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e4) - end -end -function c1516510.efilter(e,re) - return e:GetOwnerPlayer()~=re:GetOwnerPlayer() -end -function c1516510.lvfilter(c) - return c:IsCode(16178681) or c:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) -end -function c1516510.imfilter(c) - return c:IsLocation(LOCATION_MZONE) and c:GetSummonType()==SUMMON_TYPE_PENDULUM -end -function c1516510.valcheck(e,c) - local g=c:GetMaterial() - local flag=0 - if g:GetCount()==2 then - local lv=0 - local lg1=g:Filter(c1516510.lvfilter,nil) - local lg2=g:Filter(Card.IsRace,nil,RACE_SPELLCASTER) - if lg1:GetCount()==2 then - lv=lg2:GetFirst():GetOriginalLevel() - local lc=lg2:GetNext() - if lc then lv=math.max(lv,lc:GetOriginalLevel()) end - else - local lc=g:GetFirst() - if lc==lg1:GetFirst() then lc=g:GetNext() end - lv=lc:GetOriginalLevel() - end - if lv>4 then - flag=0x2 - elseif lv>0 then - flag=0x1 - end - end - if g:IsExists(c1516510.imfilter,1,nil) then - flag=flag+0x4 - end - e:GetLabelObject():SetLabel(flag) -end +--ルーンアイズ・ペンデュラム・ドラゴン +function c1516510.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,16178681,aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER),1,true,false) + --multi attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c1516510.condition) + e1:SetOperation(c1516510.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c1516510.valcheck) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c1516510.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end +function c1516510.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local flag=e:GetLabel() + if bit.band(flag,0x3)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + if bit.band(flag,0x1)~=0 then + e1:SetDescription(aux.Stringid(1516510,0)) + e1:SetValue(1) + else + e1:SetDescription(aux.Stringid(1516510,1)) + e1:SetValue(2) + end + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end + if bit.band(flag,0x4)~=0 then + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetValue(c1516510.efilter) + e4:SetOwnerPlayer(tp) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e4) + end +end +function c1516510.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() +end +function c1516510.lvfilter(c,fc) + return c:IsCode(16178681) or c:CheckFusionSubstitute(fc) +end +function c1516510.imfilter(c) + return c:IsLocation(LOCATION_MZONE) and c:GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c1516510.valcheck(e,c) + local g=c:GetMaterial() + local flag=0 + if g:GetCount()==2 then + local lv=0 + local lg1=g:Filter(c1516510.lvfilter,nil,c) + local lg2=g:Filter(Card.IsRace,nil,RACE_SPELLCASTER) + if lg1:GetCount()==2 then + lv=lg2:GetFirst():GetOriginalLevel() + local lc=lg2:GetNext() + if lc then lv=math.max(lv,lc:GetOriginalLevel()) end + else + local lc=g:GetFirst() + if lc==lg1:GetFirst() then lc=g:GetNext() end + lv=lc:GetOriginalLevel() + end + if lv>4 then + flag=0x2 + elseif lv>0 then + flag=0x1 + end + end + if g:IsExists(c1516510.imfilter,1,nil) then + flag=flag+0x4 + end + e:GetLabelObject():SetLabel(flag) +end diff --git a/script/c15180041.lua b/script/c15180041.lua index af19fa41..97cf24d5 100644 --- a/script/c15180041.lua +++ b/script/c15180041.lua @@ -79,8 +79,7 @@ function c15180041.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) end function c15180041.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then Duel.SendtoGrave(eg,REASON_EFFECT) end end diff --git a/script/c15248873.lua b/script/c15248873.lua index b511f86e..19215b05 100644 --- a/script/c15248873.lua +++ b/script/c15248873.lua @@ -28,6 +28,11 @@ function c15248873.operation(e,tp,eg,ep,ev,re,r,rp) Duel.SendtoGrave(fc,REASON_RULE) Duel.BreakEffect() end + local fc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if fc2 and Duel.IsDuelType(DUEL_OBSOLETE_RULING) then + Duel.Destroy(fc2,REASON_RULE) + Duel.BreakEffect() + end Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) local te=tc:GetActivateEffect() local tep=tc:GetControler() diff --git a/script/c1525329.lua b/script/c1525329.lua index bb60a189..a527f985 100644 --- a/script/c1525329.lua +++ b/script/c1525329.lua @@ -1,53 +1,53 @@ ---7つの武器を持つハンター -function c1525329.initial_effect(c) - --arm - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(1525329,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c1525329.armtg) - e1:SetOperation(c1525329.armop) - c:RegisterEffect(e1) -end -function c1525329.armtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,563) - local rc=Duel.AnnounceRace(tp,1,0xffffff) - e:SetLabel(rc) -end -function c1525329.armop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local rc=e:GetLabel() - e:GetHandler():SetHint(CHINT_RACE,rc) - --atk up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(1525329,1)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetCondition(c1525329.upcon) - e1:SetOperation(c1525329.upop) - e1:SetLabel(rc) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - end -end -function c1525329.upcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsRace(e:GetLabel()) -end -function c1525329.upop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(1000) - c:RegisterEffect(e1) - end -end +--7つの武器を持つハンター +function c1525329.initial_effect(c) + --arm + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(1525329,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c1525329.armtg) + e1:SetOperation(c1525329.armop) + c:RegisterEffect(e1) +end +function c1525329.armtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,563) + local rc=Duel.AnnounceRace(tp,1,0xffffff) + e:SetLabel(rc) +end +function c1525329.armop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local rc=e:GetLabel() + e:GetHandler():SetHint(CHINT_RACE,rc) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(1525329,1)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c1525329.upcon) + e1:SetOperation(c1525329.upop) + e1:SetLabel(rc) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c1525329.upcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsRace(e:GetLabel()) +end +function c1525329.upop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(1000) + c:RegisterEffect(e1) + end +end diff --git a/script/c15256925.lua b/script/c15256925.lua new file mode 100644 index 00000000..5d5b73d7 --- /dev/null +++ b/script/c15256925.lua @@ -0,0 +1,61 @@ +--滅びの呪文-デス・アルテマ +function c15256925.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c15256925.condition) + e1:SetTarget(c15256925.target) + e1:SetOperation(c15256925.activate) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(15256925,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c15256925.spcon) + e2:SetTarget(c15256925.sptg) + e2:SetOperation(c15256925.spop) + c:RegisterEffect(e2) +end +function c15256925.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsLevelAbove(8) +end +function c15256925.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c15256925.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c15256925.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c15256925.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT) + end +end +function c15256925.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) and rp~=tp +end +function c15256925.spfilter(c,e,tp) + return c:IsCode(30208479,40737112) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c15256925.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c15256925.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c15256925.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c15256925.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c15270885.lua b/script/c15270885.lua index 923fdd6d..d0900036 100644 --- a/script/c15270885.lua +++ b/script/c15270885.lua @@ -1,79 +1,79 @@ ---トゥーン・ゴブリン突撃部隊 -function c15270885.initial_effect(c) - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c15270885.atklimit) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c15270885.sdescon) - e4:SetOperation(c15270885.sdesop) - c:RegisterEffect(e4) - --direct attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_DIRECT_ATTACK) - e5:SetCondition(c15270885.dircon) - c:RegisterEffect(e5) - --to defense - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e6:SetCode(EVENT_PHASE+PHASE_BATTLE) - e6:SetRange(LOCATION_MZONE) - e6:SetCountLimit(1) - e6:SetCondition(c15270885.poscon) - e6:SetOperation(c15270885.posop) - c:RegisterEffect(e6) -end -function c15270885.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c15270885.sfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c15270885.sdescon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c15270885.sfilter,1,nil) -end -function c15270885.sdesop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c15270885.dirfilter1(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c15270885.dirfilter2(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c15270885.dircon(e) - return Duel.IsExistingMatchingCard(c15270885.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) - and not Duel.IsExistingMatchingCard(c15270885.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c15270885.poscon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetAttackedCount()>0 -end -function c15270885.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsAttackPos() then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_COPY_INHERIT) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,3) - c:RegisterEffect(e1) -end +--トゥーン・ゴブリン突撃部隊 +function c15270885.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c15270885.atklimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c15270885.sdescon) + e4:SetOperation(c15270885.sdesop) + c:RegisterEffect(e4) + --direct attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DIRECT_ATTACK) + e5:SetCondition(c15270885.dircon) + c:RegisterEffect(e5) + --to defense + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c15270885.poscon) + e6:SetOperation(c15270885.posop) + c:RegisterEffect(e6) +end +function c15270885.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c15270885.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c15270885.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c15270885.sfilter,1,nil) +end +function c15270885.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c15270885.dirfilter1(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c15270885.dirfilter2(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c15270885.dircon(e) + return Duel.IsExistingMatchingCard(c15270885.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) + and not Duel.IsExistingMatchingCard(c15270885.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c15270885.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetAttackedCount()>0 +end +function c15270885.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsAttackPos() then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,3) + c:RegisterEffect(e1) +end diff --git a/script/c15294090.lua b/script/c15294090.lua index 2fd75e6f..b518e8db 100644 --- a/script/c15294090.lua +++ b/script/c15294090.lua @@ -11,7 +11,7 @@ function c15294090.initial_effect(c) c:RegisterEffect(e1) end function c15294090.cfilter(c,tp) - return c:IsSetCard(0xc008) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp + return c:IsPreviousSetCard(0xc008) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp end function c15294090.condition(e,tp,eg,ep,ev,re,r,rp) return bit.band(r,REASON_EFFECT)~=0 and rp~=tp and eg:IsExists(c15294090.cfilter,1,nil,tp) @@ -21,16 +21,15 @@ function c15294090.spfilter(c,e,tp) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c15294090.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c15294090.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,PLAYER_ALL,LOCATION_GRAVE) + local g=Duel.GetMatchingGroup(c15294090.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,e,tp) + if chk==0 then return g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=g:GetCount() end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) end function c15294090.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c15294090.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,e,tp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c15294090.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,ft,nil,e,tp) - if g:GetCount()~=0 then + if ft<=0 or ft1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c15317640.lua b/script/c15317640.lua index 9cbcc3dd..1b043a4d 100644 --- a/script/c15317640.lua +++ b/script/c15317640.lua @@ -1,74 +1,74 @@ ---巨大戦艦 カバード・コア -function c15317640.initial_effect(c) -c:EnableCounterPermit(0x1f) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(15317640,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c15317640.addct) - e1:SetOperation(c15317640.addc) - c:RegisterEffect(e1) - --battle indestructable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - c:RegisterEffect(e2) - --remove counter - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(15317640,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_DAMAGE_STEP_END) - e3:SetCondition(c15317640.rctcon) - e3:SetTarget(c15317640.rcttg) - e3:SetOperation(c15317640.rctop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(15317640,2)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_DAMAGE_STEP_END) - e4:SetCondition(c15317640.descon) - e4:SetTarget(c15317640.destg) - e4:SetOperation(c15317640.desop) - c:RegisterEffect(e4) -end -function c15317640.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,2,0,0x1f) -end -function c15317640.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x1f,2) - end -end -function c15317640.rctcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)~=0 -end -function c15317640.rcttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) -end -function c15317640.rctop(e,tp,eg,ep,ev,re,r,rp) - local coin=Duel.SelectOption(tp,60,61) - local res=Duel.TossCoin(tp,1) - if coin==res then - e:GetHandler():RemoveCounter(tp,0x1f,1,REASON_EFFECT) - end -end -function c15317640.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)==0 -end -function c15317640.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 c15317640.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - Duel.Destroy(c,REASON_EFFECT) - end -end +--巨大戦艦 カバード・コア +function c15317640.initial_effect(c) + c:EnableCounterPermit(0x1f) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(15317640,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c15317640.addct) + e1:SetOperation(c15317640.addc) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --remove counter + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(15317640,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c15317640.rctcon) + e3:SetTarget(c15317640.rcttg) + e3:SetOperation(c15317640.rctop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(15317640,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetCondition(c15317640.descon) + e4:SetTarget(c15317640.destg) + e4:SetOperation(c15317640.desop) + c:RegisterEffect(e4) +end +function c15317640.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,2,0,0x1f) +end +function c15317640.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x1f,2) + end +end +function c15317640.rctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)~=0 +end +function c15317640.rcttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c15317640.rctop(e,tp,eg,ep,ev,re,r,rp) + local coin=Duel.SelectOption(tp,60,61) + local res=Duel.TossCoin(tp,1) + if coin==res then + e:GetHandler():RemoveCounter(tp,0x1f,1,REASON_EFFECT) + end +end +function c15317640.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)==0 +end +function c15317640.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 c15317640.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c15341821.lua b/script/c15341821.lua index b2a735c4..f7c809ef 100644 --- a/script/c15341821.lua +++ b/script/c15341821.lua @@ -1,34 +1,34 @@ ---ダンディライオン -function c15341821.initial_effect(c) - --token - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(15341821,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c15341821.target) - e1:SetOperation(c15341821.operation) - c:RegisterEffect(e1) -end -function c15341821.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) -end -function c15341821.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - if not Duel.IsPlayerCanSpecialSummonMonster(tp,15341822,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_WIND) then return end - for i=1,2 do - local token=Duel.CreateToken(tp,15341821+i) - Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - token:RegisterEffect(e1,true) - end - Duel.SpecialSummonComplete() -end +--ダンディライオン +function c15341821.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(15341821,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c15341821.target) + e1:SetOperation(c15341821.operation) + c:RegisterEffect(e1) +end +function c15341821.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c15341821.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,15341822,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_WIND) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,15341821+i) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c15381252.lua b/script/c15381252.lua index 61975d11..05dd9eeb 100644 --- a/script/c15381252.lua +++ b/script/c15381252.lua @@ -1,47 +1,47 @@ ---狂戦士の魂 -function c15381252.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetCountLimit(1,15381252+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c15381252.condition) - e1:SetCost(c15381252.cost) - e1:SetTarget(c15381252.target) - e1:SetOperation(c15381252.activate) - c:RegisterEffect(e1) -end -function c15381252.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and eg:GetFirst():GetControler()==tp and ev<=1500 and Duel.GetAttackTarget()==nil -end -function c15381252.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - g:RemoveCard(e:GetHandler()) - return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() - end - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) -end -function c15381252.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c15381252.activate(e,tp,eg,ep,ev,re,r,rp) - local count=8 - while count>0 and Duel.IsPlayerCanDiscardDeck(tp,1) and Duel.GetLP(1-tp)>0 do - if count<8 then Duel.BreakEffect() end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - if tc:IsType(TYPE_MONSTER) then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) - if tc:IsLocation(LOCATION_GRAVE) then - Duel.Damage(1-tp,500,REASON_EFFECT) - count=count-1 - else count=0 end - else - count=0 - end - end -end +--狂戦士の魂 +function c15381252.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCountLimit(1,15381252+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c15381252.condition) + e1:SetCost(c15381252.cost) + e1:SetTarget(c15381252.target) + e1:SetOperation(c15381252.activate) + c:RegisterEffect(e1) +end +function c15381252.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst():GetControler()==tp and ev<=1500 and Duel.GetAttackTarget()==nil +end +function c15381252.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c15381252.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c15381252.activate(e,tp,eg,ep,ev,re,r,rp) + local count=8 + while count>0 and Duel.IsPlayerCanDiscardDeck(tp,1) and Duel.GetLP(1-tp)>0 do + if count<8 then Duel.BreakEffect() end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsType(TYPE_MONSTER) then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) + if tc:IsLocation(LOCATION_GRAVE) then + Duel.Damage(1-tp,500,REASON_EFFECT) + count=count-1 + else count=0 end + else + count=0 + end + end +end diff --git a/script/c15471265.lua b/script/c15471265.lua index c45a2c56..0939ac96 100644 --- a/script/c15471265.lua +++ b/script/c15471265.lua @@ -1,55 +1,55 @@ ---バーサーカークラッシュ -function c15471265.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(c15471265.condition) - e1:SetCost(c15471265.cost) - e1:SetTarget(c15471265.target) - e1:SetOperation(c15471265.activate) - c:RegisterEffect(e1) -end -function c15471265.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c15471265.cfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c15471265.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c15471265.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c15471265.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - e:SetLabelObject(g:GetFirst()) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c15471265.filter(c) - return c:IsFaceup() and c:IsCode(57116033) -end -function c15471265.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c15471265.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c15471265.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c15471265.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c15471265.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local rc=e:GetLabelObject() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(rc:GetTextAttack()) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(rc:GetTextDefense()) - tc:RegisterEffect(e2) - end -end +--バーサーカークラッシュ +function c15471265.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(c15471265.condition) + e1:SetCost(c15471265.cost) + e1:SetTarget(c15471265.target) + e1:SetOperation(c15471265.activate) + c:RegisterEffect(e1) +end +function c15471265.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c15471265.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c15471265.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c15471265.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c15471265.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + e:SetLabelObject(g:GetFirst()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c15471265.filter(c) + return c:IsFaceup() and c:IsCode(57116033) +end +function c15471265.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c15471265.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c15471265.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c15471265.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c15471265.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local rc=e:GetLabelObject() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(rc:GetTextAttack()) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(rc:GetTextDefense()) + tc:RegisterEffect(e2) + end +end diff --git a/script/c15495787.lua b/script/c15495787.lua index 46d72f96..57115798 100644 --- a/script/c15495787.lua +++ b/script/c15495787.lua @@ -1,56 +1,56 @@ ---超重武者ココロガマ-A -function c15495787.initial_effect(c) - --summon limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetCondition(c15495787.sumcon) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(15495787,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetRange(LOCATION_HAND) - e3:SetCode(EVENT_BATTLE_DAMAGE) - e3:SetCondition(c15495787.spcon) - e3:SetTarget(c15495787.sptg) - e3:SetOperation(c15495787.spop) - c:RegisterEffect(e3) -end -function c15495787.sfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c15495787.sumcon(e) - return Duel.IsExistingMatchingCard(c15495787.sfilter,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil) -end -function c15495787.spcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp and not c15495787.sumcon(e) -end -function c15495787.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if Duel.IsExistingMatchingCard(c15495787.sfilter,tp,LOCATION_GRAVE,0,1,nil) then return false end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c15495787.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e2) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--超重武者ココロガマ-A +function c15495787.initial_effect(c) + --summon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c15495787.sumcon) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(15495787,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_HAND) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetCondition(c15495787.spcon) + e3:SetTarget(c15495787.sptg) + e3:SetOperation(c15495787.spop) + c:RegisterEffect(e3) +end +function c15495787.sfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c15495787.sumcon(e) + return Duel.IsExistingMatchingCard(c15495787.sfilter,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil) +end +function c15495787.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and not c15495787.sumcon(e) +end +function c15495787.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.IsExistingMatchingCard(c15495787.sfilter,tp,LOCATION_GRAVE,0,1,nil) then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c15495787.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c15502037.lua b/script/c15502037.lua index f08e3397..0beca82e 100644 --- a/script/c15502037.lua +++ b/script/c15502037.lua @@ -21,6 +21,7 @@ function c15502037.initial_effect(c) e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetCode(EVENT_FREE_CHAIN) e3:SetRange(LOCATION_MZONE) + e3:SetHintTiming(0,TIMING_END_PHASE) e3:SetCondition(c15502037.spcon) e3:SetCost(c15502037.spcost) e3:SetTarget(c15502037.sptg) diff --git a/script/c15545291.lua b/script/c15545291.lua index 0d8b8a8f..a9f4f82c 100644 --- a/script/c15545291.lua +++ b/script/c15545291.lua @@ -16,7 +16,7 @@ function c15545291.initial_effect(c) --destroy local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(15545291,1)) - e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e3:SetCategory(CATEGORY_DESTROY) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e3:SetProperty(EFFECT_FLAG_CARD_TARGET) e3:SetCode(EVENT_SUMMON_SUCCESS) @@ -34,11 +34,10 @@ end function c15545291.otfilter(c) return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE end -function c15545291.otcon(e,c) +function c15545291.otcon(e,c,minc) if c==nil then return true end local mg=Duel.GetMatchingGroup(c15545291.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - return c:GetLevel()>6 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c15545291.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c15545291.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) @@ -59,6 +58,7 @@ function c15545291.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) local g=Duel.SelectTarget(tp,c15545291.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,2,nil) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) if e:GetLabel()==1 then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) end end diff --git a/script/c15555120.lua b/script/c15555120.lua index 48cde726..80a52828 100644 --- a/script/c15555120.lua +++ b/script/c15555120.lua @@ -1,52 +1,52 @@ ---ハイ・スピード・リレベル -function c15555120.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCost(c15555120.cost) - e1:SetTarget(c15555120.target) - e1:SetOperation(c15555120.activate) - c:RegisterEffect(e1) -end -function c15555120.cfilter(c,tp) - local lv=c:GetLevel() - return lv>0 and c:IsSetCard(0x2016) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() - and Duel.IsExistingTarget(c15555120.filter,tp,LOCATION_MZONE,0,1,nil,lv) -end -function c15555120.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c15555120.cfilter,tp,LOCATION_GRAVE,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c15555120.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,tp) - Duel.Remove(g,POS_FACEUP,REASON_COST) - e:SetLabel(g:GetFirst():GetLevel()) -end -function c15555120.filter(c,lv) - local clv=c:GetLevel() - return c:IsFaceup() and clv>0 and clv~=lv and c:IsType(TYPE_SYNCHRO) -end -function c15555120.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c15555120.filter(chkc,e:GetLabel()) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c15555120.filter,tp,LOCATION_MZONE,0,1,1,nil,e:GetLabel()) -end -function c15555120.activate(e,tp,eg,ep,ev,re,r,rp) - local lv=e:GetLabel() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetLevel()~=lv then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetValue(lv) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(lv*500) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--ハイ・スピード・リレベル +function c15555120.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c15555120.cost) + e1:SetTarget(c15555120.target) + e1:SetOperation(c15555120.activate) + c:RegisterEffect(e1) +end +function c15555120.cfilter(c,tp) + local lv=c:GetLevel() + return lv>0 and c:IsSetCard(0x2016) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() + and Duel.IsExistingTarget(c15555120.filter,tp,LOCATION_MZONE,0,1,nil,lv) +end +function c15555120.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c15555120.cfilter,tp,LOCATION_GRAVE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c15555120.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,tp) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(g:GetFirst():GetLevel()) +end +function c15555120.filter(c,lv) + local clv=c:GetLevel() + return c:IsFaceup() and clv>0 and clv~=lv and c:IsType(TYPE_SYNCHRO) +end +function c15555120.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c15555120.filter(chkc,e:GetLabel()) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c15555120.filter,tp,LOCATION_MZONE,0,1,1,nil,e:GetLabel()) +end +function c15555120.activate(e,tp,eg,ep,ev,re,r,rp) + local lv=e:GetLabel() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetLevel()~=lv then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(lv*500) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c15561463.lua b/script/c15561463.lua index 7843b490..385d62c5 100644 --- a/script/c15561463.lua +++ b/script/c15561463.lua @@ -8,7 +8,7 @@ function c15561463.initial_effect(c) e1:SetCategory(CATEGORY_DESTROY) e1:SetDescription(aux.Stringid(15561463,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCost(c15561463.descost) e1:SetTarget(c15561463.destg) diff --git a/script/c15574615.lua b/script/c15574615.lua index b8c55651..b0dad388 100644 --- a/script/c15574615.lua +++ b/script/c15574615.lua @@ -1,91 +1,91 @@ ---異次元ジェット・アイアン号 -function c15574615.initial_effect(c) - c:EnableReviveLimit() - --special summon rule - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c15574615.spcon) - e1:SetOperation(c15574615.spop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(15574615,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c15574615.cost) - e2:SetTarget(c15574615.target) - e2:SetOperation(c15574615.operation) - c:RegisterEffect(e2) -end -function c15574615.sprfilter(c) - return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsAbleToGraveAsCost() - and c:IsCode(80208158,16796157,43791861,79185500) -end -function c15574615.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local ct=-ft+1 - local mg=Duel.GetMatchingGroup(c15574615.sprfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,nil) - return mg:GetClassCount(Card.GetCode)==4 - and mg:Filter(Card.IsLocation,nil,LOCATION_MZONE):GetClassCount(Card.GetCode)>=ct -end -function c15574615.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local ct=-ft+1 - local mg=Duel.GetMatchingGroup(c15574615.sprfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,nil) - local g=Group.CreateGroup() - for i=1,4 do - local tc=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - if ct>0 then - tc=mg:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() - ct=ct-1 - else - tc=mg:Select(tp,1,1,nil):GetFirst() - end - mg:Remove(Card.IsCode,nil,tc:GetCode()) - g:AddCard(tc) - end - Duel.SendtoGrave(g,REASON_COST) -end -function c15574615.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c15574615.spfilter(c,e,tp,code) - return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c15574615.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>=3 - and Duel.IsExistingTarget(c15574615.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,80208158) - and Duel.IsExistingTarget(c15574615.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,16796157) - and Duel.IsExistingTarget(c15574615.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,43791861) - and Duel.IsExistingTarget(c15574615.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,79185500) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectTarget(tp,c15574615.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,80208158) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectTarget(tp,c15574615.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,16796157) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g3=Duel.SelectTarget(tp,c15574615.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,43791861) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g4=Duel.SelectTarget(tp,c15574615.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,79185500) - g1:Merge(g2) - g1:Merge(g3) - g1:Merge(g4) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,4,0,0) -end -function c15574615.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if g:GetCount()>ft then return end - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) -end +--異次元ジェット・アイアン号 +function c15574615.initial_effect(c) + c:EnableReviveLimit() + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c15574615.spcon) + e1:SetOperation(c15574615.spop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(15574615,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c15574615.cost) + e2:SetTarget(c15574615.target) + e2:SetOperation(c15574615.operation) + c:RegisterEffect(e2) +end +function c15574615.sprfilter(c) + return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsAbleToGraveAsCost() + and c:IsCode(80208158,16796157,43791861,79185500) +end +function c15574615.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + local mg=Duel.GetMatchingGroup(c15574615.sprfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,nil) + return mg:GetClassCount(Card.GetCode)==4 + and mg:Filter(Card.IsLocation,nil,LOCATION_MZONE):GetClassCount(Card.GetCode)>=ct +end +function c15574615.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + local mg=Duel.GetMatchingGroup(c15574615.sprfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,nil) + local g=Group.CreateGroup() + for i=1,4 do + local tc=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + if ct>0 then + tc=mg:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + ct=ct-1 + else + tc=mg:Select(tp,1,1,nil):GetFirst() + end + mg:Remove(Card.IsCode,nil,tc:GetCode()) + g:AddCard(tc) + end + Duel.SendtoGrave(g,REASON_COST) +end +function c15574615.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c15574615.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c15574615.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>=3 + and Duel.IsExistingTarget(c15574615.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,80208158) + and Duel.IsExistingTarget(c15574615.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,16796157) + and Duel.IsExistingTarget(c15574615.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,43791861) + and Duel.IsExistingTarget(c15574615.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,79185500) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c15574615.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,80208158) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c15574615.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,16796157) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g3=Duel.SelectTarget(tp,c15574615.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,43791861) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g4=Duel.SelectTarget(tp,c15574615.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,79185500) + g1:Merge(g2) + g1:Merge(g3) + g1:Merge(g4) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,4,0,0) +end +function c15574615.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if g:GetCount()>ft then return end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c1557499.lua b/script/c1557499.lua index 46603322..e00d3ce1 100644 --- a/script/c1557499.lua +++ b/script/c1557499.lua @@ -1,14 +1,6 @@ --銀の弓矢 function c1557499.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(c1557499.target) - e1:SetOperation(c1557499.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c1557499.filter) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,7 @@ function c1557499.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c1557499.eqlimit) - c:RegisterEffect(e4) -end -function c1557499.eqlimit(e,c) - return c:IsRace(RACE_FAIRY) end function c1557499.filter(c) - return c:IsFaceup() and c:IsRace(RACE_FAIRY) -end -function c1557499.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c1557499.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c1557499.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c1557499.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c1557499.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 + return c:IsRace(RACE_FAIRY) +end \ No newline at end of file diff --git a/script/c15582767.lua b/script/c15582767.lua index 8aeb476c..9c554566 100644 --- a/script/c15582767.lua +++ b/script/c15582767.lua @@ -1,68 +1,68 @@ ---連成する振動 -function c15582767.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c15582767.target1) - e1:SetOperation(c15582767.operation) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(15582767,0)) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1,15582767) - e2:SetCost(c15582767.cost) - e2:SetTarget(c15582767.target2) - e2:SetOperation(c15582767.operation) - e2:SetLabel(1) - c:RegisterEffect(e2) -end -function c15582767.filter(c) - return (c:GetSequence()==6 or c:GetSequence()==7) -end -function c15582767.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c15582767.filter(chkc) end - if chk==0 then return true end - if Duel.GetFlagEffect(tp,15582767)==0 and Duel.IsPlayerCanDraw(tp,1) - and Duel.IsExistingTarget(c15582767.filter,tp,LOCATION_SZONE,0,1,nil) - and Duel.SelectYesNo(tp,94) then - e:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.RegisterFlagEffect(tp,15582767,RESET_PHASE+PHASE_END,0,1) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c15582767.filter,tp,LOCATION_SZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) - e:SetLabel(1) - else - e:SetCategory(0) - e:SetProperty(0) - e:SetLabel(0) - end -end -function c15582767.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,15582767)==0 end - Duel.RegisterFlagEffect(tp,15582767,RESET_PHASE+PHASE_END,0,1) -end -function c15582767.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c15582767.filter(chkc) end - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) - and Duel.IsExistingTarget(c15582767.filter,tp,LOCATION_SZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c15582767.filter,tp,LOCATION_SZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c15582767.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.BreakEffect() - Duel.Draw(tp,1,REASON_EFFECT) - end -end +--連成する振動 +function c15582767.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c15582767.target1) + e1:SetOperation(c15582767.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(15582767,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,15582767) + e2:SetCost(c15582767.cost) + e2:SetTarget(c15582767.target2) + e2:SetOperation(c15582767.operation) + e2:SetLabel(1) + c:RegisterEffect(e2) +end +function c15582767.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) +end +function c15582767.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c15582767.filter(chkc) end + if chk==0 then return true end + if Duel.GetFlagEffect(tp,15582767)==0 and Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c15582767.filter,tp,LOCATION_SZONE,0,1,nil) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.RegisterFlagEffect(tp,15582767,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c15582767.filter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + e:SetLabel(1) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetLabel(0) + end +end +function c15582767.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,15582767)==0 end + Duel.RegisterFlagEffect(tp,15582767,RESET_PHASE+PHASE_END,0,1) +end +function c15582767.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c15582767.filter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c15582767.filter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c15582767.filter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c15582767.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c15605085.lua b/script/c15605085.lua index e39f03fa..90d4c384 100644 --- a/script/c15605085.lua +++ b/script/c15605085.lua @@ -26,11 +26,11 @@ end function c15605085.otfilter(c,tp) return c:IsSetCard(0x2) and (c:IsControler(tp) or c:IsFaceup()) end -function c15605085.otcon(e,c) +function c15605085.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c15605085.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c15605085.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c15605085.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c1561110.lua b/script/c1561110.lua index a8994c14..ef0f144b 100644 --- a/script/c1561110.lua +++ b/script/c1561110.lua @@ -52,7 +52,7 @@ function c1561110.splimit(e,se,sp,st) return not e:GetHandler():IsLocation(LOCATION_EXTRA) end function c1561110.rmfilter(c) - return c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial(nil,true) + return c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() end function c1561110.rmfilter1(c,mg,ft) local mg2=mg:Clone() diff --git a/script/c15667446.lua b/script/c15667446.lua index 5f8fb1f8..67dd8392 100644 --- a/script/c15667446.lua +++ b/script/c15667446.lua @@ -1,46 +1,46 @@ ---暗黒界の闘神 ラチナ -function c15667446.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(15667446,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c15667446.spcon) - e1:SetTarget(c15667446.sptg) - e1:SetOperation(c15667446.spop) - c:RegisterEffect(e1) -end -function c15667446.spcon(e,tp,eg,ep,ev,re,r,rp) - e:SetLabel(e:GetHandler():GetPreviousControler()) - return e:GetHandler():IsPreviousLocation(LOCATION_HAND) and bit.band(r,0x4040)==0x4040 -end -function c15667446.atfilter(c) - return c:IsFaceup() and c:IsRace(RACE_FIEND) -end -function c15667446.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c15667446.atfilter(chkc) end - if chk==0 then return true end - if rp~=tp and tp==e:GetLabel() then - e:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_ATKCHANGE) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c15667446.atfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - else - e:SetCategory(CATEGORY_SPECIAL_SUMMON) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c15667446.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) and Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP)>0 then - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.BreakEffect() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(500) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end - end -end +--暗黒界の闘神 ラチナ +function c15667446.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(15667446,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c15667446.spcon) + e1:SetTarget(c15667446.sptg) + e1:SetOperation(c15667446.spop) + c:RegisterEffect(e1) +end +function c15667446.spcon(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(e:GetHandler():GetPreviousControler()) + return e:GetHandler():IsPreviousLocation(LOCATION_HAND) and bit.band(r,0x4040)==0x4040 +end +function c15667446.atfilter(c) + return c:IsFaceup() and c:IsRace(RACE_FIEND) +end +function c15667446.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c15667446.atfilter(chkc) end + if chk==0 then return true end + if rp~=tp and tp==e:GetLabel() then + e:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_ATKCHANGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c15667446.atfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + else + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c15667446.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) and Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP)>0 then + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.BreakEffect() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c15800838.lua b/script/c15800838.lua index d4a5384f..17f25dd9 100644 --- a/script/c15800838.lua +++ b/script/c15800838.lua @@ -1,31 +1,31 @@ ---マインドクラッシュ -function c15800838.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_TOHAND) - e1:SetCategory(CATEGORY_HANDES) - e1:SetTarget(c15800838.target) - e1:SetOperation(c15800838.operation) - c:RegisterEffect(e1) -end -function c15800838.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 - and Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,564) - local ac=Duel.AnnounceCard(tp) - Duel.SetTargetParam(ac) - Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) -end -function c15800838.operation(e,tp,eg,ep,ev,re,r,rp) - local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,ac) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) - else - local sg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - local dg=sg:RandomSelect(tp,1) - Duel.SendtoGrave(dg,REASON_EFFECT+REASON_DISCARD) - end -end +--マインドクラッシュ +function c15800838.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_TOHAND) + e1:SetCategory(CATEGORY_HANDES) + e1:SetTarget(c15800838.target) + e1:SetOperation(c15800838.operation) + c:RegisterEffect(e1) +end +function c15800838.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 + and Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c15800838.operation(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,ac) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + else + local sg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local dg=sg:RandomSelect(tp,1) + Duel.SendtoGrave(dg,REASON_EFFECT+REASON_DISCARD) + end +end diff --git a/script/c1580833.lua b/script/c1580833.lua index 103782de..3e42a0e5 100644 --- a/script/c1580833.lua +++ b/script/c1580833.lua @@ -1,59 +1,59 @@ ---ダイナミスト・ステゴサウラー -function c1580833.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_PZONE) - e2:SetTarget(c1580833.reptg) - e2:SetValue(c1580833.repval) - e2:SetOperation(c1580833.repop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLED) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c1580833.descon) - e3:SetTarget(c1580833.destg) - e3:SetOperation(c1580833.desop) - c:RegisterEffect(e3) -end -function c1580833.filter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) and c:IsSetCard(0xd8) - and (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp)) -end -function c1580833.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c1580833.filter,1,e:GetHandler(),tp) and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end - return Duel.SelectYesNo(tp,aux.Stringid(1580833,0)) -end -function c1580833.repval(e,c) - return c1580833.filter(c,e:GetHandlerPlayer()) -end -function c1580833.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) -end -function c1580833.descon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if not d then return false end - if d:IsControler(tp) then a,d=d,a end - return a:IsType(TYPE_PENDULUM) and a~=e:GetHandler() and d:IsControler(1-tp) -end -function c1580833.destg(e,tp,eg,ep,ev,re,r,rp,chk) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if chk==0 then return a:IsDestructable() and d:IsDestructable() end - local g=Group.FromCards(a,d) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) -end -function c1580833.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - end -end +--ダイナミスト・ステゴサウラー +function c1580833.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_PZONE) + e2:SetTarget(c1580833.reptg) + e2:SetValue(c1580833.repval) + e2:SetOperation(c1580833.repop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLED) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c1580833.descon) + e3:SetTarget(c1580833.destg) + e3:SetOperation(c1580833.desop) + c:RegisterEffect(e3) +end +function c1580833.filter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) and c:IsSetCard(0xd8) + and (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp)) +end +function c1580833.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c1580833.filter,1,e:GetHandler(),tp) and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end + return Duel.SelectYesNo(tp,aux.Stringid(1580833,0)) +end +function c1580833.repval(e,c) + return c1580833.filter(c,e:GetHandlerPlayer()) +end +function c1580833.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end +function c1580833.descon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if d:IsControler(tp) then a,d=d,a end + return a:IsType(TYPE_PENDULUM) and a~=e:GetHandler() and d:IsControler(1-tp) +end +function c1580833.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if chk==0 then return a:IsDestructable() and d:IsDestructable() end + local g=Group.FromCards(a,d) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) +end +function c1580833.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c15854426.lua b/script/c15854426.lua index cbfc8b76..2db54590 100644 --- a/script/c15854426.lua +++ b/script/c15854426.lua @@ -1,48 +1,48 @@ ---霞の谷の神風 -function c15854426.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(15854426,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_TO_HAND) - e2:SetCountLimit(1) - e2:SetCondition(c15854426.condition) - e2:SetTarget(c15854426.target) - e2:SetOperation(c15854426.operation) - c:RegisterEffect(e2) -end -function c15854426.cfilter(c,tp) - return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) - and bit.band(c:GetPreviousAttributeOnField(),ATTRIBUTE_WIND)~=0 - and c:IsPreviousPosition(POS_FACEUP) -end -function c15854426.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c15854426.cfilter,1,nil,tp) -end -function c15854426.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_WIND) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c15854426.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and not e:GetHandler():IsStatus(STATUS_CHAINING) - and Duel.IsExistingMatchingCard(c15854426.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c15854426.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c15854426.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--霞の谷の神風 +function c15854426.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(15854426,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_TO_HAND) + e2:SetCountLimit(1) + e2:SetCondition(c15854426.condition) + e2:SetTarget(c15854426.target) + e2:SetOperation(c15854426.operation) + c:RegisterEffect(e2) +end +function c15854426.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and bit.band(c:GetPreviousAttributeOnField(),ATTRIBUTE_WIND)~=0 + and c:IsPreviousPosition(POS_FACEUP) +end +function c15854426.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c15854426.cfilter,1,nil,tp) +end +function c15854426.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_WIND) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c15854426.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.IsExistingMatchingCard(c15854426.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c15854426.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c15854426.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c15914410.lua b/script/c15914410.lua index c2ef2309..7ab04dcd 100644 --- a/script/c15914410.lua +++ b/script/c15914410.lua @@ -6,7 +6,7 @@ function c15914410.initial_effect(c) -- local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(15914410,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) diff --git a/script/c15939229.lua b/script/c15939229.lua index b4c62d4b..3dad15eb 100644 --- a/script/c15939229.lua +++ b/script/c15939229.lua @@ -13,6 +13,7 @@ function c15939229.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(15939229,0)) e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) e2:SetCode(EVENT_FREE_CHAIN) @@ -25,7 +26,7 @@ function c15939229.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(15939229,1)) e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e3:SetRange(LOCATION_MZONE) e3:SetCost(c15939229.cost) e3:SetTarget(c15939229.settg) diff --git a/script/c15941690.lua b/script/c15941690.lua index 82f886a5..afd9289e 100644 --- a/script/c15941690.lua +++ b/script/c15941690.lua @@ -40,8 +40,8 @@ end function c15941690.spop(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,c15941690.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c15941690.filter),tp,LOCATION_GRAVE+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 diff --git a/script/c15978426.lua b/script/c15978426.lua index 091fc820..ab639052 100644 --- a/script/c15978426.lua +++ b/script/c15978426.lua @@ -1,40 +1,40 @@ ---EMセカンドンキー -function c15978426.initial_effect(c) - --tograve - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(15978426,0)) - e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SEARCH+CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c15978426.tgtg) - e1:SetOperation(c15978426.tgop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c15978426.filter(c,tohand) - return c:IsSetCard(0x9f) and not c:IsCode(15978426) and c:IsType(TYPE_MONSTER) - and (c:IsAbleToGrave() or (tohand and c:IsAbleToHand())) -end -function c15978426.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local tohand=Duel.GetFieldCard(tp,LOCATION_SZONE,6) and Duel.GetFieldCard(tp,LOCATION_SZONE,7) - return Duel.IsExistingMatchingCard(c15978426.filter,tp,LOCATION_DECK,0,1,nil,tohand) - end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c15978426.tgop(e,tp,eg,ep,ev,re,r,rp) - local tohand=Duel.GetFieldCard(tp,LOCATION_SZONE,6) and Duel.GetFieldCard(tp,LOCATION_SZONE,7) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c15978426.filter,tp,LOCATION_DECK,0,1,1,nil,tohand) - local tc=g:GetFirst() - if not tc then return end - if tohand and tc:IsAbleToHand() and (not tc:IsAbleToGrave() or Duel.SelectYesNo(tp,aux.Stringid(15978426,1))) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - else - Duel.SendtoGrave(tc,REASON_EFFECT) - end -end +--EMセカンドンキー +function c15978426.initial_effect(c) + --tograve + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(15978426,0)) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SEARCH+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c15978426.tgtg) + e1:SetOperation(c15978426.tgop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c15978426.filter(c,tohand) + return c:IsSetCard(0x9f) and not c:IsCode(15978426) and c:IsType(TYPE_MONSTER) + and (c:IsAbleToGrave() or (tohand and c:IsAbleToHand())) +end +function c15978426.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local tohand=Duel.GetFieldCard(tp,LOCATION_SZONE,6) and Duel.GetFieldCard(tp,LOCATION_SZONE,7) + return Duel.IsExistingMatchingCard(c15978426.filter,tp,LOCATION_DECK,0,1,nil,tohand) + end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c15978426.tgop(e,tp,eg,ep,ev,re,r,rp) + local tohand=Duel.GetFieldCard(tp,LOCATION_SZONE,6) and Duel.GetFieldCard(tp,LOCATION_SZONE,7) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c15978426.filter,tp,LOCATION_DECK,0,1,1,nil,tohand) + local tc=g:GetFirst() + if not tc then return end + if tohand and tc:IsAbleToHand() and (not tc:IsAbleToGrave() or Duel.SelectYesNo(tp,aux.Stringid(15978426,1))) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + else + Duel.SendtoGrave(tc,REASON_EFFECT) + end +end diff --git a/script/c15981690.lua b/script/c15981690.lua index 395676ac..9c811e11 100644 --- a/script/c15981690.lua +++ b/script/c15981690.lua @@ -1,59 +1,59 @@ ---カーボネドン -function c15981690.initial_effect(c) - --atk up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(15981690,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetCondition(c15981690.upcon) - e1:SetOperation(c15981690.upop) - c:RegisterEffect(e1) - --special - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(15981690,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,15981690) - e2:SetCost(c15981690.spcost) - e2:SetTarget(c15981690.sptg) - e2:SetOperation(c15981690.spop) - c:RegisterEffect(e2) -end -function c15981690.upcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsAttribute(ATTRIBUTE_FIRE) -end -function c15981690.upop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(1000) - c:RegisterEffect(e1) - end -end -function c15981690.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c15981690.spfilter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsLevelBelow(7) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c15981690.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c15981690.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) -end -function c15981690.spop(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,c15981690.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--カーボネドン +function c15981690.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(15981690,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c15981690.upcon) + e1:SetOperation(c15981690.upop) + c:RegisterEffect(e1) + --special + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(15981690,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,15981690) + e2:SetCost(c15981690.spcost) + e2:SetTarget(c15981690.sptg) + e2:SetOperation(c15981690.spop) + c:RegisterEffect(e2) +end +function c15981690.upcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsAttribute(ATTRIBUTE_FIRE) +end +function c15981690.upop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(1000) + c:RegisterEffect(e1) + end +end +function c15981690.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c15981690.spfilter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsLevelBelow(7) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c15981690.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c15981690.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c15981690.spop(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,c15981690.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c16037007.lua b/script/c16037007.lua index d3835d26..94e82307 100644 --- a/script/c16037007.lua +++ b/script/c16037007.lua @@ -9,7 +9,7 @@ function c16037007.initial_effect(c) e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e1:SetCode(EVENT_CHAINING) e1:SetCondition(c16037007.discon) e1:SetCost(c16037007.discost) diff --git a/script/c16114248.lua b/script/c16114248.lua index 78c6ea95..5bbb1324 100644 --- a/script/c16114248.lua +++ b/script/c16114248.lua @@ -16,7 +16,7 @@ function c16114248.initial_effect(c) c:RegisterEffect(e2) end function c16114248.filter(c,fc) - return c:IsRace(RACE_MACHINE) and c:IsCanBeFusionMaterial(fc) + return c:IsRace(RACE_MACHINE) and not c:IsHasEffect(6205579) and c:IsCanBeFusionMaterial(fc) end function c16114248.spfilter(c,mg) return mg:IsExists(c16114248.spfilter2,1,c,c) diff --git a/script/c16135253.lua b/script/c16135253.lua index 09adba15..1b317495 100644 --- a/script/c16135253.lua +++ b/script/c16135253.lua @@ -25,11 +25,10 @@ end function c16135253.operation(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local dc=Duel.TossDice(tp,1) - local g=Duel.GetMatchingGroup(c16135253.filter,tp,LOCATION_GRAVE,0,nil,e,tp,dc) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c16135253.filter),tp,LOCATION_GRAVE,0,nil,e,tp,dc) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(16135253,1)) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=g:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c16157341.lua b/script/c16157341.lua index 629f9fbf..5b824ed4 100644 --- a/script/c16157341.lua +++ b/script/c16157341.lua @@ -1,40 +1,40 @@ ---武神器-オハバリ -function c16157341.initial_effect(c) - --pierce - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(16157341,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c16157341.condition) - e1:SetCost(c16157341.cost) - e1:SetTarget(c16157341.target) - e1:SetOperation(c16157341.operation) - c:RegisterEffect(e1) -end -function c16157341.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c16157341.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c16157341.filter(c) - return c:IsFaceup() and c:IsSetCard(0x88) and not c:IsHasEffect(EFFECT_PIERCE) -end -function c16157341.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c16157341.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c16157341.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c16157341.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c16157341.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_PIERCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--武神器-オハバリ +function c16157341.initial_effect(c) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(16157341,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c16157341.condition) + e1:SetCost(c16157341.cost) + e1:SetTarget(c16157341.target) + e1:SetOperation(c16157341.operation) + c:RegisterEffect(e1) +end +function c16157341.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c16157341.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c16157341.filter(c) + return c:IsFaceup() and c:IsSetCard(0x88) and not c:IsHasEffect(EFFECT_PIERCE) +end +function c16157341.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c16157341.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c16157341.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c16157341.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c16157341.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c16172067.lua b/script/c16172067.lua index f6bcbfe8..ef8a868e 100644 --- a/script/c16172067.lua +++ b/script/c16172067.lua @@ -53,43 +53,54 @@ end function c16172067.matfilter2(c,syncard) return c:IsNotTuner() and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) end -function c16172067.synfilter1(c,syncard,lv,g1,g2,g3,g4) - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end +function c16172067.synfilter1(c,syncard,lv,g1,g2,g3,g4,mc) + if c==mc then return false end local f1=c.tuner_filter + if mc and f1 and not f1(mc) then return false end if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then - return g3:IsExists(c16172067.synfilter2,1,c,syncard,lv-tlv,g2,g4,f1,c) + return g3:IsExists(c16172067.synfilter2,1,c,syncard,lv,g2,g4,f1,c,mc) else - return g1:IsExists(c16172067.synfilter2,1,c,syncard,lv-tlv,g2,g4,f1,c) + return g1:IsExists(c16172067.synfilter2,1,c,syncard,lv,g2,g4,f1,c,mc) end end -function c16172067.synfilter2(c,syncard,lv,g2,g4,f1,tuner1) - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end +function c16172067.synfilter2(c,syncard,lv,g2,g4,f1,tuner1,mc) + if c==tuner1 or c==mc then return false end local f2=c.tuner_filter if f1 and not f1(c) then return false end if f2 and not f2(tuner1) then return false end + if mc and f2 and not f2(mc) then return false end if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not c:IsLocation(LOCATION_HAND)) or c:IsHasEffect(EFFECT_HAND_SYNCHRO) then - return g4:IsExists(c16172067.synfilter3,1,nil,syncard,lv-tlv,f1,f2,g2) + return g4:IsExists(c16172067.synfilter3,1,nil,syncard,lv,f1,f2,g2,tuner1,c,mc) else - return g2:CheckWithSumEqual(Card.GetSynchroLevel,lv-tlv,1,62,syncard) + local mg=g2:Filter(c16172067.synfilter4,nil,f1,f2) + if not mc then + Duel.SetSelectedCard(Group.FromCards(c,tuner1)) + return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,99,syncard) + else + Duel.SetSelectedCard(Group.FromCards(c,tuner1,mc)) + return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,0,99,syncard) + end end end -function c16172067.synfilter3(c,syncard,lv,f1,f2,g2) - if not (not f1 or f1(c)) and not (not f2 or f2(c)) then return false end - local mlv=c:GetSynchroLevel(syncard) - local slv=lv-mlv - if slv<0 then return false end - if slv==0 then - return true +function c16172067.synfilter3(c,syncard,lv,f1,f2,g2,tuner1,tuner2,mc) + if c==tuner1 or c==tuner2 or c==mc then return false end + if (f1 and not f1(c)) or (f2 and not f2(c)) then return false end + local mg=g2:Filter(c16172067.synfilter4,nil,f1,f2) + if not mc then + Duel.SetSelectedCard(Group.FromCards(c,tuner1,tuner2)) else - return g2:CheckWithSumEqual(Card.GetSynchroLevel,slv,1,61,syncard) + Duel.SetSelectedCard(Group.FromCards(c,tuner1,tuner2,mc)) end + return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,0,99,syncard) +end +function c16172067.synfilter4(c,f1,f2) + return (not f1 or f1(c)) and (not f2 or f2(c)) end function c16172067.syncon(e,c,tuner,mg) if c==nil then return true end local tp=c:GetControler() if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end + if tuner and not tuner:IsCanBeSynchroMaterial(c) then return false end local g1=nil local g2=nil local g3=nil @@ -97,8 +108,8 @@ function c16172067.syncon(e,c,tuner,mg) if mg then g1=mg:Filter(c16172067.matfilter1,nil,c) g2=mg:Filter(c16172067.matfilter2,nil,c) - g3=mg:Filter(c16172067.matfilter1,nil,c) - g4=mg:Filter(c16172067.matfilter2,nil,c) + g3=g1:Clone() + g4=g2:Clone() else g1=Duel.GetMatchingGroup(c16172067.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g2=Duel.GetMatchingGroup(c16172067.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) @@ -107,20 +118,18 @@ function c16172067.syncon(e,c,tuner,mg) end local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) local lv=c:GetLevel() - if tuner then - local tlv=tuner:GetSynchroLevel(c) - if lv-tlv<=0 then return false end + if tuner and tuner:IsType(TYPE_TUNER) then local f1=tuner.tuner_filter if not pe then - return g1:IsExists(c16172067.synfilter2,1,tuner,c,lv-tlv,g2,g4,f1,tuner) + return g1:IsExists(c16172067.synfilter2,1,tuner,c,lv,g2,g4,f1,tuner) else - return c16172067.synfilter2(pe:GetOwner(),c,lv-tlv,g2,nil,f1,tuner) + return c16172067.synfilter2(pe:GetOwner(),c,lv,g2,nil,f1,tuner) end end if not pe then - return g1:IsExists(c16172067.synfilter1,1,nil,c,lv,g1,g2,g3,g4) + return g1:IsExists(c16172067.synfilter1,1,nil,c,lv,g1,g2,g3,g4,tuner) else - return c16172067.synfilter1(pe:GetOwner(),c,lv,g1,g2,g3,g4) + return c16172067.synfilter1(pe:GetOwner(),c,lv,g1,g2,g3,g4,tuner) end end function c16172067.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) @@ -132,8 +141,8 @@ function c16172067.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) if mg then g1=mg:Filter(c16172067.matfilter1,nil,c) g2=mg:Filter(c16172067.matfilter2,nil,c) - g3=mg:Filter(c16172067.matfilter1,nil,c) - g4=mg:Filter(c16172067.matfilter2,nil,c) + g3=g1:Clone() + g4=g2:Clone() else g1=Duel.GetMatchingGroup(c16172067.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g2=Duel.GetMatchingGroup(c16172067.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) @@ -142,77 +151,81 @@ function c16172067.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) end local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) local lv=c:GetLevel() - if tuner then + if tuner and tuner:IsType(TYPE_TUNER) then g:AddCard(tuner) - local lv1=tuner:GetSynchroLevel(c) local f1=tuner.tuner_filter Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) local tuner2=nil if not pe then - local t2=g1:FilterSelect(tp,c16172067.synfilter2,1,1,tuner,c,lv-lv1,g2,g4,f1,tuner) + local t2=g1:FilterSelect(tp,c16172067.synfilter2,1,1,tuner,c,lv,g2,g4,f1,tuner) tuner2=t2:GetFirst() else tuner2=pe:GetOwner() Group.FromCards(tuner2):Select(tp,1,1,nil) end g:AddCard(tuner2) - local lv2=tuner2:GetSynchroLevel(c) local f2=tuner2.tuner_filter - local m3=nil Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) if tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then - m3=g4:FilterSelect(tp,c16172067.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2,g2) - local lv3=m3:GetFirst():GetSynchroLevel(c) - if lv-lv1-lv2-lv3>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local m4=g2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-lv1-lv2-lv3,1,61,c) - g:Merge(m4) - end + local m3=g4:FilterSelect(tp,c16172067.synfilter3,1,1,nil,c,lv,f1,f2,g2,tuner,tuner2) + g:Merge(m3) + local mg2=g2:Filter(c16172067.synfilter4,nil,f1,f2) + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m4=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,0,99,c) + g:Merge(m4) else - m3=g2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-lv1-lv2,1,62,c) + local mg2=g2:Filter(c16172067.synfilter4,nil,f1,f2) + Duel.SetSelectedCard(g) + local m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,99,c) + g:Merge(m3) end - g:Merge(m3) else + if tuner then g:AddCard(tuner) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) local tuner1=nil - local hand=nil if not pe then - local t1=g1:FilterSelect(tp,c16172067.synfilter1,1,1,nil,c,lv,g1,g2,g3,g4) + local t1=g1:FilterSelect(tp,c16172067.synfilter1,1,1,nil,c,lv,g1,g2,g3,g4,tuner) tuner1=t1:GetFirst() else tuner1=pe:GetOwner() Group.FromCards(tuner1):Select(tp,1,1,nil) end g:AddCard(tuner1) - local lv1=tuner1:GetSynchroLevel(c) local f1=tuner1.tuner_filter local tuner2=nil Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then - local t2=g3:FilterSelect(tp,c16172067.synfilter2,1,1,tuner1,c,lv-lv1,g2,g4,f1,tuner1) + local t2=g3:FilterSelect(tp,c16172067.synfilter2,1,1,tuner1,c,lv,g2,g4,f1,tuner1,tuner) tuner2=t2:GetFirst() else - local t2=g1:FilterSelect(tp,c16172067.synfilter2,1,1,tuner1,c,lv-lv1,g2,g4,f1,tuner1) + local t2=g1:FilterSelect(tp,c16172067.synfilter2,1,1,tuner1,c,lv,g2,g4,f1,tuner1,tuner) tuner2=t2:GetFirst() end g:AddCard(tuner2) - local lv2=tuner2:GetSynchroLevel(c) local f2=tuner2.tuner_filter - local m3=nil Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not tuner2:IsLocation(LOCATION_HAND)) or tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then - m3=g4:FilterSelect(tp,c16172067.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2,g2) - local lv3=m3:GetFirst():GetSynchroLevel(c) - if lv-lv1-lv2-lv3>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local m4=g2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-lv1-lv2-lv3,1,61,c) - g:Merge(m4) - end + local m3=g4:FilterSelect(tp,c16172067.synfilter3,1,1,nil,c,lv,f1,f2,g2,tuner1,tuner2,tuner) + g:Merge(m3) + local mg2=g2:Filter(c16172067.synfilter4,nil,f1,f2) + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m4=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,0,99,c) + g:Merge(m4) else - m3=g2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-lv1-lv2,1,63,c) + local mg2=g2:Filter(c16172067.synfilter4,nil,f1,f2) + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if not tuner then + local m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,99,c) + g:Merge(m3) + else + local m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,0,99,c) + g:Merge(m3) + end end - g:Merge(m3) end c:SetMaterial(g) Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) @@ -256,8 +269,7 @@ function c16172067.distg(e,tp,eg,ep,ev,re,r,rp,chk) end function c16172067.disop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) if not c:IsRelateToEffect(e) or c:IsFacedown() then return end local e1=Effect.CreateEffect(c) diff --git a/script/c16178681.lua b/script/c16178681.lua index 07b70359..379e4cc2 100644 --- a/script/c16178681.lua +++ b/script/c16178681.lua @@ -1,72 +1,72 @@ ---オッドアイズ・ペンデュラム・ドラゴン -function c16178681.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --reduce - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(16178681,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1,16178681) - e2:SetCondition(c16178681.rdcon) - e2:SetOperation(c16178681.rdop) - c:RegisterEffect(e2) - --tohand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(16178681,1)) - e3:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_PZONE) - e3:SetCountLimit(1,16178682) - e3:SetCondition(c16178681.thcon) - e3:SetTarget(c16178681.thtg) - e3:SetOperation(c16178681.thop) - c:RegisterEffect(e3) - --double - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e4:SetCondition(c16178681.damcon) - e4:SetOperation(c16178681.damop) - c:RegisterEffect(e4) -end -function c16178681.rdcon(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttacker() - if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end - return ep==tp and tc and tc:IsType(TYPE_PENDULUM) -end -function c16178681.rdop(e,tp,eg,ep,ev,re,r,rp) - if Duel.SelectYesNo(tp,aux.Stringid(16178681,2)) then - Duel.ChangeBattleDamage(tp,0) - end -end -function c16178681.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c16178681.filter(c) - return c:IsType(TYPE_PENDULUM) and c:IsAttackBelow(1500) and c:IsAbleToHand() -end -function c16178681.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDestructable() - and Duel.IsExistingMatchingCard(c16178681.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c16178681.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or Duel.Destroy(c,REASON_EFFECT)==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c16178681.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c16178681.damcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and e:GetHandler():GetBattleTarget()~=nil -end -function c16178681.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev*2) -end +--オッドアイズ・ペンデュラム・ドラゴン +function c16178681.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --reduce + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(16178681,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1,16178681) + e2:SetCondition(c16178681.rdcon) + e2:SetOperation(c16178681.rdop) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(16178681,1)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_PZONE) + e3:SetCountLimit(1,16178682) + e3:SetCondition(c16178681.thcon) + e3:SetTarget(c16178681.thtg) + e3:SetOperation(c16178681.thop) + c:RegisterEffect(e3) + --double + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e4:SetCondition(c16178681.damcon) + e4:SetOperation(c16178681.damop) + c:RegisterEffect(e4) +end +function c16178681.rdcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + return ep==tp and tc and tc:IsType(TYPE_PENDULUM) +end +function c16178681.rdop(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(16178681,2)) then + Duel.ChangeBattleDamage(tp,0) + end +end +function c16178681.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c16178681.filter(c) + return c:IsType(TYPE_PENDULUM) and c:IsAttackBelow(1500) and c:IsAbleToHand() +end +function c16178681.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable() + and Duel.IsExistingMatchingCard(c16178681.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c16178681.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or Duel.Destroy(c,REASON_EFFECT)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c16178681.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c16178681.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and e:GetHandler():GetBattleTarget()~=nil +end +function c16178681.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end diff --git a/script/c16195942.lua b/script/c16195942.lua index 72b2c87b..ea795856 100644 --- a/script/c16195942.lua +++ b/script/c16195942.lua @@ -7,7 +7,7 @@ function c16195942.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(16195942,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCost(c16195942.cost) e1:SetTarget(c16195942.target) diff --git a/script/c16197610.lua b/script/c16197610.lua index 39458845..d0651190 100644 --- a/script/c16197610.lua +++ b/script/c16197610.lua @@ -60,8 +60,8 @@ end function c16197610.spop(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,c16197610.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()~=0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c16197610.spfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c1621413.lua b/script/c1621413.lua index c78f5f4d..4abec07d 100644 --- a/script/c1621413.lua +++ b/script/c1621413.lua @@ -9,7 +9,7 @@ function c1621413.initial_effect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetCondition(c1621413.atkcon) e1:SetCost(c1621413.cost) @@ -19,10 +19,10 @@ function c1621413.initial_effect(c) --disable local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(1621413,1)) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DISABLE+CATEGORY_SPECIAL_SUMMON) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_NEGATE+CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c1621413.discon) e2:SetCost(c1621413.cost) @@ -66,12 +66,12 @@ function c1621413.atkop(e,tp,eg,ep,ev,re,r,rp) end end function c1621413.discon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) and e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,16195942) end function c1621413.distg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) end @@ -80,15 +80,13 @@ function c1621413.spfilter(c,e,tp) return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c1621413.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)>0 then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)>0 then if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local g=Duel.GetMatchingGroup(c1621413.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c1621413.spfilter),tp,LOCATION_GRAVE,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(1621413,2)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=g:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c16229315.lua b/script/c16229315.lua index b25ef468..e93e13b2 100644 --- a/script/c16229315.lua +++ b/script/c16229315.lua @@ -1,28 +1,28 @@ ---ゲール・ドグラ -function c16229315.initial_effect(c) - --to grave - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetDescription(aux.Stringid(16229315,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c16229315.cost) - e1:SetTarget(c16229315.target) - e1:SetOperation(c16229315.operation) - c:RegisterEffect(e1) -end -function c16229315.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,3000) end - Duel.PayLPCost(tp,3000) -end -function c16229315.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,LOCATION_EXTRA,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_EXTRA) -end -function c16229315.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGrave,tp,LOCATION_EXTRA,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end +--ゲール・ドグラ +function c16229315.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetDescription(aux.Stringid(16229315,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c16229315.cost) + e1:SetTarget(c16229315.target) + e1:SetOperation(c16229315.operation) + c:RegisterEffect(e1) +end +function c16229315.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,3000) end + Duel.PayLPCost(tp,3000) +end +function c16229315.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_EXTRA) +end +function c16229315.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGrave,tp,LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c16278116.lua b/script/c16278116.lua index da1a7d0f..c2b5710b 100644 --- a/script/c16278116.lua +++ b/script/c16278116.lua @@ -1,69 +1,69 @@ ---竜の束縛 -function c16278116.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c16278116.target) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_CHAIN_SOLVED) - e2:SetLabelObject(e1) - e2:SetCondition(c16278116.tgcon) - e2:SetOperation(c16278116.tgop) - c:RegisterEffect(e2) - --cannot spsummon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,1) - e3:SetTarget(c16278116.splimit) - c:RegisterEffect(e3) - --Destroy - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c16278116.descon) - e4:SetOperation(c16278116.desop) - c:RegisterEffect(e4) -end -function c16278116.filter(c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsAttackBelow(2500) and c:IsDefenseBelow(2500) -end -function c16278116.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c16278116.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c16278116.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c16278116.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c16278116.tgcon(e,tp,eg,ep,ev,re,r,rp) - return re==e:GetLabelObject() -end -function c16278116.tgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() - if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then - c:SetCardTarget(tc) - end -end -function c16278116.splimit(e,c,tp,sumtp,sumpos) - local tc=e:GetHandler():GetFirstCardTarget() - return tc and c:IsAttackBelow(tc:GetBaseAttack()) -end -function c16278116.descon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end - local tc=e:GetHandler():GetFirstCardTarget() - return tc and eg:IsContains(tc) -end -function c16278116.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--竜の束縛 +function c16278116.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c16278116.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(c16278116.tgcon) + e2:SetOperation(c16278116.tgop) + c:RegisterEffect(e2) + --cannot spsummon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + e3:SetTarget(c16278116.splimit) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c16278116.descon) + e4:SetOperation(c16278116.desop) + c:RegisterEffect(e4) +end +function c16278116.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsAttackBelow(2500) and c:IsDefenseBelow(2500) +end +function c16278116.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c16278116.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c16278116.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c16278116.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c16278116.tgcon(e,tp,eg,ep,ev,re,r,rp) + return re==e:GetLabelObject() +end +function c16278116.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() + if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then + c:SetCardTarget(tc) + end +end +function c16278116.splimit(e,c,tp,sumtp,sumpos) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and c:IsAttackBelow(tc:GetBaseAttack()) +end +function c16278116.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c16278116.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c16304628.lua b/script/c16304628.lua index 67aec4c5..296fe7fa 100644 --- a/script/c16304628.lua +++ b/script/c16304628.lua @@ -1,56 +1,57 @@ ---E・HERO ガイア -function c16304628.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH),true) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(16304628,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c16304628.atkcon) - e2:SetTarget(c16304628.atktg) - e2:SetOperation(c16304628.atkop) - c:RegisterEffect(e2) - --spsummon condition - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(aux.fuslimit) - c:RegisterEffect(e3) -end -function c16304628.atkcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c16304628.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g,g:GetCount(),0,0) -end -function c16304628.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then - local atk=tc:GetAttack() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(atk/2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetValue(atk/2) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e2) - end - end -end +--E・HERO ガイア +function c16304628.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_EARTH),true) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(16304628,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c16304628.atkcon) + e2:SetTarget(c16304628.atktg) + e2:SetOperation(c16304628.atkop) + c:RegisterEffect(e2) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.fuslimit) + c:RegisterEffect(e3) +end +c16304628.material_setcode=0x8 +function c16304628.atkcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c16304628.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g,g:GetCount(),0,0) +end +function c16304628.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(atk/2) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end + end +end diff --git a/script/c16308000.lua b/script/c16308000.lua index a24ceb22..1c5cd9a1 100644 --- a/script/c16308000.lua +++ b/script/c16308000.lua @@ -1,61 +1,61 @@ ---神の威光 -function c16308000.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0x1c0,0x1c1) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c16308000.target) - e1:SetOperation(c16308000.operation) - c:RegisterEffect(e1) -end -function c16308000.filter(c) - return c:IsFaceup() and c:IsSetCard(0x4b) -end -function c16308000.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c16308000.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c16308000.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c16308000.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c16308000.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - c:SetCardTarget(tc) - e:SetLabelObject(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetCondition(c16308000.rcon) - e1:SetValue(1) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetLabel(2) - e2:SetLabelObject(tc) - e2:SetCondition(c16308000.tgcon) - e2:SetOperation(c16308000.tgop) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - c:RegisterEffect(e2) - end -end -function c16308000.rcon(e) - return e:GetOwner():IsHasCardTarget(e:GetHandler()) -end -function c16308000.tgcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c16308000.tgop(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetLabel() - ct=ct-1 - e:SetLabel(ct) - if ct==0 and e:GetHandler():IsHasCardTarget(e:GetLabelObject()) then - Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) - end -end +--神の威光 +function c16308000.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0x1c0,0x1c1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c16308000.target) + e1:SetOperation(c16308000.operation) + c:RegisterEffect(e1) +end +function c16308000.filter(c) + return c:IsFaceup() and c:IsSetCard(0x4b) +end +function c16308000.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c16308000.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c16308000.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c16308000.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c16308000.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c16308000.rcon) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetLabel(2) + e2:SetLabelObject(tc) + e2:SetCondition(c16308000.tgcon) + e2:SetOperation(c16308000.tgop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + c:RegisterEffect(e2) + end +end +function c16308000.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c16308000.tgcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c16308000.tgop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct-1 + e:SetLabel(ct) + if ct==0 and e:GetHandler():IsHasCardTarget(e:GetLabelObject()) then + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c16366810.lua b/script/c16366810.lua index 043652cb..b90651ff 100644 --- a/script/c16366810.lua +++ b/script/c16366810.lua @@ -1,59 +1,59 @@ ---イエロー・ダストン -function c16366810.initial_effect(c) - c:SetUniqueOnField(1,0,16366810) - --cannot release - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetValue(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) - e3:SetValue(1) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - c:RegisterEffect(e5) - --todeck - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(16366810,0)) - e6:SetCategory(CATEGORY_TODECK) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET) - e6:SetCode(EVENT_DESTROYED) - e6:SetCondition(c16366810.retcon) - e6:SetTarget(c16366810.rettg) - e6:SetOperation(c16366810.retop) - c:RegisterEffect(e6) -end -function c16366810.retcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c16366810.filter(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() -end -function c16366810.rettg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local prec=e:GetHandler():GetPreviousControler() - if chkc then return chkc:IsControler(prec) and chkc:IsLocation(LOCATION_GRAVE) and c16366810.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(prec,c16366810.filter,prec,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c16366810.retop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end -end +--イエロー・ダストン +function c16366810.initial_effect(c) + c:SetUniqueOnField(1,0,16366810) + --cannot release + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e5) + --todeck + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(16366810,0)) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetCode(EVENT_DESTROYED) + e6:SetCondition(c16366810.retcon) + e6:SetTarget(c16366810.rettg) + e6:SetOperation(c16366810.retop) + c:RegisterEffect(e6) +end +function c16366810.retcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c16366810.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c16366810.rettg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local prec=e:GetHandler():GetPreviousControler() + if chkc then return chkc:IsControler(prec) and chkc:IsLocation(LOCATION_GRAVE) and c16366810.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(prec,c16366810.filter,prec,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c16366810.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end +end diff --git a/script/c1637760.lua b/script/c1637760.lua index ee099b6c..d7f37c1f 100644 --- a/script/c1637760.lua +++ b/script/c1637760.lua @@ -1,28 +1,28 @@ ---昇天の剛角笛 -function c1637760.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SPSUMMON) - e1:SetCondition(c1637760.condition) - e1:SetTarget(c1637760.target) - e1:SetOperation(c1637760.activate) - c:RegisterEffect(e1) -end -function c1637760.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentChain()==0 and Duel.GetTurnPlayer()~=tp and rp~=tp - and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) -end -function c1637760.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) -end -function c1637760.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateSummon(eg) - Duel.Destroy(eg,REASON_EFFECT) - Duel.BreakEffect() - Duel.Draw(1-tp,1,REASON_EFFECT) - Duel.SkipPhase(1-tp,Duel.GetCurrentPhase(),RESET_PHASE+PHASE_END,1) -end +--昇天の剛角笛 +function c1637760.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON) + e1:SetCondition(c1637760.condition) + e1:SetTarget(c1637760.target) + e1:SetOperation(c1637760.activate) + c:RegisterEffect(e1) +end +function c1637760.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 and Duel.GetTurnPlayer()~=tp and rp~=tp + and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) +end +function c1637760.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c1637760.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) + Duel.BreakEffect() + Duel.Draw(1-tp,1,REASON_EFFECT) + Duel.SkipPhase(1-tp,Duel.GetCurrentPhase(),RESET_PHASE+PHASE_END,1) +end diff --git a/script/c16392422.lua b/script/c16392422.lua index c3f288b1..e86c37f6 100644 --- a/script/c16392422.lua +++ b/script/c16392422.lua @@ -1,79 +1,79 @@ ---トゥーン・仮面魔道士 -function c16392422.initial_effect(c) - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c16392422.atklimit) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c16392422.sdescon) - e4:SetOperation(c16392422.sdesop) - c:RegisterEffect(e4) - --direct attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_DIRECT_ATTACK) - e5:SetCondition(c16392422.dircon) - c:RegisterEffect(e5) - --draw - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(16392422,0)) - e6:SetCategory(CATEGORY_DRAW) - e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_BATTLE_DAMAGE) - e6:SetCondition(c16392422.condition) - e6:SetTarget(c16392422.target) - e6:SetOperation(c16392422.operation) - c:RegisterEffect(e6) -end -function c16392422.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c16392422.sfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c16392422.sdescon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c16392422.sfilter,1,nil) -end -function c16392422.sdesop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c16392422.dirfilter1(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c16392422.dirfilter2(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c16392422.dircon(e) - return Duel.IsExistingMatchingCard(c16392422.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) - and not Duel.IsExistingMatchingCard(c16392422.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c16392422.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c16392422.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c16392422.operation(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--トゥーン・仮面魔道士 +function c16392422.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c16392422.atklimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c16392422.sdescon) + e4:SetOperation(c16392422.sdesop) + c:RegisterEffect(e4) + --direct attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DIRECT_ATTACK) + e5:SetCondition(c16392422.dircon) + c:RegisterEffect(e5) + --draw + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(16392422,0)) + e6:SetCategory(CATEGORY_DRAW) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_BATTLE_DAMAGE) + e6:SetCondition(c16392422.condition) + e6:SetTarget(c16392422.target) + e6:SetOperation(c16392422.operation) + c:RegisterEffect(e6) +end +function c16392422.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c16392422.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c16392422.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c16392422.sfilter,1,nil) +end +function c16392422.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c16392422.dirfilter1(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c16392422.dirfilter2(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c16392422.dircon(e) + return Duel.IsExistingMatchingCard(c16392422.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) + and not Duel.IsExistingMatchingCard(c16392422.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c16392422.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c16392422.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c16392422.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c1639384.lua b/script/c1639384.lua index 42e3dd34..a0356dbd 100644 --- a/script/c1639384.lua +++ b/script/c1639384.lua @@ -6,7 +6,7 @@ function c1639384.initial_effect(c) --negate local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(1639384,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) diff --git a/script/c16430187.lua b/script/c16430187.lua index 6168d91d..6ba51c6e 100644 --- a/script/c16430187.lua +++ b/script/c16430187.lua @@ -1,34 +1,34 @@ ---頼もしき守護者 -function c16430187.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DEFCHANGE) - 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(c16430187.condition) - e1:SetTarget(c16430187.target) - e1:SetOperation(c16430187.activate) - c:RegisterEffect(e1) -end -function c16430187.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c16430187.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c16430187.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_DEFENSE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(700) - tc:RegisterEffect(e1) - end -end +--頼もしき守護者 +function c16430187.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c16430187.condition) + e1:SetTarget(c16430187.target) + e1:SetOperation(c16430187.activate) + c:RegisterEffect(e1) +end +function c16430187.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c16430187.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c16430187.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(700) + tc:RegisterEffect(e1) + end +end diff --git a/script/c1644289.lua b/script/c1644289.lua index efb5313c..f04dc22f 100644 --- a/script/c1644289.lua +++ b/script/c1644289.lua @@ -1,27 +1,12 @@ --ヴァイロン・セグメント function c1644289.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(c1644289.target) - e1:SetOperation(c1644289.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c1644289.filter) --Untargetable local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e2:SetValue(c1644289.tglimit) 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(c1644289.eqlimit) - c:RegisterEffect(e3) --Search local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(1644289,0)) @@ -34,28 +19,11 @@ function c1644289.initial_effect(c) e4:SetOperation(c1644289.thop) c:RegisterEffect(e4) end -function c1644289.eqlimit(e,c) - return c:IsSetCard(0x30) -end function c1644289.tglimit(e,re,rp) return rp~=e:GetHandlerPlayer() and re:IsActiveType(TYPE_TRAP+TYPE_MONSTER) end function c1644289.filter(c) - return c:IsFaceup() and c:IsSetCard(0x30) -end -function c1644289.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c1644289.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c1644289.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c1644289.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c1644289.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 + return c:IsSetCard(0x30) end function c1644289.thcon(e,tp,eg,ep,ev,re,r,rp) return bit.band(e:GetHandler():GetPreviousPosition(),POS_FACEUP)~=0 diff --git a/script/c164710.lua b/script/c164710.lua index b3c404af..a4aec766 100644 --- a/script/c164710.lua +++ b/script/c164710.lua @@ -1,56 +1,56 @@ ---小人のいたずら -function c164710.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetOperation(c164710.lvop) - c:RegisterEffect(e1) - --lv - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_GRAVE) - e2:SetHintTiming(0,0x1c0) - e2:SetCost(c164710.lvcost) - e2:SetOperation(c164710.lvop) - c:RegisterEffect(e2) -end -function c164710.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c164710.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local hg=Duel.GetMatchingGroup(Card.IsLevelAbove,tp,LOCATION_HAND,LOCATION_HAND,nil,1) - local tc=hg:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(-1) - e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=hg:GetNext() - end - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_TO_HAND) - e2:SetReset(RESET_PHASE+PHASE_END) - e2:SetOperation(c164710.hlvop) - Duel.RegisterEffect(e2,tp) -end -function c164710.hlvop(e,tp,eg,ep,ev,re,r,rp) - local hg=eg:Filter(Card.IsLevelAbove,nil,1) - local tc=hg:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(-1) - e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=hg:GetNext() - end -end +--小人のいたずら +function c164710.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetOperation(c164710.lvop) + c:RegisterEffect(e1) + --lv + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetHintTiming(0,0x1c0) + e2:SetCost(c164710.lvcost) + e2:SetOperation(c164710.lvop) + c:RegisterEffect(e2) +end +function c164710.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c164710.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local hg=Duel.GetMatchingGroup(Card.IsLevelAbove,tp,LOCATION_HAND,LOCATION_HAND,nil,1) + local tc=hg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=hg:GetNext() + end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_HAND) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetOperation(c164710.hlvop) + Duel.RegisterEffect(e2,tp) +end +function c164710.hlvop(e,tp,eg,ep,ev,re,r,rp) + local hg=eg:Filter(Card.IsLevelAbove,nil,1) + local tc=hg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=hg:GetNext() + end +end diff --git a/script/c16494704.lua b/script/c16494704.lua index f7e637fd..593b1049 100644 --- a/script/c16494704.lua +++ b/script/c16494704.lua @@ -1,83 +1,83 @@ ---オッドアイズ・アドベント -function c16494704.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,16494704+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c16494704.target) - e1:SetOperation(c16494704.operation) - c:RegisterEffect(e1) -end -function c16494704.exfilter0(c) - return c:IsSetCard(0x99) and c:GetLevel()>=1 and c:IsAbleToGrave() -end -function c16494704.filter(c,e,tp,m,ft) - if not c:IsRace(RACE_DRAGON) or bit.band(c:GetType(),0x81)~=0x81 - or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end - local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) - if c.mat_filter then - mg=mg:Filter(c.mat_filter,nil) - end - if ft>0 then - return mg:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) - else - return mg:IsExists(c16494704.mfilterf,1,nil,tp,mg,c) - end -end -function c16494704.mfilterf(c,tp,mg,rc) - if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then - Duel.SetSelectedCard(c) - return mg:CheckWithSumGreater(Card.GetRitualLevel,rc:GetLevel(),rc) - else return false end -end -function c16494704.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local mg=Duel.GetRitualMaterial(tp):Filter(Card.IsType,nil,TYPE_PENDULUM) - if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then - local sg=Duel.GetMatchingGroup(c16494704.exfilter0,tp,LOCATION_EXTRA,0,nil) - mg:Merge(sg) - end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - return ft>-1 and Duel.IsExistingMatchingCard(c16494704.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp,mg,ft) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c16494704.operation(e,tp,eg,ep,ev,re,r,rp) - local mg=Duel.GetRitualMaterial(tp):Filter(Card.IsType,nil,TYPE_PENDULUM) - if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then - local sg=Duel.GetMatchingGroup(c16494704.exfilter0,tp,LOCATION_EXTRA,0,nil) - mg:Merge(sg) - end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=Duel.SelectMatchingCard(tp,c16494704.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp,mg,ft) - local tc=tg:GetFirst() - if tc then - mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) - if tc.mat_filter then - mg=mg:Filter(tc.mat_filter,nil) - end - local mat=nil - if ft>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:FilterSelect(tp,c16494704.mfilterf,1,1,nil,tp,mg,tc) - Duel.SetSelectedCard(mat) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local mat2=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) - mat:Merge(mat2) - end - tc:SetMaterial(mat) - local mat2=mat:Filter(Card.IsLocation,nil,LOCATION_EXTRA) - mat:Sub(mat2) - Duel.ReleaseRitualMaterial(mat) - Duel.SendtoGrave(mat2,REASON_EFFECT+REASON_MATERIAL+REASON_RITUAL) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) - tc:CompleteProcedure() - end -end +--オッドアイズ・アドベント +function c16494704.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,16494704+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c16494704.target) + e1:SetOperation(c16494704.operation) + c:RegisterEffect(e1) +end +function c16494704.exfilter0(c) + return c:IsSetCard(0x99) and c:GetLevel()>=1 and c:IsAbleToGrave() +end +function c16494704.filter(c,e,tp,m,ft) + if not c:IsRace(RACE_DRAGON) or bit.band(c:GetType(),0x81)~=0x81 + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) + if c.mat_filter then + mg=mg:Filter(c.mat_filter,nil) + end + if ft>0 then + return mg:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + else + return mg:IsExists(c16494704.mfilterf,1,nil,tp,mg,c) + end +end +function c16494704.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumGreater(Card.GetRitualLevel,rc:GetLevel(),rc) + else return false end +end +function c16494704.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp):Filter(Card.IsType,nil,TYPE_PENDULUM) + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then + local sg=Duel.GetMatchingGroup(c16494704.exfilter0,tp,LOCATION_EXTRA,0,nil) + mg:Merge(sg) + end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return ft>-1 and Duel.IsExistingMatchingCard(c16494704.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp,mg,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c16494704.operation(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp):Filter(Card.IsType,nil,TYPE_PENDULUM) + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then + local sg=Duel.GetMatchingGroup(c16494704.exfilter0,tp,LOCATION_EXTRA,0,nil) + mg:Merge(sg) + end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c16494704.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp,mg,ft) + local tc=tg:GetFirst() + if tc then + mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) + if tc.mat_filter then + mg=mg:Filter(tc.mat_filter,nil) + end + local mat=nil + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c16494704.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + local mat2=mat:Filter(Card.IsLocation,nil,LOCATION_EXTRA) + mat:Sub(mat2) + Duel.ReleaseRitualMaterial(mat) + Duel.SendtoGrave(mat2,REASON_EFFECT+REASON_MATERIAL+REASON_RITUAL) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c16550875.lua b/script/c16550875.lua index 77ab823f..ce0f9b95 100644 --- a/script/c16550875.lua +++ b/script/c16550875.lua @@ -1,14 +1,6 @@ --甲虫装機の魔剣 ゼクトキャリバー function c16550875.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(c16550875.target) - e1:SetOperation(c16550875.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c16550875.filter) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -18,13 +10,6 @@ function c16550875.initial_effect(c) local e3=e2:Clone() e3:SetCode(EFFECT_UPDATE_DEFENSE) c:RegisterEffect(e3) - --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(c16550875.eqlimit) - c:RegisterEffect(e3) --Search local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(16550875,0)) @@ -37,25 +22,8 @@ function c16550875.initial_effect(c) e4:SetOperation(c16550875.thop) c:RegisterEffect(e4) end -function c16550875.eqlimit(e,c) - return c:IsSetCard(0x56) -end function c16550875.filter(c) - return c:IsFaceup() and c:IsSetCard(0x56) -end -function c16550875.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c16550875.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c16550875.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c16550875.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c16550875.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 + return c:IsSetCard(0x56) end function c16550875.thcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousPosition(POS_FACEUP) diff --git a/script/c16674846.lua b/script/c16674846.lua index 5e0a91c8..e5de7c11 100644 --- a/script/c16674846.lua +++ b/script/c16674846.lua @@ -22,11 +22,10 @@ function c16674846.operation(e,tp,eg,ep,ev,re,r,rp) e1:SetOperation(c16674846.damop) e1:SetReset(RESET_PHASE+PHASE_DAMAGE) Duel.RegisterEffect(e1,tp) - local g=Duel.GetMatchingGroup(c16674846.filter,tp,LOCATION_GRAVE,0,nil) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c16674846.filter),tp,LOCATION_GRAVE,0,nil) if g:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(16674846,0)) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local sg=g:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SendtoHand(sg,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,sg) end diff --git a/script/c16691074.lua b/script/c16691074.lua index 4c81ca6e..76c1bc79 100644 --- a/script/c16691074.lua +++ b/script/c16691074.lua @@ -7,6 +7,7 @@ function c16691074.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(16691074,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_ATTACK_ANNOUNCE) @@ -36,12 +37,12 @@ function c16691074.spfilter1(c,e,tp) end function c16691074.atkop(e,tp,eg,ep,ev,re,r,rp) if Duel.NegateAttack() then - local g1=Duel.GetMatchingGroup(c16691074.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil,e,tp) - if g1:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(16691074,2)) then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g1=Duel.GetMatchingGroup(aux.NecroValleyFilter(c16691074.spfilter1),tp,LOCATION_HAND+LOCATION_GRAVE,0,nil,e,tp) + if g1:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(16691074,2)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g2=g1:Select(tp,1,1,nil) - if g2:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(g2,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c16725505.lua b/script/c16725505.lua index 9e2b5c27..c1141dd0 100644 --- a/script/c16725505.lua +++ b/script/c16725505.lua @@ -1,45 +1,45 @@ ---SR赤目のダイス -function c16725505.initial_effect(c) - --lv change - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(16725505,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c16725505.tg) - e1:SetOperation(c16725505.op) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c16725505.filter(c) - return c:IsFaceup() and c:IsSetCard(0x2016) and not c:IsCode(16725505) and c:GetLevel()>0 -end -function c16725505.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c16725505.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c16725505.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c16725505.filter,tp,LOCATION_MZONE,0,1,1,nil) - local t={} - local i=1 - local p=1 - local lv=g:GetFirst():GetLevel() - for i=1,6 do - if lv~=i then t[p]=i p=p+1 end - end - t[p]=nil - Duel.Hint(HINT_SELECTMSG,tp,567) - e:SetLabel(Duel.AnnounceNumber(tp,table.unpack(t))) -end -function c16725505.op(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_CHANGE_LEVEL) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--SR赤目のダイス +function c16725505.initial_effect(c) + --lv change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(16725505,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c16725505.tg) + e1:SetOperation(c16725505.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c16725505.filter(c) + return c:IsFaceup() and c:IsSetCard(0x2016) and not c:IsCode(16725505) and c:GetLevel()>0 +end +function c16725505.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c16725505.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c16725505.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c16725505.filter,tp,LOCATION_MZONE,0,1,1,nil) + local t={} + local i=1 + local p=1 + local lv=g:GetFirst():GetLevel() + for i=1,6 do + if lv~=i then t[p]=i p=p+1 end + end + t[p]=nil + Duel.Hint(HINT_SELECTMSG,tp,567) + e:SetLabel(Duel.AnnounceNumber(tp,table.unpack(t))) +end +function c16725505.op(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_CHANGE_LEVEL) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c16796157.lua b/script/c16796157.lua index 5ebc1935..2ccf7f7b 100644 --- a/script/c16796157.lua +++ b/script/c16796157.lua @@ -24,8 +24,8 @@ function c16796157.thtg(e,tp,eg,ep,ev,re,r,rp,chk) end function c16796157.thop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c16796157.filter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c16796157.filter),tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c16825874.lua b/script/c16825874.lua index eb4224d1..816a773e 100644 --- a/script/c16825874.lua +++ b/script/c16825874.lua @@ -1,68 +1,68 @@ ---エキセントリック・ボーイ -function c16825874.initial_effect(c) - --synchro custom - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetTarget(c16825874.target) - e1:SetValue(1) - e1:SetOperation(c16825874.operation) - c:RegisterEffect(e1) - --be material - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCondition(c16825874.ccon) - e2:SetOperation(c16825874.cop) - c:RegisterEffect(e2) - --hand synchro for double tuner - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_HAND_SYNCHRO) - c:RegisterEffect(e3) -end -c16825874.tuner_filter=aux.FALSE -function c16825874.filter(c,syncard,tuner,f,lv) - return c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) and c:GetLevel()==lv -end -function c16825874.target(e,syncard,f,minc,maxc) - if minc>1 then return false end - local lv=syncard:GetLevel()-e:GetHandler():GetLevel() - if lv<=0 then return false end - return Duel.IsExistingMatchingCard(c16825874.filter,syncard:GetControler(),LOCATION_HAND,0,1,nil,syncard,e:GetHandler(),f,lv) -end -function c16825874.operation(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc,maxc) - local lv=syncard:GetLevel()-e:GetHandler():GetLevel() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local g=Duel.SelectMatchingCard(tp,c16825874.filter,tp,LOCATION_HAND,0,1,1,nil,syncard,e:GetHandler(),f,lv) - Duel.SetSynchroMaterial(g) -end -function c16825874.ccon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_SYNCHRO -end -function c16825874.cop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local rc=c:GetReasonCard() - --leave redirect - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetValue(LOCATION_REMOVED) - e1:SetReset(RESET_EVENT+0x7e0000) - rc:RegisterEffect(e1) - --cannot trigger - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_TRIGGER) - e2:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e2) - --disable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE) - e3:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e3) -end +--エキセントリック・ボーイ +function c16825874.initial_effect(c) + --synchro custom + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetTarget(c16825874.target) + e1:SetValue(1) + e1:SetOperation(c16825874.operation) + c:RegisterEffect(e1) + --be material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCondition(c16825874.ccon) + e2:SetOperation(c16825874.cop) + c:RegisterEffect(e2) + --hand synchro for double tuner + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_HAND_SYNCHRO) + c:RegisterEffect(e3) +end +c16825874.tuner_filter=aux.FALSE +function c16825874.filter(c,syncard,tuner,f,lv) + return c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) and c:GetLevel()==lv +end +function c16825874.target(e,syncard,f,minc,maxc) + if minc>1 then return false end + local lv=syncard:GetLevel()-e:GetHandler():GetLevel() + if lv<=0 then return false end + return Duel.IsExistingMatchingCard(c16825874.filter,syncard:GetControler(),LOCATION_HAND,0,1,nil,syncard,e:GetHandler(),f,lv) +end +function c16825874.operation(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc,maxc) + local lv=syncard:GetLevel()-e:GetHandler():GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local g=Duel.SelectMatchingCard(tp,c16825874.filter,tp,LOCATION_HAND,0,1,1,nil,syncard,e:GetHandler(),f,lv) + Duel.SetSynchroMaterial(g) +end +function c16825874.ccon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_SYNCHRO +end +function c16825874.cop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + --leave redirect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetValue(LOCATION_REMOVED) + e1:SetReset(RESET_EVENT+0x7e0000) + rc:RegisterEffect(e1) + --cannot trigger + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_TRIGGER) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e3) +end diff --git a/script/c1689516.lua b/script/c1689516.lua index 05c13ba9..a42c78d4 100644 --- a/script/c1689516.lua +++ b/script/c1689516.lua @@ -1,38 +1,38 @@ ---百獣大行進 -function c1689516.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c1689516.condition) - e1:SetTarget(c1689516.target) - e1:SetOperation(c1689516.activate) - c:RegisterEffect(e1) -end -function c1689516.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c1689516.filter(c) - return c:IsFaceup() and c:IsRace(RACE_BEAST) -end -function c1689516.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c1689516.filter,tp,LOCATION_MZONE,0,1,nil) end -end -function c1689516.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c1689516.filter,tp,LOCATION_MZONE,0,nil) - local atk=g:GetCount()*200 - local c=e:GetHandler() - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--百獣大行進 +function c1689516.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c1689516.condition) + e1:SetTarget(c1689516.target) + e1:SetOperation(c1689516.activate) + c:RegisterEffect(e1) +end +function c1689516.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c1689516.filter(c) + return c:IsFaceup() and c:IsRace(RACE_BEAST) +end +function c1689516.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c1689516.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c1689516.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c1689516.filter,tp,LOCATION_MZONE,0,nil) + local atk=g:GetCount()*200 + local c=e:GetHandler() + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c16909657.lua b/script/c16909657.lua index bae700f6..bc132684 100644 --- a/script/c16909657.lua +++ b/script/c16909657.lua @@ -1,40 +1,40 @@ ---レプティレス・スキュラ -function c16909657.initial_effect(c) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(16909657,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCondition(c16909657.spcon) - e2:SetTarget(c16909657.sptg) - e2:SetOperation(c16909657.spop) - c:RegisterEffect(e2) -end -function c16909657.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsRelateToBattle() and bc:GetPreviousAttackOnField()==0 -end -function c16909657.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=e:GetHandler():GetBattleTarget() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and tc:IsLocation(LOCATION_GRAVE) and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) end - tc:CreateEffectRelation(e) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) -end -function c16909657.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetBattleTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - end -end +--レプティレス・スキュラ +function c16909657.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(16909657,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCondition(c16909657.spcon) + e2:SetTarget(c16909657.sptg) + e2:SetOperation(c16909657.spop) + c:RegisterEffect(e2) +end +function c16909657.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:GetPreviousAttackOnField()==0 +end +function c16909657.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetHandler():GetBattleTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and tc:IsLocation(LOCATION_GRAVE) and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + tc:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) +end +function c16909657.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c16940215.lua b/script/c16940215.lua index 32f2a3da..d1a39b44 100644 --- a/script/c16940215.lua +++ b/script/c16940215.lua @@ -1,42 +1,41 @@ ---ナチュル・ナーブ -function c16940215.initial_effect(c) - --Negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(16940215,0)) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c16940215.discon) - e1:SetCost(c16940215.discost) - e1:SetTarget(c16940215.distg) - e1:SetOperation(c16940215.disop) - c:RegisterEffect(e1) -end -function c16940215.discon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c16940215.cfilter(c) - return c:IsSetCard(0x2a) and not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c16940215.discost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsReleasable() and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.CheckReleaseGroup(tp,c16940215.cfilter,1,c) end - local g=Duel.SelectReleaseGroup(tp,c16940215.cfilter,1,1,c) - g:AddCard(c) - Duel.Release(g,REASON_COST) -end -function c16940215.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c16940215.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--ナチュル・ナーブ +function c16940215.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(16940215,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c16940215.discon) + e1:SetCost(c16940215.discost) + e1:SetTarget(c16940215.distg) + e1:SetOperation(c16940215.disop) + c:RegisterEffect(e1) +end +function c16940215.discon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c16940215.cfilter(c) + return c:IsSetCard(0x2a) and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c16940215.discost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsReleasable() and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.CheckReleaseGroup(tp,c16940215.cfilter,1,c) end + local g=Duel.SelectReleaseGroup(tp,c16940215.cfilter,1,1,c) + g:AddCard(c) + Duel.Release(g,REASON_COST) +end +function c16940215.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c16940215.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c16947147.lua b/script/c16947147.lua index 0e0c6213..75b4af19 100644 --- a/script/c16947147.lua +++ b/script/c16947147.lua @@ -1,35 +1,35 @@ ---SRメンコート -function c16947147.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(16947147,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c16947147.spcon) - e1:SetTarget(c16947147.sptg) - e1:SetOperation(c16947147.spop) - c:RegisterEffect(e1) -end -function c16947147.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():GetControler()~=tp and Duel.GetAttackTarget()==nil -end -function c16947147.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) end - local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c16947147.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK)~=0 then - local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) - Duel.ChangePosition(g,POS_FACEUP_DEFENSE) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--SRメンコート +function c16947147.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(16947147,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c16947147.spcon) + e1:SetTarget(c16947147.sptg) + e1:SetOperation(c16947147.spop) + c:RegisterEffect(e1) +end +function c16947147.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp and Duel.GetAttackTarget()==nil +end +function c16947147.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) end + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c16947147.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK)~=0 then + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c1697104.lua b/script/c1697104.lua index 87e2567c..c2b47471 100644 --- a/script/c1697104.lua +++ b/script/c1697104.lua @@ -1,91 +1,90 @@ ---PSYフレームギア・ε -function c1697104.initial_effect(c) - c:EnableUnsummonable() - --splimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c1697104.splimit) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(1697104,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_HAND) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetCondition(c1697104.condition) - e2:SetTarget(c1697104.target) - e2:SetOperation(c1697104.operation) - c:RegisterEffect(e2) -end -function c1697104.splimit(e,se,sp,st) - return se:IsHasType(EFFECT_TYPE_ACTIONS) -end -function c1697104.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and ep~=tp and re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) - and Duel.IsChainNegatable(ev) -end -function c1697104.spfilter(c,e,tp) - return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c1697104.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) - and not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c1697104.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c1697104.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c1697104.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:FilterCount(aux.nvfilter,nil)==0 then return end - local tc=g:GetFirst() - local c=e:GetHandler() - local fid=c:GetFieldID() - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(1697104,RESET_EVENT+0x1fe0000,0,1,fid) - c:RegisterFlagEffect(1697104,RESET_EVENT+0x1fe0000,0,1,fid) - Duel.SpecialSummonComplete() - g:AddCard(c) - g:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(g) - e1:SetCondition(c1697104.rmcon) - e1:SetOperation(c1697104.rmop) - Duel.RegisterEffect(e1,tp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c1697104.rmfilter(c,fid) - return c:GetFlagEffectLabel(1697104)==fid -end -function c1697104.rmcon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c1697104.rmfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c1697104.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c1697104.rmfilter,nil,e:GetLabel()) - Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) -end +--PSYフレームギア・ε +function c1697104.initial_effect(c) + c:EnableUnsummonable() + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c1697104.splimit) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1697104,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCondition(c1697104.condition) + e2:SetTarget(c1697104.target) + e2:SetOperation(c1697104.operation) + c:RegisterEffect(e2) +end +function c1697104.splimit(e,se,sp,st) + return se:IsHasType(EFFECT_TYPE_ACTIONS) +end +function c1697104.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and ep~=tp and re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsChainNegatable(ev) +end +function c1697104.spfilter(c,e,tp) + return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c1697104.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c1697104.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c1697104.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c1697104.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local tc=g:GetFirst() + local c=e:GetHandler() + local fid=c:GetFieldID() + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(1697104,RESET_EVENT+0x1fe0000,0,1,fid) + c:RegisterFlagEffect(1697104,RESET_EVENT+0x1fe0000,0,1,fid) + Duel.SpecialSummonComplete() + g:AddCard(c) + g:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c1697104.rmcon) + e1:SetOperation(c1697104.rmop) + Duel.RegisterEffect(e1,tp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c1697104.rmfilter(c,fid) + return c:GetFlagEffectLabel(1697104)==fid +end +function c1697104.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c1697104.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c1697104.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c1697104.rmfilter,nil,e:GetLabel()) + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c170000111.lua b/script/c170000111.lua new file mode 100644 index 00000000..a70d6a2e --- /dev/null +++ b/script/c170000111.lua @@ -0,0 +1,46 @@ +--Magnet Warrior Sigma Plus +function c170000111.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c170000111.vala) + c:RegisterEffect(e1) + --must attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetCondition(c170000111.becon) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_EP) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetCondition(c170000111.becon) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_MUST_BE_ATTACKED) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c170000111.atkval) + e4:SetTarget(c170000111.atktg) + c:RegisterEffect(e4) +end +function c170000111.vala(e,c) + return c:IsFaceup() and c:IsType(0x20000000) and not c:IsType(0x40000000) +end +function c170000111.atkfilter(c) + return c:IsFaceup() and c:IsType(0x40000000) +end +function c170000111.becon(e) + return e:GetHandler():IsAttackable() + and Duel.IsExistingMatchingCard(c170000111.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c170000111.atktg(e,c) + return c:IsFaceup() and c:IsType(0x40000000) +end +function c170000111.atkval(e,c) + return not c:IsImmuneToEffect(e) and c==e:GetHandler() +end diff --git a/script/c170000112.lua b/script/c170000112.lua new file mode 100644 index 00000000..2a7f4178 --- /dev/null +++ b/script/c170000112.lua @@ -0,0 +1,46 @@ +--Magnet Warrior Omega Minus +function c170000112.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c170000112.vala) + c:RegisterEffect(e1) + --must attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetCondition(c170000112.becon) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_EP) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetCondition(c170000112.becon) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_MUST_BE_ATTACKED) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c170000112.atkval) + e4:SetTarget(c170000112.atktg) + c:RegisterEffect(e4) +end +function c170000112.vala(e,c) + return c:IsFaceup() and c:IsType(0x40000000) and not c:IsType(0x20000000) +end +function c170000112.atkfilter(c) + return c:IsFaceup() and c:IsType(0x20000000) +end +function c170000112.becon(e) + return e:GetHandler():IsAttackable() + and Duel.IsExistingMatchingCard(c170000112.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c170000112.atktg(e,c) + return c:IsFaceup() and c:IsType(0x20000000) +end +function c170000112.atkval(e,c) + return not c:IsImmuneToEffect(e) and c==e:GetHandler() +end diff --git a/script/c170000113.lua b/script/c170000113.lua new file mode 100644 index 00000000..6c2ac397 --- /dev/null +++ b/script/c170000113.lua @@ -0,0 +1,46 @@ +--Magnet Warrior Sigma Minus +function c170000113.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c170000113.vala) + c:RegisterEffect(e1) + --must attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetCondition(c170000113.becon) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_EP) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetCondition(c170000113.becon) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_MUST_BE_ATTACKED) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c170000113.atkval) + e4:SetTarget(c170000113.atktg) + c:RegisterEffect(e4) +end +function c170000113.vala(e,c) + return c:IsFaceup() and c:IsType(0x40000000) and not c:IsType(0x20000000) +end +function c170000113.atkfilter(c) + return c:IsFaceup() and c:IsType(0x20000000) +end +function c170000113.becon(e) + return e:GetHandler():IsAttackable() + and Duel.IsExistingMatchingCard(c170000113.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c170000113.atktg(e,c) + return c:IsFaceup() and c:IsType(0x20000000) +end +function c170000113.atkval(e,c) + return not c:IsImmuneToEffect(e) and c==e:GetHandler() +end diff --git a/script/c170000115.lua b/script/c170000115.lua new file mode 100644 index 00000000..af31e8a0 --- /dev/null +++ b/script/c170000115.lua @@ -0,0 +1,29 @@ +--Magnet Conductor Plus +function c170000115.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c170000115.target) + e1:SetOperation(c170000115.activate) + c:RegisterEffect(e1) +end +function c170000115.filter(c) + return c:IsType(0x20000000) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c170000115.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c170000115.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c170000115.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c170000115.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c170000115.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c170000116.lua b/script/c170000116.lua new file mode 100644 index 00000000..abbf18e3 --- /dev/null +++ b/script/c170000116.lua @@ -0,0 +1,139 @@ +--Conduction Warrior Linear Magnum Plus Minus +function c170000116.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c170000116.spcon) + e1:SetOperation(c170000116.spop) + c:RegisterEffect(e1) + --Increase ATK + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c170000116.atkgtg) + e2:SetOperation(c170000116.atkgop) + c:RegisterEffect(e2) + --must attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MUST_ATTACK) + e3:SetCondition(c170000116.becon) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_EP) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,0) + e4:SetCondition(c170000116.becon) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_MUST_BE_ATTACKED) + e5:SetTargetRange(0,LOCATION_MZONE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c170000116.atkval) + e5:SetTarget(c170000116.atktg) + c:RegisterEffect(e5) +end +function c170000116.spfilter(c,tpe1,tpe2) + return c:IsType(tpe1) and not c:IsType(tpe2) and c:IsAbleToGraveAsCost() +end +function c170000116.spfilter2(c) + return c:IsType(0x20000000) and c:IsType(0x40000000) and c:IsAbleToGraveAsCost() +end +function c170000116.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local g1=Duel.GetMatchingGroup(c170000116.spfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,nil,0x20000000,0x40000000) + local g2=Duel.GetMatchingGroup(c170000116.spfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,nil,0x40000000,0x20000000) + local g3=Duel.GetMatchingGroup(c170000116.spfilter2,tp,LOCATION_HAND+LOCATION_ONFIELD,0,c) + local ct1=g1:GetCount() + local ct2=g2:GetCount() + local ct3=g3:GetCount() + if ct1+ct3==0 or ct2+ct3==0 then return false end + if ct1==0 and ct2==0 and ct3<2 then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + local f3=g3:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + if ft==-1 then return (f1>0 and f2>0) or (f1>0 and f3>0) or (f2>0 and f3>0) or f3>1 + else return f1>0 or f2>0 end +end +function c170000116.spop(e,tp,eg,ep,ev,re,r,rp,c) +local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c170000116.spfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,nil,0x20000000,0x40000000) + local g2=Duel.GetMatchingGroup(c170000116.spfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,nil,0x40000000,0x20000000) + local g3=Duel.GetMatchingGroup(c170000116.spfilter2,tp,LOCATION_HAND+LOCATION_ONFIELD,0,c) + g1:Merge(g2) + g1:Merge(g3) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + if c170000116.spfilter2(tc) then + g1:RemoveCard(tc) + elseif c170000116.spfilter(tc,0x20000000,0x40000000) then + g1:Remove(c170000116.spfilter,nil,0x20000000,0x40000000) + else + g1:Remove(c170000116.spfilter,nil,0x40000000,0x20000000) + end + ft=ft+1 + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoGrave(g,REASON_COST) + c:SetMaterial(g) +end +function c170000116.filter(c) + return c:IsFaceup() and (c:IsType(0x20000000) or c:IsType(0x40000000)) +end +function c170000116.atkgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c170000116.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c170000116.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c170000116.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) +end +function c170000116.atkgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) and c:IsFaceup() then + local atk=tc:GetAttack()/2 + if atk<0 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c170000116.atkfilter(c) + return c:IsFaceup() and (c:IsType(0x20000000) or c:IsType(0x40000000)) +end +function c170000116.becon(e) + return e:GetHandler():IsAttackable() + and Duel.IsExistingMatchingCard(c170000116.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c170000116.atktg(e,c) + return c:IsFaceup() and (c:IsType(0x20000000) or c:IsType(0x40000000)) +end +function c170000116.atkval(e,c) + return not c:IsImmuneToEffect(e) and c==e:GetHandler() +end diff --git a/script/c170000117.lua b/script/c170000117.lua new file mode 100644 index 00000000..d3e89472 --- /dev/null +++ b/script/c170000117.lua @@ -0,0 +1,56 @@ +--Time Fusion +function c170000117.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c170000117.cost) + e1:SetTarget(c170000117.target) + e1:SetOperation(c170000117.activate) + c:RegisterEffect(e1) +end +function c170000117.cfilter(c) + return c:IsAbleToRemoveAsCost() +end +function c170000117.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c170000117.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c170000117.cfilter,tp,LOCATION_HAND,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c170000117.filter(c,e,tp) + return c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c170000117.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c170000117.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c170000117.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,c170000117.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + Duel.ConfirmCards(1-tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c170000117.recon) + e1:SetOperation(c170000117.retop) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + Duel.RegisterEffect(e1,tp) +end +function c170000117.recon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c170000117.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.SpecialSummonComplete() +end +end \ No newline at end of file diff --git a/script/c170000119.lua b/script/c170000119.lua new file mode 100644 index 00000000..477f5776 --- /dev/null +++ b/script/c170000119.lua @@ -0,0 +1,31 @@ +--Blasting Vein +function c170000119.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c170000119.cost) + e1:SetTarget(c170000119.target) + e1:SetOperation(c170000119.activate) + c:RegisterEffect(e1) +end +function c170000119.filter(c) + return c:IsFacedown() and c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c170000119.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c170000119.filter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c170000119.filter,tp,LOCATION_SZONE,0,1,1,e:GetHandler()) + Duel.Destroy(g,REASON_COST) +end +function c170000119.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c170000119.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c170000120.lua b/script/c170000120.lua new file mode 100644 index 00000000..d4ba9b0c --- /dev/null +++ b/script/c170000120.lua @@ -0,0 +1,35 @@ +--Fire Recovery +function c170000120.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c170000120.cost) + e1:SetTarget(c170000120.target) + e1:SetOperation(c170000120.activate) + c:RegisterEffect(e1) +end +function c170000120.cfilter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsDiscardable() +end +function c170000120.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c170000120.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c170000120.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c170000120.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c170000120.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c170000120.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c170000120.activate(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,c170000120.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c170000121.lua b/script/c170000121.lua new file mode 100644 index 00000000..717d93e4 --- /dev/null +++ b/script/c170000121.lua @@ -0,0 +1,26 @@ +--Bonfire +function c170000121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c170000121.target) + e1:SetOperation(c170000121.activate) + c:RegisterEffect(e1) +end +function c170000121.filter(c) + return c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c170000121.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c170000121.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c170000121.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c170000121.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c170000122.lua b/script/c170000122.lua new file mode 100644 index 00000000..ad3be43c --- /dev/null +++ b/script/c170000122.lua @@ -0,0 +1,83 @@ +--Magnet Force Plus +function c170000122.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(c170000122.target) + e1:SetOperation(c170000122.operation) + c:RegisterEffect(e1) +end +function c170000122.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c170000122.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + if not Duel.Equip(tp,c,tc) then return end + c:CancelToGrave() + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetValue(c170000122.vala) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --must attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_MUST_ATTACK) + e3:SetCondition(c170000122.becon) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_EP) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(0,1) + e4:SetCondition(c170000122.becon) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_MUST_BE_ATTACKED) + e5:SetTargetRange(LOCATION_MZONE,0) + e5:SetRange(LOCATION_SZONE) + e5:SetValue(c170000122.atkval) + e5:SetTarget(c170000122.atktg) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + end +end +function c170000122.vala(e,c) + return c:IsFaceup() and c:IsType(0x20000000) and not c:IsType(0x40000000) +end +function c170000122.atkfilter(c) + return c:IsFaceup() and c:IsType(0x40000000) +end +function c170000122.becon(e) + return e:GetHandler():GetEquipTarget():IsAttackable() + and Duel.IsExistingMatchingCard(c170000122.atkfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c170000122.atktg(e,c) + return c:IsFaceup() and c:IsType(0x40000000) +end +function c170000122.atkval(e,c) + return not c:IsImmuneToEffect(e) and c==e:GetHandler():GetEquipTarget() +end diff --git a/script/c170000123.lua b/script/c170000123.lua new file mode 100644 index 00000000..36caeeee --- /dev/null +++ b/script/c170000123.lua @@ -0,0 +1,98 @@ +--Magnet Force Minus +function c170000123.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(c170000123.target) + e1:SetOperation(c170000123.operation) + c:RegisterEffect(e1) +end +function c170000123.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) + local g=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 c170000123.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + if not Duel.Equip(tp,c,tc) then return end + c:CancelToGrave() + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetValue(c170000123.vala) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --must attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_MUST_ATTACK) + e3:SetCondition(c170000123.becon) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_EP) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + if tc:IsControler(tp) then + e4:SetTargetRange(1,0) + else + e4:SetTargetRange(0,1) + end + e4:SetCondition(c170000123.becon) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_MUST_BE_ATTACKED) + if tc:IsControler(tp) then + e5:SetTargetRange(0,LOCATION_MZONE) + else + e5:SetTargetRange(LOCATION_MZONE,0) + end + e5:SetRange(LOCATION_SZONE) + e5:SetValue(c170000123.atkval) + e5:SetTarget(c170000123.atktg) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetCode(EFFECT_ADD_TYPE) + e6:SetType(EFFECT_TYPE_EQUIP) + e6:SetValue(0x40000000) + e6:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e6) + end +end +function c170000123.vala(e,c) + return c:IsFaceup() and c:IsType(0x40000000) and not c:IsType(0x20000000) +end +function c170000123.atkfilter(c) + return c:IsFaceup() and c:IsType(0x20000000) +end +function c170000123.becon(e) + local tp=e:GetHandler():GetEquipTarget():GetControler() + return e:GetHandler():GetEquipTarget():IsAttackable() + and Duel.IsExistingMatchingCard(c170000123.atkfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c170000123.atktg(e,c) + return c:IsFaceup() and c:IsType(0x20000000) +end +function c170000123.atkval(e,c) + return not c:IsImmuneToEffect(e) and c==e:GetHandler():GetEquipTarget() +end diff --git a/script/c170000126.lua b/script/c170000126.lua new file mode 100644 index 00000000..775fd839 --- /dev/null +++ b/script/c170000126.lua @@ -0,0 +1,51 @@ +--Crystal Flash +function c170000126.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c170000126.target) + e1:SetOperation(c170000126.activate) + c:RegisterEffect(e1) +end +function c170000126.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1034) +end +function c170000126.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c170000126.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c170000126.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_HAND,0,1,nil,0x1034) end + Duel.SelectTarget(tp,c170000126.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_HAND,nil,1,tp,LOCATION_HAND) +end +function c170000126.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local tc2=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_HAND,0,1,1,nil,0x1034):GetFirst() + if tc2 then + Duel.MoveToField(tc2,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e0=Effect.CreateEffect(e:GetHandler()) + e0:SetCode(EFFECT_CHANGE_TYPE) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e0:SetReset(RESET_EVENT+0x1fc0000) + e0:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + tc2:RegisterEffect(e0,true) + Duel.RaiseEvent(tc2,47408488,e,0,tp,0,0) + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c170000128.lua b/script/c170000128.lua new file mode 100644 index 00000000..06457ec4 --- /dev/null +++ b/script/c170000128.lua @@ -0,0 +1,41 @@ +--Amber Crystal Circle +function c170000128.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c170000128.condition) + e1:SetTarget(c170000128.target) + e1:SetOperation(c170000128.activate) + c:RegisterEffect(e1) +end +function c170000128.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsCode(69937550) and d:IsFaceup() and d:IsControler(tp) +end +function c170000128.filter(c) + return c:IsSetCard(0x1034) and c:IsFaceup() +end +function c170000128.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=Duel.GetAttackTarget() + if chk==0 then return Duel.IsExistingMatchingCard(c170000128.filter,tp,LOCATION_MZONE,0,1,tc) end + Duel.SetTargetCard(tc) +end +function c170000128.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=0 + local g=Duel.GetMatchingGroup(c170000128.filter,tp,LOCATION_MZONE,0,tc) + local bc=g:GetFirst() + while bc do + atk=atk+bc:GetAttack() + bc=g:GetNext() + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c170000149.lua b/script/c170000149.lua new file mode 100644 index 00000000..fbc4cce3 --- /dev/null +++ b/script/c170000149.lua @@ -0,0 +1,60 @@ +--Tyrant Wing +function c170000149.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c170000149.condition) + e1:SetTarget(c170000149.target) + e1:SetOperation(c170000149.operation) + c:RegisterEffect(e1) +end +function c170000149.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c170000149.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 e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c170000149.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c170000149.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c170000149.eqlimit) + e1:SetLabelObject(tc) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(400) + c:RegisterEffect(e2) + --Multiple Attacks + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(1) + e3:SetCondition(c170000149.atkcon) + c:RegisterEffect(e3) + end +end +function c170000149.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c170000149.atkcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)>0 +end diff --git a/script/c170000150.lua b/script/c170000150.lua new file mode 100644 index 00000000..fdd174d5 --- /dev/null +++ b/script/c170000150.lua @@ -0,0 +1,43 @@ +--Doom Virus Dragon +function c170000150.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,57728570,11082056,true,true) + --Doom Virus (Faceup) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c170000150.desop) + c:RegisterEffect(e1) + --check + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_MSET) + e2:SetOperation(c170000150.chkop) + c:RegisterEffect(e2) +end +c170000150.material_trap=57728570 +function c170000150.filter(c,g,pg) + return c:IsFaceup() and c:GetAttack()>=1500 and c:IsDestructable() and not c:IsCode(170000150) +end +function c170000150.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c170000150.filter,tp,0,LOCATION_MZONE,nil) + local conf=Duel.GetMatchingGroup(c170000150.filter2,tp,0,LOCATION_MZONE,nil) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + g:Merge(conf) + end + Duel.Destroy(g,REASON_EFFECT) +end +function c170000150.filter2(c) + return c:IsFacedown() and c:IsAttackAbove(1500) and c:IsDestructable() +end +function c170000150.chkop(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE,POS_FACEDOWN) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + end +end diff --git a/script/c170000151.lua b/script/c170000151.lua new file mode 100644 index 00000000..719381ef --- /dev/null +++ b/script/c170000151.lua @@ -0,0 +1,54 @@ +--Fang of Critias +function c170000151.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c170000151.target) + e1:SetOperation(c170000151.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(c170000151.monval) + c:RegisterEffect(e2) +end +function c170000151.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c170000151.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_ONFIELD) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c170000151.spfilter(c,e,tp) + local code=c.material_trap + if not code or not c:IsCanBeSpecialSummoned(e,0,tp,true,false) then return false end + return Duel.IsExistingMatchingCard(c170000151.tgfilter,tp,LOCATION_ONFIELD,0,1,nil,code) +end +function c170000151.tgfilter(c,code) + return c:IsType(TYPE_TRAP) and c:IsAbleToGrave() and code==c:GetCode() +end +function c170000151.activate(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 sg=Duel.SelectMatchingCard(tp,c170000151.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local sc=sg:GetFirst() + if sc then + local code=sc.material_trap + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tg=Duel.SelectMatchingCard(tp,c170000151.tgfilter,tp,LOCATION_ONFIELD,0,1,1,nil,code) + tg:AddCard(e:GetHandler()) + Duel.SendtoGrave(tg,REASON_EFFECT) + Duel.BreakEffect() + Duel.SpecialSummon(sc,0,tp,tp,true,false,POS_FACEUP) + sc:CompleteProcedure() + end +end +function c170000151.monval(e,c) + if (c:IsOnField() and c:IsFacedown()) or c:IsLocation(LOCATION_GRAVE) then + return TYPE_EFFECT+TYPE_MONSTER + else + return 0 + end +end diff --git a/script/c170000152.lua b/script/c170000152.lua new file mode 100644 index 00000000..e846504e --- /dev/null +++ b/script/c170000152.lua @@ -0,0 +1,65 @@ +--Eye of Timaeus +function c170000152.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c170000152.target) + e1:SetOperation(c170000152.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(c170000152.monval) + c:RegisterEffect(e2) +end +function c170000152.filter1(c,e,tp) + return Duel.IsExistingMatchingCard(c170000152.filter2,tp,LOCATION_EXTRA,0,1,nil,c:GetCode(),e,tp) +end +function c170000152.filter2(c,code,e,tp) + if not c.material_count or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) then return false end + for i=1,c.material_count do + if code==c.material[i] then + for i=1,c.material_count do + if 1784686==c.material[i] then return true end + end + end + end + return false +end +function c170000152.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>=0 + and Duel.IsExistingMatchingCard(c170000152.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c170000152.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=-1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tg=Duel.SelectMatchingCard(tp,c170000152.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + local co=tg:GetFirst() + tg:AddCard(e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c170000152.filter2,tp,LOCATION_EXTRA,0,1,1,nil,co:GetCode(),e,tp) + Duel.SendtoGrave(tg,REASON_EFFECT) + Duel.BreakEffect() + local sc=sg:GetFirst() + if sg then + sc:SetMaterial(tg) + Duel.SendtoGrave(tg,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(sc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end +function c170000152.monval(e,c) + if (c:IsOnField() and c:IsFacedown()) or c:IsLocation(LOCATION_GRAVE) then + return TYPE_EFFECT+TYPE_MONSTER + else + return 0 + end +end diff --git a/script/c170000153.lua b/script/c170000153.lua new file mode 100644 index 00000000..8d9b6627 --- /dev/null +++ b/script/c170000153.lua @@ -0,0 +1,75 @@ +--Claw of Hermos +function c170000153.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c170000153.target) + e1:SetOperation(c170000153.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(c170000153.monval) + c:RegisterEffect(e2) +end +function c170000153.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>-1 + and Duel.IsExistingMatchingCard(c170000153.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c170000153.spfilter(c,e,tp) + local f=c.hermos_filter + if not f then return false end + return Duel.IsExistingMatchingCard(c170000153.tgfilter,tp,LOCATION_MZONE,0,1,nil,f) +end +function c170000153.tgfilter(c,f) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() and f(c) + and Duel.IsExistingTarget(Card.IsFaceup,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,1,c) +end +function c170000153.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<-1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c170000153.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local sc=sg:GetFirst() + if sc then + local f=sc.hermos_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tg=Duel.SelectMatchingCard(tp,c170000153.tgfilter,tp,LOCATION_MZONE,0,1,1,nil,f) + tg:AddCard(e:GetHandler()) + Duel.SendtoGrave(tg,REASON_EFFECT) + Duel.BreakEffect() + if sc:CheckActivateEffect(false,false,false)~=nil then + Duel.MoveToField(sc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local tpe=sc:GetType() + local te=sc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + Duel.Hint(HINT_CARD,0,sc:GetCode()) + sc:CreateEffectRelation(te) + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + sc:ReleaseEffectRelation(te) + else + Duel.SpecialSummon(sc,0,tp,tp,true,false,POS_FACEUP) + end + sc:CompleteProcedure() + end +end +function c170000153.monval(e,c) + if (c:IsOnField() and c:IsFacedown()) or c:IsLocation(LOCATION_GRAVE) then + return TYPE_EFFECT+TYPE_MONSTER + else + return 0 + end +end diff --git a/script/c170000154.lua b/script/c170000154.lua new file mode 100644 index 00000000..43b1fa24 --- /dev/null +++ b/script/c170000154.lua @@ -0,0 +1,46 @@ +--ミラーフォース・ドラゴン +function c170000154.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,11082056,44095762,false,false) + --Mirror Force Power! + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c170000154.con) + e1:SetTarget(c170000154.tg) + e1:SetOperation(c170000154.op) + c:RegisterEffect(e1) +end +c170000154.material_trap=44095762 +function c170000154.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=Duel.GetAttacker() + if bc==c then bc=Duel.GetAttackTarget() end + return bc and bc:IsFaceup() and bc:GetAttack()>=c:GetAttack() +end +function c170000154.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c170000154.filter1(c,atk) + return c:IsFaceup() and c:GetAttack()-2 + and Duel.IsExistingMatchingCard(c170000156.spfilter,tp,LOCATION_ONFIELD,0,1,nil,58293343) + and Duel.IsExistingMatchingCard(c170000156.spfilter,tp,LOCATION_ONFIELD,0,1,nil,89631139) +end +function c170000156.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c170000156.spfilter,tp,LOCATION_ONFIELD,0,1,1,nil,58293343) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c170000156.spfilter,tp,LOCATION_ONFIELD,0,1,1,nil,89631139) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end diff --git a/script/c170000157.lua b/script/c170000157.lua new file mode 100644 index 00000000..4e865c25 --- /dev/null +++ b/script/c170000157.lua @@ -0,0 +1,34 @@ +--Dark Magician Girl the Dragon Knight +function c170000157.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,1784686,38033121,true,true) + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCost(c170000157.descost) + e1:SetTarget(c170000157.destg) + e1:SetOperation(c170000157.desop) + c:RegisterEffect(e1) +end +function c170000157.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c170000157.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc==c then tc=Duel.GetAttackTarget() end + if chk==0 then return tc and tc:IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c170000157.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc==c then tc=Duel.GetAttackTarget() end + if tc:IsRelateToBattle() then Duel.Destroy(tc,REASON_EFFECT) end +end \ No newline at end of file diff --git a/script/c170000158.lua b/script/c170000158.lua new file mode 100644 index 00000000..de1e29ef --- /dev/null +++ b/script/c170000158.lua @@ -0,0 +1,37 @@ +--Amulet Dragon +function c170000158.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,1784686,46986414,true,true) + --Spell Power + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c170000158.target) + e1:SetOperation(c170000158.operation) + c:RegisterEffect(e1) +end +c170000158.dark_magician_list=true +function c170000158.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToRemove() +end +function c170000158.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c170000158.cfilter,tp,LOCATION_GRAVE,0,e:GetHandler()) + if chk==0 then return g:GetCount()>0 and g:FilterCount(Card.IsAbleToRemoveAsCost,nil)==g:GetCount() end + e:SetLabel(g:GetCount()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c170000158.operation(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:SetValue(e:GetLabel()*300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c170000166.lua b/script/c170000166.lua new file mode 100644 index 00000000..bfcaa553 --- /dev/null +++ b/script/c170000166.lua @@ -0,0 +1,82 @@ +--Orichalchos Kyutora +function c170000166.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c170000166.spcon) + e1:SetOperation(c170000166.spop) + c:RegisterEffect(e1) + --Negates Battle Damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c170000166.rdcon) + e2:SetOperation(c170000166.rdop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c170000166.target) + e3:SetOperation(c170000166.operation) + e3:SetLabel(0) + c:RegisterEffect(e3) + e2:SetLabelObject(e3) + --avoid battle damage + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetTarget(c170000166.efilter) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c170000166.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.CheckLPCost(c:GetControler(),500) +end +function c170000166.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.PayLPCost(tp,500) +end +function c170000166.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 + and Duel.IsExistingMatchingCard(c170000166.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c170000166.filter(c,e,tp) + return c:IsCode(7634581) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c170000166.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 tc=Duel.SelectMatchingCard(tp,c170000166.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + if e:GetLabel()>0 then + Duel.RaiseSingleEvent(tc,170000166,e,REASON_EFFECT,tp,tp,e:GetLabel()) + e:SetLabel(0) + end + end +end +function c170000166.rdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()~=nil and tp==ep +end +function c170000166.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) + if ep==tp then + e:GetLabelObject():SetLabel(ev) + end +end +function c170000166.efilter(e,c) + return c:GetOriginalCode()~=170000166 +end diff --git a/script/c170000167.lua b/script/c170000167.lua new file mode 100644 index 00000000..d8dd0f10 --- /dev/null +++ b/script/c170000167.lua @@ -0,0 +1,146 @@ +--Orichalcos Shunoros (Anime) +function c170000167.initial_effect(c) + c:EnableReviveLimit() + --cannot summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --ATK goes down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c170000167.statcon) + e2:SetOperation(c170000167.statop) + c:RegisterEffect(e2) + --DEF goes down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLED) + e3:SetCondition(c170000167.statcon2) + e3:SetOperation(c170000167.statop2) + c:RegisterEffect(e3) + --DIVINE SERPENT + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_DESTROYED) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetCondition(c170000167.dscon) + e4:SetTarget(c170000167.dstg) + e4:SetOperation(c170000167.dsop) + c:RegisterEffect(e4) + --atk + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(170000166) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c170000167.atkop) + c:RegisterEffect(e5) + --sp summon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(62892347,0)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_SUMMON_SUCCESS) + e6:SetTarget(c170000167.sptg) + e6:SetOperation(c170000167.spop) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e7) + local e8=e6:Clone() + e8:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e8) +end +function c170000167.statcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc==nil then return false end + return bc:GetPosition()==POS_FACEUP_ATTACK or bc:GetPosition()==POS_FACEDOWN_ATTACK +end +function c170000167.statop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + local atk=bc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) +end +function c170000167.statcon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if bc==nil then return false end + return bc:GetPosition()==POS_FACEUP_DEFENSE or bc:GetPosition()==POS_FACEDOWN_DEFENSE +end +function c170000167.statop2(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + local def=bc:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-def) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) +end +function c170000167.dscon(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local crp=c:GetReasonPlayer() + return c:IsReason(REASON_DESTROY) and e:GetHandler():GetPreviousAttackOnField()==0 and Duel.GetLP(tp)>=10000 +end +function c170000167.filter(c,e,tp) + return c:IsCode(82103466) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c170000167.dstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c170000167.dsop(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,c170000167.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end +function c170000167.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(ev) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c170000167.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c170000167.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,170000168) + and Duel.IsExistingMatchingCard(c170000167.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,170000169) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK+LOCATION_HAND) +end +function c170000167.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c170000167.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g1=Duel.GetMatchingGroup(c170000167.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp,170000168) + local g2=Duel.GetMatchingGroup(c170000167.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp,170000169) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + local tc=sg1:GetFirst() + Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + Duel.SpecialSummonStep(sg2:GetFirst(),0,tp,tp,true,false,POS_FACEUP) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c170000168.lua b/script/c170000168.lua new file mode 100644 index 00000000..eeb1cb63 --- /dev/null +++ b/script/c170000168.lua @@ -0,0 +1,89 @@ +--Orichalcos Dexia +--By Jackmoonward +function c170000168.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --ATK Increase + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c170000168.adval) + c:RegisterEffect(e2) + --Shunoros Debuf + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLED) + e3:SetTarget(c170000168.target) + e3:SetOperation(c170000168.operation) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c170000168.descon) + e4:SetOperation(c170000168.desop) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE) + e5:SetCondition(c170000168.atcon) + e5:SetValue(1) + c:RegisterEffect(e5) +end +function c170000168.atfilter(c) + return c:IsFaceup() and c:IsCode(7634581) +end +function c170000168.atcon(e) + return Duel.IsExistingMatchingCard(c170000168.atfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c170000168.adval(e,c) + local ph=Duel.GetCurrentPhase() + local c=e:GetHandler() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if ph==PHASE_DAMAGE_CAL or PHASE_DAMAGE or Duel.IsDamageCalculated() and c:IsRelateToBattle() then + if a==c and d:IsAttackPos() then return d:GetAttack()+300 end + if a==c and d:IsDefensePos() then return d:GetDefense()+300 end + if d==c then return a:GetAttack()+300 end + if not a==c and not d==c then return 0 end + end + if not ph==PHASE_DAMAGE_CAL or not PHASE_DAMAGE or not Duel.IsDamageCalculated() then return 0 end +end +function c170000168.filter(c) + return c:IsFaceup() and c:IsCode(7634581) and c:GetAttack()~=0 +end +function c170000168.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c170000168.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c170000168.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c170000168.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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:SetValue(-e:GetHandler():GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c170000168.desfilter(c,tp) + return c:IsCode(7634581) and c:IsPreviousPosition(POS_FACEUP) +end +function c170000168.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c170000168.desfilter,1,nil,tp) +end +function c170000168.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c170000169.lua b/script/c170000169.lua new file mode 100644 index 00000000..4da6e145 --- /dev/null +++ b/script/c170000169.lua @@ -0,0 +1,92 @@ +--Orichalcos Aristeros +--By Jackmoonward +function c170000169.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --change battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c170000169.cbcon) + e2:SetOperation(c170000169.cbop) + c:RegisterEffect(e2) + --Shunoros Debuf + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLED) + e3:SetTarget(c170000169.target) + e3:SetOperation(c170000169.operation) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c170000169.descon) + e4:SetOperation(c170000169.desop) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE) + e5:SetCondition(c170000169.atcon) + e5:SetValue(1) + c:RegisterEffect(e5) +end +function c170000169.atfilter(c) + return c:IsFaceup() and c:IsCode(7634581) +end +function c170000169.atcon(e) + return Duel.IsExistingMatchingCard(c170000169.atfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c170000169.cbcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c170000169.cbop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.ChangeAttackTarget(c) + local b=Duel.GetAttacker() + local def=b:GetAttack()+300 + e:SetLabel(def) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) +end +function c170000169.filter(c) + return c:IsFaceup() and c:IsCode(7634581) and c:GetAttack()~=0 +end +function c170000169.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c170000169.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c170000169.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c170000169.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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:SetValue(-e:GetHandler():GetDefense()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c170000169.desfilter(c,tp) + return c:IsCode(7634581) and c:IsPreviousPosition(POS_FACEUP) +end +function c170000169.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c170000169.desfilter,1,nil,tp) +end +function c170000169.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c170000170.lua b/script/c170000170.lua new file mode 100644 index 00000000..38d997ab --- /dev/null +++ b/script/c170000170.lua @@ -0,0 +1,71 @@ +--Divine Serpent Geh +function c170000170.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --infinite + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c170000170.damcon) + e2:SetOperation(c170000170.damop) + c:RegisterEffect(e2) + --spsummon success + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetOperation(c170000170.sucop) + c:RegisterEffect(e4) + --attack cost + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_ATTACK_COST) + e5:SetCost(c170000170.atcost) + e5:SetOperation(c170000170.atop) + c:RegisterEffect(e5) + -- + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetCode(EFFECT_CANNOT_LOSE_LP) + e8:SetRange(LOCATION_MZONE) + e8:SetTargetRange(1,0) + e8:SetValue(1) + c:RegisterEffect(e8) + local e9=e8:Clone() + e9:SetCode(EFFECT_CANNOT_LOSE_DECK) + c:RegisterEffect(e9) + local e10=e8:Clone() + e10:SetCode(EFFECT_CANNOT_LOSE_EFFECT) + c:RegisterEffect(e10) + --atk + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_SINGLE) + e11:SetCode(EFFECT_UPDATE_ATTACK) + e11:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e11:SetRange(LOCATION_MZONE) + e11:SetValue(9999999) + c:RegisterEffect(e11) +end +function c170000170.sucop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_EFFECT) + Duel.SetLP(tp,0) +end +function c170000170.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and e:GetHandler():GetAttack()>999999 +end +function c170000170.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,Duel.GetLP(ep)*100) +end +function c170000170.atcost(e,c,tp) + return Duel.IsPlayerCanDiscardDeckAsCost(tp,10) +end +function c170000170.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.DiscardDeck(tp,10,REASON_COST) +end diff --git a/script/c170000171.lua b/script/c170000171.lua new file mode 100644 index 00000000..8ea3d977 --- /dev/null +++ b/script/c170000171.lua @@ -0,0 +1,63 @@ +--Orichalcos Gigas +function c170000171.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CHAIN_UNIQUE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCost(c170000171.cost) + e1:SetTarget(c170000171.target) + e1:SetOperation(c170000171.operation) + e1:SetLabel(0) + c:RegisterEffect(e1) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c170000171.val) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) +end +function c170000171.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH+EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetCode(EFFECT_SKIP_DP) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_DRAW then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c170000171.skipcon) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN) + end + Duel.RegisterEffect(e1,tp) +end +function c170000171.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end +function c170000171.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c170000171.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + e:SetLabel(e:GetLabel()+1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c170000171.val(e,c) + return e:GetLabelObject():GetLabel()*500 +end diff --git a/script/c170000172.lua b/script/c170000172.lua new file mode 100644 index 00000000..a5e22863 --- /dev/null +++ b/script/c170000172.lua @@ -0,0 +1,26 @@ +--Orichalcos Malevolence +function c170000172.initial_effect(c) + --pos change + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c170000172.target) + e1:SetOperation(c170000172.operation) + c:RegisterEffect(e1) +end +function c170000172.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDefensePos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DEFENSE) + local g=Duel.SelectTarget(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c170000172.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsDefensePos() then + Duel.ChangePosition(tc,POS_FACEUP_ATTACK) + end +end diff --git a/script/c170000173.lua b/script/c170000173.lua new file mode 100644 index 00000000..751ae9c0 --- /dev/null +++ b/script/c170000173.lua @@ -0,0 +1,47 @@ +--Orichalcos Mirror +function c170000173.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c170000173.target) + e1:SetOperation(c170000173.activate) + c:RegisterEffect(e1) +end +c170000173.fit_monster={170000174} +function c170000173.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=170000174 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) then return false end + if m:IsContains(c) then + m:RemoveCard(c) + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + m:AddCard(c) + else + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + end + return result +end +function c170000173.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c170000173.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c170000173.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c170000173.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c170000174.lua b/script/c170000174.lua new file mode 100644 index 00000000..1a1176b2 --- /dev/null +++ b/script/c170000174.lua @@ -0,0 +1,102 @@ +--Mirror Knight Calling +function c170000174.initial_effect(c) + c:EnableReviveLimit() + --Special Summon Tokens + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c170000174.spcon) + e1:SetTarget(c170000174.sptg) + e1:SetOperation(c170000174.spop) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(63253763,0)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c170000174.cttg) + e2:SetOperation(c170000174.ctop) + c:RegisterEffect(e2) + --Activate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e3:SetCondition(c170000174.con) + e3:SetOperation(c170000174.op) + e3:SetRange(LOCATION_MZONE) + c:RegisterEffect(e3) +end +function c170000174.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_RITUAL)==SUMMON_TYPE_RITUAL +end +function c170000174.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,4,tp,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,4,tp,0) +end +function c170000174.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,170000175,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_DARK) then return end + for i=1,4 do + local token=Duel.CreateToken(tp,170000175) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + token:AddCounter(0x1106,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetTarget(c170000174.reptg) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + end + Duel.SpecialSummonComplete() +end +function c170000174.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsReason(REASON_REPLACE) and e:GetHandler():GetCounter(0x1106)>0 end + e:GetHandler():RemoveCounter(tp,0x1106,1,REASON_EFFECT) + return true +end +function c170000174.filter(c,ct) + return c:GetCounter(0x1106)==ct and c:IsFaceup() and c:IsCode(170000175) +end +function c170000174.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c170000174.filter,tp,LOCATION_MZONE,0,1,nil,0) end +end +function c170000174.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c170000174.filter,tp,LOCATION_MZONE,0,nil,0) + local tc=g:GetFirst() + while tc do + tc:AddCounter(0x1106,1) + tc=g:GetNext() + end +end +function c170000174.con(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + local g=Group.FromCards(a,d) + return g:IsExists(c170000174.filter,1,nil,1) +end +function c170000174.op(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return end + local g=Group.FromCards(a,d) + g=g:Filter(c170000174.filter,nil,1) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + if tc==a then + e1:SetValue(d:GetAttack()) + else + e1:SetValue(a:GetAttack()) + end + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c170000193.lua b/script/c170000193.lua new file mode 100644 index 00000000..5da3827d --- /dev/null +++ b/script/c170000193.lua @@ -0,0 +1,56 @@ +--Red-Eyes Black Dragon Sword +function c170000193.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,74677422,46232525,1,true,true) + --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(c170000193.target) + e1:SetOperation(c170000193.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1000) + 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) + --Atk Boost + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetValue(c170000193.value) + c:RegisterEffect(e4) +end +function c170000193.hermos_filter(c) + return c:IsCode(74677422) +end +function c170000193.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 c170000193.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsLocation(LOCATION_SZONE) and tc:IsLocation(LOCATION_MZONE) then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c170000193.value(e,c) + return Duel.GetMatchingGroupCount(c170000193.atkfilter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*500 +end +function c170000193.atkfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsFaceup() +end diff --git a/script/c170000194.lua b/script/c170000194.lua new file mode 100644 index 00000000..46508b9c --- /dev/null +++ b/script/c170000194.lua @@ -0,0 +1,112 @@ +--Goddess Bow +function c170000194.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,25652259,46232525,1,true,true) + --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(c170000194.target) + e1:SetOperation(c170000194.operation) + c:RegisterEffect(e1) + --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) + --Activates a monster effect they control + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_QUICK_F) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_CHAINING) + e4:SetCondition(c170000194.con) + e4:SetOperation(c170000194.op) + c:RegisterEffect(e4) + --double original atk + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ADJUST) + e5:SetRange(LOCATION_SZONE) + e5:SetOperation(c170000194.atkop) + c:RegisterEffect(e5) + --check for doubling + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(511000694) + c:RegisterEffect(e6) +end +function c170000194.hermos_filter(c) + return c:IsCode(25652259) +end +function c170000194.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 c170000194.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsLocation(LOCATION_SZONE) and tc:IsLocation(LOCATION_MZONE) then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c170000194.indes(e,c) + return c:GetAttack()==e:GetHandler():GetEquipTarget():GetAttack() +end +function c170000194.con(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ph=Duel.GetCurrentPhase() + return not e:GetHandler():GetEquipTarget():IsStatus(STATUS_BATTLE_DESTROYED) and ep~=tp + and ph>PHASE_MAIN1 and ph0 then + local sum=g:GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c170000197.lua b/script/c170000197.lua new file mode 100644 index 00000000..b85ea105 --- /dev/null +++ b/script/c170000197.lua @@ -0,0 +1,68 @@ +--Rocket Hermos Cannon +function c170000197.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,30860696,46232525,1,true,true) + --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(c170000197.target) + e1:SetOperation(c170000197.operation) + c:RegisterEffect(e1) + --Hermos Cannon Blast! + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCost(c170000197.cost) + e2:SetTarget(c170000197.tg) + e2:SetOperation(c170000197.op) + 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 c170000197.hermos_filter(c) + return c:IsCode(30860696) +end +function c170000197.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 c170000197.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsLocation(LOCATION_SZONE) and tc:IsLocation(LOCATION_MZONE) then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c170000197.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c170000197.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c170000197.op(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local sum=sg:GetSum(Card.GetAttack) + Duel.Destroy(sg,REASON_EFFECT) + Duel.Damage(1-tp,sum,REASON_EFFECT) +end diff --git a/script/c170000201.lua b/script/c170000201.lua new file mode 100644 index 00000000..fe58e135 --- /dev/null +++ b/script/c170000201.lua @@ -0,0 +1,84 @@ +--Legend of Heart +function c170000201.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c170000201.cost) + e1:SetTarget(c170000201.target) + e1:SetOperation(c170000201.operation) + c:RegisterEffect(e1) +end +function c170000201.costfilter(c,code) + return c:IsCode(code) and c:IsAbleToRemoveAsCost() +end +function c170000201.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1000) and Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_WARRIOR) + and Duel.IsExistingMatchingCard(c170000201.costfilter,tp,0x1f,0,1,nil,1784686) + and Duel.IsExistingMatchingCard(c170000201.costfilter,tp,0x1f,0,1,nil,46232525) + and Duel.IsExistingMatchingCard(c170000201.costfilter,tp,0x1f,0,1,nil,11082056) end + Duel.PayLPCost(tp,1000) + local rg=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,RACE_WARRIOR) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOREMOVE) + local g1=Duel.SelectMatchingCard(tp,c170000201.costfilter,tp,LOCATION_GRAVE+LOCATION_HAND+LOCATION_DECK+LOCATION_ONFIELD,0,1,1,nil,1784686) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c170000201.costfilter,tp,LOCATION_GRAVE+LOCATION_HAND+LOCATION_DECK+LOCATION_ONFIELD,0,1,1,nil,46232525) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g3=Duel.SelectMatchingCard(tp,c170000201.costfilter,tp,LOCATION_GRAVE+LOCATION_HAND+LOCATION_DECK+LOCATION_ONFIELD,0,1,1,nil,11082056) + g1:Merge(g2) + g1:Merge(g3) + Duel.Remove(g1,POS_FACEUP,REASON_COST) + Duel.Release(rg,REASON_COST) +end +function c170000201.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c170000201.filter(c) + return c:IsCode(48179391) or c:IsCode(110000100) or c:IsCode(110000101) +end +function c170000201.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c170000201.spfilter,tp,0x33,0,1,nil,e,tp,80019195) + and Duel.IsExistingMatchingCard(c170000201.spfilter,tp,0x33,0,1,nil,e,tp,85800949) + and Duel.IsExistingMatchingCard(c170000201.spfilter,tp,0x33,0,1,nil,e,tp,84565800) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,3,0,0) +end +function c170000201.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=2 then return end + local g1=Duel.GetMatchingGroup(c170000201.spfilter,tp,0x33,0,nil,e,tp,80019195) + local g2=Duel.GetMatchingGroup(c170000201.spfilter,tp,0x33,0,nil,e,tp,85800949) + local g3=Duel.GetMatchingGroup(c170000201.spfilter,tp,0x33,0,nil,e,tp,84565800) + if g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg3=g3:Select(tp,1,1,nil) + sg1:Merge(sg2) + sg1:Merge(sg3) + Duel.SpecialSummon(sg1,0,tp,tp,true,true,POS_FACEUP) + end + Duel.BreakEffect() + local g=Duel.GetMatchingGroup(c170000201.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.BreakEffect() + Duel.Destroy(g,REASON_EFFECT) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c170000202.lua b/script/c170000202.lua new file mode 100644 index 00000000..68aea82d --- /dev/null +++ b/script/c170000202.lua @@ -0,0 +1,35 @@ +--Legendary Knight Timaeus +function c170000202.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --Timaeus the Knight of Destiny + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c170000202.condition) + e2:SetTarget(c170000202.target) + e2:SetOperation(c170000202.operation) + c:RegisterEffect(e2) +end +function c170000202.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c170000202.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsReleasableByEffect,tp,LOCATION_MZONE,0,1,nil) end +end +function c170000202.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsReleasableByEffect,tp,LOCATION_MZONE,0,1,10,nil) + if g:GetCount()>0 then + local sum=g:GetSum(Card.GetAttack) + Duel.Release(g,REASON_EFFECT) + Duel.RaiseEvent(e:GetHandler(),170000202,e,REASON_EFFECT,tp,tp,sum) + end +end diff --git a/script/c170000203.lua b/script/c170000203.lua new file mode 100644 index 00000000..c8ee637c --- /dev/null +++ b/script/c170000203.lua @@ -0,0 +1,51 @@ +--Legendary Knight Critias +function c170000203.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --Absorb Traps + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c170000203.con) + e2:SetTarget(c170000203.tg) + e2:SetOperation(c170000203.op) + c:RegisterEffect(e2) +end +function c170000203.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingTarget(c170000203.filter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil) + and e:GetLabel()~=1 and e:GetHandler()==Duel.GetAttacker() and e:GetHandler():GetBattleTarget()~=nil + or Duel.IsExistingTarget(c170000203.filter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil) + and e:GetLabel()~=1 and e:GetHandler()==Duel.GetAttackTarget() and e:GetHandler():GetBattleTarget()~=nil +end +function c170000203.filter1(c,e,tp,eg,ep,ev,re,r,rp) + return c:CheckActivateEffect(false,true,false)~=nil and c:GetType()==TYPE_TRAP and c:IsAbleToRemove() +end +function c170000203.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c170000203.filter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil) end + local tc=Duel.SelectMatchingCard(tp,c170000203.filter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil) + e:SetLabel(1) + local te,eg,ep,ev,re,r,rp=tc:GetFirst():CheckActivateEffect(false,true,true) + e:SetLabelObject(tc:GetFirst()) + local tc=e:GetLabelObject() + local te,eg,ep,ev,re,r,rp=tc:CheckActivateEffect(false,true,true) + local tg=te:GetTarget() + e:SetLabelObject(te) + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) +end +function c170000203.op(e,tp,eg,ep,ev,re,r,rp) + local te=e:GetLabelObject() + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + e:SetLabel(0) +end \ No newline at end of file diff --git a/script/c170000204.lua b/script/c170000204.lua new file mode 100644 index 00000000..a8df05e4 --- /dev/null +++ b/script/c170000204.lua @@ -0,0 +1,124 @@ +--伝説の騎士 ヘルモス +function c170000204.initial_effect(c) + c:EnableReviveLimit() + --change battle target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000047,1)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c170000204.cbcon) + e1:SetOperation(c170000204.cbop) + c:RegisterEffect(e1) + --gain effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(10032958,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c170000204.effcost) + e2:SetTarget(c170000204.efftg) + e2:SetOperation(c170000204.effop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(89770167,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(TIMING_DAMAGE_STEP) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c170000204.atcon) + e3:SetCost(c170000204.atcost) + e3:SetTarget(c170000204.attg) + e3:SetOperation(c170000204.atop) + c:RegisterEffect(e3) +end +function c170000204.cbcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return c~=bt and bt:GetControler()==c:GetControler() +end +function c170000204.cbop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeAttackTarget(e:GetHandler()) +end +function c170000204.cfilter(c) + return c:IsType(TYPE_EFFECT) and c:IsAbleToRemoveAsCost() +end +function c170000204.effcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c170000204.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c170000204.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(g:GetFirst():GetOriginalCode()) +end +function c170000204.efftg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetParam(e:GetLabel()) + e:SetLabel(0) +end +function c170000204.effop(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if ac==0 then return end + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + c:CopyEffect(ac,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end +end +function c170000204.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c170000204.costfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c170000204.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c170000204.costfilter,tp,LOCATION_DECK,0,3,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c170000204.costfilter,tp,LOCATION_DECK,0,3,3,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + g:KeepAlive() + e:SetLabelObject(g) +end +function c170000204.attg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(e:GetLabelObject()) + e:SetLabelObject(nil) +end +function c170000204.chkfilter(c,e) + return c:IsRelateToEffect(e) and c:IsLocation(LOCATION_REMOVED) +end +function c170000204.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c170000204.chkfilter,nil,e) + if c:IsFaceup() and c:IsRelateToEffect(e) and tg:GetCount()>0then + tg:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(c170000204.val) + e1:SetLabelObject(tg) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local tc=tg:GetFirst() + while tc do + tc:CreateEffectRelation(e1) + tc=tg:GetNext() + end + end +end +function c170000204.val(e,c) + local d=Duel.GetAttackTarget() + if not d or d~=e:GetHandler() then return 0 end + local g=e:GetLabelObject():Filter(Card.IsRelateToEffect,nil,e) + local tc=g:GetFirst() + local atk=0 + while tc do + if tc:GetAttack()>0 then + atk=atk+tc:GetAttack() + end + tc=g:GetNext() + end + return atk +end diff --git a/script/c170000207.lua b/script/c170000207.lua new file mode 100644 index 00000000..41090331 --- /dev/null +++ b/script/c170000207.lua @@ -0,0 +1,57 @@ +--Backup Gardna +function c170000207.initial_effect(c) + --Redirect Equip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c170000207.eqtg) + e1:SetOperation(c170000207.eqop) + c:RegisterEffect(e1) + --Negate attacks + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetCost(c170000207.indcost) + e2:SetOperation(c170000207.indop) + c:RegisterEffect(e2) +end +function c170000207.filter1(c,tp) + return c:IsFaceup() and c:GetEquipTarget() + and Duel.IsExistingTarget(c170000207.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c:GetEquipTarget(),c) +end +function c170000207.filter2(c,eqc) + return c:IsFaceup() and eqc:CheckEquipTarget(c) +end +function c170000207.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c170000207.filter1,tp,LOCATION_SZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c170000207.filter1,tp,LOCATION_SZONE,0,1,1,nil,tp) + local eqc=g1:GetFirst() + e:SetLabelObject(eqc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g2=Duel.SelectTarget(tp,c170000207.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,eqc:GetEquipTarget(),eqc) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g1,1,0,0) +end +function c170000207.eqop(e,tp,eg,ep,ev,re,r,rp) + local eqc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if tc==eqc then tc=g:GetNext() end + if not eqc:IsRelateToEffect(e) then return end + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(eqc,REASON_EFFECT) + return + end + Duel.Equip(tp,eqc,tc) +end +function c170000207.indcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c170000207.indop(e,tp,eg,ep,ev,re,r,rp) +Duel.NegateAttack() +end diff --git a/script/c170000210.lua b/script/c170000210.lua new file mode 100644 index 00000000..1af7f68b --- /dev/null +++ b/script/c170000210.lua @@ -0,0 +1,49 @@ +--Timaeus the Knight of Destiny +function c170000210.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(37115575,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CHAIN_UNIQUE) + e1:SetCode(170000202) + e1:SetRange(LOCATION_EXTRA) + e1:SetTarget(c170000210.sptg) + e1:SetOperation(c170000210.spop) + c:RegisterEffect(e1) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(aux.FALSE) + c:RegisterEffect(e2) + --Indestructible by Battle + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c170000210.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c170000210.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsLocation(LOCATION_EXTRA) and Duel.SpecialSummon(c,0,tp,tp,true,true,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(ev) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(ev) + c:RegisterEffect(e2) + c:CompleteProcedure() + end +end diff --git a/script/c17016362.lua b/script/c17016362.lua index 49abbbcb..399dc333 100644 --- a/script/c17016362.lua +++ b/script/c17016362.lua @@ -17,7 +17,7 @@ function c17016362.initial_effect(c) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetHintTiming(0,TIMING_MAIN_END) e2:SetCondition(c17016362.mtcon) diff --git a/script/c17021204.lua b/script/c17021204.lua index c06b4593..71d77ebb 100644 --- a/script/c17021204.lua +++ b/script/c17021204.lua @@ -1,33 +1,33 @@ ---マザー・スパイダー -function c17021204.initial_effect(c) - --spsummon proc - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c17021204.spcon) - e1:SetOperation(c17021204.spop) - c:RegisterEffect(e1) -end -function c17021204.spfilter(c) - return c:IsPosition(POS_FACEUP_DEFENSE) and c:IsAbleToGraveAsCost() -end -function c17021204.cfilter(c) - return c:GetRace()~=RACE_INSECT -end -function c17021204.check(tp) - local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) - return g:GetCount()~=0 and not g:IsExists(c17021204.cfilter,1,nil) -end -function c17021204.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c17021204.spfilter,c:GetControler(),0,LOCATION_MZONE,2,nil) - and c17021204.check(c:GetControler()) -end -function c17021204.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c17021204.spfilter,tp,0,LOCATION_MZONE,2,2,nil) - Duel.SendtoGrave(g,REASON_COST) -end +--マザー・スパイダー +function c17021204.initial_effect(c) + --spsummon proc + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c17021204.spcon) + e1:SetOperation(c17021204.spop) + c:RegisterEffect(e1) +end +function c17021204.spfilter(c) + return c:IsPosition(POS_FACEUP_DEFENSE) and c:IsAbleToGraveAsCost() +end +function c17021204.cfilter(c) + return c:GetRace()~=RACE_INSECT +end +function c17021204.check(tp) + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + return g:GetCount()~=0 and not g:IsExists(c17021204.cfilter,1,nil) +end +function c17021204.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c17021204.spfilter,c:GetControler(),0,LOCATION_MZONE,2,nil) + and c17021204.check(c:GetControler()) +end +function c17021204.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c17021204.spfilter,tp,0,LOCATION_MZONE,2,2,nil) + Duel.SendtoGrave(g,REASON_COST) +end diff --git a/script/c17032740.lua b/script/c17032740.lua index d58094d7..8b20889e 100644 --- a/script/c17032740.lua +++ b/script/c17032740.lua @@ -48,6 +48,7 @@ function c17032740.initial_effect(c) e5:SetOperation(c17032740.coinop) c:RegisterEffect(e5) end +c17032740.material_setcode=0x8 function c17032740.splimit(e,se,sp,st) return not e:GetHandler():IsLocation(LOCATION_EXTRA) end @@ -58,19 +59,19 @@ function c17032740.spfilter1(c,mg,ft) local mg2=mg:Clone() mg2:RemoveCard(c) if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end - return ft>=-1 and c:IsFusionCode(89943723) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) + return ft>=-1 and c:IsFusionCode(89943723) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() and mg2:IsExists(c17032740.spfilter2,1,nil,mg2,ft) end function c17032740.spfilter2(c,mg,ft) local mg2=mg:Clone() mg2:RemoveCard(c) if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end - return ft>=0 and c:IsFusionCode(43237273) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) + return ft>=0 and c:IsFusionCode(43237273) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() and mg2:IsExists(c17032740.spfilter3,1,nil,ft) end function c17032740.spfilter3(c,ft) if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end - return ft>=1 and c:IsFusionCode(17732278) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) + return ft>=1 and c:IsFusionCode(17732278) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() end function c17032740.spcon(e,c) if c==nil then return true end diff --git a/script/c17078030.lua b/script/c17078030.lua index 2b0d7992..313013cc 100644 --- a/script/c17078030.lua +++ b/script/c17078030.lua @@ -1,37 +1,37 @@ ---光の護封壁 -function c17078030.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c17078030.cost) - c:RegisterEffect(e1) - --cannot attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetTarget(c17078030.atktarget) - c:RegisterEffect(e2) - e1:SetLabelObject(e2) -end -function c17078030.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,1000) end - local lp=Duel.GetLP(tp) - local t={} - local f=math.floor((lp)/1000) - local l=1 - while l<=f and l<=20 do - t[l]=l*1000 - l=l+1 - end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(17078030,0)) - local announce=Duel.AnnounceNumber(tp,table.unpack(t)) - Duel.PayLPCost(tp,announce) - e:GetLabelObject():SetLabel(announce) - e:GetHandler():SetHint(CHINT_NUMBER,announce) -end -function c17078030.atktarget(e,c) - return c:GetAttack()<=e:GetLabel() -end +--光の護封壁 +function c17078030.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c17078030.cost) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetTarget(c17078030.atktarget) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c17078030.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1000) end + local lp=Duel.GetLP(tp) + local t={} + local f=math.floor((lp)/1000) + local l=1 + while l<=f and l<=20 do + t[l]=l*1000 + l=l+1 + end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(17078030,0)) + local announce=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.PayLPCost(tp,announce) + e:GetLabelObject():SetLabel(announce) + e:GetHandler():SetHint(CHINT_NUMBER,announce) +end +function c17078030.atktarget(e,c) + return c:GetAttack()<=e:GetLabel() +end diff --git a/script/c17086528.lua b/script/c17086528.lua index 41279809..afb8f8c4 100644 --- a/script/c17086528.lua +++ b/script/c17086528.lua @@ -1,100 +1,100 @@ ---相生の魔術師 -function c17086528.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --rank - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c17086528.rktg) - e2:SetOperation(c17086528.rkop) - c:RegisterEffect(e2) - --scale - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CHANGE_LSCALE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_PZONE) - e3:SetCondition(c17086528.slcon) - e3:SetValue(4) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CHANGE_RSCALE) - c:RegisterEffect(e4) - --damage 0 - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_NO_BATTLE_DAMAGE) - c:RegisterEffect(e5) - --atk - local e6=Effect.CreateEffect(c) - e6:SetCategory(CATEGORY_ATKCHANGE) - e6:SetType(EFFECT_TYPE_IGNITION) - e6:SetRange(LOCATION_MZONE) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET) - e6:SetCountLimit(1) - e6:SetTarget(c17086528.atktg) - e6:SetOperation(c17086528.atkop) - c:RegisterEffect(e6) -end -function c17086528.rkfilter(c,tp) - return c:IsFaceup() and c:IsType(TYPE_XYZ) - and Duel.IsExistingTarget(c17086528.lvfilter,tp,LOCATION_MZONE,0,1,c,c:GetRank()) -end -function c17086528.lvfilter(c,rk) - return c:IsFaceup() and c:IsLevelAbove(5) and c:GetLevel()~=rk -end -function c17086528.rktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c17086528.rkfilter,tp,LOCATION_MZONE,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c17086528.rkfilter,tp,LOCATION_MZONE,0,1,1,nil,tp) - e:SetLabelObject(g:GetFirst()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c17086528.lvfilter,tp,LOCATION_MZONE,0,1,1,g:GetFirst(),g:GetFirst():GetRank()) -end -function c17086528.rkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=e:GetLabelObject() - local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local lc=tg:GetFirst() - if lc==tc then lc=tg:GetNext() end - if tc:IsRelateToEffect(e) and tc:IsFaceup() and lc:IsRelateToEffect(e) and lc:IsFaceup() and lc:IsLevelAbove(5) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_RANK) - e1:SetValue(lc:GetLevel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c17086528.slcon(e) - local tp=e:GetHandlerPlayer() - return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)>Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) -end -function c17086528.atkfilter(c,atk) - return c:IsFaceup() and c:GetAttack()~=atk -end -function c17086528.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local c=e:GetHandler() - local atk=c:GetAttack() - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc~=c and c17086528.atkfilter(chkc,atk) end - if chk==0 then return Duel.IsExistingTarget(c17086528.atkfilter,tp,LOCATION_MZONE,0,1,c,atk) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c17086528.atkfilter,tp,LOCATION_MZONE,0,1,1,c,atk) -end -function c17086528.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - local atk=tc:GetAttack() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--相生の魔術師 +function c17086528.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --rank + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c17086528.rktg) + e2:SetOperation(c17086528.rkop) + c:RegisterEffect(e2) + --scale + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CHANGE_LSCALE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_PZONE) + e3:SetCondition(c17086528.slcon) + e3:SetValue(4) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e4) + --damage 0 + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_NO_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --atk + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_ATKCHANGE) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetRange(LOCATION_MZONE) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetCountLimit(1) + e6:SetTarget(c17086528.atktg) + e6:SetOperation(c17086528.atkop) + c:RegisterEffect(e6) +end +function c17086528.rkfilter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) + and Duel.IsExistingTarget(c17086528.lvfilter,tp,LOCATION_MZONE,0,1,c,c:GetRank()) +end +function c17086528.lvfilter(c,rk) + return c:IsFaceup() and c:IsLevelAbove(5) and c:GetLevel()~=rk +end +function c17086528.rktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c17086528.rkfilter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c17086528.rkfilter,tp,LOCATION_MZONE,0,1,1,nil,tp) + e:SetLabelObject(g:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c17086528.lvfilter,tp,LOCATION_MZONE,0,1,1,g:GetFirst(),g:GetFirst():GetRank()) +end +function c17086528.rkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=e:GetLabelObject() + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local lc=tg:GetFirst() + if lc==tc then lc=tg:GetNext() end + if tc:IsRelateToEffect(e) and tc:IsFaceup() and lc:IsRelateToEffect(e) and lc:IsFaceup() and lc:IsLevelAbove(5) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RANK) + e1:SetValue(lc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c17086528.slcon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)>Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) +end +function c17086528.atkfilter(c,atk) + return c:IsFaceup() and c:GetAttack()~=atk +end +function c17086528.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + local atk=c:GetAttack() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc~=c and c17086528.atkfilter(chkc,atk) end + if chk==0 then return Duel.IsExistingTarget(c17086528.atkfilter,tp,LOCATION_MZONE,0,1,c,atk) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c17086528.atkfilter,tp,LOCATION_MZONE,0,1,1,c,atk) +end +function c17086528.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + local atk=tc:GetAttack() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c171000111.lua b/script/c171000111.lua new file mode 100644 index 00000000..6ce8da32 --- /dev/null +++ b/script/c171000111.lua @@ -0,0 +1,42 @@ +--セブンストア +function c171000111.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c171000111.cost) + e1:SetTarget(c171000111.target) + e1:SetOperation(c171000111.activate) + c:RegisterEffect(e1) +end +function c171000111.cfilter(c,tp) + local ct=c:GetOverlayCount() + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsAbleToGraveAsCost() + and Duel.IsPlayerCanDraw(tp,ct+1) +end +function c171000111.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c171000111.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c171000111.cfilter,1,nil,tp) end + local g=Duel.SelectReleaseGroup(tp,c171000111.cfilter,1,1,nil,tp) + local ct=g:GetFirst():GetOverlayCount() + Duel.Release(g,REASON_COST) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c171000111.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,1,REASON_EFFECT) + if d>1 then + Duel.BreakEffect() + Duel.Draw(tp,d-1,REASON_EFFECT) + end +end diff --git a/script/c17194258.lua b/script/c17194258.lua index 0a59539a..516a50e5 100644 --- a/script/c17194258.lua +++ b/script/c17194258.lua @@ -1,61 +1,62 @@ ---融合徴兵 -function c17194258.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,17194258+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c17194258.target) - e1:SetOperation(c17194258.activate) - c:RegisterEffect(e1) -end -function c17194258.filter1(c,tp) - return c.material and Duel.IsExistingMatchingCard(c17194258.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,c) -end -function c17194258.filter2(c,fc) - if c:IsForbidden() or not c:IsAbleToHand() then return false end - return c:IsCode(table.unpack(fc.material)) -end -function c17194258.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c17194258.filter1,tp,LOCATION_EXTRA,0,1,nil,tp) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c17194258.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local cg=Duel.SelectMatchingCard(tp,c17194258.filter1,tp,LOCATION_EXTRA,0,1,1,nil,tp) - if cg:GetCount()==0 then return end - Duel.ConfirmCards(1-tp,cg) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c17194258.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,cg:GetFirst()) - local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then - Duel.ConfirmCards(1-tp,tc) - if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c17194258.sumlimit) - e1:SetLabel(tc:GetCode()) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - Duel.RegisterEffect(e2,tp) - local e3=e1:Clone() - e3:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e3,tp) - local e4=e1:Clone() - e4:SetCode(EFFECT_CANNOT_ACTIVATE) - e4:SetValue(c17194258.aclimit) - Duel.RegisterEffect(e4,tp) - end -end -function c17194258.sumlimit(e,c) - return c:IsCode(e:GetLabel()) -end -function c17194258.aclimit(e,re,tp) - return re:GetHandler():IsCode(e:GetLabel()) and re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) -end +--融合徴兵 +function c17194258.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,17194258+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c17194258.target) + e1:SetOperation(c17194258.activate) + c:RegisterEffect(e1) +end +function c17194258.filter1(c,tp) + return c.material and Duel.IsExistingMatchingCard(c17194258.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,c) +end +function c17194258.filter2(c,fc) + if c:IsForbidden() or not c:IsAbleToHand() then return false end + return c:IsCode(table.unpack(fc.material)) +end +function c17194258.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c17194258.filter1,tp,LOCATION_EXTRA,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c17194258.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local cg=Duel.SelectMatchingCard(tp,c17194258.filter1,tp,LOCATION_EXTRA,0,1,1,nil,tp) + if cg:GetCount()==0 then return end + Duel.ConfirmCards(1-tp,cg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c17194258.filter2),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,cg:GetFirst()) + local tc=g:GetFirst() + if not tc then return end + if Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then + Duel.ConfirmCards(1-tp,tc) + if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c17194258.sumlimit) + e1:SetLabel(tc:GetCode()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e3,tp) + local e4=e1:Clone() + e4:SetCode(EFFECT_CANNOT_ACTIVATE) + e4:SetValue(c17194258.aclimit) + Duel.RegisterEffect(e4,tp) + end +end +function c17194258.sumlimit(e,c) + return c:IsCode(e:GetLabel()) +end +function c17194258.aclimit(e,re,tp) + return re:GetHandler():IsCode(e:GetLabel()) and re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c17236839.lua b/script/c17236839.lua index 9fbce707..64147e48 100644 --- a/script/c17236839.lua +++ b/script/c17236839.lua @@ -2,7 +2,7 @@ function c17236839.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(0,0x1e0) @@ -11,7 +11,7 @@ function c17236839.initial_effect(c) c:RegisterEffect(e1) end function c17236839.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return c:IsOnField() and not c:IsImmuneToEffect(e) end function c17236839.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and (not f or f(c)) @@ -20,7 +20,7 @@ end function c17236839.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) local res=Duel.IsExistingMatchingCard(c17236839.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) @@ -37,7 +37,7 @@ function c17236839.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c17236839.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c17236839.filter1,tp,LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c17236839.filter1,nil,e) local sg1=Duel.GetMatchingGroup(c17236839.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) local mg2=nil local sg2=nil @@ -66,17 +66,27 @@ function c17236839.activate(e,tp,eg,ep,ev,re,r,rp) fop(ce,e,tp,tc,mat2) end tc:CompleteProcedure() + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(17236839,RESET_EVENT+0x1fe0000,0,1,fid) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c17236839.descon) e1:SetOperation(c17236839.desop) - tc:RegisterEffect(e1,true) + Duel.RegisterEffect(e1,tp) end end +function c17236839.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(17236839)~=e:GetLabel() then + e:Reset() + return false + else return true end +end function c17236839.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) end diff --git a/script/c17264592.lua b/script/c17264592.lua index 7846af50..4ecd37a6 100644 --- a/script/c17264592.lua +++ b/script/c17264592.lua @@ -1,59 +1,59 @@ ---U.A.コリバルリバウンダー -function c17264592.initial_effect(c) - --special summon rule - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetCountLimit(1,17264592) - e1:SetCondition(c17264592.sprcon) - e1:SetOperation(c17264592.sprop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,17264593) - e2:SetTarget(c17264592.sptg) - e2:SetOperation(c17264592.spop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCondition(c17264592.spcon) - c:RegisterEffect(e3) -end -function c17264592.thfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(17264592) and c:IsAbleToHandAsCost() -end -function c17264592.sprcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c17264592.thfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c17264592.sprop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectMatchingCard(tp,c17264592.thfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoHand(g,nil,REASON_COST) -end -function c17264592.spfilter(c,e,tp) - return c:IsSetCard(0xb2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsCode(17264592) -end -function c17264592.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c17264592.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c17264592.spop(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,c17264592.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c17264592.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end +--U.A.コリバルリバウンダー +function c17264592.initial_effect(c) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCountLimit(1,17264592) + e1:SetCondition(c17264592.sprcon) + e1:SetOperation(c17264592.sprop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,17264593) + e2:SetTarget(c17264592.sptg) + e2:SetOperation(c17264592.spop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c17264592.spcon) + c:RegisterEffect(e3) +end +function c17264592.thfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(17264592) and c:IsAbleToHandAsCost() +end +function c17264592.sprcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c17264592.thfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c17264592.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c17264592.thfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c17264592.spfilter(c,e,tp) + return c:IsSetCard(0xb2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsCode(17264592) +end +function c17264592.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c17264592.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c17264592.spop(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,aux.NecroValleyFilter(c17264592.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c17264592.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end diff --git a/script/c17266660.lua b/script/c17266660.lua index 995013b6..8455c7ed 100644 --- a/script/c17266660.lua +++ b/script/c17266660.lua @@ -37,8 +37,7 @@ function c17266660.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c17266660.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c17286057.lua b/script/c17286057.lua index 4ca148db..29b5e8e0 100644 --- a/script/c17286057.lua +++ b/script/c17286057.lua @@ -1,85 +1,85 @@ ---ヘリオス・トリス・メギストス -function c17286057.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c17286057.hspcon) - e1:SetOperation(c17286057.hspop) - c:RegisterEffect(e1) - --atk/def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_SET_ATTACK) - e2:SetValue(c17286057.value) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(17286057,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_PHASE+PHASE_END) - e4:SetRange(LOCATION_GRAVE) - e4:SetCountLimit(1) - e4:SetCondition(c17286057.spcon) - e4:SetTarget(c17286057.sptg) - e4:SetOperation(c17286057.spop) - c:RegisterEffect(e4) - --chain attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_EXTRA_ATTACK) - e5:SetValue(1) - e5:SetCondition(c17286057.atcon) - c:RegisterEffect(e5) -end -function c17286057.hspcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.CheckReleaseGroup(c:GetControler(),Card.IsCode,1,nil,80887952) -end -function c17286057.hspop(e,tp,eg,ep,ev,re,r,rp,c) - local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,80887952) - Duel.Release(g,REASON_COST) -end -function c17286057.filter(c) - return c:IsFaceup() and c:IsType(TYPE_MONSTER) -end -function c17286057.value(e,c) - return Duel.GetMatchingGroupCount(c17286057.filter,c:GetControler(),LOCATION_REMOVED,LOCATION_REMOVED,nil)*300 -end -function c17286057.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_BATTLE) and e:GetHandler():GetTurnID()==Duel.GetTurnCount() -end -function c17286057.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c17286057.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then - 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:SetValue(500) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - end - Duel.SpecialSummonComplete() -end -function c17286057.atcon(e) - return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)>0 -end +--ヘリオス・トリス・メギストス +function c17286057.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c17286057.hspcon) + e1:SetOperation(c17286057.hspop) + c:RegisterEffect(e1) + --atk/def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetValue(c17286057.value) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(17286057,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_GRAVE) + e4:SetCountLimit(1) + e4:SetCondition(c17286057.spcon) + e4:SetTarget(c17286057.sptg) + e4:SetOperation(c17286057.spop) + c:RegisterEffect(e4) + --chain attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_EXTRA_ATTACK) + e5:SetValue(1) + e5:SetCondition(c17286057.atcon) + c:RegisterEffect(e5) +end +function c17286057.hspcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),Card.IsCode,1,nil,80887952) +end +function c17286057.hspop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,80887952) + Duel.Release(g,REASON_COST) +end +function c17286057.filter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) +end +function c17286057.value(e,c) + return Duel.GetMatchingGroupCount(c17286057.filter,c:GetControler(),LOCATION_REMOVED,LOCATION_REMOVED,nil)*300 +end +function c17286057.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_BATTLE) and e:GetHandler():GetTurnID()==Duel.GetTurnCount() +end +function c17286057.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c17286057.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then + 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:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end + Duel.SpecialSummonComplete() +end +function c17286057.atcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)>0 +end diff --git a/script/c17313545.lua b/script/c17313545.lua index 6bebf42b..6a678197 100644 --- a/script/c17313545.lua +++ b/script/c17313545.lua @@ -1,31 +1,30 @@ ---ゴーレム -function c17313545.initial_effect(c) - --disable - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_DISABLE) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetTarget(c17313545.distg) - c:RegisterEffect(e1) - --chain attack - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(17313545,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLED) - e2:SetCondition(c17313545.atcon) - e2:SetOperation(c17313545.atop) - c:RegisterEffect(e2) -end -function c17313545.distg(e,c) - return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsType(TYPE_EFFECT) -end -function c17313545.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() - and bc:IsAttribute(ATTRIBUTE_LIGHT) -end -function c17313545.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--ゴーレム +function c17313545.initial_effect(c) + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c17313545.distg) + c:RegisterEffect(e1) + --chain attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(17313545,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c17313545.atcon) + e2:SetOperation(c17313545.atop) + c:RegisterEffect(e2) +end +function c17313545.distg(e,c) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsType(TYPE_EFFECT) +end +function c17313545.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return aux.bdcon(e,tp,eg,ep,ev,re,r,rp) and c:IsChainAttackable() + and c:GetBattleTarget():IsAttribute(ATTRIBUTE_LIGHT) +end +function c17313545.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c17328157.lua b/script/c17328157.lua new file mode 100644 index 00000000..1be54dc8 --- /dev/null +++ b/script/c17328157.lua @@ -0,0 +1,58 @@ +--SRバンブー・ホース +function c17328157.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17328157,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c17328157.sptg) + e1:SetOperation(c17328157.spop) + c:RegisterEffect(e1) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(17328157,1)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,17328157) + e2:SetCondition(aux.exccon) + e2:SetCost(c17328157.tgcost) + e2:SetTarget(c17328157.tgtg) + e2:SetOperation(c17328157.tgop) + c:RegisterEffect(e2) +end +function c17328157.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x2016) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c17328157.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c17328157.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c17328157.spop(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,c17328157.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 c17328157.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c17328157.tgfilter(c) + return c:IsAttribute(ATTRIBUTE_WIND) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c17328157.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c17328157.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c17328157.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c17328157.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c17330916.lua b/script/c17330916.lua index 7561f81e..73dc0222 100644 --- a/script/c17330916.lua +++ b/script/c17330916.lua @@ -1,103 +1,103 @@ ---EMモンキーボード -function c17330916.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c,false) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(1160) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c17330916.reg) - c:RegisterEffect(e1) - --scale - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CHANGE_LSCALE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c17330916.sccon) - e2:SetValue(4) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_CHANGE_RSCALE) - c:RegisterEffect(e3) - --lvdown - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(17330916,0)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_HAND) - e4:SetCountLimit(1) - e4:SetCost(c17330916.lvcost) - e4:SetTarget(c17330916.lvtg) - e4:SetOperation(c17330916.lvop) - c:RegisterEffect(e4) - --to hand - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_PZONE) - e5:SetCountLimit(1,17330916) - e5:SetCondition(c17330916.thcon) - e5:SetTarget(c17330916.thtg) - e5:SetOperation(c17330916.thop) - c:RegisterEffect(e5) -end -function c17330916.sccon(e) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) - return not tc or not tc:IsSetCard(0x9f) -end -function c17330916.reg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:GetHandler():RegisterFlagEffect(17330916,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) -end -function c17330916.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(17330916)~=0 -end -function c17330916.thfilter(c) - return c:IsLevelBelow(4) and c:IsSetCard(0x9f) and c:IsAbleToHand() -end -function c17330916.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c17330916.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c17330916.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c17330916.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c17330916.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDiscardable() end - Duel.SendtoGrave(e:GetHandler(),REASON_DISCARD) -end -function c17330916.filter(c) - return (c:IsSetCard(0x9f) or c:IsSetCard(0x99)) and c:IsType(TYPE_MONSTER) and c:IsLevelAbove(2) -end -function c17330916.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c17330916.filter,tp,LOCATION_HAND,0,1,e:GetHandler()) end -end -function c17330916.afilter(c,code) - return c:IsCode(code) -end -function c17330916.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local g=Duel.SelectMatchingCard(tp,c17330916.filter,tp,LOCATION_HAND,0,1,1,nil) - Duel.ConfirmCards(1-tp,g) - Duel.ShuffleHand(tp) - local hg=Duel.GetMatchingGroup(c17330916.afilter,tp,LOCATION_HAND,0,nil,g:GetFirst():GetCode()) - local tc=hg:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(-1) - e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=hg:GetNext() - end -end +--EMモンキーボード +function c17330916.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(1160) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c17330916.reg) + c:RegisterEffect(e1) + --scale + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_LSCALE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c17330916.sccon) + e2:SetValue(4) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e3) + --lvdown + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(17330916,0)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_HAND) + e4:SetCountLimit(1) + e4:SetCost(c17330916.lvcost) + e4:SetTarget(c17330916.lvtg) + e4:SetOperation(c17330916.lvop) + c:RegisterEffect(e4) + --to hand + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_PZONE) + e5:SetCountLimit(1,17330916) + e5:SetCondition(c17330916.thcon) + e5:SetTarget(c17330916.thtg) + e5:SetOperation(c17330916.thop) + c:RegisterEffect(e5) +end +function c17330916.sccon(e) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) + return not tc or not tc:IsSetCard(0x9f) +end +function c17330916.reg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():RegisterFlagEffect(17330916,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) +end +function c17330916.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(17330916)~=0 +end +function c17330916.thfilter(c) + return c:IsLevelBelow(4) and c:IsSetCard(0x9f) and c:IsAbleToHand() +end +function c17330916.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c17330916.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c17330916.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c17330916.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c17330916.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_DISCARD) +end +function c17330916.filter(c) + return (c:IsSetCard(0x9f) or c:IsSetCard(0x99)) and c:IsType(TYPE_MONSTER) and c:IsLevelAbove(2) +end +function c17330916.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c17330916.filter,tp,LOCATION_HAND,0,1,e:GetHandler()) end +end +function c17330916.afilter(c,code) + return c:IsCode(code) +end +function c17330916.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c17330916.filter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + local hg=Duel.GetMatchingGroup(c17330916.afilter,tp,LOCATION_HAND,0,nil,g:GetFirst():GetCode()) + local tc=hg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=hg:GetNext() + end +end diff --git a/script/c17377751.lua b/script/c17377751.lua index ac5e6d97..b72c537a 100644 --- a/script/c17377751.lua +++ b/script/c17377751.lua @@ -1,54 +1,54 @@ ---BF-煌星のグラム -function c17377751.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetRange(LOCATION_EXTRA) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.synlimit) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(17377751,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c17377751.spcon) - e2:SetTarget(c17377751.sptg) - e2:SetOperation(c17377751.spop) - c:RegisterEffect(e2) -end -function c17377751.spcon(e,tp,eg,ep,ev,re,r,rp,chk) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c17377751.filter(c,e,tp) - return not c:IsType(TYPE_TUNER) and c:IsLevelBelow(4) and c:IsSetCard(0x33) and c:IsCanBeSpecialSummoned(e,0,tp,false,true) -end -function c17377751.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c17377751.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c17377751.spop(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,c17377751.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,true,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - Duel.SpecialSummonComplete() - end -end +--BF-煌星のグラム +function c17377751.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.synlimit) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(17377751,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c17377751.spcon) + e2:SetTarget(c17377751.sptg) + e2:SetOperation(c17377751.spop) + c:RegisterEffect(e2) +end +function c17377751.spcon(e,tp,eg,ep,ev,re,r,rp,chk) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c17377751.filter(c,e,tp) + return not c:IsType(TYPE_TUNER) and c:IsLevelBelow(4) and c:IsSetCard(0x33) and c:IsCanBeSpecialSummoned(e,0,tp,false,true) +end +function c17377751.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c17377751.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c17377751.spop(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,c17377751.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,true,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c17390179.lua b/script/c17390179.lua index 8086e97c..59d2557b 100644 --- a/script/c17390179.lua +++ b/script/c17390179.lua @@ -1,5 +1,5 @@ ---閃光の騎士 -function c17390179.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) -end +--閃光の騎士 +function c17390179.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) +end diff --git a/script/c17393207.lua b/script/c17393207.lua index ad80ebfa..cd9a8512 100644 --- a/script/c17393207.lua +++ b/script/c17393207.lua @@ -1,32 +1,32 @@ ---墓守の司令官 -function c17393207.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(17393207,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c17393207.cost) - e1:SetTarget(c17393207.target) - e1:SetOperation(c17393207.operation) - c:RegisterEffect(e1) -end -function c17393207.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c17393207.filter(c) - return c:IsCode(47355498) and c:IsAbleToHand() -end -function c17393207.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c17393207.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c17393207.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tg=Duel.GetFirstMatchingCard(c17393207.filter,tp,LOCATION_DECK,0,nil) - if tg then - Duel.SendtoHand(tg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tg) - end -end +--墓守の司令官 +function c17393207.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17393207,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c17393207.cost) + e1:SetTarget(c17393207.target) + e1:SetOperation(c17393207.operation) + c:RegisterEffect(e1) +end +function c17393207.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c17393207.filter(c) + return c:IsCode(47355498) and c:IsAbleToHand() +end +function c17393207.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c17393207.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c17393207.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetFirstMatchingCard(c17393207.filter,tp,LOCATION_DECK,0,nil) + if tg then + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end +end diff --git a/script/c17412721.lua b/script/c17412721.lua index 3f4f2384..8a2ba36e 100644 --- a/script/c17412721.lua +++ b/script/c17412721.lua @@ -1,68 +1,68 @@ ---旧神ノーデン -function c17412721.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,c17412721.ffilter,c17412721.ffilter,true) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(17412721,1)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetTarget(c17412721.sptg) - e1:SetOperation(c17412721.spop) - c:RegisterEffect(e1) - --leave field - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetOperation(c17412721.leave) - c:RegisterEffect(e2) - e1:SetLabelObject(e2) -end -c17412721.miracle_synchro_fusion=true -function c17412721.ffilter(c) - return c:IsType(TYPE_XYZ+TYPE_SYNCHRO) -end -function c17412721.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c17412721.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c17412721.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c17412721.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c17412721.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c17412721.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - Duel.SpecialSummonComplete() - if c:IsRelateToEffect(e) then - c:SetCardTarget(tc) - e:GetLabelObject():SetLabelObject(tc) - c:CreateRelation(tc,RESET_EVENT+0x5020000) - tc:CreateRelation(c,RESET_EVENT+0x5fe0000) - end - end -end -function c17412721.leave(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=e:GetLabelObject() - if tc and c:IsRelateToCard(tc) and tc:IsRelateToCard(c) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end +--旧神ノーデン +function c17412721.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c17412721.ffilter,c17412721.ffilter,true) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17412721,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c17412721.sptg) + e1:SetOperation(c17412721.spop) + c:RegisterEffect(e1) + --leave field + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c17412721.leave) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +c17412721.miracle_synchro_fusion=true +function c17412721.ffilter(c) + return c:IsFusionType(TYPE_XYZ+TYPE_SYNCHRO) +end +function c17412721.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c17412721.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c17412721.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c17412721.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c17412721.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c17412721.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + if c:IsRelateToEffect(e) then + c:SetCardTarget(tc) + e:GetLabelObject():SetLabelObject(tc) + c:CreateRelation(tc,RESET_EVENT+0x5020000) + tc:CreateRelation(c,RESET_EVENT+0x5fe0000) + end + end +end +function c17412721.leave(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + if tc and c:IsRelateToCard(tc) and tc:IsRelateToCard(c) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c17415895.lua b/script/c17415895.lua index f15c1d94..a72dec72 100644 --- a/script/c17415895.lua +++ b/script/c17415895.lua @@ -1,33 +1,33 @@ ---ヴォルカニック・エッジ -function c17415895.initial_effect(c) - --damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(17415895,0)) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c17415895.cost) - e1:SetTarget(c17415895.target) - e1:SetOperation(c17415895.operation) - c:RegisterEffect(e1) -end -function c17415895.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c17415895.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) -end -function c17415895.operation(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--ヴォルカニック・エッジ +function c17415895.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17415895,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c17415895.cost) + e1:SetTarget(c17415895.target) + e1:SetOperation(c17415895.operation) + c:RegisterEffect(e1) +end +function c17415895.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c17415895.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c17415895.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c17502671.lua b/script/c17502671.lua index 0a2f4547..d62ba0b4 100644 --- a/script/c17502671.lua +++ b/script/c17502671.lua @@ -1,58 +1,58 @@ ---インフェルニティ・ジェネラル -function c17502671.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(17502671,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCondition(c17502671.spcon) - e1:SetCost(c17502671.spcost) - e1:SetTarget(c17502671.sptg) - e1:SetOperation(c17502671.spop) - c:RegisterEffect(e1) -end -function c17502671.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 -end -function c17502671.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c17502671.filter(c,e,tp) - return c:IsSetCard(0xb) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c17502671.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c17502671.filter(chkc,e,tp) end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c17502671.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c17502671.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) -end -function c17502671.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if Duel.GetLocationCount(tp,LOCATION_MZONE)1 + and Duel.IsExistingTarget(c17502671.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c17502671.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c17502671.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if Duel.GetLocationCount(tp,LOCATION_MZONE)1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + local tc=sg:GetFirst() + local c=e:GetHandler() + while tc do + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + end + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c17530001.lua b/script/c17530001.lua index 04d52ecf..1df6a8b3 100644 --- a/script/c17530001.lua +++ b/script/c17530001.lua @@ -1,38 +1,38 @@ ---キューブン -function c17530001.initial_effect(c) - -- - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(17530001,0)) - e1:SetCategory(CATEGORY_DICE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c17530001.target) - e1:SetOperation(c17530001.operation) - c:RegisterEffect(e1) -end -function c17530001.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) -end -function c17530001.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - local dc=Duel.TossDice(tp,1) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) - e1:SetTargetRange(1,1) - e1:SetTarget(c17530001.tglimit) - e1:SetLabel(dc) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - c:RegisterEffect(e2) -end -function c17530001.tglimit(e,c) - return c:GetLevel()==e:GetLabel() -end +--キューブン +function c17530001.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17530001,0)) + e1:SetCategory(CATEGORY_DICE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c17530001.target) + e1:SetOperation(c17530001.operation) + c:RegisterEffect(e1) +end +function c17530001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c17530001.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local dc=Duel.TossDice(tp,1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetTargetRange(1,1) + e1:SetTarget(c17530001.tglimit) + e1:SetLabel(dc) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e2) +end +function c17530001.tglimit(e,c) + return c:GetLevel()==e:GetLabel() +end diff --git a/script/c17540705.lua b/script/c17540705.lua new file mode 100644 index 00000000..6725155c --- /dev/null +++ b/script/c17540705.lua @@ -0,0 +1,95 @@ +--EMダグ・ダガーマン +function c17540705.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(1160) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c17540705.threg) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(17540705,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,17540705) + e2:SetCondition(c17540705.thcon) + e2:SetTarget(c17540705.thtg) + e2:SetOperation(c17540705.thop) + c:RegisterEffect(e2) + --pendulum summon reg + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCondition(c17540705.regcon) + e3:SetOperation(c17540705.drreg) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(17540705,1)) + e4:SetCategory(CATEGORY_DRAW) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1,17540706) + e4:SetCondition(c17540705.drcon) + e4:SetCost(c17540705.drcost) + e4:SetTarget(c17540705.drtg) + e4:SetOperation(c17540705.drop) + c:RegisterEffect(e4) +end +function c17540705.threg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():RegisterFlagEffect(17540705,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) +end +function c17540705.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(17540705)~=0 +end +function c17540705.thfilter(c) + return c:IsSetCard(0x9f) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c17540705.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c17540705.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c17540705.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c17540705.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c17540705.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c17540705.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c17540705.drreg(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(17540706,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c17540705.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(17540706)~=0 +end +function c17540705.cfilter(c) + return c:IsSetCard(0x9f) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c17540705.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c17540705.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c17540705.cfilter,1,1,REASON_COST) +end +function c17540705.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c17540705.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c17548456.lua b/script/c17548456.lua index c799edbb..0844ac79 100644 --- a/script/c17548456.lua +++ b/script/c17548456.lua @@ -30,12 +30,11 @@ function c17548456.desop(e,tp,eg,ep,ev,re,r,rp) if g:GetCount()>0 then Duel.Destroy(g,REASON_EFFECT) end - local sg=Duel.GetMatchingGroup(c17548456.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c17548456.spfilter),tp,LOCATION_GRAVE,0,nil,e,tp) if sg:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(17548456,1)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sp=sg:Select(tp,1,1,nil) - if sp:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c17589298.lua b/script/c17589298.lua index 7b0e6892..8a70aee0 100644 --- a/script/c17589298.lua +++ b/script/c17589298.lua @@ -1,14 +1,6 @@ --サクリファイス・ソード function c17589298.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(c17589298.target) - e1:SetOperation(c17589298.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c17589298.filter) -- local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -33,25 +25,8 @@ function c17589298.initial_effect(c) e4:SetOperation(c17589298.retop) c:RegisterEffect(e4) end -function c17589298.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_DARK) -end function c17589298.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) -end -function c17589298.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c17589298.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c17589298.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c17589298.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c17589298.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 + return c:IsAttribute(ATTRIBUTE_DARK) end function c17589298.retcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c17601919.lua b/script/c17601919.lua index 387f8185..e053fbac 100644 --- a/script/c17601919.lua +++ b/script/c17601919.lua @@ -1,62 +1,62 @@ ---ゴースト姫-パンプリンセス- -function c17601919.initial_effect(c) - c:EnableCounterPermit(0x2f,LOCATION_SZONE) - --send replace - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_TO_GRAVE_REDIRECT_CB) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetCondition(c17601919.repcon) - e1:SetOperation(c17601919.repop) - c:RegisterEffect(e1) -end -function c17601919.repcon(e) - local c=e:GetHandler() - return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsReason(REASON_DESTROY) -end -function c17601919.repop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetCode(EFFECT_CHANGE_TYPE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fc0000) - e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(17601919,1)) - e2:SetCategory(CATEGORY_COUNTER) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCountLimit(1) - e2:SetTarget(c17601919.addct) - e2:SetOperation(c17601919.addc) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - --addown - local e3=Effect.CreateEffect(c) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetValue(c17601919.adval) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) -end -function c17601919.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x2f) -end -function c17601919.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x2f,1) - end -end -function c17601919.adval(e,c) - return e:GetHandler():GetCounter(0x2f)*-100 -end +--ゴースト姫-パンプリンセス- +function c17601919.initial_effect(c) + c:EnableCounterPermit(0x2f,LOCATION_SZONE) + --send replace + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TO_GRAVE_REDIRECT_CB) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c17601919.repcon) + e1:SetOperation(c17601919.repop) + c:RegisterEffect(e1) +end +function c17601919.repcon(e) + local c=e:GetHandler() + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsReason(REASON_DESTROY) +end +function c17601919.repop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(17601919,1)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetTarget(c17601919.addct) + e2:SetOperation(c17601919.addc) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --addown + local e3=Effect.CreateEffect(c) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(c17601919.adval) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) +end +function c17601919.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x2f) +end +function c17601919.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x2f,1) + end +end +function c17601919.adval(e,c) + return e:GetHandler():GetCounter(0x2f)*-100 +end diff --git a/script/c17639150.lua b/script/c17639150.lua index f29609de..cafafa92 100644 --- a/script/c17639150.lua +++ b/script/c17639150.lua @@ -1,21 +1,6 @@ --機殻の生贄 function c17639150.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(c17639150.eqtg) - e1:SetOperation(c17639150.eqop) - 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(c17639150.effcon) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,c17639150.eqfilter) --Atk up local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) @@ -50,21 +35,7 @@ function c17639150.effcon(e,c) return c:IsSetCard(0xaa) end function c17639150.eqfilter(c) - return c:IsFaceup() and c:IsSetCard(0xaa) -end -function c17639150.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c17639150.eqfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c17639150.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c17639150.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c17639150.eqop(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 + return c:IsSetCard(0xaa) end function c17639150.thcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) diff --git a/script/c176392.lua b/script/c176392.lua index c54acfb8..697f8df3 100644 --- a/script/c176392.lua +++ b/script/c176392.lua @@ -1,57 +1,57 @@ ---コアキメイル・テストベッド -function c176392.initial_effect(c) - --destroy replace - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_DESTROY_REPLACE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c176392.descon) - e1:SetTarget(c176392.destg) - e1:SetValue(c176392.repval) - c:RegisterEffect(e1) - --token - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(176392,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_DESTROYED) - e2:SetCondition(c176392.spcon) - e2:SetTarget(c176392.sptg) - e2:SetOperation(c176392.spop) - c:RegisterEffect(e2) -end -function c176392.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_END -end -function c176392.rfilter(c) - return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0x1d) -end -function c176392.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c176392.rfilter,1,e:GetHandler()) end - if Duel.SelectYesNo(tp,aux.Stringid(176392,0)) then - Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) - return true - else return false end -end -function c176392.repval(e,c) - return c:IsFaceup() and c:IsSetCard(0x1d) and c~=e:GetHandler() -end -function c176392.spfilter(c) - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0x1d) -end -function c176392.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_END and eg:IsExists(c176392.spfilter,1,nil) -end -function c176392.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,176393,0x1d,0x4011,1800,1800,4,RACE_ROCK,ATTRIBUTE_EARTH) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c176392.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if not Duel.IsPlayerCanSpecialSummonMonster(tp,176393,0x1d,0x4011,1800,1800,4,RACE_ROCK,ATTRIBUTE_EARTH) then return end - local token=Duel.CreateToken(tp,176393) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) -end +--コアキメイル・テストベッド +function c176392.initial_effect(c) + --destroy replace + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c176392.descon) + e1:SetTarget(c176392.destg) + e1:SetValue(c176392.repval) + c:RegisterEffect(e1) + --token + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(176392,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c176392.spcon) + e2:SetTarget(c176392.sptg) + e2:SetOperation(c176392.spop) + c:RegisterEffect(e2) +end +function c176392.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END +end +function c176392.rfilter(c) + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0x1d) +end +function c176392.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c176392.rfilter,1,e:GetHandler()) end + if Duel.SelectYesNo(tp,aux.Stringid(176392,0)) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) + return true + else return false end +end +function c176392.repval(e,c) + return c:IsFaceup() and c:IsSetCard(0x1d) and c~=e:GetHandler() +end +function c176392.spfilter(c) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0x1d) +end +function c176392.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END and eg:IsExists(c176392.spfilter,1,nil) +end +function c176392.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,176393,0x1d,0x4011,1800,1800,4,RACE_ROCK,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c176392.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,176393,0x1d,0x4011,1800,1800,4,RACE_ROCK,ATTRIBUTE_EARTH) then return end + local token=Duel.CreateToken(tp,176393) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c1764972.lua b/script/c1764972.lua index e8a7e3c4..b500ed42 100644 --- a/script/c1764972.lua +++ b/script/c1764972.lua @@ -49,9 +49,8 @@ end function c1764972.spop1(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c1764972.sfilter,nil,e,tp) - if g:GetCount()==0 or g:GetCount()>ft then return false end + if g:GetCount()==0 or g:GetCount()>ft or (g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return false end local c=e:GetHandler() local fid=c:GetFieldID() local tc=g:GetFirst() diff --git a/script/c17663375.lua b/script/c17663375.lua new file mode 100644 index 00000000..6d664339 --- /dev/null +++ b/script/c17663375.lua @@ -0,0 +1,69 @@ +--古代の機械飛竜 +function c17663375.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17663375,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCountLimit(1,17663375) + e1:SetTarget(c17663375.thtg) + e1:SetOperation(c17663375.thop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetValue(c17663375.aclimit) + e3:SetCondition(c17663375.actcon) + c:RegisterEffect(e3) +end +function c17663375.thfilter(c) + return c:IsSetCard(0x7) and not c:IsCode(17663375) and c:IsAbleToHand() +end +function c17663375.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c17663375.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c17663375.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c17663375.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_MSET) + e1:SetTargetRange(1,0) + e1:SetTarget(aux.TRUE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SSET) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_TURN_SET) + Duel.RegisterEffect(e3,tp) + local e4=e1:Clone() + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e4:SetTarget(c17663375.sumlimit) + Duel.RegisterEffect(e4,tp) +end +function c17663375.sumlimit(e,c,sump,sumtype,sumpos,targetp) + return bit.band(sumpos,POS_FACEDOWN)>0 +end +function c17663375.aclimit(e,re,tp) + return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end +function c17663375.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end diff --git a/script/c17760003.lua b/script/c17760003.lua index 2f3229df..f1ac4ab2 100644 --- a/script/c17760003.lua +++ b/script/c17760003.lua @@ -116,7 +116,7 @@ function c17760003.filter3(c) return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) end function c17760003.target3(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c17760003.filter2(chkc) end + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c17760003.filter3(chkc) end if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsExistingTarget(c17760003.filter3,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) diff --git a/script/c17814387.lua b/script/c17814387.lua index a806d74d..1b59a245 100644 --- a/script/c17814387.lua +++ b/script/c17814387.lua @@ -1,34 +1,34 @@ ---援軍 -function c17814387.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(c17814387.condition) - e1:SetTarget(c17814387.target) - e1:SetOperation(c17814387.activate) - c:RegisterEffect(e1) -end -function c17814387.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c17814387.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==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_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c17814387.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(500) - tc:RegisterEffect(e1) - end -end +--援軍 +function c17814387.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(c17814387.condition) + e1:SetTarget(c17814387.target) + e1:SetOperation(c17814387.activate) + c:RegisterEffect(e1) +end +function c17814387.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c17814387.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c17814387.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c1784686.lua b/script/c1784686.lua index c291f748..5cbe5c9b 100644 --- a/script/c1784686.lua +++ b/script/c1784686.lua @@ -1,56 +1,51 @@ ---ティマイオスの眼 -function c1784686.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,1784686+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c1784686.target) - e1:SetOperation(c1784686.activate) - c:RegisterEffect(e1) - --add code - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_ADD_CODE) - e2:SetValue(10000050) - c:RegisterEffect(e2) -end -function c1784686.tgfilter0(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x10a2) - and c:IsCanBeFusionMaterial() and Duel.IsExistingMatchingCard(c1784686.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetCode()) -end -function c1784686.tgfilter(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x10a2) - and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) - and Duel.IsExistingMatchingCard(c1784686.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetCode()) -end -function c1784686.spfilter(c,e,tp,code) - return aux.IsMaterialListCode(c,code) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) -end -function c1784686.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc==0 then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c1784686.tgfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c1784686.tgfilter0,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c1784686.tgfilter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c1784686.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsCanBeFusionMaterial() and not tc:IsImmuneToEffect(e) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c1784686.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetCode()) - local sc=sg:GetFirst() - if sc then - sc:SetMaterial(Group.FromCards(tc)) - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(sc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end - end -end +--ティマイオスの眼 +function c1784686.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,1784686+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c1784686.target) + e1:SetOperation(c1784686.activate) + c:RegisterEffect(e1) + --add code + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_ADD_CODE) + e2:SetValue(10000050) + c:RegisterEffect(e2) +end +function c1784686.tgfilter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x10a2) and c:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c1784686.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetCode()) +end +function c1784686.spfilter(c,e,tp,code) + return aux.IsMaterialListCode(c,code) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c1784686.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc==0 then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c1784686.tgfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c1784686.tgfilter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c1784686.tgfilter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c1784686.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsCanBeFusionMaterial() and not tc:IsImmuneToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c1784686.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetCode()) + local sc=sg:GetFirst() + if sc then + sc:SetMaterial(Group.FromCards(tc)) + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(sc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end + end +end diff --git a/script/c17857780.lua b/script/c17857780.lua index d3c6c959..a925914a 100644 --- a/script/c17857780.lua +++ b/script/c17857780.lua @@ -1,55 +1,55 @@ ---EMチアモール -function c17857780.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(c17857780.atktg) - e2:SetValue(300) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(17857780,0)) - e3:SetCategory(CATEGORY_ATKCHANGE) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,17857780) - e3:SetTarget(c17857780.target) - e3:SetOperation(c17857780.operation) - c:RegisterEffect(e3) -end -function c17857780.atktg(e,c) - return c:IsType(TYPE_PENDULUM) -end -function c17857780.filter(c) - return c:IsFaceup() and c:GetAttack()~=c:GetBaseAttack() -end -function c17857780.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c17857780.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c17857780.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c17857780.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c17857780.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local atk=tc:GetAttack() - local batk=tc:GetBaseAttack() - if atk==batk then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - if atk>batk then - e1:SetValue(1000) - else - e1:SetValue(-1000) - end - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end +--EMチアモール +function c17857780.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c17857780.atktg) + e2:SetValue(300) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(17857780,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,17857780) + e3:SetTarget(c17857780.target) + e3:SetOperation(c17857780.operation) + c:RegisterEffect(e3) +end +function c17857780.atktg(e,c) + return c:IsType(TYPE_PENDULUM) +end +function c17857780.filter(c) + return c:IsFaceup() and c:GetAttack()~=c:GetBaseAttack() +end +function c17857780.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c17857780.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c17857780.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c17857780.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c17857780.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + local batk=tc:GetBaseAttack() + if atk==batk then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + if atk>batk then + e1:SetValue(1000) + else + e1:SetValue(-1000) + end + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c17874674.lua b/script/c17874674.lua index 4af041cd..45afbb21 100644 --- a/script/c17874674.lua +++ b/script/c17874674.lua @@ -1,105 +1,105 @@ ---破邪の刻印 -function c17874674.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) - e1:SetTarget(c17874674.target1) - e1:SetOperation(c17874674.operation) - c:RegisterEffect(e1) - --confirm - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(17874674,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCondition(c17874674.condition) - e2:SetTarget(c17874674.target2) - e2:SetOperation(c17874674.operation) - c:RegisterEffect(e2) - --cancel target - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_TURN_END) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c17874674.condition) - e3:SetOperation(c17874674.ctarget) - c:RegisterEffect(e3) - --cost - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EVENT_PHASE+PHASE_STANDBY) - e4:SetCountLimit(1) - e4:SetCondition(c17874674.costcon) - e4:SetOperation(c17874674.costop) - c:RegisterEffect(e4) -end -function c17874674.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and aux.disfilter1(chkc) end - if chk==0 then return true end - if Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_STANDBY - and Duel.IsExistingTarget(aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) - and Duel.SelectYesNo(tp,94) then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - e:GetHandler():RegisterFlagEffect(17874674,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - else - e:SetProperty(0) - end -end -function c17874674.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c17874674.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and aux.disfilter1(chkc) end - if chk==0 then return e:GetHandler():GetFlagEffect(17874674)==0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - e:GetHandler():RegisterFlagEffect(17874674,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c17874674.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetFlagEffect(17874674)==0 or not c:IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc and ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then - c:SetCardTarget(tc) - e:SetLabelObject(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCondition(c17874674.rcon) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetCondition(c17874674.rcon) - tc:RegisterEffect(e2) - end -end -function c17874674.rcon(e) - return e:GetOwner():IsHasCardTarget(e:GetHandler()) -end -function c17874674.ctarget(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - if tc then e:GetHandler():CancelCardTarget(tc) end -end -function c17874674.costcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c17874674.costop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(17874674,1)) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--破邪の刻印 +function c17874674.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) + e1:SetTarget(c17874674.target1) + e1:SetOperation(c17874674.operation) + c:RegisterEffect(e1) + --confirm + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(17874674,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c17874674.condition) + e2:SetTarget(c17874674.target2) + e2:SetOperation(c17874674.operation) + c:RegisterEffect(e2) + --cancel target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_TURN_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c17874674.condition) + e3:SetOperation(c17874674.ctarget) + c:RegisterEffect(e3) + --cost + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetCountLimit(1) + e4:SetCondition(c17874674.costcon) + e4:SetOperation(c17874674.costop) + c:RegisterEffect(e4) +end +function c17874674.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and aux.disfilter1(chkc) end + if chk==0 then return true end + if Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_STANDBY + and Duel.IsExistingTarget(aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and Duel.SelectYesNo(tp,94) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + e:GetHandler():RegisterFlagEffect(17874674,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + else + e:SetProperty(0) + end +end +function c17874674.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c17874674.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and aux.disfilter1(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(17874674)==0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + e:GetHandler():RegisterFlagEffect(17874674,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c17874674.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(17874674)==0 or not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCondition(c17874674.rcon) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetCondition(c17874674.rcon) + tc:RegisterEffect(e2) + end +end +function c17874674.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c17874674.ctarget(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc then e:GetHandler():CancelCardTarget(tc) end +end +function c17874674.costcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c17874674.costop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(17874674,1)) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c17896384.lua b/script/c17896384.lua index 18e46d40..12318658 100644 --- a/script/c17896384.lua +++ b/script/c17896384.lua @@ -1,60 +1,60 @@ ---魔法族の結界 -function c17896384.initial_effect(c) - c:EnableCounterPermit(0x1) - c:SetCounterLimit(0x1,4) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_DESTROYED) - e2:SetCondition(c17896384.ctcon) - e2:SetOperation(c17896384.ctop) - c:RegisterEffect(e2) - --draw - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(17896384,0)) - e3:SetCategory(CATEGORY_DRAW) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_SZONE) - e3:SetCost(c17896384.drcost) - e3:SetTarget(c17896384.drtg) - e3:SetOperation(c17896384.drop) - c:RegisterEffect(e3) -end -function c17896384.ctfilter(c) - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and bit.band(c:GetPreviousRaceOnField(),RACE_SPELLCASTER)~=0 -end -function c17896384.ctcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c17896384.ctfilter,1,nil) -end -function c17896384.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x1,1) -end -function c17896384.cfilter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToGraveAsCost() -end -function c17896384.drcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() - and Duel.IsExistingMatchingCard(c17896384.cfilter,tp,LOCATION_MZONE,0,1,nil) end - e:SetLabel(e:GetHandler():GetCounter(0x1)) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c17896384.cfilter,tp,LOCATION_MZONE,0,1,1,nil) - g:AddCard(e:GetHandler()) - Duel.SendtoGrave(g,REASON_COST) -end -function c17896384.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetCounter(0x1)>0 end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(e:GetLabel()) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel()) -end -function c17896384.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--魔法族の結界 +function c17896384.initial_effect(c) + c:EnableCounterPermit(0x1) + c:SetCounterLimit(0x1,4) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c17896384.ctcon) + e2:SetOperation(c17896384.ctop) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(17896384,0)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c17896384.drcost) + e3:SetTarget(c17896384.drtg) + e3:SetOperation(c17896384.drop) + c:RegisterEffect(e3) +end +function c17896384.ctfilter(c) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and bit.band(c:GetPreviousRaceOnField(),RACE_SPELLCASTER)~=0 +end +function c17896384.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c17896384.ctfilter,1,nil) +end +function c17896384.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x1,1) +end +function c17896384.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToGraveAsCost() +end +function c17896384.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c17896384.cfilter,tp,LOCATION_MZONE,0,1,nil) end + e:SetLabel(e:GetHandler():GetCounter(0x1)) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c17896384.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + g:AddCard(e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) +end +function c17896384.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetCounter(0x1)>0 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel()) +end +function c17896384.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c17932494.lua b/script/c17932494.lua index 706603bc..d895bebd 100644 --- a/script/c17932494.lua +++ b/script/c17932494.lua @@ -1,27 +1,27 @@ ---ソニック・ウォリアー -function c17932494.initial_effect(c) - --to grave - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(17932494,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetOperation(c17932494.operation) - c:RegisterEffect(e1) -end -function c17932494.filter(c) - return c:IsFaceup() and c:IsLevelBelow(2) -end -function c17932494.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c17932494.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(500) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--ソニック・ウォリアー +function c17932494.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17932494,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetOperation(c17932494.operation) + c:RegisterEffect(e1) +end +function c17932494.filter(c) + return c:IsFaceup() and c:IsLevelBelow(2) +end +function c17932494.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c17932494.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c17979378.lua b/script/c17979378.lua index 8848b262..6e5443d0 100644 --- a/script/c17979378.lua +++ b/script/c17979378.lua @@ -1,78 +1,78 @@ ---DDプラウド・シュバリエ -function c17979378.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(17979378,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetCost(c17979378.atkcost) - e2:SetTarget(c17979378.atktg) - e2:SetOperation(c17979378.atkop) - c:RegisterEffect(e2) - --scale - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetCode(EFFECT_CHANGE_LSCALE) - e3:SetRange(LOCATION_PZONE) - e3:SetCondition(c17979378.sccon) - e3:SetValue(5) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CHANGE_RSCALE) - c:RegisterEffect(e4) - --to hand - local e5=Effect.CreateEffect(c) - e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e5:SetCode(EVENT_SUMMON_SUCCESS) - e5:SetTarget(c17979378.thtg) - e5:SetOperation(c17979378.thop) - c:RegisterEffect(e5) -end -function c17979378.atkcost(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 c17979378.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c17979378.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - 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_UPDATE_ATTACK) - e1:SetValue(-500) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end -function c17979378.sccon(e) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) - return not tc or not tc:IsSetCard(0xaf) -end -function c17979378.filter(c) - return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToHand() -end -function c17979378.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c17979378.filter,tp,LOCATION_EXTRA,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_EXTRA) -end -function c17979378.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c17979378.filter,tp,LOCATION_EXTRA,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--DDプラウド・シュバリエ +function c17979378.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(17979378,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c17979378.atkcost) + e2:SetTarget(c17979378.atktg) + e2:SetOperation(c17979378.atkop) + c:RegisterEffect(e2) + --scale + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_CHANGE_LSCALE) + e3:SetRange(LOCATION_PZONE) + e3:SetCondition(c17979378.sccon) + e3:SetValue(5) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e4) + --to hand + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_SUMMON_SUCCESS) + e5:SetTarget(c17979378.thtg) + e5:SetOperation(c17979378.thop) + c:RegisterEffect(e5) +end +function c17979378.atkcost(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 c17979378.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c17979378.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + 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_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c17979378.sccon(e) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) + return not tc or not tc:IsSetCard(0xaf) +end +function c17979378.filter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToHand() +end +function c17979378.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c17979378.filter,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_EXTRA) +end +function c17979378.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c17979378.filter,tp,LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c17985575.lua b/script/c17985575.lua index 5fe33c0e..339e56b7 100644 --- a/script/c17985575.lua +++ b/script/c17985575.lua @@ -5,6 +5,7 @@ function c17985575.initial_effect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) e1:SetTarget(c17985575.etarget) e1:SetValue(1) diff --git a/script/c1801154.lua b/script/c1801154.lua index 4031ee51..3ee6575b 100644 --- a/script/c1801154.lua +++ b/script/c1801154.lua @@ -1,40 +1,40 @@ ---遠心分離フィールド -function c1801154.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(1801154,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetTarget(c1801154.sptg) - e2:SetOperation(c1801154.spop) - c:RegisterEffect(e2) -end -function c1801154.filter1(c,e,tp,eg) - return eg:IsExists(c1801154.filter2,1,nil,c:GetCode()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c1801154.filter2(c,code) - return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_EFFECT) and aux.IsMaterialListCode(c,code) -end -function c1801154.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c1801154.filter1(chkc,e,tp,eg) end - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c1801154.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp,eg) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c1801154.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,eg) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c1801154.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--遠心分離フィールド +function c1801154.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1801154,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetTarget(c1801154.sptg) + e2:SetOperation(c1801154.spop) + c:RegisterEffect(e2) +end +function c1801154.filter1(c,e,tp,eg) + return eg:IsExists(c1801154.filter2,1,nil,c:GetCode()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c1801154.filter2(c,code) + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_EFFECT) and aux.IsMaterialListCode(c,code) +end +function c1801154.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c1801154.filter1(chkc,e,tp,eg) end + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c1801154.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp,eg) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c1801154.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c1801154.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c18013090.lua b/script/c18013090.lua index 2aeb6e69..135bb27f 100644 --- a/script/c18013090.lua +++ b/script/c18013090.lua @@ -1,68 +1,68 @@ ---ニトロ・ウォリアー -function c18013090.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c18013090.tfilter,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_CHAINING) - e1:SetRange(LOCATION_MZONE) - e1:SetOperation(c18013090.atop1) - c:RegisterEffect(e1) - --chain attack - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(18013090,0)) - e3:SetCategory(CATEGORY_POSITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLED) - e3:SetCondition(c18013090.cacon) - e3:SetTarget(c18013090.catg) - e3:SetOperation(c18013090.caop) - c:RegisterEffect(e3) -end -c18013090.material_setcode=0x17 -function c18013090.tfilter(c) - return c:IsCode(96182448) or c:IsHasEffect(20932152) -end -function c18013090.atop1(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetTurnPlayer()~=tp or ep~=tp then return end - if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_SPELL) then return end - local c=e:GetHandler() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c18013090.atkcon) - e2:SetValue(1000) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL+PHASE_END) - c:RegisterEffect(e2) -end -function c18013090.atkcon(e) - local c=e:GetHandler() - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and c==Duel.GetAttacker() -end -function c18013090.cacon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() -end -function c18013090.filter(c) - return c:IsFaceup() and c:IsDefensePos() and not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c18013090.catg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c18013090.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c18013090.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,c18013090.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) -end -function c18013090.caop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.ChangePosition(tc,POS_FACEUP_ATTACK) - Duel.ChainAttack(tc) - end -end +--ニトロ・ウォリアー +function c18013090.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c18013090.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c18013090.atop1) + c:RegisterEffect(e1) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(18013090,0)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLED) + e3:SetCondition(c18013090.cacon) + e3:SetTarget(c18013090.catg) + e3:SetOperation(c18013090.caop) + c:RegisterEffect(e3) +end +c18013090.material_setcode=0x1017 +function c18013090.tfilter(c) + return c:IsCode(96182448) or c:IsHasEffect(20932152) +end +function c18013090.atop1(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp or ep~=tp then return end + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_SPELL) then return end + local c=e:GetHandler() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c18013090.atkcon) + e2:SetValue(1000) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL+PHASE_END) + c:RegisterEffect(e2) +end +function c18013090.atkcon(e) + local c=e:GetHandler() + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and c==Duel.GetAttacker() +end +function c18013090.cacon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() +end +function c18013090.filter(c) + return c:IsFaceup() and c:IsDefensePos() and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c18013090.catg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c18013090.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c18013090.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,c18013090.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c18013090.caop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.ChangePosition(tc,POS_FACEUP_ATTACK) + Duel.ChainAttack(tc) + end +end diff --git a/script/c18027138.lua b/script/c18027138.lua index 85349e31..b2fa9e94 100644 --- a/script/c18027138.lua +++ b/script/c18027138.lua @@ -1,62 +1,62 @@ ---カバーカーニバル -function c18027138.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c18027138.target) - e1:SetOperation(c18027138.activate) - c:RegisterEffect(e1) -end -function c18027138.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 - and Duel.IsPlayerCanSpecialSummonMonster(tp,18027139,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) -end -function c18027138.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 - and Duel.IsPlayerCanSpecialSummonMonster(tp,18027139,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) then - for i=1,3 do - local token=Duel.CreateToken(tp,18027138+i) - Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - token:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) - token:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetAbsoluteRange(tp,1,0) - e3:SetTarget(c18027138.splimit) - e3:SetReset(RESET_EVENT+0x1fe0000) - token:RegisterEffect(e3) - end - Duel.SpecialSummonComplete() - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c18027138.atlimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c18027138.splimit(e,c) - return c:IsLocation(LOCATION_EXTRA) -end -function c18027138.atlimit(e,c) - return not c:IsCode(18027139) -end +--カバーカーニバル +function c18027138.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c18027138.target) + e1:SetOperation(c18027138.activate) + c:RegisterEffect(e1) +end +function c18027138.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 + and Duel.IsPlayerCanSpecialSummonMonster(tp,18027139,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c18027138.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 + and Duel.IsPlayerCanSpecialSummonMonster(tp,18027139,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) then + for i=1,3 do + local token=Duel.CreateToken(tp,18027138+i) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + token:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetAbsoluteRange(tp,1,0) + e3:SetTarget(c18027138.splimit) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3) + end + Duel.SpecialSummonComplete() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c18027138.atlimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c18027138.splimit(e,c) + return c:IsLocation(LOCATION_EXTRA) +end +function c18027138.atlimit(e,c) + return not c:IsCode(18027139) +end diff --git a/script/c18060565.lua b/script/c18060565.lua index ae428698..c5c27a1b 100644 --- a/script/c18060565.lua +++ b/script/c18060565.lua @@ -1,50 +1,50 @@ ---ドラグニティ-プリムス・ピルス -function c18060565.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(18060565,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c18060565.eqtg) - e1:SetOperation(c18060565.eqop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c18060565.filter(c) - return c:IsFaceup() and c:IsSetCard(0x29) and c:IsRace(RACE_WINDBEAST) -end -function c18060565.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c18060565.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c18060565.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c18060565.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_DECK) -end -function c18060565.eqfilter(c) - return c:IsSetCard(0x29) and c:IsRace(RACE_DRAGON) and c:IsLevelBelow(3) and not c:IsForbidden() -end -function c18060565.eqop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local eq=Duel.SelectMatchingCard(tp,c18060565.eqfilter,tp,LOCATION_DECK,0,1,1,nil) - local eqc=eq:GetFirst() - if eqc and Duel.Equip(tp,eqc,tc,true) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c18060565.eqlimit) - e1:SetLabelObject(tc) - eqc:RegisterEffect(e1) - end -end -function c18060565.eqlimit(e,c) - return c==e:GetLabelObject() -end +--ドラグニティ-プリムス・ピルス +function c18060565.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(18060565,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c18060565.eqtg) + e1:SetOperation(c18060565.eqop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c18060565.filter(c) + return c:IsFaceup() and c:IsSetCard(0x29) and c:IsRace(RACE_WINDBEAST) +end +function c18060565.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c18060565.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c18060565.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c18060565.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_DECK) +end +function c18060565.eqfilter(c) + return c:IsSetCard(0x29) and c:IsRace(RACE_DRAGON) and c:IsLevelBelow(3) and not c:IsForbidden() +end +function c18060565.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local eq=Duel.SelectMatchingCard(tp,c18060565.eqfilter,tp,LOCATION_DECK,0,1,1,nil) + local eqc=eq:GetFirst() + if eqc and Duel.Equip(tp,eqc,tc,true) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c18060565.eqlimit) + e1:SetLabelObject(tc) + eqc:RegisterEffect(e1) + end +end +function c18060565.eqlimit(e,c) + return c==e:GetLabelObject() +end diff --git a/script/c18114794.lua b/script/c18114794.lua index 87a06927..1001e0db 100644 --- a/script/c18114794.lua +++ b/script/c18114794.lua @@ -1,73 +1,73 @@ ---サモンブレーカー -function c18114794.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(18114794,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_CUSTOM+18114794) - e2:SetCondition(c18114794.condition) - e2:SetOperation(c18114794.operation) - c:RegisterEffect(e2) - if not c18114794.global_check then - c18114794.global_check=true - c18114794[0]=0 - c18114794[1]=0 - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SUMMON_SUCCESS) - ge1:SetOperation(c18114794.checkop) - Duel.RegisterEffect(ge1,0) - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - ge2:SetOperation(c18114794.checkop) - Duel.RegisterEffect(ge2,0) - local ge3=Effect.CreateEffect(c) - ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge3:SetCode(EVENT_SPSUMMON_SUCCESS) - ge3:SetOperation(c18114794.checkop) - Duel.RegisterEffect(ge3,0) - end -end -function c18114794.checkop(e,tp,eg,ep,ev,re,r,rp) - local turnp=Duel.GetTurnPlayer() - if Duel.GetTurnCount()~=c18114794[2] then - c18114794[0]=0 - c18114794[1]=0 - c18114794[2]=Duel.GetTurnCount() - end - local tc=eg:GetFirst() - local p1=false - while tc do - if tc:GetSummonPlayer()==turnp then p1=true end - tc=eg:GetNext() - end - if p1 then - c18114794[turnp]=c18114794[turnp]+1 - if c18114794[turnp]==3 then - Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+18114794,e,0,0,0,0) - end - end -end -function c18114794.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 -end -function c18114794.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local turnp=Duel.GetTurnPlayer() - Duel.SkipPhase(turnp,PHASE_MAIN1,RESET_PHASE+PHASE_END,1) - Duel.SkipPhase(turnp,PHASE_BATTLE,RESET_PHASE+PHASE_END,1,1) - Duel.SkipPhase(turnp,PHASE_MAIN2,RESET_PHASE+PHASE_END,1) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,turnp) -end +--サモンブレーカー +function c18114794.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(18114794,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_CUSTOM+18114794) + e2:SetCondition(c18114794.condition) + e2:SetOperation(c18114794.operation) + c:RegisterEffect(e2) + if not c18114794.global_check then + c18114794.global_check=true + c18114794[0]=0 + c18114794[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c18114794.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + ge2:SetOperation(c18114794.checkop) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_SPSUMMON_SUCCESS) + ge3:SetOperation(c18114794.checkop) + Duel.RegisterEffect(ge3,0) + end +end +function c18114794.checkop(e,tp,eg,ep,ev,re,r,rp) + local turnp=Duel.GetTurnPlayer() + if Duel.GetTurnCount()~=c18114794[2] then + c18114794[0]=0 + c18114794[1]=0 + c18114794[2]=Duel.GetTurnCount() + end + local tc=eg:GetFirst() + local p1=false + while tc do + if tc:GetSummonPlayer()==turnp then p1=true end + tc=eg:GetNext() + end + if p1 then + c18114794[turnp]=c18114794[turnp]+1 + if c18114794[turnp]==3 then + Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+18114794,e,0,0,0,0) + end + end +end +function c18114794.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c18114794.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local turnp=Duel.GetTurnPlayer() + Duel.SkipPhase(turnp,PHASE_MAIN1,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(turnp,PHASE_BATTLE,RESET_PHASE+PHASE_END,1,1) + Duel.SkipPhase(turnp,PHASE_MAIN2,RESET_PHASE+PHASE_END,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,turnp) +end diff --git a/script/c18161786.lua b/script/c18161786.lua index a2c7af3c..56c3d8cd 100644 --- a/script/c18161786.lua +++ b/script/c18161786.lua @@ -1,22 +1,22 @@ ---ダークゾーン -function c18161786.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK)) - e2:SetValue(500) - c:RegisterEffect(e2) - --Def down - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(-400) - c:RegisterEffect(e3) -end +--ダークゾーン +function c18161786.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK)) + e2:SetValue(500) + c:RegisterEffect(e2) + --Def down + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(-400) + c:RegisterEffect(e3) +end diff --git a/script/c18175965.lua b/script/c18175965.lua index 595fc757..00d325fb 100644 --- a/script/c18175965.lua +++ b/script/c18175965.lua @@ -1,115 +1,115 @@ ---ガーディアン・デスサイス -function c18175965.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --summon limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_SUMMON) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_CANNOT_MSET) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(18175965,0)) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetRange(LOCATION_HAND) - e4:SetCondition(c18175965.spcon) - e4:SetTarget(c18175965.sptg) - e4:SetOperation(c18175965.spop) - c:RegisterEffect(e4) - --equip - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(18175965,1)) - e5:SetCategory(CATEGORY_EQUIP) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e5:SetCode(EVENT_SPSUMMON_SUCCESS) - e5:SetTarget(c18175965.eqtg) - e5:SetOperation(c18175965.eqop) - c:RegisterEffect(e5) - --disable summon - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD) - e6:SetRange(LOCATION_MZONE) - e6:SetCode(EFFECT_CANNOT_SUMMON) - e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e6:SetTargetRange(1,0) - c:RegisterEffect(e6) - local e7=e6:Clone() - e7:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - c:RegisterEffect(e7) - --special summon 2 - local e8=Effect.CreateEffect(c) - e8:SetDescription(aux.Stringid(18175965,2)) - e8:SetCategory(CATEGORY_SPECIAL_SUMMON) - e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e8:SetCode(EVENT_TO_GRAVE) - e8:SetCondition(c18175965.spcon2) - e8:SetTarget(c18175965.sptg2) - e8:SetOperation(c18175965.spop2) - c:RegisterEffect(e8) -end -function c18175965.cfilter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:GetPreviousControler()==tp - and c:IsReason(REASON_DESTROY) and c:IsCode(34022290) -end -function c18175965.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c18175965.cfilter,1,nil,tp) -end -function c18175965.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c18175965.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then - c:CompleteProcedure() - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c18175965.filter(c,ec) - return c:IsCode(81954378) and c:CheckEquipTarget(ec) -end -function c18175965.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingMatchingCard(c18175965.filter,tp,LOCATION_DECK,0,1,nil,e:GetHandler()) end - Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_DECK) -end -function c18175965.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or c:IsFacedown() or not c:IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c18175965.filter,tp,LOCATION_DECK,0,1,1,nil,c) - if g:GetCount()>0 then - Duel.Equip(tp,g:GetFirst(),c) - end -end -function c18175965.spcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c18175965.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsStatus(STATUS_PROC_COMPLETE) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_HANDES,0,0,tp,1) -end -function c18175965.spop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT)==0 then return end - if c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,true,true,POS_FACEUP) - end -end +--ガーディアン・デスサイス +function c18175965.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_MSET) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(18175965,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetRange(LOCATION_HAND) + e4:SetCondition(c18175965.spcon) + e4:SetTarget(c18175965.sptg) + e4:SetOperation(c18175965.spop) + c:RegisterEffect(e4) + --equip + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(18175965,1)) + e5:SetCategory(CATEGORY_EQUIP) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + e5:SetTarget(c18175965.eqtg) + e5:SetOperation(c18175965.eqop) + c:RegisterEffect(e5) + --disable summon + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EFFECT_CANNOT_SUMMON) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetTargetRange(1,0) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e7) + --special summon 2 + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(18175965,2)) + e8:SetCategory(CATEGORY_SPECIAL_SUMMON) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e8:SetCode(EVENT_TO_GRAVE) + e8:SetCondition(c18175965.spcon2) + e8:SetTarget(c18175965.sptg2) + e8:SetOperation(c18175965.spop2) + c:RegisterEffect(e8) +end +function c18175965.cfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:GetPreviousControler()==tp + and c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsReason(REASON_DESTROY) and c:IsCode(34022290) +end +function c18175965.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c18175965.cfilter,1,nil,tp) +end +function c18175965.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c18175965.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then + c:CompleteProcedure() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c18175965.filter(c,ec) + return c:IsCode(81954378) and c:CheckEquipTarget(ec) +end +function c18175965.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c18175965.filter,tp,LOCATION_DECK,0,1,nil,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_DECK) +end +function c18175965.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or c:IsFacedown() or not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectMatchingCard(tp,c18175965.filter,tp,LOCATION_DECK,0,1,1,nil,c) + if g:GetCount()>0 then + Duel.Equip(tp,g:GetFirst(),c) + end +end +function c18175965.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c18175965.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsStatus(STATUS_PROC_COMPLETE) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_HANDES,0,0,tp,1) +end +function c18175965.spop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT)==0 then return end + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,true,true,POS_FACEUP) + end +end diff --git a/script/c18205590.lua b/script/c18205590.lua index 8eb8cc52..a30f8ef8 100644 --- a/script/c18205590.lua +++ b/script/c18205590.lua @@ -1,53 +1,53 @@ ---天架ける星因士 -function c18205590.initial_effect(c) - -- - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,18205590+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c18205590.target) - e1:SetOperation(c18205590.operation) - c:RegisterEffect(e1) -end -function c18205590.filter(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x9c) and c:IsAbleToDeck() - and Duel.IsExistingMatchingCard(c18205590.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) -end -function c18205590.spfilter(c,e,tp,code) - return c:IsSetCard(0x9c) and not c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c18205590.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c18205590.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c18205590.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c18205590.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c18205590.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c18205590.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,tc:GetCode()) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetAbsoluteRange(tp,1,0) - e1:SetTarget(c18205590.splimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - g:GetFirst():RegisterEffect(e1,true) - end -end -function c18205590.splimit(e,c) - return not c:IsSetCard(0x9c) -end +--天架ける星因士 +function c18205590.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,18205590+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c18205590.target) + e1:SetOperation(c18205590.operation) + c:RegisterEffect(e1) +end +function c18205590.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x9c) and c:IsAbleToDeck() + and Duel.IsExistingMatchingCard(c18205590.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) +end +function c18205590.spfilter(c,e,tp,code) + return c:IsSetCard(0x9c) and not c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c18205590.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c18205590.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c18205590.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c18205590.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c18205590.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c18205590.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,tc:GetCode()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetAbsoluteRange(tp,1,0) + e1:SetTarget(c18205590.splimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + g:GetFirst():RegisterEffect(e1,true) + end +end +function c18205590.splimit(e,c) + return not c:IsSetCard(0x9c) +end diff --git a/script/c18210764.lua b/script/c18210764.lua new file mode 100644 index 00000000..4b67cd64 --- /dev/null +++ b/script/c18210764.lua @@ -0,0 +1,89 @@ +--ペンデュラムーチョ +--Pendulumucho +--Scripted by Eerie Code +function c18210764.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(1160) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c18210764.reg) + c:RegisterEffect(e1) + --toextra + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(18210764,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c18210764.tecon) + e2:SetTarget(c18210764.tetg) + e2:SetOperation(c18210764.teop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(18210764,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetTarget(c18210764.sptg) + e3:SetOperation(c18210764.spop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c18210764.reg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():RegisterFlagEffect(18210764,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) +end +function c18210764.tecon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(18210764)>0 +end +function c18210764.tefilter(c) + return (c:IsFaceup() or c:IsLocation(LOCATION_GRAVE)) and c:IsType(TYPE_PENDULUM) + and not c:IsCode(18210764) and not c:IsForbidden() +end +function c18210764.tetg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and chkc:IsControler(tp) and c18210764.tefilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c18210764.tefilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(18210764,1)) + local g=Duel.SelectTarget(tp,c18210764.tefilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil) + if g:GetFirst():IsLocation(LOCATION_GRAVE) then + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + end +end +function c18210764.teop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoExtraP(tc,tp,REASON_EFFECT) + end +end +function c18210764.spfilter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:GetLevel()==1 + and not c:IsCode(18210764) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c18210764.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c18210764.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c18210764.spop(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,c18210764.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + g:GetFirst():RegisterEffect(e1,true) + end +end diff --git a/script/c18235309.lua b/script/c18235309.lua index 528e40eb..a23194ff 100644 --- a/script/c18235309.lua +++ b/script/c18235309.lua @@ -1,73 +1,73 @@ ---連撃の帝王 -function c18235309.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c18235309.cost1) - e1:SetTarget(c18235309.target1) - e1:SetOperation(c18235309.activate) - c:RegisterEffect(e1) - --instant - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(18235309,0)) - e3:SetCategory(CATEGORY_SUMMON) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetHintTiming(0,0x1c0+TIMING_MAIN_END+TIMING_BATTLE_START+TIMING_BATTLE_END) - e3:SetCountLimit(1) - e3:SetCondition(c18235309.condition2) - e3:SetTarget(c18235309.target2) - e3:SetOperation(c18235309.activate) - e3:SetLabel(1) - c:RegisterEffect(e3) -end -function c18235309.filter(c) - return c:IsSummonable(true,nil,1) or c:IsMSetable(true,nil,1) -end -function c18235309.cost1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:SetLabel(0) - local tn=Duel.GetTurnPlayer() - local ph=Duel.GetCurrentPhase() - if (tn~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE))) - and Duel.IsExistingMatchingCard(c18235309.filter,tp,LOCATION_HAND,0,1,nil) - and Duel.SelectYesNo(tp,94) then - e:SetLabel(1) - end -end -function c18235309.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - if e:GetLabel()~=1 then return end - e:GetHandler():RegisterFlagEffect(18235309,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) - Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) -end -function c18235309.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if e:GetLabel()~=1 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) - local g=Duel.SelectMatchingCard(tp,c18235309.filter,tp,LOCATION_HAND,0,1,1,nil) - local tc=g:GetFirst() - if tc then - local s1=tc:IsSummonable(true,nil,1) - local s2=tc:IsMSetable(true,nil,1) - if (s1 and s2 and Duel.SelectPosition(tp,tc,POS_FACEUP_ATTACK+POS_FACEDOWN_DEFENSE)==POS_FACEUP_ATTACK) or not s2 then - Duel.Summon(tp,tc,true,nil,1) - else - Duel.MSet(tp,tc,true,nil,1) - end - end -end -function c18235309.condition2(e,tp,eg,ep,ev,re,r,rp) - local tn=Duel.GetTurnPlayer() - local ph=Duel.GetCurrentPhase() - return tn~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE)) -end -function c18235309.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(18235309)==0 - and Duel.IsExistingMatchingCard(c18235309.filter,tp,LOCATION_HAND,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) -end +--連撃の帝王 +function c18235309.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c18235309.cost1) + e1:SetTarget(c18235309.target1) + e1:SetOperation(c18235309.activate) + c:RegisterEffect(e1) + --instant + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(18235309,0)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(0,0x1c0+TIMING_MAIN_END+TIMING_BATTLE_START+TIMING_BATTLE_END) + e3:SetCountLimit(1) + e3:SetCondition(c18235309.condition2) + e3:SetTarget(c18235309.target2) + e3:SetOperation(c18235309.activate) + e3:SetLabel(1) + c:RegisterEffect(e3) +end +function c18235309.filter(c) + return c:IsSummonable(true,nil,1) or c:IsMSetable(true,nil,1) +end +function c18235309.cost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:SetLabel(0) + local tn=Duel.GetTurnPlayer() + local ph=Duel.GetCurrentPhase() + if (tn~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE))) + and Duel.IsExistingMatchingCard(c18235309.filter,tp,LOCATION_HAND,0,1,nil) + and Duel.SelectYesNo(tp,94) then + e:SetLabel(1) + end +end +function c18235309.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if e:GetLabel()~=1 then return end + e:GetHandler():RegisterFlagEffect(18235309,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c18235309.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if e:GetLabel()~=1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c18235309.filter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + local s1=tc:IsSummonable(true,nil,1) + local s2=tc:IsMSetable(true,nil,1) + if (s1 and s2 and Duel.SelectPosition(tp,tc,POS_FACEUP_ATTACK+POS_FACEDOWN_DEFENSE)==POS_FACEUP_ATTACK) or not s2 then + Duel.Summon(tp,tc,true,nil,1) + else + Duel.MSet(tp,tc,true,nil,1) + end + end +end +function c18235309.condition2(e,tp,eg,ep,ev,re,r,rp) + local tn=Duel.GetTurnPlayer() + local ph=Duel.GetCurrentPhase() + return tn~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE)) +end +function c18235309.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(18235309)==0 + and Duel.IsExistingMatchingCard(c18235309.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end diff --git a/script/c18239909.lua b/script/c18239909.lua index 835d813a..c234af6e 100644 --- a/script/c18239909.lua +++ b/script/c18239909.lua @@ -1,82 +1,82 @@ ---爆竜剣士イグニスターP -function c18239909.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsType,TYPE_PENDULUM),1) - c:EnableReviveLimit() - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(18239909,0)) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1) - e1:SetTarget(c18239909.destg) - e1:SetOperation(c18239909.desop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(18239909,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c18239909.sptg) - e2:SetOperation(c18239909.spop) - c:RegisterEffect(e2) -end -function c18239909.tgfilter(c) - if c:IsLocation(LOCATION_MZONE) then - return c:IsFaceup() and c:IsType(TYPE_PENDULUM) - else - return c:GetSequence()==6 or c:GetSequence()==7 - end -end -function c18239909.desfilter(c) - return c18239909.tgfilter(c) - and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) -end -function c18239909.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c18239909.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c18239909.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c18239909.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,0,LOCATION_ONFIELD) -end -function c18239909.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToDeck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - if g:GetCount()>0 then - Duel.HintSelection(g) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - end - end -end -function c18239909.spfilter(c,e,tp) - return c:IsSetCard(0xc7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c18239909.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c18239909.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c18239909.spop(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,c18239909.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(1) - tc:RegisterEffect(e1) - end -end +--爆竜剣士イグニスターP +function c18239909.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsType,TYPE_PENDULUM),1) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(18239909,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c18239909.destg) + e1:SetOperation(c18239909.desop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(18239909,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c18239909.sptg) + e2:SetOperation(c18239909.spop) + c:RegisterEffect(e2) +end +function c18239909.tgfilter(c) + if c:IsLocation(LOCATION_MZONE) then + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) + else + return c:GetSequence()==6 or c:GetSequence()==7 + end +end +function c18239909.desfilter(c) + return c18239909.tgfilter(c) + and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) +end +function c18239909.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c18239909.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c18239909.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c18239909.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,0,LOCATION_ONFIELD) +end +function c18239909.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToDeck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + end + end +end +function c18239909.spfilter(c,e,tp) + return c:IsSetCard(0xc7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c18239909.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c18239909.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c18239909.spop(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,c18239909.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end diff --git a/script/c18271561.lua b/script/c18271561.lua index b9625b0a..57225be9 100644 --- a/script/c18271561.lua +++ b/script/c18271561.lua @@ -1,42 +1,42 @@ ---ヘル・ブラスト -function c18271561.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c18271561.condition) - e1:SetTarget(c18271561.target) - e1:SetOperation(c18271561.operation) - c:RegisterEffect(e1) -end -function c18271561.filter(c,tp) - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) - and c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) -end -function c18271561.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c18271561.filter,1,nil,tp) -end -function c18271561.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local dg=g:GetMinGroup(Card.GetAttack) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) -end -function c18271561.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()==0 then return end - local dg=g:GetMinGroup(Card.GetAttack) - if dg:GetCount()>1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - dg=dg:Select(tp,1,1,nil) - end - local atk=dg:GetFirst():GetAttack()/2 - if Duel.Destroy(dg,REASON_EFFECT)>0 then - Duel.Damage(tp,atk,REASON_EFFECT,true) - Duel.Damage(1-tp,atk,REASON_EFFECT,true) - Duel.RDComplete() - end -end +--ヘル・ブラスト +function c18271561.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c18271561.condition) + e1:SetTarget(c18271561.target) + e1:SetOperation(c18271561.operation) + c:RegisterEffect(e1) +end +function c18271561.filter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) + and c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) +end +function c18271561.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c18271561.filter,1,nil,tp) +end +function c18271561.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local dg=g:GetMinGroup(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c18271561.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + local dg=g:GetMinGroup(Card.GetAttack) + if dg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + dg=dg:Select(tp,1,1,nil) + end + local atk=dg:GetFirst():GetAttack()/2 + if Duel.Destroy(dg,REASON_EFFECT)>0 then + Duel.Damage(tp,atk,REASON_EFFECT,true) + Duel.Damage(1-tp,atk,REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c1828513.lua b/script/c1828513.lua index f096e825..a178584c 100644 --- a/script/c1828513.lua +++ b/script/c1828513.lua @@ -8,7 +8,7 @@ function c1828513.initial_effect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetDescription(aux.Stringid(1828513,0)) e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCode(EVENT_FREE_CHAIN) diff --git a/script/c18302224.lua b/script/c18302224.lua index 4b5ae9d5..926201a6 100644 --- a/script/c18302224.lua +++ b/script/c18302224.lua @@ -1,54 +1,54 @@ ---リバース・オブ・ネオス -function c18302224.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_DESTROYED) - e1:SetCondition(c18302224.condition) - e1:SetTarget(c18302224.target) - e1:SetOperation(c18302224.activate) - c:RegisterEffect(e1) -end -function c18302224.cfilter(c,tp) - return c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp - and c:IsPreviousPosition(POS_FACEUP) and c:IsSetCard(0x9) and c:IsType(TYPE_FUSION) -end -function c18302224.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c18302224.cfilter,1,nil,tp) -end -function c18302224.filter(c,e,tp) - return c:IsCode(89943723) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c18302224.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c18302224.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c18302224.activate(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,c18302224.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetOperation(c18302224.desop) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetCountLimit(1) - tc:RegisterEffect(e2,true) - Duel.SpecialSummonComplete() - end -end -function c18302224.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--リバース・オブ・ネオス +function c18302224.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c18302224.condition) + e1:SetTarget(c18302224.target) + e1:SetOperation(c18302224.activate) + c:RegisterEffect(e1) +end +function c18302224.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp + and c:IsPreviousPosition(POS_FACEUP) and c:IsSetCard(0x9) and c:IsType(TYPE_FUSION) +end +function c18302224.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c18302224.cfilter,1,nil,tp) +end +function c18302224.filter(c,e,tp) + return c:IsCode(89943723) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c18302224.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c18302224.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c18302224.activate(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,c18302224.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetOperation(c18302224.desop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end +function c18302224.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c18326736.lua b/script/c18326736.lua index ea9284bc..2dee19f7 100644 --- a/script/c18326736.lua +++ b/script/c18326736.lua @@ -7,6 +7,7 @@ function c18326736.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(18326736,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_FREE_CHAIN) @@ -18,6 +19,7 @@ function c18326736.initial_effect(c) --turn skip local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(18326736,1)) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCost(c18326736.skipcost) diff --git a/script/c1833916.lua b/script/c1833916.lua index 287e4ae2..041bb790 100644 --- a/script/c1833916.lua +++ b/script/c1833916.lua @@ -1,83 +1,83 @@ ---H・C サウザンド・ブレード -function c1833916.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(1833916,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c1833916.spcon) - e1:SetCost(c1833916.spcost) - e1:SetTarget(c1833916.sptg) - e1:SetOperation(c1833916.spop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(1833916,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_GRAVE) - e2:SetCode(EVENT_DAMAGE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetCountLimit(1,1833916) - e2:SetCondition(c1833916.spcon2) - e2:SetTarget(c1833916.sptg2) - e2:SetOperation(c1833916.spop2) - c:RegisterEffect(e2) -end -function c1833916.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsAttackPos() -end -function c1833916.cfilter(c) - return c:IsSetCard(0x6f) and c:IsDiscardable() -end -function c1833916.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c1833916.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end - Duel.DiscardHand(tp,c1833916.cfilter,1,1,REASON_COST+REASON_DISCARD) -end -function c1833916.filter(c,e,tp) - return c:IsSetCard(0x6f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c1833916.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c1833916.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c1833916.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c1833916.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - if c:IsRelateToEffect(e) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c1833916.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c1833916.splimit(e,c) - return not c:IsSetCard(0x6f) -end -function c1833916.spcon2(e,tp,eg,ep,ev,re,r,rp) - return ep==tp -end -function c1833916.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c1833916.spop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK) - end -end +--H・C サウザンド・ブレード +function c1833916.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(1833916,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c1833916.spcon) + e1:SetCost(c1833916.spcost) + e1:SetTarget(c1833916.sptg) + e1:SetOperation(c1833916.spop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1833916,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetCode(EVENT_DAMAGE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCountLimit(1,1833916) + e2:SetCondition(c1833916.spcon2) + e2:SetTarget(c1833916.sptg2) + e2:SetOperation(c1833916.spop2) + c:RegisterEffect(e2) +end +function c1833916.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c1833916.cfilter(c) + return c:IsSetCard(0x6f) and c:IsDiscardable() +end +function c1833916.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c1833916.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c1833916.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c1833916.filter(c,e,tp) + return c:IsSetCard(0x6f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c1833916.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c1833916.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c1833916.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c1833916.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + if c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c1833916.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c1833916.splimit(e,c) + return not c:IsSetCard(0x6f) +end +function c1833916.spcon2(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c1833916.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c1833916.spop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c18386170.lua b/script/c18386170.lua index ce0e1ff1..57d23626 100644 --- a/script/c18386170.lua +++ b/script/c18386170.lua @@ -81,43 +81,74 @@ function c18386170.hdop(e,tp,eg,ep,ev,re,r,rp) local sg=g:RandomSelect(tp,1) Duel.SendtoGrave(sg,REASON_EFFECT) end +function c18386170.ffilter(c,fc) + return (c:IsFusionSetCard(0xb1) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) and c:IsCanBeFusionMaterial(fc) +end +function c18386170.filterchk1(c,mg,g2,ct,chkf) + local tg + if g2==nil or g2:GetCount()==0 then tg=Group.CreateGroup() else tg=g2:Clone() end + local g=mg:Clone() + tg:AddCard(c) + g:RemoveCard(c) + local ctc=ct+1 + if ctc==3 then + return c18386170.filterchk2(tg,chkf) + else + return g:IsExists(c18386170.filterchk1,1,nil,g,tg,ctc,chkf) + end +end +function c18386170.filterchk2(g,chkf) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + local fs=false + if g:IsExists(aux.FConditionCheckF,1,nil,chkf) then fs=true end + return g:IsExists(c18386170.namechk,1,nil,g) and (fs or chkf==PLAYER_NONE) +end +function c18386170.namechk(c,g,code1,code2) + if not c:IsHasEffect(511002961) then + if code1~=nil and c:IsCode(code1) then return false end + if code2~=nil and c:IsCode(code2) then return false end + if code1==nil then code1=c:GetCode() elseif code2==nil then code2=c:GetCode() end + end + local mg=g:Clone() + mg:RemoveCard(c) + return mg:IsExists(c18386170.namechk,1,nil,mg,code1,code2) or mg:GetCount()==0 +end function c18386170.fscon(e,g,gc,chkf) if g==nil then return true end + local mg=g:Filter(c18386170.ffilter,nil,e:GetHandler()) if gc then - local mg=g:Filter(Card.IsFusionSetCard,nil,0xb1) - mg:AddCard(gc) - return gc:IsFusionSetCard(0xb1) and mg:GetClassCount(Card.GetCode)>=3 + return c18386170.filterchk1(gc,mg,nil,0,chkf) end - local fs=false - local mg=g:Filter(Card.IsFusionSetCard,nil,0xb1) - if mg:IsExists(aux.FConditionCheckF,1,nil,chkf) then fs=true end - return mg:GetClassCount(Card.GetCode)>=3 and (fs or chkf==PLAYER_NONE) + return mg:IsExists(c18386170.filterchk1,1,nil,mg,nil,0,chkf) end function c18386170.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local g=eg:Filter(c18386170.ffilter,nil,e:GetHandler()) + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if g:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end + end if gc then - local sg=eg:Filter(Card.IsFusionSetCard,gc,0xb1) - sg:Remove(Card.IsCode,nil,gc:GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=sg:Select(tp,1,1,nil) - sg:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g2=sg:Select(tp,1,1,nil) - g1:Merge(g2) - Duel.SetFusionMaterial(g1) + local matg=Group.FromCards(gc) + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,c18386170.filterchk1,1,1,nil,g,matg,i,chkf) + g:Sub(g1) + matg:Merge(g1) + end + if sfhchk then Duel.ShuffleHand(tp) end + matg:RemoveCard(gc) + Duel.SetFusionMaterial(matg) return end - local sg=eg:Filter(Card.IsFusionSetCard,nil,0xb1) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end - sg:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g2=sg:Select(tp,1,1,nil) - sg:Remove(Card.IsCode,nil,g2:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g3=sg:Select(tp,1,1,nil) - g1:Merge(g2) - g1:Merge(g3) - Duel.SetFusionMaterial(g1) + local matg=Group.CreateGroup() + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,c18386170.filterchk1,1,1,nil,g,matg,i-1,chkf) + g:Sub(g1) + matg:Merge(g1) + end + if sfhchk then Duel.ShuffleHand(tp) end + Duel.SetFusionMaterial(matg) end diff --git a/script/c1845204.lua b/script/c1845204.lua index 46c8bf46..998bd6b9 100644 --- a/script/c1845204.lua +++ b/script/c1845204.lua @@ -1,66 +1,66 @@ ---簡易融合 -function c1845204.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,1845204+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c1845204.cost) - e1:SetTarget(c1845204.target) - e1:SetOperation(c1845204.activate) - c:RegisterEffect(e1) -end -function c1845204.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 c1845204.filter(c,e,tp) - return c:IsType(TYPE_FUSION) and c:GetLevel()<=5 - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial() -end -function c1845204.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c1845204.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c1845204.activate(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,c1845204.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if not tc then return end - tc:SetMaterial(nil) - if Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - tc:RegisterFlagEffect(1845204,RESET_EVENT+0x1fe0000,0,1) - tc:CompleteProcedure() - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetCountLimit(1) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetLabelObject(tc) - e2:SetCondition(c1845204.descon) - e2:SetOperation(c1845204.desop) - Duel.RegisterEffect(e2,tp) - end -end -function c1845204.descon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:GetFlagEffect(1845204)~=0 then - return true - else - e:Reset() - return false - end -end -function c1845204.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.Destroy(tc,REASON_EFFECT) -end +--簡易融合 +function c1845204.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,1845204+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c1845204.cost) + e1:SetTarget(c1845204.target) + e1:SetOperation(c1845204.activate) + c:RegisterEffect(e1) +end +function c1845204.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 c1845204.filter(c,e,tp) + return c:IsType(TYPE_FUSION) and c:GetLevel()<=5 + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial() +end +function c1845204.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c1845204.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c1845204.activate(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,c1845204.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + tc:SetMaterial(nil) + if Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + tc:RegisterFlagEffect(1845204,RESET_EVENT+0x1fe0000,0,1) + tc:CompleteProcedure() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetLabelObject(tc) + e2:SetCondition(c1845204.descon) + e2:SetOperation(c1845204.desop) + Duel.RegisterEffect(e2,tp) + end +end +function c1845204.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(1845204)~=0 then + return true + else + e:Reset() + return false + end +end +function c1845204.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c18482591.lua b/script/c18482591.lua index 5ab47b66..5cc59959 100644 --- a/script/c18482591.lua +++ b/script/c18482591.lua @@ -1,38 +1,38 @@ ---氷結界の破術師 -function c18482591.initial_effect(c) - --cannot activate - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_CANNOT_ACTIVATE) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(1,1) - e2:SetCondition(c18482591.con) - e2:SetValue(c18482591.aclimit) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SSET) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c18482591.con) - e3:SetOperation(c18482591.aclimset) - c:RegisterEffect(e3) -end -function c18482591.filter(c) - return c:IsFaceup() and c:IsSetCard(0x2f) -end -function c18482591.con(e) - return Duel.IsExistingMatchingCard(c18482591.filter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,e:GetHandler()) -end -function c18482591.aclimit(e,re,tp) - if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_SPELL) then return false end - local c=re:GetHandler() - return not c:IsLocation(LOCATION_SZONE) or c:GetFlagEffect(18482591)>0 -end -function c18482591.aclimset(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - while tc do - tc:RegisterFlagEffect(18482591,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,1) - tc=eg:GetNext() - end -end +--氷結界の破術師 +function c18482591.initial_effect(c) + --cannot activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(1,1) + e2:SetCondition(c18482591.con) + e2:SetValue(c18482591.aclimit) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SSET) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c18482591.con) + e3:SetOperation(c18482591.aclimset) + c:RegisterEffect(e3) +end +function c18482591.filter(c) + return c:IsFaceup() and c:IsSetCard(0x2f) +end +function c18482591.con(e) + return Duel.IsExistingMatchingCard(c18482591.filter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,e:GetHandler()) +end +function c18482591.aclimit(e,re,tp) + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_SPELL) then return false end + local c=re:GetHandler() + return not c:IsLocation(LOCATION_SZONE) or c:GetFlagEffect(18482591)>0 +end +function c18482591.aclimset(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + tc:RegisterFlagEffect(18482591,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,1) + tc=eg:GetNext() + end +end diff --git a/script/c18486927.lua b/script/c18486927.lua new file mode 100644 index 00000000..4b48f486 --- /dev/null +++ b/script/c18486927.lua @@ -0,0 +1,83 @@ +--古代の歯車機械 +function c18486927.initial_effect(c) + --declare card + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c18486927.dectg) + e1:SetOperation(c18486927.decop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --name change + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(18486927,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c18486927.nametg) + e3:SetOperation(c18486927.nameop) + c:RegisterEffect(e3) +end +function c18486927.dectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CARDTYPE) + e:SetLabel(Duel.SelectOption(tp,70,71,72)) +end +function c18486927.decop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local opt=e:GetLabel() + local ct=nil + if opt==0 then + ct=TYPE_MONSTER + elseif opt==1 then + ct=TYPE_SPELL + else + ct=TYPE_TRAP + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetLabel(ct) + e1:SetCondition(c18486927.actcon) + e1:SetValue(c18486927.actlimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c18486927.actlimit(e,re,tp) + local ct=e:GetLabel() + return re:IsActiveType(ct) and (ct==TYPE_MONSTER or re:IsHasType(EFFECT_TYPE_ACTIVATE)) + and not re:GetHandler():IsImmuneToEffect(e) +end +function c18486927.actcon(e) + local tc=Duel.GetAttacker() + local tp=e:GetHandlerPlayer() + return tc and tc:IsControler(tp) +end +function c18486927.nametg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local code=e:GetHandler():GetCode() + --c:IsSetCard(0x51) and not c:IsCode(code) + c18486927.announce_filter={0x51,OPCODE_ISSETCARD,code,OPCODE_ISCODE,OPCODE_NOT,OPCODE_AND} + local ac=Duel.AnnounceCardFilter(tp,table.unpack(c18486927.announce_filter)) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD_FILTER) +end +function c18486927.nameop(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(ac) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c18511384.lua b/script/c18511384.lua index b532449a..cbf05da9 100644 --- a/script/c18511384.lua +++ b/script/c18511384.lua @@ -1,37 +1,37 @@ ---融合回収 -function c18511384.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c18511384.target) - e1:SetOperation(c18511384.activate) - c:RegisterEffect(e1) -end -function c18511384.filter1(c) - return c:IsCode(24094653) and c:IsAbleToHand() -end -function c18511384.filter2(c) - return bit.band(c:GetReason(),0x40008)==0x40008 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c18511384.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c18511384.filter1,tp,LOCATION_GRAVE,0,1,nil) - and Duel.IsExistingTarget(c18511384.filter2,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g1=Duel.SelectTarget(tp,c18511384.filter1,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g2=Duel.SelectTarget(tp,c18511384.filter2,tp,LOCATION_GRAVE,0,1,1,nil) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g1,2,0,0) -end -function c18511384.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if sg:GetCount()>0 then - Duel.SendtoHand(sg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,sg) - end -end +--融合回収 +function c18511384.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c18511384.target) + e1:SetOperation(c18511384.activate) + c:RegisterEffect(e1) +end +function c18511384.filter1(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c18511384.filter2(c) + return bit.band(c:GetReason(),0x40008)==0x40008 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c18511384.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c18511384.filter1,tp,LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingTarget(c18511384.filter2,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g1=Duel.SelectTarget(tp,c18511384.filter1,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g2=Duel.SelectTarget(tp,c18511384.filter2,tp,LOCATION_GRAVE,0,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g1,2,0,0) +end +function c18511384.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c18511599.lua b/script/c18511599.lua index f551cbb0..a5725fbd 100644 --- a/script/c18511599.lua +++ b/script/c18511599.lua @@ -16,6 +16,7 @@ function c18511599.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(18511599,0)) e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetRange(LOCATION_MZONE) diff --git a/script/c18590133.lua b/script/c18590133.lua index 4e3163a4..d055e92b 100644 --- a/script/c18590133.lua +++ b/script/c18590133.lua @@ -1,33 +1,33 @@ ---キングゴブリン -function c18590133.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) - e1:SetCondition(c18590133.ccon) - e1:SetValue(aux.imval1) - c:RegisterEffect(e1) - --atk,def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetCode(EFFECT_SET_ATTACK) - e2:SetValue(c18590133.val) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e3) -end -function c18590133.filter(c) - return c:IsFaceup() and c:IsRace(RACE_FIEND) -end -function c18590133.ccon(e) - return Duel.IsExistingMatchingCard(c18590133.filter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,e:GetHandler()) -end -function c18590133.val(e,c) - return Duel.GetMatchingGroupCount(c18590133.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c)*1000 -end +--キングゴブリン +function c18590133.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetCondition(c18590133.ccon) + e1:SetValue(aux.imval1) + c:RegisterEffect(e1) + --atk,def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetValue(c18590133.val) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e3) +end +function c18590133.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FIEND) +end +function c18590133.ccon(e) + return Duel.IsExistingMatchingCard(c18590133.filter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,e:GetHandler()) +end +function c18590133.val(e,c) + return Duel.GetMatchingGroupCount(c18590133.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c)*1000 +end diff --git a/script/c18631392.lua b/script/c18631392.lua index ca9f736f..b7302a7a 100644 --- a/script/c18631392.lua +++ b/script/c18631392.lua @@ -1,96 +1,96 @@ ---マアト -function c18631392.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c18631392.spcon) - e2:SetOperation(c18631392.spop) - c:RegisterEffect(e2) - --announce 3 cards - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(18631392,0)) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_TOGRAVE+CATEGORY_ATKCHANGE) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetTarget(c18631392.anctg) - c:RegisterEffect(e3) -end -function c18631392.spfilter(c,rac) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(rac) and c:IsAbleToGraveAsCost() -end -function c18631392.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c18631392.spfilter,tp,LOCATION_MZONE,0,1,nil,RACE_FAIRY) - and Duel.IsExistingMatchingCard(c18631392.spfilter,tp,LOCATION_MZONE,0,1,nil,RACE_DRAGON) -end -function c18631392.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g1=Duel.SelectMatchingCard(tp,c18631392.spfilter,tp,LOCATION_MZONE,0,1,1,nil,RACE_FAIRY) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g2=Duel.SelectMatchingCard(tp,c18631392.spfilter,tp,LOCATION_MZONE,0,1,1,nil,RACE_DRAGON) - g1:Merge(g2) - Duel.SendtoGrave(g1,REASON_COST) -end -function c18631392.anctg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if not Duel.IsPlayerCanDiscardDeck(tp,3) then return false end - local g=Duel.GetDecktopGroup(tp,3) - return g:FilterCount(Card.IsAbleToHand,nil)>0 - end - Duel.Hint(HINT_SELECTMSG,tp,0) - local ac1=Duel.AnnounceCard(tp) - Duel.Hint(HINT_SELECTMSG,tp,0) - local ac2=Duel.AnnounceCard(tp) - Duel.Hint(HINT_SELECTMSG,tp,0) - local ac3=Duel.AnnounceCard(tp) - e:SetOperation(c18631392.retop(ac1,ac2,ac3)) -end -function c18631392.hfilter(c,code1,code2,code3) - return c:IsCode(code1,code2,code3) and c:IsAbleToHand() -end -function c18631392.retop(code1,code2,code3) - return - function (e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,3) then return end - local c=e:GetHandler() - Duel.ConfirmDecktop(tp,3) - local g=Duel.GetDecktopGroup(tp,3) - local hg=g:Filter(c18631392.hfilter,nil,code1,code2,code3) - g:Sub(hg) - if hg:GetCount()~=0 then - Duel.DisableShuffleCheck() - Duel.SendtoHand(hg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,hg) - Duel.ShuffleHand(tp) - end - if g:GetCount()~=0 then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) - end - if c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(hg:GetCount()*1000) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - c:RegisterEffect(e2) - end - end -end +--マアト +function c18631392.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c18631392.spcon) + e2:SetOperation(c18631392.spop) + c:RegisterEffect(e2) + --announce 3 cards + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(18631392,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_TOGRAVE+CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c18631392.anctg) + c:RegisterEffect(e3) +end +function c18631392.spfilter(c,rac) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(rac) and c:IsAbleToGraveAsCost() +end +function c18631392.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c18631392.spfilter,tp,LOCATION_MZONE,0,1,nil,RACE_FAIRY) + and Duel.IsExistingMatchingCard(c18631392.spfilter,tp,LOCATION_MZONE,0,1,nil,RACE_DRAGON) +end +function c18631392.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c18631392.spfilter,tp,LOCATION_MZONE,0,1,1,nil,RACE_FAIRY) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c18631392.spfilter,tp,LOCATION_MZONE,0,1,1,nil,RACE_DRAGON) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) +end +function c18631392.anctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if not Duel.IsPlayerCanDiscardDeck(tp,3) then return false end + local g=Duel.GetDecktopGroup(tp,3) + return g:FilterCount(Card.IsAbleToHand,nil)>0 + end + Duel.Hint(HINT_SELECTMSG,tp,0) + local ac1=Duel.AnnounceCard(tp) + Duel.Hint(HINT_SELECTMSG,tp,0) + local ac2=Duel.AnnounceCard(tp) + Duel.Hint(HINT_SELECTMSG,tp,0) + local ac3=Duel.AnnounceCard(tp) + e:SetOperation(c18631392.retop(ac1,ac2,ac3)) +end +function c18631392.hfilter(c,code1,code2,code3) + return c:IsCode(code1,code2,code3) and c:IsAbleToHand() +end +function c18631392.retop(code1,code2,code3) + return + function (e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,3) then return end + local c=e:GetHandler() + Duel.ConfirmDecktop(tp,3) + local g=Duel.GetDecktopGroup(tp,3) + local hg=g:Filter(c18631392.hfilter,nil,code1,code2,code3) + g:Sub(hg) + if hg:GetCount()~=0 then + Duel.DisableShuffleCheck() + Duel.SendtoHand(hg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,hg) + Duel.ShuffleHand(tp) + end + if g:GetCount()~=0 then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) + end + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(hg:GetCount()*1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e2) + end + end +end diff --git a/script/c18634367.lua b/script/c18634367.lua index 67f1d7c2..93c8759c 100644 --- a/script/c18634367.lua +++ b/script/c18634367.lua @@ -1,99 +1,99 @@ ---スクリーン・オブ・レッド -function c18634367.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x28) - e1:SetTarget(c18634367.target) - e1:SetOperation(c18634367.spop) - c:RegisterEffect(e1) - --cannot attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - c:RegisterEffect(e2) - --maintain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c18634367.mtcon) - e3:SetOperation(c18634367.mtop) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(18634367,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetHintTiming(0,TIMING_END_PHASE) - e4:SetRange(LOCATION_SZONE) - e4:SetCondition(c18634367.spcon) - e4:SetTarget(c18634367.sptg) - e4:SetOperation(c18634367.spop) - e4:SetLabel(1) - c:RegisterEffect(e4) -end -function c18634367.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c18634367.filter(chkc,e,tp) end - if chk==0 then return true end - if Duel.IsExistingMatchingCard(c18634367.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) - and e:GetHandler():IsDestructable() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c18634367.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) - and Duel.SelectYesNo(tp,94) then - e:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c18634367.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) - e:SetLabel(1) - else - e:SetCategory(0) - e:SetProperty(0) - e:SetLabel(0) - end -end -function c18634367.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c18634367.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,1000) then - Duel.PayLPCost(tp,1000) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -function c18634367.cfilter(c) - return c:IsFaceup() and c:IsCode(70902743) -end -function c18634367.spcon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_CHAINING) - and Duel.IsExistingMatchingCard(c18634367.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) -end -function c18634367.filter(c,e,tp) - return c:GetLevel()==1 and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c18634367.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c18634367.filter(chkc,e,tp) end - if chk==0 then return e:GetHandler():IsDestructable() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c18634367.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c18634367.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c18634367.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()~=1 or not Duel.IsExistingMatchingCard(c18634367.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and Duel.Destroy(c,REASON_EFFECT)~=0 and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--スクリーン・オブ・レッド +function c18634367.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x28) + e1:SetTarget(c18634367.target) + e1:SetOperation(c18634367.spop) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c18634367.mtcon) + e3:SetOperation(c18634367.mtop) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(18634367,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetHintTiming(0,TIMING_END_PHASE) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c18634367.spcon) + e4:SetTarget(c18634367.sptg) + e4:SetOperation(c18634367.spop) + e4:SetLabel(1) + c:RegisterEffect(e4) +end +function c18634367.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c18634367.filter(chkc,e,tp) end + if chk==0 then return true end + if Duel.IsExistingMatchingCard(c18634367.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + and e:GetHandler():IsDestructable() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c18634367.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c18634367.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + e:SetLabel(1) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetLabel(0) + end +end +function c18634367.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c18634367.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,1000) then + Duel.PayLPCost(tp,1000) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c18634367.cfilter(c) + return c:IsFaceup() and c:IsCode(70902743) +end +function c18634367.spcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.IsExistingMatchingCard(c18634367.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end +function c18634367.filter(c,e,tp) + return c:GetLevel()==1 and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c18634367.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c18634367.filter(chkc,e,tp) end + if chk==0 then return e:GetHandler():IsDestructable() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c18634367.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c18634367.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c18634367.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()~=1 or not Duel.IsExistingMatchingCard(c18634367.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and Duel.Destroy(c,REASON_EFFECT)~=0 and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c18698739.lua b/script/c18698739.lua index ebb9f3a1..7ec6575f 100644 --- a/script/c18698739.lua +++ b/script/c18698739.lua @@ -1,32 +1,32 @@ ---ガーベージ・オーガ -function c18698739.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(18698739,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,18698739) - e1:SetCost(c18698739.cost) - e1:SetTarget(c18698739.target) - e1:SetOperation(c18698739.operation) - c:RegisterEffect(e1) -end -function c18698739.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c18698739.filter(c) - return c:IsCode(44682448) and c:IsAbleToHand() -end -function c18698739.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c18698739.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c18698739.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=Duel.GetFirstMatchingCard(c18698739.filter,tp,LOCATION_DECK,0,nil) - if tc then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--ガーベージ・オーガ +function c18698739.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(18698739,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,18698739) + e1:SetCost(c18698739.cost) + e1:SetTarget(c18698739.target) + e1:SetOperation(c18698739.operation) + c:RegisterEffect(e1) +end +function c18698739.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c18698739.filter(c) + return c:IsCode(44682448) and c:IsAbleToHand() +end +function c18698739.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c18698739.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c18698739.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstMatchingCard(c18698739.filter,tp,LOCATION_DECK,0,nil) + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c18716735.lua b/script/c18716735.lua index d482fab1..1841787a 100644 --- a/script/c18716735.lua +++ b/script/c18716735.lua @@ -15,7 +15,7 @@ function c18716735.initial_effect(c) c:RegisterEffect(e1) --to hand local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(18716735,0)) + e2:SetDescription(aux.Stringid(18716735,1)) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetProperty(EFFECT_FLAG_DELAY) e2:SetCode(EVENT_DESTROYED) diff --git a/script/c18803791.lua b/script/c18803791.lua index fa707896..39b2e26f 100644 --- a/script/c18803791.lua +++ b/script/c18803791.lua @@ -1,33 +1,33 @@ ---黒竜降臨 -function c18803791.initial_effect(c) - aux.AddRitualProcGreaterCode(c,71408082) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCondition(aux.exccon) - e1:SetCost(c18803791.thcost) - e1:SetTarget(c18803791.thtg) - e1:SetOperation(c18803791.thop) - c:RegisterEffect(e1) -end -function c18803791.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c18803791.thfilter(c) - return c:IsSetCard(0x3b) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c18803791.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c18803791.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c18803791.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c18803791.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--黒竜降臨 +function c18803791.initial_effect(c) + aux.AddRitualProcGreaterCode(c,71408082) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(aux.exccon) + e1:SetCost(c18803791.thcost) + e1:SetTarget(c18803791.thtg) + e1:SetOperation(c18803791.thop) + c:RegisterEffect(e1) +end +function c18803791.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c18803791.thfilter(c) + return c:IsSetCard(0x3b) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c18803791.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c18803791.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c18803791.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c18803791.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c18937875.lua b/script/c18937875.lua index 6bc5aa66..774db4dc 100644 --- a/script/c18937875.lua +++ b/script/c18937875.lua @@ -1,5 +1,6 @@ --灼熱の槍 function c18937875.initial_effect(c) + aux.AddEquipProcedure(c,PLAYER_ALL.c18937875.filter) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_EQUIP) @@ -29,22 +30,6 @@ function c18937875.initial_effect(c) e4:SetValue(c18937875.eqlimit) c:RegisterEffect(e4) end -function c18937875.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_FIRE) -end function c18937875.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_FIRE) -end -function c18937875.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c18937875.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c18937875.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c18937875.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c18937875.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 + return c:IsAttribute(ATTRIBUTE_FIRE) end diff --git a/script/c18963306.lua b/script/c18963306.lua index 82d54c73..b5bd7475 100644 --- a/script/c18963306.lua +++ b/script/c18963306.lua @@ -8,7 +8,7 @@ function c18963306.initial_effect(c) e1:SetCategory(CATEGORY_CONTROL) e1:SetDescription(aux.Stringid(18963306,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c18963306.cost) diff --git a/script/c19019586.lua b/script/c19019586.lua index f1f29d94..90f9e0d8 100644 --- a/script/c19019586.lua +++ b/script/c19019586.lua @@ -1,57 +1,57 @@ ---ジェムエレファント -function c19019586.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetDescription(aux.Stringid(19019586,0)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c19019586.thtg) - e1:SetOperation(c19019586.thop) - c:RegisterEffect(e1) - --defup - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(19019586,1)) - e2:SetCategory(CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c19019586.defcon) - e2:SetCost(c19019586.defcost) - e2:SetOperation(c19019586.defop) - c:RegisterEffect(e2) -end -function c19019586.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c19019586.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end -function c19019586.cfilter(c) - return c:IsType(TYPE_NORMAL) and c:IsAbleToGraveAsCost() -end -function c19019586.defcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c==Duel.GetAttacker() or c==Duel.GetAttackTarget() -end -function c19019586.defcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(19019586)==0 - and Duel.IsExistingMatchingCard(c19019586.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c19019586.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) - e:GetHandler():RegisterFlagEffect(19019586,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) -end -function c19019586.defop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_DEFENSE) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(1000) - c:RegisterEffect(e1) -end +--ジェムエレファント +function c19019586.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetDescription(aux.Stringid(19019586,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c19019586.thtg) + e1:SetOperation(c19019586.thop) + c:RegisterEffect(e1) + --defup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(19019586,1)) + e2:SetCategory(CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c19019586.defcon) + e2:SetCost(c19019586.defcost) + e2:SetOperation(c19019586.defop) + c:RegisterEffect(e2) +end +function c19019586.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c19019586.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end +function c19019586.cfilter(c) + return c:IsType(TYPE_NORMAL) and c:IsAbleToGraveAsCost() +end +function c19019586.defcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c==Duel.GetAttacker() or c==Duel.GetAttackTarget() +end +function c19019586.defcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(19019586)==0 + and Duel.IsExistingMatchingCard(c19019586.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c19019586.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + e:GetHandler():RegisterFlagEffect(19019586,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c19019586.defop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(1000) + c:RegisterEffect(e1) +end diff --git a/script/c19086954.lua b/script/c19086954.lua index 2b900b34..9ac4e9e9 100644 --- a/script/c19086954.lua +++ b/script/c19086954.lua @@ -16,7 +16,7 @@ function c19086954.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c19086954.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c19086954.sptg) e2:SetOperation(c19086954.spop) c:RegisterEffect(e2) @@ -27,7 +27,7 @@ function c19086954.initial_effect(c) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_SZONE) e3:SetCountLimit(1) - e3:SetCondition(c19086954.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetTarget(c19086954.postg) e3:SetOperation(c19086954.posop) c:RegisterEffect(e3) @@ -36,7 +36,7 @@ function c19086954.initial_effect(c) e5:SetType(EFFECT_TYPE_EQUIP) e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e5:SetCondition(c19086954.uncon) + e5:SetCondition(aux.IsUnionState) e5:SetValue(c19086954.repval) c:RegisterEffect(e5) --eqlimit @@ -47,9 +47,7 @@ function c19086954.initial_effect(c) e6:SetValue(c19086954.eqlimit) c:RegisterEffect(e6) end -function c19086954.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c19086954.old_union=true function c19086954.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -77,7 +75,7 @@ function c19086954.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c19086954.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(19086954)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c19113101.lua b/script/c19113101.lua index a2ae5c05..1f59a7e7 100644 --- a/script/c19113101.lua +++ b/script/c19113101.lua @@ -1,38 +1,38 @@ ---プリベントマト -function c19113101.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(19113101,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_GRAVE) - e1:SetCondition(c19113101.condition) - e1:SetCost(c19113101.cost) - e1:SetOperation(c19113101.operation) - c:RegisterEffect(e1) -end -function c19113101.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c19113101.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c19113101.operation(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(c19113101.damval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end -function c19113101.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 - else return val end -end +--プリベントマト +function c19113101.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(19113101,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c19113101.condition) + e1:SetCost(c19113101.cost) + e1:SetOperation(c19113101.operation) + c:RegisterEffect(e1) +end +function c19113101.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c19113101.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c19113101.operation(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(c19113101.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c19113101.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end diff --git a/script/c19159413.lua b/script/c19159413.lua index ace7b2df..5ec0c55f 100644 --- a/script/c19159413.lua +++ b/script/c19159413.lua @@ -1,31 +1,31 @@ ---魔法除去 -function c19159413.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c19159413.target) - e1:SetOperation(c19159413.activate) - c:RegisterEffect(e1) -end -function c19159413.filter(c) - return c:IsFacedown() or c:IsType(TYPE_SPELL) -end -function c19159413.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c19159413.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c19159413.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c19159413.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) - if g:GetFirst():IsFaceup() then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - end -end -function c19159413.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - if tc:IsFacedown() then Duel.ConfirmCards(tp,tc) end - if tc:IsType(TYPE_SPELL) then Duel.Destroy(tc,REASON_EFFECT) end - end -end +--魔法除去 +function c19159413.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c19159413.target) + e1:SetOperation(c19159413.activate) + c:RegisterEffect(e1) +end +function c19159413.filter(c) + return c:IsFacedown() or c:IsType(TYPE_SPELL) +end +function c19159413.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c19159413.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c19159413.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c19159413.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) + if g:GetFirst():IsFaceup() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + end +end +function c19159413.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if tc:IsFacedown() then Duel.ConfirmCards(tp,tc) end + if tc:IsType(TYPE_SPELL) then Duel.Destroy(tc,REASON_EFFECT) end + end +end diff --git a/script/c19163116.lua b/script/c19163116.lua index 3c5e0047..5377e288 100644 --- a/script/c19163116.lua +++ b/script/c19163116.lua @@ -1,35 +1,35 @@ ---ジェムナイト・オブシディア -function c19163116.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(19163116,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c19163116.spcon) - e1:SetTarget(c19163116.sptg) - e1:SetOperation(c19163116.spop) - c:RegisterEffect(e1) -end -function c19163116.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetPreviousLocation()==LOCATION_HAND -end -function c19163116.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c19163116.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c19163116.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c19163116.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c19163116.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c19163116.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ジェムナイト・オブシディア +function c19163116.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(19163116,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c19163116.spcon) + e1:SetTarget(c19163116.sptg) + e1:SetOperation(c19163116.spop) + c:RegisterEffect(e1) +end +function c19163116.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_HAND +end +function c19163116.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c19163116.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c19163116.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c19163116.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c19163116.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c19163116.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c19182751.lua b/script/c19182751.lua index 24778985..c7a53073 100644 --- a/script/c19182751.lua +++ b/script/c19182751.lua @@ -1,38 +1,38 @@ ---ジェネクス・ニュートロン -function c19182751.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c19182751.regop) - c:RegisterEffect(e1) -end -function c19182751.regop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(19182751,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetTarget(c19182751.target) - e1:SetOperation(c19182751.operation) - e1:SetReset(RESET_EVENT+0x16c0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c19182751.filter(c) - return c:IsRace(RACE_MACHINE) and c:IsType(TYPE_TUNER) and c:IsAbleToHand() -end -function c19182751.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c19182751.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c19182751.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c19182751.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ジェネクス・ニュートロン +function c19182751.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c19182751.regop) + c:RegisterEffect(e1) +end +function c19182751.regop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(19182751,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetTarget(c19182751.target) + e1:SetOperation(c19182751.operation) + e1:SetReset(RESET_EVENT+0x16c0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c19182751.filter(c) + return c:IsRace(RACE_MACHINE) and c:IsType(TYPE_TUNER) and c:IsAbleToHand() +end +function c19182751.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c19182751.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c19182751.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c19182751.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c19252988.lua b/script/c19252988.lua index fa903792..840094c4 100644 --- a/script/c19252988.lua +++ b/script/c19252988.lua @@ -23,8 +23,7 @@ function c19252988.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c19252988.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c19261966.lua b/script/c19261966.lua index 55c356fc..ca107781 100644 --- a/script/c19261966.lua +++ b/script/c19261966.lua @@ -38,111 +38,92 @@ function c19261966.initial_effect(c) c:RegisterEffect(e4) end function c19261966.ffilter1(c) - return c:IsFusionSetCard(0x9d) + return (c:IsFusionSetCard(0x9d) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end -function c19261966.ffilter2(c) - return c:IsAttribute(ATTRIBUTE_WATER) or c:IsHasEffect(4904633) +function c19261966.ffilter2(c,fc) + if c:IsHasEffect(6205579) then return false end + if c:IsHasEffect(511002961) then return true end + return (c:IsFusionAttribute(ATTRIBUTE_WATER) or c:IsHasEffect(4904633)) and not c:IsHasEffect(6205579) end function c19261966.exfilter(c,g) return c:IsFaceup() and c:IsCanBeFusionMaterial() and not g:IsContains(c) end +function c19261966.check1(c,mg,sg,chkf) + local g=mg:Clone() + if sg:IsContains(c) then g:Sub(sg) end + return g:IsExists(c19261966.check2,1,c,c,chkf) +end +function c19261966.check2(c,c2,chkf) + local g=Group.FromCards(c,c2) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=g:GetFirst() + while tc do + if c19261966.ffilter1(tc) or tc:IsHasEffect(511002961) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + if c19261966.ffilter2(tc) or tc:IsHasEffect(511002961) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + tc=g:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) + else return g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) end +end function c19261966.fuscon(e,g,gc,chkf) if g==nil then return true end + local chkf=bit.band(chkf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local sg=Group.CreateGroup() + local c=e:GetHandler() local tp=e:GetHandlerPlayer() local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - local exg=Group.CreateGroup() if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then - local sg=Duel.GetMatchingGroup(c19261966.exfilter,tp,0,LOCATION_MZONE,nil,g) - exg:Merge(sg) + sg=Duel.GetMatchingGroup(c19261966.exfilter,tp,0,LOCATION_MZONE,nil,g) + mg:Merge(sg) end - if gc then return (c19261966.ffilter1(gc) and (g:IsExists(c19261966.ffilter2,1,gc) or exg:IsExists(c19261966.ffilter2,1,gc))) - or (c19261966.ffilter2(gc) and (g:IsExists(c19261966.ffilter1,1,gc) or exg:IsExists(c19261966.ffilter1,1,gc))) end - local g1=Group.CreateGroup() - local g2=Group.CreateGroup() - local g3=Group.CreateGroup() - local g4=Group.CreateGroup() - local tc=g:GetFirst() - while tc do - if c19261966.ffilter1(tc) then - g1:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g3:AddCard(tc) end - end - if c19261966.ffilter2(tc) then - g2:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g4:AddCard(tc) end - end - tc=g:GetNext() - end - local exg1=exg:Filter(c19261966.ffilter1,nil) - local exg2=exg:Filter(c19261966.ffilter2,nil) - if chkf~=PLAYER_NONE then - return (g3:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g3:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g4:IsExists(aux.FConditionFilterF2,1,nil,g1) - or g4:IsExists(aux.FConditionFilterF2,1,nil,exg1)) - else - return (g1:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g1:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g2:IsExists(aux.FConditionFilterF2,1,nil,exg1)) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return c19261966.check1(gc,mg,sg,chkf) end + return mg:IsExists(c19261966.check1,1,nil,mg,sg,chkf) end function c19261966.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local c=e:GetHandler() local exg=Group.CreateGroup() + local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local p=tp + local sfhchk=false if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then local sg=Duel.GetMatchingGroup(c19261966.exfilter,tp,0,LOCATION_MZONE,nil,eg) exg:Merge(sg) + mg:Merge(sg) + end + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end end if gc then - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c19261966.ffilter1(gc) then - sg1:Merge(eg:Filter(c19261966.ffilter2,gc)) - sg2:Merge(exg:Filter(c19261966.ffilter2,gc)) - end - if c19261966.ffilter2(gc) then - sg1:Merge(eg:Filter(c19261966.ffilter1,gc)) - sg2:Merge(exg:Filter(c19261966.ffilter1,gc)) - end - local g1=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c19261966.check2,1,1,gc,gc,chkf) + local tc1=g1:GetFirst() + if c19261966.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg1:Select(tp,1,1,nil) end + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - local sg=eg:Filter(aux.FConditionFilterF2c,nil,c19261966.ffilter1,c19261966.ffilter2) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then - g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c19261966.check1,1,1,nil,mg,exg,chkf) local tc1=g1:GetFirst() - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c19261966.ffilter1(tc1) then - sg1:Merge(sg:Filter(c19261966.ffilter2,tc1)) - sg2:Merge(exg:Filter(c19261966.ffilter2,tc1)) - end - if c19261966.ffilter2(tc1) then - sg1:Merge(sg:Filter(c19261966.ffilter1,tc1)) - sg2:Merge(exg:Filter(c19261966.ffilter1,tc1)) - end - local g2=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + if c19261966.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg1:Select(tp,1,1,nil) + mg:Sub(exg) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,c19261966.check2,1,1,tc1,tc1,chkf) + if c19261966.exfilter(g2:GetFirst(),eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) end g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end function c19261966.splimit(e,se,sp,st) diff --git a/script/c19302550.lua b/script/c19302550.lua index e49d0292..0c68a154 100644 --- a/script/c19302550.lua +++ b/script/c19302550.lua @@ -36,12 +36,12 @@ function c19302550.splimit(e,c,sump,sumtype,sumpos,targetp) return not c:IsSetCard(0xaf) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM end function c19302550.discon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsChainNegatable(ev) and re:IsActiveType(TYPE_TRAP) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():GetFlagEffect(19302550)==0 + return Duel.IsChainDisablable(ev) and re:IsActiveType(TYPE_TRAP) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():GetFlagEffect(19302550)==0 end function c19302550.disop(e,tp,eg,ep,ev,re,r,rp) if not Duel.SelectYesNo(tp,aux.Stringid(19302550,1)) then return end e:GetHandler():RegisterFlagEffect(19302550,RESET_EVENT+0x1fe0000,0,1) - Duel.NegateEffect(ev) + if not Duel.NegateEffect(ev) then return end Duel.BreakEffect() Duel.Destroy(e:GetHandler(),REASON_EFFECT) end diff --git a/script/c19327348.lua b/script/c19327348.lua index 5a6fd453..588b7501 100644 --- a/script/c19327348.lua +++ b/script/c19327348.lua @@ -1,46 +1,46 @@ ---闇霊使いダルク -function c19327348.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(19327348,0)) - e1:SetCategory(CATEGORY_CONTROL) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetTarget(c19327348.target) - e1:SetOperation(c19327348.operation) - c:RegisterEffect(e1) -end -function c19327348.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and c:IsControlerCanBeChanged() -end -function c19327348.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c19327348.filter(chkc) end - if chk==0 then return true end - if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c19327348.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) - end -end -function c19327348.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c19327348.filter(tc) then - c:SetCardTarget(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_CONTROL) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(tp) - e1:SetLabel(0) - e1:SetReset(RESET_EVENT+0x1fc0000) - e1:SetCondition(c19327348.ctcon) - tc:RegisterEffect(e1) - end -end -function c19327348.ctcon(e) - local c=e:GetOwner() - local h=e:GetHandler() - return h:IsAttribute(ATTRIBUTE_DARK) and c:IsHasCardTarget(h) -end +--闇霊使いダルク +function c19327348.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(19327348,0)) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c19327348.target) + e1:SetOperation(c19327348.operation) + c:RegisterEffect(e1) +end +function c19327348.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and c:IsControlerCanBeChanged() +end +function c19327348.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c19327348.filter(chkc) end + if chk==0 then return true end + if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c19327348.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) + end +end +function c19327348.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c19327348.filter(tc) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(tp) + e1:SetLabel(0) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetCondition(c19327348.ctcon) + tc:RegisterEffect(e1) + end +end +function c19327348.ctcon(e) + local c=e:GetOwner() + local h=e:GetHandler() + return h:IsAttribute(ATTRIBUTE_DARK) and c:IsHasCardTarget(h) +end diff --git a/script/c19333131.lua b/script/c19333131.lua index ae694cb2..5e37e2c7 100644 --- a/script/c19333131.lua +++ b/script/c19333131.lua @@ -3,11 +3,12 @@ function c19333131.initial_effect(c) --xyz summon aux.AddXyzProcedure(c,nil,5,2) c:EnableReviveLimit() - --attack up + --Negate destruction local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(19333131,0)) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c19333131.cost) diff --git a/script/c19337371.lua b/script/c19337371.lua index cdd8f0e7..5ca1307d 100644 --- a/script/c19337371.lua +++ b/script/c19337371.lua @@ -39,8 +39,8 @@ end function c19337371.activate(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c19337371.filter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c19337371.filter),tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c19355597.lua b/script/c19355597.lua index 26cc7095..bbc8cf5f 100644 --- a/script/c19355597.lua +++ b/script/c19355597.lua @@ -1,48 +1,48 @@ ---ジェムナイトレディ・ブリリアント・ダイヤ -function c19355597.initial_effect(c) - c:SetSPSummonOnce(19355597) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),3,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c19355597.splimit) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c19355597.sptg) - e2:SetOperation(c19355597.spop) - c:RegisterEffect(e2) -end -function c19355597.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c19355597.tgfilter(c) - return c:IsFaceup() and c:IsSetCard(0x1047) -end -function c19355597.spfilter(c,e,tp) - return c:IsSetCard(0x1047) and c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c19355597.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c19355597.tgfilter,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingMatchingCard(c19355597.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c19355597.spop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local tg=Duel.SelectMatchingCard(tp,c19355597.tgfilter,tp,LOCATION_MZONE,0,1,1,nil) - local tc=tg:GetFirst() - if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c19355597.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) - Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) - end -end +--ジェムナイトレディ・ブリリアント・ダイヤ +function c19355597.initial_effect(c) + c:SetSPSummonOnce(19355597) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),3,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c19355597.splimit) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c19355597.sptg) + e2:SetOperation(c19355597.spop) + c:RegisterEffect(e2) +end +function c19355597.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c19355597.tgfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1047) +end +function c19355597.spfilter(c,e,tp) + return c:IsSetCard(0x1047) and c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c19355597.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c19355597.tgfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c19355597.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c19355597.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tg=Duel.SelectMatchingCard(tp,c19355597.tgfilter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=tg:GetFirst() + if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c19355597.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c19384334.lua b/script/c19384334.lua index 35726896..563bdf15 100644 --- a/script/c19384334.lua +++ b/script/c19384334.lua @@ -1,22 +1,22 @@ ---バーニングブラッド -function c19384334.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_FIRE)) - e2:SetValue(500) - c:RegisterEffect(e2) - --Def down - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(-400) - c:RegisterEffect(e3) -end +--バーニングブラッド +function c19384334.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_FIRE)) + e2:SetValue(500) + c:RegisterEffect(e2) + --Def down + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(-400) + c:RegisterEffect(e3) +end diff --git a/script/c19394153.lua b/script/c19394153.lua index bdb7f035..5571f66c 100644 --- a/script/c19394153.lua +++ b/script/c19394153.lua @@ -1,55 +1,55 @@ ---フェザー・ショット -function c19394153.initial_effect(c) - --multi atk - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c19394153.condition) - e1:SetTarget(c19394153.target) - e1:SetOperation(c19394153.operation) - c:RegisterEffect(e1) -end -function c19394153.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c19394153.filter(c) - return c:IsFaceup() and c:IsCode(21844576) -end -function c19394153.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c19394153.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c19394153.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c19394153.filter,tp,LOCATION_MZONE,0,1,1,nil) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_OATH) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c19394153.ftarget) - e1:SetLabel(g:GetFirst():GetFieldID()) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c19394153.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) - if ct>1 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(ct-1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end - end -end -function c19394153.ftarget(e,c) - return e:GetLabel()~=c:GetFieldID() -end +--フェザー・ショット +function c19394153.initial_effect(c) + --multi atk + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c19394153.condition) + e1:SetTarget(c19394153.target) + e1:SetOperation(c19394153.operation) + c:RegisterEffect(e1) +end +function c19394153.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c19394153.filter(c) + return c:IsFaceup() and c:IsCode(21844576) +end +function c19394153.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c19394153.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c19394153.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c19394153.filter,tp,LOCATION_MZONE,0,1,1,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c19394153.ftarget) + e1:SetLabel(g:GetFirst():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c19394153.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + if ct>1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(ct-1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end + end +end +function c19394153.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end diff --git a/script/c19406822.lua b/script/c19406822.lua index cd2f1826..d9301f94 100644 --- a/script/c19406822.lua +++ b/script/c19406822.lua @@ -1,41 +1,41 @@ ---コトダマ -function c19406822.initial_effect(c) - --adjust - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ADJUST) - e1:SetRange(LOCATION_MZONE) - e1:SetOperation(c19406822.adjustop) - c:RegisterEffect(e1) - local g=Group.CreateGroup() - g:KeepAlive() - e1:SetLabelObject(g) -end -function c19406822.filter(c,g,pg) - if pg:IsContains(c) then return false end - local code=c:GetCode() - return g:IsExists(Card.IsCode,1,c,code) or pg:IsExists(Card.IsCode,1,c,code) -end -function c19406822.adjustop(e,tp,eg,ep,ev,re,r,rp) - local phase=Duel.GetCurrentPhase() - if (phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()) or phase==PHASE_DAMAGE_CAL then return end - local c=e:GetHandler() - local pg=e:GetLabelObject() - if c:GetFlagEffect(19406822)==0 then - c:RegisterFlagEffect(19406822,RESET_EVENT+0x1ff0000,0,1) - pg:Clear() - end - local g=Duel.GetMatchingGroup(Card.IsFaceup,0,LOCATION_MZONE,LOCATION_MZONE,nil) - local dg=g:Filter(c19406822.filter,nil,g,e:GetLabelObject()) - if dg:GetCount()==0 or Duel.Destroy(dg,REASON_EFFECT)==0 then - pg:Clear() - pg:Merge(g) - pg:Sub(dg) - else - g=Duel.GetMatchingGroup(Card.IsFaceup,0,LOCATION_MZONE,LOCATION_MZONE,nil) - pg:Clear() - pg:Merge(g) - pg:Sub(dg) - Duel.Readjust() - end -end +--コトダマ +function c19406822.initial_effect(c) + --adjust + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c19406822.adjustop) + c:RegisterEffect(e1) + local g=Group.CreateGroup() + g:KeepAlive() + e1:SetLabelObject(g) +end +function c19406822.filter(c,g,pg) + if pg:IsContains(c) then return false end + local code=c:GetCode() + return g:IsExists(Card.IsCode,1,c,code) or pg:IsExists(Card.IsCode,1,c,code) +end +function c19406822.adjustop(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()) or phase==PHASE_DAMAGE_CAL then return end + local c=e:GetHandler() + local pg=e:GetLabelObject() + if c:GetFlagEffect(19406822)==0 then + c:RegisterFlagEffect(19406822,RESET_EVENT+0x1ff0000,0,1) + pg:Clear() + end + local g=Duel.GetMatchingGroup(Card.IsFaceup,0,LOCATION_MZONE,LOCATION_MZONE,nil) + local dg=g:Filter(c19406822.filter,nil,g,e:GetLabelObject()) + if dg:GetCount()==0 or Duel.Destroy(dg,REASON_EFFECT)==0 then + pg:Clear() + pg:Merge(g) + pg:Sub(dg) + else + g=Duel.GetMatchingGroup(Card.IsFaceup,0,LOCATION_MZONE,LOCATION_MZONE,nil) + pg:Clear() + pg:Merge(g) + pg:Sub(dg) + Duel.Readjust() + end +end diff --git a/script/c19439119.lua b/script/c19439119.lua index 0a73f799..d03fa353 100644 --- a/script/c19439119.lua +++ b/script/c19439119.lua @@ -1,33 +1,33 @@ ---魔轟神クルス -function c19439119.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(19439119,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c19439119.spcon) - e1:SetTarget(c19439119.sptg) - e1:SetOperation(c19439119.spop) - c:RegisterEffect(e1) -end -function c19439119.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetPreviousLocation()==LOCATION_HAND and bit.band(r,REASON_DISCARD)~=0 -end -function c19439119.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsSetCard(0x35) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c19439119.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c19439119.filter(chkc,e,tp) and chkc~=e:GetHandler() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c19439119.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c19439119.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--魔轟神クルス +function c19439119.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(19439119,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c19439119.spcon) + e1:SetTarget(c19439119.sptg) + e1:SetOperation(c19439119.spop) + c:RegisterEffect(e1) +end +function c19439119.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_HAND and bit.band(r,REASON_DISCARD)~=0 +end +function c19439119.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x35) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c19439119.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c19439119.filter(chkc,e,tp) and chkc~=e:GetHandler() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c19439119.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c19439119.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c1945387.lua b/script/c1945387.lua index 16c45e35..79e97d31 100644 --- a/script/c1945387.lua +++ b/script/c1945387.lua @@ -1,34 +1,35 @@ ---E・HERO ノヴァマスター -function c1945387.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_FIRE),true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(1945387,0)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(aux.bdocon) - e2:SetTarget(c1945387.drtg) - e2:SetOperation(c1945387.drop) - c:RegisterEffect(e2) -end -function c1945387.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c1945387.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--E・HERO ノヴァマスター +function c1945387.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_FIRE),true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1945387,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(aux.bdocon) + e2:SetTarget(c1945387.drtg) + e2:SetOperation(c1945387.drop) + c:RegisterEffect(e2) +end +c1945387.material_setcode=0x8 +function c1945387.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c1945387.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c19462747.lua b/script/c19462747.lua index 60c19f52..561537d8 100644 --- a/script/c19462747.lua +++ b/script/c19462747.lua @@ -16,6 +16,7 @@ function c19462747.initial_effect(c) --to grave local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e3:SetCode(EVENT_TO_GRAVE) e3:SetOperation(c19462747.regop) c:RegisterEffect(e3) diff --git a/script/c19474136.lua b/script/c19474136.lua index 2031a65d..1d5faec8 100644 --- a/script/c19474136.lua +++ b/script/c19474136.lua @@ -1,5 +1,5 @@ ---マンドラゴン -function c19474136.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) -end +--マンドラゴン +function c19474136.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) +end diff --git a/script/c19502505.lua b/script/c19502505.lua index ce9b36e6..30bcab4d 100644 --- a/script/c19502505.lua +++ b/script/c19502505.lua @@ -61,7 +61,9 @@ function c19502505.negtg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) end function c19502505.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + Duel.SendtoGrave(eg,REASON_EFFECT) + end end function c19502505.thcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c19508728.lua b/script/c19508728.lua index 055f70e8..8c61eeb9 100644 --- a/script/c19508728.lua +++ b/script/c19508728.lua @@ -1,92 +1,64 @@ ---月鏡の盾 -function c19508728.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(c19508728.target) - e1:SetOperation(c19508728.activate) - 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) - --atk - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e3:SetRange(LOCATION_SZONE) - e3:SetCondition(c19508728.atkcon) - e3:SetOperation(c19508728.atkop) - c:RegisterEffect(e3) - --to deck - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_TODECK) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetCondition(c19508728.tdcon) - e4:SetCost(c19508728.tdcost) - e4:SetTarget(c19508728.tdtg) - e4:SetOperation(c19508728.tdop) - c:RegisterEffect(e4) -end -function c19508728.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 c19508728.activate(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 c19508728.atkcon(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetHandler():GetEquipTarget() - local tc=ec:GetBattleTarget() - return ec and tc and tc:IsFaceup() and tc:IsControler(1-tp) -end -function c19508728.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local ec=e:GetHandler():GetEquipTarget() - local tc=ec:GetBattleTarget() - if ec and tc and ec:IsFaceup() and tc:IsFaceup() then - local val=math.max(tc:GetAttack(),tc:GetDefense()) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(val+100) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) - ec:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - ec:RegisterEffect(e2) - end -end -function c19508728.tdcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c19508728.tdcost(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 c19508728.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local opt=Duel.SelectOption(tp,aux.Stringid(19508728,0),aux.Stringid(19508728,1)) - e:SetLabel(opt) - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c19508728.tdop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoDeck(e:GetHandler(),nil,e:GetLabel(),REASON_EFFECT) - end -end +--月鏡の盾 +function c19508728.initial_effect(c) + aux.AddEquipProcedure(c) + --atk + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c19508728.atkcon) + e3:SetOperation(c19508728.atkop) + c:RegisterEffect(e3) + --to deck + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TODECK) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c19508728.tdcon) + e4:SetCost(c19508728.tdcost) + e4:SetTarget(c19508728.tdtg) + e4:SetOperation(c19508728.tdop) + c:RegisterEffect(e4) +end +function c19508728.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + local tc=ec:GetBattleTarget() + return ec and tc and tc:IsFaceup() and tc:IsControler(1-tp) +end +function c19508728.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local ec=e:GetHandler():GetEquipTarget() + local tc=ec:GetBattleTarget() + if ec and tc and ec:IsFaceup() and tc:IsFaceup() then + local val=math.max(tc:GetAttack(),tc:GetDefense()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(val+100) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + ec:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + ec:RegisterEffect(e2) + end +end +function c19508728.tdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c19508728.tdcost(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 c19508728.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local opt=Duel.SelectOption(tp,aux.Stringid(19508728,0),aux.Stringid(19508728,1)) + e:SetLabel(opt) + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c19508728.tdop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoDeck(e:GetHandler(),nil,e:GetLabel(),REASON_EFFECT) + end +end diff --git a/script/c1953925.lua b/script/c1953925.lua index fdb997cc..58c5fa72 100644 --- a/script/c1953925.lua +++ b/script/c1953925.lua @@ -20,9 +20,13 @@ function c1953925.initial_effect(c) c:RegisterEffect(e3) --actlimit local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_ATTACK_ANNOUNCE) - e4:SetOperation(c1953925.atkop) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_ACTIVATE) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,1) + e4:SetValue(c1953925.aclimit) + e4:SetCondition(c1953925.actcon) c:RegisterEffect(e4) --destroy local e5=Effect.CreateEffect(c) @@ -46,27 +50,19 @@ function c1953925.disop(e,tp,eg,ep,ev,re,r,rp) if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if g and g:IsContains(e:GetHandler()) then - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then Duel.Destroy(rc,REASON_EFFECT) end end end -function c1953925.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c1953925.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end function c1953925.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c1953925.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end function c1953925.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler()==Duel.GetAttacker() and e:GetHandler():IsRelateToBattle() + return e:GetHandler()==Duel.GetAttacker() end function c1953925.filter(c) return c:IsType(TYPE_SPELL+TYPE_TRAP) diff --git a/script/c19578592.lua b/script/c19578592.lua index 9ec0fd69..c51f9971 100644 --- a/script/c19578592.lua +++ b/script/c19578592.lua @@ -1,14 +1,6 @@ --愚鈍の斧 function c19578592.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(c19578592.target) - e1:SetOperation(c19578592.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --atkup local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,13 +12,6 @@ function c19578592.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_DISABLE) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) --damage local e5=Effect.CreateEffect(c) e5:SetDescription(aux.Stringid(19578592,0)) @@ -40,19 +25,6 @@ function c19578592.initial_effect(c) e5:SetOperation(c19578592.damop) c:RegisterEffect(e5) end -function c19578592.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 c19578592.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 c19578592.damcon(e,tp,eg,ep,ev,re,r,rp) return tp==Duel.GetTurnPlayer() end diff --git a/script/c19580308.lua b/script/c19580308.lua index aff19567..ab774615 100644 --- a/script/c19580308.lua +++ b/script/c19580308.lua @@ -1,47 +1,47 @@ ---DDラミア -function c19580308.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(19580308,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e1:SetCountLimit(1,19580308) - e1:SetCost(c19580308.cost) - e1:SetTarget(c19580308.target) - e1:SetOperation(c19580308.operation) - c:RegisterEffect(e1) -end -function c19580308.cfilter(c) - return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and (c:IsSetCard(0xaf) or c:IsSetCard(0xae)) - and not c:IsCode(19580308) and c:IsAbleToGraveAsCost() -end -function c19580308.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local loc=LOCATION_HAND+LOCATION_ONFIELD - if Duel.GetLocationCount(tp,LOCATION_MZONE)==0 then loc=LOCATION_MZONE end - if chk==0 then return Duel.IsExistingMatchingCard(c19580308.cfilter,tp,loc,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c19580308.cfilter,tp,loc,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c19580308.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c19580308.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1,true) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--DDラミア +function c19580308.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(19580308,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetCountLimit(1,19580308) + e1:SetCost(c19580308.cost) + e1:SetTarget(c19580308.target) + e1:SetOperation(c19580308.operation) + c:RegisterEffect(e1) +end +function c19580308.cfilter(c) + return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and (c:IsSetCard(0xaf) or c:IsSetCard(0xae)) + and not c:IsCode(19580308) and c:IsAbleToGraveAsCost() +end +function c19580308.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local loc=LOCATION_HAND+LOCATION_ONFIELD + if Duel.GetLocationCount(tp,LOCATION_MZONE)==0 then loc=LOCATION_MZONE end + if chk==0 then return Duel.IsExistingMatchingCard(c19580308.cfilter,tp,loc,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c19580308.cfilter,tp,loc,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c19580308.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c19580308.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c19594506.lua b/script/c19594506.lua index f58f60c6..71ebb7f5 100644 --- a/script/c19594506.lua +++ b/script/c19594506.lua @@ -1,33 +1,33 @@ ---ネオスペース・コンダクター -function c19594506.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(19594506,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c19594506.cost) - e1:SetTarget(c19594506.target) - e1:SetOperation(c19594506.operation) - c:RegisterEffect(e1) -end -function c19594506.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c19594506.filter(c) - return c:IsCode(42015635) and c:IsAbleToHand() -end -function c19594506.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c19594506.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c19594506.operation(e,tp,eg,ep,ev,re,r,rp,chk) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local tc=Duel.SelectMatchingCard(tp,c19594506.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if tc and not tc:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--ネオスペース・コンダクター +function c19594506.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(19594506,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c19594506.cost) + e1:SetTarget(c19594506.target) + e1:SetOperation(c19594506.operation) + c:RegisterEffect(e1) +end +function c19594506.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c19594506.filter(c) + return c:IsCode(42015635) and c:IsAbleToHand() +end +function c19594506.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c19594506.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c19594506.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c19594506.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c19596712.lua b/script/c19596712.lua index ec48ea81..55cd55e5 100644 --- a/script/c19596712.lua +++ b/script/c19596712.lua @@ -1,27 +1,12 @@ --アビスケイル-ケートス function c19596712.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(c19596712.target) - e1:SetOperation(c19596712.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c19596712.filter) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(800) 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(c19596712.eqlimit) - c:RegisterEffect(e3) --negate local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -31,24 +16,8 @@ function c19596712.initial_effect(c) e4:SetOperation(c19596712.negop) c:RegisterEffect(e4) end -function c19596712.eqlimit(e,c) - return c:IsSetCard(0x74) -end function c19596712.filter(c) - return c:IsFaceup() and c:IsSetCard(0x74) -end -function c19596712.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c19596712.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c19596712.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c19596712.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c19596712.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 + return c:IsSetCard(0x74) end function c19596712.negcon(e,tp,eg,ep,ev,re,r,rp) return rp~=tp and Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)==LOCATION_SZONE diff --git a/script/c19684740.lua b/script/c19684740.lua index a2f84d5b..d076e7db 100644 --- a/script/c19684740.lua +++ b/script/c19684740.lua @@ -7,6 +7,7 @@ function c19684740.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(19684740,0)) e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c1969506.lua b/script/c1969506.lua index 893c03da..8a5eedd7 100644 --- a/script/c1969506.lua +++ b/script/c1969506.lua @@ -1,51 +1,50 @@ ---傀儡儀式-パペット・リチューアル -function c1969506.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,1969506+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c1969506.spcon) - e1:SetCost(c1969506.spcost) - e1:SetTarget(c1969506.sptg) - e1:SetOperation(c1969506.spop) - c:RegisterEffect(e1) -end -function c1969506.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetLP(tp)<=Duel.GetLP(1-tp)-2000 -end -function c1969506.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c1969506.filter(c,e,tp) - return c:IsSetCard(0x83) and c:GetLevel()==8 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c1969506.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c1969506.filter(chkc,e,tp) end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c1969506.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c1969506.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) -end -function c1969506.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if sg:GetCount()==0 then return end - if ft>=sg:GetCount() then - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - end -end +--傀儡儀式-パペット・リチューアル +function c1969506.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,1969506+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c1969506.spcon) + e1:SetCost(c1969506.spcost) + e1:SetTarget(c1969506.sptg) + e1:SetOperation(c1969506.spop) + c:RegisterEffect(e1) +end +function c1969506.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=Duel.GetLP(1-tp)-2000 +end +function c1969506.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c1969506.filter(c,e,tp) + return c:IsSetCard(0x83) and c:GetLevel()==8 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c1969506.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c1969506.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c1969506.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c1969506.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c1969506.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()==0 or (sg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if ft>=sg:GetCount() then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c19700943.lua b/script/c19700943.lua index 08a9dbf8..cd40a6b4 100644 --- a/script/c19700943.lua +++ b/script/c19700943.lua @@ -13,7 +13,7 @@ function c19700943.initial_effect(c) e2:SetOperation(c19700943.atkop) c:RegisterEffect(e2) end -function c19700943.sumcon(e,c) +function c19700943.sumcon(e,c,minc) if not c then return true end return false end diff --git a/script/c19747827.lua b/script/c19747827.lua index 686c6798..dd8e881d 100644 --- a/script/c19747827.lua +++ b/script/c19747827.lua @@ -1,69 +1,69 @@ ---真紅眼の黒竜剣 -function c19747827.initial_effect(c) - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --equip - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_EQUIP) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetTarget(c19747827.eqtg) - e2:SetOperation(c19747827.eqop) - c:RegisterEffect(e2) -end -c19747827.material_race=RACE_DRAGON -function c19747827.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc~=e:GetHandler() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) -end -function c19747827.eqop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc then return end - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsLocation(LOCATION_SZONE) or c:IsFacedown() then return end - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c19747827.eqlimit) - e1:SetLabelObject(tc) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(1000) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c19747827.atkval) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) -end -function c19747827.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c19747827.cfilter(c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) -end -function c19747827.atkval(e,c) - return Duel.GetMatchingGroupCount(c19747827.cfilter,0,LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,nil)*500 -end +--真紅眼の黒竜剣 +function c19747827.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c19747827.eqtg) + e2:SetOperation(c19747827.eqop) + c:RegisterEffect(e2) +end +c19747827.material_race=RACE_DRAGON +function c19747827.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc~=e:GetHandler() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) +end +function c19747827.eqop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsLocation(LOCATION_SZONE) or c:IsFacedown() then return end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c19747827.eqlimit) + e1:SetLabelObject(tc) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1000) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c19747827.atkval) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) +end +function c19747827.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c19747827.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c19747827.atkval(e,c) + return Duel.GetMatchingGroupCount(c19747827.cfilter,0,LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,nil)*500 +end diff --git a/script/c19808608.lua b/script/c19808608.lua index 18fcb258..36b27cd7 100644 --- a/script/c19808608.lua +++ b/script/c19808608.lua @@ -1,53 +1,53 @@ ---DDバフォメット -function c19808608.initial_effect(c) - --lv change - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c19808608.lvtg) - e1:SetOperation(c19808608.lvop) - c:RegisterEffect(e1) -end -function c19808608.filter(c) - return c:IsFaceup() and c:IsSetCard(0xaf) and not c:IsCode(19808608) and c:GetLevel()>0 -end -function c19808608.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c19808608.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c19808608.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c19808608.filter,tp,LOCATION_MZONE,0,1,1,nil) - local t={} - local i=1 - local p=1 - local lv=g:GetFirst():GetLevel() - for i=1,8 do - if lv~=i then t[p]=i p=p+1 end - end - t[p]=nil - Duel.Hint(HINT_SELECTMSG,tp,567) - e:SetLabel(Duel.AnnounceNumber(tp,table.unpack(t))) -end -function c19808608.lvop(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_CHANGE_LEVEL) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,0) - e2:SetTarget(c19808608.splimit) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end -function c19808608.splimit(e,c) - return not c:IsSetCard(0xaf) -end +--DDバフォメット +function c19808608.initial_effect(c) + --lv change + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c19808608.lvtg) + e1:SetOperation(c19808608.lvop) + c:RegisterEffect(e1) +end +function c19808608.filter(c) + return c:IsFaceup() and c:IsSetCard(0xaf) and not c:IsCode(19808608) and c:GetLevel()>0 +end +function c19808608.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c19808608.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c19808608.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c19808608.filter,tp,LOCATION_MZONE,0,1,1,nil) + local t={} + local i=1 + local p=1 + local lv=g:GetFirst():GetLevel() + for i=1,8 do + if lv~=i then t[p]=i p=p+1 end + end + t[p]=nil + Duel.Hint(HINT_SELECTMSG,tp,567) + e:SetLabel(Duel.AnnounceNumber(tp,table.unpack(t))) +end +function c19808608.lvop(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_CHANGE_LEVEL) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetTarget(c19808608.splimit) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c19808608.splimit(e,c) + return not c:IsSetCard(0xaf) +end diff --git a/script/c19814508.lua b/script/c19814508.lua index b1a821a8..0af9a4c6 100644 --- a/script/c19814508.lua +++ b/script/c19814508.lua @@ -1,70 +1,70 @@ ---U.A.スタジアム -function c19814508.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(19814508,0)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetTarget(c19814508.target) - e2:SetOperation(c19814508.operation) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(19814508,1)) - e3:SetCategory(CATEGORY_ATKCHANGE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetRange(LOCATION_FZONE) - e3:SetCountLimit(1) - e3:SetCondition(c19814508.atkcon) - e3:SetOperation(c19814508.atkop) - c:RegisterEffect(e3) -end -function c19814508.filter(c) - return c:IsSetCard(0xb2) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c19814508.target(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=eg:GetFirst() - if chk==0 then return tc:IsSetCard(0xb2) and tc:IsControler(tp) - and Duel.IsExistingMatchingCard(c19814508.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c19814508.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c19814508.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c19814508.cfilter(c,tp) - return c:IsFaceup() and c:IsSetCard(0xb2) and c:IsControler(tp) -end -function c19814508.atkcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c19814508.cfilter,1,nil,tp) -end -function c19814508.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetReset(RESET_EVENT+0x1fe0000) - e3:SetValue(500) - tc:RegisterEffect(e3) - tc=g:GetNext() - end -end +--U.A.スタジアム +function c19814508.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(19814508,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c19814508.target) + e2:SetOperation(c19814508.operation) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(19814508,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1) + e3:SetCondition(c19814508.atkcon) + e3:SetOperation(c19814508.atkop) + c:RegisterEffect(e3) +end +function c19814508.filter(c) + return c:IsSetCard(0xb2) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c19814508.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return tc:IsSetCard(0xb2) and tc:IsControler(tp) + and Duel.IsExistingMatchingCard(c19814508.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c19814508.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c19814508.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c19814508.cfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xb2) and c:IsControler(tp) +end +function c19814508.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c19814508.cfilter,1,nil,tp) +end +function c19814508.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(500) + tc:RegisterEffect(e3) + tc=g:GetNext() + end +end diff --git a/script/c19870120.lua b/script/c19870120.lua index 323d8bb9..d2287600 100644 --- a/script/c19870120.lua +++ b/script/c19870120.lua @@ -18,7 +18,7 @@ function c19870120.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD) e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE) e3:SetRange(LOCATION_SZONE) e3:SetTargetRange(LOCATION_MZONE,0) e3:SetTarget(c19870120.target) diff --git a/script/c19891310.lua b/script/c19891310.lua index 97beadf5..b76f91fe 100644 --- a/script/c19891310.lua +++ b/script/c19891310.lua @@ -8,6 +8,7 @@ function c19891310.initial_effect(c) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c19891310.condition) e1:SetCost(c19891310.cost) diff --git a/script/c1992816.lua b/script/c1992816.lua index 5e87bf9d..8329bbaa 100644 --- a/script/c1992816.lua +++ b/script/c1992816.lua @@ -26,8 +26,9 @@ function c1992816.initial_effect(c) c:RegisterEffect(e2) --direct attack local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(1992816,0)) + e3:SetDescription(aux.Stringid(1992816,2)) e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1) e3:SetCondition(c1992816.dacon) diff --git a/script/c1995985.lua b/script/c1995985.lua index c1a80ac9..51d707c0 100644 --- a/script/c1995985.lua +++ b/script/c1995985.lua @@ -1,72 +1,72 @@ ---サイレント・ソードマン LV3 -function c1995985.initial_effect(c) - --disable effect - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_CHAIN_SOLVING) - e1:SetRange(LOCATION_MZONE) - e1:SetOperation(c1995985.disop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(1995985,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCondition(c1995985.spcon) - e2:SetCost(c1995985.spcost) - e2:SetTarget(c1995985.sptg) - e2:SetOperation(c1995985.spop) - c:RegisterEffect(e2) - --reg - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetOperation(c1995985.regop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EVENT_FLIP) - c:RegisterEffect(e5) -end -c1995985.lvupcount=1 -c1995985.lvup={74388798} -function c1995985.disop(e,tp,eg,ep,ev,re,r,rp) - if not re:GetHandler():IsType(TYPE_SPELL) or rp==tp then return end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if g and g:IsContains(e:GetHandler()) then - Duel.NegateEffect(ev) - end -end -function c1995985.regop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(1995985,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) -end -function c1995985.spcon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(1995985)==0 -end -function c1995985.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c1995985.spfilter(c,e,tp) - return c:IsCode(74388798) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) -end -function c1995985.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c1995985.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c1995985.spop(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,c1995985.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) - tc:CompleteProcedure() - end -end +--サイレント・ソードマン LV3 +function c1995985.initial_effect(c) + --disable effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c1995985.disop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1995985,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c1995985.spcon) + e2:SetCost(c1995985.spcost) + e2:SetTarget(c1995985.sptg) + e2:SetOperation(c1995985.spop) + c:RegisterEffect(e2) + --reg + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetOperation(c1995985.regop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_FLIP) + c:RegisterEffect(e5) +end +c1995985.lvupcount=1 +c1995985.lvup={74388798} +function c1995985.disop(e,tp,eg,ep,ev,re,r,rp) + if not re:GetHandler():IsType(TYPE_SPELL) or rp==tp then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if g and g:IsContains(e:GetHandler()) then + Duel.NegateEffect(ev) + end +end +function c1995985.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(1995985,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end +function c1995985.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(1995985)==0 +end +function c1995985.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c1995985.spfilter(c,e,tp) + return c:IsCode(74388798) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c1995985.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c1995985.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c1995985.spop(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,c1995985.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c200000000.lua b/script/c200000000.lua new file mode 100644 index 00000000..9e93c59b --- /dev/null +++ b/script/c200000000.lua @@ -0,0 +1,54 @@ +--希望の創造者 +function c200000000.initial_effect(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c200000000.retcon) + e2:SetOperation(c200000000.spr) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_GRAVE) + e3:SetCode(EVENT_PREDRAW) + e3:SetCondition(c200000000.spcon) + e3:SetTarget(c200000000.sptg) + e3:SetOperation(c200000000.spop) + c:RegisterEffect(e3) +end +c200000000.illegal=true +function c200000000.retcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():GetReasonPlayer()~=tp + and e:GetHandler():GetPreviousControler()==tp +end +function c200000000.spr(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetTurnPlayer()==tp then + c:RegisterFlagEffect(200000000,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,3) + else + c:RegisterFlagEffect(200000000,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,2) + end +end +function c200000000.spcon(e,tp,eg,ep,ev,re,r,rp) + local tp=e:GetHandler():GetControler() + return Duel.GetTurnPlayer()==tp and Duel.GetLP(tp)0 end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(110000000,5)) + local code=Duel.AnnounceCard(tp) + e:SetLabel(code) + e:GetHandler():ResetFlagEffect(200000000) +end +function c200000000.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()~=200000001 then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(110000000,6)) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.ShuffleDeck(tp) + Duel.MoveSequence(tc,0) + Duel.ConfirmDecktop(tp,1) + end + Duel.RegisterFlagEffect(tp,200000000,0,0,0) +end diff --git a/script/c200000002.lua b/script/c200000002.lua new file mode 100644 index 00000000..28079fa5 --- /dev/null +++ b/script/c200000002.lua @@ -0,0 +1,53 @@ +-- +function c200000002.initial_effect(c) + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c200000002.target) + e3:SetOperation(c200000002.operation) + c:RegisterEffect(e3) +end +c200000002.illegal=true +function c200000002.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1048) and c:IsSetCard(0x7f) and c:IsType(TYPE_XYZ) +end +function c200000002.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and c200000002.spfilter(chkc) and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(c200000002.spfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(110000000,5)) + local code=Duel.AnnounceCard(tp) + e:SetLabel(code) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c200000002.spfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c200000002.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()~=200000003 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCondition(c200000002.condition) + e2:SetOperation(c200000002.winop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c200000002.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetFlagEffect(tp,200000000)>0 + and Duel.GetFlagEffect(tp,200000004)>0 +end +function c200000002.winop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,tp,200000002) + local WIN_REASON_MIRACLE_CRETER=0x30 + Duel.Win(tp,WIN_REASON_MIRACLE_CRETER) +end diff --git a/script/c200000003.lua b/script/c200000003.lua new file mode 100644 index 00000000..3ed107fc --- /dev/null +++ b/script/c200000003.lua @@ -0,0 +1,27 @@ +--伝説の闇の魔導師 +function c200000003.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterEqualFunction(Card.GetLevel,7),3) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --match kill + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATCH_KILL) + e2:SetCondition(c200000003.condition) + c:RegisterEffect(e2) +end +function c200000003.spfilter(c) + return c:IsRace(RACE_SPELLCASTER) +end +function c200000003.condition(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetMaterial() + return + g:IsExists(c200000003.spfilter,1,nil) +end diff --git a/script/c200000004.lua b/script/c200000004.lua new file mode 100644 index 00000000..20a89d41 --- /dev/null +++ b/script/c200000004.lua @@ -0,0 +1,42 @@ +--勝利の方程式 +function c200000004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c200000004.condition) + e1:SetTarget(c200000004.target) + e1:SetOperation(c200000004.activate) + c:RegisterEffect(e1) +end +c200000004.illegal=true +function c200000004.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c200000004.spfilter(c,e,tp) + return c:IsSetCard(0x48) and not c:IsSetCard(0x1048) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c200000004.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c200000004.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp)end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(110000000,5)) + local code=Duel.AnnounceCard(tp) + Duel.SetTargetParam(code) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c200000004.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)~=200000005 or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c200000004.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + end + tc:CompleteProcedure() + end + Duel.RegisterFlagEffect(tp,200000004,0,0,0) +end diff --git a/script/c20003527.lua b/script/c20003527.lua index 5a76c121..aa275fc5 100644 --- a/script/c20003527.lua +++ b/script/c20003527.lua @@ -32,7 +32,7 @@ function c20003527.initial_effect(c) c:RegisterEffect(e4) --add counter local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(20003527,0)) + e5:SetDescription(aux.Stringid(20003527,1)) e5:SetCategory(CATEGORY_COUNTER) e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e5:SetCode(EVENT_SUMMON_SUCCESS) @@ -55,15 +55,19 @@ end function c20003527.cfilter(c,tp) return c:IsAttribute(ATTRIBUTE_WATER) and (c:IsControler(tp) or c:IsFaceup()) end -function c20003527.sumcon(e,c) +function c20003527.sumcon(e,c,minc) if c==nil then return true end + local min=1 + if minc>=1 then min=minc end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c20003527.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>4 and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>4 and Duel.CheckTribute(c,min,10,mg) end -function c20003527.sumop(e,tp,eg,ep,ev,re,r,rp,c) +function c20003527.sumop(e,tp,eg,ep,ev,re,r,rp,c,minc) + local min=1 + if minc>=1 then min=minc end local mg=Duel.GetMatchingGroup(c20003527.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - local sg=Duel.SelectTribute(tp,c,1,10,mg) + local sg=Duel.SelectTribute(tp,c,min,10,mg) c:SetMaterial(sg) Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) end diff --git a/script/c20036055.lua b/script/c20036055.lua index 656164a0..e652501a 100644 --- a/script/c20036055.lua +++ b/script/c20036055.lua @@ -1,39 +1,39 @@ ---旅人の到彼岸 -function c20036055.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,20036055+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c20036055.sptg) - e1:SetOperation(c20036055.spop) - c:RegisterEffect(e1) -end -function c20036055.filter(c,e,tp,id) - return c:IsSetCard(0xb1) and c:GetTurnID()==id and not c:IsReason(REASON_RETURN) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c20036055.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c20036055.filter(chkc,e,tp,Duel.GetTurnCount()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c20036055.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,Duel.GetTurnCount()) end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c20036055.filter,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp,Duel.GetTurnCount()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) -end -function c20036055.spop(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if sg:GetCount()>ft then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - sg=sg:Select(tp,ft,ft,nil) - end - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) -end +--旅人の到彼岸 +function c20036055.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,20036055+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c20036055.sptg) + e1:SetOperation(c20036055.spop) + c:RegisterEffect(e1) +end +function c20036055.filter(c,e,tp,id) + return c:IsSetCard(0xb1) and c:GetTurnID()==id and not c:IsReason(REASON_RETURN) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c20036055.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c20036055.filter(chkc,e,tp,Duel.GetTurnCount()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c20036055.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,Duel.GetTurnCount()) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c20036055.filter,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp,Duel.GetTurnCount()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c20036055.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if sg:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + sg=sg:Select(tp,ft,ft,nil) + end + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) +end diff --git a/script/c20056760.lua b/script/c20056760.lua index dcb06292..f80134c6 100644 --- a/script/c20056760.lua +++ b/script/c20056760.lua @@ -1,82 +1,82 @@ ---グレイドル・スライム -function c20056760.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,20056760) - e1:SetTarget(c20056760.sptg1) - e1:SetOperation(c20056760.spop1) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCondition(c20056760.spcon2) - e2:SetTarget(c20056760.sptg2) - e2:SetOperation(c20056760.spop2) - c:RegisterEffect(e2) -end -function c20056760.filter(c) - return c:IsFaceup() and c:IsSetCard(0xd1) -end -function c20056760.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c20056760.filter(chkc) end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if chk==0 then - if ft<-1 then return false end - return e:GetHandler():IsCanBeSpecialSummoned(e,1,tp,false,false) - and Duel.IsExistingTarget(c20056760.filter,tp,LOCATION_ONFIELD,0,2,nil) - and (ft>0 or Duel.IsExistingTarget(c20056760.filter,tp,LOCATION_MZONE,0,-ft+1,nil)) - end - local g=nil - if ft~=0 then - local loc=LOCATION_ONFIELD - if ft<0 then loc=LOCATION_MZONE end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - g=Duel.SelectTarget(tp,c20056760.filter,tp,loc,0,2,2,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - g=Duel.SelectTarget(tp,c20056760.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g2=Duel.SelectTarget(tp,c20056760.filter,tp,LOCATION_ONFIELD,0,1,1,g:GetFirst()) - g:Merge(g2) - end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c20056760.spop1(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if Duel.Destroy(g,REASON_EFFECT)~=0 then - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then - Duel.SendtoGrave(c,REASON_RULE) - end - end -end -function c20056760.spcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c20056760.spfilter(c,e,tp) - return c:IsSetCard(0xd1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c20056760.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c20056760.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c20056760.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c20056760.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c20056760.spop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--グレイドル・スライム +function c20056760.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,20056760) + e1:SetTarget(c20056760.sptg1) + e1:SetOperation(c20056760.spop1) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c20056760.spcon2) + e2:SetTarget(c20056760.sptg2) + e2:SetOperation(c20056760.spop2) + c:RegisterEffect(e2) +end +function c20056760.filter(c) + return c:IsFaceup() and c:IsSetCard(0xd1) +end +function c20056760.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c20056760.filter(chkc) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chk==0 then + if ft<-1 then return false end + return e:GetHandler():IsCanBeSpecialSummoned(e,1,tp,false,false) + and Duel.IsExistingTarget(c20056760.filter,tp,LOCATION_ONFIELD,0,2,nil) + and (ft>0 or Duel.IsExistingTarget(c20056760.filter,tp,LOCATION_MZONE,0,-ft+1,nil)) + end + local g=nil + if ft~=0 then + local loc=LOCATION_ONFIELD + if ft<0 then loc=LOCATION_MZONE end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + g=Duel.SelectTarget(tp,c20056760.filter,tp,loc,0,2,2,nil) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + g=Duel.SelectTarget(tp,c20056760.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,c20056760.filter,tp,LOCATION_ONFIELD,0,1,1,g:GetFirst()) + g:Merge(g2) + end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c20056760.spop1(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.Destroy(g,REASON_EFFECT)~=0 then + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(c,REASON_RULE) + end + end +end +function c20056760.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c20056760.spfilter(c,e,tp) + return c:IsSetCard(0xd1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c20056760.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c20056760.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c20056760.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c20056760.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c20056760.spop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c20057949.lua b/script/c20057949.lua index ecc68732..e9c327fe 100644 --- a/script/c20057949.lua +++ b/script/c20057949.lua @@ -1,93 +1,93 @@ ---フォーチュン・インハーリット -function c20057949.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetCondition(c20057949.condition) - e1:SetOperation(c20057949.activate) - c:RegisterEffect(e1) - if not c20057949.global_check then - c20057949.global_check=true - c20057949[0]=false - c20057949[1]=false - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_DESTROYED) - ge1:SetOperation(c20057949.checkop1) - Duel.RegisterEffect(ge1,0) - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) - ge2:SetOperation(c20057949.clear) - Duel.RegisterEffect(ge2,0) - end -end -function c20057949.checkop1(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - while tc do - if tc:IsPreviousLocation(LOCATION_MZONE) and tc:IsPreviousPosition(POS_FACEUP) and tc:IsPreviousSetCard(0x31) then - c20057949[tc:GetPreviousControler()]=true - end - tc=eg:GetNext() - end -end -function c20057949.clear(e,tp,eg,ep,ev,re,r,rp) - c20057949[0]=false - c20057949[1]=false -end -function c20057949.condition(e,tp,eg,ep,ev,re,r,rp) - return c20057949[tp] -end -function c20057949.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_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetLabel(Duel.GetTurnCount()) - e1:SetCondition(c20057949.spcon1) - e1:SetOperation(c20057949.spop1) - if Duel.GetTurnPlayer()==tp then - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) - end - Duel.RegisterEffect(e1,tp) -end -function c20057949.spcon1(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnCount()~=e:GetLabel() and Duel.GetTurnPlayer()==tp -end -function c20057949.filter(c,e,tp) - return c:IsSetCard(0x31) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c20057949.spop1(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c20057949.filter,tp,LOCATION_HAND,0,1,nil,e,tp) - and Duel.SelectYesNo(tp,aux.Stringid(20057949,0)) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(20057949,1)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetTarget(c20057949.sptg2) - e1:SetOperation(c20057949.spop2) - e1:SetReset(RESET_PHASE+PHASE_STANDBY) - Duel.RegisterEffect(e1,tp) - end -end -function c20057949.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c20057949.spop2(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if ft>2 then ft=2 end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c20057949.filter,tp,LOCATION_HAND,0,1,ft,nil,e,tp) - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) -end +--フォーチュン・インハーリット +function c20057949.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c20057949.condition) + e1:SetOperation(c20057949.activate) + c:RegisterEffect(e1) + if not c20057949.global_check then + c20057949.global_check=true + c20057949[0]=false + c20057949[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(c20057949.checkop1) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c20057949.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c20057949.checkop1(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsPreviousLocation(LOCATION_MZONE) and tc:IsPreviousPosition(POS_FACEUP) and tc:IsPreviousSetCard(0x31) then + c20057949[tc:GetPreviousControler()]=true + end + tc=eg:GetNext() + end +end +function c20057949.clear(e,tp,eg,ep,ev,re,r,rp) + c20057949[0]=false + c20057949[1]=false +end +function c20057949.condition(e,tp,eg,ep,ev,re,r,rp) + return c20057949[tp] +end +function c20057949.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_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c20057949.spcon1) + e1:SetOperation(c20057949.spop1) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + end + Duel.RegisterEffect(e1,tp) +end +function c20057949.spcon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()~=e:GetLabel() and Duel.GetTurnPlayer()==tp +end +function c20057949.filter(c,e,tp) + return c:IsSetCard(0x31) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c20057949.spop1(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c20057949.filter,tp,LOCATION_HAND,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(20057949,0)) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(20057949,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetTarget(c20057949.sptg2) + e1:SetOperation(c20057949.spop2) + e1:SetReset(RESET_PHASE+PHASE_STANDBY) + Duel.RegisterEffect(e1,tp) + end +end +function c20057949.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c20057949.spop2(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>2 then ft=2 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c20057949.filter,tp,LOCATION_HAND,0,1,ft,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c20140382.lua b/script/c20140382.lua index 5fe8fc5a..2c244133 100644 --- a/script/c20140382.lua +++ b/script/c20140382.lua @@ -26,8 +26,7 @@ function c20140382.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c20140382.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c20155904.lua b/script/c20155904.lua new file mode 100644 index 00000000..52e028ef --- /dev/null +++ b/script/c20155904.lua @@ -0,0 +1,67 @@ +--十二獣クックル +--Zoodiac Cluckle +--Scripted by Eerie Code +function c20155904.initial_effect(c) + --shuffle + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(20155904,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c20155904.tdcon) + e1:SetTarget(c20155904.tdtg) + e1:SetOperation(c20155904.tdop) + c:RegisterEffect(e1) + --negate effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(20155904,1)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) + e2:SetType(EFFECT_TYPE_XMATERIAL+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c20155904.discon) + e2:SetCost(c20155904.discost) + e2:SetTarget(c20155904.distg) + e2:SetOperation(c20155904.disop) + c:RegisterEffect(e2) +end +function c20155904.tdcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c20155904.tdfilter(c) + return c:IsSetCard(0xf1) and not c:IsCode(20155904) and c:IsAbleToDeck() +end +function c20155904.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c20155904.tdfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c20155904.tdfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c20155904.tdfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c20155904.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end +end +function c20155904.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetOriginalRace()==RACE_BEASTWARRIOR + and not c:IsStatus(STATUS_BATTLE_DESTROYED) and ep==1-tp + and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev) + and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) + and Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):IsContains(c) +end +function c20155904.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c20155904.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c20155904.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c20349913.lua b/script/c20349913.lua index 050431c4..78c00e49 100644 --- a/script/c20349913.lua +++ b/script/c20349913.lua @@ -1,47 +1,47 @@ ---銀河の施し -function c20349913.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,20349913+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c20349913.condition) - e1:SetCost(c20349913.cost) - e1:SetTarget(c20349913.target) - e1:SetOperation(c20349913.activate) - c:RegisterEffect(e1) -end -function c20349913.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x7b) and c:IsType(TYPE_XYZ) -end -function c20349913.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c20349913.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c20349913.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,nil) -end -function c20349913.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c20349913.activate(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetValue(c20349913.damval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - end -end -function c20349913.damval(e,re,val,r,rp,rc) - return val/2 -end +--銀河の施し +function c20349913.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,20349913+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c20349913.condition) + e1:SetCost(c20349913.cost) + e1:SetTarget(c20349913.target) + e1:SetOperation(c20349913.activate) + c:RegisterEffect(e1) +end +function c20349913.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x7b) and c:IsType(TYPE_XYZ) +end +function c20349913.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c20349913.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c20349913.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,nil) +end +function c20349913.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c20349913.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(c20349913.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c20349913.damval(e,re,val,r,rp,rc) + return val/2 +end diff --git a/script/c20366274.lua b/script/c20366274.lua index 9082d9cd..1f3c3940 100644 --- a/script/c20366274.lua +++ b/script/c20366274.lua @@ -49,113 +49,97 @@ function c20366274.initial_effect(c) c:RegisterEffect(e5) end function c20366274.ffilter1(c) - return c:IsFusionSetCard(0x9d) + return (c:IsFusionSetCard(0x9d) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end -function c20366274.ffilter2(c) - return c:IsAttribute(ATTRIBUTE_LIGHT) or c:IsHasEffect(4904633) +function c20366274.ffilter2(c,fc) + if c:IsHasEffect(6205579) then return false end + if c:IsHasEffect(511002961) then return true end + return (c:IsFusionAttribute(ATTRIBUTE_LIGHT) or c:IsHasEffect(4904633)) and not c:IsHasEffect(6205579) end function c20366274.exfilter(c,g) return c:IsFaceup() and c:IsCanBeFusionMaterial() and not g:IsContains(c) end +function c20366274.check1(c,mg,sg,chkf,tp) + local g=mg:Clone() + if sg:IsContains(c) then g:Sub(sg) end + return g:IsExists(c20366274.check2,1,c,c,chkf,tp) +end +function c20366274.check2(c,c2,chkf,tp) + local g=Group.FromCards(c,c2) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,tp) then return false end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=g:GetFirst() + while tc do + if c20366274.ffilter1(tc) or tc:IsHasEffect(511002961) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + if c20366274.ffilter2(tc,nil,tp) or tc:IsHasEffect(511002961) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + tc=g:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) + else return g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) end +end function c20366274.fuscon(e,g,gc,chkf) if g==nil then return true end + local chkf=bit.band(chkf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local sg=Group.CreateGroup() + local c=e:GetHandler() local tp=e:GetHandlerPlayer() local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - local exg=Group.CreateGroup() if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then - local sg=Duel.GetMatchingGroup(c20366274.exfilter,tp,0,LOCATION_MZONE,nil,g) - exg:Merge(sg) - end - if gc then return (c20366274.ffilter1(gc) and (g:IsExists(c20366274.ffilter2,1,gc) or exg:IsExists(c20366274.ffilter2,1,gc))) - or (c20366274.ffilter2(gc) and (g:IsExists(c20366274.ffilter1,1,gc) or exg:IsExists(c20366274.ffilter1,1,gc))) end - local g1=Group.CreateGroup() - local g2=Group.CreateGroup() - local g3=Group.CreateGroup() - local g4=Group.CreateGroup() - local tc=g:GetFirst() - while tc do - if c20366274.ffilter1(tc) then - g1:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g3:AddCard(tc) end - end - if c20366274.ffilter2(tc) then - g2:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g4:AddCard(tc) end - end - tc=g:GetNext() + sg=Duel.GetMatchingGroup(c20366274.exfilter,tp,0,LOCATION_MZONE,nil,g) + mg:Merge(sg) end - local exg1=exg:Filter(c20366274.ffilter1,nil) - local exg2=exg:Filter(c20366274.ffilter2,nil) - if chkf~=PLAYER_NONE then - return (g3:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g3:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g4:IsExists(aux.FConditionFilterF2,1,nil,g1) - or g4:IsExists(aux.FConditionFilterF2,1,nil,exg1)) - else - return (g1:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g1:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g2:IsExists(aux.FConditionFilterF2,1,nil,exg1)) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return c20366274.check1(gc,mg,sg,chkf,tp) end + return mg:IsExists(c20366274.check1,1,nil,mg,sg,chkf,tp) end function c20366274.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local c=e:GetHandler() local exg=Group.CreateGroup() + local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local p=tp + local sfhchk=false if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then local sg=Duel.GetMatchingGroup(c20366274.exfilter,tp,0,LOCATION_MZONE,nil,eg) exg:Merge(sg) + mg:Merge(sg) + end + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end end if gc then - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c20366274.ffilter1(gc) then - sg1:Merge(eg:Filter(c20366274.ffilter2,gc)) - sg2:Merge(exg:Filter(c20366274.ffilter2,gc)) - end - if c20366274.ffilter2(gc) then - sg1:Merge(eg:Filter(c20366274.ffilter1,gc)) - sg2:Merge(exg:Filter(c20366274.ffilter1,gc)) - end - local g1=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c20366274.check2,1,1,gc,gc,chkf) + local tc1=g1:GetFirst() + if c20366274.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg1:Select(tp,1,1,nil) end + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - local sg=eg:Filter(aux.FConditionFilterF2c,nil,c20366274.ffilter1,c20366274.ffilter2) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then - g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c20366274.check1,1,1,nil,mg,exg,chkf) local tc1=g1:GetFirst() - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c20366274.ffilter1(tc1) then - sg1:Merge(sg:Filter(c20366274.ffilter2,tc1)) - sg2:Merge(exg:Filter(c20366274.ffilter2,tc1)) - end - if c20366274.ffilter2(tc1) then - sg1:Merge(sg:Filter(c20366274.ffilter1,tc1)) - sg2:Merge(exg:Filter(c20366274.ffilter1,tc1)) - end - local g2=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + if c20366274.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg1:Select(tp,1,1,nil) + mg:Sub(exg) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,c20366274.check2,1,1,tc1,tc1,chkf) + if c20366274.exfilter(g2:GetFirst(),eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) end g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end +function c20366274.FConditionFilterF2c(c,f1,f2,fc) + return f1(c) or f2(c,fc) +end function c20366274.splimit(e,se,sp,st) return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION end diff --git a/script/c20374351.lua b/script/c20374351.lua index 293b186b..70b83ead 100644 --- a/script/c20374351.lua +++ b/script/c20374351.lua @@ -63,8 +63,7 @@ function c20374351.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c20374351.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c20409757.lua b/script/c20409757.lua index aac7c226..c72f44f8 100644 --- a/script/c20409757.lua +++ b/script/c20409757.lua @@ -1,82 +1,82 @@ ---時読みの魔術師 -function c20409757.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c,false) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(1160) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c20409757.condition) - c:RegisterEffect(e1) - --actlimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c20409757.actcon) - e2:SetOperation(c20409757.actop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_BE_BATTLE_TARGET) - c:RegisterEffect(e3) - --scale - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_CHANGE_LSCALE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_PZONE) - e4:SetCondition(c20409757.slcon) - e4:SetValue(4) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_CHANGE_RSCALE) - c:RegisterEffect(e5) - -- - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e6:SetCode(EFFECT_DESTROY_REPLACE) - e6:SetRange(LOCATION_MZONE) - e6:SetCountLimit(1) - e6:SetTarget(c20409757.indtg) - e6:SetValue(c20409757.indval) - c:RegisterEffect(e6) -end -function c20409757.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c20409757.actcon(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttacker() - if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end - return tc and tc:IsControler(tp) and tc:IsType(TYPE_PENDULUM) -end -function c20409757.actop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c20409757.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end -function c20409757.aclimit(e,re,tp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c20409757.slcon(e) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) - return not tc or (not tc:IsSetCard(0x98) and not tc:IsSetCard(0x99)) -end -function c20409757.filter(c,tp) - return c:IsControler(tp) and c:IsLocation(LOCATION_SZONE) and (c:GetSequence()==6 or c:GetSequence()==7) - and c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()==1-tp -end -function c20409757.indtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c20409757.filter,1,nil,tp) end - return true -end -function c20409757.indval(e,c) - return c20409757.filter(c,e:GetHandlerPlayer()) -end +--時読みの魔術師 +function c20409757.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(1160) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c20409757.condition) + c:RegisterEffect(e1) + --actlimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c20409757.actcon) + e2:SetOperation(c20409757.actop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_BE_BATTLE_TARGET) + c:RegisterEffect(e3) + --scale + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CHANGE_LSCALE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_PZONE) + e4:SetCondition(c20409757.slcon) + e4:SetValue(4) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e5) + -- + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EFFECT_DESTROY_REPLACE) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetTarget(c20409757.indtg) + e6:SetValue(c20409757.indval) + c:RegisterEffect(e6) +end +function c20409757.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c20409757.actcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + return tc and tc:IsControler(tp) and tc:IsType(TYPE_PENDULUM) +end +function c20409757.actop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c20409757.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c20409757.aclimit(e,re,tp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c20409757.slcon(e) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) + return not tc or (not tc:IsSetCard(0x98) and not tc:IsSetCard(0x99)) +end +function c20409757.filter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_SZONE) and (c:GetSequence()==6 or c:GetSequence()==7) + and c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()==1-tp +end +function c20409757.indtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c20409757.filter,1,nil,tp) end + return true +end +function c20409757.indval(e,c) + return c20409757.filter(c,e:GetHandlerPlayer()) +end diff --git a/script/c20426907.lua b/script/c20426907.lua index 305ee16b..80ec0d48 100644 --- a/script/c20426907.lua +++ b/script/c20426907.lua @@ -1,126 +1,126 @@ ---機殻の再星 -function c20426907.initial_effect(c) - Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_SUMMON+TIMING_SPSUMMON) - e1:SetTarget(c20426907.distg1) - e1:SetOperation(c20426907.disop) - c:RegisterEffect(e1) - --disable - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DISABLE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetRange(LOCATION_SZONE) - e2:SetTarget(c20426907.distg2) - e2:SetOperation(c20426907.disop) - e2:SetLabel(1) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_DISABLE) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetRange(LOCATION_SZONE) - e4:SetTarget(c20426907.distg3) - e4:SetOperation(c20426907.disop) - e4:SetLabel(2) - c:RegisterEffect(e4) - --tograve - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetRange(LOCATION_SZONE) - e5:SetCode(EFFECT_SELF_TOGRAVE) - e5:SetCondition(c20426907.sdcon) - c:RegisterEffect(e5) -end -function c20426907.filter(c) - return c:IsFaceup() and c:IsLevelAbove(5) and not c:IsType(TYPE_NORMAL) -end -function c20426907.distg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:SetLabel(0) - local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SUMMON_SUCCESS,true) - if not res then - res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_FLIP_SUMMON_SUCCESS,true) - end - if res then - local tc=teg:GetFirst() - if tc:IsLevelBelow(4) and not tc:IsType(TYPE_NORMAL) - and Duel.SelectYesNo(tp,94) then - e:SetLabel(1) - Duel.SetTargetCard(teg) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,teg,1,0,0) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) - end - return - end - res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) - if res then - local g=teg:Filter(c20426907.filter,nil) - if g:GetCount()>0 and Duel.SelectYesNo(tp,94) then - e:SetLabel(2) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) - end - end -end -function c20426907.distg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:GetFirst():IsLevelBelow(4) end - Duel.SetTargetCard(eg) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) -end -function c20426907.filter3(c) - return c:IsFaceup() and c:IsLevelAbove(5) -end -function c20426907.distg3(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c20426907.filter3,1,nil) end - local g=eg:Filter(c20426907.filter3,nil) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) -end -function c20426907.disfilter(c,e) - return c:IsFaceup() and c:IsRelateToEffect(e) -end -function c20426907.disop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c20426907.disfilter,nil,e) - local tc=g:GetFirst() - while tc do - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - if e:GetLabel()==2 then - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetReset(RESET_EVENT+0x47e0000) - e3:SetValue(LOCATION_REMOVED) - tc:RegisterEffect(e3) - end - tc=g:GetNext() - end -end -function c20426907.sdfilter(c) - return c:IsFaceup() and c:IsSetCard(0xaa) and not c:IsCode(20426907) -end -function c20426907.sdcon(e) - return not Duel.IsExistingMatchingCard(c20426907.sdfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) -end +--機殻の再星 +function c20426907.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_SUMMON+TIMING_SPSUMMON) + e1:SetTarget(c20426907.distg1) + e1:SetOperation(c20426907.disop) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c20426907.distg2) + e2:SetOperation(c20426907.disop) + e2:SetLabel(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DISABLE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c20426907.distg3) + e4:SetOperation(c20426907.disop) + e4:SetLabel(2) + c:RegisterEffect(e4) + --tograve + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_SELF_TOGRAVE) + e5:SetCondition(c20426907.sdcon) + c:RegisterEffect(e5) +end +function c20426907.filter(c) + return c:IsFaceup() and c:IsLevelAbove(5) and not c:IsType(TYPE_NORMAL) +end +function c20426907.distg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:SetLabel(0) + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SUMMON_SUCCESS,true) + if not res then + res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_FLIP_SUMMON_SUCCESS,true) + end + if res then + local tc=teg:GetFirst() + if tc:IsLevelBelow(4) and not tc:IsType(TYPE_NORMAL) + and Duel.SelectYesNo(tp,94) then + e:SetLabel(1) + Duel.SetTargetCard(teg) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,teg,1,0,0) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) + end + return + end + res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) + if res then + local g=teg:Filter(c20426907.filter,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,94) then + e:SetLabel(2) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) + end + end +end +function c20426907.distg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:GetFirst():IsLevelBelow(4) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c20426907.filter3(c) + return c:IsFaceup() and c:IsLevelAbove(5) +end +function c20426907.distg3(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c20426907.filter3,1,nil) end + local g=eg:Filter(c20426907.filter3,nil) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) +end +function c20426907.disfilter(c,e) + return c:IsFaceup() and c:IsRelateToEffect(e) +end +function c20426907.disop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c20426907.disfilter,nil,e) + local tc=g:GetFirst() + while tc do + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if e:GetLabel()==2 then + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end +end +function c20426907.sdfilter(c) + return c:IsFaceup() and c:IsSetCard(0xaa) and not c:IsCode(20426907) +end +function c20426907.sdcon(e) + return not Duel.IsExistingMatchingCard(c20426907.sdfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end diff --git a/script/c20436034.lua b/script/c20436034.lua index 00b66bca..b9da7b26 100644 --- a/script/c20436034.lua +++ b/script/c20436034.lua @@ -1,59 +1,60 @@ ---磁力の指輪 -function c20436034.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(c20436034.target) - e1:SetOperation(c20436034.operation) - c:RegisterEffect(e1) - --atk/def down - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(-500) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - -- - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_EQUIP) - e4:SetCode(EFFECT_ONLY_BE_ATTACKED) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_ONLY_ATTACK_MONSTER) - e5:SetRange(LOCATION_SZONE) - e5:SetTargetRange(0,LOCATION_MZONE) - e5:SetCondition(c20436034.atkcon) - c:RegisterEffect(e5) - --equip limit - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_EQUIP_LIMIT) - e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e6:SetValue(c20436034.eqlimit) - c:RegisterEffect(e6) -end -function c20436034.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c20436034.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() and tc:IsControler(tp) then - Duel.Equip(tp,e:GetHandler(),tc) - end -end -function c20436034.eqlimit(e,c) - return e:GetHandlerPlayer()==c:GetControler() -end -function c20436034.atkcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetEquipTarget()~=nil -end +--磁力の指輪 +function c20436034.initial_effect(c) + aux.AddEquipProcedure(c,0,nil,c20436034.eqlimit) + --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(c20436034.target) + e1:SetOperation(c20436034.operation) + c:RegisterEffect(e1) + --atk/def down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-500) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_ONLY_BE_ATTACKED) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_ONLY_ATTACK_MONSTER) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(0,LOCATION_MZONE) + e5:SetCondition(c20436034.atkcon) + c:RegisterEffect(e5) + --equip limit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_EQUIP_LIMIT) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetValue(c20436034.eqlimit) + c:RegisterEffect(e6) +end +function c20436034.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c20436034.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() and tc:IsControler(tp) then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c20436034.eqlimit(e,c) + return e:GetHandlerPlayer()==c:GetControler() +end +function c20436034.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget()~=nil +end diff --git a/script/c20447641.lua b/script/c20447641.lua index 457003df..8e79ae69 100644 --- a/script/c20447641.lua +++ b/script/c20447641.lua @@ -5,6 +5,7 @@ function c20447641.initial_effect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) e1:SetCost(c20447641.cost) e1:SetTarget(c20447641.target) e1:SetOperation(c20447641.activate) @@ -34,14 +35,14 @@ function c20447641.target(e,tp,eg,ep,ev,re,r,rp,chk) if e:GetLabel()==0 then return false end e:SetLabel(0) return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,20447641,0xaa,0x21,4,1800,1000,RACE_MACHINE,ATTRIBUTE_EARTH) end + and Duel.IsPlayerCanSpecialSummonMonster(tp,20447641,0xaa,0x21,1800,1000,4,RACE_MACHINE,ATTRIBUTE_EARTH) end e:SetLabel(0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) end function c20447641.activate(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,20447641,0xaa,0x21,4,1800,1000,RACE_MACHINE,ATTRIBUTE_EARTH) then + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,20447641,0xaa,0x21,1800,1000,4,RACE_MACHINE,ATTRIBUTE_EARTH) then c:AddMonsterAttribute(TYPE_EFFECT) Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) c:AddMonsterAttributeComplete() @@ -63,10 +64,10 @@ end function c20447641.ttfilter(c) return c:GetOriginalCode()==20447641 and c:IsReleasable() and c:GetFlagEffect(20447641)~=0 end -function c20447641.ttcon(e,c) +function c20447641.ttcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + return minc<=3 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.IsExistingMatchingCard(c20447641.ttfilter,tp,LOCATION_MZONE,0,1,nil) end function c20447641.tttg(e,c) diff --git a/script/c20450925.lua b/script/c20450925.lua index 3cbde3e4..8a78ee7e 100644 --- a/script/c20450925.lua +++ b/script/c20450925.lua @@ -1,34 +1,34 @@ ---ハネワタ -function c20450925.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(20450925,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c20450925.cost) - e1:SetOperation(c20450925.operation) - c:RegisterEffect(e1) -end -function c20450925.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDiscardable() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) -end -function c20450925.operation(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(c20450925.damval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end -function c20450925.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 - else return val end -end +--ハネワタ +function c20450925.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(20450925,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c20450925.cost) + e1:SetOperation(c20450925.operation) + c:RegisterEffect(e1) +end +function c20450925.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c20450925.operation(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(c20450925.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c20450925.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end diff --git a/script/c20457551.lua b/script/c20457551.lua index 8090440f..deea683e 100644 --- a/script/c20457551.lua +++ b/script/c20457551.lua @@ -1,73 +1,41 @@ ---鋼核収納 -function c20457551.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(c20457551.target) - e1:SetOperation(c20457551.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(c20457551.eqlimit) - c:RegisterEffect(e2) - --atk down - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetCondition(c20457551.atkcon) - e3:SetTarget(c20457551.atktg) - e3:SetValue(c20457551.atkval) - c:RegisterEffect(e3) - --destroy sub - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_EQUIP+EFFECT_TYPE_CONTINUOUS) - e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e4:SetCode(EFFECT_DESTROY_REPLACE) - e4:SetTarget(c20457551.desreptg) - c:RegisterEffect(e4) -end -function c20457551.eqlimit(e,c) - return c:IsSetCard(0x1d) -end -function c20457551.filter(c) - return c:IsFaceup() and c:IsSetCard(0x1d) -end -function c20457551.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c20457551.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c20457551.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c20457551.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c20457551.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 c20457551.atkcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL - and e:GetHandler():GetEquipTarget():GetBattleTarget() -end -function c20457551.atktg(e,c) - return c==e:GetHandler():GetEquipTarget():GetBattleTarget() -end -function c20457551.atkval(e,c) - return e:GetHandler():GetEquipTarget():GetLevel()*-100 -end -function c20457551.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCurrentPhase()==PHASE_END end - if Duel.SelectYesNo(tp,aux.Stringid(20457551,0)) then - Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) - return true - else return false end -end +--鋼核収納 +function c20457551.initial_effect(c) + aux.AddEquipProcedure(c,nil,c20457551.filter) + --atk down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetCondition(c20457551.atkcon) + e3:SetTarget(c20457551.atktg) + e3:SetValue(c20457551.atkval) + c:RegisterEffect(e3) + --destroy sub + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetTarget(c20457551.desreptg) + c:RegisterEffect(e4) +end +function c20457551.filter(c) + return c:IsSetCard(0x1d) +end +function c20457551.atkcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL + and e:GetHandler():GetEquipTarget():GetBattleTarget() +end +function c20457551.atktg(e,c) + return c==e:GetHandler():GetEquipTarget():GetBattleTarget() +end +function c20457551.atkval(e,c) + return e:GetHandler():GetEquipTarget():GetLevel()*-100 +end +function c20457551.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()==PHASE_END end + if Duel.SelectYesNo(tp,aux.Stringid(20457551,0)) then + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) + return true + else return false end +end diff --git a/script/c20513882.lua b/script/c20513882.lua index fc28bcbd..9fa0eea6 100644 --- a/script/c20513882.lua +++ b/script/c20513882.lua @@ -1,51 +1,48 @@ ---Painful Escape -function c20513882.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetLabel(0) - e1:SetCost(c20513882.cost) - e1:SetTarget(c20513882.target) - e1:SetOperation(c20513882.activate) - c:RegisterEffect(e1) -end -function c20513882.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(100) - if chk==0 then return true end -end -function c20513882.cfilter(c,e,tp) - local lv=c:GetLevel() - return lv>0 and Duel.IsExistingMatchingCard(c20513882.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,c:GetLevel(),c:GetRace(),c:GetAttribute(),c:GetCode()) -end -function c20513882.thfilter(c,lv,race,att,code) - return c:GetLevel()==lv and c:IsRace(race) and c:IsAttribute(att) and not c:IsCode(code) and c:IsAbleToHand() -end -function c20513882.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if e:GetLabel()~=100 then return false end - e:SetLabel(0) - return Duel.CheckReleaseGroup(tp,c20513882.cfilter,1,nil,e,tp) - end - local g=Duel.SelectReleaseGroup(tp,c20513882.cfilter,1,1,nil,e,tp) - local rc=g:GetFirst() - local label=bit.lshift(rc:GetRace(),16) - label=label+bit.lshift(rc:GetLevel(),8) - label=label+rc:GetAttribute() - e:SetLabel(label) - e:SetValue(rc:GetCode()) - Duel.Release(rc,REASON_COST) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c20513882.activate(e,tp,eg,ep,ev,re,r,rp) - local att=bit.band(e:GetLabel(),0xff) - local lv=bit.band(bit.rshift(e:GetLabel(),8),0xff) - local race=bit.rshift(e:GetLabel(),16) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c20513882.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,lv,race,att,e:GetValue()) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--苦渋の黙札 +function c20513882.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetLabel(0) + e1:SetCost(c20513882.cost) + e1:SetTarget(c20513882.target) + e1:SetOperation(c20513882.activate) + c:RegisterEffect(e1) +end +function c20513882.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(100) + if chk==0 then return true end +end +function c20513882.cfilter(c,tp) + return c:GetOriginalLevel()>0 + and Duel.IsExistingMatchingCard(c20513882.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,c) +end +function c20513882.thfilter(c,tc) + return c:IsType(TYPE_MONSTER) + and c:GetOriginalLevel()==tc:GetOriginalLevel() + and c:GetOriginalRace()==tc:GetOriginalRace() + and c:GetOriginalAttribute()==tc:GetOriginalAttribute() + and c:GetOriginalCode()~=tc:GetOriginalCode() and c:IsAbleToHand() +end +function c20513882.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=100 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c20513882.cfilter,1,nil,tp) + end + local g=Duel.SelectReleaseGroup(tp,c20513882.cfilter,1,1,nil,tp) + e:SetLabelObject(g:GetFirst()) + Duel.Release(g,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c20513882.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c20513882.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,tc) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c2055403.lua b/script/c2055403.lua index 7214ba5b..12be2aba 100644 --- a/script/c2055403.lua +++ b/script/c2055403.lua @@ -1,35 +1,35 @@ ---時空の落とし穴 -function c2055403.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetTarget(c2055403.target) - e1:SetOperation(c2055403.activate) - c:RegisterEffect(e1) -end -function c2055403.filter(c,tp) - return c:GetSummonPlayer()~=tp and bit.band(c:GetSummonLocation(),LOCATION_HAND+LOCATION_EXTRA)~=0 - and c:IsAbleToDeck() and c:IsLocation(LOCATION_MZONE) -end -function c2055403.target(e,tp,eg,ep,ev,re,r,rp,chk) - local g=eg:Filter(c2055403.filter,nil,tp) - local ct=g:GetCount() - if chk==0 then return ct>0 end - Duel.SetTargetCard(eg) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,ct,0,0) -end - -function c2055403.activate(e,tp,eg,ep,ev,re,r,rp) - local g=eg:Filter(c2055403.filter,nil,tp):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - local og=Duel.GetOperatedGroup() - local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) - if ct>0 then - Duel.BreakEffect() - Duel.SetLP(tp,Duel.GetLP(tp)-ct*1000) - end - end -end +--時空の落とし穴 +function c2055403.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c2055403.target) + e1:SetOperation(c2055403.activate) + c:RegisterEffect(e1) +end +function c2055403.filter(c,tp) + return c:GetSummonPlayer()~=tp and bit.band(c:GetSummonLocation(),LOCATION_HAND+LOCATION_EXTRA)~=0 + and c:IsAbleToDeck() and c:IsLocation(LOCATION_MZONE) +end +function c2055403.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c2055403.filter,nil,tp) + local ct=g:GetCount() + if chk==0 then return ct>0 end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,ct,0,0) +end + +function c2055403.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c2055403.filter,nil,tp):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + if ct>0 then + Duel.BreakEffect() + Duel.SetLP(tp,Duel.GetLP(tp)-ct*1000) + end + end +end diff --git a/script/c20563387.lua b/script/c20563387.lua index 373873bc..123c235c 100644 --- a/script/c20563387.lua +++ b/script/c20563387.lua @@ -18,7 +18,7 @@ function c20563387.initial_effect(c) e2:SetDescription(aux.Stringid(20563387,1)) e2:SetCategory(CATEGORY_REMOVE) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c20563387.rmcon) e2:SetCost(c20563387.rmcost) diff --git a/script/c20579538.lua b/script/c20579538.lua index 83a124bc..03439d1e 100644 --- a/script/c20579538.lua +++ b/script/c20579538.lua @@ -1,77 +1,76 @@ ---森羅の姫芽君 スプラウト -function c20579538.initial_effect(c) - --deck check - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(20579538,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,20579538) - e1:SetCost(c20579538.cost) - e1:SetTarget(c20579538.target) - e1:SetOperation(c20579538.operation) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(20579538,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,20579539) - e2:SetCondition(c20579538.spcon) - e2:SetTarget(c20579538.sptg) - e2:SetOperation(c20579538.spop) - c:RegisterEffect(e2) -end -function c20579538.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c20579538.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c20579538.tdfilter(c) - return c:IsSetCard(0xa6) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() -end -function c20579538.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - Duel.DisableShuffleCheck() - if Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL)==0 then return end - local dg=Duel.GetMatchingGroup(c20579538.tdfilter,tp,LOCATION_GRAVE,0,nil) - if dg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(20579538,2)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local tg=dg:Select(tp,1,1,nil) - Duel.HintSelection(tg) - if tg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end - Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) - end -end -function c20579538.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c20579538.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - local t={} - local i=1 - for i=1,8 do t[i]=i end - Duel.Hint(HINT_SELECTMSG,tp,567) - local lv=Duel.AnnounceNumber(tp,table.unpack(t)) - e:SetLabel(lv) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c20579538.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end +--森羅の姫芽君 スプラウト +function c20579538.initial_effect(c) + --deck check + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(20579538,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,20579538) + e1:SetCost(c20579538.cost) + e1:SetTarget(c20579538.target) + e1:SetOperation(c20579538.operation) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(20579538,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,20579539) + e2:SetCondition(c20579538.spcon) + e2:SetTarget(c20579538.sptg) + e2:SetOperation(c20579538.spop) + c:RegisterEffect(e2) +end +function c20579538.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c20579538.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c20579538.tdfilter(c) + return c:IsSetCard(0xa6) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c20579538.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + Duel.DisableShuffleCheck() + if Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL)==0 then return end + local dg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c20579538.tdfilter),tp,LOCATION_GRAVE,0,nil) + if dg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(20579538,2)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local tg=dg:Select(tp,1,1,nil) + Duel.HintSelection(tg) + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + end +end +function c20579538.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c20579538.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + local t={} + local i=1 + for i=1,8 do t[i]=i end + Duel.Hint(HINT_SELECTMSG,tp,567) + local lv=Duel.AnnounceNumber(tp,table.unpack(t)) + e:SetLabel(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c20579538.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c20590784.lua b/script/c20590784.lua index 5f839673..876b8d60 100644 --- a/script/c20590784.lua +++ b/script/c20590784.lua @@ -27,12 +27,11 @@ end function c20590784.activate(e,tp,eg,ep,ev,re,r,rp) if Duel.NegateAttack() and Duel.Draw(tp,1,REASON_EFFECT)~=0 then if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local g=Duel.GetMatchingGroup(c20590784.filter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,nil,e,tp) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c20590784.filter),tp,LOCATION_EXTRA+LOCATION_GRAVE,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(20590784,0)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=g:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c2061963.lua b/script/c2061963.lua index 725fe07b..eac38b4c 100644 --- a/script/c2061963.lua +++ b/script/c2061963.lua @@ -7,7 +7,7 @@ function c2061963.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(2061963,0)) e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_CHAINING) diff --git a/script/c20630765.lua b/script/c20630765.lua index 02db977a..767382b7 100644 --- a/script/c20630765.lua +++ b/script/c20630765.lua @@ -1,65 +1,65 @@ ---魔石術師 クルード -function c20630765.initial_effect(c) - c:SetCounterLimit(0x16,1) - --Add counter - local e0=Effect.CreateEffect(c) - e0:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e0:SetCode(EVENT_CHAINING) - e0:SetRange(LOCATION_MZONE) - e0:SetOperation(aux.chainreg) - c:RegisterEffect(e0) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetCode(EVENT_CHAIN_SOLVED) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetOperation(c20630765.ctop) - c:RegisterEffect(e1) - --attackup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_DEFENSE) - e2:SetValue(c20630765.defup) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(20630765,0)) - e3:SetCategory(CATEGORY_REMOVE) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetCost(c20630765.rmcost) - e3:SetTarget(c20630765.rmtg) - e3:SetOperation(c20630765.rmop) - c:RegisterEffect(e3) -end -function c20630765.ctop(e,tp,eg,ep,ev,re,r,rp) - local c=re:GetHandler() - if re:IsActiveType(TYPE_MONSTER) and c~=e:GetHandler() and e:GetHandler():GetFlagEffect(1)>0 then - e:GetHandler():AddCounter(0x16,1) - end -end -function c20630765.defup(e,c) - return c:GetCounter(0x16)*300 -end -function c20630765.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x16,1,REASON_COST) end - Duel.RemoveCounter(tp,1,0,0x16,1,REASON_COST) -end -function c20630765.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c20630765.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end +--魔石術師 クルード +function c20630765.initial_effect(c) + c:SetCounterLimit(0x16,1) + --Add counter + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e0:SetCode(EVENT_CHAINING) + e0:SetRange(LOCATION_MZONE) + e0:SetOperation(aux.chainreg) + c:RegisterEffect(e0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetOperation(c20630765.ctop) + c:RegisterEffect(e1) + --attackup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(c20630765.defup) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(20630765,0)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetCost(c20630765.rmcost) + e3:SetTarget(c20630765.rmtg) + e3:SetOperation(c20630765.rmop) + c:RegisterEffect(e3) +end +function c20630765.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=re:GetHandler() + if re:IsActiveType(TYPE_MONSTER) and c~=e:GetHandler() and e:GetHandler():GetFlagEffect(1)>0 then + e:GetHandler():AddCounter(0x16,1) + end +end +function c20630765.defup(e,c) + return c:GetCounter(0x16)*300 +end +function c20630765.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x16,1,REASON_COST) end + Duel.RemoveCounter(tp,1,0,0x16,1,REASON_COST) +end +function c20630765.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c20630765.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c20638610.lua b/script/c20638610.lua index 9008410e..19dc2b2c 100644 --- a/script/c20638610.lua +++ b/script/c20638610.lua @@ -32,8 +32,8 @@ function c20638610.operation(e,tp,eg,ep,ev,re,r,rp) if tc:IsFaceup() and tc:IsControler(tp) and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 then if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c20638610.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c20638610.spfilter),tp,LOCATION_GRAVE+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 diff --git a/script/c20644748.lua b/script/c20644748.lua index b0286c2c..22c12110 100644 --- a/script/c20644748.lua +++ b/script/c20644748.lua @@ -1,97 +1,97 @@ ---宇宙の収縮 -function c20644748.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c20644748.condition) - c:RegisterEffect(e1) - --adjust - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EVENT_ADJUST) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c20644748.adjustop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EFFECT_MAX_MZONE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,1) - e3:SetValue(c20644748.mvalue) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EFFECT_MAX_SZONE) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(1,1) - e4:SetValue(c20644748.svalue) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetRange(LOCATION_SZONE) - e5:SetCode(EFFECT_CANNOT_ACTIVATE) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetTargetRange(1,1) - e5:SetValue(c20644748.aclimit) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD) - e6:SetRange(LOCATION_SZONE) - e6:SetCode(EFFECT_CANNOT_SSET) - e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e6:SetTargetRange(1,1) - e6:SetTarget(c20644748.setlimit) - c:RegisterEffect(e6) -end -function c20644748.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)<=5 - and Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)<=5 -end -function c20644748.adjustop(e,tp,eg,ep,ev,re,r,rp) - local phase=Duel.GetCurrentPhase() - if (phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()) or phase==PHASE_DAMAGE_CAL then return end - local c1=Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0) - local c2=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) - if c1>5 or c2>5 then - local g=Group.CreateGroup() - if c1>5 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g1=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_ONFIELD,0,c1-5,c1-5,nil) - g:Merge(g1) - end - if c2>5 then - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) - local g2=Duel.SelectMatchingCard(1-tp,nil,1-tp,LOCATION_ONFIELD,0,c2-5,c2-5,nil) - g:Merge(g2) - end - Duel.SendtoGrave(g,REASON_EFFECT) - Duel.Readjust() - end -end -function c20644748.mvalue(e,fp,rp,r) - return 5-Duel.GetFieldGroupCount(fp,LOCATION_SZONE,0) -end -function c20644748.svalue(e,fp,rp,r) - local ct=5 - for i=5,7 do - if Duel.GetFieldCard(fp,LOCATION_SZONE,i) then ct=ct-1 end - end - return ct-Duel.GetFieldGroupCount(fp,LOCATION_MZONE,0) -end -function c20644748.aclimit(e,re,tp) - if not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end - if re:IsActiveType(TYPE_FIELD) then - return not Duel.GetFieldCard(tp,LOCATION_SZONE,5) and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)>4 - elseif re:IsActiveType(TYPE_PENDULUM) then - return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)>4 - end - return false -end -function c20644748.setlimit(e,c,tp) - return c:IsType(TYPE_FIELD) and not Duel.GetFieldCard(tp,LOCATION_SZONE,5) and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)>4 -end +--宇宙の収縮 +function c20644748.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c20644748.condition) + c:RegisterEffect(e1) + --adjust + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c20644748.adjustop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_MAX_MZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + e3:SetValue(c20644748.mvalue) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_MAX_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,1) + e4:SetValue(c20644748.svalue) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_ACTIVATE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,1) + e5:SetValue(c20644748.aclimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EFFECT_CANNOT_SSET) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetTargetRange(1,1) + e6:SetTarget(c20644748.setlimit) + c:RegisterEffect(e6) +end +function c20644748.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)<=5 + and Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)<=5 +end +function c20644748.adjustop(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()) or phase==PHASE_DAMAGE_CAL then return end + local c1=Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0) + local c2=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + if c1>5 or c2>5 then + local g=Group.CreateGroup() + if c1>5 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_ONFIELD,0,c1-5,c1-5,nil) + g:Merge(g1) + end + if c2>5 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(1-tp,nil,1-tp,LOCATION_ONFIELD,0,c2-5,c2-5,nil) + g:Merge(g2) + end + Duel.SendtoGrave(g,REASON_EFFECT) + Duel.Readjust() + end +end +function c20644748.mvalue(e,fp,rp,r) + return 5-Duel.GetFieldGroupCount(fp,LOCATION_SZONE,0) +end +function c20644748.svalue(e,fp,rp,r) + local ct=5 + for i=5,7 do + if Duel.GetFieldCard(fp,LOCATION_SZONE,i) then ct=ct-1 end + end + return ct-Duel.GetFieldGroupCount(fp,LOCATION_MZONE,0) +end +function c20644748.aclimit(e,re,tp) + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + if re:IsActiveType(TYPE_FIELD) then + return not Duel.GetFieldCard(tp,LOCATION_SZONE,5) and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)>4 + elseif re:IsActiveType(TYPE_PENDULUM) then + return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)>4 + end + return false +end +function c20644748.setlimit(e,c,tp) + return c:IsType(TYPE_FIELD) and not Duel.GetFieldCard(tp,LOCATION_SZONE,5) and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)>4 +end diff --git a/script/c20686759.lua b/script/c20686759.lua index e38e79be..c6ae2e72 100644 --- a/script/c20686759.lua +++ b/script/c20686759.lua @@ -1,21 +1,6 @@ --D・レトロエンジン function c20686759.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(c20686759.target) - e1:SetOperation(c20686759.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(c20686759.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,c20686759.filter) --damage local e3=Effect.CreateEffect(c) e3:SetCategory(CATEGORY_DAMAGE) @@ -26,24 +11,8 @@ function c20686759.initial_effect(c) e3:SetOperation(c20686759.damop) c:RegisterEffect(e3) end -function c20686759.eqlimit(e,c) - return c:IsSetCard(0x26) -end function c20686759.filter(c) - return c:IsFaceup() and c:IsSetCard(0x26) -end -function c20686759.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c20686759.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c20686759.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c20686759.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c20686759.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 + return c:IsSetCard(0x26) end function c20686759.damcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c20758643.lua b/script/c20758643.lua index 5f32272c..a17e3dad 100644 --- a/script/c20758643.lua +++ b/script/c20758643.lua @@ -1,71 +1,71 @@ ---彼岸の悪鬼 グラバースニッチ -function c20758643.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c20758643.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(20758643,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,20758643) - e2:SetCondition(c20758643.sscon) - e2:SetTarget(c20758643.sstg) - e2:SetOperation(c20758643.ssop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(20758643,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1,20758643) - e3:SetTarget(c20758643.sptg) - e3:SetOperation(c20758643.spop) - c:RegisterEffect(e3) -end -function c20758643.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c20758643.sdcon(e) - return Duel.IsExistingMatchingCard(c20758643.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c20758643.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c20758643.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c20758643.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c20758643.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c20758643.ssop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end -function c20758643.spfilter(c,e,tp) - return c:IsSetCard(0xb1) and not c:IsCode(20758643) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c20758643.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c20758643.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c20758643.spop(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,c20758643.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--彼岸の悪鬼 グラバースニッチ +function c20758643.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c20758643.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(20758643,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,20758643) + e2:SetCondition(c20758643.sscon) + e2:SetTarget(c20758643.sstg) + e2:SetOperation(c20758643.ssop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(20758643,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,20758643) + e3:SetTarget(c20758643.sptg) + e3:SetOperation(c20758643.spop) + c:RegisterEffect(e3) +end +function c20758643.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c20758643.sdcon(e) + return Duel.IsExistingMatchingCard(c20758643.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c20758643.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c20758643.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c20758643.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c20758643.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c20758643.ssop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c20758643.spfilter(c,e,tp) + return c:IsSetCard(0xb1) and not c:IsCode(20758643) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c20758643.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c20758643.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c20758643.spop(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,c20758643.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c20765952.lua b/script/c20765952.lua index bad92894..d027af39 100644 --- a/script/c20765952.lua +++ b/script/c20765952.lua @@ -1,73 +1,73 @@ ---魔力無力化の仮面 -function c20765952.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(c20765952.target) - e1:SetOperation(c20765952.operation) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(20765952,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCondition(c20765952.damcon) - e2:SetTarget(c20765952.damtg) - e2:SetOperation(c20765952.damop) - c:RegisterEffect(e2) - --Destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetCondition(c20765952.descon) - e3:SetOperation(c20765952.desop) - c:RegisterEffect(e3) -end -function c20765952.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SPELL) -end -function c20765952.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local c=e:GetHandler() - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c20765952.filter(chkc) and chkc~=c end - if chk==0 then return Duel.IsExistingTarget(c20765952.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,c) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c20765952.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,c) -end -function c20765952.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 - c:SetCardTarget(tc) - end -end -function c20765952.damcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - return tc and Duel.GetTurnPlayer()==tc:GetControler() -end -function c20765952.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(Duel.GetTurnPlayer()) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,Duel.GetTurnPlayer(),500) -end -function c20765952.damop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c20765952.descon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end - local tc=c:GetFirstCardTarget() - return tc and eg:IsContains(tc) -end -function c20765952.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(), REASON_EFFECT) -end +--魔力無力化の仮面 +function c20765952.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(c20765952.target) + e1:SetOperation(c20765952.operation) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(20765952,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c20765952.damcon) + e2:SetTarget(c20765952.damtg) + e2:SetOperation(c20765952.damop) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c20765952.descon) + e3:SetOperation(c20765952.desop) + c:RegisterEffect(e3) +end +function c20765952.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL) +end +function c20765952.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c20765952.filter(chkc) and chkc~=c end + if chk==0 then return Duel.IsExistingTarget(c20765952.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c20765952.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,c) +end +function c20765952.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 + c:SetCardTarget(tc) + end +end +function c20765952.damcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and Duel.GetTurnPlayer()==tc:GetControler() +end +function c20765952.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(Duel.GetTurnPlayer()) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,Duel.GetTurnPlayer(),500) +end +function c20765952.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c20765952.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c20765952.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end diff --git a/script/c20773176.lua b/script/c20773176.lua index a2ffa4d9..5df6d506 100644 --- a/script/c20773176.lua +++ b/script/c20773176.lua @@ -1,53 +1,53 @@ ---炎獣の影霊衣-セフィラエグザ -function c20773176.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c20773176.splimit) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e3:SetCode(EVENT_DESTROYED) - e3:SetCountLimit(1,20773176) - e3:SetCondition(c20773176.condition) - e3:SetTarget(c20773176.target) - e3:SetOperation(c20773176.operation) - c:RegisterEffect(e3) -end -function c20773176.splimit(e,c,sump,sumtype,sumpos,targetp) - if c:IsSetCard(0xb4) or c:IsSetCard(0xc4) then return false end - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c20773176.filter(c,tp) - return c:IsReason(REASON_BATTLE+REASON_EFFECT) - and (c:IsSetCard(0xb4) or c:IsSetCard(0xc4)) and not c:IsCode(20773176) - and c:GetPreviousControler()==tp - and ((c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP)) - or (c:IsPreviousLocation(LOCATION_SZONE) and (c:GetPreviousSequence()==6 or c:GetPreviousSequence()==7))) -end -function c20773176.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c20773176.filter,1,nil,tp) -end -function c20773176.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c20773176.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--炎獣の影霊衣-セフィラエグザ +function c20773176.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c20773176.splimit) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e3:SetCode(EVENT_DESTROYED) + e3:SetCountLimit(1,20773176) + e3:SetCondition(c20773176.condition) + e3:SetTarget(c20773176.target) + e3:SetOperation(c20773176.operation) + c:RegisterEffect(e3) +end +function c20773176.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0xb4) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c20773176.filter(c,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) + and (c:IsSetCard(0xb4) or c:IsSetCard(0xc4)) and not c:IsCode(20773176) + and c:GetPreviousControler()==tp + and ((c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP)) + or (c:IsPreviousLocation(LOCATION_SZONE) and (c:GetPreviousSequence()==6 or c:GetPreviousSequence()==7))) +end +function c20773176.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c20773176.filter,1,nil,tp) +end +function c20773176.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c20773176.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c20785975.lua b/script/c20785975.lua index 50cf1507..c23222c9 100644 --- a/script/c20785975.lua +++ b/script/c20785975.lua @@ -9,7 +9,7 @@ function c20785975.initial_effect(c) e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c20785975.cost) diff --git a/script/c2084239.lua b/script/c2084239.lua index b6c3525a..c3259905 100644 --- a/script/c2084239.lua +++ b/script/c2084239.lua @@ -1,21 +1,21 @@ ---湿地草原 -function c2084239.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c2084239.tg) - e2:SetValue(1200) - c:RegisterEffect(e2) -end -function c2084239.tg(e,c) - local lv=c:GetLevel() - return lv>0 and lv<=2 and c:IsAttribute(ATTRIBUTE_WATER) and c:IsRace(RACE_AQUA) -end +--湿地草原 +function c2084239.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c2084239.tg) + e2:SetValue(1200) + c:RegisterEffect(e2) +end +function c2084239.tg(e,c) + local lv=c:GetLevel() + return lv>0 and lv<=2 and c:IsAttribute(ATTRIBUTE_WATER) and c:IsRace(RACE_AQUA) +end diff --git a/script/c20849090.lua b/script/c20849090.lua index fa08ca31..a81e5054 100644 --- a/script/c20849090.lua +++ b/script/c20849090.lua @@ -1,71 +1,71 @@ ---Kozmo Forerunner -function c20849090.initial_effect(c) - --cannot be targeted - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(aux.tgoval) - c:RegisterEffect(e1) - --recover - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_RECOVER) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCountLimit(1) - e2:SetCondition(c20849090.reccon) - e2:SetTarget(c20849090.rectg) - e2:SetOperation(c20849090.recop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCondition(c20849090.spcon) - e3:SetCost(c20849090.spcost) - e3:SetTarget(c20849090.sptg) - e3:SetOperation(c20849090.spop) - c:RegisterEffect(e3) -end -function c20849090.reccon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c20849090.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) -end -function c20849090.recop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end -function c20849090.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) -end -function c20849090.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and e:GetHandler():IsLocation(LOCATION_GRAVE) end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c20849090.spfilter(c,e,tp) - return c:IsSetCard(0xd2) and c:IsLevelBelow(6) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c20849090.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c20849090.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c20849090.spop(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,c20849090.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--Kozmo-フォアランナー +function c20849090.initial_effect(c) + --cannot be targeted + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(aux.tgoval) + c:RegisterEffect(e1) + --recover + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c20849090.reccon) + e2:SetTarget(c20849090.rectg) + e2:SetOperation(c20849090.recop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c20849090.spcon) + e3:SetCost(c20849090.spcost) + e3:SetTarget(c20849090.sptg) + e3:SetOperation(c20849090.spop) + c:RegisterEffect(e3) +end +function c20849090.reccon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c20849090.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) +end +function c20849090.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c20849090.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c20849090.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and e:GetHandler():IsLocation(LOCATION_GRAVE) end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c20849090.spfilter(c,e,tp) + return c:IsSetCard(0xd2) and c:IsLevelBelow(6) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c20849090.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c20849090.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c20849090.spop(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,c20849090.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c2091298.lua b/script/c2091298.lua index 0d228916..75d510c0 100644 --- a/script/c2091298.lua +++ b/script/c2091298.lua @@ -7,7 +7,7 @@ function c2091298.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(2091298,0)) e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(TIMING_DAMAGE_STEP) diff --git a/script/c20920083.lua b/script/c20920083.lua index 013ab3ad..bf41b7e5 100644 --- a/script/c20920083.lua +++ b/script/c20920083.lua @@ -20,7 +20,7 @@ function c20920083.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD) e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE) e3:SetRange(LOCATION_SZONE) e3:SetTargetRange(LOCATION_MZONE,0) e3:SetCondition(c20920083.con) diff --git a/script/c20932152.lua b/script/c20932152.lua index 315a4fc8..af5ff921 100644 --- a/script/c20932152.lua +++ b/script/c20932152.lua @@ -1,43 +1,43 @@ ---クイック・シンクロン -function c20932152.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c20932152.spcon) - e1:SetOperation(c20932152.spop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetValue(c20932152.synlimit) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(20932152) - c:RegisterEffect(e3) -end -function c20932152.synlimit(e,c) - if not c then return false end - return not aux.IsMaterialListSetCard(c,0x17) -end -function c20932152.spfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() -end -function c20932152.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c20932152.spfilter,tp,LOCATION_HAND,0,1,c) -end -function c20932152.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c20932152.spfilter,tp,LOCATION_HAND,0,1,1,c) - Duel.SendtoGrave(g,REASON_COST) -end +--クイック・シンクロン +function c20932152.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c20932152.spcon) + e1:SetOperation(c20932152.spop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(c20932152.synlimit) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(20932152) + c:RegisterEffect(e3) +end +function c20932152.synlimit(e,c) + if not c then return false end + return not aux.IsMaterialListSetCard(c,0x1017) +end +function c20932152.spfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c20932152.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c20932152.spfilter,tp,LOCATION_HAND,0,1,c) +end +function c20932152.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c20932152.spfilter,tp,LOCATION_HAND,0,1,1,c) + Duel.SendtoGrave(g,REASON_COST) +end diff --git a/script/c20951752.lua b/script/c20951752.lua index 6855f724..a9c9ce8e 100644 --- a/script/c20951752.lua +++ b/script/c20951752.lua @@ -30,7 +30,7 @@ function c20951752.initial_effect(c) e2:SetLabelObject(e3) --destroy local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(20951752,0)) + e4:SetDescription(aux.Stringid(20951752,1)) e4:SetCategory(CATEGORY_DESTROY) e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e4:SetCode(EVENT_SPSUMMON_SUCCESS) diff --git a/script/c2099841.lua b/script/c2099841.lua index 68572cdf..57a13c99 100644 --- a/script/c2099841.lua +++ b/script/c2099841.lua @@ -1,28 +1,28 @@ ---スマイル・ワールド -function c2099841.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c2099841.target) - e1:SetOperation(c2099841.activate) - c:RegisterEffect(e1) -end -function c2099841.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end -end -function c2099841.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(ct*100) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--スマイル・ワールド +function c2099841.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c2099841.target) + e1:SetOperation(c2099841.activate) + c:RegisterEffect(e1) +end +function c2099841.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c2099841.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*100) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c21007444.lua b/script/c21007444.lua index 554f98c5..84857c14 100644 --- a/script/c21007444.lua +++ b/script/c21007444.lua @@ -26,8 +26,7 @@ function c21007444.activate(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local sg=g:Filter(Card.IsRelateToEffect,nil,e) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if sg:GetCount()==0 or ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if sg:GetCount()==0 or ft<=0 or (sg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end if ft-3 and g:IsExists(c21105106.ritfilter1,1,nil,c:GetLevel(),g) -end -function c21105106.ritfilter1(c,lv,mg) - lv=lv-c:GetLevel() - if lv<2 then return false end - local mg2=mg:Clone() - mg2:Remove(Card.IsRace,nil,c:GetRace()) - return mg2:IsExists(c21105106.ritfilter2,1,nil,lv,mg2) -end -function c21105106.ritfilter2(c,lv,mg) - local clv=c:GetLevel() - lv=lv-clv - if lv<1 then return false end - local mg2=mg:Clone() - mg2:Remove(Card.IsRace,nil,c:GetRace()) - return mg2:IsExists(c21105106.ritfilter3,1,nil,lv) -end -function c21105106.ritfilter3(c,lv) - return c:GetLevel()==lv -end -function c21105106.ritual_custom_operation(c,mg) - local tp=c:GetControler() - local lv=c:GetLevel() - local g=mg:Filter(c21105106.filter,c,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g1=g:FilterSelect(tp,c21105106.ritfilter1,1,1,nil,lv,g) - local tc1=g1:GetFirst() - lv=lv-tc1:GetLevel() - g:Remove(Card.IsRace,nil,tc1:GetRace()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g2=g:FilterSelect(tp,c21105106.ritfilter2,1,1,nil,lv,g) - local tc2=g2:GetFirst() - lv=lv-tc2:GetLevel() - g:Remove(Card.IsRace,nil,tc2:GetRace()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g3=g:FilterSelect(tp,c21105106.ritfilter3,1,1,nil,lv) - g1:Merge(g2) - g1:Merge(g3) - c:SetMaterial(g1) -end +--sophiaの影霊衣 +function c21105106.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c21105106.splimit) + c:RegisterEffect(e1) + --cannot spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c21105106.discon) + e2:SetCost(c21105106.discost) + e2:SetOperation(c21105106.disop) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c21105106.rmcon) + e3:SetCost(c21105106.rmcost) + e3:SetTarget(c21105106.rmtg) + e3:SetOperation(c21105106.rmop) + c:RegisterEffect(e3) +end +function c21105106.splimit(e,se,sp,st) + return e:GetHandler():IsLocation(LOCATION_HAND) and bit.band(st,SUMMON_TYPE_RITUAL)==SUMMON_TYPE_RITUAL +end +function c21105106.mat_filter(c) + return false +end +function c21105106.discon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c21105106.cfilter(c) + return c:IsSetCard(0xb4) and c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c21105106.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() + and Duel.IsExistingMatchingCard(c21105106.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,c21105106.cfilter,tp,LOCATION_HAND,0,1,1,nil) + g:AddCard(e:GetHandler()) + Duel.SendtoGrave(g,REASON_DISCARD+REASON_COST) +end +function c21105106.disop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_MAIN1) + e1:SetTargetRange(0,1) + e1:SetTarget(c21105106.sumlimit) + Duel.RegisterEffect(e1,tp) +end +function c21105106.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsLocation(LOCATION_EXTRA) +end +function c21105106.rmcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_RITUAL +end +function c21105106.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 + and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==1 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e3,tp) +end +function c21105106.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c21105106.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end +function c21105106.filter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) +end +function c21105106.ritual_custom_condition(c,mg,ft) + local tp=c:GetControler() + local g=mg:Filter(c21105106.filter,c,tp) + return ft>-3 and g:IsExists(c21105106.ritfilter1,1,nil,c:GetLevel(),g) +end +function c21105106.ritfilter1(c,lv,mg) + lv=lv-c:GetLevel() + if lv<2 then return false end + local mg2=mg:Clone() + mg2:Remove(Card.IsRace,nil,c:GetRace()) + return mg2:IsExists(c21105106.ritfilter2,1,nil,lv,mg2) +end +function c21105106.ritfilter2(c,lv,mg) + local clv=c:GetLevel() + lv=lv-clv + if lv<1 then return false end + local mg2=mg:Clone() + mg2:Remove(Card.IsRace,nil,c:GetRace()) + return mg2:IsExists(c21105106.ritfilter3,1,nil,lv) +end +function c21105106.ritfilter3(c,lv) + return c:GetLevel()==lv +end +function c21105106.ritual_custom_operation(c,mg) + local tp=c:GetControler() + local lv=c:GetLevel() + local g=mg:Filter(c21105106.filter,c,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g1=g:FilterSelect(tp,c21105106.ritfilter1,1,1,nil,lv,g) + local tc1=g1:GetFirst() + lv=lv-tc1:GetLevel() + g:Remove(Card.IsRace,nil,tc1:GetRace()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g2=g:FilterSelect(tp,c21105106.ritfilter2,1,1,nil,lv,g) + local tc2=g2:GetFirst() + lv=lv-tc2:GetLevel() + g:Remove(Card.IsRace,nil,tc2:GetRace()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g3=g:FilterSelect(tp,c21105106.ritfilter3,1,1,nil,lv) + g1:Merge(g2) + g1:Merge(g3) + c:SetMaterial(g1) +end diff --git a/script/c21113684.lua b/script/c21113684.lua index 70f530ba..5e2c843b 100644 --- a/script/c21113684.lua +++ b/script/c21113684.lua @@ -60,7 +60,7 @@ function c21113684.splimit(e,se,sp,st) return true end function c21113684.ffilter(c) - return c:IsType(TYPE_SYNCHRO) and c:IsRace(RACE_SPELLCASTER) + return c:IsFusionType(TYPE_SYNCHRO) and c:IsRace(RACE_SPELLCASTER) end function c21113684.attackup(e,c) return c:GetCounter(0x1)*1000 diff --git a/script/c21143940.lua b/script/c21143940.lua index 313c0dc3..f4bc7d87 100644 --- a/script/c21143940.lua +++ b/script/c21143940.lua @@ -1,45 +1,45 @@ ---マスク・チェンジ -function c21143940.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c21143940.target) - e1:SetOperation(c21143940.activate) - c:RegisterEffect(e1) -end -function c21143940.tfilter(c,att,e,tp) - return c:IsSetCard(0xa008) and c:IsAttribute(att) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c21143940.filter(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x8) - and Duel.IsExistingMatchingCard(c21143940.tfilter,tp,LOCATION_EXTRA,0,1,nil,c:GetAttribute(),e,tp) -end -function c21143940.chkfilter(c,att) - return c:IsFaceup() and c:IsSetCard(0x8) and c:IsAttribute(att) -end -function c21143940.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c21143940.chkfilter(chkc,e:GetLabel()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c21143940.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,c21143940.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) - e:SetLabel(g:GetFirst():GetAttribute()) -end -function c21143940.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) then return end - local att=tc:GetAttribute() - if Duel.SendtoGrave(tc,REASON_EFFECT)==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c21143940.tfilter,tp,LOCATION_EXTRA,0,1,1,nil,att,e,tp) - if sg:GetCount()>0 then - Duel.BreakEffect() - Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEUP) - sg:GetFirst():CompleteProcedure() - end -end +--マスク・チェンジ +function c21143940.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c21143940.target) + e1:SetOperation(c21143940.activate) + c:RegisterEffect(e1) +end +function c21143940.tfilter(c,att,e,tp) + return c:IsSetCard(0xa008) and c:IsAttribute(att) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c21143940.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x8) + and Duel.IsExistingMatchingCard(c21143940.tfilter,tp,LOCATION_EXTRA,0,1,nil,c:GetAttribute(),e,tp) +end +function c21143940.chkfilter(c,att) + return c:IsFaceup() and c:IsSetCard(0x8) and c:IsAttribute(att) +end +function c21143940.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c21143940.chkfilter(chkc,e:GetLabel()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c21143940.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c21143940.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + e:SetLabel(g:GetFirst():GetAttribute()) +end +function c21143940.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local att=tc:GetAttribute() + if Duel.SendtoGrave(tc,REASON_EFFECT)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c21143940.tfilter,tp,LOCATION_EXTRA,0,1,1,nil,att,e,tp) + if sg:GetCount()>0 then + Duel.BreakEffect() + Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEUP) + sg:GetFirst():CompleteProcedure() + end +end diff --git a/script/c21208154.lua b/script/c21208154.lua index ca2fbb64..c6d9c0ff 100644 --- a/script/c21208154.lua +++ b/script/c21208154.lua @@ -36,9 +36,9 @@ function c21208154.initial_effect(c) e6:SetOperation(c21208154.regop) c:RegisterEffect(e6) end -function c21208154.ttcon(e,c) +function c21208154.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c21208154.ttop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,3,3) diff --git a/script/c21223277.lua b/script/c21223277.lua index fb9d5f15..39113114 100644 --- a/script/c21223277.lua +++ b/script/c21223277.lua @@ -18,6 +18,7 @@ function c21223277.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(21223277,1)) e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) diff --git a/script/c21313376.lua b/script/c21313376.lua index 8b8b5144..c6de8950 100644 --- a/script/c21313376.lua +++ b/script/c21313376.lua @@ -15,6 +15,7 @@ function c21313376.initial_effect(c) --destroy local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_BATTLE_DESTROYING) e2:SetCondition(aux.bdogcon) diff --git a/script/c21377582.lua b/script/c21377582.lua new file mode 100644 index 00000000..4f9747be --- /dev/null +++ b/script/c21377582.lua @@ -0,0 +1,132 @@ +--真竜剣皇マスターP +--Master Peace, the True Dracoslaying King +--Script by mercury233 +function c21377582.initial_effect(c) + --summon with s & t + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(21377582,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c21377582.otcon) + e1:SetOperation(c21377582.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --tribute check + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c21377582.valcheck) + c:RegisterEffect(e2) + --immune + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c21377582.efilter) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(21377582,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetHintTiming(0,0x1e0) + e4:SetCondition(c21377582.descon) + e4:SetCost(c21377582.descost) + e4:SetTarget(c21377582.destg) + e4:SetOperation(c21377582.desop) + c:RegisterEffect(e4) +end +function c21377582.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsReleasable() +end +function c21377582.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c21377582.otfilter,tp,LOCATION_ONFIELD,0,nil) + return (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and mg:GetCount()>=2) + or ((not Duel.CheckTribute or Duel.CheckTribute(c,1)) and mg:GetCount()>=1) +end +function c21377582.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c21377582.otfilter,tp,LOCATION_ONFIELD,0,nil) + local ct=2 + local g=Group.CreateGroup() + if Duel.GetTributeCount(c)0 and Duel.GetTributeCount(c)>=ct and mg:GetCount()>0 + and (g:GetCount()==0 or Duel.SelectYesNo(tp,aux.Stringid(21377582,1))) then + local ect=ct + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then ect=ect-1 end + ect=math.min(mg:GetCount(),ect) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g3=mg:Select(tp,1,ect,nil) + g:Merge(g3) + ct=ct-g3:GetCount() + end + if ct>0 then + local g4=Duel.SelectTribute(tp,c,ct,ct) + g:Merge(g4) + end + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c21377582.valcheck(e,c) + local g=c:GetMaterial() + local typ=0 + local tc=g:GetFirst() + while tc do + typ=bit.bor(typ,bit.band(tc:GetOriginalType(),0x7)) + tc=g:GetNext() + end + e:SetLabel(typ) + if bit.band(typ,TYPE_MONSTER)~=0 then + c:RegisterFlagEffect(0,RESET_EVENT+0xfe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(21377582,3)) + end + if bit.band(typ,TYPE_SPELL)~=0 then + c:RegisterFlagEffect(0,RESET_EVENT+0xfe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(21377582,4)) + end + if bit.band(typ,TYPE_TRAP)~=0 then + c:RegisterFlagEffect(0,RESET_EVENT+0xfe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(21377582,5)) + end +end +function c21377582.efilter(e,te) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE + and te:IsActiveType(e:GetLabelObject():GetLabel()) and te:GetOwner()~=e:GetOwner() +end +function c21377582.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c21377582.costfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsAbleToRemoveAsCost() +end +function c21377582.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c21377582.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c21377582.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c21377582.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsOnField() and chkc~=c end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c21377582.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c21452275.lua b/script/c21452275.lua index 46533e6d..b87c8485 100644 --- a/script/c21452275.lua +++ b/script/c21452275.lua @@ -1,48 +1,48 @@ ---アロマポット -function c21452275.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_FLIP) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetOperation(c21452275.flipop) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetCondition(c21452275.indcon) - e2:SetValue(1) - c:RegisterEffect(e2) - --Recover - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_RECOVER) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCountLimit(1) - e3:SetCondition(c21452275.reccon) - e3:SetTarget(c21452275.rectg) - e3:SetOperation(c21452275.recop) - c:RegisterEffect(e3) -end -function c21452275.flipop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(21452275,RESET_EVENT+0x1fe0000,0,1) -end -function c21452275.indcon(e) - return e:GetHandler():GetFlagEffect(21452275)~=0 -end -function c21452275.reccon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(21452275)~=0 -end -function c21452275.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,500) -end -function c21452275.recop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end +--アロマポット +function c21452275.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_FLIP) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetOperation(c21452275.flipop) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c21452275.indcon) + e2:SetValue(1) + c:RegisterEffect(e2) + --Recover + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_RECOVER) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCountLimit(1) + e3:SetCondition(c21452275.reccon) + e3:SetTarget(c21452275.rectg) + e3:SetOperation(c21452275.recop) + c:RegisterEffect(e3) +end +function c21452275.flipop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(21452275,RESET_EVENT+0x1fe0000,0,1) +end +function c21452275.indcon(e) + return e:GetHandler():GetFlagEffect(21452275)~=0 +end +function c21452275.reccon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(21452275)~=0 +end +function c21452275.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,500) +end +function c21452275.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c21454943.lua b/script/c21454943.lua index 50d57783..b718d13d 100644 --- a/script/c21454943.lua +++ b/script/c21454943.lua @@ -1,70 +1,70 @@ ---サイコ・コマンダー -function c21454943.initial_effect(c) - --atkdown - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetDescription(aux.Stringid(21454943,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c21454943.condition) - e1:SetCost(c21454943.cost) - e1:SetTarget(c21454943.target) - e1:SetOperation(c21454943.operation) - c:RegisterEffect(e1) -end -function c21454943.condition(e,tp,eg,ep,ev,re,r,rp) - local phase=Duel.GetCurrentPhase() - if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if a:IsControler(tp) then - e:SetLabelObject(d) - return a:IsFaceup() and a:IsRace(RACE_PSYCHO) and a:IsRelateToBattle() and d and d:IsFaceup() and d:IsRelateToBattle() - else - e:SetLabelObject(a) - return d:IsFaceup() and d:IsRace(RACE_PSYCHO) and d:IsRelateToBattle() and a and a:IsFaceup() and a:IsRelateToBattle() - end -end -function c21454943.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local bc=e:GetLabelObject() - if chk==0 then return Duel.CheckLPCost(tp,100) and e:GetHandler():GetFlagEffect(21454943)==0 - and (bc:IsAttackAbove(100) or bc:IsDefenseAbove(100)) end - local lp=Duel.GetLP(tp)-1 - local alp=100 - local maxpay=bc:GetAttack() - local def=bc:GetDefense() - if maxpay=500 then alp=Duel.AnnounceNumber(tp,100,200,300,400,500) - elseif lp>=400 then alp=Duel.AnnounceNumber(tp,100,200,300,400) - elseif lp>=300 then alp=Duel.AnnounceNumber(tp,100,200,300) - elseif lp>=200 then alp=Duel.AnnounceNumber(tp,100,200) - end - Duel.PayLPCost(tp,alp) - e:SetLabel(-alp) - e:GetHandler():RegisterFlagEffect(21454943,RESET_PHASE+PHASE_DAMAGE,0,1) -end -function c21454943.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local tc=e:GetLabelObject() - if chkc then return chkc==tc end - if chk==0 then return tc:IsCanBeEffectTarget(e) end - Duel.SetTargetCard(tc) -end -function c21454943.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=Duel.GetFirstTarget() - local c=e:GetHandler() - if not tc or not tc:IsRelateToEffect(e) or not tc:IsControler(1-tp) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(e:GetLabel()) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) -end +--サイコ・コマンダー +function c21454943.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetDescription(aux.Stringid(21454943,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c21454943.condition) + e1:SetCost(c21454943.cost) + e1:SetTarget(c21454943.target) + e1:SetOperation(c21454943.operation) + c:RegisterEffect(e1) +end +function c21454943.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a:IsControler(tp) then + e:SetLabelObject(d) + return a:IsFaceup() and a:IsRace(RACE_PSYCHO) and a:IsRelateToBattle() and d and d:IsFaceup() and d:IsRelateToBattle() + else + e:SetLabelObject(a) + return d and d:IsFaceup() and d:IsRace(RACE_PSYCHO) and d:IsRelateToBattle() and a and a:IsFaceup() and a:IsRelateToBattle() + end +end +function c21454943.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetLabelObject() + if chk==0 then return Duel.CheckLPCost(tp,100) and e:GetHandler():GetFlagEffect(21454943)==0 + and (bc:IsAttackAbove(100) or bc:IsDefenseAbove(100)) end + local lp=Duel.GetLP(tp)-1 + local alp=100 + local maxpay=bc:GetAttack() + local def=bc:GetDefense() + if maxpay=500 then alp=Duel.AnnounceNumber(tp,100,200,300,400,500) + elseif lp>=400 then alp=Duel.AnnounceNumber(tp,100,200,300,400) + elseif lp>=300 then alp=Duel.AnnounceNumber(tp,100,200,300) + elseif lp>=200 then alp=Duel.AnnounceNumber(tp,100,200) + end + Duel.PayLPCost(tp,alp) + e:SetLabel(-alp) + e:GetHandler():RegisterFlagEffect(21454943,RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c21454943.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetLabelObject() + if chkc then return chkc==tc end + if chk==0 then return tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) +end +function c21454943.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if not tc or not tc:IsRelateToEffect(e) or not tc:IsControler(1-tp) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(e:GetLabel()) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) +end diff --git a/script/c21466326.lua b/script/c21466326.lua index b4d76595..90265372 100644 --- a/script/c21466326.lua +++ b/script/c21466326.lua @@ -1,26 +1,26 @@ ---残骸爆破 -function c21466326.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c21466326.condition) - e1:SetTarget(c21466326.target) - e1:SetOperation(c21466326.activate) - c:RegisterEffect(e1) -end -function c21466326.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)>=30 -end -function c21466326.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(3000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,3000) -end -function c21466326.activate(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--残骸爆破 +function c21466326.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c21466326.condition) + e1:SetTarget(c21466326.target) + e1:SetOperation(c21466326.activate) + c:RegisterEffect(e1) +end +function c21466326.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)>=30 +end +function c21466326.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(3000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,3000) +end +function c21466326.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c21495657.lua b/script/c21495657.lua index 27bd30c5..90944c3d 100644 --- a/script/c21495657.lua +++ b/script/c21495657.lua @@ -1,61 +1,61 @@ ---宝竜星-セフィラフウシ -function c21495657.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c21495657.splimit) - c:RegisterEffect(e2) - --spsummon success - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCountLimit(1,21495657) - e3:SetCondition(c21495657.condition) - e3:SetTarget(c21495657.target) - e3:SetOperation(c21495657.operation) - c:RegisterEffect(e3) -end -function c21495657.splimit(e,c,sump,sumtype,sumpos,targetp) - if c:IsSetCard(0x9e) or c:IsSetCard(0xc4) then return false end - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c21495657.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM or e:GetHandler():IsPreviousLocation(LOCATION_DECK) -end -function c21495657.filter(c) - return c:IsFaceup() and (c:IsSetCard(0x9e) or c:IsSetCard(0xc4)) and not c:IsType(TYPE_TUNER) and not c:IsCode(21495657) -end -function c21495657.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c21495657.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c21495657.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c21495657.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c21495657.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_ADD_TYPE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(TYPE_TUNER) - tc:RegisterEffect(e1) - end - if c:IsRelateToEffect(e) then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetReset(RESET_EVENT+0x47e0000) - e2:SetValue(LOCATION_DECKBOT) - c:RegisterEffect(e2) - end -end +--宝竜星-セフィラフウシ +function c21495657.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c21495657.splimit) + c:RegisterEffect(e2) + --spsummon success + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCountLimit(1,21495657) + e3:SetCondition(c21495657.condition) + e3:SetTarget(c21495657.target) + e3:SetOperation(c21495657.operation) + c:RegisterEffect(e3) +end +function c21495657.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0x9e) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c21495657.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM or e:GetHandler():IsPreviousLocation(LOCATION_DECK) +end +function c21495657.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x9e) or c:IsSetCard(0xc4)) and not c:IsType(TYPE_TUNER) and not c:IsCode(21495657) +end +function c21495657.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c21495657.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c21495657.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c21495657.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c21495657.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(TYPE_TUNER) + tc:RegisterEffect(e1) + end + if c:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x47e0000) + e2:SetValue(LOCATION_DECKBOT) + c:RegisterEffect(e2) + end +end diff --git a/script/c21501505.lua b/script/c21501505.lua index 66526dd8..84392917 100644 --- a/script/c21501505.lua +++ b/script/c21501505.lua @@ -7,7 +7,7 @@ function c21501505.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(21501505,0)) e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCode(EVENT_CHAINING) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c21501505.condition) diff --git a/script/c21516908.lua b/script/c21516908.lua index 07e02a74..9ed17f6a 100644 --- a/script/c21516908.lua +++ b/script/c21516908.lua @@ -1,78 +1,78 @@ ---HSRマッハゴー・イータ -function c21516908.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --level up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(21516908,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c21516908.lvcost) - e1:SetTarget(c21516908.lvtg) - e1:SetOperation(c21516908.lvop) - c:RegisterEffect(e1) - --summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(21516908,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,21516908) - e2:SetCondition(c21516908.spcon) - e2:SetTarget(c21516908.sptg) - e2:SetOperation(c21516908.spop) - c:RegisterEffect(e2) -end -function c21516908.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c21516908.filter(c) - return c:IsFaceup() and c:GetLevel()>0 -end -function c21516908.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c21516908.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end -end -function c21516908.lvop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c21516908.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end -function c21516908.hsfilter(c) - return c:IsFaceup() and c:IsSetCard(0x2016) and c:IsType(TYPE_TUNER) -end -function c21516908.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c21516908.hsfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c21516908.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c21516908.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return not c:IsAttribute(ATTRIBUTE_WIND) -end -function c21516908.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c21516908.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end +--HSRマッハゴー・イータ +function c21516908.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --level up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(21516908,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c21516908.lvcost) + e1:SetTarget(c21516908.lvtg) + e1:SetOperation(c21516908.lvop) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(21516908,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,21516908) + e2:SetCondition(c21516908.spcon) + e2:SetTarget(c21516908.sptg) + e2:SetOperation(c21516908.spop) + c:RegisterEffect(e2) +end +function c21516908.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c21516908.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c21516908.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c21516908.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end +end +function c21516908.lvop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c21516908.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c21516908.hsfilter(c) + return c:IsFaceup() and c:IsSetCard(0x2016) and c:IsType(TYPE_TUNER) +end +function c21516908.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c21516908.hsfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c21516908.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c21516908.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsAttribute(ATTRIBUTE_WIND) +end +function c21516908.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c21516908.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c21521304.lua b/script/c21521304.lua index afd2142d..9fca2ca6 100644 --- a/script/c21521304.lua +++ b/script/c21521304.lua @@ -19,7 +19,7 @@ function c21521304.initial_effect(c) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetCost(c21521304.spcost) e2:SetTarget(c21521304.sptg) diff --git a/script/c21565445.lua b/script/c21565445.lua index 72d21cd6..ad741254 100644 --- a/script/c21565445.lua +++ b/script/c21565445.lua @@ -1,71 +1,71 @@ ---海皇子 ネプトアビス -function c21565445.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(21565445,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1,21565445) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c21565445.cost) - e1:SetTarget(c21565445.target) - e1:SetOperation(c21565445.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(21565445,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,21565446) - e2:SetCondition(c21565445.spcon) - e2:SetTarget(c21565445.sptg) - e2:SetOperation(c21565445.spop) - c:RegisterEffect(e2) -end -function c21565445.cfilter(c,tp) - return c:IsSetCard(0x77) and c:IsType(TYPE_MONSTER) and not c:IsCode(21565445) and c:IsAbleToGraveAsCost() - and Duel.IsExistingMatchingCard(c21565445.filter,tp,LOCATION_DECK,0,1,c) -end -function c21565445.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c21565445.cfilter,tp,LOCATION_DECK,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c21565445.cfilter,tp,LOCATION_DECK,0,1,1,nil,tp) - Duel.SendtoGrave(g,REASON_COST) -end -function c21565445.filter(c) - return c:IsSetCard(0x77) and not c:IsCode(21565445) and c:IsAbleToHand() -end -function c21565445.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c21565445.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c21565445.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c21565445.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_COST) and re:IsHasType(0x7e0) and re:IsActiveType(TYPE_MONSTER) - and re:GetHandler():IsAttribute(ATTRIBUTE_WATER) -end -function c21565445.spfilter(c,e,tp) - return c:IsSetCard(0x77) and not c:IsCode(21565445) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c21565445.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c21565445.spfilter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c21565445.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c21565445.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--海皇子 ネプトアビス +function c21565445.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(21565445,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1,21565445) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c21565445.cost) + e1:SetTarget(c21565445.target) + e1:SetOperation(c21565445.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(21565445,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,21565446) + e2:SetCondition(c21565445.spcon) + e2:SetTarget(c21565445.sptg) + e2:SetOperation(c21565445.spop) + c:RegisterEffect(e2) +end +function c21565445.cfilter(c,tp) + return c:IsSetCard(0x77) and c:IsType(TYPE_MONSTER) and not c:IsCode(21565445) and c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c21565445.filter,tp,LOCATION_DECK,0,1,c) +end +function c21565445.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c21565445.cfilter,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c21565445.cfilter,tp,LOCATION_DECK,0,1,1,nil,tp) + Duel.SendtoGrave(g,REASON_COST) +end +function c21565445.filter(c) + return c:IsSetCard(0x77) and not c:IsCode(21565445) and c:IsAbleToHand() +end +function c21565445.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c21565445.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c21565445.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c21565445.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_COST) and re:IsHasType(0x7e0) and re:IsActiveType(TYPE_MONSTER) + and re:GetHandler():IsAttribute(ATTRIBUTE_WATER) +end +function c21565445.spfilter(c,e,tp) + return c:IsSetCard(0x77) and not c:IsCode(21565445) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c21565445.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c21565445.spfilter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c21565445.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c21565445.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c21593977.lua b/script/c21593977.lua index cb1a3cc5..a119cac7 100644 --- a/script/c21593977.lua +++ b/script/c21593977.lua @@ -1,18 +1,18 @@ ---処刑人-マキュラ -function c21593977.initial_effect(c) - --activate trap in hand - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetOperation(c21593977.operation) - c:RegisterEffect(e1) -end -function c21593977.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_TRAP_ACT_IN_HAND) - e1:SetTargetRange(LOCATION_HAND,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end +--処刑人-マキュラ +function c21593977.initial_effect(c) + --activate trap in hand + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetOperation(c21593977.operation) + c:RegisterEffect(e1) +end +function c21593977.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c21597117.lua b/script/c21597117.lua index c043bf0e..805b5f14 100644 --- a/script/c21597117.lua +++ b/script/c21597117.lua @@ -1,36 +1,36 @@ ---ヒーロー見参 -function c21597117.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c21597117.condition) - e1:SetTarget(c21597117.target) - e1:SetOperation(c21597117.activate) - c:RegisterEffect(e1) -end -function c21597117.condition(e,tp,eg,ep,ev,re,r,rp) - return tp~=Duel.GetTurnPlayer() -end -function c21597117.spfilter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c21597117.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c21597117.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end -end -function c21597117.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or not Duel.IsPlayerCanSpecialSummon(tp) then return end - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - local sg=g:RandomSelect(1-tp,1) - local tc=sg:GetFirst() - if tc then - Duel.ConfirmCards(1-tp,tc) - if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - else - Duel.SendtoGrave(tc,REASON_EFFECT) - end - end -end +--ヒーロー見参 +function c21597117.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c21597117.condition) + e1:SetTarget(c21597117.target) + e1:SetOperation(c21597117.activate) + c:RegisterEffect(e1) +end +function c21597117.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c21597117.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c21597117.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c21597117.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end +end +function c21597117.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or not Duel.IsPlayerCanSpecialSummon(tp) then return end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local sg=g:RandomSelect(1-tp,1) + local tc=sg:GetFirst() + if tc then + Duel.ConfirmCards(1-tp,tc) + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + else + Duel.SendtoGrave(tc,REASON_EFFECT) + end + end +end diff --git a/script/c21598948.lua b/script/c21598948.lua index 936a7ac3..fac97b0b 100644 --- a/script/c21598948.lua +++ b/script/c21598948.lua @@ -1,76 +1,76 @@ ---モンスターBOX -function c21598948.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(c21598948.atktg1) - e1:SetOperation(c21598948.atkop) - c:RegisterEffect(e1) - --atk change - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(21598948,0)) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_COIN) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c21598948.atkcon) - e2:SetTarget(c21598948.atktg2) - e2:SetOperation(c21598948.atkop) - c:RegisterEffect(e2) - --maintain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c21598948.mtcon) - e3:SetOperation(c21598948.mtop) - c:RegisterEffect(e3) -end -function c21598948.atkcon(e,tp,eg,ep,ev,re,r,rp) - return tp~=Duel.GetTurnPlayer() -end -function c21598948.atktg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:SetLabel(0) - if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and tp~=Duel.GetTurnPlayer() then - e:SetLabel(1) - Duel.SetTargetCard(Duel.GetAttacker()) - Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) - end -end -function c21598948.atktg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:SetLabel(1) - Duel.SetTargetCard(Duel.GetAttacker()) - Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) -end -function c21598948.atkop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end - local a=Duel.GetAttacker() - if not a:IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(21598948,4)) - local coin=Duel.SelectOption(tp,aux.Stringid(21598948,2),aux.Stringid(21598948,3)) - local res=Duel.TossCoin(tp,1) - if coin~=res then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - a:RegisterEffect(e1) - end -end -function c21598948.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c21598948.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(21598948,1)) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--モンスターBOX +function c21598948.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(c21598948.atktg1) + e1:SetOperation(c21598948.atkop) + c:RegisterEffect(e1) + --atk change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(21598948,0)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_COIN) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c21598948.atkcon) + e2:SetTarget(c21598948.atktg2) + e2:SetOperation(c21598948.atkop) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c21598948.mtcon) + e3:SetOperation(c21598948.mtop) + c:RegisterEffect(e3) +end +function c21598948.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c21598948.atktg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:SetLabel(0) + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and tp~=Duel.GetTurnPlayer() then + e:SetLabel(1) + Duel.SetTargetCard(Duel.GetAttacker()) + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) + end +end +function c21598948.atktg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:SetLabel(1) + Duel.SetTargetCard(Duel.GetAttacker()) + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c21598948.atkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end + local a=Duel.GetAttacker() + if not a:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(21598948,4)) + local coin=Duel.SelectOption(tp,aux.Stringid(21598948,2),aux.Stringid(21598948,3)) + local res=Duel.TossCoin(tp,1) + if coin~=res then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + a:RegisterEffect(e1) + end +end +function c21598948.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c21598948.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(21598948,1)) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c21648584.lua b/script/c21648584.lua index 8a86c3bb..8c322973 100644 --- a/script/c21648584.lua +++ b/script/c21648584.lua @@ -1,55 +1,55 @@ ---RR-レディネス -function c21648584.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetOperation(c21648584.activate) - c:RegisterEffect(e1) - --no damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_GRAVE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCondition(c21648584.damcon) - e2:SetCost(c21648584.damcost) - e2:SetOperation(c21648584.damop) - c:RegisterEffect(e2) -end -function c21648584.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c21648584.indtg) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetValue(1) - Duel.RegisterEffect(e1,tp) -end -function c21648584.indtg(e,c) - return c:IsSetCard(0xba) -end -function c21648584.cfilter(c) - return c:IsSetCard(0xba) and c:IsType(TYPE_MONSTER) -end -function c21648584.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c21648584.cfilter,tp,LOCATION_GRAVE,0,1,nil) -end -function c21648584.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c21648584.damop(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(0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end +--RR-レディネス +function c21648584.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c21648584.activate) + c:RegisterEffect(e1) + --no damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c21648584.damcon) + e2:SetCost(c21648584.damcost) + e2:SetOperation(c21648584.damop) + c:RegisterEffect(e2) +end +function c21648584.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c21648584.indtg) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end +function c21648584.indtg(e,c) + return c:IsSetCard(0xba) +end +function c21648584.cfilter(c) + return c:IsSetCard(0xba) and c:IsType(TYPE_MONSTER) +end +function c21648584.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c21648584.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c21648584.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c21648584.damop(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(0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c21702241.lua b/script/c21702241.lua index 1968f269..66eae187 100644 --- a/script/c21702241.lua +++ b/script/c21702241.lua @@ -1,5 +1,6 @@ --反目の従者 function c21702241.initial_effect(c) + aux.AddEquipProcedure(c) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_EQUIP) @@ -28,19 +29,6 @@ function c21702241.initial_effect(c) e3:SetOperation(c21702241.damop) c:RegisterEffect(e3) end -function c21702241.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 c21702241.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 c21702241.damcon(e,tp,eg,ep,ev,re,r,rp) local tg=e:GetHandler():GetEquipTarget() return tg and eg:IsContains(tg) diff --git a/script/c21790410.lua b/script/c21790410.lua index 6cd8543e..39b858e7 100644 --- a/script/c21790410.lua +++ b/script/c21790410.lua @@ -42,9 +42,9 @@ function c21790410.eqop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end if c:IsFacedown() or not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c21790410.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c21790410.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if not Duel.Equip(tp,tc,c,true) then return end local e1=Effect.CreateEffect(c) e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) diff --git a/script/c21879581.lua b/script/c21879581.lua index 71884315..2042ffc8 100644 --- a/script/c21879581.lua +++ b/script/c21879581.lua @@ -1,29 +1,29 @@ ---シンクロ・バリアー -function c21879581.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c21879581.cost) - e1:SetOperation(c21879581.activate) - c:RegisterEffect(e1) -end -function c21879581.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsType,1,nil,TYPE_SYNCHRO) end - local g=Duel.SelectReleaseGroup(tp,Card.IsType,1,1,nil,TYPE_SYNCHRO) - Duel.Release(g,REASON_COST) -end -function c21879581.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(0) - e1:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e2,tp) -end +--シンクロ・バリアー +function c21879581.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c21879581.cost) + e1:SetOperation(c21879581.activate) + c:RegisterEffect(e1) +end +function c21879581.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsType,1,nil,TYPE_SYNCHRO) end + local g=Duel.SelectReleaseGroup(tp,Card.IsType,1,1,nil,TYPE_SYNCHRO) + Duel.Release(g,REASON_COST) +end +function c21879581.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(0) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c21900719.lua b/script/c21900719.lua index dd77b656..7f612797 100644 --- a/script/c21900719.lua +++ b/script/c21900719.lua @@ -1,15 +1,6 @@ --閃光の双剣-トライス function c21900719.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:SetCost(c21900719.cost) - e1:SetTarget(c21900719.target) - e1:SetOperation(c21900719.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,nil,nil,c21900719.cost) --Atk down local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -22,28 +13,8 @@ function c21900719.initial_effect(c) e3:SetCode(EFFECT_EXTRA_ATTACK) e3:SetValue(1) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) end function c21900719.cost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,e:GetHandler()) end Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) end -function c21900719.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 c21900719.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 diff --git a/script/c2191144.lua b/script/c2191144.lua index ccd83351..458ab9bf 100644 --- a/script/c2191144.lua +++ b/script/c2191144.lua @@ -7,6 +7,7 @@ function c2191144.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(2191144,0)) e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c21947653.lua b/script/c21947653.lua index 99aa30bc..de584502 100644 --- a/script/c21947653.lua +++ b/script/c21947653.lua @@ -22,6 +22,7 @@ function c21947653.initial_effect(c) e2:SetOperation(c21947653.operation) c:RegisterEffect(e2) end +c21947653.material_setcode=0x8 c21947653.dark_calling=true function c21947653.splimit(e,se,sp,st) return st==SUMMON_TYPE_FUSION+0x10 @@ -38,4 +39,4 @@ function c21947653.operation(e,tp,eg,ep,ev,re,r,rp) if tc and tc:IsRelateToEffect(e) then Duel.Destroy(tc,REASON_EFFECT) end -end \ No newline at end of file +end diff --git a/script/c21954587.lua b/script/c21954587.lua index 34715b78..8fa0696d 100644 --- a/script/c21954587.lua +++ b/script/c21954587.lua @@ -1,97 +1,97 @@ ---水精鱗-メガロアビス -function c21954587.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(21954587,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c21954587.spcost) - e1:SetTarget(c21954587.sptg) - e1:SetOperation(c21954587.spop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(21954587,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c21954587.thcon) - e2:SetTarget(c21954587.thtg) - e2:SetOperation(c21954587.thop) - c:RegisterEffect(e2) - --multiatk - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(21954587,2)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c21954587.atkcon) - e3:SetCost(c21954587.atkcost) - e3:SetTarget(c21954587.atktg) - e3:SetOperation(c21954587.atkop) - c:RegisterEffect(e3) -end -function c21954587.cfilter(c) - return c:IsAttribute(ATTRIBUTE_WATER) and c:IsDiscardable() and c:IsAbleToGraveAsCost() -end -function c21954587.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c21954587.cfilter,tp,LOCATION_HAND,0,2,e:GetHandler()) end - Duel.DiscardHand(tp,c21954587.cfilter,2,2,REASON_COST+REASON_DISCARD,e:GetHandler()) -end -function c21954587.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c21954587.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c21954587.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c21954587.thfilter(c) - return c:IsSetCard(0x75) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c21954587.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c21954587.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c21954587.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c21954587.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c21954587.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c21954587.rfilter(c) - return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAttribute(ATTRIBUTE_WATER) -end -function c21954587.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c21954587.rfilter,1,e:GetHandler()) end - local g=Duel.SelectReleaseGroup(tp,c21954587.rfilter,1,1,e:GetHandler()) - Duel.Release(g,REASON_COST) -end -function c21954587.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetEffectCount(EFFECT_EXTRA_ATTACK)==0 end -end -function c21954587.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--水精鱗-メガロアビス +function c21954587.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(21954587,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c21954587.spcost) + e1:SetTarget(c21954587.sptg) + e1:SetOperation(c21954587.spop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(21954587,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c21954587.thcon) + e2:SetTarget(c21954587.thtg) + e2:SetOperation(c21954587.thop) + c:RegisterEffect(e2) + --multiatk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(21954587,2)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c21954587.atkcon) + e3:SetCost(c21954587.atkcost) + e3:SetTarget(c21954587.atktg) + e3:SetOperation(c21954587.atkop) + c:RegisterEffect(e3) +end +function c21954587.cfilter(c) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsDiscardable() and c:IsAbleToGraveAsCost() +end +function c21954587.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c21954587.cfilter,tp,LOCATION_HAND,0,2,e:GetHandler()) end + Duel.DiscardHand(tp,c21954587.cfilter,2,2,REASON_COST+REASON_DISCARD,e:GetHandler()) +end +function c21954587.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c21954587.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c21954587.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c21954587.thfilter(c) + return c:IsSetCard(0x75) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c21954587.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c21954587.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c21954587.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c21954587.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c21954587.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c21954587.rfilter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAttribute(ATTRIBUTE_WATER) +end +function c21954587.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c21954587.rfilter,1,e:GetHandler()) end + local g=Duel.SelectReleaseGroup(tp,c21954587.rfilter,1,1,e:GetHandler()) + Duel.Release(g,REASON_COST) +end +function c21954587.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEffectCount(EFFECT_EXTRA_ATTACK)==0 end +end +function c21954587.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c21970285.lua b/script/c21970285.lua index e5e27829..9d3765ed 100644 --- a/script/c21970285.lua +++ b/script/c21970285.lua @@ -1,27 +1,27 @@ ---竜角の狩猟者 -function c21970285.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c21970285.efilter) - e2:SetValue(200) - c:RegisterEffect(e2) - --avoid battle damage - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetRange(LOCATION_PZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(c21970285.efilter) - e3:SetValue(1) - c:RegisterEffect(e3) -end -function c21970285.efilter(e,c) - return c:IsType(TYPE_NORMAL) -end +--竜角の狩猟者 +function c21970285.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c21970285.efilter) + e2:SetValue(200) + c:RegisterEffect(e2) + --avoid battle damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_PZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c21970285.efilter) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c21970285.efilter(e,c) + return c:IsType(TYPE_NORMAL) +end diff --git a/script/c22046459.lua b/script/c22046459.lua index 96404f3f..10e57337 100644 --- a/script/c22046459.lua +++ b/script/c22046459.lua @@ -1,14 +1,6 @@ --巨大化 function c22046459.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(c22046459.target) - e1:SetOperation(c22046459.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk Change local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -16,26 +8,6 @@ function c22046459.initial_effect(c) e2:SetCondition(c22046459.condition) e2:SetValue(c22046459.value) 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 c22046459.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 c22046459.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 c22046459.condition(e) return Duel.GetLP(0)~=Duel.GetLP(1) diff --git a/script/c22061412.lua b/script/c22061412.lua index fbd06694..83458fd9 100644 --- a/script/c22061412.lua +++ b/script/c22061412.lua @@ -1,56 +1,57 @@ ---E・HERO The シャイニング -function c22061412.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),true) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(22061412,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c22061412.thcon) - e2:SetTarget(c22061412.thtg) - e2:SetOperation(c22061412.thop) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c22061412.atkup) - c:RegisterEffect(e3) - --spsummon condition - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EFFECT_SPSUMMON_CONDITION) - e4:SetValue(aux.fuslimit) - c:RegisterEffect(e4) -end -function c22061412.atkfilter(c) - return c:IsFaceup() and c:IsSetCard(0x3008) -end -function c22061412.atkup(e,c) - return Duel.GetMatchingGroupCount(c22061412.atkfilter,c:GetControler(),LOCATION_REMOVED,0,nil)*300 -end -function c22061412.thcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)>0 -end -function c22061412.filter(c) - return c:IsFaceup() and c:IsSetCard(0x3008) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c22061412.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetControler()==tp and chkc:IsLocation(LOCATION_REMOVED) and c22061412.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c22061412.filter,tp,LOCATION_REMOVED,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c22061412.filter,tp,LOCATION_REMOVED,0,1,2,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c22061412.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - Duel.SendtoHand(sg,nil,REASON_EFFECT) -end +--E・HERO The シャイニング +function c22061412.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_LIGHT),true) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22061412,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c22061412.thcon) + e2:SetTarget(c22061412.thtg) + e2:SetOperation(c22061412.thop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c22061412.atkup) + c:RegisterEffect(e3) + --spsummon condition + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_SPSUMMON_CONDITION) + e4:SetValue(aux.fuslimit) + c:RegisterEffect(e4) +end +c22061412.material_setcode=0x8 +function c22061412.atkfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3008) +end +function c22061412.atkup(e,c) + return Duel.GetMatchingGroupCount(c22061412.atkfilter,c:GetControler(),LOCATION_REMOVED,0,nil)*300 +end +function c22061412.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)>0 +end +function c22061412.filter(c) + return c:IsFaceup() and c:IsSetCard(0x3008) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c22061412.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()==tp and chkc:IsLocation(LOCATION_REMOVED) and c22061412.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c22061412.filter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c22061412.filter,tp,LOCATION_REMOVED,0,1,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c22061412.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end diff --git a/script/c22091345.lua b/script/c22091345.lua index 07dc1ce8..158831f6 100644 --- a/script/c22091345.lua +++ b/script/c22091345.lua @@ -1,36 +1,36 @@ ---EMスパイク・イーグル -function c22091345.initial_effect(c) - --pierce - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(22091345,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1) - e1:SetCondition(c22091345.condition) - e1:SetTarget(c22091345.target) - e1:SetOperation(c22091345.operation) - c:RegisterEffect(e1) -end -function c22091345.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c22091345.filter(c) - return c:IsFaceup() and not c:IsHasEffect(EFFECT_PIERCE) -end -function c22091345.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(c22091345.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c22091345.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c22091345.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_PIERCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--EMスパイク・イーグル +function c22091345.initial_effect(c) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(22091345,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetCondition(c22091345.condition) + e1:SetTarget(c22091345.target) + e1:SetOperation(c22091345.operation) + c:RegisterEffect(e1) +end +function c22091345.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c22091345.filter(c) + return c:IsFaceup() and not c:IsHasEffect(EFFECT_PIERCE) +end +function c22091345.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(c22091345.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c22091345.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c22091345.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c22110647.lua b/script/c22110647.lua index 828ac863..5de36a6a 100644 --- a/script/c22110647.lua +++ b/script/c22110647.lua @@ -19,6 +19,7 @@ function c22110647.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(22110647,0)) e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e4:SetProperty(EFFECT_FLAG2_XMDETACH) e4:SetType(EFFECT_TYPE_IGNITION) e4:SetRange(LOCATION_MZONE) e4:SetCountLimit(1) diff --git a/script/c22147147.lua b/script/c22147147.lua index 370e1eb6..eab67237 100644 --- a/script/c22147147.lua +++ b/script/c22147147.lua @@ -1,5 +1,6 @@ --旋風剣 function c22147147.initial_effect(c) + aux.AddEquipProcedure(c,nil,c22147147.filter) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_EQUIP) @@ -29,24 +30,8 @@ function c22147147.initial_effect(c) e3:SetOperation(c22147147.desop) c:RegisterEffect(e3) end -function c22147147.eqlimit(e,c) - return c:IsSetCard(0xc008) -end function c22147147.filter(c) - return c:IsFaceup() and c:IsSetCard(0xc008) -end -function c22147147.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c22147147.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c22147147.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c22147147.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c22147147.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 + return c:IsSetCard(0xc008) end function c22147147.descon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetAttacker()==e:GetHandler():GetEquipTarget() diff --git a/script/c22160245.lua b/script/c22160245.lua index cd85c3dc..05879476 100644 --- a/script/c22160245.lua +++ b/script/c22160245.lua @@ -1,48 +1,49 @@ ---E-HERO インフェルノ・ウィング -function c22160245.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,58932615,21844576,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c22160245.splimit) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(22160245,0)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(aux.bdgcon) - e2:SetTarget(c22160245.damtg) - e2:SetOperation(c22160245.damop) - c:RegisterEffect(e2) - --pierce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e3) -end -c22160245.dark_calling=true -function c22160245.splimit(e,se,sp,st) - return st==SUMMON_TYPE_FUSION+0x10 -end -function c22160245.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - local bc=c:GetBattleTarget() - local dam=bc:GetAttack() - if bc:GetAttack() < bc:GetDefense() then dam=bc:GetDefense() end - if dam<0 then dam=0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c22160245.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--E-HERO インフェルノ・ウィング +function c22160245.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,58932615,21844576,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c22160245.splimit) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22160245,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(aux.bdgcon) + e2:SetTarget(c22160245.damtg) + e2:SetOperation(c22160245.damop) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) +end +c22160245.material_setcode=0x8 +c22160245.dark_calling=true +function c22160245.splimit(e,se,sp,st) + return st==SUMMON_TYPE_FUSION+0x10 +end +function c22160245.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local bc=c:GetBattleTarget() + local dam=bc:GetAttack() + if bc:GetAttack() < bc:GetDefense() then dam=bc:GetDefense() end + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c22160245.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c22174866.lua b/script/c22174866.lua index 985ad755..53f0bdae 100644 --- a/script/c22174866.lua +++ b/script/c22174866.lua @@ -1,50 +1,50 @@ ---アロマージ-カナンガ -function c22174866.initial_effect(c) - --atk & def - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetCondition(c22174866.adcon) - e1:SetValue(-500) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_RECOVER) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetCondition(c22174866.thcon) - e3:SetTarget(c22174866.thtg) - e3:SetOperation(c22174866.thop) - c:RegisterEffect(e3) -end -function c22174866.adcon(e) - local tp=e:GetHandlerPlayer() - return Duel.GetLP(tp)>Duel.GetLP(1-tp) -end -function c22174866.thcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp -end -function c22174866.thfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c22174866.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c22174866.thfilter(chkc) end - if chk==0 then return ep==tp and e:GetHandler():IsRelateToEffect(e) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c22174866.thfilter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c22174866.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end +--アロマージ-カナンガ +function c22174866.initial_effect(c) + --atk & def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCondition(c22174866.adcon) + e1:SetValue(-500) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_RECOVER) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetCondition(c22174866.thcon) + e3:SetTarget(c22174866.thtg) + e3:SetOperation(c22174866.thop) + c:RegisterEffect(e3) +end +function c22174866.adcon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetLP(tp)>Duel.GetLP(1-tp) +end +function c22174866.thcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c22174866.thfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c22174866.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c22174866.thfilter(chkc) end + if chk==0 then return ep==tp and e:GetHandler():IsRelateToEffect(e) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c22174866.thfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c22174866.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c22200403.lua b/script/c22200403.lua index 03e0b99d..5f7bc747 100644 --- a/script/c22200403.lua +++ b/script/c22200403.lua @@ -1,107 +1,107 @@ ---ヒュプノシスター -function c22200403.initial_effect(c) - --atk/def - 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:SetValue(800) - e1:SetCondition(c22200403.effcon) - e1:SetLabel(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(22200403,0)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_BATTLE_START) - e3:SetCondition(c22200403.effcon) - e3:SetTarget(c22200403.destg) - e3:SetOperation(c22200403.desop) - e3:SetLabel(2) - c:RegisterEffect(e3) - --must attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_MUST_ATTACK) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(0,LOCATION_MZONE) - e4:SetCondition(c22200403.effcon) - e4:SetLabel(3) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_MUST_ATTACK_MONSTER) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_MUST_BE_ATTACKED) - e6:SetCondition(c22200403.effcon) - e6:SetValue(1) - e6:SetLabel(3) - c:RegisterEffect(e6) - --draw - local e7=Effect.CreateEffect(c) - e7:SetDescription(aux.Stringid(22200403,1)) - e7:SetCategory(CATEGORY_DRAW) - e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e7:SetCode(EVENT_BATTLE_DESTROYING) - e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e7:SetCondition(c22200403.drcon1) - e7:SetTarget(c22200403.drtg) - e7:SetOperation(c22200403.drop) - e7:SetLabel(4) - c:RegisterEffect(e7) - local e8=Effect.CreateEffect(c) - e8:SetDescription(aux.Stringid(22200403,1)) - e8:SetCategory(CATEGORY_DRAW) - e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e8:SetCode(EVENT_DESTROYED) - e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e8:SetRange(LOCATION_MZONE) - e8:SetCondition(c22200403.drcon2) - e8:SetTarget(c22200403.drtg) - e8:SetOperation(c22200403.drop) - e8:SetLabel(4) - c:RegisterEffect(e8) -end -function c22200403.effcon(e) - local ct=0 - if Duel.GetFieldCard(0,LOCATION_SZONE,6) then ct=ct+1 end - if Duel.GetFieldCard(0,LOCATION_SZONE,7) then ct=ct+1 end - if Duel.GetFieldCard(1,LOCATION_SZONE,6) then ct=ct+1 end - if Duel.GetFieldCard(1,LOCATION_SZONE,7) then ct=ct+1 end - return ct>=e:GetLabel() -end -function c22200403.destg(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=e:GetHandler():GetBattleTarget() - if chk==0 then return tc and tc:IsFaceup() and tc:GetSummonType()==SUMMON_TYPE_PENDULUM end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) -end -function c22200403.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetBattleTarget() - if tc:IsRelateToBattle() then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c22200403.drcon1(e,tp,eg,ep,ev,re,r,rp) - return c22200403.effcon(e) - and e:GetHandler():IsRelateToBattle() -end -function c22200403.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c22200403.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end -function c22200403.drcon2(e,tp,eg,ep,ev,re,r,rp) - return c22200403.effcon(e) - and bit.band(r,REASON_EFFECT)~=0 and re:GetHandler()==e:GetHandler() -end +--ヒュプノシスター +function c22200403.initial_effect(c) + --atk/def + 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:SetValue(800) + e1:SetCondition(c22200403.effcon) + e1:SetLabel(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(22200403,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_START) + e3:SetCondition(c22200403.effcon) + e3:SetTarget(c22200403.destg) + e3:SetOperation(c22200403.desop) + e3:SetLabel(2) + c:RegisterEffect(e3) + --must attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_MUST_ATTACK) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetCondition(c22200403.effcon) + e4:SetLabel(3) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_MUST_ATTACK_MONSTER) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_MUST_BE_ATTACKED) + e6:SetCondition(c22200403.effcon) + e6:SetValue(1) + e6:SetLabel(3) + c:RegisterEffect(e6) + --draw + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(22200403,1)) + e7:SetCategory(CATEGORY_DRAW) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_BATTLE_DESTROYING) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e7:SetCondition(c22200403.drcon1) + e7:SetTarget(c22200403.drtg) + e7:SetOperation(c22200403.drop) + e7:SetLabel(4) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(22200403,1)) + e8:SetCategory(CATEGORY_DRAW) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e8:SetCode(EVENT_DESTROYED) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetRange(LOCATION_MZONE) + e8:SetCondition(c22200403.drcon2) + e8:SetTarget(c22200403.drtg) + e8:SetOperation(c22200403.drop) + e8:SetLabel(4) + c:RegisterEffect(e8) +end +function c22200403.effcon(e) + local ct=0 + if Duel.GetFieldCard(0,LOCATION_SZONE,6) then ct=ct+1 end + if Duel.GetFieldCard(0,LOCATION_SZONE,7) then ct=ct+1 end + if Duel.GetFieldCard(1,LOCATION_SZONE,6) then ct=ct+1 end + if Duel.GetFieldCard(1,LOCATION_SZONE,7) then ct=ct+1 end + return ct>=e:GetLabel() +end +function c22200403.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetHandler():GetBattleTarget() + if chk==0 then return tc and tc:IsFaceup() and tc:GetSummonType()==SUMMON_TYPE_PENDULUM end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c22200403.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc:IsRelateToBattle() then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c22200403.drcon1(e,tp,eg,ep,ev,re,r,rp) + return c22200403.effcon(e) + and e:GetHandler():IsRelateToBattle() +end +function c22200403.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c22200403.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c22200403.drcon2(e,tp,eg,ep,ev,re,r,rp) + return c22200403.effcon(e) + and bit.band(r,REASON_EFFECT)~=0 and re:GetHandler()==e:GetHandler() +end diff --git a/script/c22205600.lua b/script/c22205600.lua index 2936718c..3d51a54e 100644 --- a/script/c22205600.lua +++ b/script/c22205600.lua @@ -1,33 +1,33 @@ ---連鎖旋風 -function c22205600.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_LEAVE_FIELD) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c22205600.condition) - e1:SetTarget(c22205600.target) - e1:SetOperation(c22205600.activate) - c:RegisterEffect(e1) -end -function c22205600.cfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c22205600.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c22205600.cfilter,1,nil) -end -function c22205600.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c22205600.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c22205600.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c22205600.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,2,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c22205600.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,2,2,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) -end -function c22205600.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - Duel.Destroy(g,REASON_EFFECT) -end +--連鎖旋風 +function c22205600.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c22205600.condition) + e1:SetTarget(c22205600.target) + e1:SetOperation(c22205600.activate) + c:RegisterEffect(e1) +end +function c22205600.cfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c22205600.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c22205600.cfilter,1,nil) +end +function c22205600.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c22205600.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c22205600.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c22205600.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,2,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c22205600.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,2,2,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) +end +function c22205600.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c22211622.lua b/script/c22211622.lua new file mode 100644 index 00000000..7fc9ac2c --- /dev/null +++ b/script/c22211622.lua @@ -0,0 +1,146 @@ +--覇王門無限 +--Supreme King Gate Infinity +--Scripted by Eerie Code +function c22211622.initial_effect(c) + aux.EnablePendulumAttribute(c) + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_PZONE) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e1:SetTargetRange(1,0) + e1:SetCondition(c22211622.splimcon) + e1:SetTarget(c22211622.splimit) + c:RegisterEffect(e1) + --gain lp + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22211622,0)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c22211622.rccon) + e2:SetTarget(c22211622.rctg) + e2:SetOperation(c22211622.rcop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(22211622,1)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c22211622.sptg) + e3:SetOperation(c22211622.spop) + c:RegisterEffect(e3) + --pendulum + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(22211622,2)) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_DESTROYED) + e6:SetProperty(EFFECT_FLAG_DELAY) + e6:SetCondition(c22211622.pencon) + e6:SetTarget(c22211622.pentg) + e6:SetOperation(c22211622.penop) + c:RegisterEffect(e6) +end +function c22211622.splimcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>0 +end +function c22211622.splimit(e,c,sump,sumtype,sumpos,targetp) + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c22211622.rccfilter(c) + return c:IsFaceup() and c:IsCode(13331639) +end +function c22211622.rccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c22211622.rccfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c22211622.rctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,g:GetFirst():GetAttack()) +end +function c22211622.rcop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Recover(p,tc:GetAttack(),REASON_EFFECT) + end +end +function c22211622.spfilter(c,e,tp) + return c:IsType(TYPE_XYZ+TYPE_PENDULUM) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c22211622.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(tp) and chkc:IsFaceup() and chkc~=c end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,c) + and Duel.IsExistingMatchingCard(c22211622.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,1,c) + g:AddCard(c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c22211622.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end + local dg=Group.FromCards(c,tc) + if Duel.Destroy(dg,REASON_EFFECT)==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c22211622.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local sc=g:GetFirst() + if Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + sc:RegisterEffect(e4,true) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e5:SetValue(1) + sc:RegisterEffect(e5,true) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + sc:RegisterEffect(e6,true) + end + Duel.SpecialSummonComplete() + end +end +function c22211622.pencon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() +end +function c22211622.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end +end +function c22211622.penop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end diff --git a/script/c22227683.lua b/script/c22227683.lua index cf01a5f1..8ce0845e 100644 --- a/script/c22227683.lua +++ b/script/c22227683.lua @@ -1,90 +1,89 @@ ---ブンボーグ004 -function c22227683.initial_effect(c) - --atk/def up - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c22227683.condition) - e1:SetTarget(c22227683.target) - e1:SetOperation(c22227683.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(aux.bdocon) - e2:SetTarget(c22227683.sptg) - e2:SetOperation(c22227683.spop) - c:RegisterEffect(e2) -end -function c22227683.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetBattleTarget()~=nil -end -function c22227683.tgfilter(c) - return c:IsSetCard(0xab) and c:IsType(TYPE_MONSTER) and not c:IsCode(22227683) and c:IsAbleToGrave() -end -function c22227683.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(22227683)==0 - and Duel.IsExistingMatchingCard(c22227683.tgfilter,tp,LOCATION_DECK,0,1,nil) end - e:GetHandler():RegisterFlagEffect(22227683,RESET_CHAIN,0,1) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c22227683.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c22227683.tgfilter,tp,LOCATION_DECK,0,1,1,nil) - local tc=g:GetFirst() - if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) - and c:IsRelateToBattle() and c:IsFaceup() then - local lv=tc:GetLevel() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(lv*500) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - end - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(0,1) - e3:SetValue(1) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) -end -function c22227683.spfilter1(c,e,tp) - return c:IsSetCard(0xab) and c:IsType(TYPE_MONSTER) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c22227683.spfilter2,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,c,e,tp,c:GetLevel()) -end -function c22227683.spfilter2(c,e,tp,lv) - return c:IsSetCard(0xab) and c:IsType(TYPE_MONSTER) and c:GetLevel()~=lv - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c22227683.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingMatchingCard(c22227683.spfilter1,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE+LOCATION_HAND) -end -function c22227683.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectMatchingCard(tp,c22227683.spfilter1,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g1:GetCount()>0 then - local tc=g1:GetFirst() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectMatchingCard(tp,c22227683.spfilter2,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,tc,e,tp,tc:GetLevel()) - g1:Merge(g2) - if g1:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--ブンボーグ004 +function c22227683.initial_effect(c) + --atk/def up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c22227683.condition) + e1:SetTarget(c22227683.target) + e1:SetOperation(c22227683.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(aux.bdocon) + e2:SetTarget(c22227683.sptg) + e2:SetOperation(c22227683.spop) + c:RegisterEffect(e2) +end +function c22227683.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattleTarget()~=nil +end +function c22227683.tgfilter(c) + return c:IsSetCard(0xab) and c:IsType(TYPE_MONSTER) and not c:IsCode(22227683) and c:IsAbleToGrave() +end +function c22227683.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(22227683)==0 + and Duel.IsExistingMatchingCard(c22227683.tgfilter,tp,LOCATION_DECK,0,1,nil) end + e:GetHandler():RegisterFlagEffect(22227683,RESET_CHAIN,0,1) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c22227683.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c22227683.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) + and c:IsRelateToBattle() and c:IsFaceup() then + local lv=tc:GetLevel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(lv*500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(0,1) + e3:SetValue(1) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c22227683.spfilter1(c,e,tp) + return c:IsSetCard(0xab) and c:IsType(TYPE_MONSTER) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c22227683.spfilter2,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,c,e,tp,c:GetLevel()) +end +function c22227683.spfilter2(c,e,tp,lv) + return c:IsSetCard(0xab) and c:IsType(TYPE_MONSTER) and c:GetLevel()~=lv + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c22227683.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c22227683.spfilter1,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE+LOCATION_HAND) +end +function c22227683.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c22227683.spfilter1),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) + if g1:GetCount()>0 then + local tc=g1:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c22227683.spfilter2),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,tc,e,tp,tc:GetLevel()) + g1:Merge(g2) + Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c22318971.lua b/script/c22318971.lua index 9a338584..bbc66b28 100644 --- a/script/c22318971.lua +++ b/script/c22318971.lua @@ -1,55 +1,55 @@ ---一角獣の使い魔 -function c22318971.initial_effect(c) - --remove - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(22318971,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BE_BATTLE_TARGET) - e1:SetCondition(c22318971.condition) - e1:SetCost(c22318971.cost) - e1:SetTarget(c22318971.target) - e1:SetOperation(c22318971.operation) - c:RegisterEffect(e1) -end -function c22318971.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPosition(POS_FACEUP_DEFENSE) -end -function c22318971.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c22318971.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemove() end - Duel.SetTargetCard(Duel.GetAttacker()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) -end -function c22318971.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - e1:SetCountLimit(1) - e1:SetCondition(c22318971.retcon) - e1:SetOperation(c22318971.retop) - Duel.RegisterEffect(e1,tp) - local ac=Duel.GetFirstTarget() - if ac:IsRelateToEffect(e) and ac:IsFaceup() then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_MUST_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - ac:RegisterEffect(e2) - end - end -end -function c22318971.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c22318971.retop(e,tp,eg,ep,ev,re,r,rp) - Duel.ReturnToField(e:GetOwner()) -end +--一角獣の使い魔 +function c22318971.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(22318971,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c22318971.condition) + e1:SetCost(c22318971.cost) + e1:SetTarget(c22318971.target) + e1:SetOperation(c22318971.operation) + c:RegisterEffect(e1) +end +function c22318971.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPosition(POS_FACEUP_DEFENSE) +end +function c22318971.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c22318971.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() end + Duel.SetTargetCard(Duel.GetAttacker()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c22318971.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + e1:SetCountLimit(1) + e1:SetCondition(c22318971.retcon) + e1:SetOperation(c22318971.retop) + Duel.RegisterEffect(e1,tp) + local ac=Duel.GetFirstTarget() + if ac:IsRelateToEffect(e) and ac:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + ac:RegisterEffect(e2) + end + end +end +function c22318971.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c22318971.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetOwner()) +end diff --git a/script/c22346472.lua b/script/c22346472.lua index 8eb0c4e9..8b510105 100644 --- a/script/c22346472.lua +++ b/script/c22346472.lua @@ -1,32 +1,32 @@ ---破天荒な風 -function c22346472.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c22346472.target) - e1:SetOperation(c22346472.activate) - c:RegisterEffect(e1) -end -function c22346472.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) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c22346472.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_STANDBY+RESET_SELF_TURN) - e1:SetValue(1000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - end -end +--破天荒な風 +function c22346472.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c22346472.target) + e1:SetOperation(c22346472.activate) + c:RegisterEffect(e1) +end +function c22346472.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) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c22346472.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_STANDBY+RESET_SELF_TURN) + e1:SetValue(1000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c22359980.lua b/script/c22359980.lua index 8dc26af4..4c88f610 100644 --- a/script/c22359980.lua +++ b/script/c22359980.lua @@ -1,76 +1,76 @@ ---銀幕の鏡壁 -function c22359980.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(0,TIMING_DAMAGE_STEP) - e1:SetCondition(c22359980.condition) - e1:SetTarget(c22359980.target) - e1:SetOperation(c22359980.operation) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c22359980.operation) - c:RegisterEffect(e2) - --atkchange - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_SET_ATTACK_FINAL) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetTarget(c22359980.atktg) - e3:SetValue(c22359980.atkval) - c:RegisterEffect(e3) - local g=Group.CreateGroup() - g:KeepAlive() - e1:SetLabelObject(g) - e2:SetLabelObject(g) - e3:SetLabelObject(g) - --maintain - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EVENT_PHASE+PHASE_STANDBY) - e4:SetRange(LOCATION_SZONE) - e4:SetCountLimit(1) - e4:SetCondition(c22359980.mtcon) - e4:SetOperation(c22359980.mtop) - c:RegisterEffect(e4) -end -function c22359980.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c22359980.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:GetLabelObject():Clear() -end -function c22359980.operation(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - if a and a:IsControler(1-tp) and a:IsFaceup() and a:IsLocation(LOCATION_MZONE) then - e:GetLabelObject():AddCard(a) - if a:GetFlagEffect(22359980)==0 then - a:RegisterFlagEffect(22359980,RESET_EVENT+0x1fe0000,0,1) - end - end -end -function c22359980.atktg(e,c) - return c:GetFlagEffect(22359980)~=0 and e:GetLabelObject():IsContains(c) -end -function c22359980.atkval(e,c) - return c:GetAttack()/2 -end -function c22359980.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c22359980.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,2000) and Duel.SelectYesNo(tp,aux.Stringid(22359980,0)) then - Duel.PayLPCost(tp,2000) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--銀幕の鏡壁 +function c22359980.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(0,TIMING_DAMAGE_STEP) + e1:SetCondition(c22359980.condition) + e1:SetTarget(c22359980.target) + e1:SetOperation(c22359980.operation) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c22359980.operation) + c:RegisterEffect(e2) + --atkchange + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c22359980.atktg) + e3:SetValue(c22359980.atkval) + c:RegisterEffect(e3) + local g=Group.CreateGroup() + g:KeepAlive() + e1:SetLabelObject(g) + e2:SetLabelObject(g) + e3:SetLabelObject(g) + --maintain + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c22359980.mtcon) + e4:SetOperation(c22359980.mtop) + c:RegisterEffect(e4) +end +function c22359980.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c22359980.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetLabelObject():Clear() +end +function c22359980.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if a and a:IsControler(1-tp) and a:IsFaceup() and a:IsLocation(LOCATION_MZONE) then + e:GetLabelObject():AddCard(a) + if a:GetFlagEffect(22359980)==0 then + a:RegisterFlagEffect(22359980,RESET_EVENT+0x1fe0000,0,1) + end + end +end +function c22359980.atktg(e,c) + return c:GetFlagEffect(22359980)~=0 and e:GetLabelObject():IsContains(c) +end +function c22359980.atkval(e,c) + return c:GetAttack()/2 +end +function c22359980.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c22359980.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,2000) and Duel.SelectYesNo(tp,aux.Stringid(22359980,0)) then + Duel.PayLPCost(tp,2000) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c22404675.lua b/script/c22404675.lua index d5907092..0814b735 100644 --- a/script/c22404675.lua +++ b/script/c22404675.lua @@ -1,78 +1,78 @@ ---雷帝家臣ミスラ -function c22404675.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,22404675) - e1:SetTarget(c22404675.sptg) - e1:SetOperation(c22404675.spop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_RELEASE) - e2:SetCountLimit(1,22404676) - e2:SetCondition(c22404675.sumcon) - e2:SetTarget(c22404675.sumtg) - e2:SetOperation(c22404675.sumop) - c:RegisterEffect(e2) -end -function c22404675.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsPlayerCanSpecialSummonMonster(tp,22404676,0,0x4011,800,1000,1,RACE_THUNDER,ATTRIBUTE_LIGHT) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) -end -function c22404675.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not Duel.IsPlayerAffectedByEffect(tp,59822133) and c:IsRelateToEffect(e) then - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then - Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) - else - Duel.SendtoGrave(c,REASON_EFFECT) - end - if Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,22404676,0,0x4011,800,1000,1,RACE_THUNDER,ATTRIBUTE_LIGHT) then - local token=Duel.CreateToken(tp,22404676) - Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) - end - Duel.SpecialSummonComplete() - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetTarget(c22404675.splimit) - Duel.RegisterEffect(e1,tp) -end -function c22404675.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return c:IsLocation(LOCATION_EXTRA) -end -function c22404675.sumcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_SUMMON) and Duel.GetTurnPlayer()==tp -end -function c22404675.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanSummon(tp) end -end -function c22404675.sumop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,22404675)~=0 then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetTargetRange(LOCATION_HAND,0) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetValue(0x1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_EXTRA_SET_COUNT) - Duel.RegisterEffect(e2,tp) - Duel.RegisterFlagEffect(tp,22404675,RESET_PHASE+PHASE_END,0,1) -end +--雷帝家臣ミスラ +function c22404675.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,22404675) + e1:SetTarget(c22404675.sptg) + e1:SetOperation(c22404675.spop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_RELEASE) + e2:SetCountLimit(1,22404676) + e2:SetCondition(c22404675.sumcon) + e2:SetTarget(c22404675.sumtg) + e2:SetOperation(c22404675.sumop) + c:RegisterEffect(e2) +end +function c22404675.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanSpecialSummonMonster(tp,22404676,0,0x4011,800,1000,1,RACE_THUNDER,ATTRIBUTE_LIGHT) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c22404675.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not Duel.IsPlayerAffectedByEffect(tp,59822133) and c:IsRelateToEffect(e) then + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) + else + Duel.SendtoGrave(c,REASON_EFFECT) + end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,22404676,0,0x4011,800,1000,1,RACE_THUNDER,ATTRIBUTE_LIGHT) then + local token=Duel.CreateToken(tp,22404676) + Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + end + Duel.SpecialSummonComplete() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c22404675.splimit) + Duel.RegisterEffect(e1,tp) +end +function c22404675.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsLocation(LOCATION_EXTRA) +end +function c22404675.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_SUMMON) and Duel.GetTurnPlayer()==tp +end +function c22404675.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanSummon(tp) end +end +function c22404675.sumop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,22404675)~=0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetValue(0x1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_EXTRA_SET_COUNT) + Duel.RegisterEffect(e2,tp) + Duel.RegisterFlagEffect(tp,22404675,RESET_PHASE+PHASE_END,0,1) +end diff --git a/script/c22499034.lua b/script/c22499034.lua new file mode 100644 index 00000000..0c26de02 --- /dev/null +++ b/script/c22499034.lua @@ -0,0 +1,73 @@ +--真竜戦士イグニスH +--Ignis Heat, the True Dracowarrior +--Script by nekrozar +function c22499034.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(22499034,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c22499034.otcon) + e1:SetOperation(c22499034.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22499034,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c22499034.thcon) + e2:SetTarget(c22499034.thtg) + e2:SetOperation(c22499034.thop) + c:RegisterEffect(e2) +end +function c22499034.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsReleasable() +end +function c22499034.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c22499034.otfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c22499034.otop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=Duel.SelectMatchingCard(tp,c22499034.otfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c22499034.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and rp~=tp +end +function c22499034.thfilter(c,tp) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:GetType()==0x20002 + and (c:IsAbleToHand() or (c:GetActivateEffect():IsActivatable(tp) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0)) +end +function c22499034.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c22499034.thfilter,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c22499034.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(22499034,3)) + local g=Duel.SelectMatchingCard(tp,c22499034.thfilter,tp,LOCATION_DECK,0,1,1,nil,tp) + local tc=g:GetFirst() + if tc then + local b1=tc:IsAbleToHand() + local b2=tc:GetActivateEffect():IsActivatable(tp) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + if b1 and (not b2 or Duel.SelectYesNo(tp,aux.Stringid(22499034,2))) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + else + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + local cost=te:GetCost() + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,te,0,tp,tp,Duel.GetCurrentChain()) + end + end +end diff --git a/script/c2250266.lua b/script/c2250266.lua index d2664501..291dbe25 100644 --- a/script/c2250266.lua +++ b/script/c2250266.lua @@ -1,90 +1,90 @@ ---D・ステープラン -function c2250266.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_LEAVE_FIELD_P) - e1:SetOperation(c2250266.check) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(2250266,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_BATTLE_DESTROYED) - e2:SetCondition(c2250266.cona) - e2:SetOperation(c2250266.opa) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e3:SetCondition(c2250266.cona2) - e3:SetValue(c2250266.atlimit) - c:RegisterEffect(e3) - --def - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e4:SetCondition(c2250266.cond) - e4:SetValue(1) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(2250266,1)) - e5:SetCategory(CATEGORY_POSITION) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e5:SetCode(EVENT_BATTLED) - e5:SetCondition(c2250266.cond) - e5:SetTarget(c2250266.tgd2) - e5:SetOperation(c2250266.opd2) - c:RegisterEffect(e5) -end -function c2250266.check(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsDisabled() and c:IsAttackPos() then e:SetLabel(1) - else e:SetLabel(0) end -end -function c2250266.cona(e,tp,eg,ep,ev,re,r,rp) - return e:GetLabelObject():GetLabel()==1 -end -function c2250266.opa(e,tp,eg,ep,ev,re,r,rp) - local rc=e:GetHandler():GetReasonCard() - if rc:IsRelateToBattle() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-300) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1) - end -end -function c2250266.cona2(e) - return e:GetHandler():IsAttackPos() -end -function c2250266.atlimit(e,c) - return c~=e:GetHandler() -end -function c2250266.cond(e) - return not e:GetHandler():IsDisabled() and e:GetHandler():IsDefensePos() -end -function c2250266.filter(c) - return c:IsFaceup() and c:IsAttackPos() -end -function c2250266.tgd2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c2250266.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATTACK) - local g=Duel.SelectTarget(tp,c2250266.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c2250266.opd2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local c=e:GetHandler() - if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackPos() - and Duel.ChangePosition(tc,POS_FACEUP_DEFENSE)~=0 and c:IsRelateToBattle() then - Duel.ChangePosition(e:GetHandler(),POS_FACEUP_ATTACK,0,POS_FACEUP_ATTACK,0) - end -end +--D・ステープラン +function c2250266.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_LEAVE_FIELD_P) + e1:SetOperation(c2250266.check) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(2250266,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c2250266.cona) + e2:SetOperation(c2250266.opa) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e3:SetCondition(c2250266.cona2) + e3:SetValue(c2250266.atlimit) + c:RegisterEffect(e3) + --def + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetCondition(c2250266.cond) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(2250266,1)) + e5:SetCategory(CATEGORY_POSITION) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_BATTLED) + e5:SetCondition(c2250266.cond) + e5:SetTarget(c2250266.tgd2) + e5:SetOperation(c2250266.opd2) + c:RegisterEffect(e5) +end +function c2250266.check(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsDisabled() and c:IsAttackPos() then e:SetLabel(1) + else e:SetLabel(0) end +end +function c2250266.cona(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()==1 +end +function c2250266.opa(e,tp,eg,ep,ev,re,r,rp) + local rc=e:GetHandler():GetReasonCard() + if rc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-300) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1) + end +end +function c2250266.cona2(e) + return e:GetHandler():IsAttackPos() +end +function c2250266.atlimit(e,c) + return c~=e:GetHandler() +end +function c2250266.cond(e) + return not e:GetHandler():IsDisabled() and e:GetHandler():IsDefensePos() +end +function c2250266.filter(c) + return c:IsFaceup() and c:IsAttackPos() +end +function c2250266.tgd2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c2250266.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATTACK) + local g=Duel.SelectTarget(tp,c2250266.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c2250266.opd2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackPos() + and Duel.ChangePosition(tc,POS_FACEUP_DEFENSE)~=0 and c:IsRelateToBattle() then + Duel.ChangePosition(e:GetHandler(),POS_FACEUP_ATTACK,0,POS_FACEUP_ATTACK,0) + end +end diff --git a/script/c22567609.lua b/script/c22567609.lua index ba35f59a..6b81926e 100644 --- a/script/c22567609.lua +++ b/script/c22567609.lua @@ -26,6 +26,7 @@ function c22567609.operation(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) Duel.Recover(tp,1000,REASON_EFFECT) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=Duel.GetMatchingGroup(c22567609.filter,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(22567609,1)) then Duel.BreakEffect() diff --git a/script/c22617205.lua b/script/c22617205.lua index ee863583..1a4b3345 100644 --- a/script/c22617205.lua +++ b/script/c22617205.lua @@ -1,63 +1,63 @@ ---覚星輝士-セフィラビュート -function c22617205.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c22617205.splimit) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetCountLimit(1,22617205) - e3:SetTarget(c22617205.target) - e3:SetOperation(c22617205.operation) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EVENT_SPSUMMON_SUCCESS) - e5:SetCondition(c22617205.condition) - c:RegisterEffect(e5) -end -function c22617205.splimit(e,c,sump,sumtype,sumpos,targetp) - if c:IsSetCard(0x9c) or c:IsSetCard(0xc4) then return false end - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c22617205.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM -end -function c22617205.filter1(c) - return ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) - or (c:IsLocation(LOCATION_SZONE) and (c:GetSequence()==6 or c:GetSequence()==7))) - and (c:IsSetCard(0x9c) or c:IsSetCard(0xc4)) -end -function c22617205.filter2(c) - return c:IsFacedown() -end -function c22617205.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c22617205.filter1,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) - and Duel.IsExistingTarget(c22617205.filter2,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g1=Duel.SelectTarget(tp,c22617205.filter1,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g2=Duel.SelectTarget(tp,c22617205.filter2,tp,0,LOCATION_ONFIELD,1,1,nil) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) -end -function c22617205.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - end -end +--覚星輝士-セフィラビュート +function c22617205.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c22617205.splimit) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetCountLimit(1,22617205) + e3:SetTarget(c22617205.target) + e3:SetOperation(c22617205.operation) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + e5:SetCondition(c22617205.condition) + c:RegisterEffect(e5) +end +function c22617205.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0x9c) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c22617205.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c22617205.filter1(c) + return ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) + or (c:IsLocation(LOCATION_SZONE) and (c:GetSequence()==6 or c:GetSequence()==7))) + and (c:IsSetCard(0x9c) or c:IsSetCard(0xc4)) +end +function c22617205.filter2(c) + return c:IsFacedown() +end +function c22617205.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c22617205.filter1,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) + and Duel.IsExistingTarget(c22617205.filter2,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c22617205.filter1,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,c22617205.filter2,tp,0,LOCATION_ONFIELD,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) +end +function c22617205.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c22628574.lua b/script/c22628574.lua index c926f26b..efb48dff 100644 --- a/script/c22628574.lua +++ b/script/c22628574.lua @@ -1,50 +1,50 @@ ---フェイク・フェザー -function c22628574.initial_effect(c) - --copy trap - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0x1e1,0x1e1) - e1:SetCost(c22628574.cost) - e1:SetTarget(c22628574.target) - e1:SetOperation(c22628574.operation) - c:RegisterEffect(e1) -end -function c22628574.cfilter(c) - return c:IsSetCard(0x33) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() -end -function c22628574.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c22628574.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c22628574.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c22628574.filter(c) - return c:GetType()==0x4 and not c:IsCode(22628574) and c:CheckActivateEffect(false,true,false)~=nil -end -function c22628574.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then - local te=e:GetLabelObject() - local tg=te:GetTarget() - return tg and tg(e,tp,eg,ep,ev,re,r,rp,1,true) - end - if chk==0 then return Duel.IsExistingTarget(c22628574.filter,tp,0,LOCATION_GRAVE,1,nil) end - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(22628574,0)) - local g=Duel.SelectTarget(tp,c22628574.filter,tp,0,LOCATION_GRAVE,1,1,nil) - if not g then return false end - local te,eg,ep,ev,re,r,rp=g:GetFirst():CheckActivateEffect(false,true,true) - e:SetLabelObject(te) - Duel.ClearTargetCard() - local tg=te:GetTarget() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,0,0,0) -end -function c22628574.operation(e,tp,eg,ep,ev,re,r,rp) - local te=e:GetLabelObject() - if not te then return end - local op=te:GetOperation() - if op then op(e,tp,eg,ep,ev,re,r,rp) end -end +--フェイク・フェザー +function c22628574.initial_effect(c) + --copy trap + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0x1e1,0x1e1) + e1:SetCost(c22628574.cost) + e1:SetTarget(c22628574.target) + e1:SetOperation(c22628574.operation) + c:RegisterEffect(e1) +end +function c22628574.cfilter(c) + return c:IsSetCard(0x33) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c22628574.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c22628574.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c22628574.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c22628574.filter(c) + return c:GetType()==0x4 and not c:IsCode(22628574) and c:CheckActivateEffect(false,true,false)~=nil +end +function c22628574.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then + local te=e:GetLabelObject() + local tg=te:GetTarget() + return tg and tg(e,tp,eg,ep,ev,re,r,rp,1,true) + end + if chk==0 then return Duel.IsExistingTarget(c22628574.filter,tp,0,LOCATION_GRAVE,1,nil) end + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(22628574,0)) + local g=Duel.SelectTarget(tp,c22628574.filter,tp,0,LOCATION_GRAVE,1,1,nil) + if not g then return false end + local te,eg,ep,ev,re,r,rp=g:GetFirst():CheckActivateEffect(false,true,true) + e:SetLabelObject(te) + Duel.ClearTargetCard() + local tg=te:GetTarget() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,0,0,0) +end +function c22628574.operation(e,tp,eg,ep,ev,re,r,rp) + local te=e:GetLabelObject() + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end diff --git a/script/c22638495.lua b/script/c22638495.lua index 90db3159..40b70b4d 100644 --- a/script/c22638495.lua +++ b/script/c22638495.lua @@ -1,96 +1,96 @@ ---剛竜剣士ダイナスターP -function c22638495.initial_effect(c) - --fusion material - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c22638495.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c22638495.spcon) - e2:SetOperation(c22638495.spop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetTarget(c22638495.sptg) - e3:SetOperation(c22638495.spop2) - c:RegisterEffect(e3) - --indes - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(LOCATION_ONFIELD,0) - e4:SetTarget(c22638495.indtg) - e4:SetValue(1) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e5:SetRange(LOCATION_MZONE) - e5:SetTargetRange(LOCATION_ONFIELD,0) - e5:SetTarget(c22638495.indtg) - e5:SetValue(aux.tgoval) - c:RegisterEffect(e5) -end -function c22638495.splimit(e,se,sp,st) - return e:GetHandler():GetLocation()~=LOCATION_EXTRA -end -function c22638495.spfilter1(c,tp,fc) - return c:IsFusionSetCard(0xc7) and c:IsType(TYPE_PENDULUM) and c:IsCanBeFusionMaterial(fc) - and Duel.CheckReleaseGroup(tp,c22638495.spfilter2,1,c,fc) -end -function c22638495.spfilter2(c,fc) - return c:IsType(TYPE_PENDULUM) and c:IsCanBeFusionMaterial(fc) -end -function c22638495.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.CheckReleaseGroup(tp,c22638495.spfilter1,1,nil,tp,c) -end -function c22638495.spop(e,tp,eg,ep,ev,re,r,rp,c) - local g1=Duel.SelectReleaseGroup(tp,c22638495.spfilter1,1,1,nil,tp,c) - local g2=Duel.SelectReleaseGroup(tp,c22638495.spfilter2,1,1,g1:GetFirst(),c) - g1:Merge(g2) - c:SetMaterial(g1) - Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL) -end -function c22638495.spfilter(c,e,tp) - return c:IsSetCard(0xc7) and c:IsType(TYPE_PENDULUM) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c22638495.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c22638495.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c22638495.spop2(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,c22638495.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end -function c22638495.indtg(e,c) - return c:IsType(TYPE_PENDULUM) and (c:IsLocation(LOCATION_MZONE) or (c:GetSequence()==6 or c:GetSequence()==7)) -end +--剛竜剣士ダイナスターP +function c22638495.initial_effect(c) + --fusion material + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c22638495.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c22638495.spcon) + e2:SetOperation(c22638495.spop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c22638495.sptg) + e3:SetOperation(c22638495.spop2) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_ONFIELD,0) + e4:SetTarget(c22638495.indtg) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e5:SetRange(LOCATION_MZONE) + e5:SetTargetRange(LOCATION_ONFIELD,0) + e5:SetTarget(c22638495.indtg) + e5:SetValue(aux.tgoval) + c:RegisterEffect(e5) +end +function c22638495.splimit(e,se,sp,st) + return e:GetHandler():GetLocation()~=LOCATION_EXTRA +end +function c22638495.spfilter1(c,tp,fc) + return c:IsFusionSetCard(0xc7) and c:IsType(TYPE_PENDULUM) and c:IsCanBeFusionMaterial(fc) + and Duel.CheckReleaseGroup(tp,c22638495.spfilter2,1,c,fc) +end +function c22638495.spfilter2(c,fc) + return c:IsType(TYPE_PENDULUM) and c:IsCanBeFusionMaterial(fc) +end +function c22638495.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.CheckReleaseGroup(tp,c22638495.spfilter1,1,nil,tp,c) +end +function c22638495.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c22638495.spfilter1,1,1,nil,tp,c) + local g2=Duel.SelectReleaseGroup(tp,c22638495.spfilter2,1,1,g1:GetFirst(),c) + g1:Merge(g2) + c:SetMaterial(g1) + Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL) +end +function c22638495.spfilter(c,e,tp) + return c:IsSetCard(0xc7) and c:IsType(TYPE_PENDULUM) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c22638495.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c22638495.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c22638495.spop2(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,aux.NecroValleyFilter(c22638495.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c22638495.indtg(e,c) + return c:IsType(TYPE_PENDULUM) and (c:IsLocation(LOCATION_MZONE) or (c:GetSequence()==6 or c:GetSequence()==7)) +end diff --git a/script/c22653490.lua b/script/c22653490.lua index 754c6436..a63d8c71 100644 --- a/script/c22653490.lua +++ b/script/c22653490.lua @@ -18,7 +18,7 @@ function c22653490.initial_effect(c) e2:SetDescription(aux.Stringid(22653490,1)) e2:SetCategory(CATEGORY_TODECK) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) e2:SetCost(c22653490.tdcost2) diff --git a/script/c22702055.lua b/script/c22702055.lua index 8d676996..92344e7e 100644 --- a/script/c22702055.lua +++ b/script/c22702055.lua @@ -1,26 +1,26 @@ ---海 -function c22702055.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetValue(c22702055.val) - c:RegisterEffect(e2) - --Def - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end -function c22702055.val(e,c) - local r=c:GetRace() - if bit.band(r,RACE_FISH+RACE_SEASERPENT+RACE_THUNDER+RACE_AQUA)>0 then return 200 - elseif bit.band(r,RACE_MACHINE+RACE_PYRO)>0 then return -200 - else return 0 end -end +--海 +function c22702055.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(c22702055.val) + c:RegisterEffect(e2) + --Def + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end +function c22702055.val(e,c) + local r=c:GetRace() + if bit.band(r,RACE_FISH+RACE_SEASERPENT+RACE_THUNDER+RACE_AQUA)>0 then return 200 + elseif bit.band(r,RACE_MACHINE+RACE_PYRO)>0 then return -200 + else return 0 end +end diff --git a/script/c2273734.lua b/script/c2273734.lua index a73f84d5..6a5da0f2 100644 --- a/script/c2273734.lua +++ b/script/c2273734.lua @@ -1,47 +1,47 @@ ---星因士 アルタイル -function c2273734.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(2273734,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,2273734) - e1:SetTarget(c2273734.sptg) - e1:SetOperation(c2273734.spop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c2273734.filter(c,e,tp) - return c:IsSetCard(0x9c) and not c:IsCode(2273734) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c2273734.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c2273734.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c2273734.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c2273734.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c2273734.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c2273734.atktg) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c2273734.atktg(e,c) - return not c:IsSetCard(0x9c) -end +--星因士 アルタイル +function c2273734.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2273734,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,2273734) + e1:SetTarget(c2273734.sptg) + e1:SetOperation(c2273734.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c2273734.filter(c,e,tp) + return c:IsSetCard(0x9c) and not c:IsCode(2273734) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c2273734.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c2273734.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c2273734.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c2273734.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c2273734.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c2273734.atktg) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c2273734.atktg(e,c) + return not c:IsSetCard(0x9c) +end diff --git a/script/c22747316.lua b/script/c22747316.lua index 47c45b27..45072287 100644 --- a/script/c22747316.lua +++ b/script/c22747316.lua @@ -26,16 +26,14 @@ function c22747316.filter(c,code) end function c22747316.activate(e,tp,eg,ep,ev,re,r,rp) local code=re:GetHandler():GetCode() - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end - local g=Duel.GetMatchingGroup(c22747316.filter,tp,LOCATION_GRAVE,0,nil,code) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c22747316.filter),tp,LOCATION_GRAVE,0,nil,code) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(22747316,0)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local sg=g:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SendtoHand(sg,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,sg) end diff --git a/script/c22751868.lua b/script/c22751868.lua index cfbcce65..c0d4ac7a 100644 --- a/script/c22751868.lua +++ b/script/c22751868.lua @@ -1,66 +1,66 @@ ---風雲カラクリ城 -function c22751868.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --pos - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(22751868,0)) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_BE_BATTLE_TARGET) - e2:SetCondition(c22751868.poscon) - e2:SetTarget(c22751868.postg) - e2:SetOperation(c22751868.posop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetDescription(aux.Stringid(22751868,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c22751868.spcon) - e3:SetTarget(c22751868.sptg) - e3:SetOperation(c22751868.spop) - c:RegisterEffect(e3) -end -function c22751868.poscon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return a:IsControler(tp) and a:IsSetCard(0x11) and d:IsFaceup() -end -function c22751868.postg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.GetAttackTarget():CreateEffectRelation(e) -end -function c22751868.posop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttackTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) - end -end -function c22751868.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) -end -function c22751868.filter(c,e,tp) - return c:IsLevelAbove(4) and c:IsSetCard(0x11) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c22751868.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c22751868.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c22751868.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c22751868.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c22751868.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--風雲カラクリ城 +function c22751868.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22751868,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetCondition(c22751868.poscon) + e2:SetTarget(c22751868.postg) + e2:SetOperation(c22751868.posop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(22751868,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c22751868.spcon) + e3:SetTarget(c22751868.sptg) + e3:SetOperation(c22751868.spop) + c:RegisterEffect(e3) +end +function c22751868.poscon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a:IsControler(tp) and a:IsSetCard(0x11) and d:IsFaceup() +end +function c22751868.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.GetAttackTarget():CreateEffectRelation(e) +end +function c22751868.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) + end +end +function c22751868.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) +end +function c22751868.filter(c,e,tp) + return c:IsLevelAbove(4) and c:IsSetCard(0x11) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c22751868.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c22751868.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c22751868.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c22751868.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c22751868.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c22765132.lua b/script/c22765132.lua index bb5a822f..bd94e270 100644 --- a/script/c22765132.lua +++ b/script/c22765132.lua @@ -1,63 +1,63 @@ ---EMコール -function c22765132.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c22765132.condition) - e1:SetTarget(c22765132.target) - e1:SetOperation(c22765132.activate) - c:RegisterEffect(e1) -end -function c22765132.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil -end -function c22765132.filter(c,def) - return c:IsSetCard(0x9f) and c:IsDefenseBelow(def) and c:IsAbleToHand() -end -function c22765132.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local at=Duel.GetAttacker() - if chkc then return chkc==at end - if chk==0 then return at:IsOnField() and at:IsCanBeEffectTarget(e) - and Duel.IsExistingMatchingCard(c22765132.filter,tp,LOCATION_DECK,0,1,nil,at:GetAttack()) end - Duel.SetTargetCard(at) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c22765132.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if Duel.NegateAttack() then - local val=tc:GetAttack() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g1=Duel.SelectMatchingCard(tp,c22765132.filter,tp,LOCATION_DECK,0,1,1,nil,val) - local sc=g1:GetFirst() - if sc then - val=val-sc:GetDefense() - if Duel.IsExistingMatchingCard(c22765132.filter,tp,LOCATION_DECK,0,1,sc,val) - and Duel.SelectYesNo(tp,aux.Stringid(22765132,0)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g2=Duel.SelectMatchingCard(tp,c22765132.filter,tp,LOCATION_DECK,0,1,1,sc,val) - g1:Merge(g2) - end - Duel.SendtoHand(g1,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g1) - end - end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetTargetRange(1,0) - e1:SetTarget(c22765132.sumlimit) - if Duel.GetTurnPlayer()==tp then - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) - end - Duel.RegisterEffect(e1,tp) - end -end -function c22765132.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) - return c:IsLocation(LOCATION_EXTRA) -end +--EMコール +function c22765132.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c22765132.condition) + e1:SetTarget(c22765132.target) + e1:SetOperation(c22765132.activate) + c:RegisterEffect(e1) +end +function c22765132.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c22765132.filter(c,def) + return c:IsSetCard(0x9f) and c:IsDefenseBelow(def) and c:IsAbleToHand() +end +function c22765132.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local at=Duel.GetAttacker() + if chkc then return chkc==at end + if chk==0 then return at:IsOnField() and at:IsCanBeEffectTarget(e) + and Duel.IsExistingMatchingCard(c22765132.filter,tp,LOCATION_DECK,0,1,nil,at:GetAttack()) end + Duel.SetTargetCard(at) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c22765132.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.NegateAttack() then + local val=tc:GetAttack() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g1=Duel.SelectMatchingCard(tp,c22765132.filter,tp,LOCATION_DECK,0,1,1,nil,val) + local sc=g1:GetFirst() + if sc then + val=val-sc:GetDefense() + if Duel.IsExistingMatchingCard(c22765132.filter,tp,LOCATION_DECK,0,1,sc,val) + and Duel.SelectYesNo(tp,aux.Stringid(22765132,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g2=Duel.SelectMatchingCard(tp,c22765132.filter,tp,LOCATION_DECK,0,1,1,sc,val) + g1:Merge(g2) + end + Duel.SendtoHand(g1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g1) + end + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetTargetRange(1,0) + e1:SetTarget(c22765132.sumlimit) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + Duel.RegisterEffect(e1,tp) + end +end +function c22765132.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsLocation(LOCATION_EXTRA) +end diff --git a/script/c22790789.lua b/script/c22790789.lua index de84262a..ab8b0615 100644 --- a/script/c22790789.lua +++ b/script/c22790789.lua @@ -1,92 +1,92 @@ ---巨大戦艦 クリスタル・コア -function c22790789.initial_effect(c) - c:EnableCounterPermit(0x1f) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(22790789,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c22790789.addct) - e1:SetOperation(c22790789.addc) - c:RegisterEffect(e1) - --battle indestructable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - c:RegisterEffect(e2) - --remove counter - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(22790789,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_DAMAGE_STEP_END) - e3:SetCondition(c22790789.rctcon) - e3:SetOperation(c22790789.rctop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(22790789,2)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_DAMAGE_STEP_END) - e4:SetCondition(c22790789.descon) - e4:SetTarget(c22790789.destg) - e4:SetOperation(c22790789.desop) - c:RegisterEffect(e4) - --pos - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(22790789,3)) - e5:SetCategory(CATEGORY_POSITION) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetTarget(c22790789.postg) - e5:SetOperation(c22790789.posop) - c:RegisterEffect(e5) -end -function c22790789.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) -end -function c22790789.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x1f,3) - end -end -function c22790789.rctcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)~=0 -end -function c22790789.rctop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - c:RemoveCounter(tp,0x1f,1,REASON_EFFECT) - end -end -function c22790789.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)==0 -end -function c22790789.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 c22790789.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - Duel.Destroy(c,REASON_EFFECT) - end -end -function c22790789.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsPosition(POS_FACEUP_ATTACK) end - if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) -end -function c22790789.posop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsPosition(POS_FACEUP_ATTACK) and tc:IsRelateToEffect(e) then - Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) - end -end +--巨大戦艦 クリスタル・コア +function c22790789.initial_effect(c) + c:EnableCounterPermit(0x1f) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(22790789,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c22790789.addct) + e1:SetOperation(c22790789.addc) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --remove counter + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(22790789,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c22790789.rctcon) + e3:SetOperation(c22790789.rctop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(22790789,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetCondition(c22790789.descon) + e4:SetTarget(c22790789.destg) + e4:SetOperation(c22790789.desop) + c:RegisterEffect(e4) + --pos + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(22790789,3)) + e5:SetCategory(CATEGORY_POSITION) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetTarget(c22790789.postg) + e5:SetOperation(c22790789.posop) + c:RegisterEffect(e5) +end +function c22790789.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) +end +function c22790789.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x1f,3) + end +end +function c22790789.rctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)~=0 +end +function c22790789.rctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + c:RemoveCounter(tp,0x1f,1,REASON_EFFECT) + end +end +function c22790789.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)==0 +end +function c22790789.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 c22790789.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Destroy(c,REASON_EFFECT) + end +end +function c22790789.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c22790789.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsPosition(POS_FACEUP_ATTACK) and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c22796548.lua b/script/c22796548.lua index b2e6e09b..5424d3bd 100644 --- a/script/c22796548.lua +++ b/script/c22796548.lua @@ -1,45 +1,45 @@ ---デーモンの宣告 -function c22796548.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --announce - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(22796548,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCost(c22796548.cost) - e2:SetTarget(c22796548.target) - e2:SetOperation(c22796548.operation) - c:RegisterEffect(e2) -end -function c22796548.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 c22796548.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) - and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,0) - local ac=Duel.AnnounceCard(tp) - Duel.SetTargetParam(ac) - Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) -end -function c22796548.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - if tc:IsCode(ac) and tc:IsAbleToHand() then - Duel.DisableShuffleCheck() - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ShuffleHand(tp) - else - Duel.DisableShuffleCheck() - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) - end -end +--デーモンの宣告 +function c22796548.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --announce + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22796548,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCost(c22796548.cost) + e2:SetTarget(c22796548.target) + e2:SetOperation(c22796548.operation) + c:RegisterEffect(e2) +end +function c22796548.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 c22796548.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) + and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,0) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c22796548.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if tc:IsCode(ac) and tc:IsAbleToHand() then + Duel.DisableShuffleCheck() + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ShuffleHand(tp) + else + Duel.DisableShuffleCheck() + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) + end +end diff --git a/script/c22804410.lua b/script/c22804410.lua index 77f02a2f..4975fa8d 100644 --- a/script/c22804410.lua +++ b/script/c22804410.lua @@ -58,7 +58,8 @@ function c22804410.spop(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetMatchingGroup(Card.IsRace,tp,LOCATION_GRAVE,0,nil,RACE_DRAGON) local dam=g:GetClassCount(Card.GetCode)*600 Duel.Damage(1-tp,dam,REASON_EFFECT) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then Duel.SendtoGrave(c,REASON_RULE) end end diff --git a/script/c22804644.lua b/script/c22804644.lua index 9bd8e5f9..ee30a8bf 100644 --- a/script/c22804644.lua +++ b/script/c22804644.lua @@ -1,79 +1,79 @@ ---デス・ウイルス・ドラゴン -function c22804644.initial_effect(c) - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetTarget(c22804644.target) - e2:SetOperation(c22804644.operation) - c:RegisterEffect(e2) -end -c22804644.material_trap=57728570 -function c22804644.tgfilter(c) - return c:IsFaceup() and c:GetAttack()>=1500 -end -function c22804644.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c22804644.tgfilter,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c22804644.filter(c) - return c:IsType(TYPE_MONSTER) and c:IsAttackAbove(1500) -end -function c22804644.operation(e,tp,eg,ep,ev,re,r,rp) - local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE+LOCATION_HAND) - if conf:GetCount()>0 then - Duel.ConfirmCards(tp,conf) - local dg=conf:Filter(c22804644.filter,nil) - Duel.Destroy(dg,REASON_EFFECT) - Duel.ShuffleHand(1-tp) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_DRAW) - e1:SetOperation(c22804644.desop) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetCountLimit(1) - e2:SetCondition(c22804644.turncon) - e2:SetOperation(c22804644.turnop) - e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) - Duel.RegisterEffect(e2,tp) - e2:SetLabelObject(e1) - e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,3) - c22804644[e:GetHandler()]=e2 -end -function c22804644.desop(e,tp,eg,ep,ev,re,r,rp) - if ep==e:GetOwnerPlayer() then return end - local hg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND) - if hg:GetCount()==0 then return end - Duel.ConfirmCards(1-ep,hg) - local dg=hg:Filter(c22804644.filter,nil) - Duel.Destroy(dg,REASON_EFFECT) - Duel.ShuffleHand(ep) -end -function c22804644.turncon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c22804644.turnop(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetLabel() - ct=ct+1 - e:SetLabel(ct) - e:GetHandler():SetTurnCounter(ct) - if ct==3 then - e:GetLabelObject():Reset() - e:GetOwner():ResetFlagEffect(1082946) - end -end +--デス・ウイルス・ドラゴン +function c22804644.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c22804644.target) + e2:SetOperation(c22804644.operation) + c:RegisterEffect(e2) +end +c22804644.material_trap=57728570 +function c22804644.tgfilter(c) + return c:IsFaceup() and c:GetAttack()>=1500 +end +function c22804644.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c22804644.tgfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c22804644.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAttackAbove(1500) +end +function c22804644.operation(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE+LOCATION_HAND) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + local dg=conf:Filter(c22804644.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DRAW) + e1:SetOperation(c22804644.desop) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c22804644.turncon) + e2:SetOperation(c22804644.turnop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e2,tp) + e2:SetLabelObject(e1) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,3) + c22804644[e:GetHandler()]=e2 +end +function c22804644.desop(e,tp,eg,ep,ev,re,r,rp) + if ep==e:GetOwnerPlayer() then return end + local hg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND) + if hg:GetCount()==0 then return end + Duel.ConfirmCards(1-ep,hg) + local dg=hg:Filter(c22804644.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(ep) +end +function c22804644.turncon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c22804644.turnop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + e:GetHandler():SetTurnCounter(ct) + if ct==3 then + e:GetLabelObject():Reset() + e:GetOwner():ResetFlagEffect(1082946) + end +end diff --git a/script/c22835145.lua b/script/c22835145.lua index c3b976ae..151be74b 100644 --- a/script/c22835145.lua +++ b/script/c22835145.lua @@ -1,38 +1,38 @@ ---BF-極北のブリザード -function c22835145.initial_effect(c) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(22835145,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetTarget(c22835145.target) - e2:SetOperation(c22835145.operation) - c:RegisterEffect(e2) -end -function c22835145.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsSetCard(0x33) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c22835145.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetControler()==tp and chkc:GetLocation()==LOCATION_GRAVE and c22835145.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c22835145.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c22835145.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c22835145.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--BF-極北のブリザード +function c22835145.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22835145,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c22835145.target) + e2:SetOperation(c22835145.operation) + c:RegisterEffect(e2) +end +function c22835145.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x33) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c22835145.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()==tp and chkc:GetLocation()==LOCATION_GRAVE and c22835145.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c22835145.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c22835145.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c22835145.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c22842126.lua b/script/c22842126.lua index 6cd9ad33..2949b916 100644 --- a/script/c22842126.lua +++ b/script/c22842126.lua @@ -1,65 +1,65 @@ ---汎神の帝王 -function c22842126.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(22842126,0)) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCost(c22842126.cost) - e1:SetTarget(c22842126.target) - e1:SetOperation(c22842126.activate) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(22842126,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,22842126) - e2:SetCost(c22842126.thcost) - e2:SetTarget(c22842126.thtg) - e2:SetOperation(c22842126.thop) - c:RegisterEffect(e2) -end -function c22842126.cfilter(c) - return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGraveAsCost() -end -function c22842126.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c22842126.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end - Duel.DiscardHand(tp,c22842126.cfilter,1,1,REASON_COST,nil) -end -function c22842126.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c22842126.activate(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end -function c22842126.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c22842126.thfilter(c) - return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c22842126.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c22842126.thfilter,tp,LOCATION_DECK,0,3,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c22842126.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c22842126.thfilter,tp,LOCATION_DECK,0,nil) - if g:GetCount()>=3 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=g:Select(tp,3,3,nil) - Duel.ConfirmCards(1-tp,sg) - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) - local tg=sg:Select(1-tp,1,1,nil) - Duel.SendtoHand(tg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tg) - end -end +--汎神の帝王 +function c22842126.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(22842126,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCost(c22842126.cost) + e1:SetTarget(c22842126.target) + e1:SetOperation(c22842126.activate) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22842126,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,22842126) + e2:SetCost(c22842126.thcost) + e2:SetTarget(c22842126.thtg) + e2:SetOperation(c22842126.thop) + c:RegisterEffect(e2) +end +function c22842126.cfilter(c) + return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGraveAsCost() +end +function c22842126.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c22842126.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c22842126.cfilter,1,1,REASON_COST,nil) +end +function c22842126.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c22842126.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c22842126.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c22842126.thfilter(c) + return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c22842126.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c22842126.thfilter,tp,LOCATION_DECK,0,3,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c22842126.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c22842126.thfilter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>=3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,3,3,nil) + Duel.ConfirmCards(1-tp,sg) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local tg=sg:Select(1-tp,1,1,nil) + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end +end diff --git a/script/c22858242.lua b/script/c22858242.lua index a22b0956..89f658d6 100644 --- a/script/c22858242.lua +++ b/script/c22858242.lua @@ -5,9 +5,13 @@ function c22858242.initial_effect(c) c:EnableReviveLimit() --actlimit local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c22858242.lmop) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,1) + e1:SetValue(c22858242.aclimit) + e1:SetCondition(c22858242.actcon) c:RegisterEffect(e1) --negate attack local e2=Effect.CreateEffect(c) @@ -22,19 +26,12 @@ function c22858242.initial_effect(c) e2:SetOperation(c22858242.activate) c:RegisterEffect(e2) end -function c22858242.lmop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c22858242.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end function c22858242.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c22858242.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end function c22858242.condition(e,tp,eg,ep,ev,re,r,rp) return eg:GetFirst():IsControler(1-tp) end diff --git a/script/c22888900.lua b/script/c22888900.lua index 721e6cde..152b0d8b 100644 --- a/script/c22888900.lua +++ b/script/c22888900.lua @@ -1,55 +1,55 @@ ---グリザイユの牢獄 -function c22888900.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c22888900.condition) - e1:SetOperation(c22888900.operation) - c:RegisterEffect(e1) -end -function c22888900.cfilter(c) - local sumtype=c:GetSummonType() - return c:IsFaceup() and (bit.band(sumtype,SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE - or bit.band(sumtype,SUMMON_TYPE_RITUAL)==SUMMON_TYPE_RITUAL - or bit.band(sumtype,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION) -end -function c22888900.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c22888900.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c22888900.operation(e,tp,eg,ep,ev,re,r,rp) - -- - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetTarget(c22888900.tg) - e1:SetCode(EFFECT_DISABLE) - if Duel.GetTurnPlayer()~=tp then - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - end - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_ATTACK) - Duel.RegisterEffect(e2,tp) - -- - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,1) - e3:SetTarget(c22888900.splimit) - if Duel.GetTurnPlayer()~=tp then - e3:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) - else - e3:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - end - Duel.RegisterEffect(e3,tp) -end -function c22888900.tg(e,c) - return c:IsType(TYPE_SYNCHRO+TYPE_XYZ) -end -function c22888900.splimit(e,c,tp,sumtp,sumpos) - return bit.band(sumtp,SUMMON_TYPE_SYNCHRO)==SUMMON_TYPE_SYNCHRO or bit.band(sumtp,SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ -end +--グリザイユの牢獄 +function c22888900.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c22888900.condition) + e1:SetOperation(c22888900.operation) + c:RegisterEffect(e1) +end +function c22888900.cfilter(c) + local sumtype=c:GetSummonType() + return c:IsFaceup() and (bit.band(sumtype,SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE + or bit.band(sumtype,SUMMON_TYPE_RITUAL)==SUMMON_TYPE_RITUAL + or bit.band(sumtype,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION) +end +function c22888900.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c22888900.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c22888900.operation(e,tp,eg,ep,ev,re,r,rp) + -- + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c22888900.tg) + e1:SetCode(EFFECT_DISABLE) + if Duel.GetTurnPlayer()~=tp then + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + end + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK) + Duel.RegisterEffect(e2,tp) + -- + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + e3:SetTarget(c22888900.splimit) + if Duel.GetTurnPlayer()~=tp then + e3:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + else + e3:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + end + Duel.RegisterEffect(e3,tp) +end +function c22888900.tg(e,c) + return c:IsType(TYPE_SYNCHRO+TYPE_XYZ) +end +function c22888900.splimit(e,c,tp,sumtp,sumpos) + return bit.band(sumtp,SUMMON_TYPE_SYNCHRO)==SUMMON_TYPE_SYNCHRO or bit.band(sumtp,SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ +end diff --git a/script/c22900598.lua b/script/c22900598.lua index f31e1496..e1df0db1 100644 --- a/script/c22900598.lua +++ b/script/c22900598.lua @@ -35,12 +35,11 @@ function c22900598.activate(e,tp,eg,ep,ev,re,r,rp) if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,te,0,tp,tp,Duel.GetCurrentChain()) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local sg=Duel.GetMatchingGroup(c22900598.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c22900598.spfilter),tp,LOCATION_GRAVE,0,nil,e,tp) if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(22900598,0)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=sg:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) end end diff --git a/script/c2295831.lua b/script/c2295831.lua index 798b2d92..62ccc77d 100644 --- a/script/c2295831.lua +++ b/script/c2295831.lua @@ -1,53 +1,53 @@ ---ピースの輪 -function c2295831.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_TO_HAND) - e1:SetCondition(c2295831.regcon) - e1:SetOperation(c2295831.regop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_ACTIVATE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCondition(c2295831.condition) - e2:SetCost(c2295831.cost) - e2:SetTarget(c2295831.target) - e2:SetOperation(c2295831.activate) - c:RegisterEffect(e2) -end -function c2295831.regcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>=3 - and Duel.GetCurrentPhase()==PHASE_DRAW and c:IsReason(REASON_DRAW) and c:IsReason(REASON_RULE) -end -function c2295831.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.SelectYesNo(tp,aux.Stringid(2295831,0)) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_PUBLIC) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_MAIN1) - c:RegisterEffect(e1) - c:RegisterFlagEffect(2295831,RESET_PHASE+PHASE_MAIN1,0,1) - end -end -function c2295831.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 -end -function c2295831.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(2295831)~=0 end -end -function c2295831.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c2295831.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ピースの輪 +function c2295831.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c2295831.regcon) + e1:SetOperation(c2295831.regop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c2295831.condition) + e2:SetCost(c2295831.cost) + e2:SetTarget(c2295831.target) + e2:SetOperation(c2295831.activate) + c:RegisterEffect(e2) +end +function c2295831.regcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>=3 + and Duel.GetCurrentPhase()==PHASE_DRAW and c:IsReason(REASON_DRAW) and c:IsReason(REASON_RULE) +end +function c2295831.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.SelectYesNo(tp,aux.Stringid(2295831,0)) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PUBLIC) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_MAIN1) + c:RegisterEffect(e1) + c:RegisterFlagEffect(2295831,RESET_PHASE+PHASE_MAIN1,EFFECT_FLAG_CLIENT_HINT,1,0,66) + end +end +function c2295831.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c2295831.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(2295831)~=0 end +end +function c2295831.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c2295831.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c22996376.lua b/script/c22996376.lua index b3cf7298..d61a675a 100644 --- a/script/c22996376.lua +++ b/script/c22996376.lua @@ -3,7 +3,6 @@ function c22996376.initial_effect(c) --summon/set with 1 tribute local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(22996376,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SUMMON_PROC) e1:SetCondition(c22996376.otcon) @@ -25,9 +24,9 @@ function c22996376.initial_effect(c) e3:SetOperation(c22996376.thop) c:RegisterEffect(e3) end -function c22996376.otcon(e,c) +function c22996376.otcon(e,c,minc) if c==nil then return true end - return c:GetLevel()>6 and Duel.GetTributeCount(c)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1) end function c22996376.otop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,1,1) diff --git a/script/c23015896.lua b/script/c23015896.lua index b65983da..5bd3167e 100644 --- a/script/c23015896.lua +++ b/script/c23015896.lua @@ -3,6 +3,7 @@ function c23015896.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c23015896.spreg) c:RegisterEffect(e1) diff --git a/script/c23064604.lua b/script/c23064604.lua index b2ff4d75..32b72c68 100644 --- a/script/c23064604.lua +++ b/script/c23064604.lua @@ -42,11 +42,10 @@ end function c23064604.otfilter(c) return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE end -function c23064604.otcon(e,c) +function c23064604.otcon(e,c,minc) if c==nil then return true end local mg=Duel.GetMatchingGroup(c23064604.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - return c:GetLevel()>6 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c23064604.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c23064604.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) diff --git a/script/c23068051.lua b/script/c23068051.lua new file mode 100644 index 00000000..9c06e555 --- /dev/null +++ b/script/c23068051.lua @@ -0,0 +1,64 @@ +--幽麗なる幻滝 +--Ethereal Wyrmterfall +--Script by dest +function c23068051.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23068051,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c23068051.target) + e1:SetOperation(c23068051.activate) + c:RegisterEffect(e1) + --Activate2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(23068051,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCost(c23068051.cost) + e2:SetTarget(c23068051.target2) + e2:SetOperation(c23068051.activate2) + c:RegisterEffect(e2) +end +function c23068051.filter(c) + return c:IsRace(RACE_WYRM) and c:IsAbleToHand() +end +function c23068051.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c23068051.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c23068051.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c23068051.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c23068051.filter2(c) + return c:IsRace(RACE_WYRM) and c:IsAbleToGraveAsCost() +end +function c23068051.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c23068051.filter2,tp,LOCATION_MZONE+LOCATION_HAND,0,1,nil) end + local ft=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local g=Duel.GetMatchingGroup(c23068051.filter2,tp,LOCATION_MZONE+LOCATION_HAND,0,nil) + local ct=math.min(ft-1,g:GetCount()+1) + local sg=g:Select(tp,1,ct,nil) + e:SetLabel(sg:GetCount()+1) + Duel.SendtoGrave(sg,REASON_COST) +end +function c23068051.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel()) +end +function c23068051.activate2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c23118924.lua b/script/c23118924.lua index f658e548..8f6e0372 100644 --- a/script/c23118924.lua +++ b/script/c23118924.lua @@ -1,50 +1,48 @@ ---エレメント・デビル -function c23118924.initial_effect(c) - --disable - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_BATTLED) - e1:SetCondition(c23118924.discon) - e1:SetOperation(c23118924.disop) - c:RegisterEffect(e1) - --chain attack - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(23118924,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLED) - e2:SetCondition(c23118924.atcon) - e2:SetOperation(c23118924.atop) - c:RegisterEffect(e2) -end -function c23118924.filter(c,att) - return c:IsFaceup() and c:IsAttribute(att) -end -function c23118924.discon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and not c:IsStatus(STATUS_BATTLE_DESTROYED) - and Duel.IsExistingMatchingCard(c23118924.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_EARTH) -end -function c23118924.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x17a0000) - bc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x17a0000) - bc:RegisterEffect(e2) -end -function c23118924.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) - and not c:IsDisabled() and Duel.IsExistingMatchingCard(c23118924.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_WIND) -end -function c23118924.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--エレメント・デビル +function c23118924.initial_effect(c) + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c23118924.discon) + e1:SetOperation(c23118924.disop) + c:RegisterEffect(e1) + --chain attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(23118924,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c23118924.atcon) + e2:SetOperation(c23118924.atop) + c:RegisterEffect(e2) +end +function c23118924.filter(c,att) + return c:IsFaceup() and c:IsAttribute(att) +end +function c23118924.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and not c:IsStatus(STATUS_BATTLE_DESTROYED) + and Duel.IsExistingMatchingCard(c23118924.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_EARTH) +end +function c23118924.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x17a0000) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x17a0000) + bc:RegisterEffect(e2) +end +function c23118924.atcon(e,tp,eg,ep,ev,re,r,rp) + return aux.bdocon(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():IsChainAttackable() + and Duel.IsExistingMatchingCard(c23118924.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_WIND) +end +function c23118924.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c23166823.lua b/script/c23166823.lua index f5e8b680..7aabac57 100644 --- a/script/c23166823.lua +++ b/script/c23166823.lua @@ -1,49 +1,49 @@ ---影霊獣使い-セフィラウェンディ -function c23166823.initial_effect(c) - c:SetSPSummonOnce(23166823) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c23166823.splimit) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetTarget(c23166823.thtg) - e3:SetOperation(c23166823.thop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetCondition(c23166823.condition) - c:RegisterEffect(e4) -end -function c23166823.splimit(e,c,sump,sumtype,sumpos,targetp) - if c:IsSetCard(0xb5) or c:IsSetCard(0xc4) then return false end - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c23166823.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM -end -function c23166823.filter(c) - return c:IsFaceup() and c:IsSetCard(0xc4) and c:IsType(TYPE_PENDULUM) and not c:IsCode(23166823) and c:IsAbleToHand() -end -function c23166823.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c23166823.filter,tp,LOCATION_EXTRA,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_EXTRA) -end -function c23166823.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c23166823.filter,tp,LOCATION_EXTRA,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--影霊獣使い-セフィラウェンディ +function c23166823.initial_effect(c) + c:SetSPSummonOnce(23166823) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c23166823.splimit) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c23166823.thtg) + e3:SetOperation(c23166823.thop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c23166823.condition) + c:RegisterEffect(e4) +end +function c23166823.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0xb5) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c23166823.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c23166823.filter(c) + return c:IsFaceup() and c:IsSetCard(0xc4) and c:IsType(TYPE_PENDULUM) and not c:IsCode(23166823) and c:IsAbleToHand() +end +function c23166823.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c23166823.filter,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_EXTRA) +end +function c23166823.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c23166823.filter,tp,LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c23168060.lua b/script/c23168060.lua index 8dcc4672..6aa8dcef 100644 --- a/script/c23168060.lua +++ b/script/c23168060.lua @@ -1,27 +1,27 @@ ---鍵戦士キーマン -function c23168060.initial_effect(c) - --lv change - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(23168060,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c23168060.condition) - e1:SetOperation(c23168060.operation) - c:RegisterEffect(e1) -end -function c23168060.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetLevel()~=3 -end -function c23168060.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetValue(3) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--鍵戦士キーマン +function c23168060.initial_effect(c) + --lv change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23168060,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c23168060.condition) + e1:SetOperation(c23168060.operation) + c:RegisterEffect(e1) +end +function c23168060.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetLevel()~=3 +end +function c23168060.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(3) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c23171610.lua b/script/c23171610.lua index 17c36ac3..b8ab2d11 100644 --- a/script/c23171610.lua +++ b/script/c23171610.lua @@ -1,73 +1,71 @@ ---リミッター解除 -function c23171610.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c23171610.condition) - e1:SetTarget(c23171610.target) - e1:SetOperation(c23171610.activate) - c:RegisterEffect(e1) -end -function c23171610.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c23171610.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) -end -function c23171610.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c23171610.filter,tp,LOCATION_MZONE,0,1,nil) end - local g=Duel.GetMatchingGroup(c23171610.filter,tp,LOCATION_MZONE,0,nil) - Duel.SetTargetCard(g) -end -function c23171610.filter2(c,e) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsRelateToEffect(e) and not c:IsImmuneToEffect(e) -end -function c23171610.activate(e,tp,eg,ep,ev,re,r,rp) - local sg=Duel.GetMatchingGroup(c23171610.filter2,tp,LOCATION_MZONE,0,nil,e) - local c=e:GetHandler() - local fid=c:GetFieldID() - local tc=sg:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(tc:GetAttack()*2) - tc:RegisterEffect(e1) - tc:RegisterFlagEffect(23171610,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) - tc=sg:GetNext() - end - sg:KeepAlive() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetReset(RESET_PHASE+PHASE_END) - e2:SetCountLimit(1) - e2:SetLabel(fid) - e2:SetLabelObject(sg) - e2:SetCondition(c23171610.descon) - e2:SetOperation(c23171610.desop) - Duel.RegisterEffect(e2,tp) -end -function c23171610.desfilter(c,fid) - return c:GetFlagEffectLabel(23171610)==fid -end -function c23171610.descon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c23171610.desfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c23171610.desop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local dg=g:Filter(c23171610.desfilter,nil,e:GetLabel()) - g:DeleteGroup() - Duel.Destroy(dg,REASON_EFFECT) -end +--リミッター解除 +function c23171610.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c23171610.condition) + e1:SetTarget(c23171610.target) + e1:SetOperation(c23171610.activate) + c:RegisterEffect(e1) +end +function c23171610.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c23171610.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c23171610.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c23171610.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c23171610.filter2(c,e) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and not c:IsImmuneToEffect(e) +end +function c23171610.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c23171610.filter2,tp,LOCATION_MZONE,0,nil,e) + local c=e:GetHandler() + local fid=c:GetFieldID() + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(23171610,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=sg:GetNext() + end + sg:KeepAlive() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetLabel(fid) + e2:SetLabelObject(sg) + e2:SetCondition(c23171610.descon) + e2:SetOperation(c23171610.desop) + Duel.RegisterEffect(e2,tp) +end +function c23171610.desfilter(c,fid) + return c:GetFlagEffectLabel(23171610)==fid +end +function c23171610.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c23171610.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c23171610.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local dg=g:Filter(c23171610.desfilter,nil,e:GetLabel()) + g:DeleteGroup() + Duel.Destroy(dg,REASON_EFFECT) +end diff --git a/script/c23187256.lua b/script/c23187256.lua index d1eed864..0beed162 100644 --- a/script/c23187256.lua +++ b/script/c23187256.lua @@ -1,171 +1,332 @@ ---No.93 希望皇ホープ・カイザー -function c23187256.initial_effect(c) - --xyz summon - c:EnableReviveLimit() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetRange(LOCATION_EXTRA) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetCondition(c23187256.xyzcon) - e1:SetOperation(c23187256.xyzop) - e1:SetValue(SUMMON_TYPE_XYZ) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(23187256,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c23187256.target) - e2:SetOperation(c23187256.operation) - c:RegisterEffect(e2) - --indestructable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e3:SetCondition(c23187256.indcon) - e3:SetValue(1) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e4) -end -c23187256.xyz_number=93 -function c23187256.mfilter(c,xyzc) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) and c:GetOverlayCount()>0 and c:IsCanBeXyzMaterial(xyzc) -end -function c23187256.xyzfilter1(c,g,ct) - return g:IsExists(c23187256.xyzfilter2,ct,c,c:GetRank()) -end -function c23187256.xyzfilter2(c,rk) - return c:GetRank()==rk -end -function c23187256.xyzcon(e,c,og,min,max) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local minc=2 - local maxc=64 - if min then - minc=math.max(minc,min) - maxc=max - end - local ct=math.max(minc-1,-ft) - local mg=nil - if og then - mg=og:Filter(c23187256.mfilter,nil,c) - else - mg=Duel.GetMatchingGroup(c23187256.mfilter,tp,LOCATION_MZONE,0,nil,c) - end - return maxc>=2 and mg:IsExists(c23187256.xyzfilter1,1,nil,mg,ct) -end -function c23187256.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) - local g=nil - if og and not min then - g=og - else - local mg=nil - if og then - mg=og:Filter(c23187256.mfilter,nil,c) - else - mg=Duel.GetMatchingGroup(c23187256.mfilter,tp,LOCATION_MZONE,0,nil,c) - end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local minc=2 - local maxc=64 - if min then - minc=math.max(minc,min) - maxc=max - end - local ct=math.max(minc-1,-ft) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - g=mg:FilterSelect(tp,c23187256.xyzfilter1,1,1,nil,mg,ct) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g2=mg:FilterSelect(tp,c23187256.xyzfilter2,ct,maxc-1,g:GetFirst(),g:GetFirst():GetRank()) - g:Merge(g2) - end - local sg=Group.CreateGroup() - local tc=g:GetFirst() - while tc do - sg:Merge(tc:GetOverlayGroup()) - tc=g:GetNext() - end - Duel.SendtoGrave(sg,REASON_RULE) - c:SetMaterial(g) - Duel.Overlay(c,g) -end -function c23187256.filter(c,e,tp) - return c:IsRankBelow(9) and c:IsAttackBelow(3000) and c:IsSetCard(0x48) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c23187256.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c23187256.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c23187256.gfilter(c,rank) - return c:GetRank()==rank -end -function c23187256.operation(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] - if ect~=nil then ft=math.min(ft,ect) end - local c=e:GetHandler() - local g1=Duel.GetMatchingGroup(c23187256.filter,tp,LOCATION_EXTRA,0,nil,e,tp) - local ct=c:GetOverlayGroup():GetClassCount(Card.GetCode) - if ct>ft then ct=ft end - if g1:GetCount()>0 and ct>0 then - repeat - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=g1:Select(tp,1,1,nil) - local tc=g2:GetFirst() - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - g1:Remove(c23187256.gfilter,nil,tc:GetRank()) - ct=ct-1 - until g1:GetCount()==0 or ct==0 or not Duel.SelectYesNo(tp,aux.Stringid(23187256,1)) - Duel.SpecialSummonComplete() - Duel.BreakEffect() - c:RemoveOverlayCard(tp,1,1,REASON_EFFECT) - end - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CHANGE_DAMAGE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(0,1) - e3:SetValue(c23187256.val) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e4:SetReset(RESET_PHASE+PHASE_END) - e4:SetTargetRange(1,0) - Duel.RegisterEffect(e4,tp) -end -function c23187256.val(e,re,dam,r,rp,rc) - if bit.band(r,REASON_BATTLE)~=0 then - return dam/2 - else return dam end -end -function c23187256.indfilter(c) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) -end -function c23187256.indcon(e) - return Duel.IsExistingMatchingCard(c23187256.indfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler()) -end +--No.93 希望皇ホープ・カイザー +function c23187256.initial_effect(c) + --xyz summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_EXTRA) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c23187256.xyzcon) + e1:SetOperation(c23187256.xyzop) + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(23187256,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c23187256.target) + e2:SetOperation(c23187256.operation) + c:RegisterEffect(e2) + --indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetCondition(c23187256.indcon) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) +end +c23187256.xyz_number=93 +function c23187256.xyzm12(c,xyz,tp) + return c23187256.mfilter1(c,xyz,tp) or c23187256.mfilter2(c,xyz,tp) +end +function c23187256.mfilter1(c,xyzc,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) and c:GetOverlayCount()>0 and c:IsCanBeXyzMaterial(xyzc) + and (c:IsControler(tp) or c:IsHasEffect(EFFECT_XYZ_MATERIAL)) +end +function c23187256.mfilter2(c,xyzc,tp) + if c:IsLocation(LOCATION_GRAVE) then + return c:IsHasEffect(511002793) and c:IsType(TYPE_XYZ) and not c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) + else + return c:IsHasEffect(511002116) + end +end +function c23187256.xyzfilter1(c,tp,mg,xyz,matg,ct,sg,min,matct,nodoub,notrip) + local tg + local g=mg:Clone() + if matg==nil or matg:GetCount()==0 then tg=Group.CreateGroup() else tg=matg:Clone() end + g:RemoveCard(c) + tg:AddCard(c) + local tsg=false + if sg then + tsg=sg:Clone() + tsg:RemoveCard(c) + end + local gg=tg:Filter(aux.ValidXyzMaterial,nil) + if gg:IsExists(aux.TuneMagXyzFilter,1,nil,gg,tp) then return false end + local ctc=ct+1 + local matct2=matct + if not c:IsHasEffect(511002116) and min then + matct2=matct+1 + end + if min and matct2>min then return false end + if (not min or matct2==min) and ctc>=2 then return tg:IsExists(aux.XyzFCheck,1,nil,tp) end + if c:IsType(TYPE_XYZ) then g=g:Filter(c23187256.xyzfilter2,nil,c:GetRank()) end + local res2=false + local res3=false + local eqg=c:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + if not sg then + g:Merge(eqg) + end + local isDouble=false + if not nodoub and c:IsHasEffect(511001225) and (not c.xyzlimit2 or c.xyzlimit2(xyz)) then + isDouble=true + res2=true + if (not min or matct2==min) and ctc+1>=2 then return tg:IsExists(aux.XyzFCheck,1,nil,tp) end + end + if not notrip and c:IsHasEffect(511003001) and (not c.xyzlimit3 or c.xyzlimit3(xyz)) then + res3=true + if (not min or matct2==min) and ctc+2>=2 then return true end + end + return g:IsExists(c23187256.xyzfilter1,1,nil,tp,g,xyz,tg,ctc,tsg,min,matct2,false,false) + or (res2 and g:IsExists(c23187256.xyzfilter1,1,nil,tp,g,xyz,tg,ctc+1,tsg,min,matct2,false,false)) + or (res3 and g:IsExists(c23187256.xyzfilter1,1,nil,tp,g,xyz,tg,ctc+1,tsg,min,matct2,false,false)) +end +function c23187256.xyzfilter2(c,rk) + return c:GetRank()==rk or c:IsHasEffect(511002116) or c:IsHasEffect(511001175) +end +function c23187256.xyzcon(e,c,og,min,max) + if c==nil then return true end + local tp=c:GetControler() + local mg=nil + local sg=false + if og then + mg=og:Filter(c23187256.xyzm12,nil,c,tp) + sg=mg:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) + else + mg=Duel.GetMatchingGroup(c23187256.mfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + local mg2=Duel.GetMatchingGroup(c23187256.mfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c,tp) + mg:Merge(mg2) + end + local minchk=min + if c:GetFlagEffect(999)~=0 then minchk=nil end + return mg:IsExists(c23187256.xyzfilter1,1,nil,tp,mg,c,nil,0,sg,minchk,0,false) +end +function c23187256.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) + if og and not min then + if not og:IsExists(c23187256.xyzfilter1,1,nil,tp,og,c,nil,0,og,og:GetCount(),0,false) then + local matg=Group.CreateGroup() + local mg=og:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) + local ct=og:GetCount() + tog=og:Clone() + local tc=tog:GetFirst() + local matct=0 + local ct=0 + while tc do + local isDouble=false + if tc:IsHasEffect(511001225) and (not tc.xyzlimit2 or tc.xyzlimit2(c)) and ct+1<3 + and (not c23187256.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,true,true) or Duel.SelectYesNo(tp,65)) then + isDouble=true + end + if tc:IsHasEffect(511003001) and (not tc.xyzlimit3 or tc.xyzlimit3(c)) and ct+2<3 then + if (isDouble and not c23187256.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,false,true)) + or (not isDouble and not c23187256.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,true,true)) + or Duel.SelectYesNo(tp,65) then + local tct=2 + if isDouble then tct=1 end + ct=ct+tct + end + end + ct=ct+1 + if isDouble then ct=ct+1 end + matct=matct+1 + mg:RemoveCard(tc) + matg:AddCard(tc) + tc=tog:GetNext() + end + while ct<3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg=mg:Select(tp,1,1,nil) + sg:GetFirst():RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + ct=ct+1 + mg:Sub(sg) + matg:Merge(sg) + end + matg:Remove(Card.IsHasEffect,nil,511002116) + matg:Remove(Card.IsHasEffect,nil,511002115) + local sg=Group.CreateGroup() + local tc=matg:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=g:GetNext() + end + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(g) + Duel.Overlay(c,g) + else + local sg=Group.CreateGroup() + local tc=og:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=og:GetNext() + end + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(og) + Duel.Overlay(c,og) + end + else + local mg + local sg=false + if og then + mg=og:Filter(c23187256.xyzm12,nil,c,tp) + sg=mg:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) + else + mg=Duel.GetMatchingGroup(c23187256.xyzm12,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + local mg2=Duel.GetMatchingGroup(c23187256.mfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c,tp) + mg:Merge(mg2) + end + local ct=0 + local matg=Group.CreateGroup() + while ct<2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=mg:FilterSelect(tp,c23187256.xyzfilter1,1,1,nil,tp,mg,c,matg,ct,sg,nil,nil,false) + local tc=g:GetFirst() + local isDouble=false + if tc:IsHasEffect(511001225) and (not tc.xyzlimit2 or tc.xyzlimit2(c)) and ct+1<2 + and (not c23187256.xyzfilter1(tc,tp,mg,c,matg,ct,sg,nil,nil,true) or Duel.SelectYesNo(tp,65)) then + isDouble=true + end + if tc:IsHasEffect(511003001) and (not tc.xyzlimit3 or tc.xyzlimit3(c)) and ct+2<2 then + if (isDouble and not c23187256.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,false,true)) + or (not isDouble and not c23187256.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,true,true)) + or Duel.SelectYesNo(tp,65) then + local tct=2 + if isDouble then tct=1 end + ct=ct+tct + end + end + if isDouble then ct=ct+1 end + if not sg then + local eqg=tc:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + mg:Merge(eqg) + end + mg:RemoveCard(tc) + matg:AddCard(tc) + if tc:IsHasEffect(511002116) then + tc:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + end + if tc:IsType(TYPE_XYZ) then mg=mg:Filter(c23187256.xyzfilter2,nil,tc:GetRank()) end + ct=ct+1 + end + matg:Remove(Card.IsHasEffect,nil,511002116) + matg:Remove(Card.IsHasEffect,nil,511002115) + local sg2=Group.CreateGroup() + local tc=matg:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg2:Merge(sg1) + tc=matg:GetNext() + end + while mg:IsExists(c23187256.ExtraXyzMaterial,1,nil,matg,tp) and Duel.SelectYesNo(tp,513) do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=mg:FilterSelect(tp,c23187256.ExtraXyzMaterial,1,1,nil,matg,tp) + local tc=g:GetFirst() + if not sg then + local eqg=tc:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + mg:Merge(eqg) + end + mg:RemoveCard(tc) + matg:AddCard(tc) + if tc:IsType(TYPE_XYZ) then mg=mg:Filter(c23187256.xyzfilter2,nil,tc:GetRank()) end + if tc:IsHasEffect(511002116) then + tc:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + end + ct=ct+1 + end + Duel.SendtoGrave(sg2,REASON_RULE) + c:SetMaterial(matg) + Duel.Overlay(c,matg) + end +end +function c23187256.ExtraXyzMaterial(c,g,tp) + local gg=g:Filter(aux.ValidXyzMaterial,nil) + gg:AddCard(c) + return not gg:IsExists(Auxiliary.TuneMagXyzFilter,1,nil,gg,tp) +end +function c23187256.filter(c,e,tp) + return c:IsRankBelow(9) and c:IsAttackBelow(3000) and c:IsSetCard(0x48) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c23187256.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c23187256.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c23187256.gfilter(c,rank) + return c:GetRank()==rank +end +function c23187256.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil then ft=math.min(ft,ect) end + local c=e:GetHandler() + local g1=Duel.GetMatchingGroup(c23187256.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + local ct=c:GetOverlayGroup():GetClassCount(Card.GetCode) + if ct>ft then ct=ft end + if g1:GetCount()>0 and ct>0 then + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=g1:Select(tp,1,1,nil) + local tc=g2:GetFirst() + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + g1:Remove(c23187256.gfilter,nil,tc:GetRank()) + ct=ct-1 + until g1:GetCount()==0 or ct==0 or not Duel.SelectYesNo(tp,aux.Stringid(23187256,1)) + Duel.SpecialSummonComplete() + Duel.BreakEffect() + c:RemoveOverlayCard(tp,1,1,REASON_EFFECT) + end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CHANGE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(0,1) + e3:SetValue(c23187256.val) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e4:SetReset(RESET_PHASE+PHASE_END) + e4:SetTargetRange(1,0) + Duel.RegisterEffect(e4,tp) +end +function c23187256.val(e,re,dam,r,rp,rc) + if bit.band(r,REASON_BATTLE)~=0 then + return dam/2 + else return dam end +end +function c23187256.indfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) +end +function c23187256.indcon(e) + return Duel.IsExistingMatchingCard(c23187256.indfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler()) +end diff --git a/script/c23204029.lua b/script/c23204029.lua index d84e7556..c33385fc 100644 --- a/script/c23204029.lua +++ b/script/c23204029.lua @@ -1,69 +1,70 @@ ---C・HERO カオス -function c23204029.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xa008),2,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --attribute - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_ADD_ATTRIBUTE) - e2:SetValue(ATTRIBUTE_LIGHT) - c:RegisterEffect(e2) - --negate - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(23204029,0)) - e3:SetCategory(CATEGORY_DISABLE) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetHintTiming(0,0x1c0) - e3:SetCountLimit(1) - e3:SetTarget(c23204029.target) - e3:SetOperation(c23204029.operation) - c:RegisterEffect(e3) -end -function c23204029.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and aux.disfilter1(chkc) end - if chk==0 then return Duel.IsExistingTarget(aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c23204029.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - if tc:IsType(TYPE_TRAPMONSTER) then - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end - end -end +--C・HERO カオス +function c23204029.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xa008),2,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --attribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_ADD_ATTRIBUTE) + e2:SetValue(ATTRIBUTE_LIGHT) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(23204029,0)) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetHintTiming(0,0x1c0) + e3:SetCountLimit(1) + e3:SetTarget(c23204029.target) + e3:SetOperation(c23204029.operation) + c:RegisterEffect(e3) +end +c23204029.material_setcode=0x8 +function c23204029.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and aux.disfilter1(chkc) end + if chk==0 then return Duel.IsExistingTarget(aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c23204029.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + end +end diff --git a/script/c23220863.lua b/script/c23220863.lua index 3b05b40c..e7e726cd 100644 --- a/script/c23220863.lua +++ b/script/c23220863.lua @@ -1,4 +1,4 @@ ---Magical Cavalry of Cxulub +--シュルブの魔導騎兵 function c23220863.initial_effect(c) --pendulum summon aux.EnablePendulumAttribute(c) diff --git a/script/c2322421.lua b/script/c2322421.lua index 075339cf..6695356a 100644 --- a/script/c2322421.lua +++ b/script/c2322421.lua @@ -1,36 +1,36 @@ ---ロード・ウォリアー -function c2322421.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c2322421.tfilter,aux.NonTuner(nil),2) - c:EnableReviveLimit() - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(2322421,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c2322421.tg) - e1:SetOperation(c2322421.op) - c:RegisterEffect(e1) -end -c2322421.material_setcode=0x17 -function c2322421.tfilter(c) - return c:IsCode(71971554) or c:IsHasEffect(20932152) -end -function c2322421.filter(c,e,tp) - return c:IsLevelBelow(2) and c:IsRace(RACE_WARRIOR+RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c2322421.tg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c2322421.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c2322421.op(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,c2322421.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--ロード・ウォリアー +function c2322421.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c2322421.tfilter,aux.NonTuner(nil),2) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2322421,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c2322421.tg) + e1:SetOperation(c2322421.op) + c:RegisterEffect(e1) +end +c2322421.material_setcode=0x1017 +function c2322421.tfilter(c) + return c:IsCode(71971554) or c:IsHasEffect(20932152) +end +function c2322421.filter(c,e,tp) + return c:IsLevelBelow(2) and c:IsRace(RACE_WARRIOR+RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c2322421.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c2322421.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c2322421.op(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,c2322421.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c23265594.lua b/script/c23265594.lua index bde5ea27..ddfd4b8f 100644 --- a/script/c23265594.lua +++ b/script/c23265594.lua @@ -50,7 +50,8 @@ function c23265594.eqlimit(e,c) return c:IsRace(RACE_MACHINE) or e:GetHandler():GetEquipTarget()==c end function c23265594.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) + local ct1,ct2=c:GetUnionCount() + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and ct2==0 end function c23265594.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c23265594.filter(chkc) end @@ -70,7 +71,7 @@ function c23265594.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c23265594.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(23265594)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c23269426.lua b/script/c23269426.lua index 1ed2f8bd..bbb02a09 100644 --- a/script/c23269426.lua +++ b/script/c23269426.lua @@ -30,8 +30,8 @@ function c23269426.activate(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c23269426.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp,tc:GetCode()) - if sg:GetCount()>0 and not sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) and Duel.SpecialSummonStep(sg:GetFirst(),0,tp,tp,false,false,POS_FACEUP) then + local sg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c23269426.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp,tc:GetCode()) + if sg:GetCount()>0 and Duel.SpecialSummonStep(sg:GetFirst(),0,tp,tp,false,false,POS_FACEUP) then local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_DISABLE) diff --git a/script/c23282832.lua b/script/c23282832.lua index 98b33d86..46b74c2e 100644 --- a/script/c23282832.lua +++ b/script/c23282832.lua @@ -25,10 +25,11 @@ function c23282832.tg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,PLAYER_ALL,LOCATION_GRAVE) end function c23282832.op(e,tp,eg,ep,ev,re,r,rp) - local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft1<=0 then return end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c23282832.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,ft1,ft1,nil,e,tp,Duel.GetTurnCount()) + local g=Duel.SelectMatchingCard(tp,c23282832.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,ft,ft,nil,e,tp,Duel.GetTurnCount()) if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end diff --git a/script/c23289281.lua b/script/c23289281.lua index 05034352..221214b5 100644 --- a/script/c23289281.lua +++ b/script/c23289281.lua @@ -1,41 +1,41 @@ ---カラテマン -function c23289281.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(23289281,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetOperation(c23289281.operaion) - c:RegisterEffect(e1) -end -function c23289281.operaion(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(c:GetBaseAttack()*2) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(23289281,1)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c23289281.destg) - e2:SetOperation(c23289281.desop) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e2) -end -function c23289281.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 c23289281.desop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.Destroy(e:GetHandler(),REASON_EFFECT) - end -end +--カラテマン +function c23289281.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23289281,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetOperation(c23289281.operaion) + c:RegisterEffect(e1) +end +function c23289281.operaion(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(23289281,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c23289281.destg) + e2:SetOperation(c23289281.desop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) +end +function c23289281.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 c23289281.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c23296404.lua b/script/c23296404.lua index 0b6f3e99..d7e7dda5 100644 --- a/script/c23296404.lua +++ b/script/c23296404.lua @@ -1,88 +1,88 @@ ---イグナイト・アヴェンジャー -function c23296404.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c23296404.sptg) - e1:SetOperation(c23296404.spop) - c:RegisterEffect(e1) - --todeck - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_TODECK) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c23296404.tdtg) - e2:SetOperation(c23296404.tdop) - c:RegisterEffect(e2) -end -function c23296404.desfilter(c) - return c:IsFaceup() and c:IsSetCard(0xc8) -end -function c23296404.desfilter2(c,e) - return c23296404.desfilter(c) and c:IsCanBeEffectTarget(e) -end -function c23296404.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c23296404.desfilter(chkc) end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local ct=-ft+1 - if chk==0 then return ct<=3 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingTarget(c23296404.desfilter,tp,LOCATION_ONFIELD,0,3,nil) - and (ct<=0 or Duel.IsExistingTarget(c23296404.desfilter,tp,LOCATION_MZONE,0,ct,nil)) end - local g=nil - if ct>0 then - local tg=Duel.GetMatchingGroup(c23296404.desfilter2,tp,LOCATION_ONFIELD,0,nil,e) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - g=tg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) - if ct<3 then - tg:Sub(g) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g2=tg:Select(tp,3-ct,3-ct,nil) - g:Merge(g2) - end - Duel.SetTargetCard(g) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - g=Duel.SelectTarget(tp,c23296404.desfilter,tp,LOCATION_ONFIELD,0,3,3,nil) - end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,3,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c23296404.spop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if Duel.Destroy(g,REASON_EFFECT)~=0 then - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end - end -end -function c23296404.thfilter(c) - return c:IsFaceup() and c:IsSetCard(0xc8) and c:IsAbleToHand() -end -function c23296404.tdfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() -end -function c23296404.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c23296404.thfilter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c23296404.thfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) - and Duel.IsExistingMatchingCard(c23296404.tdfilter,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c23296404.thfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,1-tp,LOCATION_ONFIELD) -end -function c23296404.tdop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,c23296404.tdfilter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SendtoDeck(g,nil,1,REASON_EFFECT) - end -end +--イグナイト・アヴェンジャー +function c23296404.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c23296404.sptg) + e1:SetOperation(c23296404.spop) + c:RegisterEffect(e1) + --todeck + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_TODECK) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c23296404.tdtg) + e2:SetOperation(c23296404.tdop) + c:RegisterEffect(e2) +end +function c23296404.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc8) +end +function c23296404.desfilter2(c,e) + return c23296404.desfilter(c) and c:IsCanBeEffectTarget(e) +end +function c23296404.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c23296404.desfilter(chkc) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + if chk==0 then return ct<=3 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c23296404.desfilter,tp,LOCATION_ONFIELD,0,3,nil) + and (ct<=0 or Duel.IsExistingTarget(c23296404.desfilter,tp,LOCATION_MZONE,0,ct,nil)) end + local g=nil + if ct>0 then + local tg=Duel.GetMatchingGroup(c23296404.desfilter2,tp,LOCATION_ONFIELD,0,nil,e) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + g=tg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) + if ct<3 then + tg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=tg:Select(tp,3-ct,3-ct,nil) + g:Merge(g2) + end + Duel.SetTargetCard(g) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + g=Duel.SelectTarget(tp,c23296404.desfilter,tp,LOCATION_ONFIELD,0,3,3,nil) + end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c23296404.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.Destroy(g,REASON_EFFECT)~=0 then + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end + end +end +function c23296404.thfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc8) and c:IsAbleToHand() +end +function c23296404.tdfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() +end +function c23296404.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c23296404.thfilter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c23296404.thfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(c23296404.tdfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c23296404.thfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,1-tp,LOCATION_ONFIELD) +end +function c23296404.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c23296404.tdfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SendtoDeck(g,nil,1,REASON_EFFECT) + end +end diff --git a/script/c23297235.lua b/script/c23297235.lua index a77374f0..a3959405 100644 --- a/script/c23297235.lua +++ b/script/c23297235.lua @@ -1,30 +1,30 @@ ---フレムベル・ヘルドッグ -function c23297235.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(23297235,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(aux.bdogcon) - e1:SetTarget(c23297235.sptg) - e1:SetOperation(c23297235.spop) - c:RegisterEffect(e1) -end -function c23297235.filter(c,e,tp) - return c:IsDefenseBelow(200) and c:IsAttribute(ATTRIBUTE_FIRE) and c:GetCode()~=23297235 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c23297235.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c23297235.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c23297235.spop(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,c23297235.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--フレムベル・ヘルドッグ +function c23297235.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23297235,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(aux.bdogcon) + e1:SetTarget(c23297235.sptg) + e1:SetOperation(c23297235.spop) + c:RegisterEffect(e1) +end +function c23297235.filter(c,e,tp) + return c:IsDefenseBelow(200) and c:IsAttribute(ATTRIBUTE_FIRE) and c:GetCode()~=23297235 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c23297235.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c23297235.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c23297235.spop(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,c23297235.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c23299957.lua b/script/c23299957.lua index 3b50fcc7..2c0313ef 100644 --- a/script/c23299957.lua +++ b/script/c23299957.lua @@ -1,86 +1,86 @@ ---ビークロイド・コネクション・ゾーン -function c23299957.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c23299957.target) - e1:SetOperation(c23299957.activate) - c:RegisterEffect(e1) -end -function c23299957.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c23299957.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1016) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c23299957.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c23299957.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c23299957.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c23299957.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c23299957.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c23299957.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c23299957.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CANNOT_DISEFFECT) - e3:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e3,true) - end -end +--ビークロイド・コネクション・ゾーン +function c23299957.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c23299957.target) + e1:SetOperation(c23299957.activate) + c:RegisterEffect(e1) +end +function c23299957.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c23299957.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1016) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c23299957.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c23299957.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c23299957.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c23299957.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c23299957.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c23299957.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c23299957.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DISEFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + end +end diff --git a/script/c23303072.lua b/script/c23303072.lua index 2f246eb5..4e4b2c6a 100644 --- a/script/c23303072.lua +++ b/script/c23303072.lua @@ -1,46 +1,46 @@ ---モンタージュ・ドラゴン -function c23303072.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(23303072,1)) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c23303072.spcon) - e2:SetOperation(c23303072.spop) - c:RegisterEffect(e2) -end -function c23303072.filter(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() -end -function c23303072.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c23303072.filter,c:GetControler(),LOCATION_HAND,0,3,e:GetHandler()) -end -function c23303072.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c23303072.filter,tp,LOCATION_HAND,0,3,3,c) - Duel.SendtoGrave(g,REASON_COST) - local sum=0 - local tc=g:GetFirst() - while tc do - local lv=tc:GetLevel() - sum=sum+lv - tc=g:GetNext() - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(sum*300) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) -end +--モンタージュ・ドラゴン +function c23303072.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(23303072,1)) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c23303072.spcon) + e2:SetOperation(c23303072.spop) + c:RegisterEffect(e2) +end +function c23303072.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c23303072.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c23303072.filter,c:GetControler(),LOCATION_HAND,0,3,e:GetHandler()) +end +function c23303072.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c23303072.filter,tp,LOCATION_HAND,0,3,3,c) + Duel.SendtoGrave(g,REASON_COST) + local sum=0 + local tc=g:GetFirst() + while tc do + local lv=tc:GetLevel() + sum=sum+lv + tc=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(sum*300) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) +end diff --git a/script/c23309606.lua b/script/c23309606.lua index 2e07633a..c7bdf6b6 100644 --- a/script/c23309606.lua +++ b/script/c23309606.lua @@ -25,14 +25,13 @@ end function c23309606.otfilter(c,tp) return c:IsAttackAbove(2000) and (c:IsControler(tp) or c:IsFaceup()) end -function c23309606.otcon(e,c) +function c23309606.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) hg:RemoveCard(c) local mg=Duel.GetMatchingGroup(c23309606.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return hg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return hg:GetCount()>0 and minc<=1 and Duel.CheckTribute(c,1,1,mg) and hg:FilterCount(Card.IsAbleToGraveAsCost,nil)==hg:GetCount() end function c23309606.otop(e,tp,eg,ep,ev,re,r,rp,c) diff --git a/script/c2333365.lua b/script/c2333365.lua index cdd4f370..bc176cce 100644 --- a/script/c2333365.lua +++ b/script/c2333365.lua @@ -1,28 +1,28 @@ ---極星將テュール -function c2333365.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c2333365.descon) - c:RegisterEffect(e1) - --battle target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetValue(c2333365.atlimit) - c:RegisterEffect(e2) -end -function c2333365.filter(c) - return c:IsFaceup() and c:IsSetCard(0x42) -end -function c2333365.descon(e) - return not Duel.IsExistingMatchingCard(c2333365.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) -end -function c2333365.atlimit(e,c) - return c:IsFaceup() and c:GetCode()~=2333365 and c:IsSetCard(0x42) -end +--極星將テュール +function c2333365.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c2333365.descon) + c:RegisterEffect(e1) + --battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetValue(c2333365.atlimit) + c:RegisterEffect(e2) +end +function c2333365.filter(c) + return c:IsFaceup() and c:IsSetCard(0x42) +end +function c2333365.descon(e) + return not Duel.IsExistingMatchingCard(c2333365.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c2333365.atlimit(e,c) + return c:IsFaceup() and c:GetCode()~=2333365 and c:IsSetCard(0x42) +end diff --git a/script/c23424603.lua b/script/c23424603.lua index e7ef0252..7dc59556 100644 --- a/script/c23424603.lua +++ b/script/c23424603.lua @@ -1,21 +1,21 @@ ---荒野 -function c23424603.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR+RACE_ZOMBIE+RACE_ROCK)) - e2:SetValue(200) - c:RegisterEffect(e2) - --Def - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end +--荒野 +function c23424603.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR+RACE_ZOMBIE+RACE_ROCK)) + e2:SetValue(200) + c:RegisterEffect(e2) + --Def + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end diff --git a/script/c23434538.lua b/script/c23434538.lua index a35b6d25..6ac341e4 100644 --- a/script/c23434538.lua +++ b/script/c23434538.lua @@ -1,69 +1,70 @@ ---増殖するG -function c23434538.initial_effect(c) - --draw - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(23434538,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,23434538) - e1:SetCost(c23434538.cost) - e1:SetOperation(c23434538.operation) - c:RegisterEffect(e1) -end -function c23434538.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c23434538.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c23434538.drcon1) - e1:SetOperation(c23434538.drop1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - --sp_summon effect - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c23434538.regcon) - e2:SetOperation(c23434538.regop) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetCode(EVENT_CHAIN_SOLVED) - e3:SetCondition(c23434538.drcon2) - e3:SetOperation(c23434538.drop2) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) -end -function c23434538.filter(c,sp) - return c:GetSummonPlayer()==sp -end -function c23434538.drcon1(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c23434538.filter,1,nil,1-tp) - and (not re:IsHasType(EFFECT_TYPE_ACTIONS) or re:IsHasType(EFFECT_TYPE_CONTINUOUS)) -end -function c23434538.drop1(e,tp,eg,ep,ev,re,r,rp) - Duel.Draw(tp,1,REASON_EFFECT) -end -function c23434538.regcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c23434538.filter,1,nil,1-tp) - and re:IsHasType(EFFECT_TYPE_ACTIONS) and not re:IsHasType(EFFECT_TYPE_CONTINUOUS) -end -function c23434538.regop(e,tp,eg,ep,ev,re,r,rp) - Duel.RegisterFlagEffect(tp,23434538,RESET_CHAIN,0,1) -end -function c23434538.drcon2(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFlagEffect(tp,23434538)>0 -end -function c23434538.drop2(e,tp,eg,ep,ev,re,r,rp) - local n=Duel.GetFlagEffect(tp,23434538) - Duel.ResetFlagEffect(tp,23434538) - Duel.Draw(tp,n,REASON_EFFECT) -end +--増殖するG +function c23434538.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23434538,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,23434538) + e1:SetCost(c23434538.cost) + e1:SetOperation(c23434538.operation) + c:RegisterEffect(e1) +end +function c23434538.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c23434538.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c23434538.drcon1) + e1:SetOperation(c23434538.drop1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + --sp_summon effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c23434538.regcon) + e2:SetOperation(c23434538.regop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_CHAIN_SOLVED) + e3:SetCondition(c23434538.drcon2) + e3:SetOperation(c23434538.drop2) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c23434538.filter(c,sp) + return c:GetSummonPlayer()==sp +end +function c23434538.drcon1(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c23434538.filter,1,nil,1-tp) + and (not re:IsHasType(EFFECT_TYPE_ACTIONS) or re:IsHasType(EFFECT_TYPE_CONTINUOUS)) +end +function c23434538.drop1(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,1,REASON_EFFECT) +end +function c23434538.regcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c23434538.filter,1,nil,1-tp) + and re:IsHasType(EFFECT_TYPE_ACTIONS) and not re:IsHasType(EFFECT_TYPE_CONTINUOUS) +end +function c23434538.regop(e,tp,eg,ep,ev,re,r,rp) + Duel.RegisterFlagEffect(tp,23434538,RESET_CHAIN,0,1) +end +function c23434538.drcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,23434538)>0 +end +function c23434538.drop2(e,tp,eg,ep,ev,re,r,rp) + local n=Duel.GetFlagEffect(tp,23434538) + Duel.ResetFlagEffect(tp,23434538) + Duel.Draw(tp,n,REASON_EFFECT) +end diff --git a/script/c23440231.lua b/script/c23440231.lua index 04aa9158..cd0e8a3e 100644 --- a/script/c23440231.lua +++ b/script/c23440231.lua @@ -1,131 +1,130 @@ ---インフェルノイド・リリス -function c23440231.initial_effect(c) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e2:SetCondition(c23440231.spcon) - e2:SetOperation(c23440231.spop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetTarget(c23440231.destg) - e3:SetOperation(c23440231.desop) - c:RegisterEffect(e3) - --negate - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_NEGATE+CATEGORY_REMOVE) - e4:SetCode(EVENT_CHAINING) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e4:SetCountLimit(1) - e4:SetCondition(c23440231.negcon) - e4:SetCost(c23440231.negcost) - e4:SetTarget(c23440231.negtg) - e4:SetOperation(c23440231.negop) - c:RegisterEffect(e4) -end -function c23440231.spfilter(c) - return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c23440231.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local sum=0 - for i=0,4 do - local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) - if tc and tc:IsFaceup() and tc:IsType(TYPE_EFFECT) then - if tc:IsType(TYPE_XYZ) then sum=sum+tc:GetRank() - else sum=sum+tc:GetLevel() end - end - end - if sum>8 then return false end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-2 then return false end - if c:IsHasEffect(34822850) then - if ft>0 then - return Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,c) - else - local ct=-ft+1 - return Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_MZONE,0,ct,nil) - and Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,c) - end - else - return ft>0 and Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,3,c) - end -end -function c23440231.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - if c:IsHasEffect(34822850) then - if ft>0 then - g=Duel.SelectMatchingCard(tp,c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,3,c) - else - local sg=Duel.GetMatchingGroup(c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) - local ct=-ft+1 - g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) - if ct<3 then - sg:Sub(g) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=sg:Select(tp,3-ct,3-ct,nil) - g:Merge(g2) - end - end - else - g=Duel.SelectMatchingCard(tp,c23440231.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,3,3,c) - end - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c23440231.desfilter(c) - return (c:IsFacedown() or not c:IsSetCard(0xc5)) and c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c23440231.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c23440231.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - local g=Duel.GetMatchingGroup(c23440231.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c23440231.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c23440231.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - end -end -function c23440231.negcon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and re:GetHandler()~=e:GetHandler() - and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) -end -function c23440231.cfilter(c) - return not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c23440231.negcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c23440231.cfilter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c23440231.cfilter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c23440231.negtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsAbleToRemove() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) - end -end -function c23440231.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Remove(eg,POS_FACEUP,REASON_EFFECT) - end -end +--インフェルノイド・リリス +function c23440231.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e2:SetCondition(c23440231.spcon) + e2:SetOperation(c23440231.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c23440231.destg) + e3:SetOperation(c23440231.desop) + c:RegisterEffect(e3) + --negate + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_NEGATE+CATEGORY_REMOVE) + e4:SetCode(EVENT_CHAINING) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetCountLimit(1) + e4:SetCondition(c23440231.negcon) + e4:SetCost(c23440231.negcost) + e4:SetTarget(c23440231.negtg) + e4:SetOperation(c23440231.negop) + c:RegisterEffect(e4) +end +function c23440231.spfilter(c) + return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c23440231.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local sum=0 + for i=0,4 do + local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + if tc and tc:IsFaceup() and tc:IsType(TYPE_EFFECT) then + if tc:IsType(TYPE_XYZ) then sum=sum+tc:GetRank() + else sum=sum+tc:GetLevel() end + end + end + if sum>8 then return false end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + if c:IsHasEffect(34822850) then + if ft>0 then + return Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,c) + else + local ct=-ft+1 + return Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_MZONE,0,ct,nil) + and Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,c) + end + else + return ft>0 and Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,3,c) + end +end +function c23440231.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + if c:IsHasEffect(34822850) then + if ft>0 then + g=Duel.SelectMatchingCard(tp,c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,3,c) + else + local sg=Duel.GetMatchingGroup(c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) + local ct=-ft+1 + g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) + if ct<3 then + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=sg:Select(tp,3-ct,3-ct,nil) + g:Merge(g2) + end + end + else + g=Duel.SelectMatchingCard(tp,c23440231.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,3,3,c) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c23440231.desfilter(c) + return (c:IsFacedown() or not c:IsSetCard(0xc5)) and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c23440231.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c23440231.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c23440231.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c23440231.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c23440231.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c23440231.negcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and re:GetHandler()~=e:GetHandler() + and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c23440231.cfilter(c) + return not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c23440231.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c23440231.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c23440231.cfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c23440231.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return re:GetHandler():IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) + end +end +function c23440231.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Remove(eg,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c23454876.lua b/script/c23454876.lua index 6ad4ae51..8c86cac8 100644 --- a/script/c23454876.lua +++ b/script/c23454876.lua @@ -20,7 +20,7 @@ function c23454876.initial_effect(c) e2:SetDescription(aux.Stringid(23454876,1)) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_PLAYER_TARGET) e2:SetCondition(c23454876.damcon) e2:SetCost(c23454876.damcost) e2:SetTarget(c23454876.damtg) diff --git a/script/c23471572.lua b/script/c23471572.lua index b7c6f1cb..1d63cbbd 100644 --- a/script/c23471572.lua +++ b/script/c23471572.lua @@ -1,28 +1,28 @@ ---ソロモンの律法書 -function c23471572.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetOperation(c23471572.activate) - c:RegisterEffect(e1) -end -function c23471572.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetCode(EFFECT_SKIP_SP) - if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY then - e1:SetCondition(c23471572.skipcon) - e1:SetLabel(Duel.GetTurnCount()) - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - end - Duel.RegisterEffect(e1,tp) -end -function c23471572.skipcon(e) - return Duel.GetTurnCount()~=e:GetLabel() -end +--ソロモンの律法書 +function c23471572.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetOperation(c23471572.activate) + c:RegisterEffect(e1) +end +function c23471572.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetCode(EFFECT_SKIP_SP) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY then + e1:SetCondition(c23471572.skipcon) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + end + Duel.RegisterEffect(e1,tp) +end +function c23471572.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c23516703.lua b/script/c23516703.lua index 4bcd2dab..cb752a9a 100644 --- a/script/c23516703.lua +++ b/script/c23516703.lua @@ -34,7 +34,7 @@ function c23516703.limittg(e,c,tp) local t1,t2,t3=Duel.GetActivityCount(tp,ACTIVITY_SUMMON,ACTIVITY_FLIPSUMMON,ACTIVITY_SPSUMMON) return t1+t2+t3>=2 end -function c23516703.countval(e,tp) +function c23516703.countval(e,re,tp) local t1,t2,t3=Duel.GetActivityCount(tp,ACTIVITY_SUMMON,ACTIVITY_FLIPSUMMON,ACTIVITY_SPSUMMON) if t1+t2+t3>=2 then return 0 else return 2-t1-t2-t3 end end diff --git a/script/c23558733.lua b/script/c23558733.lua index da25be07..46bbe55d 100644 --- a/script/c23558733.lua +++ b/script/c23558733.lua @@ -1,81 +1,81 @@ ---フェニキシアン・クラスター・アマリリス -function c23558733.initial_effect(c) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_BATTLED) - e2:SetOperation(c23558733.desop) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(23558733,0)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c23558733.damcon) - e3:SetTarget(c23558733.damtg) - e3:SetOperation(c23558733.damop) - c:RegisterEffect(e3) - --Special Summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(23558733,1)) - e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetCode(EVENT_PHASE+PHASE_END) - e4:SetRange(LOCATION_GRAVE) - e4:SetCountLimit(1) - e4:SetCondition(c23558733.spcon) - e4:SetCost(c23558733.spcost) - e4:SetTarget(c23558733.sptg) - e4:SetOperation(c23558733.spop) - c:RegisterEffect(e4) -end -function c23558733.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c==Duel.GetAttacker() and not c:IsStatus(STATUS_BATTLE_DESTROYED) then - Duel.Destroy(c,REASON_EFFECT) - end -end -function c23558733.damcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetPreviousControler()==tp and bit.band(r,REASON_DESTROY)~=0 - and bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)>0 -end -function c23558733.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(800) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) -end -function c23558733.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c23558733.cfilter(c) - return c:IsRace(RACE_PLANT) and c:IsAbleToRemoveAsCost() -end -function c23558733.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c23558733.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c23558733.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c23558733.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c23558733.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c23558733.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,true,false,POS_FACEUP_DEFENSE) - end -end +--フェニキシアン・クラスター・アマリリス +function c23558733.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetOperation(c23558733.desop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(23558733,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c23558733.damcon) + e3:SetTarget(c23558733.damtg) + e3:SetOperation(c23558733.damop) + c:RegisterEffect(e3) + --Special Summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(23558733,1)) + e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_GRAVE) + e4:SetCountLimit(1) + e4:SetCondition(c23558733.spcon) + e4:SetCost(c23558733.spcost) + e4:SetTarget(c23558733.sptg) + e4:SetOperation(c23558733.spop) + c:RegisterEffect(e4) +end +function c23558733.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c==Duel.GetAttacker() and not c:IsStatus(STATUS_BATTLE_DESTROYED) then + Duel.Destroy(c,REASON_EFFECT) + end +end +function c23558733.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousControler()==tp and bit.band(r,REASON_DESTROY)~=0 + and bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)>0 +end +function c23558733.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c23558733.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c23558733.cfilter(c) + return c:IsRace(RACE_PLANT) and c:IsAbleToRemoveAsCost() +end +function c23558733.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c23558733.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c23558733.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c23558733.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c23558733.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c23558733.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,true,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c23562407.lua b/script/c23562407.lua index 0efc6e2d..a7db8dc2 100644 --- a/script/c23562407.lua +++ b/script/c23562407.lua @@ -1,28 +1,13 @@ --聖剣カリバーン function c23562407.initial_effect(c) c:SetUniqueOnField(1,0,23562407) - --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(c23562407.target) - e1:SetOperation(c23562407.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,0,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(500) 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(c23562407.eqlimit) - c:RegisterEffect(e3) --lp local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(23562407,0)) @@ -46,19 +31,6 @@ function c23562407.initial_effect(c) e5:SetOperation(c23562407.operation) c:RegisterEffect(e5) end -function c23562407.eqlimit(e,c) - return c:IsRace(RACE_WARRIOR) -end -function c23562407.eqfilter1(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c23562407.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c23562407.eqfilter1(chkc) end - if chk==0 then return Duel.IsExistingTarget(c23562407.eqfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c23562407.eqfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end function c23562407.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local tc=Duel.GetFirstTarget() diff --git a/script/c23581825.lua b/script/c23581825.lua index 6be5b7e9..359fe62a 100644 --- a/script/c23581825.lua +++ b/script/c23581825.lua @@ -1,51 +1,51 @@ ---RUM-ソウル・シェイブ・フォース -function c23581825.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetHintTiming(TIMING_DESTROY) - e1:SetCost(c23581825.cost) - e1:SetTarget(c23581825.target) - e1:SetOperation(c23581825.activate) - c:RegisterEffect(e1) -end -function c23581825.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) -end -function c23581825.filter1(c,e,tp) - return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c23581825.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+2) -end -function c23581825.filter2(c,e,tp,mc,rk) - return c:GetRank()==rk and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c23581825.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c23581825.filter1(chkc,e,tp) end - if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c23581825.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c23581825.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,tp,LOCATION_EXTRA) -end -function c23581825.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end - if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c23581825.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+2) - local sc=g:GetFirst() - if sc then - Duel.BreakEffect() - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end -end +--RUM-ソウル・シェイブ・フォース +function c23581825.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(TIMING_DESTROY) + e1:SetCost(c23581825.cost) + e1:SetTarget(c23581825.target) + e1:SetOperation(c23581825.activate) + c:RegisterEffect(e1) +end +function c23581825.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c23581825.filter1(c,e,tp) + return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c23581825.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+2) +end +function c23581825.filter2(c,e,tp,mc,rk) + return c:GetRank()==rk and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c23581825.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c23581825.filter1(chkc,e,tp) end + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c23581825.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c23581825.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,tp,LOCATION_EXTRA) +end +function c23581825.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c23581825.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+2) + local sc=g:GetFirst() + if sc then + Duel.BreakEffect() + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c23587624.lua b/script/c23587624.lua index 424283d2..90fe6d1a 100644 --- a/script/c23587624.lua +++ b/script/c23587624.lua @@ -1,87 +1,87 @@ ---青天の霹靂 -function c23587624.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c23587624.condition) - e1:SetTarget(c23587624.target) - e1:SetOperation(c23587624.activate) - c:RegisterEffect(e1) -end -function c23587624.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c23587624.spfilter(c,e,tp) - return c:GetOriginalLevel()<=10 and not c:IsSummonableCard() and c:IsType(TYPE_MONSTER) - and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c23587624.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c23587624.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c23587624.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c23587624.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c23587624.efilter) - e1:SetOwnerPlayer(tp) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c23587624.tdcon) - e2:SetOperation(c23587624.tdop) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - tc:RegisterEffect(e2,true) - end - Duel.SpecialSummonComplete() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) - local e3=e1:Clone() - e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - Duel.RegisterEffect(e3,tp) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CHANGE_DAMAGE) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(0,1) - e4:SetValue(0) - e4:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e4,tp) - local e5=e4:Clone() - e5:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e5:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e5,tp) -end -function c23587624.efilter(e,re) - return e:GetOwnerPlayer()==re:GetOwnerPlayer() and e:GetHandler()~=re:GetHandler() -end -function c23587624.tdcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c23587624.tdop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) -end +--青天の霹靂 +function c23587624.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c23587624.condition) + e1:SetTarget(c23587624.target) + e1:SetOperation(c23587624.activate) + c:RegisterEffect(e1) +end +function c23587624.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c23587624.spfilter(c,e,tp) + return c:GetOriginalLevel()<=10 and not c:IsSummonableCard() and c:IsType(TYPE_MONSTER) + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c23587624.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c23587624.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c23587624.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c23587624.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c23587624.efilter) + e1:SetOwnerPlayer(tp) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c23587624.tdcon) + e2:SetOperation(c23587624.tdop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + tc:RegisterEffect(e2,true) + end + Duel.SpecialSummonComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + Duel.RegisterEffect(e3,tp) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CHANGE_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(0,1) + e4:SetValue(0) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) + local e5=e4:Clone() + e5:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e5:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e5,tp) +end +function c23587624.efilter(e,re) + return e:GetOwnerPlayer()==re:GetOwnerPlayer() and e:GetHandler()~=re:GetHandler() +end +function c23587624.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c23587624.tdop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end diff --git a/script/c2359348.lua b/script/c2359348.lua index b8ebf07e..9de09d68 100644 --- a/script/c2359348.lua +++ b/script/c2359348.lua @@ -1,46 +1,46 @@ ---ペンデュラム・エリア -function c2359348.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c2359348.condition) - e1:SetTarget(c2359348.target) - e1:SetOperation(c2359348.activate) - c:RegisterEffect(e1) -end -function c2359348.cfilter(c) - return c:IsFaceup() and c:IsType(TYPE_PENDULUM) -end -function c2359348.condition(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) - return g:GetCount()>0 and g:FilterCount(c2359348.cfilter,nil)==g:GetCount() -end -function c2359348.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) - local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) - if chk==0 then return tc1 and tc2 - and tc1:IsCanBeEffectTarget(e) and tc2:IsCanBeEffectTarget(e) end - local g=Group.FromCards(tc1,tc2) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) -end -function c2359348.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if sg:GetCount()==2 and Duel.Destroy(sg,REASON_EFFECT)==2 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,1) - e1:SetTarget(c2359348.splimit) - Duel.RegisterEffect(e1,tp) - end -end -function c2359348.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)~=SUMMON_TYPE_PENDULUM -end +--ペンデュラム・エリア +function c2359348.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c2359348.condition) + e1:SetTarget(c2359348.target) + e1:SetOperation(c2359348.activate) + c:RegisterEffect(e1) +end +function c2359348.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) +end +function c2359348.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + return g:GetCount()>0 and g:FilterCount(c2359348.cfilter,nil)==g:GetCount() +end +function c2359348.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + if chk==0 then return tc1 and tc2 + and tc1:IsCanBeEffectTarget(e) and tc2:IsCanBeEffectTarget(e) end + local g=Group.FromCards(tc1,tc2) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) +end +function c2359348.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()==2 and Duel.Destroy(sg,REASON_EFFECT)==2 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,1) + e1:SetTarget(c2359348.splimit) + Duel.RegisterEffect(e1,tp) + end +end +function c2359348.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)~=SUMMON_TYPE_PENDULUM +end diff --git a/script/c23603403.lua b/script/c23603403.lua index 2aef3494..ae7d18fe 100644 --- a/script/c23603403.lua +++ b/script/c23603403.lua @@ -25,7 +25,7 @@ function c23603403.initial_effect(c) e3:SetDescription(aux.Stringid(23603403,1)) e3:SetCategory(CATEGORY_ATKCHANGE) e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e3:SetCode(EVENT_FREE_CHAIN) e3:SetRange(LOCATION_MZONE) e3:SetCondition(c23603403.atkcon) diff --git a/script/c23649496.lua b/script/c23649496.lua index 10b8b25c..75f56d59 100644 --- a/script/c23649496.lua +++ b/script/c23649496.lua @@ -7,6 +7,7 @@ function c23649496.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(23649496,0)) e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(0,0x1c0) diff --git a/script/c23681456.lua b/script/c23681456.lua index 6c0fbefb..26750756 100644 --- a/script/c23681456.lua +++ b/script/c23681456.lua @@ -21,6 +21,7 @@ function c23681456.operation(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=Duel.SelectMatchingCard(tp,c23681456.filter,tp,LOCATION_HAND,0,1,ft,nil,e,tp) if g:GetCount()>0 then local fid=e:GetHandler():GetFieldID() diff --git a/script/c23689697.lua b/script/c23689697.lua index b74810be..d6169a08 100644 --- a/script/c23689697.lua +++ b/script/c23689697.lua @@ -34,11 +34,10 @@ end function c23689697.otfilter(c) return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE end -function c23689697.otcon(e,c) +function c23689697.otcon(e,c,minc) if c==nil then return true end local mg=Duel.GetMatchingGroup(c23689697.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - return c:GetLevel()>6 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c23689697.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c23689697.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) diff --git a/script/c2370081.lua b/script/c2370081.lua index ad2075e5..6a1f2787 100644 --- a/script/c2370081.lua +++ b/script/c2370081.lua @@ -1,14 +1,6 @@ --はがねの甲羅 function c2370081.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(c2370081.target) - e1:SetOperation(c2370081.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c2370081.filter) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,7 @@ function c2370081.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(-200) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c2370081.eqlimit) - c:RegisterEffect(e4) -end -function c2370081.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_WATER) end function c2370081.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) -end -function c2370081.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c2370081.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c2370081.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c2370081.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c2370081.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 + return c:IsAttribute(ATTRIBUTE_WATER) end diff --git a/script/c2371506.lua b/script/c2371506.lua index 6aca1d54..3d4480d0 100644 --- a/script/c2371506.lua +++ b/script/c2371506.lua @@ -28,8 +28,7 @@ function c2371506.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) end function c2371506.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end Duel.BreakEffect() diff --git a/script/c23740893.lua b/script/c23740893.lua index 6f0265f3..7f246682 100644 --- a/script/c23740893.lua +++ b/script/c23740893.lua @@ -1,60 +1,60 @@ ---妖仙獣 木魅 -function c23740893.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,23740893) - e1:SetCost(c23740893.cost) - e1:SetTarget(c23740893.target) - e1:SetOperation(c23740893.activate) - c:RegisterEffect(e1) - --extra summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCost(c23740893.sumcost) - e2:SetTarget(c23740893.sumtg) - e2:SetOperation(c23740893.sumop) - c:RegisterEffect(e2) -end -function c23740893.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c23740893.filter(c) - return c:IsFaceup() and c:IsCode(27918963) and c:IsCanAddCounter(0x33,3) -end -function c23740893.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsOnField() and c23740893.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c23740893.filter,tp,LOCATION_ONFIELD,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(23740893,0)) - Duel.SelectTarget(tp,c23740893.filter,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x33) -end -function c23740893.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - tc:AddCounter(0x33,3) - end -end -function c23740893.sumcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c23740893.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanSummon(tp) end -end -function c23740893.sumop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,23740893)~=0 then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetTargetRange(LOCATION_HAND,0) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xb3)) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - Duel.RegisterFlagEffect(tp,23740893,RESET_PHASE+PHASE_END,0,1) -end +--妖仙獣 木魅 +function c23740893.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,23740893) + e1:SetCost(c23740893.cost) + e1:SetTarget(c23740893.target) + e1:SetOperation(c23740893.activate) + c:RegisterEffect(e1) + --extra summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c23740893.sumcost) + e2:SetTarget(c23740893.sumtg) + e2:SetOperation(c23740893.sumop) + c:RegisterEffect(e2) +end +function c23740893.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c23740893.filter(c) + return c:IsFaceup() and c:IsCode(27918963) and c:IsCanAddCounter(0x33,3) +end +function c23740893.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsOnField() and c23740893.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c23740893.filter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(23740893,0)) + Duel.SelectTarget(tp,c23740893.filter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x33) +end +function c23740893.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + tc:AddCounter(0x33,3) + end +end +function c23740893.sumcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c23740893.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanSummon(tp) end +end +function c23740893.sumop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,23740893)~=0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xb3)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,23740893,RESET_PHASE+PHASE_END,0,1) +end diff --git a/script/c2376209.lua b/script/c2376209.lua index fbdd9aeb..512deb37 100644 --- a/script/c2376209.lua +++ b/script/c2376209.lua @@ -1,85 +1,85 @@ ---버제스토마 엘도니아 -function c2376209.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c2376209.condition) - e1:SetTarget(c2376209.target) - e1:SetOperation(c2376209.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(2376209,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c2376209.spcon) - e2:SetTarget(c2376209.sptg) - e2:SetOperation(c2376209.spop) - c:RegisterEffect(e2) -end -function c2376209.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c2376209.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c2376209.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(500) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - end -end -function c2376209.spcon(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c2376209.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(2376209)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,2376209,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end - c:RegisterFlagEffect(2376209,RESET_CHAIN,0,1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c2376209.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,2376209,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c2376209.efilter) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetReset(RESET_EVENT+0x47e0000) - e3:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c2376209.efilter(e,re) - return re:IsActiveType(TYPE_MONSTER) -end +--バージェストマ・エルドニア +function c2376209.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c2376209.condition) + e1:SetTarget(c2376209.target) + e1:SetOperation(c2376209.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(2376209,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c2376209.spcon) + e2:SetTarget(c2376209.sptg) + e2:SetOperation(c2376209.spop) + c:RegisterEffect(e2) +end +function c2376209.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c2376209.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c2376209.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end +function c2376209.spcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c2376209.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(2376209)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,2376209,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end + c:RegisterFlagEffect(2376209,RESET_CHAIN,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c2376209.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,2376209,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c2376209.efilter) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c2376209.efilter(e,re) + return re:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c23776077.lua b/script/c23776077.lua index 3b405566..f6a0eb8a 100644 --- a/script/c23776077.lua +++ b/script/c23776077.lua @@ -8,7 +8,7 @@ function c23776077.initial_effect(c) e1:SetDescription(aux.Stringid(23776077,0)) e1:SetCategory(CATEGORY_REMOVE) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c23776077.rmcost) diff --git a/script/c23782705.lua b/script/c23782705.lua index 3a475c47..377b542f 100644 --- a/script/c23782705.lua +++ b/script/c23782705.lua @@ -1,15 +1,15 @@ ---マシンナーズ・スナイパー -function c23782705.initial_effect(c) - --atk limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetTarget(c23782705.tg) - e1:SetValue(aux.imval1) - c:RegisterEffect(e1) -end -function c23782705.tg(e,c) - return c:IsSetCard(0x36) and c:GetCode()~=23782705 -end +--マシンナーズ・スナイパー +function c23782705.initial_effect(c) + --atk limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c23782705.tg) + e1:SetValue(aux.imval1) + c:RegisterEffect(e1) +end +function c23782705.tg(e,c) + return c:IsSetCard(0x36) and c:GetCode()~=23782705 +end diff --git a/script/c23842445.lua b/script/c23842445.lua index 0cabb71f..6382513d 100644 --- a/script/c23842445.lua +++ b/script/c23842445.lua @@ -1,21 +1,6 @@ --ニトロユニット function c23842445.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(c23842445.target) - e1:SetOperation(c23842445.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) + aux.AddEquipProcedure(c,1) --damage local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(23842445,0)) @@ -28,20 +13,6 @@ function c23842445.initial_effect(c) e3:SetOperation(c23842445.damop) c:RegisterEffect(e3) end -function c23842445.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c23842445.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 c23842445.damcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local ec=c:GetPreviousEquipTarget() diff --git a/script/c23846921.lua b/script/c23846921.lua index 2a6590b3..9a174f68 100644 --- a/script/c23846921.lua +++ b/script/c23846921.lua @@ -1,98 +1,98 @@ ---アルカナフォースⅩⅩⅠ-THE WORLD -function c23846921.initial_effect(c) - --coin - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(23846921,0)) - e1:SetCategory(CATEGORY_COIN) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c23846921.cointg) - e1:SetOperation(c23846921.coinop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c23846921.cointg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) -end -function c23846921.coinop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local res=0 - if c:IsHasEffect(73206827) then - res=1-Duel.SelectOption(tp,60,61) - else res=Duel.TossCoin(tp,1) end - c23846921.arcanareg(c,res) -end -function c23846921.arcanareg(c,coin) - --coin effect - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(23846921,1)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetCondition(c23846921.skipcon) - e1:SetCost(c23846921.skipcost) - e1:SetTarget(c23846921.skiptg) - e1:SetOperation(c23846921.skipop) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(23846921,2)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_DRAW) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c23846921.thcon) - e2:SetTarget(c23846921.thtg) - e2:SetOperation(c23846921.thop) - e2:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e2) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) -end -function c23846921.skipcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp and e:GetHandler():GetFlagEffectLabel(36690018)==1 -end -function c23846921.skipcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_MZONE,0,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_MZONE,0,2,2,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c23846921.skiptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_SKIP_TURN) end -end -function c23846921.skipop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_SKIP_TURN) - e1:SetTargetRange(0,1) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - Duel.RegisterEffect(e1,tp) -end -function c23846921.thcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and e:GetHandler():GetFlagEffectLabel(36690018)==0 -end -function c23846921.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local tc=Duel.GetFieldCard(1-tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(1-tp,LOCATION_GRAVE,0)-1) - if tc then - Duel.SetOperationInfo(0,CATEGORY_TOHAND,tc,1,0,0) - end -end -function c23846921.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFieldCard(1-tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(1-tp,LOCATION_GRAVE,0)-1) - if tc then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(tp,tc) - end -end +--アルカナフォースⅩⅩⅠ-THE WORLD +function c23846921.initial_effect(c) + --coin + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23846921,0)) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c23846921.cointg) + e1:SetOperation(c23846921.coinop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c23846921.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c23846921.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local res=0 + if c:IsHasEffect(73206827) then + res=1-Duel.SelectOption(tp,60,61) + else res=Duel.TossCoin(tp,1) end + c23846921.arcanareg(c,res) +end +function c23846921.arcanareg(c,coin) + --coin effect + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23846921,1)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c23846921.skipcon) + e1:SetCost(c23846921.skipcost) + e1:SetTarget(c23846921.skiptg) + e1:SetOperation(c23846921.skipop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(23846921,2)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_DRAW) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c23846921.thcon) + e2:SetTarget(c23846921.thtg) + e2:SetOperation(c23846921.thop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) +end +function c23846921.skipcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and e:GetHandler():GetFlagEffectLabel(36690018)==1 +end +function c23846921.skipcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_MZONE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_MZONE,0,2,2,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c23846921.skiptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_SKIP_TURN) end +end +function c23846921.skipop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_SKIP_TURN) + e1:SetTargetRange(0,1) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) +end +function c23846921.thcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and e:GetHandler():GetFlagEffectLabel(36690018)==0 +end +function c23846921.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=Duel.GetFieldCard(1-tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(1-tp,LOCATION_GRAVE,0)-1) + if tc then + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tc,1,0,0) + end +end +function c23846921.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(1-tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(1-tp,LOCATION_GRAVE,0)-1) + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(tp,tc) + end +end diff --git a/script/c23851033.lua b/script/c23851033.lua index 5c4fa099..2a1953fa 100644 --- a/script/c23851033.lua +++ b/script/c23851033.lua @@ -1,46 +1,46 @@ ---オッドアイズ・グラビティ・ドラゴン -function c23851033.initial_effect(c) - c:EnableReviveLimit() - --tohand - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(23851033,0)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCountLimit(1,23851033) - e1:SetTarget(c23851033.target) - e1:SetOperation(c23851033.operation) - c:RegisterEffect(e1) - --activate cost - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_ACTIVATE_COST) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(0,1) - e2:SetCost(c23851033.costchk) - e2:SetOperation(c23851033.costop) - c:RegisterEffect(e2) -end -function c23851033.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c23851033.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c23851033.filter,tp,0,LOCATION_ONFIELD,1,nil) end - local sg=Duel.GetMatchingGroup(c23851033.filter,tp,0,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) - Duel.SetChainLimit(c23851033.chlimit) -end -function c23851033.chlimit(e,ep,tp) - return tp==ep -end -function c23851033.operation(e,tp,eg,ep,ev,re,r,rp) - local sg=Duel.GetMatchingGroup(c23851033.filter,tp,0,LOCATION_ONFIELD,nil) - Duel.SendtoHand(sg,nil,REASON_EFFECT) -end -function c23851033.costchk(e,te_or_c,tp) - return Duel.CheckLPCost(tp,500) -end -function c23851033.costop(e,tp,eg,ep,ev,re,r,rp) - Duel.PayLPCost(tp,500) -end +--オッドアイズ・グラビティ・ドラゴン +function c23851033.initial_effect(c) + c:EnableReviveLimit() + --tohand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23851033,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCountLimit(1,23851033) + e1:SetTarget(c23851033.target) + e1:SetOperation(c23851033.operation) + c:RegisterEffect(e1) + --activate cost + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_ACTIVATE_COST) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(0,1) + e2:SetCost(c23851033.costchk) + e2:SetOperation(c23851033.costop) + c:RegisterEffect(e2) +end +function c23851033.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c23851033.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c23851033.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local sg=Duel.GetMatchingGroup(c23851033.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) + Duel.SetChainLimit(c23851033.chlimit) +end +function c23851033.chlimit(e,ep,tp) + return tp==ep +end +function c23851033.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c23851033.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end +function c23851033.costchk(e,te_or_c,tp) + return Duel.CheckLPCost(tp,500) +end +function c23851033.costop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,500) +end diff --git a/script/c23857661.lua b/script/c23857661.lua index ca2b717b..8b99ece0 100644 --- a/script/c23857661.lua +++ b/script/c23857661.lua @@ -1,35 +1,35 @@ ---武神器-オキツ -function c23857661.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(23857661,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_GRAVE) - e1:SetCost(c23857661.cost) - e1:SetOperation(c23857661.operation) - c:RegisterEffect(e1) -end -function c23857661.cfilter(c) - return c:IsSetCard(0x88) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() -end -function c23857661.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() - and Duel.IsExistingMatchingCard(c23857661.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) - Duel.DiscardHand(tp,c23857661.cfilter,1,1,REASON_COST) -end -function c23857661.operation(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(0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end +--武神器-オキツ +function c23857661.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23857661,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c23857661.cost) + e1:SetOperation(c23857661.operation) + c:RegisterEffect(e1) +end +function c23857661.cfilter(c) + return c:IsSetCard(0x88) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c23857661.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c23857661.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) + Duel.DiscardHand(tp,c23857661.cfilter,1,1,REASON_COST) +end +function c23857661.operation(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(0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c2396042.lua b/script/c2396042.lua index 62ba122d..258129ee 100644 --- a/script/c2396042.lua +++ b/script/c2396042.lua @@ -1,4 +1,4 @@ ---Steel Cavalry of Dinon +--ディノンの鋼鉄騎兵 function c2396042.initial_effect(c) aux.EnablePendulumAttribute(c) --atk/def diff --git a/script/c23965037.lua b/script/c23965037.lua index 5b9a083e..9ad0890f 100644 --- a/script/c23965037.lua +++ b/script/c23965037.lua @@ -1,4 +1,4 @@ ---ドリアードの祈り -function c23965037.initial_effect(c) - aux.AddRitualProcGreaterCode(c,99414168) -end +--ドリアードの祈り +function c23965037.initial_effect(c) + aux.AddRitualProcGreaterCode(c,99414168) +end diff --git a/script/c23998625.lua b/script/c23998625.lua index 022c0752..3160b986 100644 --- a/script/c23998625.lua +++ b/script/c23998625.lua @@ -1,84 +1,84 @@ ---No.53 偽骸神 Heart-eartH -function c23998625.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,nil,5,3) - c:EnableReviveLimit() - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(23998625,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BE_BATTLE_TARGET) - e1:SetCountLimit(1) - e1:SetTarget(c23998625.atktg) - e1:SetOperation(c23998625.atkop) - c:RegisterEffect(e1) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c23998625.reptg) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(23998625,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_DESTROYED) - e3:SetCondition(c23998625.spcon) - e3:SetTarget(c23998625.sptg) - e3:SetOperation(c23998625.spop) - c:RegisterEffect(e3) -end -c23998625.xyz_number=53 -function c23998625.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetCard(Duel.GetAttacker()) -end -function c23998625.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() - and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then - local atk=tc:GetBaseAttack() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end -function c23998625.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) end - if Duel.SelectYesNo(tp,aux.Stringid(23998625,2)) then - e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_EFFECT) - return true - else return false end -end -function c23998625.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsReason(REASON_EFFECT) and c:GetOverlayCount()==0 - and c:IsLocation(LOCATION_GRAVE) -end -function c23998625.spfilter(c,e,tp) - return c:IsCode(97403510) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c23998625.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c23998625.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c23998625.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstMatchingCard(c23998625.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) - if tc then - local cg=Group.FromCards(c) - tc:SetMaterial(cg) - Duel.Overlay(tc,cg) - Duel.SpecialSummon(tc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - tc:CompleteProcedure() - end -end +--No.53 偽骸神 Heart-eartH +function c23998625.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23998625,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c23998625.atktg) + e1:SetOperation(c23998625.atkop) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c23998625.reptg) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(23998625,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c23998625.spcon) + e3:SetTarget(c23998625.sptg) + e3:SetOperation(c23998625.spop) + c:RegisterEffect(e3) +end +c23998625.xyz_number=53 +function c23998625.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(Duel.GetAttacker()) +end +function c23998625.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() + and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + local atk=tc:GetBaseAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c23998625.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) end + if Duel.SelectYesNo(tp,aux.Stringid(23998625,2)) then + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_EFFECT) + return true + else return false end +end +function c23998625.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsReason(REASON_EFFECT) and c:GetOverlayCount()==0 + and c:IsLocation(LOCATION_GRAVE) +end +function c23998625.spfilter(c,e,tp) + return c:IsCode(97403510) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c23998625.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c23998625.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c23998625.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstMatchingCard(c23998625.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if tc then + local cg=Group.FromCards(c) + tc:SetMaterial(cg) + Duel.Overlay(tc,cg) + Duel.SpecialSummon(tc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c24019092.lua b/script/c24019092.lua index 74d2266e..5a07986f 100644 --- a/script/c24019092.lua +++ b/script/c24019092.lua @@ -1,44 +1,44 @@ ---イグナイト・マスケット -function c24019092.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c24019092.thcon) - e2:SetTarget(c24019092.thtg) - e2:SetOperation(c24019092.thop) - c:RegisterEffect(e2) -end -function c24019092.thcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return pc and pc:IsSetCard(0xc8) -end -function c24019092.filter(c) - return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() -end -function c24019092.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if chk==0 then return Duel.IsExistingMatchingCard(c24019092.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - local g=Group.FromCards(c,pc) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c24019092.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if not pc then return end - local dg=Group.FromCards(c,pc) - if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c24019092.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--イグナイト・マスケット +function c24019092.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c24019092.thcon) + e2:SetTarget(c24019092.thtg) + e2:SetOperation(c24019092.thop) + c:RegisterEffect(e2) +end +function c24019092.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsSetCard(0xc8) +end +function c24019092.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c24019092.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if chk==0 then return Duel.IsExistingMatchingCard(c24019092.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c24019092.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local dg=Group.FromCards(c,pc) + if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c24019092.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c2403771.lua b/script/c2403771.lua index d3185dee..6b6f12d6 100644 --- a/script/c2403771.lua +++ b/script/c2403771.lua @@ -1,64 +1,64 @@ ---パワー・ツール・ドラゴン -function c2403771.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(2403771,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c2403771.thtg) - e1:SetOperation(c2403771.thop) - c:RegisterEffect(e1) - --Destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetTarget(c2403771.desreptg) - e2:SetOperation(c2403771.desrepop) - c:RegisterEffect(e2) -end -function c2403771.thfilter(c) - return c:IsType(TYPE_EQUIP) and c:IsAbleToHand() -end -function c2403771.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c2403771.thfilter,tp,LOCATION_DECK,0,3,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) -end -function c2403771.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c2403771.thfilter,tp,LOCATION_DECK,0,nil) - if g:GetCount()>=3 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=g:Select(tp,3,3,nil) - Duel.ConfirmCards(1-tp,sg) - Duel.ShuffleDeck(tp) - local tg=sg:RandomSelect(1-tp,1) - Duel.SendtoHand(tg,nil,REASON_EFFECT) - end -end -function c2403771.repfilter(c) - return c:IsType(TYPE_SPELL) and c:IsLocation(LOCATION_SZONE) and not c:IsStatus(STATUS_DESTROY_CONFIRMED) -end -function c2403771.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then - local g=c:GetEquipGroup() - return not c:IsReason(REASON_REPLACE) and g:IsExists(c2403771.repfilter,1,nil) - end - if Duel.SelectYesNo(tp,aux.Stringid(2403771,1)) then - local g=c:GetEquipGroup() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local sg=g:FilterSelect(tp,c2403771.repfilter,1,1,nil) - Duel.SetTargetCard(sg) - return true - else return false end -end -function c2403771.desrepop(e,tp,eg,ep,ev,re,r,rp) - local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - Duel.SendtoGrave(tg,REASON_EFFECT+REASON_REPLACE) -end +--パワー・ツール・ドラゴン +function c2403771.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2403771,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c2403771.thtg) + e1:SetOperation(c2403771.thop) + c:RegisterEffect(e1) + --Destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetTarget(c2403771.desreptg) + e2:SetOperation(c2403771.desrepop) + c:RegisterEffect(e2) +end +function c2403771.thfilter(c) + return c:IsType(TYPE_EQUIP) and c:IsAbleToHand() +end +function c2403771.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c2403771.thfilter,tp,LOCATION_DECK,0,3,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c2403771.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c2403771.thfilter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>=3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,3,3,nil) + Duel.ConfirmCards(1-tp,sg) + Duel.ShuffleDeck(tp) + local tg=sg:RandomSelect(1-tp,1) + Duel.SendtoHand(tg,nil,REASON_EFFECT) + end +end +function c2403771.repfilter(c) + return c:IsType(TYPE_SPELL) and c:IsLocation(LOCATION_SZONE) and not c:IsStatus(STATUS_DESTROY_CONFIRMED) +end +function c2403771.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local g=c:GetEquipGroup() + return not c:IsReason(REASON_REPLACE) and g:IsExists(c2403771.repfilter,1,nil) + end + if Duel.SelectYesNo(tp,aux.Stringid(2403771,1)) then + local g=c:GetEquipGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=g:FilterSelect(tp,c2403771.repfilter,1,1,nil) + Duel.SetTargetCard(sg) + return true + else return false end +end +function c2403771.desrepop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + Duel.SendtoGrave(tg,REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c2407147.lua b/script/c2407147.lua index da437db3..b60a3222 100644 --- a/script/c2407147.lua +++ b/script/c2407147.lua @@ -1,32 +1,32 @@ ---ラヴァル炎火山の侍女 -function c2407147.initial_effect(c) - --to grave - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(2407147,0)) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c2407147.condition) - e1:SetTarget(c2407147.target) - e1:SetOperation(c2407147.operation) - c:RegisterEffect(e1) -end -function c2407147.cfilter(c) - return c:IsSetCard(0x39) and c:GetCode()~=2407147 -end -function c2407147.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c2407147.cfilter,tp,LOCATION_GRAVE,0,1,nil) -end -function c2407147.filter(c) - return c:IsSetCard(0x39) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() -end -function c2407147.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c2407147.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c2407147.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c2407147.filter,tp,LOCATION_DECK,0,1,1,nil) - Duel.SendtoGrave(g,REASON_EFFECT) -end +--ラヴァル炎火山の侍女 +function c2407147.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2407147,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c2407147.condition) + e1:SetTarget(c2407147.target) + e1:SetOperation(c2407147.operation) + c:RegisterEffect(e1) +end +function c2407147.cfilter(c) + return c:IsSetCard(0x39) and c:GetCode()~=2407147 +end +function c2407147.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c2407147.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c2407147.filter(c) + return c:IsSetCard(0x39) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c2407147.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c2407147.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c2407147.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c2407147.filter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c2407234.lua b/script/c2407234.lua index 8b9d3905..6cf7bb64 100644 --- a/script/c2407234.lua +++ b/script/c2407234.lua @@ -1,69 +1,69 @@ ---No.69 紋章神コート・オブ・アームズ -function c2407234.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,nil,4,3) - c:EnableReviveLimit() - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(2407234,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetOperation(c2407234.negop) - c:RegisterEffect(e1) - --effect - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(2407234,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,2407234) - e2:SetTarget(c2407234.target) - e2:SetOperation(c2407234.operation) - c:RegisterEffect(e2) -end -c2407234.xyz_number=69 -function c2407234.negfilter(c) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and not c:IsDisabled() -end -function c2407234.negop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c2407234.negfilter,tp,LOCATION_MZONE,LOCATION_MZONE,c) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - tc=g:GetNext() - end -end -function c2407234.filter(c) - return c:IsFaceup() and c:IsType(TYPE_XYZ) -end -function c2407234.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c2407234.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c2407234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c2407234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) -end -function c2407234.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc and c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsFaceup() and tc:IsRelateToEffect(e) then - local code=tc:GetOriginalCode() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) - end -end +--No.69 紋章神コート・オブ・アームズ +function c2407234.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2407234,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c2407234.negop) + c:RegisterEffect(e1) + --effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(2407234,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,2407234) + e2:SetTarget(c2407234.target) + e2:SetOperation(c2407234.operation) + c:RegisterEffect(e2) +end +c2407234.xyz_number=69 +function c2407234.negfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and not c:IsDisabled() +end +function c2407234.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c2407234.negfilter,tp,LOCATION_MZONE,LOCATION_MZONE,c) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c2407234.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c2407234.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c2407234.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c2407234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c2407234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) +end +function c2407234.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local code=tc:GetOriginalCode() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end +end diff --git a/script/c24082387.lua b/script/c24082387.lua index 88d259e0..756f08d5 100644 --- a/script/c24082387.lua +++ b/script/c24082387.lua @@ -1,54 +1,54 @@ ---ミステリーサークル -function c24082387.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetLabel(0) - e1:SetCost(c24082387.cost) - e1:SetTarget(c24082387.target) - e1:SetOperation(c24082387.activate) - c:RegisterEffect(e1) -end -function c24082387.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(100) - return true -end -function c24082387.filter1(c,e,tp,cg,minc) - return c:IsSetCard(0xc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and cg:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),minc,99) -end -function c24082387.cgfilter(c) - return c:GetLevel()>0 and c:IsAbleToGraveAsCost() and bit.band(c:GetOriginalType(),TYPE_MONSTER)~=0 -end -function c24082387.target(e,tp,eg,ep,ev,re,r,rp,chk) - local cg=Duel.GetMatchingGroup(c24082387.cgfilter,tp,LOCATION_MZONE,0,nil) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local minc=-ft+1 - if minc<=0 then minc=1 end - if chk==0 then - if e:GetLabel()~=100 then return false end - e:SetLabel(0) - return Duel.IsExistingMatchingCard(c24082387.filter1,tp,LOCATION_DECK,0,1,nil,e,tp,cg,minc) - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local rg=Duel.SelectMatchingCard(tp,c24082387.filter1,tp,LOCATION_DECK,0,1,1,nil,e,tp,cg,minc) - e:SetLabel(rg:GetFirst():GetLevel()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local sg=cg:SelectWithSumEqual(tp,Card.GetLevel,e:GetLabel(),minc,99) - Duel.SendtoGrave(sg,REASON_COST) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c24082387.filter2(c,e,tp,lv) - return c:IsSetCard(0xc) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c24082387.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then Duel.Damage(tp,2000,REASON_EFFECT) return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c24082387.filter2,tp,LOCATION_DECK,0,1,1,nil,e,tp,e:GetLabel()) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - else Duel.Damage(tp,2000,REASON_EFFECT) end -end +--ミステリーサークル +function c24082387.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetLabel(0) + e1:SetCost(c24082387.cost) + e1:SetTarget(c24082387.target) + e1:SetOperation(c24082387.activate) + c:RegisterEffect(e1) +end +function c24082387.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(100) + return true +end +function c24082387.filter1(c,e,tp,cg,minc) + return c:IsSetCard(0xc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and cg:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),minc,99) +end +function c24082387.cgfilter(c) + return c:GetLevel()>0 and c:IsAbleToGraveAsCost() and bit.band(c:GetOriginalType(),TYPE_MONSTER)~=0 +end +function c24082387.target(e,tp,eg,ep,ev,re,r,rp,chk) + local cg=Duel.GetMatchingGroup(c24082387.cgfilter,tp,LOCATION_MZONE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local minc=-ft+1 + if minc<=0 then minc=1 end + if chk==0 then + if e:GetLabel()~=100 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c24082387.filter1,tp,LOCATION_DECK,0,1,nil,e,tp,cg,minc) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local rg=Duel.SelectMatchingCard(tp,c24082387.filter1,tp,LOCATION_DECK,0,1,1,nil,e,tp,cg,minc) + e:SetLabel(rg:GetFirst():GetLevel()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=cg:SelectWithSumEqual(tp,Card.GetLevel,e:GetLabel(),minc,99) + Duel.SendtoGrave(sg,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c24082387.filter2(c,e,tp,lv) + return c:IsSetCard(0xc) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c24082387.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then Duel.Damage(tp,2000,REASON_EFFECT) return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c24082387.filter2,tp,LOCATION_DECK,0,1,1,nil,e,tp,e:GetLabel()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + else Duel.Damage(tp,2000,REASON_EFFECT) end +end diff --git a/script/c24094653.lua b/script/c24094653.lua index 6758821b..429b26f7 100644 --- a/script/c24094653.lua +++ b/script/c24094653.lua @@ -1,69 +1,69 @@ ---融合 -function c24094653.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c24094653.target) - e1:SetOperation(c24094653.activate) - c:RegisterEffect(e1) -end -function c24094653.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c24094653.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c24094653.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c24094653.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c24094653.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c24094653.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c24094653.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c24094653.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c24094653.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--融合 +function c24094653.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c24094653.target) + e1:SetOperation(c24094653.activate) + c:RegisterEffect(e1) +end +function c24094653.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c24094653.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c24094653.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c24094653.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c24094653.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c24094653.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c24094653.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c24094653.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c24094653.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c24096228.lua b/script/c24096228.lua index 407b4bcb..1ccf1e46 100644 --- a/script/c24096228.lua +++ b/script/c24096228.lua @@ -1,108 +1,108 @@ ---二重魔法 -function c24096228.initial_effect(c) - --copy spell - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCost(c24096228.cost) - e1:SetTarget(c24096228.target) - e1:SetOperation(c24096228.operation) - c:RegisterEffect(e1) -end -function c24096228.cfilter(c) - return c:IsDiscardable() and c:IsType(TYPE_SPELL) -end -function c24096228.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c24096228.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end - Duel.DiscardHand(tp,c24096228.cfilter,1,1,REASON_COST+REASON_DISCARD) -end -function c24096228.filter1(c,e,tp,eg,ep,ev,re,r,rp) - local te=c:CheckActivateEffect(false,false,false) - if c:IsType(TYPE_SPELL) and te then - if c:IsSetCard(0x95) then - local tg=te:GetTarget() - return not tg or tg(e,tp,eg,ep,ev,re,r,rp,0) - else - return true - end - end - return false -end -function c24096228.filter2(c,e,tp,eg,ep,ev,re,r,rp) - local te=c:CheckActivateEffect(false,false,false) - if c:IsType(TYPE_SPELL) and not c:IsType(TYPE_EQUIP+TYPE_CONTINUOUS) and te then - if c:IsSetCard(0x95) then - local tg=te:GetTarget() - return not tg or tg(e,tp,eg,ep,ev,re,r,rp,0) - else - return true - end - end - return false -end -function c24096228.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then - local b=e:GetHandler():IsLocation(LOCATION_HAND) - local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) - if (b and ft>1) or (not b and ft>0) then - return Duel.IsExistingTarget(c24096228.filter1,tp,0,LOCATION_GRAVE,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp) - else - return Duel.IsExistingTarget(c24096228.filter2,tp,0,LOCATION_GRAVE,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp) - end - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - if Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then - Duel.SelectTarget(tp,c24096228.filter1,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp) - else - Duel.SelectTarget(tp,c24096228.filter2,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp) - end -end -function c24096228.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc or not tc:IsRelateToEffect(e) then return end - local tpe=tc:GetType() - local te=tc:GetActivateEffect() - local tg=te:GetTarget() - local co=te:GetCost() - local op=te:GetOperation() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - Duel.ClearTargetCard() - if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS)~=0 or tc:IsHasEffect(EFFECT_REMAIN_FIELD) then - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - elseif bit.band(tpe,TYPE_FIELD)~=0 then - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - end - tc:CreateEffectRelation(te) - if co then co(te,tp,eg,ep,ev,re,r,rp,1) end - if tg then - if tc:IsSetCard(0x95) then - tg(e,tp,eg,ep,ev,re,r,rp,1) - else - tg(te,tp,eg,ep,ev,re,r,rp,1) - end - end - Duel.BreakEffect() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local etc=g:GetFirst() - while etc do - etc:CreateEffectRelation(te) - etc=g:GetNext() - end - if op then - if tc:IsSetCard(0x95) then - op(e,tp,eg,ep,ev,re,r,rp) - else - op(te,tp,eg,ep,ev,re,r,rp) - end - end - tc:ReleaseEffectRelation(te) - etc=g:GetFirst() - while etc do - etc:ReleaseEffectRelation(te) - etc=g:GetNext() - end -end +--二重魔法 +function c24096228.initial_effect(c) + --copy spell + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c24096228.cost) + e1:SetTarget(c24096228.target) + e1:SetOperation(c24096228.operation) + c:RegisterEffect(e1) +end +function c24096228.cfilter(c) + return c:IsDiscardable() and c:IsType(TYPE_SPELL) +end +function c24096228.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c24096228.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c24096228.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c24096228.filter1(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:CheckActivateEffect(false,false,false) + if c:IsType(TYPE_SPELL) and te then + if c:IsSetCard(0x95) then + local tg=te:GetTarget() + return not tg or tg(e,tp,eg,ep,ev,re,r,rp,0) + else + return true + end + end + return false +end +function c24096228.filter2(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:CheckActivateEffect(false,false,false) + if c:IsType(TYPE_SPELL) and not c:IsType(TYPE_EQUIP+TYPE_CONTINUOUS) and te then + if c:IsSetCard(0x95) then + local tg=te:GetTarget() + return not tg or tg(e,tp,eg,ep,ev,re,r,rp,0) + else + return true + end + end + return false +end +function c24096228.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then + local b=e:GetHandler():IsLocation(LOCATION_HAND) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if (b and ft>1) or (not b and ft>0) then + return Duel.IsExistingTarget(c24096228.filter1,tp,0,LOCATION_GRAVE,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp) + else + return Duel.IsExistingTarget(c24096228.filter2,tp,0,LOCATION_GRAVE,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp) + end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + if Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then + Duel.SelectTarget(tp,c24096228.filter1,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp) + else + Duel.SelectTarget(tp,c24096228.filter2,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp) + end +end +function c24096228.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) then return end + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS)~=0 or tc:IsHasEffect(EFFECT_REMAIN_FIELD) then + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + elseif bit.band(tpe,TYPE_FIELD)~=0 then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + tc:CreateEffectRelation(te) + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then + if tc:IsSetCard(0x95) then + tg(e,tp,eg,ep,ev,re,r,rp,1) + else + tg(te,tp,eg,ep,ev,re,r,rp,1) + end + end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + if op then + if tc:IsSetCard(0x95) then + op(e,tp,eg,ep,ev,re,r,rp) + else + op(te,tp,eg,ep,ev,re,r,rp) + end + end + tc:ReleaseEffectRelation(te) + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end +end diff --git a/script/c24131534.lua b/script/c24131534.lua index 737ded3d..e29e7673 100644 --- a/script/c24131534.lua +++ b/script/c24131534.lua @@ -1,44 +1,44 @@ ---イグナイト・マグナム -function c24131534.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c24131534.thcon) - e2:SetTarget(c24131534.thtg) - e2:SetOperation(c24131534.thop) - c:RegisterEffect(e2) -end -function c24131534.thcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return pc and pc:IsSetCard(0xc8) -end -function c24131534.filter(c) - return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() -end -function c24131534.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if chk==0 then return Duel.IsExistingMatchingCard(c24131534.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - local g=Group.FromCards(c,pc) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c24131534.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if not pc then return end - local dg=Group.FromCards(c,pc) - if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c24131534.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--イグナイト・マグナム +function c24131534.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c24131534.thcon) + e2:SetTarget(c24131534.thtg) + e2:SetOperation(c24131534.thop) + c:RegisterEffect(e2) +end +function c24131534.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsSetCard(0xc8) +end +function c24131534.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c24131534.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if chk==0 then return Duel.IsExistingMatchingCard(c24131534.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c24131534.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local dg=Group.FromCards(c,pc) + if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c24131534.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c24212820.lua b/script/c24212820.lua index 7321db91..090eb033 100644 --- a/script/c24212820.lua +++ b/script/c24212820.lua @@ -49,13 +49,13 @@ function c24212820.spcon(e,tp,eg,ep,ev,re,r,rp) end function c24212820.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,24212820,0x10db,0x21,4,300,600,RACE_WARRIOR,ATTRIBUTE_DARK) end + and Duel.IsPlayerCanSpecialSummonMonster(tp,24212820,0x10db,0x21,300,600,4,RACE_WARRIOR,ATTRIBUTE_DARK) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) end function c24212820.spop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,24212820,0x10db,0x21,4,300,600,RACE_WARRIOR,ATTRIBUTE_DARK) then + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,24212820,0x10db,0x21,300,600,4,RACE_WARRIOR,ATTRIBUTE_DARK) then c:AddMonsterAttribute(TYPE_EFFECT) Duel.SpecialSummonStep(c,1,tp,tp,true,false,POS_FACEUP_DEFENSE) c:AddMonsterAttributeComplete() diff --git a/script/c242146.lua b/script/c242146.lua index 413acaf4..3d501e48 100644 --- a/script/c242146.lua +++ b/script/c242146.lua @@ -1,46 +1,18 @@ ---城壁壊しの大槍 -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_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetCondition(c242146.atkcon) - e2:SetValue(1500) - 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.atkcon(e) - if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end - local eqc=e:GetHandler():GetEquipTarget() - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return d and a==eqc and d:GetBattlePosition()==POS_FACEDOWN_DEFENSE -end +--城壁壊しの大槍 +function c242146.initial_effect(c) + aux.AddEquipProcedure(c) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetCondition(c242146.atkcon) + e2:SetValue(1500) + c:RegisterEffect(e2) +end +function c242146.atkcon(e) + if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end + local eqc=e:GetHandler():GetEquipTarget() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a==eqc and d:GetBattlePosition()==POS_FACEDOWN_DEFENSE +end diff --git a/script/c24221808.lua b/script/c24221808.lua index 759d2a16..a86e9e22 100644 --- a/script/c24221808.lua +++ b/script/c24221808.lua @@ -42,8 +42,7 @@ end function c24221808.rmop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_REMOVED) then if c:IsRelateToEffect(e) then local sg=e:GetLabelObject() if c:GetFlagEffect(24221808)==0 then @@ -69,7 +68,8 @@ function c24221808.spop(e,tp,eg,ep,ev,re,r,rp) local g=e:GetLabelObject() local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local tg=g:Filter(c24221808.spfilter,nil,e:GetHandler(),e,tp) - if ft<=0 or tg:GetCount()==0 or (ft>1 and tg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if ft<=0 or tg:GetCount()==0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=tg:Select(tp,ft,ft,nil) Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) diff --git a/script/c24311595.lua b/script/c24311595.lua index fe2c21ef..469d2bb0 100644 --- a/script/c24311595.lua +++ b/script/c24311595.lua @@ -26,7 +26,7 @@ function c24311595.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c24311595.activate(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) then Duel.SendtoHand(tc,nil,REASON_EFFECT) end end diff --git a/script/c24317029.lua b/script/c24317029.lua index 40d95969..ef45fc78 100644 --- a/script/c24317029.lua +++ b/script/c24317029.lua @@ -1,26 +1,26 @@ ---墓守の偵察者 -function c24317029.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(24317029,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetTarget(c24317029.target) - e1:SetOperation(c24317029.operation) - c:RegisterEffect(e1) -end -function c24317029.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c24317029.filter(c,e,tp) - return c:IsAttackBelow(1500) and c:IsSetCard(0x2e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c24317029.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,c24317029.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--墓守の偵察者 +function c24317029.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(24317029,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c24317029.target) + e1:SetOperation(c24317029.operation) + c:RegisterEffect(e1) +end +function c24317029.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c24317029.filter(c,e,tp) + return c:IsAttackBelow(1500) and c:IsSetCard(0x2e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c24317029.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,c24317029.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c24348804.lua b/script/c24348804.lua index e5998c3f..4a9aee18 100644 --- a/script/c24348804.lua +++ b/script/c24348804.lua @@ -1,69 +1,69 @@ ---一回休み -function c24348804.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_SPSUMMON) - e1:SetCondition(c24348804.condition) - e1:SetTarget(c24348804.target1) - e1:SetOperation(c24348804.operation) - c:RegisterEffect(e1) - --pos - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetRange(LOCATION_SZONE) - e2:SetTarget(c24348804.target2) - e2:SetOperation(c24348804.operation) - e2:SetLabel(1) - c:RegisterEffect(e2) - --disable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_DISABLE) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(c24348804.distg) - c:RegisterEffect(e3) -end -function c24348804.cfilter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL -end -function c24348804.condition(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c24348804.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c24348804.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:SetLabel(0) - local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) - if res then - local g=teg:Filter(c24348804.filter1,nil) - if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(24348804,0)) then - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) - e:SetLabel(1) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(24348804,1)) - end - end -end -function c24348804.filter1(c) - return c:IsPosition(POS_FACEUP_ATTACK) and c:IsType(TYPE_EFFECT) -end -function c24348804.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c24348804.filter1,1,nil) end - local g=eg:Filter(c24348804.filter1,nil) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c24348804.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE) - end -end -function c24348804.distg(e,c) - return c:IsStatus(STATUS_SPSUMMON_TURN) and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL -end +--一回休み +function c24348804.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_SPSUMMON) + e1:SetCondition(c24348804.condition) + e1:SetTarget(c24348804.target1) + e1:SetOperation(c24348804.operation) + c:RegisterEffect(e1) + --pos + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c24348804.target2) + e2:SetOperation(c24348804.operation) + e2:SetLabel(1) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c24348804.distg) + c:RegisterEffect(e3) +end +function c24348804.cfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c24348804.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c24348804.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c24348804.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:SetLabel(0) + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) + if res then + local g=teg:Filter(c24348804.filter1,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(24348804,0)) then + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) + e:SetLabel(1) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(24348804,1)) + end + end +end +function c24348804.filter1(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsType(TYPE_EFFECT) +end +function c24348804.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c24348804.filter1,1,nil) end + local g=eg:Filter(c24348804.filter1,nil) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c24348804.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE) + end +end +function c24348804.distg(e,c) + return c:IsStatus(STATUS_SPSUMMON_TURN) and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end diff --git a/script/c24384095.lua b/script/c24384095.lua index c3519b20..6b3f009b 100644 --- a/script/c24384095.lua +++ b/script/c24384095.lua @@ -25,8 +25,8 @@ function c24384095.thtg(e,tp,eg,ep,ev,re,r,rp,chk) end function c24384095.thop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c24384095.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c24384095.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c24425055.lua b/script/c24425055.lua index a88915d4..1cdb8271 100644 --- a/script/c24425055.lua +++ b/script/c24425055.lua @@ -1,36 +1,36 @@ ---ブービートラップE -function c24425055.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c24425055.cost) - e1:SetOperation(c24425055.activate) - c:RegisterEffect(e1) -end -function c24425055.filter1(c,tp) - return c:IsDiscardable() and ((c24425055.filter2(c) and c:IsAbleToGraveAsCost()) - or Duel.IsExistingMatchingCard(c24425055.filter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,c)) -end -function c24425055.filter2(c) - return c:GetType()==TYPE_TRAP+TYPE_CONTINUOUS and c:IsSSetable() -end -function c24425055.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c24425055.filter1,tp,LOCATION_HAND,0,1,nil,tp) end - Duel.DiscardHand(tp,c24425055.filter1,1,1,REASON_COST+REASON_DISCARD,nil,tp) -end -function c24425055.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) - local g=Duel.SelectMatchingCard(tp,c24425055.filter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil) - local tc=g:GetFirst() - if tc then - Duel.SSet(tp,tc) - Duel.ConfirmCards(1-tp,tc) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end +--ブービートラップE +function c24425055.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c24425055.cost) + e1:SetOperation(c24425055.activate) + c:RegisterEffect(e1) +end +function c24425055.filter1(c,tp) + return c:IsDiscardable() and ((c24425055.filter2(c) and c:IsAbleToGraveAsCost()) + or Duel.IsExistingMatchingCard(c24425055.filter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,c)) +end +function c24425055.filter2(c) + return c:GetType()==TYPE_TRAP+TYPE_CONTINUOUS and c:IsSSetable() +end +function c24425055.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c24425055.filter1,tp,LOCATION_HAND,0,1,nil,tp) end + Duel.DiscardHand(tp,c24425055.filter1,1,1,REASON_COST+REASON_DISCARD,nil,tp) +end +function c24425055.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c24425055.filter2),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.SSet(tp,tc) + Duel.ConfirmCards(1-tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c24566654.lua b/script/c24566654.lua index b5e45724..b5e62186 100644 --- a/script/c24566654.lua +++ b/script/c24566654.lua @@ -1,50 +1,50 @@ ---クリムゾン・ヘルフレア -function c24566654.initial_effect(c) - --reflect - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c24566654.condition) - e1:SetOperation(c24566654.operation) - c:RegisterEffect(e1) -end -function c24566654.cfilter(c) - return c:IsFaceup() and c:IsCode(70902743) -end -function c24566654.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c24566654.cfilter,tp,LOCATION_ONFIELD,0,1,nil) and ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) - and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) -end -function c24566654.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_REFLECT_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetLabel(cid) - e1:SetValue(c24566654.refcon) - e1:SetReset(RESET_CHAIN) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CHANGE_DAMAGE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,0) - e2:SetLabel(cid) - e2:SetValue(c24566654.dammul) - e2:SetReset(RESET_CHAIN) - Duel.RegisterEffect(e2,tp) -end -function c24566654.refcon(e,re,val,r,rp,rc) - local cc=Duel.GetCurrentChain() - if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end - local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) - return cid==e:GetLabel() -end -function c24566654.dammul(e,re,val,r,rp,rc) - local cc=Duel.GetCurrentChain() - if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end - local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) - return cid==e:GetLabel() and val*2 or val -end +--クリムゾン・ヘルフレア +function c24566654.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c24566654.condition) + e1:SetOperation(c24566654.operation) + c:RegisterEffect(e1) +end +function c24566654.cfilter(c) + return c:IsFaceup() and c:IsCode(70902743) +end +function c24566654.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c24566654.cfilter,tp,LOCATION_ONFIELD,0,1,nil) and ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c24566654.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_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c24566654.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetLabel(cid) + e2:SetValue(c24566654.dammul) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) +end +function c24566654.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end +function c24566654.dammul(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() and val*2 or val +end diff --git a/script/c24573625.lua b/script/c24573625.lua index f59fc2cb..2460d43e 100644 --- a/script/c24573625.lua +++ b/script/c24573625.lua @@ -1,53 +1,53 @@ ---ブンボーグ008 -function c24573625.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) - e2:SetTargetRange(1,0) - e2:SetCondition(c24573625.splimcon) - e2:SetTarget(c24573625.splimit) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c24573625.value) - c:RegisterEffect(e3) - --attack twice - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) - e4:SetValue(1) - c:RegisterEffect(e4) - --cannot be target - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e5:SetRange(LOCATION_MZONE) - e5:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) - e5:SetTarget(c24573625.tglimit) - e5:SetValue(aux.tgoval) - c:RegisterEffect(e5) -end -function c24573625.splimcon(e) - return not e:GetHandler():IsForbidden() -end -function c24573625.splimit(e,c,tp,sumtp,sumpos) - return not c:IsSetCard(0xab) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c24573625.value(e,c) - return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0xab)*500 -end -function c24573625.tglimit(e,c) - return c:IsSetCard(0xab) and c~=e:GetHandler() -end +--ブンボーグ008 +function c24573625.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetTargetRange(1,0) + e2:SetCondition(c24573625.splimcon) + e2:SetTarget(c24573625.splimit) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c24573625.value) + c:RegisterEffect(e3) + --attack twice + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e4:SetValue(1) + c:RegisterEffect(e4) + --cannot be target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetRange(LOCATION_MZONE) + e5:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e5:SetTarget(c24573625.tglimit) + e5:SetValue(aux.tgoval) + c:RegisterEffect(e5) +end +function c24573625.splimcon(e) + return not e:GetHandler():IsForbidden() +end +function c24573625.splimit(e,c,tp,sumtp,sumpos) + return not c:IsSetCard(0xab) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c24573625.value(e,c) + return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0xab)*500 +end +function c24573625.tglimit(e,c) + return c:IsSetCard(0xab) and c~=e:GetHandler() +end diff --git a/script/c2460565.lua b/script/c2460565.lua index c977e494..87dcbb22 100644 --- a/script/c2460565.lua +++ b/script/c2460565.lua @@ -1,39 +1,39 @@ ---切り込み隊長 -function c2460565.initial_effect(c) - --cannot select battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetValue(c2460565.atlimit) - c:RegisterEffect(e1) - --summon success - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(2460565,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetTarget(c2460565.sumtg) - e2:SetOperation(c2460565.sumop) - c:RegisterEffect(e2) -end -function c2460565.atlimit(e,c) - return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c2460565.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c2460565.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c2460565.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c2460565.sumop(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,c2460565.filter,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 c2460565.initial_effect(c) + --cannot select battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c2460565.atlimit) + c:RegisterEffect(e1) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(2460565,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c2460565.sumtg) + e2:SetOperation(c2460565.sumop) + c:RegisterEffect(e2) +end +function c2460565.atlimit(e,c) + return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c2460565.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c2460565.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c2460565.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c2460565.sumop(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,c2460565.filter,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 diff --git a/script/c2461031.lua b/script/c2461031.lua index 5bb27812..4dc47b37 100644 --- a/script/c2461031.lua +++ b/script/c2461031.lua @@ -50,9 +50,9 @@ function c2461031.eqop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end if c:IsFacedown() or not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c2461031.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c2461031.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if not Duel.Equip(tp,tc,c,true) then return end local e1=Effect.CreateEffect(c) e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) diff --git a/script/c24658418.lua b/script/c24658418.lua index aa2e25ed..3c0fa9c4 100644 --- a/script/c24658418.lua +++ b/script/c24658418.lua @@ -61,6 +61,8 @@ function c24658418.spop(e,tp,eg,ep,ev,re,r,rp) if xyzg:GetCount()>0 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local xyz=xyzg:Select(tp,1,1,nil):GetFirst() - Duel.XyzSummon(tp,xyz,g,1,5) + g:KeepAlive() + xyz:RegisterFlagEffect(999,RESET_CHAIN,0,0) + Duel.XyzSummon(tp,xyz,g,1,63) end end diff --git a/script/c24668830.lua b/script/c24668830.lua index 1dc21a56..9c55cdb4 100644 --- a/script/c24668830.lua +++ b/script/c24668830.lua @@ -1,14 +1,6 @@ --細菌感染 function c24668830.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(c24668830.target) - e1:SetOperation(c24668830.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c24668830.filter) --atkdown local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -18,32 +10,9 @@ function c24668830.initial_effect(c) e2:SetCondition(c24668830.atkcon) e2:SetOperation(c24668830.atkop) 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(c24668830.eqlimit) - c:RegisterEffect(e3) -end -function c24668830.eqlimit(e,c) - return not c:IsRace(RACE_MACHINE) end function c24668830.filter(c) - return c:IsFaceup() and not c:IsRace(RACE_MACHINE) -end -function c24668830.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c24668830.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c24668830.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c24668830.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c24668830.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 + return not c:IsRace(RACE_MACHINE) end function c24668830.atkcon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp diff --git a/script/c24696097.lua b/script/c24696097.lua index 843433ce..55ac689d 100644 --- a/script/c24696097.lua +++ b/script/c24696097.lua @@ -1,117 +1,126 @@ ---シューティング・スター・ドラゴン -function c24696097.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure2(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.FilterBoolFunction(Card.IsCode,44508094)) - c:EnableReviveLimit() - --multi attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(24696097,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c24696097.mtcon) - e1:SetOperation(c24696097.mtop) - c:RegisterEffect(e1) - --negate - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(24696097,1)) - e2:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c24696097.discon) - e2:SetTarget(c24696097.distg) - e2:SetOperation(c24696097.disop) - c:RegisterEffect(e2) - --disable attack - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(24696097,2)) - e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c24696097.dacon) - e3:SetTarget(c24696097.datg) - e3:SetOperation(c24696097.daop) - c:RegisterEffect(e3) - --Revive - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(24696097,3)) - e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetCode(EVENT_PHASE+PHASE_END) - e4:SetRange(LOCATION_REMOVED) - e4:SetCountLimit(1) - e4:SetTarget(c24696097.sumtg) - e4:SetOperation(c24696097.sumop) - c:RegisterEffect(e4) -end -function c24696097.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=5 -end -function c24696097.mtop(e,tp,eg,ep,ev,re,r,rp) - Duel.ConfirmDecktop(tp,5) - local g=Duel.GetDecktopGroup(tp,5) - local ct=g:FilterCount(Card.IsType,nil,TYPE_TUNER) - Duel.ShuffleDeck(tp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - e1:SetValue(ct-1) - e:GetHandler():RegisterEffect(e1) -end -function c24696097.discon(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end - if re:IsHasCategory(CATEGORY_NEGATE) - and Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end - local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) - return ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0 -end -function c24696097.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c24696097.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c24696097.dacon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():GetControler()~=tp -end -function c24696097.datg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc==Duel.GetAttacker() end - if chk==0 then return e:GetHandler():IsAbleToRemove() and Duel.GetAttacker():IsCanBeEffectTarget(e) - and not e:GetHandler():IsStatus(STATUS_CHAINING) end - Duel.SetTargetCard(Duel.GetAttacker()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) -end -function c24696097.daop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.Remove(c,POS_FACEUP,REASON_EFFECT) - end - Duel.NegateAttack() - c:RegisterFlagEffect(24696097,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) -end -function c24696097.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(24696097)>0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c24696097.sumop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--シューティング・スター・ドラゴン +function c24696097.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.FilterBoolFunction(Card.IsCode,44508094)) + c:EnableReviveLimit() + --multi attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(24696097,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c24696097.mtcon) + e1:SetOperation(c24696097.mtop) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(24696097,1)) + e2:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c24696097.discon) + e2:SetTarget(c24696097.distg) + e2:SetOperation(c24696097.disop) + c:RegisterEffect(e2) + --disable attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(24696097,2)) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c24696097.dacon) + e3:SetTarget(c24696097.datg) + e3:SetOperation(c24696097.daop) + c:RegisterEffect(e3) + --Revive + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(24696097,3)) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_REMOVED) + e4:SetCountLimit(1) + e4:SetTarget(c24696097.sumtg) + e4:SetOperation(c24696097.sumop) + c:RegisterEffect(e4) +end +function c24696097.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=5 +end +function c24696097.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.ConfirmDecktop(tp,5) + local g=Duel.GetDecktopGroup(tp,5) + local ct=g:FilterCount(Card.IsType,nil,TYPE_TUNER) + Duel.ShuffleDeck(tp) + if ct>1 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(ct-1) + c:RegisterEffect(e1) + elseif ct==0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end +end +function c24696097.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end + if re:IsHasCategory(CATEGORY_NEGATE) + and Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0 +end +function c24696097.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c24696097.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c24696097.dacon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp +end +function c24696097.datg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc==Duel.GetAttacker() end + if chk==0 then return e:GetHandler():IsAbleToRemove() and Duel.GetAttacker():IsCanBeEffectTarget(e) + and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.SetTargetCard(Duel.GetAttacker()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c24696097.daop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Remove(c,POS_FACEUP,REASON_EFFECT)~=0 then + Duel.NegateAttack() + c:RegisterFlagEffect(24696097,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end +end +function c24696097.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(24696097)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c24696097.sumop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c24701235.lua b/script/c24701235.lua index 198ca2a4..8a092249 100644 --- a/script/c24701235.lua +++ b/script/c24701235.lua @@ -1,54 +1,54 @@ ---和魂 -function c24701235.initial_effect(c) - --spirit - aux.EnableSpiritReturn(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --extra summon - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_SUMMON_SUCCESS) - e4:SetOperation(c24701235.sumop) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EVENT_FLIP) - c:RegisterEffect(e5) - --draw - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(24701235,1)) - e6:SetCategory(CATEGORY_DRAW) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_TO_GRAVE) - e6:SetTarget(c24701235.target) - e6:SetOperation(c24701235.operation) - c:RegisterEffect(e6) -end -function c24701235.sumop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,24701235)~=0 then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_SPIRIT)) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - Duel.RegisterFlagEffect(tp,24701235,RESET_PHASE+PHASE_END,0,1) -end -function c24701235.cfilter(c) - return c:IsFaceup() and c:IsType(TYPE_SPIRIT) -end -function c24701235.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c24701235.cfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c24701235.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsExistingMatchingCard(c24701235.cfilter,tp,LOCATION_MZONE,0,1,nil) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--和魂 +function c24701235.initial_effect(c) + --spirit + aux.EnableSpiritReturn(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --extra summon + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c24701235.sumop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_FLIP) + c:RegisterEffect(e5) + --draw + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(24701235,1)) + e6:SetCategory(CATEGORY_DRAW) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_TO_GRAVE) + e6:SetTarget(c24701235.target) + e6:SetOperation(c24701235.operation) + c:RegisterEffect(e6) +end +function c24701235.sumop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,24701235)~=0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_SPIRIT)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,24701235,RESET_PHASE+PHASE_END,0,1) +end +function c24701235.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SPIRIT) +end +function c24701235.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c24701235.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c24701235.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(c24701235.cfilter,tp,LOCATION_MZONE,0,1,nil) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c24838456.lua b/script/c24838456.lua index b5cd9224..a30a7545 100644 --- a/script/c24838456.lua +++ b/script/c24838456.lua @@ -37,10 +37,9 @@ end function c24838456.activate(e,tp,eg,ep,ev,re,r,rp) local dg=Group.CreateGroup() for i=1,ev do - Duel.NegateActivation(i) local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) local tc=te:GetHandler() - if tc:IsRelateToEffect(e) and tc:IsRelateToEffect(te) then + if Duel.NegateActivation(i) and tc:IsRelateToEffect(e) and tc:IsRelateToEffect(te) then dg:AddCard(tc) end end diff --git a/script/c24845628.lua b/script/c24845628.lua index 94dc6ba5..79e66a16 100644 --- a/script/c24845628.lua +++ b/script/c24845628.lua @@ -1,22 +1,7 @@ --ダストンのモップ function c24845628.initial_effect(c) c:SetUniqueOnField(1,0,24845628) - --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(c24845628.target) - e1:SetOperation(c24845628.operation) - c:RegisterEffect(e1) - --Equip limit - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EQUIP_LIMIT) - e2:SetValue(1) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c) -- local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) @@ -46,19 +31,6 @@ function c24845628.initial_effect(c) e7:SetOperation(c24845628.thop) c:RegisterEffect(e7) end -function c24845628.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 c24845628.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 c24845628.thcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return re and rp~=tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) diff --git a/script/c24874630.lua b/script/c24874630.lua index d453423f..dd77c3f0 100644 --- a/script/c24874630.lua +++ b/script/c24874630.lua @@ -1,56 +1,56 @@ ---デビルズ・サンクチュアリ -function c24874630.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c24874630.target) - e1:SetOperation(c24874630.activate) - c:RegisterEffect(e1) -end -function c24874630.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,24874631,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c24874630.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,24874631,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) then return end - local token=Duel.CreateToken(tp,24874631) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - token:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000) - token:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCountLimit(1) - e3:SetCondition(c24874630.descon) - e3:SetOperation(c24874630.desop) - e3:SetReset(RESET_EVENT+0x1fe0000) - token:RegisterEffect(e3,true) -end -function c24874630.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c24874630.desop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,1000) and Duel.SelectYesNo(tp,aux.Stringid(24874630,0)) then - Duel.PayLPCost(tp,1000) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--デビルズ・サンクチュアリ +function c24874630.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c24874630.target) + e1:SetOperation(c24874630.activate) + c:RegisterEffect(e1) +end +function c24874630.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,24874631,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c24874630.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,24874631,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,24874631) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetCondition(c24874630.descon) + e3:SetOperation(c24874630.desop) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3,true) +end +function c24874630.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c24874630.desop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,1000) and Duel.SelectYesNo(tp,aux.Stringid(24874630,0)) then + Duel.PayLPCost(tp,1000) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c24903843.lua b/script/c24903843.lua index 6cf3c5c7..d83c4a80 100644 --- a/script/c24903843.lua +++ b/script/c24903843.lua @@ -1,73 +1,73 @@ ---버제스토마 피카이아 -function c24903843.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c24903843.target) - e1:SetOperation(c24903843.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c24903843.spcon) - e2:SetTarget(c24903843.sptg) - e2:SetOperation(c24903843.spop) - c:RegisterEffect(e2) -end -function c24903843.filter(c) - return c:IsSetCard(0xd4) and c:IsDiscardable(REASON_EFFECT) -end -function c24903843.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) - and Duel.IsExistingMatchingCard(c24903843.filter,tp,LOCATION_HAND,0,1,e:GetHandler()) end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c24903843.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.DiscardHand(tp,c24903843.filter,1,1,REASON_EFFECT+REASON_DISCARD,nil)~=0 then - Duel.BreakEffect() - Duel.Draw(tp,2,REASON_EFFECT) - end -end -function c24903843.spcon(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c24903843.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(24903843)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,24903843,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end - c:RegisterFlagEffect(24903843,RESET_CHAIN,0,1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c24903843.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,24903843,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c24903843.efilter) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetReset(RESET_EVENT+0x47e0000) - e3:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c24903843.efilter(e,re) - return re:IsActiveType(TYPE_MONSTER) -end +--バージェストマ・ピカイア +function c24903843.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c24903843.target) + e1:SetOperation(c24903843.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c24903843.spcon) + e2:SetTarget(c24903843.sptg) + e2:SetOperation(c24903843.spop) + c:RegisterEffect(e2) +end +function c24903843.filter(c) + return c:IsSetCard(0xd4) and c:IsDiscardable(REASON_EFFECT) +end +function c24903843.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) + and Duel.IsExistingMatchingCard(c24903843.filter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c24903843.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.DiscardHand(tp,c24903843.filter,1,1,REASON_EFFECT+REASON_DISCARD,nil)~=0 then + Duel.BreakEffect() + Duel.Draw(tp,2,REASON_EFFECT) + end +end +function c24903843.spcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c24903843.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(24903843)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,24903843,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end + c:RegisterFlagEffect(24903843,RESET_CHAIN,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c24903843.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,24903843,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c24903843.efilter) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c24903843.efilter(e,re) + return re:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c24919805.lua b/script/c24919805.lua index 0fe670ba..1a156db8 100644 --- a/script/c24919805.lua +++ b/script/c24919805.lua @@ -14,6 +14,7 @@ function c24919805.initial_effect(c) --to grave local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c24919805.regop) c:RegisterEffect(e2) diff --git a/script/c24920410.lua b/script/c24920410.lua index c79204a5..dc2de597 100644 --- a/script/c24920410.lua +++ b/script/c24920410.lua @@ -1,57 +1,57 @@ ---オーバー・レンチ -function c24920410.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,24920410+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c24920410.condition) - e1:SetTarget(c24920410.target) - e1:SetOperation(c24920410.activate) - c:RegisterEffect(e1) -end -function c24920410.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c24920410.filter(c) - return c:IsFaceup() and c:IsSetCard(0x58) -end -function c24920410.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c24920410.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c24920410.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c24920410.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c24920410.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local atk=tc:GetAttack()*2 - local def=tc:GetDefense()*2 - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(atk) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(def) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e3:SetCountLimit(1) - e3:SetOperation(c24920410.retop) - tc:RegisterEffect(e3) - end -end -function c24920410.retop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) -end +--オーバー・レンチ +function c24920410.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,24920410+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c24920410.condition) + e1:SetTarget(c24920410.target) + e1:SetOperation(c24920410.activate) + c:RegisterEffect(e1) +end +function c24920410.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c24920410.filter(c) + return c:IsFaceup() and c:IsSetCard(0x58) +end +function c24920410.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c24920410.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c24920410.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c24920410.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c24920410.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack()*2 + local def=tc:GetDefense()*2 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(atk) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(def) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetOperation(c24920410.retop) + tc:RegisterEffect(e3) + end +end +function c24920410.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) +end diff --git a/script/c25005816.lua b/script/c25005816.lua index b9438cc7..8fe6b69d 100644 --- a/script/c25005816.lua +++ b/script/c25005816.lua @@ -1,34 +1,34 @@ ---鼓舞 -function c25005816.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(c25005816.condition) - e1:SetTarget(c25005816.target) - e1:SetOperation(c25005816.activate) - c:RegisterEffect(e1) -end -function c25005816.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c25005816.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c25005816.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(700) - tc:RegisterEffect(e1) - end -end +--鼓舞 +function c25005816.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(c25005816.condition) + e1:SetTarget(c25005816.target) + e1:SetOperation(c25005816.activate) + c:RegisterEffect(e1) +end +function c25005816.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c25005816.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c25005816.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(700) + tc:RegisterEffect(e1) + end +end diff --git a/script/c25034083.lua b/script/c25034083.lua index dd8cc663..bc92469a 100644 --- a/script/c25034083.lua +++ b/script/c25034083.lua @@ -1,14 +1,14 @@ ---デコイロイド -function c25034083.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetValue(c25034083.atlimit) - c:RegisterEffect(e1) -end -function c25034083.atlimit(e,c) - return not c:IsCode(25034083) and c:IsFaceup() -end +--デコイロイド +function c25034083.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c25034083.atlimit) + c:RegisterEffect(e1) +end +function c25034083.atlimit(e,c) + return not c:IsCode(25034083) and c:IsFaceup() +end diff --git a/script/c25123082.lua b/script/c25123082.lua index 146dfbaa..0598ea54 100644 --- a/script/c25123082.lua +++ b/script/c25123082.lua @@ -1,65 +1,65 @@ ---ヒュグロの魔導書 -function c25123082.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,25123082+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c25123082.target) - e1:SetOperation(c25123082.activate) - c:RegisterEffect(e1) -end -function c25123082.filter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) -end -function c25123082.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c25123082.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c25123082.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c25123082.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c25123082.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1000) - tc:RegisterEffect(e1) - tc:RegisterFlagEffect(25123082,RESET_EVENT+0x1220000+RESET_PHASE+PHASE_END,0,1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetDescription(aux.Stringid(25123082,0)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetLabelObject(tc) - e2:SetCondition(c25123082.shcon) - e2:SetTarget(c25123082.shtg) - e2:SetOperation(c25123082.shop) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - end -end -function c25123082.shcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - return eg:IsContains(tc) and tc:GetFlagEffect(25123082)~=0 -end -function c25123082.shfilter(c) - return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() -end -function c25123082.shtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c25123082.shfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c25123082.shop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c25123082.shfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ヒュグロの魔導書 +function c25123082.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,25123082+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c25123082.target) + e1:SetOperation(c25123082.activate) + c:RegisterEffect(e1) +end +function c25123082.filter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c25123082.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c25123082.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c25123082.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c25123082.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c25123082.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(25123082,RESET_EVENT+0x1220000+RESET_PHASE+PHASE_END,0,1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(25123082,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetLabelObject(tc) + e2:SetCondition(c25123082.shcon) + e2:SetTarget(c25123082.shtg) + e2:SetOperation(c25123082.shop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c25123082.shcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return eg:IsContains(tc) and tc:GetFlagEffect(25123082)~=0 +end +function c25123082.shfilter(c) + return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c25123082.shtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c25123082.shfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c25123082.shop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c25123082.shfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c25132288.lua b/script/c25132288.lua index 7dbe528e..3c00d264 100644 --- a/script/c25132288.lua +++ b/script/c25132288.lua @@ -28,8 +28,7 @@ end function c25132288.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local tc=e:GetLabelObject() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() - and c:GetAttack()>=500 and c:GetDefense()>=500 then + if c:IsRelateToEffect(e) and c:IsFaceup() and c:GetAttack()>=500 and c:GetDefense()>=500 then local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) @@ -40,14 +39,16 @@ function c25132288.operation(e,tp,eg,ep,ev,re,r,rp) local e2=e1:Clone() e2:SetCode(EFFECT_UPDATE_DEFENSE) c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(-1500) - tc:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e4) + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not c:IsHasEffect(EFFECT_REVERSE_UPDATE) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(-1500) + tc:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e4) + end end end diff --git a/script/c25148255.lua b/script/c25148255.lua index d576203c..a95b2965 100644 --- a/script/c25148255.lua +++ b/script/c25148255.lua @@ -1,65 +1,65 @@ ---ジャンク・アンカー -function c25148255.initial_effect(c) - --synchro - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(25148255,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c25148255.sccost) - e1:SetTarget(c25148255.sctg) - e1:SetOperation(c25148255.scop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(20932152) - c:RegisterEffect(e2) -end -function c25148255.sccost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST) -end -function c25148255.mfilter(c,e,tp,mc) - local mg=Group.FromCards(c,mc) - return c:IsSetCard(0x43) and not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c25148255.scfilter,tp,LOCATION_EXTRA,0,1,nil,mg) -end -function c25148255.scfilter(c,mg) - return aux.IsMaterialListSetCard(c,0x17) and c:IsSynchroSummonable(nil,mg) -end -function c25148255.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c25148255.mfilter(chkc,e,tp,e:GetHandler()) end - if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c25148255.mfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - Duel.SelectTarget(tp,c25148255.mfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c25148255.scop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end - if not c:IsRelateToEffect(e) then return end - local mg=Group.FromCards(c,tc) - local g=Duel.GetMatchingGroup(c25148255.scfilter,tp,LOCATION_EXTRA,0,nil,mg) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,1,nil) - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetValue(LOCATION_REMOVED) - e1:SetReset(RESET_EVENT+0x47e0000) - c:RegisterEffect(e1,true) - local e2=e1:Clone() - tc:RegisterEffect(e2,true) - Duel.SynchroSummon(tp,sg:GetFirst(),nil,mg) - end -end +--ジャンク・アンカー +function c25148255.initial_effect(c) + --synchro + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25148255,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c25148255.sccost) + e1:SetTarget(c25148255.sctg) + e1:SetOperation(c25148255.scop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(20932152) + c:RegisterEffect(e2) +end +function c25148255.sccost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST) +end +function c25148255.mfilter(c,e,tp,mc) + local mg=Group.FromCards(c,mc) + return c:IsSetCard(0x43) and not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c25148255.scfilter,tp,LOCATION_EXTRA,0,1,nil,mg) +end +function c25148255.scfilter(c,mg) + return aux.IsMaterialListSetCard(c,0x1017) and c:IsSynchroSummonable(nil,mg) +end +function c25148255.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c25148255.mfilter(chkc,e,tp,e:GetHandler()) end + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c25148255.mfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + Duel.SelectTarget(tp,c25148255.mfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c25148255.scop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + if not c:IsRelateToEffect(e) then return end + local mg=Group.FromCards(c,tc) + local g=Duel.GetMatchingGroup(c25148255.scfilter,tp,LOCATION_EXTRA,0,nil,mg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetValue(LOCATION_REMOVED) + e1:SetReset(RESET_EVENT+0x47e0000) + c:RegisterEffect(e1,true) + local e2=e1:Clone() + tc:RegisterEffect(e2,true) + Duel.SynchroSummon(tp,sg:GetFirst(),nil,mg) + end +end diff --git a/script/c25165047.lua b/script/c25165047.lua index 87409478..400f2226 100644 --- a/script/c25165047.lua +++ b/script/c25165047.lua @@ -1,58 +1,58 @@ ---ライフ・ストリーム・ドラゴン -function c25165047.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure2(c,nil,aux.FilterBoolFunction(Card.IsCode,2403771)) - c:EnableReviveLimit() - --change lp - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(25165047,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c25165047.lpcon) - e1:SetOperation(c25165047.lpop) - c:RegisterEffect(e1) - --damage reduce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CHANGE_DAMAGE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(1,0) - e2:SetValue(c25165047.damval) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_NO_EFFECT_DAMAGE) - c:RegisterEffect(e3) - --Destroy replace - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_DESTROY_REPLACE) - e4:SetTarget(c25165047.desreptg) - c:RegisterEffect(e4) -end -function c25165047.lpcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c25165047.lpop(e,tp,eg,ep,ev,re,r,rp) - Duel.SetLP(tp,4000) -end -function c25165047.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 end - return val -end -function c25165047.repfilter(c) - return c:IsType(TYPE_EQUIP) and c:IsAbleToRemoveAsCost() -end -function c25165047.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return not c:IsReason(REASON_REPLACE) - and Duel.IsExistingMatchingCard(c25165047.repfilter,tp,LOCATION_GRAVE,0,1,nil) end - if Duel.SelectYesNo(tp,aux.Stringid(25165047,1)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c25165047.repfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) - return true - else return false end -end +--ライフ・ストリーム・ドラゴン +function c25165047.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.FilterBoolFunction(Card.IsCode,2403771)) + c:EnableReviveLimit() + --change lp + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25165047,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c25165047.lpcon) + e1:SetOperation(c25165047.lpop) + c:RegisterEffect(e1) + --damage reduce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(1,0) + e2:SetValue(c25165047.damval) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_NO_EFFECT_DAMAGE) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetTarget(c25165047.desreptg) + c:RegisterEffect(e4) +end +function c25165047.lpcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c25165047.lpop(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(tp,4000) +end +function c25165047.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 end + return val +end +function c25165047.repfilter(c) + return c:IsType(TYPE_EQUIP) and c:IsAbleToRemoveAsCost() +end +function c25165047.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) + and Duel.IsExistingMatchingCard(c25165047.repfilter,tp,LOCATION_GRAVE,0,1,nil) end + if Duel.SelectYesNo(tp,aux.Stringid(25165047,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c25165047.repfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + return true + else return false end +end diff --git a/script/c2519690.lua b/script/c2519690.lua index e04075b3..467626f0 100644 --- a/script/c2519690.lua +++ b/script/c2519690.lua @@ -40,8 +40,8 @@ function c2519690.thtg(e,tp,eg,ep,ev,re,r,rp,chk) end function c2519690.thop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c2519690.thfilter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c2519690.thfilter),tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c2521011.lua b/script/c2521011.lua index d2f1e5d4..807544fc 100644 --- a/script/c2521011.lua +++ b/script/c2521011.lua @@ -26,6 +26,7 @@ function c2521011.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD) e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e4:SetRange(LOCATION_MZONE) e4:SetTargetRange(LOCATION_MZONE,0) e4:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_BEASTWARRIOR)) diff --git a/script/c25231813.lua b/script/c25231813.lua index ad660195..084df5af 100644 --- a/script/c25231813.lua +++ b/script/c25231813.lua @@ -1,21 +1,6 @@ --白銀の翼 function c25231813.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(c25231813.target) - e1:SetOperation(c25231813.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(c25231813.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,c25231813.filter) -- local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_EQUIP) @@ -30,25 +15,8 @@ function c25231813.initial_effect(c) e4:SetOperation(c25231813.repop2) c:RegisterEffect(e4) end -function c25231813.eqlimit(e,c) - return c:IsLevelAbove(8) and c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) -end function c25231813.filter(c) - return c:IsFaceup() and c:IsLevelAbove(8) and c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) -end -function c25231813.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c25231813.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c25231813.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c25231813.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c25231813.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 + return c:IsLevelAbove(8) and c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) end function c25231813.reptg1(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetEquipTarget():IsReason(REASON_BATTLE) end diff --git a/script/c25236056.lua b/script/c25236056.lua index 87aaaed9..b2891e5c 100644 --- a/script/c25236056.lua +++ b/script/c25236056.lua @@ -1,4 +1,4 @@ ---レアメタル・ドラゴン -function c25236056.initial_effect(c) - c:EnableUnsummonable() -end +--レアメタル・ドラゴン +function c25236056.initial_effect(c) + c:EnableUnsummonable() +end diff --git a/script/c25244515.lua b/script/c25244515.lua index ecae5fd7..2d08b47b 100644 --- a/script/c25244515.lua +++ b/script/c25244515.lua @@ -1,98 +1,98 @@ ---妖仙獣 辻斬風 -function c25244515.initial_effect(c) - --atk up - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCountLimit(1,25244515) - e1:SetCondition(c25244515.condition) - e1:SetCost(c25244515.cost) - e1:SetOperation(c25244515.operation) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1,25244516) - e2:SetTarget(c25244515.atktg) - e2:SetOperation(c25244515.atkop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetOperation(c25244515.regop) - c:RegisterEffect(e3) -end -function c25244515.condition(e,tp,eg,ep,ev,re,r,rp) - local phase=Duel.GetCurrentPhase() - if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end - local tc=Duel.GetAttacker() - if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end - e:SetLabelObject(tc) - return tc and tc:IsSetCard(0xb3) and tc:IsRelateToBattle() and Duel.GetAttackTarget()~=nil -end -function c25244515.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDiscardable() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) -end -function c25244515.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=e:GetLabelObject() - if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsControler(tp) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c25244515.filter(c) - return c:IsFaceup() and c:IsSetCard(0xb3) -end -function c25244515.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c25244515.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c25244515.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c25244515.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c25244515.atkop(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_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c25244515.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetTarget(c25244515.rettg) - e1:SetOperation(c25244515.retop) - e1:SetReset(RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end -function c25244515.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c25244515.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--妖仙獣 辻斬風 +function c25244515.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCountLimit(1,25244515) + e1:SetCondition(c25244515.condition) + e1:SetCost(c25244515.cost) + e1:SetOperation(c25244515.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,25244516) + e2:SetTarget(c25244515.atktg) + e2:SetOperation(c25244515.atkop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c25244515.regop) + c:RegisterEffect(e3) +end +function c25244515.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + e:SetLabelObject(tc) + return tc and tc:IsSetCard(0xb3) and tc:IsRelateToBattle() and Duel.GetAttackTarget()~=nil +end +function c25244515.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c25244515.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsControler(tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c25244515.filter(c) + return c:IsFaceup() and c:IsSetCard(0xb3) +end +function c25244515.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c25244515.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c25244515.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c25244515.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c25244515.atkop(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_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c25244515.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetTarget(c25244515.rettg) + e1:SetOperation(c25244515.retop) + e1:SetReset(RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c25244515.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c25244515.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c25280974.lua b/script/c25280974.lua index 70091422..b7877a6f 100644 --- a/script/c25280974.lua +++ b/script/c25280974.lua @@ -1,42 +1,42 @@ ---魔道化リジョン -function c25280974.initial_effect(c) - --extra summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_HAND,0) - e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_SPELLCASTER)) - e1:SetValue(0x1) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(25280974,0)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,25280974) - e2:SetCondition(c25280974.thcon) - e2:SetTarget(c25280974.thtg) - e2:SetOperation(c25280974.thop) - c:RegisterEffect(e2) -end -function c25280974.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c25280974.filter(c) - return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) -end -function c25280974.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c25280974.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c25280974.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c25280974.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--魔道化リジョン +function c25280974.initial_effect(c) + --extra summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_SPELLCASTER)) + e1:SetValue(0x1) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25280974,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,25280974) + e2:SetCondition(c25280974.thcon) + e2:SetTarget(c25280974.thtg) + e2:SetOperation(c25280974.thop) + c:RegisterEffect(e2) +end +function c25280974.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c25280974.filter(c) + return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToHand() +end +function c25280974.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c25280974.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c25280974.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c25280974.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c2530830.lua b/script/c2530830.lua index 53b39355..c211f2f2 100644 --- a/script/c2530830.lua +++ b/script/c2530830.lua @@ -16,7 +16,7 @@ function c2530830.initial_effect(c) e2:SetCategory(CATEGORY_DESTROY) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetCost(c2530830.descost) e2:SetTarget(c2530830.destg) diff --git a/script/c25339070.lua b/script/c25339070.lua index 902f4409..203bf007 100644 --- a/script/c25339070.lua +++ b/script/c25339070.lua @@ -18,6 +18,7 @@ function c25339070.initial_effect(c) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1,25339070) e2:SetCost(c25339070.cpcost) e2:SetTarget(c25339070.cptg) @@ -58,15 +59,12 @@ function c25339070.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) return tg and tg(e,tp,eg,ep,ev,re,r,rp,0,chkc) end if chk==0 then return Duel.IsExistingTarget(c25339070.cpfilter,tp,LOCATION_GRAVE,0,1,nil) end - e:SetProperty(EFFECT_FLAG_CARD_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) local g=Duel.SelectTarget(tp,c25339070.cpfilter,tp,LOCATION_GRAVE,0,1,1,nil) local te,ceg,cep,cev,cre,cr,crp=g:GetFirst():CheckActivateEffect(false,true,true) Duel.ClearTargetCard() g:GetFirst():CreateEffectRelation(e) local tg=te:GetTarget() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) if tg then tg(e,tp,ceg,cep,cev,cre,cr,crp,1) end te:SetLabelObject(e:GetLabelObject()) e:SetLabelObject(te) diff --git a/script/c25341652.lua b/script/c25341652.lua index 4c0f98af..bb46d44e 100644 --- a/script/c25341652.lua +++ b/script/c25341652.lua @@ -7,7 +7,7 @@ function c25341652.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(25341652,0)) e1:SetCategory(CATEGORY_POSITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c25366484.lua b/script/c25366484.lua index dca1158d..16a14e2f 100644 --- a/script/c25366484.lua +++ b/script/c25366484.lua @@ -1,54 +1,55 @@ ---E・HERO シャイニング・フレア・ウィングマン -function c25366484.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,35809262,20721928,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(25366484,0)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(aux.bdgcon) - e2:SetTarget(c25366484.damtg) - e2:SetOperation(c25366484.damop) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c25366484.atkup) - c:RegisterEffect(e3) -end -function c25366484.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local bc=e:GetHandler():GetBattleTarget() - Duel.SetTargetCard(bc) - local dam=bc:GetAttack() - if dam<0 then dam=0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c25366484.damop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local dam=tc:GetAttack() - if dam<0 then dam=0 end - Duel.Damage(p,dam,REASON_EFFECT) - end -end -function c25366484.atkup(e,c) - return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0x3008)*300 -end +--E・HERO シャイニング・フレア・ウィングマン +function c25366484.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,35809262,20721928,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25366484,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(aux.bdgcon) + e2:SetTarget(c25366484.damtg) + e2:SetOperation(c25366484.damop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c25366484.atkup) + c:RegisterEffect(e3) +end +c25366484.material_setcode=0x8 +function c25366484.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local bc=e:GetHandler():GetBattleTarget() + Duel.SetTargetCard(bc) + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c25366484.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=tc:GetAttack() + if dam<0 then dam=0 end + Duel.Damage(p,dam,REASON_EFFECT) + end +end +function c25366484.atkup(e,c) + return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0x3008)*300 +end diff --git a/script/c25407406.lua b/script/c25407406.lua index 8960b131..7a3082d8 100644 --- a/script/c25407406.lua +++ b/script/c25407406.lua @@ -1,27 +1,12 @@ --剣闘獣の闘器グラディウス function c25407406.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(c25407406.target) - e1:SetOperation(c25407406.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c25407406.filter) -- local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(300) 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(c25407406.eqlimit) - c:RegisterEffect(e3) --tohand local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) @@ -33,25 +18,8 @@ function c25407406.initial_effect(c) e4:SetOperation(c25407406.retop) c:RegisterEffect(e4) end -function c25407406.eqlimit(e,c) - return c:IsSetCard(0x19) -end function c25407406.filter(c) - return c:IsFaceup() and c:IsSetCard(0x19) -end -function c25407406.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c25407406.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c25407406.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c25407406.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c25407406.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 + return c:IsSetCard(0x19) end function c25407406.retcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c25415052.lua b/script/c25415052.lua new file mode 100644 index 00000000..0a13e758 --- /dev/null +++ b/script/c25415052.lua @@ -0,0 +1,110 @@ +--霊魂鳥神-姫孔雀 +function c25415052.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(aux.ritlimit) + c:RegisterEffect(e1) + --to deck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25415052,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c25415052.tdcon) + e2:SetTarget(c25415052.tdtg) + e2:SetOperation(c25415052.tdop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c25415052.retreg) + c:RegisterEffect(e3) +end +function c25415052.tdcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_RITUAL)==SUMMON_TYPE_RITUAL +end +function c25415052.tdfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() +end +function c25415052.spfilter(c,e,tp) + return c:IsType(TYPE_SPIRIT) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c25415052.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c25415052.tdfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,0,0) +end +function c25415052.cfilter(c,p) + return c:IsLocation(LOCATION_DECK) and c:IsControler(p) +end +function c25415052.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c25415052.tdfilter,tp,0,LOCATION_ONFIELD,nil) + if g:GetCount()<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local sg=g:Select(tp,1,3,nil) + if Duel.SendtoDeck(sg,nil,0,REASON_EFFECT)~=0 then + local sg2=Duel.GetOperatedGroup() + if sg2:IsExists(c25415052.cfilter,1,nil,tp) then Duel.ShuffleDeck(tp) end + if sg2:IsExists(c25415052.cfilter,1,nil,1-tp) then Duel.ShuffleDeck(1-tp) end + if not sg2:IsExists(Card.IsLocation,1,nil,LOCATION_DECK+LOCATION_EXTRA) then return end + local tg=Duel.GetMatchingGroup(c25415052.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if tg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.SelectYesNo(tp,aux.Stringid(25415052,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=tg:Select(tp,1,1,nil) + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end + end +end +function c25415052.retreg(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetDescription(1104) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1ee0000+RESET_PHASE+PHASE_END) + e1:SetCondition(aux.SpiritReturnCondition) + e1:SetTarget(c25415052.rettg) + e1:SetOperation(c25415052.retop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + c:RegisterEffect(e2) +end +function c25415052.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:IsHasType(EFFECT_TYPE_TRIGGER_F) then + return true + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,25415053,0,0x4011,1500,1500,4,RACE_WINDBEAST,ATTRIBUTE_WIND) + end + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c25415052.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.SendtoHand(c,nil,REASON_EFFECT)~=0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,25415053,0,0x4011,1500,1500,4,RACE_WINDBEAST,ATTRIBUTE_WIND) then + for i=1,2 do + local token=Duel.CreateToken(tp,25415053) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c2542230.lua b/script/c2542230.lua index 1ab62164..cf7691b4 100644 --- a/script/c2542230.lua +++ b/script/c2542230.lua @@ -1,96 +1,97 @@ ---スカーレッド・コクーン -function c2542230.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(c2542230.target) - e1:SetOperation(c2542230.activate) - c:RegisterEffect(e1) - --to grave - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetOperation(c2542230.regop) - c:RegisterEffect(e2) -end -function c2542230.filter(c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) -end -function c2542230.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c2542230.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c2542230.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c2542230.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c2542230.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c2542230.eqlimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DISABLE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCondition(c2542230.discon) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - end -end -function c2542230.eqlimit(e,c) - return c:GetControler()==e:GetHandlerPlayer() or e:GetHandler():GetEquipTarget()==c -end -function c2542230.discon(e) - local ec=e:GetHandler():GetEquipTarget() - return Duel.GetAttacker()==ec or Duel.GetAttackTarget()==ec -end -function c2542230.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(2542230,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_GRAVE) - e1:SetHintTiming(TIMING_END_PHASE) - e1:SetCountLimit(1) - e1:SetCondition(c2542230.spcon) - e1:SetTarget(c2542230.sptg) - e1:SetOperation(c2542230.spop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end -function c2542230.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_END -end -function c2542230.spfilter(c,e,tp) - return c:IsCode(70902743) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c2542230.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c2542230.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c2542230.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c2542230.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c2542230.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--スカーレッド・コクーン +function c2542230.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(c2542230.target) + e1:SetOperation(c2542230.activate) + c:RegisterEffect(e1) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c2542230.regop) + c:RegisterEffect(e2) +end +function c2542230.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) +end +function c2542230.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c2542230.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c2542230.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c2542230.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c2542230.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c2542230.eqlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c2542230.discon) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c2542230.eqlimit(e,c) + return c:GetControler()==e:GetHandlerPlayer() or e:GetHandler():GetEquipTarget()==c +end +function c2542230.discon(e) + local ec=e:GetHandler():GetEquipTarget() + return Duel.GetAttacker()==ec or Duel.GetAttackTarget()==ec +end +function c2542230.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2542230,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_GRAVE) + e1:SetHintTiming(TIMING_END_PHASE) + e1:SetCountLimit(1) + e1:SetCondition(c2542230.spcon) + e1:SetTarget(c2542230.sptg) + e1:SetOperation(c2542230.spop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c2542230.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END +end +function c2542230.spfilter(c,e,tp) + return c:IsCode(70902743) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c2542230.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c2542230.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c2542230.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c2542230.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c2542230.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c25472513.lua b/script/c25472513.lua new file mode 100644 index 00000000..da283ef2 --- /dev/null +++ b/script/c25472513.lua @@ -0,0 +1,65 @@ +--天輪の双星道士 +function c25472513.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.NonTuner(nil)) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25472513,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCountLimit(1,25472513) + e1:SetCondition(c25472513.spcon) + e1:SetTarget(c25472513.sptg) + e1:SetOperation(c25472513.spop) + c:RegisterEffect(e1) +end +function c25472513.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c25472513.spfilter(c,e,tp) + return c:GetLevel()==2 and not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c25472513.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c25472513.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c25472513.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=math.min(Duel.GetLocationCount(tp,LOCATION_MZONE),4) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<=0 then return end + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c25472513.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c25472513.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c25472513.splimit(e,c) + return not c:IsType(TYPE_SYNCHRO) and c:IsLocation(LOCATION_EXTRA) +end diff --git a/script/c25518020.lua b/script/c25518020.lua index 56df3fad..837cb806 100644 --- a/script/c25518020.lua +++ b/script/c25518020.lua @@ -1,69 +1,69 @@ ---マシン・デベロッパー -function c25518020.initial_effect(c) - c:EnableCounterPermit(0x1d) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_MACHINE)) - e2:SetValue(200) - c:RegisterEffect(e2) - --add counter - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_DESTROYED) - e3:SetCondition(c25518020.ctcon) - e3:SetOperation(c25518020.ctop) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(25518020,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_SZONE) - e4:SetCost(c25518020.spcost) - e4:SetTarget(c25518020.sptg) - e4:SetOperation(c25518020.spop) - c:RegisterEffect(e4) -end -function c25518020.ctfilter(c) - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and bit.band(c:GetPreviousRaceOnField(),RACE_MACHINE)~=0 -end -function c25518020.ctcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c25518020.ctfilter,1,nil) -end -function c25518020.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x1d,2) -end -function c25518020.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - e:SetLabel(e:GetHandler():GetCounter(0x1d)) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c25518020.filter(c,e,tp,lv) - return c:IsLevelBelow(lv) and c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c25518020.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c25518020.filter(chkc,e,tp,e:GetLabel()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c25518020.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,e:GetHandler():GetCounter(0x1d)) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c25518020.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,e:GetLabel()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c25518020.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--マシン・デベロッパー +function c25518020.initial_effect(c) + c:EnableCounterPermit(0x1d) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_MACHINE)) + e2:SetValue(200) + c:RegisterEffect(e2) + --add counter + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c25518020.ctcon) + e3:SetOperation(c25518020.ctop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(25518020,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCost(c25518020.spcost) + e4:SetTarget(c25518020.sptg) + e4:SetOperation(c25518020.spop) + c:RegisterEffect(e4) +end +function c25518020.ctfilter(c) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and bit.band(c:GetPreviousRaceOnField(),RACE_MACHINE)~=0 +end +function c25518020.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c25518020.ctfilter,1,nil) +end +function c25518020.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x1d,2) +end +function c25518020.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabel(e:GetHandler():GetCounter(0x1d)) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c25518020.filter(c,e,tp,lv) + return c:IsLevelBelow(lv) and c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c25518020.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c25518020.filter(chkc,e,tp,e:GetLabel()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c25518020.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,e:GetHandler():GetCounter(0x1d)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c25518020.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c25518020.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c25524823.lua b/script/c25524823.lua index 518c404a..8219c058 100644 --- a/script/c25524823.lua +++ b/script/c25524823.lua @@ -38,9 +38,9 @@ function c25524823.initial_effect(c) e3:SetLabelObject(e4) e4:SetLabelObject(e3) end -function c25524823.ttcon(e,c) +function c25524823.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c25524823.ttop(e,tp,eg,ep,ev,re,r,rp,c) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) @@ -51,12 +51,11 @@ end function c25524823.otfilter(c,tp) return c:IsSetCard(0x2e) and (c:IsControler(tp) or c:IsFaceup()) end -function c25524823.otcon(e,c) +function c25524823.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c25524823.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c25524823.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c25524823.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c25542642.lua b/script/c25542642.lua index aed33620..26be0188 100644 --- a/script/c25542642.lua +++ b/script/c25542642.lua @@ -1,121 +1,121 @@ ---幻影霧剣 -function c25542642.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetTarget(c25542642.target) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_CHAIN_SOLVED) - e2:SetLabelObject(e1) - e2:SetCondition(c25542642.tgcon) - e2:SetOperation(c25542642.tgop) - c:RegisterEffect(e2) - --cannot attack/disable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_ATTACK) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(c25542642.ctg) - c:RegisterEffect(e3) - local e5=e3:Clone() - e5:SetCode(EFFECT_DISABLE) - c:RegisterEffect(e5) - --cannot be battle target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e4:SetRange(LOCATION_SZONE) - e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e4:SetValue(c25542642.ctg) - c:RegisterEffect(e4) - --destroy - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e6:SetRange(LOCATION_SZONE) - e6:SetCode(EVENT_LEAVE_FIELD) - e6:SetCondition(c25542642.descon) - e6:SetOperation(c25542642.desop) - c:RegisterEffect(e6) - --spsummon - local e7=Effect.CreateEffect(c) - e7:SetDescription(aux.Stringid(25542642,0)) - e7:SetCategory(CATEGORY_SPECIAL_SUMMON) - e7:SetProperty(EFFECT_FLAG_CARD_TARGET) - e7:SetType(EFFECT_TYPE_QUICK_O) - e7:SetCode(EVENT_FREE_CHAIN) - e7:SetRange(LOCATION_GRAVE) - e7:SetCountLimit(1,25542642) - e7:SetCost(c25542642.spcost) - e7:SetTarget(c25542642.sptg) - e7:SetOperation(c25542642.spop) - c:RegisterEffect(e7) -end -function c25542642.filter(c) - return c:IsFaceup() and c:IsType(TYPE_EFFECT) -end -function c25542642.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c25542642.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c25542642.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c25542642.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c25542642.tgcon(e,tp,eg,ep,ev,re,r,rp) - return re==e:GetLabelObject() -end -function c25542642.tgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() - if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then - c:SetCardTarget(tc) - end -end -function c25542642.ctg(e,c) - return e:GetHandler():IsHasCardTarget(c) -end -function c25542642.descon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end - local tc=c:GetFirstCardTarget() - return tc and eg:IsContains(tc) -end -function c25542642.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c25542642.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c25542642.spfilter(c,e,tp) - return c:IsSetCard(0x10db) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c25542642.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c25542642.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c25542642.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c25542642.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c25542642.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - tc:RegisterEffect(e1,true) - end -end +--幻影霧剣 +function c25542642.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetTarget(c25542642.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(c25542642.tgcon) + e2:SetOperation(c25542642.tgop) + c:RegisterEffect(e2) + --cannot attack/disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c25542642.ctg) + c:RegisterEffect(e3) + local e5=e3:Clone() + e5:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e5) + --cannot be battle target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetValue(c25542642.ctg) + c:RegisterEffect(e4) + --destroy + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EVENT_LEAVE_FIELD) + e6:SetCondition(c25542642.descon) + e6:SetOperation(c25542642.desop) + c:RegisterEffect(e6) + --spsummon + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(25542642,0)) + e7:SetCategory(CATEGORY_SPECIAL_SUMMON) + e7:SetProperty(EFFECT_FLAG_CARD_TARGET) + e7:SetType(EFFECT_TYPE_QUICK_O) + e7:SetCode(EVENT_FREE_CHAIN) + e7:SetRange(LOCATION_GRAVE) + e7:SetCountLimit(1,25542642) + e7:SetCost(c25542642.spcost) + e7:SetTarget(c25542642.sptg) + e7:SetOperation(c25542642.spop) + c:RegisterEffect(e7) +end +function c25542642.filter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c25542642.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c25542642.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c25542642.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c25542642.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c25542642.tgcon(e,tp,eg,ep,ev,re,r,rp) + return re==e:GetLabelObject() +end +function c25542642.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() + if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then + c:SetCardTarget(tc) + end +end +function c25542642.ctg(e,c) + return e:GetHandler():IsHasCardTarget(c) +end +function c25542642.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c25542642.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c25542642.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c25542642.spfilter(c,e,tp) + return c:IsSetCard(0x10db) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c25542642.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c25542642.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c25542642.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c25542642.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c25542642.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + end +end diff --git a/script/c25586143.lua b/script/c25586143.lua new file mode 100644 index 00000000..20e59de1 --- /dev/null +++ b/script/c25586143.lua @@ -0,0 +1,115 @@ +--捕食植物キメラフレシア +function c25586143.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10f3),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_DARK),true) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25586143,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c25586143.rmtg) + e1:SetOperation(c25586143.rmop) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25586143,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c25586143.atkcon) + e2:SetTarget(c25586143.atktg) + e2:SetOperation(c25586143.atkop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetOperation(c25586143.regop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(25586143,2)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_GRAVE) + e4:SetCountLimit(1) + e4:SetCondition(c25586143.thcon) + e4:SetTarget(c25586143.thtg) + e4:SetOperation(c25586143.thop) + c:RegisterEffect(e4) +end +function c25586143.rmfilter(c,lv) + return c:IsFaceup() and c:IsLevelBelow(lv) and c:IsAbleToRemove() +end +function c25586143.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c25586143.rmfilter(chkc,c:GetLevel()) end + if chk==0 then return Duel.IsExistingTarget(c25586143.rmfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,c:GetLevel()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c25586143.rmfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,c:GetLevel()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c25586143.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end +function c25586143.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + e:SetLabelObject(tc) + return tc and tc:IsFaceup() +end +function c25586143.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetLabelObject():CreateEffectRelation(e) +end +function c25586143.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(1-tp) and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + if c:IsRelateToEffect(e) and c:IsFaceup() and not tc:IsHasEffect(EFFECT_REVERSE_UPDATE) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1000) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end + end +end +function c25586143.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(25586143,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,2) +end +function c25586143.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetTurnID()~=Duel.GetTurnCount() and c:GetFlagEffect(25586143)>0 +end +function c25586143.thfilter(c) + return c:IsSetCard(0x46) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c25586143.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c25586143.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c25586143.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c25586143.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c255998.lua b/script/c255998.lua index b121b309..ba6e5e69 100644 --- a/script/c255998.lua +++ b/script/c255998.lua @@ -1,41 +1,41 @@ ---ラピッド・ウォリアー -function c255998.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(255998,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c255998.condition) - e1:SetCost(c255998.cost) - e1:SetOperation(c255998.operation) - c:RegisterEffect(e1) -end -function c255998.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() and not e:GetHandler():IsHasEffect(EFFECT_DIRECT_ATTACK) -end -function c255998.ftarget(e,c) - return e:GetLabel()~=c:GetFieldID() -end -function c255998.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_OATH) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c255998.ftarget) - e1:SetLabel(e:GetHandler():GetFieldID()) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c255998.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--ラピッド・ウォリアー +function c255998.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(255998,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c255998.condition) + e1:SetCost(c255998.cost) + e1:SetOperation(c255998.operation) + c:RegisterEffect(e1) +end +function c255998.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() and not e:GetHandler():IsHasEffect(EFFECT_DIRECT_ATTACK) +end +function c255998.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c255998.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c255998.ftarget) + e1:SetLabel(e:GetHandler():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c255998.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c25614410.lua b/script/c25614410.lua new file mode 100644 index 00000000..bc84afdf --- /dev/null +++ b/script/c25614410.lua @@ -0,0 +1,33 @@ +--HEROの遺産 +function c25614410.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1,25614410+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c25614410.cost) + e1:SetTarget(c25614410.target) + e1:SetOperation(c25614410.activate) + c:RegisterEffect(e1) +end +function c25614410.cfilter(c) + return aux.IsMaterialListSetCard(c,0x8) and c:IsType(TYPE_FUSION) and c:IsAbleToExtraAsCost() +end +function c25614410.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c25614410.cfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c25614410.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c25614410.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,3) +end +function c25614410.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c25700114.lua b/script/c25700114.lua index c97afaea..07d7ad55 100644 --- a/script/c25700114.lua +++ b/script/c25700114.lua @@ -1,76 +1,76 @@ ---ダストンローラー -function c25700114.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c25700114.target) - e1:SetOperation(c25700114.activate) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(25700114,0)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c25700114.thcon) - e2:SetTarget(c25700114.thtg) - e2:SetOperation(c25700114.thop) - c:RegisterEffect(e2) -end -function c25700114.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) end - if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c25700114.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) - e3:SetValue(1) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - tc:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - tc:RegisterEffect(e5) - end -end -function c25700114.thcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return rp~=tp and bit.band(r,0x41)==0x41 and c:GetPreviousControler()==tp - and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEDOWN) -end -function c25700114.filter(c) - return c:IsSetCard(0x80) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c25700114.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c25700114.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c25700114.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c25700114.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ダストンローラー +function c25700114.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c25700114.target) + e1:SetOperation(c25700114.activate) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25700114,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c25700114.thcon) + e2:SetTarget(c25700114.thtg) + e2:SetOperation(c25700114.thop) + c:RegisterEffect(e2) +end +function c25700114.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c25700114.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + tc:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + tc:RegisterEffect(e5) + end +end +function c25700114.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return rp~=tp and bit.band(r,0x41)==0x41 and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEDOWN) +end +function c25700114.filter(c) + return c:IsSetCard(0x80) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c25700114.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c25700114.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c25700114.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c25700114.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c25727454.lua b/script/c25727454.lua index efdbfb20..bd94cc9d 100644 --- a/script/c25727454.lua +++ b/script/c25727454.lua @@ -1,38 +1,38 @@ ---名匠 ガミル -function c25727454.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(25727454,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c25727454.condition) - e1:SetCost(c25727454.cost) - e1:SetOperation(c25727454.operation) - c:RegisterEffect(e1) -end -function c25727454.condition(e,tp,eg,ep,ev,re,r,rp) - local phase=Duel.GetCurrentPhase() - if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return (a:IsControler(tp) and a:IsRelateToBattle()) or (d and d:IsControler(tp) and d:IsRelateToBattle()) -end -function c25727454.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c25727454.operation(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - if Duel.GetTurnPlayer()~=tp then a=Duel.GetAttackTarget() end - if not a:IsRelateToBattle() or a:IsFacedown() then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(300) - a:RegisterEffect(e1) -end +--名匠 ガミル +function c25727454.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25727454,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c25727454.condition) + e1:SetCost(c25727454.cost) + e1:SetOperation(c25727454.operation) + c:RegisterEffect(e1) +end +function c25727454.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (a:IsControler(tp) and a:IsRelateToBattle()) or (d and d:IsControler(tp) and d:IsRelateToBattle()) +end +function c25727454.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c25727454.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if Duel.GetTurnPlayer()~=tp then a=Duel.GetAttackTarget() end + if not a:IsRelateToBattle() or a:IsFacedown() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(300) + a:RegisterEffect(e1) +end diff --git a/script/c2572890.lua b/script/c2572890.lua index af3d6c00..223a0e38 100644 --- a/script/c2572890.lua +++ b/script/c2572890.lua @@ -1,61 +1,60 @@ ---マジェスペクター・テンペスト -function c2572890.initial_effect(c) - --Activate(summon) - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SPSUMMON) - e1:SetCondition(c2572890.condition1) - e1:SetCost(c2572890.cost) - e1:SetTarget(c2572890.target1) - e1:SetOperation(c2572890.activate1) - c:RegisterEffect(e1) - --Activate(effect) - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetType(EFFECT_TYPE_ACTIVATE) - e2:SetCode(EVENT_CHAINING) - e2:SetCondition(c2572890.condition2) - e2:SetCost(c2572890.cost) - e2:SetTarget(c2572890.target2) - e2:SetOperation(c2572890.activate2) - c:RegisterEffect(e2) -end -function c2572890.cfilter(c) - return c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_WIND) - and not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c2572890.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c2572890.cfilter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c2572890.cfilter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c2572890.condition1(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentChain()==0 -end -function c2572890.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) -end -function c2572890.activate1(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateSummon(eg) - Duel.Destroy(eg,REASON_EFFECT) -end -function c2572890.condition2(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) -end -function c2572890.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c2572890.activate2(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--マジェスペクター・テンペスト +function c2572890.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON) + e1:SetCondition(c2572890.condition1) + e1:SetCost(c2572890.cost) + e1:SetTarget(c2572890.target1) + e1:SetOperation(c2572890.activate1) + c:RegisterEffect(e1) + --Activate(effect) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c2572890.condition2) + e2:SetCost(c2572890.cost) + e2:SetTarget(c2572890.target2) + e2:SetOperation(c2572890.activate2) + c:RegisterEffect(e2) +end +function c2572890.cfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_WIND) + and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c2572890.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c2572890.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c2572890.cfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c2572890.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 +end +function c2572890.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c2572890.activate1(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) +end +function c2572890.condition2(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c2572890.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c2572890.activate2(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c25769732.lua b/script/c25769732.lua index a0543280..33e6ab35 100644 --- a/script/c25769732.lua +++ b/script/c25769732.lua @@ -1,14 +1,6 @@ --機械改造工場 function c25769732.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(c25769732.target) - e1:SetOperation(c25769732.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c25769732.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c25769732.eqlimit) - c:RegisterEffect(e4) -end -function c25769732.eqlimit(e,c) - return c:IsRace(RACE_MACHINE) -end -function c25769732.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) -end -function c25769732.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c25769732.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c25769732.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c25769732.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c25769732.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 +end \ No newline at end of file diff --git a/script/c25789292.lua b/script/c25789292.lua index e31af1bb..4e02190f 100644 --- a/script/c25789292.lua +++ b/script/c25789292.lua @@ -1,48 +1,48 @@ ---禁じられた聖杯 -function c25789292.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c25789292.condition) - e1:SetTarget(c25789292.target) - e1:SetOperation(c25789292.activate) - c:RegisterEffect(e1) -end -function c25789292.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c25789292.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_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c25789292.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(400) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE_EFFECT) - e3:SetValue(RESET_TURN_SET) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end -end +--禁じられた聖杯 +function c25789292.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c25789292.condition) + e1:SetTarget(c25789292.target) + e1:SetOperation(c25789292.activate) + c:RegisterEffect(e1) +end +function c25789292.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c25789292.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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c25789292.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(400) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end diff --git a/script/c25793414.lua b/script/c25793414.lua new file mode 100644 index 00000000..58c4b413 --- /dev/null +++ b/script/c25793414.lua @@ -0,0 +1,102 @@ +--WW-クリスタル・ベル +function c25793414.initial_effect(c) + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,14577226,aux.FilterBoolFunction(Card.IsFusionSetCard,0xf0),1,true,true) + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25793414,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,25793414) + e1:SetTarget(c25793414.cptg) + e1:SetOperation(c25793414.cpop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25793414,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,25793415) + e2:SetCondition(c25793414.spcon) + e2:SetTarget(c25793414.sptg) + e2:SetOperation(c25793414.spop) + c:RegisterEffect(e2) +end +c25793414.miracle_synchro_fusion=true +function c25793414.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsType(TYPE_MONSTER) end + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,TYPE_MONSTER) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,TYPE_MONSTER) +end +function c25793414.cpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsType(TYPE_TOKEN) then + local code=tc:GetOriginalCodeRule() + local cid=0 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + if not tc:IsType(TYPE_TRAPMONSTER) then + cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25793414,2)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetLabelObject(e1) + e2:SetLabel(cid) + e2:SetOperation(c25793414.rstop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end +end +function c25793414.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=e:GetLabel() + if cid~=0 then c:ResetEffect(cid,RESET_COPY) end + local e1=e:GetLabelObject() + e1:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c25793414.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and rp==1-tp +end +function c25793414.spfilter1(c,e,tp) + return c:IsCode(14577226) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c25793414.spfilter2(c,e,tp) + return c:IsSetCard(0xf0) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c25793414.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingTarget(c25793414.spfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.IsExistingTarget(c25793414.spfilter2,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c25793414.spfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c25793414.spfilter2,tp,LOCATION_GRAVE,0,1,1,g1:GetFirst(),e,tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) +end +function c25793414.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.GetLocationCount(tp,LOCATION_MZONE)1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c25795273.lua b/script/c25795273.lua index 46f17fb4..754a6131 100644 --- a/script/c25795273.lua +++ b/script/c25795273.lua @@ -1,25 +1,25 @@ ---イルミラージュ -function c25795273.initial_effect(c) - --atk down - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetValue(c25795273.val) - c:RegisterEffect(e1) - --def down - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_DEFENSE) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetValue(c25795273.val) - c:RegisterEffect(e2) -end -function c25795273.val(e,c) - if c:IsType(TYPE_XYZ) then return c:GetRank()*-300 - else - return c:GetLevel()*-300 - end -end +--イルミラージュ +function c25795273.initial_effect(c) + --atk down + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetValue(c25795273.val) + c:RegisterEffect(e1) + --def down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(c25795273.val) + c:RegisterEffect(e2) +end +function c25795273.val(e,c) + if c:IsType(TYPE_XYZ) then return c:GetRank()*-300 + else + return c:GetLevel()*-300 + end +end diff --git a/script/c25796442.lua b/script/c25796442.lua index 1d47e135..00e45cb9 100644 --- a/script/c25796442.lua +++ b/script/c25796442.lua @@ -16,6 +16,7 @@ function c25796442.initial_effect(c) c:RegisterEffect(e2) local e3=e2:Clone() e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetValue(c25796442.tgval) c:RegisterEffect(e3) local e4=e2:Clone() diff --git a/script/c25824484.lua b/script/c25824484.lua index 6f406426..bbbc182e 100644 --- a/script/c25824484.lua +++ b/script/c25824484.lua @@ -1,51 +1,51 @@ ---森羅の仙樹 レギア -function c25824484.initial_effect(c) - --deck check - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(25824484,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c25824484.target) - e1:SetOperation(c25824484.operation) - c:RegisterEffect(e1) - --sort decktop - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(25824484,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c25824484.sdcon) - e2:SetOperation(c25824484.sdop) - c:RegisterEffect(e2) -end -function c25824484.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c25824484.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - if tc:IsRace(RACE_PLANT) then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) - Duel.Draw(tp,1,REASON_EFFECT) - else - Duel.MoveSequence(tc,1) - end -end -function c25824484.sdcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c25824484.sdop(e,tp,eg,ep,ev,re,r,rp) - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct==0 then return end - local ac=1 - if ct>1 then - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(25824484,2)) - if ct==2 then ac=Duel.AnnounceNumber(tp,1,2) - else ac=Duel.AnnounceNumber(tp,1,2,3) end - end - Duel.SortDecktop(tp,tp,ac) -end +--森羅の仙樹 レギア +function c25824484.initial_effect(c) + --deck check + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25824484,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c25824484.target) + e1:SetOperation(c25824484.operation) + c:RegisterEffect(e1) + --sort decktop + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25824484,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c25824484.sdcon) + e2:SetOperation(c25824484.sdop) + c:RegisterEffect(e2) +end +function c25824484.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c25824484.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsRace(RACE_PLANT) then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) + Duel.Draw(tp,1,REASON_EFFECT) + else + Duel.MoveSequence(tc,1) + end +end +function c25824484.sdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c25824484.sdop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if ct==0 then return end + local ac=1 + if ct>1 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(25824484,2)) + if ct==2 then ac=Duel.AnnounceNumber(tp,1,2) + else ac=Duel.AnnounceNumber(tp,1,2,3) end + end + Duel.SortDecktop(tp,tp,ac) +end diff --git a/script/c25920413.lua b/script/c25920413.lua index 76a64343..27909459 100644 --- a/script/c25920413.lua +++ b/script/c25920413.lua @@ -1,79 +1,79 @@ ---エーリアン・スカル -function c25920413.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e1:SetRange(LOCATION_HAND) - e1:SetTargetRange(POS_FACEUP,1) - e1:SetCondition(c25920413.spcon) - e1:SetOperation(c25920413.spop) - e1:SetValue(1) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(25920413,0)) - e2:SetCategory(CATEGORY_COUNTER) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c25920413.ctcon) - e2:SetOperation(c25920413.ctop) - c:RegisterEffect(e2) - --atk def - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetCondition(c25920413.adcon) - e3:SetTarget(c25920413.adtg) - e3:SetValue(c25920413.adval) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) -end -function c25920413.spfilter(c) - return c:IsLevelBelow(3) and c:IsFaceup() and c:IsReleasable() -end -function c25920413.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 - and Duel.IsExistingMatchingCard(c25920413.spfilter,tp,0,LOCATION_MZONE,1,nil) -end -function c25920413.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g=Duel.SelectMatchingCard(c:GetControler(),c25920413.spfilter,c:GetControler(),0,LOCATION_MZONE,1,1,nil) - Duel.Release(g,REASON_COST) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) -end -function c25920413.ctcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c25920413.ctop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - c:AddCounter(COUNTER_NEED_ENABLE+0x100e,1) - end -end -function c25920413.adcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c25920413.adtg(e,c) - local bc=c:GetBattleTarget() - return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) -end -function c25920413.adval(e,c) - return c:GetCounter(0x100e)*-300 -end +--エーリアン・スカル +function c25920413.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetRange(LOCATION_HAND) + e1:SetTargetRange(POS_FACEUP,1) + e1:SetCondition(c25920413.spcon) + e1:SetOperation(c25920413.spop) + e1:SetValue(1) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25920413,0)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c25920413.ctcon) + e2:SetOperation(c25920413.ctop) + c:RegisterEffect(e2) + --atk def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetCondition(c25920413.adcon) + e3:SetTarget(c25920413.adtg) + e3:SetValue(c25920413.adval) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) +end +function c25920413.spfilter(c) + return c:IsLevelBelow(3) and c:IsFaceup() and c:IsReleasable() +end +function c25920413.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 + and Duel.IsExistingMatchingCard(c25920413.spfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c25920413.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(c:GetControler(),c25920413.spfilter,c:GetControler(),0,LOCATION_MZONE,1,1,nil) + Duel.Release(g,REASON_COST) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c25920413.ctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c25920413.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + c:AddCounter(COUNTER_NEED_ENABLE+0x100e,1) + end +end +function c25920413.adcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() +end +function c25920413.adtg(e,c) + local bc=c:GetBattleTarget() + return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) +end +function c25920413.adval(e,c) + return c:GetCounter(0x100e)*-300 +end diff --git a/script/c25924653.lua b/script/c25924653.lua index e07370c1..28b34922 100644 --- a/script/c25924653.lua +++ b/script/c25924653.lua @@ -1,111 +1,111 @@ ---剣闘獣ダリウス -function c25924653.initial_effect(c) - --grave special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(25924653,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c25924653.spgcon) - e1:SetTarget(c25924653.spgtg) - e1:SetOperation(c25924653.spgop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(25924653,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_BATTLE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c25924653.spcon) - e2:SetCost(c25924653.spcost) - e2:SetTarget(c25924653.sptg) - e2:SetOperation(c25924653.spop) - c:RegisterEffect(e2) - --leave field - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetOperation(c25924653.leave) - c:RegisterEffect(e3) -end -function c25924653.spgcon(e,tp,eg,ep,ev,re,r,rp) - local st=e:GetHandler():GetSummonType() - return st>=(SUMMON_TYPE_SPECIAL+100) and st<(SUMMON_TYPE_SPECIAL+150) -end -function c25924653.spgfilter(c,e,tp) - return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,104,tp,false,false) -end -function c25924653.spgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c25924653.spgfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c25924653.spgfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c25924653.spgfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c25924653.spgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,104,tp,tp,false,false,POS_FACEUP)>0 - and c:IsFaceup() and c:IsRelateToEffect(e) then - c:SetCardTarget(tc) - tc:RegisterFlagEffect(25924654,RESET_EVENT+0x53e0000,0,1) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetCondition(c25924653.discon) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_MZONE) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetOperation(c25924653.disop) - c:RegisterEffect(e2) - end -end -function c25924653.discon(e) - return e:GetOwner():IsHasCardTarget(e:GetHandler()) -end -function c25924653.disop(e,tp,eg,ep,ev,re,r,rp) - if re:GetHandler():GetFlagEffect(25924654)~=0 then - Duel.NegateEffect(ev) - end -end -function c25924653.leave(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=c:GetFirstCardTarget() - if tc and tc:IsLocation(LOCATION_MZONE) and tc:GetFlagEffect(25924654)~=0 then - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end -end -function c25924653.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetBattledGroupCount()>0 -end -function c25924653.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToDeckAsCost() end - Duel.SendtoDeck(c,nil,2,REASON_COST) -end -function c25924653.filter(c,e,tp) - return not c:IsCode(25924653) and c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,104,tp,false,false) -end -function c25924653.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c25924653.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c25924653.spop(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,c25924653.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,104,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) - end -end +--剣闘獣ダリウス +function c25924653.initial_effect(c) + --grave special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25924653,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c25924653.spgcon) + e1:SetTarget(c25924653.spgtg) + e1:SetOperation(c25924653.spgop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25924653,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c25924653.spcon) + e2:SetCost(c25924653.spcost) + e2:SetTarget(c25924653.sptg) + e2:SetOperation(c25924653.spop) + c:RegisterEffect(e2) + --leave field + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c25924653.leave) + c:RegisterEffect(e3) +end +function c25924653.spgcon(e,tp,eg,ep,ev,re,r,rp) + local st=e:GetHandler():GetSummonType() + return st>=(SUMMON_TYPE_SPECIAL+100) and st<(SUMMON_TYPE_SPECIAL+150) +end +function c25924653.spgfilter(c,e,tp) + return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,104,tp,false,false) +end +function c25924653.spgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c25924653.spgfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c25924653.spgfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c25924653.spgfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c25924653.spgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,104,tp,tp,false,false,POS_FACEUP)>0 + and c:IsFaceup() and c:IsRelateToEffect(e) then + c:SetCardTarget(tc) + tc:RegisterFlagEffect(25924654,RESET_EVENT+0x53e0000,0,1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c25924653.discon) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetOperation(c25924653.disop) + c:RegisterEffect(e2) + end +end +function c25924653.discon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c25924653.disop(e,tp,eg,ep,ev,re,r,rp) + if re:GetHandler():GetFlagEffect(25924654)~=0 then + Duel.NegateEffect(ev) + end +end +function c25924653.leave(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) and tc:GetFlagEffect(25924654)~=0 then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end +end +function c25924653.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 +end +function c25924653.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToDeckAsCost() end + Duel.SendtoDeck(c,nil,2,REASON_COST) +end +function c25924653.filter(c,e,tp) + return not c:IsCode(25924653) and c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,104,tp,false,false) +end +function c25924653.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c25924653.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c25924653.spop(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,c25924653.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,104,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + end +end diff --git a/script/c259314.lua b/script/c259314.lua index 1f2b0ecb..6a3ec4df 100644 --- a/script/c259314.lua +++ b/script/c259314.lua @@ -1,63 +1,63 @@ ---甲虫装機の手甲 -function c259314.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c259314.condition) - e1:SetTarget(c259314.target) - e1:SetOperation(c259314.operation) - c:RegisterEffect(e1) -end -function c259314.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c259314.filter(c) - return c:IsFaceup() and c:IsSetCard(0x56) -end -function c259314.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c259314.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c259314.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c259314.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c259314.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - --Atk/def - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_DEFENSE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(1000) - 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(c259314.eqlimit) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetReset(RESET_EVENT+0x1fe0000) - e3:SetValue(c259314.efilter) - c:RegisterEffect(e3,true) - end -end -function c259314.eqlimit(e,c) - return c:IsSetCard(0x56) -end -function c259314.efilter(e,re,rp) - return e:GetHandlerPlayer()~=rp -end +--甲虫装機の手甲 +function c259314.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c259314.condition) + e1:SetTarget(c259314.target) + e1:SetOperation(c259314.operation) + c:RegisterEffect(e1) +end +function c259314.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c259314.filter(c) + return c:IsFaceup() and c:IsSetCard(0x56) +end +function c259314.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c259314.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c259314.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c259314.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c259314.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atk/def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1000) + 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(c259314.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c259314.efilter) + c:RegisterEffect(e3,true) + end +end +function c259314.eqlimit(e,c) + return c:IsSetCard(0x56) +end +function c259314.efilter(e,re,rp) + return e:GetHandlerPlayer()~=rp +end diff --git a/script/c25935625.lua b/script/c25935625.lua index 5f20351c..7ceb4eff 100644 --- a/script/c25935625.lua +++ b/script/c25935625.lua @@ -1,117 +1,117 @@ ---闇竜星-ジョクト -function c25935625.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(25935625,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCountLimit(1,25935625) - e1:SetCondition(c25935625.condition) - e1:SetTarget(c25935625.target) - e1:SetOperation(c25935625.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(25935625,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,25935625) - e2:SetCondition(c25935625.spcon) - e2:SetCost(c25935625.spcost) - e2:SetTarget(c25935625.sptg) - e2:SetOperation(c25935625.spop) - c:RegisterEffect(e2) -end -function c25935625.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) - and c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp -end -function c25935625.filter(c,e,tp) - return c:IsSetCard(0x9e) and not c:IsCode(25935625) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c25935625.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c25935625.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c25935625.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,c25935625.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) - end -end -function c25935625.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 -end -function c25935625.cfilter(c) - return c:IsSetCard(0x9e) and c:IsAbleToGraveAsCost() -end -function c25935625.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c25935625.cfilter,tp,LOCATION_HAND,0,2,nil) end - Duel.DiscardHand(tp,c25935625.cfilter,2,2,REASON_COST) -end -function c25935625.spfilter1(c,e,tp) - return c:IsSetCard(0x9e) and c:GetAttack()==0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c25935625.spfilter2,tp,LOCATION_DECK,0,1,c,e,tp) -end -function c25935625.spfilter2(c,e,tp) - return c:IsSetCard(0x9e) and c:GetDefense()==0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c25935625.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingMatchingCard(c25935625.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) -end -function c25935625.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectMatchingCard(tp,c25935625.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectMatchingCard(tp,c25935625.spfilter2,tp,LOCATION_DECK,0,1,1,g1:GetFirst(),e,tp) - g1:Merge(g2) - if g1:GetCount()>0 then - local fid=e:GetHandler():GetFieldID() - local tc=g1:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(25935625,RESET_EVENT+0x1fe0000,0,1,fid) - tc=g1:GetNext() - end - Duel.SpecialSummonComplete() - g1:KeepAlive() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(g1) - e1:SetCondition(c25935625.rmcon) - e1:SetOperation(c25935625.rmop) - Duel.RegisterEffect(e1,tp) - end -end -function c25935625.rmfilter(c,fid) - return c:GetFlagEffectLabel(25935625)==fid -end -function c25935625.rmcon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c25935625.rmfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c25935625.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c25935625.rmfilter,nil,e:GetLabel()) - Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) -end +--闇竜星-ジョクト +function c25935625.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25935625,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCountLimit(1,25935625) + e1:SetCondition(c25935625.condition) + e1:SetTarget(c25935625.target) + e1:SetOperation(c25935625.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(25935625,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,25935625) + e2:SetCondition(c25935625.spcon) + e2:SetCost(c25935625.spcost) + e2:SetTarget(c25935625.sptg) + e2:SetOperation(c25935625.spop) + c:RegisterEffect(e2) +end +function c25935625.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) + and c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp +end +function c25935625.filter(c,e,tp) + return c:IsSetCard(0x9e) and not c:IsCode(25935625) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c25935625.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c25935625.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c25935625.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,c25935625.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end +function c25935625.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 +end +function c25935625.cfilter(c) + return c:IsSetCard(0x9e) and c:IsAbleToGraveAsCost() +end +function c25935625.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c25935625.cfilter,tp,LOCATION_HAND,0,2,nil) end + Duel.DiscardHand(tp,c25935625.cfilter,2,2,REASON_COST) +end +function c25935625.spfilter1(c,e,tp) + return c:IsSetCard(0x9e) and c:GetAttack()==0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c25935625.spfilter2,tp,LOCATION_DECK,0,1,c,e,tp) +end +function c25935625.spfilter2(c,e,tp) + return c:IsSetCard(0x9e) and c:GetDefense()==0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c25935625.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c25935625.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c25935625.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c25935625.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c25935625.spfilter2,tp,LOCATION_DECK,0,1,1,g1:GetFirst(),e,tp) + g1:Merge(g2) + if g1:GetCount()>0 then + local fid=e:GetHandler():GetFieldID() + local tc=g1:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(25935625,RESET_EVENT+0x1fe0000,0,1,fid) + tc=g1:GetNext() + end + Duel.SpecialSummonComplete() + g1:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g1) + e1:SetCondition(c25935625.rmcon) + e1:SetOperation(c25935625.rmop) + Duel.RegisterEffect(e1,tp) + end +end +function c25935625.rmfilter(c,fid) + return c:GetFlagEffectLabel(25935625)==fid +end +function c25935625.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c25935625.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c25935625.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c25935625.rmfilter,nil,e:GetLabel()) + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c25955164.lua b/script/c25955164.lua index 38893c7e..e68f60d0 100644 --- a/script/c25955164.lua +++ b/script/c25955164.lua @@ -1,34 +1,34 @@ ---雷魔神-サンガ -function c25955164.initial_effect(c) - --atkdown - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(25955164,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - e1:SetCountLimit(1) - e1:SetCondition(c25955164.condition) - e1:SetTarget(c25955164.target) - e1:SetOperation(c25955164.operation) - c:RegisterEffect(e1) -end -function c25955164.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==e:GetHandler() -end -function c25955164.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetAttacker():IsCanBeEffectTarget(e) end - Duel.SetTargetCard(Duel.GetAttacker()) -end -function c25955164.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(0) - tc:RegisterEffect(e1) - end -end +--雷魔神-サンガ +function c25955164.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(25955164,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetCountLimit(1) + e1:SetCondition(c25955164.condition) + e1:SetTarget(c25955164.target) + e1:SetOperation(c25955164.operation) + c:RegisterEffect(e1) +end +function c25955164.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==e:GetHandler() +end +function c25955164.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttacker():IsCanBeEffectTarget(e) end + Duel.SetTargetCard(Duel.GetAttacker()) +end +function c25955164.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(0) + tc:RegisterEffect(e1) + end +end diff --git a/script/c26084285.lua b/script/c26084285.lua index 3e409133..a506670e 100644 --- a/script/c26084285.lua +++ b/script/c26084285.lua @@ -32,8 +32,7 @@ function c26084285.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c26084285.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c2618045.lua b/script/c2618045.lua index 8a833a0e..45c079c1 100644 --- a/script/c2618045.lua +++ b/script/c2618045.lua @@ -1,33 +1,33 @@ ---フォトン・チャージマン -function c2618045.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(2618045,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c2618045.cost) - e1:SetOperation(c2618045.operation) - c:RegisterEffect(e1) -end -function c2618045.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1,true) -end -function c2618045.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(c:GetBaseAttack()*2) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_STANDBY,2) - c:RegisterEffect(e1) - end -end +--フォトン・チャージマン +function c2618045.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2618045,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c2618045.cost) + e1:SetOperation(c2618045.operation) + c:RegisterEffect(e1) +end +function c2618045.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1,true) +end +function c2618045.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_STANDBY,2) + c:RegisterEffect(e1) + end +end diff --git a/script/c26194151.lua b/script/c26194151.lua new file mode 100644 index 00000000..64a82ec7 --- /dev/null +++ b/script/c26194151.lua @@ -0,0 +1,60 @@ +--ネクロイド・シンクロ +function c26194151.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c26194151.target) + e1:SetOperation(c26194151.activate) + c:RegisterEffect(e1) +end +function c26194151.filter1(c,e,tp) + local lv=c:GetLevel() + return c:IsSetCard(0xa3) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,false,false) + and Duel.IsExistingMatchingCard(c26194151.filter2,tp,LOCATION_GRAVE,0,1,nil,tp,lv) +end +function c26194151.filter2(c,tp,lv) + local rlv=lv-c:GetLevel() + local rg=Duel.GetMatchingGroup(c26194151.filter3,tp,LOCATION_GRAVE,0,c) + return rlv>0 and c:IsType(TYPE_TUNER) and c:IsAbleToRemove() + and rg:CheckWithSumEqual(Card.GetLevel,rlv,1,2) +end +function c26194151.filter3(c) + return c:GetLevel()>0 and not c:IsType(TYPE_TUNER) and c:IsAbleToRemove() +end +function c26194151.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c26194151.filter1,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c26194151.activate(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 g1=Duel.SelectMatchingCard(tp,c26194151.filter1,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g1:GetFirst() + if tc then + local lv=tc:GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c26194151.filter2,tp,LOCATION_GRAVE,0,1,1,nil,tp,lv) + local rlv=lv-g2:GetFirst():GetLevel() + local rg=Duel.GetMatchingGroup(c26194151.filter3,tp,LOCATION_GRAVE,0,g2:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g3=rg:SelectWithSumEqual(tp,Card.GetLevel,rlv,1,2) + g2:Merge(g3) + Duel.Remove(g2,POS_FACEUP,REASON_EFFECT) + Duel.SpecialSummonStep(tc,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc:CompleteProcedure() + Duel.SpecialSummonComplete() + end +end diff --git a/script/c26211048.lua b/script/c26211048.lua index 37f059d9..15d5c5cc 100644 --- a/script/c26211048.lua +++ b/script/c26211048.lua @@ -7,7 +7,7 @@ function c26211048.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(26211048,0)) e1:SetCategory(CATEGORY_EQUIP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c26268488.lua b/script/c26268488.lua index c8b51b5c..c19bfef1 100644 --- a/script/c26268488.lua +++ b/script/c26268488.lua @@ -58,7 +58,7 @@ function c26268488.distg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) end function c26268488.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) + if not Duel.NegateEffect(ev) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) if g:GetCount()>0 then diff --git a/script/c26270847.lua b/script/c26270847.lua index 94421f05..da80b3a9 100644 --- a/script/c26270847.lua +++ b/script/c26270847.lua @@ -1,46 +1,46 @@ ---EMシルバー・クロウ -function c26270847.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(c26270847.atktg) - e2:SetValue(300) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(26270847,0)) - e3:SetCategory(CATEGORY_ATKCHANGE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetTarget(c26270847.target) - e3:SetOperation(c26270847.operation) - c:RegisterEffect(e3) -end -function c26270847.atktg(e,c) - return c:IsSetCard(0x9f) -end -function c26270847.filter(c) - return c:IsFaceup() and c:IsSetCard(0x9f) -end -function c26270847.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c26270847.filter,tp,LOCATION_MZONE,0,1,nil) end -end -function c26270847.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c26270847.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(300) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--EMシルバー・クロウ +function c26270847.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c26270847.atktg) + e2:SetValue(300) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(26270847,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetTarget(c26270847.target) + e3:SetOperation(c26270847.operation) + c:RegisterEffect(e3) +end +function c26270847.atktg(e,c) + return c:IsSetCard(0x9f) +end +function c26270847.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) +end +function c26270847.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c26270847.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c26270847.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c26270847.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c26285788.lua b/script/c26285788.lua index 96f1eaaf..d2a96d43 100644 --- a/script/c26285788.lua +++ b/script/c26285788.lua @@ -1,74 +1,74 @@ ---招来の対価 -function c26285788.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,26285788+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c26285788.target) - e1:SetOperation(c26285788.activate) - c:RegisterEffect(e1) - if c26285788.global_effect==nil then - c26285788.global_effect=true - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetCode(EVENT_RELEASE) - e1:SetOperation(c26285788.addcount) - Duel.RegisterEffect(e1,0) - end -end -function c26285788.addcount(e,tp,eg,ep,ev,re,r,rp) - local c=eg:GetFirst() - while c~=nil do - if not c:IsType(TYPE_TOKEN) then - local p=c:GetReasonPlayer() - Duel.RegisterFlagEffect(p,26285789,RESET_PHASE+PHASE_END,0,1) - end - c=eg:GetNext() - end -end -function c26285788.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end -end -function c26285788.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetCondition(c26285788.effectcon) - e1:SetOperation(c26285788.effectop) - Duel.RegisterEffect(e1,tp) -end -function c26285788.effectcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFlagEffect(tp,26285789)>0 -end -function c26285788.filter1(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) -end -function c26285788.filter2(c) - return c:IsFaceup() -end -function c26285788.effectop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,26285788) - local ct=Duel.GetFlagEffect(tp,26285789) - if ct==1 then - Duel.Draw(tp,1,REASON_EFFECT) - elseif ct==2 then - local g=Duel.GetMatchingGroup(c26285788.filter1,tp,LOCATION_GRAVE,0,nil) - if g:GetCount()>1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local tg=g:Select(tp,2,2,nil) - Duel.SendtoHand(tg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tg) - end - else - local g=Duel.GetMatchingGroup(c26285788.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local tg=g:Select(tp,1,3,nil) - Duel.Destroy(tg,REASON_EFFECT) - end - end -end +--招来の対価 +function c26285788.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,26285788+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c26285788.target) + e1:SetOperation(c26285788.activate) + c:RegisterEffect(e1) + if c26285788.global_effect==nil then + c26285788.global_effect=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_RELEASE) + e1:SetOperation(c26285788.addcount) + Duel.RegisterEffect(e1,0) + end +end +function c26285788.addcount(e,tp,eg,ep,ev,re,r,rp) + local c=eg:GetFirst() + while c~=nil do + if not c:IsType(TYPE_TOKEN) then + local p=c:GetReasonPlayer() + Duel.RegisterFlagEffect(p,26285789,RESET_PHASE+PHASE_END,0,1) + end + c=eg:GetNext() + end +end +function c26285788.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end +end +function c26285788.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c26285788.effectcon) + e1:SetOperation(c26285788.effectop) + Duel.RegisterEffect(e1,tp) +end +function c26285788.effectcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,26285789)>0 +end +function c26285788.filter1(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c26285788.filter2(c) + return c:IsFaceup() +end +function c26285788.effectop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,26285788) + local ct=Duel.GetFlagEffect(tp,26285789) + if ct==1 then + Duel.Draw(tp,1,REASON_EFFECT) + elseif ct==2 then + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c26285788.filter1),tp,LOCATION_GRAVE,0,nil) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tg=g:Select(tp,2,2,nil) + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end + else + local g=Duel.GetMatchingGroup(c26285788.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local tg=g:Select(tp,1,3,nil) + Duel.Destroy(tg,REASON_EFFECT) + end + end +end diff --git a/script/c26308721.lua b/script/c26308721.lua new file mode 100644 index 00000000..b598c866 --- /dev/null +++ b/script/c26308721.lua @@ -0,0 +1,66 @@ +--捕食植物プテロペンテス +function c26308721.initial_effect(c) + --counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26308721,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c26308721.ctcon1) + e1:SetTarget(c26308721.cttg1) + e1:SetOperation(c26308721.ctop1) + c:RegisterEffect(e1) + --control + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(26308721,1)) + e2:SetCategory(CATEGORY_CONTROL) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c26308721.cttg2) + e2:SetOperation(c26308721.ctop2) + c:RegisterEffect(e2) +end +function c26308721.ctcon1(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c26308721.cttg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsCanAddCounter(0x1041,1) end + if chk==0 then return Duel.IsExistingTarget(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,nil,0x1041,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,1,nil,0x1041,1) +end +function c26308721.ctop1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:AddCounter(0x1041,1) and tc:GetLevel()>1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c26308721.lvcon) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end +function c26308721.lvcon(e) + return e:GetHandler():GetCounter(0x1041)>0 +end +function c26308721.ctfilter2(c,mc) + return c:IsFaceup() and c:IsLevelBelow(mc:GetLevel()) and c:IsControlerCanBeChanged() +end +function c26308721.cttg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c26308721.ctfilter2(chkc,c) end + if chk==0 then return Duel.IsExistingTarget(c26308721.ctfilter2,tp,0,LOCATION_MZONE,1,nil,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c26308721.ctfilter2,tp,0,LOCATION_MZONE,1,1,nil,c) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c26308721.ctop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c26329679.lua b/script/c26329679.lua index 0d44590d..218a1ac5 100644 --- a/script/c26329679.lua +++ b/script/c26329679.lua @@ -6,6 +6,7 @@ function c26329679.initial_effect(c) --immune local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(26329679,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1) diff --git a/script/c26376390.lua b/script/c26376390.lua index 0a92c596..1f88c6d5 100644 --- a/script/c26376390.lua +++ b/script/c26376390.lua @@ -1,43 +1,43 @@ ---ものマネ幻想師 -function c26376390.initial_effect(c) - --atk def - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(26376390,0)) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c26376390.target) - e1:SetOperation(c26376390.operation) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c26376390.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c26376390.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(tc:GetBaseAttack()) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetValue(tc:GetBaseDefense()) - e2:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e2) - end -end +--ものマネ幻想師 +function c26376390.initial_effect(c) + --atk def + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26376390,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c26376390.target) + e1:SetOperation(c26376390.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c26376390.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c26376390.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(tc:GetBaseDefense()) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end +end diff --git a/script/c26381750.lua b/script/c26381750.lua index eaefa145..5ed32aa9 100644 --- a/script/c26381750.lua +++ b/script/c26381750.lua @@ -1,35 +1,35 @@ ---紅蓮地帯を飛ぶ鷹 -function c26381750.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(26381750,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BE_MATERIAL) - e1:SetCondition(c26381750.spcon) - e1:SetTarget(c26381750.sptg) - e1:SetOperation(c26381750.spop) - c:RegisterEffect(e1) -end -function c26381750.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO - and Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x39):GetClassCount(Card.GetCode)>=3 -end -function c26381750.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c26381750.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x39):GetClassCount(Card.GetCode)<3 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1,true) - end -end +--紅蓮地帯を飛ぶ鷹 +function c26381750.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26381750,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c26381750.spcon) + e1:SetTarget(c26381750.sptg) + e1:SetOperation(c26381750.spop) + c:RegisterEffect(e1) +end +function c26381750.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO + and Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x39):GetClassCount(Card.GetCode)>=3 +end +function c26381750.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c26381750.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x39):GetClassCount(Card.GetCode)<3 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + end +end diff --git a/script/c26420373.lua b/script/c26420373.lua new file mode 100644 index 00000000..5e9df7c1 --- /dev/null +++ b/script/c26420373.lua @@ -0,0 +1,103 @@ +--SRパッシングライダー +function c26420373.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --scale change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26420373,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCost(c26420373.sccost) + e1:SetOperation(c26420373.scop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,26420373) + e2:SetCondition(c26420373.hspcon) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(26420373,3)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetCondition(c26420373.spcon) + e3:SetTarget(c26420373.sptg) + e3:SetOperation(c26420373.spop) + c:RegisterEffect(e3) + --cannot select battle target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetValue(c26420373.atlimit) + c:RegisterEffect(e4) +end +function c26420373.costfilter(c) + return c:IsSetCard(0x2016) and c:IsType(TYPE_TUNER) and c:IsAbleToGraveAsCost() +end +function c26420373.sccost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c26420373.costfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c26420373.costfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil) + e:SetLabel(g:GetFirst():GetOriginalLevel()) + Duel.SendtoGrave(g,REASON_COST) +end +function c26420373.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ct=e:GetLabel() + local sel=0 + if c:GetLeftScale()==1 then + sel=Duel.SelectOption(tp,aux.Stringid(26420373,1)) + else + sel=Duel.SelectOption(tp,aux.Stringid(26420373,1),aux.Stringid(26420373,2)) + end + if sel==1 then + ct=-math.min(ct,c:GetLeftScale()-1) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LSCALE) + e1:SetValue(ct) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_RSCALE) + c:RegisterEffect(e2) +end +function c26420373.hspcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,LOCATION_MZONE)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c26420373.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE +end +function c26420373.spfilter(c,e,tp) + return c:IsSetCard(0x2016) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c26420373.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c26420373.spfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c26420373.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c26420373.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c26420373.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c26420373.atlimit(e,c) + return c~=e:GetHandler() and c:IsFaceup() and c:IsSetCard(0x2016) +end diff --git a/script/c26493435.lua b/script/c26493435.lua index 720b5005..2775841c 100644 --- a/script/c26493435.lua +++ b/script/c26493435.lua @@ -1,74 +1,74 @@ ---希望郷-オノマトピア- -function c26493435.initial_effect(c) - c:EnableCounterPermit(0x30) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c26493435.ctcon) - e2:SetOperation(c26493435.ctop) - c:RegisterEffect(e2) - --atk/def - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetValue(c26493435.val) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) - --special summon - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(26493435,0)) - e5:SetCategory(CATEGORY_SPECIAL_SUMMON) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_FZONE) - e5:SetCountLimit(1) - e5:SetCost(c26493435.spcost) - e5:SetTarget(c26493435.sptg) - e5:SetOperation(c26493435.spop) - c:RegisterEffect(e5) -end -function c26493435.ctfilter(c,tp) - return c:IsFaceup() and c:IsSetCard(0x107f) and c:IsControler(tp) -end -function c26493435.ctcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c26493435.ctfilter,1,nil,tp) -end -function c26493435.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x30,1) -end -function c26493435.val(e,c) - return e:GetHandler():GetCounter(0x30)*200 -end -function c26493435.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x30,2,REASON_COST) end - e:GetHandler():RemoveCounter(tp,0x30,2,REASON_COST) -end -function c26493435.filter(c,e,tp) - return (c:IsSetCard(0x8f) or c:IsSetCard(0x54) or c:IsSetCard(0x59) or c:IsSetCard(0x82)) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c26493435.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c26493435.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c26493435.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c26493435.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--希望郷-オノマトピア- +function c26493435.initial_effect(c) + c:EnableCounterPermit(0x30) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c26493435.ctcon) + e2:SetOperation(c26493435.ctop) + c:RegisterEffect(e2) + --atk/def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetValue(c26493435.val) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(26493435,0)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_FZONE) + e5:SetCountLimit(1) + e5:SetCost(c26493435.spcost) + e5:SetTarget(c26493435.sptg) + e5:SetOperation(c26493435.spop) + c:RegisterEffect(e5) +end +function c26493435.ctfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x107f) and c:IsControler(tp) +end +function c26493435.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c26493435.ctfilter,1,nil,tp) +end +function c26493435.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x30,1) +end +function c26493435.val(e,c) + return e:GetHandler():GetCounter(0x30)*200 +end +function c26493435.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x30,2,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x30,2,REASON_COST) +end +function c26493435.filter(c,e,tp) + return (c:IsSetCard(0x8f) or c:IsSetCard(0x54) or c:IsSetCard(0x59) or c:IsSetCard(0x82)) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c26493435.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c26493435.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c26493435.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c26493435.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c26509612.lua b/script/c26509612.lua index 05708384..e90713d7 100644 --- a/script/c26509612.lua +++ b/script/c26509612.lua @@ -1,51 +1,51 @@ ---アース・グラビティ -function c26509612.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(c26509612.condition) - e1:SetTarget(c26509612.target) - e1:SetOperation(c26509612.activate) - c:RegisterEffect(e1) -end -function c26509612.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 c26509612.filter1(c) - return c:IsFaceup() and c:IsCode(74711057) -end -function c26509612.filter2(c) - return c:IsFaceup() and c:IsLevelBelow(4) -end -function c26509612.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c26509612.filter1,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingMatchingCard(c26509612.filter2,tp,0,LOCATION_MZONE,1,nil) end -end -function c26509612.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_MUST_ATTACK) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetTarget(c26509612.attg) - e1:SetReset(RESET_PHASE+PHASE_BATTLE) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_MUST_ATTACK_MONSTER) - Duel.RegisterEffect(e2,tp) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_MUST_BE_ATTACKED) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(c26509612.attg2) - e3:SetValue(c26509612.attg) - e3:SetReset(RESET_PHASE+PHASE_BATTLE) - Duel.RegisterEffect(e3,tp) -end -function c26509612.attg(e,c) - return c:IsLevelBelow(4) -end -function c26509612.attg2(e,c) - return c:IsCode(74711057) -end +--アース・グラビティ +function c26509612.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(c26509612.condition) + e1:SetTarget(c26509612.target) + e1:SetOperation(c26509612.activate) + c:RegisterEffect(e1) +end +function c26509612.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 c26509612.filter1(c) + return c:IsFaceup() and c:IsCode(74711057) +end +function c26509612.filter2(c) + return c:IsFaceup() and c:IsLevelBelow(4) +end +function c26509612.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c26509612.filter1,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c26509612.filter2,tp,0,LOCATION_MZONE,1,nil) end +end +function c26509612.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(c26509612.attg) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_MUST_ATTACK_MONSTER) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_MUST_BE_ATTACKED) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c26509612.attg2) + e3:SetValue(c26509612.attg) + e3:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e3,tp) +end +function c26509612.attg(e,c) + return c:IsLevelBelow(4) +end +function c26509612.attg2(e,c) + return c:IsCode(74711057) +end diff --git a/script/c26556950.lua b/script/c26556950.lua index 5e585c9f..18abd001 100644 --- a/script/c26556950.lua +++ b/script/c26556950.lua @@ -30,6 +30,7 @@ function c26556950.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(26556950,1)) e4:SetCategory(CATEGORY_DESTROY) + e4:SetProperty(EFFECT_FLAG2_XMDETACH) e4:SetType(EFFECT_TYPE_IGNITION) e4:SetRange(LOCATION_MZONE) e4:SetCountLimit(1) @@ -53,7 +54,7 @@ function c26556950.regop(e,tp,eg,ep,ev,re,r,rp) end function c26556950.damcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() - return c:GetOverlayCount()>0 and ep~=tp and c:GetFlagEffect(26556950)~=0 + return c:GetOverlayCount()>0 and ep~=tp and c:GetFlagEffect(26556950)~=0 and re:IsHasType(EFFECT_TYPE_ACTIVATE) end function c26556950.damop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_CARD,0,26556950) diff --git a/script/c26563200.lua b/script/c26563200.lua index 0162d428..1391a58b 100644 --- a/script/c26563200.lua +++ b/script/c26563200.lua @@ -9,7 +9,7 @@ function c26563200.initial_effect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP) e1:SetHintTiming(TIMING_DAMAGE_STEP) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,26563200) diff --git a/script/c26586849.lua b/script/c26586849.lua index d424a082..3ff308ef 100644 --- a/script/c26586849.lua +++ b/script/c26586849.lua @@ -16,5 +16,5 @@ function c26586849.initial_effect(c) c:RegisterEffect(e1) end function c26586849.sumlimit(e,c,sump,sumtype,sumpos,targetp) - return c:IsLocation(LOCATION_GRAVE) + return c:IsLocation(LOCATION_GRAVE) and c:IsType(TYPE_MONSTER) end diff --git a/script/c26638543.lua b/script/c26638543.lua new file mode 100644 index 00000000..6fc99d55 --- /dev/null +++ b/script/c26638543.lua @@ -0,0 +1,98 @@ +--メトロンノーム +function c26638543.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --scale + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26638543,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetTarget(c26638543.sctg) + e1:SetOperation(c26638543.scop) + c:RegisterEffect(e1) + --atk/def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c26638543.con) + e2:SetValue(c26638543.val) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetCondition(c26638543.con) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(26638543,1)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_BATTLE_DAMAGE) + e5:SetCondition(c26638543.descon) + e5:SetTarget(c26638543.destg) + e5:SetOperation(c26638543.desop) + c:RegisterEffect(e5) +end +function c26638543.scfilter(c,pc) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:GetLeftScale()~=pc:GetLeftScale() +end +function c26638543.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c26638543.scfilter(chkc,c) and chkc~=c end + if chk==0 then return Duel.IsExistingTarget(c26638543.scfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,c,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c26638543.scfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,c,c) +end +function c26638543.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LSCALE) + e1:SetValue(tc:GetLeftScale()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RSCALE) + e2:SetValue(tc:GetRightScale()) + c:RegisterEffect(e2) + end +end +function c26638543.con(e) + local tp=e:GetHandler():GetControler() + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + if not tc1 or not tc2 then return false end + return tc1:GetLeftScale()==tc2:GetRightScale() +end +function c26638543.val(e,c) + local tc=Duel.GetFieldCard(c:GetControler(),LOCATION_SZONE,6) + return tc:GetLeftScale()*100 +end +function c26638543.descon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetAttackTarget()==nil +end +function c26638543.desfilter(c) + return c:GetSequence()==6 or c:GetSequence()==7 +end +function c26638543.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c26638543.desfilter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c26638543.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c26638543.desfilter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c26708437.lua b/script/c26708437.lua index ddc8536e..2f881578 100644 --- a/script/c26708437.lua +++ b/script/c26708437.lua @@ -1,32 +1,32 @@ ---エクシーズ・リボーン -function c26708437.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c26708437.target) - e1:SetOperation(c26708437.activate) - c:RegisterEffect(e1) -end -function c26708437.filter(c,e,tp) - return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c26708437.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c26708437.filter(chkc,e,tp) end - if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c26708437.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c26708437.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c26708437.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 and c:IsRelateToEffect(e) then - c:CancelToGrave() - Duel.Overlay(tc,Group.FromCards(c)) - end -end +--エクシーズ・リボーン +function c26708437.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c26708437.target) + e1:SetOperation(c26708437.activate) + c:RegisterEffect(e1) +end +function c26708437.filter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c26708437.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c26708437.filter(chkc,e,tp) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c26708437.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c26708437.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c26708437.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 and c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + end +end diff --git a/script/c26775203.lua b/script/c26775203.lua index d2e9dcbf..dca08bf8 100644 --- a/script/c26775203.lua +++ b/script/c26775203.lua @@ -1,50 +1,50 @@ ---BF-熱風のギブリ -function c26775203.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(26775203,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c26775203.condition) - e1:SetTarget(c26775203.target) - e1:SetOperation(c26775203.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(26775203,1)) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c26775203.adchange) - c:RegisterEffect(e2) -end -function c26775203.condition(e,tp,eg,ep,ev,re,r,rp) - local at=Duel.GetAttacker() - return at:GetControler()~=tp and Duel.GetAttackTarget()==nil -end -function c26775203.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c26775203.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c26775203.adchange(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SWAP_BASE_AD) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end +--BF-熱風のギブリ +function c26775203.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26775203,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c26775203.condition) + e1:SetTarget(c26775203.target) + e1:SetOperation(c26775203.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(26775203,1)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c26775203.adchange) + c:RegisterEffect(e2) +end +function c26775203.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()~=tp and Duel.GetAttackTarget()==nil +end +function c26775203.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c26775203.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c26775203.adchange(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SWAP_BASE_AD) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c26834022.lua b/script/c26834022.lua index b9ac71ad..ed13aa00 100644 --- a/script/c26834022.lua +++ b/script/c26834022.lua @@ -29,8 +29,7 @@ function c26834022.activate(e,tp,eg,ep,ev,re,r,rp) if g:GetCount()==0 then return end Duel.ConfirmCards(1-tp,g) Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c26841274.lua b/script/c26841274.lua index d02c1725..699c23fc 100644 --- a/script/c26841274.lua +++ b/script/c26841274.lua @@ -2,7 +2,7 @@ function c26841274.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c26841274.target) @@ -10,7 +10,7 @@ function c26841274.initial_effect(c) c:RegisterEffect(e1) end function c26841274.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsSetCard(0xc008) and not c:IsImmuneToEffect(e) + return c:IsOnField() and c:IsSetCard(0xc008) and (not e or not c:IsImmuneToEffect(e)) end function c26841274.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and (not f or f(c)) @@ -22,7 +22,7 @@ end function c26841274.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c26841274.filter3,tp,LOCATION_MZONE,0,nil) + local mg1=Duel.GetFusionMaterial(tp):Filter(c26841274.filter1,nil) local res=Duel.IsExistingMatchingCard(c26841274.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) @@ -39,7 +39,7 @@ function c26841274.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c26841274.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c26841274.filter1,tp,LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c26841274.filter1,nil,e) local sg1=Duel.GetMatchingGroup(c26841274.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) local mg2=nil local sg2=nil diff --git a/script/c269012.lua b/script/c269012.lua index e44c3273..7f17e616 100644 --- a/script/c269012.lua +++ b/script/c269012.lua @@ -1,82 +1,82 @@ ---神縛りの塚 -function c269012.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cannot be target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c269012.target) - e2:SetValue(1) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetValue(1) - c:RegisterEffect(e3) - --damage - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(269012,0)) - e4:SetCategory(CATEGORY_DAMAGE) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_BATTLE_DESTROYED) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetRange(LOCATION_FZONE) - e4:SetCondition(c269012.damcon) - e4:SetTarget(c269012.damtg) - e4:SetOperation(c269012.damop) - c:RegisterEffect(e4) - --search - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(269012,1)) - e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e5:SetCode(EVENT_TO_GRAVE) - e5:SetCondition(c269012.thcon) - e5:SetTarget(c269012.thtg) - e5:SetOperation(c269012.thop) - c:RegisterEffect(e5) -end -function c269012.target(e,c) - return c:IsLevelAbove(10) -end -function c269012.damcon(e,tp,eg,ep,ev,re,r,rp) - local des=eg:GetFirst() - local rc=des:GetReasonCard() - return des:IsLocation(LOCATION_GRAVE) and des:IsType(TYPE_MONSTER) and rc:IsRelateToBattle() and rc:IsLevelAbove(10) -end -function c269012.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local damp=eg:GetFirst():GetPreviousControler() - Duel.SetTargetPlayer(damp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,damp,1000) -end -function c269012.damop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,v=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,v,REASON_EFFECT) -end -function c269012.thcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,0x41)==0x41 and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c269012.filter(c) - return c:IsAttribute(ATTRIBUTE_DEVINE) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c269012.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c269012.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c269012.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c269012.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--神縛りの塚 +function c269012.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c269012.target) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(269012,0)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_BATTLE_DESTROYED) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetRange(LOCATION_FZONE) + e4:SetCondition(c269012.damcon) + e4:SetTarget(c269012.damtg) + e4:SetOperation(c269012.damop) + c:RegisterEffect(e4) + --search + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(269012,1)) + e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e5:SetCode(EVENT_TO_GRAVE) + e5:SetCondition(c269012.thcon) + e5:SetTarget(c269012.thtg) + e5:SetOperation(c269012.thop) + c:RegisterEffect(e5) +end +function c269012.target(e,c) + return c:IsLevelAbove(10) +end +function c269012.damcon(e,tp,eg,ep,ev,re,r,rp) + local des=eg:GetFirst() + local rc=des:GetReasonCard() + return des:IsLocation(LOCATION_GRAVE) and des:IsType(TYPE_MONSTER) and rc:IsRelateToBattle() and rc:IsLevelAbove(10) +end +function c269012.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local damp=eg:GetFirst():GetPreviousControler() + Duel.SetTargetPlayer(damp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,damp,1000) +end +function c269012.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,v=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,v,REASON_EFFECT) +end +function c269012.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,0x41)==0x41 and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c269012.filter(c) + return c:IsAttribute(ATTRIBUTE_DEVINE) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c269012.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c269012.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c269012.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c269012.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c26905245.lua b/script/c26905245.lua index af4533ad..a9adcc1f 100644 --- a/script/c26905245.lua +++ b/script/c26905245.lua @@ -1,33 +1,33 @@ ---メタル・リフレクト・スライム -function c26905245.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c26905245.target) - e1:SetOperation(c26905245.activate) - c:RegisterEffect(e1) -end -function c26905245.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,26905245,0,0x21,0,3000,10,RACE_AQUA,ATTRIBUTE_WATER) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c26905245.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,26905245,0,0x21,0,3000,10,RACE_AQUA,ATTRIBUTE_WATER) then return end - c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) - c:AddMonsterAttributeComplete() - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1,true) - Duel.SpecialSummonComplete() -end +--メタル・リフレクト・スライム +function c26905245.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c26905245.target) + e1:SetOperation(c26905245.activate) + c:RegisterEffect(e1) +end +function c26905245.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,26905245,0,0x21,0,3000,10,RACE_AQUA,ATTRIBUTE_WATER) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c26905245.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,26905245,0,0x21,0,3000,10,RACE_AQUA,ATTRIBUTE_WATER) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() +end diff --git a/script/c26931058.lua b/script/c26931058.lua index 891e29ef..4c304a5d 100644 --- a/script/c26931058.lua +++ b/script/c26931058.lua @@ -14,10 +14,10 @@ function c26931058.filter1(c,tp) and Duel.IsExistingTarget(c26931058.filter2,tp,LOCATION_MZONE,0,1,c,c) end function c26931058.filter2(c,ec) - return c:IsFaceup() and ec:CheckEquipTarget(c) + return c:IsFaceup() and ec:CheckEquipTarget(c) and aux.CheckUnionEquip(ec,c) end function c26931058.filter3(c,e,tp) - return c:IsFaceup() and c:IsStatus(STATUS_UNION) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + return c:IsFaceup() and c:IsHasEffect(EFFECT_UNION_STATUS) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c26931058.eftg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return false end @@ -51,8 +51,9 @@ function c26931058.efop(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local tc2=g:GetFirst() if tc1==tc2 then tc2=g:GetNext() end - if tc1:IsFaceup() and tc2:IsFaceup() and tc1:IsRelateToEffect(e) and tc2:IsRelateToEffect(e) and Duel.Equip(tp,tc1,tc2,false) then - tc1:SetStatus(STATUS_UNION,true) + if tc1:IsFaceup() and tc2:IsFaceup() and tc1:IsRelateToEffect(e) and tc2:IsRelateToEffect(e) + and aux.CheckUnionEquip(tc1,tc2) and Duel.Equip(tp,tc1,tc2,false) then + aux.SetUnionState(tc1) end else local tc=Duel.GetFirstTarget() diff --git a/script/c26964762.lua b/script/c26964762.lua index a74f82eb..a5189348 100644 --- a/script/c26964762.lua +++ b/script/c26964762.lua @@ -59,8 +59,7 @@ end function c26964762.disop(e,tp,eg,ep,ev,re,r,rp) if rp==tp and re:IsActiveType(TYPE_SPELL) then local rc=re:GetHandler() - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then Duel.Destroy(rc,REASON_EFFECT) end end diff --git a/script/c27053506.lua b/script/c27053506.lua index 0f296de5..ecdd6e20 100644 --- a/script/c27053506.lua +++ b/script/c27053506.lua @@ -1,24 +1,24 @@ ---仕込みマシンガン -function c27053506.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c27053506.target) - e1:SetOperation(c27053506.activate) - c:RegisterEffect(e1) -end -function c27053506.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,0,0xe,1,nil) end - Duel.SetTargetPlayer(1-tp) - local dam=Duel.GetFieldGroupCount(1-tp,0xe,0)*200 - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c27053506.activate(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local dam=Duel.GetFieldGroupCount(1-tp,0xe,0)*200 - Duel.Damage(p,dam,REASON_EFFECT) -end +--仕込みマシンガン +function c27053506.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c27053506.target) + e1:SetOperation(c27053506.activate) + c:RegisterEffect(e1) +end +function c27053506.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,0,0xe,1,nil) end + Duel.SetTargetPlayer(1-tp) + local dam=Duel.GetFieldGroupCount(1-tp,0xe,0)*200 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c27053506.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetFieldGroupCount(1-tp,0xe,0)*200 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c27143874.lua b/script/c27143874.lua index 33e6f713..60ed4799 100644 --- a/script/c27143874.lua +++ b/script/c27143874.lua @@ -1,45 +1,45 @@ ---ダイナソーイング -function c27143874.initial_effect(c) - --indes - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - c:RegisterEffect(e1) - --atk/def up - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(27143874,0)) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_BE_BATTLE_TARGET) - e2:SetOperation(c27143874.operation) - c:RegisterEffect(e2) - --atk clear - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(27143874,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_BATTLED) - e3:SetCondition(c27143874.retcon) - e3:SetOperation(c27143874.retop) - c:RegisterEffect(e3) -end -function c27143874.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - end -end -function c27143874.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker()==e:GetHandler() -end -function c27143874.retop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():ResetEffect(RESET_DISABLE,RESET_EVENT) -end +--ダイナソーイング +function c27143874.initial_effect(c) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + c:RegisterEffect(e1) + --atk/def up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(27143874,0)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetOperation(c27143874.operation) + c:RegisterEffect(e2) + --atk clear + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(27143874,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLED) + e3:SetCondition(c27143874.retcon) + e3:SetOperation(c27143874.retop) + c:RegisterEffect(e3) +end +function c27143874.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end +function c27143874.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler() +end +function c27143874.retop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():ResetEffect(RESET_DISABLE,RESET_EVENT) +end diff --git a/script/c27174286.lua b/script/c27174286.lua index 4539158f..41623d4c 100644 --- a/script/c27174286.lua +++ b/script/c27174286.lua @@ -23,10 +23,11 @@ function c27174286.tg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_REMOVED) end function c27174286.op(e,tp,eg,ep,ev,re,r,rp) - local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft1<=0 then return end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c27174286.filter,tp,LOCATION_REMOVED,0,ft1,ft1,nil,e,tp) + local g=Duel.SelectMatchingCard(tp,c27174286.filter,tp,LOCATION_REMOVED,0,ft,ft,nil,e,tp) if g:GetCount()>0 then local fid=e:GetHandler():GetFieldID() local tc=g:GetFirst() diff --git a/script/c27207573.lua b/script/c27207573.lua index 85cc8496..3bdc189c 100644 --- a/script/c27207573.lua +++ b/script/c27207573.lua @@ -1,47 +1,47 @@ ---侵略の手段 -function c27207573.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(c27207573.condition) - e1:SetCost(c27207573.cost) - e1:SetTarget(c27207573.target) - e1:SetOperation(c27207573.activate) - c:RegisterEffect(e1) -end -function c27207573.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c27207573.cfilter(c) - return c:IsSetCard(0x100a) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() -end -function c27207573.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c27207573.cfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c27207573.cfilter,tp,LOCATION_DECK,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c27207573.filter(c) - return c:IsFaceup() and c:IsSetCard(0x100a) -end -function c27207573.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c27207573.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c27207573.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c27207573.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c27207573.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(800) - tc:RegisterEffect(e1) - end -end +--侵略の手段 +function c27207573.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(c27207573.condition) + e1:SetCost(c27207573.cost) + e1:SetTarget(c27207573.target) + e1:SetOperation(c27207573.activate) + c:RegisterEffect(e1) +end +function c27207573.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c27207573.cfilter(c) + return c:IsSetCard(0x100a) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c27207573.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c27207573.cfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c27207573.cfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c27207573.filter(c) + return c:IsFaceup() and c:IsSetCard(0x100a) +end +function c27207573.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c27207573.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c27207573.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c27207573.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c27207573.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(800) + tc:RegisterEffect(e1) + end +end diff --git a/script/c27217742.lua b/script/c27217742.lua new file mode 100644 index 00000000..de840680 --- /dev/null +++ b/script/c27217742.lua @@ -0,0 +1,27 @@ +--ONiサンダー +function c27217742.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(27217742,0)) + e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c27217742.thtg) + e1:SetOperation(c27217742.thop) + c:RegisterEffect(e1) +end +function c27217742.thfilter(c) + return c:IsRace(RACE_THUNDER) and c:IsAttribute(ATTRIBUTE_LIGHT) and c:GetLevel()==4 and not c:IsCode(27217742) and c:IsAbleToHand() +end +function c27217742.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c27217742.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c27217742.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c27217742.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c27279764.lua b/script/c27279764.lua index 6d06cd5a..c8c0a45d 100644 --- a/script/c27279764.lua +++ b/script/c27279764.lua @@ -59,9 +59,9 @@ end function c27279764.tlimit(e,c) return not c:IsSetCard(0xaa) end -function c27279764.ttcon(e,c) +function c27279764.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c27279764.ttop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,3,3) diff --git a/script/c2732323.lua b/script/c2732323.lua index b5393191..885e82d8 100644 --- a/script/c2732323.lua +++ b/script/c2732323.lua @@ -1,33 +1,33 @@ ---デコイドラゴン -function c2732323.initial_effect(c) - --change battle target - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(2732323,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_BE_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c2732323.sptg) - e1:SetOperation(c2732323.spop) - c:RegisterEffect(e1) -end -function c2732323.spfilter(c,e,tp) - return c:IsLevelAbove(7) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c2732323.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c2732323.spfilter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c2732323.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c2732323.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then - local a=Duel.GetAttacker() - if a:IsAttackable() and not a:IsImmuneToEffect(e) then - Duel.CalculateDamage(a,tc) - end - end -end +--デコイドラゴン +function c2732323.initial_effect(c) + --change battle target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2732323,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c2732323.sptg) + e1:SetOperation(c2732323.spop) + c:RegisterEffect(e1) +end +function c2732323.spfilter(c,e,tp) + return c:IsLevelAbove(7) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c2732323.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c2732323.spfilter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c2732323.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c2732323.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local a=Duel.GetAttacker() + if a:IsAttackable() and not a:IsImmuneToEffect(e) then + Duel.CalculateDamage(a,tc) + end + end +end diff --git a/script/c27337596.lua b/script/c27337596.lua index 5236ae1b..497fc54e 100644 --- a/script/c27337596.lua +++ b/script/c27337596.lua @@ -7,6 +7,7 @@ function c27337596.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(27337596,0)) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c27346636.lua b/script/c27346636.lua index 84e3e727..e35772dc 100644 --- a/script/c27346636.lua +++ b/script/c27346636.lua @@ -1,88 +1,87 @@ ---剣闘獣ヘラクレイノス -function c27346636.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,78868776,aux.FilterBoolFunction(Card.IsFusionSetCard,0x19),2,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c27346636.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(27346636,1)) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c27346636.sprcon) - e2:SetOperation(c27346636.sprop) - c:RegisterEffect(e2) - --negate - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(27346636,0)) - e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e3:SetCode(EVENT_CHAINING) - e3:SetCondition(c27346636.discon) - e3:SetCost(c27346636.discost) - e3:SetTarget(c27346636.distg) - e3:SetOperation(c27346636.disop) - c:RegisterEffect(e3) -end -function c27346636.splimit(e,se,sp,st) - return e:GetHandler():GetLocation()~=LOCATION_EXTRA -end -function c27346636.spfilter1(c,tp) - return c:IsFusionCode(78868776) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) - and Duel.IsExistingMatchingCard(c27346636.spfilter2,tp,LOCATION_MZONE,0,2,c) -end -function c27346636.spfilter2(c) - return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() -end -function c27346636.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 - and Duel.IsExistingMatchingCard(c27346636.spfilter1,tp,LOCATION_ONFIELD,0,1,nil,tp) -end -function c27346636.sprop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(27346636,2)) - local g1=Duel.SelectMatchingCard(tp,c27346636.spfilter1,tp,LOCATION_ONFIELD,0,1,1,nil,tp) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(27346636,3)) - local g2=Duel.SelectMatchingCard(tp,c27346636.spfilter2,tp,LOCATION_MZONE,0,2,2,g1:GetFirst()) - g1:Merge(g2) - local tc=g1:GetFirst() - while tc do - if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end - tc=g1:GetNext() - end - Duel.SendtoDeck(g1,nil,2,REASON_COST) -end -function c27346636.discon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) - and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c27346636.discost(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 c27346636.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c27346636.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--剣闘獣ヘラクレイノス +function c27346636.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,78868776,aux.FilterBoolFunction(Card.IsFusionSetCard,0x19),2,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c27346636.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(27346636,1)) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c27346636.sprcon) + e2:SetOperation(c27346636.sprop) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(27346636,0)) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetCode(EVENT_CHAINING) + e3:SetCondition(c27346636.discon) + e3:SetCost(c27346636.discost) + e3:SetTarget(c27346636.distg) + e3:SetOperation(c27346636.disop) + c:RegisterEffect(e3) +end +function c27346636.splimit(e,se,sp,st) + return e:GetHandler():GetLocation()~=LOCATION_EXTRA +end +function c27346636.spfilter1(c,tp) + return c:IsFusionCode(78868776) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c27346636.spfilter2,tp,LOCATION_MZONE,0,2,c) +end +function c27346636.spfilter2(c) + return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() +end +function c27346636.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 + and Duel.IsExistingMatchingCard(c27346636.spfilter1,tp,LOCATION_ONFIELD,0,1,nil,tp) +end +function c27346636.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(27346636,2)) + local g1=Duel.SelectMatchingCard(tp,c27346636.spfilter1,tp,LOCATION_ONFIELD,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(27346636,3)) + local g2=Duel.SelectMatchingCard(tp,c27346636.spfilter2,tp,LOCATION_MZONE,0,2,2,g1:GetFirst()) + g1:Merge(g2) + local tc=g1:GetFirst() + while tc do + if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end + tc=g1:GetNext() + end + Duel.SendtoDeck(g1,nil,2,REASON_COST) +end +function c27346636.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c27346636.discost(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 c27346636.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c27346636.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c27527047.lua b/script/c27527047.lua index 60b5f31a..ea4e90dd 100644 --- a/script/c27527047.lua +++ b/script/c27527047.lua @@ -5,12 +5,12 @@ function c27527047.initial_effect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e1:SetTargetRange(LOCATION_MZONE,0) e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x2f)) e1:SetValue(c27527047.tgval) c:RegisterEffect(e1) end function c27527047.tgval(e,re,rp) - local tp=e:GetHandler():GetControler() - return tp~=rp and re:GetHandler():IsType(TYPE_MONSTER) + return rp~=e:GetHandlerPlayer() and re:IsActiveType(TYPE_MONSTER) end diff --git a/script/c27541267.lua b/script/c27541267.lua index 8d43b236..656e1901 100644 --- a/script/c27541267.lua +++ b/script/c27541267.lua @@ -1,34 +1,34 @@ ---侵略の汎発感染 -function c27541267.initial_effect(c) - --immune - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c27541267.target) - e1:SetOperation(c27541267.operation) - c:RegisterEffect(e1) -end -function c27541267.filter(c) - return c:IsFaceup() and c:IsSetCard(0xa) -end -function c27541267.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c27541267.filter,tp,LOCATION_MZONE,0,1,nil) end -end -function c27541267.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c27541267.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(c27541267.efilter) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end -function c27541267.efilter(e,te) - return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) and te:GetOwner()~=e:GetOwner() -end +--侵略の汎発感染 +function c27541267.initial_effect(c) + --immune + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c27541267.target) + e1:SetOperation(c27541267.operation) + c:RegisterEffect(e1) +end +function c27541267.filter(c) + return c:IsFaceup() and c:IsSetCard(0xa) +end +function c27541267.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c27541267.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c27541267.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c27541267.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(c27541267.efilter) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c27541267.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) and te:GetOwner()~=e:GetOwner() +end diff --git a/script/c27552504.lua b/script/c27552504.lua index ed5ca8f6..dcae9b08 100644 --- a/script/c27552504.lua +++ b/script/c27552504.lua @@ -6,6 +6,7 @@ function c27552504.initial_effect(c) --to grave local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_FREE_CHAIN) diff --git a/script/c27564031.lua b/script/c27564031.lua index 962ee9be..c4625b3a 100644 --- a/script/c27564031.lua +++ b/script/c27564031.lua @@ -1,56 +1,56 @@ ---Sin World -function c27564031.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(27564031,0)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PREDRAW) - e2:SetRange(LOCATION_FZONE) - e2:SetCondition(c27564031.condition) - e2:SetTarget(c27564031.target) - e2:SetOperation(c27564031.operation) - c:RegisterEffect(e2) -end -function c27564031.condition(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 - and Duel.GetDrawCount(tp)>0 -end -function c27564031.filter(c) - return c:IsSetCard(0x23) and c:IsAbleToHand() -end -function c27564031.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c27564031.filter,tp,LOCATION_DECK,0,3,nil) end - local dt=Duel.GetDrawCount(tp) - if dt~=0 then - _replace_count=0 - _replace_max=dt - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_DRAW_COUNT) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_DRAW) - e1:SetValue(0) - Duel.RegisterEffect(e1,tp) - end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) -end -function c27564031.operation(e,tp,eg,ep,ev,re,r,rp) - _replace_count=_replace_count+1 - if _replace_count>_replace_max or not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(c27564031.filter,tp,LOCATION_DECK,0,nil) - if g:GetCount()>=3 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=g:Select(tp,3,3,nil) - Duel.ConfirmCards(1-tp,sg) - Duel.ShuffleDeck(tp) - local tg=sg:RandomSelect(1-tp,1) - Duel.SendtoHand(tg,nil,REASON_EFFECT) - end -end +--Sin World +function c27564031.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(27564031,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c27564031.condition) + e2:SetTarget(c27564031.target) + e2:SetOperation(c27564031.operation) + c:RegisterEffect(e2) +end +function c27564031.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c27564031.filter(c) + return c:IsSetCard(0x23) and c:IsAbleToHand() +end +function c27564031.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c27564031.filter,tp,LOCATION_DECK,0,3,nil) end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c27564031.operation(e,tp,eg,ep,ev,re,r,rp) + _replace_count=_replace_count+1 + if _replace_count>_replace_max or not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c27564031.filter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>=3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,3,3,nil) + Duel.ConfirmCards(1-tp,sg) + Duel.ShuffleDeck(tp) + local tg=sg:RandomSelect(1-tp,1) + Duel.SendtoHand(tg,nil,REASON_EFFECT) + end +end diff --git a/script/c27581098.lua b/script/c27581098.lua index 6a995223..e7236342 100644 --- a/script/c27581098.lua +++ b/script/c27581098.lua @@ -1,20 +1,20 @@ ---融合禁止エリア -function c27581098.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --disable spsummon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - e2:SetTarget(c27581098.splimit) - c:RegisterEffect(e2) -end -function c27581098.splimit(e,c,tp,sumtp,sumpos) - return bit.band(sumtp,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end +--融合禁止エリア +function c27581098.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --disable spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetTarget(c27581098.splimit) + c:RegisterEffect(e2) +end +function c27581098.splimit(e,c,tp,sumtp,sumpos) + return bit.band(sumtp,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end diff --git a/script/c276357.lua b/script/c276357.lua new file mode 100644 index 00000000..c4b6164c --- /dev/null +++ b/script/c276357.lua @@ -0,0 +1,85 @@ +--霊魂の円環 +function c276357.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c276357.target) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(276357,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCountLimit(1,276357) + e2:SetCondition(c276357.condition) + e2:SetCost(c276357.cost) + e2:SetOperation(c276357.activate) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(276357,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_HAND) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,276358) + e3:SetCondition(c276357.descon) + e3:SetTarget(c276357.destg) + e3:SetOperation(c276357.desop) + c:RegisterEffect(e3) +end +function c276357.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE,true) + if res and c276357.condition(e,tp,teg,tep,tev,tre,tr,trp) + and c276357.cost(e,tp,teg,tep,tev,tre,tr,trp,0) + and Duel.SelectYesNo(tp,94) then + c276357.cost(e,tp,teg,tep,tev,tre,tr,trp,1) + e:SetOperation(c276357.activate) + else + e:SetOperation(nil) + end +end +function c276357.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c276357.cfilter(c) + return c:IsType(TYPE_SPIRIT) and c:IsAbleToRemoveAsCost() +end +function c276357.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c276357.cfilter,tp,LOCATION_GRAVE,0,1,nil) + and Duel.GetFlagEffect(tp,276357)==0 end + Duel.RegisterFlagEffect(tp,276357,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c276357.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c276357.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) and Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end +function c276357.filter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) + and c:IsControler(tp) and c:IsType(TYPE_SPIRIT) +end +function c276357.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c276357.filter,1,nil,tp) +end +function c276357.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,nil,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c276357.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c27642961.lua b/script/c27642961.lua new file mode 100644 index 00000000..986deca8 --- /dev/null +++ b/script/c27642961.lua @@ -0,0 +1,105 @@ +--SPYRAL MISSION - Assault +function c27642961.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c27642961.target) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(27642961,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c27642961.drcon) + e2:SetTarget(c27642961.drtg) + e2:SetOperation(c27642961.drop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(27642961,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c27642961.spcost) + e3:SetTarget(c27642961.sptg) + e3:SetOperation(c27642961.spop) + c:RegisterEffect(e3) +end +function c27642961.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c27642961.descon) + e1:SetOperation(c27642961.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + c:SetTurnCounter(0) + c:RegisterEffect(e1) +end +function c27642961.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c27642961.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==3 then + Duel.Destroy(c,REASON_EFFECT) + end +end +function c27642961.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_EFFECT) +end +function c27642961.drcon(e,tp,eg,ep,ev,re,r,rp) + local des=eg:GetFirst() + if des:IsReason(REASON_BATTLE) then + local rc=des:GetReasonCard() + return rc and rc:IsSetCard(0xee) and rc:IsControler(tp) and rc:IsRelateToBattle() + elseif re then + local rc=re:GetHandler() + return eg:IsExists(c27642961.cfilter,1,nil,tp) + and rc and rc:IsSetCard(0xee) and rc:IsControler(tp) and re:IsActiveType(TYPE_MONSTER) + end + return false +end +function c27642961.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c27642961.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c27642961.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c27642961.spfilter(c,e,tp) + return c:IsSetCard(0xee) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c27642961.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c27642961.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c27642961.spop(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,c27642961.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 diff --git a/script/c27655513.lua b/script/c27655513.lua index 20e43041..a4ade20b 100644 --- a/script/c27655513.lua +++ b/script/c27655513.lua @@ -1,31 +1,31 @@ ---スクリーチ -function c27655513.initial_effect(c) - --to grave - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(27655513,0)) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetCondition(c27655513.condition) - e1:SetTarget(c27655513.target) - e1:SetOperation(c27655513.operation) - c:RegisterEffect(e1) -end -function c27655513.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_BATTLE) -end -function c27655513.filter(c) - return c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToGrave() -end -function c27655513.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,tp,LOCATION_DECK) -end -function c27655513.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c27655513.filter,tp,LOCATION_DECK,0,nil) - if g:GetCount()>1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local sg=g:Select(tp,2,2,nil) - Duel.SendtoGrave(sg,REASON_EFFECT) - end -end +--スクリーチ +function c27655513.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(27655513,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c27655513.condition) + e1:SetTarget(c27655513.target) + e1:SetOperation(c27655513.operation) + c:RegisterEffect(e1) +end +function c27655513.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_BATTLE) +end +function c27655513.filter(c) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToGrave() +end +function c27655513.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,tp,LOCATION_DECK) +end +function c27655513.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c27655513.filter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=g:Select(tp,2,2,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + end +end diff --git a/script/c27660735.lua b/script/c27660735.lua index 557bfafb..e7d27434 100644 --- a/script/c27660735.lua +++ b/script/c27660735.lua @@ -1,37 +1,37 @@ ---SR三つ目のダイス -function c27660735.initial_effect(c) - --disable attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(27660735,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_ATTACK) - e1:SetRange(LOCATION_GRAVE) - e1:SetCondition(c27660735.condition) - e1:SetCost(c27660735.cost) - e1:SetOperation(c27660735.operation) - c:RegisterEffect(e1) -end -function c27660735.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and (Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE)) -end -function c27660735.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c27660735.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetAttacker() then Duel.NegateAttack() - else - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetOperation(c27660735.disop) - Duel.RegisterEffect(e1,tp) - end -end -function c27660735.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,27660735) - Duel.NegateAttack() -end +--SR三つ目のダイス +function c27660735.initial_effect(c) + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(27660735,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_ATTACK) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c27660735.condition) + e1:SetCost(c27660735.cost) + e1:SetOperation(c27660735.operation) + c:RegisterEffect(e1) +end +function c27660735.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and (Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE)) +end +function c27660735.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c27660735.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttacker() then Duel.NegateAttack() + else + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c27660735.disop) + Duel.RegisterEffect(e1,tp) + end +end +function c27660735.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,27660735) + Duel.NegateAttack() +end diff --git a/script/c2766877.lua b/script/c2766877.lua index b4533890..40c08759 100644 --- a/script/c2766877.lua +++ b/script/c2766877.lua @@ -6,7 +6,7 @@ function c2766877.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(2766877,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c27750191.lua b/script/c27750191.lua new file mode 100644 index 00000000..7e0d213a --- /dev/null +++ b/script/c27750191.lua @@ -0,0 +1,40 @@ +--横綱犬 +function c27750191.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(27750191,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c27750191.sumtg) + e1:SetOperation(c27750191.sumop) + c:RegisterEffect(e1) +end +function c27750191.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c27750191.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c27750191.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c27750191.sumop(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,aux.NecroValleyFilter(c27750191.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c27756115.lua b/script/c27756115.lua index bd8099f9..ae3991f7 100644 --- a/script/c27756115.lua +++ b/script/c27756115.lua @@ -1,87 +1,87 @@ ---超重武者装留マカルガエシ -function c27756115.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(27756115,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_HAND+LOCATION_MZONE) - e1:SetTarget(c27756115.eqtg) - e1:SetOperation(c27756115.eqop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(27756115,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetRange(LOCATION_HAND) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCost(c27756115.spcost) - e2:SetTarget(c27756115.sptg) - e2:SetOperation(c27756115.spop) - c:RegisterEffect(e2) -end -function c27756115.filter(c) - return c:IsFaceup() and c:IsSetCard(0x9a) -end -function c27756115.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c27756115.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c27756115.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c27756115.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) -end -function c27756115.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c27756115.eqlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) - e2:SetCountLimit(1) - e2:SetValue(c27756115.valcon) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) -end -function c27756115.eqlimit(e,c) - return c:IsSetCard(0x9a) -end -function c27756115.valcon(e,re,r,rp) - return bit.band(r,REASON_EFFECT)~=0 -end -function c27756115.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c27756115.cfilter(c,e,tp) - return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) - and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_DEFENSE) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) -end -function c27756115.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and eg:IsExists(c27756115.cfilter,1,nil,e,tp) end - local g=eg:Filter(c27756115.cfilter,nil,e,tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c27756115.spop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) - end -end +--超重武者装留マカルガエシ +function c27756115.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(27756115,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c27756115.eqtg) + e1:SetOperation(c27756115.eqop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(27756115,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCost(c27756115.spcost) + e2:SetTarget(c27756115.sptg) + e2:SetOperation(c27756115.spop) + c:RegisterEffect(e2) +end +function c27756115.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9a) +end +function c27756115.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c27756115.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c27756115.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c27756115.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c27756115.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c27756115.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetCountLimit(1) + e2:SetValue(c27756115.valcon) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c27756115.eqlimit(e,c) + return c:IsSetCard(0x9a) +end +function c27756115.valcon(e,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c27756115.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c27756115.cfilter(c,e,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) + and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_DEFENSE) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) +end +function c27756115.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and eg:IsExists(c27756115.cfilter,1,nil,e,tp) end + local g=eg:Filter(c27756115.cfilter,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c27756115.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c27770341.lua b/script/c27770341.lua index 6c7a8536..1a783f5f 100644 --- a/script/c27770341.lua +++ b/script/c27770341.lua @@ -40,7 +40,7 @@ function c27770341.addcount(e,tp,eg,ep,ev,re,r,rp) if pl==LOCATION_MZONE and tc:GetPreviousRaceOnField()==RACE_DRAGON then local p=tc:GetReasonPlayer() c27770341[p]=c27770341[p]+1 - elseif pl==LOCATION_HAND and tc:GetOriginalRace()==RACE_DRAGON then + elseif pl==LOCATION_HAND and tc:IsType(TYPE_MONSTER) and tc:GetOriginalRace()==RACE_DRAGON then local p=tc:GetPreviousControler() c27770341[p]=c27770341[p]+1 end diff --git a/script/c27780618.lua b/script/c27780618.lua new file mode 100644 index 00000000..51160c8c --- /dev/null +++ b/script/c27780618.lua @@ -0,0 +1,66 @@ +--V・HEROヴァイオン +function c27780618.initial_effect(c) + --Tograve + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(27780618,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,27780618) + e1:SetTarget(c27780618.tgtg) + e1:SetOperation(c27780618.tgop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --Search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(27780618,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c27780618.thcost) + e3:SetTarget(c27780618.thtg) + e3:SetOperation(c27780618.thop) + c:RegisterEffect(e3) +end +function c27780618.tgfilter(c) + return c:IsSetCard(0x8) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c27780618.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c27780618.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c27780618.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c27780618.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c27780618.thcfilter(c) + return c:IsSetCard(0x8) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c27780618.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c27780618.thcfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c27780618.thcfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c27780618.thfilter(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c27780618.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c27780618.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c27780618.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c27780618.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c27813661.lua b/script/c27813661.lua index c7035258..adb36b0c 100644 --- a/script/c27813661.lua +++ b/script/c27813661.lua @@ -1,59 +1,60 @@ ---天空の虹彩 -function c27813661.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cannot be target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_SZONE,0) - e2:SetTarget(c27813661.tgtg) - e2:SetValue(aux.tgoval) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(27813661,0)) - e3:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_FZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1,27813661) - e3:SetTarget(c27813661.destg) - e3:SetOperation(c27813661.desop) - c:RegisterEffect(e3) -end -function c27813661.tgtg(e,c) - return (c:IsSetCard(0x98) or c:IsSetCard(0x9f) or c:IsSetCard(0x99)) - and (c:GetSequence()==6 or c:GetSequence()==7) -end -function c27813661.desfilter(c) - return c:IsFaceup() -end -function c27813661.thfilter(c) - return c:IsSetCard(0x99) and c:IsAbleToHand() -end -function c27813661.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c27813661.desfilter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c27813661.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) - and Duel.IsExistingMatchingCard(c27813661.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c27813661.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c27813661.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c27813661.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - end -end +--天空の虹彩 +function c27813661.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_SZONE,0) + e2:SetTarget(c27813661.tgtg) + e2:SetValue(aux.tgoval) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(27813661,0)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_FZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1,27813661) + e3:SetTarget(c27813661.destg) + e3:SetOperation(c27813661.desop) + c:RegisterEffect(e3) +end +function c27813661.tgtg(e,c) + return (c:IsSetCard(0x98) or c:IsSetCard(0x9f) or c:IsSetCard(0x99)) + and (c:GetSequence()==6 or c:GetSequence()==7) +end +function c27813661.desfilter(c) + return c:IsFaceup() +end +function c27813661.thfilter(c) + return c:IsSetCard(0x99) and c:IsAbleToHand() +end +function c27813661.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c27813661.desfilter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c27813661.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(c27813661.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c27813661.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c27813661.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c27813661.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c27847700.lua b/script/c27847700.lua new file mode 100644 index 00000000..06e871a4 --- /dev/null +++ b/script/c27847700.lua @@ -0,0 +1,69 @@ +--融合 +function c27847700.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c27847700.target) + e1:SetOperation(c27847700.activate) + c:RegisterEffect(e1) +end +function c27847700.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c27847700.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c27847700.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c27847700.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c27847700.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c27847700.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c27847700.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c27847700.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c27847700.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c27863269.lua b/script/c27863269.lua index c42d6f2b..556deef3 100644 --- a/script/c27863269.lua +++ b/script/c27863269.lua @@ -1,14 +1,6 @@ --ロケット・パイルダー function c27863269.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(c27863269.target) - e1:SetOperation(c27863269.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --indes local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -16,13 +8,6 @@ function c27863269.initial_effect(c) e2:SetCondition(c27863269.indcon) e2:SetValue(1) c:RegisterEffect(e2) - --Equip limit - local e3=Effect.CreateEffect(c) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_EQUIP_LIMIT) - e3:SetValue(1) - c:RegisterEffect(e3) --atkdown local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(27863269,0)) @@ -34,19 +19,6 @@ function c27863269.initial_effect(c) e4:SetOperation(c27863269.atkop) c:RegisterEffect(e4) end -function c27863269.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 c27863269.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 c27863269.indcon(e) return Duel.GetAttacker()==e:GetHandler():GetEquipTarget() end diff --git a/script/c27873305.lua b/script/c27873305.lua index 05fabd1e..9325b364 100644 --- a/script/c27873305.lua +++ b/script/c27873305.lua @@ -1,73 +1,73 @@ ---DDD怒濤壊薙王カエサル・ラグナロク -function c27873305.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10af),2,true) - --tohand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c27873305.condition) - e1:SetTarget(c27873305.target) - e1:SetOperation(c27873305.operation) - c:RegisterEffect(e1) -end -function c27873305.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) -end -function c27873305.thfilter(c) - return c:IsFaceup() and (c:IsSetCard(0xaf) or c:IsSetCard(0xae)) and c:IsAbleToHand() -end -function c27873305.eqfilter(c) - return c:IsFaceup() and c:IsAbleToChangeControler() -end -function c27873305.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c27873305.thfilter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c27873305.thfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) - and Duel.IsExistingMatchingCard(c27873305.eqfilter,tp,0,LOCATION_MZONE,1,e:GetHandler():GetBattleTarget()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g1=Duel.SelectTarget(tp,c27873305.thfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g1,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,1-tp,LOCATION_MZONE) -end -function c27873305.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 then - Duel.ConfirmCards(1-tp,tc) - local bc=c:GetBattleTarget() - if c:IsFaceup() and c:IsRelateToEffect(e) and bc:IsRelateToBattle() then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c27873305.eqfilter,tp,0,LOCATION_MZONE,1,1,bc) - local ec=g:GetFirst() - if not ec then return end - local atk=ec:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,ec,c,false) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c27873305.eqlimit) - ec:RegisterEffect(e1) - if atk>0 then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - ec:RegisterEffect(e2) - end - end - end -end -function c27873305.eqlimit(e,c) - return e:GetOwner()==c -end +--DDD怒濤壊薙王カエサル・ラグナロク +function c27873305.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10af),2,true) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c27873305.condition) + e1:SetTarget(c27873305.target) + e1:SetOperation(c27873305.operation) + c:RegisterEffect(e1) +end +function c27873305.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) +end +function c27873305.thfilter(c) + return c:IsFaceup() and (c:IsSetCard(0xaf) or c:IsSetCard(0xae)) and c:IsAbleToHand() +end +function c27873305.eqfilter(c) + return c:IsFaceup() and c:IsAbleToChangeControler() +end +function c27873305.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c27873305.thfilter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c27873305.thfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(c27873305.eqfilter,tp,0,LOCATION_MZONE,1,e:GetHandler():GetBattleTarget()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g1=Duel.SelectTarget(tp,c27873305.thfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g1,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,1-tp,LOCATION_MZONE) +end +function c27873305.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 then + Duel.ConfirmCards(1-tp,tc) + local bc=c:GetBattleTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and bc:IsRelateToBattle() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectMatchingCard(tp,c27873305.eqfilter,tp,0,LOCATION_MZONE,1,1,bc) + local ec=g:GetFirst() + if not ec then return end + local atk=ec:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,ec,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c27873305.eqlimit) + ec:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + ec:RegisterEffect(e2) + end + end + end +end +function c27873305.eqlimit(e,c) + return e:GetOwner()==c +end diff --git a/script/c27911549.lua b/script/c27911549.lua index 78a18f36..1e5362bb 100644 --- a/script/c27911549.lua +++ b/script/c27911549.lua @@ -52,8 +52,9 @@ function c27911549.spop(e,tp,eg,ep,ev,re,r,rp) e1:SetValue(RACE_INSECT) e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) - else - Duel.Destroy(c,REASON_RULE) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) end end end diff --git a/script/c27918963.lua b/script/c27918963.lua index d985596e..ca5c1855 100644 --- a/script/c27918963.lua +++ b/script/c27918963.lua @@ -1,93 +1,93 @@ ---修験の妖社 -function c27918963.initial_effect(c) - c:EnableCounterPermit(0x33) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c27918963.ctcon) - e2:SetOperation(c27918963.ctop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --counter - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(27918963,0)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_SZONE) - e4:SetCountLimit(1,27918963) - e4:SetTarget(c27918963.target) - e4:SetOperation(c27918963.operation) - c:RegisterEffect(e4) -end -function c27918963.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb3) -end -function c27918963.ctcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c27918963.cfilter,1,nil) -end -function c27918963.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x33,1) -end -function c27918963.filter1(c) - return c:IsFaceup() and c:IsSetCard(0xb3) -end -function c27918963.filter2(c) - return c:IsSetCard(0xb3) and c:IsAbleToHand() -end -function c27918963.target(e,tp,eg,ep,ev,re,r,rp,chk) - local b1=e:GetHandler():IsCanRemoveCounter(tp,0x33,1,REASON_COST) - and Duel.IsExistingMatchingCard(c27918963.filter1,tp,LOCATION_MZONE,0,1,nil) - local b2=e:GetHandler():IsCanRemoveCounter(tp,0x33,3,REASON_COST) - and Duel.IsExistingMatchingCard(c27918963.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) - if chk==0 then return b1 or b2 end - local op=0 - if b1 and b2 then - op=Duel.SelectOption(tp,aux.Stringid(27918963,1),aux.Stringid(27918963,2)) - elseif b1 then - op=Duel.SelectOption(tp,aux.Stringid(27918963,1)) - else - op=Duel.SelectOption(tp,aux.Stringid(27918963,2))+1 - end - e:SetLabel(op) - if op==0 then - e:SetCategory(CATEGORY_ATKCHANGE) - e:GetHandler():RemoveCounter(tp,0x33,1,REASON_COST) - else - e:SetCategory(CATEGORY_TOHAND) - e:GetHandler():RemoveCounter(tp,0x33,3,REASON_COST) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) - end -end -function c27918963.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if e:GetLabel()==0 then - local g=Duel.GetMatchingGroup(c27918963.filter1,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(300) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c27918963.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - end -end +--修験の妖社 +function c27918963.initial_effect(c) + c:EnableCounterPermit(0x33) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c27918963.ctcon) + e2:SetOperation(c27918963.ctop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --counter + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(27918963,0)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1,27918963) + e4:SetTarget(c27918963.target) + e4:SetOperation(c27918963.operation) + c:RegisterEffect(e4) +end +function c27918963.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb3) +end +function c27918963.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c27918963.cfilter,1,nil) +end +function c27918963.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x33,1) +end +function c27918963.filter1(c) + return c:IsFaceup() and c:IsSetCard(0xb3) +end +function c27918963.filter2(c) + return c:IsSetCard(0xb3) and c:IsAbleToHand() +end +function c27918963.target(e,tp,eg,ep,ev,re,r,rp,chk) + local b1=e:GetHandler():IsCanRemoveCounter(tp,0x33,1,REASON_COST) + and Duel.IsExistingMatchingCard(c27918963.filter1,tp,LOCATION_MZONE,0,1,nil) + local b2=e:GetHandler():IsCanRemoveCounter(tp,0x33,3,REASON_COST) + and Duel.IsExistingMatchingCard(c27918963.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) + if chk==0 then return b1 or b2 end + local op=0 + if b1 and b2 then + op=Duel.SelectOption(tp,aux.Stringid(27918963,1),aux.Stringid(27918963,2)) + elseif b1 then + op=Duel.SelectOption(tp,aux.Stringid(27918963,1)) + else + op=Duel.SelectOption(tp,aux.Stringid(27918963,2))+1 + end + e:SetLabel(op) + if op==0 then + e:SetCategory(CATEGORY_ATKCHANGE) + e:GetHandler():RemoveCounter(tp,0x33,1,REASON_COST) + else + e:SetCategory(CATEGORY_TOHAND) + e:GetHandler():RemoveCounter(tp,0x33,3,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) + end +end +function c27918963.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if e:GetLabel()==0 then + local g=Duel.GetMatchingGroup(c27918963.filter1,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c27918963.filter2),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c27967615.lua b/script/c27967615.lua index 42158365..ee34af0c 100644 --- a/script/c27967615.lua +++ b/script/c27967615.lua @@ -1,5 +1,6 @@ --フュージョン・ウェポン function c27967615.initial_effect(c) + aux.AddFusionProcedure(c,nil,c27967615.filter) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_EQUIP) @@ -29,22 +30,6 @@ function c27967615.initial_effect(c) e4:SetValue(c27967615.eqlimit) c:RegisterEffect(e4) end -function c27967615.eqlimit(e,c) - return c:IsType(TYPE_FUSION) and c:IsLevelBelow(6) -end function c27967615.filter(c) - return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsLevelBelow(6) -end -function c27967615.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c27967615.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c27967615.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c27967615.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c27967615.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 + return c:IsType(TYPE_FUSION) and c:IsLevelBelow(6) end diff --git a/script/c27970830.lua b/script/c27970830.lua index 28289106..f098d87a 100644 --- a/script/c27970830.lua +++ b/script/c27970830.lua @@ -99,8 +99,8 @@ end function c27970830.op2(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c27970830.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c27970830.filter2),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c27971137.lua b/script/c27971137.lua index c23d9686..f39b414c 100644 --- a/script/c27971137.lua +++ b/script/c27971137.lua @@ -1,84 +1,84 @@ ---腐乱犬 -function c27971137.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c27971137.atkop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(27971137,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c27971137.spcon) - e2:SetTarget(c27971137.sptg) - e2:SetOperation(c27971137.spop) - c:RegisterEffect(e2) -end -function c27971137.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(500) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c27971137.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) -end -function c27971137.filter(c,e,tp) - return c:GetLevel()==1 and (c:GetAttack()==0 and c:GetDefense()==0) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c27971137.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c27971137.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c27971137.spop(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,c27971137.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(27971137,RESET_EVENT+0x1fe0000,0,1) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - local de=Effect.CreateEffect(e:GetHandler()) - de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - de:SetCode(EVENT_PHASE+PHASE_END) - de:SetCountLimit(1) - de:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - de:SetLabelObject(tc) - de:SetCondition(c27971137.descon) - de:SetOperation(c27971137.desop) - if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END then - de:SetLabel(Duel.GetTurnCount()) - de:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - de:SetLabel(0) - de:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) - end - Duel.RegisterEffect(de,tp) - end -end -function c27971137.descon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() and tc:GetFlagEffect(27971137)~=0 -end -function c27971137.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.Destroy(tc,REASON_EFFECT) -end +--腐乱犬 +function c27971137.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c27971137.atkop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(27971137,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c27971137.spcon) + e2:SetTarget(c27971137.sptg) + e2:SetOperation(c27971137.spop) + c:RegisterEffect(e2) +end +function c27971137.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c27971137.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c27971137.filter(c,e,tp) + return c:GetLevel()==1 and (c:GetAttack()==0 and c:GetDefense()==0) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c27971137.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c27971137.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c27971137.spop(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,c27971137.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(27971137,RESET_EVENT+0x1fe0000,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local de=Effect.CreateEffect(e:GetHandler()) + de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + de:SetCode(EVENT_PHASE+PHASE_END) + de:SetCountLimit(1) + de:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + de:SetLabelObject(tc) + de:SetCondition(c27971137.descon) + de:SetOperation(c27971137.desop) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END then + de:SetLabel(Duel.GetTurnCount()) + de:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + de:SetLabel(0) + de:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + Duel.RegisterEffect(de,tp) + end +end +function c27971137.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() and tc:GetFlagEffect(27971137)~=0 +end +function c27971137.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c27978707.lua b/script/c27978707.lua index f8d5549a..a0a3ca9e 100644 --- a/script/c27978707.lua +++ b/script/c27978707.lua @@ -66,8 +66,7 @@ function c27978707.negtg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c27978707.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c27995943.lua b/script/c27995943.lua index e646e271..7b6f8b35 100644 --- a/script/c27995943.lua +++ b/script/c27995943.lua @@ -1,43 +1,43 @@ ---Dr.フランゲ -function c27995943.initial_effect(c) - --tohand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,27995943) - e1:SetCost(c27995943.cost) - e1:SetTarget(c27995943.target) - e1:SetOperation(c27995943.operation) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c27995943.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 c27995943.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 end -end -function c27995943.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetDecktopGroup(tp,1) - Duel.ConfirmCards(tp,g) - if not g:GetFirst():IsAbleToHand() or Duel.SelectYesNo(tp,aux.Stringid(27995943,0)) then - Duel.MoveSequence(g:GetFirst(),1) - else - Duel.DisableShuffleCheck() - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - Duel.ShuffleHand(tp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetCode(EFFECT_SKIP_DP) - e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN) - Duel.RegisterEffect(e1,tp) - end -end +--Dr.フランゲ +function c27995943.initial_effect(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,27995943) + e1:SetCost(c27995943.cost) + e1:SetTarget(c27995943.target) + e1:SetOperation(c27995943.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c27995943.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 c27995943.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 end +end +function c27995943.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetDecktopGroup(tp,1) + Duel.ConfirmCards(tp,g) + if not g:GetFirst():IsAbleToHand() or Duel.SelectYesNo(tp,aux.Stringid(27995943,0)) then + Duel.MoveSequence(g:GetFirst(),1) + else + Duel.DisableShuffleCheck() + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetCode(EFFECT_SKIP_DP) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN) + Duel.RegisterEffect(e1,tp) + end +end diff --git a/script/c28016193.lua b/script/c28016193.lua index e1e32f60..37d043fa 100644 --- a/script/c28016193.lua +++ b/script/c28016193.lua @@ -36,12 +36,21 @@ function c28016193.initial_effect(c) c:RegisterEffect(e3) end function c28016193.filter(c) - return c:IsFusionSetCard(0xe1) + return (c:IsFusionSetCard(0xe1) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) +end +function c28016193.check1(c,mg,chkf) + return mg:IsExists(c28016193.check2,1,c,c,chkf) +end +function c28016193.check2(c,c2,chkf) + local g=Group.FromCards(c,c2) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + local g1=g:Filter(c28016193.filter,nil) + if chkf~=PLAYER_NONE then + return g1:FilterCount(aux.FConditionCheckF,nil,chkf)~=0 and g1:GetCount()>=2 + else return g1:GetCount()>=2 end end function c28016193.fscon(e,g,gc,chkfnf) if g==nil then return true end - local f=c28016193.filter - local cc=2 local chkf=bit.band(chkfnf,0xff) local tp=e:GetHandlerPlayer() local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536) @@ -51,17 +60,13 @@ function c28016193.fscon(e,g,gc,chkfnf) fc=fg:GetNext() end local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) - if gc then - if not gc:IsCanBeFusionMaterial(e:GetHandler(),true) then return false end - return f(gc) and mg:IsExists(f,cc-1,gc) end - local g1=mg:Filter(f,nil) - if chkf~=PLAYER_NONE then - return g1:FilterCount(Card.IsOnField,nil)~=0 and g1:GetCount()>=cc - else return g1:GetCount()>=cc end + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler(),true) then return false end + return c28016193.check1(gc,mg,chkf) end + return mg:IsExists(c28016193.check1,1,nil,mg,chkf) +end function c28016193.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) - local f=c28016193.filter - local cc=2 local chkf=bit.band(chkfnf,0xff) local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536) local fc=fg:GetFirst() @@ -70,26 +75,26 @@ function c28016193.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) fc=fg:GetNext() end local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) - if gc then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=g:FilterSelect(tp,f,cc-1,cc-1,gc) - Duel.SetFusionMaterial(g1) - return + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if g:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end end - local sg=g:Filter(f,nil) - if chkf==PLAYER_NONE or sg:GetCount()==cc then + if gc then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=sg:Select(tp,cc,cc,nil) + local g1=g:FilterSelect(p,c28016193.check2,1,1,gc,gc,chkf) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) - if cc>1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g2=sg:Select(tp,cc-1,cc-1,g1:GetFirst()) - g1:Merge(g2) - end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,c28016193.check1,1,1,nil,g,chkf) + local tc1=g1:GetFirst() + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=g:FilterSelect(p,c28016193.check2,1,1,tc1,tc1,chkf) + g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end function c28016193.damcon(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c28039390.lua b/script/c28039390.lua new file mode 100644 index 00000000..0e1b541d --- /dev/null +++ b/script/c28039390.lua @@ -0,0 +1,62 @@ +--デストーイ・リニッチ +function c28039390.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(28039390,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c28039390.target) + e1:SetOperation(c28039390.activate) + c:RegisterEffect(e1) + --tograve + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(28039390,1)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(aux.exccon) + e2:SetCost(c28039390.tgcost) + e2:SetTarget(c28039390.tgtg) + e2:SetOperation(c28039390.tgop) + c:RegisterEffect(e2) +end +function c28039390.filter(c,e,tp) + return c:IsSetCard(0xad) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c28039390.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c28039390.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c28039390.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c28039390.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c28039390.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c28039390.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c28039390.tgfilter(c) + return c:IsFaceup() and (c:IsSetCard(0xa9) or c:IsSetCard(0xad)) and c:IsType(TYPE_MONSTER) +end +function c28039390.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c28039390.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c28039390.tgfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=Duel.SelectTarget(tp,c28039390.tgfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,sg,1,0,0) +end +function c28039390.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) + end +end diff --git a/script/c28106077.lua b/script/c28106077.lua index 1c478a76..8f51df21 100644 --- a/script/c28106077.lua +++ b/script/c28106077.lua @@ -1,14 +1,6 @@ --ダグラの剣 function c28106077.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(c28106077.target) - e1:SetOperation(c28106077.operation) - c:RegisterEffect(e1) + aux.AddFusionProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_FAIRY)) --recover local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) @@ -20,13 +12,6 @@ function c28106077.initial_effect(c) e2:SetTarget(c28106077.rectg) e2:SetOperation(c28106077.recop) 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(c28106077.eqlimit) - c:RegisterEffect(e3) --Atk up local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP) @@ -34,26 +19,6 @@ function c28106077.initial_effect(c) e4:SetValue(500) c:RegisterEffect(e4) end -function c28106077.eqlimit(e,c) - return c:IsRace(RACE_FAIRY) -end -function c28106077.filter(c) - return c:IsFaceup() and c:IsRace(RACE_FAIRY) -end -function c28106077.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c28106077.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c28106077.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c28106077.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c28106077.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 c28106077.reccon(e,tp,eg,ep,ev,re,r,rp) local ec=e:GetHandler():GetEquipTarget() return ec and eg:IsContains(ec) and ep~=tp diff --git a/script/c2810642.lua b/script/c2810642.lua index 44cd3c40..edbda4dc 100644 --- a/script/c2810642.lua +++ b/script/c2810642.lua @@ -1,88 +1,88 @@ ---PSYフレームギア・β -function c2810642.initial_effect(c) - c:EnableUnsummonable() - --splimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c2810642.splimit) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(2810642,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_HAND) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetCondition(c2810642.condition) - e2:SetTarget(c2810642.target) - e2:SetOperation(c2810642.operation) - c:RegisterEffect(e2) -end -function c2810642.splimit(e,se,sp,st) - return se:IsHasType(EFFECT_TYPE_ACTIONS) -end -function c2810642.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetAttacker():GetControler()~=tp -end -function c2810642.spfilter(c,e,tp) - return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c2810642.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.GetAttacker():IsRelateToBattle() - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c2810642.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetTargetCard(Duel.GetAttacker()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttacker(),1,0,0) -end -function c2810642.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c2810642.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:FilterCount(aux.nvfilter,nil)==0 then return end - local tc=g:GetFirst() - local c=e:GetHandler() - local fid=c:GetFieldID() - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(2810642,RESET_EVENT+0x1fe0000,0,1,fid) - c:RegisterFlagEffect(2810642,RESET_EVENT+0x1fe0000,0,1,fid) - Duel.SpecialSummonComplete() - g:AddCard(c) - g:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(g) - e1:SetCondition(c2810642.rmcon) - e1:SetOperation(c2810642.rmop) - Duel.RegisterEffect(e1,tp) - local dc=Duel.GetFirstTarget() - if dc:IsRelateToEffect(e) and Duel.Destroy(dc,REASON_EFFECT)~=0 then - Duel.BreakEffect() - Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) - end -end -function c2810642.rmfilter(c,fid) - return c:GetFlagEffectLabel(2810642)==fid -end -function c2810642.rmcon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c2810642.rmfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c2810642.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c2810642.rmfilter,nil,e:GetLabel()) - Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) -end +--PSYフレームギア・β +function c2810642.initial_effect(c) + c:EnableUnsummonable() + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c2810642.splimit) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(2810642,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCondition(c2810642.condition) + e2:SetTarget(c2810642.target) + e2:SetOperation(c2810642.operation) + c:RegisterEffect(e2) +end +function c2810642.splimit(e,se,sp,st) + return se:IsHasType(EFFECT_TYPE_ACTIONS) +end +function c2810642.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetAttacker():GetControler()~=tp +end +function c2810642.spfilter(c,e,tp) + return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c2810642.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.GetAttacker():IsRelateToBattle() + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c2810642.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetTargetCard(Duel.GetAttacker()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttacker(),1,0,0) +end +function c2810642.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c2810642.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local tc=g:GetFirst() + local c=e:GetHandler() + local fid=c:GetFieldID() + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(2810642,RESET_EVENT+0x1fe0000,0,1,fid) + c:RegisterFlagEffect(2810642,RESET_EVENT+0x1fe0000,0,1,fid) + Duel.SpecialSummonComplete() + g:AddCard(c) + g:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c2810642.rmcon) + e1:SetOperation(c2810642.rmop) + Duel.RegisterEffect(e1,tp) + local dc=Duel.GetFirstTarget() + if dc:IsRelateToEffect(e) and Duel.Destroy(dc,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end +function c2810642.rmfilter(c,fid) + return c:GetFlagEffectLabel(2810642)==fid +end +function c2810642.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c2810642.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c2810642.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c2810642.rmfilter,nil,e:GetLabel()) + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c28120197.lua b/script/c28120197.lua index 32e66b39..4724919c 100644 --- a/script/c28120197.lua +++ b/script/c28120197.lua @@ -1,22 +1,22 @@ ---断層地帯 -function c28120197.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --damage amp - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e2:SetCondition(c28120197.dcon) - e2:SetOperation(c28120197.dop) - c:RegisterEffect(e2) -end -function c28120197.dcon(e,tp,eg,ep,ev,re,r,rp) - return eg:GetFirst():IsDefensePos() and eg:GetFirst():IsRace(RACE_ROCK) -end -function c28120197.dop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev*2) -end +--断層地帯 +function c28120197.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage amp + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c28120197.dcon) + e2:SetOperation(c28120197.dop) + c:RegisterEffect(e2) +end +function c28120197.dcon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsDefensePos() and eg:GetFirst():IsRace(RACE_ROCK) +end +function c28120197.dop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end diff --git a/script/c28124263.lua b/script/c28124263.lua index 1968291c..4c424037 100644 --- a/script/c28124263.lua +++ b/script/c28124263.lua @@ -22,6 +22,7 @@ function c28124263.initial_effect(c) e3:SetType(EFFECT_TYPE_FIELD) e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCondition(c28124263.cond) e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x26)) @@ -48,8 +49,7 @@ end function c28124263.opa(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,c28124263.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c28124263.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end function c28124263.cond(e) diff --git a/script/c28150174.lua b/script/c28150174.lua index 0cbd1169..71f75195 100644 --- a/script/c28150174.lua +++ b/script/c28150174.lua @@ -7,7 +7,7 @@ function c28150174.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(28150174,0)) e1:SetCategory(CATEGORY_POSITION+CATEGORY_ATKCHANGE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c28151978.lua b/script/c28151978.lua new file mode 100644 index 00000000..ea00a9c7 --- /dev/null +++ b/script/c28151978.lua @@ -0,0 +1,77 @@ +--SRドミノバタフライ +function c28151978.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetRange(LOCATION_PZONE) + e1:SetTargetRange(1,0) + e1:SetTarget(c28151978.splimit) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(28151978,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1,28151978) + e2:SetCost(c28151978.thcost) + e2:SetTarget(c28151978.thtg) + e2:SetOperation(c28151978.thop) + c:RegisterEffect(e2) + --synchro limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e3:SetValue(c28151978.synlimit) + c:RegisterEffect(e3) + --synchro material + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e4:SetValue(LOCATION_REMOVED) + e4:SetCondition(c28151978.rmcon) + c:RegisterEffect(e4) +end +function c28151978.splimit(e,c,sump,sumtype,sumpos,targetp) + return not c:IsAttribute(ATTRIBUTE_WIND) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c28151978.cfilter(c) + return c:IsAttribute(ATTRIBUTE_WIND) and c:IsDiscardable() +end +function c28151978.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c28151978.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c28151978.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c28151978.thfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c28151978.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c28151978.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c28151978.thfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c28151978.thfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c28151978.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c28151978.synlimit(e,c) + if not c then return false end + return not c:IsAttribute(ATTRIBUTE_WIND) or not c:IsRace(RACE_DRAGON+RACE_MACHINE) +end +function c28151978.rmcon(e) + local c=e:GetHandler() + return c:GetSummonLocation()==LOCATION_EXTRA + and bit.band(c:GetReason(),REASON_MATERIAL+REASON_SYNCHRO)==REASON_MATERIAL+REASON_SYNCHRO +end diff --git a/script/c2819435.lua b/script/c2819435.lua new file mode 100644 index 00000000..22522d47 --- /dev/null +++ b/script/c2819435.lua @@ -0,0 +1,105 @@ +--幻煌の都 パシフィス +--Pacifis, City of Mythic Radiance +--Script by mercury233 +function c2819435.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c2819435.thcon) + e2:SetCost(c2819435.cost) + e2:SetTarget(c2819435.thtg) + e2:SetOperation(c2819435.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --token + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAINING) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetRange(LOCATION_FZONE) + e4:SetOperation(aux.chainreg) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_CHAIN_SOLVED) + e5:SetProperty(EFFECT_FLAG_DELAY) + e5:SetRange(LOCATION_FZONE) + e5:SetCondition(c2819435.spcon) + e5:SetCost(c2819435.cost) + e5:SetTarget(c2819435.sptg) + e5:SetOperation(c2819435.spop) + c:RegisterEffect(e5) + -- + Duel.AddCustomActivityCounter(2819435,ACTIVITY_SUMMON,c2819435.counterfilter) + Duel.AddCustomActivityCounter(2819435,ACTIVITY_SPSUMMON,c2819435.counterfilter) +end +function c2819435.counterfilter(c) + return not c:IsType(TYPE_EFFECT) +end +function c2819435.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(2819435,tp,ACTIVITY_SUMMON)==0 + and Duel.GetCustomActivityCount(2819435,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c2819435.splimit) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + Duel.RegisterEffect(e2,tp) +end +function c2819435.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsType(TYPE_EFFECT) +end +function c2819435.thcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:GetSummonPlayer()==tp and tc:IsFaceup() and tc:IsType(TYPE_NORMAL) +end +function c2819435.thfilter(c) + return c:IsSetCard(0xfa) and c:IsAbleToHand() +end +function c2819435.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c2819435.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c2819435.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c2819435.spcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_MZONE,0,1,nil,TYPE_TOKEN) and e:GetHandler():GetFlagEffect(1)>0 +end +function c2819435.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,2819436,0xfa,0x4011,2000,2000,6,RACE_WYRM,ATTRIBUTE_WATER) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c2819435.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,2819436,0xfa,0x4011,2000,2000,6,RACE_WYRM,ATTRIBUTE_WATER) then return end + local token=Duel.CreateToken(tp,2819436) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c28201945.lua b/script/c28201945.lua index 39fd225b..46d992d9 100644 --- a/script/c28201945.lua +++ b/script/c28201945.lua @@ -1,63 +1,63 @@ ---カズーラの蟲惑魔 -function c28201945.initial_effect(c) - --immune - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetValue(c28201945.efilter) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(aux.chainreg) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(28201945,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_CHAIN_SOLVING) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,28201945) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c28201945.spcon) - e3:SetTarget(c28201945.sptg) - e3:SetOperation(c28201945.spop) - c:RegisterEffect(e3) -end -function c28201945.efilter(e,te) - local c=te:GetHandler() - return c:GetType()==TYPE_TRAP and (c:IsSetCard(0x4c) or c:IsSetCard(0x89)) -end -function c28201945.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=re:GetHandler() - return rp==tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and c:GetType()==TYPE_TRAP and (c:IsSetCard(0x4c) or c:IsSetCard(0x89)) and e:GetHandler():GetFlagEffect(1)>0 -end -function c28201945.filter(c,e,tp,ft) - return c:IsSetCard(0x108a) and c:GetCode()~=28201945 and c:IsType(TYPE_MONSTER) and (c:IsAbleToHand() or (ft>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false))) -end -function c28201945.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) - and Duel.IsExistingMatchingCard(c28201945.filter,tp,LOCATION_DECK,0,1,nil,e,tp,ft) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c28201945.spop(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c28201945.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp,ft) - local tc=g:GetFirst() - if tc then - if ft>0 and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) - and (not tc:IsAbleToHand() or Duel.SelectYesNo(tp,aux.Stringid(28201945,1))) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - else - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end - end -end +--カズーラの蟲惑魔 +function c28201945.initial_effect(c) + --immune + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c28201945.efilter) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(aux.chainreg) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(28201945,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,28201945) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c28201945.spcon) + e3:SetTarget(c28201945.sptg) + e3:SetOperation(c28201945.spop) + c:RegisterEffect(e3) +end +function c28201945.efilter(e,te) + local c=te:GetHandler() + return c:GetType()==TYPE_TRAP and (c:IsSetCard(0x4c) or c:IsSetCard(0x89)) +end +function c28201945.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=re:GetHandler() + return rp==tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and c:GetType()==TYPE_TRAP and (c:IsSetCard(0x4c) or c:IsSetCard(0x89)) and e:GetHandler():GetFlagEffect(1)>0 +end +function c28201945.filter(c,e,tp,ft) + return c:IsSetCard(0x108a) and c:GetCode()~=28201945 and c:IsType(TYPE_MONSTER) and (c:IsAbleToHand() or (ft>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false))) +end +function c28201945.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) + and Duel.IsExistingMatchingCard(c28201945.filter,tp,LOCATION_DECK,0,1,nil,e,tp,ft) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c28201945.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c28201945.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp,ft) + local tc=g:GetFirst() + if tc then + if ft>0 and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) + and (not tc:IsAbleToHand() or Duel.SelectYesNo(tp,aux.Stringid(28201945,1))) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + else + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end + end +end diff --git a/script/c28265983.lua b/script/c28265983.lua index 9604b9e8..0dcf79b5 100644 --- a/script/c28265983.lua +++ b/script/c28265983.lua @@ -1,99 +1,99 @@ ---渇きの風 -function c28265983.initial_effect(c) - --activate - local e0=Effect.CreateEffect(c) - e0:SetDescription(aux.Stringid(28265983,0)) - e0:SetType(EFFECT_TYPE_ACTIVATE) - e0:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e0) - --activate(destroy) - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(28265983,1)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_RECOVER) - e1:SetCountLimit(1,28265983) - e1:SetCondition(c28265983.descon1) - e1:SetTarget(c28265983.destg1) - e1:SetOperation(c28265983.desop1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_SZONE) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(28265983,2)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_ACTIVATE) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetCountLimit(1,28265984) - e3:SetCondition(c28265983.descon2) - e3:SetCost(c28265983.descost2) - e3:SetTarget(c28265983.destg2) - e3:SetOperation(c28265983.desop2) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetRange(LOCATION_SZONE) - c:RegisterEffect(e4) -end -function c28265983.descon1(e,tp,eg,ep,ev,re,r,rp) - return ep==tp -end -function c28265983.desfilter1(c) - return c:IsFaceup() -end -function c28265983.destg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c28265983.desfilter1(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c28265983.desfilter1,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c28265983.desop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c28265983.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xc9) -end -function c28265983.descon2(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c28265983.cfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.GetLP(tp)-Duel.GetLP(1-tp)>=3000 -end -function c28265983.descost2(e,tp,eg,ep,ev,re,r,rp,chk) - local lp=Duel.GetLP(tp)-Duel.GetLP(1-tp) - if chk==0 then return Duel.CheckLPCost(tp,lp) and Duel.GetFlagEffect(tp,28265984)==0 end - Duel.PayLPCost(tp,lp) - e:SetLabel(lp) - Duel.RegisterFlagEffect(tp,28265984,RESET_PHASE+PHASE_END,0,1) -end -function c28265983.desfilter2(c,num) - return c:IsFaceup() and c:IsAttackBelow(num) -end -function c28265983.destg2(e,tp,eg,ep,ev,re,r,rp,chk) - local lp=Duel.GetLP(tp)-Duel.GetLP(1-tp) - if chk==0 then return Duel.IsExistingMatchingCard(c28265983.desfilter2,tp,0,LOCATION_MZONE,1,nil,lp) end - local g=Duel.GetMatchingGroup(c28265983.desfilter2,tp,0,LOCATION_MZONE,nil,e:GetLabel()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c28265983.desop2(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local num=e:GetLabel() - local g=Duel.GetMatchingGroup(c28265983.desfilter2,tp,0,LOCATION_MZONE,nil,num) - if g:GetCount()==0 then return end - local dg=Group.CreateGroup() - repeat - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local tg=g:FilterSelect(tp,c28265983.desfilter2,1,1,nil,num) - local tc=tg:GetFirst() - num=num-tc:GetAttack() - g:RemoveCard(tc) - dg:AddCard(tc) - until not g:IsExists(c28265983.desfilter2,1,nil,num) or not Duel.SelectYesNo(tp,aux.Stringid(28265983,3)) - Duel.Destroy(dg,REASON_EFFECT) -end +--渇きの風 +function c28265983.initial_effect(c) + --activate + local e0=Effect.CreateEffect(c) + e0:SetDescription(aux.Stringid(28265983,0)) + e0:SetType(EFFECT_TYPE_ACTIVATE) + e0:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e0) + --activate(destroy) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(28265983,1)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_RECOVER) + e1:SetCountLimit(1,28265983) + e1:SetCondition(c28265983.descon1) + e1:SetTarget(c28265983.destg1) + e1:SetOperation(c28265983.desop1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(28265983,2)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_ACTIVATE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1,28265984) + e3:SetCondition(c28265983.descon2) + e3:SetCost(c28265983.descost2) + e3:SetTarget(c28265983.destg2) + e3:SetOperation(c28265983.desop2) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_SZONE) + c:RegisterEffect(e4) +end +function c28265983.descon1(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c28265983.desfilter1(c) + return c:IsFaceup() +end +function c28265983.destg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c28265983.desfilter1(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c28265983.desfilter1,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c28265983.desop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c28265983.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc9) +end +function c28265983.descon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c28265983.cfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.GetLP(tp)-Duel.GetLP(1-tp)>=3000 +end +function c28265983.descost2(e,tp,eg,ep,ev,re,r,rp,chk) + local lp=Duel.GetLP(tp)-Duel.GetLP(1-tp) + if chk==0 then return Duel.CheckLPCost(tp,lp) and Duel.GetFlagEffect(tp,28265984)==0 end + Duel.PayLPCost(tp,lp) + e:SetLabel(lp) + Duel.RegisterFlagEffect(tp,28265984,RESET_PHASE+PHASE_END,0,1) +end +function c28265983.desfilter2(c,num) + return c:IsFaceup() and c:IsAttackBelow(num) +end +function c28265983.destg2(e,tp,eg,ep,ev,re,r,rp,chk) + local lp=Duel.GetLP(tp)-Duel.GetLP(1-tp) + if chk==0 then return Duel.IsExistingMatchingCard(c28265983.desfilter2,tp,0,LOCATION_MZONE,1,nil,lp) end + local g=Duel.GetMatchingGroup(c28265983.desfilter2,tp,0,LOCATION_MZONE,nil,e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c28265983.desop2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local num=e:GetLabel() + local g=Duel.GetMatchingGroup(c28265983.desfilter2,tp,0,LOCATION_MZONE,nil,num) + if g:GetCount()==0 then return end + local dg=Group.CreateGroup() + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local tg=g:FilterSelect(tp,c28265983.desfilter2,1,1,nil,num) + local tc=tg:GetFirst() + num=num-tc:GetAttack() + g:RemoveCard(tc) + dg:AddCard(tc) + until not g:IsExists(c28265983.desfilter2,1,nil,num) or not Duel.SelectYesNo(tp,aux.Stringid(28265983,3)) + Duel.Destroy(dg,REASON_EFFECT) +end diff --git a/script/c28290705.lua b/script/c28290705.lua index a14160d2..22f1ec0e 100644 --- a/script/c28290705.lua +++ b/script/c28290705.lua @@ -7,6 +7,7 @@ function c28290705.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(28290705,0)) e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c28297833.lua b/script/c28297833.lua index 9fa12db2..88fe130e 100644 --- a/script/c28297833.lua +++ b/script/c28297833.lua @@ -27,12 +27,13 @@ function c28297833.tdop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local g=Duel.GetFieldGroup(tp,LOCATION_REMOVED,LOCATION_REMOVED) Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK) if c:IsFaceup() and c:IsRelateToEffect(e) then local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetValue(g:GetCount()*100) + e1:SetValue(ct*100) c:RegisterEffect(e1) end end diff --git a/script/c28325165.lua b/script/c28325165.lua index 00948826..689a827d 100644 --- a/script/c28325165.lua +++ b/script/c28325165.lua @@ -1,66 +1,66 @@ ---水物語-ウラシマ -function c28325165.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c28325165.condition) - e1:SetTarget(c28325165.target) - e1:SetOperation(c28325165.activate) - c:RegisterEffect(e1) -end -function c28325165.cfilter(c) - return c:IsSetCard(0xcd) and c:IsType(TYPE_MONSTER) -end -function c28325165.condition(e,tp,eg,ep,ev,re,r,rp) - return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) - and Duel.IsExistingMatchingCard(c28325165.cfilter,tp,LOCATION_GRAVE,0,1,nil) -end -function c28325165.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_TARGET) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c28325165.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_SET_ATTACK_FINAL) - e3:SetValue(100) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_SET_DEFENSE_FINAL) - tc:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetRange(LOCATION_MZONE) - e5:SetCode(EFFECT_IMMUNE_EFFECT) - e5:SetValue(c28325165.efilter) - e5:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e5) - end -end -function c28325165.efilter(e,te) - return te:GetOwnerPlayer()~=e:GetOwnerPlayer() -end +--水物語-ウラシマ +function c28325165.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c28325165.condition) + e1:SetTarget(c28325165.target) + e1:SetOperation(c28325165.activate) + c:RegisterEffect(e1) +end +function c28325165.cfilter(c) + return c:IsSetCard(0xcd) and c:IsType(TYPE_MONSTER) +end +function c28325165.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and Duel.IsExistingMatchingCard(c28325165.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c28325165.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_TARGET) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c28325165.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(100) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetValue(c28325165.efilter) + e5:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e5) + end +end +function c28325165.efilter(e,te) + return te:GetOwnerPlayer()~=e:GetOwnerPlayer() +end diff --git a/script/c28348537.lua b/script/c28348537.lua index 08000d9b..febb1430 100644 --- a/script/c28348537.lua +++ b/script/c28348537.lua @@ -20,11 +20,11 @@ end function c28348537.otfilter(c,tp) return c:IsRace(RACE_SPELLCASTER) and (c:IsControler(tp) or c:IsFaceup()) end -function c28348537.otcon(e,c) +function c28348537.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c28348537.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c28348537.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c28348537.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c28355718.lua b/script/c28355718.lua index fa4a4ca8..beb3fabc 100644 --- a/script/c28355718.lua +++ b/script/c28355718.lua @@ -15,6 +15,7 @@ function c28355718.initial_effect(c) --token local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e3:SetCode(EVENT_TO_GRAVE) e3:SetOperation(c28355718.regop) c:RegisterEffect(e3) diff --git a/script/c28369508.lua b/script/c28369508.lua new file mode 100644 index 00000000..c3369ba6 --- /dev/null +++ b/script/c28369508.lua @@ -0,0 +1,100 @@ +--Subterror Behemoth Burrowing +function c28369508.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c28369508.cost) + e1:SetOperation(c28369508.activate) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c28369508.thcon) + e2:SetTarget(c28369508.thtg) + e2:SetOperation(c28369508.thop) + c:RegisterEffect(e2) + --change pos + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(28369508,0)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetHintTiming(TIMING_BATTLE_PHASE,0x1e0+TIMING_BATTLE_PHASE) + e3:SetCost(c28369508.poscost) + e3:SetTarget(c28369508.postg) + e3:SetOperation(c28369508.posop) + c:RegisterEffect(e3) +end +function c28369508.cfilter(c) + return c:IsSetCard(0xed) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c28369508.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c28369508.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c28369508.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c28369508.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetTargetRange(LOCATION_ONFIELD,0) + e1:SetTarget(c28369508.tgfilter) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetValue(aux.tgoval) + Duel.RegisterEffect(e2,tp) +end +function c28369508.tgfilter(e,c) + return c:IsFacedown() and c:IsLocation(LOCATION_MZONE) +end +function c28369508.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c28369508.thfilter(c) + return c:IsSetCard(0xed) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c28369508.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c28369508.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c28369508.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c28369508.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c28369508.poscost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c28369508.filter(c) + return c:IsFaceup() and c:IsSetCard(0xed) and c:IsCanTurnSet() +end +function c28369508.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c28369508.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c28369508.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,c28369508.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c28369508.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c28388296.lua b/script/c28388296.lua index a316d631..39aa339e 100644 --- a/script/c28388296.lua +++ b/script/c28388296.lua @@ -1,56 +1,56 @@ ---スクラップ・ファクトリー -function c28388296.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --boost - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x24)) - e2:SetValue(200) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(28388296,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetRange(LOCATION_FZONE) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetCountLimit(1,28388296) - e4:SetCondition(c28388296.condition) - e4:SetTarget(c28388296.target) - e4:SetOperation(c28388296.operation) - c:RegisterEffect(e4) -end -function c28388296.cfilter(c,tp) - return c:IsSetCard(0x24) and c:IsType(TYPE_MONSTER) and bit.band(c:GetReason(),0x41)==0x41 - and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) -end -function c28388296.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c28388296.cfilter,1,nil,tp) -end -function c28388296.spfilter(c,e,tp) - return c:IsSetCard(0x24) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c28388296.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c28388296.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c28388296.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c28388296.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--スクラップ・ファクトリー +function c28388296.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --boost + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x24)) + e2:SetValue(200) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(28388296,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,28388296) + e4:SetCondition(c28388296.condition) + e4:SetTarget(c28388296.target) + e4:SetOperation(c28388296.operation) + c:RegisterEffect(e4) +end +function c28388296.cfilter(c,tp) + return c:IsSetCard(0x24) and c:IsType(TYPE_MONSTER) and bit.band(c:GetReason(),0x41)==0x41 + and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) +end +function c28388296.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c28388296.cfilter,1,nil,tp) +end +function c28388296.spfilter(c,e,tp) + return c:IsSetCard(0x24) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c28388296.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c28388296.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c28388296.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c28388296.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c28429121.lua b/script/c28429121.lua index 96df729b..5aff0571 100644 --- a/script/c28429121.lua +++ b/script/c28429121.lua @@ -1,68 +1,68 @@ ---リチュアに伝わりし禁断の秘術 -function c28429121.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c28429121.cost) - e1:SetTarget(c28429121.target) - e1:SetOperation(c28429121.activate) - c:RegisterEffect(e1) -end -function c28429121.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c28429121.mfilter(c,e) - return c:IsFaceup() and c:GetLevel()>0 and not c:IsImmuneToEffect(e) and c:IsReleasable() -end -function c28429121.filter(c,e,tp,m) - if bit.band(c:GetType(),0x81)~=0x81 or not c:IsSetCard(0x3a) - or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end - local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) - return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) -end -function c28429121.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end - local mg1=Duel.GetRitualMaterial(tp) - mg1:Remove(Card.IsLocation,nil,LOCATION_HAND) - local mg2=Duel.GetMatchingGroup(c28429121.mfilter,tp,0,LOCATION_MZONE,nil,e) - mg1:Merge(mg2) - return Duel.IsExistingMatchingCard(c28429121.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg1) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c28429121.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local mg1=Duel.GetRitualMaterial(tp) - mg1:Remove(Card.IsLocation,nil,LOCATION_HAND) - local mg2=Duel.GetMatchingGroup(c28429121.mfilter,tp,0,LOCATION_MZONE,nil,e) - mg1:Merge(mg2) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=Duel.SelectMatchingCard(tp,c28429121.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg1) - local tc=tg:GetFirst() - if tc then - local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) - tc:SetMaterial(mat) - Duel.ReleaseRitualMaterial(mat) - Duel.BreakEffect() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(tc:GetAttack()/2) - e1:SetReset(RESET_EVENT+0xfe0000) - tc:RegisterEffect(e1) - Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) - tc:CompleteProcedure() - end -end +--リチュアに伝わりし禁断の秘術 +function c28429121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c28429121.cost) + e1:SetTarget(c28429121.target) + e1:SetOperation(c28429121.activate) + c:RegisterEffect(e1) +end +function c28429121.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c28429121.mfilter(c,e) + return c:IsFaceup() and c:GetLevel()>0 and not c:IsImmuneToEffect(e) and c:IsReleasable() +end +function c28429121.filter(c,e,tp,m) + if bit.band(c:GetType(),0x81)~=0x81 or not c:IsSetCard(0x3a) + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) + return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) +end +function c28429121.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + local mg1=Duel.GetRitualMaterial(tp) + mg1:Remove(Card.IsLocation,nil,LOCATION_HAND) + local mg2=Duel.GetMatchingGroup(c28429121.mfilter,tp,0,LOCATION_MZONE,nil,e) + mg1:Merge(mg2) + return Duel.IsExistingMatchingCard(c28429121.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg1) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c28429121.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local mg1=Duel.GetRitualMaterial(tp) + mg1:Remove(Card.IsLocation,nil,LOCATION_HAND) + local mg2=Duel.GetMatchingGroup(c28429121.mfilter,tp,0,LOCATION_MZONE,nil,e) + mg1:Merge(mg2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c28429121.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg1) + local tc=tg:GetFirst() + if tc then + local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0xfe0000) + tc:RegisterEffect(e1) + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c28493337.lua b/script/c28493337.lua index f0f4c2db..ed0c1705 100644 --- a/script/c28493337.lua +++ b/script/c28493337.lua @@ -1,42 +1,42 @@ ---終焉の指名者 -function c28493337.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c28493337.cost) - e1:SetTarget(c28493337.target) - e1:SetOperation(c28493337.activate) - c:RegisterEffect(e1) -end -function c28493337.cfilter(c) - return c:IsAbleToRemoveAsCost() -end -function c28493337.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - if chk==0 then return Duel.IsExistingMatchingCard(c28493337.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c28493337.cfilter,tp,LOCATION_HAND,0,1,1,nil) - e:SetLabel(g:GetFirst():GetCode()) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c28493337.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if e:GetLabel()~=1 then return false end - e:SetLabel(0) - return true - end -end -function c28493337.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(1,1) - e1:SetValue(c28493337.aclimit) - e1:SetLabel(e:GetLabel()) - Duel.RegisterEffect(e1,tp) -end -function c28493337.aclimit(e,re,tp) - return re:GetHandler():IsCode(e:GetLabel()) and not re:GetHandler():IsImmuneToEffect(e) -end +--終焉の指名者 +function c28493337.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c28493337.cost) + e1:SetTarget(c28493337.target) + e1:SetOperation(c28493337.activate) + c:RegisterEffect(e1) +end +function c28493337.cfilter(c) + return c:IsAbleToRemoveAsCost() +end +function c28493337.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return Duel.IsExistingMatchingCard(c28493337.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c28493337.cfilter,tp,LOCATION_HAND,0,1,1,nil) + e:SetLabel(g:GetFirst():GetCode()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c28493337.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return true + end +end +function c28493337.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,1) + e1:SetValue(c28493337.aclimit) + e1:SetLabel(e:GetLabel()) + Duel.RegisterEffect(e1,tp) +end +function c28493337.aclimit(e,re,tp) + return re:GetHandler():IsCode(e:GetLabel()) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c28566710.lua b/script/c28566710.lua index 319e7379..97630e31 100644 --- a/script/c28566710.lua +++ b/script/c28566710.lua @@ -1,64 +1,64 @@ ---ラストバトル! -function c28566710.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_STANDBY_PHASE) - e1:SetCondition(c28566710.condition) - e1:SetTarget(c28566710.target) - e1:SetOperation(c28566710.operation) - c:RegisterEffect(e1) -end -function c28566710.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetLP(tp)<=1000 and Duel.GetTurnPlayer()~=tp -end -function c28566710.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,1-tp,LOCATION_DECK) -end -function c28566710.spfilter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c28566710.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local tg=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) - local tc=tg:GetFirst() - local hg=Duel.GetFieldGroup(tp,0xe,0xe) - if tc then hg:RemoveCard(tc) end - Duel.SendtoGrave(hg,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(1-tp,c28566710.spfilter,1-tp,LOCATION_DECK,0,1,1,nil,e,tp) - local sc=g:GetFirst() - if sc then - Duel.BreakEffect() - Duel.SpecialSummon(sc,0,1-tp,1-tp,false,false,POS_FACEUP_ATTACK) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e1:SetTargetRange(1,1) - e1:SetReset(RESET_CHAIN) - Duel.RegisterEffect(e1,tp) - if tc then Duel.CalculateDamage(sc,tc) end - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetOperation(c28566710.checkop) - Duel.RegisterEffect(e1,tp) -end -function c28566710.checkop(e,tp,eg,ep,ev,re,r,rp) - local t1=Duel.GetFieldGroupCount(0,LOCATION_MZONE,0) - local t2=Duel.GetFieldGroupCount(1,LOCATION_MZONE,0) - if t1>0 and t2==0 then - Duel.Win(0,0x16) - elseif t2>0 and t1==0 then - Duel.Win(1,0x16) - else - Duel.Win(PLAYER_NONE,0x16) - end -end +--ラストバトル! +function c28566710.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_STANDBY_PHASE) + e1:SetCondition(c28566710.condition) + e1:SetTarget(c28566710.target) + e1:SetOperation(c28566710.operation) + c:RegisterEffect(e1) +end +function c28566710.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=1000 and Duel.GetTurnPlayer()~=tp +end +function c28566710.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,1-tp,LOCATION_DECK) +end +function c28566710.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c28566710.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tg=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) + local tc=tg:GetFirst() + local hg=Duel.GetFieldGroup(tp,0xe,0xe) + if tc then hg:RemoveCard(tc) end + Duel.SendtoGrave(hg,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(1-tp,c28566710.spfilter,1-tp,LOCATION_DECK,0,1,1,nil,e,tp) + local sc=g:GetFirst() + if sc then + Duel.BreakEffect() + Duel.SpecialSummon(sc,0,1-tp,1-tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + if tc then Duel.CalculateDamage(sc,tc) end + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetOperation(c28566710.checkop) + Duel.RegisterEffect(e1,tp) +end +function c28566710.checkop(e,tp,eg,ep,ev,re,r,rp) + local t1=Duel.GetFieldGroupCount(0,LOCATION_MZONE,0) + local t2=Duel.GetFieldGroupCount(1,LOCATION_MZONE,0) + if t1>0 and t2==0 then + Duel.Win(0,0x16) + elseif t2>0 and t1==0 then + Duel.Win(1,0x16) + else + Duel.Win(PLAYER_NONE,0x16) + end +end diff --git a/script/c28577986.lua b/script/c28577986.lua index fe3f147f..fdc299ec 100644 --- a/script/c28577986.lua +++ b/script/c28577986.lua @@ -35,6 +35,7 @@ function c28577986.operation(e,tp,eg,ep,ev,re,r,rp) if not tc:IsRelateToEffect(e) then return end local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local slv=tc:GetLevel() local sg=Duel.GetMatchingGroup(c28577986.spfilter,tp,LOCATION_DECK,0,nil,slv,e,tp) if sg:GetCount()==0 then return end diff --git a/script/c28601770.lua b/script/c28601770.lua index 958b3a61..4e5ea528 100644 --- a/script/c28601770.lua +++ b/script/c28601770.lua @@ -17,7 +17,7 @@ end function c28601770.ntop(e,tp,eg,ep,ev,re,r,rp,c) --destroy local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(28601770,0)) + e1:SetDescription(aux.Stringid(28601770,1)) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e1:SetRange(LOCATION_MZONE) diff --git a/script/c28630501.lua b/script/c28630501.lua index 01954b4d..0ff04484 100644 --- a/script/c28630501.lua +++ b/script/c28630501.lua @@ -1,89 +1,89 @@ ---妖仙獣 鎌参太刀 -function c28630501.initial_effect(c) - --summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(28630501,0)) - e1:SetCategory(CATEGORY_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c28630501.sumtg) - e1:SetOperation(c28630501.sumop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(28630501,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_DAMAGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,28630501) - e2:SetCondition(c28630501.thcon) - e2:SetTarget(c28630501.thtg) - e2:SetOperation(c28630501.thop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetOperation(c28630501.regop) - c:RegisterEffect(e3) -end -function c28630501.filter(c) - return c:IsSetCard(0xb3) and not c:IsCode(28630501) and c:IsSummonable(true,nil) -end -function c28630501.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c28630501.filter,tp,LOCATION_HAND,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) -end -function c28630501.sumop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) - local g=Duel.SelectMatchingCard(tp,c28630501.filter,tp,LOCATION_HAND,0,1,1,nil) - if g:GetCount()>0 then - Duel.Summon(tp,g:GetFirst(),true,nil) - end -end -function c28630501.thcon(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - return ep~=tp and tc:IsControler(tp) and tc:IsSetCard(0xb3) and tc~=e:GetHandler() -end -function c28630501.thfilter(c) - return c:IsSetCard(0xb3) and not c:IsCode(28630501) and c:IsAbleToHand() -end -function c28630501.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c28630501.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c28630501.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c28630501.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c28630501.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(28630501,2)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetTarget(c28630501.rettg) - e1:SetOperation(c28630501.retop) - e1:SetReset(RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end -function c28630501.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c28630501.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--妖仙獣 鎌参太刀 +function c28630501.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(28630501,0)) + e1:SetCategory(CATEGORY_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c28630501.sumtg) + e1:SetOperation(c28630501.sumop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(28630501,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,28630501) + e2:SetCondition(c28630501.thcon) + e2:SetTarget(c28630501.thtg) + e2:SetOperation(c28630501.thop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c28630501.regop) + c:RegisterEffect(e3) +end +function c28630501.filter(c) + return c:IsSetCard(0xb3) and not c:IsCode(28630501) and c:IsSummonable(true,nil) +end +function c28630501.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c28630501.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c28630501.sumop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c28630501.filter,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + Duel.Summon(tp,g:GetFirst(),true,nil) + end +end +function c28630501.thcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return ep~=tp and tc:IsControler(tp) and tc:IsSetCard(0xb3) and tc~=e:GetHandler() +end +function c28630501.thfilter(c) + return c:IsSetCard(0xb3) and not c:IsCode(28630501) and c:IsAbleToHand() +end +function c28630501.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c28630501.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c28630501.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c28630501.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c28630501.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(28630501,2)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetTarget(c28630501.rettg) + e1:SetOperation(c28630501.retop) + e1:SetReset(RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c28630501.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c28630501.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c286392.lua b/script/c286392.lua index e10b2702..fe196711 100644 --- a/script/c286392.lua +++ b/script/c286392.lua @@ -1,69 +1,69 @@ ---ジェット・ウォリアー -function c286392.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c286392.tfilter,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --tohand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,286392) - e1:SetCondition(c286392.thcon) - e1:SetTarget(c286392.thtg) - e1:SetOperation(c286392.thop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,286393) - e2:SetCost(c286392.spcost) - e2:SetTarget(c286392.sptg) - e2:SetOperation(c286392.spop) - c:RegisterEffect(e2) -end -c286392.material_setcode=0x17 -function c286392.tfilter(c) - return c:IsCode(9742784) or c:IsHasEffect(20932152) -end -function c286392.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c286392.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c286392.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end -function c286392.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsLevelBelow,1,nil,2) end - local g=Duel.SelectReleaseGroup(tp,Card.IsLevelBelow,1,1,nil,2) - Duel.Release(g,REASON_COST) -end -function c286392.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c286392.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1,true) - end -end +--ジェット・ウォリアー +function c286392.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c286392.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --tohand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,286392) + e1:SetCondition(c286392.thcon) + e1:SetTarget(c286392.thtg) + e1:SetOperation(c286392.thop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,286393) + e2:SetCost(c286392.spcost) + e2:SetTarget(c286392.sptg) + e2:SetOperation(c286392.spop) + c:RegisterEffect(e2) +end +c286392.material_setcode=0x1017 +function c286392.tfilter(c) + return c:IsCode(9742784) or c:IsHasEffect(20932152) +end +function c286392.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c286392.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c286392.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c286392.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsLevelBelow,1,nil,2) end + local g=Duel.SelectReleaseGroup(tp,Card.IsLevelBelow,1,1,nil,2) + Duel.Release(g,REASON_COST) +end +function c286392.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c286392.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + end +end diff --git a/script/c28674152.lua b/script/c28674152.lua index f91f16b5..86cf745a 100644 --- a/script/c28674152.lua +++ b/script/c28674152.lua @@ -1,75 +1,75 @@ ---Radian, the Multidimensional Kaiju -function c28674152.initial_effect(c) - c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) - --special summon rule - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e1:SetTargetRange(POS_FACEUP_ATTACK,1) - e1:SetCondition(c28674152.spcon) - e1:SetOperation(c28674152.spop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetRange(LOCATION_HAND) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e2:SetTargetRange(POS_FACEUP_ATTACK,0) - e2:SetCondition(c28674152.spcon2) - c:RegisterEffect(e2) - --token - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(28674152,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCost(c28674152.tkcost) - e3:SetTarget(c28674152.tktg) - e3:SetOperation(c28674152.tkop) - c:RegisterEffect(e3) -end -function c28674152.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xd3) -end -function c28674152.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(Card.IsReleasable,tp,0,LOCATION_MZONE,1,nil) -end -function c28674152.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c28674152.spcon2(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c28674152.cfilter,tp,0,LOCATION_MZONE,1,nil) -end -function c28674152.tkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsCanRemoveCounter(tp,1,1,0x37,2,REASON_COST) end - Duel.RemoveCounter(tp,1,1,0x37,2,REASON_COST) -end -function c28674152.tktg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,28674153,0,0x4011,2800,0,7,RACE_FIEND,ATTRIBUTE_DARK) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c28674152.tkop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,28674153,0,0x4011,2800,0,7,RACE_FIEND,ATTRIBUTE_DARK) then return end - local token=Duel.CreateToken(tp,28674153) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(1) - token:RegisterEffect(e1,true) -end +--多次元壊獣ラディアン +function c28674152.initial_effect(c) + c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetTargetRange(POS_FACEUP_ATTACK,1) + e1:SetCondition(c28674152.spcon) + e1:SetOperation(c28674152.spop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetRange(LOCATION_HAND) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e2:SetTargetRange(POS_FACEUP_ATTACK,0) + e2:SetCondition(c28674152.spcon2) + c:RegisterEffect(e2) + --token + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(28674152,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c28674152.tkcost) + e3:SetTarget(c28674152.tktg) + e3:SetOperation(c28674152.tkop) + c:RegisterEffect(e3) +end +function c28674152.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xd3) +end +function c28674152.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(Card.IsReleasable,tp,0,LOCATION_MZONE,1,nil) +end +function c28674152.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c28674152.spcon2(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c28674152.cfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c28674152.tkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsCanRemoveCounter(tp,1,1,0x37,2,REASON_COST) end + Duel.RemoveCounter(tp,1,1,0x37,2,REASON_COST) +end +function c28674152.tktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,28674153,0,0x4011,2800,0,7,RACE_FIEND,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c28674152.tkop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,28674153,0,0x4011,2800,0,7,RACE_FIEND,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,28674153) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + token:RegisterEffect(e1,true) +end diff --git a/script/c28677304.lua b/script/c28677304.lua index ba28fc3c..4bab5ddd 100644 --- a/script/c28677304.lua +++ b/script/c28677304.lua @@ -1,150 +1,151 @@ ---E・HERO ブラック・ネオス -function c28677304.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,89943723,43237273,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c28677304.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c28677304.spcon) - e2:SetOperation(c28677304.spop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(28677304,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c28677304.retcon1) - e3:SetTarget(c28677304.rettg) - e3:SetOperation(c28677304.retop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(0) - e4:SetCondition(c28677304.retcon2) - c:RegisterEffect(e4) - --disable - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(28677304,1)) - e5:SetCategory(CATEGORY_DISABLE) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetCondition(c28677304.discon) - e5:SetTarget(c28677304.distg) - e5:SetOperation(c28677304.disop) - c:RegisterEffect(e5) -end -function c28677304.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) -end -function c28677304.spfilter(c,code) - return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) -end -function c28677304.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-1 then return false end - local g1=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,nil,43237273) - if g1:GetCount()==0 or g2:GetCount()==0 then return false end - if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end - if ft>0 then return true end - local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - if ft==-1 then return f1>0 and f2>0 - else return f1>0 or f2>0 end -end -function c28677304.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g1=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,nil,43237273) - g1:Merge(g2) - local g=Group.CreateGroup() - local tc=nil - for i=1,2 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - if ft<=0 then - tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() - ft=ft+1 - else - tc=g1:Select(tp,1,1,nil):GetFirst() - end - g:AddCard(tc) - if i==1 then - g1:Clear() - if tc:IsFusionCode(89943723) then - local sg=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,tc,43237273) - g1:Merge(sg) - end - if tc:IsFusionCode(43237273) then - local sg=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) - g1:Merge(sg) - end - end - end - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c28677304.retcon1(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsHasEffect(42015635) -end -function c28677304.retcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsHasEffect(42015635) -end -function c28677304.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtra() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c28677304.retop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) -end -function c28677304.discon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCardTargetCount()==0 -end -function c28677304.filter(c) - return c:IsFaceup() and c:IsType(TYPE_EFFECT) -end -function c28677304.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c28677304.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c28677304.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c28677304.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c28677304.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() 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_CANNOT_DISABLE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetCondition(c28677304.rcon) - tc:RegisterEffect(e1,true) - end -end -function c28677304.rcon(e) - return e:GetOwner():IsHasCardTarget(e:GetHandler()) -end +--E・HERO ブラック・ネオス +function c28677304.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,89943723,43237273,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c28677304.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c28677304.spcon) + e2:SetOperation(c28677304.spop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(28677304,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c28677304.retcon1) + e3:SetTarget(c28677304.rettg) + e3:SetOperation(c28677304.retop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(0) + e4:SetCondition(c28677304.retcon2) + c:RegisterEffect(e4) + --disable + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(28677304,1)) + e5:SetCategory(CATEGORY_DISABLE) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetCondition(c28677304.discon) + e5:SetTarget(c28677304.distg) + e5:SetOperation(c28677304.disop) + c:RegisterEffect(e5) +end +c28677304.material_setcode=0x8 +function c28677304.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c28677304.spfilter(c,code) + return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) +end +function c28677304.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local g1=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,nil,43237273) + if g1:GetCount()==0 or g2:GetCount()==0 then return false end + if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + if ft==-1 then return f1>0 and f2>0 + else return f1>0 or f2>0 end +end +function c28677304.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,nil,43237273) + g1:Merge(g2) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + ft=ft+1 + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + if i==1 then + g1:Clear() + if tc:IsFusionCode(89943723) then + local sg=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,tc,43237273) + g1:Merge(sg) + end + if tc:IsFusionCode(43237273) then + local sg=Duel.GetMatchingGroup(c28677304.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) + g1:Merge(sg) + end + end + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c28677304.retcon1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(42015635) +end +function c28677304.retcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasEffect(42015635) +end +function c28677304.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtra() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c28677304.retop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end +function c28677304.discon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCardTargetCount()==0 +end +function c28677304.filter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c28677304.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c28677304.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c28677304.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c28677304.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c28677304.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() 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_CANNOT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c28677304.rcon) + tc:RegisterEffect(e1,true) + end +end +function c28677304.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end diff --git a/script/c28741524.lua b/script/c28741524.lua index 39410599..7709ab78 100644 --- a/script/c28741524.lua +++ b/script/c28741524.lua @@ -29,8 +29,7 @@ end function c28741524.spop(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - if ft1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) local og=Duel.GetOperatedGroup() diff --git a/script/c28754338.lua b/script/c28754338.lua index 69ac7b70..7336cb67 100644 --- a/script/c28754338.lua +++ b/script/c28754338.lua @@ -1,48 +1,48 @@ ---真海皇 トライドン -function c28754338.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(28754338,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c28754338.spcost) - e1:SetTarget(c28754338.sptg) - e1:SetOperation(c28754338.spop) - c:RegisterEffect(e1) -end -function c28754338.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsReleasable() and Duel.CheckReleaseGroup(tp,Card.IsRace,1,c,RACE_SEASERPENT) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local rg=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,c,RACE_SEASERPENT) - rg:AddCard(c) - Duel.Release(rg,REASON_COST) -end -function c28754338.filter(c,e,tp) - return c:IsCode(47826112) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c28754338.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c28754338.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) -end -function c28754338.spop(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,c28754338.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)>0 then - Duel.BreakEffect() - local tg=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - local tc=tg:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-300) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc=tg:GetNext() - end - end -end +--真海皇 トライドン +function c28754338.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(28754338,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c28754338.spcost) + e1:SetTarget(c28754338.sptg) + e1:SetOperation(c28754338.spop) + c:RegisterEffect(e1) +end +function c28754338.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsReleasable() and Duel.CheckReleaseGroup(tp,Card.IsRace,1,c,RACE_SEASERPENT) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local rg=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,c,RACE_SEASERPENT) + rg:AddCard(c) + Duel.Release(rg,REASON_COST) +end +function c28754338.filter(c,e,tp) + return c:IsCode(47826112) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c28754338.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c28754338.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c28754338.spop(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,c28754338.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.BreakEffect() + local tg=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=tg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-300) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=tg:GetNext() + end + end +end diff --git a/script/c28912357.lua b/script/c28912357.lua index 95853561..a0ad4b7f 100644 --- a/script/c28912357.lua +++ b/script/c28912357.lua @@ -7,6 +7,7 @@ function c28912357.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e1:SetDescription(aux.Stringid(28912357,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) @@ -45,8 +46,8 @@ function c28912357.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c28912357.operation(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c28912357.filter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c28912357.filter),tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) Duel.ShuffleDeck(tp) diff --git a/script/c28990150.lua b/script/c28990150.lua index 19d84644..87422f97 100644 --- a/script/c28990150.lua +++ b/script/c28990150.lua @@ -1,24 +1,24 @@ ---フォトン・ケルベロス -function c28990150.initial_effect(c) - --actlimit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetOperation(c28990150.atkop) - c:RegisterEffect(e3) -end -function c28990150.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(1,1) - e1:SetValue(c28990150.aclimit) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c28990150.aclimit(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsType(TYPE_TRAP) -end +--フォトン・ケルベロス +function c28990150.initial_effect(c) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c28990150.atkop) + c:RegisterEffect(e3) +end +function c28990150.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(1,1) + e1:SetValue(c28990150.aclimit) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c28990150.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsType(TYPE_TRAP) +end diff --git a/script/c29047353.lua b/script/c29047353.lua index 0b3ac6d8..2221dfe0 100644 --- a/script/c29047353.lua +++ b/script/c29047353.lua @@ -1,73 +1,73 @@ ---水舞台 -function c29047353.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) - e2:SetValue(c29047353.indval) - c:RegisterEffect(e2) - --immune - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_IMMUNE_EFFECT) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xcd)) - e3:SetValue(c29047353.efilter) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e4:SetCondition(c29047353.spcon) - e4:SetTarget(c29047353.sptg) - e4:SetOperation(c29047353.spop) - c:RegisterEffect(e4) -end -function c29047353.indval(e,c) - return c:GetAttribute()~=ATTRIBUTE_WATER -end -function c29047353.efilter(e,te) - return te:GetOwnerPlayer()~=e:GetHandlerPlayer() and te:IsActiveType(TYPE_MONSTER) -end -function c29047353.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c29047353.spfilter(c,e,tp) - return c:IsRace(RACE_AQUA) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c29047353.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c29047353.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c29047353.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c29047353.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c29047353.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c29047353.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c29047353.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return c:GetRace()~=RACE_AQUA -end +--水舞台 +function c29047353.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e2:SetValue(c29047353.indval) + c:RegisterEffect(e2) + --immune + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xcd)) + e3:SetValue(c29047353.efilter) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCondition(c29047353.spcon) + e4:SetTarget(c29047353.sptg) + e4:SetOperation(c29047353.spop) + c:RegisterEffect(e4) +end +function c29047353.indval(e,c) + return c:GetAttribute()~=ATTRIBUTE_WATER +end +function c29047353.efilter(e,te) + return te:GetOwnerPlayer()~=e:GetHandlerPlayer() and te:IsActiveType(TYPE_MONSTER) +end +function c29047353.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c29047353.spfilter(c,e,tp) + return c:IsRace(RACE_AQUA) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c29047353.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c29047353.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c29047353.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c29047353.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c29047353.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c29047353.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c29047353.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:GetRace()~=RACE_AQUA +end diff --git a/script/c29085954.lua b/script/c29085954.lua index 783fd519..9ba3af77 100644 --- a/script/c29085954.lua +++ b/script/c29085954.lua @@ -7,6 +7,7 @@ function c29085954.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(29085954,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) diff --git a/script/c29087919.lua b/script/c29087919.lua index c4b1f2c9..9715f1d8 100644 --- a/script/c29087919.lua +++ b/script/c29087919.lua @@ -1,74 +1,74 @@ ---ギアギアチェンジ -function c29087919.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,29087919+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c29087919.target) - e1:SetOperation(c29087919.activate) - c:RegisterEffect(e1) -end -function c29087919.filter(c,e,tp) - return c:IsSetCard(0x1072) and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c29087919.xyzfilter(c,mg,ct) - return c:IsXyzSummonable(mg,2,ct) -end -function c29087919.mfilter1(c,mg,exg,ct) - return mg:IsExists(c29087919.mfilter2,1,nil,Group.FromCards(c),mg,exg,ct) -end -function c29087919.mfilter2(c,g,mg,exg,ct) - local tc=g:GetFirst() - while tc do - if c:IsCode(tc:GetCode()) then return false end - tc=g:GetNext() - end - g:AddCard(c) - local result=exg:IsExists(Card.IsXyzSummonable,1,nil,g,g:GetCount(),g:GetCount()) - or (g:GetCount()1 and mg:IsExists(c29087919.mfilter1,1,nil,mg,exg,ct) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg1=mg:FilterSelect(tp,c29087919.mfilter1,1,1,nil,mg,exg,ct) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg2=mg:FilterSelect(tp,c29087919.mfilter2,1,1,nil,sg1,mg,exg,ct) - sg1:Merge(sg2) - while sg1:GetCount()=2 and xyzg:GetCount()>0 then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local xyz=xyzg:Select(tp,1,1,nil):GetFirst() - Duel.XyzSummon(tp,xyz,g) - end -end +--ギアギアチェンジ +function c29087919.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,29087919+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c29087919.target) + e1:SetOperation(c29087919.activate) + c:RegisterEffect(e1) +end +function c29087919.filter(c,e,tp) + return c:IsSetCard(0x1072) and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c29087919.xyzfilter(c,mg,ct) + return c:IsXyzSummonable(mg,2,ct) +end +function c29087919.mfilter1(c,mg,exg,ct) + return mg:IsExists(c29087919.mfilter2,1,nil,Group.FromCards(c),mg,exg,ct) +end +function c29087919.mfilter2(c,g,mg,exg,ct) + local tc=g:GetFirst() + while tc do + if c:IsCode(tc:GetCode()) then return false end + tc=g:GetNext() + end + g:AddCard(c) + local result=exg:IsExists(Card.IsXyzSummonable,1,nil,g,g:GetCount(),g:GetCount()) + or (g:GetCount()1 and mg:IsExists(c29087919.mfilter1,1,nil,mg,exg,ct) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=mg:FilterSelect(tp,c29087919.mfilter1,1,1,nil,mg,exg,ct) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=mg:FilterSelect(tp,c29087919.mfilter2,1,1,nil,sg1,mg,exg,ct) + sg1:Merge(sg2) + while sg1:GetCount()=2 and xyzg:GetCount()>0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:Select(tp,1,1,nil):GetFirst() + Duel.XyzSummon(tp,xyz,g) + end +end diff --git a/script/c29088922.lua b/script/c29088922.lua index 6275acda..6bdc9009 100644 --- a/script/c29088922.lua +++ b/script/c29088922.lua @@ -1,63 +1,63 @@ ---フォーチュンレディ・ウォーテリー -function c29088922.initial_effect(c) - --atk,def - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(c29088922.value) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e2) - --level up - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(29088922,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCondition(c29088922.lvcon) - e3:SetOperation(c29088922.lvop) - c:RegisterEffect(e3) - --draw - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(29088922,1)) - e4:SetCategory(CATEGORY_DRAW) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetTarget(c29088922.drtg) - e4:SetOperation(c29088922.drop) - c:RegisterEffect(e4) -end -function c29088922.value(e,c) - return c:GetLevel()*300 -end -function c29088922.lvcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) -end -function c29088922.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c29088922.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x31) and c:GetCode()~=29088922 -end -function c29088922.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c29088922.cfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c29088922.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--フォーチュンレディ・ウォーテリー +function c29088922.initial_effect(c) + --atk,def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c29088922.value) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) + --level up + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(29088922,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c29088922.lvcon) + e3:SetOperation(c29088922.lvop) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(29088922,1)) + e4:SetCategory(CATEGORY_DRAW) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetTarget(c29088922.drtg) + e4:SetOperation(c29088922.drop) + c:RegisterEffect(e4) +end +function c29088922.value(e,c) + return c:GetLevel()*300 +end +function c29088922.lvcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) +end +function c29088922.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c29088922.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x31) and c:GetCode()~=29088922 +end +function c29088922.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c29088922.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c29088922.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c29208536.lua b/script/c29208536.lua index 0ad4314d..08585cb1 100644 --- a/script/c29208536.lua +++ b/script/c29208536.lua @@ -8,7 +8,7 @@ function c29208536.initial_effect(c) e1:SetDescription(aux.Stringid(29208536,0)) e1:SetCategory(CATEGORY_DISABLE) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c29208536.cost) diff --git a/script/c2924048.lua b/script/c2924048.lua index 9ab9ebc0..e906c31a 100644 --- a/script/c2924048.lua +++ b/script/c2924048.lua @@ -25,8 +25,7 @@ function c2924048.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c2924048.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c2926176.lua b/script/c2926176.lua index 85d44349..97204555 100644 --- a/script/c2926176.lua +++ b/script/c2926176.lua @@ -26,8 +26,7 @@ function c2926176.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c2926176.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c29267084.lua b/script/c29267084.lua index 1da1772f..f3f2bac2 100644 --- a/script/c29267084.lua +++ b/script/c29267084.lua @@ -1,65 +1,65 @@ ---闇の呪縛 -function c29267084.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c29267084.condition) - e1:SetTarget(c29267084.target) - e1:SetOperation(c29267084.operation) - c:RegisterEffect(e1) - --Destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetCondition(c29267084.descon) - e2:SetOperation(c29267084.desop) - c:RegisterEffect(e2) -end -function c29267084.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c29267084.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c29267084.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() 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_CANNOT_CHANGE_POSITION) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetCondition(c29267084.rcon) - tc:RegisterEffect(e1,true) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_ATTACK) - tc:RegisterEffect(e2,true) - local e3=e1:Clone() - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(-700) - tc:RegisterEffect(e3,true) - end -end -function c29267084.rcon(e) - return e:GetOwner():IsHasCardTarget(e:GetHandler()) -end -function c29267084.descon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end - local tc=c:GetFirstCardTarget() - return tc and eg:IsContains(tc) -end -function c29267084.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(), REASON_EFFECT) -end +--闇の呪縛 +function c29267084.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c29267084.condition) + e1:SetTarget(c29267084.target) + e1:SetOperation(c29267084.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c29267084.descon) + e2:SetOperation(c29267084.desop) + c:RegisterEffect(e2) +end +function c29267084.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c29267084.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c29267084.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() 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_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c29267084.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK) + tc:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(-700) + tc:RegisterEffect(e3,true) + end +end +function c29267084.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c29267084.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c29267084.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end diff --git a/script/c29307554.lua b/script/c29307554.lua index 31498118..66e33037 100644 --- a/script/c29307554.lua +++ b/script/c29307554.lua @@ -1,58 +1,58 @@ ---破壊神の系譜 -function c29307554.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c29307554.condition) - e1:SetTarget(c29307554.target) - e1:SetOperation(c29307554.activate) - c:RegisterEffect(e1) - if not c29307554.global_check then - c29307554.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_DESTROYED) - ge1:SetOperation(c29307554.checkop) - Duel.RegisterEffect(ge1,0) - end -end -function c29307554.checkop(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local p1=false - local p2=false - while tc do - if tc:IsPreviousLocation(LOCATION_MZONE) and tc:IsPreviousPosition(POS_DEFENSE) then - if tc:GetReasonPlayer()==0 and tc:GetPreviousControler()==1 then p1=true end - if tc:GetReasonPlayer()==1 and tc:GetPreviousControler()==0 then p2=true end - end - tc=eg:GetNext() - end - if p1 then Duel.RegisterFlagEffect(0,29307554,RESET_PHASE+PHASE_END,0,1) end - if p2 then Duel.RegisterFlagEffect(1,29307554,RESET_PHASE+PHASE_END,0,1) end -end -function c29307554.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFlagEffect(tp,29307554)~=0 and Duel.GetTurnPlayer()==tp - and (Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE)) -end -function c29307554.filter(c) - return c:IsFaceup() and c:IsLevelAbove(8) and c:GetEffectCount(EFFECT_EXTRA_ATTACK)==0 -end -function c29307554.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c29307554.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c29307554.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c29307554.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c29307554.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - tc:RegisterEffect(e1) - end -end +--破壊神の系譜 +function c29307554.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c29307554.condition) + e1:SetTarget(c29307554.target) + e1:SetOperation(c29307554.activate) + c:RegisterEffect(e1) + if not c29307554.global_check then + c29307554.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(c29307554.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c29307554.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local p1=false + local p2=false + while tc do + if tc:IsPreviousLocation(LOCATION_MZONE) and tc:IsPreviousPosition(POS_DEFENSE) then + if tc:GetReasonPlayer()==0 and tc:GetPreviousControler()==1 then p1=true end + if tc:GetReasonPlayer()==1 and tc:GetPreviousControler()==0 then p2=true end + end + tc=eg:GetNext() + end + if p1 then Duel.RegisterFlagEffect(0,29307554,RESET_PHASE+PHASE_END,0,1) end + if p2 then Duel.RegisterFlagEffect(1,29307554,RESET_PHASE+PHASE_END,0,1) end +end +function c29307554.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,29307554)~=0 and Duel.GetTurnPlayer()==tp + and (Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE)) +end +function c29307554.filter(c) + return c:IsFaceup() and c:IsLevelAbove(8) and c:GetEffectCount(EFFECT_EXTRA_ATTACK)==0 +end +function c29307554.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c29307554.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c29307554.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c29307554.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c29307554.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end diff --git a/script/c29311166.lua b/script/c29311166.lua index 592d2b7c..cfc65da4 100644 --- a/script/c29311166.lua +++ b/script/c29311166.lua @@ -27,8 +27,8 @@ end function c29311166.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,c29311166.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c29311166.filter),tp,LOCATION_GRAVE+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 diff --git a/script/c29343734.lua b/script/c29343734.lua index f48c3f93..5c9c7b39 100644 --- a/script/c29343734.lua +++ b/script/c29343734.lua @@ -1,57 +1,58 @@ ---E・HERO エリクシーラー -function c29343734.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode4(c,21844576,58932615,84327329,79979666,true,true) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(aux.fuslimit) - c:RegisterEffect(e2) - --attribute - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_ADD_ATTRIBUTE) - e3:SetValue(0xf) - c:RegisterEffect(e3) - --return - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(29343734,0)) - e4:SetCategory(CATEGORY_TODECK) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetCondition(c29343734.retcon) - e4:SetTarget(c29343734.rettg) - e4:SetOperation(c29343734.retop) - c:RegisterEffect(e4) - --atk - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetRange(LOCATION_MZONE) - e5:SetCode(EFFECT_UPDATE_ATTACK) - e5:SetValue(c29343734.val) - c:RegisterEffect(e5) -end -function c29343734.retcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c29343734.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c29343734.retop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) -end -function c29343734.atkfilter(c,att) - return c:IsFaceup() and c:IsAttribute(att) -end -function c29343734.val(e,c) - return Duel.GetMatchingGroupCount(c29343734.atkfilter,c:GetControler(),0,LOCATION_MZONE,nil,c:GetAttribute())*300 -end +--E・HERO エリクシーラー +function c29343734.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode4(c,21844576,58932615,84327329,79979666,true,true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(aux.fuslimit) + c:RegisterEffect(e2) + --attribute + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_ADD_ATTRIBUTE) + e3:SetValue(0xf) + c:RegisterEffect(e3) + --return + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(29343734,0)) + e4:SetCategory(CATEGORY_TODECK) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c29343734.retcon) + e4:SetTarget(c29343734.rettg) + e4:SetOperation(c29343734.retop) + c:RegisterEffect(e4) + --atk + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetValue(c29343734.val) + c:RegisterEffect(e5) +end +c29343734.material_setcode=0x8 +function c29343734.retcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c29343734.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c29343734.retop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end +function c29343734.atkfilter(c,att) + return c:IsFaceup() and c:IsAttribute(att) +end +function c29343734.val(e,c) + return Duel.GetMatchingGroupCount(c29343734.atkfilter,c:GetControler(),0,LOCATION_MZONE,nil,c:GetAttribute())*300 +end diff --git a/script/c293542.lua b/script/c293542.lua index 2227f509..d37b7392 100644 --- a/script/c293542.lua +++ b/script/c293542.lua @@ -14,6 +14,7 @@ function c293542.initial_effect(c) --to grave local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c293542.regop) c:RegisterEffect(e2) diff --git a/script/c29357956.lua b/script/c29357956.lua index 5a4ac956..5b6cdccb 100644 --- a/script/c29357956.lua +++ b/script/c29357956.lua @@ -1,107 +1,107 @@ ---剣闘獣ネロキウス -function c29357956.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x19),3,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c29357956.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c29357956.sprcon) - e2:SetOperation(c29357956.sprop) - c:RegisterEffect(e2) - --battle indestructable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e3:SetValue(1) - c:RegisterEffect(e3) - --actlimit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetCode(EFFECT_CANNOT_ACTIVATE) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(0,1) - e4:SetValue(1) - e4:SetCondition(c29357956.actcon) - c:RegisterEffect(e4) - --special summon - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(29357956,1)) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e6:SetCode(EVENT_PHASE+PHASE_BATTLE) - e6:SetRange(LOCATION_MZONE) - e6:SetCondition(c29357956.spcon) - e6:SetCost(c29357956.spcost) - e6:SetTarget(c29357956.sptg) - e6:SetOperation(c29357956.spop) - c:RegisterEffect(e6) -end -function c29357956.splimit(e,se,sp,st) - return e:GetHandler():GetLocation()~=LOCATION_EXTRA -end -function c29357956.spfilter(c) - return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() -end -function c29357956.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 - and Duel.IsExistingMatchingCard(c29357956.spfilter,tp,LOCATION_MZONE,0,3,nil) -end -function c29357956.sprop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,c29357956.spfilter,tp,LOCATION_MZONE,0,3,3,nil) - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c29357956.actcon(e) - return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() -end -function c29357956.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetBattledGroupCount()>0 -end -function c29357956.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToExtraAsCost() end - Duel.SendtoDeck(c,nil,0,REASON_COST) -end -function c29357956.filter(c,e,tp) - return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,122,tp,false,false) -end -function c29357956.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c29357956.filter,tp,LOCATION_DECK,0,2,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) -end -function c29357956.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - local g=Duel.GetMatchingGroup(c29357956.filter,tp,LOCATION_DECK,0,nil,e,tp) - if g:GetCount()>=2 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,2,2,nil) - local tc=sg:GetFirst() - Duel.SpecialSummonStep(tc,122,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) - tc=sg:GetNext() - Duel.SpecialSummonStep(tc,122,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) - Duel.SpecialSummonComplete() - end -end +--剣闘獣ネロキウス +function c29357956.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x19),3,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c29357956.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c29357956.sprcon) + e2:SetOperation(c29357956.sprop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + --actlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_ACTIVATE) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,1) + e4:SetValue(1) + e4:SetCondition(c29357956.actcon) + c:RegisterEffect(e4) + --special summon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(29357956,1)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c29357956.spcon) + e6:SetCost(c29357956.spcost) + e6:SetTarget(c29357956.sptg) + e6:SetOperation(c29357956.spop) + c:RegisterEffect(e6) +end +function c29357956.splimit(e,se,sp,st) + return e:GetHandler():GetLocation()~=LOCATION_EXTRA +end +function c29357956.spfilter(c) + return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() +end +function c29357956.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 + and Duel.IsExistingMatchingCard(c29357956.spfilter,tp,LOCATION_MZONE,0,3,nil) +end +function c29357956.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c29357956.spfilter,tp,LOCATION_MZONE,0,3,3,nil) + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c29357956.actcon(e) + return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() +end +function c29357956.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 +end +function c29357956.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToExtraAsCost() end + Duel.SendtoDeck(c,nil,0,REASON_COST) +end +function c29357956.filter(c,e,tp) + return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,122,tp,false,false) +end +function c29357956.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c29357956.filter,tp,LOCATION_DECK,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c29357956.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g=Duel.GetMatchingGroup(c29357956.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + local tc=sg:GetFirst() + Duel.SpecialSummonStep(tc,122,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + tc=sg:GetNext() + Duel.SpecialSummonStep(tc,122,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c29400787.lua b/script/c29400787.lua index 48034393..7fd80aa6 100644 --- a/script/c29400787.lua +++ b/script/c29400787.lua @@ -1,69 +1,69 @@ ---ゴーストリック・パレード -function c29400787.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atklimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetValue(aux.TargetBoolFunction(Card.IsFacedown)) - c:RegisterEffect(e2) - --direct attack - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_DIRECT_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(c29400787.dirtg) - c:RegisterEffect(e3) - --tohand - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(29400787,0)) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_ATTACK_ANNOUNCE) - e4:SetRange(LOCATION_FZONE) - e4:SetCondition(c29400787.thcon) - e4:SetTarget(c29400787.thtg) - e4:SetOperation(c29400787.thop) - c:RegisterEffect(e4) - -- - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CHANGE_DAMAGE) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetRange(LOCATION_FZONE) - e5:SetTargetRange(0,1) - e5:SetValue(0) - c:RegisterEffect(e5) - local e6=e5:Clone() - e6:SetCode(EFFECT_NO_EFFECT_DAMAGE) - c:RegisterEffect(e6) -end -function c29400787.dirtg(e,c) - return not Duel.IsExistingMatchingCard(Card.IsFaceup,c:GetControler(),0,LOCATION_MZONE,1,nil) -end -function c29400787.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil -end -function c29400787.filter(c) - return c:IsSetCard(0x8d) and c:IsAbleToHand() -end -function c29400787.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c29400787.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c29400787.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c29400787.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ゴーストリック・パレード +function c29400787.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atklimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(aux.TargetBoolFunction(Card.IsFacedown)) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c29400787.dirtg) + c:RegisterEffect(e3) + --tohand + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(29400787,0)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetRange(LOCATION_FZONE) + e4:SetCondition(c29400787.thcon) + e4:SetTarget(c29400787.thtg) + e4:SetOperation(c29400787.thop) + c:RegisterEffect(e4) + -- + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CHANGE_DAMAGE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetRange(LOCATION_FZONE) + e5:SetTargetRange(0,1) + e5:SetValue(0) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_NO_EFFECT_DAMAGE) + c:RegisterEffect(e6) +end +function c29400787.dirtg(e,c) + return not Duel.IsExistingMatchingCard(Card.IsFaceup,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c29400787.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c29400787.filter(c) + return c:IsSetCard(0x8d) and c:IsAbleToHand() +end +function c29400787.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c29400787.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c29400787.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c29400787.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c29417188.lua b/script/c29417188.lua index 4fced585..db71bd38 100644 --- a/script/c29417188.lua +++ b/script/c29417188.lua @@ -1,36 +1,36 @@ ---サイキック・ブロッカー -function c29417188.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(29417188,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c29417188.target) - e1:SetOperation(c29417188.operation) - c:RegisterEffect(e1) -end -function c29417188.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,564) - local ac=Duel.AnnounceCard(tp) - Duel.SetTargetParam(ac) - Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) -end -function c29417188.operation(e,tp,eg,ep,ev,re,r,rp) - local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - e:GetHandler():SetHint(CHINT_CARD,ac) - --forbidden - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e1:SetCode(EFFECT_FORBIDDEN) - e1:SetTargetRange(0x7f,0x7f) - e1:SetTarget(c29417188.bantg) - e1:SetLabel(ac) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - Duel.RegisterEffect(e1,tp) -end -function c29417188.bantg(e,c) - return c:IsCode(e:GetLabel()) -end +--サイキック・ブロッカー +function c29417188.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29417188,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c29417188.target) + e1:SetOperation(c29417188.operation) + c:RegisterEffect(e1) +end +function c29417188.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c29417188.operation(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + e:GetHandler():SetHint(CHINT_CARD,ac) + --forbidden + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_FORBIDDEN) + e1:SetTargetRange(0x7f,0x7f) + e1:SetTarget(c29417188.bantg) + e1:SetLabel(ac) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) +end +function c29417188.bantg(e,c) + return c:IsCode(e:GetLabel()) +end diff --git a/script/c29432356.lua b/script/c29432356.lua new file mode 100644 index 00000000..18370689 --- /dev/null +++ b/script/c29432356.lua @@ -0,0 +1,181 @@ +--智天の神星龍 +--Zefratorah Grammaton +--Scripted by Eerie Code +function c29432356.initial_effect(c) + c:EnableReviveLimit() + aux.EnablePendulumAttribute(c) + --change scale + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29432356,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1,29432356) + e1:SetTarget(c29432356.sctg) + e1:SetOperation(c29432356.scop) + c:RegisterEffect(e1) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e2) + --special summon (self) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SPSUMMON_PROC) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_EXTRA) + e3:SetCondition(c29432356.hspcon) + e3:SetOperation(c29432356.hspop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(29432356,3)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCost(c29432356.spcost) + e4:SetTarget(c29432356.sptg) + e4:SetOperation(c29432356.spop) + c:RegisterEffect(e4) +end +function c29432356.scfilter(c,pc) + return c:IsType(TYPE_PENDULUM) and c:IsSetCard(0xc4) and not c:IsForbidden() + and ((pc:GetSequence()==6 and c:GetLeftScale()~=pc:GetLeftScale()) + or (pc:GetSequence()==7 and c:GetRightScale()~=pc:GetRightScale())) +end +function c29432356.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c29432356.scfilter,tp,LOCATION_DECK,0,1,nil,e:GetHandler()) end +end +function c29432356.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(29432356,1)) + local g=Duel.SelectMatchingCard(tp,c29432356.scfilter,tp,LOCATION_DECK,0,1,1,nil,c) + local tc=g:GetFirst() + if tc and Duel.SendtoExtraP(tc,tp,REASON_EFFECT)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LSCALE) + e1:SetValue(tc:GetLeftScale()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RSCALE) + e2:SetValue(tc:GetRightScale()) + c:RegisterEffect(e2) + end +end +function c29432356.hspcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local rg=Duel.GetReleaseGroup(tp) + return (g:GetCount()>0 or rg:GetCount()>0) and g:FilterCount(Card.IsReleasable,nil)==g:GetCount() + and g:FilterCount(Card.IsSetCard,nil,0xc4)>=3 +end +function c29432356.hspop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.GetReleaseGroup(tp) + Duel.Release(g,REASON_COST) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29432356,2)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC_G) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,29432357) + e1:SetCondition(c29432356.pencon) + e1:SetOperation(c29432356.penop) + e1:SetValue(SUMMON_TYPE_PENDULUM) + c:RegisterEffect(e1) +end +function c29432356.penfilter(c,e,tp,lscale,rscale) + local lv=0 + if c.pendulum_level then + lv=c.pendulum_level + else + lv=c:GetLevel() + end + return (c:IsLocation(LOCATION_HAND) or (c:IsFaceup() and c:IsType(TYPE_PENDULUM))) + and lv>lscale and lvrscale then lscale,rscale=rscale,lscale end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return false end + if og then + return og:IsExists(c29432356.penfilter,1,nil,e,tp,lscale,rscale) + else + return Duel.IsExistingMatchingCard(c29432356.penfilter,tp,LOCATION_HAND+LOCATION_EXTRA,0,1,nil,e,tp,lscale,rscale) + end +end +function c29432356.penop(e,tp,eg,ep,ev,re,r,rp,c,sg,og) + local lpz=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local rpz=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + local lscale=lpz:GetLeftScale() + local rscale=rpz:GetRightScale() + if lscale>rscale then lscale,rscale=rscale,lscale end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local tg=nil + if og then + tg=og:Filter(tp,c29432356.penfilter,nil,e,tp,lscale,rscale) + else + tg=Duel.GetMatchingGroup(c29432356.penfilter,tp,LOCATION_HAND+LOCATION_EXTRA,0,nil,e,tp,lscale,rscale) + end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect and (ect<=0 or ect>ft) then ect=nil end + if ect==nil or tg:FilterCount(Card.IsLocation,nil,LOCATION_EXTRA)<=ect then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=tg:Select(tp,1,ft,nil) + sg:Merge(g) + else + repeat + local ct=math.min(ft,ect) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=tg:Select(tp,1,ct,nil) + tg:Sub(g) + sg:Merge(g) + ft=ft-g:GetCount() + ect=ect-g:FilterCount(Card.IsLocation,nil,LOCATION_EXTRA) + until ft==0 or ect==0 or not Duel.SelectYesNo(tp,210) + local hg=tg:Filter(Card.IsLocation,nil,LOCATION_HAND) + if ft>0 and ect==0 and hg:GetCount()>0 and Duel.SelectYesNo(tp,210) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=hg:Select(tp,1,ft,nil) + sg:Merge(g) + end + end + Duel.HintSelection(Group.FromCards(lpz)) + Duel.HintSelection(Group.FromCards(rpz)) +end +function c29432356.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c29432356.spfilter(c,e,tp) + return c:IsSetCard(0xc4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c29432356.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c29432356.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c29432356.spop(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,c29432356.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c29455728.lua b/script/c29455728.lua index faa0b928..53db4df7 100644 --- a/script/c29455728.lua +++ b/script/c29455728.lua @@ -1,42 +1,44 @@ ---ツイン・フォトン・リザード -function c29455728.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x55),2,true) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(29455728,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c29455728.cost) - e1:SetTarget(c29455728.target) - e1:SetOperation(c29455728.operation) - c:RegisterEffect(e1) -end -function c29455728.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c29455728.mgfilter(c,e,tp,fusc) - return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) - or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc - or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c29455728.target(e,tp,eg,ep,ev,re,r,rp,chk) - local g=e:GetHandler():GetMaterial() - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)+1>=g:GetCount() - and bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION - and not g:IsExists(c29455728.mgfilter,1,nil,e,tp,e:GetHandler()) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) -end -function c29455728.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local g=e:GetHandler():GetMaterial() - if Duel.GetLocationCount(tp,LOCATION_MZONE)>=g:GetCount() - and not g:IsExists(c29455728.mgfilter,1,nil,e,tp,e:GetHandler()) - and not g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--ツイン・フォトン・リザード +function c29455728.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x55),2,true) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29455728,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c29455728.cost) + e1:SetTarget(c29455728.target) + e1:SetOperation(c29455728.operation) + c:RegisterEffect(e1) +end +function c29455728.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c29455728.mgfilter(c,e,tp,fusc,mg) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) + and bit.band(c:GetReason(),0x40008)==0x40008 and c:GetReasonCard()==fusc + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and fusc:CheckFusionMaterial(mg,c) +end +function c29455728.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetHandler():GetMaterial() + local ct=g:GetCount() + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)+1>=ct + and bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION + and g:FilterCount(c29455728.mgfilter,nil,e,tp,e:GetHandler(),g)==ct end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c29455728.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=e:GetHandler():GetMaterial() + local ct=g:GetCount() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct + and g:FilterCount(c29455728.mgfilter,nil,e,tp,e:GetHandler(),g)==ct then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c29491334.lua b/script/c29491334.lua index d074906f..a506b604 100644 --- a/script/c29491334.lua +++ b/script/c29491334.lua @@ -1,62 +1,62 @@ ---Kozmo DOG Fighter -function c29491334.initial_effect(c) - --token - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(29491334,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetTarget(c29491334.tktg) - e1:SetOperation(c29491334.tkop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(29491334,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCondition(c29491334.spcon) - e2:SetCost(c29491334.spcost) - e2:SetTarget(c29491334.sptg) - e2:SetOperation(c29491334.spop) - c:RegisterEffect(e2) -end -function c29491334.tktg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,29491335,0,0x4011,2000,2400,6,RACE_MACHINE,ATTRIBUTE_DARK) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c29491334.tkop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if not Duel.IsPlayerCanSpecialSummonMonster(tp,29491335,0,0x4011,2000,2400,6,RACE_MACHINE,ATTRIBUTE_DARK) then return end - local token=Duel.CreateToken(tp,29491335) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) -end -function c29491334.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) -end -function c29491334.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and e:GetHandler():IsLocation(LOCATION_GRAVE) end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c29491334.spfilter(c,e,tp) - return c:IsSetCard(0xd2) and c:IsLevelBelow(5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c29491334.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c29491334.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c29491334.spop(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,c29491334.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--Kozmo-ドッグファイター +function c29491334.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29491334,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetTarget(c29491334.tktg) + e1:SetOperation(c29491334.tkop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(29491334,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c29491334.spcon) + e2:SetCost(c29491334.spcost) + e2:SetTarget(c29491334.sptg) + e2:SetOperation(c29491334.spop) + c:RegisterEffect(e2) +end +function c29491334.tktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,29491335,0,0x4011,2000,2400,6,RACE_MACHINE,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c29491334.tkop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,29491335,0,0x4011,2000,2400,6,RACE_MACHINE,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,29491335) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end +function c29491334.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c29491334.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and e:GetHandler():IsLocation(LOCATION_GRAVE) end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c29491334.spfilter(c,e,tp) + return c:IsSetCard(0xd2) and c:IsLevelBelow(5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c29491334.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c29491334.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c29491334.spop(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,c29491334.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c29515122.lua b/script/c29515122.lua index 56c7107b..d8aafa38 100644 --- a/script/c29515122.lua +++ b/script/c29515122.lua @@ -7,6 +7,7 @@ function c29515122.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(29515122,0)) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DECKDES) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c29549364.lua b/script/c29549364.lua index 1a4913a8..ac4e6799 100644 --- a/script/c29549364.lua +++ b/script/c29549364.lua @@ -1,16 +1,16 @@ ---生贄封じの仮面 -function c29549364.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cannot release - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EFFECT_CANNOT_RELEASE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - c:RegisterEffect(e2) -end +--生贄封じの仮面 +function c29549364.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot release + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_RELEASE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + c:RegisterEffect(e2) +end diff --git a/script/c295517.lua b/script/c295517.lua index 59ae7ce8..02a20ec2 100644 --- a/script/c295517.lua +++ b/script/c295517.lua @@ -1,27 +1,27 @@ ---伝説の都 アトランティス -function c295517.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --level - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_LEVEL) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,LOCATION_HAND+LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) - e2:SetValue(-1) - c:RegisterEffect(e2) - --Atk - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetValue(200) - c:RegisterEffect(e3) - --Def - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) -end +--伝説の都 アトランティス +function c295517.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --level + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_LEVEL) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,LOCATION_HAND+LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e2:SetValue(-1) + c:RegisterEffect(e2) + --Atk + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetValue(200) + c:RegisterEffect(e3) + --Def + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) +end diff --git a/script/c2956282.lua b/script/c2956282.lua index 2e37ef98..df399a77 100644 --- a/script/c2956282.lua +++ b/script/c2956282.lua @@ -40,8 +40,7 @@ end function c2956282.disop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c29587993.lua b/script/c29587993.lua index 721d40a4..1c97d212 100644 --- a/script/c29587993.lua +++ b/script/c29587993.lua @@ -1,43 +1,42 @@ ---霞の谷の巨神鳥 -function c29587993.initial_effect(c) - --Negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(29587993,0)) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c29587993.discon) - e1:SetTarget(c29587993.distg) - e1:SetOperation(c29587993.disop) - c:RegisterEffect(e1) -end -function c29587993.discon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return not c:IsStatus(STATUS_BATTLE_DESTROYED) and not c:IsStatus(STATUS_CHAINING) and Duel.IsChainNegatable(ev) -end -function c29587993.filter(c) - return c:IsFaceup() and c:IsSetCard(0x37) and c:IsAbleToHand() -end -function c29587993.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c29587993.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c29587993.filter,tp,LOCATION_ONFIELD,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c29587993.filter,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c29587993.disop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end - Duel.SendtoHand(tc,nil,REASON_EFFECT) - if not tc:IsLocation(LOCATION_HAND) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--霞の谷の巨神鳥 +function c29587993.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29587993,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c29587993.discon) + e1:SetTarget(c29587993.distg) + e1:SetOperation(c29587993.disop) + c:RegisterEffect(e1) +end +function c29587993.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return not c:IsStatus(STATUS_BATTLE_DESTROYED) and not c:IsStatus(STATUS_CHAINING) and Duel.IsChainNegatable(ev) +end +function c29587993.filter(c) + return c:IsFaceup() and c:IsSetCard(0x37) and c:IsAbleToHand() +end +function c29587993.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c29587993.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c29587993.filter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c29587993.filter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c29587993.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + Duel.SendtoHand(tc,nil,REASON_EFFECT) + if not tc:IsLocation(LOCATION_HAND) then return end + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c29612557.lua b/script/c29612557.lua index ddfdb619..91932e03 100644 --- a/script/c29612557.lua +++ b/script/c29612557.lua @@ -1,21 +1,6 @@ --サイクロン・ブーメラン function c29612557.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(c29612557.target) - e1:SetOperation(c29612557.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(c29612557.eqlimit) - c:RegisterEffect(e2) + aux.AddFusionProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,86188410)) --equip effect local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) @@ -33,25 +18,6 @@ function c29612557.initial_effect(c) e4:SetOperation(c29612557.desop) c:RegisterEffect(e4) end -function c29612557.eqlimit(e,c) - return c:IsCode(86188410) -end -function c29612557.filter(c) - return c:IsFaceup() and c:IsCode(86188410) -end -function c29612557.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c29612557.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c29612557.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c29612557.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c29612557.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 c29612557.descon(e,tp,eg,ep,ev,re,r,rp) local ec=e:GetHandler():GetPreviousEquipTarget() return e:GetHandler():IsReason(REASON_LOST_TARGET) and ec:IsLocation(LOCATION_GRAVE) diff --git a/script/c29616929.lua b/script/c29616929.lua index 8f2740f8..4b19772c 100644 --- a/script/c29616929.lua +++ b/script/c29616929.lua @@ -41,8 +41,7 @@ end function c29616929.activate(e,tp,eg,ep,ev,re,r,rp) local tc=re:GetHandler() if not tc:IsDisabled() then - Duel.NegateEffect(ev) - if tc:IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and tc:IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c29618570.lua b/script/c29618570.lua index b4f4dbb1..314d8390 100644 --- a/script/c29618570.lua +++ b/script/c29618570.lua @@ -1,35 +1,35 @@ ---グレイ・ウイング -function c29618570.initial_effect(c) - --multiatk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(29618570,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c29618570.atkcon) - e1:SetCost(c29618570.atkcost) - e1:SetTarget(c29618570.atktg) - e1:SetOperation(c29618570.atkop) - c:RegisterEffect(e1) -end -function c29618570.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c29618570.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c29618570.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetEffectCount(EFFECT_EXTRA_ATTACK)==0 end -end -function c29618570.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--グレイ・ウイング +function c29618570.initial_effect(c) + --multiatk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29618570,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c29618570.atkcon) + e1:SetCost(c29618570.atkcost) + e1:SetTarget(c29618570.atktg) + e1:SetOperation(c29618570.atkop) + c:RegisterEffect(e1) +end +function c29618570.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c29618570.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c29618570.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEffectCount(EFFECT_EXTRA_ATTACK)==0 end +end +function c29618570.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c296499.lua b/script/c296499.lua index 8b2d8ee5..51995a3e 100644 --- a/script/c296499.lua +++ b/script/c296499.lua @@ -1,49 +1,49 @@ ---一族の掟 -function c296499.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c296499.target) - c:RegisterEffect(e1) - --cannot attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c296499.atktarget) - c:RegisterEffect(e2) - e2:SetLabelObject(e1) - --maintain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c296499.mtcon) - e3:SetOperation(c296499.mtop) - c:RegisterEffect(e3) -end -function c296499.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,563) - local rc=Duel.AnnounceRace(tp,1,0xffffff) - e:SetLabel(rc) - e:GetHandler():SetHint(CHINT_RACE,rc) -end -function c296499.atktarget(e,c) - return c:GetRace()==e:GetLabelObject():GetLabel() -end -function c296499.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c296499.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckReleaseGroup(tp,Card.IsReleasable,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(296499,0)) then - local g=Duel.SelectReleaseGroup(tp,Card.IsReleasable,1,1,nil) - Duel.Release(g,REASON_COST) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--一族の掟 +function c296499.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c296499.target) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c296499.atktarget) + c:RegisterEffect(e2) + e2:SetLabelObject(e1) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c296499.mtcon) + e3:SetOperation(c296499.mtop) + c:RegisterEffect(e3) +end +function c296499.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,563) + local rc=Duel.AnnounceRace(tp,1,0xffffff) + e:SetLabel(rc) + e:GetHandler():SetHint(CHINT_RACE,rc) +end +function c296499.atktarget(e,c) + return c:GetRace()==e:GetLabelObject():GetLabel() +end +function c296499.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c296499.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckReleaseGroup(tp,Card.IsReleasable,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(296499,0)) then + local g=Duel.SelectReleaseGroup(tp,Card.IsReleasable,1,1,nil) + Duel.Release(g,REASON_COST) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c29669359.lua b/script/c29669359.lua index bba00404..ea164443 100644 --- a/script/c29669359.lua +++ b/script/c29669359.lua @@ -8,7 +8,7 @@ function c29669359.initial_effect(c) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) e1:SetDescription(aux.Stringid(29669359,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c29669359.cost) diff --git a/script/c29726552.lua b/script/c29726552.lua index 4d6301c9..644e0268 100644 --- a/script/c29726552.lua +++ b/script/c29726552.lua @@ -1,90 +1,90 @@ ---Kumongous, the Sticky String Kaiju -function c29726552.initial_effect(c) - c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) - --special summon rule - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e1:SetTargetRange(POS_FACEUP_ATTACK,1) - e1:SetCondition(c29726552.spcon) - e1:SetOperation(c29726552.spop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetRange(LOCATION_HAND) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e2:SetTargetRange(POS_FACEUP_ATTACK,0) - e2:SetCondition(c29726552.spcon2) - c:RegisterEffect(e2) - --disable - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DISABLE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c29726552.cost) - e3:SetTarget(c29726552.target) - e3:SetOperation(c29726552.operation) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) -end -function c29726552.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xd3) -end -function c29726552.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(Card.IsReleasable,tp,0,LOCATION_MZONE,1,nil) -end -function c29726552.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c29726552.spcon2(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c29726552.cfilter,tp,0,LOCATION_MZONE,1,nil) -end -function c29726552.filter(c,tp) - return c:GetSummonPlayer()==tp -end -function c29726552.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsCanRemoveCounter(tp,1,1,0x37,2,REASON_COST) end - Duel.RemoveCounter(tp,1,1,0x37,2,REASON_COST) -end -function c29726552.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c29726552.filter,1,nil,1-tp) and not eg:IsContains(e:GetHandler()) end - local g=eg:Filter(c29726552.filter,nil,1-tp) - Duel.SetTargetCard(g) -end -function c29726552.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE_EFFECT) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) - tc:RegisterEffect(e3) - tc=g:GetNext() - end -end +--粘糸壊獣クモグス +function c29726552.initial_effect(c) + c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetTargetRange(POS_FACEUP_ATTACK,1) + e1:SetCondition(c29726552.spcon) + e1:SetOperation(c29726552.spop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetRange(LOCATION_HAND) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e2:SetTargetRange(POS_FACEUP_ATTACK,0) + e2:SetCondition(c29726552.spcon2) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c29726552.cost) + e3:SetTarget(c29726552.target) + e3:SetOperation(c29726552.operation) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c29726552.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xd3) +end +function c29726552.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(Card.IsReleasable,tp,0,LOCATION_MZONE,1,nil) +end +function c29726552.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c29726552.spcon2(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c29726552.cfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c29726552.filter(c,tp) + return c:GetSummonPlayer()==tp and c:IsFaceup() +end +function c29726552.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsCanRemoveCounter(tp,1,1,0x37,2,REASON_COST) end + Duel.RemoveCounter(tp,1,1,0x37,2,REASON_COST) +end +function c29726552.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c29726552.filter,1,nil,1-tp) and not eg:IsContains(e:GetHandler()) end + local g=eg:Filter(c29726552.filter,nil,1-tp) + Duel.SetTargetCard(g) +end +function c29726552.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e3) + tc=g:GetNext() + end +end diff --git a/script/c29735721.lua b/script/c29735721.lua index 8f6afb1a..ade9d54f 100644 --- a/script/c29735721.lua +++ b/script/c29735721.lua @@ -1,41 +1,40 @@ ---呪術抹消 -function c29735721.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c29735721.condition) - e1:SetCost(c29735721.cost) - e1:SetTarget(c29735721.target) - e1:SetOperation(c29735721.activate) - c:RegisterEffect(e1) -end -function c29735721.condition(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c29735721.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,2,e:GetHandler()) end - Duel.DiscardHand(tp,Card.IsDiscardable,2,2,REASON_COST+REASON_DISCARD) -end -function c29735721.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c29735721.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end - Duel.BreakEffect() - local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND+LOCATION_DECK) - Duel.ConfirmCards(tp,g) - local sg=g:Filter(Card.IsCode,nil,re:GetHandler():GetCode()) - Duel.SendtoGrave(sg,REASON_EFFECT) - Duel.ShuffleHand(1-tp) - Duel.ShuffleDeck(1-tp) -end +--呪術抹消 +function c29735721.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c29735721.condition) + e1:SetCost(c29735721.cost) + e1:SetTarget(c29735721.target) + e1:SetOperation(c29735721.activate) + c:RegisterEffect(e1) +end +function c29735721.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c29735721.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,2,e:GetHandler()) end + Duel.DiscardHand(tp,Card.IsDiscardable,2,2,REASON_COST+REASON_DISCARD) +end +function c29735721.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c29735721.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + Duel.BreakEffect() + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND+LOCATION_DECK) + Duel.ConfirmCards(tp,g) + local sg=g:Filter(Card.IsCode,nil,re:GetHandler():GetCode()) + Duel.SendtoGrave(sg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + Duel.ShuffleDeck(1-tp) +end diff --git a/script/c29765339.lua b/script/c29765339.lua index b664830d..8a0b9666 100644 --- a/script/c29765339.lua +++ b/script/c29765339.lua @@ -1,55 +1,55 @@ ---エレキリム -function c29765339.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0xe),aux.NonTuner(Card.IsRace,RACE_THUNDER),1) - c:EnableReviveLimit() - --direct attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - c:RegisterEffect(e1) - --handes - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(29765339,0)) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_BATTLE_DAMAGE) - e2:SetCondition(c29765339.condition) - e2:SetTarget(c29765339.target) - e2:SetOperation(c29765339.operation) - c:RegisterEffect(e2) -end -function c29765339.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and Duel.GetAttackTarget()==nil -end -function c29765339.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) -end -function c29765339.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,1,nil) - local tg=g:GetFirst() - if tg==nil then return end - Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_REMOVED) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - e1:SetCondition(c29765339.thcon) - e1:SetOperation(c29765339.thop) - e1:SetLabel(0) - tg:RegisterEffect(e1) -end -function c29765339.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c29765339.thop(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetLabel() - if ct==1 then - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,e:GetHandler()) - else e:SetLabel(1) end -end +--エレキリム +function c29765339.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0xe),aux.NonTuner(Card.IsRace,RACE_THUNDER),1) + c:EnableReviveLimit() + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e1) + --handes + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(29765339,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c29765339.condition) + e2:SetTarget(c29765339.target) + e2:SetOperation(c29765339.operation) + c:RegisterEffect(e2) +end +function c29765339.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetAttackTarget()==nil +end +function c29765339.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) +end +function c29765339.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,1,nil) + local tg=g:GetFirst() + if tg==nil then return end + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_REMOVED) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e1:SetCondition(c29765339.thcon) + e1:SetOperation(c29765339.thop) + e1:SetLabel(0) + tg:RegisterEffect(e1) +end +function c29765339.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c29765339.thop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + if ct==1 then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,e:GetHandler()) + else e:SetLabel(1) end +end diff --git a/script/c2978414.lua b/script/c2978414.lua index f52a7089..3d77916c 100644 --- a/script/c2978414.lua +++ b/script/c2978414.lua @@ -7,6 +7,7 @@ function c2978414.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(2978414,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) @@ -19,7 +20,7 @@ function c2978414.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(2978414,1)) e2:SetCategory(CATEGORY_CONTROL) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) @@ -32,6 +33,7 @@ function c2978414.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(2978414,2)) e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e3:SetCondition(c2978414.condition) diff --git a/script/c29795530.lua b/script/c29795530.lua index 0776e02e..b1ad0b83 100644 --- a/script/c29795530.lua +++ b/script/c29795530.lua @@ -1,64 +1,64 @@ ---妖怪のいたずら -function c29795530.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetTarget(c29795530.target) - e1:SetOperation(c29795530.activate) - c:RegisterEffect(e1) - --lvdown - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(29795530,0)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetHintTiming(0,0x1c0) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(aux.exccon) - e2:SetCost(c29795530.lvcost) - e2:SetTarget(c29795530.lvtg) - e2:SetOperation(c29795530.lvop) - c:RegisterEffect(e2) -end -function c29795530.filter(c) - return c:IsFaceup() and c:IsLevelAbove(2) -end -function c29795530.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c29795530.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end -end -function c29795530.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c29795530.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(-2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end -function c29795530.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c29795530.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c29795530.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c29795530.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c29795530.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c29795530.lvop(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_UPDATE_LEVEL) - e1:SetValue(-1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--妖怪のいたずら +function c29795530.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetTarget(c29795530.target) + e1:SetOperation(c29795530.activate) + c:RegisterEffect(e1) + --lvdown + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(29795530,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,0x1c0) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(aux.exccon) + e2:SetCost(c29795530.lvcost) + e2:SetTarget(c29795530.lvtg) + e2:SetOperation(c29795530.lvop) + c:RegisterEffect(e2) +end +function c29795530.filter(c) + return c:IsFaceup() and c:IsLevelAbove(2) +end +function c29795530.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c29795530.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c29795530.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c29795530.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c29795530.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c29795530.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c29795530.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c29795530.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c29795530.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c29795530.lvop(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_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c29834183.lua b/script/c29834183.lua index f9a31296..d14b4c17 100644 --- a/script/c29834183.lua +++ b/script/c29834183.lua @@ -1,79 +1,79 @@ ---グレイドル・イーグル -function c29834183.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c29834183.eqcon) - e1:SetTarget(c29834183.eqtg) - e1:SetOperation(c29834183.eqop) - c:RegisterEffect(e1) -end -function c29834183.eqcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and re:IsActiveType(TYPE_MONSTER))) - and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) -end -function c29834183.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c29834183.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c29834183.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then - Duel.Equip(tp,c,tc,true) - --Add Equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c29834183.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) - --control - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_SET_CONTROL) - e2:SetValue(tp) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - --Destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EVENT_LEAVE_FIELD_P) - e3:SetOperation(c29834183.checkop) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetOperation(c29834183.desop) - e4:SetReset(RESET_EVENT+0x17e0000) - e4:SetLabelObject(e3) - c:RegisterEffect(e4) - end -end -function c29834183.checkop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsDisabled() then - e:SetLabel(1) - else e:SetLabel(0) end -end -function c29834183.desop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabelObject():GetLabel()~=0 then return end - local tc=e:GetHandler():GetEquipTarget() - if tc and tc:IsLocation(LOCATION_MZONE) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--グレイドル・イーグル +function c29834183.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c29834183.eqcon) + e1:SetTarget(c29834183.eqtg) + e1:SetOperation(c29834183.eqop) + c:RegisterEffect(e1) +end +function c29834183.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and re:IsActiveType(TYPE_MONSTER))) + and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c29834183.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c29834183.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c29834183.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then + Duel.Equip(tp,c,tc,true) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c29834183.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + --control + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_CONTROL) + e2:SetValue(tp) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_LEAVE_FIELD_P) + e3:SetOperation(c29834183.checkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c29834183.desop) + e4:SetReset(RESET_EVENT+0x17e0000) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) + end +end +function c29834183.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c29834183.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetEquipTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c29843091.lua b/script/c29843091.lua index a0552006..d45358b7 100644 --- a/script/c29843091.lua +++ b/script/c29843091.lua @@ -1,48 +1,48 @@ ---おジャマトリオ -function c29843091.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(c29843091.target) - e1:SetOperation(c29843091.activate) - c:RegisterEffect(e1) -end -function c29843091.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>2 - and Duel.IsPlayerCanSpecialSummonMonster(tp,29843092,0xf,0x4011,0,1000,2,RACE_BEAST,ATTRIBUTE_LIGHT,POS_FACEUP_DEFENSE,1-tp) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) -end -function c29843091.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)<3 then return end - if not Duel.IsPlayerCanSpecialSummonMonster(tp,29843092,0xf,0x4011,0,1000,2,RACE_BEAST,ATTRIBUTE_LIGHT,POS_FACEUP_DEFENSE,1-tp) then return end - for i=1,3 do - local token=Duel.CreateToken(tp,29843091+i) - if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(1) - token:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetOperation(c29843091.damop) - token:RegisterEffect(e2,true) - end - end - Duel.SpecialSummonComplete() -end -function c29843091.damop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsReason(REASON_DESTROY) then - Duel.Damage(c:GetPreviousControler(),300,REASON_EFFECT) - end - e:Reset() -end +--おジャマトリオ +function c29843091.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(c29843091.target) + e1:SetOperation(c29843091.activate) + c:RegisterEffect(e1) +end +function c29843091.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>2 + and Duel.IsPlayerCanSpecialSummonMonster(tp,29843092,0xf,0x4011,0,1000,2,RACE_BEAST,ATTRIBUTE_LIGHT,POS_FACEUP_DEFENSE,1-tp) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c29843091.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)<3 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,29843092,0xf,0x4011,0,1000,2,RACE_BEAST,ATTRIBUTE_LIGHT,POS_FACEUP_DEFENSE,1-tp) then return end + for i=1,3 do + local token=Duel.CreateToken(tp,29843091+i) + if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c29843091.damop) + token:RegisterEffect(e2,true) + end + end + Duel.SpecialSummonComplete() +end +function c29843091.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsReason(REASON_DESTROY) then + Duel.Damage(c:GetPreviousControler(),300,REASON_EFFECT) + end + e:Reset() +end diff --git a/script/c2986553.lua b/script/c2986553.lua index edc36f94..c16e3f5e 100644 --- a/script/c2986553.lua +++ b/script/c2986553.lua @@ -1,39 +1,39 @@ ---夜薔薇の騎士 -function c2986553.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetValue(c2986553.atlimit) - c:RegisterEffect(e1) - --summon success - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(2986553,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetTarget(c2986553.sumtg) - e2:SetOperation(c2986553.sumop) - c:RegisterEffect(e2) -end -function c2986553.atlimit(e,c) - return c:IsFaceup() and c:IsRace(RACE_PLANT) -end -function c2986553.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c2986553.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c2986553.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c2986553.sumop(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,c2986553.filter,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 c2986553.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c2986553.atlimit) + c:RegisterEffect(e1) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(2986553,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c2986553.sumtg) + e2:SetOperation(c2986553.sumop) + c:RegisterEffect(e2) +end +function c2986553.atlimit(e,c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c2986553.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c2986553.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c2986553.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c2986553.sumop(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,c2986553.filter,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 diff --git a/script/c29876529.lua b/script/c29876529.lua index c89bbf94..788cb23b 100644 --- a/script/c29876529.lua +++ b/script/c29876529.lua @@ -1,45 +1,45 @@ ---闇の閃光 -function c29876529.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - e1:SetCost(c29876529.cost) - e1:SetTarget(c29876529.target) - e1:SetOperation(c29876529.activate) - c:RegisterEffect(e1) -end -function c29876529.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - return true -end -function c29876529.costfilter(c) - return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackAbove(1500) - and Duel.IsExistingMatchingCard(c29876529.dfilter,0,LOCATION_MZONE,LOCATION_MZONE,1,c) -end -function c29876529.dfilter(c) - return c:IsStatus(STATUS_SPSUMMON_TURN) -end -function c29876529.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if e:GetLabel()~=0 then - e:SetLabel(0) - return Duel.CheckReleaseGroup(tp,c29876529.costfilter,1,nil) - else - return Duel.IsExistingMatchingCard(c29876529.dfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) - end - end - if e:GetLabel()==1 then - e:SetLabel(0) - local rg=Duel.SelectReleaseGroup(tp,c29876529.costfilter,1,1,nil) - Duel.Release(rg,REASON_COST) - end - local g=Duel.GetMatchingGroup(c29876529.dfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c29876529.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c29876529.dfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end +--闇の閃光 +function c29876529.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetCost(c29876529.cost) + e1:SetTarget(c29876529.target) + e1:SetOperation(c29876529.activate) + c:RegisterEffect(e1) +end +function c29876529.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c29876529.costfilter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackAbove(1500) + and Duel.IsExistingMatchingCard(c29876529.dfilter,0,LOCATION_MZONE,LOCATION_MZONE,1,c) +end +function c29876529.dfilter(c) + return c:IsStatus(STATUS_SPSUMMON_TURN) +end +function c29876529.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=0 then + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c29876529.costfilter,1,nil) + else + return Duel.IsExistingMatchingCard(c29876529.dfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + end + end + if e:GetLabel()==1 then + e:SetLabel(0) + local rg=Duel.SelectReleaseGroup(tp,c29876529.costfilter,1,1,nil) + Duel.Release(rg,REASON_COST) + end + local g=Duel.GetMatchingGroup(c29876529.dfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c29876529.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c29876529.dfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c29904964.lua b/script/c29904964.lua index f386a63f..03e5dfc3 100644 --- a/script/c29904964.lua +++ b/script/c29904964.lua @@ -1,51 +1,51 @@ ---覚醒の暗黒騎士ガイア -function c29904964.initial_effect(c) - --summon with no tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(29904964,0)) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SUMMON_PROC) - e1:SetCondition(c29904964.ntcon) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(29904964,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_RELEASE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,29904964) - e2:SetTarget(c29904964.sptg) - e2:SetOperation(c29904964.spop) - c:RegisterEffect(e2) - --ritual material - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) - e3:SetValue(c29904964.mtval) - c:RegisterEffect(e3) -end -function c29904964.ntcon(e,c,minc) - if c==nil then return true end - local tp=c:GetControler() - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) -end -function c29904964.spfilter(c,e,tp) - return c:IsSetCard(0x10cf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c29904964.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c29904964.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c29904964.spop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c29904964.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c29904964.mtval(e,c) - return c:IsSetCard(0x10cf) -end +--覚醒の暗黒騎士ガイア +function c29904964.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29904964,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c29904964.ntcon) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(29904964,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_RELEASE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,29904964) + e2:SetTarget(c29904964.sptg) + e2:SetOperation(c29904964.spop) + c:RegisterEffect(e2) + --ritual material + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) + e3:SetValue(c29904964.mtval) + c:RegisterEffect(e3) +end +function c29904964.ntcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) +end +function c29904964.spfilter(c,e,tp) + return c:IsSetCard(0x10cf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c29904964.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c29904964.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c29904964.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c29904964.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c29904964.mtval(e,c) + return c:IsSetCard(0x10cf) +end diff --git a/script/c29934351.lua b/script/c29934351.lua index 610c2ac1..60afb1c0 100644 --- a/script/c29934351.lua +++ b/script/c29934351.lua @@ -25,8 +25,7 @@ function c29934351.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c29934351.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c29947751.lua b/script/c29947751.lua index eae2eb4c..3e3c13d0 100644 --- a/script/c29947751.lua +++ b/script/c29947751.lua @@ -1,42 +1,42 @@ ---D・マグネンU -function c29947751.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetCondition(c29947751.cona) - e1:SetValue(c29947751.vala) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e2:SetCondition(c29947751.cona) - c:RegisterEffect(e2) - --def - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e3:SetCondition(c29947751.cond) - e3:SetValue(c29947751.atlimit) - c:RegisterEffect(e3) -end -function c29947751.cona(e) - return e:GetHandler():IsAttackPos() - and Duel.IsExistingMatchingCard(Card.IsFaceup,e:GetHandler():GetControler(),0,LOCATION_MZONE,1,nil) -end -function c29947751.filter(c,atk) - return c:IsFaceup() and c:GetAttack()>atk -end -function c29947751.vala(e,c) - if c:IsFaceup() then - return Duel.IsExistingMatchingCard(c29947751.filter,c:GetControler(),LOCATION_MZONE,0,1,c,c:GetAttack()) - else return true end -end -function c29947751.cond(e) - return e:GetHandler():IsDefensePos() -end -function c29947751.atlimit(e,c) - return c~=e:GetHandler() -end +--D・マグネンU +function c29947751.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetCondition(c29947751.cona) + e1:SetValue(c29947751.vala) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetCondition(c29947751.cona) + c:RegisterEffect(e2) + --def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e3:SetCondition(c29947751.cond) + e3:SetValue(c29947751.atlimit) + c:RegisterEffect(e3) +end +function c29947751.cona(e) + return e:GetHandler():IsAttackPos() + and Duel.IsExistingMatchingCard(Card.IsFaceup,e:GetHandler():GetControler(),0,LOCATION_MZONE,1,nil) +end +function c29947751.filter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c29947751.vala(e,c) + if c:IsFaceup() then + return Duel.IsExistingMatchingCard(c29947751.filter,c:GetControler(),LOCATION_MZONE,0,1,c,c:GetAttack()) + else return true end +end +function c29947751.cond(e) + return e:GetHandler():IsDefensePos() +end +function c29947751.atlimit(e,c) + return c~=e:GetHandler() +end diff --git a/script/c29951323.lua b/script/c29951323.lua index d24dc9ed..e1d39c8f 100644 --- a/script/c29951323.lua +++ b/script/c29951323.lua @@ -57,7 +57,7 @@ end function c29951323.countcon2(e) return Duel.GetTurnPlayer()~=e:GetHandlerPlayer() end -function c29951323.countval(e,tp) +function c29951323.countval(e,re,tp) local t1=Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON) local t2=Duel.GetBattledCount(tp) if t1>=t2 then return 0 else return t2-t1 end diff --git a/script/c29981921.lua b/script/c29981921.lua index 0d5d6667..efb7bf79 100644 --- a/script/c29981921.lua +++ b/script/c29981921.lua @@ -38,8 +38,7 @@ function c29981921.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c29981921.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c300.lua b/script/c300.lua new file mode 100644 index 00000000..0c6ac349 --- /dev/null +++ b/script/c300.lua @@ -0,0 +1,487 @@ +--Deck Masters Basic Effects +--Scripted by edo9300 +function c300.initial_effect(c) + if not c300.global_check then + c300.global_check=true + --register + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCondition(c300.con) + e1:SetOperation(c300.op) + Duel.RegisterEffect(e1,0) + --Pass ability Material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e2:SetTarget(c300.target) + Duel.RegisterEffect(e2,0) + --Pass Ability on destroyed + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e3:SetTarget(c300.target2) + Duel.RegisterEffect(e3,0) + --Lose + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_DRAW) + e4:SetCountLimit(1) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetOperation(c300.loseop2) + Duel.RegisterEffect(e4,0) + local e5=e4:Clone() + e5:SetCode(EVENT_PHASE+PHASE_STANDBY) + Duel.RegisterEffect(e5,0) + local e6=e4:Clone() + e6:SetCode(EVENT_PHASE_START+PHASE_BATTLE_START) + Duel.RegisterEffect(e6,0) + local e7=e4:Clone() + e7:SetCode(EVENT_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e7,0) + local e8=e4:Clone() + e8:SetCode(EVENT_PHASE_START+PHASE_END) + Duel.RegisterEffect(e8,0) + local e9=e4:Clone() + e9:SetCode(EVENT_PHASE+PHASE_END) + Duel.RegisterEffect(e9,0) + --Revive Limit + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e10:SetCode(EVENT_ADJUST) + e10:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e10:SetTargetRange(LOCATION_EXTRA,LOCATION_EXTRA) + e10:SetCondition(c300.rvcon) + e10:SetOperation(c300.rvop) + Duel.RegisterEffect(e10,0) + --description + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e11:SetCode(EVENT_ADJUST) + e11:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e11:SetCondition(c300.dcon) + e11:SetOperation(c300.dop) + Duel.RegisterEffect(e11,0) + end +end +function c300.dcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(function(c)return c:GetFlagEffect(300)>0 and not c:IsHasEffect(300) end,tp,0xff,0xff,1,nil) +end +function c300.dop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(function(c)return c:GetFlagEffect(300)>0 and not c:IsHasEffect(300) end,tp,0xff,0xff,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(51100567,14)) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(300) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + tc=g:GetNext() + end + end +end +function c300.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==1 +end +function c300.accon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c300.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(function(c) return c.dm end,tp,0xff,0xff,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(300+3)==0 then + --Remove Pendulum + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_REMOVE_TYPE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(TYPE_PENDULUM) + e1:SetRange(0Xff) + tc:RegisterEffect(e1) + --Cannot to Extra + local e2=Effect.CreateEffect(tc) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_TO_DECK) + e2:SetCondition(c300.recon) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(300+3,RESET_PHASE+PHASE_DRAW,0,1) + end + tc=g:GetNext() + end + if Duel.GetMatchingGroupCount(function(c) return c.dm and not c.dm_no_activable and c:GetFlagEffect(300+4)==0 end,tp,0xff,0,nil)>0 and Duel.GetMatchingGroupCount(function(c) return c.dm and not c.dm_no_activable and c:GetFlagEffect(300+4)==0 end,tp,0,0xff,nil)>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100570,1)) + sel1=Duel.SelectOption(tp,aux.Stringid(51100570,2),aux.Stringid(51100570,3),aux.Stringid(51100570,4)) + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51100570,1)) + sel2=Duel.SelectOption(1-tp,aux.Stringid(51100570,2),aux.Stringid(51100570,3),aux.Stringid(51100570,4)) + c=0 + if sel1==sel2 then + b=1 + if sel1==1 then + Duel.RegisterFlagEffect(tp,300+4,0,0,1) + c=1 + end + if sel1==2 then + Duel.RegisterFlagEffect(tp,300+4,0,0,1) + c=2 + end + else + b=0 + end + local aaa=Group.CreateGroup() + if b==1 then + if c>0 then + local size=tableDm_size + while size>0 do + local token=Duel.CreateToken(tp,tableDm[size]) + Duel.SendtoGrave(token,nil,REASON_RULE) + aaa:AddCard(token) + size=size-1 + end + end + if c>0 then + if c==1 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100570,5)) + tcc1=aaa:Select(tp,1,1,nil):GetFirst() + end + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51100570,5)) + tcc2=aaa:Select(1-tp,1,1,nil):GetFirst() + end + Duel.SendtoDeck(aaa,nil,-2,REASON_RULE) + for a=0,1 do + local g1=Duel.GetMatchingGroup(function(c) return c.dm and not c.dm_no_activable and c:GetFlagEffect(300+4)==0 end,a-tp,0xff,0,nil) + if g1:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,a-tp,aux.Stringid(51100567,0)) + tc=g1:Select(a-tp,1,1,nil):GetFirst() + else + tc=g1:GetFirst() + end + local g3=Group.FromCards(tc) + if a==0 and tcc1 then + local tc1=Duel.CreateToken(tp,tcc1:GetOriginalCode()) + tc1:RegisterFlagEffect(300+2,0,0,1) + g3:AddCard(tc1) + --Lose + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetLabel(tcc1:GetOriginalCode()) + e1:SetOwnerPlayer(tp) + e1:SetLabelObject(tcc1) + e1:SetCondition(c300.con2) + e1:SetOperation(c300.op1) + Duel.RegisterEffect(e1,tp) + end + if a==1 and tcc2 then + local tc2=Duel.CreateToken(1-tp,tcc2:GetOriginalCode()) + tc2:RegisterFlagEffect(300+2,0,0,1) + g3:AddCard(tc2) + --Lose + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetLabel(tcc2:GetOriginalCode()) + e1:SetOwnerPlayer(tp) + e1:SetLabelObject(tcc2) + e1:SetCondition(c300.con1) + e1:SetOperation(c300.op1) + Duel.RegisterEffect(e1,1-tp) + end + local tc=g3:GetFirst() + while tc do + tc:RegisterFlagEffect(300,0,0,1) + if not tc.dm_custom_activate then + --Activate + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetReset(RESET_CHAIN) + tc:RegisterEffect(e1) + end + local tc1=Duel.GetFieldCard(a-tp,LOCATION_SZONE,6) + local tc2=Duel.GetFieldCard(a-tp,LOCATION_SZONE,7) + if tc1==nil or tc2==nil then + Duel.MoveToField(tc,a-tp,a-tp,LOCATION_SZONE,POS_FACEUP,true) + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + tc:CreateEffectRelation(te) + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if not tc.dm_custom then + if not tc.dm_no_spsummon then + --spsummon + local e1=Effect.CreateEffect(tc) + e1:SetDescription(aux.Stringid(51100567,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetTarget(c300.sptg) + e1:SetOperation(c300.spop) + tc:RegisterEffect(e1) + end + if not tc.dm_no_splimit then + --splimit + local e2=Effect.CreateEffect(tc) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetTargetRange(1,0) + e2:SetTarget(c300.splimit) + tc:RegisterEffect(e2) + end + if not tc.dm_no_immune then + --Immune + local e3=Effect.CreateEffect(tc) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_PZONE) + e3:SetValue(1) + tc:RegisterEffect(e3) + end + end + end + if tc:GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(a-tp,1,REASON_RULE) + end + tc=g3:GetNext() + end + end + else + Duel.RegisterFlagEffect(tp,300+2,0,0,1) + Duel.RegisterFlagEffect(1-tp,300+2,0,0,1) + local g=Duel.GetMatchingGroup(function(c)return c.dm_replace_original end,tp,0xff,0xff,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + local code=tc:GetCode() + local loc=tc:GetLocation() + Duel.SendtoDeck(tc,nil,-2,REASON_RULE) + local token=Duel.CreateToken(tp,code) + if loc==LOCATION_DECK then + Duel.SendtoDeck(token,tc:GetControler(),2,REASON_RULE) + elseif loc==LOCATION_HAND then + Duel.SendtoHand(token,tc:GetControler(),2,REASON_RULE) + end + tc=g:GetNext() + end + end + end + else + Duel.RegisterFlagEffect(tp,300+2,0,0,1) + Duel.RegisterFlagEffect(1-tp,300+2,0,0,1) + local g=Duel.GetMatchingGroup(function(c)return c.dm_replace_original end,tp,0xff,0xff,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + local code=tc:GetCode() + local loc=tc:GetLocation() + Duel.SendtoDeck(tc,nil,-2,REASON_RULE) + local token=Duel.CreateToken(tp,code) + if loc==LOCATION_DECK then + Duel.SendtoDeck(token,tc:GetControler(),2,REASON_RULE) + elseif loc==LOCATION_HAND then + Duel.SendtoHand(token,tc:GetControler(),2,REASON_RULE) + end + tc=g:GetNext() + end + end + end + Duel.RegisterFlagEffect(tp,300+3,0,0,1) + end +end +function c300.con1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==e:GetOwnerPlayer() and Duel.GetFlagEffect(e:GetOwnerPlayer(),300+3)==0 +end +function c300.con2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==e:GetOwnerPlayer() and Duel.GetFlagEffect(e:GetOwnerPlayer(),300+3)==1 +end +function c300.op1(e,tp,eg,ep,ev,re,r,rp) + local code=e:GetLabel() + local tc=e:GetLabelObject() + local tp=e:GetOwnerPlayer() + Duel.RegisterFlagEffect(tp,300+3,0,0,1) + local g=Duel.GetMatchingGroup(c300.dmfilter,tp,LOCATION_EXTRA+LOCATION_DECK+LOCATION_HAND,0,nil,code) + if g:GetCount()>0 then + Duel.SendtoDeck(g:GetFirst(),tp,-2,REASON_RULE) + if g:GetFirst():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end + else + Duel.Win(1-tp,0x56) + end +end +function c300.dmfilter(c,code) + return c:GetOriginalCode()==code and c:GetFlagEffect(300+2)==0 +end +function c300.recon(e) + local c=e:GetHandler() + return c:GetDestination()==LOCATION_GRAVE and c:IsLocation(LOCATION_ONFIELD) +end +function c300.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c300.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c300.abcon(c) + if c.dm_custom_pass_ability then return c.dm_custom_pass_ability + else + return c:GetFlagEffect(300)>0 and r~=REASON_SUMMON end +end +function c300.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c300.abcon,1,nil,tp) end + local g=eg:Filter(c300.abcon,nil,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + local rc=tc:GetReasonCard() + rc:RegisterFlagEffect(300,0,0,1) + tc:ResetFlagEffect(300) + tc=g:GetNext() + end + end +end +function c300.abcon2(c) + if c.dm_custom_lose then return c.dm_custom_lose + else + return c:GetFlagEffect(300)>0 and r~=1048650 + end +end +function c300.target2(e,tp,eg,ep,ev,re,r,rp) + if chk==0 then return eg:IsExists(c300.abcon2,1,nil,tp) end + local g=eg:Filter(c300.abcon2,nil,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + tc:ResetFlagEffect(300) + Duel.ResetFlagEffect(tc:GetControler(),300+2) + if not tc:IsReason(REASON_DESTROY) then + Duel.RegisterFlagEffect(tc:GetControler(),300+2,0,0,1) + end + if Duel.GetMatchingGroupCount(c300.fil2,tc:GetControler(),0xff,0,nil)==0 then + local ph=Duel.GetCurrentPhase() + if ph>0x08 and ph<0x80 then ph=0x80 end + --New dm on summon + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e1:SetLabel(tc:GetControler()) + e1:SetOperation(c300.checkop) + e1:SetReset(RESET_PHASE+ph) + Duel.RegisterEffect(e1,tc:GetControler()) + Duel.RegisterFlagEffect(tc:GetControler(),300+1,0,0,1) + end + tc=g:GetNext() + end +end +end +function c300.splimit(e,c,tp,sumtp,sumpos) + return bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c300.filterdm(c,tp) + return c:IsType(TYPE_MONSTER) and c:GetControler()==tp +end +function c300.checkop(e,tp,eg,ep,ev,re,r,rp) + local tp=e:GetLabel() + if Duel.GetFlagEffect(tp,300+1)~=0 and Duel.GetMatchingGroupCount(c300.fil2,tp,0xff,0,nil)==0 then + local g=eg:Filter(c300.filterdm,nil,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(300,0,0,1) + tc=g:GetNext() + end + Duel.ResetFlagEffect(tp,300+1) + if Duel.GetFlagEffect(tp,300+2) then + Duel.ResetFlagEffect(tp,300+2) + end + end + end +end +function c300.fil2(c) + return c:GetFlagEffect(300)>0 +end +function c300.loseop2(e,tp,eg,ep,ev,re,r,rp) + local WIN_REASON_DM=0x56 + local g1=Duel.GetMatchingGroupCount(c300.fil2,tp,0xff,0,nil) + local g2=Duel.GetMatchingGroupCount(c300.fil2,tp,0,0xff,nil) + local f1=Duel.GetFlagEffect(tp,300+2) + local f2=Duel.GetFlagEffect(1-tp,300+2) + if g1==0 and g2>0 and f1==0 then + Duel.Win(1-tp,WIN_REASON_DM) + elseif g1==0 and g2==0 and f2==0 and f1==0 then + Duel.Win(PLAYER_NONE,WIN_REASON_DM) + elseif g1>0 and g2==0 and f2==0 then + Duel.Win(tp,WIN_REASON_DM) + end +end +function c300.rvcon(tp) + return Duel.GetFlagEffect(tp,300+3)>0 +end +function c300.rvfil(c) + return c.dm_revive_limit and c:GetFlagEffect(300+4)>0 +end +function c300.rvop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c300.rvfil,tp,LOCATION_EXTRA,LOCATION_EXTRA,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + tc:EnableReviveLimit() + tc:RegisterFlagEffect(300+4,0,0,1) + tc=g:GetNext() + end + end +end +tableDm = { +51100567, +51100570, +511000559, +511000560, +511000562, +511000563, +511000564, +511000565, +511000566, +511000568, +511000569, +511000571, +511000572, +511000573, +511000574, +511000575, +511000590 +} +tableDm_size=17 \ No newline at end of file diff --git a/script/c30012506.lua b/script/c30012506.lua index 87d6e99d..36635caf 100644 --- a/script/c30012506.lua +++ b/script/c30012506.lua @@ -51,7 +51,8 @@ function c30012506.initial_effect(c) c:RegisterEffect(e6) end function c30012506.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) + local ct1,ct2=c:GetUnionCount() + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) and ct2==0 end function c30012506.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) local c=e:GetHandler() @@ -72,7 +73,7 @@ function c30012506.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c30012506.sptg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() diff --git a/script/c30069398.lua b/script/c30069398.lua index 1fe54422..28e6f814 100644 --- a/script/c30069398.lua +++ b/script/c30069398.lua @@ -1,36 +1,36 @@ ---アイヴィ・ウォール -function c30069398.initial_effect(c) - --token - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(30069398,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e1:SetType(EFFECT_TYPE_FLIP+EFFECT_TYPE_SINGLE) - e1:SetTarget(c30069398.target) - e1:SetOperation(c30069398.operation) - c:RegisterEffect(e1) -end -function c30069398.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c30069398.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end - if not Duel.IsPlayerCanSpecialSummonMonster(tp,30069399,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH,POS_FACEUP_DEFENSE,1-tp) then return end - local token=Duel.CreateToken(tp,30069399) - if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_LEAVE_FIELD) - e1:SetOperation(c30069398.damop) - token:RegisterEffect(e1,true) - end - Duel.SpecialSummonComplete() -end -function c30069398.damop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsReason(REASON_DESTROY) then - Duel.Damage(c:GetPreviousControler(),300,REASON_EFFECT) - end - e:Reset() -end +--アイヴィ・ウォール +function c30069398.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30069398,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_FLIP+EFFECT_TYPE_SINGLE) + e1:SetTarget(c30069398.target) + e1:SetOperation(c30069398.operation) + c:RegisterEffect(e1) +end +function c30069398.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c30069398.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,30069399,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH,POS_FACEUP_DEFENSE,1-tp) then return end + local token=Duel.CreateToken(tp,30069399) + if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetOperation(c30069398.damop) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() +end +function c30069398.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsReason(REASON_DESTROY) then + Duel.Damage(c:GetPreviousControler(),300,REASON_EFFECT) + end + e:Reset() +end diff --git a/script/c30079770.lua b/script/c30079770.lua index 2ad4bbc1..b092b48e 100644 --- a/script/c30079770.lua +++ b/script/c30079770.lua @@ -1,31 +1,31 @@ ---真紅眼の黒炎竜 -function c30079770.initial_effect(c) - aux.EnableDualAttribute(c) - --damage - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_PHASE+PHASE_BATTLE) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCountLimit(1,30079770) - e1:SetCondition(c30079770.damcon) - e1:SetTarget(c30079770.damtg) - e1:SetOperation(c30079770.damop) - c:RegisterEffect(e1) -end -function c30079770.damcon(e,tp,eg,ep,ev,re,r,rp) - return aux.IsDualState(e) and e:GetHandler():GetBattledGroupCount()>0 -end -function c30079770.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local atk=e:GetHandler():GetBaseAttack() - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) -end -function c30079770.damop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - local atk=c:GetBaseAttack() - Duel.Damage(1-tp,atk,REASON_EFFECT) - end -end +--真紅眼の黒炎竜 +function c30079770.initial_effect(c) + aux.EnableDualAttribute(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1,30079770) + e1:SetCondition(c30079770.damcon) + e1:SetTarget(c30079770.damtg) + e1:SetOperation(c30079770.damop) + c:RegisterEffect(e1) +end +function c30079770.damcon(e,tp,eg,ep,ev,re,r,rp) + return aux.IsDualState(e) and e:GetHandler():GetBattledGroupCount()>0 +end +function c30079770.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local atk=e:GetHandler():GetBaseAttack() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c30079770.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=c:GetBaseAttack() + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c30100551.lua b/script/c30100551.lua index 029b1bef..ebc991a3 100644 --- a/script/c30100551.lua +++ b/script/c30100551.lua @@ -7,6 +7,7 @@ function c30100551.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_DECKDES+CATEGORY_DRAW) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,30100551) e1:SetCost(c30100551.drcost) diff --git a/script/c3019642.lua b/script/c3019642.lua index 8637eeb1..0c5419e0 100644 --- a/script/c3019642.lua +++ b/script/c3019642.lua @@ -1,85 +1,85 @@ ---サイバー・ダーク・キール -function c3019642.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(3019642,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c3019642.eqtg) - e1:SetOperation(c3019642.eqop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(3019642,1)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(c3019642.damcon) - e2:SetTarget(c3019642.damtg) - e2:SetOperation(c3019642.damop) - c:RegisterEffect(e2) -end -function c3019642.filter(c) - return c:IsLevelBelow(3) and c:IsRace(RACE_DRAGON) and not c:IsForbidden() -end -function c3019642.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c3019642.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c3019642.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c3019642.eqop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,tc,c,false) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c3019642.eqlimit) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetReset(RESET_EVENT+0x1fe0000) - e3:SetValue(c3019642.repval) - tc:RegisterEffect(e3) - end -end -function c3019642.eqlimit(e,c) - return e:GetOwner()==c -end -function c3019642.repval(e,re,r,rp) - return bit.band(r,REASON_BATTLE)~=0 -end -function c3019642.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) -end -function c3019642.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(300) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) -end -function c3019642.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--サイバー・ダーク・キール +function c3019642.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3019642,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c3019642.eqtg) + e1:SetOperation(c3019642.eqop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(3019642,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c3019642.damcon) + e2:SetTarget(c3019642.damtg) + e2:SetOperation(c3019642.damop) + c:RegisterEffect(e2) +end +function c3019642.filter(c) + return c:IsLevelBelow(3) and c:IsRace(RACE_DRAGON) and not c:IsForbidden() +end +function c3019642.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c3019642.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c3019642.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c3019642.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c3019642.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c3019642.repval) + tc:RegisterEffect(e3) + end +end +function c3019642.eqlimit(e,c) + return e:GetOwner()==c +end +function c3019642.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c3019642.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c3019642.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c3019642.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c30241314.lua b/script/c30241314.lua index d23a7ef6..749ffb09 100644 --- a/script/c30241314.lua +++ b/script/c30241314.lua @@ -1,33 +1,33 @@ ---マクロコスモス -function c30241314.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetOperation(c30241314.activate) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) - e2:SetTargetRange(0xff,0xff) - e2:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e2) -end -function c30241314.filter(c,e,sp) - return c:IsCode(54493213) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) -end -function c30241314.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local cg=Duel.GetMatchingGroup(c30241314.filter,tp,LOCATION_DECK+LOCATION_HAND,0,nil,e,tp) - if cg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then - if Duel.SelectYesNo(tp, aux.Stringid(30241314,0)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=cg:Select(tp,1,1,nil) - Duel.SpecialSummon(sg, 0, tp, tp, false, false, POS_FACEUP) - end - end -end +--マクロコスモス +function c30241314.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c30241314.activate) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e2:SetTargetRange(0xff,0xff) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2) +end +function c30241314.filter(c,e,sp) + return c:IsCode(54493213) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) +end +function c30241314.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local cg=Duel.GetMatchingGroup(c30241314.filter,tp,LOCATION_DECK+LOCATION_HAND,0,nil,e,tp) + if cg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + if Duel.SelectYesNo(tp, aux.Stringid(30241314,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=cg:Select(tp,1,1,nil) + Duel.SpecialSummon(sg, 0, tp, tp, false, false, POS_FACEUP) + end + end +end diff --git a/script/c30299166.lua b/script/c30299166.lua index c7eae505..e64dde8e 100644 --- a/script/c30299166.lua +++ b/script/c30299166.lua @@ -1,40 +1,40 @@ ---ワーム・テンタクルス -function c30299166.initial_effect(c) - --multi atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(30299166,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c30299166.mtcon) - e1:SetCost(c30299166.mtcost) - e1:SetTarget(c30299166.mttg) - e1:SetOperation(c30299166.mtop) - c:RegisterEffect(e1) -end -function c30299166.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c30299166.costfilter(c) - return c:IsSetCard(0x3e) and c:IsRace(RACE_REPTILE) and c:IsAbleToRemoveAsCost() -end -function c30299166.mtcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c30299166.costfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c30299166.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c30299166.mttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetEffectCount(EFFECT_EXTRA_ATTACK)==0 end -end -function c30299166.mtop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--ワーム・テンタクルス +function c30299166.initial_effect(c) + --multi atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30299166,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c30299166.mtcon) + e1:SetCost(c30299166.mtcost) + e1:SetTarget(c30299166.mttg) + e1:SetOperation(c30299166.mtop) + c:RegisterEffect(e1) +end +function c30299166.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c30299166.costfilter(c) + return c:IsSetCard(0x3e) and c:IsRace(RACE_REPTILE) and c:IsAbleToRemoveAsCost() +end +function c30299166.mtcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c30299166.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c30299166.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c30299166.mttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEffectCount(EFFECT_EXTRA_ATTACK)==0 end +end +function c30299166.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c30312361.lua b/script/c30312361.lua index 34360346..f77a1eb3 100644 --- a/script/c30312361.lua +++ b/script/c30312361.lua @@ -1,82 +1,82 @@ ---ファントム・オブ・カオス -function c30312361.initial_effect(c) - --copy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(30312361,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c30312361.cost) - e1:SetTarget(c30312361.target) - e1:SetOperation(c30312361.operation) - c:RegisterEffect(e1) - --no battle damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_NO_BATTLE_DAMAGE) - c:RegisterEffect(e2) -end -function c30312361.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(30312361)==0 end - e:GetHandler():RegisterFlagEffect(30312361,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c30312361.filter(c) - return c:IsType(TYPE_EFFECT) and c:IsAbleToRemove() -end -function c30312361.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c30312361.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c30312361.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c30312361.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c30312361.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then - if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=1 then return end - local code=tc:GetOriginalCode() - local ba=tc:GetBaseAttack() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetLabelObject(e1) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetValue(ba) - c:RegisterEffect(e2) - local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(30312361,1)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_MZONE) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e3:SetLabel(cid) - e3:SetLabelObject(e2) - e3:SetOperation(c30312361.rstop) - c:RegisterEffect(e3) - end -end -function c30312361.rstop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local cid=e:GetLabel() - c:ResetEffect(cid,RESET_COPY) - local e2=e:GetLabelObject() - local e1=e2:GetLabelObject() - e1:Reset() - e2:Reset() - Duel.HintSelection(Group.FromCards(c)) - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end +--ファントム・オブ・カオス +function c30312361.initial_effect(c) + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30312361,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c30312361.cost) + e1:SetTarget(c30312361.target) + e1:SetOperation(c30312361.operation) + c:RegisterEffect(e1) + --no battle damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_NO_BATTLE_DAMAGE) + c:RegisterEffect(e2) +end +function c30312361.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(30312361)==0 end + e:GetHandler():RegisterFlagEffect(30312361,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c30312361.filter(c) + return c:IsType(TYPE_EFFECT) and c:IsAbleToRemove() +end +function c30312361.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c30312361.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c30312361.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c30312361.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c30312361.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then + if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=1 then return end + local code=tc:GetOriginalCode() + local ba=tc:GetBaseAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetValue(ba) + c:RegisterEffect(e2) + local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(30312361,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetLabel(cid) + e3:SetLabelObject(e2) + e3:SetOperation(c30312361.rstop) + c:RegisterEffect(e3) + end +end +function c30312361.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=e:GetLabel() + c:ResetEffect(cid,RESET_COPY) + local e2=e:GetLabelObject() + local e1=e2:GetLabelObject() + e1:Reset() + e2:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end diff --git a/script/c30314994.lua b/script/c30314994.lua index 234eb6d3..e26fc4e8 100644 --- a/script/c30314994.lua +++ b/script/c30314994.lua @@ -1,35 +1,33 @@ ---エレメント・ドラゴン -function c30314994.initial_effect(c) - --atk - 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:SetValue(500) - e1:SetCondition(c30314994.atkcon) - c:RegisterEffect(e1) - --chain attack - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(30314994,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLED) - e2:SetCondition(c30314994.atcon) - e2:SetOperation(c30314994.atop) - c:RegisterEffect(e2) -end -function c30314994.filter(c,att) - return c:IsFaceup() and c:IsAttribute(att) -end -function c30314994.atkcon(e) - return Duel.IsExistingMatchingCard(c30314994.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_FIRE) -end -function c30314994.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) - and not c:IsDisabled() and Duel.IsExistingMatchingCard(c30314994.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_WIND) -end -function c30314994.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--エレメント・ドラゴン +function c30314994.initial_effect(c) + --atk + 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:SetValue(500) + e1:SetCondition(c30314994.atkcon) + c:RegisterEffect(e1) + --chain attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(30314994,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c30314994.atcon) + e2:SetOperation(c30314994.atop) + c:RegisterEffect(e2) +end +function c30314994.filter(c,att) + return c:IsFaceup() and c:IsAttribute(att) +end +function c30314994.atkcon(e) + return Duel.IsExistingMatchingCard(c30314994.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_FIRE) +end +function c30314994.atcon(e,tp,eg,ep,ev,re,r,rp) + return aux.bdocon(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():IsChainAttackable() + and Duel.IsExistingMatchingCard(c30314994.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_WIND) +end +function c30314994.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c303660.lua b/script/c303660.lua index 047101b1..5f6324a4 100644 --- a/script/c303660.lua +++ b/script/c303660.lua @@ -7,7 +7,6 @@ function c303660.initial_effect(c) e1:SetCode(EVENT_FREE_CHAIN) e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_CANNOT_DISABLE) e1:SetTarget(c303660.target) - e1:SetOperation(c303660.operation) c:RegisterEffect(e1) --Equip limit local e2=Effect.CreateEffect(c) @@ -49,12 +48,22 @@ function c303660.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chk==0 then return Duel.IsExistingTarget(c303660.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) Duel.SelectTarget(tp,c303660.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetReset(RESET_CHAIN) + e1:SetLabel(Duel.GetCurrentChain()) + e1:SetLabelObject(e) + e1:SetOperation(c303660.operation) + Duel.RegisterEffect(e1,tp) Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) end function c303660.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) + if re~=e:GetLabelObject() then return end + local c=e:GetHandler() + local tc=Duel.GetChainInfo(Duel.GetCurrentChain(),CHAININFO_TARGET_CARDS):GetFirst() + if tc and c:IsRelateToEffect(re) and tc:IsRelateToEffect(re) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) end end function c303660.etarget(e,c) diff --git a/script/c30392583.lua b/script/c30392583.lua index 62613cc1..b427b83c 100644 --- a/script/c30392583.lua +++ b/script/c30392583.lua @@ -1,33 +1,33 @@ ---聖占術の儀式 -function c30392583.initial_effect(c) - aux.AddRitualProcGreaterCode(c,94997874) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCondition(aux.exccon) - e1:SetCost(c30392583.thcost) - e1:SetTarget(c30392583.thtg) - e1:SetOperation(c30392583.thop) - c:RegisterEffect(e1) -end -function c30392583.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c30392583.thfilter(c) - return c:IsSetCard(0xcc) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c30392583.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c30392583.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c30392583.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c30392583.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--聖占術の儀式 +function c30392583.initial_effect(c) + aux.AddRitualProcGreaterCode(c,94997874) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(aux.exccon) + e1:SetCost(c30392583.thcost) + e1:SetTarget(c30392583.thtg) + e1:SetOperation(c30392583.thop) + c:RegisterEffect(e1) +end +function c30392583.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c30392583.thfilter(c) + return c:IsSetCard(0xcc) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c30392583.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c30392583.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c30392583.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c30392583.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c30426226.lua b/script/c30426226.lua new file mode 100644 index 00000000..b700a825 --- /dev/null +++ b/script/c30426226.lua @@ -0,0 +1,28 @@ +--スウィッチヒーロー +function c30426226.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c30426226.target) + e1:SetOperation(c30426226.activate) + c:RegisterEffect(e1) +end +function c30426226.filter(c) + return not c:IsAbleToChangeControler() +end +function c30426226.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + local g1=g:Filter(Card.IsControler,nil,tp) + local g2=g:Filter(Card.IsControler,nil,1-tp) + if chk==0 then return g1:GetCount()==g2:GetCount() + and g:FilterCount(c30426226.filter,nil)==0 end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) +end +function c30426226.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local g2=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) + Duel.SwapControl(g1,g2) +end diff --git a/script/c30459350.lua b/script/c30459350.lua index 2f742b1e..165fc1e1 100644 --- a/script/c30459350.lua +++ b/script/c30459350.lua @@ -1,25 +1,25 @@ ---王宮の鉄壁 -function c30459350.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - c:RegisterEffect(e1) - --cannot remove - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_REMOVE) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - c:RegisterEffect(e2) - --30459350 chk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(30459350) - e3:SetRange(LOCATION_SZONE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,1) - c:RegisterEffect(e3) -end +--王宮の鉄壁 +function c30459350.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + c:RegisterEffect(e1) + --cannot remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_REMOVE) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + c:RegisterEffect(e2) + --30459350 chk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(30459350) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + c:RegisterEffect(e3) +end diff --git a/script/c30492798.lua b/script/c30492798.lua index c62ded23..0cb1be82 100644 --- a/script/c30492798.lua +++ b/script/c30492798.lua @@ -1,42 +1,42 @@ ---儀式魔人ディザーズ -function c30492798.initial_effect(c) - --ritual material - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) - e1:SetValue(1) - c:RegisterEffect(e1) - --become material - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetCondition(c30492798.condition) - e2:SetOperation(c30492798.operation) - c:RegisterEffect(e2) -end -function c30492798.condition(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_RITUAL -end -function c30492798.operation(e,tp,eg,ep,ev,re,r,rp) - local rc=eg:GetFirst() - while rc do - if rc:GetFlagEffect(30492798)==0 then - --immune - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetDescription(aux.Stringid(30492798,0)) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CLIENT_HINT) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c30492798.efilter) - rc:RegisterEffect(e1,true) - rc:RegisterFlagEffect(30492798,RESET_EVENT+0x1fe0000,0,1) - end - rc=eg:GetNext() - end -end -function c30492798.efilter(e,te) - return te:IsActiveType(TYPE_TRAP) -end +--儀式魔人ディザーズ +function c30492798.initial_effect(c) + --ritual material + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) + e1:SetValue(1) + c:RegisterEffect(e1) + --become material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c30492798.condition) + e2:SetOperation(c30492798.operation) + c:RegisterEffect(e2) +end +function c30492798.condition(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RITUAL +end +function c30492798.operation(e,tp,eg,ep,ev,re,r,rp) + local rc=eg:GetFirst() + while rc do + if rc:GetFlagEffect(30492798)==0 then + --immune + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetDescription(aux.Stringid(30492798,0)) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CLIENT_HINT) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c30492798.efilter) + rc:RegisterEffect(e1,true) + rc:RegisterFlagEffect(30492798,RESET_EVENT+0x1fe0000,0,1) + end + rc=eg:GetNext() + end +end +function c30492798.efilter(e,te) + return te:IsActiveType(TYPE_TRAP) +end diff --git a/script/c30494314.lua b/script/c30494314.lua index 2424177c..c7a23143 100644 --- a/script/c30494314.lua +++ b/script/c30494314.lua @@ -1,49 +1,49 @@ ---紅血鬼 -function c30494314.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(30494314,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c30494314.condition) - e1:SetTarget(c30494314.target) - e1:SetOperation(c30494314.operation) - c:RegisterEffect(e1) -end -function c30494314.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_GRAVE) and re:GetHandler():IsRace(RACE_ZOMBIE) -end -function c30494314.filter(c) - return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and not c:IsType(TYPE_XYZ) -end -function c30494314.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c30494314.filter(chkc) end - if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,1,1,REASON_EFFECT) - and Duel.IsExistingTarget(c30494314.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c30494314.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c30494314.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,532) - local sg=Duel.SelectMatchingCard(tp,Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp,1,REASON_EFFECT) - if sg:GetCount()==0 then return end - sg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_EFFECT) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(300) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - end -end +--紅血鬼 +function c30494314.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30494314,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c30494314.condition) + e1:SetTarget(c30494314.target) + e1:SetOperation(c30494314.operation) + c:RegisterEffect(e1) +end +function c30494314.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_GRAVE) and re:GetHandler():IsRace(RACE_ZOMBIE) +end +function c30494314.filter(c) + return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and not c:IsType(TYPE_XYZ) +end +function c30494314.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c30494314.filter(chkc) end + if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,1,1,REASON_EFFECT) + and Duel.IsExistingTarget(c30494314.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c30494314.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c30494314.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,532) + local sg=Duel.SelectMatchingCard(tp,Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp,1,REASON_EFFECT) + if sg:GetCount()==0 then return end + sg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c30502181.lua b/script/c30502181.lua index a9baa1c7..e3cdf51d 100644 --- a/script/c30502181.lua +++ b/script/c30502181.lua @@ -1,27 +1,12 @@ --ライトロード・レイピア function c30502181.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(c30502181.target) - e1:SetOperation(c30502181.operation) - c:RegisterEffect(e1) + aux.AddFusionProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x38)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(700) 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(c30502181.eqlimit) - c:RegisterEffect(e3) --equip local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) @@ -34,25 +19,9 @@ function c30502181.initial_effect(c) e4:SetOperation(c30502181.operation) c:RegisterEffect(e4) end -function c30502181.eqlimit(e,c) - return c:IsSetCard(0x38) -end function c30502181.filter(c) return c:IsFaceup() and c:IsSetCard(0x38) end -function c30502181.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c30502181.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c30502181.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c30502181.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c30502181.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 c30502181.eqcondtion(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():GetPreviousLocation()==LOCATION_DECK end diff --git a/script/c30539496.lua b/script/c30539496.lua new file mode 100644 index 00000000..258c5dff --- /dev/null +++ b/script/c30539496.lua @@ -0,0 +1,112 @@ +--真竜皇リトスアジムD +function c30539496.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30539496,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,30539496) + e1:SetTarget(c30539496.sptg) + e1:SetOperation(c30539496.spop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(30539496,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetCountLimit(1,30539497) + e2:SetCondition(c30539496.spcon2) + e2:SetTarget(c30539496.sptg2) + e2:SetOperation(c30539496.spop2) + c:RegisterEffect(e2) +end +function c30539496.desfilter(c) + return c:IsType(TYPE_MONSTER) and ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) or c:IsLocation(LOCATION_HAND)) +end +function c30539496.locfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) +end +function c30539496.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local loc=LOCATION_MZONE+LOCATION_HAND + if ft<0 then loc=LOCATION_MZONE end + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,88581108) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c30539496.desfilter,tp,loc,loc2,c) + if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and g:GetCount()>=2 and g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_EARTH) + and (ft>0 or g:IsExists(c30539496.locfilter,-ft+1,nil,tp)) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,2,tp,loc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c30539496.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local loc=LOCATION_MZONE+LOCATION_HAND + if ft<0 then loc=LOCATION_MZONE end + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,88581108) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c30539496.desfilter,tp,loc,loc2,c) + if g:GetCount()<2 or not g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_EARTH) then return end + local g1=nil local g2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + if ft<1 then + g1=g:FilterSelect(tp,c30539496.locfilter,1,1,nil,tp) + else + g1=g:Select(tp,1,1,nil) + end + g:RemoveCard(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + if g1:GetFirst():IsAttribute(ATTRIBUTE_EARTH) then + g2=g:Select(tp,1,1,nil) + else + g2=g:FilterSelect(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_EARTH) + end + g1:Merge(g2) + local rm=g1:IsExists(Card.IsAttribute,2,nil,ATTRIBUTE_EARTH) + if Duel.Destroy(g1,REASON_EFFECT)==2 then + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + return + end + local rg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_EXTRA,nil) + if rm and rg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(30539496,2)) then + Duel.ConfirmCards(tp,rg) + local tg=Group.CreateGroup() + local i=3 + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local tc=rg:Select(tp,1,1,nil):GetFirst() + rg:Remove(Card.IsCode,nil,tc:GetCode()) + tg:AddCard(tc) + i=i-1 + until i<1 or rg:GetCount()==0 or not Duel.SelectYesNo(tp,aux.Stringid(30539496,3)) + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) + end + end +end +function c30539496.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) +end +function c30539496.thfilter(c,e,tp) + return not c:IsAttribute(ATTRIBUTE_EARTH) and c:IsRace(RACE_WYRM) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c30539496.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c30539496.thfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c30539496.spop2(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,c30539496.thfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c30603688.lua b/script/c30603688.lua new file mode 100644 index 00000000..2593045b --- /dev/null +++ b/script/c30603688.lua @@ -0,0 +1,88 @@ +--幻想の見習い魔導師 +function c30603688.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c30603688.spcon) + e1:SetOperation(c30603688.spop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(30603688,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetTarget(c30603688.thtg) + e2:SetOperation(c30603688.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --atkup + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(30603688,1)) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e4:SetRange(LOCATION_HAND+LOCATION_MZONE) + e4:SetCondition(c30603688.atkcon) + e4:SetCost(c30603688.atkcost) + e4:SetOperation(c30603688.atkop) + c:RegisterEffect(e4) +end +function c30603688.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,c) +end +function c30603688.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_HAND,0,1,1,c) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c30603688.filter(c) + return c:IsCode(46986414) and c:IsAbleToHand() +end +function c30603688.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c30603688.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c30603688.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c30603688.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c30603688.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=Duel.GetAttackTarget() + if not c then return false end + if c:IsControler(1-tp) then c=Duel.GetAttacker() end + e:SetLabelObject(c) + return c and c~=e:GetHandler() and c:IsRace(RACE_SPELLCASTER) + and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRelateToBattle() +end +function c30603688.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c30603688.atkop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetLabelObject() + if c:IsFaceup() and c:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(2000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end diff --git a/script/c30604579.lua b/script/c30604579.lua index 08208117..a2e8d57c 100644 --- a/script/c30604579.lua +++ b/script/c30604579.lua @@ -16,6 +16,7 @@ function c30604579.initial_effect(c) --special summon local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c30604579.regop) c:RegisterEffect(e2) diff --git a/script/c30608985.lua b/script/c30608985.lua index 8f7bdabc..80b9df99 100644 --- a/script/c30608985.lua +++ b/script/c30608985.lua @@ -1,29 +1,29 @@ ---マジカル・アンダーテイカー -function c30608985.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(30608985,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetTarget(c30608985.target) - e1:SetOperation(c30608985.operation) - c:RegisterEffect(e1) -end -function c30608985.spfilter(c,e,tp) - return c:IsRace(RACE_SPELLCASTER) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c30608985.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c30608985.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c30608985.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c30608985.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c30608985.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--マジカル・アンダーテイカー +function c30608985.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30608985,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetTarget(c30608985.target) + e1:SetOperation(c30608985.operation) + c:RegisterEffect(e1) +end +function c30608985.spfilter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c30608985.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c30608985.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c30608985.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c30608985.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c30608985.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c3064425.lua b/script/c3064425.lua index 4c196387..6e1f5cce 100644 --- a/script/c3064425.lua +++ b/script/c3064425.lua @@ -80,8 +80,7 @@ function c3064425.negtg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,1000) end function c3064425.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)~=0 then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)~=0 then Duel.BreakEffect() local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) if Duel.Destroy(g,REASON_EFFECT)==0 then return end diff --git a/script/c30741334.lua b/script/c30741334.lua index a0db41e8..328da53a 100644 --- a/script/c30741334.lua +++ b/script/c30741334.lua @@ -7,6 +7,7 @@ function c30741334.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_DRAW+CATEGORY_DAMAGE) e1:SetDescription(aux.Stringid(30741334,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(3,30741334) diff --git a/script/c30757127.lua b/script/c30757127.lua index 7930e86e..bd5eb083 100644 --- a/script/c30757127.lua +++ b/script/c30757127.lua @@ -19,8 +19,9 @@ function c30757127.initial_effect(c) e1:SetOperation(c30757127.atkop) c:RegisterEffect(e1) end +c30757127.material_setcode=0x8 function c30757127.ffilter(c) - return c:IsAttribute(ATTRIBUTE_DARK) and c:IsType(TYPE_EFFECT) + return c:IsFusionAttribute(ATTRIBUTE_DARK) and c:IsFusionType(TYPE_EFFECT) end function c30757127.atkcon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() diff --git a/script/c30786387.lua b/script/c30786387.lua index 30cc7240..a9aa498e 100644 --- a/script/c30786387.lua +++ b/script/c30786387.lua @@ -43,6 +43,7 @@ function c30786387.activate(e,tp,eg,ep,ev,re,r,rp) g:Remove(Card.IsCode,nil,tc:GetCode()) end Duel.ConfirmCards(1-tp,rg) + Duel.ShuffleDeck(tp) local tg=rg:GetFirst() while tg do Duel.MoveSequence(tg,0) diff --git a/script/c30834988.lua b/script/c30834988.lua index f11105ec..8cc2a6f4 100644 --- a/script/c30834988.lua +++ b/script/c30834988.lua @@ -1,48 +1,48 @@ ---召喚制限-猛突するモンスター -function c30834988.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --pos - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(30834988,0)) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetRange(LOCATION_SZONE) - e2:SetTarget(c30834988.target) - e2:SetOperation(c30834988.operation) - c:RegisterEffect(e2) -end -function c30834988.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) end - Duel.SetTargetCard(eg) - Duel.SetOperationInfo(0,CATEGORY_POSITION,eg,eg:GetCount(),0,0) -end -function c30834988.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local g=eg:Filter(Card.IsRelateToEffect,nil,e) - Duel.ChangePosition(g,POS_FACEUP_ATTACK) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MUST_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end - if Duel.GetFlagEffect(tp,30834988)==0 then - Duel.RegisterFlagEffect(tp,30834988,RESET_PHASE+PHASE_END,0,1) - e:SetLabel(0) - else - local count=e:GetLabel() - e:SetLabel(count+1) - if count>49 then - Duel.SendtoGrave(c,REASON_RULE) - end - end -end +--召喚制限-猛突するモンスター +function c30834988.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(30834988,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c30834988.target) + e2:SetOperation(c30834988.operation) + c:RegisterEffect(e2) +end +function c30834988.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_POSITION,eg,eg:GetCount(),0,0) +end +function c30834988.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=eg:Filter(Card.IsRelateToEffect,nil,e) + Duel.ChangePosition(g,POS_FACEUP_ATTACK) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + if Duel.GetFlagEffect(tp,30834988)==0 then + Duel.RegisterFlagEffect(tp,30834988,RESET_PHASE+PHASE_END,0,1) + e:SetLabel(0) + else + local count=e:GetLabel() + e:SetLabel(count+1) + if count>49 then + Duel.SendtoGrave(c,REASON_RULE) + end + end +end diff --git a/script/c30845999.lua b/script/c30845999.lua index 5c91ef6d..c018b235 100644 --- a/script/c30845999.lua +++ b/script/c30845999.lua @@ -1,60 +1,60 @@ ---起動する機殻 -function c30845999.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c30845999.condition) - e1:SetTarget(c30845999.target) - e1:SetOperation(c30845999.activate) - c:RegisterEffect(e1) -end -function c30845999.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c30845999.filter(c) - return c:IsFaceup() and c:IsSetCard(0xaa) and bit.band(c:GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL -end -function c30845999.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c30845999.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end -end -function c30845999.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c30845999.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local tc=g:GetFirst() - while tc do - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(300) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE_EFFECT) - e3:SetValue(RESET_TURN_SET) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_IMMUNE_EFFECT) - e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e4:SetValue(c30845999.efilter) - tc:RegisterEffect(e4) - tc=g:GetNext() - end -end -function c30845999.efilter(e,te) - return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) and te:GetOwner()~=e:GetOwner() -end +--起動する機殻 +function c30845999.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c30845999.condition) + e1:SetTarget(c30845999.target) + e1:SetOperation(c30845999.activate) + c:RegisterEffect(e1) +end +function c30845999.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c30845999.filter(c) + return c:IsFaceup() and c:IsSetCard(0xaa) and bit.band(c:GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL +end +function c30845999.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c30845999.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c30845999.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c30845999.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(300) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e4:SetValue(c30845999.efilter) + tc:RegisterEffect(e4) + tc=g:GetNext() + end +end +function c30845999.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) and te:GetOwner()~=e:GetOwner() +end diff --git a/script/c30915572.lua b/script/c30915572.lua index f22db5e0..120b190d 100644 --- a/script/c30915572.lua +++ b/script/c30915572.lua @@ -25,9 +25,14 @@ function c30915572.spoperation(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.GetOperatedGroup() local tc=g:GetFirst() if tc then + Duel.BreakEffect() if tc:IsType(TYPE_MONSTER) then Duel.Damage(1-tp,tc:GetLevel()*200,REASON_EFFECT) - if c:IsRelateToEffect(e) then Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) end + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end else if c:IsRelateToEffect(e) then Duel.Destroy(c,REASON_EFFECT) end end diff --git a/script/c30922149.lua b/script/c30922149.lua index d8f91c86..e7b28f0b 100644 --- a/script/c30922149.lua +++ b/script/c30922149.lua @@ -1,34 +1,34 @@ ---副作用? -function c30922149.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW+CATEGORY_RECOVER) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTarget(c30922149.target) - e1:SetOperation(c30922149.activate) - c:RegisterEffect(e1) -end -function c30922149.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end - Duel.SetTargetPlayer(1-tp) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) -end -function c30922149.activate(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - if not Duel.IsPlayerCanDraw(p) then return end - local ct=Duel.GetFieldGroupCount(p,LOCATION_DECK,0) - local ac=0 - if ct==0 then ac=1 end - if ct>1 then - Duel.Hint(HINT_SELECTMSG,p,aux.Stringid(30922149,0)) - if ct==2 then ac=Duel.AnnounceNumber(p,1,2) - else ac=Duel.AnnounceNumber(p,1,2,3) end - end - local dr=Duel.Draw(p,ac,REASON_EFFECT) - if p~=tp and dr~=0 then - Duel.BreakEffect() - Duel.Recover(tp,dr*2000,REASON_EFFECT) - end -end +--副作用? +function c30922149.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c30922149.target) + e1:SetOperation(c30922149.activate) + c:RegisterEffect(e1) +end +function c30922149.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c30922149.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + if not Duel.IsPlayerCanDraw(p) then return end + local ct=Duel.GetFieldGroupCount(p,LOCATION_DECK,0) + local ac=0 + if ct==0 then ac=1 end + if ct>1 then + Duel.Hint(HINT_SELECTMSG,p,aux.Stringid(30922149,0)) + if ct==2 then ac=Duel.AnnounceNumber(p,1,2) + else ac=Duel.AnnounceNumber(p,1,2,3) end + end + local dr=Duel.Draw(p,ac,REASON_EFFECT) + if p~=tp and dr~=0 then + Duel.BreakEffect() + Duel.Recover(tp,dr*2000,REASON_EFFECT) + end +end diff --git a/script/c31044787.lua b/script/c31044787.lua index c3fc473c..0f30ac36 100644 --- a/script/c31044787.lua +++ b/script/c31044787.lua @@ -1,33 +1,33 @@ ---イタチの大暴発 -function c31044787.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c31044787.condition) - e1:SetTarget(c31044787.target) - e1:SetOperation(c31044787.activate) - c:RegisterEffect(e1) -end -function c31044787.filter(c) - return c:IsFaceup() and c:GetAttack()>0 -end -function c31044787.condition(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c31044787.filter,tp,0,LOCATION_MZONE,nil) - local atk=g:GetSum(Card.GetAttack) - return atk>Duel.GetLP(tp) -end -function c31044787.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,1-tp,LOCATION_MZONE) -end -function c31044787.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c31044787.filter,tp,0,LOCATION_MZONE,nil) - local atk=g:GetSum(Card.GetAttack) - local lp=Duel.GetLP(tp) - local diff=atk-lp - if diff<=0 then return end - local sg=g:SelectWithSumGreater(1-tp,Card.GetAttack,diff) - Duel.SendtoDeck(sg,nil,2,REASON_RULE) -end +--イタチの大暴発 +function c31044787.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c31044787.condition) + e1:SetTarget(c31044787.target) + e1:SetOperation(c31044787.activate) + c:RegisterEffect(e1) +end +function c31044787.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c31044787.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c31044787.filter,tp,0,LOCATION_MZONE,nil) + local atk=g:GetSum(Card.GetAttack) + return atk>Duel.GetLP(tp) +end +function c31044787.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,1-tp,LOCATION_MZONE) +end +function c31044787.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c31044787.filter,tp,0,LOCATION_MZONE,nil) + local atk=g:GetSum(Card.GetAttack) + local lp=Duel.GetLP(tp) + local diff=atk-lp + if diff<=0 then return end + local sg=g:SelectWithSumGreater(1-tp,Card.GetAttack,diff) + Duel.SendtoDeck(sg,nil,2,REASON_RULE) +end diff --git a/script/c31053337.lua b/script/c31053337.lua index f2a6046c..05531634 100644 --- a/script/c31053337.lua +++ b/script/c31053337.lua @@ -1,73 +1,73 @@ ---BF-激震のアブロオロス -function c31053337.initial_effect(c) - --special summon limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) - c:RegisterEffect(e1) - --to hand1 - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(31053337,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c31053337.condition) - e2:SetTarget(c31053337.target) - e2:SetOperation(c31053337.operation) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetTarget(c31053337.indestg) - e3:SetValue(1) - c:RegisterEffect(e3) - --to hand2 - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(31053337,1)) - e4:SetCategory(CATEGORY_TOHAND) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_BATTLED) - e4:SetOperation(c31053337.operation2) - c:RegisterEffect(e4) -end -function c31053337.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 -end -function c31053337.filter(c) - return c:IsAbleToHand() and c:GetSequence()<5 -end -function c31053337.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttack()>=1000 and Duel.IsExistingMatchingCard(c31053337.filter,tp,0,LOCATION_SZONE,1,nil) end - local g=Duel.GetMatchingGroup(c31053337.filter,tp,0,LOCATION_SZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c31053337.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local g=Duel.GetMatchingGroup(c31053337.filter,tp,0,LOCATION_SZONE,nil) - Duel.SendtoHand(g,nil,REASON_EFFECT) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-1000) - c:RegisterEffect(e1) - end -end -function c31053337.indestg(e,c) - return c==e:GetHandler():GetBattleTarget() -end -function c31053337.operation2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - if bc and bc:IsRelateToBattle() then - Duel.SendtoHand(bc,nil,REASON_EFFECT) - end -end +--BF-激震のアブロオロス +function c31053337.initial_effect(c) + --special summon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --to hand1 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(31053337,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c31053337.condition) + e2:SetTarget(c31053337.target) + e2:SetOperation(c31053337.operation) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c31053337.indestg) + e3:SetValue(1) + c:RegisterEffect(e3) + --to hand2 + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(31053337,1)) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_BATTLED) + e4:SetOperation(c31053337.operation2) + c:RegisterEffect(e4) +end +function c31053337.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c31053337.filter(c) + return c:IsAbleToHand() and c:GetSequence()<5 +end +function c31053337.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttack()>=1000 and Duel.IsExistingMatchingCard(c31053337.filter,tp,0,LOCATION_SZONE,1,nil) end + local g=Duel.GetMatchingGroup(c31053337.filter,tp,0,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c31053337.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local g=Duel.GetMatchingGroup(c31053337.filter,tp,0,LOCATION_SZONE,nil) + Duel.SendtoHand(g,nil,REASON_EFFECT) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + c:RegisterEffect(e1) + end +end +function c31053337.indestg(e,c) + return c==e:GetHandler():GetBattleTarget() +end +function c31053337.operation2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc:IsRelateToBattle() then + Duel.SendtoHand(bc,nil,REASON_EFFECT) + end +end diff --git a/script/c3105404.lua b/script/c3105404.lua index 88d8e71c..c762090a 100644 --- a/script/c3105404.lua +++ b/script/c3105404.lua @@ -1,64 +1,60 @@ ---ブリリアント・スパーク -function c3105404.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_DESTROYED) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,3105404+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c3105404.condition) - e1:SetTarget(c3105404.target) - e1:SetOperation(c3105404.activate) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_GRAVE) - e2:SetCost(c3105404.thcost) - e2:SetTarget(c3105404.thtg) - e2:SetOperation(c3105404.thop) - c:RegisterEffect(e2) -end -function c3105404.filter(c,e,tp) - return c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) - and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and Duel.GetAttacker():IsControler(1-tp))) - and c:IsSetCard(0x1047) and c:GetBaseAttack()>0 and c:IsCanBeEffectTarget(e) and c:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) -end -function c3105404.condition(e,tp,eg,ep,ev,re,r,rp) - return rp~=tp -end -function c3105404.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return eg:IsContains(chkc) and c3105404.filter(chkc,e,tp) end - if chk==0 then return eg:IsExists(c3105404.filter,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=eg:FilterSelect(tp,c3105404.filter,1,1,nil,e,tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) -end -function c3105404.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT) - end -end -function c3105404.cfilter(c) - return c:IsSetCard(0x1047) and c:IsAbleToGraveAsCost() -end -function c3105404.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(3105404)==0 - and Duel.IsExistingMatchingCard(c3105404.cfilter,tp,LOCATION_HAND,0,1,nil) end - e:GetHandler():RegisterFlagEffect(3105404,RESET_CHAIN,0,1) - Duel.DiscardHand(tp,c3105404.cfilter,1,1,REASON_COST,nil) -end -function c3105404.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c3105404.thop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) - end -end +--ブリリアント・スパーク +function c3105404.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,3105404+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c3105404.target) + e1:SetOperation(c3105404.activate) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c3105404.thcost) + e2:SetTarget(c3105404.thtg) + e2:SetOperation(c3105404.thop) + c:RegisterEffect(e2) +end +function c3105404.filter(c,e,tp) + return c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and ((c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp) or (c:IsReason(REASON_BATTLE) and Duel.GetAttacker():IsControler(1-tp))) + and c:IsSetCard(0x1047) and c:GetBaseAttack()>0 and c:IsCanBeEffectTarget(e) and c:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) +end +function c3105404.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) and c3105404.filter(chkc,e,tp) end + if chk==0 then return eg:IsExists(c3105404.filter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=eg:FilterSelect(tp,c3105404.filter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c3105404.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT) + end +end +function c3105404.cfilter(c) + return c:IsSetCard(0x1047) and c:IsAbleToGraveAsCost() +end +function c3105404.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(3105404)==0 + and Duel.IsExistingMatchingCard(c3105404.cfilter,tp,LOCATION_HAND,0,1,nil) end + e:GetHandler():RegisterFlagEffect(3105404,RESET_CHAIN,0,1) + Duel.DiscardHand(tp,c3105404.cfilter,1,1,REASON_COST,nil) +end +function c3105404.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c3105404.thop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + end +end diff --git a/script/c31061682.lua b/script/c31061682.lua index 28d8eb85..cebcd91e 100644 --- a/script/c31061682.lua +++ b/script/c31061682.lua @@ -1,67 +1,67 @@ ---Kozmo Farmgirl -function c31061682.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(31061682,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,31061682) - e1:SetCost(c31061682.spcost) - e1:SetTarget(c31061682.sptg) - e1:SetOperation(c31061682.spop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_DAMAGE) - e2:SetCondition(c31061682.thcon) - e2:SetCost(c31061682.thcost) - e2:SetTarget(c31061682.thtg) - e2:SetOperation(c31061682.thop) - c:RegisterEffect(e2) -end -function c31061682.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c31061682.spfilter(c,e,tp) - return c:IsSetCard(0xd2) and c:IsLevelAbove(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c31061682.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c31061682.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c31061682.spop(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,c31061682.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 c31061682.thcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c31061682.thcost(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 c31061682.thfilter(c) - return c:IsSetCard(0xd2) and c:IsAbleToHand() -end -function c31061682.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c31061682.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c31061682.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c31061682.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--Kozmo-ドロッセル +function c31061682.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(31061682,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,31061682) + e1:SetCost(c31061682.spcost) + e1:SetTarget(c31061682.sptg) + e1:SetOperation(c31061682.spop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c31061682.thcon) + e2:SetCost(c31061682.thcost) + e2:SetTarget(c31061682.thtg) + e2:SetOperation(c31061682.thop) + c:RegisterEffect(e2) +end +function c31061682.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c31061682.spfilter(c,e,tp) + return c:IsSetCard(0xd2) and c:IsLevelAbove(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c31061682.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c31061682.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c31061682.spop(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,c31061682.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 c31061682.thcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c31061682.thcost(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 c31061682.thfilter(c) + return c:IsSetCard(0xd2) and c:IsAbleToHand() +end +function c31061682.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c31061682.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c31061682.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c31061682.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c31066283.lua b/script/c31066283.lua index 7f41322e..42156230 100644 --- a/script/c31066283.lua +++ b/script/c31066283.lua @@ -1,4 +1,4 @@ ---スカルライダーの復活 -function c31066283.initial_effect(c) - aux.AddRitualProcGreaterCode(c,99721536) -end +--スカルライダーの復活 +function c31066283.initial_effect(c) + aux.AddRitualProcGreaterCode(c,99721536) +end diff --git a/script/c31111109.lua b/script/c31111109.lua index 672d3a5e..0a49f680 100644 --- a/script/c31111109.lua +++ b/script/c31111109.lua @@ -27,57 +27,83 @@ function c31111109.initial_effect(c) e3:SetValue(aux.fuslimit) c:RegisterEffect(e3) end +c31111109.material_setcode=0x8 +function c31111109.ffilter1(c) + return (c:IsFusionSetCard(0x9) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) +end +function c31111109.ffilter2(c) + return (c:IsFusionSetCard(0x1f) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) +end +function c31111109.ffilter3(c) + return (c:IsFusionSetCard(0x8) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) +end +function c31111109.filterchk1(c,mg,g2,ct,chkf) + local tg + if g2==nil or g2:GetCount()==0 then tg=Group.CreateGroup() else tg=g2:Clone() end + local g=mg:Clone() + tg:AddCard(c) + g:RemoveCard(c) + local ctc=ct+1 + if ctc==5 then + return c31111109.filterchk2(tg,chkf) + else + return g:IsExists(c31111109.filterchk1,1,nil,g,tg,ctc,chkf) + end +end +function c31111109.filterchk2(g,chkf) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + local fs=false + if g:IsExists(aux.FConditionCheckF,1,nil,chkf) then fs=true end + return g:IsExists(c31111109.ffilter1,1,nil) and g:IsExists(c31111109.ffilter2,1,nil) and g:IsExists(c31111109.ffilter3,1,nil) + and g:GetCount()>=5 and (fs or chkf==PLAYER_NONE) +end function c31111109.fuscon(e,g,gc,chkf) if g==nil then return false end - if gc then return false end - local g1=g:Filter(Card.IsFusionSetCard,nil,0x9) - local c1=g1:GetCount() - local g2=g:Filter(Card.IsFusionSetCard,nil,0x1f) - local c2=g2:GetCount() - local g3=g:Filter(Card.IsFusionSetCard,nil,0x8) - local c3=g3:GetCount() - local ag=g1:Clone() - ag:Merge(g2) - ag:Merge(g3) - if chkf~=PLAYER_NONE and not ag:IsExists(aux.FConditionCheckF,1,nil,chkf) then return false end - return c1>0 and c2>0 and c3>0 and ag:GetCount()>=5 and (c1>1 or c3>1 or g1:GetFirst()~=g3:GetFirst()) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local g1=mg:Filter(c31111109.ffilter1,nil) + local g2=mg:Filter(c31111109.ffilter2,nil) + local g3=mg:Filter(c31111109.ffilter3,nil) + g1:Merge(g2) + g1:Merge(g3) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return c31111109.filterchk1(gc,g1,nil,0,chkf) + end + return g1:IsExists(c31111109.filterchk1,1,nil,g1,nil,0,chkf) end function c31111109.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) - if gc then return end - local g1=eg:Filter(Card.IsFusionSetCard,nil,0x9) - local g2=eg:Filter(Card.IsFusionSetCard,nil,0x1f) - local g3=eg:Filter(Card.IsFusionSetCard,nil,0x8) - local ag=g1:Clone() - ag:Merge(g2) - ag:Merge(g3) - local tc=nil local f1=0 local f2=0 local f3=0 - local mg=Group.CreateGroup() + local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local g=mg:Filter(c31111109.ffilter1,nil) + local g2=mg:Filter(c31111109.ffilter2,nil) + local g3=mg:Filter(c31111109.ffilter3,nil) + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if g:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end + end + if gc then + local matg=Group.FromCards(gc) + for i=1,4 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,c31111109.filterchk1,1,1,nil,g,matg,i,chkf) + g:Sub(g1) + matg:Merge(g1) + end + if sfhchk then Duel.ShuffleHand(tp) end + matg:RemoveCard(gc) + Duel.SetFusionMaterial(matg) + return + end + local matg=Group.CreateGroup() for i=1,5 do Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if i==1 and chkf~=PLAYER_NONE then - tc=ag:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf):GetFirst() - else tc=ag:Select(tp,1,1,nil):GetFirst() end - if g1:IsContains(tc) then - g1:RemoveCard(tc) - if g3:IsContains(tc) then g3:RemoveCard(tc) f1=f1+1 f3=f3+1 - else f1=f1+2 end - elseif g2:IsContains(tc) then g2:RemoveCard(tc) f2=f2+1 - else g3:RemoveCard(tc) f3=f3+2 end - ag:RemoveCard(tc) - mg:AddCard(tc) - if i==3 then - if f1==0 and f2==0 then ag:Sub(g3) - elseif f1==0 and f3==0 then ag:Sub(g2) - elseif f2==0 and f3==0 then ag:Sub(g1) end - end - if i==4 then - if f1==0 then ag=g1 - elseif f2==0 then ag=g2 - elseif f3==0 then ag=g3 - elseif f1==1 and f3==1 then ag:Sub(g2) end - end + local g1=g:FilterSelect(p,c31111109.filterchk1,1,1,nil,g,matg,i-1,chkf) + g:Sub(g1) + matg:Merge(g1) end - Duel.SetFusionMaterial(mg) + if sfhchk then Duel.ShuffleHand(tp) end + Duel.SetFusionMaterial(matg) end function c31111109.filter(c) return (c:IsSetCard(0x9) or c:IsSetCard(0x1f) or c:IsSetCard(0x8)) and c:IsType(TYPE_MONSTER) diff --git a/script/c31118030.lua b/script/c31118030.lua index 9cca20db..7211338e 100644 --- a/script/c31118030.lua +++ b/script/c31118030.lua @@ -1,26 +1,26 @@ ---占術姫アローシルフ -function c31118030.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetTarget(c31118030.thtg) - e1:SetOperation(c31118030.thop) - c:RegisterEffect(e1) -end -function c31118030.thfilter(c) - return bit.band(c:GetType(),0x82)==0x82 and c:IsAbleToHand() -end -function c31118030.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c31118030.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c31118030.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c31118030.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--占術姫アローシルフ +function c31118030.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c31118030.thtg) + e1:SetOperation(c31118030.thop) + c:RegisterEffect(e1) +end +function c31118030.thfilter(c) + return bit.band(c:GetType(),0x82)==0x82 and c:IsAbleToHand() +end +function c31118030.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c31118030.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c31118030.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c31118030.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c3113836.lua b/script/c3113836.lua index 8549c34d..b4b25cef 100644 --- a/script/c3113836.lua +++ b/script/c3113836.lua @@ -1,26 +1,26 @@ ---ジェムナイト・セラフィ -function c3113836.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c3113836.splimit) - c:RegisterEffect(e1) - --extra summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) - e2:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e2:SetRange(LOCATION_MZONE) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_EXTRA_SET_COUNT) - c:RegisterEffect(e3) -end -function c3113836.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end +--ジェムナイト・セラフィ +function c3113836.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_LIGHT),false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c3113836.splimit) + c:RegisterEffect(e1) + --extra summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) + e2:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e2:SetRange(LOCATION_MZONE) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_EXTRA_SET_COUNT) + c:RegisterEffect(e3) +end +function c3113836.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end diff --git a/script/c31178212.lua b/script/c31178212.lua index ea157180..038c97be 100644 --- a/script/c31178212.lua +++ b/script/c31178212.lua @@ -1,56 +1,56 @@ ---マジェスペクター・ユニコーン -function c31178212.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetHintTiming(0,0x1e0) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,31178212) - e2:SetTarget(c31178212.thtg) - e2:SetOperation(c31178212.thop) - c:RegisterEffect(e2) - --cannot target - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e3:SetValue(aux.tgoval) - c:RegisterEffect(e3) - --indes - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e4:SetRange(LOCATION_MZONE) - e4:SetValue(c31178212.indval) - c:RegisterEffect(e4) -end -function c31178212.filter(c) - return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() -end -function c31178212.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c31178212.filter,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g1=Duel.SelectTarget(tp,c31178212.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g2=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,1,nil) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g1,2,0,0) -end -function c31178212.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - end -end -function c31178212.indval(e,re,tp) - return tp~=e:GetHandlerPlayer() -end +--マジェスペクター・ユニコーン +function c31178212.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,0x1e0) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,31178212) + e2:SetTarget(c31178212.thtg) + e2:SetOperation(c31178212.thop) + c:RegisterEffect(e2) + --cannot target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c31178212.indval) + c:RegisterEffect(e4) +end +function c31178212.filter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c31178212.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c31178212.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g1=Duel.SelectTarget(tp,c31178212.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g2=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g1,2,0,0) +end +function c31178212.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end +function c31178212.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end diff --git a/script/c31222701.lua b/script/c31222701.lua index a11f5092..455f646f 100644 --- a/script/c31222701.lua +++ b/script/c31222701.lua @@ -1,57 +1,57 @@ ---揺れる眼差し -function c31222701.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c31222701.target) - e1:SetOperation(c31222701.activate) - c:RegisterEffect(e1) -end -function c31222701.filter(c) - return (c:GetSequence()==6 or c:GetSequence()==7) -end -function c31222701.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c31222701.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end - local g=Duel.GetMatchingGroup(c31222701.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) -end -function c31222701.thfilter1(c) - return c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() -end -function c31222701.thfilter2(c) - return c:IsCode(31222701) and c:IsAbleToHand() -end -function c31222701.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c31222701.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) - local ct=Duel.Destroy(g,REASON_EFFECT) - if ct>=1 then - Duel.BreakEffect() - Duel.Damage(1-tp,500,REASON_EFFECT) - end - local hg1=Duel.GetMatchingGroup(c31222701.thfilter1,tp,LOCATION_DECK,0,nil) - if ct>=2 and hg1:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(31222701,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local shg1=hg1:Select(tp,1,1,nil) - Duel.SendtoHand(shg1,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,shg1) - end - local rg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) - if ct>=3 and rg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(31222701,1)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local srg=rg:Select(tp,1,1,nil) - Duel.Remove(srg,POS_FACEUP,REASON_EFFECT) - end - local hg2=Duel.GetMatchingGroup(c31222701.thfilter2,tp,LOCATION_DECK,0,nil) - if ct==4 and hg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(31222701,2)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local shg2=hg2:Select(tp,1,1,nil) - Duel.SendtoHand(shg2,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,shg2) - end -end +--揺れる眼差し +function c31222701.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c31222701.target) + e1:SetOperation(c31222701.activate) + c:RegisterEffect(e1) +end +function c31222701.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) +end +function c31222701.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c31222701.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + local g=Duel.GetMatchingGroup(c31222701.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c31222701.thfilter1(c) + return c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c31222701.thfilter2(c) + return c:IsCode(31222701) and c:IsAbleToHand() +end +function c31222701.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c31222701.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct>=1 then + Duel.BreakEffect() + Duel.Damage(1-tp,500,REASON_EFFECT) + end + local hg1=Duel.GetMatchingGroup(c31222701.thfilter1,tp,LOCATION_DECK,0,nil) + if ct>=2 and hg1:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(31222701,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local shg1=hg1:Select(tp,1,1,nil) + Duel.SendtoHand(shg1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,shg1) + end + local rg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + if ct>=3 and rg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(31222701,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local srg=rg:Select(tp,1,1,nil) + Duel.Remove(srg,POS_FACEUP,REASON_EFFECT) + end + local hg2=Duel.GetMatchingGroup(c31222701.thfilter2,tp,LOCATION_DECK,0,nil) + if ct==4 and hg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(31222701,2)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local shg2=hg2:Select(tp,1,1,nil) + Duel.SendtoHand(shg2,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,shg2) + end +end diff --git a/script/c31292357.lua b/script/c31292357.lua index 46e5a526..4e2d4621 100644 --- a/script/c31292357.lua +++ b/script/c31292357.lua @@ -1,76 +1,76 @@ ---Emハットトリッカー -function c31292357.initial_effect(c) - c:EnableCounterPermit(0x36) - c:SetCounterLimit(0x36,3) - --special summon rule - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetCondition(c31292357.spcon) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_COUNTER) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(aux.damcon1) - e2:SetTarget(c31292357.cttg) - e2:SetOperation(c31292357.ctop) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ADD_COUNTER+0x36) - e3:SetCondition(c31292357.atkcon) - e3:SetOperation(c31292357.atkop) - c:RegisterEffect(e3) -end -function c31292357.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)>=2 -end -function c31292357.cttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsCanAddCounter(0x36,1) end -end -function c31292357.ctop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:AddCounter(0x36,1) then - local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) - local e1=Effect.CreateEffect(c) - 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(c31292357.damval) - e1:SetReset(RESET_CHAIN) - Duel.RegisterEffect(e1,tp) - end -end -function c31292357.damval(e,re,val,r,rp,rc) - local cc=Duel.GetCurrentChain() - if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end - local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) - if cid~=e:GetLabel() then return val end - return 0 -end -function c31292357.atkcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x36)==3 -end -function c31292357.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(3300) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - c:RegisterEffect(e2) -end +--Emハットトリッカー +function c31292357.initial_effect(c) + c:EnableCounterPermit(0x36) + c:SetCounterLimit(0x36,3) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c31292357.spcon) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(aux.damcon1) + e2:SetTarget(c31292357.cttg) + e2:SetOperation(c31292357.ctop) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADD_COUNTER+0x36) + e3:SetCondition(c31292357.atkcon) + e3:SetOperation(c31292357.atkop) + c:RegisterEffect(e3) +end +function c31292357.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)>=2 +end +function c31292357.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanAddCounter(0x36,1) end +end +function c31292357.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:AddCounter(0x36,1) then + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e1=Effect.CreateEffect(c) + 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(c31292357.damval) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + end +end +function c31292357.damval(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid~=e:GetLabel() then return val end + return 0 +end +function c31292357.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x36)==3 +end +function c31292357.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(3300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e2) +end diff --git a/script/c3129635.lua b/script/c3129635.lua index f14fea8e..930a9306 100644 --- a/script/c3129635.lua +++ b/script/c3129635.lua @@ -1,58 +1,58 @@ ---カース・オブ・スタチュー -function c3129635.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c3129635.target) - e1:SetOperation(c3129635.activate) - c:RegisterEffect(e1) -end -function c3129635.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,3129635,0,0x21,1800,1000,4,RACE_ROCK,ATTRIBUTE_DARK) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c3129635.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,3129635,0,0x21,1800,1000,4,RACE_ROCK,ATTRIBUTE_DARK) then return end - c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(3129635,0)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_BATTLED) - e1:SetTarget(c3129635.destg) - e1:SetOperation(c3129635.desop) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1,true) - Duel.SpecialSummonComplete() -end -function c3129635.destg(e,tp,eg,ep,ev,re,r,rp,chk) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if chk==0 then - if a:IsControler(tp) then return d and a~=e:GetHandler() and bit.band(a:GetOriginalType(),TYPE_TRAP)~=0 - else return d and d~=e:GetHandler() and bit.band(d:GetOriginalType(),TYPE_TRAP)~=0 end - end - if a:IsControler(tp) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,d,1,0,0) - e:SetLabelObject(d) - else - Duel.SetOperationInfo(0,CATEGORY_DESTROY,a,1,0,0) - e:SetLabelObject(a) - end -end -function c3129635.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:IsRelateToBattle() then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--カース・オブ・スタチュー +function c3129635.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c3129635.target) + e1:SetOperation(c3129635.activate) + c:RegisterEffect(e1) +end +function c3129635.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,3129635,0,0x21,1800,1000,4,RACE_ROCK,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c3129635.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,3129635,0,0x21,1800,1000,4,RACE_ROCK,ATTRIBUTE_DARK) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3129635,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_BATTLED) + e1:SetTarget(c3129635.destg) + e1:SetOperation(c3129635.desop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() +end +function c3129635.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if chk==0 then + if a:IsControler(tp) then return d and a~=e:GetHandler() and bit.band(a:GetOriginalType(),TYPE_TRAP)~=0 + else return d and d~=e:GetHandler() and bit.band(d:GetOriginalType(),TYPE_TRAP)~=0 end + end + if a:IsControler(tp) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,d,1,0,0) + e:SetLabelObject(d) + else + Duel.SetOperationInfo(0,CATEGORY_DESTROY,a,1,0,0) + e:SetLabelObject(a) + end +end +function c3129635.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsRelateToBattle() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c31314549.lua b/script/c31314549.lua index f22c6b97..8911093e 100644 --- a/script/c31314549.lua +++ b/script/c31314549.lua @@ -1,21 +1,21 @@ ---RR-シンギング・レイニアス -function c31314549.initial_effect(c) - --special summon rule - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetCountLimit(1,31314549) - e1:SetCondition(c31314549.spcon) - c:RegisterEffect(e1) -end -function c31314549.cfilter(c) - return c:IsFaceup() and c:IsType(TYPE_XYZ) -end -function c31314549.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c31314549.cfilter,tp,LOCATION_MZONE,0,1,nil) -end +--RR-シンギング・レイニアス +function c31314549.initial_effect(c) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCountLimit(1,31314549) + e1:SetCondition(c31314549.spcon) + c:RegisterEffect(e1) +end +function c31314549.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c31314549.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c31314549.cfilter,tp,LOCATION_MZONE,0,1,nil) +end diff --git a/script/c31320433.lua b/script/c31320433.lua index c7ba0246..8531628e 100644 --- a/script/c31320433.lua +++ b/script/c31320433.lua @@ -14,7 +14,7 @@ function c31320433.initial_effect(c) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(31320433,1)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) diff --git a/script/c313513.lua b/script/c313513.lua index d8720d29..2183435e 100644 --- a/script/c313513.lua +++ b/script/c313513.lua @@ -1,68 +1,90 @@ ---魔法の歯車 -function c313513.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c313513.cost) - e1:SetTarget(c313513.target) - e1:SetOperation(c313513.activate) - c:RegisterEffect(e1) -end -function c313513.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x7) and c:IsAbleToGraveAsCost() -end -function c313513.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c313513.cfilter,tp,LOCATION_ONFIELD,0,3,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c313513.cfilter,tp,LOCATION_ONFIELD,0,3,3,nil) - Duel.SendtoGrave(g,REASON_COST) - if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetReset(RESET_SELF_TURN+RESET_PHASE+PHASE_END,2) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) -end -function c313513.filter(c,e,tp) - return c:IsCode(83104731) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c313513.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c313513.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c313513.dfilter(c) - return c:IsFacedown() or c:GetCode()~=83104731 -end -function c313513.activate(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - local ct=0 - if ft==1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c313513.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - ct=Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectMatchingCard(tp,c313513.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - if g1:GetCount()>0 and Duel.SpecialSummonStep(g1:GetFirst(),0,tp,tp,true,false,POS_FACEUP) then ct=ct+1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectMatchingCard(tp,c313513.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g2:GetCount()>0 and Duel.SpecialSummonStep(g2:GetFirst(),0,tp,tp,true,false,POS_FACEUP) then ct=ct+1 end - Duel.SpecialSummonComplete() - end - if ct>0 then - local dg=Duel.GetMatchingGroup(c313513.dfilter,tp,LOCATION_MZONE,0,nil) - if dg:GetCount()>0 then - Duel.BreakEffect() - Duel.Destroy(dg,REASON_EFFECT) - end - end -end +--魔法の歯車 +function c313513.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c313513.cost) + e1:SetTarget(c313513.target) + e1:SetOperation(c313513.activate) + c:RegisterEffect(e1) +end +function c313513.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x7) and c:IsAbleToGraveAsCost() +end +function c313513.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + local tg=Duel.GetMatchingGroup(c313513.cfilter,tp,LOCATION_ONFIELD,0,nil) + if chk==0 then + e:SetLabel(1) + return ct<=3 and tg:GetCount()>=3 + and (ct<=0 or tg:IsExists(Card.IsLocation,ct,nil,LOCATION_MZONE)) + end + local g=nil + if ct>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + g=tg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) + if ct<3 then + tg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=tg:Select(tp,3-ct,3-ct,nil) + g:Merge(g2) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + g=tg:Select(tp,3,3,nil) + end + Duel.SendtoGrave(g,REASON_COST) + if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetReset(RESET_SELF_TURN+RESET_PHASE+PHASE_END,2) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c313513.filter(c,e,tp) + return c:IsCode(83104731) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c313513.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c313513.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c313513.dfilter(c) + return c:IsFacedown() or c:GetCode()~=83104731 +end +function c313513.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local ct=0 + if ft==1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c313513.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + ct=Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c313513.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g1:GetCount()>0 and Duel.SpecialSummonStep(g1:GetFirst(),0,tp,tp,true,false,POS_FACEUP) then ct=ct+1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c313513.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g2:GetCount()>0 and Duel.SpecialSummonStep(g2:GetFirst(),0,tp,tp,true,false,POS_FACEUP) then ct=ct+1 end + Duel.SpecialSummonComplete() + end + if ct>0 then + local dg=Duel.GetMatchingGroup(c313513.dfilter,tp,LOCATION_MZONE,0,nil) + if dg:GetCount()>0 then + Duel.BreakEffect() + Duel.Destroy(dg,REASON_EFFECT) + end + end +end diff --git a/script/c31383545.lua b/script/c31383545.lua index d1d5c13d..cccd0b7e 100644 --- a/script/c31383545.lua +++ b/script/c31383545.lua @@ -3,6 +3,7 @@ function c31383545.initial_effect(c) --to grave local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c31383545.regop) c:RegisterEffect(e1) diff --git a/script/c31423101.lua b/script/c31423101.lua index fc7b9fff..9c9008d4 100644 --- a/script/c31423101.lua +++ b/script/c31423101.lua @@ -1,27 +1,12 @@ --神剣-フェニックスブレード function c31423101.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(c31423101.target) - e1:SetOperation(c31423101.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(300) 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(c31423101.equiplimit) - c:RegisterEffect(e3) --to hand local e4=Effect.CreateEffect(c) e4:SetCategory(CATEGORY_TOHAND) @@ -33,25 +18,6 @@ function c31423101.initial_effect(c) e4:SetOperation(c31423101.thop) c:RegisterEffect(e4) end -function c31423101.equiplimit(e,c) - return c:IsRace(RACE_WARRIOR) -end -function c31423101.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c31423101.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c31423101.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c31423101.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c31423101.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c31423101.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 c31423101.thfilter(c) return c:IsRace(RACE_WARRIOR) and c:IsAbleToRemoveAsCost() end diff --git a/script/c31437713.lua b/script/c31437713.lua index dcb1c646..c36f22a9 100644 --- a/script/c31437713.lua +++ b/script/c31437713.lua @@ -16,6 +16,7 @@ function c31437713.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(31437713,0)) e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c31437713.condition) diff --git a/script/c31444249.lua b/script/c31444249.lua index 0cdbbec9..376f64c1 100644 --- a/script/c31444249.lua +++ b/script/c31444249.lua @@ -1,123 +1,126 @@ ---煉獄の虚夢 -function c31444249.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --change level - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CHANGE_LEVEL) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetValue(1) - e2:SetTarget(c31444249.lvtg) - c:RegisterEffect(e2) - --reduce battle damage - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e3:SetRange(LOCATION_SZONE) - e3:SetCondition(c31444249.rdcon) - e3:SetOperation(c31444249.rdop) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_SZONE) - e4:SetCost(c31444249.spcost) - e4:SetTarget(c31444249.sptg) - e4:SetOperation(c31444249.spop) - c:RegisterEffect(e4) -end -function c31444249.lvtg(e,c) - return c:IsSetCard(0xbb) and c:GetOriginalLevel()>=2 -end -function c31444249.rdcon(e,tp,eg,ep,ev,re,r,rp) - local ac=eg:GetFirst() - return ep~=tp and ac:IsControler(tp) and ac:IsSetCard(0xbb) and ac:GetOriginalLevel()>=2 and not ac:IsImmuneToEffect(e) -end -function c31444249.rdop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev/2) -end -function c31444249.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c31444249.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) -end -function c31444249.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0xbb) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c31444249.dmcon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(aux.FilterEqualFunction(Card.GetSummonLocation,LOCATION_EXTRA),tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingMatchingCard(aux.FilterEqualFunction(Card.GetSummonLocation,LOCATION_EXTRA),tp,0,LOCATION_MZONE,1,nil) -end -function c31444249.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c31444249.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - if c31444249.dmcon(e,tp,eg,ep,ev,re,r,rp) then - local sg=Duel.GetMatchingGroup(c31444249.filter1,tp,LOCATION_DECK,0,nil,e) - mg1:Merge(sg) - end - local res=Duel.IsExistingMatchingCard(c31444249.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c31444249.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c31444249.spop(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c31444249.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - if c31444249.dmcon(e,tp,eg,ep,ev,re,r,rp) then - local dmg=Duel.GetMatchingGroup(c31444249.filter1,tp,LOCATION_DECK,0,nil,e) - mg1:Merge(dmg) - end - local sg1=Duel.GetMatchingGroup(c31444249.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c31444249.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - if c31444249.dmcon(e,tp,eg,ep,ev,re,r,rp) then - local mgd=Duel.GetMatchingGroup(c31444249.filter1,tp,LOCATION_DECK,0,nil,e) - mg1:Merge(mgd) - tc:RegisterFlagEffect(31444249,RESET_CHAIN,0,1) - end - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--煉獄の虚夢 +function c31444249.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --change level + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_LEVEL) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetValue(1) + e2:SetTarget(c31444249.lvtg) + c:RegisterEffect(e2) + --reduce battle damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c31444249.rdcon) + e3:SetOperation(c31444249.rdop) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCost(c31444249.spcost) + e4:SetTarget(c31444249.sptg) + e4:SetOperation(c31444249.spop) + c:RegisterEffect(e4) +end +function c31444249.lvtg(e,c) + return c:IsSetCard(0xbb) and c:GetOriginalLevel()>=2 +end +function c31444249.rdcon(e,tp,eg,ep,ev,re,r,rp) + local ac=eg:GetFirst() + return ep~=tp and ac:IsControler(tp) and ac:IsSetCard(0xbb) and ac:GetOriginalLevel()>=2 and not ac:IsImmuneToEffect(e) +end +function c31444249.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end +function c31444249.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c31444249.filter0(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave() +end +function c31444249.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c31444249.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0xbb) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c31444249.dmcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(aux.FilterEqualFunction(Card.GetSummonLocation,LOCATION_EXTRA),tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(aux.FilterEqualFunction(Card.GetSummonLocation,LOCATION_EXTRA),tp,0,LOCATION_MZONE,1,nil) +end +function c31444249.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + if c31444249.dmcon(e,tp,eg,ep,ev,re,r,rp) then + local sg=Duel.GetMatchingGroup(c31444249.filter0,tp,LOCATION_DECK,0,nil) + mg1:Merge(sg) + end + local res=Duel.IsExistingMatchingCard(c31444249.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c31444249.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c31444249.spop(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c31444249.filter1,nil,e) + if c31444249.dmcon(e,tp,eg,ep,ev,re,r,rp) then + local dmg=Duel.GetMatchingGroup(c31444249.filter0,tp,LOCATION_DECK,0,nil) + mg1:Merge(dmg) + end + local sg1=Duel.GetMatchingGroup(c31444249.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c31444249.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + if c31444249.dmcon(e,tp,eg,ep,ev,re,r,rp) then + local mgd=Duel.GetMatchingGroup(c31444249.filter0,tp,LOCATION_DECK,0,nil) + mg1:Merge(mgd) + tc:RegisterFlagEffect(31444249,RESET_CHAIN,0,1) + end + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c3146695.lua b/script/c3146695.lua index 42cd8c58..9844788c 100644 --- a/script/c3146695.lua +++ b/script/c3146695.lua @@ -34,8 +34,7 @@ function c3146695.regop(e,tp,eg,ep,ev,re,r,rp) Duel.RegisterEffect(e1,tp) local e2=Effect.CreateEffect(e:GetHandler()) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE_START+PHASE_END) - e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCode(EVENT_TURN_END) e2:SetCountLimit(1) e2:SetLabelObject(g) e2:SetOperation(c3146695.reset) @@ -61,4 +60,5 @@ function c3146695.operation(e,tp,eg,ep,ev,re,r,rp) end function c3146695.reset(e,tp,eg,ep,ev,re,r,rp) e:GetLabelObject():DeleteGroup() + e:Reset() end diff --git a/script/c31476755.lua b/script/c31476755.lua index 628c553b..79d4f3d3 100644 --- a/script/c31476755.lua +++ b/script/c31476755.lua @@ -1,49 +1,49 @@ ---砂塵の結界 -function c31476755.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c31476755.target) - c:RegisterEffect(e1) - --immune - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_NORMAL)) - e2:SetValue(c31476755.efilter) - c:RegisterEffect(e2) -end -function c31476755.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - c:SetTurnCounter(0) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_SZONE) - e1:SetCondition(c31476755.descon) - e1:SetOperation(c31476755.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - c:RegisterEffect(e1) -end -function c31476755.descon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c31476755.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetTurnCounter() - ct=ct+1 - c:SetTurnCounter(ct) - if ct==2 then - Duel.Destroy(c,REASON_EFFECT) - end -end -function c31476755.efilter(e,re) - return e:GetHandlerPlayer()~=re:GetOwnerPlayer() and re:IsActiveType(TYPE_SPELL) -end +--砂塵の結界 +function c31476755.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c31476755.target) + c:RegisterEffect(e1) + --immune + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_NORMAL)) + e2:SetValue(c31476755.efilter) + c:RegisterEffect(e2) +end +function c31476755.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + c:SetTurnCounter(0) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c31476755.descon) + e1:SetOperation(c31476755.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + c:RegisterEffect(e1) +end +function c31476755.descon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c31476755.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==2 then + Duel.Destroy(c,REASON_EFFECT) + end +end +function c31476755.efilter(e,re) + return e:GetHandlerPlayer()~=re:GetOwnerPlayer() and re:IsActiveType(TYPE_SPELL) +end diff --git a/script/c3149764.lua b/script/c3149764.lua index 780e691f..b7aa3389 100644 --- a/script/c3149764.lua +++ b/script/c3149764.lua @@ -27,8 +27,7 @@ function c3149764.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c3149764.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c31516413.lua b/script/c31516413.lua index 3f466797..b65960a6 100644 --- a/script/c31516413.lua +++ b/script/c31516413.lua @@ -69,10 +69,10 @@ end function c31516413.spop(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,c31516413.spfilter,tp,0x13,0,1,1,nil,e,tp) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c31516413.spfilter),tp,0x13,0,1,1,nil,e,tp) local tc=g:GetFirst() - if tc and tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end - if tc and Duel.SpecialSummonStep(g:GetFirst(),0,tp,tp,false,false,POS_FACEUP) then + if not tc then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SET_ATTACK) diff --git a/script/c31548814.lua b/script/c31548814.lua new file mode 100644 index 00000000..25428338 --- /dev/null +++ b/script/c31548814.lua @@ -0,0 +1,42 @@ +--煉獄の狂宴 +function c31548814.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c31548814.cost) + e1:SetTarget(c31548814.target) + e1:SetOperation(c31548814.activate) + c:RegisterEffect(e1) +end +function c31548814.costfilter(c) + return c:IsSetCard(0xc5) and c:IsType(TYPE_SPELL+TYPE_TRAP) and (c:IsFaceup() or c:IsLocation(LOCATION_HAND)) and c:IsAbleToGraveAsCost() +end +function c31548814.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c31548814.costfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c31548814.costfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) +end +function c31548814.spfilter(c,e,tp) + return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c31548814.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local ft=math.min(Duel.GetLocationCount(tp,LOCATION_MZONE),3) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetMatchingGroup(c31548814.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + return ft>0 and g:CheckWithSumEqual(Card.GetLevel,8,1,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c31548814.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=math.min(Duel.GetLocationCount(tp,LOCATION_MZONE),3) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetMatchingGroup(c31548814.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if ft<=0 or g:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:SelectWithSumEqual(tp,Card.GetLevel,8,1,ft) + Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEUP) +end diff --git a/script/c31554054.lua b/script/c31554054.lua index c486d6e4..86884dfd 100644 --- a/script/c31554054.lua +++ b/script/c31554054.lua @@ -1,43 +1,43 @@ ---エクシーズ・リベンジ・シャッフル -function c31554054.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_BE_BATTLE_TARGET) - e1:SetCondition(c31554054.condition) - e1:SetTarget(c31554054.target) - e1:SetOperation(c31554054.activate) - c:RegisterEffect(e1) -end -function c31554054.condition(e,tp,eg,ep,ev,re,r,rp) - local at=Duel.GetAttackTarget() - return at and at:IsFaceup() and at:IsControler(tp) and at:IsType(TYPE_XYZ) -end -function c31554054.filter(c,e,tp) - return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c31554054.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c31554054.filter(chkc,e,tp) end - if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) - and Duel.GetAttackTarget():IsAbleToDeck() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c31554054.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c31554054.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.GetAttackTarget():CreateEffectRelation(e) - Duel.SetOperationInfo(0,CATEGORY_TODECK,Duel.GetAttackTarget(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c31554054.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local at=Duel.GetAttackTarget() - if at:IsRelateToEffect(e) and at:IsFaceup() and Duel.SendtoDeck(at,nil,2,REASON_EFFECT)>0 then - Duel.BreakEffect() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 and c:IsRelateToEffect(e) then - c:CancelToGrave() - Duel.Overlay(tc,Group.FromCards(c)) - end - end -end +--エクシーズ・リベンジ・シャッフル +function c31554054.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c31554054.condition) + e1:SetTarget(c31554054.target) + e1:SetOperation(c31554054.activate) + c:RegisterEffect(e1) +end +function c31554054.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at and at:IsFaceup() and at:IsControler(tp) and at:IsType(TYPE_XYZ) +end +function c31554054.filter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c31554054.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c31554054.filter(chkc,e,tp) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.GetAttackTarget():IsAbleToDeck() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c31554054.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c31554054.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.GetAttackTarget():CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_TODECK,Duel.GetAttackTarget(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c31554054.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local at=Duel.GetAttackTarget() + if at:IsRelateToEffect(e) and at:IsFaceup() and Duel.SendtoDeck(at,nil,2,REASON_EFFECT)>0 then + Duel.BreakEffect() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 and c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + end + end +end diff --git a/script/c31563350.lua b/script/c31563350.lua index 2d3035b2..27d909d9 100644 --- a/script/c31563350.lua +++ b/script/c31563350.lua @@ -7,6 +7,7 @@ function c31563350.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(31563350,0)) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCategory(CATEGORY_EQUIP) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c316000124.lua b/script/c316000124.lua new file mode 100644 index 00000000..3dfd770a --- /dev/null +++ b/script/c316000124.lua @@ -0,0 +1,44 @@ +--Dimension Dice +function c316000124.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START) + e1:SetCondition(c316000124.con) + e1:SetCost(c316000124.cost) + e1:SetTarget(c316000124.target) + e1:SetOperation(c316000124.activate) + c:RegisterEffect(e1) +end +function c316000124.filter(c) + return c:IsFaceup() and c:IsCode(511001152) +end +function c316000124.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c316000124.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.GetEnvironment()==511001152 +end +function c316000124.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,2,nil) end + local rg=Duel.SelectReleaseGroup(tp,nil,2,2,nil) + Duel.Release(rg,REASON_COST) +end +function c316000124.filter2(c,e,tp) + return c:IsCode(140000074) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c316000124.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c316000124.filter2,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c316000124.activate(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,c316000124.filter2,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c31615285.lua b/script/c31615285.lua index 0af21cee..ea8493c1 100644 --- a/script/c31615285.lua +++ b/script/c31615285.lua @@ -1,24 +1,24 @@ ---サボウ・クローザー -function c31615285.initial_effect(c) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --disable spsummon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - e2:SetCondition(c31615285.dscon) - c:RegisterEffect(e2) -end -function c31615285.filter(c) - return c:IsFaceup() and c:IsRace(RACE_PLANT) -end -function c31615285.dscon(e) - return Duel.IsExistingMatchingCard(c31615285.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) -end +--サボウ・クローザー +function c31615285.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --disable spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetCondition(c31615285.dscon) + c:RegisterEffect(e2) +end +function c31615285.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c31615285.dscon(e) + return Duel.IsExistingMatchingCard(c31615285.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end diff --git a/script/c31632536.lua b/script/c31632536.lua index 58234aa8..72f3006c 100644 --- a/script/c31632536.lua +++ b/script/c31632536.lua @@ -1,40 +1,40 @@ ---ラヴァル・ツインスレイヤー -function c31632536.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsAttribute,ATTRIBUTE_FIRE),1) - c:EnableReviveLimit() - --chain attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_BATTLED) - e1:SetOperation(c31632536.caop1) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_DAMAGE_STEP_END) - e2:SetOperation(c31632536.caop2) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) - --pierce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_PIERCE) - e3:SetCondition(c31632536.pcon) - c:RegisterEffect(e3) -end -function c31632536.caop1(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if e:GetHandler()==a and d and d:IsDefensePos() then e:SetLabel(1) - else e:SetLabel(0) end -end -function c31632536.caop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if e:GetLabelObject():GetLabel()==1 and c:IsRelateToBattle() and c:IsChainAttackable() - and Duel.GetMatchingGroupCount(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x39)>=2 then - Duel.ChainAttack() - end -end -function c31632536.pcon(e) - return Duel.GetMatchingGroupCount(Card.IsSetCard,e:GetHandler():GetControler(),LOCATION_GRAVE,0,nil,0x39)>=3 -end +--ラヴァル・ツインスレイヤー +function c31632536.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsAttribute,ATTRIBUTE_FIRE),1) + c:EnableReviveLimit() + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLED) + e1:SetOperation(c31632536.caop1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetOperation(c31632536.caop2) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + e3:SetCondition(c31632536.pcon) + c:RegisterEffect(e3) +end +function c31632536.caop1(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if e:GetHandler()==a and d and d:IsDefensePos() then e:SetLabel(1) + else e:SetLabel(0) end +end +function c31632536.caop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabelObject():GetLabel()==1 and c:IsRelateToBattle() and c:IsChainAttackable() + and Duel.GetMatchingGroupCount(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x39)>=2 then + Duel.ChainAttack() + end +end +function c31632536.pcon(e) + return Duel.GetMatchingGroupCount(Card.IsSetCard,e:GetHandler():GetControler(),LOCATION_GRAVE,0,nil,0x39)>=3 +end diff --git a/script/c3167573.lua b/script/c3167573.lua index 8e878fcb..5a38175e 100644 --- a/script/c3167573.lua +++ b/script/c3167573.lua @@ -1,60 +1,60 @@ ---パペット・キング -function c3167573.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(3167573,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EVENT_TO_HAND) - e1:SetCondition(c3167573.spcon) - e1:SetTarget(c3167573.sptg) - e1:SetOperation(c3167573.spop) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c3167573.descon) - e2:SetOperation(c3167573.desop) - c:RegisterEffect(e2) - e1:SetLabelObject(e2) -end -function c3167573.cfilter(c,tp) - return c:IsControler(1-tp) and c:IsPreviousLocation(LOCATION_DECK) and not c:IsReason(REASON_DRAW) - and c:IsType(TYPE_MONSTER) -end -function c3167573.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c3167573.cfilter,1,nil,tp) -end -function c3167573.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c3167573.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e2=e:GetLabelObject() - if Duel.GetTurnPlayer()==tp then - c:RegisterFlagEffect(3167573,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,2) - e2:SetLabel(Duel.GetTurnCount()+2) - else - c:RegisterFlagEffect(3167573,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,1) - e2:SetLabel(Duel.GetTurnCount()+1) - end - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c3167573.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(3167573)>0 and Duel.GetTurnCount()==e:GetLabel() -end -function c3167573.desop(e,tp,eg,ep,ev,re,r,rp) - e:SetLabel(0) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--パペット・キング +function c3167573.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3167573,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c3167573.spcon) + e1:SetTarget(c3167573.sptg) + e1:SetOperation(c3167573.spop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c3167573.descon) + e2:SetOperation(c3167573.desop) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c3167573.cfilter(c,tp) + return c:IsControler(1-tp) and c:IsPreviousLocation(LOCATION_DECK) and not c:IsReason(REASON_DRAW) + and c:IsType(TYPE_MONSTER) +end +function c3167573.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c3167573.cfilter,1,nil,tp) +end +function c3167573.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c3167573.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e2=e:GetLabelObject() + if Duel.GetTurnPlayer()==tp then + c:RegisterFlagEffect(3167573,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,2) + e2:SetLabel(Duel.GetTurnCount()+2) + else + c:RegisterFlagEffect(3167573,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,1) + e2:SetLabel(Duel.GetTurnCount()+1) + end + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c3167573.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(3167573)>0 and Duel.GetTurnCount()==e:GetLabel() +end +function c3167573.desop(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(0) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c31755044.lua b/script/c31755044.lua new file mode 100644 index 00000000..16185e2f --- /dev/null +++ b/script/c31755044.lua @@ -0,0 +1,58 @@ +--十二獣ヴァイパー +function c31755044.initial_effect(c) + --material + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(31755044,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c31755044.mattg) + e1:SetOperation(c31755044.matop) + c:RegisterEffect(e1) + --get effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(31755044,1)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_XMATERIAL+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c31755044.rmcon) + e2:SetTarget(c31755044.rmtg) + e2:SetOperation(c31755044.rmop) + c:RegisterEffect(e2) +end +function c31755044.matfilter(c) + return c:IsFaceup() and c:IsRace(RACE_BEASTWARRIOR) and c:IsType(TYPE_XYZ) +end +function c31755044.mattg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c31755044.matfilter(chkc) end + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.IsExistingTarget(c31755044.matfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c31755044.matfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c31755044.matop(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 not tc:IsImmuneToEffect(e) then + Duel.Overlay(tc,Group.FromCards(c)) + end +end +function c31755044.rmcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + e:SetLabelObject(bc) + return c:GetOriginalRace()==RACE_BEASTWARRIOR + and bc and bc:IsStatus(STATUS_OPPO_BATTLE) and bc:IsRelateToBattle() +end +function c31755044.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetLabelObject():IsAbleToRemove() end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetLabelObject(),1,0,0) +end +function c31755044.rmop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetLabelObject() + if bc:IsRelateToBattle() and bc:IsControler(1-tp) then + Duel.Remove(bc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c31768112.lua b/script/c31768112.lua index b55da644..759b6ea9 100644 --- a/script/c31768112.lua +++ b/script/c31768112.lua @@ -16,7 +16,7 @@ function c31768112.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c31768112.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c31768112.sptg) e2:SetOperation(c31768112.spop) c:RegisterEffect(e2) @@ -25,7 +25,7 @@ function c31768112.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetCondition(c31768112.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetValue(1) c:RegisterEffect(e3) --draw @@ -48,9 +48,7 @@ function c31768112.initial_effect(c) e5:SetValue(c31768112.eqlimit) c:RegisterEffect(e5) end -function c31768112.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c31768112.old_union=true function c31768112.eqlimit(e,c) return c:IsRace(RACE_MACHINE) end @@ -75,7 +73,7 @@ function c31768112.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c31768112.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(31768112)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -92,7 +90,7 @@ function c31768112.spop(e,tp,eg,ep,ev,re,r,rp) end end function c31768112.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and e:GetHandler():GetEquipTarget()==eg:GetFirst() + return aux.IsUnionState(e) and e:GetHandler():GetEquipTarget()==eg:GetFirst() end function c31768112.drtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end diff --git a/script/c31786629.lua b/script/c31786629.lua index bb7d4207..f2828c43 100644 --- a/script/c31786629.lua +++ b/script/c31786629.lua @@ -1,33 +1,33 @@ ---サンダー・ドラゴン -function c31786629.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(31786629,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c31786629.cost) - e1:SetTarget(c31786629.target) - e1:SetOperation(c31786629.operation) - c:RegisterEffect(e1) -end -function c31786629.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c31786629.filter(c) - return c:IsCode(31786629) and c:IsAbleToHand() -end -function c31786629.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c31786629.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c31786629.operation(e,tp,eg,ep,ev,re,r,rp,chk) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c31786629.filter,tp,LOCATION_DECK,0,1,2,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--サンダー・ドラゴン +function c31786629.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(31786629,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c31786629.cost) + e1:SetTarget(c31786629.target) + e1:SetOperation(c31786629.operation) + c:RegisterEffect(e1) +end +function c31786629.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c31786629.filter(c) + return c:IsCode(31786629) and c:IsAbleToHand() +end +function c31786629.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c31786629.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c31786629.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c31786629.filter,tp,LOCATION_DECK,0,1,2,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c31801517.lua b/script/c31801517.lua index b9e40b5d..05b6b5d3 100644 --- a/script/c31801517.lua +++ b/script/c31801517.lua @@ -8,6 +8,7 @@ function c31801517.initial_effect(c) e1:SetDescription(aux.Stringid(31801517,0)) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c31801517.atkcon) diff --git a/script/c31829185.lua b/script/c31829185.lua index 674df691..b8625b81 100644 --- a/script/c31829185.lua +++ b/script/c31829185.lua @@ -1,88 +1,88 @@ ---ダーク・ネクロフィア -function c31829185.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c31829185.spcon) - e1:SetOperation(c31829185.spop) - c:RegisterEffect(e1) - --reg - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetOperation(c31829185.tgop) - c:RegisterEffect(e2) - --equip - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_GRAVE) - e3:SetCountLimit(1) - e3:SetCondition(c31829185.eqcon) - e3:SetTarget(c31829185.eqtg) - e3:SetOperation(c31829185.eqop) - c:RegisterEffect(e3) -end -function c31829185.spfilter(c) - return c:IsRace(RACE_FIEND) and c:IsAbleToRemoveAsCost() -end -function c31829185.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c31829185.spfilter,tp,LOCATION_GRAVE,0,3,nil) -end -function c31829185.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c31829185.spfilter,tp,LOCATION_GRAVE,0,3,3,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c31829185.tgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) - and rp~=tp and bit.band(r,REASON_DESTROY)~=0 then - c:RegisterFlagEffect(31829185,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - end -end -function c31829185.eqcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(31829185)>0 -end -function c31829185.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c31829185.eqlimit(e,c) - return e:GetOwner()==c -end -function c31829185.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc and c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc) - --Add Equip limit - local e1=Effect.CreateEffect(tc) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c31829185.eqlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_SET_CONTROL) - e2:SetValue(tp) - e2:SetReset(RESET_EVENT+0x1fc0000) - c:RegisterEffect(e2) - end -end +--ダーク・ネクロフィア +function c31829185.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c31829185.spcon) + e1:SetOperation(c31829185.spop) + c:RegisterEffect(e1) + --reg + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c31829185.tgop) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1) + e3:SetCondition(c31829185.eqcon) + e3:SetTarget(c31829185.eqtg) + e3:SetOperation(c31829185.eqop) + c:RegisterEffect(e3) +end +function c31829185.spfilter(c) + return c:IsRace(RACE_FIEND) and c:IsAbleToRemoveAsCost() +end +function c31829185.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c31829185.spfilter,tp,LOCATION_GRAVE,0,3,nil) +end +function c31829185.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c31829185.spfilter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c31829185.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and rp~=tp and bit.band(r,REASON_DESTROY)~=0 then + c:RegisterFlagEffect(31829185,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c31829185.eqcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(31829185)>0 +end +function c31829185.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c31829185.eqlimit(e,c) + return e:GetOwner()==c +end +function c31829185.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c31829185.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_CONTROL) + e2:SetValue(tp) + e2:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e2) + end +end diff --git a/script/c31849106.lua b/script/c31849106.lua index 679ecfbd..476ca31a 100644 --- a/script/c31849106.lua +++ b/script/c31849106.lua @@ -10,7 +10,7 @@ end function c31849106.activate(e,tp,eg,ep,ev,re,r,rp) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) e1:SetCode(EFFECT_TO_GRAVE_REDIRECT) e1:SetTarget(c31849106.rmtarget) e1:SetTargetRange(0xff, 0xff) diff --git a/script/c31930787.lua b/script/c31930787.lua index 69a31e23..9a33662e 100644 --- a/script/c31930787.lua +++ b/script/c31930787.lua @@ -1,139 +1,139 @@ ---機皇帝スキエル∞ -function c31930787.initial_effect(c) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(0) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(31930787,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c31930787.spcon) - e2:SetTarget(c31930787.sptg) - e2:SetOperation(c31930787.spop) - c:RegisterEffect(e2) - --cannot attack announce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(c31930787.antarget) - c:RegisterEffect(e3) - --equip - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(31930787,1)) - e4:SetCategory(CATEGORY_EQUIP) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1) - e4:SetTarget(c31930787.eqtg) - e4:SetOperation(c31930787.eqop) - c:RegisterEffect(e4) - --direct attack - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(31930787,2)) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCondition(c31930787.dircon) - e5:SetCost(c31930787.dircost) - e5:SetOperation(c31930787.dirop) - c:RegisterEffect(e5) -end -function c31930787.filter(c,tp) - return c:IsType(TYPE_MONSTER) and bit.band(c:GetReason(),0x41)==0x41 and c:GetPreviousControler()==tp - and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) -end -function c31930787.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c31930787.filter,1,nil,tp) -end -function c31930787.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c31930787.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then - c:CompleteProcedure() - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c31930787.antarget(e,c) - return c~=e:GetHandler() -end -function c31930787.eqfilter(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() -end -function c31930787.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c31930787.eqfilter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c31930787.eqfilter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c31930787.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c31930787.eqlimit(e,c) - return e:GetOwner()==c -end -function c31930787.eqop(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:IsType(TYPE_MONSTER)then - if c:IsFaceup() and c:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,tc,c,false) then return end - --Add Equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c31930787.eqlimit) - tc:RegisterEffect(e1) - if atk>0 then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - tc:RegisterEffect(e2) - end - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c31930787.dircon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 and not e:GetHandler():IsHasEffect(EFFECT_DIRECT_ATTACK) -end -function c31930787.dcfilter(c) - return bit.band(c:GetOriginalType(),TYPE_MONSTER)~=0 and c:IsAbleToGraveAsCost() -end -function c31930787.dircost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(c31930787.dcfilter,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,c31930787.dcfilter,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c31930787.dirop(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1,true) -end +--機皇帝スキエル∞ +function c31930787.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(0) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(31930787,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c31930787.spcon) + e2:SetTarget(c31930787.sptg) + e2:SetOperation(c31930787.spop) + c:RegisterEffect(e2) + --cannot attack announce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c31930787.antarget) + c:RegisterEffect(e3) + --equip + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(31930787,1)) + e4:SetCategory(CATEGORY_EQUIP) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c31930787.eqtg) + e4:SetOperation(c31930787.eqop) + c:RegisterEffect(e4) + --direct attack + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(31930787,2)) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c31930787.dircon) + e5:SetCost(c31930787.dircost) + e5:SetOperation(c31930787.dirop) + c:RegisterEffect(e5) +end +function c31930787.filter(c,tp) + return c:IsType(TYPE_MONSTER) and bit.band(c:GetReason(),0x41)==0x41 and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) +end +function c31930787.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c31930787.filter,1,nil,tp) +end +function c31930787.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c31930787.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then + c:CompleteProcedure() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c31930787.antarget(e,c) + return c~=e:GetHandler() +end +function c31930787.eqfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() +end +function c31930787.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c31930787.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c31930787.eqfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c31930787.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c31930787.eqlimit(e,c) + return e:GetOwner()==c +end +function c31930787.eqop(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:IsType(TYPE_MONSTER)then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c31930787.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c31930787.dircon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 and not e:GetHandler():IsHasEffect(EFFECT_DIRECT_ATTACK) +end +function c31930787.dcfilter(c) + return bit.band(c:GetOriginalType(),TYPE_MONSTER)~=0 and c:IsAbleToGraveAsCost() +end +function c31930787.dircost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(c31930787.dcfilter,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,c31930787.dcfilter,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c31930787.dirop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1,true) +end diff --git a/script/c31991800.lua b/script/c31991800.lua index dcf976dc..41a6da06 100644 --- a/script/c31991800.lua +++ b/script/c31991800.lua @@ -1,52 +1,52 @@ ---マジェスペクター・ラクーン -function c31991800.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetCountLimit(1,31991800) - e2:SetTarget(c31991800.thtg) - e2:SetOperation(c31991800.thop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --cannot target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e4:SetValue(aux.tgoval) - c:RegisterEffect(e4) - --indes - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e5:SetRange(LOCATION_MZONE) - e5:SetValue(c31991800.indval) - c:RegisterEffect(e5) -end -function c31991800.thfilter(c) - return c:IsSetCard(0xd0) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c31991800.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c31991800.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c31991800.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c31991800.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c31991800.indval(e,re,tp) - return tp~=e:GetHandlerPlayer() -end +--マジェスペクター・ラクーン +function c31991800.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCountLimit(1,31991800) + e2:SetTarget(c31991800.thtg) + e2:SetOperation(c31991800.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --cannot target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetValue(aux.tgoval) + c:RegisterEffect(e4) + --indes + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c31991800.indval) + c:RegisterEffect(e5) +end +function c31991800.thfilter(c) + return c:IsSetCard(0xd0) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c31991800.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c31991800.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c31991800.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c31991800.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c31991800.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end diff --git a/script/c32003338.lua b/script/c32003338.lua index 4c2c5309..0308c3bf 100644 --- a/script/c32003338.lua +++ b/script/c32003338.lua @@ -8,7 +8,7 @@ function c32003338.initial_effect(c) e1:SetCategory(CATEGORY_CONTROL) e1:SetDescription(aux.Stringid(32003338,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c32003338.cost) diff --git a/script/c32013448.lua b/script/c32013448.lua index 65071103..dfbcef5d 100644 --- a/script/c32013448.lua +++ b/script/c32013448.lua @@ -1,128 +1,128 @@ ---宵闇の騎士 -function c32013448.initial_effect(c) - --gain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_BE_MATERIAL) - e1:SetCondition(c32013448.mtcon) - e1:SetOperation(c32013448.mtop) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_REMOVE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,32013448) - e2:SetCondition(c32013448.thcon) - e2:SetTarget(c32013448.thtg) - e2:SetOperation(c32013448.thop) - c:RegisterEffect(e2) -end -function c32013448.mtcon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_RITUAL -end -function c32013448.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,32013448)~=0 then return end - local c=e:GetHandler() - local g=eg:Filter(Card.IsSetCard,nil,0x10cf) - local rc=g:GetFirst() - if not rc then return end - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(32013448,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c32013448.rmtg) - e1:SetOperation(c32013448.rmop) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(32013448,1)) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c32013448.rmtg2) - e2:SetOperation(c32013448.rmop2) - e2:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e2,true) - if not rc:IsType(TYPE_EFFECT) then - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_ADD_TYPE) - e3:SetValue(TYPE_EFFECT) - e3:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e3,true) - end - rc:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(32013448,2)) - Duel.RegisterFlagEffect(tp,32013448,RESET_PHASE+PHASE_END,0,1) -end -function c32013448.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c32013448.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end -function c32013448.rmtg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_HAND,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,1-tp,LOCATION_HAND) -end -function c32013448.rmop2(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_HAND,nil) - if g:GetCount()==0 then return end - local sg=g:RandomSelect(tp,1) - local tc=sg:GetFirst() - Duel.Remove(tc,POS_FACEDOWN,REASON_EFFECT) - tc:RegisterFlagEffect(32013448,RESET_EVENT+0x1fe0000,0,1) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetCondition(c32013448.retcon) - e1:SetOperation(c32013448.retop) - e1:SetLabelObject(tc) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - Duel.RegisterEffect(e1,tp) -end -function c32013448.retcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:GetFlagEffect(32013448)==0 then - e:Reset() - return false - else - return Duel.GetTurnPlayer()~=tp - end -end -function c32013448.retop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.SendtoHand(tc,nil,REASON_EFFECT) -end -function c32013448.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_GRAVE) -end -function c32013448.thfilter(c) - return bit.band(c:GetType(),0x81)==0x81 and c:IsAbleToHand() -end -function c32013448.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c32013448.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c32013448.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c32013448.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--宵闇の騎士 +function c32013448.initial_effect(c) + --gain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c32013448.mtcon) + e1:SetOperation(c32013448.mtop) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_REMOVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,32013448) + e2:SetCondition(c32013448.thcon) + e2:SetTarget(c32013448.thtg) + e2:SetOperation(c32013448.thop) + c:RegisterEffect(e2) +end +function c32013448.mtcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RITUAL +end +function c32013448.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,32013448)~=0 then return end + local c=e:GetHandler() + local g=eg:Filter(Card.IsSetCard,nil,0x10cf) + local rc=g:GetFirst() + if not rc then return end + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(32013448,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c32013448.rmtg) + e1:SetOperation(c32013448.rmop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32013448,1)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c32013448.rmtg2) + e2:SetOperation(c32013448.rmop2) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + if not rc:IsType(TYPE_EFFECT) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_ADD_TYPE) + e3:SetValue(TYPE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e3,true) + end + rc:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(32013448,2)) + Duel.RegisterFlagEffect(tp,32013448,RESET_PHASE+PHASE_END,0,1) +end +function c32013448.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c32013448.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end +function c32013448.rmtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_HAND,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,1-tp,LOCATION_HAND) +end +function c32013448.rmop2(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_HAND,nil) + if g:GetCount()==0 then return end + local sg=g:RandomSelect(tp,1) + local tc=sg:GetFirst() + Duel.Remove(tc,POS_FACEDOWN,REASON_EFFECT) + tc:RegisterFlagEffect(32013448,RESET_EVENT+0x1fe0000,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c32013448.retcon) + e1:SetOperation(c32013448.retop) + e1:SetLabelObject(tc) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) +end +function c32013448.retcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(32013448)==0 then + e:Reset() + return false + else + return Duel.GetTurnPlayer()~=tp + end +end +function c32013448.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SendtoHand(tc,nil,REASON_EFFECT) +end +function c32013448.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_GRAVE) +end +function c32013448.thfilter(c) + return bit.band(c:GetType(),0x81)==0x81 and c:IsAbleToHand() +end +function c32013448.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c32013448.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c32013448.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c32013448.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c32022366.lua b/script/c32022366.lua index f81388a1..be8d5f89 100644 --- a/script/c32022366.lua +++ b/script/c32022366.lua @@ -1,27 +1,12 @@ --重力の斧-グラール function c32022366.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(c32022366.target) - e1:SetOperation(c32022366.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(500) 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) --pos limit local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD) @@ -31,17 +16,3 @@ function c32022366.initial_effect(c) e4:SetTargetRange(0,LOCATION_MZONE) c:RegisterEffect(e4) end -function c32022366.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 c32022366.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 diff --git a/script/c32104431.lua b/script/c32104431.lua index ad25e12a..16ab6dbc 100644 --- a/script/c32104431.lua +++ b/script/c32104431.lua @@ -11,7 +11,7 @@ function c32104431.initial_effect(c) c:RegisterEffect(e1) --fusion summon local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetHintTiming(0,0x1c0) @@ -49,10 +49,10 @@ function c32104431.fusioncost(e,tp,eg,ep,ev,re,r,rp,chk) Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) end function c32104431.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() end function c32104431.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) end function c32104431.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsCode(86240887) and (not f or f(c)) diff --git a/script/c3211439.lua b/script/c3211439.lua index ca0c1561..e93766a7 100644 --- a/script/c3211439.lua +++ b/script/c3211439.lua @@ -1,46 +1,46 @@ ---禁断の異本 -function c3211439.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c3211439.target) - e1:SetOperation(c3211439.activate) - c:RegisterEffect(e1) -end -function c3211439.filter(c,tpe) - return c:IsFaceup() and c:IsType(tpe) -end -function c3211439.target(e,tp,eg,ep,ev,re,r,rp,chk) - local b1=Duel.IsExistingMatchingCard(c3211439.filter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil,TYPE_FUSION) - local b2=Duel.IsExistingMatchingCard(c3211439.filter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil,TYPE_SYNCHRO) - local b3=Duel.IsExistingMatchingCard(c3211439.filter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil,TYPE_XYZ) - if chk==0 then return b1 or b2 or b3 end - local off=1 - local ops={} - local opval={} - if b1 then - ops[off]=aux.Stringid(3211439,0) - opval[off-1]=TYPE_FUSION - off=off+1 - end - if b2 then - ops[off]=aux.Stringid(3211439,1) - opval[off-1]=TYPE_SYNCHRO - off=off+1 - end - if b3 then - ops[off]=aux.Stringid(3211439,2) - opval[off-1]=TYPE_XYZ - off=off+1 - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CARDTYPE) - local op=Duel.SelectOption(tp,table.unpack(ops)) - e:SetLabel(opval[op]) -end -function c3211439.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c3211439.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e:GetLabel()) - if g:GetCount()>1 then - Duel.SendtoGrave(g,REASON_RULE) - end -end +--禁断の異本 +function c3211439.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c3211439.target) + e1:SetOperation(c3211439.activate) + c:RegisterEffect(e1) +end +function c3211439.filter(c,tpe) + return c:IsFaceup() and c:IsType(tpe) +end +function c3211439.target(e,tp,eg,ep,ev,re,r,rp,chk) + local b1=Duel.IsExistingMatchingCard(c3211439.filter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil,TYPE_FUSION) + local b2=Duel.IsExistingMatchingCard(c3211439.filter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil,TYPE_SYNCHRO) + local b3=Duel.IsExistingMatchingCard(c3211439.filter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil,TYPE_XYZ) + if chk==0 then return b1 or b2 or b3 end + local off=1 + local ops={} + local opval={} + if b1 then + ops[off]=aux.Stringid(3211439,0) + opval[off-1]=TYPE_FUSION + off=off+1 + end + if b2 then + ops[off]=aux.Stringid(3211439,1) + opval[off-1]=TYPE_SYNCHRO + off=off+1 + end + if b3 then + ops[off]=aux.Stringid(3211439,2) + opval[off-1]=TYPE_XYZ + off=off+1 + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CARDTYPE) + local op=Duel.SelectOption(tp,table.unpack(ops)) + e:SetLabel(opval[op]) +end +function c3211439.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c3211439.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e:GetLabel()) + if g:GetCount()>1 then + Duel.SendtoGrave(g,REASON_RULE) + end +end diff --git a/script/c32134638.lua b/script/c32134638.lua index 559255c4..d1e09930 100644 --- a/script/c32134638.lua +++ b/script/c32134638.lua @@ -33,8 +33,9 @@ end function c32134638.negop(e,tp,eg,ep,ev,re,r,rp) if Duel.SelectYesNo(tp,aux.Stringid(32134638,1)) then e:GetHandler():RegisterFlagEffect(32134638,RESET_EVENT+0x1fe0000,0,1) - Duel.NegateEffect(ev) - Duel.BreakEffect() - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + if Duel.NegateEffect(ev) then + Duel.BreakEffect() + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end end end diff --git a/script/c32146097.lua b/script/c32146097.lua index 757998c7..a0e34e3b 100644 --- a/script/c32146097.lua +++ b/script/c32146097.lua @@ -1,29 +1,29 @@ ---DDパンドラ -function c32146097.initial_effect(c) - --draw - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCondition(c32146097.drcon) - e1:SetTarget(c32146097.drtg) - e1:SetOperation(c32146097.drop) - c:RegisterEffect(e1) -end -function c32146097.drcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return (c:IsReason(REASON_BATTLE) - or rp~=tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp) - and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 -end -function c32146097.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c32146097.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--DDパンドラ +function c32146097.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c32146097.drcon) + e1:SetTarget(c32146097.drtg) + e1:SetOperation(c32146097.drop) + c:RegisterEffect(e1) +end +function c32146097.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (c:IsReason(REASON_BATTLE) + or rp~=tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp) + and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 +end +function c32146097.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c32146097.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c32224143.lua b/script/c32224143.lua index 90e49773..a1494c5d 100644 --- a/script/c32224143.lua +++ b/script/c32224143.lua @@ -9,7 +9,7 @@ function c32224143.initial_effect(c) e1:SetCategory(CATEGORY_DESTROY) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetCost(c32224143.cost) e1:SetTarget(c32224143.target) diff --git a/script/c32231618.lua b/script/c32231618.lua index cb8a4a88..dbb98061 100644 --- a/script/c32231618.lua +++ b/script/c32231618.lua @@ -1,40 +1,40 @@ ---占術姫コインノーマ -function c32231618.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetTarget(c32231618.sptg) - e1:SetOperation(c32231618.spop) - c:RegisterEffect(e1) -end -function c32231618.spfilter(c,e,tp) - return c:IsType(TYPE_FLIP) and c:IsLevelAbove(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) -end -function c32231618.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c32231618.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) -end -function c32231618.spop(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,c32231618.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) - Duel.ConfirmCards(1-tp,g) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetValue(c32231618.actlimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c32231618.actlimit(e,re,rp) - local rc=re:GetHandler() - return re:IsActiveType(TYPE_MONSTER) and not rc:IsSetCard(0xcc) and not rc:IsImmuneToEffect(e) -end +--占術姫コインノーマ +function c32231618.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c32231618.sptg) + e1:SetOperation(c32231618.spop) + c:RegisterEffect(e1) +end +function c32231618.spfilter(c,e,tp) + return c:IsType(TYPE_FLIP) and c:IsLevelAbove(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) +end +function c32231618.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c32231618.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c32231618.spop(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,c32231618.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + Duel.ConfirmCards(1-tp,g) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(c32231618.actlimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c32231618.actlimit(e,re,rp) + local rc=re:GetHandler() + return re:IsActiveType(TYPE_MONSTER) and not rc:IsSetCard(0xcc) and not rc:IsImmuneToEffect(e) +end diff --git a/script/c32268901.lua b/script/c32268901.lua index db6e644f..e3cccb8e 100644 --- a/script/c32268901.lua +++ b/script/c32268901.lua @@ -1,44 +1,10 @@ --サラマンドラ function c32268901.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(c32268901.target) - e1:SetOperation(c32268901.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_FIRE)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(700) c:RegisterEffect(e2) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c32268901.eqlimit) - c:RegisterEffect(e4) -end -function c32268901.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_FIRE) -end -function c32268901.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_FIRE) -end -function c32268901.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c32268901.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c32268901.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c32268901.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c32268901.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 diff --git a/script/c32271987.lua b/script/c32271987.lua index eafe90f5..9c169b69 100644 --- a/script/c32271987.lua +++ b/script/c32271987.lua @@ -1,36 +1,36 @@ ---フェデライザー -function c32271987.initial_effect(c) - --tograve & draw - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(32271987,0)) - e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetCondition(c32271987.condition) - e1:SetTarget(c32271987.target) - e1:SetOperation(c32271987.operation) - c:RegisterEffect(e1) -end -function c32271987.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c32271987.filter(c) - return c:IsType(TYPE_DUAL) and c:IsAbleToGrave() -end -function c32271987.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local ct=Duel.GetMatchingGroupCount(c32271987.filter,tp,LOCATION_DECK,0,nil) - if ct==1 and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==1 then return false end - return Duel.IsPlayerCanDraw(tp,1) and ct>=1 end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c32271987.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c32271987.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - Duel.BreakEffect() - Duel.Draw(tp,1,REASON_EFFECT) - end -end +--フェデライザー +function c32271987.initial_effect(c) + --tograve & draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(32271987,0)) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c32271987.condition) + e1:SetTarget(c32271987.target) + e1:SetOperation(c32271987.operation) + c:RegisterEffect(e1) +end +function c32271987.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c32271987.filter(c) + return c:IsType(TYPE_DUAL) and c:IsAbleToGrave() +end +function c32271987.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local ct=Duel.GetMatchingGroupCount(c32271987.filter,tp,LOCATION_DECK,0,nil) + if ct==1 and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==1 then return false end + return Duel.IsPlayerCanDraw(tp,1) and ct>=1 end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c32271987.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c32271987.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c32360466.lua b/script/c32360466.lua new file mode 100644 index 00000000..9ef6fbb0 --- /dev/null +++ b/script/c32360466.lua @@ -0,0 +1,44 @@ +--天地開闢 +function c32360466.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH+CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,32360466+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c32360466.target) + e1:SetOperation(c32360466.activate) + c:RegisterEffect(e1) +end +function c32360466.filter1(c) + return c:IsRace(RACE_WARRIOR) and c:IsAbleToHand() +end +function c32360466.filter2(c) + return c:IsSetCard(0x10cf) or c:IsSetCard(0xbd) +end +function c32360466.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c32360466.filter1,tp,LOCATION_DECK,0,nil) + if chk==0 then return g:GetCount()>2 and g:IsExists(c32360466.filter2,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c32360466.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c32360466.filter1,tp,LOCATION_DECK,0,nil) + if g:IsExists(c32360466.filter2,1,nil) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg1=g:FilterSelect(tp,c32360466.filter2,1,1,nil) + g:RemoveCard(sg1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg2=g:Select(tp,2,2,nil) + sg1:Merge(sg2) + Duel.ConfirmCards(1-tp,sg1) + Duel.ShuffleDeck(tp) + local tg=sg1:Select(1-tp,1,1,nil) + local tc=tg:GetFirst() + Duel.Hint(HINT_CARD,0,tc:GetCode()) + if c32360466.filter2(tc) and tc:IsAbleToHand() then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + sg1:RemoveCard(tc) + end + Duel.SendtoGrave(sg1,REASON_EFFECT) + end +end diff --git a/script/c32391631.lua b/script/c32391631.lua index cdecc619..ee84a7d4 100644 --- a/script/c32391631.lua +++ b/script/c32391631.lua @@ -1,90 +1,90 @@ ---サベージ・コロシアム -function c32391631.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --to defense - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(32391631,0)) - e2:SetCategory(CATEGORY_RECOVER) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_DAMAGE_STEP_END) - e2:SetRange(LOCATION_FZONE) - e2:SetTarget(c32391631.rectg) - e2:SetOperation(c32391631.recop) - c:RegisterEffect(e2) - --must attack - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_MUST_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - c:RegisterEffect(e3) - --destroy - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(32391631,1)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e5:SetRange(LOCATION_FZONE) - e5:SetCountLimit(1) - e5:SetCode(EVENT_PHASE+PHASE_END) - e5:SetTarget(c32391631.destg) - e5:SetOperation(c32391631.desop) - c:RegisterEffect(e5) - if not c32391631.global_check then - c32391631.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_ATTACK_ANNOUNCE) - ge1:SetOperation(c32391631.check) - Duel.RegisterEffect(ge1,0) - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_ATTACK_DISABLED) - ge2:SetOperation(c32391631.check2) - Duel.RegisterEffect(ge2,0) - end -end -function c32391631.check(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local ct=tc:GetFlagEffectLabel(32391631) - if ct then - tc:SetFlagEffectLabel(32391631,ct+1) - else - tc:RegisterFlagEffect(32391631,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,1) - end -end -function c32391631.check2(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local ct=tc:GetFlagEffectLabel(32391631) - if ct then - tc:SetFlagEffectLabel(32391631,ct-1) - end -end -function c32391631.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(Duel.GetTurnPlayer()) - Duel.SetTargetParam(300) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,Duel.GetTurnPlayer(),300) -end -function c32391631.recop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or not Duel.GetAttacker():IsRelateToBattle() then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end -function c32391631.desfilter(c) - local ct=c:GetFlagEffectLabel(32391631) - return c:IsPosition(POS_FACEUP_ATTACK) and (not ct or ct==0) -end -function c32391631.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c32391631.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c32391631.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(c32391631.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,e:GetHandler()) - Duel.Destroy(g,REASON_EFFECT) -end +--サベージ・コロシアム +function c32391631.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --to defense + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32391631,0)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_FZONE) + e2:SetTarget(c32391631.rectg) + e2:SetOperation(c32391631.recop) + c:RegisterEffect(e2) + --must attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_MUST_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e3) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(32391631,1)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetRange(LOCATION_FZONE) + e5:SetCountLimit(1) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetTarget(c32391631.destg) + e5:SetOperation(c32391631.desop) + c:RegisterEffect(e5) + if not c32391631.global_check then + c32391631.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ATTACK_ANNOUNCE) + ge1:SetOperation(c32391631.check) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ATTACK_DISABLED) + ge2:SetOperation(c32391631.check2) + Duel.RegisterEffect(ge2,0) + end +end +function c32391631.check(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(32391631) + if ct then + tc:SetFlagEffectLabel(32391631,ct+1) + else + tc:RegisterFlagEffect(32391631,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,1) + end +end +function c32391631.check2(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(32391631) + if ct then + tc:SetFlagEffectLabel(32391631,ct-1) + end +end +function c32391631.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(Duel.GetTurnPlayer()) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,Duel.GetTurnPlayer(),300) +end +function c32391631.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or not Duel.GetAttacker():IsRelateToBattle() then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c32391631.desfilter(c) + local ct=c:GetFlagEffectLabel(32391631) + return c:IsPosition(POS_FACEUP_ATTACK) and (not ct or ct==0) +end +function c32391631.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c32391631.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c32391631.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c32391631.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c32437102.lua b/script/c32437102.lua index 30940565..3d379cf6 100644 --- a/script/c32437102.lua +++ b/script/c32437102.lua @@ -1,14 +1,6 @@ --竜魂の力 function c32437102.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(c32437102.target) - e1:SetOperation(c32437102.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR)) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -24,31 +16,4 @@ function c32437102.initial_effect(c) e4:SetCode(EFFECT_CHANGE_RACE) e4:SetValue(RACE_DRAGON) c:RegisterEffect(e4) - --Equip limit - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_EQUIP_LIMIT) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e5:SetValue(c32437102.eqlimit) - c:RegisterEffect(e5) -end -function c32437102.eqlimit(e,c) - return c:GetOriginalRace()==RACE_WARRIOR -end -function c32437102.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c32437102.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c32437102.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c32437102.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c32437102.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c32437102.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 diff --git a/script/c32441317.lua b/script/c32441317.lua index 634bf7cf..74b139f8 100644 --- a/script/c32441317.lua +++ b/script/c32441317.lua @@ -23,7 +23,7 @@ end function c32441317.mgfilter(c,e,tp,sync) return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and bit.band(c:GetReason(),0x80008)==0x80008 and c:GetReasonCard()==sync - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c32441317.activate(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() @@ -34,7 +34,7 @@ function c32441317.activate(e,tp,eg,ep,ev,re,r,rp) if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)~=0 and sumtype==SUMMON_TYPE_SYNCHRO and ct>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) and ct<=Duel.GetLocationCount(tp,LOCATION_MZONE) - and mg:FilterCount(c32441317.mgfilter,nil,e,tp,tc)==ct + and mg:FilterCount(aux.NecroValleyFilter(c32441317.mgfilter),nil,e,tp,tc)==ct and Duel.SelectYesNo(tp,aux.Stringid(32441317,0)) then Duel.BreakEffect() Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) diff --git a/script/c3244563.lua b/script/c3244563.lua index 36ec57e3..57893435 100644 --- a/script/c3244563.lua +++ b/script/c3244563.lua @@ -1,37 +1,37 @@ ---シールドスピア -function c3244563.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(c3244563.condition) - e1:SetTarget(c3244563.target) - e1:SetOperation(c3244563.activate) - c:RegisterEffect(e1) -end -function c3244563.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c3244563.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c3244563.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(400) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - end -end +--シールドスピア +function c3244563.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(c3244563.condition) + e1:SetTarget(c3244563.target) + e1:SetOperation(c3244563.activate) + c:RegisterEffect(e1) +end +function c3244563.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c3244563.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c3244563.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(400) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c32446630.lua b/script/c32446630.lua index f1268ae1..7f4594b4 100644 --- a/script/c32446630.lua +++ b/script/c32446630.lua @@ -17,6 +17,7 @@ function c32446630.initial_effect(c) e2:SetDescription(aux.Stringid(32446630,0)) e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) e2:SetCondition(c32446630.condition) diff --git a/script/c32485518.lua b/script/c32485518.lua index c88d242e..4d1d9b2c 100644 --- a/script/c32485518.lua +++ b/script/c32485518.lua @@ -1,41 +1,41 @@ ---イモータル・ルーラー -function c32485518.initial_effect(c) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --salvage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(32485518,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c32485518.cost) - e2:SetTarget(c32485518.target) - e2:SetOperation(c32485518.operation) - c:RegisterEffect(e2) -end -function c32485518.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c32485518.filter(c) - return c:IsCode(4064256) and c:IsAbleToHand() -end -function c32485518.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c32485518.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c32485518.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c32485518.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c32485518.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--イモータル・ルーラー +function c32485518.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --salvage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32485518,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c32485518.cost) + e2:SetTarget(c32485518.target) + e2:SetOperation(c32485518.operation) + c:RegisterEffect(e2) +end +function c32485518.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c32485518.filter(c) + return c:IsCode(4064256) and c:IsAbleToHand() +end +function c32485518.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c32485518.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c32485518.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c32485518.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c32485518.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c32491822.lua b/script/c32491822.lua index 0f3c82c3..36a6624b 100644 --- a/script/c32491822.lua +++ b/script/c32491822.lua @@ -1,95 +1,95 @@ ---降雷皇ハモン -function c32491822.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c32491822.spcon) - e2:SetOperation(c32491822.spop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(32491822,0)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetCode(EVENT_BATTLE_DESTROYING) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCondition(c32491822.damcon) - e3:SetTarget(c32491822.damtg) - e3:SetOperation(c32491822.damop) - c:RegisterEffect(e3) - --atk limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(0,LOCATION_MZONE) - e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e4:SetCondition(c32491822.atcon) - e4:SetValue(c32491822.atlimit) - c:RegisterEffect(e4) -end -function c32491822.spfilter(c) - return c:IsFaceup() and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:IsAbleToGraveAsCost() -end -function c32491822.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-2 then return false end - if ft<=0 then - local ct=-ft+1 - return Duel.IsExistingMatchingCard(c32491822.spfilter,tp,LOCATION_MZONE,0,ct,nil) - and Duel.IsExistingMatchingCard(c32491822.spfilter,tp,LOCATION_ONFIELD,0,3,nil) - else - return Duel.IsExistingMatchingCard(c32491822.spfilter,tp,LOCATION_ONFIELD,0,3,nil) - end -end -function c32491822.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local sg=Duel.GetMatchingGroup(c32491822.spfilter,tp,LOCATION_ONFIELD,0,nil) - local ct=-ft+1 - local g1=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) - if ct<3 then - sg:Sub(g1) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g2=sg:Select(tp,3-ct,3-ct,nil) - g1:Merge(g2) - end - Duel.SendtoGrave(g1,REASON_COST) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c32491822.spfilter,tp,LOCATION_ONFIELD,0,3,3,nil) - Duel.SendtoGrave(g,REASON_COST) - end -end -function c32491822.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) and bc:IsType(TYPE_MONSTER) -end -function c32491822.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) -end -function c32491822.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c32491822.atcon(e) - return e:GetHandler():IsDefensePos() -end -function c32491822.atlimit(e,c) - return c~=e:GetHandler() -end +--降雷皇ハモン +function c32491822.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c32491822.spcon) + e2:SetOperation(c32491822.spop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(32491822,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCondition(c32491822.damcon) + e3:SetTarget(c32491822.damtg) + e3:SetOperation(c32491822.damop) + c:RegisterEffect(e3) + --atk limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetCondition(c32491822.atcon) + e4:SetValue(c32491822.atlimit) + c:RegisterEffect(e4) +end +function c32491822.spfilter(c) + return c:IsFaceup() and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:IsAbleToGraveAsCost() +end +function c32491822.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + if ft<=0 then + local ct=-ft+1 + return Duel.IsExistingMatchingCard(c32491822.spfilter,tp,LOCATION_MZONE,0,ct,nil) + and Duel.IsExistingMatchingCard(c32491822.spfilter,tp,LOCATION_ONFIELD,0,3,nil) + else + return Duel.IsExistingMatchingCard(c32491822.spfilter,tp,LOCATION_ONFIELD,0,3,nil) + end +end +function c32491822.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=Duel.GetMatchingGroup(c32491822.spfilter,tp,LOCATION_ONFIELD,0,nil) + local ct=-ft+1 + local g1=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) + if ct<3 then + sg:Sub(g1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=sg:Select(tp,3-ct,3-ct,nil) + g1:Merge(g2) + end + Duel.SendtoGrave(g1,REASON_COST) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c32491822.spfilter,tp,LOCATION_ONFIELD,0,3,3,nil) + Duel.SendtoGrave(g,REASON_COST) + end +end +function c32491822.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) and bc:IsType(TYPE_MONSTER) +end +function c32491822.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c32491822.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c32491822.atcon(e) + return e:GetHandler():IsDefensePos() +end +function c32491822.atlimit(e,c) + return c~=e:GetHandler() +end diff --git a/script/c32542011.lua b/script/c32542011.lua index 9e3ba6b1..32b6a7c0 100644 --- a/script/c32542011.lua +++ b/script/c32542011.lua @@ -1,77 +1,77 @@ ---燃え上がる大海 -function c32542011.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetCondition(c32542011.condition) - e1:SetTarget(c32542011.target) - e1:SetOperation(c32542011.activate) - c:RegisterEffect(e1) -end -function c32542011.cfilter(c) - return c:IsFaceup() and c:IsLevelAbove(7) and c:IsAttribute(ATTRIBUTE_WATER+ATTRIBUTE_FIRE) -end -function c32542011.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c32542011.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c32542011.cfilter2(c,att) - return c:IsFaceup() and c:IsAttribute(att) -end -function c32542011.spfilter(c,tid,e,tp) - local re=c:GetReasonEffect() - return c:GetTurnID()==tid and c:IsReason(REASON_COST) and re and re:IsHasType(0x7e0) and re:IsActiveType(TYPE_MONSTER) - and c:IsAttribute(ATTRIBUTE_WATER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c32542011.target(e,tp,eg,ep,ev,re,r,rp,chk) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local b1=Duel.IsExistingMatchingCard(c32542011.cfilter2,tp,LOCATION_MZONE,0,1,nil,ATTRIBUTE_FIRE) - and Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) - local b2=Duel.IsExistingMatchingCard(c32542011.cfilter2,tp,LOCATION_MZONE,0,1,nil,ATTRIBUTE_WATER) - and ft>0 and Duel.IsExistingMatchingCard(c32542011.spfilter,tp,LOCATION_GRAVE,0,1,nil,Duel.GetTurnCount(),e,tp) - if chk==0 then return b1 or b2 end - if b1 then - local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - end - if b2 then - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetMatchingGroup(c32542011.spfilter,tp,LOCATION_GRAVE,0,nil,Duel.GetTurnCount(),e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,ft,0,0) - local dg=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,0,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,1,0,0) - end -end -function c32542011.activate(e,tp,eg,ep,ev,re,r,rp) - local opt=0 - if Duel.IsExistingMatchingCard(c32542011.cfilter2,tp,LOCATION_MZONE,0,1,nil,ATTRIBUTE_WATER) then opt=opt+1 end - if Duel.IsExistingMatchingCard(c32542011.cfilter2,tp,LOCATION_MZONE,0,1,nil,ATTRIBUTE_FIRE) then opt=opt+2 end - if opt==1 or opt==3 then - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft>0 then - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c32542011.spfilter,tp,LOCATION_GRAVE,0,1,ft,nil,Duel.GetTurnCount(),e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local dg=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_MZONE,0,1,1,nil) - Duel.Destroy(dg,REASON_EFFECT) - end - end - end - if opt==2 or opt==3 then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - if g:GetCount()>0 then - Duel.HintSelection(g) - Duel.Destroy(g,REASON_EFFECT) - Duel.BreakEffect() - Duel.DiscardHand(tp,nil,1,1,REASON_DISCARD+REASON_EFFECT) - end - end -end +--燃え上がる大海 +function c32542011.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c32542011.condition) + e1:SetTarget(c32542011.target) + e1:SetOperation(c32542011.activate) + c:RegisterEffect(e1) +end +function c32542011.cfilter(c) + return c:IsFaceup() and c:IsLevelAbove(7) and c:IsAttribute(ATTRIBUTE_WATER+ATTRIBUTE_FIRE) +end +function c32542011.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c32542011.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c32542011.cfilter2(c,att) + return c:IsFaceup() and c:IsAttribute(att) +end +function c32542011.spfilter(c,tid,e,tp) + local re=c:GetReasonEffect() + return c:GetTurnID()==tid and c:IsReason(REASON_COST) and re and re:IsHasType(0x7e0) and re:IsActiveType(TYPE_MONSTER) + and c:IsAttribute(ATTRIBUTE_WATER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c32542011.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local b1=Duel.IsExistingMatchingCard(c32542011.cfilter2,tp,LOCATION_MZONE,0,1,nil,ATTRIBUTE_FIRE) + and Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + local b2=Duel.IsExistingMatchingCard(c32542011.cfilter2,tp,LOCATION_MZONE,0,1,nil,ATTRIBUTE_WATER) + and ft>0 and Duel.IsExistingMatchingCard(c32542011.spfilter,tp,LOCATION_GRAVE,0,1,nil,Duel.GetTurnCount(),e,tp) + if chk==0 then return b1 or b2 end + if b1 then + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + end + if b2 then + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetMatchingGroup(c32542011.spfilter,tp,LOCATION_GRAVE,0,nil,Duel.GetTurnCount(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,ft,0,0) + local dg=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,1,0,0) + end +end +function c32542011.activate(e,tp,eg,ep,ev,re,r,rp) + local opt=0 + if Duel.IsExistingMatchingCard(c32542011.cfilter2,tp,LOCATION_MZONE,0,1,nil,ATTRIBUTE_WATER) then opt=opt+1 end + if Duel.IsExistingMatchingCard(c32542011.cfilter2,tp,LOCATION_MZONE,0,1,nil,ATTRIBUTE_FIRE) then opt=opt+2 end + if opt==1 or opt==3 then + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>0 then + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c32542011.spfilter,tp,LOCATION_GRAVE,0,1,ft,nil,Duel.GetTurnCount(),e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Destroy(dg,REASON_EFFECT) + end + end + end + if opt==2 or opt==3 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + Duel.BreakEffect() + Duel.DiscardHand(tp,nil,1,1,REASON_DISCARD+REASON_EFFECT) + end + end +end diff --git a/script/c32559361.lua b/script/c32559361.lua index 2694841a..b9cc6965 100644 --- a/script/c32559361.lua +++ b/script/c32559361.lua @@ -27,7 +27,7 @@ function c32559361.initial_effect(c) e3:SetDescription(aux.Stringid(32559361,2)) e3:SetCategory(CATEGORY_DAMAGE) e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_PLAYER_TARGET) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1) e3:SetCondition(c32559361.damcon) diff --git a/script/c32566831.lua b/script/c32566831.lua index 00d8f627..7dfcd349 100644 --- a/script/c32566831.lua +++ b/script/c32566831.lua @@ -1,41 +1,41 @@ ---紅玉の宝札 -function c32566831.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCountLimit(1,32566831+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c32566831.cost) - e1:SetTarget(c32566831.target) - e1:SetOperation(c32566831.activate) - c:RegisterEffect(e1) -end -function c32566831.cfilter(c) - return c:IsSetCard(0x3b) and c:GetLevel()==7 and c:IsAbleToGraveAsCost() -end -function c32566831.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c32566831.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c32566831.cfilter,1,1,REASON_COST,nil) -end -function c32566831.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c32566831.tgfilter(c) - return c:IsSetCard(0x3b) and c:GetLevel()==7 and c:IsAbleToGrave() -end -function c32566831.activate(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - local dr=Duel.Draw(p,d,REASON_EFFECT) - local g=Duel.GetMatchingGroup(c32566831.tgfilter,p,LOCATION_DECK,0,nil) - if dr~=0 and g:GetCount()>0 and Duel.SelectYesNo(p,aux.Stringid(32566831,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TOGRAVE) - local sg=g:Select(p,1,1,nil) - Duel.SendtoGrave(sg,REASON_EFFECT) - end -end +--紅玉の宝札 +function c32566831.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1,32566831+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c32566831.cost) + e1:SetTarget(c32566831.target) + e1:SetOperation(c32566831.activate) + c:RegisterEffect(e1) +end +function c32566831.cfilter(c) + return c:IsSetCard(0x3b) and c:GetLevel()==7 and c:IsAbleToGraveAsCost() +end +function c32566831.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c32566831.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c32566831.cfilter,1,1,REASON_COST,nil) +end +function c32566831.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c32566831.tgfilter(c) + return c:IsSetCard(0x3b) and c:GetLevel()==7 and c:IsAbleToGrave() +end +function c32566831.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local dr=Duel.Draw(p,d,REASON_EFFECT) + local g=Duel.GetMatchingGroup(c32566831.tgfilter,p,LOCATION_DECK,0,nil) + if dr~=0 and g:GetCount()>0 and Duel.SelectYesNo(p,aux.Stringid(32566831,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TOGRAVE) + local sg=g:Select(p,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + end +end diff --git a/script/c32603633.lua b/script/c32603633.lua index 84831263..146f1f85 100644 --- a/script/c32603633.lua +++ b/script/c32603633.lua @@ -26,6 +26,7 @@ end function c32603633.op(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=Duel.GetMatchingGroup(c32603633.filter,tp,LOCATION_GRAVE,0,nil,e,tp) while g:GetCount()>0 and ft>0 do Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) diff --git a/script/c32623004.lua b/script/c32623004.lua index dd4c46d0..ca0c9ce2 100644 --- a/script/c32623004.lua +++ b/script/c32623004.lua @@ -16,7 +16,7 @@ function c32623004.initial_effect(c) --remove local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE) e2:SetRange(LOCATION_MZONE) e2:SetCode(EFFECT_TO_HAND_REDIRECT) e2:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) diff --git a/script/c32679370.lua b/script/c32679370.lua index feae3c6c..dd180b67 100644 --- a/script/c32679370.lua +++ b/script/c32679370.lua @@ -26,10 +26,12 @@ function c32679370.operation(e,tp,eg,ep,ev,re,r,rp) local tc=g:GetFirst() if tc then Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + ft=ft-1 end tc=g:GetNext() - if ft>1 and tc and Duel.SelectYesNo(tp,aux.Stringid(32679370,1)) then + while ft>1 and tc and not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.SelectYesNo(tp,aux.Stringid(32679370,1)) then Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + ft=ft-1 end Duel.SpecialSummonComplete() end diff --git a/script/c32723153.lua b/script/c32723153.lua index 312c1c40..2d8b594b 100644 --- a/script/c32723153.lua +++ b/script/c32723153.lua @@ -1,28 +1,28 @@ ---マジカル・エクスプロージョン -function c32723153.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c32723153.condition) - e1:SetTarget(c32723153.target) - e1:SetOperation(c32723153.activate) - c:RegisterEffect(e1) -end -function c32723153.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 -end -function c32723153.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL) end - Duel.SetTargetPlayer(1-tp) - local dam=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_SPELL)*200 - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c32723153.activate(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local dam=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_SPELL)*200 - Duel.Damage(p,dam,REASON_EFFECT) -end +--マジカル・エクスプロージョン +function c32723153.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c32723153.condition) + e1:SetTarget(c32723153.target) + e1:SetOperation(c32723153.activate) + c:RegisterEffect(e1) +end +function c32723153.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 +end +function c32723153.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL) end + Duel.SetTargetPlayer(1-tp) + local dam=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_SPELL)*200 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c32723153.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_SPELL)*200 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c32754886.lua b/script/c32754886.lua index e69ffed5..5556fde6 100644 --- a/script/c32754886.lua +++ b/script/c32754886.lua @@ -1,52 +1,52 @@ ---ブラック・イリュージョン -function c32754886.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c32754886.target) - e1:SetOperation(c32754886.activate) - c:RegisterEffect(e1) -end -function c32754886.filter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackAbove(2000) -end -function c32754886.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c32754886.filter,tp,LOCATION_MZONE,0,1,nil) end -end -function c32754886.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c32754886.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE_EFFECT) - e3:SetValue(RESET_TURN_SET) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_IMMUNE_EFFECT) - e4:SetValue(c32754886.efilter) - e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e4:SetOwnerPlayer(tp) - tc:RegisterEffect(e4) - tc=g:GetNext() - end -end -function c32754886.efilter(e,re) - return e:GetOwnerPlayer()~=re:GetOwnerPlayer() -end +--ブラック・イリュージョン +function c32754886.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c32754886.target) + e1:SetOperation(c32754886.activate) + c:RegisterEffect(e1) +end +function c32754886.filter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackAbove(2000) +end +function c32754886.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c32754886.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c32754886.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c32754886.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetValue(c32754886.efilter) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e4:SetOwnerPlayer(tp) + tc:RegisterEffect(e4) + tc=g:GetNext() + end +end +function c32754886.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() +end diff --git a/script/c32787239.lua b/script/c32787239.lua index 986a31eb..cf22965e 100644 --- a/script/c32787239.lua +++ b/script/c32787239.lua @@ -1,47 +1,47 @@ ---EMラ・パンダ -function c32787239.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --scale change - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(32787239,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetTarget(c32787239.sctg) - e2:SetOperation(c32787239.scop) - c:RegisterEffect(e2) - --negate attack - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(32787239,1)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BE_BATTLE_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,32787239) - e3:SetCondition(c32787239.condition) - e3:SetOperation(c32787239.operation) - c:RegisterEffect(e3) -end -function c32787239.sctg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetLeftScale()<12 end -end -function c32787239.scop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:GetLeftScale()>=12 then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LSCALE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_RSCALE) - c:RegisterEffect(e2) -end -function c32787239.condition(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - return d and d:IsControler(tp) and d:IsFaceup() and d:IsType(TYPE_PENDULUM) -end -function c32787239.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateAttack() -end +--EMラ・パンダ +function c32787239.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --scale change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32787239,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c32787239.sctg) + e2:SetOperation(c32787239.scop) + c:RegisterEffect(e2) + --negate attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(32787239,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,32787239) + e3:SetCondition(c32787239.condition) + e3:SetOperation(c32787239.operation) + c:RegisterEffect(e3) +end +function c32787239.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetLeftScale()<12 end +end +function c32787239.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:GetLeftScale()>=12 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LSCALE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_RSCALE) + c:RegisterEffect(e2) +end +function c32787239.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) and d:IsFaceup() and d:IsType(TYPE_PENDULUM) +end +function c32787239.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c3280747.lua b/script/c3280747.lua index 69c6b1a4..c8da1eb8 100644 --- a/script/c3280747.lua +++ b/script/c3280747.lua @@ -1,30 +1,30 @@ ---第六感 -function c3280747.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW+CATEGORY_DECKDES+CATEGORY_DICE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c3280747.target) - e1:SetOperation(c3280747.activate) - c:RegisterEffect(e1) -end -function c3280747.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=6 end - Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,2) -end -function c3280747.activate(e,tp,eg,ep,ev,re,r,rp) - local t={} - local i=1 - local p=1 - for i=1,6 do t[i]=i end - local a1=Duel.AnnounceNumber(tp,table.unpack(t)) - for i=1,6 do - if a1~=i then t[p]=i p=p+1 end - end - t[p]=nil - local a2=Duel.AnnounceNumber(tp,table.unpack(t)) - local dc=Duel.TossDice(1-tp,1) - if dc==a1 or dc==a2 then Duel.Draw(tp,dc,REASON_EFFECT) - else Duel.DiscardDeck(tp,dc,REASON_EFFECT) end -end +--第六感 +function c3280747.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_DECKDES+CATEGORY_DICE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c3280747.target) + e1:SetOperation(c3280747.activate) + c:RegisterEffect(e1) +end +function c3280747.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=6 end + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,2) +end +function c3280747.activate(e,tp,eg,ep,ev,re,r,rp) + local t={} + local i=1 + local p=1 + for i=1,6 do t[i]=i end + local a1=Duel.AnnounceNumber(tp,table.unpack(t)) + for i=1,6 do + if a1~=i then t[p]=i p=p+1 end + end + t[p]=nil + local a2=Duel.AnnounceNumber(tp,table.unpack(t)) + local dc=Duel.TossDice(1-tp,1) + if dc==a1 or dc==a2 then Duel.Draw(tp,dc,REASON_EFFECT) + else Duel.DiscardDeck(tp,dc,REASON_EFFECT) end +end diff --git a/script/c32918479.lua b/script/c32918479.lua index dfaebe5f..54ad0450 100644 --- a/script/c32918479.lua +++ b/script/c32918479.lua @@ -1,63 +1,63 @@ ---光神機-閃空 -function c32918479.initial_effect(c) - --handes - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(32918479,0)) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetCondition(c32918479.condition) - e1:SetTarget(c32918479.target) - e1:SetOperation(c32918479.operation) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetOperation(c32918479.regop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - local e4=e2:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) -end -function c32918479.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and Duel.GetAttackTarget()==nil -end -function c32918479.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,0,0,tp,1) -end -function c32918479.operation(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end -function c32918479.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(32918479,1)) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetTarget(c32918479.tgtg) - e1:SetOperation(c32918479.tgop) - e1:SetReset(RESET_EVENT+0xc6c0000) - c:RegisterEffect(e1) -end -function c32918479.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,e:GetHandler(),1,0,0) -end -function c32918479.tgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - Duel.SendtoGrave(c,REASON_EFFECT) - end -end +--光神機-閃空 +function c32918479.initial_effect(c) + --handes + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(32918479,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c32918479.condition) + e1:SetTarget(c32918479.target) + e1:SetOperation(c32918479.operation) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c32918479.regop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c32918479.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetAttackTarget()==nil +end +function c32918479.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,0,0,tp,1) +end +function c32918479.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c32918479.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(32918479,1)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetTarget(c32918479.tgtg) + e1:SetOperation(c32918479.tgop) + e1:SetReset(RESET_EVENT+0xc6c0000) + c:RegisterEffect(e1) +end +function c32918479.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,e:GetHandler(),1,0,0) +end +function c32918479.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.SendtoGrave(c,REASON_EFFECT) + end +end diff --git a/script/c32919136.lua b/script/c32919136.lua index f1298fd1..dfeb01d2 100644 --- a/script/c32919136.lua +++ b/script/c32919136.lua @@ -1,89 +1,59 @@ ---堕落 -function c32919136.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_CONTROL+CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c32919136.target) - e1:SetOperation(c32919136.operation) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(32919136,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCondition(c32919136.damcon) - e2:SetTarget(c32919136.damtg) - e2:SetOperation(c32919136.damop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetCode(EFFECT_SELF_DESTROY) - e3:SetRange(LOCATION_SZONE) - e3:SetCondition(c32919136.descon) - c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c32919136.eqlimit) - c:RegisterEffect(e4) - --control - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_EQUIP) - e5:SetCode(EFFECT_SET_CONTROL) - e5:SetValue(c32919136.ctval) - c:RegisterEffect(e5) -end -function c32919136.filter(c) - return c:IsFaceup() and c:IsControlerCanBeChanged() -end -function c32919136.eqlimit(e,c) - return e:GetHandlerPlayer()~=c:GetControler() or e:GetHandler():GetEquipTarget()==c -end -function c32919136.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c32919136.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c32919136.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c32919136.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c32919136.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc) - end -end -function c32919136.damcon(e,tp,eg,ep,ev,re,r,rp) - return tp~=Duel.GetTurnPlayer() -end -function c32919136.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(800) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,800) -end -function c32919136.damop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c32919136.desfilter(c) - return c:IsFaceup() and c:IsSetCard(0x45) -end -function c32919136.descon(e) - return not Duel.IsExistingMatchingCard(c32919136.desfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) -end -function c32919136.ctval(e,c) - return e:GetHandlerPlayer() -end +--堕落 +function c32919136.initial_effect(c) + aux.AddEquipProcedure(c,1,Card.IsControlerCanBeChanged,c32919136.eqlimit,nil,c32919136.target) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32919136,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c32919136.damcon) + e2:SetTarget(c32919136.damtg) + e2:SetOperation(c32919136.damop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c32919136.descon) + c:RegisterEffect(e3) + --control + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_SET_CONTROL) + e5:SetValue(c32919136.ctval) + c:RegisterEffect(e5) +end +function c32919136.eqlimit(e,c) + return e:GetHandlerPlayer()~=c:GetControler() or e:GetHandler():GetEquipTarget()==c +end +function c32919136.target(e,tp,eg,ep,ev,re,r,rp) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,Duel.GetFirstTarget(),1,0,0) +end +function c32919136.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c32919136.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,800) +end +function c32919136.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c32919136.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0x45) +end +function c32919136.descon(e) + return not Duel.IsExistingMatchingCard(c32919136.desfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end +function c32919136.ctval(e,c) + return e:GetHandlerPlayer() +end diff --git a/script/c3298689.lua b/script/c3298689.lua index 74d28209..6f3d7880 100644 --- a/script/c3298689.lua +++ b/script/c3298689.lua @@ -30,7 +30,7 @@ function c3298689.filter1(c,e,tp) and Duel.IsExistingMatchingCard(c3298689.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+1) end function c3298689.filter2(c,e,tp,mc,rk) - if c:GetOriginalCode()==6165656 and mc:GetCode()~=48995978 then return false end + if c.rum_limit_code and not mc:IsCode(c.rum_limit_code) then return false end return c:GetRank()==rk and c:IsAttribute(ATTRIBUTE_DARK) and mc:IsCanBeXyzMaterial(c) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) end diff --git a/script/c32999573.lua b/script/c32999573.lua index 2c9a1f04..290ee646 100644 --- a/script/c32999573.lua +++ b/script/c32999573.lua @@ -1,34 +1,34 @@ ---エクシーズ・オーバーライド -function c32999573.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --remove overlay replace - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(32999573,0)) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) - e2:SetCode(EFFECT_OVERLAY_REMOVE_REPLACE) - e2:SetRange(LOCATION_FZONE) - e2:SetCondition(c32999573.rcon) - e2:SetOperation(c32999573.rop) - c:RegisterEffect(e2) -end -function c32999573.rcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(32999573+ep)==0 - and bit.band(r,REASON_COST)~=0 and re:IsHasType(0x7e0) and re:IsActiveType(TYPE_XYZ) - and re:GetHandler():GetOverlayCount()>=ev-1 - and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_HAND,0,1,nil) -end -function c32999573.rop(e,tp,eg,ep,ev,re,r,rp) - local ct=bit.band(ev,0xffff) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_HAND,0,1,1,nil) - Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT) - if ct>1 then - re:GetHandler():RemoveOverlayCard(tp,ct-1,ct-1,REASON_COST) - end - e:GetHandler():RegisterFlagEffect(32999573+ep,RESET_PHASE+PHASE_END,0,1) -end +--エクシーズ・オーバーライド +function c32999573.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --remove overlay replace + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32999573,0)) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e2:SetCode(EFFECT_OVERLAY_REMOVE_REPLACE) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c32999573.rcon) + e2:SetOperation(c32999573.rop) + c:RegisterEffect(e2) +end +function c32999573.rcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(32999573+ep)==0 + and bit.band(r,REASON_COST)~=0 and re:IsHasType(0x7e0) and re:IsActiveType(TYPE_XYZ) + and re:GetHandler():GetOverlayCount()>=ev-1 + and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_HAND,0,1,nil) +end +function c32999573.rop(e,tp,eg,ep,ev,re,r,rp) + local ct=bit.band(ev,0xffff) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_HAND,0,1,1,nil) + Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT) + if ct>1 then + re:GetHandler():RemoveOverlayCard(tp,ct-1,ct-1,REASON_COST) + end + e:GetHandler():RegisterFlagEffect(32999573+ep,RESET_PHASE+PHASE_END,0,1) +end diff --git a/script/c3300267.lua b/script/c3300267.lua index 70655596..449c35d3 100644 --- a/script/c3300267.lua +++ b/script/c3300267.lua @@ -1,90 +1,90 @@ ---聖刻龍-シユウドラゴン -function c3300267.initial_effect(c) - --spsummon from hand - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetCondition(c3300267.hspcon) - e1:SetOperation(c3300267.hspop) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(3300267,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCost(c3300267.descost) - e2:SetTarget(c3300267.destg) - e2:SetOperation(c3300267.desop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(3300267,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetCode(EVENT_RELEASE) - e3:SetTarget(c3300267.sptg) - e3:SetOperation(c3300267.spop) - c:RegisterEffect(e3) -end -function c3300267.hspcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.CheckReleaseGroup(c:GetControler(),Card.IsSetCard,1,nil,0x69) -end -function c3300267.hspop(e,tp,eg,ep,ev,re,r,rp,c) - local g=Duel.SelectReleaseGroup(c:GetControler(),Card.IsSetCard,1,1,nil,0x69) - Duel.Release(g,REASON_COST) - c:RegisterFlagEffect(0,RESET_EVENT+0x4fc0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(3300267,2)) -end -function c3300267.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroupEx(tp,Card.IsSetCard,1,e:GetHandler(),0x69) end - local g=Duel.SelectReleaseGroupEx(tp,Card.IsSetCard,1,1,e:GetHandler(),0x69) - Duel.Release(g,REASON_COST) -end -function c3300267.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c3300267.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c3300267.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c3300267.desfilter,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c3300267.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c3300267.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c3300267.spfilter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c3300267.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) -end -function c3300267.spop(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,c3300267.spfilter,tp,0x13,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end - if tc and Duel.SpecialSummonStep(g:GetFirst(),0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - end -end +--聖刻龍-シユウドラゴン +function c3300267.initial_effect(c) + --spsummon from hand + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(c3300267.hspcon) + e1:SetOperation(c3300267.hspop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(3300267,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c3300267.descost) + e2:SetTarget(c3300267.destg) + e2:SetOperation(c3300267.desop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(3300267,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCode(EVENT_RELEASE) + e3:SetTarget(c3300267.sptg) + e3:SetOperation(c3300267.spop) + c:RegisterEffect(e3) +end +function c3300267.hspcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),Card.IsSetCard,1,nil,0x69) +end +function c3300267.hspop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),Card.IsSetCard,1,1,nil,0x69) + Duel.Release(g,REASON_COST) + c:RegisterFlagEffect(0,RESET_EVENT+0x4fc0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(3300267,2)) +end +function c3300267.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroupEx(tp,Card.IsSetCard,1,e:GetHandler(),0x69) end + local g=Duel.SelectReleaseGroupEx(tp,Card.IsSetCard,1,1,e:GetHandler(),0x69) + Duel.Release(g,REASON_COST) +end +function c3300267.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c3300267.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c3300267.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c3300267.desfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c3300267.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c3300267.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c3300267.spfilter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c3300267.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c3300267.spop(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,aux.NecroValleyFilter(c3300267.spfilter),tp,0x13,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c33017655.lua b/script/c33017655.lua index 898bfc90..5cf2aa2d 100644 --- a/script/c33017655.lua +++ b/script/c33017655.lua @@ -1,57 +1,57 @@ ---暗黒界の門 -function c33017655.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FIEND)) - e2:SetValue(300) - c:RegisterEffect(e2) - --defup - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --discard & draw - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_HANDES+CATEGORY_DRAW) - e4:SetDescription(aux.Stringid(33017655,1)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_FZONE) - e4:SetCountLimit(1) - e4:SetCost(c33017655.cost) - e4:SetTarget(c33017655.target) - e4:SetOperation(c33017655.operation) - c:RegisterEffect(e4) -end -function c33017655.costfilter(c) - return c:IsRace(RACE_FIEND) and c:IsAbleToRemoveAsCost() -end -function c33017655.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c33017655.costfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c33017655.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c33017655.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_HAND,0,1,nil,RACE_FIEND) - and Duel.IsPlayerCanDraw(tp,1) end - Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c33017655.operation(e,tp,eg,ep,ev,re,r,rp,chk) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) - local g=Duel.SelectMatchingCard(tp,Card.IsRace,tp,LOCATION_HAND,0,1,1,nil,RACE_FIEND) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) - Duel.BreakEffect() - Duel.Draw(tp,1,REASON_EFFECT) - end -end +--暗黒界の門 +function c33017655.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FIEND)) + e2:SetValue(300) + c:RegisterEffect(e2) + --defup + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --discard & draw + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_HANDES+CATEGORY_DRAW) + e4:SetDescription(aux.Stringid(33017655,1)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetCountLimit(1) + e4:SetCost(c33017655.cost) + e4:SetTarget(c33017655.target) + e4:SetOperation(c33017655.operation) + c:RegisterEffect(e4) +end +function c33017655.costfilter(c) + return c:IsRace(RACE_FIEND) and c:IsAbleToRemoveAsCost() +end +function c33017655.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c33017655.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c33017655.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c33017655.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_HAND,0,1,nil,RACE_FIEND) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c33017655.operation(e,tp,eg,ep,ev,re,r,rp,chk) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,Card.IsRace,tp,LOCATION_HAND,0,1,1,nil,RACE_FIEND) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c33031674.lua b/script/c33031674.lua index 9786ecae..fe75685c 100644 --- a/script/c33031674.lua +++ b/script/c33031674.lua @@ -1,4 +1,4 @@ ---灼熱の試練 -function c33031674.initial_effect(c) - aux.AddRitualProcGreaterCode(c,60258960) -end +--灼熱の試練 +function c33031674.initial_effect(c) + aux.AddRitualProcGreaterCode(c,60258960) +end diff --git a/script/c33114323.lua b/script/c33114323.lua index 3cb6064c..dd1e8cf4 100644 --- a/script/c33114323.lua +++ b/script/c33114323.lua @@ -1,15 +1,7 @@ --メタルシルバー・アーマー --Effect is not fully implemented function c33114323.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(c33114323.target) - e1:SetOperation(c33114323.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --atk target local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) @@ -19,26 +11,6 @@ function c33114323.initial_effect(c) e2:SetTarget(c33114323.efftg) e2:SetValue(aux.tgoval) c:RegisterEffect(e2) - --Equip limit - local e3=Effect.CreateEffect(c) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_EQUIP_LIMIT) - e3:SetValue(1) - c:RegisterEffect(e3) -end -function c33114323.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 c33114323.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 c33114323.efftg(e,c) return c~=e:GetHandler():GetEquipTarget() and c:IsType(TYPE_MONSTER) diff --git a/script/c33145233.lua b/script/c33145233.lua index c3da2ab0..fdf81247 100644 --- a/script/c33145233.lua +++ b/script/c33145233.lua @@ -1,39 +1,39 @@ ---儀式魔人デモリッシャー -function c33145233.initial_effect(c) - --ritual material - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) - e1:SetValue(1) - c:RegisterEffect(e1) - --become material - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetCondition(c33145233.condition) - e2:SetOperation(c33145233.operation) - c:RegisterEffect(e2) -end -function c33145233.condition(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_RITUAL -end -function c33145233.operation(e,tp,eg,ep,ev,re,r,rp) - local rc=eg:GetFirst() - while rc do - if rc:GetFlagEffect(33145233)==0 then - --untargetable - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(33145233,0)) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CLIENT_HINT) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e1:SetValue(aux.tgoval) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - rc:RegisterFlagEffect(33145233,RESET_EVENT+0x1fe0000,0,1) - end - rc=eg:GetNext() - end -end +--儀式魔人デモリッシャー +function c33145233.initial_effect(c) + --ritual material + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) + e1:SetValue(1) + c:RegisterEffect(e1) + --become material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c33145233.condition) + e2:SetOperation(c33145233.operation) + c:RegisterEffect(e2) +end +function c33145233.condition(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RITUAL +end +function c33145233.operation(e,tp,eg,ep,ev,re,r,rp) + local rc=eg:GetFirst() + while rc do + if rc:GetFlagEffect(33145233)==0 then + --untargetable + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(33145233,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CLIENT_HINT) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetValue(aux.tgoval) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + rc:RegisterFlagEffect(33145233,RESET_EVENT+0x1fe0000,0,1) + end + rc=eg:GetNext() + end +end diff --git a/script/c33198837.lua b/script/c33198837.lua index b79d93d1..a7c1ecf0 100644 --- a/script/c33198837.lua +++ b/script/c33198837.lua @@ -38,8 +38,7 @@ end function c33198837.disop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c33245030.lua b/script/c33245030.lua index f50407c2..987ff5ce 100644 --- a/script/c33245030.lua +++ b/script/c33245030.lua @@ -1,36 +1,36 @@ ---クリボール -function c33245030.initial_effect(c) - --pos - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c33245030.condition) - e1:SetCost(c33245030.cost) - e1:SetTarget(c33245030.target) - e1:SetOperation(c33245030.operation) - c:RegisterEffect(e1) - --ritual material - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) - e2:SetValue(1) - c:RegisterEffect(e2) -end -function c33245030.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) -end -function c33245030.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c33245030.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetAttacker():IsAttackPos() end -end -function c33245030.operation(e,tp,eg,ep,ev,re,r,rp) - local at=Duel.GetAttacker() - if at:IsAttackPos() and at:IsRelateToBattle() then - Duel.ChangePosition(at,POS_FACEUP_DEFENSE) - end -end +--クリボール +function c33245030.initial_effect(c) + --pos + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c33245030.condition) + e1:SetCost(c33245030.cost) + e1:SetTarget(c33245030.target) + e1:SetOperation(c33245030.operation) + c:RegisterEffect(e1) + --ritual material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c33245030.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c33245030.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c33245030.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttacker():IsAttackPos() end +end +function c33245030.operation(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + if at:IsAttackPos() and at:IsRelateToBattle() then + Duel.ChangePosition(at,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c33280639.lua b/script/c33280639.lua new file mode 100644 index 00000000..3fac5cb4 --- /dev/null +++ b/script/c33280639.lua @@ -0,0 +1,94 @@ +--破壊剣士の揺籃 +--Destruction Swordsman's Cradle +--Scripted by Eerie Code +function c33280639.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,33280639+EFFECT_COUNT_CODE_OATH) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c33280639.cost) + e1:SetTarget(c33280639.target) + e1:SetOperation(c33280639.activate) + c:RegisterEffect(e1) + --Protect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c33280639.immcost) + e2:SetOperation(c33280639.immop) + c:RegisterEffect(e2) +end +function c33280639.cfilter1(c,tp) + return c:IsSetCard(0xd6) and not c:IsCode(33280639) and c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c33280639.cfilter2,tp,LOCATION_DECK,0,1,c) +end +function c33280639.cfilter2(c) + return c:IsSetCard(0xd7) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c33280639.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c33280639.cfilter1,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c33280639.cfilter1,tp,LOCATION_DECK,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c33280639.cfilter2,tp,LOCATION_DECK,0,1,1,g1:GetFirst()) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) +end +function c33280639.filter(c,e,tp) + return c:IsCode(11790356) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c33280639.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c33280639.filter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,nil,e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c33280639.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c33280639.filter),tp,LOCATION_EXTRA+LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + tc:RegisterFlagEffect(33280639,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,2) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCondition(c33280639.descon) + e1:SetOperation(c33280639.desop) + e1:SetReset(RESET_PHASE+PHASE_END,2) + e1:SetCountLimit(1) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) + Duel.SpecialSummonComplete() + end +end +function c33280639.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return Duel.GetTurnCount()~=e:GetLabel() and tc:GetFlagEffect(33280639)~=0 +end +function c33280639.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) +end +function c33280639.immcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c33280639.immop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(1) + e1:SetTargetRange(LOCATION_ONFIELD,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xd6)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c33282498.lua b/script/c33282498.lua index ae29053c..5828f8bd 100644 --- a/script/c33282498.lua +++ b/script/c33282498.lua @@ -13,6 +13,7 @@ function c33282498.initial_effect(c) --spsummon local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c33282498.regop) c:RegisterEffect(e2) diff --git a/script/c33302407.lua b/script/c33302407.lua index 2da0d9ca..761652de 100644 --- a/script/c33302407.lua +++ b/script/c33302407.lua @@ -26,7 +26,7 @@ function c33302407.filter(c) end function c33302407.distg(e,tp,eg,ep,ev,re,r,rp,chk) local ct=Duel.GetMatchingGroupCount(c33302407.filter,tp,LOCATION_MZONE,0,nil) - if chk==0 then return ct>0 and Duel.IsPlayerCanDiscardDeck(1-tp,0) end + if chk==0 then return ct>0 and Duel.IsPlayerCanDiscardDeck(1-tp,ct) end Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,ct) end function c33302407.disop(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c33327029.lua b/script/c33327029.lua index 9515123f..10d3bf0a 100644 --- a/script/c33327029.lua +++ b/script/c33327029.lua @@ -4,7 +4,7 @@ function c33327029.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_DESTROYED) + e1:SetCode(EVENT_CUSTOM+33327029) e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) e1:SetCondition(c33327029.condition) e1:SetTarget(c33327029.target) @@ -21,12 +21,32 @@ function c33327029.initial_effect(c) e2:SetTarget(c33327029.thtg) e2:SetOperation(c33327029.thop) c:RegisterEffect(e2) + if not c33327029.global_check then + c33327029.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetCondition(c33327029.regcon) + ge1:SetOperation(c33327029.regop) + Duel.RegisterEffect(ge1,0) + end end function c33327029.cfilter(c,tp) return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) end +function c33327029.regcon(e,tp,eg,ep,ev,re,r,rp) + local v=0 + if eg:IsExists(c33327029.cfilter,1,nil,0) then v=v+1 end + if eg:IsExists(c33327029.cfilter,1,nil,1) then v=v+2 end + if v==0 then return false end + e:SetLabel(({0,1,PLAYER_ALL})[v]) + return true +end +function c33327029.regop(e,tp,eg,ep,ev,re,r,rp) + Duel.RaiseEvent(eg,EVENT_CUSTOM+33327029,re,r,rp,ep,e:GetLabel()) +end function c33327029.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c33327029.cfilter,1,nil,tp) + return ev==tp or ev==PLAYER_ALL end function c33327029.filter(c,e,tp) return c:IsSetCard(0xe1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) diff --git a/script/c33334269.lua b/script/c33334269.lua new file mode 100644 index 00000000..bcb1aaa9 --- /dev/null +++ b/script/c33334269.lua @@ -0,0 +1,66 @@ +--DDゴースト +--D/D Ghost +--Scripted by Eerie Code +function c33334269.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(33334269,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c33334269.tgtg) + e1:SetOperation(c33334269.tgop) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(33334269,1)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_REMOVE) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c33334269.rtgtg) + e2:SetOperation(c33334269.rtgop) + c:RegisterEffect(e2) +end +function c33334269.tgfilter1(c,tp) + return ((c:IsSetCard(0xaf) and c:IsType(TYPE_MONSTER) and not c:IsCode(33334269)) or c:IsSetCard(0xae)) + and Duel.IsExistingMatchingCard(c33334269.tgfilter2,tp,LOCATION_DECK,0,1,nil,c:GetCode()) +end +function c33334269.tgfilter2(c,cd) + return c:IsCode(cd) and c:IsAbleToGrave() +end +function c33334269.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsCode(e:GetLabel()) end + if chk==0 then return Duel.IsExistingTarget(c33334269.tgfilter1,tp,LOCATION_GRAVE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c33334269.tgfilter1,tp,LOCATION_GRAVE,0,1,1,nil,tp) + e:SetLabel(g:GetFirst():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c33334269.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c33334269.tgfilter2,tp,LOCATION_DECK,0,1,1,nil,tc:GetCode()) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end + end +end +function c33334269.rtgfilter(c) + return c:IsFaceup() and ((c:IsSetCard(0xaf) and c:IsType(TYPE_MONSTER) and not c:IsCode(33334269)) or c:IsSetCard(0xae)) +end +function c33334269.rtgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c33334269.rtgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c33334269.rtgfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c33334269.rtgfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c33334269.rtgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) + end +end diff --git a/script/c33396948.lua b/script/c33396948.lua index c6df0b9a..c3701533 100644 --- a/script/c33396948.lua +++ b/script/c33396948.lua @@ -29,6 +29,7 @@ function c33396948.check(g) return a1 and a2 and a3 and a4 and a5 end function c33396948.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnCount()==0 and Duel.GetFieldGroupCount(1-e:GetHandlerPlayer(),LOCATION_HAND,0)==0 then return end local WIN_REASON_EXODIA = 0x10 local g1=Duel.GetFieldGroup(tp,LOCATION_HAND,0) local g2=Duel.GetFieldGroup(tp,0,LOCATION_HAND) diff --git a/script/c33413638.lua b/script/c33413638.lua index 2b77df77..4f866425 100644 --- a/script/c33413638.lua +++ b/script/c33413638.lua @@ -1,21 +1,21 @@ ---コカローチ・ナイト -function c33413638.initial_effect(c) - --to deck top - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(33413638,0)) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c33413638.tdtg) - e1:SetOperation(c33413638.tdop) - c:RegisterEffect(e1) -end -function c33413638.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c33413638.tdop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) - end -end +--コカローチ・ナイト +function c33413638.initial_effect(c) + --to deck top + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(33413638,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c33413638.tdtg) + e1:SetOperation(c33413638.tdop) + c:RegisterEffect(e1) +end +function c33413638.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c33413638.tdop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) + end +end diff --git a/script/c33423043.lua b/script/c33423043.lua index 71620aca..5dddeab6 100644 --- a/script/c33423043.lua +++ b/script/c33423043.lua @@ -1,36 +1,36 @@ ---異次元の指名者 -function c33423043.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetTarget(c33423043.target) - e1:SetOperation(c33423043.operation) - c:RegisterEffect(e1) -end -function c33423043.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 - and Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,564) - local ac=Duel.AnnounceCard(tp) - Duel.SetTargetParam(ac) - Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) -end -function c33423043.operation(e,tp,eg,ep,ev,re,r,rp) - local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,ac) - local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) - Duel.ConfirmCards(tp,hg) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local sg=g:Select(tp,1,1,nil) - Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) - Duel.ShuffleHand(1-tp) - else - local sg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - local dg=sg:RandomSelect(tp,1) - Duel.Remove(dg,POS_FACEUP,REASON_EFFECT) - Duel.ShuffleHand(1-tp) - end -end +--異次元の指名者 +function c33423043.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetTarget(c33423043.target) + e1:SetOperation(c33423043.operation) + c:RegisterEffect(e1) +end +function c33423043.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 + and Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c33423043.operation(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,ac) + local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.ConfirmCards(tp,hg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local sg=g:Select(tp,1,1,nil) + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + else + local sg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local dg=sg:RandomSelect(tp,1) + Duel.Remove(dg,POS_FACEUP,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c33453260.lua b/script/c33453260.lua index 382637ee..a18c2bc3 100644 --- a/script/c33453260.lua +++ b/script/c33453260.lua @@ -1,85 +1,54 @@ ---コミックハンド -function c33453260.initial_effect(c) - --Equip - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP+CATEGORY_CONTROL) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c33453260.condition) - e1:SetTarget(c33453260.target) - e1:SetOperation(c33453260.activate) - 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(c33453260.eqlimit) - c:RegisterEffect(e2) - --control - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_SET_CONTROL) - e3:SetValue(c33453260.cval) - c:RegisterEffect(e3) - --change type - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_EQUIP) - e4:SetCode(EFFECT_ADD_TYPE) - e4:SetValue(TYPE_TOON) - c:RegisterEffect(e4) - --direct attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_EQUIP) - e5:SetCode(EFFECT_DIRECT_ATTACK) - e5:SetCondition(c33453260.dircon) - c:RegisterEffect(e5) - --self destroy - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_SELF_DESTROY) - e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e6:SetRange(LOCATION_SZONE) - e6:SetCondition(c33453260.descon) - c:RegisterEffect(e6) -end -function c33453260.cfilter(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c33453260.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c33453260.cfilter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c33453260.filter(c) - return c:IsFaceup() and c:IsControlerCanBeChanged() -end -function c33453260.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c33453260.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c33453260.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c33453260.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) -end -function c33453260.activate(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 c33453260.eqlimit(e,c) - return e:GetHandlerPlayer()~=c:GetControler() or e:GetHandler():GetEquipTarget()==c -end -function c33453260.cval(e,c) - return e:GetHandlerPlayer() -end -function c33453260.dirfilter(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c33453260.dircon(e) - return not Duel.IsExistingMatchingCard(c33453260.dirfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c33453260.descon(e) - return not Duel.IsExistingMatchingCard(c33453260.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) -end +--コミックハンド +function c33453260.initial_effect(c) + aux.AddEquipProcedure(c,1,Card.IsControlerCanBeChanged,c33453260.eqlimit,c33453260.condition,c33453260.target) + --control + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_SET_CONTROL) + e3:SetValue(c33453260.cval) + c:RegisterEffect(e3) + --change type + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_ADD_TYPE) + e4:SetValue(TYPE_TOON) + c:RegisterEffect(e4) + --direct attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_DIRECT_ATTACK) + e5:SetCondition(c33453260.dircon) + c:RegisterEffect(e5) + --self destroy + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SELF_DESTROY) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c33453260.descon) + c:RegisterEffect(e6) +end +function c33453260.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c33453260.condition(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c33453260.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end +end +function c33453260.target(e,tp,eg,ep,ev,re,r,rp) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,Duel.GetFirstTarget(),1,0,0) +end +function c33453260.eqlimit(e,c) + return e:GetHandlerPlayer()~=c:GetControler() or e:GetHandler():GetEquipTarget()==c +end +function c33453260.cval(e,c) + return e:GetHandlerPlayer() +end +function c33453260.dirfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c33453260.dircon(e) + return not Duel.IsExistingMatchingCard(c33453260.dirfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c33453260.descon(e) + return not Duel.IsExistingMatchingCard(c33453260.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end diff --git a/script/c33460840.lua b/script/c33460840.lua index ae1f2004..fdab3a41 100644 --- a/script/c33460840.lua +++ b/script/c33460840.lua @@ -35,7 +35,7 @@ function c33460840.eqop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or c:IsFacedown() or not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c33460840.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,c) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c33460840.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,c) local tc=g:GetFirst() if not (tc and Duel.Equip(tp,tc,c,true)) then return end local atk=tc:GetTextAttack()/2 diff --git a/script/c33541430.lua b/script/c33541430.lua new file mode 100644 index 00000000..66fbd57b --- /dev/null +++ b/script/c33541430.lua @@ -0,0 +1,107 @@ +--花札衛-月花見- +function c33541430.initial_effect(c) + c:EnableReviveLimit() + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(aux.SynCondition(nil,aux.NonTuner(nil),2,2)) + e1:SetTarget(aux.SynTarget(nil,aux.NonTuner(nil),2,2)) + e1:SetOperation(aux.SynOperation(nil,aux.NonTuner(nil),2,2)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(33541430,0)) + e2:SetCategory(CATEGORY_DRAW+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c33541430.drcost) + e2:SetTarget(c33541430.drtg) + e2:SetOperation(c33541430.drop) + c:RegisterEffect(e2) + --synchro level + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) + e3:SetTarget(c33541430.syntg) + e3:SetValue(1) + e3:SetOperation(c33541430.synop) + c:RegisterEffect(e3) +end +function c33541430.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetCode(EFFECT_SKIP_DP) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN) + Duel.RegisterEffect(e1,tp) +end +function c33541430.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c33541430.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)~=0 then + local tc=Duel.GetOperatedGroup():GetFirst() + Duel.ConfirmCards(1-tp,tc) + Duel.BreakEffect() + if tc:IsType(TYPE_MONSTER) and tc:IsSetCard(0xe6) then + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.SelectYesNo(tp,aux.Stringid(33541430,1)) + and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end + end + Duel.ShuffleHand(tp) + end +end +function c33541430.cardiansynlevel(c) + return 2 +end +function c33541430.synfilter(c,syncard,tuner,f) + return c:IsFaceup() and c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) +end +function c33541430.syntg(e,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + local lv2=syncard:GetLevel()-c33541430.cardiansynlevel(c) + if lv<=0 and lv2<=0 then return false end + local g=Duel.GetMatchingGroup(c33541430.synfilter,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local res=g:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) + local res2=g:CheckWithSumEqual(c33541430.cardiansynlevel,lv2,minc,maxc) + return res or res2 +end +function c33541430.synop(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + local lv2=syncard:GetLevel()-c33541430.cardiansynlevel(c) + local g=Duel.GetMatchingGroup(c33541430.synfilter,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local res=g:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) + local res2=g:CheckWithSumEqual(c33541430.cardiansynlevel,lv2,minc,maxc) + local sg=nil + if (res2 and res and Duel.SelectYesNo(tp,aux.Stringid(33541430,2))) + or (res2 and not res) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + sg=g:SelectWithSumEqual(tp,c33541430.cardiansynlevel,lv2,minc,maxc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + sg=g:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,minc,maxc,syncard) + end + Duel.SetSynchroMaterial(sg) +end diff --git a/script/c33550694.lua b/script/c33550694.lua index b57b1f1f..e8b63ed1 100644 --- a/script/c33550694.lua +++ b/script/c33550694.lua @@ -1,80 +1,77 @@ ---フュージョン・ゲート -function c33550694.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --fusion - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(33550694,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) - e2:SetTarget(c33550694.target) - e2:SetOperation(c33550694.operation) - c:RegisterEffect(e2) -end -function c33550694.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() -end -function c33550694.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) -end -function c33550694.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c33550694.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c33550694.filter0,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c33550694.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c33550694.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c33550694.operation(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - if not e:GetHandler():IsRelateToEffect(e) then return end - local mg1=Duel.GetMatchingGroup(c33550694.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c33550694.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c33550694.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--フュージョン・ゲート +function c33550694.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --fusion + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(33550694,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e2:SetTarget(c33550694.target) + e2:SetOperation(c33550694.operation) + c:RegisterEffect(e2) +end +function c33550694.filter1(c,e) + return c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c33550694.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c33550694.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsAbleToRemove,nil) + local res=Duel.IsExistingMatchingCard(c33550694.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c33550694.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c33550694.operation(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + if not e:GetHandler():IsRelateToEffect(e) then return end + local mg1=Duel.GetFusionMaterial(tp):Filter(c33550694.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c33550694.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c33550694.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c33574806.lua b/script/c33574806.lua index 35a01378..3851a91f 100644 --- a/script/c33574806.lua +++ b/script/c33574806.lua @@ -1,24 +1,25 @@ ---E・HERO エスクリダオ -function c33574806.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),true) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(aux.fuslimit) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c33574806.atkup) - c:RegisterEffect(e3) -end -function c33574806.atkup(e,c) - return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0x3008)*100 -end +--E・HERO エスクリダオ +function c33574806.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_DARK),true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(aux.fuslimit) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c33574806.atkup) + c:RegisterEffect(e3) +end +c33574806.material_setcode=0x8 +function c33574806.atkup(e,c) + return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0x3008)*100 +end diff --git a/script/c33622465.lua b/script/c33622465.lua index 1aa41fcf..509e9dbc 100644 --- a/script/c33622465.lua +++ b/script/c33622465.lua @@ -46,13 +46,13 @@ function c33622465.spcon(e,tp,eg,ep,ev,re,r,rp) end function c33622465.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,33622465,0,0x11,3,1200,400,RACE_WARRIOR,ATTRIBUTE_EARTH) end + and Duel.IsPlayerCanSpecialSummonMonster(tp,33622465,0,0x11,1200,400,3,RACE_WARRIOR,ATTRIBUTE_EARTH) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) end function c33622465.spop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,33622465,0,0x11,3,1200,400,RACE_WARRIOR,ATTRIBUTE_EARTH) then + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,33622465,0,0x11,1200,400,3,RACE_WARRIOR,ATTRIBUTE_EARTH) then c:AddMonsterAttribute(TYPE_NORMAL) Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) c:AddMonsterAttributeComplete() diff --git a/script/c33655493.lua b/script/c33655493.lua index 09ea0b16..d57a8bf2 100644 --- a/script/c33655493.lua +++ b/script/c33655493.lua @@ -1,26 +1,26 @@ ---闇の侯爵ベリアル -function c33655493.initial_effect(c) - --cannot be target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetValue(c33655493.tg) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(c33655493.tg) - e2:SetValue(c33655493.tgval) - c:RegisterEffect(e2) -end -function c33655493.tg(e,c) - return c:IsFaceup() and c:GetCode()~=33655493 -end -function c33655493.tgval(e,re,rp) - return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and rp~=e:GetHandlerPlayer() -end +--闇の侯爵ベリアル +function c33655493.initial_effect(c) + --cannot be target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c33655493.tg) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c33655493.tg) + e2:SetValue(c33655493.tgval) + c:RegisterEffect(e2) +end +function c33655493.tg(e,c) + return c:IsFaceup() and c:GetCode()~=33655493 +end +function c33655493.tgval(e,re,rp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and rp~=e:GetHandlerPlayer() +end diff --git a/script/c33695750.lua b/script/c33695750.lua index 5fdeb02a..32a31d48 100644 --- a/script/c33695750.lua +++ b/script/c33695750.lua @@ -1,50 +1,50 @@ ---デス・モスキート -function c33695750.initial_effect(c) - c:EnableCounterPermit(0x27) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(33695750,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c33695750.addct) - e1:SetOperation(c33695750.addc) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - --attackup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c33695750.attackup) - c:RegisterEffect(e3) - --destroy replace - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetCode(EFFECT_DESTROY_REPLACE) - e4:SetRange(LOCATION_MZONE) - e4:SetTarget(c33695750.reptg) - c:RegisterEffect(e4) -end -function c33695750.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x27) -end -function c33695750.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x27,2) - end -end -function c33695750.attackup(e,c) - return c:GetCounter(0x27)*500 -end -function c33695750.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReason(REASON_BATTLE) - and e:GetHandler():IsCanRemoveCounter(tp,0x27,1,REASON_COST) end - e:GetHandler():RemoveCounter(tp,0x27,1,REASON_EFFECT) - return true -end +--デス・モスキート +function c33695750.initial_effect(c) + c:EnableCounterPermit(0x27) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(33695750,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c33695750.addct) + e1:SetOperation(c33695750.addc) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --attackup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c33695750.attackup) + c:RegisterEffect(e3) + --destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c33695750.reptg) + c:RegisterEffect(e4) +end +function c33695750.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x27) +end +function c33695750.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x27,2) + end +end +function c33695750.attackup(e,c) + return c:GetCounter(0x27)*500 +end +function c33695750.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReason(REASON_BATTLE) + and e:GetHandler():IsCanRemoveCounter(tp,0x27,1,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x27,1,REASON_EFFECT) + return true +end diff --git a/script/c33746252.lua b/script/c33746252.lua index 3e2646e4..8a09a6c2 100644 --- a/script/c33746252.lua +++ b/script/c33746252.lua @@ -1,21 +1,21 @@ ---威光魔人 -function c33746252.initial_effect(c) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --act limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_CANNOT_ACTIVATE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - e2:SetValue(c33746252.aclimit) - c:RegisterEffect(e2) -end -function c33746252.aclimit(e,re,tp) - return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) -end +--威光魔人 +function c33746252.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --act limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetValue(c33746252.aclimit) + c:RegisterEffect(e2) +end +function c33746252.aclimit(e,re,tp) + return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c33776734.lua b/script/c33776734.lua index c01f112b..56b45158 100644 --- a/script/c33776734.lua +++ b/script/c33776734.lua @@ -17,6 +17,7 @@ function c33776734.initial_effect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e2:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) e2:SetTarget(c33776734.rmtarget) e2:SetValue(LOCATION_REMOVED) @@ -41,29 +42,21 @@ function c33776734.initial_effect(c) ge1:SetOperation(c33776734.checkop1) Duel.RegisterEffect(ge1,0) local ge2=ge1:Clone() - e2:SetCode(EVENT_CHAIN_NEGATED) - e2:SetOperation(c33776734.checkop2) + ge2:SetCode(EVENT_CHAIN_NEGATED) + ge2:SetOperation(c33776734.checkop2) Duel.RegisterEffect(ge2,0) end end c33776734.lvupcount=1 c33776734.lvup={33776734} function c33776734.checkop1(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - while tc do - if re and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and tc==re:GetHandler() then - tc:RegisterFlagEffect(33776734,RESET_EVENT+0x1fe0000,0,1) - end - tc=eg:GetNext() + if re and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) then + re:GetHandler():RegisterFlagEffect(33776734,RESET_EVENT+0x1fe0000,0,1) end end function c33776734.checkop2(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - while tc do - if re and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and tc==re:GetHandler() then - tc:ResetFlagEffect(33776734) - end - tc=eg:GetNext() + if re and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) then + re:GetHandler():ResetFlagEffect(33776734) end end function c33776734.spcon(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c33776843.lua b/script/c33776843.lua index eea7326b..8d6ff6b5 100644 --- a/script/c33776843.lua +++ b/script/c33776843.lua @@ -7,7 +7,7 @@ function c33776843.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(33776843,0)) e1:SetCategory(CATEGORY_DESTROY) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c33782437.lua b/script/c33782437.lua index 7e07c46f..4fe4fc6b 100644 --- a/script/c33782437.lua +++ b/script/c33782437.lua @@ -1,32 +1,32 @@ ---一時休戦 -function c33782437.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCategory(CATEGORY_DRAW) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c33782437.target) - e1:SetOperation(c33782437.activate) - c:RegisterEffect(e1) -end -function c33782437.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsPlayerCanDraw(1-tp,1) end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) -end -function c33782437.activate(e,tp,eg,ep,ev,re,r,rp) - local d1=Duel.Draw(tp,1,REASON_EFFECT) - local d2=Duel.Draw(1-tp,1,REASON_EFFECT) - if d1==0 or d2==0 then return end - 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,1) - e1:SetValue(0) - e1:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e2,tp) -end +--一時休戦 +function c33782437.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c33782437.target) + e1:SetOperation(c33782437.activate) + c:RegisterEffect(e1) +end +function c33782437.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c33782437.activate(e,tp,eg,ep,ev,re,r,rp) + local d1=Duel.Draw(tp,1,REASON_EFFECT) + local d2=Duel.Draw(1-tp,1,REASON_EFFECT) + if d1==0 or d2==0 then return end + 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,1) + e1:SetValue(0) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c33784505.lua b/script/c33784505.lua index cd242f2f..3ce38f81 100644 --- a/script/c33784505.lua +++ b/script/c33784505.lua @@ -19,6 +19,7 @@ function c33784505.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) end function c33784505.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) - Duel.Draw(tp,1,REASON_EFFECT) + if Duel.NegateEffect(ev) then + Duel.Draw(tp,1,REASON_EFFECT) + end end diff --git a/script/c33823832.lua b/script/c33823832.lua index 28022227..1020f6f0 100644 --- a/script/c33823832.lua +++ b/script/c33823832.lua @@ -1,71 +1,71 @@ ---EMファイア・マフライオ -function c33823832.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(33823832,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_DESTROYED) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c33823832.spcon) - e2:SetTarget(c33823832.sptg) - e2:SetOperation(c33823832.spop) - c:RegisterEffect(e2) - --chain attack - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(33823832,1)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLED) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c33823832.cacon) - e3:SetOperation(c33823832.caop) - c:RegisterEffect(e3) -end -function c33823832.cfilter(c,tp) - return c:IsType(TYPE_PENDULUM) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp -end -function c33823832.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c33823832.cfilter,1,nil,tp) -end -function c33823832.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c33823832.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c33823832.cacon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if not d then return false end - if a:IsStatus(STATUS_OPPO_BATTLE) and d:IsControler(tp) then a,d=d,a end - if a:IsType(TYPE_PENDULUM) - and not a:IsStatus(STATUS_BATTLE_DESTROYED) and d:IsStatus(STATUS_BATTLE_DESTROYED) then - e:SetLabelObject(a) - return true - else return false end -end -function c33823832.caop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:IsFaceup() and tc:IsControler(tp) and tc:IsRelateToBattle() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(200) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - tc:RegisterEffect(e1) - if tc:IsChainAttackable() then - Duel.ChainAttack() - end - end -end +--EMファイア・マフライオ +function c33823832.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(33823832,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c33823832.spcon) + e2:SetTarget(c33823832.sptg) + e2:SetOperation(c33823832.spop) + c:RegisterEffect(e2) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(33823832,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLED) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c33823832.cacon) + e3:SetOperation(c33823832.caop) + c:RegisterEffect(e3) +end +function c33823832.cfilter(c,tp) + return c:IsType(TYPE_PENDULUM) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c33823832.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c33823832.cfilter,1,nil,tp) +end +function c33823832.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c33823832.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c33823832.cacon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:IsStatus(STATUS_OPPO_BATTLE) and d:IsControler(tp) then a,d=d,a end + if a:IsType(TYPE_PENDULUM) + and not a:IsStatus(STATUS_BATTLE_DESTROYED) and d:IsStatus(STATUS_BATTLE_DESTROYED) then + e:SetLabelObject(a) + return true + else return false end +end +function c33823832.caop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsFaceup() and tc:IsControler(tp) and tc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(200) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + if tc:IsChainAttackable() then + Duel.ChainAttack() + end + end +end diff --git a/script/c33833230.lua b/script/c33833230.lua index 077f6270..6adc59b0 100644 --- a/script/c33833230.lua +++ b/script/c33833230.lua @@ -1,11 +1,12 @@ --EMシール・イール function c33833230.initial_effect(c) aux.EnablePendulumAttribute(c) - --Negate effect + --Disable effect local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(33833230,0)) e1:SetCategory(CATEGORY_DISABLE) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_PZONE) e1:SetCountLimit(1) e1:SetTarget(c33833230.distg) diff --git a/script/c33883834.lua b/script/c33883834.lua index f04da6e0..ccc26d5f 100644 --- a/script/c33883834.lua +++ b/script/c33883834.lua @@ -1,41 +1,41 @@ ---紫炎の寄子 -function c33883834.initial_effect(c) - --indestructable - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(33883834,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetCondition(c33883834.con) - e1:SetCost(c33883834.cost) - e1:SetOperation(c33883834.op) - c:RegisterEffect(e1) -end -function c33883834.con(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return d and ((a:GetControler()==tp and a:IsSetCard(0x3d)) or (d:GetControler()==tp and d:IsSetCard(0x3d))) - and Duel.GetFlagEffect(tp,33883834)==0 -end -function c33883834.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) - Duel.RegisterFlagEffect(tp,33883834,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) -end -function c33883834.op(e,tp,eg,ep,ev,re,r,rp,chk) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if not a:IsRelateToBattle() or not d:IsRelateToBattle() then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetOwnerPlayer(tp) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - if a:GetControler()==tp then - a:RegisterEffect(e1) - else - d:RegisterEffect(e1) - end -end +--紫炎の寄子 +function c33883834.initial_effect(c) + --indestructable + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(33883834,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c33883834.con) + e1:SetCost(c33883834.cost) + e1:SetOperation(c33883834.op) + c:RegisterEffect(e1) +end +function c33883834.con(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and ((a:GetControler()==tp and a:IsSetCard(0x3d)) or (d:GetControler()==tp and d:IsSetCard(0x3d))) + and Duel.GetFlagEffect(tp,33883834)==0 +end +function c33883834.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) + Duel.RegisterFlagEffect(tp,33883834,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c33883834.op(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a:IsRelateToBattle() or not d:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetOwnerPlayer(tp) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + if a:GetControler()==tp then + a:RegisterEffect(e1) + else + d:RegisterEffect(e1) + end +end diff --git a/script/c33900648.lua b/script/c33900648.lua index c9b0df91..2f9a8e50 100644 --- a/script/c33900648.lua +++ b/script/c33900648.lua @@ -1,205 +1,205 @@ ---クリアー・ワールド -function c33900648.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --maintain - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetCondition(c33900648.mtcon) - e2:SetOperation(c33900648.mtop) - c:RegisterEffect(e2) - --adjust - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ADJUST) - e3:SetRange(LOCATION_FZONE) - e3:SetOperation(c33900648.adjustop) - c:RegisterEffect(e3) - --light - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_PUBLIC) - e4:SetRange(LOCATION_FZONE) - e4:SetTargetRange(LOCATION_HAND,LOCATION_HAND) - e4:SetTarget(c33900648.lighttg) - c:RegisterEffect(e4) - --dark - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e5:SetRange(LOCATION_FZONE) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetTargetRange(1,0) - e5:SetCondition(c33900648.darkcon1) - c:RegisterEffect(e5) - local e6=e5:Clone() - e6:SetCondition(c33900648.darkcon2) - e6:SetTargetRange(0,1) - c:RegisterEffect(e6) - --earth - local e7=Effect.CreateEffect(c) - e7:SetDescription(aux.Stringid(33900648,1)) - e7:SetCategory(CATEGORY_DESTROY) - e7:SetCode(EVENT_PHASE+PHASE_STANDBY) - e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e7:SetRange(LOCATION_FZONE) - e7:SetProperty(EFFECT_FLAG_CARD_TARGET) - e7:SetCountLimit(1) - e7:SetCondition(c33900648.descon) - e7:SetTarget(c33900648.destg) - e7:SetOperation(c33900648.desop) - c:RegisterEffect(e7) - --water - local e8=Effect.CreateEffect(c) - e8:SetDescription(aux.Stringid(33900648,2)) - e8:SetCategory(CATEGORY_HANDES) - e8:SetCode(EVENT_PHASE+PHASE_END) - e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e8:SetRange(LOCATION_FZONE) - e8:SetCountLimit(1) - e8:SetCondition(c33900648.hdcon) - e8:SetTarget(c33900648.hdtg) - e8:SetOperation(c33900648.hdop) - c:RegisterEffect(e8) - --fire - local e9=Effect.CreateEffect(c) - e9:SetDescription(aux.Stringid(33900648,3)) - e9:SetCategory(CATEGORY_DAMAGE) - e9:SetCode(EVENT_PHASE+PHASE_END) - e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e9:SetRange(LOCATION_FZONE) - e9:SetCountLimit(1) - e9:SetCondition(c33900648.damcon) - e9:SetTarget(c33900648.damtg) - e9:SetOperation(c33900648.damop) - c:RegisterEffect(e9) - --wind - local e10=Effect.CreateEffect(c) - e10:SetType(EFFECT_TYPE_FIELD) - e10:SetCode(EFFECT_ACTIVATE_COST) - e10:SetRange(LOCATION_FZONE) - e10:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e10:SetTargetRange(1,0) - e10:SetTarget(c33900648.actarget) - e10:SetCondition(c33900648.windcon1) - e10:SetCost(c33900648.costchk) - e10:SetOperation(c33900648.costop) - c:RegisterEffect(e10) - local e11=e10:Clone() - e11:SetTargetRange(0,1) - e11:SetCondition(c33900648.windcon2) - c:RegisterEffect(e11) -end -function c33900648.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c33900648.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(33900648,0)) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -c33900648[0]=0 -c33900648[1]=0 -function c33900648.raccheck(p) - local rac=0 - for i=0,4 do - local tc=Duel.GetFieldCard(p,LOCATION_MZONE,i) - if tc and tc:IsFaceup() then - rac=bit.bor(rac,tc:GetAttribute()) - end - end - c33900648[p]=rac -end -function c33900648.adjustop(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerAffectedByEffect(0,97811903) then - c33900648.raccheck(0) - else c33900648[0]=0 end - if not Duel.IsPlayerAffectedByEffect(1,97811903) then - c33900648.raccheck(1) - else c33900648[1]=0 end -end -function c33900648.lighttg(e,c) - return bit.band(c33900648[c:GetControler()],ATTRIBUTE_LIGHT)~=0 -end -function c33900648.darkcon1(e) - return bit.band(c33900648[e:GetHandlerPlayer()],ATTRIBUTE_DARK)~=0 - and Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>=2 -end -function c33900648.darkcon2(e) - return bit.band(c33900648[1-e:GetHandlerPlayer()],ATTRIBUTE_DARK)~=0 - and Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)>=2 -end -function c33900648.descon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_EARTH)~=0 -end -function c33900648.desfilter(c) - return c:IsPosition(POS_FACEUP_DEFENSE) -end -function c33900648.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local turnp=Duel.GetTurnPlayer() - if chkc then return chkc:IsControler(turnp) and chkc:IsLocation(LOCATION_MZONE) and c33900648.desfilter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(turnp,c33900648.desfilter,turnp,LOCATION_MZONE,0,1,1,nil) - if g:GetCount()>0 then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - end -end -function c33900648.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_EARTH)==0 then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_DEFENSE) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c33900648.hdcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_WATER)~=0 -end -function c33900648.hdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local turnp=Duel.GetTurnPlayer() - Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,turnp,1) -end -function c33900648.hdop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_WATER)==0 then return end - Duel.DiscardHand(Duel.GetTurnPlayer(),nil,1,1,REASON_EFFECT+REASON_DISCARD) -end -function c33900648.damcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_FIRE)~=0 -end -function c33900648.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local turnp=Duel.GetTurnPlayer() - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,turnp,1000) -end -function c33900648.damop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_FIRE)==0 then return end - Duel.Damage(Duel.GetTurnPlayer(),1000,REASON_EFFECT) -end -function c33900648.windcon1(e) - return bit.band(c33900648[e:GetHandlerPlayer()],ATTRIBUTE_WIND)~=0 -end -function c33900648.windcon2(e) - return bit.band(c33900648[1-e:GetHandlerPlayer()],ATTRIBUTE_WIND)~=0 -end -function c33900648.actarget(e,te,tp) - return te:IsHasType(EFFECT_TYPE_ACTIVATE) and te:IsActiveType(TYPE_SPELL) -end -function c33900648.costchk(e,te_or_c,tp) - return Duel.CheckLPCost(tp,500) -end -function c33900648.costop(e,tp,eg,ep,ev,re,r,rp) - Duel.PayLPCost(tp,500) -end +--クリアー・ワールド +function c33900648.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --maintain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCondition(c33900648.mtcon) + e2:SetOperation(c33900648.mtop) + c:RegisterEffect(e2) + --adjust + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_FZONE) + e3:SetOperation(c33900648.adjustop) + c:RegisterEffect(e3) + --light + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_PUBLIC) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e4:SetTarget(c33900648.lighttg) + c:RegisterEffect(e4) + --dark + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e5:SetRange(LOCATION_FZONE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,0) + e5:SetCondition(c33900648.darkcon1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCondition(c33900648.darkcon2) + e6:SetTargetRange(0,1) + c:RegisterEffect(e6) + --earth + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(33900648,1)) + e7:SetCategory(CATEGORY_DESTROY) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetRange(LOCATION_FZONE) + e7:SetProperty(EFFECT_FLAG_CARD_TARGET) + e7:SetCountLimit(1) + e7:SetCondition(c33900648.descon) + e7:SetTarget(c33900648.destg) + e7:SetOperation(c33900648.desop) + c:RegisterEffect(e7) + --water + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(33900648,2)) + e8:SetCategory(CATEGORY_HANDES) + e8:SetCode(EVENT_PHASE+PHASE_END) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e8:SetRange(LOCATION_FZONE) + e8:SetCountLimit(1) + e8:SetCondition(c33900648.hdcon) + e8:SetTarget(c33900648.hdtg) + e8:SetOperation(c33900648.hdop) + c:RegisterEffect(e8) + --fire + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(33900648,3)) + e9:SetCategory(CATEGORY_DAMAGE) + e9:SetCode(EVENT_PHASE+PHASE_END) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e9:SetRange(LOCATION_FZONE) + e9:SetCountLimit(1) + e9:SetCondition(c33900648.damcon) + e9:SetTarget(c33900648.damtg) + e9:SetOperation(c33900648.damop) + c:RegisterEffect(e9) + --wind + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_ACTIVATE_COST) + e10:SetRange(LOCATION_FZONE) + e10:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e10:SetTargetRange(1,0) + e10:SetTarget(c33900648.actarget) + e10:SetCondition(c33900648.windcon1) + e10:SetCost(c33900648.costchk) + e10:SetOperation(c33900648.costop) + c:RegisterEffect(e10) + local e11=e10:Clone() + e11:SetTargetRange(0,1) + e11:SetCondition(c33900648.windcon2) + c:RegisterEffect(e11) +end +function c33900648.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c33900648.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(33900648,0)) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +c33900648[0]=0 +c33900648[1]=0 +function c33900648.raccheck(p) + local rac=0 + for i=0,4 do + local tc=Duel.GetFieldCard(p,LOCATION_MZONE,i) + if tc and tc:IsFaceup() then + rac=bit.bor(rac,tc:GetAttribute()) + end + end + c33900648[p]=rac +end +function c33900648.adjustop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerAffectedByEffect(0,97811903) then + c33900648.raccheck(0) + else c33900648[0]=0 end + if not Duel.IsPlayerAffectedByEffect(1,97811903) then + c33900648.raccheck(1) + else c33900648[1]=0 end +end +function c33900648.lighttg(e,c) + return bit.band(c33900648[c:GetControler()],ATTRIBUTE_LIGHT)~=0 +end +function c33900648.darkcon1(e) + return bit.band(c33900648[e:GetHandlerPlayer()],ATTRIBUTE_DARK)~=0 + and Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>=2 +end +function c33900648.darkcon2(e) + return bit.band(c33900648[1-e:GetHandlerPlayer()],ATTRIBUTE_DARK)~=0 + and Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)>=2 +end +function c33900648.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_EARTH)~=0 +end +function c33900648.desfilter(c) + return c:IsPosition(POS_FACEUP_DEFENSE) +end +function c33900648.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local turnp=Duel.GetTurnPlayer() + if chkc then return chkc:IsControler(turnp) and chkc:IsLocation(LOCATION_MZONE) and c33900648.desfilter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(turnp,c33900648.desfilter,turnp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + end +end +function c33900648.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_EARTH)==0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_DEFENSE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c33900648.hdcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_WATER)~=0 +end +function c33900648.hdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local turnp=Duel.GetTurnPlayer() + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,turnp,1) +end +function c33900648.hdop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_WATER)==0 then return end + Duel.DiscardHand(Duel.GetTurnPlayer(),nil,1,1,REASON_EFFECT+REASON_DISCARD) +end +function c33900648.damcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_FIRE)~=0 +end +function c33900648.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local turnp=Duel.GetTurnPlayer() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,turnp,1000) +end +function c33900648.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if bit.band(c33900648[Duel.GetTurnPlayer()],ATTRIBUTE_FIRE)==0 then return end + Duel.Damage(Duel.GetTurnPlayer(),1000,REASON_EFFECT) +end +function c33900648.windcon1(e) + return bit.band(c33900648[e:GetHandlerPlayer()],ATTRIBUTE_WIND)~=0 +end +function c33900648.windcon2(e) + return bit.band(c33900648[1-e:GetHandlerPlayer()],ATTRIBUTE_WIND)~=0 +end +function c33900648.actarget(e,te,tp) + return te:IsHasType(EFFECT_TYPE_ACTIVATE) and te:IsActiveType(TYPE_SPELL) +end +function c33900648.costchk(e,te_or_c,tp) + return Duel.CheckLPCost(tp,500) +end +function c33900648.costop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,500) +end diff --git a/script/c33904024.lua b/script/c33904024.lua index 69f8a809..a58817ac 100644 --- a/script/c33904024.lua +++ b/script/c33904024.lua @@ -1,49 +1,49 @@ ---強欲なカケラ -function c33904024.initial_effect(c) - c:EnableCounterPermit(0xd) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_DRAW) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c33904024.ctop) - c:RegisterEffect(e2) - --draw - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(33904024,0)) - e3:SetCategory(CATEGORY_DRAW) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_SZONE) - e3:SetCondition(c33904024.drcon) - e3:SetCost(c33904024.drcost) - e3:SetTarget(c33904024.drtg) - e3:SetOperation(c33904024.drop) - c:RegisterEffect(e3) -end -function c33904024.ctop(e,tp,eg,ep,ev,re,r,rp) - if ep==tp and r==REASON_RULE then - e:GetHandler():AddCounter(0xd,1) - end -end -function c33904024.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0xd)>=2 -end -function c33904024.drcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c33904024.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c33904024.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--強欲なカケラ +function c33904024.initial_effect(c) + c:EnableCounterPermit(0xd) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c33904024.ctop) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(33904024,0)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c33904024.drcon) + e3:SetCost(c33904024.drcost) + e3:SetTarget(c33904024.drtg) + e3:SetOperation(c33904024.drop) + c:RegisterEffect(e3) +end +function c33904024.ctop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp and r==REASON_RULE then + e:GetHandler():AddCounter(0xd,1) + end +end +function c33904024.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0xd)>=2 +end +function c33904024.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c33904024.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c33904024.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c33909817.lua b/script/c33909817.lua index 910e4a53..765b3600 100644 --- a/script/c33909817.lua +++ b/script/c33909817.lua @@ -7,6 +7,7 @@ function c33909817.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(33909817,0)) e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,33909817) diff --git a/script/c33950246.lua b/script/c33950246.lua index b9994e0f..e5c71c48 100644 --- a/script/c33950246.lua +++ b/script/c33950246.lua @@ -1,20 +1,20 @@ ---王宮の号令 -function c33950246.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --disable effect - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_ACTIVATING) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c33950246.disop) - c:RegisterEffect(e2) -end -function c33950246.disop(e,tp,eg,ep,ev,re,r,rp) - if re:IsActiveType(TYPE_FLIP) then - Duel.NegateActivation(ev) - end -end +--王宮の号令 +function c33950246.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --disable effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_ACTIVATING) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c33950246.disop) + c:RegisterEffect(e2) +end +function c33950246.disop(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_FLIP) then + Duel.NegateActivation(ev) + end +end diff --git a/script/c33981008.lua b/script/c33981008.lua index 8495717d..0b6dd706 100644 --- a/script/c33981008.lua +++ b/script/c33981008.lua @@ -1,80 +1,80 @@ ---魔導書院ラメイソン -function c33981008.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(33981008,0)) - e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCountLimit(1) - e2:SetCondition(c33981008.drcon) - e2:SetTarget(c33981008.drtg) - e2:SetOperation(c33981008.drop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(33981008,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c33981008.spcon) - e3:SetTarget(c33981008.sptg) - e3:SetOperation(c33981008.spop) - c:RegisterEffect(e3) -end -function c33981008.cfilter(c) - return c:IsRace(RACE_SPELLCASTER) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) -end -function c33981008.drcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and Duel.IsExistingMatchingCard(c33981008.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil) -end -function c33981008.filter(c) - return c:IsSetCard(0x106e) and c:GetCode()~=33981008 and c:IsType(TYPE_SPELL) and c:IsAbleToDeck() -end -function c33981008.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsExistingMatchingCard(c33981008.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_GRAVE) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c33981008.drop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,c33981008.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.HintSelection(g) - if g:GetCount()>0 and Duel.SendtoDeck(g,nil,1,REASON_EFFECT)>0 then - Duel.Draw(tp,1,REASON_EFFECT) - end -end -function c33981008.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_DESTROY) and not e:GetHandler():IsReason(REASON_RULE) and rp==1-tp -end -function c33981008.ctfilter(c) - return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) -end -function c33981008.spfilter(c,e,tp,lv) - return c:IsRace(RACE_SPELLCASTER) and c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c33981008.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end - local ct=Duel.GetMatchingGroupCount(c33981008.ctfilter,tp,LOCATION_GRAVE,0,nil) - return Duel.IsExistingMatchingCard(c33981008.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,ct) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) -end -function c33981008.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local ct=Duel.GetMatchingGroupCount(c33981008.ctfilter,tp,LOCATION_GRAVE,0,nil) - local g=Duel.SelectMatchingCard(tp,c33981008.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp,ct) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--魔導書院ラメイソン +function c33981008.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(33981008,0)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetCondition(c33981008.drcon) + e2:SetTarget(c33981008.drtg) + e2:SetOperation(c33981008.drop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(33981008,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c33981008.spcon) + e3:SetTarget(c33981008.sptg) + e3:SetOperation(c33981008.spop) + c:RegisterEffect(e3) +end +function c33981008.cfilter(c) + return c:IsRace(RACE_SPELLCASTER) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) +end +function c33981008.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.IsExistingMatchingCard(c33981008.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil) +end +function c33981008.filter(c) + return c:IsSetCard(0x106e) and c:GetCode()~=33981008 and c:IsType(TYPE_SPELL) and c:IsAbleToDeck() +end +function c33981008.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsExistingMatchingCard(c33981008.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c33981008.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c33981008.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.HintSelection(g) + if g:GetCount()>0 and Duel.SendtoDeck(g,nil,1,REASON_EFFECT)>0 then + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c33981008.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) and not e:GetHandler():IsReason(REASON_RULE) and rp==1-tp +end +function c33981008.ctfilter(c) + return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) +end +function c33981008.spfilter(c,e,tp,lv) + return c:IsRace(RACE_SPELLCASTER) and c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c33981008.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + local ct=Duel.GetMatchingGroupCount(c33981008.ctfilter,tp,LOCATION_GRAVE,0,nil) + return Duel.IsExistingMatchingCard(c33981008.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,ct) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c33981008.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local ct=Duel.GetMatchingGroupCount(c33981008.ctfilter,tp,LOCATION_GRAVE,0,nil) + local g=Duel.SelectMatchingCard(tp,c33981008.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp,ct) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c34016756.lua b/script/c34016756.lua index 8df317c4..d76ccb82 100644 --- a/script/c34016756.lua +++ b/script/c34016756.lua @@ -1,43 +1,43 @@ ---フォース -function c34016756.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c34016756.target) - e1:SetOperation(c34016756.activate) - c:RegisterEffect(e1) -end -function c34016756.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,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(34016756,0)) - local g1=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - e:SetLabelObject(g1:GetFirst()) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(34016756,1)) - local g2=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,g1:GetFirst()) -end -function c34016756.activate(e,tp,eg,ep,ev,re,r,rp) - local hc=e:GetLabelObject() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local tc=g:GetFirst() - if tc==hc then tc=g:GetNext() end - if hc:IsFaceup() and hc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - local atk=hc:GetAttack() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(atk/2) - if hc:RegisterEffect(e1) then - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(atk/2) - tc:RegisterEffect(e2) - end - end -end +--フォース +function c34016756.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c34016756.target) + e1:SetOperation(c34016756.activate) + c:RegisterEffect(e1) +end +function c34016756.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,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(34016756,0)) + local g1=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(34016756,1)) + local g2=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,g1:GetFirst()) +end +function c34016756.activate(e,tp,eg,ep,ev,re,r,rp) + local hc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if tc==hc then tc=g:GetNext() end + if hc:IsFaceup() and hc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=hc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk/2) + if hc:RegisterEffect(e1) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(atk/2) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c34026662.lua b/script/c34026662.lua index e99f2b04..70aa4d1a 100644 --- a/script/c34026662.lua +++ b/script/c34026662.lua @@ -1,35 +1,35 @@ ---進化の奇跡 -function c34026662.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c34026662.target) - e1:SetOperation(c34026662.activate) - c:RegisterEffect(e1) -end -function c34026662.filter(c) - local st=c:GetSummonType() - return c:IsFaceup() and st>=(SUMMON_TYPE_SPECIAL+150) and st<(SUMMON_TYPE_SPECIAL+180) -end -function c34026662.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c34026662.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c34026662.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c34026662.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c34026662.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - tc:RegisterEffect(e2) - end -end +--進化の奇跡 +function c34026662.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c34026662.target) + e1:SetOperation(c34026662.activate) + c:RegisterEffect(e1) +end +function c34026662.filter(c) + local st=c:GetSummonType() + return c:IsFaceup() and st>=(SUMMON_TYPE_SPECIAL+150) and st<(SUMMON_TYPE_SPECIAL+180) +end +function c34026662.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c34026662.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c34026662.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c34026662.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c34026662.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e2) + end +end diff --git a/script/c3405259.lua b/script/c3405259.lua index 36918096..060f1688 100644 --- a/script/c3405259.lua +++ b/script/c3405259.lua @@ -51,7 +51,8 @@ function c3405259.initial_effect(c) c:RegisterEffect(e6) end function c3405259.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) + local ct1,ct2=c:GetUnionCount() + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) and ct2==0 end function c3405259.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) local c=e:GetHandler() @@ -72,7 +73,7 @@ function c3405259.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c3405259.sptg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() diff --git a/script/c34079868.lua b/script/c34079868.lua index d00c4f14..cf92954b 100644 --- a/script/c34079868.lua +++ b/script/c34079868.lua @@ -71,8 +71,7 @@ function c34079868.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c34079868.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c34086406.lua b/script/c34086406.lua index 9799f2bb..8a7efc42 100644 --- a/script/c34086406.lua +++ b/script/c34086406.lua @@ -7,6 +7,7 @@ function c34086406.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(34086406,1)) e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) @@ -18,6 +19,7 @@ function c34086406.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(34086406,2)) e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e2:SetCost(c34086406.cost) diff --git a/script/c34088136.lua b/script/c34088136.lua index 05d0fae8..c8558f7f 100644 --- a/script/c34088136.lua +++ b/script/c34088136.lua @@ -1,72 +1,72 @@ ---アルティメット・インセクト LV3 -function c34088136.initial_effect(c) - --atk down - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetCondition(c34088136.con) - e1:SetValue(-300) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(34088136,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCondition(c34088136.spcon) - e2:SetCost(c34088136.spcost) - e2:SetTarget(c34088136.sptg) - e2:SetOperation(c34088136.spop) - c:RegisterEffect(e2) - --reg - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetOperation(c34088136.regop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EVENT_FLIP) - c:RegisterEffect(e5) -end -c34088136.lvupcount=2 -c34088136.lvup={49441499,34830502} -c34088136.lvdncount=1 -c34088136.lvdn={49441499} -function c34088136.con(e) - return e:GetHandler():GetFlagEffect(34088136)~=0 -end -function c34088136.regop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(34088137,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) -end -function c34088136.spcon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(34088137)==0 -end -function c34088136.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c34088136.spfilter(c,e,tp) - return c:IsCode(34830502) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) -end -function c34088136.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c34088136.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c34088136.spop(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,c34088136.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) - tc:RegisterFlagEffect(34830502,RESET_EVENT+0x16e0000,0,0) - tc:CompleteProcedure() - end -end +--アルティメット・インセクト LV3 +function c34088136.initial_effect(c) + --atk down + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCondition(c34088136.con) + e1:SetValue(-300) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(34088136,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c34088136.spcon) + e2:SetCost(c34088136.spcost) + e2:SetTarget(c34088136.sptg) + e2:SetOperation(c34088136.spop) + c:RegisterEffect(e2) + --reg + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetOperation(c34088136.regop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_FLIP) + c:RegisterEffect(e5) +end +c34088136.lvupcount=2 +c34088136.lvup={49441499,34830502} +c34088136.lvdncount=1 +c34088136.lvdn={49441499} +function c34088136.con(e) + return e:GetHandler():GetFlagEffect(34088136)~=0 +end +function c34088136.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(34088137,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end +function c34088136.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(34088137)==0 +end +function c34088136.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c34088136.spfilter(c,e,tp) + return c:IsCode(34830502) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c34088136.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c34088136.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c34088136.spop(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,c34088136.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) + tc:RegisterFlagEffect(34830502,RESET_EVENT+0x16e0000,0,0) + tc:CompleteProcedure() + end +end diff --git a/script/c34103656.lua b/script/c34103656.lua index 519fddb6..47c228fc 100644 --- a/script/c34103656.lua +++ b/script/c34103656.lua @@ -1,59 +1,59 @@ ---忘却の都 レミューリア -function c34103656.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk/def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetValue(200) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --lv - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(34103656,0)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_FZONE) - e4:SetCountLimit(1) - e4:SetTarget(c34103656.lvtg) - e4:SetOperation(c34103656.lvop) - c:RegisterEffect(e4) -end -function c34103656.cfilter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:GetLevel()>0 -end -function c34103656.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c34103656.cfilter,tp,LOCATION_MZONE,0,1,nil) end -end -function c34103656.lvfilter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) -end -function c34103656.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - local lv=Duel.GetMatchingGroupCount(c34103656.lvfilter,tp,LOCATION_MZONE,0,nil) - local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) - local mg,fid=g:GetMaxGroup(Card.GetFieldID) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetRange(LOCATION_FZONE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c34103656.efftg) - e1:SetValue(lv) - e1:SetLabel(fid) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end -function c34103656.efftg(e,c) - return c:GetFieldID()<=e:GetLabel() and c:IsAttribute(ATTRIBUTE_WATER) and c:GetLevel()>0 -end +--忘却の都 レミューリア +function c34103656.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk/def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(200) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --lv + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(34103656,0)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetCountLimit(1) + e4:SetTarget(c34103656.lvtg) + e4:SetOperation(c34103656.lvop) + c:RegisterEffect(e4) +end +function c34103656.cfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:GetLevel()>0 +end +function c34103656.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c34103656.cfilter,tp,LOCATION_MZONE,0,1,nil) end +end +function c34103656.lvfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c34103656.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local lv=Duel.GetMatchingGroupCount(c34103656.lvfilter,tp,LOCATION_MZONE,0,nil) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local mg,fid=g:GetMaxGroup(Card.GetFieldID) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetRange(LOCATION_FZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c34103656.efftg) + e1:SetValue(lv) + e1:SetLabel(fid) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c34103656.efftg(e,c) + return c:GetFieldID()<=e:GetLabel() and c:IsAttribute(ATTRIBUTE_WATER) and c:GetLevel()>0 +end diff --git a/script/c34187685.lua b/script/c34187685.lua index d9c89644..173cb12b 100644 --- a/script/c34187685.lua +++ b/script/c34187685.lua @@ -1,55 +1,55 @@ ---ダブルアタック -function c34187685.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetLabel(0) - e1:SetCondition(c34187685.condition) - e1:SetCost(c34187685.cost) - e1:SetTarget(c34187685.target) - e1:SetOperation(c34187685.activate) - c:RegisterEffect(e1) -end -function c34187685.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c34187685.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - return true -end -function c34187685.filter1(c,tp) - local lv=c:GetOriginalLevel() - return lv>1 and c:IsDiscardable() and c:IsAbleToGraveAsCost() - and Duel.IsExistingTarget(c34187685.filter2,tp,LOCATION_MZONE,0,1,nil,lv) -end -function c34187685.filter2(c,lv) - return c:IsFaceup() and c:IsLevelBelow(lv-1) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) -end -function c34187685.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c34187685.filter2(chkc,e:GetLabel()) end - if chk==0 then - if e:GetLabel()~=1 then return false end - e:SetLabel(0) - return Duel.IsExistingMatchingCard(c34187685.filter1,tp,LOCATION_HAND,0,1,nil,tp) - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) - local cg=Duel.SelectMatchingCard(tp,c34187685.filter1,tp,LOCATION_HAND,0,1,1,nil,tp) - Duel.SendtoGrave(cg,REASON_DISCARD+REASON_COST) - local lv=cg:GetFirst():GetLevel() - e:SetLabel(lv) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c34187685.filter2,tp,LOCATION_MZONE,0,1,1,nil,lv) -end -function c34187685.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--ダブルアタック +function c34187685.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetLabel(0) + e1:SetCondition(c34187685.condition) + e1:SetCost(c34187685.cost) + e1:SetTarget(c34187685.target) + e1:SetOperation(c34187685.activate) + c:RegisterEffect(e1) +end +function c34187685.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c34187685.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c34187685.filter1(c,tp) + local lv=c:GetOriginalLevel() + return lv>1 and c:IsType(TYPE_MONSTER) and c:IsDiscardable() and c:IsAbleToGraveAsCost() + and Duel.IsExistingTarget(c34187685.filter2,tp,LOCATION_MZONE,0,1,nil,lv) +end +function c34187685.filter2(c,lv) + return c:IsFaceup() and c:IsLevelBelow(lv-1) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) +end +function c34187685.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c34187685.filter2(chkc,e:GetLabel()) end + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c34187685.filter1,tp,LOCATION_HAND,0,1,nil,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local cg=Duel.SelectMatchingCard(tp,c34187685.filter1,tp,LOCATION_HAND,0,1,1,nil,tp) + Duel.SendtoGrave(cg,REASON_DISCARD+REASON_COST) + local lv=cg:GetFirst():GetLevel() + e:SetLabel(lv) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c34187685.filter2,tp,LOCATION_MZONE,0,1,1,nil,lv) +end +function c34187685.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c3422200.lua b/script/c3422200.lua new file mode 100644 index 00000000..51830ef0 --- /dev/null +++ b/script/c3422200.lua @@ -0,0 +1,72 @@ +--水晶機巧-サルファフナー +function c3422200.initial_effect(c) + --special summon (hand/grave) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3422200,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetCountLimit(1,3422200) + e1:SetCost(c3422200.spcost) + e1:SetTarget(c3422200.sptg) + e1:SetOperation(c3422200.spop) + c:RegisterEffect(e1) + --Special Summon (deck) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(3422200,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetCountLimit(1,3422201) + e2:SetCondition(c3422200.spcon2) + e2:SetTarget(c3422200.sptg2) + e2:SetOperation(c3422200.spop2) + c:RegisterEffect(e2) +end +function c3422200.cfilter(c) + return c:IsSetCard(0xea) and not c:IsCode(3422200) and c:IsDiscardable() +end +function c3422200.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c3422200.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c3422200.cfilter,1,1,REASON_COST+REASON_DISCARD,e:GetHandler()) +end +function c3422200.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c3422200.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_ONFIELD,0,1,1,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 and c:IsLocation(LOCATION_HAND) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c3422200.spcon2(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c3422200.spfilter(c,e,tp) + return c:IsSetCard(0xea) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c3422200.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c3422200.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c3422200.spop2(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,c3422200.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c34230233.lua b/script/c34230233.lua index 1904d668..15e974bd 100644 --- a/script/c34230233.lua +++ b/script/c34230233.lua @@ -25,6 +25,7 @@ function c34230233.spfilter(c) end function c34230233.spcon(e,c) if c==nil then return true end + if c:IsHasEffect(EFFECT_NECRO_VALLEY) then return false end return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 and Duel.IsExistingMatchingCard(c34230233.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) end diff --git a/script/c34267821.lua b/script/c34267821.lua index 78813741..8fe4a12f 100644 --- a/script/c34267821.lua +++ b/script/c34267821.lua @@ -1,68 +1,68 @@ ---アーティファクト-ロンギヌス -function c34267821.initial_effect(c) - --set - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MONSTER_SSET) - e1:SetValue(TYPE_SPELL) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(34267821,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c34267821.spcon) - e2:SetTarget(c34267821.sptg) - e2:SetOperation(c34267821.spop) - c:RegisterEffect(e2) - --cannot remove - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(34267821,1)) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetRange(LOCATION_HAND+LOCATION_MZONE) - e3:SetCondition(c34267821.rmcon) - e3:SetCost(c34267821.rmcost) - e3:SetOperation(c34267821.rmop) - c:RegisterEffect(e3) -end -function c34267821.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) - and c:IsReason(REASON_DESTROY) and Duel.GetTurnPlayer()~=tp -end -function c34267821.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 c34267821.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end -function c34267821.rmcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c34267821.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c34267821.rmop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_REMOVE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,1) - e1:SetValue(1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - --30459350 chk - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(30459350) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end +--アーティファクト-ロンギヌス +function c34267821.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MONSTER_SSET) + e1:SetValue(TYPE_SPELL) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(34267821,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c34267821.spcon) + e2:SetTarget(c34267821.sptg) + e2:SetOperation(c34267821.spop) + c:RegisterEffect(e2) + --cannot remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(34267821,1)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_HAND+LOCATION_MZONE) + e3:SetCondition(c34267821.rmcon) + e3:SetCost(c34267821.rmcost) + e3:SetOperation(c34267821.rmop) + c:RegisterEffect(e3) +end +function c34267821.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) + and c:IsReason(REASON_DESTROY) and Duel.GetTurnPlayer()~=tp +end +function c34267821.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 c34267821.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c34267821.rmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c34267821.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c34267821.rmop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_REMOVE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + --30459350 chk + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(30459350) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c3428069.lua b/script/c3428069.lua index 5dbea0f5..efebe272 100644 --- a/script/c3428069.lua +++ b/script/c3428069.lua @@ -1,91 +1,91 @@ ---破壊剣の使い手-バスター・ブレイダー -function c3428069.initial_effect(c) - --Code - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetRange(LOCATION_MZONE+LOCATION_GRAVE) - e1:SetValue(78193831) - c:RegisterEffect(e1) - --Equip - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(3428069,0)) - e2:SetCategory(CATEGORY_EQUIP) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_DESTROYED) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c3428069.eqtg) - e2:SetOperation(c3428069.eqop) - c:RegisterEffect(e2) - --Destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(3428069,1)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCost(c3428069.descost) - e3:SetTarget(c3428069.destg) - e3:SetOperation(c3428069.desop) - c:RegisterEffect(e3) -end -function c3428069.filter(c,e,tp) - return c:IsType(TYPE_MONSTER) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==1-tp - and c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_EFFECT+REASON_BATTLE) and c:IsCanBeEffectTarget(e) and not c:IsForbidden() -end -function c3428069.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return eg:IsContains(chkc) and c3428069.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and eg:IsExists(c3428069.filter,1,nil,e,tp) end - local g=eg:Filter(c3428069.filter,nil,e,tp) - local tc=nil - if g:GetCount()>1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - tc=g:Select(tp,1,1,nil):GetFirst() - else - tc=g:GetFirst() - end - Duel.SetTargetCard(tc) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,tc,1,0,0) -end -function c3428069.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then - if not Duel.Equip(tp,tc,c,false) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c3428069.eqlimit) - tc:RegisterEffect(e1) - end -end -function c3428069.eqlimit(e,c) - return e:GetOwner()==c -end -function c3428069.tgfilter(c,tp) - return c:IsAbleToGraveAsCost() - and Duel.IsExistingMatchingCard(c3428069.desfilter,tp,0,LOCATION_MZONE,1,nil,c:GetRace()) -end -function c3428069.desfilter(c,rc) - return c:IsFaceup() and c:IsRace(rc) -end -function c3428069.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(c3428069.tgfilter,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,c3428069.tgfilter,1,1,nil,tp) - e:SetLabel(g:GetFirst():GetRace()) - Duel.SendtoGrave(g,REASON_COST) -end -function c3428069.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c3428069.desfilter,tp,0,LOCATION_MZONE,nil,e:GetLabel()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c3428069.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c3428069.desfilter,tp,0,LOCATION_MZONE,nil,e:GetLabel()) - Duel.Destroy(g,REASON_EFFECT) -end +--破壊剣の使い手-バスター・ブレイダー +function c3428069.initial_effect(c) + --Code + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetRange(LOCATION_MZONE+LOCATION_GRAVE) + e1:SetValue(78193831) + c:RegisterEffect(e1) + --Equip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(3428069,0)) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c3428069.eqtg) + e2:SetOperation(c3428069.eqop) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(3428069,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c3428069.descost) + e3:SetTarget(c3428069.destg) + e3:SetOperation(c3428069.desop) + c:RegisterEffect(e3) +end +function c3428069.filter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==1-tp + and c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_EFFECT+REASON_BATTLE) and c:IsCanBeEffectTarget(e) and not c:IsForbidden() +end +function c3428069.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) and c3428069.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and eg:IsExists(c3428069.filter,1,nil,e,tp) end + local g=eg:Filter(c3428069.filter,nil,e,tp) + local tc=nil + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + tc=g:Select(tp,1,1,nil):GetFirst() + else + tc=g:GetFirst() + end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,tc,1,0,0) +end +function c3428069.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c3428069.eqlimit) + tc:RegisterEffect(e1) + end +end +function c3428069.eqlimit(e,c) + return e:GetOwner()==c +end +function c3428069.tgfilter(c,tp) + return c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c3428069.desfilter,tp,0,LOCATION_MZONE,1,nil,c:GetRace()) +end +function c3428069.desfilter(c,rc) + return c:IsFaceup() and c:IsRace(rc) +end +function c3428069.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(c3428069.tgfilter,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,c3428069.tgfilter,1,1,nil,tp) + e:SetLabel(g:GetFirst():GetRace()) + Duel.SendtoGrave(g,REASON_COST) +end +function c3428069.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c3428069.desfilter,tp,0,LOCATION_MZONE,nil,e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c3428069.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c3428069.desfilter,tp,0,LOCATION_MZONE,nil,e:GetLabel()) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c3429238.lua b/script/c3429238.lua index 43665d2d..8ec93b09 100644 --- a/script/c3429238.lua +++ b/script/c3429238.lua @@ -1,107 +1,107 @@ ---ドリル・ウォリアー -function c3429238.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c3429238.tfilter,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --direct attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(3429238,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c3429238.datcon) - e1:SetTarget(c3429238.dattg) - e1:SetOperation(c3429238.datop) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(3429238,1)) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c3429238.rmtg) - e2:SetOperation(c3429238.rmop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(3429238,2)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_REMOVED) - e3:SetCondition(c3429238.spcon) - e3:SetTarget(c3429238.sptg) - e3:SetOperation(c3429238.spop) - c:RegisterEffect(e3) -end -c3429238.material_setcode=0x17 -function c3429238.tfilter(c) - return c:IsCode(56286179) or c:IsHasEffect(20932152) -end -function c3429238.datcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 -end -function c3429238.dattg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end -function c3429238.datop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(c:GetAttack()/2) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DIRECT_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e2) - end -end -function c3429238.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 and e:GetHandler():IsAbleToRemove() end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) -end -function c3429238.rmop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) - local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_HAND,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) - if c:IsRelateToEffect(e) and Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT)~=0 then - e:GetHandler():RegisterFlagEffect(3429238,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,1) - end - end -end -function c3429238.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c3429238.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(3429238)~=0 end - e:GetHandler():ResetFlagEffect(3429238) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c3429238.filter(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c3429238.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c3429238.filter,tp,LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--ドリル・ウォリアー +function c3429238.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c3429238.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3429238,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c3429238.datcon) + e1:SetTarget(c3429238.dattg) + e1:SetOperation(c3429238.datop) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(3429238,1)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c3429238.rmtg) + e2:SetOperation(c3429238.rmop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(3429238,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_REMOVED) + e3:SetCondition(c3429238.spcon) + e3:SetTarget(c3429238.sptg) + e3:SetOperation(c3429238.spop) + c:RegisterEffect(e3) +end +c3429238.material_setcode=0x1017 +function c3429238.tfilter(c) + return c:IsCode(56286179) or c:IsHasEffect(20932152) +end +function c3429238.datcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c3429238.dattg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c3429238.datop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end +end +function c3429238.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 and e:GetHandler():IsAbleToRemove() end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c3429238.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + if c:IsRelateToEffect(e) and Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT)~=0 then + e:GetHandler():RegisterFlagEffect(3429238,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,1) + end + end +end +function c3429238.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c3429238.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(3429238)~=0 end + e:GetHandler():ResetFlagEffect(3429238) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c3429238.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c3429238.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c3429238.filter),tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c34302287.lua b/script/c34302287.lua new file mode 100644 index 00000000..91392fcb --- /dev/null +++ b/script/c34302287.lua @@ -0,0 +1,93 @@ +--幻煌龍の戦禍 +--Clashing Whirlpool of the Mythic Radiance Dragon +--Script by dest +function c34302287.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,0x1e0) + e1:SetCondition(c34302287.condition) + e1:SetTarget(c34302287.target) + e1:SetOperation(c34302287.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c34302287.handcon) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(34302287,0)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c34302287.eqcost) + e3:SetTarget(c34302287.eqtg) + e3:SetOperation(c34302287.eqop) + c:RegisterEffect(e3) +end +function c34302287.cfilter(c) + return c:IsFacedown() or not c:IsType(TYPE_NORMAL) +end +function c34302287.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 + and not Duel.IsExistingMatchingCard(c34302287.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c34302287.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c34302287.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c34302287.filter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c34302287.handcon(e) + return Duel.IsExistingMatchingCard(c34302287.filter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end +function c34302287.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c34302287.efilter(c,e) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsCanBeEffectTarget(e) +end +function c34302287.eqfilter(c,g) + return c:IsFaceup() and c:IsType(TYPE_EQUIP) and c:IsSetCard(0xfa) and g:IsExists(c34302287.eqcheck,1,nil,c) +end +function c34302287.eqcheck(c,ec) + return ec:CheckEquipTarget(c) +end +function c34302287.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetMatchingGroup(c34302287.efilter,tp,LOCATION_MZONE,0,nil,e) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c34302287.efilter(chkc,e) end + if chk==0 then return g:GetCount()>0 and Duel.IsExistingMatchingCard(c34302287.eqfilter,tp,LOCATION_SZONE,0,1,nil,g) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c34302287.efilter,tp,LOCATION_MZONE,0,1,1,nil,e) +end +function c34302287.eqop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=tg:GetFirst() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c34302287.eqfilter,tp,LOCATION_SZONE,0,nil,tg) + local eq=g:GetFirst() + while eq do + Duel.Equip(tp,eq,tc,true,true) + eq=g:GetNext() + end + Duel.EquipComplete() +end diff --git a/script/c3431737.lua b/script/c3431737.lua index 7c48946e..3d5dccf2 100644 --- a/script/c3431737.lua +++ b/script/c3431737.lua @@ -1,32 +1,32 @@ ---バスター・ビースト -function c3431737.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(3431737,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c3431737.cost) - e1:SetTarget(c3431737.target) - e1:SetOperation(c3431737.operation) - c:RegisterEffect(e1) -end -function c3431737.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c3431737.filter(c) - return c:IsCode(80280737) and c:IsAbleToHand() -end -function c3431737.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c3431737.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c3431737.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=Duel.GetFirstMatchingCard(c3431737.filter,tp,LOCATION_DECK,0,nil) - if tc then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--バスター・ビースト +function c3431737.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3431737,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c3431737.cost) + e1:SetTarget(c3431737.target) + e1:SetOperation(c3431737.operation) + c:RegisterEffect(e1) +end +function c3431737.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c3431737.filter(c) + return c:IsCode(80280737) and c:IsAbleToHand() +end +function c3431737.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c3431737.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c3431737.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstMatchingCard(c3431737.filter,tp,LOCATION_DECK,0,nil) + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c34325937.lua b/script/c34325937.lua index e670a311..02fcf626 100644 --- a/script/c34325937.lua +++ b/script/c34325937.lua @@ -3,7 +3,7 @@ function c34325937.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(34325937,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c34325937.target) @@ -24,7 +24,7 @@ function c34325937.initial_effect(c) c:RegisterEffect(e2) end function c34325937.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return not c:IsImmuneToEffect(e) end function c34325937.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0xe3) and (not f or f(c)) @@ -33,7 +33,7 @@ end function c34325937.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local mg1=Duel.GetFusionMaterial(tp) local res=Duel.IsExistingMatchingCard(c34325937.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) @@ -50,7 +50,7 @@ function c34325937.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c34325937.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c34325937.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c34325937.filter1,nil,e) local sg1=Duel.GetMatchingGroup(c34325937.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) local mg2=nil local sg2=nil diff --git a/script/c34358408.lua b/script/c34358408.lua index 7222cf4b..4210bc0b 100644 --- a/script/c34358408.lua +++ b/script/c34358408.lua @@ -1,41 +1,41 @@ ---儀式魔人プレサイダー -function c34358408.initial_effect(c) - --ritual material - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) - e1:SetValue(1) - c:RegisterEffect(e1) - --become material - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetCondition(c34358408.condition) - e2:SetOperation(c34358408.operation) - c:RegisterEffect(e2) -end -function c34358408.condition(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_RITUAL -end -function c34358408.operation(e,tp,eg,ep,ev,re,r,rp) - local rc=eg:GetFirst() - while rc do - if rc:GetFlagEffect(34358408)==0 then - --draw - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(34358408,0)) - e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetOperation(c34358408.drawop) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - rc:RegisterFlagEffect(34358408,RESET_EVENT+0x1fe0000,0,1) - end - rc=eg:GetNext() - end -end -function c34358408.drawop(e,tp,eg,ep,ev,re,r,rp) - Duel.Draw(tp,1,REASON_EFFECT) -end +--儀式魔人プレサイダー +function c34358408.initial_effect(c) + --ritual material + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) + e1:SetValue(1) + c:RegisterEffect(e1) + --become material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c34358408.condition) + e2:SetOperation(c34358408.operation) + c:RegisterEffect(e2) +end +function c34358408.condition(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RITUAL +end +function c34358408.operation(e,tp,eg,ep,ev,re,r,rp) + local rc=eg:GetFirst() + while rc do + if rc:GetFlagEffect(34358408)==0 then + --draw + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(34358408,0)) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetOperation(c34358408.drawop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + rc:RegisterFlagEffect(34358408,RESET_EVENT+0x1fe0000,0,1) + end + rc=eg:GetNext() + end +end +function c34358408.drawop(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c344000000.lua b/script/c344000000.lua new file mode 100644 index 00000000..1d10bdea --- /dev/null +++ b/script/c344000000.lua @@ -0,0 +1,22 @@ +--ガーベージ·ロード +function c344000000.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_SPSUM_PARAM+EFFECT_FLAG_UNCOPYABLE) + e1:SetTargetRange(POS_FACEUP_ATTACK,0) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c344000000.spcon) + e1:SetOperation(c344000000.spop) + c:RegisterEffect(e1) +end +function c344000000.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.CheckLPCost(c:GetControler(),1000) +end +function c344000000.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.PayLPCost(tp,1000) +end + diff --git a/script/c344000001.lua b/script/c344000001.lua new file mode 100644 index 00000000..16460f24 --- /dev/null +++ b/script/c344000001.lua @@ -0,0 +1,32 @@ +--ガーベージ·オーガ +function c344000001.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(344000001,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c344000001.cost) + e1:SetTarget(c344000001.target) + e1:SetOperation(c344000001.operation) + c:RegisterEffect(e1) +end +function c344000001.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c344000001.filter(c) + return c:IsCode(44682448) and c:IsAbleToHand() +end +function c344000001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c344000001.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c344000001.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c344000001.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c34460239.lua b/script/c34460239.lua index ae78b907..4f1fa07e 100644 --- a/script/c34460239.lua +++ b/script/c34460239.lua @@ -1,42 +1,42 @@ ---ジェネレーション・チェンジ -function c34460239.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c34460239.target) - e1:SetOperation(c34460239.activate) - c:RegisterEffect(e1) -end -function c34460239.filter(c,tp) - return c:IsFaceup() - and Duel.IsExistingMatchingCard(c34460239.nfilter1,tp,LOCATION_DECK,0,1,nil,c) -end -function c34460239.nfilter1(c,tc) - return c:IsCode(tc:GetCode()) and c:IsAbleToHand() -end -function c34460239.nfilter2(c,tc) - return c:IsCode(tc:GetPreviousCodeOnField()) and c:IsAbleToHand() -end -function c34460239.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c34460239.filter(chkc,tp) end - if chk==0 then return Duel.IsExistingTarget(c34460239.filter,tp,LOCATION_MZONE,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c34460239.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c34460239.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then - Duel.BreakEffect() - local g=Duel.SelectMatchingCard(tp,c34460239.nfilter2,tp,LOCATION_DECK,0,1,1,nil,tc) - local hc=g:GetFirst() - if hc then - Duel.SendtoHand(hc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,hc) - end - end -end +--ジェネレーション・チェンジ +function c34460239.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c34460239.target) + e1:SetOperation(c34460239.activate) + c:RegisterEffect(e1) +end +function c34460239.filter(c,tp) + return c:IsFaceup() + and Duel.IsExistingMatchingCard(c34460239.nfilter1,tp,LOCATION_DECK,0,1,nil,c) +end +function c34460239.nfilter1(c,tc) + return c:IsCode(tc:GetCode()) and c:IsAbleToHand() +end +function c34460239.nfilter2(c,tc) + return c:IsCode(tc:GetPreviousCodeOnField()) and c:IsAbleToHand() +end +function c34460239.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c34460239.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c34460239.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c34460239.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c34460239.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + local g=Duel.SelectMatchingCard(tp,c34460239.nfilter2,tp,LOCATION_DECK,0,1,1,nil,tc) + local hc=g:GetFirst() + if hc then + Duel.SendtoHand(hc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,hc) + end + end +end diff --git a/script/c34471458.lua b/script/c34471458.lua index e3797517..c33a5c8f 100644 --- a/script/c34471458.lua +++ b/script/c34471458.lua @@ -1,72 +1,72 @@ ---フォーチュンレディ・ライティー -function c34471458.initial_effect(c) - --atk,def - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(c34471458.value) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e2) - --level up - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(34471458,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCondition(c34471458.lvcon) - e3:SetOperation(c34471458.lvop) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(34471458,1)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c34471458.spcon) - e4:SetTarget(c34471458.sptg) - e4:SetOperation(c34471458.spop) - c:RegisterEffect(e4) -end -function c34471458.value(e,c) - return c:GetLevel()*200 -end -function c34471458.lvcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) -end -function c34471458.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c34471458.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_EFFECT) and not c:IsLocation(LOCATION_DECK) - and c:IsPreviousPosition(POS_FACEUP) -end -function c34471458.spfilter(c,e,tp) - return c:IsSetCard(0x31) and c:IsCanBeSpecialSummoned(e,0x8,tp,false,false) -end -function c34471458.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c34471458.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c34471458.spop(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,c34471458.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0x8,tp,tp,false,false,POS_FACEUP) - end -end +--フォーチュンレディ・ライティー +function c34471458.initial_effect(c) + --atk,def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c34471458.value) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) + --level up + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(34471458,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c34471458.lvcon) + e3:SetOperation(c34471458.lvop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(34471458,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c34471458.spcon) + e4:SetTarget(c34471458.sptg) + e4:SetOperation(c34471458.spop) + c:RegisterEffect(e4) +end +function c34471458.value(e,c) + return c:GetLevel()*200 +end +function c34471458.lvcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) +end +function c34471458.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c34471458.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) and not c:IsLocation(LOCATION_DECK) + and c:IsPreviousPosition(POS_FACEUP) +end +function c34471458.spfilter(c,e,tp) + return c:IsSetCard(0x31) and c:IsCanBeSpecialSummoned(e,0x8,tp,false,false) +end +function c34471458.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c34471458.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c34471458.spop(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,c34471458.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0x8,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c34487429.lua b/script/c34487429.lua index 60c46f49..e985e2a5 100644 --- a/script/c34487429.lua +++ b/script/c34487429.lua @@ -1,140 +1,139 @@ ---虹の古代都市-レインボー・ルイン -function c34487429.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e2:SetRange(LOCATION_FZONE) - e2:SetCondition(c34487429.desrepcon) - e2:SetValue(1) - c:RegisterEffect(e2) - --Negate - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(34487429,1)) - e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_CHAINING) - e3:SetRange(LOCATION_FZONE) - e3:SetCondition(c34487429.discon) - e3:SetCost(c34487429.discost) - e3:SetTarget(c34487429.distg) - e3:SetOperation(c34487429.disop) - c:RegisterEffect(e3) - --draw - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(34487429,2)) - e4:SetCategory(CATEGORY_DRAW) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_FZONE) - e4:SetCountLimit(1) - e4:SetCondition(c34487429.drcon) - e4:SetTarget(c34487429.drtg) - e4:SetOperation(c34487429.drop) - c:RegisterEffect(e4) - --special summon - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(34487429,3)) - e5:SetCategory(CATEGORY_SPECIAL_SUMMON) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_FZONE) - e5:SetCountLimit(1) - e5:SetCondition(c34487429.spcon) - e5:SetTarget(c34487429.sptg) - e5:SetOperation(c34487429.spop) - c:RegisterEffect(e5) - --damage reduce - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(34487429,0)) - e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e6:SetRange(LOCATION_FZONE) - e6:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e6:SetCondition(c34487429.rdcon) - e6:SetOperation(c34487429.rdop) - c:RegisterEffect(e6) -end -function c34487429.filter1(c) - return c:IsFaceup() and c:IsSetCard(0x1034) -end -function c34487429.desrepcon(e) - return Duel.IsExistingMatchingCard(c34487429.filter1,e:GetHandler():GetControler(),LOCATION_SZONE,0,1,nil) -end -function c34487429.discon(e,tp,eg,ep,ev,re,r,rp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) - and Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_SZONE,0,3,nil,0x1034) -end -function c34487429.filter2(c) - return c:IsFaceup() and c:IsSetCard(0x1034) and c:IsAbleToGraveAsCost() -end -function c34487429.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c34487429.filter2,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c34487429.filter2,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c34487429.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c34487429.disop(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,3,nil) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c34487429.drcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,4,nil) -end -function c34487429.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c34487429.drop(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,4,nil) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end -function c34487429.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,5,nil) -end -function c34487429.filter3(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x1034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c34487429.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c34487429.filter3(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c34487429.filter3,tp,LOCATION_SZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c34487429.filter3,tp,LOCATION_SZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c34487429.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if not Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,5,nil) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) - end -end -function c34487429.rdcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp and e:GetHandler():GetFlagEffect(34487429)==0 - and Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,2,nil) -end -function c34487429.rdop(e,tp,eg,ep,ev,re,r,rp) - if Duel.SelectEffectYesNo(tp,e:GetHandler()) then - Duel.ChangeBattleDamage(tp,ev/2) - e:GetHandler():RegisterFlagEffect(34487429,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - end -end +--虹の古代都市-レインボー・ルイン +function c34487429.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c34487429.desrepcon) + e2:SetValue(1) + c:RegisterEffect(e2) + --Negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(34487429,1)) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetRange(LOCATION_FZONE) + e3:SetCondition(c34487429.discon) + e3:SetCost(c34487429.discost) + e3:SetTarget(c34487429.distg) + e3:SetOperation(c34487429.disop) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(34487429,2)) + e4:SetCategory(CATEGORY_DRAW) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetCountLimit(1) + e4:SetCondition(c34487429.drcon) + e4:SetTarget(c34487429.drtg) + e4:SetOperation(c34487429.drop) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(34487429,3)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_FZONE) + e5:SetCountLimit(1) + e5:SetCondition(c34487429.spcon) + e5:SetTarget(c34487429.sptg) + e5:SetOperation(c34487429.spop) + c:RegisterEffect(e5) + --damage reduce + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(34487429,0)) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_FZONE) + e6:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e6:SetCondition(c34487429.rdcon) + e6:SetOperation(c34487429.rdop) + c:RegisterEffect(e6) +end +function c34487429.filter1(c) + return c:IsFaceup() and c:IsSetCard(0x1034) +end +function c34487429.desrepcon(e) + return Duel.IsExistingMatchingCard(c34487429.filter1,e:GetHandler():GetControler(),LOCATION_SZONE,0,1,nil) +end +function c34487429.discon(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) + and Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_SZONE,0,3,nil,0x1034) +end +function c34487429.filter2(c) + return c:IsFaceup() and c:IsSetCard(0x1034) and c:IsAbleToGraveAsCost() +end +function c34487429.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c34487429.filter2,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c34487429.filter2,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c34487429.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c34487429.disop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,3,nil) then return end + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c34487429.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,4,nil) +end +function c34487429.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c34487429.drop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,4,nil) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c34487429.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,5,nil) +end +function c34487429.filter3(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x1034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c34487429.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c34487429.filter3(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c34487429.filter3,tp,LOCATION_SZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c34487429.filter3,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c34487429.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,5,nil) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end +function c34487429.rdcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and e:GetHandler():GetFlagEffect(34487429)==0 + and Duel.IsExistingMatchingCard(c34487429.filter1,tp,LOCATION_SZONE,0,2,nil) +end +function c34487429.rdop(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectEffectYesNo(tp,e:GetHandler()) then + Duel.ChangeBattleDamage(tp,ev/2) + e:GetHandler():RegisterFlagEffect(34487429,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end diff --git a/script/c34496660.lua b/script/c34496660.lua new file mode 100644 index 00000000..317ead50 --- /dev/null +++ b/script/c34496660.lua @@ -0,0 +1,63 @@ +--超重武者ダイ-8 +function c34496660.initial_effect(c) + --position + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34496660,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c34496660.postg) + e1:SetOperation(c34496660.posop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --defense attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DEFENSE_ATTACK) + e3:SetValue(1) + c:RegisterEffect(e3) + --search + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(34496660,1)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1,34496660) + e4:SetCondition(c34496660.thcon) + e4:SetTarget(c34496660.thtg) + e4:SetOperation(c34496660.thop) + c:RegisterEffect(e4) +end +function c34496660.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c34496660.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end +function c34496660.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPosition(POS_FACEUP_DEFENSE) + and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) +end +function c34496660.thfilter(c) + return c:IsSetCard(0x109a) and c:IsAbleToHand() +end +function c34496660.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c34496660.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c34496660.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or Duel.ChangePosition(c,POS_FACEUP_ATTACK)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c34496660.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c34507039.lua b/script/c34507039.lua index 92f3a291..bad33f0c 100644 --- a/script/c34507039.lua +++ b/script/c34507039.lua @@ -22,8 +22,7 @@ function c34507039.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c34507039.activate(e,tp,eg,ep,ev,re,r,rp) local ec=re:GetHandler() - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then ec:CancelToGrave() Duel.SendtoDeck(ec,nil,2,REASON_EFFECT) end diff --git a/script/c34545235.lua b/script/c34545235.lua index 6292fef8..bec48159 100644 --- a/script/c34545235.lua +++ b/script/c34545235.lua @@ -32,8 +32,7 @@ function c34545235.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c34545235.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c34550857.lua b/script/c34550857.lua new file mode 100644 index 00000000..a27ebbdf --- /dev/null +++ b/script/c34550857.lua @@ -0,0 +1,64 @@ +--LL-コバルト・スパロー +--Lyrical Luscinia - Cobalt Sparrow +--Scripted by Eerie Code +function c34550857.initial_effect(c) + --Search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34550857,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,34550857) + e1:SetTarget(c34550857.thtg) + e1:SetOperation(c34550857.thop) + c:RegisterEffect(e1) + --effect gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c34550857.efcon) + e2:SetOperation(c34550857.efop) + c:RegisterEffect(e2) +end +function c34550857.thfilter(c) + return c:IsRace(RACE_WINDBEAST) and c:GetLevel()==1 and c:IsAbleToHand() +end +function c34550857.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c34550857.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c34550857.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c34550857.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c34550857.efcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return r==REASON_XYZ and c:GetReasonCard():IsAttribute(ATTRIBUTE_WIND) +end +function c34550857.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local p=rc:GetControler() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(34550857,1)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT+EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(aux.tgoval) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end diff --git a/script/c34566435.lua b/script/c34566435.lua index 74175040..f6bad126 100644 --- a/script/c34566435.lua +++ b/script/c34566435.lua @@ -1,39 +1,39 @@ ---エッジインプ・DTモドキ -function c34566435.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(34566435,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,34566435) - e1:SetTarget(c34566435.target) - e1:SetOperation(c34566435.operation) - c:RegisterEffect(e1) -end -function c34566435.filter(c) - return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsType(TYPE_FUSION) and c:IsSetCard(0xad) -end -function c34566435.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) and c34566435.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c34566435.filter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c34566435.filter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil) -end -function c34566435.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and (tc:IsLocation(LOCATION_GRAVE) or tc:IsFaceup()) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(tc:GetBaseAttack()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetValue(tc:GetBaseDefense()) - c:RegisterEffect(e2) - end -end +--エッジインプ・DTモドキ +function c34566435.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34566435,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,34566435) + e1:SetTarget(c34566435.target) + e1:SetOperation(c34566435.operation) + c:RegisterEffect(e1) +end +function c34566435.filter(c) + return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsType(TYPE_FUSION) and c:IsSetCard(0xad) +end +function c34566435.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) and c34566435.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c34566435.filter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c34566435.filter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil) +end +function c34566435.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and (tc:IsLocation(LOCATION_GRAVE) or tc:IsFaceup()) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(tc:GetBaseDefense()) + c:RegisterEffect(e2) + end +end diff --git a/script/c34568403.lua b/script/c34568403.lua index a5533c0a..f21d8a90 100644 --- a/script/c34568403.lua +++ b/script/c34568403.lua @@ -1,65 +1,65 @@ ---アルカナフォースⅦ-THE CHARIOT -function c34568403.initial_effect(c) - --coin - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(34568403,0)) - e1:SetCategory(CATEGORY_COIN) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c34568403.cointg) - e1:SetOperation(c34568403.coinop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c34568403.cointg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) -end -function c34568403.coinop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local res=0 - if c:IsHasEffect(73206827) then - res=1-Duel.SelectOption(tp,60,61) - else res=Duel.TossCoin(tp,1) end - c34568403.arcanareg(c,res) - if res==0 then - Duel.GetControl(c,1-tp) - end -end -function c34568403.arcanareg(c,coin) - --coin effect - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(34568403,1)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(c34568403.spcon) - e1:SetTarget(c34568403.sptg) - e1:SetOperation(c34568403.spop) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) -end -function c34568403.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:GetFlagEffectLabel(36690018)==1 and c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) -end -function c34568403.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=e:GetHandler():GetBattleTarget() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and tc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetTargetCard(tc) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) -end -function c34568403.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetBattleTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--アルカナフォースⅦ-THE CHARIOT +function c34568403.initial_effect(c) + --coin + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34568403,0)) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c34568403.cointg) + e1:SetOperation(c34568403.coinop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c34568403.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c34568403.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local res=0 + if c:IsHasEffect(73206827) then + res=1-Duel.SelectOption(tp,60,61) + else res=Duel.TossCoin(tp,1) end + c34568403.arcanareg(c,res) + if res==0 then + Duel.GetControl(c,1-tp) + end +end +function c34568403.arcanareg(c,coin) + --coin effect + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34568403,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c34568403.spcon) + e1:SetTarget(c34568403.sptg) + e1:SetOperation(c34568403.spop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) +end +function c34568403.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetFlagEffectLabel(36690018)==1 and c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) +end +function c34568403.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetHandler():GetBattleTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and tc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) +end +function c34568403.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c34614289.lua b/script/c34614289.lua index 027d9882..7acd5b2a 100644 --- a/script/c34614289.lua +++ b/script/c34614289.lua @@ -1,67 +1,67 @@ ---U.A.ストロングブロッカー -function c34614289.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,34614289) - e1:SetCondition(c34614289.spcon) - e1:SetOperation(c34614289.spop) - c:RegisterEffect(e1) - --position change - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DISABLE+CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c34614289.postg) - e2:SetOperation(c34614289.posop) - c:RegisterEffect(e2) -end -function c34614289.spfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(34614289) and c:IsAbleToHandAsCost() -end -function c34614289.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c34614289.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c34614289.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectMatchingCard(tp,c34614289.spfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoHand(g,nil,REASON_COST) -end -function c34614289.filter(c,sp) - return c:GetSummonPlayer()==sp -end -function c34614289.postg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c34614289.filter,1,nil,1-tp) end - local g=eg:Filter(c34614289.filter,nil,1-tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) -end -function c34614289.posop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) - local og=Duel.GetOperatedGroup() - local tc=og:GetFirst() - while tc do - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - tc=og:GetNext() - end -end +--U.A.ストロングブロッカー +function c34614289.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,34614289) + e1:SetCondition(c34614289.spcon) + e1:SetOperation(c34614289.spop) + c:RegisterEffect(e1) + --position change + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE+CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c34614289.postg) + e2:SetOperation(c34614289.posop) + c:RegisterEffect(e2) +end +function c34614289.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(34614289) and c:IsAbleToHandAsCost() +end +function c34614289.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c34614289.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c34614289.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c34614289.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c34614289.filter(c,sp) + return c:GetSummonPlayer()==sp +end +function c34614289.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c34614289.filter,1,nil,1-tp) end + local g=eg:Filter(c34614289.filter,nil,1-tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) +end +function c34614289.posop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + local og=Duel.GetOperatedGroup() + local tc=og:GetFirst() + while tc do + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=og:GetNext() + end +end diff --git a/script/c34627841.lua b/script/c34627841.lua index e173b11b..1252b29c 100644 --- a/script/c34627841.lua +++ b/script/c34627841.lua @@ -1,33 +1,33 @@ ---正義の味方 カイバーマン -function c34627841.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(34627841,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c34627841.spcost) - e1:SetTarget(c34627841.sptg) - e1:SetOperation(c34627841.spop) - c:RegisterEffect(e1) -end -function c34627841.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c34627841.filter(c,e,tp) - return c:IsCode(89631139) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c34627841.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c34627841.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c34627841.spop(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,c34627841.filter,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 c34627841.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34627841,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c34627841.spcost) + e1:SetTarget(c34627841.sptg) + e1:SetOperation(c34627841.spop) + c:RegisterEffect(e1) +end +function c34627841.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c34627841.filter(c,e,tp) + return c:IsCode(89631139) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c34627841.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c34627841.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c34627841.spop(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,c34627841.filter,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 diff --git a/script/c34664411.lua b/script/c34664411.lua index 6e32589d..32fbb92c 100644 --- a/script/c34664411.lua +++ b/script/c34664411.lua @@ -1,27 +1,12 @@ --幸運の鉄斧 function c34664411.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(c34664411.target) - e1:SetOperation(c34664411.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk,def local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(500) c:RegisterEffect(e2) - --Equip limit - local e3=Effect.CreateEffect(c) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_EQUIP_LIMIT) - e3:SetValue(1) - c:RegisterEffect(e3) --draw local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(34664411,0)) @@ -34,19 +19,6 @@ function c34664411.initial_effect(c) e4:SetOperation(c34664411.drop) c:RegisterEffect(e4) end -function c34664411.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 c34664411.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 c34664411.drcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return bit.band(r,0x41)==0x41 and rp~=tp and c:GetPreviousControler()==tp diff --git a/script/c34680482.lua b/script/c34680482.lua index d66de152..18d15e82 100644 --- a/script/c34680482.lua +++ b/script/c34680482.lua @@ -1,88 +1,88 @@ ---マドルチェ・エンジェリー -function c34680482.initial_effect(c) - --to deck - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(34680482,0)) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c34680482.retcon) - e1:SetTarget(c34680482.rettg) - e1:SetOperation(c34680482.retop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(34680482,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,34680482) - e2:SetCost(c34680482.spcost) - e2:SetTarget(c34680482.sptg) - e2:SetOperation(c34680482.spop) - c:RegisterEffect(e2) -end -function c34680482.retcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():GetReasonPlayer()~=tp - and e:GetHandler():GetPreviousControler()==tp -end -function c34680482.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c34680482.retop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) - end -end -function c34680482.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c34680482.filter(c,e,tp) - return c:IsSetCard(0x71) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c34680482.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c34680482.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c34680482.spop(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,c34680482.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - local c=e:GetHandler() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(34680482,RESET_EVENT+0x1fe0000,0,1,Duel.GetTurnCount()) - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(34680482,2)) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetLabel(Duel.GetTurnCount()) - e2:SetLabelObject(tc) - e2:SetCondition(c34680482.tdcon) - e2:SetOperation(c34680482.tdop) - e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - e2:SetCountLimit(1) - Duel.RegisterEffect(e2,tp) - end -end -function c34680482.tdcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - return Duel.GetTurnCount()~=e:GetLabel() and Duel.GetTurnPlayer()==tp and tc:GetFlagEffectLabel(34680482)==e:GetLabel() -end -function c34680482.tdop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.Hint(HINT_CARD,0,34680482) - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) -end +--マドルチェ・エンジェリー +function c34680482.initial_effect(c) + --to deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34680482,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c34680482.retcon) + e1:SetTarget(c34680482.rettg) + e1:SetOperation(c34680482.retop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(34680482,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,34680482) + e2:SetCost(c34680482.spcost) + e2:SetTarget(c34680482.sptg) + e2:SetOperation(c34680482.spop) + c:RegisterEffect(e2) +end +function c34680482.retcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():GetReasonPlayer()~=tp + and e:GetHandler():GetPreviousControler()==tp +end +function c34680482.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c34680482.retop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) + end +end +function c34680482.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c34680482.filter(c,e,tp) + return c:IsSetCard(0x71) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c34680482.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c34680482.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c34680482.spop(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,c34680482.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + local c=e:GetHandler() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(34680482,RESET_EVENT+0x1fe0000,0,1,Duel.GetTurnCount()) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34680482,2)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetLabel(Duel.GetTurnCount()) + e2:SetLabelObject(tc) + e2:SetCondition(c34680482.tdcon) + e2:SetOperation(c34680482.tdop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + e2:SetCountLimit(1) + Duel.RegisterEffect(e2,tp) + end +end +function c34680482.tdcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return Duel.GetTurnCount()~=e:GetLabel() and Duel.GetTurnPlayer()==tp and tc:GetFlagEffectLabel(34680482)==e:GetLabel() +end +function c34680482.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Hint(HINT_CARD,0,34680482) + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) +end diff --git a/script/c34707034.lua b/script/c34707034.lua index c98ce829..ed5df7b9 100644 --- a/script/c34707034.lua +++ b/script/c34707034.lua @@ -24,9 +24,8 @@ function c34707034.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,3,0,0) end function c34707034.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()==0 then return end + if g:GetCount()==0 or (g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.SendtoHand(sg1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg1) + end +end diff --git a/script/c34796454.lua b/script/c34796454.lua index 262ab08f..50174e62 100644 --- a/script/c34796454.lua +++ b/script/c34796454.lua @@ -3,6 +3,7 @@ function c34796454.initial_effect(c) --to grave local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c34796454.regop) c:RegisterEffect(e1) diff --git a/script/c34822850.lua b/script/c34822850.lua index df581ada..e263e67e 100644 --- a/script/c34822850.lua +++ b/script/c34822850.lua @@ -1,73 +1,73 @@ ---煉獄の氾爛 -function c34822850.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCountLimit(1) - e2:SetCondition(c34822850.spcon) - e2:SetTarget(c34822850.sptg) - e2:SetOperation(c34822850.spop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_HAND+LOCATION_GRAVE,0) - e3:SetTarget(c34822850.efftg) - e3:SetCode(34822850) - c:RegisterEffect(e3) - --cannot be target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e4:SetRange(LOCATION_FZONE) - e4:SetTargetRange(0,LOCATION_MZONE) - e4:SetValue(c34822850.atlimit) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e5:SetRange(LOCATION_FZONE) - e5:SetTargetRange(LOCATION_MZONE,0) - e5:SetTarget(c34822850.tglimit) - e5:SetValue(aux.tgoval) - c:RegisterEffect(e5) -end -function c34822850.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c34822850.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,34822851,0xbb,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_FIRE) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c34822850.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) - or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,34822851,0xbb,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_FIRE) then return end - local token=Duel.CreateToken(tp,34822851) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) -end -function c34822850.efftg(e,c) - return c:IsSetCard(0xbb) -end -function c34822850.filter(c,lv) - return c:IsFaceup() and c:IsSetCard(0xbb) and c:GetLevel()>lv -end -function c34822850.atlimit(e,c) - return c:IsFaceup() and c:IsSetCard(0xbb) and Duel.IsExistingMatchingCard(c34822850.filter,c:GetControler(),LOCATION_MZONE,0,1,nil,c:GetLevel()) -end -function c34822850.tglimit(e,c) - return c:IsSetCard(0xbb) - and Duel.IsExistingMatchingCard(c34822850.filter,c:GetControler(),LOCATION_MZONE,0,1,nil,c:GetLevel()) -end +--煉獄の氾爛 +function c34822850.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetCondition(c34822850.spcon) + e2:SetTarget(c34822850.sptg) + e2:SetOperation(c34822850.spop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_HAND+LOCATION_GRAVE,0) + e3:SetTarget(c34822850.efftg) + e3:SetCode(34822850) + c:RegisterEffect(e3) + --cannot be target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetValue(c34822850.atlimit) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetRange(LOCATION_FZONE) + e5:SetTargetRange(LOCATION_MZONE,0) + e5:SetTarget(c34822850.tglimit) + e5:SetValue(aux.tgoval) + c:RegisterEffect(e5) +end +function c34822850.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c34822850.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,34822851,0xbb,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_FIRE) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c34822850.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) + or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,34822851,0xbb,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_FIRE) then return end + local token=Duel.CreateToken(tp,34822851) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end +function c34822850.efftg(e,c) + return c:IsSetCard(0xbb) +end +function c34822850.filter(c,lv) + return c:IsFaceup() and c:IsSetCard(0xbb) and c:GetLevel()>lv +end +function c34822850.atlimit(e,c) + return c:IsFaceup() and c:IsSetCard(0xbb) and Duel.IsExistingMatchingCard(c34822850.filter,c:GetControler(),LOCATION_MZONE,0,1,nil,c:GetLevel()) +end +function c34822850.tglimit(e,c) + return c:IsSetCard(0xbb) + and Duel.IsExistingMatchingCard(c34822850.filter,c:GetControler(),LOCATION_MZONE,0,1,nil,c:GetLevel()) +end diff --git a/script/c34830502.lua b/script/c34830502.lua index 91d66468..60379ab8 100644 --- a/script/c34830502.lua +++ b/script/c34830502.lua @@ -1,72 +1,72 @@ ---アルティメット・インセクト LV5 -function c34830502.initial_effect(c) - --atk down - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetCondition(c34830502.con) - e1:SetValue(-500) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(34830502,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCondition(c34830502.spcon) - e2:SetCost(c34830502.spcost) - e2:SetTarget(c34830502.sptg) - e2:SetOperation(c34830502.spop) - c:RegisterEffect(e2) - --reg - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetOperation(c34830502.regop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EVENT_FLIP) - c:RegisterEffect(e5) -end -c34830502.lvupcount=2 -c34830502.lvup={34088136,19877898} -c34830502.lvdncount=2 -c34830502.lvdn={49441499,34088136} -function c34830502.con(e) - return e:GetHandler():GetFlagEffect(34830502)~=0 -end -function c34830502.regop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(34830503,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) -end -function c34830502.spcon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(34830503)==0 -end -function c34830502.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c34830502.spfilter(c,e,tp) - return c:IsCode(19877898) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) -end -function c34830502.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c34830502.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c34830502.spop(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,c34830502.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) - tc:RegisterFlagEffect(19877898,RESET_EVENT+0x16e0000,0,0) - tc:CompleteProcedure() - end -end +--アルティメット・インセクト LV5 +function c34830502.initial_effect(c) + --atk down + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCondition(c34830502.con) + e1:SetValue(-500) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(34830502,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c34830502.spcon) + e2:SetCost(c34830502.spcost) + e2:SetTarget(c34830502.sptg) + e2:SetOperation(c34830502.spop) + c:RegisterEffect(e2) + --reg + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetOperation(c34830502.regop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_FLIP) + c:RegisterEffect(e5) +end +c34830502.lvupcount=2 +c34830502.lvup={34088136,19877898} +c34830502.lvdncount=2 +c34830502.lvdn={49441499,34088136} +function c34830502.con(e) + return e:GetHandler():GetFlagEffect(34830502)~=0 +end +function c34830502.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(34830503,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end +function c34830502.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(34830503)==0 +end +function c34830502.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c34830502.spfilter(c,e,tp) + return c:IsCode(19877898) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c34830502.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c34830502.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c34830502.spop(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,c34830502.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) + tc:RegisterFlagEffect(19877898,RESET_EVENT+0x16e0000,0,0) + tc:CompleteProcedure() + end +end diff --git a/script/c34834619.lua b/script/c34834619.lua index b3fdd1e1..f22c6d78 100644 --- a/script/c34834619.lua +++ b/script/c34834619.lua @@ -1,49 +1,49 @@ ---光子竜降臨 -function c34834619.initial_effect(c) - aux.AddRitualProcEqualCode(c,85346853) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(34834619,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCost(c34834619.spcost) - e1:SetTarget(c34834619.sptg) - e1:SetOperation(c34834619.spop) - c:RegisterEffect(e1) -end -function c34834619.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c34834619.mtfilter(c,e) - return c:GetLevel()>0 and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) -end -function c34834619.spfilter(c,e,tp,m) - return c:IsCode(85346853) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) - and m:CheckWithSumEqual(Card.GetRitualLevel,4,1,99,c) -end -function c34834619.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end - local mg=Duel.GetMatchingGroup(c34834619.mtfilter,tp,LOCATION_GRAVE,0,e:GetHandler(),e) - return Duel.IsExistingMatchingCard(c34834619.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,mg) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c34834619.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local mg=Duel.GetMatchingGroup(c34834619.mtfilter,tp,LOCATION_GRAVE,0,nil,e) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c34834619.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg) - local tc=g:GetFirst() - if tc then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,4,1,99,tc) - tc:SetMaterial(mat) - Duel.ReleaseRitualMaterial(mat) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) - tc:CompleteProcedure() - end -end +--光子竜降臨 +function c34834619.initial_effect(c) + aux.AddRitualProcEqualCode(c,85346853) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34834619,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c34834619.spcost) + e1:SetTarget(c34834619.sptg) + e1:SetOperation(c34834619.spop) + c:RegisterEffect(e1) +end +function c34834619.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c34834619.mtfilter(c,e) + return c:GetLevel()>0 and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c34834619.spfilter(c,e,tp,m) + return c:IsCode(85346853) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) + and m:CheckWithSumEqual(Card.GetRitualLevel,4,1,99,c) +end +function c34834619.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + local mg=Duel.GetMatchingGroup(c34834619.mtfilter,tp,LOCATION_GRAVE,0,e:GetHandler(),e) + return Duel.IsExistingMatchingCard(c34834619.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c34834619.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local mg=Duel.GetMatchingGroup(c34834619.mtfilter,tp,LOCATION_GRAVE,0,nil,e) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c34834619.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg) + local tc=g:GetFirst() + if tc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,4,1,99,tc) + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c3492538.lua b/script/c3492538.lua index 704d9a87..e8b3162f 100644 --- a/script/c3492538.lua +++ b/script/c3492538.lua @@ -1,44 +1,13 @@ --火器付機甲鎧 function c3492538.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(c3492538.target) - e1:SetOperation(c3492538.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c3492538.filter) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(700) c:RegisterEffect(e2) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c3492538.eqlimit) - c:RegisterEffect(e4) -end -function c3492538.eqlimit(e,c) - return c:IsRace(RACE_INSECT) end function c3492538.filter(c) - return c:IsFaceup() and c:IsRace(RACE_INSECT) -end -function c3492538.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c3492538.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c3492538.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c3492538.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c3492538.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 + return c:IsRace(RACE_INSECT) end diff --git a/script/c3493978.lua b/script/c3493978.lua index ab46872e..c32f50a9 100644 --- a/script/c3493978.lua +++ b/script/c3493978.lua @@ -24,6 +24,7 @@ end function c3493978.operation(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=Duel.SelectMatchingCard(tp,c3493978.filter,tp,LOCATION_HAND,0,1,ft,nil,e,tp) if g:GetCount()>0 then diff --git a/script/c34945480.lua b/script/c34945480.lua index de987c49..8c190615 100644 --- a/script/c34945480.lua +++ b/script/c34945480.lua @@ -21,6 +21,7 @@ function c34945480.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(34945480,0)) e3:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) e3:SetCondition(c34945480.condition) diff --git a/script/c35011819.lua b/script/c35011819.lua index 883f913c..b487fb62 100644 --- a/script/c35011819.lua +++ b/script/c35011819.lua @@ -58,7 +58,7 @@ function c35011819.target2(e,tp,eg,ep,ev,re,r,rp,chk) end function c35011819.activate2(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) + if not Duel.NegateActivation(ev) then return end local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) Duel.Draw(p,d,REASON_EFFECT) end diff --git a/script/c35035481.lua b/script/c35035481.lua index d70b94c6..3649f25c 100644 --- a/script/c35035481.lua +++ b/script/c35035481.lua @@ -1,76 +1,76 @@ ---버제스토마 올레노이데스 -function c35035481.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c35035481.target) - e1:SetOperation(c35035481.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c35035481.spcon) - e2:SetTarget(c35035481.sptg) - e2:SetOperation(c35035481.spop) - c:RegisterEffect(e2) -end -function c35035481.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c35035481.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c35035481.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c35035481.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c35035481.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c35035481.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c35035481.spcon(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c35035481.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(35035481)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,35035481,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end - c:RegisterFlagEffect(35035481,RESET_CHAIN,0,1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c35035481.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,35035481,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c35035481.efilter) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetReset(RESET_EVENT+0x47e0000) - e3:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c35035481.efilter(e,re) - return re:IsActiveType(TYPE_MONSTER) -end +--バージェストマ・オレノイデス +function c35035481.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c35035481.target) + e1:SetOperation(c35035481.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c35035481.spcon) + e2:SetTarget(c35035481.sptg) + e2:SetOperation(c35035481.spop) + c:RegisterEffect(e2) +end +function c35035481.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c35035481.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c35035481.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c35035481.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c35035481.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c35035481.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c35035481.spcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c35035481.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(35035481)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,35035481,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end + c:RegisterFlagEffect(35035481,RESET_CHAIN,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c35035481.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,35035481,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c35035481.efilter) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c35035481.efilter(e,re) + return re:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c35058588.lua b/script/c35058588.lua index 3d6de16f..11b89745 100644 --- a/script/c35058588.lua +++ b/script/c35058588.lua @@ -39,7 +39,7 @@ function c35058588.atkop(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local tc=g:GetFirst() if tc==hc then tc=g:GetNext() end - if tc:IsFaceup() and tc:IsRelateToEffect(e) then + if tc:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SET_ATTACK_FINAL) diff --git a/script/c35059553.lua b/script/c35059553.lua index 350b07c9..31786f14 100644 --- a/script/c35059553.lua +++ b/script/c35059553.lua @@ -32,12 +32,13 @@ end function c35059553.sumlimit(e,c) local tp=e:GetHandlerPlayer() if c:IsControler(1-tp) then - local mi,ma=c:GetTributeRequirement() + local mint,maxt=c:GetTributeRequirement() local x=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) local y=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE) - if ma==2 then return x0 then ex=1 end + return y-maxt+ex+1 > x-ex else return false end diff --git a/script/c35112613.lua b/script/c35112613.lua index 59fd958d..15347500 100644 --- a/script/c35112613.lua +++ b/script/c35112613.lua @@ -1,60 +1,60 @@ ---クリフォトン -function c35112613.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(35112613,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c35112613.cost) - e1:SetOperation(c35112613.operation) - c:RegisterEffect(e1) - --salvage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(35112613,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,35112613) - e2:SetCost(c35112613.thcost) - e2:SetTarget(c35112613.thtg) - e2:SetOperation(c35112613.thop) - c:RegisterEffect(e2) -end -function c35112613.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,2000) and e:GetHandler():IsAbleToGraveAsCost() end - Duel.PayLPCost(tp,2000) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c35112613.operation(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(0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end -function c35112613.cfilter(c) - return c:IsSetCard(0x55) and c:IsType(TYPE_MONSTER) and c:GetCode()~=35112613 and c:IsAbleToGraveAsCost() -end -function c35112613.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c35112613.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c35112613.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c35112613.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c35112613.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--クリフォトン +function c35112613.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35112613,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c35112613.cost) + e1:SetOperation(c35112613.operation) + c:RegisterEffect(e1) + --salvage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35112613,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,35112613) + e2:SetCost(c35112613.thcost) + e2:SetTarget(c35112613.thtg) + e2:SetOperation(c35112613.thop) + c:RegisterEffect(e2) +end +function c35112613.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) and e:GetHandler():IsAbleToGraveAsCost() end + Duel.PayLPCost(tp,2000) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c35112613.operation(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(0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c35112613.cfilter(c) + return c:IsSetCard(0x55) and c:IsType(TYPE_MONSTER) and c:GetCode()~=35112613 and c:IsAbleToGraveAsCost() +end +function c35112613.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c35112613.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c35112613.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c35112613.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c35112613.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c35125879.lua b/script/c35125879.lua new file mode 100644 index 00000000..5d86fc78 --- /dev/null +++ b/script/c35125879.lua @@ -0,0 +1,149 @@ +--真竜皇の復活 +--Revival of the True King +--Script by nekrozar +function c35125879.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c35125879.target) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35125879,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,35125879) + e2:SetCost(c35125879.cost) + e2:SetTarget(c35125879.sptg) + e2:SetOperation(c35125879.spop) + c:RegisterEffect(e2) + --tribute summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(35125879,1)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(0,TIMING_MAIN_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,35125880) + e3:SetCondition(c35125879.sumcon) + e3:SetCost(c35125879.cost) + e3:SetTarget(c35125879.sumtg) + e3:SetOperation(c35125879.sumop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(35125879,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,35125881) + e4:SetCondition(c35125879.descon) + e4:SetTarget(c35125879.destg) + e4:SetOperation(c35125879.desop) + c:RegisterEffect(e4) +end +function c35125879.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c35125879.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return true end + local b1=c35125879.sptg(e,tp,eg,ep,ev,re,r,rp,0) + local b2=c35125879.sumcon(e,tp,eg,ep,ev,re,r,rp) and c35125879.sumtg(e,tp,eg,ep,ev,re,r,rp,0) + if (b1 or b2) and Duel.SelectYesNo(tp,94) then + local op=0 + if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(35125879,0),aux.Stringid(35125879,1)) + elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(35125879,0)) + else op=Duel.SelectOption(tp,aux.Stringid(35125879,1))+1 end + if op==0 then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c35125879.spop) + c35125879.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(CATEGORY_SUMMON) + e:SetProperty(0) + e:SetOperation(c35125879.sumop) + c35125879.sumtg(e,tp,eg,ep,ev,re,r,rp,1) + end + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c35125879.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) end +end +function c35125879.spfilter(c,e,tp) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE) +end +function c35125879.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c35125879.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c35125879.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetFlagEffect(tp,35125879)==0 end + Duel.RegisterFlagEffect(tp,35125879,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c35125879.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c35125879.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) +end +function c35125879.sumcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c35125879.sumfilter(c) + return (c:IsSetCard(0x1f9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsSummonable(true,nil,1) +end +function c35125879.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c35125879.sumfilter,tp,LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(tp,35125880)==0 end + Duel.RegisterFlagEffect(tp,35125880,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c35125879.sumop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c35125879.sumfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil,1) + end +end +function c35125879.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c35125879.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c35125879.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c35220244.lua b/script/c35220244.lua index 41296d19..dad97b1b 100644 --- a/script/c35220244.lua +++ b/script/c35220244.lua @@ -1,21 +1,6 @@ --重力砲 function c35220244.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(c35220244.target) - e1:SetOperation(c35220244.operation) - c:RegisterEffect(e1) - --Equip limit - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EQUIP_LIMIT) - e2:SetValue(c35220244.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE)) --atkup local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(35220244,0)) @@ -33,25 +18,6 @@ function c35220244.initial_effect(c) e4:SetOperation(c35220244.disop) c:RegisterEffect(e4) end -function c35220244.eqlimit(e,c) - return c:IsRace(RACE_MACHINE) -end -function c35220244.eqfilter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) -end -function c35220244.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c35220244.eqfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c35220244.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c35220244.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c35220244.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 c35220244.atkop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local ec=c:GetEquipTarget() diff --git a/script/c35255456.lua b/script/c35255456.lua index 5a860ca5..848721e7 100644 --- a/script/c35255456.lua +++ b/script/c35255456.lua @@ -13,7 +13,7 @@ function c35255456.filter1(c,e) return c:IsAbleToDeck() and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) end function c35255456.filter2(c,e,tp,m,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x3008) and c:IsSetCard(0x9) and c:GetCode()~=31111109 + return c:IsSetCard(0x3008) and aux.IsMaterialListCode(c,89943723) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and c:CheckFusionMaterial(m,nil,chkf) end function c35255456.target(e,tp,eg,ep,ev,re,r,rp,chk) @@ -29,14 +29,13 @@ function c35255456.cffilter(c) end function c35255456.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg=Duel.GetMatchingGroup(c35255456.filter1,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local mg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c35255456.filter1),tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) local sg=Duel.GetMatchingGroup(c35255456.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg,chkf) if sg:GetCount()>0 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local tg=sg:Select(tp,1,1,nil) local tc=tg:GetFirst() local mat=Duel.SelectFusionMaterial(tp,tc,mg,nil,chkf) - if mat:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end local cf=mat:Filter(c35255456.cffilter,nil) if cf:GetCount()>0 then Duel.ConfirmCards(1-tp,cf) diff --git a/script/c35261759.lua b/script/c35261759.lua index cb3ca990..68936f56 100644 --- a/script/c35261759.lua +++ b/script/c35261759.lua @@ -14,7 +14,7 @@ function c35261759.initial_effect(c) end function c35261759.cost(e,tp,eg,ep,ev,re,r,rp,chk) local g=Duel.GetDecktopGroup(tp,10) - if chk==0 then return g:FilterCount(Card.IsAbleToRemove,nil)==10 + if chk==0 then return g:FilterCount(Card.IsAbleToRemoveAsCost,nil)==10 and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=12 end Duel.DisableShuffleCheck() Duel.Remove(g,POS_FACEDOWN,REASON_COST) diff --git a/script/c35272499.lua b/script/c35272499.lua new file mode 100644 index 00000000..8f344263 --- /dev/null +++ b/script/c35272499.lua @@ -0,0 +1,45 @@ +--捕食植物オフリス・スコーピオ +--Predaplant Ophrys Scorpio +--Script by dest +function c35272499.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35272499,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,35272499) + e1:SetCost(c35272499.spcost) + e1:SetTarget(c35272499.sptg) + e1:SetOperation(c35272499.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c35272499.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c35272499.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c35272499.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c35272499.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c35272499.spfilter(c,e,tp) + return c:IsSetCard(0x10f3) and not c:IsCode(35272499) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c35272499.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c35272499.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c35272499.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c35272499.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c35307484.lua b/script/c35307484.lua index 425f8579..4fa60d5c 100644 --- a/script/c35307484.lua +++ b/script/c35307484.lua @@ -1,53 +1,53 @@ ---マリスボラス・スプーン -function c35307484.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(35307484,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,35307484) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCondition(c35307484.condition) - e1:SetTarget(c35307484.target) - e1:SetOperation(c35307484.operation) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c35307484.cfilter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsSetCard(0x8b) and c:GetCode()~=35307484 -end -function c35307484.condition(e,tp,eg,ep,ev,re,r,rp) - return not eg:IsContains(e:GetHandler()) and eg:IsExists(c35307484.cfilter,1,nil,tp) -end -function c35307484.spfilter(c,e,tp) - return c:GetLevel()==2 and c:IsRace(RACE_FIEND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c35307484.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c35307484.spfilter(chkc,e,tp) end - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c35307484.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c35307484.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c35307484.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - end -end +--マリスボラス・スプーン +function c35307484.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35307484,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,35307484) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c35307484.condition) + e1:SetTarget(c35307484.target) + e1:SetOperation(c35307484.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c35307484.cfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsSetCard(0x8b) and c:GetCode()~=35307484 +end +function c35307484.condition(e,tp,eg,ep,ev,re,r,rp) + return not eg:IsContains(e:GetHandler()) and eg:IsExists(c35307484.cfilter,1,nil,tp) +end +function c35307484.spfilter(c,e,tp) + return c:GetLevel()==2 and c:IsRace(RACE_FIEND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c35307484.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c35307484.spfilter(chkc,e,tp) end + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c35307484.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c35307484.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c35307484.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c35330871.lua b/script/c35330871.lua index 7953cec0..a74b0613 100644 --- a/script/c35330871.lua +++ b/script/c35330871.lua @@ -1,88 +1,88 @@ ---彼岸の鬼神 ヘルレイカー -function c35330871.initial_effect(c) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetValue(aux.ritlimit) - c:RegisterEffect(e1) - --atk & def down - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e2:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) - e2:SetCountLimit(1) - e2:SetCondition(c35330871.atkcon) - e2:SetCost(c35330871.atkcost) - e2:SetTarget(c35330871.atktg) - e2:SetOperation(c35330871.atkop) - c:RegisterEffect(e2) - --to grave - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOGRAVE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCondition(c35330871.tgcon) - e3:SetTarget(c35330871.tgtg) - e3:SetOperation(c35330871.tgop) - c:RegisterEffect(e3) -end -function c35330871.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c35330871.cfilter(c) - return c:IsSetCard(0xb1) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() -end -function c35330871.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c35330871.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c35330871.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) - e:SetLabelObject(g:GetFirst()) -end -function c35330871.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c35330871.atkop(e,tp,eg,ep,ev,re,r,rp) - local cc=e:GetLabelObject() - local atk=cc:GetAttack() - local def=cc:GetDefense() - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(-atk) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - e2:SetValue(-def) - tc:RegisterEffect(e2) - end -end -function c35330871.tgcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c35330871.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsAbleToGrave() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToGrave,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToGrave,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) -end -function c35330871.tgop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoGrave(tc,REASON_EFFECT) - end -end +--彼岸の鬼神 ヘルレイカー +function c35330871.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(aux.ritlimit) + c:RegisterEffect(e1) + --atk & def down + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) + e2:SetCountLimit(1) + e2:SetCondition(c35330871.atkcon) + e2:SetCost(c35330871.atkcost) + e2:SetTarget(c35330871.atktg) + e2:SetOperation(c35330871.atkop) + c:RegisterEffect(e2) + --to grave + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c35330871.tgcon) + e3:SetTarget(c35330871.tgtg) + e3:SetOperation(c35330871.tgop) + c:RegisterEffect(e3) +end +function c35330871.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c35330871.cfilter(c) + return c:IsSetCard(0xb1) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c35330871.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c35330871.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c35330871.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + e:SetLabelObject(g:GetFirst()) +end +function c35330871.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c35330871.atkop(e,tp,eg,ep,ev,re,r,rp) + local cc=e:GetLabelObject() + local atk=cc:GetAttack() + local def=cc:GetDefense() + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(-atk) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(-def) + tc:RegisterEffect(e2) + end +end +function c35330871.tgcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c35330871.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsAbleToGrave() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToGrave,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToGrave,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c35330871.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT) + end +end diff --git a/script/c35448319.lua b/script/c35448319.lua index c0c72fed..73123e8f 100644 --- a/script/c35448319.lua +++ b/script/c35448319.lua @@ -1,70 +1,70 @@ ---除草獣 -function c35448319.initial_effect(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(35448319,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c35448319.cost) - e1:SetTarget(c35448319.target) - e1:SetOperation(c35448319.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(35448319,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_DESTROYED) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c35448319.spcon) - e2:SetTarget(c35448319.sptg) - e2:SetOperation(c35448319.spop) - c:RegisterEffect(e2) -end -function c35448319.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_PLANT) end - local sg=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,RACE_PLANT) - Duel.Release(sg,REASON_COST) -end -function c35448319.filter(c) - return c:IsFaceup() -end -function c35448319.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c35448319.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c35448319.filter,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c35448319.filter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c35448319.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c35448319.spfilter(c) - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and bit.band(c:GetPreviousRaceOnField(),RACE_PLANT)~=0 -end -function c35448319.spcon(e,tp,eg,ep,ev,re,r,rp) - return not eg:IsContains(e:GetHandler()) and eg:IsExists(c35448319.spfilter,1,nil) -end -function c35448319.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c35448319.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1,true) - end -end +--除草獣 +function c35448319.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35448319,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c35448319.cost) + e1:SetTarget(c35448319.target) + e1:SetOperation(c35448319.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35448319,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c35448319.spcon) + e2:SetTarget(c35448319.sptg) + e2:SetOperation(c35448319.spop) + c:RegisterEffect(e2) +end +function c35448319.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_PLANT) end + local sg=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,RACE_PLANT) + Duel.Release(sg,REASON_COST) +end +function c35448319.filter(c) + return c:IsFaceup() +end +function c35448319.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c35448319.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c35448319.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c35448319.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c35448319.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c35448319.spfilter(c) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and bit.band(c:GetPreviousRaceOnField(),RACE_PLANT)~=0 +end +function c35448319.spcon(e,tp,eg,ep,ev,re,r,rp) + return not eg:IsContains(e:GetHandler()) and eg:IsExists(c35448319.spfilter,1,nil) +end +function c35448319.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c35448319.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + end +end diff --git a/script/c35480699.lua b/script/c35480699.lua index 8034310d..ea2585bb 100644 --- a/script/c35480699.lua +++ b/script/c35480699.lua @@ -1,39 +1,39 @@ ---皆既日蝕の書 -function c35480699.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - e1:SetTarget(c35480699.target) - e1:SetOperation(c35480699.activate) - c:RegisterEffect(e1) -end -function c35480699.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c35480699.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()>0 then - Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetCondition(c35480699.flipcon) - e1:SetOperation(c35480699.flipop) - Duel.RegisterEffect(e1,tp) -end -function c35480699.flipcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(Card.IsFacedown,tp,0,LOCATION_MZONE,1,nil) -end -function c35480699.flipop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_MZONE,nil) - local ct=Duel.ChangePosition(g,POS_FACEUP_DEFENSE) - Duel.Draw(1-tp,ct,REASON_EFFECT) -end +--皆既日蝕の書 +function c35480699.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c35480699.target) + e1:SetOperation(c35480699.activate) + c:RegisterEffect(e1) +end +function c35480699.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c35480699.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCondition(c35480699.flipcon) + e1:SetOperation(c35480699.flipop) + Duel.RegisterEffect(e1,tp) +end +function c35480699.flipcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsFacedown,tp,0,LOCATION_MZONE,1,nil) +end +function c35480699.flipop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_MZONE,nil) + local ct=Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + Duel.Draw(1-tp,ct,REASON_EFFECT) +end diff --git a/script/c35494087.lua b/script/c35494087.lua new file mode 100644 index 00000000..c71edcc9 --- /dev/null +++ b/script/c35494087.lua @@ -0,0 +1,62 @@ +--SRビードロ・ドクロ +--Speedroid Vidroskull +--Script by nekrozar +function c35494087.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35494087,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1) + e1:SetCondition(c35494087.spcon) + e1:SetTarget(c35494087.sptg) + e1:SetOperation(c35494087.spop) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c35494087.indval) + c:RegisterEffect(e2) + --battle damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e3:SetValue(1) + c:RegisterEffect(e3) + --self destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c35494087.sdcon) + c:RegisterEffect(e4) +end +function c35494087.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(aux.FilterEqualFunction(Card.GetSummonLocation,LOCATION_EXTRA),tp,0,LOCATION_MZONE,1,nil) +end +function c35494087.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c35494087.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c35494087.indval(e,c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_NORMAL)~=0 +end +function c35494087.sdfilter(c) + return c:IsFaceup() and not c:IsSetCard(0x2016) +end +function c35494087.sdcon(e) + return Duel.IsExistingMatchingCard(c35494087.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c35514096.lua b/script/c35514096.lua index 3a291f8c..830544e6 100644 --- a/script/c35514096.lua +++ b/script/c35514096.lua @@ -1,72 +1,72 @@ ---ロードブリティッシュ -function c35514096.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(35514096,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(c35514096.condition) - e1:SetTarget(c35514096.target) - e1:SetOperation(c35514096.operation) - c:RegisterEffect(e1) -end -function c35514096.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) -end -function c35514096.filter(c) - return c:IsFacedown() -end -function c35514096.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c35514096.filter(chkc) end - if chk==0 then return true end - local c=e:GetHandler() - local t1=c:IsChainAttackable() - local t2=Duel.IsExistingTarget(c35514096.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) - local t3=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,35514097,0,0x4011,1200,1200,4,RACE_MACHINE,ATTRIBUTE_LIGHT) - local op=0 - if t1 or t2 or t3 then - local m={} - local n={} - local ct=1 - if t1 then m[ct]=aux.Stringid(35514096,1) n[ct]=1 ct=ct+1 end - if t2 then m[ct]=aux.Stringid(35514096,2) n[ct]=2 ct=ct+1 end - if t3 then m[ct]=aux.Stringid(35514096,3) n[ct]=3 ct=ct+1 end - local sp=Duel.SelectOption(tp,table.unpack(m)) - op=n[sp+1] - end - e:SetLabel(op) - if op==2 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c35514096.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - e:SetCategory(CATEGORY_DESTROY) - elseif op==3 then - e:SetProperty(0) - e:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - else - e:SetProperty(0) - e:SetCategory(0) - end -end -function c35514096.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if e:GetLabel()==2 then - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end - elseif e:GetLabel()==3 then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,35514097,0,0x4011,1200,1200,4,RACE_MACHINE,ATTRIBUTE_LIGHT) then return end - local token=Duel.CreateToken(tp,35514097) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) - elseif e:GetLabel()==1 then - if c:IsRelateToBattle() then - Duel.ChainAttack() - end - end -end +--ロードブリティッシュ +function c35514096.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35514096,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c35514096.condition) + e1:SetTarget(c35514096.target) + e1:SetOperation(c35514096.operation) + c:RegisterEffect(e1) +end +function c35514096.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c35514096.filter(c) + return c:IsFacedown() +end +function c35514096.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c35514096.filter(chkc) end + if chk==0 then return true end + local c=e:GetHandler() + local t1=c:IsChainAttackable() + local t2=Duel.IsExistingTarget(c35514096.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + local t3=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,35514097,0,0x4011,1200,1200,4,RACE_MACHINE,ATTRIBUTE_LIGHT) + local op=0 + if t1 or t2 or t3 then + local m={} + local n={} + local ct=1 + if t1 then m[ct]=aux.Stringid(35514096,1) n[ct]=1 ct=ct+1 end + if t2 then m[ct]=aux.Stringid(35514096,2) n[ct]=2 ct=ct+1 end + if t3 then m[ct]=aux.Stringid(35514096,3) n[ct]=3 ct=ct+1 end + local sp=Duel.SelectOption(tp,table.unpack(m)) + op=n[sp+1] + end + e:SetLabel(op) + if op==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c35514096.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetCategory(CATEGORY_DESTROY) + elseif op==3 then + e:SetProperty(0) + e:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + else + e:SetProperty(0) + e:SetCategory(0) + end +end +function c35514096.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==2 then + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + elseif e:GetLabel()==3 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,35514097,0,0x4011,1200,1200,4,RACE_MACHINE,ATTRIBUTE_LIGHT) then return end + local token=Duel.CreateToken(tp,35514097) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + elseif e:GetLabel()==1 then + if c:IsRelateToBattle() then + Duel.ChainAttack() + end + end +end diff --git a/script/c35544402.lua b/script/c35544402.lua index 58fa7e82..2a703c2c 100644 --- a/script/c35544402.lua +++ b/script/c35544402.lua @@ -1,66 +1,66 @@ ---ティンクル・セイクリッド -function c35544402.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(35544402,0)) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c35544402.target) - e1:SetOperation(c35544402.operation) - c:RegisterEffect(e1) - --salvage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(35544402,1)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,35544402) - e2:SetCost(c35544402.thcost) - e2:SetTarget(c35544402.thtg) - e2:SetOperation(c35544402.thop) - c:RegisterEffect(e2) -end -function c35544402.filter(c) - return c:IsFaceup() and c:IsSetCard(0x53) and c:GetLevel()>0 -end -function c35544402.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c35544402.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c35544402.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c35544402.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c35544402.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetReset(RESET_EVENT+0x1fe0000) - if Duel.SelectOption(tp,aux.Stringid(35544402,2),aux.Stringid(35544402,3))==0 then - e1:SetValue(1) - else e1:SetValue(2) end - tc:RegisterEffect(e1) - end -end -function c35544402.thfilter(c) - return c:IsSetCard(0x53) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c35544402.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c35544402.thfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c35544402.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c35544402.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c35544402.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,c) - end -end +--ティンクル・セイクリッド +function c35544402.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35544402,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c35544402.target) + e1:SetOperation(c35544402.operation) + c:RegisterEffect(e1) + --salvage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35544402,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,35544402) + e2:SetCost(c35544402.thcost) + e2:SetTarget(c35544402.thtg) + e2:SetOperation(c35544402.thop) + c:RegisterEffect(e2) +end +function c35544402.filter(c) + return c:IsFaceup() and c:IsSetCard(0x53) and c:GetLevel()>0 +end +function c35544402.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c35544402.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c35544402.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c35544402.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c35544402.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + if Duel.SelectOption(tp,aux.Stringid(35544402,2),aux.Stringid(35544402,3))==0 then + e1:SetValue(1) + else e1:SetValue(2) end + tc:RegisterEffect(e1) + end +end +function c35544402.thfilter(c) + return c:IsSetCard(0x53) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c35544402.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c35544402.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c35544402.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c35544402.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c35544402.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c35561352.lua b/script/c35561352.lua index 5dec8704..62081c12 100644 --- a/script/c35561352.lua +++ b/script/c35561352.lua @@ -31,8 +31,7 @@ function c35561352.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c35561352.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c35618217.lua b/script/c35618217.lua new file mode 100644 index 00000000..296eaf8a --- /dev/null +++ b/script/c35618217.lua @@ -0,0 +1,91 @@ +--月光彩雛 +function c35618217.initial_effect(c) + --fusion name + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35618217,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c35618217.cost) + e1:SetOperation(c35618217.operation) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35618217,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,35618217) + e2:SetCondition(c35618217.thcon) + e2:SetTarget(c35618217.thtg) + e2:SetOperation(c35618217.thop) + c:RegisterEffect(e2) + --activate limit + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(35618217,2)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_REMOVE) + e3:SetOperation(c35618217.actop) + c:RegisterEffect(e3) +end +function c35618217.costfilter(c,ec) + return c:IsSetCard(0xdf) and not c:IsFusionCode(ec:GetFusionCode()) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c35618217.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c35618217.costfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,nil,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local cg=Duel.SelectMatchingCard(tp,c35618217.costfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,1,nil,c) + Duel.SendtoGrave(cg,REASON_COST) + e:SetLabel(cg:GetFirst():GetCode()) +end +function c35618217.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_FUSION_CODE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(e:GetLabel()) + c:RegisterEffect(e1) +end +function c35618217.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c35618217.thfilter(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c35618217.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c35618217.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c35618217.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c35618217.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c35618217.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c35618217.actop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetCondition(c35618217.actcon) + e1:SetValue(c35618217.actlimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c35618217.actcon(e) + local ph=Duel.GetCurrentPhase() + return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE +end +function c35618217.actlimit(e,re,tp) + return not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c35629124.lua b/script/c35629124.lua index ccda19af..d431ae76 100644 --- a/script/c35629124.lua +++ b/script/c35629124.lua @@ -1,57 +1,57 @@ ---コドモドラゴン -function c35629124.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(35629124,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCountLimit(1,35629124) - e1:SetCost(c35629124.spcost) - e1:SetTarget(c35629124.sptg) - e1:SetOperation(c35629124.spop) - c:RegisterEffect(e1) - Duel.AddCustomActivityCounter(35629124,ACTIVITY_SPSUMMON,c35629124.counterfilter) -end -function c35629124.counterfilter(c) - return c:IsRace(RACE_DRAGON) -end -function c35629124.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 - and Duel.GetCustomActivityCount(35629124,tp,ACTIVITY_SPSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetReset(RESET_PHASE+PHASE_END) - e2:SetTargetRange(1,0) - e2:SetTarget(c35629124.sumlimit) - Duel.RegisterEffect(e2,tp) -end -function c35629124.sumlimit(e,c) - return c:GetRace()~=RACE_DRAGON -end -function c35629124.filter(c,e,tp) - return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c35629124.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c35629124.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c35629124.spop(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,c35629124.filter,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 c35629124.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35629124,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCountLimit(1,35629124) + e1:SetCost(c35629124.spcost) + e1:SetTarget(c35629124.sptg) + e1:SetOperation(c35629124.spop) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(35629124,ACTIVITY_SPSUMMON,c35629124.counterfilter) +end +function c35629124.counterfilter(c) + return c:IsRace(RACE_DRAGON) +end +function c35629124.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 + and Duel.GetCustomActivityCount(35629124,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetTargetRange(1,0) + e2:SetTarget(c35629124.sumlimit) + Duel.RegisterEffect(e2,tp) +end +function c35629124.sumlimit(e,c) + return c:GetRace()~=RACE_DRAGON +end +function c35629124.filter(c,e,tp) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c35629124.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c35629124.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c35629124.spop(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,c35629124.filter,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 diff --git a/script/c35638627.lua b/script/c35638627.lua index e97d729d..c0f409e6 100644 --- a/script/c35638627.lua +++ b/script/c35638627.lua @@ -1,48 +1,46 @@ ---ワーム・ウォーロード -function c35638627.initial_effect(c) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --Disable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_BATTLED) - e2:SetOperation(c35638627.disop) - c:RegisterEffect(e2) - --chain attack - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(35638627,0)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLED) - e3:SetCondition(c35638627.atcon) - e3:SetOperation(c35638627.atop) - c:RegisterEffect(e3) -end -function c35638627.disop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttackTarget() - local c=e:GetHandler() - if c==tc then tc=Duel.GetAttacker() end - if tc and tc:IsType(TYPE_EFFECT) and tc:IsStatus(STATUS_BATTLE_DESTROYED) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x17a0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x17a0000) - tc:RegisterEffect(e2) - end -end -function c35638627.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) -end -function c35638627.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--ワーム・ウォーロード +function c35638627.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --Disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetOperation(c35638627.disop) + c:RegisterEffect(e2) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(35638627,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c35638627.atcon) + e3:SetOperation(c35638627.atop) + c:RegisterEffect(e3) +end +function c35638627.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + local c=e:GetHandler() + if c==tc then tc=Duel.GetAttacker() end + if tc and tc:IsType(TYPE_EFFECT) and tc:IsStatus(STATUS_BATTLE_DESTROYED) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x17a0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x17a0000) + tc:RegisterEffect(e2) + end +end +function c35638627.atcon(e,tp,eg,ep,ev,re,r,rp) + return aux.bdocon(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():IsChainAttackable() +end +function c35638627.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c35726888.lua b/script/c35726888.lua new file mode 100644 index 00000000..2c9e95c3 --- /dev/null +++ b/script/c35726888.lua @@ -0,0 +1,26 @@ +--おろかな副葬 +function c35726888.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,35726888+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c35726888.target) + e1:SetOperation(c35726888.activate) + c:RegisterEffect(e1) +end +function c35726888.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGrave() +end +function c35726888.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c35726888.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c35726888.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c35726888.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c35781051.lua b/script/c35781051.lua index 01b1f377..b0cec81a 100644 --- a/script/c35781051.lua +++ b/script/c35781051.lua @@ -40,7 +40,7 @@ function c35781051.arcanareg(c,coin) e1:SetCondition(c35781051.spcon) e1:SetTarget(c35781051.sptg) e1:SetOperation(c35781051.spop) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) local e2=e1:Clone() e2:SetCode(EVENT_MSET) @@ -55,12 +55,12 @@ function c35781051.arcanareg(c,coin) e3:SetCondition(c35781051.tgcon) e3:SetTarget(c35781051.tgtg) e3:SetOperation(c35781051.tgop) - e3:SetReset(RESET_EVENT+0x1ff0000) + e3:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e3) local e4=e3:Clone() e4:SetCode(EVENT_MSET) c:RegisterEffect(e4) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) end function c35781051.spcon(e,tp,eg,ep,ev,re,r,rp) return ep~=tp and e:GetHandler():GetFlagEffectLabel(36690018)==1 diff --git a/script/c35787450.lua b/script/c35787450.lua index c80e5695..d6bcc978 100644 --- a/script/c35787450.lua +++ b/script/c35787450.lua @@ -1,28 +1,28 @@ ---エターナル・ドレッド -function c35787450.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c35787450.addcon) - e1:SetOperation(c35787450.addc) - c:RegisterEffect(e1) -end -function c35787450.check(tp) - local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - return tc and tc:IsFaceup() and tc:IsCode(75041269) -end -function c35787450.addcon(e,tp,eg,ep,ev,re,r,rp) - return c35787450.check(0) or c35787450.check(1) -end -function c35787450.addc(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if tc and tc:IsFaceup() and tc:IsCode(75041269) then - tc:AddCounter(0x1b,2) - end - tc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) - if tc and tc:IsFaceup() and tc:IsCode(75041269) then - tc:AddCounter(0x1b,2) - end -end +--エターナル・ドレッド +function c35787450.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c35787450.addcon) + e1:SetOperation(c35787450.addc) + c:RegisterEffect(e1) +end +function c35787450.check(tp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:IsFaceup() and tc:IsCode(75041269) +end +function c35787450.addcon(e,tp,eg,ep,ev,re,r,rp) + return c35787450.check(0) or c35787450.check(1) +end +function c35787450.addc(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if tc and tc:IsFaceup() and tc:IsCode(75041269) then + tc:AddCounter(0x1b,2) + end + tc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if tc and tc:IsFaceup() and tc:IsCode(75041269) then + tc:AddCounter(0x1b,2) + end +end diff --git a/script/c35798491.lua b/script/c35798491.lua index 280e65a4..8baf7a83 100644 --- a/script/c35798491.lua +++ b/script/c35798491.lua @@ -1,47 +1,46 @@ ---ダークビショップデーモン -function c35798491.initial_effect(c) - --maintain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c35798491.mtcon) - e1:SetOperation(c35798491.mtop) - c:RegisterEffect(e1) - --disable and destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c35798491.disop) - c:RegisterEffect(e2) -end -function c35798491.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c35798491.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -function c35798491.filter(c,tp) - return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) and c:IsFaceup() and c:IsSetCard(0x45) -end -function c35798491.disop(e,tp,eg,ep,ev,re,r,rp) - if ep==tp then return end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if not tg or not tg:IsExists(c35798491.filter,1,nil,tp) or not Duel.IsChainDisablable(ev) then return false end - local rc=re:GetHandler() - local dc=Duel.TossDice(tp,1) - if dc==1 or dc==3 or dc==6 then - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then - Duel.Destroy(rc,REASON_EFFECT) - end - end -end +--ダークビショップデーモン +function c35798491.initial_effect(c) + --maintain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c35798491.mtcon) + e1:SetOperation(c35798491.mtop) + c:RegisterEffect(e1) + --disable and destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c35798491.disop) + c:RegisterEffect(e2) +end +function c35798491.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c35798491.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c35798491.filter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) and c:IsFaceup() and c:IsSetCard(0x45) +end +function c35798491.disop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not tg or not tg:IsExists(c35798491.filter,1,nil,tp) or not Duel.IsChainDisablable(ev) then return false end + local rc=re:GetHandler() + local dc=Duel.TossDice(tp,1) + if dc==1 or dc==3 or dc==6 then + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end + end +end diff --git a/script/c35809262.lua b/script/c35809262.lua index 4c7a9f70..ea0f5ddf 100644 --- a/script/c35809262.lua +++ b/script/c35809262.lua @@ -1,48 +1,49 @@ ---E・HERO フレイム・ウィングマン -function c35809262.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,21844576,58932615,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(35809262,0)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(c35809262.damcon) - e2:SetTarget(c35809262.damtg) - e2:SetOperation(c35809262.damop) - c:RegisterEffect(e2) -end -function c35809262.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) -end -function c35809262.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local bc=e:GetHandler():GetBattleTarget() - Duel.SetTargetCard(bc) - local dam=bc:GetAttack() - if dam<0 then dam=0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c35809262.damop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local dam=tc:GetAttack() - if dam<0 then dam=0 end - Duel.Damage(p,dam,REASON_EFFECT) - end -end +--E・HERO フレイム・ウィングマン +function c35809262.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,21844576,58932615,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35809262,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c35809262.damcon) + e2:SetTarget(c35809262.damtg) + e2:SetOperation(c35809262.damop) + c:RegisterEffect(e2) +end +c35809262.material_setcode=0x8 +function c35809262.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c35809262.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local bc=e:GetHandler():GetBattleTarget() + Duel.SetTargetCard(bc) + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c35809262.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=tc:GetAttack() + if dam<0 then dam=0 end + Duel.Damage(p,dam,REASON_EFFECT) + end +end diff --git a/script/c35842855.lua b/script/c35842855.lua index a589b39a..0bfc1ce6 100644 --- a/script/c35842855.lua +++ b/script/c35842855.lua @@ -1,79 +1,79 @@ ---炎霊神パイロレクス -function c35842855.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c35842855.spcon) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(35842855,0)) - e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCountLimit(1,35842855) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetTarget(c35842855.destg) - e3:SetOperation(c35842855.desop) - c:RegisterEffect(e3) - --leave - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_LEAVE_FIELD_P) - e4:SetOperation(c35842855.leaveop) - c:RegisterEffect(e4) -end -function c35842855.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and - Duel.GetMatchingGroupCount(Card.IsAttribute,c:GetControler(),LOCATION_GRAVE,0,nil,ATTRIBUTE_FIRE)==5 -end -function c35842855.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end - if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) -end -function c35842855.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)==1 then - local atk=tc:GetTextAttack()/2 - if atk>0 then - Duel.Damage(tp,atk,REASON_EFFECT,true) - Duel.Damage(1-tp,atk,REASON_EFFECT,true) - Duel.RDComplete() - end - end -end -function c35842855.leaveop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsFacedown() then return end - local effp=e:GetHandler():GetControler() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SKIP_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - if Duel.GetTurnPlayer()==effp then - e1:SetLabel(Duel.GetTurnCount()) - e1:SetCondition(c35842855.skipcon) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) - end - Duel.RegisterEffect(e1,effp) -end -function c35842855.skipcon(e) - return Duel.GetTurnCount()~=e:GetLabel() -end +--炎霊神パイロレクス +function c35842855.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c35842855.spcon) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(35842855,0)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCountLimit(1,35842855) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetTarget(c35842855.destg) + e3:SetOperation(c35842855.desop) + c:RegisterEffect(e3) + --leave + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD_P) + e4:SetOperation(c35842855.leaveop) + c:RegisterEffect(e4) +end +function c35842855.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.GetMatchingGroupCount(Card.IsAttribute,c:GetControler(),LOCATION_GRAVE,0,nil,ATTRIBUTE_FIRE)==5 +end +function c35842855.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c35842855.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)==1 then + local atk=tc:GetTextAttack()/2 + if atk>0 then + Duel.Damage(tp,atk,REASON_EFFECT,true) + Duel.Damage(1-tp,atk,REASON_EFFECT,true) + Duel.RDComplete() + end + end +end +function c35842855.leaveop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsFacedown() then return end + local effp=e:GetHandler():GetControler() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + if Duel.GetTurnPlayer()==effp then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c35842855.skipcon) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + end + Duel.RegisterEffect(e1,effp) +end +function c35842855.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c35884610.lua b/script/c35884610.lua index eb7044c5..705901d5 100644 --- a/script/c35884610.lua +++ b/script/c35884610.lua @@ -1,136 +1,102 @@ ---U.A.パワードギプス -function c35884610.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(c35884610.target) - e1:SetOperation(c35884610.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(c35884610.eqlimit) - c:RegisterEffect(e2) - --Atk Def up - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(1000) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) - --damage double - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e5:SetRange(LOCATION_SZONE) - e5:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e5:SetCondition(c35884610.damcon) - e5:SetOperation(c35884610.damop) - c:RegisterEffect(e5) - --chain atk - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(35884610,0)) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e6:SetRange(LOCATION_SZONE) - e6:SetCode(EVENT_BATTLED) - e6:SetCondition(c35884610.atcon) - e6:SetOperation(c35884610.atop) - c:RegisterEffect(e6) - --remove - local e7=Effect.CreateEffect(c) - e7:SetCategory(CATEGORY_REMOVE) - e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e7:SetRange(LOCATION_SZONE) - e7:SetCode(EVENT_PHASE+PHASE_STANDBY) - e7:SetCountLimit(1) - e7:SetCondition(c35884610.rmcon) - e7:SetTarget(c35884610.rmtg) - e7:SetOperation(c35884610.rmop) - c:RegisterEffect(e7) - --to hand - local e8=Effect.CreateEffect(c) - e8:SetDescription(aux.Stringid(35884610,1)) - e8:SetCategory(CATEGORY_TOHAND) - e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e8:SetProperty(EFFECT_FLAG_DELAY) - e8:SetCode(EVENT_TO_GRAVE) - e8:SetCondition(c35884610.thcon) - e8:SetTarget(c35884610.thtg) - e8:SetOperation(c35884610.thop) - c:RegisterEffect(e8) -end -function c35884610.eqlimit(e,c) - return c:IsSetCard(0xb2) -end -function c35884610.filter(c) - return c:IsFaceup() and c:IsSetCard(0xb2) -end -function c35884610.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c35884610.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c35884610.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c35884610.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c35884610.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 c35884610.damcon(e,tp,eg,ep,ev,re,r,rp) - return eg:GetFirst()==e:GetHandler():GetEquipTarget() and ep~=tp and eg:GetFirst():GetBattleTarget()~=nil -end -function c35884610.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev*2) -end -function c35884610.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler():GetEquipTarget() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() -end -function c35884610.atop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local tc=e:GetHandler():GetEquipTarget() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - tc:RegisterEffect(e1) -end -function c35884610.rmcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c35884610.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler():GetEquipTarget(),1,0,0) -end -function c35884610.rmop(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetHandler():GetEquipTarget() - if ec then - Duel.Remove(ec,POS_FACEUP,REASON_EFFECT) - end -end -function c35884610.thcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_LOST_TARGET) and c:GetPreviousEquipTarget():IsLocation(LOCATION_HAND) -end -function c35884610.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c35884610.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--U.A.パワードギプス +function c35884610.initial_effect(c) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0xb2)) + --Atk Def up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(1000) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) + --damage double + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e5:SetCondition(c35884610.damcon) + e5:SetOperation(c35884610.damop) + c:RegisterEffect(e5) + --chain atk + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(35884610,0)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EVENT_BATTLED) + e6:SetCondition(c35884610.atcon) + e6:SetOperation(c35884610.atop) + c:RegisterEffect(e6) + --remove + local e7=Effect.CreateEffect(c) + e7:SetCategory(CATEGORY_REMOVE) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetRange(LOCATION_SZONE) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetCountLimit(1) + e7:SetCondition(c35884610.rmcon) + e7:SetTarget(c35884610.rmtg) + e7:SetOperation(c35884610.rmop) + c:RegisterEffect(e7) + --to hand + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(35884610,1)) + e8:SetCategory(CATEGORY_TOHAND) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetProperty(EFFECT_FLAG_DELAY) + e8:SetCode(EVENT_TO_GRAVE) + e8:SetCondition(c35884610.thcon) + e8:SetTarget(c35884610.thtg) + e8:SetOperation(c35884610.thop) + c:RegisterEffect(e8) +end +function c35884610.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst()==e:GetHandler():GetEquipTarget() and ep~=tp and eg:GetFirst():GetBattleTarget()~=nil +end +function c35884610.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end +function c35884610.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler():GetEquipTarget() + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() +end +function c35884610.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=e:GetHandler():GetEquipTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) +end +function c35884610.rmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c35884610.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler():GetEquipTarget(),1,0,0) +end +function c35884610.rmop(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + if ec then + Duel.Remove(ec,POS_FACEUP,REASON_EFFECT) + end +end +function c35884610.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_LOST_TARGET) and c:GetPreviousEquipTarget():IsLocation(LOCATION_HAND) +end +function c35884610.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c35884610.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c35950025.lua b/script/c35950025.lua index d05d6ea9..a22b4643 100644 --- a/script/c35950025.lua +++ b/script/c35950025.lua @@ -1,59 +1,59 @@ ---銀河騎士 -function c35950025.initial_effect(c) - --summon with no tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(35950025,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SUMMON_PROC) - e1:SetCondition(c35950025.ntcon) - e1:SetValue(1) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(35950025,1)) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCondition(c35950025.spcon) - e2:SetTarget(c35950025.sptg) - e2:SetOperation(c35950025.spop) - c:RegisterEffect(e2) -end -function c35950025.cfilter(c) - return c:IsFaceup() and (c:IsSetCard(0x55) or c:IsSetCard(0x7b)) -end -function c35950025.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c35950025.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c35950025.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_NORMAL+1 -end -function c35950025.spfilter(c,e,tp) - return c:IsCode(93717133) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c35950025.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c35950025.spfilter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c35950025.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0,nil) -end -function c35950025.spop(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:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-1000) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end - end -end +--銀河騎士 +function c35950025.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35950025,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c35950025.ntcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35950025,1)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c35950025.spcon) + e2:SetTarget(c35950025.sptg) + e2:SetOperation(c35950025.spop) + c:RegisterEffect(e2) +end +function c35950025.cfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x55) or c:IsSetCard(0x7b)) +end +function c35950025.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c35950025.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c35950025.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_NORMAL+1 +end +function c35950025.spfilter(c,e,tp) + return c:IsCode(93717133) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c35950025.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c35950025.spfilter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c35950025.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0,nil) +end +function c35950025.spop(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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + end +end diff --git a/script/c35952884.lua b/script/c35952884.lua index 9c27a556..843de14a 100644 --- a/script/c35952884.lua +++ b/script/c35952884.lua @@ -1,110 +1,109 @@ ---シューティング・クェーサー・ドラゴン -function c35952884.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),2) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.synlimit) - c:RegisterEffect(e1) - --multi attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c35952884.mtcon) - e2:SetOperation(c35952884.mtop) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_MATERIAL_CHECK) - e3:SetValue(c35952884.valcheck) - e3:SetLabelObject(e2) - c:RegisterEffect(e3) - --negate - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(35952884,0)) - e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_CHAINING) - e3:SetCountLimit(1) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c35952884.discon) - e3:SetTarget(c35952884.distg) - e3:SetOperation(c35952884.disop) - c:RegisterEffect(e3) - --Special Summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(35952884,1)) - e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetCondition(c35952884.sumcon) - e4:SetTarget(c35952884.sumtg) - e4:SetOperation(c35952884.sumop) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EVENT_REMOVE) - c:RegisterEffect(e5) - local e6=e4:Clone() - e6:SetCode(EVENT_TO_DECK) - c:RegisterEffect(e6) -end -function c35952884.mfilter(c) - return not c:IsType(TYPE_TUNER) -end -function c35952884.valcheck(e,c) - local g=c:GetMaterial() - local ct=g:FilterCount(c35952884.mfilter,nil) - e:GetLabelObject():SetLabel(ct) -end -function c35952884.mtcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and e:GetLabel()>0 -end -function c35952884.mtop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=e:GetLabel() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetValue(ct-1) - c:RegisterEffect(e1) -end -function c35952884.discon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) -end -function c35952884.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c35952884.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c35952884.sumcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c35952884.filter(c,e,tp) - return c:IsCode(24696097) and c:IsCanBeSpecialSummoned(e,0,tp,false,true) -end -function c35952884.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c35952884.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c35952884.sumop(e,tp,eg,ep,ev,re,r,rp) - local tg=Duel.GetFirstMatchingCard(c35952884.filter,tp,LOCATION_EXTRA,0,nil,e,tp) - if tg then - Duel.SpecialSummon(tg,0,tp,tp,false,true,POS_FACEUP) - end -end +--シューティング・クェーサー・ドラゴン +function c35952884.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),2) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.synlimit) + c:RegisterEffect(e1) + --multi attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c35952884.mtcon) + e2:SetOperation(c35952884.mtop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MATERIAL_CHECK) + e3:SetValue(c35952884.valcheck) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(35952884,0)) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetCountLimit(1) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c35952884.discon) + e3:SetTarget(c35952884.distg) + e3:SetOperation(c35952884.disop) + c:RegisterEffect(e3) + --Special Summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(35952884,1)) + e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c35952884.sumcon) + e4:SetTarget(c35952884.sumtg) + e4:SetOperation(c35952884.sumop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_REMOVE) + c:RegisterEffect(e5) + local e6=e4:Clone() + e6:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e6) +end +function c35952884.mfilter(c) + return not c:IsType(TYPE_TUNER) +end +function c35952884.valcheck(e,c) + local g=c:GetMaterial() + local ct=g:FilterCount(c35952884.mfilter,nil) + e:GetLabelObject():SetLabel(ct) +end +function c35952884.mtcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and e:GetLabel()>0 +end +function c35952884.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=e:GetLabel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(ct-1) + c:RegisterEffect(e1) +end +function c35952884.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) +end +function c35952884.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c35952884.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c35952884.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c35952884.filter(c,e,tp) + return c:IsCode(24696097) and c:IsCanBeSpecialSummoned(e,0,tp,false,true) +end +function c35952884.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c35952884.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c35952884.sumop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetFirstMatchingCard(c35952884.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if tg then + Duel.SpecialSummon(tg,0,tp,tp,false,true,POS_FACEUP) + end +end diff --git a/script/c35956022.lua b/script/c35956022.lua index c76a460a..eba2cde6 100644 --- a/script/c35956022.lua +++ b/script/c35956022.lua @@ -1,22 +1,22 @@ ---アシッドレイン -function c35956022.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH)) - e2:SetValue(-500) - c:RegisterEffect(e2) - --Def down - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(400) - c:RegisterEffect(e3) -end +--アシッドレイン +function c35956022.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH)) + e2:SetValue(-500) + c:RegisterEffect(e2) + --Def down + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(400) + c:RegisterEffect(e3) +end diff --git a/script/c359563.lua b/script/c359563.lua index 03b3804b..4f4b9555 100644 --- a/script/c359563.lua +++ b/script/c359563.lua @@ -7,6 +7,7 @@ function c359563.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(359563,0)) e1:SetCategory(CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetRange(LOCATION_MZONE) @@ -16,7 +17,7 @@ function c359563.initial_effect(c) c:RegisterEffect(e1) end function c359563.filter(c,e,tp) - return c:IsFaceup() and c:GetSummonPlayer()==1-tp and (not e or c:IsRelateToEffect(e)) + return c:IsFaceup() and c:IsCanTurnSet() and c:GetSummonPlayer()==1-tp and (not e or c:IsRelateToEffect(e)) end function c359563.cost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end diff --git a/script/c35975813.lua b/script/c35975813.lua index b985ade2..e2e78ad8 100644 --- a/script/c35975813.lua +++ b/script/c35975813.lua @@ -1,81 +1,80 @@ ---ジェノサイドキングデーモン -function c35975813.initial_effect(c) - --sumlimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetCondition(c35975813.excon) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - c:RegisterEffect(e2) - --maintain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c35975813.mtcon) - e3:SetOperation(c35975813.mtop) - c:RegisterEffect(e3) - --disable and destroy - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_CHAIN_SOLVING) - e4:SetRange(LOCATION_MZONE) - e4:SetOperation(c35975813.disop) - c:RegisterEffect(e4) - --disable - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e5:SetCode(EVENT_BATTLED) - e5:SetRange(LOCATION_MZONE) - e5:SetOperation(c35975813.disop2) - c:RegisterEffect(e5) -end -function c35975813.exfilter(c) - return c:IsFaceup() and c:IsSetCard(0x45) -end -function c35975813.excon(e) - return not Duel.IsExistingMatchingCard(c35975813.exfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c35975813.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c35975813.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,800) then - Duel.PayLPCost(tp,800) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -function c35975813.disop(e,tp,eg,ep,ev,re,r,rp) - if ep==tp then return end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end - local rc=re:GetHandler() - local dc=Duel.TossDice(tp,1) - if dc~=2 and dc~=5 then return end - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then - Duel.Destroy(rc,REASON_EFFECT) - end -end -function c35975813.disop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=c:GetBattleTarget() - if tc and tc:IsType(TYPE_EFFECT) and tc:IsStatus(STATUS_BATTLE_DESTROYED) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x17a0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x17a0000) - tc:RegisterEffect(e2) - end -end +--ジェノサイドキングデーモン +function c35975813.initial_effect(c) + --sumlimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c35975813.excon) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c35975813.mtcon) + e3:SetOperation(c35975813.mtop) + c:RegisterEffect(e3) + --disable and destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAIN_SOLVING) + e4:SetRange(LOCATION_MZONE) + e4:SetOperation(c35975813.disop) + c:RegisterEffect(e4) + --disable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_BATTLED) + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c35975813.disop2) + c:RegisterEffect(e5) +end +function c35975813.exfilter(c) + return c:IsFaceup() and c:IsSetCard(0x45) +end +function c35975813.excon(e) + return not Duel.IsExistingMatchingCard(c35975813.exfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c35975813.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c35975813.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,800) then + Duel.PayLPCost(tp,800) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c35975813.disop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end + local rc=re:GetHandler() + local dc=Duel.TossDice(tp,1) + if dc~=2 and dc~=5 then return end + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end +end +function c35975813.disop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + if tc and tc:IsType(TYPE_EFFECT) and tc:IsStatus(STATUS_BATTLE_DESTROYED) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x17a0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x17a0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c36042825.lua b/script/c36042825.lua index 45c391e5..fc60bfda 100644 --- a/script/c36042825.lua +++ b/script/c36042825.lua @@ -1,27 +1,12 @@ --ワンショット・ワンド function c36042825.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(c36042825.target) - e1:SetOperation(c36042825.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(800) 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(c36042825.eqlimit) - c:RegisterEffect(e3) --draw local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(36042825,0)) @@ -34,25 +19,6 @@ function c36042825.initial_effect(c) e4:SetOperation(c36042825.drop) c:RegisterEffect(e4) end -function c36042825.eqlimit(e,c) - return c:IsRace(RACE_SPELLCASTER) -end -function c36042825.filter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) -end -function c36042825.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c36042825.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c36042825.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c36042825.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c36042825.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 c36042825.drcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():GetEquipTarget():IsRelateToBattle() end diff --git a/script/c36076683.lua b/script/c36076683.lua index 6d13c963..006f2612 100644 --- a/script/c36076683.lua +++ b/script/c36076683.lua @@ -8,7 +8,7 @@ function c36076683.initial_effect(c) e1:SetDescription(aux.Stringid(36076683,0)) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(TIMING_DAMAGE_STEP) e1:SetRange(LOCATION_MZONE) diff --git a/script/c36099620.lua b/script/c36099620.lua index 2903eda2..91e3aac0 100644 --- a/script/c36099620.lua +++ b/script/c36099620.lua @@ -1,53 +1,53 @@ ---ジャスティス・ワールド -function c36099620.initial_effect(c) - c:EnableCounterPermit(0x5) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetRange(LOCATION_FZONE) - e2:SetOperation(c36099620.acop) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x38)) - e3:SetValue(c36099620.atkval) - c:RegisterEffect(e3) - --Destroy replace - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DESTROY_REPLACE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_FZONE) - e4:SetTarget(c36099620.desreptg) - e4:SetOperation(c36099620.desrepop) - c:RegisterEffect(e4) -end -function c36099620.atkval(e,c) - return e:GetHandler():GetCounter(0x5)*100 -end -function c36099620.cfilter(c,tp) - return c:GetPreviousLocation()==LOCATION_DECK and c:GetPreviousControler()==tp -end -function c36099620.acop(e,tp,eg,ep,ev,re,r,rp) - if eg:IsExists(c36099620.cfilter,1,nil,tp) then - e:GetHandler():AddCounter(0x5,1) - end -end -function c36099620.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) - and e:GetHandler():GetCounter(0x5)>=2 end - return true -end -function c36099620.desrepop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RemoveCounter(ep,0x5,2,REASON_EFFECT) -end +--ジャスティス・ワールド +function c36099620.initial_effect(c) + c:EnableCounterPermit(0x5) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_FZONE) + e2:SetOperation(c36099620.acop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x38)) + e3:SetValue(c36099620.atkval) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_FZONE) + e4:SetTarget(c36099620.desreptg) + e4:SetOperation(c36099620.desrepop) + c:RegisterEffect(e4) +end +function c36099620.atkval(e,c) + return e:GetHandler():GetCounter(0x5)*100 +end +function c36099620.cfilter(c,tp) + return c:GetPreviousLocation()==LOCATION_DECK and c:GetPreviousControler()==tp +end +function c36099620.acop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(c36099620.cfilter,1,nil,tp) then + e:GetHandler():AddCounter(0x5,1) + end +end +function c36099620.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) + and e:GetHandler():GetCounter(0x5)>=2 end + return true +end +function c36099620.desrepop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RemoveCounter(ep,0x5,2,REASON_EFFECT) +end diff --git a/script/c36100154.lua b/script/c36100154.lua index 830dd5f9..df7f06ab 100644 --- a/script/c36100154.lua +++ b/script/c36100154.lua @@ -1,32 +1,32 @@ ---アマゾネスの闘志 -function c36100154.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCondition(c36100154.atkcon) - e2:SetTarget(c36100154.atktg) - e2:SetValue(c36100154.atkval) - c:RegisterEffect(e2) -end -function c36100154.atkcon(e) - c36100154[0]=false - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c36100154.atktg(e,c) - return c==Duel.GetAttacker() and c:IsSetCard(0x4) -end -function c36100154.atkval(e,c) - local d=Duel.GetAttackTarget() - if c36100154[0] or c:GetAttack()0 +end +function c36247316.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c36247316.filter1(chkc) end + if chk==0 then + if e:GetLabel()==0 then return false end + e:SetLabel(0) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,36247316,0x10db,0x11,600,0,2,RACE_WARRIOR,ATTRIBUTE_DARK) + and Duel.IsExistingTarget(c36247316.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + e:SetLabel(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c36247316.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c36247316.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-600) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_LEVEL) + e2:SetValue(2) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c36247316.indtarget) + e3:SetValue(1) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) + if c:IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,36247316,0x10db,0x11,600,0,2,RACE_WARRIOR,ATTRIBUTE_DARK) then + Duel.BreakEffect() + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + Duel.SpecialSummonComplete() + end + end +end +function c36247316.indtarget(e,c) + return c:IsFaceup() and c:IsSetCard(0x10db) +end \ No newline at end of file diff --git a/script/c36262024.lua b/script/c36262024.lua index eb6dcc4f..bf1a67e8 100644 --- a/script/c36262024.lua +++ b/script/c36262024.lua @@ -1,33 +1,33 @@ ---黒竜の雛 -function c36262024.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(36262024,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c36262024.spcost) - e1:SetTarget(c36262024.sptg) - e1:SetOperation(c36262024.spop) - c:RegisterEffect(e1) -end -function c36262024.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c36262024.filter(c,e,tp) - return c:IsCode(74677422) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c36262024.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c36262024.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c36262024.spop(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,c36262024.filter,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 c36262024.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36262024,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c36262024.spcost) + e1:SetTarget(c36262024.sptg) + e1:SetOperation(c36262024.spop) + c:RegisterEffect(e1) +end +function c36262024.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c36262024.filter(c,e,tp) + return c:IsCode(74677422) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c36262024.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c36262024.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c36262024.spop(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,c36262024.filter,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 diff --git a/script/c3629090.lua b/script/c3629090.lua index 3e331114..0c006d15 100644 --- a/script/c3629090.lua +++ b/script/c3629090.lua @@ -35,8 +35,8 @@ function c3629090.thtg(e,tp,eg,ep,ev,re,r,rp,chk) end function c3629090.thop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c3629090.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c3629090.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c36318200.lua b/script/c36318200.lua index 4a6f4ee3..008b6029 100644 --- a/script/c36318200.lua +++ b/script/c36318200.lua @@ -1,48 +1,47 @@ ---森の聖獣 ユニフォリア -function c36318200.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(36318200,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c36318200.spcon) - e1:SetCost(c36318200.spcost) - e1:SetTarget(c36318200.sptg) - e1:SetOperation(c36318200.spop) - c:RegisterEffect(e1) -end -function c36318200.cfilter(c) - return c:GetRace()~=RACE_BEAST -end -function c36318200.spcon(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) - return g:GetCount()>0 and not g:IsExists(c36318200.cfilter,1,nil) -end -function c36318200.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c36318200.filter(c,e,tp) - return not c:IsCode(36318200) and c:IsRace(RACE_BEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and not c:IsHasEffect(EFFECT_NECRO_VALLEY) -end -function c36318200.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c36318200.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_HAND) -end -function c36318200.spop(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,c36318200.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - Duel.SpecialSummonComplete() - end -end +--森の聖獣 ユニフォリア +function c36318200.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36318200,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c36318200.spcon) + e1:SetCost(c36318200.spcost) + e1:SetTarget(c36318200.sptg) + e1:SetOperation(c36318200.spop) + c:RegisterEffect(e1) +end +function c36318200.cfilter(c) + return c:GetRace()~=RACE_BEAST +end +function c36318200.spcon(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + return g:GetCount()>0 and not g:IsExists(c36318200.cfilter,1,nil) +end +function c36318200.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c36318200.filter(c,e,tp) + return not c:IsCode(36318200) and c:IsRace(RACE_BEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c36318200.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c36318200.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_HAND) +end +function c36318200.spop(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,aux.NecroValleyFilter(c36318200.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c36354007.lua b/script/c36354007.lua index 9a331676..4cc8dcbd 100644 --- a/script/c36354007.lua +++ b/script/c36354007.lua @@ -21,9 +21,9 @@ function c36354007.initial_effect(c) e2:SetOperation(c36354007.desop) c:RegisterEffect(e2) end -function c36354007.ttcon(e,c) +function c36354007.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c36354007.ttop(e,tp,eg,ep,ev,re,r,rp,c) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) diff --git a/script/c36376145.lua b/script/c36376145.lua index d400a4eb..409d68aa 100644 --- a/script/c36376145.lua +++ b/script/c36376145.lua @@ -1,39 +1,39 @@ ---魂の一撃 -function c36376145.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,36376145+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c36376145.condition) - e1:SetCost(c36376145.cost) - e1:SetTarget(c36376145.target) - e1:SetOperation(c36376145.activate) - c:RegisterEffect(e1) -end -function c36376145.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetLP(tp)<=4000 and Duel.GetAttackTarget()~=nil -end -function c36376145.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) -end -function c36376145.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c36376145.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(4000-Duel.GetLP(tp)) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - tc:RegisterEffect(e1) - end -end +--魂の一撃 +function c36376145.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,36376145+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c36376145.condition) + e1:SetCost(c36376145.cost) + e1:SetTarget(c36376145.target) + e1:SetOperation(c36376145.activate) + c:RegisterEffect(e1) +end +function c36376145.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=4000 and Duel.GetAttackTarget()~=nil +end +function c36376145.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c36376145.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c36376145.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(4000-Duel.GetLP(tp)) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + tc:RegisterEffect(e1) + end +end diff --git a/script/c36378213.lua b/script/c36378213.lua index ca47752b..0cf5361d 100644 --- a/script/c36378213.lua +++ b/script/c36378213.lua @@ -1,39 +1,39 @@ ---キューキューロイド -function c36378213.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(36378213,0)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_TO_HAND) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c36378213.target) - e1:SetOperation(c36378213.activate) - c:RegisterEffect(e1) -end -function c36378213.filter(c,e,tp) - return c:IsPreviousLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsSetCard(0x16) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c36378213.target(e,tp,eg,ep,ev,re,r,rp,chk) - local g=eg:Filter(c36378213.filter,nil,e,tp) - if chk==0 then return g:GetCount()~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end - Duel.SetTargetCard(eg) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c36378213.spfilter(c,e,tp) - return c:IsPreviousLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsSetCard(0x16) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsRelateToEffect(e) -end -function c36378213.activate(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - local g=eg:Filter(c36378213.spfilter,nil,e,tp) - if g:GetCount()==0 then return end - if g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if g:GetCount()>ft then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - g=g:Select(tp,ft,ft,nil) - end - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) -end +--キューキューロイド +function c36378213.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36378213,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_TO_HAND) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c36378213.target) + e1:SetOperation(c36378213.activate) + c:RegisterEffect(e1) +end +function c36378213.filter(c,e,tp) + return c:IsPreviousLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsSetCard(0x16) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c36378213.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c36378213.filter,nil,e,tp) + if chk==0 then return g:GetCount()~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c36378213.spfilter(c,e,tp) + return c:IsPreviousLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsSetCard(0x16) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsRelateToEffect(e) +end +function c36378213.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=eg:Filter(c36378213.spfilter,nil,e,tp) + if g:GetCount()==0 then return end + if g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if g:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + g=g:Select(tp,ft,ft,nil) + end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c36415522.lua b/script/c36415522.lua index 28d0613d..3e1ba0e0 100644 --- a/script/c36415522.lua +++ b/script/c36415522.lua @@ -1,112 +1,112 @@ ---EMピンチヘルパー -function c36415522.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_ATTACK) - e1:SetTarget(c36415522.sptg1) - e1:SetOperation(c36415522.spop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c36415522.spcon) - e2:SetCost(c36415522.spcost) - e2:SetTarget(c36415522.sptg2) - e2:SetOperation(c36415522.spop) - c:RegisterEffect(e2) - --no damage - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetRange(LOCATION_SZONE) - e3:SetCost(c36415522.atkcost) - e3:SetTarget(c36415522.atktg) - e3:SetOperation(c36415522.atkop) - c:RegisterEffect(e3) -end -function c36415522.filter(c,e,tp) - return c:IsSetCard(0x9f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c36415522.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c36415522.filter,tp,LOCATION_DECK,0,1,nil,e,tp) - and Duel.SelectYesNo(tp,aux.Stringid(36415522,0)) then - e:SetCategory(CATEGORY_SPECIAL_SUMMON) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) - e:GetHandler():RegisterFlagEffect(36415522,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - else - e:SetCategory(0) - end -end -function c36415522.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil -end -function c36415522.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(36415522)==0 end - e:GetHandler():RegisterFlagEffect(36415522,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c36415522.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c36415522.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c36415522.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetFlagEffect(36415522)==0 then return end - if not Duel.NegateAttack() then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c36415522.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - end -end -function c36415522.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c36415522.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if chk==0 then return d and a:GetControler()~=d:GetControler() end - if a:IsControler(1-tp) then a=d end - e:SetLabelObject(a) -end -function c36415522.atkop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:IsRelateToBattle() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetValue(1) - e1:SetCondition(c36415522.damcon) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetLabelObject(tc) - Duel.RegisterEffect(e1,tp) - end -end -function c36415522.damcon(e) - local tc=e:GetLabelObject() - return tc==Duel.GetAttacker() or tc==Duel.GetAttackTarget() -end +--EMピンチヘルパー +function c36415522.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_ATTACK) + e1:SetTarget(c36415522.sptg1) + e1:SetOperation(c36415522.spop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c36415522.spcon) + e2:SetCost(c36415522.spcost) + e2:SetTarget(c36415522.sptg2) + e2:SetOperation(c36415522.spop) + c:RegisterEffect(e2) + --no damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c36415522.atkcost) + e3:SetTarget(c36415522.atktg) + e3:SetOperation(c36415522.atkop) + c:RegisterEffect(e3) +end +function c36415522.filter(c,e,tp) + return c:IsSetCard(0x9f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c36415522.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c36415522.filter,tp,LOCATION_DECK,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(36415522,0)) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) + e:GetHandler():RegisterFlagEffect(36415522,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + else + e:SetCategory(0) + end +end +function c36415522.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c36415522.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(36415522)==0 end + e:GetHandler():RegisterFlagEffect(36415522,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c36415522.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c36415522.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c36415522.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(36415522)==0 then return end + if not Duel.NegateAttack() then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c36415522.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end +function c36415522.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c36415522.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if chk==0 then return d and a:GetControler()~=d:GetControler() end + if a:IsControler(1-tp) then a=d end + e:SetLabelObject(a) +end +function c36415522.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetCondition(c36415522.damcon) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) + end +end +function c36415522.damcon(e) + local tc=e:GetLabelObject() + return tc==Duel.GetAttacker() or tc==Duel.GetAttackTarget() +end diff --git a/script/c3642509.lua b/script/c3642509.lua index cad083f4..9c9819ec 100644 --- a/script/c3642509.lua +++ b/script/c3642509.lua @@ -1,47 +1,48 @@ ---E・HERO Great TORNADO -function c3642509.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND),true) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(3642509,0)) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c3642509.atkcon) - e2:SetOperation(c3642509.atkop) - c:RegisterEffect(e2) - --spsummon condition - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(aux.fuslimit) - c:RegisterEffect(e3) -end -function c3642509.atkcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c3642509.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tg=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - local tc=tg:GetFirst() - while tc do - local atk=tc:GetAttack() - local def=tc:GetDefense() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(atk/2) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetValue(def/2) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - tc=tg:GetNext() - end -end +--E・HERO Great TORNADO +function c3642509.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_WIND),true) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(3642509,0)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c3642509.atkcon) + e2:SetOperation(c3642509.atkop) + c:RegisterEffect(e2) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.fuslimit) + c:RegisterEffect(e3) +end +c3642509.material_setcode=0x8 +function c3642509.atkcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c3642509.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=tg:GetFirst() + while tc do + local atk=tc:GetAttack() + local def=tc:GetDefense() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(def/2) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=tg:GetNext() + end +end diff --git a/script/c36426778.lua b/script/c36426778.lua index f172082a..03d150e0 100644 --- a/script/c36426778.lua +++ b/script/c36426778.lua @@ -1,51 +1,51 @@ ---幻影騎士団サイレントブーツ -function c36426778.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(36426778,0)) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,36426778) - e1:SetCondition(c36426778.spcon) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(36426778,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,36426779) - e2:SetCost(c36426778.thcost) - e2:SetTarget(c36426778.thtg) - e2:SetOperation(c36426778.thop) - c:RegisterEffect(e2) -end -function c36426778.filter(c) - return c:IsFaceup() and c:IsSetCard(0x10db) -end -function c36426778.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c36426778.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c36426778.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c36426778.thfilter(c) - return c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c36426778.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c36426778.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c36426778.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c36426778.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--幻影騎士団サイレントブーツ +function c36426778.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36426778,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,36426778) + e1:SetCondition(c36426778.spcon) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36426778,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,36426779) + e2:SetCost(c36426778.thcost) + e2:SetTarget(c36426778.thtg) + e2:SetOperation(c36426778.thop) + c:RegisterEffect(e2) +end +function c36426778.filter(c) + return c:IsFaceup() and c:IsSetCard(0x10db) +end +function c36426778.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c36426778.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c36426778.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c36426778.thfilter(c) + return c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c36426778.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c36426778.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c36426778.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c36426778.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c36442179.lua b/script/c36442179.lua index 5094afe5..291479cb 100644 --- a/script/c36442179.lua +++ b/script/c36442179.lua @@ -1,35 +1,35 @@ ---BF-竜巻のハリケーン -function c36442179.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(36442179,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c36442179.target) - e1:SetOperation(c36442179.operation) - c:RegisterEffect(e1) -end -function c36442179.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) -end -function c36442179.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c36442179.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c36442179.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c36442179.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c36442179.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(tc:GetAttack()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--BF-竜巻のハリケーン +function c36442179.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36442179,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c36442179.target) + e1:SetOperation(c36442179.operation) + c:RegisterEffect(e1) +end +function c36442179.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c36442179.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c36442179.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c36442179.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c36442179.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c36442179.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c36468556.lua b/script/c36468556.lua index 15599e70..6506b5ca 100644 --- a/script/c36468556.lua +++ b/script/c36468556.lua @@ -1,31 +1,31 @@ ---停戦協定 -function c36468556.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION+CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c36468556.target) - e1:SetOperation(c36468556.activate) - c:RegisterEffect(e1) -end -function c36468556.tgfilter(c) - return (c:IsFaceup() and c:IsType(TYPE_EFFECT)) or c:IsFacedown() -end -function c36468556.filter(c) - return c:IsFaceup() and c:IsType(TYPE_EFFECT) -end -function c36468556.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c36468556.tgfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local dam=Duel.GetMatchingGroupCount(c36468556.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*500 - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end -end -function c36468556.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.ChangePosition(g,0x1,0x1,0x4,0x4,true) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local dam=Duel.GetMatchingGroupCount(c36468556.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*500 - Duel.Damage(p,dam,REASON_EFFECT) -end +--停戦協定 +function c36468556.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c36468556.target) + e1:SetOperation(c36468556.activate) + c:RegisterEffect(e1) +end +function c36468556.tgfilter(c) + return (c:IsFaceup() and c:IsType(TYPE_EFFECT)) or c:IsFacedown() +end +function c36468556.filter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c36468556.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c36468556.tgfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local dam=Duel.GetMatchingGroupCount(c36468556.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*500 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c36468556.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.ChangePosition(g,0x1,0x1,0x4,0x4,true) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c36468556.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*500 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c36484016.lua b/script/c36484016.lua index 789f80d3..6ec0ee53 100644 --- a/script/c36484016.lua +++ b/script/c36484016.lua @@ -1,107 +1,114 @@ ---ミラクルシンクロフュージョン -function c36484016.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c36484016.target) - e1:SetOperation(c36484016.activate) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(36484016,1)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c36484016.drcon) - e2:SetTarget(c36484016.drtg) - e2:SetOperation(c36484016.drop) - c:RegisterEffect(e2) -end -function c36484016.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() -end -function c36484016.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) -end -function c36484016.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c.miracle_synchro_fusion and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and m:IsExists(c36484016.filter3,1,nil,c,m,chkf) -end -function c36484016.filter3(c,fusc,m,chkf) - return c:IsType(TYPE_SYNCHRO) and fusc:CheckFusionMaterial(m,c,chkf) -end -function c36484016.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c36484016.filter0,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil) - local res=Duel.IsExistingMatchingCard(c36484016.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c36484016.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c36484016.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c36484016.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c36484016.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c36484016.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local gc=mg1:FilterSelect(tp,c36484016.filter3,1,1,nil,tc,mg1,chkf):GetFirst() - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,gc,chkf) - mat1:AddCard(gc) - tc:SetMaterial(mat1) - Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local gc=mg2:FilterSelect(tp,c36484016.filter3,1,1,nil,tc,mg2,chkf):GetFirst() - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,gc,chkf) - mat2:AddCard(gc) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end -function c36484016.drcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return bit.band(r,0x41)==0x41 and rp~=tp and c:GetPreviousControler()==tp - and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEDOWN) -end -function c36484016.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c36484016.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--ミラクルシンクロフュージョン +function c36484016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c36484016.target) + e1:SetOperation(c36484016.activate) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36484016,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c36484016.drcon) + e2:SetTarget(c36484016.drtg) + e2:SetOperation(c36484016.drop) + c:RegisterEffect(e2) +end +function c36484016.filter0(c) + return c:IsOnField() and c:IsAbleToRemove() +end +function c36484016.filter1(c,e) + return c:IsOnField() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c36484016.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c.miracle_synchro_fusion and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and m:IsExists(c36484016.filter3,1,nil,c,m,chkf) +end +function c36484016.filter3(c,fusc,m,chkf) + return c:IsType(TYPE_SYNCHRO) and fusc:CheckFusionMaterial(m,c,chkf) +end +function c36484016.filter4(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end +function c36484016.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c36484016.filter0,nil) + local mg2=Duel.GetMatchingGroup(c36484016.filter4,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) + local res=Duel.IsExistingMatchingCard(c36484016.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c36484016.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c36484016.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c36484016.filter1,nil,e) + local mg2=Duel.GetMatchingGroup(c36484016.filter4,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) + local sg1=Duel.GetMatchingGroup(c36484016.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg3=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c36484016.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local gc=mg1:FilterSelect(tp,c36484016.filter3,1,1,nil,tc,mg1,chkf):GetFirst() + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,gc,chkf) + mat1:AddCard(gc) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local gc=mg3:FilterSelect(tp,c36484016.filter3,1,1,nil,tc,mg3,chkf):GetFirst() + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,gc,chkf) + mat2:AddCard(gc) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c36484016.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(r,0x41)==0x41 and rp~=tp and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEDOWN) +end +function c36484016.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c36484016.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c36527535.lua b/script/c36527535.lua new file mode 100644 index 00000000..c1c416c2 --- /dev/null +++ b/script/c36527535.lua @@ -0,0 +1,29 @@ +--EMレビュー・ダンサー +--Performapal Revue Dancer +--Script by nekrozar +function c36527535.initial_effect(c) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c36527535.sprcon) + c:RegisterEffect(e1) + --double tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DOUBLE_TRIBUTE) + e2:SetValue(c36527535.dtcon) + c:RegisterEffect(e2) +end +function c36527535.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c36527535.dtcon(e,c) + return c:IsSetCard(0x9f) +end diff --git a/script/c36553319.lua b/script/c36553319.lua index 0f913d28..03f0a3a3 100644 --- a/script/c36553319.lua +++ b/script/c36553319.lua @@ -1,86 +1,86 @@ ---彼岸の悪鬼 ファーファレル -function c36553319.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c36553319.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(36553319,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,36553319) - e2:SetCondition(c36553319.sscon) - e2:SetTarget(c36553319.sstg) - e2:SetOperation(c36553319.ssop) - c:RegisterEffect(e2) - --remove - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(36553319,1)) - e3:SetCategory(CATEGORY_REMOVE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,36553319) - e3:SetTarget(c36553319.rmtg) - e3:SetOperation(c36553319.rmop) - c:RegisterEffect(e3) -end -function c36553319.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c36553319.sdcon(e) - return Duel.IsExistingMatchingCard(c36553319.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c36553319.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c36553319.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c36553319.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c36553319.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c36553319.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c36553319.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c36553319.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then - tc:RegisterFlagEffect(36553319,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetLabelObject(tc) - e1:SetCountLimit(1) - e1:SetCondition(c36553319.retcon) - e1:SetOperation(c36553319.retop) - Duel.RegisterEffect(e1,tp) - end -end -function c36553319.retcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetLabelObject():GetFlagEffect(36553319)~=0 -end -function c36553319.retop(e,tp,eg,ep,ev,re,r,rp) - Duel.ReturnToField(e:GetLabelObject()) -end +--彼岸の悪鬼 ファーファレル +function c36553319.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c36553319.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36553319,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,36553319) + e2:SetCondition(c36553319.sscon) + e2:SetTarget(c36553319.sstg) + e2:SetOperation(c36553319.ssop) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(36553319,1)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,36553319) + e3:SetTarget(c36553319.rmtg) + e3:SetOperation(c36553319.rmop) + c:RegisterEffect(e3) +end +function c36553319.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c36553319.sdcon(e) + return Duel.IsExistingMatchingCard(c36553319.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c36553319.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c36553319.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c36553319.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c36553319.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c36553319.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c36553319.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c36553319.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + tc:RegisterFlagEffect(36553319,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c36553319.retcon) + e1:SetOperation(c36553319.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c36553319.retcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetFlagEffect(36553319)~=0 +end +function c36553319.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c3659803.lua b/script/c3659803.lua index 26cfc972..54538ed4 100644 --- a/script/c3659803.lua +++ b/script/c3659803.lua @@ -2,7 +2,7 @@ function c3659803.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c3659803.target) @@ -10,27 +10,32 @@ function c3659803.initial_effect(c) c:RegisterEffect(e1) end function c3659803.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() + return c:IsOnField() and c:IsAbleToRemove() end function c3659803.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) + return c:IsOnField() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) end function c3659803.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_MACHINE) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) end +function c3659803.filter3(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end function c3659803.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c3659803.filter0,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil) + local mg1=Duel.GetFusionMaterial(tp):Filter(c3659803.filter0,nil) + local mg2=Duel.GetMatchingGroup(c3659803.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local res=Duel.IsExistingMatchingCard(c3659803.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) + local mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c3659803.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + res=Duel.IsExistingMatchingCard(c3659803.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) end end return res @@ -39,16 +44,18 @@ function c3659803.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c3659803.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c3659803.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c3659803.filter1,nil,e) + local mg2=Duel.GetMatchingGroup(c3659803.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local sg1=Duel.GetMatchingGroup(c3659803.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil + local mg3=nil local sg2=nil local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) + mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c3659803.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + sg2=Duel.GetMatchingGroup(c3659803.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) end if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then local sg=sg1:Clone() @@ -63,7 +70,7 @@ function c3659803.activate(e,tp,eg,ep,ev,re,r,rp) Duel.BreakEffect() Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) local fop=ce:GetOperation() fop(ce,e,tp,tc,mat2) end diff --git a/script/c36607978.lua b/script/c36607978.lua index 50824586..1062eef1 100644 --- a/script/c36607978.lua +++ b/script/c36607978.lua @@ -1,14 +1,6 @@ --魔性の月 function c36607978.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(c36607978.target) - e1:SetOperation(c36607978.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_BEASTWARRIOR)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c36607978.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c36607978.eqlimit) - c:RegisterEffect(e4) -end -function c36607978.eqlimit(e,c) - return c:IsRace(RACE_BEASTWARRIOR) -end -function c36607978.filter(c) - return c:IsFaceup() and c:IsRace(RACE_BEASTWARRIOR) -end -function c36607978.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c36607978.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c36607978.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c36607978.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c36607978.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 diff --git a/script/c36625827.lua b/script/c36625827.lua index ac898bf4..b8833ea4 100644 --- a/script/c36625827.lua +++ b/script/c36625827.lua @@ -1,51 +1,51 @@ ---D-HERO ドレッドサーヴァント -function c36625827.initial_effect(c) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(36625827,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c36625827.addc) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(36625827,1)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_BATTLE_DESTROYED) - e2:SetCondition(c36625827.descon) - e2:SetTarget(c36625827.destg) - e2:SetOperation(c36625827.desop) - c:RegisterEffect(e2) -end -function c36625827.addc(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if tc and tc:IsFaceup() and tc:IsCode(75041269) then - tc:AddCounter(0x1b,1) - end - tc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) - if tc and tc:IsFaceup() and tc:IsCode(75041269) then - tc:AddCounter(0x1b,1) - end -end -function c36625827.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c36625827.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c36625827.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c36625827.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c36625827.filter,tp,LOCATION_ONFIELD,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c36625827.filter,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c36625827.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--D-HERO ドレッドサーヴァント +function c36625827.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36625827,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c36625827.addc) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36625827,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c36625827.descon) + e2:SetTarget(c36625827.destg) + e2:SetOperation(c36625827.desop) + c:RegisterEffect(e2) +end +function c36625827.addc(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if tc and tc:IsFaceup() and tc:IsCode(75041269) then + tc:AddCounter(0x1b,1) + end + tc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if tc and tc:IsFaceup() and tc:IsCode(75041269) then + tc:AddCounter(0x1b,1) + end +end +function c36625827.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c36625827.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c36625827.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c36625827.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c36625827.filter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c36625827.filter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c36625827.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c36630403.lua b/script/c36630403.lua index 071156c4..4837ec7f 100644 --- a/script/c36630403.lua +++ b/script/c36630403.lua @@ -1,47 +1,47 @@ ---妖刀-不知火 -function c36630403.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1,36630403) - e1:SetCondition(aux.exccon) - e1:SetTarget(c36630403.target) - e1:SetOperation(c36630403.operation) - c:RegisterEffect(e1) -end -function c36630403.filter1(c,e,tp,lv) - local clv=c:GetLevel() - return clv>0 and not c:IsType(TYPE_TUNER) and c:IsRace(RACE_ZOMBIE) and c:IsAbleToRemove() - and Duel.IsExistingMatchingCard(c36630403.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,lv+clv) -end -function c36630403.filter2(c,e,tp,lv) - return c:GetLevel()==lv and c:IsRace(RACE_ZOMBIE) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c36630403.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c36630403.filter1(chkc,e,tp,e:GetHandler():GetLevel()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsAbleToRemove() - and Duel.IsExistingTarget(c36630403.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp,e:GetHandler():GetLevel()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c36630403.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,e:GetHandler():GetLevel()) - g:AddCard(e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c36630403.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end - local lv=c:GetLevel()+tc:GetLevel() - local g=Group.FromCards(c,tc) - if Duel.Remove(g,POS_FACEUP,REASON_EFFECT)==2 then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c36630403.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,lv) - if sg:GetCount()>0 then - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - end - end -end +--妖刀-不知火 +function c36630403.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1,36630403) + e1:SetCondition(aux.exccon) + e1:SetTarget(c36630403.target) + e1:SetOperation(c36630403.operation) + c:RegisterEffect(e1) +end +function c36630403.filter1(c,e,tp,lv) + local clv=c:GetLevel() + return clv>0 and not c:IsType(TYPE_TUNER) and c:IsRace(RACE_ZOMBIE) and c:IsAbleToRemove() + and Duel.IsExistingMatchingCard(c36630403.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,lv+clv) +end +function c36630403.filter2(c,e,tp,lv) + return c:GetLevel()==lv and c:IsRace(RACE_ZOMBIE) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c36630403.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c36630403.filter1(chkc,e,tp,e:GetHandler():GetLevel()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsAbleToRemove() + and Duel.IsExistingTarget(c36630403.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp,e:GetHandler():GetLevel()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c36630403.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,e:GetHandler():GetLevel()) + g:AddCard(e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c36630403.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end + local lv=c:GetLevel()+tc:GetLevel() + local g=Group.FromCards(c,tc) + if Duel.Remove(g,POS_FACEUP,REASON_EFFECT)==2 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c36630403.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,lv) + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c36643046.lua b/script/c36643046.lua index e756a3aa..a6fd198d 100644 --- a/script/c36643046.lua +++ b/script/c36643046.lua @@ -12,7 +12,7 @@ function c36643046.initial_effect(c) c:RegisterEffect(e1) end function c36643046.filter(c,e,tp) - return c:IsSetCard(0x17) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + return c:IsSetCard(0x1017) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c36643046.sumtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c36643046.filter(chkc,e,tp) end diff --git a/script/c36687247.lua b/script/c36687247.lua index 6076efed..9348fc58 100644 --- a/script/c36687247.lua +++ b/script/c36687247.lua @@ -12,6 +12,7 @@ function c36687247.initial_effect(c) --to grave local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c36687247.regop) c:RegisterEffect(e2) diff --git a/script/c36704180.lua b/script/c36704180.lua index ed088f3f..dbae91dc 100644 --- a/script/c36704180.lua +++ b/script/c36704180.lua @@ -1,67 +1,67 @@ ---幻影騎士団フラジャイルアーマー -function c36704180.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(36704180,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EVENT_DESTROYED) - e1:SetCountLimit(1,36704180) - e1:SetCondition(c36704180.condition) - e1:SetTarget(c36704180.target) - e1:SetOperation(c36704180.operation) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(36704180,1)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCountLimit(1,36704181) - e2:SetCost(c36704180.drcost) - e2:SetTarget(c36704180.drtg) - e2:SetOperation(c36704180.drop) - c:RegisterEffect(e2) -end -function c36704180.filter(c,tp) - return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsSetCard(0x10db) and c:GetPreviousControler()==tp - and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) -end -function c36704180.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c36704180.filter,1,nil,tp) -end -function c36704180.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c36704180.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c36704180.drcfilter(c) - return (c:IsSetCard(0x10db) or (c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP))) and c:IsAbleToGraveAsCost() -end -function c36704180.drcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() - and Duel.IsExistingMatchingCard(c36704180.drcfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) - Duel.DiscardHand(tp,c36704180.drcfilter,1,1,REASON_COST,nil) -end -function c36704180.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c36704180.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--幻影騎士団フラジャイルアーマー +function c36704180.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36704180,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_DESTROYED) + e1:SetCountLimit(1,36704180) + e1:SetCondition(c36704180.condition) + e1:SetTarget(c36704180.target) + e1:SetOperation(c36704180.operation) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36704180,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1,36704181) + e2:SetCost(c36704180.drcost) + e2:SetTarget(c36704180.drtg) + e2:SetOperation(c36704180.drop) + c:RegisterEffect(e2) +end +function c36704180.filter(c,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsSetCard(0x10db) and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) +end +function c36704180.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c36704180.filter,1,nil,tp) +end +function c36704180.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c36704180.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c36704180.drcfilter(c) + return (c:IsSetCard(0x10db) or (c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP))) and c:IsAbleToGraveAsCost() +end +function c36704180.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c36704180.drcfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) + Duel.DiscardHand(tp,c36704180.drcfilter,1,1,REASON_COST,nil) +end +function c36704180.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c36704180.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c36708764.lua b/script/c36708764.lua index a0ab944f..f64fc71e 100644 --- a/script/c36708764.lua +++ b/script/c36708764.lua @@ -1,67 +1,67 @@ ---ルーレット・スパイダー -function c36708764.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DICE+CATEGORY_DAMAGE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c36708764.condition) - e1:SetTarget(c36708764.target) - e1:SetOperation(c36708764.activate) - c:RegisterEffect(e1) -end -function c36708764.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c36708764.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local at=Duel.GetAttacker() - Duel.SetTargetCard(at) - Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) -end -function c36708764.activate(e,tp,eg,ep,ev,re,r,rp) - local dc=Duel.TossDice(tp,1) - if dc==1 then - local lp=Duel.GetLP(tp) - Duel.SetLP(tp,math.ceil(lp/2)) - return - elseif dc==2 then - Duel.ChangeAttackTarget(nil) - return - elseif dc==3 then - local bc=Duel.GetAttackTarget() - local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,0,bc) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(36708764,0)) - local tc=g:Select(tp,1,1,nil):GetFirst() - local at=Duel.GetAttacker() - if at:IsAttackable() and not at:IsImmuneToEffect(e) and not tc:IsImmuneToEffect(e) then - Duel.CalculateDamage(at,tc) - end - end - return - elseif dc==4 then - local at=Duel.GetAttacker() - local g=Duel.GetMatchingGroup(nil,tp,0,LOCATION_MZONE,at) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(36708764,0)) - local tc=g:Select(tp,1,1,nil):GetFirst() - local at=Duel.GetAttacker() - if at:IsAttackable() and not at:IsImmuneToEffect(e) and not tc:IsImmuneToEffect(e) then - Duel.CalculateDamage(at,tc) - end - end - return - elseif dc==5 then - local at=Duel.GetFirstTarget() - if at:IsRelateToEffect(e) and Duel.NegateAttack() and at:GetAttack()>0 then - Duel.Damage(1-tp,at:GetAttack(),REASON_EFFECT) - end - return - else - local at=Duel.GetFirstTarget() - if at:IsRelateToEffect(e) and at:IsControler(1-tp) and at:IsType(TYPE_MONSTER) then - Duel.Destroy(at,REASON_EFFECT) - end - end -end +--ルーレット・スパイダー +function c36708764.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DICE+CATEGORY_DAMAGE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c36708764.condition) + e1:SetTarget(c36708764.target) + e1:SetOperation(c36708764.activate) + c:RegisterEffect(e1) +end +function c36708764.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c36708764.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local at=Duel.GetAttacker() + Duel.SetTargetCard(at) + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c36708764.activate(e,tp,eg,ep,ev,re,r,rp) + local dc=Duel.TossDice(tp,1) + if dc==1 then + local lp=Duel.GetLP(tp) + Duel.SetLP(tp,math.ceil(lp/2)) + return + elseif dc==2 then + Duel.ChangeAttackTarget(nil) + return + elseif dc==3 then + local bc=Duel.GetAttackTarget() + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,0,bc) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(36708764,0)) + local tc=g:Select(tp,1,1,nil):GetFirst() + local at=Duel.GetAttacker() + if at:IsAttackable() and not at:IsImmuneToEffect(e) and not tc:IsImmuneToEffect(e) then + Duel.CalculateDamage(at,tc) + end + end + return + elseif dc==4 then + local at=Duel.GetAttacker() + local g=Duel.GetMatchingGroup(nil,tp,0,LOCATION_MZONE,at) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(36708764,0)) + local tc=g:Select(tp,1,1,nil):GetFirst() + local at=Duel.GetAttacker() + if at:IsAttackable() and not at:IsImmuneToEffect(e) and not tc:IsImmuneToEffect(e) then + Duel.CalculateDamage(at,tc) + end + end + return + elseif dc==5 then + local at=Duel.GetFirstTarget() + if at:IsRelateToEffect(e) and Duel.NegateAttack() and at:GetAttack()>0 then + Duel.Damage(1-tp,at:GetAttack(),REASON_EFFECT) + end + return + else + local at=Duel.GetFirstTarget() + if at:IsRelateToEffect(e) and at:IsControler(1-tp) and at:IsType(TYPE_MONSTER) then + Duel.Destroy(at,REASON_EFFECT) + end + end +end diff --git a/script/c36730805.lua b/script/c36730805.lua new file mode 100644 index 00000000..ce3deacd --- /dev/null +++ b/script/c36730805.lua @@ -0,0 +1,59 @@ +--スピードリフト +function c36730805.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c36730805.condition) + e1:SetTarget(c36730805.target) + e1:SetOperation(c36730805.activate) + c:RegisterEffect(e1) +end +function c36730805.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + if g:GetCount()~=1 then return false end + local c=g:GetFirst() + return c:IsFaceup() and c:IsType(TYPE_TUNER) +end +function c36730805.spfilter(c,e,tp) + return c:IsSetCard(0x2016) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c36730805.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c36730805.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c36730805.activate(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,c36730805.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetLabelObject(tc) + e1:SetOperation(c36730805.sumop) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_END) + e2:SetLabelObject(e1) + e2:SetOperation(c36730805.cedop) + Duel.RegisterEffect(e2,tp) + Duel.SpecialSummonComplete() + end +end +function c36730805.sumop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsContains(e:GetLabelObject()) then + e:SetLabel(1) + e:Reset() + else e:SetLabel(0) end +end +function c36730805.cedop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS) and e:GetLabelObject():GetLabel()==1 then + Duel.SetChainLimitTillChainEnd(aux.FALSE) + end + e:Reset() +end diff --git a/script/c36734924.lua b/script/c36734924.lua index 37d9d2b4..5c123ad4 100644 --- a/script/c36734924.lua +++ b/script/c36734924.lua @@ -1,79 +1,79 @@ ---青き眼の巫女 -function c36734924.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(36734924,0)) - e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SEARCH+CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_BECOME_TARGET) - e1:SetCountLimit(1,36734924) - e1:SetCondition(c36734924.thcon) - e1:SetTarget(c36734924.thtg) - e1:SetOperation(c36734924.thop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(36734924,1)) - e2:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,36734924) - e2:SetTarget(c36734924.sptg) - e2:SetOperation(c36734924.spop) - c:RegisterEffect(e2) -end -function c36734924.thcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsContains(e:GetHandler()) -end -function c36734924.tgfilter(c) - return c:IsFaceup() and c:IsType(TYPE_EFFECT) and c:IsAbleToGrave() -end -function c36734924.thfilter(c) - return c:IsSetCard(0xdd) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c36734924.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c36734924.tgfilter,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingMatchingCard(c36734924.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_MZONE) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c36734924.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local tg=Duel.SelectMatchingCard(tp,c36734924.tgfilter,tp,LOCATION_MZONE,0,1,1,nil) - local tc=tg:GetFirst() - if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) then - local g=Duel.GetMatchingGroup(c36734924.thfilter,tp,LOCATION_DECK,0,nil) - if g:GetCount()<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg1=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,sg1:GetFirst():GetCode()) - if g:GetCount()>0 and Duel.SelectYesNo(tp,210) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg2=g:Select(tp,1,1,nil) - sg1:Merge(sg2) - end - Duel.SendtoHand(sg1,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,sg1) - end -end -function c36734924.spfilter(c) - return c:IsFaceup() and c:IsSetCard(0xdd) and c:IsAbleToDeck() -end -function c36734924.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c36734924.spfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c36734924.spfilter,tp,LOCATION_MZONE,0,1,nil) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c36734924.spfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c36734924.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 and c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) - end -end +--青き眼の巫女 +function c36734924.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36734924,0)) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SEARCH+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_BECOME_TARGET) + e1:SetCountLimit(1,36734924) + e1:SetCondition(c36734924.thcon) + e1:SetTarget(c36734924.thtg) + e1:SetOperation(c36734924.thop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36734924,1)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,36734924) + e2:SetTarget(c36734924.sptg) + e2:SetOperation(c36734924.spop) + c:RegisterEffect(e2) +end +function c36734924.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsContains(e:GetHandler()) +end +function c36734924.tgfilter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) and c:IsAbleToGrave() +end +function c36734924.thfilter(c) + return c:IsSetCard(0xdd) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c36734924.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c36734924.tgfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c36734924.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c36734924.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tg=Duel.SelectMatchingCard(tp,c36734924.tgfilter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=tg:GetFirst() + if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) then + local g=Duel.GetMatchingGroup(c36734924.thfilter,tp,LOCATION_DECK,0,nil) + if g:GetCount()<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,sg1:GetFirst():GetCode()) + if g:GetCount()>0 and Duel.SelectYesNo(tp,210) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg2=g:Select(tp,1,1,nil) + sg1:Merge(sg2) + end + Duel.SendtoHand(sg1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg1) + end +end +function c36734924.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0xdd) and c:IsAbleToDeck() +end +function c36734924.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c36734924.spfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c36734924.spfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c36734924.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c36734924.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 and c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c36736723.lua b/script/c36736723.lua index 3dd86dca..95631167 100644 --- a/script/c36736723.lua +++ b/script/c36736723.lua @@ -51,7 +51,7 @@ function c36736723.thcost(e,tp,eg,ep,ev,re,r,rp,chk) Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) end function c36736723.filter(c) - return c:IsSetCard(0x17) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() + return c:IsSetCard(0x1017) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() end function c36736723.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c36736723.filter(chkc) end diff --git a/script/c36757171.lua b/script/c36757171.lua index ea7a3f32..f4199456 100644 --- a/script/c36757171.lua +++ b/script/c36757171.lua @@ -8,7 +8,7 @@ function c36757171.initial_effect(c) e1:SetCategory(CATEGORY_CONTROL+CATEGORY_HANDES) e1:SetDescription(aux.Stringid(36757171,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c36757171.cost) diff --git a/script/c36776089.lua b/script/c36776089.lua index 1c82b819..be178481 100644 --- a/script/c36776089.lua +++ b/script/c36776089.lua @@ -14,7 +14,9 @@ function c36776089.initial_effect(c) c:RegisterEffect(e1) --return local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36776089,0)) e2:SetCategory(CATEGORY_TOHAND) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_DAMAGE_STEP_END) e2:SetCondition(c36776089.retcon) diff --git a/script/c368382.lua b/script/c368382.lua index 63d9553b..cd42331c 100644 --- a/script/c368382.lua +++ b/script/c368382.lua @@ -1,51 +1,52 @@ ---ダイナミスト・ブラキオン -function c368382.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --disable - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DISABLE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c368382.negcon) - e2:SetOperation(c368382.negop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_SPSUMMON_PROC) - e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e3:SetRange(LOCATION_HAND) - e3:SetCondition(c368382.spcon) - c:RegisterEffect(e3) -end -function c368382.tfilter(c,tp) - return c:IsFaceup() and c:IsSetCard(0xd8) and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) -end -function c368382.negcon(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return e:GetHandler():GetFlagEffect(368382)==0 and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) - and g and g:IsExists(c368382.tfilter,1,e:GetHandler(),tp) and Duel.IsChainDisablable(ev) -end -function c368382.negop(e,tp,eg,ep,ev,re,r,rp) - if Duel.SelectYesNo(tp,aux.Stringid(368382,0)) then - e:GetHandler():RegisterFlagEffect(368382,RESET_EVENT+0x1fe0000,0,1) - Duel.NegateEffect(ev) - Duel.BreakEffect() - Duel.Destroy(e:GetHandler(),REASON_EFFECT) - end -end -function c368382.cfilter(c) - return c:IsFaceup() and c:IsCode(368382) -end -function c368382.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()==0 then return false end - local tg=g:GetMaxGroup(Card.GetAttack) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and not Duel.IsExistingMatchingCard(c368382.cfilter,tp,LOCATION_MZONE,0,1,nil) - and tg:IsExists(Card.IsControler,1,nil,1-tp) -end +--ダイナミスト・ブラキオン +function c368382.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --disable + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c368382.negcon) + e2:SetOperation(c368382.negop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SPSUMMON_PROC) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_HAND) + e3:SetCondition(c368382.spcon) + c:RegisterEffect(e3) +end +function c368382.tfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xd8) and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) +end +function c368382.negcon(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return e:GetHandler():GetFlagEffect(368382)==0 and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) + and g and g:IsExists(c368382.tfilter,1,e:GetHandler(),tp) and Duel.IsChainDisablable(ev) +end +function c368382.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(368382,0)) then + e:GetHandler():RegisterFlagEffect(368382,RESET_EVENT+0x1fe0000,0,1) + if Duel.NegateEffect(ev) then + Duel.BreakEffect() + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end + end +end +function c368382.cfilter(c) + return c:IsFaceup() and c:IsCode(368382) +end +function c368382.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then return false end + local tg=g:GetMaxGroup(Card.GetAttack) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and not Duel.IsExistingMatchingCard(c368382.cfilter,tp,LOCATION_MZONE,0,1,nil) + and tg:IsExists(Card.IsControler,1,nil,1-tp) +end diff --git a/script/c36857073.lua b/script/c36857073.lua index 2af5faa0..87369d2c 100644 --- a/script/c36857073.lua +++ b/script/c36857073.lua @@ -1,83 +1,82 @@ ---琰魔竜 レッド・デーモン・ベリアル -function c36857073.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure2(c,nil,aux.NonTuner(c36857073.sfilter)) - c:EnableReviveLimit() - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(36857073,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,36857073) - e1:SetCost(c36857073.spcost) - e1:SetTarget(c36857073.sptg1) - e1:SetOperation(c36857073.spop1) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(36857073,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_BATTLE_DAMAGE) - e2:SetCountLimit(1,36857074) - e2:SetCondition(c36857073.spcon2) - e2:SetTarget(c36857073.sptg2) - e2:SetOperation(c36857073.spop2) - c:RegisterEffect(e2) -end -function c36857073.sfilter(c) - return c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsType(TYPE_SYNCHRO) -end -function c36857073.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end - local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c36857073.spfilter1(c,e,tp) - return c:IsSetCard(0x1045) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c36857073.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c36857073.spfilter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c36857073.spfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c36857073.spfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c36857073.spop1(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c36857073.spcon2(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c36857073.spfilter2(c,e,tp) - return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c36857073.spfilter3,tp,LOCATION_GRAVE,0,1,nil,e,tp,c:GetLevel()) -end -function c36857073.spfilter3(c,e,tp,lv) - return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and c:GetLevel()==lv -end -function c36857073.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingMatchingCard(c36857073.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c36857073.spop2(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectMatchingCard(tp,c36857073.spfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g1:GetCount()==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectMatchingCard(tp,c36857073.spfilter3,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,g1:GetFirst():GetLevel()) - g1:Merge(g2) - if g1:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP_DEFENSE) -end +--琰魔竜 レッド・デーモン・ベリアル +function c36857073.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.NonTuner(c36857073.sfilter)) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36857073,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,36857073) + e1:SetCost(c36857073.spcost) + e1:SetTarget(c36857073.sptg1) + e1:SetOperation(c36857073.spop1) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36857073,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCountLimit(1,36857074) + e2:SetCondition(c36857073.spcon2) + e2:SetTarget(c36857073.sptg2) + e2:SetOperation(c36857073.spop2) + c:RegisterEffect(e2) +end +function c36857073.sfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsType(TYPE_SYNCHRO) +end +function c36857073.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c36857073.spfilter1(c,e,tp) + return c:IsSetCard(0x1045) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c36857073.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c36857073.spfilter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c36857073.spfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c36857073.spfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c36857073.spop1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c36857073.spcon2(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c36857073.spfilter2(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c36857073.spfilter3,tp,LOCATION_GRAVE,0,1,nil,e,tp,c:GetLevel()) +end +function c36857073.spfilter3(c,e,tp,lv) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and c:GetLevel()==lv +end +function c36857073.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c36857073.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c36857073.spop2(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c36857073.spfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g1:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c36857073.spfilter3),tp,LOCATION_GRAVE,0,1,1,nil,e,tp,g1:GetFirst():GetLevel()) + g1:Merge(g2) + Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP_DEFENSE) +end diff --git a/script/c36898537.lua b/script/c36898537.lua index 0c0ec123..5925c8e7 100644 --- a/script/c36898537.lua +++ b/script/c36898537.lua @@ -1,129 +1,129 @@ ---メタファイズ・ホルス・ドラゴン -function c36898537.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --mat check - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MATERIAL_CHECK) - e1:SetValue(c36898537.valcheck) - c:RegisterEffect(e1) - --immune - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(36898537,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCondition(c36898537.immcon) - e2:SetOperation(c36898537.immop) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) - --negate - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(36898537,1)) - e3:SetCategory(CATEGORY_DISABLE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCondition(c36898537.negcon) - e3:SetTarget(c36898537.negtg) - e3:SetOperation(c36898537.negop) - e3:SetLabelObject(e1) - c:RegisterEffect(e3) - --control - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(36898537,2)) - e4:SetCategory(CATEGORY_CONTROL) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetProperty(EFFECT_FLAG_DELAY) - e4:SetCondition(c36898537.ctcon) - e4:SetTarget(c36898537.cttg) - e4:SetOperation(c36898537.ctop) - e4:SetLabelObject(e1) - c:RegisterEffect(e4) -end -function c36898537.valcheck(e,c) - local g=c:GetMaterial() - local tpe=0 - local tc=g:GetFirst() - while tc do - if not tc:IsType(TYPE_TUNER) then - tpe=bit.bor(tpe,tc:GetType()) - end - tc=g:GetNext() - end - e:SetLabel(tpe) -end -function c36898537.immcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO - and bit.band(e:GetLabelObject():GetLabel(),TYPE_NORMAL)~=0 -end -function c36898537.immop(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_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetValue(c36898537.efilter) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end -function c36898537.efilter(e,te) - return te:GetOwner()~=e:GetOwner() -end -function c36898537.negcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO - and bit.band(e:GetLabelObject():GetLabel(),TYPE_EFFECT)~=0 -end -function c36898537.negfilter(c) - return c:IsFaceup() and not c:IsType(TYPE_NORMAL) -end -function c36898537.negtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c36898537.negfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c36898537.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c36898537.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c36898537.negop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - end -end -function c36898537.ctcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO - and bit.band(e:GetLabelObject():GetLabel(),TYPE_PENDULUM)~=0 -end -function c36898537.cttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,0,0) -end -function c36898537.ctop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_CONTROL) - local g=Duel.SelectMatchingCard(1-tp,Card.IsAbleToChangeControler,1-tp,LOCATION_MZONE,0,1,1,nil) - local tc=g:GetFirst() - if not tc then return end - if Duel.GetControl(tc,tp)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1,true) - end -end +--メタファイズ・ホルス・ドラゴン +function c36898537.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --mat check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MATERIAL_CHECK) + e1:SetValue(c36898537.valcheck) + c:RegisterEffect(e1) + --immune + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36898537,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c36898537.immcon) + e2:SetOperation(c36898537.immop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(36898537,1)) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCondition(c36898537.negcon) + e3:SetTarget(c36898537.negtg) + e3:SetOperation(c36898537.negop) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) + --control + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(36898537,2)) + e4:SetCategory(CATEGORY_CONTROL) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetProperty(EFFECT_FLAG_DELAY) + e4:SetCondition(c36898537.ctcon) + e4:SetTarget(c36898537.cttg) + e4:SetOperation(c36898537.ctop) + e4:SetLabelObject(e1) + c:RegisterEffect(e4) +end +function c36898537.valcheck(e,c) + local g=c:GetMaterial() + local tpe=0 + local tc=g:GetFirst() + while tc do + if not tc:IsType(TYPE_TUNER) then + tpe=bit.bor(tpe,tc:GetType()) + end + tc=g:GetNext() + end + e:SetLabel(tpe) +end +function c36898537.immcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO + and bit.band(e:GetLabelObject():GetLabel(),TYPE_NORMAL)~=0 +end +function c36898537.immop(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_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c36898537.efilter) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c36898537.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c36898537.negcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO + and bit.band(e:GetLabelObject():GetLabel(),TYPE_EFFECT)~=0 +end +function c36898537.negfilter(c) + return c:IsFaceup() and not c:IsType(TYPE_NORMAL) +end +function c36898537.negtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c36898537.negfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c36898537.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c36898537.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c36898537.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end +function c36898537.ctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO + and bit.band(e:GetLabelObject():GetLabel(),TYPE_PENDULUM)~=0 +end +function c36898537.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,0,0) +end +function c36898537.ctop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(1-tp,Card.IsAbleToChangeControler,1-tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if not tc then return end + if Duel.GetControl(tc,tp)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + end +end diff --git a/script/c36953371.lua b/script/c36953371.lua index 903cf95a..5b7c67a3 100644 --- a/script/c36953371.lua +++ b/script/c36953371.lua @@ -1,37 +1,37 @@ ---超重神鬼シュテンドウ-G -function c36953371.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),aux.NonTuner(Card.IsSetCard,0x9a),1) - c:EnableReviveLimit() - --defense attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DEFENSE_ATTACK) - e1:SetValue(1) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c36953371.descon) - e2:SetTarget(c36953371.destg) - e2:SetOperation(c36953371.desop) - c:RegisterEffect(e2) -end -function c36953371.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO - and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) -end -function c36953371.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c36953371.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c36953371.filter,tp,0,LOCATION_ONFIELD,1,nil) end - local g=Duel.GetMatchingGroup(c36953371.filter,tp,0,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c36953371.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c36953371.filter,tp,0,LOCATION_ONFIELD,nil) - Duel.Destroy(g,REASON_EFFECT) -end +--超重神鬼シュテンドウ-G +function c36953371.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),aux.NonTuner(Card.IsSetCard,0x9a),1) + c:EnableReviveLimit() + --defense attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DEFENSE_ATTACK) + e1:SetValue(1) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c36953371.descon) + e2:SetTarget(c36953371.destg) + e2:SetOperation(c36953371.desop) + c:RegisterEffect(e2) +end +function c36953371.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO + and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) +end +function c36953371.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c36953371.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c36953371.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c36953371.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c36953371.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c36953371.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c36956512.lua b/script/c36956512.lua index 14ff8cc6..dfe1ffde 100644 --- a/script/c36956512.lua +++ b/script/c36956512.lua @@ -1,4 +1,4 @@ ---Gadarla, the Mystery Dust Kaiju +--怪粉壊獣ガダーラ function c36956512.initial_effect(c) c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) --special summon rule diff --git a/script/c36970611.lua b/script/c36970611.lua index 1d039a37..6ef9c6e1 100644 --- a/script/c36970611.lua +++ b/script/c36970611.lua @@ -1,92 +1,92 @@ ---PSYフレーム・オーバーロード -function c36970611.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c36970611.target1) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(36970611,0)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetHintTiming(0,TIMING_END_PHASE) - e2:SetCost(c36970611.cost2) - e2:SetTarget(c36970611.target2) - e2:SetOperation(c36970611.operation) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(36970611,1)) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetRange(LOCATION_GRAVE) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetCondition(aux.exccon) - e3:SetCost(c36970611.thcost) - e3:SetTarget(c36970611.thtg) - e3:SetOperation(c36970611.thop) - c:RegisterEffect(e3) -end -function c36970611.cfilter(c) - return c:IsSetCard(0xc1) and c:IsType(TYPE_MONSTER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsAbleToRemoveAsCost() - and Duel.IsExistingTarget(Card.IsAbleToRemove,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) -end -function c36970611.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return c36970611.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end - if chk==0 then return true end - if c36970611.cost2(e,tp,eg,ep,ev,re,r,rp,0) and c36970611.target2(e,tp,eg,ep,ev,re,r,rp,0,chkc) - and Duel.SelectYesNo(tp,94) then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - e:SetOperation(c36970611.operation) - c36970611.cost2(e,tp,eg,ep,ev,re,r,rp,1) - c36970611.target2(e,tp,eg,ep,ev,re,r,rp,1,chkc) - else - e:SetProperty(0) - e:SetOperation(nil) - end -end -function c36970611.cost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c36970611.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) and e:GetHandler():GetFlagEffect(36970611)==0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local cg=Duel.SelectMatchingCard(tp,c36970611.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil) - Duel.Remove(cg,POS_FACEUP,REASON_COST) - e:GetHandler():RegisterFlagEffect(36970611,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c36970611.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsAbleToRemove() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c36970611.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Remove(tc,POS_FACEDOWN,REASON_EFFECT) - end -end -function c36970611.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c36970611.thfilter(c) - return c:IsSetCard(0xc1) and not c:IsCode(36970611) and c:IsAbleToHand() -end -function c36970611.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c36970611.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c36970611.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c36970611.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--PSYフレーム・オーバーロード +function c36970611.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c36970611.target1) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36970611,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCost(c36970611.cost2) + e2:SetTarget(c36970611.target2) + e2:SetOperation(c36970611.operation) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(36970611,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_GRAVE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCondition(aux.exccon) + e3:SetCost(c36970611.thcost) + e3:SetTarget(c36970611.thtg) + e3:SetOperation(c36970611.thop) + c:RegisterEffect(e3) +end +function c36970611.cfilter(c) + return c:IsSetCard(0xc1) and c:IsType(TYPE_MONSTER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsAbleToRemoveAsCost() + and Duel.IsExistingTarget(Card.IsAbleToRemove,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) +end +function c36970611.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c36970611.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return true end + if c36970611.cost2(e,tp,eg,ep,ev,re,r,rp,0) and c36970611.target2(e,tp,eg,ep,ev,re,r,rp,0,chkc) + and Duel.SelectYesNo(tp,94) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c36970611.operation) + c36970611.cost2(e,tp,eg,ep,ev,re,r,rp,1) + c36970611.target2(e,tp,eg,ep,ev,re,r,rp,1,chkc) + else + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c36970611.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c36970611.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) and e:GetHandler():GetFlagEffect(36970611)==0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local cg=Duel.SelectMatchingCard(tp,c36970611.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil) + Duel.Remove(cg,POS_FACEUP,REASON_COST) + e:GetHandler():RegisterFlagEffect(36970611,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c36970611.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsAbleToRemove() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c36970611.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEDOWN,REASON_EFFECT) + end +end +function c36970611.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c36970611.thfilter(c) + return c:IsSetCard(0xc1) and not c:IsCode(36970611) and c:IsAbleToHand() +end +function c36970611.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c36970611.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c36970611.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c36970611.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c36995273.lua b/script/c36995273.lua index fadad848..fea15c3b 100644 --- a/script/c36995273.lua +++ b/script/c36995273.lua @@ -1,41 +1,41 @@ ---縮退回路 -function c36995273.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EFFECT_TO_HAND_REDIRECT) - e2:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) - e2:SetTarget(c36995273.rmtg) - e2:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e2) - --cost - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCountLimit(1) - e3:SetCondition(c36995273.costcon) - e3:SetOperation(c36995273.costop) - c:RegisterEffect(e3) -end -function c36995273.rmtg(e,c) - return c:IsLocation(LOCATION_MZONE) or bit.band(c:GetOriginalType(),TYPE_MONSTER)~=0 -end -function c36995273.costcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c36995273.costop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end +--縮退回路 +function c36995273.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_TO_HAND_REDIRECT) + e2:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e2:SetTarget(c36995273.rmtg) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2) + --cost + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetCondition(c36995273.costcon) + e3:SetOperation(c36995273.costop) + c:RegisterEffect(e3) +end +function c36995273.rmtg(e,c) + return c:IsLocation(LOCATION_MZONE) or bit.band(c:GetOriginalType(),TYPE_MONSTER)~=0 +end +function c36995273.costcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c36995273.costop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end end \ No newline at end of file diff --git a/script/c37057012.lua b/script/c37057012.lua index ba39563a..c262fc88 100644 --- a/script/c37057012.lua +++ b/script/c37057012.lua @@ -1,22 +1,22 @@ ---サイバー・オーガ・2 -function c37057012.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeRep(c,64268668,2,false,false) - --atk up - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c37057012.atkcon) - e1:SetValue(c37057012.atkval) - c:RegisterEffect(e1) -end -function c37057012.atkcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL - and e:GetHandler()==Duel.GetAttacker() and Duel.GetAttackTarget()~=nil -end -function c37057012.atkval(e,c) - return Duel.GetAttackTarget():GetAttack()/2 -end +--サイバー・オーガ・2 +function c37057012.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeRep(c,64268668,2,false,false) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c37057012.atkcon) + e1:SetValue(c37057012.atkval) + c:RegisterEffect(e1) +end +function c37057012.atkcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL + and e:GetHandler()==Duel.GetAttacker() and Duel.GetAttackTarget()~=nil +end +function c37057012.atkval(e,c) + return Duel.GetAttackTarget():GetAttack()/2 +end diff --git a/script/c37057743.lua b/script/c37057743.lua index 6f7b4779..b75b2304 100644 --- a/script/c37057743.lua +++ b/script/c37057743.lua @@ -7,7 +7,7 @@ function c37057743.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(37057743,0)) e1:SetCategory(CATEGORY_TOHAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c37115575.lua b/script/c37115575.lua index 29e3f732..13ddd38c 100644 --- a/script/c37115575.lua +++ b/script/c37115575.lua @@ -1,131 +1,131 @@ ---Sin トゥルース・ドラゴン -function c37115575.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(37115575,0)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CHAIN_UNIQUE) - e1:SetCode(EVENT_DESTROYED) - e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e1:SetCondition(c37115575.spcon) - e1:SetCost(c37115575.spcost) - e1:SetTarget(c37115575.sptg) - e1:SetOperation(c37115575.spop) - c:RegisterEffect(e1) - --only 1 can exists - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - e2:SetCondition(c37115575.excon) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(1,1) - e4:SetCode(EFFECT_CANNOT_SUMMON) - e4:SetTarget(c37115575.sumlimit) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - c:RegisterEffect(e5) - local e6=e4:Clone() - e6:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - c:RegisterEffect(e6) - --selfdes - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e7:SetRange(LOCATION_MZONE) - e7:SetCode(EFFECT_SELF_DESTROY) - e7:SetCondition(c37115575.descon) - c:RegisterEffect(e7) - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_FIELD) - e8:SetCode(EFFECT_SELF_DESTROY) - e8:SetRange(LOCATION_MZONE) - e8:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e8:SetTarget(c37115575.destarget) - c:RegisterEffect(e8) - --spson - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_SINGLE) - e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e8:SetCode(EFFECT_SPSUMMON_CONDITION) - e8:SetValue(aux.FALSE) - c:RegisterEffect(e8) - --destroy - local e9=Effect.CreateEffect(c) - e9:SetDescription(aux.Stringid(37115575,1)) - e9:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e9:SetCategory(CATEGORY_DESTROY) - e9:SetCode(EVENT_BATTLE_DESTROYING) - e9:SetCondition(c37115575.decon) - e9:SetTarget(c37115575.detg) - e9:SetOperation(c37115575.deop) - c:RegisterEffect(e9) -end -function c37115575.sumlimit(e,c) - return c:IsSetCard(0x23) -end -function c37115575.exfilter(c) - return c:IsFaceup() and c:IsSetCard(0x23) -end -function c37115575.excon(e) - return Duel.IsExistingMatchingCard(c37115575.exfilter,0,LOCATION_MZONE,LOCATION_MZONE,1,nil) -end -function c37115575.cfilter(c,tp) - return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) - and c:IsPreviousSetCard(0x23) and c:GetPreviousCodeOnField()~=37115575 and not c:IsReason(REASON_RULE) -end -function c37115575.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c37115575.cfilter,1,nil,tp) -end -function c37115575.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) -end -function c37115575.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c37115575.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,true,true,POS_FACEUP)~=0 then - c:CompleteProcedure() - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and c:IsLocation(LOCATION_HAND) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c37115575.descon(e) - local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) - local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) - return (f1==nil or f1:IsFacedown()) and (f2==nil or f2:IsFacedown()) -end -function c37115575.destarget(e,c) - return c:IsSetCard(0x23) and c:GetFieldID()>e:GetHandler():GetFieldID() -end -function c37115575.decon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) -end -function c37115575.defilter(c) - return c:IsFaceup() -end -function c37115575.detg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c37115575.defilter,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c37115575.deop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c37115575.defilter,tp,0,LOCATION_MZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end +--Sin トゥルース・ドラゴン +function c37115575.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(37115575,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CHAIN_UNIQUE) + e1:SetCode(EVENT_DESTROYED) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetCondition(c37115575.spcon) + e1:SetCost(c37115575.spcost) + e1:SetTarget(c37115575.sptg) + e1:SetOperation(c37115575.spop) + c:RegisterEffect(e1) + --only 1 can exists + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + e2:SetCondition(c37115575.excon) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,1) + e4:SetCode(EFFECT_CANNOT_SUMMON) + e4:SetTarget(c37115575.sumlimit) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e5) + local e6=e4:Clone() + e6:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e6) + --selfdes + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e7:SetRange(LOCATION_MZONE) + e7:SetCode(EFFECT_SELF_DESTROY) + e7:SetCondition(c37115575.descon) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD) + e8:SetCode(EFFECT_SELF_DESTROY) + e8:SetRange(LOCATION_MZONE) + e8:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e8:SetTarget(c37115575.destarget) + c:RegisterEffect(e8) + --spson + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e8:SetCode(EFFECT_SPSUMMON_CONDITION) + e8:SetValue(aux.FALSE) + c:RegisterEffect(e8) + --destroy + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(37115575,1)) + e9:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e9:SetCategory(CATEGORY_DESTROY) + e9:SetCode(EVENT_BATTLE_DESTROYING) + e9:SetCondition(c37115575.decon) + e9:SetTarget(c37115575.detg) + e9:SetOperation(c37115575.deop) + c:RegisterEffect(e9) +end +function c37115575.sumlimit(e,c) + return c:IsSetCard(0x23) +end +function c37115575.exfilter(c) + return c:IsFaceup() and c:IsSetCard(0x23) +end +function c37115575.excon(e) + return Duel.IsExistingMatchingCard(c37115575.exfilter,0,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c37115575.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) + and c:IsPreviousSetCard(0x23) and c:GetPreviousCodeOnField()~=37115575 and not c:IsReason(REASON_RULE) +end +function c37115575.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c37115575.cfilter,1,nil,tp) +end +function c37115575.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c37115575.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c37115575.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,true,true,POS_FACEUP)~=0 then + c:CompleteProcedure() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and c:IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c37115575.descon(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1==nil or f1:IsFacedown()) and (f2==nil or f2:IsFacedown()) +end +function c37115575.destarget(e,c) + return c:IsSetCard(0x23) and c:GetFieldID()>e:GetHandler():GetFieldID() +end +function c37115575.decon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c37115575.defilter(c) + return c:IsFaceup() +end +function c37115575.detg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c37115575.defilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c37115575.deop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c37115575.defilter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c37120512.lua b/script/c37120512.lua index 97a94583..78f98e9e 100644 --- a/script/c37120512.lua +++ b/script/c37120512.lua @@ -1,14 +1,6 @@ --闇の破神剣 function c37120512.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(c37120512.target) - e1:SetOperation(c37120512.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,5 @@ function c37120512.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(-200) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c37120512.eqlimit) - c:RegisterEffect(e4) -end -function c37120512.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_DARK) -end -function c37120512.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) -end -function c37120512.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c37120512.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c37120512.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c37120512.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c37120512.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 + diff --git a/script/c37164373.lua b/script/c37164373.lua index 07239458..ebf9211d 100644 --- a/script/c37164373.lua +++ b/script/c37164373.lua @@ -9,7 +9,7 @@ function c37164373.initial_effect(c) e1:SetCategory(CATEGORY_TODECK) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCost(c37164373.cost) e1:SetTarget(c37164373.target) diff --git a/script/c3717252.lua b/script/c3717252.lua index 43f61cdd..67836296 100644 --- a/script/c3717252.lua +++ b/script/c3717252.lua @@ -1,59 +1,59 @@ ---シャドール・ビースト -function c3717252.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(3717252,0)) - e1:SetCategory(CATEGORY_DRAW+CATEGORY_HANDES) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,3717252) - e1:SetCost(c3717252.cost) - e1:SetTarget(c3717252.target) - e1:SetOperation(c3717252.operation) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(3717252,1)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,3717252) - e2:SetCondition(c3717252.drcon) - e2:SetCost(c3717252.cost) - e2:SetTarget(c3717252.drtg) - e2:SetOperation(c3717252.drop) - c:RegisterEffect(e2) -end -function c3717252.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end -function c3717252.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) - Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) -end -function c3717252.operation(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - if Duel.Draw(p,2,REASON_EFFECT)==2 then - Duel.ShuffleHand(tp) - Duel.BreakEffect() - Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) - end -end -function c3717252.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_EFFECT) -end -function c3717252.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c3717252.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--シャドール・ビースト +function c3717252.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3717252,0)) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,3717252) + e1:SetCost(c3717252.cost) + e1:SetTarget(c3717252.target) + e1:SetOperation(c3717252.operation) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(3717252,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,3717252) + e2:SetCondition(c3717252.drcon) + e2:SetCost(c3717252.cost) + e2:SetTarget(c3717252.drtg) + e2:SetOperation(c3717252.drop) + c:RegisterEffect(e2) +end +function c3717252.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c3717252.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) +end +function c3717252.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + if Duel.Draw(p,2,REASON_EFFECT)==2 then + Duel.ShuffleHand(tp) + Duel.BreakEffect() + Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + end +end +function c3717252.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) +end +function c3717252.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c3717252.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c37192109.lua b/script/c37192109.lua index 5a786ec0..f7da98ad 100644 --- a/script/c37192109.lua +++ b/script/c37192109.lua @@ -11,7 +11,7 @@ function c37192109.initial_effect(c) e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) + e1:SetHintTiming(0,0x1e0+TIMING_END_PHASE) e1:SetCountLimit(1) e1:SetTarget(c37192109.rmtg) e1:SetOperation(c37192109.rmop) diff --git a/script/c37198732.lua b/script/c37198732.lua index 0645049c..443a0090 100644 --- a/script/c37198732.lua +++ b/script/c37198732.lua @@ -1,61 +1,61 @@ ---レベル・マイスター -function c37198732.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCost(c37198732.cost) - e1:SetTarget(c37198732.target) - e1:SetOperation(c37198732.activate) - c:RegisterEffect(e1) -end -function c37198732.cfilter(c) - return c:GetLevel()>0 and c:IsAbleToGraveAsCost() -end -function c37198732.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if Duel.IsExistingMatchingCard(c37198732.cfilter,tp,LOCATION_HAND,0,1,nil) then - e:SetLabel(1) - return true - else - return false - end - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c37198732.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) - e:SetLabelObject(g:GetFirst()) - g:GetFirst():CreateEffectRelation(e) -end -function c37198732.filter(c) - return c:IsFaceup() and c:GetLevel()>0 -end -function c37198732.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c37198732.filter(chkc) end - if chk==0 then - if e:GetLabel()~=1 then return false end - e:SetLabel(0) - return Duel.IsExistingTarget(c37198732.filter,tp,LOCATION_MZONE,0,1,nil) - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c37198732.filter,tp,LOCATION_MZONE,0,1,2,nil) -end -function c37198732.activate(e,tp,eg,ep,ev,re,r,rp) - local lc=e:GetLabelObject() - if not lc:IsRelateToEffect(e) then return end - local lv=lc:GetLevel() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local tc=g:GetFirst() - while tc do - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetValue(lv) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end - tc=g:GetNext() - end -end +--レベル・マイスター +function c37198732.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c37198732.cost) + e1:SetTarget(c37198732.target) + e1:SetOperation(c37198732.activate) + c:RegisterEffect(e1) +end +function c37198732.cfilter(c) + return c:GetLevel()>0 and c:IsAbleToGraveAsCost() +end +function c37198732.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if Duel.IsExistingMatchingCard(c37198732.cfilter,tp,LOCATION_HAND,0,1,nil) then + e:SetLabel(1) + return true + else + return false + end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c37198732.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + e:SetLabelObject(g:GetFirst()) + g:GetFirst():CreateEffectRelation(e) +end +function c37198732.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c37198732.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c37198732.filter(chkc) end + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingTarget(c37198732.filter,tp,LOCATION_MZONE,0,1,nil) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c37198732.filter,tp,LOCATION_MZONE,0,1,2,nil) +end +function c37198732.activate(e,tp,eg,ep,ev,re,r,rp) + local lc=e:GetLabelObject() + if not lc:IsRelateToEffect(e) then return end + local lv=lc:GetLevel() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + while tc do + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end +end diff --git a/script/c37209439.lua b/script/c37209439.lua index 6e647a5c..5fa34bf0 100644 --- a/script/c37209439.lua +++ b/script/c37209439.lua @@ -1,128 +1,128 @@ ---誤封の契約書 -function c37209439.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c37209439.target) - c:RegisterEffect(e1) - --disable - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(37209439,0)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCountLimit(1) - e2:SetCondition(c37209439.negcon) - e2:SetCost(c37209439.negcost) - e2:SetOperation(c37209439.negop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(37209439,1)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c37209439.damcon) - e3:SetCost(c37209439.damcost) - e3:SetTarget(c37209439.damtg) - e3:SetOperation(c37209439.damop) - c:RegisterEffect(e3) -end -function c37209439.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local b1=c37209439.negcon(e,tp,eg,ep,ev,re,r,rp) - local b2=c37209439.damcon(e,tp,eg,ep,ev,re,r,rp) and Duel.GetCurrentPhase()==PHASE_STANDBY - if (b1 or b2) and Duel.SelectYesNo(tp,94) then - local c=e:GetHandler() - local op=0 - if b1 and b2 then - op=Duel.SelectOption(tp,aux.Stringid(37209439,0),aux.Stringid(37209439,1)) - elseif b1 then - op=Duel.SelectOption(tp,aux.Stringid(37209439,0)) - else op=Duel.SelectOption(tp,aux.Stringid(37209439,1))+1 end - if op==0 then - c:RegisterFlagEffect(37209439,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - e:SetCategory(0) - e:SetOperation(c37209439.negop) - else - c:RegisterFlagEffect(37209440,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - c37209439.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetCategory(CATEGORY_DAMAGE) - e:SetOperation(c37209439.damop) - end - else - e:SetCategory(0) - e:SetOperation(nil) - end -end -function c37209439.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xaf) -end -function c37209439.negcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c37209439.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c37209439.negcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(37209439)==0 end - e:GetHandler():RegisterFlagEffect(37209439,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c37209439.negop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local fid=c:GetFieldID() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_DISABLE) - e1:SetRange(LOCATION_SZONE) - e1:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) - e1:SetTarget(c37209439.distg) - e1:SetLabel(fid) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c37209439.disop) - e2:SetLabel(fid) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(c37209439.distg) - e3:SetLabel(fid) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) -end -function c37209439.distg(e,c) - return c:GetFieldID()~=e:GetLabel() and c:IsType(TYPE_TRAP) -end -function c37209439.disop(e,tp,eg,ep,ev,re,r,rp) - local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) - if tl==LOCATION_SZONE and re:IsActiveType(TYPE_TRAP) and re:GetHandler():GetFieldID()~=e:GetLabel() then - Duel.NegateEffect(ev) - end -end -function c37209439.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c37209439.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(37209440)==0 end - e:GetHandler():RegisterFlagEffect(37209440,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c37209439.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) -end -function c37209439.damop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--誤封の契約書 +function c37209439.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c37209439.target) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(37209439,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1) + e2:SetCondition(c37209439.negcon) + e2:SetCost(c37209439.negcost) + e2:SetOperation(c37209439.negop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(37209439,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c37209439.damcon) + e3:SetCost(c37209439.damcost) + e3:SetTarget(c37209439.damtg) + e3:SetOperation(c37209439.damop) + c:RegisterEffect(e3) +end +function c37209439.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local b1=c37209439.negcon(e,tp,eg,ep,ev,re,r,rp) + local b2=c37209439.damcon(e,tp,eg,ep,ev,re,r,rp) and Duel.GetCurrentPhase()==PHASE_STANDBY + if (b1 or b2) and Duel.SelectYesNo(tp,94) then + local c=e:GetHandler() + local op=0 + if b1 and b2 then + op=Duel.SelectOption(tp,aux.Stringid(37209439,0),aux.Stringid(37209439,1)) + elseif b1 then + op=Duel.SelectOption(tp,aux.Stringid(37209439,0)) + else op=Duel.SelectOption(tp,aux.Stringid(37209439,1))+1 end + if op==0 then + c:RegisterFlagEffect(37209439,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:SetCategory(0) + e:SetOperation(c37209439.negop) + else + c:RegisterFlagEffect(37209440,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + c37209439.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetCategory(CATEGORY_DAMAGE) + e:SetOperation(c37209439.damop) + end + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c37209439.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xaf) +end +function c37209439.negcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c37209439.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c37209439.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(37209439)==0 end + e:GetHandler():RegisterFlagEffect(37209439,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c37209439.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local fid=c:GetFieldID() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e1:SetTarget(c37209439.distg) + e1:SetLabel(fid) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c37209439.disop) + e2:SetLabel(fid) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c37209439.distg) + e3:SetLabel(fid) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c37209439.distg(e,c) + return c:GetFieldID()~=e:GetLabel() and c:IsType(TYPE_TRAP) +end +function c37209439.disop(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if tl==LOCATION_SZONE and re:IsActiveType(TYPE_TRAP) and re:GetHandler():GetFieldID()~=e:GetLabel() then + Duel.NegateEffect(ev) + end +end +function c37209439.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c37209439.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(37209440)==0 end + e:GetHandler():RegisterFlagEffect(37209440,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c37209439.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c37209439.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c37241623.lua b/script/c37241623.lua index ebfa646c..05e3293c 100644 --- a/script/c37241623.lua +++ b/script/c37241623.lua @@ -37,8 +37,7 @@ function c37241623.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c37241623.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(re:GetHandler(),REASON_EFFECT) end end diff --git a/script/c37279508.lua b/script/c37279508.lua index e0f8f23a..d3656f42 100644 --- a/script/c37279508.lua +++ b/script/c37279508.lua @@ -7,6 +7,7 @@ function c37279508.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(37279508,0)) e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_ATTACK_ANNOUNCE) diff --git a/script/c37322745.lua b/script/c37322745.lua index b3716f94..715e5357 100644 --- a/script/c37322745.lua +++ b/script/c37322745.lua @@ -1,39 +1,39 @@ ---ナチュルの森 -function c37322745.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetDescription(aux.Stringid(37322745,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_CHAIN_NEGATED) - e2:SetCondition(c37322745.condition) - e2:SetTarget(c37322745.target) - e2:SetOperation(c37322745.operation) - c:RegisterEffect(e2) -end -function c37322745.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c37322745.filter(c) - return c:IsLevelBelow(3) and c:IsSetCard(0x2a) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c37322745.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) - and Duel.IsExistingMatchingCard(c37322745.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c37322745.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c37322745.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ナチュルの森 +function c37322745.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetDescription(aux.Stringid(37322745,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_CHAIN_NEGATED) + e2:SetCondition(c37322745.condition) + e2:SetTarget(c37322745.target) + e2:SetOperation(c37322745.operation) + c:RegisterEffect(e2) +end +function c37322745.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c37322745.filter(c) + return c:IsLevelBelow(3) and c:IsSetCard(0x2a) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c37322745.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.IsExistingMatchingCard(c37322745.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c37322745.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c37322745.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c3734202.lua b/script/c3734202.lua index 1f43ff76..05cc4232 100644 --- a/script/c3734202.lua +++ b/script/c3734202.lua @@ -1,163 +1,163 @@ ---ナチュルの神星樹 -function c3734202.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c3734202.target) - e1:SetOperation(c3734202.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(3734202,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCountLimit(1,3734202) - e2:SetCost(c3734202.spcost1) - e2:SetTarget(c3734202.sptg1) - e2:SetOperation(c3734202.spop1) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(3734202,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetCountLimit(1,3734202) - e3:SetCost(c3734202.spcost2) - e3:SetTarget(c3734202.sptg2) - e3:SetOperation(c3734202.spop2) - c:RegisterEffect(e3) - --search - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(3734202,2)) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetTarget(c3734202.thtg) - e4:SetOperation(c3734202.thop) - c:RegisterEffect(e4) -end -function c3734202.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local b1=Duel.CheckReleaseGroup(tp,c3734202.cfilter1,1,nil) - and Duel.IsExistingMatchingCard(c3734202.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) - local b2=Duel.CheckReleaseGroup(tp,c3734202.cfilter2,1,nil) - and Duel.IsExistingMatchingCard(c3734202.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp) - if Duel.GetFlagEffect(tp,3734202)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and (b1 or b2) and Duel.SelectYesNo(tp,94) then - local opt=0 - if b1 and b2 then - opt=Duel.SelectOption(tp,aux.Stringid(3734202,0),aux.Stringid(3734202,1)) - elseif b1 then - opt=Duel.SelectOption(tp,aux.Stringid(3734202,0)) - else - opt=Duel.SelectOption(tp,aux.Stringid(3734202,1))+1 - end - if opt==0 then - local g=Duel.SelectReleaseGroup(tp,c3734202.cfilter1,1,1,nil) - Duel.Release(g,REASON_COST) - else - local g=Duel.SelectReleaseGroup(tp,c3734202.cfilter2,1,1,nil) - Duel.Release(g,REASON_COST) - end - Duel.RegisterFlagEffect(tp,3734202,RESET_PHASE+PHASE_END,0,1) - e:SetCategory(CATEGORY_SPECIAL_SUMMON) - e:SetLabel(opt+1) - else - e:SetCategory(0) - e:SetLabel(0) - end -end -function c3734202.activate(e,tp,eg,ep,ev,re,r,rp) - local opt=e:GetLabel() - if opt==0 or not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if opt==1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c3734202.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c3734202.spfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end - end -end -function c3734202.cfilter1(c) - return c:IsRace(RACE_INSECT) and c:IsAttribute(ATTRIBUTE_EARTH) -end -function c3734202.spcost1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,3734202)==0 - and Duel.CheckReleaseGroup(tp,c3734202.cfilter1,1,nil) end - Duel.RegisterFlagEffect(tp,3734202,RESET_PHASE+PHASE_END,0,1) - local g=Duel.SelectReleaseGroup(tp,c3734202.cfilter1,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c3734202.spfilter1(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_PLANT) and c:IsAttribute(ATTRIBUTE_EARTH) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c3734202.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c3734202.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c3734202.spop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c3734202.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c3734202.cfilter2(c) - return c:IsRace(RACE_PLANT) and c:IsAttribute(ATTRIBUTE_EARTH) -end -function c3734202.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,3734202)==0 - and Duel.CheckReleaseGroup(tp,c3734202.cfilter2,1,nil) end - Duel.RegisterFlagEffect(tp,3734202,RESET_PHASE+PHASE_END,0,1) - local g=Duel.SelectReleaseGroup(tp,c3734202.cfilter2,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c3734202.spfilter2(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_INSECT) and c:IsAttribute(ATTRIBUTE_EARTH) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c3734202.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c3734202.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c3734202.spop2(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c3734202.spfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c3734202.thfilter(c) - return c:IsSetCard(0x2a) and not c:IsCode(3734202) and c:IsAbleToHand() -end -function c3734202.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c3734202.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c3734202.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ナチュルの神星樹 +function c3734202.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c3734202.target) + e1:SetOperation(c3734202.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(3734202,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1,3734202) + e2:SetCost(c3734202.spcost1) + e2:SetTarget(c3734202.sptg1) + e2:SetOperation(c3734202.spop1) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(3734202,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1,3734202) + e3:SetCost(c3734202.spcost2) + e3:SetTarget(c3734202.sptg2) + e3:SetOperation(c3734202.spop2) + c:RegisterEffect(e3) + --search + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(3734202,2)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetTarget(c3734202.thtg) + e4:SetOperation(c3734202.thop) + c:RegisterEffect(e4) +end +function c3734202.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local b1=Duel.CheckReleaseGroup(tp,c3734202.cfilter1,1,nil) + and Duel.IsExistingMatchingCard(c3734202.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) + local b2=Duel.CheckReleaseGroup(tp,c3734202.cfilter2,1,nil) + and Duel.IsExistingMatchingCard(c3734202.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp) + if Duel.GetFlagEffect(tp,3734202)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and (b1 or b2) and Duel.SelectYesNo(tp,94) then + local opt=0 + if b1 and b2 then + opt=Duel.SelectOption(tp,aux.Stringid(3734202,0),aux.Stringid(3734202,1)) + elseif b1 then + opt=Duel.SelectOption(tp,aux.Stringid(3734202,0)) + else + opt=Duel.SelectOption(tp,aux.Stringid(3734202,1))+1 + end + if opt==0 then + local g=Duel.SelectReleaseGroup(tp,c3734202.cfilter1,1,1,nil) + Duel.Release(g,REASON_COST) + else + local g=Duel.SelectReleaseGroup(tp,c3734202.cfilter2,1,1,nil) + Duel.Release(g,REASON_COST) + end + Duel.RegisterFlagEffect(tp,3734202,RESET_PHASE+PHASE_END,0,1) + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetLabel(opt+1) + else + e:SetCategory(0) + e:SetLabel(0) + end +end +function c3734202.activate(e,tp,eg,ep,ev,re,r,rp) + local opt=e:GetLabel() + if opt==0 or not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if opt==1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c3734202.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c3734202.spfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end +function c3734202.cfilter1(c) + return c:IsRace(RACE_INSECT) and c:IsAttribute(ATTRIBUTE_EARTH) +end +function c3734202.spcost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,3734202)==0 + and Duel.CheckReleaseGroup(tp,c3734202.cfilter1,1,nil) end + Duel.RegisterFlagEffect(tp,3734202,RESET_PHASE+PHASE_END,0,1) + local g=Duel.SelectReleaseGroup(tp,c3734202.cfilter1,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c3734202.spfilter1(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_PLANT) and c:IsAttribute(ATTRIBUTE_EARTH) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c3734202.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c3734202.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c3734202.spop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c3734202.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c3734202.cfilter2(c) + return c:IsRace(RACE_PLANT) and c:IsAttribute(ATTRIBUTE_EARTH) +end +function c3734202.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,3734202)==0 + and Duel.CheckReleaseGroup(tp,c3734202.cfilter2,1,nil) end + Duel.RegisterFlagEffect(tp,3734202,RESET_PHASE+PHASE_END,0,1) + local g=Duel.SelectReleaseGroup(tp,c3734202.cfilter2,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c3734202.spfilter2(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_INSECT) and c:IsAttribute(ATTRIBUTE_EARTH) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c3734202.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c3734202.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c3734202.spop2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c3734202.spfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c3734202.thfilter(c) + return c:IsSetCard(0x2a) and not c:IsCode(3734202) and c:IsAbleToHand() +end +function c3734202.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c3734202.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c3734202.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c37364101.lua b/script/c37364101.lua index 02745376..3b033a19 100644 --- a/script/c37364101.lua +++ b/script/c37364101.lua @@ -1,102 +1,71 @@ ---ストイック・チャレンジ -function c37364101.initial_effect(c) - c:SetUniqueOnField(1,0,37364101) - --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(c37364101.target) - e1:SetOperation(c37364101.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(c37364101.eqlimit) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c37364101.atkval) - c:RegisterEffect(e3) - --damage change - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CHANGE_DAMAGE) - e4:SetRange(LOCATION_SZONE) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(0,1) - e4:SetValue(c37364101.damval) - c:RegisterEffect(e4) - -- - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_EQUIP) - e5:SetCode(EFFECT_CANNOT_TRIGGER) - c:RegisterEffect(e5) - --tograve - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(37364101,0)) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_PHASE+PHASE_END) - e6:SetRange(LOCATION_SZONE) - e6:SetCountLimit(1) - e6:SetCondition(c37364101.tgcon) - e6:SetTarget(c37364101.tgtg) - e6:SetOperation(c37364101.tgop) - c:RegisterEffect(e6) - --destroy - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e7:SetCode(EVENT_LEAVE_FIELD) - e7:SetOperation(c37364101.desop) - c:RegisterEffect(e7) -end -function c37364101.eqlimit(e,c) - return c:GetOverlayCount()>0 -end -function c37364101.filter(c) - return c:IsFaceup() and c:GetOverlayCount()>0 -end -function c37364101.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c37364101.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c37364101.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c37364101.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c37364101.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 c37364101.atkval(e,c) - return Duel.GetOverlayCount(e:GetHandlerPlayer(),1,0)*600 -end -function c37364101.damval(e,re,dam,r,rp,rc) - if bit.band(r,REASON_BATTLE)~=0 and rc==e:GetHandler():GetEquipTarget() and rc:GetBattleTarget()~=nil then - return dam*2 - else return dam end -end -function c37364101.tgcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c37364101.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,e:GetHandler(),1,0,0) -end -function c37364101.tgop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) - end -end -function c37364101.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - if tc and tc:IsLocation(LOCATION_MZONE) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--ストイック・チャレンジ +function c37364101.initial_effect(c) + c:SetUniqueOnField(1,0,37364101) + aux.AddEquipProcedure(c,nil,c37364101.filter) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c37364101.atkval) + c:RegisterEffect(e3) + --damage change + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CHANGE_DAMAGE) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(0,1) + e4:SetValue(c37364101.damval) + c:RegisterEffect(e4) + -- + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_CANNOT_TRIGGER) + c:RegisterEffect(e5) + --tograve + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(37364101,0)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetRange(LOCATION_SZONE) + e6:SetCountLimit(1) + e6:SetCondition(c37364101.tgcon) + e6:SetTarget(c37364101.tgtg) + e6:SetOperation(c37364101.tgop) + c:RegisterEffect(e6) + --destroy + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e7:SetCode(EVENT_LEAVE_FIELD) + e7:SetOperation(c37364101.desop) + c:RegisterEffect(e7) +end +function c37364101.filter(c) + return c:GetOverlayCount()>0 +end +function c37364101.atkval(e,c) + return Duel.GetOverlayCount(e:GetHandlerPlayer(),1,0)*600 +end +function c37364101.damval(e,re,dam,r,rp,rc) + if bit.band(r,REASON_BATTLE)~=0 and rc==e:GetHandler():GetEquipTarget() and rc:GetBattleTarget()~=nil then + return dam*2 + else return dam end +end +function c37364101.tgcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c37364101.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,e:GetHandler(),1,0,0) +end +function c37364101.tgop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) + end +end +function c37364101.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c37383714.lua b/script/c37383714.lua index f56ee5d8..dd8b5328 100644 --- a/script/c37383714.lua +++ b/script/c37383714.lua @@ -1,40 +1,40 @@ ---魂の綱 -function c37383714.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c37383714.condition) - e1:SetCost(c37383714.cost) - e1:SetTarget(c37383714.target) - e1:SetOperation(c37383714.activate) - c:RegisterEffect(e1) -end -function c37383714.cfilter(c,tp) - return c:IsReason(REASON_EFFECT) and c:IsReason(REASON_DESTROY) and c:IsType(TYPE_MONSTER) - and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) -end -function c37383714.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c37383714.cfilter,1,nil,tp) -end -function c37383714.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 c37383714.spfilter(c,e,tp) - return c:GetLevel()==4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c37383714.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c37383714.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c37383714.activate(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,c37383714.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--魂の綱 +function c37383714.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c37383714.condition) + e1:SetCost(c37383714.cost) + e1:SetTarget(c37383714.target) + e1:SetOperation(c37383714.activate) + c:RegisterEffect(e1) +end +function c37383714.cfilter(c,tp) + return c:IsReason(REASON_EFFECT) and c:IsReason(REASON_DESTROY) and c:IsType(TYPE_MONSTER) + and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c37383714.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c37383714.cfilter,1,nil,tp) +end +function c37383714.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 c37383714.spfilter(c,e,tp) + return c:GetLevel()==4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c37383714.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c37383714.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c37383714.activate(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,c37383714.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c37390590.lua b/script/c37390590.lua new file mode 100644 index 00000000..0b83e435 --- /dev/null +++ b/script/c37390590.lua @@ -0,0 +1,83 @@ +--鎖付きブーメラン +function c37390590.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c37390590.condition) + e1:SetTarget(c37390590.target) + e1:SetOperation(c37390590.operation) + c:RegisterEffect(e1) +end +function c37390590.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c37390590.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then + if e:GetLabel()==0 then + return false + elseif e:GetLabel()==1 then + return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() + else return false end + end + local b1=Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and Duel.GetTurnPlayer()~=tp + and Duel.GetAttacker():IsLocation(LOCATION_MZONE) and Duel.GetAttacker():IsCanBeEffectTarget(e) + local b2=e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) + if chk==0 then return b1 or b2 end + local opt=0 + if b1 and b2 then + opt=Duel.SelectOption(tp,aux.Stringid(37390590,0),aux.Stringid(37390590,1),aux.Stringid(37390590,2)) + elseif b1 then + opt=Duel.SelectOption(tp,aux.Stringid(37390590,0)) + else + opt=Duel.SelectOption(tp,aux.Stringid(37390590,1))+1 + end + e:SetLabel(opt) + if opt==0 or opt==2 then + Duel.SetTargetCard(Duel.GetAttacker()) + end + if opt==1 or opt==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + end +end +function c37390590.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local opt=e:GetLabel() + if opt==0 or opt==2 then + local tc=Duel.GetAttacker() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENCE) + end + end + if opt==1 or opt==2 then + local tc=e:GetLabelObject() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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(c37390590.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end + end +end +function c37390590.eqlimit(e,c) + return c:GetControler()==e:GetOwnerPlayer() +end diff --git a/script/c37421075.lua b/script/c37421075.lua index 5552aa47..cf77a62c 100644 --- a/script/c37421075.lua +++ b/script/c37421075.lua @@ -38,11 +38,10 @@ end function c37421075.activate(e,tp,eg,ep,ev,re,r,rp) if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - local g=Duel.GetMatchingGroup(c37421075.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil,e,tp) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c37421075.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,nil,e,tp) if g:GetCount()>1 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=g:Select(tp,2,2,nil) - if sg:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c37445295.lua b/script/c37445295.lua index d9b621e0..547d73b0 100644 --- a/script/c37445295.lua +++ b/script/c37445295.lua @@ -1,57 +1,57 @@ ---シャドール・ファルコン -function c37445295.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(37445295,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,37445295) - e1:SetTarget(c37445295.target) - e1:SetOperation(c37445295.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(37445295,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,37445295) - e2:SetCondition(c37445295.spcon) - e2:SetTarget(c37445295.sptg) - e2:SetOperation(c37445295.spop) - c:RegisterEffect(e2) -end -function c37445295.filter(c,e,tp) - return c:IsSetCard(0x9d) and not c:IsCode(37445295) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) -end -function c37445295.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c37445295.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c37445295.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c37445295.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c37445295.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) - Duel.ConfirmCards(1-tp,tc) - end -end -function c37445295.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_EFFECT) -end -function c37445295.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c37445295.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE)~=0 then - Duel.ConfirmCards(1-tp,c) - end -end +--シャドール・ファルコン +function c37445295.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(37445295,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,37445295) + e1:SetTarget(c37445295.target) + e1:SetOperation(c37445295.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(37445295,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,37445295) + e2:SetCondition(c37445295.spcon) + e2:SetTarget(c37445295.sptg) + e2:SetOperation(c37445295.spop) + c:RegisterEffect(e2) +end +function c37445295.filter(c,e,tp) + return c:IsSetCard(0x9d) and not c:IsCode(37445295) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) +end +function c37445295.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c37445295.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c37445295.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c37445295.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c37445295.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + Duel.ConfirmCards(1-tp,tc) + end +end +function c37445295.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) +end +function c37445295.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c37445295.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE)~=0 then + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c37457534.lua b/script/c37457534.lua index 2a2f3185..6749bef4 100644 --- a/script/c37457534.lua +++ b/script/c37457534.lua @@ -1,27 +1,12 @@ --古代の機械戦車 function c37457534.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(c37457534.target) - e1:SetOperation(c37457534.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x7)) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(600) 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(c37457534.eqlimit) - c:RegisterEffect(e3) --damage local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(37457534,0)) @@ -34,25 +19,6 @@ function c37457534.initial_effect(c) e4:SetOperation(c37457534.damop) c:RegisterEffect(e4) end -function c37457534.eqlimit(e,c) - return c:IsSetCard(0x7) -end -function c37457534.filter(c) - return c:IsFaceup() and c:IsSetCard(0x7) -end -function c37457534.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c37457534.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c37457534.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c37457534.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c37457534.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 c37457534.damcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsReason(REASON_DESTROY) end diff --git a/script/c37469904.lua b/script/c37469904.lua new file mode 100644 index 00000000..38b0b050 --- /dev/null +++ b/script/c37469904.lua @@ -0,0 +1,41 @@ +--デュエリスト・アドベント +--Duelist Alliance +--Scripted by Eerie Code +function c37469904.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,37469904+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c37469904.condition) + e1:SetTarget(c37469904.target) + e1:SetOperation(c37469904.activate) + c:RegisterEffect(e1) +end +function c37469904.cfilter(c) + return c:GetSequence()==6 or c:GetSequence()==7 +end +function c37469904.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c37469904.cfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) +end +function c37469904.filter(c) + if not c:IsAbleToHand() then return false end + if c:IsType(TYPE_MONSTER) then + return c:IsType(TYPE_PENDULUM) and (c:IsSetCard(0xf2) or c:IsCode(92746535,75195825,69512157,7127502,16178681,47075569)) + else + return c:IsSetCard(0xf2) or c:IsCode(65646587,37803970,2359348,76660409,53208660,100214004,68477598,60434189,77826734,74926274,69982329,83461421) + end +end +function c37469904.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c37469904.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c37469904.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c37469904.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c37511832.lua b/script/c37511832.lua index 3c8e6ede..c7c998f8 100644 --- a/script/c37511832.lua +++ b/script/c37511832.lua @@ -1,67 +1,67 @@ ---サルガッソの灯台 -function c37511832.initial_effect(c) - --damage change - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c37511832.condition) - e1:SetOperation(c37511832.operation) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(37511832) - e2:SetRange(LOCATION_GRAVE) - e2:SetTargetRange(1,0) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(37511832,0)) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c37511832.thcon) - e3:SetTarget(c37511832.thtg) - e3:SetOperation(c37511832.thop) - c:RegisterEffect(e3) -end -function c37511832.condition(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_SPELL) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) -end -function c37511832.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(c37511832.damcon) - e1:SetReset(RESET_CHAIN) - Duel.RegisterEffect(e1,tp) -end -function c37511832.damcon(e,re,val,r,rp,rc) - local cc=Duel.GetCurrentChain() - if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end - local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) - if cid==e:GetLabel() then return 0 else return val end -end -function c37511832.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsPreviousPosition(POS_FACEDOWN) -end -function c37511832.filter(c) - return c:IsCode(1127737) and c:IsAbleToHand() -end -function c37511832.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c37511832.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c37511832.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstMatchingCard(c37511832.filter,tp,LOCATION_DECK,0,nil) - if tc then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--サルガッソの灯台 +function c37511832.initial_effect(c) + --damage change + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c37511832.condition) + e1:SetOperation(c37511832.operation) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(37511832) + e2:SetRange(LOCATION_GRAVE) + e2:SetTargetRange(1,0) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(37511832,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c37511832.thcon) + e3:SetTarget(c37511832.thtg) + e3:SetOperation(c37511832.thop) + c:RegisterEffect(e3) +end +function c37511832.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_SPELL) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c37511832.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(c37511832.damcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c37511832.damcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 else return val end +end +function c37511832.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsPreviousPosition(POS_FACEDOWN) +end +function c37511832.filter(c) + return c:IsCode(1127737) and c:IsAbleToHand() +end +function c37511832.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c37511832.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c37511832.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstMatchingCard(c37511832.filter,tp,LOCATION_DECK,0,nil) + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c37534148.lua b/script/c37534148.lua index 50f70ba7..a01bc5c7 100644 --- a/script/c37534148.lua +++ b/script/c37534148.lua @@ -1,5 +1,6 @@ --リボーンリボン function c37534148.initial_effect(c) + aux.AddEquipProcedure(c,nil,c37534148.filter) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_EQUIP) @@ -24,25 +25,8 @@ function c37534148.initial_effect(c) e3:SetOperation(c37534148.regop) c:RegisterEffect(e3) end -function c37534148.eqlimit(e,c) - return not c:IsHasEffect(EFFECT_CANNOT_SPECIAL_SUMMON) -end function c37534148.filter(c) - return c:IsFaceup() and not c:IsHasEffect(EFFECT_CANNOT_SPECIAL_SUMMON) -end -function c37534148.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c37534148.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c37534148.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c37534148.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c37534148.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 + return not c:IsHasEffect(EFFECT_CANNOT_SPECIAL_SUMMON) end function c37534148.regcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c3758046.lua b/script/c3758046.lua index 0e13adfe..f79a3a20 100644 --- a/script/c3758046.lua +++ b/script/c3758046.lua @@ -8,6 +8,7 @@ function c3758046.initial_effect(c) e1:SetDescription(aux.Stringid(3758046,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1,3758046) @@ -50,7 +51,8 @@ end function c3758046.spop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local tg=Duel.GetMatchingGroup(c3758046.filter,tp,LOCATION_GRAVE,0,nil,e,tp,Duel.GetTurnCount()) - if ft<=0 or (Duel.IsPlayerAffectedByEffect(tp,59822133) and tg:GetCount()>1 and ft>1) then return end + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=nil if tg:GetCount()>ft then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) diff --git a/script/c37626500.lua b/script/c37626500.lua index 2b5f672c..73b9c3c4 100644 --- a/script/c37626500.lua +++ b/script/c37626500.lua @@ -1,7 +1,70 @@ --精霊の祝福 function c37626500.initial_effect(c) - aux.AddRitualProcEqual2(c,c37626500.ritual_filter) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c37626500.target) + e1:SetOperation(c37626500.operation) + c:RegisterEffect(e1) end function c37626500.ritual_filter(c) return c:IsType(TYPE_RITUAL) and c:IsAttribute(ATTRIBUTE_LIGHT) end +function c37626500.filter(c,e,tp,m,ft) + if not c37626500.ritual_filter(c) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) + if c:IsCode(21105106) then return c:ritual_custom_condition(mg,ft) end + if ft>0 then + return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) + else + return mg:IsExists(c37626500.mfilterf,1,nil,tp,mg,c) + end +end +function c37626500.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumEqual(Card.GetRitualLevel,rc:GetLevel(),0,99,rc) + else return false end +end +function c37626500.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return ft>-1 and Duel.IsExistingMatchingCard(c37626500.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c37626500.operation(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c37626500.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg,ft) + local tc=tg:GetFirst() + if tc then + mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) + if tc:IsCode(21105106) then + tc:ritual_custom_operation(mg) + local mat=tc:GetMaterial() + Duel.ReleaseRitualMaterial(mat) + else + local mat=nil + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c37626500.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),0,99,tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + end + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c37630732.lua b/script/c37630732.lua index 4b4e9eb5..76ec7d0e 100644 --- a/script/c37630732.lua +++ b/script/c37630732.lua @@ -1,88 +1,88 @@ ---パワー・ボンド -function c37630732.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c37630732.target) - e1:SetOperation(c37630732.activate) - c:RegisterEffect(e1) -end -function c37630732.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c37630732.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsRace(RACE_MACHINE) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c37630732.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c37630732.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c37630732.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c37630732.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c37630732.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c37630732.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c37630732.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(tc:GetBaseAttack()) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetCountLimit(1) - e2:SetLabel(tc:GetBaseAttack()) - e2:SetReset(RESET_PHASE+PHASE_END) - e2:SetOperation(c37630732.damop) - Duel.RegisterEffect(e2,tp) - end - end -end -function c37630732.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.Damage(tp,e:GetLabel(),REASON_EFFECT) -end +--パワー・ボンド +function c37630732.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c37630732.target) + e1:SetOperation(c37630732.activate) + c:RegisterEffect(e1) +end +function c37630732.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c37630732.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsRace(RACE_MACHINE) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c37630732.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c37630732.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c37630732.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c37630732.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c37630732.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c37630732.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c37630732.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetLabel(tc:GetBaseAttack()) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetOperation(c37630732.damop) + Duel.RegisterEffect(e2,tp) + end + end +end +function c37630732.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,e:GetLabel(),REASON_EFFECT) +end diff --git a/script/c37649320.lua b/script/c37649320.lua index 6512c90c..35e51ff5 100644 --- a/script/c37649320.lua +++ b/script/c37649320.lua @@ -1,4 +1,4 @@ ---버제스토마 오파비니아 +--バージェストマ・オパビニア function c37649320.initial_effect(c) --xyz summon aux.AddXyzProcedure(c,nil,2,2) @@ -23,6 +23,7 @@ function c37649320.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(37649320,0)) e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1,37649320) diff --git a/script/c37675907.lua b/script/c37675907.lua index e10bb16b..2eaa87c3 100644 --- a/script/c37675907.lua +++ b/script/c37675907.lua @@ -51,7 +51,7 @@ function c37675907.splimit(e,c,sump,sumtype,sumpos,targetp,se) return c:IsCode(37675907) and bit.band(sumtype,SUMMON_TYPE_SYNCHRO)==SUMMON_TYPE_SYNCHRO end function c37675907.filter(c) - return c:GetLevel()>0 and c:IsSetCard(0x17) and c:IsAbleToGraveAsCost() + return c:GetLevel()>0 and c:IsSetCard(0x1017) and c:IsAbleToGraveAsCost() end function c37675907.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(c37675907.filter,tp,LOCATION_DECK,0,1,nil) end diff --git a/script/c37679169.lua b/script/c37679169.lua index a1b3c597..ce7a06c6 100644 --- a/script/c37679169.lua +++ b/script/c37679169.lua @@ -1,4 +1,4 @@ ---Kozmo Delta Shuttle +--Kozmo-デルタシャトル function c37679169.initial_effect(c) --atk/def local e1=Effect.CreateEffect(c) diff --git a/script/c37684215.lua b/script/c37684215.lua index e2fcecd9..9c72ffda 100644 --- a/script/c37684215.lua +++ b/script/c37684215.lua @@ -1,27 +1,12 @@ --融合武器ムラサメブレード function c37684215.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(c37684215.target) - e1:SetOperation(c37684215.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(800) 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(c37684215.eqlimit) - c:RegisterEffect(e3) --immune to des local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_SINGLE) @@ -31,22 +16,3 @@ function c37684215.initial_effect(c) e4:SetValue(1) c:RegisterEffect(e4) end -function c37684215.eqlimit(e,c) - return c:IsRace(RACE_WARRIOR) -end -function c37684215.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c37684215.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c37684215.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c37684215.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c37684215.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c37684215.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 diff --git a/script/c37694547.lua b/script/c37694547.lua index 29864fbd..41a65fd2 100644 --- a/script/c37694547.lua +++ b/script/c37694547.lua @@ -1,47 +1,47 @@ ---歯車街 -function c37694547.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --decrease tribute - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DECREASE_TRIBUTE) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_HAND,LOCATION_HAND) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x7)) - e2:SetValue(0x1) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetDescription(aux.Stringid(37694547,0)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c37694547.spcon) - e3:SetTarget(c37694547.sptg) - e3:SetOperation(c37694547.spop) - c:RegisterEffect(e3) -end -function c37694547.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_DESTROY) -end -function c37694547.filter(c,e,tp) - return c:IsSetCard(0x7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c37694547.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c37694547.filter,tp,0x13,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) -end -function c37694547.spop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c37694547.filter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - Duel.ShuffleDeck(tp) - end -end +--歯車街 +function c37694547.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --decrease tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DECREASE_TRIBUTE) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x7)) + e2:SetValue(0x1) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(37694547,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c37694547.spcon) + e3:SetTarget(c37694547.sptg) + e3:SetOperation(c37694547.spop) + c:RegisterEffect(e3) +end +function c37694547.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c37694547.filter(c,e,tp) + return c:IsSetCard(0x7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c37694547.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c37694547.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c37694547.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c37694547.filter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c37742478.lua b/script/c37742478.lua index 4bb5b584..6a1f7354 100644 --- a/script/c37742478.lua +++ b/script/c37742478.lua @@ -38,8 +38,8 @@ function c37742478.condition2(e,tp,eg,ep,ev,re,r,rp) if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end local a=Duel.GetAttacker() local d=Duel.GetAttackTarget() - return (d~=nil and a:GetControler()==tp and a:IsAttribute(ATTRIBUTE_LIGHT) and a:IsRelateToBattle()) - or (d~=nil and d:GetControler()==tp and d:IsFaceup() and d:IsAttribute(ATTRIBUTE_LIGHT) and d:IsRelateToBattle()) + return d~=nil and d:IsFaceup() and ((a:GetControler()==tp and a:IsAttribute(ATTRIBUTE_LIGHT) and a:IsRelateToBattle()) + or (d:GetControler()==tp and d:IsAttribute(ATTRIBUTE_LIGHT) and d:IsRelateToBattle())) end function c37742478.cost2(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end @@ -61,4 +61,4 @@ function c37742478.operation2(e,tp,eg,ep,ev,re,r,rp,chk) e1:SetValue(a:GetAttack()) d:RegisterEffect(e1) end -end \ No newline at end of file +end diff --git a/script/c37744402.lua b/script/c37744402.lua index 340122ca..a5037459 100644 --- a/script/c37744402.lua +++ b/script/c37744402.lua @@ -1,46 +1,46 @@ ---風霊使いウィン -function c37744402.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(37744402,0)) - e1:SetCategory(CATEGORY_CONTROL) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetTarget(c37744402.target) - e1:SetOperation(c37744402.operation) - c:RegisterEffect(e1) -end -function c37744402.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) and c:IsControlerCanBeChanged() -end -function c37744402.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c37744402.filter(chkc) end - if chk==0 then return true end - if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c37744402.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) - end -end -function c37744402.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c37744402.filter(tc) then - c:SetCardTarget(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_CONTROL) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(tp) - e1:SetLabel(0) - e1:SetReset(RESET_EVENT+0x1fc0000) - e1:SetCondition(c37744402.ctcon) - tc:RegisterEffect(e1) - end -end -function c37744402.ctcon(e) - local c=e:GetOwner() - local h=e:GetHandler() - return h:IsAttribute(ATTRIBUTE_WIND) and c:IsHasCardTarget(h) -end +--風霊使いウィン +function c37744402.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(37744402,0)) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c37744402.target) + e1:SetOperation(c37744402.operation) + c:RegisterEffect(e1) +end +function c37744402.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) and c:IsControlerCanBeChanged() +end +function c37744402.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c37744402.filter(chkc) end + if chk==0 then return true end + if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c37744402.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) + end +end +function c37744402.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c37744402.filter(tc) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(tp) + e1:SetLabel(0) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetCondition(c37744402.ctcon) + tc:RegisterEffect(e1) + end +end +function c37744402.ctcon(e) + local c=e:GetOwner() + local h=e:GetHandler() + return h:IsAttribute(ATTRIBUTE_WIND) and c:IsHasCardTarget(h) +end diff --git a/script/c3775068.lua b/script/c3775068.lua index 55176f40..06068737 100644 --- a/script/c3775068.lua +++ b/script/c3775068.lua @@ -104,16 +104,14 @@ function c3775068.spop(e,tp,eg,ep,ev,re,r,rp) g=g:Select(tp,ft,ft,nil) end if Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0 then - local sg=Duel.GetMatchingGroup(c3775068.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,nil) + local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c3775068.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,nil) if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(3775068,2)) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) sg=sg:Select(tp,1,1,nil) - if not sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.BreakEffect() - Duel.SendtoHand(sg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,sg) - Duel.ShuffleDeck(tp) - end + Duel.BreakEffect() + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + Duel.ShuffleDeck(tp) end end end diff --git a/script/c37752990.lua b/script/c37752990.lua index 789f543a..90aab203 100644 --- a/script/c37752990.lua +++ b/script/c37752990.lua @@ -1,46 +1,46 @@ ---ダイナミスト・ケラトプス -function c37752990.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_PZONE) - e2:SetTarget(c37752990.reptg) - e2:SetValue(c37752990.repval) - e2:SetOperation(c37752990.repop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_SPSUMMON_PROC) - e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e3:SetRange(LOCATION_HAND) - e3:SetCondition(c37752990.spcon) - c:RegisterEffect(e3) -end -function c37752990.filter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) and c:IsSetCard(0xd8) - and (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp)) -end -function c37752990.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c37752990.filter,1,e:GetHandler(),tp) and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end - return Duel.SelectYesNo(tp,aux.Stringid(37752990,0)) -end -function c37752990.repval(e,c) - return c37752990.filter(c,e:GetHandlerPlayer()) -end -function c37752990.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) -end -function c37752990.cfilter(c) - return c:IsFacedown() or c:IsCode(37752990) or not c:IsSetCard(0xd8) -end -function c37752990.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)>0 - and not Duel.IsExistingMatchingCard(c37752990.cfilter,tp,LOCATION_MZONE,0,1,nil) -end +--ダイナミスト・ケラトプス +function c37752990.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_PZONE) + e2:SetTarget(c37752990.reptg) + e2:SetValue(c37752990.repval) + e2:SetOperation(c37752990.repop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SPSUMMON_PROC) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_HAND) + e3:SetCondition(c37752990.spcon) + c:RegisterEffect(e3) +end +function c37752990.filter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) and c:IsSetCard(0xd8) + and (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp)) +end +function c37752990.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c37752990.filter,1,e:GetHandler(),tp) and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end + return Duel.SelectYesNo(tp,aux.Stringid(37752990,0)) +end +function c37752990.repval(e,c) + return c37752990.filter(c,e:GetHandlerPlayer()) +end +function c37752990.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end +function c37752990.cfilter(c) + return c:IsFacedown() or c:IsCode(37752990) or not c:IsSetCard(0xd8) +end +function c37752990.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)>0 + and not Duel.IsExistingMatchingCard(c37752990.cfilter,tp,LOCATION_MZONE,0,1,nil) +end diff --git a/script/c37780349.lua b/script/c37780349.lua index 6eaec028..0d36f912 100644 --- a/script/c37780349.lua +++ b/script/c37780349.lua @@ -7,6 +7,7 @@ function c37780349.initial_effect(c) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) e1:SetRange(LOCATION_HAND) + e1:SetCondition(c37780349.dmcon) e1:SetCost(c37780349.dmcost) e1:SetTarget(c37780349.dmtg) e1:SetOperation(c37780349.dmop) @@ -23,6 +24,9 @@ function c37780349.initial_effect(c) e2:SetOperation(c37780349.atkop) c:RegisterEffect(e2) end +function c37780349.dmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end function c37780349.dmcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsDiscardable() end Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) diff --git a/script/c37820550.lua b/script/c37820550.lua index 7014fcfb..96fd6c79 100644 --- a/script/c37820550.lua +++ b/script/c37820550.lua @@ -1,14 +1,6 @@ --電撃鞭 function c37820550.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(c37820550.target) - e1:SetOperation(c37820550.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_THUNDER)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c37820550.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c37820550.eqlimit) - c:RegisterEffect(e4) -end -function c37820550.eqlimit(e,c) - return c:IsRace(RACE_THUNDER) -end -function c37820550.filter(c) - return c:IsFaceup() and c:IsRace(RACE_THUNDER) -end -function c37820550.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c37820550.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c37820550.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c37820550.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c37820550.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 diff --git a/script/c3784434.lua b/script/c3784434.lua index 97163773..1dab2d61 100644 --- a/script/c3784434.lua +++ b/script/c3784434.lua @@ -1,57 +1,57 @@ ---突撃ライノス -function c3784434.initial_effect(c) - --move - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(3784434,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c3784434.seqcon) - e1:SetOperation(c3784434.seqop) - 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_UPDATE_ATTACK) - e2:SetCondition(c3784434.atkcon) - e2:SetValue(500) - c:RegisterEffect(e2) -end -function c3784434.seqcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - return (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) - or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) -end -function c3784434.seqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsControler(1-tp) then return end - local seq=c:GetSequence() - if (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) - or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) then - local flag=0 - if seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1) then flag=bit.bor(flag,bit.lshift(0x1,seq-1)) end - if seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1) then flag=bit.bor(flag,bit.lshift(0x1,seq+1)) end - flag=bit.bxor(flag,0xff) - local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag) - local nseq=0 - if s==1 then nseq=0 - elseif s==2 then nseq=1 - elseif s==4 then nseq=2 - elseif s==8 then nseq=3 - else nseq=4 end - Duel.MoveSequence(c,nseq) - end -end -function c3784434.dircon(e,tp) - local seq=4-e:GetHandler():GetSequence() - return Duel.GetFieldCard(e:GetOwnerPlayer(),LOCATION_MZONE,seq)==nil - and Duel.GetFieldCard(e:GetOwnerPlayer(),LOCATION_SZONE,seq)==nil -end -function c3784434.atkcon(e) - local ph=Duel.GetCurrentPhase() - return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) - and Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget()~=nil - and e:GetHandler():GetSequence()+Duel.GetAttackTarget():GetSequence()==4 -end +--突撃ライノス +function c3784434.initial_effect(c) + --move + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3784434,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c3784434.seqcon) + e1:SetOperation(c3784434.seqop) + 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_UPDATE_ATTACK) + e2:SetCondition(c3784434.atkcon) + e2:SetValue(500) + c:RegisterEffect(e2) +end +function c3784434.seqcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + return (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) + or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) +end +function c3784434.seqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsControler(1-tp) then return end + local seq=c:GetSequence() + if (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) + or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) then + local flag=0 + if seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1) then flag=bit.bor(flag,bit.lshift(0x1,seq-1)) end + if seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1) then flag=bit.bor(flag,bit.lshift(0x1,seq+1)) end + flag=bit.bxor(flag,0xff) + local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag) + local nseq=0 + if s==1 then nseq=0 + elseif s==2 then nseq=1 + elseif s==4 then nseq=2 + elseif s==8 then nseq=3 + else nseq=4 end + Duel.MoveSequence(c,nseq) + end +end +function c3784434.dircon(e,tp) + local seq=4-e:GetHandler():GetSequence() + return Duel.GetFieldCard(e:GetOwnerPlayer(),LOCATION_MZONE,seq)==nil + and Duel.GetFieldCard(e:GetOwnerPlayer(),LOCATION_SZONE,seq)==nil +end +function c3784434.atkcon(e) + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) + and Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget()~=nil + and e:GetHandler():GetSequence()+Duel.GetAttackTarget():GetSequence()==4 +end diff --git a/script/c3790062.lua b/script/c3790062.lua index a933c0d5..e41ffb32 100644 --- a/script/c3790062.lua +++ b/script/c3790062.lua @@ -7,7 +7,7 @@ function c3790062.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(3790062,0)) e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_CHAINING) @@ -32,6 +32,7 @@ function c3790062.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) end function c3790062.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - Duel.Damage(1-tp,500,REASON_EFFECT) + if Duel.NegateActivation(ev) then + Duel.Damage(1-tp,500,REASON_EFFECT) + end end diff --git a/script/c37910722.lua b/script/c37910722.lua index 9b1a75b7..7a43fad1 100644 --- a/script/c37910722.lua +++ b/script/c37910722.lua @@ -67,7 +67,6 @@ function c37910722.spop(e,tp,eg,ep,ev,re,r,rp) local g=mg:Filter(Card.IsRelateToEffect,nil,e) if g:GetCount()4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c37991342.lvcon(e) - return e:GetHandler():GetMaterialCount()==0 -end -function c37991342.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c37991342.lvcon) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c37991342.lvcon) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c37991342.lvop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c37991342.immcon(e) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL -end -function c37991342.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c37991342.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c37991342.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c37991342.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c37991342.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c37991342.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--クリフォート・ゲノム +function c37991342.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetTarget(c37991342.splimit) + c:RegisterEffect(e2) + --atk down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_PZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(-300) + c:RegisterEffect(e3) + --summon with no tribute + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(37991342,0)) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SUMMON_PROC) + e4:SetCondition(c37991342.ntcon) + c:RegisterEffect(e4) + --change level + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_SUMMON_COST) + e5:SetOperation(c37991342.lvop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SPSUMMON_COST) + e6:SetOperation(c37991342.lvop2) + c:RegisterEffect(e6) + --immune + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_IMMUNE_EFFECT) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c37991342.immcon) + e7:SetValue(aux.qlifilter) + c:RegisterEffect(e7) + --destroy + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(37991342,1)) + e8:SetCategory(CATEGORY_DESTROY) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_RELEASE) + e8:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e8:SetTarget(c37991342.destg) + e8:SetOperation(c37991342.desop) + c:RegisterEffect(e8) +end +function c37991342.splimit(e,c) + return not c:IsSetCard(0xaa) +end +function c37991342.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c37991342.lvcon(e) + return e:GetHandler():GetMaterialCount()==0 +end +function c37991342.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c37991342.lvcon) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c37991342.lvcon) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c37991342.lvop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c37991342.immcon(e) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL +end +function c37991342.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c37991342.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c37991342.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c37991342.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c37991342.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c37991342.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c37993923.lua b/script/c37993923.lua index be54eed7..27ae4a7e 100644 --- a/script/c37993923.lua +++ b/script/c37993923.lua @@ -1,56 +1,56 @@ ---ジャンク・ガードナー -function c37993923.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c37993923.tfilter,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --pos - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(37993923,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c37993923.target) - e1:SetOperation(c37993923.operation) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(37993923,0)) - e2:SetCategory(CATEGORY_POSITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c37993923.condition2) - e2:SetTarget(c37993923.target2) - e2:SetOperation(c37993923.operation) - c:RegisterEffect(e2) -end -c37993923.material_setcode=0x17 -function c37993923.tfilter(c) - return c:IsCode(63977008) or c:IsHasEffect(20932152) -end -function c37993923.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) end - if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c37993923.condition2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c37993923.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) end - if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c37993923.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) - end -end +--ジャンク・ガードナー +function c37993923.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c37993923.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --pos + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(37993923,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c37993923.target) + e1:SetOperation(c37993923.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(37993923,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c37993923.condition2) + e2:SetTarget(c37993923.target2) + e2:SetOperation(c37993923.operation) + c:RegisterEffect(e2) +end +c37993923.material_setcode=0x1017 +function c37993923.tfilter(c) + return c:IsCode(63977008) or c:IsHasEffect(20932152) +end +function c37993923.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c37993923.condition2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c37993923.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c37993923.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c38026562.lua b/script/c38026562.lua index d99dcf12..c2787a2f 100644 --- a/script/c38026562.lua +++ b/script/c38026562.lua @@ -38,6 +38,7 @@ function c38026562.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(38026562,1)) e4:SetCategory(CATEGORY_TOGRAVE) + e4:SetProperty(EFFECT_FLAG2_XMDETACH) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e4:SetCode(EVENT_SUMMON_SUCCESS) e4:SetRange(LOCATION_MZONE) diff --git a/script/c38041940.lua b/script/c38041940.lua index 7ab8d1b1..8f555b57 100644 --- a/script/c38041940.lua +++ b/script/c38041940.lua @@ -1,49 +1,49 @@ ---シード・オブ・フレイム -function c38041940.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(38041940,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c38041940.condition) - e1:SetTarget(c38041940.target) - e1:SetOperation(c38041940.operation) - c:RegisterEffect(e1) -end -function c38041940.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return bit.band(c:GetReason(),0x41)==0x41 and c:IsPreviousLocation(LOCATION_ONFIELD) - and c:GetPreviousControler()==tp -end -function c38041940.spfilter(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_PLANT) and c:GetCode()~=38041940 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c38041940.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c38041940.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c38041940.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) - and Duel.IsPlayerCanSpecialSummonMonster(tp,38041941,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH,POS_FACEUP_DEFENSE,1-tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c38041940.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,tp,0) -end -function c38041940.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,38041941,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH,POS_FACEUP_DEFENSE,1-tp) then - local token=Duel.CreateToken(tp,38041941) - Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(1) - token:RegisterEffect(e1,true) - end - end - Duel.SpecialSummonComplete() -end +--シード・オブ・フレイム +function c38041940.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(38041940,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c38041940.condition) + e1:SetTarget(c38041940.target) + e1:SetOperation(c38041940.operation) + c:RegisterEffect(e1) +end +function c38041940.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(c:GetReason(),0x41)==0x41 and c:IsPreviousLocation(LOCATION_ONFIELD) + and c:GetPreviousControler()==tp +end +function c38041940.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_PLANT) and c:GetCode()~=38041940 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c38041940.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c38041940.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c38041940.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.IsPlayerCanSpecialSummonMonster(tp,38041941,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH,POS_FACEUP_DEFENSE,1-tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c38041940.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,tp,0) +end +function c38041940.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,38041941,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH,POS_FACEUP_DEFENSE,1-tp) then + local token=Duel.CreateToken(tp,38041941) + Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + token:RegisterEffect(e1,true) + end + end + Duel.SpecialSummonComplete() +end diff --git a/script/c3814632.lua b/script/c3814632.lua index 15b41a40..12dd8e61 100644 --- a/script/c3814632.lua +++ b/script/c3814632.lua @@ -8,7 +8,7 @@ function c3814632.initial_effect(c) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) e1:SetDescription(aux.Stringid(3814632,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,3814632) e1:SetCost(c3814632.cost) diff --git a/script/c38180759.lua b/script/c38180759.lua index 35da6fe1..dcb5f9de 100644 --- a/script/c38180759.lua +++ b/script/c38180759.lua @@ -7,6 +7,7 @@ function c38180759.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(38180759,0)) e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_FREE_CHAIN) diff --git a/script/c3819470.lua b/script/c3819470.lua index 324aaf27..8f1f7373 100644 --- a/script/c3819470.lua +++ b/script/c3819470.lua @@ -26,8 +26,7 @@ function c3819470.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c3819470.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c38250531.lua b/script/c38250531.lua index 4b60379e..c6c4840c 100644 --- a/script/c38250531.lua +++ b/script/c38250531.lua @@ -7,7 +7,7 @@ function c38250531.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(38250531,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,38250531) @@ -18,6 +18,7 @@ function c38250531.initial_effect(c) --spsummon local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c38250531.spreg) c:RegisterEffect(e2) diff --git a/script/c3825890.lua b/script/c3825890.lua index 73bc85d0..d0ac75fa 100644 --- a/script/c3825890.lua +++ b/script/c3825890.lua @@ -30,12 +30,11 @@ end function c3825890.otfilter(c,tp) return c:IsSetCard(0x2e) and (c:IsControler(tp) or c:IsFaceup()) end -function c3825890.otcon(e,c) +function c3825890.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c3825890.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c3825890.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c3825890.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c38273745.lua b/script/c38273745.lua index 7e81d080..ba812016 100644 --- a/script/c38273745.lua +++ b/script/c38273745.lua @@ -7,7 +7,7 @@ function c38273745.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(38273745,1)) e1:SetCategory(CATEGORY_TOHAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) @@ -21,7 +21,7 @@ function c38273745.initial_effect(c) e2:SetCategory(CATEGORY_TOGRAVE) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_NO_TURN_RESET) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e2:SetCost(c38273745.cost) e2:SetTarget(c38273745.tg2) @@ -31,7 +31,7 @@ function c38273745.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(38273745,3)) e3:SetCategory(CATEGORY_REMOVE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) diff --git a/script/c38275183.lua b/script/c38275183.lua index a36550aa..c2956079 100644 --- a/script/c38275183.lua +++ b/script/c38275183.lua @@ -46,8 +46,7 @@ function c38275183.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c38275183.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c38296564.lua b/script/c38296564.lua index 4466fd28..b52b662b 100644 --- a/script/c38296564.lua +++ b/script/c38296564.lua @@ -61,6 +61,7 @@ function c38296564.operation(e,tp,eg,ep,ev,re,r,rp) tc:RegisterEffect(e2,true) local e3=e2:Clone() e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) e3:SetValue(c38296564.tgval) tc:RegisterEffect(e3,true) local e4=e1:Clone() diff --git a/script/c38369349.lua b/script/c38369349.lua index 36572d4b..610770d8 100644 --- a/script/c38369349.lua +++ b/script/c38369349.lua @@ -1,99 +1,99 @@ ---トゥーン・ドラゴン・エッガー -function c38369349.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c38369349.spcon) - e2:SetOperation(c38369349.spop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetCondition(c38369349.sdescon) - e3:SetOperation(c38369349.sdesop) - c:RegisterEffect(e3) - --direct attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DIRECT_ATTACK) - e4:SetCondition(c38369349.dircon) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e5:SetCondition(c38369349.atcon) - e5:SetValue(c38369349.atlimit) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e6:SetCondition(c38369349.atcon) - c:RegisterEffect(e6) - --cannot attack - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e7:SetCode(EVENT_SPSUMMON_SUCCESS) - e7:SetOperation(c38369349.atklimit) - c:RegisterEffect(e7) - --attack cost - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_SINGLE) - e8:SetCode(EFFECT_ATTACK_COST) - e8:SetCost(c38369349.atcost) - e8:SetOperation(c38369349.atop) - c:RegisterEffect(e8) -end -function c38369349.cfilter(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c38369349.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.IsExistingMatchingCard(c38369349.cfilter,tp,LOCATION_ONFIELD,0,1,nil) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 and Duel.CheckReleaseGroup(tp,nil,2,nil) -end -function c38369349.spop(e,tp,eg,ep,ev,re,r,rp,c) - local tp=c:GetControler() - local g=Duel.SelectReleaseGroup(tp,nil,2,2,nil) - Duel.Release(g,REASON_COST) -end -function c38369349.sfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c38369349.sdescon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c38369349.sfilter,1,nil) -end -function c38369349.sdesop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c38369349.atkfilter(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c38369349.dircon(e) - return not Duel.IsExistingMatchingCard(c38369349.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c38369349.atcon(e) - return Duel.IsExistingMatchingCard(c38369349.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c38369349.atlimit(e,c) - return not c:IsType(TYPE_TOON) or c:IsFacedown() -end -function c38369349.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c38369349.atcost(e,c,tp) - return Duel.CheckLPCost(tp,500) -end -function c38369349.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.PayLPCost(tp,500) -end +--トゥーン・ドラゴン・エッガー +function c38369349.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c38369349.spcon) + e2:SetOperation(c38369349.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c38369349.sdescon) + e3:SetOperation(c38369349.sdesop) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetCondition(c38369349.dircon) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e5:SetCondition(c38369349.atcon) + e5:SetValue(c38369349.atlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e6:SetCondition(c38369349.atcon) + c:RegisterEffect(e6) + --cannot attack + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + e7:SetOperation(c38369349.atklimit) + c:RegisterEffect(e7) + --attack cost + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_ATTACK_COST) + e8:SetCost(c38369349.atcost) + e8:SetOperation(c38369349.atop) + c:RegisterEffect(e8) +end +function c38369349.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c38369349.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.IsExistingMatchingCard(c38369349.cfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 and Duel.CheckReleaseGroup(tp,nil,2,nil) +end +function c38369349.spop(e,tp,eg,ep,ev,re,r,rp,c) + local tp=c:GetControler() + local g=Duel.SelectReleaseGroup(tp,nil,2,2,nil) + Duel.Release(g,REASON_COST) +end +function c38369349.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c38369349.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c38369349.sfilter,1,nil) +end +function c38369349.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c38369349.atkfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c38369349.dircon(e) + return not Duel.IsExistingMatchingCard(c38369349.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c38369349.atcon(e) + return Duel.IsExistingMatchingCard(c38369349.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c38369349.atlimit(e,c) + return not c:IsType(TYPE_TOON) or c:IsFacedown() +end +function c38369349.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c38369349.atcost(e,c,tp) + return Duel.CheckLPCost(tp,500) +end +function c38369349.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,500) +end diff --git a/script/c38450736.lua b/script/c38450736.lua index a12b4061..a63b44c4 100644 --- a/script/c38450736.lua +++ b/script/c38450736.lua @@ -45,9 +45,9 @@ function c38450736.eqop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end if c:IsFacedown() or not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c38450736.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c38450736.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if not Duel.Equip(tp,tc,c,true) then return end local e1=Effect.CreateEffect(c) e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) diff --git a/script/c38491199.lua b/script/c38491199.lua index 883a8d9a..24438c17 100644 --- a/script/c38491199.lua +++ b/script/c38491199.lua @@ -29,8 +29,7 @@ function c38491199.negtg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c38491199.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c38495396.lua b/script/c38495396.lua index 8f1e0cc2..4907e854 100644 --- a/script/c38495396.lua +++ b/script/c38495396.lua @@ -4,17 +4,17 @@ function c38495396.initial_effect(c) aux.AddXyzProcedure(c,nil,6,2,c38495396.ovfilter,aux.Stringid(38495396,1),2,c38495396.xyzop) c:EnableReviveLimit() --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(38495396,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCost(c38495396.thcost) - e2:SetTarget(c38495396.thtg) - e2:SetOperation(c38495396.thop) - c:RegisterEffect(e2) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(38495396,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c38495396.thcost) + e1:SetTarget(c38495396.thtg) + e1:SetOperation(c38495396.thop) + c:RegisterEffect(e1) end function c38495396.ovfilter(c) return c:IsFaceup() and c:IsSetCard(0x53) and c:GetCode()~=38495396 and c:IsType(TYPE_XYZ) diff --git a/script/c38522377.lua b/script/c38522377.lua index cd284cb0..f3646b2e 100644 --- a/script/c38522377.lua +++ b/script/c38522377.lua @@ -1,98 +1,98 @@ ---機皇神龍アステリスク -function c38522377.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c38522377.spcon) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(38522377,0)) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_TOGRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetTarget(c38522377.atktg) - e2:SetOperation(c38522377.atkop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(38522377,1)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c38522377.damcon) - e3:SetTarget(c38522377.damtg) - e3:SetOperation(c38522377.damop) - c:RegisterEffect(e3) -end -function c38522377.spfilter(c) - return c:IsFaceup() and c:IsSetCard(0x13) -end -function c38522377.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c38522377.spfilter,c:GetControler(),LOCATION_MZONE,0,3,nil) -end -function c38522377.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingTarget(c38522377.spfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,c38522377.spfilter,tp,LOCATION_MZONE,0,1,5,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) -end -function c38522377.atkfilter(c,e) - return c:IsRelateToEffect(e) and c:IsFaceup() -end -function c38522377.atkop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c38522377.atkfilter,nil,e) - Duel.SendtoGrave(g,REASON_EFFECT) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local og=Duel.GetOperatedGroup() - local tc=og:GetFirst() - local atk=0 - while tc do - local oatk=tc:GetTextAttack() - if oatk<0 then oatk=0 end - atk=atk+oatk - tc=og:GetNext() - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c38522377.damcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(Card.IsType,1,nil,TYPE_SYNCHRO) -end -function c38522377.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local t1=false - local t2=false - local tc=eg:GetFirst() - while tc do - if tc:IsType(TYPE_SYNCHRO) then - if tc:GetSummonPlayer()==tp then t1=true else t2=true end - end - tc=eg:GetNext() - end - if t1 and not t2 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) - elseif not t1 and t2 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) - else Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,1000) end -end -function c38522377.damop(e,tp,eg,ep,ev,re,r,rp) - local ex,g,gc,dp,dv=Duel.GetOperationInfo(0,CATEGORY_DAMAGE) - if dp~=PLAYER_ALL then Duel.Damage(dp,1000,REASON_EFFECT) - else - Duel.Damage(tp,1000,REASON_EFFECT,true) - Duel.Damage(1-tp,1000,REASON_EFFECT,true) - Duel.RDComplete() - end -end +--機皇神龍アステリスク +function c38522377.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c38522377.spcon) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(38522377,0)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_TOGRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c38522377.atktg) + e2:SetOperation(c38522377.atkop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(38522377,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c38522377.damcon) + e3:SetTarget(c38522377.damtg) + e3:SetOperation(c38522377.damop) + c:RegisterEffect(e3) +end +function c38522377.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0x13) +end +function c38522377.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c38522377.spfilter,c:GetControler(),LOCATION_MZONE,0,3,nil) +end +function c38522377.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingTarget(c38522377.spfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c38522377.spfilter,tp,LOCATION_MZONE,0,1,5,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c38522377.atkfilter(c,e) + return c:IsRelateToEffect(e) and c:IsFaceup() +end +function c38522377.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c38522377.atkfilter,nil,e) + Duel.SendtoGrave(g,REASON_EFFECT) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local og=Duel.GetOperatedGroup() + local tc=og:GetFirst() + local atk=0 + while tc do + local oatk=tc:GetTextAttack() + if oatk<0 then oatk=0 end + atk=atk+oatk + tc=og:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c38522377.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsType,1,nil,TYPE_SYNCHRO) +end +function c38522377.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local t1=false + local t2=false + local tc=eg:GetFirst() + while tc do + if tc:IsType(TYPE_SYNCHRO) then + if tc:GetSummonPlayer()==tp then t1=true else t2=true end + end + tc=eg:GetNext() + end + if t1 and not t2 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) + elseif not t1 and t2 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) + else Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,1000) end +end +function c38522377.damop(e,tp,eg,ep,ev,re,r,rp) + local ex,g,gc,dp,dv=Duel.GetOperationInfo(0,CATEGORY_DAMAGE) + if dp~=PLAYER_ALL then Duel.Damage(dp,1000,REASON_EFFECT) + else + Duel.Damage(tp,1000,REASON_EFFECT,true) + Duel.Damage(1-tp,1000,REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c38552107.lua b/script/c38552107.lua index 56a063d6..bd275309 100644 --- a/script/c38552107.lua +++ b/script/c38552107.lua @@ -1,27 +1,12 @@ --光の角 function c38552107.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(c38552107.target) - e1:SetOperation(c38552107.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_DEFENSE) e2:SetValue(800) 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) --to deck local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(38552107,0)) @@ -35,19 +20,6 @@ function c38552107.initial_effect(c) e4:SetOperation(c38552107.tdop) c:RegisterEffect(e4) end -function c38552107.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 c38552107.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 c38552107.tdcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end diff --git a/script/c38568567.lua b/script/c38568567.lua index 7f22ce32..1b70e2ef 100644 --- a/script/c38568567.lua +++ b/script/c38568567.lua @@ -1,61 +1,61 @@ ---ワンダー・クローバー -function c38568567.initial_effect(c) - --multi attack - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c38568567.condition) - e1:SetCost(c38568567.cost) - e1:SetTarget(c38568567.target) - e1:SetOperation(c38568567.operation) - c:RegisterEffect(e1) -end -function c38568567.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c38568567.cfilter(c) - return c:GetLevel()==4 and c:IsRace(RACE_PLANT) and c:IsAbleToGraveAsCost() -end -function c38568567.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c38568567.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c38568567.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) - e:SetLabel(1) -end -function c38568567.filter(c) - return c:IsFaceup() and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) -end -function c38568567.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c38568567.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c38568567.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c38568567.filter,tp,LOCATION_MZONE,0,1,1,nil) - if e:GetLabel()==1 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_OATH) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c38568567.ftarget) - e1:SetLabel(g:GetFirst():GetFieldID()) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - e:SetLabel(0) - end -end -function c38568567.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - tc:RegisterEffect(e1) - end -end -function c38568567.ftarget(e,c) - return e:GetLabel()~=c:GetFieldID() -end +--ワンダー・クローバー +function c38568567.initial_effect(c) + --multi attack + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c38568567.condition) + e1:SetCost(c38568567.cost) + e1:SetTarget(c38568567.target) + e1:SetOperation(c38568567.operation) + c:RegisterEffect(e1) +end +function c38568567.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c38568567.cfilter(c) + return c:GetLevel()==4 and c:IsRace(RACE_PLANT) and c:IsAbleToGraveAsCost() +end +function c38568567.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c38568567.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c38568567.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + e:SetLabel(1) +end +function c38568567.filter(c) + return c:IsFaceup() and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) +end +function c38568567.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c38568567.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c38568567.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c38568567.filter,tp,LOCATION_MZONE,0,1,1,nil) + if e:GetLabel()==1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c38568567.ftarget) + e1:SetLabel(g:GetFirst():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + e:SetLabel(0) + end +end +function c38568567.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end +function c38568567.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end diff --git a/script/c38572779.lua b/script/c38572779.lua new file mode 100644 index 00000000..c0c19ef9 --- /dev/null +++ b/script/c38572779.lua @@ -0,0 +1,134 @@ +--幻創のミセラサウルス +function c38572779.initial_effect(c) + --immune + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(38572779,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c38572779.immcon) + e1:SetCost(c38572779.immcost) + e1:SetOperation(c38572779.immop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(38572779,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1,38572779) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c38572779.spcost) + e2:SetTarget(c38572779.sptg) + e2:SetOperation(c38572779.spop) + c:RegisterEffect(e2) +end +function c38572779.immcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c38572779.immcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c38572779.immop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR)) + e1:SetValue(c38572779.efilter) + if Duel.GetCurrentPhase()==PHASE_MAIN1 then + e1:SetReset(RESET_PHASE+PHASE_MAIN1) + else + e1:SetReset(RESET_PHASE+PHASE_MAIN2) + end + Duel.RegisterEffect(e1,tp) +end +function c38572779.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() and re:IsActivated() +end +function c38572779.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(100) + return true +end +function c38572779.cfilter(c) + return c:IsRace(RACE_DINOSAUR) and c:IsAbleToRemoveAsCost() +end +function c38572779.spfilter(c,e,tp,lv) + return c:IsRace(RACE_DINOSAUR) and c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c38572779.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + if e:GetLabel()~=100 then return false end + e:SetLabel(0) + local cg=Duel.GetMatchingGroup(c38572779.cfilter,tp,LOCATION_GRAVE,0,nil) + return c:IsAbleToRemoveAsCost() + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c38572779.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,cg:GetCount()) + end + local cg=Duel.GetMatchingGroup(c38572779.cfilter,tp,LOCATION_GRAVE,0,nil) + local tg=Duel.GetMatchingGroup(c38572779.spfilter,tp,LOCATION_DECK,0,nil,e,tp,cg:GetCount()) + local lvt={} + local tc=tg:GetFirst() + while tc do + local tlv=0 + tlv=tlv+tc:GetLevel() + lvt[tlv]=tlv + tc=tg:GetNext() + end + local pc=1 + for i=1,12 do + if lvt[i] then lvt[i]=nil lvt[pc]=i pc=pc+1 end + end + lvt[pc]=nil + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(38572779,2)) + local lv=Duel.AnnounceNumber(tp,table.unpack(lvt)) + local rg1=Group.CreateGroup() + if lv>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg2=cg:Select(tp,lv-1,lv-1,c) + rg1:Merge(rg2) + end + rg1:AddCard(c) + Duel.Remove(rg1,POS_FACEUP,REASON_COST) + e:SetLabel(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c38572779.sfilter(c,e,tp,lv) + return c:IsRace(RACE_DINOSAUR) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c38572779.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local lv=e:GetLabel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c38572779.sfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,lv) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(38572779,RESET_EVENT+0x1fe0000,0,1,fid) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c38572779.descon) + e1:SetOperation(c38572779.desop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c38572779.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(38572779)==e:GetLabel() then + return true + else + e:Reset() + return false + end +end +function c38572779.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c38589847.lua b/script/c38589847.lua index 9e011260..f989ec4e 100644 --- a/script/c38589847.lua +++ b/script/c38589847.lua @@ -24,17 +24,20 @@ end function c38589847.otfilter(c,tp) return c:IsLevelAbove(5) and (c:IsControler(tp) or c:IsFaceup()) end -function c38589847.otcon(e,c) +function c38589847.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c38589847.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return Duel.GetTributeCount(c,mg)>0 + return minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c38589847.ottg(e,c) return c:IsLevelAbove(7) end function c38589847.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c38589847.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then + mg=mg:Filter(Card.IsControler,nil,tp) + end local sg=Duel.SelectTribute(tp,c,1,1,mg) c:SetMaterial(sg) Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) diff --git a/script/c38601126.lua b/script/c38601126.lua index fbd9097d..6c470974 100644 --- a/script/c38601126.lua +++ b/script/c38601126.lua @@ -1,80 +1,80 @@ ---破壊剣-アームズバスターブレード -function c38601126.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetRange(LOCATION_HAND+LOCATION_MZONE) - e1:SetTarget(c38601126.eqtg) - e1:SetOperation(c38601126.eqop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_CANNOT_ACTIVATE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,1) - e2:SetValue(c38601126.aclimit) - c:RegisterEffect(e2) - --direct atk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_SZONE) - e3:SetCost(c38601126.dacost) - e3:SetOperation(c38601126.daop) - c:RegisterEffect(e3) -end -function c38601126.filter(c) - return c:IsFaceup() and c:IsCode(78193831) -end -function c38601126.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c38601126.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c38601126.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c38601126.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c38601126.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c38601126.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) -end -function c38601126.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c38601126.aclimit(e,re,tp) - local loc=re:GetActivateLocation() - return loc==LOCATION_SZONE and not re:IsHasType(EFFECT_TYPE_ACTIVATE) and not re:GetHandler():IsImmuneToEffect(e) -end -function c38601126.dacost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - local tc=e:GetHandler():GetEquipTarget() - Duel.SetTargetCard(tc) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c38601126.daop(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_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--破壊剣-アームズバスターブレード +function c38601126.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c38601126.eqtg) + e1:SetOperation(c38601126.eqop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,1) + e2:SetValue(c38601126.aclimit) + c:RegisterEffect(e2) + --direct atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c38601126.dacost) + e3:SetOperation(c38601126.daop) + c:RegisterEffect(e3) +end +function c38601126.filter(c) + return c:IsFaceup() and c:IsCode(78193831) +end +function c38601126.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c38601126.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c38601126.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c38601126.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c38601126.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c38601126.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) +end +function c38601126.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c38601126.aclimit(e,re,tp) + local loc=re:GetActivateLocation() + return loc==LOCATION_SZONE and not re:IsHasType(EFFECT_TYPE_ACTIVATE) and not re:GetHandler():IsImmuneToEffect(e) +end +function c38601126.dacost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + local tc=e:GetHandler():GetEquipTarget() + Duel.SetTargetCard(tc) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c38601126.daop(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_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c38679204.lua b/script/c38679204.lua index 774ee080..14fe0064 100644 --- a/script/c38679204.lua +++ b/script/c38679204.lua @@ -1,77 +1,77 @@ ---ヴァイロン・ステラ -function c38679204.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(38679204,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c38679204.eqcon) - e1:SetCost(c38679204.eqcost) - e1:SetTarget(c38679204.eqtg) - e1:SetOperation(c38679204.eqop) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(38679204,1)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_DAMAGE_STEP_END) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c38679204.descon) - e2:SetTarget(c38679204.destg) - e2:SetOperation(c38679204.desop) - c:RegisterEffect(e2) -end -function c38679204.eqcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_MZONE) -end -function c38679204.eqcost(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 c38679204.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c38679204.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc) - --equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c38679204.eqlimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - end -end -function c38679204.eqlimit(e,c) - local tp=e:GetHandlerPlayer() - return c:IsControler(tp) -end -function c38679204.descon(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetHandler():GetEquipTarget() - local dt=nil - if ec==Duel.GetAttacker() then dt=Duel.GetAttackTarget() - elseif ec==Duel.GetAttackTarget() then dt=Duel.GetAttacker() end - e:SetLabelObject(dt) - return dt and dt:IsRelateToBattle() -end -function c38679204.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetLabelObject(),1,0,0) -end -function c38679204.desop(e,tp,eg,ep,ev,re,r,rp) - local dt=e:GetLabelObject() - if dt:IsRelateToBattle() then - Duel.Destroy(dt,REASON_EFFECT) - end -end +--ヴァイロン・ステラ +function c38679204.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(38679204,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c38679204.eqcon) + e1:SetCost(c38679204.eqcost) + e1:SetTarget(c38679204.eqtg) + e1:SetOperation(c38679204.eqop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(38679204,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c38679204.descon) + e2:SetTarget(c38679204.destg) + e2:SetOperation(c38679204.desop) + c:RegisterEffect(e2) +end +function c38679204.eqcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_MZONE) +end +function c38679204.eqcost(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 c38679204.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c38679204.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + --equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c38679204.eqlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c38679204.eqlimit(e,c) + local tp=e:GetHandlerPlayer() + return c:IsControler(tp) +end +function c38679204.descon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + local dt=nil + if ec==Duel.GetAttacker() then dt=Duel.GetAttackTarget() + elseif ec==Duel.GetAttackTarget() then dt=Duel.GetAttacker() end + e:SetLabelObject(dt) + return dt and dt:IsRelateToBattle() +end +function c38679204.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetLabelObject(),1,0,0) +end +function c38679204.desop(e,tp,eg,ep,ev,re,r,rp) + local dt=e:GetLabelObject() + if dt:IsRelateToBattle() then + Duel.Destroy(dt,REASON_EFFECT) + end +end diff --git a/script/c38695361.lua b/script/c38695361.lua new file mode 100644 index 00000000..b51e3020 --- /dev/null +++ b/script/c38695361.lua @@ -0,0 +1,104 @@ +--混沌の使者 +function c38695361.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(38695361,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c38695361.atkcon1) + e1:SetCost(c38695361.atkcost) + e1:SetTarget(c38695361.atktg1) + e1:SetOperation(c38695361.atkop) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(38695361,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1) + e2:SetCost(c38695361.thcost) + e2:SetTarget(c38695361.thtg) + e2:SetOperation(c38695361.thop) + c:RegisterEffect(e2) +end +function c38695361.atkcon1(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE and (ph~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c38695361.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c38695361.atkfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x10cf) or c:IsSetCard(0xbd)) +end +function c38695361.atktg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c38695361.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c38695361.atkfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c38695361.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c38695361.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + tc:RegisterFlagEffect(38695361,RESET_EVENT+0x1220000+RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c38695361.atkcon2) + e2:SetTarget(c38695361.atktg2) + e2:SetValue(c38695361.atkval) + e2:SetLabelObject(tc) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c38695361.atkcon2(e) + local tc=e:GetLabelObject() + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL + and tc:GetFlagEffect(38695361)~=0 and tc:GetBattleTarget() +end +function c38695361.atktg2(e,c) + return c==e:GetLabelObject():GetBattleTarget() +end +function c38695361.atkval(e,c) + return c:GetBaseAttack() +end +function c38695361.cfilter(c,att) + return c:IsAttribute(att) and c:IsAbleToRemoveAsCost() +end +function c38695361.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c38695361.cfilter,tp,LOCATION_GRAVE,0,1,c,ATTRIBUTE_LIGHT) + and Duel.IsExistingMatchingCard(c38695361.cfilter,tp,LOCATION_GRAVE,0,1,c,ATTRIBUTE_DARK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c38695361.cfilter,tp,LOCATION_GRAVE,0,1,1,c,ATTRIBUTE_LIGHT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c38695361.cfilter,tp,LOCATION_GRAVE,0,1,1,c,ATTRIBUTE_DARK) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c38695361.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c38695361.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c38742075.lua b/script/c38742075.lua index 2dfd1293..59564a53 100644 --- a/script/c38742075.lua +++ b/script/c38742075.lua @@ -36,8 +36,7 @@ function c38742075.disop(e,tp,eg,ep,ev,re,r,rp) if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if not g or not g:IsExists(c38742075.cfilter,1,nil,tp) then return end - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(re:GetHandler(),REASON_EFFECT) end end diff --git a/script/c38761908.lua b/script/c38761908.lua index cc20fd7e..c1619c02 100644 --- a/script/c38761908.lua +++ b/script/c38761908.lua @@ -1,82 +1,82 @@ ---버제스토마 디노미스쿠스 -function c38761908.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c38761908.target) - e1:SetOperation(c38761908.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(38761908,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c38761908.spcon) - e2:SetTarget(c38761908.sptg) - e2:SetOperation(c38761908.spop) - c:RegisterEffect(e2) -end -function c38761908.filter1(c) - return c:IsDiscardable(REASON_EFFECT) -end -function c38761908.filter2(c) - return c:IsFaceup() and c:IsAbleToRemove() -end -function c38761908.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c38761908.filter2(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingMatchingCard(c38761908.filter1,tp,LOCATION_HAND,0,1,e:GetHandler()) - and Duel.IsExistingTarget(c38761908.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c38761908.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c38761908.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if Duel.DiscardHand(tp,c38761908.filter1,1,1,REASON_EFFECT+REASON_DISCARD,nil)~=0 - and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end -function c38761908.spcon(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c38761908.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(38761908)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,38761908,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end - c:RegisterFlagEffect(38761908,RESET_CHAIN,0,1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c38761908.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,38761908,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c38761908.efilter) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetReset(RESET_EVENT+0x47e0000) - e3:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c38761908.efilter(e,re) - return re:IsActiveType(TYPE_MONSTER) -end +--バージェストマ・ディノミスクス +function c38761908.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c38761908.target) + e1:SetOperation(c38761908.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(38761908,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c38761908.spcon) + e2:SetTarget(c38761908.sptg) + e2:SetOperation(c38761908.spop) + c:RegisterEffect(e2) +end +function c38761908.filter1(c) + return c:IsDiscardable(REASON_EFFECT) +end +function c38761908.filter2(c) + return c:IsFaceup() and c:IsAbleToRemove() +end +function c38761908.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c38761908.filter2(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingMatchingCard(c38761908.filter1,tp,LOCATION_HAND,0,1,e:GetHandler()) + and Duel.IsExistingTarget(c38761908.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c38761908.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c38761908.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.DiscardHand(tp,c38761908.filter1,1,1,REASON_EFFECT+REASON_DISCARD,nil)~=0 + and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end +function c38761908.spcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c38761908.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(38761908)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,38761908,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end + c:RegisterFlagEffect(38761908,RESET_CHAIN,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c38761908.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,38761908,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c38761908.efilter) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c38761908.efilter(e,re) + return re:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c38814750.lua b/script/c38814750.lua index 2370102b..712c5080 100644 --- a/script/c38814750.lua +++ b/script/c38814750.lua @@ -1,90 +1,89 @@ ---PSYフレームギア・γ -function c38814750.initial_effect(c) - c:EnableUnsummonable() - --splimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c38814750.splimit) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(38814750,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_HAND) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetCondition(c38814750.condition) - e2:SetTarget(c38814750.target) - e2:SetOperation(c38814750.operation) - c:RegisterEffect(e2) -end -function c38814750.splimit(e,se,sp,st) - return se:IsHasType(EFFECT_TYPE_ACTIONS) -end -function c38814750.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and ep~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) -end -function c38814750.spfilter(c,e,tp) - return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c38814750.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) - and not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c38814750.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c38814750.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c38814750.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:FilterCount(aux.nvfilter,nil)==0 then return end - local tc=g:GetFirst() - local c=e:GetHandler() - local fid=c:GetFieldID() - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(38814750,RESET_EVENT+0x1fe0000,0,1,fid) - c:RegisterFlagEffect(38814750,RESET_EVENT+0x1fe0000,0,1,fid) - Duel.SpecialSummonComplete() - g:AddCard(c) - g:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(g) - e1:SetCondition(c38814750.rmcon) - e1:SetOperation(c38814750.rmop) - Duel.RegisterEffect(e1,tp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c38814750.rmfilter(c,fid) - return c:GetFlagEffectLabel(38814750)==fid -end -function c38814750.rmcon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c38814750.rmfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c38814750.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c38814750.rmfilter,nil,e:GetLabel()) - Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) -end +--PSYフレームギア・γ +function c38814750.initial_effect(c) + c:EnableUnsummonable() + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c38814750.splimit) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(38814750,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCondition(c38814750.condition) + e2:SetTarget(c38814750.target) + e2:SetOperation(c38814750.operation) + c:RegisterEffect(e2) +end +function c38814750.splimit(e,se,sp,st) + return se:IsHasType(EFFECT_TYPE_ACTIONS) +end +function c38814750.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and ep~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c38814750.spfilter(c,e,tp) + return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c38814750.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c38814750.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c38814750.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c38814750.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local tc=g:GetFirst() + local c=e:GetHandler() + local fid=c:GetFieldID() + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(38814750,RESET_EVENT+0x1fe0000,0,1,fid) + c:RegisterFlagEffect(38814750,RESET_EVENT+0x1fe0000,0,1,fid) + Duel.SpecialSummonComplete() + g:AddCard(c) + g:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c38814750.rmcon) + e1:SetOperation(c38814750.rmop) + Duel.RegisterEffect(e1,tp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c38814750.rmfilter(c,fid) + return c:GetFlagEffectLabel(38814750)==fid +end +function c38814750.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c38814750.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c38814750.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c38814750.rmfilter,nil,e:GetLabel()) + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c38844957.lua b/script/c38844957.lua index 5e0ae3d7..ac42bd31 100644 --- a/script/c38844957.lua +++ b/script/c38844957.lua @@ -1,53 +1,53 @@ ---緊急儀式術 -function c38844957.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c38844957.condition) - e1:SetCost(c38844957.cost) - e1:SetTarget(c38844957.target) - e1:SetOperation(c38844957.operation) - c:RegisterEffect(e1) -end -function c38844957.cfilter(c) - return c:IsFaceup() and bit.band(c:GetType(),0x81)==0x81 -end -function c38844957.condition(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c38844957.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c38844957.filter(c) - return c:GetType()==TYPE_SPELL+TYPE_RITUAL and c:IsAbleToRemoveAsCost() and c:CheckActivateEffect(true,true,false)~=nil -end -function c38844957.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - return true -end -function c38844957.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then - local te=e:GetLabelObject() - local tg=te:GetTarget() - return tg(e,tp,eg,ep,ev,re,r,rp,0,chkc) - end - if chk==0 then - if e:GetLabel()==0 then return false end - e:SetLabel(0) - return Duel.IsExistingMatchingCard(c38844957.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil) - end - e:SetLabel(0) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c38844957.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil) - local te=g:GetFirst():CheckActivateEffect(true,true,false) - e:SetLabelObject(te) - Duel.Remove(g,POS_FACEUP,REASON_COST) - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - local tg=te:GetTarget() - if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end -end -function c38844957.operation(e,tp,eg,ep,ev,re,r,rp) - local te=e:GetLabelObject() - if not te then return end - local op=te:GetOperation() - if op then op(e,tp,eg,ep,ev,re,r,rp) end -end +--緊急儀式術 +function c38844957.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c38844957.condition) + e1:SetCost(c38844957.cost) + e1:SetTarget(c38844957.target) + e1:SetOperation(c38844957.operation) + c:RegisterEffect(e1) +end +function c38844957.cfilter(c) + return c:IsFaceup() and bit.band(c:GetType(),0x81)==0x81 +end +function c38844957.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c38844957.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c38844957.filter(c) + return c:GetType()==TYPE_SPELL+TYPE_RITUAL and c:IsAbleToRemoveAsCost() and c:CheckActivateEffect(true,true,false)~=nil +end +function c38844957.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c38844957.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then + local te=e:GetLabelObject() + local tg=te:GetTarget() + return tg(e,tp,eg,ep,ev,re,r,rp,0,chkc) + end + if chk==0 then + if e:GetLabel()==0 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c38844957.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil) + end + e:SetLabel(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c38844957.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil) + local te=g:GetFirst():CheckActivateEffect(true,true,false) + e:SetLabelObject(te) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + local tg=te:GetTarget() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c38844957.operation(e,tp,eg,ep,ev,re,r,rp) + local te=e:GetLabelObject() + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end diff --git a/script/c38891741.lua b/script/c38891741.lua index 4e2d63ed..a3f85349 100644 --- a/script/c38891741.lua +++ b/script/c38891741.lua @@ -1,4 +1,4 @@ ---Ultimate Providence +--神の摂理 function c38891741.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) @@ -19,7 +19,7 @@ function c38891741.cfilter(c,type) end function c38891741.cost(e,tp,eg,ep,ev,re,r,rp,chk) if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end - local type=re:GetActiveType() + local type=bit.band(re:GetActiveType(),0x7) if chk==0 then return Duel.IsExistingMatchingCard(c38891741.cfilter,tp,LOCATION_HAND,0,1,nil,type) end Duel.DiscardHand(tp,c38891741.cfilter,1,1,REASON_COST+REASON_DISCARD,nil,type) end diff --git a/script/c3897065.lua b/script/c3897065.lua index 17c2987b..d21c6d12 100644 --- a/script/c3897065.lua +++ b/script/c3897065.lua @@ -1,85 +1,85 @@ ---スーパービークロイド-ステルス・ユニオン -function c3897065.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode4(c,61538782,98049038,71218746,984114,true,true) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(3897065,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c3897065.eqtg) - e1:SetOperation(c3897065.eqop) - c:RegisterEffect(e1) - --attack all - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ATTACK_ALL) - e2:SetCondition(c3897065.atcon) - e2:SetValue(1) - c:RegisterEffect(e2) - --pierce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e3) - --atk - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_ATTACK_ANNOUNCE) - e4:SetOperation(c3897065.atkop) - c:RegisterEffect(e4) -end -function c3897065.eqfilter(c,tp) - return c:IsFaceup() and not c:IsRace(RACE_MACHINE) and (c:IsControler(tp) or c:IsAbleToChangeControler()) -end -function c3897065.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c3897065.eqfilter(chkc,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c3897065.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler(),tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c3897065.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler(),tp) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c3897065.eqlimit(e,c) - return e:GetOwner()==c -end -function c3897065.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsType(TYPE_MONSTER) and not tc:IsRace(RACE_MACHINE) and tc:IsRelateToEffect(e) then - if c:IsFaceup() and c:IsRelateToEffect(e) then - if not Duel.Equip(tp,tc,c,false) then return end - --equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c3897065.eqlimit) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(3897065) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c3897065.atcon(e) - return e:GetHandler():IsHasEffect(3897065) -end -function c3897065.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local atk=c:GetBaseAttack() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_BASE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - e1:SetValue(atk/2) - c:RegisterEffect(e1) -end +--スーパービークロイド-ステルス・ユニオン +function c3897065.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode4(c,61538782,98049038,71218746,984114,true,true) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3897065,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c3897065.eqtg) + e1:SetOperation(c3897065.eqop) + c:RegisterEffect(e1) + --attack all + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ATTACK_ALL) + e2:SetCondition(c3897065.atcon) + e2:SetValue(1) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) + --atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetOperation(c3897065.atkop) + c:RegisterEffect(e4) +end +function c3897065.eqfilter(c,tp) + return c:IsFaceup() and not c:IsRace(RACE_MACHINE) and (c:IsControler(tp) or c:IsAbleToChangeControler()) +end +function c3897065.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c3897065.eqfilter(chkc,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c3897065.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler(),tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c3897065.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler(),tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c3897065.eqlimit(e,c) + return e:GetOwner()==c +end +function c3897065.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsType(TYPE_MONSTER) and not tc:IsRace(RACE_MACHINE) and tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + --equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c3897065.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(3897065) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c3897065.atcon(e) + return e:GetHandler():IsHasEffect(3897065) +end +function c3897065.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local atk=c:GetBaseAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e1:SetValue(atk/2) + c:RegisterEffect(e1) +end diff --git a/script/c38988538.lua b/script/c38988538.lua index daa2cab6..74ab4e67 100644 --- a/script/c38988538.lua +++ b/script/c38988538.lua @@ -1,47 +1,48 @@ ---ダイナミスト・プレシオス -function c38988538.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --disable - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DISABLE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c38988538.negcon) - e2:SetOperation(c38988538.negop) - c:RegisterEffect(e2) - --decrease atk/def - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetValue(c38988538.atkval) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) -end -function c38988538.tfilter(c,tp) - return c:IsFaceup() and c:IsSetCard(0xd8) and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) -end -function c38988538.negcon(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return e:GetHandler():GetFlagEffect(38988538)==0 and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) - and g and g:IsExists(c38988538.tfilter,1,e:GetHandler(),tp) and Duel.IsChainDisablable(ev) -end -function c38988538.negop(e,tp,eg,ep,ev,re,r,rp) - if Duel.SelectYesNo(tp,aux.Stringid(38988538,0)) then - e:GetHandler():RegisterFlagEffect(38988538,RESET_EVENT+0x1fe0000,0,1) - Duel.NegateEffect(ev) - Duel.BreakEffect() - Duel.Destroy(e:GetHandler(),REASON_EFFECT) - end -end -function c38988538.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xd8) -end -function c38988538.atkval(e,c) - return Duel.GetMatchingGroupCount(c38988538.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,nil)*-100 -end +--ダイナミスト・プレシオス +function c38988538.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --disable + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c38988538.negcon) + e2:SetOperation(c38988538.negop) + c:RegisterEffect(e2) + --decrease atk/def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(c38988538.atkval) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) +end +function c38988538.tfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xd8) and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) +end +function c38988538.negcon(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return e:GetHandler():GetFlagEffect(38988538)==0 and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) + and g and g:IsExists(c38988538.tfilter,1,e:GetHandler(),tp) and Duel.IsChainDisablable(ev) +end +function c38988538.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(38988538,0)) then + e:GetHandler():RegisterFlagEffect(38988538,RESET_EVENT+0x1fe0000,0,1) + if Duel.NegateEffect(ev) then + Duel.BreakEffect() + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end + end +end +function c38988538.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xd8) +end +function c38988538.atkval(e,c) + return Duel.GetMatchingGroupCount(c38988538.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,nil)*-100 +end diff --git a/script/c39030163.lua b/script/c39030163.lua index 78ceccc4..4bc0333e 100644 --- a/script/c39030163.lua +++ b/script/c39030163.lua @@ -20,7 +20,7 @@ function c39030163.initial_effect(c) e2:SetCategory(CATEGORY_DESTROY) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetCost(c39030163.descost) e2:SetTarget(c39030163.destg) diff --git a/script/c39118197.lua b/script/c39118197.lua index d07ffc8e..3c9a2647 100644 --- a/script/c39118197.lua +++ b/script/c39118197.lua @@ -1,53 +1,53 @@ ---カラクリ武者 六参壱八 -function c39118197.initial_effect(c) - --must attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MUST_ATTACK) - c:RegisterEffect(e1) - --to defense - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(39118197,0)) - e3:SetCategory(CATEGORY_POSITION) - e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) - e3:SetCode(EVENT_BE_BATTLE_TARGET) - e3:SetCondition(c39118197.poscon) - e3:SetOperation(c39118197.posop) - c:RegisterEffect(e3) - --atkup - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(39118197,1)) - e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_MZONE) - e4:SetCategory(CATEGORY_ATKCHANGE) - e4:SetCode(EVENT_DESTROYED) - e4:SetCondition(c39118197.atkcon) - e4:SetOperation(c39118197.atkop) - c:RegisterEffect(e4) -end -function c39118197.poscon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsAttackPos() -end -function c39118197.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end -end -function c39118197.filter(c) - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0x11) -end -function c39118197.atkcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c39118197.filter,1,nil) -end -function c39118197.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetValue(400) - c:RegisterEffect(e1) - end -end +--カラクリ武者 六参壱八 +function c39118197.initial_effect(c) + --must attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + c:RegisterEffect(e1) + --to defense + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(39118197,0)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetCondition(c39118197.poscon) + e3:SetOperation(c39118197.posop) + c:RegisterEffect(e3) + --atkup + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(39118197,1)) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetCode(EVENT_DESTROYED) + e4:SetCondition(c39118197.atkcon) + e4:SetOperation(c39118197.atkop) + c:RegisterEffect(e4) +end +function c39118197.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c39118197.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c39118197.filter(c) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0x11) +end +function c39118197.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c39118197.filter,1,nil) +end +function c39118197.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(400) + c:RegisterEffect(e1) + end +end diff --git a/script/c3912064.lua b/script/c3912064.lua index 39f736d7..cb349cf9 100644 --- a/script/c3912064.lua +++ b/script/c3912064.lua @@ -49,9 +49,9 @@ function c3912064.posop(e,tp,eg,ep,ev,re,r,rp) if g:GetCount()==0 then return end Duel.ChangePosition(g,POS_FACEUP_ATTACK) end -function c3912064.ttcon(e,c) +function c3912064.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c3912064.ttop(e,tp,eg,ep,ev,re,r,rp,c) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) diff --git a/script/c39139935.lua b/script/c39139935.lua index 2264abe5..b46e1087 100644 --- a/script/c39139935.lua +++ b/script/c39139935.lua @@ -8,7 +8,7 @@ function c39139935.initial_effect(c) e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_ATKCHANGE) e1:SetDescription(aux.Stringid(39139935,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c39139935.cost) diff --git a/script/c39188539.lua b/script/c39188539.lua index 12bbdd87..240666bc 100644 --- a/script/c39188539.lua +++ b/script/c39188539.lua @@ -1,70 +1,70 @@ ---ストーム・シューター -function c39188539.initial_effect(c) - --move - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(39188539,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e1:SetCondition(c39188539.seqcon) - e1:SetCost(c39188539.cost) - e1:SetOperation(c39188539.seqop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(39188539,1)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e2:SetCost(c39188539.cost) - e2:SetTarget(c39188539.thtg) - e2:SetOperation(c39188539.thop) - c:RegisterEffect(e2) -end -function c39188539.seqcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - return (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) - or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) -end -function c39188539.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end -function c39188539.seqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsControler(1-tp) then return end - local seq=c:GetSequence() - if (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) - or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) then - local flag=0 - if seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1) then flag=bit.bor(flag,bit.lshift(0x1,seq-1)) end - if seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1) then flag=bit.bor(flag,bit.lshift(0x1,seq+1)) end - flag=bit.bxor(flag,0xff) - local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag) - local nseq=0 - if s==1 then nseq=0 - elseif s==2 then nseq=1 - elseif s==4 then nseq=2 - elseif s==8 then nseq=3 - else nseq=4 end - Duel.MoveSequence(c,nseq) - end -end -function c39188539.filter(c,seq) - return c:GetSequence()==seq and c:IsAbleToHand() -end -function c39188539.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c39188539.filter(chkc,4-e:GetHandler():GetSequence()) end - if chk==0 then return Duel.IsExistingTarget(c39188539.filter,tp,0,LOCATION_ONFIELD,1,nil,4-e:GetHandler():GetSequence()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c39188539.filter,tp,0,LOCATION_ONFIELD,1,1,nil,4-e:GetHandler():GetSequence()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c39188539.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end +--ストーム・シューター +function c39188539.initial_effect(c) + --move + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(39188539,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e1:SetCondition(c39188539.seqcon) + e1:SetCost(c39188539.cost) + e1:SetOperation(c39188539.seqop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(39188539,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCost(c39188539.cost) + e2:SetTarget(c39188539.thtg) + e2:SetOperation(c39188539.thop) + c:RegisterEffect(e2) +end +function c39188539.seqcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + return (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) + or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) +end +function c39188539.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c39188539.seqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsControler(1-tp) then return end + local seq=c:GetSequence() + if (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) + or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) then + local flag=0 + if seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1) then flag=bit.bor(flag,bit.lshift(0x1,seq-1)) end + if seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1) then flag=bit.bor(flag,bit.lshift(0x1,seq+1)) end + flag=bit.bxor(flag,0xff) + local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag) + local nseq=0 + if s==1 then nseq=0 + elseif s==2 then nseq=1 + elseif s==4 then nseq=2 + elseif s==8 then nseq=3 + else nseq=4 end + Duel.MoveSequence(c,nseq) + end +end +function c39188539.filter(c,seq) + return c:GetSequence()==seq and c:IsAbleToHand() +end +function c39188539.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c39188539.filter(chkc,4-e:GetHandler():GetSequence()) end + if chk==0 then return Duel.IsExistingTarget(c39188539.filter,tp,0,LOCATION_ONFIELD,1,nil,4-e:GetHandler():GetSequence()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c39188539.filter,tp,0,LOCATION_ONFIELD,1,1,nil,4-e:GetHandler():GetSequence()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c39188539.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c39260991.lua b/script/c39260991.lua index 55cdd67f..2ebf04be 100644 --- a/script/c39260991.lua +++ b/script/c39260991.lua @@ -1,27 +1,27 @@ ---アクアアクトレス・テトラ -function c39260991.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c39260991.thtg) - e1:SetOperation(c39260991.thop) - c:RegisterEffect(e1) -end -function c39260991.filter(c) - return c:IsSetCard(0xce) and c:IsAbleToHand() -end -function c39260991.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c39260991.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c39260991.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c39260991.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--アクアアクトレス・テトラ +function c39260991.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c39260991.thtg) + e1:SetOperation(c39260991.thop) + c:RegisterEffect(e1) +end +function c39260991.filter(c) + return c:IsSetCard(0xce) and c:IsAbleToHand() +end +function c39260991.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c39260991.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c39260991.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c39260991.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c39261576.lua b/script/c39261576.lua index 0981a198..4a329427 100644 --- a/script/c39261576.lua +++ b/script/c39261576.lua @@ -2,7 +2,7 @@ function c39261576.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c39261576.target) @@ -22,7 +22,7 @@ function c39261576.initial_effect(c) c:RegisterEffect(e2) end function c39261576.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return c:IsOnField() and not c:IsImmuneToEffect(e) end function c39261576.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) @@ -31,7 +31,7 @@ end function c39261576.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) local res=Duel.IsExistingMatchingCard(c39261576.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) @@ -48,7 +48,7 @@ function c39261576.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c39261576.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c39261576.filter1,tp,LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c39261576.filter1,nil,e) local sg1=Duel.GetMatchingGroup(c39261576.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) local mg2=nil local sg2=nil diff --git a/script/c39272762.lua b/script/c39272762.lua index 19d87093..e072c58a 100644 --- a/script/c39272762.lua +++ b/script/c39272762.lua @@ -21,6 +21,7 @@ function c39272762.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetCategory(CATEGORY_ATKCHANGE) e3:SetDescription(aux.Stringid(39272762,1)) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetCountLimit(1) e3:SetRange(LOCATION_MZONE) diff --git a/script/c39276790.lua b/script/c39276790.lua index f879b544..d23f8cde 100644 --- a/script/c39276790.lua +++ b/script/c39276790.lua @@ -24,8 +24,7 @@ function c39276790.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c39276790.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c39303359.lua b/script/c39303359.lua index 30ea2600..6fe435c0 100644 --- a/script/c39303359.lua +++ b/script/c39303359.lua @@ -3,22 +3,18 @@ function c39303359.initial_effect(c) aux.EnableDualAttribute(c) --actlimit local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(aux.IsDualState) - e1:SetOperation(c39303359.atkop) - c:RegisterEffect(e1) -end -function c39303359.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(0,1) e1:SetValue(c39303359.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) + e1:SetCondition(c39303359.actcon) + c:RegisterEffect(e1) end function c39303359.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c39303359.actcon(e) + return aux.IsDualState(e) and Duel.GetAttacker()==e:GetHandler() +end diff --git a/script/c39343610.lua b/script/c39343610.lua index fcf45d0c..2a91955e 100644 --- a/script/c39343610.lua +++ b/script/c39343610.lua @@ -1,62 +1,62 @@ ---ダークブレイズドラゴン -function c39343610.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(39343610,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c39343610.atkcon) - e1:SetOperation(c39343610.atkop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(39343610,1)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(c39343610.damcon) - e2:SetTarget(c39343610.damtg) - e2:SetOperation(c39343610.damop) - c:RegisterEffect(e2) -end -function c39343610.atkcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_GRAVE) -end -function c39343610.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:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(c:GetBaseAttack()*2) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetValue(c:GetBaseDefense()*2) - e2:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e2) - end -end -function c39343610.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) -end -function c39343610.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - local bc=c:GetBattleTarget() - local dam=bc:GetAttack() - if dam<0 then dam=0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c39343610.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--ダークブレイズドラゴン +function c39343610.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(39343610,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c39343610.atkcon) + e1:SetOperation(c39343610.atkop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(39343610,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c39343610.damcon) + e2:SetTarget(c39343610.damtg) + e2:SetOperation(c39343610.damop) + c:RegisterEffect(e2) +end +function c39343610.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_GRAVE) +end +function c39343610.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:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(c:GetBaseDefense()*2) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end +end +function c39343610.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c39343610.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local bc=c:GetBattleTarget() + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c39343610.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c39357122.lua b/script/c39357122.lua index f9fed2c0..777688e2 100644 --- a/script/c39357122.lua +++ b/script/c39357122.lua @@ -1,30 +1,30 @@ ---真紅眼の凶雷皇-エビル・デーモン -function c39357122.initial_effect(c) - aux.EnableDualAttribute(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(aux.IsDualState) - e1:SetTarget(c39357122.destg) - e1:SetOperation(c39357122.desop) - c:RegisterEffect(e1) -end -function c39357122.filter(c,atk) - return c:IsFaceup() and c:GetDefense()0 - and Duel.IsExistingTarget(c39387565.spfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) - and Duel.GetFlagEffect(tp,39387565)==0 end - Duel.RegisterFlagEffect(tp,39387565,RESET_PHASE+PHASE_END,0,1) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c39387565.spfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c39387565.spop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c39387565.spcon2(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_DESTROY+REASON_EFFECT)==REASON_DESTROY+REASON_EFFECT and rp==1-tp -end -function c39387565.spfilter2(c,e,tp) - return c:IsSetCard(0x3b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c39387565.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c39387565.spfilter2(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c39387565.spfilter2,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c39387565.spfilter2,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c39387565.spop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--真紅眼の鎧旋 +function c39387565.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c39387565.target) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,39387565) + e2:SetCondition(c39387565.spcon1) + e2:SetTarget(c39387565.sptg1) + e2:SetOperation(c39387565.spop1) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,39387566) + e3:SetCondition(c39387565.spcon2) + e3:SetTarget(c39387565.sptg2) + e3:SetOperation(c39387565.spop2) + c:RegisterEffect(e3) +end +function c39387565.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c39387565.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return true end + if c39387565.spcon1(e,tp,eg,ep,ev,re,r,rp) and c39387565.sptg1(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(39387565,0)) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c39387565.spop1) + c39387565.sptg1(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c39387565.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3b) +end +function c39387565.spcon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c39387565.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c39387565.spfilter1(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c39387565.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c39387565.spfilter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c39387565.spfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetFlagEffect(tp,39387565)==0 end + Duel.RegisterFlagEffect(tp,39387565,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c39387565.spfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c39387565.spop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c39387565.spcon2(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_DESTROY+REASON_EFFECT)==REASON_DESTROY+REASON_EFFECT and rp==1-tp +end +function c39387565.spfilter2(c,e,tp) + return c:IsSetCard(0x3b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c39387565.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c39387565.spfilter2(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c39387565.spfilter2,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c39387565.spfilter2,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c39387565.spop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c39389320.lua b/script/c39389320.lua index 304597d6..c098f2bb 100644 --- a/script/c39389320.lua +++ b/script/c39389320.lua @@ -1,33 +1,33 @@ ---バーバリアン・キング -function c39389320.initial_effect(c) - --multi attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(39389320,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c39389320.condition) - e1:SetCost(c39389320.cost) - e1:SetOperation(c39389320.operation) - c:RegisterEffect(e1) -end -function c39389320.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c39389320.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,e:GetHandler(),RACE_WARRIOR) end - local g=Duel.SelectReleaseGroup(tp,Card.IsRace,1,10,e:GetHandler(),RACE_WARRIOR) - local ct=Duel.Release(g,REASON_COST) - e:SetLabel(ct) -end -function c39389320.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--バーバリアン・キング +function c39389320.initial_effect(c) + --multi attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(39389320,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c39389320.condition) + e1:SetCost(c39389320.cost) + e1:SetOperation(c39389320.operation) + c:RegisterEffect(e1) +end +function c39389320.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c39389320.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,e:GetHandler(),RACE_WARRIOR) end + local g=Duel.SelectReleaseGroup(tp,Card.IsRace,1,10,e:GetHandler(),RACE_WARRIOR) + local ct=Duel.Release(g,REASON_COST) + e:SetLabel(ct) +end +function c39389320.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c39399168.lua b/script/c39399168.lua index 40e21cda..42378f6e 100644 --- a/script/c39399168.lua +++ b/script/c39399168.lua @@ -1,4 +1,4 @@ ---チャクラの復活 -function c39399168.initial_effect(c) - aux.AddRitualProcGreaterCode(c,65393205) -end +--チャクラの復活 +function c39399168.initial_effect(c) + aux.AddRitualProcGreaterCode(c,65393205) +end diff --git a/script/c39454112.lua b/script/c39454112.lua index 6ccac3a1..ddddfec7 100644 --- a/script/c39454112.lua +++ b/script/c39454112.lua @@ -1,34 +1,34 @@ ---出たら目 -function c39454112.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --dice - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_TOSS_DICE_NEGATE) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c39454112.diceop) - c:RegisterEffect(e2) -end -function c39454112.diceop(e,tp,eg,ep,ev,re,r,rp) - local cc=Duel.GetCurrentChain() - local cid=Duel.GetChainInfo(cc,CHAININFO_CHAIN_ID) - if c39454112[0]~=cid and Duel.SelectYesNo(tp,aux.Stringid(39454112,0)) then - Duel.Hint(HINT_CARD,0,39454112) - local dc={Duel.GetDiceResult()} - local ac=1 - local ct=bit.band(ev,0xff)+bit.rshift(ev,16) - if ct>1 then - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(39454112,1)) - local val,idx=Duel.AnnounceNumber(tp,table.unpack(dc,1,ct)) - ac=idx+1 - end - if dc[ac]==1 or dc[ac]==3 or dc[ac]==5 then dc[ac]=6 - else dc[ac]=1 end - Duel.SetDiceResult(table.unpack(dc)) - c39454112[0]=cid - end -end +--出たら目 +function c39454112.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --dice + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TOSS_DICE_NEGATE) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c39454112.diceop) + c:RegisterEffect(e2) +end +function c39454112.diceop(e,tp,eg,ep,ev,re,r,rp) + local cc=Duel.GetCurrentChain() + local cid=Duel.GetChainInfo(cc,CHAININFO_CHAIN_ID) + if c39454112[0]~=cid and Duel.SelectYesNo(tp,aux.Stringid(39454112,0)) then + Duel.Hint(HINT_CARD,0,39454112) + local dc={Duel.GetDiceResult()} + local ac=1 + local ct=bit.band(ev,0xff)+bit.rshift(ev,16) + if ct>1 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(39454112,1)) + local val,idx=Duel.AnnounceNumber(tp,table.unpack(dc,1,ct)) + ac=idx+1 + end + if dc[ac]==1 or dc[ac]==3 or dc[ac]==5 then dc[ac]=6 + else dc[ac]=1 end + Duel.SetDiceResult(table.unpack(dc)) + c39454112[0]=cid + end +end diff --git a/script/c39512984.lua b/script/c39512984.lua index 7a8b8d01..0a30d8f9 100644 --- a/script/c39512984.lua +++ b/script/c39512984.lua @@ -1,63 +1,63 @@ ---ジェムナイトマスター・ダイヤ -function c39512984.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),3,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c39512984.splimit) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(c39512984.atkup) - c:RegisterEffect(e2) - --copy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(39512984,0)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c39512984.cost) - e3:SetOperation(c39512984.operation) - c:RegisterEffect(e3) -end -function c39512984.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c39512984.atkfilter(c) - return c:IsSetCard(0x47) and c:IsType(TYPE_MONSTER) -end -function c39512984.atkup(e,c) - return Duel.GetMatchingGroupCount(c39512984.atkfilter,c:GetControler(),LOCATION_GRAVE,0,nil)*100 -end -function c39512984.filter(c) - return c:IsLevelBelow(7) and c:IsSetCard(0x1047) and c:IsType(TYPE_FUSION) and c:IsAbleToRemoveAsCost() -end -function c39512984.cost(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c39512984.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c39512984.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) - e:SetLabel(g:GetFirst():GetOriginalCode()) -end -function c39512984.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local code=e:GetLabel() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - c:RegisterEffect(e1) - c:CopyEffect(code, RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END, 1) - end -end +--ジェムナイトマスター・ダイヤ +function c39512984.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),3,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c39512984.splimit) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c39512984.atkup) + c:RegisterEffect(e2) + --copy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(39512984,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c39512984.cost) + e3:SetOperation(c39512984.operation) + c:RegisterEffect(e3) +end +function c39512984.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c39512984.atkfilter(c) + return c:IsSetCard(0x47) and c:IsType(TYPE_MONSTER) +end +function c39512984.atkup(e,c) + return Duel.GetMatchingGroupCount(c39512984.atkfilter,c:GetControler(),LOCATION_GRAVE,0,nil)*100 +end +function c39512984.filter(c) + return c:IsLevelBelow(7) and c:IsSetCard(0x1047) and c:IsType(TYPE_FUSION) and c:IsAbleToRemoveAsCost() +end +function c39512984.cost(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c39512984.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c39512984.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(g:GetFirst():GetOriginalCode()) +end +function c39512984.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local code=e:GetLabel() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + c:CopyEffect(code, RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END, 1) + end +end diff --git a/script/c39526584.lua b/script/c39526584.lua index 6ee4ff68..2043f4e3 100644 --- a/script/c39526584.lua +++ b/script/c39526584.lua @@ -1,22 +1,22 @@ ---ギフトカード -function c39526584.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_RECOVER) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c39526584.target) - e1:SetOperation(c39526584.activate) - c:RegisterEffect(e1) -end -function c39526584.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(3000) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,3000) -end -function c39526584.activate(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end +--ギフトカード +function c39526584.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c39526584.target) + e1:SetOperation(c39526584.activate) + c:RegisterEffect(e1) +end +function c39526584.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(3000) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,3000) +end +function c39526584.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c39564736.lua b/script/c39564736.lua index e128a557..e3e36f59 100644 --- a/script/c39564736.lua +++ b/script/c39564736.lua @@ -3,7 +3,7 @@ function c39564736.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(39564736,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c39564736.target) @@ -11,7 +11,7 @@ function c39564736.initial_effect(c) c:RegisterEffect(e1) end function c39564736.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return not c:IsImmuneToEffect(e) end function c39564736.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0xe1) and (not f or f(c)) @@ -20,7 +20,7 @@ end function c39564736.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local mg1=Duel.GetFusionMaterial(tp) local res=Duel.IsExistingMatchingCard(c39564736.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) @@ -37,7 +37,7 @@ function c39564736.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c39564736.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c39564736.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c39564736.filter1,nil,e) local sg1=Duel.GetMatchingGroup(c39564736.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) local mg2=nil local sg2=nil diff --git a/script/c39581190.lua b/script/c39581190.lua new file mode 100644 index 00000000..6f96f008 --- /dev/null +++ b/script/c39581190.lua @@ -0,0 +1,71 @@ +--Subterror Nemesis Archer +function c39581190.initial_effect(c) + --to deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(39581190,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCountLimit(1,39581190) + e1:SetCondition(c39581190.tdcon) + e1:SetTarget(c39581190.tdtg) + e1:SetOperation(c39581190.tdop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(39581190,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,39581191) + e2:SetCondition(c39581190.spcon) + e2:SetTarget(c39581190.sptg) + e2:SetOperation(c39581190.spop) + c:RegisterEffect(e2) +end +function c39581190.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xed) +end +function c39581190.tdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local d=Duel.GetAttackTarget() + return c==Duel.GetAttacker() and d and d:IsPosition(POS_FACEDOWN_DEFENSE) + and Duel.IsExistingMatchingCard(c39581190.cfilter,tp,LOCATION_MZONE,0,1,c) +end +function c39581190.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk==0 then return d:IsAbleToDeck() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,d,1,0,0) +end +function c39581190.tdop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d:IsRelateToBattle() and d:IsPosition(POS_FACEDOWN_DEFENSE) then + Duel.SendtoDeck(d,nil,2,REASON_EFFECT) + end +end +function c39581190.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c39581190.spfilter(c,e,tp) + return c:IsSetCard(0xed) and (c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN)) +end +function c39581190.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c39581190.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c39581190.spop(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,c39581190.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + local spos=0 + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then spos=spos+POS_FACEUP_DEFENSE end + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) then spos=spos+POS_FACEDOWN_DEFENSE end + if spos~=0 then + Duel.SpecialSummon(tc,0,tp,tp,false,false,spos) + end +end diff --git a/script/c39711336.lua b/script/c39711336.lua index f5c1dbbc..18a9df8b 100644 --- a/script/c39711336.lua +++ b/script/c39711336.lua @@ -22,10 +22,13 @@ function c39711336.initial_effect(c) c:RegisterEffect(e2) --negate local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_NEGATE) + e3:SetType(EFFECT_TYPE_QUICK_F) + e3:SetCode(EVENT_CHAINING) e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_CHAIN_ACTIVATING) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e3:SetCondition(c39711336.discon) + e3:SetTarget(c39711336.distg) e3:SetOperation(c39711336.disop) c:RegisterEffect(e3) end @@ -62,11 +65,18 @@ function c39711336.discon(e,tp,eg,ep,ev,re,r,rp) if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if not tg or not tg:IsContains(e:GetHandler()) then return false end - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c39711336.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end end function c39711336.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(re:GetHandler(),REASON_EFFECT) + if Duel.GetCurrentChain()~=ev+1 then return end + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c39719977.lua b/script/c39719977.lua index 25d852d8..d630da2f 100644 --- a/script/c39719977.lua +++ b/script/c39719977.lua @@ -1,34 +1,34 @@ ---デルタ・アタッカー -function c39719977.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c39719977.target) - e1:SetOperation(c39719977.activate) - c:RegisterEffect(e1) -end -function c39719977.filter(c,tp) - local tpe=c:GetType() - return c:IsFaceup() and bit.band(tpe,TYPE_NORMAL)~=0 and bit.band(tpe,TYPE_TOKEN)==0 - and Duel.IsExistingMatchingCard(c39719977.filter2,tp,LOCATION_MZONE,0,2,c,c:GetCode()) -end -function c39719977.filter2(c,code) - local tpe=c:GetType() - return c:IsFaceup() and bit.band(tpe,TYPE_NORMAL)~=0 and bit.band(tpe,TYPE_TOKEN)==0 and c:IsCode(code) -end -function c39719977.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c39719977.filter,tp,LOCATION_MZONE,0,3,nil,tp) end -end -function c39719977.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c39719977.filter,tp,LOCATION_MZONE,0,nil,tp) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--デルタ・アタッカー +function c39719977.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c39719977.target) + e1:SetOperation(c39719977.activate) + c:RegisterEffect(e1) +end +function c39719977.filter(c,tp) + local tpe=c:GetType() + return c:IsFaceup() and bit.band(tpe,TYPE_NORMAL)~=0 and bit.band(tpe,TYPE_TOKEN)==0 + and Duel.IsExistingMatchingCard(c39719977.filter2,tp,LOCATION_MZONE,0,2,c,c:GetCode()) +end +function c39719977.filter2(c,code) + local tpe=c:GetType() + return c:IsFaceup() and bit.band(tpe,TYPE_NORMAL)~=0 and bit.band(tpe,TYPE_TOKEN)==0 and c:IsCode(code) +end +function c39719977.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c39719977.filter,tp,LOCATION_MZONE,0,3,nil,tp) end +end +function c39719977.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c39719977.filter,tp,LOCATION_MZONE,0,nil,tp) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c39774685.lua b/script/c39774685.lua index d2089730..39b31fb3 100644 --- a/script/c39774685.lua +++ b/script/c39774685.lua @@ -1,14 +1,6 @@ --魔菌 function c39774685.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(c39774685.target) - e1:SetOperation(c39774685.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_PLANT)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c39774685.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c39774685.eqlimit) - c:RegisterEffect(e4) -end -function c39774685.eqlimit(e,c) - return c:IsRace(RACE_PLANT) -end -function c39774685.filter(c) - return c:IsFaceup() and c:IsRace(RACE_PLANT) -end -function c39774685.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c39774685.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c39774685.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c39774685.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c39774685.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 diff --git a/script/c39778366.lua b/script/c39778366.lua index fa655583..8e743781 100644 --- a/script/c39778366.lua +++ b/script/c39778366.lua @@ -5,6 +5,7 @@ function c39778366.initial_effect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1,39778366+EFFECT_COUNT_CODE_OATH) e1:SetTarget(c39778366.target) diff --git a/script/c39817919.lua b/script/c39817919.lua new file mode 100644 index 00000000..f0461283 --- /dev/null +++ b/script/c39817919.lua @@ -0,0 +1,60 @@ +--霊魂鳥-忍鴉 +function c39817919.initial_effect(c) + --spirit return + aux.EnableSpiritReturn(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(39817919,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c39817919.atkcon) + e2:SetTarget(c39817919.atkcost) + e2:SetOperation(c39817919.atkop) + c:RegisterEffect(e2) +end +function c39817919.atkcon(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + return tc==e:GetHandler() and tc:IsRelateToBattle() and Duel.GetAttackTarget()~=nil +end +function c39817919.cfilter(c) + return c:IsType(TYPE_SPIRIT) and (c:GetAttack()>0 or c:GetDefense()>0) and c:IsDiscardable() +end +function c39817919.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c39817919.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,c39817919.cfilter,tp,LOCATION_HAND,0,1,1,nil) + e:SetLabelObject(g:GetFirst()) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c39817919.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + local atk=math.max(tc:GetAttack(),0) + local def=math.max(tc:GetDefense(),0) + if c:IsRelateToBattle() and c:IsFaceup() and c:IsControler(tp) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(def) + c:RegisterEffect(e2) + end +end diff --git a/script/c39823987.lua b/script/c39823987.lua index b218a4f9..6f73c5f1 100644 --- a/script/c39823987.lua +++ b/script/c39823987.lua @@ -1,81 +1,82 @@ ---太陽龍インティ -function c39823987.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsCode,78275321),aux.NonTuner(nil),1) - c:EnableReviveLimit() - --destroy&damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(39823987,0)) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetCondition(c39823987.descon) - e1:SetTarget(c39823987.destg) - e1:SetOperation(c39823987.desop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_DESTROYED) - e2:SetCondition(c39823987.regcon) - e2:SetOperation(c39823987.regop) - c:RegisterEffect(e2) -end -function c39823987.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c39823987.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local tc=e:GetHandler():GetReasonCard() - if tc:IsRelateToBattle() then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()/2) - end -end -function c39823987.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetReasonCard() - if not tc:IsRelateToBattle() then return end - local atk=tc:GetAttack()/2 - if atk<0 then atk=0 end - if Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.Damage(1-tp,atk,REASON_EFFECT) - end -end -function c39823987.regcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c39823987.regop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(39823987,2)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetCondition(c39823987.spcon) - e1:SetTarget(c39823987.sptg) - e1:SetOperation(c39823987.spop) - e1:SetReset(RESET_PHASE+PHASE_END,2) - e1:SetLabel(Duel.GetTurnCount()) - Duel.RegisterEffect(e1,tp) -end -function c39823987.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnCount()~=e:GetLabel() -end -function c39823987.spfilter(c,e,tp) - return c:IsCode(66818682) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c39823987.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c39823987.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c39823987.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c39823987.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c39823987.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--太陽龍インティ +function c39823987.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsCode,78275321),aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy&damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(39823987,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c39823987.descon) + e1:SetTarget(c39823987.destg) + e1:SetOperation(c39823987.desop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c39823987.regcon) + e2:SetOperation(c39823987.regop) + c:RegisterEffect(e2) +end +function c39823987.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c39823987.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetHandler():GetReasonCard() + if tc:IsRelateToBattle() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()/2) + end +end +function c39823987.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetReasonCard() + if not tc:IsRelateToBattle() then return end + local atk=tc:GetAttack()/2 + if atk<0 then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end +function c39823987.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c39823987.regop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(39823987,2)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetCondition(c39823987.spcon) + e1:SetTarget(c39823987.sptg) + e1:SetOperation(c39823987.spop) + e1:SetReset(RESET_PHASE+PHASE_END,2) + e1:SetLabel(Duel.GetTurnCount()) + Duel.RegisterEffect(e1,tp) +end +function c39823987.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()~=e:GetLabel() +end +function c39823987.spfilter(c,e,tp) + return c:IsCode(66818682) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c39823987.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c39823987.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c39823987.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c39823987.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c39823987.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c39890958.lua b/script/c39890958.lua index a3fc7765..87ff2125 100644 --- a/script/c39890958.lua +++ b/script/c39890958.lua @@ -30,6 +30,7 @@ function c39890958.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP) e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e4:SetValue(aux.tgoval) c:RegisterEffect(e4) --spsummon @@ -51,7 +52,8 @@ function c39890958.initial_effect(c) c:RegisterEffect(e6) end function c39890958.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) + local ct1,ct2=c:GetUnionCount() + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and ct2==0 end function c39890958.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) local c=e:GetHandler() @@ -72,7 +74,7 @@ function c39890958.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c39890958.sptg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() diff --git a/script/c39892082.lua b/script/c39892082.lua index a8e252c4..3f960d58 100644 --- a/script/c39892082.lua +++ b/script/c39892082.lua @@ -1,55 +1,55 @@ ---バルーン・リザード -function c39892082.initial_effect(c) - c:EnableCounterPermit(0x29) - --counter - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(39892082,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c39892082.addccon) - e1:SetTarget(c39892082.addct) - e1:SetOperation(c39892082.addc) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(39892082,1)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCondition(c39892082.damcon) - e2:SetTarget(c39892082.damtg) - e2:SetOperation(c39892082.damop) - c:RegisterEffect(e2) -end -function c39892082.addccon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c39892082.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x29) -end -function c39892082.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x29,1) - end -end -function c39892082.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetCounter(0x29) - e:SetLabel(ct) - return ct>0 and c:IsReason(REASON_DESTROY) -end -function c39892082.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(rp) - Duel.SetTargetParam(e:GetLabel()*400) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,rp,e:GetLabel()*400) -end -function c39892082.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--バルーン・リザード +function c39892082.initial_effect(c) + c:EnableCounterPermit(0x29) + --counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(39892082,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c39892082.addccon) + e1:SetTarget(c39892082.addct) + e1:SetOperation(c39892082.addc) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(39892082,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c39892082.damcon) + e2:SetTarget(c39892082.damtg) + e2:SetOperation(c39892082.damop) + c:RegisterEffect(e2) +end +function c39892082.addccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c39892082.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x29) +end +function c39892082.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x29,1) + end +end +function c39892082.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetCounter(0x29) + e:SetLabel(ct) + return ct>0 and c:IsReason(REASON_DESTROY) +end +function c39892082.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(rp) + Duel.SetTargetParam(e:GetLabel()*400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,rp,e:GetLabel()*400) +end +function c39892082.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c3989465.lua b/script/c3989465.lua index 3bf2d598..c5fdc7f5 100644 --- a/script/c3989465.lua +++ b/script/c3989465.lua @@ -8,7 +8,7 @@ function c3989465.initial_effect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetDescription(aux.Stringid(3989465,0)) e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(TIMING_DAMAGE_STEP) e1:SetRange(LOCATION_MZONE) diff --git a/script/c39897277.lua b/script/c39897277.lua index 7aa2d903..20128b5c 100644 --- a/script/c39897277.lua +++ b/script/c39897277.lua @@ -1,14 +1,6 @@ --エルフの光 function c39897277.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(c39897277.target) - e1:SetOperation(c39897277.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c39897277.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(-200) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c39897277.eqlimit) - c:RegisterEffect(e4) -end -function c39897277.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_LIGHT) -end -function c39897277.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) -end -function c39897277.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c39897277.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c39897277.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c39897277.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c39897277.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 diff --git a/script/c39910367.lua b/script/c39910367.lua index 9a5004a5..be9d5b53 100644 --- a/script/c39910367.lua +++ b/script/c39910367.lua @@ -1,76 +1,76 @@ ---魔法都市エンディミオン -function c39910367.initial_effect(c) - c:EnableCounterPermit(0x1) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Add counter - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetCode(EVENT_CHAIN_SOLVING) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetRange(LOCATION_FZONE) - e3:SetOperation(c39910367.op) - c:RegisterEffect(e3) - --Remove counter replace - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(39910367,0)) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_RCOUNTER_REPLACE+0x1) - e4:SetRange(LOCATION_FZONE) - e4:SetCountLimit(1) - e4:SetCondition(c39910367.rcon) - e4:SetOperation(c39910367.rop) - c:RegisterEffect(e4) - --Destroy replace - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_DESTROY_REPLACE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetRange(LOCATION_FZONE) - e5:SetTarget(c39910367.desreptg) - e5:SetOperation(c39910367.desrepop) - c:RegisterEffect(e5) - --Add counter2 - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e6:SetCode(EVENT_LEAVE_FIELD) - e6:SetRange(LOCATION_FZONE) - e6:SetOperation(c39910367.addop2) - c:RegisterEffect(e6) -end -function c39910367.op(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 - e:GetHandler():AddCounter(0x1,1) - end -end -function c39910367.rcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_COST)~=0 and ep==e:GetOwnerPlayer() and e:GetHandler():GetCounter(0x1)>=ev -end -function c39910367.rop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RemoveCounter(ep,0x1,ev,REASON_EFFECT) -end -function c39910367.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) - and e:GetHandler():GetCounter(0x1)>0 end - return Duel.SelectYesNo(tp,aux.Stringid(39910367,1)) -end -function c39910367.desrepop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RemoveCounter(ep,0x1,1,REASON_EFFECT) -end -function c39910367.addop2(e,tp,eg,ep,ev,re,r,rp) - local count=0 - local c=eg:GetFirst() - while c~=nil do - if not c:IsCode(39910367) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) then - count=count+c:GetCounter(0x1) - end - c=eg:GetNext() - end - if count>0 then - e:GetHandler():AddCounter(0x1,count) - end -end +--魔法都市エンディミオン +function c39910367.initial_effect(c) + c:EnableCounterPermit(0x1) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Add counter + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_FZONE) + e3:SetOperation(c39910367.op) + c:RegisterEffect(e3) + --Remove counter replace + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(39910367,0)) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_RCOUNTER_REPLACE+0x1) + e4:SetRange(LOCATION_FZONE) + e4:SetCountLimit(1) + e4:SetCondition(c39910367.rcon) + e4:SetOperation(c39910367.rop) + c:RegisterEffect(e4) + --Destroy replace + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DESTROY_REPLACE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_FZONE) + e5:SetTarget(c39910367.desreptg) + e5:SetOperation(c39910367.desrepop) + c:RegisterEffect(e5) + --Add counter2 + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e6:SetCode(EVENT_LEAVE_FIELD) + e6:SetRange(LOCATION_FZONE) + e6:SetOperation(c39910367.addop2) + c:RegisterEffect(e6) +end +function c39910367.op(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 + e:GetHandler():AddCounter(0x1,1) + end +end +function c39910367.rcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_COST)~=0 and ep==e:GetOwnerPlayer() and e:GetHandler():GetCounter(0x1)>=ev +end +function c39910367.rop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RemoveCounter(ep,0x1,ev,REASON_EFFECT) +end +function c39910367.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) + and e:GetHandler():GetCounter(0x1)>0 end + return Duel.SelectYesNo(tp,aux.Stringid(39910367,1)) +end +function c39910367.desrepop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RemoveCounter(ep,0x1,1,REASON_EFFECT) +end +function c39910367.addop2(e,tp,eg,ep,ev,re,r,rp) + local count=0 + local c=eg:GetFirst() + while c~=nil do + if not c:IsCode(39910367) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) then + count=count+c:GetCounter(0x1) + end + c=eg:GetNext() + end + if count>0 then + e:GetHandler():AddCounter(0x1,count) + end +end diff --git a/script/c39972129.lua b/script/c39972129.lua index 51f80bd2..cfd5d5e0 100644 --- a/script/c39972129.lua +++ b/script/c39972129.lua @@ -7,6 +7,7 @@ function c39972129.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(39972129,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c39980304.lua b/script/c39980304.lua index 316197ba..e9884a13 100644 --- a/script/c39980304.lua +++ b/script/c39980304.lua @@ -1,61 +1,70 @@ ---チェーン・マテリアル -function c39980304.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c39980304.cost) - e1:SetOperation(c39980304.activate) - c:RegisterEffect(e1) -end -function c39980304.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c39980304.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(39980304,0)) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHAIN_MATERIAL) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTarget(c39980304.chain_target) - e1:SetOperation(c39980304.chain_operation) - e1:SetValue(aux.TRUE) - Duel.RegisterEffect(e1,tp) -end -function c39980304.filter(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) -end -function c39980304.chain_target(e,te,tp) - return Duel.GetMatchingGroup(c39980304.filter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND+LOCATION_DECK,0,nil,te) -end -function c39980304.chain_operation(e,te,tp,tc,mat,sumtype) - if not sumtype then sumtype=SUMMON_TYPE_FUSION end - tc:SetMaterial(mat) - Duel.Remove(mat,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,sumtype,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(39980304,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetOwnerPlayer(tp) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetOperation(c39980304.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - tc:RegisterEffect(e1) -end -function c39980304.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end \ No newline at end of file +--チェーン・マテリアル +function c39980304.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c39980304.cost) + e1:SetOperation(c39980304.activate) + c:RegisterEffect(e1) +end +function c39980304.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c39980304.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(39980304,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHAIN_MATERIAL) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTarget(c39980304.chain_target) + e1:SetOperation(c39980304.chain_operation) + e1:SetValue(aux.TRUE) + Duel.RegisterEffect(e1,tp) +end +function c39980304.filter(c,e) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c39980304.chain_target(e,te,tp) + return Duel.GetMatchingGroup(c39980304.filter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND+LOCATION_DECK,0,nil,te) +end +function c39980304.chain_operation(e,te,tp,tc,mat,sumtype) + if not sumtype then sumtype=SUMMON_TYPE_FUSION end + tc:SetMaterial(mat) + Duel.Remove(mat,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,sumtype,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(39980304,RESET_EVENT+0x1fc0000,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetLabelObject(tc) + e1:SetCondition(c39980304.descon) + e1:SetOperation(c39980304.desop) + e1:SetCountLimit(1) + Duel.RegisterEffect(e1,tp) +end +function c39980304.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(39980304)~=0 then + return true + else + e:Reset() + return false + end +end +function c39980304.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c39984786.lua b/script/c39984786.lua index eefafafb..1de066a6 100644 --- a/script/c39984786.lua +++ b/script/c39984786.lua @@ -1,54 +1,54 @@ ---スパウン・アリゲーター -function c39984786.initial_effect(c) - --tribute check - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MATERIAL_CHECK) - e1:SetValue(c39984786.valcheck) - c:RegisterEffect(e1) -end -function c39984786.valcheck(e,c) - local g=c:GetMaterial() - local tc=g:GetFirst() - local sp=false - while tc do - if tc:IsRace(RACE_REPTILE) then - tc:RegisterFlagEffect(39984786,RESET_EVENT+0x17a0000+RESET_PHASE+PHASE_END,0,1) - sp=true - end - tc=g:GetNext() - end - if sp then - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(39984786,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c39984786.sptg) - e1:SetOperation(c39984786.spop) - e1:SetReset(RESET_EVENT+0xfc0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end -function c39984786.filter(c,e,tp) - return c:GetFlagEffect(39984786)~=0 and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c39984786.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return e:GetHandler():GetMaterial():IsContains(chkc) and c39984786.filter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local mg=e:GetHandler():GetMaterial() - local g=mg:FilterSelect(tp,c39984786.filter,1,1,nil,e,tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c39984786.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--スパウン・アリゲーター +function c39984786.initial_effect(c) + --tribute check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MATERIAL_CHECK) + e1:SetValue(c39984786.valcheck) + c:RegisterEffect(e1) +end +function c39984786.valcheck(e,c) + local g=c:GetMaterial() + local tc=g:GetFirst() + local sp=false + while tc do + if tc:IsRace(RACE_REPTILE) then + tc:RegisterFlagEffect(39984786,RESET_EVENT+0x17a0000+RESET_PHASE+PHASE_END,0,1) + sp=true + end + tc=g:GetNext() + end + if sp then + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(39984786,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c39984786.sptg) + e1:SetOperation(c39984786.spop) + e1:SetReset(RESET_EVENT+0xfc0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c39984786.filter(c,e,tp) + return c:GetFlagEffect(39984786)~=0 and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c39984786.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return e:GetHandler():GetMaterial():IsContains(chkc) and c39984786.filter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local mg=e:GetHandler():GetMaterial() + local g=mg:FilterSelect(tp,c39984786.filter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c39984786.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c39987164.lua b/script/c39987164.lua index a9739323..820eeca5 100644 --- a/script/c39987164.lua +++ b/script/c39987164.lua @@ -8,7 +8,7 @@ function c39987164.initial_effect(c) e1:SetDescription(aux.Stringid(39987164,0)) e1:SetCategory(CATEGORY_EQUIP) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c39987164.eqcost) diff --git a/script/c40005099.lua b/script/c40005099.lua index faa2c1cc..2e9a7b89 100644 --- a/script/c40005099.lua +++ b/script/c40005099.lua @@ -1,77 +1,77 @@ ---不知火流 転生の陣 -function c40005099.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,40005099+EFFECT_COUNT_CODE_OATH) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(40005099,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e2:SetRange(LOCATION_FZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCondition(c40005099.condition) - e2:SetCost(c40005099.cost) - e2:SetTarget(c40005099.target) - e2:SetOperation(c40005099.operation) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(40005099,1)) - e3:SetCategory(CATEGORY_TOGRAVE) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e3:SetRange(LOCATION_FZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCondition(c40005099.condition) - e3:SetCost(c40005099.cost) - e3:SetTarget(c40005099.target2) - e3:SetOperation(c40005099.operation2) - c:RegisterEffect(e3) -end -function c40005099.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c40005099.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) -end -function c40005099.filter1(c,e,tp) - return c:IsRace(RACE_ZOMBIE) and c:GetDefense()==0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c40005099.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c40005099.filter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c40005099.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c40005099.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c40005099.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c40005099.filter2(c) - return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and c:GetDefense()==0 -end -function c40005099.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c40005099.filter2(chkc) end - if chk==0 then return Duel.IsExistingTarget(c40005099.filter2,tp,LOCATION_REMOVED,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,c40005099.filter2,tp,LOCATION_REMOVED,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) -end -function c40005099.operation2(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) - end -end +--不知火流 転生の陣 +function c40005099.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,40005099+EFFECT_COUNT_CODE_OATH) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(40005099,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c40005099.condition) + e2:SetCost(c40005099.cost) + e2:SetTarget(c40005099.target) + e2:SetOperation(c40005099.operation) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(40005099,1)) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e3:SetRange(LOCATION_FZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCondition(c40005099.condition) + e3:SetCost(c40005099.cost) + e3:SetTarget(c40005099.target2) + e3:SetOperation(c40005099.operation2) + c:RegisterEffect(e3) +end +function c40005099.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c40005099.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c40005099.filter1(c,e,tp) + return c:IsRace(RACE_ZOMBIE) and c:GetDefense()==0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c40005099.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c40005099.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c40005099.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c40005099.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c40005099.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c40005099.filter2(c) + return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and c:GetDefense()==0 +end +function c40005099.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c40005099.filter2(chkc) end + if chk==0 then return Duel.IsExistingTarget(c40005099.filter2,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c40005099.filter2,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c40005099.operation2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) + end +end diff --git a/script/c40028305.lua b/script/c40028305.lua index 847ceac4..e7d42879 100644 --- a/script/c40028305.lua +++ b/script/c40028305.lua @@ -1,81 +1,81 @@ ---超重武者装留シャイン・クロー -function c40028305.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_HAND+LOCATION_MZONE) - e1:SetTarget(c40028305.eqtg) - e1:SetOperation(c40028305.eqop) - c:RegisterEffect(e1) -end -function c40028305.eqfilter(c) - return c:IsFaceup() and c:IsSetCard(0x9a) -end -function c40028305.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c40028305.eqfilter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c40028305.eqfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c40028305.eqfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) -end -function c40028305.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c40028305.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(500) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_EQUIP) - e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e4:SetReset(RESET_EVENT+0x1fe0000) - e4:SetValue(1) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetCategory(CATEGORY_SPECIAL_SUMMON) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_SZONE) - e5:SetCountLimit(1,40028305) - e5:SetTarget(c40028305.sptg) - e5:SetOperation(c40028305.spop) - e5:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e5) -end -function c40028305.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c40028305.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c40028305.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--超重武者装留シャイン・クロー +function c40028305.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c40028305.eqtg) + e1:SetOperation(c40028305.eqop) + c:RegisterEffect(e1) +end +function c40028305.eqfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9a) +end +function c40028305.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c40028305.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c40028305.eqfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c40028305.eqfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c40028305.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c40028305.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1,40028305) + e5:SetTarget(c40028305.sptg) + e5:SetOperation(c40028305.spop) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) +end +function c40028305.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c40028305.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c40028305.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c40061558.lua b/script/c40061558.lua index 69b94537..3b477abb 100644 --- a/script/c40061558.lua +++ b/script/c40061558.lua @@ -1,79 +1,79 @@ ---アポクリフォート・カーネル -function c40061558.initial_effect(c) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --tribute limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_TRIBUTE_LIMIT) - e2:SetValue(c40061558.tlimit) - c:RegisterEffect(e2) - --summon with 3 tribute - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(40061558,0)) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_LIMIT_SUMMON_PROC) - e3:SetCondition(c40061558.ttcon) - e3:SetOperation(c40061558.ttop) - e3:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_LIMIT_SET_PROC) - c:RegisterEffect(e4) - --immune - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) - e5:SetRange(LOCATION_MZONE) - e5:SetCode(EFFECT_IMMUNE_EFFECT) - e5:SetCondition(c40061558.immcon) - e5:SetValue(c40061558.efilter) - c:RegisterEffect(e5) - --control - local e6=Effect.CreateEffect(c) - e6:SetCategory(CATEGORY_CONTROL) - e6:SetType(EFFECT_TYPE_IGNITION) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET) - e6:SetRange(LOCATION_MZONE) - e6:SetCountLimit(1) - e6:SetTarget(c40061558.cttg) - e6:SetOperation(c40061558.ctop) - c:RegisterEffect(e6) -end -function c40061558.tlimit(e,c) - return not c:IsSetCard(0xaa) -end -function c40061558.ttcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 -end -function c40061558.ttop(e,tp,eg,ep,ev,re,r,rp,c) - local g=Duel.SelectTribute(tp,c,3,3) - c:SetMaterial(g) - Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) -end -function c40061558.immcon(e) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL -end -function c40061558.efilter(e,te) - if te:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return true - else return aux.qlifilter(e,te) end -end -function c40061558.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end - if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) -end -function c40061558.ctop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.GetControl(tc,tp,PHASE_END,1) - end -end +--アポクリフォート・カーネル +function c40061558.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --tribute limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRIBUTE_LIMIT) + e2:SetValue(c40061558.tlimit) + c:RegisterEffect(e2) + --summon with 3 tribute + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(40061558,0)) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e3:SetCondition(c40061558.ttcon) + e3:SetOperation(c40061558.ttop) + e3:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_LIMIT_SET_PROC) + c:RegisterEffect(e4) + --immune + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetCondition(c40061558.immcon) + e5:SetValue(c40061558.efilter) + c:RegisterEffect(e5) + --control + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_CONTROL) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetTarget(c40061558.cttg) + e6:SetOperation(c40061558.ctop) + c:RegisterEffect(e6) +end +function c40061558.tlimit(e,c) + return not c:IsSetCard(0xaa) +end +function c40061558.ttcon(e,c,minc) + if c==nil then return true end + return minc<=3 and Duel.CheckTribute(c,3) +end +function c40061558.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c40061558.immcon(e) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL +end +function c40061558.efilter(e,te) + if te:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return true + else return aux.qlifilter(e,te) end +end +function c40061558.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c40061558.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c40089744.lua b/script/c40089744.lua index 1c740f2d..2dd26a48 100644 --- a/script/c40089744.lua +++ b/script/c40089744.lua @@ -1,76 +1,76 @@ ---混沌の場 -function c40089744.initial_effect(c) - c:EnableCounterPermit(0x1) - c:SetCounterLimit(0x1,6) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,40089744+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c40089744.target) - e1:SetOperation(c40089744.activate) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetRange(LOCATION_FZONE) - e2:SetOperation(c40089744.acop) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_FZONE) - e3:SetCountLimit(1) - e3:SetCost(c40089744.thcost) - e3:SetTarget(c40089744.thtg) - e3:SetOperation(c40089744.thop) - c:RegisterEffect(e3) -end -function c40089744.filter(c) - return ((c:IsSetCard(0x10cf) and c:IsType(TYPE_RITUAL)) or c:IsSetCard(0xbd)) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c40089744.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c40089744.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c40089744.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c40089744.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c40089744.cfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsPreviousLocation(LOCATION_HAND+LOCATION_ONFIELD) -end -function c40089744.acop(e,tp,eg,ep,ev,re,r,rp) - local ct=eg:FilterCount(c40089744.cfilter,nil) - if ct>0 then - e:GetHandler():AddCounter(0x1,ct,true) - end -end -function c40089744.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x1,3,REASON_COST) end - e:GetHandler():RemoveCounter(tp,0x1,3,REASON_COST) -end -function c40089744.thfilter(c) - return c:GetType()==TYPE_SPELL+TYPE_RITUAL and c:IsAbleToHand() -end -function c40089744.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c40089744.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c40089744.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c40089744.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--混沌の場 +function c40089744.initial_effect(c) + c:EnableCounterPermit(0x1) + c:SetCounterLimit(0x1,6) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,40089744+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c40089744.target) + e1:SetOperation(c40089744.activate) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_FZONE) + e2:SetOperation(c40089744.acop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1) + e3:SetCost(c40089744.thcost) + e3:SetTarget(c40089744.thtg) + e3:SetOperation(c40089744.thop) + c:RegisterEffect(e3) +end +function c40089744.filter(c) + return ((c:IsSetCard(0x10cf) and c:IsType(TYPE_RITUAL)) or c:IsSetCard(0xbd)) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c40089744.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c40089744.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c40089744.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c40089744.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c40089744.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsPreviousLocation(LOCATION_HAND+LOCATION_ONFIELD) +end +function c40089744.acop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c40089744.cfilter,nil) + if ct>0 then + e:GetHandler():AddCounter(0x1,ct,true) + end +end +function c40089744.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x1,3,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x1,3,REASON_COST) +end +function c40089744.thfilter(c) + return c:GetType()==TYPE_SPELL+TYPE_RITUAL and c:IsAbleToHand() +end +function c40089744.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c40089744.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c40089744.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c40089744.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c40101111.lua b/script/c40101111.lua index f367ef13..3277b057 100644 --- a/script/c40101111.lua +++ b/script/c40101111.lua @@ -1,63 +1,63 @@ ---アルティメットサイキッカー -function c40101111.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,c40101111.ffilter,aux.FilterBoolFunction(Card.IsRace,RACE_PSYCHO),true) - --pierce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e2) - --cannot be destroyed - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetValue(1) - c:RegisterEffect(e3) - --fusion success - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(40101111,0)) - e4:SetCategory(CATEGORY_RECOVER) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_BATTLE_DESTROYING) - e4:SetCondition(c40101111.recon) - e4:SetTarget(c40101111.rectg) - e4:SetOperation(c40101111.recop) - c:RegisterEffect(e4) - --spsummon condition - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e5:SetCode(EFFECT_SPSUMMON_CONDITION) - e5:SetValue(c40101111.splimit) - c:RegisterEffect(e5) -end -c40101111.miracle_synchro_fusion=true -function c40101111.splimit(e,se,sp,st) - if e:GetHandler():IsLocation(LOCATION_EXTRA) then - return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION - end - return true -end -function c40101111.ffilter(c) - return c:IsType(TYPE_SYNCHRO) and c:IsRace(RACE_PSYCHO) -end -function c40101111.recon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) -end -function c40101111.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local rec=e:GetHandler():GetBattleTarget():GetAttack() - if rec<0 then rec=0 end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(rec) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) -end -function c40101111.recop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end +--アルティメットサイキッカー +function c40101111.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c40101111.ffilter,aux.FilterBoolFunction(Card.IsRace,RACE_PSYCHO),true) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) + --cannot be destroyed + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(1) + c:RegisterEffect(e3) + --fusion success + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(40101111,0)) + e4:SetCategory(CATEGORY_RECOVER) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_BATTLE_DESTROYING) + e4:SetCondition(c40101111.recon) + e4:SetTarget(c40101111.rectg) + e4:SetOperation(c40101111.recop) + c:RegisterEffect(e4) + --spsummon condition + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e5:SetCode(EFFECT_SPSUMMON_CONDITION) + e5:SetValue(c40101111.splimit) + c:RegisterEffect(e5) +end +c40101111.miracle_synchro_fusion=true +function c40101111.splimit(e,se,sp,st) + if e:GetHandler():IsLocation(LOCATION_EXTRA) then + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION + end + return true +end +function c40101111.ffilter(c) + return c:IsFusionType(TYPE_SYNCHRO) and c:IsRace(RACE_PSYCHO) +end +function c40101111.recon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c40101111.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local rec=e:GetHandler():GetBattleTarget():GetAttack() + if rec<0 then rec=0 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(rec) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) +end +function c40101111.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c40159926.lua b/script/c40159926.lua index fd7c2a1d..9517c0ee 100644 --- a/script/c40159926.lua +++ b/script/c40159926.lua @@ -1,74 +1,74 @@ ---ミラー・リゾネーター -function c40159926.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(40159926,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e1:SetCountLimit(1,40159926) - e1:SetCondition(c40159926.condition) - e1:SetTarget(c40159926.target) - e1:SetOperation(c40159926.operation) - c:RegisterEffect(e1) - --synchro level - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(40159926,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetTarget(c40159926.lvtg) - e2:SetOperation(c40159926.lvop) - c:RegisterEffect(e2) -end -function c40159926.cfilter(c) - return c:GetSummonLocation()==LOCATION_EXTRA -end -function c40159926.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c40159926.cfilter,tp,0,LOCATION_MZONE,1,nil) - and not Duel.IsExistingMatchingCard(c40159926.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c40159926.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c40159926.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1,true) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c40159926.lvfilter(c) - return c:IsFaceup() and c:GetOriginalLevel()>0 -end -function c40159926.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c40159926.lvfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c40159926.lvfilter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c40159926.lvfilter,tp,0,LOCATION_MZONE,1,1,nil) -end -function c40159926.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsFaceup() and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SYNCHRO_LEVEL) - e1:SetValue(tc:GetOriginalLevel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - c:SetHint(CHINT_NUMBER,tc:GetOriginalLevel()) - end -end +--ミラー・リゾネーター +function c40159926.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40159926,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetCountLimit(1,40159926) + e1:SetCondition(c40159926.condition) + e1:SetTarget(c40159926.target) + e1:SetOperation(c40159926.operation) + c:RegisterEffect(e1) + --synchro level + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(40159926,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c40159926.lvtg) + e2:SetOperation(c40159926.lvop) + c:RegisterEffect(e2) +end +function c40159926.cfilter(c) + return c:GetSummonLocation()==LOCATION_EXTRA +end +function c40159926.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c40159926.cfilter,tp,0,LOCATION_MZONE,1,nil) + and not Duel.IsExistingMatchingCard(c40159926.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c40159926.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c40159926.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c40159926.lvfilter(c) + return c:IsFaceup() and c:GetOriginalLevel()>0 +end +function c40159926.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c40159926.lvfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c40159926.lvfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c40159926.lvfilter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c40159926.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SYNCHRO_LEVEL) + e1:SetValue(tc:GetOriginalLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + c:SetHint(CHINT_NUMBER,tc:GetOriginalLevel()) + end +end diff --git a/script/c40172183.lua b/script/c40172183.lua index 15019947..deb96035 100644 --- a/script/c40172183.lua +++ b/script/c40172183.lua @@ -1,25 +1,25 @@ ---狭き通路 -function c40172183.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c40172183.condition) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EFFECT_CANNOT_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - e2:SetTarget(c40172183.sumlimit) - c:RegisterEffect(e2) -end -function c40172183.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)<=2 - and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)<=2 -end -function c40172183.sumlimit(e,c,sp,st) - return Duel.GetFieldGroupCount(sp,LOCATION_MZONE,0)>=2 -end +--狭き通路 +function c40172183.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c40172183.condition) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetTarget(c40172183.sumlimit) + c:RegisterEffect(e2) +end +function c40172183.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)<=2 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)<=2 +end +function c40172183.sumlimit(e,c,sp,st) + return Duel.GetFieldGroupCount(sp,LOCATION_MZONE,0)>=2 +end diff --git a/script/c40189917.lua b/script/c40189917.lua index 14c93b5b..20b5ce6b 100644 --- a/script/c40189917.lua +++ b/script/c40189917.lua @@ -32,11 +32,11 @@ end function c40189917.mfilter(c,tp) return c:IsSetCard(0x2c) and (c:IsControler(tp) or c:IsFaceup()) end -function c40189917.sumcon(e,c) +function c40189917.sumcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c40189917.mfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.GetTributeCount(c,mg)>0 + return minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c40189917.sumop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c40189917.mfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c40217358.lua b/script/c40217358.lua index 5a999e69..fb48f571 100644 --- a/script/c40217358.lua +++ b/script/c40217358.lua @@ -1,75 +1,75 @@ ---ブルー・ダストン -function c40217358.initial_effect(c) - c:SetUniqueOnField(1,0,40217358) - --cannot release - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetValue(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) - e3:SetValue(1) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - c:RegisterEffect(e5) - --banish - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(40217358,0)) - e6:SetCategory(CATEGORY_REMOVE) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_DESTROYED) - e6:SetCondition(c40217358.rmcon) - e6:SetTarget(c40217358.rmtg) - e6:SetOperation(c40217358.rmop) - c:RegisterEffect(e6) -end -function c40217358.rmcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c40217358.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local pre=e:GetHandler():GetPreviousControler() - Duel.SetTargetPlayer(pre) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,pre,LOCATION_HAND) -end -function c40217358.rmop(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 - local sg=g:RandomSelect(p,1) - Duel.Remove(sg,POS_FACEDOWN,REASON_EFFECT) - local tc=sg:GetFirst() - tc:RegisterFlagEffect(40217358,RESET_EVENT+0x1fe0000,0,0) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetCondition(c40217358.retcon) - e1:SetOperation(c40217358.retop) - e1:SetLabel(Duel.GetTurnCount()+1) - e1:SetLabelObject(tc) - Duel.RegisterEffect(e1,tp) -end -function c40217358.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnCount()==e:GetLabel() -end -function c40217358.retop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:GetFlagEffect(40217358)~=0 then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end - e:Reset() -end +--ブルー・ダストン +function c40217358.initial_effect(c) + c:SetUniqueOnField(1,0,40217358) + --cannot release + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e5) + --banish + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(40217358,0)) + e6:SetCategory(CATEGORY_REMOVE) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_DESTROYED) + e6:SetCondition(c40217358.rmcon) + e6:SetTarget(c40217358.rmtg) + e6:SetOperation(c40217358.rmop) + c:RegisterEffect(e6) +end +function c40217358.rmcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c40217358.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local pre=e:GetHandler():GetPreviousControler() + Duel.SetTargetPlayer(pre) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,pre,LOCATION_HAND) +end +function c40217358.rmop(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 + local sg=g:RandomSelect(p,1) + Duel.Remove(sg,POS_FACEDOWN,REASON_EFFECT) + local tc=sg:GetFirst() + tc:RegisterFlagEffect(40217358,RESET_EVENT+0x1fe0000,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetCondition(c40217358.retcon) + e1:SetOperation(c40217358.retop) + e1:SetLabel(Duel.GetTurnCount()+1) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) +end +function c40217358.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==e:GetLabel() +end +function c40217358.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(40217358)~=0 then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end + e:Reset() +end diff --git a/script/c40225398.lua b/script/c40225398.lua index f43b08a1..74a2f759 100644 --- a/script/c40225398.lua +++ b/script/c40225398.lua @@ -1,20 +1,20 @@ ---ツイン・ブレイカー -function c40225398.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_DAMAGE_STEP_END) - e1:SetOperation(c40225398.caop) - c:RegisterEffect(e1) - --pierce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e2) -end -function c40225398.caop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - if Duel.GetAttacker()==c and bc and bit.band(bc:GetBattlePosition(),POS_DEFENSE)~=0 and c:IsRelateToBattle() and c:IsChainAttackable() then - Duel.ChainAttack() - end -end +--ツイン・ブレイカー +function c40225398.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetOperation(c40225398.caop) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) +end +function c40225398.caop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if Duel.GetAttacker()==c and bc and bit.band(bc:GetBattlePosition(),POS_DEFENSE)~=0 and c:IsRelateToBattle() and c:IsChainAttackable() then + Duel.ChainAttack() + end +end diff --git a/script/c4022819.lua b/script/c4022819.lua index 86bdb4a2..ea140d6c 100644 --- a/script/c4022819.lua +++ b/script/c4022819.lua @@ -1,100 +1,100 @@ ---聖刻龍-アセトドラゴン -function c4022819.initial_effect(c) - --summon with no tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(4022819,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SUMMON_PROC) - e1:SetCondition(c4022819.ntcon) - e1:SetOperation(c4022819.ntop) - c:RegisterEffect(e1) - --lvchange - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(4022819,1)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c4022819.lvtg) - e2:SetOperation(c4022819.lvop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(4022819,2)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetCode(EVENT_RELEASE) - e3:SetTarget(c4022819.sptg) - e3:SetOperation(c4022819.spop) - c:RegisterEffect(e3) -end -function c4022819.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c4022819.ntop(e,tp,eg,ep,ev,re,r,rp,c) - --change base attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetReset(RESET_EVENT+0xff0000) - e1:SetCode(EFFECT_SET_BASE_ATTACK) - e1:SetValue(1000) - c:RegisterEffect(e1) -end -function c4022819.lvfilter(c) - return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) -end -function c4022819.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c4022819.lvfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c4022819.lvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c4022819.lvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c4022819.lvfilter2(c) - return c:IsFaceup() and c:IsSetCard(0x69) and not c:IsType(TYPE_XYZ) -end -function c4022819.lvop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end - local g=Duel.GetMatchingGroup(c4022819.lvfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,tc) - local lc=g:GetFirst() - local lv=tc:GetLevel() - while lc~=nil do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetValue(lv) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - lc:RegisterEffect(e1) - lc=g:GetNext() - end -end -function c4022819.spfilter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c4022819.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) -end -function c4022819.spop(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,c4022819.spfilter,tp,0x13,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end - if tc and Duel.SpecialSummonStep(g:GetFirst(),0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - end -end +--聖刻龍-アセトドラゴン +function c4022819.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4022819,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c4022819.ntcon) + e1:SetOperation(c4022819.ntop) + c:RegisterEffect(e1) + --lvchange + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4022819,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c4022819.lvtg) + e2:SetOperation(c4022819.lvop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(4022819,2)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCode(EVENT_RELEASE) + e3:SetTarget(c4022819.sptg) + e3:SetOperation(c4022819.spop) + c:RegisterEffect(e3) +end +function c4022819.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c4022819.ntop(e,tp,eg,ep,ev,re,r,rp,c) + --change base attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0xff0000) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(1000) + c:RegisterEffect(e1) +end +function c4022819.lvfilter(c) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) +end +function c4022819.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c4022819.lvfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c4022819.lvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c4022819.lvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c4022819.lvfilter2(c) + return c:IsFaceup() and c:IsSetCard(0x69) and not c:IsType(TYPE_XYZ) +end +function c4022819.lvop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local g=Duel.GetMatchingGroup(c4022819.lvfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,tc) + local lc=g:GetFirst() + local lv=tc:GetLevel() + while lc~=nil do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + lc:RegisterEffect(e1) + lc=g:GetNext() + end +end +function c4022819.spfilter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c4022819.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c4022819.spop(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,aux.NecroValleyFilter(c4022819.spfilter),tp,0x13,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c40230018.lua b/script/c40230018.lua index 0517f21f..f3e193da 100644 --- a/script/c40230018.lua +++ b/script/c40230018.lua @@ -1,70 +1,70 @@ ---魔導書庫クレッセン -function c40230018.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(40230018,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,40230018+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c40230018.condition) - e1:SetCost(c40230018.cost) - e1:SetTarget(c40230018.target) - e1:SetOperation(c40230018.operation) - c:RegisterEffect(e1) - Duel.AddCustomActivityCounter(40230018,ACTIVITY_CHAIN,c40230018.chainfilter) -end -function c40230018.chainfilter(re,tp,cid) - return not (re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and not re:GetHandler():IsSetCard(0x106e)) -end -function c40230018.cfilter(c) - return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) -end -function c40230018.condition(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c40230018.cfilter,tp,LOCATION_GRAVE,0,1,nil) -end -function c40230018.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCustomActivityCount(40230018,tp,ACTIVITY_CHAIN)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(1,0) - e1:SetValue(c40230018.aclimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c40230018.aclimit(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and not re:GetHandler():IsSetCard(0x106e) -end -function c40230018.filter(c) - return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() -end -function c40230018.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=Duel.GetMatchingGroup(c40230018.filter,tp,LOCATION_DECK,0,nil) - return g:GetClassCount(Card.GetCode)>=3 - end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) -end -function c40230018.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c40230018.filter,tp,LOCATION_DECK,0,nil) - if g:GetClassCount(Card.GetCode)>=3 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local sg1=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,sg1:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local sg2=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,sg2:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local sg3=g:Select(tp,1,1,nil) - sg1:Merge(sg2) - sg1:Merge(sg3) - Duel.ConfirmCards(1-tp,sg1) - Duel.ShuffleDeck(tp) - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) - local tg=sg1:Select(1-tp,1,1,nil) - local tc=tg:GetFirst() - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end +--魔導書庫クレッセン +function c40230018.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40230018,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,40230018+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c40230018.condition) + e1:SetCost(c40230018.cost) + e1:SetTarget(c40230018.target) + e1:SetOperation(c40230018.operation) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(40230018,ACTIVITY_CHAIN,c40230018.chainfilter) +end +function c40230018.chainfilter(re,tp,cid) + return not (re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and not re:GetHandler():IsSetCard(0x106e)) +end +function c40230018.cfilter(c) + return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) +end +function c40230018.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c40230018.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c40230018.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(40230018,tp,ACTIVITY_CHAIN)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,0) + e1:SetValue(c40230018.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c40230018.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and not re:GetHandler():IsSetCard(0x106e) +end +function c40230018.filter(c) + return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c40230018.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetMatchingGroup(c40230018.filter,tp,LOCATION_DECK,0,nil) + return g:GetClassCount(Card.GetCode)>=3 + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c40230018.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c40230018.filter,tp,LOCATION_DECK,0,nil) + if g:GetClassCount(Card.GetCode)>=3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local sg1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,sg1:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local sg2=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,sg2:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local sg3=g:Select(tp,1,1,nil) + sg1:Merge(sg2) + sg1:Merge(sg3) + Duel.ConfirmCards(1-tp,sg1) + Duel.ShuffleDeck(tp) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local tg=sg1:Select(1-tp,1,1,nil) + local tc=tg:GetFirst() + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c40252269.lua b/script/c40252269.lua new file mode 100644 index 00000000..44c5f595 --- /dev/null +++ b/script/c40252269.lua @@ -0,0 +1,64 @@ +--魔術師の再演 +--Magician's Encore +--Script by nekrozar +function c40252269.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(40252269,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c40252269.sptg) + e2:SetOperation(c40252269.spop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(40252269,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetTarget(c40252269.thtg) + e3:SetOperation(c40252269.thop) + c:RegisterEffect(e3) +end +function c40252269.spfilter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c40252269.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c40252269.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c40252269.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c40252269.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c40252269.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c40252269.thfilter(c) + return c:IsSetCard(0x98) and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and not c:IsCode(40252269) and c:IsAbleToHand() +end +function c40252269.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c40252269.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c40252269.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c40252269.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c40318957.lua b/script/c40318957.lua index 2102b107..bfde9dc8 100644 --- a/script/c40318957.lua +++ b/script/c40318957.lua @@ -1,44 +1,44 @@ ---EMドクロバット・ジョーカー -function c40318957.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c40318957.splimit) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(40318957,0)) - e3:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetTarget(c40318957.thtg) - e3:SetOperation(c40318957.thop) - c:RegisterEffect(e3) -end -function c40318957.filter(c) - return c:IsSetCard(0x9f) or (c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM)) or c:IsSetCard(0x99) -end -function c40318957.splimit(e,c,tp,sumtp,sumpos) - return not c40318957.filter(c) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c40318957.thfilter(c) - return c40318957.filter(c) and not c:IsCode(40318957) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c40318957.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c40318957.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c40318957.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c40318957.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--EMドクロバット・ジョーカー +function c40318957.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c40318957.splimit) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(40318957,0)) + e3:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c40318957.thtg) + e3:SetOperation(c40318957.thop) + c:RegisterEffect(e3) +end +function c40318957.filter(c) + return c:IsSetCard(0x9f) or (c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM)) or c:IsSetCard(0x99) +end +function c40318957.splimit(e,c,tp,sumtp,sumpos) + return not c40318957.filter(c) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c40318957.thfilter(c) + return c40318957.filter(c) and not c:IsCode(40318957) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c40318957.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c40318957.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c40318957.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c40318957.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c40320754.lua b/script/c40320754.lua index c5d9c88d..6cbf73c2 100644 --- a/script/c40320754.lua +++ b/script/c40320754.lua @@ -1,33 +1,33 @@ ---ロードポイズン -function c40320754.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(40320754,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetCondition(c40320754.condition) - e1:SetTarget(c40320754.target) - e1:SetOperation(c40320754.operation) - c:RegisterEffect(e1) -end -function c40320754.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c40320754.filter(c,e,tp) - return c:IsRace(RACE_PLANT) and c:GetCode()~=40320754 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c40320754.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c40320754.filter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c40320754.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c40320754.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ロードポイズン +function c40320754.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40320754,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c40320754.condition) + e1:SetTarget(c40320754.target) + e1:SetOperation(c40320754.operation) + c:RegisterEffect(e1) +end +function c40320754.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c40320754.filter(c,e,tp) + return c:IsRace(RACE_PLANT) and c:GetCode()~=40320754 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c40320754.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c40320754.filter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c40320754.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c40320754.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c40383551.lua b/script/c40383551.lua index 8e459096..b0d338db 100644 --- a/script/c40383551.lua +++ b/script/c40383551.lua @@ -1,38 +1,38 @@ ---大寒気 -function c40383551.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c40383551.target) - e1:SetOperation(c40383551.operation) - c:RegisterEffect(e1) -end -function c40383551.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) -end -function c40383551.operation(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(1,0) - e1:SetValue(c40383551.aclimit) - e1:SetReset(RESET_PHASE+PHASE_END,1) - Duel.RegisterEffect(e1,p) - --cannot set - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SSET) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,0) - e2:SetTarget(aux.TRUE) - e2:SetReset(RESET_PHASE+PHASE_END,1) - Duel.RegisterEffect(e2,p) -end -function c40383551.aclimit(e,re,tp) - return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) -end +--大寒気 +function c40383551.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c40383551.target) + e1:SetOperation(c40383551.operation) + c:RegisterEffect(e1) +end +function c40383551.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) +end +function c40383551.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,0) + e1:SetValue(c40383551.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END,1) + Duel.RegisterEffect(e1,p) + --cannot set + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SSET) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetTarget(aux.TRUE) + e2:SetReset(RESET_PHASE+PHASE_END,1) + Duel.RegisterEffect(e2,p) +end +function c40383551.aclimit(e,re,tp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c40390147.lua b/script/c40390147.lua index 881405cc..0ed37887 100644 --- a/script/c40390147.lua +++ b/script/c40390147.lua @@ -7,6 +7,7 @@ function c40390147.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(40390147,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c40391316.lua b/script/c40391316.lua index c56762ba..14a7d027 100644 --- a/script/c40391316.lua +++ b/script/c40391316.lua @@ -1,23 +1,23 @@ ---おジャマ・ナイト -function c40391316.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xf),2,true) - --disable field - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_DISABLE_FIELD) - e2:SetOperation(c40391316.disop) - c:RegisterEffect(e2) -end -function c40391316.disop(e,tp) - local c=Duel.GetLocationCount(1-tp,LOCATION_MZONE) - if c==0 then return end - local dis1=Duel.SelectDisableField(tp,1,0,LOCATION_MZONE,0) - if c>1 and Duel.SelectYesNo(tp,aux.Stringid(40391316,0)) then - local dis2=Duel.SelectDisableField(tp,1,0,LOCATION_MZONE,dis1) - dis1=bit.bor(dis1,dis2) - end - return dis1 -end +--おジャマ・ナイト +function c40391316.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xf),2,true) + --disable field + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_DISABLE_FIELD) + e2:SetOperation(c40391316.disop) + c:RegisterEffect(e2) +end +function c40391316.disop(e,tp) + local c=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if c==0 then return end + local dis1=Duel.SelectDisableField(tp,1,0,LOCATION_MZONE,0) + if c>1 and Duel.SelectYesNo(tp,aux.Stringid(40391316,0)) then + local dis2=Duel.SelectDisableField(tp,1,0,LOCATION_MZONE,dis1) + dis1=bit.bor(dis1,dis2) + end + return dis1 +end diff --git a/script/c40418351.lua b/script/c40418351.lua index c9194f4c..6652cf9b 100644 --- a/script/c40418351.lua +++ b/script/c40418351.lua @@ -1,82 +1,82 @@ ---鎧黒竜-サイバー・ダーク・ドラゴン -function c40418351.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode3(c,41230939,77625948,3019642,true,true) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(40418351,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c40418351.eqtg) - e1:SetOperation(c40418351.eqop) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c40418351.atkval) - c:RegisterEffect(e2) - --spsummon condition - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(aux.fuslimit) - c:RegisterEffect(e3) -end -function c40418351.filter(c) - return c:IsRace(RACE_DRAGON) and not c:IsForbidden() -end -function c40418351.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c40418351.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c40418351.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c40418351.eqop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,tc,c,false) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c40418351.eqlimit) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetReset(RESET_EVENT+0x1fe0000) - e3:SetValue(c40418351.repval) - tc:RegisterEffect(e3) - end -end -function c40418351.eqlimit(e,c) - return e:GetOwner()==c -end -function c40418351.repval(e,re,r,rp) - return bit.band(r,REASON_BATTLE)~=0 -end -function c40418351.atkval(e,c) - local tp=e:GetHandlerPlayer() - return Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER)*100 -end +--鎧黒竜-サイバー・ダーク・ドラゴン +function c40418351.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,41230939,77625948,3019642,true,true) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40418351,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c40418351.eqtg) + e1:SetOperation(c40418351.eqop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c40418351.atkval) + c:RegisterEffect(e2) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.fuslimit) + c:RegisterEffect(e3) +end +function c40418351.filter(c) + return c:IsRace(RACE_DRAGON) and not c:IsForbidden() +end +function c40418351.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c40418351.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c40418351.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c40418351.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c40418351.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c40418351.repval) + tc:RegisterEffect(e3) + end +end +function c40418351.eqlimit(e,c) + return e:GetOwner()==c +end +function c40418351.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c40418351.atkval(e,c) + local tp=e:GetHandlerPlayer() + return Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER)*100 +end diff --git a/script/c40424929.lua b/script/c40424929.lua index 30b7da19..d17a7fc5 100644 --- a/script/c40424929.lua +++ b/script/c40424929.lua @@ -7,6 +7,7 @@ function c40424929.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(40424929,0)) e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,40424929) diff --git a/script/c40450317.lua b/script/c40450317.lua index ee51c049..ad7397fb 100644 --- a/script/c40450317.lua +++ b/script/c40450317.lua @@ -1,66 +1,66 @@ ---同胞の絆 -function c40450317.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c40450317.cost) - e1:SetTarget(c40450317.target) - e1:SetOperation(c40450317.activate) - c:RegisterEffect(e1) -end -function c40450317.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,2000) and Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 end - Duel.PayLPCost(tp,2000) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c40450317.filter(c,e,tp) - if not c:IsFaceup() or not c:IsLevelBelow(4) then return false end - local g=Duel.GetMatchingGroup(c40450317.filter2,tp,LOCATION_DECK,0,nil,e,tp,c) - return g:GetClassCount(Card.GetCode)>1 -end -function c40450317.filter2(c,e,tp,tc) - return c:GetLevel()==tc:GetLevel() and c:IsRace(tc:GetRace()) and c:IsAttribute(tc:GetAttribute()) - and not c:IsCode(tc:GetCode()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c40450317.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c40450317.filter(chkc,e,tp) end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c40450317.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c40450317.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) -end -function c40450317.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g=Duel.GetMatchingGroup(c40450317.filter2,tp,LOCATION_DECK,0,nil,e,tp,tc) - if not Duel.IsPlayerAffectedByEffect(tp,59822133) - and ft>1 and g:GetClassCount(Card.GetCode)>1 and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=g:Select(tp,1,1,nil) - g1:Merge(g2) - Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP) - end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - end -end +--同胞の絆 +function c40450317.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c40450317.cost) + e1:SetTarget(c40450317.target) + e1:SetOperation(c40450317.activate) + c:RegisterEffect(e1) +end +function c40450317.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) and Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 end + Duel.PayLPCost(tp,2000) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c40450317.filter(c,e,tp) + if not c:IsFaceup() or not c:IsLevelBelow(4) then return false end + local g=Duel.GetMatchingGroup(c40450317.filter2,tp,LOCATION_DECK,0,nil,e,tp,c) + return g:GetClassCount(Card.GetCode)>1 +end +function c40450317.filter2(c,e,tp,tc) + return c:GetLevel()==tc:GetLevel() and c:IsRace(tc:GetRace()) and c:IsAttribute(tc:GetAttribute()) + and not c:IsCode(tc:GetCode()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c40450317.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c40450317.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c40450317.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c40450317.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c40450317.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetMatchingGroup(c40450317.filter2,tp,LOCATION_DECK,0,nil,e,tp,tc) + if not Duel.IsPlayerAffectedByEffect(tp,59822133) + and ft>1 and g:GetClassCount(Card.GetCode)>1 and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=g:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP) + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + end +end diff --git a/script/c40502912.lua b/script/c40502912.lua index b3a96e0a..2df93da6 100644 --- a/script/c40502912.lua +++ b/script/c40502912.lua @@ -3,7 +3,7 @@ function c40502912.initial_effect(c) --cannot be target/battle indestructable local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(LOCATION_MZONE,0) e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x9b)) @@ -11,8 +11,8 @@ function c40502912.initial_effect(c) e1:SetValue(1) c:RegisterEffect(e1) local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) c:RegisterEffect(e2) end function c40502912.tgcon(e) diff --git a/script/c40522482.lua b/script/c40522482.lua new file mode 100644 index 00000000..218dfd6f --- /dev/null +++ b/script/c40522482.lua @@ -0,0 +1,56 @@ +--スカイスクレイパー・シュート +function c40522482.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c40522482.target) + e1:SetOperation(c40522482.activate) + c:RegisterEffect(e1) +end +function c40522482.filter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x3008) and c:IsType(TYPE_FUSION) + and Duel.IsExistingMatchingCard(c40522482.desfilter,tp,0,LOCATION_MZONE,1,nil,c:GetAttack()) +end +function c40522482.desfilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c40522482.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c40522482.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c40522482.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tg=Duel.SelectTarget(tp,c40522482.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + local atk=tg:GetFirst():GetAttack() + local g=Duel.GetMatchingGroup(c40522482.desfilter,tp,0,LOCATION_MZONE,nil,atk) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local dam=0 + if fc and c40522482.ffilter(fc) then + dam=g:GetSum(Card.GetBaseAttack) + else + g,dam=g:GetMaxGroup(Card.GetBaseAttack) + end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,1,1-tp,dam) +end +function c40522482.ffilter(c) + return c:IsFaceup() and c:IsSetCard(0xf6) +end +function c40522482.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c40522482.desfilter,tp,0,LOCATION_MZONE,nil,tc:GetAttack()) + if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)>0 then + local og=Duel.GetOperatedGroup():Filter(Card.IsLocation,nil,LOCATION_GRAVE) + if og:GetCount()==0 then return end + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local dam=0 + if fc and c40522482.ffilter(fc) then + dam=og:GetSum(Card.GetBaseAttack) + else + g,dam=og:GetMaxGroup(Card.GetBaseAttack) + end + Duel.Damage(1-tp,dam,REASON_EFFECT) + end +end diff --git a/script/c40542825.lua b/script/c40542825.lua new file mode 100644 index 00000000..ca3aada2 --- /dev/null +++ b/script/c40542825.lua @@ -0,0 +1,70 @@ +--憑依装着-ライナ +--Familiar-Possessed Lyna +--Script by nekrozar +function c40542825.initial_effect(c) + --special summon proc + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetCondition(c40542825.spcon) + e1:SetOperation(c40542825.spop) + e1:SetValue(1) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(40542825,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c40542825.condition) + e2:SetTarget(c40542825.thtg) + e2:SetOperation(c40542825.thop) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + e3:SetCondition(c40542825.condition) + c:RegisterEffect(e3) +end +function c40542825.spfilter1(c,tp) + return c:IsFaceup() and c:IsCode(73318863) and c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c40542825.spfilter2,tp,LOCATION_MZONE,0,1,c) +end +function c40542825.spfilter2(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToGraveAsCost() +end +function c40542825.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c40542825.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) +end +function c40542825.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c40542825.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c40542825.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) +end +function c40542825.thfilter(c) + return c:GetDefense()==1500 and c:IsRace(RACE_SPELLCASTER) and not c:IsCode(40542825) and c:IsAbleToHand() +end +function c40542825.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c40542825.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c40542825.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c40542825.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c40542825.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c40583194.lua b/script/c40583194.lua index 131ef10c..850f3113 100644 --- a/script/c40583194.lua +++ b/script/c40583194.lua @@ -1,48 +1,48 @@ ---フォース・リゾネーター -function c40583194.initial_effect(c) - -- - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(40583194,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c40583194.cost) - e1:SetTarget(c40583194.target) - e1:SetOperation(c40583194.operation) - c:RegisterEffect(e1) -end -function c40583194.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c40583194.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,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c40583194.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c40583194.atkop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c40583194.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetOwner()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_EFFECT_TARGET) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e1:SetTargetRange(0,0xff) - e1:SetValue(c40583194.etarget) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end -function c40583194.etarget(e,re,c) - return c:IsType(TYPE_MONSTER) and (c:IsFaceup() or c:IsLocation(LOCATION_MZONE)) -end +--フォース・リゾネーター +function c40583194.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40583194,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c40583194.cost) + e1:SetTarget(c40583194.target) + e1:SetOperation(c40583194.operation) + c:RegisterEffect(e1) +end +function c40583194.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c40583194.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,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c40583194.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c40583194.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c40583194.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_EFFECT_TARGET) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetTargetRange(0,0xff) + e1:SetValue(c40583194.etarget) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c40583194.etarget(e,re,c) + return c:IsType(TYPE_MONSTER) and (c:IsFaceup() or c:IsLocation(LOCATION_MZONE)) +end diff --git a/script/c40591390.lua b/script/c40591390.lua index f9c8d576..17b543f9 100644 --- a/script/c40591390.lua +++ b/script/c40591390.lua @@ -1,84 +1,84 @@ ---D-HERO ドレッドガイ -function c40591390.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(40591390,0)) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c40591390.spcon) - e1:SetTarget(c40591390.sptg) - e1:SetOperation(c40591390.spop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetOperation(c40591390.indop) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_SET_ATTACK) - e3:SetValue(c40591390.val) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e4) -end -function c40591390.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c40591390.desfilter(c) - return c:IsFacedown() or not c:IsSetCard(0xc008) -end -function c40591390.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c40591390.desfilter,tp,LOCATION_MZONE,0,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c40591390.spfilter(c,e,tp) - return c:IsSetCard(0xc008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c40591390.spop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c40591390.desfilter,tp,LOCATION_MZONE,0,nil) - Duel.Destroy(g,REASON_EFFECT) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if ft>2 then ft=2 end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - g=Duel.GetMatchingGroup(c40591390.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) - if g:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(40591390,1)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,ft,nil) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - end -end -function c40591390.filter(e,c) - return c:IsFaceup() and c:IsSetCard(0xc008) -end -function c40591390.indop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c40591390.filter) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - Duel.RegisterEffect(e2,tp) - local e3=e1:Clone() - e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - Duel.RegisterEffect(e3,tp) -end -function c40591390.vfilter(c) - return c:IsFaceup() and c:IsSetCard(0xc008) -end -function c40591390.val(e,c) - local g=Duel.GetMatchingGroup(c40591390.vfilter,c:GetControler(),LOCATION_MZONE,0,c) - return g:GetSum(Card.GetBaseAttack) -end +--D-HERO ドレッドガイ +function c40591390.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40591390,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c40591390.spcon) + e1:SetTarget(c40591390.sptg) + e1:SetOperation(c40591390.spop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetOperation(c40591390.indop) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_SET_ATTACK) + e3:SetValue(c40591390.val) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e4) +end +function c40591390.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c40591390.desfilter(c) + return c:IsFacedown() or not c:IsSetCard(0xc008) +end +function c40591390.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c40591390.desfilter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c40591390.spfilter(c,e,tp) + return c:IsSetCard(0xc008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c40591390.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c40591390.desfilter,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(g,REASON_EFFECT) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>2 then ft=2 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + g=Duel.GetMatchingGroup(c40591390.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + if g:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(40591390,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,ft,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end +function c40591390.filter(e,c) + return c:IsFaceup() and c:IsSetCard(0xc008) +end +function c40591390.indop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c40591390.filter) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + Duel.RegisterEffect(e3,tp) +end +function c40591390.vfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc008) +end +function c40591390.val(e,c) + local g=Duel.GetMatchingGroup(c40591390.vfilter,c:GetControler(),LOCATION_MZONE,0,c) + return g:GetSum(Card.GetBaseAttack) +end diff --git a/script/c40605147.lua b/script/c40605147.lua index 8442204f..f50a6cb9 100644 --- a/script/c40605147.lua +++ b/script/c40605147.lua @@ -1,55 +1,54 @@ ---神の通告 -function c40605147.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c40605147.condition) - e1:SetCost(c40605147.cost) - e1:SetTarget(c40605147.target) - e1:SetOperation(c40605147.activate) - c:RegisterEffect(e1) - --Activate(summon) - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_ACTIVATE) - e2:SetCode(EVENT_SPSUMMON) - e2:SetCondition(c40605147.condition1) - e2:SetCost(c40605147.cost) - e2:SetTarget(c40605147.target1) - e2:SetOperation(c40605147.activate1) - c:RegisterEffect(e2) -end -function c40605147.condition(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) -end -function c40605147.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,1500) end - Duel.PayLPCost(tp,1500) -end -function c40605147.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c40605147.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c40605147.condition1(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentChain()==0 -end -function c40605147.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) -end -function c40605147.activate1(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateSummon(eg) - Duel.Destroy(eg,REASON_EFFECT) -end +--神の通告 +function c40605147.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c40605147.condition) + e1:SetCost(c40605147.cost) + e1:SetTarget(c40605147.target) + e1:SetOperation(c40605147.activate) + c:RegisterEffect(e1) + --Activate(summon) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_SPSUMMON) + e2:SetCondition(c40605147.condition1) + e2:SetCost(c40605147.cost) + e2:SetTarget(c40605147.target1) + e2:SetOperation(c40605147.activate1) + c:RegisterEffect(e2) +end +function c40605147.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c40605147.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1500) end + Duel.PayLPCost(tp,1500) +end +function c40605147.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c40605147.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c40605147.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 +end +function c40605147.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c40605147.activate1(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) +end diff --git a/script/c40619825.lua b/script/c40619825.lua index a6fd843d..b586df67 100644 --- a/script/c40619825.lua +++ b/script/c40619825.lua @@ -1,14 +1,6 @@ --デーモンの斧 function c40619825.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(c40619825.target) - e1:SetOperation(c40619825.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -36,19 +28,6 @@ function c40619825.initial_effect(c) e4:SetValue(c40619825.valcheck) c:RegisterEffect(e4) end -function c40619825.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 c40619825.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 c40619825.tdcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end diff --git a/script/c40633297.lua b/script/c40633297.lua index dc1d35f5..ff68a5f0 100644 --- a/script/c40633297.lua +++ b/script/c40633297.lua @@ -1,17 +1,17 @@ ---シモッチによる副作用 -function c40633297.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --recover conversion - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_REVERSE_RECOVER) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,1) - e2:SetValue(1) - c:RegisterEffect(e2) -end +--シモッチによる副作用 +function c40633297.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --recover conversion + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_REVERSE_RECOVER) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,1) + e2:SetValue(1) + c:RegisterEffect(e2) +end diff --git a/script/c40636712.lua b/script/c40636712.lua new file mode 100644 index 00000000..98087612 --- /dev/null +++ b/script/c40636712.lua @@ -0,0 +1,67 @@ +--デストーイ・ハーケン・クラーケン +function c40636712.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xc3),aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),true) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40636712,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c40636712.cost) + e1:SetTarget(c40636712.target) + e1:SetOperation(c40636712.operation) + c:RegisterEffect(e1) + --double attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + c:RegisterEffect(e2) + --pos + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(40636712,1)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c40636712.poscon) + e3:SetOperation(c40636712.posop) + c:RegisterEffect(e3) +end +function c40636712.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsDirectAttacked() end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c40636712.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c40636712.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT) + end +end +function c40636712.poscon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsAttackPos() and c:GetBattledGroupCount()>0 +end +function c40636712.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsAttackPos() then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c4064256.lua b/script/c4064256.lua index e13cf3fa..c1cebcec 100644 --- a/script/c4064256.lua +++ b/script/c4064256.lua @@ -1,31 +1,31 @@ ---アンデットワールド -function c4064256.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --race - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE) - e2:SetCode(EFFECT_CHANGE_RACE) - e2:SetValue(RACE_ZOMBIE) - c:RegisterEffect(e2) - --summon limit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_FZONE) - e3:SetCode(EFFECT_CANNOT_SUMMON) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,1) - e3:SetTarget(c4064256.sumlimit) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CANNOT_MSET) - c:RegisterEffect(e4) -end -function c4064256.sumlimit(e,c,tp,sumtp) - return bit.band(sumtp,SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and c:GetRace()~=RACE_ZOMBIE -end +--アンデットワールド +function c4064256.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --race + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE) + e2:SetCode(EFFECT_CHANGE_RACE) + e2:SetValue(RACE_ZOMBIE) + c:RegisterEffect(e2) + --summon limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EFFECT_CANNOT_SUMMON) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + e3:SetTarget(c4064256.sumlimit) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_MSET) + c:RegisterEffect(e4) +end +function c4064256.sumlimit(e,c,tp,sumtp) + return bit.band(sumtp,SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and c:GetRace()~=RACE_ZOMBIE +end diff --git a/script/c4068622.lua b/script/c4068622.lua index cfb465a2..5da9d1eb 100644 --- a/script/c4068622.lua +++ b/script/c4068622.lua @@ -1,83 +1,83 @@ ---BF-極光のアウロラ -function c4068622.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c4068622.spcon) - e1:SetOperation(c4068622.spop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(4068622,0)) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c4068622.target) - e2:SetOperation(c4068622.operation) - c:RegisterEffect(e2) - --special summon limit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(aux.FALSE) - c:RegisterEffect(e3) - c:EnableReviveLimit() -end -function c4068622.spfilter1(c) - return c:IsFaceup() and c:IsSetCard(0x33) and c:IsType(TYPE_TUNER) and c:IsAbleToRemove() -end -function c4068622.spfilter2(c) - return c:IsFaceup() and not c:IsType(TYPE_TUNER) and c:IsAbleToRemove() -end -function c4068622.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c4068622.spfilter1,c:GetControler(),LOCATION_MZONE,0,1,nil) - and Duel.IsExistingMatchingCard(c4068622.spfilter2,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c4068622.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g1=Duel.SelectMatchingCard(tp,c4068622.spfilter1,tp,LOCATION_MZONE,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=Duel.SelectMatchingCard(tp,c4068622.spfilter2,tp,LOCATION_MZONE,0,1,1,nil) - g1:Merge(g2) - Duel.Remove(g1,POS_FACEUP,REASON_COST) -end -function c4068622.filter(c) - return c:IsSetCard(0x33) and c:IsAbleToRemove() -end -function c4068622.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c4068622.filter,tp,LOCATION_EXTRA,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,0,tp,LOCATION_EXTRA) -end -function c4068622.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c4068622.filter,tp,LOCATION_EXTRA,0,1,1,nil) - local tc=g:GetFirst() - local c=e:GetHandler() - if tc and c:IsFaceup() and c:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then - local code=tc:GetOriginalCode() - local ba=tc:GetBaseAttack() - local reset_flag=RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END - c:CopyEffect(code, reset_flag, 1) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(reset_flag) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetReset(reset_flag) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetValue(ba) - c:RegisterEffect(e2) - end -end +--BF-極光のアウロラ +function c4068622.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c4068622.spcon) + e1:SetOperation(c4068622.spop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4068622,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c4068622.target) + e2:SetOperation(c4068622.operation) + c:RegisterEffect(e2) + --special summon limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.FALSE) + c:RegisterEffect(e3) + c:EnableReviveLimit() +end +function c4068622.spfilter1(c) + return c:IsFaceup() and c:IsSetCard(0x33) and c:IsType(TYPE_TUNER) and c:IsAbleToRemove() +end +function c4068622.spfilter2(c) + return c:IsFaceup() and not c:IsType(TYPE_TUNER) and c:IsAbleToRemove() +end +function c4068622.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c4068622.spfilter1,c:GetControler(),LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c4068622.spfilter2,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c4068622.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c4068622.spfilter1,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c4068622.spfilter2,tp,LOCATION_MZONE,0,1,1,nil) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c4068622.filter(c) + return c:IsSetCard(0x33) and c:IsAbleToRemove() +end +function c4068622.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c4068622.filter,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,0,tp,LOCATION_EXTRA) +end +function c4068622.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c4068622.filter,tp,LOCATION_EXTRA,0,1,1,nil) + local tc=g:GetFirst() + local c=e:GetHandler() + if tc and c:IsFaceup() and c:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + local code=tc:GetOriginalCode() + local ba=tc:GetBaseAttack() + local reset_flag=RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END + c:CopyEffect(code, reset_flag, 1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(reset_flag) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(reset_flag) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetValue(ba) + c:RegisterEffect(e2) + end +end diff --git a/script/c4081665.lua b/script/c4081665.lua index 0084f13b..c75eae34 100644 --- a/script/c4081665.lua +++ b/script/c4081665.lua @@ -1,63 +1,63 @@ ---Emスティルツ・シューター -function c4081665.initial_effect(c) - --special summon rule - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetCondition(c4081665.spcon) - e1:SetOperation(c4081665.spop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCountLimit(1,4081665) - e2:SetCondition(c4081665.damcon) - e2:SetCost(c4081665.damcost) - e2:SetTarget(c4081665.damtg) - e2:SetOperation(c4081665.damop) - c:RegisterEffect(e2) -end -function c4081665.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)==0 -end -function c4081665.spop(e,tp,eg,ep,ev,re,r,rp,c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) -end -function c4081665.cfilter(c) - return c:IsSetCard(0xc6) and c:IsType(TYPE_MONSTER) -end -function c4081665.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c4081665.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) and aux.damcon1(e,1-tp,eg,ep,ev,re,r,rp) -end -function c4081665.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c4081665.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(2000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,2000) -end -function c4081665.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--Emスティルツ・シューター +function c4081665.initial_effect(c) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c4081665.spcon) + e1:SetOperation(c4081665.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1,4081665) + e2:SetCondition(c4081665.damcon) + e2:SetCost(c4081665.damcost) + e2:SetTarget(c4081665.damtg) + e2:SetOperation(c4081665.damop) + c:RegisterEffect(e2) +end +function c4081665.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)==0 +end +function c4081665.spop(e,tp,eg,ep,ev,re,r,rp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c4081665.cfilter(c) + return c:IsSetCard(0xc6) and c:IsType(TYPE_MONSTER) +end +function c4081665.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c4081665.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) and aux.damcon1(e,1-tp,eg,ep,ev,re,r,rp) +end +function c4081665.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c4081665.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(2000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,2000) +end +function c4081665.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c40817915.lua b/script/c40817915.lua index d2a22ec3..60526b9a 100644 --- a/script/c40817915.lua +++ b/script/c40817915.lua @@ -1,46 +1,46 @@ ---クリボルト -function c40817915.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(40817915,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c40817915.target) - e1:SetOperation(c40817915.activate) - c:RegisterEffect(e1) - --unsynchroable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e2:SetValue(1) - c:RegisterEffect(e2) -end -function c40817915.ofilter(c) - return c:GetOverlayCount()~=0 -end -function c40817915.spfilter(c,e,tp) - return c:IsCode(40817915) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c40817915.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c40817915.ofilter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c40817915.ofilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) - and Duel.IsExistingMatchingCard(c40817915.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) - end - Duel.Hint(HINT_SELECTMSG,tp,532) - local g=Duel.SelectTarget(tp,c40817915.ofilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c40817915.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:GetOverlayCount()==0 then return end - tc:RemoveOverlayCard(tp,1,1,REASON_EFFECT) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c40817915.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--クリボルト +function c40817915.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40817915,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c40817915.target) + e1:SetOperation(c40817915.activate) + c:RegisterEffect(e1) + --unsynchroable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c40817915.ofilter(c) + return c:GetOverlayCount()~=0 +end +function c40817915.spfilter(c,e,tp) + return c:IsCode(40817915) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c40817915.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c40817915.ofilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c40817915.ofilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c40817915.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,532) + local g=Duel.SelectTarget(tp,c40817915.ofilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c40817915.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:GetOverlayCount()==0 then return end + tc:RemoveOverlayCard(tp,1,1,REASON_EFFECT) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c40817915.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c4081825.lua b/script/c4081825.lua index 10862a77..a9ccc256 100644 --- a/script/c4081825.lua +++ b/script/c4081825.lua @@ -24,9 +24,9 @@ function c4081825.activate(e,tp,eg,ep,ev,re,r,rp) Duel.ChangePosition(g,POS_FACEUP_ATTACK) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c4081825.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + local sg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c4081825.spfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) local tc=sg:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then Duel.BreakEffect() Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) local e1=Effect.CreateEffect(e:GetHandler()) diff --git a/script/c40830387.lua b/script/c40830387.lua index 59951185..e0b61e40 100644 --- a/script/c40830387.lua +++ b/script/c40830387.lua @@ -1,21 +1,6 @@ --古代の機械掌 function c40830387.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(c40830387.target) - e1:SetOperation(c40830387.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(c40830387.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x7)) --destroy local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(40830387,0)) @@ -28,25 +13,6 @@ function c40830387.initial_effect(c) e3:SetOperation(c40830387.desop) c:RegisterEffect(e3) end -function c40830387.eqlimit(e,c) - return c:IsSetCard(0x7) -end -function c40830387.filter(c) - return c:IsFaceup() and c:IsSetCard(0x7) -end -function c40830387.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c40830387.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c40830387.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c40830387.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c40830387.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 c40830387.descon(e,tp,eg,ep,ev,re,r,rp) local ec=e:GetHandler():GetEquipTarget() local dt=nil diff --git a/script/c40838625.lua b/script/c40838625.lua index 955b093d..f8826860 100644 --- a/script/c40838625.lua +++ b/script/c40838625.lua @@ -1,38 +1,38 @@ ---砂塵のバリア -ダスト・フォース- -function c40838625.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c40838625.condition) - e1:SetTarget(c40838625.target) - e1:SetOperation(c40838625.activate) - c:RegisterEffect(e1) -end -function c40838625.condition(e,tp,eg,ep,ev,re,r,rp) - return tp~=Duel.GetTurnPlayer() -end -function c40838625.filter(c) - return c:IsAttackPos() and c:IsCanTurnSet() -end -function c40838625.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c40838625.filter,tp,0,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(c40838625.filter,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c40838625.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c40838625.filter,tp,0,LOCATION_MZONE,nil) - if Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE)~=0 then - local og=Duel.GetOperatedGroup() - local tc=og:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc=og:GetNext() - end - end -end +--砂塵のバリア -ダスト・フォース- +function c40838625.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c40838625.condition) + e1:SetTarget(c40838625.target) + e1:SetOperation(c40838625.activate) + c:RegisterEffect(e1) +end +function c40838625.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c40838625.filter(c) + return c:IsAttackPos() and c:IsCanTurnSet() +end +function c40838625.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c40838625.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c40838625.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c40838625.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c40838625.filter,tp,0,LOCATION_MZONE,nil) + if Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE)~=0 then + local og=Duel.GetOperatedGroup() + local tc=og:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=og:GetNext() + end + end +end diff --git a/script/c40854197.lua b/script/c40854197.lua index f55a5a74..4b29bcdf 100644 --- a/script/c40854197.lua +++ b/script/c40854197.lua @@ -2,7 +2,7 @@ function c40854197.initial_effect(c) --fusion material c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x8),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER),true) + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x8),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_WATER),true) --spsummon condition local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) @@ -35,6 +35,7 @@ function c40854197.initial_effect(c) e5:SetValue(c40854197.atkup) c:RegisterEffect(e5) end +c40854197.material_setcode=0x8 function c40854197.atkfilter(c) return c:IsFaceup() and c:GetCode()~=40854197 and c:IsAttribute(ATTRIBUTE_WATER) end diff --git a/script/c40854824.lua b/script/c40854824.lua index 5339a259..e6a58011 100644 --- a/script/c40854824.lua +++ b/script/c40854824.lua @@ -29,6 +29,7 @@ end function c40854824.activate(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=Duel.GetMatchingGroup(c40854824.filter,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()==0 then return end repeat diff --git a/script/c40908371.lua b/script/c40908371.lua index 58f74afb..2df04e38 100644 --- a/script/c40908371.lua +++ b/script/c40908371.lua @@ -12,7 +12,7 @@ function c40908371.initial_effect(c) c:RegisterEffect(e1) --spsumon local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(40908371,0)) + e2:SetDescription(aux.Stringid(40908371,1)) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetProperty(EFFECT_FLAG_CARD_TARGET) diff --git a/script/c40921744.lua b/script/c40921744.lua index 607c3680..dd2e6467 100644 --- a/script/c40921744.lua +++ b/script/c40921744.lua @@ -1,6 +1,6 @@ --堕天使ゼラート function c40921744.initial_effect(c) - --special summon + --summon local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(40921744,0)) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) @@ -35,12 +35,12 @@ end function c40921744.mfilter(c,tp) return c:IsAttribute(ATTRIBUTE_DARK) and (c:IsControler(tp) or c:IsFaceup()) end -function c40921744.sumcon(e,c) +function c40921744.sumcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c40921744.mfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) local ag=Duel.GetMatchingGroup(Card.IsAttribute,tp,LOCATION_GRAVE,0,nil,ATTRIBUTE_DARK) - return c:IsLevelAbove(7) and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) and ag:GetClassCount(Card.GetCode)>=4 end function c40921744.sumop(e,tp,eg,ep,ev,re,r,rp,c) diff --git a/script/c40945356.lua b/script/c40945356.lua index 7bd2c4d3..b81e0f0b 100644 --- a/script/c40945356.lua +++ b/script/c40945356.lua @@ -1,85 +1,85 @@ ---黄昏の中忍-ニチリン -function c40945356.initial_effect(c) - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(40945356,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e1:SetCost(c40945356.cost) - e1:SetTarget(c40945356.target1) - e1:SetOperation(c40945356.operation1) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(40945356,1)) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetHintTiming(0,0x1c0) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e2:SetCondition(c40945356.condition2) - e2:SetCost(c40945356.cost) - e2:SetTarget(c40945356.target2) - e2:SetOperation(c40945356.operation2) - c:RegisterEffect(e2) -end -function c40945356.cfilter(c) - return c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() -end -function c40945356.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c40945356.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c40945356.cfilter,1,1,REASON_COST+REASON_DISCARD) -end -function c40945356.indfilter(c) - return c:IsFaceup() and (c:IsSetCard(0x61) or (c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER))) -end -function c40945356.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c40945356.indfilter,tp,LOCATION_ONFIELD,0,1,nil) end -end -function c40945356.operation1(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c40945356.indtg) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetValue(1) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e2:SetTargetRange(LOCATION_ONFIELD,0) - e2:SetTarget(c40945356.indtg) - e2:SetReset(RESET_PHASE+PHASE_END) - e2:SetValue(1) - Duel.RegisterEffect(e2,tp) -end -function c40945356.indtg(e,c) - return c:IsSetCard(0x61) or (c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER)) -end -function c40945356.condition2(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c40945356.filter(c) - return c:IsFaceup() and c:IsSetCard(0x2b) -end -function c40945356.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c40945356.filter,tp,LOCATION_MZONE,0,1,nil) end -end -function c40945356.operation2(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectMatchingCard(tp,c40945356.filter,tp,LOCATION_MZONE,0,1,1,nil) - local tc=g:GetFirst() - if tc then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1000) - tc:RegisterEffect(e1) - end -end +--黄昏の中忍-ニチリン +function c40945356.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40945356,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e1:SetCost(c40945356.cost) + e1:SetTarget(c40945356.target1) + e1:SetOperation(c40945356.operation1) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(40945356,1)) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,0x1c0) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCondition(c40945356.condition2) + e2:SetCost(c40945356.cost) + e2:SetTarget(c40945356.target2) + e2:SetOperation(c40945356.operation2) + c:RegisterEffect(e2) +end +function c40945356.cfilter(c) + return c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c40945356.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c40945356.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c40945356.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c40945356.indfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x61) or (c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER))) +end +function c40945356.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c40945356.indfilter,tp,LOCATION_ONFIELD,0,1,nil) end +end +function c40945356.operation1(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c40945356.indtg) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetTargetRange(LOCATION_ONFIELD,0) + e2:SetTarget(c40945356.indtg) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetValue(1) + Duel.RegisterEffect(e2,tp) +end +function c40945356.indtg(e,c) + return c:IsSetCard(0x61) or (c:IsSetCard(0x2b) and c:IsType(TYPE_MONSTER)) +end +function c40945356.condition2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c40945356.filter(c) + return c:IsFaceup() and c:IsSetCard(0x2b) +end +function c40945356.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c40945356.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c40945356.operation2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c40945356.filter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c40975574.lua b/script/c40975574.lua index 653aec0c..7f7c7841 100644 --- a/script/c40975574.lua +++ b/script/c40975574.lua @@ -1,55 +1,55 @@ ---レッド・リゾネーター -function c40975574.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(40975574,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c40975574.sptg) - e1:SetOperation(c40975574.spop) - c:RegisterEffect(e1) - --recover - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(40975574,1)) - e2:SetCategory(CATEGORY_RECOVER) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCountLimit(1,40975574) - e2:SetTarget(c40975574.rectg) - e2:SetOperation(c40975574.recop) - c:RegisterEffect(e2) -end -function c40975574.spfilter(c,e,tp) - return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c40975574.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c40975574.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c40975574.spop(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,c40975574.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 c40975574.filter(c) - return c:IsFaceup() and c:GetAttack()>0 -end -function c40975574.rectg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c40975574.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c40975574.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c40975574.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,g:GetFirst():GetAttack()) -end -function c40975574.recop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetAttack()>0 then - Duel.Recover(tp,tc:GetAttack(),REASON_EFFECT) - end -end +--レッド・リゾネーター +function c40975574.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40975574,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c40975574.sptg) + e1:SetOperation(c40975574.spop) + c:RegisterEffect(e1) + --recover + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(40975574,1)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCountLimit(1,40975574) + e2:SetTarget(c40975574.rectg) + e2:SetOperation(c40975574.recop) + c:RegisterEffect(e2) +end +function c40975574.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c40975574.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c40975574.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c40975574.spop(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,c40975574.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 c40975574.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c40975574.rectg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c40975574.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c40975574.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c40975574.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,g:GetFirst():GetAttack()) +end +function c40975574.recop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetAttack()>0 then + Duel.Recover(tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c41097056.lua b/script/c41097056.lua index 1a26054a..98b63caf 100644 --- a/script/c41097056.lua +++ b/script/c41097056.lua @@ -1,37 +1,37 @@ ---シンクロ・クラッカー -function c41097056.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c41097056.target) - e1:SetOperation(c41097056.activate) - c:RegisterEffect(e1) -end -function c41097056.filter(c,tp) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToExtra() - and Duel.IsExistingMatchingCard(c41097056.desfilter,tp,0,LOCATION_MZONE,1,nil,math.max(0,c:GetTextAttack())) -end -function c41097056.desfilter(c,atk) - return c:IsFaceup() and c:IsAttackBelow(atk) -end -function c41097056.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c41097056.filter(chkc,tp) end - if chk==0 then return Duel.IsExistingTarget(c41097056.filter,tp,LOCATION_MZONE,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g1=Duel.SelectTarget(tp,c41097056.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) - local g2=Duel.GetMatchingGroup(c41097056.desfilter,tp,0,LOCATION_MZONE,nil,math.max(0,g1:GetFirst():GetTextAttack())) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g2,g2:GetCount(),0,0) -end -function c41097056.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_EXTRA) then - local g=Duel.GetMatchingGroup(c41097056.desfilter,tp,0,LOCATION_MZONE,nil,atk) - Duel.Destroy(g,REASON_EFFECT) - end -end +--シンクロ・クラッカー +function c41097056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c41097056.target) + e1:SetOperation(c41097056.activate) + c:RegisterEffect(e1) +end +function c41097056.filter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToExtra() + and Duel.IsExistingMatchingCard(c41097056.desfilter,tp,0,LOCATION_MZONE,1,nil,math.max(0,c:GetTextAttack())) +end +function c41097056.desfilter(c,atk) + return c:IsFaceup() and c:IsAttackBelow(atk) +end +function c41097056.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c41097056.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c41097056.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g1=Duel.SelectTarget(tp,c41097056.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + local g2=Duel.GetMatchingGroup(c41097056.desfilter,tp,0,LOCATION_MZONE,nil,math.max(0,g1:GetFirst():GetTextAttack())) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g2,g2:GetCount(),0,0) +end +function c41097056.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_EXTRA) then + local g=Duel.GetMatchingGroup(c41097056.desfilter,tp,0,LOCATION_MZONE,nil,atk) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c41128647.lua b/script/c41128647.lua index c0fe6f9f..4edb64f6 100644 --- a/script/c41128647.lua +++ b/script/c41128647.lua @@ -1,42 +1,42 @@ ---ダイナミックP -function c41128647.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xd8)) - e2:SetValue(300) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --actlimit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetCode(EFFECT_CANNOT_ACTIVATE) - e4:SetRange(LOCATION_FZONE) - e4:SetTargetRange(0,1) - e4:SetValue(c41128647.aclimit) - e4:SetCondition(c41128647.actcon) - c:RegisterEffect(e4) -end -function c41128647.aclimit(e,re,tp) - return not re:GetHandler():IsImmuneToEffect(e) -end -function c41128647.cfilter(c,tp) - return c:IsFaceup() and c:IsSetCard(0xd8) and c:IsControler(tp) -end -function c41128647.actcon(e) - local tp=e:GetHandlerPlayer() - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return (a and c41128647.cfilter(a,tp)) or (d and c41128647.cfilter(d,tp)) -end +--ダイナミックP +function c41128647.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xd8)) + e2:SetValue(300) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --actlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_ACTIVATE) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(0,1) + e4:SetValue(c41128647.aclimit) + e4:SetCondition(c41128647.actcon) + c:RegisterEffect(e4) +end +function c41128647.aclimit(e,re,tp) + return not re:GetHandler():IsImmuneToEffect(e) +end +function c41128647.cfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xd8) and c:IsControler(tp) +end +function c41128647.actcon(e) + local tp=e:GetHandlerPlayer() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (a and c41128647.cfilter(a,tp)) or (d and c41128647.cfilter(d,tp)) +end diff --git a/script/c41141943.lua b/script/c41141943.lua index 12017df2..284c02f1 100644 --- a/script/c41141943.lua +++ b/script/c41141943.lua @@ -1,87 +1,87 @@ ---超重武者ヒキャ-Q -function c41141943.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(41141943,0)) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c41141943.hspcon) - e1:SetValue(1) - c:RegisterEffect(e1) - --spsummon limit - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c41141943.hspcon2) - e2:SetOperation(c41141943.hspop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,41141943) - e3:SetCondition(c41141943.spcon) - e3:SetCost(c41141943.spcost) - e3:SetTarget(c41141943.sptg) - e3:SetOperation(c41141943.spop) - c:RegisterEffect(e3) -end -function c41141943.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c41141943.hspcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and not Duel.IsExistingMatchingCard(c41141943.filter,tp,LOCATION_GRAVE,0,1,nil) -end -function c41141943.hspcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c41141943.hspop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c41141943.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c41141943.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return not c:IsSetCard(0x9a) -end -function c41141943.spcon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c41141943.filter,tp,LOCATION_GRAVE,0,1,nil) -end -function c41141943.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c41141943.spfilter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE,1-tp) -end -function c41141943.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanDraw(tp,1) - and Duel.IsExistingMatchingCard(c41141943.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c41141943.spop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c41141943.spfilter,tp,LOCATION_HAND,0,nil,e,tp) - if g:GetCount()==0 then return end - local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) - if ft>2 then ft=2 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,ft,nil) - local ct=Duel.SpecialSummon(sg,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) - if ct>0 then - Duel.BreakEffect() - Duel.Draw(tp,ct,REASON_EFFECT) - end -end +--超重武者ヒキャ-Q +function c41141943.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41141943,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c41141943.hspcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --spsummon limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c41141943.hspcon2) + e2:SetOperation(c41141943.hspop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,41141943) + e3:SetCondition(c41141943.spcon) + e3:SetCost(c41141943.spcost) + e3:SetTarget(c41141943.sptg) + e3:SetOperation(c41141943.spop) + c:RegisterEffect(e3) +end +function c41141943.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c41141943.hspcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and not Duel.IsExistingMatchingCard(c41141943.filter,tp,LOCATION_GRAVE,0,1,nil) +end +function c41141943.hspcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c41141943.hspop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c41141943.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c41141943.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0x9a) +end +function c41141943.spcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c41141943.filter,tp,LOCATION_GRAVE,0,1,nil) +end +function c41141943.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c41141943.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE,1-tp) +end +function c41141943.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingMatchingCard(c41141943.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c41141943.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c41141943.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + if g:GetCount()==0 then return end + local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft>2 then ft=2 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,ft,nil) + local ct=Duel.SpecialSummon(sg,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + if ct>0 then + Duel.BreakEffect() + Duel.Draw(tp,ct,REASON_EFFECT) + end +end diff --git a/script/c41147577.lua b/script/c41147577.lua index 14999d37..74e352a5 100644 --- a/script/c41147577.lua +++ b/script/c41147577.lua @@ -14,7 +14,7 @@ function c41147577.initial_effect(c) -- local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(41147577,0)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetRange(LOCATION_MZONE) diff --git a/script/c41175645.lua b/script/c41175645.lua index bec2162d..da461a49 100644 --- a/script/c41175645.lua +++ b/script/c41175645.lua @@ -70,8 +70,7 @@ function c41175645.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) end function c41175645.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then Duel.SendtoGrave(eg,REASON_EFFECT) end end diff --git a/script/c41182875.lua b/script/c41182875.lua index 6f813b8c..b6f945bf 100644 --- a/script/c41182875.lua +++ b/script/c41182875.lua @@ -1,4 +1,4 @@ ---ジャベリンビートルの契約 -function c41182875.initial_effect(c) - aux.AddRitualProcGreaterCode(c,26932788) -end +--ジャベリンビートルの契約 +function c41182875.initial_effect(c) + aux.AddRitualProcGreaterCode(c,26932788) +end diff --git a/script/c41197012.lua b/script/c41197012.lua index 3a7dbf42..fc68227c 100644 --- a/script/c41197012.lua +++ b/script/c41197012.lua @@ -35,10 +35,9 @@ end function c41197012.spop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if sg:GetCount()==0 then return end + if sg:GetCount()==0 or (sg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end if ft>=g:GetCount() then Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) else diff --git a/script/c41209827.lua b/script/c41209827.lua index d5fb9b51..1c561eb3 100644 --- a/script/c41209827.lua +++ b/script/c41209827.lua @@ -38,7 +38,7 @@ function c41209827.initial_effect(c) c:RegisterEffect(e3) end function c41209827.ffilter(c) - return c:IsAttribute(ATTRIBUTE_DARK) and c:IsLocation(LOCATION_MZONE) and not c:IsType(TYPE_TOKEN) + return c:IsFusionAttribute(ATTRIBUTE_DARK) and c:IsOnField() and not c:IsType(TYPE_TOKEN) end function c41209827.atkcon(e,tp,eg,ep,ev,re,r,rp) return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION diff --git a/script/c41230939.lua b/script/c41230939.lua index 0195af85..0d6655f3 100644 --- a/script/c41230939.lua +++ b/script/c41230939.lua @@ -1,65 +1,65 @@ ---サイバー・ダーク・ホーン -function c41230939.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(41230939,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c41230939.eqtg) - e1:SetOperation(c41230939.eqop) - c:RegisterEffect(e1) - --pierce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e2) -end -function c41230939.filter(c) - return c:IsLevelBelow(3) and c:IsRace(RACE_DRAGON) and not c:IsForbidden() -end -function c41230939.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c41230939.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c41230939.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c41230939.eqop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,tc,c,false) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c41230939.eqlimit) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetReset(RESET_EVENT+0x1fe0000) - e3:SetValue(c41230939.repval) - tc:RegisterEffect(e3) - end -end -function c41230939.eqlimit(e,c) - return e:GetOwner()==c -end -function c41230939.repval(e,re,r,rp) - return bit.band(r,REASON_BATTLE)~=0 -end +--サイバー・ダーク・ホーン +function c41230939.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41230939,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c41230939.eqtg) + e1:SetOperation(c41230939.eqop) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) +end +function c41230939.filter(c) + return c:IsLevelBelow(3) and c:IsRace(RACE_DRAGON) and not c:IsForbidden() +end +function c41230939.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c41230939.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c41230939.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c41230939.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c41230939.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c41230939.repval) + tc:RegisterEffect(e3) + end +end +function c41230939.eqlimit(e,c) + return e:GetOwner()==c +end +function c41230939.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c41234315.lua b/script/c41234315.lua index 6ce8b88e..29de9d72 100644 --- a/script/c41234315.lua +++ b/script/c41234315.lua @@ -46,8 +46,8 @@ end function c41234315.spop(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,c41234315.spfilter,tp,0x12,0,1,1,nil,e,tp) - if g:GetCount()~=0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c41234315.spfilter),tp,0x12,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) end end diff --git a/script/c41307269.lua b/script/c41307269.lua index 3c645f09..7d70ffaf 100644 --- a/script/c41307269.lua +++ b/script/c41307269.lua @@ -1,43 +1,43 @@ ---超重武者カブ-10 -function c41307269.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(41307269,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c41307269.condition) - e1:SetTarget(c41307269.target) - e1:SetOperation(c41307269.operation) - c:RegisterEffect(e1) -end -function c41307269.cfilter(c,tp) - return c:GetSummonPlayer()~=tp -end -function c41307269.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c41307269.cfilter,1,nil,tp) -end -function c41307269.filter(c) - return c:IsPosition(POS_FACEUP_ATTACK) and c:IsSetCard(0x9a) -end -function c41307269.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c41307269.filter,tp,LOCATION_MZONE,0,1,nil) end - local g=Duel.GetMatchingGroup(c41307269.filter,tp,LOCATION_MZONE,0,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c41307269.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c41307269.filter,tp,LOCATION_MZONE,0,nil) - Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) - local og=Duel.GetOperatedGroup() - local tc=og:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_DEFENSE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(500) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=og:GetNext() - end -end +--超重武者カブ-10 +function c41307269.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41307269,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c41307269.condition) + e1:SetTarget(c41307269.target) + e1:SetOperation(c41307269.operation) + c:RegisterEffect(e1) +end +function c41307269.cfilter(c,tp) + return c:GetSummonPlayer()~=tp +end +function c41307269.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c41307269.cfilter,1,nil,tp) +end +function c41307269.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsSetCard(0x9a) +end +function c41307269.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c41307269.filter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(c41307269.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c41307269.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c41307269.filter,tp,LOCATION_MZONE,0,nil) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + local og=Duel.GetOperatedGroup() + local tc=og:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=og:GetNext() + end +end diff --git a/script/c41309158.lua b/script/c41309158.lua index f3987c5a..43a167d9 100644 --- a/script/c41309158.lua +++ b/script/c41309158.lua @@ -16,6 +16,7 @@ function c41309158.initial_effect(c) --damage local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(41309158,1)) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetCategory(CATEGORY_DAMAGE) e2:SetCode(EVENT_BATTLE_DAMAGE) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) diff --git a/script/c41375811.lua b/script/c41375811.lua new file mode 100644 index 00000000..cbf14ca0 --- /dev/null +++ b/script/c41375811.lua @@ -0,0 +1,88 @@ +--十二獣ライカ +--Zoodiac Lyca +--Scripted by Eerie Code +function c41375811.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2,c41375811.ovfilter,aux.Stringid(41375811,0),5,c41375811.xyzop) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c41375811.atkval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(c41375811.defval) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(41375811,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetCost(c41375811.spcost) + e3:SetTarget(c41375811.sptg) + e3:SetOperation(c41375811.spop) + c:RegisterEffect(e3) +end +function c41375811.ovfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf1) and not c:IsCode(41375811) +end +function c41375811.xyzop(e,tp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,41375811)==0 end + Duel.RegisterFlagEffect(tp,41375811,RESET_PHASE+PHASE_END,0,1) +end +function c41375811.atkfilter(c) + return c:IsSetCard(0xf1) and c:GetAttack()>=0 +end +function c41375811.atkval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c41375811.atkfilter,nil) + return g:GetSum(Card.GetAttack) +end +function c41375811.deffilter(c) + return c:IsSetCard(0xf1) and c:GetDefense()>=0 +end +function c41375811.defval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c41375811.deffilter,nil) + return g:GetSum(Card.GetDefense) +end +function c41375811.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c41375811.spfilter(c,e,tp) + return c:IsSetCard(0xf1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c41375811.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c41375811.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c41375811.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c41375811.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c41375811.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE_EFFECT) + tc:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e3:SetValue(1) + tc:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end +end \ No newline at end of file diff --git a/script/c41398771.lua b/script/c41398771.lua index bbad64ff..a348fb5e 100644 --- a/script/c41398771.lua +++ b/script/c41398771.lua @@ -1,43 +1,43 @@ ---老化の呪い -function c41398771.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c41398771.condition) - e1:SetCost(c41398771.cost) - e1:SetTarget(c41398771.target) - e1:SetOperation(c41398771.activate) - c:RegisterEffect(e1) -end -function c41398771.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c41398771.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 c41398771.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end -end -function c41398771.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - if g:GetCount()>0 then - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(-500) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - tc=g:GetNext() - end - end +--老化の呪い +function c41398771.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c41398771.condition) + e1:SetCost(c41398771.cost) + e1:SetTarget(c41398771.target) + e1:SetOperation(c41398771.activate) + c:RegisterEffect(e1) +end +function c41398771.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c41398771.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 c41398771.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c41398771.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-500) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + end end \ No newline at end of file diff --git a/script/c4141820.lua b/script/c4141820.lua index 9607239b..70e2a9b1 100644 --- a/script/c4141820.lua +++ b/script/c4141820.lua @@ -1,41 +1,41 @@ ---儀式魔人プレコグスター -function c4141820.initial_effect(c) - --ritual material - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) - e1:SetValue(1) - c:RegisterEffect(e1) - --become material - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetCondition(c4141820.condition) - e2:SetOperation(c4141820.operation) - c:RegisterEffect(e2) -end -function c4141820.condition(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_RITUAL -end -function c4141820.operation(e,tp,eg,ep,ev,re,r,rp) - local rc=eg:GetFirst() - while rc do - if rc:GetFlagEffect(4141820)==0 then - --draw - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(4141820,0)) - e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetOperation(c4141820.hdop) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - rc:RegisterFlagEffect(4141820,RESET_EVENT+0x1fe0000,0,1) - end - rc=eg:GetNext() - end -end -function c4141820.hdop(e,tp,eg,ep,ev,re,r,rp) - Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) -end +--儀式魔人プレコグスター +function c4141820.initial_effect(c) + --ritual material + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) + e1:SetValue(1) + c:RegisterEffect(e1) + --become material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c4141820.condition) + e2:SetOperation(c4141820.operation) + c:RegisterEffect(e2) +end +function c4141820.condition(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RITUAL +end +function c4141820.operation(e,tp,eg,ep,ev,re,r,rp) + local rc=eg:GetFirst() + while rc do + if rc:GetFlagEffect(4141820)==0 then + --draw + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(4141820,0)) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetOperation(c4141820.hdop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + rc:RegisterFlagEffect(4141820,RESET_EVENT+0x1fe0000,0,1) + end + rc=eg:GetNext() + end +end +function c4141820.hdop(e,tp,eg,ep,ev,re,r,rp) + Duel.DiscardHand(1-tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) +end diff --git a/script/c41420027.lua b/script/c41420027.lua index 281c1f33..df319968 100644 --- a/script/c41420027.lua +++ b/script/c41420027.lua @@ -58,8 +58,7 @@ function c41420027.target2(e,tp,eg,ep,ev,re,r,rp,chk) end end function c41420027.activate2(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c41426869.lua b/script/c41426869.lua index 1e470da1..38635f5a 100644 --- a/script/c41426869.lua +++ b/script/c41426869.lua @@ -1,4 +1,4 @@ ---イリュージョンの儀式 -function c41426869.initial_effect(c) - aux.AddRitualProcGreaterCode(c,64631466) -end +--イリュージョンの儀式 +function c41426869.initial_effect(c) + aux.AddRitualProcGreaterCode(c,64631466) +end diff --git a/script/c41436536.lua b/script/c41436536.lua index 6a39d79e..9633fe29 100644 --- a/script/c41436536.lua +++ b/script/c41436536.lua @@ -1,19 +1,20 @@ ---E・HERO フェニックスガイ -function c41436536.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,21844576,58932615,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - c:RegisterEffect(e2) -end +--E・HERO フェニックスガイ +function c41436536.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,21844576,58932615,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) +end +c41436536.material_setcode=0x8 diff --git a/script/c41442341.lua b/script/c41442341.lua index 1040c4db..f36ffb42 100644 --- a/script/c41442341.lua +++ b/script/c41442341.lua @@ -1,54 +1,54 @@ ---死霊操りしパペットマスター -function c41442341.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(41442341,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCondition(c41442341.spcon) - e1:SetCost(c41442341.spcost) - e1:SetTarget(c41442341.sptg) - e1:SetOperation(c41442341.spop) - c:RegisterEffect(e1) -end -function c41442341.spcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE -end -function c41442341.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,2000) end - Duel.PayLPCost(tp,2000) -end -function c41442341.filter(c,e,tp) - return c:IsRace(RACE_FIEND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c41442341.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetControler()==tp and chkc:GetLocation()==LOCATION_GRAVE and c41442341.filter(chkc,e,tp) end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c41442341.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c41442341.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) -end -function c41442341.spop(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local fg=g:Filter(Card.IsRelateToEffect,nil,e) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - if fg:GetCount()>1 and ft==1 then fg=fg:Select(tp,1,1,nil) end - local tc=fg:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=fg:GetNext() - end - Duel.SpecialSummonComplete() -end +--死霊操りしパペットマスター +function c41442341.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41442341,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c41442341.spcon) + e1:SetCost(c41442341.spcost) + e1:SetTarget(c41442341.sptg) + e1:SetOperation(c41442341.spop) + c:RegisterEffect(e1) +end +function c41442341.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c41442341.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) end + Duel.PayLPCost(tp,2000) +end +function c41442341.filter(c,e,tp) + return c:IsRace(RACE_FIEND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c41442341.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()==tp and chkc:GetLocation()==LOCATION_GRAVE and c41442341.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c41442341.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c41442341.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c41442341.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local fg=g:Filter(Card.IsRelateToEffect,nil,e) + if fg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + if fg:GetCount()>1 and ft==1 then fg=fg:Select(tp,1,1,nil) end + local tc=fg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=fg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c4145852.lua b/script/c4145852.lua new file mode 100644 index 00000000..392f3782 --- /dev/null +++ b/script/c4145852.lua @@ -0,0 +1,67 @@ +--十二獣ラム +function c4145852.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4145852,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c4145852.spcon) + e1:SetTarget(c4145852.sptg) + e1:SetOperation(c4145852.spop) + c:RegisterEffect(e1) + --get effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4145852,1)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_XMATERIAL+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c4145852.discon) + e2:SetCost(c4145852.discost) + e2:SetTarget(c4145852.distg) + e2:SetOperation(c4145852.disop) + c:RegisterEffect(e2) +end +function c4145852.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c4145852.spfilter(c,e,tp) + return c:IsSetCard(0xf1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsCode(4145852) +end +function c4145852.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c4145852.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c4145852.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c4145852.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c4145852.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c4145852.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetOriginalRace()==RACE_BEASTWARRIOR + and not c:IsStatus(STATUS_BATTLE_DESTROYED) and ep==1-tp + and re:IsActiveType(TYPE_TRAP) and Duel.IsChainNegatable(ev) + and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) + and Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):IsContains(c) +end +function c4145852.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c4145852.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c4145852.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + Duel.SendtoGrave(eg,REASON_EFFECT) + end +end diff --git a/script/c41458579.lua b/script/c41458579.lua index 95589f2e..54aa8767 100644 --- a/script/c41458579.lua +++ b/script/c41458579.lua @@ -29,8 +29,7 @@ function c41458579.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c41458579.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c41517789.lua b/script/c41517789.lua index dc9fecaf..08df60a9 100644 --- a/script/c41517789.lua +++ b/script/c41517789.lua @@ -1,47 +1,47 @@ ---星態龍 -function c41517789.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.synlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e2) - --summon success - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetOperation(c41517789.sumsuc) - c:RegisterEffect(e3) - --immune - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_ATTACK_ANNOUNCE) - e4:SetOperation(c41517789.atkop) - c:RegisterEffect(e4) -end -function c41517789.sumsuc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():GetSummonType()~=SUMMON_TYPE_SYNCHRO then return end - Duel.SetChainLimitTillChainEnd(aux.FALSE) -end -function c41517789.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetValue(c41517789.efilter) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - e:GetHandler():RegisterEffect(e1) -end -function c41517789.efilter(e,te) - return te:GetOwner()~=e:GetOwner() -end +--星態龍 +function c41517789.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.synlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e2) + --summon success + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c41517789.sumsuc) + c:RegisterEffect(e3) + --immune + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetOperation(c41517789.atkop) + c:RegisterEffect(e4) +end +function c41517789.sumsuc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetSummonType()~=SUMMON_TYPE_SYNCHRO then return end + Duel.SetChainLimitTillChainEnd(aux.FALSE) +end +function c41517789.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c41517789.efilter) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e:GetHandler():RegisterEffect(e1) +end +function c41517789.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end diff --git a/script/c41517968.lua b/script/c41517968.lua index c039759b..eb0c509d 100644 --- a/script/c41517968.lua +++ b/script/c41517968.lua @@ -33,6 +33,7 @@ function c41517968.initial_effect(c) e4:SetOperation(c41517968.desop) c:RegisterEffect(e4) end +c41517968.material_setcode=0x8 function c41517968.poscon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler()==Duel.GetAttacker() and e:GetHandler():IsRelateToBattle() end diff --git a/script/c41554273.lua b/script/c41554273.lua index fdcbeaf1..106adf43 100644 --- a/script/c41554273.lua +++ b/script/c41554273.lua @@ -1,63 +1,63 @@ ---ダイナミスト・ラッシュ -function c41554273.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,41554273+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c41554273.target) - e1:SetOperation(c41554273.activate) - c:RegisterEffect(e1) -end -function c41554273.spfilter(c,e,tp) - return c:IsSetCard(0xd8) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c41554273.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c41554273.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c41554273.activate(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,c41554273.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetLabelObject(tc) - e1:SetCondition(c41554273.descon) - e1:SetOperation(c41554273.desop) - Duel.RegisterEffect(e1,tp) - tc:RegisterFlagEffect(41554273,RESET_EVENT+0x1fe0000,0,1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetValue(c41554273.efilter) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end - Duel.SpecialSummonComplete() -end -function c41554273.descon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:GetFlagEffect(41554273)~=0 then - return true - else - e:Reset() - return false - end -end -function c41554273.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.Destroy(tc,REASON_EFFECT) -end -function c41554273.efilter(e,te) - return te:GetOwner()~=e:GetOwner() -end +--ダイナミスト・ラッシュ +function c41554273.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,41554273+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c41554273.target) + e1:SetOperation(c41554273.activate) + c:RegisterEffect(e1) +end +function c41554273.spfilter(c,e,tp) + return c:IsSetCard(0xd8) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c41554273.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c41554273.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c41554273.activate(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,c41554273.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabelObject(tc) + e1:SetCondition(c41554273.descon) + e1:SetOperation(c41554273.desop) + Duel.RegisterEffect(e1,tp) + tc:RegisterFlagEffect(41554273,RESET_EVENT+0x1fe0000,0,1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetValue(c41554273.efilter) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end + Duel.SpecialSummonComplete() +end +function c41554273.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(41554273)~=0 then + return true + else + e:Reset() + return false + end +end +function c41554273.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) +end +function c41554273.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end diff --git a/script/c41587307.lua b/script/c41587307.lua index 15de4b11..1fe27fca 100644 --- a/script/c41587307.lua +++ b/script/c41587307.lua @@ -1,32 +1,4 @@ --折れ竹光 function c41587307.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(c41587307.target) - e1:SetOperation(c41587307.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) -end -function c41587307.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 c41587307.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 + aux.AddEquipProcedure(c) end diff --git a/script/c41613948.lua b/script/c41613948.lua index d05f5b68..a811fd41 100644 --- a/script/c41613948.lua +++ b/script/c41613948.lua @@ -1,60 +1,60 @@ ---D-HERO デビルガイ -function c41613948.initial_effect(c) - --remove - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(41613948,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c41613948.condition) - e1:SetCost(c41613948.cost) - e1:SetTarget(c41613948.target) - e1:SetOperation(c41613948.operation) - c:RegisterEffect(e1) -end -function c41613948.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) -end -function c41613948.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c41613948.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c41613948.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Remove(tc,tc:GetPosition(),REASON_EFFECT+REASON_TEMPORARY)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - e1:SetCountLimit(1) - e1:SetCondition(c41613948.retcon) - e1:SetOperation(c41613948.retop) - e1:SetLabel(1) - e1:SetLabelObject(tc) - Duel.RegisterEffect(e1,tp) - end -end -function c41613948.retcon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c41613948.retop(e,tp,eg,ep,ev,re,r,rp) - local t=e:GetLabel() - if t==1 then e:SetLabel(0) - else Duel.ReturnToField(e:GetLabelObject()) end -end +--D-HERO デビルガイ +function c41613948.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41613948,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c41613948.condition) + e1:SetCost(c41613948.cost) + e1:SetTarget(c41613948.target) + e1:SetOperation(c41613948.operation) + c:RegisterEffect(e1) +end +function c41613948.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) +end +function c41613948.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c41613948.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c41613948.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Remove(tc,tc:GetPosition(),REASON_EFFECT+REASON_TEMPORARY)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e1:SetCountLimit(1) + e1:SetCondition(c41613948.retcon) + e1:SetOperation(c41613948.retop) + e1:SetLabel(1) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) + end +end +function c41613948.retcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c41613948.retop(e,tp,eg,ep,ev,re,r,rp) + local t=e:GetLabel() + if t==1 then e:SetLabel(0) + else Duel.ReturnToField(e:GetLabelObject()) end +end diff --git a/script/c41639001.lua b/script/c41639001.lua index 76058a3e..71ddfd22 100644 --- a/script/c41639001.lua +++ b/script/c41639001.lua @@ -1,48 +1,48 @@ ---聖刻龍-ドラゴンヌート -function c41639001.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(41639001,0)) - e1:SetType(EFFECT_TYPE_QUICK_F) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_CHAINING) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c41639001.spcon) - e1:SetTarget(c41639001.sptg) - e1:SetOperation(c41639001.spop) - c:RegisterEffect(e1) -end -function c41639001.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return g and g:IsContains(c) -end -function c41639001.spfilter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c41639001.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) -end -function c41639001.spop(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,c41639001.spfilter,tp,0x13,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - end -end +--聖刻龍-ドラゴンヌート +function c41639001.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41639001,0)) + e1:SetType(EFFECT_TYPE_QUICK_F) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c41639001.spcon) + e1:SetTarget(c41639001.sptg) + e1:SetOperation(c41639001.spop) + c:RegisterEffect(e1) +end +function c41639001.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return g and g:IsContains(c) +end +function c41639001.spfilter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c41639001.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c41639001.spop(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,aux.NecroValleyFilter(c41639001.spfilter),tp,0x13,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c41705642.lua b/script/c41705642.lua index 7603dd32..e4731354 100644 --- a/script/c41705642.lua +++ b/script/c41705642.lua @@ -25,8 +25,8 @@ end function c41705642.spop(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,c41705642.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c41705642.filter),tp,LOCATION_GRAVE+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 diff --git a/script/c41741922.lua b/script/c41741922.lua index cd323c5e..988f0576 100644 --- a/script/c41741922.lua +++ b/script/c41741922.lua @@ -28,17 +28,13 @@ end function c41741922.spop(e,tp,eg,ep,ev,re,r,rp) if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g1=Duel.GetMatchingGroup(c41741922.filter,tp,LOCATION_HAND,0,nil,e,tp) + local g2=Duel.GetMatchingGroup(aux.NecroValleyFilter(c41741922.filter),tp,LOCATION_GRAVE,0,nil,e,tp) + if g1:GetCount()==0 or g2:GetCount()==0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c41741922.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - end + local sg1=g1:Select(tp,1,1,nil) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - g=Duel.SelectMatchingCard(tp,c41741922.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - end - Duel.SpecialSummonComplete() + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.SpecialSummon(sg1,0,tp,tp,false,false,POS_FACEUP) end diff --git a/script/c41753322.lua b/script/c41753322.lua index 1b0a18a0..4ac4eb63 100644 --- a/script/c41753322.lua +++ b/script/c41753322.lua @@ -47,12 +47,11 @@ end function c41753322.otfilter(c,tp) return c:IsRace(RACE_DINOSAUR) and (c:IsControler(tp) or c:IsFaceup()) end -function c41753322.otcon(e,c) +function c41753322.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c41753322.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c41753322.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c41753322.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c41767843.lua b/script/c41767843.lua index a8697603..f276d4e6 100644 --- a/script/c41767843.lua +++ b/script/c41767843.lua @@ -1,40 +1,40 @@ ---幻奏の音女スコア -function c41767843.initial_effect(c) - --atkdef 0 - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(41767843,0)) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c41767843.condition) - e1:SetCost(c41767843.cost) - e1:SetOperation(c41767843.operation) - c:RegisterEffect(e1) -end -function c41767843.condition(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if not d then return false end - if a:IsControler(1-tp) then a,d=d,a end - return a:IsSetCard(0x9b) and a:IsRelateToBattle() and (d:GetAttack()>0 or d:GetDefense()>0) -end -function c41767843.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c41767843.operation(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if a:IsControler(1-tp) then d=a end - if not d:IsRelateToBattle() or d:IsFacedown() then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(0) - d:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - d:RegisterEffect(e2) -end +--幻奏の音女スコア +function c41767843.initial_effect(c) + --atkdef 0 + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41767843,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c41767843.condition) + e1:SetCost(c41767843.cost) + e1:SetOperation(c41767843.operation) + c:RegisterEffect(e1) +end +function c41767843.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:IsControler(1-tp) then a,d=d,a end + return a:IsSetCard(0x9b) and a:IsRelateToBattle() and (d:GetAttack()>0 or d:GetDefense()>0) +end +function c41767843.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c41767843.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a:IsControler(1-tp) then d=a end + if not d:IsRelateToBattle() or d:IsFacedown() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(0) + d:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + d:RegisterEffect(e2) +end diff --git a/script/c41777.lua b/script/c41777.lua index 26420da3..45e959d5 100644 --- a/script/c41777.lua +++ b/script/c41777.lua @@ -1,48 +1,48 @@ ---ジェム・エンハンス -function c41777.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_ATTACK,TIMING_ATTACK) - e1:SetCost(c41777.cost) - e1:SetTarget(c41777.target) - e1:SetOperation(c41777.activate) - c:RegisterEffect(e1) -end -function c41777.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x1047) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x1047) - Duel.Release(g,REASON_COST) -end -function c41777.filter(c,e,tp) - return c:IsSetCard(0x1047) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c41777.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c41777.filter(chkc,e,tp) end - if chk==0 then - if e:GetLabel()==1 then - e:SetLabel(0) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c41777.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) - else - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c41777.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) - end - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c41777.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) - e:SetLabel(0) -end -function c41777.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ジェム・エンハンス +function c41777.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_ATTACK,TIMING_ATTACK) + e1:SetCost(c41777.cost) + e1:SetTarget(c41777.target) + e1:SetOperation(c41777.activate) + c:RegisterEffect(e1) +end +function c41777.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x1047) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x1047) + Duel.Release(g,REASON_COST) +end +function c41777.filter(c,e,tp) + return c:IsSetCard(0x1047) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c41777.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c41777.filter(chkc,e,tp) end + if chk==0 then + if e:GetLabel()==1 then + e:SetLabel(0) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c41777.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c41777.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c41777.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + e:SetLabel(0) +end +function c41777.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c4179255.lua b/script/c4179255.lua index 86623778..a26355f8 100644 --- a/script/c4179255.lua +++ b/script/c4179255.lua @@ -4,6 +4,13 @@ function c4179255.initial_effect(c) aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) c:EnableReviveLimit() --draw + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e0:SetCode(EVENT_CHAINING) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e0:SetRange(LOCATION_MZONE) + e0:SetOperation(aux.chainreg) + c:RegisterEffect(e0) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_DRAW) e1:SetDescription(aux.Stringid(4179255,0)) @@ -31,6 +38,7 @@ function c4179255.initial_effect(c) end function c4179255.drcon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp and re and re:IsActiveType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and e:GetHandler():GetFlagEffect(1)>0 end function c4179255.drtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsRelateToEffect(e) and e:GetHandler():IsFaceup() end diff --git a/script/c41855169.lua b/script/c41855169.lua index 7c485638..1966f4a6 100644 --- a/script/c41855169.lua +++ b/script/c41855169.lua @@ -1,42 +1,42 @@ ---昇霊術師 ジョウゲン -function c41855169.initial_effect(c) - --disable spsummon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,1) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(41855169,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c41855169.cost) - e2:SetTarget(c41855169.target) - e2:SetOperation(c41855169.operation) - c:RegisterEffect(e2) -end -function c41855169.cfilter(c) - return c:IsDiscardable() and c:IsAbleToGraveAsCost() and not c:IsHasEffect(81674782) -end -function c41855169.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c41855169.cfilter,tp,LOCATION_HAND,0,1,nil) end - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - local sg=g:RandomSelect(tp,1) - Duel.SendtoGrave(sg,REASON_COST+REASON_DISCARD) -end -function c41855169.filter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 -end -function c41855169.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c41855169.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(c41855169.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c41855169.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c41855169.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end +--昇霊術師 ジョウゲン +function c41855169.initial_effect(c) + --disable spsummon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(41855169,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c41855169.cost) + e2:SetTarget(c41855169.target) + e2:SetOperation(c41855169.operation) + c:RegisterEffect(e2) +end +function c41855169.cfilter(c) + return c:IsDiscardable() and c:IsAbleToGraveAsCost() and not c:IsHasEffect(81674782) +end +function c41855169.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c41855169.cfilter,tp,LOCATION_HAND,0,1,nil) end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local sg=g:RandomSelect(tp,1) + Duel.SendtoGrave(sg,REASON_COST+REASON_DISCARD) +end +function c41855169.filter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 +end +function c41855169.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c41855169.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c41855169.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c41855169.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c41855169.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c41859700.lua b/script/c41859700.lua index 425bd072..c6b98ca3 100644 --- a/script/c41859700.lua +++ b/script/c41859700.lua @@ -1,23 +1,23 @@ ---燃える藻 -function c41859700.initial_effect(c) - --recover - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(41859700,0)) - e1:SetCategory(CATEGORY_RECOVER) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c41859700.target) - e1:SetOperation(c41859700.operation) - c:RegisterEffect(e1) -end -function c41859700.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,1000) -end -function c41859700.operation(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end +--燃える藻 +function c41859700.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41859700,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c41859700.target) + e1:SetOperation(c41859700.operation) + c:RegisterEffect(e1) +end +function c41859700.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,1000) +end +function c41859700.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c419.lua b/script/c419.lua new file mode 100644 index 00000000..c3bffe4e --- /dev/null +++ b/script/c419.lua @@ -0,0 +1,1226 @@ +--Generate Effect +function c419.initial_effect(c) + --edit to xyz procedure to add filters and checks + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + mt.xyz_filter=function(mc) return mc and (not f or f(mc)) and mc:IsXyzLevel(c,lv) and not mc:IsType(TYPE_TOKEN) end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + maxct=63 + mt.maxxyzct=63 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + if not c419.global_check then + c419.global_check=true + --register for graveyard synchro + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetOperation(c419.op1) + Duel.RegisterEffect(e1,0) + --register for xyz + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetOperation(c419.op2) + Duel.RegisterEffect(e2,0) + --register for xyz synchro + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetOperation(c419.op3) + Duel.RegisterEffect(e3,0) + --register for ocg cardians + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetOperation(c419.op4) + Duel.RegisterEffect(e3,0) + --register for atk change + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ADJUST) + e5:SetOperation(c419.op5) + Duel.RegisterEffect(e5,0) + local atkeff=Effect.CreateEffect(c) + atkeff:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + atkeff:SetCode(EVENT_CHAIN_SOLVED) + atkeff:SetOperation(c419.atkraiseeff) + Duel.RegisterEffect(atkeff,0) + local atkadj=Effect.CreateEffect(c) + atkadj:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + atkadj:SetCode(EVENT_ADJUST) + atkadj:SetOperation(c419.atkraiseadj) + Duel.RegisterEffect(atkadj,0) + end +end +function c419.op1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsType,0,LOCATION_GRAVE,LOCATION_GRAVE,nil,TYPE_SYNCHRO) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(2081)==0 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetDescription(aux.Stringid(64382841,2)) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_GRAVE) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + e1:SetCondition(c419.syncon) + e1:SetOperation(c419.synop) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(2081,nil,0,1) + end + tc=g:GetNext() + end +end +function c419.syncon(e,c,smat,mg) + if c==nil then return true end + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c419.gvmatfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c419.gvmatfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + if not mt.sync then return false end + return tuner:IsExists(c419.gvlvfilter,1,nil,c,nontuner) +end +function c419.gvlvfilter(c,syncard,nontuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and slv-lv>0 and nt:CheckWithSumEqual(Card.GetSynchroLevel,slv-lv,mt.minntct,mt.maxntct,syncard) +end +function c419.gvlvfilter2(c,syncard,tuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and lv+slv>0 and nt:CheckWithSumEqual(Card.GetSynchroLevel,lv+slv,mt.minntct,mt.maxntct,syncard) +end +function c419.gvmatfilter1(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_TUNER) and c:IsHasEffect(511002081) and c:IsCanBeSynchroMaterial(syncard) + and mt.tuner_filter and mt.tuner_filter(c) +end +function c419.gvmatfilter2(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard) + and mt.nontuner_filter and mt.nontuner_filter(c) +end +function c419.synop(e,tp,eg,ep,ev,re,r,rp,c,smat,mg) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c419.gvmatfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c419.gvmatfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local mat1 + if c:IsSetCard(0x301) then + nontuner=nontuner:Filter(c419.gvlvfilter2,nil,c,tuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=nontuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(c) + tuner=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,c,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=tuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,c:GetLevel()+tlv,mt.minntct,mt.maxntct,c) + mat1:Merge(mat2) + elseif mt.dobtun then + mat1=Group.CreateGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t1=tuner:FilterSelect(tp,c419.dtfilter1,1,1,nil,c,c:GetLevel(),tuner,nontuner) + tuner1=t1:GetFirst() + mat1:AddCard(tuner1) + local lv1=tuner1:GetSynchroLevel(c) + local f1=tuner1.tuner_filter + local t2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + t2=tuner:FilterSelect(tp,c419.dtfilter2,1,1,tuner1,c,c:GetLevel()-lv1,nontuner,f1,tuner1) + local tuner2=t2:GetFirst() + mat1:AddCard(tuner2) + local lv2=tuner2:GetSynchroLevel(c) + local f2=tuner2.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=nontuner:FilterSelect(tp,c419.dtfilter3,1,1,nil,c,c:GetLevel()-lv1-lv2,f1,f2) + mat1:Merge(m3) + else + tuner=tuner:Filter(c419.gvlvfilter,nil,c,nontuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=tuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(c) + nontuner=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,c,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=nontuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,c:GetLevel()-tlv,mt.minntct,mt.maxntct,c) + mat1:Merge(mat2) + end + c:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_MATERIAL+REASON_SYNCHRO) +end +function c419.filterxyz(c) + local code=c:GetOriginalCode() + return c:IsType(TYPE_XYZ) and c:GetFlagEffect(419)==0 + and ((c.minxyzct and c.minxyzct>0) or code==65305468 or code==52653092 or code==57314798 or code==23187256) +end +function c419.op2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c419.filterxyz,c:GetControler(),LOCATION_EXTRA,LOCATION_EXTRA,nil) + if g:GetCount()<=0 then return end + local xg=Group.CreateGroup() + for i=1,15 do + local tck=Duel.CreateToken(tp,419) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_XYZ_LEVEL) + e1:SetValue(i) + tck:RegisterEffect(e1) + xg:AddCard(tck) + end + xg:KeepAlive() + local tc=g:GetFirst() + while tc do + local code=tc:GetOriginalCode() + if code==65305468 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetDescription(aux.Stringid(64382841,0)) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetValue(SUMMON_TYPE_XYZ) + e1:SetCondition(c419.xyzcon65305468) + e1:SetOperation(c419.xyzop65305468) + tc:RegisterEffect(e1) + elseif code==57314798 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetDescription(aux.Stringid(64382841,0)) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetValue(SUMMON_TYPE_XYZ) + e1:SetCondition(c419.xyzcon57314798) + e1:SetOperation(c419.xyzop57314798) + tc:RegisterEffect(e1) + elseif code==52653092 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetDescription(aux.Stringid(64382841,0)) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetValue(SUMMON_TYPE_XYZ) + e1:SetCondition(c419.xyzcon52653092) + e1:SetOperation(c419.xyzop52653092) + tc:RegisterEffect(e1) + elseif code==23187256 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetDescription(aux.Stringid(64382841,0)) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetValue(SUMMON_TYPE_XYZ) + e1:SetCondition(c419.xyzcon23187256) + e1:SetOperation(c419.xyzop23187256) + tc:RegisterEffect(e1) + else + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetDescription(aux.Stringid(64382841,0)) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetValue(SUMMON_TYPE_XYZ) + e1:SetCondition(c419.xyzcon) + e1:SetOperation(c419.xyzop) + e1:SetLabelObject(xg) + tc:RegisterEffect(e1) + end + tc:RegisterFlagEffect(419,nil,0,1) + tc=g:GetNext() + end +end +function c419.mfilter(c,xyz) + return c:IsFaceup() and xyz.xyz_filter(c) and c:IsCanBeXyzMaterial(xyz) +end +function c419.amfilter(c) + return c:GetEquipGroup():IsExists(Card.IsHasEffect,1,nil,511001175) +end +function c419.doubfilter(c,xyz) + return c:IsHasEffect(511001225) and (not c.xyzlimit2 or c.xyzlimit2(xyz)) +end +function c419.subfilter(c,rk,xyz,xg) + if c:IsLocation(LOCATION_GRAVE) then + return c:IsHasEffect(511002793) and xyz.xyz_filter(c) and c:IsCanBeXyzMaterial(xyz) + else + return (c:GetFlagEffect(511000189)==rk and xg:IsExists(c419.subfilterchk,1,nil,xyz)) or c:IsHasEffect(511002116) + end +end +function c419.subfilterchk(c,xyz) + c:AssumeProperty(ASSUME_TYPE,TYPE_MONSTER) + return xyz.xyz_filter(c) +end +function c419.m12(c,rk,xyz,xg) + return c419.mfilter(c,xyz) or c419.subfilter(c,rk,xyz,xg) +end +function c419.xyzcon(e,c,og,min,max) + if c==nil then return true end + if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end + local tp=c:GetControler() + local rk=c:GetRank() + local minct=c.minxyzct + local maxct=c.maxxyzct + local xg=e:GetLabelObject() + local mg + if og then + mg=og:Filter(c419.m12,nil,rk,c,xg) + else + mg=Duel.GetMatchingGroup(c419.mfilter,tp,LOCATION_MZONE,0,nil,c) + local mg2=Duel.GetMatchingGroup(c419.subfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,rk,c,xg) + mg:Merge(mg2) + end + if not (not min or min<=minct and max>=maxct) then return false end + if not mg:IsExists(c419.amfilter,1,nil) and not mg:IsExists(c419.doubfilter,1,nil,c) + and not mg:IsExists(c419.subfilter,1,nil,rk,c,xg) + and not mg:IsExists(Card.IsHasEffect,1,nil,511002116) then return false end + local g=mg:Filter(c419.amfilter,nil) + local eqg=Group.CreateGroup() + local tce=g:GetFirst() + while tce do + local eq=tce:GetEquipGroup() + eq=eq:Filter(Card.IsHasEffect,nil,511001175) + g:Merge(eq) + tce=g:GetNext() + end + local dob=mg:Filter(c419.doubfilter,nil,c) + local dobc=dob:GetFirst() + while dobc do + minct=minct-1 + maxct=maxct-1 + dobc=dob:GetNext() + end + mg:Merge(g) + return (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or mg:IsExists(Card.IsLocation,1,nil,LOCATION_MZONE)) and mg:GetCount()>=minct +end +function c419.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og) + local g1=Group.CreateGroup() + g1:KeepAlive() + local c=e:GetHandler() + if og and not min then + g1=og + local sg=Group.CreateGroup() + local tc=g1:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=g1:GetNext() + end + sg:Merge(eqg) + Duel.SendtoGrave(sg,REASON_RULE) + else + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local rk=c:GetRank() + local minct=c.minxyzct + local maxct=c.maxxyzct + if min then + if min>minct then minct=min end + if max0 and (mg:GetCount()<=maxct or Duel.SelectYesNo(tp,aux.Stringid(61965407,0))) then + minct=minct-1 + maxct=maxct-1 + end + if gc and gc:IsHasEffect(511002116) then + gc:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + end + if gc and gc:IsHasEffect(511002793) then + gc:RegisterFlagEffect(511002794,nil,0,0) + end + mg:RemoveCard(gc) + g1:AddCard(gc) + minct=minct-1 + maxct=maxct-1 + until mg:GetCount()<=0 or (minct<=0 and (maxct<=0 or not Duel.SelectYesNo(tp,aux.Stringid(17874674,0)))) + g1:Remove(Card.IsHasEffect,nil,511002116) + g1:Remove(Card.IsHasEffect,nil,511002115) + local sg=Group.CreateGroup() + local tc=g1:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=g1:GetNext() + end + sg:Merge(eqg) + Duel.SendtoGrave(sg,REASON_RULE) + end + c:SetMaterial(g1) + Duel.Overlay(c,g1) +end +function c419.mfilter65305468(c,xyzc) + if c:IsLocation(LOCATION_GRAVE) and not c:IsHasEffect(511002793) then return false end + if c:IsOnField() and c:IsFacedown() then return false end + return (c:IsType(TYPE_XYZ) and not c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc)) + or c:IsHasEffect(511002116) +end +function c419.xyzfilter165305468(c,tp,g,xyz) + return (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or c:IsLocation(LOCATION_MZONE)) + and (g:IsExists(Card.IsHasEffect,1,c,511002116) or g:IsExists(c419.xyzfilter265305468,1,c,c:GetRank(),c:IsHasEffect(511002116),c:IsHasEffect(511002793)) + or c419.doubfilter(c,xyz) or c419.amfilter(c)) +end +function c419.xyzfilter265305468(c,rk,free,effchk) + return free or (c:GetRank()==rk and (effchk or c:IsHasEffect(511002793))) or c:IsHasEffect(511002116) +end +function c419.xyzcon65305468(e,c,og,min,max) + if c==nil then return true end + local tp=c:GetControler() + local mg=nil + if og then + mg=og:Filter(c419.mfilter65305468,nil,c) + else + mg=Duel.GetMatchingGroup(c419.mfilter65305468,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c) + end + return (not min or min<=2 and max>=2) and mg:IsExists(c419.xyzfilter165305468,1,nil,tp,mg,c) +end +function c419.xyzop65305468(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) + local g=nil + local sg=Group.CreateGroup() + if og and not min then + g=og + local tc=og:GetFirst() + while tc do + sg:Merge(tc:GetOverlayGroup()) + tc=og:GetNext() + end + else + local mg=nil + if og then + mg=og:Filter(c419.mfilter65305468,nil,c) + else + mg=Duel.GetMatchingGroup(c419.mfilter65305468,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + g=mg:FilterSelect(tp,c419.xyzfilter165305468,1,1,nil,tp,mg,c) + local tc1=g:GetFirst() + local free=false + if tc1:IsHasEffect(511002116) then + tc1:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + free=true + end + local eqg=tc1:GetEquipGroup() + local eqc=eqg:GetFirst() + while eqc do + if eqc:IsHasEffect(511001175) then + mg:AddCard(eqc) + end + eqc=eqg:GetNext() + end + if not tc1:IsHasEffect(511001225) or (mg:IsExists(c419.xyzfilter265305468,1,tc1,tc1:GetRank(),free,tc1:IsHasEffect(511002793)) + and Duel.SelectYesNo(tp,560)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g2=mg:FilterSelect(tp,c419.xyzfilter265305468,1,1,tc1,tc1:GetRank(),free,tc1:IsHasEffect(511002793)) + local tc2=g2:GetFirst() + if tc2:IsHasEffect(511002116) then + tc2:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + end + g:Merge(g2) + sg:Merge(tc1:GetOverlayGroup()) + sg:Merge(tc2:GetOverlayGroup()) + end + end + g:Remove(Card.IsHasEffect,nil,511002116) + g:Remove(Card.IsHasEffect,nil,511002115) + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(g) + Duel.Overlay(c,g) +end +function c419.mfilter57314798(c,xyzc) + if c:IsLocation(LOCATION_GRAVE) and not c:IsHasEffect(511002793) then return false end + if c:IsOnField() and c:IsFacedown() then return false end + return (c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc)) + or c:IsHasEffect(511002116) +end +function c419.xyzfilter157314798(c,tp,g,xyz) + return (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or c:IsLocation(LOCATION_MZONE)) + and (g:IsExists(Card.IsHasEffect,1,c,511002116) or g:IsExists(c419.xyzfilter257314798,1,c,c:GetRank(),c:GetCode(),c:IsHasEffect(511002116),c:IsHasEffect(511002793)) + or c419.doubfilter(c,xyz) or c419.amfilter(c)) +end +function c419.xyzfilter257314798(c,rk,code,free,effchk) + return free or (c:GetRank()==rk and c:IsCode(code) and (effchk or c:IsHasEffect(511002793))) or c:IsHasEffect(511002116) +end +function c419.xyzcon57314798(e,c,og,min,max) + if c==nil then return true end + local tp=c:GetControler() + local mg=nil + if og then + mg=og:Filter(c419.mfilter57314798,nil,c) + else + mg=Duel.GetMatchingGroup(c419.mfilter57314798,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c) + end + return (not min or min<=2 and max>=2) and mg:IsExists(c419.xyzfilter157314798,1,nil,tp,mg,c) +end +function c419.xyzop57314798(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) + local g=nil + local sg=Group.CreateGroup() + if og and not min then + g=og + local tc=og:GetFirst() + while tc do + sg:Merge(tc:GetOverlayGroup()) + tc=og:GetNext() + end + else + local mg=nil + if og then + mg=og:Filter(c419.mfilter57314798,nil,c) + else + mg=Duel.GetMatchingGroup(c419.mfilter57314798,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + g=mg:FilterSelect(tp,c419.xyzfilter157314798,1,1,nil,tp,mg,c) + local tc1=g:GetFirst() + local free=false + if tc1:IsHasEffect(511002116) then + tc1:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + free=true + end + local eqg=tc1:GetEquipGroup() + local eqc=eqg:GetFirst() + while eqc do + if eqc:IsHasEffect(511001175) then + mg:AddCard(eqc) + end + eqc=eqg:GetNext() + end + if not tc1:IsHasEffect(511001225) or (mg:IsExists(c419.xyzfilter257314798,1,tc1,tc1:GetRank(),tc1:GetCode(),free,tc1:IsHasEffect(511002793)) + and Duel.SelectYesNo(tp,560)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g2=mg:FilterSelect(tp,c419.xyzfilter257314798,1,1,tc1,tc1:GetRank(),tc1:GetCode(),free,tc1:IsHasEffect(511002793)) + local tc2=g2:GetFirst() + if tc2:IsHasEffect(511002116) then + tc2:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + end + g:Merge(g2) + sg:Merge(tc1:GetOverlayGroup()) + sg:Merge(tc2:GetOverlayGroup()) + end + end + g:Remove(Card.IsHasEffect,nil,511002116) + g:Remove(Card.IsHasEffect,nil,511002115) + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(g) + Duel.Overlay(c,g) +end +function c419.mfilter52653092(c,xyzc) + if c:IsLocation(LOCATION_GRAVE) and not c:IsHasEffect(511002793) then return false end + if c:IsOnField() and c:IsFacedown() then return false end + return (c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc)) + or c:IsHasEffect(511002116) +end +function c419.xyzfilter52653092(c,tp,g,xyz,ct,fchk,spc) + local fchk2=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or c:IsLocation(LOCATION_MZONE) or fchk + local mg + local spchk=spc + local ctc=ct-1 + if c:IsType(TYPE_XYZ) then + mg=g:Filter(c419.xyzfilterchk52653092,c,c:GetRank()) + if c419.doubfilter(c,xyz) then ctc=ctc-1 spchk=true end + local eqg=c:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + if eqg:GetCount()>0 then spchk=true end + mg:Merge(eqg) + if c:IsHasEffect(511002116) then spchk=true end + else + mg=g:Clone() + mg:RemoveCard(c) + spchk=true + end + if ctc<=0 then return fchk2 and spchk end + return mg:IsExists(c419.xyzfilter52653092,1,c,tp,mg,xyz,ctc,fchk2,spchk) +end +function c419.xyzfilterchk52653092(c,rk) + return c:GetRank()==rk or c:IsHasEffect(511002116) or c:IsHasEffect(511001175) +end +function c419.xyzcon52653092(e,c,og,min,max) + if c==nil then return true end + local tp=c:GetControler() + if min and (min>3 or max<3) then return false end + local mg=nil + if og then + mg=og:Filter(c419.mfilter52653092,nil,c) + else + mg=Duel.GetMatchingGroup(c419.mfilter52653092,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c) + end + return mg:IsExists(c419.xyzfilter52653092,1,nil,tp,mg,c,3,false,false) +end +function c419.xyzop52653092(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) + if og and not min then + local sg=Group.CreateGroup() + local tc=og:GetFirst() + while tc do + sg:Merge(tc:GetOverlayGroup()) + tc=og:GetNext() + end + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(og) + Duel.Overlay(c,og) + return + end + local mg=nil + if og then + mg=og:Filter(c419.mfilter52653092,nil,c) + else + mg=Duel.GetMatchingGroup(c419.mfilter52653092,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c) + end + local xyzchkc + local field=false + local spchk=false + local dob=false + local ct=3 + local g=Group.CreateGroup() + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg=mg:FilterSelect(tp,c419.xyzfilter52653092,1,1,nil,tp,mg,c,ct,field,spchk) + local tc=sg:GetFirst() + field=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or tc:IsLocation(LOCATION_MZONE) or field + if not xyzchkc and tc:IsType(TYPE_XYZ) then xyzchkc=tc end + if tc:IsHasEffect(511002116) then + tc:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + spchk=true + end + if tc:IsHasEffect(511001175) then spchk=true end + local eqg=tc:GetEquipGroup() + local eqc=eqg:GetFirst() + while eqc do + if eqc:IsHasEffect(511001175) then + mg:AddCard(eqc) + end + eqc=eqg:GetNext() + end + mg:RemoveCard(tc) + ct=ct-1 + if tc:IsHasEffect(511001225) then ct=ct-1 spchk=true dob=true end + if tc:IsHasEffect(511002793) then spchk=true end + if xyzchkc then mg=mg:Filter(c419.xyzfilterchk52653092,tc,tc:GetRank()) end + g:AddCard(tc) + until ct<=0 + if dob and mg:GetCount()>0 and g:GetCount()==2 and Duel.SelectYesNo(tp,560) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g3=mg:FilterSelect(tp,c419.xyzfilter52653092,1,1,nil,tp,mg,c,ct,field,spchk) + g:Merge(g3) + end + local sg=Group.CreateGroup() + local tcc=g:GetFirst() + while tcc do + sg:Merge(tcc:GetOverlayGroup()) + tcc=g:GetNext() + end + g:Remove(Card.IsHasEffect,nil,511002116) + g:Remove(Card.IsHasEffect,nil,511002115) + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(g) + Duel.Overlay(c,g) +end +function c419.mfilter23187256(c,xyzc) + if c:IsLocation(LOCATION_GRAVE) and not c:IsHasEffect(511002793) then return false end + if c:IsOnField() and c:IsFacedown() then return false end + return (c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) and c:GetOverlayCount()>0 and c:IsCanBeXyzMaterial(xyzc)) + or c:IsHasEffect(511002116) +end +function c419.xyzfilterchk52653092(c,rk) + return c:GetRank()==rk or c:IsHasEffect(511002116) or c:IsHasEffect(511001175) +end +function c419.xyzcon23187256(e,c,og,min,max) + if c==nil then return true end + local tp=c:GetControler() + local ct=2 + local maxc=63 + if min then + ct=math.max(ct,min) + maxc=max + end + local mg=nil + if og then + mg=og:Filter(c419.mfilter23187256,nil,c) + else + mg=Duel.GetMatchingGroup(c419.mfilter23187256,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c) + end + return maxc>=2 and mg:IsExists(c419.xyzfilter52653092,1,nil,tp,mg,c,ct,false,false) +end +function c419.xyzop23187256(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) + local g=nil + if og and not min then + g=og + else + local mg=nil + if og then + mg=og:Filter(c419.mfilter23187256,nil,c) + else + mg=Duel.GetMatchingGroup(c419.mfilter23187256,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c) + end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local maxc=64 + local ct=2 + if min then + minc=math.max(ct,min) + maxc=max + end + local xyzchkc + local field=false + local spchk=false + g=Group.CreateGroup() + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg=mg:FilterSelect(tp,c419.xyzfilter52653092,1,1,nil,tp,mg,c,ct,field,spchk) + local tc=sg:GetFirst() + field=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or tc:IsLocation(LOCATION_MZONE) or field + if not xyzchkc and tc:IsType(TYPE_XYZ) then xyzchkc=tc end + if tc:IsHasEffect(511002116) then + tc:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + spchk=true + end + if tc:IsHasEffect(511001175) then spchk=true end + local eqg=tc:GetEquipGroup() + local eqc=eqg:GetFirst() + while eqc do + if eqc:IsHasEffect(511001175) then + mg:AddCard(eqc) + end + eqc=eqg:GetNext() + end + mg:RemoveCard(tc) + ct=ct-1 + maxc=maxc-1 + if tc:IsHasEffect(511001225) then ct=ct-1 spchk=true end + if tc:IsHasEffect(511002793) then spchk=true end + if xyzchkc then mg=mg:Filter(c419.xyzfilterchk52653092,tc,tc:GetRank()) end + g:AddCard(tc) + until ct<=0 + while mg:GetCount()>0 and maxc>0 and Duel.SelectYesNo(tp,560) do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg=mg:FilterSelect(tp,c419.xyzfilter52653092,1,1,nil,tp,mg,c,0,field,spchk) + local tc=sg:GetFirst() + field=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or tc:IsLocation(LOCATION_MZONE) or field + if not xyzchkc and tc:IsType(TYPE_XYZ) then xyzchkc=tc end + if tc:IsHasEffect(511002116) then + tc:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + spchk=true + end + if tc:IsHasEffect(511001175) then spchk=true end + local eqg=tc:GetEquipGroup() + local eqc=eqg:GetFirst() + while eqc do + if eqc:IsHasEffect(511001175) then + mg:AddCard(eqc) + end + eqc=eqg:GetNext() + end + mg:RemoveCard(tc) + maxc=maxc-1 + if tc:IsHasEffect(511001225) then spchk=true end + if tc:IsHasEffect(511002793) then spchk=true end + if xyzchkc then mg=mg:Filter(c419.xyzfilterchk52653092,tc,tc:GetRank()) end + g:AddCard(tc) + end + end + local sg=Group.CreateGroup() + local tcc=g:GetFirst() + while tcc do + sg:Merge(tcc:GetOverlayGroup()) + tcc=g:GetNext() + end + g:Remove(Card.IsHasEffect,nil,511002116) + g:Remove(Card.IsHasEffect,nil,511002115) + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(g) + Duel.Overlay(c,g) +end + +function c419.op3(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsType,0,LOCATION_EXTRA,LOCATION_EXTRA,nil,TYPE_SYNCHRO) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(538)==0 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetDescription(aux.Stringid(64382841,1)) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + e1:SetCondition(c419.syncon2) + e1:SetOperation(c419.synop2) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(538,nil,0,1) + end + tc=g:GetNext() + end +end +function c419.syncon2(e,c,tuner,mg) + if c==nil then return true end + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local tp=c:GetControler() + local minct=2 + local g1=nil + local g2=nil + if mg then + g1=mg:Filter(c419.matfilter1,nil,c,tp) + g2=mg:Filter(c419.matfilter2,nil,c,tp) + else + g1=Duel.GetMatchingGroup(c419.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + g2=Duel.GetMatchingGroup(c419.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + local tlv=tuner:GetSynchroLevel(c) + if lv-tlv<=0 then return false end + return g2:CheckWithSumEqual(c419.xyzlvfilter,lv-tlv,mt.minntct,mt.maxntct,c) + end + if not pe then + return g1:IsExists(c419.synfilter,1,nil,c,lv,g2) + else + return c419.synfilter(pe:GetOwner(),c,lv,g2) + end +end +function c419.synfilter(c,syncard,lv,g2) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local tlv + if c:GetLevel()>0 then tlv=c:GetSynchroLevel(syncard) + elseif c:IsHasEffect(511000538) then tlv=c:GetRank() + else tlv=0 end + if lv-tlv<=0 then return false end + return mt.minntct and mt.maxntct and lv-tlv>0 and g2:CheckWithSumEqual(c419.xyzlvfilter,lv-tlv,mt.minntct,mt.maxntct,syncard) +end +function c419.xyzlvfilter(c,sync) + if c:GetLevel()>0 then return c:GetSynchroLevel(sync) + elseif c:GetRank()>0 and c:IsHasEffect(511000538) then return c:GetRank() + else return 0 end +end +function c419.matfilter1(c,syncard,tp) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_TUNER) and c419.xyzsyncfilter(c,syncard) and mt.tuner_filter and mt.tuner_filter(c) + and (c:IsControler(tp) or c:IsHasEffect(EFFECT_SYNCHRO_MATERIAL)) +end +function c419.matfilter2(c,syncard,tp) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsNotTuner() and c419.xyzsyncfilter(c,syncard) and mt.nontuner_filter and mt.nontuner_filter(c) + and (c:IsControler(tp) or c:IsHasEffect(EFFECT_SYNCHRO_MATERIAL)) +end +function c419.xyzsyncfilter(c,syncard,mat) + if mat then + return c:IsCanBeSynchroMaterial(syncard,mat) or c:IsHasEffect(511000538) + else + return c:IsCanBeSynchroMaterial(syncard) or c:IsHasEffect(511000538) + end +end +function c419.synop2(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local g=Group.CreateGroup() + local g1=nil + local g2=nil + if mg then + g1=mg:Filter(c419.matfilter1,nil,c,tp) + g2=mg:Filter(c419.matfilter2,nil,c,tp) + else + g1=Duel.GetMatchingGroup(c419.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + g2=Duel.GetMatchingGroup(c419.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + g:AddCard(tuner) + local lv1 + if tuner:GetLevel()>0 then lv1=tuner:GetSynchroLevel(c) + elseif c:IsHasEffect(511000538) then lv1=tuner:GetRank() + else lv1=0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m2=g2:SelectWithSumEqual(tp,c419.xyzlvfilter,lv-lv1,mt.minntct,mt.maxntct,c) + g:Merge(m2) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner=nil + if not pe then + local t1=g1:FilterSelect(tp,c419.synfilter,1,1,nil,c,lv,g2) + tuner=t1:GetFirst() + else + tuner=pe:GetOwner() + Group.FromCards(tuner):Select(tp,1,1,nil) + end + g:AddCard(tuner) + local lv1 + if tuner:GetLevel()>0 then lv1=tuner:GetSynchroLevel(c) + elseif c:IsHasEffect(511000538) then lv1=tuner:GetRank() + else lv1=0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m2=g2:SelectWithSumEqual(tp,c419.xyzlvfilter,lv-lv1,mt.minntct,mt.maxntct,c) + g:Merge(m2) + end + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c419.op4(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsSetCard,0,0x13,0x13,nil,0xe6) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(227)==0 then + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + if mt.spe==nil then + if code==17141718 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c17141718.cfilter,tp,LOCATION_MZONE,0,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + end + elseif code==81752019 then + mt.spe=false + mt.spcon=aux.FALSE() + elseif code==54135423 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c54135423.cfilter,tp,LOCATION_MZONE,0,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + end + elseif code==80630522 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c80630522.cfilter,tp,LOCATION_MZONE,0,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + end + elseif code==16024176 then + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c16024176.hspfilter,1,nil) + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetOriginalCode(),0xe6,c:GetOriginalType(),c:GetOriginalLevel(), + c:GetBaseAttack(),c:GetBaseDefense(),c:GetOriginalRace(),c:GetOriginalAttribute()) + end + elseif code==57261568 then + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c57261568.hspfilter,1,nil) + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetOriginalCode(),0xe6,c:GetOriginalType(),c:GetOriginalLevel(), + c:GetBaseAttack(),c:GetBaseDefense(),c:GetOriginalRace(),c:GetOriginalAttribute()) + end + elseif code==94388754 then + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c94388754.hspfilter,1,nil) + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetOriginalCode(),0xe6,c:GetOriginalType(),c:GetOriginalLevel(), + c:GetBaseAttack(),c:GetBaseDefense(),c:GetOriginalRace(),c:GetOriginalAttribute()) + end + elseif code==43413875 then + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c43413875.hspfilter,1,nil) + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetOriginalCode(),0xe6,c:GetOriginalType(),c:GetOriginalLevel(), + c:GetBaseAttack(),c:GetBaseDefense(),c:GetOriginalRace(),c:GetOriginalAttribute()) + end + elseif code==21772453 then + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c21772453.hspfilter,1,nil) + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetOriginalCode(),0xe6,c:GetOriginalType(),c:GetOriginalLevel(), + c:GetBaseAttack(),c:GetBaseDefense(),c:GetOriginalRace(),c:GetOriginalAttribute()) + end + elseif code==89818984 then + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c89818984.hspfilter,1,nil) + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetOriginalCode(),0xe6,c:GetOriginalType(),c:GetOriginalLevel(), + c:GetBaseAttack(),c:GetBaseDefense(),c:GetOriginalRace(),c:GetOriginalAttribute()) + end + elseif code==16802689 then + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(aux.FALSE) + tc:RegisterEffect(e1) + mt.spe=e1 + mt.spcon=function(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c16802689.hspfilter,1,nil) + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetOriginalCode(),0xe6,c:GetOriginalType(),c:GetOriginalLevel(), + c:GetBaseAttack(),c:GetBaseDefense(),c:GetOriginalRace(),c:GetOriginalAttribute()) + end + end + end + tc:RegisterFlagEffect(227,nil,0,1) + end + tc=g:GetNext() + end +end + +function c419.op5(e,tp,eg,ep,ev,re,r,rp) + --ATK = 285, prev ATK = 284, ATK<=0 = 286 + --LVL = 585, prev LVL = 584 + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(aux.TRUE,tp,0xff,0xff,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(285)==0 and tc:GetFlagEffect(286)==0 and tc:GetFlagEffect(585)==0 then + local atk=tc:GetAttack() + if atk<=0 then + tc:RegisterFlagEffect(286,nil,0,0) + else + tc:RegisterFlagEffect(285,nil,0,1,atk) + tc:RegisterFlagEffect(284,nil,0,1,atk) + end + local lv=tc:GetLevel() + tc:RegisterFlagEffect(585,nil,0,1,lv) + tc:RegisterFlagEffect(584,nil,0,1,lv) + end + tc=g:GetNext() + end +end +function c419.atkcfilter(c) + if c:GetFlagEffect(285)==0 and c:GetFlagEffect(286)==0 then return false end + return c:GetAttack()~=c:GetFlagEffectLabel(285) or (c:GetFlagEffect(286)>0 and c:GetAttack()>0) +end +function c419.lvcfilter(c) + if c:GetFlagEffect(585)==0 then return false end + return c:GetLevel()~=c:GetFlagEffectLabel(585) +end +function c419.atkraiseeff(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c419.atkcfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local g1=Group.CreateGroup() --change atk + local g2=Group.CreateGroup() --gain atk + local g3=Group.CreateGroup() --lose atk + local g4=Group.CreateGroup() --gain atk from original + local tc=g:GetFirst() + while tc do + local prevatk=0 + if tc:GetFlagEffect(285)>0 then prevatk=tc:GetFlagEffectLabel(285) end + g1:AddCard(tc) + if prevatk>tc:GetAttack() then + g3:AddCard(tc) + else + g2:AddCard(tc) + if prevatk<=tc:GetBaseAttack() and tc:GetAttack()>tc:GetBaseAttack() then + g4:AddCard(tc) + end + end + tc:ResetFlagEffect(284) + tc:ResetFlagEffect(285) + tc:ResetFlagEffect(286) + if prevatk>0 then + tc:RegisterFlagEffect(284,nil,0,1,prevatk) + end + if tc:GetAttack()>0 then + tc:RegisterFlagEffect(285,nil,0,1,tc:GetAttack()) + else + tc:RegisterFlagEffect(286,nil,0,0) + end + tc=g:GetNext() + end + Duel.RaiseEvent(g1,511001265,re,REASON_EFFECT,rp,ep,0) + Duel.RaiseEvent(g1,511001441,re,REASON_EFFECT,rp,ep,0) + Duel.RaiseEvent(g2,511001762,re,REASON_EFFECT,rp,ep,0) + Duel.RaiseEvent(g3,511000883,re,REASON_EFFECT,rp,ep,0) + Duel.RaiseEvent(g3,511009110,re,REASON_EFFECT,rp,ep,0) + Duel.RaiseEvent(g4,511002546,re,REASON_EFFECT,rp,ep,0) + + local lvg=Duel.GetMatchingGroup(c419.lvcfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local lvc=lvg:GetFirst() + while lvc do + local prevlv=lvc:GetFlagEffectLabel(585) + lvc:ResetFlagEffect(584) + lvc:ResetFlagEffect(585) + lvc:RegisterFlagEffect(584,nil,0,1,prevlv) + lvc:RegisterFlagEffect(585,nil,0,1,lvc:GetLevel()) + lvc=lvg:GetNext() + end + Duel.RaiseEvent(lvg,511002524,re,REASON_EFFECT,rp,ep,0) + + Duel.RegisterFlagEffect(tp,285,RESET_CHAIN,0,1) + Duel.RegisterFlagEffect(1-tp,285,RESET_CHAIN,0,1) +end +function c419.atkraiseadj(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,285)~=0 or Duel.GetFlagEffect(1-tp,285)~=0 then return end + local g=Duel.GetMatchingGroup(c419.atkcfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local g1=Group.CreateGroup() --change atk + local g2=Group.CreateGroup() --gain atk + local g3=Group.CreateGroup() --lose atk + local g4=Group.CreateGroup() --gain atk from original + local tc=g:GetFirst() + while tc do + local prevatk=0 + if tc:GetFlagEffect(285)>0 then prevatk=tc:GetFlagEffectLabel(285) end + g1:AddCard(tc) + if prevatk>tc:GetAttack() then + g3:AddCard(tc) + else + g2:AddCard(tc) + if prevatk<=tc:GetBaseAttack() and tc:GetAttack()>tc:GetBaseAttack() then + g4:AddCard(tc) + end + end + tc:ResetFlagEffect(284) + tc:ResetFlagEffect(285) + tc:ResetFlagEffect(286) + if prevatk>0 then + tc:RegisterFlagEffect(284,nil,0,1,prevatk) + end + if tc:GetAttack()>0 then + tc:RegisterFlagEffect(285,nil,0,1,tc:GetAttack()) + else + tc:RegisterFlagEffect(286,nil,0,0) + end + tc=g:GetNext() + end + Duel.RaiseEvent(g1,511001265,e,REASON_EFFECT,rp,ep,0) + Duel.RaiseEvent(g2,511001762,e,REASON_EFFECT,rp,ep,0) + Duel.RaiseEvent(g3,511009110,e,REASON_EFFECT,rp,ep,0) + Duel.RaiseEvent(g4,511002546,e,REASON_EFFECT,rp,ep,0) + + local lvg=Duel.GetMatchingGroup(c419.lvcfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local lvc=lvg:GetFirst() + while lvc do + local prevlv=lvc:GetFlagEffectLabel(585) + lvc:ResetFlagEffect(584) + lvc:ResetFlagEffect(585) + lvc:RegisterFlagEffect(584,nil,0,1,prevlv) + lvc:RegisterFlagEffect(585,nil,0,1,lvc:GetLevel()) + lvc=lvg:GetNext() + end + Duel.RaiseEvent(lvg,511002524,e,REASON_EFFECT,rp,ep,0) +end diff --git a/script/c41902352.lua b/script/c41902352.lua index 696ceb3f..c75d4aff 100644 --- a/script/c41902352.lua +++ b/script/c41902352.lua @@ -8,7 +8,16 @@ function c41902352.initial_effect(c) e1:SetCondition(c41902352.synlimit) e1:SetValue(1) c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SPSUMMON_COST) + e2:SetCost(c41902352.spcost) + c:RegisterEffect(e2) end function c41902352.synlimit(e) return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL end +function c41902352.spcost(e,c,tp,sumtype) + return sumtype~=SUMMON_TYPE_SPECIAL+182 +end diff --git a/script/c4192696.lua b/script/c4192696.lua index c3d82623..eec54f8a 100644 --- a/script/c4192696.lua +++ b/script/c4192696.lua @@ -1,45 +1,45 @@ ---森の聖霊 エーコ -function c4192696.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(4192696,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EVENT_DAMAGE) - e1:SetCondition(c4192696.spcon) - e1:SetTarget(c4192696.sptg) - e1:SetOperation(c4192696.spop) - c:RegisterEffect(e1) -end -function c4192696.spcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp and tp~=rp and bit.band(r,REASON_EFFECT)~=0 -end -function c4192696.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) -end -function c4192696.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - Duel.Damage(1-tp,ev,REASON_EFFECT) - 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,1) - e1:SetValue(c4192696.damval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - end -end -function c4192696.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 - else return val end -end +--森の聖霊 エーコ +function c4192696.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4192696,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c4192696.spcon) + e1:SetTarget(c4192696.sptg) + e1:SetOperation(c4192696.spop) + c:RegisterEffect(e1) +end +function c4192696.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and tp~=rp and bit.band(r,REASON_EFFECT)~=0 +end +function c4192696.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c4192696.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Damage(1-tp,ev,REASON_EFFECT) + 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,1) + e1:SetValue(c4192696.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c4192696.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end diff --git a/script/c41940225.lua b/script/c41940225.lua index f68bc449..eaf0f27d 100644 --- a/script/c41940225.lua +++ b/script/c41940225.lua @@ -1,101 +1,108 @@ ---破壊剣士融合 -function c41940225.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(41940225,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,41940225) - e1:SetTarget(c41940225.target) - e1:SetOperation(c41940225.activate) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(41940225,1)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,41940226) - e2:SetCost(c41940225.thcost) - e2:SetTarget(c41940225.thtg) - e2:SetOperation(c41940225.thop) - c:RegisterEffect(e2) -end -function c41940225.filter0(c,tp) - return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() -end -function c41940225.filter1(c,e,tp) - return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c41940225.filter2(c,e,tp,m,f,chkf) - return c41940225.spfilter(c) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c41940225.spfilter(c) - return aux.IsMaterialListCode(c,78193831) -end -function c41940225.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c41940225.filter0,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,tp) - local res=Duel.IsExistingMatchingCard(c41940225.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c41940225.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c41940225.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c41940225.filter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,e,tp) - local sg1=Duel.GetMatchingGroup(c41940225.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c41940225.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end -function c41940225.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) -end -function c41940225.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c41940225.thop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) - end -end +--破壊剣士融合 +function c41940225.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41940225,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,41940225) + e1:SetTarget(c41940225.target) + e1:SetOperation(c41940225.activate) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(41940225,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,41940226) + e2:SetCost(c41940225.thcost) + e2:SetTarget(c41940225.thtg) + e2:SetOperation(c41940225.thop) + c:RegisterEffect(e2) +end +function c41940225.filter0(c) + return c:IsFaceup() and c:IsCanBeFusionMaterial() +end +function c41940225.filter1(c,e) + return c:IsFaceup() and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c41940225.filter2(c,e,tp,m,f,chkf) + return c41940225.spfilter(c) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c41940225.filter3(c,e) + return not c:IsImmuneToEffect(e) +end +function c41940225.spfilter(c) + return aux.IsMaterialListCode(c,78193831) +end +function c41940225.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local mg2=Duel.GetMatchingGroup(c41940225.filter0,tp,0,LOCATION_MZONE,nil) + mg1:Merge(mg2) + local res=Duel.IsExistingMatchingCard(c41940225.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c41940225.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c41940225.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c41940225.filter3,nil,e) + local mg2=Duel.GetMatchingGroup(c41940225.filter1,tp,0,LOCATION_MZONE,nil,e) + mg1:Merge(mg2) + local sg1=Duel.GetMatchingGroup(c41940225.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg3=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c41940225.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c41940225.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c41940225.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c41940225.thop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + end +end diff --git a/script/c42002073.lua b/script/c42002073.lua index 57051af8..665c5cca 100644 --- a/script/c42002073.lua +++ b/script/c42002073.lua @@ -1,116 +1,126 @@ ---EMトランプ・ガール -function c42002073.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - -- - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c42002073.target) - e2:SetOperation(c42002073.operation) - c:RegisterEffect(e2) - -- - local e6=Effect.CreateEffect(c) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e6:SetCode(EVENT_DESTROYED) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e6:SetCondition(c42002073.spcon) - e6:SetTarget(c42002073.sptg) - e6:SetOperation(c42002073.spop) - c:RegisterEffect(e6) -end -function c42002073.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c42002073.filter2(c,e,tp,m,f,gc) - return c:IsType(TYPE_FUSION) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) -end -function c42002073.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,c) - local res=Duel.IsExistingMatchingCard(c42002073.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c42002073.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c42002073.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end - local mg1=Duel.GetMatchingGroup(c42002073.filter1,tp,LOCATION_MZONE,0,c,e) - local sg1=Duel.GetMatchingGroup(c42002073.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c42002073.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end - -function c42002073.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_SZONE) and (c:GetPreviousSequence()==6 or c:GetPreviousSequence()==7) -end -function c42002073.spfilter(c,e,tp) - return c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c42002073.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c42002073.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c42002073.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c42002073.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c42002073.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetOperation(c42002073.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - tc:RegisterEffect(e1,true) - end -end -function c42002073.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--EMトランプ・ガール +function c42002073.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c42002073.target) + e2:SetOperation(c42002073.operation) + c:RegisterEffect(e2) + -- + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_DESTROYED) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e6:SetCondition(c42002073.spcon) + e6:SetTarget(c42002073.sptg) + e6:SetOperation(c42002073.spop) + c:RegisterEffect(e6) +end +function c42002073.filter1(c,e) + return c:IsOnField() and not c:IsImmuneToEffect(e) +end +function c42002073.filter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) +end +function c42002073.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,c) + local res=Duel.IsExistingMatchingCard(c42002073.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c42002073.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c42002073.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end + local mg1=Duel.GetFusionMaterial(tp):Filter(c42002073.filter1,c,e) + local sg1=Duel.GetMatchingGroup(c42002073.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c42002073.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end + +function c42002073.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_SZONE) and (c:GetPreviousSequence()==6 or c:GetPreviousSequence()==7) +end +function c42002073.spfilter(c,e,tp) + return c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c42002073.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c42002073.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c42002073.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c42002073.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c42002073.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(42002073,RESET_EVENT+0x1fe0000,0,1,fid) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c42002073.descon) + e1:SetOperation(c42002073.desop) + Duel.RegisterEffect(e1,tp) + end +end +function c42002073.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(42002073)~=e:GetLabel() then + e:Reset() + return false + else return true end +end +function c42002073.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) +end diff --git a/script/c42015635.lua b/script/c42015635.lua index c7b03c83..48211c09 100644 --- a/script/c42015635.lua +++ b/script/c42015635.lua @@ -1,27 +1,27 @@ ---ネオスペース -function c42015635.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c42015635.atktg) - e2:SetValue(500) - c:RegisterEffect(e2) - --may not return - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(42015635) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - c:RegisterEffect(e3) -end -function c42015635.atktg(e,c) - return c:IsCode(89943723) or (c:IsSetCard(0x9) and c:IsType(TYPE_FUSION) and not c:IsCode(31111109)) -end +--ネオスペース +function c42015635.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c42015635.atktg) + e2:SetValue(500) + c:RegisterEffect(e2) + --may not return + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(42015635) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e3) +end +function c42015635.atktg(e,c) + return c:IsCode(89943723) or aux.IsMaterialListCode(c,89943723) +end diff --git a/script/c42023223.lua b/script/c42023223.lua index e2b82e22..c8fbe2ad 100644 --- a/script/c42023223.lua +++ b/script/c42023223.lua @@ -21,6 +21,7 @@ function c42023223.initial_effect(c) e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetCode(EVENT_FREE_CHAIN) e3:SetRange(LOCATION_MZONE) + e3:SetHintTiming(0,TIMING_END_PHASE) e3:SetCondition(c42023223.spcon) e3:SetCost(c42023223.spcost) e3:SetTarget(c42023223.sptg) diff --git a/script/c4215636.lua b/script/c4215636.lua index 50215e28..61cf52fc 100644 --- a/script/c4215636.lua +++ b/script/c4215636.lua @@ -1,54 +1,54 @@ ---霞の谷の祭壇 -function c4215636.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetDescription(aux.Stringid(4215636,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1) - e2:SetCondition(c4215636.condition) - e2:SetTarget(c4215636.target) - e2:SetOperation(c4215636.operation) - c:RegisterEffect(e2) -end -function c4215636.cfilter(c,tp) - return bit.band(c:GetReason(),0x41)==0x41 and c:IsControler(tp) and c:IsAttribute(ATTRIBUTE_WIND) -end -function c4215636.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c4215636.cfilter,1,nil,tp) -end -function c4215636.spfilter(c,e,tp) - return c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WIND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c4215636.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and not e:GetHandler():IsStatus(STATUS_CHAINING) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c4215636.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) -end -function c4215636.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c4215636.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - Duel.SpecialSummonComplete() - end -end +--霞の谷の祭壇 +function c4215636.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetDescription(aux.Stringid(4215636,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1) + e2:SetCondition(c4215636.condition) + e2:SetTarget(c4215636.target) + e2:SetOperation(c4215636.operation) + c:RegisterEffect(e2) +end +function c4215636.cfilter(c,tp) + return bit.band(c:GetReason(),0x41)==0x41 and c:IsControler(tp) and c:IsAttribute(ATTRIBUTE_WIND) +end +function c4215636.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c4215636.cfilter,1,nil,tp) +end +function c4215636.spfilter(c,e,tp) + return c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WIND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c4215636.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c4215636.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c4215636.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c4215636.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c42199039.lua b/script/c42199039.lua index 5119d4cf..c426ebf8 100644 --- a/script/c42199039.lua +++ b/script/c42199039.lua @@ -1,92 +1,64 @@ ---妖刀竹光 -function c42199039.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(c42199039.target) - e1:SetOperation(c42199039.activate) - 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) - --direct - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(42199039,0)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1,42199039) - e3:SetTarget(c42199039.dttg) - e3:SetOperation(c42199039.dtop) - c:RegisterEffect(e3) - --search - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(42199039,1)) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetTarget(c42199039.thtg) - e4:SetOperation(c42199039.thop) - c:RegisterEffect(e4) -end -function c42199039.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 c42199039.activate(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 c42199039.filter(c) - return c:IsFaceup() and c:IsSetCard(0x60) and c:IsAbleToHand() -end -function c42199039.dttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c42199039.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c42199039.filter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c42199039.filter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c42199039.dtop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then - Duel.ConfirmCards(1-tp,tc) - local ec=c:GetEquipTarget() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - ec:RegisterEffect(e1) - end -end -function c42199039.thfilter(c) - return c:IsSetCard(0x60) and not c:IsCode(42199039) and c:IsAbleToHand() -end -function c42199039.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c42199039.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c42199039.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c42199039.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--妖刀竹光 +function c42199039.initial_effect(c) + aux.AddEquipProcedure(c) + --direct + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(42199039,0)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,42199039) + e3:SetTarget(c42199039.dttg) + e3:SetOperation(c42199039.dtop) + c:RegisterEffect(e3) + --search + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(42199039,1)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetTarget(c42199039.thtg) + e4:SetOperation(c42199039.thop) + c:RegisterEffect(e4) +end +function c42199039.filter(c) + return c:IsFaceup() and c:IsSetCard(0x60) and c:IsAbleToHand() +end +function c42199039.dttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c42199039.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c42199039.filter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c42199039.filter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c42199039.dtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then + Duel.ConfirmCards(1-tp,tc) + local ec=c:GetEquipTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + ec:RegisterEffect(e1) + end +end +function c42199039.thfilter(c) + return c:IsSetCard(0x60) and not c:IsCode(42199039) and c:IsAbleToHand() +end +function c42199039.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c42199039.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c42199039.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c42199039.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c42256406.lua b/script/c42256406.lua index 6c9398b2..7719e46d 100644 --- a/script/c42256406.lua +++ b/script/c42256406.lua @@ -1,88 +1,91 @@ ---カードブロッカー -function c42256406.initial_effect(c) - --to defense - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(42256406,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c42256406.potg) - e1:SetOperation(c42256406.poop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --change battle target - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(42256406,1)) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_BE_BATTLE_TARGET) - e4:SetRange(LOCATION_MZONE) - e4:SetCondition(c42256406.cbcon) - e4:SetTarget(c42256406.cbtg) - e4:SetOperation(c42256406.cbop) - c:RegisterEffect(e4) - --def - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(42256406,2)) - e5:SetCategory(CATEGORY_DEFCHANGE) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e5:SetCode(EVENT_BE_BATTLE_TARGET) - e5:SetCost(c42256406.defcost) - e5:SetOperation(c42256406.defop) - c:RegisterEffect(e5) -end -function c42256406.potg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return e:GetHandler():IsAttackPos() end - Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) -end -function c42256406.poop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end -end -function c42256406.cbcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bt=eg:GetFirst() - return r~=REASON_REPLACE and c~=bt and bt:IsFaceup() and bt:GetControler()==c:GetControler() -end -function c42256406.cbtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetAttacker():GetAttackableTarget():IsContains(e:GetHandler()) end -end -function c42256406.cbop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and not Duel.GetAttacker():IsImmuneToEffect(e) then - Duel.ChangeAttackTarget(c) - end -end -function c42256406.defcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct==1 then - Duel.DiscardDeck(tp,1,REASON_COST) - e:SetLabel(1) - else - local ac=0 - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(42256406,3)) - if ct==2 then ac=Duel.AnnounceNumber(tp,1,2) - else ac=Duel.AnnounceNumber(tp,1,2,3) end - Duel.DiscardDeck(tp,ac,REASON_COST) - e:SetLabel(ac) - end -end -function c42256406.defop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - local ct=e:GetLabel() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_DEFENSE) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - e1:SetValue(ct*500) - c:RegisterEffect(e1) - end -end +--カードブロッカー +function c42256406.initial_effect(c) + --to defense + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(42256406,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c42256406.potg) + e1:SetOperation(c42256406.poop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --change battle target + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(42256406,1)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BE_BATTLE_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c42256406.cbcon) + e4:SetTarget(c42256406.cbtg) + e4:SetOperation(c42256406.cbop) + c:RegisterEffect(e4) + --def + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(42256406,2)) + e5:SetCategory(CATEGORY_DEFCHANGE) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BE_BATTLE_TARGET) + e5:SetCost(c42256406.defcost) + e5:SetOperation(c42256406.defop) + c:RegisterEffect(e5) +end +function c42256406.potg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c42256406.poop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c42256406.cbcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return r~=REASON_REPLACE and c~=bt and bt:IsFaceup() and bt:GetControler()==c:GetControler() +end +function c42256406.cbtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttacker():GetAttackableTarget():IsContains(e:GetHandler()) end +end +function c42256406.cbop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and not Duel.GetAttacker():IsImmuneToEffect(e) then + Duel.ChangeAttackTarget(c) + end +end +function c42256406.defcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end + local ct={} + for i=3,1,-1 do + if Duel.IsPlayerCanDiscardDeckAsCost(tp,i) then + table.insert(ct,i) + end + end + if #ct==1 then + Duel.DiscardDeck(tp,ct[1],REASON_COST) + e:SetLabel(1) + else + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(42256406,3)) + local ac=Duel.AnnounceNumber(tp,table.unpack(ct)) + Duel.DiscardDeck(tp,ac,REASON_COST) + e:SetLabel(ac) + end +end +function c42256406.defop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local ct=e:GetLabel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e1:SetValue(ct*500) + c:RegisterEffect(e1) + end +end diff --git a/script/c4227096.lua b/script/c4227096.lua index 53b5dae9..878223d3 100644 --- a/script/c4227096.lua +++ b/script/c4227096.lua @@ -1,21 +1,21 @@ ---捕違い -function c4227096.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetOperation(c4227096.activate) - c:RegisterEffect(e1) -end -function c4227096.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_TO_HAND) - e1:SetTargetRange(LOCATION_DECK,LOCATION_DECK) - if Duel.GetTurnPlayer()==tp then - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) - end - Duel.RegisterEffect(e1,tp) -end +--捕違い +function c4227096.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c4227096.activate) + c:RegisterEffect(e1) +end +function c4227096.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_TO_HAND) + e1:SetTargetRange(LOCATION_DECK,LOCATION_DECK) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c42291297.lua b/script/c42291297.lua index 64cdab92..b279aa9a 100644 --- a/script/c42291297.lua +++ b/script/c42291297.lua @@ -24,6 +24,7 @@ function c42291297.initial_effect(c) --cannot be target local e3=e2:Clone() e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetValue(aux.tgoval) c:RegisterEffect(e3) --damage diff --git a/script/c42309337.lua b/script/c42309337.lua index ae88f31c..4ab9ab0f 100644 --- a/script/c42309337.lua +++ b/script/c42309337.lua @@ -21,8 +21,7 @@ function c42309337.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c42309337.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c42364257.lua b/script/c42364257.lua index bc4dcac0..244a7ebb 100644 --- a/script/c42364257.lua +++ b/script/c42364257.lua @@ -16,11 +16,12 @@ end function c42364257.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) - local g=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) + local g=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) end function c42364257.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) - local g=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) - Duel.Destroy(g,REASON_EFFECT) + if Duel.NegateEffect(ev) then + local g=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) + Duel.Destroy(g,REASON_EFFECT) + end end diff --git a/script/c42386471.lua b/script/c42386471.lua index 2156e606..a71d65dc 100644 --- a/script/c42386471.lua +++ b/script/c42386471.lua @@ -1,78 +1,78 @@ ---トゥーン・ヂェミナイ・エルフ -function c42386471.initial_effect(c) - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c42386471.atklimit) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c42386471.sdescon) - e4:SetOperation(c42386471.sdesop) - c:RegisterEffect(e4) - --direct attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_DIRECT_ATTACK) - e5:SetCondition(c42386471.dircon) - c:RegisterEffect(e5) - --handes - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(42386471,0)) - e6:SetCategory(CATEGORY_HANDES) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e6:SetCode(EVENT_BATTLE_DAMAGE) - e6:SetCondition(c42386471.condition) - e6:SetTarget(c42386471.target) - e6:SetOperation(c42386471.operation) - c:RegisterEffect(e6) -end -function c42386471.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c42386471.sfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c42386471.sdescon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c42386471.sfilter,1,nil) -end -function c42386471.sdesop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c42386471.dirfilter1(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c42386471.dirfilter2(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c42386471.dircon(e) - return Duel.IsExistingMatchingCard(c42386471.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) - and not Duel.IsExistingMatchingCard(c42386471.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c42386471.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c42386471.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(ep,LOCATION_HAND,0)>0 end - Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1) -end -function c42386471.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(ep,LOCATION_HAND,0) - if g:GetCount()==0 then return end - local sg=g:RandomSelect(1-tp,1) - Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) -end +--トゥーン・ヂェミナイ・エルフ +function c42386471.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c42386471.atklimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c42386471.sdescon) + e4:SetOperation(c42386471.sdesop) + c:RegisterEffect(e4) + --direct attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DIRECT_ATTACK) + e5:SetCondition(c42386471.dircon) + c:RegisterEffect(e5) + --handes + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(42386471,0)) + e6:SetCategory(CATEGORY_HANDES) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_BATTLE_DAMAGE) + e6:SetCondition(c42386471.condition) + e6:SetTarget(c42386471.target) + e6:SetOperation(c42386471.operation) + c:RegisterEffect(e6) +end +function c42386471.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c42386471.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c42386471.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c42386471.sfilter,1,nil) +end +function c42386471.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c42386471.dirfilter1(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c42386471.dirfilter2(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c42386471.dircon(e) + return Duel.IsExistingMatchingCard(c42386471.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) + and not Duel.IsExistingMatchingCard(c42386471.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c42386471.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c42386471.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(ep,LOCATION_HAND,0)>0 end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1) +end +function c42386471.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(ep,LOCATION_HAND,0) + if g:GetCount()==0 then return end + local sg=g:RandomSelect(1-tp,1) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) +end diff --git a/script/c4239451.lua b/script/c4239451.lua index 3d7dfe63..e793674a 100644 --- a/script/c4239451.lua +++ b/script/c4239451.lua @@ -1,82 +1,82 @@ ---EMヒックリカエル -function c4239451.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --swap1 - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(4239451,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c4239451.adtg1) - e2:SetOperation(c4239451.adop1) - c:RegisterEffect(e2) - --swap2 - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(4239451,1)) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetCondition(c4239451.adcon2) - e3:SetTarget(c4239451.adtg2) - e3:SetOperation(c4239451.adop2) - c:RegisterEffect(e3) -end -function c4239451.filter(c) - return c:IsFaceup() -end -function c4239451.adtg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c4239451.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c4239451.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c4239451.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c4239451.adop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local atk=tc:GetAttack() - local def=tc:GetDefense() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SWAP_ATTACK_FINAL) - e1:SetValue(def) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SWAP_DEFENSE_FINAL) - e2:SetValue(atk) - tc:RegisterEffect(e2) - end -end -function c4239451.adcon2(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) and Duel.GetCurrentChain()==0 -end -function c4239451.adtg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) end - if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) -end -function c4239451.adop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) - and Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK)~=0 then - local atk=tc:GetAttack() - local def=tc:GetDefense() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SWAP_ATTACK_FINAL) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(def) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SWAP_DEFENSE_FINAL) - e2:SetValue(atk) - tc:RegisterEffect(e2) - end -end +--EMヒックリカエル +function c4239451.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --swap1 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4239451,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c4239451.adtg1) + e2:SetOperation(c4239451.adop1) + c:RegisterEffect(e2) + --swap2 + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(4239451,1)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetCondition(c4239451.adcon2) + e3:SetTarget(c4239451.adtg2) + e3:SetOperation(c4239451.adop2) + c:RegisterEffect(e3) +end +function c4239451.filter(c) + return c:IsFaceup() +end +function c4239451.adtg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c4239451.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c4239451.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c4239451.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c4239451.adop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + local def=tc:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SWAP_ATTACK_FINAL) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SWAP_DEFENSE_FINAL) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end +end +function c4239451.adcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) and Duel.GetCurrentChain()==0 +end +function c4239451.adtg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) +end +function c4239451.adop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) + and Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK)~=0 then + local atk=tc:GetAttack() + local def=tc:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SWAP_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SWAP_DEFENSE_FINAL) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end +end diff --git a/script/c42421606.lua b/script/c42421606.lua index 97df7231..cade8125 100644 --- a/script/c42421606.lua +++ b/script/c42421606.lua @@ -11,6 +11,7 @@ function c42421606.initial_effect(c) -- local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(42421606,0)) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetCategory(CATEGORY_DICE) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) diff --git a/script/c4252828.lua b/script/c4252828.lua index 3325af29..efec2eef 100644 --- a/script/c4252828.lua +++ b/script/c4252828.lua @@ -1,79 +1,79 @@ ---シー・アーチャー -function c4252828.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(4252828,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c4252828.eqcon) - e1:SetTarget(c4252828.eqtg) - e1:SetOperation(c4252828.eqop) - c:RegisterEffect(e1) - --Destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetTarget(c4252828.desreptg) - e2:SetOperation(c4252828.desrepop) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) -end -function c4252828.eqcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ec=e:GetLabelObject() - return ec==nil or not ec:IsHasCardTarget(c) or ec:GetFlagEffect(4252828)==0 -end -function c4252828.filter(c) - return c:IsFaceup() and c:IsLevelBelow(3) -end -function c4252828.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c4252828.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c4252828.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c4252828.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c4252828.eqlimit(e,c) - return e:GetOwner()==c -end -function c4252828.eqop(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:IsType(TYPE_MONSTER) then - if c:IsFaceup() and c:IsRelateToEffect(e) then - if not Duel.Equip(tp,tc,c,false) then return end - --Add Equip limit - tc:RegisterFlagEffect(4252828,RESET_EVENT+0x1fe0000,0,0) - e:SetLabelObject(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c4252828.eqlimit) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(800) - tc:RegisterEffect(e2) - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c4252828.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local ec=e:GetLabelObject():GetLabelObject() - if chk==0 then return ec and ec:IsHasCardTarget(c) - and not ec:IsStatus(STATUS_DESTROY_CONFIRMED) and ec:GetFlagEffect(4252828)~=0 end - return Duel.SelectYesNo(tp,aux.Stringid(4252828,1)) -end -function c4252828.desrepop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetLabelObject():GetLabelObject(),REASON_EFFECT+REASON_REPLACE) -end +--シー・アーチャー +function c4252828.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4252828,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c4252828.eqcon) + e1:SetTarget(c4252828.eqtg) + e1:SetOperation(c4252828.eqop) + c:RegisterEffect(e1) + --Destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetTarget(c4252828.desreptg) + e2:SetOperation(c4252828.desrepop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c4252828.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=e:GetLabelObject() + return ec==nil or not ec:IsHasCardTarget(c) or ec:GetFlagEffect(4252828)==0 +end +function c4252828.filter(c) + return c:IsFaceup() and c:IsLevelBelow(3) +end +function c4252828.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c4252828.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c4252828.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c4252828.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c4252828.eqlimit(e,c) + return e:GetOwner()==c +end +function c4252828.eqop(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:IsType(TYPE_MONSTER) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + tc:RegisterFlagEffect(4252828,RESET_EVENT+0x1fe0000,0,0) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c4252828.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(800) + tc:RegisterEffect(e2) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c4252828.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ec=e:GetLabelObject():GetLabelObject() + if chk==0 then return ec and ec:IsHasCardTarget(c) + and not ec:IsStatus(STATUS_DESTROY_CONFIRMED) and ec:GetFlagEffect(4252828)~=0 end + return Duel.SelectYesNo(tp,aux.Stringid(4252828,1)) +end +function c4252828.desrepop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetLabelObject():GetLabelObject(),REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c42551040.lua b/script/c42551040.lua index 067e1b0d..b2bd985b 100644 --- a/script/c42551040.lua +++ b/script/c42551040.lua @@ -1,46 +1,46 @@ ---武神器-イクタ -function c42551040.initial_effect(c) - --position - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(42551040,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCondition(c42551040.poscon) - e1:SetCost(c42551040.poscost) - e1:SetTarget(c42551040.postg) - e1:SetOperation(c42551040.posop) - c:RegisterEffect(e1) -end -function c42551040.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x88) -end -function c42551040.poscon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c42551040.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c42551040.poscost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c42551040.filter(c) - return c:IsPosition(POS_FACEUP_ATTACK) -end -function c42551040.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c42551040.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c42551040.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,c42551040.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) -end -function c42551040.posop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.ChangePosition(tc,POS_FACEUP_DEFENSE)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_DEFENSE_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--武神器-イクタ +function c42551040.initial_effect(c) + --position + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(42551040,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c42551040.poscon) + e1:SetCost(c42551040.poscost) + e1:SetTarget(c42551040.postg) + e1:SetOperation(c42551040.posop) + c:RegisterEffect(e1) +end +function c42551040.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x88) +end +function c42551040.poscon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c42551040.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c42551040.poscost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c42551040.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) +end +function c42551040.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c42551040.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c42551040.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,c42551040.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c42551040.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.ChangePosition(tc,POS_FACEUP_DEFENSE)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c42589641.lua b/script/c42589641.lua index c9c4d414..4ce3e558 100644 --- a/script/c42589641.lua +++ b/script/c42589641.lua @@ -31,7 +31,7 @@ function c42589641.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(42589641,1)) e4:SetCategory(CATEGORY_TOGRAVE) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_PLAYER_TARGET) e4:SetType(EFFECT_TYPE_IGNITION) e4:SetRange(LOCATION_MZONE) e4:SetCountLimit(1) diff --git a/script/c42592719.lua b/script/c42592719.lua index 1c79348e..ae7a9a7a 100644 --- a/script/c42592719.lua +++ b/script/c42592719.lua @@ -1,66 +1,66 @@ ---剣闘獣アレクサンデル -function c42592719.initial_effect(c) - --immune spell - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c42592719.imcon) - e1:SetValue(c42592719.imfilter) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(42592719,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_BATTLE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c42592719.spcon) - e2:SetCost(c42592719.spcost) - e2:SetTarget(c42592719.sptg) - e2:SetOperation(c42592719.spop) - c:RegisterEffect(e2) - --spsummon limit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(c42592719.splimit) - c:RegisterEffect(e3) -end -function c42592719.splimit(e,se,sp,st) - return st==(SUMMON_TYPE_SPECIAL+107) or bit.band(st,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c42592719.imcon(e) - return e:GetHandler():GetFlagEffect(42592719)>0 -end -function c42592719.imfilter(e,te) - return te:IsActiveType(TYPE_SPELL) -end -function c42592719.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetBattledGroupCount()>0 -end -function c42592719.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToDeckAsCost() end - Duel.SendtoDeck(c,nil,2,REASON_COST) -end -function c42592719.filter(c,e,tp) - return not c:IsCode(42592719) and c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,111,tp,false,false) -end -function c42592719.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c42592719.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c42592719.spop(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,c42592719.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,111,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) - end -end +--剣闘獣アレクサンデル +function c42592719.initial_effect(c) + --immune spell + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c42592719.imcon) + e1:SetValue(c42592719.imfilter) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(42592719,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c42592719.spcon) + e2:SetCost(c42592719.spcost) + e2:SetTarget(c42592719.sptg) + e2:SetOperation(c42592719.spop) + c:RegisterEffect(e2) + --spsummon limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(c42592719.splimit) + c:RegisterEffect(e3) +end +function c42592719.splimit(e,se,sp,st) + return st==(SUMMON_TYPE_SPECIAL+107) or bit.band(st,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c42592719.imcon(e) + return e:GetHandler():GetFlagEffect(42592719)>0 +end +function c42592719.imfilter(e,te) + return te:IsActiveType(TYPE_SPELL) +end +function c42592719.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 +end +function c42592719.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToDeckAsCost() end + Duel.SendtoDeck(c,nil,2,REASON_COST) +end +function c42592719.filter(c,e,tp) + return not c:IsCode(42592719) and c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,111,tp,false,false) +end +function c42592719.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c42592719.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c42592719.spop(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,c42592719.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,111,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + end +end diff --git a/script/c42600274.lua b/script/c42600274.lua new file mode 100644 index 00000000..8ea75e38 --- /dev/null +++ b/script/c42600274.lua @@ -0,0 +1,63 @@ +--サイバー・チュチュボン +function c42600274.initial_effect(c) + --spsummon from hand + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(c42600274.hspcon) + e1:SetOperation(c42600274.hspop) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_RELEASE) + e2:SetCondition(c42600274.thcon) + e2:SetTarget(c42600274.thtg) + e2:SetOperation(c42600274.thop) + c:RegisterEffect(e2) +end +function c42600274.hspfilter(c,tp) + return c:IsRace(RACE_WARRIOR+RACE_FAIRY) and c:IsControler(tp) +end +function c42600274.hspcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ct=0 + if Duel.CheckReleaseGroup(tp,c42600274.hspfilter,1,nil,tp) then ct=ct-1 end + return Duel.GetLocationCount(tp,LOCATION_MZONE)>ct + and Duel.CheckReleaseGroupEx(tp,Card.IsRace,1,e:GetHandler(),RACE_WARRIOR+RACE_FAIRY) +end +function c42600274.hspop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=nil + if ft>0 then + g=Duel.SelectReleaseGroupEx(tp,Card.IsRace,1,1,e:GetHandler(),RACE_WARRIOR+RACE_FAIRY) + else + g=Duel.SelectReleaseGroup(tp,c42600274.hspfilter,1,1,nil,tp) + end + Duel.Release(g,REASON_COST) + c:RegisterFlagEffect(0,RESET_EVENT+0x4fc0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(42600274,0)) +end +function c42600274.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_RITUAL) +end +function c42600274.thfilter(c) + return c:GetType()==0x82 and c:IsAbleToHand() +end +function c42600274.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c42600274.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c42600274.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c42600274.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c42600274.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c42647539.lua b/script/c42647539.lua index 184aadd4..1cd128bd 100644 --- a/script/c42647539.lua +++ b/script/c42647539.lua @@ -5,7 +5,7 @@ function c42647539.initial_effect(c) e1:SetDescription(aux.Stringid(42647539,0)) e1:SetCategory(CATEGORY_POSITION) e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) e1:SetCode(EVENT_SUMMON_SUCCESS) e1:SetTarget(c42647539.postg) e1:SetOperation(c42647539.posop) @@ -19,14 +19,14 @@ function c42647539.initial_effect(c) end function c42647539.postg(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 + if chk==0 then return true end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) end function c42647539.posop(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) end end diff --git a/script/c42685062.lua b/script/c42685062.lua index 405fee3a..afc7c7e4 100644 --- a/script/c42685062.lua +++ b/script/c42685062.lua @@ -17,9 +17,9 @@ function c42685062.initial_effect(c) e2:SetValue(SUMMON_TYPE_ADVANCE) c:RegisterEffect(e2) end -function c42685062.sumcon(e,c) +function c42685062.sumcon(e,c,minc) if c==nil then return true end - return Duel.GetTributeCount(c)~=0 + return minc<=1 and Duel.CheckTribute(c,1) end function c42685062.sumop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,1,1) diff --git a/script/c42709949.lua b/script/c42709949.lua index 3c184ba5..6795d35f 100644 --- a/script/c42709949.lua +++ b/script/c42709949.lua @@ -1,5 +1,6 @@ --守護神の矛 function c42709949.initial_effect(c) + aux.AddEquipProcedure(c) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_EQUIP) @@ -23,19 +24,6 @@ function c42709949.initial_effect(c) e3:SetValue(1) c:RegisterEffect(e3) end -function c42709949.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 c42709949.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 c42709949.value(e,c) return Duel.GetMatchingGroupCount(Card.IsCode,0,LOCATION_GRAVE,LOCATION_GRAVE,nil,c:GetCode())*900 end diff --git a/script/c42752141.lua b/script/c42752141.lua index 9b617625..8ae2ce85 100644 --- a/script/c42752141.lua +++ b/script/c42752141.lua @@ -7,7 +7,7 @@ function c42752141.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(42752141,0)) e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_CHAINING) @@ -33,8 +33,7 @@ function c42752141.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c42752141.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c42776855.lua b/script/c42776855.lua index e1838967..2ad15392 100644 --- a/script/c42776855.lua +++ b/script/c42776855.lua @@ -1,107 +1,107 @@ ---追走の翼 -function c42776855.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c42776855.target) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_CHAIN_SOLVED) - e2:SetLabelObject(e1) - e2:SetCondition(c42776855.tgcon) - e2:SetOperation(c42776855.tgop) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(c42776855.indestg) - e3:SetValue(1) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e4:SetValue(c42776855.efilter) - c:RegisterEffect(e4) - --destroy - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(42776855,0)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e5:SetCode(EVENT_BATTLE_START) - e5:SetRange(LOCATION_SZONE) - e5:SetCondition(c42776855.atkcon) - e5:SetOperation(c42776855.atkop) - c:RegisterEffect(e5) - --Destroy2 - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e7:SetRange(LOCATION_SZONE) - e7:SetCode(EVENT_LEAVE_FIELD) - e7:SetProperty(EFFECT_FLAG_DELAY) - e7:SetCondition(c42776855.descon2) - e7:SetOperation(c42776855.desop2) - c:RegisterEffect(e7) -end -function c42776855.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) -end -function c42776855.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c42776855.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c42776855.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c42776855.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c42776855.tgcon(e,tp,eg,ep,ev,re,r,rp) - return re==e:GetLabelObject() -end -function c42776855.tgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() - if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then - c:SetCardTarget(tc) - end -end -function c42776855.indestg(e,c) - return e:GetHandler():IsHasCardTarget(c) -end -function c42776855.efilter(e,re) - return e:GetOwnerPlayer()~=re:GetOwnerPlayer() -end -function c42776855.atkcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=c:GetFirstCardTarget() - if not tc then return false end - local bc=tc:GetBattleTarget() - return tc:IsLocation(LOCATION_MZONE) and bc and bc:IsFaceup() and bc:IsLocation(LOCATION_MZONE) and bc:IsLevelAbove(5) -end -function c42776855.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local tc=c:GetFirstCardTarget() - if not tc then return false end - local bc=tc:GetBattleTarget() - local atk=bc:GetBaseAttack() - if bc:IsRelateToBattle() and Duel.Destroy(bc,REASON_EFFECT)~=0 and bc:IsType(TYPE_MONSTER) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c42776855.descon2(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - return tc and eg:IsContains(tc) -end -function c42776855.desop2(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--追走の翼 +function c42776855.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c42776855.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(c42776855.tgcon) + e2:SetOperation(c42776855.tgop) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c42776855.indestg) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(c42776855.efilter) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(42776855,0)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BATTLE_START) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c42776855.atkcon) + e5:SetOperation(c42776855.atkop) + c:RegisterEffect(e5) + --Destroy2 + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e7:SetRange(LOCATION_SZONE) + e7:SetCode(EVENT_LEAVE_FIELD) + e7:SetProperty(EFFECT_FLAG_DELAY) + e7:SetCondition(c42776855.descon2) + e7:SetOperation(c42776855.desop2) + c:RegisterEffect(e7) +end +function c42776855.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c42776855.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c42776855.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c42776855.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c42776855.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c42776855.tgcon(e,tp,eg,ep,ev,re,r,rp) + return re==e:GetLabelObject() +end +function c42776855.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() + if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then + c:SetCardTarget(tc) + end +end +function c42776855.indestg(e,c) + return e:GetHandler():IsHasCardTarget(c) +end +function c42776855.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() +end +function c42776855.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if not tc then return false end + local bc=tc:GetBattleTarget() + return tc:IsLocation(LOCATION_MZONE) and bc and bc:IsFaceup() and bc:IsLocation(LOCATION_MZONE) and bc:IsLevelAbove(5) +end +function c42776855.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=c:GetFirstCardTarget() + if not tc then return false end + local bc=tc:GetBattleTarget() + local atk=bc:GetBaseAttack() + if bc:IsRelateToBattle() and Duel.Destroy(bc,REASON_EFFECT)~=0 and bc:IsType(TYPE_MONSTER) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c42776855.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c42776855.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c42776960.lua b/script/c42776960.lua index 1a90771e..d1301aa3 100644 --- a/script/c42776960.lua +++ b/script/c42776960.lua @@ -1,57 +1,57 @@ ---魂のリレー -function c42776960.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c42776960.target) - e1:SetOperation(c42776960.activate) - c:RegisterEffect(e1) -end -function c42776960.filter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c42776960.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c42776960.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c42776960.activate(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,c42776960.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_DAMAGE) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_AVAILABLE_BD+EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetTargetRange(1,0) - e1:SetCondition(c42776960.con) - e1:SetValue(0) - tc:RegisterEffect(e1,true) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetLabel(1-tp) - e3:SetOperation(c42776960.leaveop) - e3:SetReset(RESET_EVENT+0xc020000) - tc:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c42776960.con(e) - return e:GetHandlerPlayer()==e:GetOwnerPlayer() -end -function c42776960.leaveop(e,tp,eg,ep,ev,re,r,rp) - local WIN_REASON_RELAY_SOUL=0x1a - Duel.Win(e:GetLabel(),WIN_REASON_RELAY_SOUL) -end +--魂のリレー +function c42776960.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c42776960.target) + e1:SetOperation(c42776960.activate) + c:RegisterEffect(e1) +end +function c42776960.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c42776960.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c42776960.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c42776960.activate(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,c42776960.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_AVAILABLE_BD+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetTargetRange(1,0) + e1:SetCondition(c42776960.con) + e1:SetValue(0) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetLabel(1-tp) + e3:SetOperation(c42776960.leaveop) + e3:SetReset(RESET_EVENT+0xc020000) + tc:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c42776960.con(e) + return e:GetHandlerPlayer()==e:GetOwnerPlayer() +end +function c42776960.leaveop(e,tp,eg,ep,ev,re,r,rp) + local WIN_REASON_RELAY_SOUL=0x1a + Duel.Win(e:GetLabel(),WIN_REASON_RELAY_SOUL) +end diff --git a/script/c42793609.lua b/script/c42793609.lua index 10ef2b0e..a7e6826f 100644 --- a/script/c42793609.lua +++ b/script/c42793609.lua @@ -1,43 +1,43 @@ ---極星宝ブリージンガ・メン -function c42793609.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c42793609.condition) - e1:SetTarget(c42793609.target) - e1:SetOperation(c42793609.operation) - c:RegisterEffect(e1) -end -function c42793609.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c42793609.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF) - local g1=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) - e:SetLabelObject(g1:GetFirst()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c42793609.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local tc=g:GetFirst() - local sc=g:GetNext() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) - or sc:IsFacedown() or not sc:IsRelateToEffect(e) then return end - local ac=e:GetLabelObject() - if tc==ac then tc=sc end - local atk=tc:GetBaseAttack() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - ac:RegisterEffect(e1) -end +--極星宝ブリージンガ・メン +function c42793609.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c42793609.condition) + e1:SetTarget(c42793609.target) + e1:SetOperation(c42793609.operation) + c:RegisterEffect(e1) +end +function c42793609.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c42793609.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF) + local g1=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c42793609.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + local sc=g:GetNext() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) + or sc:IsFacedown() or not sc:IsRelateToEffect(e) then return end + local ac=e:GetLabelObject() + if tc==ac then tc=sc end + local atk=tc:GetBaseAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + ac:RegisterEffect(e1) +end diff --git a/script/c42810973.lua b/script/c42810973.lua index d4006b75..d616a80f 100644 --- a/script/c42810973.lua +++ b/script/c42810973.lua @@ -1,44 +1,44 @@ ---ジャンク・アーチャー -function c42810973.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c42810973.tfilter,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --remove - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(42810973,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c42810973.target) - e1:SetOperation(c42810973.operation) - c:RegisterEffect(e1) -end -c42810973.material_setcode=0x17 -function c42810973.tfilter(c) - return c:IsCode(63977008) or c:IsHasEffect(20932152) -end -function c42810973.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) -end -function c42810973.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Remove(tc,tc:GetPosition(),REASON_EFFECT+REASON_TEMPORARY)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabelObject(tc) - e1:SetOperation(c42810973.retop) - Duel.RegisterEffect(e1,tp) - end -end -function c42810973.retop(e,tp,eg,ep,ev,re,r,rp) - Duel.ReturnToField(e:GetLabelObject()) -end +--ジャンク・アーチャー +function c42810973.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c42810973.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(42810973,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c42810973.target) + e1:SetOperation(c42810973.operation) + c:RegisterEffect(e1) +end +c42810973.material_setcode=0x1017 +function c42810973.tfilter(c) + return c:IsCode(63977008) or c:IsHasEffect(20932152) +end +function c42810973.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c42810973.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,tc:GetPosition(),REASON_EFFECT+REASON_TEMPORARY)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabelObject(tc) + e1:SetOperation(c42810973.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c42810973.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c42878636.lua b/script/c42878636.lua new file mode 100644 index 00000000..fc0103a6 --- /dev/null +++ b/script/c42878636.lua @@ -0,0 +1,107 @@ +--古代の機械猟犬 +function c42878636.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(42878636,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c42878636.damtg) + e1:SetOperation(c42878636.damop) + c:RegisterEffect(e1) + --actlimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,1) + e2:SetValue(c42878636.aclimit) + e2:SetCondition(c42878636.actcon) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(42878636,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c42878636.sptg) + e3:SetOperation(c42878636.spop) + c:RegisterEffect(e3) +end +function c42878636.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c42878636.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c42878636.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c42878636.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end +function c42878636.spfilter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c42878636.spfilter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x7) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c42878636.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c42878636.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c42878636.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c42878636.spop(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c42878636.spfilter1,nil,e) + local sg1=Duel.GetMatchingGroup(c42878636.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c42878636.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c42880485.lua b/script/c42880485.lua index 083f8a44..1c184fe4 100644 --- a/script/c42880485.lua +++ b/script/c42880485.lua @@ -1,107 +1,107 @@ ---超重輝将ヒス-E -function c42880485.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) - e2:SetTargetRange(1,0) - e2:SetCondition(c42880485.splimcon) - e2:SetTarget(c42880485.splimit) - c:RegisterEffect(e2) - --level - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_PZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetTarget(c42880485.lvtg) - e3:SetOperation(c42880485.lvop) - c:RegisterEffect(e3) - --pos - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_POSITION) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_SUMMON_SUCCESS) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e4:SetTarget(c42880485.postg) - e4:SetOperation(c42880485.posop) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e5) - --normal summon with 1 tribute - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(42880485,0)) - e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_SUMMON_PROC) - e6:SetCondition(c42880485.otcon) - e6:SetOperation(c42880485.otop) - e6:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e6) - local e7=e6:Clone() - e7:SetCode(EFFECT_SET_PROC) - c:RegisterEffect(e7) - -- - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_SINGLE) - e8:SetCode(EFFECT_DEFENSE_ATTACK) - e8:SetValue(1) - c:RegisterEffect(e8) -end -function c42880485.splimcon(e) - return not e:GetHandler():IsForbidden() -end -function c42880485.splimit(e,c,tp,sumtp,sumpos) - return not c:IsSetCard(0x9a) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c42880485.filter(c) - return c:IsFaceup() and c:IsSetCard(0x9a) and c:GetLevel()>0 -end -function c42880485.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c42880485.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c42880485.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c42880485.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c42880485.lvop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end -function c42880485.postg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) -end -function c42880485.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) - end -end -function c42880485.otfilter(c,tp) - return c:IsSetCard(0x9a) and (c:IsControler(tp) or c:IsFaceup()) -end -function c42880485.otcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local mg=Duel.GetMatchingGroup(c42880485.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 -end -function c42880485.otop(e,tp,eg,ep,ev,re,r,rp,c) - local mg=Duel.GetMatchingGroup(c42880485.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - local sg=Duel.SelectTribute(tp,c,1,1,mg) - c:SetMaterial(sg) - Duel.Release(sg, REASON_SUMMON+REASON_MATERIAL) -end +--超重輝将ヒス-E +function c42880485.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetTargetRange(1,0) + e2:SetCondition(c42880485.splimcon) + e2:SetTarget(c42880485.splimit) + c:RegisterEffect(e2) + --level + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_PZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c42880485.lvtg) + e3:SetOperation(c42880485.lvop) + c:RegisterEffect(e3) + --pos + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_POSITION) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetTarget(c42880485.postg) + e4:SetOperation(c42880485.posop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) + --normal summon with 1 tribute + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(42880485,0)) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SUMMON_PROC) + e6:SetCondition(c42880485.otcon) + e6:SetOperation(c42880485.otop) + e6:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EFFECT_SET_PROC) + c:RegisterEffect(e7) + -- + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_DEFENSE_ATTACK) + e8:SetValue(1) + c:RegisterEffect(e8) +end +function c42880485.splimcon(e) + return not e:GetHandler():IsForbidden() +end +function c42880485.splimit(e,c,tp,sumtp,sumpos) + return not c:IsSetCard(0x9a) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c42880485.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9a) and c:GetLevel()>0 +end +function c42880485.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c42880485.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c42880485.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c42880485.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c42880485.lvop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c42880485.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c42880485.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end +function c42880485.otfilter(c,tp) + return c:IsSetCard(0x9a) and (c:IsControler(tp) or c:IsFaceup()) +end +function c42880485.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c42880485.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) +end +function c42880485.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c42880485.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local sg=Duel.SelectTribute(tp,c,1,1,mg) + c:SetMaterial(sg) + Duel.Release(sg, REASON_SUMMON+REASON_MATERIAL) +end diff --git a/script/c42940404.lua b/script/c42940404.lua index 5bfbe877..f69293a2 100644 --- a/script/c42940404.lua +++ b/script/c42940404.lua @@ -16,7 +16,7 @@ function c42940404.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c42940404.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c42940404.sptg) e2:SetOperation(c42940404.spop) c:RegisterEffect(e2) @@ -25,7 +25,7 @@ function c42940404.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetCondition(c42940404.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetValue(1) c:RegisterEffect(e3) --eqlimit @@ -45,9 +45,7 @@ function c42940404.initial_effect(c) e5:SetOperation(c42940404.sop) c:RegisterEffect(e5) end -function c42940404.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c42940404.old_union=true function c42940404.filter(c) return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:GetUnionCount()==0 end @@ -69,7 +67,7 @@ function c42940404.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c42940404.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(42940404)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c42956963.lua b/script/c42956963.lua index 61c6b647..33a16721 100644 --- a/script/c42956963.lua +++ b/script/c42956963.lua @@ -1,47 +1,47 @@ ---ナイトメア・デーモンズ -function c42956963.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:SetCost(c42956963.cost) - e1:SetTarget(c42956963.target) - e1:SetOperation(c42956963.activate) - c:RegisterEffect(e1) -end -function c42956963.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end - local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c42956963.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>2 - and Duel.IsPlayerCanSpecialSummonMonster(tp,42956964,0x45,0x4011,2000,2000,6,RACE_FIEND,ATTRIBUTE_DARK,POS_FACEUP_ATTACK,1-tp) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) -end -function c42956963.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<3 then return end - if not Duel.IsPlayerCanSpecialSummonMonster(tp,42956964,0x45,0x4011,2000,2000,6,RACE_FIEND,ATTRIBUTE_DARK,POS_FACEUP_ATTACK,1-tp) then return end - for i=1,3 do - local token=Duel.CreateToken(tp,42956964) - if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_LEAVE_FIELD) - e1:SetOperation(c42956963.damop) - token:RegisterEffect(e1,true) - end - end - Duel.SpecialSummonComplete() -end -function c42956963.damop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsReason(REASON_DESTROY) then - Duel.Damage(c:GetPreviousControler(),800,REASON_EFFECT) - end - e:Reset() -end +--ナイトメア・デーモンズ +function c42956963.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:SetCost(c42956963.cost) + e1:SetTarget(c42956963.target) + e1:SetOperation(c42956963.activate) + c:RegisterEffect(e1) +end +function c42956963.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c42956963.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>2 + and Duel.IsPlayerCanSpecialSummonMonster(tp,42956964,0x45,0x4011,2000,2000,6,RACE_FIEND,ATTRIBUTE_DARK,POS_FACEUP_ATTACK,1-tp) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c42956963.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<3 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,42956964,0x45,0x4011,2000,2000,6,RACE_FIEND,ATTRIBUTE_DARK,POS_FACEUP_ATTACK,1-tp) then return end + for i=1,3 do + local token=Duel.CreateToken(tp,42956964) + if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetOperation(c42956963.damop) + token:RegisterEffect(e1,true) + end + end + Duel.SpecialSummonComplete() +end +function c42956963.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsReason(REASON_DESTROY) then + Duel.Damage(c:GetPreviousControler(),800,REASON_EFFECT) + end + e:Reset() +end diff --git a/script/c43034264.lua b/script/c43034264.lua index d419bfd9..32f0b2d5 100644 --- a/script/c43034264.lua +++ b/script/c43034264.lua @@ -1,24 +1,24 @@ ---機殻の要塞 -function c43034264.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --extra summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e2:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) - c:RegisterEffect(e2) - --cannot disable summon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) - e3:SetRange(LOCATION_FZONE) - e3:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) - c:RegisterEffect(e3) -end +--機殻の要塞 +function c43034264.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --extra summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e2:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) + c:RegisterEffect(e2) + --cannot disable summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e3:SetRange(LOCATION_FZONE) + e3:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) + c:RegisterEffect(e3) +end diff --git a/script/c43040603.lua b/script/c43040603.lua index 874dd920..9854d4fc 100644 --- a/script/c43040603.lua +++ b/script/c43040603.lua @@ -1,53 +1,53 @@ ---モンスターゲート -function c43040603.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c43040603.cost) - e1:SetTarget(c43040603.target) - e1:SetOperation(c43040603.operation) - c:RegisterEffect(e1) -end -function c43040603.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end - local g=Duel.SelectReleaseGroup(tp,aux.TRUE,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c43040603.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.IsPlayerCanSpecialSummon(tp) - and Duel.IsExistingMatchingCard(Card.IsSummonableCard,tp,LOCATION_DECK,0,1,nil) and Duel.IsPlayerCanDiscardDeck(tp,1) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) -end -function c43040603.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanSpecialSummon(tp) or not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - local g=Duel.GetMatchingGroup(Card.IsSummonableCard,tp,LOCATION_DECK,0,nil) - local dcount=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - local seq=-1 - local tc=g:GetFirst() - local spcard=nil - while tc do - if tc:GetSequence()>seq then - seq=tc:GetSequence() - spcard=tc - end - tc=g:GetNext() - end - if seq==-1 then - Duel.ConfirmDecktop(tp,dcount) - Duel.ShuffleDeck(tp) - return - end - Duel.ConfirmDecktop(tp,dcount-seq) - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and spcard:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.DisableShuffleCheck() - if dcount-seq==1 then Duel.SpecialSummon(spcard,0,tp,tp,false,false,POS_FACEUP) - else - Duel.SpecialSummonStep(spcard,0,tp,tp,false,false,POS_FACEUP) - Duel.DiscardDeck(tp,dcount-seq-1,REASON_EFFECT) - Duel.SpecialSummonComplete() - end - else - Duel.DiscardDeck(tp,dcount-seq,REASON_EFFECT) - end -end +--モンスターゲート +function c43040603.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c43040603.cost) + e1:SetTarget(c43040603.target) + e1:SetOperation(c43040603.operation) + c:RegisterEffect(e1) +end +function c43040603.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local g=Duel.SelectReleaseGroup(tp,aux.TRUE,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c43040603.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.IsPlayerCanSpecialSummon(tp) + and Duel.IsExistingMatchingCard(Card.IsSummonableCard,tp,LOCATION_DECK,0,1,nil) and Duel.IsPlayerCanDiscardDeck(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) +end +function c43040603.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanSpecialSummon(tp) or not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + local g=Duel.GetMatchingGroup(Card.IsSummonableCard,tp,LOCATION_DECK,0,nil) + local dcount=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local seq=-1 + local tc=g:GetFirst() + local spcard=nil + while tc do + if tc:GetSequence()>seq then + seq=tc:GetSequence() + spcard=tc + end + tc=g:GetNext() + end + if seq==-1 then + Duel.ConfirmDecktop(tp,dcount) + Duel.ShuffleDeck(tp) + return + end + Duel.ConfirmDecktop(tp,dcount-seq) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and spcard:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.DisableShuffleCheck() + if dcount-seq==1 then Duel.SpecialSummon(spcard,0,tp,tp,false,false,POS_FACEUP) + else + Duel.SpecialSummonStep(spcard,0,tp,tp,false,false,POS_FACEUP) + Duel.DiscardDeck(tp,dcount-seq-1,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + else + Duel.DiscardDeck(tp,dcount-seq,REASON_EFFECT) + end +end diff --git a/script/c43138260.lua b/script/c43138260.lua index e44f5b5d..b3b1d858 100644 --- a/script/c43138260.lua +++ b/script/c43138260.lua @@ -46,10 +46,9 @@ function c43138260.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) end function c43138260.spop2(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) if g:GetCount()==0 then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end local c=e:GetHandler() local tc=g:GetFirst() while tc do diff --git a/script/c43175858.lua b/script/c43175858.lua index 47edc4a9..da8d8e7a 100644 --- a/script/c43175858.lua +++ b/script/c43175858.lua @@ -1,67 +1,68 @@ ---トゥーン・キングダム -function c43175858.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c43175858.target) - e1:SetOperation(c43175858.activate) - c:RegisterEffect(e1) - --change code - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CHANGE_CODE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_IMMEDIATELY_APPLY) - e2:SetRange(LOCATION_FZONE) - e2:SetValue(15259703) - c:RegisterEffect(e2) - --cannot be target - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_TOON)) - e3:SetValue(aux.tgoval) - c:RegisterEffect(e3) - --destroy replace - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EFFECT_DESTROY_REPLACE) - e4:SetRange(LOCATION_FZONE) - e4:SetTarget(c43175858.reptg) - e4:SetValue(c43175858.repval) - c:RegisterEffect(e4) -end -function c43175858.target(e,tp,eg,ep,ev,re,r,rp,chk) - local g=Duel.GetDecktopGroup(tp,3) - if chk==0 then return g:FilterCount(Card.IsAbleToRemove,nil)==3 end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,3,tp,LOCATION_DECK) -end -function c43175858.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct==0 then return end - if ct>3 then ct=3 end - local g=Duel.GetDecktopGroup(tp,ct) - Duel.DisableShuffleCheck() - Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT) -end -function c43175858.repfilter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) - and c:IsType(TYPE_TOON) and c:IsReason(REASON_BATTLE+REASON_EFFECT) -end -function c43175858.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - local ct=eg:FilterCount(c43175858.repfilter,nil,tp) - local g=Duel.GetDecktopGroup(tp,ct) - if chk==0 then return g:IsExists(Card.IsAbleToRemove,ct,nil) end - if Duel.SelectYesNo(tp,aux.Stringid(43175858,0)) then - Duel.DisableShuffleCheck() - Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT) - return true - else return false end -end -function c43175858.repval(e,c) - return c43175858.repfilter(c,e:GetHandlerPlayer()) -end +--トゥーン・キングダム +function c43175858.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c43175858.target) + e1:SetOperation(c43175858.activate) + c:RegisterEffect(e1) + --change code + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_IMMEDIATELY_APPLY) + e2:SetRange(LOCATION_FZONE) + e2:SetValue(15259703) + c:RegisterEffect(e2) + --cannot be target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_IMMEDIATELY_APPLY+EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_TOON)) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) + --destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetRange(LOCATION_FZONE) + e4:SetTarget(c43175858.reptg) + e4:SetValue(c43175858.repval) + c:RegisterEffect(e4) +end +function c43175858.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetDecktopGroup(tp,3) + if chk==0 then return g:FilterCount(Card.IsAbleToRemove,nil)==3 end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,3,tp,LOCATION_DECK) +end +function c43175858.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if ct==0 then return end + if ct>3 then ct=3 end + local g=Duel.GetDecktopGroup(tp,ct) + Duel.DisableShuffleCheck() + Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT) +end +function c43175858.repfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) + and c:IsType(TYPE_TOON) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c43175858.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:FilterCount(c43175858.repfilter,nil,tp) + local g=Duel.GetDecktopGroup(tp,ct) + if chk==0 then return g:IsExists(Card.IsAbleToRemove,ct,nil) end + if Duel.SelectYesNo(tp,aux.Stringid(43175858,0)) then + Duel.DisableShuffleCheck() + Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT) + return true + else return false end +end +function c43175858.repval(e,c) + return c43175858.repfilter(c,e:GetHandlerPlayer()) +end diff --git a/script/c43225434.lua b/script/c43225434.lua index b5f2e1e3..0a0142af 100644 --- a/script/c43225434.lua +++ b/script/c43225434.lua @@ -1,30 +1,30 @@ ---決闘融合-バトル・フュージョン -function c43225434.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCountLimit(1,43225434+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c43225434.condition) - e1:SetOperation(c43225434.activate) - c:RegisterEffect(e1) -end -function c43225434.condition(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local at=Duel.GetAttackTarget() - return at and ((a:IsControler(tp) and a:IsType(TYPE_FUSION)) - or (at:IsControler(tp) and at:IsFaceup() and at:IsType(TYPE_FUSION))) -end -function c43225434.activate(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local at=Duel.GetAttackTarget() - if a:IsControler(1-tp) then a,at=at,a end - if not a:IsRelateToBattle() or a:IsFacedown() or not at:IsRelateToBattle() or at:IsFacedown() then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - e1:SetValue(at:GetAttack()) - a:RegisterEffect(e1) -end +--決闘融合-バトル・フュージョン +function c43225434.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCountLimit(1,43225434+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c43225434.condition) + e1:SetOperation(c43225434.activate) + c:RegisterEffect(e1) +end +function c43225434.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return at and ((a:IsControler(tp) and a:IsType(TYPE_FUSION)) + or (at:IsControler(tp) and at:IsFaceup() and at:IsType(TYPE_FUSION))) +end +function c43225434.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if a:IsControler(1-tp) then a,at=at,a end + if not a:IsRelateToBattle() or a:IsFacedown() or not at:IsRelateToBattle() or at:IsFacedown() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e1:SetValue(at:GetAttack()) + a:RegisterEffect(e1) +end diff --git a/script/c43237273.lua b/script/c43237273.lua index b7f0cc8c..ad40754b 100644 --- a/script/c43237273.lua +++ b/script/c43237273.lua @@ -1,58 +1,58 @@ ---N・ブラック・パンサー -function c43237273.initial_effect(c) - --copy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(43237273,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c43237273.target) - e1:SetOperation(c43237273.operation) - c:RegisterEffect(e1) -end -function c43237273.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c43237273.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc and c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsType(TYPE_TOKEN) then - local code=tc:GetOriginalCodeRule() - local cid=0 - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - c:RegisterEffect(e1) - if not tc:IsType(TYPE_TRAPMONSTER) then - cid=c:CopyEffect(code, RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END, 1) - end - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(43237273,1)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetLabelObject(e1) - e2:SetLabel(cid) - e2:SetOperation(c43237273.rstop) - c:RegisterEffect(e2) - end -end -function c43237273.rstop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local cid=e:GetLabel() - if cid~=0 then c:ResetEffect(cid,RESET_COPY) end - local e1=e:GetLabelObject() - e1:Reset() - Duel.HintSelection(Group.FromCards(c)) - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end +--N・ブラック・パンサー +function c43237273.initial_effect(c) + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(43237273,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c43237273.target) + e1:SetOperation(c43237273.operation) + c:RegisterEffect(e1) +end +function c43237273.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c43237273.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsType(TYPE_TOKEN) then + local code=tc:GetOriginalCodeRule() + local cid=0 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + if not tc:IsType(TYPE_TRAPMONSTER) then + cid=c:CopyEffect(code, RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END, 1) + end + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(43237273,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + e2:SetLabel(cid) + e2:SetOperation(c43237273.rstop) + c:RegisterEffect(e2) + end +end +function c43237273.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=e:GetLabel() + if cid~=0 then c:ResetEffect(cid,RESET_COPY) end + local e1=e:GetLabelObject() + e1:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end diff --git a/script/c43268675.lua b/script/c43268675.lua index e8c2e4b7..78fca99d 100644 --- a/script/c43268675.lua +++ b/script/c43268675.lua @@ -1,43 +1,43 @@ ---幻奏の音女オペラ -function c43268675.initial_effect(c) - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c43268675.atklimit) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BE_MATERIAL) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCondition(c43268675.indcon) - e3:SetOperation(c43268675.indop) - c:RegisterEffect(e3) -end -function c43268675.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c43268675.indcon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_FUSION and e:GetHandler():IsLocation(LOCATION_GRAVE) -end -function c43268675.indop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x9b)) - e1:SetValue(1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - Duel.RegisterEffect(e2,tp) -end +--幻奏の音女オペラ +function c43268675.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c43268675.atklimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c43268675.indcon) + e3:SetOperation(c43268675.indop) + c:RegisterEffect(e3) +end +function c43268675.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c43268675.indcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_FUSION and e:GetHandler():IsLocation(LOCATION_GRAVE) +end +function c43268675.indop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x9b)) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c43383478.lua b/script/c43383478.lua index 2c6ec857..25dd9303 100644 --- a/script/c43383478.lua +++ b/script/c43383478.lua @@ -1,71 +1,71 @@ ---RUM-ラプターズ・フォース -function c43383478.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetHintTiming(0,TIMING_DESTROY+TIMING_END_PHASE) - e1:SetCondition(c43383478.condition) - e1:SetTarget(c43383478.target) - e1:SetOperation(c43383478.activate) - c:RegisterEffect(e1) - if not c43383478.globle_check then - c43383478.globle_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - ge1:SetCode(EVENT_TO_GRAVE) - ge1:SetOperation(c43383478.checkop) - Duel.RegisterEffect(ge1,0) - end -end -function c43383478.checkop(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local p1=false - local p2=false - while tc do - if tc:IsSetCard(0xba) and tc:IsType(TYPE_XYZ) and tc:IsReason(REASON_DESTROY) then - if tc:GetPreviousControler()==0 then p1=true else p2=true end - end - tc=eg:GetNext() - end - if p1 then Duel.RegisterFlagEffect(0,43383478,RESET_PHASE+PHASE_END,0,1) end - if p2 then Duel.RegisterFlagEffect(1,43383478,RESET_PHASE+PHASE_END,0,1) end -end -function c43383478.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFlagEffect(tp,43383478)~=0 -end -function c43383478.filter1(c,e,tp) - return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c43383478.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+1) -end -function c43383478.filter2(c,e,tp,mc,rk) - return c:GetRank()==rk and c:IsSetCard(0xba) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c43383478.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c43383478.filter1(chkc,e,tp) end - if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c43383478.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c43383478.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,tp,LOCATION_EXTRA) -end -function c43383478.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end - if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c43383478.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) - local sc=g:GetFirst() - if sc then - Duel.BreakEffect() - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end -end +--RUM-ラプターズ・フォース +function c43383478.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,TIMING_DESTROY+TIMING_END_PHASE) + e1:SetCondition(c43383478.condition) + e1:SetTarget(c43383478.target) + e1:SetOperation(c43383478.activate) + c:RegisterEffect(e1) + if not c43383478.globle_check then + c43383478.globle_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(c43383478.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c43383478.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local p1=false + local p2=false + while tc do + if tc:IsSetCard(0xba) and tc:IsType(TYPE_XYZ) and tc:IsReason(REASON_DESTROY) then + if tc:GetPreviousControler()==0 then p1=true else p2=true end + end + tc=eg:GetNext() + end + if p1 then Duel.RegisterFlagEffect(0,43383478,RESET_PHASE+PHASE_END,0,1) end + if p2 then Duel.RegisterFlagEffect(1,43383478,RESET_PHASE+PHASE_END,0,1) end +end +function c43383478.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,43383478)~=0 +end +function c43383478.filter1(c,e,tp) + return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c43383478.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+1) +end +function c43383478.filter2(c,e,tp,mc,rk) + return c:GetRank()==rk and c:IsSetCard(0xba) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c43383478.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c43383478.filter1(chkc,e,tp) end + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c43383478.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c43383478.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,tp,LOCATION_EXTRA) +end +function c43383478.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c43383478.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) + local sc=g:GetFirst() + if sc then + Duel.BreakEffect() + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c43417563.lua b/script/c43417563.lua index 4f60a008..156aad6f 100644 --- a/script/c43417563.lua +++ b/script/c43417563.lua @@ -1,4 +1,4 @@ ---踊りによる誘発 -function c43417563.initial_effect(c) - aux.AddRitualProcGreaterCode(c,4849037) -end +--踊りによる誘発 +function c43417563.initial_effect(c) + aux.AddRitualProcGreaterCode(c,4849037) +end diff --git a/script/c43436049.lua b/script/c43436049.lua index 08a92e35..507b0257 100644 --- a/script/c43436049.lua +++ b/script/c43436049.lua @@ -1,59 +1,59 @@ ---ジャンク・ブレイカー -function c43436049.initial_effect(c) - --disable - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c43436049.sumsuc) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(43436049,0)) - e2:SetCategory(CATEGORY_DISABLE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c43436049.condition) - e2:SetCost(c43436049.cost) - e2:SetTarget(c43436049.target) - e2:SetOperation(c43436049.operation) - c:RegisterEffect(e2) -end -function c43436049.sumsuc(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(43436049,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) -end -function c43436049.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(43436049)>0 -end -function c43436049.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c43436049.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end - local g=Duel.GetMatchingGroup(aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) -end -function c43436049.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - if tc:IsType(TYPE_TRAPMONSTER) then - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end - tc=g:GetNext() - end -end +--ジャンク・ブレイカー +function c43436049.initial_effect(c) + --disable + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c43436049.sumsuc) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(43436049,0)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c43436049.condition) + e2:SetCost(c43436049.cost) + e2:SetTarget(c43436049.target) + e2:SetOperation(c43436049.operation) + c:RegisterEffect(e2) +end +function c43436049.sumsuc(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(43436049,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end +function c43436049.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(43436049)>0 +end +function c43436049.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c43436049.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) +end +function c43436049.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end +end diff --git a/script/c43476205.lua b/script/c43476205.lua index ecaf46da..45ba1bb2 100644 --- a/script/c43476205.lua +++ b/script/c43476205.lua @@ -1,68 +1,68 @@ ---RUM-レヴォリューション・フォース -function c43476205.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c43476205.target) - e1:SetOperation(c43476205.activate) - c:RegisterEffect(e1) -end -function c43476205.filter1(c,e,tp) - local rk=c:GetRank() - return rk>0 and c:IsFaceup() and c:IsSetCard(0xba) - and Duel.IsExistingMatchingCard(c43476205.filter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1) -end -function c43476205.filter2(c,e,tp) - local rk=c:GetRank() - return rk>0 and c:IsFaceup() and c:GetOverlayCount()==0 and c:IsControlerCanBeChanged() - and Duel.IsExistingMatchingCard(c43476205.filter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1) -end -function c43476205.filter3(c,e,tp,mc,rk) - return c:GetRank()==rk and c:IsSetCard(0xba) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c43476205.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if Duel.GetTurnPlayer()==tp then - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c43476205.filter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c43476205.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - e:SetCategory(CATEGORY_SPECIAL_SUMMON) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c43476205.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - else - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c43476205.filter2(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c43476205.filter2,tp,0,LOCATION_MZONE,1,nil,e,tp) end - e:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_CONTROL) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c43476205.filter2,tp,0,LOCATION_MZONE,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c43476205.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if Duel.GetTurnPlayer()~=tp then - if not tc:IsRelateToEffect(e) or not tc:IsFaceup() then return end - if Duel.GetControl(tc,tp)==0 then return end - Duel.BreakEffect() - end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c43476205.filter3,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) - local sc=g:GetFirst() - if sc then - local mg=tc:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end -end +--RUM-レヴォリューション・フォース +function c43476205.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c43476205.target) + e1:SetOperation(c43476205.activate) + c:RegisterEffect(e1) +end +function c43476205.filter1(c,e,tp) + local rk=c:GetRank() + return rk>0 and c:IsFaceup() and c:IsSetCard(0xba) + and Duel.IsExistingMatchingCard(c43476205.filter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1) +end +function c43476205.filter2(c,e,tp) + local rk=c:GetRank() + return rk>0 and c:IsFaceup() and c:GetOverlayCount()==0 and c:IsControlerCanBeChanged() + and Duel.IsExistingMatchingCard(c43476205.filter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1) +end +function c43476205.filter3(c,e,tp,mc,rk) + return c:GetRank()==rk and c:IsSetCard(0xba) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c43476205.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if Duel.GetTurnPlayer()==tp then + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c43476205.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c43476205.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c43476205.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + else + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c43476205.filter2(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c43476205.filter2,tp,0,LOCATION_MZONE,1,nil,e,tp) end + e:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_CONTROL) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c43476205.filter2,tp,0,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c43476205.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.GetTurnPlayer()~=tp then + if not tc:IsRelateToEffect(e) or not tc:IsFaceup() then return end + if Duel.GetControl(tc,tp)==0 then return end + Duel.BreakEffect() + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c43476205.filter3,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c43509019.lua b/script/c43509019.lua index c4afcc50..006f6c81 100644 --- a/script/c43509019.lua +++ b/script/c43509019.lua @@ -1,41 +1,41 @@ ---トゥーン・ディフェンス -function c43509019.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c43509019.target) - c:RegisterEffect(e1) - --change battle target - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(43509019,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c43509019.cbcon) - e2:SetTarget(c43509019.cbtg) - e2:SetOperation(c43509019.cbop) - c:RegisterEffect(e2) -end -function c43509019.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) - if res and c43509019.cbcon(e,tp,teg,tep,tev,tre,tr,trp) - and c43509019.cbtg(e,tp,teg,tep,tev,tre,tr,trp,0) - and Duel.SelectYesNo(tp,94) then - e:SetOperation(c43509019.cbop) - else - e:SetOperation(nil) - end -end -function c43509019.cbcon(e,tp,eg,ep,ev,re,r,rp) - local bt=Duel.GetAttackTarget() - return bt and bt:IsFaceup() and bt:IsLevelBelow(4) and bt:IsType(TYPE_TOON) and bt:GetControler()==e:GetHandlerPlayer() -end -function c43509019.cbtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.GetAttacker():IsHasEffect(EFFECT_CANNOT_DIRECT_ATTACK) end -end -function c43509019.cbop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.ChangeAttackTarget(nil) -end +--トゥーン・ディフェンス +function c43509019.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c43509019.target) + c:RegisterEffect(e1) + --change battle target + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(43509019,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c43509019.cbcon) + e2:SetTarget(c43509019.cbtg) + e2:SetOperation(c43509019.cbop) + c:RegisterEffect(e2) +end +function c43509019.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) + if res and c43509019.cbcon(e,tp,teg,tep,tev,tre,tr,trp) + and c43509019.cbtg(e,tp,teg,tep,tev,tre,tr,trp,0) + and Duel.SelectYesNo(tp,94) then + e:SetOperation(c43509019.cbop) + else + e:SetOperation(nil) + end +end +function c43509019.cbcon(e,tp,eg,ep,ev,re,r,rp) + local bt=Duel.GetAttackTarget() + return bt and bt:IsFaceup() and bt:IsLevelBelow(4) and bt:IsType(TYPE_TOON) and bt:GetControler()==e:GetHandlerPlayer() +end +function c43509019.cbtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.GetAttacker():IsHasEffect(EFFECT_CANNOT_DIRECT_ATTACK) end +end +function c43509019.cbop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.ChangeAttackTarget(nil) +end diff --git a/script/c43530283.lua b/script/c43530283.lua index 038be286..047176dd 100644 --- a/script/c43530283.lua +++ b/script/c43530283.lua @@ -18,13 +18,12 @@ function c43530283.adop(e,tp,eg,ep,ev,re,r,rp) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SET_BASE_ATTACK) - e1:SetValue(c43530283.val) - e1:SetLabel(1100) + e1:SetValue(c43530283.atkval) e1:SetReset(RESET_EVENT+0x1ff0000) c:RegisterEffect(e1) local e2=e1:Clone() e2:SetCode(EFFECT_SET_BASE_DEFENSE) - e2:SetLabel(1200) + e2:SetValue(c43530283.defval) c:RegisterEffect(e2) if Duel.GetTurnPlayer()==tp then c:RegisterFlagEffect(43530283,RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,2) @@ -33,10 +32,17 @@ function c43530283.adop(e,tp,eg,ep,ev,re,r,rp) end end end -function c43530283.val(e,c) +function c43530283.atkval(e,c) if c:GetFlagEffect(43530283)==0 then - return e:GetLabel()*2 + return c:GetBaseAttack()*2 else - return e:GetLabel()/2 + return c:GetBaseAttack()/2 + end +end +function c43530283.defval(e,c) + if c:GetFlagEffect(43530283)==0 then + return c:GetBaseDefense()*2 + else + return c:GetBaseDefense()/2 end end diff --git a/script/c4357063.lua b/script/c4357063.lua index ac42516a..2a44e9ed 100644 --- a/script/c4357063.lua +++ b/script/c4357063.lua @@ -1,46 +1,46 @@ ---先史遺産都市バビロン -function c4357063.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(4357063,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetTarget(c4357063.sptg) - e2:SetOperation(c4357063.spop) - c:RegisterEffect(e2) -end -function c4357063.costfilter(c,e,tp) - return c:IsSetCard(0x70) and c:IsAbleToRemoveAsCost() and c:GetLevel()>0 - and Duel.IsExistingTarget(c4357063.spfilter,tp,LOCATION_GRAVE,0,1,c,e,tp,c:GetLevel()) -end -function c4357063.spfilter(c,e,tp,lv) - return c:IsSetCard(0x70) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c4357063.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c4357063.spfilter(chkc,e,tp,e:GetLabel()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c4357063.costfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c4357063.costfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - local lv=g:GetFirst():GetLevel() - Duel.Remove(g,POS_FACEUP,REASON_COST) - e:SetLabel(lv) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c4357063.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,lv) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c4357063.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--先史遺産都市バビロン +function c4357063.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4357063,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetTarget(c4357063.sptg) + e2:SetOperation(c4357063.spop) + c:RegisterEffect(e2) +end +function c4357063.costfilter(c,e,tp) + return c:IsSetCard(0x70) and c:IsAbleToRemoveAsCost() and c:GetLevel()>0 + and Duel.IsExistingTarget(c4357063.spfilter,tp,LOCATION_GRAVE,0,1,c,e,tp,c:GetLevel()) +end +function c4357063.spfilter(c,e,tp,lv) + return c:IsSetCard(0x70) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c4357063.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c4357063.spfilter(chkc,e,tp,e:GetLabel()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c4357063.costfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c4357063.costfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local lv=g:GetFirst():GetLevel() + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(lv) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c4357063.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c4357063.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c43586926.lua b/script/c43586926.lua index 85be9873..0c048250 100644 --- a/script/c43586926.lua +++ b/script/c43586926.lua @@ -3,6 +3,7 @@ function c43586926.initial_effect(c) --to grave local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c43586926.regop) c:RegisterEffect(e1) diff --git a/script/c43658697.lua b/script/c43658697.lua index 777b6260..732c6c60 100644 --- a/script/c43658697.lua +++ b/script/c43658697.lua @@ -1,51 +1,51 @@ ---U.A.フラッグシップ・ディール -function c43658697.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,43658697+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c43658697.target) - e1:SetOperation(c43658697.activate) - c:RegisterEffect(e1) -end -function c43658697.filter(c,e,tp) - return c:IsSetCard(0xb2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c43658697.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c43658697.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c43658697.activate(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,c43658697.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e3:SetReset(RESET_EVENT+0x1fe0000) - e3:SetValue(1) - tc:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - tc:RegisterEffect(e4) - Duel.SpecialSummonComplete() - Duel.BreakEffect() - local lp=Duel.GetLP(tp) - Duel.SetLP(tp,lp-tc:GetLevel()*300) - end -end +--U.A.フラッグシップ・ディール +function c43658697.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,43658697+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c43658697.target) + e1:SetOperation(c43658697.activate) + c:RegisterEffect(e1) +end +function c43658697.filter(c,e,tp) + return c:IsSetCard(0xb2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c43658697.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c43658697.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c43658697.activate(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,c43658697.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(1) + tc:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + tc:RegisterEffect(e4) + Duel.SpecialSummonComplete() + Duel.BreakEffect() + local lp=Duel.GetLP(tp) + Duel.SetLP(tp,lp-tc:GetLevel()*300) + end +end diff --git a/script/c4367330.lua b/script/c4367330.lua new file mode 100644 index 00000000..0ee87d51 --- /dev/null +++ b/script/c4367330.lua @@ -0,0 +1,66 @@ +--十二獣ラビーナ +function c4367330.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4367330,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c4367330.thcon) + e1:SetTarget(c4367330.thtg) + e1:SetOperation(c4367330.thop) + c:RegisterEffect(e1) + --get effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4367330,1)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_XMATERIAL+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c4367330.discon) + e2:SetCost(c4367330.discost) + e2:SetTarget(c4367330.distg) + e2:SetOperation(c4367330.disop) + c:RegisterEffect(e2) +end +function c4367330.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c4367330.thfilter(c) + return c:IsSetCard(0xf1) and c:IsAbleToHand() and not c:IsCode(4367330) +end +function c4367330.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c4367330.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c4367330.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c4367330.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c4367330.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c4367330.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetOriginalRace()==RACE_BEASTWARRIOR + and not c:IsStatus(STATUS_BATTLE_DESTROYED) and ep==1-tp + and re:IsActiveType(TYPE_SPELL) and Duel.IsChainNegatable(ev) + and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) + and Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):IsContains(c) +end +function c4367330.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c4367330.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c4367330.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + Duel.SendtoGrave(eg,REASON_EFFECT) + end +end diff --git a/script/c43694075.lua b/script/c43694075.lua index cbefa2a5..44e7ee44 100644 --- a/script/c43694075.lua +++ b/script/c43694075.lua @@ -1,4 +1,4 @@ ---ローの祈り -function c43694075.initial_effect(c) - aux.AddRitualProcGreaterCode(c,3627449) -end +--ローの祈り +function c43694075.initial_effect(c) + aux.AddRitualProcGreaterCode(c,3627449) +end diff --git a/script/c43698897.lua b/script/c43698897.lua index 49805787..96ecfcde 100644 --- a/script/c43698897.lua +++ b/script/c43698897.lua @@ -7,7 +7,7 @@ function c43698897.initial_effect(c) c:RegisterEffect(e1) --spsummon local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) e2:SetCountLimit(1,43698897) @@ -36,7 +36,7 @@ function c43698897.spcost(e,tp,eg,ep,ev,re,r,rp,chk) Duel.Remove(g,POS_FACEUP,REASON_COST) end function c43698897.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return not c:IsImmuneToEffect(e) end function c43698897.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0xad) and (not f or f(c)) @@ -45,7 +45,7 @@ end function c43698897.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local mg1=Duel.GetFusionMaterial(tp) local res=Duel.IsExistingMatchingCard(c43698897.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) @@ -63,7 +63,7 @@ end function c43698897.spop(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c43698897.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c43698897.filter1,nil,e) local sg1=Duel.GetMatchingGroup(c43698897.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) local mg2=nil local sg2=nil diff --git a/script/c43711255.lua b/script/c43711255.lua index df7e9e2c..2dd709fc 100644 --- a/script/c43711255.lua +++ b/script/c43711255.lua @@ -1,36 +1,36 @@ ---禁止令 -function c43711255.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c43711255.target) - e1:SetOperation(c43711255.activate) - c:RegisterEffect(e1) - --forbidden - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e2:SetCode(EFFECT_FORBIDDEN) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0x7f,0x7f) - e2:SetTarget(c43711255.bantg) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) -end -function c43711255.bantg(e,c) - return c:IsCode(e:GetLabelObject():GetLabel()) and (not c:IsOnField() or c:GetRealFieldID()>e:GetFieldID()) -end -function c43711255.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,564) - local ac=Duel.AnnounceCard(tp) - Duel.SetTargetParam(ac) - Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) -end -function c43711255.activate(e,tp,eg,ep,ev,re,r,rp) - local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - e:SetLabel(ac) - e:GetHandler():SetHint(CHINT_CARD,ac) - Duel.AdjustInstantly(e:GetHandler()) -end +--禁止令 +function c43711255.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c43711255.target) + e1:SetOperation(c43711255.activate) + c:RegisterEffect(e1) + --forbidden + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCode(EFFECT_FORBIDDEN) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0x7f,0x7f) + e2:SetTarget(c43711255.bantg) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c43711255.bantg(e,c) + return c:IsCode(e:GetLabelObject():GetLabel()) and (not c:IsOnField() or c:GetRealFieldID()>e:GetFieldID()) +end +function c43711255.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c43711255.activate(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + e:SetLabel(ac) + e:GetHandler():SetHint(CHINT_CARD,ac) + Duel.AdjustInstantly(e:GetHandler()) +end diff --git a/script/c43722862.lua b/script/c43722862.lua new file mode 100644 index 00000000..86b6634f --- /dev/null +++ b/script/c43722862.lua @@ -0,0 +1,100 @@ +--WW-アイス・ベル +function c43722862.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(43722862,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,43722862) + e1:SetCondition(c43722862.spcon) + e1:SetCost(c43722862.spcost) + e1:SetTarget(c43722862.sptg) + e1:SetOperation(c43722862.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(43722862,2)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCountLimit(1,43722863) + e2:SetTarget(c43722862.damtg) + e2:SetOperation(c43722862.damop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + Duel.AddCustomActivityCounter(43722862,ACTIVITY_SPSUMMON,c43722862.counterfilter) +end +function c43722862.counterfilter(c) + return c:GetSummonLocation()~=LOCATION_EXTRA or (c:IsLevelAbove(5) and c:IsAttribute(ATTRIBUTE_WIND)) +end +function c43722862.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c43722862.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(43722862,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetTargetRange(1,0) + e1:SetTarget(c43722862.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c43722862.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not (c:IsLevelAbove(5) and c:IsAttribute(ATTRIBUTE_WIND)) and c:IsLocation(LOCATION_EXTRA) +end +function c43722862.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c43722862.spfilter(c,e,tp) + return c:IsSetCard(0xf0) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c43722862.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.GetMatchingGroup(c43722862.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(43722862,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + local tc=sg:GetFirst() + if tc then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + end + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c43722862.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c43722862.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c43748308.lua b/script/c43748308.lua index b855eba9..3176c8e9 100644 --- a/script/c43748308.lua +++ b/script/c43748308.lua @@ -1,81 +1,81 @@ ---微炎星-リュウシシン -function c43748308.initial_effect(c) - --set - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_CHAINING) - e1:SetRange(LOCATION_MZONE) - e1:SetOperation(aux.chainreg) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(43748308,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c43748308.setcon) - e2:SetTarget(c43748308.settg) - e2:SetOperation(c43748308.setop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(43748308,1)) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCost(c43748308.spcost) - e3:SetTarget(c43748308.sptg) - e3:SetOperation(c43748308.spop) - c:RegisterEffect(e3) -end -function c43748308.setcon(e,tp,eg,ep,ev,re,r,rp) - return rp==tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL+TYPE_TRAP) - and re:GetHandler():IsSetCard(0x7c) and e:GetHandler():GetFlagEffect(1)>0 -end -function c43748308.filter(c) - return c:IsSetCard(0x7c) and c:IsType(TYPE_TRAP) and c:IsSSetable() -end -function c43748308.settg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and e:GetHandler():IsFaceup() - and not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingMatchingCard(c43748308.filter,tp,LOCATION_DECK,0,1,nil) end -end -function c43748308.setop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) - local g=Duel.SelectMatchingCard(tp,c43748308.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SSet(tp,g:GetFirst()) - Duel.ConfirmCards(1-tp,g) - end -end -function c43748308.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x7c) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGraveAsCost() -end -function c43748308.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c43748308.cfilter,tp,LOCATION_ONFIELD,0,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c43748308.cfilter,tp,LOCATION_ONFIELD,0,2,2,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c43748308.spfilter(c,e,tp) - return c:IsSetCard(0x79) and c:GetCode()~=43748308 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c43748308.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c43748308.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c43748308.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c43748308.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c43748308.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--微炎星-リュウシシン +function c43748308.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(aux.chainreg) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(43748308,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c43748308.setcon) + e2:SetTarget(c43748308.settg) + e2:SetOperation(c43748308.setop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(43748308,1)) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c43748308.spcost) + e3:SetTarget(c43748308.sptg) + e3:SetOperation(c43748308.spop) + c:RegisterEffect(e3) +end +function c43748308.setcon(e,tp,eg,ep,ev,re,r,rp) + return rp==tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL+TYPE_TRAP) + and re:GetHandler():IsSetCard(0x7c) and e:GetHandler():GetFlagEffect(1)>0 +end +function c43748308.filter(c) + return c:IsSetCard(0x7c) and c:IsType(TYPE_TRAP) and c:IsSSetable() +end +function c43748308.settg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and e:GetHandler():IsFaceup() + and not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c43748308.filter,tp,LOCATION_DECK,0,1,nil) end +end +function c43748308.setop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local g=Duel.SelectMatchingCard(tp,c43748308.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SSet(tp,g:GetFirst()) + Duel.ConfirmCards(1-tp,g) + end +end +function c43748308.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x7c) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGraveAsCost() +end +function c43748308.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c43748308.cfilter,tp,LOCATION_ONFIELD,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c43748308.cfilter,tp,LOCATION_ONFIELD,0,2,2,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c43748308.spfilter(c,e,tp) + return c:IsSetCard(0x79) and c:GetCode()~=43748308 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c43748308.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c43748308.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c43748308.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c43748308.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c43748308.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c43785278.lua b/script/c43785278.lua index 9ea6a363..187dfa40 100644 --- a/script/c43785278.lua +++ b/script/c43785278.lua @@ -1,50 +1,50 @@ ---フーコーの魔砲石 -function c43785278.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c,false) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(1160) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c43785278.reg) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(43785278,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c43785278.descon) - e2:SetTarget(c43785278.destg) - e2:SetOperation(c43785278.desop) - c:RegisterEffect(e2) -end -function c43785278.reg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:GetHandler():RegisterFlagEffect(43785278,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) -end -function c43785278.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(43785278)~=0 -end -function c43785278.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c43785278.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c43785278.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c43785278.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c43785278.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c43785278.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--フーコーの魔砲石 +function c43785278.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(1160) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c43785278.reg) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(43785278,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c43785278.descon) + e2:SetTarget(c43785278.destg) + e2:SetOperation(c43785278.desop) + c:RegisterEffect(e2) +end +function c43785278.reg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():RegisterFlagEffect(43785278,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) +end +function c43785278.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(43785278)~=0 +end +function c43785278.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c43785278.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c43785278.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c43785278.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c43785278.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c43785278.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c43889633.lua b/script/c43889633.lua index d522e6ba..3c054f27 100644 --- a/script/c43889633.lua +++ b/script/c43889633.lua @@ -52,7 +52,7 @@ end function c43889633.operation(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 then + if tc and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_REMOVED) then tc:RegisterFlagEffect(43889634,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,1) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetDescription(aux.Stringid(43889633,2)) diff --git a/script/c43898403.lua b/script/c43898403.lua index 0efbd278..0ad6fef2 100644 --- a/script/c43898403.lua +++ b/script/c43898403.lua @@ -1,32 +1,32 @@ ---ツインツイスター -function c43898403.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE+TIMING_EQUIP) - e1:SetCost(c43898403.cost) - e1:SetTarget(c43898403.target) - e1:SetOperation(c43898403.activate) - c:RegisterEffect(e1) -end -function c43898403.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 c43898403.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c43898403.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c43898403.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c43898403.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c43898403.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,2,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c43898403.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - Duel.Destroy(g,REASON_EFFECT) -end +--ツインツイスター +function c43898403.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE+TIMING_EQUIP) + e1:SetCost(c43898403.cost) + e1:SetTarget(c43898403.target) + e1:SetOperation(c43898403.activate) + c:RegisterEffect(e1) +end +function c43898403.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 c43898403.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c43898403.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c43898403.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c43898403.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c43898403.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,2,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c43898403.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c43932460.lua b/script/c43932460.lua index cdcb3351..6d2cec2b 100644 --- a/script/c43932460.lua +++ b/script/c43932460.lua @@ -43,8 +43,7 @@ end function c43932460.disop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c4404099.lua b/script/c4404099.lua index 227099a0..aea5fccb 100644 --- a/script/c4404099.lua +++ b/script/c4404099.lua @@ -1,53 +1,53 @@ ---海底に潜む深海竜 -function c4404099.initial_effect(c) - c:EnableCounterPermit(0x23) - --add counter - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(4404099,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetTarget(c4404099.addct) - e1:SetOperation(c4404099.addc) - c:RegisterEffect(e1) - --attackup - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(4404099,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetCondition(c4404099.atkcon) - e2:SetOperation(c4404099.atkop) - c:RegisterEffect(e2) -end -function c4404099.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x23) -end -function c4404099.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x23,1) - end -end -function c4404099.atkcon(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetHandler():GetCounter(0x23) - e:SetLabel(ct) - return ct>0 and not e:GetHandler():IsLocation(LOCATION_DECK) -end -function c4404099.filter(c) - return c:IsFaceup() and c:IsRace(RACE_FISH+RACE_SEASERPENT) -end -function c4404099.atkop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c4404099.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(e:GetLabel()*200) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--海底に潜む深海竜 +function c4404099.initial_effect(c) + c:EnableCounterPermit(0x23) + --add counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4404099,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetTarget(c4404099.addct) + e1:SetOperation(c4404099.addc) + c:RegisterEffect(e1) + --attackup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4404099,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c4404099.atkcon) + e2:SetOperation(c4404099.atkop) + c:RegisterEffect(e2) +end +function c4404099.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x23) +end +function c4404099.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x23,1) + end +end +function c4404099.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetHandler():GetCounter(0x23) + e:SetLabel(ct) + return ct>0 and not e:GetHandler():IsLocation(LOCATION_DECK) +end +function c4404099.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FISH+RACE_SEASERPENT) +end +function c4404099.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c4404099.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()*200) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c44046281.lua b/script/c44046281.lua index 81ef3b0e..175d5c70 100644 --- a/script/c44046281.lua +++ b/script/c44046281.lua @@ -41,7 +41,7 @@ end function c44046281.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 Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 and tc:IsLocation(LOCATION_REMOVED) then c:SetCardTarget(tc) end end diff --git a/script/c44052074.lua b/script/c44052074.lua new file mode 100644 index 00000000..f84eef2b --- /dev/null +++ b/script/c44052074.lua @@ -0,0 +1,84 @@ +--古代の機械射出機 +function c44052074.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44052074,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,44052074) + e1:SetCondition(c44052074.spcon) + e1:SetTarget(c44052074.sptg) + e1:SetOperation(c44052074.spop) + c:RegisterEffect(e1) + --token + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44052074,1)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,44052074) + e2:SetCost(c44052074.tkcost) + e2:SetTarget(c44052074.tktg) + e2:SetOperation(c44052074.tkop) + c:RegisterEffect(e2) +end +function c44052074.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c44052074.spfilter(c,e,tp) + return c:IsSetCard(0x7) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c44052074.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc:IsFaceup() and chkc~=e:GetHandler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(c44052074.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c44052074.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c44052074.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end + end +end +function c44052074.tkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c44052074.tktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(e:GetLabel()) and chkc:IsControler(tp) and chkc:IsFaceup() end + if chk==0 then + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local loc=LOCATION_ONFIELD + if ft==0 then loc=LOCATION_MZONE end + e:SetLabel(loc) + return Duel.IsExistingTarget(Card.IsFaceup,tp,loc,0,1,nil) + and Duel.IsPlayerCanSpecialSummonMonster(tp,44052075,0x7,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_EARTH) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,e:GetLabel(),0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c44052074.tkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,44052075,0x7,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_EARTH) then return end + local token=Duel.CreateToken(tp,44052075) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c440556.lua b/script/c440556.lua index d651d098..4566a75f 100644 --- a/script/c440556.lua +++ b/script/c440556.lua @@ -8,6 +8,7 @@ function c440556.initial_effect(c) e1:SetDescription(aux.Stringid(440556,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c440556.spcost) diff --git a/script/c44125452.lua b/script/c44125452.lua index 8dfc2ee0..405933ae 100644 --- a/script/c44125452.lua +++ b/script/c44125452.lua @@ -1,28 +1,28 @@ ---薔薇の妖精 -function c44125452.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(44125452,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_HAND) - e1:SetCondition(c44125452.condition) - e1:SetTarget(c44125452.target) - e1:SetOperation(c44125452.operation) - c:RegisterEffect(e1) -end -function c44125452.condition(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_DECK) and e:GetHandler():GetPreviousControler()==tp -end -function c44125452.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c44125452.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) - end -end +--薔薇の妖精 +function c44125452.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44125452,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c44125452.condition) + e1:SetTarget(c44125452.target) + e1:SetOperation(c44125452.operation) + c:RegisterEffect(e1) +end +function c44125452.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_DECK) and e:GetHandler():GetPreviousControler()==tp +end +function c44125452.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c44125452.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c44155002.lua b/script/c44155002.lua index fec7434d..4823e2a4 100644 --- a/script/c44155002.lua +++ b/script/c44155002.lua @@ -14,8 +14,7 @@ end function c44155002.disop(e,tp,eg,ep,ev,re,r,rp) if ep==tp or Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)~=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) then return end local rc=re:GetHandler() - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then Duel.Destroy(rc,REASON_EFFECT) end end diff --git a/script/c44182827.lua b/script/c44182827.lua index ba1b9f3e..7b26bf91 100644 --- a/script/c44182827.lua +++ b/script/c44182827.lua @@ -8,7 +8,7 @@ function c44182827.initial_effect(c) --remove local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) e2:SetRange(LOCATION_SZONE) e2:SetTarget(c44182827.rmtarget) diff --git a/script/c44209392.lua b/script/c44209392.lua index a0169851..0233bfc7 100644 --- a/script/c44209392.lua +++ b/script/c44209392.lua @@ -1,34 +1,34 @@ ---城壁 -function c44209392.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DEFCHANGE) - 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(c44209392.condition) - e1:SetTarget(c44209392.target) - e1:SetOperation(c44209392.activate) - c:RegisterEffect(e1) -end -function c44209392.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c44209392.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c44209392.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_DEFENSE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(500) - tc:RegisterEffect(e1) - end -end +--城壁 +function c44209392.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c44209392.condition) + e1:SetTarget(c44209392.target) + e1:SetOperation(c44209392.activate) + c:RegisterEffect(e1) +end +function c44209392.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c44209392.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c44209392.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c4423206.lua b/script/c4423206.lua index 8bf3860e..36831fba 100644 --- a/script/c4423206.lua +++ b/script/c4423206.lua @@ -8,6 +8,7 @@ function c4423206.initial_effect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetDescription(aux.Stringid(4423206,0)) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c4423206.cost) @@ -32,18 +33,29 @@ function c4423206.spop(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,c4423206.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(4423206,RESET_EVENT+0x1fe0000,0,1,fid) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetOperation(c4423206.desop) - e1:SetReset(RESET_EVENT+0x1fe0000) e1:SetCountLimit(1) - g:GetFirst():RegisterEffect(e1,true) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c4423206.descon) + e1:SetOperation(c4423206.desop) + Duel.RegisterEffect(e1,tp) end end +function c4423206.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(4423206)~=e:GetLabel() then + e:Reset() + return false + else return true end +end function c4423206.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) end diff --git a/script/c44236692.lua b/script/c44236692.lua index 5d79505e..17a0b950 100644 --- a/script/c44236692.lua +++ b/script/c44236692.lua @@ -1,41 +1,41 @@ ---ネクロ・リンカー -function c44236692.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(44236692,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c44236692.spcost) - e1:SetTarget(c44236692.sptg) - e1:SetOperation(c44236692.spop) - c:RegisterEffect(e1) -end -function c44236692.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c44236692.filter(c,e,tp) - return c:IsSetCard(0x17) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c44236692.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c44236692.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c44236692.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c44236692.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c44236692.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--ネクロ・リンカー +function c44236692.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44236692,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c44236692.spcost) + e1:SetTarget(c44236692.sptg) + e1:SetOperation(c44236692.spop) + c:RegisterEffect(e1) +end +function c44236692.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c44236692.filter(c,e,tp) + return c:IsSetCard(0x1017) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c44236692.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c44236692.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c44236692.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c44236692.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c44236692.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c44311445.lua b/script/c44311445.lua index 17419980..55a29256 100644 --- a/script/c44311445.lua +++ b/script/c44311445.lua @@ -16,6 +16,7 @@ function c44311445.initial_effect(c) --spsummon local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetRange(LOCATION_MZONE) e2:SetCode(EVENT_TO_DECK) diff --git a/script/c44394295.lua b/script/c44394295.lua index 65592333..c49677f8 100644 --- a/script/c44394295.lua +++ b/script/c44394295.lua @@ -1,84 +1,84 @@ ---影依融合 -function c44394295.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,44394295+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c44394295.target) - e1:SetOperation(c44394295.activate) - c:RegisterEffect(e1) -end -function c44394295.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() -end -function c44394295.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) -end -function c44394295.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9d) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c44394295.cfilter(c) - return c:GetSummonLocation()==LOCATION_EXTRA -end -function c44394295.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local loc=LOCATION_HAND+LOCATION_MZONE - if Duel.IsExistingMatchingCard(c44394295.cfilter,tp,0,LOCATION_MZONE,1,nil) then - loc=loc+LOCATION_DECK - end - local mg1=Duel.GetMatchingGroup(c44394295.filter0,tp,loc,0,nil) - local res=Duel.IsExistingMatchingCard(c44394295.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c44394295.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c44394295.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local loc=LOCATION_HAND+LOCATION_MZONE - if Duel.IsExistingMatchingCard(c44394295.cfilter,tp,0,LOCATION_MZONE,1,nil) then - loc=loc+LOCATION_DECK - end - local mg1=Duel.GetMatchingGroup(c44394295.filter1,tp,loc,0,nil,e) - local sg1=Duel.GetMatchingGroup(c44394295.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c44394295.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--影依融合 +function c44394295.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON+CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,44394295+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c44394295.target) + e1:SetOperation(c44394295.activate) + c:RegisterEffect(e1) +end +function c44394295.filter0(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave() +end +function c44394295.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c44394295.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9d) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c44394295.cfilter(c) + return c:GetSummonLocation()==LOCATION_EXTRA +end +function c44394295.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + if Duel.IsExistingMatchingCard(c44394295.cfilter,tp,0,LOCATION_MZONE,1,nil) then + local mg2=Duel.GetMatchingGroup(c44394295.filter0,tp,LOCATION_DECK,0,nil) + mg1:Merge(mg2) + end + local res=Duel.IsExistingMatchingCard(c44394295.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c44394295.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c44394295.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c44394295.filter1,nil,e) + if Duel.IsExistingMatchingCard(c44394295.cfilter,tp,0,LOCATION_MZONE,1,nil) then + local mg2=Duel.GetMatchingGroup(c44394295.filter0,tp,LOCATION_DECK,0,nil) + mg1:Merge(mg2) + end + local sg1=Duel.GetMatchingGroup(c44394295.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg3=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c44394295.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c44397496.lua b/script/c44397496.lua index 7e503bfc..3fa3b833 100644 --- a/script/c44397496.lua +++ b/script/c44397496.lua @@ -1,29 +1,29 @@ ---レッドアイズ・スピリッツ -function c44397496.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c44397496.target) - e1:SetOperation(c44397496.activate) - c:RegisterEffect(e1) -end -function c44397496.filter(c,e,tp) - return c:IsSetCard(0x3b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c44397496.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c44397496.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c44397496.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c44397496.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c44397496.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--レッドアイズ・スピリッツ +function c44397496.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c44397496.target) + e1:SetOperation(c44397496.activate) + c:RegisterEffect(e1) +end +function c44397496.filter(c,e,tp) + return c:IsSetCard(0x3b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c44397496.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c44397496.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c44397496.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c44397496.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c44397496.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c44405066.lua b/script/c44405066.lua index 741aa660..1dbbb8b5 100644 --- a/script/c44405066.lua +++ b/script/c44405066.lua @@ -33,7 +33,7 @@ function c44405066.initial_effect(c) e4:SetType(EFFECT_TYPE_QUICK_O) e4:SetCode(EVENT_FREE_CHAIN) e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e4:SetCountLimit(1) e4:SetCost(c44405066.spcost) e4:SetTarget(c44405066.sptg) diff --git a/script/c44481227.lua b/script/c44481227.lua index 3877b903..039d1447 100644 --- a/script/c44481227.lua +++ b/script/c44481227.lua @@ -1,76 +1,76 @@ ---EMラクダウン -function c44481227.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - -- - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetCondition(c44481227.condition) - e2:SetTarget(c44481227.target) - e2:SetOperation(c44481227.operation) - c:RegisterEffect(e2) - --atk down - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_ATKCHANGE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLE_DESTROYED) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCondition(c44481227.atkcon) - e3:SetOperation(c44481227.atkop) - c:RegisterEffect(e3) -end -function c44481227.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c44481227.filter(c) - return c:IsFaceup() and not c:IsHasEffect(EFFECT_PIERCE) -end -function c44481227.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c44481227.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c44481227.filter,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c44481227.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c44481227.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - if g:GetCount()==0 then return end - local gc=g:GetFirst() - while gc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_DEFENSE) - e1:SetValue(-800) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - gc:RegisterEffect(e1) - gc=g:GetNext() - end - if tc:IsRelateToEffect(e) then - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end -function c44481227.atkcon(e,tp,eg,ep,ev,re,r,rp) - local rc=e:GetHandler():GetReasonCard() - return rc:IsRelateToBattle() -end -function c44481227.atkop(e,tp,eg,ep,ev,re,r,rp) - local rc=e:GetHandler():GetReasonCard() - if rc:IsRelateToBattle() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-800) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1) - end -end +--EMラクダウン +function c44481227.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c44481227.condition) + e2:SetTarget(c44481227.target) + e2:SetOperation(c44481227.operation) + c:RegisterEffect(e2) + --atk down + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCondition(c44481227.atkcon) + e3:SetOperation(c44481227.atkop) + c:RegisterEffect(e3) +end +function c44481227.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c44481227.filter(c) + return c:IsFaceup() and not c:IsHasEffect(EFFECT_PIERCE) +end +function c44481227.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c44481227.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c44481227.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c44481227.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c44481227.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + local gc=g:GetFirst() + while gc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + gc:RegisterEffect(e1) + gc=g:GetNext() + end + if tc:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c44481227.atkcon(e,tp,eg,ep,ev,re,r,rp) + local rc=e:GetHandler():GetReasonCard() + return rc:IsRelateToBattle() +end +function c44481227.atkop(e,tp,eg,ep,ev,re,r,rp) + local rc=e:GetHandler():GetReasonCard() + if rc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1) + end +end diff --git a/script/c44487250.lua b/script/c44487250.lua index 634b0fd1..13872e19 100644 --- a/script/c44487250.lua +++ b/script/c44487250.lua @@ -26,8 +26,7 @@ function c44487250.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c44487250.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c44505297.lua b/script/c44505297.lua index 7e6d16da..efca8e93 100644 --- a/script/c44505297.lua +++ b/script/c44505297.lua @@ -20,7 +20,7 @@ function c44505297.initial_effect(c) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCategory(CATEGORY_TOGRAVE) e2:SetCost(c44505297.tgcost) e2:SetTarget(c44505297.tgtg) diff --git a/script/c44508094.lua b/script/c44508094.lua index dfeab24f..93b237d8 100644 --- a/script/c44508094.lua +++ b/script/c44508094.lua @@ -1,66 +1,65 @@ ---スターダスト・ドラゴン -function c44508094.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --Negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(44508094,0)) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c44508094.condition) - e1:SetCost(c44508094.cost) - e1:SetTarget(c44508094.target) - e1:SetOperation(c44508094.operation) - c:RegisterEffect(e1) - --Revive - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(44508094,1)) - e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1) - e2:SetTarget(c44508094.sumtg) - e2:SetOperation(c44508094.sumop) - c:RegisterEffect(e2) -end -function c44508094.condition(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end - if re:IsHasCategory(CATEGORY_NEGATE) - and Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end - local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) - return ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0 -end -function c44508094.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c44508094.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c44508094.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end - e:GetHandler():RegisterFlagEffect(44508094,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) -end -function c44508094.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(44508094)>0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c44508094.sumop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end +--スターダスト・ドラゴン +function c44508094.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44508094,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c44508094.condition) + e1:SetCost(c44508094.cost) + e1:SetTarget(c44508094.target) + e1:SetOperation(c44508094.operation) + c:RegisterEffect(e1) + --Revive + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44508094,1)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1) + e2:SetTarget(c44508094.sumtg) + e2:SetOperation(c44508094.sumop) + c:RegisterEffect(e2) +end +function c44508094.condition(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end + if re:IsHasCategory(CATEGORY_NEGATE) + and Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0 +end +function c44508094.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c44508094.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c44508094.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + e:GetHandler():RegisterFlagEffect(44508094,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) +end +function c44508094.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(44508094)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c44508094.sumop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c44656491.lua b/script/c44656491.lua index 93dc2332..256cf02a 100644 --- a/script/c44656491.lua +++ b/script/c44656491.lua @@ -1,39 +1,39 @@ ---平和の使者 -function c44656491.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cannot attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c44656491.atktarget) - c:RegisterEffect(e2) - --maintain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c44656491.mtcon) - e3:SetOperation(c44656491.mtop) - c:RegisterEffect(e3) -end -function c44656491.atktarget(e,c) - return c:GetAttack()>=1500 -end -function c44656491.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c44656491.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,100) and Duel.SelectYesNo(tp,aux.Stringid(44656491,0)) then - Duel.PayLPCost(tp,100) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--平和の使者 +function c44656491.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c44656491.atktarget) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c44656491.mtcon) + e3:SetOperation(c44656491.mtop) + c:RegisterEffect(e3) +end +function c44656491.atktarget(e,c) + return c:GetAttack()>=1500 +end +function c44656491.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c44656491.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,100) and Duel.SelectYesNo(tp,aux.Stringid(44656491,0)) then + Duel.PayLPCost(tp,100) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c4466015.lua b/script/c4466015.lua index 992d83bc..2c09dfd4 100644 --- a/script/c4466015.lua +++ b/script/c4466015.lua @@ -1,30 +1,30 @@ ---ヴェノム・スプラッシュ -function c4466015.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c4466015.target) - e1:SetOperation(c4466015.activate) - c:RegisterEffect(e1) -end -function c4466015.filter(c) - return c:GetCounter(0x1009)>0 -end -function c4466015.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c4466015.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c4466015.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c4466015.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetCounter(0x1009)*700) -end -function c4466015.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local ct=tc:GetCounter(0x1009) - if ct>0 then - tc:RemoveCounter(tp,0x1009,ct,REASON_EFFECT) - Duel.Damage(1-tp,ct*700,REASON_EFFECT) - end -end +--ヴェノム・スプラッシュ +function c4466015.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c4466015.target) + e1:SetOperation(c4466015.activate) + c:RegisterEffect(e1) +end +function c4466015.filter(c) + return c:GetCounter(0x1009)>0 +end +function c4466015.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c4466015.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c4466015.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c4466015.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetCounter(0x1009)*700) +end +function c4466015.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local ct=tc:GetCounter(0x1009) + if ct>0 then + tc:RemoveCounter(tp,0x1009,ct,REASON_EFFECT) + Duel.Damage(1-tp,ct*700,REASON_EFFECT) + end +end diff --git a/script/c44663232.lua b/script/c44663232.lua index 592eb654..5574875f 100644 --- a/script/c44663232.lua +++ b/script/c44663232.lua @@ -1,37 +1,37 @@ ---異怪の妖精 エルフォビア -function c44663232.initial_effect(c) - --activate limit - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(44663232,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCost(c44663232.cost) - e2:SetOperation(c44663232.operation) - c:RegisterEffect(e2) -end -function c44663232.cfilter(c) - return c:IsAttribute(ATTRIBUTE_WIND) and not c:IsPublic() -end -function c44663232.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c44663232.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local g=Duel.SelectMatchingCard(tp,c44663232.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.ConfirmCards(1-tp,g) - e:SetLabel(g:GetFirst():GetLevel()) - Duel.ShuffleHand(tp) -end -function c44663232.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(1,1) - e1:SetLabel(e:GetLabel()+1) - e1:SetReset(RESET_PHASE+PHASE_MAIN1+RESET_OPPO_TURN) - e1:SetValue(c44663232.val) - Duel.RegisterEffect(e1,tp) -end -function c44663232.val(e,re,tp) - return re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsLevelAbove(e:GetLabel()) and not re:GetHandler():IsImmuneToEffect(e) -end +--異怪の妖精 エルフォビア +function c44663232.initial_effect(c) + --activate limit + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44663232,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c44663232.cost) + e2:SetOperation(c44663232.operation) + c:RegisterEffect(e2) +end +function c44663232.cfilter(c) + return c:IsAttribute(ATTRIBUTE_WIND) and not c:IsPublic() +end +function c44663232.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c44663232.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c44663232.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + e:SetLabel(g:GetFirst():GetLevel()) + Duel.ShuffleHand(tp) +end +function c44663232.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,1) + e1:SetLabel(e:GetLabel()+1) + e1:SetReset(RESET_PHASE+PHASE_MAIN1+RESET_OPPO_TURN) + e1:SetValue(c44663232.val) + Duel.RegisterEffect(e1,tp) +end +function c44663232.val(e,re,tp) + return re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsLevelAbove(e:GetLabel()) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c44665365.lua b/script/c44665365.lua index de70b638..67cec5c8 100644 --- a/script/c44665365.lua +++ b/script/c44665365.lua @@ -37,8 +37,7 @@ function c44665365.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c44665365.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c4474060.lua b/script/c4474060.lua index d88288a0..93ee4f26 100644 --- a/script/c4474060.lua +++ b/script/c4474060.lua @@ -57,7 +57,8 @@ function c4474060.atkfilter(c) end function c4474060.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c4474060.atkfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c4474060.atkfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)>0 and + Duel.IsExistingTarget(c4474060.atkfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) Duel.SelectTarget(tp,c4474060.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) end diff --git a/script/c44762290.lua b/script/c44762290.lua index ea81bf83..a7b80643 100644 --- a/script/c44762290.lua +++ b/script/c44762290.lua @@ -1,43 +1,9 @@ --光学迷彩アーマー function c44762290.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(c44762290.target) - e1:SetOperation(c44762290.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterEqualFunction(Card.GetLevel,1)) --direct attack local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_DIRECT_ATTACK) 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(c44762290.eqlimit) - c:RegisterEffect(e3) -end -function c44762290.eqlimit(e,c) - return c:GetLevel()==1 -end -function c44762290.filter(c) - return c:IsFaceup() and c:GetLevel()==1 -end -function c44762290.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c44762290.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c44762290.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c44762290.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c44762290.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 diff --git a/script/c44763025.lua b/script/c44763025.lua index 6c9f6cf4..5586c890 100644 --- a/script/c44763025.lua +++ b/script/c44763025.lua @@ -1,36 +1,36 @@ ---いたずら好きな双子悪魔 -function c44763025.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_HANDES) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c44763025.cost) - e1:SetTarget(c44763025.target) - e1:SetOperation(c44763025.activate) - c:RegisterEffect(e1) -end -function c44763025.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 c44763025.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end - Duel.SetTargetPlayer(tp) - Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,2) -end -function c44763025.activate(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local g=Duel.GetFieldGroup(p,0,LOCATION_HAND) - if g:GetCount()>0 then - local sg=g:RandomSelect(p,1) - Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) - g:RemoveCard(sg:GetFirst()) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,1-p,HINTMSG_DISCARD) - sg=g:Select(1-p,1,1,nil) - Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) - end - end -end +--いたずら好きな双子悪魔 +function c44763025.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c44763025.cost) + e1:SetTarget(c44763025.target) + e1:SetOperation(c44763025.activate) + c:RegisterEffect(e1) +end +function c44763025.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 c44763025.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,2) +end +function c44763025.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,0,LOCATION_HAND) + if g:GetCount()>0 then + local sg=g:RandomSelect(p,1) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + g:RemoveCard(sg:GetFirst()) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,1-p,HINTMSG_DISCARD) + sg=g:Select(1-p,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + end + end +end diff --git a/script/c44771289.lua b/script/c44771289.lua index 49c34585..f68bb079 100644 --- a/script/c44771289.lua +++ b/script/c44771289.lua @@ -1,109 +1,109 @@ ---旅人の結彼岸 -function c44771289.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(44771289,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c44771289.target) - e1:SetOperation(c44771289.activate) - c:RegisterEffect(e1) - --atk & def - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(44771289,1)) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCondition(aux.exccon) - e2:SetCost(c44771289.atkcost) - e2:SetTarget(c44771289.atktg) - e2:SetOperation(c44771289.atkop) - c:RegisterEffect(e2) -end -function c44771289.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c44771289.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0xb1) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c44771289.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c44771289.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c44771289.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c44771289.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c44771289.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c44771289.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c44771289.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end -function c44771289.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) -end -function c44771289.atkfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb1) -end -function c44771289.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c44771289.atkfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c44771289.atkfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c44771289.atkfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c44771289.atkop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(800) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - end -end +--旅人の結彼岸 +function c44771289.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44771289,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c44771289.target) + e1:SetOperation(c44771289.activate) + c:RegisterEffect(e1) + --atk & def + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44771289,1)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(aux.exccon) + e2:SetCost(c44771289.atkcost) + e2:SetTarget(c44771289.atktg) + e2:SetOperation(c44771289.atkop) + c:RegisterEffect(e2) +end +function c44771289.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c44771289.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0xb1) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c44771289.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c44771289.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c44771289.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c44771289.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c44771289.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c44771289.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c44771289.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c44771289.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end +function c44771289.atkfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb1) +end +function c44771289.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c44771289.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c44771289.atkfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c44771289.atkfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c44771289.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c44811425.lua b/script/c44811425.lua index 6351ca68..c5be3a9b 100644 --- a/script/c44811425.lua +++ b/script/c44811425.lua @@ -1,38 +1,39 @@ ---ワーム・リンクス -function c44811425.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_FLIP) - e1:SetOperation(c44811425.flipop) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(44811425,0)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetCondition(c44811425.drcon) - e2:SetTarget(c44811425.drtg) - e2:SetOperation(c44811425.drop) - c:RegisterEffect(e2) -end -function c44811425.flipop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(44811425,RESET_EVENT+0x1fc0000,0,1) -end -function c44811425.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(44811425)~=0 -end -function c44811425.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c44811425.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--ワーム・リンクス +function c44811425.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_FLIP) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetOperation(c44811425.flipop) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44811425,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCondition(c44811425.drcon) + e2:SetTarget(c44811425.drtg) + e2:SetOperation(c44811425.drop) + c:RegisterEffect(e2) +end +function c44811425.flipop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(44811425,RESET_EVENT+0x1fc0000,0,1) +end +function c44811425.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(44811425)~=0 +end +function c44811425.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c44811425.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c44852429.lua b/script/c44852429.lua index b0b8348a..a7188ef4 100644 --- a/script/c44852429.lua +++ b/script/c44852429.lua @@ -1,85 +1,85 @@ ---DDD呪血王サイフリート -function c44852429.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsSetCard,0xaf),1) - c:EnableReviveLimit() - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(44852429,0)) - e1:SetCategory(CATEGORY_DISABLE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetHintTiming(0,0x1c0) - e1:SetCountLimit(1,44852429) - e1:SetTarget(c44852429.negtg) - e1:SetOperation(c44852429.negop) - c:RegisterEffect(e1) - --recover - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(44852429,1)) - e2:SetCategory(CATEGORY_RECOVER) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c44852429.reccon) - e2:SetTarget(c44852429.rectg) - e2:SetOperation(c44852429.recop) - c:RegisterEffect(e2) -end -function c44852429.negfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and aux.disfilter1(c) -end -function c44852429.negtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c44852429.negfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c44852429.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c44852429.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c44852429.negop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_DISABLE) - if Duel.GetCurrentPhase()==PHASE_STANDBY then - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,2) - else - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY) - end - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - tc:RegisterEffect(e2) - if tc:IsType(TYPE_TRAPMONSTER) then - local e3=e1:Clone() - e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) - tc:RegisterEffect(e3) - end - end -end -function c44852429.reccon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) -end -function c44852429.recfilter(c) - return c:IsFaceup() and c:IsSetCard(0xae) -end -function c44852429.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local ct=Duel.GetMatchingGroupCount(c44852429.recfilter,tp,LOCATION_ONFIELD,0,nil) - Duel.SetTargetPlayer(tp) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ct*1000) -end -function c44852429.recop(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local ct=Duel.GetMatchingGroupCount(c44852429.recfilter,p,LOCATION_ONFIELD,0,nil) - if ct>0 then - Duel.Recover(p,ct*1000,REASON_EFFECT) - end -end +--DDD呪血王サイフリート +function c44852429.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsSetCard,0xaf),1) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44852429,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(0,0x1c0) + e1:SetCountLimit(1,44852429) + e1:SetTarget(c44852429.negtg) + e1:SetOperation(c44852429.negop) + c:RegisterEffect(e1) + --recover + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44852429,1)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c44852429.reccon) + e2:SetTarget(c44852429.rectg) + e2:SetOperation(c44852429.recop) + c:RegisterEffect(e2) +end +function c44852429.negfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and aux.disfilter1(c) +end +function c44852429.negtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c44852429.negfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c44852429.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c44852429.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c44852429.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + if Duel.GetCurrentPhase()==PHASE_STANDBY then + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,2) + else + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY) + end + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=e1:Clone() + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + tc:RegisterEffect(e3) + end + end +end +function c44852429.reccon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c44852429.recfilter(c) + return c:IsFaceup() and c:IsSetCard(0xae) +end +function c44852429.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetMatchingGroupCount(c44852429.recfilter,tp,LOCATION_ONFIELD,0,nil) + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ct*1000) +end +function c44852429.recop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(c44852429.recfilter,p,LOCATION_ONFIELD,0,nil) + if ct>0 then + Duel.Recover(p,ct*1000,REASON_EFFECT) + end +end diff --git a/script/c44874522.lua b/script/c44874522.lua new file mode 100644 index 00000000..93814c83 --- /dev/null +++ b/script/c44874522.lua @@ -0,0 +1,96 @@ +--古代の機械熱核竜 +function c44874522.initial_effect(c) + --mat check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MATERIAL_CHECK) + e1:SetValue(c44874522.valcheck) + c:RegisterEffect(e1) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c44874522.regcon) + e2:SetOperation(c44874522.regop) + c:RegisterEffect(e2) + e2:SetLabelObject(e1) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetValue(c44874522.aclimit) + e3:SetCondition(c44874522.actcon) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(44874522,0)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetCondition(c44874522.condition) + e4:SetTarget(c44874522.target) + e4:SetOperation(c44874522.operation) + c:RegisterEffect(e4) +end +function c44874522.valcheck(e,c) + local g=c:GetMaterial() + local flag=0 + local tc=g:GetFirst() + while tc do + if tc:IsSetCard(0x7) then flag=bit.bor(flag,0x1) end + if tc:IsSetCard(0x51) then flag=bit.bor(flag,0x2) end + tc=g:GetNext() + end + e:SetLabel(flag) +end +function c44874522.regcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c44874522.regop(e,tp,eg,ep,ev,re,r,rp) + local flag=e:GetLabelObject():GetLabel() + local c=e:GetHandler() + if bit.band(flag,0x1)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end + if bit.band(flag,0x2)~=0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c44874522.aclimit(e,re,tp) + return (re:IsHasType(EFFECT_TYPE_ACTIVATE) or re:IsActiveType(TYPE_MONSTER)) and not re:GetHandler():IsImmuneToEffect(e) +end +function c44874522.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end +function c44874522.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler() +end +function c44874522.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c44874522.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c44874522.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c44874522.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c44874522.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c44874522.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c44877690.lua b/script/c44877690.lua index ccc281e9..f3e32e12 100644 --- a/script/c44877690.lua +++ b/script/c44877690.lua @@ -5,7 +5,6 @@ function c44877690.initial_effect(c) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) c:RegisterEffect(e1) --summon,flip local e2=Effect.CreateEffect(c) @@ -31,7 +30,7 @@ function c44877690.retreg(e,tp,eg,ep,ev,re,r,rp) e1:SetReset(RESET_EVENT+0x1ee0000+RESET_PHASE+PHASE_END) e1:SetCondition(c44877690.retcon) e1:SetTarget(c44877690.rettg) - e1:SetOperation(c44877690.retop) + e1:SetOperation(aux.SpiritReturnOperation) c:RegisterEffect(e1) local e2=e1:Clone() e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) @@ -54,28 +53,16 @@ function c44877690.cfilter(c) return c:IsFaceup() and c:IsSetCard(0x2f) end function c44877690.retcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.IsExistingMatchingCard(c44877690.cfilter,tp,LOCATION_MZONE,0,1,c) then return false end - if c:IsHasEffect(EFFECT_SPIRIT_DONOT_RETURN) then return false end - if e:IsHasType(EFFECT_TYPE_TRIGGER_F) then - return not c:IsHasEffect(EFFECT_SPIRIT_MAYNOT_RETURN) - else return c:IsHasEffect(EFFECT_SPIRIT_MAYNOT_RETURN) end + if Duel.IsExistingMatchingCard(c44877690.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) then return false end + return aux.SpiritReturnCondition(e,tp,eg,ep,ev,re,r,rp) end function c44877690.rettg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(44877690)==0 end Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) e:GetHandler():RegisterFlagEffect(44877690,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) end -function c44877690.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end function c44877690.retcon2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return Duel.IsExistingMatchingCard(c44877690.cfilter,tp,LOCATION_MZONE,0,1,c) - and not c:IsHasEffect(EFFECT_SPIRIT_DONOT_RETURN) + return Duel.IsExistingMatchingCard(c44877690.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end function c44877690.rettg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToHand() end diff --git a/script/c44887817.lua b/script/c44887817.lua index 0af716f6..e533be80 100644 --- a/script/c44887817.lua +++ b/script/c44887817.lua @@ -1,71 +1,71 @@ ---増草剤 -function c44887817.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(44887817,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_SZONE) - e2:SetCost(c44887817.cost) - e2:SetTarget(c44887817.target) - e2:SetOperation(c44887817.operation) - c:RegisterEffect(e2) - --Destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetCondition(c44887817.descon) - e3:SetOperation(c44887817.desop) - c:RegisterEffect(e3) -end -function c44887817.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 end -end -function c44887817.filter(c,e,tp) - return c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c44887817.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c44887817.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c44887817.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c44887817.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c44887817.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) then - if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end - c:SetCardTarget(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone(e1) - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) - end -end -function c44887817.dfilter(c,sg) - return sg:IsContains(c) -end -function c44887817.descon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetCardTargetCount()==0 then return false end - return c:GetCardTarget():IsExists(c44887817.dfilter,1,nil,eg) -end -function c44887817.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--増草剤 +function c44887817.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44887817,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c44887817.cost) + e2:SetTarget(c44887817.target) + e2:SetOperation(c44887817.operation) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c44887817.descon) + e3:SetOperation(c44887817.desop) + c:RegisterEffect(e3) +end +function c44887817.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 end +end +function c44887817.filter(c,e,tp) + return c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c44887817.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c44887817.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c44887817.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c44887817.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c44887817.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone(e1) + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) + end +end +function c44887817.dfilter(c,sg) + return sg:IsContains(c) +end +function c44887817.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetCardTargetCount()==0 then return false end + return c:GetCardTarget():IsExists(c44887817.dfilter,1,nil,eg) +end +function c44887817.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c44910027.lua b/script/c44910027.lua index eb9408dc..570ecf97 100644 --- a/script/c44910027.lua +++ b/script/c44910027.lua @@ -36,9 +36,9 @@ function c44910027.initial_effect(c) e4:SetCode(EFFECT_MATCH_KILL) c:RegisterEffect(e4) end -function c44910027.ttcon(e,c) +function c44910027.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c44910027.ttop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,3,3) diff --git a/script/c44920699.lua b/script/c44920699.lua index b2d2c0fc..b6b30637 100644 --- a/script/c44920699.lua +++ b/script/c44920699.lua @@ -1,47 +1,47 @@ ---炎舞-「天璇」 -function c44920699.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(c44920699.condition) - e1:SetTarget(c44920699.target) - e1:SetOperation(c44920699.activate) - c:RegisterEffect(e1) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_BEASTWARRIOR)) - e3:SetValue(300) - c:RegisterEffect(e3) -end -function c44920699.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c44920699.filter(c) - return c:IsFaceup() and c:IsRace(RACE_BEASTWARRIOR) -end -function c44920699.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c44920699.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c44920699.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c44920699.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c44920699.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(700) - tc:RegisterEffect(e1) - end -end +--炎舞-「天璇」 +function c44920699.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(c44920699.condition) + e1:SetTarget(c44920699.target) + e1:SetOperation(c44920699.activate) + c:RegisterEffect(e1) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_BEASTWARRIOR)) + e3:SetValue(300) + c:RegisterEffect(e3) +end +function c44920699.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c44920699.filter(c) + return c:IsFaceup() and c:IsRace(RACE_BEASTWARRIOR) +end +function c44920699.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c44920699.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c44920699.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c44920699.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c44920699.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(700) + tc:RegisterEffect(e1) + end +end diff --git a/script/c44928016.lua b/script/c44928016.lua index bfe6ed88..8d0a306d 100644 --- a/script/c44928016.lua +++ b/script/c44928016.lua @@ -1,36 +1,36 @@ ---にん人 -function c44928016.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(44928016,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1,44928016) - e1:SetCost(c44928016.cost) - e1:SetTarget(c44928016.target) - e1:SetOperation(c44928016.operation) - c:RegisterEffect(e1) -end -function c44928016.cfilter(c) - return c:IsRace(RACE_PLANT) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and not c:IsCode(44928016) and c:IsAbleToGraveAsCost() -end -function c44928016.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local loc=LOCATION_MZONE+LOCATION_HAND - if Duel.GetLocationCount(tp,LOCATION_MZONE)==0 then loc=LOCATION_MZONE end - if chk==0 then return Duel.IsExistingMatchingCard(c44928016.cfilter,tp,loc,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c44928016.cfilter,tp,loc,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c44928016.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c44928016.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) - end -end +--にん人 +function c44928016.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44928016,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1,44928016) + e1:SetCost(c44928016.cost) + e1:SetTarget(c44928016.target) + e1:SetOperation(c44928016.operation) + c:RegisterEffect(e1) +end +function c44928016.cfilter(c) + return c:IsRace(RACE_PLANT) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and not c:IsCode(44928016) and c:IsAbleToGraveAsCost() +end +function c44928016.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local loc=LOCATION_MZONE+LOCATION_HAND + if Duel.GetLocationCount(tp,LOCATION_MZONE)==0 then loc=LOCATION_MZONE end + if chk==0 then return Duel.IsExistingMatchingCard(c44928016.cfilter,tp,loc,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c44928016.cfilter,tp,loc,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c44928016.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c44928016.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c44944304.lua b/script/c44944304.lua new file mode 100644 index 00000000..9fe80e15 --- /dev/null +++ b/script/c44944304.lua @@ -0,0 +1,94 @@ +--EMラフメイカー +function c44944304.initial_effect(c) + aux.EnablePendulumAttribute(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44944304,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1) + e1:SetCondition(c44944304.rccon) + e1:SetTarget(c44944304.rctg) + e1:SetOperation(c44944304.rcop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44944304,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCountLimit(1,44944304) + e2:SetCondition(c44944304.atkcon) + e2:SetOperation(c44944304.atkop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(44944304,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_DESTROYED) + e3:SetCountLimit(1,44944304) + e3:SetCondition(c44944304.spcon) + e3:SetTarget(c44944304.sptg) + e3:SetOperation(c44944304.spop) + c:RegisterEffect(e3) +end +function c44944304.rcfilter(c) + return c:IsFaceup() and c:GetAttack()>c:GetBaseAttack() +end +function c44944304.rccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c44944304.rcfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c44944304.rctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) +end +function c44944304.rcop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c44944304.atkcon(e,tp,eg,ep,ev,re,r,rp) + return c44944304.rcfilter(e:GetHandler()) or Duel.IsExistingMatchingCard(c44944304.rcfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c44944304.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToBattle() or c:IsFacedown() then return end + local ct=Duel.GetMatchingGroupCount(c44944304.rcfilter,tp,0,LOCATION_MZONE,nil) + if c44944304.rcfilter(c) then ct=ct+1 end + if ct>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000*ct) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end +function c44944304.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT+REASON_BATTLE) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousAttackOnField()>c:GetBaseAttack() +end +function c44944304.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c44944304.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) + and chkc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c44944304.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c44944304.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c44944304.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c44954628.lua b/script/c44954628.lua index 16a18033..d3357231 100644 --- a/script/c44954628.lua +++ b/script/c44954628.lua @@ -1,100 +1,100 @@ ---巨大戦艦 テトラン -function c44954628.initial_effect(c) - c:EnableCounterPermit(0x1f) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(44954628,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c44954628.addct) - e1:SetOperation(c44954628.addc) - c:RegisterEffect(e1) - --battle indestructable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - c:RegisterEffect(e2) - --remove counter - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(44954628,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_DAMAGE_STEP_END) - e3:SetCondition(c44954628.rctcon) - e3:SetOperation(c44954628.rctop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(44954628,2)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_DAMAGE_STEP_END) - e4:SetCondition(c44954628.descon) - e4:SetTarget(c44954628.destg) - e4:SetOperation(c44954628.desop) - c:RegisterEffect(e4) - --destroy - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(44954628,3)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetCost(c44954628.descost2) - e5:SetTarget(c44954628.destg2) - e5:SetOperation(c44954628.desop2) - c:RegisterEffect(e5) -end -function c44954628.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) -end -function c44954628.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x1f,3) - end -end -function c44954628.rctcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)~=0 -end -function c44954628.rctop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - c:RemoveCounter(tp,0x1f,1,REASON_EFFECT) - end -end -function c44954628.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)==0 -end -function c44954628.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) -end -function c44954628.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - Duel.Destroy(c,REASON_EFFECT) - end -end -function c44954628.descost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x1f,1,REASON_COST) end - e:GetHandler():RemoveCounter(tp,0x1f,1,REASON_COST) -end -function c44954628.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c44954628.destg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c44954628.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c44954628.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c44954628.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c44954628.desop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--巨大戦艦 テトラン +function c44954628.initial_effect(c) + c:EnableCounterPermit(0x1f) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44954628,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c44954628.addct) + e1:SetOperation(c44954628.addc) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --remove counter + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(44954628,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c44954628.rctcon) + e3:SetOperation(c44954628.rctop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(44954628,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetCondition(c44954628.descon) + e4:SetTarget(c44954628.destg) + e4:SetOperation(c44954628.desop) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(44954628,3)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCost(c44954628.descost2) + e5:SetTarget(c44954628.destg2) + e5:SetOperation(c44954628.desop2) + c:RegisterEffect(e5) +end +function c44954628.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) +end +function c44954628.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x1f,3) + end +end +function c44954628.rctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)~=0 +end +function c44954628.rctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + c:RemoveCounter(tp,0x1f,1,REASON_EFFECT) + end +end +function c44954628.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)==0 +end +function c44954628.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c44954628.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Destroy(c,REASON_EFFECT) + end +end +function c44954628.descost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x1f,1,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x1f,1,REASON_COST) +end +function c44954628.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c44954628.destg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c44954628.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c44954628.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c44954628.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c44954628.desop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c44968687.lua b/script/c44968687.lua index c8beead7..bef23a06 100644 --- a/script/c44968687.lua +++ b/script/c44968687.lua @@ -1,106 +1,106 @@ ---伝説のフィッシャーマン三世 -function c44968687.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c44968687.spcon) - e2:SetOperation(c44968687.spop) - c:RegisterEffect(e2) - --remove - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_REMOVE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetTarget(c44968687.rmtg) - e3:SetOperation(c44968687.rmop) - c:RegisterEffect(e3) - --indes - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetValue(1) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e5) - --immune - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e6:SetRange(LOCATION_MZONE) - e6:SetCode(EFFECT_IMMUNE_EFFECT) - e6:SetValue(c44968687.efilter) - c:RegisterEffect(e6) - --double damage - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_IGNITION) - e7:SetRange(LOCATION_MZONE) - e7:SetCountLimit(1) - e7:SetTarget(c44968687.damtg) - e7:SetOperation(c44968687.damop) - c:RegisterEffect(e7) -end -function c44968687.spcon(e,c) - if c==nil then return true end - return Duel.CheckReleaseGroup(c:GetControler(),Card.IsCode,1,nil,3643300) -end -function c44968687.spop(e,tp,eg,ep,ev,re,r,rp,c) - local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,3643300) - Duel.Release(g,REASON_COST) -end -function c44968687.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) -end -function c44968687.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) - if Duel.Remove(g,POS_FACEUP,REASON_EFFECT)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) - end -end -function c44968687.efilter(e,te) - return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) -end -function c44968687.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_REMOVED)>0 end - local g=Duel.GetFieldGroup(tp,0,LOCATION_REMOVED) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) -end -function c44968687.damop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(tp,0,LOCATION_REMOVED) - if Duel.SendtoGrave(g,REASON_EFFECT+REASON_RETURN)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetValue(c44968687.damval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - Duel.RegisterFlagEffect(tp,44968687,RESET_PHASE+PHASE_END,0,1) - end -end -function c44968687.damval(e,re,val,r,rp,rc) - local tp=e:GetHandlerPlayer() - if Duel.GetFlagEffect(tp,44968687)==0 or bit.band(r,REASON_BATTLE+REASON_EFFECT)==0 then return val end - Duel.ResetFlagEffect(tp,44968687) - return val*2 -end +--伝説のフィッシャーマン三世 +function c44968687.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c44968687.spcon) + e2:SetOperation(c44968687.spop) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c44968687.rmtg) + e3:SetOperation(c44968687.rmop) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e5) + --immune + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c44968687.efilter) + c:RegisterEffect(e6) + --double damage + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetRange(LOCATION_MZONE) + e7:SetCountLimit(1) + e7:SetTarget(c44968687.damtg) + e7:SetOperation(c44968687.damop) + c:RegisterEffect(e7) +end +function c44968687.spcon(e,c) + if c==nil then return true end + return Duel.CheckReleaseGroup(c:GetControler(),Card.IsCode,1,nil,3643300) +end +function c44968687.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,3643300) + Duel.Release(g,REASON_COST) +end +function c44968687.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c44968687.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + if Duel.Remove(g,POS_FACEUP,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) + end +end +function c44968687.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end +function c44968687.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_REMOVED)>0 end + local g=Duel.GetFieldGroup(tp,0,LOCATION_REMOVED) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c44968687.damop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_REMOVED) + if Duel.SendtoGrave(g,REASON_EFFECT+REASON_RETURN)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(c44968687.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,44968687,RESET_PHASE+PHASE_END,0,1) + end +end +function c44968687.damval(e,re,val,r,rp,rc) + local tp=e:GetHandlerPlayer() + if Duel.GetFlagEffect(tp,44968687)==0 or bit.band(r,REASON_BATTLE+REASON_EFFECT)==0 then return val end + Duel.ResetFlagEffect(tp,44968687) + return val*2 +end diff --git a/script/c450000000.lua b/script/c450000000.lua new file mode 100644 index 00000000..052534d1 --- /dev/null +++ b/script/c450000000.lua @@ -0,0 +1,32 @@ +--サザンクロス +function c450000000.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c450000000.target) + e1:SetOperation(c450000000.activate) + c:RegisterEffect(e1) +end +function c450000000.filter(c) + local lv=c:GetLevel() + return c:IsFaceup() and lv>0 and lv~=10 +end +function c450000000.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c450000000.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c450000000.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c450000000.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c450000000.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(10) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c450000001.lua b/script/c450000001.lua new file mode 100644 index 00000000..8c69da95 --- /dev/null +++ b/script/c450000001.lua @@ -0,0 +1,92 @@ +--機関連結 +function c450000001.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:SetCost(c450000001.cost) + e1:SetTarget(c450000001.target) + e1:SetOperation(c450000001.operation) + c:RegisterEffect(e1) + --Pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) + --equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c450000001.eqlimit) + c:RegisterEffect(e4) + --double original atk + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ADJUST) + e5:SetRange(LOCATION_SZONE) + e5:SetOperation(c450000001.atkop) + c:RegisterEffect(e5) + --check for doubling + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(511000694) + c:RegisterEffect(e6) +end +function c450000001.costfilter(c) + return c:IsRace(RACE_MACHINE) and c:GetLevel()>=8 and c:IsAbleToRemoveAsCost() +end +function c450000001.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c450000001.costfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c450000001.costfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c450000001.eqlimit(e,c) + return c:IsRace(RACE_MACHINE) +end +function c450000001.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c450000001.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c450000001.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c450000001.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c450000001.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c450000001.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 c450000001.chkfilter(c,eq) + local ec=c:GetEquipTarget() + return c:IsHasEffect(511000694) and ec and ec==eq and not c:IsDisabled() +end +function c450000001.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=c:GetEquipTarget() + local g=Duel.GetMatchingGroup(c450000001.chkfilter,tp,LOCATION_SZONE,LOCATION_SZONE,c,eq) + if eq and c:GetFlagEffect(511000695)==0 then + c:ResetEffect(RESET_DISABLE,RESET_EVENT) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511000695,RESET_EVENT+0x1ff0000,0,0) + tc=g:GetNext() + end + local atk=eq:GetBaseAttack() + for i=1,g:GetCount()+1 do + atk=atk*2 + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c450000103.lua b/script/c450000103.lua new file mode 100644 index 00000000..eba8142e --- /dev/null +++ b/script/c450000103.lua @@ -0,0 +1,43 @@ +--獄炎 +function c450000103.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCost(c450000103.cost) + e1:SetCondition(c450000103.condition) + e1:SetTarget(c450000103.target) + e1:SetOperation(c450000103.activate) + c:RegisterEffect(e1) +end +function c450000103.costfilter(c) + return c:IsDiscardable() and c:IsAbleToGraveAsCost() +end +function c450000103.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c450000103.costfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c450000103.costfilter,1,1,REASON_COST) +end +function c450000103.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c450000103.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) + local dam=tg:GetAttack() + Duel.SetTargetParam(dam/2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam/2) +end +function c450000103.activate(e,tp,eg,ep,ev,re,r,rp) + local tg,d=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS,CHAININFO_TARGET_PARAM) + local tc=tg:GetFirst() + if tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + if Duel.Destroy(tc,REASON_EFFECT) then + Duel.Damage(1-tp,d,REASON_EFFECT) + end + end +end diff --git a/script/c450000110.lua b/script/c450000110.lua new file mode 100644 index 00000000..b9e75f11 --- /dev/null +++ b/script/c450000110.lua @@ -0,0 +1,21 @@ +--ドリーム・ピッチ +function c450000110.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Pos Change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_POSITION) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c450000110.target) + e2:SetValue(POS_FACEUP_DEFENSE+NO_FLIP_EFFECT) + c:RegisterEffect(e2) +end +function c450000110.target(e,c) + return c:IsFacedown() +end diff --git a/script/c450000111.lua b/script/c450000111.lua new file mode 100644 index 00000000..b2f8c9fa --- /dev/null +++ b/script/c450000111.lua @@ -0,0 +1,18 @@ +--ストライカー・トップ +function c450000111.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c450000111.ntcon) + c:RegisterEffect(e1) +end +function c450000111.filter(c) + return c:IsFaceup() and c:IsCode(450000110) +end +function c450000111.ntcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c450000111.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end diff --git a/script/c450000112.lua b/script/c450000112.lua new file mode 100644 index 00000000..d0ee32af --- /dev/null +++ b/script/c450000112.lua @@ -0,0 +1,18 @@ +--キャプテン・ウィング +function c450000112.initial_effect(c) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_PIERCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c450000112.pcon) + c:RegisterEffect(e1) +end +function c450000112.filter(c) + return c:IsFaceup() and c:IsCode(450000110) +end +function c450000112.pcon(e) + return Duel.IsExistingMatchingCard(c450000112.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.GetEnvironment()==450000110 +end diff --git a/script/c450000130.lua b/script/c450000130.lua new file mode 100644 index 00000000..0aaca493 --- /dev/null +++ b/script/c450000130.lua @@ -0,0 +1,80 @@ +--遺言の札 +function c450000130.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAIN_END) + e1:SetCondition(c450000130.condition) + e1:SetTarget(c450000130.target) + e1:SetOperation(c450000130.operation) + c:RegisterEffect(e1) + if not c450000130.global_check then + c450000130.global_check=true + -- + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetOperation(c450000130.check1) + Duel.RegisterEffect(ge1,tp) + end +end +c450000130.illegal=true +function c450000130.check1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tp=c:GetControler() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + local sc=g:GetFirst() + while sc do + local atk=sc:GetAttack() + if sc:GetFlagEffectLabel(450000130)==nil then + sc:RegisterFlagEffect(450000130,RESET_EVENT+0x1fe0000,0,1,atk) + sc:RegisterFlagEffect(450000130+100000000,RESET_EVENT+0x1fe0000,0,1,0) + else + local flb1=sc:GetFlagEffectLabel(450000130) + local flb2=sc:GetFlagEffectLabel(450000130+100000000) + if flb1~=atk and flb2==0 and atk==0 then + sc:SetFlagEffectLabel(450000130,atk) + sc:SetFlagEffectLabel(450000130+100000000,1) + end + end + -- + sc=g:GetNext() + end + end +end +function c450000130.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tp=c:GetControler() + local ct=0 + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local sc=g:GetFirst() + while sc do + local atk=sc:GetAttack() + local flb2=sc:GetFlagEffectLabel(450000130+100000000) + if flb2>0 then ct=ct+1 end + sc:SetFlagEffectLabel(450000130,atk) + sc:SetFlagEffectLabel(450000130+100000000,0) + -- + sc=g:GetNext() + end + return ct>0 +end +function c450000130.target(e,tp,eg,ep,ev,re,r,rp,chk) + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if chk==0 then return hg:GetCount()<5 + and Duel.IsPlayerCanDraw(tp,5-hg:GetCount()) + end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(5-hg:GetCount()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,5-hg:GetCount()) +end +function c450000130.operation(e,tp,eg,ep,ev,re,r,rp) + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if hg:GetCount()<5 then + Duel.Draw(tp,5-hg:GetCount(),REASON_EFFECT) + end +end + diff --git a/script/c450000153.lua b/script/c450000153.lua new file mode 100644 index 00000000..19902291 --- /dev/null +++ b/script/c450000153.lua @@ -0,0 +1,20 @@ +--レインボー・シャーマン +function c450000153.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c450000153.spcon) + c:RegisterEffect(e1) +end +function c450000153.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c450000153.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.IsExistingMatchingCard(c450000153.cfilter,c:GetControler(),0,LOCATION_MZONE,1,nil) + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end \ No newline at end of file diff --git a/script/c450000348.lua b/script/c450000348.lua new file mode 100644 index 00000000..915ce03a --- /dev/null +++ b/script/c450000348.lua @@ -0,0 +1,32 @@ +--フォトン・サブライメーション +function c450000348.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c450000348.cost) + e1:SetTarget(c450000348.target) + e1:SetOperation(c450000348.activate) + c:RegisterEffect(e1) +end +function c450000348.filter(c) + return c:IsAbleToRemoveAsCost() and c:IsType(TYPE_MONSTER) and (c:IsSetCard(0x55) or c:IsCode(31801517)) +end +function c450000348.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c450000348.filter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c450000348.filter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c450000348.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c450000348.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c450000349.lua b/script/c450000349.lua new file mode 100644 index 00000000..1f6211d6 --- /dev/null +++ b/script/c450000349.lua @@ -0,0 +1,30 @@ +--からくりの宝札 +function c450000349.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c450000349.target) + e1:SetOperation(c450000349.activate) + c:RegisterEffect(e1) +end +function c450000349.filter(c) + return c:IsFaceup() and c:IsSetCard(0x83) and c:IsDestructable() +end +function c450000349.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c450000349.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c450000349.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c450000349.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c450000349.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c450000350.lua b/script/c450000350.lua new file mode 100644 index 00000000..c3fd69a2 --- /dev/null +++ b/script/c450000350.lua @@ -0,0 +1,32 @@ +--磁石の荒鷲Δ +function c450000350.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(450000350,1)) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_DESTROY) + e1:SetCondition(c450000350.atkcon) + e1:SetTarget(c450000350.atktg) + e1:SetOperation(c450000350.atkop) + c:RegisterEffect(e1) +end +function c450000350.filter(c) + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) + and c:IsSetCard(0x4721) +end +function c450000350.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c450000350.filter,1,nil) +end +function c450000350.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end +end +function c450000350.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(400) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c450000351.lua b/script/c450000351.lua new file mode 100644 index 00000000..94c5a570 --- /dev/null +++ b/script/c450000351.lua @@ -0,0 +1,32 @@ +--磁石の鱗獣Z +function c450000351.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(450000351,1)) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_DESTROY) + e1:SetCondition(c450000351.atkcon) + e1:SetTarget(c450000351.atktg) + e1:SetOperation(c450000351.atkop) + c:RegisterEffect(e1) +end +function c450000351.filter(c) + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) + and c:IsSetCard(0x4721) +end +function c450000351.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c450000351.filter,1,nil) +end +function c450000351.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end +end +function c450000351.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(400) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c450000352.lua b/script/c450000352.lua new file mode 100644 index 00000000..91b8c02b --- /dev/null +++ b/script/c450000352.lua @@ -0,0 +1,32 @@ +--磁石の大猿E +function c450000352.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(450000352,1)) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_DESTROY) + e1:SetCondition(c450000352.atkcon) + e1:SetTarget(c450000352.atktg) + e1:SetOperation(c450000352.atkop) + c:RegisterEffect(e1) +end +function c450000352.filter(c) + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) + and c:IsSetCard(0x4721) +end +function c450000352.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c450000352.filter,1,nil) +end +function c450000352.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end +end +function c450000352.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(400) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c450000357.lua b/script/c450000357.lua new file mode 100644 index 00000000..7b80db7f --- /dev/null +++ b/script/c450000357.lua @@ -0,0 +1,34 @@ +--磁力蘇生 +function c450000357.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c450000357.cost) + e1:SetTarget(c450000357.target) + e1:SetOperation(c450000357.activate) + c:RegisterEffect(e1) +end +function c450000357.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 c450000357.filter(c,e,tp) + return (c:IsSetCard(0x4721) or c:IsSetCard(0x2066)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c450000357.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c450000357.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c450000357.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c450000357.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c450000357.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c450000410.lua b/script/c450000410.lua new file mode 100644 index 00000000..262d8632 --- /dev/null +++ b/script/c450000410.lua @@ -0,0 +1,36 @@ +--悪意の波動 +function c450000410.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c450000410.descon) + e2:SetTarget(c450000410.destg) + e2:SetOperation(c450000410.desop) + c:RegisterEffect(e2) +end +function c450000410.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp +end +function c450000410.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c450000410.cfilter,1,nil,tp) +end +function c450000410.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c450000410.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c45010690.lua b/script/c45010690.lua index 5aa238ca..b4330642 100644 --- a/script/c45010690.lua +++ b/script/c45010690.lua @@ -1,27 +1,27 @@ ---フラボット -function c45010690.initial_effect(c) - --token - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(45010690,0)) - e1:SetCategory(CATEGORY_DRAW+CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c45010690.target) - e1:SetOperation(c45010690.operation) - c:RegisterEffect(e1) -end -function c45010690.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) -end -function c45010690.operation(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - if Duel.Draw(p,d,REASON_EFFECT)==0 then return end - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(p,Card.IsAbleToDeck,p,LOCATION_HAND,0,1,1,nil) - Duel.SendtoDeck(g,nil,0,REASON_EFFECT) -end +--フラボット +function c45010690.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(45010690,0)) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c45010690.target) + e1:SetOperation(c45010690.operation) + c:RegisterEffect(e1) +end +function c45010690.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) +end +function c45010690.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)==0 then return end + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(p,Card.IsAbleToDeck,p,LOCATION_HAND,0,1,1,nil) + Duel.SendtoDeck(g,nil,0,REASON_EFFECT) +end diff --git a/script/c45037489.lua b/script/c45037489.lua index 19478bb7..6eff7f15 100644 --- a/script/c45037489.lua +++ b/script/c45037489.lua @@ -1,42 +1,41 @@ ---フルール・ド・シュヴァリエ -function c45037489.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c45037489.tfilter,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(45037489,0)) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c45037489.discon) - e1:SetTarget(c45037489.distg) - e1:SetOperation(c45037489.disop) - c:RegisterEffect(e1) -end -c45037489.material_setcode=0x17 -function c45037489.tfilter(c) - return c:IsCode(19642774) or c:IsHasEffect(20932152) -end -function c45037489.discon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp~=tp and tp==Duel.GetTurnPlayer() - and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c45037489.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c45037489.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--フルール・ド・シュヴァリエ +function c45037489.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c45037489.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(45037489,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c45037489.discon) + e1:SetTarget(c45037489.distg) + e1:SetOperation(c45037489.disop) + c:RegisterEffect(e1) +end +c45037489.material_setcode=0x1017 +function c45037489.tfilter(c) + return c:IsCode(19642774) or c:IsHasEffect(20932152) +end +function c45037489.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp~=tp and tp==Duel.GetTurnPlayer() + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c45037489.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c45037489.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c45041488.lua b/script/c45041488.lua index 5257337a..27c35f88 100644 --- a/script/c45041488.lua +++ b/script/c45041488.lua @@ -80,8 +80,7 @@ function c45041488.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c45041488.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c45103815.lua b/script/c45103815.lua index 66c56b4d..b35b14ce 100644 --- a/script/c45103815.lua +++ b/script/c45103815.lua @@ -1,35 +1,35 @@ ---召喚師ライズベルト -function c45103815.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --level - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c45103815.lvtg) - e2:SetOperation(c45103815.lvop) - c:RegisterEffect(e2) -end -function c45103815.filter(c) - return c:IsFaceup() and c:GetLevel()>0 -end -function c45103815.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c45103815.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c45103815.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c45103815.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c45103815.lvop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end +--召喚師ライズベルト +function c45103815.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --level + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c45103815.lvtg) + e2:SetOperation(c45103815.lvop) + c:RegisterEffect(e2) +end +function c45103815.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c45103815.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c45103815.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c45103815.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c45103815.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c45103815.lvop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c45141013.lua b/script/c45141013.lua index dd89b296..95829c08 100644 --- a/script/c45141013.lua +++ b/script/c45141013.lua @@ -1,29 +1,29 @@ ---大熱波 -function c45141013.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c45141013.condition) - e1:SetOperation(c45141013.operation) - c:RegisterEffect(e1) -end -function c45141013.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 and not Duel.CheckPhaseActivity() -end -function c45141013.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,1) - e1:SetTarget(c45141013.sumlimit) - e1:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_SUMMON) - Duel.RegisterEffect(e2,tp) -end -function c45141013.sumlimit(e,c,sump,sumtype,sumpos,targetp) - return c:IsType(TYPE_EFFECT) -end +--大熱波 +function c45141013.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c45141013.condition) + e1:SetOperation(c45141013.operation) + c:RegisterEffect(e1) +end +function c45141013.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 and not Duel.CheckPhaseActivity() +end +function c45141013.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetTarget(c45141013.sumlimit) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) +end +function c45141013.sumlimit(e,c,sump,sumtype,sumpos,targetp) + return c:IsType(TYPE_EFFECT) +end diff --git a/script/c45170821.lua b/script/c45170821.lua index e7b7be08..aa58c653 100644 --- a/script/c45170821.lua +++ b/script/c45170821.lua @@ -1,47 +1,48 @@ ---V・HERO アドレイション -function c45170821.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x8),2,true) - --summon success - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(45170821,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c45170821.valtg) - e2:SetOperation(c45170821.valop) - c:RegisterEffect(e2) -end -function c45170821.sfilter(c) - return c:IsFaceup() and c:IsSetCard(0x8) -end -function c45170821.valtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) - and Duel.IsExistingTarget(c45170821.sfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) - local g1=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) - e:SetLabelObject(g1:GetFirst()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF) - Duel.SelectTarget(tp,c45170821.sfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) -end -function c45170821.valop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local o=e:GetLabelObject() - local s=g:GetFirst() - if s==o then s=g:GetNext() end - if s:IsFaceup() and o:IsFaceup() and s:IsRelateToEffect(e) and o:IsRelateToEffect(e) then - local val=s:GetAttack()*-1 - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(val) - o:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - o:RegisterEffect(e2) - end -end +--V・HERO アドレイション +function c45170821.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x8),2,true) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(45170821,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c45170821.valtg) + e2:SetOperation(c45170821.valop) + c:RegisterEffect(e2) +end +c45170821.material_setcode=0x8 +function c45170821.sfilter(c) + return c:IsFaceup() and c:IsSetCard(0x8) +end +function c45170821.valtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingTarget(c45170821.sfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g1=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF) + Duel.SelectTarget(tp,c45170821.sfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c45170821.valop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local o=e:GetLabelObject() + local s=g:GetFirst() + if s==o then s=g:GetNext() end + if s:IsFaceup() and o:IsFaceup() and s:IsRelateToEffect(e) and o:IsRelateToEffect(e) then + local val=s:GetAttack()*-1 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(val) + o:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + o:RegisterEffect(e2) + end +end diff --git a/script/c45206713.lua b/script/c45206713.lua index 19bda0f3..27321a9a 100644 --- a/script/c45206713.lua +++ b/script/c45206713.lua @@ -1,102 +1,102 @@ ---DDスワラル・スライム -function c45206713.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,45206713) - e1:SetTarget(c45206713.target) - e1:SetOperation(c45206713.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,45206714) - e2:SetCost(c45206713.spcost) - e2:SetTarget(c45206713.sptg) - e2:SetOperation(c45206713.spop) - c:RegisterEffect(e2) -end -function c45206713.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c45206713.filter2(c,e,tp,m,f,gc) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x10af) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) -end -function c45206713.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND,0,c) - local res=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c45206713.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c45206713.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c45206713.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end - local mg1=Duel.GetMatchingGroup(c45206713.filter1,tp,LOCATION_HAND,0,c,e) - local sg1=Duel.GetMatchingGroup(c45206713.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c45206713.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) - end - if (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and sg1:GetCount()>0) or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end -function c45206713.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c45206713.spfilter(c,e,tp) - return c:IsSetCard(0xaf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c45206713.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c45206713.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c45206713.spop(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,c45206713.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 +--DDスワラル・スライム +function c45206713.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,45206713) + e1:SetTarget(c45206713.target) + e1:SetOperation(c45206713.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,45206714) + e2:SetCost(c45206713.spcost) + e2:SetTarget(c45206713.sptg) + e2:SetOperation(c45206713.spop) + c:RegisterEffect(e2) +end +function c45206713.filter1(c,e) + return c:IsLocation(LOCATION_HAND) and not c:IsImmuneToEffect(e) +end +function c45206713.filter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x10af) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) +end +function c45206713.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsLocation,c,LOCATION_HAND) + local res=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c45206713.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c45206713.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c45206713.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end + local mg1=Duel.GetFusionMaterial(tp):Filter(c45206713.filter1,c,e) + local sg1=Duel.GetMatchingGroup(c45206713.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c45206713.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and sg1:GetCount()>0) or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c45206713.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c45206713.spfilter(c,e,tp) + return c:IsSetCard(0xaf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c45206713.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c45206713.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c45206713.spop(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,c45206713.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 diff --git a/script/c45247637.lua b/script/c45247637.lua index 14c2429a..a289f1c4 100644 --- a/script/c45247637.lua +++ b/script/c45247637.lua @@ -1,15 +1,6 @@ --薔薇の刻印 function c45247637.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_CONTROL+CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCost(c45247637.cost) - e1:SetTarget(c45247637.target) - e1:SetOperation(c45247637.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,Card.IsControlerCanBeChanged,c45247637.eqlimit,c45247637.cost,c45247637.target) --control local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(45247637,0)) @@ -31,44 +22,25 @@ function c45247637.initial_effect(c) c:RegisterEffect(e4) e2:SetLabelObject(e4) e3:SetLabelObject(e4) - --Equip limit - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_EQUIP_LIMIT) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e5:SetValue(c45247637.eqlimit) - c:RegisterEffect(e5) end function c45247637.costfilter(c) return c:IsRace(RACE_PLANT) and c:IsAbleToRemove() end function c45247637.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c45247637.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + if chk==0 then + e:SetCategory(CATEGORY_CONTROL+CATEGORY_EQUIP) + return Duel.IsExistingMatchingCard(c45247637.costfilter,tp,LOCATION_GRAVE,0,1,nil) + end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local g=Duel.SelectMatchingCard(tp,c45247637.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) Duel.Remove(g,POS_FACEUP,REASON_COST) end -function c45247637.filter(c) - return c:IsFaceup() and c:IsControlerCanBeChanged() -end -function c45247637.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:GetControler()~=tp and c45247637.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c45247637.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c45247637.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +function c45247637.target(e,tp,eg,ep,ev,re,r,rp) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,Duel.GetFirstTarget(),1,0,0) end function c45247637.eqlimit(e,c) return e:GetHandlerPlayer()~=c:GetControler() or e:GetHandler():GetEquipTarget()==c end -function c45247637.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc) - end -end function c45247637.ccon(e,tp,eg,ep,ev,re,r,rp) return tp==Duel.GetTurnPlayer() end diff --git a/script/c45286019.lua b/script/c45286019.lua index 56371d0e..b66c0f8f 100644 --- a/script/c45286019.lua +++ b/script/c45286019.lua @@ -45,9 +45,9 @@ end function c45286019.spop(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,c45286019.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c45286019.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_SINGLE) diff --git a/script/c45298492.lua b/script/c45298492.lua index 8f6e87ab..b7c319f0 100644 --- a/script/c45298492.lua +++ b/script/c45298492.lua @@ -1,29 +1,29 @@ ---スカー・ウォリアー -function c45298492.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c45298492.atlimit) - c:RegisterEffect(e1) - --battle indes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) - e2:SetCountLimit(1) - e2:SetValue(c45298492.valcon) - c:RegisterEffect(e2) -end -function c45298492.atlimit(e,c) - return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c45298492.valcon(e,re,r,rp) - return bit.band(r,REASON_BATTLE)~=0 -end +--スカー・ウォリアー +function c45298492.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c45298492.atlimit) + c:RegisterEffect(e1) + --battle indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetCountLimit(1) + e2:SetValue(c45298492.valcon) + c:RegisterEffect(e2) +end +function c45298492.atlimit(e,c) + return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c45298492.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c45349196.lua b/script/c45349196.lua index e9635020..8066d704 100644 --- a/script/c45349196.lua +++ b/script/c45349196.lua @@ -1,65 +1,65 @@ ---悪魔竜ブラック・デーモンズ・ドラゴン -function c45349196.initial_effect(c) - c:SetSPSummonOnce(45349196) - --fusion material - aux.AddFusionProcFun2(c,c45349196.mfilter1,c45349196.mfilter2,true) - c:EnableReviveLimit() - --aclimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetCondition(c45349196.accon) - e1:SetValue(c45349196.aclimit) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DAMAGE+CATEGORY_TODECK) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_BATTLE) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetCondition(c45349196.damcon) - e2:SetTarget(c45349196.damtg) - e2:SetOperation(c45349196.damop) - c:RegisterEffect(e2) -end -c45349196.material_setcode=0x3b -function c45349196.mfilter1(c) - return c:IsFusionSetCard(0x45) and c:IsType(TYPE_NORMAL) and c:GetLevel()==6 -end -function c45349196.mfilter2(c) - return c:IsFusionSetCard(0x3b) and c:IsType(TYPE_NORMAL) -end -function c45349196.accon(e) - return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() -end -function c45349196.aclimit(e,re,tp) - return not re:GetHandler():IsImmuneToEffect(e) -end -function c45349196.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:GetSummonType()==SUMMON_TYPE_FUSION and c:GetBattledGroupCount()>0 -end -function c45349196.filter(c) - return c:IsSetCard(0x3b) and c:IsType(TYPE_NORMAL) and c:IsAbleToDeck() -end -function c45349196.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c45349196.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c45349196.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c45349196.filter,tp,LOCATION_GRAVE,0,1,1,nil) - local atk=g:GetFirst():GetBaseAttack() - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) -end -function c45349196.damop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT)~=0 then - Duel.BreakEffect() - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end -end +--悪魔竜ブラック・デーモンズ・ドラゴン +function c45349196.initial_effect(c) + c:SetSPSummonOnce(45349196) + --fusion material + aux.AddFusionProcFun2(c,c45349196.mfilter1,c45349196.mfilter2,true) + c:EnableReviveLimit() + --aclimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetCondition(c45349196.accon) + e1:SetValue(c45349196.aclimit) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE+CATEGORY_TODECK) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c45349196.damcon) + e2:SetTarget(c45349196.damtg) + e2:SetOperation(c45349196.damop) + c:RegisterEffect(e2) +end +c45349196.material_setcode=0x3b +function c45349196.mfilter1(c) + return c:IsFusionSetCard(0x45) and c:IsFusionType(TYPE_NORMAL) and c:GetLevel()==6 +end +function c45349196.mfilter2(c) + return c:IsFusionSetCard(0x3b) and c:IsFusionType(TYPE_NORMAL) +end +function c45349196.accon(e) + return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() +end +function c45349196.aclimit(e,re,tp) + return not re:GetHandler():IsImmuneToEffect(e) +end +function c45349196.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_FUSION and c:GetBattledGroupCount()>0 +end +function c45349196.filter(c) + return c:IsSetCard(0x3b) and c:IsType(TYPE_NORMAL) and c:IsAbleToDeck() +end +function c45349196.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c45349196.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c45349196.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c45349196.filter,tp,LOCATION_GRAVE,0,1,1,nil) + local atk=g:GetFirst():GetBaseAttack() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c45349196.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end +end diff --git a/script/c45410988.lua b/script/c45410988.lua index a12f4643..2af4ba94 100644 --- a/script/c45410988.lua +++ b/script/c45410988.lua @@ -1,69 +1,69 @@ ---レッドアイズ・トランスマイグレーション -function c45410988.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c45410988.target) - e1:SetOperation(c45410988.activate) - c:RegisterEffect(e1) -end -c45410988.fit_monster={19025379} -function c45410988.filter(c,e,tp,m1,m2,ft) - if not c:IsCode(19025379) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end - local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c) - mg:Merge(m2) - if ft>0 then - return mg:CheckWithSumGreater(Card.GetRitualLevel,8,c) - else - return mg:IsExists(c45410988.mfilterf,1,nil,tp,mg,c) - end -end -function c45410988.mfilterf(c,tp,mg,rc) - if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then - Duel.SetSelectedCard(c) - return mg:CheckWithSumGreater(Card.GetRitualLevel,8,rc) - else return false end -end -function c45410988.mfilter(c) - return c:IsSetCard(0x3b) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() -end -function c45410988.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local mg1=Duel.GetRitualMaterial(tp) - local mg2=Duel.GetMatchingGroup(c45410988.mfilter,tp,LOCATION_GRAVE,0,nil) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - return ft>-1 and Duel.IsExistingMatchingCard(c45410988.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg1,mg2,ft) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c45410988.activate(e,tp,eg,ep,ev,re,r,rp) - local mg1=Duel.GetRitualMaterial(tp) - local mg2=Duel.GetMatchingGroup(c45410988.mfilter,tp,LOCATION_GRAVE,0,nil) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c45410988.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg1,mg2,ft) - local tc=g:GetFirst() - if tc then - local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc) - mg:Merge(mg2) - local mat=nil - if ft>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,8,tc) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:FilterSelect(tp,c45410988.mfilterf,1,1,nil,tp,mg,tc) - Duel.SetSelectedCard(mat) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local mat2=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,8,tc) - mat:Merge(mat2) - end - tc:SetMaterial(mat) - Duel.ReleaseRitualMaterial(mat) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) - tc:CompleteProcedure() - end -end +--レッドアイズ・トランスマイグレーション +function c45410988.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c45410988.target) + e1:SetOperation(c45410988.activate) + c:RegisterEffect(e1) +end +c45410988.fit_monster={19025379} +function c45410988.filter(c,e,tp,m1,m2,ft) + if not c:IsCode(19025379) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c) + mg:Merge(m2) + if ft>0 then + return mg:CheckWithSumGreater(Card.GetRitualLevel,8,c) + else + return mg:IsExists(c45410988.mfilterf,1,nil,tp,mg,c) + end +end +function c45410988.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumGreater(Card.GetRitualLevel,8,rc) + else return false end +end +function c45410988.mfilter(c) + return c:GetLevel()>0 and c:IsSetCard(0x3b) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c45410988.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg1=Duel.GetRitualMaterial(tp) + local mg2=Duel.GetMatchingGroup(c45410988.mfilter,tp,LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return ft>-1 and Duel.IsExistingMatchingCard(c45410988.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg1,mg2,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c45410988.activate(e,tp,eg,ep,ev,re,r,rp) + local mg1=Duel.GetRitualMaterial(tp) + local mg2=Duel.GetMatchingGroup(c45410988.mfilter,tp,LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c45410988.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg1,mg2,ft) + local tc=g:GetFirst() + if tc then + local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc) + mg:Merge(mg2) + local mat=nil + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,8,tc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c45410988.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,8,tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c4545683.lua b/script/c4545683.lua index dc1b8514..5097dc49 100644 --- a/script/c4545683.lua +++ b/script/c4545683.lua @@ -1,140 +1,140 @@ ---機皇帝グランエル∞ -function c4545683.initial_effect(c) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(0) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(4545683,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c4545683.spcon) - e2:SetTarget(c4545683.sptg) - e2:SetOperation(c4545683.spop) - c:RegisterEffect(e2) - --atk,def up - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c4545683.val) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) - --equip - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(4545683,1)) - e5:SetCategory(CATEGORY_EQUIP) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetTarget(c4545683.eqtg) - e5:SetOperation(c4545683.eqop) - c:RegisterEffect(e5) - --special summon equip - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(4545683,2)) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetType(EFFECT_TYPE_IGNITION) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET) - e6:SetRange(LOCATION_MZONE) - e6:SetCountLimit(1) - e6:SetTarget(c4545683.sptg2) - e6:SetOperation(c4545683.spop2) - c:RegisterEffect(e6) -end -function c4545683.filter(c,tp) - return c:IsType(TYPE_MONSTER) and bit.band(c:GetReason(),0x41)==0x41 and c:GetPreviousControler()==tp - and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) -end -function c4545683.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c4545683.filter,1,nil,tp) -end -function c4545683.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c4545683.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then - c:CompleteProcedure() - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c4545683.val(e,c) - return Duel.GetLP(c:GetControler())/2 -end -function c4545683.eqfilter(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() -end -function c4545683.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c4545683.eqfilter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c4545683.eqfilter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c4545683.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c4545683.eqlimit(e,c) - return e:GetOwner()==c and not c:IsDisabled() -end -function c4545683.eqop(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:IsType(TYPE_MONSTER) then - if c:IsFaceup() and c:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,tc,c,false) then return end - tc:RegisterFlagEffect(4545683,RESET_EVENT+0x1fe0000,0,0) - --Add Equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c4545683.eqlimit) - tc:RegisterEffect(e1) - if atk>0 then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - tc:RegisterEffect(e2) - end - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c4545683.spfilter(c,e,tp,ec) - return c:GetFlagEffect(4545683)~=0 and c:GetEquipTarget()==ec and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c4545683.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c4545683.spfilter(chkc,e,tp,e:GetHandler()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c4545683.spfilter,tp,LOCATION_SZONE,0,1,nil,e,tp,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c4545683.spfilter,tp,LOCATION_SZONE,0,1,1,nil,e,tp,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c4545683.spop2(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--機皇帝グランエル∞ +function c4545683.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(0) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4545683,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c4545683.spcon) + e2:SetTarget(c4545683.sptg) + e2:SetOperation(c4545683.spop) + c:RegisterEffect(e2) + --atk,def up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c4545683.val) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) + --equip + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(4545683,1)) + e5:SetCategory(CATEGORY_EQUIP) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetTarget(c4545683.eqtg) + e5:SetOperation(c4545683.eqop) + c:RegisterEffect(e5) + --special summon equip + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(4545683,2)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetTarget(c4545683.sptg2) + e6:SetOperation(c4545683.spop2) + c:RegisterEffect(e6) +end +function c4545683.filter(c,tp) + return c:IsType(TYPE_MONSTER) and bit.band(c:GetReason(),0x41)==0x41 and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) +end +function c4545683.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c4545683.filter,1,nil,tp) +end +function c4545683.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c4545683.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then + c:CompleteProcedure() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c4545683.val(e,c) + return Duel.GetLP(c:GetControler())/2 +end +function c4545683.eqfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() +end +function c4545683.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c4545683.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c4545683.eqfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c4545683.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c4545683.eqlimit(e,c) + return e:GetOwner()==c and not c:IsDisabled() +end +function c4545683.eqop(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:IsType(TYPE_MONSTER) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + tc:RegisterFlagEffect(4545683,RESET_EVENT+0x1fe0000,0,0) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c4545683.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c4545683.spfilter(c,e,tp,ec) + return c:GetFlagEffect(4545683)~=0 and c:GetEquipTarget()==ec and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c4545683.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c4545683.spfilter(chkc,e,tp,e:GetHandler()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c4545683.spfilter,tp,LOCATION_SZONE,0,1,nil,e,tp,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c4545683.spfilter,tp,LOCATION_SZONE,0,1,1,nil,e,tp,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c4545683.spop2(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c45458027.lua b/script/c45458027.lua index e2502ddd..afd1b0af 100644 --- a/script/c45458027.lua +++ b/script/c45458027.lua @@ -1,50 +1,50 @@ ---ネジマキシキガミ -function c45458027.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c45458027.spcon) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(45458027,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c45458027.target) - e2:SetOperation(c45458027.operation) - c:RegisterEffect(e2) -end -function c45458027.cfilter(c) - return c:GetRace()~=RACE_MACHINE -end -function c45458027.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end - local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) - return g:GetCount()>0 and not g:IsExists(c45458027.cfilter,1,nil) -end -function c45458027.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) end - if chk==0 then return Duel.IsExistingTarget(aux.nzatk,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,aux.nzatk,tp,0,LOCATION_MZONE,1,1,nil) -end -function c45458027.operation(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_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(0) - tc:RegisterEffect(e1) - end -end +--ネジマキシキガミ +function c45458027.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c45458027.spcon) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(45458027,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c45458027.target) + e2:SetOperation(c45458027.operation) + c:RegisterEffect(e2) +end +function c45458027.cfilter(c) + return c:GetRace()~=RACE_MACHINE +end +function c45458027.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + return g:GetCount()>0 and not g:IsExists(c45458027.cfilter,1,nil) +end +function c45458027.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(aux.nzatk,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,aux.nzatk,tp,0,LOCATION_MZONE,1,1,nil) +end +function c45458027.operation(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_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(0) + tc:RegisterEffect(e1) + end +end diff --git a/script/c4545854.lua b/script/c4545854.lua index 7b25f72a..552605cf 100644 --- a/script/c4545854.lua +++ b/script/c4545854.lua @@ -1,48 +1,48 @@ ---エクシーズ・テリトリー -function c4545854.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --ad up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCondition(c4545854.adcon) - e2:SetTarget(c4545854.adtg) - e2:SetValue(c4545854.adval) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --Destroy replace - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DESTROY_REPLACE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_FZONE) - e4:SetTarget(c4545854.desreptg) - c:RegisterEffect(e4) -end -function c4545854.adcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c4545854.adtg(e,c) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return (c==a or c==d) and c:IsType(TYPE_XYZ) -end -function c4545854.adval(e,c) - return c:GetRank()*200 -end -function c4545854.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) - and Duel.CheckRemoveOverlayCard(tp,1,0,1,REASON_EFFECT) end - if Duel.SelectYesNo(tp,aux.Stringid(4545854,0)) then - Duel.RemoveOverlayCard(tp,1,0,1,1,REASON_EFFECT) - return true - else return false end -end +--エクシーズ・テリトリー +function c4545854.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --ad up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCondition(c4545854.adcon) + e2:SetTarget(c4545854.adtg) + e2:SetValue(c4545854.adval) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_FZONE) + e4:SetTarget(c4545854.desreptg) + c:RegisterEffect(e4) +end +function c4545854.adcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() +end +function c4545854.adtg(e,c) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (c==a or c==d) and c:IsType(TYPE_XYZ) +end +function c4545854.adval(e,c) + return c:GetRank()*200 +end +function c4545854.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) + and Duel.CheckRemoveOverlayCard(tp,1,0,1,REASON_EFFECT) end + if Duel.SelectYesNo(tp,aux.Stringid(4545854,0)) then + Duel.RemoveOverlayCard(tp,1,0,1,1,REASON_EFFECT) + return true + else return false end +end diff --git a/script/c45533023.lua b/script/c45533023.lua index 05783bb2..498e1db4 100644 --- a/script/c45533023.lua +++ b/script/c45533023.lua @@ -13,7 +13,7 @@ function c45533023.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_DESTROY) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCode(EVENT_BATTLE_DAMAGE) e2:SetCondition(c45533023.descon) e2:SetTarget(c45533023.destg1) diff --git a/script/c45593826.lua b/script/c45593826.lua index dd4a082b..404c70e9 100644 --- a/script/c45593826.lua +++ b/script/c45593826.lua @@ -1,70 +1,70 @@ ---彼岸の悪鬼 ドラゴネル -function c45593826.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c45593826.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(45593826,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,45593826) - e2:SetCondition(c45593826.sscon) - e2:SetTarget(c45593826.sstg) - e2:SetOperation(c45593826.ssop) - c:RegisterEffect(e2) - --to deck top - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(45593826,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1,45593826) - e3:SetTarget(c45593826.dttg) - e3:SetOperation(c45593826.dtop) - c:RegisterEffect(e3) -end -function c45593826.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c45593826.sdcon(e) - return Duel.IsExistingMatchingCard(c45593826.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c45593826.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c45593826.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c45593826.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c45593826.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c45593826.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c45593826.dttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,1,nil,0xb1) end -end -function c45593826.dtop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(45593826,2)) - local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_DECK,0,1,1,nil,0xb1) - local tc=g:GetFirst() - if tc then - Duel.ShuffleDeck(tp) - Duel.MoveSequence(tc,0) - Duel.ConfirmDecktop(tp,1) - end -end +--彼岸の悪鬼 ドラゴネル +function c45593826.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c45593826.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(45593826,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,45593826) + e2:SetCondition(c45593826.sscon) + e2:SetTarget(c45593826.sstg) + e2:SetOperation(c45593826.ssop) + c:RegisterEffect(e2) + --to deck top + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(45593826,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,45593826) + e3:SetTarget(c45593826.dttg) + e3:SetOperation(c45593826.dtop) + c:RegisterEffect(e3) +end +function c45593826.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c45593826.sdcon(e) + return Duel.IsExistingMatchingCard(c45593826.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c45593826.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c45593826.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c45593826.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c45593826.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c45593826.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c45593826.dttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,1,nil,0xb1) end +end +function c45593826.dtop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(45593826,2)) + local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_DECK,0,1,1,nil,0xb1) + local tc=g:GetFirst() + if tc then + Duel.ShuffleDeck(tp) + Duel.MoveSequence(tc,0) + Duel.ConfirmDecktop(tp,1) + end +end diff --git a/script/c45627618.lua b/script/c45627618.lua index 09bc9974..1dbfa65b 100644 --- a/script/c45627618.lua +++ b/script/c45627618.lua @@ -92,7 +92,8 @@ function c45627618.valcheck(e,c) end end function c45627618.pencon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_MZONE) + local c=e:GetHandler() + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() end function c45627618.pentg(e,tp,eg,ep,ev,re,r,rp,chk) local lsc=Duel.GetFieldCard(tp,LOCATION_SZONE,6) diff --git a/script/c45644898.lua b/script/c45644898.lua index b733b102..2928cb3b 100644 --- a/script/c45644898.lua +++ b/script/c45644898.lua @@ -65,8 +65,8 @@ function c45644898.spop(e,tp,eg,ep,ev,re,r,rp) and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c45644898.spfilter,tp,LOCATION_GRAVE,0,1,1,tc,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c45644898.spfilter),tp,LOCATION_GRAVE,0,1,1,tc,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c45667991.lua b/script/c45667991.lua new file mode 100644 index 00000000..1ee53ede --- /dev/null +++ b/script/c45667991.lua @@ -0,0 +1,101 @@ +--降竜の魔術師 +function c45667991.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --change race + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(45667991,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_PZONE) + e1:SetTarget(c45667991.rctg1) + e1:SetOperation(c45667991.rcop1) + c:RegisterEffect(e1) + --change race + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(45667991,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c45667991.rctg2) + e2:SetOperation(c45667991.rcop2) + c:RegisterEffect(e2) + --effect gain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetCondition(c45667991.efcon) + e3:SetOperation(c45667991.efop) + c:RegisterEffect(e3) +end +function c45667991.rcfilter(c) + return c:IsFaceup() and not c:IsRace(RACE_DRAGON) +end +function c45667991.rctg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c45667991.rcfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c45667991.rcfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c45667991.rcfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c45667991.rcop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(RACE_DRAGON) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + tc:RegisterEffect(e1) + end +end +function c45667991.rctg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsRace(RACE_DRAGON) end +end +function c45667991.rcop2(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:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(RACE_DRAGON) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c45667991.efcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_FUSION+REASON_SYNCHRO+REASON_XYZ)~=0 + and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c45667991.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(45667991,2)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CLIENT_HINT) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c45667991.atkcon) + e1:SetValue(c45667991.atkval) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c45667991.atkcon(e) + local ph=Duel.GetCurrentPhase() + local bc=e:GetHandler():GetBattleTarget() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and bc and bc:IsRace(RACE_DRAGON) +end +function c45667991.atkval(e,c) + return e:GetHandler():GetBaseAttack()*2 +end diff --git a/script/c45742626.lua b/script/c45742626.lua index dc96afbc..c874dceb 100644 --- a/script/c45742626.lua +++ b/script/c45742626.lua @@ -18,6 +18,7 @@ function c45742626.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(45742626,0)) e3:SetCategory(CATEGORY_DECKDES) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1,45742626) diff --git a/script/c45778932.lua b/script/c45778932.lua index 2e5065b1..ecb6f56b 100644 --- a/script/c45778932.lua +++ b/script/c45778932.lua @@ -1,22 +1,22 @@ ---デザートストーム -function c45778932.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND)) - e2:SetValue(500) - c:RegisterEffect(e2) - --Def down - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(-400) - c:RegisterEffect(e3) -end +--デザートストーム +function c45778932.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND)) + e2:SetValue(500) + c:RegisterEffect(e2) + --Def down + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(-400) + c:RegisterEffect(e3) +end diff --git a/script/c458748.lua b/script/c458748.lua new file mode 100644 index 00000000..dbe050e4 --- /dev/null +++ b/script/c458748.lua @@ -0,0 +1,49 @@ +--法の聖典 +function c458748.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,458748) + e1:SetLabel(0) + e1:SetCost(c458748.cost) + e1:SetTarget(c458748.target) + e1:SetOperation(c458748.activate) + c:RegisterEffect(e1) +end +function c458748.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(100) + return true +end +function c458748.filter1(c,e,tp) + return c:IsSetCard(0xf4) and Duel.IsExistingMatchingCard(c458748.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetOriginalAttribute()) +end +function c458748.filter2(c,e,tp,att) + return c:IsSetCard(0xf4) and c:GetOriginalAttribute()~=att and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial() +end +function c458748.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=100 then return false end + e:SetLabel(0) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c458748.filter1,1,nil,e,tp) + end + local rg=Duel.SelectReleaseGroup(tp,c458748.filter1,1,1,nil,e,tp) + e:SetLabel(rg:GetFirst():GetOriginalAttribute()) + Duel.Release(rg,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c458748.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local att=e:GetLabel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c458748.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,att) + local tc=g:GetFirst() + if tc then + tc:SetMaterial(nil) + if Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP)~=0 then + tc:CompleteProcedure() + end + end +end diff --git a/script/c45894482.lua b/script/c45894482.lua index efe94a18..677f9401 100644 --- a/script/c45894482.lua +++ b/script/c45894482.lua @@ -19,36 +19,41 @@ function c45894482.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetCategory(CATEGORY_SPECIAL_SUMMON) e3:SetDescription(aux.Stringid(45894482,0)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_EVENT_PLAYER) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) e3:SetCode(EVENT_CUSTOM+45894482) e3:SetTarget(c45894482.target) e3:SetOperation(c45894482.operation) c:RegisterEffect(e3) + e2:SetLabelObject(e3) end function c45894482.spcon(e,c) if c==nil then return true end return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 end function c45894482.trigop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 then - Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+45894482,e,r,rp,1-tp,0) + local c=e:GetHandler() + if c:GetSummonType()==SUMMON_TYPE_SPECIAL+1 + and e:GetLabelObject():IsActivatable(tp) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c45894482.filter,1-tp,LOCATION_GRAVE,0,1,nil,e,1-tp) + and Duel.SelectEffectYesNo(1-tp,c) then + Duel.RaiseSingleEvent(c,EVENT_CUSTOM+45894482,e,r,rp,tp,0) end end function c45894482.filter(c,e,tp) return c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c45894482.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c45894482.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c45894482.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c45894482.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c45894482.filter(chkc,e,1-tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(1-tp,c45894482.filter,1-tp,LOCATION_GRAVE,0,1,1,nil,e,1-tp) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) end function c45894482.operation(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummon(tc,0,1-tp,1-tp,false,false,POS_FACEUP) end end diff --git a/script/c45898858.lua b/script/c45898858.lua index c6192de4..147b1c2b 100644 --- a/script/c45898858.lua +++ b/script/c45898858.lua @@ -29,8 +29,8 @@ end function c45898858.activate(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,c45898858.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c45898858.filter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) g:GetFirst():CompleteProcedure() end diff --git a/script/c45906428.lua b/script/c45906428.lua index 8e459c42..f3e3d7dc 100644 --- a/script/c45906428.lua +++ b/script/c45906428.lua @@ -2,7 +2,7 @@ function c45906428.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c45906428.target) @@ -10,27 +10,32 @@ function c45906428.initial_effect(c) c:RegisterEffect(e1) end function c45906428.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() + return c:IsOnField() and c:IsAbleToRemove() end function c45906428.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) + return c:IsOnField() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) end function c45906428.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0x3008) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) end +function c45906428.filter3(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end function c45906428.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c45906428.filter0,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil) + local mg1=Duel.GetFusionMaterial(tp):Filter(c45906428.filter0,nil) + local mg2=Duel.GetMatchingGroup(c45906428.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local res=Duel.IsExistingMatchingCard(c45906428.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) + local mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c45906428.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + res=Duel.IsExistingMatchingCard(c45906428.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) end end return res @@ -39,16 +44,18 @@ function c45906428.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c45906428.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c45906428.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c45906428.filter1,nil,e) + local mg2=Duel.GetMatchingGroup(c45906428.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local sg1=Duel.GetMatchingGroup(c45906428.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil + local mg3=nil local sg2=nil local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) + mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c45906428.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + sg2=Duel.GetMatchingGroup(c45906428.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) end if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then local sg=sg1:Clone() @@ -63,7 +70,7 @@ function c45906428.activate(e,tp,eg,ep,ev,re,r,rp) Duel.BreakEffect() Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) local fop=ce:GetOperation() fop(ce,e,tp,tc,mat2) end diff --git a/script/c45939841.lua b/script/c45939841.lua index ee56e048..1fe52eee 100644 --- a/script/c45939841.lua +++ b/script/c45939841.lua @@ -1,34 +1,34 @@ ---ツイスター -function c45939841.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetCost(c45939841.cost) - e1:SetTarget(c45939841.target) - e1:SetOperation(c45939841.activate) - c:RegisterEffect(e1) -end -function c45939841.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 c45939841.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c45939841.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c45939841.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c45939841.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c45939841.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c45939841.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--ツイスター +function c45939841.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c45939841.cost) + e1:SetTarget(c45939841.target) + e1:SetOperation(c45939841.activate) + c:RegisterEffect(e1) +end +function c45939841.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 c45939841.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c45939841.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c45939841.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c45939841.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c45939841.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c45939841.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c45948430.lua b/script/c45948430.lua new file mode 100644 index 00000000..2beb7d58 --- /dev/null +++ b/script/c45948430.lua @@ -0,0 +1,52 @@ +--超戦士の萌芽 +function c45948430.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,45948430+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c45948430.target) + e1:SetOperation(c45948430.activate) + c:RegisterEffect(e1) +end +function c45948430.filter(c,e,tp) + if not c:IsSetCard(0x10cf) or bit.band(c:GetType(),0x81)~=0x81 + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + return Duel.IsExistingMatchingCard(c45948430.matfilter1,tp,LOCATION_HAND,0,1,c,tp,c) +end +function c45948430.matfilter1(c,tp,rc) + local lv=c:GetLevel() + return lv>0 and lv<8 and c:IsAttribute(ATTRIBUTE_LIGHT+ATTRIBUTE_DARK) and c:IsAbleToGrave() and c:IsCanBeRitualMaterial(rc) + and Duel.IsExistingMatchingCard(c45948430.matfilter2,tp,LOCATION_DECK,0,1,c,lv,c:GetAttribute(),rc) +end +function c45948430.matfilter2(c,lv,att,rc) + return ((c:IsAttribute(ATTRIBUTE_LIGHT) and att==ATTRIBUTE_DARK) or (c:IsAttribute(ATTRIBUTE_DARK) and att==ATTRIBUTE_LIGHT)) + and c:GetLevel()==8-lv and c:IsAbleToGrave() and c:IsCanBeRitualMaterial(rc) +end +function c45948430.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c45948430.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c45948430.activate(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 rg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c45948430.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + local rc=rg:GetFirst() + if rc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local mat=Duel.SelectMatchingCard(tp,c45948430.matfilter1,tp,LOCATION_HAND,0,1,1,rc,tp,rc) + local mc=mat:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local mat2=Duel.SelectMatchingCard(tp,c45948430.matfilter2,tp,LOCATION_DECK,0,1,1,nil,mc:GetLevel(),mc:GetAttribute(),rc) + mat:Merge(mat2) + rc:SetMaterial(mat) + Duel.SendtoGrave(mat,REASON_EFFECT+REASON_MATERIAL+REASON_RITUAL) + Duel.BreakEffect() + Duel.SpecialSummon(rc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + rc:CompleteProcedure() + end +end diff --git a/script/c45950291.lua b/script/c45950291.lua index d0c6d60b..23cc2c47 100644 --- a/script/c45950291.lua +++ b/script/c45950291.lua @@ -32,7 +32,7 @@ function c45950291.filter1(c,e,tp) and Duel.IsExistingMatchingCard(c45950291.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+2,c:GetRace(),c:GetAttribute(),c:GetCode()) end function c45950291.filter2(c,e,tp,mc,rk,rc,att,code) - if c:GetOriginalCode()==6165656 and code~=48995978 then return false end + if c.rum_limit_code and code~=c.rum_limit_code then return false end return c:GetRank()==rk and c:IsRace(rc) and c:IsAttribute(att) and mc:IsCanBeXyzMaterial(c) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) end diff --git a/script/c45974017.lua b/script/c45974017.lua index d37dafd0..e7f2a347 100644 --- a/script/c45974017.lua +++ b/script/c45974017.lua @@ -1,84 +1,84 @@ ---闇魔界の契約書 -function c45974017.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(45974017,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1,45974017) - e2:SetTarget(c45974017.pctg) - e2:SetOperation(c45974017.pcop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(45974017,3)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCountLimit(1) - e3:SetCondition(c45974017.damcon) - e3:SetTarget(c45974017.damtg) - e3:SetOperation(c45974017.damop) - c:RegisterEffect(e3) -end -function c45974017.pcfilter(c) - return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsSetCard(0xaf) and c:IsType(TYPE_PENDULUM) and not c:IsForbidden() -end -function c45974017.pctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c45974017.pcfilter(chkc) end - local b1=Duel.IsExistingTarget(c45974017.pcfilter,tp,LOCATION_GRAVE,0,1,nil) - local b2=Duel.IsExistingMatchingCard(c45974017.pcfilter,tp,LOCATION_EXTRA,0,1,nil) - if chk==0 then - if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end - return b1 or b2 - end - local op=0 - if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(45974017,1),aux.Stringid(45974017,2)) - elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(45974017,1)) - else op=Duel.SelectOption(tp,aux.Stringid(45974017,2))+1 end - e:SetLabel(op) - if op==0 then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) - local g=Duel.SelectTarget(tp,c45974017.pcfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) - else - e:SetProperty(0) - end -end -function c45974017.pcop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end - if e:GetLabel()==0 then - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - end - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) - local g=Duel.SelectMatchingCard(tp,c45974017.pcfilter,tp,LOCATION_EXTRA,0,1,1,nil) - if g:GetCount()>0 then - Duel.MoveToField(g:GetFirst(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) - end - end -end -function c45974017.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c45974017.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) -end -function c45974017.damop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--闇魔界の契約書 +function c45974017.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(45974017,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,45974017) + e2:SetTarget(c45974017.pctg) + e2:SetOperation(c45974017.pcop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(45974017,3)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetCondition(c45974017.damcon) + e3:SetTarget(c45974017.damtg) + e3:SetOperation(c45974017.damop) + c:RegisterEffect(e3) +end +function c45974017.pcfilter(c) + return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsSetCard(0xaf) and c:IsType(TYPE_PENDULUM) and not c:IsForbidden() +end +function c45974017.pctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c45974017.pcfilter(chkc) end + local b1=Duel.IsExistingTarget(c45974017.pcfilter,tp,LOCATION_GRAVE,0,1,nil) + local b2=Duel.IsExistingMatchingCard(c45974017.pcfilter,tp,LOCATION_EXTRA,0,1,nil) + if chk==0 then + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + return b1 or b2 + end + local op=0 + if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(45974017,1),aux.Stringid(45974017,2)) + elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(45974017,1)) + else op=Duel.SelectOption(tp,aux.Stringid(45974017,2))+1 end + e:SetLabel(op) + if op==0 then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectTarget(tp,c45974017.pcfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + else + e:SetProperty(0) + end +end +function c45974017.pcop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + if e:GetLabel()==0 then + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c45974017.pcfilter,tp,LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.MoveToField(g:GetFirst(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + end +end +function c45974017.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c45974017.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c45974017.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c45986603.lua b/script/c45986603.lua index be28c304..086b899f 100644 --- a/script/c45986603.lua +++ b/script/c45986603.lua @@ -1,14 +1,6 @@ --強奪 function c45986603.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_CONTROL+CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c45986603.target) - e1:SetOperation(c45986603.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,Card.IsControlerCanBeChanged,c45986603.eqlimit,nil,c45986603.target) --recover local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(45986603,0)) @@ -21,13 +13,6 @@ function c45986603.initial_effect(c) e2:SetTarget(c45986603.rectg) e2:SetOperation(c45986603.recop) 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(c45986603.eqlimit) - c:RegisterEffect(e3) --control local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP) @@ -41,20 +26,9 @@ end function c45986603.eqlimit(e,c) return e:GetHandlerPlayer()~=c:GetControler() or e:GetHandler():GetEquipTarget()==c end -function c45986603.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c45986603.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c45986603.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c45986603.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c45986603.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc) - end +function c45986603.target(e,tp,eg,ep,ev,re,r,rp) + e:SetCategory(CATEGORY_CONTROL+CATEGORY_EQUIP) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,Duel.GetFirstTarget(),1,0,0) end function c45986603.reccon(e,tp,eg,ep,ev,re,r,rp) return tp~=Duel.GetTurnPlayer() diff --git a/script/c46008667.lua b/script/c46008667.lua index d28903a0..5f67209d 100644 --- a/script/c46008667.lua +++ b/script/c46008667.lua @@ -1,96 +1,61 @@ ---聖剣 EX-カリバーン -function c46008667.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(c46008667.target) - e1:SetOperation(c46008667.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(46008667,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,46008667) - e2:SetCondition(aux.exccon) - e2:SetCost(c46008667.spcost) - e2:SetTarget(c46008667.sptg) - e2:SetOperation(c46008667.spop) - c:RegisterEffect(e2) - --Untargetable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e3:SetValue(aux.tgoval) - c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c46008667.eqlimit) - c:RegisterEffect(e4) -end -function c46008667.eqlimit(e,c) - return c:IsSetCard(0x107a) -end -function c46008667.filter(c) - return c:IsFaceup() and c:IsSetCard(0x107a) -end -function c46008667.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c46008667.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c46008667.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c46008667.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c46008667.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 c46008667.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c46008667.filter1(c,e,tp) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x107a) - and Duel.IsExistingMatchingCard(c46008667.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetCode()) -end -function c46008667.filter2(c,e,tp,mc,code) - return c:IsType(TYPE_XYZ) and c:IsSetCard(0x107a) and not c:IsCode(code) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c46008667.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c46008667.filter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c46008667.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c46008667.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c46008667.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c46008667.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetCode()) - local sc=g:GetFirst() - if sc then - local mg=tc:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end -end +--聖剣 EX-カリバーン +function c46008667.initial_effect(c) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x107a)) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(46008667,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,46008667) + e2:SetCondition(aux.exccon) + e2:SetCost(c46008667.spcost) + e2:SetTarget(c46008667.sptg) + e2:SetOperation(c46008667.spop) + c:RegisterEffect(e2) + --Untargetable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) +end +function c46008667.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c46008667.filter1(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x107a) + and Duel.IsExistingMatchingCard(c46008667.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetCode()) +end +function c46008667.filter2(c,e,tp,mc,code) + return c:IsType(TYPE_XYZ) and c:IsSetCard(0x107a) and not c:IsCode(code) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c46008667.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c46008667.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c46008667.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c46008667.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c46008667.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c46008667.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c46009906.lua b/script/c46009906.lua index ee7496df..9039a807 100644 --- a/script/c46009906.lua +++ b/script/c46009906.lua @@ -1,14 +1,6 @@ --猛獣の歯 function c46009906.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(c46009906.target) - e1:SetOperation(c46009906.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_BEAST)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c46009906.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c46009906.eqlimit) - c:RegisterEffect(e4) -end -function c46009906.eqlimit(e,c) - return c:IsRace(RACE_BEAST) -end -function c46009906.filter(c) - return c:IsFaceup() and c:IsRace(RACE_BEAST) -end -function c46009906.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c46009906.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c46009906.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c46009906.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c46009906.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 diff --git a/script/c46031686.lua b/script/c46031686.lua index 26ef0658..77e2449d 100644 --- a/script/c46031686.lua +++ b/script/c46031686.lua @@ -20,8 +20,7 @@ function c46031686.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) end function c46031686.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then Duel.SendtoGrave(eg,REASON_EFFECT) end Duel.Draw(tp,1,REASON_EFFECT) diff --git a/script/c46060017.lua b/script/c46060017.lua new file mode 100644 index 00000000..36678279 --- /dev/null +++ b/script/c46060017.lua @@ -0,0 +1,79 @@ +--十二獣の会局 +function c46060017.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(46060017,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,46060017) + e2:SetTarget(c46060017.sptg) + e2:SetOperation(c46060017.spop) + c:RegisterEffect(e2) + --material + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(46060017,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c46060017.matcon) + e3:SetTarget(c46060017.mattg) + e3:SetOperation(c46060017.matop) + c:RegisterEffect(e3) +end +function c46060017.spfilter(c,e,tp) + return c:IsSetCard(0xf1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c46060017.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(e:GetLabel()) and chkc:IsControler(tp) and chkc:IsFaceup() end + if chk==0 then + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local loc=LOCATION_ONFIELD + if ft==0 then loc=LOCATION_MZONE end + e:SetLabel(loc) + return Duel.IsExistingTarget(Card.IsFaceup,tp,loc,0,1,nil) + and Duel.IsExistingMatchingCard(c46060017.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,e:GetLabel(),0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c46060017.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c46060017.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end +function c46060017.matcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetReason(),0x41)==0x41 +end +function c46060017.matfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf1) and c:IsType(TYPE_XYZ) +end +function c46060017.mattg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c46060017.matfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c46060017.matfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c46060017.matfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c46060017.matop(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() and not tc:IsImmuneToEffect(e) then + Duel.Overlay(tc,Group.FromCards(c)) + end +end diff --git a/script/c46066477.lua b/script/c46066477.lua index b491f3fc..5ca774fd 100644 --- a/script/c46066477.lua +++ b/script/c46066477.lua @@ -1,31 +1,31 @@ ---エンタメ・バンド・ハリケーン -function c46066477.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,46066477+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c46066477.target) - e1:SetOperation(c46066477.activate) - c:RegisterEffect(e1) -end -function c46066477.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x9f) -end -function c46066477.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsExistingMatchingCard(c46066477.cfilter,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end - local ct=Duel.GetMatchingGroupCount(c46066477.cfilter,tp,LOCATION_MZONE,0,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,ct,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c46066477.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - end -end +--エンタメ・バンド・ハリケーン +function c46066477.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,46066477+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c46066477.target) + e1:SetOperation(c46066477.activate) + c:RegisterEffect(e1) +end +function c46066477.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) +end +function c46066477.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingMatchingCard(c46066477.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end + local ct=Duel.GetMatchingGroupCount(c46066477.cfilter,tp,LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c46066477.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end diff --git a/script/c46132282.lua b/script/c46132282.lua index 125274e1..0e5a2026 100644 --- a/script/c46132282.lua +++ b/script/c46132282.lua @@ -1,44 +1,44 @@ ---甲化鎧骨格 -function c46132282.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --immune - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(46132282,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c46132282.effcon) - e1:SetOperation(c46132282.effop) - c:RegisterEffect(e1) -end -function c46132282.effcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c46132282.effop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - c:RegisterEffect(e2) - end - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CHANGE_DAMAGE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,0) - e3:SetValue(0) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) - local e4=e3:Clone() - e4:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e4:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e4,tp) -end +--甲化鎧骨格 +function c46132282.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --immune + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(46132282,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c46132282.effcon) + e1:SetOperation(c46132282.effop) + c:RegisterEffect(e1) +end +function c46132282.effcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c46132282.effop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + c:RegisterEffect(e2) + end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CHANGE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetValue(0) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) + local e4=e3:Clone() + e4:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) +end diff --git a/script/c4614116.lua b/script/c4614116.lua index 414ace29..693c7675 100644 --- a/script/c4614116.lua +++ b/script/c4614116.lua @@ -1,14 +1,6 @@ --闇・エネルギー function c4614116.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(c4614116.target) - e1:SetOperation(c4614116.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c4614116.filter) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,7 @@ function c4614116.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c4614116.eqlimit) - c:RegisterEffect(e4) -end -function c4614116.eqlimit(e,c) - return c:IsRace(RACE_FIEND) end function c4614116.filter(c) - return c:IsFaceup() and c:IsRace(RACE_FIEND) -end -function c4614116.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c4614116.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c4614116.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c4614116.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c4614116.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 + return c:IsRace(RACE_FIEND) end diff --git a/script/c46195773.lua b/script/c46195773.lua index 93e048a0..2ee04cac 100644 --- a/script/c46195773.lua +++ b/script/c46195773.lua @@ -1,48 +1,48 @@ ---ターボ・ウォリアー -function c46195773.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c46195773.tfilter,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --atk down - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(46195773,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetTarget(c46195773.atktg) - e1:SetOperation(c46195773.atkop) - c:RegisterEffect(e1) - --cannot be target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c46195773.efilter) - c:RegisterEffect(e2) -end -c46195773.material_setcode=0x17 -function c46195773.tfilter(c) - return c:IsCode(67270095) or c:IsHasEffect(20932152) -end -function c46195773.efilter(e,re,rp) - return re:GetHandler():IsLevelBelow(6) -end -function c46195773.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - local d=Duel.GetAttackTarget() - if chk==0 then return d and d:IsFaceup() and d:GetLevel()>=6 and d:IsType(TYPE_SYNCHRO) end - d:CreateEffectRelation(e) - Duel.SetOperationInfo(0,CATEGORY_POSITION,d,1,0,0) -end -function c46195773.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local d=Duel.GetAttackTarget() - if d:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(d:GetAttack()/2) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - d:RegisterEffect(e1) - end -end +--ターボ・ウォリアー +function c46195773.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c46195773.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atk down + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(46195773,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c46195773.atktg) + e1:SetOperation(c46195773.atkop) + c:RegisterEffect(e1) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c46195773.efilter) + c:RegisterEffect(e2) +end +c46195773.material_setcode=0x1017 +function c46195773.tfilter(c) + return c:IsCode(67270095) or c:IsHasEffect(20932152) +end +function c46195773.efilter(e,re,rp) + return re:GetHandler():IsLevelBelow(6) +end +function c46195773.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk==0 then return d and d:IsFaceup() and d:GetLevel()>=6 and d:IsType(TYPE_SYNCHRO) end + d:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_POSITION,d,1,0,0) +end +function c46195773.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local d=Duel.GetAttackTarget() + if d:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(d:GetAttack()/2) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + d:RegisterEffect(e1) + end +end diff --git a/script/c46232525.lua b/script/c46232525.lua index d280a8cd..46921bfd 100644 --- a/script/c46232525.lua +++ b/script/c46232525.lua @@ -1,52 +1,52 @@ ---ヘルモスの爪 -function c46232525.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,46232525+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c46232525.target) - e1:SetOperation(c46232525.activate) - c:RegisterEffect(e1) - --add code - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ADD_CODE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetValue(10000070) - c:RegisterEffect(e2) -end -function c46232525.tgfilter(c,e,tp,chkf) - if chkf~=PLAYER_NONE and c:IsLocation(LOCATION_HAND) then return false end - return c:IsType(TYPE_MONSTER) and Duel.IsExistingMatchingCard(c46232525.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetRace()) -end -function c46232525.spfilter(c,e,tp,race) - return c:IsType(TYPE_FUSION) and c.material_race and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and race==c.material_race -end -function c46232525.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - return Duel.IsExistingMatchingCard(c46232525.tgfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil,e,tp,chkf) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c46232525.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g=Duel.SelectMatchingCard(tp,c46232525.tgfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil,e,tp,chkf) - local tc=g:GetFirst() - if tc and not tc:IsImmuneToEffect(e) then - if tc:IsOnField() and tc:IsFacedown() then Duel.ConfirmCards(1-tp,tc) end - local race=tc:GetRace() - Duel.SendtoGrave(tc,REASON_EFFECT) - if not tc:IsLocation(LOCATION_GRAVE) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c46232525.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,race) - local sc=sg:GetFirst() - if sc then - Duel.BreakEffect() - Duel.SpecialSummon(sc,0,tp,tp,true,false,POS_FACEUP) - sc:CompleteProcedure() - end - end -end +--ヘルモスの爪 +function c46232525.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,46232525+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c46232525.target) + e1:SetOperation(c46232525.activate) + c:RegisterEffect(e1) + --add code + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_CODE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(10000070) + c:RegisterEffect(e2) +end +function c46232525.tgfilter(c,e,tp,chkf) + if chkf~=PLAYER_NONE and c:IsLocation(LOCATION_HAND) then return false end + return c:IsType(TYPE_MONSTER) and Duel.IsExistingMatchingCard(c46232525.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetRace()) +end +function c46232525.spfilter(c,e,tp,race) + return c:IsType(TYPE_FUSION) and c.material_race and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and race==c.material_race +end +function c46232525.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + return Duel.IsExistingMatchingCard(c46232525.tgfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil,e,tp,chkf) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c46232525.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g=Duel.SelectMatchingCard(tp,c46232525.tgfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil,e,tp,chkf) + local tc=g:GetFirst() + if tc and not tc:IsImmuneToEffect(e) then + if tc:IsOnField() and tc:IsFacedown() then Duel.ConfirmCards(1-tp,tc) end + local race=tc:GetRace() + Duel.SendtoGrave(tc,REASON_EFFECT) + if not tc:IsLocation(LOCATION_GRAVE) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c46232525.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,race) + local sc=sg:GetFirst() + if sc then + Duel.BreakEffect() + Duel.SpecialSummon(sc,0,tp,tp,true,false,POS_FACEUP) + sc:CompleteProcedure() + end + end +end diff --git a/script/c46239604.lua b/script/c46239604.lua index 7c461fde..0971e4cb 100644 --- a/script/c46239604.lua +++ b/script/c46239604.lua @@ -1,51 +1,51 @@ ---魔知ガエル -function c46239604.initial_effect(c) - --change code - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(84451804) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(46239604,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c46239604.condition) - e2:SetTarget(c46239604.target) - e2:SetOperation(c46239604.operation) - c:RegisterEffect(e2) - --atlimit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetValue(c46239604.atlimit) - c:RegisterEffect(e3) -end -function c46239604.atlimit(e,c) - return c~=e:GetHandler() -end -function c46239604.condition(e,tp,eg,ep,ev,re,r,rp,chk) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c46239604.filter(c) - return c:IsSetCard(0x12) and not c:IsCode(46239604) and c:IsAbleToHand() -end -function c46239604.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c46239604.filter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE+LOCATION_DECK) -end -function c46239604.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c46239604.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--魔知ガエル +function c46239604.initial_effect(c) + --change code + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(84451804) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(46239604,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c46239604.condition) + e2:SetTarget(c46239604.target) + e2:SetOperation(c46239604.operation) + c:RegisterEffect(e2) + --atlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(c46239604.atlimit) + c:RegisterEffect(e3) +end +function c46239604.atlimit(e,c) + return c~=e:GetHandler() +end +function c46239604.condition(e,tp,eg,ep,ev,re,r,rp,chk) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c46239604.filter(c) + return c:IsSetCard(0x12) and not c:IsCode(46239604) and c:IsAbleToHand() +end +function c46239604.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c46239604.filter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE+LOCATION_DECK) +end +function c46239604.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c46239604.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c4628897.lua b/script/c4628897.lua index 932c1bc2..cc272a0c 100644 --- a/script/c4628897.lua +++ b/script/c4628897.lua @@ -48,8 +48,7 @@ function c4628897.negtg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c4628897.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c46354113.lua b/script/c46354113.lua index c4071076..6e67dbe6 100644 --- a/script/c46354113.lua +++ b/script/c46354113.lua @@ -1,61 +1,61 @@ ---ロケット・ヘルモス・キャノン -function c46354113.initial_effect(c) - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e1) - --equip - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_EQUIP) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetTarget(c46354113.eqtg) - e2:SetOperation(c46354113.eqop) - c:RegisterEffect(e2) -end -c46354113.material_race=RACE_WARRIOR -function c46354113.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc~=e:GetHandler() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) -end -function c46354113.eqop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc then return end - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsLocation(LOCATION_SZONE) or c:IsFacedown() then return end - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c46354113.eqlimit) - e1:SetLabelObject(tc) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - --extra attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_EXTRA_ATTACK) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - --pierce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_PIERCE) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) -end -function c46354113.eqlimit(e,c) - return c==e:GetLabelObject() -end +--ロケット・ヘルモス・キャノン +function c46354113.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c46354113.eqtg) + e2:SetOperation(c46354113.eqop) + c:RegisterEffect(e2) +end +c46354113.material_race=RACE_WARRIOR +function c46354113.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc~=e:GetHandler() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) +end +function c46354113.eqop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsLocation(LOCATION_SZONE) or c:IsFacedown() then return end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c46354113.eqlimit) + e1:SetLabelObject(tc) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --extra attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_PIERCE) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) +end +function c46354113.eqlimit(e,c) + return c==e:GetLabelObject() +end diff --git a/script/c46363422.lua b/script/c46363422.lua index a47d4d84..00f66172 100644 --- a/script/c46363422.lua +++ b/script/c46363422.lua @@ -47,8 +47,8 @@ end function c46363422.spop(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,c46363422.filter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c46363422.filter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c46384403.lua b/script/c46384403.lua index c49fa56d..f015e591 100644 --- a/script/c46384403.lua +++ b/script/c46384403.lua @@ -25,6 +25,7 @@ end function c46384403.operation(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=Duel.SelectMatchingCard(tp,c46384403.filter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) if g:GetCount()>0 then diff --git a/script/c46427957.lua b/script/c46427957.lua index 9e0bd6e1..b58f860f 100644 --- a/script/c46427957.lua +++ b/script/c46427957.lua @@ -1,20 +1,18 @@ ---破滅の女神ルイン -function c46427957.initial_effect(c) - c:EnableReviveLimit() - --chain attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(46427957,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLED) - e1:SetCondition(c46427957.atcon) - e1:SetOperation(c46427957.atop) - c:RegisterEffect(e1) -end -function c46427957.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) -end -function c46427957.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--破滅の女神ルイン +function c46427957.initial_effect(c) + c:EnableReviveLimit() + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(46427957,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c46427957.atcon) + e1:SetOperation(c46427957.atop) + c:RegisterEffect(e1) +end +function c46427957.atcon(e,tp,eg,ep,ev,re,r,rp) + return aux.bdocon(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():IsChainAttackable() +end +function c46427957.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c46480475.lua b/script/c46480475.lua index 87ad9fc7..65e11ca0 100644 --- a/script/c46480475.lua +++ b/script/c46480475.lua @@ -1,46 +1,46 @@ ---不協和音 -function c46480475.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c46480475.target) - c:RegisterEffect(e1) - --disable spsummon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - e2:SetTarget(c46480475.splimit) - c:RegisterEffect(e2) -end -function c46480475.splimit(e,c,tp,sumtp,sumpos) - return bit.band(sumtp,SUMMON_TYPE_SYNCHRO)==SUMMON_TYPE_SYNCHRO -end -function c46480475.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetRange(LOCATION_SZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetLabel(3) - e1:SetCountLimit(1) - e1:SetCondition(c46480475.tgcon) - e1:SetOperation(c46480475.tgop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) - e:GetHandler():RegisterEffect(e1) -end -function c46480475.tgcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c46480475.tgop(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetLabel() - ct=ct-1 - e:SetLabel(ct) - if ct==0 then - Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) - end -end +--不協和音 +function c46480475.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c46480475.target) + c:RegisterEffect(e1) + --disable spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetTarget(c46480475.splimit) + c:RegisterEffect(e2) +end +function c46480475.splimit(e,c,tp,sumtp,sumpos) + return bit.band(sumtp,SUMMON_TYPE_SYNCHRO)==SUMMON_TYPE_SYNCHRO +end +function c46480475.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetLabel(3) + e1:SetCountLimit(1) + e1:SetCondition(c46480475.tgcon) + e1:SetOperation(c46480475.tgop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + e:GetHandler():RegisterEffect(e1) +end +function c46480475.tgcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c46480475.tgop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct-1 + e:SetLabel(ct) + if ct==0 then + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c46502013.lua b/script/c46502013.lua index 5a201b96..cf9479cb 100644 --- a/script/c46502013.lua +++ b/script/c46502013.lua @@ -1,25 +1,25 @@ ---ガリトラップ-ピクシーの輪- -function c46502013.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cannot be battle target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCondition(c46502013.con) - e2:SetValue(c46502013.atlimit) - c:RegisterEffect(e2) -end -function c46502013.con(e) - return Duel.IsExistingMatchingCard(Card.IsPosition,e:GetHandlerPlayer(),LOCATION_MZONE,0,2,nil,POS_FACEUP_ATTACK) -end -function c46502013.tfilter(c,atk) - return c:IsFaceup() and c:GetAttack()0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c46502744.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - c:RegisterFlagEffect(46502745,RESET_EVENT+0xfe0000,0,1) - Duel.SpecialSummonComplete() - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c46502744.remcon(e) - return e:GetHandler():GetFlagEffect(46502745)~=0 -end -function c46502744.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c46502744.thfilter(c) - return c:IsRace(RACE_INSECT) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsAttackBelow(1500) and not c:IsCode(46502744) and c:IsAbleToHand() -end -function c46502744.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c46502744.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c46502744.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c46502744.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--応戦するG +function c46502744.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c46502744.spcon) + e1:SetCost(c46502744.spcost) + e1:SetTarget(c46502744.sptg) + e1:SetOperation(c46502744.spop) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e2:SetTargetRange(0xff,0xff) + e2:SetCondition(c46502744.remcon) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c46502744.thcon) + e3:SetTarget(c46502744.thtg) + e3:SetOperation(c46502744.thop) + c:RegisterEffect(e3) +end +function c46502744.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and re:IsHasCategory(CATEGORY_SPECIAL_SUMMON) +end +function c46502744.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(46502744)==0 end + e:GetHandler():RegisterFlagEffect(46502744,RESET_CHAIN,0,1) +end +function c46502744.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c46502744.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + c:RegisterFlagEffect(46502745,RESET_EVENT+0xfe0000,0,1) + Duel.SpecialSummonComplete() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c46502744.remcon(e) + return e:GetHandler():GetFlagEffect(46502745)~=0 +end +function c46502744.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c46502744.thfilter(c) + return c:IsRace(RACE_INSECT) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsAttackBelow(1500) and not c:IsCode(46502744) and c:IsAbleToHand() +end +function c46502744.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c46502744.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c46502744.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c46502744.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c46589034.lua b/script/c46589034.lua index 77b3fef9..7351f564 100644 --- a/script/c46589034.lua +++ b/script/c46589034.lua @@ -49,11 +49,11 @@ function c46589034.spop(e,tp,eg,ep,ev,re,r,rp) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_CHANGE_LEVEL) e1:SetValue(tc:GetLevel()) - e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetReset(RESET_EVENT+0x1ff0000) c:RegisterEffect(e1) Duel.SpecialSummonComplete() end - else + elseif c:IsCanBeSpecialSummoned(e,0,tp,false,false) then Duel.SendtoGrave(c,REASON_RULE) end end diff --git a/script/c46759931.lua b/script/c46759931.lua index 286c5b31..b125ce5d 100644 --- a/script/c46759931.lua +++ b/script/c46759931.lua @@ -1,40 +1,41 @@ ---V・HERO トリニティー -function c46759931.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x8),3,true) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c46759931.regcon) - e1:SetOperation(c46759931.regop) - c:RegisterEffect(e1) - --extra attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EXTRA_ATTACK) - e2:SetCondition(c46759931.atkcon) - e2:SetValue(2) - c:RegisterEffect(e2) - --cannot diratk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - c:RegisterEffect(e3) -end -function c46759931.regcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION -end -function c46759931.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - e1:SetValue(c:GetBaseAttack()*2) - c:RegisterEffect(e1) -end -function c46759931.atkcon(e) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION -end +--V・HERO トリニティー +function c46759931.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x8),3,true) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c46759931.regcon) + e1:SetOperation(c46759931.regop) + c:RegisterEffect(e1) + --extra attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetCondition(c46759931.atkcon) + e2:SetValue(2) + c:RegisterEffect(e2) + --cannot diratk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e3) +end +c46759931.material_setcode=0x8 +function c46759931.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end +function c46759931.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e1:SetValue(c:GetBaseAttack()*2) + c:RegisterEffect(e1) +end +function c46759931.atkcon(e) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end diff --git a/script/c46772449.lua b/script/c46772449.lua index 9c3bfb15..a61f2b01 100644 --- a/script/c46772449.lua +++ b/script/c46772449.lua @@ -7,6 +7,7 @@ function c46772449.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(46772449,0)) e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_FREE_CHAIN) diff --git a/script/c46796664.lua b/script/c46796664.lua index 4e67653b..7b99b843 100644 --- a/script/c46796664.lua +++ b/script/c46796664.lua @@ -1,63 +1,63 @@ ---DD魔導賢者コペルニクス -function c46796664.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_PZONE) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e1:SetTargetRange(1,0) - e1:SetTarget(c46796664.splimit) - c:RegisterEffect(e1) - --disable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetCondition(c46796664.discon) - e2:SetOperation(c46796664.disop) - c:RegisterEffect(e2) - --send to grave - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(46796664,0)) - e3:SetCategory(CATEGORY_TOGRAVE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetCountLimit(1,46796664) - e3:SetTarget(c46796664.tgtg) - e3:SetOperation(c46796664.tgop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) -end -function c46796664.splimit(e,c,sump,sumtype,sumpos,targetp) - return not c:IsSetCard(0xaf) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c46796664.discon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsChainNegatable(ev) and re:IsActiveType(TYPE_SPELL) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():GetFlagEffect(46796664)==0 -end -function c46796664.disop(e,tp,eg,ep,ev,re,r,rp) - if not Duel.SelectYesNo(tp,aux.Stringid(46796664,1)) then return end - e:GetHandler():RegisterFlagEffect(46796664,RESET_EVENT+0x1fe0000,0,1) - Duel.NegateEffect(ev) - Duel.BreakEffect() - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c46796664.tgfilter(c) - return (c:IsSetCard(0xaf) or c:IsSetCard(0xae)) and not c:IsCode(46796664) and c:IsAbleToGrave() -end -function c46796664.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c46796664.tgfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c46796664.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c46796664.tgfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end +--DD魔導賢者コペルニクス +function c46796664.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_PZONE) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e1:SetTargetRange(1,0) + e1:SetTarget(c46796664.splimit) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetCondition(c46796664.discon) + e2:SetOperation(c46796664.disop) + c:RegisterEffect(e2) + --send to grave + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(46796664,0)) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetCountLimit(1,46796664) + e3:SetTarget(c46796664.tgtg) + e3:SetOperation(c46796664.tgop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c46796664.splimit(e,c,sump,sumtype,sumpos,targetp) + return not c:IsSetCard(0xaf) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c46796664.discon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsChainNegatable(ev) and re:IsActiveType(TYPE_SPELL) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():GetFlagEffect(46796664)==0 +end +function c46796664.disop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.SelectYesNo(tp,aux.Stringid(46796664,1)) then return end + e:GetHandler():RegisterFlagEffect(46796664,RESET_EVENT+0x1fe0000,0,1) + if not Duel.NegateEffect(ev) then return end + Duel.BreakEffect() + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c46796664.tgfilter(c) + return (c:IsSetCard(0xaf) or c:IsSetCard(0xae)) and not c:IsCode(46796664) and c:IsAbleToGrave() +end +function c46796664.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c46796664.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c46796664.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c46796664.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c46848859.lua b/script/c46848859.lua index 1bb4158b..e23d9f2f 100644 --- a/script/c46848859.lua +++ b/script/c46848859.lua @@ -42,8 +42,7 @@ function c46848859.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c46848859.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c46871387.lua b/script/c46871387.lua index 0eb2c33c..84d58af1 100644 --- a/script/c46871387.lua +++ b/script/c46871387.lua @@ -8,7 +8,7 @@ function c46871387.initial_effect(c) e1:SetDescription(aux.Stringid(46871387,0)) e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,46871387) e1:SetCost(c46871387.thcost) diff --git a/script/c4688231.lua b/script/c4688231.lua index 7ca81c34..3de4f6d7 100644 --- a/script/c4688231.lua +++ b/script/c4688231.lua @@ -31,10 +31,10 @@ function c4688231.initial_effect(c) c:RegisterEffect(e3) end function c4688231.filter1(c) - return c:IsFusionSetCard(0xe1) + return (c:IsFusionSetCard(0xe1) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end function c4688231.filter2(c) - return c:IsType(TYPE_PENDULUM) + return (c:IsType(TYPE_PENDULUM) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end function c4688231.fscon(e,g,gc,chkfnf) if g==nil then return true end @@ -51,18 +51,9 @@ function c4688231.fscon(e,g,gc,chkfnf) local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) if gc then if not gc:IsCanBeFusionMaterial(e:GetHandler(),true) then return false end - return (f1(gc) and mg:IsExists(f2,1,gc)) - or (f2(gc) and mg:IsExists(f1,1,gc)) end - local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false - local tc=mg:GetFirst() - while tc do - if f1(tc) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end - if f2(tc) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end - tc=mg:GetNext() + return aux.FConditionFilterF2(gc,f1,f2,mg,chkf) end - if chkf~=PLAYER_NONE then - return fs and g1:IsExists(aux.FConditionFilterF2,1,nil,g2) - else return g1:IsExists(aux.FConditionFilterF2,1,nil,g2) end + return mg:IsExists(aux.FConditionFilterF2,1,nil,f1,f2,mg,chkf) end function c4688231.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) local f1=c4688231.filter1 @@ -75,30 +66,26 @@ function c4688231.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) fc=fg:GetNext() end local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if g:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end + end if gc then - local sg=Group.CreateGroup() - if f1(gc) then sg:Merge(g:Filter(f2,gc)) end - if f2(gc) then sg:Merge(g:Filter(f1,gc)) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=sg:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,aux.FConditionFilterF2chk,1,1,gc,f1,f2,gc,chkf) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - local sg=g:Filter(aux.FConditionFilterF2c,nil,f1,f2) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then - g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,aux.FConditionFilterF2,1,1,nil,f1,f2,g,chkf) local tc1=g1:GetFirst() - sg:RemoveCard(tc1) - local b1=f1(tc1) - local b2=f2(tc1) - if b1 and not b2 then sg:Remove(aux.FConditionFilterF2r,nil,f1,f2) end - if b2 and not b1 then sg:Remove(aux.FConditionFilterF2r,nil,f2,f1) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g2=sg:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=g:FilterSelect(p,aux.FConditionFilterF2chk,1,1,tc1,f1,f2,tc1,chkf) g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end function c4688231.retfilter1(c) diff --git a/script/c46895036.lua b/script/c46895036.lua index 082e020b..31c87f4a 100644 --- a/script/c46895036.lua +++ b/script/c46895036.lua @@ -16,7 +16,7 @@ function c46895036.initial_effect(c) e2:SetDescription(aux.Stringid(46895036,0)) e2:SetCategory(CATEGORY_ATKCHANGE) e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e2:SetCode(EVENT_FREE_CHAIN) e2:SetHintTiming(TIMING_DAMAGE_STEP) e2:SetRange(LOCATION_MZONE) diff --git a/script/c46910446.lua b/script/c46910446.lua index 8ee49790..51e336f9 100644 --- a/script/c46910446.lua +++ b/script/c46910446.lua @@ -1,5 +1,6 @@ --ヘル・アライアンス function c46910446.initial_effect(c) + aux.AddEquipProcedure(c) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_EQUIP) @@ -23,19 +24,6 @@ function c46910446.initial_effect(c) e3:SetValue(1) c:RegisterEffect(e3) end -function c46910446.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 c46910446.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 c46910446.filter(c,code) return c:IsFaceup() and c:IsCode(code) end diff --git a/script/c46925518.lua b/script/c46925518.lua index 615d7cf9..fa9ef088 100644 --- a/script/c46925518.lua +++ b/script/c46925518.lua @@ -1,76 +1,76 @@ ---ゴーストリックの人形 -function c46925518.initial_effect(c) - --summon limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetCondition(c46925518.sumcon) - c:RegisterEffect(e1) - --turn set - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(46925518,0)) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c46925518.postg) - e2:SetOperation(c46925518.posop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_FLIP) - e3:SetOperation(c46925518.fdop) - c:RegisterEffect(e3) -end -function c46925518.sfilter(c) - return c:IsFaceup() and c:IsSetCard(0x8d) -end -function c46925518.sumcon(e) - return not Duel.IsExistingMatchingCard(c46925518.sfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c46925518.postg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(46925518)==0 end - c:RegisterFlagEffect(46925518,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) - Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) -end -function c46925518.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) - end -end -function c46925518.fdop(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_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetCondition(c46925518.condition) - e1:SetOperation(c46925518.operation) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c46925518.filter(c) - return c:IsFaceup() and c:IsCanTurnSet() -end -function c46925518.spfilter(c,e,tp,lv) - return c:IsSetCard(0x8d) and c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) -end -function c46925518.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c46925518.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) -end -function c46925518.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c46925518.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()==0 then return end - local ct=Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local sg=Duel.GetMatchingGroup(c46925518.spfilter,tp,LOCATION_DECK,0,nil,e,tp,ct) - if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(46925518,1)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - if Duel.SpecialSummon(tg,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE)~=0 then - Duel.ConfirmCards(1-tp,tg) - end - end -end +--ゴーストリックの人形 +function c46925518.initial_effect(c) + --summon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c46925518.sumcon) + c:RegisterEffect(e1) + --turn set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(46925518,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c46925518.postg) + e2:SetOperation(c46925518.posop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_FLIP) + e3:SetOperation(c46925518.fdop) + c:RegisterEffect(e3) +end +function c46925518.sfilter(c) + return c:IsFaceup() and c:IsSetCard(0x8d) +end +function c46925518.sumcon(e) + return not Duel.IsExistingMatchingCard(c46925518.sfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c46925518.postg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(46925518)==0 end + c:RegisterFlagEffect(46925518,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) +end +function c46925518.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) + end +end +function c46925518.fdop(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_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c46925518.condition) + e1:SetOperation(c46925518.operation) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c46925518.filter(c) + return c:IsFaceup() and c:IsCanTurnSet() +end +function c46925518.spfilter(c,e,tp,lv) + return c:IsSetCard(0x8d) and c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) +end +function c46925518.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c46925518.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c46925518.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c46925518.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + local ct=Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(c46925518.spfilter,tp,LOCATION_DECK,0,nil,e,tp,ct) + if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(46925518,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + if Duel.SpecialSummon(tg,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE)~=0 then + Duel.ConfirmCards(1-tp,tg) + end + end +end diff --git a/script/c4694209.lua b/script/c4694209.lua index 9c82de2f..78c635cd 100644 --- a/script/c4694209.lua +++ b/script/c4694209.lua @@ -1,78 +1,78 @@ ---カードガード -function c4694209.initial_effect(c) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(4694209,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c4694209.addct) - e1:SetOperation(c4694209.addc) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - --attackup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c4694209.attackup) - c:RegisterEffect(e3) - --destroy rep - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(4694209,1)) - e4:SetCategory(CATEGORY_COUNTER) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetCountLimit(1) - e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetTarget(c4694209.addct2) - e4:SetOperation(c4694209.addc2) - c:RegisterEffect(e4) -end -function c4694209.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x1021) -end -function c4694209.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x1021+COUNTER_NEED_ENABLE,1) - end -end -function c4694209.attackup(e,c) - return c:GetCounter(0x1021)*300 -end -function c4694209.addct2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc:IsFaceup() end - if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x1021,1,REASON_EFFECT) - and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(4694209,1)) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) -end -function c4694209.addc2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetCounter(0x1021)==0 then return end - c:RemoveCounter(tp,0x1021,1,REASON_EFFECT) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - tc:AddCounter(0x1021,1) - if tc:GetFlagEffect(4694209)~=0 then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EFFECT_DESTROY_REPLACE) - e1:SetTarget(c4694209.reptg) - e1:SetOperation(c4694209.repop) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc:RegisterFlagEffect(4694209,RESET_EVENT+0x1fe0000,0,0) - end -end -function c4694209.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) and e:GetHandler():GetCounter(0x1021)>0 end - return true -end -function c4694209.repop(e,tp,eg,ep,ev,re,r,rp,chk) - e:GetHandler():RemoveCounter(tp,0x1021,1,REASON_EFFECT) -end +--カードガード +function c4694209.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4694209,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c4694209.addct) + e1:SetOperation(c4694209.addc) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --attackup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c4694209.attackup) + c:RegisterEffect(e3) + --destroy rep + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(4694209,1)) + e4:SetCategory(CATEGORY_COUNTER) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetCountLimit(1) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetTarget(c4694209.addct2) + e4:SetOperation(c4694209.addc2) + c:RegisterEffect(e4) +end +function c4694209.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x1021) +end +function c4694209.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x1021+COUNTER_NEED_ENABLE,1) + end +end +function c4694209.attackup(e,c) + return c:GetCounter(0x1021)*300 +end +function c4694209.addct2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc:IsFaceup() end + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x1021,1,REASON_EFFECT) + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(4694209,1)) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) +end +function c4694209.addc2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetCounter(0x1021)==0 then return end + c:RemoveCounter(tp,0x1021,1,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + tc:AddCounter(0x1021,1) + if tc:GetFlagEffect(4694209)~=0 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetTarget(c4694209.reptg) + e1:SetOperation(c4694209.repop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(4694209,RESET_EVENT+0x1fe0000,0,0) + end +end +function c4694209.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) and e:GetHandler():GetCounter(0x1021)>0 end + return true +end +function c4694209.repop(e,tp,eg,ep,ev,re,r,rp,chk) + e:GetHandler():RemoveCounter(tp,0x1021,1,REASON_EFFECT) +end diff --git a/script/c46967601.lua b/script/c46967601.lua index 9daec776..20174506 100644 --- a/script/c46967601.lua +++ b/script/c46967601.lua @@ -1,5 +1,6 @@ --呪いのお札 function c46967601.initial_effect(c) + aux.AddEquipProcedure(c) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_EQUIP) @@ -9,13 +10,6 @@ function c46967601.initial_effect(c) e1:SetTarget(c46967601.target) e1:SetOperation(c46967601.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) --damage local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(46967601,0)) @@ -27,19 +21,6 @@ function c46967601.initial_effect(c) e3:SetOperation(c46967601.damop) c:RegisterEffect(e3) end -function c46967601.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 c46967601.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 c46967601.damcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local ec=c:GetPreviousEquipTarget() diff --git a/script/c47017574.lua b/script/c47017574.lua index 95475dea..b8452693 100644 --- a/script/c47017574.lua +++ b/script/c47017574.lua @@ -26,7 +26,7 @@ function c47017574.initial_effect(c) e3:SetDescription(aux.Stringid(47017574,1)) e3:SetCategory(CATEGORY_DISABLE) e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1) e3:SetCondition(c47017574.discon) diff --git a/script/c47077318.lua b/script/c47077318.lua index 971bc18f..b715ed1f 100644 --- a/script/c47077318.lua +++ b/script/c47077318.lua @@ -1,66 +1,66 @@ ---森羅の蜜柑子 シトラ -function c47077318.initial_effect(c) - --deck check - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(47077318,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c47077318.condition) - e1:SetTarget(c47077318.target) - e1:SetOperation(c47077318.operation) - c:RegisterEffect(e1) - --boost - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(47077318,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCondition(c47077318.tdcon) - e2:SetOperation(c47077318.tdop) - c:RegisterEffect(e2) -end -function c47077318.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:GetReasonPlayer()~=tp - and c:GetPreviousControler()==tp -end -function c47077318.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c47077318.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - if tc:IsRace(RACE_PLANT) then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) - else - Duel.MoveSequence(tc,1) - end -end -function c47077318.tdcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c47077318.filter(c) - return c:IsFaceup() and c:IsRace(RACE_PLANT) -end -function c47077318.tdop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c47077318.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(300) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - tc=g:GetNext() - end -end +--森羅の蜜柑子 シトラ +function c47077318.initial_effect(c) + --deck check + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(47077318,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c47077318.condition) + e1:SetTarget(c47077318.target) + e1:SetOperation(c47077318.operation) + c:RegisterEffect(e1) + --boost + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(47077318,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c47077318.tdcon) + e2:SetOperation(c47077318.tdop) + c:RegisterEffect(e2) +end +function c47077318.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:GetReasonPlayer()~=tp + and c:GetPreviousControler()==tp +end +function c47077318.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c47077318.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsRace(RACE_PLANT) then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) + else + Duel.MoveSequence(tc,1) + end +end +function c47077318.tdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c47077318.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c47077318.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c47077318.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c47120245.lua b/script/c47120245.lua index 77f32ced..7d088639 100644 --- a/script/c47120245.lua +++ b/script/c47120245.lua @@ -1,72 +1,72 @@ ---聖騎士ボールス -function c47120245.initial_effect(c) - --Normal monster - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetCode(EFFECT_ADD_TYPE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c47120245.eqcon1) - e1:SetValue(TYPE_NORMAL) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_REMOVE_TYPE) - e2:SetValue(TYPE_EFFECT) - c:RegisterEffect(e2) - --Attribute Dark - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetCode(EFFECT_CHANGE_ATTRIBUTE) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c47120245.eqcon2) - e3:SetValue(ATTRIBUTE_DARK) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_LEVEL) - e4:SetValue(1) - c:RegisterEffect(e4) - --search - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(47120245,0)) - e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1,47120245) - e5:SetCondition(c47120245.thcon) - e5:SetTarget(c47120245.thtg) - e5:SetOperation(c47120245.thop) - c:RegisterEffect(e5) -end -function c47120245.eqcon1(e) - return not e:GetHandler():GetEquipGroup():IsExists(Card.IsSetCard,1,nil,0x207a) -end -function c47120245.eqcon2(e) - return e:GetHandler():GetEquipGroup():IsExists(Card.IsSetCard,1,nil,0x207a) -end -function c47120245.thcon(e,tp,eg,ep,ev,re,r,rp) - return c47120245.eqcon2(e) -end -function c47120245.thfilter(c) - return c:IsSetCard(0x207a) and c:IsAbleToHand() -end -function c47120245.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c47120245.thfilter,tp,LOCATION_DECK,0,3,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) -end -function c47120245.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_DECK,0,nil,0x207a) - if g:GetCount()>=3 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=g:Select(tp,3,3,nil) - Duel.ConfirmCards(1-tp,sg) - Duel.ShuffleDeck(tp) - local tg=sg:RandomSelect(1-tp,1) - local tc=tg:GetFirst() - if tc:IsAbleToHand() then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - sg:RemoveCard(tc) - end - Duel.SendtoGrave(sg,REASON_EFFECT) - end -end +--聖騎士ボールス +function c47120245.initial_effect(c) + --Normal monster + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c47120245.eqcon1) + e1:SetValue(TYPE_NORMAL) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_REMOVE_TYPE) + e2:SetValue(TYPE_EFFECT) + c:RegisterEffect(e2) + --Attribute Dark + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c47120245.eqcon2) + e3:SetValue(ATTRIBUTE_DARK) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_LEVEL) + e4:SetValue(1) + c:RegisterEffect(e4) + --search + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(47120245,0)) + e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1,47120245) + e5:SetCondition(c47120245.thcon) + e5:SetTarget(c47120245.thtg) + e5:SetOperation(c47120245.thop) + c:RegisterEffect(e5) +end +function c47120245.eqcon1(e) + return not e:GetHandler():GetEquipGroup():IsExists(Card.IsSetCard,1,nil,0x207a) +end +function c47120245.eqcon2(e) + return e:GetHandler():GetEquipGroup():IsExists(Card.IsSetCard,1,nil,0x207a) +end +function c47120245.thcon(e,tp,eg,ep,ev,re,r,rp) + return c47120245.eqcon2(e) +end +function c47120245.thfilter(c) + return c:IsSetCard(0x207a) and c:IsAbleToHand() +end +function c47120245.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c47120245.thfilter,tp,LOCATION_DECK,0,3,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c47120245.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_DECK,0,nil,0x207a) + if g:GetCount()>=3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,3,3,nil) + Duel.ConfirmCards(1-tp,sg) + Duel.ShuffleDeck(tp) + local tg=sg:RandomSelect(1-tp,1) + local tc=tg:GetFirst() + if tc:IsAbleToHand() then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + sg:RemoveCard(tc) + end + Duel.SendtoGrave(sg,REASON_EFFECT) + end +end diff --git a/script/c47185546.lua b/script/c47185546.lua new file mode 100644 index 00000000..a8299880 --- /dev/null +++ b/script/c47185546.lua @@ -0,0 +1,49 @@ +--光虫信号 +--Bug Signal +--Scripted by Eerie Code +function c47185546.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c47185546.target) + e1:SetOperation(c47185546.activate) + c:RegisterEffect(e1) +end +function c47185546.filter1(c,e,tp) + local rk=c:GetRank() + return c:IsFaceup() and c:IsRace(RACE_INSECT) and c:IsType(TYPE_XYZ) + and Duel.IsExistingMatchingCard(c47185546.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk) +end +function c47185546.filter2(c,e,tp,mc,rk) + return (c:GetRank()==rk+2 or c:GetRank()==rk-2) and c:IsRace(RACE_INSECT) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c47185546.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c47185546.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c47185546.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c47185546.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c47185546.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c47185546.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c47198668.lua b/script/c47198668.lua index 04f5002e..7a9d2716 100644 --- a/script/c47198668.lua +++ b/script/c47198668.lua @@ -1,95 +1,95 @@ ---DDD死偉王ヘル・アーマゲドン -function c47198668.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c47198668.atktg1) - e2:SetOperation(c47198668.atkop1) - c:RegisterEffect(e2) - --atk up - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_ATKCHANGE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_DESTROYED) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e3:SetCountLimit(1) - e3:SetCost(c47198668.atkcost) - e3:SetTarget(c47198668.atktg2) - e3:SetOperation(c47198668.atkop2) - c:RegisterEffect(e3) - --indes - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetValue(c47198668.efilter) - c:RegisterEffect(e4) -end -function c47198668.filter1(c) - return c:IsFaceup() and c:IsSetCard(0xaf) -end -function c47198668.atktg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c47198668.filter1(chkc) end - if chk==0 then return Duel.IsExistingTarget(c47198668.filter1,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c47198668.filter1,tp,LOCATION_MZONE,0,1,1,nil) -end -function c47198668.atkop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(800) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c47198668.filter2(c,e,tp) - return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsType(TYPE_MONSTER) - and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp - and c:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and c:IsCanBeEffectTarget(e) -end -function c47198668.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsDirectAttacked() end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c47198668.atktg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return eg:IsContains(chkc) and c47198668.filter2(chkc,e,tp) end - if chk==0 then return eg:IsExists(c47198668.filter2,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=eg:FilterSelect(tp,c47198668.filter2,1,1,nil,e,tp) - Duel.SetTargetCard(g) -end -function c47198668.atkop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsFaceup() and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(tc:GetBaseAttack()) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end -function c47198668.efilter(e,re,rp) - if not re:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return false end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return true end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - return not g:IsContains(e:GetHandler()) -end +--DDD死偉王ヘル・アーマゲドン +function c47198668.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c47198668.atktg1) + e2:SetOperation(c47198668.atkop1) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DESTROYED) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCountLimit(1) + e3:SetCost(c47198668.atkcost) + e3:SetTarget(c47198668.atktg2) + e3:SetOperation(c47198668.atkop2) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c47198668.efilter) + c:RegisterEffect(e4) +end +function c47198668.filter1(c) + return c:IsFaceup() and c:IsSetCard(0xaf) +end +function c47198668.atktg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c47198668.filter1(chkc) end + if chk==0 then return Duel.IsExistingTarget(c47198668.filter1,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c47198668.filter1,tp,LOCATION_MZONE,0,1,1,nil) +end +function c47198668.atkop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c47198668.filter2(c,e,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsType(TYPE_MONSTER) + and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp + and c:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and c:IsCanBeEffectTarget(e) +end +function c47198668.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsDirectAttacked() end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c47198668.atktg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) and c47198668.filter2(chkc,e,tp) end + if chk==0 then return eg:IsExists(c47198668.filter2,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=eg:FilterSelect(tp,c47198668.filter2,1,1,nil,e,tp) + Duel.SetTargetCard(g) +end +function c47198668.atkop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c47198668.efilter(e,re,rp) + if not re:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return true end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + return not g:IsContains(e:GetHandler()) +end diff --git a/script/c4722253.lua b/script/c4722253.lua index ec32d225..66ed578d 100644 --- a/script/c4722253.lua +++ b/script/c4722253.lua @@ -66,8 +66,7 @@ end function c4722253.negop(e,tp,eg,ep,ev,re,r,rp) if Duel.IsExistingMatchingCard(c4722253.cfilter,tp,LOCATION_MZONE,0,1,nil) or not Duel.IsExistingMatchingCard(c4722253.cfilter3,tp,LOCATION_MZONE,0,1,nil) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c47228077.lua b/script/c47228077.lua index e0b29369..b91972dd 100644 --- a/script/c47228077.lua +++ b/script/c47228077.lua @@ -16,7 +16,7 @@ function c47228077.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c47228077.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c47228077.sptg) e2:SetOperation(c47228077.spop) c:RegisterEffect(e2) @@ -25,7 +25,7 @@ function c47228077.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetCondition(c47228077.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetValue(1) c:RegisterEffect(e3) --destroy @@ -48,9 +48,7 @@ function c47228077.initial_effect(c) e5:SetValue(c47228077.eqlimit) c:RegisterEffect(e5) end -function c47228077.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c47228077.old_union=true function c47228077.eqlimit(e,c) return c:IsSetCard(0x30) end @@ -75,7 +73,7 @@ function c47228077.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c47228077.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(47228077)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -92,7 +90,7 @@ function c47228077.spop(e,tp,eg,ep,ev,re,r,rp) end end function c47228077.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and e:GetHandler():GetEquipTarget()==eg:GetFirst() + return aux.IsUnionState(e) and e:GetHandler():GetEquipTarget()==eg:GetFirst() end function c47228077.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) end diff --git a/script/c47274077.lua b/script/c47274077.lua index 4ece61fe..7a85f359 100644 --- a/script/c47274077.lua +++ b/script/c47274077.lua @@ -1,27 +1,12 @@ --ネオス・フォース function c47274077.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(c47274077.target) - e1:SetOperation(c47274077.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,89943723)) --atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(800) 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(c47274077.eqlimit) - c:RegisterEffect(e3) --damage local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(47274077,0)) @@ -46,25 +31,6 @@ function c47274077.initial_effect(c) e5:SetOperation(c47274077.retop) c:RegisterEffect(e5) end -function c47274077.eqlimit(e,c) - return c:IsCode(89943723) -end -function c47274077.filter(c) - return c:IsFaceup() and c:IsCode(89943723) -end -function c47274077.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c47274077.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c47274077.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c47274077.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c47274077.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 c47274077.damcon(e,tp,eg,ep,ev,re,r,rp) local ec=eg:GetFirst() local bc=ec:GetBattleTarget() diff --git a/script/c47295267.lua b/script/c47295267.lua index 11c0e14a..5276fca1 100644 --- a/script/c47295267.lua +++ b/script/c47295267.lua @@ -1,61 +1,61 @@ ---サイバネティック・ゾーン -function c47295267.initial_effect(c) - --remove - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c47295267.target) - e1:SetOperation(c47295267.operation) - c:RegisterEffect(e1) -end -function c47295267.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsType(TYPE_FUSION) and c:IsAbleToRemove() -end -function c47295267.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c47295267.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c47295267.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c47295267.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c47295267.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetLabelObject(tc) - e1:SetCountLimit(1) - e1:SetOperation(c47295267.retop) - Duel.RegisterEffect(e1,tp) - end -end -function c47295267.retop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if Duel.ReturnToField(e:GetLabelObject()) then - local e1=Effect.CreateEffect(e:GetOwner()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(tc:GetBaseAttack()*2) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetOwner()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c47295267.descon) - e2:SetOperation(c47295267.desop) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - tc:RegisterEffect(e2) - end -end -function c47295267.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and e:GetHandler():IsRace(RACE_MACHINE) -end -function c47295267.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--サイバネティック・ゾーン +function c47295267.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c47295267.target) + e1:SetOperation(c47295267.operation) + c:RegisterEffect(e1) +end +function c47295267.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsType(TYPE_FUSION) and c:IsAbleToRemove() +end +function c47295267.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c47295267.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c47295267.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c47295267.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c47295267.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetOperation(c47295267.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c47295267.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if Duel.ReturnToField(e:GetLabelObject()) then + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetOwner()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c47295267.descon) + e2:SetOperation(c47295267.desop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + tc:RegisterEffect(e2) + end +end +function c47295267.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():IsRace(RACE_MACHINE) +end +function c47295267.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c47346845.lua b/script/c47346845.lua index 6a477c19..b19db9c4 100644 --- a/script/c47346845.lua +++ b/script/c47346845.lua @@ -25,8 +25,8 @@ end function c47346845.sumop(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,c47346845.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c47346845.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c473469.lua b/script/c473469.lua index ce0d4b86..fdbda100 100644 --- a/script/c473469.lua +++ b/script/c473469.lua @@ -1,36 +1,36 @@ ---猛吹雪 -function c473469.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c473469.condition) - e1:SetTarget(c473469.target) - e1:SetOperation(c473469.activate) - c:RegisterEffect(e1) -end -function c473469.filter(c,tp) - return c:IsType(TYPE_TRAP) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp - and bit.band(c:GetReason(),0x41)==0x41 -end -function c473469.condition(e,tp,eg,ep,ev,re,r,rp) - return rp~=tp and eg:IsExists(c473469.filter,1,nil,tp) -end -function c473469.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c473469.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c473469.desfilter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c473469.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c473469.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c473469.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--猛吹雪 +function c473469.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c473469.condition) + e1:SetTarget(c473469.target) + e1:SetOperation(c473469.activate) + c:RegisterEffect(e1) +end +function c473469.filter(c,tp) + return c:IsType(TYPE_TRAP) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp + and bit.band(c:GetReason(),0x41)==0x41 +end +function c473469.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and eg:IsExists(c473469.filter,1,nil,tp) +end +function c473469.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c473469.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c473469.desfilter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c473469.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c473469.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c473469.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c47349116.lua b/script/c47349116.lua new file mode 100644 index 00000000..6b4610d0 --- /dev/null +++ b/script/c47349116.lua @@ -0,0 +1,89 @@ +--星刻の魔術師 +--Startime Magician +--Scripted by Eerie Code +--Summon limit temporary, might require core update +function c47349116.initial_effect(c) + c:EnableReviveLimit() + aux.AddXyzProcedure(c,c47349116.matfilter,4,2,nil,nil,nil,nil,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c47349116.splimit) + c:RegisterEffect(e1) + --Search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(47349116,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c47349116.thcost) + e2:SetTarget(c47349116.thtg) + e2:SetOperation(c47349116.thop) + c:RegisterEffect(e2) + --destroy replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c47349116.reptg) + e3:SetValue(c47349116.repval) + c:RegisterEffect(e3) +end +function c47349116.matfilter(c) + return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) +end +function c47349116.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or (bit.band(st,SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ and not se) +end +function c47349116.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c47349116.thfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_DARK) + and (c:IsFaceup() or not c:IsLocation(LOCATION_EXTRA)) and c:IsAbleToHand() +end +function c47349116.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c47349116.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_EXTRA,0,nil) + if chk==0 then return g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c47349116.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c47349116.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil) + local tc=g:GetFirst() + if not tc then return end + if tc:IsHasEffect(EFFECT_NECRO_VALLEY) and Duel.IsChainDisablable(0) then + Duel.NegateEffect(0) + return + end + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) +end +function c47349116.repfilter(c,tp) + local seq=c:GetSequence() + return c:IsFaceup() and c:IsControler(tp) + and (c:IsLocation(LOCATION_MZONE) or (c:IsLocation(LOCATION_SZONE) and (seq==6 or seq==7))) + and c:IsType(TYPE_PENDULUM) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c47349116.repcfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsAbleToGrave() +end +function c47349116.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:FilterCount(c47349116.repfilter,nil,tp) + local g=Duel.GetMatchingGroup(c47349116.repcfilter,tp,LOCATION_DECK,0,nil) + if chk==0 then return ct>0 and g:GetCount()>0 end + if Duel.SelectYesNo(tp,aux.Stringid(47349116,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + return true + else return false end +end +function c47349116.repval(e,c) + return c47349116.repfilter(c,e:GetHandlerPlayer()) +end \ No newline at end of file diff --git a/script/c47349310.lua b/script/c47349310.lua index 2c706eff..cff6f4ae 100644 --- a/script/c47349310.lua +++ b/script/c47349310.lua @@ -1,59 +1,59 @@ ---スカイオニヒトクイエイ -function c47349310.initial_effect(c) - --reg - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_DAMAGE_STEP_END) - e1:SetOperation(c47349310.regop) - c:RegisterEffect(e1) - --pierce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DIRECT_ATTACK) - c:RegisterEffect(e2) - --remove - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(47349310,0)) - e3:SetCategory(CATEGORY_REMOVE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_PHASE+PHASE_BATTLE) - e3:SetCountLimit(1) - e3:SetCondition(c47349310.rmcon) - e3:SetTarget(c47349310.rmtg) - e3:SetOperation(c47349310.rmop) - c:RegisterEffect(e3) -end -function c47349310.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetAttackTarget() then return end - c:RegisterFlagEffect(47349310,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) -end -function c47349310.rmcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(47349310)~=0 -end -function c47349310.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) -end -function c47349310.rmop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - if Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)==0 then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetLabelObject(c) - e1:SetCondition(c47349310.retcon) - e1:SetOperation(c47349310.retop) - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - Duel.RegisterEffect(e1,tp) - end -end -function c47349310.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c47349310.retop(e,tp,eg,ep,ev,re,r,rp) - Duel.ReturnToField(e:GetLabelObject()) -end +--スカイオニヒトクイエイ +function c47349310.initial_effect(c) + --reg + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetOperation(c47349310.regop) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(47349310,0)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetCountLimit(1) + e3:SetCondition(c47349310.rmcon) + e3:SetTarget(c47349310.rmtg) + e3:SetOperation(c47349310.rmop) + c:RegisterEffect(e3) +end +function c47349310.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetAttackTarget() then return end + c:RegisterFlagEffect(47349310,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) +end +function c47349310.rmcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(47349310)~=0 +end +function c47349310.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c47349310.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + if Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)==0 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetLabelObject(c) + e1:SetCondition(c47349310.retcon) + e1:SetOperation(c47349310.retop) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c47349310.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c47349310.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c47355498.lua b/script/c47355498.lua index 607d1c9a..d1896465 100644 --- a/script/c47355498.lua +++ b/script/c47355498.lua @@ -71,7 +71,7 @@ function c47355498.disfilter(c,im0,im1) if c:IsControler(0) then return im0 and c:IsHasEffect(EFFECT_NECRO_VALLEY) else return im1 and c:IsHasEffect(EFFECT_NECRO_VALLEY) end end -function c47355498.discheck(ev,category,re,im0,im1,targets) +function c47355498.discheck(ev,category,re,im0,im1) local ex,tg,ct,p,v=Duel.GetOperationInfo(ev,category) if not ex then return false end if v==LOCATION_GRAVE then @@ -81,11 +81,7 @@ function c47355498.discheck(ev,category,re,im0,im1,targets) end end if tg and tg:GetCount()>0 then - if targets and targets:IsContains(re:GetHandler()) then - return tg:IsExists(c47355498.disfilter,1,nil,im0,im1) - else - return tg:IsExists(c47355498.disfilter,1,re:GetHandler(),im0,im1) - end + return tg:IsExists(c47355498.disfilter,1,nil,im0,im1) end return false end @@ -93,16 +89,12 @@ function c47355498.disop(e,tp,eg,ep,ev,re,r,rp) local tc=re:GetHandler() if not Duel.IsChainDisablable(ev) or tc:IsHasEffect(EFFECT_NECRO_VALLEY_IM) then return end local res=false - local targets=nil - if re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then - targets=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - end local im0=not Duel.IsPlayerAffectedByEffect(0,EFFECT_NECRO_VALLEY_IM) local im1=not Duel.IsPlayerAffectedByEffect(1,EFFECT_NECRO_VALLEY_IM) - if not res and c47355498.discheck(ev,CATEGORY_SPECIAL_SUMMON,re,im0,im1,targets) then res=true end - if not res and c47355498.discheck(ev,CATEGORY_REMOVE,re,im0,im1,targets) then res=true end - if not res and c47355498.discheck(ev,CATEGORY_TOHAND,re,im0,im1,targets) then res=true end - if not res and c47355498.discheck(ev,CATEGORY_TODECK,re,im0,im1,targets) then res=true end - if not res and c47355498.discheck(ev,CATEGORY_LEAVE_GRAVE,re,im0,im1,targets) then res=true end - if res then Duel.NegateEffect(ev) end + if not res and c47355498.discheck(ev,CATEGORY_SPECIAL_SUMMON,re,im0,im1) then res=true end + if not res and c47355498.discheck(ev,CATEGORY_REMOVE,re,im0,im1) then res=true end + if not res and c47355498.discheck(ev,CATEGORY_TOHAND,re,im0,im1) then res=true end + if not res and c47355498.discheck(ev,CATEGORY_TODECK,re,im0,im1) then res=true end + if not res and c47355498.discheck(ev,CATEGORY_LEAVE_GRAVE,re,im0,im1) then res=true end + if res then Duel.NegateEffect(ev) end end diff --git a/script/c47360060.lua b/script/c47360060.lua index 3298cdb2..4738f4fc 100644 --- a/script/c47360060.lua +++ b/script/c47360060.lua @@ -1,37 +1,36 @@ ---反射の聖刻印 -function c47360060.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c47360060.condition) - e1:SetCost(c47360060.cost) - e1:SetTarget(c47360060.target) - e1:SetOperation(c47360060.activate) - c:RegisterEffect(e1) -end -function c47360060.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) -end -function c47360060.cfilter(c) - return c:IsSetCard(0x69) and not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c47360060.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c47360060.cfilter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c47360060.cfilter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c47360060.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c47360060.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--反射の聖刻印 +function c47360060.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c47360060.condition) + e1:SetCost(c47360060.cost) + e1:SetTarget(c47360060.target) + e1:SetOperation(c47360060.activate) + c:RegisterEffect(e1) +end +function c47360060.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) +end +function c47360060.cfilter(c) + return c:IsSetCard(0x69) and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c47360060.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c47360060.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c47360060.cfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c47360060.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c47360060.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c47387961.lua b/script/c47387961.lua index 80330f19..66b457ff 100644 --- a/script/c47387961.lua +++ b/script/c47387961.lua @@ -9,7 +9,7 @@ function c47387961.initial_effect(c) e1:SetDescription(aux.Stringid(47387961,0)) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetTarget(c47387961.target) e1:SetOperation(c47387961.operation) @@ -40,23 +40,56 @@ function c47387961.operation(e,tp,eg,ep,ev,re,r,rp) local e2=e1:Clone() e2:SetCode(EFFECT_SET_BASE_ATTACK) e2:SetValue(tc:GetAttack()) + e2:SetLabelObject(e1) c:RegisterEffect(e2) - c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_SINGLE) e4:SetCode(EFFECT_SET_ATTACK_FINAL) e4:SetValue(0) + e4:SetLabelObject(e2) e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) tc:RegisterEffect(e4) local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_SINGLE) e5:SetCode(EFFECT_DISABLE) + e5:SetLabelObject(e4) e5:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) tc:RegisterEffect(e5) local e6=Effect.CreateEffect(c) e6:SetType(EFFECT_TYPE_SINGLE) e6:SetCode(EFFECT_DISABLE_EFFECT) + e6:SetLabelObject(e5) e6:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) tc:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(47387961,1)) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e7:SetLabel(cid) + e7:SetLabelObject(e6) + e7:SetOperation(c47387961.rstop) + c:RegisterEffect(e7) end end +function c47387961.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=e:GetLabel() + c:ResetEffect(cid,RESET_COPY) + local e6=e:GetLabelObject() + local e5=e6:GetLabelObject() + local e4=e5:GetLabelObject() + local e3=e4:GetLabelObject() + local e2=e3:GetLabelObject() + e2:Reset() + e3:Reset() + e4:Reset() + e5:Reset() + e6:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end diff --git a/script/c47408488.lua b/script/c47408488.lua index 3a6554cb..e832ec12 100644 --- a/script/c47408488.lua +++ b/script/c47408488.lua @@ -1,81 +1,81 @@ ---宝玉の樹 -function c47408488.initial_effect(c) - c:EnableCounterPermit(0x6) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_COUNTER) - e2:SetDescription(aux.Stringid(47408488,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_CUSTOM+47408488) - e2:SetOperation(c47408488.ctop) - c:RegisterEffect(e2) - --equip - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_COUNTER) - e3:SetDescription(aux.Stringid(47408488,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_EQUIP) - e3:SetCondition(c47408488.eqcon) - e3:SetOperation(c47408488.ctop) - c:RegisterEffect(e3) - --place - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_COUNTER) - e4:SetDescription(aux.Stringid(47408488,1)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_SZONE) - e4:SetCost(c47408488.plcost) - e4:SetTarget(c47408488.pltg) - e4:SetOperation(c47408488.plop) - c:RegisterEffect(e4) -end -function c47408488.eqcon(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - return tc:IsFaceup() and tc:IsSetCard(0x1034) -end -function c47408488.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x6,1) -end -function c47408488.plcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - e:SetLabel(e:GetHandler():GetCounter(0x6)) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c47408488.pltg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local ct=e:GetHandler():GetCounter(0x6) - return ct>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>=ct - end -end -function c47408488.plfilter(c) - return c:IsSetCard(0x1034) and not c:IsForbidden() -end -function c47408488.plop(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) - if ft<=0 then return end - if ft>e:GetLabel() then ft=e:GetLabel() end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) - local g=Duel.SelectMatchingCard(tp,c47408488.plfilter,tp,LOCATION_DECK,0,ft,ft,nil) - if g:GetCount()>0 then - local tc=g:GetFirst() - while tc do - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetCode(EFFECT_CHANGE_TYPE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fc0000) - e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) - tc:RegisterEffect(e1) - tc=g:GetNext() - end - Duel.RaiseEvent(g,EVENT_CUSTOM+47408488,e,0,tp,0,0) - end -end +--宝玉の樹 +function c47408488.initial_effect(c) + c:EnableCounterPermit(0x6) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetDescription(aux.Stringid(47408488,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CUSTOM+47408488) + e2:SetOperation(c47408488.ctop) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_COUNTER) + e3:SetDescription(aux.Stringid(47408488,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_EQUIP) + e3:SetCondition(c47408488.eqcon) + e3:SetOperation(c47408488.ctop) + c:RegisterEffect(e3) + --place + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_COUNTER) + e4:SetDescription(aux.Stringid(47408488,1)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCost(c47408488.plcost) + e4:SetTarget(c47408488.pltg) + e4:SetOperation(c47408488.plop) + c:RegisterEffect(e4) +end +function c47408488.eqcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsFaceup() and tc:IsSetCard(0x1034) +end +function c47408488.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x6,1) +end +function c47408488.plcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabel(e:GetHandler():GetCounter(0x6)) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c47408488.pltg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local ct=e:GetHandler():GetCounter(0x6) + return ct>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>=ct + end +end +function c47408488.plfilter(c) + return c:IsSetCard(0x1034) and not c:IsForbidden() +end +function c47408488.plop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if ft<=0 then return end + if ft>e:GetLabel() then ft=e:GetLabel() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c47408488.plfilter,tp,LOCATION_DECK,0,ft,ft,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.RaiseEvent(g,EVENT_CUSTOM+47408488,e,0,tp,0,0) + end +end diff --git a/script/c47415292.lua b/script/c47415292.lua index 2dee09f1..181fb34c 100644 --- a/script/c47415292.lua +++ b/script/c47415292.lua @@ -16,7 +16,7 @@ function c47415292.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c47415292.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c47415292.sptg) e2:SetOperation(c47415292.spop) c:RegisterEffect(e2) @@ -25,7 +25,7 @@ function c47415292.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_UPDATE_ATTACK) e3:SetValue(400) - e3:SetCondition(c47415292.uncon) + e3:SetCondition(aux.IsUnionState) c:RegisterEffect(e3) local e4=e3:Clone() e4:SetCode(EFFECT_UPDATE_DEFENSE) @@ -34,14 +34,14 @@ function c47415292.initial_effect(c) local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_EQUIP) e5:SetCode(EFFECT_PIERCE) - e5:SetCondition(c47415292.uncon) + e5:SetCondition(aux.IsUnionState) c:RegisterEffect(e5) --destroy sub local e6=Effect.CreateEffect(c) e6:SetType(EFFECT_TYPE_EQUIP) e6:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e6:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e6:SetCondition(c47415292.uncon) + e6:SetCondition(aux.IsUnionState) e6:SetValue(c47415292.repval) c:RegisterEffect(e6) --eqlimit @@ -52,9 +52,7 @@ function c47415292.initial_effect(c) e7:SetValue(c47415292.eqlimit) c:RegisterEffect(e7) end -function c47415292.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c47415292.old_union=true function c47415292.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -82,7 +80,7 @@ function c47415292.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c47415292.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(47415292)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c47457347.lua b/script/c47457347.lua new file mode 100644 index 00000000..40ec4c5b --- /dev/null +++ b/script/c47457347.lua @@ -0,0 +1,48 @@ +--魔法名-「大いなる獣」 +function c47457347.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c47457347.target) + e1:SetOperation(c47457347.activate) + c:RegisterEffect(e1) +end +function c47457347.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0xf4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c47457347.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c47457347.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c47457347.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetMatchingGroup(c47457347.filter,tp,LOCATION_REMOVED,0,nil,e,tp):Filter(Card.IsCanBeEffectTarget,nil,e) + local tg=Group.CreateGroup() + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + tg:Merge(sg) + g:Remove(Card.IsCode,nil,sg:GetFirst():GetCode()) + ft=ft-1 + until g:GetCount()==0 or ft==0 or not Duel.SelectYesNo(tp,aux.Stringid(47457347,0)) + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tg,tg:GetCount(),0,0) +end +function c47457347.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if ft<=0 or g:GetCount()==0 or (g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if g:GetCount()<=ft then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,ft,ft,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + g:Sub(sg) + Duel.SendtoGrave(g,REASON_RULE) + end +end diff --git a/script/c47459126.lua b/script/c47459126.lua index 485614e9..232a9c63 100644 --- a/script/c47459126.lua +++ b/script/c47459126.lua @@ -1,13 +1,13 @@ ---チューンド・マジシャン -function c47459126.initial_effect(c) - aux.EnableDualAttribute(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_ADD_TYPE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(aux.IsDualState) - e1:SetValue(TYPE_TUNER) - c:RegisterEffect(e1) -end - +--チューンド・マジシャン +function c47459126.initial_effect(c) + aux.EnableDualAttribute(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(aux.IsDualState) + e1:SetValue(TYPE_TUNER) + c:RegisterEffect(e1) +end + diff --git a/script/c47482043.lua b/script/c47482043.lua new file mode 100644 index 00000000..4b50e2e6 --- /dev/null +++ b/script/c47482043.lua @@ -0,0 +1,66 @@ +--古代の機械蘇生 +function c47482043.initial_effect(c) + c:SetUniqueOnField(1,0,47482043) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c47482043.target) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c47482043.spcon) + e2:SetTarget(c47482043.sptg) + e2:SetOperation(c47482043.spop) + c:RegisterEffect(e2) +end +function c47482043.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c47482043.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return true end + if c47482043.spcon(e,tp,eg,ep,ev,re,r,rp) and c47482043.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c47482043.spop) + c47482043.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c47482043.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c47482043.spfilter(c,e,tp) + return c:IsSetCard(0x7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c47482043.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c47482043.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c47482043.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and e:GetHandler():GetFlagEffect(47482043)==0 end + e:GetHandler():RegisterFlagEffect(47482043,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c47482043.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c47482043.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(200) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c47506081.lua b/script/c47506081.lua index 80846ac2..6e6963a3 100644 --- a/script/c47506081.lua +++ b/script/c47506081.lua @@ -7,6 +7,7 @@ function c47506081.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(47506081,0)) e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCode(EVENT_BATTLE_DESTROYING) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetCondition(c47506081.damcon) diff --git a/script/c47529357.lua b/script/c47529357.lua index dbb68130..c08596bb 100644 --- a/script/c47529357.lua +++ b/script/c47529357.lua @@ -1,38 +1,10 @@ --ミスト・ボディ function c47529357.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(c47529357.target) - e1:SetOperation(c47529357.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Indes local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) e2:SetValue(1) 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 c47529357.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 c47529357.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 diff --git a/script/c4756629.lua b/script/c4756629.lua index d370f5ba..93e7059a 100644 --- a/script/c4756629.lua +++ b/script/c4756629.lua @@ -1,110 +1,110 @@ ---ヴェルズ・ケルキオン -function c4756629.initial_effect(c) - --salvage - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetDescription(aux.Stringid(4756629,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,4756629) - e1:SetCost(c4756629.thcost) - e1:SetTarget(c4756629.thtg) - e1:SetOperation(c4756629.thop) - c:RegisterEffect(e1) - --summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(4756629,1)) - e2:SetCategory(CATEGORY_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c4756629.sumcon) - e2:SetTarget(c4756629.sumtg) - e2:SetOperation(c4756629.sumop) - c:RegisterEffect(e2) - --decrease tribute - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetOperation(c4756629.decop) - c:RegisterEffect(e3) -end -function c4756629.rmfilter(c,tp) - return c:IsSetCard(0xa) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() - and Duel.IsExistingTarget(c4756629.filter,tp,LOCATION_GRAVE,0,1,c) -end -function c4756629.filter(c) - return c:IsSetCard(0xa) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c4756629.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c4756629.rmfilter,tp,LOCATION_GRAVE,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c4756629.rmfilter,tp,LOCATION_GRAVE,0,1,1,nil,tp) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c4756629.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c4756629.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c4756629.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c4756629.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end - if c:IsRelateToEffect(e) and c:IsFaceup() then - c:RegisterFlagEffect(4756629,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - end -end -function c4756629.sumcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(4756629)~=0 -end -function c4756629.sumfilter(c) - return c:IsSetCard(0xa) and c:IsSummonable(true,nil) -end -function c4756629.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c4756629.sumfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) -end -function c4756629.sumop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) - local g=Duel.SelectMatchingCard(tp,c4756629.sumfilter,tp,LOCATION_HAND,0,1,1,nil) - local tc=g:GetFirst() - if tc then - Duel.Summon(tp,tc,true,nil) - end -end -function c4756629.decop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetFlagEffect(tp,4756630)~=0 then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_DECREASE_TRIBUTE) - e1:SetTargetRange(LOCATION_HAND,LOCATION_HAND) - e1:SetTarget(c4756629.rfilter) - e1:SetCondition(c4756629.econ) - e1:SetCountLimit(1) - e1:SetValue(0x1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(0x10000000+4756631) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetRange(LOCATION_GRAVE) - e2:SetTargetRange(1,0) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e2) - Duel.RegisterFlagEffect(tp,4756630,RESET_PHASE+PHASE_END,0,1) -end -function c4756629.econ(e) - return Duel.GetFlagEffect(e:GetHandlerPlayer(),4756631)~=0 -end -function c4756629.rfilter(e,c) - return c:IsSetCard(0xa) -end +--ヴェルズ・ケルキオン +function c4756629.initial_effect(c) + --salvage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetDescription(aux.Stringid(4756629,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,4756629) + e1:SetCost(c4756629.thcost) + e1:SetTarget(c4756629.thtg) + e1:SetOperation(c4756629.thop) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4756629,1)) + e2:SetCategory(CATEGORY_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c4756629.sumcon) + e2:SetTarget(c4756629.sumtg) + e2:SetOperation(c4756629.sumop) + c:RegisterEffect(e2) + --decrease tribute + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetOperation(c4756629.decop) + c:RegisterEffect(e3) +end +function c4756629.rmfilter(c,tp) + return c:IsSetCard(0xa) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() + and Duel.IsExistingTarget(c4756629.filter,tp,LOCATION_GRAVE,0,1,c) +end +function c4756629.filter(c) + return c:IsSetCard(0xa) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c4756629.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c4756629.rmfilter,tp,LOCATION_GRAVE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c4756629.rmfilter,tp,LOCATION_GRAVE,0,1,1,nil,tp) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c4756629.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c4756629.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c4756629.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c4756629.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end + if c:IsRelateToEffect(e) and c:IsFaceup() then + c:RegisterFlagEffect(4756629,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c4756629.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(4756629)~=0 +end +function c4756629.sumfilter(c) + return c:IsSetCard(0xa) and c:IsSummonable(true,nil) +end +function c4756629.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c4756629.sumfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c4756629.sumop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c4756629.sumfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil) + end +end +function c4756629.decop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetFlagEffect(tp,4756630)~=0 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DECREASE_TRIBUTE) + e1:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e1:SetTarget(c4756629.rfilter) + e1:SetCondition(c4756629.econ) + e1:SetCountLimit(1) + e1:SetValue(0x1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(0x10000000+4756631) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_GRAVE) + e2:SetTargetRange(1,0) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + Duel.RegisterFlagEffect(tp,4756630,RESET_PHASE+PHASE_END,0,1) +end +function c4756629.econ(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),4756631)~=0 +end +function c4756629.rfilter(e,c) + return c:IsSetCard(0xa) +end diff --git a/script/c47579719.lua b/script/c47579719.lua index d62298c2..521cb5b0 100644 --- a/script/c47579719.lua +++ b/script/c47579719.lua @@ -6,6 +6,7 @@ function c47579719.initial_effect(c) --pos change local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetDescription(aux.Stringid(47579719,0)) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) diff --git a/script/c47596607.lua b/script/c47596607.lua index a01881c8..be6568a6 100644 --- a/script/c47596607.lua +++ b/script/c47596607.lua @@ -1,37 +1,37 @@ ---摩天楼2-ヒーローシティ -function c47596607.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(47596607,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetTarget(c47596607.sptg) - e2:SetOperation(c47596607.spop) - c:RegisterEffect(e2) -end -function c47596607.filter(c,e,tp) - return c:IsSetCard(0x3008) and bit.band(c:GetReason(),REASON_BATTLE)~=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c47596607.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c47596607.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c47596607.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c47596607.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c47596607.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--摩天楼2-ヒーローシティ +function c47596607.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(47596607,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetTarget(c47596607.sptg) + e2:SetOperation(c47596607.spop) + c:RegisterEffect(e2) +end +function c47596607.filter(c,e,tp) + return c:IsSetCard(0x3008) and bit.band(c:GetReason(),REASON_BATTLE)~=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c47596607.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c47596607.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c47596607.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c47596607.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c47596607.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c47611119.lua b/script/c47611119.lua index 7a78e37e..cf7ceeeb 100644 --- a/script/c47611119.lua +++ b/script/c47611119.lua @@ -1,50 +1,50 @@ ---ジェムナイトレディ・ラピスラズリ -function c47611119.initial_effect(c) - c:SetSPSummonOnce(47611119) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,99645428,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),1,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c47611119.splimit) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c47611119.damtg) - e2:SetOperation(c47611119.damop) - c:RegisterEffect(e2) -end -function c47611119.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c47611119.filter(c) - return c:IsSetCard(0x1047) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() -end -function c47611119.ctfilter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL -end -function c47611119.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c47611119.filter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,nil) - and Duel.IsExistingMatchingCard(c47611119.ctfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local ct=Duel.GetMatchingGroupCount(c47611119.ctfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetTargetPlayer(1-tp) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*500) -end -function c47611119.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c47611119.filter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local ct=Duel.GetMatchingGroupCount(c47611119.ctfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.Damage(p,ct*500,REASON_EFFECT) - end -end +--ジェムナイトレディ・ラピスラズリ +function c47611119.initial_effect(c) + c:SetSPSummonOnce(47611119) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,99645428,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),1,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c47611119.splimit) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c47611119.damtg) + e2:SetOperation(c47611119.damop) + c:RegisterEffect(e2) +end +function c47611119.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c47611119.filter(c) + return c:IsSetCard(0x1047) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c47611119.ctfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c47611119.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c47611119.filter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,nil) + and Duel.IsExistingMatchingCard(c47611119.ctfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local ct=Duel.GetMatchingGroupCount(c47611119.ctfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*500) +end +function c47611119.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c47611119.filter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(c47611119.ctfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Damage(p,ct*500,REASON_EFFECT) + end +end diff --git a/script/c47660516.lua b/script/c47660516.lua index dd7b6caf..f8175b2f 100644 --- a/script/c47660516.lua +++ b/script/c47660516.lua @@ -16,7 +16,7 @@ function c47660516.filter1(c,e,tp) and Duel.IsExistingMatchingCard(c47660516.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetRace(),c:GetCode()) end function c47660516.filter2(c,e,tp,mc,rk,rc,code) - if c:GetOriginalCode()==6165656 and code~=48995978 then return false end + if c.rum_limit_code and code~=c.rum_limit_code then return false end return c:GetRank()==rk and c:IsRace(rc) and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073)) and mc:IsCanBeXyzMaterial(c) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) end diff --git a/script/c47679935.lua b/script/c47679935.lua new file mode 100644 index 00000000..d5f13575 --- /dev/null +++ b/script/c47679935.lua @@ -0,0 +1,72 @@ +--暴走魔法陣 +function c47679935.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,47679935+EFFECT_COUNT_CODE_OATH) + e1:SetOperation(c47679935.activate) + c:RegisterEffect(e1) + --inactivatable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_INACTIVATE) + e2:SetRange(LOCATION_FZONE) + e2:SetValue(c47679935.efilter) + c:RegisterEffect(e2) + --act limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_FZONE) + e3:SetCondition(c47679935.limcon) + e3:SetOperation(c47679935.limop) + c:RegisterEffect(e3) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetRange(LOCATION_FZONE) + e5:SetCode(EVENT_CHAIN_END) + e5:SetOperation(c47679935.limop2) + c:RegisterEffect(e5) +end +function c47679935.thfilter(c) + return c:IsCode(86120751) and c:IsAbleToHand() +end +function c47679935.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c47679935.thfilter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(47679935,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end +function c47679935.efilter(e,ct) + local p=e:GetHandlerPlayer() + local te,tp=Duel.GetChainInfo(ct,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) + return p==tp and te:IsHasCategory(CATEGORY_FUSION_SUMMON) +end +function c47679935.limfilter(c,tp) + return c:GetSummonPlayer()==tp and bit.band(c:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c47679935.limcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c47679935.limfilter,1,nil,tp) +end +function c47679935.limop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetCurrentChain()==0 then + Duel.SetChainLimitTillChainEnd(c47679935.chainlm) + elseif Duel.GetCurrentChain()==1 then + e:GetHandler():RegisterFlagEffect(47679935,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c47679935.limop2(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(47679935)~=0 then + Duel.SetChainLimitTillChainEnd(c47679935.chainlm) + end + e:GetHandler():ResetFlagEffect(47679935) +end +function c47679935.chainlm(e,rp,tp) + return tp==rp +end diff --git a/script/c47693640.lua b/script/c47693640.lua index 3cecfc2b..60a4c4fa 100644 --- a/script/c47693640.lua +++ b/script/c47693640.lua @@ -16,7 +16,7 @@ function c47693640.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c47693640.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c47693640.sptg) e2:SetOperation(c47693640.spop) c:RegisterEffect(e2) @@ -25,14 +25,14 @@ function c47693640.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_UPDATE_ATTACK) e3:SetValue(500) - e3:SetCondition(c47693640.uncon) + e3:SetCondition(aux.IsUnionState) c:RegisterEffect(e3) --Def up local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP) e4:SetCode(EFFECT_UPDATE_DEFENSE) e4:SetValue(500) - e4:SetCondition(c47693640.uncon) + e4:SetCondition(aux.IsUnionState) c:RegisterEffect(e4) --handes local e5=Effect.CreateEffect(c) @@ -50,7 +50,7 @@ function c47693640.initial_effect(c) e6:SetType(EFFECT_TYPE_EQUIP) e6:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e6:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e6:SetCondition(c47693640.uncon) + e6:SetCondition(aux.IsUnionState) e6:SetValue(c47693640.repval) c:RegisterEffect(e6) --eqlimit @@ -61,9 +61,7 @@ function c47693640.initial_effect(c) e7:SetValue(c47693640.eqlimit) c:RegisterEffect(e7) end -function c47693640.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c47693640.old_union=true function c47693640.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -91,7 +89,7 @@ function c47693640.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c47693640.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(47693640)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -109,7 +107,7 @@ function c47693640.spop(e,tp,eg,ep,ev,re,r,rp) end end function c47693640.hdcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and eg:GetFirst()==e:GetHandler():GetEquipTarget() + return aux.IsUnionState(e) and eg:GetFirst()==e:GetHandler():GetEquipTarget() end function c47693640.hdtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end diff --git a/script/c47705572.lua b/script/c47705572.lua index edef26d8..f1053a15 100644 --- a/script/c47705572.lua +++ b/script/c47705572.lua @@ -13,7 +13,7 @@ function c47705572.initial_effect(c) c:RegisterEffect(e1) --fusion local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_PZONE) e2:SetCountLimit(1) @@ -32,25 +32,33 @@ end function c47705572.splimit(e,c,sump,sumtype,sumpos,targetp) return not (c:IsSetCard(0xdf) and c:IsType(TYPE_MONSTER)) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM end +function c47705572.filter0(c) + return c:IsOnField() and c:IsAbleToRemove() +end function c47705572.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) and c:IsAbleToRemove() + return c:IsOnField() and not c:IsImmuneToEffect(e) and c:IsAbleToRemove() end function c47705572.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0xdf) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) end +function c47705572.filter3(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end function c47705572.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil) + local mg1=Duel.GetFusionMaterial(tp):Filter(c47705572.filter0,nil) + local mg2=Duel.GetMatchingGroup(c47705572.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local res=Duel.IsExistingMatchingCard(c47705572.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) + local mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c47705572.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + res=Duel.IsExistingMatchingCard(c47705572.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) end end return res @@ -60,16 +68,18 @@ end function c47705572.spop(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c47705572.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c47705572.filter1,nil,e) + local mg2=Duel.GetMatchingGroup(c47705572.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local sg1=Duel.GetMatchingGroup(c47705572.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil + local mg3=nil local sg2=nil local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) + mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c47705572.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + sg2=Duel.GetMatchingGroup(c47705572.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) end if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then local sg=sg1:Clone() @@ -84,7 +94,7 @@ function c47705572.spop(e,tp,eg,ep,ev,re,r,rp) Duel.BreakEffect() Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) local fop=ce:GetOperation() fop(ce,e,tp,tc,mat2) end diff --git a/script/c47728740.lua b/script/c47728740.lua index 936e3f51..f1969dc7 100644 --- a/script/c47728740.lua +++ b/script/c47728740.lua @@ -1,82 +1,82 @@ ---彼岸の悪鬼 アリキーノ -function c47728740.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c47728740.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(47728740,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,47728740) - e2:SetCondition(c47728740.sscon) - e2:SetTarget(c47728740.sstg) - e2:SetOperation(c47728740.ssop) - c:RegisterEffect(e2) - --disable - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(47728740,1)) - e3:SetCategory(CATEGORY_DISABLE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1,47728740) - e3:SetTarget(c47728740.distg) - e3:SetOperation(c47728740.disop) - c:RegisterEffect(e3) -end -function c47728740.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c47728740.sdcon(e) - return Duel.IsExistingMatchingCard(c47728740.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c47728740.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c47728740.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c47728740.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c47728740.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c47728740.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c47728740.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c47728740.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsDisabled() then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--彼岸の悪鬼 アリキーノ +function c47728740.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c47728740.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(47728740,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,47728740) + e2:SetCondition(c47728740.sscon) + e2:SetTarget(c47728740.sstg) + e2:SetOperation(c47728740.ssop) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(47728740,1)) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,47728740) + e3:SetTarget(c47728740.distg) + e3:SetOperation(c47728740.disop) + c:RegisterEffect(e3) +end +function c47728740.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c47728740.sdcon(e) + return Duel.IsExistingMatchingCard(c47728740.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c47728740.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c47728740.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c47728740.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c47728740.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c47728740.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c47728740.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c47728740.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsDisabled() then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c47737087.lua b/script/c47737087.lua index b57728e4..8ae3dfd2 100644 --- a/script/c47737087.lua +++ b/script/c47737087.lua @@ -1,49 +1,50 @@ ---E・HERO ランパートガンナー -function c47737087.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,58932615,84327329,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DIRECT_ATTACK) - e2:SetCondition(c47737087.dacon) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DEFENSE_ATTACK) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e4:SetCondition(c47737087.dacon) - e4:SetValue(1) - c:RegisterEffect(e4) - --atkdown - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_SET_ATTACK_FINAL) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetRange(LOCATION_MZONE) - e5:SetCondition(c47737087.atkcon) - e5:SetValue(c47737087.atkval) - c:RegisterEffect(e5) -end -function c47737087.dacon(e) - return e:GetHandler():IsDefensePos() -end -function c47737087.atkcon(e) - if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end - local c=e:GetHandler() - return c:IsDefensePos() and c==Duel.GetAttacker() and Duel.GetAttackTarget()==nil and c:GetEffectCount(EFFECT_DIRECT_ATTACK)==1 -end -function c47737087.atkval(e,c) - return c:GetAttack()/2 -end +--E・HERO ランパートガンナー +function c47737087.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,58932615,84327329,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetCondition(c47737087.dacon) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DEFENSE_ATTACK) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetCondition(c47737087.dacon) + e4:SetValue(1) + c:RegisterEffect(e4) + --atkdown + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_SET_ATTACK_FINAL) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c47737087.atkcon) + e5:SetValue(c47737087.atkval) + c:RegisterEffect(e5) +end +c47737087.material_setcode=0x8 +function c47737087.dacon(e) + return e:GetHandler():IsDefensePos() +end +function c47737087.atkcon(e) + if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end + local c=e:GetHandler() + return c:IsDefensePos() and c==Duel.GetAttacker() and Duel.GetAttackTarget()==nil and c:GetEffectCount(EFFECT_DIRECT_ATTACK)==1 +end +function c47737087.atkval(e,c) + return c:GetAttack()/2 +end diff --git a/script/c47741109.lua b/script/c47741109.lua index 177cef4a..365c3465 100644 --- a/script/c47741109.lua +++ b/script/c47741109.lua @@ -1,32 +1,32 @@ ---森羅の隠蜜 スナッフ -function c47741109.initial_effect(c) - --tograve - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(47741109,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCondition(c47741109.condition) - e1:SetTarget(c47741109.target) - e1:SetOperation(c47741109.operation) - c:RegisterEffect(e1) -end -function c47741109.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_HAND+LOCATION_ONFIELD) or (c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL)) -end -function c47741109.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c47741109.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - if tc:IsRace(RACE_PLANT) then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) - else - Duel.MoveSequence(tc,1) - end -end +--森羅の隠蜜 スナッフ +function c47741109.initial_effect(c) + --tograve + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(47741109,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c47741109.condition) + e1:SetTarget(c47741109.target) + e1:SetOperation(c47741109.operation) + c:RegisterEffect(e1) +end +function c47741109.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_HAND+LOCATION_ONFIELD) or (c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL)) +end +function c47741109.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c47741109.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsRace(RACE_PLANT) then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) + else + Duel.MoveSequence(tc,1) + end +end diff --git a/script/c47766694.lua b/script/c47766694.lua index 5f49ffaa..3c814ca6 100644 --- a/script/c47766694.lua +++ b/script/c47766694.lua @@ -1,67 +1,67 @@ ---荒野の大竜巻 -function c47766694.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c47766694.target) - e1:SetOperation(c47766694.activate) - c:RegisterEffect(e1) - --Destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(47766694,1)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c47766694.descon) - e2:SetTarget(c47766694.destg) - e2:SetOperation(c47766694.desop) - c:RegisterEffect(e2) -end -function c47766694.filter(c) - return c:IsFaceup() and c:GetSequence()<5 -end -function c47766694.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c47766694.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c47766694.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c47766694.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c47766694.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then - local dp=tc:GetControler() - local g=Duel.GetMatchingGroup(Card.IsSSetable,dp,LOCATION_HAND,0,nil) - if g:GetCount()>0 and Duel.SelectYesNo(dp,aux.Stringid(47766694,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,510) - local sg=g:Select(dp,1,1,nil) - Duel.SSet(dp,sg:GetFirst()) - end - end -end -function c47766694.descon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_DESTROY)~=0 - and bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)~=0 - and bit.band(e:GetHandler():GetPreviousPosition(),POS_FACEDOWN)~=0 -end -function c47766694.desfilter(c) - return c:IsFaceup() -end -function c47766694.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c47766694.desfilter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c47766694.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c47766694.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--荒野の大竜巻 +function c47766694.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c47766694.target) + e1:SetOperation(c47766694.activate) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(47766694,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c47766694.descon) + e2:SetTarget(c47766694.destg) + e2:SetOperation(c47766694.desop) + c:RegisterEffect(e2) +end +function c47766694.filter(c) + return c:IsFaceup() and c:GetSequence()<5 +end +function c47766694.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c47766694.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c47766694.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c47766694.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c47766694.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + local dp=tc:GetControler() + local g=Duel.GetMatchingGroup(Card.IsSSetable,dp,LOCATION_HAND,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(dp,aux.Stringid(47766694,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,510) + local sg=g:Select(dp,1,1,nil) + Duel.SSet(dp,sg:GetFirst()) + end + end +end +function c47766694.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_DESTROY)~=0 + and bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)~=0 + and bit.band(e:GetHandler():GetPreviousPosition(),POS_FACEDOWN)~=0 +end +function c47766694.desfilter(c) + return c:IsFaceup() +end +function c47766694.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c47766694.desfilter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c47766694.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c47766694.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c4779091.lua b/script/c4779091.lua index c41d907c..ede73ae1 100644 --- a/script/c4779091.lua +++ b/script/c4779091.lua @@ -94,8 +94,8 @@ end function c4779091.spop(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,c4779091.filter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c4779091.filter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) end end diff --git a/script/c47805931.lua b/script/c47805931.lua index e39ad176..b45e7ba4 100644 --- a/script/c47805931.lua +++ b/script/c47805931.lua @@ -7,6 +7,7 @@ function c47805931.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetDescription(aux.Stringid(47805931,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c47819246.lua b/script/c47819246.lua index 88876a04..6394c9be 100644 --- a/script/c47819246.lua +++ b/script/c47819246.lua @@ -1,96 +1,96 @@ ---超量機神剣-マグナスレイヤー -function c47819246.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+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c47819246.condition) - e1:SetTarget(c47819246.target) - e1:SetOperation(c47819246.operation) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(c47819246.atkval) - c:RegisterEffect(e2) - --pierce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e3) - --multi attack - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(47819246,0)) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetRange(LOCATION_SZONE) - e4:SetCondition(c47819246.mtcon) - e4:SetCost(c47819246.mtcost) - e4:SetTarget(c47819246.mttg) - e4:SetOperation(c47819246.mtop) - c:RegisterEffect(e4) -end -function c47819246.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c47819246.filter(c) - return c:IsFaceup() and c:IsSetCard(0xdc) and c:IsType(TYPE_XYZ) -end -function c47819246.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c47819246.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c47819246.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c47819246.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c47819246.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetControler()==c:GetControler() then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - --Equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c47819246.eqlimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - end -end -function c47819246.eqlimit(e,c) - return c:GetControler()==e:GetOwnerPlayer() and c:IsSetCard(0xdc) and c:IsType(TYPE_XYZ) -end -function c47819246.atkval(e,c) - return c:GetRank()*100 -end -function c47819246.mtcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsType(TYPE_EQUIP) and Duel.GetTurnPlayer()==tp and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) -end -function c47819246.mtcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() end - Duel.SetTargetCard(c:GetEquipTarget()) - Duel.SendtoGrave(c,REASON_COST) -end -function c47819246.mttg(e,tp,eg,ep,ev,re,r,rp,chk) - local ec=e:GetHandler():GetEquipTarget() - if chk==0 then return ec and not ec:IsHasEffect(EFFECT_EXTRA_ATTACK) end -end -function c47819246.mtop(e,tp,eg,ep,ev,re,r,rp) - local ec=Duel.GetFirstTarget() - if ec:IsLocation(LOCATION_MZONE) and ec:IsFaceup() and ec:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - ec:RegisterEffect(e1) - end -end +--超量機神剣-マグナスレイヤー +function c47819246.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+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c47819246.condition) + e1:SetTarget(c47819246.target) + e1:SetOperation(c47819246.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c47819246.atkval) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) + --multi attack + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(47819246,0)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c47819246.mtcon) + e4:SetCost(c47819246.mtcost) + e4:SetTarget(c47819246.mttg) + e4:SetOperation(c47819246.mtop) + c:RegisterEffect(e4) +end +function c47819246.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c47819246.filter(c) + return c:IsFaceup() and c:IsSetCard(0xdc) and c:IsType(TYPE_XYZ) +end +function c47819246.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c47819246.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c47819246.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c47819246.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c47819246.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetControler()==c:GetControler() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c47819246.eqlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c47819246.eqlimit(e,c) + return c:GetControler()==e:GetOwnerPlayer() and c:IsSetCard(0xdc) and c:IsType(TYPE_XYZ) +end +function c47819246.atkval(e,c) + return c:GetRank()*100 +end +function c47819246.mtcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsType(TYPE_EQUIP) and Duel.GetTurnPlayer()==tp and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) +end +function c47819246.mtcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() end + Duel.SetTargetCard(c:GetEquipTarget()) + Duel.SendtoGrave(c,REASON_COST) +end +function c47819246.mttg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetEquipTarget() + if chk==0 then return ec and not ec:IsHasEffect(EFFECT_EXTRA_ATTACK) end +end +function c47819246.mtop(e,tp,eg,ep,ev,re,r,rp) + local ec=Duel.GetFirstTarget() + if ec:IsLocation(LOCATION_MZONE) and ec:IsFaceup() and ec:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + ec:RegisterEffect(e1) + end +end diff --git a/script/c47882565.lua b/script/c47882565.lua new file mode 100644 index 00000000..90d1663c --- /dev/null +++ b/script/c47882565.lua @@ -0,0 +1,74 @@ +--RUM-光波昇華 +function c47882565.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c47882565.condition) + e1:SetTarget(c47882565.target) + e1:SetOperation(c47882565.activate) + c:RegisterEffect(e1) +end +function c47882565.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c47882565.filter1(c,e,tp) + local rk=c:GetRank() + return rk>0 and c:IsFaceup() and c:IsSetCard(0xe5) + and Duel.IsExistingMatchingCard(c47882565.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1) +end +function c47882565.filter2(c,e,tp,mc,rk) + return c:GetRank()==rk and c:IsSetCard(0xe5) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c47882565.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c47882565.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c47882565.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c47882565.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c47882565.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c47882565.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c47882565.atkval) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1,true) + if not sc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e2,true) + end + sc:CompleteProcedure() + end +end +function c47882565.atkfilter(c) + return c:IsFaceup() and c:IsLevelAbove(4) +end +function c47882565.atkval(e,c) + return Duel.GetMatchingGroupCount(c47882565.atkfilter,c:GetControler(),LOCATION_MZONE,0,nil)*500 +end diff --git a/script/c48009503.lua b/script/c48009503.lua index bddba870..c606085a 100644 --- a/script/c48009503.lua +++ b/script/c48009503.lua @@ -7,6 +7,7 @@ function c48009503.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(48009503,0)) e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetRange(LOCATION_MZONE) diff --git a/script/c48063985.lua b/script/c48063985.lua index 907b0b09..7bba7bd1 100644 --- a/script/c48063985.lua +++ b/script/c48063985.lua @@ -1,135 +1,135 @@ ---聖霊獣騎 カンナホーク -function c48063985.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10b5),aux.FilterBoolFunction(Card.IsFusionSetCard,0x20b5),true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c48063985.sprcon) - e2:SetOperation(c48063985.sprop) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(48063985,0)) - e3:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetTarget(c48063985.thtg) - e3:SetOperation(c48063985.thop) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(48063985,1)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetHintTiming(0,TIMING_END_PHASE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetRange(LOCATION_MZONE) - e4:SetCost(c48063985.spcost) - e4:SetTarget(c48063985.sptg) - e4:SetOperation(c48063985.spop) - c:RegisterEffect(e4) -end -function c48063985.spfilter1(c,tp) - return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() - and Duel.IsExistingMatchingCard(c48063985.spfilter2,tp,LOCATION_MZONE,0,1,c) -end -function c48063985.spfilter2(c) - return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() -end -function c48063985.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c48063985.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) -end -function c48063985.sprop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g1=Duel.SelectMatchingCard(tp,c48063985.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=Duel.SelectMatchingCard(tp,c48063985.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) - g1:Merge(g2) - c:SetMaterial(g1) - Duel.Remove(g1,POS_FACEUP,REASON_COST) -end -function c48063985.tgfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb5) -end -function c48063985.thfilter(c) - return c:IsSetCard(0xb5) and c:IsAbleToHand() -end -function c48063985.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c48063985.tgfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c48063985.tgfilter,tp,LOCATION_REMOVED,0,2,nil) - and Duel.IsExistingMatchingCard(c48063985.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,c48063985.tgfilter,tp,LOCATION_REMOVED,0,2,2,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c48063985.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT+REASON_RETURN) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=Duel.SelectMatchingCard(tp,c48063985.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if sg:GetCount()>0 then - Duel.SendtoHand(sg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,sg) - end - end -end -function c48063985.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtraAsCost() end - Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_COST) -end -function c48063985.filter1(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x10b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingTarget(c48063985.filter2,tp,LOCATION_REMOVED,0,1,c,e,tp) -end -function c48063985.filter2(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x20b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c48063985.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c48063985.filter1,tp,LOCATION_REMOVED,0,1,nil,e,tp) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectTarget(tp,c48063985.filter1,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectTarget(tp,c48063985.filter2,tp,LOCATION_REMOVED,0,1,1,g1:GetFirst(),e,tp) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) -end -function c48063985.spop(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()==0 then return end - if g:GetCount()<=ft then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,ft,ft,nil) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - g:Sub(sg) - Duel.SendtoGrave(g,REASON_RULE) - end -end +--聖霊獣騎 カンナホーク +function c48063985.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10b5),aux.FilterBoolFunction(Card.IsFusionSetCard,0x20b5),true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c48063985.sprcon) + e2:SetOperation(c48063985.sprop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(48063985,0)) + e3:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c48063985.thtg) + e3:SetOperation(c48063985.thop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(48063985,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetHintTiming(0,TIMING_END_PHASE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c48063985.spcost) + e4:SetTarget(c48063985.sptg) + e4:SetOperation(c48063985.spop) + c:RegisterEffect(e4) +end +function c48063985.spfilter1(c,tp) + return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c48063985.spfilter2,tp,LOCATION_MZONE,0,1,c) +end +function c48063985.spfilter2(c) + return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() +end +function c48063985.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c48063985.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) +end +function c48063985.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c48063985.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c48063985.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) + g1:Merge(g2) + c:SetMaterial(g1) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c48063985.tgfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb5) +end +function c48063985.thfilter(c) + return c:IsSetCard(0xb5) and c:IsAbleToHand() +end +function c48063985.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c48063985.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c48063985.tgfilter,tp,LOCATION_REMOVED,0,2,nil) + and Duel.IsExistingMatchingCard(c48063985.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c48063985.tgfilter,tp,LOCATION_REMOVED,0,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c48063985.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT+REASON_RETURN) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectMatchingCard(tp,c48063985.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end + end +end +function c48063985.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtraAsCost() end + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_COST) +end +function c48063985.filter1(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x10b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c48063985.filter2,tp,LOCATION_REMOVED,0,1,c,e,tp) +end +function c48063985.filter2(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x20b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c48063985.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c48063985.filter1,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c48063985.filter1,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c48063985.filter2,tp,LOCATION_REMOVED,0,1,1,g1:GetFirst(),e,tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) +end +function c48063985.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 then return end + if g:GetCount()<=ft then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,ft,ft,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + g:Sub(sg) + Duel.SendtoGrave(g,REASON_RULE) + end +end diff --git a/script/c4807253.lua b/script/c4807253.lua index 3faf1b72..35efd314 100644 --- a/script/c4807253.lua +++ b/script/c4807253.lua @@ -1,79 +1,79 @@ ---Emフレイム・イーター -function c4807253.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(aux.damcon1) - e1:SetTarget(c4807253.sptg) - e1:SetOperation(c4807253.spop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTarget(c4807253.damtg) - e2:SetOperation(c4807253.damop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c4807253.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c4807253.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) - local e1=Effect.CreateEffect(c) - 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(c4807253.damval) - e1:SetReset(RESET_CHAIN) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetReset(RESET_EVENT+0x47e0000) - e2:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e2,true) - end - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,0) - e3:SetTarget(c4807253.splimit) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) -end -function c4807253.damval(e,re,val,r,rp,rc) - local cc=Duel.GetCurrentChain() - if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end - local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) - if cid~=e:GetLabel() then return val end - return 0 -end -function c4807253.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return not c:IsSetCard(0xc6) -end -function c4807253.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,500) -end -function c4807253.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.Damage(1-tp,500,REASON_EFFECT,true) - Duel.Damage(tp,500,REASON_EFFECT,true) - Duel.RDComplete() -end +--Emフレイム・イーター +function c4807253.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(aux.damcon1) + e1:SetTarget(c4807253.sptg) + e1:SetOperation(c4807253.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTarget(c4807253.damtg) + e2:SetOperation(c4807253.damop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c4807253.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c4807253.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e1=Effect.CreateEffect(c) + 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(c4807253.damval) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x47e0000) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2,true) + end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetTarget(c4807253.splimit) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c4807253.damval(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid~=e:GetLabel() then return val end + return 0 +end +function c4807253.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0xc6) +end +function c4807253.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,500) +end +function c4807253.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,500,REASON_EFFECT,true) + Duel.Damage(tp,500,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c48130397.lua b/script/c48130397.lua index d7b0b704..53306659 100644 --- a/script/c48130397.lua +++ b/script/c48130397.lua @@ -2,7 +2,7 @@ function c48130397.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(0,0x1e0) @@ -11,16 +11,19 @@ function c48130397.initial_effect(c) e1:SetOperation(c48130397.activate) c:RegisterEffect(e1) end -function c48130397.filter0(c,tp) - return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() +function c48130397.filter0(c) + return c:IsFaceup() and c:IsCanBeFusionMaterial() end -function c48130397.filter1(c,e,tp) - return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +function c48130397.filter1(c,e) + return c:IsFaceup() and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) end function c48130397.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) end +function c48130397.filter3(c,e) + return c:IsOnField() and not c:IsImmuneToEffect(e) +end function c48130397.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) @@ -28,15 +31,17 @@ end function c48130397.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c48130397.filter0,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) + local mg2=Duel.GetMatchingGroup(c48130397.filter0,tp,0,LOCATION_MZONE,nil) + mg1:Merge(mg2) local res=Duel.IsExistingMatchingCard(c48130397.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) + local mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c48130397.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + res=Duel.IsExistingMatchingCard(c48130397.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) end end return res @@ -48,16 +53,18 @@ function c48130397.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c48130397.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c48130397.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e,tp) + local mg1=Duel.GetFusionMaterial(tp):Filter(c48130397.filter3,nil,e) + local mg2=Duel.GetMatchingGroup(c48130397.filter1,tp,0,LOCATION_MZONE,nil,e) + mg1:Merge(mg2) local sg1=Duel.GetMatchingGroup(c48130397.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil + local mg3=nil local sg2=nil local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) + mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c48130397.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + sg2=Duel.GetMatchingGroup(c48130397.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) end if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then local sg=sg1:Clone() @@ -72,7 +79,7 @@ function c48130397.activate(e,tp,eg,ep,ev,re,r,rp) Duel.BreakEffect() Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) local fop=ce:GetOperation() fop(ce,e,tp,tc,mat2) end diff --git a/script/c48144509.lua b/script/c48144509.lua index b29ca492..59133e32 100644 --- a/script/c48144509.lua +++ b/script/c48144509.lua @@ -1,104 +1,101 @@ ---オッドアイズ・フュージョン -function c48144509.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,48144509+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c48144509.target) - e1:SetOperation(c48144509.activate) - c:RegisterEffect(e1) -end -function c48144509.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() -end -function c48144509.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) -end -function c48144509.exfilter0(c) - return c:IsSetCard(0x99) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave() -end -function c48144509.exfilter1(c,e) - return c:IsSetCard(0x99) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) -end -function c48144509.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end ---fusion monster filter ---check_fusion_material_48144509: for dragon-type monsters that >2 odd-eye is possible -function c48144509.filter3(c,e,tp,m,f,chkf) - local mg=m:Clone() - mg:RemoveCard(c) - if c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) then - if c.check_fusion_material_48144509 then return c.check_fusion_material_48144509(mg,chkf) end - return c:CheckFusionMaterial(mg,nil,chkf) - else return false end -end -function c48144509.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c48144509.filter0,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then - local sg=Duel.GetMatchingGroup(c48144509.exfilter0,tp,LOCATION_EXTRA,0,nil) - mg1:Merge(sg) - end - local res=Duel.IsExistingMatchingCard(c48144509.filter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c48144509.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c48144509.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c48144509.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then - local sg=Duel.GetMatchingGroup(c48144509.exfilter1,tp,LOCATION_EXTRA,0,nil,e) - mg1:Merge(sg) - end - local sg1=Duel.GetMatchingGroup(c48144509.filter3,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c48144509.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - mg1:RemoveCard(tc) - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=nil - if tc.select_fusion_material_48144509 then - mat1=tc.select_fusion_material_48144509(tp,mg1,chkf) - else - mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - end - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--オッドアイズ・フュージョン +function c48144509.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,48144509+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c48144509.target) + e1:SetOperation(c48144509.activate) + c:RegisterEffect(e1) +end +function c48144509.filter1(c,e) + return c:IsAbleToGrave() and not c:IsImmuneToEffect(e) +end +function c48144509.exfilter0(c) + return c:IsSetCard(0x99) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave() +end +function c48144509.exfilter1(c,e) + return c:IsSetCard(0x99) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) +end +function c48144509.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +--fusion monster filter +--check_fusion_material_48144509: for dragon-type monsters that >2 odd-eye is possible +function c48144509.filter3(c,e,tp,m,f,chkf) + local mg=m:Clone() + mg:RemoveCard(c) + if c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) then + if c.check_fusion_material_48144509 then return c.check_fusion_material_48144509(mg,chkf) end + return c:CheckFusionMaterial(mg,nil,chkf) + else return false end +end +function c48144509.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsAbleToGrave,nil) + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then + local sg=Duel.GetMatchingGroup(c48144509.exfilter0,tp,LOCATION_EXTRA,0,nil) + mg1:Merge(sg) + end + local res=Duel.IsExistingMatchingCard(c48144509.filter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c48144509.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c48144509.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c48144509.filter1,nil,e) + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then + local sg=Duel.GetMatchingGroup(c48144509.exfilter1,tp,LOCATION_EXTRA,0,nil,e) + mg1:Merge(sg) + end + local sg1=Duel.GetMatchingGroup(c48144509.filter3,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c48144509.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + mg1:RemoveCard(tc) + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=nil + if tc.select_fusion_material_48144509 then + mat1=tc.select_fusion_material_48144509(tp,mg1,chkf) + else + mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + end + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c48156348.lua b/script/c48156348.lua index 4155b380..c6e031c7 100644 --- a/script/c48156348.lua +++ b/script/c48156348.lua @@ -46,7 +46,7 @@ function c48156348.splimit(e,se,sp,st) return e:GetHandler():GetLocation()~=LOCATION_EXTRA end function c48156348.spfilter1(c,tp) - return c:IsFusionCode(41470137) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) + return c:IsFusionCode(41470137) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() and Duel.IsExistingMatchingCard(c48156348.spfilter2,tp,LOCATION_MZONE,0,1,c) end function c48156348.spfilter2(c) diff --git a/script/c48179391.lua b/script/c48179391.lua index f3b4f30c..4295d9c7 100644 --- a/script/c48179391.lua +++ b/script/c48179391.lua @@ -1,81 +1,81 @@ ---オレイカルコスの結界 -function c48179391.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(c48179391.actcost) - e1:SetTarget(c48179391.acttg) - e1:SetOperation(c48179391.actop) - c:RegisterEffect(e1) - --spsummon limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,0) - e2:SetTarget(c48179391.sumlimit) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_FZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetValue(500) - c:RegisterEffect(e3) - -- - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_FZONE) - e4:SetCode(EFFECT_INDESTRUCTABLE_COUNT) - e4:SetCountLimit(1) - e4:SetValue(c48179391.valcon) - c:RegisterEffect(e4) - --atk limit - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e5:SetRange(LOCATION_FZONE) - e5:SetTargetRange(0,LOCATION_MZONE) - e5:SetCondition(c48179391.atkcon) - e5:SetValue(c48179391.atlimit) - c:RegisterEffect(e5) -end -function c48179391.actcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,48179391)==0 end - Duel.RegisterFlagEffect(tp,48179391,0,0,0) -end -function c48179391.desfilter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 -end -function c48179391.acttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c48179391.desfilter,tp,LOCATION_MZONE,0,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c48179391.actop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(c48179391.desfilter,tp,LOCATION_MZONE,0,nil) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - end -end -function c48179391.sumlimit(e,c,sump,sumtype,sumpos,targetp) - return c:IsLocation(LOCATION_EXTRA) -end -function c48179391.valcon(e,re,r,rp) - return bit.band(r,REASON_EFFECT)~=0 -end -function c48179391.atkcon(e) - return Duel.IsExistingMatchingCard(Card.IsPosition,e:GetHandlerPlayer(),LOCATION_MZONE,0,2,nil,POS_FACEUP_ATTACK) -end -function c48179391.atkfilter(c,atk) - return c:IsFaceup() and c:GetAttack()0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c48179391.sumlimit(e,c,sump,sumtype,sumpos,targetp) + return c:IsLocation(LOCATION_EXTRA) +end +function c48179391.valcon(e,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c48179391.atkcon(e) + return Duel.IsExistingMatchingCard(Card.IsPosition,e:GetHandlerPlayer(),LOCATION_MZONE,0,2,nil,POS_FACEUP_ATTACK) +end +function c48179391.atkfilter(c,atk) + return c:IsFaceup() and c:GetAttack()0 - and Duel.IsExistingTarget(c48210156.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c48210156.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c48210156.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_DESTROYED) - e3:SetCondition(c48210156.damcon) - e3:SetOperation(c48210156.damop) - Duel.RegisterEffect(e3,tp) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_DESTROY) - e4:SetLabelObject(e3) - e4:SetOperation(c48210156.checkop) - e4:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e4) - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c48210156.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - Duel.SpecialSummonComplete() -end -function c48210156.splimit(e,c) - return c:GetRace()~=RACE_FIEND -end -function c48210156.checkop(e,tp,eg,ep,ev,re,r,rp) - local e3=e:GetLabelObject() - e3:SetLabel(1) -end -function c48210156.damcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetLabel()==1 -end -function c48210156.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.Damage(tp,1000,REASON_EFFECT) - e:SetLabel(0) - e:Reset() -end +--DDナイト・ハウリング +function c48210156.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48210156,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c48210156.sptg) + e1:SetOperation(c48210156.spop) + c:RegisterEffect(e1) +end +function c48210156.filter(c,e,tp) + return c:IsSetCard(0xaf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c48210156.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c48210156.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c48210156.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c48210156.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c48210156.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c48210156.damcon) + e3:SetOperation(c48210156.damop) + Duel.RegisterEffect(e3,tp) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_DESTROY) + e4:SetLabelObject(e3) + e4:SetOperation(c48210156.checkop) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c48210156.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.SpecialSummonComplete() +end +function c48210156.splimit(e,c) + return c:GetRace()~=RACE_FIEND +end +function c48210156.checkop(e,tp,eg,ep,ev,re,r,rp) + local e3=e:GetLabelObject() + e3:SetLabel(1) +end +function c48210156.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabel()==1 +end +function c48210156.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,1000,REASON_EFFECT) + e:SetLabel(0) + e:Reset() +end diff --git a/script/c48229808.lua b/script/c48229808.lua index ba6099bc..5d0d337a 100644 --- a/script/c48229808.lua +++ b/script/c48229808.lua @@ -39,8 +39,7 @@ end function c48229808.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c48276469.lua b/script/c48276469.lua index a6783efc..e3d7a42c 100644 --- a/script/c48276469.lua +++ b/script/c48276469.lua @@ -1,28 +1,28 @@ ---連鎖炸薬 -function c48276469.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(aux.chainreg) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetCode(EVENT_CHAIN_SOLVED) - e3:SetRange(LOCATION_SZONE) - e3:SetOperation(c48276469.damop) - c:RegisterEffect(e3) -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 e:GetHandler():GetFlagEffect(1)>0 then - Duel.Damage(rp,1000,REASON_EFFECT) - end -end +--連鎖炸薬 +function c48276469.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(aux.chainreg) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_CHAIN_SOLVED) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c48276469.damop) + c:RegisterEffect(e3) +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 e:GetHandler():GetFlagEffect(1)>0 then + Duel.Damage(rp,1000,REASON_EFFECT) + end +end diff --git a/script/c48308134.lua b/script/c48308134.lua new file mode 100644 index 00000000..adf3ada6 --- /dev/null +++ b/script/c48308134.lua @@ -0,0 +1,89 @@ +--幻煌龍の螺旋突 +--Spiral Crash of the Mythic Radiance Dragon +--Script by mercury233 +function c48308134.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(c48308134.target) + e1:SetOperation(c48308134.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(c48308134.eqlimit) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(48308134,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_DAMAGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1,48308134) + e4:SetCondition(c48308134.spcon) + e4:SetTarget(c48308134.sptg) + e4:SetOperation(c48308134.spop) + c:RegisterEffect(e4) +end +function c48308134.eqlimit(e,c) + return c:IsType(TYPE_NORMAL) +end +function c48308134.filter(c) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) +end +function c48308134.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c48308134.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c48308134.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c48308134.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c48308134.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 c48308134.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst()==e:GetHandler():GetEquipTarget() +end +function c48308134.spfilter(c,e,tp) + return c:IsCode(56649609) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c48308134.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c48308134.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) +end +function c48308134.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c48308134.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Equip(tp,c,tc) + Duel.SpecialSummonComplete() + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_ATTACK) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(48308134,1)) then + Duel.BreakEffect() + local sg=g:Select(tp,1,1,nil) + Duel.ChangePosition(sg,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + end + end + end +end diff --git a/script/c48333324.lua b/script/c48333324.lua index 0187da1a..d1cd9dc0 100644 --- a/script/c48333324.lua +++ b/script/c48333324.lua @@ -1,79 +1,79 @@ ---RUM-ヌメロン・フォース -function c48333324.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c48333324.target) - e1:SetOperation(c48333324.activate) - c:RegisterEffect(e1) -end -function c48333324.filter1(c,e,tp) - local rk=c:GetRank() - return c:IsFaceup() and c:IsType(TYPE_XYZ) - and Duel.IsExistingMatchingCard(c48333324.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetRace(),c:GetCode()) -end -function c48333324.filter2(c,e,tp,mc,rk,rc,code) - if c:GetOriginalCode()==6165656 and code~=48995978 then return false end - return c:GetRank()==rk and c:IsRace(rc) and c:IsSetCard(0x1048) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c48333324.disfilter(c) - return (not c:IsDisabled() or c:IsType(TYPE_TRAPMONSTER)) and not (c:IsType(TYPE_NORMAL) and bit.band(c:GetOriginalType(),TYPE_NORMAL)) -end -function c48333324.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c48333324.filter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c48333324.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c48333324.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c48333324.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c48333324.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetRace(),tc:GetCode()) - local sc=g:GetFirst() - if sc then - local mg=tc:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - local g1=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,sc) - g1:RemoveCard(c) - if g1:GetCount()>0 then - Duel.BreakEffect() - end - local ng=g1:Filter(c48333324.disfilter,nil) - local nc=ng:GetFirst() - while nc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - nc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - nc:RegisterEffect(e2) - if nc:IsType(TYPE_TRAPMONSTER) then - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) - e3:SetReset(RESET_EVENT+0x1fe0000) - nc:RegisterEffect(e3) - end - nc=ng:GetNext() - end - end -end +--RUM-ヌメロン・フォース +function c48333324.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c48333324.target) + e1:SetOperation(c48333324.activate) + c:RegisterEffect(e1) +end +function c48333324.filter1(c,e,tp) + local rk=c:GetRank() + return c:IsFaceup() and c:IsType(TYPE_XYZ) + and Duel.IsExistingMatchingCard(c48333324.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetRace(),c:GetCode()) +end +function c48333324.filter2(c,e,tp,mc,rk,rc,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return c:GetRank()==rk and c:IsRace(rc) and c:IsSetCard(0x1048) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c48333324.disfilter(c) + return (not c:IsDisabled() or c:IsType(TYPE_TRAPMONSTER)) and not (c:IsType(TYPE_NORMAL) and bit.band(c:GetOriginalType(),TYPE_NORMAL)) +end +function c48333324.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c48333324.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c48333324.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c48333324.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c48333324.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c48333324.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetRace(),tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + local g1=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,sc) + g1:RemoveCard(c) + if g1:GetCount()>0 then + Duel.BreakEffect() + end + local ng=g1:Filter(c48333324.disfilter,nil) + local nc=ng:GetFirst() + while nc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + nc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + nc:RegisterEffect(e2) + if nc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000) + nc:RegisterEffect(e3) + end + nc=ng:GetNext() + end + end +end diff --git a/script/c48422921.lua b/script/c48422921.lua index 9396d615..da2f956e 100644 --- a/script/c48422921.lua +++ b/script/c48422921.lua @@ -1,57 +1,57 @@ ---猪突猛進 -function c48422921.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c48422921.condition) - e1:SetTarget(c48422921.target) - e1:SetOperation(c48422921.operation) - c:RegisterEffect(e1) -end -function c48422921.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 c48422921.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_TARGET) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) - local val=0xff - local reg=g:GetFirst():GetFlagEffectLabel(48422921) - if reg then val=val-reg end - Duel.Hint(HINT_SELECTMSG,tp,562) - local att=Duel.AnnounceAttribute(tp,1,val) - e:SetLabel(att) -end -function c48422921.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local att=e:GetLabel() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_BATTLE_START) - e1:SetLabel(att) - e1:SetOwnerPlayer(tp) - e1:SetCondition(c48422921.descon) - e1:SetOperation(c48422921.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1,true) - local reg=tc:GetFlagEffectLabel(48422921) - if reg then - reg=bit.bor(reg,att) - tc:SetFlagEffectLabel(48422921,reg) - else - tc:RegisterFlagEffect(48422921,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,att) - end - end -end -function c48422921.descon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetBattleTarget() - return tp==e:GetOwnerPlayer() and tc and tc:IsControler(1-tp) and tc:IsAttribute(e:GetLabel()) -end -function c48422921.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetBattleTarget() - Duel.Destroy(tc,REASON_EFFECT) -end +--猪突猛進 +function c48422921.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c48422921.condition) + e1:SetTarget(c48422921.target) + e1:SetOperation(c48422921.operation) + c:RegisterEffect(e1) +end +function c48422921.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 c48422921.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_TARGET) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local val=0xff + local reg=g:GetFirst():GetFlagEffectLabel(48422921) + if reg then val=val-reg end + Duel.Hint(HINT_SELECTMSG,tp,562) + local att=Duel.AnnounceAttribute(tp,1,val) + e:SetLabel(att) +end +function c48422921.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local att=e:GetLabel() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_START) + e1:SetLabel(att) + e1:SetOwnerPlayer(tp) + e1:SetCondition(c48422921.descon) + e1:SetOperation(c48422921.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + local reg=tc:GetFlagEffectLabel(48422921) + if reg then + reg=bit.bor(reg,att) + tc:SetFlagEffectLabel(48422921,reg) + else + tc:RegisterFlagEffect(48422921,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,att) + end + end +end +function c48422921.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + return tp==e:GetOwnerPlayer() and tc and tc:IsControler(1-tp) and tc:IsAttribute(e:GetLabel()) +end +function c48422921.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c48424886.lua b/script/c48424886.lua index 5bd1636b..2e82887e 100644 --- a/script/c48424886.lua +++ b/script/c48424886.lua @@ -41,113 +41,97 @@ function c48424886.initial_effect(c) c:RegisterEffect(e4) end function c48424886.ffilter1(c) - return c:IsFusionSetCard(0x9d) + return (c:IsFusionSetCard(0x9d) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end -function c48424886.ffilter2(c) - return c:IsAttribute(ATTRIBUTE_FIRE) or c:IsHasEffect(4904633) +function c48424886.ffilter2(c,fc) + if c:IsHasEffect(6205579) then return false end + if c:IsHasEffect(511002961) then return true end + return (c:IsFusionAttribute(ATTRIBUTE_FIRE) or c:IsHasEffect(4904633)) and not c:IsHasEffect(6205579) +end +function c48424886.check1(c,mg,sg,chkf) + local g=mg:Clone() + if sg:IsContains(c) then g:Sub(sg) end + return g:IsExists(c48424886.check2,1,c,c,chkf) +end +function c48424886.check2(c,c2,chkf) + local g=Group.FromCards(c,c2) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=g:GetFirst() + while tc do + if c48424886.ffilter1(tc) or tc:IsHasEffect(511002961) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + if c48424886.ffilter2(tc) or tc:IsHasEffect(511002961) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + tc=g:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) + else return g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) end end function c48424886.exfilter(c,g) return c:IsFaceup() and c:IsCanBeFusionMaterial() and not g:IsContains(c) end function c48424886.fuscon(e,g,gc,chkf) if g==nil then return true end + local chkf=bit.band(chkf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local sg=Group.CreateGroup() + local c=e:GetHandler() local tp=e:GetHandlerPlayer() local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - local exg=Group.CreateGroup() if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then - local sg=Duel.GetMatchingGroup(c48424886.exfilter,tp,0,LOCATION_MZONE,nil,g) - exg:Merge(sg) - end - if gc then return (c48424886.ffilter1(gc) and (g:IsExists(c48424886.ffilter2,1,gc) or exg:IsExists(c48424886.ffilter2,1,gc))) - or (c48424886.ffilter2(gc) and (g:IsExists(c48424886.ffilter1,1,gc) or exg:IsExists(c48424886.ffilter1,1,gc))) end - local g1=Group.CreateGroup() - local g2=Group.CreateGroup() - local g3=Group.CreateGroup() - local g4=Group.CreateGroup() - local tc=g:GetFirst() - while tc do - if c48424886.ffilter1(tc) then - g1:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g3:AddCard(tc) end - end - if c48424886.ffilter2(tc) then - g2:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g4:AddCard(tc) end - end - tc=g:GetNext() + sg=Duel.GetMatchingGroup(c48424886.exfilter,tp,0,LOCATION_MZONE,nil,g) + mg:Merge(sg) end - local exg1=exg:Filter(c48424886.ffilter1,nil) - local exg2=exg:Filter(c48424886.ffilter2,nil) - if chkf~=PLAYER_NONE then - return (g3:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g3:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g4:IsExists(aux.FConditionFilterF2,1,nil,g1) - or g4:IsExists(aux.FConditionFilterF2,1,nil,exg1)) - else - return (g1:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g1:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g2:IsExists(aux.FConditionFilterF2,1,nil,exg1)) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return c48424886.check1(gc,mg,sg,chkf) end + return mg:IsExists(c48424886.check1,1,nil,mg,sg,chkf) end function c48424886.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local c=e:GetHandler() local exg=Group.CreateGroup() + local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local p=tp + local sfhchk=false if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then local sg=Duel.GetMatchingGroup(c48424886.exfilter,tp,0,LOCATION_MZONE,nil,eg) exg:Merge(sg) + mg:Merge(sg) + end + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end end if gc then - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c48424886.ffilter1(gc) then - sg1:Merge(eg:Filter(c48424886.ffilter2,gc)) - sg2:Merge(exg:Filter(c48424886.ffilter2,gc)) - end - if c48424886.ffilter2(gc) then - sg1:Merge(eg:Filter(c48424886.ffilter1,gc)) - sg2:Merge(exg:Filter(c48424886.ffilter1,gc)) - end - local g1=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c48424886.check2,1,1,gc,gc,chkf) + local tc1=g1:GetFirst() + if c48424886.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg1:Select(tp,1,1,nil) end + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - local sg=eg:Filter(aux.FConditionFilterF2c,nil,c48424886.ffilter1,c48424886.ffilter2) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then - g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c48424886.check1,1,1,nil,mg,exg,chkf) local tc1=g1:GetFirst() - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c48424886.ffilter1(tc1) then - sg1:Merge(sg:Filter(c48424886.ffilter2,tc1)) - sg2:Merge(exg:Filter(c48424886.ffilter2,tc1)) - end - if c48424886.ffilter2(tc1) then - sg1:Merge(sg:Filter(c48424886.ffilter1,tc1)) - sg2:Merge(exg:Filter(c48424886.ffilter1,tc1)) - end - local g2=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + if c48424886.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg1:Select(tp,1,1,nil) + mg:Sub(exg) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,c48424886.check2,1,1,tc1,tc1,chkf) + if c48424886.exfilter(g2:GetFirst(),eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) end g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end +function c48424886.FConditionFilterF2c(c,f1,f2,fc) + return f1(c) or f2(c,fc) +end function c48424886.splimit(e,se,sp,st) return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION end diff --git a/script/c48447192.lua b/script/c48447192.lua index f6addca7..0e736770 100644 --- a/script/c48447192.lua +++ b/script/c48447192.lua @@ -1,14 +1,6 @@ --剣の煌き function c48447192.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(c48447192.target) - e1:SetOperation(c48447192.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x100d)) --destroy local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) @@ -21,13 +13,6 @@ function c48447192.initial_effect(c) e2:SetTarget(c48447192.destg) e2:SetOperation(c48447192.desop) 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(c48447192.eqlimit) - c:RegisterEffect(e3) --todeck local e4=Effect.CreateEffect(c) e4:SetCategory(CATEGORY_TODECK) @@ -39,26 +24,6 @@ function c48447192.initial_effect(c) e4:SetOperation(c48447192.retop) c:RegisterEffect(e4) end -function c48447192.eqlimit(e,c) - return c:IsSetCard(0x100d) -end -function c48447192.filter(c) - return c:IsFaceup() and c:IsSetCard(0x100d) -end -function c48447192.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c48447192.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c48447192.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c48447192.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c48447192.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 c48447192.descon(e,tp,eg,ep,ev,re,r,rp) local ec=e:GetHandler():GetEquipTarget() return ec and eg:IsContains(ec) diff --git a/script/c48461764.lua b/script/c48461764.lua new file mode 100644 index 00000000..4e083460 --- /dev/null +++ b/script/c48461764.lua @@ -0,0 +1,70 @@ +--紫毒の魔術師 +function c48461764.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Increase ATK + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48461764,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_PZONE) + e1:SetCode(EVENT_BATTLE_CONFIRM) + e1:SetCountLimit(1) + e1:SetCondition(c48461764.atkcon) + e1:SetTarget(c48461764.atktg) + e1:SetOperation(c48461764.atkop) + c:RegisterEffect(e1) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(48461764,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c48461764.descon) + e3:SetTarget(c48461764.destg) + e3:SetOperation(c48461764.desop) + c:RegisterEffect(e3) +end +function c48461764.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a:IsControler(tp) then + a=Duel.GetAttackTarget() + end + return a and a:IsAttribute(ATTRIBUTE_DARK) and a:IsRace(RACE_SPELLCASTER) +end +function c48461764.atktg(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 c48461764.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + if tc:IsRelateToBattle() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1200) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + Duel.BreakEffect() + Duel.Destroy(c,REASON_EFFECT) + end +end +function c48461764.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c48461764.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c48461764.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c48497555.lua b/script/c48497555.lua index e4c7f1f1..f10a84c3 100644 --- a/script/c48497555.lua +++ b/script/c48497555.lua @@ -1,60 +1,60 @@ ---くず鉄の像 -function c48497555.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCountLimit(1,48497555) - e1:SetCondition(c48497555.condition) - e1:SetTarget(c48497555.target) - e1:SetOperation(c48497555.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,48497556) - e2:SetTarget(c48497555.sptg) - e2:SetOperation(c48497555.spop) - c:RegisterEffect(e2) -end -function c48497555.condition(e,tp,eg,ep,ev,re,r,rp) - local rc=re:GetHandler() - return rc:IsOnField() and rc:IsControler(1-tp) and re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c48497555.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return re:GetHandler():IsDestructable() end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) -end -function c48497555.activate(e,tp,eg,ep,ev,re,r,rp) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsCanTurnSet() then - Duel.BreakEffect() - c:CancelToGrave() - Duel.ChangePosition(c,POS_FACEDOWN) - Duel.RaiseEvent(c,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) - end -end -function c48497555.spfilter(c,e,tp) - return c:IsSetCard(0x43) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c48497555.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c48497555.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c48497555.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c48497555.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c48497555.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--くず鉄の像 +function c48497555.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCountLimit(1,48497555) + e1:SetCondition(c48497555.condition) + e1:SetTarget(c48497555.target) + e1:SetOperation(c48497555.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,48497556) + e2:SetTarget(c48497555.sptg) + e2:SetOperation(c48497555.spop) + c:RegisterEffect(e2) +end +function c48497555.condition(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return rc:IsOnField() and rc:IsControler(1-tp) and re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c48497555.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return re:GetHandler():IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) +end +function c48497555.activate(e,tp,eg,ep,ev,re,r,rp) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsCanTurnSet() then + Duel.BreakEffect() + c:CancelToGrave() + Duel.ChangePosition(c,POS_FACEDOWN) + Duel.RaiseEvent(c,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) + end +end +function c48497555.spfilter(c,e,tp) + return c:IsSetCard(0x43) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c48497555.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c48497555.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c48497555.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c48497555.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c48497555.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c48546368.lua b/script/c48546368.lua index 0c9b242b..b244357e 100644 --- a/script/c48546368.lua +++ b/script/c48546368.lua @@ -1,78 +1,77 @@ ---崇光なる宣告者 -function c48546368.initial_effect(c) - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.ritlimit) - c:RegisterEffect(e1) - --negate - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(48546368,0)) - e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c48546368.negcon) - e2:SetCost(c48546368.cost) - e2:SetTarget(c48546368.negtg) - e2:SetOperation(c48546368.negop) - c:RegisterEffect(e2) - --disable spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(48546368,1)) - e3:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_SPSUMMON) - e3:SetCondition(c48546368.discon) - e3:SetCost(c48546368.cost) - e3:SetTarget(c48546368.distg) - e3:SetOperation(c48546368.disop) - c:RegisterEffect(e3) -end -function c48546368.negcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if ep==tp or c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end - return (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev) -end -function c48546368.cfilter(c) - return c:IsRace(RACE_FAIRY) and c:IsAbleToGraveAsCost() -end -function c48546368.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c48546368.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c48546368.cfilter,1,1,REASON_COST) -end -function c48546368.negtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c48546368.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c48546368.filter(c,tp) - return c:GetSummonPlayer()==tp -end -function c48546368.discon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentChain()==0 and eg:IsExists(c48546368.filter,1,nil,1-tp) -end -function c48546368.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=eg:Filter(c48546368.filter,nil,1-tp) - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c48546368.disop(e,tp,eg,ep,ev,re,r,rp) - local g=eg:Filter(c48546368.filter,nil,1-tp) - Duel.NegateSummon(g) - Duel.Destroy(g,REASON_EFFECT) -end +--崇光なる宣告者 +function c48546368.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.ritlimit) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(48546368,0)) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c48546368.negcon) + e2:SetCost(c48546368.cost) + e2:SetTarget(c48546368.negtg) + e2:SetOperation(c48546368.negop) + c:RegisterEffect(e2) + --disable spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(48546368,1)) + e3:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_SPSUMMON) + e3:SetCondition(c48546368.discon) + e3:SetCost(c48546368.cost) + e3:SetTarget(c48546368.distg) + e3:SetOperation(c48546368.disop) + c:RegisterEffect(e3) +end +function c48546368.negcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if ep==tp or c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev) +end +function c48546368.cfilter(c) + return c:IsRace(RACE_FAIRY) and c:IsAbleToGraveAsCost() +end +function c48546368.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c48546368.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c48546368.cfilter,1,1,REASON_COST) +end +function c48546368.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c48546368.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c48546368.filter(c,tp) + return c:GetSummonPlayer()==tp +end +function c48546368.discon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 and eg:IsExists(c48546368.filter,1,nil,1-tp) +end +function c48546368.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=eg:Filter(c48546368.filter,nil,1-tp) + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c48546368.disop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c48546368.filter,nil,1-tp) + Duel.NegateSummon(g) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c48568432.lua b/script/c48568432.lua index 430f341d..8e77f41a 100644 --- a/script/c48568432.lua +++ b/script/c48568432.lua @@ -1,111 +1,109 @@ ---トライゴン -function c48568432.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(48568432,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c48568432.eqtg) - e1:SetOperation(c48568432.eqop) - c:RegisterEffect(e1) - --unequip - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(48568432,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c48568432.uncon) - e2:SetTarget(c48568432.sptg) - e2:SetOperation(c48568432.spop) - c:RegisterEffect(e2) - --destroy sub - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetCondition(c48568432.uncon) - e3:SetValue(1) - c:RegisterEffect(e3) - --eqlimit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(aux.TargetBoolFunction(Card.IsRace,RACE_MACHINE)) - c:RegisterEffect(e4) - --spsummon - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(48568432,2)) - e5:SetCategory(CATEGORY_SPECIAL_SUMMON) - e5:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetRange(LOCATION_SZONE) - e5:SetCode(EVENT_BATTLE_DESTROYING) - e5:SetCondition(c48568432.spcon2) - e5:SetTarget(c48568432.sptg2) - e5:SetOperation(c48568432.spop2) - c:RegisterEffect(e5) -end -function c48568432.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end -function c48568432.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:GetUnionCount()==0 -end -function c48568432.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c48568432.filter(chkc) end - if chk==0 then return e:GetHandler():GetFlagEffect(48568432)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c48568432.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c48568432.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) - e:GetHandler():RegisterFlagEffect(48568432,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) -end -function c48568432.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - if not tc:IsRelateToEffect(e) or not c48568432.filter(tc) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) -end -function c48568432.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(48568432)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - e:GetHandler():RegisterFlagEffect(48568432,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) -end -function c48568432.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c48568432.spcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and eg:GetFirst()==e:GetHandler():GetEquipTarget() -end -function c48568432.spfilter(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c48568432.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c48568432.spfilter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c48568432.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c48568432.spop2(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--トライゴン +function c48568432.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48568432,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c48568432.eqtg) + e1:SetOperation(c48568432.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(48568432,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(aux.IsUnionState) + e2:SetTarget(c48568432.sptg) + e2:SetOperation(c48568432.spop) + c:RegisterEffect(e2) + --destroy sub + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetCondition(aux.IsUnionState) + e3:SetValue(1) + c:RegisterEffect(e3) + --eqlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(aux.TargetBoolFunction(Card.IsRace,RACE_MACHINE)) + c:RegisterEffect(e4) + --spsummon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(48568432,2)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_BATTLE_DESTROYING) + e5:SetCondition(c48568432.spcon2) + e5:SetTarget(c48568432.sptg2) + e5:SetOperation(c48568432.spop2) + c:RegisterEffect(e5) +end +c48568432.old_union=true +function c48568432.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:GetUnionCount()==0 +end +function c48568432.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c48568432.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(48568432)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c48568432.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c48568432.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(48568432,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c48568432.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc:IsRelateToEffect(e) or not c48568432.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + aux.SetUnionState(c) +end +function c48568432.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(48568432)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(48568432,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c48568432.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c48568432.spcon2(e,tp,eg,ep,ev,re,r,rp) + return aux.IsUnionState(e) and eg:GetFirst()==e:GetHandler():GetEquipTarget() +end +function c48568432.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c48568432.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c48568432.spfilter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c48568432.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c48568432.spop2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c4857085.lua b/script/c4857085.lua index 561748d7..970637d2 100644 --- a/script/c4857085.lua +++ b/script/c4857085.lua @@ -1,21 +1,6 @@ --Ωメガネ function c4857085.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(c4857085.target) - e1:SetOperation(c4857085.operation) - c:RegisterEffect(e1) - --Equip limit - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EQUIP_LIMIT) - e2:SetValue(1) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,0) --confirm local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(4857085,0)) @@ -27,19 +12,6 @@ function c4857085.initial_effect(c) e3:SetOperation(c4857085.cfop) c:RegisterEffect(e3) end -function c4857085.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c4857085.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 c4857085.cfcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetEquipTarget():GetAttackAnnouncedCount()==0 end local e1=Effect.CreateEffect(e:GetHandler()) diff --git a/script/c48576971.lua b/script/c48576971.lua index 89472f6e..50d9f8d1 100644 --- a/script/c48576971.lua +++ b/script/c48576971.lua @@ -1,21 +1,6 @@ --与奪の首飾り 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) + aux.AddEquipProcedure(c) --effect local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(48576971,0)) @@ -26,20 +11,6 @@ function c48576971.initial_effect(c) 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 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 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() diff --git a/script/c48582558.lua b/script/c48582558.lua index 92014723..fb31a867 100644 --- a/script/c48582558.lua +++ b/script/c48582558.lua @@ -1,49 +1,49 @@ ---バウンサー・ガード -function c48582558.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c48582558.target) - e1:SetOperation(c48582558.activate) - c:RegisterEffect(e1) -end -function c48582558.filter(c) - return c:IsFaceup() and c:IsSetCard(0x6b) -end -function c48582558.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c48582558.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c48582558.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c48582558.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c48582558.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_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_MUST_BE_ATTACKED) - e3:SetValue(1) - e3:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - local e4=Effect.CreateEffect(e:GetHandler()) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_MUST_ATTACK_MONSTER) - e4:SetTargetRange(0,LOCATION_MZONE) - e4:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e4,tp) - end -end +--バウンサー・ガード +function c48582558.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c48582558.target) + e1:SetOperation(c48582558.activate) + c:RegisterEffect(e1) +end +function c48582558.filter(c) + return c:IsFaceup() and c:IsSetCard(0x6b) +end +function c48582558.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c48582558.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c48582558.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c48582558.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c48582558.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_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MUST_BE_ATTACKED) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_MUST_ATTACK_MONSTER) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) + end +end diff --git a/script/c48605591.lua b/script/c48605591.lua new file mode 100644 index 00000000..a2cc9cd1 --- /dev/null +++ b/script/c48605591.lua @@ -0,0 +1,71 @@ +--端末世界NEXT +function c48605591.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c48605591.condition) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_MAX_MZONE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,1) + e2:SetValue(c48605591.mvalue) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_MAX_SZONE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(1,1) + e3:SetValue(c48605591.svalue) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_ACTIVATE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(1,1) + e4:SetValue(c48605591.aclimit) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EFFECT_CANNOT_SSET) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(1,1) + e5:SetTarget(c48605591.setlimit) + c:RegisterEffect(e5) +end +function c48605591.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(nil,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)<=3 + and Duel.GetMatchingGroupCount(Card.IsType,tp,0,LOCATION_ONFIELD,nil,TYPE_SPELL+TYPE_TRAP)<=3 +end +function c48605591.mvalue(e,fp,rp,r) + if r~=LOCATION_REASON_TOFIELD then return 5 end + return 3 +end +function c48605591.svalue(e,fp,rp,r) + if r~=LOCATION_REASON_TOFIELD then return 5 end + local ct=3 + for i=5,7 do + if Duel.GetFieldCard(fp,LOCATION_SZONE,i) then ct=ct-1 end + end + return ct +end +function c48605591.aclimit(e,re,tp) + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + if re:IsActiveType(TYPE_FIELD) then + return not Duel.GetFieldCard(tp,LOCATION_SZONE,5) and Duel.GetFieldGroupCount(tp,LOCATION_SZONE,0)>2 + elseif re:IsActiveType(TYPE_PENDULUM) then + return Duel.GetFieldGroupCount(tp,LOCATION_SZONE,0)>2 + end + return false +end +function c48605591.setlimit(e,c,tp) + return c:IsType(TYPE_FIELD) and not Duel.GetFieldCard(tp,LOCATION_SZONE,5) and Duel.GetFieldGroupCount(tp,LOCATION_SZONE,0)>2 +end diff --git a/script/c48608796.lua b/script/c48608796.lua new file mode 100644 index 00000000..9718e9af --- /dev/null +++ b/script/c48608796.lua @@ -0,0 +1,74 @@ +--LL-アセンブリー・ナイチンゲール +--Lyrical Luscinia - Assembly Nightingale +--Scripted by Eerie Code +function c48608796.initial_effect(c) + c:EnableReviveLimit() + aux.AddXyzProcedure(c,nil,1,2,nil,nil,5) + --ATK Up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c48608796.atkval) + c:RegisterEffect(e1) + --Direct Attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + c:RegisterEffect(e2) + --multi attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(c48608796.raval) + c:RegisterEffect(e3) + --Protection + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(48608796,0)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCost(c48608796.indcost) + e4:SetOperation(c48608796.indop) + c:RegisterEffect(e4) +end +function c48608796.atkval(e,c) + return c:GetOverlayCount()*200 +end +function c48608796.raval(e,c) + local oc=e:GetHandler():GetOverlayCount() + return math.max(0,oc-1) +end +function c48608796.indcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c48608796.indop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c48608796.indtg) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetValue(1) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c48608796.indtg(e,c) + return c:IsSetCard(0xf7) or c:IsCode(8491961) +end diff --git a/script/c48659020.lua b/script/c48659020.lua index 63be63c5..b2dc360d 100644 --- a/script/c48659020.lua +++ b/script/c48659020.lua @@ -1,29 +1,29 @@ ---魂を呼ぶ者 -function c48659020.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(48659020,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetTarget(c48659020.target) - e1:SetOperation(c48659020.operation) - c:RegisterEffect(e1) -end -function c48659020.filter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c48659020.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c48659020.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c48659020.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c48659020.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c48659020.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--魂を呼ぶ者 +function c48659020.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48659020,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetTarget(c48659020.target) + e1:SetOperation(c48659020.operation) + c:RegisterEffect(e1) +end +function c48659020.filter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c48659020.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c48659020.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c48659020.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c48659020.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c48659020.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c48675364.lua b/script/c48675364.lua index e9dde4f2..a9438fc5 100644 --- a/script/c48675364.lua +++ b/script/c48675364.lua @@ -1,43 +1,43 @@ ---ジェネラルデーモン -function c48675364.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(48675364,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c48675364.cost) - e1:SetTarget(c48675364.target) - e1:SetOperation(c48675364.operation) - c:RegisterEffect(e1) - --self destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_SELF_DESTROY) - e2:SetCondition(c48675364.descon) - c:RegisterEffect(e2) -end -function c48675364.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c48675364.filter(c) - return c:IsCode(94585852) and c:IsAbleToHand() -end -function c48675364.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c48675364.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c48675364.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tg=Duel.GetFirstMatchingCard(c48675364.filter,tp,LOCATION_DECK,0,nil) - if tg then - Duel.SendtoHand(tg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tg) - end -end -function c48675364.descon(e) - return not Duel.IsEnvironment(94585852) -end +--ジェネラルデーモン +function c48675364.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48675364,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c48675364.cost) + e1:SetTarget(c48675364.target) + e1:SetOperation(c48675364.operation) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c48675364.descon) + c:RegisterEffect(e2) +end +function c48675364.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c48675364.filter(c) + return c:IsCode(94585852) and c:IsAbleToHand() +end +function c48675364.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c48675364.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c48675364.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetFirstMatchingCard(c48675364.filter,tp,LOCATION_DECK,0,nil) + if tg then + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end +end +function c48675364.descon(e) + return not Duel.IsEnvironment(94585852) +end diff --git a/script/c48680970.lua b/script/c48680970.lua index 012d4974..07fb9733 100644 --- a/script/c48680970.lua +++ b/script/c48680970.lua @@ -76,8 +76,8 @@ function c48680970.operation(e,tp,eg,ep,ev,re,r,rp) if e:GetLabel()==0 then if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c48680970.filter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c48680970.filter1),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end else diff --git a/script/c4869446.lua b/script/c4869446.lua index d453fbd7..7689467b 100644 --- a/script/c4869446.lua +++ b/script/c4869446.lua @@ -7,9 +7,30 @@ function c4869446.initial_effect(c) c:RegisterEffect(e1) -- local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHANGE_POS) e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetOperation(c4869446.posop) c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c4869446.postg) + c:RegisterEffect(e3) +end +function c4869446.cfilter(c) + return c:IsFaceup() and c:IsPreviousPosition(POS_FACEDOWN) +end +function c4869446.posop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c4869446.cfilter,nil) + local tc=g:GetFirst() + while tc do + e:GetHandler():SetCardTarget(tc) + tc=g:GetNext() + end +end +function c4869446.postg(e,c) + return e:GetHandler():IsHasCardTarget(c) end diff --git a/script/c48716139.lua b/script/c48716139.lua index 452db7a1..fcb044e4 100644 --- a/script/c48716139.lua +++ b/script/c48716139.lua @@ -1,26 +1,11 @@ --草薙剣 function c48716139.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(c48716139.target) - e1:SetOperation(c48716139.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsType,TYPE_SPIRIT)) --Pierce local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_PIERCE) 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(c48716139.eqlimit) - c:RegisterEffect(e3) --tohand local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) @@ -32,25 +17,6 @@ function c48716139.initial_effect(c) e4:SetOperation(c48716139.retop) c:RegisterEffect(e4) end -function c48716139.eqlimit(e,c) - return c:IsType(TYPE_SPIRIT) -end -function c48716139.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SPIRIT) -end -function c48716139.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c48716139.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c48716139.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c48716139.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c48716139.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 c48716139.retcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local ec=c:GetPreviousEquipTarget() diff --git a/script/c48716527.lua b/script/c48716527.lua index 8182f032..b78dfa21 100644 --- a/script/c48716527.lua +++ b/script/c48716527.lua @@ -1,41 +1,41 @@ ---帝王の溶撃 -function c48716527.initial_effect(c) - Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c48716527.actcon) - c:RegisterEffect(e1) - --disable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c48716527.distg) - e2:SetCode(EFFECT_DISABLE) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetCode(EFFECT_SELF_TOGRAVE) - e3:SetRange(LOCATION_SZONE) - e3:SetCondition(c48716527.tgcon) - c:RegisterEffect(e3) -end -function c48716527.cfilter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE -end -function c48716527.actcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_EXTRA,0)==0 - and Duel.IsExistingMatchingCard(c48716527.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c48716527.distg(e,c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)~=SUMMON_TYPE_ADVANCE -end -function c48716527.tgcon(e) - local tp=e:GetHandlerPlayer() - return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END - and not Duel.IsExistingMatchingCard(c48716527.cfilter,tp,LOCATION_MZONE,0,1,nil) -end +--帝王の溶撃 +function c48716527.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c48716527.actcon) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c48716527.distg) + e2:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_SELF_TOGRAVE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c48716527.tgcon) + c:RegisterEffect(e3) +end +function c48716527.cfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c48716527.actcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_EXTRA,0)==0 + and Duel.IsExistingMatchingCard(c48716527.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c48716527.distg(e,c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)~=SUMMON_TYPE_ADVANCE +end +function c48716527.tgcon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END + and not Duel.IsExistingMatchingCard(c48716527.cfilter,tp,LOCATION_MZONE,0,1,nil) +end diff --git a/script/c48739166.lua b/script/c48739166.lua index 14258f59..7f4ffbc7 100644 --- a/script/c48739166.lua +++ b/script/c48739166.lua @@ -7,7 +7,7 @@ function c48739166.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(48739166,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,48739166) e1:SetCost(c48739166.cost) diff --git a/script/c48770333.lua b/script/c48770333.lua index 3da2019d..3463b7ba 100644 --- a/script/c48770333.lua +++ b/script/c48770333.lua @@ -1,4 +1,4 @@ ---Thunder King, the Lightningstrike Kaiju +--雷撃壊獣サンダー・ザ・キング function c48770333.initial_effect(c) c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) --special summon rule diff --git a/script/c48791583.lua b/script/c48791583.lua new file mode 100644 index 00000000..6787fa30 --- /dev/null +++ b/script/c48791583.lua @@ -0,0 +1,6 @@ +--召喚獣メガラニカ +function c48791583.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,86120751,aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_EARTH),1,true,true) +end diff --git a/script/c48905153.lua b/script/c48905153.lua new file mode 100644 index 00000000..2b8b017a --- /dev/null +++ b/script/c48905153.lua @@ -0,0 +1,71 @@ +--十二獣ドランシア +function c48905153.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,4,c48905153.ovfilter,aux.Stringid(48905153,0),4,c48905153.xyzop) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c48905153.atkval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(c48905153.defval) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(48905153,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetHintTiming(0,0x1e0) + e3:SetCost(c48905153.descost) + e3:SetTarget(c48905153.destg) + e3:SetOperation(c48905153.desop) + c:RegisterEffect(e3) +end +function c48905153.ovfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf1) and not c:IsCode(48905153) +end +function c48905153.xyzop(e,tp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,48905153)==0 end + Duel.RegisterFlagEffect(tp,48905153,RESET_PHASE+PHASE_END,0,1) +end +function c48905153.atkfilter(c) + return c:IsSetCard(0xf1) and c:GetAttack()>=0 +end +function c48905153.atkval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c48905153.atkfilter,nil) + return g:GetSum(Card.GetAttack) +end +function c48905153.deffilter(c) + return c:IsSetCard(0xf1) and c:GetDefense()>=0 +end +function c48905153.defval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c48905153.deffilter,nil) + return g:GetSum(Card.GetDefense) +end +function c48905153.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c48905153.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c48905153.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c48928529.lua b/script/c48928529.lua index 22075c8a..48b65430 100644 --- a/script/c48928529.lua +++ b/script/c48928529.lua @@ -7,6 +7,7 @@ function c48928529.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(48928529,0)) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c48928529.cost) diff --git a/script/c48934760.lua b/script/c48934760.lua index 906f8717..01256f2c 100644 --- a/script/c48934760.lua +++ b/script/c48934760.lua @@ -30,6 +30,11 @@ function c48934760.activate(e,tp,eg,ep,ev,re,r,rp) Duel.SendtoGrave(fc,REASON_RULE) Duel.BreakEffect() end + local fc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if fc2 and Duel.IsDuelType(DUEL_OBSOLETE_RULING) then + Duel.Destroy(fc2,REASON_RULE) + Duel.BreakEffect() + end Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) local te=tc:GetActivateEffect() local tep=tc:GetControler() diff --git a/script/c48940337.lua b/script/c48940337.lua index d15058d8..4bbacd4a 100644 --- a/script/c48940337.lua +++ b/script/c48940337.lua @@ -1,16 +1,16 @@ ---ランスフォリンクス -function c48940337.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --pierce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_PIERCE) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(c48940337.target) - c:RegisterEffect(e2) -end -function c48940337.target(e,c) - return c:IsType(TYPE_NORMAL) -end +--ランスフォリンクス +function c48940337.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_PIERCE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c48940337.target) + c:RegisterEffect(e2) +end +function c48940337.target(e,c) + return c:IsType(TYPE_NORMAL) +end diff --git a/script/c48995978.lua b/script/c48995978.lua index 819da55c..9276739f 100644 --- a/script/c48995978.lua +++ b/script/c48995978.lua @@ -8,6 +8,7 @@ function c48995978.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(48995978,0)) e1:SetCategory(CATEGORY_COUNTER) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c48996569.lua b/script/c48996569.lua index 2df5e612..c5e5e75d 100644 --- a/script/c48996569.lua +++ b/script/c48996569.lua @@ -1,135 +1,136 @@ ---E・HERO グラン・ネオス -function c48996569.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,89943723,80344569,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c48996569.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c48996569.spcon) - e2:SetOperation(c48996569.spop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(48996569,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c48996569.retcon1) - e3:SetTarget(c48996569.rettg) - e3:SetOperation(c48996569.retop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(0) - e4:SetCondition(c48996569.retcon2) - c:RegisterEffect(e4) - --tohand - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(48996569,1)) - e5:SetCategory(CATEGORY_TOHAND) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetTarget(c48996569.thtg) - e5:SetOperation(c48996569.thop) - c:RegisterEffect(e5) -end -function c48996569.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) -end -function c48996569.spfilter(c,code) - return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) -end -function c48996569.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-1 then return false end - local g1=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569) - if g1:GetCount()==0 or g2:GetCount()==0 then return false end - if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end - if ft>0 then return true end - local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - if ft==-1 then return f1>0 and f2>0 - else return f1>0 or f2>0 end -end -function c48996569.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g1=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569) - g1:Merge(g2) - local g=Group.CreateGroup() - local tc=nil - for i=1,2 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - if ft<=0 then - tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() - ft=ft+1 - else - tc=g1:Select(tp,1,1,nil):GetFirst() - end - g:AddCard(tc) - if i==1 then - g1:Clear() - if tc:IsFusionCode(89943723) then - local sg=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,tc,80344569) - g1:Merge(sg) - end - if tc:IsFusionCode(80344569) then - local sg=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) - g1:Merge(sg) - end - end - end - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c48996569.retcon1(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsHasEffect(42015635) -end -function c48996569.retcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsHasEffect(42015635) -end -function c48996569.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtra() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c48996569.retop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) -end -function c48996569.filter(c) - return c:IsAbleToHand() -end -function c48996569.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c48996569.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c48996569.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c48996569.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c48996569.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end +--E・HERO グラン・ネオス +function c48996569.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,89943723,80344569,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c48996569.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c48996569.spcon) + e2:SetOperation(c48996569.spop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(48996569,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c48996569.retcon1) + e3:SetTarget(c48996569.rettg) + e3:SetOperation(c48996569.retop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(0) + e4:SetCondition(c48996569.retcon2) + c:RegisterEffect(e4) + --tohand + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(48996569,1)) + e5:SetCategory(CATEGORY_TOHAND) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetTarget(c48996569.thtg) + e5:SetOperation(c48996569.thop) + c:RegisterEffect(e5) +end +c48996569.material_setcode=0x8 +function c48996569.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c48996569.spfilter(c,code) + return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) +end +function c48996569.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local g1=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569) + if g1:GetCount()==0 or g2:GetCount()==0 then return false end + if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + if ft==-1 then return f1>0 and f2>0 + else return f1>0 or f2>0 end +end +function c48996569.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569) + g1:Merge(g2) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + ft=ft+1 + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + if i==1 then + g1:Clear() + if tc:IsFusionCode(89943723) then + local sg=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,tc,80344569) + g1:Merge(sg) + end + if tc:IsFusionCode(80344569) then + local sg=Duel.GetMatchingGroup(c48996569.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) + g1:Merge(sg) + end + end + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c48996569.retcon1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(42015635) +end +function c48996569.retcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasEffect(42015635) +end +function c48996569.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtra() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c48996569.retop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end +function c48996569.filter(c) + return c:IsAbleToHand() +end +function c48996569.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c48996569.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c48996569.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c48996569.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c48996569.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c49010598.lua b/script/c49010598.lua index 453f1ae2..cd731363 100644 --- a/script/c49010598.lua +++ b/script/c49010598.lua @@ -1,34 +1,33 @@ ---天罰 -function c49010598.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c49010598.condition) - e1:SetCost(c49010598.cost) - e1:SetTarget(c49010598.target) - e1:SetOperation(c49010598.activate) - c:RegisterEffect(e1) -end -function c49010598.condition(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) -end -function c49010598.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end - 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 c49010598.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c49010598.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--天罰 +function c49010598.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c49010598.condition) + e1:SetCost(c49010598.cost) + e1:SetTarget(c49010598.target) + e1:SetOperation(c49010598.activate) + c:RegisterEffect(e1) +end +function c49010598.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c49010598.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end + 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 c49010598.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c49010598.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c49032236.lua b/script/c49032236.lua index ff44e17f..ed94f28e 100644 --- a/script/c49032236.lua +++ b/script/c49032236.lua @@ -6,7 +6,7 @@ function c49032236.initial_effect(c) --immune local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(49032236,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) diff --git a/script/c49033797.lua b/script/c49033797.lua index 96411308..76dffcfa 100644 --- a/script/c49033797.lua +++ b/script/c49033797.lua @@ -1,65 +1,65 @@ ---禁断のトラペゾヘドロン -function c49033797.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,49033797+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c49033797.target) - e1:SetOperation(c49033797.activate) - c:RegisterEffect(e1) -end -function c49033797.cfilter(c,tpe) - return c:IsFaceup() and c:IsType(tpe) -end -function c49033797.filter(c,e,tp,cat) - return c:IsSetCard(cat) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c49033797.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end - local flag=0 - if Duel.IsExistingMatchingCard(c49033797.cfilter,tp,LOCATION_MZONE,0,1,nil,TYPE_FUSION) then flag=flag+1 end - if Duel.IsExistingMatchingCard(c49033797.cfilter,tp,LOCATION_MZONE,0,1,nil,TYPE_SYNCHRO) then flag=flag+2 end - if Duel.IsExistingMatchingCard(c49033797.cfilter,tp,LOCATION_MZONE,0,1,nil,TYPE_XYZ) then flag=flag+4 end - e:SetLabel(flag) - if flag==3 then - return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsExistingMatchingCard(c49033797.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,0xb6) - elseif flag==6 then - return Duel.IsExistingMatchingCard(c49033797.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,0xb7) - elseif flag==5 then - return Duel.IsExistingMatchingCard(c49033797.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,0xb8) - else return false end - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c49033797.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local flag=e:GetLabel() - if flag==3 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c49033797.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,0xb6) - local sc=g:GetFirst() - if sc then - Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - c:CancelToGrave() - Duel.Overlay(sc,Group.FromCards(c)) - end - end - elseif flag==6 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c49033797.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,0xb7) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c49033797.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,0xb8) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end - end -end +--禁断のトラペゾヘドロン +function c49033797.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,49033797+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c49033797.target) + e1:SetOperation(c49033797.activate) + c:RegisterEffect(e1) +end +function c49033797.cfilter(c,tpe) + return c:IsFaceup() and c:IsType(tpe) +end +function c49033797.filter(c,e,tp,cat) + return c:IsSetCard(cat) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c49033797.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + local flag=0 + if Duel.IsExistingMatchingCard(c49033797.cfilter,tp,LOCATION_MZONE,0,1,nil,TYPE_FUSION) then flag=flag+1 end + if Duel.IsExistingMatchingCard(c49033797.cfilter,tp,LOCATION_MZONE,0,1,nil,TYPE_SYNCHRO) then flag=flag+2 end + if Duel.IsExistingMatchingCard(c49033797.cfilter,tp,LOCATION_MZONE,0,1,nil,TYPE_XYZ) then flag=flag+4 end + e:SetLabel(flag) + if flag==3 then + return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsExistingMatchingCard(c49033797.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,0xb6) + elseif flag==6 then + return Duel.IsExistingMatchingCard(c49033797.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,0xb7) + elseif flag==5 then + return Duel.IsExistingMatchingCard(c49033797.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,0xb8) + else return false end + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c49033797.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local flag=e:GetLabel() + if flag==3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c49033797.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,0xb6) + local sc=g:GetFirst() + if sc then + Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(sc,Group.FromCards(c)) + end + end + elseif flag==6 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c49033797.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,0xb7) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c49033797.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,0xb8) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c4906301.lua b/script/c4906301.lua index bb180386..0e82bf27 100644 --- a/script/c4906301.lua +++ b/script/c4906301.lua @@ -1,37 +1,37 @@ ---ネクロ・ガードナー -function c4906301.initial_effect(c) - --disable attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(4906301,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_ATTACK) - e1:SetRange(LOCATION_GRAVE) - e1:SetCondition(c4906301.condition) - e1:SetCost(c4906301.cost) - e1:SetOperation(c4906301.operation) - c:RegisterEffect(e1) -end -function c4906301.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and (Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE)) -end -function c4906301.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c4906301.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetAttacker() then Duel.NegateAttack() - else - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetOperation(c4906301.disop) - Duel.RegisterEffect(e1,tp) - end -end -function c4906301.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,4906301) - Duel.NegateAttack() -end +--ネクロ・ガードナー +function c4906301.initial_effect(c) + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4906301,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_ATTACK) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c4906301.condition) + e1:SetCost(c4906301.cost) + e1:SetOperation(c4906301.operation) + c:RegisterEffect(e1) +end +function c4906301.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and (Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE)) +end +function c4906301.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c4906301.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttacker() then Duel.NegateAttack() + else + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c4906301.disop) + Duel.RegisterEffect(e1,tp) + end +end +function c4906301.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,4906301) + Duel.NegateAttack() +end diff --git a/script/c49080532.lua b/script/c49080532.lua index 4d7fcae7..a55d931a 100644 --- a/script/c49080532.lua +++ b/script/c49080532.lua @@ -1,41 +1,41 @@ ---インフェルニティ・ビートル -function c49080532.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(49080532,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c49080532.condition) - e1:SetCost(c49080532.cost) - e1:SetTarget(c49080532.target) - e1:SetOperation(c49080532.operation) - c:RegisterEffect(e1) -end -function c49080532.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 -end -function c49080532.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c49080532.filter(c,e,tp) - return c:IsCode(49080532) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c49080532.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c49080532.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c49080532.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 then return end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if ft>2 then ft=2 end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c49080532.filter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--インフェルニティ・ビートル +function c49080532.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(49080532,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c49080532.condition) + e1:SetCost(c49080532.cost) + e1:SetTarget(c49080532.target) + e1:SetOperation(c49080532.operation) + c:RegisterEffect(e1) +end +function c49080532.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 +end +function c49080532.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c49080532.filter(c,e,tp) + return c:IsCode(49080532) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c49080532.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c49080532.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c49080532.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 then return end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>2 then ft=2 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c49080532.filter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c49121795.lua b/script/c49121795.lua new file mode 100644 index 00000000..f00a46b2 --- /dev/null +++ b/script/c49121795.lua @@ -0,0 +1,87 @@ +--重装甲列車アイアン・ヴォルフ +function c49121795.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),4,2) + c:EnableReviveLimit() + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(49121795,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c49121795.dacon) + e1:SetCost(c49121795.dacost) + e1:SetTarget(c49121795.datg) + e1:SetOperation(c49121795.daop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(49121795,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c49121795.thcon) + e2:SetTarget(c49121795.thtg) + e2:SetOperation(c49121795.thop) + c:RegisterEffect(e2) +end +function c49121795.dacon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c49121795.dacost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c49121795.dafilter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and not c:IsHasEffect(EFFECT_DIRECT_ATTACK) +end +function c49121795.datg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c49121795.dafilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c49121795.dafilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c49121795.dafilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c49121795.daop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c49121795.ftarget) + e1:SetLabel(tc:GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if tc:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c49121795.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c49121795.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetPreviousControler()==tp and rp==1-tp and c:IsReason(REASON_DESTROY) +end +function c49121795.thfilter(c) + return c:IsRace(RACE_MACHINE) and c:GetLevel()==4 and c:IsAbleToHand() +end +function c49121795.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c49121795.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c49121795.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c49121795.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c49195710.lua b/script/c49195710.lua index 43f031e5..f8acf088 100644 --- a/script/c49195710.lua +++ b/script/c49195710.lua @@ -6,7 +6,7 @@ function c49195710.initial_effect(c) --addown local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(49195710,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c49202331.lua b/script/c49202331.lua index 53a8332b..214f9efe 100644 --- a/script/c49202331.lua +++ b/script/c49202331.lua @@ -18,7 +18,8 @@ function c49202331.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(49202331,1)) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLED) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetCountLimit(1) e2:SetCondition(c49202331.atcon) e2:SetCost(c49202331.atcost) @@ -46,9 +47,8 @@ function c49202331.damop(e,tp,eg,ep,ev,re,r,rp) end function c49202331.atcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() - and e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,3814632) + return aux.bdcon(e,tp,eg,ep,ev,re,r,rp) and c:IsChainAttackable() + and c:GetOverlayGroup():IsExists(Card.IsCode,1,nil,3814632) end function c49202331.atcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end diff --git a/script/c49217579.lua b/script/c49217579.lua index 36e1b2bf..65530b6e 100644 --- a/script/c49217579.lua +++ b/script/c49217579.lua @@ -1,43 +1,43 @@ ---幻影の騎士-ミラージュ・ナイト- -function c49217579.initial_effect(c) - c:EnableReviveLimit() - --atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c49217579.atkcon) - e1:SetValue(c49217579.atkval) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c49217579.rmcon) - e2:SetOperation(c49217579.rmop) - c:RegisterEffect(e2) - --cannot special summon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(aux.FALSE) - c:RegisterEffect(e3) -end -function c49217579.atkcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and e:GetHandler():GetBattleTarget() -end -function c49217579.atkval(e,c) - return e:GetHandler():GetBattleTarget():GetBaseAttack() -end -function c49217579.rmcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetBattledGroupCount()>0 -end -function c49217579.rmop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) - end -end +--幻影の騎士-ミラージュ・ナイト- +function c49217579.initial_effect(c) + c:EnableReviveLimit() + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c49217579.atkcon) + e1:SetValue(c49217579.atkval) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c49217579.rmcon) + e2:SetOperation(c49217579.rmop) + c:RegisterEffect(e2) + --cannot special summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.FALSE) + c:RegisterEffect(e3) +end +function c49217579.atkcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and e:GetHandler():GetBattleTarget() +end +function c49217579.atkval(e,c) + return e:GetHandler():GetBattleTarget():GetBaseAttack() +end +function c49217579.rmcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 +end +function c49217579.rmop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c49221191.lua b/script/c49221191.lua index a12396eb..b1d56ad7 100644 --- a/script/c49221191.lua +++ b/script/c49221191.lua @@ -7,7 +7,7 @@ function c49221191.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(49221191,1)) e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) diff --git a/script/c49249907.lua b/script/c49249907.lua index 3e4e60b6..c60f604b 100644 --- a/script/c49249907.lua +++ b/script/c49249907.lua @@ -1,62 +1,62 @@ ---妖仙獣 凶旋嵐 -function c49249907.initial_effect(c) - --summon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c49249907.sptg) - e1:SetOperation(c49249907.spop) - c:RegisterEffect(e1) - --return - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetCondition(c49249907.retcon) - e2:SetTarget(c49249907.rettg) - e2:SetOperation(c49249907.retop) - c:RegisterEffect(e2) - if not c49249907.global_check then - c49249907.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SPSUMMON_SUCCESS) - ge1:SetLabel(49249907) - ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - ge1:SetOperation(aux.sumreg) - Duel.RegisterEffect(ge1,0) - end -end -function c49249907.filter(c,e,tp) - return c:IsSetCard(0xb3) and not c:IsCode(49249907) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c49249907.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c49249907.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c49249907.spop(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,c49249907.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c49249907.retcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(49249907)~=0 -end -function c49249907.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c49249907.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--妖仙獣 凶旋嵐 +function c49249907.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c49249907.sptg) + e1:SetOperation(c49249907.spop) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCondition(c49249907.retcon) + e2:SetTarget(c49249907.rettg) + e2:SetOperation(c49249907.retop) + c:RegisterEffect(e2) + if not c49249907.global_check then + c49249907.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetLabel(49249907) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + end +end +function c49249907.filter(c,e,tp) + return c:IsSetCard(0xb3) and not c:IsCode(49249907) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c49249907.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c49249907.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c49249907.spop(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,c49249907.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c49249907.retcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(49249907)~=0 +end +function c49249907.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c49249907.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c49267971.lua b/script/c49267971.lua index 48a5b2d4..b5ce6309 100644 --- a/script/c49267971.lua +++ b/script/c49267971.lua @@ -1,41 +1,41 @@ ---死角からの一撃 -function c49267971.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(c49267971.condition) - e1:SetTarget(c49267971.target) - e1:SetOperation(c49267971.activate) - c:RegisterEffect(e1) -end -function c49267971.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c49267971.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_DEFENSE) - and Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) - local g1=Duel.SelectTarget(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_DEFENSE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF) - local g2=Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_ATTACK) - e:SetLabelObject(g1:GetFirst()) -end -function c49267971.activate(e,tp,eg,ep,ev,re,r,rp) - local tc1=e:GetLabelObject() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local tc2=g:GetFirst() - if tc1==tc2 then tc2=g:GetNext() end - if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) and tc2: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+PHASE_END) - e1:SetValue(tc1:GetDefense()) - tc2:RegisterEffect(e1) - end -end +--死角からの一撃 +function c49267971.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(c49267971.condition) + e1:SetTarget(c49267971.target) + e1:SetOperation(c49267971.activate) + c:RegisterEffect(e1) +end +function c49267971.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c49267971.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_DEFENSE) + and Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g1=Duel.SelectTarget(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_DEFENSE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF) + local g2=Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_ATTACK) + e:SetLabelObject(g1:GetFirst()) +end +function c49267971.activate(e,tp,eg,ep,ev,re,r,rp) + local tc1=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc2=g:GetFirst() + if tc1==tc2 then tc2=g:GetNext() end + if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) and tc2: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+PHASE_END) + e1:SetValue(tc1:GetDefense()) + tc2:RegisterEffect(e1) + end +end diff --git a/script/c49306994.lua b/script/c49306994.lua new file mode 100644 index 00000000..dca2a33d --- /dev/null +++ b/script/c49306994.lua @@ -0,0 +1,141 @@ +--白のヴェール +function c49306994.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(c49306994.target) + e1:SetOperation(c49306994.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --Actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetTargetRange(0,1) + e3:SetValue(c49306994.aclimit) + e3:SetCondition(c49306994.actcon) + c:RegisterEffect(e3) + --disable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetCondition(c49306994.discon) + e4:SetOperation(c49306994.disop) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(49306994,0)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BATTLE_DESTROYING) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c49306994.descon) + e5:SetTarget(c49306994.destg) + e5:SetOperation(c49306994.desop) + c:RegisterEffect(e5) + --leave + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetCode(EVENT_LEAVE_FIELD_P) + e6:SetOperation(c49306994.checkop) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_LEAVE_FIELD) + e7:SetLabelObject(e6) + e7:SetOperation(c49306994.leave) + c:RegisterEffect(e7) +end +function c49306994.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 c49306994.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 c49306994.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and not re:GetHandler():IsImmuneToEffect(e) +end +function c49306994.actcon(e) + local tc=e:GetHandler():GetEquipTarget() + return Duel.GetAttacker()==tc or Duel.GetAttackTarget()==tc +end +function c49306994.discon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetEquipTarget() + return Duel.GetAttacker()==tc or Duel.GetAttackTarget()==tc +end +function c49306994.disfilter(c) + return aux.disfilter1(c) and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c49306994.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c49306994.disfilter,tp,0,LOCATION_ONFIELD,c) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end +end +function c49306994.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget()==eg:GetFirst() +end +function c49306994.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c49306994.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c49306994.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local sg=Duel.GetMatchingGroup(c49306994.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c49306994.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c49306994.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(sg,REASON_EFFECT) +end +function c49306994.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c49306994.leave(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabelObject():GetLabel()==0 and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEUP) then + Duel.Damage(tp,3000,REASON_EFFECT) + end +end diff --git a/script/c4931121.lua b/script/c4931121.lua new file mode 100644 index 00000000..015f489b --- /dev/null +++ b/script/c4931121.lua @@ -0,0 +1,81 @@ +--影のデッキ破壊ウイルス +function c4931121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_TOHAND+0x1c0) + e1:SetCost(c4931121.cost) + e1:SetTarget(c4931121.target) + e1:SetOperation(c4931121.activate) + c:RegisterEffect(e1) +end +function c4931121.costfilter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsDefenseAbove(2000) +end +function c4931121.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c4931121.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c4931121.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c4931121.tgfilter(c) + return c:IsFaceup() and c:IsDefenseBelow(1500) +end +function c4931121.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c4931121.tgfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c4931121.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsDefenseBelow(1500) +end +function c4931121.activate(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE+LOCATION_HAND) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + local dg=conf:Filter(c4931121.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DRAW) + e1:SetOperation(c4931121.desop) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c4931121.turncon) + e2:SetOperation(c4931121.turnop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e2,tp) + e2:SetLabelObject(e1) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,3) + c4931121[e:GetHandler()]=e2 +end +function c4931121.desop(e,tp,eg,ep,ev,re,r,rp) + if ep==e:GetOwnerPlayer() then return end + local hg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND) + if hg:GetCount()==0 then return end + Duel.ConfirmCards(1-ep,hg) + local dg=hg:Filter(c4931121.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(ep) +end +function c4931121.turncon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c4931121.turnop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + e:GetHandler():SetTurnCounter(ct) + if ct==3 then + e:GetLabelObject():Reset() + e:GetOwner():ResetFlagEffect(1082946) + end +end diff --git a/script/c49352945.lua b/script/c49352945.lua index 0987196f..715945c9 100644 --- a/script/c49352945.lua +++ b/script/c49352945.lua @@ -1,155 +1,156 @@ ---E・HERO ストーム・ネオス -function c49352945.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode3(c,89943723,17955766,54959865,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c49352945.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c49352945.spcon) - e2:SetOperation(c49352945.spop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(49352945,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c49352945.retcon1) - e3:SetTarget(c49352945.rettg) - e3:SetOperation(c49352945.retop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(0) - e4:SetCondition(c49352945.retcon2) - c:RegisterEffect(e4) - --destroy - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(49352945,1)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetTarget(c49352945.destg) - e5:SetOperation(c49352945.desop) - c:RegisterEffect(e5) - --todeck - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(49352945,2)) - e6:SetCategory(CATEGORY_TODECK) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_CUSTOM+49352945) - e6:SetTarget(c49352945.tdtg) - e6:SetOperation(c49352945.tdop) - c:RegisterEffect(e6) -end -function c49352945.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) -end -function c49352945.spfilter(c,code1,code2,code3) - return c:IsAbleToDeckOrExtraAsCost() and (c:IsFusionCode(code1) or c:IsFusionCode(code2) or c:IsFusionCode(code3)) -end -function c49352945.spfilter1(c,mg,ft) - local mg2=mg:Clone() - mg2:RemoveCard(c) - if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end - return ft>=-1 and c:IsFusionCode(89943723) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) - and mg2:IsExists(c49352945.spfilter2,1,nil,mg2,ft) -end -function c49352945.spfilter2(c,mg,ft) - local mg2=mg:Clone() - mg2:RemoveCard(c) - if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end - return ft>=0 and c:IsFusionCode(17955766) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) - and mg2:IsExists(c49352945.spfilter3,1,nil,ft) -end -function c49352945.spfilter3(c,ft) - if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end - return ft>=1 and c:IsFusionCode(54959865) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) -end -function c49352945.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-2 then return false end - local mg=Duel.GetMatchingGroup(c49352945.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723,17955766,54959865) - return mg:IsExists(c49352945.spfilter1,1,nil,mg,ft) -end -function c49352945.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local mg=Duel.GetMatchingGroup(c49352945.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723,17955766,54959865) - local g=Group.CreateGroup() - local tc=nil - for i=1,3 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - if i==1 then - tc=mg:FilterSelect(tp,c49352945.spfilter1,1,1,nil,mg,ft):GetFirst() - end - if i==2 then - tc=mg:FilterSelect(tp,c49352945.spfilter2,1,1,nil,mg,ft):GetFirst() - end - if i==3 then - tc=mg:FilterSelect(tp,c49352945.spfilter3,1,1,nil,ft):GetFirst() - end - g:AddCard(tc) - mg:RemoveCard(tc) - if tc:IsLocation(LOCATION_MZONE) then ft=ft+1 end - end - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c49352945.retcon1(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsHasEffect(42015635) -end -function c49352945.retcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsHasEffect(42015635) -end -function c49352945.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtra() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c49352945.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - Duel.SendtoDeck(c,nil,2,REASON_EFFECT) - if c:IsLocation(LOCATION_EXTRA) then - Duel.RaiseSingleEvent(c,EVENT_CUSTOM+49352945,e,0,0,0,0) - end -end -function c49352945.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c49352945.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c49352945.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - local g=Duel.GetMatchingGroup(c49352945.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c49352945.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c49352945.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - Duel.Destroy(g,REASON_EFFECT) -end -function c49352945.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c49352945.tdop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) -end +--E・HERO ストーム・ネオス +function c49352945.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,89943723,17955766,54959865,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c49352945.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c49352945.spcon) + e2:SetOperation(c49352945.spop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(49352945,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c49352945.retcon1) + e3:SetTarget(c49352945.rettg) + e3:SetOperation(c49352945.retop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(0) + e4:SetCondition(c49352945.retcon2) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(49352945,1)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetTarget(c49352945.destg) + e5:SetOperation(c49352945.desop) + c:RegisterEffect(e5) + --todeck + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(49352945,2)) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_CUSTOM+49352945) + e6:SetTarget(c49352945.tdtg) + e6:SetOperation(c49352945.tdop) + c:RegisterEffect(e6) +end +c49352945.material_setcode=0x8 +function c49352945.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c49352945.spfilter(c,code1,code2,code3) + return c:IsAbleToDeckOrExtraAsCost() and (c:IsFusionCode(code1) or c:IsFusionCode(code2) or c:IsFusionCode(code3)) +end +function c49352945.spfilter1(c,mg,ft) + local mg2=mg:Clone() + mg2:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return ft>=-1 and c:IsFusionCode(89943723) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() + and mg2:IsExists(c49352945.spfilter2,1,nil,mg2,ft) +end +function c49352945.spfilter2(c,mg,ft) + local mg2=mg:Clone() + mg2:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return ft>=0 and c:IsFusionCode(17955766) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() + and mg2:IsExists(c49352945.spfilter3,1,nil,ft) +end +function c49352945.spfilter3(c,ft) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return ft>=1 and c:IsFusionCode(54959865) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() +end +function c49352945.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + local mg=Duel.GetMatchingGroup(c49352945.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723,17955766,54959865) + return mg:IsExists(c49352945.spfilter1,1,nil,mg,ft) +end +function c49352945.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local mg=Duel.GetMatchingGroup(c49352945.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723,17955766,54959865) + local g=Group.CreateGroup() + local tc=nil + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if i==1 then + tc=mg:FilterSelect(tp,c49352945.spfilter1,1,1,nil,mg,ft):GetFirst() + end + if i==2 then + tc=mg:FilterSelect(tp,c49352945.spfilter2,1,1,nil,mg,ft):GetFirst() + end + if i==3 then + tc=mg:FilterSelect(tp,c49352945.spfilter3,1,1,nil,ft):GetFirst() + end + g:AddCard(tc) + mg:RemoveCard(tc) + if tc:IsLocation(LOCATION_MZONE) then ft=ft+1 end + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c49352945.retcon1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(42015635) +end +function c49352945.retcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasEffect(42015635) +end +function c49352945.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtra() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c49352945.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + if c:IsLocation(LOCATION_EXTRA) then + Duel.RaiseSingleEvent(c,EVENT_CUSTOM+49352945,e,0,0,0,0) + end +end +function c49352945.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c49352945.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c49352945.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c49352945.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c49352945.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c49352945.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c49352945.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c49352945.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c49398568.lua b/script/c49398568.lua index 6ed689ce..872d36e8 100644 --- a/script/c49398568.lua +++ b/script/c49398568.lua @@ -1,39 +1,39 @@ ---連続魔法 -function c49398568.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c49398568.condition) - e1:SetCost(c49398568.cost) - e1:SetTarget(c49398568.target) - e1:SetOperation(c49398568.activate) - c:RegisterEffect(e1) -end -function c49398568.condition(e,tp,eg,ep,ev,re,r,rp) - return re:GetActiveType()==TYPE_SPELL and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp -end -function c49398568.cfilter(c) - return c:IsDiscardable() and c:IsAbleToGraveAsCost() -end -function c49398568.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - hg:RemoveCard(e:GetHandler()) - if chk==0 then return hg:GetCount()>0 and hg:FilterCount(c49398568.cfilter,nil)==hg:GetCount() end - Duel.SendtoGrave(hg,REASON_COST+REASON_DISCARD) -end -function c49398568.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local ftg=re:GetTarget() - if chkc then return ftg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end - if chk==0 then return not ftg or ftg(e,tp,eg,ep,ev,re,r,rp,chk) end - if re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - end - if ftg then - ftg(e,tp,eg,ep,ev,re,r,rp,chk) - end -end -function c49398568.activate(e,tp,eg,ep,ev,re,r,rp) - local fop=re:GetOperation() - fop(e,tp,eg,ep,ev,re,r,rp) -end +--連続魔法 +function c49398568.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c49398568.condition) + e1:SetCost(c49398568.cost) + e1:SetTarget(c49398568.target) + e1:SetOperation(c49398568.activate) + c:RegisterEffect(e1) +end +function c49398568.condition(e,tp,eg,ep,ev,re,r,rp) + return re:GetActiveType()==TYPE_SPELL and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp +end +function c49398568.cfilter(c) + return c:IsDiscardable() and c:IsAbleToGraveAsCost() +end +function c49398568.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + hg:RemoveCard(e:GetHandler()) + if chk==0 then return hg:GetCount()>0 and hg:FilterCount(c49398568.cfilter,nil)==hg:GetCount() end + Duel.SendtoGrave(hg,REASON_COST+REASON_DISCARD) +end +function c49398568.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ftg=re:GetTarget() + if chkc then return ftg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return not ftg or ftg(e,tp,eg,ep,ev,re,r,rp,chk) end + if re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + end + if ftg then + ftg(e,tp,eg,ep,ev,re,r,rp,chk) + end +end +function c49398568.activate(e,tp,eg,ep,ev,re,r,rp) + local fop=re:GetOperation() + fop(e,tp,eg,ep,ev,re,r,rp) +end diff --git a/script/c4939890.lua b/script/c4939890.lua index 4e85d08f..01f13c1d 100644 --- a/script/c4939890.lua +++ b/script/c4939890.lua @@ -1,64 +1,64 @@ ---シャドール・ヘッジホッグ -function c4939890.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(4939890,0)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,4939890) - e1:SetCost(c4939890.cost) - e1:SetTarget(c4939890.target) - e1:SetOperation(c4939890.operation) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(4939890,1)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,4939890) - e2:SetCondition(c4939890.thcon) - e2:SetCost(c4939890.cost) - e2:SetTarget(c4939890.thtg) - e2:SetOperation(c4939890.thop) - c:RegisterEffect(e2) -end -function c4939890.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end -function c4939890.filter(c) - return c:IsSetCard(0x9d) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c4939890.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c4939890.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c4939890.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c4939890.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c4939890.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_EFFECT) -end -function c4939890.thfilter(c) - return c:IsSetCard(0x9d) and c:IsType(TYPE_MONSTER) and not c:IsCode(4939890) and c:IsAbleToHand() -end -function c4939890.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c4939890.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c4939890.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c4939890.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--シャドール・ヘッジホッグ +function c4939890.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4939890,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,4939890) + e1:SetCost(c4939890.cost) + e1:SetTarget(c4939890.target) + e1:SetOperation(c4939890.operation) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4939890,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,4939890) + e2:SetCondition(c4939890.thcon) + e2:SetCost(c4939890.cost) + e2:SetTarget(c4939890.thtg) + e2:SetOperation(c4939890.thop) + c:RegisterEffect(e2) +end +function c4939890.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c4939890.filter(c) + return c:IsSetCard(0x9d) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c4939890.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c4939890.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c4939890.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c4939890.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c4939890.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) +end +function c4939890.thfilter(c) + return c:IsSetCard(0x9d) and c:IsType(TYPE_MONSTER) and not c:IsCode(4939890) and c:IsAbleToHand() +end +function c4939890.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c4939890.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c4939890.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c4939890.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c49430782.lua b/script/c49430782.lua new file mode 100644 index 00000000..58c5f20a --- /dev/null +++ b/script/c49430782.lua @@ -0,0 +1,126 @@ +--真竜の継承 +--True Draco Succession +--Script by nekrozar +function c49430782.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(49430782,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,49430782) + e2:SetCondition(c49430782.drcon) + e2:SetTarget(c49430782.drtg) + e2:SetOperation(c49430782.drop) + c:RegisterEffect(e2) + --tribute summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(49430782,1)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,49430783) + e3:SetTarget(c49430782.sumtg) + e3:SetOperation(c49430782.sumop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(49430782,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,49430784) + e4:SetCondition(c49430782.descon) + e4:SetTarget(c49430782.destg) + e4:SetOperation(c49430782.desop) + c:RegisterEffect(e4) + if c49430782.counter==nil then + c49430782.counter=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(c49430782.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c49430782.clearop) + Duel.RegisterEffect(ge2,0) + end +end +function c49430782.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsPreviousLocation(LOCATION_ONFIELD) and (tc:IsSetCard(0xf9) or tc:IsCode(30539496,34079868,82321037,87765315,96746083)) then + local typ=bit.band(tc:GetOriginalType(),0x7) + if (typ==TYPE_MONSTER and Duel.GetFlagEffect(0,49430782)==0) + or (typ==TYPE_SPELL and Duel.GetFlagEffect(0,49430783)==0) + or (typ==TYPE_TRAP and Duel.GetFlagEffect(0,49430784)==0) then + c49430782.counter=c49430782.counter+1 + if typ==TYPE_MONSTER then + Duel.RegisterFlagEffect(0,49430782,RESET_PHASE+PHASE_END,0,1) + elseif typ==TYPE_SPELL then + Duel.RegisterFlagEffect(0,49430783,RESET_PHASE+PHASE_END,0,1) + else + Duel.RegisterFlagEffect(0,49430784,RESET_PHASE+PHASE_END,0,1) + end + end + end + tc=eg:GetNext() + end +end +function c49430782.clearop(e,tp,eg,ep,ev,re,r,rp) + c49430782.counter=0 +end +function c49430782.drcon(e,tp,eg,ep,ev,re,r,rp) + return c49430782.counter>0 +end +function c49430782.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,c49430782.counter) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,c49430782.counter) +end +function c49430782.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Draw(tp,c49430782.counter,REASON_EFFECT) +end +function c49430782.sumfilter(c) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsSummonable(true,nil,1) +end +function c49430782.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c49430782.sumfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c49430782.sumop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c49430782.sumfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil,1) + end +end +function c49430782.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c49430782.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsType(TYPE_SPELL+TYPE_TRAP) end + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,TYPE_SPELL+TYPE_TRAP) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,TYPE_SPELL+TYPE_TRAP) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c49430782.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c49441499.lua b/script/c49441499.lua index e0eb4e6d..743ddca6 100644 --- a/script/c49441499.lua +++ b/script/c49441499.lua @@ -1,69 +1,69 @@ ---アルティメット・インセクト LV1 -function c49441499.initial_effect(c) - --immune spell - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(c49441499.efilter) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(49441499,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCondition(c49441499.spcon) - e2:SetCost(c49441499.spcost) - e2:SetTarget(c49441499.sptg) - e2:SetOperation(c49441499.spop) - c:RegisterEffect(e2) - --reg - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetOperation(c49441499.regop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EVENT_FLIP) - c:RegisterEffect(e5) -end -c49441499.lvupcount=1 -c49441499.lvup={34088136} -function c49441499.efilter(e,te) - return te:IsActiveType(TYPE_SPELL) -end -function c49441499.regop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(49441499,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) -end -function c49441499.spcon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(49441499)==0 -end -function c49441499.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c49441499.spfilter(c,e,tp) - return c:IsCode(34088136) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) -end -function c49441499.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c49441499.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c49441499.spop(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,c49441499.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) - tc:RegisterFlagEffect(34088136,RESET_EVENT+0x16e0000,0,0) - tc:CompleteProcedure() - end -end +--アルティメット・インセクト LV1 +function c49441499.initial_effect(c) + --immune spell + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c49441499.efilter) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(49441499,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c49441499.spcon) + e2:SetCost(c49441499.spcost) + e2:SetTarget(c49441499.sptg) + e2:SetOperation(c49441499.spop) + c:RegisterEffect(e2) + --reg + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetOperation(c49441499.regop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_FLIP) + c:RegisterEffect(e5) +end +c49441499.lvupcount=1 +c49441499.lvup={34088136} +function c49441499.efilter(e,te) + return te:IsActiveType(TYPE_SPELL) +end +function c49441499.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(49441499,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end +function c49441499.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(49441499)==0 +end +function c49441499.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c49441499.spfilter(c,e,tp) + return c:IsCode(34088136) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c49441499.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c49441499.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c49441499.spop(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,c49441499.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) + tc:RegisterFlagEffect(34088136,RESET_EVENT+0x16e0000,0,0) + tc:CompleteProcedure() + end +end diff --git a/script/c49456901.lua b/script/c49456901.lua index 88f6e851..14b68476 100644 --- a/script/c49456901.lua +++ b/script/c49456901.lua @@ -17,7 +17,7 @@ function c49456901.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(49456901,1)) e2:SetCategory(CATEGORY_NEGATE+CATEGORY_HANDES) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) diff --git a/script/c49469105.lua b/script/c49469105.lua index bfa53422..f7a847b8 100644 --- a/script/c49469105.lua +++ b/script/c49469105.lua @@ -1,58 +1,58 @@ ---融合破棄 -function c49469105.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c49469105.cost) - e1:SetTarget(c49469105.target) - e1:SetOperation(c49469105.operation) - c:RegisterEffect(e1) -end -function c49469105.cfilter(c) - return c:IsCode(24094653) and c:IsDiscardable() and c:IsAbleToGraveAsCost() -end -function c49469105.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c49469105.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c49469105.cfilter,1,1,REASON_COST+REASON_DISCARD) -end -function c49469105.filter1(c,g) - return c.material and g:IsExists(c49469105.filter2,1,nil,c) -end -function c49469105.filter2(c,fc) - return c:IsCode(table.unpack(fc.material)) -end -function c49469105.spfilter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c49469105.target(e,tp,eg,ep,ev,re,r,rp,chk) - local g=Duel.GetMatchingGroup(c49469105.spfilter,tp,LOCATION_HAND,0,nil,e,tp) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c49469105.filter1,tp,LOCATION_EXTRA,0,1,nil,g) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c49469105.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local g=Duel.GetMatchingGroup(c49469105.spfilter,tp,LOCATION_HAND,0,nil,e,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local exg=Duel.SelectMatchingCard(tp,c49469105.filter1,tp,LOCATION_EXTRA,0,1,1,nil,g) - if exg:GetCount()>0 then - Duel.SendtoGrave(exg,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:FilterSelect(tp,c49469105.filter2,1,1,nil,exg:GetFirst()) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetOperation(c49469105.tgop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - sg:GetFirst():RegisterEffect(e1,true) - end -end -function c49469105.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) -end +--融合破棄 +function c49469105.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c49469105.cost) + e1:SetTarget(c49469105.target) + e1:SetOperation(c49469105.operation) + c:RegisterEffect(e1) +end +function c49469105.cfilter(c) + return c:IsCode(24094653) and c:IsDiscardable() and c:IsAbleToGraveAsCost() +end +function c49469105.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c49469105.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c49469105.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c49469105.filter1(c,g) + return c.material and g:IsExists(c49469105.filter2,1,nil,c) +end +function c49469105.filter2(c,fc) + return c:IsCode(table.unpack(fc.material)) +end +function c49469105.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c49469105.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c49469105.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c49469105.filter1,tp,LOCATION_EXTRA,0,1,nil,g) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c49469105.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.GetMatchingGroup(c49469105.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local exg=Duel.SelectMatchingCard(tp,c49469105.filter1,tp,LOCATION_EXTRA,0,1,1,nil,g) + if exg:GetCount()>0 then + Duel.SendtoGrave(exg,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:FilterSelect(tp,c49469105.filter2,1,1,nil,exg:GetFirst()) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c49469105.tgop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + sg:GetFirst():RegisterEffect(e1,true) + end +end +function c49469105.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c494922.lua b/script/c494922.lua index ec903c00..6d93595c 100644 --- a/script/c494922.lua +++ b/script/c494922.lua @@ -1,53 +1,54 @@ ---超重荒神スサノ-O -function c494922.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),aux.NonTuner(Card.IsSetCard,0x9a),1) - c:EnableReviveLimit() - --defense attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DEFENSE_ATTACK) - e1:SetValue(1) - c:RegisterEffect(e1) - --set - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(494922,0)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c494922.setcon) - e2:SetTarget(c494922.settg) - e2:SetOperation(c494922.setop) - c:RegisterEffect(e2) -end -function c494922.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c494922.setcon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c494922.filter,tp,LOCATION_GRAVE,0,1,nil) -end -function c494922.setfilter(c,tp) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable(true) and (c:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) -end -function c494922.settg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c494922.setfilter(chkc,tp) end - if chk==0 then return Duel.IsExistingTarget(c494922.setfilter,tp,0,LOCATION_GRAVE,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) - local g=Duel.SelectTarget(tp,c494922.setfilter,tp,0,LOCATION_GRAVE,1,1,nil,tp) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) -end -function c494922.setop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and (tc:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) then - Duel.SSet(tp,tc) - Duel.ConfirmCards(1-tp,tc) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - tc:RegisterEffect(e1,true) - end -end +--超重荒神スサノ-O +function c494922.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),aux.NonTuner(Card.IsSetCard,0x9a),1) + c:EnableReviveLimit() + --defense attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DEFENSE_ATTACK) + e1:SetValue(1) + c:RegisterEffect(e1) + --set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(494922,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCondition(c494922.setcon) + e2:SetTarget(c494922.settg) + e2:SetOperation(c494922.setop) + c:RegisterEffect(e2) +end +function c494922.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c494922.setcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c494922.filter,tp,LOCATION_GRAVE,0,1,nil) +end +function c494922.setfilter(c,tp) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable(true) and (c:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) +end +function c494922.settg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c494922.setfilter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c494922.setfilter,tp,0,LOCATION_GRAVE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local g=Duel.SelectTarget(tp,c494922.setfilter,tp,0,LOCATION_GRAVE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) +end +function c494922.setop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and (tc:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) then + Duel.SSet(tp,tc) + Duel.ConfirmCards(1-tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + end +end diff --git a/script/c49513164.lua b/script/c49513164.lua new file mode 100644 index 00000000..ff140cee --- /dev/null +++ b/script/c49513164.lua @@ -0,0 +1,35 @@ +--召喚獣ライディーン +function c49513164.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,86120751,aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_WIND),1,true,true) + --position + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(49513164,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c49513164.settg) + e1:SetOperation(c49513164.setop) + c:RegisterEffect(e1) +end +function c49513164.setfilter(c) + return c:IsFaceup() and c:IsCanTurnSet() +end +function c49513164.settg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c49513164.setfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c49513164.setfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,c49513164.setfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c49513164.setop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c49514333.lua b/script/c49514333.lua index fe76b336..53fc5095 100644 --- a/script/c49514333.lua +++ b/script/c49514333.lua @@ -1,66 +1,66 @@ ---ソウル・オブ・スタチュー -function c49514333.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c49514333.target) - e1:SetOperation(c49514333.activate) - c:RegisterEffect(e1) - local g=Group.CreateGroup() - g:KeepAlive() - e1:SetLabelObject(g) -end -function c49514333.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,49514333,0,0x21,1000,1800,4,RACE_ROCK,ATTRIBUTE_LIGHT) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c49514333.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,49514333,0,0x21,1000,1800,4,RACE_ROCK,ATTRIBUTE_LIGHT) then return end - c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SEND_REPLACE) - e1:SetTarget(c49514333.reptg) - e1:SetValue(c49514333.repval) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetLabelObject(e) - c:RegisterEffect(e1,true) - Duel.SpecialSummonComplete() -end -function c49514333.repfilter(c,tp) - return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_DESTROY) - and c:GetReasonPlayer()~=tp and c:GetOwner()==tp and bit.band(c:GetOriginalType(),TYPE_TRAP)~=0 and c:IsCanTurnSet() -end -function c49514333.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local count=eg:FilterCount(c49514333.repfilter,e:GetHandler(),tp) - return count>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>=count - end - if Duel.SelectYesNo(tp,aux.Stringid(49514333,0)) then - local container=e:GetLabelObject():GetLabelObject() - container:Clear() - local g=eg:Filter(c49514333.repfilter,e:GetHandler(),tp) - local tc=g:GetFirst() - while tc do - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - tc=g:GetNext() - end - Duel.ChangePosition(g,POS_FACEDOWN) - container:Merge(g) - return true - end - return false -end -function c49514333.repval(e,c) - return e:GetLabelObject():GetLabelObject():IsContains(c) -end +--ソウル・オブ・スタチュー +function c49514333.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c49514333.target) + e1:SetOperation(c49514333.activate) + c:RegisterEffect(e1) + local g=Group.CreateGroup() + g:KeepAlive() + e1:SetLabelObject(g) +end +function c49514333.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,49514333,0,0x21,1000,1800,4,RACE_ROCK,ATTRIBUTE_LIGHT) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c49514333.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,49514333,0,0x21,1000,1800,4,RACE_ROCK,ATTRIBUTE_LIGHT) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SEND_REPLACE) + e1:SetTarget(c49514333.reptg) + e1:SetValue(c49514333.repval) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabelObject(e) + c:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() +end +function c49514333.repfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_DESTROY) + and c:GetReasonPlayer()~=tp and c:GetOwner()==tp and bit.band(c:GetOriginalType(),TYPE_TRAP)~=0 and c:IsCanTurnSet() +end +function c49514333.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local count=eg:FilterCount(c49514333.repfilter,e:GetHandler(),tp) + return count>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>=count + end + if Duel.SelectYesNo(tp,aux.Stringid(49514333,0)) then + local container=e:GetLabelObject():GetLabelObject() + container:Clear() + local g=eg:Filter(c49514333.repfilter,e:GetHandler(),tp) + local tc=g:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + tc=g:GetNext() + end + Duel.ChangePosition(g,POS_FACEDOWN) + container:Merge(g) + return true + end + return false +end +function c49514333.repval(e,c) + return e:GetLabelObject():GetLabelObject():IsContains(c) +end diff --git a/script/c49597193.lua b/script/c49597193.lua index 4b89bde2..d88a32b4 100644 --- a/script/c49597193.lua +++ b/script/c49597193.lua @@ -1,52 +1,52 @@ ---ジェムナイト・パーズ -function c49597193.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,54620698,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),1,false,false) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(c49597193.splimit) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(49597193,0)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCode(EVENT_BATTLE_DESTROYING) - e3:SetCondition(c49597193.damcon) - e3:SetTarget(c49597193.damtg) - e3:SetOperation(c49597193.damop) - c:RegisterEffect(e3) - --multi attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EXTRA_ATTACK) - e4:SetValue(1) - c:RegisterEffect(e4) -end -function c49597193.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c49597193.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) -end -function c49597193.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - local bc=c:GetBattleTarget() - local dam=bc:GetAttack() - if dam<0 then dam=0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c49597193.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--ジェムナイト・パーズ +function c49597193.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,54620698,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),1,false,false) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(c49597193.splimit) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(49597193,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c49597193.damcon) + e3:SetTarget(c49597193.damtg) + e3:SetOperation(c49597193.damop) + c:RegisterEffect(e3) + --multi attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EXTRA_ATTACK) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c49597193.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c49597193.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c49597193.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local bc=c:GetBattleTarget() + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c49597193.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c49678559.lua b/script/c49678559.lua index 0937b97f..61287790 100644 --- a/script/c49678559.lua +++ b/script/c49678559.lua @@ -7,7 +7,7 @@ function c49678559.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(49678559,0)) e1:SetCategory(CATEGORY_DISABLE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c49680980.lua b/script/c49680980.lua index b50770e0..dc116bb8 100644 --- a/script/c49680980.lua +++ b/script/c49680980.lua @@ -80,8 +80,7 @@ function c49680980.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c49680980.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c49681811.lua b/script/c49681811.lua index 27a29c4f..8136bd51 100644 --- a/script/c49681811.lua +++ b/script/c49681811.lua @@ -45,8 +45,7 @@ function c49681811.disop(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if not g or g:GetCount()==0 then return end if g:IsContains(e:GetHandler()) then - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(re:GetHandler(),REASON_EFFECT) end end diff --git a/script/c49684352.lua b/script/c49684352.lua new file mode 100644 index 00000000..a762348a --- /dev/null +++ b/script/c49684352.lua @@ -0,0 +1,80 @@ +--虹彩の魔術師 +function c49684352.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Double damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(49684352,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c49684352.dbcon) + e1:SetTarget(c49684352.dbtg) + e1:SetOperation(c49684352.dbop) + c:RegisterEffect(e1) + --Search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(49684352,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c49684352.thcon) + e3:SetTarget(c49684352.thtg) + e3:SetOperation(c49684352.thop) + c:RegisterEffect(e3) +end +function c49684352.dbcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c49684352.dbfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_SPELLCASTER) and c:GetFlagEffect(49684352)==0 +end +function c49684352.dbtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c49684352.dbfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c49684352.dbfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c49684352.dbfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c49684352.dbop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + tc:RegisterFlagEffect(49684352,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetCondition(c49684352.damcon) + e1:SetOperation(c49684352.damop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.BreakEffect() + Duel.Destroy(c,REASON_EFFECT) + end +end +function c49684352.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and e:GetHandler():GetBattleTarget()~=nil +end +function c49684352.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end +function c49684352.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c49684352.thfilter(c) + return c:IsSetCard(0x20f2) and c:IsAbleToHand() +end +function c49684352.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c49684352.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c49684352.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c49684352.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c49820233.lua b/script/c49820233.lua new file mode 100644 index 00000000..28954185 --- /dev/null +++ b/script/c49820233.lua @@ -0,0 +1,70 @@ +--EMガトリングール +--Performapal Gatling Ghoul +--Script by nekrozar +function c49820233.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x9f),aux.FilterBoolFunction(c49820233.ffilter),true) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(49820233,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCountLimit(1,49820233) + e1:SetCondition(c49820233.damcon) + e1:SetTarget(c49820233.damtg) + e1:SetOperation(c49820233.damop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c49820233.valcheck) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c49820233.ffilter(c) + if Card.IsFusionAttribute then + return c:IsFusionAttribute(ATTRIBUTE_DARK) and c:IsLevelAbove(5) + else + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsLevelAbove(5) + end +end +function c49820233.damcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c49820233.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,LOCATION_ONFIELD)>0 end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*200) + if e:GetLabel()==1 then + local g=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + end +end +function c49820233.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) + if ct>0 and Duel.Damage(p,ct*200,REASON_EFFECT)~=0 and e:GetLabel()==1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.BreakEffect() + Duel.HintSelection(g) + if Duel.Destroy(g,REASON_EFFECT)~=0 then + local dam=g:GetFirst():GetBaseAttack() + Duel.Damage(p,dam,REASON_EFFECT) + end + end + end +end +function c49820233.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsType,1,nil,TYPE_PENDULUM) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end diff --git a/script/c49823708.lua b/script/c49823708.lua index e2cb851d..f9f12269 100644 --- a/script/c49823708.lua +++ b/script/c49823708.lua @@ -1,93 +1,93 @@ ---破壊剣士の伴竜 -function c49823708.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c49823708.target) - e1:SetOperation(c49823708.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(49823708,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,49823708) - e2:SetCost(c49823708.spcost) - e2:SetTarget(c49823708.sptg) - e2:SetOperation(c49823708.spop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(49823708,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_GRAVE) - e3:SetCountLimit(1,49823708) - e3:SetCondition(c49823708.spcon2) - e3:SetCost(c49823708.spcost2) - e3:SetTarget(c49823708.sptg2) - e3:SetOperation(c49823708.spop2) - c:RegisterEffect(e3) -end -function c49823708.filter(c) - return c:IsSetCard(0xd6) and not c:IsCode(49823708) and c:IsAbleToHand() -end -function c49823708.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c49823708.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c49823708.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c49823708.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c49823708.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c49823708.spfilter(c,e,tp) - return c:IsCode(78193831) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c49823708.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c49823708.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_HAND) -end -function c49823708.spop(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,c49823708.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c49823708.cfilter(c) - return c:IsFaceup() and c:IsCode(78193831) -end -function c49823708.spcon2(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c49823708.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c49823708.costfilter(c) - return c:IsSetCard(0xd6) and c:IsAbleToGraveAsCost() -end -function c49823708.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c49823708.costfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c49823708.costfilter,1,1,REASON_COST) -end -function c49823708.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c49823708.spop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) - end -end +--破壊剣士の伴竜 +function c49823708.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c49823708.target) + e1:SetOperation(c49823708.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(49823708,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,49823708) + e2:SetCost(c49823708.spcost) + e2:SetTarget(c49823708.sptg) + e2:SetOperation(c49823708.spop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(49823708,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1,49823708) + e3:SetCondition(c49823708.spcon2) + e3:SetCost(c49823708.spcost2) + e3:SetTarget(c49823708.sptg2) + e3:SetOperation(c49823708.spop2) + c:RegisterEffect(e3) +end +function c49823708.filter(c) + return c:IsSetCard(0xd6) and not c:IsCode(49823708) and c:IsAbleToHand() +end +function c49823708.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c49823708.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c49823708.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c49823708.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c49823708.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c49823708.spfilter(c,e,tp) + return c:IsCode(78193831) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c49823708.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c49823708.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_HAND) +end +function c49823708.spop(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,aux.NecroValleyFilter(c49823708.spfilter),tp,LOCATION_GRAVE+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 c49823708.cfilter(c) + return c:IsFaceup() and c:IsCode(78193831) +end +function c49823708.spcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c49823708.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c49823708.costfilter(c) + return c:IsSetCard(0xd6) and c:IsAbleToGraveAsCost() +end +function c49823708.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c49823708.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c49823708.costfilter,1,1,REASON_COST) +end +function c49823708.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c49823708.spop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c49868263.lua b/script/c49868263.lua index e4f68f8a..81f64328 100644 --- a/script/c49868263.lua +++ b/script/c49868263.lua @@ -59,8 +59,7 @@ function c49868263.disop2(e,tp,eg,ep,ev,re,r,rp) if re:IsActiveType(TYPE_SPELL) and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if g and g:IsContains(e:GetHandler()) then - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(re:GetHandler(),REASON_EFFECT) end end diff --git a/script/c49919798.lua b/script/c49919798.lua index 451e03f1..36d79133 100644 --- a/script/c49919798.lua +++ b/script/c49919798.lua @@ -1,98 +1,98 @@ ---音響戦士サイザス -function c49919798.initial_effect(c) - --tohand - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(49919798,0)) - e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetTarget(c49919798.thtg) - e1:SetOperation(c49919798.thop) - c:RegisterEffect(e1) - --copy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(49919798,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetCost(c49919798.cpcost) - e2:SetTarget(c49919798.cptg) - e2:SetOperation(c49919798.cpop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(49919798,2)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_GRAVE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCost(c49919798.spcost) - e3:SetTarget(c49919798.sptg) - e3:SetOperation(c49919798.spop) - c:RegisterEffect(e3) -end -function c49919798.thfilter(c) - return c:IsSetCard(0x1066) and not c:IsCode(49919798) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c49919798.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c49919798.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c49919798.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c49919798.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c49919798.cpcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(49919798)==0 end - e:GetHandler():RegisterFlagEffect(49919798,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c49919798.cpfilter(c) - return c:IsFaceup() and c:IsSetCard(0x1066) and not c:IsCode(49919798) -end -function c49919798.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) and c49919798.cpfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c49919798.cpfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c49919798.cpfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil) -end -function c49919798.cpop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and (not tc:IsLocation(LOCATION_MZONE) or tc:IsFaceup()) then - local code=tc:GetCode() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - c:RegisterEffect(e1) - c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) - end -end -function c49919798.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c49919798.spfilter(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x1066) and not c:IsCode(49919798) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c49919798.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c49919798.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c49919798.spfilter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c49919798.spfilter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c49919798.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--音響戦士サイザス +function c49919798.initial_effect(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(49919798,0)) + e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c49919798.thtg) + e1:SetOperation(c49919798.thop) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(49919798,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c49919798.cpcost) + e2:SetTarget(c49919798.cptg) + e2:SetOperation(c49919798.cpop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(49919798,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCost(c49919798.spcost) + e3:SetTarget(c49919798.sptg) + e3:SetOperation(c49919798.spop) + c:RegisterEffect(e3) +end +function c49919798.thfilter(c) + return c:IsSetCard(0x1066) and not c:IsCode(49919798) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c49919798.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c49919798.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c49919798.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c49919798.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c49919798.cpcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(49919798)==0 end + e:GetHandler():RegisterFlagEffect(49919798,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c49919798.cpfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1066) and not c:IsCode(49919798) +end +function c49919798.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) and c49919798.cpfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c49919798.cpfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c49919798.cpfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil) +end +function c49919798.cpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and (not tc:IsLocation(LOCATION_MZONE) or tc:IsFaceup()) then + local code=tc:GetCode() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end +end +function c49919798.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c49919798.spfilter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x1066) and not c:IsCode(49919798) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c49919798.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c49919798.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c49919798.spfilter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c49919798.spfilter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c49919798.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c49966595.lua b/script/c49966595.lua index 18f8cc28..3b3eb294 100644 --- a/script/c49966595.lua +++ b/script/c49966595.lua @@ -1,121 +1,121 @@ ---グレイドル・パラサイト -function c49966595.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_ATTACK) - e1:SetTarget(c49966595.acttg) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1,49966595) - e2:SetCondition(c49966595.spcon1) - e2:SetCost(c49966595.spcost1) - e2:SetTarget(c49966595.sptg1) - e2:SetOperation(c49966595.spop1) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetRange(LOCATION_SZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1,49966596) - e3:SetCondition(c49966595.spcon2) - e3:SetCost(c49966595.spcost2) - e3:SetTarget(c49966595.sptg2) - e3:SetOperation(c49966595.spop2) - c:RegisterEffect(e3) -end -function c49966595.acttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return c49966595.sptg2(e,tp,eg,ep,ev,re,r,rp,0,chkc) end - if chk==0 then return true end - if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) then - if c49966595.spcon1(e,tp,eg,ep,ev,re,r,rp) - and c49966595.spcost1(e,tp,eg,ep,ev,re,r,rp,0) - and c49966595.sptg1(e,tp,eg,ep,ev,re,r,rp,0) - and Duel.SelectYesNo(tp,94) then - e:SetCategory(CATEGORY_SPECIAL_SUMMON) - e:SetProperty(0) - e:SetOperation(c49966595.spop1) - c49966595.spcost1(e,tp,eg,ep,ev,re,r,rp,1) - c49966595.sptg1(e,tp,eg,ep,ev,re,r,rp,1) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) - return - elseif c49966595.spcon2(e,tp,eg,ep,ev,re,r,rp) - and c49966595.spcost2(e,tp,eg,ep,ev,re,r,rp,0) - and c49966595.sptg2(e,tp,eg,ep,ev,re,r,rp,0,chkc) - and Duel.SelectYesNo(tp,94) then - e:SetCategory(CATEGORY_SPECIAL_SUMMON) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - e:SetOperation(c49966595.spop2) - c49966595.spcost2(e,tp,eg,ep,ev,re,r,rp,1) - c49966595.sptg2(e,tp,eg,ep,ev,re,r,rp,1,chkc) - return - end - end - e:SetCategory(0) - e:SetProperty(0) - e:SetOperation(nil) -end -function c49966595.spcon1(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil -end -function c49966595.spcost1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,49966595)==0 end - Duel.RegisterFlagEffect(tp,49966595,RESET_PHASE+PHASE_END,0,1) -end -function c49966595.spfilter1(c,e,tp) - return c:IsSetCard(0xd1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) -end -function c49966595.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c49966595.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c49966595.spop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)~=0 then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c49966595.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) - end -end -function c49966595.spcon2(e,tp,eg,ep,ev,re,r,rp) - local c=Duel.GetAttacker() - return c:IsControler(tp) and c:IsSetCard(0xd1) and Duel.GetAttackTarget()==nil -end -function c49966595.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,49966596)==0 end - Duel.RegisterFlagEffect(tp,49966596,RESET_PHASE+PHASE_END,0,1) -end -function c49966595.spfilter2(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) -end -function c49966595.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c49966595.spfilter2(chkc,e,tp) end - if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)==0 - and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c49966595.spfilter2,tp,0,LOCATION_GRAVE,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c49966595.spfilter2,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c49966595.spop2(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 then return end - if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP) - end -end +--グレイドル・パラサイト +function c49966595.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_ATTACK) + e1:SetTarget(c49966595.acttg) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,49966595) + e2:SetCondition(c49966595.spcon1) + e2:SetCost(c49966595.spcost1) + e2:SetTarget(c49966595.sptg1) + e2:SetOperation(c49966595.spop1) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1,49966596) + e3:SetCondition(c49966595.spcon2) + e3:SetCost(c49966595.spcost2) + e3:SetTarget(c49966595.sptg2) + e3:SetOperation(c49966595.spop2) + c:RegisterEffect(e3) +end +function c49966595.acttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c49966595.sptg2(e,tp,eg,ep,ev,re,r,rp,0,chkc) end + if chk==0 then return true end + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) then + if c49966595.spcon1(e,tp,eg,ep,ev,re,r,rp) + and c49966595.spcost1(e,tp,eg,ep,ev,re,r,rp,0) + and c49966595.sptg1(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetProperty(0) + e:SetOperation(c49966595.spop1) + c49966595.spcost1(e,tp,eg,ep,ev,re,r,rp,1) + c49966595.sptg1(e,tp,eg,ep,ev,re,r,rp,1) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) + return + elseif c49966595.spcon2(e,tp,eg,ep,ev,re,r,rp) + and c49966595.spcost2(e,tp,eg,ep,ev,re,r,rp,0) + and c49966595.sptg2(e,tp,eg,ep,ev,re,r,rp,0,chkc) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c49966595.spop2) + c49966595.spcost2(e,tp,eg,ep,ev,re,r,rp,1) + c49966595.sptg2(e,tp,eg,ep,ev,re,r,rp,1,chkc) + return + end + end + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) +end +function c49966595.spcon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c49966595.spcost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,49966595)==0 end + Duel.RegisterFlagEffect(tp,49966595,RESET_PHASE+PHASE_END,0,1) +end +function c49966595.spfilter1(c,e,tp) + return c:IsSetCard(0xd1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) +end +function c49966595.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c49966595.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c49966595.spop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)~=0 then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c49966595.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end +function c49966595.spcon2(e,tp,eg,ep,ev,re,r,rp) + local c=Duel.GetAttacker() + return c:IsControler(tp) and c:IsSetCard(0xd1) and Duel.GetAttackTarget()==nil +end +function c49966595.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,49966596)==0 end + Duel.RegisterFlagEffect(tp,49966596,RESET_PHASE+PHASE_END,0,1) +end +function c49966595.spfilter2(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) +end +function c49966595.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c49966595.spfilter2(chkc,e,tp) end + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)==0 + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c49966595.spfilter2,tp,0,LOCATION_GRAVE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c49966595.spfilter2,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c49966595.spop2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 then return end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP) + end +end diff --git a/script/c4998619.lua b/script/c4998619.lua index 115c6d49..8220a09d 100644 --- a/script/c4998619.lua +++ b/script/c4998619.lua @@ -82,16 +82,14 @@ function c4998619.spop2(e,tp,eg,ep,ev,re,r,rp) g=g:Select(tp,ft,ft,nil) end if Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0 then - local sg=Duel.GetMatchingGroup(c4998619.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,nil) + local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c4998619.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,nil) if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(4998619,0)) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) sg=sg:Select(tp,1,1,nil) - if not sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.BreakEffect() - Duel.SendtoHand(sg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,sg) - Duel.ShuffleDeck(tp) - end + Duel.BreakEffect() + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + Duel.ShuffleDeck(tp) end end end diff --git a/script/c500000006.lua b/script/c500000006.lua new file mode 100644 index 00000000..b85cbdfc --- /dev/null +++ b/script/c500000006.lua @@ -0,0 +1,33 @@ +--古代の機械像 +function c500000006.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c500000006.spcost) + e1:SetTarget(c500000006.sptg) + e1:SetOperation(c500000006.spop) + c:RegisterEffect(e1) +end +function c500000006.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c500000006.filter(c,e,tp) + return c:GetCode()==83104731 +end +function c500000006.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c500000006.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c500000006.spop(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,c500000006.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c500000008.lua b/script/c500000008.lua new file mode 100644 index 00000000..410a1434 --- /dev/null +++ b/script/c500000008.lua @@ -0,0 +1,40 @@ +--ショック・ウェーブ +function c500000008.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c500000008.condition) + e1:SetHintTiming(0,0x1e1) + e1:SetTarget(c500000008.target) + e1:SetOperation(c500000008.activate) + c:RegisterEffect(e1) +end +function c500000008.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c500000008.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=Duel.GetLP(1-tp)-1 +end +function c500000008.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c500000008.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c500000008.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c500000008.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c500000008.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.Damage(1-tp,atk,REASON_EFFECT,true) + Duel.Damage(tp,atk,REASON_EFFECT,true) + Duel.RDComplete() + end + end +end diff --git a/script/c500000124.lua b/script/c500000124.lua new file mode 100644 index 00000000..f66518e4 --- /dev/null +++ b/script/c500000124.lua @@ -0,0 +1,35 @@ +--不滅階級 +function c500000124.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCost(c500000124.cost) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c500000124.target) + e1:SetOperation(c500000124.activate) + c:RegisterEffect(e1) +end +function c500000124.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,2,nil) end + local g=Duel.SelectReleaseGroup(tp,aux.TRUE,1,2,nil) + Duel.Release(g,REASON_COST) +end +function c500000124.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,true,false) and c:IsLevelAbove(7) +end +function c500000124.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c500000124.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c500000124.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c500000124.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c500000124.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c500000140.lua b/script/c500000140.lua new file mode 100644 index 00000000..12539669 --- /dev/null +++ b/script/c500000140.lua @@ -0,0 +1,37 @@ +--聖騎士の盾持ち +function c500000140.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(500000140,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c500000140.cost) + e1:SetTarget(c500000140.target) + e1:SetOperation(c500000140.operation) + c:RegisterEffect(e1) +end +function c500000140.filter(c) + return + c:IsRace(RACE_WARRIOR) and + c:IsAttribute(ATTRIBUTE_LIGHT) and + c:IsAbleToRemoveAsCost() +end +function c500000140.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + return Duel.IsExistingMatchingCard(c500000140.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c500000140.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c500000140.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c500000140.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c500000141.lua b/script/c500000141.lua new file mode 100644 index 00000000..0819e818 --- /dev/null +++ b/script/c500000141.lua @@ -0,0 +1,32 @@ +--聖騎士の槍持ち +function c500000141.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(500000141,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c500000141.cost) + e1:SetTarget(c500000141.target) + e1:SetOperation(c500000141.operation) + c:RegisterEffect(e1) +end +function c500000141.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c500000141.filter(c) + return c:IsType(TYPE_EQUIP) and c:IsAbleToHand() +end +function c500000141.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c500000141.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c500000141.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c500000141.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c500000142.lua b/script/c500000142.lua new file mode 100644 index 00000000..54af9afb --- /dev/null +++ b/script/c500000142.lua @@ -0,0 +1,27 @@ +--花騎士団の駿馬 +function c500000142.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(500000142,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c500000142.tg) + e1:SetOperation(c500000142.op) + c:RegisterEffect(e1) +end +function c500000142.filter(c) + return c:IsCode(24094653) or c:IsCode(500000141) +end +function c500000142.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c500000142.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c500000142.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c500000142.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c500000143.lua b/script/c500000143.lua new file mode 100644 index 00000000..350a6da1 --- /dev/null +++ b/script/c500000143.lua @@ -0,0 +1,51 @@ +--ケンタウルミナ +function c500000143.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,500000141,500000142,true,true) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(500000143,0)) + e1:SetCategory(CATEGORY_NEGATE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c500000143.discon) + e1:SetTarget(c500000143.target) + e1:SetOperation(c500000143.activate) + c:RegisterEffect(e1) +end +function c500000143.discon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) + and rp~=tp and tp==Duel.GetTurnPlayer() +end +function c500000143.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if not re:GetHandler():IsStatus(STATUS_ACT_FROM_HAND) then + return re:GetHandler():IsCanTurnSet() + else return true end + end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsStatus(STATUS_ACT_FROM_HAND) then + Duel.SetOperationInfo(0,CATEGORY_TOHAND,eg,1,0,0) + end +end +function c500000143.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + local rc=re:GetHandler() + if rc:IsRelateToEffect(re) then + if rc:IsStatus(STATUS_ACT_FROM_HAND) then + rc:CancelToGrave() + Duel.SendtoHand(rc,nil,REASON_EFFECT) + else + if rc:IsCanTurnSet() then + rc:CancelToGrave() + Duel.ChangePosition(rc,POS_FACEDOWN) + --rc:SetStatus(STATUS_SET_TURN,false) + Duel.RaiseEvent(rc,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) + end + end + end +end \ No newline at end of file diff --git a/script/c500000147.lua b/script/c500000147.lua new file mode 100644 index 00000000..99358884 --- /dev/null +++ b/script/c500000147.lua @@ -0,0 +1,73 @@ +--エコール・ド・ゾーン +function c500000147.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(500000147,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c500000147.target) + e2:SetOperation(c500000147.activate) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --cannot direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c500000147.atktarget) + c:RegisterEffect(e4) +end +function c500000147.atktarget(e,c) + return not c:IsType(TYPE_TOKEN) +end +function c500000147.filter(c,tp,ep) + local tpe=c:GetType() + return c:IsFaceup() and c:IsDestructable() and bit.band(tpe,TYPE_TOKEN)==0 +end +function c500000147.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return eg:IsExists(c500000147.filter,1,nil,tp) end + local g=eg:Filter(c500000147.filter,nil,tp) + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c500000147.filter3(c,e,tp) + local tpe=c:GetType() + return c:IsFaceup() + and c:IsDestructable() and bit.band(tpe,TYPE_TOKEN)==0 +end +function c500000147.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c500000147.filter3,nil,e,tp) + if g:GetCount()>0 then + local atk=g:GetFirst():GetAttack() + local def=g:GetFirst():GetDefense() + local con=g:GetFirst():GetControler() + local pos=g:GetFirst():GetPosition() + if Duel.Destroy(g,REASON_EFFECT)~=0 then + local token=Duel.CreateToken(tp,500000148) + Duel.SpecialSummonStep(token,0,con,con,false,false,pos) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(def) + token:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end +end diff --git a/script/c500000149.lua b/script/c500000149.lua new file mode 100644 index 00000000..ccefacf9 --- /dev/null +++ b/script/c500000149.lua @@ -0,0 +1,43 @@ +--魂縛門 +function c500000149.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(500000149,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetTarget(c500000149.tg) + e2:SetOperation(c500000149.op) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c500000149.filter(c,e,tp) + local lp=Duel.GetLP(tp) + return c:IsFaceup() and c:IsDestructable() and c:GetAttack()<=lp and (not e or c:IsRelateToEffect(e)) +end +function c500000149.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c500000149.filter,1,nil,nil,tp) end + local g=eg:Filter(c500000149.filter,nil,nil,tp) + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,800) +end +function c500000149.op(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c500000149.filter,nil,e,tp) + if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)>0 then + Duel.Damage(1-tp,800,REASON_EFFECT,true) + Duel.Damage(tp,800,REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c500000152.lua b/script/c500000152.lua new file mode 100644 index 00000000..8eb9f15c --- /dev/null +++ b/script/c500000152.lua @@ -0,0 +1,40 @@ +--呪詛返しのヒトガタ +function c500000152.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c500000152.condition) + e1:SetOperation(c500000152.operation) + c:RegisterEffect(e1) +end +function c500000152.condition(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + 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) + if not ex then return false end + if cp~=PLAYER_ALL then return Duel.IsPlayerAffectedByEffect(cp,EFFECT_REVERSE_RECOVER) + else return Duel.IsPlayerAffectedByEffect(0,EFFECT_REVERSE_RECOVER) + or Duel.IsPlayerAffectedByEffect(1,EFFECT_REVERSE_RECOVER) + end +end +function c500000152.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_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c500000152.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c500000152.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c500008302.lua b/script/c500008302.lua new file mode 100644 index 00000000..30446420 --- /dev/null +++ b/script/c500008302.lua @@ -0,0 +1,29 @@ +--インスタント・オーバーレイ +function c500008302.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c500008302.target) + e1:SetOperation(c500008302.activate) + c:RegisterEffect(e1) +end +function c500008302.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()==0 +end +function c500008302.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c500008302.filter(chkc) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c500008302.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c500008302.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c500008302.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + end +end diff --git a/script/c500008902.lua b/script/c500008902.lua new file mode 100644 index 00000000..f14e96b6 --- /dev/null +++ b/script/c500008902.lua @@ -0,0 +1,66 @@ +--オーバーレイ・ワールド +function c500008902.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes1 + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c500008902.targeta) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e3:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c500008902.rmtarget) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(500008902,0)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_REPEAT) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c500008902.con) + e4:SetTarget(c500008902.damtg) + e4:SetOperation(c500008902.damop) + c:RegisterEffect(e4) +end +function c500008902.targeta(e,c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c500008902.filter(c) + return c:IsType(TYPE_XYZ) +end +function c500008902.rmtarget(e,c) + return c:IsReason(REASON_BATTLE) and c:IsType(TYPE_XYZ) +end +function c500008902.con(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_MZONE,0,1,nil,TYPE_XYZ) + or not Duel.IsExistingMatchingCard(Card.IsType,tp,0,LOCATION_MZONE,1,nil,TYPE_XYZ) +end +function c500008902.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c500008902.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local c1=Duel.GetMatchingGroupCount(c500008902.filter,tp,LOCATION_ONFIELD,0,nil) + if c1<2 then + Duel.Damage(tp,500-c1*500,REASON_EFFECT) + end + local c2=Duel.GetMatchingGroupCount(c500008902.filter,1-tp,LOCATION_ONFIELD,0,nil) + if c2<2 then + Duel.Damage(1-tp,500-c2*500,REASON_EFFECT) + end +end diff --git a/script/c500313101.lua b/script/c500313101.lua new file mode 100644 index 00000000..2e951b1c --- /dev/null +++ b/script/c500313101.lua @@ -0,0 +1,118 @@ +--無限牢 +function c500313101.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(c500313101.cost1) + e1:SetTarget(c500313101.target1) + e1:SetOperation(c500313101.activate1) + c:RegisterEffect(e1) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12385,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c500313101.spcon) + e1:SetTarget(c500313101.target3) + e1:SetOperation(c500313101.activate3) + c:RegisterEffect(e1) + --instant + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(500313101,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCost(c500313101.cost2) + e3:SetTarget(c500313101.target2) + e3:SetOperation(c500313101.activate2) + c:RegisterEffect(e3) +end +function c500313101.cost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:SetLabel(0) + if Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) and Duel.SelectYesNo(tp,aux.Stringid(100000012,0)) then + e:GetHandler():RegisterFlagEffect(500313101,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:SetLabel(1) + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) + else e:SetProperty(0) + end +end +function c500313101.filter(c) + return c:IsLevelBelow(4) and c:IsType(TYPE_MONSTER) +end +function c500313101.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c500313101.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c500313101.filter,tp,LOCATION_GRAVE,0,1,nil) end + local g=Duel.SelectTarget(tp,c500313101.filter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c500313101.activate1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if e:GetLabel()~=1 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + tc:RegisterEffect(e1) + Duel.RaiseEvent(tc,500313101,e,0,tp,0,0) + local sg=e:GetLabelObject() + tc:RegisterFlagEffect(500313101,RESET_EVENT+0x1fe0000,0,1) + end +end +function c500313101.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) and e:GetHandler():IsPreviousPosition(POS_FACEUP) +end +function c500313101.filter2(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() + and c:GetFlagEffect(500313101)~=0 +end +function c500313101.target3(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c500313101.filter2,tp,LOCATION_SZONE,0,1,c) end + local sg=Duel.GetMatchingGroup(c500313101.filter2,tp,LOCATION_SZONE,0,c) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c500313101.activate3(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c500313101.filter2,tp,LOCATION_SZONE,0,e:GetHandler()) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end +function c500313101.cost2(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()) and e:GetHandler():GetFlagEffect(500313101)==0 end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) + e:GetHandler():RegisterFlagEffect(500313101,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c500313101.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c500313101.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c500313101.filter,tp,LOCATION_GRAVE,0,1,nil) end + local g=Duel.SelectTarget(tp,c500313101.filter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c500313101.activate2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + tc:RegisterEffect(e1) + Duel.RaiseEvent(tc,500313101,e,0,tp,0,0) + local sg=e:GetLabelObject() + tc:RegisterFlagEffect(500313101,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c500314601.lua b/script/c500314601.lua new file mode 100644 index 00000000..aaf6e971 --- /dev/null +++ b/script/c500314601.lua @@ -0,0 +1,41 @@ +--カオス・ブルーム +function c500314601.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c500314601.target) + e1:SetOperation(c500314601.activate) + c:RegisterEffect(e1) +end +function c500314601.filter1(c) + return c:IsFaceup() and c:IsAttackBelow(1000) and c:IsDestructable() +end +function c500314601.filter2(c) + return c:GetSequence()<5 and c:IsDestructable() +end +function c500314601.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_GRAVE,0,nil,500314601) + local a= ct==0 and Duel.IsExistingMatchingCard(c500314601.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + local b= ct==1 and Duel.IsExistingMatchingCard(c500314601.filter2,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) + local c= ct>=2 and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) + if chk==0 then return a or b or c end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) +end +function c500314601.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_GRAVE,0,nil,500314601) + local g=Group.CreateGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + if ct==0 then + g=Duel.SelectMatchingCard(tp,c500314601.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + elseif ct==1 then + g=Duel.SelectMatchingCard(tp,c500314601.filter2,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) + elseif ct>=2 then + g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + end + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c500314701.lua b/script/c500314701.lua new file mode 100644 index 00000000..c5b0130d --- /dev/null +++ b/script/c500314701.lua @@ -0,0 +1,32 @@ +--ハイレート・ドロー +function c500314701.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c500314701.target) + e1:SetOperation(c500314701.activate) + c:RegisterEffect(e1) +end +function c500314701.filter1(c) + return c:IsRace(RACE_MACHINE) and c:IsLocation(LOCATION_GRAVE) +end +function c500314701.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,0,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetTargetPlayer(tp) +end +function c500314701.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + if Duel.Destroy(g,REASON_EFFECT)>0 then + local og=Duel.GetOperatedGroup() + local dc=og:FilterCount(c500314701.filter1,nil) + if dc>0 then + Duel.BreakEffect() + Duel.Draw(p,dc,REASON_EFFECT) + end + end +end diff --git a/script/c50065971.lua b/script/c50065971.lua new file mode 100644 index 00000000..349f9976 --- /dev/null +++ b/script/c50065971.lua @@ -0,0 +1,87 @@ +--超重忍者シノビ-A・C +function c50065971.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),aux.NonTuner(Card.IsRace,RACE_MACHINE),1) + c:EnableReviveLimit() + --defense attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DEFENSE_ATTACK) + e1:SetValue(1) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(50065971,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c50065971.dircon) + e2:SetOperation(c50065971.dirop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetOperation(c50065971.spreg) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(50065971,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetRange(LOCATION_GRAVE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetCountLimit(1) + e4:SetCondition(c50065971.spcon) + e4:SetTarget(c50065971.sptg) + e4:SetOperation(c50065971.spop) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) +end +function c50065971.dircon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) + and not e:GetHandler():IsHasEffect(EFFECT_DIRECT_ATTACK) +end +function c50065971.dirop(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:SetCode(EFFECT_SET_BASE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(c:GetBaseDefense()/2) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end +end +function c50065971.spreg(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if bit.band(r,REASON_EFFECT+REASON_DESTROY)~=REASON_EFFECT+REASON_DESTROY then return end + if Duel.GetCurrentPhase()==PHASE_STANDBY then + e:SetLabel(Duel.GetTurnCount()) + c:RegisterFlagEffect(50065971,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,0,2) + else + e:SetLabel(0) + c:RegisterFlagEffect(50065971,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,0,1) + end +end +function c50065971.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()~=Duel.GetTurnCount() and e:GetHandler():GetFlagEffect(50065971)>0 +end +function c50065971.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + c:ResetFlagEffect(50065971) +end +function c50065971.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c50078320.lua b/script/c50078320.lua index 36a9712d..b1bf5f38 100644 --- a/script/c50078320.lua +++ b/script/c50078320.lua @@ -1,73 +1,78 @@ ---刻印の調停者 -function c50078320.initial_effect(c) - --Announce - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c50078320.condition) - e1:SetCost(c50078320.cost) - e1:SetOperation(c50078320.operation) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(50078320,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c50078320.regtg) - e2:SetOperation(c50078320.regop) - c:RegisterEffect(e2) -end -function c50078320.condition(e,tp,eg,ep,ev,re,r,rp) - local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_ANNOUNCE) - return rp~=tp and ex and bit.band(cv,ANNOUNCE_CARD)~=0 -end -function c50078320.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c50078320.operation(e,tp,eg,ep,ev,re,r,rp) - local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_ANNOUNCE) - Duel.Hint(HINT_SELECTMSG,tp,564) - local ac=Duel.AnnounceCard(tp,cv) - Duel.ChangeTargetParam(ev,ac) -end -function c50078320.desfilter(c) - return c:IsFaceup() -end -function c50078320.regtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c50078320.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c50078320.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c50078320.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) -end -function c50078320.regop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - tc:RegisterFlagEffect(50078320,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,2) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(50078320,1)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabel(Duel.GetTurnCount()) - e1:SetLabelObject(tc) - e1:SetCondition(c50078320.descon) - e1:SetOperation(c50078320.desop) - e1:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e1,tp) - end -end -function c50078320.descon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - return Duel.GetTurnCount()~=e:GetLabel() and tc:GetFlagEffect(50078320)~=0 -end -function c50078320.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.Hint(HINT_CARD,0,50078320) - Duel.Destroy(tc,REASON_EFFECT) -end +--刻印の調停者 +function c50078320.initial_effect(c) + --Announce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c50078320.condition) + e1:SetCost(c50078320.cost) + e1:SetOperation(c50078320.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(50078320,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c50078320.regtg) + e2:SetOperation(c50078320.regop) + c:RegisterEffect(e2) +end +function c50078320.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_ANNOUNCE) + return rp~=tp and ex and bit.band(cv,ANNOUNCE_CARD+ANNOUNCE_CARD_FILTER)~=0 +end +function c50078320.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c50078320.operation(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_ANNOUNCE) + local ac=0 + Duel.Hint(HINT_SELECTMSG,tp,564) + if bit.band(cv,ANNOUNCE_CARD)~=0 then + ac=Duel.AnnounceCard(tp,cv) + else + ac=Duel.AnnounceCardFilter(tp,table.unpack(re:GetHandler().announce_filter)) + end + Duel.ChangeTargetParam(ev,ac) +end +function c50078320.desfilter(c) + return c:IsFaceup() +end +function c50078320.regtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c50078320.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c50078320.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c50078320.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) +end +function c50078320.regop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + tc:RegisterFlagEffect(50078320,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,2) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(50078320,1)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetLabelObject(tc) + e1:SetCondition(c50078320.descon) + e1:SetOperation(c50078320.desop) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + end +end +function c50078320.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return Duel.GetTurnCount()~=e:GetLabel() and tc:GetFlagEffect(50078320)~=0 +end +function c50078320.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Hint(HINT_CARD,0,50078320) + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c50088247.lua b/script/c50088247.lua index 7210c8d7..22c0e2d5 100644 --- a/script/c50088247.lua +++ b/script/c50088247.lua @@ -1,71 +1,71 @@ ---氷結界の伝道師 -function c50088247.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c50088247.spcon) - e1:SetOperation(c50088247.spop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(50088247,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCost(c50088247.spcost2) - e2:SetTarget(c50088247.sptg2) - e2:SetOperation(c50088247.spop2) - c:RegisterEffect(e2) - Duel.AddCustomActivityCounter(50088247,ACTIVITY_SPSUMMON,c50088247.counterfilter) -end -function c50088247.counterfilter(c) - return not c:IsLevelAbove(5) -end -function c50088247.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x2f) -end -function c50088247.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetCustomActivityCount(50088247,tp,ACTIVITY_SPSUMMON)==0 - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c50088247.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c50088247.spop(e,tp,eg,ep,ev,re,r,rp,c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetTarget(c50088247.sumlimit) - Duel.RegisterEffect(e1,tp) -end -function c50088247.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) - return c:IsLevelAbove(5) -end -function c50088247.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c50088247.filter(c,e,tp) - return c:IsSetCard(0x2f) and c:GetCode()~=50088247 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c50088247.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c50088247.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c50088247.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c50088247.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c50088247.spop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--氷結界の伝道師 +function c50088247.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c50088247.spcon) + e1:SetOperation(c50088247.spop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(50088247,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCost(c50088247.spcost2) + e2:SetTarget(c50088247.sptg2) + e2:SetOperation(c50088247.spop2) + c:RegisterEffect(e2) + Duel.AddCustomActivityCounter(50088247,ACTIVITY_SPSUMMON,c50088247.counterfilter) +end +function c50088247.counterfilter(c) + return not c:IsLevelAbove(5) +end +function c50088247.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x2f) +end +function c50088247.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetCustomActivityCount(50088247,tp,ACTIVITY_SPSUMMON)==0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c50088247.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c50088247.spop(e,tp,eg,ep,ev,re,r,rp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c50088247.sumlimit) + Duel.RegisterEffect(e1,tp) +end +function c50088247.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsLevelAbove(5) +end +function c50088247.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c50088247.filter(c,e,tp) + return c:IsSetCard(0x2f) and c:GetCode()~=50088247 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c50088247.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c50088247.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c50088247.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c50088247.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c50088247.spop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c501000000.lua b/script/c501000000.lua new file mode 100644 index 00000000..53c8d7c6 --- /dev/null +++ b/script/c501000000.lua @@ -0,0 +1,50 @@ +--アルエヴァ +function c501000000.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000000.ttcon) + e1:SetOperation(c501000000.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000000.ttcon) + e2:SetOperation(c501000000.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000000.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000000.illegal=true +function c501000000.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000000.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000000.tlimit(e,c) + return not c:IsRace(RACE_WINDBEAST) +end diff --git a/script/c501000001.lua b/script/c501000001.lua new file mode 100644 index 00000000..76d3d1de --- /dev/null +++ b/script/c501000001.lua @@ -0,0 +1,50 @@ +--メテオ・ザ・マッチレス +function c501000001.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000001.ttcon) + e1:SetOperation(c501000001.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000001.ttcon) + e2:SetOperation(c501000001.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000001.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000001.illegal=true +function c501000001.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000001.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000001.tlimit(e,c) + return not c:IsRace(RACE_BEASTWARRIOR) +end diff --git a/script/c501000002.lua b/script/c501000002.lua new file mode 100644 index 00000000..23a2e0de --- /dev/null +++ b/script/c501000002.lua @@ -0,0 +1,50 @@ +--破壊王ゼクゼクス +function c501000002.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000002.ttcon) + e1:SetOperation(c501000002.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000002.ttcon) + e2:SetOperation(c501000002.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000002.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000002.illegal=true +function c501000002.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000002.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000002.tlimit(e,c) + return not c:IsRace(RACE_FIEND) +end diff --git a/script/c501000003.lua b/script/c501000003.lua new file mode 100644 index 00000000..93179885 --- /dev/null +++ b/script/c501000003.lua @@ -0,0 +1,50 @@ +--永遠の女王エターニア +function c501000003.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000003.ttcon) + e1:SetOperation(c501000003.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000003.ttcon) + e2:SetOperation(c501000003.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000003.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000003.illegal=true +function c501000003.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000003.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000003.tlimit(e,c) + return not c:IsRace(RACE_FAIRY) +end diff --git a/script/c501000004.lua b/script/c501000004.lua new file mode 100644 index 00000000..8a9769f7 --- /dev/null +++ b/script/c501000004.lua @@ -0,0 +1,50 @@ +--魔導神のオブジェ +function c501000004.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000004.ttcon) + e1:SetOperation(c501000004.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000004.ttcon) + e2:SetOperation(c501000004.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000004.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000004.illegal=true +function c501000004.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000004.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000004.tlimit(e,c) + return not c:IsRace(RACE_SPELLCASTER) +end diff --git a/script/c501000005.lua b/script/c501000005.lua new file mode 100644 index 00000000..0feaab97 --- /dev/null +++ b/script/c501000005.lua @@ -0,0 +1,50 @@ +--武道神の甲冑 +function c501000005.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000005.ttcon) + e1:SetOperation(c501000005.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000005.ttcon) + e2:SetOperation(c501000005.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000005.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000005.illegal=true +function c501000005.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000005.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000005.tlimit(e,c) + return not c:IsRace(RACE_WARRIOR) +end diff --git a/script/c501000006.lua b/script/c501000006.lua new file mode 100644 index 00000000..6b4f21e0 --- /dev/null +++ b/script/c501000006.lua @@ -0,0 +1,50 @@ +--獣王キマイラ +function c501000006.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000006.ttcon) + e1:SetOperation(c501000006.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000006.ttcon) + e2:SetOperation(c501000006.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000006.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000006.illegal=true +function c501000006.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000006.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000006.tlimit(e,c) + return not c:IsRace(RACE_BEAST) +end diff --git a/script/c501000007.lua b/script/c501000007.lua new file mode 100644 index 00000000..89da0a9e --- /dev/null +++ b/script/c501000007.lua @@ -0,0 +1,50 @@ +--エンペラー・オブ・ライトニング +function c501000007.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000007.ttcon) + e1:SetOperation(c501000007.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000007.ttcon) + e2:SetOperation(c501000007.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000007.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000007.illegal=true +function c501000007.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000007.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000007.tlimit(e,c) + return not c:IsRace(RACE_THUNDER) +end diff --git a/script/c501000008.lua b/script/c501000008.lua new file mode 100644 index 00000000..f9d77337 --- /dev/null +++ b/script/c501000008.lua @@ -0,0 +1,50 @@ +--軍神テュール +function c501000008.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000008.ttcon) + e1:SetOperation(c501000008.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000008.ttcon) + e2:SetOperation(c501000008.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000008.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000008.illegal=true +function c501000008.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000008.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000008.tlimit(e,c) + return not c:IsRace(RACE_FAIRY) +end diff --git a/script/c501000009.lua b/script/c501000009.lua new file mode 100644 index 00000000..b1ce3596 --- /dev/null +++ b/script/c501000009.lua @@ -0,0 +1,50 @@ +--音響機械ローレライ +function c501000009.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000009.ttcon) + e1:SetOperation(c501000009.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000009.ttcon) + e2:SetOperation(c501000009.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000009.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000009.illegal=true +function c501000009.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000009.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000009.tlimit(e,c) + return not c:IsRace(RACE_MACHINE) +end diff --git a/script/c501000010.lua b/script/c501000010.lua new file mode 100644 index 00000000..938f1cef --- /dev/null +++ b/script/c501000010.lua @@ -0,0 +1,50 @@ +--アギバ +function c501000010.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000010.ttcon) + e1:SetOperation(c501000010.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000010.ttcon) + e2:SetOperation(c501000010.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000010.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000010.illegal=true +function c501000010.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000010.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000010.tlimit(e,c) + return not c:IsRace(RACE_FIEND) +end diff --git a/script/c501000011.lua b/script/c501000011.lua new file mode 100644 index 00000000..b07fb105 --- /dev/null +++ b/script/c501000011.lua @@ -0,0 +1,50 @@ +-- +function c501000011.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c501000011.ttcon) + e1:SetOperation(c501000011.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c501000011.ttcon) + e2:SetOperation(c501000011.ttop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --tribute limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_TRIBUTE_LIMIT) + e3:SetValue(c501000011.tlimit) + c:RegisterEffect(e3) + --match kill + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e4) +end +c501000011.illegal=true +function c501000011.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000011.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000011.tlimit(e,c) + return not c:IsRace(RACE_BEASTWARRIOR) +end diff --git a/script/c501000012.lua b/script/c501000012.lua new file mode 100644 index 00000000..1804807a --- /dev/null +++ b/script/c501000012.lua @@ -0,0 +1,19 @@ +--星屑の巨神 +function c501000012.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),aux.NonTuner(Card.IsRace,RACE_FAIRY),2) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --match kill + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e2) +end +c501000012.illegal=true diff --git a/script/c501000013.lua b/script/c501000013.lua new file mode 100644 index 00000000..0451f3b6 --- /dev/null +++ b/script/c501000013.lua @@ -0,0 +1,19 @@ +--赤色星獣グリズリー +function c501000013.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH),aux.NonTuner(Card.IsRace,RACE_BEAST),2) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --match kill + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATCH_KILL) + c:RegisterEffect(e2) +end +c501000013.illegal=true diff --git a/script/c501000014.lua b/script/c501000014.lua new file mode 100644 index 00000000..4bd42f1c --- /dev/null +++ b/script/c501000014.lua @@ -0,0 +1,28 @@ +--King Landia the Goldfang +function c501000014.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,3) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --match kill + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATCH_KILL) + e2:SetCondition(c501000014.condition) + c:RegisterEffect(e2) +end +c501000014.illegal=true +function c501000014.spfilter(c) + return c:IsRace(RACE_BEASTWARRIOR) +end +function c501000014.condition(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetMaterial() + return + g:IsExists(c501000014.spfilter,1,nil) +end diff --git a/script/c501000015.lua b/script/c501000015.lua new file mode 100644 index 00000000..84c9479c --- /dev/null +++ b/script/c501000015.lua @@ -0,0 +1,28 @@ +--銀冠の女王ネリア +function c501000015.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,3) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --match kill + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATCH_KILL) + e2:SetCondition(c501000015.condition) + c:RegisterEffect(e2) +end +c501000015.illegal=true +function c501000015.spfilter(c) + return c:IsRace(RACE_PLANT) +end +function c501000015.condition(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetMaterial() + return + g:IsExists(c501000015.spfilter,1,nil) +end diff --git a/script/c501000016.lua b/script/c501000016.lua new file mode 100644 index 00000000..4479f502 --- /dev/null +++ b/script/c501000016.lua @@ -0,0 +1,28 @@ +--伝説の白き龍 +function c501000016.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,3) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --match kill + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATCH_KILL) + e2:SetCondition(c501000016.condition) + c:RegisterEffect(e2) +end +c501000016.illegal=true +function c501000016.spfilter(c) + return c:IsRace(RACE_DRAGON) +end +function c501000016.condition(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetMaterial() + return + g:IsExists(c501000016.spfilter,1,nil) +end diff --git a/script/c501000017.lua b/script/c501000017.lua new file mode 100644 index 00000000..5827725a --- /dev/null +++ b/script/c501000017.lua @@ -0,0 +1,28 @@ +--伝説の白き龍 +function c501000017.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,3) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --match kill + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATCH_KILL) + e2:SetCondition(c501000017.condition) + c:RegisterEffect(e2) +end +c501000017.illegal=true +function c501000017.spfilter(c) + return c:IsRace(RACE_SPELLCASTER) +end +function c501000017.condition(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetMaterial() + return + g:IsExists(c501000017.spfilter,1,nil) +end diff --git a/script/c501000018.lua b/script/c501000018.lua new file mode 100644 index 00000000..e8fcf15b --- /dev/null +++ b/script/c501000018.lua @@ -0,0 +1,28 @@ +--E☆HERO Pit Boss +function c501000018.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,3) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --match kill + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATCH_KILL) + e2:SetCondition(c501000018.condition) + c:RegisterEffect(e2) +end +c501000018.illegal=true +function c501000018.spfilter(c) + return c:IsRace(RACE_SPELLCASTER) +end +function c501000018.condition(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetMaterial() + return + g:IsExists(c501000018.spfilter,1,nil) +end diff --git a/script/c501000019.lua b/script/c501000019.lua new file mode 100644 index 00000000..e10826f4 --- /dev/null +++ b/script/c501000019.lua @@ -0,0 +1,28 @@ +--E☆HERO Pit Boss +function c501000019.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,3) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --match kill + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATCH_KILL) + e2:SetCondition(c501000019.condition) + c:RegisterEffect(e2) +end +c501000019.illegal=true +function c501000019.spfilter(c) + return c:IsRace(RACE_MACHINE) +end +function c501000019.condition(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetMaterial() + return + g:IsExists(c501000019.spfilter,1,nil) +end diff --git a/script/c501000078.lua b/script/c501000078.lua new file mode 100644 index 00000000..f63e3112 --- /dev/null +++ b/script/c501000078.lua @@ -0,0 +1,72 @@ +--Leonardo's Silver Skyship +function c501000078.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --match winner + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c501000078.cost) + e2:SetTarget(c501000078.tg) + e2:SetOperation(c501000078.op) + c:RegisterEffect(e2) +end +c501000078.illegal=true +function c501000078.cfilter(c) + return c:IsRace(RACE_MACHINE) and c:IsType(TYPE_PENDULUM) and c:IsAbleToRemoveAsCost() +end +function c501000078.filter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and (not e or c:IsCanBeEffectTarget(e)) + and (not tp or Duel.IsExistingMatchingCard(c501000078.cfilter,tp,LOCATION_MZONE,0,3,c)) +end +function c501000078.nmfilter(c) + return not c:IsRace(RACE_MACHINE) +end +function c501000078.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local pentg=Duel.GetMatchingGroup(c501000078.filter,tp,LOCATION_MZONE,0,nil,e,tp) + local pct=pentg:GetCount() + if chk==0 then return pct>0 end + local sg=Duel.GetMatchingGroup(c501000078.cfilter,tp,LOCATION_MZONE,0,nil) + local g + if pct==1 then + sg:Sub(pentg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pentg:FilterCount(c501000078.nmfilter,nil)>0 or pct>=4 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pct==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,2,2,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,1,1,nil) + g:Merge(g2) + elseif pct==3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,1,1,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,2,2,nil) + g:Merge(g2) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c501000078.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c501000078.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c501000078.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c501000078.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c501000078.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MATCH_KILL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c501000079.lua b/script/c501000079.lua new file mode 100644 index 00000000..9f3a5cf8 --- /dev/null +++ b/script/c501000079.lua @@ -0,0 +1,128 @@ +--The Twin Kings, Founders of the Empire +function c501000079.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --match winner + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c501000079.cost) + e2:SetTarget(c501000079.tg) + e2:SetOperation(c501000079.op) + c:RegisterEffect(e2) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(c501000079.splimit) + c:RegisterEffect(e3) + --summon with 3 tribute + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e4:SetCondition(c501000079.ttcon) + e4:SetOperation(c501000079.ttop) + e4:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e4) + --tribute limit + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_TRIBUTE_LIMIT) + e5:SetValue(c501000079.tlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_LIMIT_SET_PROC) + e6:SetCondition(c501000079.setcon) + c:RegisterEffect(e6) + --match kill + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_MATCH_KILL) + e7:SetCondition(c501000079.con) + c:RegisterEffect(e7) +end +c501000079.illegal=true +function c501000079.cfilter(c) + return c:IsRace(RACE_BEAST) and c:IsType(TYPE_PENDULUM) and c:IsAbleToRemoveAsCost() +end +function c501000079.filter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and (not e or c:IsCanBeEffectTarget(e)) + and (not tp or Duel.IsExistingMatchingCard(c501000079.cfilter,tp,LOCATION_MZONE,0,3,c)) +end +function c501000079.nbfilter(c) + return not c:IsRace(RACE_BEAST) +end +function c501000079.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local pentg=Duel.GetMatchingGroup(c501000079.filter,tp,LOCATION_MZONE,0,nil,e,tp) + local pct=pentg:GetCount() + if chk==0 then return pct>0 end + local sg=Duel.GetMatchingGroup(c501000079.cfilter,tp,LOCATION_MZONE,0,nil) + local g + if pct==1 then + sg:Sub(pentg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pentg:FilterCount(c501000079.nbfilter,nil)>0 or pct>=4 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pct==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,2,2,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,1,1,nil) + g:Merge(g2) + elseif pct==3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,1,1,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,2,2,nil) + g:Merge(g2) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c501000079.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c501000079.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c501000079.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c501000079.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c501000079.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MATCH_KILL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c501000079.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c501000079.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000079.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000079.tlimit(e,c) + return not c:IsRace(RACE_BEAST) +end +function c501000079.setcon(e,c) + if not c then return true end + return false +end +function c501000079.con(e) + local tp=e:GetHandler():GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 +end diff --git a/script/c501000080.lua b/script/c501000080.lua new file mode 100644 index 00000000..ae4573c1 --- /dev/null +++ b/script/c501000080.lua @@ -0,0 +1,128 @@ +--Kuzunoha, the Onmyojin +function c501000080.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --match winner + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c501000080.cost) + e2:SetTarget(c501000080.tg) + e2:SetOperation(c501000080.op) + c:RegisterEffect(e2) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(c501000080.splimit) + c:RegisterEffect(e3) + --summon with 3 tribute + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e4:SetCondition(c501000080.ttcon) + e4:SetOperation(c501000080.ttop) + e4:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e4) + --tribute limit + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_TRIBUTE_LIMIT) + e5:SetValue(c501000080.tlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_LIMIT_SET_PROC) + e6:SetCondition(c501000080.setcon) + c:RegisterEffect(e6) + --match kill + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_MATCH_KILL) + e7:SetCondition(c501000080.con) + c:RegisterEffect(e7) +end +c501000080.illegal=true +function c501000080.cfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsType(TYPE_PENDULUM) and c:IsAbleToRemoveAsCost() +end +function c501000080.filter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and (not e or c:IsCanBeEffectTarget(e)) + and (not tp or Duel.IsExistingMatchingCard(c501000080.cfilter,tp,LOCATION_MZONE,0,3,c)) +end +function c501000080.nsfilter(c) + return not c:IsRace(RACE_SPELLCASTER) +end +function c501000080.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local pentg=Duel.GetMatchingGroup(c501000080.filter,tp,LOCATION_MZONE,0,nil,e,tp) + local pct=pentg:GetCount() + if chk==0 then return pct>0 end + local sg=Duel.GetMatchingGroup(c501000080.cfilter,tp,LOCATION_MZONE,0,nil) + local g + if pct==1 then + sg:Sub(pentg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pentg:FilterCount(c501000080.nsfilter,nil)>0 or pct>=4 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pct==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,2,2,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,1,1,nil) + g:Merge(g2) + elseif pct==3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,1,1,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,2,2,nil) + g:Merge(g2) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c501000080.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c501000080.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c501000080.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c501000080.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c501000080.op(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_MATCH_KILL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c501000080.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c501000080.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000080.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000080.tlimit(e,c) + return not c:IsRace(RACE_SPELLCASTER) +end +function c501000080.setcon(e,c) + if not c then return true end + return false +end +function c501000080.con(e) + local tp=e:GetHandler():GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 +end diff --git a/script/c501000081.lua b/script/c501000081.lua new file mode 100644 index 00000000..95bddc5b --- /dev/null +++ b/script/c501000081.lua @@ -0,0 +1,72 @@ +--Sakyo, Swordmaster of the Far East +function c501000081.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --match winner + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c501000081.cost) + e2:SetTarget(c501000081.tg) + e2:SetOperation(c501000081.op) + c:RegisterEffect(e2) +end +c501000081.illegal=true +function c501000081.cfilter(c) + return c:IsRace(RACE_WARRIOR) and c:IsType(TYPE_PENDULUM) and c:IsAbleToRemoveAsCost() +end +function c501000081.filter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and (not e or c:IsCanBeEffectTarget(e)) + and (not tp or Duel.IsExistingMatchingCard(c501000081.cfilter,tp,LOCATION_MZONE,0,3,c)) +end +function c501000081.nwfilter(c) + return not c:IsRace(RACE_WARRIOR) +end +function c501000081.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local pentg=Duel.GetMatchingGroup(c501000081.filter,tp,LOCATION_MZONE,0,nil,e,tp) + local pct=pentg:GetCount() + if chk==0 then return pct>0 end + local sg=Duel.GetMatchingGroup(c501000081.cfilter,tp,LOCATION_MZONE,0,nil) + local g + if pct==1 then + sg:Sub(pentg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pentg:FilterCount(c501000081.nwfilter,nil)>0 or pct>=4 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pct==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,2,2,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,1,1,nil) + g:Merge(g2) + elseif pct==3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,1,1,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,2,2,nil) + g:Merge(g2) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c501000081.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c501000081.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c501000081.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c501000081.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c501000081.op(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_MATCH_KILL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c501000082.lua b/script/c501000082.lua new file mode 100644 index 00000000..2980003c --- /dev/null +++ b/script/c501000082.lua @@ -0,0 +1,72 @@ +--Shelga, the Tri-Warlord +function c501000082.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --match winner + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c501000082.cost) + e2:SetTarget(c501000082.tg) + e2:SetOperation(c501000082.op) + c:RegisterEffect(e2) +end +c501000082.illegal=true +function c501000082.cfilter(c) + return c:IsRace(RACE_PSYCHO) and c:IsType(TYPE_PENDULUM) and c:IsAbleToRemoveAsCost() +end +function c501000082.filter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and (not e or c:IsCanBeEffectTarget(e)) + and (not tp or Duel.IsExistingMatchingCard(c501000082.cfilter,tp,LOCATION_MZONE,0,3,c)) +end +function c501000082.nbfilter(c) + return not c:IsRace(RACE_PSYCHO) +end +function c501000082.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local pentg=Duel.GetMatchingGroup(c501000082.filter,tp,LOCATION_MZONE,0,nil,e,tp) + local pct=pentg:GetCount() + if chk==0 then return pct>0 end + local sg=Duel.GetMatchingGroup(c501000082.cfilter,tp,LOCATION_MZONE,0,nil) + local g + if pct==1 then + sg:Sub(pentg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pentg:FilterCount(c501000082.nbfilter,nil)>0 or pct>=4 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pct==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,2,2,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,1,1,nil) + g:Merge(g2) + elseif pct==3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,1,1,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,2,2,nil) + g:Merge(g2) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c501000082.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c501000082.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c501000082.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c501000082.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c501000082.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MATCH_KILL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c501000083.lua b/script/c501000083.lua new file mode 100644 index 00000000..a0ddce4b --- /dev/null +++ b/script/c501000083.lua @@ -0,0 +1,128 @@ +--Juno, the Celestial Goddess +function c501000083.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --match winner + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c501000083.cost) + e2:SetTarget(c501000083.tg) + e2:SetOperation(c501000083.op) + c:RegisterEffect(e2) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(c501000083.splimit) + c:RegisterEffect(e3) + --summon with 3 tribute + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e4:SetCondition(c501000083.ttcon) + e4:SetOperation(c501000083.ttop) + e4:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e4) + --tribute limit + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_TRIBUTE_LIMIT) + e5:SetValue(c501000083.tlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_LIMIT_SET_PROC) + e6:SetCondition(c501000083.setcon) + c:RegisterEffect(e6) + --match kill + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_MATCH_KILL) + e7:SetCondition(c501000083.con) + c:RegisterEffect(e7) +end +c501000083.illegal=true +function c501000083.cfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsType(TYPE_PENDULUM) and c:IsAbleToRemoveAsCost() +end +function c501000083.filter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and (not e or c:IsCanBeEffectTarget(e)) + and (not tp or Duel.IsExistingMatchingCard(c501000083.cfilter,tp,LOCATION_MZONE,0,3,c)) +end +function c501000083.nsfilter(c) + return not c:IsRace(RACE_SPELLCASTER) +end +function c501000083.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local pentg=Duel.GetMatchingGroup(c501000083.filter,tp,LOCATION_MZONE,0,nil,e,tp) + local pct=pentg:GetCount() + if chk==0 then return pct>0 end + local sg=Duel.GetMatchingGroup(c501000083.cfilter,tp,LOCATION_MZONE,0,nil) + local g + if pct==1 then + sg:Sub(pentg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pentg:FilterCount(c501000083.nsfilter,nil)>0 or pct>=4 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:Select(tp,3,3,nil) + elseif pct==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,2,2,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,1,1,nil) + g:Merge(g2) + elseif pct==3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=sg:FilterSelect(tp,Card.IsFacedown,1,1,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g2=sg:Select(tp,2,2,nil) + g:Merge(g2) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c501000083.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c501000083.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c501000083.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c501000083.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c501000083.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MATCH_KILL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c501000083.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c501000083.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c501000083.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c501000083.tlimit(e,c) + return not c:IsRace(RACE_SPELLCASTER) +end +function c501000083.setcon(e,c) + if not c then return true end + return false +end +function c501000083.con(e) + local tp=e:GetHandler():GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 +end diff --git a/script/c5010422.lua b/script/c5010422.lua index d8786122..42c831cf 100644 --- a/script/c5010422.lua +++ b/script/c5010422.lua @@ -1,30 +1,30 @@ ---占術姫ウィジャモリガン -function c5010422.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetOperation(c5010422.flipop) - c:RegisterEffect(e1) -end -function c5010422.flipop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - --destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetOperation(c5010422.desop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c5010422.desfilter(c) - return c:IsDefensePos() -end -function c5010422.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c5010422.desfilter,tp,0,LOCATION_MZONE,nil) - if g:GetCount()>0 then - Duel.Hint(HINT_CARD,0,5010422) - local ct=Duel.Destroy(g,REASON_EFFECT) - Duel.Damage(1-tp,ct*500,REASON_EFFECT) - end -end +--占術姫ウィジャモリガン +function c5010422.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c5010422.flipop) + c:RegisterEffect(e1) +end +function c5010422.flipop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c5010422.desop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c5010422.desfilter(c) + return c:IsDefensePos() +end +function c5010422.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c5010422.desfilter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_CARD,0,5010422) + local ct=Duel.Destroy(g,REASON_EFFECT) + Duel.Damage(1-tp,ct*500,REASON_EFFECT) + end +end diff --git a/script/c5014629.lua b/script/c5014629.lua index da7840c1..870d446c 100644 --- a/script/c5014629.lua +++ b/script/c5014629.lua @@ -7,6 +7,7 @@ function c5014629.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(5014629,0)) e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c50152549.lua b/script/c50152549.lua index 55d82856..4530f75c 100644 --- a/script/c50152549.lua +++ b/script/c50152549.lua @@ -1,43 +1,9 @@ --しびれ薬 function c50152549.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(c50152549.target) - e1:SetOperation(c50152549.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE)) --atklimit local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_CANNOT_ATTACK) c:RegisterEffect(e2) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c50152549.eqlimit) - c:RegisterEffect(e4) -end -function c50152549.eqlimit(e,c) - return not c:IsRace(RACE_MACHINE) -end -function c50152549.filter(c) - return c:IsFaceup() and not c:IsRace(RACE_MACHINE) -end -function c50152549.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c50152549.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c50152549.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c50152549.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c50152549.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 diff --git a/script/c50155385.lua b/script/c50155385.lua index 7427d60b..fbf02112 100644 --- a/script/c50155385.lua +++ b/script/c50155385.lua @@ -1,43 +1,43 @@ ---スピリチューアル・ウィスパー -function c50155385.initial_effect(c) - --battle indes - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) - e1:SetCountLimit(1) - e1:SetValue(c50155385.valcon) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(50155385,0)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c50155385.thcon) - e2:SetTarget(c50155385.thtg) - e2:SetOperation(c50155385.thop) - c:RegisterEffect(e2) -end -function c50155385.valcon(e,re,r,rp) - return bit.band(r,REASON_BATTLE)~=0 -end -function c50155385.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM -end -function c50155385.filter(c) - return c:IsType(TYPE_RITUAL) and c:IsAbleToHand() -end -function c50155385.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c50155385.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c50155385.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c50155385.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--スピリチューアル・ウィスパー +function c50155385.initial_effect(c) + --battle indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetCountLimit(1) + e1:SetValue(c50155385.valcon) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(50155385,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c50155385.thcon) + e2:SetTarget(c50155385.thtg) + e2:SetOperation(c50155385.thop) + c:RegisterEffect(e2) +end +function c50155385.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c50155385.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c50155385.filter(c) + return c:IsType(TYPE_RITUAL) and c:IsAbleToHand() +end +function c50155385.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c50155385.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c50155385.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c50155385.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c50185950.lua b/script/c50185950.lua index ef4d163e..c7281cf3 100644 --- a/script/c50185950.lua +++ b/script/c50185950.lua @@ -1,46 +1,46 @@ ---サクリボー -function c50185950.initial_effect(c) - --draw - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(50185950,0)) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_RELEASE) - e1:SetTarget(c50185950.drtg) - e1:SetOperation(c50185950.drop) - c:RegisterEffect(e1) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_GRAVE) - e2:SetTarget(c50185950.reptg) - e2:SetValue(c50185950.repval) - e2:SetOperation(c50185950.repop) - c:RegisterEffect(e2) -end -function c50185950.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c50185950.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end -function c50185950.filter(c,tp) - return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) - and c:IsReason(REASON_BATTLE) and not c:IsReason(REASON_REPLACE) -end -function c50185950.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c50185950.filter,1,nil,tp) and e:GetHandler():IsAbleToRemove() end - return Duel.SelectYesNo(tp,aux.Stringid(50185950,1)) -end -function c50185950.repval(e,c) - return c50185950.filter(c,e:GetHandlerPlayer()) -end -function c50185950.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT+REASON_REPLACE) -end +--サクリボー +function c50185950.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(50185950,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_RELEASE) + e1:SetTarget(c50185950.drtg) + e1:SetOperation(c50185950.drop) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_GRAVE) + e2:SetTarget(c50185950.reptg) + e2:SetValue(c50185950.repval) + e2:SetOperation(c50185950.repop) + c:RegisterEffect(e2) +end +function c50185950.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c50185950.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c50185950.filter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) + and c:IsReason(REASON_BATTLE) and not c:IsReason(REASON_REPLACE) +end +function c50185950.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c50185950.filter,1,nil,tp) and e:GetHandler():IsAbleToRemove() end + return Duel.SelectYesNo(tp,aux.Stringid(50185950,1)) +end +function c50185950.repval(e,c) + return c50185950.filter(c,e:GetHandlerPlayer()) +end +function c50185950.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c50260683.lua b/script/c50260683.lua index 45778582..0829e4e0 100644 --- a/script/c50260683.lua +++ b/script/c50260683.lua @@ -9,7 +9,7 @@ function c50260683.initial_effect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e1:SetHintTiming(TIMING_DAMAGE_STEP) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c5026221.lua b/script/c5026221.lua index 64b46021..3a536f7d 100644 --- a/script/c5026221.lua +++ b/script/c5026221.lua @@ -1,63 +1,63 @@ ---神星なる波動 -function c5026221.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c5026221.target1) - e1:SetOperation(c5026221.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(5026221,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCondition(c5026221.condition) - e2:SetTarget(c5026221.target2) - e2:SetOperation(c5026221.operation) - e2:SetLabel(1) - c:RegisterEffect(e2) -end -function c5026221.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local tn=Duel.GetTurnPlayer() - local ph=Duel.GetCurrentPhase() - if ((tn==tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2)) or (tn~=tp and (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE))) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c5026221.filter,tp,LOCATION_HAND,0,1,nil,e,tp) - and Duel.SelectYesNo(tp,94) then - e:GetHandler():RegisterFlagEffect(5026221,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) - end -end -function c5026221.condition(e,tp,eg,ep,ev,re,r,rp) - local ph=Duel.GetCurrentPhase() - if Duel.GetTurnPlayer()==tp then - return ph==PHASE_MAIN1 or ph==PHASE_MAIN2 - else - return ph==PHASE_BATTLE - end -end -function c5026221.filter(c,e,tp) - return c:IsSetCard(0x9c) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c5026221.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(5026221)==0 - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c5026221.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - e:GetHandler():RegisterFlagEffect(5026221,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c5026221.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():GetFlagEffect(5026221)==0 or not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c5026221.filter,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 c5026221.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c5026221.target1) + e1:SetOperation(c5026221.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5026221,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c5026221.condition) + e2:SetTarget(c5026221.target2) + e2:SetOperation(c5026221.operation) + e2:SetLabel(1) + c:RegisterEffect(e2) +end +function c5026221.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tn=Duel.GetTurnPlayer() + local ph=Duel.GetCurrentPhase() + if ((tn==tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2)) or (tn~=tp and (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE))) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c5026221.filter,tp,LOCATION_HAND,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,94) then + e:GetHandler():RegisterFlagEffect(5026221,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) + end +end +function c5026221.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + if Duel.GetTurnPlayer()==tp then + return ph==PHASE_MAIN1 or ph==PHASE_MAIN2 + else + return ph==PHASE_BATTLE + end +end +function c5026221.filter(c,e,tp) + return c:IsSetCard(0x9c) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c5026221.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(5026221)==0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c5026221.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + e:GetHandler():RegisterFlagEffect(5026221,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c5026221.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(5026221)==0 or not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c5026221.filter,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 diff --git a/script/c50277973.lua b/script/c50277973.lua index 62295812..ce5ed551 100644 --- a/script/c50277973.lua +++ b/script/c50277973.lua @@ -1,58 +1,58 @@ ---鏡像のスワンプマン -function c50277973.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c50277973.target) - e1:SetOperation(c50277973.activate) - c:RegisterEffect(e1) -end -function c50277973.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local rac=0 - local crac=1 - for irac=0,23 do - local catt=1 - for iatt=0,7 do - if Duel.IsPlayerCanSpecialSummonMonster(tp,50277973,0,0x11,1800,1000,4,crac,catt) then - rac=rac+crac - break - end - catt=catt*2 - end - crac=crac*2 - end - e:SetLabel(rac) - return rac~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - end - Duel.Hint(HINT_SELECTMSG,tp,563) - local crac=Duel.AnnounceRace(tp,1,e:GetLabel()) - local att=0 - local catt=1 - for iatt=0,7 do - if Duel.IsPlayerCanSpecialSummonMonster(tp,50277973,0,0x11,1800,1000,4,crac,catt) then - att=att+catt - end - catt=catt*2 - end - Duel.Hint(HINT_SELECTMSG,tp,562) - catt=Duel.AnnounceAttribute(tp,1,att) - e:SetLabel(crac) - Duel.SetTargetParam(catt) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c50277973.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local rac=e:GetLabel() - local att=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,50277973,0,0x11,1800,1000,4,rac,att) then return end - c:AddMonsterAttribute(TYPE_NORMAL+TYPE_TRAP,att,rac,0,0,0) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - Duel.SpecialSummonComplete() -end +--鏡像のスワンプマン +function c50277973.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c50277973.target) + e1:SetOperation(c50277973.activate) + c:RegisterEffect(e1) +end +function c50277973.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local rac=0 + local crac=1 + for irac=0,23 do + local catt=1 + for iatt=0,7 do + if Duel.IsPlayerCanSpecialSummonMonster(tp,50277973,0,0x11,1800,1000,4,crac,catt) then + rac=rac+crac + break + end + catt=catt*2 + end + crac=crac*2 + end + e:SetLabel(rac) + return rac~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + end + Duel.Hint(HINT_SELECTMSG,tp,563) + local crac=Duel.AnnounceRace(tp,1,e:GetLabel()) + local att=0 + local catt=1 + for iatt=0,7 do + if Duel.IsPlayerCanSpecialSummonMonster(tp,50277973,0,0x11,1800,1000,4,crac,catt) then + att=att+catt + end + catt=catt*2 + end + Duel.Hint(HINT_SELECTMSG,tp,562) + catt=Duel.AnnounceAttribute(tp,1,att) + e:SetLabel(crac) + Duel.SetTargetParam(catt) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c50277973.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local rac=e:GetLabel() + local att=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,50277973,0,0x11,1800,1000,4,rac,att) then return end + c:AddMonsterAttribute(TYPE_NORMAL+TYPE_TRAP,att,rac,0,0,0) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + Duel.SpecialSummonComplete() +end diff --git a/script/c50282757.lua b/script/c50282757.lua index 13b8c5ea..a265ece2 100644 --- a/script/c50282757.lua +++ b/script/c50282757.lua @@ -1,55 +1,56 @@ ---E-HERO ヘル・スナイパー -function c50282757.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,84327329,58932615,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c50282757.splimit) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(50282757,0)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCondition(c50282757.condition) - e2:SetTarget(c50282757.target) - e2:SetOperation(c50282757.operation) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetValue(c50282757.indesval) - c:RegisterEffect(e3) -end -c50282757.dark_calling=true -function c50282757.splimit(e,se,sp,st) - return st==SUMMON_TYPE_FUSION+0x10 -end -function c50282757.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPosition(POS_FACEUP_DEFENSE) and Duel.GetTurnPlayer()==tp -end -function c50282757.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,1000) -end -function c50282757.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c50282757.indesval(e,re) - return re:IsActiveType(TYPE_SPELL) -end +--E-HERO ヘル・スナイパー +function c50282757.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,84327329,58932615,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c50282757.splimit) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(50282757,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c50282757.condition) + e2:SetTarget(c50282757.target) + e2:SetOperation(c50282757.operation) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(c50282757.indesval) + c:RegisterEffect(e3) +end +c50282757.material_setcode=0x8 +c50282757.dark_calling=true +function c50282757.splimit(e,se,sp,st) + return st==SUMMON_TYPE_FUSION+0x10 +end +function c50282757.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPosition(POS_FACEUP_DEFENSE) and Duel.GetTurnPlayer()==tp +end +function c50282757.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,1000) +end +function c50282757.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c50282757.indesval(e,re) + return re:IsActiveType(TYPE_SPELL) +end diff --git a/script/c50287060.lua b/script/c50287060.lua index f1e8f104..aeb8ebf0 100644 --- a/script/c50287060.lua +++ b/script/c50287060.lua @@ -1,45 +1,45 @@ ---暗黒魔族ギルファー・デーモン -function c50287060.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(50287060,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c50287060.eqtg) - e1:SetOperation(c50287060.eqop) - c:RegisterEffect(e1) -end -function c50287060.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 - and 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) -end -function c50287060.eqlimit(e,c) - return e:GetOwner()==c -end -function c50287060.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc,true) - --Add Equip limit - local e1=Effect.CreateEffect(tc) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c50287060.eqlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(-500) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - end -end +--暗黒魔族ギルファー・デーモン +function c50287060.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(50287060,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c50287060.eqtg) + e1:SetOperation(c50287060.eqop) + c:RegisterEffect(e1) +end +function c50287060.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 + and 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) +end +function c50287060.eqlimit(e,c) + return e:GetOwner()==c +end +function c50287060.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc,true) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c50287060.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-500) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end diff --git a/script/c50321796.lua b/script/c50321796.lua index 21c293e5..04d6a33a 100644 --- a/script/c50321796.lua +++ b/script/c50321796.lua @@ -10,6 +10,7 @@ function c50321796.initial_effect(c) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,50321796) e1:SetCost(c50321796.cost) e1:SetTarget(c50321796.target) e1:SetOperation(c50321796.operation) @@ -20,7 +21,7 @@ function c50321796.costfilter(c) end function c50321796.cost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(c50321796.costfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end - local rt=Duel.GetTargetCount(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + local rt=Duel.GetTargetCount(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,nil) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) local cg=Duel.SelectMatchingCard(tp,c50321796.costfilter,tp,LOCATION_HAND,0,1,rt,nil) Duel.SendtoGrave(cg,REASON_COST+REASON_DISCARD) @@ -28,11 +29,11 @@ function c50321796.cost(e,tp,eg,ep,ev,re,r,rp,chk) end function c50321796.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end local ct=e:GetLabel() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local eg=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,ct,ct,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,eg,ct,0,0) + local tg=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,ct,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tg,ct,0,0) end function c50321796.operation(e,tp,eg,ep,ev,re,r,rp,chk) local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) diff --git a/script/c50407691.lua b/script/c50407691.lua index 48d632bd..979f6519 100644 --- a/script/c50407691.lua +++ b/script/c50407691.lua @@ -1,44 +1,44 @@ ---イグナイト・ライオット -function c50407691.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c50407691.thcon) - e2:SetTarget(c50407691.thtg) - e2:SetOperation(c50407691.thop) - c:RegisterEffect(e2) -end -function c50407691.thcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return pc and pc:IsSetCard(0xc8) -end -function c50407691.filter(c) - return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() -end -function c50407691.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if chk==0 then return Duel.IsExistingMatchingCard(c50407691.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - local g=Group.FromCards(c,pc) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c50407691.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if not pc then return end - local dg=Group.FromCards(c,pc) - if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c50407691.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--イグナイト・ライオット +function c50407691.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c50407691.thcon) + e2:SetTarget(c50407691.thtg) + e2:SetOperation(c50407691.thop) + c:RegisterEffect(e2) +end +function c50407691.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsSetCard(0xc8) +end +function c50407691.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c50407691.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if chk==0 then return Duel.IsExistingMatchingCard(c50407691.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c50407691.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local dg=Group.FromCards(c,pc) + if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c50407691.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c50418970.lua b/script/c50418970.lua index 99ebb1e0..6a1f48d4 100644 --- a/script/c50418970.lua +++ b/script/c50418970.lua @@ -1,21 +1,6 @@ --スピリット・バーナー function c50418970.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(c50418970.target) - e1:SetOperation(c50418970.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) + aux.AddEquipProcedure(c) --pos local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(50418970,0)) @@ -49,19 +34,6 @@ function c50418970.initial_effect(c) e5:SetOperation(c50418970.retop) c:RegisterEffect(e5) end -function c50418970.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 c50418970.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 c50418970.postg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetEquipTarget():IsAttackPos() end end diff --git a/script/c50433147.lua b/script/c50433147.lua index a7cfb749..c8413d4e 100644 --- a/script/c50433147.lua +++ b/script/c50433147.lua @@ -1,45 +1,45 @@ ---極星の輝き -function c50433147.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --battle indestructable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c50433147.indtg) - e2:SetValue(1) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(50433147,0)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_DESTROYED) - e3:SetCondition(c50433147.descon) - e3:SetTarget(c50433147.destg) - e3:SetOperation(c50433147.desop) - c:RegisterEffect(e3) -end -function c50433147.indtg(e,c) - return c:IsSetCard(0x42) -end -function c50433147.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c50433147.desfilter(c) - return c:IsFaceup() and c:IsSetCard(0x42) -end -function c50433147.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c50433147.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c50433147.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c50433147.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end +--極星の輝き +function c50433147.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c50433147.indtg) + e2:SetValue(1) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(50433147,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c50433147.descon) + e3:SetTarget(c50433147.destg) + e3:SetOperation(c50433147.desop) + c:RegisterEffect(e3) +end +function c50433147.indtg(e,c) + return c:IsSetCard(0x42) +end +function c50433147.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c50433147.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0x42) +end +function c50433147.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c50433147.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c50433147.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c50433147.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c50449881.lua b/script/c50449881.lua index c7dedbee..ef36afbd 100644 --- a/script/c50449881.lua +++ b/script/c50449881.lua @@ -3,10 +3,10 @@ function c50449881.initial_effect(c) --xyz summon aux.AddXyzProcedure(c,nil,5,2) c:EnableReviveLimit() - --spsummon + --second attack local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(50449881,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c50470982.lua b/script/c50470982.lua index 3c22eb89..0c706daf 100644 --- a/script/c50470982.lua +++ b/script/c50470982.lua @@ -1,23 +1,23 @@ ---運命の分かれ道 -function c50470982.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW+CATEGORY_COIN) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c50470982.target) - e1:SetOperation(c50470982.activate) - c:RegisterEffect(e1) -end -function c50470982.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,PLAYER_ALL,1) -end -function c50470982.activate(e,tp,eg,ep,ev,re,r,rp) - local res=Duel.TossCoin(tp,1) - if res==1 then Duel.Recover(tp,2000,REASON_EFFECT) - else Duel.Damage(tp,2000,REASON_EFFECT) end - res=Duel.TossCoin(1-tp,1) - if res==1 then Duel.Recover(1-tp,2000,REASON_EFFECT) - else Duel.Damage(1-tp,2000,REASON_EFFECT) end -end +--運命の分かれ道 +function c50470982.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c50470982.target) + e1:SetOperation(c50470982.activate) + c:RegisterEffect(e1) +end +function c50470982.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,PLAYER_ALL,1) +end +function c50470982.activate(e,tp,eg,ep,ev,re,r,rp) + local res=Duel.TossCoin(tp,1) + if res==1 then Duel.Recover(tp,2000,REASON_EFFECT) + else Duel.Damage(tp,2000,REASON_EFFECT) end + res=Duel.TossCoin(1-tp,1) + if res==1 then Duel.Recover(1-tp,2000,REASON_EFFECT) + else Duel.Damage(1-tp,2000,REASON_EFFECT) end +end diff --git a/script/c50485594.lua b/script/c50485594.lua index 9f2ae729..5f93c2b7 100644 --- a/script/c50485594.lua +++ b/script/c50485594.lua @@ -1,149 +1,149 @@ ---レスキューラット -function c50485594.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(50485594,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1,50485594+EFFECT_COUNT_CODE_DUEL) - e2:SetCost(c50485594.thcost) - e2:SetTarget(c50485594.thtg) - e2:SetOperation(c50485594.thop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetOperation(c50485594.regop) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(50485594,1)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_MZONE) - e4:SetCost(c50485594.spcost) - e4:SetCondition(c50485594.spcon) - e4:SetTarget(c50485594.sptg) - e4:SetOperation(c50485594.spop) - c:RegisterEffect(e4) -end -function c50485594.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c50485594.filter(c) - return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() -end -function c50485594.filter2(c,g) - return g:IsExists(Card.IsCode,1,c,c:GetCode()) -end -function c50485594.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=Duel.GetMatchingGroup(c50485594.filter,tp,LOCATION_EXTRA,0,nil) - return g:IsExists(c50485594.filter2,1,nil,g) - end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_EXTRA) -end -function c50485594.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c50485594.filter,tp,LOCATION_EXTRA,0,nil) - local sg=g:Filter(c50485594.filter2,nil,g) - if sg:GetCount()==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local hg1=sg:Select(tp,1,1,nil) - local hg2=sg:Filter(Card.IsCode,hg1:GetFirst(),hg1:GetFirst():GetCode()) - hg1:AddCard(hg2:GetFirst()) - Duel.SendtoHand(hg1,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,hg1) -end -function c50485594.regop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(50485594,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) -end -function c50485594.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(50485594)~=0 -end -function c50485594.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c50485594.spfilter(c,e,tp) - return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsLevelBelow(5) - and Duel.IsExistingMatchingCard(c50485594.spfilter2,tp,LOCATION_DECK,0,2,nil,c:GetCode(),e,tp) -end -function c50485594.spfilter2(c,code,e,tp) - return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c50485594.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c50485594.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) -end -function c50485594.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectMatchingCard(tp,c50485594.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) - if g:GetCount()==0 then return end - local code=g:GetFirst():GetCode() - local dg=Duel.GetMatchingGroup(c50485594.spfilter2,tp,LOCATION_DECK,0,nil,code,e,tp) - if dg:GetCount()>1 then - local c=e:GetHandler() - local fid=c:GetFieldID() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg1=dg:Select(tp,1,1,nil) - local tc1=sg1:GetFirst() - local sg2=dg:Filter(Card.IsCode,tc1,tc1:GetCode()) - local tc2=sg2:GetFirst() - Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) - tc1:RegisterFlagEffect(50485594,RESET_EVENT+0x1fe0000,0,1,fid) - tc2:RegisterFlagEffect(50485594,RESET_EVENT+0x1fe0000,0,1,fid) - Duel.SpecialSummonComplete() - sg1:Merge(sg2) - sg1:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(sg1) - e1:SetCondition(c50485594.descon) - e1:SetOperation(c50485594.desop) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc1:RegisterEffect(e2) - local e3=e2:Clone() - tc2:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DISABLE_EFFECT) - e4:SetReset(RESET_EVENT+0x1fe0000) - tc1:RegisterEffect(e4) - local e5=e4:Clone() - tc2:RegisterEffect(e5) - end -end -function c50485594.desfilter(c,fid) - return c:GetFlagEffectLabel(50485594)==fid -end -function c50485594.descon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c50485594.desfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c50485594.desop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c50485594.desfilter,nil,e:GetLabel()) - Duel.Destroy(tg,REASON_EFFECT) -end +--レスキューラット +function c50485594.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(50485594,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1,50485594+EFFECT_COUNT_CODE_DUEL) + e2:SetCost(c50485594.thcost) + e2:SetTarget(c50485594.thtg) + e2:SetOperation(c50485594.thop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c50485594.regop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(50485594,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c50485594.spcost) + e4:SetCondition(c50485594.spcon) + e4:SetTarget(c50485594.sptg) + e4:SetOperation(c50485594.spop) + c:RegisterEffect(e4) +end +function c50485594.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c50485594.filter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c50485594.filter2(c,g) + return g:IsExists(Card.IsCode,1,c,c:GetCode()) +end +function c50485594.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetMatchingGroup(c50485594.filter,tp,LOCATION_EXTRA,0,nil) + return g:IsExists(c50485594.filter2,1,nil,g) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_EXTRA) +end +function c50485594.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c50485594.filter,tp,LOCATION_EXTRA,0,nil) + local sg=g:Filter(c50485594.filter2,nil,g) + if sg:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local hg1=sg:Select(tp,1,1,nil) + local hg2=sg:Filter(Card.IsCode,hg1:GetFirst(),hg1:GetFirst():GetCode()) + hg1:AddCard(hg2:GetFirst()) + Duel.SendtoHand(hg1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,hg1) +end +function c50485594.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(50485594,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) +end +function c50485594.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(50485594)~=0 +end +function c50485594.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c50485594.spfilter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsLevelBelow(5) + and Duel.IsExistingMatchingCard(c50485594.spfilter2,tp,LOCATION_DECK,0,2,nil,c:GetCode(),e,tp) +end +function c50485594.spfilter2(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c50485594.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c50485594.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c50485594.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c50485594.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local code=g:GetFirst():GetCode() + local dg=Duel.GetMatchingGroup(c50485594.spfilter2,tp,LOCATION_DECK,0,nil,code,e,tp) + if dg:GetCount()>1 then + local c=e:GetHandler() + local fid=c:GetFieldID() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=dg:Select(tp,1,1,nil) + local tc1=sg1:GetFirst() + local sg2=dg:Filter(Card.IsCode,tc1,tc1:GetCode()) + local tc2=sg2:GetFirst() + Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) + tc1:RegisterFlagEffect(50485594,RESET_EVENT+0x1fe0000,0,1,fid) + tc2:RegisterFlagEffect(50485594,RESET_EVENT+0x1fe0000,0,1,fid) + Duel.SpecialSummonComplete() + sg1:Merge(sg2) + sg1:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(sg1) + e1:SetCondition(c50485594.descon) + e1:SetOperation(c50485594.desop) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc1:RegisterEffect(e2) + local e3=e2:Clone() + tc2:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc1:RegisterEffect(e4) + local e5=e4:Clone() + tc2:RegisterEffect(e5) + end +end +function c50485594.desfilter(c,fid) + return c:GetFlagEffectLabel(50485594)==fid +end +function c50485594.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c50485594.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c50485594.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c50485594.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c5050644.lua b/script/c5050644.lua index f8d3b0ca..28a960be 100644 --- a/script/c5050644.lua +++ b/script/c5050644.lua @@ -1,75 +1,75 @@ ---アロマガーデン -function c5050644.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --recover 1 - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_RECOVER+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCountLimit(1) - e2:SetCondition(c5050644.recon1) - e2:SetTarget(c5050644.retg1) - e2:SetOperation(c5050644.reop1) - c:RegisterEffect(e2) - --recover 2 - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_RECOVER) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetRange(LOCATION_FZONE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCondition(c5050644.recon2) - e3:SetTarget(c5050644.retg2) - e3:SetOperation(c5050644.reop2) - c:RegisterEffect(e3) -end -function c5050644.cfilter1(c) - return c:IsFaceup() and c:IsSetCard(0xc9) -end -function c5050644.recon1(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c5050644.cfilter1,tp,LOCATION_MZONE,0,1,nil) -end -function c5050644.retg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,500) -end -function c5050644.reop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetValue(500) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - Duel.RegisterEffect(e2,tp) -end -function c5050644.cfilter2(c,tp) - return c:IsSetCard(0xc9) and c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) - and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) -end -function c5050644.recon2(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c5050644.cfilter2,1,nil,tp) -end -function c5050644.retg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) -end -function c5050644.reop2(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end +--アロマガーデン +function c5050644.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --recover 1 + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_RECOVER+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c5050644.recon1) + e2:SetTarget(c5050644.retg1) + e2:SetOperation(c5050644.reop1) + c:RegisterEffect(e2) + --recover 2 + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_RECOVER) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetRange(LOCATION_FZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCondition(c5050644.recon2) + e3:SetTarget(c5050644.retg2) + e3:SetOperation(c5050644.reop2) + c:RegisterEffect(e3) +end +function c5050644.cfilter1(c) + return c:IsFaceup() and c:IsSetCard(0xc9) +end +function c5050644.recon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c5050644.cfilter1,tp,LOCATION_MZONE,0,1,nil) +end +function c5050644.retg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,500) +end +function c5050644.reop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetValue(500) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + Duel.RegisterEffect(e2,tp) +end +function c5050644.cfilter2(c,tp) + return c:IsSetCard(0xc9) and c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) + and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) +end +function c5050644.recon2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c5050644.cfilter2,1,nil,tp) +end +function c5050644.retg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) +end +function c5050644.reop2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c50527144.lua b/script/c50527144.lua index a29bc428..cdf19bfd 100644 --- a/script/c50527144.lua +++ b/script/c50527144.lua @@ -21,7 +21,7 @@ end function c50527144.activate(e,tp,eg,ep,ev,re,r,rp) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) e1:SetTargetRange(LOCATION_ONFIELD,0) e1:SetTarget(c50527144.tgfilter) @@ -29,7 +29,8 @@ function c50527144.activate(e,tp,eg,ep,ev,re,r,rp) e1:SetReset(RESET_PHASE+PHASE_END) Duel.RegisterEffect(e1,tp) local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE) e2:SetValue(1) Duel.RegisterEffect(e2,tp) end diff --git a/script/c50619462.lua b/script/c50619462.lua index d05d840b..864bf8bc 100644 --- a/script/c50619462.lua +++ b/script/c50619462.lua @@ -1,4 +1,4 @@ ---Cattle Call +--烏合無象 function c50619462.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) diff --git a/script/c50692511.lua b/script/c50692511.lua index fff34828..27ee07f9 100644 --- a/script/c50692511.lua +++ b/script/c50692511.lua @@ -1,61 +1,61 @@ ---RR-コール -function c50692511.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,50692511+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c50692511.cost) - e1:SetTarget(c50692511.target) - e1:SetOperation(c50692511.activate) - c:RegisterEffect(e1) - Duel.AddCustomActivityCounter(50692511,ACTIVITY_SPSUMMON,c50692511.counterfilter) -end -function c50692511.counterfilter(c) - return c:IsSetCard(0xba) -end -function c50692511.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCustomActivityCount(50692511,tp,ACTIVITY_SPSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetLabelObject(e) - e1:SetTarget(c50692511.splimit) - Duel.RegisterEffect(e1,tp) -end -function c50692511.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return not c:IsSetCard(0xba) -end -function c50692511.filter1(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0xba) - and Duel.IsExistingMatchingCard(c50692511.filter2,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,c:GetCode()) -end -function c50692511.filter2(c,e,tp,code) - return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c50692511.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:IsCode(e:GetLabel()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c50692511.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c50692511.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - e:SetLabel(g:GetFirst():GetCode()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) -end -function c50692511.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local code=tc:GetCode() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c50692511.filter2,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp,code) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end - end -end +--RR-コール +function c50692511.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,50692511+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c50692511.cost) + e1:SetTarget(c50692511.target) + e1:SetOperation(c50692511.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(50692511,ACTIVITY_SPSUMMON,c50692511.counterfilter) +end +function c50692511.counterfilter(c) + return c:IsSetCard(0xba) +end +function c50692511.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(50692511,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetLabelObject(e) + e1:SetTarget(c50692511.splimit) + Duel.RegisterEffect(e1,tp) +end +function c50692511.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0xba) +end +function c50692511.filter1(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0xba) + and Duel.IsExistingMatchingCard(c50692511.filter2,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,c:GetCode()) +end +function c50692511.filter2(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c50692511.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:IsCode(e:GetLabel()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c50692511.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c50692511.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + e:SetLabel(g:GetFirst():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c50692511.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local code=tc:GetCode() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c50692511.filter2,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp,code) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + end +end diff --git a/script/c50720316.lua b/script/c50720316.lua index 19e78d19..0d594a74 100644 --- a/script/c50720316.lua +++ b/script/c50720316.lua @@ -1,55 +1,55 @@ ---E・HERO シャドー・ミスト -function c50720316.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(50720316,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,50720316) - e1:SetCost(c50720316.cost) - e1:SetTarget(c50720316.thtg1) - e1:SetOperation(c50720316.tgop1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetDescription(aux.Stringid(50720316,1)) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetTarget(c50720316.thtg2) - e2:SetOperation(c50720316.tgop2) - c:RegisterEffect(e2) -end -function c50720316.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end -function c50720316.thfilter1(c) - return c:IsSetCard(0xa5) and c:IsType(TYPE_QUICKPLAY) and c:IsAbleToHand() -end -function c50720316.thtg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c50720316.thfilter1,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c50720316.tgop1(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c50720316.thfilter1,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c50720316.thfilter2(c) - return c:IsSetCard(0x8) and c:IsType(TYPE_MONSTER) and not c:IsCode(50720316) and c:IsAbleToHand() -end -function c50720316.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c50720316.thfilter2,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c50720316.tgop2(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c50720316.thfilter2,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--E・HERO シャドー・ミスト +function c50720316.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(50720316,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,50720316) + e1:SetCost(c50720316.cost) + e1:SetTarget(c50720316.thtg1) + e1:SetOperation(c50720316.tgop1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetDescription(aux.Stringid(50720316,1)) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetTarget(c50720316.thtg2) + e2:SetOperation(c50720316.tgop2) + c:RegisterEffect(e2) +end +function c50720316.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c50720316.thfilter1(c) + return c:IsSetCard(0xa5) and c:IsType(TYPE_QUICKPLAY) and c:IsAbleToHand() +end +function c50720316.thtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c50720316.thfilter1,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c50720316.tgop1(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c50720316.thfilter1,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c50720316.thfilter2(c) + return c:IsSetCard(0x8) and c:IsType(TYPE_MONSTER) and not c:IsCode(50720316) and c:IsAbleToHand() +end +function c50720316.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c50720316.thfilter2,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c50720316.tgop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c50720316.thfilter2,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c50766506.lua b/script/c50766506.lua index 30adfe62..75c7b9ce 100644 --- a/script/c50766506.lua +++ b/script/c50766506.lua @@ -40,6 +40,7 @@ function c50766506.operation(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local c=e:GetHandler() local slv=e:GetLabel() local sg=Duel.GetMatchingGroup(c50766506.spfilter2,tp,LOCATION_DECK,0,nil,e,tp) diff --git a/script/c50789693.lua b/script/c50789693.lua index 32aa3df8..12f8abc5 100644 --- a/script/c50789693.lua +++ b/script/c50789693.lua @@ -8,6 +8,7 @@ function c50789693.initial_effect(c) e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) e1:SetDescription(aux.Stringid(50789693,0)) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c50789693.adcost) diff --git a/script/c50913601.lua b/script/c50913601.lua index 39f3ae52..5a6ad035 100644 --- a/script/c50913601.lua +++ b/script/c50913601.lua @@ -1,22 +1,22 @@ ---山 -function c50913601.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DRAGON+RACE_WINDBEAST+RACE_THUNDER)) - e2:SetValue(200) - c:RegisterEffect(e2) - --Def - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(200) - c:RegisterEffect(e3) -end +--山 +function c50913601.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DRAGON+RACE_WINDBEAST+RACE_THUNDER)) + e2:SetValue(200) + c:RegisterEffect(e2) + --Def + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(200) + c:RegisterEffect(e3) +end diff --git a/script/c50920465.lua b/script/c50920465.lua index 6f433bff..31320fda 100644 --- a/script/c50920465.lua +++ b/script/c50920465.lua @@ -1,49 +1,48 @@ ---ブリザード・サンダーバード -function c50920465.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(50920465,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,50920465) - e1:SetCost(c50920465.cost) - e1:SetTarget(c50920465.target) - e1:SetOperation(c50920465.operation) - c:RegisterEffect(e1) -end -function c50920465.cfilter(c,e,tp) - return c:IsDiscardable() and Duel.IsExistingMatchingCard(c50920465.filter,tp,LOCATION_HAND,0,1,c,e,tp) -end -function c50920465.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c50920465.cfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.DiscardHand(tp,c50920465.cfilter,1,1,REASON_COST+REASON_DISCARD,nil,e,tp) -end -function c50920465.filter(c,e,tp) - return c:IsRace(RACE_WINDBEAST) and c:IsAttribute(ATTRIBUTE_WATER) - and not c:IsCode(50920465) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c50920465.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingMatchingCard(c50920465.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c50920465.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - local g1=Duel.GetMatchingGroup(c50920465.filter,tp,LOCATION_HAND,0,nil,e,tp) - local g2=Duel.GetMatchingGroup(c50920465.filter,tp,LOCATION_GRAVE,0,nil,e,tp) - if g1:GetCount()==0 or g2:GetCount()==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg1=g1:Select(tp,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg2=g2:Select(tp,1,1,nil) - sg1:Merge(sg2) - if sg1:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - Duel.SpecialSummon(sg1,0,tp,tp,false,false,POS_FACEUP) - if e:GetHandler():IsRelateToEffect(e) then - Duel.BreakEffect() - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) - end -end +--ブリザード・サンダーバード +function c50920465.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(50920465,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,50920465) + e1:SetCost(c50920465.cost) + e1:SetTarget(c50920465.target) + e1:SetOperation(c50920465.operation) + c:RegisterEffect(e1) +end +function c50920465.cfilter(c,e,tp) + return c:IsDiscardable() and Duel.IsExistingMatchingCard(c50920465.filter,tp,LOCATION_HAND,0,1,c,e,tp) +end +function c50920465.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c50920465.cfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.DiscardHand(tp,c50920465.cfilter,1,1,REASON_COST+REASON_DISCARD,nil,e,tp) +end +function c50920465.filter(c,e,tp) + return c:IsRace(RACE_WINDBEAST) and c:IsAttribute(ATTRIBUTE_WATER) + and not c:IsCode(50920465) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c50920465.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c50920465.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c50920465.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g1=Duel.GetMatchingGroup(c50920465.filter,tp,LOCATION_HAND,0,nil,e,tp) + local g2=Duel.GetMatchingGroup(aux.NecroValleyFilter(c50920465.filter),tp,LOCATION_GRAVE,0,nil,e,tp) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.SpecialSummon(sg1,0,tp,tp,false,false,POS_FACEUP) + if e:GetHandler():IsRelateToEffect(e) then + Duel.BreakEffect() + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + end +end diff --git a/script/c50933533.lua b/script/c50933533.lua index b8882daf..595c4360 100644 --- a/script/c50933533.lua +++ b/script/c50933533.lua @@ -9,6 +9,7 @@ function c50933533.initial_effect(c) --summon success local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_SUMMON_SUCCESS) e2:SetCondition(c50933533.regcon) e2:SetOperation(c50933533.regop) @@ -16,24 +17,21 @@ function c50933533.initial_effect(c) e2:SetLabelObject(e1) --actlimit local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetOperation(c50933533.atkop) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetValue(c50933533.aclimit) + e3:SetCondition(c50933533.actcon) c:RegisterEffect(e3) end -function c50933533.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c50933533.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end function c50933533.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c50933533.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end function c50933533.valcheck(e,c) local g=c:GetMaterial() local flag=0 @@ -58,7 +56,7 @@ function c50933533.regop(e,tp,eg,ep,ev,re,r,rp) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_PIERCE) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) end if bit.band(flag,0x2)~=0 then @@ -71,7 +69,7 @@ function c50933533.regop(e,tp,eg,ep,ev,re,r,rp) e1:SetCondition(c50933533.damcon1) e1:SetTarget(c50933533.damtg1) e1:SetOperation(c50933533.damop) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) end if bit.band(flag,0x4)~=0 then @@ -83,7 +81,7 @@ function c50933533.regop(e,tp,eg,ep,ev,re,r,rp) e1:SetCode(EVENT_BATTLE_DESTROYING) e1:SetTarget(c50933533.damtg2) e1:SetOperation(c50933533.damop) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) end end diff --git a/script/c50954680.lua b/script/c50954680.lua index 97aab408..79c5be24 100644 --- a/script/c50954680.lua +++ b/script/c50954680.lua @@ -38,10 +38,9 @@ function c50954680.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c50954680.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) local c=e:GetHandler() local rc=re:GetHandler() - if rc:IsRelateToEffect(re) and Duel.Destroy(rc,REASON_EFFECT)~=0 and rc:GetBaseAttack()>=0 + if Duel.NegateActivation(ev) and rc:IsRelateToEffect(re) and Duel.Destroy(rc,REASON_EFFECT)~=0 and rc:GetBaseAttack()>=0 and c:IsRelateToEffect(e) and c:IsFaceup() then local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) diff --git a/script/c510000000.lua b/script/c510000000.lua new file mode 100644 index 00000000..ffa20b26 --- /dev/null +++ b/script/c510000000.lua @@ -0,0 +1,64 @@ +--Sp-シンクロ・パニック +function c510000000.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c510000000.cost) + e1:SetTarget(c510000000.tg) + e1:SetOperation(c510000000.op) + c:RegisterEffect(e1) +end +function c510000000.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc:GetCounter(0x91)>6 +end +function c510000000.filter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c510000000.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c510000000.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c510000000.op(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c510000000.filter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp) + if g:GetCount()==0 then return end + local c=e:GetHandler() + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc, 0, tp, tp, false, false, POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_UPDATE_LEVEL) + e4:SetValue(-11) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e5:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e5) + tc=g:GetNext() + end +end diff --git a/script/c51043053.lua b/script/c51043053.lua index 25411283..d6dcc85c 100644 --- a/script/c51043053.lua +++ b/script/c51043053.lua @@ -1,42 +1,42 @@ ---防覇龍ヘリオスフィア -function c51043053.initial_effect(c) - -- - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetCondition(c51043053.atcon) - c:RegisterEffect(e1) - --lv change - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(51043053,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c51043053.condition) - e2:SetOperation(c51043053.operation) - c:RegisterEffect(e2) -end -function c51043053.atcon(e) - return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)==1 - and Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_HAND)<5 -end -function c51043053.filter(c) - return c:IsFaceup() and c:GetLevel()==8 and c:IsRace(RACE_DRAGON) -end -function c51043053.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetLevel()~=8 - and Duel.IsExistingMatchingCard(c51043053.filter,tp,LOCATION_MZONE,0,1,nil) -end -function c51043053.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetValue(8) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--防覇龍ヘリオスフィア +function c51043053.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCondition(c51043053.atcon) + c:RegisterEffect(e1) + --lv change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51043053,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c51043053.condition) + e2:SetOperation(c51043053.operation) + c:RegisterEffect(e2) +end +function c51043053.atcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)==1 + and Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_HAND)<5 +end +function c51043053.filter(c) + return c:IsFaceup() and c:GetLevel()==8 and c:IsRace(RACE_DRAGON) +end +function c51043053.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetLevel()~=8 + and Duel.IsExistingMatchingCard(c51043053.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c51043053.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(8) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c51085303.lua b/script/c51085303.lua index 2c21fd38..c9ef937e 100644 --- a/script/c51085303.lua +++ b/script/c51085303.lua @@ -1,48 +1,48 @@ ---E・HERO ブルーメ -function c51085303.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --atk/def - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(51085303,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_BATTLE_DAMAGE) - e2:SetCondition(c51085303.adcon) - e2:SetOperation(c51085303.adop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetValue(c51085303.atlimit) - c:RegisterEffect(e3) -end -function c51085303.adcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c51085303.adop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() and c:GetDefense()>=200 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) - e1:SetValue(200) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - e2:SetValue(-200) - c:RegisterEffect(e2) - end -end -function c51085303.atlimit(e,c) - return c:IsFacedown() or not c:IsCode(51085303) -end +--E・HERO ブルーメ +function c51085303.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --atk/def + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51085303,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c51085303.adcon) + e2:SetOperation(c51085303.adop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(c51085303.atlimit) + c:RegisterEffect(e3) +end +function c51085303.adcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c51085303.adop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:GetDefense()>=200 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetValue(200) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(-200) + c:RegisterEffect(e2) + end +end +function c51085303.atlimit(e,c) + return c:IsFacedown() or not c:IsCode(51085303) +end diff --git a/script/c51099515.lua b/script/c51099515.lua index 9ae3e432..05069dde 100644 --- a/script/c51099515.lua +++ b/script/c51099515.lua @@ -1,47 +1,47 @@ ---恐撃 -function c51099515.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(c51099515.condition) - e1:SetCost(c51099515.cost) - e1:SetTarget(c51099515.target) - e1:SetOperation(c51099515.activate) - c:RegisterEffect(e1) -end -function c51099515.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c51099515.cfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c51099515.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c51099515.cfilter,tp,LOCATION_GRAVE,0,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local cg=Duel.SelectMatchingCard(tp,c51099515.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) - Duel.Remove(cg,POS_FACEUP,REASON_COST) -end -function c51099515.tfilter(c) - return c:IsPosition(POS_FACEUP_ATTACK) and c:GetAttack()>0 -end -function c51099515.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c51099515.tfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c51099515.tfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c51099515.tfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c51099515.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_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--恐撃 +function c51099515.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(c51099515.condition) + e1:SetCost(c51099515.cost) + e1:SetTarget(c51099515.target) + e1:SetOperation(c51099515.activate) + c:RegisterEffect(e1) +end +function c51099515.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c51099515.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c51099515.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c51099515.cfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local cg=Duel.SelectMatchingCard(tp,c51099515.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(cg,POS_FACEUP,REASON_COST) +end +function c51099515.tfilter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:GetAttack()>0 +end +function c51099515.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c51099515.tfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c51099515.tfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c51099515.tfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c51099515.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_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000001.lua b/script/c511000001.lua new file mode 100644 index 00000000..d2edd00f --- /dev/null +++ b/script/c511000001.lua @@ -0,0 +1,50 @@ +--Spark Breaker +function c511000001.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511000001.target1) + e1:SetOperation(c511000001.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000001,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetTarget(c511000001.target2) + e2:SetOperation(c511000001.operation) + c:RegisterEffect(e2) +end +function c511000001.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsDestructable() end + if chk==0 then return true end + if Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,0,1,nil) + and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + e:GetHandler():RegisterFlagEffect(511000001,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + else e:SetProperty(0) end +end +function c511000001.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsDestructable() end + if chk==0 then return e:GetHandler():GetFlagEffect(511000001)==0 + and Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + e:GetHandler():RegisterFlagEffect(511000001,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000001.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000002.lua b/script/c511000002.lua new file mode 100644 index 00000000..35bd0989 --- /dev/null +++ b/script/c511000002.lua @@ -0,0 +1,31 @@ +--Floral Shield +function c511000002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000002.condition) + e1:SetTarget(c511000002.target) + e1:SetOperation(c511000002.activate) + c:RegisterEffect(e1) +end +function c511000002.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000002.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000002.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack(tc) then + Duel.Draw(tp,1,REASON_EFFECT) + end + end +end \ No newline at end of file diff --git a/script/c511000003.lua b/script/c511000003.lua new file mode 100644 index 00000000..8746f54b --- /dev/null +++ b/script/c511000003.lua @@ -0,0 +1,35 @@ +--Zero Sprite +function c511000003.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000003.target) + e1:SetOperation(c511000003.activate) + c:RegisterEffect(e1) +end +function c511000003.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c: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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c511000003.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511000004.lua b/script/c511000004.lua new file mode 100644 index 00000000..15f481fd --- /dev/null +++ b/script/c511000004.lua @@ -0,0 +1,30 @@ +--Twin Vortex +function c511000004.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000004.target) + e1:SetOperation(c511000004.operation) + c:RegisterEffect(e1) +end +function c511000004.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsDestructable() +end +function c511000004.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511000004.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c511000004.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,g1:GetFirst()) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,g1:GetCount(),0,0) +end +function c511000004.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511000005.lua b/script/c511000005.lua new file mode 100644 index 00000000..d402f13b --- /dev/null +++ b/script/c511000005.lua @@ -0,0 +1,36 @@ +--Toy Soldier +function c511000005.initial_effect(c) + --to deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000005,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000005.con) + e1:SetTarget(c511000005.target) + e1:SetOperation(c511000005.operation) + c:RegisterEffect(e1) +end +function c511000005.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000005.filter(c,e,tp) + return c:IsCode(511000005) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c511000005.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000005.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000005.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,c511000005.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP_ATTACK) + end +end \ No newline at end of file diff --git a/script/c511000006.lua b/script/c511000006.lua new file mode 100644 index 00000000..2f6a4aef --- /dev/null +++ b/script/c511000006.lua @@ -0,0 +1,28 @@ +--Toy Emperor +function c511000006.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000006,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetTarget(c511000006.target) + e1:SetOperation(c511000006.operation) + c:RegisterEffect(e1) +end +function c511000006.filter(c) + return c:IsType(TYPE_TRAP) and c:IsAbleToHand() +end +function c511000006.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000006.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000006.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000006.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000007.lua b/script/c511000007.lua new file mode 100644 index 00000000..4e3cec01 --- /dev/null +++ b/script/c511000007.lua @@ -0,0 +1,37 @@ +--Crowning of the Emperor +function c511000007.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000007.cost) + e1:SetTarget(c511000007.target) + e1:SetOperation(c511000007.operation) + c:RegisterEffect(e1) +end +function c511000007.afilter(c, code) + return c:IsCode(511000005) and c:IsFaceup() +end +function c511000007.bfilter(c,e,tp) + return c:IsCode(511000006) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c511000007.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511000007.afilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511000007.afilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511000007.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000007.bfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511000007.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,c511000007.bfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511000008.lua b/script/c511000008.lua new file mode 100644 index 00000000..e49c1e22 --- /dev/null +++ b/script/c511000008.lua @@ -0,0 +1,53 @@ +--Hook the Hidden Knight +function c511000008.initial_effect(c) + --Change Battle Position + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000008,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetTarget(c511000008.target) + e1:SetOperation(c511000008.operation) + c:RegisterEffect(e1) + --Inflict Damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000008,1)) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetCondition(c511000008.condition) + e2:SetTarget(c511000008.damtg) + e2:SetOperation(c511000008.damop) + c:RegisterEffect(e2) +end +function c511000008.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return false end + local c=e:GetHandler() + local bc=Duel.GetAttacker() + if chk==0 then return bc and bc:IsOnField() and bc:IsCanBeEffectTarget(e) and c:IsAttackPos() and bc:IsAttackPos() end + Duel.SetTargetCard(bc) + local g=Group.FromCards(c,bc) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,2,0,0) +end +function c511000008.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end + local g=Group.FromCards(c,tc) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) +end +function c511000008.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(c:GetPreviousPosition(),POS_ATTACK)~=0 and c:IsFaceup() and c:IsDefensePos() +end +function c511000008.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511000008.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000009.lua b/script/c511000009.lua new file mode 100644 index 00000000..ba05a185 --- /dev/null +++ b/script/c511000009.lua @@ -0,0 +1,41 @@ +--Archfiend Matador +function c511000009.initial_effect(c) + c:EnableReviveLimit() + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetValue(1) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000009,0)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetTarget(c511000009.destg) + e4:SetOperation(c511000009.desop) + c:RegisterEffect(e4) +end +function c511000009.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return bc and bc:IsRelateToBattle() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) +end +function c511000009.desop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + if bc:IsRelateToBattle() then + Duel.Destroy(bc,REASON_EFFECT) + end +end diff --git a/script/c511000010.lua b/script/c511000010.lua new file mode 100644 index 00000000..008fb4fc --- /dev/null +++ b/script/c511000010.lua @@ -0,0 +1,4 @@ +--Ritual of the Matador +function c511000010.initial_effect(c) + aux.AddRitualProcGreaterCode(c,511000009) +end diff --git a/script/c511000011.lua b/script/c511000011.lua new file mode 100644 index 00000000..f22a9494 --- /dev/null +++ b/script/c511000011.lua @@ -0,0 +1,47 @@ +--Kiteroid +function c511000011.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000011,0)) + e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000011.con) + e1:SetCost(c511000011.cost) + e1:SetOperation(c511000011.op) + c:RegisterEffect(e1) + --no damage 2 + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000011,1)) + e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511000011.con) + e1:SetCost(c511000011.cost2) + e1:SetOperation(c511000011.op) + c:RegisterEffect(e1) +end +function c511000011.con(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()~=tp and Duel.GetAttackTarget()==nil +end +function c511000011.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c511000011.op(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000011.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511000011.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511000011.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,511000011)==0 and e:GetHandler():IsAbleToRemoveAsCost() end + Duel.RegisterFlagEffect(tp,511000011,0,0,0) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end diff --git a/script/c511000012.lua b/script/c511000012.lua new file mode 100644 index 00000000..3237a86e --- /dev/null +++ b/script/c511000012.lua @@ -0,0 +1,118 @@ +--Fenrir of the Nordic Wicked Wolves +function c511000012.initial_effect(c) + c:EnableUnsummonable() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetRange(LOCATION_HAND) + e1:SetTargetRange(POS_FACEUP_DEFENSE,1) + e1:SetCondition(c511000012.spccon) + e1:SetOperation(c511000012.spcop) + c:RegisterEffect(e1) + --Change Battle Pos + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000012,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511000012.bptg) + e3:SetOperation(c511000012.bpop) + c:RegisterEffect(e3) + --selfdes + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e7:SetRange(LOCATION_MZONE) + e7:SetCode(EFFECT_SELF_DESTROY) + e7:SetCondition(c511000012.descon) + c:RegisterEffect(e7) + --damage + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e6:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e6:SetOperation(c511000012.damop) + c:RegisterEffect(e6) + --Cost + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_COST) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCost(c511000012.spcost) + e3:SetOperation(c511000012.spop) + c:RegisterEffect(e3) +end +function c511000012.bptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(aux.TRUE,tp,LOCATION_MZONE,1,nil) end + local sg=Duel.GetFieldGroup(tp,aux.TRUE,tp,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,sg,sg:GetCount(),0,0) +end +function c511000012.bpop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetFieldGroup(tp,LOCATION_MZONE,nil) + if sg:GetCount()>0 then + Duel.ChangePosition(sg,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end +function c511000012.desfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x42) or c:IsSetCard(0x4b)) +end +function c511000012.descon(e) + return not Duel.IsExistingMatchingCard(c511000012.desfilter,e:GetHandlerPlayer(),LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c511000012.sdcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_BATTLE)>0 and (Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()) +end +function c511000012.sdop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-ep,ev,REASON_BATTLE) +end +function c511000012.spccon(e,c,tp) + return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 and Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c511000012.spcop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BP) + e3:SetTargetRange(1,0) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c511000012.spcost(e,c,tp) + return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 and Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c511000012.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BP) + e3:SetTargetRange(1,0) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c511000012.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(1-ep,ev,false) +end diff --git a/script/c511000013.lua b/script/c511000013.lua new file mode 100644 index 00000000..1a94d952 --- /dev/null +++ b/script/c511000013.lua @@ -0,0 +1,93 @@ +--Jormungandr of the Nordic Wicked Dragons +function c511000013.initial_effect(c) + c:EnableUnsummonable() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetRange(LOCATION_HAND) + e1:SetTargetRange(POS_FACEUP_DEFENSE,1) + e1:SetCondition(c511000013.spcon) + e1:SetOperation(c511000013.spcop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000013,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetCondition(c511000013.damcon) + e2:SetTarget(c511000013.damtg) + e2:SetOperation(c511000013.damop) + c:RegisterEffect(e2) + --Cost + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_COST) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCost(c511000013.spcost) + e3:SetOperation(c511000013.spop) + c:RegisterEffect(e3) + --cannot release + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_UNRELEASABLE_SUM) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e6:SetValue(1) + c:RegisterEffect(e6) +end +function c511000013.damcon(e,tp,eg,ep,ev,re,r,rp) +local c=e:GetHandler() + return bit.band(c:GetPreviousPosition(),POS_DEFENSE)~=0 and c:IsFaceup() and c:IsAttackPos() +end +function c511000013.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,3000) +end +function c511000013.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(e:GetHandler():GetControler(),3000,REASON_EFFECT) +end +function c511000013.spcon(e,c,tp) + return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 +end +function c511000013.spcop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c511000013.spcost(e,c,tp) + return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 +end +function c511000013.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end \ No newline at end of file diff --git a/script/c511000014.lua b/script/c511000014.lua new file mode 100644 index 00000000..b8641b09 --- /dev/null +++ b/script/c511000014.lua @@ -0,0 +1,33 @@ +--Gatling Ogre +function c511000014.initial_effect(c) + --inflict damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000014,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000014.cost) + e1:SetTarget(c511000014.target) + e1:SetOperation(c511000014.operation) + c:RegisterEffect(e1) +end +function c511000014.filter(c) + return c:IsFacedown() and c:IsAbleToGraveAsCost() +end +function c511000014.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511000014.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000014.filter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000014.filter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000014.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000015.lua b/script/c511000015.lua new file mode 100644 index 00000000..d59b2c50 --- /dev/null +++ b/script/c511000015.lua @@ -0,0 +1,56 @@ +--Basara +function c511000015.initial_effect(c) + --Activate + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_ACTIVATE) + e0:SetCode(EVENT_FREE_CHAIN) + e0:SetHintTiming(0,TIMING_END_PHASE) + c:RegisterEffect(e0) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1) + e1:SetCost(c511000015.descost) + e1:SetTarget(c511000015.destg) + e1:SetOperation(c511000015.desop) + c:RegisterEffect(e1) +end +function c511000015.cfilter(c,tp) + return c:IsType(TYPE_MONSTER) + and Duel.IsExistingTarget(c511000015.dfilter,tp,0,LOCATION_MZONE,1,nil,c:GetLevel()) +end +function c511000015.dfilter(c,lv) + return c:IsFaceup() and c:IsLevelAbove(lv+1) and c:IsDestructable() +end +function c511000015.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000015.cfilter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,c511000015.cfilter,tp,LOCATION_MZONE,0,1,1,nil,tp) + local lv=g:GetFirst():GetLevel() + e:SetLabel(lv) + Duel.Release(g,REASON_COST) +end +function c511000015.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511000015.dfilter(chkc,e:GetLabel()) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000015.dfilter,tp,0,LOCATION_MZONE,1,1,nil,e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end + + +function c511000015.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsControler(1-tp) and tc:IsRelateToEffect(e) and tc:IsLevelAbove(e:GetLabel()+1) then + Duel.Destroy(tc,REASON_EFFECT) + end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000016.lua b/script/c511000016.lua new file mode 100644 index 00000000..919406d8 --- /dev/null +++ b/script/c511000016.lua @@ -0,0 +1,60 @@ +--Gate Defender (Script by RaiZZZ19) +function c511000016.initial_effect(c) + --negate 1 attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000016,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511000016.nacon) + e1:SetOperation(c511000016.naop) + c:RegisterEffect(e1) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetCondition(c511000016.cbbtcon) + e2:SetValue(1) + c:RegisterEffect(e2) + --Self-destruct + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000016,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511000016.sdcon) + e3:SetTarget(c511000016.sdtg) + e3:SetOperation(c511000016.operation) + c:RegisterEffect(e3) +end +function c511000016.nacon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return bt:GetControler()==c:GetControler() +end +function c511000016.naop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c511000016.cbbtcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>1 +end +function c511000016.filter(c,tp) ---------affects one side of field---------------- + return c:IsReason(REASON_BATTLE) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp and c:IsType(TYPE_MONSTER) +end +function c511000016.sdcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000016.filter,1,nil,tp) +end +function c511000016.sdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c511000016.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.Destroy(c,nil,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511000017.lua b/script/c511000017.lua new file mode 100644 index 00000000..168a918a --- /dev/null +++ b/script/c511000017.lua @@ -0,0 +1,23 @@ +--Dark Arena +function c511000017.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_PATRICIAN_OF_DARKNESS) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + c:RegisterEffect(e2) + --must attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_MUST_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e3) +end diff --git a/script/c511000018.lua b/script/c511000018.lua new file mode 100644 index 00000000..c5c51eee --- /dev/null +++ b/script/c511000018.lua @@ -0,0 +1,39 @@ +--Fleur de Vertige +function c511000018.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511000018.target) + e1:SetOperation(c511000018.activate) + c:RegisterEffect(e1) +end +function c511000018.filter(c,tp) + return c:IsFaceup() and c:GetControler()~=tp + and c:IsAbleToRemove() +end +function c511000018.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511000018.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511000018.filter,1,nil,tp) + and (c511000018.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511000018.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5))) end + Duel.SetTargetCard(eg) + local g=eg:Filter(c511000018.filter,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511000018.filter2(c,e,tp) + return c:IsFaceup() and c:GetControler()~=tp + and c:IsRelateToEffect(e) and c:IsAbleToRemove() +end +function c511000018.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000018.filter2,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + tc=g:Select(tp,1,1,nil):GetFirst() + end + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511000019.lua b/script/c511000019.lua new file mode 100644 index 00000000..9cbc5adb --- /dev/null +++ b/script/c511000019.lua @@ -0,0 +1,29 @@ +--Shield Recovery +function c511000019.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000019,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000019.target) + e1:SetOperation(c511000019.activate) + c:RegisterEffect(e1) +end +function c511000019.filter(c) + return c:IsFaceup() and c:IsSetCard(0x15) and c:IsCanAddCounter(0x1f,3) +end +function c511000019.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000019.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000019.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000019.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) +end +function c511000019.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsSetCard(0x15) and tc:IsRelateToEffect(e) then + tc:AddCounter(0x1f,3) + end +end diff --git a/script/c511000021.lua b/script/c511000021.lua new file mode 100644 index 00000000..d4d2723a --- /dev/null +++ b/script/c511000021.lua @@ -0,0 +1,43 @@ +--Burst Impact +function c511000021.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000021.condition) + e1:SetTarget(c511000021.target) + e1:SetOperation(c511000021.activate) + c:RegisterEffect(e1) +end +function c511000021.cfilter(c) + return c:IsFaceup() and c:IsCode(58932615) +end +function c511000021.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000021.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000021.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000021.tfilter(c) + return not (c:IsFaceup() and c:IsCode(58932615)) and c:IsDestructable() +end +function c511000021.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000021.tfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000021.tfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,0,g:GetCount()*300) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c19613556.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + local sg=Duel.GetMatchingGroup(c511000021.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511000021.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c511000021.tfilter,tp,LOCATION_MZONE,0,nil) + local g2=Duel.GetMatchingGroup(c511000021.tfilter,tp,0,LOCATION_MZONE,nil) + local ct1=Duel.Destroy(g1,REASON_EFFECT) + local ct2=Duel.Destroy(g2,REASON_EFFECT) + local sg=Duel.GetMatchingGroup(c511000021.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT)Duel.Damage(tp,ct1*300,REASON_EFFECT) + Duel.Damage(1-tp,ct2*300,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000022.lua b/script/c511000022.lua new file mode 100644 index 00000000..bf672e68 --- /dev/null +++ b/script/c511000022.lua @@ -0,0 +1,28 @@ +--Suit of Sword X +function c511000022.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000022.target) + e1:SetOperation(c511000022.activate) + c:RegisterEffect(e1) +end +function c511000022.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) and Duel.IsExistingMatchingCard(Card.IsDestructable,1-tp,LOCATION_MZONE,0,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local sa=Duel.GetMatchingGroup(Card.IsDestructable,1-tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sa,sa:GetCount(),0,0) +end +function c511000022.activate(e,tp,eg,ep,ev,re,r,rp) + local res=Duel.TossCoin(tp,1) + if res==1 then + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) + else + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511000023.lua b/script/c511000023.lua new file mode 100644 index 00000000..00152b0c --- /dev/null +++ b/script/c511000023.lua @@ -0,0 +1,53 @@ +--Superficial Peace +function c511000023.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000023.operation) + c:RegisterEffect(e1) +end +function c511000023.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + --destroy + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetDescription(aux.Stringid(511000023,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511000023.descon) + e2:SetTarget(c511000023.destg) + e2:SetOperation(c511000023.desop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c511000023.aclimit(e,re,tp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end +function c511000023.descon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst():GetControler()==tp +end +function c511000023.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000023.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c511000023.desfilter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000023.desfilter,tp,0,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000023.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000024.lua b/script/c511000024.lua new file mode 100644 index 00000000..0ac20e90 --- /dev/null +++ b/script/c511000024.lua @@ -0,0 +1,93 @@ +--White Veil + function c511000024.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(c511000024.target) + e1:SetOperation(c511000024.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) + --negates Spell&Traps + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c511000024.lmop) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000024,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c511000024.damcon) + e4:SetTarget(c511000024.damtg) + e4:SetOperation(c511000024.damop) + c:RegisterEffect(e4) +end +function c511000024.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 c511000024.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 c511000024.lmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetAttacker()~=c:GetEquipTarget() then return end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_ONFIELD) + e2:SetTarget(c511000024.distg) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c511000024.distg) + e3:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e3,tp) +end +function c511000024.distg(e,c) + return c~=e:GetHandler() and c:IsType(TYPE_TRAP+TYPE_SPELL) +end +function c511000024.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + if not ec then return end + e:SetLabelObject(ec) + e:SetLabel(ec:GetPreviousControler()) + return c:IsReason(REASON_LOST_TARGET) and ec:IsReason(REASON_DESTROY) +end +function c511000024.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetLabelObject():GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(e:GetLabel()) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,e:GetLabel(),dam) +end +function c511000024.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000025.lua b/script/c511000025.lua new file mode 100644 index 00000000..75f9383e --- /dev/null +++ b/script/c511000025.lua @@ -0,0 +1,43 @@ +--Tuning Collapse +function c511000025.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511000025.condition) + e1:SetTarget(c511000025.target) + e1:SetOperation(c511000025.operation) + c:RegisterEffect(e1) +end +function c511000025.cfilter(c,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) and c:IsControler(1-tp) + and c:IsLocation(LOCATION_GRAVE) +end +function c511000025.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000025.cfilter,1,nil,tp) +end +function c511000025.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511000025.cfilter(chkc) end + if chk==0 then return true end + local g=eg:Filter(c511000025.cfilter,nil,tp) + local tc=g:GetFirst() + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + tc=g:Select(tp,1,1,nil):GetFirst() + end + Duel.SetTargetCard(tc) + local desc=tc:GetLevel() + local desp=1-tp + Duel.SetTargetPlayer(desp) + Duel.SetTargetParam(desc) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,desp,desc) +end +function c511000025.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local tc=Duel.GetFirstTarget() + local lv=tc:GetLevel() + if tc:IsRelateToEffect(e) and lv>0 then + Duel.DiscardDeck(p,lv,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511000026.lua b/script/c511000026.lua new file mode 100644 index 00000000..7005053b --- /dev/null +++ b/script/c511000026.lua @@ -0,0 +1,34 @@ +--Jester Queen +function c511000026.initial_effect(c) + --Destroy Spell and Trap + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000026,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000026.sttg) + e1:SetOperation(c511000026.stop) + c:RegisterEffect(e1) + --Mulitple Attacks + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(c511000026.value) + c:RegisterEffect(e2) +end +function c511000026.stfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000026.sttg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511000026.stfilter,tp,LOCATION_ONFIELD,0,1,c) end + local sg=Duel.GetMatchingGroup(c511000026.stfilter,tp,LOCATION_ONFIELD,0,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511000026.stop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511000026.filter,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) +end +function c511000026.value(e,c) + return Duel.GetMatchingGroupCount(Card.IsType,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,nil,TYPE_SPELL+TYPE_TRAP) +end \ No newline at end of file diff --git a/script/c511000027.lua b/script/c511000027.lua new file mode 100644 index 00000000..9776457c --- /dev/null +++ b/script/c511000027.lua @@ -0,0 +1,44 @@ +--Defender's Mind +function c511000027.initial_effect(c) + c:SetUniqueOnField(1,0,511000027) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(0,TIMING_MAIN_END) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000027.condition) + c:RegisterEffect(e1) + --Pos Change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_POSITION) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetValue(POS_FACEUP_DEFENSE) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c511000027.target) + c:RegisterEffect(e3) + --Double DEF + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetTarget(c511000027.target) + e4:SetValue(c511000027.defval) + c:RegisterEffect(e4) +end +function c511000027.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c511000027.target(e,c) + return c:IsPosition(POS_FACEUP_DEFENSE) +end +function c511000027.defval(e,c) + return c:GetDefense()*2 +end \ No newline at end of file diff --git a/script/c511000028.lua b/script/c511000028.lua new file mode 100644 index 00000000..d659dea8 --- /dev/null +++ b/script/c511000028.lua @@ -0,0 +1,44 @@ +--Labyrinth of Kline +function c511000028.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000028.condition) + e1:SetTarget(c511000028.target) + e1:SetOperation(c511000028.activate) + c:RegisterEffect(e1) +end +function c511000028.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000028.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c511000028.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack(tc) then + local atk=tc:GetBaseAttack() + local def=tc:GetBaseDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c511000029.lua b/script/c511000029.lua new file mode 100644 index 00000000..155949c6 --- /dev/null +++ b/script/c511000029.lua @@ -0,0 +1,31 @@ +--Chain Close +function c511000029.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511000029.condition) + e1:SetTarget(c511000029.target) + e1:SetOperation(c511000029.operation) + c:RegisterEffect(e1) +end +function c511000029.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_DESTROY)~=0 +end +function c511000029.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetChainLimit(aux.FALSE) +end +function c511000029.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511000029.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000029.aclimit(e,re,tp) + return not re:GetHandler():IsImmuneToEffect(e) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c511000030.lua b/script/c511000030.lua new file mode 100644 index 00000000..0d19fb47 --- /dev/null +++ b/script/c511000030.lua @@ -0,0 +1,53 @@ +--Crown of the Empress +function c511000030.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c511000030.condition) + e1:SetTarget(c511000030.target) + e1:SetOperation(c511000030.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c511000030.actcon) + c:RegisterEffect(e2) +end +function c511000030.cfilter2(c,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsControler(1-tp) +end +function c511000030.cfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x4a) or c:IsCode(74530899)) +end +function c511000030.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000030.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000030.gfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511000030.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local ct=Duel.GetMatchingGroupCount(c511000030.gfilter,tp,0,LOCATION_MZONE,nil)*2 + return ct>0 and Duel.IsPlayerCanDraw(tp,ct) + end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511000030.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(c511000030.gfilter,tp,0,LOCATION_MZONE,nil)*2 + Duel.Draw(p,ct,REASON_EFFECT) +end +function c511000030.actcon(e) + local tp=e:GetHandlerPlayer() + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) + if res then + return teg:IsExists(c511000030.cfilter2,1,nil,tp) + end +end diff --git a/script/c511000031.lua b/script/c511000031.lua new file mode 100644 index 00000000..04383364 --- /dev/null +++ b/script/c511000031.lua @@ -0,0 +1,58 @@ +--Power Converter +function c511000031.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(c511000031.target) + e1:SetOperation(c511000031.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --Gain LP + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000031,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000031.condition) + e3:SetOperation(c511000031.lpop) + c:RegisterEffect(e3) + end +function c511000031.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c511000031.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000031.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 c511000031.lpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetEquipTarget() + local lp=ec:GetAttack()/2 + if ec and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + ec:RegisterEffect(e1) + end + Duel.Recover(tp,lp,REASON_EFFECT) +end diff --git a/script/c511000032.lua b/script/c511000032.lua new file mode 100644 index 00000000..f1f4adc5 --- /dev/null +++ b/script/c511000032.lua @@ -0,0 +1,41 @@ +--For Our Dreams +function c511000032.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000032.cost) + e1:SetTarget(c511000032.target) + e1:SetOperation(c511000032.activate) + c:RegisterEffect(e1) +end +function c511000032.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511000032.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511000032.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511000032.filter(c) + return c:IsRace(RACE_WARRIOR) and Duel.IsExistingTarget(c511000032.filter2,c:GetControler(),LOCATION_MZONE,0,1,c) +end +function c511000032.filter2(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511000032.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:IsRace(RACE_WARRIOR) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000032.filter2,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000032.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + 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+0x1fe0000) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511000033.lua b/script/c511000033.lua new file mode 100644 index 00000000..15909878 --- /dev/null +++ b/script/c511000033.lua @@ -0,0 +1,66 @@ +--Diving Exploder +function c511000033.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(511000033,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511000033.cost) + e1:SetTarget(c511000033.target) + e1:SetOperation(c511000033.operation) + c:RegisterEffect(e1) +end +function c511000033.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() end + Duel.SendtoGrave(c,REASON_COST) +end +function c511000033.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511000033.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local c=e:GetHandler() + local tc=sg:GetFirst() + while tc do + local atk=tc:GetBaseAttack() + local def=tc:GetBaseDefense() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(def) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(atk) + tc:RegisterEffect(e2) + tc=sg:GetNext() + end +end +function c511000033.resetop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511000033.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local c=e:GetHandler() + local tc=sg:GetFirst() + while tc do + local atk=tc:GetAttack() + local def=tc:GetDefense() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(def) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(atk) + tc:RegisterEffect(e2) + tc=sg:GetNext() + end +end \ No newline at end of file diff --git a/script/c511000034.lua b/script/c511000034.lua new file mode 100644 index 00000000..423ffddd --- /dev/null +++ b/script/c511000034.lua @@ -0,0 +1,71 @@ +--Antidote Nurse +function c511000034.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,3,3) + c:EnableReviveLimit() + --baseatk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetCondition(c511000034.basecon) + e1:SetTarget(c511000034.basetg) + e1:SetValue(c511000034.baseval) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetDescription(aux.Stringid(511000034,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(TIMING_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCountLimit(1) + e2:SetCondition(c511000034.condition) + e2:SetCost(c511000034.cost) + e2:SetOperation(c511000034.operation) + c:RegisterEffect(e2) +end +function c511000034.atktg(e,c) + return c==e:GetHandler():GetBattleTarget() +end +function c511000034.vala(e,c) + return c:GetBaseAttack() +end +function c511000034.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (a:GetControler()==tp and a:IsRelateToBattle()) + or (d and d:GetControler()==tp and d:IsRelateToBattle()) +end +function c511000034.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000034.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if Duel.GetTurnPlayer()~=tp then a=Duel.GetAttackTarget() end + if not a:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1000) + a:RegisterEffect(e1) +end +function c511000034.basecon(e) + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and Duel.GetAttackTarget()~=nil + and (Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()) +end +function c511000034.basetg(e,c) + return c==e:GetHandler():GetBattleTarget() +end +function c511000034.baseval(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler():GetBattleTarget() + return c:GetBaseAttack() +end \ No newline at end of file diff --git a/script/c511000035.lua b/script/c511000035.lua new file mode 100644 index 00000000..d18addc1 --- /dev/null +++ b/script/c511000035.lua @@ -0,0 +1,61 @@ +--Infernity Des Gunman +function c511000035.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000035,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511000035.con) + e1:SetCost(c511000035.cost) + e1:SetOperation(c511000035.op) + c:RegisterEffect(e1) +end +function c511000035.con(e,tp,eg,ep,ev,re,r,rp) + if rp==tp or Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 then return false end + 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) + if not ex then return false end + if cp~=PLAYER_ALL then return Duel.IsPlayerAffectedByEffect(cp,EFFECT_REVERSE_RECOVER) + else return Duel.IsPlayerAffectedByEffect(0,EFFECT_REVERSE_RECOVER) + or Duel.IsPlayerAffectedByEffect(1,EFFECT_REVERSE_RECOVER) + end +end +function c511000035.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000035.op(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(c511000035.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 then + if Duel.SelectYesNo(1-tp,aux.Stringid(511000035,REASON_EFFECT)) then + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsType(TYPE_MONSTER) then + Duel.Damage(tp,2000,REASON_EFFECT) + Duel.ShuffleDeck(tp,REASON_EFFECT) + else + Duel.Damage(1-tp,2000,REASON_EFFECT) + Duel.ShuffleDeck(tp,REASON_EFFECT) + end + end + end +end +function c511000035.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end diff --git a/script/c511000036.lua b/script/c511000036.lua new file mode 100644 index 00000000..77e740dc --- /dev/null +++ b/script/c511000036.lua @@ -0,0 +1,63 @@ +--Jurassic Impact +function c511000036.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000036.condition) + e1:SetTarget(c511000036.target) + e1:SetOperation(c511000036.activate) + c:RegisterEffect(e1) +end +function c511000036.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000039.lua b/script/c511000039.lua new file mode 100644 index 00000000..5c625345 --- /dev/null +++ b/script/c511000039.lua @@ -0,0 +1,48 @@ +--Synchro Monument +function c511000039.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot disable summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE) + e2:SetTarget(c511000039.target) + c:RegisterEffect(e2) + --summon success + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000039.sumcon) + e3:SetOperation(c511000039.sumsuc) + c:RegisterEffect(e3) +end +function c511000039.limfilter(c) + return c:GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c511000039.target(e,c) + return c:GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c511000039.sumcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000039.limfilter,1,nil) +end +function c511000039.sumsuc(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(1,1) + e1:SetValue(c511000039.elimit) + e1:SetReset(RESET_EVENT+EVENT_ADJUST,2) + c:RegisterEffect(e1) +end +function c511000039.elimit(e,re,tp) + return re:GetHandler():IsType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c511000040.lua b/script/c511000040.lua new file mode 100644 index 00000000..9ed41152 --- /dev/null +++ b/script/c511000040.lua @@ -0,0 +1,41 @@ +--Absurd Stealer +function c511000040.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000040,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000040.target) + e1:SetOperation(c511000040.operation) + c:RegisterEffect(e1) +end +function c511000040.filter(c) + return c:IsLevelBelow(4) and c:IsPosition(POS_FACEUP_ATTACK) and c:IsLocation(LOCATION_MZONE) +end +function c511000040.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLevelBelow(4) and chkc:IsPosition(POS_FACEUP_ATTACK) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000040.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000040.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and c:IsFaceup() and c:IsRelateToEffect(e) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetValue(tc:GetDefense()) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end +end diff --git a/script/c511000041.lua b/script/c511000041.lua new file mode 100644 index 00000000..85340972 --- /dev/null +++ b/script/c511000041.lua @@ -0,0 +1,63 @@ +--Playmaker +function c511000041.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000041,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511000041.postg) + e1:SetOperation(c511000041.posop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000041,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetCost(c511000041.cost) + e2:SetTarget(c511000041.atktg) + e2:SetOperation(c511000041.atkop) + c:RegisterEffect(e2) +end +function c511000041.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000041.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511000041.posop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.ChangePosition(g,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) +end +function c511000041.filter(c) + return c:IsFaceup() +end +function c511000041.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000041.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000041.filter,tp,0,LOCATION_MZONE,nil) + local tc=nil + if g:GetCount()>0 then + local tg=g:GetMaxGroup(Card.GetAttack) + if tg:GetCount()>1 then + local sg=tg:Select(tp,1,1,nil) + tc=sg:GetFirst() + + else + tc=tg:GetFirst() + end + end + Duel.SetTargetCard(tc) +end +function c511000041.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChainAttack(tc) + end +end \ No newline at end of file diff --git a/script/c511000043.lua b/script/c511000043.lua new file mode 100644 index 00000000..063f39d9 --- /dev/null +++ b/script/c511000043.lua @@ -0,0 +1,50 @@ +--Dark Matter +function c511000043.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000043.condition) + e1:SetTarget(c511000043.target) + e1:SetOperation(c511000043.activate) + c:RegisterEffect(e1) +end +function c511000043.cfilter(c,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) and c:IsAttribute(ATTRIBUTE_DARK) +end +function c511000043.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000043.cfilter,1,nil,tp) +end +function c511000043.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000042,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511000043.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000042,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) then + for i=1,2 do + local token=Duel.CreateToken(tp,511000042) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + 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+0x1fe0000) + token:RegisterEffect(e1) + local de=Effect.CreateEffect(e:GetHandler()) + de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + de:SetRange(LOCATION_MZONE) + de:SetCode(EVENT_PHASE+PHASE_END) + de:SetOperation(c511000043.desop) + de:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(de) + end + Duel.SpecialSummonComplete() + end +end +function c511000043.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000044.lua b/script/c511000044.lua new file mode 100644 index 00000000..46733e8a --- /dev/null +++ b/script/c511000044.lua @@ -0,0 +1,57 @@ +--Imitation +function c511000044.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000044.target) + e1:SetOperation(c511000044.activate) + c:RegisterEffect(e1) +end +function c511000044.filter(c,tp) + return c:IsType(TYPE_TOKEN) + and Duel.IsPlayerCanSpecialSummonMonster(1-tp,500000148,0,0x4011,c:GetBaseAttack(),c:GetBaseDefense(), + c:GetOriginalLevel(),c:GetOriginalRace(),c:GetOriginalAttribute()) +end +function c511000044.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsOnField() and c511000044.filter(chkc,tp) end + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000044.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end + Duel.SelectTarget(tp,c511000044.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,tp,0) +end +function c511000044.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(1-tp,500000148,0,0x4011,tc:GetBaseAttack(),tc:GetBaseDefense(), + tc:GetOriginalLevel(),tc:GetOriginalRace(),tc:GetOriginalAttribute()) then return end + local token=Duel.CreateToken(1-tp,500000148) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetBaseDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(tc:GetOriginalLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetOriginalRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetOriginalAttribute()) + token:RegisterEffect(e5) + Duel.SpecialSummon(token,0,tp,1-tp,false,false,POS_FACEUP) + Duel.Damage(1-tp,tc:GetAttack()/2,REASON_EFFECT) +end diff --git a/script/c511000045.lua b/script/c511000045.lua new file mode 100644 index 00000000..7763cad5 --- /dev/null +++ b/script/c511000045.lua @@ -0,0 +1,41 @@ +--Name of a Friend +function c511000045.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000045.target) + e1:SetOperation(c511000045.activate) + c:RegisterEffect(e1) +end +function c511000045.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsType(TYPE_MONSTER) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(Card.IsType,tp,0,LOCATION_GRAVE,1,nil,TYPE_MONSTER) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000045,0,0x11,0,0,4,RACE_SPELLCASTER,ATTRIBUTE_LIGHT) end + Duel.SelectTarget(tp,Card.IsType,tp,0,LOCATION_GRAVE,1,1,nil,TYPE_MONSTER) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000045.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc or not tc:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511000045,0,0x11,0,0,1,RACE_SPELLCASTER,ATTRIBUTE_LIGHT) then return end + c:AddMonsterAttribute(TYPE_NORMAL+TYPE_SPELL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(tc:GetOriginalCode()) + c:RegisterEffect(e1) + local e6=e1:Clone() + e6:SetCode(EFFECT_REMOVE_TYPE) + e6:SetValue(TYPE_TRAP) + c:RegisterEffect(e6) +end diff --git a/script/c511000046.lua b/script/c511000046.lua new file mode 100644 index 00000000..bd52cb32 --- /dev/null +++ b/script/c511000046.lua @@ -0,0 +1,70 @@ +--Amphibian Angel - Frog-Hael +function c511000046.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000046.spcon) + e1:SetOperation(c511000046.spop) + e1:SetValue(SUMMON_TYPE_SPECIAL+1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000046,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511000046.tg) + e2:SetOperation(c511000046.op) + c:RegisterEffect(e2) + --cannot be battle target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e3:SetCondition(c511000046.ccon) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c511000046.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,nil,2,nil) +end +function c511000046.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,nil,2,2,nil) + Duel.Release(g1,REASON_COST) +end +function c511000046.filter(c,e,tp) + return c:IsSetCard(0x12) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000046.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000046.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511000046.op(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000046.filter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp) + if g:GetCount()>0 then + local fid=e:GetHandler():GetFieldID() + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(511000046,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + g:KeepAlive() + end +end +function c511000046.ccon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_ONFIELD,0)>1 +end \ No newline at end of file diff --git a/script/c511000047.lua b/script/c511000047.lua new file mode 100644 index 00000000..f1326ec2 --- /dev/null +++ b/script/c511000047.lua @@ -0,0 +1,96 @@ +-- Chariot Pile +function c511000047.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000047.target) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000047,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000047.damcon) + e2:SetTarget(c511000047.damtg) + e2:SetOperation(c511000047.damop) + c:RegisterEffect(e2) + -- pay 800 + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000047,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511000047.descost) + e3:SetCondition(c511000047.descon) + e3:SetTarget(c511000047.destg) + e3:SetOperation(c511000047.desop) + c:RegisterEffect(e3) +end +function c511000047.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local a=Duel.GetAttacker() + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and c511000047.descon(e,tp,Group.FromCards(a),ep,ev,re,r,rp) + and c511000047.descost(e,tp,Group.FromCards(a),ep,ev,re,r,rp,0) and c511000047.destg(e,tp,Group.FromCards(a),ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(61965407,1)) then + e:SetCategory(CATEGORY_DESTROY) + e:SetProperty(0) + e:SetOperation(c511000047.desop) + c511000047.descost(e,tp,Group.FromCards(a),ep,ev,re,r,rp,1) + c511000047.destg(e,tp,Group.FromCards(a),ep,ev,re,r,rp,1) + elseif c511000047.damcon(e,tp,eg,ep,ev,re,r,rp) and c511000047.damtg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(61965407,1)) then + e:SetCategory(CATEGORY_DAMAGE) + e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e:SetOperation(c511000047.damop) + c511000047.damtg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c511000047.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp + and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) +end +function c511000047.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511000047)==0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) + e:GetHandler():RegisterFlagEffect(511000047,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000047.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000047.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c511000047.descon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511000047.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() and e:GetHandler():GetFlagEffect(511000047)==0 end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) + e:GetHandler():RegisterFlagEffect(511000047,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000047.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000048.lua b/script/c511000048.lua new file mode 100644 index 00000000..2b50cb35 --- /dev/null +++ b/script/c511000048.lua @@ -0,0 +1,48 @@ +-- Thousand Crisscross +-- Scripted by: UnknownGuest +function c511000048.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x20018) + e1:SetLabel(3) + e1:SetOperation(c511000048.op) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000048,1)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetLabelObject(e1) + e2:SetHintTiming(0,0x20018) + e2:SetCondition(c511000048.condition) + e2:SetOperation(c511000048.operation) + c:RegisterEffect(e2) +end +function c511000048.op(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(3) + if Duel.GetLP(tp)<2000 and Duel.SelectYesNo(tp,aux.Stringid(511000048,0)) then + Duel.SetLP(tp,2000,REASON_EFFECT) + local ct=e:GetLabel() + ct=ct-1 + e:SetLabel(ct) + if ct<=0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end + end +end +function c511000048.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<2000 and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511000048.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(tp,2000,REASON_EFFECT) + local ct=e:GetLabelObject():GetLabel() + ct=ct-1 + e:GetLabelObject():SetLabel(ct) + if ct<=0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c511000049.lua b/script/c511000049.lua new file mode 100644 index 00000000..95777f84 --- /dev/null +++ b/script/c511000049.lua @@ -0,0 +1,44 @@ +--Central Shield +function c511000049.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(c511000049.target) + e1:SetOperation(c511000049.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --Prevent Damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetValue(1) + e3:SetTarget(c511000049.dmtg) + c:RegisterEffect(e3) +end +function c511000049.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,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000049.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 c511000049.dmtg(e,c) + return c~=e:GetHandler():GetEquipTarget() +end \ No newline at end of file diff --git a/script/c511000050.lua b/script/c511000050.lua new file mode 100644 index 00000000..e8caa2a9 --- /dev/null +++ b/script/c511000050.lua @@ -0,0 +1,37 @@ +--Late Penalty +function c511000050.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) + --Skip Battle Phase + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000050,0)) + e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetHintTiming(0,TIMING_MAIN_END+TIMING_DRAW_PHASE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511000050.condition) + e2:SetOperation(c511000050.activate) + c:RegisterEffect(e2) +end +function c511000050.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:GetLevel()<=2 +end +function c511000050.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and not Duel.CheckPhaseActivity() + and Duel.IsExistingMatchingCard(c511000050.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==0 +end +function c511000050.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,1) + Duel.RegisterEffect(e1,tp) +end \ No newline at end of file diff --git a/script/c511000051.lua b/script/c511000051.lua new file mode 100644 index 00000000..c8165d4f --- /dev/null +++ b/script/c511000051.lua @@ -0,0 +1,56 @@ +--Divergence +function c511000051.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:SetTarget(c511000051.atktg1) + e1:SetOperation(c511000051.atkop) + c:RegisterEffect(e1) + --change target + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000051,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000051.condition) + e2:SetTarget(c511000051.atktg2) + e2:SetOperation(c511000051.atkop) + c:RegisterEffect(e2) +end +function c511000051.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsRace(RACE_MACHINE) +end +function c511000051.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c511000051.atktg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000051.filter(chkc) end + if chk==0 then return true end + e:SetProperty(0) + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and tp~=Duel.GetTurnPlayer() then + local at=Duel.GetAttackTarget() + if at and Duel.IsExistingTarget(c511000051.filter,tp,LOCATION_MZONE,0,1,at) and Duel.SelectYesNo(tp,aux.Stringid(511000051,1)) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000051.filter,tp,LOCATION_MZONE,0,1,1,at) + end + end +end +function c511000051.atktg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000051.filter(chkc) end + local at=Duel.GetAttackTarget() + if chk==0 then return Duel.IsExistingTarget(c511000051.filter,tp,LOCATION_MZONE,0,1,at) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000051.filter,tp,LOCATION_MZONE,0,1,1,at) +end +function c511000051.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511000052.lua b/script/c511000052.lua new file mode 100644 index 00000000..ef62ef1a --- /dev/null +++ b/script/c511000052.lua @@ -0,0 +1,60 @@ +--Pain to Power +function c511000052.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(c511000052.target) + e1:SetOperation(c511000052.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --Gain ATK + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DAMAGE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetCondition(c511000052.atkcon) + e3:SetTarget(c511000052.atktg) + e3:SetOperation(c511000052.atkop) + c:RegisterEffect(e3) +end +function c511000052.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 c511000052.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 c511000052.atktg(e,c) + return c~=e:GetHandler():GetEquipTarget() +end +function c511000052.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and bit.band(r,REASON_BATTLE)>0 and ep==tp +end +function c511000052.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(511000052)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ev) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511000053.lua b/script/c511000053.lua new file mode 100644 index 00000000..ba411a68 --- /dev/null +++ b/script/c511000053.lua @@ -0,0 +1,57 @@ +--Synchro Back +function c511000053.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_MAIN_END) + e1:SetTarget(c511000053.target) + e1:SetOperation(c511000053.activate) + c:RegisterEffect(e1) +end +function c511000053.tfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToExtra() +end +function c511000053.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000053.tfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000053.tfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511000053.tfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511000053.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local code=tc:GetOriginalCode() + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetCondition(c511000053.spcon) + e1:SetOperation(c511000053.spop) + e1:SetLabel(code) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + end + Duel.RegisterEffect(e1,tp) + end +end +function c511000053.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000053.filter2(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000053.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local code=e:GetLabel() + local g=Duel.SelectMatchingCard(tp,c511000053.filter2,tp,LOCATION_EXTRA,0,1,1,nil,code,e,tp) + if g then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511000054.lua b/script/c511000054.lua new file mode 100644 index 00000000..33c4613c --- /dev/null +++ b/script/c511000054.lua @@ -0,0 +1,38 @@ +--Climactic Barricade +function c511000054.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c511000054.operation) + c:RegisterEffect(e1) +end +function c511000054.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(c511000054.atktarget) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + --Damage LP + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c511000054.damop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c511000054.atktarget(e,c) + return c:GetLevel()<=4 +end +function c511000054.filter(c) + return c:IsFaceup() and c:GetLevel()<=4 +end +function c511000054.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511000054) + local dam=Duel.GetMatchingGroupCount(c511000054.filter,tp,0,LOCATION_MZONE,nil)*500 + Duel.Damage(1-tp,dam,REASON_EFFECT) +end diff --git a/script/c511000055.lua b/script/c511000055.lua new file mode 100644 index 00000000..bd162f09 --- /dev/null +++ b/script/c511000055.lua @@ -0,0 +1,48 @@ +--Ferocious Flora +function c511000055.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetDescription(aux.Stringid(511000055,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_CAL) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000055.condition) + e1:SetTarget(c511000055.target) + e1:SetOperation(c511000055.operation) + c:RegisterEffect(e1) +end +function c511000055.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (d~=nil and a:GetControler()==tp and a:IsRace(RACE_PLANT) and a:IsRelateToBattle()) + or (d~=nil and d:GetControler()==tp and d:IsRace(RACE_PLANT) and d:IsRelateToBattle()) +end +function c511000055.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if chkc then return (a:GetControler()==tp and chkc==d) or (d:GetControler()==tp and chkc==a) end + if chk==0 then + if a:GetControler()==tp then + return a:IsRace(RACE_PLANT) and d and d:IsCanBeEffectTarget(e) + else return d:IsRace(RACE_PLANT) and a:IsCanBeEffectTarget(e) end + end + if a:GetControler()==tp then Duel.SetTargetCard(d) + else Duel.SetTargetCard(a) end +end +function c511000055.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if not tc or not tc:IsRelateToEffect(e) or not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-800) + tc:RegisterEffect(e1) +end diff --git a/script/c511000056.lua b/script/c511000056.lua new file mode 100644 index 00000000..5de32e0f --- /dev/null +++ b/script/c511000056.lua @@ -0,0 +1,51 @@ +--Double Ripple +function c511000056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000056.target) + e1:SetOperation(c511000056.activate) + c:RegisterEffect(e1) +end +function c511000056.filter1(c,ntg) + local lv=c:GetLevel() + return c:IsFaceup() and lv>0 and c:IsType(TYPE_TUNER) and ntg:CheckWithSumEqual(Card.GetLevel,7-lv,1,99) +end +function c511000056.filter2(c) + return c:IsFaceup() and c:GetLevel()>0 and not c:IsType(TYPE_TUNER) +end +function c511000056.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000056.target(e,tp,eg,ep,ev,re,r,rp,chk) + local nt=Duel.GetMatchingGroup(c511000056.filter2,tp,LOCATION_MZONE,0,nil) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c511000056.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,2403771) + and Duel.IsExistingMatchingCard(c511000056.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,25862681) + and Duel.IsExistingMatchingCard(c511000056.filter1,tp,LOCATION_MZONE,0,1,nil,nt) + end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511000056.activate(e,tp,eg,ep,ev,re,r,rp) + local nt=Duel.GetMatchingGroup(c511000056.filter2,tp,LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000056.filter1,tp,LOCATION_MZONE,0,1,1,nil,nt) + local tc=g:GetFirst() + if tc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=nt:SelectWithSumEqual(tp,Card.GetLevel,7-tc:GetLevel(),1,99) + g:Merge(sg) + Duel.SendtoGrave(g,REASON_EFFECT) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp1=Duel.SelectMatchingCard(tp,c511000056.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,2403771):GetFirst() + Duel.SpecialSummonStep(sp1,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp2=Duel.SelectMatchingCard(tp,c511000056.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,25862681):GetFirst() + Duel.SpecialSummonStep(sp2,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511000059.lua b/script/c511000059.lua new file mode 100644 index 00000000..00c3a9f1 --- /dev/null +++ b/script/c511000059.lua @@ -0,0 +1,38 @@ +--Final Penalty +function c511000059.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000059.condition) + e1:SetTarget(c511000059.target) + e1:SetOperation(c511000059.activate) + c:RegisterEffect(e1) +end +function c511000059.filter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousPosition(POS_FACEUP) + and c==Duel.GetAttackTarget() and c:IsRace(RACE_FIEND) and c:IsLocation(LOCATION_GRAVE) +end +function c511000059.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000059.filter,1,nil,tp) +end +function c511000059.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local at=Duel.GetAttacker() + if chkc then return chkc==at end + if chk==0 then return at:IsControler(1-tp) and at:IsRelateToBattle() and at:IsCanBeEffectTarget(e) and at:IsDestructable() end + Duel.SetTargetCard(at) + local atk=at:GetAttack() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,at,1,0,0) +end +function c511000059.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetFirstTarget() + if a:IsRelateToEffect(e) then + local atk=a:GetAttack() + if Duel.Damage(1-tp,atk,REASON_EFFECT) then + Duel.Destroy(a,REASON_EFFECT) + end + end +end diff --git a/script/c511000060.lua b/script/c511000060.lua new file mode 100644 index 00000000..7213aa42 --- /dev/null +++ b/script/c511000060.lua @@ -0,0 +1,23 @@ +--Secret Passage +function c511000060.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511000060.attg) + c:RegisterEffect(e2) +end +function c511000060.filter(c,atk) + return c:IsFacedown() or c:GetAttack()<=atk +end +function c511000060.attg(e,c,tp,eg,ep,ev,re,r,rp) + return c:IsType(TYPE_MONSTER) and c:IsFaceup() and c:IsLevelBelow(2) and c:IsRace(RACE_SPELLCASTER) + and not c:IsHasEffect(EFFECT_CANNOT_ATTACK) and not not Duel.IsExistingMatchingCard(c511000060.filter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) +end \ No newline at end of file diff --git a/script/c511000061.lua b/script/c511000061.lua new file mode 100644 index 00000000..4544606e --- /dev/null +++ b/script/c511000061.lua @@ -0,0 +1,107 @@ +--Gjallarhorn +function c511000061.initial_effect(c) + --Return + local e2=Effect.CreateEffect(c) + --e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c511000061.rtg) + e2:SetOperation(c511000061.rop) + c:RegisterEffect(e2) +end +function c511000061.rfilter(c) + return c:IsFaceup() and c:IsSetCard(0x4B) +end +function c511000061.rtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000061.rfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.IsExistingTarget(c511000061.rfilter,tp,LOCATION_MZONE,0,1,nil) end + --e:SetType(EFFECT_TYPE_ACTIVATE) + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000061.rfilter,tp,LOCATION_MZONE,0,1,1,nil) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetLabelObject(e) + e1:SetOperation(c511000061.resetop) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + c:SetTurnCounter(0) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetLabel(3) + e2:SetCountLimit(1) + e2:SetCondition(c511000061.remcon) + e2:SetOperation(c511000061.remop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + c:RegisterEffect(e2) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,3) + c511000061[c]=e2 +end +function c511000061.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end +function c511000061.rop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetValue(c511000061.efilter) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end +function c511000061.resetop(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetType(EFFECT_TYPE_QUICK_O) +end +function c511000061.remcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000061.remop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==3 then + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE+CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(511000061) + e2:SetCountLimit(1) + e2:SetTarget(c511000061.damtg) + e2:SetOperation(c511000061.damop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) + c:RegisterEffect(e2) + c:ResetFlagEffect(1082946) + Duel.RaiseSingleEvent(c,511000061,e,r,rp,ep,0) + end +end +function c511000061.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) + g=g:Filter(Card.IsFaceup,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetSum(Card.GetAttack)) +end +function c511000061.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,nil) + local g2=g:Filter(Card.IsFaceup,nil) + local sum=g2:GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT) + g:AddCard(c) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511000062.lua b/script/c511000062.lua new file mode 100644 index 00000000..810525de --- /dev/null +++ b/script/c511000062.lua @@ -0,0 +1,43 @@ +--The Unchosen One +function c511000062.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000062.condition) + e1:SetTarget(c511000062.target) + e1:SetOperation(c511000062.operation) + c:RegisterEffect(e1) +end +function c511000062.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,2,nil) +end +function c511000062.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetCurrentPhase()~=PHASE_MAIN2 + and Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,2,nil) end + local g1=Duel.SelectTarget(1-tp,Card.IsDestructable,1-tp,LOCATION_MZONE,0,1,1,nil) + local g2=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,g1:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g2,1,0,0) +end +function c511000062.filter(c,tp,eg,ep,ev,re,r,rp) + return c:IsLocation(LOCATION_GRAVE) and c:IsType(TYPE_MONSTER) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c511000062.operation(e,tp,eg,ep,ev,re,r,rp) + local ex1,dg=Duel.GetOperationInfo(0,CATEGORY_DESTROY) + local dc=dg:GetFirst() + if dc:IsRelateToEffect(e) and Duel.Destroy(dc,REASON_EFFECT) then + if dc:IsCanBeSpecialSummoned(e,0,tp,false,false) and c511000062.filter(dc) then + Duel.BreakEffect() + Duel.SpecialSummon(dc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end \ No newline at end of file diff --git a/script/c511000063.lua b/script/c511000063.lua new file mode 100644 index 00000000..6801992b --- /dev/null +++ b/script/c511000063.lua @@ -0,0 +1,38 @@ +--Double Type Rescue +function c511000063.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000063.condition) + e1:SetTarget(c511000063.target) + e1:SetOperation(c511000063.activate) + c:RegisterEffect(e1) +end +function c511000063.filter(c) + return c:GetOriginalRace()~=c:GetRace() and not c:IsHasEffect(EFFECT_REMOVE_RACE) and not c:IsHasEffect(EFFECT_CHANGE_RACE) +end +function c511000063.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_MZONE,0,nil,TYPE_MONSTER) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + and (g:GetClassCount(Card.GetRace)>=2 or g:IsExists(c511000063.filter,1,nil)) +end +function c511000063.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000063.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and chkc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + if chk==0 then return Duel.IsExistingTarget(c511000063.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000063.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000063.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511000064.lua b/script/c511000064.lua new file mode 100644 index 00000000..46d117f0 --- /dev/null +++ b/script/c511000064.lua @@ -0,0 +1,48 @@ +--Slash Draw +function c511000064.initial_effect(c) + --discard deck + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES+CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000064.cost) + e1:SetTarget(c511000064.target) + e1:SetOperation(c511000064.operation) + c:RegisterEffect(e1) +end +function c511000064.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 c511000064.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000064.tfilter(c) + return c:IsDestructable() +end +function c511000064.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetFieldGroupCount(c:GetControler(),LOCATION_ONFIELD,LOCATION_ONFIELD) + if Duel.DiscardDeck(tp,g,REASON_EFFECT)>0 then + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local h=Duel.GetDecktopGroup(tp,1) + local tc=h:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if tc:GetCode()==511000064 then + Duel.BreakEffect() + if Duel.SendtoGrave(tc,REASON_COST)>0 then + local i=Duel.GetMatchingGroup(c511000064.tfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + local ct=Duel.Destroy(i,REASON_EFFECT) + Duel.Damage(1-tp,ct*1000,REASON_EFFECT) + end + end + Duel.ShuffleHand(tp) + end + end +end diff --git a/script/c511000065.lua b/script/c511000065.lua new file mode 100644 index 00000000..8b7602f6 --- /dev/null +++ b/script/c511000065.lua @@ -0,0 +1,43 @@ +--High and Low +function c511000065.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetTarget(c511000065.target) + e1:SetOperation(c511000065.operation) + c:RegisterEffect(e1) +end +function c511000065.target(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if chk==0 then return d and d:IsControler(tp) and d:IsFaceup() and Duel.IsPlayerCanDiscardDeck(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1) +end +function c511000065.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local ct=0 + while ct<3 and Duel.IsPlayerCanDiscardDeck(tp,1) and (ct==0 or Duel.SelectYesNo(tp,aux.Stringid(511000065,0))) do + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + Duel.DiscardDeck(tp,1,REASON_EFFECT) + if tc:IsType(TYPE_MONSTER) then + local ca=tc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ca) + e1:SetReset(RESET_EVENT+0x1fe0000) + d:RegisterEffect(e1) + end + if d:GetAttack() > a:GetAttack() then + Duel.BreakEffect() + Duel.Destroy(d,REASON_EFFECT) + if not d:IsLocation(LOCATION_MZONE) then + return + end + end + ct=ct+1 + end +end diff --git a/script/c511000066.lua b/script/c511000066.lua new file mode 100644 index 00000000..c325c96a --- /dev/null +++ b/script/c511000066.lua @@ -0,0 +1,79 @@ +--Jester's Panic +function c511000066.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000066.target) + e1:SetOperation(c511000066.activate) + c:RegisterEffect(e1) +end +function c511000066.filter(c) + return c:IsFacedown() and c:IsDestructable() +end +function c511000066.costfilter1(c) + return c:IsType(TYPE_SPELL) and not c:IsPublic() +end +function c511000066.costfilter2(c) + return c:IsType(TYPE_TRAP) and not c:IsPublic() +end +function c511000066.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c511000066.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000066.filter,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + Duel.SelectTarget(tp,c511000066.filter,tp,0,LOCATION_SZONE,1,1,nil) +end +function c511000066.dfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsFaceup() and c:IsLevelBelow(2) and c:IsRace(RACE_SPELLCASTER) + and not c:IsHasEffect(EFFECT_CANNOT_ATTACK) +end +function c511000066.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFacedown() then + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_SPELL) then + if Duel.IsExistingMatchingCard(c511000066.costfilter1,tp,LOCATION_HAND,0,1,nil) then + local g=Duel.SelectMatchingCard(tp,c511000066.costfilter1,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + if Duel.Destroy(tc,REASON_EFFECT)>0 then + local dg=Duel.GetMatchingGroup(c511000066.dfilter,tp,LOCATION_MZONE,0,nil) + local tg=dg:GetFirst() + while tg do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tg:RegisterEffect(e1) + tg=dg:GetNext() + end + end + end + end + if tc:IsType(TYPE_TRAP) then + if Duel.IsExistingMatchingCard(c511000066.costfilter2,tp,LOCATION_HAND,0,1,nil) then + local g=Duel.SelectMatchingCard(tp,c511000066.costfilter2,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + if Duel.Destroy(tc,REASON_EFFECT)>0 then + local dg=Duel.GetMatchingGroup(c511000066.dfilter,tp,LOCATION_MZONE,0,nil) + local tg=dg:GetFirst() + while tg do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tg:RegisterEffect(e1) + tg=dg:GetNext() + end + end + end + end + end +end +function c511000066.attg(e,c,tp,eg,ep,ev,re,r,rp) + return c:IsType(TYPE_MONSTER) and c:IsFaceup() and c:IsLevelBelow(2) and c:IsRace(RACE_SPELLCASTER) + and not c:IsHasEffect(EFFECT_CANNOT_ATTACK) and not not Duel.IsExistingMatchingCard(c511000060.filter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) +end \ No newline at end of file diff --git a/script/c511000067.lua b/script/c511000067.lua new file mode 100644 index 00000000..6893e920 --- /dev/null +++ b/script/c511000067.lua @@ -0,0 +1,93 @@ +--Endless Loan +function c511000067.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000067,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c511000067.condition) + e2:SetTarget(c511000067.sptg) + e2:SetOperation(c511000067.spop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000067,1)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetCondition(c511000067.descon) + e4:SetCost(c511000067.descost) + e4:SetTarget(c511000067.destg) + e4:SetOperation(c511000067.desop) + c:RegisterEffect(e4) +end +function c511000067.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ep~=tp and ec:GetCode()~=511000068 +end +function c511000067.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000068,0,0x4011,0,0,1,RACE_ROCK,ATTRIBUTE_LIGHT) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000067.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000068,0,0x4011,0,0,1,RACE_ROCK,ATTRIBUTE_LIGHT) then + local token=Duel.CreateToken(tp,511000068) + Duel.SpecialSummonStep(token,0x20,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_NONSUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + token:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3,true) + end + Duel.SpecialSummonComplete() +end +function c511000067.descon(e,tp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=e:GetHandler():GetControler() and tp~=e:GetHandler():GetControler() and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c511000067.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c511000067.desfilter(c) + return c:IsCode(511000068) and c:IsDestructable() +end +function c511000067.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsOnField() and c511000001.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000067.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000067.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000067.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000069.lua b/script/c511000069.lua new file mode 100644 index 00000000..f8909980 --- /dev/null +++ b/script/c511000069.lua @@ -0,0 +1,40 @@ +--Toichi the Nefarious Debt Collector +function c511000069.initial_effect(c) + c:SetUniqueOnField(1,0,511000069) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000069,0)) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000069.target) + e1:SetOperation(c511000069.operation) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c511000069.indcon) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511000069.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,511000068) end + local dam=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,511000068)*1000 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000069.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local d=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,511000068)*1000 + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000069.indfilter(c) + return c:IsFaceup() and c:IsCode(511000068) +end +function c511000069.indcon(e) + return Duel.IsExistingMatchingCard(c511000069.indfilter,e:GetOwnerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end diff --git a/script/c511000070.lua b/script/c511000070.lua new file mode 100644 index 00000000..2f9a18d8 --- /dev/null +++ b/script/c511000070.lua @@ -0,0 +1,61 @@ +--Wiretap (anime) +function c511000070.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_DECK_REVERSE_CHECK) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000070.condition) + e1:SetTarget(c511000070.target) + e1:SetOperation(c511000070.activate) + c:RegisterEffect(e1) +end +function c511000070.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511000070.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_TODECK,eg,1,0,0) + end +end +function c511000070.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=re:GetHandler() + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + ec:CancelToGrave() + Duel.SendtoDeck(ec,nil,2,REASON_EFFECT) + if not ec:IsLocation(LOCATION_DECK) then return end + Duel.ShuffleDeck(1-tp) + ec:ReverseInDeck() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511000070.aclimit) + e1:SetLabel(re:GetHandler():GetCode()) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_TO_HAND) + e2:SetLabelObject(e1) + e2:SetCondition(c511000070.negcon) + e2:SetOperation(c511000070.negop) + e2:SetReset(RESET_EVENT+0x1de0000) + ec:RegisterEffect(e2) + end +end +function c511000070.aclimit(e,re,tp) + return re:GetHandler():IsCode(e:GetLabel()) +end +function c511000070.negcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DRAW) +end +function c511000070.negop(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetValue(0) +end diff --git a/script/c511000071.lua b/script/c511000071.lua new file mode 100644 index 00000000..f29aa6d7 --- /dev/null +++ b/script/c511000071.lua @@ -0,0 +1,105 @@ +--Terminal Countdown +function c511000071.initial_effect(c) + --Cannot Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetOperation(c511000071.op) + c:RegisterEffect(e1) + --Set Card + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000071,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_REPEAT) + e2:SetCountLimit(1) + e2:SetCondition(c511000071.setcon) + e2:SetTarget(c511000071.settg) + e2:SetOperation(c511000071.setop) + c:RegisterEffect(e2) + --Damage LP + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000071,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1) + e3:SetCondition(c511000071.damcon) + --e3:SetTarget(c511000071.damtg) + e3:SetOperation(c511000071.damop) + c:RegisterEffect(e3) +end +function c511000071.op(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,0) + e1:SetValue(c511000071.aclimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) +end +function c511000071.setcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000071.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511000071.filter(c) + return (c:IsType(TYPE_TRAP) or c:IsType(TYPE_SPELL)) and c:IsSSetable() +end +function c511000071.settg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c511000071.filter,tp,LOCATION_DECK,0,1,nil) end +end +function c511000071.setop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local g=Duel.SelectMatchingCard(tp,c511000071.filter,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if g:GetCount()>0 then + Duel.ConfirmCards(1-tp,tc) + Duel.SSet(tp,g:GetFirst()) + c:SetCardTarget(tc) + end +end +function c511000071.damcon(e,tp,eg,ep,ev,re,r,rp) + local tn=Duel.GetTurnPlayer() + local ph=Duel.GetCurrentPhase() + return (tn==tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2)) +end +function c511000071.damfilter(c,rc) + return rc:GetCardTarget():IsContains(c) +end +function c511000071.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local dg=Duel.GetMatchingGroup(c511000071.damfilter,tp,LOCATION_SZONE,LOCATION_SZONE,nil,c) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() + and Duel.IsExistingTarget(c511000071.damfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil,e,tp) + and dg:IsAbleToGraveAsCost() end +end +function c511000071.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetCardTargetCount()>0 then + local dg=Duel.GetMatchingGroup(c511000071.damfilter,tp,LOCATION_SZONE,LOCATION_SZONE,nil,c) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) + local ct=Duel.SendtoGrave(dg,REASON_EFFECT) + if ct==1 then + Duel.Damage(1-tp,500,REASON_EFFECT) + end + if ct==2 then + Duel.Damage(1-tp,1500,REASON_EFFECT) + end + if ct==3 then + Duel.Damage(1-tp,3000,REASON_EFFECT) + end + if ct==4 then + Duel.Damage(1-tp,6000,REASON_EFFECT) + end + end +end diff --git a/script/c511000072.lua b/script/c511000072.lua new file mode 100644 index 00000000..a9c2035b --- /dev/null +++ b/script/c511000072.lua @@ -0,0 +1,78 @@ +--T.G. Cyber Magician (TF5) +function c511000072.initial_effect(c) + --synchro limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c511000072.synlimit) + c:RegisterEffect(e1) + --synchro custom + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetTarget(c511000072.syntg) + e2:SetValue(1) + e2:SetOperation(c511000072.synop) + c:RegisterEffect(e2) + --Type Machine + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_ADD_RACE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(RACE_MACHINE) + c:RegisterEffect(e3) + --Add to hand + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000072,0)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c511000072.scon) + e4:SetTarget(c511000072.stg) + e4:SetOperation(c511000072.sop) + c:RegisterEffect(e4) +end +function c511000072.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x27) +end +c511000072.tuner_filter=aux.FALSE +function c511000072.synfilter(c,syncard,tuner,f,lv) + return c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) and c:GetLevel()==lv +end +function c511000072.syntg(e,syncard,f,minc) + local c=e:GetHandler() + if minc>1 then return false end + local lv=syncard:GetLevel()-c:GetLevel() + if lv<=0 then return false end + return Duel.IsExistingMatchingCard(c511000072.synfilter,syncard:GetControler(),LOCATION_HAND,0,1,nil,syncard,c,f,lv) +end +function c511000072.synop(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local g=Duel.SelectMatchingCard(tp,c511000072.synfilter,tp,LOCATION_HAND,0,1,1,nil,syncard,c,f,lv) + Duel.SetSynchroMaterial(g) +end +function c511000072.scon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000072.sfilter(c) + return c:IsCode(64910482) and c:IsAbleToHand() +end +function c511000072.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000072.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000072.sop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000072.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000073.lua b/script/c511000073.lua new file mode 100644 index 00000000..4e7d5919 --- /dev/null +++ b/script/c511000073.lua @@ -0,0 +1,53 @@ +--T.G. Rush Rhino (TF5) +function c511000073.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000073.atcon) + e1:SetValue(400) + c:RegisterEffect(e1) + --Type Machine + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_ADD_RACE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(RACE_MACHINE) + c:RegisterEffect(e2) + --Add to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000073,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511000073.scon) + e3:SetTarget(c511000073.stg) + e3:SetOperation(c511000073.sop) + c:RegisterEffect(e3) +end +function c511000073.atcon(e) + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and e:GetHandler()==Duel.GetAttacker() +end +function c511000073.scon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000073.sfilter(c) + return c:IsCode(36687247) and c:IsAbleToHand() +end +function c511000073.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000073.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000073.sop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000073.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000074.lua b/script/c511000074.lua new file mode 100644 index 00000000..dd91a499 --- /dev/null +++ b/script/c511000074.lua @@ -0,0 +1,54 @@ +--T.G. Striker (TF5) +function c511000074.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000074.spcon) + c:RegisterEffect(e1) + --Type Machine + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_ADD_RACE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(RACE_MACHINE) + c:RegisterEffect(e2) + --Add to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000074,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511000074.scon) + e3:SetTarget(c511000074.stg) + e3:SetOperation(c511000074.sop) + c:RegisterEffect(e3) +end +function c511000074.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511000074.scon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000074.sfilter(c) + return c:IsCode(1315120) and c:IsAbleToHand() +end +function c511000074.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000074.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000074.sop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000074.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c511000075.lua b/script/c511000075.lua new file mode 100644 index 00000000..035e5754 --- /dev/null +++ b/script/c511000075.lua @@ -0,0 +1,68 @@ +--T.G. Warwolf +function c511000075.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000075,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511000075.spcon) + e1:SetTarget(c511000075.sptg) + e1:SetOperation(c511000075.spop) + c:RegisterEffect(e1) + --Type Machine + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_ADD_RACE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(RACE_MACHINE) + c:RegisterEffect(e2) + --Add to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000075,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511000075.scon) + e3:SetTarget(c511000075.stg) + e3:SetOperation(c511000075.sop) + c:RegisterEffect(e3) +end +function c511000075.cfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLevelBelow(2) +end +function c511000075.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000075.cfilter,1,nil,tp) +end +function c511000075.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000075.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511000075.scon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000075.sfilter(c) + return c:IsCode(293542) and c:IsAbleToHand() +end +function c511000075.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000075.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000075.sop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000075.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000076.lua b/script/c511000076.lua new file mode 100644 index 00000000..0eec03f5 --- /dev/null +++ b/script/c511000076.lua @@ -0,0 +1,122 @@ +--T.G. Blade Blaster (TF5) +function c511000076.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO)) + c:EnableReviveLimit() + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000076,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000076.discon) + e1:SetCost(c511000076.discost) + e1:SetTarget(c511000076.distg) + e1:SetOperation(c511000076.disop) + c:RegisterEffect(e1) + --negate attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000076,1)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511000076.rmcon) + e2:SetTarget(c511000076.rmtg) + e2:SetOperation(c511000076.rmop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000076,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_REMOVED) + e3:SetCountLimit(1) + e3:SetCondition(c511000076.spcon) + e3:SetTarget(c511000076.sptg) + e3:SetOperation(c511000076.spop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000076,3)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c511000076.sscon) + e4:SetTarget(c511000076.sstg) + e4:SetOperation(c511000076.ssop) + c:RegisterEffect(e4) +end +function c511000076.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not Duel.IsChainDisablable(ev) then return false end + return re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) and Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):IsContains(c) +end +function c511000076.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000076.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511000076.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511000076.rmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp +end +function c511000076.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc==Duel.GetAttacker() end + if chk==0 then return e:GetHandler():IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c511000076.rmop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if Duel.Remove(c,POS_FACEUP,REASON_EFFECT)~=0 then + c:RegisterFlagEffect(511000076,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c511000076.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000076)~=0 +end +function c511000076.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 c511000076.spop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511000076.sscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000076.ssfilter(c,e,tp) + return c:IsSetCard(0x27) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000076.sstg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000076.ssfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000076.ssfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000076.ssfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511000076.ssop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511000077.lua b/script/c511000077.lua new file mode 100644 index 00000000..6eac1d26 --- /dev/null +++ b/script/c511000077.lua @@ -0,0 +1,48 @@ +--T.G. Power Gladiator (TF5) +function c511000077.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x27),aux.NonTuner(nil),1) + c:EnableReviveLimit() + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e1) + --Type Machine + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_ADD_RACE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(RACE_MACHINE) + c:RegisterEffect(e2) + --Add to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000077,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511000077.scon) + e3:SetTarget(c511000077.stg) + e3:SetOperation(c511000077.sop) + c:RegisterEffect(e3) +end +function c511000077.scon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000077.sfilter(c) + return c:IsSetCard(0x27) and c:IsAbleToHand() +end +function c511000077.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000077.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000077.sop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000077.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000078.lua b/script/c511000078.lua new file mode 100644 index 00000000..ed653e89 --- /dev/null +++ b/script/c511000078.lua @@ -0,0 +1,84 @@ +--T.G. Wonder Magician (TF5) +function c511000078.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --synchro limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c511000078.synlimit) + c:RegisterEffect(e1) + --synchro effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000078,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,0x1c0+TIMING_MAIN_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511000078.sccon) + e2:SetTarget(c511000078.sctg) + e2:SetOperation(c511000078.scop) + c:RegisterEffect(e2) + --Type Machine + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_ADD_RACE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(RACE_MACHINE) + c:RegisterEffect(e3) + --Add to hand + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000078,1)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c511000078.scon) + e4:SetTarget(c511000078.stg) + e4:SetOperation(c511000078.sop) + c:RegisterEffect(e4) +end +function c511000078.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x27) +end +function c511000078.sccon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetTurnPlayer()~=tp + and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) +end +function c511000078.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,1,nil,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000078.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetControler()~=tp or not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,nil,c) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SynchroSummon(tp,sg:GetFirst(),c) + end +end +function c511000078.scon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000078.sfilter(c) + return c:IsSetCard(0x27) and c:IsAbleToHand() +end +function c511000078.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000078.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000078.sop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000078.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000079.lua b/script/c511000079.lua new file mode 100644 index 00000000..4a9eac64 --- /dev/null +++ b/script/c511000079.lua @@ -0,0 +1,67 @@ +--属性重力-アトリビュート・グラビティ +function c511000079.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --must attack (light) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511000079.atktg) + e2:SetLabel(ATTRIBUTE_LIGHT) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_MUST_BE_ATTACKED) + e3:SetValue(c511000079.atkval) + c:RegisterEffect(e3) + local e5=e2:Clone() + e5:SetLabel(ATTRIBUTE_DARK) + c:RegisterEffect(e2) + local e6=e3:Clone() + e6:SetLabel(ATTRIBUTE_DARK) + c:RegisterEffect(e6) + local e8=e2:Clone() + e8:SetLabel(ATTRIBUTE_WATER) + c:RegisterEffect(e8) + local e9=e3:Clone() + e9:SetLabel(ATTRIBUTE_WATER) + c:RegisterEffect(e9) + local e11=e2:Clone() + e11:SetLabel(ATTRIBUTE_FIRE) + c:RegisterEffect(e11) + local e12=e3:Clone() + e12:SetLabel(ATTRIBUTE_FIRE) + c:RegisterEffect(e12) + local e14=e2:Clone() + e14:SetLabel(ATTRIBUTE_WIND) + c:RegisterEffect(e14) + local e15=e3:Clone() + e15:SetLabel(ATTRIBUTE_WIND) + c:RegisterEffect(e15) + local e17=e2:Clone() + e17:SetLabel(ATTRIBUTE_DEVINE) + c:RegisterEffect(e17) + local e18=e3:Clone() + e18:SetLabel(ATTRIBUTE_DEVINE) + c:RegisterEffect(e18) + local e20=e2:Clone() + e20:SetLabel(ATTRIBUTE_EARTH) + c:RegisterEffect(e20) + local e21=e3:Clone() + e21:SetLabel(ATTRIBUTE_EARTH) + c:RegisterEffect(e21) +end +function c511000079.atktg(e,c) + return c:IsAttribute(e:GetLabel()) + and Duel.IsExistingMatchingCard(c511000079.adval,c:GetControler(),0,LOCATION_MZONE,1,nil,e:GetLabel()) +end +function c511000079.adval(c,att) + return c:IsFaceup() and c:IsAttribute(att) +end +function c511000079.atkval(e,c) + return not c:IsImmuneToEffect(e) and c:IsAttribute(e:GetLabel()) +end diff --git a/script/c511000080.lua b/script/c511000080.lua new file mode 100644 index 00000000..0426675d --- /dev/null +++ b/script/c511000080.lua @@ -0,0 +1,40 @@ +--Cold Sleeper +function c511000080.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000080,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c511000080.sptg) + e1:SetOperation(c511000080.spop) + c:RegisterEffect(e1) +end +function c511000080.cfilter(c,e,tp) + return c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000080.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and eg:IsExists(c511000080.cfilter,1,nil,e,tp) end + local dis=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0) + e:SetLabel(dis) + local g=eg:Filter(c511000080.cfilter,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000080.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetOperation(c511000080.disop) + e1:SetLabel(e:GetLabel()) + e:GetHandler():RegisterEffect(e1) + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonComplete() +end +function c511000080.disop(e,tp) + return e:GetLabel() +end diff --git a/script/c511000081.lua b/script/c511000081.lua new file mode 100644 index 00000000..995e5cce --- /dev/null +++ b/script/c511000081.lua @@ -0,0 +1,57 @@ +--Illusion Ice Sculpture +function c511000081.initial_effect(c) + c:SetUniqueOnField(1,0,511000081) + --atk def + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000081,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000081.target) + e1:SetOperation(c511000081.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + --at limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e4:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e4:SetTarget(c511000081.atlimit) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511000081.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 true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000081.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetValue(tc:GetBaseDefense()) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end +end +function c511000081.atlimit(e,c) + return c~=e:GetHandler() +end \ No newline at end of file diff --git a/script/c511000082.lua b/script/c511000082.lua new file mode 100644 index 00000000..d662d357 --- /dev/null +++ b/script/c511000082.lua @@ -0,0 +1,23 @@ +--Snow Fairy +function c511000082.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) + --cannot activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,1) + e2:SetValue(c511000082.aclimit) + c:RegisterEffect(e2) +end +function c511000082.aclimit(e,re,tp) + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_SPELL) then return false end + local c=re:GetHandler() + return not c:IsLocation(LOCATION_SZONE) or Duel.GetTurnCount()-c:GetTurnID()<2 +end diff --git a/script/c511000083.lua b/script/c511000083.lua new file mode 100644 index 00000000..7b9f558b --- /dev/null +++ b/script/c511000083.lua @@ -0,0 +1,63 @@ +--White Blizzard +function c511000083.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Damage LP + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000083,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c511000083.damcon) + e2:SetTarget(c511000083.damtg) + e2:SetOperation(c511000083.damop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000083,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511000083.descon) + e3:SetTarget(c511000083.destg) + e3:SetOperation(c511000083.desop) + c:RegisterEffect(e3) +end +function c511000083.cfil(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp +end +function c511000083.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000083.cfil,1,nil,1-tp) +end +function c511000083.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511000083.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000083.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000083.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000083.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511000084.lua b/script/c511000084.lua new file mode 100644 index 00000000..43f0099b --- /dev/null +++ b/script/c511000084.lua @@ -0,0 +1,20 @@ +--White Night Fort +function c511000084.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot trigger + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,1) + e2:SetValue(c511000084.aclimit) + c:RegisterEffect(e2) +end +function c511000084.aclimit(e,re,tp) + return re:IsActiveType(TYPE_TRAP) and Duel.GetTurnPlayer()~=re:GetHandler():GetControler() +end diff --git a/script/c511000085.lua b/script/c511000085.lua new file mode 100644 index 00000000..9de9d464 --- /dev/null +++ b/script/c511000085.lua @@ -0,0 +1,55 @@ +--Clear Sacrifice +function c511000085.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000085.cost) + e1:SetTarget(c511000085.target) + e1:SetOperation(c511000085.operation) + c:RegisterEffect(e1) +end +function c511000085.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511000085.filter(c,tp) + local mi,ma=c:GetTributeRequirement() + return c:GetLevel()>4 and (c:IsCode(97811903) or c:IsCode(82044279) or c:IsSetCard(0x306)) + and Duel.IsExistingMatchingCard(c511000085.rfilter,tp,LOCATION_GRAVE,0,mi,nil) and not c:IsPublic() +end +function c511000085.rfilter(c) + return c:IsType(TYPE_MONSTER) and (c:IsCode(97811903) or c:IsCode(82044279) or c:IsSetCard(0x306)) and c:IsAbleToRemoveAsCost() +end +function c511000085.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511000085.filter,tp,LOCATION_HAND,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local tc=Duel.SelectMatchingCard(tp,c511000085.filter,tp,LOCATION_HAND,0,1,1,nil,tp):GetFirst() + Duel.ConfirmCards(1-tp,tc) + Duel.ShuffleHand(tp) + local mi,ma=tc:GetTributeRequirement() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c511000085.rfilter,tp,LOCATION_GRAVE,0,mi,ma,nil) + Duel.Remove(rg,POS_FACEUP,REASON_COST) + Duel.SetTargetCard(tc) +end +function c511000085.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(30435145,0)) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511000085.ntcon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511000085.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511000086.lua b/script/c511000086.lua new file mode 100644 index 00000000..10ffc62f --- /dev/null +++ b/script/c511000086.lua @@ -0,0 +1,100 @@ +--Bounce Spell +function c511000086.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000086.target) + e1:SetOperation(c511000086.activate) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_CONTROL) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511000086.condition) + e2:SetTarget(c511000086.target2) + e2:SetOperation(c511000086.activate2) + c:RegisterEffect(e2) +end +function c511000086.filter(c) + return c:IsType(TYPE_SPELL) and c:IsFaceup() and c:IsAbleToChangeControler() +end +function c511000086.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511000086.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c511000086.filter,tp,0,LOCATION_SZONE,1,e:GetHandler()) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.GetCurrentChain()==0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511000086.filter,tp,0,LOCATION_SZONE,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511000086.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if tc:IsType(TYPE_PENDULUM) then + local token=Duel.CreateToken(tp,tc:GetOriginalCode()) + Duel.MoveToField(token,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SendtoDeck(tc,nil,-2,REASON_EFFECT) + else + local tpe=tc:GetType() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + end + end +end +function c511000086.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()>0 +end +function c511000086.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511000086.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c511000086.filter,tp,0,LOCATION_SZONE,1,e:GetHandler()) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511000086.filter,tp,0,LOCATION_SZONE,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511000086.activate2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if tc:IsType(TYPE_PENDULUM) then + local token=Duel.CreateToken(tp,tc:GetOriginalCode()) + Duel.MoveToField(token,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SendtoDeck(tc,nil,-2,REASON_EFFECT) + else + local tpe=tc:GetType() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if tc==re:GetHandler() then + local op=re:GetOperation() + if op then + Duel.ChangeChainOperation(ev,c511000086.repop(tp,op)) + end + end + end + end +end +function c511000086.repop(tp2,op) + return function(e,tp,eg,ep,ev,re,r,rp) + op(e,tp2,eg,ep,ev,re,r,rp) + end +end diff --git a/script/c511000087.lua b/script/c511000087.lua new file mode 100644 index 00000000..7f7923b2 --- /dev/null +++ b/script/c511000087.lua @@ -0,0 +1,65 @@ +--Summoning Clock +function c511000087.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000087.condition) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000087,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511000087.spcost) + e2:SetTarget(c511000087.sptg) + e2:SetOperation(c511000087.spop) + c:RegisterEffect(e2) + --turn + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_PHASE_START+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000087.turncount) + c:RegisterEffect(e3) +end +function c511000087.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp +end +function c511000087.turncount(e,tp,eg,ep,ev,re,r,rp) + if tp~=Duel.GetTurnPlayer() then return end + e:GetHandler():AddCounter(0x1105,1) +end +function c511000087.spfilter(c,e,tp) + return c:IsSummonableCard() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000087.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ct=c:GetCounter(0x1105) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and Duel.CheckReleaseGroup(tp,nil,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct and Duel.IsExistingMatchingCard(c511000087.spfilter,tp,LOCATION_HAND,0,ct,nil,e,tp) end + local g=Duel.SelectReleaseGroup(tp,aux.TRUE,1,1,nil) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) + Duel.Release(g,REASON_COST) + e:SetLabel(ct) +end +function c511000087.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return true end + local ct=e:GetLabel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000087.spfilter,tp,LOCATION_HAND,0,ct,ct,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) + e:SetLabel(0) +end +function c511000087.spop(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000088.lua b/script/c511000088.lua new file mode 100644 index 00000000..f419c69a --- /dev/null +++ b/script/c511000088.lua @@ -0,0 +1,49 @@ +--Royal Straight +function c511000088.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000088.cost) + e1:SetTarget(c511000088.target) + e1:SetOperation(c511000088.activate) + c:RegisterEffect(e1) +end +function c511000088.filter(c,e,tp) + return c:IsCode(511000089) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000088.filter1(c) + return c:IsCode(25652259) and c:IsPosition(POS_FACEUP_ATTACK) +end +function c511000088.filter2(c) + return c:IsCode(64788463) and c:IsPosition(POS_FACEUP_ATTACK) +end +function c511000088.filter3(c) + return c:IsCode(90876561) and c:IsPosition(POS_FACEUP_ATTACK) +end +function c511000088.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511000088.filter1,1,nil) + and Duel.CheckReleaseGroup(tp,c511000088.filter2,1,nil) + and Duel.CheckReleaseGroup(tp,c511000088.filter3,1,nil) end + local g1=Duel.SelectReleaseGroup(tp,c511000088.filter1,1,1,nil) + local g2=Duel.SelectReleaseGroup(tp,c511000088.filter2,1,1,nil) + local g3=Duel.SelectReleaseGroup(tp,c511000088.filter3,1,1,nil) + g1:Merge(g2) + g1:Merge(g3) + Duel.Release(g1,REASON_COST) +end +function c511000088.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000088.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) +end +function c511000088.activate(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,c511000088.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) + g:GetFirst():CompleteProcedure() + end +end diff --git a/script/c511000089.lua b/script/c511000089.lua new file mode 100644 index 00000000..fd224a74 --- /dev/null +++ b/script/c511000089.lua @@ -0,0 +1,70 @@ +--Royal Straight Slasher +function c511000089.initial_effect(c) + c:EnableReviveLimit() + --spsummon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000089.splimit) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(85771019,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511000089.descost) + e2:SetTarget(c511000089.destg) + e2:SetOperation(c511000089.desop) + c:RegisterEffect(e2) +end +function c511000089.splimit(e,se,sp,st) + return st==(SUMMON_TYPE_SPECIAL+511000088) +end +function c511000089.desfilter1(c) + return c:IsType(TYPE_MONSTER) and c:GetLevel()==1 and c:IsAbleToGrave() +end +function c511000089.desfilter2(c) + return c:IsType(TYPE_MONSTER) and c:GetLevel()==2 and c:IsAbleToGrave() +end +function c511000089.desfilter3(c) + return c:IsType(TYPE_MONSTER) and c:GetLevel()==3 and c:IsAbleToGrave() +end +function c511000089.desfilter4(c) + return c:IsType(TYPE_MONSTER) and c:GetLevel()==4 and c:IsAbleToGrave() +end +function c511000089.desfilter5(c) + return c:IsType(TYPE_MONSTER) and c:GetLevel()==5 and c:IsAbleToGrave() +end +function c511000089.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000089.desfilter1,tp,LOCATION_DECK,0,1,nil) + and Duel.IsExistingMatchingCard(c511000089.desfilter2,tp,LOCATION_DECK,0,1,nil) + and Duel.IsExistingMatchingCard(c511000089.desfilter3,tp,LOCATION_DECK,0,1,nil) + and Duel.IsExistingMatchingCard(c511000089.desfilter4,tp,LOCATION_DECK,0,1,nil) + and Duel.IsExistingMatchingCard(c511000089.desfilter5,tp,LOCATION_DECK,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511000089.desfilter1,tp,LOCATION_DECK,0,1,1,nil) + local g2=Duel.SelectMatchingCard(tp,c511000089.desfilter2,tp,LOCATION_DECK,0,1,1,nil) + local g3=Duel.SelectMatchingCard(tp,c511000089.desfilter3,tp,LOCATION_DECK,0,1,1,nil) + local g4=Duel.SelectMatchingCard(tp,c511000089.desfilter4,tp,LOCATION_DECK,0,1,1,nil) + local g5=Duel.SelectMatchingCard(tp,c511000089.desfilter5,tp,LOCATION_DECK,0,1,1,nil) + g1:Merge(g2) + g1:Merge(g3) + g1:Merge(g4) + g1:Merge(g5) + if g1:GetCount()==5 then + Duel.SendtoGrave(g1,REASON_COST) + end +end +function c511000089.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0,nil) +end +function c511000089.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(sg,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000090.lua b/script/c511000090.lua new file mode 100644 index 00000000..53da7b3b --- /dev/null +++ b/script/c511000090.lua @@ -0,0 +1,81 @@ +--Ground Erosion +function c511000090.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000090.reset) + c:RegisterEffect(e1) + --Negate effect/Decrease ATK + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000090,0)) + e2:SetCategory(CATEGORY_DISABLE+CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511000090.cost) + e2:SetTarget(c511000090.tg) + e2:SetOperation(c511000090.op) + c:RegisterEffect(e2) + --turn + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_PHASE_START+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000090.turncount) + c:RegisterEffect(e3) +end +function c511000090.turncount(e,tp,eg,ep,ev,re,r,rp) + if tp~=Duel.GetTurnPlayer() then return end + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) +end +function c511000090.reset(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():SetTurnCounter(0) +end +function c511000090.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000090.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + if chkc then return chkc:IsControler(1-tp) and chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return c:GetTurnCounter()>0 and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511000090.op(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + local tc=Duel.GetFirstTarget() + local dec=ct*500 + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(-dec) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end diff --git a/script/c511000091.lua b/script/c511000091.lua new file mode 100644 index 00000000..a9eb2395 --- /dev/null +++ b/script/c511000091.lua @@ -0,0 +1,66 @@ +--Turn Jump +function c511000091.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_START,TIMING_BATTLE_START) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000091.condition) + e1:SetOperation(c511000091.operation) + c:RegisterEffect(e1) +end +function c511000091.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511000091.filter(c) + return c:GetAttackedCount()>0 +end +function c511000091.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()==tp then + Duel.SkipPhase(tp,PHASE_DRAW,RESET_PHASE+PHASE_END,4) + Duel.SkipPhase(tp,PHASE_MAIN1,RESET_PHASE+PHASE_END,4) + Duel.SkipPhase(tp,PHASE_BATTLE,RESET_PHASE+PHASE_END,2,2) + Duel.SkipPhase(tp,PHASE_MAIN2,RESET_PHASE+PHASE_END,2) + Duel.SkipPhase(1-tp,PHASE_DRAW,RESET_PHASE+PHASE_END,3) + Duel.SkipPhase(1-tp,PHASE_MAIN1,RESET_PHASE+PHASE_END,3) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_END,3,3) + Duel.SkipPhase(1-tp,PHASE_MAIN2,RESET_PHASE+PHASE_END,3) + elseif Duel.GetTurnPlayer()~=tp then + Duel.SkipPhase(1-tp,PHASE_DRAW,RESET_PHASE+PHASE_END,4) + Duel.SkipPhase(1-tp,PHASE_MAIN1,RESET_PHASE+PHASE_END,4) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_END,2,2) + Duel.SkipPhase(1-tp,PHASE_MAIN2,RESET_PHASE+PHASE_END,2) + Duel.SkipPhase(tp,PHASE_DRAW,RESET_PHASE+PHASE_END,3) + Duel.SkipPhase(tp,PHASE_MAIN1,RESET_PHASE+PHASE_END,3) + Duel.SkipPhase(tp,PHASE_BATTLE,RESET_PHASE+PHASE_END,3,3) + Duel.SkipPhase(tp,PHASE_MAIN2,RESET_PHASE+PHASE_END,3) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_PHASE+PHASE_END,6) + Duel.RegisterEffect(e1,tp) + local be=Effect.CreateEffect(e:GetHandler()) + be:SetType(EFFECT_TYPE_FIELD) + be:SetCode(EFFECT_CANNOT_EP) + be:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + be:SetTargetRange(1,1) + be:SetReset(RESET_PHASE+PHASE_MAIN1,7) + Duel.RegisterEffect(be,tp) + local sg=Duel.GetMatchingGroup(c511000091.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if sg:GetCount()>0 then + local tc=sg:GetFirst() + while tc do + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,7) + tc:RegisterEffect(e2) + tc=sg:GetNext() + end + end +end diff --git a/script/c511000092.lua b/script/c511000092.lua new file mode 100644 index 00000000..3ad0b74c --- /dev/null +++ b/script/c511000092.lua @@ -0,0 +1,39 @@ +--Blue Expense Falcon +function c511000092.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000092,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000092.sumtg) + e1:SetOperation(c511000092.sumop) + c:RegisterEffect(e1) + --syn limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(c511000092.synlimit) + c:RegisterEffect(e2) +end +function c511000092.synlimit(e,c) + if not c then return false end + return not c:IsAttribute(ATTRIBUTE_WIND) +end +function c511000092.filter(c,e,tp) + return c:GetLevel()<=4 and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000092.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000092.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000092.sumop(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,c511000092.filter,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 diff --git a/script/c511000093.lua b/script/c511000093.lua new file mode 100644 index 00000000..2c3ebc76 --- /dev/null +++ b/script/c511000093.lua @@ -0,0 +1,30 @@ +--Speed Spell - Defense Buster +function c511000093.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000093.con) + e1:SetTarget(c511000093.target) + e1:SetOperation(c511000093.activate) + c:RegisterEffect(e1) +end +function c511000093.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c511000093.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDefensePos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511000093.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and not tc:IsAttackPos() then + Duel.ChangePosition(tc,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511000094.lua b/script/c511000094.lua new file mode 100644 index 00000000..d2aaea1b --- /dev/null +++ b/script/c511000094.lua @@ -0,0 +1,33 @@ +--Star Gatherer +function c511000094.initial_effect(c) + --Change Level + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000094,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000094.lvtg) + e1:SetOperation(c511000094.lvop) + c:RegisterEffect(e1) +end +function c511000094.lvfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:GetLevel()>0 +end +function c511000094.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511000094.lvfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000094.lvfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000094.lvfilter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000094.lvop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if tc:IsRelateToEffect(e) and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()-1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511000095.lua b/script/c511000095.lua new file mode 100644 index 00000000..9394166d --- /dev/null +++ b/script/c511000095.lua @@ -0,0 +1,36 @@ +--Break Tune +function c511000095.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000095.condition) + e1:SetTarget(c511000095.target) + e1:SetOperation(c511000095.activate) + c:RegisterEffect(e1) +end +function c511000095.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000095.filter,tp,LOCATION_HAND,0,1,nil,e,tp) +end +function c511000095.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000095.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c511000095.filter,tp,LOCATION_HAND,0,1,nil,e,tp) + and tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000095.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000095.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.NegateAttack() + end + end +end \ No newline at end of file diff --git a/script/c511000096.lua b/script/c511000096.lua new file mode 100644 index 00000000..46f191ca --- /dev/null +++ b/script/c511000096.lua @@ -0,0 +1,26 @@ +--Triangle Warrior +function c511000096.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000096.spcon) + e1:SetOperation(c511000096.spop) + c:RegisterEffect(e1) +end +function c511000096.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>1 and Duel.GetLocationCount(tp,LOCATION_MZONE,tp)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000097,0xf,0x4011,1200,1200,2,RACE_WARRIOR,ATTRIBUTE_LIGHT,POS_FACEUP_DEFENSE,1-tp) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) +end +function c511000096.spop(e,tp,eg,ep,ev,re,r,rp,c) + for i=1,2 do + local token=Duel.CreateToken(tp,511000097) + Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511000098.lua b/script/c511000098.lua new file mode 100644 index 00000000..5162794f --- /dev/null +++ b/script/c511000098.lua @@ -0,0 +1,48 @@ +--Double Tribute +function c511000098.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511000098.condition) + e1:SetTarget(c511000098.target) + e1:SetOperation(c511000098.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c511000098.cfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) +end +function c511000098.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000098.cfilter,nil,tp) + if g:GetCount()~=1 then return end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) +end +function c511000098.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if not eg then return false end + local tc=e:GetLabelObject() + if chkc then return chkc==tc end + if chk==0 then return ep==tp and tc:IsFaceup() and tc:IsOnField() and tc:IsCanBeEffectTarget(e) + and tc:IsDestructable() end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c511000098.filter(c) + return c:IsDestructable() +end +function c511000098.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + if Duel.Destroy(tc,REASON_EFFECT)>0 then + local g=Duel.SelectTarget(tp,c511000098.filter,tp,0,LOCATION_MZONE,1,1,nil) + local tc2=g:GetFirst() + Duel.Destroy(tc2,REASON_EFFECT) + end + end +end diff --git a/script/c511000099.lua b/script/c511000099.lua new file mode 100644 index 00000000..8120f6e7 --- /dev/null +++ b/script/c511000099.lua @@ -0,0 +1,40 @@ +--Level Cannon +function c511000099.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:SetDescription(aux.Stringid(511000099,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000099.target) + e2:SetOperation(c511000099.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c511000099.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetCard(eg) + tc=eg:GetFirst() + Duel.SetTargetPlayer(tc:GetControler()) + Duel.SetTargetParam(tc:GetLevel()*200) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tc:GetControler(),tc:GetLevel()*200) +end +function c511000099.filter(c,e) + return c:IsFaceup() and c:IsRelateToEffect(e) +end +function c511000099.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000100.lua b/script/c511000100.lua new file mode 100644 index 00000000..261d78b2 --- /dev/null +++ b/script/c511000100.lua @@ -0,0 +1,32 @@ +--Tomatoknight +function c511000100.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000100,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511000100.condition) + e1:SetTarget(c511000100.target) + e1:SetOperation(c511000100.operation) + c:RegisterEffect(e1) +end +function c511000100.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c511000100.filter(c,e,tp) + return c:IsCode(511000100) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000100.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000100.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511000100.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,c511000100.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000101.lua b/script/c511000101.lua new file mode 100644 index 00000000..cdf42304 --- /dev/null +++ b/script/c511000101.lua @@ -0,0 +1,28 @@ +--フォトン・カイザー +function c511000101.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000101,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000101.sptg) + e1:SetOperation(c511000101.spop) + c:RegisterEffect(e1) +end +function c511000101.filter(c,e,tp) + return c:IsCode(100000548) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000101.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000101.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c511000101.spop(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,c511000101.filter,tp,LOCATION_DECK+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 diff --git a/script/c511000102.lua b/script/c511000102.lua new file mode 100644 index 00000000..7334b53f --- /dev/null +++ b/script/c511000102.lua @@ -0,0 +1,31 @@ +--H-C エクスカリバー +function c511000102.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.XyzFilterFunction(c,3),3) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(511000102,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000102.cost) + e1:SetOperation(c511000102.operation) + c:RegisterEffect(e1) +end +function c511000102.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000102.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + c:RegisterEffect(e1) + end +end diff --git a/script/c511000103.lua b/script/c511000103.lua new file mode 100644 index 00000000..8a4287f8 --- /dev/null +++ b/script/c511000103.lua @@ -0,0 +1,61 @@ +--Tomato Paradise +function c511000103.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_PLANT)) + e2:SetValue(c511000103.val) + c:RegisterEffect(e2) + --token + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000103,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetCondition(c511000103.tkcon) + e3:SetTarget(c511000103.tktg) + e3:SetOperation(c511000103.tkop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c511000103.ctfilter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c511000103.val(e,c) + return Duel.GetMatchingGroupCount(c511000103.ctfilter,c:GetControler(),LOCATION_MZONE,0,nil)*200 +end +function c511000103.cfilter(c,tp) + return c:IsFaceup() and c:IsRace(RACE_PLANT) and c:IsPreviousLocation(LOCATION_HAND) and c:GetSummonPlayer()==tp and c:IsControler(tp) +end +function c511000103.tkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000103.cfilter,1,nil,tp) and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511000103.tktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000104,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000103.tkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000104,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH) then + local token=Duel.CreateToken(tp,511000104) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000105.lua b/script/c511000105.lua new file mode 100644 index 00000000..a168909a --- /dev/null +++ b/script/c511000105.lua @@ -0,0 +1,35 @@ +--マスドライバー +function c511000105.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000105,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511000105.damcost) + e2:SetTarget(c511000105.damtg) + e2:SetOperation(c511000105.damop) + c:RegisterEffect(e2) +end +function c511000105.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_PLANT) end + local g=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,RACE_PLANT) + Duel.Release(g,REASON_COST) +end +function c511000105.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c511000105.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000106.lua b/script/c511000106.lua new file mode 100644 index 00000000..07a513cf --- /dev/null +++ b/script/c511000106.lua @@ -0,0 +1,41 @@ +--リミッター解除 +function c511000106.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511000106.condition) + e1:SetTarget(c511000106.target) + e1:SetOperation(c511000106.activate) + c:RegisterEffect(e1) +end +function c511000106.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000106.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c511000106.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000106.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000106.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000106.filter,tp,LOCATION_MZONE,0,nil) + local c=e:GetHandler() + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + e1:SetValue(500) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end \ No newline at end of file diff --git a/script/c511000108.lua b/script/c511000108.lua new file mode 100644 index 00000000..86790fc3 --- /dev/null +++ b/script/c511000108.lua @@ -0,0 +1,96 @@ +--Beetron-2 Beetleturbo +function c511000108.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000108,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000108.eqtg) + e1:SetOperation(c511000108.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000108,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000108.uncon) + e2:SetTarget(c511000108.sptg) + e2:SetOperation(c511000108.spop) + c:RegisterEffect(e2) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(400) + e3:SetCondition(c511000108.uncon) + c:RegisterEffect(e3) + --Def up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_DEFENSE) + e4:SetValue(400) + e4:SetCondition(c511000108.uncon) + c:RegisterEffect(e4) + --destroy sub + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e5:SetCondition(c511000108.uncon) + e5:SetValue(c511000108.repval) + c:RegisterEffect(e5) + --eqlimit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_EQUIP_LIMIT) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetValue(c511000108.eqlimit) + c:RegisterEffect(e6) +end +function c511000108.uncon(e) + return e:GetHandler():IsStatus(STATUS_UNION) +end +function c511000108.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c511000108.eqlimit(e,c) + return c:IsCode(511000107) +end +function c511000108.filter(c) + return c:IsFaceup() and c:IsCode(511000107) and c:GetUnionCount()==0 +end +function c511000108.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000108.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(511000108)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511000108.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511000108.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(511000108,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000108.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc:IsRelateToEffect(e) or not c511000108.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + c:SetStatus(STATUS_UNION,true) +end +function c511000108.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511000108)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(511000108,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000108.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511000109.lua b/script/c511000109.lua new file mode 100644 index 00000000..f3fd2ca7 --- /dev/null +++ b/script/c511000109.lua @@ -0,0 +1,98 @@ +--Z-メタル·キャタピラー +function c511000109.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000109,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000109.eqtg) + e1:SetOperation(c511000109.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000109,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000109.uncon) + e2:SetTarget(c511000109.sptg) + e2:SetOperation(c511000109.spop) + c:RegisterEffect(e2) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(600) + e3:SetCondition(c511000109.uncon) + c:RegisterEffect(e3) + --Def up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_DEFENSE) + e4:SetValue(600) + e4:SetCondition(c511000109.uncon) + c:RegisterEffect(e4) + --destroy sub + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e5:SetCondition(c511000109.uncon) + e5:SetValue(c511000109.repval) + c:RegisterEffect(e5) + --eqlimit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_EQUIP_LIMIT) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetValue(c511000109.eqlimit) + c:RegisterEffect(e6) +end +function c511000109.uncon(e) + return e:GetHandler():IsStatus(STATUS_UNION) +end +function c511000109.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c511000109.eqlimit(e,c) + local code=c:GetCode() + return code==511000107 or code==511000108 +end +function c511000109.filter(c) + local code=c:GetCode() + return c:IsFaceup() and (code==511000107 or code==511000108) and c:GetUnionCount()==0 +end +function c511000109.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000109.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(511000109)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511000109.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511000109.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(511000109,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000109.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc:IsRelateToEffect(e) or not c511000109.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + c:SetStatus(STATUS_UNION,true) +end +function c511000109.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511000109)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(511000109,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000109.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511000110.lua b/script/c511000110.lua new file mode 100644 index 00000000..f927aa07 --- /dev/null +++ b/script/c511000110.lua @@ -0,0 +1,99 @@ +--Assault Cannon Beetle +function c511000110.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,511000107,511000108,511000109,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000110.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511000110.spcon) + e2:SetOperation(c511000110.spop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000110,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511000110.cost) + e3:SetTarget(c511000110.target) + e3:SetOperation(c511000110.operation) + c:RegisterEffect(e3) +end +function c511000110.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c511000110.spfilter(c,code) + if c:GetCode()~=code then return false end + if c:IsType(TYPE_FUSION) then return c:IsAbleToExtraAsCost() + else return c:IsAbleToDeckAsCost() end +end +function c511000110.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + local g1=Duel.GetMatchingGroup(c511000110.spfilter,tp,LOCATION_ONFIELD,0,nil,511000107) + local g2=Duel.GetMatchingGroup(c511000110.spfilter,tp,LOCATION_ONFIELD,0,nil,511000108) + local g3=Duel.GetMatchingGroup(c511000110.spfilter,tp,LOCATION_ONFIELD,0,nil,511000109) + if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f3=g3:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + if ft==-2 then return f1+f2+f3==3 + elseif ft==-1 then return f1+f2+f3>=2 + else return f1+f2+f3>=1 end +end +function c511000110.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c511000110.spfilter,tp,LOCATION_ONFIELD,0,nil,511000107) + local g2=Duel.GetMatchingGroup(c511000110.spfilter,tp,LOCATION_ONFIELD,0,nil,511000108) + local g3=Duel.GetMatchingGroup(c511000110.spfilter,tp,LOCATION_ONFIELD,0,nil,511000109) + g1:Merge(g2) + g1:Merge(g3) + local g=Group.CreateGroup() + local tc=nil + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + g1:Remove(Card.IsCode,nil,tc:GetCode()) + ft=ft+1 + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,1,REASON_COST) +end +function c511000110.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c511000110.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511000110.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000111.lua b/script/c511000111.lua new file mode 100644 index 00000000..43a21310 --- /dev/null +++ b/script/c511000111.lua @@ -0,0 +1,37 @@ +--Combat Scissors Beetle +function c511000111.initial_effect(c) + --fusion material + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000111.splimit) + c:RegisterEffect(e1) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000111,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(aux.bdgcon) + e3:SetTarget(c511000111.damtg) + e3:SetOperation(c511000111.damop) + c:RegisterEffect(e3) +end +function c511000111.splimit(e,se,sp,st) + return se:GetHandler():IsCode(511000112) +end +function c511000111.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511000111.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000112.lua b/script/c511000112.lua new file mode 100644 index 00000000..810f2a29 --- /dev/null +++ b/script/c511000112.lua @@ -0,0 +1,65 @@ +--拘束解除 +function c511000112.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000112.cost) + e1:SetTarget(c511000112.target) + e1:SetOperation(c511000112.activate) + c:RegisterEffect(e1) + --Activate2 + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCost(c511000112.cost2) + e2:SetTarget(c511000112.target2) + e2:SetOperation(c511000112.activate2) + c:RegisterEffect(e2) +end +function c511000112.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,511000110) end + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,511000110) + Duel.Release(g,REASON_COST) +end +function c511000112.filter(c,e,tp) + return c:IsCode(511000111) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000112.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000112.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000112.activate(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,c511000112.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end +function c511000112.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,511000111) end + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,511000111) + Duel.Release(g,REASON_COST) +end +function c511000112.filter2(c,e,tp) + return c:IsCode(511000110) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000112.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000112.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000112.activate2(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,c511000112.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end diff --git a/script/c511000113.lua b/script/c511000113.lua new file mode 100644 index 00000000..311627d8 --- /dev/null +++ b/script/c511000113.lua @@ -0,0 +1,94 @@ +--Assault Cannon Beetle +function c511000113.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,511000107,511000108,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000113.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511000113.spcon) + e2:SetOperation(c511000113.spop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000113,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511000113.cost) + e3:SetTarget(c511000113.target) + e3:SetOperation(c511000113.operation) + c:RegisterEffect(e3) +end +function c511000113.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c511000113.spfilter(c,code) + if c:GetCode()~=code then return false end + if c:IsType(TYPE_FUSION) then return c:IsAbleToExtraAsCost() + else return c:IsAbleToDeckAsCost() end +end +function c511000113.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + local g1=Duel.GetMatchingGroup(c511000113.spfilter,tp,LOCATION_ONFIELD,0,nil,511000107) + local g2=Duel.GetMatchingGroup(c511000113.spfilter,tp,LOCATION_ONFIELD,0,nil,511000108) + if g1:GetCount()==0 or g2:GetCount()==0 then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + if ft==-1 then return f1>0 and f2>0 + else return f1>0 or f2>0 end +end +function c511000113.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c511000113.spfilter,tp,LOCATION_ONFIELD,0,nil,511000107) + local g2=Duel.GetMatchingGroup(c511000113.spfilter,tp,LOCATION_ONFIELD,0,nil,511000108) + g1:Merge(g2) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + g1:Remove(Card.IsCode,nil,tc:GetCode()) + ft=ft+1 + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,1,REASON_COST) +end +function c511000113.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c511000113.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511000113.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000114.lua b/script/c511000114.lua new file mode 100644 index 00000000..91b419f4 --- /dev/null +++ b/script/c511000114.lua @@ -0,0 +1,94 @@ +--Assault Cannon Beetle +function c511000114.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,511000107,511000108,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000114.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511000114.spcon) + e2:SetOperation(c511000114.spop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000114,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511000114.cost) + e3:SetTarget(c511000114.target) + e3:SetOperation(c511000114.operation) + c:RegisterEffect(e3) +end +function c511000114.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c511000114.spfilter(c,code) + if c:GetCode()~=code then return false end + if c:IsType(TYPE_FUSION) then return c:IsAbleToExtraAsCost() + else return c:IsAbleToDeckAsCost() end +end +function c511000114.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + local g1=Duel.GetMatchingGroup(c511000114.spfilter,tp,LOCATION_ONFIELD,0,nil,511000107) + local g2=Duel.GetMatchingGroup(c511000114.spfilter,tp,LOCATION_ONFIELD,0,nil,511000109) + if g1:GetCount()==0 or g2:GetCount()==0 then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + if ft==-1 then return f1>0 and f2>0 + else return f1>0 or f2>0 end +end +function c511000114.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c511000114.spfilter,tp,LOCATION_ONFIELD,0,nil,511000107) + local g2=Duel.GetMatchingGroup(c511000114.spfilter,tp,LOCATION_ONFIELD,0,nil,511000109) + g1:Merge(g2) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + g1:Remove(Card.IsCode,nil,tc:GetCode()) + ft=ft+1 + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,1,REASON_COST) +end +function c511000114.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c511000114.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511000114.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000115.lua b/script/c511000115.lua new file mode 100644 index 00000000..04fddb8d --- /dev/null +++ b/script/c511000115.lua @@ -0,0 +1,29 @@ +--Revival Jam (Anime) +--scripted by GameMaster (GM) +function c511000115.initial_effect(c) + --Revival + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000115,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511000115.spcon) + e1:SetTarget(c511000115.sptg) + e1:SetOperation(c511000115.spop) + c:RegisterEffect(e1) +end +function c511000115.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_MZONE and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000115.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,1,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000115.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + local np=e:GetHandler():GetPreviousControler() + Duel.SpecialSummon(e:GetHandler(),1,np,np,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511000116.lua b/script/c511000116.lua new file mode 100644 index 00000000..bc7cbc3f --- /dev/null +++ b/script/c511000116.lua @@ -0,0 +1,50 @@ +--Spirit Shield +function c511000116.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000116.condition) + e1:SetOperation(c511000116.operation) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCondition(c511000116.condition) + e2:SetOperation(c511000116.operation) + c:RegisterEffect(e2) + --self destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511000116.descon) + c:RegisterEffect(e3) +end +function c511000116.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FIEND+RACE_ZOMBIE) +end +function c511000116.descon(e) + local c=e:GetHandler() + return not Duel.IsExistingMatchingCard(c511000116.filter,c:GetControler(),LOCATION_GRAVE,0,1,c) +end +function c511000116.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511000116.operation(e,tp,eg,ep,ev,re,r,rp) + if chk==0 then return Duel.IsExistingMatchingCard(c511000116.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000116.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end +function c511000116.cfilter(c) + return c:IsRace(RACE_FIEND+RACE_ZOMBIE) and c:IsAbleToRemoveAsCost() +end diff --git a/script/c511000117.lua b/script/c511000117.lua new file mode 100644 index 00000000..432a1b63 --- /dev/null +++ b/script/c511000117.lua @@ -0,0 +1,41 @@ +--Duke of Demise +function c511000117.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,5434080,66989694,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000117.splimit) + c:RegisterEffect(e1) + --maintain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EVENT_PHASE+0x02) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetOperation(c511000117.mtop) + c:RegisterEffect(e2) + --Battle Indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) +end +c511000117.material_count=2 +c511000117.material={5434080,66989694} +function c511000117.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511000117.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + if Duel.GetLP(tp)>500 and Duel.SelectYesNo(tp,aux.Stringid(511000117,0)) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end \ No newline at end of file diff --git a/script/c511000118.lua b/script/c511000118.lua new file mode 100644 index 00000000..9e0ed481 --- /dev/null +++ b/script/c511000118.lua @@ -0,0 +1,118 @@ +--Diabound Kernel +function c511000118.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000118.eqtg) + e1:SetOperation(c511000118.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000118.uncon) + e2:SetTarget(c511000118.sptg) + e2:SetOperation(c511000118.spop) + c:RegisterEffect(e2) + --eqlimit + 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) + --atk,def + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetCondition(c511000118.uncon) + e4:SetValue(-1800) + c:RegisterEffect(e4) + --spsummon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000118,0)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_DELAY) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c511000118.spcon) + e5:SetTarget(c511000118.sptg2) + e5:SetOperation(c511000118.spop2) + c:RegisterEffect(e5) + --gain effect + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_BATTLE_DESTROYING) + e6:SetProperty(EFFECT_FLAG_DELAY) + e6:SetCondition(aux.bdocon) + e6:SetTarget(c511000118.efftg) + e6:SetOperation(c511000118.effop) + c:RegisterEffect(e6) +end +function c511000118.uncon(e) + return e:GetHandler():IsStatus(STATUS_UNION) +end +function c511000118.filter(c) + return c:IsFaceup() +end +function c511000118.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000118.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(12309)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511000118.filter,tp,0,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511000118.filter,tp,0,LOCATION_MZONE,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(511000118,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000118.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc:IsRelateToEffect(e) or not c511000118.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + c:SetStatus(STATUS_UNION,true) +end +function c511000118.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511000118)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(511000118,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000118.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end + +function c511000118.spcon(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 c511000118.sptg2(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 c511000118.spop2(e,tp,eg,ep,ev,re,r,rp) + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) +end +function c511000118.efftg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local bc=e:GetHandler():GetBattleTarget() + Duel.SetTargetCard(bc) +end +function c511000118.effop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000,1) + end +end diff --git a/script/c511000119.lua b/script/c511000119.lua new file mode 100644 index 00000000..f581ec45 --- /dev/null +++ b/script/c511000119.lua @@ -0,0 +1,311 @@ +--Dark Sanctuary +function c511000119.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000119.target) + c:RegisterEffect(e1) + --trigger + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(97268402,0)) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_HAND) + e2:SetLabel(1) + e2:SetCondition(c511000119.accon) + e2:SetTarget(c511000119.actg) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + e3:SetCountLimit(1) + e3:SetOperation(c511000119.regop) + c:RegisterEffect(e3) + --trigger2 + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(29590752,1)) + e4:SetCategory(CATEGORY_EQUIP) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(511000119) + e4:SetCondition(c511000119.eqcon) + e4:SetTarget(c511000119.eqtg) + e4:SetOperation(c511000119.operation) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_DAMAGE+CATEGORY_RECOVER) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511000119.atkcon) + e5:SetTarget(c511000119.atktg) + e5:SetOperation(c511000119.atkop) + c:RegisterEffect(e5) + --maintain + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetRange(LOCATION_SZONE) + e6:SetCountLimit(1) + e6:SetCondition(c511000119.mtcon) + e6:SetOperation(c511000119.mtop) + c:RegisterEffect(e6) + --move + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e7:SetCode(EFFECT_SPSUMMON_PROC_G) + e7:SetRange(LOCATION_SZONE) + e7:SetCondition(c511000119.movecon) + e7:SetOperation(c511000119.moveop) + c:RegisterEffect(e7) + --copy + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_ADJUST) + e8:SetRange(LOCATION_SZONE) + e8:SetOperation(c511000119.activ) + c:RegisterEffect(e8) +end +function c511000119.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return true end + if c:IsLocation(LOCATION_SZONE) and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,31829185) + and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetCategory(CATEGORY_EQUIP) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + e:SetOperation(c511000119.operation) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c511000119.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + --equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + --end + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IMMEDIATELY_APPLY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetOperation(c511000119.op) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + c:RegisterFlagEffect(511000118,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c511000119.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.SendtoDeck(c,nil,-2,REASON_EFFECT) + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) +end +function c511000119.accon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,31829185) +end +function c511000119.actg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local te=c:GetActivateEffect() + if chk==0 then return te and te:IsActivatable(tp) end + e:SetType(EFFECT_TYPE_ACTIVATE) + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc then + Duel.SendtoGrave(fc,REASON_RULE) + Duel.BreakEffect() + end + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + c:CreateEffectRelation(e) + c511000119.target(e,tp,eg,ep,ev,re,r,rp,1,nil) +end +function c511000119.regop(e,tp,eg,ep,ev,re,r,rp) + Duel.RaiseSingleEvent(e:GetHandler(),511000119,e,0,tp,tp,0) +end +function c511000119.eqcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,31829185) +end +function c511000119.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and c:IsLocation(LOCATION_SZONE) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000119.atkcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetEquipTarget() + return tc and Duel.GetAttacker()==tc and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,31829185) +end +function c511000119.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local a=Duel.GetAttacker() + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,a:GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,a:GetAttack()) +end +function c511000119.atkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local tc=e:GetHandler():GetEquipTarget() + if not a or not tc or a~=tc then return end + Duel.NegateAttack() + local atk=a:GetAttack() + local val=Duel.Recover(tp,atk,REASON_EFFECT) + Duel.Damage(1-tp,val,REASON_EFFECT) +end +function c511000119.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,31829185) + and e:GetHandler():GetFlagEffect(511000118)==0 +end +function c511000119.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckReleaseGroup(tp,nil,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(511000119,0)) then + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end +function c511000119.mvfilter(c,tp) + if c:IsFacedown() or not c:IsCode(31893528,67287533,94772232,30170981) then return false end + if c:IsLocation(LOCATION_MZONE) then + return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + end +end +function c511000119.movecon(e,c,og) + if c==nil then return true end + return Duel.IsExistingMatchingCard(c511000119.mvfilter,c:GetControler(),LOCATION_ONFIELD,0,1,nil,c:GetControler()) +end +function c511000119.moveop(e,tp,eg,ep,ev,re,r,rp,c,og) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local tc=Duel.SelectMatchingCard(tp,c511000119.mvfilter,tp,LOCATION_ONFIELD,0,1,1,nil):GetFirst() + if tc then + if tc:IsLocation(LOCATION_MZONE) then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + else + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEUP,true) + --immune + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c511000119.efilter) + e4:SetReset(RESET_EVENT+0x47c0000) + tc:RegisterEffect(e4,true) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetValue(aux.imval1) + e2:SetReset(RESET_EVENT+0x47c0000) + tc:RegisterEffect(e2,true) + --Direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c511000119.dirtg) + e3:SetReset(RESET_EVENT+0x47c0000) + tc:RegisterEffect(e3,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47c0000) + tc:RegisterEffect(e1,true) + tc:RegisterFlagEffect(511000119,RESET_EVENT+0x1fe0000,0,1) + end + end + return +end +function c511000119.efilter(e,te) + local tc=te:GetOwner() + return tc~=e:GetOwner() and not tc:IsCode(94212438) +end +function c511000119.dirfil(c) + return c:GetFlagEffect(511000119)==0 +end +function c511000119.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511000119.dirfil,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c511000119.filter(c) + return (c:GetType()==TYPE_SPELL or c:IsType(TYPE_QUICKPLAY)) and c:GetActivateEffect() + and c:GetFlagEffect(511000120)==0 +end +function c511000119.activ(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000119.filter,tp,LOCATION_HAND,0,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511000120)==0 then + local te=tc:GetActivateEffect() + local e1=Effect.CreateEffect(tc) + e1:SetCategory(te:GetCategory()) + if tc:GetType()==TYPE_SPELL then + e1:SetType(EFFECT_TYPE_IGNITION) + else + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(te:GetCode()) + end + e1:SetProperty(te:GetProperty()) + e1:SetCondition(c511000119.con) + e1:SetCost(c511000119.cos) + e1:SetTarget(c511000119.tar) + e1:SetOperation(c511000119.act) + e1:SetRange(LOCATION_HAND) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511000120,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + tc=g:GetNext() + end +end +function c511000119.con(e,tp,eg,ep,ev,re,r,rp) + local te=e:GetHandler():GetActivateEffect() + local condition=te:GetCondition() + return (not condition or condition(e,tp,eg,ep,ev,re,r,rp)) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 +end +function c511000119.cos(e,tp,eg,ep,ev,re,r,rp,chk) + local te=e:GetHandler():GetActivateEffect() + local co=te:GetCost() + if chk==0 then return not co or co(e,tp,eg,ep,ev,re,r,rp,0) end + if co then co(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c511000119.tar(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local te=c:GetActivateEffect() + local tg=te:GetTarget() + local op=te:GetOperation() + if chk==0 then return (not tg or tg(e,tp,eg,ep,ev,re,r,rp,0)) and Duel.GetTurnPlayer()==tp + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,31829185) end + e:SetType(EFFECT_TYPE_ACTIVATE) + Duel.MoveToField(c,tp,tp,LOCATION_MZONE,POS_FACEUP_ATTACK,true) + c:CreateEffectRelation(e) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1,nil) end + e:SetOperation(op) +end diff --git a/script/c511000120.lua b/script/c511000120.lua new file mode 100644 index 00000000..5c5c2096 --- /dev/null +++ b/script/c511000120.lua @@ -0,0 +1,218 @@ +--Cursed Twin Dolls +function c511000120.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000120.cointg) + e1:SetOperation(c511000120.coinop) + c:RegisterEffect(e1) +end +function c511000120.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c511000120.cfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemove() +end +function c511000120.rmtarget1(e,c) + return e:GetHandler():GetOwner()==c:GetControler() and not c:IsType(TYPE_MONSTER) +end +function c511000120.rmtarget2(e,c) + return e:GetHandler():GetOwner()~=c:GetControler() and not c:IsType(TYPE_MONSTER) +end +function c511000120.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local op=Duel.SelectOption(1-tp,aux.Stringid(511000321,0),aux.Stringid(511000321,1)) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000120,2)) + local coin=Duel.SelectOption(1-tp,60,61) + local res=Duel.TossCoin(1-tp,1) + if (coin~=res and op==0) or (coin==res and op==1) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetRange(LOCATION_SZONE) + e1:SetOperation(c511000120.recop1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local g=Duel.GetMatchingGroup(c511000120.cfilter,tp,LOCATION_GRAVE,0,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000120.rmtarget1) + e2:SetValue(LOCATION_REMOVED) + e2:SetReset(RESET_EVENT+0x1fe0000) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000120.con1) + e3:SetOperation(c511000120.op1) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + else + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetRange(LOCATION_SZONE) + e1:SetOperation(c511000120.recop2) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000120.rmtarget2) + e2:SetValue(LOCATION_REMOVED) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000120.con2) + e3:SetOperation(c511000120.op2) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local g=Duel.GetMatchingGroup(c511000120.cfilter,1-tp,LOCATION_GRAVE,0,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + end +end +function c511000120.filter1(c,tp) + return c:GetOwner()==1-tp +end +function c511000120.recop1(e,tp,eg,ep,ev,re,r,rp) + local d1=eg:FilterCount(c511000120.filter1,nil,tp)*200 + Duel.Recover(1-tp,d1,REASON_EFFECT) +end +function c511000120.filter2(c,tp) + return c:GetOwner()==tp +end +function c511000120.recop2(e,tp,eg,ep,ev,re,r,rp) + local d1=eg:FilterCount(c511000120.filter2,nil,tp)*200 + Duel.Recover(tp,d1,REASON_EFFECT) +end +function c511000120.filter(c) + return c:IsType(TYPE_MONSTER) +end +function c511000120.con1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil)==0 +end +function c511000120.op1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.SelectYesNo(tp,aux.Stringid(511000120,3)) then + local g=Duel.SelectMatchingCard(tp,c511000120.filter,tp,LOCATION_GRAVE,0,1,5,nil) + local tc=g:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_TRIGGER) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UNRELEASABLE_SUM) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_UNRELEASABLE_NONSUM) + tc:RegisterEffect(e4,true) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e5:SetValue(LOCATION_REMOVED) + e5:SetReset(RESET_EVENT+0x7e0000) + tc:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e6:SetValue(1) + e6:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e7:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e7:SetValue(1) + tc:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e8:SetRange(LOCATION_MZONE) + e8:SetCode(EFFECT_IMMUNE_EFFECT) + e8:SetReset(RESET_EVENT+0x1fe0000) + e8:SetValue(1) + tc:RegisterEffect(e8) + tc=g:GetNext() + end + end +end +function c511000120.con2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetFieldGroupCount(1-tp,LOCATION_MZONE,0,nil)==0 +end +function c511000120.op2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.SelectYesNo(1-tp,aux.Stringid(511000120,3)) then + local g=Duel.SelectMatchingCard(1-tp,c511000120.filter,1-tp,LOCATION_GRAVE,0,1,5,nil) + local tc=g:GetFirst() + while tc do + Duel.MoveToField(tc,1-tp,1-tp,LOCATION_MZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_TRIGGER) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UNRELEASABLE_SUM) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_UNRELEASABLE_NONSUM) + tc:RegisterEffect(e4,true) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e5:SetValue(LOCATION_REMOVED) + e5:SetReset(RESET_EVENT+0x7e0000) + tc:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e6:SetValue(1) + e6:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e7:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e7:SetValue(1) + tc:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e8:SetRange(LOCATION_MZONE) + e8:SetCode(EFFECT_IMMUNE_EFFECT) + e8:SetReset(RESET_EVENT+0x1fe0000) + e8:SetValue(1) + tc:RegisterEffect(e8) + tc=g:GetNext() + end + end +end diff --git a/script/c511000121.lua b/script/c511000121.lua new file mode 100644 index 00000000..3a8ccdcc --- /dev/null +++ b/script/c511000121.lua @@ -0,0 +1,70 @@ +--Counterbalance +function c511000121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --discard opp deck + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_DECKDES) + e2:SetDescription(aux.Stringid(511000121,1)) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_REPEAT) + e2:SetCountLimit(1) + e2:SetCondition(c511000121.discon) + e2:SetTarget(c511000121.target) + e2:SetOperation(c511000121.activate) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --discard your deck + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_DECKDES) + e3:SetDescription(aux.Stringid(511000121,1)) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_REPEAT) + e3:SetCountLimit(1) + e3:SetCondition(c511000121.discon2) + e3:SetTarget(c511000121.target2) + e3:SetOperation(c511000121.activate2) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) +end + +function c511000121.discon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end + +function c511000121.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,TYPE_MONSTER) end + Duel.SetTargetPlayer(1-tp) + local dam=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,nil,TYPE_MONSTER)*1 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000121.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,nil,TYPE_MONSTER)*1 + Duel.DiscardDeck(1-tp,dam,REASON_EFFECT) +end + +function c511000121.discon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end + +function c511000121.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,TYPE_MONSTER) end + Duel.SetTargetPlayer(tp) + local dis=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,nil,TYPE_MONSTER)*1 + Duel.SetTargetParam(dis) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,dis) +end +function c511000121.activate2(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dis=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,nil,TYPE_MONSTER)*1 + Duel.DiscardDeck(tp,dis,REASON_EFFECT) +end diff --git a/script/c511000122.lua b/script/c511000122.lua new file mode 100644 index 00000000..55d081c0 --- /dev/null +++ b/script/c511000122.lua @@ -0,0 +1,90 @@ +--Ancient Citty +function c511000122.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000122,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCost(c511000122.spcost) + e2:SetTarget(c511000122.sptg) + e2:SetOperation(c511000122.spop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DESTROYED) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_FZONE) + e3:SetCondition(c511000122.respcon) + e3:SetOperation(c511000122.respop) + c:RegisterEffect(e3) +end +function c511000122.costfilter(c,code) + return c:IsFaceup() and c:IsCode(code) and c:IsAbleToGraveAsCost() +end +function c511000122.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000122.costfilter,tp,LOCATION_SZONE,0,1,nil,511000125) + and Duel.IsExistingMatchingCard(c511000122.costfilter,tp,LOCATION_SZONE,0,1,nil,511000123) + and Duel.IsExistingMatchingCard(c511000122.costfilter,tp,LOCATION_MZONE,0,1,nil,511000126) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511000122.costfilter,tp,LOCATION_SZONE,0,1,1,nil,511000125) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511000122.costfilter,tp,LOCATION_SZONE,0,1,1,nil,511000123) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g3=Duel.SelectMatchingCard(tp,c511000122.costfilter,tp,LOCATION_MZONE,0,1,1,nil,511000126) + g1:Merge(g2) + g1:Merge(g3) + Duel.SendtoGrave(g1,REASON_COST) +end +function c511000122.spfilter(c,e,tp) + return c:IsCode(511000128) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000122.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000122.spfilter,tp,0x13,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511000122.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c511000122.spfilter,tp,0x13,0,1,1,nil,e,tp):GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511000122.cfilter(c,e,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsCode(511000128) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000122.respcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000122.cfilter,1,nil,e,tp) +end +function c511000122.respop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=eg:Filter(c511000122.cfilter,nil,e,tp) + local tc=g:GetFirst() + while tc do + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_GRAVE+LOCATION_REMOVED) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e4:SetCountLimit(1) + e4:SetOperation(c511000122.spcop) + tc:RegisterEffect(e4) + tc=g:GetNext() + end +end +function c511000122.spcop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511000122) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511000123.lua b/script/c511000123.lua new file mode 100644 index 00000000..54380b94 --- /dev/null +++ b/script/c511000123.lua @@ -0,0 +1,60 @@ +--Ancient Tome +function c511000123.initial_effect(c) + --Activate + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_ACTIVATE) + e0:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e0) + --Swap Cards + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000123,0)) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511000123.tg) + e1:SetOperation(c511000123.op) + c:RegisterEffect(e1) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000123.mtcon) + e3:SetOperation(c511000123.mtop) + c:RegisterEffect(e3) +end +function c511000123.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local dg=Duel.GetDecktopGroup(tp,1):GetFirst() + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_HAND,0,1,nil) + and dg and dg:IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,dg,1,0,0) +end +function c511000123.op(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetDecktopGroup(tp,1):GetFirst() + if not dg or not dg:IsAbleToHand() then return end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToDeck,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + Duel.DisableShuffleCheck() + Duel.ConfirmCards(1-tp,dg) + Duel.SendtoHand(dg,nil,REASON_EFFECT) + Duel.SendtoDeck(g,nil,0,REASON_EFFECT) + end +end +function c511000123.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000123.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) + and Duel.SelectYesNo(tp,aux.Stringid(11159464,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c511000124.lua b/script/c511000124.lua new file mode 100644 index 00000000..7c4b411c --- /dev/null +++ b/script/c511000124.lua @@ -0,0 +1,102 @@ +--Ancient Key +function c511000124.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000124.activate) + c:RegisterEffect(e1) + --Add + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetDescription(aux.Stringid(511000124,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511000124.thcost) + e2:SetTarget(c511000124.thtg) + e2:SetOperation(c511000124.thop) + c:RegisterEffect(e2) + if not c511000124.global_check then + c511000124.global_check=true + --register + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c511000124.operation) + Duel.RegisterEffect(e3,0) + end +end +function c511000124.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511000124)==0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_CHANGE_POS) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511000124.op) + e1:SetReset(RESET_EVENT+0x1fc0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511000124,RESET_EVENT+0x1fc0000,0,1) + end + tc=g:GetNext() + end +end +function c511000124.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsHasEffect(511000123) and c:GetFlagEffect(511000125)==0 then + c:RegisterFlagEffect(511000125,RESET_EVENT+0x1fc0000,0,1) + else + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(511000123) + e1:SetRange(LOCATION_MZONE) + c:RegisterEffect(e1) + end +end +function c511000124.spfilter(c,e,tp) + return c:IsCode(511000127) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000124.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 or not e:GetHandler():IsRelateToEffect(e) then return end + if ft>2 then ft=2 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetMatchingGroup(c511000124.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,nil,e,tp) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(525110,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,ft,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end +function c511000124.costfilter(c) + return c:IsFaceup() and c:IsCode(511000127) and c:IsAbleToGraveAsCost() and c:GetFlagEffect(511000125)>0 +end +function c511000124.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000124.costfilter,tp,LOCATION_MZONE,0,2,nil) + and e:GetHandler():IsAbleToGraveAsCost() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000124.costfilter,tp,LOCATION_MZONE,0,2,2,nil) + g:AddCard(e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000124.filter(c) + return c:IsCode(511000125) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000124.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000124.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c511000124.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000124.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000125.lua b/script/c511000125.lua new file mode 100644 index 00000000..9dd6486e --- /dev/null +++ b/script/c511000125.lua @@ -0,0 +1,22 @@ +--Ancient Gate +function c511000125.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000125.condition) + e1:SetOperation(c511000125.activate) + c:RegisterEffect(e1) +end +function c511000125.cfilter(c) + return c:IsFaceup() and c:IsCode(511000122) +end +function c511000125.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000125.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000125.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SelectYesNo(tp,aux.Stringid(511000125,0)) then + c:CancelToGrave() + end +end diff --git a/script/c511000126.lua b/script/c511000126.lua new file mode 100644 index 00000000..6ba6981b --- /dev/null +++ b/script/c511000126.lua @@ -0,0 +1,57 @@ +--Ancient Giant +function c511000126.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000126,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_REPEAT+EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c511000126.damcon) + e1:SetTarget(c511000126.damtg) + e1:SetOperation(c511000126.damop) + e1:SetLabel(0) + c:RegisterEffect(e1) + --check + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511000126.chkop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_ADJUST) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetOperation(c511000126.clear) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) +end +function c511000126.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetLabel()==0 +end +function c511000126.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,300) +end +function c511000126.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000126.chkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local a=Duel.GetAttacker() + local tc=Duel.GetAttackTarget() + if a~=c or not tc or tc:IsControler(tp) then return end + e:GetLabelObject():SetLabel(1) +end +function c511000126.clear(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetLabel(0) +end diff --git a/script/c511000127.lua b/script/c511000127.lua new file mode 100644 index 00000000..522bd95d --- /dev/null +++ b/script/c511000127.lua @@ -0,0 +1,37 @@ +--Stone Giant +function c511000127.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(1) + c:RegisterEffect(e1) + --damage LP + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000127,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_REPEAT+EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c511000127.damcon) + e2:SetTarget(c511000127.damtg) + e2:SetOperation(c511000127.damop) + c:RegisterEffect(e2) +end +function c511000127.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetAttackedCount()==0 +end +function c511000127.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,500) +end +function c511000127.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000128.lua b/script/c511000128.lua new file mode 100644 index 00000000..888c052d --- /dev/null +++ b/script/c511000128.lua @@ -0,0 +1,29 @@ +--Ancient Dragon +function c511000128.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(37115575,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511000128.descon) + e1:SetTarget(c511000128.destg) + e1:SetOperation(c511000128.desop) + c:RegisterEffect(e1) +end +function c511000128.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c511000128.desfilter(c) + return c:IsDefensePos() and c:IsDestructable() +end +function c511000128.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511000128.desfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000128.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000128.desfilter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511000129.lua b/script/c511000129.lua new file mode 100644 index 00000000..5bf39332 --- /dev/null +++ b/script/c511000129.lua @@ -0,0 +1,73 @@ +--Sacred Defense Barrier +function c511000129.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetDescription(aux.Stringid(511000129,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c511000129.target) + e2:SetOperation(c511000129.activate) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_COUNTER) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + e3:SetTarget(c511000129.target) + e3:SetOperation(c511000129.activate) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_COUNTER) + e4:SetDescription(aux.Stringid(511000129,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000129.condition) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetTarget(c511000129.target) + e4:SetOperation(c511000129.activate) + c:RegisterEffect(e4) +end +function c511000129.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000129.filter,nil,tp) + if g:GetCount()~=1 then return end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return tc:IsRace(RACE_ROCK) and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c511000129.filter(c,tp,ep) + return c:IsFaceup() and c:IsRace(RACE_ROCK) +end +function c511000129.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return c511000129.filter(tc,tp,ep) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x1096) +end +function c511000129.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=eg:GetFirst() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRace(RACE_ROCK) then + tc:AddCounter(0x1096,1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetTarget(c511000129.reptg) + e1:SetOperation(c511000129.repop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c511000129.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetCounter(0x1096)>0 end + return true +end +function c511000129.repop(e,tp,eg,ep,ev,re,r,rp,chk) + e:GetHandler():RemoveCounter(tp,0x1096,1,REASON_EFFECT) +end diff --git a/script/c511000130.lua b/script/c511000130.lua new file mode 100644 index 00000000..1d020b93 --- /dev/null +++ b/script/c511000130.lua @@ -0,0 +1,43 @@ +--Volcanic Curse +function c511000130.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(c511000130.condition) + e1:SetTarget(c511000130.target) + e1:SetOperation(c511000130.activate) + c:RegisterEffect(e1) +end + +function c511000130.condition(e,tp,eg,ep,ev,re,r,rp) + local t=Duel.GetAttackTarget() + return t and t:IsControler(tp) and t:IsSetCard(0x32) +end +function c511000130.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttackTarget() + if chkc then return chkc==tg end + if chk==0 then return Duel.GetAttacker():IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c511000130.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(c511000130.val) + tc:RegisterEffect(e1) + end +end + +function c511000130.atkfilter(c) + return c:IsRace(RACE_PYRO) +end +function c511000130.val(e,c) + return Duel.GetMatchingGroupCount(c511000130.atkfilter,c:GetControler(),LOCATION_GRAVE,LOCATION_GRAVE,nil)*500 +end diff --git a/script/c511000131.lua b/script/c511000131.lua new file mode 100644 index 00000000..c2199167 --- /dev/null +++ b/script/c511000131.lua @@ -0,0 +1,25 @@ +--Flame Wall +function c511000131.initial_effect(c) + --Activate + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_ACTIVATE) + e0:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e0) + --avoid effect damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetCondition(c511000131.condition) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(c511000131.damval) + c:RegisterEffect(e1) +end +function c511000131.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_GRAVE,0,1,nil,RACE_PYRO) +end +function c511000131.damval(e,re,val,r,rp,rc) + if rp~=e:GetHandlerPlayer() and bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end \ No newline at end of file diff --git a/script/c511000132.lua b/script/c511000132.lua new file mode 100644 index 00000000..4a5d85b7 --- /dev/null +++ b/script/c511000132.lua @@ -0,0 +1,38 @@ +--Prima Light +function c511000132.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000132,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000132.cost) + e1:SetTarget(c511000132.target) + e1:SetOperation(c511000132.activate) + c:RegisterEffect(e1) +end +function c511000132.costfilter(c,e,tp) + return c:IsFaceup() and c:IsCode(49375719) and c:IsAbleToGraveAsCost() +end +function c511000132.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000132.costfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000132.costfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000132.filter(c,e,tp) + return c:IsCode(2158562) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000132.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000132.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND+LOCATION_DECK) +end +function c511000132.activate(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,c511000132.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511000133.lua b/script/c511000133.lua new file mode 100644 index 00000000..cbeb8bfc --- /dev/null +++ b/script/c511000133.lua @@ -0,0 +1,42 @@ +--Ritual Sanctuary +function c511000133.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetDescription(aux.Stringid(511000133,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511000133.cost) + e2:SetTarget(c511000133.target) + e2:SetOperation(c511000133.operation) + c:RegisterEffect(e2) + +end +function c511000133.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c511000133.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000133.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511000133.cfilter,1,1,REASON_COST+REASON_DISCARD) +end + +function c511000133.filter(c) + return c:GetType()==0x82 and c:IsAbleToHand() +end +function c511000133.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000133.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000133.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000133.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000134.lua b/script/c511000134.lua new file mode 100644 index 00000000..b51ed538 --- /dev/null +++ b/script/c511000134.lua @@ -0,0 +1,32 @@ +--Allegro Toil +function c511000134.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511000134.condition) + e1:SetTarget(c511000134.target) + e1:SetOperation(c511000134.activate) + c:RegisterEffect(e1) +end +function c511000134.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000134.filter(c) + return c:IsDestructable() +end +function c511000134.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c511000134.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000134.filter,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000134.filter,tp,0,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000134.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000135.lua b/script/c511000135.lua new file mode 100644 index 00000000..87d3728b --- /dev/null +++ b/script/c511000135.lua @@ -0,0 +1,82 @@ +--Angel Wing +function c511000135.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(c511000135.target) + e1:SetOperation(c511000135.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) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000135,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000135.damcon) + e3:SetTarget(c511000135.damtg) + e3:SetOperation(c511000135.damop) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000135,0)) + e4:SetCategory(CATEGORY_DRAW) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c511000135.drcon) + e4:SetTarget(c511000135.drtg) + e4:SetOperation(c511000135.drop) + c:RegisterEffect(e4) +end +function c511000135.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 c511000135.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 c511000135.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst()==e:GetHandler():GetEquipTarget() +end +function c511000135.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511000135.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000135.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) +end +function c511000135.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000135.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000136.lua b/script/c511000136.lua new file mode 100644 index 00000000..5e6c5564 --- /dev/null +++ b/script/c511000136.lua @@ -0,0 +1,35 @@ +--Angel Blast +function c511000136.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000136.condition) + e1:SetTarget(c511000136.target) + e1:SetOperation(c511000136.operation) + c:RegisterEffect(e1) +end +function c511000136.cfilter(c) + return c:IsOnField() and c:IsType(TYPE_MONSTER) +end +function c511000136.condition(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_MONSTER) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(c511000136.cfilter,nil)-tg:GetCount()>0 +end + +function c511000136.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000136.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000137.lua b/script/c511000137.lua new file mode 100644 index 00000000..9763c853 --- /dev/null +++ b/script/c511000137.lua @@ -0,0 +1,16 @@ +--Dark Guardian +function c511000137.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) +end diff --git a/script/c511000138.lua b/script/c511000138.lua new file mode 100644 index 00000000..091dffec --- /dev/null +++ b/script/c511000138.lua @@ -0,0 +1,54 @@ +--Dark Element +function c511000138.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000138.cost) + e1:SetCondition(c511000138.condition) + e1:SetTarget(c511000138.target) + e1:SetOperation(c511000138.activate) + c:RegisterEffect(e1) +end +function c511000138.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 end + local lp=Duel.GetLP(tp) + local costlp=math.floor((lp+1)/2) + Duel.PayLPCost(tp,costlp) + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone(e1) + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c511000138.cfilter(c) + return c:IsCode(25833572) +end +function c511000138.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000138.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c511000138.filter(c,e,tp) + return c:IsCode(511000137) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000138.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000138.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000138.activate(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,c511000138.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end diff --git a/script/c511000139.lua b/script/c511000139.lua new file mode 100644 index 00000000..dd22b9ee --- /dev/null +++ b/script/c511000139.lua @@ -0,0 +1,43 @@ +--Zombie Werewolf +function c511000139.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000139,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000139.condition) + e1:SetTarget(c511000139.target) + e1:SetOperation(c511000139.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511000139.atkval) + c:RegisterEffect(e2) +end +function c511000139.atkval(e,c) + return Duel.GetMatchingGroupCount(Card.IsCode,c:GetControler(),LOCATION_GRAVE,0,nil,511000139)*500 +end +function c511000139.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511000139.filter(c,e,tp) + return c:IsCode(511000139) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000139.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000139.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000139.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,c511000139.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000140.lua b/script/c511000140.lua new file mode 100644 index 00000000..63ff88cb --- /dev/null +++ b/script/c511000140.lua @@ -0,0 +1,37 @@ +--Vampire Bat +function c511000140.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetTarget(c511000140.tg1) + e1:SetValue(200) + c:RegisterEffect(e1) + --Destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetTarget(c511000140.desreptg) + c:RegisterEffect(e2) +end +function c511000140.tg1(e,c) + return c:IsRace(RACE_ZOMBIE) +end + +function c511000140.repfilter(c) + return c:IsCode(511000140) and c:IsAbleToGrave() +end +function c511000140.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) + and Duel.IsExistingMatchingCard(c511000140.repfilter,tp,LOCATION_DECK,0,1,nil) end + if Duel.SelectYesNo(tp,aux.Stringid(511000140,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000140.repfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + return true + else return false end +end \ No newline at end of file diff --git a/script/c511000141.lua b/script/c511000141.lua new file mode 100644 index 00000000..bf1212c1 --- /dev/null +++ b/script/c511000141.lua @@ -0,0 +1,59 @@ +--Infernalvania +function c511000141.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000141,0)) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e2:SetCategory(CATEGORY_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511000141.cost) + e2:SetTarget(c511000141.target) + e2:SetOperation(c511000141.operation) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c511000141.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsRace(RACE_ZOMBIE) and c:IsDiscardable() +end +function c511000141.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 + and Duel.IsExistingMatchingCard(c511000141.cfilter,tp,LOCATION_HAND,0,1,nil) end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetLabelObject(e) + e1:SetTarget(c511000141.sumlimit) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetTargetRange(1,0) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone(e1) + e3:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e3,tp) + Duel.DiscardHand(tp,c511000141.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511000141.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject()~=se +end +function c511000141.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511000141.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511000142.lua b/script/c511000142.lua new file mode 100644 index 00000000..f99b9303 --- /dev/null +++ b/script/c511000142.lua @@ -0,0 +1,38 @@ +--Zombie Bed +function c511000142.initial_effect(c) + --Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000142,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511000142.spcon) + e1:SetTarget(c511000142.target) + e1:SetOperation(c511000142.operation) + c:RegisterEffect(e1) +end +function c511000142.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_DESTROY)~=0 + and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) + and e:GetHandler():IsPreviousPosition(POS_FACEDOWN) +end +function c511000142.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp + and chkc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000142.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000142.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000142.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + c:SetCardTarget(tc) + end +end +function c511000142.filter(c,e,tp) + return c:IsRace(RACE_ZOMBIE) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end \ No newline at end of file diff --git a/script/c511000143.lua b/script/c511000143.lua new file mode 100644 index 00000000..37c474f3 --- /dev/null +++ b/script/c511000143.lua @@ -0,0 +1,39 @@ +--Red Ghost Moon +function c511000143.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) + e1:SetCondition(c511000143.condition) + e1:SetCost(c511000143.cost) + e1:SetTarget(c511000143.target) + e1:SetOperation(c511000143.activate) + c:RegisterEffect(e1) +end +function c511000143.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 c511000143.cfilter(c) + return c:IsRace(RACE_ZOMBIE) and c:IsDiscardable() +end +function c511000143.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000143.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c511000143.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511000143.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,0) +end +function c511000143.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g=Duel.SelectMatchingCard(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.Recover(tp,tc:GetAttack(),REASON_EFFECT) + Duel.BreakEffect() + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511000145.lua b/script/c511000145.lua new file mode 100644 index 00000000..c581b31e --- /dev/null +++ b/script/c511000145.lua @@ -0,0 +1,88 @@ +--Infernity Zero +function c511000145.initial_effect(c) + c:EnableReviveLimit() + --Survival + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511000145.cost) + e1:SetCondition(c511000145.condition) + e1:SetTarget(c511000145.target) + e1:SetOperation(c511000145.operation) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_LOSE_LP) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(1,0) + e2:SetValue(1) + c:RegisterEffect(e2) + --cannot destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511000145.ncon) + e3:SetValue(1) + c:RegisterEffect(e3) + --self destroy + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EFFECT_SELF_DESTROY) + e6:SetCondition(c511000145.sdcon) + c:RegisterEffect(e6) + --counter + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_DAMAGE) + e4:SetCondition(c511000145.ctcon) + e4:SetOperation(c511000145.ctop) + c:RegisterEffect(e4) +end +function c511000145.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) + e:SetLabel(g:GetCount()) +end +function c511000145.condition(e,tp,eg,ep,ev,re,r,rp) + if rp==tp or Duel.GetLP(tp)>2000 then return false end + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c511000145.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000145.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then + c:CompleteProcedure() + end +end +function c511000145.ncon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_HAND,0)==0 +end +function c511000145.sdcon(e) + return e:GetHandler():GetCounter(0x1097)>=3 +end +function c511000145.ctcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511000145.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x1097,1) +end diff --git a/script/c511000146.lua b/script/c511000146.lua new file mode 100644 index 00000000..12715579 --- /dev/null +++ b/script/c511000146.lua @@ -0,0 +1,41 @@ +--Aria from Beyond +function c511000146.initial_effect(c) + --copy spell + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0x1e1,0x1e1) + e1:SetTarget(c511000146.target) + e1:SetOperation(c511000146.operation) + c:RegisterEffect(e1) +end +function c511000146.filter(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return end + local cost=te:GetCost() + local target=te:GetTarget() + return c:GetType()==0x2 and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0) or not cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) +end +function c511000146.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c511000146.filter(chkc,tp,eg,ep,ev,re,r,rp) end + if chk==0 then return Duel.IsExistingTarget(c511000146.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp,eg,ep,ev,re,r,rp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tc=Duel.SelectTarget(tp,c511000146.filter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp,eg,ep,ev,re,r,rp):GetFirst() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + e:SetLabelObject(te) + Duel.ClearTargetCard() + tc:CreateEffectRelation(e) + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c511000146.operation(e,tp,eg,ep,ev,re,r,rp) + local te=e:GetLabelObject() + if not te:GetHandler():IsRelateToEffect(e) then return end + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end \ No newline at end of file diff --git a/script/c511000147.lua b/script/c511000147.lua new file mode 100644 index 00000000..2951860c --- /dev/null +++ b/script/c511000147.lua @@ -0,0 +1,63 @@ +--Glory Shield +function c511000147.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(c511000147.target) + e1:SetOperation(c511000147.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000147.descon) + e2:SetTarget(c511000147.destg) + e2:SetOperation(c511000147.desop) + 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 c511000147.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511000147.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000147.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000147.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000147.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + end +end +function c511000147.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst()==e:GetHandler():GetEquipTarget() +end +function c511000147.dfilter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511000147.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511000147.dfilter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000147.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000147.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000148.lua b/script/c511000148.lua new file mode 100644 index 00000000..1d17cebd --- /dev/null +++ b/script/c511000148.lua @@ -0,0 +1,68 @@ +--Five Star Twilight +function c511000148.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000148.cost) + e1:SetTarget(c511000148.target) + e1:SetOperation(c511000148.activate) + c:RegisterEffect(e1) +end +function c511000148.cfilter(c) + return c:GetLevel()==5 +end +function c511000148.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511000148.cfilter,1,nil) end + local rg=Duel.SelectReleaseGroup(tp,c511000148.cfilter,1,1,nil) + Duel.Release(rg,REASON_COST) +end +function c511000148.filter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000148.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511000148.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,40640057) + and Duel.IsExistingMatchingCard(c511000148.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,511000153) + and Duel.IsExistingMatchingCard(c511000148.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,511000151) + and Duel.IsExistingMatchingCard(c511000148.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,511000152) + and Duel.IsExistingMatchingCard(c511000148.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,511000154) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,5,tp,LOCATION_DECK+LOCATION_HAND) +end +function c511000148.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=4 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g1=Duel.GetMatchingGroup(c511000148.filter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp,40640057) + local g2=Duel.GetMatchingGroup(c511000148.filter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp,511000153) + local g3=Duel.GetMatchingGroup(c511000148.filter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp,511000151) + local g4=Duel.GetMatchingGroup(c511000148.filter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp,511000152) + local g5=Duel.GetMatchingGroup(c511000148.filter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp,511000154) + if g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 and g4:GetCount()>0 and g5:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg3=g3:Select(tp,1,1,nil) + sg1:Merge(sg3) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg4=g4:Select(tp,1,1,nil) + sg1:Merge(sg4) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg5=g5:Select(tp,1,1,nil) + sg1:Merge(sg5) + local tc=sg1:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + tc:RegisterEffect(e1,true) + tc=sg1:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511000149.lua b/script/c511000149.lua new file mode 100644 index 00000000..334953d0 --- /dev/null +++ b/script/c511000149.lua @@ -0,0 +1,47 @@ +--Kuribandit +function c511000149.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000149.splimit) + c:RegisterEffect(e1) + --effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000149,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_STANDBY_PHASE+0x1c0) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511000149.drcost) + e2:SetTarget(c511000149.drtg) + e2:SetOperation(c511000149.drop) + c:RegisterEffect(e2) +end +function c511000149.splimit(e,se,sp,st) + return se:GetHandler():IsCode(511000152) +end +function c511000149.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511000149.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,5) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(5) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,5) +end +function c511000149.drop(e,tp,eg,ep,ev,re,r,rp,chk) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local g=Duel.GetDecktopGroup(p,d) + Duel.Draw(p,d,REASON_EFFECT) + Duel.ConfirmCards(1-p,g) + g=g:Filter(Card.IsType,nil,TYPE_MONSTER) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c511000150.lua b/script/c511000150.lua new file mode 100644 index 00000000..5d3d8ab8 --- /dev/null +++ b/script/c511000150.lua @@ -0,0 +1,103 @@ +--Kuribabylon +function c511000150.initial_effect(c) + --ss success + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511000150.atkcon) + e1:SetOperation(c511000150.atkop) + c:RegisterEffect(e1) + --resummon (ignition) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511000150.spcost) + e2:SetTarget(c511000150.sptg) + e2:SetOperation(c511000150.spop) + c:RegisterEffect(e2) + --resummon (on attack) + local e3=e2:Clone() + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_DISABLED) + e3:SetCondition(c511000150.negcon) + c:RegisterEffect(e3) +end +function c511000150.negcon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst()==e:GetHandler() +end +function c511000150.atkcon(e,tp,eg,ep,ev,re,r,rp) + if not re then return false end + local rc=re:GetHandler() + return rc:IsCode(511000153) +end +function c511000150.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=c:GetMaterial() + local s1=0 + local s2=0 + local tc=g:GetFirst() + while tc do + local a1=tc:GetAttack() + local a2=tc:GetPreviousAttackOnField() + if a1<0 then a1=0 end + if a2<0 then a2=0 end + s1=s1+a1 + s2=s2+a2 + tc=g:GetNext() + end + local a=0 + if s1>s2 then + a=s1 + else + a=s2 + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(a) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c511000150.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000150.filter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000150.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511000150.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp,40640057) + and Duel.IsExistingMatchingCard(c511000150.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp,511000153) + and Duel.IsExistingMatchingCard(c511000150.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp,511000151) + and Duel.IsExistingMatchingCard(c511000150.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp,511000152) + and Duel.IsExistingMatchingCard(c511000150.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp,511000154) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,5,tp,LOCATION_REMOVED) +end +function c511000150.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=4 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g1=Duel.GetMatchingGroup(c511000150.filter,tp,LOCATION_REMOVED,0,nil,e,tp,40640057) + local g2=Duel.GetMatchingGroup(c511000150.filter,tp,LOCATION_REMOVED,0,nil,e,tp,511000153) + local g3=Duel.GetMatchingGroup(c511000150.filter,tp,LOCATION_REMOVED,0,nil,e,tp,511000151) + local g4=Duel.GetMatchingGroup(c511000150.filter,tp,LOCATION_REMOVED,0,nil,e,tp,511000152) + local g5=Duel.GetMatchingGroup(c511000150.filter,tp,LOCATION_REMOVED,0,nil,e,tp,511000154) + if g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 and g4:GetCount()>0 and g5:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg3=g3:Select(tp,1,1,nil) + sg1:Merge(sg3) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg4=g4:Select(tp,1,1,nil) + sg1:Merge(sg4) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg5=g5:Select(tp,1,1,nil) + sg1:Merge(sg5) + Duel.SpecialSummon(sg1,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000151.lua b/script/c511000151.lua new file mode 100644 index 00000000..4c7110d8 --- /dev/null +++ b/script/c511000151.lua @@ -0,0 +1,28 @@ +--Kuribee +function c511000151.initial_effect(c) + --negate attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000151,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000151.condition) + e1:SetOperation(c511000151.operation) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511000151.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) and d:IsFaceup() and + (d:IsCode(511000151) or d:IsCode(511000152) or d:IsCode(511000153) or d:IsCode(511000154) or d:IsCode(40640057)) +end +function c511000151.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511000152.lua b/script/c511000152.lua new file mode 100644 index 00000000..ebfb16ee --- /dev/null +++ b/script/c511000152.lua @@ -0,0 +1,62 @@ +--Kuribeh +function c511000152.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86585274,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000152.spcost) + e1:SetTarget(c511000152.sptg) + e1:SetOperation(c511000152.spop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511000152.cfilter(c,code) + return c:IsCode(code) and c:IsAbleToRemoveAsCost() +end +function c511000152.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511000152.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000153) + and Duel.IsExistingMatchingCard(c511000152.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000151) + and Duel.IsExistingMatchingCard(c511000152.cfilter,tp,LOCATION_ONFIELD,0,1,nil,40640057) + and Duel.IsExistingMatchingCard(c511000152.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000154) + and c:IsAbleToRemoveAsCost() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c511000152.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil,511000153) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c511000152.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil,511000151) + g1:Merge(g2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g3=Duel.SelectMatchingCard(tp,c511000152.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil,40640057) + g1:Merge(g3) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g4=Duel.SelectMatchingCard(tp,c511000152.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil,511000154) + g1:Merge(g4) + g1:AddCard(c) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c511000152.filter(c,e,tp) + return c:IsCode(16404809) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000152.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000152.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511000152.spop(e,tp,eg,ep,ev,re,r,rp,c) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c511000152.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511000153.lua b/script/c511000153.lua new file mode 100644 index 00000000..161133e9 --- /dev/null +++ b/script/c511000153.lua @@ -0,0 +1,67 @@ +--Kuribah +function c511000153.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86585274,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000153.spcost) + e1:SetTarget(c511000153.sptg) + e1:SetOperation(c511000153.spop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511000153.cfilter(c,code) + return c:IsCode(code) and c:IsAbleToRemoveAsCost() +end +function c511000153.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511000153.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000152) + and Duel.IsExistingMatchingCard(c511000153.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000151) + and Duel.IsExistingMatchingCard(c511000153.cfilter,tp,LOCATION_ONFIELD,0,1,nil,40640057) + and Duel.IsExistingMatchingCard(c511000153.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000154) + and c:IsAbleToRemoveAsCost() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c511000153.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil,511000152) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c511000153.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil,511000151) + g1:Merge(g2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g3=Duel.SelectMatchingCard(tp,c511000153.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil,40640057) + g1:Merge(g3) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g4=Duel.SelectMatchingCard(tp,c511000153.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil,511000154) + g1:Merge(g4) + g1:AddCard(c) + g1:KeepAlive() + e:SetLabelObject(g1) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c511000153.filter(c,e,tp) + return c:IsCode(511000150) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000153.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000153.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetTargetCard(e:GetLabelObject()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511000153.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c511000153.filter,tp,0x13,0,1,1,nil,e,tp):GetFirst() + if tc then + tc:SetMaterial(g) + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511000154.lua b/script/c511000154.lua new file mode 100644 index 00000000..624eeb11 --- /dev/null +++ b/script/c511000154.lua @@ -0,0 +1,46 @@ +--Kuriboo +function c511000154.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79972330,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000154.atkcost) + e1:SetTarget(c511000154.atktg) + e1:SetOperation(c511000154.atkop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511000154.cfilter(c) + return c:IsType(TYPE_TRAP) and c:IsDiscardable() +end +function c511000154.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000154.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511000154.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511000154.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000154.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000155.lua b/script/c511000155.lua new file mode 100644 index 00000000..0f7b1d5f --- /dev/null +++ b/script/c511000155.lua @@ -0,0 +1,31 @@ +-- Card Guard +-- Scripted by UnknownGuest +function c511000155.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000155.target) + e1:SetOperation(c511000155.activate) + c:RegisterEffect(e1) +end +function c511000155.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) +end +function c511000155.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + Duel.RegisterEffect(e2,tp) + Duel.BreakEffect() + Duel.DiscardHand(tp,aux.TRUE,1,1,REASON_EFFECT+REASON_DISCARD) +end diff --git a/script/c511000156.lua b/script/c511000156.lua new file mode 100644 index 00000000..687b6429 --- /dev/null +++ b/script/c511000156.lua @@ -0,0 +1,26 @@ +-- Laplace the Fiend Mathematician +-- Scripted by UnknownGuest +function c511000156.initial_effect(c) + -- Inflict Damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000156,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000156.damtg) + e1:SetOperation(c511000156.damop) + c:RegisterEffect(e1) +end +function c511000156.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetFieldGroupCount(tp,0xc,0xc) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) +end +function c511000156.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,0xc,0xc) + Duel.Damage(p,ct*300,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000158.lua b/script/c511000158.lua new file mode 100644 index 00000000..ec788806 --- /dev/null +++ b/script/c511000158.lua @@ -0,0 +1,59 @@ +-- Necro Cycle +-- scripted by UnknownGuest +function c511000158.initial_effect(c) + -- activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511000158.target) + c:RegisterEffect(e1) + -- special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000158,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c511000158.spcon) + e2:SetTarget(c511000158.sptg) + e2:SetOperation(c511000158.spop) + c:RegisterEffect(e2) +end +function c511000158.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c511000158.spcon(e,tp,eg,ep,ev,re,r,rp) and c511000158.sptg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetOperation(c511000158.spop) + c511000158.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c511000158.cfilter(c) + return c:IsFaceup() and c:IsCode(511000157) +end +function c511000158.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000158.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000158.filter(c,e,tp) + return c:IsCode(511000157) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000158.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000158.filter,tp,LOCATION_DECK,0,1,nil,e,tp) + and e:GetHandler():GetFlagEffect(511000158)==0 end + e:GetHandler():RegisterFlagEffect(511000158,RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000158.spop(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,c511000158.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000159.lua b/script/c511000159.lua new file mode 100644 index 00000000..0183c5c5 --- /dev/null +++ b/script/c511000159.lua @@ -0,0 +1,27 @@ +-- Synchro Blast +-- Scripted by: UnknownGuest +function c511000159.initial_effect(c) + -- activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- inflict 500 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000159,0)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511000159.damcon) + e2:SetOperation(c511000159.damop) + c:RegisterEffect(e2) +end +function c511000159.damcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a:IsControler(tp) and a~=e:GetHandler() and a:IsType(TYPE_SYNCHRO) +end +function c511000159.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,500,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000160.lua b/script/c511000160.lua new file mode 100644 index 00000000..1cce778a --- /dev/null +++ b/script/c511000160.lua @@ -0,0 +1,29 @@ +--Hyper Refresh +function c511000160.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000160.condition) + e1:SetOperation(c511000160.activate) + c:RegisterEffect(e1) +end +function c511000160.filter(c,e) + return c:IsFaceup() +end +function c511000160.condition(e,tp,eg,ep,ev,re,r,rp) + local atk=0 + local g=Duel.GetMatchingGroup(c511000160.filter,tp,0,LOCATION_MZONE,nil) + local bc=g:GetFirst() + while bc do + atk=atk+bc:GetAttack() + bc=g:GetNext() + end + local p=e:GetHandler():GetControler() + return Duel.GetLP(p)0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000163.eqlimit(e,c) + return e:GetOwner()==c +end +function c511000163.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() then + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc,true) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511000163.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(tc) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e3) + --atkdown + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c511000163.atkcon) + e4:SetOperation(c511000163.atkop) + c:RegisterEffect(e4) + else + Duel.SendtoGrave(c,REASON_EFFECT) + end + end +end +function c511000163.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000163.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(511000163)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + c:RegisterFlagEffect(511000163,RESET_EVENT+0x1fe0000,0,0) + e:SetLabelObject(e1) + e:SetLabel(2) + else + local pe=e:GetLabelObject() + local ct=e:GetLabel() + e:SetLabel(ct+1) + pe:SetValue(ct*-500) + end +end \ No newline at end of file diff --git a/script/c511000164.lua b/script/c511000164.lua new file mode 100644 index 00000000..c74ebd7f --- /dev/null +++ b/script/c511000164.lua @@ -0,0 +1,90 @@ +--Holding Arms +function c511000164.initial_effect(c) + --attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000164,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000164.condition) + e1:SetTarget(c511000164.target) + e1:SetOperation(c511000164.operation) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c511000164.effcon) + e2:SetValue(1) + c:RegisterEffect(e2) + --dam + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetCondition(c511000164.effcon) + e3:SetValue(1) + c:RegisterEffect(e3) + --immune effect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511000164.effcon) + e4:SetValue(c511000164.efilterx) + c:RegisterEffect(e4) +end +function c511000164.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + return tc and tc:IsControler(1-tp) +end +function c511000164.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetAttackTarget() + if chk==0 then return true end + Duel.SetTargetCard(tc) +end +function c511000164.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttackTarget() + if not tc or tc:IsControler(tp) or not tc:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetLabel(0) + e2:SetCondition(c511000164.descon) + e2:SetOperation(c511000164.desop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(511000164,RESET_EVENT+0x1fe0000,0,0) +end +function c511000164.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=e:GetOwner():GetControler() +end +function c511000164.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=e:GetLabel() + ct=ct+1 + Duel.HintSelection(Group.FromCards(c)) + e:GetOwner():SetTurnCounter(ct) + e:SetLabel(ct) + if ct==3 then + c:ResetFlagEffect(511000164) + Duel.Destroy(c,REASON_EFFECT) + end +end +function c511000164.efilter(c) + return c:IsFaceup() and c:GetFlagEffect(511000164)>0 +end +function c511000164.effcon(e) + return Duel.IsExistingMatchingCard(c511000164.efilter,e:GetOwnerPlayer(),LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c511000164.efilterx(e,te) + if not te then return false end + return te:IsHasCategory(CATEGORY_TOHAND+CATEGORY_DESTROY+CATEGORY_REMOVE+CATEGORY_TODECK+CATEGORY_RELEASE+CATEGORY_TOGRAVE) +end diff --git a/script/c511000165.lua b/script/c511000165.lua new file mode 100644 index 00000000..a49859c1 --- /dev/null +++ b/script/c511000165.lua @@ -0,0 +1,30 @@ +--Holding Legs +function c511000165.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000165,0)) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000165.target) + e1:SetOperation(c511000165.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000165.filter(c) + return c:IsFacedown() and c:IsAbleToHand() +end +function c511000165.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511000165.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511000165.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000165.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SendtoHand(g,nil,REASON_EFFECT) +end diff --git a/script/c511000166.lua b/script/c511000166.lua new file mode 100644 index 00000000..8e56dd9c --- /dev/null +++ b/script/c511000166.lua @@ -0,0 +1,36 @@ +--Sacred Stone of Ojhat +function c511000166.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000166,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000166.spcon) + c:RegisterEffect(e1) + --pos limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511000166.con) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) +end +function c511000166.spfilter(c,code) + return c:IsCode(code) and c:IsFaceup() +end +function c511000166.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000166.spfilter,tp,LOCATION_MZONE,0,1,nil,43730887) + and Duel.IsExistingMatchingCard(c511000166.spfilter,tp,LOCATION_MZONE,0,1,nil,70124586) +end +function c511000166.con(e) + return Duel.IsExistingMatchingCard(c511000166.spfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,43730887) + and Duel.IsExistingMatchingCard(c511000166.spfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,70124586) +end diff --git a/script/c511000167.lua b/script/c511000167.lua new file mode 100644 index 00000000..37e7cef7 --- /dev/null +++ b/script/c511000167.lua @@ -0,0 +1,23 @@ +--Dark wall of wind +--scripted by GameMaster (GM) +function c511000167.initial_effect (c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000167.activate) + c:RegisterEffect(e1) +end +function c511000167.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000167.damop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end + +function c511000167.damop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttacker():IsControler(1-tp) and not Duel.GetAttackTarget() then Duel.ChangeBattleDamage(tp,0) end +end + diff --git a/script/c511000168.lua b/script/c511000168.lua new file mode 100644 index 00000000..a0c173be --- /dev/null +++ b/script/c511000168.lua @@ -0,0 +1,35 @@ +--Lullaby of Obedience +function c511000168.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000168.cost) + e1:SetTarget(c511000168.target) + e1:SetOperation(c511000168.activate) + c:RegisterEffect(e1) +end +function c511000168.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 c511000168.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,0,LOCATION_DECK,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c511000168.filter(c,code) + return c:IsType(TYPE_MONSTER) and c:IsCode(code) and c:IsAbleToHand() and c:IsLevelAbove(8) +end +function c511000168.activate(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(1-tp,c511000168.filter,1-tp,LOCATION_DECK,0,1,1,nil,ac) + local tc=g:GetFirst() + if tc then + Duel.SendtoHand(tc,tp,REASON_EFFECT) + Duel.ConfirmCards(tp,tc) + end +end diff --git a/script/c511000169.lua b/script/c511000169.lua new file mode 100644 index 00000000..564b6fdb --- /dev/null +++ b/script/c511000169.lua @@ -0,0 +1,57 @@ +--Tribute Burial +function c511000169.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000169.target) + e1:SetOperation(c511000169.activate) + c:RegisterEffect(e1) +end +function c511000169.rmfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c511000169.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000169.rmfilter,tp,0,LOCATION_GRAVE,1,nil) + and Duel.IsExistingTarget(c511000169.rmfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectTarget(tp,c511000169.rmfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectTarget(tp,c511000169.rmfilter,tp,0,LOCATION_GRAVE,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g1,g1:GetCount(),0,0) +end +function c511000169.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.Remove(g,POS_FACEUP,REASON_EFFECT)>0 then + --summon with no tribute + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(511000169,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetRange(LOCATION_GRAVE+LOCATION_REMOVED) + e1:SetCondition(c511000169.ntcon) + e1:SetTarget(c511000169.nttg) + e1:SetOperation(c511000169.ntop) + e1:SetReset(RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511000169.ntcon(e,c) + if e:GetHandler():GetFlagEffect(511000169)~=0 then return false end + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511000169.nttg(e,c) + return c:IsLevelAbove(5) +end +function c511000169.ntop(e,tp,eg,ep,ev,re,r,rp,c) + e:GetHandler():RegisterFlagEffect(511000169,RESET_EVENT+0x1fe0000,0,1) +end diff --git a/script/c511000170.lua b/script/c511000170.lua new file mode 100644 index 00000000..14765edb --- /dev/null +++ b/script/c511000170.lua @@ -0,0 +1,33 @@ +--Zombie's Jewel +function c511000170.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511000170.condition) + e1:SetTarget(c511000170.target) + e1:SetOperation(c511000170.activate) + c:RegisterEffect(e1) +end +function c511000170.filter(c,tp) + return c:IsControler(1-tp) and c:IsAbleToHand() and c:IsType(TYPE_SPELL) +end +function c511000170.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000170.filter,nil,tp) + return g:GetCount()==1 +end +function c511000170.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511000170.filter,nil,tp) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511000170.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,tp,REASON_EFFECT) + Duel.Draw(1-tp,1,REASON_EFFECT) + end +end diff --git a/script/c511000171.lua b/script/c511000171.lua new file mode 100644 index 00000000..d2cdd3ad --- /dev/null +++ b/script/c511000171.lua @@ -0,0 +1,148 @@ +--Spell Sanctuary +function c511000171.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000171.activate) + c:RegisterEffect(e1) + --cannot activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,1) + e2:SetValue(c511000171.aclimit) + c:RegisterEffect(e2) + --quick-play + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000171.operation) + c:RegisterEffect(e3) +end +function c511000171.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511000171.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g1=Duel.GetMatchingGroup(c511000171.filter,tp,LOCATION_DECK,0,nil) + if g1:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(24140059,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g1:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end + local g2=Duel.GetMatchingGroup(c511000171.filter,1-tp,LOCATION_DECK,0,nil) + if g2:GetCount()>0 and Duel.SelectYesNo(1-tp,aux.Stringid(24140059,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g2:Select(1-tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(tp,sg) + end +end +function c511000171.spfilter(c) + local te=c:GetActivateEffect() + return te and (c:IsLocation(LOCATION_HAND) or (c:IsLocation(LOCATION_SZONE) and c:IsFacedown())) + and c:IsType(TYPE_SPELL) and not c:IsType(TYPE_QUICKPLAY) +end +function c511000171.aclimit(e,re,tp) + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_SPELL) then return false end + local c=re:GetHandler() + return c:IsLocation(LOCATION_SZONE) and c:IsStatus(STATUS_SET_TURN) and c:GetFlagEffect(511000171)~=0 +end +function c511000171.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511000171.spfilter,c:GetControler(),LOCATION_SZONE+LOCATION_HAND,LOCATION_SZONE+LOCATION_HAND,nil) + if g:GetCount()<=0 then return end + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511000171)==0 then + tc:RegisterFlagEffect(511000171,EVENT_ADJUST,0,1) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(TYPE_QUICKPLAY) + e1:SetReset(RESET_EVENT+EVENT_ADJUST,1) + tc:RegisterEffect(e1) + local te=tc:GetActivateEffect() + if tc:GetFlagEffect(511000172)==0 and te then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(te:GetCode()) + e2:SetRange(LOCATION_SZONE+LOCATION_HAND) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCondition(c511000171.accon) + if te:GetCost() then + e2:SetCost(te:GetCost()) + end + e2:SetTarget(c511000171.actg) + e2:SetOperation(c511000171.acop) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(511000172,nil,0,1) + end + end + tc=g:GetNext() + end +end +function c511000171.spsan(c) + return c:IsFaceup() and not c:IsStatus(STATUS_DISABLED) and c:IsCode(511000171) +end +function c511000171.accon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local c=e:GetHandler() + local te=c:GetActivateEffect() + local condition=te:GetCondition() + return (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) + and Duel.IsExistingMatchingCard(c511000171.spsan,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511000171.actg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local con=false + if Duel.GetTurnPlayer()~=c:GetControler() then + con=not c:IsStatus(STATUS_SET_TURN) and c:IsFacedown() and not c:IsLocation(LOCATION_HAND) + else + if Duel.GetCurrentChain()>0 or not (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) then + if c:IsLocation(LOCATION_HAND) then + con=(Duel.GetLocationCount(tp,LOCATION_SZONE)>0 or c:IsType(TYPE_FIELD)) + elseif c:IsLocation(LOCATION_SZONE) then + con=not c:IsStatus(STATUS_SET_TURN) and c:IsFacedown() + end + end + end + local te=c:GetActivateEffect() + local target=te:GetTarget() + local tpe=c:GetType() + if chk==0 then return con and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) end + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 and Duel.SendtoGrave(of,REASON_RULE)==0 then Duel.SendtoGrave(c,REASON_RULE) end + end + if c:IsLocation(LOCATION_ONFIELD) and c:IsFacedown() then + Duel.ChangePosition(c,POS_FACEUP) + else + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + c:CreateEffectRelation(te) + if target then target(te,tp,eg,ep,ev,re,r,rp,1) end +end +function c511000171.acop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local te=c:GetActivateEffect() + local op=te:GetOperation() + local tpe=c:GetType() + if op then + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + c:CancelToGrave(false) + end + c:ReleaseEffectRelation(te) + if op then op(te,tp,eg,ep,ev,re,r,rp) end + end +end diff --git a/script/c511000172.lua b/script/c511000172.lua new file mode 100644 index 00000000..5df25054 --- /dev/null +++ b/script/c511000172.lua @@ -0,0 +1,52 @@ +--Thirst for Compensation +function c511000172.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c511000172.spcon) + e1:SetTarget(c511000172.sptg) + e1:SetOperation(c511000172.spop) + c:RegisterEffect(e1) +end +function c511000172.cfilter(c,tp) + return c:IsControler(1-tp) and c:IsPreviousLocation(LOCATION_DECK) and not c:IsReason(REASON_DRAW) +end +function c511000172.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000172.cfilter,1,nil,tp) +end +function c511000172.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000172.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000172.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c511000172.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>2 then ft=2 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000172.filter,tp,LOCATION_HAND,0,1,ft,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(1) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + end +end diff --git a/script/c511000173.lua b/script/c511000173.lua new file mode 100644 index 00000000..3a270145 --- /dev/null +++ b/script/c511000173.lua @@ -0,0 +1,80 @@ +--Vampiric Leech +function c511000173.initial_effect(c) + --attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_BP_FIRST_TURN) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(1,0) + c:RegisterEffect(e1) + --reg + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetOperation(c511000173.regop) + c:RegisterEffect(e2) + --change battle position + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000173,1)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511000173.poscon) + e3:SetCost(c511000173.poscost) + e3:SetOperation(c511000173.posop) + c:RegisterEffect(e3) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(511000173) + e5:SetRange(LOCATION_MZONE) + c:RegisterEffect(e5) + if not c511000173.global_check then + c511000173.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetCode(EFFECT_CANNOT_ATTACK) + ge1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + ge1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + ge1:SetCondition(c511000173.atkcon) + ge1:SetTarget(c511000173.atktg) + Duel.RegisterEffect(ge1,0) + end +end +function c511000173.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetAttackTarget() then return end + c:RegisterFlagEffect(511000174,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000173.poscost(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 c511000173.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000174)>0 +end +function c511000173.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c511000173.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + c:RegisterEffect(e1) + end +end +function c511000173.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsAttackPos() then + Duel.ChangePosition(e:GetHandler(),POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + end +end +function c511000173.atkcon(e) + return Duel.GetTurnCount()==1 +end +function c511000173.atktg(e,c) + return not c:IsHasEffect(511000173) +end diff --git a/script/c511000174.lua b/script/c511000174.lua new file mode 100644 index 00000000..85715065 --- /dev/null +++ b/script/c511000174.lua @@ -0,0 +1,68 @@ +--Disgraced Mage +function c511000174.initial_effect(c) + --to deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000174,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511000174.condition) + e1:SetOperation(c511000174.operation) + c:RegisterEffect(e1) + --no damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetCondition(c511000174.damcon) + e2:SetValue(1) + c:RegisterEffect(e2) + --Destroy replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511000174.desreptg) + c:RegisterEffect(e3) +end +function c511000174.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and not bc:IsType(TYPE_TOKEN) and bc:GetLeaveFieldDest()==0 +end +function c511000174.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc:IsRelateToBattle() then + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_SEND_REPLACE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetTarget(c511000174.reptg) + e1:SetOperation(c511000174.repop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + bc:RegisterEffect(e1) + end +end +function c511000174.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_BATTLE) end + return true +end +function c511000174.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end +function c511000174.damcon(e) + return e:GetHandler()==Duel.GetAttackTarget() +end +function c511000174.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if chk==0 then return c:IsReason(REASON_BATTLE) and c:IsFaceup() and g:GetCount()>0 end + if Duel.SelectYesNo(tp,aux.Stringid(511000174,0)) then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + return true + else return false end +end diff --git a/script/c511000175.lua b/script/c511000175.lua new file mode 100644 index 00000000..f4f6cc51 --- /dev/null +++ b/script/c511000175.lua @@ -0,0 +1,46 @@ +--Necro Jar +function c511000175.initial_effect(c) + --immune spell + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511000175.efilter) + c:RegisterEffect(e1) + --reg + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_AVAILABLE_BD) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511000175.regop) + c:RegisterEffect(e2) +end +function c511000175.efilter(e,te) + return te:IsActiveType(TYPE_SPELL) +end +function c511000175.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=math.floor(ev/300) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000175,0)) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c511000175.dtg) + e1:SetOperation(c511000175.dop) + e1:SetLabel(ct) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) +end +function c511000175.dtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,e:GetLabel()) +end +function c511000175.dop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardDeck(p,d,REASON_EFFECT) +end diff --git a/script/c511000176.lua b/script/c511000176.lua new file mode 100644 index 00000000..53881171 --- /dev/null +++ b/script/c511000176.lua @@ -0,0 +1,31 @@ +--Negate Defense +function c511000176.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000176.target) + e1:SetOperation(c511000176.activate) + c:RegisterEffect(e1) +end +function c511000176.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDefensePos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511000176.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and not tc:IsAttackPos() then + if Duel.ChangePosition(tc,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK)>0 then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c511000177.lua b/script/c511000177.lua new file mode 100644 index 00000000..569a9ca6 --- /dev/null +++ b/script/c511000177.lua @@ -0,0 +1,46 @@ +--Necro Wall +function c511000177.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000177,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCondition(c511000177.spcon) + e1:SetTarget(c511000177.sptg) + e1:SetOperation(c511000177.spop) + c:RegisterEffect(e1) +end +function c511000177.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000177.spfilter(c) + return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) +end +function c511000177.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local sg=Duel.GetMatchingGroupCount(c511000177.spfilter,c:GetControler(),LOCATION_MZONE,0,c) + if chk==0 then return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>(sg-1) + and Duel.IsExistingMatchingCard(c511000177.spfilter,c:GetControler(),LOCATION_MZONE,0,1,c) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,sg,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,sg,0,0) +end +function c511000177.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sg=Duel.GetMatchingGroupCount(c511000177.spfilter,c:GetControler(),LOCATION_MZONE,0,c) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=(sg-1) then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511000178,0,0x4011,0,0,1,RACE_ZOMBIE,ATTRIBUTE_DARK) then return end + for i=1,sg do + local token=Duel.CreateToken(tp,511000178) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511000179.lua b/script/c511000179.lua new file mode 100644 index 00000000..c5219bd0 --- /dev/null +++ b/script/c511000179.lua @@ -0,0 +1,39 @@ +--Narrow Corridor +function c511000179.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c511000179.atkcon) + e2:SetTarget(c511000179.atktg) + c:RegisterEffect(e2) + --check + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000179.checkop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) +end +function c511000179.atkcon(e) + return e:GetHandler():GetFlagEffect(511000179)>1 +end +function c511000179.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() +end +function c511000179.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(511000179)>1 then return end + local fid=eg:GetFirst():GetFieldID() + e:GetHandler():RegisterFlagEffect(511000179,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end diff --git a/script/c511000180.lua b/script/c511000180.lua new file mode 100644 index 00000000..bfc76161 --- /dev/null +++ b/script/c511000180.lua @@ -0,0 +1,42 @@ +--Surprise Attack from Beyond +function c511000180.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000180.activate) + c:RegisterEffect(e1) +end +function c511000180.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c511000180.operation) + Duel.RegisterEffect(e1,tp) +end +function c511000180.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000180.dfilter(c) + return c:GetTurnID()==Duel.GetTurnCount() and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 +end +function c511000180.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511000180) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c511000180.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000180.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end + if Duel.IsExistingTarget(c511000180.dfilter,tp,LOCATION_MZONE,0,1,nil,e,tp) then + local g=Duel.SelectMatchingCard(tp,c511000180.dfilter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + local d=tc:GetAttack() + Duel.Damage(1-tp,d,REASON_BATTLE) + end +end diff --git a/script/c511000181.lua b/script/c511000181.lua new file mode 100644 index 00000000..1c30c820 --- /dev/null +++ b/script/c511000181.lua @@ -0,0 +1,45 @@ +--Short Circuit (Anime) +function c511000181.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000181.target) + e1:SetOperation(c511000181.activate) + c:RegisterEffect(e1) +end +function c511000181.filter(c) + return c:IsDefensePos() and c:IsRace(RACE_MACHINE) +end +function c511000181.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000181.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000181.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511000181.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000181.filter,tp,0,LOCATION_MZONE,nil) + Duel.ChangePosition(g,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) + if g:GetCount()~=0 then + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_TRIGGER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e3) + tc=g:GetNext() + end + end +end diff --git a/script/c511000182.lua b/script/c511000182.lua new file mode 100644 index 00000000..4ca4154d --- /dev/null +++ b/script/c511000182.lua @@ -0,0 +1,32 @@ +--Arduous Decision +function c511000182.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000182.target) + e1:SetOperation(c511000182.activate) + c:RegisterEffect(e1) +end +function c511000182.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>1 end +end +function c511000182.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)<2 then return end + Duel.ConfirmDecktop(tp,2) + local g=Duel.GetDecktopGroup(tp,2) + if g:GetCount()>0 then + Duel.DisableShuffleCheck() + Duel.ConfirmCards(1-tp,g) + local tg=g:RandomSelect(1-tp,1) + local tc=tg:GetFirst() + if tc:IsType(TYPE_MONSTER) and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + local g2=Duel.GetDecktopGroup(tp,1) + Duel.MoveSequence(g2:GetFirst(),1) + Duel.SendtoHand(g2,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g2) + else Duel.SendtoGrave(g,REASON_EFFECT) end + end +end diff --git a/script/c511000183.lua b/script/c511000183.lua new file mode 100644 index 00000000..32749e15 --- /dev/null +++ b/script/c511000183.lua @@ -0,0 +1,93 @@ +--Number 23: Lancelot, Ghost Knight of the Underworld +function c511000183.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,2) + c:EnableReviveLimit() + --direct + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000183,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511000183.condition) + e2:SetTarget(c511000183.target) + e2:SetOperation(c511000183.operation) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000183,1)) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_CHAINING) + e3:SetCondition(c511000183.negcon) + e3:SetCost(c511000183.negcost) + e3:SetTarget(c511000183.negtg) + e3:SetOperation(c511000183.negop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511000183.indes) + c:RegisterEffect(e4) + if not c511000183.global_check then + c511000183.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000183.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511000183.xyz_number=23 +function c511000183.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetAttackTarget()==nil and e:GetHandler():GetOverlayCount()>0 +end +function c511000183.filter(c,atk) + return c:IsFaceup() and c:GetAttack()<=atk and c:IsDestructable() +end +function c511000183.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and c511000183.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000183.filter,tp,0,LOCATION_MZONE,1,nil,c:GetAttack()*2) end + local sg=Duel.GetMatchingGroup(c511000183.filter,tp,0,LOCATION_MZONE,nil,c:GetAttack()*2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511000183.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sg=Duel.GetMatchingGroup(c511000183.filter,tp,0,LOCATION_MZONE,nil,c:GetAttack()*2) + Duel.Destroy(sg,REASON_EFFECT) +end +function c511000183.negcon(e,tp,eg,ep,ev,re,r,rp,chk) + local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and ep~=tp + and Duel.IsChainDisablable(ev) +end +function c511000183.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000183.negtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511000183.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end +function c511000183.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,66547759) + Duel.CreateToken(1-tp,66547759) +end +function c511000183.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000184.lua b/script/c511000184.lua new file mode 100644 index 00000000..6cc5a833 --- /dev/null +++ b/script/c511000184.lua @@ -0,0 +1,84 @@ +--Number 14: Greedy Sarameya +function c511000184.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,2) + c:EnableReviveLimit() + --Trick Battle effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c511000184.tbcon) + e1:SetCost(c511000184.tbcost) + e1:SetOperation(c511000184.tbop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511000184.indes) + c:RegisterEffect(e2) + if not c511000184.global_check then + c511000184.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000184.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511000184.xyz_number=14 +function c511000184.tbcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=Duel.GetAttacker() + if bc==c then bc=Duel.GetAttackTarget() end + return bc and bc:IsFaceup() and bc:GetAttack()>c:GetAttack() +end +function c511000184.tbcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000184.tbop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=Duel.GetAttacker() + if bc==c then + bc=Duel.GetAttackTarget() + end + if bc:GetAttack()>c:GetAttack() then + local dam=bc:GetAttack()-c:GetAttack() + Duel.Damage(1-tp,dam,REASON_BATTLE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + Duel.Destroy(bc,REASON_BATTLE) + else + local dam=c:GetAttack()-bc:GetAttack() + Duel.Damage(1-tp,dam,REASON_BATTLE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + bc:RegisterEffect(e1) + Duel.Destroy(c,REASON_BATTLE) + end + if Duel.IsExistingTarget(c511000184.dfilter,tp,0,LOCATION_MZONE,1,nil,bc:GetAttack()) then + local g=Duel.SelectMatchingCard(tp,c511000184.dfilter,tp,0,LOCATION_MZONE,1,1,nil,bc:GetAttack()) + Duel.Destroy(g,REASON_EFFECT) + end +end +function c511000184.dfilter(c,atk) + return c:IsFaceup() and c:IsDestructable() and c:GetAttack()<=atk +end +function c511000184.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,21313376) + Duel.CreateToken(1-tp,21313376) +end +function c511000184.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000185.lua b/script/c511000185.lua new file mode 100644 index 00000000..5e175456 --- /dev/null +++ b/script/c511000185.lua @@ -0,0 +1,46 @@ +--Damage Pot +function c511000185.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000185.condition) + e1:SetOperation(c511000185.activate) + c:RegisterEffect(e1) +end +function c511000185.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511000185.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000185.damopx) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000185,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetLabel(Duel.GetBattleDamage(tp)) + e2:SetTarget(c511000185.damtg) + e2:SetOperation(c511000185.damop) + e2:SetReset(RESET_EVENT+0x1020000) + c:RegisterEffect(e2) +end +function c511000185.damopx(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) + Duel.ChangeBattleDamage(1-tp,0) +end +function c511000185.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,e:GetLabel()) +end +function c511000185.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,e:GetLabel(),REASON_EFFECT,true) + Duel.Damage(1-tp,e:GetLabel(),REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511000187.lua b/script/c511000187.lua new file mode 100644 index 00000000..1c1b9e6a --- /dev/null +++ b/script/c511000187.lua @@ -0,0 +1,78 @@ +--Armored Xyz +function c511000187.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000187.target) + e1:SetOperation(c511000187.activate) + c:RegisterEffect(e1) +end +function c511000187.filter(c) + return c:IsType(TYPE_XYZ) +end +function c511000187.filterx(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511000187.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000187.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000187.filter,tp,LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingTarget(c511000187.filterx,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000187.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=Duel.SelectTarget(tp,c511000187.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local g=Duel.SelectTarget(tp,c511000187.filterx,tp,LOCATION_MZONE,0,1,1,nil) + local equip=eq:GetFirst() + local tg=g:GetFirst() + local code=equip:GetOriginalCode() + local atk=equip:GetTextAttack() + if not Duel.Equip(tp,equip,tg,false) then return end + if atk>0 then + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + equip:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetValue(code) + equip:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e3:SetCode(EFFECT_SET_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(atk) + equip:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000187,0)) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCountLimit(1) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetRange(LOCATION_SZONE) + e4:SetCost(c511000187.cost) + e4:SetTarget(c511000187.atktg) + e4:SetOperation(c511000187.atkop) + equip:RegisterEffect(e4) + end +end +function c511000187.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000187.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end +end +function c511000187.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end \ No newline at end of file diff --git a/script/c511000188.lua b/script/c511000188.lua new file mode 100644 index 00000000..e7b53374 --- /dev/null +++ b/script/c511000188.lua @@ -0,0 +1,41 @@ +-- Goddess Erda's Guidance +-- Scripted by UnknownGuest +function c511000188.initial_effect(c) + -- activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000188.setcost) + e1:SetTarget(c511000188.settg) + e1:SetOperation(c511000188.setop) + c:RegisterEffect(e1) +end +function c511000188.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c511000188.setcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000188.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c511000188.cfilter,1,1,REASON_COST+REASON_DISCARD,e:GetHandler()) +end +function c511000188.filter(c) + return c:IsType(TYPE_TRAP) and c:IsSSetable(true) +end +function c511000188.settg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if not e:GetHandler():IsLocation(LOCATION_SZONE) then + ft=ft-1 + end + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000188.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000188.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local g=Duel.SelectTarget(tp,c511000188.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) +end +function c511000188.setop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SSet(tp,tc) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511000189.lua b/script/c511000189.lua new file mode 100644 index 00000000..7bd26893 --- /dev/null +++ b/script/c511000189.lua @@ -0,0 +1,77 @@ +--Solid Overlay +function c511000189.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000189.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000189.regop) + c:RegisterEffect(e3) + if not c511000189.global_check then + c511000189.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000189.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511000189.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511000189.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + while c:GetFlagEffect(511000189)<4 do + c:RegisterFlagEffect(511000189,RESET_EVENT+0x1ff0000,0,0) + end +end diff --git a/script/c511000190.lua b/script/c511000190.lua new file mode 100644 index 00000000..5a8533d9 --- /dev/null +++ b/script/c511000190.lua @@ -0,0 +1,39 @@ +--Zero Blade +function c511000190.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000190.target) + e1:SetOperation(c511000190.activate) + c:RegisterEffect(e1) +end +function c511000190.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000190.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tg=g:GetFirst() + if tg then + Duel.HintSelection(g) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(-1000) + tg:RegisterEffect(e2) + end + end +end diff --git a/script/c511000191.lua b/script/c511000191.lua new file mode 100644 index 00000000..20dcb784 --- /dev/null +++ b/script/c511000191.lua @@ -0,0 +1,48 @@ +--Card from a Different Dimension +function c511000191.initial_effect(c) + --removed + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_REMOVE) + e1:SetOperation(c511000191.rmop) + c:RegisterEffect(e1) + --draw 2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000191,0)) + e2:SetCategory(CATEGORY_TO_HAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_REMOVED) + e2:SetCondition(c511000191.condition) + e2:SetTarget(c511000191.target) + e2:SetOperation(c511000191.operation) + c:RegisterEffect(e2) +end +function c511000191.rmop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsFacedown() then return end + if tp==Duel.GetTurnPlayer() then + e:GetHandler():RegisterFlagEffect(511000191,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,3) + else + e:GetHandler():RegisterFlagEffect(511000191,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,2) + end +end +function c511000191.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetTurnID()~=Duel.GetTurnCount() and tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(511000191)~=0 +end +function c511000191.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511000191)~=0 end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,tp,LOCATION_REMOVED) + e:GetHandler():RegisterFlagEffect(511000191,RESET_PHASE+PHASE_STANDBY,0,1) +end +function c511000191.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + if Duel.IsPlayerCanDraw(tp,2) then + Duel.Draw(tp,2,REASON_EFFECT) + Duel.Draw(1-tp,2,REASON_EFFECT) + end + end +end diff --git a/script/c511000192.lua b/script/c511000192.lua new file mode 100644 index 00000000..cab8ebc4 --- /dev/null +++ b/script/c511000192.lua @@ -0,0 +1,165 @@ +--Number F0: Future Hope +function c511000192.initial_effect(c) + --xyz summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c511000192.xyzcon) + e1:SetOperation(c511000192.xyzop) + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + --rank + c:SetStatus(STATUS_NO_LEVEL,true) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + --damage val + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e4:SetValue(1) + c:RegisterEffect(e4) + --control + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000192,0)) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_DAMAGE_STEP_END) + e5:SetTarget(c511000192.atktg) + e5:SetOperation(c511000192.atkop) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EVENT_BE_BATTLE_TARGET) + e6:SetTarget(c511000192.atktg2) + c:RegisterEffect(e6) + --prevent destroy + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(59251766,0)) + e7:SetType(EFFECT_TYPE_QUICK_O) + e7:SetCode(EVENT_FREE_CHAIN) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCost(c511000192.cost) + e7:SetOperation(c511000192.op2) + c:RegisterEffect(e7) + --prevent effect damage + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(20450925,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCountLimit(1) + e8:SetRange(LOCATION_MZONE) + e8:SetCost(c511000192.cost) + e8:SetOperation(c511000192.op3) + c:RegisterEffect(e8) + if not c511000192.xyz_filter then + c511000192.xyz_filter=function(mc) return mc:IsType(TYPE_XYZ) and mc:IsCanBeXyzMaterial(c) end + end + if not c511000192.global_check then + c511000192.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000192.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511000192.xyz_number=0 +c511000192.minxyzct=2 +c511000192.maxxyzct=2 +c511000192.maintain_overlay=true +function c511000192.ovfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511000192.xyzcon(e,c,og) + if c==nil then return true end + local tp=c:GetControler() + return Duel.IsExistingMatchingCard(c511000192.ovfilter,tp,LOCATION_MZONE,0,2,nil) +end +function c511000192.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og) + if chk==0 then return Duel.IsExistingMatchingCard(c511000192.ovfilter,tp,LOCATION_MZONE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g1=Duel.SelectMatchingCard(tp,c511000192.ovfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g2=Duel.SelectMatchingCard(tp,c511000192.ovfilter,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) + og=Group.CreateGroup() + og:Merge(g1) + og:Merge(g2) + if g1:GetCount()>0 then + local mg1=g1:GetFirst():GetOverlayGroup() + if mg1:GetCount()~=0 then + og:Merge(mg1) + Duel.Overlay(g2:GetFirst(),mg1) + end + Duel.Overlay(g2:GetFirst(),g1) + local mg2=g2:GetFirst():GetOverlayGroup() + if mg2:GetCount()~=0 then + og:Merge(mg2) + Duel.Overlay(c,mg2) + end + c:SetMaterial(og) + Duel.Overlay(c,g2:GetFirst()) + end +end +function c511000192.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.GetAttackTarget()~=nil then + Duel.SetTargetCard(Duel.GetAttackTarget()) + end +end +function c511000192.atktg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(Duel.GetAttacker()) +end +function c511000192.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp,PHASE_BATTLE,1) + end +end +function c511000192.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000192.op2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + end +end +function c511000192.op3(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(c511000192.damval) + e1:SetReset(RESET_PHASE+PHASE_END,1) + Duel.RegisterEffect(e1,tp) +end +function c511000192.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end +function c511000192.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,65305468) + Duel.CreateToken(1-tp,65305468) +end diff --git a/script/c511000197.lua b/script/c511000197.lua new file mode 100644 index 00000000..61ec1df9 --- /dev/null +++ b/script/c511000197.lua @@ -0,0 +1,61 @@ +--Drain Strike +function c511000197.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(c511000197.target) + e1:SetOperation(c511000197.operation) + c:RegisterEffect(e1) + --Pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) + --half damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000197.atkcon) + e3:SetOperation(c511000197.atkop) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511000197.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) + e:SetLabelObject(nil) +end +function c511000197.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 c511000197.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=c:GetEquipTarget() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + return ep~=tp and (eq==Duel.GetAttacker() or eq==Duel.GetAttackTarget()) and d:IsDefensePos() and eq:GetEffectCount(EFFECT_PIERCE)==1 +end +function c511000197.atkop(e,tp,eg,ep,ev,re,r,rp) + local dam=ev/2 + Duel.ChangeBattleDamage(ep,dam) + if dam>0 then + Duel.Recover(tp,dam,REASON_EFFECT) + end +end diff --git a/script/c511000198.lua b/script/c511000198.lua new file mode 100644 index 00000000..228e61a2 --- /dev/null +++ b/script/c511000198.lua @@ -0,0 +1,77 @@ +--Enduring Soul +function c511000198.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000198.condition) + e1:SetTarget(c511000198.target) + e1:SetOperation(c511000198.operation) + c:RegisterEffect(e1) +end +function c511000198.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if tc:IsControler(1-tp) then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + e:SetLabelObject(tc) + if not tc or not bc or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) + or not tc:IsPosition(POS_FACEUP_ATTACK) or tc:GetAttack()<800 then return false end + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + end + end + else + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + end +end +function c511000198.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc end + Duel.SetTargetCard(tc) +end +function c511000198.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetOperation(c511000198.atkdn) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2) + end +end +function c511000198.atkdn(e,tp,eg,ep,ev,re,r,rp,chk) + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-800) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c511000200.lua b/script/c511000200.lua new file mode 100644 index 00000000..2662af70 --- /dev/null +++ b/script/c511000200.lua @@ -0,0 +1,37 @@ +--Scrap-Iron Pitfall +function c511000200.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511000200.target) + e1:SetOperation(c511000200.activate) + c:RegisterEffect(e1) +end +function c511000200.filter(c,tp) + return c:GetSummonPlayer()~=tp and c:IsAbleToHand() + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil)0 then + local code=tc:GetCode() + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_SZONE) + e1:SetLabel(code) + e1:SetLabelObject(tc) + e1:SetCondition(c511000208.negcon) + e1:SetCost(c511000208.negcost) + e1:SetTarget(c511000208.negtg) + e1:SetOperation(c511000208.negop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --instant + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(93016201,0)) + e2:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SPSUMMON) + e2:SetLabel(code) + e2:SetLabelObject(tc) + e2:SetCondition(c511000208.negcon2) + e2:SetCost(c511000208.negcost) + e2:SetTarget(c511000208.negtg2) + e2:SetOperation(c511000208.negop2) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SUMMON) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON) + c:RegisterEffect(e4) + tc:CreateEffectRelation(e1) + tc:CreateEffectRelation(e2) + tc:CreateEffectRelation(e3) + tc:CreateEffectRelation(e4) + end +end +function c511000208.negcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:GetHandler():IsCode(e:GetLabel()) + and Duel.IsChainNegatable(ev) +end +function c511000208.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and tc:IsRelateToEffect(e) and tc:IsFacedown() end + Duel.ConfirmCards(1-tp,tc) +end +function c511000208.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000208.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511000208.filter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511000208.negcon2(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep and Duel.GetCurrentChain()==0 and eg:IsExists(c511000208.filter,1,nil,e:GetLabel()) +end +function c511000208.negtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=eg:Filter(c511000208.filter,nil,e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000208.negop2(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511000208.filter,nil,e:GetLabel()) + Duel.NegateSummon(g) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511000209.lua b/script/c511000209.lua new file mode 100644 index 00000000..213f1d81 --- /dev/null +++ b/script/c511000209.lua @@ -0,0 +1,51 @@ +--Hyper-Rank-Up-Magic Ultimate Force +function c511000209.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000209.target) + e1:SetOperation(c511000209.activate) + c:RegisterEffect(e1) +end +function c511000209.filter1(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x7f) + and Duel.IsExistingMatchingCard(c511000209.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetCode()) +end +function c511000209.filter2(c,e,tp,mc,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return c:GetRank()==10 and c:IsSetCard(0x48) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511000209.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511000209.filter1(chkc,e,tp) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511000209.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000209.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000209.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000209.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(sc,Group.FromCards(c)) + end + end +end diff --git a/script/c511000210.lua b/script/c511000210.lua new file mode 100644 index 00000000..f537adf6 --- /dev/null +++ b/script/c511000210.lua @@ -0,0 +1,54 @@ +--Obligatory Summon +function c511000210.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000210.target) + e1:SetOperation(c511000210.activate) + c:RegisterEffect(e1) +end +function c511000210.cfilter(c,e,tp) + local att=c:GetAttribute() + return Duel.IsExistingMatchingCard(c511000210.spfilter,tp,0,LOCATION_DECK,1,nil,att,e,tp) +end +function c511000210.spfilter(c,att,e,tp) + return c:IsAttribute(att) and c:IsCanBeSpecialSummoned(e,0,1-tp,false,false,POS_FACEUP) +end +function c511000210.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511000210.cfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000210.cfilter,tp,0,LOCATION_MZONE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000210.cfilter,tp,0,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000210.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetFirstTarget() + if not tg or not tg:IsRelateToEffect(e) then return end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local sg=Duel.GetMatchingGroup(c511000210.spfilter,tp,0,LOCATION_DECK,nil,tg:GetAttribute(),e,tp) + if sg:GetCount()<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=sg:Select(1-tp,ft,ft,nil) + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,1-tp,1-tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511000211.lua b/script/c511000211.lua new file mode 100644 index 00000000..a2508faa --- /dev/null +++ b/script/c511000211.lua @@ -0,0 +1,61 @@ +--Reverse of Reverse +function c511000211.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_DRAW_PHASE) + e1:SetCondition(c511000211.condition) + e1:SetTarget(c511000211.target) + e1:SetOperation(c511000211.activate) + c:RegisterEffect(e1) +end +function c511000211.condition(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,0xc,0) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 and ct==1 +end +function c511000211.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511000211.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511000211.filter,tp,0,LOCATION_ONFIELD+LOCATION_HAND,1,c) end + local sg=Duel.GetMatchingGroup(c511000211.filter,tp,0,LOCATION_ONFIELD+LOCATION_HAND,c) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,sg,sg:GetCount(),0,0) +end +function c511000211.activate(e,tp,eg,ep,ev,re,r,rp) + local gh=Duel.GetMatchingGroup(nil,tp,0,LOCATION_HAND,nil) + if gh:GetCount()>0 then + Duel.ConfirmCards(tp,gh) + end + local gf=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_SZONE,nil) + if gf:GetCount()>0 then + Duel.ConfirmCards(tp,gf) + end + local sg=Duel.GetMatchingGroup(c511000211.filter,tp,0,LOCATION_ONFIELD+LOCATION_HAND,c) + if sg==0 then return end + local g=Duel.SelectMatchingCard(tp,c511000211.filter,tp,0,LOCATION_ONFIELD+LOCATION_HAND,1,sg:GetCount(),nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,tp,REASON_EFFECT) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + --Trap activate in set turn + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetTargetRange(LOCATION_SZONE,0) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + if gh:GetCount()>0 then + Duel.ShuffleHand(1-tp) + end + end +end diff --git a/script/c511000212.lua b/script/c511000212.lua new file mode 100644 index 00000000..6be52bc5 --- /dev/null +++ b/script/c511000212.lua @@ -0,0 +1,53 @@ +--Zoma the Spirit (Anime) +function c511000212.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511000212.target) + e1:SetOperation(c511000212.activate) + c:RegisterEffect(e1) +end +function c511000212.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000212,0,0x21,1800,500,4,RACE_ZOMBIE,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000212.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511000212,0,0x21,1800,500,4,RACE_ZOMBIE,ATTRIBUTE_DARK) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000212,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511000212.damcon) + e1:SetTarget(c511000212.damtg) + e1:SetOperation(c511000212.damop) + e1:SetReset(RESET_EVENT+0x17e0000) + c:RegisterEffect(e1) +end +function c511000212.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_BATTLE) +end +function c511000212.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local bc=e:GetHandler():GetBattleTarget() + local dam=bc:GetAttack()*2 + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000212.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000213.lua b/script/c511000213.lua new file mode 100644 index 00000000..7293fe80 --- /dev/null +++ b/script/c511000213.lua @@ -0,0 +1,50 @@ +--Flaming Fist +function c511000213.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(c511000213.target) + e1:SetOperation(c511000213.operation) + c:RegisterEffect(e1) +end +function c511000213.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPIRIT) +end +function c511000213.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000213.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000213.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000213.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000213.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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+PHASE_END) + e1:SetValue(200) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetTarget(c511000213.gaintg) + e2:SetOperation(c511000213.gainop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c511000213.gaintg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) +end +function c511000213.gainop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c511000214.lua b/script/c511000214.lua new file mode 100644 index 00000000..fac62cfb --- /dev/null +++ b/script/c511000214.lua @@ -0,0 +1,44 @@ +--Nightmare's Chains +function c511000214.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000214.activate) + c:RegisterEffect(e1) +end +function c511000214.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(0,LOCATION_SZONE) + e1:SetTarget(c511000214.distarget) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + --disable effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetOperation(c511000214.disoperation) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + --disable trap monster + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c511000214.distarget) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c511000214.distarget(e,c) + return c~=e:GetHandler() and c:IsType(TYPE_TRAP) +end +function c511000214.disoperation(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if tl==LOCATION_SZONE and re:IsActiveType(TYPE_TRAP) and re:GetHandler():IsControler(1-tp) then + Duel.NegateEffect(ev) + end +end diff --git a/script/c511000215.lua b/script/c511000215.lua new file mode 100644 index 00000000..b4881f7d --- /dev/null +++ b/script/c511000215.lua @@ -0,0 +1,42 @@ +--Revenge Sacrifice +function c511000215.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000215.condition) + e1:SetTarget(c511000215.target) + e1:SetOperation(c511000215.activate) + c:RegisterEffect(e1) +end +function c511000215.filter(c,tp) + return c:GetPreviousControler()==tp and c==Duel.GetAttackTarget() +end +function c511000215.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000215.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000215.filter,1,nil,tp) +end +function c511000215.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local at=Duel.GetAttacker() + if chkc then return chkc==at end + if chk==0 then return at:IsControler(1-tp) and at:IsRelateToBattle() and at:IsCanBeEffectTarget(e) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c511000215.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetTargetCard(at) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000215.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetFirstTarget() + if a:IsRelateToEffect(e) then + if Duel.Release(a,REASON_COST)>0 then + local g=Duel.SelectMatchingCard(tp,c511000215.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + end + end +end diff --git a/script/c511000217.lua b/script/c511000217.lua new file mode 100644 index 00000000..f9cb1e1a --- /dev/null +++ b/script/c511000217.lua @@ -0,0 +1,59 @@ +--Altar of Mist +function c511000217.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000217.target) + e1:SetOperation(c511000217.activate) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511000217.filter(c) + return c:IsType(TYPE_RITUAL) and c:IsAbleToHand() +end +function c511000217.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000217.filter,tp,LOCATION_DECK,0,1,nil) end +end +function c511000217.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + c:CancelToGrave() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,3) + e1:SetOperation(c511000217.tohand) + e1:SetLabel(0) + c:RegisterEffect(e1) + end +end +function c511000217.tohand(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + local ct=e:GetLabel() + e:GetHandler():SetTurnCounter(ct+1) + if ct==2 then + if Duel.SendtoGrave(e:GetHandler(),REASON_RULE)>0 then + if Duel.IsExistingMatchingCard(c511000217.filter,tp,LOCATION_DECK,0,1,nil) then + local g=Duel.SelectMatchingCard(tp,c511000217.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + else + local dg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,dg) + Duel.ShuffleDeck(tp) + end + end + end + else e:SetLabel(ct+1) end +end diff --git a/script/c511000218.lua b/script/c511000218.lua new file mode 100644 index 00000000..988981fa --- /dev/null +++ b/script/c511000218.lua @@ -0,0 +1,48 @@ +--Dragged Down into the Grave (anime) +function c511000218.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000218.condition) + e1:SetTarget(c511000218.target) + e1:SetOperation(c511000218.activate) + c:RegisterEffect(e1) +end +function c511000218.condition(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsLocation(LOCATION_HAND) then + return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>1 and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>2 + else + return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>1 and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>1 + end +end +function c511000218.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,PLAYER_ALL,2) +end +function c511000218.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)<=1 or Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)<=1 then return end + local g1=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + local g2=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local gc1=g1:GetCount() + local gc2=g2:GetCount() + Duel.ConfirmCards(tp,g1) + Duel.ConfirmCards(1-tp,g2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local sg1=g1:Select(tp,2,2,nil) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_DISCARD) + local sg2=g2:Select(1-tp,2,2,nil) + sg1:Merge(sg2) + Duel.SendtoGrave(sg1,REASON_EFFECT+REASON_DISCARD) + Duel.BreakEffect() + g1=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + g2=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoDeck(g1,nil,2,REASON_EFFECT) + Duel.SendtoDeck(g2,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(tp) + Duel.ShuffleDeck(1-tp) + Duel.BreakEffect() + Duel.Draw(tp,gc2,REASON_EFFECT) + Duel.Draw(1-tp,gc1,REASON_EFFECT) +end diff --git a/script/c511000219.lua b/script/c511000219.lua new file mode 100644 index 00000000..c8d56892 --- /dev/null +++ b/script/c511000219.lua @@ -0,0 +1,53 @@ +--Matter Leveller +function c511000219.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(c511000219.target) + e1:SetOperation(c511000219.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(c511000219.eqlimit) + c:RegisterEffect(e2) + --Attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_SET_ATTACK) + e3:SetCondition(c511000219.condtion) + e3:SetValue(c511000219.atkval) + c:RegisterEffect(e3) +end +function c511000219.eqlimit(e,c) + return c:IsCode(10992251) +end +function c511000219.filter(c) + return c:IsFaceup() and c:IsCode(10992251) +end +function c511000219.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000219.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000219.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000219.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000219.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 c511000219.condtion(e) + local eq=e:GetHandler():GetEquipTarget() + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttacker()==eq and Duel.GetAttackTarget()~=nil + and Duel.GetAttackTarget():IsDefensePos() +end +function c511000219.atkval(e,c) + return Duel.GetAttackTarget():GetDefense()+100 +end \ No newline at end of file diff --git a/script/c511000220.lua b/script/c511000220.lua new file mode 100644 index 00000000..310236c9 --- /dev/null +++ b/script/c511000220.lua @@ -0,0 +1,39 @@ +--Chaos Barrier Field +function c511000220.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000220.condition) + e1:SetTarget(c511000220.target) + e1:SetOperation(c511000220.activate) + c:RegisterEffect(e1) +end +function c511000220.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.IsExistingMatchingCard(Card.IsPosition,tp,0,LOCATION_MZONE,2,nil,POS_FACEUP_ATTACK) +end +function c511000220.filter(c) + return c:IsAttackPos() +end +function c511000220.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000220.filter,tp,0,LOCATION_MZONE,2,nil) end +end +function c511000220.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + local g2=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + local ga=g1:GetMaxGroup(Card.GetAttack) + local gd=g2:GetMinGroup(Card.GetAttack) + if ga:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000220,0)) + ga=ga:Select(tp,1,1,nil) + end + if gd:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000220,1)) + gd=gd:Select(tp,1,1,nil) + end + Duel.NegateAttack() + Duel.CalculateDamage(ga:GetFirst(),gd:GetFirst()) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511000221.lua b/script/c511000221.lua new file mode 100644 index 00000000..8d460290 --- /dev/null +++ b/script/c511000221.lua @@ -0,0 +1,64 @@ +--Vessel of Illusion +function c511000221.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000221.condition) + e1:SetTarget(c511000221.target) + e1:SetOperation(c511000221.operation) + c:RegisterEffect(e1) +end +function c511000221.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:GetPreviousLocation()==LOCATION_MZONE + and bit.band(c:GetPreviousPosition(),POS_FACEUP)~=0 and c:IsType(TYPE_SPIRIT) and c:IsLocation(LOCATION_GRAVE) +end +function c511000221.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000221.cfilter,nil,tp) + local tc=g:GetFirst() + return g:GetCount()==1 +end +function c511000221.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511000221.cfilter,nil,tp) + local ec=g:GetFirst() + if chk==0 then return eg:IsExists(c511000221.cfilter,1,nil,tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000222,0,0x4011,ec:GetBaseAttack(),ec:GetBaseDefense(), + ec:GetOriginalLevel(),ec:GetOriginalRace(),ec:GetOriginalAttribute()) end + ec:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000221.operation(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000221.cfilter,nil,tp) + local ec=g:GetFirst() + if not ec or not ec:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511000222,0,0x4011,ec:GetBaseAttack(),ec:GetBaseDefense(), + ec:GetOriginalLevel(),ec:GetOriginalRace(),ec:GetOriginalAttribute()) then return end + local token=Duel.CreateToken(tp,511000222) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(ec:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(ec:GetBaseDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(ec:GetOriginalLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(ec:GetOriginalRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(ec:GetOriginalAttribute()) + token:RegisterEffect(e5) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511000223.lua b/script/c511000223.lua new file mode 100644 index 00000000..d9cb431d --- /dev/null +++ b/script/c511000223.lua @@ -0,0 +1,49 @@ +--Next World +function c511000223.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000223.target) + e1:SetOperation(c511000223.operation) + c:RegisterEffect(e1) +end +function c511000223.filter1(c,tp) + local lv=c:GetLevel() + return lv>0 and c:IsFaceup() and Duel.IsExistingMatchingCard(c511000223.filter2,tp,LOCATION_HAND,0,1,nil,lv) +end +function c511000223.filter2(c,lv) + return c:GetLevel()==lv and c:IsSummonableCard() +end +function c511000223.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511000223.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000223.filter1,tp,0,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000223.filter1,tp,0,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000223.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local sc=Duel.SelectMatchingCard(tp,c511000223.filter2,tp,LOCATION_HAND,0,1,1,nil,tc:GetLevel()):GetFirst() + if sc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(511000223,0)) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511000223.ntcon) + e1:SetReset(RESET_CHAIN) + sc:RegisterEffect(e1) + Duel.Summon(tp,sc,true,nil) + end +end +function c511000223.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511000225.lua b/script/c511000225.lua new file mode 100644 index 00000000..d3e121ac --- /dev/null +++ b/script/c511000225.lua @@ -0,0 +1,42 @@ +--Rank-Down-Magic Hope Fall +function c511000225.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511000225.target) + e1:SetOperation(c511000225.activate) + c:RegisterEffect(e1) +end +function c511000225.filter(c,e,tp) + local rk=c:GetRank() + return rk>0 and c:IsLocation(LOCATION_GRAVE) and c:IsType(TYPE_XYZ) and c:GetPreviousControler()==tp and c:IsSetCard(0x48) + and Duel.IsExistingMatchingCard(c511000225.sfilter,tp,LOCATION_EXTRA,0,1,nil,rk,e,tp) + and c:IsCanBeEffectTarget(e) +end +function c511000225.sfilter(c,rk,e,tp) + if c.rum_limit_code then return false end + return c:GetRank()0 and eg:IsExists(c511000225.filter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=eg:FilterSelect(tp,c511000225.filter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000225.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=Duel.SelectMatchingCard(tp,c511000225.sfilter,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank(),e,tp):GetFirst() + if sc then + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end + end +end diff --git a/script/c511000226.lua b/script/c511000226.lua new file mode 100644 index 00000000..b691b1cd --- /dev/null +++ b/script/c511000226.lua @@ -0,0 +1,56 @@ +--Monster Chain +function c511000226.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000226.target) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c511000226.descon) + c:RegisterEffect(e2) + --cannot attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e3) + --remove counter + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000226,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCondition(c511000226.remcon) + e4:SetOperation(c511000226.remop) + c:RegisterEffect(e4) +end +function c511000226.filter(c) + return c:IsType(TYPE_MONSTER) +end +function c511000226.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000226.filter,tp,LOCATION_MZONE,0,1,nil) end + local c=e:GetHandler() + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + c:AddCounter(0x1098,ct) +end +function c511000226.descon(e) + return e:GetHandler():GetCounter(0x1098)==0 +end +function c511000226.remcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and e:GetHandler():GetCounter(0x1098)~=0 +end +function c511000226.remop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + c:RemoveCounter(tp,0x1098,1,REASON_EFFECT) + end +end diff --git a/script/c511000227.lua b/script/c511000227.lua new file mode 100644 index 00000000..d6ce4fde --- /dev/null +++ b/script/c511000227.lua @@ -0,0 +1,44 @@ +--Cicada Final +function c511000227.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511000227.condition) + e1:SetOperation(c511000227.operation) + c:RegisterEffect(e1) +end +function c511000227.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and ev>0 +end +function c511000227.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000227,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_SZONE) + e1:SetLabel(ev) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCondition(c511000227.damcon) + e1:SetOperation(c511000227.damop) + if tp==Duel.GetTurnPlayer() then + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + end + c:RegisterEffect(e1) +end +function c511000227.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511000227.damop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + if Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT)>0 then + Duel.Damage(1-tp,e:GetLabel(),REASON_EFFECT) + end + end +end diff --git a/script/c511000228.lua b/script/c511000228.lua new file mode 100644 index 00000000..245147e6 --- /dev/null +++ b/script/c511000228.lua @@ -0,0 +1,30 @@ +--カタパルト·タートル (GX) +function c511000228.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000228,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000228.cost) + e1:SetTarget(c511000228.target) + e1:SetOperation(c511000228.operation) + c:RegisterEffect(e1) +end +function c511000228.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + e:SetLabel(sg:GetFirst():GetAttack()/2) + Duel.Release(sg,REASON_COST) +end +function c511000228.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c511000228.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000229.lua b/script/c511000229.lua new file mode 100644 index 00000000..689037a1 --- /dev/null +++ b/script/c511000229.lua @@ -0,0 +1,36 @@ +--ダーク·ダイブ·ボンバー (5D's) +function c511000229.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000229,0)) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000229.cost) + e1:SetTarget(c511000229.target) + e1:SetOperation(c511000229.operation) + c:RegisterEffect(e1) +end +function c511000229.costfilter(c) + return c:GetLevel()>0 +end +function c511000229.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511000229.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511000229.costfilter,1,1,nil) + e:SetLabel(g:GetFirst():GetLevel()*200) + Duel.Release(g,REASON_COST) +end +function c511000229.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) + e:SetLabel(0) +end +function c511000229.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000230.lua b/script/c511000230.lua new file mode 100644 index 00000000..a5b34bc2 --- /dev/null +++ b/script/c511000230.lua @@ -0,0 +1,52 @@ +--Number 1: Numeron Gate Ekam +function c511000230.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,1,3) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511000230.con) + e1:SetCost(c511000230.cost) + e1:SetTarget(c511000230.tg) + e1:SetOperation(c511000230.op) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511000230.indes) + c:RegisterEffect(e2) +end +c511000230.xyz_number=1 +function c511000230.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()~=nil +end +function c511000230.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000230.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1ff) +end +function c511000230.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000230.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000230.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000230.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511000230.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000231.lua b/script/c511000231.lua new file mode 100644 index 00000000..3cd43a30 --- /dev/null +++ b/script/c511000231.lua @@ -0,0 +1,52 @@ +--Number 2: Numeron Gate Dve +function c511000231.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,1,3) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511000231.con) + e1:SetCost(c511000231.cost) + e1:SetTarget(c511000231.tg) + e1:SetOperation(c511000231.op) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511000231.indes) + c:RegisterEffect(e2) +end +c511000231.xyz_number=2 +function c511000231.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()~=nil +end +function c511000231.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000231.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1ff) +end +function c511000231.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000231.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000231.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000231.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511000231.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000232.lua b/script/c511000232.lua new file mode 100644 index 00000000..7dadbc56 --- /dev/null +++ b/script/c511000232.lua @@ -0,0 +1,52 @@ +--Number 3: Numeron Gate Trini +function c511000232.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,1,3) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511000232.con) + e1:SetCost(c511000232.cost) + e1:SetTarget(c511000232.tg) + e1:SetOperation(c511000232.op) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511000232.indes) + c:RegisterEffect(e2) +end +c511000232.xyz_number=3 +function c511000232.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()~=nil +end +function c511000232.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000232.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1ff) +end +function c511000232.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000232.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000232.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000232.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511000232.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000233.lua b/script/c511000233.lua new file mode 100644 index 00000000..d3e724be --- /dev/null +++ b/script/c511000233.lua @@ -0,0 +1,52 @@ +--Number 4: Numeron Gate Catvari +function c511000233.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,1,3) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511000233.con) + e1:SetCost(c511000233.cost) + e1:SetTarget(c511000233.tg) + e1:SetOperation(c511000233.op) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511000233.indes) + c:RegisterEffect(e2) +end +c511000233.xyz_number=4 +function c511000233.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()~=nil +end +function c511000233.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000233.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1ff) +end +function c511000233.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000233.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000233.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000233.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511000233.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000234.lua b/script/c511000234.lua new file mode 100644 index 00000000..d30654b2 --- /dev/null +++ b/script/c511000234.lua @@ -0,0 +1,161 @@ +--Uria, Emperor of Divine Flames +function c511000234.initial_effect(c) + c:EnableReviveLimit() + c:SetUniqueOnField(1,1,511000234) + --Cannot Special Summon except by its own Effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511000234.spcon) + e2:SetOperation(c511000234.spop) + c:RegisterEffect(e2) + --ATK/DEF + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c511000234.atkdefval) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) + --Trap Destruction + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000234,0)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetTarget(c511000234.trapdestg) + e5:SetOperation(c511000234.trapdesop) + c:RegisterEffect(e5) + --Rise + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_TO_GRAVE) + e6:SetOperation(c511000234.spr) + c:RegisterEffect(e6) +end +function c511000234.spfilter(c) + return c:IsType(TYPE_TRAP) and c:IsAbleToGraveAsCost() +end +function c511000234.spcon(e,c) + if c==nil then return true end + if Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)==0 then + return Duel.IsExistingMatchingCard(c511000234.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511000234.spfilter,c:GetControler(),LOCATION_ONFIELD,0,3,nil) + else + return Duel.IsExistingMatchingCard(c511000234.spfilter,c:GetControler(),LOCATION_ONFIELD,0,3,nil) + end +end +function c511000234.spop(e,tp,eg,ep,ev,re,r,rp,c) + if Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511000234.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511000234.spfilter,tp,LOCATION_ONFIELD,0,2,2,g1:GetFirst()) + g2:AddCard(g1:GetFirst()) + Duel.SendtoGrave(g2,REASON_COST) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000234.spfilter,tp,LOCATION_ONFIELD,0,3,3,nil) + Duel.SendtoGrave(g,REASON_COST) + end +end +function c511000234.atkdefval(e,c) + return Duel.GetMatchingGroupCount(Card.IsType,c:GetControler(),LOCATION_GRAVE,0,nil,TYPE_TRAP)*1000 +end +function c511000234.trapdesfilter(c) + return c:IsFacedown() and c:IsDestructable() +end +function c511000234.trapdestg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c511000234.trapdesfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000234.trapdesfilter,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000234.trapdesfilter,tp,0,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetChainLimit(c511000234.chainlimit) +end +function c511000234.chainlimit(e,rp,tp) + return not e:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511000234.trapdesop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFacedown() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511000234.spr(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ph=Duel.GetCurrentPhase() + if not c:IsReason(REASON_BATTLE+REASON_EFFECT) then return end + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000234,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + if Duel.GetTurnPlayer()==tp and ph==PHASE_MAIN1 then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c511000234.risecon2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_MAIN1+RESET_SELF_TURN,2) + else + e1:SetCondition(c511000234.risecon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_MAIN1+RESET_SELF_TURN,1) + end + e1:SetCost(c511000234.risecost) + e1:SetTarget(c511000234.risetarget) + e1:SetOperation(c511000234.riseop) + c:RegisterEffect(e1) +end +function c511000234.trapfilter(c) + return c:IsType(TYPE_TRAP) and c:IsDiscardable() +end +function c511000234.risecon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) +end +function c511000234.risecon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and Duel.GetTurnCount()~=e:GetLabel() +end +function c511000234.risecost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000234.trapfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c511000234.trapfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511000234.risetarget(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,1,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000234.atcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>1 +end +function c511000234.riseop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,1,tp,tp,true,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetCondition(c511000234.atcon) + c:RegisterEffect(e2) + end +end diff --git a/script/c511000235.lua b/script/c511000235.lua new file mode 100644 index 00000000..49af0c1c --- /dev/null +++ b/script/c511000235.lua @@ -0,0 +1,275 @@ +--Obelisk the Tormentor +--マイケル・ローレンス・ディーによってスクリプト +function c511000235.initial_effect(c) + --Summon with 3 Tribute + c:SetUniqueOnField(1,0,511000235) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c511000235.sumoncon) + e1:SetOperation(c511000235.sumonop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c511000235.setcon) + c:RegisterEffect(e2) + --Summon Cannot be Negated + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e3) + --summon success + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c511000235.sumsuc) + c:RegisterEffect(e4) + --control + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_CANNOT_CHANGE_CONTROL) + c:RegisterEffect(e5) + --release limit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_UNRELEASABLE_SUM) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetValue(c511000235.recon) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCondition(c511000235.recon2) + e7:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e7) + --cannot be target + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e8:SetRange(LOCATION_MZONE) + e8:SetValue(c511000235.tgfilter) + c:RegisterEffect(e8) + --immune spell + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_SINGLE) + e11:SetCode(EFFECT_IMMUNE_EFFECT) + e11:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e11:SetRange(LOCATION_MZONE) + e11:SetValue(c511000235.efilter) + c:RegisterEffect(e11) + --ATK/DEF effects are only applied until the End Phase + local e13=Effect.CreateEffect(c) + e13:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e13:SetProperty(EFFECT_FLAG_REPEAT) + e13:SetRange(LOCATION_MZONE) + e13:SetCode(EVENT_PHASE+PHASE_END) + e13:SetCountLimit(1) + e13:SetOperation(c511000235.atkdefresetop) + c:RegisterEffect(e13) + --Race "Warrior" + local e14=Effect.CreateEffect(c) + e14:SetType(EFFECT_TYPE_SINGLE) + e14:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e14:SetRange(LOCATION_MZONE) + e14:SetCode(EFFECT_ADD_RACE) + e14:SetValue(RACE_WARRIOR) + c:RegisterEffect(e14) + --If Special Summoned: Send to Grave + local e16=Effect.CreateEffect(c) + e16:SetDescription(aux.Stringid(511000235,1)) + e16:SetCategory(CATEGORY_TOGRAVE+CATEGORY_REMOVE+CATEGORY_TOHAND+CATEGORY_TODECK) + e16:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e16:SetRange(LOCATION_MZONE) + e16:SetProperty(EFFECT_FLAG_REPEAT+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e16:SetCountLimit(1) + e16:SetCode(EVENT_PHASE+PHASE_END) + e16:SetCondition(c511000235.stgcon) + e16:SetTarget(c511000235.stgtg) + e16:SetOperation(c511000235.stgop) + c:RegisterEffect(e16) + --FINISH IT + local e17=Effect.CreateEffect(c) + e17:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e17:SetDescription(aux.Stringid(511000235,2)) + e17:SetCategory(CATEGORY_DESTROY) + e17:SetType(EFFECT_TYPE_QUICK_O) + e17:SetCode(EVENT_FREE_CHAIN) + e17:SetRange(LOCATION_MZONE) + e17:SetCost(c511000235.atkcost) + e17:SetCondition(c511000235.atkcon) + e17:SetTarget(c511000235.atktg) + e17:SetOperation(c511000235.atkop) + c:RegisterEffect(e17) + --indestructable + local e18=Effect.CreateEffect(c) + e18:SetType(EFFECT_TYPE_SINGLE) + e18:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e18:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e18:SetRange(LOCATION_MZONE) + e18:SetValue(c511000235.indes) + c:RegisterEffect(e18) + --redirect attack + local red=Effect.CreateEffect(c) + red:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + red:SetCode(EVENT_SPSUMMON_SUCCESS) + red:SetOperation(c511000235.redatk) + c:RegisterEffect(red) +end +function c511000235.indes(e,re,rp) + return not re:GetOwner():IsCode(10000010) +end +function c511000235.recon(e,c) + return c:GetControler()~=e:GetHandler():GetControler() +end +function c511000235.recon2(e) + return Duel.GetTurnPlayer()~=e:GetOwnerPlayer() +end +function c511000235.sumoncon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c511000235.sumonop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c511000235.setcon(e,c) + if not c then return true end + return false +end +function c511000235.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(c511000235.chainlm) +end +function c511000235.chainlm(e,rp,tp) + return e:GetHandler():IsAttribute(ATTRIBUTE_DEVINE) +end +function c511000235.efilter(e,te) + return te:GetOwner()~=e:GetOwner() and te:IsActiveType(TYPE_EFFECT) and not te:GetOwner():IsAttribute(ATTRIBUTE_DEVINE) +end +function c511000235.tgfilter(e,re) + if not re or not re:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return false end + return re:IsHasCategory(CATEGORY_TOHAND+CATEGORY_DESTROY+CATEGORY_REMOVE+CATEGORY_TODECK+CATEGORY_RELEASE+CATEGORY_TOGRAVE) +end +function c511000235.stgcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511000235.stgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + if c:IsPreviousLocation(LOCATION_GRAVE) then + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,c,1,0,0) + elseif c:IsPreviousLocation(LOCATION_DECK) then + Duel.SetOperationInfo(0,CATEGORY_TODECK,c,1,0,0) + elseif c:IsPreviousLocation(LOCATION_HAND) then + Duel.SetOperationInfo(0,CATEGORY_TOHAND,c,1,0,0) + elseif c:IsPreviousLocation(LOCATION_REMOVED) then + Duel.SetOperationInfo(0,CATEGORY_REMOVE,c,1,0,0) + end +end +function c511000235.stgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + if c:IsPreviousLocation(LOCATION_GRAVE) then + Duel.SendtoGrave(c,REASON_EFFECT) + elseif c:IsPreviousLocation(LOCATION_DECK) then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + elseif c:IsPreviousLocation(LOCATION_HAND) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + elseif c:IsPreviousLocation(LOCATION_REMOVED) then + Duel.Remove(c,POS_FACEUP,REASON_EFFECT) + end + end +end +function c511000235.tgg(c,card) + return c:GetCardTarget() and c:GetCardTarget():IsContains(card) +end +function c511000235.atkdefresetop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(c:GetBaseDefense()) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local eqg=c:GetEquipGroup() + local tgg=Duel.GetMatchingGroup(c511000235.tgg,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,c) + eqg:Merge(tgg) + if eqg:GetCount()>0 then + Duel.Destroy(eqg,REASON_EFFECT) + end +end +function c511000235.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,2,e:GetHandler()) end + local g=Duel.SelectReleaseGroup(tp,nil,2,2,e:GetHandler()) + Duel.Release(g,REASON_COST) +end +function c511000235.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE and e:GetHandler():IsAttackable() +end +function c511000235.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511000235.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE+PHASE_END) + e1:SetValue(99999999) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c511000235.damcon) + e2:SetOperation(c511000235.damop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE+PHASE_END) + c:RegisterEffect(e2) + if Duel.GetTurnPlayer()==tp then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_FIRST_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE+PHASE_END) + c:RegisterEffect(e2) + else + local tg=Duel.SelectMatchingCard(tp,nil,tp,0,LOCATION_MZONE,1,1,nil):GetFirst() + Duel.CalculateDamage(c,tg) + end + end +end +function c511000235.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511000235.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,Duel.GetLP(ep)*100) +end +function c511000235.redatk(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and a and a:IsControler(1-tp) and Duel.GetAttackTarget() then + Duel.ChangeAttackTarget(e:GetHandler()) + end +end +--MLD diff --git a/script/c511000238.lua b/script/c511000238.lua new file mode 100644 index 00000000..2d23ca92 --- /dev/null +++ b/script/c511000238.lua @@ -0,0 +1,276 @@ +--Slifer the Sky Dragon +--マイケル・ローレンス・ディーによってスクリプト +function c511000238.initial_effect(c) + c:SetUniqueOnField(1,0,511000238) + --Summon with 3 Tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c511000238.sumoncon) + e1:SetOperation(c511000238.sumonop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c511000238.setcon) + c:RegisterEffect(e2) + --Summon Cannot be Negated + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e3) + --summon success + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c511000238.sumsuc) + c:RegisterEffect(e4) + --control + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_CANNOT_CHANGE_CONTROL) + c:RegisterEffect(e5) + --release limit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_UNRELEASABLE_SUM) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetValue(c511000238.recon) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCondition(c511000238.recon2) + e7:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e7) + --immune spell + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_SINGLE) + e11:SetCode(EFFECT_IMMUNE_EFFECT) + e11:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e11:SetRange(LOCATION_MZONE) + e11:SetValue(c511000238.efilter) + c:RegisterEffect(e11) + --cannot be target + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e8:SetRange(LOCATION_MZONE) + e8:SetValue(c511000238.tgfilter) + c:RegisterEffect(e8) + --ATK/DEF effects are only applied until the End Phase + local e13=Effect.CreateEffect(c) + e13:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e13:SetProperty(EFFECT_FLAG_REPEAT) + e13:SetRange(LOCATION_MZONE) + e13:SetCode(EVENT_PHASE+PHASE_END) + e13:SetCountLimit(1) + e13:SetOperation(c511000238.atkdefresetop) + c:RegisterEffect(e13) + --Race "Dragon" + local e14=Effect.CreateEffect(c) + e14:SetType(EFFECT_TYPE_SINGLE) + e14:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e14:SetRange(LOCATION_MZONE) + e14:SetCode(EFFECT_ADD_RACE) + e14:SetValue(RACE_DRAGON) + c:RegisterEffect(e14) + --If Special Summoned: Send to Grave + local e16=Effect.CreateEffect(c) + e16:SetDescription(aux.Stringid(511000238,1)) + e16:SetCategory(CATEGORY_TOGRAVE+CATEGORY_REMOVE+CATEGORY_TOHAND+CATEGORY_TODECK) + e16:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e16:SetRange(LOCATION_MZONE) + e16:SetProperty(EFFECT_FLAG_REPEAT+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e16:SetCountLimit(1) + e16:SetCode(EVENT_PHASE+PHASE_END) + e16:SetCondition(c511000238.stgcon) + e16:SetTarget(c511000238.stgtg) + e16:SetOperation(c511000238.stgop) + c:RegisterEffect(e16) + --indestructable + local e17=Effect.CreateEffect(c) + e17:SetType(EFFECT_TYPE_SINGLE) + e17:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e17:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e17:SetRange(LOCATION_MZONE) + e17:SetValue(c511000238.indes) + c:RegisterEffect(e17) + --atk/def + local e18=Effect.CreateEffect(c) + e18:SetType(EFFECT_TYPE_SINGLE) + e18:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) + e18:SetRange(LOCATION_MZONE) + e18:SetCode(EFFECT_UPDATE_ATTACK) + e18:SetValue(c511000238.adval) + c:RegisterEffect(e18) + local e19=e18:Clone() + e19:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e19) + --atkdown + local e20=Effect.CreateEffect(c) + e20:SetDescription(aux.Stringid(511000238,2)) + e20:SetCategory(CATEGORY_ATKCHANGE) + e20:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e20:SetRange(LOCATION_MZONE) + e20:SetCode(EVENT_SUMMON_SUCCESS) + e20:SetCondition(c511000238.atkcon) + e20:SetTarget(c511000238.atktg) + e20:SetOperation(c511000238.atkop) + c:RegisterEffect(e20) + local e21=e20:Clone() + e21:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e21) + local e22=e20:Clone() + e22:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e22) + --redirect attack + local red=Effect.CreateEffect(c) + red:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + red:SetCode(EVENT_SPSUMMON_SUCCESS) + red:SetOperation(c511000238.redatk) + c:RegisterEffect(red) +end +function c511000238.adval(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)*1000 +end +function c511000238.indes(e,re,rp) + return not re:GetOwner():IsCode(10000010) +end +function c511000238.recon(e,c) + return c:GetControler()~=e:GetHandler():GetControler() +end +function c511000238.recon2(e) + return Duel.GetTurnPlayer()~=e:GetOwnerPlayer() +end +function c511000238.sumoncon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c511000238.sumonop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c511000238.setcon(e,c) + if not c then return true end + return false +end +function c511000238.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(c511000238.chainlm) +end +function c511000238.chainlm(e,rp,tp) + return e:GetHandler():IsAttribute(ATTRIBUTE_DEVINE) +end +function c511000238.efilter(e,te) + return te:IsActiveType(TYPE_EFFECT) and not te:GetHandler():IsAttribute(ATTRIBUTE_DEVINE) +end +function c511000238.tgfilter(e,re) + if not re or not re:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return false end + return re:IsHasCategory(CATEGORY_TOHAND+CATEGORY_DESTROY+CATEGORY_REMOVE+CATEGORY_TODECK+CATEGORY_RELEASE+CATEGORY_TOGRAVE) +end +function c511000238.stgcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511000238.stgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + if c:IsPreviousLocation(LOCATION_GRAVE) then + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,c,1,0,0) + elseif c:IsPreviousLocation(LOCATION_DECK) then + Duel.SetOperationInfo(0,CATEGORY_TODECK,c,1,0,0) + elseif c:IsPreviousLocation(LOCATION_HAND) then + Duel.SetOperationInfo(0,CATEGORY_TOHAND,c,1,0,0) + elseif c:IsPreviousLocation(LOCATION_REMOVED) then + Duel.SetOperationInfo(0,CATEGORY_REMOVE,c,1,0,0) + end +end +function c511000238.stgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + if c:IsPreviousLocation(LOCATION_GRAVE) then + Duel.SendtoGrave(c,REASON_EFFECT) + elseif c:IsPreviousLocation(LOCATION_DECK) then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + elseif c:IsPreviousLocation(LOCATION_HAND) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + elseif c:IsPreviousLocation(LOCATION_REMOVED) then + Duel.Remove(c,POS_FACEUP,REASON_EFFECT) + end + end +end +function c511000238.tgg(c,card) + return c:GetCardTarget() and c:GetCardTarget():IsContains(card) +end +function c511000238.atkdefresetop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c511000238.adval) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(c511000238.adval) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local eqg=c:GetEquipGroup() + local tgg=Duel.GetMatchingGroup(c511000238.tgg,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,c) + eqg:Merge(tgg) + if eqg:GetCount()>0 then + Duel.Destroy(eqg,REASON_EFFECT) + end +end +function c511000238.atkfilter(c,e,tp) + return c:IsControler(tp) and (not e or c:IsRelateToEffect(e)) +end +function c511000238.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000238.atkfilter,1,nil,nil,1-tp) +end +function c511000238.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetCard(eg) +end +function c511000238.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000238.atkfilter,nil,e,1-tp) + local dg=Group.CreateGroup() + local c=e:GetHandler() + local tc=g:GetFirst() + while tc do + if tc:IsPosition(POS_FACEUP_ATTACK) then + local preatk=tc:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-2000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + if preatk~=0 and tc:GetAttack()==0 then dg:AddCard(tc) end + elseif tc:IsPosition(POS_FACEUP_DEFENSE) then + local predef=tc:GetDefense() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(-2000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + if predef~=0 and tc:GetDefense()==0 then dg:AddCard(tc) end + end + tc=g:GetNext() + end + Duel.Destroy(dg,REASON_EFFECT) +end +function c511000238.redatk(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and a and a:IsControler(1-tp) and Duel.GetAttackTarget() then + Duel.ChangeAttackTarget(e:GetHandler()) + end +end +--MLD diff --git a/script/c511000239.lua b/script/c511000239.lua new file mode 100644 index 00000000..eeff914e --- /dev/null +++ b/script/c511000239.lua @@ -0,0 +1,120 @@ +--Earthbound God Aslla Piscu +function c511000239.initial_effect(c) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e0:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e0:SetRange(LOCATION_MZONE) + e0:SetTargetRange(1,0) + e0:SetTarget(c511000239.sumlimit) + c:RegisterEffect(e0) + local e1=e0:Clone() + e1:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e1) + local e2=e0:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + --Can Attack Directly + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c511000239.havefieldcon) + c:RegisterEffect(e3) + --Unaffected by Spell and Trap Cards + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetCondition(c511000239.havefieldcon) + e4:SetValue(c511000239.unaffectedval) + c:RegisterEffect(e4) + --Cannot be Battle Target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(1) + e5:SetCondition(c511000239.havefieldcon) + c:RegisterEffect(e5) + --Destroy all Monsters and Inflict 800 Damage for Each Monster + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511000239,0)) + e6:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_LEAVE_FIELD) + e6:SetCondition(c511000239.descon) + e6:SetTarget(c511000239.destg) + e6:SetOperation(c511000239.desop) + c:RegisterEffect(e6) + --Self Destroy During the End Phase + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetProperty(CATEGORY_DESTROY) + e7:SetRange(LOCATION_MZONE) + e7:SetCountLimit(1) + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCondition(c511000239.nofieldcon) + e7:SetOperation(c511000239.nofieldop) + c:RegisterEffect(e7) + --direct attack + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_DIRECT_ATTACK) + e10:SetRange(LOCATION_MZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetCondition(c511000239.havefieldcon) + e10:SetTarget(c511000239.dirtg) + c:RegisterEffect(e10) +end +function c511000239.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsSetCard(0x21) +end +function c511000239.dirfilter(c,card) + return card~=c +end +function c511000239.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511000239.dirfilter,c:GetControler(),0,LOCATION_MZONE,1,nil,e:GetHandler()) +end +function c511000239.havefieldfilter(c) + return c:IsFaceup() and c:IsType(TYPE_FIELD) +end +function c511000239.havefieldcon(e) + return Duel.IsExistingMatchingCard(c511000239.havefieldfilter,0,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) +end +function c511000239.unaffectedval(e,te) + return (te:IsActiveType(TYPE_SPELL) or te:IsActiveType(TYPE_TRAP)) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c511000239.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and not c:IsLocation(LOCATION_DECK) + and Duel.IsExistingMatchingCard(c511000239.havefieldfilter,0,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) +end +function c511000239.desfilter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511000239.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511000239.desfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + if g:GetCount()~=0 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*800) + end +end +function c511000239.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000239.desfilter,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct~=0 then + Duel.BreakEffect() + Duel.Damage(1-tp,ct*800,REASON_EFFECT) + end +end +function c511000239.nofieldcon(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1==nil or not f1:IsFaceup()) and (f2==nil or not f2:IsFaceup()) +end +function c511000239.nofieldop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000240.lua b/script/c511000240.lua new file mode 100644 index 00000000..ffff5de1 --- /dev/null +++ b/script/c511000240.lua @@ -0,0 +1,88 @@ +--Exodia Necross +function c511000240.initial_effect(c) + c:EnableReviveLimit() + --"Exodia the Forbidden One": This card cannot be destroyed by battle + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511000240.battlecon) + e2:SetValue(1) + c:RegisterEffect(e2) + --"Left Leg of the Forbidden One": This card cannot be destroyed by Spell Cards. + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511000240.spellcon) + e3:SetValue(c511000240.spellval) + c:RegisterEffect(e3) + --"Right Leg of the Forbidden One": This card cannot be destroyed by Trap Cards. + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511000240.trapcon) + e4:SetValue(c511000240.trapval) + c:RegisterEffect(e4) + --"Left Arm of the Forbidden One": This card cannot be destroyed by the effects of other Effect Monsters. + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511000240.monstercon) + e5:SetValue(c511000240.monsterval) + c:RegisterEffect(e5) + --"Right Arm of the Forbidden One": Whenever this card battles an opponent's monster, it gains 1000 ATK at the end of the Damage Step. + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511000240,0)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCategory(CATEGORY_ATKCHANGE) + e6:SetCode(EVENT_DAMAGE_STEP_END) + e6:SetRange(LOCATION_MZONE) + e6:SetProperty(EFFECT_FLAG_REPEAT) + e6:SetCondition(c511000240.atkcon) + e6:SetOperation(c511000240.atkop) + c:RegisterEffect(e6) +end +function c511000240.battlecon(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,33396948) +end +function c511000240.spellcon(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,44519536) +end +function c511000240.spellval(e,re,rp) + return re:IsActiveType(TYPE_SPELL) +end +function c511000240.trapcon(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,8124921) +end +function c511000240.trapval(e,re,rp) + return re:IsActiveType(TYPE_TRAP) +end +function c511000240.monstercon(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,7902349) +end +function c511000240.monsterval(e,re,rp) + return re:IsActiveType(TYPE_MONSTER) +end +function c511000240.atkcon(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,70903634) and Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget()~=nil + or Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,70903634) and Duel.GetAttackTarget()==e:GetHandler() and Duel.GetAttackTarget()~=nil +end +function c511000240.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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(1000) + c:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511000241.lua b/script/c511000241.lua new file mode 100644 index 00000000..39d2a69c --- /dev/null +++ b/script/c511000241.lua @@ -0,0 +1,44 @@ +--Contract with Exodia +function c511000241.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000241.condition) + e1:SetCost(c511000241.cost) + e1:SetTarget(c511000241.target) + e1:SetOperation(c511000241.activate) + c:RegisterEffect(e1) +end +c511000241.fit_monster={12600382,8124921,44519536,70903634,7902349,33396948} +function c511000241.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,8124921) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,44519536) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,70903634) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,7902349) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,33396948) +end +function c511000241.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) end + Duel.PayLPCost(tp,2000) +end +function c511000241.filter(c,e,tp) + return c:IsCode(12600382) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,true) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000241.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c511000241.filter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE) +end +function c511000241.activate(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 tg=Duel.SelectMatchingCard(tp,c511000241.filter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511000242.lua b/script/c511000242.lua new file mode 100644 index 00000000..f947e813 --- /dev/null +++ b/script/c511000242.lua @@ -0,0 +1,118 @@ +--Earthbound God Uru +function c511000242.initial_effect(c) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e0:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e0:SetRange(LOCATION_MZONE) + e0:SetTargetRange(1,0) + e0:SetTarget(c511000242.sumlimit) + c:RegisterEffect(e0) + local e1=e0:Clone() + e1:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e1) + local e2=e0:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + --Can Attack Directly + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c511000242.havefieldcon) + c:RegisterEffect(e3) + --Unaffected by Spell and Trap Cards + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetCondition(c511000242.havefieldcon) + e4:SetValue(c511000242.unaffectedval) + c:RegisterEffect(e4) + --Cannot be Battle Target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(1) + e5:SetCondition(c511000242.havefieldcon) + c:RegisterEffect(e5) + --Take Control + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511000242,0)) + e6:SetCategory(CATEGORY_CONTROL) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c511000242.havefieldcon) + e6:SetCost(c511000242.controlcost) + e6:SetTarget(c511000242.controltg) + e6:SetOperation(c511000242.controlop) + c:RegisterEffect(e6) + --Self Destroy During the End Phase + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetRange(LOCATION_MZONE) + e7:SetCountLimit(1) + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCondition(c511000242.nofieldcon) + e7:SetOperation(c511000242.nofieldop) + c:RegisterEffect(e7) + --direct attack + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_DIRECT_ATTACK) + e10:SetRange(LOCATION_MZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetCondition(c511000242.havefieldcon) + e10:SetTarget(c511000242.dirtg) + c:RegisterEffect(e10) +end +function c511000242.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsSetCard(0x21) +end +function c511000242.dirfilter(c,card) + return card~=c +end +function c511000242.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511000242.dirfilter,c:GetControler(),0,LOCATION_MZONE,1,nil,e:GetHandler()) +end +function c511000242.havefieldfilter(c) + return c:IsFaceup() and c:IsType(TYPE_FIELD) +end +function c511000242.havefieldcon(e) + return Duel.IsExistingMatchingCard(c511000242.havefieldfilter,0,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) +end +function c511000242.unaffectedval(e,te) + return (te:IsActiveType(TYPE_SPELL) or te:IsActiveType(TYPE_TRAP)) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c511000242.controlcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511000242.controlfilter(c) + return c:IsFaceup() and c:IsAbleToChangeControler() +end +function c511000242.controltg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511000242.controlfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000242.controlfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511000242.controlfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511000242.controlop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end +function c511000242.nofieldcon(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1==nil or not f1:IsFaceup()) and (f2==nil or not f2:IsFaceup()) +end +function c511000242.nofieldop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000243.lua b/script/c511000243.lua new file mode 100644 index 00000000..6972ca6f --- /dev/null +++ b/script/c511000243.lua @@ -0,0 +1,96 @@ +--Exodius the Ultimate Forbidden Lord +function c511000243.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --Send 1 "Forbidden One" monster from your Hand or Deck to the Graveyard + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000243,0)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetTarget(c511000243.forbtg) + e2:SetOperation(c511000243.forbop) + c:RegisterEffect(e2) + --ATK + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c511000243.atkval) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(1) + c:RegisterEffect(e4) + --Unaffected by Opponent Card Effects + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetValue(c511000243.unval) + c:RegisterEffect(e5) + --Win the Duel when there are 5 parts of the Forbidden in your Graveyard + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_DELAY) + e6:SetCode(EVENT_TO_GRAVE) + e6:SetRange(LOCATION_MZONE) + e6:SetOperation(c511000243.winop) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e7:SetCode(EVENT_ADJUST) + e7:SetRange(LOCATION_MZONE) + e7:SetOperation(c511000243.winop) + c:RegisterEffect(e7) +end +function c511000243.forbtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c511000243.forbfilter(c) + return c:IsSetCard(0x40) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c511000243.forbop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local c=e:GetHandler() + local g=Duel.SelectMatchingCard(tp,c511000243.forbfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + Duel.SendtoGrave(tc,REASON_EFFECT) +end +function c511000243.atkfilter(c) + return c:IsSetCard(0x40) and c:IsType(TYPE_MONSTER) +end +function c511000243.atkval(e,c) + return Duel.GetMatchingGroupCount(c511000243.atkfilter,c:GetControler(),LOCATION_GRAVE,0,nil)*1000 +end +function c511000243.unval(e,te) + return te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c511000243.check(g) + g=g:Filter(c511000243.atkfilter,nil) + return g:GetClassCount(Card.GetCode)>=5 +end +function c511000243.winop(e,tp,eg,ep,ev,re,r,rp) + local WIN_REASON_EXODIUS = 0x14 + local g1=Duel.GetFieldGroup(tp,LOCATION_GRAVE,0) + local g2=Duel.GetFieldGroup(tp,0,LOCATION_GRAVE) + local wtp=c511000243.check(g1) + local wntp=c511000243.check(g2) + if wtp and not wntp then + Duel.Win(tp,WIN_REASON_EXODIUS) + elseif not wtp and wntp then + Duel.Win(1-tp,WIN_REASON_EXODIUS) + elseif wtp and wntp then + Duel.Win(PLAYER_NONE,WIN_REASON_EXODIUS) + end +end diff --git a/script/c511000244.lua b/script/c511000244.lua new file mode 100644 index 00000000..136890e4 --- /dev/null +++ b/script/c511000244.lua @@ -0,0 +1,70 @@ +--Ultimate Ritual of the Forbidden Lord +function c511000244.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511000244.condition) + e1:SetCost(c511000244.cost) + e1:SetTarget(c511000244.target) + e1:SetOperation(c511000244.activate) + c:RegisterEffect(e1) +end +function c511000244.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil,0x40) + return g:GetClassCount(Card.GetCode)>=5 +end +function c511000244.costfilter(c) + return c:IsSetCard(0x40) and c:IsDiscardable() +end +function c511000244.tdfilter(c) + return not c:IsAbleToDeckOrExtraAsCost() +end +function c511000244.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local rg=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + if chk==0 then return Duel.IsExistingMatchingCard(c511000244.costfilter,tp,LOCATION_HAND,0,2,nil) + and rg:GetCount()>0 and not rg:IsExists(c511000244.tdfilter,1,nil)end + local g=Duel.GetMatchingGroup(c511000244.cfilter,tp,LOCATION_HAND,0,nil) + Duel.ConfirmCards(1-tp,g) + Duel.SendtoDeck(rg,nil,2,REASON_COST) + Duel.DiscardHand(tp,c511000244.costfilter,2,2,REASON_COST+REASON_DISCARD) +end +function c511000244.filter(c,e,tp) + return c:IsCode(13893596) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000244.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000244.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511000244.activate(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 tc=Duel.SelectMatchingCard(tp,c511000244.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000244.retcon) + e1:SetOperation(c511000244.retop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:CompleteProcedure() + end +end +function c511000244.retfilter(c) + return c:IsSetCard(0x40) and c:IsReason(REASON_EFFECT) and not c:IsReason(REASON_RETURN) and c:GetReasonEffect() + and not c:GetReasonEffect():GetHandler():IsCode(13893596) +end +function c511000244.retcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000244.retfilter,1,nil) +end +function c511000244.retop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000244.retfilter,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c511000245.lua b/script/c511000245.lua new file mode 100644 index 00000000..1abd9c5a --- /dev/null +++ b/script/c511000245.lua @@ -0,0 +1,179 @@ +--邪神アバター +--マイケル・ローレンス・ディーによってスクリプト +function c511000245.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c511000245.ttcon) + e1:SetOperation(c511000245.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_LIMIT_SET_PROC) + c:RegisterEffect(e2) + --cannot special summon + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SET_ATTACK_FINAL) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c511000245.adval) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e5) + --aclimit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_SUMMON_SUCCESS) + e6:SetOperation(c511000245.regop) + c:RegisterEffect(e6) + --Summon Cannot be Negated + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e7) + --summon success + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_SUMMON_SUCCESS) + e8:SetOperation(c511000245.sumsuc) + c:RegisterEffect(e8) + --control + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_CHANGE_CONTROL) + c:RegisterEffect(e9) + --immune effect + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_SINGLE) + e11:SetCode(EFFECT_IMMUNE_EFFECT) + e11:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e11:SetRange(LOCATION_MZONE) + e11:SetValue(c511000245.efilter) + c:RegisterEffect(e11) + --cannot be target + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_SINGLE) + e10:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e10:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e10:SetRange(LOCATION_MZONE) + e10:SetValue(c511000245.tgfilter) + c:RegisterEffect(e10) + --ATK/DEF effects are only applied until the End Phase + local e13=Effect.CreateEffect(c) + e13:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e13:SetProperty(EFFECT_FLAG_REPEAT) + e13:SetRange(LOCATION_MZONE) + e13:SetCode(EVENT_PHASE+PHASE_END) + e13:SetCountLimit(1) + e13:SetOperation(c511000245.atkdefresetop) + c:RegisterEffect(e13) + --negate + local e16=Effect.CreateEffect(c) + e16:SetDescription(aux.Stringid(51100236,6)) + e16:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e16:SetCode(EVENT_BE_BATTLE_TARGET) + e16:SetCondition(c511000245.negcon) + e16:SetOperation(c511000245.negop) + c:RegisterEffect(e16) + --indestructable + local e17=Effect.CreateEffect(c) + e17:SetType(EFFECT_TYPE_SINGLE) + e17:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e17:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e17:SetRange(LOCATION_MZONE) + e17:SetValue(1) + c:RegisterEffect(e17) +end +function c511000245.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c511000245.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c511000245.filter(c) + return c:IsFaceup() and c:GetCode()~=21208154 +end +function c511000245.adval(e,c) + local g=Duel.GetMatchingGroup(c511000245.filter,0,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then + return 1 + else + local tg,val=g:GetMaxGroup(Card.GetAttack) + return val+1 + end +end +function c511000245.regop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511000245.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + Duel.RegisterEffect(e1,tp) +end +function c511000245.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511000245.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(c511000245.chainlm) +end +function c511000245.chainlm(e,rp,tp) + return e:GetHandler():IsAttribute(ATTRIBUTE_DEVINE) +end +function c511000245.efilter(e,te) + return te:IsActiveType(TYPE_EFFECT) and te:GetOwner()~=e:GetOwner() +end +function c511000245.tgfilter(e,re) + if not re or not re:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return false end + return re:IsHasCategory(CATEGORY_TOHAND+CATEGORY_DESTROY+CATEGORY_REMOVE+CATEGORY_TODECK+CATEGORY_RELEASE+CATEGORY_TOGRAVE) +end +function c511000245.tgg(c,card) + return c:GetCardTarget() and c:GetCardTarget():IsContains(card) +end +function c511000245.negcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and a:IsFaceup() and a:IsAttribute(ATTRIBUTE_DEVINE) and a:IsRace(RACE_DEVINE) + and not a:IsCode(10000011) and not a:IsCode(21208154) +end +function c511000245.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c511000245.atkdefresetop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c511000245.adval) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(c511000245.adval) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local eqg=c:GetEquipGroup() + local tgg=Duel.GetMatchingGroup(c511000245.tgg,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,c) + eqg:Merge(tgg) + if eqg:GetCount()>0 then + Duel.Destroy(eqg,REASON_EFFECT) + end +end +--MLD diff --git a/script/c511000246.lua b/script/c511000246.lua new file mode 100644 index 00000000..bc5361cf --- /dev/null +++ b/script/c511000246.lua @@ -0,0 +1,110 @@ +--Hamon, Emperor of Descending Thunder +function c511000246.initial_effect(c) + c:EnableReviveLimit() + c:SetUniqueOnField(1,0,511000246) + --Cannot Special Summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511000246.spcon) + e2:SetOperation(c511000246.spop) + c:RegisterEffect(e2) + --1000 Damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000246,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCondition(c511000246.dmgcon) + e3:SetTarget(c511000246.dmgtg) + e3:SetOperation(c511000246.dmgop) + c:RegisterEffect(e3) + --Protect other Monsters + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e4:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e4:SetCondition(c511000246.protectcon) + e4:SetTarget(c511000246.protecttg) + e4:SetValue(1) + c:RegisterEffect(e4) + --Damage 0 for the rest of Turn + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000246,1)) + e5:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e5:SetCode(EVENT_TO_GRAVE) + e5:SetCondition(c511000246.nodmgcon) + e5:SetOperation(c511000246.nodmgop) + c:RegisterEffect(e5) +end +function c511000246.spfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGraveAsCost() +end +function c511000246.spcon(e,c) + if c==nil then return true end + if Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)==0 then + return Duel.IsExistingMatchingCard(c511000246.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511000246.spfilter,c:GetControler(),LOCATION_ONFIELD,0,3,nil) + else + return Duel.IsExistingMatchingCard(c511000246.spfilter,c:GetControler(),LOCATION_ONFIELD,0,3,nil) + end +end +function c511000246.spop(e,tp,eg,ep,ev,re,r,rp,c) + if Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511000246.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511000246.spfilter,tp,LOCATION_ONFIELD,0,2,2,g1:GetFirst()) + g2:AddCard(g1:GetFirst()) + Duel.SendtoGrave(g2,REASON_COST) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000246.spfilter,tp,LOCATION_ONFIELD,0,3,3,nil) + Duel.SendtoGrave(g,REASON_COST) + end +end +function c511000246.dmgcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) and bc:IsType(TYPE_MONSTER) +end +function c511000246.dmgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511000246.dmgop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000246.protectcon(e) + return e:GetHandler():IsDefensePos() +end +function c511000246.protecttg(e,c) + return c~=e:GetHandler() +end +function c511000246.nodmgcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP_DEFENSE) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000246.nodmgop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000247.lua b/script/c511000247.lua new file mode 100644 index 00000000..d34ab759 --- /dev/null +++ b/script/c511000247.lua @@ -0,0 +1,111 @@ +--Polar God Emperor Thor +function c511000247.initial_effect(c) + --Synchro Summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),2) + c:EnableReviveLimit() + c:SetUniqueOnField(1,0,511000247) + --Effect Absorber + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000247,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000247.efftg) + e1:SetOperation(c511000247.effop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c511000247.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(30604579,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1) + e3:SetCondition(c511000247.spcon) + e3:SetTarget(c511000247.sptg) + e3:SetOperation(c511000247.spop) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(30604579,2)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c511000247.damcon) + e4:SetTarget(c511000247.damtg) + e4:SetOperation(c511000247.damop) + c:RegisterEffect(e4) +end +function c511000247.efffilter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) and not c:IsDisabled() +end +function c511000247.efftg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511000247.efffilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000247.efffilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000247.efffilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511000247.effop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local code=tc:GetOriginalCode() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if Duel.SelectYesNo(tp,aux.Stringid(10032958,0)) then + c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end + end +end +function c511000247.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local pos=c:GetPreviousPosition() + if c:IsReason(REASON_BATTLE) then pos=c:GetBattlePosition() end + if c:IsReason(REASON_DESTROY) + and c:IsPreviousLocation(LOCATION_ONFIELD) and bit.band(pos,POS_FACEUP)~=0 then + c:RegisterFlagEffect(511000247,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c511000247.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000247)~=0 +end +function c511000247.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,1,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000247.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),1,tp,tp,false,false,POS_FACEUP) + end +end +function c511000247.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511000247.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511000247.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000248.lua b/script/c511000248.lua new file mode 100644 index 00000000..ed7ac628 --- /dev/null +++ b/script/c511000248.lua @@ -0,0 +1,176 @@ +--Defend Slime +function c511000248.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetDescription(aux.Stringid(511000248,0)) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START) + e1:SetTarget(c511000248.atktg1) + e1:SetOperation(c511000248.atkop) + c:RegisterEffect(e1) + --Activate Damage Protection + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000248,1)) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511000248.dmgcon) + e2:SetCost(c511000248.dmgcost) + e2:SetOperation(c511000248.dmgop) + c:RegisterEffect(e2) + --Activate Battle Damage Protection + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_ACTIVATE) + e3:SetDescription(aux.Stringid(511000248,2)) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_CONFIRM) + e3:SetCondition(c511000248.battledmgcon) + e3:SetCost(c511000248.battledmgcost) + e3:SetOperation(c511000248.battledmgop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000248,2)) + e4:SetType(EFFECT_TYPE_ACTIVATE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000248.battledmgcon2) + e4:SetCost(c511000248.battledmgcost) + e4:SetOperation(c511000248.battledmgop) + c:RegisterEffect(e4) + --Slime's Defense + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000248,0)) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_BE_BATTLE_TARGET) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511000248.atkcon) + e5:SetTarget(c511000248.atktg2) + e5:SetOperation(c511000248.atkop) + c:RegisterEffect(e5) + --Slime's Damage Protection + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511000248,1)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetCode(EVENT_CHAINING) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c511000248.dmgcon) + e6:SetCost(c511000248.dmgcost) + e6:SetOperation(c511000248.dmgop) + c:RegisterEffect(e6) + --Slime's Battle Damage Protection + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(511000248,2)) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CARD_TARGET) + e7:SetCode(EVENT_BATTLE_CONFIRM) + e7:SetRange(LOCATION_SZONE) + e7:SetCondition(c511000248.battledmgcon) + e7:SetCost(c511000248.battledmgcost) + e7:SetOperation(c511000248.battledmgop) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(511000248,2)) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CARD_TARGET) + e8:SetCode(EVENT_ATTACK_ANNOUNCE) + e8:SetRange(LOCATION_SZONE) + e8:SetCondition(c511000248.battledmgcon2) + e8:SetCost(c511000248.battledmgcost) + e8:SetOperation(c511000248.battledmgop) + c:RegisterEffect(e8) +end +function c511000248.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetAttackTarget()~=nil +end +function c511000248.filter(c) + return c:IsFaceup() and c:IsCode(31709826) +end +function c511000248.atktg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000248.filter(chkc) end + if chk==0 then return true end + e:SetProperty(0) + if Duel.CheckEvent(EVENT_BE_BATTLE_TARGET) and tp~=Duel.GetTurnPlayer() then + local at=Duel.GetAttackTarget() + if at and Duel.IsExistingTarget(c511000248.filter,tp,LOCATION_MZONE,0,1,at) and Duel.SelectYesNo(tp,aux.Stringid(511000248,0)) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000248.filter,tp,LOCATION_MZONE,0,1,1,at) + end + end +end +function c511000248.atktg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000248.filter(chkc) end + local at=Duel.GetAttackTarget() + if chk==0 then return Duel.IsExistingTarget(c511000248.filter,tp,LOCATION_MZONE,0,1,at) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000248.filter,tp,LOCATION_MZONE,0,1,1,at) +end +function c511000248.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.ChangeAttackTarget(tc) + end +end +function c511000248.dmgcon(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + return ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0 +end +function c511000248.dmgcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511000248.filter,1,nil) end +end +function c511000248.dmgop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectReleaseGroup(tp,c511000248.filter,1,1,nil) + Duel.Destroy(g,REASON_COST) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511000248.battledmgcon(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + return (a:GetControler()==tp and a:GetAttack()0 + and e:GetHandler():IsCanBeSpecialSummoned(e,1,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000249.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),1,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511000250.lua b/script/c511000250.lua new file mode 100644 index 00000000..29cc7a39 --- /dev/null +++ b/script/c511000250.lua @@ -0,0 +1,104 @@ +--Earthbound God Cusillu +function c511000250.initial_effect(c) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e0:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e0:SetRange(LOCATION_MZONE) + e0:SetTargetRange(1,0) + e0:SetTarget(c511000250.sumlimit) + c:RegisterEffect(e0) + local e1=e0:Clone() + e1:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e1) + local e2=e0:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + --Can Attack Directly + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c511000250.havefieldcon) + c:RegisterEffect(e3) + --Unaffected by Spell and Trap Cards + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetCondition(c511000250.havefieldcon) + e4:SetValue(c511000250.unaffectedval) + c:RegisterEffect(e4) + --Cannot be Battle Target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(1) + e5:SetCondition(c511000250.havefieldcon) + c:RegisterEffect(e5) + --Destroy Replace and Halve Opponent's Life Points + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EFFECT_DESTROY_REPLACE) + e6:SetCondition(c511000250.havefieldcon) + e6:SetTarget(c511000250.replacetg) + c:RegisterEffect(e6) + --Self Destroy During the End Phase + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetRange(LOCATION_MZONE) + e7:SetCountLimit(1) + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCondition(c511000250.nofieldcon) + e7:SetOperation(c511000250.nofieldop) + c:RegisterEffect(e7) + --direct attack + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_DIRECT_ATTACK) + e10:SetRange(LOCATION_MZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetCondition(c511000250.havefieldcon) + e10:SetTarget(c511000250.dirtg) + c:RegisterEffect(e10) +end +function c511000250.dirfilter(c,card) + return card~=c +end +function c511000250.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511000250.dirfilter,c:GetControler(),0,LOCATION_MZONE,1,nil,e:GetHandler()) +end +function c511000250.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsSetCard(0x21) +end +function c511000250.havefieldfilter(c) + return c:IsFaceup() and c:IsType(TYPE_FIELD) +end +function c511000250.havefieldcon(e) + return Duel.IsExistingMatchingCard(c511000250.havefieldfilter,0,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) +end +function c511000250.unaffectedval(e,te) + return (te:IsActiveType(TYPE_SPELL) or te:IsActiveType(TYPE_TRAP)) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c511000250.replacetg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsReleasableByEffect,1,c) end + if Duel.SelectYesNo(tp,aux.Stringid(511000250,0)) then + local g=Duel.SelectReleaseGroup(tp,Card.IsReleasableByEffect,1,1,c) + Duel.Release(g,REASON_EFFECT) + Duel.SetLP(1-tp,Duel.GetLP(1-tp)/2) + return true + else return false end +end +function c511000250.nofieldcon(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1==nil or not f1:IsFaceup()) and (f2==nil or not f2:IsFaceup()) +end +function c511000250.nofieldop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000251.lua b/script/c511000251.lua new file mode 100644 index 00000000..6c67b7ee --- /dev/null +++ b/script/c511000251.lua @@ -0,0 +1,42 @@ +--Polar Star Angel Valkyria +function c511000251.initial_effect(c) + --Summon Token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000251,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c511000251.cost) + e1:SetTarget(c511000251.target) + e1:SetOperation(c511000251.operation) + c:RegisterEffect(e1) +end +function c511000251.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,2,2,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000251.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,40844553,0,0x4011,100,1000,4,RACE_WARRIOR,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511000251.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,40844553,0,0x4011,100,1000,4,RACE_WARRIOR,ATTRIBUTE_EARTH) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,40844553) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(100) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511000252.lua b/script/c511000252.lua new file mode 100644 index 00000000..2b57fe2a --- /dev/null +++ b/script/c511000252.lua @@ -0,0 +1,110 @@ +--Earthbound God Wiraqocha Rasca +function c511000252.initial_effect(c) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e0:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e0:SetRange(LOCATION_MZONE) + e0:SetTargetRange(1,0) + e0:SetTarget(c511000252.sumlimit) + c:RegisterEffect(e0) + local e1=e0:Clone() + e1:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e1) + local e2=e0:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + --Can Attack Directly + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c511000252.havefieldcon) + c:RegisterEffect(e3) + --Unaffected by Spell and Trap Cards + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetCondition(c511000252.havefieldcon) + e4:SetValue(c511000252.unaffectedval) + c:RegisterEffect(e4) + --Cannot be Battle Target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(1) + e5:SetCondition(c511000252.havefieldcon) + c:RegisterEffect(e5) + --Polestar Obey + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511000252,0)) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c511000252.polestarcon) + e6:SetOperation(c511000252.polestarop) + c:RegisterEffect(e6) + --Self Destroy During the End Phase + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetRange(LOCATION_MZONE) + e7:SetCountLimit(1) + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCondition(c511000252.nofieldcon) + e7:SetOperation(c511000252.nofieldop) + c:RegisterEffect(e7) + --direct attack + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_DIRECT_ATTACK) + e10:SetRange(LOCATION_MZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetCondition(c511000252.havefieldcon) + e10:SetTarget(c511000252.dirtg) + c:RegisterEffect(e10) +end +function c511000252.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsSetCard(0x21) +end +function c511000252.dirfilter(c,card) + return card~=c +end +function c511000252.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511000252.dirfilter,c:GetControler(),0,LOCATION_MZONE,1,nil,e:GetHandler()) +end +function c511000252.havefieldfilter(c) + return c:IsFaceup() and c:IsType(TYPE_FIELD) +end +function c511000252.havefieldcon(e) + return Duel.IsExistingMatchingCard(c511000252.havefieldfilter,0,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) +end +function c511000252.unaffectedval(e,te) + return (te:IsActiveType(TYPE_SPELL) or te:IsActiveType(TYPE_TRAP)) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c511000252.polestarcon(e) + local p=e:GetHandler():GetControler() + return Duel.GetLP(1-p)>1 and Duel.IsExistingMatchingCard(c511000252.havefieldfilter,0,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) +end +function c511000252.polestarop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.SetLP(1-tp,1) +end +function c511000252.nofieldcon(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1==nil or not f1:IsFaceup()) and (f2==nil or not f2:IsFaceup()) +end +function c511000252.nofieldop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000253.lua b/script/c511000253.lua new file mode 100644 index 00000000..4486acee --- /dev/null +++ b/script/c511000253.lua @@ -0,0 +1,91 @@ +--Chaos Phantom Demon Armityle +function c511000253.initial_effect(c) + c:EnableReviveLimit() + --Special Summon with Dimension Fusion Destruction + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --Cannot be Destroyed by Battle + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --attack + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511000253.atktg) + e3:SetOperation(c511000253.atkop) + c:RegisterEffect(e3) + --Control + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(65305468,0)) + e4:SetCategory(CATEGORY_CONTROL) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c511000253.cttg) + e4:SetOperation(c511000253.ctop) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000253,1)) + e5:SetCategory(CATEGORY_REMOVE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCondition(c511000253.furycon) + e5:SetTarget(c511000253.furytg) + e5:SetOperation(c511000253.furyop) + c:RegisterEffect(e5) +end +function c511000253.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:GetControler()~=tp and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return c:IsAttackable() + and Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end + Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000253.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) + and c:IsAttackable() and not c:IsImmuneToEffect(e) and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetReset(RESET_CHAIN) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(10000) + c:RegisterEffect(e1) + Duel.CalculateDamage(c,tc) + end +end +function c511000253.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsControlerCanBeChanged() end + e:GetHandler():RegisterFlagEffect(511000253,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,e:GetHandler(),1,0,0) +end +function c511000253.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and not Duel.GetControl(c,1-tp,PHASE_END,1) then + if not c:IsImmuneToEffect(e) and c:IsAbleToChangeControler() then + Duel.Destroy(c,REASON_EFFECT) + end + end +end +function c511000253.furycon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000253)~=0 +end +function c511000253.furytg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511000253.furyop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511000254.lua b/script/c511000254.lua new file mode 100644 index 00000000..823d95be --- /dev/null +++ b/script/c511000254.lua @@ -0,0 +1,50 @@ +--Dimension Fusion Destruction +function c511000254.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000254.target) + e1:SetOperation(c511000254.activate) + c:RegisterEffect(e1) +end +function c511000254.tffilter(c) + local code=c:GetCode() + return c:IsAbleToRemove() + and (code==32491823 or code==69890969 or code==6007214) +end +function c511000254.tfilter(c,e,tp) + return c:IsCode(511000253) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000254.filter(c,code) + return c:IsCode(code) and c:IsAbleToRemove() +end +function c511000254.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000254.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,1,nil,6007214) + and Duel.IsExistingMatchingCard(c511000254.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,1,nil,32491823) + and Duel.IsExistingMatchingCard(c511000254.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,1,nil,69890969) + and Duel.IsExistingMatchingCard(c511000254.tfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end +end +function c511000254.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511000254.tffilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=sg:Select(tp,1,1,nil) + sg:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) + local ft=2 + local g2=nil + while ft>0 do + g2=sg:Select(tp,1,1,nil) + g1:Merge(g2) + sg:Remove(Card.IsCode,nil,g2:GetFirst():GetCode()) + ft=ft-1 + end + Duel.Remove(g1,POS_FACEUP,REASON_EFFECT) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local sg=Duel.SelectMatchingCard(tp,c511000254.tfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if sg:GetCount()>0 then + Duel.BreakEffect() + Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511000255.lua b/script/c511000255.lua new file mode 100644 index 00000000..452418ce --- /dev/null +++ b/script/c511000255.lua @@ -0,0 +1,109 @@ +--Earthbound God Ccapac Apu +function c511000255.initial_effect(c) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e0:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e0:SetRange(LOCATION_MZONE) + e0:SetTargetRange(1,0) + e0:SetTarget(c511000255.sumlimit) + c:RegisterEffect(e0) + local e1=e0:Clone() + e1:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e1) + local e2=e0:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + --Can Attack Directly + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c511000255.havefieldcon) + c:RegisterEffect(e3) + --Unaffected by Spell and Trap Cards + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetCondition(c511000255.havefieldcon) + e4:SetValue(c511000255.unaffectedval) + c:RegisterEffect(e4) + --Cannot be Battle Target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(1) + e5:SetCondition(c511000255.havefieldcon) + c:RegisterEffect(e5) + --Damage Equal to the Monster's ATK + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511000255,0)) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_BATTLE_DESTROYING) + e6:SetCondition(c511000255.havefieldcon) + e6:SetTarget(c511000255.dmgtg) + e6:SetOperation(c511000255.dmgop) + c:RegisterEffect(e6) + --Self Destroy During the End Phase + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetProperty(CATEGORY_DESTROY) + e7:SetRange(LOCATION_MZONE) + e7:SetCountLimit(1) + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCondition(c511000255.nofieldcon) + e7:SetOperation(c511000255.nofieldop) + c:RegisterEffect(e7) + --direct attack + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_DIRECT_ATTACK) + e10:SetRange(LOCATION_MZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetCondition(c511000255.havefieldcon) + e10:SetTarget(c511000255.dirtg) + c:RegisterEffect(e10) +end +function c511000255.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsSetCard(0x21) +end +function c511000255.dirfilter(c,card) + return card~=c +end +function c511000255.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511000255.dirfilter,c:GetControler(),0,LOCATION_MZONE,1,nil,e:GetHandler()) +end +function c511000255.havefieldfilter(c) + return c:IsFaceup() and c:IsType(TYPE_FIELD) +end +function c511000255.havefieldcon(e) + return Duel.IsExistingMatchingCard(c511000255.havefieldfilter,0,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) +end +function c511000255.unaffectedval(e,te) + return (te:IsActiveType(TYPE_SPELL) or te:IsActiveType(TYPE_TRAP)) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c511000255.dmgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetHandler():GetBattleTarget() + local atk=tc:GetBaseAttack() + if atk<0 then atk=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c511000255.dmgop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000255.nofieldcon(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1==nil or not f1:IsFaceup()) and (f2==nil or not f2:IsFaceup()) +end +function c511000255.nofieldop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000256.lua b/script/c511000256.lua new file mode 100644 index 00000000..bb45d5a2 --- /dev/null +++ b/script/c511000256.lua @@ -0,0 +1,171 @@ +--The Seal of Orichalcos +function c511000256.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000256.actcost) + e1:SetTarget(c511000256.acttg) + e1:SetOperation(c511000256.actop) + c:RegisterEffect(e1) + --ATK Up + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetValue(500) + c:RegisterEffect(e2) + --Cannot Activate "Orichalcos Deuteros" in the Same Turn + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EFFECT_CANNOT_ACTIVATE) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(1,1) + e5:SetValue(c511000256.aclimit) + c:RegisterEffect(e5) + --cannot disable + local e6=Effect.CreateEffect(c) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_DISABLE) + c:RegisterEffect(e6) + -- + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e7:SetRange(LOCATION_SZONE) + e7:SetCountLimit(1) + e7:SetValue(c511000256.valcon) + c:RegisterEffect(e7) + --spsummon + local e15=Effect.CreateEffect(c) + e15:SetDescription(aux.Stringid(18326736,0)) + e15:SetType(EFFECT_TYPE_IGNITION) + e15:SetRange(LOCATION_FZONE) + e15:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e15:SetTarget(c511000256.tg) + e15:SetOperation(c511000256.op) + c:RegisterEffect(e15) +end +function c511000256.actcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,48179391)==0 end + Duel.RegisterFlagEffect(tp,48179391,0,0,0) +end +function c511000256.valcon(e,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c511000256.desfilter(c) + return c:IsDestructable() and (c.hermos_filter or c.material_race or aux.IsMaterialListCode(c,1784686) + or aux.IsMaterialListCode(c,46232525) or aux.IsMaterialListCode(c,11082056) or c.material_trap) +end +function c511000256.mgfilter(c,code) + return c:IsType(TYPE_TRAP) and code and c:IsCode(code) +end +function c511000256.mgfilter2(c,e,tp,fusc) + return bit.band(c:GetReason(),0x40008)==0x40008 and c:IsType(TYPE_TRAP) and c:IsSSetable() +end +function c511000256.acttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511000256.desfilter,tp,LOCATION_ONFIELD,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000256.actop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c511000256.desfilter,tp,LOCATION_ONFIELD,0,nil) + local sg=Group.CreateGroup() + local tc=g:GetFirst() + while tc do + if tc:GetReasonEffect() then + if tc:GetReasonEffect():GetHandler():IsCode(11082056) then + local code=tc.material_trap + local mc=Duel.GetFirstMatchingCard(c511000256.mgfilter,tp,LOCATION_GRAVE,0,nil,code) + sg:AddCard(mc) + elseif tc:GetReasonEffect():GetHandler():IsCode(1784686) then + local mg=tc:GetMaterial() + mg:Remove(Card.IsCode,nil,1784686) + sg:Merge(mg) + end + end + tc=g:GetNext() + end + Duel.Destroy(g,REASON_EFFECT) + local mc=sg:GetFirst() + while mc do + if mc:IsType(TYPE_MONSTER) then + Duel.MoveToField(mc,tp,tp,LOCATION_MZONE,POS_FACEUP,true) + mc:SetStatus(STATUS_SPSUMMON_TURN,true) + else + Duel.MoveToField(mc,tp,tp,LOCATION_MZONE,POS_FACEDOWN,true) + end + end +end +function c511000256.aclimit(e,re,tp) + local rc=re:GetHandler() + return not rc:IsCode(110000100) and rc:IsType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511000256.filter(c,tp) + local seq=c:GetSequence() + local mc=Duel.GetFieldCard(tp,LOCATION_MZONE,seq) + local sc=Duel.GetFieldCard(tp,LOCATION_SZONE,seq) + if c:GetFlagEffect(511000256)>0 then return false end + if c:IsLocation(LOCATION_MZONE) then + return not sc + else + return not mc and c:GetFlagEffect(511000257)>0 + end +end +function c511000256.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000256.filter,tp,LOCATION_ONFIELD,0,1,nil,tp) end +end +function c511000256.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local tc=Duel.SelectMatchingCard(tp,c511000256.filter,tp,LOCATION_ONFIELD,0,1,1,nil,tp):GetFirst() + if tc then + local seq=tc:GetSequence() + local loc=0 + if tc:IsLocation(LOCATION_MZONE) then + loc=LOCATION_SZONE + else + loc=LOCATION_MZONE + end + local pos=0 + if tc:IsFaceup() then + pos=POS_FACEUP + elseif tc:IsLocation(LOCATION_SZONE) and tc:IsFacedown() then + pos=POS_FACEDOWN_DEFENSE + else + pos=POS_FACEDOWN + end + Duel.MoveToField(tc,tp,tp,loc,pos,true) + if tc:IsLocation(LOCATION_MZONE) then + tc:SetStatus(STATUS_SPSUMMON_TURN,true) + else + tc:RegisterFlagEffect(511000257,RESET_EVENT+0x1fe0000,0,0) + end + tc:RegisterFlagEffect(511000256,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + Duel.MoveSequence(tc,seq) + local e1=Effect.CreateEffect(tc) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(c511000256.val) + tc:RegisterEffect(e1) + Duel.RaiseEvent(tc,47408488,e,0,tp,0,0) + end +end +function c511000256.val(e,c) + if c:IsLocation(LOCATION_SZONE) then + return TYPE_SPELL+TYPE_CONTINUOUS + else + return 0 + end +end diff --git a/script/c511000257.lua b/script/c511000257.lua new file mode 100644 index 00000000..15aadbd3 --- /dev/null +++ b/script/c511000257.lua @@ -0,0 +1,155 @@ +--邪神イレイザー +--マイケル・ローレンス・ディーによってスクリプト +function c511000257.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c511000257.ttcon) + e1:SetOperation(c511000257.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_LIMIT_SET_PROC) + c:RegisterEffect(e2) + --cannot special summon + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SET_ATTACK) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c511000257.adval) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e5) + --Eraser + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(57793869,0)) + e6:SetCategory(CATEGORY_DESTROY) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_TO_GRAVE) + e6:SetCondition(c511000257.erascon) + e6:SetTarget(c511000257.erastg) + e6:SetOperation(c511000257.erasop) + c:RegisterEffect(e6) + --suicide + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(57793869,1)) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetCategory(CATEGORY_DESTROY) + e7:SetRange(LOCATION_MZONE) + e7:SetTarget(c511000257.destg) + e7:SetOperation(c511000257.desop) + c:RegisterEffect(e7) + --Summon Cannot be Negated + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e8) + --cannot be target + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_SINGLE) + e10:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e10:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e10:SetRange(LOCATION_MZONE) + e10:SetValue(c511000257.tgfilter) + c:RegisterEffect(e10) + --ATK/DEF effects are only applied until the End Phase + local e13=Effect.CreateEffect(c) + e13:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e13:SetProperty(EFFECT_FLAG_REPEAT) + e13:SetRange(LOCATION_MZONE) + e13:SetCode(EVENT_PHASE+PHASE_END) + e13:SetCountLimit(1) + e13:SetOperation(c511000257.atkdefresetop) + c:RegisterEffect(e13) + --indestructable + local e17=Effect.CreateEffect(c) + e17:SetType(EFFECT_TYPE_SINGLE) + e17:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e17:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e17:SetRange(LOCATION_MZONE) + e17:SetValue(c511000257.indes) + c:RegisterEffect(e17) +end +function c511000257.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c511000257.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c511000257.adval(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_ONFIELD)*1000 +end +function c511000257.erascon(e) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000257.erastg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,dg:GetCount(),0,0) +end +function c511000257.erasop(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.Destroy(dg,REASON_EFFECT) +end +function c511000257.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c511000257.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511000257.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(c511000257.chainlm) +end +function c511000257.chainlm(e,rp,tp) + return e:GetHandler():IsAttribute(ATTRIBUTE_DEVINE) +end +function c511000257.efilter(e,te) + return te:IsActiveType(TYPE_EFFECT) and te:GetOwner()~=e:GetOwner() and not te:GetHandler():IsAttribute(ATTRIBUTE_DEVINE) +end +function c511000257.tgfilter(e,re) + if not re or not re:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return false end + return re:IsHasCategory(CATEGORY_TOHAND+CATEGORY_DESTROY+CATEGORY_REMOVE+CATEGORY_TODECK+CATEGORY_RELEASE+CATEGORY_TOGRAVE) +end +function c511000257.tgg(c,card) + return c:GetCardTarget() and c:GetCardTarget():IsContains(card) +end +function c511000257.atkdefresetop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c511000257.adval) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(c511000257.adval) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local eqg=c:GetEquipGroup() + local tgg=Duel.GetMatchingGroup(c511000257.tgg,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,c) + eqg:Merge(tgg) + if eqg:GetCount()>0 then + Duel.Destroy(eqg,REASON_EFFECT) + end +end +function c511000257.indes(e,re,rp) + return not re:GetOwner():IsCode(10000010) and re:GetOwner()~=e:GetOwner() +end +--MLD diff --git a/script/c511000258.lua b/script/c511000258.lua new file mode 100644 index 00000000..eb2aa985 --- /dev/null +++ b/script/c511000258.lua @@ -0,0 +1,37 @@ +--Treasure Cards of Safe Return +function c511000258.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000258,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000258.con) + e2:SetTarget(c511000258.tg) + e2:SetOperation(c511000258.op) + c:RegisterEffect(e2) +end +function c511000258.gfilter(c,tp) + return c:IsPreviousLocation(LOCATION_GRAVE) +end +function c511000258.con(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000258.gfilter,1,nil,tp) +end +function c511000258.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000258.op(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000259.lua b/script/c511000259.lua new file mode 100644 index 00000000..f929611d --- /dev/null +++ b/script/c511000259.lua @@ -0,0 +1,146 @@ +--邪神ドレッド・ルート +--マイケル・ローレンス・ディーによってスクリプト +function c511000259.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c511000259.ttcon) + e1:SetOperation(c511000259.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_LIMIT_SET_PROC) + c:RegisterEffect(e2) + --cannot special summon + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --half atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_SET_ATTACK_FINAL) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c511000259.atktg) + e4:SetValue(c511000259.atkval) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_SET_DEFENSE_FINAL) + e5:SetValue(c511000259.defval) + c:RegisterEffect(e5) + --Summon Cannot be Negated + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e7) + --summon success + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_SUMMON_SUCCESS) + e8:SetOperation(c511000259.sumsuc) + c:RegisterEffect(e8) + --control + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_CHANGE_CONTROL) + c:RegisterEffect(e9) + --immune effect + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_SINGLE) + e11:SetCode(EFFECT_IMMUNE_EFFECT) + e11:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e11:SetRange(LOCATION_MZONE) + e11:SetValue(c511000259.efilter) + c:RegisterEffect(e11) + --cannot be target + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_SINGLE) + e10:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e10:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e10:SetRange(LOCATION_MZONE) + e10:SetValue(c511000259.tgfilter) + c:RegisterEffect(e10) + --ATK/DEF effects are only applied until the End Phase + local e13=Effect.CreateEffect(c) + e13:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e13:SetProperty(EFFECT_FLAG_REPEAT) + e13:SetRange(LOCATION_MZONE) + e13:SetCode(EVENT_PHASE+PHASE_END) + e13:SetCountLimit(1) + e13:SetOperation(c511000259.atkdefresetop) + c:RegisterEffect(e13) + --indestructable + local e17=Effect.CreateEffect(c) + e17:SetType(EFFECT_TYPE_SINGLE) + e17:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e17:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e17:SetRange(LOCATION_MZONE) + e17:SetValue(c511000259.indes) + c:RegisterEffect(e17) +end +function c511000259.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c511000259.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c511000259.atktg(e,c) + return c~=e:GetHandler() +end +function c511000259.atkval(e,c) + return c:GetAttack()/2 +end +function c511000259.defval(e,c) + return c:GetDefense()/2 +end +function c511000259.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(c511000259.chainlm) +end +function c511000259.chainlm(e,rp,tp) + return e:GetHandler():IsAttribute(ATTRIBUTE_DEVINE) +end +function c511000259.efilter(e,te) + return te:IsActiveType(TYPE_EFFECT) and te:GetOwner()~=e:GetOwner() and not te:GetHandler():IsAttribute(ATTRIBUTE_DEVINE) +end +function c511000259.tgfilter(e,re) + if not re or not re:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return false end + return re:IsHasCategory(CATEGORY_TOHAND+CATEGORY_DESTROY+CATEGORY_REMOVE+CATEGORY_TODECK+CATEGORY_RELEASE+CATEGORY_TOGRAVE) +end +function c511000259.tgg(c,card) + return c:GetCardTarget() and c:GetCardTarget():IsContains(card) +end +function c511000259.atkdefresetop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(c:GetBaseDefense()) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local eqg=c:GetEquipGroup() + local tgg=Duel.GetMatchingGroup(c511000259.tgg,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,c) + eqg:Merge(tgg) + if eqg:GetCount()>0 then + Duel.Destroy(eqg,REASON_EFFECT) + end +end +function c511000259.indes(e,re,rp) + return not re:GetOwner():IsCode(10000010) +end +--MLD diff --git a/script/c511000260.lua b/script/c511000260.lua new file mode 100644 index 00000000..4a7cb22c --- /dev/null +++ b/script/c511000260.lua @@ -0,0 +1,109 @@ +--Polar God Emperor Loki +function c511000260.initial_effect(c) + --Synchro Summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),2) + c:EnableReviveLimit() + c:SetUniqueOnField(1,0,511000260) + --Negate Spell/Trap + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000260,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000260.negcon) + e1:SetTarget(c511000260.negtg) + e1:SetOperation(c511000260.negop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c511000260.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(67098114,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1) + e3:SetCondition(c511000260.spcon) + e3:SetTarget(c511000260.sptg) + e3:SetOperation(c511000260.spop) + c:RegisterEffect(e3) + --salvage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(67098114,2)) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c511000260.thcon) + e4:SetTarget(c511000260.thtg) + e4:SetOperation(c511000260.thop) + c:RegisterEffect(e4) +end +function c511000260.negcon(e,tp,eg,ep,ev,re,r,rp) + local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + local seq=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_SEQUENCE) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and Duel.GetAttacker()==e:GetHandler() + and ep~=tp and loc==LOCATION_SZONE and seq<5 and Duel.IsChainNegatable(ev) +end +function c511000260.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000260.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511000260.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local pos=c:GetPreviousPosition() + if c:IsReason(REASON_BATTLE) then pos=c:GetBattlePosition() end + if c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) + and c:IsPreviousLocation(LOCATION_ONFIELD) and bit.band(pos,POS_FACEUP)~=0 then + c:RegisterFlagEffect(511000260,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c511000260.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000260)~=0 +end +function c511000260.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,1,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000260.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),1,tp,tp,false,false,POS_FACEUP) + end +end +function c511000260.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511000260.thfilter(c) + return c:IsType(TYPE_TRAP) and c:IsAbleToHand() +end +function c511000260.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000260.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000260.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511000260.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511000260.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511000261.lua b/script/c511000261.lua new file mode 100644 index 00000000..e764773b --- /dev/null +++ b/script/c511000261.lua @@ -0,0 +1,105 @@ +--Raviel, Emperor of Phantasmal Demons +function c511000261.initial_effect(c) + c:EnableReviveLimit() + c:SetUniqueOnField(1,1,511000261) + --Cannot Special Summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511000261.spcon) + e2:SetOperation(c511000261.spop) + c:RegisterEffect(e2) + --Create Token + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000261,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetCondition(c511000261.tokencon) + e3:SetTarget(c511000261.tokentg) + e3:SetOperation(c511000261.tokenop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + --Tribute to Increase ATK + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000261,1)) + e5:SetCategory(CATEGORY_ATKCHANGE) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCost(c511000261.increaseatkcost) + e5:SetOperation(c511000261.increaseatkop) + c:RegisterEffect(e5) +end +function c511000261.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c511000261.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c511000261.tokenfilter(c,tp) + return c:IsControler(tp) +end +function c511000261.tokencon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000261.tokenfilter,1,nil,1-tp) +end +function c511000261.tokentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=eg:FilterCount(c511000261.tokenfilter,nil,1-tp) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,0,0) +end +function c511000261.tokenop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c511000261.tokenfilter,nil,1-tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 or not Duel.IsPlayerCanSpecialSummonMonster(tp,69890968,0,0x4011,1000,1000,1,RACE_FIEND,ATTRIBUTE_DARK) then return end + local i=0 + while i0 +end +function c511000264.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511000264.imcon) + e1:SetOperation(c511000264.imop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC_G) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000264.discon) + e1:SetOperation(c511000264.disop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + c:RegisterFlagEffect(511000263,RESET_EVENT+0x1fe0000,0,0) + end +end +function c511000264.cfilter(c) + return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and c:IsRace(RACE_DEVINE) +end +function c511000264.imcon(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_MONSTER) or not Duel.IsChainDisablable(ev) then return false end + if re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if g and g:IsExists(c511000264.cfilter,1,nil) then return true end + end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ex and tg~=nil and tc+tg:FilterCount(c511000264.cfilter,nil)-tg:GetCount()>0 then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOHAND) + if ex and tg~=nil and tc+tg:FilterCount(c511000264.cfilter,nil)-tg:GetCount()>0 then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_REMOVE) + if ex and tg~=nil and tc+tg:FilterCount(c511000264.cfilter,nil)-tg:GetCount()>0 then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TODECK) + if ex and tg~=nil and tc+tg:FilterCount(c511000264.cfilter,nil)-tg:GetCount()>0 then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_RELEASE) + if ex and tg~=nil and tc+tg:FilterCount(c511000264.cfilter,nil)-tg:GetCount()>0 then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE) + if ex and tg~=nil and tc+tg:FilterCount(c511000264.cfilter,nil)-tg:GetCount()>0 then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_CONTROL) + if ex and tg~=nil and tc+tg:FilterCount(c511000264.cfilter,nil)-tg:GetCount()>0 then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DISABLE) + if ex and tg~=nil and tc+tg:FilterCount(c511000264.cfilter,nil)-tg:GetCount()>0 then + return true + end + return false +end +function c511000264.imop(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(799183,0)) then + Duel.NegateEffect(ev) + end +end +function c511000264.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local pos=c:GetPreviousPosition() + if c:IsReason(REASON_BATTLE) then pos=c:GetBattlePosition() end + if c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) + and c:IsPreviousLocation(LOCATION_ONFIELD) and bit.band(pos,POS_FACEUP)~=0 then + c:RegisterFlagEffect(511000264,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c511000264.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000264)~=0 +end +function c511000264.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,1,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000264.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),1,tp,tp,false,false,POS_FACEUP) + end +end +function c511000264.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511000264.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000264.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c511000264.tgg(c,card) + return c:GetCardTarget() and c:GetCardTarget():IsContains(card) and not c:IsDisabled() +end +function c511000264.disfilter(c) + local eqg=c:GetEquipGroup():Filter(c511000264.dischk,nil) + local tgg=Duel.GetMatchingGroup(c511000264.tgg,0,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,c) + eqg:Merge(tgg) + return c:IsRace(RACE_DEVINE) and eqg:GetCount()>0 +end +function c511000264.dischk(c) + return not c:IsDisabled() +end +function c511000264.discon(e,c,og) + if c==nil then return true end + local tp=c:GetControler() + return Duel.IsExistingMatchingCard(c511000264.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c511000264.disop(e,tp,eg,ep,ev,re,r,rp,c,og) + Duel.Hint(HINT_CARD,0,511000264) + local g=Duel.GetMatchingGroup(c511000264.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local sg=Group.CreateGroup() + local tc=g:GetFirst() + while tc do + local eqg=tc:GetEquipGroup():Filter(c511000264.dischk,nil) + local tgg=Duel.GetMatchingGroup(c511000264.tgg,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,tc) + sg:Merge(eqg) + sg:Merge(tgg) + tc=g:GetNext() + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local dg=sg:Select(tp,1,99,nil) + local dc=dg:GetFirst() + while dc do + Duel.NegateRelatedChain(dc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + dc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + dc:RegisterEffect(e2) + if dc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + dc:RegisterEffect(e3) + end + dc=dg:GetNext() + end + Duel.BreakEffect() + return +end diff --git a/script/c511000265.lua b/script/c511000265.lua new file mode 100644 index 00000000..bb69dcf5 --- /dev/null +++ b/script/c511000265.lua @@ -0,0 +1,136 @@ +--Gorlag +function c511000265.initial_effect(c) + --check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_BATTLED) + e1:SetOperation(c511000265.checkop) + c:RegisterEffect(e1) + local g=Group.CreateGroup() + e1:SetLabelObject(g) + g:KeepAlive() + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetOperation(c511000265.checkop2) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(24104865,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000265.spcon) + e3:SetTarget(c511000265.sptg) + e3:SetOperation(c511000265.spop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c511000265.desop) + c:RegisterEffect(e4) + --Gain ATK for Each Fire Monster + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetValue(c511000265.val) + c:RegisterEffect(e5) + --Cannot Attack Directly + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e6) +end +function c511000265.cfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_FIRE) +end +function c511000265.val(e,c) + return Duel.GetMatchingGroupCount(c511000265.cfilter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*500 +end +function c511000265.checkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local t=Duel.GetAttackTarget() + if t and t~=c then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c511000265.checkop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabelObject():GetLabel()==0 then return end + local t=c:GetBattleTarget() + local g=e:GetLabelObject():GetLabelObject() + if c:GetFieldID()~=e:GetLabel() then + g:Clear() + e:SetLabel(c:GetFieldID()) + end + if aux.bdgcon(e,tp,eg,ep,ev,re,r,rp) then + g:AddCard(t) + t:RegisterFlagEffect(51100265,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + end +end +function c511000265.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFieldID()==e:GetLabelObject():GetLabel() +end +function c511000265.filter(c,e,tp) + return c:GetFlagEffect(51100265)~=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000265.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject():GetLabelObject():GetLabelObject() + if chk==0 then return g:IsExists(c511000265.filter,1,nil,e,tp) end + local dg=g:Filter(c511000265.filter,nil,e,tp) + g:Clear() + Duel.SetTargetCard(dg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,dg,dg:GetCount(),0,0) +end +function c511000265.sfilter(c,e,tp) + return c:IsRelateToEffect(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000265.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(c511000265.sfilter,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + if sg:GetCount()>ft then sg=sg:Select(tp,ft,ft,nil) end + local tc=sg:GetFirst() + local c=e:GetHandler() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + tc:RegisterFlagEffect(51100265,RESET_EVENT+0x1fe0000,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetValue(ATTRIBUTE_FIRE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + c:CreateRelation(tc,RESET_EVENT+0x1020000) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end +function c511000265.desfilter(c,rc) + return c:GetFlagEffect(51100265)~=0 and rc:IsRelateToCard(c) +end +function c511000265.desop(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(c511000265.desfilter,tp,LOCATION_MZONE,0,nil,e:GetHandler()) + Duel.Destroy(dg,REASON_EFFECT) +end diff --git a/script/c511000266.lua b/script/c511000266.lua new file mode 100644 index 00000000..aa36dc26 --- /dev/null +++ b/script/c511000266.lua @@ -0,0 +1,62 @@ +--Curse of Thorns +function c511000266.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,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000266.target) + e1:SetOperation(c511000266.activate) + c:RegisterEffect(e1) +end +function c511000266.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsType(TYPE_EFFECT) end + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,0,LOCATION_GRAVE,1,nil,TYPE_EFFECT) end + local g=Duel.SelectTarget(tp,Card.IsType,tp,0,LOCATION_GRAVE,1,1,nil,TYPE_EFFECT) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511000266.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() 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_GRAVE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511000266.rcon) + tc:RegisterEffect(e1,true) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_REMOVE) + e2:SetCondition(c511000266.descon) + e2:SetOperation(c511000266.desop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_TO_HAND) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e4) + local e5=e2:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) + end +end +function c511000266.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511000266.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return not tc +end +function c511000266.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000267.lua b/script/c511000267.lua new file mode 100644 index 00000000..b022e1d8 --- /dev/null +++ b/script/c511000267.lua @@ -0,0 +1,37 @@ +--100-Year Awakening +function c511000267.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000267.cost) + e1:SetTarget(c511000267.target) + e1:SetOperation(c511000267.activate) + c:RegisterEffect(e1) +end +function c511000267.cfilter(c) + return c:IsFaceup() and c:IsCode(511000266) and c:IsReleasable() +end +function c511000267.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000267.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,c511000267.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511000267.filter(c,e,tp) + return c:IsCode(511000268) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000267.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000267.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000267.activate(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 tc=Duel.SelectMatchingCard(tp,c511000267.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end diff --git a/script/c511000268.lua b/script/c511000268.lua new file mode 100644 index 00000000..2aa1f92a --- /dev/null +++ b/script/c511000268.lua @@ -0,0 +1,37 @@ +--Thorn Princess +function c511000268.initial_effect(c) + c:EnableReviveLimit() + --spsummon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000268.splimit) + c:RegisterEffect(e1) + --take control + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000268,0)) + e2:SetCategory(CATEGORY_CONTROL) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511000268.target) + e2:SetOperation(c511000268.operation) + c:RegisterEffect(e2) +end +function c511000268.splimit(e,se,sp,st) + return se:GetHandler():IsCode(511000267) +end +function c511000268.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511000268.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp) + end +end diff --git a/script/c511000269.lua b/script/c511000269.lua new file mode 100644 index 00000000..fdbbb8fa --- /dev/null +++ b/script/c511000269.lua @@ -0,0 +1,41 @@ +--Mystc Eruption +function c511000269.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000269.target) + e1:SetOperation(c511000269.activate) + c:RegisterEffect(e1) +end +function c511000269.filter(c,e,tp,tid) + return c:IsReason(REASON_DESTROY) and c:GetTurnID()==tid and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511000269.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return c511000269.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.IsExistingTarget(c511000269.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,LOCATION_GRAVE+LOCATION_REMOVED,1,nil,e,tp,tid) end + if Duel.IsExistingTarget(c511000269.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp,tid) and Duel.IsExistingTarget(c511000269.filter,tp,0,LOCATION_GRAVE+LOCATION_REMOVED,1,nil,e,tp,tid) then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,1000) + elseif Duel.IsExistingTarget(c511000269.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp,tid) then + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) + else + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) + end +end +function c511000269.activate(e,tp,eg,ep,ev,re,r,rp) + local tid=Duel.GetTurnCount() + if Duel.IsExistingTarget(c511000269.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp,tid) and Duel.IsExistingTarget(c511000269.filter,tp,0,LOCATION_GRAVE+LOCATION_REMOVED,1,nil,e,tp,tid) then + Duel.Damage(1-tp,1000,REASON_EFFECT) + Duel.Damage(tp,1000,REASON_EFFECT) + else + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + end +end diff --git a/script/c511000270.lua b/script/c511000270.lua new file mode 100644 index 00000000..5e964627 --- /dev/null +++ b/script/c511000270.lua @@ -0,0 +1,97 @@ +--Nibelung's Treasure +function c511000270.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000270.target) + e1:SetOperation(c511000270.activate) + c:RegisterEffect(e1) +end +function c511000270.thfilter(c,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return c:IsType(TYPE_SPELL) and (not condition or condition(te,1-tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,1-tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,1-tp,eg,ep,ev,re,r,rp,0)) and c:IsCode(511000271) + and Duel.IsExistingMatchingCard(c511000270.filter,tp,0,LOCATION_MZONE,1,nil,te) +end +function c511000270.filter(c,e) + return c:IsFaceup() and c:IsCanBeEffectTarget(e) +end +function c511000270.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000270.thfilter,tp,LOCATION_DECK,0,1,nil,tp,eg,ep,ev,re,r,rp) and Duel.IsPlayerCanDraw(tp,6) + and Duel.GetLocationCount(1-tp,LOCATION_SZONE)>0 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(5) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,5) +end +function c511000270.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(1-tp,LOCATION_SZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(c511000270.thfilter,tp,LOCATION_DECK,0,nil,tp,eg,ep,ev,re,r,rp) + local g=sg:Select(tp,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local opt=0 + if te then + local con=te:GetCondition() + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + Duel.ClearTargetCard() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,1-tp,eg,ep,ev,re,r,rp,1) end + local sg=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local sc=sg:GetFirst() + while sc do + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetValue(1) + e2:SetReset(RESET_CHAIN) + sc:RegisterEffect(e2) + sc=sg:GetNext() + end + if tg then tg(te,1-tp,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + Duel.BreakEffect() + if op then op(te,1-tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + Duel.ShuffleDeck(tp) + Duel.Draw(p,d,REASON_EFFECT) + end +end diff --git a/script/c511000271.lua b/script/c511000271.lua new file mode 100644 index 00000000..6b42f5e7 --- /dev/null +++ b/script/c511000271.lua @@ -0,0 +1,106 @@ +--Nibelung's Ring +function c511000271.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(c511000271.target) + e1:SetOperation(c511000271.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --cannot attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e3) + --cannot tribute + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UNRELEASABLE_SUM) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e5) + --Pos limit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_EQUIP) + e6:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + c:RegisterEffect(e6) + --draw 2 + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(511000271,0)) + e7:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PREDRAW) + e7:SetRange(LOCATION_SZONE) + e7:SetCondition(c511000271.drcon) + e7:SetTarget(c511000271.drtg) + e7:SetOperation(c511000271.drop) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_EQUIP) + e8:SetCode(EFFECT_CANNOT_TRIGGER) + c:RegisterEffect(e8) +end +function c511000271.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 c511000271.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511000271.drcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetDrawCount(tp)>0 +end +function c511000271.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511000271.drop(e,tp,eg,ep,ev,re,r,rp) + _replace_count=_replace_count+1 + if _replace_count>_replace_max or not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local g=Duel.GetDecktopGroup(p,d) + if Duel.Draw(p,d,REASON_EFFECT)==2 then + Duel.ConfirmCards(1-p,g) + local sg=g:Filter(Card.IsType,nil,TYPE_MONSTER) + if sg:GetCount()>0 then + if sg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + sg=sg:Select(p,1,1,nil) + end + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + end + Duel.ShuffleHand(p) + end +end diff --git a/script/c511000272.lua b/script/c511000272.lua new file mode 100644 index 00000000..609765b2 --- /dev/null +++ b/script/c511000272.lua @@ -0,0 +1,30 @@ +--Snowfall Sword +function c511000272.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000272.condition) + e1:SetTarget(c511000272.target) + e1:SetOperation(c511000272.activate) + c:RegisterEffect(e1) +end +function c511000272.condition(e,tp,eg,ep,ev,re,r,rp) + local bc=Duel.GetAttacker() + return bc~=nil and bc:IsRace(RACE_WARRIOR) and bc:GetEquipCount()~=0 and tp~=ep + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511000272.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000272.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000273.lua b/script/c511000273.lua new file mode 100644 index 00000000..9d21440b --- /dev/null +++ b/script/c511000273.lua @@ -0,0 +1,38 @@ +--Wotan's Judgment +function c511000273.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCost(c511000273.cost) + e1:SetCondition(c511000273.condition) + e1:SetTarget(c511000273.target) + e1:SetOperation(c511000273.activate) + c:RegisterEffect(e1) +end +function c511000273.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToDeck() +end +function c511000273.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local dg=Duel.GetDecktopGroup(tp,1) + if chk==0 then return Duel.IsExistingMatchingCard(c511000273.filter,tp,LOCATION_HAND,0,1,nil) and dg:GetFirst():IsAbleToHand() end + local hg=Duel.SelectMatchingCard(tp,c511000273.filter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,hg) + Duel.SendtoHand(dg,nil,REASON_COST) + Duel.SendtoDeck(hg:GetFirst(),nil,0,REASON_COST) + Duel.ShuffleDeck(tp) +end +function c511000273.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000273.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() end +end +function c511000273.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511000274.lua b/script/c511000274.lua new file mode 100644 index 00000000..8d225c4e --- /dev/null +++ b/script/c511000274.lua @@ -0,0 +1,29 @@ +--Fricka's Mediation +function c511000274.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000274.cost) + e1:SetOperation(c511000274.activate) + c:RegisterEffect(e1) +end +function c511000274.cfilter(c) + return c:IsCode(511000273) and c:IsAbleToRemoveAsCost() +end +function c511000274.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000274.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000274.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511000274.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000275.lua b/script/c511000275.lua new file mode 100644 index 00000000..4909a8b0 --- /dev/null +++ b/script/c511000275.lua @@ -0,0 +1,124 @@ +--Numeron Network +function c511000275.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --activate opponent's turn + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000275,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_DRAW) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1) + e2:SetCondition(c511000275.accon) + e2:SetTarget(c511000275.actg) + e2:SetOperation(c511000275.acop) + c:RegisterEffect(e2) + --no remove overlay + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000275,1)) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_OVERLAY_REMOVE_REPLACE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000275.rcon) + c:RegisterEffect(e3) + --activate opponent's turn + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(12079734,0)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e4:SetCondition(c511000275.numcon) + e4:SetTarget(c511000275.numtg) + e4:SetOperation(c511000275.numop) + c:RegisterEffect(e4) + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(93016201,0)) + e6:SetType(EFFECT_TYPE_QUICK_O) + e6:SetCode(EVENT_SPSUMMON) + e6:SetRange(LOCATION_SZONE) + e6:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e6:SetCondition(c511000275.numcon) + e6:SetTarget(c511000275.numtg) + e6:SetOperation(c511000275.numop) + c:RegisterEffect(e6) +end +function c511000275.accon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 +end +function c511000275.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end +end +function c511000275.acop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(c,EVENT_CHAIN_SOLVED,c:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end +end +function c511000275.rcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_COST)~=0 and re:GetHandler():IsType(TYPE_XYZ) and ep==e:GetOwnerPlayer() and re:GetHandler():GetOverlayCount()>=ev-1 + and re:GetHandler():IsSetCard(0x1ff) +end +function c511000275.numcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==1 +end +function c511000275.tgfilter(c,e,tp,eg,ep,ev,re,r,rp,chain) + local te=c:GetActivateEffect() + if not c:IsSetCard(0x1ff) or not c:IsAbleToGrave() or not te then return end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + if te:GetCode()==EVENT_CHAINING then + if chain<=0 then return false end + local te2=Duel.GetChainInfo(chain,CHAININFO_TRIGGERING_EFFECT) + local tc=te2:GetHandler() + local g=Group.FromCards(tc) + local p=tc:GetControler() + return (not condition or condition(e,tp,g,p,chain,te2,REASON_EFFECT,p)) and (not cost or cost(e,tp,g,p,chain,te2,REASON_EFFECT,p,0)) + and (not target or target(e,tp,g,p,chain,te2,REASON_EFFECT,p,0)) + elseif (te:GetCode()==EVENT_FREE_CHAIN and e:GetCode()==EVENT_FREE_CHAIN) + or (te:GetCode()==EVENT_SPSUMMON and e:GetCode()==EVENT_SPSUMMON) then + return (not condition or condition(e,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(e,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(e,tp,eg,ep,ev,re,r,rp,0)) + else + return false + end +end +function c511000275.numtg(e,tp,eg,ep,ev,re,r,rp,chk) + local chain=Duel.GetCurrentChain() + if chk==0 then return Duel.IsExistingMatchingCard(c511000275.tgfilter,tp,LOCATION_DECK,0,1,nil,e,tp,eg,ep,ev,re,r,rp,chain) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c511000275.numop(e,tp,eg,ep,ev,re,r,rp) + Duel.RegisterFlagEffect(tp,511001666,RESET_CHAIN,0,1) + Duel.RegisterFlagEffect(tp,95000027,RESET_CHAIN,0,1) + local chain=Duel.GetCurrentChain()-1 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000275.tgfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,eg,ep,ev,re,r,rp,chain) + local tc=g:GetFirst() + if tc and Duel.SendtoGrave(g,REASON_EFFECT)>0 then + local te=tc:GetActivateEffect() + local cost=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if te:GetCode()==EVENT_CHAINING then + local te2=Duel.GetChainInfo(chain,CHAININFO_TRIGGERING_EFFECT) + local tc=te2:GetHandler() + local g=Group.FromCards(tc) + local p=tc:GetControler() + if co then co(e,tp,g,p,chain,te2,REASON_EFFECT,p,1) end + if tg then tg(e,tp,g,p,chain,te2,REASON_EFFECT,p,1) end + if op then op(e,tp,g,p,chain,te2,REASON_EFFECT,p) end + else + if cost then cost(e,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end + end +end diff --git a/script/c511000276.lua b/script/c511000276.lua new file mode 100644 index 00000000..843253cc --- /dev/null +++ b/script/c511000276.lua @@ -0,0 +1,74 @@ +--Numeron Direct +function c511000276.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000276.con) + e1:SetTarget(c511000276.tg) + e1:SetOperation(c511000276.op) + c:RegisterEffect(e1) +end +function c511000276.cfilter(c) + return c:IsFaceup() and c:IsCode(511000275) +end +function c511000276.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000276.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(511000275) +end +function c511000276.filter(c,e,tp) + return c:IsAttackBelow(1000) and c:IsSetCard(0x1ff) and c:IsType(TYPE_XYZ) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000276.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511000276.filter,tp,LOCATION_EXTRA,0,4,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000276.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511000276.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()<=3 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,4,4,nil) + if sg:GetCount()>0 then + local fid=e:GetHandler():GetFieldID() + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(51100276,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() + sg:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(sg) + e1:SetCondition(c511000276.rmcon) + e1:SetOperation(c511000276.rmop) + Duel.RegisterEffect(e1,tp) + end +end +function c511000276.rmfilter(c,fid) + return c:GetFlagEffectLabel(51100276)==fid +end +function c511000276.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511000276.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511000276.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511000276.rmfilter,nil,e:GetLabel()) + g:DeleteGroup() + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511000277.lua b/script/c511000277.lua new file mode 100644 index 00000000..08f48c12 --- /dev/null +++ b/script/c511000277.lua @@ -0,0 +1,131 @@ +--Number C1: Gate of Chaos Numeron - Shunya +function c511000277.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,2,4,c511000277.ovfilter,aux.Stringid(511000277,0),3,c511000277.xyzop) + c:EnableReviveLimit() + --selfdes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000277.descon) + c:RegisterEffect(e1) + --banish + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000277,1)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetLabel(0) + e2:SetCondition(c511000277.bancon) + e2:SetTarget(c511000277.bantg) + e2:SetOperation(c511000277.banop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000277,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_REMOVED) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c511000277.spcon) + e3:SetTarget(c511000277.sptg) + e3:SetOperation(c511000277.spop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511000277.indes) + c:RegisterEffect(e4) +end +c511000277.xyz_number=1 +function c511000277.cfilter(c) + return c:IsFaceup() and c:IsCode(511000275) +end +function c511000277.ovfilter(c) + return c:IsFaceup() and c:IsCode(511000230) +end +function c511000277.xyzop(e,tp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000277.cfilter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(511000275) end +end +function c511000277.descon(e) + return not Duel.IsEnvironment(511000275) +end +function c511000277.bancon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c511000277.bantg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511000277.damfilter(c,e) + return c:IsFaceup() and c:IsAbleToRemove() +end +function c511000277.banop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local chk=c:IsRelateToEffect(e) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local gd=Duel.GetMatchingGroup(c511000277.damfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local atk=0 + local bc=gd:GetFirst() + while bc do + atk=atk+bc:GetAttack() + bc=gd:GetNext() + end + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + if not chk then return end + c:RegisterFlagEffect(511000277,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,1) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000277,3)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetLabel(atk) + e4:SetCondition(c511000277.damcon) + e4:SetCost(c511000277.damcost) + e4:SetTarget(c511000277.damtg) + e4:SetOperation(c511000277.damop) + c:RegisterEffect(e4) +end +function c511000277.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetTurnID()~=Duel.GetTurnCount() and tp==Duel.GetTurnPlayer() and c:GetFlagEffect(511000277)>0 +end +function c511000277.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + c:ResetFlagEffect(511000277) +end +function c511000277.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP) + end +end +function c511000277.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000277.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511000277.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c511000277.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000277.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000278.lua b/script/c511000278.lua new file mode 100644 index 00000000..fa68276d --- /dev/null +++ b/script/c511000278.lua @@ -0,0 +1,25 @@ +--Mind Control (Anime) +function c511000278.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000278.target) + e1:SetOperation(c511000278.activate) + c:RegisterEffect(e1) +end +function c511000278.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:GetControler()~=tp and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511000278.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp,PHASE_END,2) + end +end diff --git a/script/c511000279.lua b/script/c511000279.lua new file mode 100644 index 00000000..9e3d6536 --- /dev/null +++ b/script/c511000279.lua @@ -0,0 +1,103 @@ +--Z-ONE (Anime) +function c511000279.initial_effect(c) + --salvage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000279,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c511000279.accon) + e2:SetTarget(c511000279.actg) + e2:SetOperation(c511000279.acop) + c:RegisterEffect(e2) +end +function c511000279.accon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEDOWN) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) + and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000279.filter(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local cost=te:GetCost() + local target=te:GetTarget() + return (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) and c:IsAbleToRemove() +end +function c511000279.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000279.filter,tp,0x13,0,1,nil,e,tp,eg,ep,ev,re,r,rp) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,0x13) +end +function c511000279.acop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000279.filter,tp,0x13,0,1,1,nil,e,tp,eg,ep,ev,re,r,rp) + local tc=g:GetFirst() + if tc and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local te=tc:GetActivateEffect() + if not te then return end + local code=tc:GetOriginalCode() + local tpe=tc:GetType() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetValue(code) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + Duel.MoveSequence(c,5) + end + Duel.ClearTargetCard() + c:CreateEffectRelation(e) + local tg=te:GetTarget() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + c:CancelToGrave(false) + else + c:CancelToGrave(true) + c:CopyEffect(code,RESET_EVENT+0x1fc0000,1) + end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(e) + etc=g:GetNext() + end + end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + c:ReleaseEffectRelation(e) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(e) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511000280.lua b/script/c511000280.lua new file mode 100644 index 00000000..012afc89 --- /dev/null +++ b/script/c511000280.lua @@ -0,0 +1,63 @@ +--Double Arms +function c511000280.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(c511000280.target) + e1:SetOperation(c511000280.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --double + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAINING) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000280.damcon) + e3:SetOperation(c511000280.damop) + c:RegisterEffect(e3) +end +function c511000280.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 c511000280.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 c511000280.damcon(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + if eq~=re:GetHandler() then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex then return true end + if not ex then return false end +end +function c511000280.damop(e,tp,eg,ep,ev,re,r,rp) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetValue(c511000280.dammul) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) +end +function c511000280.dammul(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + return val*2 +end diff --git a/script/c511000281.lua b/script/c511000281.lua new file mode 100644 index 00000000..6f1a961c --- /dev/null +++ b/script/c511000281.lua @@ -0,0 +1,61 @@ +--Aqua Gate +function c511000281.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000281,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_BOTH_SIDE+EFFECT_FLAG_REPEAT) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetLabel(0) + e2:SetTarget(c511000281.target) + e2:SetOperation(c511000281.activate) + c:RegisterEffect(e2) + --reset + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000281.rescon) + e3:SetOperation(c511000281.resop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) +end +function c511000281.filter(c) + return c:IsFacedown() +end +function c511000281.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + local p=Duel.GetTurnPlayer() + local g=Duel.GetMatchingGroup(c511000281.filter,1-p,LOCATION_SZONE,0,nil) + local ct=g:GetCount() + local ctn=e:GetLabel() + if chkc then return chkc==tg end + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.IsExistingMatchingCard(c511000281.filter,1-p,LOCATION_SZONE,0,1,nil) + and tg:IsOnField() and tg:IsCanBeEffectTarget(e) and ct>0 and ctn0 and ctn0 +end +function c511000281.resop(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetLabel(0) +end diff --git a/script/c511000282.lua b/script/c511000282.lua new file mode 100644 index 00000000..25728128 --- /dev/null +++ b/script/c511000282.lua @@ -0,0 +1,40 @@ +--Impact Revive +function c511000282.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000282.condition) + e1:SetTarget(c511000282.target) + e1:SetOperation(c511000282.activate) + c:RegisterEffect(e1) +end +function c511000282.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c511000282.filter(c,e,tp,tid) + return bit.band(c:GetReason(),REASON_BATTLE)~=0 and c:GetTurnID()==tid + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and Duel.GetLocationCount(c:GetOwner(),LOCATION_MZONE)>0 +end +function c511000282.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511000282.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.IsExistingTarget(c511000282.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000282.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp,tid) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000282.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tc:GetOwner(),tc:GetOwner(),true,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000283.lua b/script/c511000283.lua new file mode 100644 index 00000000..b736f225 --- /dev/null +++ b/script/c511000283.lua @@ -0,0 +1,43 @@ +--Purity of the Cemetery +function c511000283.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000283,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetProperty(EFFECT_FLAG_REPEAT) + e2:SetCountLimit(1) + e2:SetCondition(c511000283.damcon) + e2:SetOperation(c511000283.damop) + c:RegisterEffect(e2) + --selfdes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511000283.sdcon2) + c:RegisterEffect(e3) +end +function c511000283.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000283.filter(c) + return c:IsType(TYPE_MONSTER) +end +function c511000283.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c511000283.filter,tp,0,LOCATION_GRAVE,nil) + local dam=g:GetCount()*100 + Duel.Damage(1-tp,dam,REASON_EFFECT) +end +function c511000283.sdcon2(e) + return Duel.IsExistingMatchingCard(c511000283.filter,e:GetHandler():GetControler(),LOCATION_GRAVE,0,1,nil) +end diff --git a/script/c511000284.lua b/script/c511000284.lua new file mode 100644 index 00000000..d7274c5b --- /dev/null +++ b/script/c511000284.lua @@ -0,0 +1,30 @@ +--Guardian Force +function c511000284.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511000284.condition) + e1:SetTarget(c511000284.target) + e1:SetOperation(c511000284.activate) + c:RegisterEffect(e1) +end +function c511000284.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_MONSTER) + and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) and rp~=tp +end +function c511000284.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000284.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000285.lua b/script/c511000285.lua new file mode 100644 index 00000000..93ad95ee --- /dev/null +++ b/script/c511000285.lua @@ -0,0 +1,79 @@ +--Egyptian God Slime + --ジェムナイト·ジルコニア +function c511000285.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,26905245,31709826,true,true) + --Revival + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000285.regcon) + e1:SetOperation(c511000285.regop) + c:RegisterEffect(e1) + --change name + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(31709826) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c511000285.atkop) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetDescription(aux.Stringid(45894482,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_EVENT_PLAYER+EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(511000285) + e4:SetTarget(c511000285.sptg) + e4:SetOperation(c511000285.spop) + c:RegisterEffect(e4) +end +function c511000285.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511000285.regop(e,tp,eg,ep,ev,re,r,rp) + Duel.RaiseSingleEvent(e:GetHandler(),511000285,e,r,rp,e:GetHandler():GetPreviousControler(),0) +end +function c511000285.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=c:GetMaterial() + local sum=0 + local tc=g:GetFirst() + while tc do + if tc:IsCode(26905245) then + local def=tc:GetPreviousDefenseOnField() + if def<0 then def=0 end + sum=sum+def + end + tc=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(sum) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) +end +function c511000285.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000285.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_DEFENSE) + end +end diff --git a/script/c511000288.lua b/script/c511000288.lua new file mode 100644 index 00000000..f868a4ad --- /dev/null +++ b/script/c511000288.lua @@ -0,0 +1,25 @@ +--Gem Fortress +function c511000288.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000288.condition) + e1:SetOperation(c511000288.activate) + c:RegisterEffect(e1) +end +function c511000288.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1034) +end +function c511000288.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000288.cfilter,tp,LOCATION_ONFIELD,0,4,nil) +end +function c511000288.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:SetTargetRange(0,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000289.lua b/script/c511000289.lua new file mode 100644 index 00000000..333136da --- /dev/null +++ b/script/c511000289.lua @@ -0,0 +1,42 @@ +--Sapphire Revive +function c511000289.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000289.condition) + e1:SetTarget(c511000289.target) + e1:SetOperation(c511000289.operation) + c:RegisterEffect(e1) +end +function c511000289.cfilter(c) + return c:IsFaceup() and c:IsCode(7093411) +end +function c511000289.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000289.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000289.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000289.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511000289.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000289.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(511000289,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c511000289.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SpecialSummonStep(g1:GetFirst(),0,tp,tp,false,false,POS_FACEUP) +end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000289.filter,1-tp,LOCATION_GRAVE,0,1,nil,e,1-tp) + and Duel.SelectYesNo(1-tp,aux.Stringid(511000289,1)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(1-tp,c511000289.filter,1-tp,LOCATION_GRAVE,0,1,1,nil,e,1-tp) + Duel.SpecialSummonStep(g2:GetFirst(),0,1-tp,1-tp,false,false,POS_FACEUP) +end + Duel.SpecialSummonComplete() +end diff --git a/script/c511000290.lua b/script/c511000290.lua new file mode 100644 index 00000000..b9439d4e --- /dev/null +++ b/script/c511000290.lua @@ -0,0 +1,71 @@ +--Cobal, Excavator of the Dark World +function c511000290.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c511000290.con) + e1:SetOperation(c511000290.op) + c:RegisterEffect(e1) + --add + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000290,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511000290.addcost) + e2:SetTarget(c511000290.addtg) + e2:SetOperation(c511000290.addop) + c:RegisterEffect(e2) +end +function c511000290.con(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_BATTLE)>0 and ep==tp +end +function c511000290.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000290,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND) + e1:SetTarget(c511000290.sptg) + e1:SetOperation(c511000290.spop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511000290.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000290.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c511000290.addcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000290.filter(c) + return c:IsSetCard(0x6) and c:IsAbleToHand() +end +function c511000290.addtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and c98494543.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000290.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511000290.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511000290.addop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511000291.lua b/script/c511000291.lua new file mode 100644 index 00000000..753ddda7 --- /dev/null +++ b/script/c511000291.lua @@ -0,0 +1,19 @@ +--Infernity Pawn +function c511000291.initial_effect(c) + --cannot draw + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_DRAW) + e1:SetRange(LOCATION_GRAVE) + e1:SetTargetRange(1,0) + e1:SetCondition(c511000291.con) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_DRAW_COUNT) + e2:SetValue(0) + c:RegisterEffect(e2) +end +function c511000291.con(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_HAND,0)==0 +end diff --git a/script/c511000292.lua b/script/c511000292.lua new file mode 100644 index 00000000..8cc9052b --- /dev/null +++ b/script/c511000292.lua @@ -0,0 +1,26 @@ +--Infernity Sage +function c511000292.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000292,0)) + e1:SetCategory(CATEGORY_HANDES) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000292.target) + e1:SetOperation(c511000292.operation) + c:RegisterEffect(e1) +end +function c511000292.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(Card.IsDiscardable,tp,LOCATION_HAND,0,nil) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==g:GetCount() end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,g:GetCount()) +end +function c511000292.operation(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 + Duel.SendtoGrave(g,REASON_DISCARD+REASON_EFFECT) + end +end diff --git a/script/c511000293.lua b/script/c511000293.lua new file mode 100644 index 00000000..bdf0724c --- /dev/null +++ b/script/c511000293.lua @@ -0,0 +1,100 @@ +--Don Thousand's Throne (Anime) +function c511000293.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --check + local ch=Effect.CreateEffect(c) + ch:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ch:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ch:SetRange(LOCATION_SZONE) + ch:SetCode(EVENT_DAMAGE) + ch:SetCondition(c511000293.checkcon) + ch:SetOperation(c511000293.checkop) + c:RegisterEffect(ch) + --recover + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000293,0)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetLabelObject(ch) + e2:SetCountLimit(1) + e2:SetTarget(c511000293.rectg) + e2:SetOperation(c511000293.recop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000293,1)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetCondition(c511000293.spcon) + e3:SetCost(c511000293.spcost) + e3:SetTarget(c511000293.sptg) + e3:SetOperation(c511000293.spop) + c:RegisterEffect(e3) +end +function c511000293.checkcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511000293.checkop(e,tp,eg,ep,ev,re,r,rp) + local val=e:GetLabel()+ev + e:SetLabel(val) +end +function c511000293.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,e:GetLabelObject():GetLabel()) +end +function c511000293.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Recover(p,e:GetLabelObject():GetLabel(),REASON_EFFECT) + e:GetLabelObject():SetLabel(0) +end +function c511000293.spcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + local a=Duel.GetAttacker() + local p=e:GetHandler():GetControler() + return at:IsControler(tp) and at:IsFaceup() and at:IsType(TYPE_XYZ) and a:GetAttack()>Duel.GetLP(p) +end +function c511000293.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000293.filter(c,e,tp,rank) + local rk=c:GetRank() + return (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) and rk==rank+1 +end +function c511000293.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local at=Duel.GetAttackTarget() + if chk==0 then + local rank=Duel.GetAttackTarget():GetRank() + return rank and Duel.IsExistingMatchingCard(c511000293.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,rank) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000293.spop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.NegateAttack() then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_END,1,1) + Duel.SkipPhase(1-tp,PHASE_MAIN2,RESET_PHASE+PHASE_END,1) + local tc=Duel.GetAttackTarget() + if tc:IsFacedown() or not tc:IsRelateToBattle() or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000293.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetRank()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c511000294.lua b/script/c511000294.lua new file mode 100644 index 00000000..a319abac --- /dev/null +++ b/script/c511000294.lua @@ -0,0 +1,145 @@ +--Number C1000: Numerronius +function c511000294.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,12,5) + c:EnableReviveLimit() + --negate and cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(c511000294.negfilter) + c:RegisterEffect(e1) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c511000294.negfilter) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c511000294.desreptg) + e4:SetOperation(c511000294.desrepop) + c:RegisterEffect(e4) + --destroy and summon C + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetDescription(aux.Stringid(511000294,2)) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_FREE_CHAIN) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCost(c511000294.descost) + e5:SetTarget(c511000294.destg) + e5:SetOperation(c511000294.desop) + c:RegisterEffect(e5) + --destroy and summon Battle + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetTarget(c511000294.bptg) + e6:SetOperation(c511000294.bpop) + c:RegisterEffect(e6) + --battle indestructable + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e7:SetValue(c511000294.indes) + c:RegisterEffect(e7) +end +c511000294.xyz_number=1000 +function c511000294.negfilter(e,c) + return c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296) +end +function c511000294.repfilter(c) + return not c:IsStatus(STATUS_DESTROY_CONFIRMED+STATUS_BATTLE_DESTROYED) +end +function c511000294.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) and c:IsOnField() and c:IsFaceup() + and Duel.IsExistingMatchingCard(c511000294.repfilter,tp,LOCATION_MZONE,0,1,c) end + if Duel.SelectYesNo(tp,aux.Stringid(511000294,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESREPLACE) + local g=Duel.SelectMatchingCard(tp,c511000294.repfilter,tp,LOCATION_MZONE,0,1,1,c) + e:SetLabelObject(g:GetFirst()) + Duel.HintSelection(g) + g:GetFirst():SetStatus(STATUS_DESTROY_CONFIRMED,true) + return true + else return false end +end +function c511000294.desrepop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + tc:SetStatus(STATUS_DESTROY_CONFIRMED,false) + Duel.Destroy(tc,REASON_EFFECT+REASON_REPLACE) +end +function c511000294.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000294.desfilter(c,e,tp) + return Duel.IsExistingMatchingCard(c511000294.xyzfilter,c:GetControler(),LOCATION_EXTRA,0,1,nil,e,tp) +end +function c511000294.xyzfilter(c,e,tp) + return (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000294.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000294.desfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000294.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000294.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000294.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local p=tc:GetControler() + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.BreakEffect() + if p~=tp then + local g2=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) + Duel.ConfirmCards(tp,g2) + end + local g=Duel.SelectMatchingCard(tp,c511000294.xyzfilter,p,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,p,true,false,POS_FACEUP) + end + end + end +end +function c511000294.bptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511000294.spfilter(c,e,tp,tid) + return c:GetTurnID()==tid and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE) +end +function c511000294.bpop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + Duel.BreakEffect() + local tid=Duel.GetTurnCount() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetMatchingGroup(c511000294.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,e,tp,tid) + if g:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + g=g:Select(tp,ft,ft,nil) + end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) +end +function c511000294.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000295.lua b/script/c511000295.lua new file mode 100644 index 00000000..edc3cddf --- /dev/null +++ b/script/c511000295.lua @@ -0,0 +1,197 @@ +--Numeron Chaos Ritual +function c511000295.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000295.condition) + e1:SetTarget(c511000295.target) + e1:SetOperation(c511000295.activate) + c:RegisterEffect(e1) + if not c511000295.global_check then + c511000295.global_check=true + c511000295[0]=false + c511000295[1]=false + c511000295[2]=Group.CreateGroup() + c511000295[2]:KeepAlive() + c511000295[3]=Group.CreateGroup() + c511000295[3]:KeepAlive() + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(c511000295.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511000295.clear) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge3:SetCode(EVENT_REMOVE) + ge3:SetOperation(c511000295.matchk) + Duel.RegisterEffect(ge3,0) + local ge4=ge3:Clone() + ge4:SetCode(EVENT_TO_HAND) + Duel.RegisterEffect(ge4,0) + local ge5=ge3:Clone() + ge5:SetCode(EVENT_TO_DECK) + Duel.RegisterEffect(ge5,0) + local ge6=ge3:Clone() + ge6:SetCode(EVENT_TO_GRAVE) + Duel.RegisterEffect(ge6,0) + local ge7=ge3:Clone() + ge7:SetCode(EVENT_LEAVE_FIELD) + Duel.RegisterEffect(ge7,0) + end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e2:SetCode(EVENT_ADJUST) + e2:SetCountLimit(1) + e2:SetOperation(c511000295.chk) + e2:SetLabelObject(e1) + Duel.RegisterEffect(e2,0) +end +function c511000295.cfilter(c) + return c:GetPreviousCodeOnField()==511000277 +end +function c511000295.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000295.cfilter,nil) + local tc=g:GetFirst() + while tc do + c511000295[tc:GetPreviousControler()]=true + tc=g:GetNext() + end +end +function c511000295.matchk(e,tp,eg,ep,ev,re,r,rp) + c511000295[2]:Clear() + c511000295[3]:Clear() + local g1=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x48) + local g2=Duel.GetMatchingGroup(Card.IsSetCard,1-tp,LOCATION_GRAVE,0,nil,0x48) + local tc1=g1:GetFirst() + while tc1 do + local token=Duel.CreateToken(tp,tc1:GetOriginalCode()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_XYZ_LEVEL) + e1:SetValue(12) + token:RegisterEffect(e1) + c511000295[tp+2]:AddCard(token) + tc1=g1:GetNext() + end + local tc2=g2:GetFirst() + while tc2 do + local token=Duel.CreateToken(1-tp,tc2:GetOriginalCode()) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_XYZ_LEVEL) + e2:SetValue(12) + token:RegisterEffect(e2) + c511000295[1-tp+2]:AddCard(token) + tc2=g2:GetNext() + end +end +function c511000295.clear(e,tp,eg,ep,ev,re,r,rp) + c511000295[0]=false + c511000295[1]=false +end +function c511000295.chk(e,tp,eg,ep,ev,re,r,rp) + local tck=Duel.CreateToken(tp,419) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(12) + tck:RegisterEffect(e1) + e:GetLabelObject():SetLabelObject(tck) +end +function c511000295.condition(e,tp,eg,ep,ev,re,r,rp) + return c511000295[tp] +end +function c511000295.mfilter(c,xyz,tck) + return xyz.xyz_filter(tck) and c:IsCode(511000275) +end +function c511000295.matfilter(c,xyz) + return xyz.xyz_filter(c) and c:IsSetCard(0x48) +end +function c511000295.xyzfilter(c,e,tp,tck) + return c:GetRank()==12 and (c.minxyzct==5 or c.maxxyzct>=5) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) + and Duel.IsExistingMatchingCard(c511000295.mfilter,tp,LOCATION_GRAVE,0,1,nil,c,tck) + and c511000295[tp+2]:IsExists(c511000295.matfilter,4,nil,c) +end +function c511000295.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tck=e:GetLabelObject() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000295.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,tck) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000295.activate(e,tp,eg,ep,ev,re,r,rp) + local tck=e:GetLabelObject() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local xyzg=Duel.GetMatchingGroup(c511000295.xyzfilter,tp,LOCATION_EXTRA,0,nil,e,tp,tck) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:Select(tp,1,1,nil):GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local mat1=Duel.SelectMatchingCard(tp,c511000295.mfilter,tp,LOCATION_GRAVE,0,1,1,nil,xyz,tck) + local g=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x48) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_XYZ_LEVEL) + e1:SetValue(12) + e1:SetReset(RESET_CHAIN) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + local mat2=g:FilterSelect(tp,c511000295.matfilter,4,4,nil,xyz) + mat1:Merge(mat2) + Duel.HintSelection(mat1) + xyz:SetMaterial(mat1) + Duel.Overlay(xyz,mat1) + Duel.SpecialSummon(xyz,SUMMON_TYPE_XYZ,tp,tp,true,false,POS_FACEUP) + xyz:CompleteProcedure() + end +end diff --git a/script/c511000296.lua b/script/c511000296.lua new file mode 100644 index 00000000..a9aa2c0c --- /dev/null +++ b/script/c511000296.lua @@ -0,0 +1,126 @@ +--Number Ci1000: Numerronius Numerronia +function c511000296.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,13,5) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000296,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_EXTRA) + e1:SetProperty(EFFECT_FLAG_CHAIN_UNIQUE+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511000296.spcon) + e1:SetTarget(c511000296.sptg) + e1:SetOperation(c511000296.spop) + c:RegisterEffect(e1) + --indes effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(1) + c:RegisterEffect(e2) + --cannot attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_ONLY_BE_ATTACKED) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_ONLY_ATTACK_MONSTER) + e5:SetRange(LOCATION_MZONE) + e5:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e5) + --win + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_DELAY) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetCountLimit(1) + e6:SetOperation(c511000296.winop) + c:RegisterEffect(e6) + --negate attack + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(511000296,1)) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e7:SetCode(EVENT_BE_BATTLE_TARGET) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c511000296.nacon) + e7:SetCost(c511000296.nacost) + e7:SetOperation(c511000296.naop) + c:RegisterEffect(e7) + --number generic effect + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e8:SetValue(c511000296.indes) + c:RegisterEffect(e8) + if not c511000296.global_check then + c511000296.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetCode(EVENT_ATTACK_ANNOUNCE) + ge1:SetOperation(c511000296.check) + Duel.RegisterEffect(ge1,0) + end +end +function c511000296.check(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()==tp or Duel.GetFlagEffect(tp,511000296)~=0 then return end + Duel.RegisterFlagEffect(tp,511000296,RESET_PHASE+PHASE_END,0,1) +end +c511000296.xyz_number=1000 +function c511000296.indes(e,c) + return not c:IsSetCard(0x48) +end +function c511000296.cfilter(c,tp,code) + return c:IsCode(code) and c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) +end +function c511000296.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000296.cfilter,1,nil,tp,511000294) +end +function c511000296.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000296.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + c:SetMaterial(eg) + Duel.Overlay(c,eg) + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + c:CompleteProcedure() + end +end +function c511000296.chkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000296.winop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp and Duel.GetFlagEffect(tp,511000296)==0 then + local WIN_REASON_NUMBER_Ci1000=0x52 + Duel.Win(tp,WIN_REASON_NUMBER_Ci1000) + end +end +function c511000296.nacon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return bt:GetControler()==c:GetControler() +end +function c511000296.nacost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000296.naop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + Duel.Recover(e:GetHandler():GetControler(),Duel.GetAttacker():GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511000297.lua b/script/c511000297.lua new file mode 100644 index 00000000..b0527ee4 --- /dev/null +++ b/script/c511000297.lua @@ -0,0 +1,46 @@ +--Zero Guard +function c511000297.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_ATTACK_ANNOUNCE) + e1:SetCondition(c511000297.condition) + e1:SetTarget(c511000297.target) + e1:SetOperation(c511000297.activate) + c:RegisterEffect(e1) +end +function c511000297.filter(c) + return c:IsFaceup() +end +function c511000297.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000297.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000297.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000297.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000297.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000297.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(1) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e3) + end +end diff --git a/script/c511000298.lua b/script/c511000298.lua new file mode 100644 index 00000000..435c0713 --- /dev/null +++ b/script/c511000298.lua @@ -0,0 +1,30 @@ +--Overhaul +function c511000298.initial_effect(c) +local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000298,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000298.lvtg) + e1:SetOperation(c511000298.lvop) + c:RegisterEffect(e1) +end +function c511000298.filter(c) + return c:IsFaceup() and c:IsLevelAbove(1) and c:IsRace(RACE_MACHINE) +end +function c511000298.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000298.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000298.lvop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000298.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511000299.lua b/script/c511000299.lua new file mode 100644 index 00000000..e56628f9 --- /dev/null +++ b/script/c511000299.lua @@ -0,0 +1,37 @@ +--スター·チェンジャー +function c511000299.initial_effect(c) + --lv change + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000299.target) + e1:SetOperation(c511000299.operation) + c:RegisterEffect(e1) +end +function c511000299.filter(c) + return c:IsFaceup() and c:IsLevelAbove(1) +end +function c511000299.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000299.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000299.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000299.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + local op=0 + end +function c511000299.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + if e:GetLabel()==0 then + e1:SetValue(1) + end + tc:RegisterEffect(e1) + end +end + diff --git a/script/c511000300.lua b/script/c511000300.lua new file mode 100644 index 00000000..88edd281 --- /dev/null +++ b/script/c511000300.lua @@ -0,0 +1,92 @@ +--マジック·クロニクル +function c511000300.initial_effect(c) + c:EnableCounterPermit(0x25) + c:SetCounterLimit(0x25,2) + local g=Group.CreateGroup() + g:KeepAlive() + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000300.target) + e1:SetOperation(c511000300.activate) + e1:SetLabelObject(g) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000300.ctop) + c:RegisterEffect(e2) + --salvage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000300,0)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511000300.thcost) + e3:SetTarget(c511000300.thtg) + e3:SetOperation(c511000300.thop) + e3:SetLabelObject(g) + c:RegisterEffect(e3) +end +function c511000300.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP+TYPE_MONSTER) and c:IsAbleToRemove() +end +function c511000300.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000300.filter,tp,LOCATION_DECK,0,5,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,5,tp,LOCATION_DECK) +end +function c511000300.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c511000300.filter,tp,LOCATION_DECK,0,nil) + if g:GetCount()<5 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=g:Select(tp,5,5,nil) + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) + local tc=rg:GetFirst() + while tc do + tc:RegisterFlagEffect(511000300,RESET_EVENT+0x1fe0000,0,0) + tc=rg:GetNext() + end + e:GetLabelObject():Clear() + e:GetLabelObject():Merge(rg) +end +function c511000300.ctop(e,tp,eg,ep,ev,re,r,rp) + if rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) then + e:GetHandler():AddCounter(0x25,1) + end +end +function c511000300.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x25,2,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x25,2,REASON_COST) +end +function c511000300.thfilter(c) + return c:GetFlagEffect(511000300)~=0 and c:IsAbleToHand() +end +function c511000300.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return e:GetLabelObject():IsContains(chkc) and c511000300.thfilter(chkc) end + if chk==0 then return e:GetLabelObject():IsExists(c511000300.thfilter,1,nil) end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local g=e:GetLabelObject():FilterSelect(1-tp,c511000300.thfilter,1,1,nil) + e:GetLabelObject():Sub(g) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_REMOVED) +end +function c511000300.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c511000300.dfilter(c) + return c:GetFlagEffect(511000300)~=0 +end +function c511000300.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsStatus(STATUS_ACTIVATED) +end diff --git a/script/c511000301.lua b/script/c511000301.lua new file mode 100644 index 00000000..b6c064b9 --- /dev/null +++ b/script/c511000301.lua @@ -0,0 +1,56 @@ +--ミスト・ボディ +function c511000301.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(c511000301.target) + e1:SetOperation(c511000301.operation) + c:RegisterEffect(e1) + --Indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + 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) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,1) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetOperation(c511000301.desop) + c:RegisterEffect(e5) +end +function c511000301.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,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000301.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 c511000301.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000302.lua b/script/c511000302.lua new file mode 100644 index 00000000..ddb55af1 --- /dev/null +++ b/script/c511000302.lua @@ -0,0 +1,53 @@ +--Magnet Force +function c511000302.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000302.con) + e1:SetTarget(c511000302.tg) + e1:SetOperation(c511000302.operation) + c:RegisterEffect(e1) +end +function c511000302.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g:GetFirst():IsRelateToEffect(e) then + Duel.ChangeTargetCard(ev,g) + end + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000302.con) + e1:SetTarget(c511000302.tg) + e1:SetOperation(c511000302.op) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000302.con(e,tp,eg,ep,ev,re,r,rp) + if rp==tp or not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return (tc:IsRace(RACE_ROCK) or tc:IsRace(RACE_MACHINE)) and tc:IsControler(e:GetHandler():GetControler()) and tc:IsLocation(LOCATION_MZONE) +end +function c511000302.filter2(c,re,rp,tf,ceg,cep,cev,cre,cr,crp) + return tf(re,rp,ceg,cep,cev,cre,cr,crp,0,c) +end +function c511000302.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tf=re:GetTarget() + local res,ceg,cep,cev,cre,cr,crp=Duel.CheckEvent(re:GetCode(),true) + if chkc then return chkc~=e:GetLabelObject() and chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and tf(re,rp,ceg,cep,cev,cre,cr,crp,0,chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000302.filter2,tp,0,LOCATION_MZONE,1,e:GetLabelObject(),re,rp,tf,ceg,cep,cev,cre,cr,crp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000302.filter2,tp,0,LOCATION_MZONE,1,1,e:GetLabelObject(),re,rp,tf,ceg,cep,cev,cre,cr,crp) +end +function c511000302.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g:GetFirst():IsRelateToEffect(e) then + Duel.ChangeTargetCard(ev,g) + end +end diff --git a/script/c511000303.lua b/script/c511000303.lua new file mode 100644 index 00000000..42fc89c0 --- /dev/null +++ b/script/c511000303.lua @@ -0,0 +1,39 @@ +--Photon Prevent +function c511000303.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000303.con) + e1:SetOperation(c511000303.op) + c:RegisterEffect(e1) +end +function c511000303.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x55) +end +function c511000303.con(e,tp,eg,ep,ev,re,r,rp) + if rp==tp or not Duel.IsExistingMatchingCard(c511000303.cfilter,tp,LOCATION_MZONE,0,1,nil) then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511000303.op(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(c511000303.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511000303.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end diff --git a/script/c511000304.lua b/script/c511000304.lua new file mode 100644 index 00000000..8b0edafb --- /dev/null +++ b/script/c511000304.lua @@ -0,0 +1,89 @@ +--Photon Wing +function c511000304.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(c511000304.target) + e1:SetOperation(c511000304.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(c511000304.eqlimit) + c:RegisterEffect(e2) + --gain and direct + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000304,0)) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCost(c511000304.atkcost) + e3:SetTarget(c511000304.atktg) + e3:SetOperation(c511000304.atkop) + c:RegisterEffect(e3) +end +function c511000304.eqlimit(e,c) + return c:IsSetCard(0x55) +end +function c511000304.filter(c) + return c:IsFaceup() and c:IsSetCard(0x55) +end +function c511000304.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511000304.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000304.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000304.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000304.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 c511000304.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c511000304.atkfilter(c,cst) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and (not cst or c:GetOverlayCount()~=0) +end +function c511000304.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local chkcost=e:GetLabel()==1 and true or false + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000304.atkfilter(chkc,chkcost) end + if chk==0 then + e:SetLabel(0) + return Duel.IsExistingTarget(c511000304.atkfilter,tp,LOCATION_MZONE,0,1,nil,chkcost) + end + e:SetLabel(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc=Duel.SelectTarget(tp,c511000304.atkfilter,tp,LOCATION_MZONE,0,1,1,nil,chkcost):GetFirst() + if chkcost then + tc:RemoveOverlayCard(tp,tc:GetOverlayCount(),tc:GetOverlayCount(),REASON_COST) + end +end +function c511000304.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=e:GetHandler():GetEquipTarget() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(tc:GetRank()*200) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + eq:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + eq:RegisterEffect(e2) + end +end diff --git a/script/c511000305.lua b/script/c511000305.lua new file mode 100644 index 00000000..3f021bf8 --- /dev/null +++ b/script/c511000305.lua @@ -0,0 +1,33 @@ +--Photon Wind +function c511000305.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000305,0)) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511000305.atcon) + e1:SetTarget(c511000305.attg) + e1:SetOperation(c511000305.atop) + c:RegisterEffect(e1) +end +function c511000305.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + local rc=eg:GetFirst() + return ep~=tp and rc~=e:GetHandler() and rc:IsControler(tp) and at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511000305.attg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000305.atop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Damage(p,d,REASON_EFFECT) then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c511000306.lua b/script/c511000306.lua new file mode 100644 index 00000000..d66d8868 --- /dev/null +++ b/script/c511000306.lua @@ -0,0 +1,187 @@ +--Clear World (Anime) +function c511000306.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --adjust + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000306.adjustop) + c:RegisterEffect(e3) + --light + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_PUBLIC) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e4:SetTarget(c511000306.lighttg) + c:RegisterEffect(e4) + --dark + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e5:SetRange(LOCATION_SZONE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,0) + e5:SetCondition(c511000306.darkcon1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCondition(c511000306.darkcon2) + e6:SetTargetRange(0,1) + c:RegisterEffect(e6) + --earth + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(74131780,0)) + e7:SetCategory(CATEGORY_DESTROY) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetRange(LOCATION_SZONE) + e7:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e7:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e7:SetCondition(c511000306.descon) + e7:SetTarget(c511000306.destg) + e7:SetOperation(c511000306.desop) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(511000306,1)) + e8:SetCategory(CATEGORY_DESTROY) + e8:SetCode(EVENT_PHASE+PHASE_END) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e8:SetRange(LOCATION_SZONE) + e8:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e8:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e8:SetCondition(c511000306.descon) + e8:SetTarget(c511000306.destg2) + e8:SetOperation(c511000306.desop) + c:RegisterEffect(e8) + --water + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(511000306,2)) + e9:SetCategory(CATEGORY_HANDES) + e9:SetCode(EVENT_PHASE+PHASE_END) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e9:SetRange(LOCATION_SZONE) + e9:SetProperty(EFFECT_FLAG_REPEAT) + e9:SetCountLimit(1) + e9:SetCondition(c511000306.hdcon) + e9:SetTarget(c511000306.hdtg) + e9:SetOperation(c511000306.hdop) + c:RegisterEffect(e9) + --fire + local e10=Effect.CreateEffect(c) + e10:SetDescription(aux.Stringid(511000306,3)) + e10:SetCategory(CATEGORY_DAMAGE) + e10:SetCode(EVENT_PHASE+PHASE_END) + e10:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e10:SetRange(LOCATION_SZONE) + e10:SetProperty(EFFECT_FLAG_REPEAT) + e10:SetCountLimit(1) + e10:SetCondition(c511000306.damcon) + e10:SetTarget(c511000306.damtg) + e10:SetOperation(c511000306.damop) + c:RegisterEffect(e10) + --wind + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_FIELD) + e11:SetCode(EFFECT_CANNOT_ACTIVATE) + e11:SetRange(LOCATION_SZONE) + e11:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e11:SetTargetRange(1,0) + e11:SetCondition(c511000306.windcon1) + e11:SetValue(c511000306.actlimit) + c:RegisterEffect(e11) + local e12=e11:Clone() + e12:SetTargetRange(0,1) + e12:SetCondition(c511000306.windcon2) + c:RegisterEffect(e12) +end +c511000306[0]=0 +c511000306[1]=0 +function c511000306.raccheck(p) + local rac=0 + for i=0,4 do + local tc=Duel.GetFieldCard(p,LOCATION_MZONE,i) + if tc and tc:IsFaceup() then + rac=bit.bor(rac,tc:GetAttribute()) + end + end + c511000306[p]=rac +end +function c511000306.adjustop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerAffectedByEffect(0,511000306) then + c511000306.raccheck(0) + else c511000306[0]=0 end + if not Duel.IsPlayerAffectedByEffect(1,511000306) then + c511000306.raccheck(1) + else c511000306[1]=0 end +end +function c511000306.lighttg(e,c) + return bit.band(c511000306[c:GetControler()],ATTRIBUTE_LIGHT)~=0 +end +function c511000306.darkcon1(e) + return bit.band(c511000306[e:GetHandlerPlayer()],ATTRIBUTE_DARK)~=0 +end +function c511000306.darkcon2(e) + return bit.band(c511000306[1-e:GetHandlerPlayer()],ATTRIBUTE_DARK)~=0 +end +function c511000306.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(c511000306[Duel.GetTurnPlayer()],ATTRIBUTE_EARTH)~=0 and Duel.GetTurnPlayer()==tp +end +function c511000306.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000306.destg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000306.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if bit.band(c511000306[Duel.GetTurnPlayer()],ATTRIBUTE_EARTH)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end +function c511000306.hdcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(c511000306[Duel.GetTurnPlayer()],ATTRIBUTE_WATER)~=0 +end +function c511000306.hdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local turnp=Duel.GetTurnPlayer() + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,turnp,1) +end +function c511000306.hdop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if bit.band(c511000306[Duel.GetTurnPlayer()],ATTRIBUTE_WATER)==0 then return end + Duel.DiscardHand(Duel.GetTurnPlayer(),nil,1,1,REASON_EFFECT+REASON_DISCARD) +end +function c511000306.damcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(c511000306[Duel.GetTurnPlayer()],ATTRIBUTE_FIRE)~=0 +end +function c511000306.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local turnp=Duel.GetTurnPlayer() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,turnp,1000) +end +function c511000306.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if bit.band(c511000306[Duel.GetTurnPlayer()],ATTRIBUTE_FIRE)==0 then return end + Duel.Damage(Duel.GetTurnPlayer(),1000,REASON_EFFECT) +end +function c511000306.windcon1(e) + return bit.band(c511000306[e:GetHandlerPlayer()],ATTRIBUTE_WIND)~=0 +end +function c511000306.windcon2(e) + return bit.band(c511000306[1-e:GetHandlerPlayer()],ATTRIBUTE_WIND)~=0 +end +function c511000306.actlimit(e,te,tp) + return te:IsHasType(EFFECT_TYPE_ACTIVATE) and te:GetHandler():IsType(TYPE_SPELL) +end diff --git a/script/c511000307.lua b/script/c511000307.lua new file mode 100644 index 00000000..9f79f950 --- /dev/null +++ b/script/c511000307.lua @@ -0,0 +1,65 @@ +--Clear Vice Dragon (TF3) +function c511000307.initial_effect(c) + --remove att + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_REMOVE_ATTRIBUTE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511000307.ratg) + e1:SetValue(ATTRIBUTE_DARK) + 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_UPDATE_ATTACK) + e2:SetCondition(c511000307.condtion) + e2:SetValue(c511000307.atkval) + c:RegisterEffect(e2) + --to defence + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000307.poscon) + e3:SetOperation(c511000307.posop) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c511000307.desreptg) + c:RegisterEffect(e4) +end +function c511000307.ratg(e) + return e:GetHandler() +end +function c511000307.condtion(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL + and Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget()~=nil +end +function c511000307.atkval(e,c) + return Duel.GetAttackTarget():GetAttack()*2 +end +function c511000307.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetAttackedCount()>0 +end +function c511000307.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsAttackPos() then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c511000307.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if chk==0 then return c:IsReason(REASON_BATTLE) and c:IsFaceup() and g:GetCount()>0 end + if Duel.SelectYesNo(tp,aux.Stringid(511000174,0)) then + Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + return true + else return false end +end diff --git a/script/c511000308.lua b/script/c511000308.lua new file mode 100644 index 00000000..37e5c849 --- /dev/null +++ b/script/c511000308.lua @@ -0,0 +1,136 @@ +--D3 +function c511000308.initial_effect(c) + --atk/lv up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000308,0)) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511000308.cost) + e1:SetTarget(c511000308.target) + e1:SetOperation(c511000308.operation) + c:RegisterEffect(e1) + if not c511000308.global_check then + c511000308.global_check=true + --Dogma/Plasma + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(c511000308.op) + Duel.RegisterEffect(ge1,0) + end +end +function c511000308.filter(c) + return c:IsCode(17132130) or c:IsCode(83965310) +end +function c511000308.op(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c511000308.filter,0,LOCATION_HAND,LOCATION_HAND,nil) + local tc=g1:GetFirst() + while tc do + if tc:GetFlagEffect(511000308)==0 then + local e2=Effect.CreateEffect(tc) + e2:SetDescription(aux.Stringid(64382841,3)) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + if tc:IsCode(17132130) then + e2:SetValue(1) + e2:SetCondition(c511000308.dogmacon) + e2:SetOperation(c511000308.dogmaop) + else + e2:SetCondition(c511000308.plasmacon) + e2:SetOperation(c511000308.plasmaop) + end + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(511000308,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + tc=g1:GetNext() + end +end +function c511000308.dogmacon(e,c) + if c==nil then return true end + local g=Duel.GetReleaseGroup(c:GetControler()) + local d=g:FilterCount(Card.IsSetCard,nil,0xc008) + local d3=g:FilterCount(Card.IsHasEffect,nil,511000308) + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-2 and d>0 and g:GetCount()>1 and d3>0 +end +function c511000308.dogmaop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.GetReleaseGroup(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg1=g:FilterSelect(tp,Card.IsSetCard,1,1,nil,0xc008) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg2=g:FilterSelect(tp,Card.IsHasEffect,1,1,sg1:GetFirst(),511000308) + sg1:Merge(sg2) + Duel.Release(sg1,REASON_COST) +end +function c511000308.plasmacon(e,c) + if c==nil then return true end + local g=Duel.GetReleaseGroup(c:GetControler()) + local d2=g:FilterCount(Card.IsHasEffect,nil,511000308) + local d3=g:FilterCount(Card.IsHasEffect,nil,511000309) + local ft=Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE) + return (ft>-2 and g:GetCount()>1 and d2>0) or (ft>-1 and d3>0) +end +function c511000308.plasmaop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.GetReleaseGroup(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg1=g:FilterSelect(tp,Card.IsHasEffect,1,1,nil,511000308) + if not sg1:GetFirst():IsHasEffect(511000309) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg2=g:Select(tp,1,1,sg1:GetFirst()) + sg1:Merge(sg2) + end + Duel.Release(sg1,REASON_COST) +end +function c511000308.costfilter(c) + return c:IsCode(99357565) and c:IsAbleToGraveAsCost() +end +function c511000308.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000308.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000308.costfilter,tp,LOCATION_HAND,0,1,2,nil) + Duel.SendtoGrave(g,REASON_COST) + e:SetLabel(g:GetCount()) +end +function c511000308.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetParam(e:GetLabel()) +end +function c511000308.operation(e,tp,eg,ep,ev,re,r,rp) + local i=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(511000307+i) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + if i==1 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DOUBLE_TRIBUTE) + e2:SetValue(c511000308.condition) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + elseif i==2 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(511000308) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DOUBLE_TRIBUTE) + e2:SetValue(c511000308.condition) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end + end +end +function c511000308.condition(e,c) + return c:IsSetCard(0xc008) +end diff --git a/script/c511000309.lua b/script/c511000309.lua new file mode 100644 index 00000000..1e7651cd --- /dev/null +++ b/script/c511000309.lua @@ -0,0 +1,59 @@ +--Heavy Storm Blade +function c511000309.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(c511000309.target) + e1:SetOperation(c511000309.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) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000309,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000309.descon) + e3:SetTarget(c511000309.destg) + e3:SetOperation(c511000309.desop) + c:RegisterEffect(e3) +end +function c511000309.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 c511000309.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511000309.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler():GetEquipTarget() +end +function c511000309.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000309.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(c511000309.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511000309.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511000309.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511000310.lua b/script/c511000310.lua new file mode 100644 index 00000000..501bd131 --- /dev/null +++ b/script/c511000310.lua @@ -0,0 +1,46 @@ +--Doctor D +function c511000310.initial_effect(c) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_ACTIVATE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCost(c511000310.spcost) + e3:SetTarget(c511000310.sptg) + e3:SetOperation(c511000310.spop) + c:RegisterEffect(e3) +end +function c511000310.spfilter(c,e,tp) + return c:IsSetCard(0xc008) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000310.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000310.costfilter2,tp,LOCATION_GRAVE,0,2,nil) + and Duel.IsExistingMatchingCard(c511000310.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local sg=Duel.GetMatchingGroup(c511000310.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + local g=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + if sg:GetCount()==1 then + g=Duel.SelectMatchingCard(tp,c511000310.costfilter1,tp,LOCATION_GRAVE,0,1,1,nil) + else + g=Duel.SelectMatchingCard(tp,c511000310.costfilter2,tp,LOCATION_GRAVE,0,1,1,nil) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511000310.costfilter1(c) + return c:IsSetCard(0xc008) and c:IsAbleToRemoveAsCost() and c:IsLevelAbove(5) +end +function c511000310.costfilter2(c) + return c:IsSetCard(0xc008) and c:IsAbleToRemoveAsCost() +end +function c511000310.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000310.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000310.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000310.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000311.lua b/script/c511000311.lua new file mode 100644 index 00000000..a18b9817 --- /dev/null +++ b/script/c511000311.lua @@ -0,0 +1,72 @@ +--D - Burst +function c511000311.initial_effect(c) + --effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000311.target) + e1:SetOperation(c511000311.operation) + c:RegisterEffect(e1) + --Double attack + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c511000311.dacon) + e2:SetCost(c511000311.dacost) + e2:SetTarget(c511000311.datg) + e2:SetOperation(c511000311.daop) + c:RegisterEffect(e2) +end +function c511000311.ecfilter(c) + return c:IsType(TYPE_EQUIP) and c:GetEquipTarget()~=nil and c:IsDestructable() +end +function c511000311.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c511000311.ecfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000311.ecfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000311,0)) + local g=Duel.SelectTarget(tp,c511000311.ecfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000311.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Draw(tp,1,REASON_EFFECT) + end + end +end +function c511000311.dacon(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 c511000311.dacost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000311.datg(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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000311.daop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511000312.lua b/script/c511000312.lua new file mode 100644 index 00000000..ee447173 --- /dev/null +++ b/script/c511000312.lua @@ -0,0 +1,19 @@ +--Greed Pact +function c511000312.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000312.target) + e1:SetOperation(c511000312.activate) + c:RegisterEffect(e1) +end +function c511000312.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c511000312.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,1,REASON_EFFECT) + Duel.Draw(1-tp,1,REASON_EFFECT) +end diff --git a/script/c511000313.lua b/script/c511000313.lua new file mode 100644 index 00000000..a3e39ad5 --- /dev/null +++ b/script/c511000313.lua @@ -0,0 +1,42 @@ +--Plasma Counter +function c511000313.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(c511000313.condition) + e1:SetTarget(c511000313.target) + e1:SetOperation(c511000313.activate) + c:RegisterEffect(e1) +end +function c511000313.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + local g=Duel.GetDecktopGroup(tp,1) + return phase==PHASE_DAMAGE and not Duel.IsDamageCalculated() + and Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()~=nil and Duel.GetAttackTarget():IsCode(83965310) + and g:GetFirst():GetCode()==100000270 and g:GetFirst():IsFaceup() +end +function c511000313.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end +end +function c511000313.activate(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + local a=Duel.GetAttacker() + if at:IsFaceup() and at:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(a:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(1500) + at:RegisterEffect(e2) + end +end diff --git a/script/c511000314.lua b/script/c511000314.lua new file mode 100644 index 00000000..3d38cb07 --- /dev/null +++ b/script/c511000314.lua @@ -0,0 +1,27 @@ +--Plasma Discharger +function c511000314.initial_effect(c) + --effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000314.condition) + e1:SetCost(c511000314.cost) + e1:SetOperation(c511000314.operation) + c:RegisterEffect(e1) +end +function c511000314.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511000314.ecfilter(c) + return c:IsType(TYPE_EQUIP) and c:GetEquipTarget()~=nil and c:IsDestructable() +end +function c511000314.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000314.ecfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511000314.ecfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.Destroy(g,REASON_COST) +end +function c511000314.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511000315.lua b/script/c511000315.lua new file mode 100644 index 00000000..1ffff179 --- /dev/null +++ b/script/c511000315.lua @@ -0,0 +1,35 @@ +--Force of Four +function c511000315.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000315.activate) + c:RegisterEffect(e1) + --send + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOGRAVE+CATEGORY_HANDES) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_HAND) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000315.activate) + c:RegisterEffect(e2) +end +function c511000315.activate(e,tp,eg,ep,ev,re,r,rp) + local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + if h1>4 then + local ct=h1-4 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_HAND,0,ct,ct,nil) + Duel.SendtoGrave(g1,REASON_EFFECT) + end + if h2>4 then + local ct=h2-4 + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(1-tp,aux.TRUE,1-tp,LOCATION_HAND,0,ct,ct,nil) + Duel.SendtoGrave(g2,REASON_EFFECT) + end +end diff --git a/script/c511000316.lua b/script/c511000316.lua new file mode 100644 index 00000000..5f7907c2 --- /dev/null +++ b/script/c511000316.lua @@ -0,0 +1,26 @@ +--Fiendish Trap Hole +function c511000316.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511000316.target) + e1:SetOperation(c511000316.activate) + c:RegisterEffect(e1) +end +function c511000316.filter(c,tp) + return c:IsFaceup() and c:IsDestructable() +end +function c511000316.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return eg:IsExists(c511000316.filter,1,nil,tp) end + local g=eg:Filter(c511000316.filter,nil,tp) + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c511000316.activate(e,tp,eg,ep,ev,re,r,rp) + if eg:GetCount()>0 then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000317.lua b/script/c511000317.lua new file mode 100644 index 00000000..cc8d6a64 --- /dev/null +++ b/script/c511000317.lua @@ -0,0 +1,29 @@ +--Hero Soul +function c511000317.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000317.condition) + e1:SetOperation(c511000317.activate) + c:RegisterEffect(e1) +end +function c511000317.condition(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + local at=Duel.GetAttackTarget() + local a=Duel.GetAttacker() + return Duel.GetBattleDamage(p)>=Duel.GetLP(p) and ((at and at:IsSetCard(0x8) and at:IsControler(p)) or (a and a:IsSetCard(0x8) and a:IsControler(p))) +end +function c511000317.activate(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000317.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,p) + Duel.SetLP(p,100,REASON_EFFECT) +end +function c511000317.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511000318.lua b/script/c511000318.lua new file mode 100644 index 00000000..e51e97f5 --- /dev/null +++ b/script/c511000318.lua @@ -0,0 +1,33 @@ +--Dramatic Crossroads +function c511000318.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511000318.condition) + e1:SetTarget(c511000318.target) + e1:SetOperation(c511000318.activate) + c:RegisterEffect(e1) +end +function c511000318.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511000318.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end +end +function c511000318.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + local op=Duel.SelectOption(1-tp,aux.Stringid(511000318,0),aux.Stringid(511000318,1)) + if op==0 then + local sg=g:RandomSelect(1-tp,1) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + else + local g=Duel.GetMatchingGroup(nil,tp,0,LOCATION_HAND,nil) + Duel.ConfirmCards(tp,g) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoHand(sg:GetFirst(),tp,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c511000319.lua b/script/c511000319.lua new file mode 100644 index 00000000..a6ee2250 --- /dev/null +++ b/script/c511000319.lua @@ -0,0 +1,91 @@ +--Dress Up +function c511000319.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(c511000319.target) + e1:SetOperation(c511000319.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) + --pos + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000319,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c511000319.postg) + e3:SetOperation(c511000319.posop) + c:RegisterEffect(e3) + --Atk up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetValue(300) + c:RegisterEffect(e4) + --atk + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(0,LOCATION_MZONE) + e5:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetCondition(c511000319.atkcon) + e5:SetTarget(c511000319.atktg) + e5:SetValue(c511000319.atkval) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e6:SetCondition(c511000319.atkcon) + c:RegisterEffect(e6) +end +function c511000319.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000319.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 c511000319.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000319.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end +function c511000319.atkcon(e) + return Duel.IsExistingMatchingCard(Card.IsFaceup,e:GetHandler():GetControler(),0,LOCATION_MZONE,1,nil) +end +function c511000319.atkfilter(c,atk) + return c:IsFaceup() and c:IsPosition(POS_FACEUP_ATTACK) and c:GetAttack()0 + and Duel.IsExistingMatchingCard(Card.IsFacedown,tp,LOCATION_SZONE,0,1,c) +end +function c511000321.filter(c) + return c:IsFacedown() and c:IsAbleToChangeControler() +end +function c511000321.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsControlerCanBeChanged,tp,LOCATION_MZONE,0,1,nil) + or Duel.IsExistingMatchingCard(c511000321.filter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,0,0) +end +function c511000321.activate(e,tp,eg,ep,ev,re,r,rp) + local con1=Duel.IsExistingMatchingCard(Card.IsControlerCanBeChanged,tp,LOCATION_MZONE,0,1,nil) + local con2=Duel.IsExistingMatchingCard(c511000321.filter,tp,LOCATION_SZONE,0,1,e:GetHandler()) + local op=2 + if con1 and con2 then + op=Duel.SelectOption(1-tp,aux.Stringid(24413299,0),aux.Stringid(511000321,1)) + elseif con1 then + Duel.SelectOption(1-tp,aux.Stringid(24413299,0)) + op=0 + elseif con2 then + Duel.SelectOption(1-tp,aux.Stringid(511000321,0)) + op=1 + end + if op==0 then + local g=Duel.SelectMatchingCard(1-tp,Card.IsControlerCanBeChanged,1-tp,0,LOCATION_MZONE,1,1,nil) + Duel.GetControl(g:GetFirst(),1-tp) + elseif op==1 then + local g=Duel.SelectMatchingCard(1-tp,c511000321.filter,1-tp,0,LOCATION_SZONE,1,1,e:GetHandler()) + Duel.MoveToField(g:GetFirst(),tp,1-tp,LOCATION_SZONE,POS_FACEDOWN,true) + end +end diff --git a/script/c511000322.lua b/script/c511000322.lua new file mode 100644 index 00000000..9f857a23 --- /dev/null +++ b/script/c511000322.lua @@ -0,0 +1,30 @@ +--Ojama Delta Wear +function c511000322.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511000322.tg) + e1:SetOperation(c511000322.op) + c:RegisterEffect(e1) +end +function c511000322.filter(c,e,tp,tid) + return c:GetTurnID()==tid and c:IsReason(REASON_BATTLE) and c:IsSetCard(0xf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000322.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000322.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp,Duel.GetTurnCount()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511000322.op(e,tp,eg,ep,ev,re,r,rp) + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft1<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft1=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000322.filter,tp,LOCATION_GRAVE,0,1,ft1,nil,e,tp,Duel.GetTurnCount()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000323.lua b/script/c511000323.lua new file mode 100644 index 00000000..a38aa5d1 --- /dev/null +++ b/script/c511000323.lua @@ -0,0 +1,41 @@ +--Infernal White +function c511000323.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --reveal + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_PUBLIC) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_HAND,0) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000323,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_REPEAT) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000323.condition) + e3:SetTarget(c511000323.target) + e3:SetOperation(c511000323.operation) + c:RegisterEffect(e3) +end +function c511000323.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000323.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511000323.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000325.lua b/script/c511000325.lua new file mode 100644 index 00000000..2540a104 --- /dev/null +++ b/script/c511000325.lua @@ -0,0 +1,96 @@ +--Mecha Ojama King +function c511000325.initial_effect(c) + c:EnableReviveLimit() + --spsummon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000325.splimit) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000325,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511000325.sptg) + e2:SetOperation(c511000325.spop) + c:RegisterEffect(e2) +end +function c511000325.splimit(e,se,sp,st) + return st==(SUMMON_TYPE_SPECIAL+511000324) +end +function c511000325.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local con1=Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>2 + local con2=Duel.IsPlayerCanSpecialSummonMonster(tp,29843092,0xf,0x4011,0,1000,2,RACE_BEAST,ATTRIBUTE_LIGHT,POS_FACEUP_DEFENSE,1-tp) + local con3=Duel.GetLocationCount(tp,LOCATION_MZONE,tp)>2 + local con4=Duel.IsPlayerCanSpecialSummonMonster(tp,29843092,0xf,0x4011,0,1000,2,RACE_BEAST,ATTRIBUTE_LIGHT,POS_FACEUP_DEFENSE,tp) + if chk==0 then return (con1 and con2) or (con3 and con4) end + local op=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000325,1)) + if (con1 and con2) and (con3 and con4) then + op=Duel.SelectOption(tp,aux.Stringid(511000325,3),aux.Stringid(511000325,2)) + elseif (con3 and con4) then + Duel.SelectOption(tp,aux.Stringid(511000325,3)) + op=0 + else + Duel.SelectOption(tp,aux.Stringid(511000325,2)) + op=1 + end + e:SetLabel(op) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c511000325.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE,tp)<3 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,29843092,0xf,0x4011,0,1000,2,RACE_BEAST,ATTRIBUTE_LIGHT,POS_FACEUP_DEFENSE,tp) then return end + for i=1,3 do + local token=Duel.CreateToken(tp,29843091+i) + if Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DESTROY) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511000325.damop2) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + end + end + Duel.SpecialSummonComplete() + else + if Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)<3 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,29843092,0xf,0x4011,0,1000,2,RACE_BEAST,ATTRIBUTE_LIGHT,POS_FACEUP_DEFENSE,1-tp) then return end + for i=1,3 do + local token=Duel.CreateToken(tp,29843091+i) + if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DESTROY) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511000325.damop) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_UNRELEASABLE_NONSUM) + token:RegisterEffect(e3,true) + end + end + Duel.SpecialSummonComplete() + end +end +function c511000325.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,500,REASON_EFFECT) +end +function c511000325.damop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,500,REASON_EFFECT) +end diff --git a/script/c511000326.lua b/script/c511000326.lua new file mode 100644 index 00000000..ffa38ca3 --- /dev/null +++ b/script/c511000326.lua @@ -0,0 +1,37 @@ +--Shield Attack +function c511000326.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(c511000326.target) + e1:SetOperation(c511000326.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SWAP_BASE_AD) + 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 c511000326.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 c511000326.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 diff --git a/script/c511000328.lua b/script/c511000328.lua new file mode 100644 index 00000000..f50d4ca5 --- /dev/null +++ b/script/c511000328.lua @@ -0,0 +1,61 @@ +--Goblin Negotiator +function c511000328.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_F) + e2:SetDescription(aux.Stringid(511000034,0)) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCountLimit(1) + e2:SetCondition(c511000328.condition) + e2:SetTarget(c511000328.target) + e2:SetOperation(c511000328.operation) + c:RegisterEffect(e2) +end +function c511000328.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:IsControler(tp) and a:IsRelateToBattle() then + e:SetLabelObject(a) + return true + end + if d:IsControler(tp) and d:IsRelateToBattle() then + e:SetLabelObject(d) + return true + end + return false +end +function c511000328.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return true end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511000328.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) + Duel.Draw(1-tp,1,REASON_EFFECT) + end +end diff --git a/script/c511000329.lua b/script/c511000329.lua new file mode 100644 index 00000000..66885051 --- /dev/null +++ b/script/c511000329.lua @@ -0,0 +1,69 @@ +--Infernal Gauntlet +function c511000329.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(c511000329.target) + e1:SetOperation(c511000329.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) + --Double attack + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000329.dacon) + e3:SetCost(c511000329.dacost) + e3:SetOperation(c511000329.daop) + c:RegisterEffect(e3) +end +function c511000329.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 c511000329.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 c511000329.dacon(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 c511000329.dacost(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,eq) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,eq) + Duel.Release(g,REASON_COST) +end +function c511000329.daop(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + local c=e:GetHandler() + if eq:IsFaceup() and c:IsFaceup() then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e4) + end +end \ No newline at end of file diff --git a/script/c511000330.lua b/script/c511000330.lua new file mode 100644 index 00000000..9bbb809b --- /dev/null +++ b/script/c511000330.lua @@ -0,0 +1,37 @@ +--Infernal Transaction +function c511000330.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000330.target) + e1:SetOperation(c511000330.activate) + c:RegisterEffect(e1) +end +function c511000330.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) and c:IsAttackAbove(2000) +end +function c511000330.filter2(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511000330.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511000330.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>0 and Duel.IsExistingTarget(c511000330.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp) + and Duel.IsExistingTarget(c511000330.filter2,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000330.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c511000330.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP) then + local g=Duel.SelectMatchingCard(tp,c511000330.filter2,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c511000331.lua b/script/c511000331.lua new file mode 100644 index 00000000..657ccc19 --- /dev/null +++ b/script/c511000331.lua @@ -0,0 +1,34 @@ +--Desperado Manager +function c511000331.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_TODECK) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000331.condition) + e1:SetTarget(c511000331.target) + e1:SetOperation(c511000331.activate) + c:RegisterEffect(e1) +end +function c511000331.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_HAND,0,1,e:GetHandler()) +end + function c511000331.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,3,tp,LOCATION_HAND) +end +function c511000331.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT) then + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,p,LOCATION_HAND,0,nil) + if g:GetCount()>=3 then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + local sg=g:Select(p,3,3,nil) + Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) + end + end +end diff --git a/script/c511000332.lua b/script/c511000332.lua new file mode 100644 index 00000000..712d2fb7 --- /dev/null +++ b/script/c511000332.lua @@ -0,0 +1,107 @@ +--Fusion Buster +function c511000332.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(c511000332.target) + e1:SetOperation(c511000332.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) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(300) + c:RegisterEffect(e3) + --Activate + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetCountLimit(1) + e4:SetTarget(c511000332.rettg) + e4:SetOperation(c511000332.retop) + c:RegisterEffect(e4) + --Activate + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_DISABLE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_CHAINING) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511000332.polycon) + e5:SetCost(c511000332.polycost) + e5:SetTarget(c511000332.polytg) + e5:SetOperation(c511000332.polyop) + c:RegisterEffect(e5) +end +function c511000332.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000332.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 c511000332.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsAbleToExtra() +end +function c511000332.rettg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000332.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000332.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511000332.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511000332.mgfilter(c,e,tp,fusc) + return not c:IsControler(1-tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,1-tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000332.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not (tc:IsRelateToEffect(e) and tc:IsFaceup()) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 or bit.band(sumtype,SUMMON_TYPE_FUSION)~=SUMMON_TYPE_FUSION or mg:GetCount()==0 + or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) + or mg:IsExists(c511000332.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable then + Duel.BreakEffect() + Duel.SpecialSummon(mg,0,1-tp,1-tp,false,false,POS_FACEUP) + end +end +function c511000332.polycon(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsCode(24094653) and Duel.IsChainDisablable(ev) +end +function c511000332.polycost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000332.polytg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511000332.polyop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateEffect(ev) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000333.lua b/script/c511000333.lua new file mode 100644 index 00000000..3d6ad552 --- /dev/null +++ b/script/c511000333.lua @@ -0,0 +1,67 @@ +--Quick Rush +function c511000333.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000333.target) + e1:SetOperation(c511000333.operation) + c:RegisterEffect(e1) +end +function c511000333.filter(c) + return c:GetAttackAnnouncedCount()==0 and c:IsFaceup() and c:IsLevelBelow(4) +end +function c511000333.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) or Duel.IsExistingTarget(c511000333.filter,tp,LOCATION_MZONE,0,1,nil) end + local op=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000333,0)) + if Duel.IsPlayerCanDraw(tp,1) and Duel.IsExistingTarget(c511000333.filter,tp,LOCATION_MZONE,0,1,nil) then + op=Duel.SelectOption(tp,aux.Stringid(511000333,1),aux.Stringid(511000333,2)) + elseif Duel.IsPlayerCanDraw(tp,1) then + Duel.SelectOption(tp,aux.Stringid(511000333,1)) + op=0 + else + Duel.SelectOption(tp,aux.Stringid(511000333,2)) + op=1 + end + e:SetLabel(op) + if op==0 then + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + else + Duel.SelectTarget(tp,c511000333.filter,tp,LOCATION_MZONE,0,1,1,nil) + end +end +function c511000333.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==0 then + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + else + local tc=Duel.GetFirstTarget() + if Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==0 then + if Duel.Damage(1-tp,tc:GetAttack(),REASON_BATTLE) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + Duel.RaiseSingleEvent(tc,EVENT_BATTLE_DAMAGE,e,REASON_EFFECT,0,1-tp,tc:GetAttack()) + end + else + local g=Duel.SelectMatchingCard(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) + local tg=g:GetFirst() + Duel.CalculateDamage(tc,tg) + if Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==1 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + end + end + end +end diff --git a/script/c511000334.lua b/script/c511000334.lua new file mode 100644 index 00000000..6a30d30e --- /dev/null +++ b/script/c511000334.lua @@ -0,0 +1,43 @@ +--Direct Border +function c511000334.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511000334.atktarget) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000334,0)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetCondition(c511000334.condition) + e3:SetTarget(c511000334.target) + e3:SetOperation(c511000334.operation) + c:RegisterEffect(e3) +end +function c511000334.atktarget(e,c) + return c:GetAttack()>=1000 +end +function c511000334.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and ep==tp and Duel.GetAttacker():GetAttack()<1000 +end +function c511000334.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000334.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000335.lua b/script/c511000335.lua new file mode 100644 index 00000000..f87f8eb2 --- /dev/null +++ b/script/c511000335.lua @@ -0,0 +1,28 @@ +--Ojamable +function c511000335.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511000335.target) + e1:SetOperation(c511000335.activate) + c:RegisterEffect(e1) +end +function c511000335.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return tc:IsPreviousPosition(POS_FACEUP) and eg:GetCount()==1 and tc:IsControler(tp) + and tc:IsLocation(LOCATION_GRAVE) and tc:IsSetCard(0xf) and tc:IsAbleToDeck() and Duel.IsPlayerCanDraw(tp,2) end + tc:CreateEffectRelation(e) +end +function c511000335.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(tp) + Duel.BreakEffect() + Duel.Draw(tp,2,REASON_EFFECT) + Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + end +end diff --git a/script/c511000336.lua b/script/c511000336.lua new file mode 100644 index 00000000..c1ab163c --- /dev/null +++ b/script/c511000336.lua @@ -0,0 +1,41 @@ +--Ojamarking +function c511000336.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000336,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c511000336.spcost) + e1:SetCondition(c511000336.spcon) + e1:SetTarget(c511000336.sptg) + e1:SetOperation(c511000336.spop) + c:RegisterEffect(e1) +end +function c511000336.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000336.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp +end +function c511000336.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000336.cfilter,1,nil,tp) +end +function c511000336.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsSetCard(0xf) +end +function c511000336.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000336.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000336.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000336.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000337.lua b/script/c511000337.lua new file mode 100644 index 00000000..07ddaaf7 --- /dev/null +++ b/script/c511000337.lua @@ -0,0 +1,35 @@ +--Bond of Dragons +function c511000337.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000337.condition) + e1:SetTarget(c511000337.target) + e1:SetOperation(c511000337.operation) + c:RegisterEffect(e1) +end +function c511000337.cfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsLevelBelow(4) +end +function c511000337.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000337.cfilter,1,nil) +end +function c511000337.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000337.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000337.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000337.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,c511000337.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000338.lua b/script/c511000338.lua new file mode 100644 index 00000000..608dd815 --- /dev/null +++ b/script/c511000338.lua @@ -0,0 +1,41 @@ +--Den of Dragons +function c511000338.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000338.condition) + e1:SetTarget(c511000338.target) + e1:SetOperation(c511000338.operation) + c:RegisterEffect(e1) +end +function c511000338.cfilter(c,tp) + return c:IsRace(RACE_DRAGON) and c:GetPreviousControler()==tp and c:GetLevel()>0 +end +function c511000338.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000338.cfilter,nil,tp) + local tc=g:GetFirst() + return g:GetCount()==1 +end +function c511000338.spfilter(c,e,tp,lv) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==lv +end +function c511000338.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:Filter(c511000338.cfilter,nil,tp):GetFirst() + local lv=tc:GetLevel() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000338.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,lv) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000338.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:Filter(c511000338.cfilter,nil,tp):GetFirst() + local lv=tc:GetLevel() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000338.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,lv) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000339.lua b/script/c511000339.lua new file mode 100644 index 00000000..7414e6ed --- /dev/null +++ b/script/c511000339.lua @@ -0,0 +1,27 @@ +--Dragon's Descent +function c511000339.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000339.target) + e1:SetOperation(c511000339.operation) + c:RegisterEffect(e1) +end +function c511000339.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000339.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000339.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000339.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,c511000339.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 diff --git a/script/c511000340.lua b/script/c511000340.lua new file mode 100644 index 00000000..36198248 --- /dev/null +++ b/script/c511000340.lua @@ -0,0 +1,46 @@ +--Dragon's Shining Scales +function c511000340.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511000340.target) + e1:SetOperation(c511000340.activate) + c:RegisterEffect(e1) +end +function c511000340.filter(c) + return c:IsFaceup() and c:GetLevel()>0 and c:IsRace(RACE_DRAGON) and c:IsAbleToHand() +end +function c511000340.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000340.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511000340.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511000340.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511000340.spfilter(c,e,tp,lv) + return c:IsRace(RACE_DRAGON) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000340.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local lv=tc:GetLevel() + if Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 and tc:IsLocation(LOCATION_HAND) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000340.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,lv) + if Duel.SpecialSummonStep(g:GetFirst(),0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + g:GetFirst():RegisterEffect(e1) + Duel.SpecialSummonComplete() + end + end + end +end diff --git a/script/c511000341.lua b/script/c511000341.lua new file mode 100644 index 00000000..d6398445 --- /dev/null +++ b/script/c511000341.lua @@ -0,0 +1,45 @@ +--Dragon Evolution +function c511000341.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c511000341.cost) + e1:SetTarget(c511000341.target) + e1:SetOperation(c511000341.activate) + c:RegisterEffect(e1) +end +function c511000341.rfilter(c,e,tp) + local lv=c:GetLevel() + return lv>0 and c:IsRace(RACE_DRAGON) and Duel.IsExistingMatchingCard(c511000341.spfilter,tp,LOCATION_HAND,0,1,c,e,tp,lv) +end +function c511000341.spfilter(c,e,tp,lv) + return c:IsRace(RACE_DRAGON) and c:GetLevel()==lv+1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000341.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511000341.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c511000341.rfilter,1,nil,e,tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + local tc=Duel.SelectReleaseGroup(tp,c511000341.rfilter,1,1,nil,e,tp):GetFirst() + local lv=tc:GetLevel() + Duel.Release(tc,REASON_COST) + Duel.SetTargetParam(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000341.activate(e,tp,eg,ep,ev,re,r,rp) + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000341.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,lv) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000342.lua b/script/c511000342.lua new file mode 100644 index 00000000..765625b9 --- /dev/null +++ b/script/c511000342.lua @@ -0,0 +1,31 @@ +--Dragon Gust +function c511000342.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000342.condition) + e1:SetTarget(c511000342.target) + e1:SetOperation(c511000342.activate) + c:RegisterEffect(e1) +end +function c511000342.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c511000342.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) and Duel.IsExistingMatchingCard(c511000342.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000342.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000342.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000343.lua b/script/c511000343.lua new file mode 100644 index 00000000..dad4bda8 --- /dev/null +++ b/script/c511000343.lua @@ -0,0 +1,33 @@ +--Dragon Switch +function c511000343.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000343.cost) + e1:SetTarget(c511000343.target) + e1:SetOperation(c511000343.activate) + c:RegisterEffect(e1) +end +function c511000343.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,2,nil,RACE_DRAGON) end + local rg=Duel.SelectReleaseGroup(tp,Card.IsRace,2,2,nil,RACE_DRAGON) + Duel.Release(rg,REASON_COST) +end +function c511000343.spfilter(c,e,tp) + return c:IsRace(RACE_DRAGON) and c:IsLevelAbove(7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000343.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000343.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000343.activate(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,c511000343.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 diff --git a/script/c511000344.lua b/script/c511000344.lua new file mode 100644 index 00000000..9239d2b6 --- /dev/null +++ b/script/c511000344.lua @@ -0,0 +1,28 @@ +--Hopeful Future +function c511000344.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000344.condition) + e1:SetTarget(c511000344.target) + e1:SetOperation(c511000344.activate) + c:RegisterEffect(e1) +end +function c511000344.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 +end +function c511000344.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)>0 and Duel.IsPlayerCanDraw(tp,2) end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_GRAVE,0) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c511000344.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_GRAVE,0) + if Duel.SendtoDeck(g,nil,2,REASON_EFFECT) then + Duel.ShuffleDeck(tp) + Duel.BreakEffect() + Duel.Draw(tp,2,REASON_EFFECT) + end +end diff --git a/script/c511000345.lua b/script/c511000345.lua new file mode 100644 index 00000000..7632f2c6 --- /dev/null +++ b/script/c511000345.lua @@ -0,0 +1,29 @@ +--Immortal Dragon +function c511000345.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000345.target) + e1:SetOperation(c511000345.activate) + c:RegisterEffect(e1) +end +function c511000345.filter(c,e,tp) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000345.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000345.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000345.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000345.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000345.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000346.lua b/script/c511000346.lua new file mode 100644 index 00000000..4dfa37e1 --- /dev/null +++ b/script/c511000346.lua @@ -0,0 +1,36 @@ +--Lifeline from the Graveyard +function c511000346.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000346.sptg) + e1:SetOperation(c511000346.spop) + c:RegisterEffect(e1) +end +function c511000346.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000346.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c511000346.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000346.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) + local g1=g:GetFirst():GetLevel()*100 + local g2=g:GetNext():GetLevel()*100 + if Duel.CheckLPCost(tp,g1+g2) then + Duel.PayLPCost(tp,g1+g2) + else + Duel.Damage(tp,g1+g2,REASON_COST) + end +end +function c511000346.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + local ct=Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511000347.lua b/script/c511000347.lua new file mode 100644 index 00000000..b6e06b7d --- /dev/null +++ b/script/c511000347.lua @@ -0,0 +1,43 @@ +--Scale Mail +function c511000347.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(c511000347.condition) + e1:SetTarget(c511000347.target) + e1:SetOperation(c511000347.activate) + c:RegisterEffect(e1) +end +function c511000347.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000347.indfilter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c511000347.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(c511000347.indfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000347.indfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000347.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511000348.lua b/script/c511000348.lua new file mode 100644 index 00000000..d3553064 --- /dev/null +++ b/script/c511000348.lua @@ -0,0 +1,65 @@ +--Cleansing Water +function c511000348.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000348.condition) + e1:SetTarget(c511000348.target) + e1:SetOperation(c511000348.activate) + c:RegisterEffect(e1) +end +function c511000348.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000348.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000348.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetTextAttack()) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(tc:GetTextDefense()) + tc:RegisterEffect(e2) + local eqg=tc:GetEquipGroup() + if eqg:GetCount()>0 then + Duel.Destroy(eqg,REASON_EFFECT) + end + --destroy equip + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetDescription(aux.Stringid(511000348,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_EQUIP) + e3:SetTarget(c511000348.destg) + e3:SetOperation(c511000348.desop) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end +function c511000348.filter(c,ec) + return c:GetEquipTarget()==ec +end +function c511000348.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511000348.filter,1,nil,e:GetHandler()) end + local dg=eg:Filter(c511000348.filter,nil,e:GetHandler()) + Duel.SetTargetCard(dg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,dg:GetCount(),0,0) +end +function c511000348.desop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c511000349.lua b/script/c511000349.lua new file mode 100644 index 00000000..5ccbc205 --- /dev/null +++ b/script/c511000349.lua @@ -0,0 +1,35 @@ +--Awakening from Beyond +function c511000349.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000349.target) + e1:SetOperation(c511000349.activate) + c:RegisterEffect(e1) +end +function c511000349.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511000349.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000349.tgfilter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,2) and Duel.IsExistingTarget(c511000349.tgfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectTarget(tp,c511000349.tgfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,2) +end +function c511000349.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local tc=Duel.GetFirstTarget() + if Duel.Draw(p,d,REASON_EFFECT) then + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end + end +end diff --git a/script/c511000350.lua b/script/c511000350.lua new file mode 100644 index 00000000..a2b302d6 --- /dev/null +++ b/script/c511000350.lua @@ -0,0 +1,46 @@ +--Dragonic Unit Ritual +function c511000350.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000350.cost) + e1:SetCondition(c511000350.condition) + e1:SetTarget(c511000350.target) + e1:SetOperation(c511000350.activate) + c:RegisterEffect(e1) +end +function c511000350.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c511000350.filter(c,code) + return c:IsCode(code) and c:IsFaceup() and c:IsAbleToGrave() +end +function c511000350.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000350.filter,tp,LOCATION_MZONE,0,1,nil,511002171) + and Duel.IsExistingMatchingCard(c511000350.filter,tp,LOCATION_MZONE,0,1,nil,511002255) +end +function c511000350.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanSpecialSummonMonster(tp,38109772,0,0x21,2800,2300,7,RACE_DRAGON,ATTRIBUTE_FIRE) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0) +end +function c511000350.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=-1 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,38109772,0,0x21,2800,2300,7,RACE_DRAGON,ATTRIBUTE_FIRE) then return end + local g1=Duel.GetMatchingGroup(c511000350.filter,tp,LOCATION_MZONE,0,nil,511002171) + local g2=Duel.GetMatchingGroup(c511000350.filter,tp,LOCATION_MZONE,0,nil,511002255) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + if Duel.SendtoGrave(sg1,REASON_EFFECT)>0 then + local tc=Duel.CreateToken(tp,38109772) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end + end +end diff --git a/script/c511000351.lua b/script/c511000351.lua new file mode 100644 index 00000000..be6ec7f2 --- /dev/null +++ b/script/c511000351.lua @@ -0,0 +1,19 @@ +--Dragonic Enrage +function c511000351.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000351.activate) + c:RegisterEffect(e1) +end +function c511000351.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_PIERCE) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DRAGON)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000352.lua b/script/c511000352.lua new file mode 100644 index 00000000..cbfc550f --- /dev/null +++ b/script/c511000352.lua @@ -0,0 +1,42 @@ +--Dragon's Charge +function c511000352.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000352.condition) + e1:SetTarget(c511000352.target) + e1:SetOperation(c511000352.activate) + c:RegisterEffect(e1) +end +function c511000352.cfilter(c,tp) + local rc=c:GetReasonCard() + return c:IsReason(REASON_BATTLE) and rc:IsRace(RACE_DRAGON) and rc:IsControler(tp) and rc:IsRelateToBattle() +end +function c511000352.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000352.cfilter,1,nil,tp) +end +function c511000352.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000352.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)>0 then + Duel.BreakEffect() + local tc=Duel.GetOperatedGroup():GetFirst() + Duel.ConfirmCards(tp,tc) + if tc:IsRace(RACE_DRAGON) and tc:IsSummonable(true,nil) then + if Duel.SelectYesNo(tp,aux.Stringid(511000352,REASON_EFFECT)) then + Duel.Summon(tp,tc,true,nil) + else + Duel.ShuffleHand(tp) + end + else + Duel.ShuffleHand(tp) + end + end +end diff --git a/script/c511000353.lua b/script/c511000353.lua new file mode 100644 index 00000000..82deb1fb --- /dev/null +++ b/script/c511000353.lua @@ -0,0 +1,38 @@ +--Dragon's Evil Eye +function c511000353.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE+TIMING_EQUIP) + e1:SetTarget(c511000353.target) + e1:SetOperation(c511000353.activate) + c:RegisterEffect(e1) +end +function c511000353.ctfilter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c511000353.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000353.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chk==0 then + local ct=Duel.GetMatchingGroupCount(c511000353.ctfilter,tp,LOCATION_MZONE,0,nil) + return ct>0 and Duel.IsExistingMatchingCard(c511000353.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,ct,c) + end + local g=Duel.GetMatchingGroup(c511000353.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000353.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=Duel.GetMatchingGroupCount(c511000353.ctfilter,tp,LOCATION_MZONE,0,nil) + local g=Duel.GetMatchingGroup(c511000353.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + if ct>0 and g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=g:Select(tp,ct,ct,nil) + Duel.HintSelection(dg) + Duel.Destroy(dg,REASON_EFFECT) + end +end diff --git a/script/c511000354.lua b/script/c511000354.lua new file mode 100644 index 00000000..78458fff --- /dev/null +++ b/script/c511000354.lua @@ -0,0 +1,31 @@ +--Dragon's Scent +function c511000354.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000354.condition) + e1:SetTarget(c511000354.target) + e1:SetOperation(c511000354.operation) + c:RegisterEffect(e1) +end +function c511000354.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(nil,tp,0,LOCATION_MZONE,2,nil) +end +function c511000354.filter(c,e,tp) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000354.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000354.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000354.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,c511000354.filter,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 \ No newline at end of file diff --git a/script/c511000355.lua b/script/c511000355.lua new file mode 100644 index 00000000..10feddbb --- /dev/null +++ b/script/c511000355.lua @@ -0,0 +1,49 @@ +--Dragons Unite +function c511000355.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(c511000355.target) + e1:SetOperation(c511000355.operation) + c:RegisterEffect(e1) + --Atk,def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511000355.value) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(c511000355.value) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511000355.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 c511000355.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511000355.filter(c) + return c:IsRace(RACE_DRAGON) and c:IsFaceup() +end +function c511000355.value(e,c) + return Duel.GetMatchingGroupCount(c511000355.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,nil)*400 +end diff --git a/script/c511000356.lua b/script/c511000356.lua new file mode 100644 index 00000000..7dc57d90 --- /dev/null +++ b/script/c511000356.lua @@ -0,0 +1,50 @@ +--Duality +function c511000356.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000356.cost) + e1:SetTarget(c511000356.target) + e1:SetOperation(c511000356.operation) + c:RegisterEffect(e1) +end +function c511000356.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(100) + if chk==0 then return true end +end +function c511000356.cfilter(c,e,tp) + return Duel.IsExistingMatchingCard(c511000356.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,c,0) +end +function c511000356.spfilter(c,e,tp,card,att) + if not c:IsCanBeSpecialSummoned(e,0,tp,false,false) then return false end + if c:IsAttribute(ATTRIBUTE_LIGHT) and (att==ATTRIBUTE_DARK or (card~=nil and card:IsAttribute(ATTRIBUTE_DARK))) then return true end + return c:IsAttribute(ATTRIBUTE_DARK) and (att==ATTRIBUTE_LIGHT or (card~=nil and card:IsAttribute(ATTRIBUTE_LIGHT))) +end +function c511000356.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=100 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c511000356.cfilter,1,nil,e,tp) + end + local g=Duel.SelectReleaseGroup(tp,c511000356.cfilter,1,1,nil,e,tp) + local att=0 + if g:GetFirst():IsAttribute(ATTRIBUTE_DARK) then + att=ATTRIBUTE_DARK + else + att=ATTRIBUTE_LIGHT + end + Duel.Release(g,REASON_COST) + Duel.SetTargetParam(att) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000356.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000356.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,nil,ac) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000357.lua b/script/c511000357.lua new file mode 100644 index 00000000..1354749e --- /dev/null +++ b/script/c511000357.lua @@ -0,0 +1,44 @@ +--Guidance of Light and Dark +function c511000357.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCost(c511000357.spcost) + e1:SetCondition(c511000357.spcon) + e1:SetTarget(c511000357.sptg) + e1:SetOperation(c511000357.spop) + c:RegisterEffect(e1) +end +function c511000357.costfilter(c) + return c:IsCode(47297616) and c:IsAbleToRemoveAsCost() +end +function c511000357.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000357.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000357.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511000357.spfilter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_DARK+ATTRIBUTE_LIGHT) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000357.cfilter(c,tp) + return c:IsRace(RACE_DRAGON) and c:GetPreviousControler()==tp and c:GetPreviousLocation()==LOCATION_MZONE +end +function c511000357.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000357.cfilter,1,nil,tp) +end +function c511000357.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000357.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000357.spop(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,c511000357.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 diff --git a/script/c511000358.lua b/script/c511000358.lua new file mode 100644 index 00000000..621124e2 --- /dev/null +++ b/script/c511000358.lua @@ -0,0 +1,31 @@ +--Miracle of Draconian Wrath +function c511000358.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511000358.condition) + e1:SetTarget(c511000358.target) + e1:SetOperation(c511000358.operation) + c:RegisterEffect(e1) +end +function c511000358.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsRace,1,nil,RACE_DRAGON) +end +function c511000358.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() +end +function c511000358.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>1 + and Duel.IsExistingTarget(c511000358.filter,tp,LOCATION_DECK,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + Duel.SelectTarget(tp,c511000358.filter,tp,LOCATION_DECK,0,2,2,nil) +end +function c511000358.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>1 then + Duel.SSet(tp,g) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000359.lua b/script/c511000359.lua new file mode 100644 index 00000000..66585d4a --- /dev/null +++ b/script/c511000359.lua @@ -0,0 +1,43 @@ +--Light of the Shadows +function c511000359.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000359.cost) + e1:SetTarget(c511000359.target) + e1:SetOperation(c511000359.activate) + c:RegisterEffect(e1) +end +function c511000359.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000359.filter(c,e,tp) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and Duel.IsExistingTarget(c511000359.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetLevel()) +end +function c511000359.spfilter(c,e,tp,lv) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==lv +end +function c511000359.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c511000359.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000359.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end +end +function c511000359.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511000359.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=Duel.SelectMatchingCard(tp,c511000359.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,g:GetFirst():GetLevel()) + if sp:GetCount()~=0 then + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511000360.lua b/script/c511000360.lua new file mode 100644 index 00000000..a6d06db5 --- /dev/null +++ b/script/c511000360.lua @@ -0,0 +1,32 @@ +--Spark of the Light Dragon +function c511000360.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000360.cost) + e1:SetTarget(c511000360.target) + e1:SetOperation(c511000360.operation) + c:RegisterEffect(e1) +end +function c511000360.costfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsAbleToGraveAsCost() +end +function c511000360.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000360.costfilter,tp,LOCATION_HAND,0,2,nil) end + Duel.DiscardHand(tp,c511000360.costfilter,2,2,REASON_COST) +end +function c511000360.spfilter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000360.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingTarget(c511000360.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000360.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000360.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000361.lua b/script/c511000361.lua new file mode 100644 index 00000000..5b7d1d24 --- /dev/null +++ b/script/c511000361.lua @@ -0,0 +1,32 @@ +--Twin Dragons +function c511000361.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000361.target) + e1:SetOperation(c511000361.activate) + c:RegisterEffect(e1) +end +function c511000361.filter(c,e,tp) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:GetLevel()<=4 and Duel.IsExistingTarget(c511000361.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,c:GetLevel()) +end +function c511000361.spfilter(c,e,tp,lv) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==lv +end +function c511000361.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c511000361.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000361.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end +end +function c511000361.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511000361.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=Duel.SelectMatchingCard(tp,c511000361.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,g:GetFirst():GetLevel()) + if sp:GetCount()~=0 then + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511000362.lua b/script/c511000362.lua new file mode 100644 index 00000000..2f038e69 --- /dev/null +++ b/script/c511000362.lua @@ -0,0 +1,44 @@ +--Dark End Dragon (Anime) +function c511000362.initial_effect(c) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000362,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000362.target) + e1:SetOperation(c511000362.operation) + c:RegisterEffect(e1) +end +function c511000362.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + local ct=c:GetFlagEffect(511000362)+1 + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToGrave() end + if chk==0 then return c:GetAttack()>=ct*500 and c:GetDefense()>=ct*500 + and Duel.IsExistingTarget(Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,nil) end + c:RegisterFlagEffect(511000362,RESET_CHAIN,0,0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c511000362.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:GetAttack()>=500 and c:GetDefense()>=500 then + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end diff --git a/script/c511000363.lua b/script/c511000363.lua new file mode 100644 index 00000000..1a71ddf2 --- /dev/null +++ b/script/c511000363.lua @@ -0,0 +1,31 @@ +--Dynamite Dragon +function c511000363.initial_effect(c) + --deckdes + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000363,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c511000363.target) + e1:SetOperation(c511000363.operation) + c:RegisterEffect(e1) +end +function c511000363.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000363.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-300) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000364.lua b/script/c511000364.lua new file mode 100644 index 00000000..beb5d8eb --- /dev/null +++ b/script/c511000364.lua @@ -0,0 +1,50 @@ +--Light End Dragon (Anime) +function c511000364.initial_effect(c) + --addown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000364,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000364.target) + e1:SetOperation(c511000364.operation) + c:RegisterEffect(e1) +end +function c511000364.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ct=c:GetFlagEffect(511000364)+1 + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return c:GetAttack()>=ct*500 and c:GetDefense()>=ct*500 + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + c:RegisterFlagEffect(511000364,RESET_CHAIN,0,0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000364.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() + and c:GetAttack()>=500 and c:GetDefense()>=500 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(-1500) + tc:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e4) + end +end diff --git a/script/c511000365.lua b/script/c511000365.lua new file mode 100644 index 00000000..ddefd327 --- /dev/null +++ b/script/c511000365.lua @@ -0,0 +1,23 @@ +--Red Wyrm +function c511000365.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000365,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c511000365.damtg) + e1:SetOperation(c511000365.damop) + c:RegisterEffect(e1) +end +function c511000365.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(rp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,rp,500) +end +function c511000365.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000366.lua b/script/c511000366.lua new file mode 100644 index 00000000..59780011 --- /dev/null +++ b/script/c511000366.lua @@ -0,0 +1,36 @@ +--Samsara Dragon +function c511000366.initial_effect(c) + --revive + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000366,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c511000366.cost) + e1:SetTarget(c511000366.target) + e1:SetOperation(c511000366.operation) + c:RegisterEffect(e1) +end +function c511000366.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000366.filter(c,e,tp) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000366.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000366.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000366.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000366.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000366.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRace(RACE_DRAGON) and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000367.lua b/script/c511000367.lua new file mode 100644 index 00000000..5076e969 --- /dev/null +++ b/script/c511000367.lua @@ -0,0 +1,34 @@ +--Shining Dragon +function c511000367.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000367,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000367.cost) + e1:SetTarget(c511000367.target) + e1:SetOperation(c511000367.operation) + c:RegisterEffect(e1) +end +function c511000367.filter(c) + return c:IsFacedown() and c:IsDestructable() +end +function c511000367.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511000367.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511000367.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000367.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000367.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000368.lua b/script/c511000368.lua new file mode 100644 index 00000000..4577e8f8 --- /dev/null +++ b/script/c511000368.lua @@ -0,0 +1,186 @@ +--Number 92: Heart-eartH Dragon (Anime) +function c511000368.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,9,3) + c:EnableReviveLimit() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000368,0)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000368.rmcon) + e3:SetCost(c511000368.rmcost) + e3:SetTarget(c511000368.rmtg) + e3:SetOperation(c511000368.rmop) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000368,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCost(c511000368.spcost) + e4:SetCondition(c511000368.spcon) + e4:SetTarget(c511000368.sptg) + e4:SetOperation(c511000368.spop) + c:RegisterEffect(e4) + --atkup + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000368,2)) + e5:SetCategory(CATEGORY_ATKCHANGE) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + e5:SetCondition(c511000368.atkcon) + e5:SetOperation(c511000368.atkop) + c:RegisterEffect(e5) + --pos + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511000368,3)) + e6:SetCategory(CATEGORY_POSITION) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_SPSUMMON_SUCCESS) + e6:SetTarget(c511000368.postg) + e6:SetOperation(c511000368.posop) + c:RegisterEffect(e6) + --Activate + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e8:SetOperation(c511000368.dam) + e8:SetRange(LOCATION_MZONE) + c:RegisterEffect(e8) + --recover + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(511000368,4)) + e7:SetCategory(CATEGORY_RECOVER) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e7:SetRange(LOCATION_MZONE) + e7:SetCode(EVENT_BATTLED) + e7:SetLabelObject(e8) + e7:SetTarget(c511000368.rectg) + e7:SetOperation(c511000368.recop) + c:RegisterEffect(e7) + --number generic effect + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e8:SetValue(c511000368.indes) + c:RegisterEffect(e8) + if not c511000368.global_check then + c511000368.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000368.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511000368.xyz_number=92 +function c511000368.rmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000368.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000368.filter(c) + return c:IsAbleToRemove() +end +function c511000368.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000368.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c511000368.filter,tp,0,LOCATION_ONFIELD,nil,Duel.GetTurnCount()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511000368.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000368.filter,tp,0,LOCATION_ONFIELD,nil) + if g:GetCount()>0 then + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end +end +function c511000368.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(511000368)==0 end + c:RegisterFlagEffect(511000368,nil,0,1) +end +function c511000368.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():GetOverlayCount()==0 +end +function c511000368.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000368.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP) + end +end +function c511000368.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511000368.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local atk=Duel.GetFieldGroupCount(tp,LOCATION_REMOVED,LOCATION_REMOVED)*1000 + if atk>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c511000368.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511000368.posop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,0,LOCATION_MZONE,nil) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0,true) + local tc=g:GetFirst() + while tc do + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511000368.dam(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,0) + e:SetLabel(ev) +end +function c511000368.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabelObject():GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,e:GetLabelObject():GetLabel()) +end +function c511000368.recop(e,tp,eg,ep,ev,re,r,rp) + if Duel.Damage(1-tp,e:GetLabelObject():GetLabel(),REASON_EFFECT) then + Duel.Recover(tp,e:GetLabelObject():GetLabel(),REASON_EFFECT) + end + e:GetLabelObject():SetLabel(0) +end +function c511000368.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,97403510) + Duel.CreateToken(1-tp,97403510) +end +function c511000368.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000369.lua b/script/c511000369.lua new file mode 100644 index 00000000..d38e2ae1 --- /dev/null +++ b/script/c511000369.lua @@ -0,0 +1,186 @@ +--Number 100: Numeron Dragon +--By Edo9300 +--atkup fixed by eclair +--forced trigger fixed by MLD +function c511000369.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,1,2) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000369,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c511000369.spcon) + e1:SetTarget(c511000369.sptg) + e1:SetOperation(c511000369.spop) + c:RegisterEffect(e1) + --atk change + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511000369.atkop) + c:RegisterEffect(e2) + --destroy and return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000369,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c511000369.destg) + e3:SetOperation(c511000369.desop) + c:RegisterEffect(e3) + --attack up + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetDescription(aux.Stringid(511000369,2)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetCountLimit(1) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c511000369.regcost) + e4:SetOperation(c511000369.regop) + c:RegisterEffect(e4) + --battle indestructable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e5:SetValue(c511000369.indes) + c:RegisterEffect(e5) + if not c511000369.global_check then + c511000369.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + ge1:SetTarget(c511000369.stcheck) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000369.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511000369.xyz_number=100 +function c511000369.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,57314798) + Duel.CreateToken(1-tp,57314798) +end +function c511000369.spcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()~=tp and at:IsType(TYPE_XYZ) and Duel.GetAttackTarget()==nil and Duel.GetFieldGroupCount(tp,LOCATION_HAND+LOCATION_ONFIELD,0)==0 +end +function c511000369.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511000369.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511000369.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + end +end +function c511000369.retfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:GetFlagEffect(511000369)>0 +end +function c511000369.retfilter2(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:GetFlagEffect(511000369)>0 + and not Duel.IsExistingMatchingCard(function(c,seq)return c:GetSequence()==seq end,tp,LOCATION_SZONE,0,1,c,c:GetFlagEffectLabel(511000370)) +end +function c511000369.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg1=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg1,sg1:GetCount(),0,0) + local sg2=Duel.GetMatchingGroup(c511000369.retfilter,tp,0x32,0x32,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,sg2,sg2:GetCount(),0,0) +end +function c511000369.fil(c,seq,p) + return c:GetFlagEffectLabel(511000370)==seq and c:GetFlagEffectLabel(511000371)==p +end +function c511000369.fil2(c,seq,p) + return c:IsFaceup() and not (c:IsType(TYPE_FIELD+TYPE_CONTINUOUS) or c:IsHasEffect(EFFECT_REMAIN_FIELD)) +end +function c511000369.transchk(c) + return c:GetFlagEffectLabel(511000368)==0 +end +function c511000369.desop(e,tp,eg,ep,ev,re,r,rp) + local sg1=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(sg1,REASON_EFFECT) + local sg2=Duel.GetMatchingGroup(c511000369.retfilter2,tp,0x32,0x32,nil) + --if sg2:IsExists(c511000369.transchk,1,nil) then return end + local tc=sg2:GetFirst() + while tc do + local sgf=sg2:Filter(c511000369.fil,nil,tc:GetFlagEffectLabel(511000370),tc:GetFlagEffectLabel(511000371)) + if sgf:GetCount()>1 then + tc=sgf:Select(tc:GetFlagEffectLabel(511000371),1,1,nil):GetFirst() + sg2:Remove(c511000369.fil,nil,tc:GetFlagEffectLabel(511000370),tc:GetFlagEffectLabel(511000371)) + end + Duel.MoveToField(tc,tp,tc:GetFlagEffectLabel(511000371),LOCATION_SZONE,tc:GetFlagEffectLabel(511000369),true) + Duel.MoveSequence(tc,tc:GetFlagEffectLabel(511000370)) + tc=sg2:GetNext() + end + Duel.SendtoGrave(sg2:Filter(c511000369.fil2,nil),REASON_RULE) +end +function c511000369.regcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000369.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE_START) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetOperation(c511000369.atkupop) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511000369.atkupop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local atk=g:GetSum(Card.GetRank)*1000 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(atk) + c:RegisterEffect(e1) +end +function c511000369.indes(e,c) + return not c:IsSetCard(0x48) +end +function c511000369.stcheck(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsType,nil,TYPE_SPELL+TYPE_TRAP) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511000369,RESET_PHASE+PHASE_END,0,1,tc:GetPreviousPosition()) + tc:RegisterFlagEffect(511000370,RESET_PHASE+PHASE_END,0,1,tc:GetPreviousSequence()) + tc:RegisterFlagEffect(511000371,RESET_PHASE+PHASE_END,0,1,tc:GetPreviousControler()) + tc=g:GetNext() + end + end +end diff --git a/script/c511000370.lua b/script/c511000370.lua new file mode 100644 index 00000000..cec0cda3 --- /dev/null +++ b/script/c511000370.lua @@ -0,0 +1,75 @@ +--Natural Selection +function c511000370.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000370.condition) + e1:SetTarget(c511000370.target) + e1:SetOperation(c511000370.activate) + c:RegisterEffect(e1) +end +function c511000370.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000370.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511000370.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511000370.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000370.filter,tp,0,LOCATION_MZONE,1,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and + Duel.IsPlayerCanSpecialSummonMonster(tp,511000371,0,nil,nil,nil,nil,nil,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000370.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000370.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + local token=Duel.CreateToken(tp,511000371) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetValue(tc:GetDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(tc:GetLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + token:RegisterEffect(e5) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511000370.destg) + e2:SetOperation(c511000370.desop) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2) + end +end +function c511000370.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 c511000370.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000372.lua b/script/c511000372.lua new file mode 100644 index 00000000..27a0127c --- /dev/null +++ b/script/c511000372.lua @@ -0,0 +1,33 @@ +--Soul Taker (Anime) +function c511000372.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000372.target) + e1:SetOperation(c511000372.activate) + c:RegisterEffect(e1) +end +function c511000372.filter(c) + return not (c:IsHasEffect(EFFECT_UNRELEASABLE_SUM) or c:IsHasEffect(EFFECT_UNRELEASABLE_NONSUM)) +end +function c511000372.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511000372.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000372.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000372.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,1000) +end +function c511000372.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RELEASE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.BreakEffect() + Duel.Recover(1-tp,1000,REASON_EFFECT) + end +end diff --git a/script/c511000373.lua b/script/c511000373.lua new file mode 100644 index 00000000..0ff91ec1 --- /dev/null +++ b/script/c511000373.lua @@ -0,0 +1,28 @@ +--Monster Recovery (Anime) +function c511000373.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:SetTarget(c511000373.target) + e1:SetOperation(c511000373.activate) + c:RegisterEffect(e1) +end +function c511000373.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) + and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND+LOCATION_ONFIELD) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000373.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,LOCATION_HAND+LOCATION_ONFIELD,0) + if g:GetCount()==0 then return end + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(p) + Duel.BreakEffect() + Duel.Draw(p,5,REASON_EFFECT) +end diff --git a/script/c511000374.lua b/script/c511000374.lua new file mode 100644 index 00000000..16947937 --- /dev/null +++ b/script/c511000374.lua @@ -0,0 +1,33 @@ +--Cursed Waters Level 3 +function c511000374.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000374.condition) + e1:SetOperation(c511000374.activate) + c:RegisterEffect(e1) +end +function c511000374.filter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c511000374.check() + return Duel.IsExistingMatchingCard(c511000374.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end +function c511000374.condition(e,tp,eg,ep,ev,re,r,rp) + return c511000374.check() +end +function c511000374.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(c511000374.sumfilter)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000374.sumfilter(c) + return c:GetLevel()<=3 +end diff --git a/script/c511000375.lua b/script/c511000375.lua new file mode 100644 index 00000000..874c98cf --- /dev/null +++ b/script/c511000375.lua @@ -0,0 +1,45 @@ +--Penguin Sword +function c511000375.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(c511000375.target) + e1:SetOperation(c511000375.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(800) + 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(c511000375.eqlimit) + c:RegisterEffect(e3) +end +function c511000375.eqlimit(e,c) + return c:IsSetCard(0x5a) +end +function c511000375.filter(c) + return c:IsFaceup() and c:IsSetCard(0x5a) +end +function c511000375.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511000375.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000375.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000375.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000375.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 diff --git a/script/c511000376.lua b/script/c511000376.lua new file mode 100644 index 00000000..d68fba8d --- /dev/null +++ b/script/c511000376.lua @@ -0,0 +1,29 @@ +--Malevolent Catastrophe (Anime) +function c511000376.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000376.condition) + e1:SetTarget(c511000376.target) + e1:SetOperation(c511000376.activate) + c:RegisterEffect(e1) +end +function c511000376.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000376.filter(c) + return c:IsDestructable() +end +function c511000376.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000376.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000376.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000376.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000376.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511000377.lua b/script/c511000377.lua new file mode 100644 index 00000000..3f0d4499 --- /dev/null +++ b/script/c511000377.lua @@ -0,0 +1,83 @@ +--Spell Absorption (Anime) +function c511000377.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e1:SetCode(511001762) + e1:SetCondition(c511000377.condition) + e1:SetTarget(c511000377.target) + e1:SetOperation(c511000377.activate) + c:RegisterEffect(e1) + if not c511000377.global_check then + c511000377.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511000377.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511000377.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,0,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511001762)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511000377.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001762,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511000377.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if c:GetAttack()>e:GetLabel() then + val=c:GetAttack()-e:GetLabel() + Duel.RaiseEvent(c,511001762,re,REASON_EFFECT,rp,tp,val) + end + e:SetLabel(c:GetAttack()) +end +function c511000377.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(1-tp) and ev>0 and re and re:IsActiveType(TYPE_SPELL) +end +function c511000377.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ec=eg:GetFirst() + 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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + ec:CreateEffectRelation(e) +end +function c511000377.activate(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local tc=Duel.GetFirstTarget() + if ec and ec:IsRelateToEffect(e) and ec:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-ev) + ec:RegisterEffect(e1) + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(ev) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c511000378.lua b/script/c511000378.lua new file mode 100644 index 00000000..cba113d4 --- /dev/null +++ b/script/c511000378.lua @@ -0,0 +1,41 @@ +--Berserk Dragon (Anime) +function c511000378.initial_effect(c) + c:EnableReviveLimit() + --spsummon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --attack 4 times + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(3) + c:RegisterEffect(e2) + --cost + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000378,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_REPEAT) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetCondition(c511000378.atkcon) + e3:SetOperation(c511000378.atkop) + c:RegisterEffect(e3) +end +function c511000378.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511000378.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end diff --git a/script/c511000379.lua b/script/c511000379.lua new file mode 100644 index 00000000..2a745a6a --- /dev/null +++ b/script/c511000379.lua @@ -0,0 +1,31 @@ +--Forbidden Beast Inun +function c511000379.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000379,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511000379.srcon) + e1:SetTarget(c511000379.srtg) + e1:SetOperation(c511000379.srop) + c:RegisterEffect(e1) +end +function c511000379.srcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511000379.srtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000379.filter(c) + return c:IsCode(511000380) and c:IsAbleToHand() +end +function c511000379.srop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000379.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000380.lua b/script/c511000380.lua new file mode 100644 index 00000000..04fb014d --- /dev/null +++ b/script/c511000380.lua @@ -0,0 +1,17 @@ +--Forbidden Mantra +function c511000380.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(511000380) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(1,1) + e1:SetValue(1) + c:RegisterEffect(e1) +end diff --git a/script/c511000381.lua b/script/c511000381.lua new file mode 100644 index 00000000..3e1545c8 --- /dev/null +++ b/script/c511000381.lua @@ -0,0 +1,46 @@ +--Wonder Cloud +function c511000381.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000381.cost) + e1:SetTarget(c511000381.target) + e1:SetOperation(c511000381.operation) + c:RegisterEffect(e1) +end +function c511000381.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD,0,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511000381.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) end + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511000381.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + if Duel.Draw(p,ct,REASON_EFFECT) then + local ct2=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local g=Duel.GetDecktopGroup(tp,ct2) + if Duel.Remove(g,POS_FACEUP,REASON_EFFECT) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetTargetRange(0,LOCATION_ONFIELD+LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_EXTRA) + e1:SetTarget(c511000381.distarget) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511000381.distarget(e,c) + return c~=e:GetHandler() and c:IsType(TYPE_TRAP+TYPE_SPELL+TYPE_MONSTER) +end diff --git a/script/c511000382.lua b/script/c511000382.lua new file mode 100644 index 00000000..1f0a1e26 --- /dev/null +++ b/script/c511000382.lua @@ -0,0 +1,46 @@ +--Defense Seal Wall +function c511000382.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000382.condition) + e1:SetOperation(c511000382.activate) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c511000382.condition) + e2:SetOperation(c511000382.activate) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511000382.descon) + e3:SetOperation(c511000382.desop) + c:RegisterEffect(e3) +end +function c511000382.cfilter(c) + return c:IsCode(13893596) and c:IsFaceup() +end +function c511000382.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.IsExistingMatchingCard(c511000382.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000382.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if not e:GetHandler():IsRelateToEffect(e) then return end + if tc and tc:IsRelateToBattle() and Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end +function c511000382.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,13893596) +end +function c511000382.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000383.lua b/script/c511000383.lua new file mode 100644 index 00000000..daf28fb4 --- /dev/null +++ b/script/c511000383.lua @@ -0,0 +1,30 @@ +--Rage of the Forbidden One +function c511000383.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000383.condition) + e1:SetOperation(c511000383.activate) + c:RegisterEffect(e1) +end +function c511000383.filter(c,code) + return c:IsCode(code) and c:IsFaceup() +end +function c511000383.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000383.filter,tp,LOCATION_MZONE,0,1,nil,13893596) +end +function c511000383.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetTargetRange(0,LOCATION_ONFIELD+LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_EXTRA) + e1:SetTarget(c511000383.distarget) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000383.distarget(e,c) + return c~=e:GetHandler() and c:IsType(TYPE_TRAP+TYPE_SPELL+TYPE_MONSTER) +end diff --git a/script/c511000384.lua b/script/c511000384.lua new file mode 100644 index 00000000..908bc5c5 --- /dev/null +++ b/script/c511000384.lua @@ -0,0 +1,20 @@ +--Barrier of the Ancient Codex +function c511000384.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) + --indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e2:SetTarget(c511000384.infilter) + c:RegisterEffect(e2) +end +function c511000384.infilter(e,c) + return c:GetCode()==511000380 +end diff --git a/script/c511000385.lua b/script/c511000385.lua new file mode 100644 index 00000000..e9583451 --- /dev/null +++ b/script/c511000385.lua @@ -0,0 +1,34 @@ +--Beast-Concealed Mantra +function c511000385.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000385.condition) + e1:SetTarget(c511000385.target) + e1:SetOperation(c511000385.activate) + c:RegisterEffect(e1) +end +function c511000385.cfilter(c,tp) + return c:IsSetCard(0x201) +end +function c511000385.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000385.cfilter,1,nil,tp) +end +function c511000385.filter(c) + return c:IsCode(511000380) and c:IsAbleToHand() +end +function c511000385.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000385.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000385.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000385.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000386.lua b/script/c511000386.lua new file mode 100644 index 00000000..5a389d87 --- /dev/null +++ b/script/c511000386.lua @@ -0,0 +1,39 @@ +--Mantra of Agony +function c511000386.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511000386.condition) + e1:SetTarget(c511000386.target) + e1:SetOperation(c511000386.activate) + c:RegisterEffect(e1) +end +function c511000386.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsSetCard(0x201) +end +function c511000386.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsDestructable() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511000386.filter(c) + return c:IsCode(511000380) and c:IsAbleToHand() +end +function c511000386.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + if Duel.IsExistingMatchingCard(c511000386.filter,tp,LOCATION_DECK,0,1,nil) then + local g=Duel.SelectMatchingCard(tp,c511000386.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end + end +end diff --git a/script/c511000387.lua b/script/c511000387.lua new file mode 100644 index 00000000..c832c1e7 --- /dev/null +++ b/script/c511000387.lua @@ -0,0 +1,33 @@ +--The Body's Hidden Mantra +function c511000387.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000387.condition) + e1:SetTarget(c511000387.target) + e1:SetOperation(c511000387.activate) + c:RegisterEffect(e1) +end +function c511000387.cfilter(c) + return c:IsFaceup() and c:IsCode(511000380) +end +function c511000387.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000387.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end +function c511000387.filter(c) + return c:IsSetCard(0x201) and c:IsType(TYPE_MONSTER) +end +function c511000387.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c511000387.filter,tp,LOCATION_GRAVE,0,nil) + if chk==0 then return Duel.IsExistingMatchingCard(c511000387.filter,tp,LOCATION_GRAVE,0,1,nil) + and Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511000387.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000388.lua b/script/c511000388.lua new file mode 100644 index 00000000..442b63dd --- /dev/null +++ b/script/c511000388.lua @@ -0,0 +1,29 @@ +--Forbidden Beast Boa Bolan +function c511000388.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000388,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c511000388.descon) + e1:SetTarget(c511000388.destg) + e1:SetOperation(c511000388.desop) + c:RegisterEffect(e1) +end +function c511000388.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsPlayerAffectedByEffect(tp,511000380) +end +function c511000388.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return bc and bc:IsRelateToBattle() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) +end +function c511000388.desop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerAffectedByEffect(tp,511000380) then return end + local bc=e:GetHandler():GetBattleTarget() + if bc:IsRelateToBattle() then + Duel.Destroy(bc,REASON_EFFECT) + end +end diff --git a/script/c511000389.lua b/script/c511000389.lua new file mode 100644 index 00000000..a075432f --- /dev/null +++ b/script/c511000389.lua @@ -0,0 +1,17 @@ +--Forbidden Beast Bronn +function c511000389.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000389.con) + e1:SetValue(c511000389.efilter) + c:RegisterEffect(e1) +end +function c511000389.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c511000389.con(e) + return Duel.IsPlayerAffectedByEffect(e:GetHandlerPlayer(),511000380) +end diff --git a/script/c511000390.lua b/script/c511000390.lua new file mode 100644 index 00000000..3ad937ff --- /dev/null +++ b/script/c511000390.lua @@ -0,0 +1,35 @@ +--Forbidden Beast Dharmjul +function c511000390.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000390,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511000390.descon) + e1:SetTarget(c511000390.destg) + e1:SetOperation(c511000390.desop) + c:RegisterEffect(e1) +end +function c511000390.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsPlayerAffectedByEffect(tp,511000380) +end +function c511000390.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000390.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c511000390.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000390.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000390.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000390.desop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerAffectedByEffect(tp,511000380) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000391.lua b/script/c511000391.lua new file mode 100644 index 00000000..701e7a1a --- /dev/null +++ b/script/c511000391.lua @@ -0,0 +1,33 @@ +--Forbidden Beast Nibunu +function c511000391.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000391,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000391.sumtg) + e1:SetOperation(c511000391.sumop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000391.spfilter(c,e,tp) + return c:IsSetCard(0x201) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000391.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000391.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511000391.sumop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.SelectMatchingCard(tp,c511000391.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000392.lua b/script/c511000392.lua new file mode 100644 index 00000000..65e52099 --- /dev/null +++ b/script/c511000392.lua @@ -0,0 +1,16 @@ +--Forbidden Beast Nunurao +function c511000392.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000392.spcon) + c:RegisterEffect(e1) +end +function c511000392.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsPlayerAffectedByEffect(c:GetControler(),511000380) +end diff --git a/script/c511000393.lua b/script/c511000393.lua new file mode 100644 index 00000000..2ef8a498 --- /dev/null +++ b/script/c511000393.lua @@ -0,0 +1,36 @@ +--Forbidden Beast Watsumu +function c511000393.initial_effect(c) + --add to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000393,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000393.condition) + e1:SetTarget(c511000393.target) + e1:SetOperation(c511000393.operation) + c:RegisterEffect(e1) +end +function c511000393.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_BATTLE) and Duel.IsPlayerAffectedByEffect(tp,511000380) +end +function c511000393.filter(c) + return c:IsSetCard(0x201) and c:IsLevelBelow(3) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511000393.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511000393.filter,tp,LOCATION_GRAVE,0,0,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511000393.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerAffectedByEffect(tp,511000380) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c511000394.lua b/script/c511000394.lua new file mode 100644 index 00000000..22063d4f --- /dev/null +++ b/script/c511000394.lua @@ -0,0 +1,46 @@ +--Ice Barrier +function c511000394.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000394.condition) + e1:SetTarget(c511000394.target) + e1:SetOperation(c511000394.activate) + c:RegisterEffect(e1) +end +function c511000394.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000394.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c511000394.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack(tc) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT) + tc:RegisterEffect(e2) + --cannot change position + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4) + end + end +end \ No newline at end of file diff --git a/script/c511000395.lua b/script/c511000395.lua new file mode 100644 index 00000000..d3583672 --- /dev/null +++ b/script/c511000395.lua @@ -0,0 +1,62 @@ +--Cold Fusion +function c511000395.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000395.target) + e1:SetOperation(c511000395.activate) + c:RegisterEffect(e1) +end +function c511000395.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsDestructable() +end +function c511000395.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000395.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000395.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511000395.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000395.mgfilter(c,e,tp,fusc) + return not c:IsControler(1-tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,1-tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000395.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not (tc:IsRelateToEffect(e) and tc:IsFaceup()) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + if Duel.Destroy(tc,REASON_EFFECT)==0 or bit.band(sumtype,SUMMON_TYPE_FUSION)~=SUMMON_TYPE_FUSION or mg:GetCount()==0 + or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) + or mg:IsExists(c511000395.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable then + Duel.BreakEffect() + local mgs=mg:GetFirst() + while mgs do + Duel.SpecialSummonStep(mgs,0,1-tp,1-tp,false,false,POS_FACEUP) + mgs:AddCounter(0x1015,1) + mgs=mg:GetNext() + end + Duel.SpecialSummonComplete() + local g=Duel.GetMatchingGroup(c511000395.tg,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tg=g:GetFirst() + while tg do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000) + tg:RegisterEffect(e1) + tg=g:GetNext() + end + end +end +function c511000395.tg(c) + return c:GetCounter(0x1015)~=0 +end \ No newline at end of file diff --git a/script/c511000396.lua b/script/c511000396.lua new file mode 100644 index 00000000..c7db2b6c --- /dev/null +++ b/script/c511000396.lua @@ -0,0 +1,30 @@ +--Absolute Zero Barrier +function c511000396.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(c511000396.atkval) + c:RegisterEffect(e2) + --atk limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c511000396.target) + c:RegisterEffect(e3) +end +function c511000396.atkval(e,c) + return c:GetCounter(0x1015)*-500 +end +function c511000396.target(e,c) + return c:GetCounter(0x1015)~=0 +end diff --git a/script/c511000397.lua b/script/c511000397.lua new file mode 100644 index 00000000..60c9b582 --- /dev/null +++ b/script/c511000397.lua @@ -0,0 +1,23 @@ +--Curtain of Hail +function c511000397.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511000397.infilter) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e3) +end +function c511000397.infilter(e,c) + return c:IsFaceup() and c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WATER) +end diff --git a/script/c511000400.lua b/script/c511000400.lua new file mode 100644 index 00000000..dd40845e --- /dev/null +++ b/script/c511000400.lua @@ -0,0 +1,28 @@ +--Eye of Ujat +function c511000400.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000400.condition) + e1:SetTarget(c511000400.target) + e1:SetOperation(c511000400.operation) + c:RegisterEffect(e1) +end +function c511000400.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>=2 +end +function c511000400.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,Duel.GetAttacker()) +end +function c511000400.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + --Duel.ChangeAttackTarget(tc) + Duel.CalculateDamage(Duel.GetAttacker(),tc) + end +end diff --git a/script/c511000401.lua b/script/c511000401.lua new file mode 100644 index 00000000..f2404caf --- /dev/null +++ b/script/c511000401.lua @@ -0,0 +1,36 @@ +--Spy Attack +function c511000401.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000401.cost) + e1:SetTarget(c511000401.target) + e1:SetOperation(c511000401.activate) + c:RegisterEffect(e1) +end +function c511000401.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511000401.filter(c) + return c:IsFacedown() +end +function c511000401.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000401.cfilter,tp,LOCATION_HAND,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000401.cfilter,tp,LOCATION_HAND,0,1,1,nil,tp) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000401.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_SZONE) and c511000401.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000401.filter,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + Duel.SelectTarget(tp,c511000401.filter,tp,0,LOCATION_SZONE,1,1,nil) +end +function c511000401.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFacedown() then + Duel.ConfirmCards(tp,tc) + end +end \ No newline at end of file diff --git a/script/c511000402.lua b/script/c511000402.lua new file mode 100644 index 00000000..9b447395 --- /dev/null +++ b/script/c511000402.lua @@ -0,0 +1,49 @@ +--アサシン・ゲート +function c511000402.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --negate attack + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCountLimit(1) + e2:SetTarget(c511000402.target) + e2:SetOperation(c511000402.activate) + c:RegisterEffect(e2) + --selfdes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511000402.sdcon) + c:RegisterEffect(e3) +end +function c511000402.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsDestructable() and tg:IsCanBeEffectTarget(e) + and not (tg:IsCode(28150174) or tg:IsCode(2191144) or tg:IsSetCard(0x6a)) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511000402.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.NegateAttack() + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511000402.exfilter(c) + return c:IsFaceup() and (c:IsCode(28150174) or c:IsCode(2191144) or c:IsSetCard(0x6a)) +end +function c511000402.sdcon(e) + return not Duel.IsExistingMatchingCard(c511000402.exfilter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511000403.lua b/script/c511000403.lua new file mode 100644 index 00000000..93c1d75c --- /dev/null +++ b/script/c511000403.lua @@ -0,0 +1,59 @@ +--Counter Force +function c511000403.initial_effect(c) + c:EnableCounterPermit(0x99) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000403.ctop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000403,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(TIMING_STANDBY_PHASE) + e3:SetCondition(c511000403.damcon) + e3:SetCost(c511000403.damcost) + e3:SetTarget(c511000403.damtg) + e3:SetOperation(c511000403.damop) + c:RegisterEffect(e3) +end +function c511000403.ctop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_PLAYER) + local c=e:GetHandler() + if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_COUNTER) then + c:AddCounter(0x99,1) + end +end +function c511000403.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_STANDBY and Duel.GetTurnPlayer()==tp +end +function c511000403.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + local ct=e:GetHandler():GetCounter(0x99) + e:SetLabel(ct) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000403.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetCounter(0x99)>0 end + local dam=e:GetLabel()*1000 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000403.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000404.lua b/script/c511000404.lua new file mode 100644 index 00000000..5e35a32a --- /dev/null +++ b/script/c511000404.lua @@ -0,0 +1,29 @@ +--Battlers Pride +function c511000404.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000404.condition) + e1:SetTarget(c511000404.target) + e1:SetOperation(c511000404.activate) + c:RegisterEffect(e1) +end +function c511000404.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and Duel.IsChainNegatable(ev) +end +function c511000404.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000404.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000405.lua b/script/c511000405.lua new file mode 100644 index 00000000..3390d9db --- /dev/null +++ b/script/c511000405.lua @@ -0,0 +1,47 @@ +--Clockwork Night +function c511000405.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000405.target) + c:RegisterEffect(e1) + --atkup + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_MACHINE)) + e4:SetValue(500) + c:RegisterEffect(e4) +end +function c511000405.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + g:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(RACE_MACHINE) + e1:SetTarget(c511000405.tg) + e1:SetLabelObject(g) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetTarget(c511000405.tg) + e2:SetValue(-500) + e2:SetLabelObject(g) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c511000405.tg(e,c) + return e:GetLabelObject():IsContains(c) +end diff --git a/script/c511000406.lua b/script/c511000406.lua new file mode 100644 index 00000000..37907af9 --- /dev/null +++ b/script/c511000406.lua @@ -0,0 +1,39 @@ +--天使の手鏡 +function c511000406.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000406.tgcon) + e1:SetTarget(c511000406.tgtg) + e1:SetOperation(c511000406.tgop) + c:RegisterEffect(e1) +end +function c511000406.tgcon(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_TRAP) + or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return tc:IsLocation(LOCATION_MZONE) +end +function c511000406.filter(c,re,rp,tf,ceg,cep,cev,cre,cr,crp) + return tf(re,rp,ceg,cep,cev,cre,cr,crp,0,c) +end +function c511000406.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local tf=re:GetTarget() + if chk==0 then return Duel.IsExistingTarget(c511000406.filter,tp,0,LOCATION_MZONE,1,nil,re,rp,tf) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000406.filter,tp,0,LOCATION_MZONE,1,1,nil,re,rp,tf) +end +function c511000406.tgop(e,tp,eg,ep,ev,re,r,rp) + local tf=re:GetTarget() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tf(re,rp,nil,nil,nil,nil,nil,nil,0,tc) then + local g=Group.FromCards(tc) + Duel.ChangeTargetCard(ev,g) + end +end diff --git a/script/c511000407.lua b/script/c511000407.lua new file mode 100644 index 00000000..88da0734 --- /dev/null +++ b/script/c511000407.lua @@ -0,0 +1,61 @@ +--呪い移し +function c511000407.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000407.condition) + e1:SetTarget(c511000407.target) + e1:SetOperation(c511000407.activate) + c:RegisterEffect(e1) +end +function c511000407.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp and Duel.IsChainNegatable(ev) +end +function c511000407.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000407.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + local c=e:GetHandler() + local tc=re:GetHandler() + local tpe=tc:GetType() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + local tpe=tc:GetType() + local code=tc:GetOriginalCode() + c:CopyEffect(code,nil,1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end diff --git a/script/c511000408.lua b/script/c511000408.lua new file mode 100644 index 00000000..56eb5138 --- /dev/null +++ b/script/c511000408.lua @@ -0,0 +1,29 @@ +--Contagion of Madness +function c511000408.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511000408.target) + e1:SetOperation(c511000408.activate) + c:RegisterEffect(e1) +end +function c511000408.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() end + local dam=tg:GetAttack() + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,dam) +end +function c511000408.activate(e,tp,eg,ep,ev,re,r,rp) + local tg,d=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS,CHAININFO_TARGET_PARAM) + local tc=Duel.GetAttacker() + local ap=tc:GetControler() + if tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack() then + Duel.Damage(1-ap,d,REASON_BATTLE) + Duel.Damage(ap,d/2,REASON_EFFECT) + end + end +end \ No newline at end of file diff --git a/script/c511000410.lua b/script/c511000410.lua new file mode 100644 index 00000000..e5401244 --- /dev/null +++ b/script/c511000410.lua @@ -0,0 +1,32 @@ +--Toon Rollback +function c511000410.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_DISABLED) + e1:SetTarget(c511000410.target) + e1:SetOperation(c511000410.activate) + c:RegisterEffect(e1) +end +function c511000410.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:GetFirst():IsType(TYPE_TOON) and eg:GetFirst():IsControler(tp) end +end +function c511000410.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_BP_TWICE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + if Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_BATTLE then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c511000410.bpcon) + e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,1) + end + Duel.RegisterEffect(e1,tp) +end +function c511000410.bpcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end \ No newline at end of file diff --git a/script/c511000411.lua b/script/c511000411.lua new file mode 100644 index 00000000..6cb81dad --- /dev/null +++ b/script/c511000411.lua @@ -0,0 +1,42 @@ +--Spiritialistic Medium +function c511000411.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000411.cost) + e1:SetTarget(c511000411.target) + e1:SetOperation(c511000411.activate) + c:RegisterEffect(e1) +end +function c511000411.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) + e:SetLabel(g:GetCount()) +end +function c511000411.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,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 c511000411.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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+PHASE_END) + e1:SetValue(e:GetLabel()*500) + tc:RegisterEffect(e1) + end +end + + diff --git a/script/c511000412.lua b/script/c511000412.lua new file mode 100644 index 00000000..881d8011 --- /dev/null +++ b/script/c511000412.lua @@ -0,0 +1,30 @@ +--Fearful Earthbound +function c511000412.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_ATTACK,TIMING_END_PHASE+TIMING_MAIN_END) + c:RegisterEffect(e1) + --atk change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000412,0)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_COIN) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000412.atkcon) + e2:SetTarget(c511000412.target) + e2:SetOperation(c511000412.operation) + c:RegisterEffect(e2) +end +function c511000412.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000412.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511000412.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,500,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000413.lua b/script/c511000413.lua new file mode 100644 index 00000000..45514b17 --- /dev/null +++ b/script/c511000413.lua @@ -0,0 +1,76 @@ +--Mirror Tablet +function c511000413.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000413.condition) + e1:SetTarget(c511000413.target) + e1:SetOperation(c511000413.activate) + c:RegisterEffect(e1) + if not c511000413.global_check then + c511000413.global_check=true + local ge=Effect.CreateEffect(c) + ge:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge:SetCode(EVENT_BATTLE_DESTROYING) + ge:SetOperation(c511000413.checkop) + Duel.RegisterEffect(ge,0) + end +end +function c511000413.cfilter(c,tp) + return c:GetPreviousControler()==tp +end +function c511000413.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000413.cfilter,1,nil,tp) +end +function c511000413.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsFaceup() and tc:IsRelateToBattle() then + tc:RegisterFlagEffect(511000413,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) + end + tc=eg:GetNext() + end +end +function c511000413.filter1(c) + return c:IsFaceup() and c:GetFlagEffect(511000413)~=0 +end + +function c511000413.filter2(c) + return c:IsPosition(POS_FACEUP_ATTACK) +end +function c511000413.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511000413.filter1,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingTarget(c511000413.filter2,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000413,0)) + local g1=Duel.SelectTarget(tp,c511000413.filter1,tp,0,LOCATION_MZONE,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000413,1)) + local g2=Duel.SelectTarget(tp,c511000413.filter2,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) +end +function c511000413.activate(e,tp,eg,ep,ev,re,r,rp) + local tc1=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc2=g:GetFirst() + if tc1==tc2 then tc2=g:GetNext() end + if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) and tc2: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+PHASE_BATTLE) + e1:SetValue(tc1:GetAttack()/2) + tc2:RegisterEffect(e1) + local a=tc1 + local d=tc2 + if Duel.GetTurnPlayer()~=tp then + a=tc1 + d=tc2 + end + if a:IsPosition(POS_FACEUP_ATTACK) then + Duel.CalculateDamage(a,d) + end + end +end diff --git a/script/c511000414.lua b/script/c511000414.lua new file mode 100644 index 00000000..16c996b2 --- /dev/null +++ b/script/c511000414.lua @@ -0,0 +1,73 @@ +--Grief Tablet +function c511000414.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(c511000414.target) + e1:SetOperation(c511000414.operation) + c:RegisterEffect(e1) + --Atk,def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + --Pos limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + c:RegisterEffect(e3) + --negate + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e4) + --equip limit + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_EQUIP_LIMIT) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e5:SetValue(1) + c:RegisterEffect(e5) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000414,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511000414.damcon) + e3:SetTarget(c511000414.damtg) + e3:SetOperation(c511000414.damop) + c:RegisterEffect(e3) +end +function c511000414.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 c511000414.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 c511000414.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + e:SetLabel(ec:GetPreviousControler()) + return c:IsReason(REASON_DESTROY) +end +function c511000414.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(e:GetLabel()) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,e:GetLabel(),500) +end +function c511000414.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000415.lua b/script/c511000415.lua new file mode 100644 index 00000000..b8fc2a28 --- /dev/null +++ b/script/c511000415.lua @@ -0,0 +1,38 @@ +--左腕の代償 +function c511000415.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000415.cost) + e1:SetTarget(c511000415.target) + e1:SetOperation(c511000415.operation) + c:RegisterEffect(e1) +end +function c511000415.cfilter(c) + return not c:IsAbleToGraveAsCost() +end +function c511000415.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local g1=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g1:RemoveCard(e:GetHandler()) + if chk==0 then return g1:GetCount()>0 and not g1:IsExists(c511000415.cfilter,1,nil) end + Duel.SendtoGrave(g1,REASON_COST) +end +function c511000415.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511000415.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_DECK and chkc:GetControler()==tp and c511000415.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000415.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511000415.filter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511000415.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end \ No newline at end of file diff --git a/script/c511000416.lua b/script/c511000416.lua new file mode 100644 index 00000000..53f631a6 --- /dev/null +++ b/script/c511000416.lua @@ -0,0 +1,74 @@ +--Enchanted Sword Nothung +function c511000416.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP+CATEGORY_DESTROY+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000416.target) + e1:SetOperation(c511000416.operation) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(400) + c:RegisterEffect(e2) + --Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) + --destroy all Dragons that battle + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000416,0)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_BATTLE_START) + e4:SetCondition(c511000416.descon) + e4:SetTarget(c511000416.destg) + e4:SetOperation(c511000416.desop) + c:RegisterEffect(e4) +end +function c511000416.filter(c) + return c:IsRace(RACE_DRAGON) and c:IsFaceup() and c:IsAbleToRemove() and c:IsDestructable() +end +function c511000416.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 + local sg=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + 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) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,sg,sg:GetCount(),0,0) +end +function c511000416.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local sg=Duel.GetMatchingGroup(c511000416.filter,tp,0,LOCATION_MZONE,nil) + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + Duel.Destroy(sg,REASON_EFFECT,LOCATION_REMOVED) + end +end +function c511000416.descon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + if ec~=Duel.GetAttacker() and ec~=Duel.GetAttackTarget() then return false end + local tc=ec:GetBattleTarget() + e:SetLabelObject(tc) + return tc and tc:IsFaceup() and tc:IsRace(RACE_DRAGON) +end +function c511000416.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetLabelObject(),1,0,0) +end +function c511000416.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=e:GetLabelObject() + if tc:IsFaceup() and tc:IsRelateToBattle() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000417.lua b/script/c511000417.lua new file mode 100644 index 00000000..ad99845d --- /dev/null +++ b/script/c511000417.lua @@ -0,0 +1,24 @@ +--Reduction Barrier +function c511000417.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000417.condition) + e1:SetOperation(c511000417.operation) + c:RegisterEffect(e1) +end +function c511000417.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511000417.operation(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000417.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511000417.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/10) +end diff --git a/script/c511000418.lua b/script/c511000418.lua new file mode 100644 index 00000000..7cec9a4c --- /dev/null +++ b/script/c511000418.lua @@ -0,0 +1,27 @@ +--Beckon to Darkness +function c511000418.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000418.target) + e1:SetOperation(c511000418.activate) + c:RegisterEffect(e1) +end +function c511000418.filter(c) + return c:IsFaceup() and c:IsAbleToGrave() +end +function c511000418.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000418.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000418.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c511000418.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000418.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoGrave(g,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511000419.lua b/script/c511000419.lua new file mode 100644 index 00000000..ed84d110 --- /dev/null +++ b/script/c511000419.lua @@ -0,0 +1,23 @@ +--Goddess Skuld's Oracle +function c511000419.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Look at TOP of DECK + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000419,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000419.target) + e2:SetOperation(c511000419.activate) + c:RegisterEffect(e2) + end +function c511000419.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_DECK)>2 end +end +function c511000419.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SortDecktop(tp,1-tp,3) +end diff --git a/script/c511000420.lua b/script/c511000420.lua new file mode 100644 index 00000000..35e9b855 --- /dev/null +++ b/script/c511000420.lua @@ -0,0 +1,43 @@ +--Goddess Verdande's Guidance +function c511000420.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Reveal TOP of Deck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000420,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000420.target) + e2:SetOperation(c511000420.operation) + c:RegisterEffect(e2) +end +function c511000420.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(1-tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CARDTYPE) + Duel.SetTargetParam(Duel.SelectOption(tp,70,71,72)) +end +function c511000420.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(1-tp,0,LOCATION_DECK)<=0 then return end + Duel.DisableShuffleCheck() + Duel.ConfirmDecktop(1-tp,1) + local g=Duel.GetDecktopGroup(1-tp,1) + local tc=g:GetFirst() + if not tc then return end + local opt=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if (opt==0 and tc:IsType(TYPE_MONSTER)) then + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SpecialSummon(tc,0,1-tp,1-tp,false,false,POS_FACEDOWN_DEFENSE) + end + elseif (opt==1 and tc:IsType(TYPE_SPELL)) then + Duel.SSet(1-tp,g:GetFirst()) + Duel.ConfirmCards(tp,g) + elseif (opt==2 and tc:IsType(TYPE_TRAP))then + Duel.SSet(1-tp,g:GetFirst()) + Duel.ConfirmCards(tp,g) + end +end + \ No newline at end of file diff --git a/script/c511000421.lua b/script/c511000421.lua new file mode 100644 index 00000000..dc329363 --- /dev/null +++ b/script/c511000421.lua @@ -0,0 +1,36 @@ +--Goddess Urd's Verdict +function c511000421.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000421,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000421.target) + e2:SetOperation(c511000421.operation) + c:RegisterEffect(e2) +end +function c511000421.filter(c) +return c:IsFacedown() and c:IsAbleToRemove() +end +function c511000421.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()~=tp and chkc:IsLocation(LOCATION_ONFIELD) and c511000421.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000421.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.SelectTarget(tp,c511000421.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,0) + local ac=Duel.AnnounceCard(tp) + e:SetLabel(ac) +end +function c511000421.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + Duel.ConfirmCards(tp,tc) + if tc:GetCode()==e:GetLabel() and tc:IsAbleToRemove() then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end + + diff --git a/script/c511000422.lua b/script/c511000422.lua new file mode 100644 index 00000000..202a9211 --- /dev/null +++ b/script/c511000422.lua @@ -0,0 +1,43 @@ +--受け継がれる力 +function c511000422.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000422.cost) + e1:SetTarget(c511000422.target) + e1:SetOperation(c511000422.activate) + c:RegisterEffect(e1) +end +function c511000422.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c511000422.cfilter(c,tp) + return c:GetDefense()>0 and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,c) +end +function c511000422.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 + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c511000422.cfilter,1,nil,tp) end + local g=Duel.SelectReleaseGroup(tp,c511000422.cfilter,1,1,nil,tp) + local def=g:GetFirst():GetDefense() + Duel.Release(g,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetTargetParam(def) +end +function c511000422.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000423.lua b/script/c511000423.lua new file mode 100644 index 00000000..be522a13 --- /dev/null +++ b/script/c511000423.lua @@ -0,0 +1,35 @@ +--Charm of Lamentation +function c511000423.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Attack Fail then draw 1 + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetCondition(c511000423.retcon) + e2:SetTarget(c511000423.rettg) + e2:SetOperation(c511000423.retop) + c:RegisterEffect(e2) +end +function c511000423.retcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a:IsControler(tp) and d and d:IsControler(1-tp) and d:IsRelateToBattle() +end +function c511000423.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000423.retop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000424.lua b/script/c511000424.lua new file mode 100644 index 00000000..d8d274ca --- /dev/null +++ b/script/c511000424.lua @@ -0,0 +1,39 @@ +--Nightmare Mirror +function c511000424.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000424.condition) + e1:SetTarget(c511000424.target) + e1:SetOperation(c511000424.activate) + c:RegisterEffect(e1) +end +function c511000424.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000424.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511000424.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack(tc) then + Duel.Damage(1-tp,1000,REASON_EFFECT) + end + if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 then + Duel.BreakEffect() + Duel.DiscardHand(tp,aux.TRUE,1,1,REASON_EFFECT+REASON_DISCARD) + end + end +end + + diff --git a/script/c511000426.lua b/script/c511000426.lua new file mode 100644 index 00000000..f426377d --- /dev/null +++ b/script/c511000426.lua @@ -0,0 +1,50 @@ +--Nightmare Binding +function c511000426.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000426.target) + e1:SetOperation(c511000426.operation) + c:RegisterEffect(e1) +end +function c511000426.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,800) +end +function c511000426.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1ff0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UNRELEASABLE_NONSUM) + tc:RegisterEffect(e3) + --cannot trigger + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_TRIGGER) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4) + Duel.Recover(p,d,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511000427.lua b/script/c511000427.lua new file mode 100644 index 00000000..6e747bb2 --- /dev/null +++ b/script/c511000427.lua @@ -0,0 +1,46 @@ +--Aid to the Doomed +function c511000427.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000427.condition) + e1:SetCost(c511000427.cost) + e1:SetOperation(c511000427.activate) + c:RegisterEffect(e1) + --act qp in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetRange(LOCATION_HAND) + c:RegisterEffect(e2) +end +function c511000427.cfilter(c,tp) + return c:GetPreviousControler()==tp +end +function c511000427.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000427.cfilter,1,nil,tp) +end +function c511000427.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,2,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,2,2,e:GetHandler()) + Duel.SendtoGrave(g,REASON_EFFECT) +end +function c511000427.activate(e,tp,eg,ep,ev,re,r,rp) + local sk=Duel.GetTurnPlayer() + Duel.BreakEffect() + Duel.SkipPhase(sk,PHASE_DRAW,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(sk,PHASE_STANDBY,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(sk,PHASE_MAIN1,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(sk,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.SkipPhase(sk,PHASE_MAIN2,RESET_PHASE+PHASE_MAIN2,1) + Duel.SkipPhase(sk,PHASE_END,RESET_PHASE+PHASE_END,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000428.lua b/script/c511000428.lua new file mode 100644 index 00000000..65e1c5bf --- /dev/null +++ b/script/c511000428.lua @@ -0,0 +1,49 @@ +--Limit Tribute +function c511000428.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) + --Restrict Release + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_RELEASE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetCondition(c511000428.conA) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetTargetRange(0,1) + e3:SetCondition(c511000428.conB) + c:RegisterEffect(e3) + --Responding + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000428.cond) + e4:SetOperation(c511000428.relimit) + c:RegisterEffect(e4) +end +function c511000428.conA(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000428)~=0 +end +function c511000428.conB(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000428)~=0 +end +function c511000428.filter(c,tp) + return c:IsType(TYPE_MONSTER) and c:IsReason(REASON_RELEASE) +end +function c511000428.cond(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000428.filter,1,nil,tp) +end +function c511000428.relimit(e,tp,eg,ep,ev,re,r,rp) + if rp==tp then + e:GetHandler():RegisterFlagEffect(511000428,RESET_EVENT+0x3ff0000+RESET_PHASE+PHASE_END,0,1) + else + e:GetHandler():RegisterFlagEffect(511000428,RESET_EVENT+0x3ff0000+RESET_PHASE+PHASE_END,0,1) + end +end \ No newline at end of file diff --git a/script/c511000429.lua b/script/c511000429.lua new file mode 100644 index 00000000..0f1ac1aa --- /dev/null +++ b/script/c511000429.lua @@ -0,0 +1,27 @@ +--Gold Moon Coin +function c511000429.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000429.target) + e1:SetOperation(c511000429.activate) + c:RegisterEffect(e1) +end +function c511000429.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) + and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000429.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.SendtoHand(g,1-tp,2,REASON_EFFECT) + Duel.BreakEffect() + Duel.Draw(p,g:GetCount(),REASON_EFFECT) +end diff --git a/script/c511000430.lua b/script/c511000430.lua new file mode 100644 index 00000000..3e3e3479 --- /dev/null +++ b/script/c511000430.lua @@ -0,0 +1,45 @@ +--Gingerbread House +function c511000430.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkdown + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_REPEAT) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511000430.condition) + e2:SetTarget(c511000430.target) + e2:SetOperation(c511000430.operation) + c:RegisterEffect(e2) +end +function c511000430.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000430.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup(); end + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000430.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local dg=Group.CreateGroup() + local preatk=tc:GetAttack() + if tc 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:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + if preatk~=2500 and tc:GetAttack()>=2500 then dg:AddCard(tc) end + if preatk~=2500 and tc:GetAttack()>=2500 then Duel.Recover(tp,500,REASON_EFFECT) end + end + Duel.Destroy(dg,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000431.lua b/script/c511000431.lua new file mode 100644 index 00000000..781515b7 --- /dev/null +++ b/script/c511000431.lua @@ -0,0 +1,94 @@ +--Cinderella +function c511000431.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000431.sptg) + e1:SetOperation(c511000431.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --gain 1000 atk + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000431,0)) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_EQUIP) + e4:SetCondition(c511000431.gaincon) + e4:SetOperation(c511000431.gainop) + c:RegisterEffect(e4) +end +function c511000431.filter(c,e,tp) + return c:IsCode(511000432) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000431.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000431.filter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE) +end +function c511000431.acfilter(c) + return c:IsCode(511000433) and c:CheckActivateEffect(false,false,false)~=nil +end +function c511000431.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000431.filter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + if Duel.IsExistingMatchingCard(c511000431.acfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,nil) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(511000431,1)) then + local ac=Duel.SelectMatchingCard(tp,c511000431.acfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil) + local tc=ac:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + tc:CancelToGrave() + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end +end +function c511000431.gaincon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,511000433) +end +function c511000431.gainop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1000) + c:RegisterEffect(e1) +end diff --git a/script/c511000432.lua b/script/c511000432.lua new file mode 100644 index 00000000..b6295199 --- /dev/null +++ b/script/c511000432.lua @@ -0,0 +1,14 @@ +--Pumpkin Carriage +function c511000432.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511000432.datg) + c:RegisterEffect(e1) +end +function c511000432.datg(e,c) + return c:IsCode(511000431) +end diff --git a/script/c511000433.lua b/script/c511000433.lua new file mode 100644 index 00000000..f44ec3df --- /dev/null +++ b/script/c511000433.lua @@ -0,0 +1,115 @@ +--Glass Slippers +function c511000433.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(c511000433.target) + e1:SetOperation(c511000433.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(c511000433.eqlimit) + c:RegisterEffect(e2) + --change equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000433,0)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000433.eqcon) + e3:SetTarget(c511000433.eqtg) + e3:SetOperation(c511000433.eqop) + c:RegisterEffect(e3) + --Atk up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetValue(-1000) + e4:SetCondition(c511000433.atkcon) + c:RegisterEffect(e4) + --at limit + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(LOCATION_MZONE,0) + e5:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetCondition(c511000433.atkcon) + e5:SetTarget(c511000433.atlimit) + e5:SetValue(c511000433.atkval) + c:RegisterEffect(e5) + --reequip to Cinderella + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511000433,2)) + e6:SetCategory(CATEGORY_EQUIP) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e6:SetCode(EVENT_TO_GRAVE) + e6:SetCondition(c511000433.eqcon2) + e6:SetTarget(c511000433.eqtg2) + e6:SetOperation(c511000433.eqop) + c:RegisterEffect(e6) +end +function c511000433.eqlimit(e,c) + return c:IsCode(511000431) or c:GetControler()~=e:GetHandler():GetControler() +end +function c511000433.filter(c,e) + return c:IsFaceup() and (c:IsCode(511000431) or c:GetControler()~=e:GetHandler():GetControler()) +end +function c511000433.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000433.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000433.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000433.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000433.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 c511000433.eqcon(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + return ep~=tp and eq:IsCode(511000431) and eg:GetFirst()==eq +end +function c511000433.atkcon(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + return eq:GetControler()~=e:GetHandler():GetControler() +end +function c511000433.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,0,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000433,1)) + local tc=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000433.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + else + Duel.SendtoGrave(c,REASON_EFFECT) + end +end +function c511000433.atlimit(e,c) + return c:IsCode(511000431) +end +function c511000433.atkval(e,c) + return c==e:GetHandler():GetEquipTarget() +end +function c511000433.eqcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_LOST_TARGET) and e:GetHandler():GetPreviousEquipTarget():IsReason(REASON_DESTROY) +end +function c511000433.eqtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511000433.filter,tp,LOCATION_MZONE,0,1,nil,e) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000433,1)) + local tc=Duel.SelectTarget(tp,c511000433.filter,tp,LOCATION_MZONE,0,1,1,nil,e) +end diff --git a/script/c511000434.lua b/script/c511000434.lua new file mode 100644 index 00000000..97048cb2 --- /dev/null +++ b/script/c511000434.lua @@ -0,0 +1,26 @@ +--Hexe Trude +function c511000434.initial_effect(c) + --Atk up + --Jackpro 1.3 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000434.atkcon) + e1:SetOperation(c511000434.atkop) + c:RegisterEffect(e1) +end +function c511000434.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsRelateToBattle() and e:GetHandler():IsFaceup() +end +function c511000434.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToBattle() and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(400) + c:RegisterEffect(e1) + end +end diff --git a/script/c511000435.lua b/script/c511000435.lua new file mode 100644 index 00000000..5636afc4 --- /dev/null +++ b/script/c511000435.lua @@ -0,0 +1,159 @@ +--Golden Castle of Stromberg +function c511000435.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --maintain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetOperation(c511000435.mtop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_REPEAT) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000435.condition) + e3:SetTarget(c511000435.target) + e3:SetOperation(c511000435.operation) + c:RegisterEffect(e3) + --Cannot Normal Summon + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_SUMMON) + e4:SetTargetRange(1,0) + c:RegisterEffect(e4) + --Opponent's monsters must attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_MUST_ATTACK) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e5) + --Destroy monsters + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DESTROY) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EVENT_ATTACK_ANNOUNCE) + e6:SetCondition(c511000435.atkcon) + e6:SetTarget(c511000435.atktg) + e6:SetOperation(c511000435.atkop) + c:RegisterEffect(e6) + --indes + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e7:SetRange(LOCATION_SZONE) + e7:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e7:SetValue(c511000435.indval) + c:RegisterEffect(e7) + --Cannot End + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD) + e8:SetCode(EFFECT_CANNOT_EP) + e8:SetRange(LOCATION_SZONE) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetTargetRange(0,1) + e8:SetCondition(c511000435.batcon) + c:RegisterEffect(e8) +end +function c511000435.costfilter(c) + return c:IsAbleToGrave() +end +function c511000435.mtop(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local g2=Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0) + if tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)~=0 and Duel.SelectYesNo(tp,aux.Stringid(511000435,0)) then + local gc=Duel.GetMatchingGroup(c511000435.costfilter,tp,LOCATION_DECK,0,nil):RandomSelect(tp,math.floor(g1/2)) + Duel.SendtoGrave(gc,REASON_COST) + elseif tp~=Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0)~=0 then + local gc=Duel.GetMatchingGroup(c511000435.costfilter,1-tp,LOCATION_DECK,0,nil):RandomSelect(1-tp,math.floor(g2/2)) + Duel.SendtoGrave(gc,REASON_COST) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end +function c511000435.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp + and Duel.GetCurrentPhase()~=PHASE_DRAW + and Duel.GetCurrentPhase()~=PHASE_STANDBY + and Duel.GetCurrentPhase()~=PHASE_BATTLE + and Duel.GetCurrentPhase()~=PHASE_MAIN2 + and Duel.GetCurrentPhase()~=PHASE_END +end +function c511000435.filter(c,e,tp) + return c:GetLevel()<=4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000435.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_DECK) and c511000435.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000435.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end +end +function c511000435.operation(e,tp,eg,ep,ev,re,r,rp) +local c=e:GetHandler() +local g=Duel.GetMatchingGroup(c511000435.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=g:RandomSelect(tp,1):GetFirst() + if Duel.SpecialSummon(g2,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 then return end + c:SetCardTarget(g2) + --Must Attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MUST_ATTACK) + g2:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_EP) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetCondition(c511000435.becon) + g2:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end + end +function c511000435.becon(e) + return e:GetHandler():IsAttackable() +end +function c511000435.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000435.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsDestructable() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + local dam=tg:GetAttack() + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000435.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + Duel.Damage(1-tp,tc:GetAttack()/2,REASON_EFFECT) + end +end +function c511000435.indval(e,re) + return re:GetOwner():IsType(TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP) +end +function c511000435.batfilter(c) + return c:IsAttackable() +end +function c511000435.batcon(e) + return Duel.IsExistingMatchingCard(c511000435.batfilter,tp,0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511000436.lua b/script/c511000436.lua new file mode 100644 index 00000000..8aaddfe7 --- /dev/null +++ b/script/c511000436.lua @@ -0,0 +1,34 @@ +--Glife the Phantom Bird +function c511000436.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000436.destg) + e1:SetOperation(c511000436.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000436.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000436.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c511000436.filter(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c511000436.filter,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000436.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000436.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000437.lua b/script/c511000437.lua new file mode 100644 index 00000000..8916aeb2 --- /dev/null +++ b/script/c511000437.lua @@ -0,0 +1,31 @@ +--Forest Hunter +function c511000437.initial_effect(c) + --Banish monster + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000437.destg) + e1:SetOperation(c511000437.desop) + c:RegisterEffect(e1) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000437.filter(c) + return c:IsAbleToRemove() and c:IsFaceup() and c:IsRace(RACE_BEAST+RACE_BEASTWARRIOR) +end +function c511000437.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511000437.filter(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c511000437.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511000437.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511000437.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511000438.lua b/script/c511000438.lua new file mode 100644 index 00000000..1f815935 --- /dev/null +++ b/script/c511000438.lua @@ -0,0 +1,43 @@ +--Seven Kid Goats +--Jackpro 1.3 +function c511000438.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511000438.descon) + e1:SetTarget(c511000438.destg) + e1:SetOperation(c511000438.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000438.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsFaceup() +end +function c511000438.filter(c) + return c:IsFaceup() and c:IsDestructable() and c:IsRace(RACE_BEAST) +end +function c511000438.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511000438.filter(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c511000438.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000438.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511000438.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc then return end + local atk=tc:GetAttack() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c511000439.lua b/script/c511000439.lua new file mode 100644 index 00000000..eddc1e62 --- /dev/null +++ b/script/c511000439.lua @@ -0,0 +1,28 @@ +--Command Silencer +function c511000439.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000439.condition) + e1:SetTarget(c511000439.target) + e1:SetOperation(c511000439.activate) + c:RegisterEffect(e1) +end +function c511000439.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000439.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000439.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.NegateAttack() then + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c511000440.lua b/script/c511000440.lua new file mode 100644 index 00000000..1d6c431e --- /dev/null +++ b/script/c511000440.lua @@ -0,0 +1,110 @@ +--Guardian Formation +function c511000440.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511000440.condition) + e1:SetTarget(c511000440.target) + e1:SetOperation(c511000440.activate) + c:RegisterEffect(e1) + if not c511000440.global_check then + c511000440.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000440.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000440.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000440.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + local seq=d:GetSequence() + return d:IsControler(tp) and d:IsFaceup() and d:IsSetCard(0x52) and (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) + or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) +end +function c511000440.filter(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te or not te:IsActivatable(tp) then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return c:IsType(TYPE_SPELL) and (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) and (c:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) +end +function c511000440.target(e,tp,eg,ep,ev,re,r,rp,chk) + local td=Duel.GetAttackTarget() + if chk==0 then return td:IsOnField() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetTargetCard(td) +end +function c511000440.activate(e,tp,eg,ep,ev,re,r,rp) + local td=Duel.GetAttackTarget() + if td and Duel.NegateAttack() and td:IsFaceup() and td:IsRelateToEffect(e) then + local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0) + local nseq=0 + if s==1 then nseq=0 + elseif s==2 then nseq=1 + elseif s==4 then nseq=2 + elseif s==8 then nseq=3 + else nseq=4 end + Duel.MoveSequence(td,nseq) + local acg=Duel.GetMatchingGroup(c511000440.filter,tp,LOCATION_DECK+LOCATION_HAND,0,nil,e,tp,eg,ep,ev,re,r,rp) + if acg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(28265983,0)) then + local tc=acg:Select(tp,1,1,nil):GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end +end diff --git a/script/c511000441.lua b/script/c511000441.lua new file mode 100644 index 00000000..97ebb263 --- /dev/null +++ b/script/c511000441.lua @@ -0,0 +1,52 @@ +--Dragon Heart +function c511000441.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000441.cost) + e1:SetTarget(c511000441.target) + e1:SetOperation(c511000441.activate) + c:RegisterEffect(e1) +end +function c511000441.cfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsAbleToGraveAsCost() +end +function c511000441.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 and Duel.IsExistingMatchingCard(c511000441.cfilter,tp,LOCATION_DECK,0,3,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000441.cfilter,tp,LOCATION_DECK,0,3,3,nil) + Duel.SendtoGrave(g,REASON_COST) + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c511000441.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c511000441.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511000441.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000441.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000441.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000442.lua b/script/c511000442.lua new file mode 100644 index 00000000..ad163963 --- /dev/null +++ b/script/c511000442.lua @@ -0,0 +1,55 @@ +--Cursed Ring +function c511000442.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000442.condition) + e1:SetTarget(c511000442.target) + e1:SetOperation(c511000442.activate) + c:RegisterEffect(e1) +end +function c511000442.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000442.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end +end +function c511000442.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --battle + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_DAMAGE_CALCULATING) + e1:SetCondition(c511000442.indescon) + e1:SetOperation(c511000442.indesop) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511000442.indescon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget():GetBattleTarget()~=nil +end +function c511000442.indesop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetEquipTarget():GetBattleTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + bc:RegisterEffect(e1,true) +end diff --git a/script/c511000443.lua b/script/c511000443.lua new file mode 100644 index 00000000..abf755c7 --- /dev/null +++ b/script/c511000443.lua @@ -0,0 +1,43 @@ +--Path to Destiny +function c511000443.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(c511000443.target) + e1:SetOperation(c511000443.operation) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DIRECT_ATTACK) + 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(c511000443.equiplimit) + c:RegisterEffect(e3) +end +function c511000443.equiplimit(e,c) + return c:IsRace(RACE_BEASTWARRIOR) +end +function c511000443.filter(c) + return c:IsFaceup() and c:IsRace(RACE_BEASTWARRIOR) +end +function c511000443.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511000443.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000443.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000443.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000443.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 diff --git a/script/c511000444.lua b/script/c511000444.lua new file mode 100644 index 00000000..aa74aa31 --- /dev/null +++ b/script/c511000444.lua @@ -0,0 +1,41 @@ +--Bronze Warrior +function c511000444.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000444,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511000444.thtg) + e1:SetOperation(c511000444.thop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_BEASTWARRIOR)) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(400) + e2:SetCondition(c511000444.atkcon) + c:RegisterEffect(e2) +end +function c511000444.filter(c) + return c:IsRace(RACE_BEASTWARRIOR) and c:IsAbleToHand() +end +function c511000444.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000444.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000444.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000444.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c511000444.atkcon(e) + return e:GetHandler():IsAttackPos() +end diff --git a/script/c511000445.lua b/script/c511000445.lua new file mode 100644 index 00000000..f114dc94 --- /dev/null +++ b/script/c511000445.lua @@ -0,0 +1,34 @@ +--Miracle Moment +function c511000445.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000445.condition) + e1:SetTarget(c511000445.target) + e1:SetOperation(c511000445.activate) + c:RegisterEffect(e1) +end +function c511000445.cfilter(c) + return c:GetPreviousControler()==tp and c:IsReason(REASON_BATTLE) and c:IsCode(42035044) and c:GetEquipGroup():IsExists(Card.IsCode,1,nil,511000443) +end +function c511000445.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000445.cfilter,nil,tp) + return g +end +function c511000445.spfilter(c,e,tp) + return c:IsCode(511000444) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000445.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c511000445.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000445.activate(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,c511000445.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000446.lua b/script/c511000446.lua new file mode 100644 index 00000000..554ff305 --- /dev/null +++ b/script/c511000446.lua @@ -0,0 +1,56 @@ +--Spotlight +function c511000446.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000446.target) + e1:SetOperation(c511000446.activate) + c:RegisterEffect(e1) + --retarget + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_F+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCondition(c511000446.tgcon) + e2:SetTarget(c511000446.target) + e2:SetOperation(c511000446.activate) + c:RegisterEffect(e2) + --selfdestroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511000446.descon) + c:RegisterEffect(e3) +end +function c511000446.descon(e) + return not Duel.IsExistingMatchingCard(Card.IsFaceup,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,nil) +end +function c511000446.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,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 c511000446.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(300) + tc:RegisterEffect(e1) + c:SetCardTarget(tc) + end +end +function c511000446.tgcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end diff --git a/script/c511000447.lua b/script/c511000447.lua new file mode 100644 index 00000000..223158f1 --- /dev/null +++ b/script/c511000447.lua @@ -0,0 +1,34 @@ +--Wind Pressure Compensation +function c511000447.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) + --change pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000447,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCategory(CATEGORY_POSITION) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c511000447.poscon) + e2:SetTarget(c511000447.postg) + e2:SetOperation(c511000447.posop) + c:RegisterEffect(e2) +end +function c511000447.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp +end +function c511000447.poscon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000447.cfilter,1,nil,tp) +end +function c511000447.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,Duel.GetAttacker(),1,0,0) +end +function c511000447.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) +end diff --git a/script/c511000448.lua b/script/c511000448.lua new file mode 100644 index 00000000..e0d42253 --- /dev/null +++ b/script/c511000448.lua @@ -0,0 +1,36 @@ +--Powerless Sphere +function c511000448.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000448.target) + e1:SetOperation(c511000448.activate) + c:RegisterEffect(e1) +end +function c511000448.filter(c) + return c:IsFaceup() and c:GetAttack()~=c:GetBaseAttack() +end +function c511000448.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511000448.filter,tp,0,LOCATION_MZONE,1,nil) end +end +function c511000448.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511000448.filter,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetBaseAttack()) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(tc:GetBaseDefense()) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511000449.lua b/script/c511000449.lua new file mode 100644 index 00000000..8a577af5 --- /dev/null +++ b/script/c511000449.lua @@ -0,0 +1,59 @@ +--Fire Trap +function c511000449.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000449.condition) + e1:SetTarget(c511000449.target) + e1:SetOperation(c511000449.operation) + c:RegisterEffect(e1) + --Draw + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511000449.drcon) + e2:SetTarget(c511000449.drtg) + e2:SetOperation(c511000449.drop) + c:RegisterEffect(e2) +end +function c511000449.cfilter(c) + return c:IsOnField() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511000449.condition(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_SPELL+TYPE_TRAP)then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(c511000449.cfilter,nil)-tg:GetCount()>0 +end +function c511000449.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000449.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511000449.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) + and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) + and e:GetHandler():IsPreviousPosition(POS_FACEDOWN) +end +function c511000449.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000449.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000450.lua b/script/c511000450.lua new file mode 100644 index 00000000..837581e8 --- /dev/null +++ b/script/c511000450.lua @@ -0,0 +1,24 @@ +--Draw Blast +function c511000450.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DRAW) + e1:SetCondition(c511000450.condition) + e1:SetTarget(c511000450.damtg) + e1:SetOperation(c511000450.damop) + c:RegisterEffect(e1) +end +function c511000450.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511000450.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511000450.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000451.lua b/script/c511000451.lua new file mode 100644 index 00000000..998e646b --- /dev/null +++ b/script/c511000451.lua @@ -0,0 +1,47 @@ +--Flaming Barbed Wire +function c511000451.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetCost(c511000451.cost) + e1:SetTarget(c511000451.target) + e1:SetOperation(c511000451.operation) + c:RegisterEffect(e1) +end +function c511000451.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511000451.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,0,LOCATION_MZONE,1,nil) and ct>0 end + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,nil,1,0,0) +end +function c511000451.operation(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + local g=Duel.SelectMatchingCard(tp,Card.IsAttackPos,tp,0,LOCATION_MZONE,1,ct,nil) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_DEFENSE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511000452.lua b/script/c511000452.lua new file mode 100644 index 00000000..051b9dc4 --- /dev/null +++ b/script/c511000452.lua @@ -0,0 +1,16 @@ +--Amorphous Barrier +function c511000452.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000452.condition) + e1:SetOperation(c511000452.activate) + c:RegisterEffect(e1) +end +function c511000452.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,3,nil) +end +function c511000452.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511000453.lua b/script/c511000453.lua new file mode 100644 index 00000000..958a2343 --- /dev/null +++ b/script/c511000453.lua @@ -0,0 +1,100 @@ +--Crystal Seal +function c511000453.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,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000453.target) + e1:SetOperation(c511000453.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ADJUST) + e2:SetLabelObject(e1) + e2:SetOperation(c511000453.desop) + c:RegisterEffect(e2) + --indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(c511000453.indval) + c:RegisterEffect(e3) +end +function c511000453.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,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000453.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() 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_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511000453.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK) + tc:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_UNRELEASABLE_SUM) + e3:SetValue(1) + tc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_UNRELEASABLE_NONSUM) + tc:RegisterEffect(e4,true) + local e5=e1:Clone() + e5:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + tc:RegisterEffect(e5,true) + local e6=e3:Clone() + e6:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + tc:RegisterEffect(e6,true) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_CANNOT_DISABLE) + e7:SetCode(EFFECT_IGNORE_BATTLE_TARGET) + e7:SetRange(LOCATION_MZONE) + e7:SetReset(RESET_EVENT+0x1fe0000) + e7:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e7:SetTarget(c511000453.cfilter) + tc:RegisterEffect(e7,true) + e:SetLabel(tc:GetAttack()) + end +end +function c511000453.efilter(e,re,rp) + return e:GetHandlerPlayer()~=rp +end +function c511000453.cfilter(e,c) + return c==e:GetHandler() +end +function c511000453.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511000453.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if not tc then return end + if e:GetLabelObject():GetLabel()~=tc:GetAttack() then + if e:GetLabelObject():GetLabel()0 + and Duel.IsExistingMatchingCard(c511000454.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c511000454.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,c511000454.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511000455.lua b/script/c511000455.lua new file mode 100644 index 00000000..943c5054 --- /dev/null +++ b/script/c511000455.lua @@ -0,0 +1,33 @@ +--Spirit Hunting +function c511000455.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000455.target) + e1:SetOperation(c511000455.activate) + c:RegisterEffect(e1) +end +function c511000455.filter(c) + return c:IsDefensePos() and c:IsDestructable() +end +function c511000455.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(c511000455.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) + local g=Duel.GetMatchingGroup(c511000455.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000455.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK)~=0 then + local g=Duel.GetMatchingGroup(c511000455.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end + end + end +end diff --git a/script/c511000456.lua b/script/c511000456.lua new file mode 100644 index 00000000..4ae53fdb --- /dev/null +++ b/script/c511000456.lua @@ -0,0 +1,25 @@ +--Wish of Final Effort +function c511000456.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c511000456.target) + e1:SetOperation(c511000456.activate) + c:RegisterEffect(e1) +end +function c511000456.filter(c,tp) + return c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsReason(REASON_BATTLE) and c:GetAttack()>0 +end +function c511000456.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc,tp) and c511000456.filter(chkc,tp) end + if chk==0 then return eg:IsExists(c511000456.filter,1,nil,tp) end + local g=eg:Filter(c511000456.filter,nil,tp) + e:SetLabelObject(g:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,g:GetFirst():GetAttack()) +end +function c511000456.activate(e,tp,eg,ep,ev,re,r,rp) + local atk=e:GetLabelObject():GetAttack() + Duel.Recover(tp,atk,REASON_EFFECT) +end diff --git a/script/c511000457.lua b/script/c511000457.lua new file mode 100644 index 00000000..d59ad071 --- /dev/null +++ b/script/c511000457.lua @@ -0,0 +1,31 @@ +--Reflect Energy +function c511000457.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000457.cost) + e1:SetTarget(c511000457.target) + e1:SetOperation(c511000457.activate) + c:RegisterEffect(e1) +end +function c511000457.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511000457.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000457.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511000458.lua b/script/c511000458.lua new file mode 100644 index 00000000..9ea0400e --- /dev/null +++ b/script/c511000458.lua @@ -0,0 +1,20 @@ +--Battle Route +function c511000458.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) + --must attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_MUST_ATTACK) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000458.con) + e4:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e4) +end +function c511000458.con(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>0 +end diff --git a/script/c511000460.lua b/script/c511000460.lua new file mode 100644 index 00000000..04b2db19 --- /dev/null +++ b/script/c511000460.lua @@ -0,0 +1,54 @@ +--Divine Wind +function c511000460.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000460.condition) + e1:SetOperation(c511000460.operation) + c:RegisterEffect(e1) +end +function c511000460.condition(e,tp,eg,ep,ev,re,r,rp) + if rp==tp then return false end + 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) + if not ex then return false end + if cp~=PLAYER_ALL then return Duel.IsPlayerAffectedByEffect(cp,EFFECT_REVERSE_RECOVER) + else return Duel.IsPlayerAffectedByEffect(0,EFFECT_REVERSE_RECOVER) + or Duel.IsPlayerAffectedByEffect(1,EFFECT_REVERSE_RECOVER) + end +end +function c511000460.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_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511000460.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetLabel(cid) + e2:SetValue(c511000460.dammul) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) +end +function c511000460.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end +function c511000460.dammul(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() and val+500 or val +end diff --git a/script/c511000461.lua b/script/c511000461.lua new file mode 100644 index 00000000..7fa3ffb0 --- /dev/null +++ b/script/c511000461.lua @@ -0,0 +1,40 @@ +--Monster Replace +function c511000461.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000461.target) + e1:SetOperation(c511000461.activate) + c:RegisterEffect(e1) +end +function c511000461.filter(c,e,tp) + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_HAND,0,c,TYPE_MONSTER) + local tg=g:GetMaxGroup(Card.GetAttack) + return c:IsAbleToHand() and tg:IsExists(Card.IsCanBeSpecialSummoned,1,nil,e,0,tp,false,false,c:GetPosition(),tp) +end +function c511000461.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000461.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000461.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511000461.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511000461.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local pos=tc:GetPosition() + if Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 then + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_HAND,0,tc,TYPE_MONSTER) + local tg=g:GetMaxGroup(Card.GetAttack) + if tg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + tg=tg:FilterSelect(tp,Card.IsCanBeSpecialSummoned,1,1,nil,e,0,tp,false,false,pos,tp) + end + Duel.SpecialSummon(tg,0,tp,tp,false,false,pos) + end + end +end diff --git a/script/c511000462.lua b/script/c511000462.lua new file mode 100644 index 00000000..ebc02713 --- /dev/null +++ b/script/c511000462.lua @@ -0,0 +1,86 @@ +--Valkyrion the Magna Warrior (Anime) +function c511000462.initial_effect(c) + aux.AddFusionProcCode3(c,99785935,39256679,11549357,false,false) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000462.splimit) + c:RegisterEffect(e1) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c511000462.spcon) + e1:SetOperation(c511000462.spop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000462,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511000462.cost) + e2:SetTarget(c511000462.target) + e2:SetOperation(c511000462.operation) + c:RegisterEffect(e2) +end +function c511000462.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c511000462.cfilter(c,code) + return (c:IsFaceup() or c:IsLocation(LOCATION_HAND)) and c:IsCode(code) and c:IsAbleToGraveAsCost() +end +function c511000462.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 + and Duel.IsExistingMatchingCard(c511000462.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,nil,99785935) + and Duel.IsExistingMatchingCard(c511000462.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,nil,39256679) + and Duel.IsExistingMatchingCard(c511000462.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,nil,11549357) +end +function c511000462.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511000462.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,1,nil,99785935) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511000462.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,1,nil,39256679) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g3=Duel.SelectMatchingCard(tp,c511000462.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,1,nil,11549357) + g1:Merge(g2) + g1:Merge(g3) + Duel.SendtoGrave(g1,REASON_COST) +end +function c511000462.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511000462.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000462.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>=2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingTarget(c511000462.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,99785935) + and Duel.IsExistingTarget(c511000462.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,39256679) + and Duel.IsExistingTarget(c511000462.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,11549357) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c511000462.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,99785935) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c511000462.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,39256679) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g3=Duel.SelectTarget(tp,c511000462.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,11549357) + g1:Merge(g2) + g1:Merge(g3) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,3,0,0) +end +function c511000462.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if g:GetCount()~=3 or ft<3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511000463.lua b/script/c511000463.lua new file mode 100644 index 00000000..9dd09bb4 --- /dev/null +++ b/script/c511000463.lua @@ -0,0 +1,25 @@ +--Damage Interest +function c511000463.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511000463.condition) + e1:SetTarget(c511000463.target) + e1:SetOperation(c511000463.activate) + c:RegisterEffect(e1) +end +function c511000463.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(1-tp) and ep==tp and Duel.GetAttackTarget()==nil +end +function c511000463.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev*2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev*2) +end +function c511000463.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000465.lua b/script/c511000465.lua new file mode 100644 index 00000000..1059cccb --- /dev/null +++ b/script/c511000465.lua @@ -0,0 +1,43 @@ +--Damage Off Zone +function c511000465.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000465.atkop) + c:RegisterEffect(e2) + --Reduce Damage to 0 + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000465,0)) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511000465.negcost) + e3:SetOperation(c511000465.negop) + c:RegisterEffect(e3) +end +function c511000465.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) + Duel.ChangeBattleDamage(1-tp,ev/2) +end +function c511000465.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000465.negop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000466.lua b/script/c511000466.lua new file mode 100644 index 00000000..93bc2e16 --- /dev/null +++ b/script/c511000466.lua @@ -0,0 +1,41 @@ +--Cursebreaker +function c511000466.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetTarget(c511000466.target) + e1:SetOperation(c511000466.activate) + c:RegisterEffect(e1) +end +function c511000466.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL) and c:IsDestructable() +end +function c511000466.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000466.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c511000466.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000466.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000466.filter,tp,0,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + while tc do + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.BreakEffect() + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511000467.lua b/script/c511000467.lua new file mode 100644 index 00000000..1694c6bc --- /dev/null +++ b/script/c511000467.lua @@ -0,0 +1,80 @@ +--Sand Fortress +function c511000467.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000467.atkcon) + e2:SetOperation(c511000467.atkop) + c:RegisterEffect(e2) + if not c511000467.global_check then + c511000467.global_check=true + --move + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_SSET) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IMMEDIATELY_APPLY) + ge1:SetOperation(c511000467.setop) + Duel.RegisterEffect(ge1,0) + --move + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge2:SetCode(EVENT_CHAINING) + ge2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IMMEDIATELY_APPLY) + ge2:SetOperation(c511000467.setop) + Duel.RegisterEffect(ge2,0) + --check obsolete ruling + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_DRAW) + ge3:SetOperation(c511000467.checkop) + Duel.RegisterEffect(ge3,0) + end +end +function c511000467.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000467.setop(e,tp,eg,ep,ev,re,r,rp) + local g + if not eg then g=Group.FromCards(re:GetHandler()):Filter(Card.IsCode,nil,511000467) + else g=eg:Filter(Card.IsCode,nil,511000467) end + local tc=g:GetFirst() + while tc do + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveSequence(tc,5) + tc=g:GetNext() + end +end +function c511000467.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and ep==tp +end +function c511000467.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(51100467)==0 then + c:RegisterFlagEffect(51100467,RESET_EVENT+0x1fe0000,0,0) + e:SetLabel(0) + end + local dam=e:GetLabel() + Duel.ChangeBattleDamage(tp,0) + e:SetLabel(dam+ev) + if e:GetLabel()>=3000 then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c511000468.lua b/script/c511000468.lua new file mode 100644 index 00000000..024a475c --- /dev/null +++ b/script/c511000468.lua @@ -0,0 +1,30 @@ +--Dark Corridor +function c511000468.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000468.target) + e1:SetOperation(c511000468.activate) + c:RegisterEffect(e1) +end +function c511000468.filter(c) + return c:IsSetCard(0x6) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511000468.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000468.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000468.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000468.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 then + Duel.BreakEffect() + Duel.DiscardHand(tp,aux.TRUE,1,1,REASON_EFFECT+REASON_DISCARD) + end + end +end diff --git a/script/c511000469.lua b/script/c511000469.lua new file mode 100644 index 00000000..f8359cae --- /dev/null +++ b/script/c511000469.lua @@ -0,0 +1,32 @@ +--Revenge Soul +function c511000469.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000469.target) + e1:SetOperation(c511000469.activate) + c:RegisterEffect(e1) +end +function c511000469.filter(c,tid) + return bit.band(c:GetReason(),REASON_BATTLE)~=0 and c:GetTurnID()==tid and c:IsAbleToHand() +end +function c511000469.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511000469.filter(chkc,tid) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000469.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511000469.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,tid) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511000469.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511000470.lua b/script/c511000470.lua new file mode 100644 index 00000000..30392f4c --- /dev/null +++ b/script/c511000470.lua @@ -0,0 +1,79 @@ +--Drawler +function c511000470.initial_effect(c) + --return + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000470,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000470.hdtg) + e1:SetOperation(c511000470.hdop) + c:RegisterEffect(e1) + --return to deck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000470,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_TODECK) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c511000470.condition) + e2:SetOperation(c511000470.operation) + c:RegisterEffect(e2) +end +function c511000470.hdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsAbleToDeck() end + if chk==0 then return true end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_HAND,0,1,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c511000470.hdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not g then return end + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + local ct=sg:FilterCount(Card.IsLocation,nil,LOCATION_DECK) + if ct==0 then return end + local c=e:GetHandler() + if ct~=0 and c:IsRelateToEffect(e) and c:IsFaceup() then + 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:SetValue(ct*500) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end +function c511000470.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and bc:GetBattlePosition()==POS_FACEUP_ATTACK and not bc:IsType(TYPE_TOKEN) and bc:GetLeaveFieldDest()==0 +end +function c511000470.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc:IsRelateToBattle() then + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_SEND_REPLACE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetTarget(c511000470.reptg) + e1:SetOperation(c511000470.repop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + bc:RegisterEffect(e1) + end +end +function c511000470.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_BATTLE) end + return true +end +function c511000470.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoDeck(e:GetHandler(),nil,1,REASON_EFFECT) +end diff --git a/script/c511000471.lua b/script/c511000471.lua new file mode 100644 index 00000000..dd6e0d22 --- /dev/null +++ b/script/c511000471.lua @@ -0,0 +1,36 @@ +--Drawber +function c511000471.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000471.target) + e1:SetOperation(c511000471.operation) + c:RegisterEffect(e1) +end +function c511000471.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,0) + local ac=Duel.AnnounceCard(tp) + e:SetLabel(ac) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511000471.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local h=Duel.GetDecktopGroup(1-tp,1) + local tc=h:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if tc:GetCode()==e:GetLabel() then + Duel.BreakEffect() + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD+LOCATION_HAND,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + end + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c511000472.lua b/script/c511000472.lua new file mode 100644 index 00000000..48e1367c --- /dev/null +++ b/script/c511000472.lua @@ -0,0 +1,52 @@ +--Miracle Draw +function c511000472.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw check + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000472,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000472.drcon) + e2:SetTarget(c511000472.drtg) + e2:SetOperation(c511000472.drop) + c:RegisterEffect(e2) +end +function c511000472.drcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetDrawCount(tp)>0 +end +function c511000472.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,0) + local ac=Duel.AnnounceCard(tp) + e:GetHandler():SetHint(CHINT_CARD,ac) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c511000472.drop(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DRAW) + e1:SetOperation(c511000472.damop) + e1:SetLabel(ac) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + Duel.RegisterEffect(e1,tp) +end +function c511000472.damop(e,tp,eg,ep,ev,re,r,rp) + if ep~=e:GetOwnerPlayer() then return end + local hg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND) + if hg:GetCount()==0 then return end + Duel.ConfirmCards(1-ep,hg) + if hg:GetFirst():GetCode()==e:GetLabel() then + Duel.Damage(1-tp,1000,REASON_EFFECT) + else + Duel.Damage(tp,1000,REASON_EFFECT) + end + Duel.ShuffleHand(ep) +end diff --git a/script/c511000474.lua b/script/c511000474.lua new file mode 100644 index 00000000..ca759aca --- /dev/null +++ b/script/c511000474.lua @@ -0,0 +1,42 @@ +--Riryoku (Anime) +function c511000474.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000474.cost) + e1:SetTarget(c511000474.target) + e1:SetOperation(c511000474.activate) + c:RegisterEffect(e1) +end +function c511000474.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000474.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000474.activate(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + Duel.SetLP(1-tp,Duel.GetLP(1-p)/2,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(Duel.GetLP(1-p)) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000475.lua b/script/c511000475.lua new file mode 100644 index 00000000..d3ca70d7 --- /dev/null +++ b/script/c511000475.lua @@ -0,0 +1,49 @@ +--Jirai Gumo (Anime) +function c511000475.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511000475.target) + e1:SetOperation(c511000475.activate) + c:RegisterEffect(e1) +end +function c511000475.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000475,0,0x21,2100,1000,4,RACE_INSECT,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000475.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511000475,0,0x21,2100,1000,4,RACE_INSECT,ATTRIBUTE_EARTH) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + --baseatk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetCondition(c511000475.basecon) + e1:SetTarget(c511000475.basetg) + e1:SetValue(c511000475.baseval) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511000475.basecon(e) + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and Duel.GetAttackTarget()~=nil + and (Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()) +end +function c511000475.basetg(e,c) + return c==e:GetHandler():GetBattleTarget() +end +function c511000475.baseval(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler():GetBattleTarget() + return c:GetBaseAttack() +end diff --git a/script/c511000476.lua b/script/c511000476.lua new file mode 100644 index 00000000..9466e2d2 --- /dev/null +++ b/script/c511000476.lua @@ -0,0 +1,35 @@ +--One-on-One Fight +function c511000476.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000476.target) + e1:SetOperation(c511000476.activate) + c:RegisterEffect(e1) +end +function c511000476.filter(c) + return c:IsFaceup() +end +function c511000476.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000476.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(Card.IsFaceup,Duel.GetTurnPlayer(),LOCATION_MZONE,0,nil) + local sg1=nil + if g1:GetCount()>0 then + local tg=g1:GetMaxGroup(Card.GetAttack) + sg1=tg:Select(Duel.GetTurnPlayer(),1,1,nil) + Duel.HintSelection(sg1) + end + local g2=Duel.GetMatchingGroup(Card.IsFaceup,1-Duel.GetTurnPlayer(),LOCATION_MZONE,0,nil) + local sg2=nil + if g2:GetCount()>0 then + local tg=g2:GetMaxGroup(Card.GetAttack) + sg2=tg:Select(1-Duel.GetTurnPlayer(),1,1,nil) + Duel.HintSelection(sg2) + end + if sg1:GetCount()>0 and sg2:GetCount()>0 then + Duel.CalculateDamage(sg1:GetFirst(),sg2:GetFirst()) + end +end diff --git a/script/c511000477.lua b/script/c511000477.lua new file mode 100644 index 00000000..aed1e259 --- /dev/null +++ b/script/c511000477.lua @@ -0,0 +1,80 @@ +--Wall Shadow (Anime) +function c511000477.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,67284908,30778711,true,true) + --move + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000477,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000477.seqtg) + e1:SetOperation(c511000477.seqop) + c:RegisterEffect(e1) + --move + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000477,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511000477.seqcon) + e2:SetTarget(c511000477.seqtg) + e2:SetOperation(c511000477.seqop) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c511000477.dircon) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e4:SetValue(c511000477.tgval) + c:RegisterEffect(e4) + --change pos + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000477,0)) + e5:SetCategory(CATEGORY_POSITION) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BE_BATTLE_TARGET) + e5:SetTarget(c511000477.target) + e5:SetOperation(c511000477.operation) + c:RegisterEffect(e5) +end +function c511000477.seqcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000477.seqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end +end +function c511000477.seqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0) + local nseq=0 + if s==1 then nseq=0 + elseif s==2 then nseq=1 + elseif s==4 then nseq=2 + elseif s==8 then nseq=3 + else nseq=4 end + Duel.MoveSequence(c,nseq) +end +function c511000477.dircon(e) + local p=1-e:GetHandlerPlayer() + local seq=4-e:GetHandler():GetSequence() + return Duel.GetFieldCard(p,LOCATION_MZONE,seq)==nil +end +function c511000477.tgval(e,c) + return e:GetHandler():GetSequence()+c:GetSequence()~=4 +end +function c511000477.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c511000477.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511000478.lua b/script/c511000478.lua new file mode 100644 index 00000000..78e246b4 --- /dev/null +++ b/script/c511000478.lua @@ -0,0 +1,46 @@ +--Draw Paradox +function c511000478.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --opponent draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000478,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000478.drcon) + e2:SetTarget(c511000478.drtg) + e2:SetOperation(c511000478.drop) + c:RegisterEffect(e2) +end +function c511000478.drcon(e,eg,ep,ev,re,r,rp) + local tp=Duel.GetTurnPlayer() + return Duel.GetDrawCount(tp)>0 +end +function c511000478.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dt=Duel.GetDrawCount(Duel.GetTurnPlayer()) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + if Duel.GetTurnPlayer()==e:GetHandler():GetControler() then + e1:SetTargetRange(1,0) + else + e1:SetTargetRange(0,1) + end + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end +end +function c511000478.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(1-Duel.GetTurnPlayer(),1,REASON_RULE) +end diff --git a/script/c511000479.lua b/script/c511000479.lua new file mode 100644 index 00000000..8cada9eb --- /dev/null +++ b/script/c511000479.lua @@ -0,0 +1,106 @@ +--Relativity Field +function c511000479.initial_effect(c) + local lp1=Duel.GetLP(c:GetControler()) + local lp2=Duel.GetLP(1-c:GetControler()) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --lose lp + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_SZONE) + e2:SetLabel(lp1) + e2:SetCondition(c511000479.lpcon1) + e2:SetOperation(c511000479.lpop1) + c:RegisterEffect(e2) + --lose lp 2 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_SZONE) + e3:SetLabel(lp2) + e3:SetCondition(c511000479.lpcon2) + e3:SetOperation(c511000479.lpop2) + c:RegisterEffect(e3) + --lose atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ADJUST) + e4:SetRange(LOCATION_SZONE) + e4:SetLabelObject(e2) + e4:SetCondition(c511000479.atkcon1) + e4:SetOperation(c511000479.atkop1) + c:RegisterEffect(e4) + --lose atk 2 + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ADJUST) + e5:SetRange(LOCATION_SZONE) + e5:SetLabelObject(e3) + e5:SetCondition(c511000479.atkcon2) + e5:SetOperation(c511000479.atkop2) + c:RegisterEffect(e5) +end +function c511000479.lpcon1(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + return (Duel.GetLP(p)~=e:GetLabel() and not Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil)) or Duel.GetLP(p)>e:GetLabel() +end +function c511000479.lpcon2(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + return (Duel.GetLP(1-p)~=e:GetLabel() and not Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil)) or Duel.GetLP(1-p)>e:GetLabel() +end +function c511000479.lpop1(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + e:SetLabel(Duel.GetLP(p)) +end +function c511000479.lpop2(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + e:SetLabel(Duel.GetLP(1-p)) +end +function c511000479.atkcon1(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + return Duel.GetLP(p)0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000480.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + elseif dice==5 or dice==6 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511000480.ntcon) + e1:SetTarget(c511000480.nttg) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + else + return + end +end +function c511000480.ntcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511000480.nttg(e,c) + return c:IsLevelAbove(5) +end diff --git a/script/c511000481.lua b/script/c511000481.lua new file mode 100644 index 00000000..74e52491 --- /dev/null +++ b/script/c511000481.lua @@ -0,0 +1,35 @@ +--Mirror of Duality +function c511000481.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCost(c511000481.cost) + e1:SetCondition(c511000481.condition) + e1:SetTarget(c511000481.target) + e1:SetOperation(c511000481.activate) + c:RegisterEffect(e1) +end +function c511000481.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 c511000481.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000481.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,g:GetCount()*100) +end +function c511000481.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local ct=Duel.Destroy(g,REASON_EFFECT) + Duel.Damage(1-tp,ct*500,REASON_EFFECT,true) + Duel.Damage(tp,ct*100,REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c511000482.lua b/script/c511000482.lua new file mode 100644 index 00000000..74847994 --- /dev/null +++ b/script/c511000482.lua @@ -0,0 +1,41 @@ +--Fiend Slime Mold +function c511000482.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000482,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000482.con) + e1:SetCost(c511000482.cost) + e1:SetTarget(c511000482.target) + e1:SetOperation(c511000482.operation) + c:RegisterEffect(e1) +end +function c511000482.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) and Duel.GetTurnPlayer()==tp +end +function c511000482.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 c511000482.filter(c,e,tp) + return c:IsCode(511000482) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000482.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000482.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000482.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,c511000482.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000483.lua b/script/c511000483.lua new file mode 100644 index 00000000..f0a99538 --- /dev/null +++ b/script/c511000483.lua @@ -0,0 +1,42 @@ +--Soul Union +function c511000483.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:SetTarget(c511000483.target) + e1:SetOperation(c511000483.activate) + c:RegisterEffect(e1) +end +function c511000483.filter(c) + return c:IsFaceup() and c:IsSetCard(0x3008) +end +function c511000483.cfilter(c) + return c:IsSetCard(0x3008) +end +function c511000483.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000483.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000483.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c511000483.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c511000483.filter,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g2=Duel.SelectTarget(tp,c511000483.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + local atk=g2:GetFirst():GetAttack() + if atk<0 then atk=0 end + e:SetLabel(atk) +end +function c511000483.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(e:GetLabel()) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000484.lua b/script/c511000484.lua new file mode 100644 index 00000000..cd572842 --- /dev/null +++ b/script/c511000484.lua @@ -0,0 +1,78 @@ +--Mud Max +function c511000484.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(c511000484.target) + e1:SetOperation(c511000484.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(c511000484.eqlimit) + c:RegisterEffect(e2) + --equip effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(300) + c:RegisterEffect(e3) + --battle target + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000484,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BE_BATTLE_TARGET) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000484.negcon) + e4:SetCost(c511000484.negcost) + e4:SetOperation(c511000484.negop) + c:RegisterEffect(e4) +end +function c511000484.eqlimit(e,c) + return c:IsCode(84327329) +end +function c511000484.filter(c) + return c:IsFaceup() and c:IsCode(84327329) +end +function c511000484.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000484.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000484.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000484.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000484.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 c511000484.negcon(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + local bt=eg:GetFirst() + return bt==eq +end +function c511000484.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000484.spfilter(c,e,tp) + return c:GetLevel()<=4 and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000484.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c511000484.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) then + if Duel.SelectYesNo(tp,aux.Stringid(511000484,1)) then + local g=Duel.SelectMatchingCard(tp,c511000484.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 + end + end +end \ No newline at end of file diff --git a/script/c511000485.lua b/script/c511000485.lua new file mode 100644 index 00000000..f0c42109 --- /dev/null +++ b/script/c511000485.lua @@ -0,0 +1,53 @@ +--Spy Hero +function c511000485.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000485.cost) + e1:SetTarget(c511000485.target) + e1:SetOperation(c511000485.activate) + c:RegisterEffect(e1) +end +function c511000485.cfilter(c) + return c:IsAbleToGrave() +end +function c511000485.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000485.cfilter,tp,LOCATION_DECK,0,2,nil) end + local g=Duel.GetMatchingGroup(c511000485.cfilter,tp,LOCATION_DECK,0,nil):RandomSelect(tp,2) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000485.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511000485.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()~=tp and c511000485.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000485.filter,tp,0,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511000485.filter,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511000485.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(tc) + e1:SetOperation(c511000485.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c511000485.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and tc:IsLocation(LOCATION_HAND+LOCATION_SZONE) and tc:IsControler(tp) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(tp,tc) + end +end diff --git a/script/c511000486.lua b/script/c511000486.lua new file mode 100644 index 00000000..94cad54f --- /dev/null +++ b/script/c511000486.lua @@ -0,0 +1,44 @@ +--Climax Hour +function c511000486.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000486.target) + e1:SetOperation(c511000486.activate) + c:RegisterEffect(e1) +end +function c511000486.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end +end +function c511000486.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DRAW) + e1:SetCountLimit(1) + e1:SetLabel(0) + e1:SetCondition(c511000486.spcon) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,4) + e1:SetOperation(c511000486.spop) + Duel.RegisterEffect(e1,tp) +end +function c511000486.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and Duel.GetCurrentPhase()==PHASE_DRAW +end +function c511000486.spop(e,tp,eg,ep,ev,re,r,rp) + if ep~=e:GetOwnerPlayer() then return end + local ct=e:GetLabel()+1 + e:SetLabel(ct) + if e:GetLabel()==3 then + local tc=eg:GetFirst() + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_MONSTER) and tc:IsCanBeSpecialSummoned(e,0,tp,true,false) then + if Duel.SelectYesNo(tp,aux.Stringid(511000486,0)) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end + end + Duel.ShuffleHand(tp) + end +end diff --git a/script/c511000487.lua b/script/c511000487.lua new file mode 100644 index 00000000..71fb4bd3 --- /dev/null +++ b/script/c511000487.lua @@ -0,0 +1,60 @@ +--Hero Dice +function c511000487.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000487.target) + e1:SetOperation(c511000487.activate) + c:RegisterEffect(e1) +end +function c511000487.filter(c) + return c:IsFaceup() and c:IsSetCard(0x3008) +end +function c511000487.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000487.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000487.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000487.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c511000487.dfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000487.desfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsDestructable() +end +function c511000487.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local dice=Duel.TossDice(tp,1) + if dice==1 then + Duel.Damage(tp,tc:GetAttack(),REASON_EFFECT) + elseif dice==2 and Duel.IsExistingMatchingCard(c511000487.dfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,c511000487.dfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.Destroy(dg,REASON_EFFECT) + elseif dice==3 and Duel.IsExistingMatchingCard(c511000487.desfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,c511000487.desfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Destroy(dg,REASON_EFFECT) + elseif dice==4 and Duel.IsExistingMatchingCard(c511000487.desfilter,tp,0,LOCATION_MZONE,1,nil) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,c511000487.desfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.Destroy(dg,REASON_EFFECT) + elseif dice==5 and Duel.IsExistingMatchingCard(c511000487.dfilter,tp,0,LOCATION_ONFIELD,1,e:GetHandler()) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,c511000487.dfilter,tp,0,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.Destroy(dg,REASON_EFFECT) + elseif dice==6 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + else + return + end + end +end diff --git a/script/c511000488.lua b/script/c511000488.lua new file mode 100644 index 00000000..2ac48c66 --- /dev/null +++ b/script/c511000488.lua @@ -0,0 +1,39 @@ +--Feather Storm +function c511000488.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000488.condition) + e1:SetOperation(c511000488.operation) + c:RegisterEffect(e1) +end +function c511000488.cfilter(c) + return c:IsFaceup() and c:IsCode(21844576) +end +function c511000488.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000488.cfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) +end +function c511000488.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local c=e:GetHandler() + local tc=sg:GetFirst() + while tc do + local atk=tc:GetBaseAttack() + local def=tc:GetBaseDefense() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(def) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(atk) + tc:RegisterEffect(e2) + tc=sg:GetNext() + end +end diff --git a/script/c511000489.lua b/script/c511000489.lua new file mode 100644 index 00000000..63baf80b --- /dev/null +++ b/script/c511000489.lua @@ -0,0 +1,64 @@ +--Power Charger +function c511000489.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(c511000489.target) + e1:SetOperation(c511000489.operation) + c:RegisterEffect(e1) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000489,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000489.atkcon) + e2:SetOperation(c511000489.atkop) + 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(c511000489.equiplimit) + c:RegisterEffect(e3) +end +function c511000489.equiplimit(e,c) + return c:IsRace(RACE_WARRIOR) +end +function c511000489.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511000489.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511000489.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000489.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000489.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000489.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 c511000489.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + return e:GetHandler():GetEquipTarget()==eg:GetFirst() and bc:IsReason(REASON_BATTLE) +end +function c511000489.atkop(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(bc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1ff0000) + ec:RegisterEffect(e1) +end diff --git a/script/c511000490.lua b/script/c511000490.lua new file mode 100644 index 00000000..6ba6ed12 --- /dev/null +++ b/script/c511000490.lua @@ -0,0 +1,22 @@ +--Hero Call +function c511000490.initial_effect(c) + --to deck top + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000490.target) + e1:SetOperation(c511000490.operation) + c:RegisterEffect(e1) +end +function c511000490.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_DECK,0,1,nil,TYPE_MONSTER) end +end +function c511000490.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,Card.IsType,tp,LOCATION_DECK,0,1,1,nil,TYPE_MONSTER) + local tc=g:GetFirst() + if tc then + Duel.ShuffleDeck(tp) + Duel.MoveSequence(tc,0) + Duel.ConfirmDecktop(tp,1) + end +end diff --git a/script/c511000491.lua b/script/c511000491.lua new file mode 100644 index 00000000..0405f00e --- /dev/null +++ b/script/c511000491.lua @@ -0,0 +1,40 @@ +--Elemental Mirage +function c511000491.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511000491.condition) + e1:SetTarget(c511000491.target) + e1:SetOperation(c511000491.operation) + c:RegisterEffect(e1) +end +function c511000491.cfilter(c,tp) + return c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:GetPreviousLocation()==LOCATION_MZONE + and bit.band(c:GetPreviousPosition(),POS_FACEUP)~=0 and c:GetReasonPlayer()==1-tp and c:IsSetCard(0x3008) +end +function c511000491.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000491.cfilter,1,nil,tp) +end +function c511000491.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end +end +function c511000491.filter(c,tp) + return c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:GetReasonPlayer()==1-tp and c:GetPreviousLocation()==LOCATION_MZONE +end +function c511000491.operation(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000491.filter,nil,tp) + local tc=g:GetFirst() + while tc do + if tc:IsPreviousPosition(POS_FACEUP_ATTACK) then + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEUP_ATTACK,true) + elseif tc:IsPreviousPosition(POS_FACEDOWN_ATTACK) then + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEDOWN_ATTACK,true) + elseif tc:IsPreviousPosition(POS_FACEUP_DEFENSE) then + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEUP_DEFENSE,true) + else + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEDOWN_DEFENSE,true) + end + tc=g:GetNext() + end +end diff --git a/script/c511000492.lua b/script/c511000492.lua new file mode 100644 index 00000000..e0edab3d --- /dev/null +++ b/script/c511000492.lua @@ -0,0 +1,69 @@ +--Good Hero +function c511000492.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000492.target) + e1:SetOperation(c511000492.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511000492.desop) + c:RegisterEffect(e2) + --Increase ATK + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c511000492.value) + c:RegisterEffect(e3) +end +function c511000492.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsType(TYPE_NORMAL) and c:IsAttackBelow(1000) and c:IsDefenseBelow(1000) +end +function c511000492.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_DECK) and chkc:IsControler(tp) and c511000492.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000492.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000492.eqlimit(e,c) + return e:GetLabelObject()==c +end +function c511000492.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,c511000492.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local c=e:GetHandler() + local tc=g:GetFirst() + if tc then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511000492.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + end +end +function c511000492.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if c:IsReason(REASON_DESTROY) and tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511000492.filter(c) + return c:IsFaceup() and c:IsSetCard(0x3008) +end +function c511000492.value(e,c) + return Duel.GetMatchingGroupCount(c511000492.filter,e:GetHandler():GetControler(),LOCATION_MZONE,0,nil)*300 +end diff --git a/script/c511000493.lua b/script/c511000493.lua new file mode 100644 index 00000000..b3900207 --- /dev/null +++ b/script/c511000493.lua @@ -0,0 +1,35 @@ +--Tag Request +function c511000493.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000493.target) + e1:SetOperation(c511000493.operation) + c:RegisterEffect(e1) +end +function c511000493.tfilter(c,atk,e,tp) + return c:IsSetCard(0x3008) and c:GetAttack()==atk and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000493.filter(c,e,tp) + return c:IsFaceup() and Duel.IsExistingMatchingCard(c511000493.tfilter,tp,LOCATION_HAND,0,1,nil,c:GetAttack(),e,tp) +end +function c511000493.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511000493.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c511000493.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000493.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000493.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c511000493.tfilter,tp,LOCATION_HAND,0,1,1,nil,tc:GetAttack(),e,tp) + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000494.lua b/script/c511000494.lua new file mode 100644 index 00000000..263bd121 --- /dev/null +++ b/script/c511000494.lua @@ -0,0 +1,28 @@ +--Effect Shut +function c511000494.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000494.condition) + e1:SetTarget(c511000494.target) + e1:SetOperation(c511000494.activate) + c:RegisterEffect(e1) +end +function c511000494.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c511000494.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000494.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000495.lua b/script/c511000495.lua new file mode 100644 index 00000000..c8a0dc63 --- /dev/null +++ b/script/c511000495.lua @@ -0,0 +1,101 @@ +--Impact Flip +function c511000495.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(c511000495.target) + e1:SetOperation(c511000495.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) + --pos + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000495,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c511000495.postg) + e3:SetOperation(c511000495.posop) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000495,1)) + e4:SetCategory(CATEGORY_DRAW) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c511000495.drcon) + e4:SetTarget(c511000495.drtg) + e4:SetOperation(c511000495.drop) + c:RegisterEffect(e4) + --draw + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000495,2)) + e5:SetCategory(CATEGORY_DECKDES) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_BATTLE_DESTROYING) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511000495.descon) + e5:SetTarget(c511000495.destg) + e5:SetOperation(c511000495.desop) + c:RegisterEffect(e5) +end +function c511000495.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 c511000495.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 c511000495.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsFacedown,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511000495.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,0x1,0x1,0x4,0x4,true) + end +end +function c511000495.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511000495.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c511000495.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,1,REASON_EFFECT) + Duel.Draw(1-tp,1,REASON_EFFECT) +end +function c511000495.descon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + return e:GetHandler():GetEquipTarget()==eg:GetFirst() and ec:IsControler(tp) + and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) +end +function c511000495.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,0,0,1-tp,1) +end +function c511000495.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.DiscardDeck(1-tp,1,REASON_EFFECT) +end diff --git a/script/c511000496.lua b/script/c511000496.lua new file mode 100644 index 00000000..ff2c4950 --- /dev/null +++ b/script/c511000496.lua @@ -0,0 +1,105 @@ +--Subspatial Battle +function c511000496.initial_effect(c) + --Activate + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_ACTIVATE) + e0:SetCode(EVENT_FREE_CHAIN) + e0:SetTarget(c511000496.regtg) + c:RegisterEffect(e0) + --use effect + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000496,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH+CATEGORY_DAMAGE+CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetLabel(3) + e1:SetTarget(c511000496.target) + e1:SetOperation(c511000496.operation) + c:RegisterEffect(e1) + e0:SetLabelObject(e1) +end +function c511000496.regtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetLabelObject():SetLabel(3) +end +function c511000496.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and c:IsAbleToGrave() +end +function c511000496.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000496.filter,tp,LOCATION_DECK,0,3,nil) + and Duel.IsExistingMatchingCard(c511000496.filter,tp,0,LOCATION_DECK,3,nil) end +end +function c511000496.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(c511000496.filter,tp,LOCATION_DECK,0,3,nil) or not Duel.IsExistingMatchingCard(c511000496.filter,tp,0,LOCATION_DECK,3,nil) then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000496,1)) + local g1=Duel.SelectMatchingCard(tp,c511000496.filter,tp,LOCATION_DECK,0,3,3,nil) + if g1:GetCount()<3 then return end + local g2=Duel.SelectMatchingCard(1-tp,c511000496.filter,tp,0,LOCATION_DECK,3,3,nil) + if g2:GetCount()<3 then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000496,2)) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000496,2)) + local sg2=g2:Select(1-tp,1,1,nil) + Duel.ConfirmCards(1-tp,sg1) + Duel.ConfirmCards(tp,sg2) + Duel.BreakEffect() + if sg1:GetFirst():GetTextAttack()>sg2:GetFirst():GetTextAttack() then + Duel.SendtoHand(sg1,nil,REASON_EFFECT) + Duel.BreakEffect() + Duel.Damage(1-tp,500,REASON_EFFECT) + Duel.SendtoGrave(sg2,REASON_EFFECT) + elseif sg2:GetFirst():GetTextAttack()>sg1:GetFirst():GetTextAttack() then + Duel.SendtoHand(sg2,nil,REASON_EFFECT) + Duel.BreakEffect() + Duel.Damage(tp,500,REASON_EFFECT) + Duel.SendtoGrave(sg1,REASON_EFFECT) + end + g1:Sub(sg1) + g2:Sub(sg2) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000496,2)) + sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000496,2)) + sg2=g2:Select(1-tp,1,1,nil) + Duel.ConfirmCards(1-tp,sg1) + Duel.ConfirmCards(tp,sg2) + Duel.BreakEffect() + if sg1:GetFirst():GetTextAttack()>sg2:GetFirst():GetTextAttack() then + Duel.SendtoHand(sg1,nil,REASON_EFFECT) + Duel.BreakEffect() + Duel.Damage(1-tp,500,REASON_EFFECT) + Duel.SendtoGrave(sg2,REASON_EFFECT) + elseif sg2:GetFirst():GetTextAttack()>sg1:GetFirst():GetTextAttack() then + Duel.SendtoHand(sg2,nil,REASON_EFFECT) + Duel.BreakEffect() + Duel.Damage(tp,500,REASON_EFFECT) + Duel.SendtoGrave(sg1,REASON_EFFECT) + end + g1:Sub(sg1) + g2:Sub(sg2) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000496,2)) + sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000496,2)) + sg2=g2:Select(1-tp,1,1,nil) + Duel.ConfirmCards(1-tp,sg1) + Duel.ConfirmCards(tp,sg2) + Duel.BreakEffect() + if sg1:GetFirst():GetTextAttack()>sg2:GetFirst():GetTextAttack() then + Duel.SendtoHand(sg1,nil,REASON_EFFECT) + Duel.BreakEffect() + Duel.Damage(1-tp,500,REASON_EFFECT) + Duel.SendtoGrave(sg2,REASON_EFFECT) + elseif sg2:GetFirst():GetTextAttack()>sg1:GetFirst():GetTextAttack() then + Duel.SendtoHand(sg2,nil,REASON_EFFECT) + Duel.BreakEffect() + Duel.Damage(tp,500,REASON_EFFECT) + Duel.SendtoGrave(sg1,REASON_EFFECT) + end + local ct=e:GetLabel() + ct=ct-1 + e:SetLabel(ct) + if ct<=0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c511000497.lua b/script/c511000497.lua new file mode 100644 index 00000000..ac062f93 --- /dev/null +++ b/script/c511000497.lua @@ -0,0 +1,88 @@ +--Neos Wiseman (Anime) +function c511000497.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,89943723,c511000497.fusfilter,1,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511000497.splimit) + c:RegisterEffect(e1) + --damage&recover + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000497,0)) + e3:SetCategory(CATEGORY_DAMAGE+CATEGORY_RECOVER) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetTarget(c511000497.damtg) + e3:SetOperation(c511000497.damop) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(1) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000497,0)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BATTLE_DESTROYED) + e5:SetCost(c511000497.cost) + e5:SetTarget(c511000497.target) + e5:SetOperation(c511000497.operation) + c:RegisterEffect(e5) +end +function c511000497.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511000497.fusfilter(c) + local code=c:GetCode() + return code==78371393 or code==4779091 or code==31764700 +end +function c511000497.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttackTarget()~=nil end + local bc=e:GetHandler():GetBattleTarget() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,bc:GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,bc:GetDefense()) +end +function c511000497.damop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + local atk=bc:GetAttack() + local def=bc:GetDefense() + if atk<0 then atk=0 end + if def<0 then def=0 end + Duel.Damage(1-tp,atk,REASON_EFFECT) + Duel.Recover(tp,def,REASON_EFFECT) +end +function c511000497.filter(c,e,tp) + return c:GetCode()==89943723 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000497.cfilter(c) + return c:GetCode()==78371393 and c:IsAbleToRemoveAsCost() +end +function c511000497.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000497.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000497.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511000497.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000497.filter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000497.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511000497.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000498.lua b/script/c511000498.lua new file mode 100644 index 00000000..6420cc72 --- /dev/null +++ b/script/c511000498.lua @@ -0,0 +1,26 @@ +--Backdraft +function c511000498.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511000498.con) + e1:SetTarget(c511000498.tg) + e1:SetOperation(c511000498.op) + c:RegisterEffect(e1) +end +function c511000498.con(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst():GetControler()==tp and eg:GetFirst():IsAttribute(ATTRIBUTE_FIRE) +end +function c511000498.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c511000498.op(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000499.lua b/script/c511000499.lua new file mode 100644 index 00000000..15e45e7e --- /dev/null +++ b/script/c511000499.lua @@ -0,0 +1,32 @@ +--Late Hero +function c511000499.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511000499.condition) + e1:SetTarget(c511000499.target) + e1:SetOperation(c511000499.activate) + c:RegisterEffect(e1) +end +function c511000499.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsControler(tp) and tc:IsSetCard(0x3008) +end +function c511000499.spfilter(c,e,tp) + return c:IsAttackBelow(1000) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000499.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000499.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000499.activate(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,c511000499.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000500.lua b/script/c511000500.lua new file mode 100644 index 00000000..5e6c0700 --- /dev/null +++ b/script/c511000500.lua @@ -0,0 +1,55 @@ +--Protection of the Elements +function c511000500.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000500.condition) + e1:SetCost(c511000500.cost) + e1:SetTarget(c511000500.target) + e1:SetOperation(c511000500.activate) + c:RegisterEffect(e1) +end +function c511000500.cfilter(c) + return c:IsSetCard(0x3008) and c:IsAbleToRemoveAsCost() +end +function c511000500.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000500.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000500.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetFirst():IsFacedown() then + Duel.Remove(g,POS_FACEDOWN,REASON_COST+REASON_TEMPORARY) + else + Duel.Remove(g,POS_FACEUP,REASON_COST+REASON_TEMPORARY) + end + e:SetLabelObject(g:GetFirst()) +end +function c511000500.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511000500.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000500.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + local tc=e:GetLabelObject() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetOperation(c511000500.retop) + Duel.RegisterEffect(e1,tp) +end +function c511000500.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c511000501.lua b/script/c511000501.lua new file mode 100644 index 00000000..61f59d96 --- /dev/null +++ b/script/c511000501.lua @@ -0,0 +1,146 @@ +--Colorless, Chaos King of Dark World +function c511000501.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,99458769,34230233,true,true) + --spsummon condition + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_SPSUMMON_CONDITION) + e0:SetValue(c511000501.splimit) + c:RegisterEffect(e0) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c511000501.spcon) + e1:SetOperation(c511000501.spop) + e1:SetValue(SUMMON_TYPE_FUSION) + c:RegisterEffect(e1) + --discard + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000501,0)) + e2:SetCategory(CATEGORY_HANDES) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511000501.target) + e2:SetOperation(c511000501.op) + c:RegisterEffect(e2) + --shuffle + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(10028593,4)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetTarget(c511000501.tdtg) + e3:SetOperation(c511000501.tdop) + c:RegisterEffect(e3) +end +function c511000501.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511000501.spfilter1(c) + return c:IsFaceup() and c:IsCode(34230233) and c:IsAbleToRemove() +end +function c511000501.spfilter2(c) + return c:IsSetCard(0x6) and c:IsAbleToGrave() +end +function c511000501.spcon(e,c) + if c==nil then return true end + return Duel.IsExistingMatchingCard(c511000501.spfilter1,c:GetControler(),LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511000501.spfilter2,c:GetControler(),LOCATION_HAND,0,2,nil) +end +function c511000501.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c511000501.spfilter1,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511000501.spfilter2,tp,LOCATION_HAND,0,2,2,nil) + Duel.Remove(g1,POS_FACEUP,REASON_COST) + Duel.SendtoGrave(g2,REASON_COST) +end +function c511000501.dfilter(c) + return c:IsRace(RACE_FIEND) and c:IsDiscardable() +end +function c511000501.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000501.dfilter,tp,LOCATION_HAND,0,1,nil) end + local op=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000501,1)) + if Duel.GetCurrentPhase()==PHASE_MAIN1 then + op=Duel.SelectOption(tp,aux.Stringid(511000501,2),aux.Stringid(511000501,3)) + else + Duel.SelectOption(tp,aux.Stringid(511000501,2)) + op=0 + end + e:SetLabel(op) + if op==1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511000501.ftarget) + e1:SetLabel(e:GetHandler():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) +end +function c511000501.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c511000501.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetOperation(c511000501.activate) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,1-tp) + else + local g=Duel.GetMatchingGroup(c511000501.dfilter,tp,LOCATION_HAND,0,nil) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + if sg:GetCount()>0 and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(sg:GetFirst():GetAttack()) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + --Extra attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end + end +end +function c511000501.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000501.dfilter,1-tp,LOCATION_HAND,0,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_DISCARD) + local sg=g:Select(1-tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + end +end +function c511000501.tdfilter(c,e,tp) + return c:IsSetCard(0x6) and c:GetCode()~=511000501 +end +function c511000501.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000501.tdfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_REMOVED) +end +function c511000501.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000501.tdfilter,tp,LOCATION_REMOVED,0,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c511000502.lua b/script/c511000502.lua new file mode 100644 index 00000000..301adb5c --- /dev/null +++ b/script/c511000502.lua @@ -0,0 +1,32 @@ +--Gift of the Weak +function c511000502.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000502.cost) + e1:SetTarget(c511000502.target) + e1:SetOperation(c511000502.activate) + c:RegisterEffect(e1) +end +function c511000502.filter(c) + return c:IsType(TYPE_MONSTER) and c:GetLevel()<=3 and c:IsAbleToRemoveAsCost() +end +function c511000502.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000502.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000502.filter,tp,LOCATION_HAND,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511000502.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511000502.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000503.lua b/script/c511000503.lua new file mode 100644 index 00000000..c030c181 --- /dev/null +++ b/script/c511000503.lua @@ -0,0 +1,29 @@ +--Legacy of a HERO +function c511000503.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000503.con) + e1:SetTarget(c511000503.target) + e1:SetOperation(c511000503.activate) + c:RegisterEffect(e1) +end +function c511000503.filter(c) + return c:GetLevel()>=4 and c:IsSetCard(0x8) +end +function c511000503.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000503.filter,tp,LOCATION_GRAVE,0,5,nil) +end +function c511000503.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,3) +end +function c511000503.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000504.lua b/script/c511000504.lua new file mode 100644 index 00000000..223e5982 --- /dev/null +++ b/script/c511000504.lua @@ -0,0 +1,26 @@ +--Magician's Archive +function c511000504.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000504.target) + e1:SetOperation(c511000504.activate) + c:RegisterEffect(e1) +end +function c511000504.afilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511000504.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000504.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000504.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000504.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000505.lua b/script/c511000505.lua new file mode 100644 index 00000000..8953737f --- /dev/null +++ b/script/c511000505.lua @@ -0,0 +1,26 @@ +--Oil +function c511000505.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000505.target) + e1:SetOperation(c511000505.activate) + c:RegisterEffect(e1) +end +function c511000505.filter(c) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c511000505.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511000505.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c511000505.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectMatchingCard(tp,c511000505.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c511000506.lua b/script/c511000506.lua new file mode 100644 index 00000000..96cbef69 --- /dev/null +++ b/script/c511000506.lua @@ -0,0 +1,19 @@ +--Spellbook Inside the Pot +function c511000506.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000506.target) + e1:SetOperation(c511000506.activate) + c:RegisterEffect(e1) +end +function c511000506.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) and Duel.IsPlayerCanDraw(1-tp,3) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,3) +end +function c511000506.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,3,REASON_EFFECT) + Duel.Draw(1-tp,3,REASON_EFFECT) +end diff --git a/script/c511000508.lua b/script/c511000508.lua new file mode 100644 index 00000000..581996eb --- /dev/null +++ b/script/c511000508.lua @@ -0,0 +1,55 @@ +--Ma'at (Anime) +function c511000508.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,57116033,47297616,true,true) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000508,0)) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511000508.target) + e1:SetOperation(c511000508.operation) + e1:SetLabel(0) + c:RegisterEffect(e1) + --atk/def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetLabelObject(e1) + e2:SetValue(c511000508.value) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e3) +end +function c511000508.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000508.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local g=Duel.GetDecktopGroup(tp,1) + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + if Duel.Draw(p,d,REASON_EFFECT)>0 then + Duel.ConfirmCards(1-tp,g:GetFirst()) + if g:GetFirst():GetCode()==ac then + e:SetLabel(e:GetLabel()+1) + e:SetCountLimit(1) + end + end + end +end +function c511000508.value(e,c) + return e:GetLabelObject():GetLabel()*1000 +end diff --git a/script/c511000509.lua b/script/c511000509.lua new file mode 100644 index 00000000..616d7e66 --- /dev/null +++ b/script/c511000509.lua @@ -0,0 +1,104 @@ +--Number 5: Des Chimera Dragon +function c511000509.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.XyzFilterFunction(c,5),2,nil,nil,5) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511000509.atkval) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000509,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_EXTRA) + e2:SetProperty(EFFECT_FLAG_CHAIN_UNIQUE) + e2:SetCost(c511000509.spcost) + e2:SetTarget(c511000509.sptg) + e2:SetOperation(c511000509.spop) + c:RegisterEffect(e2) + --register effect + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000509,2)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511000509.cost) + e3:SetCondition(c511000509.condition) + e3:SetOperation(c511000509.operation) + c:RegisterEffect(e3) +end +c511000509.xyz_number=5 +function c511000509.atkval(e,c) + return c:GetOverlayCount()*900 +end +function c511000509.spfilter(c) + return c:GetLevel()==5 +end +function c511000509.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1200) end + local lp=Duel.GetLP(tp) + local ct=Duel.GetMatchingGroupCount(c511000509.spfilter,e:GetHandler():GetControler(),LOCATION_GRAVE,0,nil) + local t={} + local l=1 + while l<=ct and l*12000 + and e:GetHandler():IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) + and Duel.IsExistingMatchingCard(c511000509.spfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000509.spop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + local g=Duel.SelectMatchingCard(tp,c511000509.spfilter,tp,LOCATION_GRAVE,0,ct,ct,nil) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + Duel.Overlay(e:GetHandler(),g) + e:GetHandler():CompleteProcedure() + end +end +function c511000509.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000509.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c511000509.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511000509.atcon) + e1:SetOperation(c511000509.atop) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511000509.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() +end +function c511000509.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) +end diff --git a/script/c511000510.lua b/script/c511000510.lua new file mode 100644 index 00000000..0738a6e2 --- /dev/null +++ b/script/c511000510.lua @@ -0,0 +1,77 @@ +--Mysterious Monolith +function c511000510.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000510.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000510.regop) + c:RegisterEffect(e3) + if not c511000510.global_check then + c511000510.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000510.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511000510.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511000510.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + while c:GetFlagEffect(511000189)<4 do + c:RegisterFlagEffect(511000189,RESET_EVENT+0x1ff0000,0,0) + end +end diff --git a/script/c511000511.lua b/script/c511000511.lua new file mode 100644 index 00000000..40ca4a70 --- /dev/null +++ b/script/c511000511.lua @@ -0,0 +1,44 @@ +--Ascension Spiral +function c511000511.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetLabel(0) + e1:SetCost(c511000511.cost) + e1:SetTarget(c511000511.target) + e1:SetOperation(c511000511.activate) + c:RegisterEffect(e1) +end +function c511000511.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511000511.filter(c,e,tp,tid) + local rk=c:GetRank() + return c:IsType(TYPE_XYZ) and c:IsReason(REASON_DESTROY) and c:GetTurnID()==tid and c:IsAbleToRemove() and Duel.IsExistingTarget(c511000511.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,rk) +end +function c511000511.spfilter(c,e,tp,rk) + return c:IsType(TYPE_XYZ) and c:GetRank()==rk+2 and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000511.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tid=Duel.GetTurnCount() + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511000511.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c511000511.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,tid) + Duel.Remove(rg,POS_FACEUP,REASON_COST) + Duel.SetTargetParam(rg:GetFirst():GetRank()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000511.activate(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,c511000511.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) +end diff --git a/script/c511000512.lua b/script/c511000512.lua new file mode 100644 index 00000000..d408e318 --- /dev/null +++ b/script/c511000512.lua @@ -0,0 +1,45 @@ +--Number 28: Titanic Moth +function c511000512.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,2) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000512,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c511000512.condition) + e1:SetCost(c511000512.cost) + e1:SetTarget(c511000512.target) + e1:SetOperation(c511000512.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511000512.indes) + c:RegisterEffect(e2) +end +c511000512.xyz_number=28 +function c511000512.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and Duel.GetAttacker()==e:GetHandler() +end +function c511000512.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000512.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)*500) +end +function c511000512.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,Duel.GetFieldGroupCount(p,LOCATION_HAND,0)*500,REASON_EFFECT) +end +function c511000512.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000513.lua b/script/c511000513.lua new file mode 100644 index 00000000..800ea33a --- /dev/null +++ b/script/c511000513.lua @@ -0,0 +1,77 @@ +--Number 77: The Seven Sins +function c511000513.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,12,2) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000513,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511000513.cost) + e1:SetTarget(c511000513.target) + e1:SetOperation(c511000513.operation) + c:RegisterEffect(e1) + --banish replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SEND_REPLACE) + e2:SetTarget(c511000513.reptg) + c:RegisterEffect(e2) + --battle indestructable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e5:SetValue(c511000513.indes) + c:RegisterEffect(e5) + if not c511000513.global_check then + c511000513.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000513.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511000513.xyz_number=77 +function c511000513.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000513.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000513.filter(c,s) + return not c:IsLocation(LOCATION_MZONE) and c~=s +end +function c511000513.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + if Duel.Destroy(g,REASON_EFFECT) then + g=g:Filter(c511000513.filter,nil,e:GetHandler()) + if e:GetHandler():IsLocation(LOCATION_MZONE) then + Duel.Overlay(e:GetHandler(),g) + end + end +end +function c511000513.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_REMOVED and c:CheckRemoveOverlayCard(tp,1,REASON_COST) end + if Duel.SelectYesNo(tp,aux.Stringid(77631175,0)) then + c:RemoveOverlayCard(tp,1,1,REASON_COST) + return true + else return false end +end +function c511000513.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,62541668) + Duel.CreateToken(1-tp,62541668) +end +function c511000513.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000514.lua b/script/c511000514.lua new file mode 100644 index 00000000..d9c6615f --- /dev/null +++ b/script/c511000514.lua @@ -0,0 +1,79 @@ +--Number 84: Pain Gainer +function c511000514.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,11,2,c511000514.ovfilter,aux.Stringid(511000514,0),3,c511000514.xyzop) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511000514.damop) + c:RegisterEffect(e1) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000514,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_DAMAGE) + e2:SetCountLimit(1) + e2:SetCondition(c511000514.atkcon) + e2:SetCost(c511000514.atkcost) + e2:SetOperation(c511000514.atkop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511000514.indes) + c:RegisterEffect(e3) + if not c511000514.global_check then + c511000514.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000514.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511000514.xyz_number=84 +function c511000514.cfilter(c) + return c:IsSetCard(0x95) and c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c511000514.ovfilter(c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) and c:IsSetCard(0x48) and c:GetCode()~=511000514 +end +function c511000514.xyzop(e,tp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000514.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511000514.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511000514.damop(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp then + Duel.Damage(1-tp,300,REASON_EFFECT) + end +end +function c511000514.atkcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511000514.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000514.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(ev) + c:RegisterEffect(e1) + end +end +function c511000514.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511000515.lua b/script/c511000515.lua new file mode 100644 index 00000000..5667a177 --- /dev/null +++ b/script/c511000515.lua @@ -0,0 +1,140 @@ +--Number 95: Galaxy Eyes Dark Matter Dragon +function c511000515.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,9,3) + c:EnableReviveLimit() + --banish + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000515,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511000515.bantg) + e1:SetOperation(c511000515.banop) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511000515.val) + c:RegisterEffect(e2) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000515,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c511000515.atcon) + e3:SetCost(c511000515.atcost) + e3:SetOperation(c511000515.atop) + c:RegisterEffect(e3) + --remove + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000515,2)) + e4:SetCategory(CATEGORY_REMOVE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLED) + e4:SetTarget(c511000515.target) + e4:SetOperation(c511000515.operation) + c:RegisterEffect(e4) + --battle indestructable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e5:SetValue(c511000515.indes) + c:RegisterEffect(e5) + if not c511000515.global_check then + c511000515.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000515.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511000515.xyz_number=95 +function c511000515.banfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsAbleToRemove() +end +function c511000515.banfilter2(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c511000515.bantg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000515.banfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,0) +end +function c511000515.banop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000515.banfilter,tp,LOCATION_DECK,0,1,ct,nil) + if g:GetCount()>0 then + if Duel.Remove(g,POS_FACEUP,REASON_EFFECT) then + local sg=Duel.GetMatchingGroup(c511000515.banfilter2,tp,0,LOCATION_DECK,nil) + if sg:GetCount()>=g:GetCount() then + Duel.ConfirmCards(tp,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local ban=sg:Select(tp,1,g:GetCount(),nil) + Duel.Remove(ban,POS_FACEUP,REASON_EFFECT) + else + local dg=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + Duel.ConfirmCards(tp,dg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local ban=sg:Select(tp,1,g:GetCount(),nil) + Duel.Remove(ban,POS_FACEUP,REASON_EFFECT) + end + end + end +end +function c511000515.val(e,c) + local g=e:GetHandler():GetOverlayGroup() + local atk=0 + local val=0 + local tc=g:GetFirst() + while tc do + if tc:IsType(TYPE_MONSTER) then + atk=tc:GetAttack() + else + atk=0 + end + val=val+atk + tc=g:GetNext() + end + return val +end +function c511000515.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return Duel.GetAttacker()==c and c:IsChainAttackable() +end +function c511000515.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000515.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end +function c511000515.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local a=Duel.GetAttacker() + local t=Duel.GetAttackTarget() + if chk==0 then + return (t==c and a:IsAbleToRemove()) + or (a==c and t~=nil and t:IsAbleToRemove()) + end + local g=Group.CreateGroup() + if a:IsRelateToBattle() then g:AddCard(a) end + if t~=nil and t:IsRelateToBattle() then g:AddCard(t) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511000515.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local g=Group.FromCards(a,d) + local rg=g:Filter(Card.IsRelateToBattle,nil) + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) +end +function c511000515.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511000516.lua b/script/c511000516.lua new file mode 100644 index 00000000..168c7984 --- /dev/null +++ b/script/c511000516.lua @@ -0,0 +1,49 @@ +--Number 35: Ravenous Tarantula +function c511000516.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,10,2) + c:EnableReviveLimit() + --half atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511000516.atktg) + e1:SetValue(c511000516.val) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENCE) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511000516.indes) + c:RegisterEffect(e3) + if not c511000516.global_check then + c511000516.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000516.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511000516.xyz_number=35 +function c511000516.atktg(e,c) + return c:IsRace(RACE_INSECT) +end +function c511000516.val(e,c) + local tp=e:GetHandler():GetControler() + if Duel.GetLP(tp)<=Duel.GetLP(1-tp) then + return Duel.GetLP(1-tp)-Duel.GetLP(tp) + else + return Duel.GetLP(tp)-Duel.GetLP(1-tp) + end +end +function c511000516.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511000518.lua b/script/c511000518.lua new file mode 100644 index 00000000..bead8f10 --- /dev/null +++ b/script/c511000518.lua @@ -0,0 +1,77 @@ +--Prism Wall +function c511000518.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000518,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000518.condition1) + e1:SetTarget(c511000518.target1) + e1:SetOperation(c511000518.activate1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000518,1)) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511000518.condition2) + e2:SetTarget(c511000518.target2) + e2:SetOperation(c511000518.activate2) + c:RegisterEffect(e2) +end +function c511000518.condition1(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsFaceup() and d:IsControler(tp) +end +function c511000518.filter1(c,e) + return c:IsCanBeEffectTarget(e) and c:IsFaceup() +end +function c511000518.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ag=eg:GetFirst():GetAttackableTarget() + if chkc then return ag:IsContains(chkc) and c511000518.filter1(chkc,e) end + local at=Duel.GetAttackTarget() + if chk==0 then return ag:IsExists(c511000518.filter1,1,at,e) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=ag:FilterSelect(tp,c511000518.filter1,1,1,at,e) + Duel.SetTargetCard(g) +end +function c511000518.activate1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangeAttackTarget(tc) + local dam=tc:GetAttack() + Duel.Damage(1-tp,dam,REASON_EFFECT,true) + Duel.Damage(tp,dam,REASON_EFFECT,true) + Duel.RDComplete() + end +end +function c511000518.condition2(e,tp,eg,ep,ev,re,r,rp) + if not re:IsActiveType(TYPE_MONSTER) or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE) and tc:IsFaceup() +end +function c511000518.filter2(c,re,rp,tf,ceg,cep,cev,cre,cr,crp) + return tf(re,rp,ceg,cep,cev,cre,cr,crp,0,c) and c:IsFaceup() +end +function c511000518.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tf=re:GetTarget() + local res,ceg,cep,cev,cre,cr,crp=Duel.CheckEvent(re:GetCode(),true) + if chkc then return chkc~=e:GetLabelObject() and chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and tf(re,rp,ceg,cep,cev,cre,cr,crp,0,chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000518.filter2,tp,LOCATION_MZONE,0,1,e:GetLabelObject(),re,rp,tf,ceg,cep,cev,cre,cr,crp) and e:GetLabelObject():IsFaceup() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000518.filter2,tp,LOCATION_MZONE,0,1,1,e:GetLabelObject(),re,rp,tf,ceg,cep,cev,cre,cr,crp) +end +function c511000518.activate2(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g:GetCount()>0 and g:GetFirst():IsRelateToEffect(e) then + Duel.ChangeTargetCard(ev,g) + local dam=g:GetFirst():GetAttack() + Duel.Damage(1-tp,dam,REASON_EFFECT,true) + Duel.Damage(tp,dam,REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c511000519.lua b/script/c511000519.lua new file mode 100644 index 00000000..c04e1a99 --- /dev/null +++ b/script/c511000519.lua @@ -0,0 +1,39 @@ +--Queen Butterfly Danaus +function c511000519.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000519,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000519.cost) + e1:SetTarget(c511000519.target) + e1:SetOperation(c511000519.operation) + c:RegisterEffect(e1) +end +function c511000519.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetAttack()>0 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511000519.spfilter(c,e,tp) + return c:IsRace(RACE_INSECT) and c:GetLevel()<=4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000519.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511000519.spfilter,tp,LOCATION_GRAVE,0,3,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_GRAVE) +end +function c511000519.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511000519.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + if g:GetCount()<3 then return end + local sg=g:Select(tp,3,3,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511000520.lua b/script/c511000520.lua new file mode 100644 index 00000000..e03f8b51 --- /dev/null +++ b/script/c511000520.lua @@ -0,0 +1,28 @@ +--Roachie +function c511000520.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c511000520.target) + e1:SetOperation(c511000520.operation) + c:RegisterEffect(e1) +end +function c511000520.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000520.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000520.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000520.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,c511000520.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000521.lua b/script/c511000521.lua new file mode 100644 index 00000000..5bd74ec2 --- /dev/null +++ b/script/c511000521.lua @@ -0,0 +1,15 @@ +--Rose Papillon +function c511000521.initial_effect(c) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetCondition(c511000521.dircon) + c:RegisterEffect(e4) +end +function c511000521.atkfilter(c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) +end +function c511000521.dircon(e) + return Duel.IsExistingMatchingCard(c511000521.atkfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler()) +end diff --git a/script/c511000522.lua b/script/c511000522.lua new file mode 100644 index 00000000..8ddc6e47 --- /dev/null +++ b/script/c511000522.lua @@ -0,0 +1,24 @@ +--Defensive Instinct +function c511000522.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetTarget(c511000522.target) + e1:SetOperation(c511000522.operation) + c:RegisterEffect(e1) +end +function c511000522.filter(c) + return c:IsAttackPos() and c:IsRace(RACE_INSECT) +end +function c511000522.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000522.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000522.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511000522.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000522.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) +end diff --git a/script/c511000523.lua b/script/c511000523.lua new file mode 100644 index 00000000..e707e8cf --- /dev/null +++ b/script/c511000523.lua @@ -0,0 +1,40 @@ +--Insect Horde +function c511000523.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000523.condition) + e1:SetTarget(c511000523.target) + e1:SetOperation(c511000523.operation) + c:RegisterEffect(e1) +end +function c511000523.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511000523.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000523.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000523.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511000523.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000523.filter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp) + if g:GetCount()>0 then + local fid=e:GetHandler():GetFieldID() + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511000524.lua b/script/c511000524.lua new file mode 100644 index 00000000..ade6b1b2 --- /dev/null +++ b/script/c511000524.lua @@ -0,0 +1,39 @@ +--Regressing Wings +function c511000524.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000524.condition) + e1:SetTarget(c511000524.target) + e1:SetOperation(c511000524.activate) + c:RegisterEffect(e1) +end +function c511000524.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_REPTILE) +end +function c511000524.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000524.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000524.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511000524.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + local c=e:GetHandler() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c511000525.lua b/script/c511000525.lua new file mode 100644 index 00000000..6eb4165c --- /dev/null +++ b/script/c511000525.lua @@ -0,0 +1,16 @@ +--Ancient Charge +function c511000525.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_PIERCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_REPTILE)) + c:RegisterEffect(e2) +end diff --git a/script/c511000526.lua b/script/c511000526.lua new file mode 100644 index 00000000..05f55a92 --- /dev/null +++ b/script/c511000526.lua @@ -0,0 +1,32 @@ +--Dowsing Burn +function c511000526.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000526.target) + e1:SetOperation(c511000526.activate) + c:RegisterEffect(e1) +end +function c511000526.banfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() and Duel.IsExistingTarget(c511000526.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,c:GetLevel(),c:GetRace()) +end +function c511000526.desfilter(c,lv,race) + return c:IsFaceup() and c:GetLevel()0 then + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local tc=Duel.SelectMatchingCard(tp,c511000526.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,g:GetFirst():GetLevel(),g:GetFirst():GetRace()) + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000527.lua b/script/c511000527.lua new file mode 100644 index 00000000..4d12c429 --- /dev/null +++ b/script/c511000527.lua @@ -0,0 +1,29 @@ +--Flint Cragger +function c511000527.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000527,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000527.cost) + e1:SetTarget(c511000527.tg) + e1:SetOperation(c511000527.op) + c:RegisterEffect(e1) +end +function c511000527.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000527.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511000527.op(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000531.lua b/script/c511000531.lua new file mode 100644 index 00000000..a678a98d --- /dev/null +++ b/script/c511000531.lua @@ -0,0 +1,32 @@ +-- DNA Erasure Magic +-- scripted by: UnknownGuest +function c511000531.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000531.target) + c:RegisterEffect(e1) + -- remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000531.rmtarget) + e2:SetTargetRange(0xff,0xff) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c511000531.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,563) + local rc=Duel.AnnounceRace(tp,1,0xffffff) + e:GetLabelObject():SetLabel(rc) + e:GetHandler():SetHint(CHINT_RACE,rc) +end +function c511000531.rmtarget(e,c) + local race=e:GetLabel() + return c:IsRace(race) and not c:IsLocation(0x80) and not c:IsType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c511000532.lua b/script/c511000532.lua new file mode 100644 index 00000000..3cc15759 --- /dev/null +++ b/script/c511000532.lua @@ -0,0 +1,45 @@ +-- Psychic Wave +-- scripted by: UnknownGuest +function c511000532.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000532.cost) + e1:SetCondition(c511000532.condition) + e1:SetTarget(c511000532.target) + e1:SetOperation(c511000532.operation) + c:RegisterEffect(e1) +end +function c511000532.costfilter(c) + return c:IsCode(77585513) and c:IsAbleToGraveAsCost() +end +function c511000532.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000532.costfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000532.costfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000532.cfilter(c) + return c:IsFaceup() and c:IsAttackPos() and c:IsCode(9418534) +end +function c511000532.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000532.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000532.filter(c) + return c:IsFaceup() and c:IsCode(9418534) +end +function c511000532.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000532.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000532.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000532.filter,tp,LOCATION_MZONE,0,1,1,nil) + local d=g:GetFirst():GetAttack() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(d) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,d) +end +function c511000532.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000533.lua b/script/c511000533.lua new file mode 100644 index 00000000..4fbfc4e6 --- /dev/null +++ b/script/c511000533.lua @@ -0,0 +1,53 @@ +--Wings of Silence +function c511000533.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(c511000533.target) + e1:SetOperation(c511000533.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + c:RegisterEffect(e2) + --immune + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetValue(c511000533.efilter) + c:RegisterEffect(e3) + --equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511000533.eqlimit) + c:RegisterEffect(e4) +end +function c511000533.eqlimit(e,c) + return c:IsRace(RACE_WINDBEAST) +end +function c511000533.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) +end +function c511000533.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000533.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000533.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000533.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000533.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 c511000533.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() and re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c511000534.lua b/script/c511000534.lua new file mode 100644 index 00000000..0b69c9e0 --- /dev/null +++ b/script/c511000534.lua @@ -0,0 +1,53 @@ +--Blizzard Vision +function c511000534.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000534.target) + e1:SetOperation(c511000534.activate) + c:RegisterEffect(e1) +end +function c511000534.filter(c,tp) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:GetLevel()>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetCode(),0,0x11,0,0,c:GetLevel(),c:GetRace(),c:GetAttribute()) +end +function c511000534.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000534.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000534.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511000534.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000534.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) then return end + if not tc or not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,tc:GetCode(),0,0x11,0,0,tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) then return end + c:AddMonsterAttribute(TYPE_NORMAL+TYPE_SPELL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(tc:GetRace()) + c:RegisterEffect(e1) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e4:SetValue(tc:GetAttribute()) + c:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_LEVEL) + e5:SetValue(tc:GetLevel()) + c:RegisterEffect(e5) + local e6=e1:Clone() + e6:SetCode(EFFECT_REMOVE_TYPE) + e6:SetValue(TYPE_TRAP) + c:RegisterEffect(e6) +end diff --git a/script/c511000535.lua b/script/c511000535.lua new file mode 100644 index 00000000..0cee28ec --- /dev/null +++ b/script/c511000535.lua @@ -0,0 +1,60 @@ +--Ice Chain +function c511000535.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000535.target) + e1:SetOperation(c511000535.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511000535.desop) + c:RegisterEffect(e2) + --Destroy2 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511000535.descon2) + e3:SetOperation(c511000535.desop2) + c:RegisterEffect(e3) +end +function c511000535.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_WATER) and c:GetLevel()<=4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000535.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_HAND and chkc:GetControler()==tp + and chkc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000535.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000535.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000535.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + c:SetCardTarget(tc) + end +end +function c511000535.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511000535.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511000535.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000536.lua b/script/c511000536.lua new file mode 100644 index 00000000..3a6ff7de --- /dev/null +++ b/script/c511000536.lua @@ -0,0 +1,75 @@ +--魔水晶 +function c511000536.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000536.condition) + e1:SetOperation(c511000536.activate) + c:RegisterEffect(e1) + if not c511000536.global_check then + c511000536.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511000536.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511000536.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511000536)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511000536.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511000536,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511000536.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=c:GetAttack()-e:GetLabel() + Duel.RaiseEvent(c,511000536,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511000536.cfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511000536.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000536.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000536.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(511000536) + e1:SetCondition(c511000536.atkcon) + e1:SetOperation(c511000536.atkop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000536.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetCount()==1 and ev~=0 and eg:GetFirst():IsControler(1-tp) +end +function c511000536.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(ev) + tc:RegisterEffect(e1) +end diff --git a/script/c511000537.lua b/script/c511000537.lua new file mode 100644 index 00000000..c4d02e94 --- /dev/null +++ b/script/c511000537.lua @@ -0,0 +1,34 @@ +--Absolute Zero +function c511000537.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(0,TIMING_END_PHASE) + e1:SetTarget(c511000537.target) + e1:SetOperation(c511000537.activate) + c:RegisterEffect(e1) +end +function c511000537.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()==0 +end +function c511000537.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000537.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000537.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000537.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000537.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000538.lua b/script/c511000538.lua new file mode 100644 index 00000000..e2c6c2df --- /dev/null +++ b/script/c511000538.lua @@ -0,0 +1,139 @@ +--氷炎の卵 +function c511000538.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000538,0)) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511000538.spcon) + e1:SetTarget(c511000538.sptg) + e1:SetOperation(c511000538.spop) + c:RegisterEffect(e1) + if not c511000538.global_check then + c511000538.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511000538.synchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511000538.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c511000538.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000538.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511000538.filter(chkc,e,tp) and chkc:IsControler(tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000538.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000538.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then + local rk=tc:GetRank()+1 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + tc:RegisterEffect(e2) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CHANGE_RANK) + e4:SetValue(rk) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4) + local e7=Effect.CreateEffect(e:GetHandler()) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_XYZ_LEVEL) + e7:SetValue(c511000538.xyzlv) + e7:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e7) + --double xyz material + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(511000538) + e8:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e8) + Duel.SpecialSummonComplete() + end +end +function c511000538.synchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511000538.xyzlv(e,c,rc) + return c:GetRank() +end diff --git a/script/c511000539.lua b/script/c511000539.lua new file mode 100644 index 00000000..fce3ba80 --- /dev/null +++ b/script/c511000539.lua @@ -0,0 +1,38 @@ +--Thousand Dragon (Anime) +function c511000539.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000539,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetProperty(EFFECT_FLAG_CHAIN_UNIQUE) + e1:SetCode(71625222) + e1:SetCondition(c511000539.spcon) + e1:SetCost(c511000539.cost) + e1:SetTarget(c511000539.sptg) + e1:SetOperation(c511000539.spop) + c:RegisterEffect(e1) +end +function c511000539.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511000539.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,88819587) end + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,88819587) + Duel.Release(g,REASON_COST) +end +function c511000539.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + if e:GetHandler():IsLocation(LOCATION_DECK) then + Duel.ConfirmCards(1-tp,e:GetHandler()) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000539.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) and Duel.SpecialSummon(e:GetHandler(),0,tp,tp,true,false,POS_FACEUP)>0 then + e:GetHandler():CompleteProcedure() + end +end diff --git a/script/c511000540.lua b/script/c511000540.lua new file mode 100644 index 00000000..808247c4 --- /dev/null +++ b/script/c511000540.lua @@ -0,0 +1,31 @@ +--Skull Dice (Anime) +function c511000540.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000540.target) + e1:SetOperation(c511000540.activate) + c:RegisterEffect(e1) +end +function c511000540.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local d=Duel.TossDice(tp,1) + e:SetLabel(d) +end +function c511000540.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000541.lua b/script/c511000541.lua new file mode 100644 index 00000000..1ec11647 --- /dev/null +++ b/script/c511000541.lua @@ -0,0 +1,34 @@ +--Graceful Dice (Anime) +function c511000541.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000541.target) + e1:SetOperation(c511000541.activate) + c:RegisterEffect(e1) +end +function c511000541.filter(c) + return c:IsAttackBelow(500) and c:IsFaceup() +end +function c511000541.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000541.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000541.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local d=Duel.TossDice(tp,1) + e:SetLabel(d) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000541.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000541.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()*e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000542.lua b/script/c511000542.lua new file mode 100644 index 00000000..e2a12f61 --- /dev/null +++ b/script/c511000542.lua @@ -0,0 +1,30 @@ +--Cross Shift +function c511000542.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c511000542.target) + e1:SetOperation(c511000542.activate) + c:RegisterEffect(e1) +end +function c511000542.filter(c) + return c:GetLevel()<=4 and c:IsType(TYPE_MONSTER) +end +function c511000542.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_MZONE,0,1,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000542.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c511000542.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.SelectMatchingCard(tp,c511000542.filter,tp,LOCATION_HAND,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g2=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_MZONE,0,1,1,nil) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.SendtoHand(g2,nil,REASON_EFFECT) + Duel.MoveToField(g1:GetFirst(),tp,tp,LOCATION_MZONE,POS_FACEUP+POS_FACEDOWN,true) + end +end diff --git a/script/c511000543.lua b/script/c511000543.lua new file mode 100644 index 00000000..6adf21c5 --- /dev/null +++ b/script/c511000543.lua @@ -0,0 +1,35 @@ +--Summon Capture +function c511000543.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(0,TIMING_TOHAND) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000543.target) + e1:SetOperation(c511000543.activate) + c:RegisterEffect(e1) +end +function c511000543.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) +end +function c511000543.filter(c) + return c:IsSummonable(true,nil) +end +function c511000543.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,0,LOCATION_HAND) + if g:GetCount()>0 then + Duel.ConfirmCards(p,g) + local tg2=g:Filter(Card.IsType,nil,TYPE_MONSTER) + local tg=tg2:Filter(c511000543.filter,nil) + if tg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local sg=tg:Select(p,1,1,nil) + Duel.Summon(tp,sg:GetFirst(),true,nil) + end + Duel.ShuffleHand(1-p) + end +end diff --git a/script/c511000544.lua b/script/c511000544.lua new file mode 100644 index 00000000..30d3ea9c --- /dev/null +++ b/script/c511000544.lua @@ -0,0 +1,53 @@ +--Mother Spider +function c511000544.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000544.spcon) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000544,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511000544.cost) + e2:SetTarget(c511000544.target) + e2:SetOperation(c511000544.operation) + c:RegisterEffect(e2) +end +function c511000544.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.GetFieldGroupCount(c:GetControler(),LOCATION_ONFIELD,0)==0 +end +function c511000544.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511000544.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000544.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>=2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingTarget(c511000544.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,3,nil,e,tp,511000545) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000544.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,3,3,nil,e,tp,511000545) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,3,0,0) +end +function c511000544.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if g:GetCount()~=3 or ft<3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local tc=g:GetFirst() + while tc do + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(511000545,RESET_EVENT+0x1ff0000,0,0) + tc=g:GetNext() + end +end diff --git a/script/c511000545.lua b/script/c511000545.lua new file mode 100644 index 00000000..5c78d08b --- /dev/null +++ b/script/c511000545.lua @@ -0,0 +1,12 @@ +--Baby Spider +function c511000545.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(5) + e1:SetCondition(c511000545.lvcon) + c:RegisterEffect(e1) +end +function c511000545.lvcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000545)>0 +end diff --git a/script/c511000546.lua b/script/c511000546.lua new file mode 100644 index 00000000..16bbe473 --- /dev/null +++ b/script/c511000546.lua @@ -0,0 +1,34 @@ +--Ace of Sword +function c511000546.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COIN+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000546.target) + e1:SetOperation(c511000546.activate) + c:RegisterEffect(e1) +end +function c511000546.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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local res=Duel.TossCoin(tp,1) + if res==0 then + Duel.SetTargetPlayer(tp) + else + Duel.SetTargetPlayer(1-tp) + end + Duel.SetTargetParam(g:GetFirst():GetAttack()) + if res==0 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,g:GetFirst():GetAttack()) + else + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) + end +end +function c511000546.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000548.lua b/script/c511000548.lua new file mode 100644 index 00000000..418e7702 --- /dev/null +++ b/script/c511000548.lua @@ -0,0 +1,30 @@ +--Return to the Doomed +function c511000548.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000548.target) + e1:SetOperation(c511000548.activate) + c:RegisterEffect(e1) +end +function c511000548.filter(c,e,tp,tid) + return c:IsReason(REASON_DESTROY) and c:GetTurnID()==tid-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000548.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000548.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000548.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000548.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,tid) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000548.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000549.lua b/script/c511000549.lua new file mode 100644 index 00000000..769240c0 --- /dev/null +++ b/script/c511000549.lua @@ -0,0 +1,31 @@ +--Shadow Toon +function c511000549.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000549.condition) + e1:SetTarget(c511000549.target) + e1:SetOperation(c511000549.activate) + c:RegisterEffect(e1) +end +function c511000549.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c511000549.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000549.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000549.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511000549.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511000550.lua b/script/c511000550.lua new file mode 100644 index 00000000..4b437753 --- /dev/null +++ b/script/c511000550.lua @@ -0,0 +1,102 @@ +--Insect Pheromone +function c511000550.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(c511000550.target) + e1:SetOperation(c511000550.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(c511000550.eqlimit) + c:RegisterEffect(e2) + --insect + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000550,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c511000550.intg) + e3:SetOperation(c511000550.inop) + c:RegisterEffect(e3) + --force atk + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000489,0)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_DESTROYING) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000550.atkcon) + e4:SetTarget(c511000550.atktg) + e4:SetOperation(c511000550.atkop) + c:RegisterEffect(e4) +end +function c511000550.eqlimit(e,c) + return c:IsCode(37957847) +end +function c511000550.filter(c) + return c:IsFaceup() and c:IsCode(37957847) +end +function c511000550.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000550.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000550.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000550.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000550.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 c511000550.infilter(c) + return c:IsFaceup() and not c:IsRace(RACE_INSECT) +end +function c511000550.intg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(c511000550.infilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511000550.infilter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000550.inop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(RACE_INSECT) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c511000550.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + return e:GetHandler():GetEquipTarget()==eg:GetFirst() and bc:IsReason(REASON_BATTLE) +end +function c511000550.atkfilter(c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) +end +function c511000550.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(c511000550.atkfilter,tp,0,LOCATION_MZONE,1,bc) end +end +function c511000550.atkop(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + local g=Duel.SelectMatchingCard(tp,c511000550.atkfilter,tp,0,LOCATION_MZONE,1,1,bc) + Duel.CalculateDamage(g:GetFirst(),ec) +end diff --git a/script/c511000551.lua b/script/c511000551.lua new file mode 100644 index 00000000..ddd2ef49 --- /dev/null +++ b/script/c511000551.lua @@ -0,0 +1,24 @@ +--Treasures of the Dead +function c511000551.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000551.target) + e1:SetOperation(c511000551.activate) + c:RegisterEffect(e1) +end +function c511000551.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,LOCATION_GRAVE,0,1,e:GetHandler(),TYPE_SPELL+TYPE_TRAP) end + Duel.SetTargetPlayer(tp) + local rec=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,e:GetHandler(),TYPE_SPELL+TYPE_TRAP)*500 + Duel.SetTargetParam(rec) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,rec) +end +function c511000551.activate(e,tp,eg,ep,ev,re,r,rp) + local val=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,e:GetHandler(),TYPE_SPELL+TYPE_TRAP)*500 + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Recover(p,val,REASON_EFFECT) +end diff --git a/script/c511000552.lua b/script/c511000552.lua new file mode 100644 index 00000000..dc864bc2 --- /dev/null +++ b/script/c511000552.lua @@ -0,0 +1,43 @@ +--Soul Charge (Anime) +function c511000552.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000552.sptg) + e1:SetOperation(c511000552.spop) + c:RegisterEffect(e1) +end +function c511000552.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000552.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000552.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,500) +end +function c511000552.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000552.filter,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.HintSelection(g) + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + local ct=g:GetCount()*500 + Duel.Damage(tp,ct,REASON_EFFECT) + end +end diff --git a/script/c511000553.lua b/script/c511000553.lua new file mode 100644 index 00000000..92c5c5e8 --- /dev/null +++ b/script/c511000553.lua @@ -0,0 +1,17 @@ +--Seraphim Blaster +function c511000553.initial_effect(c) + --atk + 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:SetValue(c511000553.val) + c:RegisterEffect(e1) +end +function c511000553.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511000553.val(e,c) + return Duel.GetMatchingGroupCount(c511000553.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*300 +end diff --git a/script/c511000554.lua b/script/c511000554.lua new file mode 100644 index 00000000..f6082cfc --- /dev/null +++ b/script/c511000554.lua @@ -0,0 +1,29 @@ +--Heaven's Lost Property +function c511000554.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000554.target) + e1:SetOperation(c511000554.activate) + c:RegisterEffect(e1) +end +function c511000554.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) and Duel.IsPlayerCanDraw(1-tp,3) end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,PLAYER_ALL,2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,3) +end +function c511000554.activate(e,tp,eg,ep,ev,re,r,rp) + local h1=Duel.Draw(tp,3,REASON_EFFECT) + local h2=Duel.Draw(1-tp,3,REASON_EFFECT) + if h1>0 or h2>0 then Duel.BreakEffect() end + if h1>0 then + Duel.ShuffleHand(tp) + Duel.DiscardHand(tp,aux.TRUE,2,2,REASON_EFFECT+REASON_DISCARD) + end + if h2>0 then + Duel.ShuffleHand(1-tp) + Duel.DiscardHand(1-tp,aux.TRUE,2,2,REASON_EFFECT+REASON_DISCARD) + end +end diff --git a/script/c511000555.lua b/script/c511000555.lua new file mode 100644 index 00000000..5bad227f --- /dev/null +++ b/script/c511000555.lua @@ -0,0 +1,33 @@ +--Angel Sing +function c511000555.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000555.target) + e1:SetOperation(c511000555.activate) + c:RegisterEffect(e1) +end +function c511000555.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511000555.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(c511000555.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000555.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000555.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local atk=Duel.GetMatchingGroupCount(c511000555.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*300 + if tc 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) + e1:SetValue(atk) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000556.lua b/script/c511000556.lua new file mode 100644 index 00000000..67dcc63a --- /dev/null +++ b/script/c511000556.lua @@ -0,0 +1,78 @@ +--Xyz Charge Up +function c511000556.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000556.con) + e1:SetOperation(c511000556.op) + c:RegisterEffect(e1) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000556,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCondition(c511000556.condition) + e2:SetCost(c511000556.cost) + e2:SetTarget(c511000556.tg) + e2:SetOperation(c511000556.atkop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c511000556.con(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + e:SetLabel(cv) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + e:SetLabel(cv) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511000556.op(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + local c=e:GetHandler() + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e1=Effect.CreateEffect(c) + 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(c511000556.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511000556.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end +function c511000556.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000556.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000556.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511000556.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000556.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000556.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc=Duel.SelectMatchingCard(tp,c511000556.filter,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(e:GetLabelObject():GetLabel()) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000557.lua b/script/c511000557.lua new file mode 100644 index 00000000..dccff6f6 --- /dev/null +++ b/script/c511000557.lua @@ -0,0 +1,31 @@ +--Contingency Fee +function c511000557.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000557.condition) + e1:SetTarget(c511000557.target) + e1:SetOperation(c511000557.activate) + c:RegisterEffect(e1) +end +function c511000557.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)<6 +end +function c511000557.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp) end + Duel.SetTargetPlayer(1-tp) + local ht=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0) + local ct=6-ht + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ct*1000) +end +function c511000557.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ht=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0) + local ct=6-ht + if Duel.Draw(p,ct,REASON_EFFECT) then + Duel.Recover(tp,ct*1000,REASON_EFFECT) + end +end diff --git a/script/c511000558.lua b/script/c511000558.lua new file mode 100644 index 00000000..9b76a967 --- /dev/null +++ b/script/c511000558.lua @@ -0,0 +1,71 @@ +--Life Stream Dragon +function c511000558.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.FilterBoolFunction(Card.IsCode,2403771)) + c:EnableReviveLimit() + --change lp + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000558,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511000558.lpcon) + e1:SetOperation(c511000558.lpop) + c:RegisterEffect(e1) + --damage reduce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(1,0) + e2:SetValue(c511000558.damval) + c:RegisterEffect(e2) + --lvchange + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000558,3)) + e3:SetCategory(CATEGORY_LVCHANGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c511000558.lvtg) + e3:SetOperation(c511000558.lvop) + c:RegisterEffect(e3) +end +function c511000558.lpcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and (Duel.GetLP(tp)<4000 or Duel.GetLP(1-tp)<4000) +end +function c511000558.lpop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLP(tp)<4000 and Duel.SelectYesNo(tp,aux.Stringid(511000558,1)) then + Duel.BreakEffect() + Duel.SetLP(tp,4000) + end + if Duel.GetLP(1-tp)<4000 and Duel.SelectYesNo(tp,aux.Stringid(511000558,2)) then + Duel.BreakEffect() + Duel.SetLP(1-tp,4000) + end +end +function c511000558.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 end + return val +end +function c511000558.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511000558.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000558.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end +end +function c511000558.lvop(e,tp,eg,ep,ev,re,r,rp) + local lv=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12) + local g=Duel.GetMatchingGroup(c511000558.filter,tp,LOCATION_MZONE,0,e:GetHandler()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511000559.lua b/script/c511000559.lua new file mode 100644 index 00000000..db6e5963 --- /dev/null +++ b/script/c511000559.lua @@ -0,0 +1,45 @@ +--Blue-Eyes White Dragon (DM) +--Scripted by edo9300 +function c511000559.initial_effect(c) + --attack first + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_BP_FIRST_TURN) + e1:SetRange(LOCATION_MZONE+LOCATION_PZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetCondition(c511000559.con) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_MZONE+LOCATION_PZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCondition(c511000559.con2) + e2:SetTarget(c511000559.ftarget) + c:RegisterEffect(e2) + if not c511000559.global_check then + c511000559.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000559.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000559.dm=true +function c511000559.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000559.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 and Duel.IsExistingMatchingCard(function(c)return c:IsType(TYPE_FUSION)end,tp,LOCATION_MZONE,0,1,nil) +end +function c511000559.con2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==1 and e:GetHandler():GetFlagEffect(300)>0 +end +function c511000559.ftarget(e,c) + return not c:IsType(TYPE_FUSION) +end \ No newline at end of file diff --git a/script/c511000560.lua b/script/c511000560.lua new file mode 100644 index 00000000..d1296cc0 --- /dev/null +++ b/script/c511000560.lua @@ -0,0 +1,74 @@ +--Total Defense Shogun (DM) +--Scripted by edo9300 +function c511000560.initial_effect(c) + --to defense + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75372290,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000560.postg) + e1:SetOperation(c511000560.posop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DEFENSE_ATTACK) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(51100567,3)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e4:SetCondition(c511000560.descon) + e4:SetCost(c511000560.descost) + e4:SetTarget(c511000560.destg) + e4:SetOperation(c511000560.desop) + c:RegisterEffect(e4) + if not c511000560.global_check then + c511000560.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000560.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000560.dm=true +function c511000560.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000560.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c511000560.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c511000560.descost(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 c511000560.descon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(300)>0 +end +function c511000560.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() and tg:IsCanBeEffectTarget(e) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511000560.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + Duel.Destroy(tc,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000562.lua b/script/c511000562.lua new file mode 100644 index 00000000..ce09d06a --- /dev/null +++ b/script/c511000562.lua @@ -0,0 +1,65 @@ +--Deepsea Warrior (DM) +--Scripted by edo9300 +function c511000562.initial_effect(c) + --immune spell + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000562.econ) + e1:SetValue(c511000562.efilter) + c:RegisterEffect(e1) + --battle target + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetDescription(aux.Stringid(51100567,4)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e2:SetCost(c511000562.cbcost) + e2:SetCondition(c511000562.cbcon) + e2:SetOperation(c511000562.cbop) + c:RegisterEffect(e2) + if not c511000562.global_check then + c511000562.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000562.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000562.dm=true +function c511000562.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000562.filter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c511000562.econ(e) + return Duel.IsExistingMatchingCard(c511000562.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end +function c511000562.efilter(e,te) + return te:IsActiveType(TYPE_SPELL) +end +function c511000562.cbcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,2,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,2,2,nil) + Duel.Release(g,REASON_COST) +end +function c511000562.cbcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return bt:GetControler()==c:GetControler() and c:GetFlagEffect(300)>0 +end +function c511000562.cbop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetAttacker() + if Duel.NegateAttack() then + Duel.Damage(1-tp,tg:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511000563.lua b/script/c511000563.lua new file mode 100644 index 00000000..fedb0514 --- /dev/null +++ b/script/c511000563.lua @@ -0,0 +1,111 @@ +--Kuriboh (DM) +--Scripted by edo9300 +function c511000563.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40640057,0)) + e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000563.con) + e1:SetCost(c511000563.cost) + e1:SetOperation(c511000563.op) + c:RegisterEffect(e1) + --no damage (dm) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetDescription(aux.Stringid(40640057,0)) + e2:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCondition(c511000563.con2) + e2:SetTarget(c511000563.tg) + e2:SetOperation(c511000563.op2) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_CHAINING) + e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e3:SetCondition(c511000563.con3) + e3:SetOperation(c511000563.op3) + c:RegisterEffect(e3) + if not c511000563.global_check then + c511000563.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000563.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000563.dm=true +function c511000563.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000563.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetBattleDamage(tp)>0 +end +function c511000563.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c511000563.op(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000563.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511000563.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end + +function c511000563.con2(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and Duel.GetBattleDamage(tp)>0 +end +function c511000563.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000563.op2(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000563.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local c=e:GetHandler() + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) +end +function c511000563.con3(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511000563.op3(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(c511000563.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local c=e:GetHandler() + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) +end +function c511000563.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end diff --git a/script/c511000564.lua b/script/c511000564.lua new file mode 100644 index 00000000..9a7af07e --- /dev/null +++ b/script/c511000564.lua @@ -0,0 +1,58 @@ +--Nightmare Penguin (DM) +--Scripted by edo9300 +function c511000564.initial_effect(c) + --return + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81306586,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetCode(EVENT_FLIP) + e1:SetTarget(c511000564.thtg) + e1:SetOperation(c511000564.thop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e2:SetValue(200) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetRange(LOCATION_MZONE+LOCATION_PZONE) + e3:SetCondition(c511000564.con) + c:RegisterEffect(e3) + if not c511000564.global_check then + c511000564.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000564.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000564.dm=true +function c511000564.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000564.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c511000564.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511000564.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c511000565.lua b/script/c511000565.lua new file mode 100644 index 00000000..996dc3cd --- /dev/null +++ b/script/c511000565.lua @@ -0,0 +1,65 @@ +--Dark Magician Girl (DM) +--Scripted by edo9300 +function c511000565.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511000565.val) + c:RegisterEffect(e1) + --add to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51100567,5)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1,511000565) + e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e2:SetCondition(c511000565.con) + e2:SetTarget(c511000565.thtg) + e2:SetOperation(c511000565.thop) + c:RegisterEffect(e2) + if not c511000565.global_check then + c511000565.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000565.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000565.dm=true +function c511000565.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000565.val(e,c) + return Duel.GetMatchingGroupCount(c511000565.filter,c:GetControler(),LOCATION_GRAVE,LOCATION_GRAVE,nil)*300 +end +function c511000565.filter(c) + local code=c:GetCode() + return code==46986414 or code==30208479 +end +function c511000565.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c511000565.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + local dc=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if chk==0 then return dc>=ct and ct>0 end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000565.thop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + Duel.ConfirmDecktop(tp,ct) + local g=Duel.GetDecktopGroup(tp,ct) + g=g:Filter(Card.IsAbleToHand,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + Duel.ShuffleDeck(tp) +end diff --git a/script/c511000566.lua b/script/c511000566.lua new file mode 100644 index 00000000..8dcddaff --- /dev/null +++ b/script/c511000566.lua @@ -0,0 +1,178 @@ +--Flame Swordsman (DM) +--Scripted by edo9300 +function c511000566.initial_effect(c) + c:EnableCounterPermit(0xda,LOCATION_PZONE+LOCATION_MZONE) + --immune to counter cleaner + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e0:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e0:SetRange(LOCATION_PZONE) + e0:SetCode(EVENT_CHAINING) + e0:SetOperation(c511000566.ctop) + c:RegisterEffect(e0) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCondition(c511000566.con) + e1:SetTarget(c511000566.target) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51100567,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetTarget(c511000566.sptg) + e2:SetOperation(c511000566.spop) + c:RegisterEffect(e2) + --transfer atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(51100567,6)) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_PZONE) + e3:SetCountLimit(1,511000566) + e3:SetCondition(c511000566.con) + e3:SetCost(c511000566.trcost) + e3:SetTarget(c511000566.trtg) + e3:SetOperation(c511000566.trop) + c:RegisterEffect(e3) + local e3a=e3:Clone() + e3a:SetRange(LOCATION_MZONE) + e3a:SetCost(c511000566.trcost2) + c:RegisterEffect(e3a) + if not c511000566.global_check then + c511000566.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000566.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000566.dm=true +c511000566.dm_no_spsummon=true +c511000566.dm_custom_activate=true +function c511000566.ctpermit(e) + local c=e:GetHandler() + return c:IsLocation(LOCATION_SZONE) and not c:IsStatus(STATUS_DISABLED) +end +function c511000566.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000566.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c511000566.sumop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetSummonType()==SUMMON_TYPE_SPECIAL+1 then return end + if c:GetSummonType()~=SUMMON_TYPE_SPECIAL+1 then + c:AddCounter(0xda,18) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(ct*100) + c:RegisterEffect(e1) + end +end +function c511000566.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000566.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local ct=c:GetCounter(0xda) + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(ct*100) + c:RegisterEffect(e1) + end +end +function c511000566.op(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + e:GetHandler():AddCounter(0xda,ct) +end +function c511000566.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if re:GetHandler():GetCode()~=38834303 then return end + if re:GetHandler():IsCode(38834303) then + local e0=Effect.CreateEffect(c) + e0:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e0:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e0:SetCode(EVENT_CHAIN_SOLVED) + e0:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e0:SetOperation(c511000566.op) + e0:SetLabel(c:GetCounter(0xda)) + e0:SetReset(RESET_CHAIN) + c:RegisterEffect(e0) + end +end +function c511000566.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():AddCounter(0xda,18) +end +function c511000566.trcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + c:RegisterFlagEffect(511000566,RESET_CHAIN,0,1) + if chk==0 then return c:GetCounter(0xda)>=1 end + local t={} + local l=1 + while l<=e:GetHandler():GetCounter(0xda) do + t[l]=l*100 + l=l+1 + end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100567,7)) + local announce=Duel.AnnounceNumber(tp,table.unpack(t)) + e:SetLabel(announce) + c:RemoveCounter(tp,0xda,announce/100,REASON_COST) +end +function c511000566.trcost2(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + c:RegisterFlagEffect(511000566,RESET_CHAIN,0,1) + if chk==0 then return c:GetAttack()>=100 end + local m=math.floor(c:GetAttack()/100) + local t={} + for i=1,m do + t[i]=i*100 + end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100567,7)) + local announce=Duel.AnnounceNumber(tp,table.unpack(t)) + e:SetLabel(announce) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-announce) + c:RegisterEffect(e1) +end +function c511000566.trfilter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511000566.trtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000566.trfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000566.trfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000566.trfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000566.trop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(e:GetLabel()) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) +end diff --git a/script/c511000568.lua b/script/c511000568.lua new file mode 100644 index 00000000..7176e2d3 --- /dev/null +++ b/script/c511000568.lua @@ -0,0 +1,57 @@ +--Robotic Knight (DM) +--Scripted by edo9300 +function c511000568.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51100567,8)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1,511000568) + e1:SetCondition(c511000568.con) + e1:SetCost(c511000568.cost) + e1:SetTarget(c511000568.target) + e1:SetOperation(c511000568.operation) + c:RegisterEffect(e1) + if not c511000568.global_check then + c511000568.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000568.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000568.dm=true +function c511000568.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000568.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c511000568.costfilter(c) + return c:IsAbleToGraveAsCost() and c:IsRace(RACE_MACHINE) +end +function c511000568.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000568.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local cg=Duel.SelectMatchingCard(tp,c511000568.costfilter,tp,LOCATION_HAND,0,0,99,nil) + Duel.SendtoGrave(cg,REASON_COST) + e:SetLabel(cg:GetCount()) +end +function c511000568.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=e:GetLabel() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ct*500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*500) +end +function c511000568.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511000569.lua b/script/c511000569.lua new file mode 100644 index 00000000..b8a37a31 --- /dev/null +++ b/script/c511000569.lua @@ -0,0 +1,108 @@ +--Goddes With the Third Eye (DM) +--Scripted by edo9300 +function c511000569.initial_effect(c) + --fusion substitute + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_FUSION_SUBSTITUTE) + e1:SetCondition(c511000569.subcon) + c:RegisterEffect(e1) + --fusion + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51100567,9)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e2:SetCondition(c511000569.con) + e2:SetCost(c511000569.cost) + e2:SetTarget(c511000569.target) + e2:SetOperation(c511000569.operation) + c:RegisterEffect(e2) + if not c511000569.global_check then + c511000569.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000569.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000569.dm=true +function c511000569.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000569.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c511000569.subcon(e) + return e:GetHandler():IsLocation(LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE) +end +function c511000569.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) +end +function c511000569.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511000569.costfilter(c) + return c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c511000569.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000569.costfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c511000569.costfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511000569.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511000569.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c511000569.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511000569.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000569.operation(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + if not e:GetHandler():IsRelateToEffect(e) then return end + local mg1=Duel.GetMatchingGroup(c511000569.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511000569.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511000569.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511000571.lua b/script/c511000571.lua new file mode 100644 index 00000000..893abc57 --- /dev/null +++ b/script/c511000571.lua @@ -0,0 +1,107 @@ +--Super Roboyarou (DM) +--Scripted by edo9300 +function c511000571.initial_effect(c) + --fusion material + aux.AddFusionProcCode2(c,92421852,38916461,true,true) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(1412158,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetCondition(c511000571.atkcon) + e1:SetValue(1000) + c:RegisterEffect(e1) + --spsummon robolady + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1412158,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511000571.spcon) + e2:SetTarget(c511000571.sptg) + e2:SetOperation(c511000571.spop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_PZONE) + e3:SetCountLimit(1,511000571) + e3:SetCondition(c511000571.spcon2) + e3:SetTarget(c511000571.sptg2) + e3:SetOperation(c511000571.spop2) + c:RegisterEffect(e3) + if not c511000571.global_check then + c511000571.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000571.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000571.dm=true +c511000571.dm_revive_limit=true +function c511000571.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000571.atkcon(e) + local ph=Duel.GetCurrentPhase() + if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (a==e:GetHandler() or d==e:GetHandler()) and d~=nil +end +function c511000571.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetTurnID()~=Duel.GetTurnCount() +end +function c511000571.spfilter(c,e,tp) + return c:IsCode(75923050) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000571.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsAbleToExtra() + and Duel.IsExistingMatchingCard(c511000571.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000571.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.SendtoDeck(c,nil,2,REASON_EFFECT)~=0 then + local tc=Duel.GetFirstMatchingCard(c511000571.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + end +end +function c511000571.spcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()==1-e:GetHandler():GetControler() +end +function c511000571.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000571.spop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK)>0 then + Duel.ChangeAttackTarget(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + local g=Duel.GetMatchingGroup(Card.IsSSetable,tp,LOCATION_HAND,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(60082869,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local sg=g:Select(tp,1,1,nil) + Duel.SSet(tp,sg:GetFirst()) + end + end +end \ No newline at end of file diff --git a/script/c511000572.lua b/script/c511000572.lua new file mode 100644 index 00000000..bda66a21 --- /dev/null +++ b/script/c511000572.lua @@ -0,0 +1,130 @@ +--Jinzo (DM) +--Scripted by edo9300 +function c511000572.initial_effect(c) + --cannot trigger + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0xa,0xa) + e1:SetTarget(c511000572.distg) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e2:SetTarget(c511000572.distg) + c:RegisterEffect(e2) + --disable effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetRange(LOCATION_MZONE) + e3:SetOperation(c511000572.disop) + c:RegisterEffect(e3) + --disable trap monster + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c511000572.distg) + c:RegisterEffect(e4) + --negate and destroy + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(51100567,10)) + e8:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetCode(EVENT_CHAINING) + e8:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e8:SetCountLimit(1,511000572) + e8:SetCost(c511000572.cost) + e8:SetCondition(c511000572.condition) + e8:SetTarget(c511000572.target) + e8:SetOperation(c511000572.activate) + c:RegisterEffect(e8) + if not c511000572.global_check then + c511000572.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000572.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000572.dm=true +function c511000572.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000572.distg(e,c) + return c:IsType(TYPE_TRAP) +end +function c511000572.disop(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if tl==LOCATION_SZONE and re:IsActiveType(TYPE_TRAP) then + Duel.NegateEffect(ev) + end +end +function c511000572.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,51100567)==0 end + if Duel.GetTurnPlayer()==tp then + Duel.RegisterFlagEffect(tp,51100567,RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,1) + else + Duel.RegisterFlagEffect(tp,51100567,RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,1) + end +end +function c511000572.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep and re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) and e:GetHandler():GetFlagEffect(300)>0 +end +function c511000572.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ng=Group.CreateGroup() + local dg=Group.CreateGroup() + for i=1,ev do + local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) + local tc=te:GetHandler() + ng:AddCard(tc) + if tc:IsType(TYPE_TRAP) and tc:IsRelateToEffect(te) then + dg:AddCard(tc) + end + end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) +end +function c511000572.distg2(c) + return c:IsType(TYPE_TRAP) +end +function c511000572.activate(e,tp,eg,ep,ev,re,r,rp) + local dg=Group.CreateGroup() + for i=1,ev do + Duel.NegateActivation(i) + local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) + local tc=te:GetHandler() + if tc:IsRelateToEffect(e) and tc:IsRelateToEffect(te) and tc:IsControler(1-tp) then + dg:AddCard(tc) + end + end + local g=Duel.GetMatchingGroup(c511000572.distg2,tp,0,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + local c=e:GetHandler() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511000573.lua b/script/c511000573.lua new file mode 100644 index 00000000..173b66e1 --- /dev/null +++ b/script/c511000573.lua @@ -0,0 +1,58 @@ +--Lord of D. (DM) +--Scripted by edo9300 +function c511000573.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(c511000573.etarget) + e1:SetValue(1) + c:RegisterEffect(e1) + --normal summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51100567,11)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e2:SetCondition(c511000573.con) + e2:SetCountLimit(1,511000573) + e2:SetCost(c511000573.cost) + e2:SetOperation(c511000573.op) + c:RegisterEffect(e2) + if not c511000573.global_check then + c511000573.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000573.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000573.dm=true +function c511000573.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000573.etarget(e,c) + return c:IsRace(RACE_DRAGON) +end +function c511000573.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c511000573.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 c511000573.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DRAGON)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000574.lua b/script/c511000574.lua new file mode 100644 index 00000000..517b918f --- /dev/null +++ b/script/c511000574.lua @@ -0,0 +1,87 @@ +--Dark Magician (DM) +--Scripted by edo9300 +function c511000574.initial_effect(c) + --double activation + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51100567,12)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e1:SetCost(c511000574.cost) + e1:SetCondition(c511000574.condition) + e1:SetTarget(c511000574.target) + e1:SetOperation(c511000574.activate) + c:RegisterEffect(e1) + if not c511000574.global_check then + c511000574.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000574.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000574.dm=true +function c511000574.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000574.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 c511000574.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==ep and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and e:GetHandler():GetFlagEffect(300)>0 +end +function c511000574.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=re:GetHandler() + e:SetLabelObject(tc) + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end +end +function c511000574.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local op=te:GetOperation() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end +end diff --git a/script/c511000575.lua b/script/c511000575.lua new file mode 100644 index 00000000..f8ecb206 --- /dev/null +++ b/script/c511000575.lua @@ -0,0 +1,44 @@ +--Kaiser Sea Horse (DM) +--Scripted by edo9300 +function c511000575.initial_effect(c) + --double tribute + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DOUBLE_TRIBUTE) + e1:SetValue(c511000575.condition) + c:RegisterEffect(e1) + --decrease tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DECREASE_TRIBUTE) + e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e2:SetCondition(c511000575.con) + e2:SetTargetRange(LOCATION_HAND,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT)) + e2:SetValue(0x10001) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_DECREASE_TRIBUTE_SET) + c:RegisterEffect(e3) + if not c511000575.global_check then + c511000575.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000575.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000575.dm=true +function c511000575.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000575.condition(e,c) + return c:IsAttribute(ATTRIBUTE_LIGHT) +end +function c511000575.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end diff --git a/script/c511000576.lua b/script/c511000576.lua new file mode 100644 index 00000000..b6ea8f4d --- /dev/null +++ b/script/c511000576.lua @@ -0,0 +1,18 @@ +--Trap Sluzer +function c511000576.initial_effect(c) + --immune + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCondition(c511000576.econ) + e2:SetValue(c511000576.efilter) + c:RegisterEffect(e2) +end +function c511000576.econ(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c511000576.efilter(e,te) + return te:IsActiveType(TYPE_TRAP) and te:IsActiveType(TYPE_CONTINUOUS) +end diff --git a/script/c511000577.lua b/script/c511000577.lua new file mode 100644 index 00000000..47962d6a --- /dev/null +++ b/script/c511000577.lua @@ -0,0 +1,32 @@ +--Blizzard Jet +function c511000577.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000577.target) + e1:SetOperation(c511000577.activate) + c:RegisterEffect(e1) +end +function c511000577.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511000577.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000577.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000577.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000577.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000577.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000578.lua b/script/c511000578.lua new file mode 100644 index 00000000..b05f53a6 --- /dev/null +++ b/script/c511000578.lua @@ -0,0 +1,85 @@ +--Necro Shot +function c511000578.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(c511000578.target) + e1:SetOperation(c511000578.operation) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000578,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000578.rmtg) + e2:SetOperation(c511000578.rmop) + e2:SetLabel(0) + 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(c511000578.eqlimit) + c:RegisterEffect(e3) +end +function c511000578.eqlimit(e,c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_WARRIOR) +end +function c511000578.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_WARRIOR) +end +function c511000578.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000578.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000578.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000578.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000578.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + end +end +function c511000578.rmfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c511000578.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511000578.rmfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000578.rmfilter,tp,0,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511000578.rmfilter,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + local ct=e:GetLabel() + e:SetLabel(ct+1) +end +function c511000578.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c511000578.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end + if e:GetLabel()>=3 then + Duel.Destroy(e:GetHandler(),REASON_RULE) + if Duel.IsExistingMatchingCard(c511000578.tgfilter,tp,LOCATION_DECK,0,1,nil) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000578.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end + else + local g=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleDeck(tp) + end + end +end diff --git a/script/c511000579.lua b/script/c511000579.lua new file mode 100644 index 00000000..a719a363 --- /dev/null +++ b/script/c511000579.lua @@ -0,0 +1,45 @@ +--Aracno-Cannibalism +function c511000579.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000579.cost) + e1:SetTarget(c511000579.target) + e1:SetOperation(c511000579.activate) + c:RegisterEffect(e1) +end +function c511000579.cfilter(c,tp) + return c:IsFaceup() and c:GetLevel()>0 and Duel.IsExistingMatchingCard(c511000579.filter,tp,LOCATION_MZONE,0,1,c) +end +function c511000579.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511000579.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511000579.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c511000579.cfilter,1,nil,tp) end + local rg=Duel.SelectReleaseGroup(tp,c511000579.cfilter,1,1,nil,tp) + local lv=rg:GetFirst():GetLevel() + Duel.Release(rg,REASON_COST) + Duel.SetTargetParam(lv) +end +function c511000579.activate(e,tp,eg,ep,ev,re,r,rp) + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local g=Duel.GetMatchingGroup(c511000579.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511000580.lua b/script/c511000580.lua new file mode 100644 index 00000000..4e7f6446 --- /dev/null +++ b/script/c511000580.lua @@ -0,0 +1,52 @@ +--Revenge Prison +function c511000580.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000580.cost) + e1:SetTarget(c511000580.target) + e1:SetOperation(c511000580.activate) + c:RegisterEffect(e1) +end +function c511000580.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000580.filter(c,e,tp) + return c:IsReason(REASON_DESTROY) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(c511000580.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetRank()) +end +function c511000580.filter2(c,e,tp,rk) + return c:GetRank()==rk+1 and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511000580.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000580.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000580.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000580.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000580.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c511000580.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetRank()) + local tc2=g2:GetFirst() + if tc2 then + Duel.Overlay(tc2,tc) + Duel.SpecialSummon(tc2,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + tc2:CompleteProcedure() + end + end +end diff --git a/script/c511000581.lua b/script/c511000581.lua new file mode 100644 index 00000000..bf55c642 --- /dev/null +++ b/script/c511000581.lua @@ -0,0 +1,32 @@ +--Despair Struggle +function c511000581.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000581.condition) + e1:SetTarget(c511000581.target) + e1:SetOperation(c511000581.operation) + c:RegisterEffect(e1) +end +function c511000581.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)<=1 +end +function c511000581.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,0) +end +function c511000581.operation(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000581.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + Duel.SetLP(tp,100,REASON_EFFECT) + local ct=math.floor(Duel.GetBattleDamage(tp)/1000) + Duel.Draw(tp,ct,REASON_EFFECT) +end +function c511000581.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511000582.lua b/script/c511000582.lua new file mode 100644 index 00000000..057e6dfa --- /dev/null +++ b/script/c511000582.lua @@ -0,0 +1,33 @@ +--Spreading Spider Spawn +function c511000582.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000582.condition) + e1:SetTarget(c511000582.tg) + e1:SetOperation(c511000582.op) + c:RegisterEffect(e1) +end +function c511000582.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) +end +function c511000582.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000582.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000582.filter(c,e,tp) + return c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000582.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000582.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000582.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.SelectMatchingCard(tp,c511000582.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000583.lua b/script/c511000583.lua new file mode 100644 index 00000000..b3644f86 --- /dev/null +++ b/script/c511000583.lua @@ -0,0 +1,53 @@ +--Trap Request +function c511000583.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000583,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511000583.condition) + e2:SetOperation(c511000583.operation) + c:RegisterEffect(e2) +end +function c511000583.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511000583.filter(c) + return c:IsType(TYPE_TRAP) and c:IsSSetable() +end +function c511000583.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(1-tp,LOCATION_SZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(c511000583.filter,tp,0,LOCATION_DECK,nil) + Duel.ConfirmCards(tp,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local g=sg:Select(tp,1,1,nil) + local tc=g:GetFirst() + if g:GetCount()>0 then + Duel.SSet(1-tp,tc) + Duel.ConfirmCards(tp,g) + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511000583.damop) + e2:SetReset(RESET_EVENT+0x47e0000) + tc:RegisterEffect(e2,true) + end +end +function c511000583.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,1000,REASON_EFFECT) +end diff --git a/script/c511000584.lua b/script/c511000584.lua new file mode 100644 index 00000000..e735843d --- /dev/null +++ b/script/c511000584.lua @@ -0,0 +1,31 @@ +--Whiteout +function c511000584.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) + --negate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_NEGATE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000584.discon) + e2:SetOperation(c511000584.disop) + c:RegisterEffect(e2) +end +function c511000584.filter(c,tp) + return c:IsLocation(LOCATION_ONFIELD+LOCATION_HAND+LOCATION_GRAVE) and c:IsControler(1-tp) +end +function c511000584.discon(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + if not re:GetHandler():IsLocation(LOCATION_MZONE) or re:GetHandler():IsControler(tp) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsExists(c511000584.filter,1,nil,tp) +end +function c511000584.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) +end diff --git a/script/c511000585.lua b/script/c511000585.lua new file mode 100644 index 00000000..7d18c054 --- /dev/null +++ b/script/c511000585.lua @@ -0,0 +1,83 @@ +--Level Jar +function c511000585.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c511000585.operation) + c:RegisterEffect(e1) +end +function c511000585.filter(c) + return not c:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsAbleToDeck() +end +function c511000585.operation(e,tp,eg,ep,ev,re,r,rp) + local rg1=Duel.GetMatchingGroup(c511000585.filter,tp,LOCATION_MZONE,0,nil) + Duel.SendtoDeck(rg1,nil,2,REASON_EFFECT) + rg1=rg1:Filter(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + local rg2=Duel.GetMatchingGroup(c511000585.filter,tp,0,LOCATION_MZONE,nil) + Duel.SendtoDeck(rg2,nil,2,REASON_EFFECT) + rg2=rg2:Filter(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + Duel.BreakEffect() + if rg1:GetCount()>0 then + Duel.ShuffleDeck(tp) + end + if rg2:GetCount()>0 then + Duel.ShuffleDeck(1-tp) + end + local sum1=0 + local sum2=0 + local tc1=rg1:GetFirst() + while tc1 do + local lv=tc1:GetLevel() + sum1=sum1+lv + tc1=rg1:GetNext() + end + local tc2=rg2:GetFirst() + while tc2 do + local lv=tc2:GetLevel() + sum2=sum2+lv + tc2=rg2:GetNext() + end + local d1=Duel.GetDecktopGroup(tp,sum1) + local d2=Duel.GetDecktopGroup(1-tp,sum2) + Duel.Draw(tp,sum1,REASON_EFFECT) + Duel.Draw(1-tp,sum2,REASON_EFFECT) + Duel.BreakEffect() + Duel.ConfirmCards(1-tp,d1) + Duel.ConfirmCards(tp,d2) + tc1=rg1:GetFirst() + tc2=rg2:GetFirst() + local check1=false + local check2=false + while tc1 and check1==false do + local tcd1=d1:GetFirst() + while tcd1 and check1==false do + if tc1==tcd1 then + check1=true + end + tcd1=d1:GetNext() + end + tc1=rg1:GetNext() + end + while tc2 and check2==false do + local tcd2=d2:GetFirst() + while tcd2 and check2==false do + if tc2==tcd2 then + check2=true + end + tcd2=d2:GetNext() + end + tc2=rg2:GetNext() + end + Duel.BreakEffect() + if check1==false then + Duel.SendtoGrave(d1,REASON_EFFECT+REASON_DISCARD) + end + Duel.BreakEffect() + if check2==false then + Duel.SendtoGrave(d2,REASON_EFFECT+REASON_DISCARD) + end + Duel.BreakEffect() + Duel.ShuffleHand(tp) + Duel.ShuffleHand(1-tp) +end diff --git a/script/c511000586.lua b/script/c511000586.lua new file mode 100644 index 00000000..bab4daea --- /dev/null +++ b/script/c511000586.lua @@ -0,0 +1,4 @@ +--Ritual of the Sibylla +function c511000586.initial_effect(c) + aux.AddRitualProcGreater(c,aux.FilterBoolFunction(Card.IsCode,511000587)) +end diff --git a/script/c511000587.lua b/script/c511000587.lua new file mode 100644 index 00000000..172169f7 --- /dev/null +++ b/script/c511000587.lua @@ -0,0 +1,67 @@ +--Tarotray the Sibylla +function c511000587.initial_effect(c) + c:EnableReviveLimit() + --turn set + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000587,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000587.cost) + e1:SetTarget(c511000587.target) + e1:SetOperation(c511000587.operation) + c:RegisterEffect(e1) + --flip face-up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000587,1)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511000587.con) + e2:SetTarget(c511000587.tg) + e2:SetOperation(c511000587.op) + c:RegisterEffect(e2) +end +function c511000587.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1,true) +end +function c511000587.filter(c) + return c:IsFaceup() and c:IsCanTurnSet() and c:IsType(TYPE_FLIP) +end +function c511000587.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000587.filter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(c511000587.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511000587.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000587.filter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) + end +end +function c511000587.con(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000587.filter2(c) + return c:IsFacedown() and c:IsDefensePos() +end +function c511000587.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000587.filter2,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(c511000587.filter2,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511000587.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000587.filter2,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511000589.lua b/script/c511000589.lua new file mode 100644 index 00000000..cd2fb32d --- /dev/null +++ b/script/c511000589.lua @@ -0,0 +1,40 @@ +--Coingnoma the Sibyl +function c511000589.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000589,0)) + e1:SetCategory(CATEGORY_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c511000589.target) + e1:SetOperation(c511000589.operation) + c:RegisterEffect(e1) +end +function c511000589.filter(c) + if c:GetCode()==511000589 then + return c:GetLevel()<=4 and c:IsType(TYPE_FLIP) and not c:IsLocation(LOCATION_GRAVE) + else + return c:GetLevel()<=4 and c:IsType(TYPE_FLIP) + end +end +function c511000589.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000589.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c511000589.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c511000589.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEDOWN_DEFENSE,true) + Duel.RaiseEvent(tc,EVENT_MSET,e,REASON_EFFECT,tp,tp,0) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511000590.lua b/script/c511000590.lua new file mode 100644 index 00000000..c1c24c86 --- /dev/null +++ b/script/c511000590.lua @@ -0,0 +1,127 @@ +--Shinato's Ark (DM) +--Scripted by edo9300 +function c511000590.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e1:SetCondition(c511000590.spcon) + e1:SetTarget(c511000590.sptg) + e1:SetOperation(c511000590.spop) + c:RegisterEffect(e1) + --lp + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51100567,13)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e2:SetCountLimit(1,511000590) + e2:SetCondition(c511000590.lpcon) + e2:SetCost(c511000590.lpcost) + e2:SetTarget(c511000590.lptg) + e2:SetOperation(c511000590.lpop) + c:RegisterEffect(e2) + --Spsummon Shinato + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c511000590.spcon2) + e3:SetTarget(c511000590.sptg2) + e3:SetOperation(c511000590.spop2) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCondition(c511000590.spcon3) + e4:SetLabel(1) + c:RegisterEffect(e4) + if not c511000590.global_check then + c511000590.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000590.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000590.dm=true +c511000590.dm_replace_original=true +function c511000590.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000590.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()==1-e:GetHandler():GetControler() and e:GetHandler():GetFlagEffect(300)>0 +end +function c511000590.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000590.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) +end +function c511000590.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local tp=e:GetHandler():GetControler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000590.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,nil,tp,LOCATION_GRAVE) +end +function c511000590.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 then return end + local ct=Duel.GetMatchingGroupCount(c511000590.filter,c:GetControler(),0,LOCATION_MZONE,nil) + if ct>5 then ct=5 end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ct>ft then ct=ft end + if Duel.IsPlayerAffectedByEffect(tp,59822133) and ct>2 then ct=2 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000590.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,ct,nil,e,tp) + if Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then + Duel.ChangeAttackTarget(g:Select(tp,1,1,nil):GetFirst()) + end +end +function c511000590.lpcon(e,tp,eg,ep,ev,re,r,rp,chk) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c511000590.lpcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,TYPE_MONSTER) end + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,TYPE_MONSTER) + local ct=Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + e:SetLabel(ct) +end +function c511000590.lptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(e:GetLabel()*500) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,e:GetLabel()*500) +end +function c511000590.lpop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c511000590.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)==0 +end +function c511000590.spfilter2(c,e,tp) + return c:GetCode()==86327225 and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000590.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000590.spfilter2,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,nil,0,0) +end +function c511000590.spop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000590.spfilter2,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + if e:GetLabel()>0 then + g:GetFirst():RegisterFlagEffect(300,0,0,1) + end +end +function c511000590.spcon3(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end \ No newline at end of file diff --git a/script/c511000591.lua b/script/c511000591.lua new file mode 100644 index 00000000..69a09cc1 --- /dev/null +++ b/script/c511000591.lua @@ -0,0 +1,119 @@ +--Shinato, King of a Higher Plane (DM) +--Scripted by edo9300 +function c511000591.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --gain on damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e2:SetCode(EVENT_DAMAGE) + e2:SetCondition(c511000591.effcon) + e2:SetOperation(c511000591.revop) + c:RegisterEffect(e2) + --halve + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c511000591.hvcon) + e3:SetOperation(c511000591.hvop) + c:RegisterEffect(e3) + --Return + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c511000591.rtg) + e4:SetOperation(c511000591.rop) + c:RegisterEffect(e4) + --splimit + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetRange(LOCATION_PZONE) + e7:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c511000591.splimit) + c:RegisterEffect(e7) + --Immune + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_IMMUNE_EFFECT) + e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e8:SetRange(LOCATION_PZONE) + e8:SetValue(1) + c:RegisterEffect(e8) + if not c511000591.global_check then + c511000591.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c511000591.chk) + Duel.RegisterEffect(ge1,0) + end +end +c511000591.dm=true +c511000591.dm_no_spsummon=true +c511000591.dm_no_activable=true +c511000591.dm_replace_original=true +function c511000591.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c511000591.effcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and e:GetHandler():GetFlagEffect(300)>0 +end +function c511000591.revop(e,tp,eg,ep,ev,re,r,rp) + Duel.Recover(tp,ev,REASON_EFFECT) +end +function c511000591.hvcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsFaceup() and e:GetHandler():IsRelateToBattle() and e:GetHandler():GetFlagEffect(300)>0 +end +function c511000591.hvop(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(1-tp,math.ceil(Duel.GetLP(1-tp)/2)) +end +function c511000591.cfil(c,seq) + local seq1=c:GetSequence() + return seq==seq +end +function c511000591.rtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc1=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,6) + local tc2=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,7) + --Activate + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetReset(RESET_CHAIN) + e:GetHandler():RegisterEffect(e2) + if chk==0 then return e:GetHandler():CheckActivateEffect(false,false,false)~=nil and (not tc1 or not tc2) + and not e:GetHandler():IsStatus(STATUS_CHAINING) and e:GetHandler():GetFlagEffect(300)>0 end +end +function c511000591.rop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local tpe=c:GetType() + local te=c:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + Duel.Hint(HINT_CARD,0,c:GetOriginalCode()) + c:CreateEffectRelation(te) + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + c:ReleaseEffectRelation(te) +end +function c511000591.splimit(e,c,tp,sumtp,sumpos) + return bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end \ No newline at end of file diff --git a/script/c511000592.lua b/script/c511000592.lua new file mode 100644 index 00000000..1d1e97dd --- /dev/null +++ b/script/c511000592.lua @@ -0,0 +1,32 @@ +--Petalelf the Sibyl +function c511000592.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000592,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c511000592.target) + e1:SetOperation(c511000592.operation) + c:RegisterEffect(e1) +end +function c511000592.filter(c) + return c:IsFaceup() and c:IsAttackPos() +end +function c511000592.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000592.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000592.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511000592.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000592.filter,tp,0,LOCATION_MZONE,nil) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e4:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) +end diff --git a/script/c511000593.lua b/script/c511000593.lua new file mode 100644 index 00000000..7ce3fbf0 --- /dev/null +++ b/script/c511000593.lua @@ -0,0 +1,33 @@ +--White Knight Gardna +function c511000593.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000593,0)) + e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000593.con) + e1:SetCost(c511000593.cost) + e1:SetOperation(c511000593.op) + c:RegisterEffect(e1) +end +function c511000593.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return Duel.GetBattleDamage(tp)>0 and (tc:IsSetCard(0x1202) or (at and at:IsSetCard(0x1202))) +end +function c511000593.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000593.op(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000593.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511000593.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511000594.lua b/script/c511000594.lua new file mode 100644 index 00000000..7a7f7449 --- /dev/null +++ b/script/c511000594.lua @@ -0,0 +1,8 @@ +--White Knight Lancer +function c511000594.initial_effect(c) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) +end diff --git a/script/c511000595.lua b/script/c511000595.lua new file mode 100644 index 00000000..ef11a8ed --- /dev/null +++ b/script/c511000595.lua @@ -0,0 +1,84 @@ +--White Knight Lord +function c511000595.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(1) + c:RegisterEffect(e1) + --damage LP + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetOperation(c511000595.retop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e4:SetValue(1) + c:RegisterEffect(e4) + --damage + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000595,1)) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EVENT_BATTLE_DESTROYING) + e5:SetCondition(c511000595.damcon) + e5:SetTarget(c511000595.damtg) + e5:SetOperation(c511000595.damop) + c:RegisterEffect(e5) + --special summon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511000595,2)) + e6:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_DESTROY) + e6:SetCondition(c511000595.damcon2) + e6:SetTarget(c511000595.damtg2) + e6:SetOperation(c511000595.damop2) + c:RegisterEffect(e6) +end +function c511000595.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetTurnPlayer()==tp and c:GetAttackedCount()==0 then + Duel.Damage(tp,800,REASON_EFFECT) + end +end +function c511000595.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c511000595.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511000595.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000595.damcon2(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and bit.band(r,0x41)==0x41 +end +function c511000595.damtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511000595.damop2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000596.lua b/script/c511000596.lua new file mode 100644 index 00000000..75639313 --- /dev/null +++ b/script/c511000596.lua @@ -0,0 +1,12 @@ +--White Knight Swordsman +function c511000596.initial_effect(c) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_GRAVE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1202)) + e3:SetValue(300) + c:RegisterEffect(e3) +end diff --git a/script/c511000597.lua b/script/c511000597.lua new file mode 100644 index 00000000..cae8a1ca --- /dev/null +++ b/script/c511000597.lua @@ -0,0 +1,51 @@ +--Sealed Gate +function c511000597.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(511000597,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511000597.spcon) + e1:SetCost(c511000597.spcost) + e1:SetTarget(c511000597.sptg) + e1:SetOperation(c511000597.spop) + c:RegisterEffect(e1) +end +function c511000597.cfilter(c,code) + return c:IsCode(code) and c:IsAbleToRemoveAsCost() +end +function c511000597.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000597.cfilter,tp,LOCATION_GRAVE,0,1,nil,511000596) + and Duel.IsExistingMatchingCard(c511000597.cfilter,tp,LOCATION_GRAVE,0,1,nil,511000594) + and Duel.IsExistingMatchingCard(c511000597.cfilter,tp,LOCATION_GRAVE,0,1,nil,511000593) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c511000597.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,511000596) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c511000597.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,511000594) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g3=Duel.SelectMatchingCard(tp,c511000597.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,511000593) + g1:Merge(g2) + g1:Merge(g3) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c511000597.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000597.filter(c,e,tp) + return c:IsCode(511000595) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000597.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000597.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000597.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000597.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c511000598.lua b/script/c511000598.lua new file mode 100644 index 00000000..0af04651 --- /dev/null +++ b/script/c511000598.lua @@ -0,0 +1,98 @@ +--Fallout +function c511000598.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511000598.condition) + e1:SetTarget(c511000598.target) + e1:SetOperation(c511000598.activate) + c:RegisterEffect(e1) +end +function c511000598.cfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) +end +function c511000598.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000598.cfilter,nil,tp) + if g:GetCount()~=1 then return end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return true +end +function c511000598.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return true end + tc:CreateEffectRelation(e) +end +function c511000598.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if 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) + e1:SetValue(4000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetCode(EFFECT_SKIP_SP) + e3:SetCondition(c511000598.skipcon) + e3:SetLabel(Duel.GetTurnCount()) + e3:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,6) + Duel.RegisterEffect(e3,tp) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,0) + e4:SetCode(EFFECT_SKIP_M1) + e4:SetCondition(c511000598.skipcon) + e4:SetLabel(Duel.GetTurnCount()) + e4:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,6) + Duel.RegisterEffect(e4,tp) + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,0) + e5:SetCode(EFFECT_SKIP_DP) + e5:SetCondition(c511000598.skipcon) + e5:SetLabel(Duel.GetTurnCount()) + e5:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,6) + Duel.RegisterEffect(e5,tp) + local e6=Effect.CreateEffect(e:GetHandler()) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetTargetRange(1,0) + e6:SetCode(EFFECT_SKIP_M2) + e6:SetCondition(c511000598.skipcon) + e6:SetLabel(Duel.GetTurnCount()) + e6:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,6) + Duel.RegisterEffect(e6,tp) + local e7=Effect.CreateEffect(e:GetHandler()) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCountLimit(1) + e7:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,6) + e7:SetOperation(c511000598.disop) + e7:SetLabel(0) + Duel.RegisterEffect(e7,tp) + end +end +function c511000598.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end +function c511000598.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + local c=e:GetHandler() + local ct=e:GetLabel() + if ct==0 then e:SetLabel(1) return end + if ct>0 then + ct=ct+1 + c:SetTurnCounter(ct-1) + e:SetLabel(ct) + end +end diff --git a/script/c511000599.lua b/script/c511000599.lua new file mode 100644 index 00000000..af772283 --- /dev/null +++ b/script/c511000599.lua @@ -0,0 +1,42 @@ +--Stardust Mirage +function c511000599.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c511000599.condition) + e1:SetTarget(c511000599.target) + e1:SetOperation(c511000599.activate) + c:RegisterEffect(e1) +end +function c511000599.cfilter(c) + return c:IsFaceup() and c:IsCode(44508094) +end +function c511000599.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000599.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000599.filter(c,tp,turn) + return c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:GetTurnID()==turn +end +function c511000599.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000599.filter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_EXTRA,0,1,nil,tp,Duel.GetTurnCount()) end +end +function c511000599.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.GetMatchingGroup(c511000599.filter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_EXTRA,0,nil,tp,Duel.GetTurnCount()) + local tc=g:GetFirst() + while tc do + if tc:IsPreviousPosition(POS_FACEUP_ATTACK) then + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEUP_ATTACK,true) + elseif tc:IsPreviousPosition(POS_FACEDOWN_ATTACK) then + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEDOWN_ATTACK,true) + elseif tc:IsPreviousPosition(POS_FACEUP_DEFENSE) then + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEUP_DEFENSE,true) + else + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEDOWN_DEFENSE,true) + end + tc=g:GetNext() + end +end diff --git a/script/c511000600.lua b/script/c511000600.lua new file mode 100644 index 00000000..44206ed7 --- /dev/null +++ b/script/c511000600.lua @@ -0,0 +1,68 @@ +--Intervention of Fate +function c511000600.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000600,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511000600.con) + e1:SetCost(c511000600.cost) + e1:SetTarget(c511000600.tg) + e1:SetOperation(c511000600.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000600.con(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511000600.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000600.filter(c) + return c:GetType()==TYPE_SPELL and c:CheckActivateEffect(false,false,false)~=nil +end +function c511000600.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.IsExistingMatchingCard(c511000600.filter,tp,LOCATION_HAND,0,1,nil) end +end +function c511000600.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.SelectMatchingCard(tp,c511000600.filter,tp,LOCATION_HAND,0,1,1,nil):GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + tc:CancelToGrave(false) + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end +end diff --git a/script/c511000601.lua b/script/c511000601.lua new file mode 100644 index 00000000..8759c34e --- /dev/null +++ b/script/c511000601.lua @@ -0,0 +1,44 @@ +--Arcanatic Doomscythe +function c511000601.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000601.target) + e1:SetOperation(c511000601.activate) + c:RegisterEffect(e1) +end +function c511000601.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() and c:IsSetCard(0x5) +end +function c511000601.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000601.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c511000601.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000601.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000601.damcon) + e1:SetOperation(c511000601.damop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c511000601.cfil(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp +end +function c511000601.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000601.cfil,1,nil,1-tp) +end +function c511000601.damop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000601.cfil,nil,1-tp) + local tc=g:GetFirst() + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) +end diff --git a/script/c511000602.lua b/script/c511000602.lua new file mode 100644 index 00000000..33189df9 --- /dev/null +++ b/script/c511000602.lua @@ -0,0 +1,57 @@ +--Divination of Fate +function c511000602.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000602.condition) + e1:SetTarget(c511000602.target) + e1:SetOperation(c511000602.activate) + c:RegisterEffect(e1) + if not c511000602.global_check then + c511000602.global_check=true + c511000602[0]=false + c511000602[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE_STEP_END) + ge1:SetOperation(c511000602.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c511000602.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511000602.checkop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) then + c511000602[0]=true + c511000602[1]=true + end +end +function c511000602.clear(e,tp,eg,ep,ev,re,r,rp) + c511000602[0]=false + c511000602[1]=false +end +function c511000602.condition(e,tp,eg,ep,ev,re,r,rp) + return c511000602[tp] +end +function c511000602.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000602.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000602.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000602.activate(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,c511000602.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 diff --git a/script/c511000603.lua b/script/c511000603.lua new file mode 100644 index 00000000..2463c8b0 --- /dev/null +++ b/script/c511000603.lua @@ -0,0 +1,29 @@ +--Defense Paralysis +function c511000603.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHANGE_POS) + e1:SetCondition(c511000603.condition) + c:RegisterEffect(e1) + --Pos Change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_POSITION) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsFaceup)) + e2:SetValue(POS_FACEUP_ATTACK) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsFacedown)) + e3:SetValue(POS_FACEDOWN_ATTACK) + c:RegisterEffect(e3) +end +function c511000603.cfilter(c,tp) + return c:IsControler(tp) and c:IsPreviousPosition(POS_ATTACK) and c:IsPosition(POS_DEFENSE) +end +function c511000603.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000603.cfilter,1,nil,1-tp) +end diff --git a/script/c511000604.lua b/script/c511000604.lua new file mode 100644 index 00000000..c0e0930e --- /dev/null +++ b/script/c511000604.lua @@ -0,0 +1,69 @@ +--Enemy Controller +function c511000604.initial_effect(c) +--Activate +local e1=Effect.CreateEffect(c) +e1:SetCategory(CATEGORY_POSITION) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetProperty(EFFECT_FLAG_CARD_TARGET) +e1:SetCode(EVENT_FREE_CHAIN) +e1:SetHintTiming(TIMING_BATTLE_PHASE+TIMING_STANDBY_PHASE,TIMING_BATTLE_PHASE) +e1:SetCost(c511000604.cost) +e1:SetTarget(c511000604.target) +e1:SetOperation(c511000604.activate) +c:RegisterEffect(e1) +end +function c511000604.cost(e,tp,eg,ep,ev,re,r,rp,chk) +e:SetLabel(1) +if chk==0 then return Duel.CheckLPCost(tp,1000) +else Duel.PayLPCost(tp,1000) end +return true +end +function c511000604.filter(c,e) +return c:IsFaceup() and c:IsCanBeEffectTarget(e) +end +function c511000604.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end +if chk==0 then +e:SetLabel(0) +return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) +end +local g=Duel.GetMatchingGroup(c511000604.filter,tp,0,LOCATION_MZONE,nil,e) +local cg=nil +if e:GetLabel()==1 then cg=g:Filter(Card.IsAbleToChangeControler,nil) +else cg=g:Filter(Card.IsControlerCanBeChanged,nil) end +local sel=0 +Duel.Hint(HINT_SELECTMSG,tp,550) +if cg:GetCount()==0 then +sel=Duel.SelectOption(tp,aux.Stringid(90817375,0)) +elseif e:GetLabel()==1 and not Duel.CheckReleaseGroup(1-tp,nil,1,nil) then +sel=Duel.SelectOption(tp,aux.Stringid(90817375,0)) +else +sel=Duel.SelectOption(tp,aux.Stringid(90817375,0),aux.Stringid(90817375,1)) +if sel==1 and e:GetLabel()==1 then +end +end +if sel==0 then +Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) +local sg=g:Select(tp,1,1,nil) +Duel.SetTargetCard(sg) +Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +else +Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) +local sg=cg:Select(tp,1,1,nil) +Duel.SetTargetCard(sg) +Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +e:SetLabel(sel) +end +function c511000604.activate(e,tp,eg,ep,ev,re,r,rp) +local tc=Duel.GetFirstTarget() +if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then +if e:GetLabel()==0 then +Duel.Destroy(tc,REASON_EFFECT) +else +if not Duel.GetControl(tc,tp,PHASE_END,1) and not tc:IsImmuneToEffect(e) and tc:IsAbleToChangeControler() then +Duel.Destroy(tc,REASON_EFFECT) +end +end +end +end \ No newline at end of file diff --git a/script/c511000605.lua b/script/c511000605.lua new file mode 100644 index 00000000..6200e7e8 --- /dev/null +++ b/script/c511000605.lua @@ -0,0 +1,67 @@ +--Dormant Volcano +function c511000605.initial_effect(c) + --Damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511000605.drcon) + e1:SetTarget(c511000605.damtg) + e1:SetOperation(c511000605.damop) + c:RegisterEffect(e1) +end +function c511000605.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsLocation(LOCATION_GRAVE) +end +function c511000605.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511000605.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetOperation(c511000605.thop) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY then + e1:SetCondition(c511000605.skipcon) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + end + Duel.RegisterEffect(e1,tp) +end +function c511000605.con(e) + return Duel.GetTurnCount()~=e:GetLabel() +end +function c511000605.filter(c) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c511000605.thop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + local g1=nil + local tc1=nil + local g2=nil + local tc2=nil + if Duel.IsExistingMatchingCard(c511000605.filter,tp,LOCATION_DECK,0,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(511000605,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + g1=Duel.SelectMatchingCard(tp,c511000605.filter,tp,LOCATION_DECK,0,1,1,nil) + tc1=g1:GetFirst() + end + if Duel.IsExistingMatchingCard(c511000605.filter,tp,0,LOCATION_DECK,1,nil) and Duel.SelectYesNo(1-tp,aux.Stringid(511000605,0)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + g2=Duel.SelectMatchingCard(1-tp,c511000605.filter,tp,0,LOCATION_DECK,1,1,nil) + tc2=g2:GetFirst() + end + if g1 then Duel.SendtoHand(g1,nil,REASON_EFFECT) end + if g2 then Duel.SendtoHand(g2,nil,REASON_EFFECT) end + if tc1 then Duel.ConfirmCards(1-tp,tc1) end + if tc2 then Duel.ConfirmCards(tp,tc2) end +end diff --git a/script/c511000606.lua b/script/c511000606.lua new file mode 100644 index 00000000..d662e142 --- /dev/null +++ b/script/c511000606.lua @@ -0,0 +1,31 @@ +--Dowsing Point +function c511000606.initial_effect(c) + --Add to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511000606.thcon) + e1:SetTarget(c511000606.thtg) + e1:SetOperation(c511000606.thop) + c:RegisterEffect(e1) +end +function c511000606.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsLocation(LOCATION_GRAVE) +end +function c511000606.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000606.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511000606.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000606.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000607.lua b/script/c511000607.lua new file mode 100644 index 00000000..c4d561aa --- /dev/null +++ b/script/c511000607.lua @@ -0,0 +1,73 @@ +--Blue Moon +function c511000607.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOKEN+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000607.condition) + e1:SetTarget(c511000607.target) + e1:SetOperation(c511000607.activate) + c:RegisterEffect(e1) +end +function c511000607.condition(e,tp,eg,ep,ev,re,r,rp) + return false +end +function c511000607.filter(c) + return c:IsFaceup() and c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511000607.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000608,0,0x4011,0,800,2,RACE_FAIRY,ATTRIBUTE_LIGHT) end + if Duel.IsExistingMatchingCard(c511000607.filter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) + end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000607.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=nil + local g2=nil + if Duel.IsExistingMatchingCard(c511000607.filter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + g1=Duel.SelectMatchingCard(tp,c511000607.filter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + end + if Duel.IsExistingTarget(c511000607.filter,tp,0,LOCATION_ONFIELD,1,nil) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + g2=Duel.SelectMatchingCard(tp,c511000607.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + end + if g1 and g2 then + g1:Merge(g2) + Duel.Destroy(g1,REASON_EFFECT) + elseif g1 and not g2 then + Duel.Destroy(g1,REASON_EFFECT) + elseif g2 and not g1 then + Duel.Destroy(g2,REASON_EFFECT) + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511000608,0,0x4011,0,800,2,RACE_FAIRY,ATTRIBUTE_LIGHT) then return end + local p=0 + for i=1,2 do + local token=Duel.CreateToken(tp,511000608) + if p==0 then + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + else + Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + p=1 + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511000609.lua b/script/c511000609.lua new file mode 100644 index 00000000..60749405 --- /dev/null +++ b/script/c511000609.lua @@ -0,0 +1,39 @@ +--Demiurge Ema +function c511000609.initial_effect(c) + --atk + 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:SetValue(c511000609.val) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000609,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetTarget(c511000609.tg) + e2:SetOperation(c511000609.op) + c:RegisterEffect(e2) +end +function c511000609.filter(c) + return c:IsFaceup() and c:IsCode(511000608) +end +function c511000609.val(e,c) + return Duel.GetMatchingGroupCount(c511000609.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*800 +end +function c511000609.desfilter(c) + return c:IsFaceup() and c:IsCode(511000608) and c:IsDestructable() +end +function c511000609.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dg=Duel.GetMatchingGroup(c511000609.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,dg:GetCount(),0,0) +end +function c511000609.op(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(c511000609.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(dg,REASON_EFFECT) +end diff --git a/script/c511000610.lua b/script/c511000610.lua new file mode 100644 index 00000000..7608726f --- /dev/null +++ b/script/c511000610.lua @@ -0,0 +1,126 @@ +--Shadow Moon +function c511000610.initial_effect(c) + --multi attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000610.cost) + e1:SetTarget(c511000610.target) + e1:SetOperation(c511000610.operation) + c:RegisterEffect(e1) + if not c511000610.global_check then + c511000610.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000610.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000610.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000610.cfilter1(c) + return c:GetLevel()>=5 and c:IsAbleToGraveAsCost() and Duel.IsExistingMatchingCard(c511000610.cfilter2,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,nil,c:GetAttribute()) +end +function c511000610.cfilter2(c,att1) + return c:GetLevel()>=5 and c:IsAbleToGraveAsCost() and c:GetAttribute()~=att1 + and Duel.IsExistingMatchingCard(c511000610.cfilter3,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,nil,att1,c:GetAttribute()) +end +function c511000610.cfilter3(c,att1,att2) + return c:GetLevel()>=5 and c:IsAbleToGraveAsCost() and c:GetAttribute()~=att1 and c:GetAttribute()~=att2 + and Duel.IsExistingMatchingCard(c511000610.cfilter4,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,nil,att1,att2,c:GetAttribute()) +end +function c511000610.cfilter4(c,att1,att2,att3) + return c:GetLevel()>=5 and c:IsAbleToGraveAsCost() and c:GetAttribute()~=att1 and c:GetAttribute()~=att2 and c:GetAttribute()~=att3 +end +function c511000610.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000610.cfilter1,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511000610.cfilter1,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,nil) + local at1=g1:GetFirst():GetAttribute() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511000610.cfilter2,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,nil,at1) + local at2=g2:GetFirst():GetAttribute() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g3=Duel.SelectMatchingCard(tp,c511000610.cfilter3,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,nil,at1,at2) + local at3=g3:GetFirst():GetAttribute() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g4=Duel.SelectMatchingCard(tp,c511000610.cfilter4,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,nil,at1,at2,at3) + g1:Merge(g2) + g1:Merge(g3) + g1:Merge(g4) + if g1:GetCount()~=4 then return end + Duel.SendtoGrave(g1,REASON_COST) +end +function c511000610.filter(c) + return c:IsCode(511000607) and c:CheckActivateEffect(true,true,false)~=nil +end +function c511000610.spfilter(c,e,tp) + return c:IsCode(511000609) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000610.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000610.filter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingMatchingCard(c511000610.spfilter,tp,0x11,0,1,nil,e,tp) end +end +function c511000610.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.SelectMatchingCard(tp,c511000610.filter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil):GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c511000610.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=sg:GetFirst() + if tc then + Duel.BreakEffect() + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000611.lua b/script/c511000611.lua new file mode 100644 index 00000000..0b2422a2 --- /dev/null +++ b/script/c511000611.lua @@ -0,0 +1,60 @@ +--Guidance to Ore +function c511000611.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(511000611,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c511000611.target) + e3:SetOperation(c511000611.operation) + c:RegisterEffect(e3) +end +function c511000611.cfilter(c,e,tp) + return c:IsRace(RACE_ROCK) and c:IsControler(tp) and c:IsReason(REASON_DESTROY) + and bit.band(c:GetPreviousRaceOnField(),RACE_ROCK)~=0 + and Duel.IsExistingMatchingCard(c511000611.filter,tp,LOCATION_DECK,0,1,nil,c:GetCode(),e,tp) +end +function c511000611.filter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000611.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and eg:IsExists(c511000611.cfilter,1,nil,e,tp) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000611.cfilter2(c,e,tp) + return c:IsRace(RACE_ROCK) and c:IsControler(tp) and c:IsRelateToEffect(e) + and Duel.IsExistingMatchingCard(c511000611.filter,tp,LOCATION_DECK,0,1,nil,c:GetCode(),e,tp) +end +function c511000611.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local sg=eg:Filter(c511000611.cfilter2,nil,e,tp) + if sg:GetCount()==1 then + local tc=sg:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000611.filter,tp,LOCATION_DECK,0,1,1,nil,tc:GetCode(),e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + else + local tc=sg:GetFirst() + if not tc then return end + local code=tc:GetCode() + tc=sg:GetNext() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000611.filter,tp,LOCATION_DECK,0,1,1,nil,code,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511000612.lua b/script/c511000612.lua new file mode 100644 index 00000000..f24b21a0 --- /dev/null +++ b/script/c511000612.lua @@ -0,0 +1,26 @@ +--Lightning Crash +function c511000612.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000612.target) + e1:SetOperation(c511000612.activate) + c:RegisterEffect(e1) +end +function c511000612.filter(c) + return c:IsRace(RACE_THUNDER) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511000612.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000612.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000612.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000612.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000613.lua b/script/c511000613.lua new file mode 100644 index 00000000..6875a290 --- /dev/null +++ b/script/c511000613.lua @@ -0,0 +1,29 @@ +--打ち出の小槌 (Anime) +function c511000613.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:SetTarget(c511000613.target) + e1:SetOperation(c511000613.activate) + c:RegisterEffect(e1) +end +function c511000613.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) +end +function c511000613.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(p,Card.IsAbleToDeck,p,LOCATION_HAND,0,0,63,nil) + c:CancelToGrave() + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(p) + Duel.BreakEffect() + Duel.Draw(p,g:GetCount()+1,REASON_EFFECT) +end diff --git a/script/c511000614.lua b/script/c511000614.lua new file mode 100644 index 00000000..3b0ae3cf --- /dev/null +++ b/script/c511000614.lua @@ -0,0 +1,130 @@ +--D-HERO Bloo-D (Anime) +function c511000614.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000614,0)) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511000614.spcon) + e2:SetOperation(c511000614.spop) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000614,1)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000614.eqcon) + e3:SetTarget(c511000614.eqtg) + e3:SetOperation(c511000614.eqop) + c:RegisterEffect(e3) + --disable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetCode(EFFECT_DISABLE) + e4:SetCondition(c511000614.condition) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511000614.condition) + e5:SetValue(c511000614.efilter) + c:RegisterEffect(e5) +end +function c511000614.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 + and Duel.CheckReleaseGroup(c:GetControler(),nil,3,nil) +end +function c511000614.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),nil,3,3,nil) + Duel.Release(g,REASON_COST) +end +function c511000614.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=e:GetLabelObject() + return ec==nil or ec:GetFlagEffect(511000614)==0 +end +function c511000614.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToChangeControler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511000614.eqlimit(e,c) + return e:GetOwner()==c +end +function c511000614.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack()/2 + if tc:IsFacedown() then atk=0 end + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + tc:RegisterFlagEffect(511000614,RESET_EVENT+0x1fe0000,0,0) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511000614.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + if tc:IsFaceup() then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000614.operation) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c511000614.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetDecktopGroup(e:GetHandlerPlayer(),1) + return g and g:GetFirst():GetCode()==100000270 and g:GetFirst():IsFaceup() +end +function c511000614.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=e:GetHandler():GetEquipTarget() + local code=c:GetOriginalCode() + if eq:IsFaceup() and eq:GetFlagEffect(code)==0 then + eq:CopyEffect(code,RESET_EVENT+0x1fe0000+EVENT_CHAINING,1) + eq:RegisterFlagEffect(code,RESET_EVENT+0x1fe0000+EVENT_CHAINING,0,1) + end +end +function c511000614.efilter(e,te) + return (te:IsActiveType(TYPE_SPELL) or te:IsActiveType(TYPE_TRAP)) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end diff --git a/script/c511000615.lua b/script/c511000615.lua new file mode 100644 index 00000000..48f9615c --- /dev/null +++ b/script/c511000615.lua @@ -0,0 +1,35 @@ +--Synchro Barrier Force +function c511000615.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511000615.condition) + e1:SetTarget(c511000615.target) + e1:SetOperation(c511000615.operation) + c:RegisterEffect(e1) +end +function c511000615.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc>0 +end +function c511000615.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + local dam=Duel.GetMatchingGroupCount(c511000615.filter,tp,LOCATION_MZONE,0,nil)*500 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511000615.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511000615.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511000615.filter,tp,LOCATION_MZONE,0,nil)*500 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511000616.lua b/script/c511000616.lua new file mode 100644 index 00000000..d14f1a0a --- /dev/null +++ b/script/c511000616.lua @@ -0,0 +1,45 @@ +--Lost Pride +function c511000616.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000616.cost) + e1:SetTarget(c511000616.target) + e1:SetOperation(c511000616.activate) + c:RegisterEffect(e1) +end +function c511000616.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGraveAsCost() +end +function c511000616.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000616.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + Duel.DiscardHand(tp,c511000616.cfilter,1,1,REASON_COST) +end +function c511000616.tgfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511000616.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511000616.tgfilter,tp,0,LOCATION_GRAVE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c511000616.activate(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.SelectMatchingCard(tp,c511000616.tgfilter,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SendtoHand(g,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + g:GetFirst():RegisterFlagEffect(511000616,nil,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_ACTIVATING) + e1:SetOperation(c511000616.damop) + e1:SetLabelObject(g:GetFirst()) + Duel.RegisterEffect(e1,tp) +end +function c511000616.damop(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp or re:GetHandler()~=e:GetLabelObject() then return end + if e:GetLabelObject():GetFlagEffect(511000616)~=0 then + Duel.Damage(tp,1000,REASON_EFFECT) + e:GetLabelObject():ResetFlagEffect(511000616) + end +end diff --git a/script/c511000617.lua b/script/c511000617.lua new file mode 100644 index 00000000..eb979010 --- /dev/null +++ b/script/c511000617.lua @@ -0,0 +1,81 @@ +--Dimension Voyage +function c511000617.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000617.tg) + e1:SetOperation(c511000617.op) + c:RegisterEffect(e1) +end +function c511000617.filter(c,e,tp) + return c:IsFaceup() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsType(TYPE_SYNCHRO) +end +function c511000617.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000617.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_REMOVED) +end +function c511000617.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft1<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft1=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000617.filter,tp,LOCATION_REMOVED,0,ft1,ft1,nil,e,tp) + if g:GetCount()>0 then + local fid=e:GetHandler():GetFieldID() + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + if tc:IsType(TYPE_EFFECT) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + end + tc:RegisterFlagEffect(511000617,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + g:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c511000617.rmcon) + e1:SetOperation(c511000617.rmop) + Duel.RegisterEffect(e1,tp) + end +end +function c511000617.rmfilter(c,fid) + return c:GetFlagEffectLabel(511000617)==fid +end +function c511000617.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511000617.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511000617.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511000617.rmfilter,nil,e:GetLabel()) + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511000618.lua b/script/c511000618.lua new file mode 100644 index 00000000..189690f2 --- /dev/null +++ b/script/c511000618.lua @@ -0,0 +1,31 @@ +--Insightful Cards of Reversal +function c511000618.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCode(EVENT_TO_HAND) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000618.condition) + e1:SetTarget(c511000618.target) + e1:SetOperation(c511000618.activate) + c:RegisterEffect(e1) +end +function c511000618.cfilter(c,tp) + return c:IsControler(tp) and c:IsPreviousLocation(LOCATION_DECK) and Duel.GetCurrentPhase()~=PHASE_DRAW +end +function c511000618.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000618.cfilter,1,nil,1-tp) +end +function c511000618.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + if chk==0 then return Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511000618.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Draw(p,ct,REASON_EFFECT) +end diff --git a/script/c511000619.lua b/script/c511000619.lua new file mode 100644 index 00000000..c489f28f --- /dev/null +++ b/script/c511000619.lua @@ -0,0 +1,62 @@ +--Revenge Return +function c511000619.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000619.condition) + e1:SetTarget(c511000619.target) + e1:SetOperation(c511000619.operation) + c:RegisterEffect(e1) + --effect damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c511000619.spcost) + e2:SetTarget(c511000619.sptg) + e2:SetOperation(c511000619.spop) + c:RegisterEffect(e2) +end +function c511000619.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp +end +function c511000619.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000619.cfilter,1,nil,tp) +end +function c511000619.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000619.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c511000619.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end +function c511000619.filter(c,e,tp,tid) + return bit.band(c:GetReason(),0x41)==0x41 and c:GetTurnID()==tid and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000619.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000619.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000619.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000619.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,tid) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000619.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000620.lua b/script/c511000620.lua new file mode 100644 index 00000000..d92c0111 --- /dev/null +++ b/script/c511000620.lua @@ -0,0 +1,121 @@ +--Hardship +function c511000620.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(c511000620.target) + e1:SetOperation(c511000620.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) + --no damage + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(511000563,0)) + e3:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_CHAINING) + e3:SetCondition(c511000620.con) + e3:SetCost(c511000620.cost) + e3:SetOperation(c511000620.op) + c:RegisterEffect(e3) + --salvage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000620,1)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_SZONE) + e4:SetCost(c511000620.descost) + e4:SetTarget(c511000620.destg) + e4:SetOperation(c511000620.desop) + c:RegisterEffect(e4) +end +function c511000620.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,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000620.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 c511000620.con(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) and ep~=tp and re:IsActiveType(TYPE_MONSTER) +end +function c511000620.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then return eq:GetAttack()>0 and eq:GetDefense()>0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + eq:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(0) + e2:SetReset(RESET_EVENT+0x1fe0000) + eq:RegisterEffect(e2) +end +function c511000620.op(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(c511000620.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511000620.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end +function c511000620.descost(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) + e:SetLabelObject(eq) +end +function c511000620.filter(c) + return c:IsType(TYPE_EQUIP) and (c:IsDestructable() or c:IsAbleToGrave()) +end +function c511000620.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000620.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,c) + or eq:IsDestructable() or eq:IsAbleToGrave() end + local g=Duel.GetMatchingGroup(c511000620.filter,tp,LOCATION_SZONE,LOCATION_SZONE,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000620.senfilter(c) + return c:IsLocation(LOCATION_ONFIELD) +end +function c511000620.desop(e,tp,eg,ep,ev,re,r,rp) + local g2=Group.CreateGroup() + g2:AddCard(e:GetLabelObject()) + local g=Duel.GetMatchingGroup(c511000620.filter,tp,LOCATION_SZONE,LOCATION_SZONE,e:GetHandler()) + g:Merge(g2) + Duel.Destroy(g,REASON_EFFECT) + g=g:Filter(c511000620.senfilter,nil) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c511000621.lua b/script/c511000621.lua new file mode 100644 index 00000000..2df233d5 --- /dev/null +++ b/script/c511000621.lua @@ -0,0 +1,75 @@ +--Trust Chain +function c511000621.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(c511000621.condition) + e1:SetTarget(c511000621.target) + e1:SetOperation(c511000621.activate) + c:RegisterEffect(e1) + --instant(chain) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000621,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c511000621.con) + e2:SetTarget(c511000621.cost) + e2:SetOperation(c511000621.op) + c:RegisterEffect(e2) + --cannot attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c511000621.atktarget) + c:RegisterEffect(e3) +end +function c511000621.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000621.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511000621.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000621.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511000621.val) + tc:RegisterEffect(e1) + end +end +function c511000621.val(e,c) + local g=Duel.GetMatchingGroup(c511000621.filter,c:GetControler(),LOCATION_MZONE,0,nil) + return g:GetSum(Card.GetBaseAttack) +end +function c511000621.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511000621.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable() end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511000621.op(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end +function c511000621.atktarget(e,c) + return c:IsType(TYPE_SYNCHRO) +end diff --git a/script/c511000622.lua b/script/c511000622.lua new file mode 100644 index 00000000..925fc00d --- /dev/null +++ b/script/c511000622.lua @@ -0,0 +1,28 @@ +--Harmonia Mirror +function c511000622.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetCondition(c511000622.condition) + e1:SetTarget(c511000773.target) + e1:SetOperation(c511000622.activate) + c:RegisterEffect(e1) +end +function c511000622.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:GetSummonType()~=SUMMON_TYPE_SYNCHRO and tc:IsType(TYPE_SYNCHRO) and ep~=tp +end +function c511000773.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return tc:IsAbleToChangeControler() end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,eg,1,0,0) +end +function c511000622.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp) + end +end diff --git a/script/c511000623.lua b/script/c511000623.lua new file mode 100644 index 00000000..c1548bc2 --- /dev/null +++ b/script/c511000623.lua @@ -0,0 +1,35 @@ +--Scramble Egg +function c511000623.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000623.condition) + e1:SetTarget(c511000623.target) + e1:SetOperation(c511000623.activate) + c:RegisterEffect(e1) +end +function c511000623.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511000623.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000623.cfilter,1,nil,tp) +end +function c511000623.spfilter(c,e,tp) + return c:IsCode(36472900) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000623.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000623.spfilter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511000623.activate(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,c511000623.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000624.lua b/script/c511000624.lua new file mode 100644 index 00000000..3f5a64fd --- /dev/null +++ b/script/c511000624.lua @@ -0,0 +1,40 @@ +--Crush Star +function c511000624.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511000624.condition) + e1:SetTarget(c511000624.target) + e1:SetOperation(c511000624.operation) + c:RegisterEffect(e1) +end +function c511000624.cfilter(c,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) + and c:IsControler(tp) and c:GetPreviousControler()==tp +end +function c511000624.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000624.cfilter,1,nil,tp) +end +function c511000624.filter(c,e,tp) + return c:IsAttackBelow(1000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000624.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c511000624.filter,tp,LOCATION_HAND,0,1,nil,e,tp) + and Duel.IsExistingTarget(c511000624.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c511000624.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c511000624.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) +end +function c511000624.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if g:GetCount()~=2 or ft<2 then return end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) +end diff --git a/script/c511000625.lua b/script/c511000625.lua new file mode 100644 index 00000000..29de0c8f --- /dev/null +++ b/script/c511000625.lua @@ -0,0 +1,15 @@ +--Infernity Spear Bearer +function c511000625.initial_effect(c) + --atk + 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:SetValue(800) + e1:SetCondition(c511000625.atkcon) + c:RegisterEffect(e1) +end +function c511000625.atkcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_HAND,0)==0 +end diff --git a/script/c511000626.lua b/script/c511000626.lua new file mode 100644 index 00000000..1905c556 --- /dev/null +++ b/script/c511000626.lua @@ -0,0 +1,15 @@ +--Infernity Shield Bearer +function c511000626.initial_effect(c) + --def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(800) + e1:SetCondition(c511000626.defcon) + c:RegisterEffect(e1) +end +function c511000626.defcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_HAND,0)==0 +end diff --git a/script/c511000627.lua b/script/c511000627.lua new file mode 100644 index 00000000..59d18702 --- /dev/null +++ b/script/c511000627.lua @@ -0,0 +1,31 @@ +--死なばもろとも +function c511000627.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000627.target) + e1:SetOperation(c511000627.activate) + c:RegisterEffect(e1) +end +function c511000627.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + if e:GetHandler():IsLocation(LOCATION_HAND) then h1=h1-1 end + local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + return h1>2 and h2>2 and Duel.IsPlayerCanDraw(tp,5) and Duel.IsPlayerCanDraw(1-tp,5) + end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,5) +end +function c511000627.activate(e,tp,eg,ep,ev,re,r,rp) + local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + if h1<3 or h2<3 then return end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,LOCATION_HAND) + local ct=Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + Duel.Damage(tp,ct*100,REASON_EFFECT) + Duel.BreakEffect() + Duel.Draw(tp,5,REASON_EFFECT) + Duel.Draw(1-tp,5,REASON_EFFECT) +end diff --git a/script/c511000628.lua b/script/c511000628.lua new file mode 100644 index 00000000..15d3d109 --- /dev/null +++ b/script/c511000628.lua @@ -0,0 +1,99 @@ +--Comic Hand +function c511000628.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL+CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511000628.condition) + e1:SetTarget(c511000628.target) + e1:SetOperation(c511000628.operation) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetCondition(c511000628.dircon) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_ADD_TYPE) + e3:SetValue(TYPE_TOON) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e4:SetCondition(c511000628.atcon) + c:RegisterEffect(e4) + --equip limit + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_EQUIP_LIMIT) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e5:SetValue(c511000628.eqlimit) + c:RegisterEffect(e5) + --control + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_EQUIP) + e6:SetCode(EFFECT_SET_CONTROL) + e6:SetValue(c511000628.ctval) + c:RegisterEffect(e6) + --destroy + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetRange(LOCATION_SZONE) + e7:SetCode(EVENT_LEAVE_FIELD) + e7:SetCondition(c511000628.sdescon) + e7:SetOperation(c511000628.sdesop) + c:RegisterEffect(e7) +end +function c511000628.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c511000628.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000628.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000628.filter(c) + return c:IsFaceup() and c:IsControlerCanBeChanged() +end +function c511000628.eqlimit(e,c) + return e:GetHandlerPlayer()~=c:GetControler() or e:GetHandler():GetEquipTarget()==c +end +function c511000628.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511000628.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000628.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511000628.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000628.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + end +end +function c511000628.atkfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c511000628.dircon(e) + return not Duel.IsExistingMatchingCard(c511000628.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c511000628.atcon(e) + return Duel.IsExistingMatchingCard(c511000628.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c511000628.ctval(e,c) + return e:GetHandlerPlayer() +end +function c511000628.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsCode(15259703) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c511000628.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000628.sfilter,1,nil) +end +function c511000628.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000629.lua b/script/c511000629.lua new file mode 100644 index 00000000..cecd60c3 --- /dev/null +++ b/script/c511000629.lua @@ -0,0 +1,27 @@ +--Toon Briefcase +function c511000629.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON) + e1:SetCondition(c511000629.condition) + e1:SetTarget(c511000629.target) + e1:SetOperation(c511000629.activate) + c:RegisterEffect(e1) +end +function c511000629.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c511000629.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000629.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000629.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TODECK,eg,1,0,0) +end +function c511000629.activate(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.NegateSummon(eg:GetFirst()) + Duel.SendtoDeck(eg,nil,2,REASON_EFFECT) +end diff --git a/script/c511000630.lua b/script/c511000630.lua new file mode 100644 index 00000000..053bbdad --- /dev/null +++ b/script/c511000630.lua @@ -0,0 +1,33 @@ +--アクア·ジェット +function c511000630.initial_effect(c) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000630,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c511000630.atkcon) + e2:SetTarget(c511000630.atktg) + e2:SetOperation(c511000630.atkop) + c:RegisterEffect(e2) +end +function c511000630.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000630.atktg(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 true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000630.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000631.lua b/script/c511000631.lua new file mode 100644 index 00000000..6e403211 --- /dev/null +++ b/script/c511000631.lua @@ -0,0 +1,36 @@ +--フラットLV4 +function c511000631.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000631,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c511000631.target) + e1:SetOperation(c511000631.activate) + c:RegisterEffect(e1) +end +function c511000631.filter(c,e,tp) + return c:GetLevel()==4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000631.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000631.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000631.filter,tp,LOCATION_DECK,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(511000631,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c511000631.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + Duel.SpecialSummonStep(g1:GetFirst(),0,tp,tp,false,false,POS_FACEUP) + end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000631.filter,1-tp,LOCATION_DECK,0,1,nil,e,1-tp) + and Duel.SelectYesNo(1-tp,aux.Stringid(511000631,1)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(1-tp,c511000631.filter,1-tp,LOCATION_DECK,0,1,1,nil,e,1-tp) + Duel.SpecialSummonStep(g2:GetFirst(),0,1-tp,1-tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() +end \ No newline at end of file diff --git a/script/c511000632.lua b/script/c511000632.lua new file mode 100644 index 00000000..6b556017 --- /dev/null +++ b/script/c511000632.lua @@ -0,0 +1,79 @@ +--トラゴエディア +function c511000632.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000632,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c511000632.sumcon) + e1:SetTarget(c511000632.sumtg) + e1:SetOperation(c511000632.sumop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000632,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCost(c511000632.spcost) + e2:SetTarget(c511000632.sptg) + e2:SetOperation(c511000632.spop) + c:RegisterEffect(e2) +end +function c511000632.sumcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and tp~=rp and ev>=1000 and bit.band(r,REASON_BATTLE)~=0 +end +function c511000632.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000632.sumop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c511000632.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511000632.spfilter(c,e,tp) + return c:GetAttack()<=2000 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000632.spfilter2(c,e,tp,atk) + return c:GetAttack()<=atk and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000632.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000632.spfilter,tp,LOCATION_HAND,0,1,e:GetHandler(),e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000632.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local sg=Duel.GetMatchingGroup(c511000632.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=sg:Select(tp,1,1,nil) + local spg=Group.CreateGroup() + sg:Sub(g) + spg:Merge(g) + local atk=2000 + if g:GetFirst():GetAttack()==2000 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end + ft=ft-1 + atk=atk-g:GetFirst():GetAttack() + sg=sg:Filter(c511000632.spfilter2,nil,e,tp,atk) + while ft>0 and atk>0 and sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(511000632,2)) do + g=sg:Select(tp,1,1,nil) + sg:Sub(g) + spg:Merge(g) + atk=atk-g:GetFirst():GetAttack() + ft=ft-1 + sg=sg:Filter(c511000632.spfilter2,nil,e,tp,atk) + end + Duel.SpecialSummon(spg,0,tp,tp,false,false,POS_FACEUP_ATTACK) +end diff --git a/script/c511000633.lua b/script/c511000633.lua new file mode 100644 index 00000000..849039e4 --- /dev/null +++ b/script/c511000633.lua @@ -0,0 +1,26 @@ +--聖鳥クレイン +function c511000633.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000633,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c511000633.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e1:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e1) + local e3=e1:Clone() + e3:SetCode(EVENT_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000633.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetCode(EFFECT_SKIP_DP) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000634.lua b/script/c511000634.lua new file mode 100644 index 00000000..b3a628bc --- /dev/null +++ b/script/c511000634.lua @@ -0,0 +1,29 @@ +--困惑のマスク +function c511000634.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511000634.condition) + e1:SetTarget(c511000634.target) + e1:SetOperation(c511000634.activate) + c:RegisterEffect(e1) +end +function c511000634.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return bt:GetControler()==c:GetControler() +end +function c511000634.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,Duel.GetAttacker()) +end +function c511000634.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511000635.lua b/script/c511000635.lua new file mode 100644 index 00000000..1acd4da0 --- /dev/null +++ b/script/c511000635.lua @@ -0,0 +1,67 @@ +--屑鉄再生工場 +function c511000635.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000635.target) + e1:SetOperation(c511000635.activate) + c:RegisterEffect(e1) +end +function c511000635.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c511000635.filter2(c,e,tp,m,chkf) + return c:IsType(TYPE_FUSION) and c:IsRace(RACE_MACHINE) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511000635.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511000635.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c511000635.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + res=Duel.IsExistingMatchingCard(c511000635.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000635.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511000635.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511000635.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + sg2=Duel.GetMatchingGroup(c511000635.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511000636.lua b/script/c511000636.lua new file mode 100644 index 00000000..66237996 --- /dev/null +++ b/script/c511000636.lua @@ -0,0 +1,35 @@ +--時計型麻酔銃 +function c511000636.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000636.target) + e1:SetOperation(c511000636.activate) + c:RegisterEffect(e1) +end +function c511000636.filter(c) + return c:IsFaceup() and c:GetLevel()>0 or c:GetRank()>0 +end +function c511000636.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000636.filter,tp,0,LOCATION_MZONE,1,nil) end +end +function c511000636.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,c511000636.filter,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(c511000636.val) + tc:RegisterEffect(e1) + end +end +function c511000636.val(e,c) + if c:GetLevel()>0 then + return c:GetLevel()*-100 + else + return c:GetRank()*-200 + end +end diff --git a/script/c511000637.lua b/script/c511000637.lua new file mode 100644 index 00000000..8cb243c1 --- /dev/null +++ b/script/c511000637.lua @@ -0,0 +1,50 @@ +--Ashingray +function c511000637.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000637,0)) + e1:SetCategory(CATEGORY_HANDES) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c511000637.tg) + e1:SetOperation(c511000637.op) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000637,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c511000637.condition) + e2:SetTarget(c511000637.target) + e2:SetOperation(c511000637.operation) + c:RegisterEffect(e2) +end +function c511000637.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_HANDES,0,0,1-tp,1) +end +function c511000637.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0) + local sg=g:Select(1-tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_DISCARD+REASON_EFFECT) +end +function c511000637.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511000637.filter(c,e,tp) + return c:IsCode(511000637) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000637.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000637.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511000637.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,c511000637.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c511000638.lua b/script/c511000638.lua new file mode 100644 index 00000000..5b42ceca --- /dev/null +++ b/script/c511000638.lua @@ -0,0 +1,26 @@ +--Rainbow Snake Eingana +function c511000638.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000638,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511000638.condition) + e1:SetTarget(c511000638.target) + e1:SetOperation(c511000638.operation) + c:RegisterEffect(e1) +end +function c511000638.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and not e:GetHandler():IsReason(REASON_RETURN) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511000638.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0,nil) +end +function c511000638.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511000639.lua b/script/c511000639.lua new file mode 100644 index 00000000..0d036e5b --- /dev/null +++ b/script/c511000639.lua @@ -0,0 +1,29 @@ +--Ipiria +function c511000639.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000639,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000639.target) + e1:SetOperation(c511000639.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000639.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000639.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000640.lua b/script/c511000640.lua new file mode 100644 index 00000000..edf480de --- /dev/null +++ b/script/c511000640.lua @@ -0,0 +1,32 @@ +--Leading Question +function c511000640.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + 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(c511000640.atkup) + c:RegisterEffect(e2) +end +function c511000640.atkup(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not (d~=nil and a:GetControler()==tp and a:IsType(TYPE_FUSION) and a:GetLevel()<=4 and a:IsRelateToBattle()) + and not (d~=nil and d:GetControler()==tp and d:IsFaceup() and d:IsType(TYPE_FUSION) and d:GetLevel()<=4 and d:IsRelateToBattle()) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + if a:GetControler()==tp then + e1:SetValue(800) + a:RegisterEffect(e1) + else + e1:SetValue(800) + d:RegisterEffect(e1) + end +end diff --git a/script/c511000641.lua b/script/c511000641.lua new file mode 100644 index 00000000..57c72bf2 --- /dev/null +++ b/script/c511000641.lua @@ -0,0 +1,38 @@ +--Sinister Justice +function c511000641.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --recover + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000641,0)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511000641.reccon) + e2:SetTarget(c511000641.rectg) + e2:SetOperation(c511000641.recop) + c:RegisterEffect(e2) +end +function c511000641.reccon(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return false end + local rc=eg:GetFirst() + return rc:IsControler(tp) and rc:IsType(TYPE_FUSION) and rc:GetLevel()<=4 +end +function c511000641.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,800) +end +function c511000641.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.Recover(p,d,REASON_EFFECT) + end +end diff --git a/script/c511000642.lua b/script/c511000642.lua new file mode 100644 index 00000000..16c277fb --- /dev/null +++ b/script/c511000642.lua @@ -0,0 +1,31 @@ +--Penguin Torpedo +function c511000642.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000642,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511000642.condition) + e2:SetTarget(c511000642.target) + e2:SetOperation(c511000642.operation) + c:RegisterEffect(e2) +end +function c511000642.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetAttackTarget()==nil + and Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)>0 +end +function c511000642.target(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 c511000642.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c511000643.lua b/script/c511000643.lua new file mode 100644 index 00000000..a9d7ce4f --- /dev/null +++ b/script/c511000643.lua @@ -0,0 +1,40 @@ +--Defender Iceberg +function c511000643.initial_effect(c) + --pos + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3117804,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000643.poscon) + e1:SetOperation(c511000643.posop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetTarget(c511000643.tglimit) + e1:SetValue(1) + c:RegisterEffect(e1) +end +function c511000643.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c511000643.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c511000643.tglimit(e,c) + return c~=e:GetHandler() and c:IsAttribute(ATTRIBUTE_WATER) +end diff --git a/script/c511000644.lua b/script/c511000644.lua new file mode 100644 index 00000000..9816a822 --- /dev/null +++ b/script/c511000644.lua @@ -0,0 +1,38 @@ +--The Big Server +function c511000644.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000644,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511000644.condition) + e2:SetTarget(c511000644.target) + e2:SetOperation(c511000644.operation) + c:RegisterEffect(e2) +end +function c511000644.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511000644.filter(c) + return c:IsCode(511000645) and c:IsAbleToHand() +end +function c511000644.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000644.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000644.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000644.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + Duel.BreakEffect() + Duel.Draw(1-tp,1,REASON_EFFECT) + end +end diff --git a/script/c511000645.lua b/script/c511000645.lua new file mode 100644 index 00000000..500875fd --- /dev/null +++ b/script/c511000645.lua @@ -0,0 +1,32 @@ +--Service Ace +function c511000645.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000645.rmtg) + e1:SetOperation(c511000645.rmop) + c:RegisterEffect(e1) +end +function c511000645.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_HAND and chkc:GetControler()==tp and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_HAND,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511000645.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CARDTYPE) + local op=Duel.SelectOption(1-tp,70,71,72) + Duel.ConfirmCards(1-tp,tc) + Duel.ShuffleHand(tp) + if (op~=0 and tc:IsType(TYPE_MONSTER)) or (op~=1 and tc:IsType(TYPE_SPELL)) or (op~=2 and tc:IsType(TYPE_TRAP)) then + Duel.Damage(1-tp,1500,REASON_EFFECT) + end + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511000646.lua b/script/c511000646.lua new file mode 100644 index 00000000..94369ad7 --- /dev/null +++ b/script/c511000646.lua @@ -0,0 +1,41 @@ +--Super Guard +function c511000646.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetValue(1) + c:RegisterEffect(e2) + --cost + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetOperation(c511000646.costop) + c:RegisterEffect(e3) + --bp + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_BP) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(1,0) + c:RegisterEffect(e4) +end +function c511000646.costop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + if Duel.GetLP(tp)>=500 then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end \ No newline at end of file diff --git a/script/c511000647.lua b/script/c511000647.lua new file mode 100644 index 00000000..1eea5899 --- /dev/null +++ b/script/c511000647.lua @@ -0,0 +1,62 @@ +--Candelato, the Beast of Light +function c511000647.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(0) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511000647.spcon) + e2:SetOperation(c511000647.spop) + c:RegisterEffect(e2) + --cannot attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c511000647.atklimit) + c:RegisterEffect(e3) + --atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c511000647.adval) + c:RegisterEffect(e4) + --Skip Draw Phase + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetRange(LOCATION_MZONE) + e5:SetTargetRange(1,0) + e5:SetCode(EFFECT_SKIP_DP) + c:RegisterEffect(e5) +end +function c511000647.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(Card.IsAbleToGrave,c:GetControler(),LOCATION_HAND,0,2,c) +end +function c511000647.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGrave,tp,LOCATION_HAND,0,2,2,c) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000647.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c511000647.adval(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)*1000 +end diff --git a/script/c511000648.lua b/script/c511000648.lua new file mode 100644 index 00000000..3b400496 --- /dev/null +++ b/script/c511000648.lua @@ -0,0 +1,34 @@ +--Elegant Light LV4 +function c511000648.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000648,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000648.spcon) + e1:SetTarget(c511000648.sptg) + e1:SetOperation(c511000648.spop) + c:RegisterEffect(e1) +end +function c511000648.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000648.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) and not e:GetHandler():IsReason(REASON_RETURN) +end +function c511000648.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000648.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000648.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000648.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511000649.lua b/script/c511000649.lua new file mode 100644 index 00000000..f1ddf0a6 --- /dev/null +++ b/script/c511000649.lua @@ -0,0 +1,34 @@ +--Purse with a Hole +function c511000649.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetHintTiming(0,TIMING_TOHAND) + e1:SetCondition(c511000649.condition) + e1:SetTarget(c511000649.target) + e1:SetOperation(c511000649.activate) + c:RegisterEffect(e1) +end +function c511000649.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>5 +end +function c511000649.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)-5) +end +function c511000649.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,0,LOCATION_HAND) + if g:GetCount()>0 then + while Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>5 do + Duel.BreakEffect() + local sg=g:RandomSelect(p,1) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + g:RemoveCard(sg:GetFirst()) + end + end +end diff --git a/script/c511000650.lua b/script/c511000650.lua new file mode 100644 index 00000000..8f302ce6 --- /dev/null +++ b/script/c511000650.lua @@ -0,0 +1,64 @@ +--Recycle Barrier +function c511000650.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000650.con) + e1:SetOperation(c511000650.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c511000650.condition) + e2:SetCost(c511000650.cost) + e2:SetTarget(c511000650.target) + e2:SetOperation(c511000650.operation) + c:RegisterEffect(e2) +end +function c511000650.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511000650.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000650.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c511000650.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511000650.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511000650.trapfilter(c) + return c:IsType(TYPE_TRAP) and c:IsDiscardable() +end +function c511000650.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000650.trapfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c511000650.trapfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511000650.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c511000650.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c511000651.lua b/script/c511000651.lua new file mode 100644 index 00000000..bada1095 --- /dev/null +++ b/script/c511000651.lua @@ -0,0 +1,32 @@ +--Ignition +function c511000651.initial_effect(c) + --change effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000651.condition) + e1:SetOperation(c511000651.activate) + c:RegisterEffect(e1) +end +function c511000651.repop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():CancelToGrave(false) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511000651.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end +function c511000651.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511000651.condition(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingMatchingCard(c511000651.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c511000651.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Group.CreateGroup() + Duel.ChangeTargetCard(ev,g) + Duel.ChangeChainOperation(ev,c511000651.repop) +end diff --git a/script/c511000652.lua b/script/c511000652.lua new file mode 100644 index 00000000..ca9e8eae --- /dev/null +++ b/script/c511000652.lua @@ -0,0 +1,16 @@ +--Picador Fiend +function c511000652.initial_effect(c) + --direct atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetCondition(c511000652.dircon) + c:RegisterEffect(e1) +end +function c511000652.filter(c) + return c:IsFaceup() and c:IsCode(511000017) +end +function c511000652.dircon(e) + return Duel.IsExistingMatchingCard(c511000652.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(511000017) +end diff --git a/script/c511000653.lua b/script/c511000653.lua new file mode 100644 index 00000000..8f7b9567 --- /dev/null +++ b/script/c511000653.lua @@ -0,0 +1,15 @@ +--Command Angel +function c511000653.initial_effect(c) + --atk def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetTarget(c511000653.tg) + e1:SetValue(400) + c:RegisterEffect(e1) +end +function c511000653.tg(e,c) + return c:IsRace(RACE_FAIRY) +end diff --git a/script/c511000654.lua b/script/c511000654.lua new file mode 100644 index 00000000..c6e86102 --- /dev/null +++ b/script/c511000654.lua @@ -0,0 +1,39 @@ +--Card of Variation +function c511000654.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000654.target) + e1:SetOperation(c511000654.activate) + c:RegisterEffect(e1) +end +function c511000654.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511000654.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c511000654.op) + Duel.RegisterEffect(e1,tp) +end +function c511000654.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511000654) + if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 and Duel.SelectYesNo(tp,aux.Stringid(511000654,1)) then + local sg=Duel.SelectMatchingCard(tp,Card.IsAbleToGrave,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + else + Duel.Damage(tp,3000,REASON_EFFECT) + end +end diff --git a/script/c511000655.lua b/script/c511000655.lua new file mode 100644 index 00000000..840143d0 --- /dev/null +++ b/script/c511000655.lua @@ -0,0 +1,27 @@ +--Dino Blast +function c511000655.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000655.target) + e1:SetOperation(c511000655.activate) + c:RegisterEffect(e1) +end +function c511000655.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DINOSAUR) +end +function c511000655.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000655.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000655.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000655.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511000655.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Damage(1-tp,tc:GetLevel()*300,REASON_EFFECT) + end +end diff --git a/script/c511000656.lua b/script/c511000656.lua new file mode 100644 index 00000000..2fdbd2f7 --- /dev/null +++ b/script/c511000656.lua @@ -0,0 +1,30 @@ +--Dino Stomp +function c511000656.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000656.target) + e1:SetOperation(c511000656.activate) + c:RegisterEffect(e1) +end +function c511000656.filter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511000656.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc:IsOnField() and c511000656.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return tg:IsControler(tp) and tg:IsRace(RACE_DINOSAUR) + and Duel.IsExistingTarget(c511000656.filter,tp,0,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000656.filter,tp,0,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000656.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000657.lua b/script/c511000657.lua new file mode 100644 index 00000000..43dae4ee --- /dev/null +++ b/script/c511000657.lua @@ -0,0 +1,67 @@ +--Spacetime Trancendency +function c511000657.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000657.cost) + e1:SetTarget(c511000657.target) + e1:SetOperation(c511000657.activate) + c:RegisterEffect(e1) +end +function c511000657.cfilter(c) + return c:IsRace(RACE_DINOSAUR) and c:IsAbleToRemoveAsCost() +end +function c511000657.filter(c,lv,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(c511000657.cfilter,c:GetControler(),LOCATION_GRAVE,0,c:GetLevel(),nil) +end +function c511000657.filter2(c,lv,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==lv +end +function c511000657.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511000657.target(e,tp,eg,ep,ev,re,r,rp,chk) + local lv=Duel.GetMatchingGroupCount(c511000657.cfilter,tp,LOCATION_GRAVE,0,nil) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511000657.filter,tp,LOCATION_HAND,0,1,nil,lv,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + local sp=Duel.GetMatchingGroup(c511000657.filter,tp,LOCATION_HAND,0,nil,lv,e,tp) + local tgmax=sp:GetMaxGroup(Card.GetLevel) + local tgmin=sp:GetMinGroup(Card.GetLevel) + local maxlv=tgmax:GetFirst():GetLevel() + local minlv=tgmin:GetFirst():GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000657.cfilter,tp,LOCATION_GRAVE,0,minlv,maxlv,nil) + local ct=g:GetCount() + local add=0 + lv=Duel.GetMatchingGroupCount(c511000657.cfilter,tp,LOCATION_GRAVE,0,nil) + while not Duel.IsExistingMatchingCard(c511000657.filter2,tp,LOCATION_HAND,0,1,nil,ct,e,tp) and Duel.IsExistingMatchingCard(c511000657.filter,tp,LOCATION_HAND,0,1,nil,ct+lv,e,tp) do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c511000657.cfilter,tp,LOCATION_GRAVE,0,1,maxlv-ct,nil) + ct=ct+g2:GetCount() + g:Merge(g2) + end + Duel.SetTargetParam(ct) + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000657.activate(e,tp,eg,ep,ev,re,r,rp) + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or lv<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000657.filter2,tp,LOCATION_HAND,0,1,1,nil,lv,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511000658.lua b/script/c511000658.lua new file mode 100644 index 00000000..6164c642 --- /dev/null +++ b/script/c511000658.lua @@ -0,0 +1,32 @@ +--Ring of Life +function c511000658.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e1) + e1:SetTarget(c511000658.target) + e1:SetOperation(c511000658.activate) + c:RegisterEffect(e1) +end +function c511000658.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511000658.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000658.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,PLAYER_ALL,0) +end +function c511000658.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511000658.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local def=g:GetFirst():GetDefense() + if Duel.Destroy(g,REASON_EFFECT)>0 then + Duel.Recover(tp,def,REASON_EFFECT) + Duel.Recover(1-tp,def,REASON_EFFECT) + end + end +end diff --git a/script/c511000659.lua b/script/c511000659.lua new file mode 100644 index 00000000..9ef496dd --- /dev/null +++ b/script/c511000659.lua @@ -0,0 +1,42 @@ +--Training Field +function c511000659.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --attack cost + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000659.atop) + c:RegisterEffect(e2) +end +function c511000659.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=Duel.GetAttacker() + local p=tg:GetControler() + if Duel.GetFieldGroupCount(p,LOCATION_MZONE,0)>1 and Duel.SelectYesNo(p,aux.Stringid(511000659,0)) then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(p,nil,p,LOCATION_MZONE,0,1,1,tg) + if g:GetCount()>0 then + --Duel.ChangeAttackTarget(g:GetFirst()) + Duel.CalculateDamage(tg,g:GetFirst()) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(300) + tg:RegisterEffect(e1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tg:RegisterEffect(e1) + local e2=e1:Clone() + g:GetFirst():RegisterEffect(e2) + end + end +end diff --git a/script/c511000660.lua b/script/c511000660.lua new file mode 100644 index 00000000..b909f939 --- /dev/null +++ b/script/c511000660.lua @@ -0,0 +1,32 @@ +--Strikeroid +function c511000660.initial_effect(c) + --return to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000660,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000660.condition) + e1:SetCost(c511000660.cost) + e1:SetTarget(c511000660.target) + e1:SetOperation(c511000660.operation) + c:RegisterEffect(e1) +end +function c511000660.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511000660.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c511000660.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c511000660.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c511000661.lua b/script/c511000661.lua new file mode 100644 index 00000000..0316e894 --- /dev/null +++ b/script/c511000661.lua @@ -0,0 +1,44 @@ +--Roid Reinforcements +function c511000661.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000661.cost) + e1:SetTarget(c511000661.target) + e1:SetOperation(c511000661.operation) + c:RegisterEffect(e1) +end +function c511000661.costfilter(c) + return c:IsDiscardable() and c:IsAbleToGraveAsCost() +end +function c511000661.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511000661.filter(c) + return c:IsSetCard(0x16) and c:IsAbleToHand() +end +function c511000661.target(e,tp,eg,ep,ev,re,r,rp,chk) + local rt=Duel.GetTargetCount(c511000661.filter,tp,LOCATION_GRAVE,0,nil) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511000661.costfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) and rt>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local cg=Duel.SelectMatchingCard(tp,c511000661.costfilter,tp,LOCATION_HAND,0,1,rt,nil) + Duel.SendtoGrave(cg,REASON_COST+REASON_DISCARD) + Duel.SetTargetParam(cg:GetCount()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,e:GetLabel(),0,0) +end +function c511000661.operation(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local tg=Duel.GetMatchingGroup(c511000661.filter,tp,LOCATION_GRAVE,0,nil) + if tg:GetCount()>=ct then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sel=tg:Select(tp,ct,ct,nil) + Duel.SendtoHand(sel,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sel) + end +end diff --git a/script/c511000662.lua b/script/c511000662.lua new file mode 100644 index 00000000..a81ca06b --- /dev/null +++ b/script/c511000662.lua @@ -0,0 +1,56 @@ +--Born from Draconis +function c511000662.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000662.cost) + e1:SetTarget(c511000662.target) + e1:SetOperation(c511000662.activate) + c:RegisterEffect(e1) +end +function c511000662.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c511000662.cfilter(c) + return c:IsSetCard(0x93) and c:IsAbleToRemove() +end +function c511000662.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,true,false) and c:IsSetCard(0x93) and c:GetLevel()==10 +end +function c511000662.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return (Duel.IsExistingMatchingCard(c511000662.cfilter,tp,LOCATION_MZONE,0,1,nil) + or (Duel.IsExistingMatchingCard(c511000662.cfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0)) + and Duel.IsExistingMatchingCard(c511000662.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) + end + local g=Duel.GetMatchingGroup(c511000662.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(g:GetCount()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000662.activate(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 tc=Duel.SelectMatchingCard(tp,c511000662.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc then + if Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + if tc:GetTextAttack()==-2 and tc:GetTextDefense()==-2 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetReset(RESET_EVENT+0xff0000) + e1:SetValue(e:GetLabel()*700) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + tc:RegisterEffect(e2) + end + tc:CompleteProcedure() + end + end +end diff --git a/script/c511000664.lua b/script/c511000664.lua new file mode 100644 index 00000000..9b9c70e8 --- /dev/null +++ b/script/c511000664.lua @@ -0,0 +1,117 @@ +--Training Wheels +function c511000664.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(c511000664.target) + e1:SetOperation(c511000664.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(c511000664.eqlimit) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e3) + --banish + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000664,0)) + e4:SetCategory(CATEGORY_REMOVE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_BATTLE_DAMAGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000664.condition) + e4:SetTarget(c511000664.tg) + e4:SetOperation(c511000664.op) + c:RegisterEffect(e4) +end +function c511000664.eqlimit(e,c) + return c:IsCode(45945685) +end +function c511000664.filter(c) + return c:IsFaceup() and c:IsCode(45945685) +end +function c511000664.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000664.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000664.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000664.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000664.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:IsControler(tp) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + end +end +function c511000664.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetAttackTarget()==nil and eg:GetFirst()==e:GetHandler():GetEquipTarget() +end +function c511000664.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,2,0,0) +end +function c511000664.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=c:GetEquipTarget() + if Duel.Remove(eq,eq:GetPosition(),REASON_EFFECT+REASON_TEMPORARY)~=0 and Duel.Remove(c,c:GetPosition(),REASON_EFFECT+REASON_TEMPORARY)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_REMOVED) + e1:SetCountLimit(1) + if Duel.GetTurnPlayer()==tp then + if Duel.GetCurrentPhase()==PHASE_DRAW then + e1:SetLabel(Duel.GetTurnCount()) + else + e1:SetLabel(Duel.GetTurnCount()+2) + end + else + e1:SetLabel(Duel.GetTurnCount()+1) + end + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511000664.retcon) + e1:SetOperation(c511000664.retop) + eq:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_REMOVED) + e2:SetCountLimit(1) + if Duel.GetTurnPlayer()==tp then + if Duel.GetCurrentPhase()==PHASE_DRAW then + e2:SetLabel(Duel.GetTurnCount()) + else + e2:SetLabel(Duel.GetTurnCount()+2) + end + else + e2:SetLabel(Duel.GetTurnCount()+1) + end + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetCondition(c511000664.retcon) + e2:SetOperation(c511000664.retop2) + e2:SetLabelObject(eq) + c:RegisterEffect(e2) + end +end +function c511000664.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==e:GetLabel() +end +function c511000664.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetHandler()) + e:Reset() +end +function c511000664.retop2(e,tp,eg,ep,ev,re,r,rp) + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Equip(tp,e:GetHandler(),e:GetLabelObject()) + e:Reset() +end diff --git a/script/c511000665.lua b/script/c511000665.lua new file mode 100644 index 00000000..9f5dd582 --- /dev/null +++ b/script/c511000665.lua @@ -0,0 +1,35 @@ +--Lightning Talisman +function c511000665.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000665.condition) + e1:SetTarget(c511000665.target) + e1:SetOperation(c511000665.activate) + c:RegisterEffect(e1) +end +function c511000665.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000665.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511000665.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack(tc) then + Duel.Draw(p,1,REASON_EFFECT) + local dam=Duel.GetFieldGroupCount(p,LOCATION_HAND,0)*400 + Duel.Damage(p,dam,REASON_EFFECT) + end + end +end diff --git a/script/c511000666.lua b/script/c511000666.lua new file mode 100644 index 00000000..1addd842 --- /dev/null +++ b/script/c511000666.lua @@ -0,0 +1,60 @@ +--Undead Lineage +function c511000666.initial_effect(c) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c511000666.target) + e2:SetOperation(c511000666.operation) + c:RegisterEffect(e2) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511000666.atcon) + e1:SetValue(500) + c:RegisterEffect(e1) + --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) + --destroy sub + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetTarget(c511000666.reptg) + e4:SetOperation(c511000666.repop) + c:RegisterEffect(e4) +end +function c511000666.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 c511000666.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 c511000666.atcon(e) + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and e:GetHandler():GetEquipTarget()==Duel.GetAttacker() +end +function c511000666.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return bit.band(r,REASON_EFFECT)~=0 and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end + return Duel.SelectYesNo(e:GetOwnerPlayer(),aux.Stringid(511000666,0)) +end +function c511000666.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c511000667.lua b/script/c511000667.lua new file mode 100644 index 00000000..50bf6c63 --- /dev/null +++ b/script/c511000667.lua @@ -0,0 +1,42 @@ +--Plucked Wing +function c511000667.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511000667.target) + e1:SetOperation(c511000667.activate) + c:RegisterEffect(e1) +end +function c511000667.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) and bit.band(tg:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL end + Duel.SetTargetCard(tg) +end +function c511000667.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack(tc) then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end + end +end diff --git a/script/c511000668.lua b/script/c511000668.lua new file mode 100644 index 00000000..01ab70e2 --- /dev/null +++ b/script/c511000668.lua @@ -0,0 +1,36 @@ +--Rampage Condenser +function c511000668.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000668.condition) + c:RegisterEffect(e1) + --atk change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000668,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000668.atkcon) + e2:SetTarget(c511000668.target) + e2:SetOperation(c511000668.operation) + c:RegisterEffect(e2) +end +function c511000668.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_THUNDER) +end +function c511000668.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000668.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000668.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetAttacker():IsRace(RACE_MACHINE) +end +function c511000668.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511000668.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,500,REASON_EFFECT) +end diff --git a/script/c511000669.lua b/script/c511000669.lua new file mode 100644 index 00000000..b81a64f2 --- /dev/null +++ b/script/c511000669.lua @@ -0,0 +1,88 @@ +--Magic-Reflection Armor - Metal Plus +function c511000669.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(c511000669.target) + e1:SetOperation(c511000669.operation) + c:RegisterEffect(e1) +end +function c511000669.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_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000669.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e2:SetTarget(c511000669.distg) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --disable effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000669.disop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + --self destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e4:SetTarget(c511000669.distg) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + --disable effect + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_CHAINING) + e5:SetRange(LOCATION_SZONE) + e5:SetOperation(c511000669.disop) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + end +end +function c511000669.cfilter(c,tp,eq) + return c:IsFaceup() and c==eq and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) +end +function c511000669.distg(e,c) + return c:GetCardTargetCount()>0 and c:IsType(TYPE_SPELL) + and c:GetCardTarget():IsExists(c511000669.cfilter,1,nil,e:GetHandlerPlayer(),e:GetHandler():GetEquipTarget()) +end +function c511000669.disop(e,tp,eg,ep,ev,re,r,rp) + if not re:IsActiveType(TYPE_SPELL) then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or not g:IsExists(c511000669.cfilter,1,nil,tp,e:GetHandler():GetEquipTarget()) then return end + Duel.NegateEffect(ev) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(re:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c511000670.lua b/script/c511000670.lua new file mode 100644 index 00000000..953d897e --- /dev/null +++ b/script/c511000670.lua @@ -0,0 +1,98 @@ +--Red-Eyes Darkness Metal Dragon (Anime) +function c511000670.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511000670.spcon) + e2:SetOperation(c511000670.spop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c511000670.val) + c:RegisterEffect(e3) + --negate + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000670,0)) + e4:SetCategory(CATEGORY_DISABLE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_CHAINING) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511000670.discon) + e4:SetTarget(c511000670.distg) + e4:SetOperation(c511000670.disop) + c:RegisterEffect(e4) + --Negate + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000670,1)) + e5:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e5:SetCode(EVENT_CHAINING) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511000670.condition) + e5:SetCost(c511000670.cost) + e5:SetTarget(c511000670.target) + e5:SetOperation(c511000670.operation) + c:RegisterEffect(e5) +end +function c511000670.val(e,c) + return Duel.GetMatchingGroupCount(Card.IsRace,c:GetControler(),LOCATION_GRAVE,0,nil,RACE_DRAGON)*400 +end +function c511000670.rfilter(c) + return c:IsCode(96561011) and c:GetEquipGroup():IsExists(Card.IsCode,1,nil,511000669) +end +function c511000670.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),c511000670.rfilter,1,nil) +end +function c511000670.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),c511000670.rfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511000670.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end + local loc,tg=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION,CHAININFO_TARGET_CARDS) + if not tg or not tg:IsContains(c) then return false end + return re:IsActiveType(TYPE_SPELL) and Duel.IsChainDisablable(ev) and loc~=LOCATION_DECK +end +function c511000670.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511000670.disop(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.NegateEffect(ev) +end +function c511000670.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and re:IsActiveType(TYPE_SPELL) and Duel.IsChainNegatable(ev) and rp~=tp +end +function c511000670.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,e:GetHandler()) +end +function c511000670.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000670.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000671.lua b/script/c511000671.lua new file mode 100644 index 00000000..cef96488 --- /dev/null +++ b/script/c511000671.lua @@ -0,0 +1,76 @@ +--Burning Soul Sword +function c511000671.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000671.target) + e1:SetOperation(c511000671.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) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000671,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetLabel(0) + e3:SetCountLimit(1) + e3:SetCost(c511000671.cost) + e3:SetTarget(c511000671.atktg) + e3:SetOperation(c511000671.atkop) + c:RegisterEffect(e3) +end +function c511000671.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 c511000671.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 c511000671.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c511000671.cfilter(c) + return c:GetTextAttack()>0 +end +function c511000671.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c511000671.cfilter,1,eq) + end + e:SetLabel(0) + local g=Duel.SelectReleaseGroup(tp,c511000671.cfilter,1,1,eq) + Duel.Release(g,REASON_COST) + local atk=g:GetFirst():GetAttack() + if atk<0 then atk=0 end + Duel.SetTargetParam(atk) +end +function c511000671.atkop(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + if ec then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + e1:SetReset(RESET_EVENT+0x1fe0000) + ec:RegisterEffect(e1) + end +end diff --git a/script/c511000672.lua b/script/c511000672.lua new file mode 100644 index 00000000..a867bae7 --- /dev/null +++ b/script/c511000672.lua @@ -0,0 +1,44 @@ +--Fire Whip +function c511000672.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000672.target) + e1:SetOperation(c511000672.activate) + c:RegisterEffect(e1) +end +function c511000672.filter(c,e,tp,tid) + return c:IsReason(REASON_DESTROY) and c:GetTurnID()==tid + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000672.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetMatchingGroup(c511000672.filter,tp,0x73,0x73,nil,e,tp,Duel.GetTurnCount()) + local tid=Duel.GetTurnCount() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>g:GetCount()-1 + and Duel.IsExistingMatchingCard(c511000672.filter,tp,0x73,0x73,1,nil,e,tp,Duel.GetTurnCount()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511000672.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000672.filter,tp,0x73,0x73,nil,e,tp,Duel.GetTurnCount()) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<=g:GetCount()-1 then return end + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(ATTRIBUTE_FIRE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511000673.lua b/script/c511000673.lua new file mode 100644 index 00000000..0b0867f3 --- /dev/null +++ b/script/c511000673.lua @@ -0,0 +1,101 @@ +--Gagaga Style - Slash of Clarity +function c511000673.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000673.condition) + e1:SetTarget(c511000673.target) + e1:SetOperation(c511000673.activate) + c:RegisterEffect(e1) +end +function c511000673.filter(c,e,tp) + return c:IsSetCard(0x54) and c:IsFaceup() +end +function c511000673.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000673.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(c511000673.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000673.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000673.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(511000673,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetLabelObject(tc) + e2:SetCondition(c511000673.damcon) + e2:SetOperation(c511000673.damop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLE_START) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetOperation(c511000673.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end +function c511000673.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + local bc=tc:GetBattleTarget() + return eg:IsContains(tc) and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c511000673.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetLabelObject() + local bc=tc:GetBattleTarget() + Duel.SetTargetCard(bc) + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000673.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local bc=tc:GetBattleTarget() + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.Damage(1-tp,dam,REASON_EFFECT) +end +function c511000673.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + if tc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(tc:GetAttack()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetValue(tc:GetCode()) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + + end +end diff --git a/script/c511000674.lua b/script/c511000674.lua new file mode 100644 index 00000000..11890c97 --- /dev/null +++ b/script/c511000674.lua @@ -0,0 +1,73 @@ +--Raid Raptors - Rise Falcon +function c511000674.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_WINDBEAST),4,3) + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ATTACK_ALL) + e1:SetValue(c511000674.atkfilter) + e1:SetRange(LOCATION_MZONE) + c:RegisterEffect(e1) + --material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetDescription(aux.Stringid(511000674,0)) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c511000674.cost) + e2:SetTarget(c511000674.tg) + e2:SetOperation(c511000674.op) + c:RegisterEffect(e2) + --atklimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c511000674.bttg) + e3:SetValue(c511000674.btval) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e4) +end +function c511000674.atkfilter(e,c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511000674.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000674.filter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511000674.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000674.filter,tp,0,LOCATION_MZONE,1,nil) end +end +function c511000674.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511000674.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local atk=0 + local tc=g:GetFirst() + while tc do + atk=atk+tc:GetAttack() + tc=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511000674.bttg(e,c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=SUMMON_TYPE_SPECIAL +end +function c511000674.btval(e,c) + return c==e:GetHandler() +end diff --git a/script/c511000675.lua b/script/c511000675.lua new file mode 100644 index 00000000..680f2834 --- /dev/null +++ b/script/c511000675.lua @@ -0,0 +1,51 @@ +--Dark Rebellion Xyz Dragon +function c511000675.initial_effect(c) +--xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000675,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000675.cost) + e1:SetTarget(c511000675.target) + e1:SetOperation(c511000675.operation) + c:RegisterEffect(e1) +end +function c511000675.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000675.filter(c) + return c:IsFaceup() and c:IsLevelAbove(5) +end +function c511000675.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(c511000675.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000675.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000675.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 not tc:IsImmuneToEffect(e) then + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk/2) + tc:RegisterEffect(e1) + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(atk/2) + c:RegisterEffect(e2) + end + end +end diff --git a/script/c511000676.lua b/script/c511000676.lua new file mode 100644 index 00000000..9d14ce87 --- /dev/null +++ b/script/c511000676.lua @@ -0,0 +1,31 @@ +--G-Force +function c511000676.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000676.condition) + e1:SetTarget(c511000676.target) + e1:SetOperation(c511000676.activate) + c:RegisterEffect(e1) +end +function c511000676.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000676.filter(c,e,tp) + return c:IsSetCard(0x1034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000676.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000676.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511000676.activate(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 tc=Duel.SelectMatchingCard(tp,c511000676.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)>0 then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511000677.lua b/script/c511000677.lua new file mode 100644 index 00000000..6b6ef22c --- /dev/null +++ b/script/c511000677.lua @@ -0,0 +1,30 @@ +--E-Force +function c511000677.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000677.sptg) + e1:SetOperation(c511000677.spop) + c:RegisterEffect(e1) +end +function c511000677.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x1034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000677.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c511000677.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000677.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000677.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000677.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000678.lua b/script/c511000678.lua new file mode 100644 index 00000000..090a2dc8 --- /dev/null +++ b/script/c511000678.lua @@ -0,0 +1,42 @@ +--M-Force +function c511000678.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(c511000678.condition) + e1:SetTarget(c511000678.target) + e1:SetOperation(c511000678.activate) + c:RegisterEffect(e1) +end +function c511000678.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000678.filter(c) + return c:IsSetCard(0x1034) and c:IsFaceup() +end +function c511000678.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000678.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000678.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000678.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000678.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511000679.lua b/script/c511000679.lua new file mode 100644 index 00000000..7b79add5 --- /dev/null +++ b/script/c511000679.lua @@ -0,0 +1,53 @@ +--GEM Burst +function c511000679.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000679.cost) + e1:SetTarget(c511000679.target) + e1:SetOperation(c511000679.activate) + c:RegisterEffect(e1) +end +function c511000679.cfilter(c,code) + return c:IsCode(code) and c:IsAbleToRemoveAsCost() +end +function c511000679.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000679.cfilter,tp,LOCATION_GRAVE,0,1,nil,511000676) + and Duel.IsExistingMatchingCard(c511000679.cfilter,tp,LOCATION_GRAVE,0,1,nil,511000677) + and Duel.IsExistingMatchingCard(c511000679.cfilter,tp,LOCATION_GRAVE,0,1,nil,511000678) end + local tc1=Duel.GetFirstMatchingCard(c511000679.cfilter,tp,LOCATION_GRAVE,0,nil,511000676) + local tc2=Duel.GetFirstMatchingCard(c511000679.cfilter,tp,LOCATION_GRAVE,0,nil,511000677) + local tc3=Duel.GetFirstMatchingCard(c511000679.cfilter,tp,LOCATION_GRAVE,0,nil,511000678) + local g=Group.FromCards(tc1,tc2,tc3) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511000679.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_HAND,0,1,nil,0x1034) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_LEAVE_HAND,nil,1,tp,LOCATION_HAND) +end +function c511000679.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if ft<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_HAND,0,ft,ft,nil,0x1034) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.RaiseEvent(g,47408488,e,0,tp,0,0) + local d=Duel.GetMatchingGroupCount(Card.IsSetCard,tp,LOCATION_SZONE,0,nil,0x1034)*500 + Duel.Damage(1-tp,d,REASON_EFFECT) + end +end diff --git a/script/c511000680.lua b/script/c511000680.lua new file mode 100644 index 00000000..028722ac --- /dev/null +++ b/script/c511000680.lua @@ -0,0 +1,31 @@ +--Ice Age Panic +function c511000680.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000680.condition) + e1:SetTarget(c511000680.target) + e1:SetOperation(c511000680.operation) + c:RegisterEffect(e1) +end +function c511000680.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511000680.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_EARTH) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000680.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000680.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000680.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,c511000680.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000681.lua b/script/c511000681.lua new file mode 100644 index 00000000..5f3e989a --- /dev/null +++ b/script/c511000681.lua @@ -0,0 +1,26 @@ +--Ground Breaking +function c511000681.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000681.target) + e1:SetOperation(c511000681.activate) + c:RegisterEffect(e1) +end +function c511000681.filter(c) + return c:IsType(TYPE_SPIRIT) and c:IsAbleToHand() +end +function c511000681.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000681.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c511000681.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000681.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000682.lua b/script/c511000682.lua new file mode 100644 index 00000000..d86749af --- /dev/null +++ b/script/c511000682.lua @@ -0,0 +1,39 @@ +--Heat & Heal +function c511000682.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000682.target) + e1:SetOperation(c511000682.activate) + c:RegisterEffect(e1) +end +function c511000682.cfilter(c,rk) + return c:IsFaceup() and c:GetRank()=2 and Duel.SelectYesNo(tp,aux.Stringid(511000683,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local og=g:Select(tp,2,2,nil) + Duel.Overlay(tc,og) + end + end +end diff --git a/script/c511000684.lua b/script/c511000684.lua new file mode 100644 index 00000000..8eb0906c --- /dev/null +++ b/script/c511000684.lua @@ -0,0 +1,35 @@ +--Overlay Accel +function c511000684.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --chain attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000684.condition) + e2:SetCost(c511000684.cost) + e2:SetOperation(c511000684.operation) + c:RegisterEffect(e2) +end +function c511000684.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsType(TYPE_XYZ) +end +function c511000684.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:GetFirst():CheckRemoveOverlayCard(tp,1,REASON_COST) end + eg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511000684.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetEffectCount(EFFECT_EXTRA_ATTACK) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(ct+1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) +end diff --git a/script/c511000685.lua b/script/c511000685.lua new file mode 100644 index 00000000..7be986e7 --- /dev/null +++ b/script/c511000685.lua @@ -0,0 +1,56 @@ +--WRUM-ホープ・フォース +function c511000685.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000685.target) + e1:SetOperation(c511000685.activate) + c:RegisterEffect(e1) +end +function c511000685.filter1(c,e,tp) + local rk=c:GetRank() + return rk>0 and c:IsFaceup() and Duel.IsExistingMatchingCard(c511000685.filter2,tp,LOCATION_EXTRA,0,2,nil,rk,e,tp,c,c:GetCode()) + and c:IsCode(84013237) and c:GetOverlayGroup():GetCount()>=2 +end +function c511000685.filter2(c,rk,e,tp,mc,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return (c:GetRank()==rk+1 or c:GetRank()==rk+2) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511000685.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511000685.filter1(chkc,e,tp) end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingTarget(c511000685.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) and (not ect or math.min(ect,2)>=2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511000685.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) +end +function c511000685.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil and ect<2 then return end + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + local ou=tc:GetOverlayGroup() + if ou:GetCount()<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000685.filter2,tp,LOCATION_EXTRA,0,2,2,nil,tc:GetRank(),e,tp,tc,tc:GetCode()) + if Duel.SpecialSummonStep(g:GetFirst(),SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP)~=0 and + Duel.SpecialSummonStep(g:GetNext(),SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local ou1=ou:Select(tp,1,1,nil) + Duel.Overlay(g:GetFirst(),ou1) + ou=tc:GetOverlayGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local ou2=ou:Select(tp,1,1,ou1:GetFirst()) + Duel.Overlay(g:GetNext(),ou2) + g:GetFirst():CompleteProcedure() + g:GetNext():CompleteProcedure() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511000686.lua b/script/c511000686.lua new file mode 100644 index 00000000..4efce88d --- /dev/null +++ b/script/c511000686.lua @@ -0,0 +1,67 @@ +--RUM-ダーク・フォース +function c511000686.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511000686.condition) + e1:SetTarget(c511000686.target) + e1:SetOperation(c511000686.activate) + c:RegisterEffect(e1) +end +function c511000686.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return eg:GetCount()==1 and tc:IsControler(tp) and bc:IsReason(REASON_BATTLE) +end +function c511000686.filter2(c,rk,e,tp) + return c:GetRank()==rk + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511000686.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=eg:GetFirst() + local rk=tg:GetRank() + if chkc then return chkc==tg end + if chk==0 then + return tg:IsOnField() and tg:IsCanBeEffectTarget(e) and tg:IsAbleToGrave() + and Duel.IsExistingMatchingCard(c511000686.filter2,tp,LOCATION_EXTRA,0,1,nil,rk+1,e,tp) + and Duel.IsExistingMatchingCard(c511000686.filter2,tp,LOCATION_EXTRA,0,1,nil,rk+2,e,tp) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,tg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) +end +function c511000686.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + if Duel.SendtoGrave(tc,REASON_EFFECT)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c511000686.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank()+1,e,tp):GetFirst() + Duel.SpecialSummon(g1,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP_ATTACK) + local g2=Duel.SelectMatchingCard(tp,c511000686.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank()+2,e,tp):GetFirst() + Duel.SpecialSummon(g2,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + g1:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + g1:RegisterEffect(e2,true) + g1:CompleteProcedure() + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + g2:RegisterEffect(e3,true) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetReset(RESET_EVENT+0x1fe0000) + g2:RegisterEffect(e4,true) + g2:CompleteProcedure() +end diff --git a/script/c511000687.lua b/script/c511000687.lua new file mode 100644 index 00000000..a0d62d67 --- /dev/null +++ b/script/c511000687.lua @@ -0,0 +1,73 @@ +--�l�N���E�J�I�X +function c511000687.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000687.target) + e1:SetOperation(c511000687.activate) + c:RegisterEffect(e1) + if not c511000687.global_check then + c511000687.global_check=true + --register + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_TO_GRAVE) + ge2:SetOperation(c511000687.regop) + Duel.RegisterEffect(ge2,0) + end +end +function c511000687.filter1(c,e,tp) + return c:IsType(TYPE_XYZ) and c:GetFlagEffect(511000687)~=0 + and Duel.IsExistingMatchingCard(c511000687.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetRank()) +end +function c511000687.filter2(c,e,tp,rk) + return c:GetRank()==rk and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) +end +function c511000687.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000687.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000687.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511000687.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000687.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000687.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetRank()) + local tg=g:GetFirst() + if tg and Duel.SpecialSummonStep(tg,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fa0000) + tg:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tg:RegisterEffect(e2,true) + tg:CompleteProcedure() + Duel.SpecialSummonComplete() + end +end +function c511000687.regfilter(c) + return c:IsLocation(LOCATION_GRAVE) and not c:IsReason(REASON_RETURN) and c:IsType(TYPE_XYZ) and c:GetFlagEffect(511000687)==0 +end +function c511000687.regop(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local g=eg:Filter(c511000687.regfilter,nil) + if g:GetCount()>0 and ph>=0x08 and ph<=0x20 then + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511000687,RESET_EVENT+0x1fe0000,0,1) + tc=g:GetNext() + end + end +end diff --git a/script/c511000688.lua b/script/c511000688.lua new file mode 100644 index 00000000..4fa83a90 --- /dev/null +++ b/script/c511000688.lua @@ -0,0 +1,17 @@ +--Ice Knight +function c511000688.initial_effect(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_ONFIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511000688.atkval) + c:RegisterEffect(e2) +end +function c511000688.filter(c) + return c:IsFaceup() and c:IsRace(RACE_AQUA) +end +function c511000688.atkval(e,c) + return Duel.GetMatchingGroupCount(c511000688.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*400 +end diff --git a/script/c511000689.lua b/script/c511000689.lua new file mode 100644 index 00000000..2469df32 --- /dev/null +++ b/script/c511000689.lua @@ -0,0 +1,56 @@ +--Rose Whip +function c511000689.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(c511000689.target) + e1:SetOperation(c511000689.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511000689.atkval) + c:RegisterEffect(e2) + --def up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(c511000689.atkval) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511000689.eqlimit) + c:RegisterEffect(e4) +end +function c511000689.eqlimit(e,c) + return c:IsCode(76812113) +end +function c511000689.filter(c) + return c:IsFaceup() and c:IsCode(76812113) +end +function c511000689.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000689.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000689.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000689.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000689.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 c511000689.filter(c) + return c:IsFaceup() and c:IsCode(76812113) +end +function c511000689.atkval(e,c) + return Duel.GetMatchingGroupCount(c511000689.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*300 +end diff --git a/script/c511000690.lua b/script/c511000690.lua new file mode 100644 index 00000000..e2153966 --- /dev/null +++ b/script/c511000690.lua @@ -0,0 +1,67 @@ +--虹色の祝福 +function c511000690.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(c511000690.target) + e1:SetOperation(c511000690.operation) + c:RegisterEffect(e1) + --Direct + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCost(c511000690.cost) + e2:SetTarget(c511000690.dirtar) + e2:SetOperation(c511000690.diract) + 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(c511000690.eqlimit) + c:RegisterEffect(e3) +end +function c511000690.eqlimit(e,c) + return c:IsCode(40640057) +end +function c511000690.filter(c) + return c:IsFaceup() and c:IsCode(40640057) +end +function c511000690.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000690.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000690.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000690.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000690.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 c511000690.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then return eq:IsReleasable() end + Duel.Release(eq,REASON_COST) +end +function c511000690.dirtar(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,nil) end +end +function c511000690.diract(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511000691.lua b/script/c511000691.lua new file mode 100644 index 00000000..53fe0460 --- /dev/null +++ b/script/c511000691.lua @@ -0,0 +1,25 @@ +--エクスチェンジ +function c511000691.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000691.target) + e1:SetOperation(c511000691.activate) + c:RegisterEffect(e1) +end +function c511000691.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,e:GetHandler()) and Duel.IsExistingMatchingCard(nil,tp,0,LOCATION_HAND,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_ATOHAND,nil,1-tp,tp,nil) +end +function c511000691.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ht=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + local g1=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local g2=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + Duel.ConfirmCards(tp,g2) + Duel.ConfirmCards(1-tp,g1) + Duel.SendtoHand(g1,1-tp,REASON_EFFECT) + Duel.SendtoHand(g2,tp,REASON_EFFECT) +end diff --git a/script/c511000692.lua b/script/c511000692.lua new file mode 100644 index 00000000..c61094d3 --- /dev/null +++ b/script/c511000692.lua @@ -0,0 +1,66 @@ +--Brave Attack +function c511000692.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_ATKCHANGE) + e1:SetCost(c511000692.cost) + e1:SetTarget(c511000692.tar) + e1:SetOperation(c511000692.activate) + c:RegisterEffect(e1) +end +function c511000692.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000692.filter(c) + return c:IsAttackPos() and c:IsFaceup() +end +function c511000692.tar(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and c511000692.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000692.filter,tp,LOCATION_MZONE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000692.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000692.activate(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + local dg=Duel.GetMatchingGroup(c511000692.dfilter,tp,LOCATION_MZONE,0,tc) + local val=dg:GetSum(Card.GetAttack) + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(val) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c511000692.desop) + Duel.RegisterEffect(e2,tp) + if Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)==0 then + Duel.Damage(1-tp,tc:GetAttack(),REASON_BATTLE) + else + local g=Duel.SelectMatchingCard(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) + local tg=g:GetFirst() + Duel.CalculateDamage(tc,tg) + end + end +end +function c511000692.dfilter(c) + return c:IsAttackPos() and c:IsFaceup() and c:IsDestructable() +end +function c511000692.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000692.dfilter,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511000693.lua b/script/c511000693.lua new file mode 100644 index 00000000..15533092 --- /dev/null +++ b/script/c511000693.lua @@ -0,0 +1,93 @@ +--Hand Control +function c511000693.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000693.target) + e1:SetOperation(c511000693.operation) + c:RegisterEffect(e1) + if not c511000693.global_check then + c511000693.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000693.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000693.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000693.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + e:GetHandler():SetHint(CHINT_CARD,ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c511000693.operation(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,ac) + local tc=g:GetFirst() + if tc then + local te=tc:GetActivateEffect() + if te then + local tpe=tc:GetType() + local con=te:GetCondition() + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + if (con and not con(te,1-tp,eg,ep,ev,re,r,rp)) or (co and not co(te,1-tp,eg,ep,ev,re,r,rp,0)) or (tg and not tg(te,1-tp,eg,ep,ev,re,r,rp,0)) + or (not tc:IsType(TYPE_FIELD) and Duel.GetLocationCount(1-tp,LOCATION_SZONE)<=0) then return end + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,1-tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,1-tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,1-tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,1-tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + else + if tc:IsSummonable(true,nil) then + Duel.Summon(1-tp,tc,true,nil) + end + end + end +end diff --git a/script/c511000694.lua b/script/c511000694.lua new file mode 100644 index 00000000..5184e4d0 --- /dev/null +++ b/script/c511000694.lua @@ -0,0 +1,94 @@ +--Excalibur +function c511000694.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(c511000694.target) + e1:SetOperation(c511000694.operation) + c:RegisterEffect(e1) + --double original atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000694.atkop) + c:RegisterEffect(e2) + --Destroy on Draw + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DRAW) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511000694.ctop) + c:RegisterEffect(e3) + --Equip Limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) + --Skip Draw Phase + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(1,0) + e5:SetCode(EFFECT_SKIP_DP) + c:RegisterEffect(e5) + --check for doubling + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(511000694) + c:RegisterEffect(e6) +end +function c511000694.filter(c) + return c:IsFaceup() +end +function c511000694.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000694.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000694.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000694.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000694.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 c511000694.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if ep~=c:GetControler() then return end + Duel.Destroy(c,REASON_EFFECT) +end +function c511000694.chkfilter(c,eq) + local ec=c:GetEquipTarget() + return c:IsHasEffect(511000694) and ec and ec==eq and not c:IsDisabled() +end +function c511000694.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=c:GetEquipTarget() + local g=Duel.GetMatchingGroup(c511000694.chkfilter,tp,LOCATION_SZONE,LOCATION_SZONE,c,eq) + if eq and c:GetFlagEffect(511000695)==0 then + c:ResetEffect(RESET_DISABLE,RESET_EVENT) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511000695,RESET_EVENT+0x1ff0000,0,0) + tc=g:GetNext() + end + local atk=eq:GetBaseAttack() + for i=1,g:GetCount()+1 do + atk=atk*2 + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511000695.lua b/script/c511000695.lua new file mode 100644 index 00000000..d2ca9efe --- /dev/null +++ b/script/c511000695.lua @@ -0,0 +1,52 @@ +--インセクト女王 +function c511000695.initial_effect(c) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511000695.value) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetOperation(c511000695.regop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000695,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCountLimit(1) + e4:SetCondition(c511000695.spcon) + e4:SetTarget(c511000695.sptg) + e4:SetOperation(c511000695.spop) + c:RegisterEffect(e4) +end +function c511000695.filter(c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) +end +function c511000695.value(e,c) + return Duel.GetMatchingGroupCount(c511000695.filter,0,LOCATION_MZONE,LOCATION_MZONE,nil)*400 +end +function c511000695.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511000695,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511000695.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511000695)~=0 +end +function c511000695.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000695.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511000696,0,0x4011,1200,0,4,RACE_INSECT,ATTRIBUTE_EARTH) then return end + local token=Duel.CreateToken(tp,511000696) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) +end diff --git a/script/c511000697.lua b/script/c511000697.lua new file mode 100644 index 00000000..c5b39612 --- /dev/null +++ b/script/c511000697.lua @@ -0,0 +1,95 @@ +--Emperor's Armor +function c511000697.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(c511000697.target) + e1:SetOperation(c511000697.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) + --Attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_SET_ATTACK) + e3:SetCondition(c511000697.atkcon) + e3:SetValue(c511000697.atkval) + c:RegisterEffect(e3) + --Save Monster + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetTarget(c511000697.destg) + e4:SetOperation(c511000697.desop) + c:RegisterEffect(e4) +end +function c511000697.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000697.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 c511000697.atkcon(e) + local eq=e:GetHandler():GetEquipTarget() + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and (Duel.GetAttacker()==eq or Duel.GetAttackTarget()==eq) and Duel.GetAttackTarget()~=nil +end +function c511000697.atkval(e,c) + local eq=e:GetHandler():GetEquipTarget() + return eq:GetBattleTarget():GetAttack() +end +function c511000697.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tg=c:GetEquipTarget() + if chk==0 then return c and not c:IsStatus(STATUS_DESTROY_CONFIRMED) + and tg and tg:IsReason(REASON_BATTLE) end + return Duel.SelectYesNo(tp,aux.Stringid(511000697,0)) +end +function c511000697.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=c:GetEquipTarget() + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) + local bt=tg:GetBattleTarget() + local ph=Duel.GetCurrentPhase() + if Duel.GetTurnPlayer()==tp and ph>=0x08 and ph<=0x20 and Duel.GetTurnPlayer()==tp then + if Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,bt) and Duel.SelectYesNo(tp,aux.Stringid(511000697,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,bt):GetFirst() + local atk1=tg:GetAttack() + local atk2=g:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(atk2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tg:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetValue(atk1) + e2:SetReset(RESET_EVENT+0x1fe0000) + g:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + tg:RegisterEffect(e3) + end + end +end diff --git a/script/c511000698.lua b/script/c511000698.lua new file mode 100644 index 00000000..e188cc59 --- /dev/null +++ b/script/c511000698.lua @@ -0,0 +1,93 @@ +--Dimension Xyz +function c511000698.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000698.condition) + e1:SetTarget(c511000698.target) + e1:SetOperation(c511000698.operation) + c:RegisterEffect(e1) +end +function c511000698.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=1000 +end +function c511000698.filter(c,e,tp) + return Duel.IsExistingMatchingCard(c511000698.filter2,tp,0x1E,0,2,c,c:GetLevel(),c:GetCode()) + and Duel.IsExistingMatchingCard(c511000698.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetLevel()) +end +function c511000698.filter2(c,lv,code) + return c:GetLevel()==lv and c:IsCode(code) +end +function c511000698.xyzfilter(c,e,tp,lv) + return c:GetRank()==lv and (c.minxyzct==3 or c.maxxyzct>=3) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511000698.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000698.filter,tp,0x1E,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000698.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g1=Duel.SelectMatchingCard(tp,c511000698.filter,tp,0x1E,0,1,1,nil,e,tp) + local gx=g1:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g2=Duel.SelectMatchingCard(tp,c511000698.filter2,tp,0x1E,0,2,2,gx,gx:GetLevel(),gx:GetCode()) + g1:Merge(g2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local x=Duel.SelectMatchingCard(tp,c511000698.xyzfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,gx:GetLevel()) + local xyz=x:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_EXTRA) + e1:SetOperation(c511000698.xyzop) + e1:SetReset(RESET_CHAIN) + e1:SetValue(SUMMON_TYPE_XYZ) + e1:SetLabelObject(g1) + xyz:RegisterEffect(e1) + Duel.XyzSummon(tp,xyz,nil) +end +function c511000698.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og) + local mat=e:GetLabelObject() + c:SetMaterial(mat) + Duel.Overlay(c,mat) +end diff --git a/script/c511000699.lua b/script/c511000699.lua new file mode 100644 index 00000000..2b8092c8 --- /dev/null +++ b/script/c511000699.lua @@ -0,0 +1,47 @@ +--Big Return +function c511000699.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000699.target) + e1:SetOperation(c511000699.activate) + c:RegisterEffect(e1) +end +function c511000699.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) +end +function c511000699.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAINING) + e1:SetOperation(c511000699.apply) + e1:SetCountLimit(1) + e1:SetLabelObject(tc) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c511000699.apply(e,tp,eg,ep,ev,re,r,rp) + if re:GetHandler()==e:GetLabelObject() then + re:SetCountLimit(1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c511000699.revert) + e1:SetLabelObject(re) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c511000699.revert(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetCountLimit(1) +end diff --git a/script/c511000700.lua b/script/c511000700.lua new file mode 100644 index 00000000..c8f88a4e --- /dev/null +++ b/script/c511000700.lua @@ -0,0 +1,135 @@ +--Nightmare Xyz +function c511000700.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(TIMING_END_PHASE) + e1:SetCondition(c511000700.condition) + e1:SetTarget(c511000700.target) + e1:SetOperation(c511000700.activate) + c:RegisterEffect(e1) + if not c511000700.global_check then + c511000700.global_check=true + c511000700[0]=true + c511000700[1]=true + --check + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511000700.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511000700.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511000700.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END and c511000700[tp] +end +function c511000700.cfilter(c) + return c:IsSetCard(0x48) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) + and bit.band(c:GetReason(),REASON_DESTROY)==REASON_DESTROY +end +function c511000700.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000700.cfilter,nil) + local tc=g:GetFirst() + while tc do + c511000700[tc:GetPreviousControler()]=true + tc=g:GetNext() + end +end +function c511000700.clear(e,tp,eg,ep,ev,re,r,rp) + c511000700[0]=false + c511000700[1]=false +end +function c511000700.filter(c,e,tp) + local ct=c.minxyzct + return c:GetRank()<=4 and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_FIEND) and c:IsType(TYPE_XYZ) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>ct-1 + and Duel.IsExistingMatchingCard(c511000700.filter2,tp,LOCATION_GRAVE,0,ct,nil,e,tp) +end +function c511000700.filter2(c,e,tp) + return c:IsAttribute(ATTRIBUTE_DARK) and c:GetLevel()>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000700.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_EXTRA) and c511000700.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000700.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000700.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000700.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=tc.minxyzct + local ct2=tc.maxxyzct + if ft0 then + local tcx=g:GetFirst() + while tcx do + Duel.SpecialSummonStep(tcx,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetRank()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tcx:RegisterEffect(e1) + tcx=g:GetNext() + end + Duel.SpecialSummonComplete() + Duel.BreakEffect() + tc:SetMaterial(g) + Duel.Overlay(tc,g) + Duel.SpecialSummon(tc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + end + end +end diff --git a/script/c511000701.lua b/script/c511000701.lua new file mode 100644 index 00000000..3aa1d525 --- /dev/null +++ b/script/c511000701.lua @@ -0,0 +1,29 @@ +--Xyz Barrier +function c511000701.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_PHASE,0x1c0+TIMING_BATTLE_PHASE) + e1:SetTarget(c511000701.target) + e1:SetOperation(c511000701.activate) + c:RegisterEffect(e1) +end +function c511000701.filter(c) + return c:IsType(TYPE_XYZ) +end +function c511000701.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000701.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511000701.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511000701.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + g:GetFirst():RegisterEffect(e2) + end +end diff --git a/script/c511000702.lua b/script/c511000702.lua new file mode 100644 index 00000000..8269b8fa --- /dev/null +++ b/script/c511000702.lua @@ -0,0 +1,27 @@ +--Blue-Eyes Statue Dragon +function c511000702.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000702.spcon) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e4) +end +function c511000702.spcon(e,c) + if c==nil then return true end + return Duel.IsEnvironment(511000706) and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511000703.lua b/script/c511000703.lua new file mode 100644 index 00000000..f02bcfc9 --- /dev/null +++ b/script/c511000703.lua @@ -0,0 +1,27 @@ +--Statue Dark Magician Girl +function c511000703.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000703.spcon) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e4) +end +function c511000703.spcon(e,c) + if c==nil then return true end + return Duel.IsEnvironment(511000706) and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511000704.lua b/script/c511000704.lua new file mode 100644 index 00000000..f2a6e30c --- /dev/null +++ b/script/c511000704.lua @@ -0,0 +1,27 @@ +--Statue Dark Magician +function c511000704.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000704.spcon) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e4) +end +function c511000704.spcon(e,c) + if c==nil then return true end + return Duel.IsEnvironment(511000706) and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511000705.lua b/script/c511000705.lua new file mode 100644 index 00000000..4bb11833 --- /dev/null +++ b/script/c511000705.lua @@ -0,0 +1,18 @@ +--Blue-Eyes Ultimate Statue Dragon +function c511000705.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeRep(c,511000702,3,true,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e4) +end diff --git a/script/c511000706.lua b/script/c511000706.lua new file mode 100644 index 00000000..fc65cdb9 --- /dev/null +++ b/script/c511000706.lua @@ -0,0 +1,19 @@ +--Statue Zone +function c511000706.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511000706.disable) + e2:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e2) +end +function c511000706.disable(e,c) + return c:IsSetCard(0x21e) +end diff --git a/script/c511000707.lua b/script/c511000707.lua new file mode 100644 index 00000000..811eed50 --- /dev/null +++ b/script/c511000707.lua @@ -0,0 +1,27 @@ +--Red-Eyes Statue Dragon +function c511000707.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000707.spcon) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e4) +end +function c511000707.spcon(e,c) + if c==nil then return true end + return Duel.IsEnvironment(511000706) and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511000708.lua b/script/c511000708.lua new file mode 100644 index 00000000..1bf101e2 --- /dev/null +++ b/script/c511000708.lua @@ -0,0 +1,83 @@ +--Armament Reincarnation +function c511000708.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000708.sptg) + e1:SetOperation(c511000708.spop) + c:RegisterEffect(e1) +end +function c511000708.filter(c,e,tp) + return c:IsType(TYPE_EQUIP) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511000708.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ft=0 + if Duel.GetLocationCount(tp,LOCATION_MZONE)>=Duel.GetLocationCount(tp,LOCATION_SZONE) then + ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + else + ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + end + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000708.spfilter(chkc,e,tp) end + if chk==0 then return ft>0 and Duel.IsExistingTarget(c511000708.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000708.filter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511000708.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=0 + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>=Duel.GetLocationCount(tp,LOCATION_SZONE) then + ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + else + ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + sg=sg:Select(tp,ft,ft,nil) + end + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) + local e0=Effect.CreateEffect(c) + e0:SetCode(EFFECT_CHANGE_TYPE) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e0:SetReset(RESET_EVENT+0x1fc0000) + e0:SetValue(TYPE_MONSTER) + tc:RegisterEffect(e0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(500) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local code=tc:GetOriginalCode() + local token=Duel.CreateToken(tp,code,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + Duel.MoveToField(token,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Equip(tp,token,tc) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetOperation(c511000708.leaveop) + token:RegisterEffect(e3,true) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end +function c511000708.leaveop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_RULE) +end diff --git a/script/c511000709.lua b/script/c511000709.lua new file mode 100644 index 00000000..2785614e --- /dev/null +++ b/script/c511000709.lua @@ -0,0 +1,28 @@ +--Disarm +function c511000709.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000709.target) + e1:SetOperation(c511000709.activate) + c:RegisterEffect(e1) +end +function c511000709.filter(c) + return c:IsDestructable() and c:IsFacedown() +end +function c511000709.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511000709.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000709.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000709.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000709.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000710.lua b/script/c511000710.lua new file mode 100644 index 00000000..0464de9b --- /dev/null +++ b/script/c511000710.lua @@ -0,0 +1,35 @@ +--Hand-to-Hand Combat +function c511000710.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000710.activate) + c:RegisterEffect(e1) +end +function c511000710.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAINING) + e1:SetOperation(c511000710.op) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000710.op(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + if re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainDisablable(ev) and ph>=PHASE_BATTLE and ph<=PHASE_DAMAGE_CAL then + Duel.NegateEffect(ev) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + eg:GetFirst():RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + eg:GetFirst():RegisterEffect(e2) + end +end diff --git a/script/c511000711.lua b/script/c511000711.lua new file mode 100644 index 00000000..8630bddb --- /dev/null +++ b/script/c511000711.lua @@ -0,0 +1,18 @@ +--Speed Jaguar +function c511000711.initial_effect(c) + --deepen damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetCondition(c511000711.dcon) + e1:SetOperation(c511000711.dop) + c:RegisterEffect(e1) +end +function c511000711.dcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep~=tp and c==Duel.GetAttacker() +end +function c511000711.dop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end diff --git a/script/c511000712.lua b/script/c511000712.lua new file mode 100644 index 00000000..b67a0e00 --- /dev/null +++ b/script/c511000712.lua @@ -0,0 +1,43 @@ +--Greandier +function c511000712.initial_effect(c) + --gain and multiattack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCountLimit(1) + e1:SetDescription(aux.Stringid(511000712,0)) + e1:SetCondition(c511000712.con) + e1:SetOperation(c511000712.op) + c:RegisterEffect(e1) +end +function c511000712.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c==Duel.GetAttacker() and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511000712.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + 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:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_FIRST_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MUST_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_ATTACK_ALL) + e4:SetValue(1) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e4) +end diff --git a/script/c511000713.lua b/script/c511000713.lua new file mode 100644 index 00000000..4fedb448 --- /dev/null +++ b/script/c511000713.lua @@ -0,0 +1,44 @@ +--Rear-Guard Action +function c511000713.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511000713.condition) + e1:SetTarget(c511000713.target) + e1:SetOperation(c511000713.activate) + c:RegisterEffect(e1) +end +function c511000713.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END and Duel.GetTurnPlayer()~=tp +end +function c511000713.cfilter(c,atk) + return c:IsFaceup() and c:GetAttack()0 and ep~=Duel.GetTurnPlayer() and e:GetLabelObject():GetLabel()==1 +end +function c511000714.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,Duel.GetTurnPlayer(),5) +end +function c511000714.op(e,tp,eg,ep,ev,re,r,rp) + Duel.DiscardDeck(Duel.GetTurnPlayer(),5,REASON_EFFECT) +end diff --git a/script/c511000715.lua b/script/c511000715.lua new file mode 100644 index 00000000..49e30b4a --- /dev/null +++ b/script/c511000715.lua @@ -0,0 +1,38 @@ +--Kabuki Stage - The Rough Seas +function c511000715.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_REPEAT+EFFECT_FLAG_BOTH_SIDE) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000715.condition) + e3:SetTarget(c511000715.target) + e3:SetOperation(c511000715.operation) + c:RegisterEffect(e3) +end +function c511000715.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c511000715.filter(c) + return c:GetLevel()>=5 and c:IsAbleToHand() +end +function c511000715.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000715.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000715.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000715.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000716.lua b/script/c511000716.lua new file mode 100644 index 00000000..bd67689d --- /dev/null +++ b/script/c511000716.lua @@ -0,0 +1,128 @@ +--Kabuki Stage - Big Bridge +function c511000716.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000716,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e2:SetCountLimit(1) + e2:SetCondition(c511000716.con) + e2:SetTarget(c511000716.tg) + e2:SetOperation(c511000716.op) + c:RegisterEffect(e2) + --activate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000716,1)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511000716.accost) + e3:SetTarget(c511000716.actg) + e3:SetOperation(c511000716.acop) + c:RegisterEffect(e3) + if not c511000716.global_check then + c511000716.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000716.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000716.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000716.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp +end +function c511000716.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000716.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000716.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000716.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000716.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_ATTACK) + end + end +end +function c511000716.accost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000716.filter(c) + return c:CheckActivateEffect(false,false,false)~=nil and c:IsSetCard(0x203) +end +function c511000716.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000716.filter,tp,LOCATION_DECK,0,1,nil) end +end +function c511000716.acop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,c511000716.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511000717.lua b/script/c511000717.lua new file mode 100644 index 00000000..a386e00b --- /dev/null +++ b/script/c511000717.lua @@ -0,0 +1,41 @@ +--Dramatic Pose +function c511000717.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000717.target) + e1:SetOperation(c511000717.operation) + c:RegisterEffect(e1) +end +function c511000717.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetTargetPlayer(tp) +end +function c511000717.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local ac=g:GetFirst() + while ac do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + ac:RegisterEffect(e1) + ac=g:GetNext() + end + end +end diff --git a/script/c511000718.lua b/script/c511000718.lua new file mode 100644 index 00000000..477486dd --- /dev/null +++ b/script/c511000718.lua @@ -0,0 +1,131 @@ +--Kabuki Stage - Cherry Blossom Mountain +function c511000718.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000718,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000718.target) + e2:SetOperation(c511000718.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --activate + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000718,1)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCost(c511000718.accost) + e4:SetTarget(c511000718.actg) + e4:SetOperation(c511000718.acop) + c:RegisterEffect(e4) + --random attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + e5:SetOperation(c511000718.atkop) + c:RegisterEffect(e5) + if not c511000718.global_check then + c511000718.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000718.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000718.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000718.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(Card.IsPosition,1,nil,POS_FACEUP_DEFENSE) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_POSITION,eg,eg:GetCount(),0,0) +end +function c511000718.operation(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsPosition,nil,POS_FACEUP_DEFENSE) + Duel.ChangePosition(g,POS_FACEUP_ATTACK) +end +function c511000718.accost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000718.filter(c) + return c:CheckActivateEffect(false,false,false)~=nil and c:IsSetCard(0x203) +end +function c511000718.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000718.filter,tp,LOCATION_DECK,0,1,nil) end +end +function c511000718.acop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,c511000718.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end +function c511000718.atkop(e,tp,eg,ep,ev,re,r,rp) + local ats=eg:GetFirst() + local at=Duel.GetAttackTarget() + if at~=nil then + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,ats):RandomSelect(tp,1) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end diff --git a/script/c511000719.lua b/script/c511000719.lua new file mode 100644 index 00000000..93382125 --- /dev/null +++ b/script/c511000719.lua @@ -0,0 +1,27 @@ +--Bacchus the Dizzy Deity +function c511000719.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000719,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511000719.atkcon) + e1:SetOperation(c511000719.atkop) + c:RegisterEffect(e1) +end +function c511000719.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511000719.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(300) + c:RegisterEffect(e1) +end diff --git a/script/c511000720.lua b/script/c511000720.lua new file mode 100644 index 00000000..b23ae773 --- /dev/null +++ b/script/c511000720.lua @@ -0,0 +1,27 @@ +--Big Vintage Magna Mutton +function c511000720.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000720,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511000720.atkcon) + e1:SetOperation(c511000720.atkop) + c:RegisterEffect(e1) +end +function c511000720.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511000720.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(1000) + c:RegisterEffect(e1) +end diff --git a/script/c511000721.lua b/script/c511000721.lua new file mode 100644 index 00000000..f556ab83 --- /dev/null +++ b/script/c511000721.lua @@ -0,0 +1,29 @@ +--Foaming Beauty +function c511000721.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000721,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c511000721.target) + e1:SetOperation(c511000721.operation) + c:RegisterEffect(e1) +end +function c511000721.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 true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000721.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000722.lua b/script/c511000722.lua new file mode 100644 index 00000000..4c44fb21 --- /dev/null +++ b/script/c511000722.lua @@ -0,0 +1,47 @@ +--Bacchus Banquet +function c511000722.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000722.condition) + c:RegisterEffect(e1) + --selfdestroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c511000722.descon) + c:RegisterEffect(e2) + --Deflect + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPSUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000722.con) + e3:SetOperation(c511000722.op) + c:RegisterEffect(e3) +end +function c511000722.con(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst():GetLevel()<=7 +end +function c511000722.op(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511000722.cfilter(c) + return c:IsFaceup() and c:IsCode(511000720) +end +function c511000722.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000722.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000722.descon(e) + return not Duel.IsExistingMatchingCard(c511000722.cfilter,e:GetHandler():GetControler(),LOCATION_ONFIELD,0,1,nil) +end diff --git a/script/c511000723.lua b/script/c511000723.lua new file mode 100644 index 00000000..1d1cc0a8 --- /dev/null +++ b/script/c511000723.lua @@ -0,0 +1,77 @@ +--Glory Level Talisman +function c511000723.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(c511000723.target) + e1:SetOperation(c511000723.operation) + c:RegisterEffect(e1) +end +function c511000723.filter(c) + return c:IsFaceup() and c:IsLevelAbove(5) +end +function c511000723.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000723.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000723.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511000723.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000723.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --untargetable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511000723.tgcon) + c:RegisterEffect(e1) + --be target + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000723,0)) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000723.cbcon) + e2:SetOperation(c511000723.cbop) + e2:SetReset(RESET_EVENT+0x1fe0000) + 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(c511000723.eqlimit) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511000723.tgfilter(c,lv) + return c:IsFaceup() and c:IsLevelAbove(lv+1) +end +function c511000723.tgcon(e) + local tp=e:GetHandler():GetControler() + local lv=e:GetHandler():GetEquipTarget():GetLevel() + return not Duel.IsExistingMatchingCard(c511000723.tgfilter,tp,0,LOCATION_MZONE,1,nil,lv) +end +function c511000723.eqlimit(e,c) + return c:IsLevelAbove(5) +end +function c511000723.cbcon(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + local bt=eg:GetFirst() + local lv=eq:GetLevel() + return eq==bt and Duel.GetAttacker():GetLevel()0 and Duel.IsExistingMatchingCard(c511000725.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000725.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000725.filter,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 diff --git a/script/c511000726.lua b/script/c511000726.lua new file mode 100644 index 00000000..c95fb22f --- /dev/null +++ b/script/c511000726.lua @@ -0,0 +1,34 @@ +--House of Sand +function c511000726.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DECKDES+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511000726.condition) + e2:SetTarget(c511000726.target) + e2:SetOperation(c511000726.operation) + c:RegisterEffect(e2) +end +function c511000726.cfilter(c) + return c:IsPreviousLocation(LOCATION_DECK) +end +function c511000726.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000726.cfilter,1,nil) +end +function c511000726.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,eg:GetFirst():GetControler(),3) +end +function c511000726.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoHand(e:GetHandler(),eg:GetFirst():GetControler(),REASON_EFFECT) + Duel.BreakEffect() + Duel.DiscardDeck(eg:GetFirst():GetControler(),3,REASON_EFFECT) +end diff --git a/script/c511000727.lua b/script/c511000727.lua new file mode 100644 index 00000000..0ca1aa37 --- /dev/null +++ b/script/c511000727.lua @@ -0,0 +1,58 @@ +--Loss of Strength +function c511000727.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000727.target) + e1:SetOperation(c511000727.activate) + c:RegisterEffect(e1) +end +function c511000727.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000727.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fc0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fc0000) + tc:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c511000727.dirtg) + e4:SetReset(RESET_EVENT+0x1fc0000) + tc:RegisterEffect(e4) + tc:RegisterFlagEffect(511000727,RESET_EVENT+0x1fe0000,0,1) + end +end +function c511000727.dirfilter(c) + return c:GetFlagEffect(511000727)==0 +end +function c511000727.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511000727.dirfilter,c:GetControler(),0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511000728.lua b/script/c511000728.lua new file mode 100644 index 00000000..4e91780d --- /dev/null +++ b/script/c511000728.lua @@ -0,0 +1,39 @@ +--Level Award +function c511000728.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000728.target) + e1:SetOperation(c511000728.activate) + c:RegisterEffect(e1) +end +function c511000728.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511000728.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000728.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511000728.activate(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511000728.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local t={} + local i=1 + local p=1 + local lv=tc:GetLevel() + for i=1,8 do + if lv~=i then t[p]=i p=p+1 end + end + t[p]=nil + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000728,0)) + local ac=Duel.AnnounceNumber(tp,table.unpack(t)) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(ac) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000729.lua b/script/c511000729.lua new file mode 100644 index 00000000..22d83770 --- /dev/null +++ b/script/c511000729.lua @@ -0,0 +1,73 @@ +--Berserk Mode +function c511000729.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000729.target) + e1:SetOperation(c511000729.activate) + c:RegisterEffect(e1) +end +function c511000729.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil) end + local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511000729.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.ChangePosition(g,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) + local ct=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil):GetCount() + local atk=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil):RandomSelect(tp,ct) + local tc1=atk:GetFirst() + while tc1 do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_CHAIN) + e1:SetValue(1) + tc1:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_NO_BATTLE_DAMAGE) + e2:SetReset(RESET_CHAIN) + e2:SetValue(1) + tc1:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetReset(RESET_CHAIN) + e3:SetValue(1) + tc1:RegisterEffect(e3) + tc1=atk:GetNext() + end + tc1=atk:GetFirst() + while tc1 do + local def=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,tc1):RandomSelect(tp,ct-1) + local tc2=def:GetFirst() + while tc2 do + Duel.CalculateDamage(tc1,tc2) + if tc1:GetAttack()>tc2:GetAttack() then + tc2:RegisterFlagEffect(511000729,RESET_CHAIN,0,1) + local dif=tc1:GetAttack()-tc2:GetAttack() + Duel.Damage(tc2:GetControler(),dif,REASON_BATTLE) + Duel.RaiseSingleEvent(tc1,EVENT_BATTLE_DAMAGE,e,REASON_EFFECT,0,1-tp,dif) + elseif tc1:GetAttack()0 +end diff --git a/script/c511000730.lua b/script/c511000730.lua new file mode 100644 index 00000000..2d426187 --- /dev/null +++ b/script/c511000730.lua @@ -0,0 +1,50 @@ +--Chronic Déjà Vu +function c511000730.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511000730.condition) + e1:SetTarget(c511000730.target) + e1:SetOperation(c511000730.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000730.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511000730.filter(c,tp) + return c:IsFaceup() and c:GetSummonPlayer()~=tp +end +function c511000730.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511000730.filter,1,nil,tp) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,eg:GetCount(),0,0) +end +function c511000730.filter2(c,e,tp) + return c:IsFaceup() and c:GetSummonPlayer()~=tp and c:IsRelateToEffect(e) +end +function c511000730.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000730.filter2,nil,e,tp) + local tc=g:GetFirst() + while tc do + local code=tc:GetOriginalCode() + local token=Duel.CreateToken(tp,code) + Duel.SpecialSummonStep(token,0,tp,tp,true,false,tc:GetPosition()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_MONSTER) + token:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511000731.lua b/script/c511000731.lua new file mode 100644 index 00000000..dbb5d72b --- /dev/null +++ b/script/c511000731.lua @@ -0,0 +1,43 @@ +--Neon Laser Blaster +function c511000731.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(c511000731.target) + e1:SetOperation(c511000731.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + c:RegisterEffect(e2) + --Pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511000731.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 c511000731.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 diff --git a/script/c511000732.lua b/script/c511000732.lua new file mode 100644 index 00000000..ff86c8e4 --- /dev/null +++ b/script/c511000732.lua @@ -0,0 +1,35 @@ +--Power Connection +function c511000732.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000732.target) + e1:SetOperation(c511000732.operation) + c:RegisterEffect(e1) +end +function c511000732.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000732.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511000732.filter1(c) + local ct=Duel.GetMatchingGroupCount(c511000732.filter2,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,c:GetRace()) + return c:IsFaceup() and ct>0 +end +function c511000732.filter2(c,race) + return c:IsFaceup() and c:GetRace()==race +end +function c511000732.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000732.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local ct=Duel.GetMatchingGroupCount(c511000732.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,tc,tc:GetRace())*500 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(ct) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511000733.lua b/script/c511000733.lua new file mode 100644 index 00000000..5d879e9c --- /dev/null +++ b/script/c511000733.lua @@ -0,0 +1,68 @@ +--Nihilistic Summoning Technique +function c511000733.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000733.target) + e1:SetOperation(c511000733.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511000733.desop) + c:RegisterEffect(e2) +end +function c511000733.filter(c,e,tp) + return c:IsFaceup() and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000733.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c511000733.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000733.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000733.filter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000733.eqlimit(e,c) + return e:GetOwner()==c +end +function c511000733.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511000733.eqlimit) + c:RegisterEffect(e1) + --Atk Change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetValue(0) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --Pos limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511000733.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000734.lua b/script/c511000734.lua new file mode 100644 index 00000000..4954654c --- /dev/null +++ b/script/c511000734.lua @@ -0,0 +1,40 @@ +--Swamp of the Dragon Snake +function c511000734.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetDescription(aux.Stringid(511000734,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511000734.spcon) + e2:SetTarget(c511000734.sptg) + e2:SetOperation(c511000734.spop) + c:RegisterEffect(e2) +end +function c511000734.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000734.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_REPTILE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000734.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000734.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000734.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000734.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,1-tp,false,false,POS_FACEUP) + end + +end diff --git a/script/c511000735.lua b/script/c511000735.lua new file mode 100644 index 00000000..1458a6ca --- /dev/null +++ b/script/c511000735.lua @@ -0,0 +1,42 @@ +--Viper's Grudge +function c511000735.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(511000735,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511000735.con) + e3:SetTarget(c511000735.target) + e3:SetOperation(c511000735.operation) + c:RegisterEffect(e3) +end +function c511000735.cfilter(c,tp) + return c:IsRace(RACE_REPTILE) and c:GetPreviousControler()==tp and c:GetPreviousLocation()==LOCATION_MZONE +end +function c511000735.con(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000735.cfilter,1,nil,tp) +end +function c511000735.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_REPTILE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000735.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000735.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000735.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,c511000735.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000736.lua b/script/c511000736.lua new file mode 100644 index 00000000..0e25d6bb --- /dev/null +++ b/script/c511000736.lua @@ -0,0 +1,45 @@ +--Wing Requital +function c511000736.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000736.cost) + e1:SetTarget(c511000736.target) + e1:SetOperation(c511000736.activate) + c:RegisterEffect(e1) +end +function c511000736.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,600) end + Duel.PayLPCost(tp,600) +end +function c511000736.drfilter(c) + return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) +end +function c511000736.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c511000736.drfilter,tp,LOCATION_MZONE,0,nil) + if chk==0 then return Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511000736.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(c511000736.drfilter,p,LOCATION_MZONE,0,nil) + local h=Duel.GetDecktopGroup(p,ct) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetOperation(c511000736.regop) + e1:SetReset(RESET_PHASE+PHASE_STANDBY) + e1:SetLabel(ct) + Duel.RegisterEffect(e1,p) +end +function c511000736.regop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511000736) + Duel.Draw(tp,e:GetLabel(),REASON_EFFECT) +end diff --git a/script/c511000737.lua b/script/c511000737.lua new file mode 100644 index 00000000..bd6c4a62 --- /dev/null +++ b/script/c511000737.lua @@ -0,0 +1,37 @@ +--Junk Breaker +function c511000737.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000737,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000737.cost) + e1:SetOperation(c511000737.operation) + c:RegisterEffect(e1) +end +function c511000737.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511000737.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(0x7F,0x7F) + e1:SetTarget(c511000737.disable) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(1) + e2:SetTargetRange(0x7F,0x7F) + e2:SetTarget(c511000737.disable) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c511000737.disable(e,c) + return c:IsType(TYPE_EFFECT) or bit.band(c:GetOriginalType(),TYPE_EFFECT)==TYPE_EFFECT +end diff --git a/script/c511000738.lua b/script/c511000738.lua new file mode 100644 index 00000000..a452dd22 --- /dev/null +++ b/script/c511000738.lua @@ -0,0 +1,36 @@ +--Junk Dragonlet +function c511000738.initial_effect(c) + --attack up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000738,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_GRAVE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000738.condition) + e1:SetCost(c511000738.cost) + e1:SetOperation(c511000738.operation) + c:RegisterEffect(e1) +end +function c511000738.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + return a:IsRelateToBattle() and a:IsType(TYPE_SYNCHRO) +end +function c511000738.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000738.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if not a:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(800) + a:RegisterEffect(e1) +end diff --git a/script/c511000739.lua b/script/c511000739.lua new file mode 100644 index 00000000..c23a3d48 --- /dev/null +++ b/script/c511000739.lua @@ -0,0 +1,20 @@ +--Junk Giant +function c511000739.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000739.spcon) + c:RegisterEffect(e1) +end +function c511000739.filter(c) + return c:IsFaceup() and c:GetLevel()>=5 +end +function c511000739.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000739.filter,tp,0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511000740.lua b/script/c511000740.lua new file mode 100644 index 00000000..0bfffac2 --- /dev/null +++ b/script/c511000740.lua @@ -0,0 +1,25 @@ +--Junk Mail +function c511000740.initial_effect(c) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetCondition(c511000740.indcon) + e3:SetOperation(c511000740.indop) + c:RegisterEffect(e3) +end +function c511000740.indcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_SYNCHRO +end +function c511000740.indop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000740,0)) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1) +end diff --git a/script/c511000741.lua b/script/c511000741.lua new file mode 100644 index 00000000..ea877632 --- /dev/null +++ b/script/c511000741.lua @@ -0,0 +1,17 @@ +--Lefty Driver +function c511000741.initial_effect(c) + --synchro level + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SYNCHRO_LEVEL) + e2:SetCondition(c511000741.scon) + e2:SetValue(c511000741.slevel) + c:RegisterEffect(e2) +end +function c511000741.scon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL +end +function c511000741.slevel(e,c) + local lv=e:GetHandler():GetLevel() + return 3*65536+lv +end diff --git a/script/c511000742.lua b/script/c511000742.lua new file mode 100644 index 00000000..0a837098 --- /dev/null +++ b/script/c511000742.lua @@ -0,0 +1,26 @@ +--Jackie Jumper +function c511000742.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000742.spcon) + e1:SetOperation(c511000742.spop) + c:RegisterEffect(e1) +end +function c511000742.spfilter(c) + return c:IsSetCard(0x43) and c:IsAbleToGraveAsCost() +end +function c511000742.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000742.spfilter,tp,LOCATION_HAND,0,1,c) +end +function c511000742.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000742.spfilter,tp,LOCATION_HAND,0,1,99,c) + Duel.SendtoGrave(g,REASON_COST) +end diff --git a/script/c511000743.lua b/script/c511000743.lua new file mode 100644 index 00000000..b7f62537 --- /dev/null +++ b/script/c511000743.lua @@ -0,0 +1,34 @@ +--Righty Driver +function c511000743.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000743.sptg) + e1:SetOperation(c511000743.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000743.filter(c,e,tp) + return c:IsCode(511000741) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000743.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000743.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511000743.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000743.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000744.lua b/script/c511000744.lua new file mode 100644 index 00000000..8d35277a --- /dev/null +++ b/script/c511000744.lua @@ -0,0 +1,120 @@ +--Harmonic Geoglyph +function c511000744.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000744.target) + e1:SetOperation(c511000744.activate) + c:RegisterEffect(e1) +end +function c511000744.filter(c,e,tp) + local lv=c:GetLevel() + if lv%2~=0 then return false end + local matnum=(lv/2)-1 + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511000744.matfilter1,tp,LOCATION_MZONE,0,nil,c) + local nontuner=Duel.GetMatchingGroup(c511000744.matfilter2,tp,0,LOCATION_MZONE+LOCATION_GRAVE,nil,c) + if not c:IsType(TYPE_SYNCHRO) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,false) + or not mt.sync then return false end + return nontuner:GetCount()>=matnum and mt.minntct and mt.minntct<=matnum and mt.maxntct>=matnum + and tuner:GetCount()>0 +end +function c511000744.matfilter1(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_TUNER) and c:IsCanBeSynchroMaterial(syncard) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) + and mt.tuner_filter and mt.tuner_filter(c) +end +function c511000744.matfilter2(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_SYNCHRO) and c:GetLevel()>=6 and not c:IsType(TYPE_TUNER) + and mt.nontuner_filter and mt.nontuner_filter(c) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) +end +function c511000744.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000744.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000744.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=-1 then return end + local g=Duel.GetMatchingGroup(c511000744.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=g:Select(tp,1,1,nil):GetFirst() + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511000744.matfilter1,tp,LOCATION_MZONE,0,nil,tc) + local nontuner=Duel.GetMatchingGroup(c511000744.matfilter2,tp,0,LOCATION_MZONE+LOCATION_GRAVE,nil,tc) + local lv=tc:GetLevel() + local matnum=(lv/2)-1 + local mat1=tuner:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=nontuner:Select(tp,matnum,matnum,nil) + mat1:Merge(mat2) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_SYNCHRO) + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511000745.lua b/script/c511000745.lua new file mode 100644 index 00000000..e63ca6c7 --- /dev/null +++ b/script/c511000745.lua @@ -0,0 +1,61 @@ +--Phoenix Battle Wing +function c511000745.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(c511000745.target) + e1:SetOperation(c511000745.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) + --des rep + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetCountLimit(1) + e3:SetTarget(c511000745.reptg) + e3:SetOperation(c511000745.repop) + c:RegisterEffect(e3) +end +function c511000745.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 c511000745.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511000745.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) and c:GetEquipTarget() end + if Duel.SelectYesNo(tp,aux.Stringid(511000745,0)) then + return true + else + return false + end +end +function c511000745.repop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(c511000745.atkval) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c511000745.atkval(e,c) + return c:GetAttack()*2 +end diff --git a/script/c511000746.lua b/script/c511000746.lua new file mode 100644 index 00000000..73c0873c --- /dev/null +++ b/script/c511000746.lua @@ -0,0 +1,54 @@ +--Reaction Star Mirror +function c511000746.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(c511000746.target) + e1:SetOperation(c511000746.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) + --Deflect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000746.con) + e3:SetOperation(c511000746.op) + c:RegisterEffect(e3) +end +function c511000746.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 c511000746.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 c511000746.con(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + return (Duel.GetAttacker()==eq or (Duel.GetAttackTarget() and Duel.GetAttackTarget()==eq)) +end +function c511000746.op(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetEquipTarget():GetControler() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,p) +end diff --git a/script/c511000747.lua b/script/c511000747.lua new file mode 100644 index 00000000..19e0c020 --- /dev/null +++ b/script/c511000747.lua @@ -0,0 +1,37 @@ +--Sword Dance +function c511000747.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000747.cost) + e1:SetTarget(c511000747.tg) + e1:SetOperation(c511000747.op) + c:RegisterEffect(e1) +end +function c511000747.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000747.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511000747.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000747.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511000747.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511000747.filter,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + Duel.Damage(1-tp,tc:GetLevel()*300,REASON_EFFECT) + end +end diff --git a/script/c511000748.lua b/script/c511000748.lua new file mode 100644 index 00000000..68778a00 --- /dev/null +++ b/script/c511000748.lua @@ -0,0 +1,29 @@ +--Synchro Creed +function c511000748.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000748.condition) + e1:SetTarget(c511000748.target) + e1:SetOperation(c511000748.activate) + c:RegisterEffect(e1) +end +function c511000748.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511000748.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000748.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,3,nil) +end +function c511000748.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511000748.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000749.lua b/script/c511000749.lua new file mode 100644 index 00000000..3c07cab7 --- /dev/null +++ b/script/c511000749.lua @@ -0,0 +1,39 @@ +--Synchro Transcend +function c511000749.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(c511000749.condition) + e1:SetTarget(c511000749.target) + e1:SetOperation(c511000749.activate) + c:RegisterEffect(e1) +end +function c511000749.cfilter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and Duel.IsExistingMatchingCard(c511000749.filter,tp,LOCATION_EXTRA,0,1,nil,c:GetLevel(),e,tp) +end +function c511000749.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000749.cfilter,1,nil,e,tp) and ep~=tp +end +function c511000749.filter(c,lv,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:GetLevel()==lv+1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000749.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000749.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=eg:Filter(c511000749.cfilter,nil,e,tp) + local rg=Group.CreateGroup() + local tc=g:GetFirst() + while tc do + local sg=Duel.GetMatchingGroup(c511000749.filter,tp,LOCATION_EXTRA,0,nil,tc:GetLevel(),e,tp) + rg:Merge(sg) + tc=g:GetNext() + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=rg:Select(tp,1,1,nil) + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511000750.lua b/script/c511000750.lua new file mode 100644 index 00000000..c6eed667 --- /dev/null +++ b/script/c511000750.lua @@ -0,0 +1,27 @@ +--Advance +function c511000750.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000750.target) + e1:SetOperation(c511000750.activate) + c:RegisterEffect(e1) +end +function c511000750.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_WARRIOR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000750.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000750.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511000750.activate(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,c511000750.filter,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 diff --git a/script/c511000751.lua b/script/c511000751.lua new file mode 100644 index 00000000..d1212476 --- /dev/null +++ b/script/c511000751.lua @@ -0,0 +1,66 @@ +--Blade Graveyard +function c511000751.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(c511000751.target) + e1:SetOperation(c511000751.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(800) + 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) + --add to hand + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000751,0)) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_GRAVE) + e4:SetCost(c511000751.addcost) + e4:SetTarget(c511000751.addtg) + e4:SetOperation(c511000751.addop) + c:RegisterEffect(e4) +end +function c511000751.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511000751.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(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 c511000751.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 c511000751.addcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000751.addtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c511000751.addop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000752.lua b/script/c511000752.lua new file mode 100644 index 00000000..04e0b9b7 --- /dev/null +++ b/script/c511000752.lua @@ -0,0 +1,27 @@ +--Card of Compensation +function c511000752.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000752,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511000752.condition) + e1:SetTarget(c511000752.target) + e1:SetOperation(c511000752.operation) + c:RegisterEffect(e1) +end +function c511000752.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_HAND) +end +function c511000752.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511000752.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000753.lua b/script/c511000753.lua new file mode 100644 index 00000000..682e7c88 --- /dev/null +++ b/script/c511000753.lua @@ -0,0 +1,27 @@ +--Junk Splash +function c511000753.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000753.target) + e1:SetOperation(c511000753.activate) + c:RegisterEffect(e1) +end +function c511000753.filter(c) + return c:IsFaceup() and c:IsSetCard(0x43) +end +function c511000753.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000753.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local dam=Duel.GetMatchingGroupCount(c511000753.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*500 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511000753.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511000753.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*500 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511000754.lua b/script/c511000754.lua new file mode 100644 index 00000000..377d072f --- /dev/null +++ b/script/c511000754.lua @@ -0,0 +1,32 @@ +--Parallel Twister +function c511000754.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000754.target) + e1:SetOperation(c511000754.activate) + c:RegisterEffect(e1) +end +function c511000754.dfilter(c,s) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() and Duel.IsExistingMatchingCard(c511000754.dfilter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c,s) +end +function c511000754.dfilter2(c,s) + return c:IsDestructable() and c~=s +end +function c511000754.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000754.dfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler(),e:GetHandler()) end + local dg=Duel.GetMatchingGroup(c511000754.dfilter,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,1,0,0) +end +function c511000754.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,c511000754.dfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler(),e:GetHandler()) + if Duel.Destroy(dg,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg2=Duel.SelectMatchingCard(tp,c511000754.dfilter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,dg:GetFirst(),e:GetHandler()) + Duel.Destroy(dg2,REASON_EFFECT) + end +end diff --git a/script/c511000755.lua b/script/c511000755.lua new file mode 100644 index 00000000..78e147c4 --- /dev/null +++ b/script/c511000755.lua @@ -0,0 +1,36 @@ +--Clinch Reborn +function c511000755.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(c511000755.condition) + e1:SetTarget(c511000755.target) + e1:SetOperation(c511000755.activate) + c:RegisterEffect(e1) +end +function c511000755.cfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:GetPreviousLocation()==LOCATION_GRAVE +end +function c511000755.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000755.cfilter,1,nil) and ep~=tp +end +function c511000755.filter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000755.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:GetControler()==tp and c511000755.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000755.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c83764718.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000755.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000756.lua b/script/c511000756.lua new file mode 100644 index 00000000..a5245932 --- /dev/null +++ b/script/c511000756.lua @@ -0,0 +1,62 @@ +--Cursed Shield +function c511000756.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(c511000756.target) + e1:SetOperation(c511000756.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-500) + 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) + --damage lp + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000756,0)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCondition(c511000756.damcon) + e4:SetTarget(c511000756.damtg) + e4:SetOperation(c511000756.damop) + c:RegisterEffect(e4) +end +function c511000756.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 c511000756.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 c511000756.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511000756.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511000756.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000757.lua b/script/c511000757.lua new file mode 100644 index 00000000..a0ee4847 --- /dev/null +++ b/script/c511000757.lua @@ -0,0 +1,27 @@ +--Dark Flare +function c511000757.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511000757.target) + e1:SetOperation(c511000757.activate) + c:RegisterEffect(e1) +end +function c511000757.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000757.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000757.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000757.activate(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,c511000757.filter,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 diff --git a/script/c511000758.lua b/script/c511000758.lua new file mode 100644 index 00000000..0ef46787 --- /dev/null +++ b/script/c511000758.lua @@ -0,0 +1,44 @@ +--Demon's Shackle +function c511000758.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(c511000758.target) + e1:SetOperation(c511000758.operation) + c:RegisterEffect(e1) + --Atk down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-700) + c:RegisterEffect(e2) + --lv down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_LEVEL) + e3:SetValue(-1) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511000758.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 c511000758.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 diff --git a/script/c511000759.lua b/script/c511000759.lua new file mode 100644 index 00000000..e706047f --- /dev/null +++ b/script/c511000759.lua @@ -0,0 +1,104 @@ +--Instant Tune +function c511000759.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,51100759+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c511000759.target) + e1:SetOperation(c511000759.activate) + c:RegisterEffect(e1) +end +function c511000759.filter(c,e,tp) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,false) + and Duel.IsExistingMatchingCard(c511000759.matfilter,tp,LOCATION_MZONE,0,1,nil,c:GetLevel(),c) + and mt.sync and mt.minntct and mt.minntct==1 and mt.tuner_filter and mt.tuner_filter(nil) +end +function c511000759.matfilter(c,lv,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsFaceup() and c:GetSynchroLevel(syncard)==lv-1 and not c:IsType(TYPE_TUNER) + and mt.nontuner_filter and mt.nontuner_filter(c) and c:IsFaceup() +end +function c511000759.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000759.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000759.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=-1 then return end + local g=Duel.GetMatchingGroup(c511000759.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=g:Select(tp,1,1,nil):GetFirst() + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat=Duel.SelectMatchingCard(tp,c511000759.matfilter,tp,LOCATION_MZONE,0,1,1,nil,tc:GetLevel(),tc) + mat:AddCard(e:GetHandler()) + tc:SetMaterial(mat) + Duel.SendtoGrave(mat,REASON_EFFECT+REASON_MATERIAL+REASON_SYNCHRO) + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511000760.lua b/script/c511000760.lua new file mode 100644 index 00000000..da0d47ce --- /dev/null +++ b/script/c511000760.lua @@ -0,0 +1,80 @@ +--Absolute King Back Jack +function c511000760.initial_effect(c) + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000760,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511000760.condition) + e1:SetCost(c511000760.cost) + e1:SetTarget(c511000760.target) + e1:SetOperation(c511000760.operation) + c:RegisterEffect(e1) +end +function c511000760.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000760.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000760.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000760.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local h=Duel.GetDecktopGroup(p,1) + local tc=h:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + if tc:IsType(TYPE_TRAP) and tc:CheckActivateEffect(false,false,false)~=nil + and Duel.GetLocationCount(tp,LOCATION_SZONE) and Duel.SelectYesNo(tp,aux.Stringid(511000760,1)) then + Duel.ConfirmCards(1-p,tc) + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + Duel.ShuffleHand(p) + end +end diff --git a/script/c511000761.lua b/script/c511000761.lua new file mode 100644 index 00000000..9047c5a3 --- /dev/null +++ b/script/c511000761.lua @@ -0,0 +1,32 @@ +--Magic King Moon Star +function c511000761.initial_effect(c) + --change lv + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000761,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000761.tg) + e1:SetOperation(c511000761.op) + c:RegisterEffect(e1) +end +function c511000761.filter(c,lv) + return c:IsFaceup() and c:GetLevel()~=lv +end +function c511000761.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local lv=e:GetHandler():GetLevel() + if chk==0 then return Duel.IsExistingMatchingCard(c511000761.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,lv) end +end +function c511000761.op(e,tp,eg,ep,ev,re,r,rp) + local lv=e:GetHandler():GetLevel() + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc=Duel.SelectMatchingCard(tp,c511000761.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,lv):GetFirst() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511000762.lua b/script/c511000762.lua new file mode 100644 index 00000000..40c3bad5 --- /dev/null +++ b/script/c511000762.lua @@ -0,0 +1,38 @@ +--Red Lotus King, Flame Crime +function c511000762.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000762,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000762.cost) + e1:SetTarget(c511000762.target) + e1:SetOperation(c511000762.operation) + c:RegisterEffect(e1) +end +function c511000762.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c511000762.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_FIRE) +end +function c511000762.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000762.filter,tp,LOCATION_MZONE,0,1,nil) end + local dam=Duel.GetMatchingGroupCount(c511000762.filter,tp,LOCATION_MZONE,0,nil)*400 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511000762.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511000762.filter,tp,LOCATION_MZONE,0,nil)*400 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511000763.lua b/script/c511000763.lua new file mode 100644 index 00000000..395a9774 --- /dev/null +++ b/script/c511000763.lua @@ -0,0 +1,40 @@ +--Morph King Stygi-Cell +function c511000763.initial_effect(c) + --change lv + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000763,0)) + e1:SetCategory(CATEGORY_LVCHANGE+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c511000763.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000763.op(e,tp,eg,ep,ev,re,r,rp) + local lv=e:GetHandler():GetLevel() + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,c):GetFirst() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + if lv~=tc:GetLevel() then + if lv>tc:GetLevel() then + local rec=(lv-tc:GetLevel())*200 + Duel.Recover(tp,rec,REASON_EFFECT) + else + local rec=(tc:GetLevel()-lv)*200 + Duel.Recover(tp,rec,REASON_EFFECT) + end + end + end +end diff --git a/script/c511000764.lua b/script/c511000764.lua new file mode 100644 index 00000000..14fd5e79 --- /dev/null +++ b/script/c511000764.lua @@ -0,0 +1,25 @@ +--Ending Gravestone +function c511000764.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetHintTiming(0,TIMING_STANDBY_PHASE) + e1:SetCondition(c511000764.condition) + e1:SetTarget(c511000764.target) + e1:SetOperation(c511000764.operation) + c:RegisterEffect(e1) +end +function c511000764.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=1000 and Duel.GetLP(1-tp)<=1000 +end +function c511000764.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_HAND,LOCATION_HAND,1,nil) end + local g=Duel.GetMatchingGroup(aux.TRUE,tp,0xe,0xe,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c511000764.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_HAND,LOCATION_HAND,nil) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c511000765.lua b/script/c511000765.lua new file mode 100644 index 00000000..a4636b5f --- /dev/null +++ b/script/c511000765.lua @@ -0,0 +1,153 @@ +--Synchro Call +function c511000765.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000765.target) + e1:SetOperation(c511000765.activate) + c:RegisterEffect(e1) +end +function c511000765.filter(c,e,tp) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511000765.matfilter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,c) + local nontuner=Duel.GetMatchingGroup(c511000765.matfilter2,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,c) + if not c:IsType(TYPE_SYNCHRO) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,false) + or not mt.sync then return false end + if c:IsSetCard(0x301) then + return nontuner:IsExists(c511000765.lvfilter2,1,nil,c,tuner) + else + return tuner:IsExists(c511000765.lvfilter,1,nil,c,nontuner) + end +end +function c511000765.synchk(c,syncard,c2) + return c2:GetLocation()~=c:GetLocation() and c:IsCanBeSynchroMaterial(syncard,c2) +end +function c511000765.lvfilter(c,syncard,nontuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=nontuner:Filter(c511000765.synchk,nil,syncard,c) + return mt.minntct and mt.minntct==1 and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,slv-lv,1,1,syncard) +end +function c511000765.lvfilter2(c,syncard,tuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=tuner:Filter(c511000765.synchk,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,lv+slv,1,1,syncard) +end +function c511000765.matfilter1(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_TUNER) and c:IsCanBeSynchroMaterial(syncard) + and mt.tuner_filter and mt.tuner_filter(c) +end +function c511000765.matfilter2(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_MONSTER) and c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard) + and mt.nontuner_filter and mt.nontuner_filter(c) +end +function c511000765.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511000765.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000765.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=-1 then return end + local g=Duel.GetMatchingGroup(c511000765.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=g:Select(tp,1,1,nil):GetFirst() + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511000765.matfilter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,tc) + local nontuner=Duel.GetMatchingGroup(c511000765.matfilter2,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,tc) + local mat1 + if tc:IsSetCard(0x301) then + nontuner=nontuner:Filter(c511000765.lvfilter2,nil,tc,tuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=nontuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + tuner=tuner:Filter(c511000765.synchk,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=tuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()+tlv,1,1,tc) + mat1:Merge(mat2) + else + tuner=tuner:Filter(c511000765.lvfilter,nil,tc,nontuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=tuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + nontuner=nontuner:Filter(c511000765.synchk,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=nontuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()-tlv,1,1,tc) + mat1:Merge(mat2) + end + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_SYNCHRO) + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511000767.lua b/script/c511000767.lua new file mode 100644 index 00000000..0f2119a1 --- /dev/null +++ b/script/c511000767.lua @@ -0,0 +1,20 @@ +--Blackwing - Sharnga the Waning Moon +function c511000767.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000767.spcon) + c:RegisterEffect(e1) +end +function c511000767.filter(c) + return c:IsFaceup() and c:IsAttackAbove(2000) +end +function c511000767.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000767.filter,tp,0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511000769.lua b/script/c511000769.lua new file mode 100644 index 00000000..aa774295 --- /dev/null +++ b/script/c511000769.lua @@ -0,0 +1,9 @@ +--Barrel Dragon +function c511000769.initial_effect(c) + --multi attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(2) + c:RegisterEffect(e1) +end diff --git a/script/c511000770.lua b/script/c511000770.lua new file mode 100644 index 00000000..55e0000f --- /dev/null +++ b/script/c511000770.lua @@ -0,0 +1,96 @@ +--超重荒神スサノ-O (Anime) +function c511000770.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsSetCard,0x9a),1) + c:EnableReviveLimit() + --defense attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DEFENSE_ATTACK) + e1:SetValue(1) + c:RegisterEffect(e1) + --set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000770,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c511000770.accost) + e2:SetCondition(c511000770.accon) + e2:SetTarget(c511000770.actg) + e2:SetOperation(c511000770.acop) + c:RegisterEffect(e2) +end +function c511000770.accost(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 c511000770.filter(c) + return c:IsType(TYPE_SPELL) +end +function c511000770.accon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsDefensePos() and not Duel.IsExistingMatchingCard(c511000770.filter,tp,LOCATION_GRAVE,0,1,nil) +end +function c511000770.acfilter(c,tp) + return c:IsType(TYPE_SPELL) and c:IsSSetable(true) and (c:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) +end +function c511000770.actg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000770.acfilter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000770.acfilter,tp,0,LOCATION_GRAVE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000770,1)) + local g=Duel.SelectTarget(tp,c511000770.acfilter,tp,0,LOCATION_GRAVE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) +end +function c511000770.acop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and (tc:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + end +end diff --git a/script/c511000772.lua b/script/c511000772.lua new file mode 100644 index 00000000..9ab34538 --- /dev/null +++ b/script/c511000772.lua @@ -0,0 +1,88 @@ +--Jigen Bakudan +function c511000772.initial_effect(c) + --untargetable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetValue(1) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511000772.op) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c511000772.op(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_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(0) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + e1:SetOperation(c511000772.reg) + Duel.RegisterEffect(e1,tp) +end +function c511000772.reg(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + if Duel.GetTurnPlayer()~=tp then + ct=ct+1 + e:SetLabel(ct) + if ct>=2 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTarget(c511000772.destg) + e1:SetOperation(c511000772.desop) + e:GetHandler():RegisterEffect(e1) + end + end +end +function c511000772.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511000772.filter(c,tp) + return not c:IsLocation(LOCATION_MZONE) and c:GetOwner()==tp +end +function c511000772.desop(e,tp,eg,ep,ev,re,r,rp) + if Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if Duel.Destroy(sg,REASON_EFFECT)~=0 then + local g1=sg:Filter(c511000772.filter,nil,tp) + local g2=sg:Filter(c511000772.filter,nil,1-tp) + local tc1=g1:GetFirst() + local sum1=0 + local sum2=0 + while tc1 do + sum1=sum1+tc1:GetBaseAttack() + tc1=g1:GetNext() + end + local tc2=g2:GetFirst() + while tc2 do + sum2=sum2+tc2:GetBaseAttack() + tc2=g2:GetNext() + end + Duel.Damage(tp,sum1,REASON_EFFECT,true) + Duel.Damage(1-tp,sum2,REASON_EFFECT,true) + Duel.RDComplete() + end + end +end diff --git a/script/c511000773.lua b/script/c511000773.lua new file mode 100644 index 00000000..4dfeb13d --- /dev/null +++ b/script/c511000773.lua @@ -0,0 +1,77 @@ +--Traitor Fog +function c511000773.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511000773.target) + e1:SetOperation(c511000773.activate) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_LEAVE_FIELD_P) + e2:SetOperation(c511000773.checkop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511000773.retop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_CONTROL_CHANGED) + e4:SetCondition(c511000773.descon) + e4:SetOperation(c511000773.desop) + c:RegisterEffect(e4) +end +function c511000773.filter(c,tp) + return c:IsFaceup() and c:GetControler()~=tp + and c:IsControlerCanBeChanged() +end +function c511000773.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511000773.filter,1,nil,tp) end + Duel.SetTargetCard(eg) + local g=eg:Filter(c511000773.filter,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) +end +function c511000773.filter2(c,e,tp) + return c:IsFaceup() and c:GetControler()~=tp + and c:IsRelateToEffect(e) and c:IsControlerCanBeChanged() +end +function c511000773.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=eg:Filter(c511000773.filter2,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + tc=g:Select(tp,1,1,nil):GetFirst() + end + Duel.GetControl(tc,tp) + c:SetCardTarget(tc) +end +function c511000773.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c511000773.retop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.GetControl(tc,1-tp) + end +end +function c511000773.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511000773.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000774.lua b/script/c511000774.lua new file mode 100644 index 00000000..54cbb94b --- /dev/null +++ b/script/c511000774.lua @@ -0,0 +1,87 @@ +--Divine Spark Dragon Stardusr +function c511000774.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),2) + c:EnableReviveLimit() + --destroy replace + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000774.destg) + e1:SetValue(c511000774.value) + e1:SetOperation(c511000774.desop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(511000774) + e2:SetLabelObject(e1) + e2:SetCondition(c511000774.con) + e2:SetTarget(c511000774.tg) + e2:SetOperation(c511000774.op) + c:RegisterEffect(e2) + --sp summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c511000774.spcost) + e3:SetTarget(c511000774.sptg) + e3:SetOperation(c511000774.spop) + c:RegisterEffect(e3) +end +function c511000774.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(Card.IsControler,nil,tp) + if chk==0 then + return Duel.GetFlagEffect(tp,511000774)==0 and g:GetCount()>0 + end + e:SetLabel(g:GetCount()) + return Duel.SelectYesNo(tp,aux.Stringid(511000774,0)) +end +function c511000774.value(e,c) + return c:IsLocation(LOCATION_ONFIELD) and c:IsControler(e:GetHandlerPlayer()) +end +function c511000774.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.RegisterFlagEffect(tp,511000774,RESET_PHASE+PHASE_END,0,1) + Duel.RaiseEvent(e:GetHandler(),511000774,e,0,0,tp,0) +end +function c511000774.con(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and e:GetLabelObject():GetLabel()>0 +end +function c511000774.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) +end +function c511000774.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetLabelObject():GetLabel(),nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end + e:GetLabelObject():SetLabel(0) +end +function c511000774.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000774.filter(c,e,tp) + return c:IsSetCard(0xa3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000774.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000774.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000774.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000774.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000774.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000775.lua b/script/c511000775.lua new file mode 100644 index 00000000..3f7b7f06 --- /dev/null +++ b/script/c511000775.lua @@ -0,0 +1,58 @@ +--Blackwing - Delta Union +function c511000775.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000775.tg) + e1:SetOperation(c511000775.op) + c:RegisterEffect(e1) +end +function c511000775.spfilter(c,e,tp,tid) + return c:IsSetCard(0x33) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetTurnID()==tid and c:IsReason(REASON_DESTROY) + and Duel.IsExistingMatchingCard(c511000775.eqfilter,tp,LOCATION_GRAVE,0,1,c,tid) +end +function c511000775.eqfilter(c,tid) + return c:IsSetCard(0x33) and c:IsType(TYPE_MONSTER) and c:GetTurnID()==tid and c:IsReason(REASON_DESTROY) +end +function c511000775.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local tid=Duel.GetTurnCount() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c511000775.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511000775.op(e,tp,eg,ep,ev,re,r,rp) + local tid=Duel.GetTurnCount() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000775.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,tid) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0 then + local sg=Duel.GetMatchingGroup(c511000775.eqfilter,tp,LOCATION_GRAVE,0,nil,tid) + if sg:GetCount()>Duel.GetLocationCount(tp,LOCATION_SZONE) then + sg=sg:Select(tp,Duel.GetLocationCount(tp,LOCATION_SZONE),Duel.GetLocationCount(tp,LOCATION_SZONE),nil) + end + local eqtc=sg:GetFirst() + while eqtc do + if not Duel.Equip(tp,eqtc,g:GetFirst(),false) then return end + local e1=Effect.CreateEffect(g:GetFirst()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511000775.eqlimit) + eqtc:RegisterEffect(e1) + local e2=Effect.CreateEffect(g:GetFirst()) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(500) + eqtc:RegisterEffect(e2) + eqtc=sg:GetNext() + end + end +end +function c511000775.eqlimit(e,c) + return e:GetOwner()==c +end diff --git a/script/c511000776.lua b/script/c511000776.lua new file mode 100644 index 00000000..2515a697 --- /dev/null +++ b/script/c511000776.lua @@ -0,0 +1,36 @@ +--Synchro Mirage Attack +function c511000776.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000776.condition) + e1:SetOperation(c511000776.activate) + c:RegisterEffect(e1) +end +function c511000776.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return at and a:IsType(TYPE_SYNCHRO) and at:IsType(TYPE_SYNCHRO) +end +function c511000776.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if a:IsControler(tp) then a,at=at,a end + if not a:IsRelateToBattle() or a:IsFacedown() or not at:IsRelateToBattle() or at:IsFacedown() then return end + local atk=a:GetAttack() + local def=a:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e2) +end diff --git a/script/c511000777.lua b/script/c511000777.lua new file mode 100644 index 00000000..f8494f13 --- /dev/null +++ b/script/c511000777.lua @@ -0,0 +1,47 @@ +--Black Revenge +function c511000777.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000777.cost) + e1:SetTarget(c511000777.target) + e1:SetOperation(c511000777.activate) + c:RegisterEffect(e1) +end +function c511000777.costfilter(c) + return c:IsSetCard(0x33) and c:IsAbleToGraveAsCost() +end +function c511000777.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000777.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000777.costfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000777.filter(c) + return c:IsFaceup() and c:GetAttackedCount()>0 +end +function c511000777.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511000777.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(nil,tp,0,LOCATION_MZONE,1,nil) end +end +function c511000777.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectMatchingCard(tp,c511000777.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + local g2=Duel.SelectMatchingCard(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) + if g1:GetCount()>0 and g2:GetCount()>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + g2:GetFirst():RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + g2:GetFirst():RegisterEffect(e2,true) + Duel.CalculateDamage(g1:GetFirst(),g2:GetFirst()) + end +end diff --git a/script/c511000778.lua b/script/c511000778.lua new file mode 100644 index 00000000..414ff838 --- /dev/null +++ b/script/c511000778.lua @@ -0,0 +1,64 @@ +--Metal Coat +function c511000778.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(c511000778.target) + e1:SetOperation(c511000778.operation) + c:RegisterEffect(e1) +end +function c511000778.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 e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000778.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --Indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --Save Monster + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetTarget(c511000778.destg) + e3:SetOperation(c511000778.desop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511000778.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tg=c:GetEquipTarget() + if chk==0 then return c and not c:IsStatus(STATUS_DESTROY_CONFIRMED) + and tg and tg:IsReason(REASON_BATTLE) end + return Duel.SelectYesNo(tp,aux.Stringid(511000778,0)) +end +function c511000778.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=c:GetEquipTarget() + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511000779.lua b/script/c511000779.lua new file mode 100644 index 00000000..4129e111 --- /dev/null +++ b/script/c511000779.lua @@ -0,0 +1,48 @@ +--Speed Spell - Tyrant Force +function c511000779.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000779.cost) + e1:SetOperation(c511000779.activate) + c:RegisterEffect(e1) +end +function c511000779.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,7,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + tc:RemoveCounter(tp,0x91,7,REASON_COST) +end +function c511000779.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetTargetRange(LOCATION_ONFIELD,0) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + Duel.RegisterEffect(e2,tp) + --Activate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c511000779.damcon) + e3:SetOperation(c511000779.damop) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c511000779.cfilter(c,tp) + return c:GetPreviousControler()==1-tp and bit.band(c:GetReason(),0x41)==0x41 +end +function c511000779.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000779.cfilter,1,nil,tp) +end +function c511000779.damop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c511000779.cfilter,nil,tp) + Duel.Damage(1-tp,ct*300,REASON_EFFECT) +end diff --git a/script/c511000780.lua b/script/c511000780.lua new file mode 100644 index 00000000..0e2ae4bc --- /dev/null +++ b/script/c511000780.lua @@ -0,0 +1,63 @@ +--Speed Spell - Overspeed +function c511000780.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000780.con) + e1:SetCost(c511000780.cost) + e1:SetTarget(c511000780.target) + e1:SetOperation(c511000780.activate) + c:RegisterEffect(e1) +end +function c511000780.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>3 +end +function c511000780.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if chk==0 then return tc and tc:IsCanRemoveCounter(tp,0x91,tc:GetCounter(0x91),REASON_COST) end + tc:RemoveCounter(tp,0x91,tc:GetCounter(0x91),REASON_COST) +end +function c511000780.monfilter(c) + local lv=c:GetLevel() + return lv>0 and lv<4 and c:IsAbleToHand() +end +function c511000780.stfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c511000780.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000780.monfilter,tp,LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingMatchingCard(c511000780.stfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_GRAVE) +end +function c511000780.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g1=Duel.SelectMatchingCard(tp,c511000780.monfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g2=Duel.SelectMatchingCard(tp,c511000780.stfilter,tp,LOCATION_GRAVE,0,1,1,nil) + g1:Merge(g2) + if g1:GetCount()>1 then + Duel.SendtoHand(g1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g1) + end + if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(100100090) + e1:SetTargetRange(1,0) + if Duel.GetTurnPlayer()==tp then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c511000780.turncon1) + e1:SetReset(RESET_PHASE+PHASE_END,4) + else + e1:SetReset(RESET_PHASE+PHASE_END,3) + end + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end +function c511000780.turncon1(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c511000781.lua b/script/c511000781.lua new file mode 100644 index 00000000..5023da13 --- /dev/null +++ b/script/c511000781.lua @@ -0,0 +1,43 @@ +--Magician's Card +function c511000781.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000781.condition) + e1:SetTarget(c511000781.target) + e1:SetOperation(c511000781.activate) + c:RegisterEffect(e1) +end +function c511000781.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND+LOCATION_ONFIELD,0)<=1 +end +function c511000781.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) end + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511000781.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + if Duel.Draw(p,ct,REASON_EFFECT) then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.ConfirmCards(1-tp,g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetOperation(c511000781.rmop) + Duel.RegisterEffect(e1,tp) + end +end +function c511000781.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,0,nil) + if g:GetCount()>0 then + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511000782.lua b/script/c511000782.lua new file mode 100644 index 00000000..f29718db --- /dev/null +++ b/script/c511000782.lua @@ -0,0 +1,54 @@ +--Future Battle +function c511000782.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Battle + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetDescription(aux.Stringid(511000782,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c511000782.condition) + e2:SetTarget(c511000782.target) + e2:SetOperation(c511000782.operation) + c:RegisterEffect(e2) +end +function c511000782.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE and Duel.GetTurnPlayer()==tp + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511000782.filter(c) + return c:IsAttackPos() and c:IsFaceup() +end +function c511000782.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and c511000782.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000782.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000782.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000782.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.DisableShuffleCheck() + Duel.ConfirmDecktop(1-tp,1) + local g=Duel.GetDecktopGroup(1-tp,1) + local tt=g:GetFirst() + if tt:IsType(TYPE_MONSTER) then + if tt:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.SpecialSummon(tt,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) + Duel.CalculateDamage(tc,tt) + if tt:IsStatus(STATUS_BATTLE_DESTROYED) then + e:SetCountLimit(1) + end + end + else + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end + end +end diff --git a/script/c511000783.lua b/script/c511000783.lua new file mode 100644 index 00000000..4919204c --- /dev/null +++ b/script/c511000783.lua @@ -0,0 +1,27 @@ +--Card of Reversal +function c511000783.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000783.condition) + e1:SetTarget(c511000783.target) + e1:SetOperation(c511000783.activate) + c:RegisterEffect(e1) +end +function c511000783.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND+LOCATION_ONFIELD,0)<=1 +end +function c511000783.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) and Duel.GetMatchingGroupCount(Card.IsFaceup,tp,0,LOCATION_ONFIELD,nil)>0 end + local ct=Duel.GetMatchingGroupCount(Card.IsFaceup,tp,0,LOCATION_ONFIELD,nil) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511000783.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(Card.IsFaceup,tp,0,LOCATION_ONFIELD,nil) + Duel.Draw(p,ct,REASON_EFFECT) +end diff --git a/script/c511000784.lua b/script/c511000784.lua new file mode 100644 index 00000000..c5706af4 --- /dev/null +++ b/script/c511000784.lua @@ -0,0 +1,27 @@ +--Card of Desperation +function c511000784.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000784.target) + e1:SetOperation(c511000784.activate) + c:RegisterEffect(e1) +end +function c511000784.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) end + local g=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,3) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,g:GetCount()-3) +end +function c511000784.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)==3 then + local g=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c511000785.lua b/script/c511000785.lua new file mode 100644 index 00000000..823a948c --- /dev/null +++ b/script/c511000785.lua @@ -0,0 +1,37 @@ +--Tool Box +function c511000785.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000785,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511000785.condition) + e1:SetTarget(c511000785.target) + e1:SetOperation(c511000785.operation) + c:RegisterEffect(e1) +end +function c511000785.cfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x26) or c:IsCode(2403771)) +end +function c511000785.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000785.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end +function c511000785.thfilter(c) + return c:IsType(TYPE_EQUIP) and c:IsAbleToHand() +end +function c511000785.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000785.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c511000785.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511000785.thfilter,tp,LOCATION_DECK,0,nil):RandomSelect(tp,1) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) +end diff --git a/script/c511000786.lua b/script/c511000786.lua new file mode 100644 index 00000000..bb738c56 --- /dev/null +++ b/script/c511000786.lua @@ -0,0 +1,91 @@ +--Forest Spring +function c511000786.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000786.target) + e1:SetOperation(c511000786.activate) + c:RegisterEffect(e1) + if not c511000786.global_check then + c511000786.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000786.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000786.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000786.filter(c) + return c:IsType(TYPE_TRAP) and c:CheckActivateEffect(false,false,false)~=nil +end +function c511000786.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511000786.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000786.filter,tp,LOCATION_GRAVE,0,1,nil) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and (c511000786.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511000786.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5))) end +end +function c511000786.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local g=Duel.SelectMatchingCard(tp,c511000786.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)~=0 then + Duel.MoveSequence(tc,5) + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511000787.lua b/script/c511000787.lua new file mode 100644 index 00000000..19a0c622 --- /dev/null +++ b/script/c511000787.lua @@ -0,0 +1,30 @@ +--Rose Shaman +function c511000787.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000787,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000787.cost) + e1:SetTarget(c511000787.target) + e1:SetOperation(c511000787.operation) + c:RegisterEffect(e1) +end +function c511000787.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() end + Duel.SendtoGrave(c,REASON_COST) +end +function c511000787.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000787.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000788.lua b/script/c511000788.lua new file mode 100644 index 00000000..57b42b9e --- /dev/null +++ b/script/c511000788.lua @@ -0,0 +1,34 @@ +--Rose Lover +function c511000788.initial_effect(c) + --sp summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000788,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c511000788.cost) + e1:SetTarget(c511000788.target) + e1:SetOperation(c511000788.operation) + c:RegisterEffect(e1) +end +function c511000788.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511000788.filter(c,e,tp) + return c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000788.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000788.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000788.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,c511000788.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000789.lua b/script/c511000789.lua new file mode 100644 index 00000000..69dea0c9 --- /dev/null +++ b/script/c511000789.lua @@ -0,0 +1,23 @@ +--Briar Transplant +function c511000789.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000789.target) + e1:SetOperation(c511000789.activate) + c:RegisterEffect(e1) +end +function c511000789.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511000789.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + if g:GetCount()>0 then + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511000790.lua b/script/c511000790.lua new file mode 100644 index 00000000..8ddcbb91 --- /dev/null +++ b/script/c511000790.lua @@ -0,0 +1,36 @@ +--Contract with the Void +function c511000790.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000790.condition) + e1:SetTarget(c511000790.target) + e1:SetOperation(c511000790.activate) + c:RegisterEffect(e1) +end +function c511000790.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>2 +end +function c511000790.filter(c,e,tp) + return c:IsSetCard(0xb) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000790.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000790.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000790.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=Duel.SelectMatchingCard(tp,c511000790.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if sp:GetCount()>0 then + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000791.lua b/script/c511000791.lua new file mode 100644 index 00000000..fd73fea8 --- /dev/null +++ b/script/c511000791.lua @@ -0,0 +1,37 @@ +--Void Chain +function c511000791.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c511000791.condition) + e1:SetTarget(c511000791.target) + e1:SetOperation(c511000791.operation) + c:RegisterEffect(e1) +end +function c511000791.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and Duel.GetAttacker():GetControler()~=tp +end +function c511000791.filter(c,e,tp) + return c:IsSetCard(0xb) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000791.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c511000791.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000791.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=Duel.SelectMatchingCard(tp,c511000791.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if sp:GetCount()>0 then + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511000792.lua b/script/c511000792.lua new file mode 100644 index 00000000..00451168 --- /dev/null +++ b/script/c511000792.lua @@ -0,0 +1,24 @@ +--Void Shield +function c511000792.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000792,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(2) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCondition(c511000792.condition) + e2:SetOperation(c511000792.activate) + c:RegisterEffect(e2) +end +function c511000792.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetFieldGroupCount(e:GetHandler():GetControler(),LOCATION_HAND,0)==0 +end +function c511000792.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511000793.lua b/script/c511000793.lua new file mode 100644 index 00000000..ef18578c --- /dev/null +++ b/script/c511000793.lua @@ -0,0 +1,109 @@ +--Zero Gate of the Void +function c511000793.initial_effect(c) + --Return + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCode(511002521) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511000793.condition) + e1:SetCost(c511000793.cost) + e1:SetTarget(c511000793.target) + e1:SetOperation(c511000793.activate) + c:RegisterEffect(e1) + if not c511000793.global_check then + c511000793.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetCode(EFFECT_CANNOT_LOSE_LP) + ge1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + ge1:SetTargetRange(1,0) + ge1:SetLabel(0) + ge1:SetCondition(c511000793.con) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetLabel(1) + Duel.RegisterEffect(ge2,1) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetOperation(c511000793.op) + Duel.RegisterEffect(ge3,0) + end +end +function c511000793.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND+LOCATION_ONFIELD,0)<=0 +end +function c511000793.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_CHAIN) + e1:SetCode(EFFECT_CANNOT_LOSE_LP) + Duel.RegisterEffect(e1,tp) + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) +end +function c511000793.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,81020646,0,0x2021,3000,3000,8,RACE_DRAGON,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_EXTRA) +end +function c511000793.activate(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 tc=Duel.CreateToken(tp,81020646) + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_LOSE_DECK) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_LOSE_LP) + Duel.RegisterEffect(e3,tp) + local e4=e2:Clone() + e4:SetLabelObject(tc) + e4:SetCondition(c511000793.lcon) + e4:SetCode(EFFECT_CANNOT_LOSE_EFFECT) + Duel.RegisterEffect(e4,tp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetLabel(1-tp) + e1:SetLabelObject(e4) + e1:SetOperation(c511000793.leaveop) + tc:RegisterEffect(e1) + end +end +function c511000793.lcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetLabelObject():IsReason(REASON_DESTROY+REASON_FUSION+REASON_SYNCHRO+REASON_XYZ) +end +function c511000793.leaveop(e,tp,eg,ep,ev,re,r,rp) + local WIN_REASON_ZERO_GATE=0x53 + Duel.Win(e:GetLabel(),WIN_REASON_ZERO_GATE) +end +function c511000793.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(e:GetLabel(),511002521)>0 +end +function c511000793.op(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + if Duel.GetLP(0)<=0 and ph~=PHASE_DAMAGE then + Duel.RaiseEvent(Duel.GetMatchingGroup(nil,0,0xff,0,nil),511002521,e,0,0,0,0) + Duel.ResetFlagEffect(0,511002521) + end + if Duel.GetLP(1)<=0 and ph~=PHASE_DAMAGE then + Duel.RaiseEvent(Duel.GetMatchingGroup(nil,1,0xff,0,nil),511002521,e,0,0,0,0) + Duel.ResetFlagEffect(1,511002521) + end + if Duel.GetLP(0)>0 and Duel.GetFlagEffect(0,511002521)==0 then + Duel.RegisterFlagEffect(0,511002521,0,0,1) + end + if Duel.GetLP(1)>0 and Duel.GetFlagEffect(1,511002521)==0 then + Duel.RegisterFlagEffect(1,511002521,0,0,1) + end +end diff --git a/script/c511000794.lua b/script/c511000794.lua new file mode 100644 index 00000000..3a7362f5 --- /dev/null +++ b/script/c511000794.lua @@ -0,0 +1,19 @@ +--Hell Spider +function c511000794.initial_effect(c) + --skip battle phase + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000794,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511000794.operation) + c:RegisterEffect(e2) +end +function c511000794.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000795.lua b/script/c511000795.lua new file mode 100644 index 00000000..e87709a5 --- /dev/null +++ b/script/c511000795.lua @@ -0,0 +1,20 @@ +--Hell Needle Caterpillar +function c511000795.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000795.spcon) + c:RegisterEffect(e1) +end +function c511000795.spfilter(c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) +end +function c511000795.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000795.spfilter,tp,LOCATION_MZONE,0,2,nil) +end diff --git a/script/c511000796.lua b/script/c511000796.lua new file mode 100644 index 00000000..97d85052 --- /dev/null +++ b/script/c511000796.lua @@ -0,0 +1,21 @@ +--Hell Fly Nest +function c511000796.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000796.damtg) + e1:SetOperation(c511000796.damop) + c:RegisterEffect(e1) +end +function c511000796.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetMatchingGroupCount(Card.IsRace,tp,LOCATION_GRAVE,0,nil,RACE_INSECT)>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,Duel.GetMatchingGroupCount(Card.IsRace,tp,LOCATION_GRAVE,0,nil,RACE_INSECT)*200) +end +function c511000796.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,Duel.GetMatchingGroupCount(Card.IsRace,tp,LOCATION_GRAVE,0,nil,RACE_INSECT)*200,REASON_EFFECT) +end diff --git a/script/c511000797.lua b/script/c511000797.lua new file mode 100644 index 00000000..1d44f5f6 --- /dev/null +++ b/script/c511000797.lua @@ -0,0 +1,40 @@ +--Counterattack Ecdysis +function c511000797.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000797.condition) + e1:SetTarget(c511000797.target) + e1:SetOperation(c511000797.operation) + c:RegisterEffect(e1) +end +function c511000797.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:GetLevel()>0 +end +function c511000797.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000797.cfilter,nil,tp) + local tc=g:GetFirst() + e:SetLabel(tc:GetLevel()) + return tc +end +function c511000797.spfilter(c,e,tp,lv) + return c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()0 + and Duel.IsExistingMatchingCard(c511000797.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,lv) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000797.operation(e,tp,eg,ep,ev,re,r,rp) + local lv=e:GetLabel() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000797.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,lv) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000798.lua b/script/c511000798.lua new file mode 100644 index 00000000..0fe3113f --- /dev/null +++ b/script/c511000798.lua @@ -0,0 +1,30 @@ +--Celestial Tuner +function c511000798.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.NonTuner(nil)) + c:EnableReviveLimit() + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511000798.notatk) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511000798.condition) + e2:SetValue(c:GetAttack()*2) + c:RegisterEffect(e2) +end +function c511000798.notatk(e,c) + return not c:IsType(TYPE_SYNCHRO) +end +function c511000798.condition(e) + local phase=Duel.GetCurrentPhase() + return (phase==PHASE_DAMAGE or phase==PHASE_DAMAGE_CAL) and Duel.GetAttackTarget()~=nil +end diff --git a/script/c511000799.lua b/script/c511000799.lua new file mode 100644 index 00000000..4d2bd74e --- /dev/null +++ b/script/c511000799.lua @@ -0,0 +1,73 @@ +--Wicked Priest Chilam Sabak +function c511000799.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000799,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511000799.ntcon) + c:RegisterEffect(e1) + --Revival + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000799,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c511000799.spcon) + e2:SetCost(c511000799.spcost) + e2:SetTarget(c511000799.sptg) + e2:SetOperation(c511000799.spop) + c:RegisterEffect(e2) +end +function c511000799.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)>=5 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511000799.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_MZONE and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511000799.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(511000799)==0 end + c:RegisterFlagEffect(511000799,RESET_PHASE+PHASE_END,0,1) +end +function c511000799.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000799.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_TUNER) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetValue(c511000799.synlimit) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511000799.synlimit(e,c) + if not c then return false end + local code=c:GetOriginalCode() + if code==100000150 or code==100000151 or code==100000152 or code==100000153 or code==100000154 or code==100000155 or code==100000156 then + return else return not c:IsSetCard(0x301) end +end diff --git a/script/c511000800.lua b/script/c511000800.lua new file mode 100644 index 00000000..41335505 --- /dev/null +++ b/script/c511000800.lua @@ -0,0 +1,37 @@ +--Celestial Bell Tower +function c511000800.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000800,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_BOTH_SIDE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000800.condition) + e2:SetTarget(c511000800.target) + e2:SetOperation(c511000800.operation) + c:RegisterEffect(e2) +end +function c511000800.filter(c,tp) + return c:IsControler(tp) and c:GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c511000800.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000800.filter,1,nil,tp) and ep==tp and Duel.GetCurrentChain()==0 +end +function c511000800.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000800.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511000801.lua b/script/c511000801.lua new file mode 100644 index 00000000..09e9411e --- /dev/null +++ b/script/c511000801.lua @@ -0,0 +1,55 @@ +--Spirit Cannon Kushu Sipit +function c511000801.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(c511000801.target) + e1:SetOperation(c511000801.operation) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000801,0)) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000801.damtg) + e2:SetOperation(c511000801.damop) + 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 c511000801.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 c511000801.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 c511000801.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)>0 end + local dam=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)*100 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000801.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local d=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)*100 + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000802.lua b/script/c511000802.lua new file mode 100644 index 00000000..f29e3ea4 --- /dev/null +++ b/script/c511000802.lua @@ -0,0 +1,24 @@ +--Celestial Talisman +function c511000802.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000802.activate) + c:RegisterEffect(e1) +end +function c511000802.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_INDESTRUCTABLE) + e1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e1:SetTarget(c511000802.indes) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end +function c511000802.indes(e,c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c511000803.lua b/script/c511000803.lua new file mode 100644 index 00000000..e69acd80 --- /dev/null +++ b/script/c511000803.lua @@ -0,0 +1,62 @@ +--Rampaging Binary Stars Level 2 +function c511000803.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000803.condition) + e1:SetTarget(c511000803.target) + e1:SetOperation(c511000803.operation) + c:RegisterEffect(e1) +end +function c511000803.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsType,1,nil,TYPE_SYNCHRO) and Duel.GetAttacker():IsType(TYPE_SYNCHRO) and Duel.GetAttackTarget():IsType(TYPE_SYNCHRO) +end +function c511000803.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==2 +end +function c511000803.spfilter(c,e,tp,code) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==2 and c:IsCode(code) +end +function c511000803.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000803.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000803.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000803.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + if ft>1 and Duel.IsExistingMatchingCard(c511000803.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,tc:GetCode()) then + ft=ft-1 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local spg=Duel.SelectMatchingCard(tp,c511000803.spfilter,tp,LOCATION_HAND,0,ft,ft,tc,e,tp,tc:GetCode()) + g:Merge(spg) + end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local tg=g:GetFirst() + while tg do + tg:RegisterFlagEffect(511000803,RESET_PHASE+PHASE_END,0,1) + tg=g:GetNext() + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetOperation(c511000803.desop) + Duel.RegisterEffect(e1,tp) + end +end +function c511000803.desfilter(c) + return c:IsLocation(LOCATION_MZONE) and c:IsDestructable() and c:GetFlagEffect(511000803)~=0 +end +function c511000803.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511000803.desfilter,tp,LOCATION_MZONE,0,nil) + if Duel.Destroy(sg,REASON_EFFECT)~=0 then + local sum=sg:GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT) + end +end diff --git a/script/c511000804.lua b/script/c511000804.lua new file mode 100644 index 00000000..f8c5fac2 --- /dev/null +++ b/script/c511000804.lua @@ -0,0 +1,34 @@ +--Earthbound Resonance +function c511000804.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000804.condition) + e2:SetTarget(c511000804.target) + e2:SetOperation(c511000804.operation) + c:RegisterEffect(e2) +end +function c511000804.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return eg:GetCount()==1 and ec:IsPreviousLocation(LOCATION_MZONE) and ec:IsType(TYPE_SYNCHRO) +end +function c511000804.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ec=eg:GetFirst() + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,ec:GetAttack()/2) +end +function c511000804.operation(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + Duel.Damage(1-tp,ec:GetAttack()/2,REASON_EFFECT,true) + Duel.Damage(tp,ec:GetAttack()/2,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511000805.lua b/script/c511000805.lua new file mode 100644 index 00000000..6ff56bf0 --- /dev/null +++ b/script/c511000805.lua @@ -0,0 +1,31 @@ +--Samsara Seeding +function c511000805.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000805.condition) + e1:SetTarget(c511000805.target) + e1:SetOperation(c511000805.operation) + c:RegisterEffect(e1) +end +function c511000805.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511000805.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000805.cfilter,1,nil,tp) +end +function c511000805.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(Card.IsSSetable,tp,LOCATION_HAND,0,nil) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and g:GetCount()>0 end +end +function c511000805.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsSSetable,tp,LOCATION_HAND,0,nil) + if g:GetCount()>0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local sg=g:Select(tp,1,1,nil) + Duel.SSet(tp,sg:GetFirst()) + end +end diff --git a/script/c511000806.lua b/script/c511000806.lua new file mode 100644 index 00000000..4b00bf8d --- /dev/null +++ b/script/c511000806.lua @@ -0,0 +1,37 @@ +--Hellfire Boatwatcher, Ghost Charon +function c511000806.initial_effect(c) + --synchro custom + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetTarget(c511000806.syntg) + e1:SetValue(1) + e1:SetOperation(c511000806.synop) + c:RegisterEffect(e1) +end +function c511000806.synfilter1(c,syncard,tuner,f) + return c:IsFaceup() and c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) +end +function c511000806.synfilter2(c,syncard,tuner,f) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) +end +function c511000806.syntg(e,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + if lv<=0 then return false end + local g=Duel.GetMatchingGroup(c511000806.synfilter1,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local exg=Duel.GetMatchingGroup(c511000806.synfilter2,syncard:GetControler(),LOCATION_GRAVE,0,c,syncard,c,f) + g:Merge(exg) + return g:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard) +end +function c511000806.synop(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + local g=Duel.GetMatchingGroup(c511000806.synfilter1,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local exg=Duel.GetMatchingGroup(c511000806.synfilter2,syncard:GetControler(),LOCATION_GRAVE,0,c,syncard,c,f) + g:Merge(exg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local sg=g:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,syncard) + Duel.SetSynchroMaterial(sg) +end diff --git a/script/c511000807.lua b/script/c511000807.lua new file mode 100644 index 00000000..ce33777d --- /dev/null +++ b/script/c511000807.lua @@ -0,0 +1,85 @@ +--Dragocytus, the Impure Underworld Dragon +function c511000807.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + c:RegisterEffect(e1) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000807,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCountLimit(1) + e2:SetCondition(c511000807.atkcon) + e2:SetOperation(c511000807.atkop) + c:RegisterEffect(e2) + --damage lp + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000807,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PREDRAW) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e3:SetCondition(c511000807.damcon) + e3:SetTarget(c511000807.damtg) + e3:SetOperation(c511000807.damop) + c:RegisterEffect(e3) + --damage lp + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000807,1)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e4:SetCondition(c511000807.damcon) + e4:SetTarget(c511000807.damtg) + e4:SetOperation(c511000807.damop) + c:RegisterEffect(e4) +end +function c511000807.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsReason(REASON_BATTLE) +end +function c511000807.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c511000807.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetTurnPlayer()==tp and Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 + and Duel.GetActivityCount(tp,ACTIVITY_FLIPSUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 + and Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 then + Duel.RaiseEvent(e:GetHandler(),511000807,e,0,0,tp,0) + end +end +function c511000807.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000807.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511000807.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + local dam=g:GetFirst():GetAttack() + Duel.Damage(p,dam,REASON_EFFECT) + end +end diff --git a/script/c511000808.lua b/script/c511000808.lua new file mode 100644 index 00000000..fe77ad08 --- /dev/null +++ b/script/c511000808.lua @@ -0,0 +1,31 @@ +--Hellfire Veil +function c511000808.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511000808.target) + e2:SetValue(1) + c:RegisterEffect(e2) + --negate attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetOperation(c511000808.operation) + c:RegisterEffect(e3) +end +function c511000808.target(e,c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c511000808.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511000809.lua b/script/c511000809.lua new file mode 100644 index 00000000..6cc9aced --- /dev/null +++ b/script/c511000809.lua @@ -0,0 +1,36 @@ +--Spectral Ice Floe +function c511000809.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --unaffected + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000809,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511000809.uncost) + e2:SetOperation(c511000809.unop) + c:RegisterEffect(e2) +end +function c511000809.costfilter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToRemoveAsCost() +end +function c511000809.uncost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000809.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000809.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511000809.unop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetTargetRange(LOCATION_ONFIELD,0) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000810.lua b/script/c511000810.lua new file mode 100644 index 00000000..545d36aa --- /dev/null +++ b/script/c511000810.lua @@ -0,0 +1,35 @@ +--Jester Puppet King Pantomime +function c511000810.initial_effect(c) + c:EnableReviveLimit() + --atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_CALCULATING) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511000810.atkup) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511000810.ind) + c:RegisterEffect(e2) +end +function c511000810.atkup(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d or (a~=c and d~=c) then return end + local tc=c:GetBattleTarget() + if tc:GetAttack()>c:GetAttack() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + end +end +function c511000810.ind2(e,c) + return c:IsType(TYPE_SYNCHRO) +end diff --git a/script/c511000811.lua b/script/c511000811.lua new file mode 100644 index 00000000..f99ff6e9 --- /dev/null +++ b/script/c511000811.lua @@ -0,0 +1,4 @@ +--Jester Puppet Circus +function c511000811.initial_effect(c) + aux.AddRitualProcGreaterCode(c,511000810) +end diff --git a/script/c511000812.lua b/script/c511000812.lua new file mode 100644 index 00000000..f1c36c70 --- /dev/null +++ b/script/c511000812.lua @@ -0,0 +1,28 @@ +--Orchid Mantis +function c511000812.initial_effect(c) + --discard + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000812,0)) + e1:SetCategory(CATEGORY_HANDES+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000812.target) + e1:SetOperation(c511000812.operation) + c:RegisterEffect(e1) +end +function c511000812.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.SetTargetPlayer(tp) + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,g:GetCount()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*500) +end +function c511000812.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + if g:GetCount()>0 then + Duel.Damage(1-p,g:GetCount()*500,REASON_EFFECT) + end +end diff --git a/script/c511000813.lua b/script/c511000813.lua new file mode 100644 index 00000000..baeed605 --- /dev/null +++ b/script/c511000813.lua @@ -0,0 +1,24 @@ +--Signal Vehicle +function c511000813.initial_effect(c) + --dice + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000813,0)) + e2:SetCategory(CATEGORY_HANDES) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511000813.atkcon) + e2:SetTarget(c511000813.atktg) + e2:SetOperation(c511000813.atkop) + c:RegisterEffect(e2) +end +function c511000813.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000813.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1) +end +function c511000813.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.DiscardHand(1-tp,aux.TRUE,1,1,REASON_EFFECT+REASON_DISCARD,nil) +end diff --git a/script/c511000814.lua b/script/c511000814.lua new file mode 100644 index 00000000..5e1c6219 --- /dev/null +++ b/script/c511000814.lua @@ -0,0 +1,86 @@ +--Extra Fusion +function c511000814.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000814.target) + e1:SetOperation(c511000814.activate) + c:RegisterEffect(e1) +end +function c511000814.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511000814.filter2(c,e,tp,m,f,chkf) + if not c:IsType(TYPE_FUSION) or (f and not f(c)) + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) then return false end + m:RemoveCard(c) + local chk=c:CheckFusionMaterial(m,nil,chkf) + m:AddCard(c) + return chk +end +function c511000814.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_EXTRA,0,nil) + local res=Duel.IsExistingMatchingCard(c511000814.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511000814.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000814.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511000814.filter1,tp,LOCATION_EXTRA,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511000814.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511000814.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + mg1:RemoveCard(tc) + if mg2~=nil and mg2:GetCount()>0 then + mg2:RemoveCard(tc) + end + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + else + local cg1=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) + and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then + Duel.ConfirmCards(1-tp,cg1) + Duel.ConfirmCards(1-tp,cg2) + Duel.ShuffleHand(tp) + end + end +end diff --git a/script/c511000815.lua b/script/c511000815.lua new file mode 100644 index 00000000..50d6c2cd --- /dev/null +++ b/script/c511000815.lua @@ -0,0 +1,33 @@ +--The Fool's Ruling +function c511000815.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000815.con) + e1:SetOperation(c511000815.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c511000815.handcon) + c:RegisterEffect(e2) +end +function c511000815.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511000815.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000815.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511000815.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511000815.handcon(e) + return Duel.GetTurnPlayer()==e:GetHandler():GetControler() +end diff --git a/script/c511000816.lua b/script/c511000816.lua new file mode 100644 index 00000000..6cfae23c --- /dev/null +++ b/script/c511000816.lua @@ -0,0 +1,34 @@ +--The Magician's Wisdom +function c511000816.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000816.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c511000816.handcon) + c:RegisterEffect(e2) +end +function c511000816.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_TO_HAND) + e1:SetCondition(c511000816.damcon) + e1:SetOperation(c511000816.damop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000816.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsPreviousLocation,1,nil,LOCATION_ONFIELD) +end +function c511000816.damop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(Card.IsPreviousLocation,nil,LOCATION_ONFIELD) + Duel.Damage(1-tp,ct*300,REASON_EFFECT) +end +function c511000816.handcon(e) + return Duel.GetTurnPlayer()==e:GetHandler():GetControler() +end diff --git a/script/c511000817.lua b/script/c511000817.lua new file mode 100644 index 00000000..9c3116ee --- /dev/null +++ b/script/c511000817.lua @@ -0,0 +1,326 @@ +--Ultimaya Tzolk'in (Anim) +function c511000817.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c511000817.syncon) + e1:SetOperation(c511000817.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + c:SetStatus(STATUS_NO_LEVEL,true) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000817,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SSET) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511000817.spcon) + e2:SetTarget(c511000817.sptg) + e2:SetOperation(c511000817.spop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_MSET) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_CHANGE_POS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) + --check1 + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_SSET) + e6:SetRange(LOCATION_MZONE) + e6:SetLabel(0) + e6:SetCondition(c511000817.spcon) + e6:SetOperation(c511000817.chkop) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EVENT_MSET) + e7:SetLabelObject(e6) + e7:SetOperation(c511000817.chkop1) + c:RegisterEffect(e7) + local e8=e7:Clone() + e8:SetCode(EVENT_CHANGE_POS) + e8:SetLabelObject(e6) + e8:SetOperation(c511000817.chkop1) + c:RegisterEffect(e8) + local e9=e7:Clone() + e9:SetCode(EVENT_SPSUMMON_SUCCESS) + e9:SetLabelObject(e6) + e9:SetOperation(c511000817.chkop1) + c:RegisterEffect(e9) + --cannot set + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_CANNOT_MSET) + e10:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e10:SetRange(LOCATION_MZONE) + e10:SetTargetRange(1,0) + e10:SetCondition(c511000817.setcon1) + e10:SetTarget(aux.TRUE) + e10:SetLabelObject(e6) + c:RegisterEffect(e10) + local e11=e10:Clone() + e11:SetCode(EFFECT_CANNOT_SSET) + c:RegisterEffect(e11) + local e11=e10:Clone() + e11:SetCode(EFFECT_CANNOT_TURN_SET) + c:RegisterEffect(e11) + local e12=e10:Clone() + e12:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e12:SetTarget(c511000817.sumlimit) + c:RegisterEffect(e12) + --reset + local e13=Effect.CreateEffect(c) + e13:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e13:SetCode(EVENT_PHASE+PHASE_END) + e13:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e13:SetRange(LOCATION_MZONE) + e13:SetCountLimit(1) + e13:SetOperation(c511000817.resetop1) + e13:SetLabelObject(e6) + c:RegisterEffect(e13) + --check2 + local e14=Effect.CreateEffect(c) + e14:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e14:SetCode(EVENT_SSET) + e14:SetRange(LOCATION_MZONE) + e14:SetLabel(0) + e14:SetCondition(c511000817.chkcon2) + e14:SetOperation(c511000817.chkop) + c:RegisterEffect(e14) + local e15=e14:Clone() + e15:SetCode(EVENT_MSET) + e15:SetLabelObject(e14) + e15:SetOperation(c511000817.chkop1) + c:RegisterEffect(e15) + local e16=e15:Clone() + e16:SetCode(EVENT_CHANGE_POS) + e16:SetLabelObject(e14) + e16:SetOperation(c511000817.chkop1) + c:RegisterEffect(e16) + local e17=e15:Clone() + e17:SetCode(EVENT_SPSUMMON_SUCCESS) + e17:SetLabelObject(e14) + e17:SetOperation(c511000817.chkop1) + c:RegisterEffect(e17) + --cannot set + local e18=Effect.CreateEffect(c) + e18:SetType(EFFECT_TYPE_FIELD) + e18:SetCode(EFFECT_CANNOT_MSET) + e18:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e18:SetRange(LOCATION_MZONE) + e18:SetTargetRange(0,1) + e18:SetCondition(c511000817.setcon1) + e18:SetTarget(aux.TRUE) + e18:SetLabelObject(e14) + c:RegisterEffect(e18) + local e19=e18:Clone() + e19:SetCode(EFFECT_CANNOT_SSET) + c:RegisterEffect(e19) + local e20=e18:Clone() + e20:SetCode(EFFECT_CANNOT_TURN_SET) + c:RegisterEffect(e20) + local e21=e18:Clone() + e21:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e21:SetTarget(c511000817.sumlimit) + c:RegisterEffect(e21) + --reset + local e22=Effect.CreateEffect(c) + e22:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e22:SetCode(EVENT_PHASE+PHASE_END) + e22:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e22:SetRange(LOCATION_MZONE) + e22:SetCountLimit(1) + e22:SetOperation(c511000817.resetop1) + e22:SetLabelObject(e14) + c:RegisterEffect(e22) + --cannot be battle target + local e23=Effect.CreateEffect(c) + e23:SetType(EFFECT_TYPE_SINGLE) + e23:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e23:SetRange(LOCATION_MZONE) + e23:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e23:SetCondition(c511000817.con) + e23:SetValue(1) + c:RegisterEffect(e23) + --battle des rep + local e24=Effect.CreateEffect(c) + e24:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e24:SetCode(EFFECT_DESTROY_REPLACE) + e24:SetCountLimit(1) + e24:SetTarget(c511000817.reptg) + c:RegisterEffect(e24) + --change atk and destroy + local e25=Effect.CreateEffect(c) + e25:SetDescription(aux.Stringid(511000817,2)) + e25:SetCategory(CATEGORY_DESTROY) + e25:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e25:SetCode(EVENT_BATTLE_START) + e25:SetCondition(c511000817.batcon) + e25:SetTarget(c511000817.battg) + e25:SetOperation(c511000817.batop) + c:RegisterEffect(e25) + --add setcode + local e26=Effect.CreateEffect(c) + e26:SetType(EFFECT_TYPE_SINGLE) + e26:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e26:SetCode(EFFECT_ADD_SETCODE) + e26:SetValue(0x301) + c:RegisterEffect(e26) +end +function c511000817.sumlimit(e,c,sump,sumtype,sumpos,targetp) + return bit.band(sumpos,POS_FACEDOWN)>0 +end +function c511000817.matfilter1(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c511000817.matfilter2(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c511000817.synfilter1(c,g1,g2) + local tlv=c:GetLevel() + if c:GetFlagEffect(100000147)==0 then + return g1:IsExists(c511000817.synfilter3,1,nil,tlv) + else + return g1:IsExists(c511000817.synfilter3,1,nil,12-tlv) + end +end +function c511000817.synfilter3(c,lv) + return c:GetLevel()==lv +end +function c511000817.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local g1=Duel.GetMatchingGroup(c511000817.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local g2=Duel.GetMatchingGroup(c511000817.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return g2:IsExists(c511000817.synfilter1,1,nil,g1,g2) +end +function c511000817.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local g1=Duel.GetMatchingGroup(c511000817.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local g2=Duel.GetMatchingGroup(c511000817.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=g2:FilterSelect(tp,c511000817.synfilter1,1,1,nil,g1,g2) + local mt1=m3:GetFirst() + g:AddCard(mt1) + local lv1=mt1:GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if mt1:GetFlagEffect(100000147)==0 then + local t1=g1:FilterSelect(tp,c511000817.synfilter3,1,1,nil,lv1) + g:Merge(t1) + else + local t1=g1:FilterSelect(tp,c511000817.synfilter3,1,1,nil,12-lv1) + g:Merge(t1) + end + c:SetMaterial(g) + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(511000817,0)) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c511000817.cfilter(c,tp) + return c:IsFacedown() and c:IsControler(tp) +end +function c511000817.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000817.cfilter,1,nil,tp) +end +function c511000817.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000817.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetCode()~=1686814 + and (c:IsRace(RACE_DRAGON) or c511000817.collection[c:GetCode()] or c:IsSetCard(0x1045) or c:IsSetCard(0x1093)) +end +c511000817.collection={ + [86240887]=true;[86805855]=true;[70681994]=true;[511000705]=true;[1546123]=true; + [64599569]=true;[84243274]=true;[91998119]=true;[74157028]=true;[87751584]=true; + [40418351]=true;[79229522]=true;[2111707]=true;[25119460]=true;[9293977]=true; + [84058253]=true;[72959823]=true;[100000570]=true;[100000029]=true;[100000621]=true; + [54752875]=true;[86164529]=true;[21435914]=true;[6021033]=true;[2403771]=true; + [68084557]=true;[52145422]=true;[62560742]=true;[50321796]=true;[76891401]=true; + [511001275]=true;[1639384]=true;[77799846]=true;[95992081]=true;[511001273]=true; + [21970285]=true;[92870717]=true;[51531505]=true;[15146890]=true;[14920218]=true; + [88935103]=true;[83980492]=true;[19474136]=true;[15146890]=true;[14920218]=true; +} +function c511000817.spop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c511000817.cfilter,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000817.filter,tp,LOCATION_EXTRA,0,ct,ct,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511000817.chkop(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(1) +end +function c511000817.chkop1(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetLabel(1) +end +function c511000817.setcon1(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()==1 +end +function c511000817.resetop1(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetLabel(0) +end +function c511000817.chkcon2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000817.cfilter,1,nil,1-tp) +end +function c511000817.btfilter(c) + return c:IsRace(RACE_DRAGON) and c:GetSummonLocation()==LOCATION_EXTRA and c:GetCode()~=511000817 +end +function c511000817.con(e) + local c=e:GetHandler() + return Duel.IsExistingMatchingCard(c511000817.btfilter,c:GetControler(),LOCATION_MZONE,0,1,c) +end +function c511000817.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + return true +end +function c511000817.batcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return not Duel.IsExistingMatchingCard(c511000817.btfilter,c:GetControler(),LOCATION_MZONE,0,1,c) +end +function c511000817.battg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetAttackTarget()==c or (Duel.GetAttacker()==c and Duel.GetAttackTarget()~=nil) end + local g=Duel.GetMatchingGroup(c511000817.desfilter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000817.desfilter(c) + return c:IsFacedown() and c:IsDestructable() +end +function c511000817.batop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + local c=e:GetHandler() + if tc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511000817.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511000818.lua b/script/c511000818.lua new file mode 100644 index 00000000..b091f311 --- /dev/null +++ b/script/c511000818.lua @@ -0,0 +1,26 @@ +--キラー·スネーク +function c511000818.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_GRAVE) + e1:SetDescription(aux.Stringid(511000818,0)) + e1:SetCondition(c511000818.condition) + e1:SetTarget(c511000818.target) + e1:SetOperation(c511000818.operation) + c:RegisterEffect(e1) +end +function c511000818.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,8131171) +end +function c511000818.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c511000818.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + end +end diff --git a/script/c511000819.lua b/script/c511000819.lua new file mode 100644 index 00000000..fd22e9be --- /dev/null +++ b/script/c511000819.lua @@ -0,0 +1,60 @@ +--混沌帝龍 -終焉の使者- +function c511000819.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000819,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000819.spcon) + e1:SetOperation(c511000819.spop) + c:RegisterEffect(e1) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000819,1)) + e2:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511000819.sgcost) + e2:SetTarget(c511000819.sgtg) + e2:SetOperation(c511000819.sgop) + c:RegisterEffect(e2) +end +function c511000819.spfilter(c,att) + return c:IsAttribute(att) and c:IsAbleToRemoveAsCost() +end +function c511000819.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000819.spfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_LIGHT) + and Duel.IsExistingMatchingCard(c511000819.spfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_DARK) +end +function c511000819.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c511000819.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_LIGHT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c511000819.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_DARK) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c511000819.sgcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1000) + else Duel.PayLPCost(tp,1000) end +end +function c511000819.sgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetFieldGroup(tp,0xe,0xe) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,g:GetCount()*300) +end +function c511000819.sgop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0xe,0xe) + Duel.SendtoGrave(g,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_GRAVE) + Duel.BreakEffect() + Duel.Damage(1-tp,ct*300,REASON_EFFECT) +end diff --git a/script/c511000820.lua b/script/c511000820.lua new file mode 100644 index 00000000..e0431e22 --- /dev/null +++ b/script/c511000820.lua @@ -0,0 +1,23 @@ +--現世と冥界の逆転 +function c511000820.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_DRAW_PHASE) + e1:SetCondition(c511000820.condition) + e1:SetCost(c511000820.cost) + e1:SetOperation(c511000820.activate) + c:RegisterEffect(e1) +end +function c511000820.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)>=15 +end +function c511000820.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1000) + else Duel.PayLPCost(tp,1000) end +end +function c511000820.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SwapDeckAndGrave(tp) + Duel.SwapDeckAndGrave(1-tp) +end diff --git a/script/c511000821.lua b/script/c511000821.lua new file mode 100644 index 00000000..68a95b4e --- /dev/null +++ b/script/c511000821.lua @@ -0,0 +1,52 @@ +--王家の神殿 +function c511000821.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Trap activate in set turn + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_SZONE,0) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(511000821,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511000821.cost) + e3:SetTarget(c511000821.target) + e3:SetOperation(c511000821.operation) + c:RegisterEffect(e3) +end +function c511000821.cfilter(c) + return c:IsFaceup() and c:IsCode(89194033) and c:IsAbleToGraveAsCost() +end +function c511000821.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c511000821.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000821.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + g:AddCard(e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000821.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000821.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000821.filter,tp,0x43,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x32) +end +function c511000821.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,c511000821.filter,tp,0x43,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000822.lua b/script/c511000822.lua new file mode 100644 index 00000000..483dc7f2 --- /dev/null +++ b/script/c511000822.lua @@ -0,0 +1,81 @@ +--死のデッキ破壊ウイルス +function c511000822.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_TOHAND) + e1:SetCost(c511000822.cost) + e1:SetTarget(c511000822.target) + e1:SetOperation(c511000822.activate) + c:RegisterEffect(e1) +end +function c511000822.costfilter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackBelow(1000) +end +function c511000822.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511000822.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511000822.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511000822.tgfilter(c) + return c:IsFaceup() and c:GetAttack()>=1500 and c:IsDestructable() +end +function c511000822.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511000822.tgfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000822.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAttackAbove(1500) +end +function c511000822.activate(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE+LOCATION_HAND) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + local dg=conf:Filter(c511000822.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DRAW) + e1:SetOperation(c511000822.desop) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c511000822.turncon) + e2:SetOperation(c511000822.turnop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e2,tp) + e2:SetLabelObject(e1) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,3) + c511000822[e:GetHandler()]=e2 +end +function c511000822.desop(e,tp,eg,ep,ev,re,r,rp) + if ep==e:GetOwnerPlayer() then return end + local hg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND) + if hg:GetCount()==0 then return end + Duel.ConfirmCards(1-ep,hg) + local dg=hg:Filter(c511000822.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(ep) +end +function c511000822.turncon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000822.turnop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + e:GetHandler():SetTurnCounter(ct) + if ct==3 then + e:GetLabelObject():Reset() + e:GetOwner():ResetFlagEffect(1082946) + end +end diff --git a/script/c511000823.lua b/script/c511000823.lua new file mode 100644 index 00000000..4d4fdfeb --- /dev/null +++ b/script/c511000823.lua @@ -0,0 +1,81 @@ +--死のデッキ破壊ウイルス +function c511000823.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_TOHAND) + e1:SetCost(c511000823.cost) + e1:SetTarget(c511000823.target) + e1:SetOperation(c511000823.activate) + c:RegisterEffect(e1) +end +function c511000823.costfilter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackBelow(1000) +end +function c511000823.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511000823.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511000823.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511000823.tgfilter(c) + return c:IsFaceup() and c:GetAttack()>=1500 and c:IsDestructable() +end +function c511000823.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511000823.tgfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000823.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAttackAbove(1500) +end +function c511000823.activate(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE+LOCATION_HAND) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + local dg=conf:Filter(c511000823.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DRAW) + e1:SetOperation(c511000823.desop) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c511000823.turncon) + e2:SetOperation(c511000823.turnop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e2,tp) + e2:SetLabelObject(e1) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,3) + c511000823[e:GetHandler()]=e2 +end +function c511000823.desop(e,tp,eg,ep,ev,re,r,rp) + if ep==e:GetOwnerPlayer() then return end + local hg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND) + if hg:GetCount()==0 then return end + Duel.ConfirmCards(1-ep,hg) + local dg=hg:Filter(c511000823.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(ep) +end +function c511000823.turncon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000823.turnop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + e:GetHandler():SetTurnCounter(ct) + if ct==3 then + e:GetLabelObject():Reset() + e:GetOwner():ResetFlagEffect(1082946) + end +end diff --git a/script/c511000824.lua b/script/c511000824.lua new file mode 100644 index 00000000..579694ac --- /dev/null +++ b/script/c511000824.lua @@ -0,0 +1,35 @@ +--破壊輪 +function c511000824.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e1) + e1:SetTarget(c511000824.target) + e1:SetOperation(c511000824.activate) + c:RegisterEffect(e1) +end +function c511000824.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511000824.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000824.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000824.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000824.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511000824.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,atk,REASON_EFFECT,true) + Duel.Damage(tp,atk,REASON_EFFECT,true) + Duel.RDComplete() + end + end +end diff --git a/script/c511000825.lua b/script/c511000825.lua new file mode 100644 index 00000000..37f07e06 --- /dev/null +++ b/script/c511000825.lua @@ -0,0 +1,35 @@ +--破壊輪 +function c511000825.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e1) + e1:SetTarget(c511000825.target) + e1:SetOperation(c511000825.activate) + c:RegisterEffect(e1) +end +function c511000825.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511000825.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000825.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000825.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000825.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511000825.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,atk,REASON_EFFECT,true) + Duel.Damage(tp,atk,REASON_EFFECT,true) + Duel.RDComplete() + end + end +end diff --git a/script/c511000826.lua b/script/c511000826.lua new file mode 100644 index 00000000..9f2ce3a3 --- /dev/null +++ b/script/c511000826.lua @@ -0,0 +1,18 @@ +--Burgundy the Magic Elf +function c511000826.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetOperation(c511000826.damop) + c:RegisterEffect(e1) +end +function c511000826.filter(c) + return c:IsReason(REASON_DISCARD) +end +function c511000826.damop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c511000826.filter,nil) + Duel.Damage(1-tp,ct*400,REASON_EFFECT) +end diff --git a/script/c511000827.lua b/script/c511000827.lua new file mode 100644 index 00000000..007a165c --- /dev/null +++ b/script/c511000827.lua @@ -0,0 +1,47 @@ +--Sign Vehicle +function c511000827.initial_effect(c) + --seal attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000827,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000827.cost) + e1:SetTarget(c511000827.tg) + e1:SetOperation(c511000827.op) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetCondition(c511000827.con) + e2:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_MONSTER)) + c:RegisterEffect(e2) +end +function c511000827.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c511000827.filter(c) + return c:IsFaceup() and not (c:IsHasEffect(EFFECT_CANNOT_ATTACK) or c:IsHasEffect(EFFECT_CANNOT_ATTACK_ANNOUNCE)) +end +function c511000827.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511000827.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000827.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000827.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000827.op(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_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c511000827.con(e) + return e:GetHandler():IsDefensePos() +end diff --git a/script/c511000828.lua b/script/c511000828.lua new file mode 100644 index 00000000..0c9e064d --- /dev/null +++ b/script/c511000828.lua @@ -0,0 +1,48 @@ +--Martyr Flag +function c511000828.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000828.condition) + e1:SetCost(c511000828.cost) + e1:SetOperation(c511000828.activate) + c:RegisterEffect(e1) +end +function c511000828.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and ((ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) or (ph==PHASE_DAMAGE and not Duel.IsDamageCalculated())) +end +function c511000828.cfilter(c,tp) + return ((c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() and c:IsLocation(LOCATION_HAND)) or c:IsReleasable()) + and Duel.IsExistingMatchingCard(c511000828.filter,tp,LOCATION_MZONE,0,1,c) +end +function c511000828.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511000828.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000828.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=Duel.SelectMatchingCard(tp,c511000828.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil,tp) + if sg:GetFirst():IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(sg,REASON_COST) + else + Duel.Release(sg,REASON_COST) + end +end +function c511000828.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000828.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511000829.lua b/script/c511000829.lua new file mode 100644 index 00000000..d1c9e4fa --- /dev/null +++ b/script/c511000829.lua @@ -0,0 +1,89 @@ +--Re-Xyz +function c511000829.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000829.target) + e1:SetOperation(c511000829.operation) + c:RegisterEffect(e1) +end +function c511000829.filter(c,e,tp) + local ct=c.minxyzct + return c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,true) and c:IsType(TYPE_XYZ) + and Duel.IsExistingTarget(c511000829.matfilter,tp,LOCATION_GRAVE,0,1,nil,tp,ct) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000829.matfilter(c,tp,ct) + return c:GetLevel()>0 + and Duel.IsExistingTarget(c511000829.matfilter2,tp,LOCATION_GRAVE,0,ct-1,c,c:GetLevel()) +end +function c511000829.matfilter2(c,lv) + return c:GetLevel()==lv +end +function c511000829.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000829.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000829.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000829.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local ct=g:GetFirst().minxyzct + local ct2=g:GetFirst().maxxyzct + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local mat=Duel.SelectTarget(tp,c511000829.matfilter,tp,LOCATION_GRAVE,0,1,1,nil,tp,ct) + local lv=mat:GetFirst():GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local mat2=Duel.SelectTarget(tp,c511000829.matfilter2,tp,LOCATION_GRAVE,0,ct-1,ct2-1,mat:GetFirst(),lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000829.xyzfilter(c) + return not c:IsType(TYPE_XYZ) +end +function c511000829.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:Filter(Card.IsType,nil,TYPE_XYZ):GetFirst() + g=g:Filter(c511000829.xyzfilter,nil) + tc:SetMaterial(g) + Duel.Overlay(tc,g) + Duel.SpecialSummon(tc,SUMMON_TYPE_XYZ,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() +end diff --git a/script/c511000830.lua b/script/c511000830.lua new file mode 100644 index 00000000..5e3022df --- /dev/null +++ b/script/c511000830.lua @@ -0,0 +1,34 @@ +--Overlay Blessing +function c511000830.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511000830.condition) + e1:SetTarget(c511000830.target) + e1:SetOperation(c511000830.activate) + c:RegisterEffect(e1) +end +function c511000830.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsType,1,nil,TYPE_XYZ) and ep~=tp and Duel.GetFieldGroupCount(e:GetHandler():GetControler(),LOCATION_HAND,0)==0 +end +function c511000830.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511000830.filter(c) + return c:IsFaceup() and c:GetOverlayCount()>0 +end +function c511000830.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ) + local g=Duel.SelectMatchingCard(p,c511000830.filter,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + local d=g:GetFirst():GetOverlayCount() + Duel.Draw(p,d,REASON_EFFECT) + end +end diff --git a/script/c511000831.lua b/script/c511000831.lua new file mode 100644 index 00000000..55f77ee7 --- /dev/null +++ b/script/c511000831.lua @@ -0,0 +1,39 @@ +--Return Marker +function c511000831.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511000831.condition) + e1:SetTarget(c511000831.target) + e1:SetOperation(c511000831.activate) + c:RegisterEffect(e1) +end +function c511000831.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return false end + if re:IsHasCategory(CATEGORY_NEGATE) + and Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ep==tp then return false end + local ex2,cg2,ct2,cp2,cv2=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex2 and (cp2==tp or cp2==PLAYER_ALL) then return true end + ex2,cg2,ct2,cp2,cv2=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ((ex2 and (cp2==tp or cp2==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER)) + or (ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0)) + and ep~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c511000831.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,eg:GetFirst(),0,tp,eg:GetFirst():GetAttack()) + end +end +function c511000831.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Damage(1-tp,eg:GetFirst():GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511000832.lua b/script/c511000832.lua new file mode 100644 index 00000000..2191b1ef --- /dev/null +++ b/script/c511000832.lua @@ -0,0 +1,31 @@ +--Mano a Mano +function c511000832.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --+1000 damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetOperation(c511000832.dop) + c:RegisterEffect(e2) + --selfdes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511000832.sdcon) + c:RegisterEffect(e3) +end +function c511000832.sdcon(e) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and (Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>1 + or Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)>1) +end +function c511000832.dop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev+1000) + Duel.ChangeBattleDamage(1-tp,ev+1000) +end diff --git a/script/c511000833.lua b/script/c511000833.lua new file mode 100644 index 00000000..8ad91a76 --- /dev/null +++ b/script/c511000833.lua @@ -0,0 +1,58 @@ +--Immortal Homeostasis +function c511000833.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(c511000833.target) + e1:SetOperation(c511000833.operation) + c:RegisterEffect(e1) + --Indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + 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) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000833,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511000833.damcon) + e1:SetOperation(c511000833.damop) + c:RegisterEffect(e1) +end +function c511000833.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 c511000833.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 c511000833.damcon(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + local p=eq:GetControler() + return p==Duel.GetTurnPlayer() and eq:GetAttack()~=eq:GetBaseAttack() +end +function c511000833.damop(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetEquipTarget():GetControler() + Duel.Damage(p,300,REASON_EFFECT) +end diff --git a/script/c511000834.lua b/script/c511000834.lua new file mode 100644 index 00000000..acb71f16 --- /dev/null +++ b/script/c511000834.lua @@ -0,0 +1,84 @@ +--Light to the Depths +function c511000834.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511000834.condition) + e1:SetTarget(c511000834.target) + e1:SetOperation(c511000834.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000834.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 and eg:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_LIGHT) +end +function c511000834.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,5) +end +function c511000834.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.DiscardDeck(1-tp,5,REASON_EFFECT) + Duel.BreakEffect() + local h=Duel.GetDecktopGroup(1-tp,1) + local tc=h:GetFirst() + Duel.Draw(1-tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c511000834.regop) + e1:SetLabel(tc:GetCode()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + e2:SetLabelObject(e1) + e2:SetOperation(c511000834.regop2) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(e3,tp) + local e4=e2:Clone() + e4:SetCode(EVENT_CHAINING) + Duel.RegisterEffect(e4,tp) + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetCountLimit(1) + e5:SetCondition(c511000834.damcon) + e5:SetOperation(c511000834.damop) + e5:SetReset(RESET_PHASE+PHASE_END) + e5:SetLabelObject(e1) + Duel.RegisterEffect(e5,tp) + Duel.BreakEffect() + Duel.ShuffleHand(1-tp) + end +end +function c511000834.regop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then return end + local tc=eg:GetFirst() + if tc:GetCode()==e:GetLabel() then + e:SetLabel(0) + end +end +function c511000834.regop2(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()==0 then return end + local tc=eg:GetFirst() + if tc:GetCode()==e:GetLabelObject():GetLabel() then + e:GetLabelObject():SetLabel(0) + end +end +function c511000834.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()~=0 +end +function c511000834.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,2000,REASON_EFFECT) +end diff --git a/script/c511000835.lua b/script/c511000835.lua new file mode 100644 index 00000000..62814077 --- /dev/null +++ b/script/c511000835.lua @@ -0,0 +1,61 @@ +--Destruction Insurance +function c511000835.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(c511000835.target) + e1:SetOperation(c511000835.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) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000835,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511000835.damcon) + e3:SetTarget(c511000835.damtg) + e3:SetOperation(c511000835.damop) + c:RegisterEffect(e3) +end +function c511000835.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 c511000835.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 c511000835.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + if not ec then return end + e:SetLabelObject(ec) + return c:IsReason(REASON_LOST_TARGET) and ec:IsReason(REASON_DESTROY) +end +function c511000835.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetLabelObject():GetTextAttack()/2 + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000835.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000836.lua b/script/c511000836.lua new file mode 100644 index 00000000..60ab6e8c --- /dev/null +++ b/script/c511000836.lua @@ -0,0 +1,31 @@ +--Mind Monster +function c511000836.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000836.target) + e1:SetOperation(c511000836.activate) + c:RegisterEffect(e1) +end +function c511000836.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_DECK+LOCATION_EXTRA)>0 end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c511000836.filter(c,code) + return c:IsType(TYPE_MONSTER) and c:IsCode(code) +end +function c511000836.activate(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local sg=Duel.GetMatchingGroup(c511000836.filter,1-tp,LOCATION_DECK+LOCATION_EXTRA,0,nil,ac) + Duel.ConfirmCards(tp,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=sg:Select(tp,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Damage(1-tp,tc:GetAttack()/2,REASON_EFFECT) + end +end diff --git a/script/c511000837.lua b/script/c511000837.lua new file mode 100644 index 00000000..ddccc82b --- /dev/null +++ b/script/c511000837.lua @@ -0,0 +1,22 @@ +--Wicked Trample +function c511000837.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage amp + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c511000837.dcon) + e2:SetOperation(c511000837.dop) + c:RegisterEffect(e2) +end +function c511000837.dcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()~=nil +end +function c511000837.dop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(1-tp,ev*2) +end diff --git a/script/c511000838.lua b/script/c511000838.lua new file mode 100644 index 00000000..b17c0196 --- /dev/null +++ b/script/c511000838.lua @@ -0,0 +1,27 @@ +--Infernity Burst +function c511000838.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000838.target) + e1:SetOperation(c511000838.activate) + c:RegisterEffect(e1) +end +function c511000838.filter(c) + return c:IsFaceup() and c:IsSetCard(0xb) +end +function c511000838.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000838.filter,tp,LOCATION_MZONE,0,1,nil) end + local dam=Duel.GetMatchingGroupCount(c511000838.filter,tp,LOCATION_MZONE,0,nil)*800 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511000838.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511000838.filter,tp,LOCATION_MZONE,0,nil)*800 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511000839.lua b/script/c511000839.lua new file mode 100644 index 00000000..ff201b5c --- /dev/null +++ b/script/c511000839.lua @@ -0,0 +1,29 @@ +--Dodge Roll +function c511000839.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetOperation(c511000839.operation) + c:RegisterEffect(e1) +end +function c511000839.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckEvent(EVENT_PRE_BATTLE_DAMAGE) then + Duel.ChangeBattleDamage(tp,0) + Duel.ChangeBattleDamage(1-tp,0) + else + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetCountLimit(1) + e1:SetOperation(c511000839.nodamop) + Duel.RegisterEffect(e1,tp) + end +end +function c511000839.nodamop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) + Duel.ChangeBattleDamage(1-tp,0) +end diff --git a/script/c511000840.lua b/script/c511000840.lua new file mode 100644 index 00000000..122e770d --- /dev/null +++ b/script/c511000840.lua @@ -0,0 +1,23 @@ +--Mirror Labyrinth +function c511000840.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --multi attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCondition(c511000840.condition) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511000840.condition(e) + local g=Duel.GetFieldGroup(e:GetHandlerPlayer(),LOCATION_MZONE,0) + local ct=g:GetCount() + local tg=g:GetFirst() + return ct==1 and tg:IsFaceup() and tg:IsLevelBelow(4) +end diff --git a/script/c511000841.lua b/script/c511000841.lua new file mode 100644 index 00000000..7eeef436 --- /dev/null +++ b/script/c511000841.lua @@ -0,0 +1,39 @@ +--Damage Summon +function c511000841.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000841,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCost(c511000841.atcost) + e1:SetCondition(c511000841.atcon) + e1:SetTarget(c511000841.attg) + e1:SetOperation(c511000841.atop) + c:RegisterEffect(e1) +end +function c511000841.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c511000841.atcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + local a=Duel.GetAttacker() + return a:IsControler(tp) and at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511000841.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()<=4 +end +function c511000841.attg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000841.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000841.atop(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,c511000841.filter,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 diff --git a/script/c511000842.lua b/script/c511000842.lua new file mode 100644 index 00000000..a2abbbdb --- /dev/null +++ b/script/c511000842.lua @@ -0,0 +1,39 @@ +--Power Bind +function c511000842.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511000842.tg) + e1:SetOperation(c511000842.op) + c:RegisterEffect(e1) +end +function c511000842.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000842.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local ph=Duel.GetCurrentPhase() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(0) + if Duel.GetTurnPlayer()~=tp and ph-3 + and Duel.IsExistingMatchingCard(c511000843.spcfilter,tp,LOCATION_ONFIELD,0,1,nil,52286175) + and Duel.IsExistingMatchingCard(c511000843.spcfilter,tp,LOCATION_ONFIELD,0,1,nil,15175429) + and Duel.IsExistingMatchingCard(c511000843.spcfilter,tp,LOCATION_ONFIELD,0,1,nil,89493368) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511000843.spcfilter,tp,LOCATION_ONFIELD,0,1,1,nil,52286175) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511000843.spcfilter,tp,LOCATION_ONFIELD,0,1,1,nil,15175429) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g3=Duel.SelectMatchingCard(tp,c511000843.spcfilter,tp,LOCATION_ONFIELD,0,1,1,nil,89493368) + g1:Merge(g2) + g1:Merge(g3) + Duel.SendtoGrave(g1,REASON_COST) +end +function c511000843.spfilter(c,e,tp) + return c:IsCode(16898077) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000843.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000843.spfilter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,0,tp,0x13) +end +function c511000843.activate(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,c511000843.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetCountLimit(1) + e1:SetTarget(c511000843.reptg) + e1:SetReset(RESET_EVENT+0x1fe0000) + g:GetFirst():RegisterEffect(e1) + g:GetFirst():CompleteProcedure() + end +end +function c511000843.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + return true +end diff --git a/script/c511000844.lua b/script/c511000844.lua new file mode 100644 index 00000000..76afd5b8 --- /dev/null +++ b/script/c511000844.lua @@ -0,0 +1,50 @@ +--Ultimate Flare +function c511000844.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000844.target) + e1:SetOperation(c511000844.activate) + c:RegisterEffect(e1) +end +function c511000844.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,511000845,0,0x4011,0,0,10,RACE_MACHINE,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000844.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511000845,0,0x4011,0,0,10,RACE_MACHINE,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,511000845) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DESTROY) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511000844.damop) + e2:SetLabel(tp) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511000844.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-e:GetLabel(),800,REASON_EFFECT) +end diff --git a/script/c511000846.lua b/script/c511000846.lua new file mode 100644 index 00000000..4ca6eb13 --- /dev/null +++ b/script/c511000846.lua @@ -0,0 +1,40 @@ +--Crossline Counter +function c511000846.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511000846.condition) + e1:SetTarget(c511000846.target) + e1:SetOperation(c511000846.activate) + c:RegisterEffect(e1) +end +function c511000846.condition(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(ev) + return ep==tp and Duel.GetTurnPlayer()~=tp and ev~=nil and ev>0 +end +function c511000846.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000846.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local at=Duel.GetAttacker() + local ad=Duel.GetAttackTarget() + if 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) + e1:SetValue(e:GetLabel()*2) + tc:RegisterEffect(e1) + end + Duel.CalculateDamage(at,tc) + if ad:IsStatus(STATUS_BATTLE_DESTROYED) then + Duel.Destroy(ad,REASON_BATTLE) + end +end diff --git a/script/c511000847.lua b/script/c511000847.lua new file mode 100644 index 00000000..4fa2b47d --- /dev/null +++ b/script/c511000847.lua @@ -0,0 +1,85 @@ +--Shard of Hope +function c511000847.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000847,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511000847.drcon) + e2:SetTarget(c511000847.drtg) + e2:SetOperation(c511000847.drop) + c:RegisterEffect(e2) +end +function c511000847.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511000847.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000847.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local h=Duel.GetDecktopGroup(tp,1) + local tc=h:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if tc:IsType(TYPE_TRAP) and tc:CheckActivateEffect(false,false,false)~=nil and e:GetHandler():IsDestructable() then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + else + Duel.Destroy(tc,REASON_EFFECT) + Duel.SendtoGrave(tc,REASON_EFFECT) + end + end +end diff --git a/script/c511000848.lua b/script/c511000848.lua new file mode 100644 index 00000000..fab8e26a --- /dev/null +++ b/script/c511000848.lua @@ -0,0 +1,36 @@ +--Counterattack Beacon +function c511000848.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511000848.condition) + e1:SetTarget(c511000848.target) + e1:SetOperation(c511000848.activate) + c:RegisterEffect(e1) +end +function c511000848.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsControler(1-tp) +end +function c511000848.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000848.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local at=eg:GetFirst() + if 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+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + end + Duel.CalculateDamage(tc,at) +end diff --git a/script/c511000849.lua b/script/c511000849.lua new file mode 100644 index 00000000..b18b2c57 --- /dev/null +++ b/script/c511000849.lua @@ -0,0 +1,33 @@ +--Baton of the Hero +function c511000849.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(c511000849.condition) + e1:SetOperation(c511000849.activate) + c:RegisterEffect(e1) +end +function c511000849.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000850.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000850.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local ct=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_SYNCHRO)*600 + if 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) + e1:SetValue(ct) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000851.lua b/script/c511000851.lua new file mode 100644 index 00000000..659517ac --- /dev/null +++ b/script/c511000851.lua @@ -0,0 +1,37 @@ +--Synchro Destructor +function c511000851.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000851.condition) + e1:SetTarget(c511000851.target) + e1:SetOperation(c511000851.activate) + c:RegisterEffect(e1) +end +function c511000851.cfilter(c,tp) + local rc=c:GetReasonCard() + return c:IsReason(REASON_BATTLE) and rc:IsType(TYPE_SYNCHRO) and rc:IsControler(tp) and rc:IsRelateToBattle() +end +function c511000851.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000851.cfilter,1,nil,tp) +end +function c511000851.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=eg:Filter(c511000851.cfilter,nil,tp) + local tc=g:GetFirst() + local dam=tc:GetTextAttack()/2 + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + if tc:IsType(TYPE_SYNCHRO) then + Duel.SetTargetParam(dam*2) + else + Duel.SetTargetParam(dam) + end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000851.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000852.lua b/script/c511000852.lua new file mode 100644 index 00000000..07997d44 --- /dev/null +++ b/script/c511000852.lua @@ -0,0 +1,80 @@ +--Chain Arrow +function c511000852.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + 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(c511000852.condition) + e1:SetTarget(c511000852.target) + e1:SetOperation(c511000852.activate) + c:RegisterEffect(e1) +end +function c511000852.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000852.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000852.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetOperation(c511000852.op) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(511000852,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c511000852.losecon) + e2:SetTarget(c511000852.losetg) + e2:SetOperation(c511000852.loseop) + e2:SetLabelObject(tc) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c511000852.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if c:IsFaceup() and bc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(500) + c:RegisterEffect(e1) + end +end +function c511000852.losecon(e,tp,eg,ep,ev,re,r,rp) + local des=eg:GetFirst() + local rc=des:GetReasonCard() + return des:IsLocation(LOCATION_GRAVE) and des:IsType(TYPE_MONSTER) and rc:IsRelateToBattle() and rc==e:GetLabelObject() +end +function c511000852.losetg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000852.loseop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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+PHASE_END) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000853.lua b/script/c511000853.lua new file mode 100644 index 00000000..3e5c0ae6 --- /dev/null +++ b/script/c511000853.lua @@ -0,0 +1,15 @@ +--Klaret the Elite Magic Elf +function c511000853.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c:GetAttack()*2) + e1:SetCondition(c511000853.atkcon) + c:RegisterEffect(e1) +end +function c511000853.atkcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_HAND)==0 +end diff --git a/script/c511000854.lua b/script/c511000854.lua new file mode 100644 index 00000000..6693c69d --- /dev/null +++ b/script/c511000854.lua @@ -0,0 +1,27 @@ +--Overlay Unit Reborn +function c511000854.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000854.target) + e1:SetOperation(c511000854.activate) + c:RegisterEffect(e1) +end +function c511000854.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and bit.band(c:GetPreviousLocation(),LOCATION_OVERLAY)~=0 +end +function c511000854.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c511000854.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE) +end +function c511000854.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000854.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + if g:GetCount()>1 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000855.lua b/script/c511000855.lua new file mode 100644 index 00000000..ac3dc641 --- /dev/null +++ b/script/c511000855.lua @@ -0,0 +1,50 @@ +--Synchro Deception +function c511000855.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000855.target) + e1:SetOperation(c511000855.activate) + c:RegisterEffect(e1) +end +function c511000855.tgfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsAbleToGrave() +end +function c511000855.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000855.tgfilter,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_EXTRA) +end +function c511000855.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000855.tgfilter,tp,LOCATION_EXTRA,0,1,1,nil) + local check=false + if g:GetFirst():IsSynchroSummonable(nil) then + check=true + end + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + if check==true and Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 then + local tc=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(g:GetFirst():GetAttack()/2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetProperty(EFFECT_FLAG_OATH) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511000855.ftarget) + e2:SetLabel(tc:GetFieldID()) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end + end +end +function c511000855.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end diff --git a/script/c511000856.lua b/script/c511000856.lua new file mode 100644 index 00000000..1317782b --- /dev/null +++ b/script/c511000856.lua @@ -0,0 +1,30 @@ +--Wave Force +function c511000856.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511000856.condition) + e1:SetTarget(c511000856.target) + e1:SetOperation(c511000856.activate) + c:RegisterEffect(e1) +end +function c511000856.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsType(TYPE_SYNCHRO) +end +function c511000856.filter(c) + return c:IsAttackPos() and c:IsDestructable() +end +function c511000856.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000856.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000856.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000856.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000856.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511000857.lua b/script/c511000857.lua new file mode 100644 index 00000000..6c8d76fa --- /dev/null +++ b/script/c511000857.lua @@ -0,0 +1,47 @@ +--Harmony Crystal +function c511000857.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000857.cost) + e1:SetTarget(c511000857.target) + e1:SetOperation(c511000857.activate) + c:RegisterEffect(e1) +end +function c511000857.cfilter1(c,e,tid) + return c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemoveAsCost() and Duel.IsExistingMatchingCard(c511000857.cfilter2,c:GetControler(),LOCATION_GRAVE,0,1,c,c,e) + and c:IsReason(REASON_DESTROY) and c:GetTurnID()==tid +end +function c511000857.cfilter2(c,ban1,e) + local tp=c:GetControler() + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() and Duel.IsExistingTarget(c511000857.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,ban1,c) +end +function c511000857.filter(c,e,tp,ban1,ban2) + return c:IsType(TYPE_SYNCHRO) and c~=ban1 and c~=ban2 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000857.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tid=Duel.GetTurnCount() + if chk==0 then return Duel.IsExistingMatchingCard(c511000857.cfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local cg1=Duel.SelectMatchingCard(tp,c511000857.cfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tid) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local cg2=Duel.SelectMatchingCard(tp,c511000857.cfilter2,tp,LOCATION_GRAVE,0,1,1,cg1:GetFirst(),cg1:GetFirst(),e) + cg1:Merge(cg2) + Duel.Remove(cg1,POS_FACEUP,REASON_COST) +end +function c511000857.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000857.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,nil,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000857.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Damage(1-tp,tc:GetAttack()/2,REASON_EFFECT) + end +end diff --git a/script/c511000858.lua b/script/c511000858.lua new file mode 100644 index 00000000..68b2da9a --- /dev/null +++ b/script/c511000858.lua @@ -0,0 +1,36 @@ +--Reflect Barrier +function c511000858.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000858.condition) + e1:SetOperation(c511000858.operation) + c:RegisterEffect(e1) +end +function c511000858.condition(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511000858.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_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511000858.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511000858.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c511000859.lua b/script/c511000859.lua new file mode 100644 index 00000000..d685162f --- /dev/null +++ b/script/c511000859.lua @@ -0,0 +1,54 @@ +--Shock Reborn +function c511000859.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511000859.condition) + e1:SetTarget(c511000859.target) + e1:SetOperation(c511000859.operation) + c:RegisterEffect(e1) +end +function c511000859.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511000859.filter(c,e,tp,dam) + return c:IsAttackBelow(dam) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000859.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000859.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,Duel.GetBattleDamage(tp)/2) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511000859.operation(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000859.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + --Activate + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511000859.spcon) + e2:SetOperation(c511000859.spop) + e2:SetLabel(Duel.GetBattleDamage(tp)/2) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) +end +function c511000859.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511000859.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) +end +function c511000859.spop(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,c511000859.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,e:GetLabel()) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000860.lua b/script/c511000860.lua new file mode 100644 index 00000000..2a45b8b1 --- /dev/null +++ b/script/c511000860.lua @@ -0,0 +1,63 @@ +--Summon Tax +function c511000860.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) + e1:SetTarget(c511000860.tg) + c:RegisterEffect(e1) + --Damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000860,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511000860.target) + e2:SetOperation(c511000860.operation) + c:RegisterEffect(e2) + local e4=e2:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c511000860.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetCard(eg) + tc=eg:GetFirst() + Duel.SetTargetPlayer(ep) + Duel.SetTargetParam(tc:GetAttack()/2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tc:GetControler(),tc:GetAttack()/2) +end +function c511000860.filter(c,e) + return c:IsFaceup() and c:IsRelateToEffect(e) +end +function c511000860.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000860.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + c:SetTurnCounter(0) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetOperation(c511000860.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + c:RegisterEffect(e1) +end +function c511000860.desop(e,tp,eg,ep,ev,re,r,rp) + if tp~=Duel.GetTurnPlayer() then return end + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==2 then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c511000861.lua b/script/c511000861.lua new file mode 100644 index 00000000..d9e160cc --- /dev/null +++ b/script/c511000861.lua @@ -0,0 +1,45 @@ +--Power Shift +function c511000861.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(c511000861.condition) + e1:SetTarget(c511000861.target) + e1:SetOperation(c511000861.activate) + c:RegisterEffect(e1) +end +function c511000861.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000861.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000861.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DESTROY) + e3:SetLabel(tp) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetOperation(c511000861.drop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end +function c511000861.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(e:GetLabel(),1,REASON_EFFECT) +end diff --git a/script/c511000862.lua b/script/c511000862.lua new file mode 100644 index 00000000..89334893 --- /dev/null +++ b/script/c511000862.lua @@ -0,0 +1,35 @@ +--Stay Force +function c511000862.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511000862.cost) + e2:SetCondition(c511000862.condition) + e2:SetTarget(c511000862.target) + e2:SetOperation(c511000862.activate) + c:RegisterEffect(e2) +end +function c511000862.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 c511000862.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TODECK) + return Duel.GetCurrentPhase()==PHASE_END and re:IsActiveType(TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ) and ((ex and tg~=nil + and tg:IsContains(re:GetHandler())) or (re:GetHandler():IsCode(67030233) or re:GetHandler():IsCode(7841112))) and Duel.IsChainDisablable(ev) +end +function c511000862.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511000862.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c511000863.lua b/script/c511000863.lua new file mode 100644 index 00000000..32ef52e0 --- /dev/null +++ b/script/c511000863.lua @@ -0,0 +1,27 @@ +--Life Gardna +function c511000863.initial_effect(c) + --gain lp + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000863,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000863.reccon) + e1:SetTarget(c511000863.rectg) + e1:SetOperation(c511000863.recop) + c:RegisterEffect(e1) +end +function c511000863.reccon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO +end +function c511000863.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,800) +end +function c511000863.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c511000864.lua b/script/c511000864.lua new file mode 100644 index 00000000..72478239 --- /dev/null +++ b/script/c511000864.lua @@ -0,0 +1,58 @@ +--Emerging Awakening +function c511000864.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000864.target) + e1:SetOperation(c511000864.activate) + c:RegisterEffect(e1) +end +function c511000864.filter(c) + return c:GetLevel()>0 and c:IsAbleToRemove() +end +function c511000864.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=eg:GetFirst() + if chk==0 then return tc and ep==tp and tc:IsFaceup() + and Duel.IsExistingMatchingCard(c511000864.filter,tp,LOCATION_MZONE,0,1,tc) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511000864.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000864.filter,tp,LOCATION_MZONE,0,1,1,tc) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + --sp summon + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_REMOVED) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + e2:SetOperation(c511000864.spop) + e2:SetLabel(0) + g:GetFirst():RegisterEffect(e2) + Duel.Damage(1-tp,g:GetFirst():GetLevel()*100,REASON_EFFECT) + end +end +function c511000864.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + if ct>=1 then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(e:GetHandler():GetLevel()*100) + e:GetHandler():RegisterEffect(e1) + end +end diff --git a/script/c511000865.lua b/script/c511000865.lua new file mode 100644 index 00000000..235c6e5a --- /dev/null +++ b/script/c511000865.lua @@ -0,0 +1,47 @@ +--Star Shift +function c511000865.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000865.target) + e1:SetOperation(c511000865.activate) + c:RegisterEffect(e1) +end +function c511000865.filter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToExtra() and Duel.IsExistingMatchingCard(c511000865.spfilter,tp,LOCATION_EXTRA,0,1,nil,c:GetLevel(),c:GetCode(),e,tp) +end +function c511000865.spfilter(c,lv,code,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:GetLevel()==lv and c:GetCode()~=code and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000865.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000865.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000865.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511000865.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511000865.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000865.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetLevel(),tc:GetCode(),e,tp):GetFirst() + if Duel.SpecialSummonStep(g,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + g:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + g:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end + end +end diff --git a/script/c511000866.lua b/script/c511000866.lua new file mode 100644 index 00000000..bc5c1c94 --- /dev/null +++ b/script/c511000866.lua @@ -0,0 +1,32 @@ +--Xyz Treasure Ticket +function c511000866.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c511000866.target) + e1:SetOperation(c511000866.operation) + c:RegisterEffect(e1) +end +function c511000866.filter(c) + return c:IsFaceup() and c:GetRank()<=4 and c:GetRank()>0 +end +function c511000866.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511000866.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000866.filter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsPlayerCanDraw(tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000866.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(g:GetFirst():GetRank()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511000866.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Draw(p,tc:GetRank(),REASON_EFFECT) + end +end diff --git a/script/c511000867.lua b/script/c511000867.lua new file mode 100644 index 00000000..4fe2241f --- /dev/null +++ b/script/c511000867.lua @@ -0,0 +1,43 @@ +--Wave Wall +function c511000867.initial_effect(c) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000867,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetLabel(0) + e2:SetCondition(c511000867.condition) + e2:SetOperation(c511000867.activate) + c:RegisterEffect(e2) + --reset + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000867.rescon) + e3:SetOperation(c511000867.resop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) +end +function c511000867.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511000867.condition(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c511000867.filter,tp,LOCATION_MZONE,0,nil) + return not e:GetHandler():IsStatus(STATUS_CHAINING) and tp~=Duel.GetTurnPlayer() and ct>0 and e:GetLabel()0 +end +function c511000867.resop(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetLabel(0) +end diff --git a/script/c511000868.lua b/script/c511000868.lua new file mode 100644 index 00000000..d3e80e45 --- /dev/null +++ b/script/c511000868.lua @@ -0,0 +1,49 @@ +--ドル·ドラ +function c511000868.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetOperation(c511000868.regop) + c:RegisterEffect(e1) +end +function c511000868.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsReason(REASON_DESTROY) and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 then + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000868,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCost(c511000868.spcost) + e1:SetTarget(c511000868.sptg) + e1:SetOperation(c511000868.spop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511000868.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(511000868)==0 end + c:RegisterFlagEffect(511000868,nil,0,1) +end +function c511000868.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 c511000868.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) + end +end diff --git a/script/c511000869.lua b/script/c511000869.lua new file mode 100644 index 00000000..407dcb51 --- /dev/null +++ b/script/c511000869.lua @@ -0,0 +1,92 @@ +--Wild Heart +function c511000869.initial_effect(c) + --sp summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000869,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511000869.spcon) + e1:SetTarget(c511000869.sptg) + e1:SetOperation(c511000869.spop) + c:RegisterEffect(e1) + --direct atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000869,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetCondition(c511000869.descon) + e3:SetTarget(c511000869.destg) + e3:SetOperation(c511000869.desop) + c:RegisterEffect(e3) + --sp summon again + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000869,2)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DESTROYED) + e4:SetCondition(c511000869.spcon2) + e4:SetTarget(c511000869.sptg) + e4:SetOperation(c511000869.spop2) + c:RegisterEffect(e4) +end +function c511000869.filter(c) + return c:IsPreviousLocation(LOCATION_HAND) and c:IsType(TYPE_MONSTER) +end +function c511000869.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000869.filter,1,nil) +end +function c511000869.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000869.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511000869.descon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetAttackTarget()==nil + and Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)>0 +end +function c511000869.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 c511000869.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end +function c511000869.spcon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return not c:IsReason(REASON_BATTLE) and re and re:GetOwner()~=c and c:IsLocation(LOCATION_GRAVE) +end +function c511000869.spop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetOperation(c511000869.rmop) + c:RegisterEffect(e1) + end +end +function c511000869.rmop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511000870.lua b/script/c511000870.lua new file mode 100644 index 00000000..cb39bca7 --- /dev/null +++ b/script/c511000870.lua @@ -0,0 +1,36 @@ +--Double Delta Warrior +function c511000870.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000870.spcon) + c:RegisterEffect(e1) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c511000870.cacon) + e1:SetOperation(c511000870.caop) + c:RegisterEffect(e1) +end +function c511000870.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511000870.cacon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_SYNCHRO +end +function c511000870.caop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511000871.lua b/script/c511000871.lua new file mode 100644 index 00000000..213dd32a --- /dev/null +++ b/script/c511000871.lua @@ -0,0 +1,39 @@ +--Fake Gardna +function c511000871.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000871,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511000871.spcon) + e1:SetTarget(c511000871.sptg) + e1:SetOperation(c511000871.spop) + c:RegisterEffect(e1) +end +function c511000871.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511000871.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511000871.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetCondition(c511000871.recon) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + end +end +function c511000871.recon(e) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) +end diff --git a/script/c511000872.lua b/script/c511000872.lua new file mode 100644 index 00000000..9e2ba266 --- /dev/null +++ b/script/c511000872.lua @@ -0,0 +1,52 @@ +--Salvagent +function c511000872.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(50088247,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c511000872.cost) + e1:SetTarget(c511000872.tg) + e1:SetOperation(c511000872.op) + c:RegisterEffect(e1) +end +function c511000872.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511000872.filter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000872.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000872.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511000872.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000872.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511000872.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_REMOVE_TYPE) + e3:SetValue(TYPE_SYNCHRO) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end diff --git a/script/c511000873.lua b/script/c511000873.lua new file mode 100644 index 00000000..824e3145 --- /dev/null +++ b/script/c511000873.lua @@ -0,0 +1,77 @@ +--Star Excursion +function c511000873.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000873.rmcon) + e1:SetTarget(c511000873.rmtg) + e1:SetOperation(c511000873.rmop) + c:RegisterEffect(e1) +end +function c511000873.rmcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return at and a:IsType(TYPE_SYNCHRO) and at:IsType(TYPE_SYNCHRO) +end +function c511000873.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if chk==0 then return at and a:IsAbleToRemove() and at:IsAbleToRemove() end + local g=Group.FromCards(a,at) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,2,0,0) +end +function c511000873.rmop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + local g=Group.FromCards(a,at) + if Duel.Remove(g,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local og=Duel.GetOperatedGroup() + local oc=og:GetFirst() + while oc do + if oc:GetControler()==tp then + oc:RegisterFlagEffect(511000873,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,0,4) + else + oc:RegisterFlagEffect(511000873,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE+RESET_SELF_TURN,0,4) + end + oc=og:GetNext() + end + og:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + if Duel.GetTurnPlayer()~=tp then + e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,4) + e1:SetLabel(-1) + else + e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,3) + e1:SetLabel(0) + end + e1:SetCountLimit(1) + e1:SetLabelObject(og) + e1:SetOperation(c511000873.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c511000873.retfilter(c) + return c:GetFlagEffect(511000873)~=0 +end +function c511000873.retop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + if Duel.GetTurnPlayer()~=tp then + ct=ct+1 + e:SetLabel(ct) + if ct>=3 then + local g=e:GetLabelObject() + local sg=g:Filter(c511000873.retfilter,nil) + g:DeleteGroup() + local tc=sg:GetFirst() + while tc do + Duel.ReturnToField(tc) + tc:SetStatus(STATUS_SUMMON_TURN+STATUS_FORM_CHANGED,false) + tc=sg:GetNext() + end + end + end +end diff --git a/script/c511000874.lua b/script/c511000874.lua new file mode 100644 index 00000000..fccf01f6 --- /dev/null +++ b/script/c511000874.lua @@ -0,0 +1,65 @@ +--Panic Wave +function c511000874.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000874.target) + e1:SetOperation(c511000874.activate) + c:RegisterEffect(e1) +end +function c511000874.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc~=e:GetHandler() and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000874.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e1:SetTarget(c511000874.distarget) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + --disable effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetOperation(c511000874.disoperation) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + --disable trap monster + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e3:SetTarget(c511000874.distarget) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e4:SetTarget(c511000874.distarget) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) + end +end +function c511000874.distarget(e,c) + return c~=e:GetHandler() and (c:IsType(TYPE_CONTINUOUS) or c:IsType(TYPE_EFFECT)) +end +function c511000874.disoperation(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if tl==LOCATION_ONFIELD and (re:IsActiveType(TYPE_CONTINUOUS) or re:IsActiveType(TYPE_EFFECT)) then + Duel.NegateEffect(ev) + end +end diff --git a/script/c511000875.lua b/script/c511000875.lua new file mode 100644 index 00000000..91c82e86 --- /dev/null +++ b/script/c511000875.lua @@ -0,0 +1,37 @@ +--Space Jump +function c511000875.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000875.condition) + e1:SetTarget(c511000875.target) + e1:SetOperation(c511000875.activate) + c:RegisterEffect(e1) +end +function c511000875.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + local tc=g:GetFirst() + local ex,dg=Duel.GetOperationInfo(0,CATEGORY_DESTROY) + local ex2,dg2=Duel.GetOperationInfo(0,CATEGORY_REMOVE) + e:SetLabelObject(tc) + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE + and tc:IsControler(tp) and tc:IsType(TYPE_MONSTER) + and ((dg and dg:GetCount()==1 and dg:GetFirst()==tc) or (dg2 and dg2:GetCount()==1 and dg2:GetFirst()==tc)) +end +function c511000875.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc:IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()) +end +function c511000875.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and tc:IsFaceup() then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511000876.lua b/script/c511000876.lua new file mode 100644 index 00000000..71b4581c --- /dev/null +++ b/script/c511000876.lua @@ -0,0 +1,60 @@ +--Synchro Ring +function c511000876.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetCondition(c511000876.condition) + e1:SetTarget(c511000876.target) + e1:SetOperation(c511000876.activate) + c:RegisterEffect(e1) + if not c511000876.global_check then + c511000876.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE_STEP_END) + ge1:SetOperation(c511000876.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000876.checkop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) then + Duel.GetAttacker():RegisterFlagEffect(511000876,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end +end +function c511000876.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==tp and ph>=0x08 and ph<=0x20 +end +function c511000876.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) + and c:GetBattledGroupCount()>0 and c:GetFlagEffect(511000876)>0 +end +function c511000876.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000876.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000876.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000876.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000876.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511000877.lua b/script/c511000877.lua new file mode 100644 index 00000000..bf69d9c4 --- /dev/null +++ b/script/c511000877.lua @@ -0,0 +1,30 @@ +--Tuner's Explosion +function c511000877.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000877.cost) + e1:SetTarget(c511000877.target) + e1:SetOperation(c511000877.activate) + c:RegisterEffect(e1) +end +function c511000877.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsType,ct,nil,TYPE_TUNER) end + local g=Duel.SelectReleaseGroup(tp,Card.IsType,ct,ct,nil,TYPE_TUNER) + Duel.Release(g,REASON_COST) +end +function c511000877.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511000877.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(sg,REASON_EFFECT) + if ct>0 then + Duel.Damage(1-tp,ct*1000,REASON_EFFECT) + end +end diff --git a/script/c511000878.lua b/script/c511000878.lua new file mode 100644 index 00000000..6607f246 --- /dev/null +++ b/script/c511000878.lua @@ -0,0 +1,61 @@ +--Magical Pigeon +function c511000878.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000878.cost) + e1:SetTarget(c511000878.target) + e1:SetOperation(c511000878.operation) + c:RegisterEffect(e1) +end +function c511000878.cfilter(c) + return c:IsFaceup() and c:IsCode(38033121) and c:IsAbleToHandAsCost() +end +function c511000878.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000878.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c511000878.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c511000878.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000879,0,0x4011,0,0,1,RACE_WINDBEAST,ATTRIBUTE_WIND) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511000878.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000879,0,0x4011,0,0,1,RACE_WINDBEAST,ATTRIBUTE_WIND) then + for i=1,2 do + local token=Duel.CreateToken(tp,511000879) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + Duel.SpecialSummonComplete() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c511000878.desop) + Duel.RegisterEffect(e2,tp) + end +end +function c511000878.desfilter(c) + return c:IsFaceup() and c:IsCode(511000879) and c:IsDestructable() +end +function c511000878.spfilter(c,e,tp) + return c:IsCode(38033121) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000878.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511000878.desfilter,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + local g=Duel.SelectMatchingCard(tp,c511000878.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 +end diff --git a/script/c511000880.lua b/script/c511000880.lua new file mode 100644 index 00000000..545a2986 --- /dev/null +++ b/script/c511000880.lua @@ -0,0 +1,17 @@ +--KC-1 Crayton +function c511000880.initial_effect(c) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511000880.upval) + c:RegisterEffect(e2) +end +function c511000880.upval(e,c) + return Duel.GetMatchingGroupCount(c511000880.upfilter,c:GetControler(),LOCATION_MZONE,0,nil)*500 +end +function c511000880.upfilter(c) + return c:IsFaceup() and c:IsCode(511000882) +end diff --git a/script/c511000881.lua b/script/c511000881.lua new file mode 100644 index 00000000..321927a2 --- /dev/null +++ b/script/c511000881.lua @@ -0,0 +1,37 @@ +--Tank Corps +function c511000881.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000881.target) + e1:SetOperation(c511000881.operation) + c:RegisterEffect(e1) +end +function c511000881.filter(c) + return c:IsFaceup() and c:IsCode(511000880) +end +function c511000881.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000881.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000881.filter,tp,LOCATION_MZONE,0,1,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000882,0,0x4011,800,1200,3,RACE_MACHINE,ATTRIBUTE_EARTH) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000881.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c511000881.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + if Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000882,0,0x4011,800,1200,3,RACE_MACHINE,ATTRIBUTE_EARTH) then + for i=1,3 do + local token=Duel.CreateToken(tp,511000882) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + Duel.SpecialSummonComplete() + end + end +end diff --git a/script/c511000883.lua b/script/c511000883.lua new file mode 100644 index 00000000..1cf9e649 --- /dev/null +++ b/script/c511000883.lua @@ -0,0 +1,81 @@ +--Imperial Register +function c511000883.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) + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000883.operation) + c:RegisterEffect(e2) + --gain atk + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCode(511000883) + e3:SetCondition(c511000883.atkcon) + e3:SetTarget(c511000883.atktg) + e3:SetOperation(c511000883.atkop) + c:RegisterEffect(e3) +end +function c511000883.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511000883)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511000883.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511000883,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511000883.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + if e:GetLabel()>c:GetAttack() then + local val=e:GetLabel()-c:GetAttack() + Duel.RaiseEvent(c,511000883,re,REASON_EFFECT,rp,tp,val) + end + e:SetLabel(c:GetAttack()) +end +function c511000883.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + e:SetLabel(ev) + return ec:IsControler(tp) and ev>0 +end +function c511000883.atktg(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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000883.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(e:GetLabel()) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000884.lua b/script/c511000884.lua new file mode 100644 index 00000000..7c004ccb --- /dev/null +++ b/script/c511000884.lua @@ -0,0 +1,26 @@ +--Down Burst +function c511000884.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000884.target) + e1:SetOperation(c511000884.activate) + c:RegisterEffect(e1) +end +function c511000884.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsCanTurnSet() +end +function c511000884.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000884.filter,tp,0,LOCATION_ONFIELD,1,nil) end +end +function c511000884.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511000884.filter,tp,0,LOCATION_ONFIELD,nil) + local tc=sg:GetFirst() + while tc do + tc:CancelToGrave() + Duel.ChangePosition(tc,POS_FACEDOWN) + tc=sg:GetNext() + end + Duel.RaiseEvent(sg,EVENT_SSET,e,REASON_EFFECT,1-tp,tp,0) +end diff --git a/script/c511000885.lua b/script/c511000885.lua new file mode 100644 index 00000000..b6566baa --- /dev/null +++ b/script/c511000885.lua @@ -0,0 +1,43 @@ +--Down Force +function c511000885.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000885.condition) + e1:SetTarget(c511000885.target) + e1:SetOperation(c511000885.operation) + c:RegisterEffect(e1) +end +function c511000885.cfilter(c,tp) + return c:IsOnField() and c:IsType(TYPE_MONSTER) and c:IsControler(tp) and c:IsFaceup() +end +function c511000885.condition(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_REMOVE) + return ex and tg~=nil and tc+tg:FilterCount(c511000885.cfilter,nil,tp)-tg:GetCount()>0 +end +function c511000885.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000885.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + local e8=Effect.CreateEffect(e:GetHandler()) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_DISABLE) + e8:SetReset(RESET_EVENT+0x1fe0000) + re:GetHandler():RegisterEffect(e8,true) + local e9=Effect.CreateEffect(e:GetHandler()) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetCode(EFFECT_DISABLE_EFFECT) + e9:SetReset(RESET_EVENT+0x1fe0000) + re:GetHandler():RegisterEffect(e9,true) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000886.lua b/script/c511000886.lua new file mode 100644 index 00000000..5862067a --- /dev/null +++ b/script/c511000886.lua @@ -0,0 +1,146 @@ +--Parasite Caterpillar +function c511000886.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetOperation(c511000886.regop) + c:RegisterEffect(e1) +end +function c511000886.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000886,0)) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c511000886.eqcon) + e2:SetOperation(c511000886.eqop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e2) +end +function c511000886.eqcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==e:GetHandler() +end +function c511000886.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if not tc:IsRelateToBattle() or not c:IsRelateToBattle() then return end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:IsFacedown() then + Duel.Destroy(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc) + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511000886.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(tc) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_CHANGE_RACE) + e2:SetValue(RACE_INSECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(tc) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UNRELEASABLE_SUM) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(tc) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetValue(1) + e5:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(tc) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetCode(EFFECT_DIRECT_ATTACK) + e6:SetRange(LOCATION_SZONE) + e6:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e6:SetTarget(c511000886.dirtg) + e6:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e6) + tc:RegisterFlagEffect(511000886,RESET_EVENT+0x1fe0000,0,1) + c:SetTurnCounter(0) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_SZONE) + e7:SetOperation(c511000886.desop) + e7:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,3) + c:RegisterEffect(e7) +end +function c511000886.eqlimit(e,c) + return e:GetOwner()==c +end +function c511000886.dirfilter(c) + return c:GetFlagEffect(511000886)==0 +end +function c511000886.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511000886.dirfilter,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c511000886.desop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()==tp then return end + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==3 then + --destroy&sp summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000886,1)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511000886.con) + e2:SetTarget(c511000886.tg) + e2:SetOperation(c511000886.op) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511000886.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511000886.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ec=e:GetHandler():GetEquipTarget() + ec:CreateEffectRelation(e) + e:SetLabelObject(ec) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,ec,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000886.filter(c,e,tp) + return c:IsCode(511000887) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c511000886.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ec=e:GetLabelObject() + if ec:IsRelateToEffect(e) and ec:IsFaceup() then + if Duel.Destroy(ec,REASON_EFFECT)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000886.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,1-tp,true,true,POS_FACEUP) + Duel.ShuffleDeck(tp) + else + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleDeck(tp) + end + else + Duel.Destroy(c,REASON_EFFECT) + end + end +end diff --git a/script/c511000887.lua b/script/c511000887.lua new file mode 100644 index 00000000..e84f7fea --- /dev/null +++ b/script/c511000887.lua @@ -0,0 +1,37 @@ +--Poison Butterfly +function c511000887.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000887,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c511000887.dmcon) + e2:SetTarget(c511000887.dmtg) + e2:SetOperation(c511000887.dmop) + c:RegisterEffect(e2) +end +function c511000887.dmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000887.dmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,500) +end +function c511000887.dmop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000888.lua b/script/c511000888.lua new file mode 100644 index 00000000..75a62f3a --- /dev/null +++ b/script/c511000888.lua @@ -0,0 +1,31 @@ +--Armored Centipede +function c511000888.initial_effect(c) + --Atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_BATTLED) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c511000888.atkcon) + e1:SetOperation(c511000888.atkop) + c:RegisterEffect(e1) +end +function c511000888.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and bc:IsRace(RACE_INSECT) and c:IsRelateToBattle() and c:IsFaceup() +end +function c511000888.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToBattle() and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511000889.lua b/script/c511000889.lua new file mode 100644 index 00000000..d19a01d8 --- /dev/null +++ b/script/c511000889.lua @@ -0,0 +1,48 @@ +--Pheromone Wasp +function c511000889.initial_effect(c) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetCondition(c511000889.condition) + e2:SetOperation(c511000889.operation) + c:RegisterEffect(e2) +end +function c511000889.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and Duel.GetAttacker()==e:GetHandler() +end +function c511000889.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(511000889,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511000889.sptg) + e1:SetOperation(c511000889.spop) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + e:GetHandler():RegisterEffect(e1) +end +function c511000889.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000889.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000889.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000889.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + else + Duel.Destroy(g,REASON_EFFECT) + end + else + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c511000890.lua b/script/c511000890.lua new file mode 100644 index 00000000..f1e73828 --- /dev/null +++ b/script/c511000890.lua @@ -0,0 +1,55 @@ +--Cell Division +function c511000890.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000890.target) + e1:SetOperation(c511000890.activate) + c:RegisterEffect(e1) +end +function c511000890.filter(c,e,tp) + return c:IsFaceup() and c:IsLevelBelow(3) and c:IsRace(RACE_INSECT) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511000891,0,0x4011,c:GetBaseAttack(),c:GetBaseDefense(),c:GetOriginalLevel(),c:GetOriginalRace(),c:GetOriginalAttribute()) +end +function c511000890.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511000890.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000890.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000890.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000890.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or not Duel.IsPlayerCanSpecialSummonMonster(tp,511000891,0,0x4011,tc:GetBaseAttack(),tc:GetBaseDefense(), + tc:GetOriginalLevel(),tc:GetOriginalRace(),tc:GetOriginalAttribute()) then return end + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local token=Duel.CreateToken(tp,511000891) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetBaseDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(tc:GetOriginalLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetOriginalRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetOriginalAttribute()) + token:RegisterEffect(e5) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511000892.lua b/script/c511000892.lua new file mode 100644 index 00000000..4ef8f346 --- /dev/null +++ b/script/c511000892.lua @@ -0,0 +1,45 @@ +--Mimesis +function c511000892.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511000892.condition) + e1:SetTarget(c511000892.target) + e1:SetOperation(c511000892.activate) + c:RegisterEffect(e1) +end +function c511000892.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsRace(RACE_INSECT) +end +function c511000892.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000892.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then + if tc:IsLevelBelow(4) then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and tc:IsAbleToHand() + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and tc:IsAbleToHand() + and Duel.IsExistingMatchingCard(c511000892.filter,tp,LOCATION_HAND,0,1,nil,e,tp) + end + end + tc:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000892.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + if Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 and tc:IsLocation(LOCATION_HAND) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000892.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + Duel.ChangeAttackTarget(g:GetFirst()) + end + end +end diff --git a/script/c511000893.lua b/script/c511000893.lua new file mode 100644 index 00000000..aa633665 --- /dev/null +++ b/script/c511000893.lua @@ -0,0 +1,21 @@ +--Kaitoptera +function c511000893.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511000893.atkop) + c:RegisterEffect(e1) +end +function c511000893.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511000893.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511000893.aclimit(e,re,tp) + return re:GetHandler():IsType(TYPE_EFFECT) +end diff --git a/script/c511000894.lua b/script/c511000894.lua new file mode 100644 index 00000000..6ae9e0a8 --- /dev/null +++ b/script/c511000894.lua @@ -0,0 +1,35 @@ +--Chain of the Underworld +function c511000894.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511000894.target) + e1:SetOperation(c511000894.activate) + c:RegisterEffect(e1) +end +function c511000894.filter(c,e,tp) + return c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==1-tp and c:IsCanBeSpecialSummoned(e,0,1-tp,false,false) +end +function c511000894.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511000894.filter,nil,e,tp) + local tc=g:GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and tc end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) +end +function c511000894.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-700) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end + Duel.Draw(1-tp,1,REASON_EFFECT) +end diff --git a/script/c511000895.lua b/script/c511000895.lua new file mode 100644 index 00000000..34657a26 --- /dev/null +++ b/script/c511000895.lua @@ -0,0 +1,43 @@ +--Jurassic Heart +function c511000895.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DISABLE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000895.condition) + e1:SetTarget(c511000895.target) + e1:SetOperation(c511000895.activate) + c:RegisterEffect(e1) +end +function c511000895.cfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and c:IsRace(RACE_DINOSAUR) and c:IsControler(tp) +end +function c511000895.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:GetCount()==1 and re:IsActiveType(TYPE_TRAP) and c511000895.cfilter(tg:GetFirst(),tp) and Duel.IsChainNegatable(ev) +end +function c511000895.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511000895.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + local e8=Effect.CreateEffect(e:GetHandler()) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_DISABLE) + e8:SetReset(RESET_EVENT+0x1fe0000) + re:GetHandler():RegisterEffect(e8,true) + local e9=Effect.CreateEffect(e:GetHandler()) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetCode(EFFECT_DISABLE_EFFECT) + e9:SetReset(RESET_EVENT+0x1fe0000) + re:GetHandler():RegisterEffect(e9,true) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511000896.lua b/script/c511000896.lua new file mode 100644 index 00000000..53151800 --- /dev/null +++ b/script/c511000896.lua @@ -0,0 +1,75 @@ +--Spell of the Ruler +function c511000896.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+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511000896.condition) + e1:SetTarget(c511000896.target) + e1:SetOperation(c511000896.operation) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetDescription(aux.Stringid(511000896,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c511000896.damcon) + e2:SetTarget(c511000896.damtg) + e2:SetOperation(c511000896.damop) + c:RegisterEffect(e2) +end +function c511000896.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000896.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_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000896.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(700) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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(c511000896.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511000896.eqlimit(e,c) + return c:GetControler()==e:GetOwnerPlayer() +end +function c511000896.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + return c:IsReason(REASON_LOST_TARGET) and ec:IsLocation(LOCATION_GRAVE) +end +function c511000896.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(700) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,700) +end +function c511000896.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000897.lua b/script/c511000897.lua new file mode 100644 index 00000000..38eb668f --- /dev/null +++ b/script/c511000897.lua @@ -0,0 +1,96 @@ +--Burning Rebirth +function c511000897.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c511000897.cost) + e1:SetTarget(c511000897.target) + e1:SetOperation(c511000897.activate) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511000897.desop) + c:RegisterEffect(e2) + --sp summon tributed monster + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000897,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511000897.spcost) + e3:SetTarget(c511000897.sptg) + e3:SetOperation(c511000897.spop) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) +end +function c511000897.cfilter(c) + return c:IsFaceup() and c:GetLevel()>=8 and c:IsType(TYPE_SYNCHRO) +end +function c511000897.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511000897.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511000897.cfilter,1,1,nil) + g:KeepAlive() + e:SetLabelObject(g) + Duel.Release(g,REASON_COST) +end +function c511000897.spfilter(c,e,tp) + return c:IsCode(70902743) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000897.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000897.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511000897.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000897.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000897.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511000897.eqlimit) + c:RegisterEffect(e1) + end +end +function c511000897.eqlimit(e,c) + return c:GetControler()==e:GetOwnerPlayer() +end +function c511000897.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511000897.spcfilter(c) + return c:IsType(TYPE_TUNER) and c:IsAbleToGraveAsCost() +end +function c511000897.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000897.spcfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local cg=Duel.SelectMatchingCard(tp,c511000897.spcfilter,tp,LOCATION_HAND,0,1,1,nil) + cg:AddCard(e:GetHandler()) + Duel.SendtoGrave(cg,REASON_COST) +end +function c511000897.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject():GetLabelObject():GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and tc:IsLocation(LOCATION_GRAVE) + and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) and tc:IsType(TYPE_SYNCHRO) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,tp,LOCATION_GRAVE) +end +function c511000897.spop(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject():GetLabelObject():GetFirst() + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511000898.lua b/script/c511000898.lua new file mode 100644 index 00000000..cdf37291 --- /dev/null +++ b/script/c511000898.lua @@ -0,0 +1,33 @@ +--Tuner's Reflect +function c511000898.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x11e8) + e1:SetTarget(c511000898.target) + e1:SetOperation(c511000898.activate) + c:RegisterEffect(e1) +end +function c511000898.filter(c,e,tp,tid) + return bit.band(c:GetReason(),REASON_DESTROY)==REASON_DESTROY and c:GetTurnID()==tid and c:IsType(TYPE_TUNER) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsPreviousPosition(POS_FACEUP) +end +function c511000898.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tid=Duel.GetTurnCount() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511000898.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp,tid) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511000898.activate(e,tp,eg,ep,ev,re,r,rp) + local tid=Duel.GetTurnCount() + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000898.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp,tid) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK)>1 then + local sum=g:GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT) + end +end diff --git a/script/c511000899.lua b/script/c511000899.lua new file mode 100644 index 00000000..4cc4be75 --- /dev/null +++ b/script/c511000899.lua @@ -0,0 +1,54 @@ +--Half Straight +function c511000899.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(c511000899.condition) + e1:SetTarget(c511000899.target) + e1:SetOperation(c511000899.activate) + c:RegisterEffect(e1) +end +function c511000899.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000899.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000899.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + e1:SetValue(atk/2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetCondition(c511000899.dircon) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c511000899.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c511000899.dircon(e) + local atk=e:GetHandler():GetAttack() + local tp=e:GetHandlerPlayer() + local g=Duel.GetMatchingGroup(c511000899.filter,tp,0,LOCATION_MZONE,nil) + local hatk=0 + if g:GetCount()>0 then + hatk=g:GetMaxGroup(Card.GetAttack):GetFirst():GetAttack() + end + return atk-2 + and Duel.IsExistingTarget(c511000900.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000900.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000900.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511000900.matfilter1,tp,LOCATION_MZONE,0,nil,tc) + local nontuner=Duel.GetMatchingGroup(c511000900.matfilter2,tp,LOCATION_MZONE,0,nil,tc) + local mat1 + if tc:IsSetCard(0x301) then + nontuner=nontuner:Filter(c511000900.lvfilter2,nil,tc,tuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=nontuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + tuner=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=tuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()+tlv,mt.minntct,mt.maxntct,tc) + mat1:Merge(mat2) + elseif mt.dobtun then + mat1=Group.CreateGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner1=tuner:FilterSelect(tp,c511000900.dtfilter1,1,1,nil,tc,tuner,nontuner):GetFirst() + mat1:AddCard(tuner1) + local tlv1=tuner1:GetSynchroLevel(tc) + local tuner2=tuner:FilterSelect(tp,c511000900.dtfilter2,1,1,tuner1,tc,tc:GetLevel()-tlv1,nontuner,tuner1):GetFirst() + mat1:AddCard(tuner2) + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,tuner1) + nt=nt:Filter(Card.IsCanBeSynchroMaterial,nil,tc,tuner2) + local tlv2=tuner2:GetSynchroLevel(tc) + local m3=nt:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()-tlv1-tlv2,mt.minntct,mt.maxntct,tc) + mat1:Merge(m3) + else + tuner=tuner:Filter(c511000900.lvfilter,nil,tc,nontuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=tuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + nontuner=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=nontuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()-tlv,mt.minntct,mt.maxntct,tc) + mat1:Merge(mat2) + end + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_MATERIAL+REASON_SYNCHRO) + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetOperation(c511000900.desop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + e2:SetLabel(0) + e2:SetCountLimit(1) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end + end +end +function c511000900.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()>0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + else + e:SetLabel(1) + end +end diff --git a/script/c511000901.lua b/script/c511000901.lua new file mode 100644 index 00000000..dfa2687b --- /dev/null +++ b/script/c511000901.lua @@ -0,0 +1,44 @@ +--Ray of Hope +function c511000901.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetCondition(c511000901.condition) + e1:SetOperation(c511000901.activate) + c:RegisterEffect(e1) +end +function c511000901.condition(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandler():GetControler() + return ep==p and ev>=1500 +end +function c511000901.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetOperation(c511000901.spop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000901.filter(c,e,tp) + return c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000901.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000901.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0 then + local tc=g:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511000902.lua b/script/c511000902.lua new file mode 100644 index 00000000..40c5db6d --- /dev/null +++ b/script/c511000902.lua @@ -0,0 +1,110 @@ +--Red Cocoon +function c511000902.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(c511000902.target) + e1:SetOperation(c511000902.operation) + c:RegisterEffect(e1) + --search + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511000902.regcon) + e3:SetOperation(c511000902.regop) + c:RegisterEffect(e3) +end +function c511000902.filter(c) + return c:IsFaceup() and c:IsCode(97489701) +end +function c511000902.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000902.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000902.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511000902.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511000902.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511000902.negcon) + e1:SetOperation(c511000902.negop) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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(c511000902.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511000902.eqlimit(e,c) + return c:IsCode(97489701) +end +function c511000902.negcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler():GetEquipTarget() +end +function c511000902.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local d=Duel.GetAttackTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + d:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + d:RegisterEffect(e2,true) +end +function c511000902.regcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c511000902.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000902,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_GRAVE) + e1:SetTarget(c511000902.sptg) + e1:SetOperation(c511000902.spop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511000902.spfilter(c,e,tp) + return c:IsCode(70902743) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000902.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000902.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511000902.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000902.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000903.lua b/script/c511000903.lua new file mode 100644 index 00000000..9de7b2d1 --- /dev/null +++ b/script/c511000903.lua @@ -0,0 +1,41 @@ +--Burning Strike +function c511000903.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(c511000903.target) + e1:SetOperation(c511000903.operation) + c:RegisterEffect(e1) +end +function c511000903.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_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000903.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --Pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_PIERCE) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end diff --git a/script/c511000904.lua b/script/c511000904.lua new file mode 100644 index 00000000..5cd6eb54 --- /dev/null +++ b/script/c511000904.lua @@ -0,0 +1,26 @@ +--Power Pressure +function c511000904.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_DISABLED) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000904.con) + e1:SetTarget(c511000904.target) + e1:SetOperation(c511000904.activate) + c:RegisterEffect(e1) +end +function c511000904.con(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(tp) +end +function c511000904.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511000904.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000905.lua b/script/c511000905.lua new file mode 100644 index 00000000..6694e82b --- /dev/null +++ b/script/c511000905.lua @@ -0,0 +1,65 @@ +--Revenge Twin Soul +function c511000905.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000905.condition) + e1:SetTarget(c511000905.target) + e1:SetOperation(c511000905.activate) + c:RegisterEffect(e1) +end +function c511000905.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000905.cfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemoveAsCost() +end +function c511000905.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:IsPosition(POS_FACEUP_DEFENSE) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_DEFENSE) + and Duel.IsExistingMatchingCard(c511000905.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPDEFENSE) + Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_DEFENSE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000905.cfilter,tp,LOCATION_GRAVE,0,1,2,nil) + local tc=g:GetFirst() + local atk=0 + while tc do + local lvta=tc:GetLevel()*100 + atk=atk+lvta + tc=g:GetNext() + end + Duel.SetTargetParam(atk) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511000905.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetCondition(c511000905.descon) + e2:SetOperation(c511000905.desop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c511000905.descon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a:IsControler(1-tp) and a:IsRelateToBattle() + and d:IsDefensePos() and d:IsRelateToBattle() and d:GetDefense()>a:GetAttack() +end +function c511000905.desop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + Duel.Destroy(a,REASON_EFFECT) +end diff --git a/script/c511000906.lua b/script/c511000906.lua new file mode 100644 index 00000000..48808b61 --- /dev/null +++ b/script/c511000906.lua @@ -0,0 +1,34 @@ +--Synchro Sonic +function c511000906.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000906.tg) + e1:SetOperation(c511000906.op) + c:RegisterEffect(e1) +end +function c511000906.ctfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511000906.desfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000906.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ct=Duel.GetMatchingGroupCount(c511000906.ctfilter,tp,LOCATION_MZONE,0,nil) + if chk==0 then return ct>0 and Duel.IsExistingMatchingCard(c511000906.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + local g=Duel.GetMatchingGroup(c511000906.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000906.op(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c511000906.ctfilter,tp,LOCATION_MZONE,0,nil) + local g=Duel.GetMatchingGroup(c511000906.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + if ct>0 and g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=g:Select(tp,1,ct,c) + Duel.HintSelection(dg) + Duel.Destroy(dg,REASON_EFFECT) + end +end diff --git a/script/c511000907.lua b/script/c511000907.lua new file mode 100644 index 00000000..9cb2338b --- /dev/null +++ b/script/c511000907.lua @@ -0,0 +1,53 @@ +--Compulsary Recoil Device +function c511000907.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511000907.target1) + e1:SetOperation(c511000907.operation) + c:RegisterEffect(e1) + --return to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000907,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCost(c511000907.cost2) + e2:SetTarget(c511000907.target2) + e2:SetOperation(c511000907.operation) + c:RegisterEffect(e2) +end +function c511000907.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsAbleToHand() end + if chk==0 then return true end + if Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) + and Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_MZONE,0,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(511000907,0)) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + else e:SetProperty(0) end +end +function c511000907.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c511000907.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511000907.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c511000908.lua b/script/c511000908.lua new file mode 100644 index 00000000..da69674e --- /dev/null +++ b/script/c511000908.lua @@ -0,0 +1,35 @@ +--Debugger X +function c511000908.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000908,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511000908.condition) + e1:SetTarget(c511000908.target) + e1:SetOperation(c511000908.operation) + c:RegisterEffect(e1) +end +function c511000908.cfilter(c) + return c:IsFaceup() and c:IsCode(511000909) +end +function c511000908.spfilter(c,e,tp) + return c:IsCode(511000910) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000908.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000908.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000908.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000908.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000908.operation(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsExistingMatchingCard(c511000908.cfilter,tp,LOCATION_ONFIELD,0,1,nil) then return end + local tc=Duel.GetFirstMatchingCard(c511000908.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000909.lua b/script/c511000909.lua new file mode 100644 index 00000000..ee969c9b --- /dev/null +++ b/script/c511000909.lua @@ -0,0 +1,35 @@ +--Debugger Y +function c511000909.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000909,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511000909.condition) + e1:SetTarget(c511000909.target) + e1:SetOperation(c511000909.operation) + c:RegisterEffect(e1) +end +function c511000909.cfilter(c) + return c:IsFaceup() and c:IsCode(511000910) +end +function c511000909.spfilter(c,e,tp) + return c:IsCode(511000908) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000909.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000909.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000909.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000909.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000909.operation(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsExistingMatchingCard(c511000909.cfilter,tp,LOCATION_ONFIELD,0,1,nil) then return end + local tc=Duel.GetFirstMatchingCard(c511000909.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000910.lua b/script/c511000910.lua new file mode 100644 index 00000000..5f15cada --- /dev/null +++ b/script/c511000910.lua @@ -0,0 +1,35 @@ +--Debugger Z +function c511000910.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000910,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511000910.condition) + e1:SetTarget(c511000910.target) + e1:SetOperation(c511000910.operation) + c:RegisterEffect(e1) +end +function c511000910.cfilter(c) + return c:IsFaceup() and c:IsCode(511000908) +end +function c511000910.spfilter(c,e,tp) + return c:IsCode(511000909) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000910.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000910.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000910.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000910.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511000910.operation(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsExistingMatchingCard(c511000910.cfilter,tp,LOCATION_ONFIELD,0,1,nil) then return end + local tc=Duel.GetFirstMatchingCard(c511000910.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000911.lua b/script/c511000911.lua new file mode 100644 index 00000000..ae5e706f --- /dev/null +++ b/script/c511000911.lua @@ -0,0 +1,20 @@ +--Smile Angel +function c511000911.initial_effect(c) + --tuner + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000911,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetOperation(c511000911.operation) + c:RegisterEffect(e1) +end +function c511000911.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c511000912.lua b/script/c511000912.lua new file mode 100644 index 00000000..36c4949f --- /dev/null +++ b/script/c511000912.lua @@ -0,0 +1,52 @@ +--Smile Kid +function c511000912.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000912.spcon) + e1:SetOperation(c511000912.spop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(38041940,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c511000912.condition) + e2:SetTarget(c511000912.target) + e2:SetOperation(c511000912.operation) + c:RegisterEffect(e2) +end +function c511000912.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) +end +function c511000912.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD,e:GetHandler()) +end +function c511000912.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(c:GetReason(),0x41)==0x41 and c:IsPreviousLocation(LOCATION_ONFIELD) + and c:GetPreviousControler()==tp +end +function c511000912.spfilter(c,e,tp) + return c:IsCode(511000911) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000912.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000912.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000912.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,c511000912.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000913.lua b/script/c511000913.lua new file mode 100644 index 00000000..314ef294 --- /dev/null +++ b/script/c511000913.lua @@ -0,0 +1,23 @@ +--Dimension Reversion +function c511000913.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000913.target) + e1:SetOperation(c511000913.activate) + c:RegisterEffect(e1) +end +function c511000913.filter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c511000913.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000913.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil) end + local sg=Duel.GetMatchingGroup(c511000913.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),PLAYER_ALL,LOCATION_REMOVED) +end +function c511000913.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000913.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c511000914.lua b/script/c511000914.lua new file mode 100644 index 00000000..a839c317 --- /dev/null +++ b/script/c511000914.lua @@ -0,0 +1,64 @@ +--Doom Petal Countdown +function c511000914.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_END_PHASE,0) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000914,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetLabel(0) + e2:SetCost(c511000914.cost) + e2:SetCondition(c511000914.condition) + e2:SetTarget(c511000914.target) + e2:SetOperation(c511000914.operation) + c:RegisterEffect(e2) + --selfdes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511000914.sdcon2) + c:RegisterEffect(e3) +end +function c511000914.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000914.cfilter(c) + return c:IsRace(RACE_PLANT) and c:IsAbleToRemoveAsCost() +end +function c511000914.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000914.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511000914.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(e:GetLabel()+1) +end +function c511000914.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511000914.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + if not Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_GRAVE,0,1,nil,RACE_PLANT) then + Duel.Damage(p,e:GetLabel()*300,REASON_EFFECT) + e:SetLabel(0) + end +end +function c511000914.sdcon2(e) + return not Duel.IsExistingMatchingCard(Card.IsRace,e:GetHandler():GetControler(),LOCATION_GRAVE,0,1,nil,RACE_PLANT) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end diff --git a/script/c511000915.lua b/script/c511000915.lua new file mode 100644 index 00000000..d407aae8 --- /dev/null +++ b/script/c511000915.lua @@ -0,0 +1,116 @@ +--Toon Mask +function c511000915.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c511000915.cost) + e1:SetCondition(c511000915.condition) + e1:SetTarget(c511000915.target) + e1:SetOperation(c511000915.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000915.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsType,1,nil,TYPE_TOON) end + local g=Duel.SelectReleaseGroup(tp,Card.IsType,1,1,nil,TYPE_TOON) + Duel.Release(g,REASON_COST) +end +function c511000915.cfilter(c,tp) + return c:GetSummonPlayer()==1-tp + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetCode(),0,0x4011,c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) +end +function c511000915.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000915.cfilter,1,nil,tp) +end +function c511000915.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000915.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=eg:Filter(c511000915.cfilter,nil,tp) + local tc=g:GetFirst() + if not tc then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,tc:GetCode(),0,0x4011,tc:GetAttack(),tc:GetDefense(),tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) then return end + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + tc=g:Select(tp,1,1,nil):GetFirst() + end + local token=Duel.CreateToken(tp,tc:GetCode()) + if Duel.SpecialSummonStep(token,0,tp,tp,true,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CLIENT_HINT) + e1:SetValue(tc:GetType()+TYPE_TOON) + e1:SetDescription(aux.Stringid(511000915,0)) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511000915.sdescon) + e3:SetOperation(c511000915.sdesop) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetCondition(c511000915.dircon) + e4:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetRange(LOCATION_MZONE) + e5:SetTargetRange(0,LOCATION_MZONE) + e5:SetTarget(c511000915.attg) + e5:SetCondition(c511000915.atcon) + e5:SetValue(c511000915.atval) + e5:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e6:SetCondition(c511000915.atcon) + e6:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e6) + Duel.SpecialSummonComplete() + end +end +function c511000915.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsCode(15259703) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c511000915.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000915.sfilter,1,nil) +end +function c511000915.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511000915.atkfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c511000915.dircon(e) + return not Duel.IsExistingMatchingCard(c511000915.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c511000915.atcon(e) + return Duel.IsExistingMatchingCard(c511000915.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c511000915.attg(e,c) + return not c:IsType(TYPE_TOON) +end +function c511000915.atval(e,c) + return c==e:GetHandler() +end diff --git a/script/c511000916.lua b/script/c511000916.lua new file mode 100644 index 00000000..2439f699 --- /dev/null +++ b/script/c511000916.lua @@ -0,0 +1,111 @@ +--ゲート・ガーディアン +function c511000916.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetCondition(c511000916.spcon) + e1:SetOperation(c511000916.spop) + c:RegisterEffect(e1) + --multi + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511000916.atkop) + c:RegisterEffect(e2) + --change atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c511000916.chop) + c:RegisterEffect(e3) + --negate + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCondition(c511000916.nacon) + e4:SetOperation(c511000916.naop) + c:RegisterEffect(e4) + --Destroy replace + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DESTROY_REPLACE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetTarget(c511000916.desreptg) + e5:SetOperation(c511000916.desrepop) + c:RegisterEffect(e5) +end +function c511000916.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 + and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,25955164) + and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,62340868) + and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,98434877) +end +function c511000916.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,25955164) + local g2=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,62340868) + local g3=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,98434877) + g1:Merge(g2) + g1:Merge(g3) + Duel.Release(g1,REASON_COST) + e:GetHandler():SetMaterial(g1) +end +function c511000916.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(c:GetMaterialCount()-1) + e1:SetReset(RESET_EVENT+0x1ff0000+EVENT_ADJUST,1) + c:RegisterEffect(e1) +end +function c511000916.matfilter(c,self) + local code=c:GetCode() + return self:GetFlagEffect(code)==0 +end +function c511000916.chop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local mat=c:GetMaterial() + mat=mat:Filter(c511000916.matfilter,nil,c) + local sg=mat:Select(tp,1,1,nil):GetFirst() + if not sg then return end + c:RegisterFlagEffect(sg:GetCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(sg:GetTextAttack()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) +end +function c511000916.nacon(e,tp,eg,ep,ev,re,r,rp) + local aatk=Duel.GetAttacker():GetBaseAttack() + local catk=e:GetHandler():GetAttack() + return aatk<=catk +end +function c511000916.naop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c511000916.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsOnField() and c:IsFaceup() + and c:GetMaterialCount()>0 end + if Duel.SelectYesNo(tp,aux.Stringid(511000916,0)) then return true + else return false end +end +function c511000916.desrepop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local mat=c:GetMaterial() + local sg=mat:Select(tp,1,1,nil) + mat:Sub(sg) + c:SetMaterial(mat) +end diff --git a/script/c511000917.lua b/script/c511000917.lua new file mode 100644 index 00000000..c5cef5d9 --- /dev/null +++ b/script/c511000917.lua @@ -0,0 +1,29 @@ +--Magic Mirror Spirit Asogi +function c511000917.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000917.sumtg) + e1:SetOperation(c511000917.sumop) + c:RegisterEffect(e1) +end +function c511000917.filter(c,e,tp) + return c:IsCode(511000918) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000917.sumtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000917.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000917.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000917.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000917.sumop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000918.lua b/script/c511000918.lua new file mode 100644 index 00000000..4b886c43 --- /dev/null +++ b/script/c511000918.lua @@ -0,0 +1,29 @@ +--Magic Mirror Spirit Nayuta +function c511000918.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000918.sumtg) + e1:SetOperation(c511000918.sumop) + c:RegisterEffect(e1) +end +function c511000918.filter(c,e,tp) + return c:IsCode(511000917) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000918.sumtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000918.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000918.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000918.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000918.sumop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000919.lua b/script/c511000919.lua new file mode 100644 index 00000000..5d49b937 --- /dev/null +++ b/script/c511000919.lua @@ -0,0 +1,71 @@ +--Full Moon Mirror +function c511000919.initial_effect(c) + c:EnableCounterPermit(0x99) + c:SetCounterLimit(0x99,10) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DESTROY) + e2:SetCondition(c511000919.ctcon) + e2:SetOperation(c511000919.ctop) + c:RegisterEffect(e2) + --activate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000919,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000919.accon) + e3:SetCost(c511000919.accost) + e3:SetTarget(c511000919.actg) + e3:SetOperation(c511000919.acop) + c:RegisterEffect(e3) +end +function c511000919.ctfilter(c) + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) +end +function c511000919.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000919.ctfilter,1,nil) +end +function c511000919.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x99,1) +end +function c511000919.accon(e) + return e:GetHandler():GetCounter(0x99)==10 +end +function c511000919.accost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000919.filter(c,tp) + return c:IsCode(100000080) and c:GetActivateEffect():IsActivatable(tp) +end +function c511000919.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000919.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,tp) end +end +function c511000919.acop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + local tc=Duel.SelectMatchingCard(tp,c511000919.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,tp):GetFirst() + if tc then + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end +end diff --git a/script/c511000920.lua b/script/c511000920.lua new file mode 100644 index 00000000..c162728f --- /dev/null +++ b/script/c511000920.lua @@ -0,0 +1,52 @@ +--呪い移し +function c511000920.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000920.condition) + e1:SetTarget(c511000920.target) + e1:SetOperation(c511000920.activate) + c:RegisterEffect(e1) +end +function c511000920.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) and ep~=tp +end +function c511000920.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511000920.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + local c=e:GetHandler() + local tc=re:GetHandler() + local tpe=tc:GetType() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + if tc:IsType(TYPE_EQUIP+TYPE_CONTINUOUS) then + local code=tc:GetOriginalCode() + c:CopyEffect(code,RESET_EVENT+0x1fc0000,1) + c:CancelToGrave() + end + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + Duel.MoveSequence(tc,5) + end +end diff --git a/script/c511000921.lua b/script/c511000921.lua new file mode 100644 index 00000000..5042dcaf --- /dev/null +++ b/script/c511000921.lua @@ -0,0 +1,37 @@ +--Stairway to the Underworld +function c511000921.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511000921.condition) + e1:SetTarget(c511000921.target) + e1:SetOperation(c511000921.activate) + c:RegisterEffect(e1) +end +function c511000921.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511000921.filter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000921.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511000921.filter,tp,LOCATION_DECK,0,1,nil,e,tp,44330098) + and Duel.IsExistingMatchingCard(c511000921.filter,tp,LOCATION_DECK,0,1,nil,e,tp,511002636) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511000921.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g1=Duel.GetMatchingGroup(c511000921.filter,tp,LOCATION_DECK,0,nil,e,tp,44330098) + local g2=Duel.GetMatchingGroup(c511000921.filter,tp,LOCATION_DECK,0,nil,e,tp,511002636) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.SpecialSummon(sg1,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000922.lua b/script/c511000922.lua new file mode 100644 index 00000000..7baa8c62 --- /dev/null +++ b/script/c511000922.lua @@ -0,0 +1,47 @@ +--黒魔術の報復 +function c511000922.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000922.condition) + e1:SetTarget(c511000922.target) + e1:SetOperation(c511000922.activate) + c:RegisterEffect(e1) +end +function c511000922.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000922.filter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000922.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000922.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000922.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000922.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000922.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c511000922.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tc:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end +end +function c511000922.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end + diff --git a/script/c511000923.lua b/script/c511000923.lua new file mode 100644 index 00000000..6ddce569 --- /dev/null +++ b/script/c511000923.lua @@ -0,0 +1,37 @@ +--Magic Gate of Miracles +function c511000923.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000923.condition) + e1:SetTarget(c511000923.target) + e1:SetOperation(c511000923.operation) + c:RegisterEffect(e1) +end +function c511000923.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c511000923.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000923.cfilter,tp,LOCATION_MZONE,0,2,nil) +end +function c511000923.filter(c) + return c:IsControlerCanBeChanged() and c:IsFaceup() +end +function c511000923.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511000923.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000923.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511000923.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511000923.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + Duel.GetControl(tc,tp) + end +end diff --git a/script/c511000924.lua b/script/c511000924.lua new file mode 100644 index 00000000..6c345068 --- /dev/null +++ b/script/c511000924.lua @@ -0,0 +1,27 @@ +--Pump Up! +function c511000924.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000924.tar) + e1:SetOperation(c511000924.op) + c:RegisterEffect(e1) +end +function c511000924.tar(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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000924.op(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_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511000925.lua b/script/c511000925.lua new file mode 100644 index 00000000..8d694c79 --- /dev/null +++ b/script/c511000925.lua @@ -0,0 +1,78 @@ +--Soul Shield +function c511000925.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCost(c511000925.cost) + e1:SetCondition(c511000925.condition) + e1:SetTarget(c511000925.target) + e1:SetOperation(c511000925.activate) + c:RegisterEffect(e1) +end +function c511000925.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if d:IsControler(1-tp) then a,d=d,a end + if not d or d:IsControler(1-tp) or d:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + e:SetLabelObject(d) + if a:IsPosition(POS_FACEUP_DEFENSE) then + if not a:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if a:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if a:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if d:IsAttackPos() then + if a:GetDefense()==d:GetAttack() and not d:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return a:GetDefense()~=0 + else + return a:GetDefense()>=d:GetAttack() + end + else + return a:GetDefense()>d:GetDefense() + end + elseif a:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if d:IsAttackPos() then + if a:GetAttack()==d:GetAttack() and not a:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return a:GetAttack()~=0 + else + return a:GetAttack()>=d:GetAttack() + end + else + return a:GetAttack()>d:GetDefense() + end + end + end + else + if d:IsAttackPos() then + if a:GetAttack()==d:GetAttack() and not a:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return a:GetAttack()~=0 + else + return a:GetAttack()>=d:GetAttack() + end + else + return a:GetAttack()>d:GetDefense() + end + end +end +function c511000925.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,Duel.GetLP(tp)/2) +end +function c511000925.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc end + Duel.SetTargetCard(tc) +end +function c511000925.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511000926.lua b/script/c511000926.lua new file mode 100644 index 00000000..db6bd59b --- /dev/null +++ b/script/c511000926.lua @@ -0,0 +1,42 @@ +--武装再生 +function c511000926.initial_effect(c) + --effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000926.target) + e1:SetOperation(c511000926.operation) + c:RegisterEffect(e1) +end +function c511000926.tcfilter(tc,ec) + return tc:IsFaceup() and ec:CheckEquipTarget(tc) +end +function c511000926.ecfilter(c) + return c:IsType(TYPE_EQUIP) and Duel.IsExistingTarget(c511000926.tcfilter,0,LOCATION_MZONE,LOCATION_MZONE,1,nil,c) +end +function c511000926.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511000926.ecfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000926,0)) + local g=Duel.SelectTarget(tp,c511000926.ecfilter,tp,LOCATION_GRAVE,0,1,1,nil) + local ec=g:GetFirst() + e:SetLabelObject(ec) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000926,1)) + Duel.SelectTarget(tp,c511000926.tcfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,ec:GetEquipTarget(),ec) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,ec,1,0,0) +end +function c511000926.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local ec=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if tc==ec then tc=g:GetNext() end + if ec:IsFaceup() and ec:IsRelateToEffect(e) then + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,ec,tc) + end + end +end diff --git a/script/c511000927.lua b/script/c511000927.lua new file mode 100644 index 00000000..1b1c8c9b --- /dev/null +++ b/script/c511000927.lua @@ -0,0 +1,25 @@ +--Rose Blizzard +function c511000927.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511000927.condition) + e1:SetTarget(c511000927.target) + e1:SetOperation(c511000927.activate) + c:RegisterEffect(e1) +end +function c511000927.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) +end +function c511000927.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,Duel.GetAttacker(),1,0,0) +end +function c511000927.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + Duel.NegateAttack() +end diff --git a/script/c511000928.lua b/script/c511000928.lua new file mode 100644 index 00000000..d43607d2 --- /dev/null +++ b/script/c511000928.lua @@ -0,0 +1,67 @@ +--Synchro Stream +function c511000928.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:SetCondition(c511000928.condition) + e1:SetTarget(c511000928.target) + e1:SetOperation(c511000928.activate) + c:RegisterEffect(e1) +end +function c511000928.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511000928.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000928.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil) +end +function c511000928.eqlimit(e,c) + return c:IsType(TYPE_SYNCHRO) +end +function c511000928.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000928.cfilter(chkc) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c511000928.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000928.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000928.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --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(c511000928.atkup) + e2:SetReset(RESET_EVENT+0x1fe0000) + 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(c511000928.eqlimit) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511000928.atkup(e,tp,eg,ep,ev,re,r,rp) + local eqc=e:GetHandler():GetEquipTarget() + if eqc==Duel.GetAttacker() and Duel.IsExistingMatchingCard(c511000928.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,eqc) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511000928.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,eqc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(g:GetFirst():GetAttack()) + eqc:RegisterEffect(e1) + end +end diff --git a/script/c511000929.lua b/script/c511000929.lua new file mode 100644 index 00000000..b2b70dcc --- /dev/null +++ b/script/c511000929.lua @@ -0,0 +1,40 @@ +--Oberon's Prank +function c511000929.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000929.condition) + e1:SetOperation(c511000929.operation) + c:RegisterEffect(e1) +end +function c511000929.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + if ex then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + return ex and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511000929.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_REVERSE_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetValue(1) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DAMAGE) + e2:SetCountLimit(1) + e2:SetOperation(c511000929.op) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) +end +function c511000929.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-ep,ev,REASON_EFFECT) + Duel.RDComplete() +end diff --git a/script/c511000930.lua b/script/c511000930.lua new file mode 100644 index 00000000..c5b39324 --- /dev/null +++ b/script/c511000930.lua @@ -0,0 +1,43 @@ +--Twinkle Wall +function c511000930.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000930.condition) + e1:SetTarget(c511000930.target) + e1:SetOperation(c511000930.activate) + c:RegisterEffect(e1) +end +function c511000930.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000930.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + local dam=tg:GetAttack() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,dam/2) +end +function c511000930.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack(tc) then + Duel.Damage(tp,tc:GetAttack()/2,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511000930.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511000930.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c511000931.lua b/script/c511000931.lua new file mode 100644 index 00000000..fca2abe2 --- /dev/null +++ b/script/c511000931.lua @@ -0,0 +1,38 @@ +--Fairy Breath +function c511000931.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c511000931.condition) + e1:SetTarget(c511000931.target) + e1:SetOperation(c511000931.activate) + c:RegisterEffect(e1) +end +function c511000931.cfilter(c) + return c:IsFaceup() and c:IsCode(25862681) +end +function c511000931.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and Duel.IsExistingMatchingCard(c511000931.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511000931.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511000931.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(3000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000932.lua b/script/c511000932.lua new file mode 100644 index 00000000..c9aad293 --- /dev/null +++ b/script/c511000932.lua @@ -0,0 +1,44 @@ +--Remake Puzzle +function c511000932.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(c511000932.condition) + e1:SetTarget(c511000932.target) + e1:SetOperation(c511000932.activate) + c:RegisterEffect(e1) +end +function c511000932.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511000932.filter(c) + return c:IsFaceup() and c:IsDestructable() and c:IsSetCard(0x26) +end +function c511000932.spfilter(c,e,tp,lv) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsSetCard(0x26) and c:GetLevel()0 + and sg:GetCount()>0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local spg=sg:Select(tp,1,1,nil) + Duel.SpecialSummon(spg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511000933.lua b/script/c511000933.lua new file mode 100644 index 00000000..4ecea0ca --- /dev/null +++ b/script/c511000933.lua @@ -0,0 +1,36 @@ +--Morphtronic Impact Return +function c511000933.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000933.target) + e1:SetOperation(c511000933.activate) + c:RegisterEffect(e1) +end +function c511000933.retfilter(c) + return c:IsSetCard(0x26) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c511000933.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c511000933.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c511000933.filter(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c511000933.retfilter,tp,LOCATION_HAND,0,1,nil) + and Duel.IsExistingTarget(c511000933.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511000933.filter,tp,0,LOCATION_ONFIELD,1,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511000933.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=tg:Filter(Card.IsRelateToEffect,nil,e) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c511000933.retfilter,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()==0 then return end + Duel.ConfirmCards(1-tp,g) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c511000934.lua b/script/c511000934.lua new file mode 100644 index 00000000..cfe05627 --- /dev/null +++ b/script/c511000934.lua @@ -0,0 +1,33 @@ +--Block Lock +function c511000934.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000934.condition) + e1:SetTarget(c511000934.target) + e1:SetOperation(c511000934.activate) + c:RegisterEffect(e1) +end +function c511000934.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511000934.filter(c,e) + return c:IsCanBeEffectTarget(e) and c:IsSetCard(0x26) +end +function c511000934.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local ag=eg:GetFirst():GetAttackableTarget() + local at=Duel.GetAttackTarget() + if chk==0 then return ag:IsExists(c511000934.filter,1,at,e) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=ag:FilterSelect(tp,c511000934.filter,1,1,at,e) + Duel.SetTargetCard(g) +end +function c511000934.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511000935.lua b/script/c511000935.lua new file mode 100644 index 00000000..1ee01cc2 --- /dev/null +++ b/script/c511000935.lua @@ -0,0 +1,45 @@ +--Synchro Big Tornado +function c511000935.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(c511000935.condition) + e1:SetTarget(c511000935.target) + e1:SetOperation(c511000935.activate) + c:RegisterEffect(e1) +end +function c511000935.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511000935.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511000935.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000935 .filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000935.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c511000935.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c511000935.filter,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g2=Duel.SelectTarget(tp,c511000935.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000935.activate(e,tp,eg,ep,ev,re,r,rp) + local hc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if tc==hc then tc=g:GetNext() end + if hc:IsFaceup() and hc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=hc:GetDefense() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(-atk) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511000936.lua b/script/c511000936.lua new file mode 100644 index 00000000..ced818e6 --- /dev/null +++ b/script/c511000936.lua @@ -0,0 +1,35 @@ +--Silver Spirit Ukyo +function c511000936.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000936.sumtg) + e1:SetOperation(c511000936.sumop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000936.filter(c,e,tp) + return c:IsCode(511000937) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000936.sumtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000936.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000936.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000936.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000936.sumop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000937.lua b/script/c511000937.lua new file mode 100644 index 00000000..29087ca3 --- /dev/null +++ b/script/c511000937.lua @@ -0,0 +1,35 @@ +--Silver Spirit Sakyo +function c511000937.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000937.sumtg) + e1:SetOperation(c511000937.sumop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511000937.filter(c,e,tp) + return c:IsCode(511000936) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000937.sumtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000937.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000937.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000937.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000937.sumop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000938.lua b/script/c511000938.lua new file mode 100644 index 00000000..0295390d --- /dev/null +++ b/script/c511000938.lua @@ -0,0 +1,31 @@ +--Silver Spirit Redirection +function c511000938.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000938.condition) + e1:SetTarget(c511000938.target) + e1:SetOperation(c511000938.activate) + c:RegisterEffect(e1) +end +function c511000938.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return ep~=tp and tg and tg:GetCount()==1 and tg:GetFirst():IsLocation(LOCATION_MZONE) + and re:IsActiveType(TYPE_EFFECT) and Duel.IsChainNegatable(ev) +end +function c511000938.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsAbleToRemove() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) + end +end +function c511000938.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Remove(eg,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511000939.lua b/script/c511000939.lua new file mode 100644 index 00000000..0b7c7e80 --- /dev/null +++ b/script/c511000939.lua @@ -0,0 +1,42 @@ +--Soul Mirror +function c511000939.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c511000939.cost) + e1:SetTarget(c511000939.tg) + e1:SetOperation(c511000939.op) + c:RegisterEffect(e1) +end +function c511000939.cfilter(c,tp) + if c:IsLocation(LOCATION_MZONE) then + return c:IsAbleToGraveAsCost() and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + else + return c:IsAbleToGraveAsCost() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + end +end +function c511000939.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000939.cfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler(),tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000939.cfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler(),tp) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000939.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000939.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511000939.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511000939.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000939.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511000939.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000940.lua b/script/c511000940.lua new file mode 100644 index 00000000..e5dc40b5 --- /dev/null +++ b/script/c511000940.lua @@ -0,0 +1,37 @@ +--Mirror Call +function c511000940.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000940.condition) + e1:SetTarget(c511000940.target) + e1:SetOperation(c511000940.activate) + c:RegisterEffect(e1) +end +function c511000940.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511000940.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000940.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000936) + and Duel.IsExistingMatchingCard(c511000940.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000937) +end +function c511000940.filter(c) + return c:IsType(TYPE_TRAP) and c:IsAbleToHand() +end +function c511000940.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and c511000940.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000940.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511000940.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511000940.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511000941.lua b/script/c511000941.lua new file mode 100644 index 00000000..72db6eb0 --- /dev/null +++ b/script/c511000941.lua @@ -0,0 +1,30 @@ +--Mirror Route +function c511000941.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000941.target) + e1:SetOperation(c511000941.activate) + c:RegisterEffect(e1) +end +function c511000941.filter(c) + return c:IsFaceup() and c:IsAttackBelow(1000) +end +function c511000941.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000941.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000941.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000941.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000941.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000942.lua b/script/c511000942.lua new file mode 100644 index 00000000..0feb1385 --- /dev/null +++ b/script/c511000942.lua @@ -0,0 +1,59 @@ +--Buried Soul Talisman +function c511000942.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000942.condition) + e1:SetTarget(c511000942.target) + e1:SetOperation(c511000942.activate) + c:RegisterEffect(e1) +end +function c511000942.cfilter(c,tp,tid) + return bit.band(c:GetReason(),0x21)==0x21 and c:GetTurnID()==tid + and c:GetPreviousControler()==tp +end +function c511000942.condition(e,tp,eg,ep,ev,re,r,rp) + local tid=Duel.GetTurnCount() + return Duel.IsExistingMatchingCard(c511000942.cfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,2,nil,tp,tid) +end +function c511000942.filter(c,e,tp) + return c:IsLevelAbove(5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000942.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tid=Duel.GetTurnCount() + local dg=Group.CreateGroup() + local g=Duel.GetMatchingGroup(c511000942.cfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tp,tid) + local tc=g:GetFirst() + while tc do + dg:AddCard(tc:GetReasonCard()) + tc=g:GetNext() + end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511000942.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + if dg:IsExists(Card.IsDestructable,1,nil) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,dg:GetCount(),0,0) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511000942.activate(e,tp,eg,ep,ev,re,r,rp) + local tid=Duel.GetTurnCount() + local dg=Group.CreateGroup() + local g=Duel.GetMatchingGroup(c511000942.cfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tp,tid) + local tc=g:GetFirst() + while tc do + dg:AddCard(tc:GetReasonCard()) + tc=g:GetNext() + end + dg=dg:Filter(Card.IsDestructable,nil) + if dg:GetCount()>0 then + Duel.Destroy(dg,REASON_EFFECT) + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=Duel.SelectMatchingCard(tp,c511000942.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if sp:GetCount()>0 then + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000943.lua b/script/c511000943.lua new file mode 100644 index 00000000..3e288b0d --- /dev/null +++ b/script/c511000943.lua @@ -0,0 +1,36 @@ +--Mirror Bind +function c511000943.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000943.condition) + e1:SetTarget(c511000943.target) + e1:SetOperation(c511000943.activate) + c:RegisterEffect(e1) +end +function c511000943.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511000943.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000943.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000936) + and Duel.IsExistingMatchingCard(c511000943.cfilter,tp,LOCATION_ONFIELD,0,1,nil,511000937) + and tp~=Duel.GetTurnPlayer() +end +function c511000943.filter(c,atk) + return c:IsFaceup() and c:IsDestructable() and c:GetBaseAttack()<=atk +end +function c511000943.target(e,tp,eg,ep,ev,re,r,rp,chk) + local atk=Duel.GetAttacker():GetAttack() + if chk==0 then return Duel.IsExistingMatchingCard(c511000943.filter,tp,0,LOCATION_MZONE,1,nil,atk) end + local g=Duel.GetMatchingGroup(c511000943.filter,tp,0,LOCATION_MZONE,nil,atk) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000943.activate(e,tp,eg,ep,ev,re,r,rp) + local atk=Duel.GetAttacker():GetAttack() + local g=Duel.GetMatchingGroup(c511000943.filter,tp,0,LOCATION_MZONE,nil,atk) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511000944.lua b/script/c511000944.lua new file mode 100644 index 00000000..8739a209 --- /dev/null +++ b/script/c511000944.lua @@ -0,0 +1,46 @@ +--SpTune Up 123 +function c511000944.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000944.con) + e1:SetTarget(c511000944.target) + e1:SetOperation(c511000944.activate) + c:RegisterEffect(e1) +end +function c511000944.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(e:GetHandler():GetControler(),LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>1 +end +function c511000944.filter(c) + return c:IsFaceup() and c:IsType(TYPE_TUNER) +end +function c511000944.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000944.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000944.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000944.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c511000944.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local d=Duel.TossDice(tp,1) + local lv=0 + if d==1 or d==2 then + lv=1 + elseif d==3 or d==4 then + lv=2 + else + lv=3 + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1ff0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000945.lua b/script/c511000945.lua new file mode 100644 index 00000000..683e6b60 --- /dev/null +++ b/script/c511000945.lua @@ -0,0 +1,26 @@ +--Shadow Dance +function c511000945.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000945.condition) + e1:SetTarget(c511000945.target) + e1:SetOperation(c511000945.operation) + c:RegisterEffect(e1) +end +function c511000945.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil +end +function c511000945.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511000945.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000946.lua b/script/c511000946.lua new file mode 100644 index 00000000..e8fcc8b4 --- /dev/null +++ b/script/c511000946.lua @@ -0,0 +1,40 @@ +--Reversal Sword +function c511000946.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c511000946.target) + e1:SetOperation(c511000946.operation) + c:RegisterEffect(e1) +end +function c511000946.cfilter(c,tp) + local lv=c:GetLevel() + return c:IsControler(1-tp) and c:IsReason(REASON_BATTLE) and lv>0 + and Duel.IsExistingTarget(c511000946.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,lv) +end +function c511000946.filter(c,lv) + return c:GetLevel()0 then + Duel.Damage(1-tp,atk,REASON_EFFECT,true) + Duel.Damage(tp,atk,REASON_EFFECT,true) + Duel.RDComplete() + end + end +end diff --git a/script/c511000947.lua b/script/c511000947.lua new file mode 100644 index 00000000..eeae25b2 --- /dev/null +++ b/script/c511000947.lua @@ -0,0 +1,68 @@ +--Spiderweb Castle +function c511000947.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511000947.condition) + c:RegisterEffect(e1) + --half attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000947,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511000947.halfcon) + e1:SetOperation(c511000947.halfop) + c:RegisterEffect(e1) + --direct atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000947,1)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511000947.dircost) + e3:SetTarget(c511000947.dirtg) + e3:SetOperation(c511000947.dirop) + c:RegisterEffect(e3) +end +function c511000947.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and ep~=tp +end +function c511000947.halfcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()~=tp +end +function c511000947.halfop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(at:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + at:RegisterEffect(e1) +end +function c511000947.dircost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000947.dirtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsControler(tp) and chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000947.dirop(e,tp,eg,ep,ev,re,r,rp,chk) + 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_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000948.lua b/script/c511000948.lua new file mode 100644 index 00000000..3a8f06e1 --- /dev/null +++ b/script/c511000948.lua @@ -0,0 +1,86 @@ +--Master and Servant's Resolve +function c511000948.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) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000948,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000948.damcon) + e2:SetTarget(c511000948.damtg) + e2:SetOperation(c511000948.damop) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetOperation(c511000948.mtop) + c:RegisterEffect(e3) +end +function c511000948.cfilter(c,re) + return c:IsPreviousLocation(LOCATION_MZONE) and bit.band(c:GetReason(),0x41)==0x41 and re:IsActiveType(TYPE_EFFECT) +end +function c511000948.damcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + e:SetLabelObject(re) + return eg:IsExists(c511000948.cfilter,1,nil,re) and + ((Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) or (ph==PHASE_DAMAGE and not Duel.IsDamageCalculated())) +end +function c511000948.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=eg:Filter(c511000948.cfilter,nil,e:GetLabelObject()) + local tc=g:GetFirst() + local chp=0 + while tc do + if tc:GetControler()==tp and chp~=1 and chp~=3 then + chp=chp+1 + elseif tc:GetControler()~=tp and chp~=2 and chp~=3 then + chp=chp+2 + end + tc=g:GetNext() + end + local p=0 + if chp==1 then + p=tp + elseif chp==2 then + p=1-tp + elseif chp==3 then + p=PLAYER_ALL + end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,nil,0) +end +function c511000948.cfilter2(c,tp,re) + return c:IsPreviousLocation(LOCATION_MZONE) and bit.band(c:GetReason(),0x41)==0x41 + and re:IsActiveType(TYPE_EFFECT) and c:GetPreviousControler()==tp +end +function c511000948.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g1=eg:Filter(c511000948.cfilter2,nil,tp,e:GetLabelObject()) + local g2=eg:Filter(c511000948.cfilter2,nil,1-tp,e:GetLabelObject()) + if g1:GetCount()>0 then + local sum=g1:GetSum(Card.GetAttack) + Duel.Damage(tp,sum,REASON_EFFECT) + end + if g2:GetCount()>0 then + local sum=g2:GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT) + end +end +function c511000948.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + if Duel.SelectYesNo(tp,aux.Stringid(511000948,1)) then + Duel.Damage(tp,1000,REASON_COST) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c511000949.lua b/script/c511000949.lua new file mode 100644 index 00000000..52082fd8 --- /dev/null +++ b/script/c511000949.lua @@ -0,0 +1,44 @@ +--Standoff +function c511000949.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511000949.activate) + c:RegisterEffect(e1) +end +function c511000949.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_RELEASE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c511000949.op) + Duel.RegisterEffect(e2,tp) +end +function c511000949.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + local c=e:GetHandler() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + tc:RegisterEffect(e2,true) + tc=g:GetNext() + end +end diff --git a/script/c511000950.lua b/script/c511000950.lua new file mode 100644 index 00000000..f2234761 --- /dev/null +++ b/script/c511000950.lua @@ -0,0 +1,30 @@ +--Magic Charge +function c511000950.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetCondition(c511000950.condition) + e1:SetTarget(c511000950.target) + e1:SetOperation(c511000950.operation) + c:RegisterEffect(e1) +end +function c511000950.cfilter(c,tp) + return c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:GetReasonPlayer()==1-tp + and c:IsType(TYPE_SPELL) and bit.band(c:GetPreviousPosition(),POS_FACEUP)~=0 +end +function c511000950.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000950.cfilter,1,nil,tp) +end +function c511000950.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetParam(2000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,2000) +end +function c511000950.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Damage(1-tp,d,REASON_EFFECT,true) + Duel.Damage(tp,d,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511000951.lua b/script/c511000951.lua new file mode 100644 index 00000000..2f2c02b5 --- /dev/null +++ b/script/c511000951.lua @@ -0,0 +1,45 @@ +--Regreatful Tuning +function c511000951.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511000951.condition) + e1:SetTarget(c511000951.target) + e1:SetOperation(c511000951.activate) + c:RegisterEffect(e1) +end +function c511000951.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(1-tp) and ep==tp and Duel.GetAttackTarget()==nil +end +function c511000951.filter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000951.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:GetControler()==tp and c511000951.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511000951.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000951.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000951.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetOperation(c511000951.desop) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end +function c511000951.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetAttackedCount()>0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c511000952.lua b/script/c511000952.lua new file mode 100644 index 00000000..86f0e566 --- /dev/null +++ b/script/c511000952.lua @@ -0,0 +1,74 @@ +--Dimension Trap +function c511000952.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000952.cost) + e1:SetTarget(c511000952.target) + e1:SetOperation(c511000952.activate) + c:RegisterEffect(e1) +end +function c511000952.filter(c,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local cost=te:GetCost() + local target=te:GetTarget() + return c:IsType(TYPE_TRAP) and c:IsAbleToRemoveAsCost() and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0) or not cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) +end +function c511000952.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511000952.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511000952.filter,tp,LOCATION_GRAVE,0,1,nil,tp,eg,ep,ev,re,r,rp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c511000952.filter,tp,LOCATION_GRAVE,0,1,1,nil) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) + local tc=g2:GetFirst() + local tpe=tc:GetType() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + Duel.MoveSequence(c,5) + end + local te=tc:GetActivateEffect() + c511000952[Duel.GetCurrentChain()]=te + Duel.ClearTargetCard() + local tg=te:GetTarget() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c511000952.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local te=c511000952[Duel.GetCurrentChain()] + if not te then return end + local tpe=te:GetHandler():GetType() + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + c:CancelToGrave(false) + else + c:CancelToGrave(true) + local code=te:GetHandler():GetOriginalCode() + c:CopyEffect(code,RESET_EVENT+0x1fc0000,1) + end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end diff --git a/script/c511000953.lua b/script/c511000953.lua new file mode 100644 index 00000000..f43e0119 --- /dev/null +++ b/script/c511000953.lua @@ -0,0 +1,34 @@ +--Damage Lance +function c511000953.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000953.condition) + e1:SetCost(c511000953.cost) + e1:SetOperation(c511000953.activate) + c:RegisterEffect(e1) +end +function c511000953.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and a:IsAttackAbove(2000) and Duel.GetAttackTarget()==nil +end +function c511000953.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511000953.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(-1000) + a:RegisterEffect(e1) +end diff --git a/script/c511000954.lua b/script/c511000954.lua new file mode 100644 index 00000000..42803d36 --- /dev/null +++ b/script/c511000954.lua @@ -0,0 +1,95 @@ +--Tricolor Illusion +function c511000954.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000954,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e3:SetCost(c511000954.descost) + e3:SetCondition(c511000954.descon) + e3:SetTarget(c511000954.destg) + e3:SetOperation(c511000954.desop) + c:RegisterEffect(e3) + --reveal + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000954,1)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_HANDES+CATEGORY_TODECK) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetCondition(c511000954.revcon) + e4:SetCost(c511000954.revcost) + e4:SetOperation(c511000954.revop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_PHASE+PHASE_END) + c:RegisterEffect(e5) +end +function c511000954.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end + Duel.DiscardDeck(tp,1,REASON_COST) +end +function c511000954.descon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) and e:GetHandler():GetControler()~=tp +end +function c511000954.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c511000954.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end +function c511000954.revcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=1 +end +function c511000954.revcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,511000954)==0 end + Duel.RegisterFlagEffect(tp,511000954,RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END,0,0) +end +function c511000954.revop(e,tp,eg,ep,ev,re,r,rp) + Duel.DisableShuffleCheck() + Duel.ConfirmDecktop(1-tp,1) + local g=Duel.GetDecktopGroup(1-tp,1) + local tc=g:GetFirst() + if tc:IsType(TYPE_SPELL) then + if tc:IsAbleToHand() then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(tp,tc) + Duel.BreakEffect() + Duel.ShuffleHand(1-tp) + end + elseif tc:IsType(TYPE_TRAP) then + Duel.DiscardDeck(1-tp,1,REASON_EFFECT+REASON_REVEAL+REASON_DISCARD) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_DISCARD) + local sg=g:Select(1-tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + else + if tc:IsAbleToHand() then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(tp,tc) + local hg=Duel.SelectMatchingCard(1-tp,Card.IsAbleToDeck,1-tp,LOCATION_HAND,0,1,1,tc) + Duel.SendtoDeck(hg,nil,0,REASON_EFFECT) + Duel.BreakEffect() + Duel.ShuffleHand(1-tp) + end + end +end diff --git a/script/c511000955.lua b/script/c511000955.lua new file mode 100644 index 00000000..720cacdc --- /dev/null +++ b/script/c511000955.lua @@ -0,0 +1,35 @@ +--Return Damage +function c511000955.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000955.con) + e1:SetTarget(c511000955.tg) + e1:SetOperation(c511000955.activate) + c:RegisterEffect(e1) +end +function c511000955.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511000955.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(Duel.GetBattleDamage(tp)) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c511000955.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511000955.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511000955.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511000956.lua b/script/c511000956.lua new file mode 100644 index 00000000..8f3672cb --- /dev/null +++ b/script/c511000956.lua @@ -0,0 +1,53 @@ +--Raging Sacred Curse +function c511000956.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + 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(c511000956.con) + e1:SetTarget(c511000956.target) + e1:SetOperation(c511000956.activate) + c:RegisterEffect(e1) +end +function c511000956.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x4B) +end +function c511000956.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000956.cfilter,tp,LOCATION_MZONE,0,1,nil) + and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c511000956.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511000956.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsControler(1-tp) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-2000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetValue(c511000956.efilter) + tc:RegisterEffect(e3) + end +end +function c511000956.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) and te:GetOwnerPlayer()==e:GetHandler():GetOwner() +end diff --git a/script/c511000957.lua b/script/c511000957.lua new file mode 100644 index 00000000..3fc3cf17 --- /dev/null +++ b/script/c511000957.lua @@ -0,0 +1,35 @@ +--Dark the Hidden Knight +function c511000957.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e1) + --change pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000957,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511000957.cost) + e2:SetTarget(c511000957.target) + e2:SetOperation(c511000957.operation) + c:RegisterEffect(e2) +end +function c511000957.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511000957.target(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk==0 then return d:IsDefensePos() and d:IsControler(tp) end + Duel.SetTargetCard(d) +end +function c511000957.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsDefensePos() then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511000958.lua b/script/c511000958.lua new file mode 100644 index 00000000..b1db74ed --- /dev/null +++ b/script/c511000958.lua @@ -0,0 +1,38 @@ +--Shadow Concealing Darkness +function c511000958.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCondition(c511000958.indcon) + e2:SetTarget(aux.TargetBoolFunction(Card.IsDefensePos)) + e2:SetValue(1) + c:RegisterEffect(e2) + --self destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511000958.descon) + c:RegisterEffect(e3) +end +function c511000958.indfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) +end +function c511000958.indcon(e) + return Duel.IsExistingMatchingCard(c511000958.indfilter,e:GetOwnerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511000958.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) +end +function c511000958.descon(e) + return Duel.IsExistingMatchingCard(c511000958.filter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511000959.lua b/script/c511000959.lua new file mode 100644 index 00000000..eceeaffb --- /dev/null +++ b/script/c511000959.lua @@ -0,0 +1,37 @@ +--Power Throw +function c511000959.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCost(c511000959.cost) + e1:SetCondition(c511000959.condition) + e1:SetTarget(c511000959.target) + e1:SetOperation(c511000959.activate) + c:RegisterEffect(e1) +end +function c511000959.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsAttackBelow,1,nil,1000) end + local g=Duel.SelectReleaseGroup(tp,Card.IsAttackBelow,1,1,nil,1000) + Duel.Release(g,REASON_COST) + e:SetLabel(g:GetFirst():GetAttack()) +end +function c511000959.cfilter(c,tp) + local rc=c:GetReasonCard() + return c:IsReason(REASON_BATTLE) and rc:GetBaseAttack()<=1000 and rc:IsControler(tp) and rc:IsRelateToBattle() +end +function c511000959.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000959.cfilter,1,nil,tp) +end +function c511000959.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()*2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()*2) +end +function c511000959.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000960.lua b/script/c511000960.lua new file mode 100644 index 00000000..c7448c0e --- /dev/null +++ b/script/c511000960.lua @@ -0,0 +1,47 @@ +--Insect Costume +function c511000960.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000960.cost) + e1:SetTarget(c511000960.target) + e1:SetOperation(c511000960.activate) + c:RegisterEffect(e1) +end +function c511000960.cfilter(c) + return c:IsRace(RACE_INSECT) and c:IsAbleToGrave() +end +function c511000960.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000960.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000960.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511000960.filter(c) + return c:IsRace(RACE_INSECT) and c:IsAbleToHand() +end +function c511000960.desfilter(c) + return c:IsFaceup() and c:IsDestructable() and c:IsRace(RACE_INSECT) +end +function c511000960.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000960.filter,tp,LOCATION_DECK,0,1,nil) + and Duel.IsExistingMatchingCard(c511000960.desfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) +end +function c511000960.activate(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000960.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local d=Duel.SelectMatchingCard(tp,c511000960.desfilter,tp,LOCATION_MZONE,0,1,1,nil) + if d:GetCount()>0 then + Duel.HintSelection(d) + Duel.Destroy(d,REASON_EFFECT) + end + end +end diff --git a/script/c511000961.lua b/script/c511000961.lua new file mode 100644 index 00000000..3d0359a0 --- /dev/null +++ b/script/c511000961.lua @@ -0,0 +1,26 @@ +--Doom Ray +function c511000961.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000961.condition) + e1:SetTarget(c511000961.target) + e1:SetOperation(c511000961.operation) + c:RegisterEffect(e1) +end +function c511000961.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==nil +end +function c511000961.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)*800 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,dam) +end +function c511000961.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)*800 + Duel.Damage(1-tp,d,REASON_EFFECT,true) + Duel.Damage(tp,d,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511000962.lua b/script/c511000962.lua new file mode 100644 index 00000000..fb6e9f23 --- /dev/null +++ b/script/c511000962.lua @@ -0,0 +1,29 @@ +--Imperial Manners +function c511000962.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000962.condition) + e1:SetTarget(c511000962.target) + e1:SetOperation(c511000962.activate) + c:RegisterEffect(e1) +end +function c511000962.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511000962.filter(c) + return c:IsAttackPos() and c:IsDestructable() +end +function c511000962.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000962.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000962.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511000962.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511000962.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511000963.lua b/script/c511000963.lua new file mode 100644 index 00000000..3924a25c --- /dev/null +++ b/script/c511000963.lua @@ -0,0 +1,43 @@ +--Dromi the Sacred Shackles +function c511000963.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_REMOVE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511000963.condition) + e1:SetTarget(c511000963.target) + e1:SetOperation(c511000963.activate) + c:RegisterEffect(e1) +end +function c511000963.cfilter(c,tp) + return c:IsFaceup() and c:IsPreviousLocation(LOCATION_MZONE+LOCATION_GRAVE) and c:GetPreviousControler()~=tp + and c:IsType(TYPE_MONSTER) +end +function c511000963.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000963.cfilter,1,nil,tp) and eg:GetCount()==1 +end +function c511000963.filter(c) + return c:IsFaceup() and c:IsSetCard(0x4b) +end +function c511000963.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=eg:GetFirst() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000963.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000963.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511000963.filter,tp,LOCATION_MZONE,0,1,1,nil) + local dam=0 + if g:GetFirst():GetAttack()>tc:GetAttack() then + dam=g:GetFirst():GetAttack()-tc:GetAttack() + else + dam=tc:GetAttack()-g:GetFirst():GetAttack() + end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511000963.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000965.lua b/script/c511000965.lua new file mode 100644 index 00000000..2b83fc42 --- /dev/null +++ b/script/c511000965.lua @@ -0,0 +1,35 @@ +--Maternal Junk +function c511000965.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000965,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511000965.condition) + e1:SetTarget(c511000965.target) + e1:SetOperation(c511000965.operation) + c:RegisterEffect(e1) +end +function c511000965.cfilter(c) + return c:IsFaceup() and c:IsCode(511000966) +end +function c511000965.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000965.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000965.filter(c) + return c:IsCode(511000964) and c:IsAbleToHand() +end +function c511000965.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000965.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c511000965.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000965.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511000966.lua b/script/c511000966.lua new file mode 100644 index 00000000..6bd6f6c6 --- /dev/null +++ b/script/c511000966.lua @@ -0,0 +1,32 @@ +--Paternal Junk +function c511000966.initial_effect(c) + --atk - Maternal + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511000966.valcon1) + e1:SetValue(500) + c:RegisterEffect(e1) + --atk - Kid + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511000966.valcon2) + e2:SetValue(1000) + c:RegisterEffect(e2) +end +function c511000966.vfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511000966.valcon1(e) + local c=e:GetHandler() + return Duel.IsExistingMatchingCard(c511000966.vfilter,c:GetControler(),LOCATION_MZONE,0,1,nil,511000965) +end +function c511000966.valcon2(e) + local c=e:GetHandler() + return Duel.IsExistingMatchingCard(c511000966.vfilter,c:GetControler(),LOCATION_MZONE,0,1,nil,511000964) +end diff --git a/script/c511000967.lua b/script/c511000967.lua new file mode 100644 index 00000000..86ae49cb --- /dev/null +++ b/script/c511000967.lua @@ -0,0 +1,57 @@ +--Junk Factory +function c511000967.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x43)) + e2:SetValue(500) + c:RegisterEffect(e2) + --to deck + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000967,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLED) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000967.condition) + e3:SetOperation(c511000967.operation) + c:RegisterEffect(e3) +end +function c511000967.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:IsControler(1-tp) then a,d=d,a end + if a:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return d and d:IsStatus(STATUS_BATTLE_DESTROYED) and not d:IsType(TYPE_TOKEN) and d:GetLeaveFieldDest()==0 + and a:IsSetCard(0x43) +end +function c511000967.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a:IsControler(1-tp) then a,d=d,a end + if d:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_SEND_REPLACE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetTarget(c511000967.reptg) + e1:SetOperation(c511000967.repop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + d:RegisterEffect(e1) + end +end +function c511000967.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_BATTLE) end + return true +end +function c511000967.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end diff --git a/script/c511000968.lua b/script/c511000968.lua new file mode 100644 index 00000000..315a447f --- /dev/null +++ b/script/c511000968.lua @@ -0,0 +1,34 @@ +--Junk Spirit +function c511000968.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511000968.con) + e1:SetOperation(c511000968.op) + c:RegisterEffect(e1) +end +function c511000968.filter(c,e,tp) + return c:IsSetCard(0x43) and c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsReason(REASON_BATTLE) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000968.con(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511000968.filter,1,nil,e,tp) +end +function c511000968.op(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:Filter(c511000968.filter,nil,e,tp):GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c511000968.spop) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) +end +function c511000968.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if e:GetLabelObject():IsLocation(LOCATION_GRAVE) then + Duel.SpecialSummon(e:GetLabelObject(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000969.lua b/script/c511000969.lua new file mode 100644 index 00000000..6e141b54 --- /dev/null +++ b/script/c511000969.lua @@ -0,0 +1,56 @@ +--Nefarious Trader +function c511000969.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_SPSUM_PARAM+EFFECT_FLAG_UNCOPYABLE) + e1:SetTargetRange(POS_FACEUP_ATTACK,0) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511000969.spcon) + c:RegisterEffect(e1) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000969,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c511000969.target) + e1:SetOperation(c511000969.operation) + c:RegisterEffect(e1) +end +function c511000969.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLP(tp)0 + and Duel.IsPlayerCanSpecialSummonMonster(1-tp,511000068,0,0x4011,0,0,1,RACE_ROCK,ATTRIBUTE_LIGHT) then + local token=Duel.CreateToken(1-tp,511000068) + Duel.SpecialSummonStep(token,0x4011,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_NONSUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_SUM) + token:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3,true) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511000970.lua b/script/c511000970.lua new file mode 100644 index 00000000..7e8d6a6b --- /dev/null +++ b/script/c511000970.lua @@ -0,0 +1,38 @@ +--Mirror Prison +function c511000970.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetRange(LOCATION_GRAVE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(c511000970.atktarget) + e1:SetLabel(0xFFFFCF) + c:RegisterEffect(e1) + --allow attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000954,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCost(c511000970.cost) + e2:SetCondition(c511000970.con) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c511000970.atktarget(e,c) + return c:IsRace(e:GetLabel()) +end +function c511000970.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local race=e:GetLabelObject():GetLabel() + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,race) end + local g=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,race) + Duel.Release(g,REASON_COST) + local subr=g:GetFirst():GetRace() + race=race-subr + e:GetLabelObject():SetLabel(race) +end +function c511000970.con(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) and e:GetHandler():GetControler()~=tp +end diff --git a/script/c511000971.lua b/script/c511000971.lua new file mode 100644 index 00000000..32c141c2 --- /dev/null +++ b/script/c511000971.lua @@ -0,0 +1,40 @@ +--Trap Recycle +function c511000971.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511000971.cost) + e1:SetTarget(c511000971.target) + e1:SetOperation(c511000971.activate) + c:RegisterEffect(e1) +end +function c511000971.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c511000971.filter(c,tid) + return c:IsType(TYPE_TRAP) and c:IsAbleToHand() and c:GetTurnID()==tid and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c511000971.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and c511000971.filter(chkc,tid) end + if chk==0 then return Duel.IsExistingTarget(c511000971.filter,tp,LOCATION_GRAVE,0,1,nil,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511000971.filter,tp,LOCATION_GRAVE,0,1,1,nil,tid) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511000971.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SSET) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511000972.lua b/script/c511000972.lua new file mode 100644 index 00000000..f5e1e8f4 --- /dev/null +++ b/script/c511000972.lua @@ -0,0 +1,31 @@ +--SpLightning Road +function c511000972.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000972.con) + e1:SetTarget(c511000972.target) + e1:SetOperation(c511000972.activate) + c:RegisterEffect(e1) +end +function c511000972.con(e,tp,eg,ep,ev,re,r,rp) + local td=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return td and td:GetCounter(0x91)>1 +end +function c511000972.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc~=e:GetHandler() and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000972.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000973.lua b/script/c511000973.lua new file mode 100644 index 00000000..7bbfd047 --- /dev/null +++ b/script/c511000973.lua @@ -0,0 +1,46 @@ +--Infinity Guard Formation +function c511000973.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511000973.condition) + e1:SetTarget(c511000973.target) + e1:SetOperation(c511000973.operation) + c:RegisterEffect(e1) +end +function c511000973.cfilter(c,tp) + return c:IsOnField() and c:IsControler(tp) +end +function c511000973.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(c511000973.cfilter,nil,tp)-tg:GetCount()>0 +end +function c511000973.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511000973.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + local c=e:GetHandler() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.NegateEffect(ev) +end diff --git a/script/c511000974.lua b/script/c511000974.lua new file mode 100644 index 00000000..91798ed7 --- /dev/null +++ b/script/c511000974.lua @@ -0,0 +1,23 @@ +--Infinite Aura +function c511000974.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) + --counter + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_DAMAGE) + e1:SetOperation(c511000974.ctop) + c:RegisterEffect(e1) +end +function c511000974.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if ep~=tp then return end + local ct=math.floor(ev/100) + c:AddCounter(0x1100,ct) +end diff --git a/script/c511000975.lua b/script/c511000975.lua new file mode 100644 index 00000000..f6d3cf29 --- /dev/null +++ b/script/c511000975.lua @@ -0,0 +1,70 @@ +--Banishing Climb +function c511000975.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000975.condition) + e1:SetTarget(c511000975.target) + e1:SetOperation(c511000975.activate) + c:RegisterEffect(e1) +end +function c511000975.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511000975.filter(c) + return c:GetTurnID()==Duel.GetTurnCount() and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 + and c:IsType(TYPE_SYNCHRO) and c:IsFaceup() and c:IsAbleToRemove() +end +function c511000975.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000975.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511000975.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511000975.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511000975.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if Duel.Remove(g,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local og=Duel.GetOperatedGroup() + local oc=og:GetFirst() + while oc do + oc:RegisterFlagEffect(511000975,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + oc=og:GetNext() + end + og:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetLabelObject(og) + e1:SetOperation(c511000975.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c511000975.retfilter(c) + return c:GetFlagEffect(511000975)~=0 +end +function c511000975.retop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local sg=g:Filter(c511000975.retfilter,nil) + g:DeleteGroup() + local tc=sg:GetFirst() + while tc do + if Duel.ReturnToField(tc) and tc:IsFaceup() then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end + tc:SetStatus(STATUS_SUMMON_TURN+STATUS_FORM_CHANGED,false) + tc=sg:GetNext() + end +end diff --git a/script/c511000976.lua b/script/c511000976.lua new file mode 100644 index 00000000..2cbf9008 --- /dev/null +++ b/script/c511000976.lua @@ -0,0 +1,36 @@ +--Magnetic Storm +function c511000976.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511000976.condition) + e1:SetTarget(c511000976.target) + e1:SetOperation(c511000976.activate) + c:RegisterEffect(e1) +end +function c511000976.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_SZONE,0)<=1 +end +function c511000976.filter(c) + return c:IsFacedown() and c:IsDestructable() +end +function c511000976.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c511000976.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000976.filter,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000976.filter,tp,0,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetChainLimit(c511000976.climit) +end +function c511000976.climit(e,lp,tp) + return lp==tp or not e:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511000976.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000977.lua b/script/c511000977.lua new file mode 100644 index 00000000..94edb71d --- /dev/null +++ b/script/c511000977.lua @@ -0,0 +1,32 @@ +--SpSilent Burn +function c511000977.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000977.con) + e1:SetTarget(c511000977.target) + e1:SetOperation(c511000977.activate) + c:RegisterEffect(e1) +end +function c511000977.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>3 and (Duel.GetTurnPlayer()~=tp or Duel.GetCurrentPhase()>PHASE_BATTLE) +end +function c511000977.filter(c) + return c:GetAttackAnnouncedCount()<=0 +end +function c511000977.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000977.filter,tp,LOCATION_MZONE,0,1,nil) end + local dam=Duel.GetMatchingGroupCount(c511000977.filter,tp,LOCATION_MZONE,0,nil)*300 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511000977.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511000977.filter,tp,LOCATION_MZONE,0,nil)*300 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511000978.lua b/script/c511000978.lua new file mode 100644 index 00000000..4b5eadc9 --- /dev/null +++ b/script/c511000978.lua @@ -0,0 +1,69 @@ +--SpTakeover +function c511000978.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511000978.con) + e1:SetTarget(c511000978.target) + e1:SetOperation(c511000978.activate) + c:RegisterEffect(e1) +end +function c511000978.con(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + return tc and tc:GetCounter(0x91)>3 +end +function c511000978.filter(c) + return c:IsFaceup() and c:GetCounter(0)~=0 and c:IsDestructable() +end +function c511000978.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511000978.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000978.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511000978.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,g:GetFirst():GetCounter(0)*100) +end +function c511000978.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local lp=tc:GetCounter(0)*100 + if tc:GetCounter(0x3001)>0 then + lp=lp+(tc:GetCounter(0x3001)*100) + end + if tc:GetCounter(0x100)>0 then + lp=lp+(tc:GetCounter(0x100)*100) + end + if tc:GetCounter(0xe)>0 then + lp=lp+(tc:GetCounter(0xe)*100) + end + if tc:GetCounter(0x15)>0 then + lp=lp+(tc:GetCounter(0x15)*100) + end + if tc:GetCounter(0x19)>0 then + lp=lp+(tc:GetCounter(0x19)*100) + end + if tc:GetCounter(0xf)>0 then + lp=lp+(tc:GetCounter(0xf)*100) + end + if tc:GetCounter(0x1f)>0 then + lp=lp+(tc:GetCounter(0x1f)*100) + end + if tc:GetCounter(0x8)>0 then + lp=lp+(tc:GetCounter(0x8)*100) + end + if tc:GetCounter(0x10)>0 then + lp=lp+(tc:GetCounter(0x10)*100) + end + if tc:GetCounter(0x20)>0 then + lp=lp+(tc:GetCounter(0x20)*100) + end + if tc:GetCounter(0x99)>0 then + lp=lp+(tc:GetCounter(0x99)*100) + end + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Recover(tp,lp,REASON_EFFECT) + end +end diff --git a/script/c511000979.lua b/script/c511000979.lua new file mode 100644 index 00000000..f360d5fa --- /dev/null +++ b/script/c511000979.lua @@ -0,0 +1,37 @@ +--Infinity Wall +function c511000979.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000979.condition) + e1:SetOperation(c511000979.operation) + c:RegisterEffect(e1) +end +function c511000979.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3013) +end +function c511000979.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000979.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511000979.operation(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_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetOperation(c511000979.negop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511000979.cfilter2(c,tp) + return c:IsOnField() and c:IsControler(tp) +end +function c511000979.negop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return end + if re:IsHasCategory(CATEGORY_NEGATE) + and Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ex and tg~=nil and tc+tg:FilterCount(c511000979.cfilter2,nil,tp)-tg:GetCount()>0 then + Duel.NegateEffect(ev) + end +end diff --git a/script/c511000980.lua b/script/c511000980.lua new file mode 100644 index 00000000..42395029 --- /dev/null +++ b/script/c511000980.lua @@ -0,0 +1,51 @@ +--Magic Law +function c511000980.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --send + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000980,0)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511000980.tg) + e2:SetOperation(c511000980.op) + c:RegisterEffect(e2) +end +function c511000980.tgfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() + and Duel.IsExistingMatchingCard(c511000980.filter,tp,LOCATION_HAND,0,2,c,c:GetCode()) +end +function c511000980.filter(c,code) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() and c:IsCode(code) +end +function c511000980.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511000980.tgfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) +end +function c511000980.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000980.tgfilter,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + local g2=Duel.SelectMatchingCard(tp,c511000980.filter,tp,LOCATION_HAND,0,2,2,g:GetFirst(),g:GetFirst():GetCode()) + g:Merge(g2) + if Duel.SendtoGrave(g,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511000980.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511000980.aclimit(e,re,tp) + return re:GetHandler():IsType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c511000981.lua b/script/c511000981.lua new file mode 100644 index 00000000..cc13b4c0 --- /dev/null +++ b/script/c511000981.lua @@ -0,0 +1,63 @@ +--Spirit Wave Barrier +function c511000981.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000981.target) + c:RegisterEffect(e1) + --negate and destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000981,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000981.con) + e2:SetTarget(c511000981.tg) + e2:SetOperation(c511000981.op) + c:RegisterEffect(e2) + --self destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511000981.sdescon) + e3:SetOperation(c511000981.sdesop) + c:RegisterEffect(e3) +end +function c511000981.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():SetTurnCounter(0) +end +function c511000981.con(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()~=tp and Duel.GetAttackTarget()==nil +end +function c511000981.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511000981.op(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + if at:IsAttackable() then + if Duel.NegateAttack() then + Duel.Destroy(at,REASON_EFFECT) + end + end +end +function c511000981.sdescon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511000981.sdesop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==3 then + Duel.Destroy(c,REASON_RULE) + end +end diff --git a/script/c511000982.lua b/script/c511000982.lua new file mode 100644 index 00000000..44aed51c --- /dev/null +++ b/script/c511000982.lua @@ -0,0 +1,39 @@ +--Release Change +function c511000982.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000982.target) + e1:SetOperation(c511000982.activate) + c:RegisterEffect(e1) +end +function c511000982.filter(c,e,tp) + return c:IsReleasableByEffect() + and Duel.IsExistingMatchingCard(c511000982.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,c:GetLevel()) +end +function c511000982.spfilter(c,e,tp,lv) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==lv +end +function c511000982.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c511000982.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511000982.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + Duel.SelectTarget(tp,c511000982.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511000982.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.Release(tc,REASON_EFFECT)~=0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000982.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,tc:GetLevel()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end + end +end diff --git a/script/c511000983.lua b/script/c511000983.lua new file mode 100644 index 00000000..375c9aa4 --- /dev/null +++ b/script/c511000983.lua @@ -0,0 +1,30 @@ +--Double Check +function c511000983.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c511000983.condition) + e1:SetTarget(c511000983.target) + e1:SetOperation(c511000983.activate) + c:RegisterEffect(e1) +end +function c511000983.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if not at then return false end + if at:IsControler(tp) then at=Duel.GetAttacker() end + return at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511000983.target(e,tp,eg,ep,ev,re,r,rp,chk) + local at=Duel.GetAttackTarget() + if at:IsControler(tp) then at=Duel.GetAttacker() end + if chk==0 then return at:IsDestructable() end + Duel.SetTargetCard(at) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,at,1,0,0) +end +function c511000983.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToBattle() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511000984.lua b/script/c511000984.lua new file mode 100644 index 00000000..01b53fe3 --- /dev/null +++ b/script/c511000984.lua @@ -0,0 +1,131 @@ +--Miracle Sword +function c511000984.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(c511000984.target) + e1:SetOperation(c511000984.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + 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) + --Activate + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000984.accon) + e4:SetCost(c511000984.accost) + e4:SetTarget(c511000984.actg) + e4:SetOperation(c511000984.acop) + c:RegisterEffect(e4) + if not c511000984.global_check then + c511000984.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000984.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000984.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000984.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 c511000984.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 c511000984.accon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + local eq=e:GetHandler():GetEquipTarget() + if eq:IsControler(1-tp) then return false end + if not at then return false end + if eq==at then at=Duel.GetAttackTarget() end + return at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511000984.accost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000984.filter(c) + return c:IsType(TYPE_SPELL) and c:CheckActivateEffect(false,false,false)~=nil +end +function c511000984.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>-1 + and Duel.IsExistingMatchingCard(c511000984.filter,tp,LOCATION_HAND,0,1,nil) end +end +function c511000984.acop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.SelectMatchingCard(tp,c511000984.filter,tp,LOCATION_HAND,0,1,1,nil):GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end +end diff --git a/script/c511000985.lua b/script/c511000985.lua new file mode 100644 index 00000000..53a0f347 --- /dev/null +++ b/script/c511000985.lua @@ -0,0 +1,47 @@ +--Dragon Dance +function c511000985.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511000985.condition) + e1:SetCost(c511000985.cost) + e1:SetTarget(c511000985.target) + e1:SetOperation(c511000985.activate) + c:RegisterEffect(e1) +end +function c511000985.condition(e,tp,eg,ep,ev,re,r,rp) + if tp==Duel.GetTurnPlayer() then return false end + local at=Duel.GetAttackTarget() + return at and at:IsFaceup() and at:IsType(TYPE_XYZ) and at:IsRace(RACE_DRAGON) +end +function c511000985.cfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsAbleToRemoveAsCost() +end +function c511000985.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511000985.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511000985.cfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c511000985.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(rg,POS_FACEUP,REASON_COST) + local sum=rg:GetSum(Card.GetAttack) + Duel.SetTargetParam(sum) +end +function c511000985.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local sum=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if a:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-sum) + a:RegisterEffect(e1) + end +end diff --git a/script/c511000986.lua b/script/c511000986.lua new file mode 100644 index 00000000..8df87932 --- /dev/null +++ b/script/c511000986.lua @@ -0,0 +1,47 @@ +--Chaos Bringer +function c511000986.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511000986.condition) + e1:SetTarget(c511000986.target) + e1:SetOperation(c511000986.activate) + c:RegisterEffect(e1) +end +function c511000986.cfilter(c) + return c:IsType(TYPE_XYZ) and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) and c:GetOverlayCount()>0 +end +function c511000986.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000986.cfilter,nil) + return g:GetCount()==1 and ep~=tp +end +function c511000986.filter(c) + return c:IsCode(111011002) and c:IsAbleToHand() +end +function c511000986.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000986.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511000986.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511000986.cfilter,nil):GetFirst() + g:RemoveOverlayCard(tp,g:GetOverlayCount(),g:GetOverlayCount(),REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511000986.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511000986.atktarget) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + end +end +function c511000986.atktarget(e,c) + return c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296) +end diff --git a/script/c511000987.lua b/script/c511000987.lua new file mode 100644 index 00000000..02f2a205 --- /dev/null +++ b/script/c511000987.lua @@ -0,0 +1,61 @@ +--融合解除 +function c511000987.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000987.target) + e1:SetOperation(c511000987.activate) + c:RegisterEffect(e1) +end +function c511000987.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and (c:IsAbleToExtra() or c:IsAbleToGrave()) +end +function c511000987.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511000987.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000987.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511000987.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511000987.mgfilter(c,e,tp,fusc) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511000987.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not (tc:IsRelateToEffect(e) and tc:IsFaceup()) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + local op=0 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + if tc:IsAbleToExtra() and tc:IsAbleToGrave() then + op=Duel.SelectOption(tp,aux.Stringid(2407147,0),aux.Stringid(52823314,0)) + elseif tc:IsAbleToExtra() then + Duel.SelectOption(tp,aux.Stringid(2407147,0)) + op=0 + else + Duel.SelectOption(tp,aux.Stringid(52823314,0)) + op=1 + end + local ch=0 + if op==0 then + ch=Duel.SendtoGrave(tc,REASON_EFFECT) + else + ch=Duel.SendtoDeck(tc,nil,0,REASON_EFFECT) + end + if ch==0 or bit.band(sumtype,SUMMON_TYPE_FUSION)~=SUMMON_TYPE_FUSION or mg:GetCount()==0 + or mg:GetCount()>Duel.GetLocationCount(tc:GetControler(),LOCATION_MZONE) + or mg:IsExists(c511000987.mgfilter,1,nil,e,tc:GetControler(),tc) then + sumable=false + end + if sumable then + Duel.BreakEffect() + Duel.SpecialSummon(mg,0,tc:GetControler(),tc:GetControler(),false,false,POS_FACEUP) + end +end diff --git a/script/c511000988.lua b/script/c511000988.lua new file mode 100644 index 00000000..2e847614 --- /dev/null +++ b/script/c511000988.lua @@ -0,0 +1,36 @@ +--Masahiro the Dark Clown +function c511000988.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000988,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetCountLimit(1) + e1:SetTarget(c511000988.target) + e1:SetOperation(c511000988.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end +c511000988.illegal=true +function c511000988.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsType(TYPE_FLIP) end + if chk==0 then return c:GetFlagEffect(511000988)==0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + local g=Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_GRAVE,0,1,1,nil,TYPE_FLIP) +end +function c511000988.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + c:CopyEffect(tc:GetCode(),RESET_CHAIN,1) + Duel.ChangePosition(c,POS_FACEDOWN_ATTACK,0,POS_FACEDOWN_DEFENSE,0) + Duel.ChangePosition(c,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE) + c:RegisterFlagEffect(511000988,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c511000989.lua b/script/c511000989.lua new file mode 100644 index 00000000..ae5bd2e6 --- /dev/null +++ b/script/c511000989.lua @@ -0,0 +1,36 @@ +--Tomohiro the Mountain Warrior +function c511000989.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000989,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511000989.cost) + e1:SetTarget(c511000989.target) + e1:SetOperation(c511000989.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end +c511000989.illegal=true +function c511000989.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c511000989.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511000989.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000990.lua b/script/c511000990.lua new file mode 100644 index 00000000..9b6cf27d --- /dev/null +++ b/script/c511000990.lua @@ -0,0 +1,172 @@ +--Yasushi the Skull Knight +function c511000990.initial_effect(c) + --fusion material + c:EnableReviveLimit() + if c:IsStatus(STATUS_COPYING_EFFECT) then return end + if c.material_count==nil then + c511000990.material_count=2 + c511000990.material={78010363,80604091} + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_FUSION_MATERIAL) + e1:SetCondition(c511000990.fscon) + e1:SetOperation(c511000990.fsop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) + local f=Card.IsCanBeFusionMaterial + Card.IsCanBeFusionMaterial=function(c,fc,ismon) + if (c:GetSequence()==6 or c:GetSequence()==7) and c:IsLocation(LOCATION_SZONE) then + return f(c,fc,true) + end + if c:IsCode(80604091) then return f(c,fc,true) end + return f(c,fc,ismon) + end + local fchk=Card.CheckFusionMaterial + Card.CheckFusionMaterial=function(c,m,mc,chkf) + if c:IsCode(511000990) then + local mg1=Group.CreateGroup() + local mg2=Group.CreateGroup() + if m:IsExists(c511000990.sameplayerchk,1,nil,c:GetControler()) then + mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,c:GetControler(),LOCATION_SZONE,0,nil,c) + m:Merge(mg1) + end + if m:IsExists(c511000990.sameplayerchk,1,nil,1-c:GetControler()) then + mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,c:GetControler(),LOCATION_SZONE,0,nil,c) + mg2=Duel.GetMatchingGroup(c511000990.mat2,c:GetControler(),0,LOCATION_SZONE,nil,c) + m:Merge(mg1) + m:Merge(mg2) + end + if fchk(c,m,mc,chkf) then + m:Sub(mg1) + m:Sub(mg2) + return true + end + m:Sub(mg1) + m:Sub(mg2) + end + return fchk(c,m,mc,chkf) + end + local fsel=Duel.SelectFusionMaterial + Duel.SelectFusionMaterial=function(tp,c,mg,mc,chkf) + if c:IsCode(511000990) then + if mg:IsExists(c511000990.sameplayerchk,1,nil,tp) then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_SZONE,0,nil) + mg:Merge(mg1) + end + if mg:IsExists(c511000990.sameplayerchk,1,nil,1-tp) then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_SZONE,0,nil) + local mg2=Duel.GetMatchingGroup(c511000990.mat2,tp,0,LOCATION_SZONE,nil) + mg:Merge(mg1) + mg:Merge(mg2) + end + end + if Duel.IsPlayerAffectedByEffect(1-tp,5000) and Duel.SelectYesNo(1-tp,aux.Stringid(4002,8)) then + Duel.ConfirmCards(1-tp,mg) + local label=0 + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) or (mc and mc:IsLocation(LOCATION_HAND)) then label=label+1 end + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) or (mc and mc:IsLocation(LOCATION_DECK)) then label=label+2 end + Duel.RegisterFlagEffect(1-tp,511004008+label,0,0,1) + return fsel(1-tp,c,mg,mc,chkf) + end + return fsel(tp,c,mg,mc,chkf) + end +end +function c511000990.sameplayerchk(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) +end +function c511000990.mat2(c) + return c:IsCanBeFusionMaterial() and c:IsFaceup() +end +c511000990.illegal=true +function c511000990.FConditionCheckF(c,chkf) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(chkf) +end +function Auxiliary.FConditionFilter21(c,code1,code2,sub) + return c:IsFusionCode(code1,code2) or (sub and c:IsHasEffect(511002961)) +end +function c511000990.fscon(e,g,gc,chkfnf) + if g==nil then return true end + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,gc,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + local b1=0 local b2=0 local bw=0 local bwx=0 + if gc:IsFusionCode(78010363) then b1=1 end + if gc:IsFusionCode(80604091) then b2=1 end + if gc:IsHasEffect(511002961) then bwx=1 end + if gc:CheckFusionSubstitute(e:GetHandler()) then bw=1 end + if b1+b2+bw==0 then return false end + if chkf~=PLAYER_NONE and not aux.FConditionCheckF(gc,chkf) then + mg=mg:Filter(c511000990.FConditionCheckF,nil,chkf) + end + if b1+b2+bw>1 or bwx==1 then + return mg:IsExists(aux.FConditionFilter22,1,nil,78010363,80604091,true,e:GetHandler()) + elseif b1==1 then + return mg:IsExists(aux.FConditionFilter12,1,nil,80604091,true,e:GetHandler()) + elseif b2==1 then + return mg:IsExists(aux.FConditionFilter12,1,nil,78010363,true,e:GetHandler()) + else + return mg:IsExists(aux.FConditionFilter21,1,nil,78010363,80604091) + end + end + local b1=0 local b2=0 local bw=0 local bwxct=0 + local ct=0 + local fs=chkf==PLAYER_NONE + local tc=mg:GetFirst() + while tc do + local match=false + if tc:IsFusionCode(78010363) then b1=1 match=true end + if tc:IsFusionCode(80604091) then b2=1 match=true end + if tc:IsHasEffect(511002961) then bwxct=bwxct+1 match=true end + if not tc:IsHasEffect(511002961) and tc:CheckFusionSubstitute(e:GetHandler()) then bw=1 match=true end + if match then + if c511000990.FConditionCheckF(tc,chkf) then fs=true end + ct=ct+1 + end + tc=mg:GetNext() + end + return fs and ct>1 and b1+b2+bw+bwxct>1 +end +function c511000990.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local g=eg:Filter(Card.IsCanBeFusionMaterial,gc,e:GetHandler()) + local tc=gc + local g1=nil + if gc then + if chkf~=PLAYER_NONE and not c511000990.FConditionCheckF(gc,chkf) then + g=g:Filter(c511000990.FConditionCheckF,nil,chkf) + end + else + local sg=g:Filter(Auxiliary.FConditionFilter22,nil,78010363,80604091,true,e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,c511000990.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + tc=g1:GetFirst() + g:RemoveCard(tc) + end + local b1=0 local b2=0 local bw=0 local bwx=0 + if tc:IsFusionCode(78010363) then b1=1 end + if tc:IsFusionCode(80604091) then b2=1 end + if tc:IsHasEffect(511002961) then bwx=1 end + if not tc:IsHasEffect(511002961) and tc:CheckFusionSubstitute(e:GetHandler()) then bw=1 end + local g2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if b1+b2+bw>1 or bwx==1 then + g2=g:FilterSelect(tp,aux.FConditionFilter22,1,1,nil,78010363,80604091,true,e:GetHandler()) + elseif b1==1 then + g2=g:FilterSelect(tp,aux.FConditionFilter12,1,1,nil,80604091,true,e:GetHandler()) + elseif b2==1 then + g2=g:FilterSelect(tp,aux.FConditionFilter12,1,1,nil,78010363,true,e:GetHandler()) + else + g2=g:FilterSelect(tp,aux.FConditionFilter21,1,1,nil,78010363,80604091) + end + if g1 then g2:Merge(g1) end + Duel.SetFusionMaterial(g2) +end diff --git a/script/c511000991.lua b/script/c511000991.lua new file mode 100644 index 00000000..40633955 --- /dev/null +++ b/script/c511000991.lua @@ -0,0 +1,57 @@ +--Level Tax +function c511000991.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --affect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511000991.operation) + c:RegisterEffect(e2) +end +function c511000991.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsLevelAbove,0,0xff,0xff,nil,5) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_COST) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCost(c511000991.costchk) + e1:SetOperation(c511000991.costop) + e1:SetReset(RESET_EVENT+0x1fe0001) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_FLIPSUMMON_COST) + tc:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SPSUMMON_COST) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ADJUST) + e4:SetRange(0xff) + e4:SetOperation(c511000991.resetop) + e4:SetReset(RESET_EVENT+0x1fe0001) + tc:RegisterEffect(e4) + tc=g:GetNext() + end +end +function c511000991.costchk(e,c,tp) + local atk=c:GetAttack() + e:SetLabel(atk) + return Duel.CheckLPCost(c:GetControler(),atk) +end +function c511000991.costop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.PayLPCost(c:GetControler(),e:GetLabel()) + e:SetLabel(0) +end +function c511000991.resetop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():ResetEffect(0x1,RESET_EVENT) +end diff --git a/script/c511000992.lua b/script/c511000992.lua new file mode 100644 index 00000000..06663b1a --- /dev/null +++ b/script/c511000992.lua @@ -0,0 +1,72 @@ +--Circle of Terror +function c511000992.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,1) + e2:SetLabel(0) + e2:SetTarget(c511000992.sumlimit) + e2:SetCondition(c511000992.condition) + c:RegisterEffect(e2) + --discard + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(512000006,0)) + e3:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511000992.cost) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetOperation(c511000992.resop) + e4:SetLabelObject(e2) + c:RegisterEffect(e4) + local e5=e2:Clone() + e5:SetLabelObject(e2) + e5:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e5:SetCondition(c511000992.condition2) + c:RegisterEffect(e5) +end +function c511000992.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabel()==0 +end +function c511000992.condition2(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()==1 and e:GetLabel()==0 then + e:SetLabel(1) + end + if e:GetLabelObject():GetLabel()==0 and e:GetLabel()==1 then + e:SetLabel(0) + end + return e:GetLabel()==0 +end +function c511000992.sumlimit(e,c,sump,sumtype,sumpos,targetp) + return c:IsLocation(LOCATION_HAND) and c:GetControler()==Duel.GetTurnPlayer() +end +function c511000992.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c511000992.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetLabelObject():GetLabel()~=1 + and Duel.IsExistingMatchingCard(c511000992.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511000992.cfilter,1,1,REASON_COST+REASON_DISCARD) + e:GetLabelObject():SetLabel(1) +end +function c511000992.resop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then + e:GetLabelObject():SetLabel(0) + end +end diff --git a/script/c511000993.lua b/script/c511000993.lua new file mode 100644 index 00000000..865c43f3 --- /dev/null +++ b/script/c511000993.lua @@ -0,0 +1,138 @@ +--ZS - Ouroboros Sage +function c511000993.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000993,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511000993.sptg) + e1:SetOperation(c511000993.spop) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000993,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511000993.eqtg) + e2:SetOperation(c511000993.eqop) + c:RegisterEffect(e2) +end +function c511000993.filter(c,e,tp) + return c:IsSetCard(0x48) and c:GetAttribute()~=ATTRIBUTE_LIGHT and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000993.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511000993.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and + Duel.IsExistingTarget(c511000993.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511000993.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511000993.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(511000993,RESET_EVENT+0x1fe0000,0,0) + end + Duel.SpecialSummonComplete() +end +function c511000993.eqfilter(c) + return c:GetFlagEffect(511000993)>0 +end +function c511000993.ufilter(c) + return c:IsFaceup() and (c:IsCode(65305468) or c:IsSetCard(0x7f)) +end +function c511000993.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000993.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>1 + and Duel.IsExistingTarget(c511000993.eqfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(c511000993.ufilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511000993.eqfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511000993.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511000993.ufilter,tp,LOCATION_MZONE,0,1,1,nil) + local eq=g:GetFirst() + if not eq then return end + if not c:IsRelateToEffect(e) then return end + if (c:IsLocation(LOCATION_MZONE) and c:IsFacedown()) or (eq:IsLocation(LOCATION_MZONE) and eq:IsFacedown()) then return end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=1 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + g:AddCard(c) + Duel.SendtoGrave(g,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + Duel.Equip(tp,eq,tc,true) + local atk1=c:GetTextAttack() + local atk2=eq:GetTextAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabelObject(tc) + e1:SetValue(c511000993.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(atk1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetLabelObject(tc) + e3:SetValue(c511000993.eqlimit) + eq:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetValue(atk2) + e4:SetReset(RESET_EVENT+0x1fe0000) + eq:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511000993,2)) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + e5:SetCategory(CATEGORY_ATKCHANGE) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511000993.atkcon) + e5:SetOperation(c511000993.atkop) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) +end +function c511000993.eqlimit(e,c) + return e:GetLabelObject()==c +end +function c511000993.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler():GetEquipTarget() +end +function c511000993.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=c:GetEquipTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e1:SetValue(eq:GetAttack()*2) + eq:RegisterEffect(e1) +end diff --git a/script/c511000994.lua b/script/c511000994.lua new file mode 100644 index 00000000..47d9f4bd --- /dev/null +++ b/script/c511000994.lua @@ -0,0 +1,90 @@ +--ZW-Sylphid Wing +function c511000994.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000994,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511000994.eqtg) + e1:SetOperation(c511000994.eqop) + c:RegisterEffect(e1) + +end +function c511000994.filter(c) + return c:IsFaceup() and c:IsCode(84013237) +end +function c511000994.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000994.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511000994.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000994.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000994.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511000994.eqlimit) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(800) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000994,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000994.atkcon) + e3:SetOperation(c511000994.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511000993,2)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000994.atcon) + e4:SetOperation(c511000994.atop) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) +end +function c511000994.eqlimit(e,c) + return c:IsCode(84013237) +end +function c511000994.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsType,1,nil,TYPE_XYZ) and ep~=tp +end +function c511000994.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1600) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c511000994.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler():GetEquipTarget() +end +function c511000994.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=c:GetEquipTarget() + Duel.Overlay(eq,Group.FromCards(c)) +end diff --git a/script/c511000995.lua b/script/c511000995.lua new file mode 100644 index 00000000..3522aaa3 --- /dev/null +++ b/script/c511000995.lua @@ -0,0 +1,71 @@ +--時読みの魔術師 +function c511000995.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --negate and set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000995,0)) + e2:SetCategory(CATEGORY_NEGATE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCode(EVENT_CHAINING) + e2:SetCountLimit(1) + e2:SetCondition(c511000995.discon) + e2:SetTarget(c511000995.distg) + e2:SetOperation(c511000995.disop) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000995,1)) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511000995.negcon) + e3:SetTarget(c511000995.negtg) + e3:SetOperation(c511000995.negop) + c:RegisterEffect(e3) +end +function c511000995.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not tg or tg:GetCount()~=1 or not tg:GetFirst():IsType(TYPE_PENDULUM) or not tg:GetFirst():IsLocation(LOCATION_MZONE) then return false end + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511000995.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end +function c511000995.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end + Duel.NegateActivation(ev) + local g=eg:GetFirst() + if re:GetHandler():IsRelateToEffect(re) and g:IsCanTurnSet() then + Duel.BreakEffect() + g:CancelToGrave() + Duel.ChangePosition(g,POS_FACEDOWN) + Duel.RaiseEvent(g,EVENT_SSET,e,REASON_EFFECT,1-tp,1-tp,0) + end +end +function c511000995.negfilter(c) + return c:IsOnField() and (c:GetSequence()==6 or c:GetSequence()==7) +end +function c511000995.negcon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsExists(c511000995.negfilter,1,nil) and Duel.IsChainDisablable(ev) + and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511000995.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511000995.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c511000996.lua b/script/c511000996.lua new file mode 100644 index 00000000..bfa44140 --- /dev/null +++ b/script/c511000996.lua @@ -0,0 +1,49 @@ +--Small Stopper +function c511000996.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511000996.atktarget) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000996,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_BOTH_SIDE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetCondition(c511000996.condition) + e3:SetTarget(c511000996.target) + e3:SetOperation(c511000996.operation) + c:RegisterEffect(e3) +end +function c511000996.atktarget(e,c) + return c:IsAttackBelow(1000) +end +function c511000996.cfilter(c) + return c:IsPosition(POS_FACEUP_DEFENSE) +end +function c511000996.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,LOCATION_MZONE,0,1,nil) + and Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 +end +function c511000996.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) +end +function c511000996.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511000997.lua b/script/c511000997.lua new file mode 100644 index 00000000..3fdd5b83 --- /dev/null +++ b/script/c511000997.lua @@ -0,0 +1,78 @@ +--星読みの魔術師 +function c511000997.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --negate and set + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetDescription(aux.Stringid(511000997,1)) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCondition(c511000997.negcon) + e2:SetTarget(c511000997.negtg) + e2:SetOperation(c511000997.negop) + c:RegisterEffect(e2) + --sp summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511000997.spcon) + e3:SetTarget(c511000997.sptg) + e3:SetOperation(c511000997.spop) + c:RegisterEffect(e3) +end +function c511000997.negcon(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttacker()==nil then return end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return ((d~=nil and a:GetControler()==tp and a:IsType(TYPE_PENDULUM) and a:IsRelateToBattle()) + or (d~=nil and d:GetControler()==tp and d:IsFaceup() and d:IsType(TYPE_PENDULUM) and d:IsRelateToBattle())) + and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511000997.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end +function c511000997.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end + Duel.NegateActivation(ev) + local g=eg:GetFirst() + if re:GetHandler():IsRelateToEffect(re) and g:IsCanTurnSet() then + Duel.BreakEffect() + g:CancelToGrave() + Duel.ChangePosition(g,POS_FACEDOWN) + Duel.RaiseEvent(g,EVENT_SSET,e,REASON_EFFECT,1-tp,1-tp,0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + g:RegisterEffect(e1) + end +end +function c511000997.filter(c) + return not c:IsReason(REASON_RULE) +end +function c511000997.spcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsType(TYPE_PENDULUM) and tc:IsPreviousPosition(POS_FACEUP) and tc:GetPreviousControler()==tp + and tc:IsPreviousLocation(LOCATION_MZONE) +end +function c511000997.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return tc:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + tc:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) +end +function c511000997.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511000998.lua b/script/c511000998.lua new file mode 100644 index 00000000..2fd314d2 --- /dev/null +++ b/script/c511000998.lua @@ -0,0 +1,68 @@ +--Clay Wrap +function c511000998.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(c511000998.target) + e1:SetOperation(c511000998.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(c511000998.eqlimit) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000998,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511000998.descon) + e3:SetTarget(c511000998.destg) + e3:SetOperation(c511000998.desop) + c:RegisterEffect(e3) +end +function c511000998.eqlimit(e,c) + return c:IsCode(84327329) +end +function c511000998.filter(c) + return c:IsFaceup() and c:IsCode(84327329) +end +function c511000998.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000998.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000998.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511000998.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000998.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 c511000998.descon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetPreviousEquipTarget() + return e:GetHandler():IsReason(REASON_LOST_TARGET) and ec:IsLocation(LOCATION_GRAVE) +end +function c511000998.dfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511000998.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511000998.dfilter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511000998.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511000998.dfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511000999.lua b/script/c511000999.lua new file mode 100644 index 00000000..6068f645 --- /dev/null +++ b/script/c511000999.lua @@ -0,0 +1,44 @@ +--Courageous Charge +function c511000999.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c511000999.cost) + e1:SetTarget(c511000999.target) + e1:SetOperation(c511000999.activate) + c:RegisterEffect(e1) +end +function c511000999.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 c511000999.filter(c) + return c:IsFaceup() and c:IsAttackBelow(1000) +end +function c511000999.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511000999.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511000999.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511000999.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511000999.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetOperation(c511000999.damop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511000999.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local def=c:GetDefense() + if ep~=tp then + Duel.Damage(1-tp,def,REASON_EFFECT) + end +end diff --git a/script/c511001000.lua b/script/c511001000.lua new file mode 100644 index 00000000..b3a08973 --- /dev/null +++ b/script/c511001000.lua @@ -0,0 +1,37 @@ +--Return Talisman +function c511001000.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001000,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c511001000.spcon) + e2:SetTarget(c511001000.sptg) + e2:SetOperation(c511001000.spop) + c:RegisterEffect(e2) +end +function c511001000.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetActivityCount(1-tp,ACTIVITY_NORMALSUMMON)==0 + and Duel.GetActivityCount(1-tp,ACTIVITY_SPSUMMON)==0 and Duel.GetActivityCount(1-tp,ACTIVITY_FLIPSUMMON)==0 +end +function c511001000.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,tp,0) +end +function c511001000.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001001,0,0x4011,1000,1000,2,RACE_FAIRY,ATTRIBUTE_DARK,POS_FACEUP_DEFENSE,1-tp) then + local token=Duel.CreateToken(tp,511001001) + Duel.SpecialSummon(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511001002.lua b/script/c511001002.lua new file mode 100644 index 00000000..ce90f6ca --- /dev/null +++ b/script/c511001002.lua @@ -0,0 +1,24 @@ +--Smash Ace +function c511001002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001002.target) + e1:SetOperation(c511001002.operation) + c:RegisterEffect(e1) +end +function c511001002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_DECK)~=0 end +end +function c511001002.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if not tc then return end + if tc:IsType(TYPE_MONSTER) then + Duel.Damage(1-tp,1000,REASON_EFFECT) + end + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) +end diff --git a/script/c511001003.lua b/script/c511001003.lua new file mode 100644 index 00000000..a032c058 --- /dev/null +++ b/script/c511001003.lua @@ -0,0 +1,31 @@ +--Receive Ace +function c511001003.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001003.condition) + e1:SetTarget(c511001003.target) + e1:SetOperation(c511001003.activate) + c:RegisterEffect(e1) +end +function c511001003.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()~=tp and Duel.GetAttackTarget()==nil +end +function c511001003.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,3) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1500) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,3) +end +function c511001003.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + Duel.DiscardDeck(1-p,3,REASON_EFFECT) + end +end diff --git a/script/c511001004.lua b/script/c511001004.lua new file mode 100644 index 00000000..626f456e --- /dev/null +++ b/script/c511001004.lua @@ -0,0 +1,105 @@ +--Deuce +function c511001004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001004.condition) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCondition(c511001004.atkcon) + e2:SetTarget(c511001004.atktg) + c:RegisterEffect(e2) + --check + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511001004.checkop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CHANGE_DAMAGE) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e4:SetTargetRange(1,0) + e4:SetValue(c511001004.damval1) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CHANGE_DAMAGE) + e5:SetRange(LOCATION_SZONE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetTargetRange(0,1) + e5:SetValue(c511001004.damval2) + c:RegisterEffect(e5) + --win + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetCode(EVENT_ADJUST) + e6:SetRange(LOCATION_SZONE) + e6:SetOperation(c511001004.winop) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EVENT_CHAIN_SOLVED) + c:RegisterEffect(e7) + local e8=e6:Clone() + e8:SetCode(EVENT_DAMAGE_STEP_END) + c:RegisterEffect(e8) + -- + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetCode(EFFECT_CANNOT_LOSE_LP) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(1,0) + e9:SetValue(1) + c:RegisterEffect(e9) +end +function c511001004.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)==1000 and Duel.GetLP(1-tp)==1000 +end +function c511001004.atkcon(e) + return e:GetHandler():GetFlagEffect(30606547)~=0 +end +function c511001004.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() +end +function c511001004.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(30606547)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + e:GetHandler():RegisterFlagEffect(30606547,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end +function c511001004.damval1(e,re,val,r,rp,rc) + local tp=e:GetHandler():GetControler() + if val~=0 then + Duel.RegisterFlagEffect(1-tp,511001004,RESET_PHASE+PHASE_END,0,1) + return 0 + else return val end +end +function c511001004.damval2(e,re,val,r,rp,rc) + local tp=e:GetHandler():GetControler() + if val~=0 then + Duel.RegisterFlagEffect(tp,511001004,RESET_PHASE+PHASE_END,0,1) + return 0 + else return val end +end +function c511001004.winop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,511001004)>1 and Duel.GetFlagEffect(1-tp,511001004)>1 then + Duel.Win(PLAYER_NONE,0x54) + elseif Duel.GetFlagEffect(tp,511001004)>1 then + Duel.Win(tp,0x54) + elseif Duel.GetFlagEffect(1-tp,511001004)>1 then + Duel.Win(1-tp,0x54) + end +end diff --git a/script/c511001005.lua b/script/c511001005.lua new file mode 100644 index 00000000..42fd2c7b --- /dev/null +++ b/script/c511001005.lua @@ -0,0 +1,45 @@ +--Extinction Fist +function c511001005.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001005.condition) + e1:SetTarget(c511001005.target) + e1:SetOperation(c511001005.activate) + c:RegisterEffect(e1) +end +function c511001005.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==nil +end +function c511001005.atkfilter(c,e) + return c:IsDestructable() and (c:IsType(TYPE_RITUAL) or c:IsType(TYPE_FUSION)) +end +function c511001005.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511001005.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local op=1-tp + if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + if Duel.Destroy(tc,REASON_EFFECT)>0 then + local mg=tc:GetMaterial() + if mg:IsExists(c511001005.mgfilter,1,nil,e,op,tc) then + local ft=Duel.GetLocationCount(op,LOCATION_MZONE) + if ft>0 then + local g=mg:FilterSelect(op,c511001005.mgfilter,ft,ft,nil,e,op,tc) + Duel.SpecialSummon(g,0,op,op,false,false,POS_FACEUP) + end + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end + end + end +end +function c511001005.mgfilter(c,e,tp,tc) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end diff --git a/script/c511001006.lua b/script/c511001006.lua new file mode 100644 index 00000000..17ccef14 --- /dev/null +++ b/script/c511001006.lua @@ -0,0 +1,87 @@ +--Ghoul Summoner +function c511001006.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001006.target) + e1:SetOperation(c511001006.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511001006.desop) + c:RegisterEffect(e2) + --sp summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001006,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511001006.spcost) + e3:SetTarget(c511001006.sptg) + e3:SetOperation(c511001006.spop) + c:RegisterEffect(e3) +end +function c511001006.filter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001006.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001006.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001006.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001006.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001006.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001006.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001006.eqlimit) + c:RegisterEffect(e1) + end +end +function c511001006.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511001006.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD,nil) +end +function c511001006.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001006.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001006.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001006.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,0) +end +function c511001006.spop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Damage(tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511001007.lua b/script/c511001007.lua new file mode 100644 index 00000000..43e9e566 --- /dev/null +++ b/script/c511001007.lua @@ -0,0 +1,20 @@ +--Defense Wall +function c511001007.initial_effect(c) + --target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetCondition(c511001007.con) + e1:SetTarget(c511001007.tglimit) + e1:SetValue(1) + c:RegisterEffect(e1) +end +function c511001007.con(e) + return e:GetHandler():IsDefensePos() +end +function c511001007.tglimit(e,c) + return c~=e:GetHandler() +end \ No newline at end of file diff --git a/script/c511001010.lua b/script/c511001010.lua new file mode 100644 index 00000000..4d7f1191 --- /dev/null +++ b/script/c511001010.lua @@ -0,0 +1,38 @@ +--Speed Roid Shave Boomerang +function c511001010.initial_effect(c) + --lose ATK + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001010,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511001010.condition) + e1:SetTarget(c511001010.target) + e1:SetOperation(c511001010.operation) + c:RegisterEffect(e1) +end +function c511001010.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) +end +function c511001010.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:GetAttack()>=300 end + if chk==0 then return Duel.IsExistingTarget(Card.IsAttackAbove,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,300) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsAttackAbove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,300) +end +function c511001010.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then + if Duel.ChangePosition(c,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-300) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001013.lua b/script/c511001013.lua new file mode 100644 index 00000000..7ed5082e --- /dev/null +++ b/script/c511001013.lua @@ -0,0 +1,89 @@ +--E・HERO Clay Guardian +function c511001013.initial_effect(c) + --fusion material + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511001013.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511001013.spcon) + e2:SetOperation(c511001013.spop) + c:RegisterEffect(e2) + --change name + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_CHANGE_CODE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(84327329) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001013,0)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetTarget(c511001013.damtg) + e4:SetOperation(c511001013.damop) + c:RegisterEffect(e4) + --metamorphosis sp summon success + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_DAMAGE_STEP) + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + e5:SetCondition(c511001013.sscon) + e5:SetOperation(c511001013.ssop) + c:RegisterEffect(e5) +end +function c511001013.splimit(e,se,sp,st) + local sc=se:GetHandler() + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or sc:IsCode(46411259) +end +function c511001013.spfilter(c,code) + return c:IsCode(code) and c:IsAbleToGraveAsCost() +end +function c511001013.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001013.spfilter,tp,LOCATION_MZONE,0,1,nil,84327329) + and Duel.IsExistingMatchingCard(c511001013.spfilter,tp,LOCATION_HAND+LOCATION_SZONE,0,1,nil,46411259) +end +function c511001013.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511001013.spfilter,tp,LOCATION_MZONE,0,1,1,nil,84327329) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511001013.spfilter,tp,LOCATION_HAND+LOCATION_SZONE,0,1,1,nil,46411259) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) +end +function c511001013.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*200) +end +function c511001013.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + Duel.Damage(p,ct*200,REASON_EFFECT) +end +function c511001013.sscon(e,tp,eg,ep,ev,re,r,rp) + if not re then return false end + local rc=re:GetHandler() + return rc:IsCode(46411259) +end +function c511001013.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:CompleteProcedure() +end diff --git a/script/c511001014.lua b/script/c511001014.lua new file mode 100644 index 00000000..9c6c04c3 --- /dev/null +++ b/script/c511001014.lua @@ -0,0 +1,46 @@ +--Rank-Up-Magic Raptor's Force +function c511001014.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c511001014.sptg) + e1:SetOperation(c511001014.spop) + c:RegisterEffect(e1) +end +function c511001014.filter(c,e,tp,tid) + local rk=c:GetRank() + return rk>0 and c:GetTurnID()==tid and bit.band(c:GetReason(),REASON_BATTLE)~=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsType(TYPE_XYZ) + and Duel.IsExistingMatchingCard(c511001014.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,rk) +end +function c511001014.spfilter(c,e,tp,rk) + return c:GetRank()==rk+1 and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) + and c:IsSetCard(0xba) +end +function c511001014.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and chkc:IsControler(tp) and c511001014.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001014.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001014.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil,e,tp,tid) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001014.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c511001014.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetRank()) + local tc2=g2:GetFirst() + if tc2 then + Duel.Overlay(tc2,tc) + Duel.SpecialSummon(tc2,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + tc2:SetMaterial(Group.FromCards(tc)) + tc2:CompleteProcedure() + end + end +end diff --git a/script/c511001015.lua b/script/c511001015.lua new file mode 100644 index 00000000..97051ee8 --- /dev/null +++ b/script/c511001015.lua @@ -0,0 +1,56 @@ +--Raidraptor - Symbol +function c511001015.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001015.condition) + e1:SetTarget(c511001015.target) + e1:SetOperation(c511001015.activate) + c:RegisterEffect(e1) + if not c511001015.global_check then + c511001015.global_check=true + c511001015[0]=false + c511001015[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE_STEP_END) + ge1:SetOperation(c511001015.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c511001015.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001015.checkop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if Duel.GetAttacker():IsSetCard(0xba) and at then + c511001015[0]=true + c511001015[1]=true + end +end +function c511001015.clear(e,tp,eg,ep,ev,re,r,rp) + c511001015[0]=false + c511001015[1]=false +end +function c511001015.condition(e,tp,eg,ep,ev,re,r,rp) + return c511001015[tp] +end +function c511001015.filter(c) + return c:IsSetCard(0xba) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511001015.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001015.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001015.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001015.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001016.lua b/script/c511001016.lua new file mode 100644 index 00000000..2af83e35 --- /dev/null +++ b/script/c511001016.lua @@ -0,0 +1,68 @@ +--Spellbinding Circle +function c511001016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001016.condition) + e1:SetTarget(c511001016.target) + e1:SetOperation(c511001016.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001016.descon) + e2:SetOperation(c511001016.desop) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c511001016.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001016.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511001016.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + c:CreateRelation(tc,RESET_EVENT+0x1fe0000) + e:GetLabelObject():SetLabelObject(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_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001016.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK) + tc:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(-700) + tc:RegisterEffect(e3,true) + end +end +function c511001016.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001016.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=e:GetLabelObject() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) and c:IsRelateToCard(tc) +end +function c511001016.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001017.lua b/script/c511001017.lua new file mode 100644 index 00000000..bafc2489 --- /dev/null +++ b/script/c511001017.lua @@ -0,0 +1,88 @@ +--Glory Shield +function c511001017.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(c511001017.target) + e1:SetOperation(c511001017.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001017.descon) + e2:SetTarget(c511001017.destar) + e2:SetOperation(c511001017.desact) + 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) + --actlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetCondition(c511001017.accon) + e4:SetOperation(c511001017.acop) + c:RegisterEffect(e4) +end +function c511001017.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==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 c511001017.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 c511001017.accon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst()==e:GetHandler():GetEquipTarget() +end +function c511001017.acop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511001017.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511001017.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511001017.descon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + return ec and eg:IsContains(ec) and ep~=tp +end +function c511001017.dfilter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511001017.destar(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511001017.dfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001017.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001017.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001017.desact(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511001018.lua b/script/c511001018.lua new file mode 100644 index 00000000..f3da579e --- /dev/null +++ b/script/c511001018.lua @@ -0,0 +1,32 @@ +--Antikythira Gear +function c511001018.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL+CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001018.condition) + e1:SetTarget(c511001018.target) + e1:SetOperation(c511001018.activate) + c:RegisterEffect(e1) +end +function c511001018.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==nil +end +function c511001018.filter(c) + return c:IsControlerCanBeChanged() and c:IsAttackPos() +end +function c511001018.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local atr=Duel.GetAttacker() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001018.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001018.filter,tp,0,LOCATION_MZONE,1,atr) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511001018.filter,tp,0,LOCATION_MZONE,1,1,atr) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511001018.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.GetControl(tc,tp) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511001019.lua b/script/c511001019.lua new file mode 100644 index 00000000..3f58e3d4 --- /dev/null +++ b/script/c511001019.lua @@ -0,0 +1,278 @@ +--シャイニング・リバース +function c511001019.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + if c511001603 then --Hot Red Dragon Archfiend King Calamity (Anime) + local mt=c511001603 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsType(TYPE_SYNCHRO) end + mt.sync=true + mt.dobtun=true + end + if c97489701 then --Red Nova Dragon + local mt=c97489701 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsCode(70902743) end + mt.sync=true + mt.dobtun=true + end + if c511001637 then --Hot Red Dragon Archfiend Belial (Anime) + local mt=c511001637 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return true end + mt.sync=true + mt.dobtun=true + end + if c93157004 then --Vylon Omega + local mt=c93157004 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsSetCard(0x30) end + mt.sync=true + mt.dobtun=true + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001019.target) + e1:SetOperation(c511001019.activate) + c:RegisterEffect(e1) + if not c511001019.global_check then + c511001019.global_check=true + --double tuner + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(c511001019.op) + Duel.RegisterEffect(ge1,0) + end +end +function c511001019.op(e,tp,eg,ep,ev,re,r,rp) + --Double Tuners + if c62242678 and not c62242678.dobtun then --Hot Red Dragon Archfiend King Calamity + local mt=c62242678 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsAttribute(ATTRIBUTE_DARK) and mc:IsRace(RACE_DRAGON) + and mc:IsType(TYPE_SYNCHRO) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end + if c511001603 and not c511001603.dobtun then --Hot Red Dragon Archfiend King Calamity (Anime) + local mt=c511001603 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsType(TYPE_SYNCHRO) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end + if c97489701 and not c97489701.dobtun then --Red Nova Dragon + local mt=c97489701 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsCode(70902743) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end + if c16172067 and not c16172067.dobtun then --Red Dragon Archfiend Tyrant + local mt=c16172067 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return true end + mt.minntct=1 + mt.maxntct=99 + mt.sync=true + mt.dobtun=true + end + if c93157004 and not c93157004.dobtun then --Vylon Omega + local mt=c93157004 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsSetCard(0x30) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end +end +function c511001019.filter(c,e,tp) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511001019.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c511001019.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + if not c:IsType(TYPE_SYNCHRO) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,true) + or not mt.sync then return false end + if c:IsSetCard(0x301) then + return nontuner:IsExists(c511001019.lvfilter2,1,nil,c,tuner) + elseif mt.dobtun then + return tuner:IsExists(c511001019.dtfilter1,1,nil,c,tuner,nontuner) + else + return tuner:IsExists(c511001019.lvfilter,1,nil,c,nontuner) + end +end +function c511001019.dtfilter1(c,syncard,tuner,nontuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=syncard:GetLevel() + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + return tuner:IsExists(c511001019.dtfilter2,1,c,syncard,lv-tlv,nontuner,c) +end +function c511001019.dtfilter2(c,syncard,lv,nontuner,tuner1) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,tuner1) + nt=nt:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,lv-tlv,mt.minntct,mt.maxntct,syncard) +end +function c511001019.lvfilter(c,syncard,nontuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,slv-lv,mt.minntct,mt.maxntct,syncard) +end +function c511001019.lvfilter2(c,syncard,tuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,lv+slv,1,1,syncard) +end +function c511001019.matfilter1(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_TUNER) and c:IsCanBeSynchroMaterial(syncard) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) + and mt.tuner_filter and mt.tuner_filter(c) +end +function c511001019.matfilter2(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return not c:IsType(TYPE_TUNER) and c:IsType(TYPE_MONSTER) and c:IsCanBeSynchroMaterial(syncard) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) + and mt.nontuner_filter and mt.nontuner_filter(c) +end +function c511001019.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001019.filter(chkc) end + if chk==0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=-1 then return false end + return Duel.IsExistingTarget(c511001019.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001019.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001019.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and c511001019.filter(tc,e,tp) then + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511001019.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tc) + local nontuner=Duel.GetMatchingGroup(c511001019.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tc) + local mat1 + if tc:IsSetCard(0x301) then + nontuner=nontuner:Filter(c511001019.lvfilter2,nil,tc,tuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=nontuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + tuner=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=tuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()+tlv,mt.minntct,mt.maxntct,tc) + mat1:Merge(mat2) + elseif mt.dobtun then + mat1=Group.CreateGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner1=tuner:FilterSelect(tp,c511001019.dtfilter1,1,1,nil,tc,tuner,nontuner):GetFirst() + mat1:AddCard(tuner1) + local tlv1=tuner1:GetSynchroLevel(tc) + local tuner2=tuner:FilterSelect(tp,c511001019.dtfilter2,1,1,tuner1,tc,tc:GetLevel()-tlv1,nontuner,tuner1):GetFirst() + mat1:AddCard(tuner2) + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,tuner1) + nt=nt:Filter(Card.IsCanBeSynchroMaterial,nil,tc,tuner2) + local tlv2=tuner2:GetSynchroLevel(tc) + local m3=nt:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()-tlv1-tlv2,mt.minntct,mt.maxntct,tc) + mat1:Merge(m3) + else + tuner=tuner:Filter(c511001019.lvfilter,nil,tc,nontuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=tuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + nontuner=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=nontuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()-tlv,mt.minntct,mt.maxntct,tc) + mat1:Merge(mat2) + end + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_SYNCHRO) + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,true,true,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + tc:CompleteProcedure() + end +end diff --git a/script/c511001020.lua b/script/c511001020.lua new file mode 100644 index 00000000..3e787dba --- /dev/null +++ b/script/c511001020.lua @@ -0,0 +1,34 @@ +--ブラッド·メフィスト +function c511001020.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001020,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_SSET) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001020.damcon2) + e2:SetTarget(c511001020.damtg2) + e2:SetOperation(c511001020.damop2) + c:RegisterEffect(e2) +end +function c511001020.damcon2(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511001020.damtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(200) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,300) +end +function c511001020.damop2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001021.lua b/script/c511001021.lua new file mode 100644 index 00000000..f9ba9308 --- /dev/null +++ b/script/c511001021.lua @@ -0,0 +1,38 @@ +--Overgain +function c511001021.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:SetTarget(c511001021.target) + e1:SetOperation(c511001021.activate) + c:RegisterEffect(e1) +end +function c511001021.filter(c) + return c:IsFaceup() and c:GetAttackAnnouncedCount()==0 +end +function c511001021.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511001021.filter(chkc) and chkc:IsControler(tp) end + if chk==0 then return Duel.IsExistingTarget(c511001021.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001021.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001021.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001022.lua b/script/c511001022.lua new file mode 100644 index 00000000..b4917c1c --- /dev/null +++ b/script/c511001022.lua @@ -0,0 +1,28 @@ +--フルール・ガード +function c511001022.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001022.target) + e1:SetOperation(c511001022.activate) + c:RegisterEffect(e1) +end +function c511001022.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001022.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_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001023.lua b/script/c511001023.lua new file mode 100644 index 00000000..082720c3 --- /dev/null +++ b/script/c511001023.lua @@ -0,0 +1,51 @@ +--エンシェントサンシャイン +function c511001023.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001023.cost) + e1:SetCondition(c511001023.condition) + e1:SetTarget(c511001023.target) + e1:SetOperation(c511001023.operation) + c:RegisterEffect(e1) +end +function c511001023.cfilter(c) + return c:IsCode(25862681) and c:IsAbleToRemoveAsCost() +end +function c511001023.confilter(c) + return c:IsFaceup() and c:IsCode(20210570) +end +function c511001023.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001023.cfilter,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,nil) + and Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001023.cfilter,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001023.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001023.confilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001023.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,0,nil) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(2100) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,2100) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511001023.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Damage(p,d,REASON_EFFECT) then + Duel.BreakEffect() + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,0,nil) + Duel.Destroy(sg,REASON_EFFECT) + end +end diff --git a/script/c511001024.lua b/script/c511001024.lua new file mode 100644 index 00000000..ea56822e --- /dev/null +++ b/script/c511001024.lua @@ -0,0 +1,44 @@ +--クリスタル・ヴェール +function c511001024.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCost(c511001024.cost) + e1:SetCondition(c511001024.condition) + e1:SetTarget(c511001024.target) + e1:SetOperation(c511001024.activate) + c:RegisterEffect(e1) +end +function c511001024.costfilter(c) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToRemoveAsCost() +end +function c511001024.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511001024.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001024.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511001024.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001024.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + local atk=g:GetFirst():GetAttack()/2 + if atk<0 then atk=0 end + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c511001024.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + end +end diff --git a/script/c511001025.lua b/script/c511001025.lua new file mode 100644 index 00000000..c82dfed0 --- /dev/null +++ b/script/c511001025.lua @@ -0,0 +1,30 @@ +--バトル・スタン・ソニック +function c511001025.initial_effect(c) + --active + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001025.condition) + e1:SetOperation(c511001025.activate) + c:RegisterEffect(e1) +end +function c511001025.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001025.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001025.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsFaceup() and tc:IsAttackable() and Duel.NegateAttack() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.GetMatchingGroup(c511001025.filter,tp,LOCATION_HAND,0,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(525110,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.BreakEffect() + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511001026.lua b/script/c511001026.lua new file mode 100644 index 00000000..11519849 --- /dev/null +++ b/script/c511001026.lua @@ -0,0 +1,39 @@ +--胡蝶の舞 +function c511001026.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001026.cost1) + c:RegisterEffect(e1) + --Damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95178994,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1,511001026) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511001026.cost2) + e2:SetOperation(c511001026.op) + c:RegisterEffect(e2) +end +function c511001026.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x6a) and not c:IsPublic() +end +function c511001026.cost1(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 c511001026.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001026.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511001026.cfilter,tp,LOCATION_HAND,0,1,200,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + e:SetLabel(g:GetCount()) +end +function c511001026.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + Duel.Damage(1-tp,e:GetLabel()*300,REASON_EFFECT) +end diff --git a/script/c511001027.lua b/script/c511001027.lua new file mode 100644 index 00000000..56d1ff2e --- /dev/null +++ b/script/c511001027.lua @@ -0,0 +1,46 @@ +--乱蝶幻舞 +function c511001027.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001027.condition) + e1:SetCost(c511001027.cost) + e1:SetTarget(c511001027.target) + e1:SetOperation(c511001027.operation) + c:RegisterEffect(e1) +end +function c511001027.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001027.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511001027.condition(e,tp,eg,ep,ev,re,r,rp) + return (c511001027.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511001027.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5))) +end +function c511001027.filter(c,e,tp) + return c:IsSetCard(0x6a) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001027.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511001027.filter,tp,LOCATION_HAND,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c511001027.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001027.filter,tp,LOCATION_HAND,0,2,2,nil,e,tp) + if g:GetCount()>1 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end + diff --git a/script/c511001028.lua b/script/c511001028.lua new file mode 100644 index 00000000..1925e0f3 --- /dev/null +++ b/script/c511001028.lua @@ -0,0 +1,55 @@ +--幻蝶の誘惑 +function c511001028.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --must attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_EP) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(0,1) + e3:SetCondition(c511001028.becon) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001028,1)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetProperty(EFFECT_FLAG_REPEAT) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCondition(c511001028.decon) + e4:SetTarget(c511001028.destg) + e4:SetOperation(c511001028.desop) + c:RegisterEffect(e4) +end +function c511001028.becon(e) + return Duel.IsExistingMatchingCard(Card.IsAttackable,Duel.GetTurnPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511001028.desfilter(c) + return c:IsFaceup() and c:GetAttackAnnouncedCount()==0 and c:IsDestructable() +end +function c511001028.decon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001028.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511001028.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511001028.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c511001028.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511001029.lua b/script/c511001029.lua new file mode 100644 index 00000000..ea0e6e1b --- /dev/null +++ b/script/c511001029.lua @@ -0,0 +1,78 @@ +--死蝶の誘い +function c511001029.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001029.cost) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c511001029.reccon) + e2:SetTarget(c511001029.rectg) + e2:SetOperation(c511001029.recop) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetOperation(c511001029.mtop) + c:RegisterEffect(e3) +end +function c511001029.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) end + Duel.PayLPCost(tp,2000) +end +function c511001029.egfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511001029.reccon(e,tp,eg,ep,ev,re,r,rp) + local g1=eg:IsExists(c511001029.egfilter,1,nil,tp) + local g2=eg:IsExists(c511001029.egfilter,1,nil,1-tp) + return g1 or g2 +end +function c511001029.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + local g1=eg:IsExists(c511001029.egfilter,1,nil,tp) + local g2=eg:IsExists(c511001029.egfilter,1,nil,1-tp) + if chk==0 then return true end + if g1 and not g2 then + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1500) + end + if not g1 and g2 then + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1500) + end + if g1 and g2 then + Duel.SetTargetPlayer(PLAYER_ALL) + Duel.SetTargetParam(1500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,1500) + end +end +function c511001029.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local dp,dam=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if dp~=PLAYER_ALL then + Duel.Damage(dp,dam,REASON_EFFECT) + else + Duel.Damage(tp,dam,REASON_EFFECT) + Duel.Damage(1-tp,dam,REASON_EFFECT) + end +end +function c511001029.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + if Duel.GetLP(tp)>=2000 and Duel.SelectYesNo(tp,aux.Stringid(21454943,7)) then + Duel.PayLPCost(tp,2000) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c511001030.lua b/script/c511001030.lua new file mode 100644 index 00000000..62e1bfaf --- /dev/null +++ b/script/c511001030.lua @@ -0,0 +1,38 @@ +--Butterfly Mist +function c511001030.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(63014935,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DAMAGE) + e2:SetCondition(c511001030.damcon) + e2:SetTarget(c511001030.damtg) + e2:SetOperation(c511001030.damop) + c:RegisterEffect(e2) +end +function c511001030.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x6a) +end +function c511001030.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and tp~=rp and bit.band(r,REASON_EFFECT)~=0 + and Duel.IsExistingMatchingCard(c511001030.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001030.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511001030.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001031.lua b/script/c511001031.lua new file mode 100644 index 00000000..7fec183c --- /dev/null +++ b/script/c511001031.lua @@ -0,0 +1,32 @@ +--幻蝶の雄姿 +function c511001031.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511001031.atkcon) + e1:SetTarget(c511001031.atktg) + e1:SetOperation(c511001031.atkop) + c:RegisterEffect(e1) +end +function c511001031.atkcon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d:IsControler(tp) and d +end +function c511001031.filter(c) + return c:IsFaceup() and c:IsAttackPos() and c:IsSetCard(0x6a) +end +function c511001031.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001031.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001031.filter,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001031.filter,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) +end +function c511001031.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511001032.lua b/script/c511001032.lua new file mode 100644 index 00000000..a2d3a40d --- /dev/null +++ b/script/c511001032.lua @@ -0,0 +1,61 @@ +--Chronomaly Ley Line Power +function c511001032.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511001032.condition) + e1:SetOperation(c511001032.activate) + c:RegisterEffect(e1) + if not c511001032.global_check then + c511001032.global_check=true + local sp=Effect.CreateEffect(c) + sp:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + sp:SetCode(EVENT_SPSUMMON_SUCCESS) + sp:SetOperation(c511001032.op) + Duel.RegisterEffect(sp,0) + end +end +function c511001032.op(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + if ph>=0x08 and ph<=0x20 then + local g=eg:GetFirst() + while g do + g:RegisterFlagEffect(511001032,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,0) + g=eg:GetNext() + end + end +end +function c511001032.filter(c) + return c:GetFlagEffect(511001032)>0 and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 and c:IsFaceup() +end +function c511001032.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a:IsRelateToBattle() and d and d:IsRelateToBattle() and (c511001032.filter(a) or c511001032.filter(d)) +end +function c511001032.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a and a:IsRelateToBattle() and d and d:IsRelateToBattle() then + local aatk=a:GetAttack() + local datk=d:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(datk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + a:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(aatk) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + d:RegisterEffect(e2) + end +end diff --git a/script/c511001033.lua b/script/c511001033.lua new file mode 100644 index 00000000..8e5fb948 --- /dev/null +++ b/script/c511001033.lua @@ -0,0 +1,37 @@ +--先史遺産の共鳴 +function c511001033.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001033.target) + e1:SetOperation(c511001033.activate) + c:RegisterEffect(e1) +end +function c511001033.filter1(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x70) and c:GetLevel()>0 + and Duel.IsExistingMatchingCard(c511001033.filter2,tp,LOCATION_HAND,0,1,nil,c:GetLevel(),e,tp) +end +function c511001033.filter2(c,lv,e,tp) + return c:IsSetCard(0x70) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==lv+1 +end +function c511001033.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001033.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001033.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511001033.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001033.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001033.filter2,tp,LOCATION_HAND,0,1,1,nil,tc:GetLevel(),e,tp) + local sc=g:GetFirst() + Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) +end + diff --git a/script/c511001034.lua b/script/c511001034.lua new file mode 100644 index 00000000..bfb7ad98 --- /dev/null +++ b/script/c511001034.lua @@ -0,0 +1,30 @@ +--石の心臓 +function c511001034.initial_effect(c) + --multi attack + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c511001034.condition) + e1:SetTarget(c511001034.target) + e1:SetOperation(c511001034.operation) + c:RegisterEffect(e1) +end +function c511001034.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return a:IsSetCard(0x70) and at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511001034.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local a=Duel.GetAttacker() + if chkc then return chkc==a end + if chk==0 then return a:IsOnField() and a:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(a) +end +function c511001034.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.ChainAttack() + end +end + diff --git a/script/c511001035.lua b/script/c511001035.lua new file mode 100644 index 00000000..fa96a9df --- /dev/null +++ b/script/c511001035.lua @@ -0,0 +1,65 @@ +--環状列石の結界 +function c511001035.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetHintTiming(0,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511001035.condition) + e1:SetTarget(c511001035.target) + e1:SetOperation(c511001035.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001035.descon) + e2:SetOperation(c511001035.desop) + c:RegisterEffect(e2) +end +function c511001035.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsAttackAbove(3000) +end +function c511001035.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,tg,1,0,0) +end +function c511001035.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() 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_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001035.rcon) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(0) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetCondition(c511001035.rcon) + tc:RegisterEffect(e2,true) + end +end +function c511001035.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001035.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001035.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001036.lua b/script/c511001036.lua new file mode 100644 index 00000000..e8a89b3a --- /dev/null +++ b/script/c511001036.lua @@ -0,0 +1,39 @@ +--Stone Bola +function c511001036.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001036.condition) + e1:SetTarget(c511001036.target) + e1:SetOperation(c511001036.activate) + c:RegisterEffect(e1) +end +function c511001036.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001036.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c511001036.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.NegateAttack() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c511001036.skipcon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE+RESET_SELF_TURN,2) + tc:RegisterEffect(e1,true) + end + end +end +function c511001036.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c511001037.lua b/script/c511001037.lua new file mode 100644 index 00000000..595ad0c7 --- /dev/null +++ b/script/c511001037.lua @@ -0,0 +1,29 @@ +--スペース・レーション +function c511001037.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001037.condition) + e1:SetTarget(c511001037.target) + e1:SetOperation(c511001037.activate) + c:RegisterEffect(e1) +end +function c511001037.cfilter(c) + return c:IsFaceup() and c:IsCode(80208158) +end +function c511001037.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001037.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001037.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511001037.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001038.lua b/script/c511001038.lua new file mode 100644 index 00000000..8fb2f8e8 --- /dev/null +++ b/script/c511001038.lua @@ -0,0 +1,22 @@ +--雷雲の壺 +function c511001038.initial_effect(c) + --negate attack + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001038.condition) + e1:SetOperation(c511001038.operation) + c:RegisterEffect(e1) +end +function c511001038.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) and d:IsFaceup() and d:IsSetCard(0x70) +end +function c511001038.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + local c=e:GetHandler() + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511001039.lua b/script/c511001039.lua new file mode 100644 index 00000000..58a9e829 --- /dev/null +++ b/script/c511001039.lua @@ -0,0 +1,55 @@ +--混沌の黒魔術師 +function c511001039.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001039,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001039.sptg) + e1:SetOperation(c511001039.spop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001039,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511001039.sptg) + e2:SetOperation(c511001039.spop) + c:RegisterEffect(e2) + --redirect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetCondition(c511001039.recon) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3) + --redirect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_BATTLE_DESTROY_REDIRECT) + e4:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e4) +end +function c511001039.tgfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511001039.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and c511001039.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001039.tgfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511001039.tgfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511001039.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c511001039.recon(e) + return e:GetHandler():IsFaceup() +end diff --git a/script/c511001040.lua b/script/c511001040.lua new file mode 100644 index 00000000..1e92569d --- /dev/null +++ b/script/c511001040.lua @@ -0,0 +1,37 @@ +--ドラゴン族・封印の壺 +function c511001040.initial_effect(c) + --attach + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001040.condition) + e1:SetOperation(c511001040.operation) + c:RegisterEffect(e1) + --detach + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511001040.flipop) + c:RegisterEffect(e2) +end +function c511001040.filter2(c,fid) + return c:IsFaceup() and c:IsCode(50045299) and c:GetFieldID()0 then + Duel.BreakEffect() + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c511001043.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc +end +function c511001043.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() then + local atk=0 + local rp1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local rp2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + if rp1 then + atk=atk+rp1:GetAttack() + end + if rp2 then + atk=atk+rp2:GetAttack() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(atk) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001044.lua b/script/c511001044.lua new file mode 100644 index 00000000..2b8cc009 --- /dev/null +++ b/script/c511001044.lua @@ -0,0 +1,75 @@ +--DD魔導賢者ケプラー +function c511001044.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --scale change + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetDescription(aux.Stringid(511001044,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetCondition(c511001044.sccon) + e2:SetTarget(c511001044.sctg) + e2:SetOperation(c511001044.scop) + c:RegisterEffect(e2) + --return to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001044,1)) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetTarget(c511001044.thtg) + e3:SetOperation(c511001044.thop) + c:RegisterEffect(e3) +end +function c511001044.sccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001044.filter(c,lv) + return c:IsFaceup() and c:IsAbleToGrave() and c:IsLevelBelow(lv) and c:GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c511001044.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local scl=e:GetHandler():GetLeftScale()-5 + local g=Duel.GetMatchingGroup(c511001044.filter,tp,LOCATION_MZONE,0,nil,sc1) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c511001044.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local scl=c:GetLeftScale()-5 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LSCALE) + e1:SetValue(scl) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e2) + local g=Duel.GetMatchingGroup(c511001044.filter,tp,LOCATION_MZONE,0,nil,scl) + if g:GetCount()>0 then + Duel.BreakEffect() + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c511001044.thfilter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c511001044.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001044.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001044.thfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511001044.thfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511001044.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c511001045.lua b/script/c511001045.lua new file mode 100644 index 00000000..995cf2a2 --- /dev/null +++ b/script/c511001045.lua @@ -0,0 +1,36 @@ +--Gamusharush +function c511001045.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001045.condition) + e1:SetTarget(c511001045.target) + e1:SetOperation(c511001045.activate) + c:RegisterEffect(e1) +end +function c511001045.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511001045.condition(e,tp,eg,ep,ev,re,r,rp) + 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) and tc:GetAttack()>0 +end +function c511001045.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + if tc:RegisterEffect(e1) then + Duel.Damage(1-tp,600,REASON_EFFECT) + end + end +end diff --git a/script/c511001048.lua b/script/c511001048.lua new file mode 100644 index 00000000..c5fe23e2 --- /dev/null +++ b/script/c511001048.lua @@ -0,0 +1,71 @@ +--DDD疾風王アレクサンダー +function c511001048.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --tohand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,987311) + e1:SetCondition(c511001048.spcon) + e1:SetTarget(c511001048.sptg) + e1:SetOperation(c511001048.spop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001048,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,987312) + e2:SetCondition(c511001048.descon) + e2:SetTarget(c511001048.destg) + e2:SetOperation(c511001048.desop) + c:RegisterEffect(e2) +end +function c511001048.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xaf) +end +function c511001048.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001048.cfilter,1,nil) +end +function c511001048.spfilter(c,e,tp) + return c:IsSetCard(0xaf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001048.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001048.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001048.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001048.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001048.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001048.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsReason(REASON_BATTLE) +end +function c511001048.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001048.desop(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001049.lua b/script/c511001049.lua new file mode 100644 index 00000000..7290dd0f --- /dev/null +++ b/script/c511001049.lua @@ -0,0 +1,75 @@ +--Phantom Des Spear +function c511001049.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001049,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001049.condition) + e2:SetTarget(c511001049.target) + e2:SetOperation(c511001049.operation) + c:RegisterEffect(e2) + --Negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001049,1)) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetRange(LOCATION_GRAVE) + e3:SetCondition(c511001049.discon) + e3:SetCost(c511001049.discost) + e3:SetTarget(c511001049.distg) + e3:SetOperation(c511001049.disop) + c:RegisterEffect(e3) +end +function c511001049.filter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) +end +function c511001049.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return ep~=tp and re:IsActiveType(TYPE_TRAP) and tg and tg:IsExists(c511001049.filter,1,nil,tp) +end +function c511001049.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(100) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,100) +end +function c511001049.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001049.discon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511001049.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511001049.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,100) +end +function c511001049.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + if Duel.Destroy(eg,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,100,REASON_EFFECT) + end + end +end diff --git a/script/c511001050.lua b/script/c511001050.lua new file mode 100644 index 00000000..86dd97fa --- /dev/null +++ b/script/c511001050.lua @@ -0,0 +1,74 @@ +--幻影騎士団シャドーベイル +function c511001050.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001050.target) + e1:SetOperation(c511001050.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001050,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c511001050.spcon) + e2:SetTarget(c511001050.sptg) + e2:SetOperation(c511001050.spop) + c:RegisterEffect(e2) +end +function c511001050.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511001050.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(300) + tc:RegisterEffect(e1) + end +end +function c511001050.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511001050.filter(c,e,tp) + return c:IsCode(77462146) and Duel.IsPlayerCanSpecialSummonMonster(tp,77462146,0x10db,0x11,4,0,300,RACE_WARRIOR,ATTRIBUTE_DARK) +end +function c511001050.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001050.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp)end + local g=Duel.GetMatchingGroup(c511001050.filter,tp,LOCATION_GRAVE,0,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001050.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=Duel.SelectMatchingCard(tp,c511001050.filter,tp,LOCATION_GRAVE,0,1,ft,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + tc:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) + tc:AddMonsterAttributeComplete() + local e7=Effect.CreateEffect(e:GetHandler()) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e7:SetReset(RESET_EVENT+0x47e0000) + e7:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e7,true) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001051.lua b/script/c511001051.lua new file mode 100644 index 00000000..cc916cf4 --- /dev/null +++ b/script/c511001051.lua @@ -0,0 +1,96 @@ +--The Phantom Knights of Break Sword +function c511001051.initial_effect(c) + local g=Group.CreateGroup() + g:KeepAlive() + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),3,2) + c:EnableReviveLimit() + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001051,1)) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511001051.sumcon) + e1:SetTarget(c511001051.sumtg) + e1:SetOperation(c511001051.sumop) + c:RegisterEffect(e1) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c511001051.op) + e4:SetLabelObject(e1) + c:RegisterEffect(e4) + local e2=e1:Clone() + e2:SetCode(EVENT_REMOVE) + e2:SetLabelObject(e1) + e2:SetTarget(c511001051.sumtg2) + e2:SetOperation(c511001051.sumop2) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e3) +end +function c511001051.op(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetOverlayGroup() + if g:GetCount()==0 then return end + g:KeepAlive() + e:GetLabelObject():SetLabelObject(g) +end +function c511001051.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511001051.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001051.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject() + g=g:Filter(c511001051.filter,nil,e,tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if chk==0 then return g:GetCount()>0 and ft>g:GetCount()-1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),tp,nil) +end +function c511001051.sumop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + g=g:Filter(c511001051.filter,nil,e,tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<=g:GetCount()-1 then return end + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end +function c511001051.sumtg2(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject():GetLabelObject() + g=g:Filter(c511001051.filter,nil,e,tp) + if chk==0 then return g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>g:GetCount()-1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),tp,nil) +end +function c511001051.sumop2(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject():GetLabelObject() + g=g:Filter(c511001051.filter,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=g:GetCount()-1 then return end + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001052.lua b/script/c511001052.lua new file mode 100644 index 00000000..61d74cff --- /dev/null +++ b/script/c511001052.lua @@ -0,0 +1,48 @@ +--The Phantom Knights of Rugged Glove +function c511001052.initial_effect(c) + --effect gain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c511001052.efcon) + e1:SetOperation(c511001052.efop) + c:RegisterEffect(e1) +end +function c511001052.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c511001052.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(511001052,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001052.atkcon) + e1:SetOperation(c511001052.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_TYPE) + e2:SetValue(TYPE_MONSTER+TYPE_EFFECT+TYPE_XYZ) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2) + end +end +function c511001052.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c511001052.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001053.lua b/script/c511001053.lua new file mode 100644 index 00000000..fb0f2f9c --- /dev/null +++ b/script/c511001053.lua @@ -0,0 +1,75 @@ +--Phantom Sword +function c511001053.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511001053.target) + e1:SetOperation(c511001053.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001053.descon) + e2:SetOperation(c511001053.desop) + c:RegisterEffect(e2) +end +function c511001053.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x10d9) or c:IsCode(77462146)) +end +function c511001053.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001053.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001053.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001053.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001053.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() 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:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001053.rcon) + tc:RegisterEffect(e1,true) + --Save Monster + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetTarget(c511001053.desreptg) + e3:SetOperation(c511001053.desrepop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511001053.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001053.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001053.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511001053.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if chk==0 then return c and not c:IsStatus(STATUS_DESTROY_CONFIRMED) + and tc and tc:IsReason(REASON_BATTLE) end + return Duel.SelectYesNo(tp,aux.Stringid(511001053,0)) +end +function c511001053.desrepop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.SendtoGrave(c,REASON_EFFECT) +end diff --git a/script/c511001054.lua b/script/c511001054.lua new file mode 100644 index 00000000..284cb819 --- /dev/null +++ b/script/c511001054.lua @@ -0,0 +1,61 @@ +--Phantom Wing +function c511001054.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511001054.condition) + e1:SetTarget(c511001054.target) + e1:SetOperation(c511001054.activate) + c:RegisterEffect(e1) + -- + local e2=e1:Clone() + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511001054.con2) + c:RegisterEffect(e2) +end +function c511001054.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_BATTLE +end +function c511001054.cfilter(c) + return c:IsOnField() and c:IsType(TYPE_MONSTER) +end +function c511001054.con2(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return Duel.GetCurrentPhase()~=PHASE_BATTLE and ex and tg~=nil and tc+tg:FilterCount(c511001054.cfilter,nil)-tg:GetCount()>0 +end +function c511001054.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001054.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetTarget(c511001054.reptg) + e1:SetOperation(c511001054.repop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511001054.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + return true +end +function c511001054.repop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(500) + c:RegisterEffect(e1) +end diff --git a/script/c511001055.lua b/script/c511001055.lua new file mode 100644 index 00000000..278c3d66 --- /dev/null +++ b/script/c511001055.lua @@ -0,0 +1,19 @@ +--The Phantom Knights of Silent Boots +function c511001055.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001055.spcon) + c:RegisterEffect(e1) +end +function c511001055.filter(c) + return c:IsFaceup() and c:IsSetCard(0x10db) and c:GetLevel()==3 +end +function c511001055.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c511001055.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511001056.lua b/script/c511001056.lua new file mode 100644 index 00000000..3ac11e64 --- /dev/null +++ b/script/c511001056.lua @@ -0,0 +1,22 @@ +--おろかな埋葬 +function c511001056.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001056.target) + e1:SetOperation(c511001056.activate) + c:RegisterEffect(e1) +end +function c511001056.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c511001056.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGrave,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT,1-tp) + end +end diff --git a/script/c511001057.lua b/script/c511001057.lua new file mode 100644 index 00000000..1a665780 --- /dev/null +++ b/script/c511001057.lua @@ -0,0 +1,30 @@ +--パーフェクト機械王 +function c511001057.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,44203504,46700124,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511001057.splimit) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511001057.val) + c:RegisterEffect(e2) +end +function c511001057.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511001057.val(e,c) + return Duel.GetMatchingGroupCount(c511001057.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*500 +end +function c511001057.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end diff --git a/script/c511001058.lua b/script/c511001058.lua new file mode 100644 index 00000000..79b07218 --- /dev/null +++ b/script/c511001058.lua @@ -0,0 +1,104 @@ +--Parallel Unit +function c511001058.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --remove + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001058.target) + e1:SetOperation(c511001058.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511001058.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511001058.regop) + c:RegisterEffect(e3) + if not c511001058.global_check then + c511001058.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001058.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001058.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511001058.filter(c,e,tp) + return c:GetLevel()>0 and c:IsFaceup() +end +function c511001058.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511001058.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001058.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001058.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511001058.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + end +end +function c511001058.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if not tc or not tc:IsLocation(LOCATION_MZONE) then + c:ResetFlagEffect(511000189) + return + end + if c:GetFlagEffect(511000189)>0 and c:GetFlagEffect(511000189)~=tc:GetLevel() then + c:ResetFlagEffect(511000189) + end + while c:GetFlagEffect(511000189)0 + and Duel.IsExistingTarget(c511001060.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001060.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001060.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c511001061.lua b/script/c511001061.lua new file mode 100644 index 00000000..0ab8d10d --- /dev/null +++ b/script/c511001061.lua @@ -0,0 +1,32 @@ +--Star Seraph Starscream +function c511001061.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511001061.condition) + e1:SetTarget(c511001061.target) + e1:SetOperation(c511001061.activate) + c:RegisterEffect(e1) +end +function c511001061.cfilter(c,tp) + return c:GetPreviousControler()==1-tp and c:IsType(TYPE_MONSTER) +end +function c511001061.filter(c) + return c:IsFaceup() and c:IsSetCard(0x86) +end +function c511001061.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001061.cfilter,1,nil,tp) and Duel.IsExistingMatchingCard(c511001061.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001061.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511001061.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001062.lua b/script/c511001062.lua new file mode 100644 index 00000000..880b5326 --- /dev/null +++ b/script/c511001062.lua @@ -0,0 +1,30 @@ +--Lightning Clinch +function c511001062.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001062.condition) + e1:SetCost(c511001062.cost) + e1:SetOperation(c511001062.activate) + c:RegisterEffect(e1) +end +function c511001062.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001062.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,3000) end + Duel.PayLPCost(tp,3000) +end +function c511001062.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetOperation(c511001062.disop) + Duel.RegisterEffect(e1,tp) +end +function c511001062.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511001063.lua b/script/c511001063.lua new file mode 100644 index 00000000..fbdab1b7 --- /dev/null +++ b/script/c511001063.lua @@ -0,0 +1,28 @@ +--Brain Reboot +function c511001063.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001063.condition) + e1:SetTarget(c511001063.target) + e1:SetOperation(c511001063.operation) + c:RegisterEffect(e1) +end +function c511001063.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=1000 +end +function c511001063.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511001063.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,0,LOCATION_MZONE,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + local dg=sg:Filter(Card.IsLocation,nil,LOCATION_HAND) + local sum=dg:GetSum(Card.GetLevel) + Duel.Damage(1-tp,sum*500,REASON_EFFECT) +end diff --git a/script/c511001064.lua b/script/c511001064.lua new file mode 100644 index 00000000..cdb21421 --- /dev/null +++ b/script/c511001064.lua @@ -0,0 +1,94 @@ +--Ultra C +function c511001064.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001064.condition) + e1:SetTarget(c511001064.target) + e1:SetOperation(c511001064.activate) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_LEAVE_FIELD_P) + e2:SetOperation(c511001064.checkop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511001064.retop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_CONTROL_CHANGED) + e4:SetCondition(c511001064.descon) + e4:SetOperation(c511001064.desop) + c:RegisterEffect(e4) +end +function c511001064.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:GetSummonType()==SUMMON_TYPE_XYZ and tc:IsControler(1-tp) and tc:IsCode(12533811) +end +function c511001064.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_EXTRA)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001064.spfilter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511001064.eqlimit(e,c) + return e:GetLabelObject()==c +end +function c511001064.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sg=Duel.GetMatchingGroup(c511001064.spfilter,tp,0,LOCATION_EXTRA,nil,e,tp) + if sg:GetCount()<=0 then + local g=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) + Duel.ConfirmCards(tp,g) + else + Duel.ConfirmCards(tp,sg) + local g=sg:Select(tp,1,1,nil):GetFirst() + if Duel.SpecialSummon(g,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP)==0 then return end + g:CompleteProcedure() + Duel.Equip(tp,c,g) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001064.eqlimit) + e1:SetLabelObject(g) + c:RegisterEffect(e1) + end +end +function c511001064.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c511001064.retop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetEquipTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + if not Duel.GetControl(tc,1-tp) then + if not tc:IsImmuneToEffect(e) and tc:IsAbleToChangeControler() then + Duel.Destroy(tc,REASON_EFFECT) + end + end + end +end +function c511001064.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetEquipTarget() + return tc and eg:IsContains(tc) +end +function c511001064.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001065.lua b/script/c511001065.lua new file mode 100644 index 00000000..555d3fb3 --- /dev/null +++ b/script/c511001065.lua @@ -0,0 +1,43 @@ +--Panic Shuffle +function c511001065.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BECOME_TARGET) + e1:SetCondition(c511001065.condition) + e1:SetTarget(c511001065.target) + e1:SetOperation(c511001065.activate) + c:RegisterEffect(e1) +end +function c511001065.filter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsType(TYPE_XYZ) +end +function c511001065.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and eg:IsExists(c511001065.filter,1,nil,tp) +end +function c511001065.tdfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() +end +function c511001065.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local sg=Duel.GetMatchingGroup(c511001065.tdfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c511001065.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE,0,0) + local sg=Duel.GetMatchingGroup(c511001065.tdfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + local tc=g:GetFirst() + while tc do + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c511001066.lua b/script/c511001066.lua new file mode 100644 index 00000000..34023d77 --- /dev/null +++ b/script/c511001066.lua @@ -0,0 +1,40 @@ +--Garbage Collection +function c511001066.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001066.cost) + e1:SetTarget(c511001066.target) + e1:SetOperation(c511001066.activate) + c:RegisterEffect(e1) +end +function c511001066.cfilter(c,e,tp) + return c:IsAbleToRemoveAsCost() and c:IsRace(RACE_MACHINE) + and Duel.IsExistingTarget(c511001066.filter,tp,LOCATION_GRAVE,0,1,c,e,tp) +end +function c511001066.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001066.cfilter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001066.cfilter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001066.filter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001066.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001066.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001066.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001066.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001066.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001067.lua b/script/c511001067.lua new file mode 100644 index 00000000..ef0398c3 --- /dev/null +++ b/script/c511001067.lua @@ -0,0 +1,41 @@ +--Star Sparrow Forever +function c511001067.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001067.condition) + e1:SetTarget(c511001067.target) + e1:SetOperation(c511001067.operation) + c:RegisterEffect(e1) +end +function c511001067.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) +end +function c511001067.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001067.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001067.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001067.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001067.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001067.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511001068.lua b/script/c511001068.lua new file mode 100644 index 00000000..7401f779 --- /dev/null +++ b/script/c511001068.lua @@ -0,0 +1,34 @@ +--Fighter's Charm +function c511001068.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001068.target) + e1:SetOperation(c511001068.activate) + c:RegisterEffect(e1) +end +function c511001068.filter(c) + return c:IsPosition(POS_FACEUP_DEFENSE) and c:GetAttack()=1000 +end +function c511001070.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=math.floor(ev/1000) + if chk==0 then return Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511001070.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001071.lua b/script/c511001071.lua new file mode 100644 index 00000000..7b956ed9 --- /dev/null +++ b/script/c511001071.lua @@ -0,0 +1,67 @@ +--Hero's Guard +function c511001071.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001071.condition) + e1:SetTarget(c511001071.target) + e1:SetOperation(c511001071.activate) + c:RegisterEffect(e1) +end +function c511001071.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511001071.cfilter(c) + return c:IsSetCard(0x8) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c511001071.target(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk==0 then return (d and d:IsSetCard(0x8)) + or (Duel.IsExistingMatchingCard(c511001071.cfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsPlayerCanDraw(tp,1)) end + if not d or not d:IsSetCard(0x8) then + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + end +end +function c511001071.filter(c,tp) + return c:IsSetCard(0x8) and c:IsControler(tp) +end +function c511001071.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local g=Group.FromCards(a,d) + g=g:Filter(c511001071.filter,nil,tp) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + local sg=Duel.GetMatchingGroup(c511001071.cfilter,tp,LOCATION_GRAVE,0,nil) + if sg:GetCount()<=0 then return end + if g:GetCount()<=0 or Duel.SelectYesNo(tp,aux.Stringid(52687916,2)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=sg:Select(tp,1,1,nil) + if Duel.Remove(rg,POS_FACEUP,REASON_EFFECT)>0 then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + e2:SetTargetRange(1,0) + e2:SetValue(c511001071.damval) + Duel.RegisterEffect(e2,tp) + Duel.Draw(tp,1,REASON_EFFECT) + end + end +end +function c511001071.damval(e,re,val,r,rp,rc) + if r==REASON_BATTLE then + return val/2 + else return val end +end diff --git a/script/c511001072.lua b/script/c511001072.lua new file mode 100644 index 00000000..e12c6fdc --- /dev/null +++ b/script/c511001072.lua @@ -0,0 +1,38 @@ +--Elemental Storm +function c511001072.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001072.target) + e1:SetOperation(c511001072.activate) + c:RegisterEffect(e1) +end +function c511001072.filter(c) + return c:GetAttackAnnouncedCount()==0 and c:IsFaceup() and c:IsSetCard(0x3008) + and Duel.IsExistingMatchingCard(c511001072.dfilter,c:GetControler(),0,LOCATION_MZONE,1,c,c:GetBaseAttack()) +end +function c511001072.dfilter(c,atk) + return c:IsFaceup() and c:IsDestructable() and c:GetBaseAttack()=0x08 and ph<=0x20 +end +function c511001073.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + local dg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,1,0,0) +end +function c511001073.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + if Duel.Destroy(dg,REASON_EFFECT)~=0 then + Duel.BreakEffect() + local g=eg:Filter(c511001073.cfilter,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001074.lua b/script/c511001074.lua new file mode 100644 index 00000000..b271b45f --- /dev/null +++ b/script/c511001074.lua @@ -0,0 +1,108 @@ +--EMトランプ・ウィッチ +function c511001074.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511001074.spcon) + e2:SetTarget(c511001074.sptg) + e2:SetOperation(c511001074.spop) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511001074.thcost) + e3:SetTarget(c511001074.thtg) + e3:SetOperation(c511001074.thop) + c:RegisterEffect(e3) +end +function c511001074.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511001074.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511001074.spcon(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return false end + local ph=Duel.GetCurrentPhase() + return ph==PHASE_MAIN1 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) or ph==PHASE_MAIN2 +end +function c511001074.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001074.filter1,tp,LOCATION_MZONE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c511001074.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001074.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001074.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001074.filter1,tp,LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511001074.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001074.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c511001074.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511001074.thfilter(c) + return c:IsSetCard(0x46) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001074.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001074.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,0,1,0,LOCATION_DECK+LOCATION_GRAVE) +end +function c511001074.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001074.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001075.lua b/script/c511001075.lua new file mode 100644 index 00000000..6f46e5dd --- /dev/null +++ b/script/c511001075.lua @@ -0,0 +1,85 @@ +--Xyz Plant +function c511001075.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001075.target) + e1:SetOperation(c511001075.activate) + c:RegisterEffect(e1) +end +function c511001075.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511001075.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001075.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001075.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001075,0,0x21,0,0,nil,RACE_PLANT,ATTRIBUTE_EARTH) end + local g=Duel.SelectTarget(tp,c511001075.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001075.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001075,0,0x11,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_SPELL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_CHANGE_LEVEL) + e0:SetValue(c511001075.value) + e0:SetLabelObject(tc) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e0:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_ATTACK) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetReset(RESET_EVENT+0x1fe0000) + e6:SetCode(EFFECT_REMOVE_TYPE) + e6:SetValue(TYPE_TRAP) + c:RegisterEffect(e6) +end +function c511001075.value(e,c) + local tc=e:GetLabelObject() + if tc:IsLocation(LOCATION_MZONE) then + return tc:GetLevel() + else + return 0 + end +end diff --git a/script/c511001077.lua b/script/c511001077.lua new file mode 100644 index 00000000..f8cf24b1 --- /dev/null +++ b/script/c511001077.lua @@ -0,0 +1,27 @@ +--Cookmate Chickwheat +function c511001077.initial_effect(c) + --Damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c511001077.con) + e1:SetTarget(c511001077.tg) + e1:SetOperation(c511001077.op) + c:RegisterEffect(e1) +end +function c511001077.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511001077.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001077.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511001078.lua b/script/c511001078.lua new file mode 100644 index 00000000..63e1db83 --- /dev/null +++ b/script/c511001078.lua @@ -0,0 +1,30 @@ +--Cookmate Eggong +function c511001078.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001078,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511001078.target) + e1:SetOperation(c511001078.operation) + c:RegisterEffect(e1) +end +function c511001078.filter(c,e,tp) + return c:IsCode(511001078) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001078.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001078.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c511001078.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,c511001078.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001079.lua b/script/c511001079.lua new file mode 100644 index 00000000..08c25691 --- /dev/null +++ b/script/c511001079.lua @@ -0,0 +1,21 @@ +--Cookmate Potatopard +function c511001079.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_SPSUM_PARAM+EFFECT_FLAG_UNCOPYABLE) + e1:SetTargetRange(POS_FACEUP_ATTACK,0) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001079.spcon) + c:RegisterEffect(e1) +end +function c511001079.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0x205) +end +function c511001079.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001079.spfilter,tp,LOCATION_MZONE,0,2,nil) +end diff --git a/script/c511001080.lua b/script/c511001080.lua new file mode 100644 index 00000000..e5969b5b --- /dev/null +++ b/script/c511001080.lua @@ -0,0 +1,15 @@ +--Cookmate Lionion +function c511001080.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetTarget(c511001080.bttg) + e1:SetValue(1) + c:RegisterEffect(e1) +end +function c511001080.bttg(e,c) + return c~=e:GetHandler() and c:IsSetCard(0x205) +end diff --git a/script/c511001081.lua b/script/c511001081.lua new file mode 100644 index 00000000..c2cfb92b --- /dev/null +++ b/script/c511001081.lua @@ -0,0 +1,80 @@ +--Royal Cookmate King Hamburg +function c511001081.initial_effect(c) + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001081,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001081.destg) + e1:SetOperation(c511001081.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --Double ATK + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001081,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c511001081.atkcost) + e3:SetTarget(c511001081.atktg) + e3:SetOperation(c511001081.atkop) + c:RegisterEffect(e3) +end +function c511001081.desfilter(c,e,tp) + return c:IsControler(1-tp) and c:IsCanBeEffectTarget(e) and c:IsDestructable() +end +function c511001081.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return eg:IsExists(c511001081.desfilter,1,nil,e,tp) and e:GetHandler():IsAbleToHand() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=eg:FilterSelect(tp,c511001081.desfilter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001081.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end +function c511001081.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1,true) +end +function c511001081.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1205) +end +function c511001081.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001081.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001081.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001081.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001081.atkop(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_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetBaseAttack()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001082.lua b/script/c511001082.lua new file mode 100644 index 00000000..2ce235d0 --- /dev/null +++ b/script/c511001082.lua @@ -0,0 +1,80 @@ +--Royal Cookmate Knight Napolitan +function c511001082.initial_effect(c) + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001082,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001082.destg) + e1:SetOperation(c511001082.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --Double ATK + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001082,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c511001082.atkcost) + e3:SetTarget(c511001082.atktg) + e3:SetOperation(c511001082.atkop) + c:RegisterEffect(e3) +end +function c511001082.desfilter(c,e,tp) + return c:IsControler(1-tp) and c:IsCanBeEffectTarget(e) and c:IsDestructable() +end +function c511001082.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return eg:IsExists(c511001082.desfilter,1,nil,e,tp) and e:GetHandler():IsAbleToHand() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=eg:FilterSelect(tp,c511001082.desfilter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001082.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end +function c511001082.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1,true) +end +function c511001082.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1205) +end +function c511001082.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001082.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001082.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001082.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001082.atkop(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_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetBaseAttack()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001083.lua b/script/c511001083.lua new file mode 100644 index 00000000..7e528e14 --- /dev/null +++ b/script/c511001083.lua @@ -0,0 +1,80 @@ +--Royal Cookmate Prince Curry +function c511001083.initial_effect(c) + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001083,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001083.destg) + e1:SetOperation(c511001083.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --Double ATK + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001083,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c511001083.atkcost) + e3:SetTarget(c511001083.atktg) + e3:SetOperation(c511001083.atkop) + c:RegisterEffect(e3) +end +function c511001083.desfilter(c,e,tp) + return c:IsControler(1-tp) and c:IsCanBeEffectTarget(e) and c:IsDestructable() +end +function c511001083.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return eg:IsExists(c511001083.desfilter,1,nil,e,tp) and e:GetHandler():IsAbleToHand() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=eg:FilterSelect(tp,c511001083.desfilter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001083.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end +function c511001083.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1,true) +end +function c511001083.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1205) +end +function c511001083.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001083.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001083.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001083.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001083.atkop(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_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetBaseAttack()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001084.lua b/script/c511001084.lua new file mode 100644 index 00000000..61b1788f --- /dev/null +++ b/script/c511001084.lua @@ -0,0 +1,80 @@ +--Royal Cookmate Princess Pudding +function c511001084.initial_effect(c) + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001084,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001084.destg) + e1:SetOperation(c511001084.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --Double ATK + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001084,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c511001084.atkcost) + e3:SetTarget(c511001084.atktg) + e3:SetOperation(c511001084.atkop) + c:RegisterEffect(e3) +end +function c511001084.desfilter(c,e,tp) + return c:IsControler(1-tp) and c:IsCanBeEffectTarget(e) and c:IsDestructable() +end +function c511001084.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return eg:IsExists(c511001084.desfilter,1,nil,e,tp) and e:GetHandler():IsAbleToHand() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=eg:FilterSelect(tp,c511001084.desfilter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001084.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end +function c511001084.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1,true) +end +function c511001084.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1205) +end +function c511001084.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001084.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001084.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001084.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001084.atkop(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_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetBaseAttack()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001085.lua b/script/c511001085.lua new file mode 100644 index 00000000..45bb52d1 --- /dev/null +++ b/script/c511001085.lua @@ -0,0 +1,80 @@ +--Royal Cookmate Queen Omelet +function c511001085.initial_effect(c) + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001085,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001085.destg) + e1:SetOperation(c511001085.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --Double ATK + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001085,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c511001085.atkcost) + e3:SetTarget(c511001085.atktg) + e3:SetOperation(c511001085.atkop) + c:RegisterEffect(e3) +end +function c511001085.desfilter(c,e,tp) + return c:IsControler(1-tp) and c:IsCanBeEffectTarget(e) and c:IsDestructable() +end +function c511001085.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return eg:IsExists(c511001085.desfilter,1,nil,e,tp) and e:GetHandler():IsAbleToHand() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=eg:FilterSelect(tp,c511001085.desfilter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001085.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end +function c511001085.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1,true) +end +function c511001085.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1205) +end +function c511001085.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001085.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001085.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001085.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001085.atkop(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_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetBaseAttack()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001086.lua b/script/c511001086.lua new file mode 100644 index 00000000..0ea20b7b --- /dev/null +++ b/script/c511001086.lua @@ -0,0 +1,50 @@ +--Food Cemetery +function c511001086.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511001086.tg) + e1:SetOperation(c511001086.op) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511001086.desop) + c:RegisterEffect(e2) +end +function c511001086.filter(c,id) + return c:IsSetCard(0x205) and c:GetTurnID()==id and not c:IsReason(REASON_RETURN) +end +function c511001086.afilter(c) + return c:IsSetCard(0x205) and c:IsAbleToHand() +end +function c511001086.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c511001086.filter,tp,LOCATION_GRAVE,0,nil,Duel.GetTurnCount()) + local ct=g:GetCount() + if chk==0 then return ct>0 and Duel.IsExistingMatchingCard(c511001086.afilter,tp,LOCATION_DECK,0,ct,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,ct,tp,LOCATION_DECK) +end +function c511001086.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511001086.filter,tp,LOCATION_GRAVE,0,nil,Duel.GetTurnCount()) + if g:GetCount()>0 then + Duel.Overlay(c,g) + local ct=c:GetOverlayCount() + if ct>0 then + local g2=Duel.SelectMatchingCard(tp,c511001086.afilter,tp,LOCATION_DECK,0,ct,ct,nil) + Duel.SendtoHand(g2,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g2) + end + end +end +function c511001086.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil)>c:GetOverlayCount() then + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,0,nil) + Duel.Destroy(sg,REASON_EFFECT) + end +end diff --git a/script/c511001087.lua b/script/c511001087.lua new file mode 100644 index 00000000..caf02129 --- /dev/null +++ b/script/c511001087.lua @@ -0,0 +1,37 @@ +--Law of Food Conservation +function c511001087.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c511001087.condition) + e1:SetTarget(c511001087.target) + e1:SetOperation(c511001087.activate) + c:RegisterEffect(e1) +end +function c511001087.cfilter(c,tp) + return c:IsControler(tp) and c:IsPreviousLocation(LOCATION_DECK) and not c:IsReason(REASON_RULE) +end +function c511001087.cfilter2(c) + return c:IsFaceup() and c:IsCode(511001086) +end +function c511001087.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001087.cfilter,1,nil,1-tp) +end +function c511001087.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:Filter(c511001087.cfilter,nil,1-tp):GetCount() + if chk==0 then return Duel.IsExistingMatchingCard(c511001087.cfilter2,tp,LOCATION_SZONE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,ct,nil,0x205) end +end +function c511001087.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:Filter(c511001087.cfilter,nil,1-tp):GetCount() + if not Duel.IsExistingMatchingCard(c511001087.cfilter2,tp,LOCATION_SZONE,0,1,nil) + or ct<=0 then return end + local fc=Duel.SelectMatchingCard(tp,c511001087.cfilter2,tp,LOCATION_SZONE,0,1,1,nil):GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_DECK,0,ct,ct,nil,0x205) + if g:GetCount()>0 then + Duel.HintSelection(Group.FromCards(fc)) + Duel.Overlay(fc,g) + end +end diff --git a/script/c511001088.lua b/script/c511001088.lua new file mode 100644 index 00000000..119f8524 --- /dev/null +++ b/script/c511001088.lua @@ -0,0 +1,39 @@ +--Meal Ticket Abuse +function c511001088.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001088.target) + e1:SetOperation(c511001088.activate) + c:RegisterEffect(e1) +end +function c511001088.afilter(c) + return c:IsSetCard(0x1205) and c:IsAbleToHand() +end +function c511001088.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001088.afilter,tp,LOCATION_DECK,0,2,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_DECK) +end +function c511001088.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001088.afilter,tp,LOCATION_DECK,0,2,2,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + local tc=g:GetFirst() + while tc do + --summon limit + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + end +end diff --git a/script/c511001089.lua b/script/c511001089.lua new file mode 100644 index 00000000..d3afa57b --- /dev/null +++ b/script/c511001089.lua @@ -0,0 +1,46 @@ +--Wonder Recipe +function c511001089.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001089,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetTarget(c511001089.target) + e1:SetOperation(c511001089.operation) + c:RegisterEffect(e1) +end +function c511001089.cfilter2(c) + return c:IsFaceup() and c:IsCode(511001086) and c:GetOverlayCount()>0 +end +function c511001089.filter(c,e,sp) + return c:IsSetCard(0x1205) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) +end +function c511001089.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001089.cfilter2,tp,LOCATION_SZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511001089.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511001089.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if not e:GetHandler():IsRelateToEffect(e) then return end + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local fc=Duel.SelectMatchingCard(tp,c511001089.cfilter2,tp,LOCATION_SZONE,0,1,1,nil):GetFirst() + if fc:GetOverlayCount()0 then + Duel.HintSelection(Group.FromCards(fc)) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + Duel.Damage(1-tp,g:GetCount()*300,REASON_EFFECT) + end +end diff --git a/script/c511001090.lua b/script/c511001090.lua new file mode 100644 index 00000000..d197de8c --- /dev/null +++ b/script/c511001090.lua @@ -0,0 +1,62 @@ +--Pendulum Statue White Butterfly +function c511001090.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001090.target) + e2:SetOperation(c511001090.activate) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001090.thcon) + e3:SetTarget(c511001090.thtg) + e3:SetOperation(c511001090.thop) + c:RegisterEffect(e3) +end +function c511001090.filter(c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) +end +function c511001090.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001090.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001090.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001090.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(200) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511001090.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511001090.afilter(c) + return c:IsSetCard(0x121e) and c:IsAbleToHand() +end +function c511001090.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001090.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001090.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001090.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001091.lua b/script/c511001091.lua new file mode 100644 index 00000000..f332bdf0 --- /dev/null +++ b/script/c511001091.lua @@ -0,0 +1,62 @@ +--Pendulum Statue White Flower +function c511001091.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001091.target) + e2:SetOperation(c511001091.activate) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001091.thcon) + e3:SetTarget(c511001091.thtg) + e3:SetOperation(c511001091.thop) + c:RegisterEffect(e3) +end +function c511001091.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c511001091.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001091.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001091.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001091.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(200) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511001091.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511001091.afilter(c) + return c:IsSetCard(0x121e) and c:IsAbleToHand() +end +function c511001091.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001091.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001091.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001091.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001092.lua b/script/c511001092.lua new file mode 100644 index 00000000..e65537e3 --- /dev/null +++ b/script/c511001092.lua @@ -0,0 +1,62 @@ +--Pendulum Statue Purple Shield +function c511001092.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001092.target) + e2:SetOperation(c511001092.activate) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001092.thcon) + e3:SetTarget(c511001092.thtg) + e3:SetOperation(c511001092.thop) + c:RegisterEffect(e3) +end +function c511001092.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511001092.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001092.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001092.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001092.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(200) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511001092.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511001092.afilter(c) + return c:IsSetCard(0x121e) and c:IsAbleToHand() +end +function c511001092.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001092.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001092.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001092.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001093.lua b/script/c511001093.lua new file mode 100644 index 00000000..f28323e6 --- /dev/null +++ b/script/c511001093.lua @@ -0,0 +1,62 @@ +--Pendulum Statue Purple Sword +function c511001093.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001093.target) + e2:SetOperation(c511001093.activate) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001093.thcon) + e3:SetTarget(c511001093.thtg) + e3:SetOperation(c511001093.thop) + c:RegisterEffect(e3) +end +function c511001093.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511001093.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001093.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001093.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001093.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(200) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511001093.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511001093.afilter(c) + return c:IsSetCard(0x121e) and c:IsAbleToHand() +end +function c511001093.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001093.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001093.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001093.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001094.lua b/script/c511001094.lua new file mode 100644 index 00000000..938f97a6 --- /dev/null +++ b/script/c511001094.lua @@ -0,0 +1,46 @@ +--Pendulum Statue Red Devil +function c511001094.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(c511001094.filter) + e2:SetValue(300) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001094.thcon) + e3:SetTarget(c511001094.thtg) + e3:SetOperation(c511001094.thop) + c:RegisterEffect(e3) +end +function c511001094.filter(e,c) + return c:IsAttribute(ATTRIBUTE_FIRE) +end +function c511001094.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511001094.afilter(c) + return c:IsSetCard(0x121e) and c:IsAbleToHand() +end +function c511001094.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001094.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001094.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001094.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001095.lua b/script/c511001095.lua new file mode 100644 index 00000000..81cba331 --- /dev/null +++ b/script/c511001095.lua @@ -0,0 +1,62 @@ +--Pendulum Statue Red Angel +function c511001095.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001095.target) + e2:SetOperation(c511001095.activate) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001095.thcon) + e3:SetTarget(c511001095.thtg) + e3:SetOperation(c511001095.thop) + c:RegisterEffect(e3) +end +function c511001095.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511001095.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001095.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001095.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001095.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(200) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511001095.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511001095.afilter(c) + return c:IsSetCard(0x121e) and c:IsAbleToHand() +end +function c511001095.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001095.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001095.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001095.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001096.lua b/script/c511001096.lua new file mode 100644 index 00000000..653b53b1 --- /dev/null +++ b/script/c511001096.lua @@ -0,0 +1,62 @@ +--Pendulum Statue Blue Whale +function c511001096.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001096.target) + e2:SetOperation(c511001096.activate) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001096.thcon) + e3:SetTarget(c511001096.thtg) + e3:SetOperation(c511001096.thop) + c:RegisterEffect(e3) +end +function c511001096.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FISH) +end +function c511001096.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001096.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001096.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001096.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(300) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511001096.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511001096.afilter(c) + return c:IsSetCard(0x121e) and c:IsAbleToHand() +end +function c511001096.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001096.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001096.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001096.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001097.lua b/script/c511001097.lua new file mode 100644 index 00000000..b687ce65 --- /dev/null +++ b/script/c511001097.lua @@ -0,0 +1,62 @@ +--Pendulum Statue Yellow Scarab +function c511001097.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001097.target) + e2:SetOperation(c511001097.activate) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001097.thcon) + e3:SetTarget(c511001097.thtg) + e3:SetOperation(c511001097.thop) + c:RegisterEffect(e3) +end +function c511001097.filter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c511001097.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001097.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001097.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001097.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(300) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511001097.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511001097.afilter(c) + return c:IsSetCard(0x121e) and c:IsAbleToHand() +end +function c511001097.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001097.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001097.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001097.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001098.lua b/script/c511001098.lua new file mode 100644 index 00000000..f321da3a --- /dev/null +++ b/script/c511001098.lua @@ -0,0 +1,25 @@ +--Pentacle of Ace +function c511001098.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001098.target) + e1:SetOperation(c511001098.activate) + c:RegisterEffect(e1) +end +function c511001098.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c511001098.activate(e,tp,eg,ep,ev,re,r,rp) + local res=Duel.TossCoin(tp,1) + if res==1 then + Duel.Draw(tp,1,REASON_EFFECT) + Duel.Recover(tp,500,REASON_EFFECT) + else + Duel.Draw(1-tp,1,REASON_EFFECT) + Duel.Recover(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c511001099.lua b/script/c511001099.lua new file mode 100644 index 00000000..ec5e2468 --- /dev/null +++ b/script/c511001099.lua @@ -0,0 +1,34 @@ +--Emperor's Staff +function c511001099.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001099.target) + e1:SetOperation(c511001099.activate) + c:RegisterEffect(e1) +end +function c511001099.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511001099.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + --indestructable + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetTargetRange(LOCATION_ONFIELD,0) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetValue(c511001099.indval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001099.indval(e,re,rp) + return re:GetOwner()~=e:GetOwner() +end diff --git a/script/c511001100.lua b/script/c511001100.lua new file mode 100644 index 00000000..b6bcc229 --- /dev/null +++ b/script/c511001100.lua @@ -0,0 +1,30 @@ +--Dragon King's Demise +function c511001100.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001100.target) + e1:SetOperation(c511001100.activate) + c:RegisterEffect(e1) +end +function c511001100.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsReleasableByEffect,tp,LOCATION_MZONE,0,ct,nil) end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511001100.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil) + if Duel.IsExistingMatchingCard(Card.IsReleasableByEffect,tp,LOCATION_MZONE,0,ct,nil) then + local g=Duel.GetMatchingGroup(Card.IsReleasableByEffect,tp,LOCATION_MZONE,0,nil) + if Duel.Release(g,REASON_EFFECT)>0 then + g=g:Filter(Card.IsRace,nil,RACE_DRAGON) + local sum=g:GetSum(Card.GetAttack) + Duel.BreakEffect() + Duel.Damage(tp,sum,REASON_EFFECT,true) + Duel.Damage(1-tp,sum,REASON_EFFECT,true) + Duel.RDComplete() + end + end +end diff --git a/script/c511001101.lua b/script/c511001101.lua new file mode 100644 index 00000000..f6c16994 --- /dev/null +++ b/script/c511001101.lua @@ -0,0 +1,85 @@ +--Advanced Crystal Beast Sapphire Pegasus +function c511001101.initial_effect(c) + --Treated as "Crystal Beast Sapphire Pegasus" + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_ADD_CODE) + e1:SetValue(7093411) + c:RegisterEffect(e1) + --Place 1 Crystal in the Spell & Trap Card Zone + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001101,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetTarget(c511001101.placetg) + e2:SetOperation(c511001101.placeop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) + --Turn into Crystal + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511001101,1)) + e5:SetCode(EFFECT_SEND_REPLACE) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e5:SetRange(LOCATION_MZONE) + e5:SetTarget(c511001101.crystaltg) + e5:SetOperation(c511001101.crystalop) + c:RegisterEffect(e5) + --selfdes + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetCode(EFFECT_SELF_DESTROY) + e6:SetRange(LOCATION_ONFIELD) + e6:SetCondition(c511001101.descon) + c:RegisterEffect(e6) +end +function c511001101.descon(e) + return not Duel.IsEnvironment(12644061) +end +function c511001101.crystaltg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_DESTROY) end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return false end + return Duel.SelectEffectYesNo(tp,c) +end +function c511001101.crystalop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e1) + Duel.RaiseEvent(c,47408488,e,0,tp,0,0) +end +function c511001101.placetg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,0x33,0,1,nil,0x1034) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end +end +function c511001101.placeop(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,0x33,0,1,1,nil,0x1034) + if g:GetCount()>0 then + local tc=g:GetFirst() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(tc) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + tc:RegisterEffect(e1) + Duel.RaiseEvent(tc,47408488,e,0,tp,0,0) + end +end diff --git a/script/c511001102.lua b/script/c511001102.lua new file mode 100644 index 00000000..49e81760 --- /dev/null +++ b/script/c511001102.lua @@ -0,0 +1,36 @@ +--Card Defense +function c511001102.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001102.condition) + e1:SetCost(c511001102.cost) + e1:SetTarget(c511001102.target) + e1:SetOperation(c511001102.activate) + c:RegisterEffect(e1) +end +function c511001102.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 c511001102.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001102.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001102.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() + local c=e:GetHandler() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001103.lua b/script/c511001103.lua new file mode 100644 index 00000000..956c2036 --- /dev/null +++ b/script/c511001103.lua @@ -0,0 +1,52 @@ +--Card of Distrain +function c511001103.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001103.target) + e1:SetOperation(c511001103.operation) + c:RegisterEffect(e1) +end +function c511001103.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,0,LOCATION_SZONE,2,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511001103,0)) + local g=Duel.SelectTarget(tp,Card.IsFacedown,tp,0,LOCATION_SZONE,1,1,e:GetHandler()) +end +function c511001103.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFacedown() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetCondition(c511001103.damcon) + e2:SetTarget(c511001103.damtg) + e2:SetOperation(c511001103.damop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c511001103.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP+TYPE_SPELL) +end +function c511001103.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511001103.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001104.lua b/script/c511001104.lua new file mode 100644 index 00000000..68c416c1 --- /dev/null +++ b/script/c511001104.lua @@ -0,0 +1,45 @@ +--Cosmic Blast +function c511001104.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCost(c511001104.cost) + e1:SetCondition(c511001104.condition) + e1:SetTarget(c511001104.target) + e1:SetOperation(c511001104.activate) + c:RegisterEffect(e1) +end +function c511001104.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) +end +function c511001104.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsType(TYPE_SYNCHRO) and c:IsRace(RACE_DRAGON) +end +function c511001104.condition(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511001104.cfilter,nil,tp) + return g:GetCount()==1 +end +function c511001104.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=eg:Filter(c511001104.cfilter,nil,tp):GetFirst() + local dam=tc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511001104.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001105.lua b/script/c511001105.lua new file mode 100644 index 00000000..66eb621b --- /dev/null +++ b/script/c511001105.lua @@ -0,0 +1,43 @@ +--Synchro Spirits +function c511001105.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001105.target) + e1:SetOperation(c511001105.activate) + c:RegisterEffect(e1) +end +function c511001105.filter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemoveAsCost() +end +function c511001105.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511001105.filter(chk) end + if chk==0 then return Duel.IsExistingTarget(c511001105.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511001105.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511001105.mgfilter(c,e,tp,sync) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x80008)~=0x80008 or c:GetReasonCard()~=sync + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001105.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + if Duel.Remove(tc,nil,POS_FACEUP,REASON_EFFECT)==0 or sumtype~=SUMMON_TYPE_SYNCHRO or mg:GetCount()==0 + or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) + or mg:IsExists(c511001105.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable and Duel.SelectYesNo(tp,aux.Stringid(511001105,0)) then + Duel.BreakEffect() + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001106.lua b/script/c511001106.lua new file mode 100644 index 00000000..108bff38 --- /dev/null +++ b/script/c511001106.lua @@ -0,0 +1,56 @@ +--Discord Counter +function c511001106.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001106.condition) + e1:SetTarget(c511001106.target) + e1:SetOperation(c511001106.activate) + c:RegisterEffect(e1) +end +function c511001106.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:GetSummonType()==SUMMON_TYPE_SYNCHRO and ep~=tp +end +function c511001106.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return eg:GetFirst():IsAbleToExtra() end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_TODECK,eg,1,0,0) +end +function c511001106.mgfilter(c,e,tp,sync) + return not c:IsLocation(LOCATION_GRAVE) or c:IsControler(1-tp) + or bit.band(c:GetReason(),0x80008)~=0x80008 or c:GetReasonCard()~=sync + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001106.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(1-tp,59822133) then ft=1 end + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 or sumtype~=SUMMON_TYPE_SYNCHRO or mg:GetCount()==0 + or mg:GetCount()>ft or mg:IsExists(c511001106.mgfilter,1,nil,e,1-tp,tc) then + sumable=false + end + if sumable then + Duel.BreakEffect() + Duel.SpecialSummon(mg,0,tp,1-tp,false,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END,2) + e1:SetTargetRange(0,1) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + Duel.RegisterEffect(e3,tp) +end diff --git a/script/c511001107.lua b/script/c511001107.lua new file mode 100644 index 00000000..6840d6fb --- /dev/null +++ b/script/c511001107.lua @@ -0,0 +1,73 @@ +--Tuning Barrier +function c511001107.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001107.target) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCondition(c511001107.condition) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) + --cannot attack #2 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCondition(c511001107.condition2) + e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_TO_HAND) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + c:RegisterEffect(e4) +end +function c511001107.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TUNER) +end +function c511001107.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001107.cfilter,tp,0,LOCATION_MZONE+LOCATION_GRAVE,1,nil) +end +function c511001107.condition2(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001107.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil) +end +function c511001107.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():SetTurnCounter(0) + local sg=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,sg,sg:GetCount(),0,0) + --destroy + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511001107.descon) + e1:SetOperation(c511001107.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + e:GetHandler():RegisterEffect(e1) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,3) + c511001107[e:GetHandler()]=e1 +end +function c511001107.descon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511001107.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==3 then + Duel.SendtoGrave(c,REASON_RULE) + c:ResetFlagEffect(1082946) + end +end diff --git a/script/c511001108.lua b/script/c511001108.lua new file mode 100644 index 00000000..adff429c --- /dev/null +++ b/script/c511001108.lua @@ -0,0 +1,45 @@ +--Counter Crystal +function c511001108.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001108.cost) + e1:SetTarget(c511001108.target) + e1:SetOperation(c511001108.activate) + c:RegisterEffect(e1) +end +function c511001108.cfilter(c) + return c:GetSequence()<5 and c:IsAbleToGraveAsCost() +end +function c511001108.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001108.cfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001108.cfilter,tp,LOCATION_SZONE,0,1,5,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001108.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_GRAVE,0,1,nil,0x1034) end + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,nil,1,tp,LOCATION_GRAVE) +end +function c511001108.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if ft<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_GRAVE,0,ft,ft,nil,0x1034) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.RaiseEvent(g,47408488,e,0,tp,0,0) + end +end diff --git a/script/c511001109.lua b/script/c511001109.lua new file mode 100644 index 00000000..7db0504d --- /dev/null +++ b/script/c511001109.lua @@ -0,0 +1,25 @@ +--Rebellion +function c511001109.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001109.target) + e1:SetOperation(c511001109.activate) + c:RegisterEffect(e1) +end +function c511001109.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_CONTROL) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511001109.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Damage(tc:GetControler(),tc:GetAttack(),REASON_BATTLE) + Duel.RaiseSingleEvent(tc,EVENT_BATTLE_DAMAGE,e,REASON_BATTLE,tp,tc:GetControler(),tc:GetAttack()) + Duel.RaiseEvent(tc,EVENT_BATTLE_DAMAGE,e,REASON_BATTLE,tp,tc:GetControler(),tc:GetAttack()) + end +end diff --git a/script/c511001111.lua b/script/c511001111.lua new file mode 100644 index 00000000..7bb1acad --- /dev/null +++ b/script/c511001111.lua @@ -0,0 +1,76 @@ +--Advanced Crystal Beast Cobalt Eagle +function c511001111.initial_effect(c) + --Treated as "Crystal Beast Cobalt Eagle" + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_ADD_CODE) + e1:SetValue(21698716) + c:RegisterEffect(e1) + --Return 1 "Crystal Beast" to deck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(21698716,0)) + e2:SetCategory(CATEGORY_TODECK) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001111.returntg) + e2:SetOperation(c511001111.returnop) + c:RegisterEffect(e2) + --Turn into Crystal + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(21698716,1)) + e3:SetCode(EFFECT_SEND_REPLACE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511001111.crystaltg) + e3:SetOperation(c511001111.crystalop) + c:RegisterEffect(e3) + --selfdes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetRange(LOCATION_ONFIELD) + e4:SetCondition(c511001111.descon) + c:RegisterEffect(e4) +end +function c511001111.descon(e) + return not Duel.IsEnvironment(12644061) +end +function c511001111.crystaltg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_DESTROY) end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return false end + return Duel.SelectEffectYesNo(tp,c) +end +function c511001111.crystalop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e1) + Duel.RaiseEvent(c,47408488,e,0,tp,0,0) +end +function c511001111.returnfilter(c) + return c:IsSetCard(0x1034) and c:IsAbleToHand() and c:IsFaceup() +end +function c511001111.returntg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c511001111.returnfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001111.returnfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511001111.returnfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511001111.returnop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,0,REASON_EFFECT) + end +end diff --git a/script/c511001112.lua b/script/c511001112.lua new file mode 100644 index 00000000..561180d2 --- /dev/null +++ b/script/c511001112.lua @@ -0,0 +1,67 @@ +--Magical Trick Mirror +function c511001112.initial_effect(c) + --copy Spell + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001112.condition) + e1:SetTarget(c511001112.target) + e1:SetOperation(c511001112.operation) + c:RegisterEffect(e1) +end +function c511001112.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511001112.filter(c,e,tp,eg,ep,ev,re,r,rp) + return c:IsType(TYPE_SPELL) and c:CheckActivateEffect(false,false,false)~=nil and not c:IsType(TYPE_FIELD) +end +function c511001112.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) or chkc:IsLocation(LOCATION_MZONE) and chkc:GetControler()~=tp and c511001112.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001112.filter,tp,0,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511001112.filter,tp,0,LOCATION_GRAVE,1,1,nil) +end +function c511001112.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + if c:IsRelateToEffect(e) and not tc:IsType(TYPE_EQUIP+TYPE_CONTINUOUS) then + local tpe=tc:GetType() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end + if c:IsRelateToEffect(e) and tc:IsType(TYPE_EQUIP+TYPE_CONTINUOUS) then + local tpe=tc:GetType() + local code=tc:GetOriginalCode() + c:CopyEffect(code,nil,1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + c:CancelToGrave() + end +end diff --git a/script/c511001113.lua b/script/c511001113.lua new file mode 100644 index 00000000..22c4fd08 --- /dev/null +++ b/script/c511001113.lua @@ -0,0 +1,58 @@ +--Twin-Bow Centaur +function c511001113.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Destruction + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001113,0)) + e2:SetCategory(CATEGORY_REMOVE+CATEGORY_COIN+CATEGORY_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCost(c511001113.cost) + e2:SetTarget(c511001113.target) + e2:SetOperation(c511001113.desop) + c:RegisterEffect(e2) +end +function c511001113.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001113.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511001113,1)) + local g1=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511001113,2)) + local g2=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g1,2,0,0) +end +function c511001113.desop(e,tp,eg,ep,ev,re,r,rp) + local tc1=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc2=g:GetFirst() + if tc1==tc2 then tc2=g:GetNext() end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(34016756,3)) + local coin=Duel.SelectOption(tp,60,61) + local res=Duel.TossCoin(tp,1) + if coin~=res then + Duel.Remove(tc2,POS_FACEUP,REASON_EFFECT) + Duel.Damage(1-tp,tc2:GetBaseAttack(),REASON_EFFECT) + else + Duel.Remove(tc1,POS_FACEUP,REASON_EFFECT) + Duel.Damage(tp,tc1:GetBaseAttack(),REASON_EFFECT) + end +end diff --git a/script/c511001114.lua b/script/c511001114.lua new file mode 100644 index 00000000..932536e8 --- /dev/null +++ b/script/c511001114.lua @@ -0,0 +1,107 @@ +--Advanced Crystal Beast Ruby Carbuncle +function c511001114.initial_effect(c) + --Treated as "Crystal Beast Ruby Carbuncle" + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_ADD_CODE) + e1:SetValue(32710364) + c:RegisterEffect(e1) + --Turn Crystals into Beasts + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(32710364,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c511001114.crystalstobeaststg) + e3:SetOperation(c511001114.crystalstobeastsop) + c:RegisterEffect(e3) + --Turn into Crystal + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(32710364,1)) + e4:SetCode(EFFECT_SEND_REPLACE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c511001114.crystaltg) + e4:SetOperation(c511001114.crystalop) + c:RegisterEffect(e4) + --selfdes + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_SELF_DESTROY) + e5:SetRange(LOCATION_ONFIELD) + e5:SetCondition(c511001114.descon) + c:RegisterEffect(e5) + --Special Summon self + local e7=Effect.CreateEffect(c) + e7:SetCategory(CATEGORY_SPECIAL_SUMMON) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetRange(LOCATION_SZONE) + e7:SetTarget(c511001114.sptg) + e7:SetOperation(c511001114.spop) + c:RegisterEffect(e7) +end +function c511001114.descon(e) + return not Duel.IsEnvironment(12644061) +end +function c511001114.crystaltg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_DESTROY) end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return false end + return Duel.SelectEffectYesNo(tp,c) +end +function c511001114.crystalop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e1) + Duel.RaiseEvent(c,47408488,e,0,tp,0,0) +end +function c511001114.crystalstobeastfilter(c,e,sp) + return c:IsFaceup() and c:IsSetCard(0x1034) and c:IsCanBeSpecialSummoned(e,0,sp,true,false) +end +function c511001114.crystalstobeaststg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001114.crystalstobeastfilter,tp,LOCATION_SZONE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) + local gct=Duel.GetMatchingGroupCount(c511001114.crystalstobeastfilter,tp,LOCATION_SZONE,0,nil,e,tp) + if ct>gct then + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,gct,tp,LOCATION_SZONE) + else + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,tp,LOCATION_SZONE) + end +end +function c511001114.crystalstobeastsop(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ct==0 then return end + local g=Duel.GetMatchingGroup(c511001114.crystalstobeastfilter,tp,LOCATION_SZONE,0,nil,e,tp) + local gc=g:GetCount() + if gc==0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end + if gc<=ct then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,ct,ct,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001114.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511001114.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001115.lua b/script/c511001115.lua new file mode 100644 index 00000000..661ac7fa --- /dev/null +++ b/script/c511001115.lua @@ -0,0 +1,70 @@ +--Advanced Crystal Beast Amethyst Cat +function c511001115.initial_effect(c) + --Treated as "Crystal Beast Amethyst Cat" + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_ADD_CODE) + e1:SetValue(32933942) + c:RegisterEffect(e1) + --Direct Attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) + --Turn into Crystal + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(32933942,0)) + e3:SetCode(EFFECT_SEND_REPLACE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511001115.crystaltg) + e3:SetOperation(c511001115.crystalop) + c:RegisterEffect(e3) + --damage reduce + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e4:SetCondition(c511001115.rdcon) + e4:SetOperation(c511001115.rdop) + c:RegisterEffect(e4) + --selfdes + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_SELF_DESTROY) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511001115.descon) + c:RegisterEffect(e5) +end +function c511001115.descon(e) + return not Duel.IsEnvironment(12644061) +end +function c511001115.crystaltg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_DESTROY) end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return false end + return Duel.SelectEffectYesNo(tp,c) +end +function c511001115.crystalop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e1) + Duel.RaiseEvent(c,47408488,e,0,tp,0,0) +end +function c511001115.rdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep~=tp and c==Duel.GetAttacker() and Duel.GetAttackTarget()==nil + and c:GetEffectCount(EFFECT_DIRECT_ATTACK)<2 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c511001115.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end diff --git a/script/c511001116.lua b/script/c511001116.lua new file mode 100644 index 00000000..4ad4356f --- /dev/null +++ b/script/c511001116.lua @@ -0,0 +1,43 @@ +--Double Magical Arm Bind +function c511001116.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001116.cost) + e1:SetTarget(c511001116.target) + e1:SetOperation(c511001116.activate) + c:RegisterEffect(e1) +end +function c511001116.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,2,nil) end + local rg=Duel.SelectReleaseGroup(tp,nil,2,2,nil) + Duel.Release(rg,REASON_COST) +end +function c511001116.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:GetControler()~=tp and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,2,0,0) +end +function c511001116.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + while tc do + if Duel.GetControl(tc,tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + tc:RegisterEffect(e2) + end + tc=g:GetNext() + end +end diff --git a/script/c511001117.lua b/script/c511001117.lua new file mode 100644 index 00000000..9be7fa01 --- /dev/null +++ b/script/c511001117.lua @@ -0,0 +1,82 @@ +--鎧黒竜-サイバー·ダーク·ドラゴン +function c511001117.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,41230939,77625948,3019642,true,true) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001117,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001117.eqtg) + e1:SetOperation(c511001117.eqop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511001117.atkval) + c:RegisterEffect(e2) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(c511001117.splimit) + c:RegisterEffect(e3) +end +function c511001117.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511001117.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsRace(RACE_DRAGON) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsRace,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,RACE_DRAGON) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511001117.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001117.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c511001117.repval) + tc:RegisterEffect(e3) + end +end +function c511001117.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001117.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c511001117.atkval(e,c) + local tp=e:GetHandlerPlayer() + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_GRAVE,0)*100 +end diff --git a/script/c511001118.lua b/script/c511001118.lua new file mode 100644 index 00000000..d0a5b5cb --- /dev/null +++ b/script/c511001118.lua @@ -0,0 +1,46 @@ +--Spider Web +function c511001118.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001118.target) + e1:SetOperation(c511001118.operation) + c:RegisterEffect(e1) + if not c511001118.global_check then + c511001118.global_check=true + local ge=Effect.CreateEffect(c) + ge:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge:SetCode(EVENT_TO_GRAVE) + ge:SetOperation(c511001118.op) + Duel.RegisterEffect(ge,0) + end +end +function c511001118.filter(c) + local tid=Duel.GetTurnCount() + return c:IsAbleToHand() and c:GetFlagEffect(511001118)>0 and c:GetTurnID()~=tid +end +function c511001118.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and c511001118.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001118.filter,tp,0,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511001118.filter,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511001118.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c511001118.op(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsLocation(LOCATION_GRAVE) then + tc:RegisterFlagEffect(511001118,RESET_PHASE+PHASE_END,0,2,1) + end + tc=eg:GetNext() + end +end diff --git a/script/c511001119.lua b/script/c511001119.lua new file mode 100644 index 00000000..e76147b1 --- /dev/null +++ b/script/c511001119.lua @@ -0,0 +1,37 @@ +--Deck Destruction Virus +function c511001119.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetLabel(0) + e1:SetCondition(c511001119.condition) + e1:SetTarget(c511001119.target) + e1:SetOperation(c511001119.activate) + c:RegisterEffect(e1) + --Randomly Discard 10 cards + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetLabel(1) + e2:SetCondition(c511001119.condition) + e2:SetTarget(c511001119.target) + e2:SetOperation(c511001119.activate) + c:RegisterEffect(e2) +end +function c511001119.spfilter(c,tp) + return c:GetControler()==tp and c:IsRace(RACE_FIEND) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackBelow(500) +end +function c511001119.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001119.spfilter,1,nil,tp) +end +function c511001119.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetLabel()==1 or Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c511001119.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,0,LOCATION_DECK,nil):RandomSelect(tp,10) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c511001120.lua b/script/c511001120.lua new file mode 100644 index 00000000..6c23e8d5 --- /dev/null +++ b/script/c511001120.lua @@ -0,0 +1,28 @@ +--Prophecy +function c511001120.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001120,0)) + e1:SetCategory(CATEGORY_HANDES) + e1:SetHintTiming(0,TIMING_TOHAND+TIMING_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_SZONE) + e1:SetOperation(c511001120.op) + c:RegisterEffect(e1) +end +function c511001120.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND):RandomSelect(tp,1,nil) + local tc=g:GetFirst() + local atk=tc:GetAttack() + local attackToCheck = 2000 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511001120,0)) + local op=Duel.SelectOption(tp,aux.Stringid(511001120,1),aux.Stringid(511001120,2),aux.Stringid(511001120,3)) + Duel.ConfirmCards(tp,tc) + Duel.ShuffleHand(1-tp) + if (op==0 and atk<2000) or (op==1 and tc:GetAttack() == attackToCheck) or (op==2 and atk>2000) then + Duel.SendtoHand(tc,tp,REASON_EFFECT) + end +end diff --git a/script/c511001121.lua b/script/c511001121.lua new file mode 100644 index 00000000..39f2b586 --- /dev/null +++ b/script/c511001121.lua @@ -0,0 +1,30 @@ +--Chasm of Spikes +function c511001121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001121.condition) + e1:SetTarget(c511001121.target) + e1:SetOperation(c511001121.activate) + c:RegisterEffect(e1) +end +function c511001121.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001121.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsDestructable() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511001121.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + Duel.Damage(1-tp,tc:GetAttack()/4,REASON_EFFECT) + end +end diff --git a/script/c511001122.lua b/script/c511001122.lua new file mode 100644 index 00000000..11572c30 --- /dev/null +++ b/script/c511001122.lua @@ -0,0 +1,169 @@ +--Graverobber +function c511001122.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001122.target) + e1:SetOperation(c511001122.operation) + c:RegisterEffect(e1) + if not c511001122.global_check then + c511001122.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511001122.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511001122.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511001122.filter(c,e,tp,eg,ep,ev,re,r,rp,chain) + if c:IsType(TYPE_MONSTER) then + if c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + else + return c:IsAbleToHand() + end + else + if not c:IsType(TYPE_FIELD) and Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return false end + local te=c:GetActivateEffect() + if te then + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + if te:GetCode()==EVENT_CHAINING then + if chain<=0 then return false end + local te2=Duel.GetChainInfo(chain,CHAININFO_TRIGGERING_EFFECT) + local tc=te2:GetHandler() + local g=Group.FromCards(tc) + local p=tc:GetControler() + return (not condition or condition(te,tp,g,p,chain,te2,REASON_EFFECT,p)) and (not cost or cost(te,tp,g,p,chain,te2,REASON_EFFECT,p,0)) + and (not target or target(te,tp,g,p,chain,te2,REASON_EFFECT,p,0)) + elseif te:GetCode()==EVENT_ATTACK_ANNOUNCE then + local a=Duel.GetAttacker() + local p=Duel.GetTurnPlayer() + if not a then return false end + return (not condition or condition(te,tp,a,p,0,nil,0,p)) and (not cost or cost(te,tp,a,p,0,nil,0,p,0)) + and (not target or target(te,tp,a,p,0,nil,0,p,0)) + else + return (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) + end + else + return c:IsSSetable() + end + end +end +function c511001122.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local chain=Duel.GetCurrentChain() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511001122.filter(chkc,e,tp,eg,ep,ev,re,r,rp,chain) end + if chk==0 then return Duel.IsExistingTarget(c511001122.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp,eg,ep,ev,re,r,rp,chain) end + chain=chain-1 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001122.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp,chain) +end +function c511001122.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) then return end + local tpe=tc:GetType() + if tc:IsType(TYPE_MONSTER) then + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + else + Duel.SendtoHand(tc,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end + else + if not tc:IsType(TYPE_FIELD) and Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + if te then + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc:IsType(TYPE_FIELD) and tc:GetSequence()~=5 then + Duel.MoveSequence(tc,5) + end + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if te:GetCode()==EVENT_CHAINING then + local chain=Duel.GetCurrentChain()-1 + local te2=Duel.GetChainInfo(chain,CHAININFO_TRIGGERING_EFFECT) + local tc=te2:GetHandler() + local g=Group.FromCards(tc) + local p=tc:GetControler() + if co then co(te,tp,g,p,chain,te2,REASON_EFFECT,p,1) end + if tg then tg(te,tp,g,p,chain,te2,REASON_EFFECT,p,1) end + elseif te:GetCode()==EVENT_ATTACK_ANNOUNCE then + local a=Duel.GetAttacker() + local p=Duel.GetTurnPlayer() + if co then co(te,tp,a,p,0,nil,0,p,1) end + if tg then tg(te,tp,a,p,0,nil,0,p,1) end + else + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if te:GetCode()==EVENT_CHAINING then + local chain=Duel.GetCurrentChain()-1 + local te2=Duel.GetChainInfo(chain,CHAININFO_TRIGGERING_EFFECT) + local tc=te2:GetHandler() + local g=Group.FromCards(tc) + local p=tc:GetControler() + if op then op(te,tp,g,p,chain,te2,REASON_EFFECT,p) end + elseif te:GetCode()==EVENT_ATTACK_ANNOUNCE then + local a=Duel.GetAttacker() + local p=Duel.GetTurnPlayer() + if op then op(te,tp,a,p,0,nil,0,p) end + else + if op then op(te,tp,eg,ep,ev,re,r,rp) end + end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + else + Duel.SSet(tp,tc) + Duel.ConfirmCards(1-tp,tc) + end + end +end diff --git a/script/c511001123.lua b/script/c511001123.lua new file mode 100644 index 00000000..e6750d59 --- /dev/null +++ b/script/c511001123.lua @@ -0,0 +1,80 @@ +--サイバー·ダーク·キール +function c511001123.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001123,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001123.eqtg) + e1:SetOperation(c511001123.eqop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001123,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetTarget(c511001123.damtg) + e2:SetOperation(c511001123.damop) + c:RegisterEffect(e2) +end +function c511001123.filter(c) + return c:IsLevelBelow(4) and c:IsRace(RACE_DRAGON) +end +function c511001123.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511001123.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511001123.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511001123.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001123.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c511001123.repval) + tc:RegisterEffect(e3) + end +end +function c511001123.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001123.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c511001123.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511001123.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001124.lua b/script/c511001124.lua new file mode 100644 index 00000000..6af018ab --- /dev/null +++ b/script/c511001124.lua @@ -0,0 +1,65 @@ +--サイバー·ダーク·ホーン +function c511001124.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001124,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001124.eqtg) + e1:SetOperation(c511001124.eqop) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) +end +function c511001124.filter(c) + return c:IsLevelBelow(4) and c:IsRace(RACE_DRAGON) +end +function c511001124.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001124.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511001124.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511001124.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001124.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c511001124.repval) + tc:RegisterEffect(e3) + end +end +function c511001124.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001124.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c511001125.lua b/script/c511001125.lua new file mode 100644 index 00000000..196978d7 --- /dev/null +++ b/script/c511001125.lua @@ -0,0 +1,61 @@ +--Life Shaver +function c511001125.initial_effect(c) + --discard + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001125.target) + e1:SetOperation(c511001125.activate) + c:RegisterEffect(e1) + if not c511001125.global_check then + c511001125.global_check=true + --register + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_SSET) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IMMEDIATELY_APPLY) + ge1:SetOperation(c511001125.regop) + Duel.RegisterEffect(ge1,0) + --counter + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_TURN_END) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001125.ctop) + Duel.RegisterEffect(ge2,0) + end +end +function c511001125.regop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsCode,nil,511001125) + local tc=g:GetFirst() + while tc do + tc:ResetFlagEffect(511001125) + tc:RegisterFlagEffect(511001124,RESET_EVENT+0x1fe0000,0,1) + tc=g:GetNext() + end +end +function c511001125.regfilter(c) + return c:GetFlagEffect(511001124)>0 and c:GetOriginalCode()==511001125 and c:IsFacedown() +end +function c511001125.ctop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=e:GetOwner():GetOwner() then return end + local g=Duel.GetMatchingGroup(c511001125.regfilter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511001125,RESET_EVENT+0x1fe0000,0,1) + tc=g:GetNext() + end +end +function c511001125.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=e:GetHandler():GetFlagEffect(511001125) + if chk==0 then return ct>0 and Duel.IsExistingMatchingCard(nil,tp,0,LOCATION_HAND,ct,e:GetHandler()) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,ct) +end +function c511001125.activate(e,tp,eg,ep,ev,re,r,rp) + local p,ct=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardHand(p,nil,ct,ct,REASON_EFFECT+REASON_DISCARD) +end diff --git a/script/c511001126.lua b/script/c511001126.lua new file mode 100644 index 00000000..44acffd1 --- /dev/null +++ b/script/c511001126.lua @@ -0,0 +1,33 @@ +--Card of Sanctity +function c511001126.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001126.target) + e1:SetOperation(c511001126.operation) + c:RegisterEffect(e1) +end +function c511001126.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct1=Duel.GetMatchingGroupCount(nil,tp,LOCATION_HAND,0,e:GetHandler()) + local ct2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + if chk==0 then return Duel.IsPlayerCanDraw(tp,ct1) and Duel.IsPlayerCanDraw(1-tp) + and (ct1<6 or ct2<6) end + if ct1<6 then + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,6-ct1) + end + if ct2<6 then + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,6-ct2) + end +end +function c511001126.operation(e,tp,eg,ep,ev,re,r,rp) + local ht=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + if ht<6 then + Duel.Draw(tp,6-ht,REASON_EFFECT) + end + ht=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0) + if ht<6 then + Duel.Draw(1-tp,6-ht,REASON_EFFECT) + end +end diff --git a/script/c511001127.lua b/script/c511001127.lua new file mode 100644 index 00000000..477bb416 --- /dev/null +++ b/script/c511001127.lua @@ -0,0 +1,34 @@ +--Red Process - Rubedo +function c511001127.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001127.cost) + e1:SetTarget(c511001127.target) + e1:SetOperation(c511001127.activate) + c:RegisterEffect(e1) +end +function c511001127.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,80887952) end + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,80887952) + Duel.Release(g,REASON_COST) +end +function c511001127.filter(c,e,tp) + return c:IsCode(17286057) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511001127.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001127.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001127.activate(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,c511001127.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + g:GetFirst():CompleteProcedure() + end +end diff --git a/script/c511001129.lua b/script/c511001129.lua new file mode 100644 index 00000000..9ff8629a --- /dev/null +++ b/script/c511001129.lua @@ -0,0 +1,46 @@ +--Crystal Pair +function c511001129.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001129.condition) + e1:SetTarget(c511001129.target) + e1:SetOperation(c511001129.activate) + c:RegisterEffect(e1) +end +function c511001129.cfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x1034) +end +function c511001129.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001129.cfilter,tp,LOCATION_SZONE,0,2,nil) +end +function c511001129.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,1,nil,0x1034) end +end +function c511001129.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_DECK,0,1,1,nil,0x1034) + if g:GetCount()>0 then + local tc=g:GetFirst() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(tc) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + tc:RegisterEffect(e1) + Duel.RaiseEvent(tc,47408488,e,0,tp,0,0) + end +end diff --git a/script/c511001130.lua b/script/c511001130.lua new file mode 100644 index 00000000..c4b987af --- /dev/null +++ b/script/c511001130.lua @@ -0,0 +1,72 @@ +--Necromancy +function c511001130.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001130.target) + e1:SetOperation(c511001130.activate) + c:RegisterEffect(e1) +end +function c511001130.filter1(c,e,tp) + return c:IsType(TYPE_MONSTER) +end +function c511001130.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==1-tp and chkc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>0 and Duel.IsExistingTarget(c511001130.filter1,tp,0,LOCATION_GRAVE,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,nil,1,tp,0) +end +function c511001130.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local gct=Duel.GetMatchingGroupCount(Card.IsType,tp,0,LOCATION_GRAVE,nil,TYPE_MONSTER) + if gct>=4 then + local g=Duel.GetMatchingGroup(c511001130.filter1,tp,0,LOCATION_GRAVE,nil):RandomSelect(tp,4) + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + tc:RegisterFlagEffect(511001130,RESET_EVENT+0x17a0000,0,1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + else + local g=Duel.GetMatchingGroup(c511001130.filter1,tp,0,LOCATION_GRAVE,nil):RandomSelect(tp,gct) + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + tc:RegisterFlagEffect(511001130,RESET_EVENT+0x17a0000,0,1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001130.drcon) + e2:SetOperation(c511001130.operation) + Duel.RegisterEffect(e2,tp) +end +function c511001130.drfilter(c,tp) + return c:GetFlagEffect(511001130)~=0 and c:GetOwner()==tp and c:IsReason(REASON_DESTROY) +end +function c511001130.drcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001130.drfilter,1,nil,1-tp) +end +function c511001130.operation(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:GetCount(c511001130.drfilter,nil,tp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + local sc=g:GetFirst() + while sc do + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetValue(-(ct*600)) + sc:RegisterEffect(e3) + sc=g:GetNext() + end +end diff --git a/script/c511001131.lua b/script/c511001131.lua new file mode 100644 index 00000000..cf1205f8 --- /dev/null +++ b/script/c511001131.lua @@ -0,0 +1,69 @@ +--Clone Dragon +function c511001131.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511001131.condition) + e1:SetTarget(c511001131.target) + e1:SetOperation(c511001131.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + --attack cost + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_ATTACK_COST) + e4:SetCost(c511001131.atcost) + e4:SetOperation(c511001131.atop) + c:RegisterEffect(e4) +end +function c511001131.atcost(e,c,tp) + return Duel.CheckLPCost(tp,1000) +end +function c511001131.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,1000) +end +function c511001131.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(tp) and eg:GetCount()==1 +end +function c511001131.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=eg:GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001131.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=eg:GetFirst() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if c:IsRelateToEffect(e) and Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then + if ec:IsRelateToEffect(e) and ec:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(ec:GetAttack()) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(ec:GetDefense()) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CHANGE_CODE) + e3:SetValue(ec:GetCode()) + e3:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e3) + end + Duel.SpecialSummonComplete() + end +end + \ No newline at end of file diff --git a/script/c511001132.lua b/script/c511001132.lua new file mode 100644 index 00000000..5e9f1e95 --- /dev/null +++ b/script/c511001132.lua @@ -0,0 +1,110 @@ +--Mirage Ruler +function c511001132.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001132.condition) + c:RegisterEffect(e1) + --Special Summon destroyed monsters + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(27769400,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_BATTLE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001132.descon) + e2:SetCost(c511001132.descost) + e2:SetTarget(c511001132.sptg) + e2:SetOperation(c511001132.spop) + c:RegisterEffect(e2) + if not c511001132.global_check then + c511001132.global_check=true + c511001132[0]=0 + c511001132[1]=0 + c511001132[2]=Group.CreateGroup() + c511001132[2]:KeepAlive() + c511001132[3]=0 + c511001132[4]=0 + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + ge1:SetProperty(EFFECT_FLAG_REPEAT) + ge1:SetCountLimit(1) + ge1:SetOperation(c511001132.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_MAIN2) + ge2:SetProperty(EFFECT_FLAG_REPEAT) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001132.clear) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.GlobalEffect() + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + ge3:SetOperation(c511001132.checkop1) + Duel.RegisterEffect(ge3,0) + local ge4=Effect.GlobalEffect() + ge4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge4:SetCode(EVENT_DESTROYED) + ge4:SetOperation(c511001132.checkop2) + Duel.RegisterEffect(ge4,0) + end +end +function c511001132.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001132.descon(e,tp,eg,ep,ev,re,r,rp) + return c511001132[4]>0 and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511001132.checkop(e,tp,eg,ep,ev,re,r,rp) + c511001132[0]=c511001132[0]+Duel.GetLP(tp) +end +function c511001132.clear(e,tp,eg,ep,ev,re,r,rp) + c511001132[0]=0 + c511001132[4]=0 +end +function c511001132.checkop1(e,tp,eg,ep,ev,re,r,rp) + c511001132[2]:Clear() + c511001132[2]:Merge(Duel.GetFieldGroup(tp,LOCATION_MZONE,0)) + c511001132[3]=c511001132[2]:GetCount() +end +function c511001132.checkop2(e,tp,eg,ep,ev,re,r,rp) + if c511001132[3]==0 then return end + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 then + c511001132[4]=c511001132[4]+1 + end +end +function c511001132.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001132.filter(c,tid,e,tp) + return c:GetTurnID()==tid and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE)and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001132.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001132.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001132.filter,tp,LOCATION_GRAVE,0,1,nil,tid,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001132.spop(e,tp,eg,ep,ev,re,r,rp) + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft1==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001132.filter,tp,LOCATION_GRAVE,0,ft1,ft1,nil,Duel.GetTurnCount(),e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,tc:GetPreviousPosition()) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + Duel.SetLP(tp,c511001132[0],REASON_EFFECT) + Duel.PayLPCost(tp,1000) + end +end diff --git a/script/c511001133.lua b/script/c511001133.lua new file mode 100644 index 00000000..97083ed3 --- /dev/null +++ b/script/c511001133.lua @@ -0,0 +1,67 @@ +--Mischief of the Time Goddess +function c511001133.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001133.activate) + c:RegisterEffect(e1) +end +function c511001133.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_SKIP_TURN) + e1:SetTargetRange(0,1) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetCode(EFFECT_SKIP_M2) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY then + e2:SetCondition(c511001133.skipcon) + e2:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + else + e2:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + end + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_EP) + Duel.RegisterEffect(e3,tp) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BP) + Duel.RegisterEffect(e4,tp) + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,0) + e5:SetCode(EFFECT_SKIP_DP) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_BATTLE then + e5:SetCondition(c511001133.skipcon) + e5:SetLabel(Duel.GetTurnCount()) + e5:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_SELF_TURN,2) + else + e5:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_SELF_TURN) + end + Duel.RegisterEffect(e5,tp) + local e6=e5:Clone() + e6:SetCode(EFFECT_SKIP_SP) + Duel.RegisterEffect(e6,tp) + local e7=e6:Clone() + e7:SetCode(EFFECT_SKIP_M1) + Duel.RegisterEffect(e7,tp) + local e8=e7:Clone() + e8:SetCode(EFFECT_CANNOT_EP) + e8:SetTargetRange(1,0) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_MAIN1 then + e8:SetReset(RESET_PHASE+PHASE_MAIN1,2) + else + e8:SetReset(RESET_PHASE+PHASE_MAIN1) + end + Duel.RegisterEffect(e8,tp) +end +function c511001133.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c511001134.lua b/script/c511001134.lua new file mode 100644 index 00000000..b862fe56 --- /dev/null +++ b/script/c511001134.lua @@ -0,0 +1,77 @@ +--Advanced Crystal Beast Emerald Turtle +function c511001134.initial_effect(c) + --Treated as "Crystal Beast Emerald Tortoise" + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_ADD_CODE) + e1:SetValue(68215963) + c:RegisterEffect(e1) + --Shell + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(68215963,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001134.shelltg) + e2:SetOperation(c511001134.shellop) + c:RegisterEffect(e2) + --Turn into Crystal + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(68215963,1)) + e3:SetCode(EFFECT_SEND_REPLACE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511001134.crystaltg) + e3:SetOperation(c511001134.crystalop) + c:RegisterEffect(e3) + --selfdes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetRange(LOCATION_ONFIELD) + e4:SetCondition(c511001134.descon) + c:RegisterEffect(e4) +end +function c511001134.descon(e) + return not Duel.IsEnvironment(12644061) +end +function c511001134.crystaltg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_DESTROY) end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return false end + return Duel.SelectEffectYesNo(tp,c) +end +function c511001134.crystalop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e1) + Duel.RaiseEvent(c,47408488,e,0,tp,0,0) +end +function c511001134.shellfilter(c) + return c:IsAttackPos() and c:GetAttackedCount()>0 +end +function c511001134.shelltg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001134.shellfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001134.shellfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,c511001134.shellfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511001134.shellop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + end +end \ No newline at end of file diff --git a/script/c511001135.lua b/script/c511001135.lua new file mode 100644 index 00000000..cce688b8 --- /dev/null +++ b/script/c511001135.lua @@ -0,0 +1,66 @@ +--Advanced Crystal Beast Amber Mammoth +function c511001135.initial_effect(c) + --Treated as "Crystal Beast Amber Mammoth" + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_ADD_CODE) + e1:SetValue(69937550) + c:RegisterEffect(e1) + --Protect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(69937550,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511001135.protectcon) + e2:SetOperation(c511001135.protectop) + c:RegisterEffect(e2) + --selfdes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetRange(LOCATION_ONFIELD) + e3:SetCondition(c511001135.descon) + c:RegisterEffect(e3) + --Turn into Crystal + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(69937550,1)) + e4:SetCode(EFFECT_SEND_REPLACE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c511001135.crystaltg) + e4:SetOperation(c511001135.crystalop) + c:RegisterEffect(e4) +end +function c511001135.descon(e) + return not Duel.IsEnvironment(12644061) +end +function c511001135.crystaltg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_DESTROY) end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return false end + return Duel.SelectEffectYesNo(tp,c) +end +function c511001135.crystalop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e1) + Duel.RaiseEvent(c,47408488,e,0,tp,0,0) +end +function c511001135.protectcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return r~=REASON_REPLACE and c~=bt and bt:IsFaceup() and bt:IsSetCard(0x1034) and bt:GetControler()==c:GetControler() +end +function c511001135.protectop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeAttackTarget(e:GetHandler()) +end diff --git a/script/c511001136.lua b/script/c511001136.lua new file mode 100644 index 00000000..5a93a1c9 --- /dev/null +++ b/script/c511001136.lua @@ -0,0 +1,32 @@ +--コピーキャット +function c511001136.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001136.cost) + e1:SetTarget(c511001136.target) + e1:SetOperation(c511001136.activate) + c:RegisterEffect(e1) +end +function c511001136.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGraveAsCost() +end +function c511001136.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_DECK,0,5,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,LOCATION_DECK,0,5,5,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001136.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(Card.IsExistingMatchingCard,tp,0,LOCATION_GRAVE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c511001136.activate(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.SelectMatchingCard(tp,c511001136.tgfilter,tp,0,LOCATION_GRAVE,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001137.lua b/script/c511001137.lua new file mode 100644 index 00000000..5bb65e45 --- /dev/null +++ b/script/c511001137.lua @@ -0,0 +1,71 @@ +--サイレント・ソードマン LV0 +function c511001137.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001137,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCondition(c511001137.atkcon) + e1:SetOperation(c511001137.atkop) + c:RegisterEffect(e1) + --change name + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetValue(c511001137.val) + c:RegisterEffect(e2) +end +c511001137.lvupcount=1 +c511001137.lvup={511001846} +function c511001137.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ect=e:GetHandler():GetEffectCount(511001137) + return tp==Duel.GetTurnPlayer() and 15-ect>0 +end +function c511001137.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c:GetBaseAttack()+500) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(511001137) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + if e:GetHandler():GetEffectCount(511001137)==4 and Duel.SendtoGrave(c,REASON_EFFECT)>0 then + local token=Duel.CreateToken(tp,511001846) + Duel.MoveToField(token,tp,tp,LOCATION_MZONE,c:GetPreviousPosition(),true) + token:SetStatus(STATUS_PROC_COMPLETE,true) + token:SetStatus(STATUS_SPSUMMON_TURN,true) + end +end +function c511001137.val(e,c) + local ect=e:GetHandler():GetEffectCount(511001137) + if ect>0 and ect<3 then + return 511001843+ect + elseif ect==3 then + return 1995985 + elseif ect==4 then + return 511001846 + elseif ect==5 then + return 74388798 + elseif ect==6 then + return 511001847 + elseif ect==7 then + return 37267041 + elseif ect>7 then + return 511001840+ect + else + return 511001137 + end +end diff --git a/script/c511001138.lua b/script/c511001138.lua new file mode 100644 index 00000000..7f72f78c --- /dev/null +++ b/script/c511001138.lua @@ -0,0 +1,34 @@ +--Yellow Process - Kitolenics +function c511001138.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001138.cost) + e1:SetTarget(c511001138.target) + e1:SetOperation(c511001138.activate) + c:RegisterEffect(e1) +end +function c511001138.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,54493213) end + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,54493213) + Duel.Release(g,REASON_COST) +end +function c511001138.filter(c,e,tp) + return c:IsCode(80887952) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511001138.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001138.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001138.activate(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,c511001138.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + g:GetFirst():CompleteProcedure() + end +end diff --git a/script/c511001139.lua b/script/c511001139.lua new file mode 100644 index 00000000..59d1d597 --- /dev/null +++ b/script/c511001139.lua @@ -0,0 +1,126 @@ +--Rainbow Dark Dragon +function c511001139.initial_effect(c) + c:EnableReviveLimit() + --Rainbow Summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001139.spcon) + c:RegisterEffect(e1) + --Cannot be Special Summon + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e2) + --Rainbow Dark Overdrive + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetDescription(aux.Stringid(511001139,0)) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetHintTiming(TIMING_DAMAGE_STEP) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511001139.overdrivecon) + e4:SetCost(c511001139.overdrivecost) + e4:SetOperation(c511001139.overdriveop) + c:RegisterEffect(e4) + --Crystal Protection + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetDescription(aux.Stringid(511001139,1)) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_DESTROY_REPLACE) + e5:SetCondition(c511001139.protectioncon) + e5:SetTarget(c511001139.protectiontg) + e5:SetOperation(c511001139.protectionop) + c:RegisterEffect(e5) + --banish self + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetProperty(EFFECT_FLAG_DELAY) + e6:SetCode(EVENT_REMOVE) + e6:SetRange(LOCATION_MZONE) + e6:SetOperation(c511001139.banop) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_ADJUST) + e7:SetRange(LOCATION_MZONE) + e7:SetOperation(c511001139.banop) + c:RegisterEffect(e7) + if not c511001139.global_check then + c511001139.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511001139) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511001139) + Duel.RegisterEffect(ge2,0) + end +end +function c511001139.rainbowfilter(c) + return c:IsSetCard(0x5034) and (not c:IsOnField() or c:IsFaceup()) +end +function c511001139.spcon(e,c) + if c==nil then return true end + if Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)<=0 then return false end + local g=Duel.GetMatchingGroup(c511001139.rainbowfilter,c:GetControler(),LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) + local ct=g:GetClassCount(Card.GetCode) + return ct>6 +end +function c511001139.overdrivecon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(511001139)~=0 then return false end + local phase=Duel.GetCurrentPhase() + return phase~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001139.overdrivefilter(c) + return c:IsFaceup() and c:IsSetCard(0x5034) and c:IsAbleToGraveAsCost() +end +function c511001139.overdrivecost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001139.overdrivefilter,tp,LOCATION_ONFIELD,0,1,nil) end + local g=Duel.GetMatchingGroup(c511001139.overdrivefilter,tp,LOCATION_ONFIELD,0,nil) + Duel.SendtoGrave(g,REASON_COST) + e:SetLabel(g:GetCount()) +end +function c511001139.overdriveop(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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()*1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c511001139.protectioncon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511001139)==0 +end +function c511001139.protectionfilter(c) + return c:IsSetCard(0x1034) and c:IsAbleToGraveAsCost() +end +function c511001139.protectiontg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001139.protectionfilter,tp,LOCATION_SZONE,0,1,nil) end + return Duel.SelectYesNo(tp,aux.Stringid(511001139,1)) +end +function c511001139.protectionop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,c511001139.protectionfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_EFFECT) +end +function c511001139.banop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001139.rainbowfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) + local ct=g:GetClassCount(Card.GetCode) + if ct<7 then + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511001140.lua b/script/c511001140.lua new file mode 100644 index 00000000..80f1e9c5 --- /dev/null +++ b/script/c511001140.lua @@ -0,0 +1,34 @@ +--Attack Guidance Armor +function c511001140.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001140.condition) + e1:SetTarget(c511001140.target) + e1:SetOperation(c511001140.activate) + c:RegisterEffect(e1) +end +function c511001140.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001140.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDefensePos,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end +end +function c511001140.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local g=Duel.SelectMatchingCard(tp,Card.IsDefensePos,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + local tc=g:GetFirst() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(600) + tc:RegisterEffect(e1) + if a:IsAttackable() and not a:IsImmuneToEffect(e) and not tc:IsImmuneToEffect(e) then + Duel.CalculateDamage(a,tc) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end + end +end diff --git a/script/c511001141.lua b/script/c511001141.lua new file mode 100644 index 00000000..f560b1b8 --- /dev/null +++ b/script/c511001141.lua @@ -0,0 +1,66 @@ +--Silent Magician LV0 +function c511001141.initial_effect(c) + --Update ATK and Level + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_DRAW) + e1:SetCondition(c511001141.rcon) + e1:SetOperation(c511001141.rop) + c:RegisterEffect(e1) + --change name + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetValue(c511001141.val) + c:RegisterEffect(e2) +end +function c511001141.rcon(e,tp,eg,ep,ev,re,r,rp) + local ect=e:GetHandler():GetEffectCount(511001141) + return ep~=tp and 15-ect>0 +end +function c511001141.rop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=eg:FilterCount(Card.IsControler,nil,1-tp) + local ect=c:GetEffectCount(511001141) + if ect>=15 then return end + if 15-ect0 and ect<4 then + return 511001830+ect + elseif ect==4 then + return 73665146 + elseif ect>4 and ect<8 then + return 511001829+ect + elseif ect==8 then + return 72443568 + elseif ect>8 then + return 511001828+ect + else + return 511001141 + end +end diff --git a/script/c511001142.lua b/script/c511001142.lua new file mode 100644 index 00000000..e5797df2 --- /dev/null +++ b/script/c511001142.lua @@ -0,0 +1,25 @@ +--Roll of Fate +function c511001142.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DICE+CATEGORY_DRAW+CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001142.target) + e1:SetOperation(c511001142.operation) + c:RegisterEffect(e1) +end +function c511001142.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetDecktopGroup(tp,1) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1,6) and Duel.IsPlayerCanDiscardDeck(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1) +end +function c511001142.operation(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.TossDice(tp,1) + Duel.Draw(tp,ct,REASON_EFFECT) + Duel.BreakEffect() + Duel.DisableShuffleCheck() + Duel.DiscardDeck(tp,ct,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511001143.lua b/script/c511001143.lua new file mode 100644 index 00000000..c17370b2 --- /dev/null +++ b/script/c511001143.lua @@ -0,0 +1,30 @@ +--Power Balance +function c511001143.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COIN+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001143.condition) + e1:SetTarget(c511001143.target) + e1:SetOperation(c511001143.activate) + c:RegisterEffect(e1) +end +function c511001143.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)% 2 == 0) and tp~=Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 +end +function c511001143.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,tp,0,1) +end +function c511001143.activate(e,tp,eg,ep,ev,re,r,rp) + local h1=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + local g=Duel.GetFieldGroup(ep,LOCATION_HAND,0,nil) + if g:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_DISCARD) + local sg=g:Select(1-tp,h1/2,h1/2,nil) + Duel.SendtoGrave(sg,REASON_DISCARD+REASON_EFFECT) + Duel.BreakEffect() + Duel.Draw(tp,h1/2,REASON_EFFECT) +end diff --git a/script/c511001144.lua b/script/c511001144.lua new file mode 100644 index 00000000..303a18ee --- /dev/null +++ b/script/c511001144.lua @@ -0,0 +1,71 @@ +--Disgraceful Charity +function c511001144.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c511001144.condition) + e1:SetTarget(c511001144.target) + e1:SetOperation(c511001144.activate) + c:RegisterEffect(e1) + if not c511001144.global_check then + c511001144.global_check=true + c511001144[0]=false + c511001144[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DISCARD) + ge1:SetOperation(c511001144.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c511001144.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001144.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local re=tc:GetReasonEffect() + if re==nil then return end + while tc do + if tc:IsLocation(LOCATION_GRAVE) and tc:IsReason(REASON_DISCARD) and re:IsActiveType(TYPE_SPELL) then + c511001144[tc:GetControler()]=true + end + tc=eg:GetNext() + end +end +function c511001144.clear(e,tp,eg,ep,ev,re,r,rp) + c511001144[0]=false + c511001144[1]=false +end +function c511001144.filter(c,id,e,tp) + local re=c:GetReasonEffect() + return c:IsReason(REASON_DISCARD) and c:GetTurnID()==id and c:IsAbleToHand() and re:IsActiveType(TYPE_SPELL) +end +function c511001144.condition(e,tp,eg,ep,ev,re,r,rp) + return c511001144[tp] and Duel.GetFlagEffect(tp,511001144)==0 +end +function c511001144.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001144.filter,tp,LOCATION_GRAVE,0,1,nil,Duel.GetTurnCount(),e,tp) + and Duel.IsExistingMatchingCard(c511001144.filter,tp,0,LOCATION_GRAVE,1,nil,Duel.GetTurnCount(),e,tp) + or Duel.IsExistingMatchingCard(c511001144.filter,tp,LOCATION_GRAVE,0,1,nil,Duel.GetTurnCount(),e,tp) + or Duel.IsExistingMatchingCard(c511001144.filter,tp,0,LOCATION_GRAVE,1,nil,Duel.GetTurnCount(),e,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,1-tp,LOCATION_GRAVE) + Duel.RegisterFlagEffect(tp,511001144,0,0,1) +end +function c511001144.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOHAND) + local g=Duel.SelectMatchingCard(tp,c511001144.filter,tp,LOCATION_GRAVE,0,1,999999,nil,Duel.GetTurnCount(),e,tp) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOHAND) + local g2=Duel.SelectMatchingCard(1-tp,c511001144.filter,1-tp,LOCATION_GRAVE,0,1,999999,nil,Duel.GetTurnCount(),e,1-tp) + if g2:GetCount()>0 then + Duel.SendtoHand(g2,nil,REASON_EFFECT) + end +end diff --git a/script/c511001145.lua b/script/c511001145.lua new file mode 100644 index 00000000..35f5a8dd --- /dev/null +++ b/script/c511001145.lua @@ -0,0 +1,102 @@ +--Spell Textbook +function c511001145.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001145.cost) + e1:SetTarget(c511001145.target) + e1:SetOperation(c511001145.activate) + c:RegisterEffect(e1) + if not c511001145.global_check then + c511001145.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511001145.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511001145.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511001145.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + return g:GetCount()==0 or g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c511001145.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001145.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.ShuffleDeck(p) + Duel.BreakEffect() + local g=Duel.GetDecktopGroup(p,1) + local tc=g:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + Duel.ConfirmCards(1-p,tc) + Duel.ShuffleHand(p) + if (Duel.GetLocationCount(tp,LOCATION_SZONE)>0 or tc:IsType(TYPE_FIELD)) and tc:IsType(TYPE_SPELL) + and tc:CheckActivateEffect(false,false,false)~=nil then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 and not tc:IsHasEffect(EFFECT_REMAIN_FIELD) then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511001146.lua b/script/c511001146.lua new file mode 100644 index 00000000..bc84da19 --- /dev/null +++ b/script/c511001146.lua @@ -0,0 +1,85 @@ +--サイバー·ダーク·エッジ +function c511001146.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001146,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001146.eqtg) + e1:SetOperation(c511001146.eqop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DAMAGE_CALCULATING) + e3:SetCondition(c511001146.atkcon) + e3:SetOperation(c511001146.atkop) + c:RegisterEffect(e3) +end +function c511001146.filter(c) + return c:IsLevelBelow(4) and c:IsRace(RACE_DRAGON) +end +function c511001146.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511001146.filter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511001146.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511001146.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001146.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c511001146.repval) + tc:RegisterEffect(e3) + end +end +function c511001146.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001146.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c511001146.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 + and e:GetHandler():GetEffectCount(EFFECT_DIRECT_ATTACK)==1 +end +function c511001146.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(c:GetAttack()/2) + c:RegisterEffect(e1) +end diff --git a/script/c511001147.lua b/script/c511001147.lua new file mode 100644 index 00000000..d9ad4faa --- /dev/null +++ b/script/c511001147.lua @@ -0,0 +1,81 @@ +--Pumpking the King of Ghosts +function c511001147.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511001147.target) + e1:SetValue(c511001147.val1) + c:RegisterEffect(e1) + --defup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511001147.target) + e2:SetValue(c511001147.val2) + c:RegisterEffect(e2) + --10% increase each standby + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001147,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetProperty(EFFECT_FLAG_REPEAT) + e3:SetCondition(c511001147.atkcon) + e3:SetOperation(c511001147.atkop) + c:RegisterEffect(e3) +end +function c511001147.target(e,c) + return c:IsRace(RACE_ZOMBIE) and c~=e:GetHandler() +end +function c511001147.val1(e,c) + return c:GetBaseAttack()*0.1 +end +function c511001147.val2(e,c) + return c:GetBaseDefense()*0.1 +end +function c511001147.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511001147.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + for i=0,4 do + local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + if tc and tc:IsRace(RACE_ZOMBIE) and tc:IsFaceup() then + 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:SetValue(tc:GetBaseAttack()*0.1) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(tc:GetBaseDefense()*0.1) + tc:RegisterEffect(e2,true) + end + end + for i=0,4 do + local tc=Duel.GetFieldCard(1-tp,LOCATION_MZONE,i) + if tc and tc:IsRace(RACE_ZOMBIE) and tc:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_OWNER_RELATE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(tc:GetBaseAttack()*0.1) + tc:RegisterEffect(e2,true) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(tc:GetBaseDefense()*0.1) + tc:RegisterEffect(e3,true) + end + end +end diff --git a/script/c511001148.lua b/script/c511001148.lua new file mode 100644 index 00000000..29dcd0d2 --- /dev/null +++ b/script/c511001148.lua @@ -0,0 +1,63 @@ +--Advanced Crystal Beast Topaz Tiger +function c511001148.initial_effect(c) + --Treated as "Crystal Beast Topaz Tiger" + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_ADD_CODE) + e1:SetValue(95600067) + c:RegisterEffect(e1) + --Tiger's Fury + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511001148.furycon) + e2:SetValue(400) + c:RegisterEffect(e2) + --Turn into Crystal + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95600067,0)) + e3:SetCode(EFFECT_SEND_REPLACE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511001148.crystaltg) + e3:SetOperation(c511001148.crystalop) + c:RegisterEffect(e3) + --selfdes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetRange(LOCATION_ONFIELD) + e4:SetCondition(c511001148.descon) + c:RegisterEffect(e4) +end +function c511001148.descon(e) + return not Duel.IsEnvironment(12644061) +end +function c511001148.crystaltg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_DESTROY) end + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return false end + return Duel.SelectEffectYesNo(tp,c) +end +function c511001148.crystalop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e1) + Duel.RaiseEvent(c,47408488,e,0,tp,0,0) +end +function c511001148.furycon(e) + local phase=Duel.GetCurrentPhase() + return (phase==PHASE_DAMAGE or phase==PHASE_DAMAGE_CAL) + and Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget()~=nil +end diff --git a/script/c511001149.lua b/script/c511001149.lua new file mode 100644 index 00000000..26f1cf25 --- /dev/null +++ b/script/c511001149.lua @@ -0,0 +1,45 @@ +--Card of Demise +function c511001149.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001149.target) + e1:SetOperation(c511001149.operation) + c:RegisterEffect(e1) +end +function c511001149.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + if chk==0 then return ct<5 and Duel.IsPlayerCanDraw(tp,5-ct) end + e:GetHandler():SetTurnCounter(0) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(5-ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,5-ct) +end +function c511001149.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ht=Duel.GetFieldGroupCount(p,LOCATION_HAND,0) + if ht<5 then Duel.Draw(p,5-ht,REASON_EFFECT) end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,5) + e1:SetOperation(c511001149.disop) + e1:SetLabel(0) + Duel.RegisterEffect(e1,p) +end +function c511001149.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + local c=e:GetHandler() + local ct=e:GetLabel() + ct=ct+1 + c:SetTurnCounter(ct) + e:SetLabel(ct) + if ct>=5 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + end +end diff --git a/script/c511001151.lua b/script/c511001151.lua new file mode 100644 index 00000000..4ad8ce35 --- /dev/null +++ b/script/c511001151.lua @@ -0,0 +1,41 @@ +--Shadow Balance +function c511001151.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511001151.condition) + e1:SetTarget(c511001151.target) + e1:SetOperation(c511001151.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511001151.filter(c,tp) + return c:GetSummonPlayer()==1-tp +end +function c511001151.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001151.filter,1,nil,tp) + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) +end +function c511001151.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)-Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,ct,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,ct,0,0) +end +function c511001151.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)-Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + if ct>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=g:Select(tp,ct,ct,nil) + Duel.Destroy(dg,REASON_EFFECT) + end +end diff --git a/script/c511001152.lua b/script/c511001152.lua new file mode 100644 index 00000000..b65d338f --- /dev/null +++ b/script/c511001152.lua @@ -0,0 +1,80 @@ +--Dice Dungeon +function c511001152.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c511001152.sdcon) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001152,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e3:SetCondition(c511001152.con) + e3:SetOperation(c511001152.op) + c:RegisterEffect(e3) +end +function c511001152.sdcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)==0 +end +function c511001152.con(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + return bc +end +function c511001152.op(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if at:IsControler(1-tp) then at,bc=bc,at end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local dice1=Duel.TossDice(tp,1) + local dice2=Duel.TossDice(1-tp,1) + if dice1==1 or dice1==5 or dice1==6 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + if dice1==1 then + e1:SetCode(EFFECT_UPDATE_ATTACK) + else + e1:SetCode(EFFECT_SET_BASE_ATTACK) + end + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + if dice1==1 then + e1:SetValue(1000) + elseif dice1==5 then + e1:SetValue(at:GetBaseAttack()/2) + else + e1:SetValue(at:GetBaseAttack()*2) + end + at:RegisterEffect(e1) + end + if dice2==1 or dice2==5 or dice2==6 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + if dice2==1 then + e2:SetCode(EFFECT_UPDATE_ATTACK) + else + e2:SetCode(EFFECT_SET_BASE_ATTACK) + end + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + if dice2==1 then + e2:SetValue(1000) + elseif dice2==5 then + e2:SetValue(bc:GetBaseAttack()/2) + else + e2:SetValue(bc:GetBaseAttack()*2) + end + bc:RegisterEffect(e2) + end + end +end diff --git a/script/c511001153.lua b/script/c511001153.lua new file mode 100644 index 00000000..c8b38059 --- /dev/null +++ b/script/c511001153.lua @@ -0,0 +1,44 @@ +--Banderillero Fiend +function c511001153.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c511001153.atklimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001153,0)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetTarget(c511001153.target) + e4:SetOperation(c511001153.operation) + c:RegisterEffect(e4) +end +function c511001153.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c511001153.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001153.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001154.lua b/script/c511001154.lua new file mode 100644 index 00000000..d54ac41e --- /dev/null +++ b/script/c511001154.lua @@ -0,0 +1,27 @@ +--Synchro Prominence +function c511001154.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_DRAW_PHASE) + e1:SetTarget(c511001154.target) + e1:SetOperation(c511001154.activate) + c:RegisterEffect(e1) +end +function c511001154.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511001154.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001154.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local dam=Duel.GetMatchingGroupCount(c511001154.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*1000 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511001154.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511001154.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*1000 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511001155.lua b/script/c511001155.lua new file mode 100644 index 00000000..82063428 --- /dev/null +++ b/script/c511001155.lua @@ -0,0 +1,65 @@ +--Burst Synchro Summon +function c511001155.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001155.condition) + e1:SetTarget(c511001155.target) + e1:SetOperation(c511001155.operation) + c:RegisterEffect(e1) +end +function c511001155.condition(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + e:SetLabel(cv) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + e:SetLabel(cv) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511001155.filter(c,e,tp,atk) + return c:IsCanBeSpecialSummoned(e,0,tp,true,false) and c:GetAttack()==atk and c:IsType(TYPE_SYNCHRO) +end +function c511001155.target(e,tp,eg,ep,ev,re,r,rp,chk) + local cid=e:GetLabel() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001155.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,cid) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001155.operation(e,tp,eg,ep,ev,re,r,rp) + local cid=e:GetLabel() + 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(c511001155.damcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001155.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,cid) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + end +end +function c511001155.damcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return 0 +end diff --git a/script/c511001156.lua b/script/c511001156.lua new file mode 100644 index 00000000..7a893f41 --- /dev/null +++ b/script/c511001156.lua @@ -0,0 +1,37 @@ +--Meteor Wave +function c511001156.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001156.target) + e1:SetOperation(c511001156.activate) + c:RegisterEffect(e1) +end +function c511001156.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511001156.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001156.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001156.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001156.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001156.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(300) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001157.lua b/script/c511001157.lua new file mode 100644 index 00000000..92e77726 --- /dev/null +++ b/script/c511001157.lua @@ -0,0 +1,33 @@ +--Decisive Power of Absolute Destiny +function c511001157.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001157.target) + e1:SetOperation(c511001157.activate) + c:RegisterEffect(e1) +end +function c511001157.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001157.filter,tp,0,LOCATION_DECK,1,nil,e,tp) end +end +function c511001157.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001157.spfilter(c,e,tp,code) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsCode(code) +end +function c511001157.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,564) + local code=Duel.AnnounceCard(tp) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(1-tp,c511001157.spfilter,1-tp,LOCATION_DECK,0,1,1,nil,e,tp,code) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) + else + local dg=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + Duel.ConfirmCards(tp,dg) + Duel.ShuffleDeck(1-tp) + end +end diff --git a/script/c511001158.lua b/script/c511001158.lua new file mode 100644 index 00000000..a59315e4 --- /dev/null +++ b/script/c511001158.lua @@ -0,0 +1,48 @@ +--Necro Sacrifice +function c511001158.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001158.tg) + e1:SetOperation(c511001158.op) + c:RegisterEffect(e1) +end +function c511001158.filter(c,e,tp) + local mi,ma=c:GetTributeRequirement() + return c:IsLevelAbove(5) and ma>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>ma-1 + and Duel.IsExistingMatchingCard(c511001158.spfilter,tp,LOCATION_GRAVE,0,ma,nil,e,tp) +end +function c511001158.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001158.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_HAND and chkc:GetControler()==tp and c511001158.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001158.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(89252153,0)) + local g=Duel.SelectTarget(tp,c511001158.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,nil) +end +function c511001158.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local mi,ma=tc:GetTributeRequirement() + if tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001158.spfilter,tp,LOCATION_GRAVE,0,ma,ma,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,1-tp,1-tp,false,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511001158.ntcon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511001158.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511001159.lua b/script/c511001159.lua new file mode 100644 index 00000000..6ead85e2 --- /dev/null +++ b/script/c511001159.lua @@ -0,0 +1,62 @@ +--Vision +function c511001159.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001159.target) + e1:SetOperation(c511001159.activate) + c:RegisterEffect(e1) +end +function c511001159.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001159.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.ConfirmCards(1-tp,tc) + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511001159.effcon) + e1:SetOperation(c511001159.effop) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e1:SetLabel(tc:GetCode()) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(e3,tp) + local e4=e2:Clone() + e4:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e4:SetCondition(c511001159.effcon2) + e4:SetCode(EVENT_CHAIN_SOLVED) + Duel.RegisterEffect(e4,tp) + end +end +function c511001159.filter(c,tc,code) + return c==tc or c:IsCode(code) +end +function c511001159.effcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabel()~=0 and eg:IsExists(c511001159.filter,1,nil,e:GetLabelObject(),e:GetLabel()) +end +function c511001159.effcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabel()~=0 and re and (re:GetHandler()==e:GetLabelObject() or re:GetHandler():IsCode(e:GetLabel())) +end +function c511001159.effop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,1000,REASON_EFFECT) +end diff --git a/script/c511001160.lua b/script/c511001160.lua new file mode 100644 index 00000000..6857ed5b --- /dev/null +++ b/script/c511001160.lua @@ -0,0 +1,82 @@ +--Performapal Camelose +function c511001160.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001160,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c511001160.prcon) + e2:SetTarget(c511001160.prtg) + e2:SetOperation(c511001160.prop) + c:RegisterEffect(e2) + --lose atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001160,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetTarget(c511001160.atktg) + e3:SetOperation(c511001160.atkop) + c:RegisterEffect(e3) +end +function c511001160.prcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_BATTLE and Duel.GetCurrentChain()==0 +end +function c511001160.prtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001160.prop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_CONFIRM) + e2:SetOperation(c511001160.op) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e2) + end +end +function c511001160.op(e,tp,eg,ep,ev,re,r,rp) + local t=Duel.GetAttackTarget() + if t~=nil then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + t:RegisterEffect(e1) + end +end +function c511001160.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetHandler():GetReasonCard() + if chkc then return chkc==tc end + if chk==0 then return tc:IsFaceup() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) +end +function c511001160.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001161.lua b/script/c511001161.lua new file mode 100644 index 00000000..14f5597d --- /dev/null +++ b/script/c511001161.lua @@ -0,0 +1,43 @@ +--Guard Off +function c511001161.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511001161.condition) + e1:SetTarget(c511001161.target) + e1:SetOperation(c511001161.activate) + c:RegisterEffect(e1) +end +function c511001161.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001161.filter(c) + return c:IsFaceup() and c:GetDefense()>0 +end +function c511001161.damfilter(c) + return c:IsFaceup() and c:GetDefense()==0 +end +function c511001161.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001161.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511001161.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001161.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511001161.damfilter,tp,LOCATION_MZONE,0,nil)*400 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511001162.lua b/script/c511001162.lua new file mode 100644 index 00000000..a07e17f1 --- /dev/null +++ b/script/c511001162.lua @@ -0,0 +1,34 @@ +--Trick Buster +function c511001162.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001162.condition) + e1:SetTarget(c511001162.target) + e1:SetOperation(c511001162.activate) + c:RegisterEffect(e1) +end +function c511001162.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==nil +end +function c511001162.desfilter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsDestructable() +end +function c511001162.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511001162.desfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + if g:GetCount()~=0 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*300) + end +end +function c511001162.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001162.desfilter,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct~=0 then + Duel.BreakEffect() + Duel.Damage(1-tp,ct*300,REASON_EFFECT) + end +end diff --git a/script/c511001163.lua b/script/c511001163.lua new file mode 100644 index 00000000..098b2c7c --- /dev/null +++ b/script/c511001163.lua @@ -0,0 +1,29 @@ +--Shark Spark +function c511001163.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001163.negcon) + e1:SetTarget(c511001163.negtg) + e1:SetOperation(c511001163.negop) + c:RegisterEffect(e1) +end +function c511001163.negcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP) and Duel.IsChainNegatable(ev) +end +function c511001163.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001163.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511001164.lua b/script/c511001164.lua new file mode 100644 index 00000000..df392a54 --- /dev/null +++ b/script/c511001164.lua @@ -0,0 +1,32 @@ +--Fish Spawn +function c511001164.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001164.cost) + e1:SetTarget(c511001164.target) + e1:SetOperation(c511001164.activate) + c:RegisterEffect(e1) +end +function c511001164.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 c511001164.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001165,0,0x4011,0,0,1,RACE_FISH,ATTRIBUTE_WATER) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511001164.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001165,0,0x4011,0,0,1,RACE_FISH,ATTRIBUTE_WATER) then + for i=1,2 do + local token=Duel.CreateToken(tp,511001165) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001166.lua b/script/c511001166.lua new file mode 100644 index 00000000..4faf67f6 --- /dev/null +++ b/script/c511001166.lua @@ -0,0 +1,30 @@ +--Sea Kings Verdict +function c511001166.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001166.condition) + e1:SetTarget(c511001166.target) + e1:SetOperation(c511001166.activate) + c:RegisterEffect(e1) +end +function c511001166.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and tp~=ep and re:IsActiveType(TYPE_TRAP) + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511001166.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001166.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511001167.lua b/script/c511001167.lua new file mode 100644 index 00000000..e48bc2de --- /dev/null +++ b/script/c511001167.lua @@ -0,0 +1,84 @@ +--Overlay Connection +function c511001167.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001167.target) + e1:SetOperation(c511001167.activate) + c:RegisterEffect(e1) +end +function c511001167.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()==0 +end +function c511001167.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001167.filter(chkc) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c511001167.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001167.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001167.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511001167.con) + e1:SetOperation(c511001167.op) + e1:SetReset(RESET_EVENT+0x1fa0000) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + end +end +function c511001167.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_COST) and re:IsHasType(0x7e0) and re:IsActiveType(TYPE_MONSTER) + and bit.band(c:GetPreviousLocation(),LOCATION_OVERLAY)~=0 +end +function c511001167.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + if tc==nil then return end + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001167,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCost(c511001167.atcost) + e1:SetCondition(c511001167.atcon) + e1:SetOperation(c511001167.atop) + e1:SetLabelObject(tc) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511001167.atcost(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 c511001167.atcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return tp==Duel.GetTurnPlayer() and tc:IsLocation(LOCATION_MZONE) and tc:IsFaceup() +end +function c511001167.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + if tc:IsFaceup() and tc:IsLocation(LOCATION_MZONE) and c:IsRelateToEffect(e) then + Duel.Overlay(tc,Group.FromCards(c)) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511001167.con) + e1:SetOperation(c511001167.op) + e1:SetReset(RESET_EVENT+0x1fa0000) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001168.lua b/script/c511001168.lua new file mode 100644 index 00000000..d63a2a7a --- /dev/null +++ b/script/c511001168.lua @@ -0,0 +1,43 @@ +--Edict of Atlantis +function c511001168.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001168.activate) + c:RegisterEffect(e1) +end +function c511001168.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_SUMMON_SUCCESS) + e1:SetOperation(c511001168.lvop) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(e3,tp) +end +function c511001168.filter(c) + return c:IsAttribute(ATTRIBUTE_WATER) and not c:IsType(TYPE_XYZ) +end +function c511001168.lvop(e,tp,eg,ep,ev,re,r,rp) + if not eg:IsExists(c511001168.filter,1,nil) then return end + local g=eg:Filter(c511001168.filter,nil) + local lv=Duel.AnnounceNumber(tp,0,1,2) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(lv) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end + diff --git a/script/c511001169.lua b/script/c511001169.lua new file mode 100644 index 00000000..68bbcc7c --- /dev/null +++ b/script/c511001169.lua @@ -0,0 +1,32 @@ +--Shark Lair +function c511001169.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001169.cost) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetTarget(c511001169.atktarget) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c511001169.cfilter(c) + return c:IsRace(RACE_FISH) and c:IsAbleToGraveAsCost() +end +function c511001169.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001169.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001169.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + local atk=g:GetFirst():GetAttack() + e:GetLabelObject():SetLabel(atk) +end +function c511001169.atktarget(e,c,atk) + return c:GetAttack()<=e:GetLabel() +end diff --git a/script/c511001170.lua b/script/c511001170.lua new file mode 100644 index 00000000..6f377195 --- /dev/null +++ b/script/c511001170.lua @@ -0,0 +1,29 @@ +--Plate Salvage +function c511001170.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001170.target) + e1:SetOperation(c511001170.activate) + c:RegisterEffect(e1) +end +function c511001170.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end +end +function c511001170.activate(e,tp,eg,ep,ev,re,r,rp) + --disable + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e1:SetTarget(c511001170.distarget) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE_EFFECT) + Duel.RegisterEffect(e2,tp) +end +function c511001170.distarget(e,c) + return c:IsType(TYPE_FIELD) +end diff --git a/script/c511001171.lua b/script/c511001171.lua new file mode 100644 index 00000000..b404ffd6 --- /dev/null +++ b/script/c511001171.lua @@ -0,0 +1,37 @@ +--Deep Sea Attack +function c511001171.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001171.cost) + e1:SetTarget(c511001171.target) + e1:SetOperation(c511001171.activate) + c:RegisterEffect(e1) +end +function c511001171.cfilter(c) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsAttackAbove(2000) and c:IsAbleToGraveAsCost() +end +function c511001171.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001171.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001171.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001171.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001171.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001172.lua b/script/c511001172.lua new file mode 100644 index 00000000..187c5cde --- /dev/null +++ b/script/c511001172.lua @@ -0,0 +1,31 @@ +--Underwater Snow Prison +function c511001172.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001172.target) + e1:SetOperation(c511001172.operation) + c:RegisterEffect(e1) +end +function c511001172.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + if g:GetFirst():IsAttribute(ATTRIBUTE_WATER) then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) + end +end +function c511001172.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) and tc:IsAttribute(ATTRIBUTE_WATER) then + Duel.BreakEffect() + Duel.Damage(tp,1000,REASON_EFFECT) + end + end +end diff --git a/script/c511001173.lua b/script/c511001173.lua new file mode 100644 index 00000000..1fda498c --- /dev/null +++ b/script/c511001173.lua @@ -0,0 +1,41 @@ +--Upswell +function c511001173.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001173.spcon) + e1:SetTarget(c511001173.target) + e1:SetOperation(c511001173.activate) + c:RegisterEffect(e1) +end +function c511001173.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==1-tp +end +function c511001173.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001173.cfilter,1,nil,tp) +end +function c511001173.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001173.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001173.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001173.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001173.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001173.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetBaseAttack()-1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001174.lua b/script/c511001174.lua new file mode 100644 index 00000000..d20bd628 --- /dev/null +++ b/script/c511001174.lua @@ -0,0 +1,75 @@ +--Break Stream +function c511001174.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001174.target) + e1:SetOperation(c511001174.activate) + c:RegisterEffect(e1) +end +function c511001174.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) 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 c511001174.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + --actlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetOperation(c511001174.atkop) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(1953925,0)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetCode(EVENT_BATTLE_DESTROYING) + e5:SetCondition(c511001174.descon) + e5:SetTarget(c511001174.destg) + e5:SetOperation(c511001174.desop) + e5:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e5) + end +end +function c511001174.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511001174.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511001174.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511001174.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c511001174.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511001174.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and c511001174.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001174.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511001174.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001175.lua b/script/c511001175.lua new file mode 100644 index 00000000..90692035 --- /dev/null +++ b/script/c511001175.lua @@ -0,0 +1,96 @@ +--Aqua Mirage +function c511001175.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --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(c511001175.target) + e1:SetOperation(c511001175.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(c511001175.eqlimit) + c:RegisterEffect(e2) + --xyz + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(511001175) + e4:SetRange(LOCATION_SZONE) + c:RegisterEffect(e4) + if not c511001175.global_check then + c511001175.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001175.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001175.eqlimit(e,c) + return c:IsAttribute(ATTRIBUTE_WATER) +end +function c511001175.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511001175.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001175.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001175.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001175.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001175.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 c511001175.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001176.lua b/script/c511001176.lua new file mode 100644 index 00000000..c194a0a1 --- /dev/null +++ b/script/c511001176.lua @@ -0,0 +1,38 @@ +--Cross Draw of Destiny +function c511001176.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001176.tg) + e1:SetOperation(c511001176.op) + c:RegisterEffect(e1) +end +function c511001176.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c511001176.op(e,tp,eg,ep,ev,re,r,rp) + local tc1=Duel.GetDecktopGroup(tp,1):GetFirst() + local tc2=Duel.GetDecktopGroup(1-tp,1):GetFirst() + if tc1 and tc2 then + Duel.Draw(tp,1,REASON_EFFECT) + Duel.Draw(1-tp,1,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc1) + Duel.ConfirmCards(tp,tc2) + if tc1:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.BreakEffect() + Duel.SpecialSummon(tc1,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + Duel.Recover(tp,tc1:GetAttack(),REASON_EFFECT) + else + Duel.ShuffleHand(tp) + end + if tc2:IsCanBeSpecialSummoned(e,0,1-tp,false,false) then + Duel.BreakEffect() + Duel.SpecialSummon(tc2,0,1-tp,tp,false,false,POS_FACEUP_DEFENSE) + Duel.Recover(1-tp,tc2:GetAttack(),REASON_EFFECT) + else + Duel.ShuffleHand(1-tp) + end + end +end diff --git a/script/c511001177.lua b/script/c511001177.lua new file mode 100644 index 00000000..6f9c4bf0 --- /dev/null +++ b/script/c511001177.lua @@ -0,0 +1,31 @@ +--Infinity Tooth +function c511001177.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DECKDES+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001177.target) + e1:SetOperation(c511001177.operation) + c:RegisterEffect(e1) +end +function c511001177.filter(c,tp) + local ct=c:GetOverlayCount() + return c:IsFaceup() and c:IsType(TYPE_XYZ) and ct>0 and Duel.IsPlayerCanDiscardDeck(tp,ct+1) +end +function c511001177.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001177.filter,tp,0,LOCATION_MZONE,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001177.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511001177.filter,tp,0,LOCATION_MZONE,1,1,nil,tp) + if g:GetCount()>0 then + Duel.HintSelection(g) + local ct=g:GetFirst():GetOverlayCount() + if Duel.DiscardDeck(tp,ct,REASON_EFFECT) then + Duel.Draw(tp,1,REASON_EFFECT) + end + end +end diff --git a/script/c511001178.lua b/script/c511001178.lua new file mode 100644 index 00000000..47a4410b --- /dev/null +++ b/script/c511001178.lua @@ -0,0 +1,35 @@ +--Rank-Up Rising +function c511001178.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511001178.condition) + e1:SetTarget(c511001178.target) + e1:SetOperation(c511001178.activate) + c:RegisterEffect(e1) +end +function c511001178.cfilter(c,tp) + return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp and c:IsPreviousPosition(POS_FACEUP) + and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511001178.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001178.cfilter,1,nil,tp) +end +function c511001178.filter(c) + return c:IsSetCard(0x95) and c:IsAbleToHand() +end +function c511001178.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001178.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001178.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001178.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001179.lua b/script/c511001179.lua new file mode 100644 index 00000000..962b170d --- /dev/null +++ b/script/c511001179.lua @@ -0,0 +1,47 @@ +--Depth Gardna +function c511001179.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001179.condition) + e1:SetTarget(c511001179.target) + e1:SetOperation(c511001179.activate) + c:RegisterEffect(e1) +end +function c511001179.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 and Duel.GetAttackTarget()==nil +end +function c511001179.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001179,0,0x21,-2,-2,5,RACE_FISH,ATTRIBUTE_WATER) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001179.activate(e,tp,eg,ep,ev,re,r,rp) + local e0=Effect.CreateEffect(e:GetHandler()) + e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e0:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e0:SetOperation(c511001179.damop) + e0:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e0,tp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001179,0,0x21,-2,-2,5,RACE_FISH,ATTRIBUTE_WATER) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) + Duel.SpecialSummon(c,1,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(Duel.GetBattleDamage(tp)) + e1:SetReset(RESET_EVENT+0xfe0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) +end +function c511001179.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511001180.lua b/script/c511001180.lua new file mode 100644 index 00000000..a614ace6 --- /dev/null +++ b/script/c511001180.lua @@ -0,0 +1,56 @@ +--The Greatest Duo of the Seven Emperors +function c511001180.initial_effect(c) +--Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511001180.atkcon) + e1:SetTarget(c511001180.tgtg) + e1:SetOperation(c511001180.tgop) + c:RegisterEffect(e1) +end +function c511001180.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local att=Duel.GetAttackTarget() + return ep==tp and + (a:IsSetCard(0x1048) or (att and att:IsSetCard(0x1048))) +end +function c511001180.tgfilter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001180.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,nil,20785975,e,tp) + and Duel.IsExistingMatchingCard(c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,nil,67173574,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511001180.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc1=Duel.SelectMatchingCard(tp,c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,1,nil,20785975,e,tp):GetFirst() + local tc2=Duel.SelectMatchingCard(tp,c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,1,nil,67173574,e,tp):GetFirst() + if tc1 and tc2 then + Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc1:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc1:RegisterEffect(e2,true) + Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e3,true) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e4,true) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001181.lua b/script/c511001181.lua new file mode 100644 index 00000000..0f51285b --- /dev/null +++ b/script/c511001181.lua @@ -0,0 +1,59 @@ +--Damage Rebound +function c511001181.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001181.condition) + e1:SetTarget(c511001181.target) + e1:SetOperation(c511001181.operation) + c:RegisterEffect(e1) +end +function c511001181.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) + if not ex then return false end + if cp~=PLAYER_ALL then return Duel.IsPlayerAffectedByEffect(cp,EFFECT_REVERSE_RECOVER) + else return Duel.IsPlayerAffectedByEffect(0,EFFECT_REVERSE_RECOVER) + or Duel.IsPlayerAffectedByEffect(1,EFFECT_REVERSE_RECOVER) + end +end +function c511001181.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511001181.filter,tp,0,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,0,0,0) +end +function c511001181.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,1) + e1:SetLabel(cid) + e1:SetValue(c511001181.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(1-tp,c511001181.filter,tp,0,LOCATION_ONFIELD,1,1,e:GetHandler()) + if g:GetCount()>0 then + Duel.HintSelection(g) + if Duel.SendtoDeck(g,nil,2,REASON_EFFECT) then + local tc=g:GetFirst() + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end +function c511001181.filter(c) + return c:IsFaceup() and c:IsAbleToDeck() +end +function c511001181.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end diff --git a/script/c511001182.lua b/script/c511001182.lua new file mode 100644 index 00000000..d2d646b8 --- /dev/null +++ b/script/c511001182.lua @@ -0,0 +1,55 @@ +--Neutrino Dowsing +function c511001182.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001182.con) + e1:SetCost(c511001182.cost) + e1:SetTarget(c511001182.target) + e1:SetOperation(c511001182.activate) + c:RegisterEffect(e1) +end +function c511001182.cfilter(c,tp) + return c:IsType(TYPE_XYZ) and c:IsControler(1-tp) +end +function c511001182.con(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001182.cfilter,1,nil,tp) +end +function c511001182.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Group.CreateGroup() + for i=0,4 do + local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + if tc and tc:IsFaceup() and tc:IsSetCard(0x107b) and tc:IsType(TYPE_XYZ) then + g:Merge(tc:GetOverlayGroup()) + end + end + if chk==0 then return g:GetCount()>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_COST) +end +function c511001182.filter(c) + return c:GetType()==TYPE_SPELL and c:IsAbleToGrave() and c:CheckActivateEffect(false,true,false)~=nil +end +function c511001182.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001182.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c511001182.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001182.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + local te,eg,ep,ev,re,r,rp=g:GetFirst():CheckActivateEffect(false,true,false) + e:SetLabelObject(te) + Duel.ClearTargetCard() + local tg=te:GetTarget() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end +end diff --git a/script/c511001183.lua b/script/c511001183.lua new file mode 100644 index 00000000..7268793c --- /dev/null +++ b/script/c511001183.lua @@ -0,0 +1,26 @@ +--Tachyon Refresh +function c511001183.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001183.target) + e1:SetOperation(c511001183.activate) + c:RegisterEffect(e1) +end +function c511001183.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:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511001183.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsControler(tp) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + Duel.BreakEffect() + Duel.ReturnToField(tc) + end +end diff --git a/script/c511001184.lua b/script/c511001184.lua new file mode 100644 index 00000000..43148d4c --- /dev/null +++ b/script/c511001184.lua @@ -0,0 +1,30 @@ +--ライトニング·ボルテックス +function c511001184.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001184.target) + e1:SetOperation(c511001184.activate) + c:RegisterEffect(e1) +end +function c511001184.filter(c) + return c:IsFaceup() and not c:IsAttribute(ATTRIBUTE_WATER) +end +function c511001184.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001184.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511001184.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001184.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetValue(ATTRIBUTE_WATER) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end +end diff --git a/script/c511001185.lua b/script/c511001185.lua new file mode 100644 index 00000000..d5303609 --- /dev/null +++ b/script/c511001185.lua @@ -0,0 +1,73 @@ +--ホーリーレイジ +function c511001185.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001185,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001185.target) + e1:SetOperation(c511001185.operation) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001185,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetRange(LOCATION_GRAVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c511001185.atkcon) + e2:SetCost(c511001185.atkcost) + e2:SetTarget(c511001185.atktg) + e2:SetOperation(c511001185.atkop) + c:RegisterEffect(e2) +end +function c511001185.desfilter(c) + return c:IsDestructable() and c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) +end +function c511001185.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001185.desfilter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(c511001185.desfilter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001185.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511001185.desfilter,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end +function c511001185.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetTurnID()~=Duel.GetTurnCount() +end +function c511001185.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511001185.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001185.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(2000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetOperation(c511001185.damop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c511001185.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(1-ep,ev,false) +end diff --git a/script/c511001186.lua b/script/c511001186.lua new file mode 100644 index 00000000..19d111d6 --- /dev/null +++ b/script/c511001186.lua @@ -0,0 +1,55 @@ +--ドン・サウザンドの契約 +function c511001186.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001186.cost) + e1:SetTarget(c511001186.target) + e1:SetOperation(c511001186.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DRAW) + e2:SetOperation(c511001186.cfop) + c:RegisterEffect(e2) +end +function c511001186.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(1-tp,2000) end + Duel.PayLPCost(1-tp,2000) +end +function c511001186.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c511001186.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Draw(tp,1,REASON_EFFECT) + Duel.Draw(1-tp,1,REASON_EFFECT) +end +function c511001186.filter(c) + return c:IsLocation(LOCATION_HAND) and not c:IsPublic() +end +function c511001186.cfop(e,tp,eg,ep,ev,re,r,rp) + local cg=eg:Filter(c511001186.filter,nil) + Duel.ConfirmCards(tp,cg) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleHand(1-tp) + local tc=cg:GetFirst() + while tc do + if tc:IsType(TYPE_SPELL) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tc:GetControler()) + end + tc=cg:GetNext() + end +end + diff --git a/script/c511001187.lua b/script/c511001187.lua new file mode 100644 index 00000000..8b1c6f99 --- /dev/null +++ b/script/c511001187.lua @@ -0,0 +1,65 @@ +--カオス狂宴 +function c511001187.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001187.exscon) + e1:SetCost(c511001187.cost) + e1:SetTarget(c511001187.target) + e1:SetOperation(c511001187.activate) + c:RegisterEffect(e1) +end +function c511001187.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1048) +end +function c511001187.exscon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001187.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001187.filter(c) + return c:IsCode(511001186) and c:IsAbleToGraveAsCost() +end +function c511001187.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001187.filter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001187.filter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001187.spfilter(c,e,tp) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,true,false) + and no and no>=101 and no<=107 and c:IsSetCard(0x1048) +end +function c511001187.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511001187.spfilter,tp,LOCATION_EXTRA,0,3,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_EXTRA) +end +function c511001187.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511001187.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()<3 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,3,3,nil) + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,SUMMON_TYPE_XYZ,tp,tp,true,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc:CompleteProcedure() + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001188.lua b/script/c511001188.lua new file mode 100644 index 00000000..98c39bbb --- /dev/null +++ b/script/c511001188.lua @@ -0,0 +1,138 @@ +--銀河再誕 +function c511001188.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001188.target) + e1:SetOperation(c511001188.operation) + c:RegisterEffect(e1) + --Des + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511001188.ccost) + c:RegisterEffect(e2) + if not c511001188.global_check then + c511001188.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001188.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001188.spfilter(c,e,tp) + return c:IsSetCard(0x7b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001188.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001188.spfilter(chkc,e,tp) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001188.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001188.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001188.eqlimit(e,c) + return e:GetLabelObject()==c +end +function c511001188.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + c:CancelToGrave() + Duel.Equip(tp,c,tc,true) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001188.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(tc:GetAttack()/2) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511001188.operation2) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + --xyz + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(511001175) + e5:SetRange(LOCATION_SZONE) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + end +end +function c511001188.operation2(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp then + e:GetHandler():GetEquipTarget():RegisterFlagEffect(511001187,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end + +function c511001188.ccost(e,tp) + if tp~=Duel.GetTurnPlayer() then return end + if e:GetHandler():GetEquipTarget():GetFlagEffect(511001187)==0 then + Duel.Destroy(e:GetHandler():GetEquipTarget(),REASON_EFFECT) + end +end +function c511001188.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001189.lua b/script/c511001189.lua new file mode 100644 index 00000000..12120a5c --- /dev/null +++ b/script/c511001189.lua @@ -0,0 +1,48 @@ +--カオス・テンペスト・ドロー +function c511001189.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001189.condition) + e1:SetTarget(c511001189.target) + e1:SetOperation(c511001189.activate) + c:RegisterEffect(e1) +end +function c511001189.cfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) +end +function c511001189.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001189.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(nil,tp,LOCATION_SZONE,0,1,e:GetHandler()) +end +function c511001189.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511001189.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511001189.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + local sg=Duel.GetMatchingGroup(c511001189.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,sg:GetCount()) +end +function c511001189.opfilter(c) + return not c:IsLocation(LOCATION_ONFIELD) +end +function c511001189.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001189.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) + sg=sg:Filter(c511001189.opfilter,nil) + local g=Duel.GetDecktopGroup(tp,sg:GetCount()) + Duel.Draw(tp,sg:GetCount(),REASON_EFFECT) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511001190.lua b/script/c511001190.lua new file mode 100644 index 00000000..d65aa335 --- /dev/null +++ b/script/c511001190.lua @@ -0,0 +1,13 @@ +--Dragonroid +function c511001190.initial_effect(c) + --Type Machine + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_RACE) + e2:SetCondition(c511001190.con) + e2:SetValue(RACE_DRAGON) + c:RegisterEffect(e2) +end +function c511001190.con(e) + return e:GetHandler():IsLocation(LOCATION_GRAVE) +end diff --git a/script/c511001191.lua b/script/c511001191.lua new file mode 100644 index 00000000..337d4f79 --- /dev/null +++ b/script/c511001191.lua @@ -0,0 +1,68 @@ +--Extra Hundred +function c511001191.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001191.condition) + e1:SetTarget(c511001191.target) + e1:SetOperation(c511001191.activate) + c:RegisterEffect(e1) +end +function c511001191.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001191.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if chk==0 then return d:IsOnField() and d:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(d) +end +function c511001191.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511001191.datkop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetOperation(c511001191.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end +function c511001191.datkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not bc then return end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + bc:RegisterEffect(e3) +end +function c511001191.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(Duel.GetAttacker():GetAttack()+100) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c511001192.lua b/script/c511001192.lua new file mode 100644 index 00000000..bbc5c623 --- /dev/null +++ b/script/c511001192.lua @@ -0,0 +1,29 @@ +--Cyber Repairer +function c511001192.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001192.target) + e1:SetOperation(c511001192.activate) + c:RegisterEffect(e1) +end +function c511001192.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511001192.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(1-tp,1,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetTarget(c511001192.tg) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end +function c511001192.tg(e,c) + return c:IsRace(RACE_MACHINE) +end diff --git a/script/c511001193.lua b/script/c511001193.lua new file mode 100644 index 00000000..5cb31718 --- /dev/null +++ b/script/c511001193.lua @@ -0,0 +1,42 @@ +--デスパレート・バトル +function c511001193.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001193.condition) + e1:SetTarget(c511001193.target) + e1:SetOperation(c511001193.activate) + c:RegisterEffect(e1) +end +function c511001193.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE + and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c511001193.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001193.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-1000) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001194.lua b/script/c511001194.lua new file mode 100644 index 00000000..ee1c6dd8 --- /dev/null +++ b/script/c511001194.lua @@ -0,0 +1,51 @@ +--魔導の封印櫃 +function c511001194.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001194.target) + e1:SetOperation(c511001194.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511001194.regop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c511001194.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,0,LOCATION_DECK,1,nil) end + e:SetLabelObject(nil) +end +function c511001194.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local cg=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + Duel.ConfirmCards(tp,cg) + local g=Duel.SelectMatchingCard(tp,c511001194.filter,tp,0,LOCATION_DECK,1,1,nil) + if g:GetCount()>0 then + Duel.Overlay(c,g) + Duel.ShuffleDeck(1-tp) + e:SetLabelObject(g:GetFirst()) + end + end +end +function c511001194.regop(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_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c511001194.tohand) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(e:GetLabelObject():GetLabelObject()) + Duel.RegisterEffect(e1,tp) +end +function c511001194.tohand(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if not tc then return end + Duel.Hint(HINT_CARD,0,511001194) + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(tp,tc) + Duel.ShuffleHand(1-tp) +end diff --git a/script/c511001195.lua b/script/c511001195.lua new file mode 100644 index 00000000..cf02ad82 --- /dev/null +++ b/script/c511001195.lua @@ -0,0 +1,38 @@ +--アンブラル・リフレッシュ +function c511001195.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001195.target) + e1:SetOperation(c511001195.operation) + c:RegisterEffect(e1) +end +function c511001195.filter(c) + return c:IsFaceup() and c:GetAttack()~=c:GetBaseAttack() +end +function c511001195.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001195.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001195.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001195.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,0) +end +function c511001195.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + local batk=tc:GetBaseAttack() + if batk==atk then return end + local dif=(batk>atk) and (batk-atk) or (atk-batk) + local cue=Duel.Recover(tp,dif,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetBaseAttack()) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001196.lua b/script/c511001196.lua new file mode 100644 index 00000000..e2d959ec --- /dev/null +++ b/script/c511001196.lua @@ -0,0 +1,28 @@ +--アンブラル・デス・ブラッド +function c511001196.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001196.condition) + e1:SetTarget(c511001196.target) + e1:SetOperation(c511001196.activate) + c:RegisterEffect(e1) +end +function c511001196.condition(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + return tc:GetPreviousControler()==tp and tc:IsSetCard(0x87) and tc:IsReason(REASON_BATTLE) +end +function c511001196.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=eg:GetFirst():GetReasonCard() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511001196.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=eg:GetFirst():GetReasonCard() + if tg:IsRelateToEffect(e) then + Duel.Destroy(tg,REASON_EFFECT) + end +end diff --git a/script/c511001197.lua b/script/c511001197.lua new file mode 100644 index 00000000..0de288d1 --- /dev/null +++ b/script/c511001197.lua @@ -0,0 +1,65 @@ +--ジェリー・バインド +function c511001197.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,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511001197.condition) + e1:SetTarget(c511001197.target) + e1:SetOperation(c511001197.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001197.descon) + e2:SetOperation(c511001197.desop) + c:RegisterEffect(e2) +end +function c511001197.cfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511001197.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001197.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001197.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511001197.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() 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_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001197.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK) + tc:RegisterEffect(e2,true) + end +end +function c511001197.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001197.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001197.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001198.lua b/script/c511001198.lua new file mode 100644 index 00000000..75233234 --- /dev/null +++ b/script/c511001198.lua @@ -0,0 +1,18 @@ +--Deep Current +function c511001198.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001198.condition) + e1:SetOperation(c511001198.activate) + c:RegisterEffect(e1) +end +function c511001198.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetAttackTarget()==nil +end +function c511001198.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511001199.lua b/script/c511001199.lua new file mode 100644 index 00000000..a20d1fb7 --- /dev/null +++ b/script/c511001199.lua @@ -0,0 +1,32 @@ +--Ebb Tide +function c511001199.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) + --pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001199,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_MSET) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511001199.target) + e2:SetOperation(c511001199.operation) + c:RegisterEffect(e2) +end +function c511001199.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_POSITION,eg,eg:GetCount(),0,0) +end +function c511001199.filter(c,e) + return c:IsRelateToEffect(e) +end +function c511001199.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=eg:Filter(c511001199.filter,nil,e) + Duel.ChangePosition(g,0x4,0x4,0x4,0x4,true) +end diff --git a/script/c511001200.lua b/script/c511001200.lua new file mode 100644 index 00000000..009a355e --- /dev/null +++ b/script/c511001200.lua @@ -0,0 +1,77 @@ +--クイック・エクシーズ +function c511001200.initial_effect(c) + --synchro effect + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c511001200.tg) + e1:SetOperation(c511001200.op) + c:RegisterEffect(e1) +end +function c511001200.filter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOwner()==tp +end +function c511001200.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001200.filter(chkc,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001200.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) + and Duel.IsExistingMatchingCard(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,1,nil,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511001200.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001200.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 + or not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,nil,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=g:Select(tp,1,1,nil):GetFirst() + Duel.XyzSummon(tp,sc,nil) + local atk=tc:GetTextAttack() + Duel.Equip(tp,tc,sc,true) + tc:RegisterFlagEffect(511001200,RESET_EVENT+0x1fe0000,0,0) + local e1=Effect.CreateEffect(sc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001200.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(sc) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetTarget(c511001200.reptg) + e3:SetOperation(c511001200.repop) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end +function c511001200.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001200.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetEquipTarget() + if chk==0 then return not c:IsStatus(STATUS_DESTROY_CONFIRMED) end + if Duel.SelectYesNo(tp,aux.Stringid(95395761,1)) then return true + else return false end +end +function c511001200.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001201.lua b/script/c511001201.lua new file mode 100644 index 00000000..e5d3a9c3 --- /dev/null +++ b/script/c511001201.lua @@ -0,0 +1,29 @@ +--Trap Trip +function c511001201.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001201.target) + e1:SetOperation(c511001201.operation) + c:RegisterEffect(e1) +end +function c511001201.filter(c) + return c:IsType(TYPE_TRAP) and c:IsAbleToHand() +end +function c511001201.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and c511001201.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001201.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511001201.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511001201.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511001202.lua b/script/c511001202.lua new file mode 100644 index 00000000..776535f0 --- /dev/null +++ b/script/c511001202.lua @@ -0,0 +1,50 @@ +--スピード・キング☆スカル・フレイム +function c511001202.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001202.spcon) + e1:SetOperation(c511001202.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(31112776,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001202.damtg) + e2:SetOperation(c511001202.damop) + c:RegisterEffect(e2) +end +function c511001202.spfilter(c) + return c:IsCode(99899504) and c:IsAbleToRemoveAsCost() +end +function c511001202.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001202.spfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c511001202.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001202.spfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001202.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,26293219) end + local dam=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_GRAVE,0,nil,26293219)*400 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511001202.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local d=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_GRAVE,0,nil,26293219)*400 + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001203.lua b/script/c511001203.lua new file mode 100644 index 00000000..e9c0ae2b --- /dev/null +++ b/script/c511001203.lua @@ -0,0 +1,36 @@ +--スライム・ホール +function c511001203.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511001203.target) + e1:SetOperation(c511001203.activate) + c:RegisterEffect(e1) +end +function c511001203.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511001203.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511001203.filter,1,nil) and eg:GetCount()==1 end + Duel.SetTargetCard(eg) + local tc=eg:GetFirst() + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,tc:GetAttack()) +end +function c511001203.filter2(c,e) + return c:IsFaceup() and c:IsDestructable() and c:IsRelateToEffect(e) +end +function c511001203.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001203.filter2,nil,e) + local tc=g:GetFirst() + if not tc then return end + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + tc=g:Select(tp,1,1,nil):GetFirst() + end + local rec=tc:GetAttack() + Duel.Destroy(tc,REASON_EFFECT) + if Duel.Recover(tp,rec,REASON_EFFECT)==0 then return end +end diff --git a/script/c511001204.lua b/script/c511001204.lua new file mode 100644 index 00000000..bc3ab83e --- /dev/null +++ b/script/c511001204.lua @@ -0,0 +1,50 @@ +--Grade Sword +function c511001204.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(c511001204.target) + e1:SetOperation(c511001204.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + 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(c511001204.eqlimit) + c:RegisterEffect(e3) + --double tribute + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_DOUBLE_TRIBUTE) + e1:SetValue(c511001204.eqlimit) + c:RegisterEffect(e1) +end +function c511001204.eqlimit(e,c) + return c:IsRace(RACE_WARRIOR) +end +function c511001204.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511001204.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001204.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001204.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001204.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001204.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 diff --git a/script/c511001205.lua b/script/c511001205.lua new file mode 100644 index 00000000..9ca9dc30 --- /dev/null +++ b/script/c511001205.lua @@ -0,0 +1,26 @@ +--Acid Slime +function c511001205.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001205,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001205.damcon) + e1:SetTarget(c511001205.damtg) + e1:SetOperation(c511001205.damop) + c:RegisterEffect(e1) +end +function c511001205.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511001205.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511001205.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001206.lua b/script/c511001206.lua new file mode 100644 index 00000000..9fe11fd0 --- /dev/null +++ b/script/c511001206.lua @@ -0,0 +1,43 @@ +--Clone Slime +function c511001206.initial_effect(c) + --be target + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetDescription(aux.Stringid(316000129,0)) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCost(c511001206.cost) + e1:SetTarget(c511001206.target) + e1:SetOperation(c511001206.operation) + c:RegisterEffect(e1) +end +function c511001206.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001206.filter(c,e,tp) + return (c:IsSetCard(0x207) or c:IsCode(46821314) or c:IsCode(68638985) or c:IsCode(18914778) or c:IsCode(3918345) or c:IsCode(100000705) or c:IsCode(100000706) or c:IsCode(31709826)) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001206.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511001206.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001206.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001206.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511001206.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local bp=0 + if e:GetHandler():IsPreviousPosition(POS_FACEUP_ATTACK) then + bp=POS_FACEUP_ATTACK + else + bp=POS_FACEUP_DEFENSE + end + Duel.SpecialSummon(tc,0,tp,tp,false,false,bp) + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511001207.lua b/script/c511001207.lua new file mode 100644 index 00000000..8a674528 --- /dev/null +++ b/script/c511001207.lua @@ -0,0 +1,27 @@ +--Draw Slime +function c511001207.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001207,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511001207.condition) + e1:SetTarget(c511001207.target) + e1:SetOperation(c511001207.operation) + c:RegisterEffect(e1) +end +function c511001207.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsReason(REASON_RETURN) +end +function c511001207.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001207.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001208.lua b/script/c511001208.lua new file mode 100644 index 00000000..78b20b8f --- /dev/null +++ b/script/c511001208.lua @@ -0,0 +1,30 @@ +--Multiple Slime +function c511001208.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001208,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001208.condition) + e1:SetTarget(c511001208.target) + e1:SetOperation(c511001208.operation) + c:RegisterEffect(e1) +end +function c511001208.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511001208.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c511001208.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,21770261,0x13d,0x13d,0,0,3,RACE_AQUA,ATTRIBUTE_WATER) then return end + for i=1,3 do + local token=Duel.CreateToken(tp,21770261) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001209.lua b/script/c511001209.lua new file mode 100644 index 00000000..5310315a --- /dev/null +++ b/script/c511001209.lua @@ -0,0 +1,28 @@ +--Slime Base +function c511001209.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001209.target) + e1:SetOperation(c511001209.activate) + c:RegisterEffect(e1) +end +function c511001209.filter(c,e,tp) + return (c:IsSetCard(0x207) or c:IsCode(46821314) or c:IsCode(68638985) or c:IsCode(18914778) or c:IsCode(3918345) or c:IsCode(100000705) or c:IsCode(100000706) or c:IsCode(31709826)) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001209.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001209.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001209.activate(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,c511001209.filter,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 diff --git a/script/c511001210.lua b/script/c511001210.lua new file mode 100644 index 00000000..ae15238c --- /dev/null +++ b/script/c511001210.lua @@ -0,0 +1,37 @@ +--Jammer Slime +function c511001210.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001210.condition) + e1:SetCost(c511001210.cost) + e1:SetTarget(c511001210.target) + e1:SetOperation(c511001210.activate) + c:RegisterEffect(e1) +end +function c511001210.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp and Duel.IsChainNegatable(ev) +end +function c511001210.cfilter(c) + return (c:IsSetCard(0x207) or c:IsCode(46821314) or c:IsCode(68638985) or c:IsCode(18914778) or c:IsCode(3918345) or c:IsCode(100000705) or c:IsCode(100000706) or c:IsCode(31709826)) + and c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c511001210.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001210.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511001210.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) +end +function c511001210.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001210.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511001211.lua b/script/c511001211.lua new file mode 100644 index 00000000..5b4f8428 --- /dev/null +++ b/script/c511001211.lua @@ -0,0 +1,40 @@ +--Chthonian Soldier +function c511001211.initial_effect(c) + --reg + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_AVAILABLE_BD) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001211.regcon) + e1:SetOperation(c511001211.regop) + c:RegisterEffect(e1) +end +function c511001211.regcon(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + return bc and bc==eg:GetFirst() +end +function c511001211.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(344000097,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c511001211.damtg) + e1:SetOperation(c511001211.damop) + e1:SetLabel(ev) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) +end +function c511001211.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c511001211.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end + diff --git a/script/c511001212.lua b/script/c511001212.lua new file mode 100644 index 00000000..919c4908 --- /dev/null +++ b/script/c511001212.lua @@ -0,0 +1,21 @@ +--Discord +function c511001212.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --disable spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetTarget(c511001212.splimit) + c:RegisterEffect(e2) +end +function c511001212.splimit(e,c,tp,sumtp,sumpos) + return bit.band(sumtp,SUMMON_TYPE_SYNCHRO)==SUMMON_TYPE_SYNCHRO +end + diff --git a/script/c511001213.lua b/script/c511001213.lua new file mode 100644 index 00000000..7977f5fb --- /dev/null +++ b/script/c511001213.lua @@ -0,0 +1,78 @@ +--Lock Dragon +function c511001213.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_NEGATED) + e2:SetRange(LOCATION_HAND) + e2:SetOperation(c511001213.chop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001213,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_CHAIN_END) + e3:SetRange(LOCATION_HAND) + e3:SetCondition(c511001213.hspcon) + e3:SetTarget(c511001213.hsptg) + e3:SetOperation(c511001213.hspop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,1) + e4:SetCondition(c511001213.atcon) + c:RegisterEffect(e4) +end +function c511001213.chop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if rp==tp then return end + local de,dp=Duel.GetChainInfo(ev,CHAININFO_DISABLE_REASON,CHAININFO_DISABLE_PLAYER) + if de and dp==tp and de:GetHandler():IsType(TYPE_COUNTER) then + local ty=re:GetActiveType() + local flag=c:GetFlagEffectLabel(511001213) + if not flag then + c:RegisterFlagEffect(511001213,RESET_EVENT+0x1fe0000,0,0,ty) + e:SetLabelObject(de) + elseif de~=e:GetLabelObject() then + e:SetLabelObject(de) + c:SetFlagEffectLabel(511001213,ty) + else + c:SetFlagEffectLabel(511001213,bit.bor(flag,ty)) + end + end +end +function c511001213.hspcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local label=c:GetFlagEffectLabel(511001213) + if label~=nil and label~=0 then + e:SetLabel(label) + c:SetFlagEffectLabel(511001213,0) + return true + else return false end +end +function c511001213.hsptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001213.hspop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + end +end +function c511001213.atcon(e) + return e:GetHandler():IsDefensePos() +end diff --git a/script/c511001214.lua b/script/c511001214.lua new file mode 100644 index 00000000..2f2b0215 --- /dev/null +++ b/script/c511001214.lua @@ -0,0 +1,122 @@ +--見下した条約 +function c511001214.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001214.condition) + e1:SetOperation(c511001214.operation) + c:RegisterEffect(e1) +end +function c511001214.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511001214.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetLabel(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c511001214.spcon) + e2:SetOperation(c511001214.spop) + e2:SetLabelObject(e1) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,1-tp) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001214.spcon2) + Duel.RegisterEffect(e3,1-tp) + local e4=e2:Clone() + e4:SetCode(EVENT_CHAIN_END) + Duel.RegisterEffect(e4,1-tp) + local e5=e2:Clone() + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + Duel.RegisterEffect(e5,1-tp) + local e6=e2:Clone() + e6:SetCode(EVENT_DAMAGE_STEP_END) + Duel.RegisterEffect(e6,1-tp) + local e7=e2:Clone() + e7:SetCode(EVENT_PHASE+PHASE_END) + Duel.RegisterEffect(e7,1-tp) + local e8=Effect.CreateEffect(e:GetHandler()) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_ADJUST) + e8:SetLabelObject(e1) + e8:SetCondition(c511001214.spcon) + e8:SetOperation(c511001214.regop) + e8:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e8,1-tp) + local e10=Effect.CreateEffect(e:GetHandler()) + e10:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e10:SetCode(511001213) + e10:SetCountLimit(1) + e10:SetProperty(EFFECT_FLAG_DELAY) + e10:SetCondition(c511001214.accon) + e10:SetOperation(c511001214.damop) + e10:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e10,tp) +end +function c511001214.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLevelBelow(4) +end +function c511001214.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()==1 +end +function c511001214.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()==1 and Duel.GetCurrentChain()==0 +end +function c511001214.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=1 then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001214.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(511001214,0)) then + e:GetLabelObject():SetLabel(0) + Duel.Hint(HINT_CARD,0,511001214) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001214.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + Duel.Hint(HINT_CARD,0,511001214) + Duel.Draw(1-tp,2,REASON_EFFECT) + elseif Duel.GetCurrentPhase()==PHASE_END then + Duel.RaiseEvent(e:GetHandler(),511001213,e,0,tp,0,0) + end +end +function c511001214.regop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=1 then return end + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC_G) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_DECK) + e1:SetCountLimit(1) + e1:SetLabelObject(e:GetLabelObject()) + e1:SetCondition(c511001214.spcon3) + e1:SetOperation(c511001214.spop3) + e1:SetReset(RESET_EVENT+EVENT_ADJUST) + tc:RegisterEffect(e1) +end +function c511001214.spcon3(e,c,og) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetLabelObject():GetLabel()==1 + and Duel.IsExistingMatchingCard(c511001214.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) +end +function c511001214.spop3(e,tp,eg,ep,ev,re,r,rp,c,og) + Duel.Hint(HINT_CARD,0,511001214) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001214.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + og:Merge(g) + e:GetLabelObject():SetLabel(0) + Duel.Hint(HINT_CARD,0,511001214) + Duel.Draw(1-tp,2,REASON_EFFECT) +end +function c511001214.accon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511001214.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001214) + Duel.Damage(tp,1000,REASON_EFFECT) +end diff --git a/script/c511001218.lua b/script/c511001218.lua new file mode 100644 index 00000000..fe3aafb7 --- /dev/null +++ b/script/c511001218.lua @@ -0,0 +1,30 @@ +--Curry Fiend Roo +function c511001218.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511001218.val) + 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_UPDATE_ATTACK) + e2:SetValue(c511001218.val2) + c:RegisterEffect(e2) +end +function c511001218.filter(c) + return c:IsSetCard(0x208) +end +function c511001218.val(e,c) + return Duel.GetMatchingGroupCount(c511001218.filter,c:GetControler(),LOCATION_GRAVE,0,nil)*200 +end +function c511001218.filter2(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) +end +function c511001218.val2(e,c) + return Duel.GetMatchingGroupCount(c511001218.filter2,c:GetControler(),LOCATION_REMOVED,LOCATION_REMOVED,nil)*300 +end diff --git a/script/c511001219.lua b/script/c511001219.lua new file mode 100644 index 00000000..1358d6fb --- /dev/null +++ b/script/c511001219.lua @@ -0,0 +1,83 @@ +--Curry Pot +function c511001219.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511001219.rmtarget) + e2:SetTargetRange(0xff,0xff) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2) + --instant(chain) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001219,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCondition(c511001219.condition) + e3:SetCost(c511001219.cost) + e3:SetTarget(c511001219.target) + e3:SetOperation(c511001219.operation) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(81674782) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e4:SetTargetRange(0xff,0xff) + e4:SetTarget(c511001219.checktg) + c:RegisterEffect(e4) +end +function c511001219.rmtarget(e,c) + if not c:IsLocation(0x80) and not c:IsType(TYPE_SPELL+TYPE_TRAP) then + if c:GetOwner()==e:GetHandler():GetOwner() then + c:RegisterFlagEffect(511001219,RESET_EVENT+0x1760000,0,0) + end + return true + else + return false + end +end +function c511001219.spfilter(c,code) + return c:GetCode()==code and c:GetFlagEffect(511001219)>0 +end +function c511001219.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001219.spfilter,tp,LOCATION_REMOVED,0,1,nil,511001215) + and Duel.IsExistingMatchingCard(c511001219.spfilter,tp,LOCATION_REMOVED,0,1,nil,511001216) + and Duel.IsExistingMatchingCard(c511001219.spfilter,tp,LOCATION_REMOVED,0,1,nil,511001217) +end +function c511001219.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local ct=g:GetCount() + if ct<1 then ct=1 end + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_MZONE,LOCATION_MZONE,ct,nil) end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001219.filter(c,e,tp) + return c:IsCode(511001218) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001219.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001219.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001219.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,c511001219.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001219.checktg(e,c) + return not c:IsPublic() +end diff --git a/script/c511001220.lua b/script/c511001220.lua new file mode 100644 index 00000000..4a0f32b8 --- /dev/null +++ b/script/c511001220.lua @@ -0,0 +1,26 @@ +--Spell Spice Garmasala +function c511001220.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001220.target) + e1:SetOperation(c511001220.activate) + c:RegisterEffect(e1) +end +function c511001220.filter(c) + return c:IsSetCard(0x1208) and c:IsAbleToHand() +end +function c511001220.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001220.filter,tp,LOCATION_DECK,0,3,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,3,tp,LOCATION_DECK) +end +function c511001220.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001220.filter,tp,LOCATION_DECK,0,3,3,nil) + if g:GetCount()>2 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001221.lua b/script/c511001221.lua new file mode 100644 index 00000000..2c5235d8 --- /dev/null +++ b/script/c511001221.lua @@ -0,0 +1,20 @@ +--Spell Spice Caraway +function c511001221.initial_effect(c) + --recover&damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER+CATEGORY_DAMAGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001221.target) + e1:SetOperation(c511001221.operation) + c:RegisterEffect(e1) +end +function c511001221.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,200) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,200) +end +function c511001221.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,200,REASON_EFFECT) + Duel.Recover(tp,200,REASON_EFFECT) +end diff --git a/script/c511001222.lua b/script/c511001222.lua new file mode 100644 index 00000000..a8670ee3 --- /dev/null +++ b/script/c511001222.lua @@ -0,0 +1,60 @@ +--Spell Spice Pepper +function c511001222.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001222.target) + e1:SetOperation(c511001222.activate) + c:RegisterEffect(e1) +end +function c511001222.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001222.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(300) + if tc:RegisterEffect(e1) then + if Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetTarget(c511001222.redtg) + e2:SetOperation(c511001222.redop) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) + end + end + end +end +function c511001222.redtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.HintSelection(g) + g:GetFirst():CreateEffectRelation(e) +end +function c511001222.redop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(-300) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001223.lua b/script/c511001223.lua new file mode 100644 index 00000000..2625756a --- /dev/null +++ b/script/c511001223.lua @@ -0,0 +1,40 @@ +--Spell Spice Cinnamon +function c511001223.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001223.target) + e1:SetOperation(c511001223.activate) + c:RegisterEffect(e1) +end +function c511001223.filter1(c) + return c:IsFaceup() and c:IsPosition(POS_FACEUP_ATTACK) +end +function c511001223.filter2(c) + return c:IsFaceup() and c:IsPosition(POS_FACEUP_DEFENSE) +end +function c511001223.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511001223.filter1,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c511001223.filter2,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g1=Duel.SelectTarget(tp,c511001223.filter1,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g2=Duel.SelectTarget(tp,c511001223.filter2,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g1,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g2,1,0,0) +end +function c511001223.activate(e,tp,eg,ep,ev,re,r,rp) + local tc1=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc2=g:GetFirst() + if tc2==tc1 then tc2=g:GetNext() end + if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) then + Duel.ChangePosition(tc1,POS_FACEUP_DEFENSE) + Duel.ChangePosition(tc2,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511001224.lua b/script/c511001224.lua new file mode 100644 index 00000000..01acfd12 --- /dev/null +++ b/script/c511001224.lua @@ -0,0 +1,35 @@ +--Counter Spice Cumin +function c511001224.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511001224.condition) + e1:SetTarget(c511001224.target) + e1:SetOperation(c511001224.operation) + c:RegisterEffect(e1) +end +function c511001224.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsType(TYPE_MONSTER) +end +function c511001224.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001224.cfilter,1,nil,tp) +end +function c511001224.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001224.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001224.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001224.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,c511001224.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_ATTACK) + end +end diff --git a/script/c511001225.lua b/script/c511001225.lua new file mode 100644 index 00000000..df3f1852 --- /dev/null +++ b/script/c511001225.lua @@ -0,0 +1,173 @@ +--Xyz Crown +function c511001225.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --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(c511001225.target) + e1:SetOperation(c511001225.operation) + c:RegisterEffect(e1) + --double xyz material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(511001225) + 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(c511001225.eqlimit) + c:RegisterEffect(e3) + --change lv + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_XYZ_LEVEL) + e5:SetValue(c511001225.lv) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_SYNCHRO_LEVEL) + c:RegisterEffect(e6) + local e7=e5:Clone() + e7:SetCode(EFFECT_RITUAL_LEVEL) + c:RegisterEffect(e7) + local e8=e5:Clone() + e8:SetCode(EFFECT_CHANGE_LEVEL) + c:RegisterEffect(e8) + --double xyz material + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_EQUIP) + e9:SetCode(511000538) + c:RegisterEffect(e9) + if not c511001225.global_check then + c511001225.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001225.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001225.lv(e,c,rc) + return c:GetRank() +end +function c511001225.eqlimit(e,c) + return c:IsType(TYPE_XYZ) +end +function c511001225.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001225.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001225.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001225.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001225.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001225.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 c511001225.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001226.lua b/script/c511001226.lua new file mode 100644 index 00000000..9699ea63 --- /dev/null +++ b/script/c511001226.lua @@ -0,0 +1,27 @@ +--Skull Base +function c511001226.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001226,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_RELEASE) + e1:SetCondition(c511001226.condition) + e1:SetTarget(c511001226.target) + e1:SetOperation(c511001226.operation) + c:RegisterEffect(e1) +end +function c511001226.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_SUMMON) +end +function c511001226.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001226.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001227.lua b/script/c511001227.lua new file mode 100644 index 00000000..9c48329b --- /dev/null +++ b/script/c511001227.lua @@ -0,0 +1,26 @@ +--Guardraw +function c511001227.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001227.target) + e1:SetOperation(c511001227.activate) + c:RegisterEffect(e1) +end +function c511001227.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,LOCATION_MZONE,0,nil,POS_FACEUP_ATTACK) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001227.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPATTACK) + local g=Duel.SelectMatchingCard(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_ATTACK) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c511001228.lua b/script/c511001228.lua new file mode 100644 index 00000000..5e4d11e7 --- /dev/null +++ b/script/c511001228.lua @@ -0,0 +1,36 @@ +--Fife and Drum Corps +function c511001228.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001228.condition) + e1:SetTarget(c511001228.target) + e1:SetOperation(c511001228.activate) + c:RegisterEffect(e1) +end +function c511001228.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001228.filter(c) + return c:IsFaceup() and c:IsAttackBelow(1000) +end +function c511001228.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001228.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001228.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001228.filter,tp,LOCATION_MZONE,0,nil) + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end +end diff --git a/script/c511001229.lua b/script/c511001229.lua new file mode 100644 index 00000000..ec89d4dc --- /dev/null +++ b/script/c511001229.lua @@ -0,0 +1,29 @@ +--Eucalyptus Mole +function c511001229.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001229,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c511001229.target) + e1:SetOperation(c511001229.operation) + c:RegisterEffect(e1) +end +function c511001229.spfilter(c,e,tp) + return (c:IsCode(42129512) or c:IsCode(69579761) or c:IsCode(87685879) or c:IsCode(1371589) or c:IsCode(7243511)) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001229.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001229.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,c511001229.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001230.lua b/script/c511001230.lua new file mode 100644 index 00000000..747dbfa7 --- /dev/null +++ b/script/c511001230.lua @@ -0,0 +1,34 @@ +--ディマンドマン +function c511001230.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001230,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetHintTiming(0,0x1c0+TIMING_MAIN_END) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1) + e1:SetCondition(c511001230.poscon) + e1:SetTarget(c511001230.postg) + e1:SetOperation(c511001230.posop) + c:RegisterEffect(e1) +end +function c511001230.poscon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c511001230.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsPosition(POS_DEFENSE) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_DEFENSE) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DEFENSE) + local g=Duel.SelectTarget(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_DEFENSE) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511001230.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsPosition(POS_DEFENSE) then + Duel.ChangePosition(tc,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511001231.lua b/script/c511001231.lua new file mode 100644 index 00000000..25b8333d --- /dev/null +++ b/script/c511001231.lua @@ -0,0 +1,42 @@ +--Schrödinger's Cat +function c511001231.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DRAW) + e2:SetCondition(c511001231.condition) + e2:SetTarget(c511001231.target) + e2:SetOperation(c511001231.activate) + c:RegisterEffect(e2) +end +function c511001231.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DRAW and (not re or re:GetHandler():GetCode()~=511001231) +end +function c511001231.filter(c,tp) + return c:IsControler(tp) and c:IsAbleToDeck() and c:IsLocation(LOCATION_HAND) +end +function c511001231.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) + and eg:IsExists(c511001231.filter,1,nil,tp) end + local g=eg:Filter(c511001231.filter,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001231.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or not Duel.IsPlayerCanDraw(tp) then return end + local g=eg:Filter(c511001231.filter,nil,tp) + if g:GetCount()>0 then + Duel.ConfirmCards(1-tp,g) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(tp) + Duel.BreakEffect() + Duel.Draw(tp,g:GetCount(),REASON_EFFECT) + end +end diff --git a/script/c511001232.lua b/script/c511001232.lua new file mode 100644 index 00000000..0a9d3443 --- /dev/null +++ b/script/c511001232.lua @@ -0,0 +1,40 @@ +--Singularity Fiend +function c511001232.initial_effect(c) + --disable spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e2:SetDescription(aux.Stringid(511001232,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCode(EVENT_SPSUMMON) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511001232.condition) + e2:SetCost(c511001232.cost) + e2:SetTarget(c511001232.target) + e2:SetOperation(c511001232.operation) + c:RegisterEffect(e2) +end +function c511001232.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep and Duel.GetCurrentChain()==0 +end +function c511001232.costfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGraveAsCost() +end +function c511001232.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and + Duel.IsExistingMatchingCard(c511001232.costfilter,tp,LOCATION_HAND,0,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001232.costfilter,tp,LOCATION_HAND,0,1,1,c) + g:AddCard(c) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001232.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) +end +function c511001232.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.NegateSummon(eg:GetFirst()) + Duel.Destroy(eg,REASON_EFFECT) +end diff --git a/script/c511001233.lua b/script/c511001233.lua new file mode 100644 index 00000000..0df89721 --- /dev/null +++ b/script/c511001233.lua @@ -0,0 +1,144 @@ +--ガチバトル! +function c511001233.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_STANDBY_PHASE) + c:RegisterEffect(e1) + --sp summon (main) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001233,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001233.con) + e2:SetCost(c511001233.cost) + e2:SetTarget(c511001233.target) + e2:SetOperation(c511001233.operation) + c:RegisterEffect(e2) + --sp summon (mp end) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetOperation(c511001233.acop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_PHASE_START+PHASE_END) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetDescription(aux.Stringid(511001233,0)) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(511001233) + e5:SetCountLimit(1) + e5:SetCost(c511001233.spcost) + e5:SetTarget(c511001233.sptg) + e5:SetOperation(c511001233.spop) + c:RegisterEffect(e5) +end +function c511001233.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c511001233.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local regc=0 + local c=e:GetHandler() + if tp==c:GetControler() then + regc=51101233 + else + regc=51101234 + end + if chk==0 then return c:GetFlagEffect(regc)==0 end + c:RegisterFlagEffect(regc,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511001233.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001233.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001233.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001233.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,c511001233.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetLabelObject(tc) + e2:SetOperation(c511001233.desop) + Duel.RegisterEffect(e2,tp) + end +end +function c511001233.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511001233.acop(e,tp,eg,ep,ev,re,r,rp) + Duel.RaiseEvent(e:GetHandler(),511001233,e,0,tp,0,0) +end +function c511001233.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(51101233)==0 or c:GetFlagEffect(51101234)==0 end + if c:GetFlagEffect(51101233)==0 then + c:RegisterFlagEffect(51101233,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + c:RegisterFlagEffect(33,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + if c:GetFlagEffect(51101234)==0 then + c:RegisterFlagEffect(51101234,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + c:RegisterFlagEffect(34,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c511001233.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,PLAYER_ALL,LOCATION_DECK) +end +function c511001233.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(33)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001233.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetLabelObject(tc) + e2:SetOperation(c511001233.desop) + Duel.RegisterEffect(e2,tp) + end + end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and c:GetFlagEffect(34)>0 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(1-tp,c511001233.filter,1-tp,LOCATION_DECK,0,1,1,nil,e,1-tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,1-tp,1-tp,false,false,POS_FACEUP_ATTACK) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetLabelObject(tc) + e2:SetOperation(c511001233.desop) + Duel.RegisterEffect(e2,1-tp) + end + end +end diff --git a/script/c511001234.lua b/script/c511001234.lua new file mode 100644 index 00000000..6bb00a49 --- /dev/null +++ b/script/c511001234.lua @@ -0,0 +1,47 @@ +--Battle Constant +function c511001234.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001234.cost) + e1:SetTarget(c511001234.target) + e1:SetOperation(c511001234.activate) + c:RegisterEffect(e1) +end +function c511001234.filter1(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c511001234.filter2(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL) and c:IsType(TYPE_CONTINUOUS) and c:IsAbleToRemoveAsCost() +end +function c511001234.filter3(c) + return c:IsFaceup() and c:IsType(TYPE_TRAP) and c:IsType(TYPE_CONTINUOUS) and c:IsAbleToRemoveAsCost() +end +function c511001234.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001234.filter1,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511001234.filter2,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.IsExistingMatchingCard(c511001234.filter3,tp,LOCATION_ONFIELD,0,1,nil) end + local g1=Duel.SelectMatchingCard(tp,c511001234.filter1,tp,LOCATION_MZONE,0,1,1,nil) + local g2=Duel.SelectMatchingCard(tp,c511001234.filter2,tp,LOCATION_ONFIELD,0,1,1,nil) + g1:Merge(g2) + local g3=Duel.SelectMatchingCard(tp,c511001234.filter3,tp,LOCATION_ONFIELD,0,1,1,nil) + g1:Merge(g3) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c511001234.filter(c,e,tp) + return c:IsCode(511001235) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001234.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001234.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001234.activate(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,c511001234.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) +end + diff --git a/script/c511001235.lua b/script/c511001235.lua new file mode 100644 index 00000000..1c68955d --- /dev/null +++ b/script/c511001235.lua @@ -0,0 +1,35 @@ +--Brain Dragon +function c511001235.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001235,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_DRAW) + e1:SetCondition(c511001235.drcon) + e1:SetTarget(c511001235.drtg) + e1:SetOperation(c511001235.drop) + c:RegisterEffect(e1) +end +function c511001235.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511001235.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,2,0,0) +end +function c511001235.drop(e,tp,eg,ep,ev,re,r,rp,c) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(p,Card.IsAbleToDeck,p,LOCATION_HAND,0,2,2,nil) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + Duel.SendtoDeck(g,nil,0,REASON_EFFECT) + Duel.SortDecktop(p,p,2) +end diff --git a/script/c511001236.lua b/script/c511001236.lua new file mode 100644 index 00000000..3af2e6a4 --- /dev/null +++ b/script/c511001236.lua @@ -0,0 +1,58 @@ +--モンスターレジスター +function c511001236.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) + e1:SetCost(c511001236.cost) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001236,0)) + e2:SetCategory(CATEGORY_DECKDES) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c511001236.target) + e2:SetOperation(c511001236.activate) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c511001236.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 c511001236.cfilter(c) + return c:GetLevel()>0 +end +function c511001236.filter(c,tp) + return c:GetLevel()>0 and c:IsControler(tp) +end +function c511001236.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511001236.cfilter,1,nil) end + local g1=eg:Filter(c511001236.filter,nil,tp) + local g2=eg:Filter(c511001236.filter,nil,1-tp) + if g1:GetCount()>0 then + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1) + end + if g2:GetCount()>0 then + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,1) + end +end +function c511001236.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=eg:Filter(c511001236.filter,nil,tp) + local g2=eg:Filter(c511001236.filter,nil,1-tp) + local lv1=g1:GetSum(Card.GetLevel) + local lv2=g2:GetSum(Card.GetLevel) + if g1:GetCount()>0 and lv1>0 then + Duel.DiscardDeck(tp,lv1,REASON_EFFECT) + end + if g2:GetCount()>0 and lv2>0 then + Duel.DiscardDeck(1-tp,lv2,REASON_EFFECT) + end +end diff --git a/script/c511001237.lua b/script/c511001237.lua new file mode 100644 index 00000000..98ee6cad --- /dev/null +++ b/script/c511001237.lua @@ -0,0 +1,32 @@ +--Fake Life +function c511001237.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001237.condition) + e1:SetTarget(c511001237.target) + e1:SetOperation(c511001237.activate) + c:RegisterEffect(e1) +end +function c511001237.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetAttackTarget()==nil +end +function c511001237.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + local rec=tg:GetAttack() + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) +end +function c511001237.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack(tc) then + Duel.Recover(tp,tc:GetAttack(),REASON_EFFECT) + end + end +end diff --git a/script/c511001238.lua b/script/c511001238.lua new file mode 100644 index 00000000..46ac9c98 --- /dev/null +++ b/script/c511001238.lua @@ -0,0 +1,32 @@ +--Split Defender +function c511001238.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001238.condition) + e1:SetTarget(c511001238.ctltg) + e1:SetOperation(c511001238.ctlop) + c:RegisterEffect(e1) +end +function c511001238.condition(e,tp,eg,ep,ev,re,r,rp,chk) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>=2 +end +function c511001238.filter(c) + return c:IsControlerCanBeChanged() and c:IsFaceup() +end +function c511001238.ctltg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001238.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,1-tp,LOCATION_MZONE) +end +function c511001238.ctlop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001238.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + local sg=g:GetMaxGroup(Card.GetDefense) + if sg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + sg=sg:Select(1-tp,1,1,nil) + end + Duel.GetControl(sg:GetFirst(),tp) +end diff --git a/script/c511001239.lua b/script/c511001239.lua new file mode 100644 index 00000000..2be7a2c5 --- /dev/null +++ b/script/c511001239.lua @@ -0,0 +1,45 @@ +--Damage Reactor +function c511001239.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(aux.damcon1) + e1:SetTarget(c511001239.target) + e1:SetOperation(c511001239.operation) + c:RegisterEffect(e1) +end +function c511001239.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001239.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(c511001239.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(800) + g:GetFirst():RegisterEffect(e1) + end +end +function c511001239.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(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 diff --git a/script/c511001240.lua b/script/c511001240.lua new file mode 100644 index 00000000..9e7bc7eb --- /dev/null +++ b/script/c511001240.lua @@ -0,0 +1,44 @@ +--Upshift +function c511001240.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001240.target) + e1:SetOperation(c511001240.activate) + c:RegisterEffect(e1) +end +function c511001240.cfilter(c,lv) + return c:IsFaceup() and c:GetLevel()>lv +end +function c511001240.filter1(c,e,tp) + local lv=c:GetLevel() + return lv>0 and c:IsFaceup() and not Duel.IsExistingMatchingCard(c511001240.cfilter,tp,LOCATION_MZONE,0,1,nil,lv) +end +function c511001240.filter2(c) + return c:IsFaceup() and not c:IsType(TYPE_XYZ) +end +function c511001240.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001240.filter1(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001240.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001240.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) +end +function c511001240.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local g=Duel.GetMatchingGroup(c511001240.filter2,tp,LOCATION_MZONE,0,nil) + local lc=g:GetFirst() + local lv=tc:GetLevel() + while lc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + lc:RegisterEffect(e1) + lc=g:GetNext() + end + end +end diff --git a/script/c511001241.lua b/script/c511001241.lua new file mode 100644 index 00000000..7a38a522 --- /dev/null +++ b/script/c511001241.lua @@ -0,0 +1,35 @@ +--Life Regeneration +function c511001241.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001241.condition) + e1:SetOperation(c511001241.operation) + c:RegisterEffect(e1) +end +function c511001241.condition(e,tp,eg,ep,ev,re,r,rp) + if tp~=Duel.GetTurnPlayer() then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511001241.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_REVERSE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511001241.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511001241.refcon(e,re,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c511001242.lua b/script/c511001242.lua new file mode 100644 index 00000000..7fe7d6b7 --- /dev/null +++ b/script/c511001242.lua @@ -0,0 +1,28 @@ +--Final Offering +function c511001242.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511001242.condition) + e1:SetTarget(c511001242.target) + e1:SetOperation(c511001242.activate) + c:RegisterEffect(e1) +end +function c511001242.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511001242.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_HAND and chkc:GetControler()==tp and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_HAND,0,1,1,nil) +end +function c511001242.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,1-tp,2,REASON_EFFECT) + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511001243.lua b/script/c511001243.lua new file mode 100644 index 00000000..29e7b238 --- /dev/null +++ b/script/c511001243.lua @@ -0,0 +1,23 @@ +--Xyz Trip +function c511001243.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001243.condition) + e1:SetCost(c511001243.cost) + e1:SetOperation(c511001243.activate) + c:RegisterEffect(e1) +end +function c511001243.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local atk=Duel.GetAttacker():GetAttack() + if chk==0 then return Duel.CheckLPCost(tp,atk) end + Duel.PayLPCost(tp,atk) +end +function c511001243.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsType(TYPE_XYZ) and tc:IsControler(1-tp) +end +function c511001243.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511001244.lua b/script/c511001244.lua new file mode 100644 index 00000000..ea216073 --- /dev/null +++ b/script/c511001244.lua @@ -0,0 +1,29 @@ +--Armor Ninjitsu art of revival +function c511001244.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001244.target) + e1:SetOperation(c511001244.activate) + c:RegisterEffect(e1) +end +function c511001244.filter(c,e,tp) + return c:IsSetCard(0x2b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001244.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511001244.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001244.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001244.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001244.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511001245.lua b/script/c511001245.lua new file mode 100644 index 00000000..e4666fac --- /dev/null +++ b/script/c511001245.lua @@ -0,0 +1,29 @@ +--Iron Draw +function c511001245.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511001245.condition) + e1:SetTarget(c511001245.target) + e1:SetOperation(c511001245.activate) + c:RegisterEffect(e1) +end +function c511001245.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c511001245.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetMatchingGroupCount(c511001245.cfilter,tp,LOCATION_MZONE,0,nil)==2 +end +function c511001245.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511001245.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001246.lua b/script/c511001246.lua new file mode 100644 index 00000000..3f783e57 --- /dev/null +++ b/script/c511001246.lua @@ -0,0 +1,50 @@ +--エクシーズ・レセプション +function c511001246.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001246.target) + e1:SetOperation(c511001246.operation) + c:RegisterEffect(e1) +end +function c511001246.filter1(c,e,tp) + local atk=c:GetAttack() + return atk>0 and c:IsFaceup() and c:IsSetCard(0x2b) and Duel.IsExistingMatchingCard(c511001246.filter2,tp,LOCATION_HAND,0,1,nil,atk,e,tp) +end +function c511001246.filter2(c,atk,e,tp) + return c:GetAttack()<=atk and c:IsSetCard(0x2b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001246.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001246.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001246.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511001246.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001246.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001246.filter2,tp,LOCATION_HAND,0,1,1,nil,tc:GetAttack(),e,tp) + local sc=g:GetFirst() + if sc then + Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001247.lua b/script/c511001247.lua new file mode 100644 index 00000000..ff0cdbc4 --- /dev/null +++ b/script/c511001247.lua @@ -0,0 +1,36 @@ +--Galaxy Stealth Dragon +function c511001247.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),4,2) + c:EnableReviveLimit() + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001247,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511001247.spcost) + e2:SetTarget(c511001247.sptg) + e2:SetOperation(c511001247.spop) + c:RegisterEffect(e2) +end +function c511001247.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001247.filter(c,e,tp) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001247.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001247.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001247.spop(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,c511001247.filter,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 diff --git a/script/c511001248.lua b/script/c511001248.lua new file mode 100644 index 00000000..740a9c39 --- /dev/null +++ b/script/c511001248.lua @@ -0,0 +1,67 @@ +--ゴースト・フリート・サルベージ +function c511001248.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001248.con) + e1:SetTarget(c511001248.target) + e1:SetOperation(c511001248.activate) + c:RegisterEffect(e1) +end +function c511001248.filter(c,e,tp) + local og=c:GetMaterial():Filter(Card.IsCanBeSpecialSummoned,nil,e,0,tp,false,false) + local ct=0 + if og:GetCount()>2 then + ct=2 + else + ct=og:GetCount() + end + return c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsReason(REASON_BATTLE) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsAttribute(ATTRIBUTE_WATER) and c:IsType(TYPE_XYZ) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>ct +end +function c511001248.con(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001248.filter,1,nil,e,tp) +end +function c511001248.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=eg:Filter(c511001248.filter,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001248.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=eg:Filter(c511001248.filter,nil,e,tp):GetFirst() + if tc then + local og=tc:GetMaterial():Filter(Card.IsCanBeSpecialSummoned,nil,e,0,tp,false,false):Filter(Card.IsLocation,nil,LOCATION_GRAVE) + local ct=0 + if og:GetCount()>2 then + ct=2 + else + ct=og:GetCount() + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=ct then return end + if og:GetCount()>2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + og=og:Select(tp,2,2,nil) + end + og:AddCard(tc) + local tg=og:GetFirst() + while tg do + Duel.SpecialSummonStep(tg,0,tp,tp,false,false,POS_FACEUP) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tg:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + tg:RegisterEffect(e3) + tg=og:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001249.lua b/script/c511001249.lua new file mode 100644 index 00000000..a96c5b2a --- /dev/null +++ b/script/c511001249.lua @@ -0,0 +1,83 @@ +--Gagaga X Gagaga +function c511001249.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001249.target) + e1:SetOperation(c511001249.activate) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_ONFIELD) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001249.descon) + e2:SetOperation(c511001249.desop) + c:RegisterEffect(e2) +end +function c511001249.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x54) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001249,0,0x11,c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) +end +function c511001249.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001249.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001249.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001249.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001249.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511001249,0,0x11,tc:GetAttack(),tc:GetDefense(),tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) then return end + c:AddMonsterAttribute(TYPE_NORMAL+TYPE_SPELL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(tc:GetCode()) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetDefense()) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SET_BASE_ATTACK) + e3:SetValue(tc:GetAttack()) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + c:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + c:RegisterEffect(e5) + local e6=e1:Clone() + e6:SetCode(EFFECT_REMOVE_TYPE) + e6:SetValue(TYPE_TRAP) + c:RegisterEffect(e6) + local e7=e1:Clone() + e7:SetCode(EFFECT_CHANGE_LEVEL) + e7:SetValue(tc:GetLevel()) + c:RegisterEffect(e7) +end +function c511001249.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001249.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001249.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001250.lua b/script/c511001250.lua new file mode 100644 index 00000000..e28ae60a --- /dev/null +++ b/script/c511001250.lua @@ -0,0 +1,42 @@ +--サイクロン +function c511001250.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001250.target) + e1:SetOperation(c511001250.activate) + c:RegisterEffect(e1) +end +function c511001250.dfilter(c) + return c:IsDestructable() and c:IsFaceup() and c:IsType(TYPE_FIELD) +end +function c511001250.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511001250.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001250.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c511001250.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001250.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local tc=Duel.SelectMatchingCard(tp,c511001250.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + if tc:GetCount()>0 then + Duel.HintSelection(tc) + Duel.Destroy(tc,REASON_EFFECT) + local g=Duel.GetMatchingGroup(c511001250.filter,tp,LOCATION_MZONE,0,nil) + local c=e:GetHandler() + local tc2=g:GetFirst() + while tc2 do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(500) + tc2:RegisterEffect(e1) + tc2=g:GetNext() + end + end +end diff --git a/script/c511001251.lua b/script/c511001251.lua new file mode 100644 index 00000000..e595570b --- /dev/null +++ b/script/c511001251.lua @@ -0,0 +1,58 @@ +--�g�D�[���E�L���O�_�� +function c511001251.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001251.target) + e1:SetOperation(c511001251.activate) + c:RegisterEffect(e1) + --change name + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetRange(LOCATION_SZONE) + e2:SetValue(15259703) + c:RegisterEffect(e2) + --destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c511001251.destg) + e4:SetValue(c511001251.desval) + e4:SetOperation(c511001251.desop) + c:RegisterEffect(e4) +end +function c511001251.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetDecktopGroup(tp,5):IsExists(Card.IsAbleToRemove,5,nil) end +end +function c511001251.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetDecktopGroup(tp,5) + Duel.DisableShuffleCheck() + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end +function c511001251.dfilter(c,tp) + return c:IsFaceup() and c:IsLocation(LOCATION_ONFIELD) + and c:IsType(TYPE_TOON) and c:IsControler(tp) and c:IsReason(REASON_BATTLE) +end +function c511001251.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local count=eg:FilterCount(c511001251.dfilter,nil,tp) + e:SetLabel(count) + return count>0 and Duel.GetDecktopGroup(tp,count):IsExists(Card.IsAbleToRemove,count,nil) + end + return Duel.SelectYesNo(tp,aux.Stringid(43175858,0)) +end +function c511001251.desval(e,c) + return c:IsFaceup() and c:IsLocation(LOCATION_ONFIELD) + and c:IsType(TYPE_TOON) and c:IsControler(e:GetHandlerPlayer()) and c:IsReason(REASON_BATTLE) +end +function c511001251.desop(e,tp,eg,ep,ev,re,r,rp) + local count=e:GetLabel() + local g=Duel.GetDecktopGroup(tp,count) + Duel.DisableShuffleCheck() + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511001252.lua b/script/c511001252.lua new file mode 100644 index 00000000..c03a081d --- /dev/null +++ b/script/c511001252.lua @@ -0,0 +1,82 @@ +--EMドラミング・コング +function c511001252.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c511001252.atkcon) + e2:SetTarget(c511001252.atktg) + e2:SetOperation(c511001252.atkop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SPSUMMON_PROC) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_HAND) + e3:SetCondition(c511001252.spcon) + e3:SetOperation(c511001252.spop) + c:RegisterEffect(e3) + --atk + local e5=e2:Clone() + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c511001252.atkop2) + c:RegisterEffect(e5) +end +function c511001252.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if d and a:GetControler()~=d:GetControler() then + if a:IsControler(tp) then e:SetLabelObject(a) + else e:SetLabelObject(d) end + return true + else return false end +end +function c511001252.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetLabelObject() + if chkc then return chkc==tc end + if chk==0 then return tc:IsOnField() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) +end +function c511001252.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + end +end +function c511001252.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c511001252.spop(e,tp,eg,ep,ev,re,r,rp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) +end +function c511001252.atkop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001253.lua b/script/c511001253.lua new file mode 100644 index 00000000..d54249ef --- /dev/null +++ b/script/c511001253.lua @@ -0,0 +1,43 @@ +--ピアニッシモ +function c511001253.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511001253.condition) + e1:SetTarget(c511001253.target) + e1:SetOperation(c511001253.activate) + c:RegisterEffect(e1) +end +function c511001253.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001253.filter(c) + return c:IsFaceup() and c:GetFlagEffect(70899775)==0 +end +function c511001253.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001253.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001253.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001253.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511001253.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsType(TYPE_MONSTER) and tc:GetFlagEffect(70899775)==0 then + tc:RegisterFlagEffect(70899775,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001254.lua b/script/c511001254.lua new file mode 100644 index 00000000..99c7290c --- /dev/null +++ b/script/c511001254.lua @@ -0,0 +1,97 @@ +--Performapal Curtain Call +function c511001254.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(c511001254.condition) + e1:SetTarget(c511001254.target) + e1:SetOperation(c511001254.activate) + c:RegisterEffect(e1) + if not c511001254.global_check then + c511001254.global_check=true + c511001254[0]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(c511001254.regop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001254.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001254.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x9f) and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511001254.regop(e,tp,eg,ep,ev,re,r,rp) + if not eg then return end + local ct=eg:FilterCount(c511001254.filter,nil) + c511001254[0]=c511001254[0]+ct +end +function c511001254.clear(e,tp,eg,ep,ev,re,r,rp) + c511001254[0]=0 +end +function c511001254.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001254.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,nil) + and c511001254[0]>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001254.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(c511001254[0]*600) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetOperation(c511001254.atkop) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + end +end +function c511001254.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001254) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + local c=e:GetHandler() + while tc do + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetOwner()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c511001255.lua b/script/c511001255.lua new file mode 100644 index 00000000..2014c02c --- /dev/null +++ b/script/c511001255.lua @@ -0,0 +1,39 @@ +--Dangerous Draw +function c511001255.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001255.cost) + e1:SetTarget(c511001255.target) + e1:SetOperation(c511001255.activate) + c:RegisterEffect(e1) +end +function c511001255.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGraveAsCost() +end +function c511001255.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001255.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + Duel.DiscardHand(tp,c511001255.cfilter,1,1,REASON_COST) +end +function c511001255.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001255.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local h=Duel.GetDecktopGroup(p,1):GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + if h then + Duel.ConfirmCards(1-p,h) + if h:IsType(TYPE_MONSTER) then + Duel.Damage(tp,h:GetTextAttack(),REASON_EFFECT) + end + Duel.ShuffleHand(p) + end +end diff --git a/script/c511001256.lua b/script/c511001256.lua new file mode 100644 index 00000000..569bdd2d --- /dev/null +++ b/script/c511001256.lua @@ -0,0 +1,29 @@ +--Slow Temp +function c511001256.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetOperation(c511001256.ctop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_MSET) + c:RegisterEffect(e3) +end +function c511001256.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=eg:GetNext() + end +end diff --git a/script/c511001257.lua b/script/c511001257.lua new file mode 100644 index 00000000..31947254 --- /dev/null +++ b/script/c511001257.lua @@ -0,0 +1,27 @@ +--Melodious Melody of Divine Punishment +function c511001257.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001257.target) + e1:SetOperation(c511001257.activate) + c:RegisterEffect(e1) +end +function c511001257.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9b) +end +function c511001257.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001257.filter,tp,LOCATION_MZONE,0,1,nil) end + local dam=Duel.GetMatchingGroupCount(c511001257.filter,tp,LOCATION_MZONE,0,nil)*800 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511001257.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511001257.filter,tp,LOCATION_MZONE,0,nil)*800 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511001258.lua b/script/c511001258.lua new file mode 100644 index 00000000..6aea88ee --- /dev/null +++ b/script/c511001258.lua @@ -0,0 +1,37 @@ +--Fusion Samsara +function c511001258.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001258.target) + e1:SetOperation(c511001258.activate) + c:RegisterEffect(e1) +end +function c511001258.filter(c,e,tp,tid) + return bit.band(c:GetReason(),0x40008)==0x40008 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetTurnID()==tid +end +function c511001258.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511001258.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001258.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001258.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,tid) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001258.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if tc:IsRelateToEffect(e) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c511001259.lua b/script/c511001259.lua new file mode 100644 index 00000000..459cd426 --- /dev/null +++ b/script/c511001259.lua @@ -0,0 +1,46 @@ +--Pendulum Statue Black Sun +function c511001259.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(c511001259.filter) + e2:SetValue(300) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001259.thcon) + e3:SetTarget(c511001259.thtg) + e3:SetOperation(c511001259.thop) + c:RegisterEffect(e3) +end +function c511001259.filter(e,c) + return c:IsAttribute(ATTRIBUTE_DARK) +end +function c511001259.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511001259.afilter(c) + return c:IsSetCard(0x121e) and c:IsAbleToHand() +end +function c511001259.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001259.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001259.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001259.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001260.lua b/script/c511001260.lua new file mode 100644 index 00000000..a5aeb122 --- /dev/null +++ b/script/c511001260.lua @@ -0,0 +1,34 @@ +--Adversity +function c511001260.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001260.condition) + e1:SetOperation(c511001260.activate) + c:RegisterEffect(e1) +end +function c511001260.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:GetAttack()0 +end +function c511001261.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c511001261.lvfilter,tp,0,LOCATION_MZONE,nil) + local sum=g:GetSum(Card.GetLevel) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001261.filter,tp,LOCATION_HAND,0,1,nil,e,tp,sum) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001261.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetMatchingGroup(c511001261.lvfilter,tp,0,LOCATION_MZONE,nil) + local sum=g:GetSum(Card.GetLevel) + local spg=Group.CreateGroup() + local sp=Duel.GetMatchingGroup(c511001261.filter,tp,LOCATION_HAND,0,nil,e,tp,sum) + while ft>0 and sp:GetCount()>0 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=sp:Select(tp,1,1,nil) + spg:Merge(sg) + sp:Sub(sg) + sum=sum-sg:GetFirst():GetLevel() + sp=sp:Filter(c511001261.filter,nil,e,tp,sum) + ft=ft-1 + end + if spg:GetCount()>0 then + Duel.SpecialSummon(spg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001262.lua b/script/c511001262.lua new file mode 100644 index 00000000..10c80631 --- /dev/null +++ b/script/c511001262.lua @@ -0,0 +1,62 @@ +--Metabolic Storm +function c511001262.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001262.target) + e1:SetOperation(c511001262.activate) + e1:SetHintTiming(0,TIMING_END_PHASE) + c:RegisterEffect(e1) + if not c511001262.global_check then + c511001262.global_check=true + c511001262[0]=0 + c511001262[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + ge1:SetCode(EVENT_DESTROY) + ge1:SetLabelObject(e1) + ge1:SetOperation(c511001262.damop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001262.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001262.chkfilter(c,tp,re) + return c:IsType(TYPE_MONSTER) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp + and bit.band(c:GetReason(),0x41)==0x41 and re:GetOwner():IsSetCard(0x1205) +end +function c511001262.damop(e,tp,eg,ep,ev,re,r,rp) + local g1=eg:Filter(c511001262.chkfilter,nil,tp,re) + local g2=eg:Filter(c511001262.chkfilter,nil,1-tp,re) + if g1:GetCount()>0 then + local sum=g1:GetSum(Card.GetAttack) + c511001262[tp]=c511001262[tp]+sum + end + if g2:GetCount()>0 then + local sum=g2:GetSum(Card.GetAttack) + c511001262[1-tp]=c511001262[1-tp]+sum + end +end +function c511001262.clear(e,tp,eg,ep,ev,re,r,rp) + c511001262[0]=0 + c511001262[1]=0 +end +function c511001262.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return c511001262[tp]>0 or c511001262[1-tp]>0 end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511001262.activate(e,tp,eg,ep,ev,re,r,rp) + if c511001262[tp]>0 then + Duel.Damage(tp,c511001262[tp],REASON_EFFECT) + end + if c511001262[1-tp]>0 then + Duel.Damage(1-tp,c511001262[1-tp],REASON_EFFECT) + end +end diff --git a/script/c511001263.lua b/script/c511001263.lua new file mode 100644 index 00000000..92e89912 --- /dev/null +++ b/script/c511001263.lua @@ -0,0 +1,50 @@ +--Monster Pie +function c511001263.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c511001263.condition) + e1:SetTarget(c511001263.target) + e1:SetOperation(c511001263.operation) + c:RegisterEffect(e1) +end +function c511001263.filter(c,tp) + return c:GetPreviousControler()~=tp +end +function c511001263.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x205) +end +function c511001263.condition(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c511001263.filter,nil,tp) + return ct>0 and Duel.IsExistingMatchingCard(c511001263.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001263.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:FilterCount(c511001263.filter,nil,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>ct-1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001264,0,0x4011,1000,1000,3,RACE_SPELLCASTER,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,0,0) +end +function c511001263.operation(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c511001263.filter,nil,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>ct-1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001264,0,0x4011,1000,1000,3,RACE_SPELLCASTER,ATTRIBUTE_DARK) then + for i=1,ct do + local token=Duel.CreateToken(tp,511001264) + Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DESTROY) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511001263.damop) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + end + Duel.SpecialSummonComplete() + end +end +function c511001263.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,1000,REASON_EFFECT) +end diff --git a/script/c511001265.lua b/script/c511001265.lua new file mode 100644 index 00000000..9d9ccae7 --- /dev/null +++ b/script/c511001265.lua @@ -0,0 +1,70 @@ +--Rose Curse +function c511001265.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511001265) + e1:SetCondition(c511001265.damcon) + e1:SetTarget(c511001265.damtg) + e1:SetOperation(c511001265.damop) + c:RegisterEffect(e1) + if not c511001265.global_check then + c511001265.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511001265.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511001265.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511001265.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511001265.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511001265.damcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + e:SetLabel(ev) + return ec:IsControler(1-tp) and ev>0 +end +function c511001265.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c511001265.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001266.lua b/script/c511001266.lua new file mode 100644 index 00000000..fafded1b --- /dev/null +++ b/script/c511001266.lua @@ -0,0 +1,66 @@ +--Sacred Arrow +function c511001266.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001266,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetTarget(c511001266.damtg) + e2:SetOperation(c511001266.damop) + c:RegisterEffect(e2) + if not c511001266.global_check then + c511001266.global_check=true + c511001266[0]=0 + c511001266[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + ge1:SetCode(EVENT_DESTROY) + ge1:SetOperation(c511001266.op) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001266.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001266.chkfilter(c,tp) + return c:IsType(TYPE_MONSTER) and c:IsPreviousLocation(LOCATION_MZONE) and c:IsLocation(LOCATION_GRAVE) + and c:GetPreviousControler()==tp +end +function c511001266.op(e,tp,eg,ep,ev,re,r,rp) + local ct1=eg:FilterCount(c511001266.chkfilter,nil,tp) + local ct2=eg:FilterCount(c511001266.chkfilter,nil,1-tp) + if ct1>0 then + c511001266[0]=c511001266[0]+ct1 + end + if ct2>0 then + c511001266[1]=c511001266[1]+ct2 + end +end +function c511001266.clear(e,tp,eg,ep,ev,re,r,rp) + c511001266[0]=0 + c511001266[1]=0 +end +function c511001266.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,c511001266[0]*400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,c511001266[1]*400) +end +function c511001266.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Damage(tp,c511001266[0]*400,REASON_EFFECT,true) + Duel.Damage(1-tp,c511001266[1]*400,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511001267.lua b/script/c511001267.lua new file mode 100644 index 00000000..c8db2594 --- /dev/null +++ b/script/c511001267.lua @@ -0,0 +1,21 @@ +--Rank Wall +function c511001267.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001267.condition) + e1:SetOperation(c511001267.activate) + c:RegisterEffect(e1) +end +function c511001267.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return tp~=Duel.GetTurnPlayer() and a:IsType(TYPE_XYZ) and d and d:IsType(TYPE_XYZ) + and d:GetRank()>a:GetRank() +end +function c511001267.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511001268.lua b/script/c511001268.lua new file mode 100644 index 00000000..4438bd90 --- /dev/null +++ b/script/c511001268.lua @@ -0,0 +1,80 @@ +--Reincarnation Ring +function c511001268.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001268.cost) + e1:SetTarget(c511001268.target) + e1:SetOperation(c511001268.activate) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_LEAVE_FIELD_P) + e2:SetOperation(c511001268.checkop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511001268.desop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --destroy2 + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c511001268.descon2) + e4:SetOperation(c511001268.desop2) + c:RegisterEffect(e4) +end +function c511001268.filter(c,e,tp) + local lv=c:GetLevel() + return lv>0 and Duel.IsExistingMatchingCard(c511001268.spfilter,tp,LOCATION_GRAVE,0,1,nil,lv,e,tp) +end +function c511001268.spfilter(c,lv,e,tp) + return c:GetLevel()==lv*2 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001268.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001268.filter,1,nil,e,tp) end + local rg=Duel.SelectReleaseGroup(tp,c511001268.filter,1,1,nil,e,tp) + Duel.Release(rg,REASON_COST) + e:SetLabel(rg:GetFirst():GetLevel()) +end +function c511001268.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001268.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + local lv=e:GetLabel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001268.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,lv,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + e:GetHandler():SetCardTarget(g:GetFirst()) + end +end +function c511001268.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c511001268.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511001268.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001268.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001269.lua b/script/c511001269.lua new file mode 100644 index 00000000..c1d498be --- /dev/null +++ b/script/c511001269.lua @@ -0,0 +1,48 @@ +--Unfinished Time Box +function c511001269.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DRAW) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001269.condition) + e1:SetTarget(c511001269.target) + e1:SetOperation(c511001269.operation) + c:RegisterEffect(e1) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511001269.spop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c511001269.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp +end +function c511001269.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return eg:GetCount()==1 and ec:IsReason(REASON_BATTLE) and ec:GetPreviousControler()==tp +end +function c511001269.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst():GetReasonCard() + if chk==0 then return tc:IsOnField() and tc:IsAbleToRemove() and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001269.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) then + e:SetLabelObject(tc) + tc:RegisterFlagEffect(511001269,RESET_EVENT+0x1fe0000,0,1) + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c511001269.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject():GetLabelObject() + if tc and tc:GetFlagEffect(511001269)>0 and tc:IsCanBeSpecialSummoned(e,0,1-tp,false,false) then + Duel.SpecialSummon(tc,0,1-tp,1-tp,false,false,POS_FACEUP) + end + e:GetLabelObject():SetLabelObject(nil) +end diff --git a/script/c511001270.lua b/script/c511001270.lua new file mode 100644 index 00000000..2f962b00 --- /dev/null +++ b/script/c511001270.lua @@ -0,0 +1,30 @@ +--Amber Pitfall +function c511001270.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001270.condition) + e1:SetTarget(c511001270.target) + e1:SetOperation(c511001270.activate) + c:RegisterEffect(e1) +end +function c511001270.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001270.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,Duel.GetAttacker(),1,0,0) +end +function c511001270.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + Duel.NegateAttack() + if Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001271.lua b/script/c511001271.lua new file mode 100644 index 00000000..14aae74c --- /dev/null +++ b/script/c511001271.lua @@ -0,0 +1,52 @@ +--Soul Arena +function c511001271.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001271.condition) + e2:SetCost(c511001271.cost) + e2:SetTarget(c511001271.target) + e2:SetOperation(c511001271.operation) + c:RegisterEffect(e2) +end +function c511001271.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:GetRank()>=8 and c:IsSetCard(0x48) +end +function c511001271.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001271.cfilter,1,nil) +end +function c511001271.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c511001271.spfilter(c,e,tp) + return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001271.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001271.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001271.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001271.spfilter,tp,LOCATION_EXTRA,0,ft,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001272.lua b/script/c511001272.lua new file mode 100644 index 00000000..4d277075 --- /dev/null +++ b/script/c511001272.lua @@ -0,0 +1,33 @@ +--Damage Capture +function c511001272.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c511001272.con) + e1:SetTarget(c511001272.tg) + e1:SetOperation(c511001272.op) + c:RegisterEffect(e1) +end +function c511001272.con(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and tp~=rp and bit.band(r,REASON_BATTLE)==0 +end +function c511001272.tg(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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001272.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(ev) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001273.lua b/script/c511001273.lua new file mode 100644 index 00000000..a023ecc2 --- /dev/null +++ b/script/c511001273.lua @@ -0,0 +1,162 @@ +--Number 37: Hope Woven Dragon Spider Shark +function c511001273.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --atk down + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(511001273,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001273.atkcon) + e1:SetCost(c511001273.atkcost) + e1:SetTarget(c511001273.atktg) + e1:SetOperation(c511001273.atkop) + c:RegisterEffect(e1) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c511001273.regop) + c:RegisterEffect(e2) + --spsummon self + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001273,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetCondition(c511001273.selcon) + e3:SetTarget(c511001273.seltg) + e3:SetOperation(c511001273.selop) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001273,3)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c511001273.numspcon) + e4:SetTarget(c511001273.numsptg) + e4:SetOperation(c511001273.numspop) + c:RegisterEffect(e4) + --battle indestructable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e5:SetValue(c511001273.indes) + c:RegisterEffect(e5) + if not c511001273.global_check then + c511001273.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001273.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001273.xyz_number=37 +function c511001273.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001273.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001273.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511001273.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local gc=g:GetFirst() + while gc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + gc:RegisterEffect(e1) + gc=g:GetNext() + end +end +function c511001273.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if bit.band(c:GetPreviousLocation(),LOCATION_MZONE)~=0 and c:IsReason(REASON_DESTROY) then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001273,1)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_GRAVE) + e1:SetTarget(c511001273.sptg) + e1:SetOperation(c511001273.spop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511001273.spfilter(c,e,tp,tid) + return c:IsReason(REASON_DESTROY) and c:GetTurnID()==tid and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetCode()~=37279508 +end +function c511001273.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001273.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,Duel.GetTurnCount()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001273.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001273.spfilter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp,Duel.GetTurnCount()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001273.selcon(e,tp,eg,ep,ev,re,r,rp) + local go=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local gtp=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + return go:GetCount()>0 and gtp:GetCount()>0 and go:GetSum(Card.GetAttack)>=gtp:GetSum(Card.GetAttack)*2 +end +function c511001273.seltg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511001273.selop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP) +end +function c511001273.numspcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511001273.numspfilter(c,e,tp) + return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001273.numsptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return false end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001273.numspfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001273.numspop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001273.indes(e,c) + return not c:IsSetCard(0x48) +end +function c511001273.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,37279508) + Duel.CreateToken(1-tp,37279508) +end diff --git a/script/c511001274.lua b/script/c511001274.lua new file mode 100644 index 00000000..dd84b16d --- /dev/null +++ b/script/c511001274.lua @@ -0,0 +1,53 @@ +--ブラッド・メフィスト +function c511001274.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001274,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001274.damtg) + e1:SetOperation(c511001274.damop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001274,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_SSET) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511001274.damcon2) + e2:SetTarget(c511001274.damtg2) + e2:SetOperation(c511001274.damop2) + c:RegisterEffect(e2) +end +function c511001274.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) +end +function c511001274.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + Duel.Damage(p,ct*300,REASON_EFFECT) +end +function c511001274.damcon2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsControler,1,nil,1-tp) +end +function c511001274.damtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511001274.damop2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001275.lua b/script/c511001275.lua new file mode 100644 index 00000000..f0d4a5e4 --- /dev/null +++ b/script/c511001275.lua @@ -0,0 +1,163 @@ +--Number 38: Hope Harbinger Dragon Titanic Galaxy +function c511001275.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,2) + c:EnableReviveLimit() + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001275,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001275.condition) + e1:SetTarget(c511001275.target) + e1:SetOperation(c511001275.activate) + c:RegisterEffect(e1) + --attach + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001275,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetLabelObject(e1) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511001275.atcon) + e2:SetOperation(c511001275.atop) + c:RegisterEffect(e2) + --change battle target + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001275,2)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511001275.con) + e3:SetCost(c511001275.cost) + e3:SetOperation(c511001275.op) + c:RegisterEffect(e3) + --gain atk + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001275,3)) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_DESTROY) + e4:SetCondition(c511001275.atkcon1) + e4:SetOperation(c511001275.atkop1) + c:RegisterEffect(e4) + --xyz gains atk + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511001275,4)) + e5:SetCategory(CATEGORY_ATKCHANGE) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e5:SetCode(EVENT_DESTROYED) + e5:SetTarget(c511001275.atktg2) + e5:SetOperation(c511001275.atkop2) + c:RegisterEffect(e5) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511001275.indes) + c:RegisterEffect(e6) + if not c511001275.global_check then + c511001275.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001275.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001275.xyz_number=38 +function c511001275.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp~=tp + and re:IsActiveType(TYPE_SPELL) and Duel.IsChainDisablable(ev) +end +function c511001275.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsAbleToRemove() and re:GetHandler():IsRelateToEffect(re) and e:GetHandler():IsAbleToRemove() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,2,0,0) + end +end +function c511001275.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + if re:GetHandler():IsRelateToEffect(re) and e:GetHandler():IsRelateToEffect(e) then + local g=Group.FromCards(e:GetHandler()) + g:Merge(eg) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + eg:GetFirst():RegisterFlagEffect(511001275,RESET_EVENT+0x1fe0000,0,1) + e:GetHandler():RegisterFlagEffect(511001275,RESET_EVENT+0x0fe0000,0,1) + e:SetLabelObject(eg:GetFirst()) + end +end +function c511001275.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject():GetLabelObject() + return c:GetPreviousLocation()==LOCATION_REMOVED and c:GetFlagEffect(511001275)>0 and tc and tc:GetFlagEffect(511001275)>0 +end +function c511001275.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.Overlay(e:GetHandler(),Group.FromCards(e:GetLabelObject():GetLabelObject())) + e:GetLabelObject():SetLabelObject(nil) +end +function c511001275.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()~=e:GetHandler() +end +function c511001275.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001275.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.ChangeAttackTarget(c) + end +end +function c511001275.atkfilter(c,tp) + return c:IsReason(REASON_DESTROY) and c:IsControler(tp) and c:GetPreviousControler()==tp and c:IsType(TYPE_XYZ) +end +function c511001275.atkcon1(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001275.atkfilter,nil,tp) + return g:GetCount()==1 and g:GetFirst()~=e:GetHandler() +end +function c511001275.atkop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=eg:Filter(c511001275.atkfilter,nil,tp) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(g:GetFirst():GetBaseAttack()) + c:RegisterEffect(e1) +end +function c511001275.xyzfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001275.atktg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001275.xyzfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001275.atkop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(e:GetHandler():GetPreviousAttackOnField()) + tc:RegisterEffect(e1) + end +end +function c511001275.indes(e,c) + return not c:IsSetCard(0x48) +end +function c511001275.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,63767246) + Duel.CreateToken(1-tp,63767246) +end diff --git a/script/c511001277.lua b/script/c511001277.lua new file mode 100644 index 00000000..fbd64287 --- /dev/null +++ b/script/c511001277.lua @@ -0,0 +1,35 @@ +--Speedroid Menkoto +function c511001277.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001277,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001277.condition) + e1:SetTarget(c511001277.target) + e1:SetOperation(c511001277.operation) + c:RegisterEffect(e1) +end +function c511001277.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp +end +function c511001277.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + if g:GetCount()>0 then + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) + end +end +function c511001277.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,0,LOCATION_MZONE,nil) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + end +end diff --git a/script/c511001278.lua b/script/c511001278.lua new file mode 100644 index 00000000..8654214a --- /dev/null +++ b/script/c511001278.lua @@ -0,0 +1,37 @@ +--Synchro Cracker +function c511001278.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001278.target) + e1:SetOperation(c511001278.activate) + c:RegisterEffect(e1) +end +function c511001278.filter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToExtra() + and Duel.IsExistingMatchingCard(c511001278.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,c:GetAttack()) +end +function c511001278.desfilter(c,atk) + return c:IsFaceup() and c:IsDestructable() and c:GetAttack()0 then + Duel.BreakEffect() + local sg=Duel.GetMatchingGroup(c511001278.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tc:GetAttack()) + Duel.Destroy(sg,REASON_EFFECT) + end +end diff --git a/script/c511001279.lua b/script/c511001279.lua new file mode 100644 index 00000000..5c6df0bb --- /dev/null +++ b/script/c511001279.lua @@ -0,0 +1,49 @@ +--Fluffal Wing +function c511001279.initial_effect(c) + --banish, draw + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511001279.con) + e1:SetTarget(c511001279.tg) + e1:SetOperation(c511001279.op) + c:RegisterEffect(e1) +end +function c511001279.cfilter(c) + return c:IsFaceup() and c:IsCode(70245411) +end +function c511001279.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001279.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511001279.filter(c) + return c:IsCode(72413000) and c:IsAbleToRemove() +end +function c511001279.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001279.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001279.filter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511001279.filter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,2,0,0) +end +function c511001279.trfilter(c) + return c:IsReleasableByEffect() and c:IsCode(70245411) +end +function c511001279.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g:FilterCount(Card.IsRelateToEffect,nil,e)==2 then + if Duel.Remove(g,POS_FACEUP,REASON_EFFECT) then + Duel.BreakEffect() + if Duel.Draw(tp,2,REASON_EFFECT) and Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingMatchingCard(c511001279.trfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.SelectYesNo(tp,aux.Stringid(90434926,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local tr=Duel.SelectMatchingCard(tp,c511001279.trfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + if tr:GetCount()>0 and Duel.Release(tr,REASON_EFFECT)~=0 then + Duel.Draw(tp,1,REASON_EFFECT) + end + end + end + end +end diff --git a/script/c511001280.lua b/script/c511001280.lua new file mode 100644 index 00000000..34aa571d --- /dev/null +++ b/script/c511001280.lua @@ -0,0 +1,29 @@ +--Card of Endurance +function c511001280.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c511001280.con) + e1:SetTarget(c511001280.tg) + e1:SetOperation(c511001280.op) + c:RegisterEffect(e1) +end +function c511001280.con(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return ep==tp and (tp==rp or (at and at:IsControler(tp))) +end +function c511001280.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001280.op(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + Duel.Draw(p,1,REASON_EFFECT) +end diff --git a/script/c511001281.lua b/script/c511001281.lua new file mode 100644 index 00000000..b5f803ab --- /dev/null +++ b/script/c511001281.lua @@ -0,0 +1,26 @@ +--Level Thunder +function c511001281.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001281.target) + e1:SetOperation(c511001281.activate) + c:RegisterEffect(e1) +end +function c511001281.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511001281.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001281.filter,tp,LOCATION_MZONE,0,1,nil) end + local dam=Duel.GetMatchingGroup(c511001281.filter,tp,LOCATION_MZONE,0,nil):GetSum(Card.GetLevel)*100 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511001281.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroup(c511001281.filter,tp,LOCATION_MZONE,0,nil):GetSum(Card.GetLevel)*100 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511001282.lua b/script/c511001282.lua new file mode 100644 index 00000000..74620b4e --- /dev/null +++ b/script/c511001282.lua @@ -0,0 +1,55 @@ +--The Phantom Knights of Dusty Robe +function c511001282.initial_effect(c) + --change pos + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetDescription(aux.Stringid(511001282,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001282.con) + e1:SetOperation(c511001282.op) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetCondition(c511001282.atkcon) + e2:SetTarget(c511001282.atktg) + e2:SetOperation(c511001282.atkop) + c:RegisterEffect(e2) +end +function c511001282.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c511001282.op(e,tp,eg,ep,ev,re,r,rp,chk) + if e:GetHandler():IsRelateToEffect(e) then + Duel.ChangePosition(e:GetHandler(),POS_FACEUP_DEFENSE) + end +end +function c511001282.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(c:GetPreviousPosition(),POS_ATTACK)~=0 and c:IsFaceup() and c:IsDefensePos() + and re and re:GetOwner()==e:GetOwner() +end +function c511001282.filter(c) + return c:IsFaceup() and c:IsSetCard(0x204) +end +function c511001282.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001282.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001282.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001282.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001282.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(800) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001283.lua b/script/c511001283.lua new file mode 100644 index 00000000..bd84b9c6 --- /dev/null +++ b/script/c511001283.lua @@ -0,0 +1,44 @@ +--Booby Trap E +function c511001283.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001283.cost) + e1:SetTarget(c511001283.target) + e1:SetOperation(c511001283.activate) + c:RegisterEffect(e1) +end +function c511001283.cfilter(c) + return c:IsType(TYPE_TRAP) and c:IsType(TYPE_CONTINUOUS) and c:IsFacedown() and c:CheckActivateEffect(true,true,true)~=nil + and c:GetCode()~=511001283 +end +function c511001283.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001283.cfilter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511001283.cfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + e:SetLabelObject(g:GetFirst()) +end +function c511001283.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return true end + local tc=e:GetLabelObject() + if not tc then return end + local te,eg,ep,ev,re,r,rp=tc:CheckActivateEffect(true,true,true) + e:SetLabelObject(te) + Duel.ClearTargetCard() + local tg=te:GetTarget() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg and tg(e,tp,eg,ep,ev,re,r,rp,0) then tg(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c511001283.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local te=e:GetLabelObject() + local code=te:GetHandler():GetOriginalCode() + c:CopyEffect(code,RESET_EVENT+0x1fc0000,1) + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end diff --git a/script/c511001284.lua b/script/c511001284.lua new file mode 100644 index 00000000..fbac43f8 --- /dev/null +++ b/script/c511001284.lua @@ -0,0 +1,49 @@ +--Phantom Fog Blade +function c511001284.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001284.condition) + e1:SetTarget(c511001284.target) + e1:SetOperation(c511001284.activate) + c:RegisterEffect(e1) +end +function c511001284.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001284.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) +end +function c511001284.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack(tc) 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_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001284.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK) + tc:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e3:SetValue(1) + tc:RegisterEffect(e3) + end + end +end +function c511001284.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end diff --git a/script/c511001285.lua b/script/c511001285.lua new file mode 100644 index 00000000..04dcf545 --- /dev/null +++ b/script/c511001285.lua @@ -0,0 +1,43 @@ +--Final Light +function c511001285.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001285.cost) + e1:SetTarget(c511001285.target) + e1:SetOperation(c511001285.activate) + c:RegisterEffect(e1) +end +function c511001285.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 c511001285.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001285.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001285.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001285.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001285.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001285.spfilter(c,e,tp) + return c:IsAttackBelow(2000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001285.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local sg=Duel.GetMatchingGroup(c511001285.spfilter,1-tp,LOCATION_GRAVE,0,nil,e,1-tp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and sg:GetCount()>0 and Duel.SelectYesNo(1-tp,aux.Stringid(57554544,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + Duel.SpecialSummon(sg:Select(1-tp,1,1,nil),0,1-tp,1-tp,false,false,POS_FACEUP_ATTACK) + end + end +end diff --git a/script/c511001286.lua b/script/c511001286.lua new file mode 100644 index 00000000..35fa5e37 --- /dev/null +++ b/script/c511001286.lua @@ -0,0 +1,33 @@ +--Moonlight Blue Cat +function c511001286.initial_effect(c) + --double atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001286,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511001286.target) + e1:SetOperation(c511001286.operation) + c:RegisterEffect(e1) +end +function c511001286.filter(c) + return c:IsFaceup() and c:IsSetCard(0xdf) +end +function c511001286.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001286.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001286.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001286.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001286.operation(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_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001287.lua b/script/c511001287.lua new file mode 100644 index 00000000..c909d739 --- /dev/null +++ b/script/c511001287.lua @@ -0,0 +1,32 @@ +--Lunar Eclipse +function c511001287.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001287.condition) + e1:SetOperation(c511001287.activate) + c:RegisterEffect(e1) +end +function c511001287.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xdf) +end +function c511001287.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001287.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001287.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xdf)) + e1:SetValue(c511001287.efilter) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + Duel.RegisterEffect(e2,tp) +end +function c511001287.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) and e:GetOwnerPlayer()~=te:GetOwnerPlayer() +end diff --git a/script/c511001288.lua b/script/c511001288.lua new file mode 100644 index 00000000..692a21d8 --- /dev/null +++ b/script/c511001288.lua @@ -0,0 +1,30 @@ +--Moonlight Perfume +function c511001288.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001288.target) + e1:SetOperation(c511001288.activate) + c:RegisterEffect(e1) +end +function c511001288.filter(c,e,tp) + return c:IsSetCard(0xdf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001288.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001288.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001288.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001288.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001288.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001289.lua b/script/c511001289.lua new file mode 100644 index 00000000..9e62b824 --- /dev/null +++ b/script/c511001289.lua @@ -0,0 +1,97 @@ +--Moonlight Cat Dancer +function c511001289.initial_effect(c) + --fustion material + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsSetCard,0xdf),2,true) + c:EnableReviveLimit() + --attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001289,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001289.cost) + e1:SetOperation(c511001289.operation) + c:RegisterEffect(e1) +end +function c511001289.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,e:GetHandler(),0xdf) + and e:GetHandler():GetFlagEffect(511001289)==0 end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,e:GetHandler(),0xdf) + Duel.Release(g,REASON_COST) +end +function c511001289.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:GetFlagEffect(511001289)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(9999) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511001289.unop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_DAMAGE_CALCULATING) + e3:SetCondition(c511001289.indescon) + e3:SetOperation(c511001289.indesop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE) + e4:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e4:SetTarget(c511001289.valtg) + e4:SetValue(c511001289.vala) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e4) + c:RegisterFlagEffect(511001289,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c511001289.unop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if c:GetFlagEffect(511001288)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + c:RegisterFlagEffect(511001288,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + end + if bc then + if bc:GetFlagEffect(511001286)>0 then + bc:RegisterFlagEffect(511001287,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + else + bc:RegisterFlagEffect(511001286,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + end + end +end +function c511001289.valtg(e,c) + return c:GetFlagEffect(511001287)>0 +end +function c511001289.vala(e,c) + return c==e:GetHandler() +end +function c511001289.indescon(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + return bc and bc:GetFlagEffect(511001286)==0 +end +function c511001289.indesop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + bc:RegisterEffect(e1,true) +end diff --git a/script/c511001290.lua b/script/c511001290.lua new file mode 100644 index 00000000..9a08f684 --- /dev/null +++ b/script/c511001290.lua @@ -0,0 +1,38 @@ +--Moonlight Purple Butterfly +function c511001290.initial_effect(c) + --gain atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001290,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001290.cost) + e1:SetTarget(c511001290.tg) + e1:SetOperation(c511001290.op) + c:RegisterEffect(e1) +end +function c511001290.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511001290.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) +end +function c511001290.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001290.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001290.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001290.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001290.op(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_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001291.lua b/script/c511001291.lua new file mode 100644 index 00000000..ee2a22eb --- /dev/null +++ b/script/c511001291.lua @@ -0,0 +1,30 @@ +--Moonlight White Rabbit +function c511001291.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetDescription(aux.Stringid(511001291,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001291.rettg) + e1:SetOperation(c511001291.retop) + c:RegisterEffect(e1) +end +function c511001291.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c511001291.rettg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511001291.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001291.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511001291.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511001291.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c511001292.lua b/script/c511001292.lua new file mode 100644 index 00000000..22f158c4 --- /dev/null +++ b/script/c511001292.lua @@ -0,0 +1,42 @@ +--Moonlight Dance +function c511001292.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001292.condition) + e1:SetTarget(c511001292.tg) + e1:SetOperation(c511001292.op) + c:RegisterEffect(e1) +end +function c511001292.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsSetCard(0xdf) +end +function c511001292.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(aux.TRUE,1-tp,LOCATION_MZONE,1,nil) end + local sg=Duel.GetFieldGroup(1-tp,aux.TRUE,tp,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,sg,sg:GetCount(),0,0) +end +function c511001292.op(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetFieldGroup(1-tp,LOCATION_MZONE,nil) + if sg:GetCount()>0 then + Duel.ChangePosition(sg,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e2:SetValue(tc:GetDefense()/2) + tc:RegisterEffect(e2) + tc=sg:GetNext() + end + end +end diff --git a/script/c511001293.lua b/script/c511001293.lua new file mode 100644 index 00000000..37d30589 --- /dev/null +++ b/script/c511001293.lua @@ -0,0 +1,28 @@ +--Battleguard #3 +function c511001293.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001293,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001293.target) + e1:SetOperation(c511001293.operation) + c:RegisterEffect(e1) +end +function c511001293.spfilter(c,e,tp) + return c:IsCode(511001294) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001293.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001293.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001293.operation(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001293.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 diff --git a/script/c511001294.lua b/script/c511001294.lua new file mode 100644 index 00000000..a420e5a9 --- /dev/null +++ b/script/c511001294.lua @@ -0,0 +1,24 @@ +--Battleguard #4 +function c511001294.initial_effect(c) + --negate attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001294,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001294.condition) + e1:SetCost(c511001294.cost) + e1:SetOperation(c511001294.operation) + c:RegisterEffect(e1) +end +function c511001294.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) and d:IsFaceup() and (d:IsSetCard(0x2310) or d:IsCode(39389320) or d:IsCode(40453765) or d:IsCode(20394040)) +end +function c511001294.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511001294)==0 end + e:GetHandler():RegisterFlagEffect(511001294,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) +end +function c511001294.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511001295.lua b/script/c511001295.lua new file mode 100644 index 00000000..8bca9461 --- /dev/null +++ b/script/c511001295.lua @@ -0,0 +1,162 @@ +--Battleguard Mad Shaman +function c511001295.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17132130,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetValue(1) + e1:SetCondition(c511001295.spcon) + e1:SetOperation(c511001295.spop) + c:RegisterEffect(e1) + --control + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_CONTROL) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetCondition(c511001295.ctcon) + e3:SetTarget(c511001295.cttg) + e3:SetOperation(c511001295.ctop) + c:RegisterEffect(e3) + --cannot be battle target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e4:SetCondition(c511001295.con) + e4:SetValue(aux.imval1) + c:RegisterEffect(e4) + --switch + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511001295,0)) + e5:SetCategory(CATEGORY_CONTROL) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EVENT_SUMMON_SUCCESS) + e5:SetTarget(c511001295.swtg) + e5:SetOperation(c511001295.swop) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e6) + local e7=e5:Clone() + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e7) + --control + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_CONTROL_CHANGED) + e8:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e8:SetRange(LOCATION_MZONE) + e8:SetOperation(c511001295.conop) + c:RegisterEffect(e8) +end +function c511001295.trfilter(c) + return (c:IsSetCard(0x2310) or c:IsCode(39389320) or c:IsCode(40453765) or c:IsCode(20394040)) +end +function c511001295.spcon(e,c) + if c==nil then return true end + local g=Duel.GetReleaseGroup(c:GetControler()) + local d=g:FilterCount(c511001295.trfilter,nil) + local ct=g:GetCount() + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and d>0 and ct>2 +end +function c511001295.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.GetReleaseGroup(c:GetControler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg1=g:FilterSelect(tp,c511001295.trfilter,1,1,nil) + g:RemoveCard(sg1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg2=g:Select(tp,2,2,nil) + sg2:Merge(sg1) + Duel.Release(sg2,REASON_COST) +end +function c511001295.ctcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetCardTarget() + return not g:IsExists(Card.IsControler,1,nil,tp) +end +function c511001295.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511001295.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.GetControl(tc,tp) then + if c:GetFlagEffect(511001295)==0 then + c:RegisterFlagEffect(511001295,RESET_EVENT+0x1fe0000,0,0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511001295.cttg2) + e1:SetValue(c511001295.ctval) + c:RegisterEffect(e1) + end + c:SetCardTarget(tc) + end + end +end +function c511001295.ctval(e,c) + return e:GetHandlerPlayer() +end +function c511001295.cttg2(e,c) + return e:GetHandler():IsHasCardTarget(c) +end +function c511001295.filter(c,e) + return e:GetHandler():IsHasCardTarget(c) +end +function c511001295.con(e) + local c=e:GetHandler() + return Duel.IsExistingMatchingCard(c511001295.filter,c:GetControler(),LOCATION_MZONE,0,1,c,e) +end +function c511001295.swfilter(c,tp,atk) + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:GetSummonPlayer()==1-tp + and c:GetAttack()>atk +end +function c511001295.swtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetHandler():GetCardTarget():Filter(Card.IsControler,nil,tp):GetFirst() + if not g then return false end + local atk=g:GetAttack() + if chk==0 then return eg:IsExists(c511001295.swfilter,1,nil,tp,atk) end + local g2=eg:Filter(c511001295.swfilter,nil,tp,atk) + if g2:GetCount()>0 then + if g2:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + g2=g2:Select(tp,1,1,nil) + end + end + g2:AddCard(g) + Duel.SetTargetCard(g2) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g2,2,0,0) +end +function c511001295.swop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + g=g:Filter(Card.IsRelateToEffect,nil,e) + local g1=g:GetFirst() + local g2=g:GetNext() + if g1:IsControler(1-tp) then g1,g2=g2,g1 end + if g:GetCount()>1 then + Duel.SwapControl(g1,g2,0,0) + e:GetHandler():SetCardTarget(g2) + end +end +function c511001295.conop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetCardTarget():Filter(Card.IsControler,nil,tp) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local des=g:Select(tp,1,1,nil) + Duel.Destroy(des,REASON_EFFECT) + end +end diff --git a/script/c511001296.lua b/script/c511001296.lua new file mode 100644 index 00000000..6068e728 --- /dev/null +++ b/script/c511001296.lua @@ -0,0 +1,28 @@ +--Battleguard Magic +function c511001296.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_HAND) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511001296.condition) + e1:SetTarget(c511001296.target) + e1:SetOperation(c511001296.activate) + c:RegisterEffect(e1) +end +function c511001296.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return eg:GetCount()==1 and ec:IsPreviousLocation(LOCATION_ONFIELD) and ec:GetAttack()>0 and ec:IsType(TYPE_MONSTER) +end +function c511001296.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=eg:GetFirst() + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ec:GetAttack()/2) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ec:GetAttack()/2) +end +function c511001296.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c511001297.lua b/script/c511001297.lua new file mode 100644 index 00000000..0497f418 --- /dev/null +++ b/script/c511001297.lua @@ -0,0 +1,34 @@ +--Battleguard's Curse +function c511001297.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,51101297+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c511001297.condition) + e1:SetTarget(c511001297.target) + e1:SetOperation(c511001297.activate) + c:RegisterEffect(e1) +end +function c511001297.cfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x2310) or c:IsCode(39389320) or c:IsCode(40453765) or c:IsCode(20394040)) +end +function c511001297.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001297.cfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>=2 +end +function c511001297.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511001297.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp) + end +end diff --git a/script/c511001298.lua b/script/c511001298.lua new file mode 100644 index 00000000..ad412372 --- /dev/null +++ b/script/c511001298.lua @@ -0,0 +1,86 @@ +--Monk Halberd +function c511001298.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(c511001298.target) + e1:SetOperation(c511001298.operation) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetTarget(c511001298.reptg) + e2:SetOperation(c511001298.repop) + 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(c511001298.eqlimit) + c:RegisterEffect(e3) + --to deck + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_DESTROY) + e4:SetCondition(c511001298.damcon) + e4:SetTarget(c511001298.damtg) + e4:SetOperation(c511001298.damop) + c:RegisterEffect(e4) +end +function c511001298.eqlimit(e,c) + return c:IsRace(RACE_WARRIOR) +end +function c511001298.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511001298.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511001298.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001298.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001298.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001298.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) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + end +end +function c511001298.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipTarget():IsReason(REASON_BATTLE) + and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end + if Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:GetHandler():SetStatus(STATUS_DESTROY_CONFIRMED,true) + return true + else return false end +end +function c511001298.repop(e,tp,eg,ep,ev,re,r,rp,chk) + e:GetHandler():SetStatus(STATUS_DESTROY_CONFIRMED,false) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end +function c511001298.damcon(e,tp,eg,ep,ev,re,r,rp) + return re and re:GetHandler()==e:GetHandler() +end +function c511001298.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511001298.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001299.lua b/script/c511001299.lua new file mode 100644 index 00000000..65e4f136 --- /dev/null +++ b/script/c511001299.lua @@ -0,0 +1,60 @@ +--Shadow of Eyes +function c511001299.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001299.condition) + e1:SetTarget(c511001299.target) + e1:SetOperation(c511001299.activate) + c:RegisterEffect(e1) +end +function c511001299.cfilter(c) + return c:IsFaceup() and c:IsCode(76812113) +end +function c511001299.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001299.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end +function c511001299.filter(c) + return not c:IsPosition(POS_FACEUP_ATTACK) +end +function c511001299.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c511001299.filter,tp,0,LOCATION_MZONE,nil) + if chk==0 then return g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511001299.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511001299.filter,tp,0,LOCATION_MZONE,nil) + Duel.ChangePosition(g,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(511001299,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=g:GetNext() + end + local be=Effect.CreateEffect(e:GetHandler()) + be:SetType(EFFECT_TYPE_FIELD) + be:SetCode(EFFECT_CANNOT_EP) + be:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + be:SetTargetRange(0,1) + be:SetCondition(c511001299.becon) + be:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(be,tp) +end +function c511001299.befilter(c) + return c:GetFlagEffect(511001299)~=0 and c:IsAttackable() +end +function c511001299.becon(e) + return Duel.IsExistingMatchingCard(c511001299.befilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511001300.lua b/script/c511001300.lua new file mode 100644 index 00000000..c855fa09 --- /dev/null +++ b/script/c511001300.lua @@ -0,0 +1,64 @@ +--Respect Synchron +function c511001300.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_DELAYED_QUICKEFFECT) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c511001300.spcon) + e1:SetTarget(c511001300.sptg) + e1:SetOperation(c511001300.spop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001300.descon) + e2:SetOperation(c511001300.desop) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511001300.desop2) + c:RegisterEffect(e3) +end +function c511001300.cfilter(c,e,tp,r,rp) + return c:IsType(TYPE_SYNCHRO) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==1-tp and bit.band(r,REASON_EFFECT)~=0 + and rp~=tp and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c511001300.spcon(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001300.cfilter,nil,e,tp,r,rp) + return g:GetCount()==1 +end +function c511001300.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511001300.cfilter,nil,e,tp,r,rp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g:GetFirst(),1,tp,LOCATION_GRAVE) +end +function c511001300.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) + c:SetCardTarget(tc) + end +end +function c511001300.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001300.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511001300.desop2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001301.lua b/script/c511001301.lua new file mode 100644 index 00000000..e7b8a928 --- /dev/null +++ b/script/c511001301.lua @@ -0,0 +1,51 @@ +--Gadget Box +function c511001301.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001301.tg) + c:RegisterEffect(e1) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001301,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetLabel(3) + e2:SetCountLimit(1) + e2:SetTarget(c511001301.target) + e2:SetOperation(c511001301.operation) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c511001301.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetLabelObject():SetLabel(3) +end +function c511001301.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,511001302,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001301.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local ct=e:GetLabel() + ct=ct-1 + e:SetLabel(ct) + if ct<=0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001302,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_EARTH) then return end + local token=Duel.CreateToken(tp,511001302) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) +end diff --git a/script/c511001303.lua b/script/c511001303.lua new file mode 100644 index 00000000..75f88edd --- /dev/null +++ b/script/c511001303.lua @@ -0,0 +1,42 @@ +--Infestation +function c511001303.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001303.condition) + e1:SetTarget(c511001303.target) + e1:SetOperation(c511001303.activate) + c:RegisterEffect(e1) +end +function c511001303.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001303.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511001303.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local sc=g:GetFirst() + while sc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-100) + sc:RegisterEffect(e1) + sc=g:GetNext() + end + local dam1=Duel.GetMatchingGroupCount(nil,tp,LOCATION_MZONE,0,nil)*100 + local dam2=Duel.GetMatchingGroupCount(nil,tp,0,LOCATION_MZONE,nil)*100 + Duel.BreakEffect() + Duel.Damage(tp,dam1,REASON_EFFECT,true) + Duel.Damage(1-tp,dam2,REASON_EFFECT,true) + Duel.RDComplete() + end +end \ No newline at end of file diff --git a/script/c511001304.lua b/script/c511001304.lua new file mode 100644 index 00000000..0a29bb68 --- /dev/null +++ b/script/c511001304.lua @@ -0,0 +1,40 @@ +--Level Mirroring +function c511001304.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001304.target) + e1:SetOperation(c511001304.activate) + c:RegisterEffect(e1) +end +function c511001304.filter(c,tp) + local lv=c:GetLevel() + return lv>0 and c:IsFaceup() and Duel.IsExistingMatchingCard(c511001304.lvfilter,tp,0,LOCATION_MZONE,1,nil,lv) +end +function c511001304.lvfilter(c,lv) + return c:GetLevel()>0 and c:GetLevel()~=lv and c:IsFaceup() +end +function c511001304.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001304.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001304.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001304.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) +end +function c511001304.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511001304.lvfilter,tp,0,LOCATION_MZONE,1,1,nil,tc:GetLevel()) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(g:GetFirst():GetLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001305.lua b/script/c511001305.lua new file mode 100644 index 00000000..c67392c5 --- /dev/null +++ b/script/c511001305.lua @@ -0,0 +1,58 @@ +--Seal of Serket +function c511001305.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --remain field + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REMAIN_FIELD) + c:RegisterEffect(e2) + --sp summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001305,0)) + e3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511001305.spcon) + e3:SetTarget(c511001305.sptg) + e3:SetOperation(c511001305.spop) + c:RegisterEffect(e3) + --indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_INDESTRUCTABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e4:SetCondition(c511001305.incon) + e4:SetTarget(c511001305.infilter) + c:RegisterEffect(e4) +end +function c511001305.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511001305.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001305.cfilter,tp,LOCATION_SZONE,0,1,nil,511001306) + and Duel.IsExistingMatchingCard(c511001305.cfilter,tp,LOCATION_SZONE,0,1,nil,29762407) +end +function c511001305.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,89194033,0,0x21,2500,2000,6,RACE_FAIRY,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001305.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,89194033,0,0x21,2500,2000,6,RACE_FAIRY,ATTRIBUTE_EARTH) then return end + local token=Duel.CreateToken(tp,89194033) + Duel.SpecialSummon(token,0,tp,tp,true,false,POS_FACEUP) +end +function c511001305.incon(e) + return Duel.IsExistingMatchingCard(c511001305.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,511001306) +end +function c511001305.infilter(e,c) + return c:GetCode()==89194033 +end diff --git a/script/c511001306.lua b/script/c511001306.lua new file mode 100644 index 00000000..881caaf5 --- /dev/null +++ b/script/c511001306.lua @@ -0,0 +1,58 @@ +--Cup of Sealed Soul +function c511001306.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --remain field + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REMAIN_FIELD) + c:RegisterEffect(e2) + --sp summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001306,0)) + e3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511001306.spcon) + e3:SetTarget(c511001306.sptg) + e3:SetOperation(c511001306.spop) + c:RegisterEffect(e3) + --indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_INDESTRUCTABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e4:SetCondition(c511001306.incon) + e4:SetTarget(c511001306.infilter) + c:RegisterEffect(e4) +end +function c511001306.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511001306.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001306.cfilter,tp,LOCATION_SZONE,0,1,nil,511001305) + and Duel.IsExistingMatchingCard(c511001306.cfilter,tp,LOCATION_SZONE,0,1,nil,29762407) +end +function c511001306.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,89194033,0,0x21,2500,2000,6,RACE_FAIRY,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001306.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,89194033,0,0x21,2500,2000,6,RACE_FAIRY,ATTRIBUTE_EARTH) then return end + local token=Duel.CreateToken(tp,89194033) + Duel.SpecialSummon(token,0,tp,tp,true,false,POS_FACEUP) +end +function c511001306.incon(e) + return Duel.IsExistingMatchingCard(c511001306.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,511001305) +end +function c511001306.infilter(e,c) + return c:GetCode()==89194033 +end diff --git a/script/c511001307.lua b/script/c511001307.lua new file mode 100644 index 00000000..38c05bea --- /dev/null +++ b/script/c511001307.lua @@ -0,0 +1,36 @@ +--Energy Drain +function c511001307.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DRAW) + 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(c511001307.condition) + e1:SetTarget(c511001307.target) + e1:SetOperation(c511001307.activate) + c:RegisterEffect(e1) +end +function c511001307.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001307.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001307.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.Draw(tp,1,REASON_EFFECT)~=0 and tc:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001308.lua b/script/c511001308.lua new file mode 100644 index 00000000..d708f4ac --- /dev/null +++ b/script/c511001308.lua @@ -0,0 +1,49 @@ +--Lev. 2 Power Boost +function c511001308.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(c511001308.target) + e1:SetOperation(c511001308.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1200) + c:RegisterEffect(e2) + --def up + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(200) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511001308.eqlimit) + c:RegisterEffect(e4) +end +function c511001308.eqlimit(e,c) + return c:IsRace(RACE_INSECT) +end +function c511001308.filter(c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) +end +function c511001308.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001308.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001308.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001308.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001308.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 diff --git a/script/c511001309.lua b/script/c511001309.lua new file mode 100644 index 00000000..9fbdd877 --- /dev/null +++ b/script/c511001309.lua @@ -0,0 +1,25 @@ +--Judgment Blaster +function c511001309.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(c511001309.cost) + e1:SetTarget(c511001309.target) + e1:SetOperation(c511001309.activate) + c:RegisterEffect(e1) +end +function c511001309.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,5,e:GetHandler()) end + Duel.DiscardHand(tp,Card.IsDiscardable,5,5,REASON_COST+REASON_DISCARD) +end +function c511001309.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511001309.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511001310.lua b/script/c511001310.lua new file mode 100644 index 00000000..710891ad --- /dev/null +++ b/script/c511001310.lua @@ -0,0 +1,61 @@ +--Reckless Parasite +function c511001310.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001310.target) + e1:SetOperation(c511001310.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_RACE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCondition(c511001310.con) + e2:SetValue(RACE_INSECT) + c:RegisterEffect(e2) + --cannot release + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_UNRELEASABLE_SUM) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetCondition(c511001310.con) + e3:SetTarget(c511001310.efilter) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e4) +end +function c511001310.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001310.spfilter(c,e,tp) + return c:IsCode(27911549) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001310.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001310.filter,tp,0,LOCATION_DECK,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001310.activate(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,c511001310.spfilter,tp,0,LOCATION_DECK,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) + end +end +function c511001310.con(e) + return Duel.IsExistingMatchingCard(c511001310.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,27911549) + and Duel.IsExistingMatchingCard(c511001310.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,511001310) +end +function c511001310.cfilter(c,code) + return c:GetCode()==code and c:IsFaceup() +end +function c511001310.efilter(e,c) + return c:IsRace(RACE_INSECT) and c:GetOriginalRace()~=c:GetRace() and c:GetOriginalRace()~=RACE_INSECT +end diff --git a/script/c511001315.lua b/script/c511001315.lua new file mode 100644 index 00000000..ef440a9e --- /dev/null +++ b/script/c511001315.lua @@ -0,0 +1,32 @@ +--Attrition +function c511001315.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --lose atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001315.condition) + e2:SetOperation(c511001315.activate) + c:RegisterEffect(e2) +end +function c511001315.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if not at then return false end + if at:IsControler(tp) then at=Duel.GetAttacker() end + return at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511001315.activate(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if at:IsControler(tp) then at=Duel.GetAttacker() end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-ev) + at:RegisterEffect(e1) +end diff --git a/script/c511001316.lua b/script/c511001316.lua new file mode 100644 index 00000000..7762951f --- /dev/null +++ b/script/c511001316.lua @@ -0,0 +1,17 @@ +--Ninja Smoke Ball +function c511001316.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(c511001316.condition) + e1:SetOperation(c511001316.activate) + c:RegisterEffect(e1) +end +function c511001316.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511001316.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511001317.lua b/script/c511001317.lua new file mode 100644 index 00000000..01ac05ce --- /dev/null +++ b/script/c511001317.lua @@ -0,0 +1,23 @@ +--Mask of Impregnability +function c511001317.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001317.activate) + c:RegisterEffect(e1) +end +function c511001317.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(c511001317.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001317.damval(e,re,val,r,rp,rc) + if rp~=e:GetHandler():GetControler() then return 0 + else return val end +end diff --git a/script/c511001320.lua b/script/c511001320.lua new file mode 100644 index 00000000..aa330bb2 --- /dev/null +++ b/script/c511001320.lua @@ -0,0 +1,35 @@ +--Ninja Commando Kabuki +function c511001320.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001320,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511001320.sptg) + e1:SetOperation(c511001320.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511001320.filter(c,e,tp) + return c:IsSetCard(0x2b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001320.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001320.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001320.spop(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,c511001320.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001321.lua b/script/c511001321.lua new file mode 100644 index 00000000..c1f443c0 --- /dev/null +++ b/script/c511001321.lua @@ -0,0 +1,35 @@ +--Ninja Commander Ikusa +function c511001321.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001321,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511001321.sptg) + e1:SetOperation(c511001321.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511001321.filter(c,e,tp) + return c:IsCode(511001319) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001321.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001321.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001321.spop(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,c511001321.filter,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 diff --git a/script/c511001322.lua b/script/c511001322.lua new file mode 100644 index 00000000..291f6fe7 --- /dev/null +++ b/script/c511001322.lua @@ -0,0 +1,58 @@ +--Ninja Master Shogun +function c511001322.initial_effect(c) + --sum limit + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c511001322.sumlimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001322,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetTarget(c511001322.sptg) + e4:SetOperation(c511001322.spop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e5) + local e6=e4:Clone() + e6:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e6) +end +function c511001322.sumlimit(e) + return not Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,511001321) + or not Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,511001319) +end +function c511001322.filter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001322.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c511001322.filter,tp,LOCATION_DECK,0,1,nil,e,tp,511001319) + and Duel.IsExistingMatchingCard(c511001322.filter,tp,LOCATION_DECK,0,1,nil,e,tp,511001320) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c511001322.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 then return end + local g1=Duel.GetMatchingGroup(c511001322.filter,tp,LOCATION_DECK,0,nil,e,tp,511001319) + local g2=Duel.GetMatchingGroup(c511001322.filter,tp,LOCATION_DECK,0,nil,e,tp,511001320) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.SpecialSummon(sg1,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511001323.lua b/script/c511001323.lua new file mode 100644 index 00000000..08b08fcd --- /dev/null +++ b/script/c511001323.lua @@ -0,0 +1,95 @@ +--Great Kite of Ninja +function c511001323.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(c511001323.target) + e1:SetOperation(c511001323.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(c511001323.eqlimit) + c:RegisterEffect(e2) + --Indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(c511001323.indval) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e5:SetValue(aux.imval1) + c:RegisterEffect(e5) + --no target attack + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetCode(EFFECT_DIRECT_ATTACK) + e6:SetRange(LOCATION_SZONE) + e6:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e6:SetTarget(c511001323.dirtg) + c:RegisterEffect(e6) + --Direct attack + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetRange(LOCATION_SZONE) + e7:SetCountLimit(1) + e7:SetCost(c511001323.dacost) + e7:SetOperation(c511001323.daop) + c:RegisterEffect(e7) +end +function c511001323.eqlimit(e,c) + return c:IsCode(511001322) +end +function c511001323.filter(c) + return c:IsFaceup() and c:IsCode(511001322) +end +function c511001323.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001323.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001323.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001323.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001323.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 c511001323.indval(e,re,rp) + return re:IsActiveType(TYPE_SPELL) +end +function c511001323.dirfilter(c,e) + return c~=e:GetHandler():GetEquipTarget() +end +function c511001323.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511001323.dirfilter,c:GetControler(),0,LOCATION_MZONE,1,nil,e) +end +function c511001323.dacost(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,eq) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,eq) + Duel.Release(g,REASON_COST) +end +function c511001323.daop(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + local c=e:GetHandler() + if eq:IsFaceup() and c:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + eq:RegisterEffect(e1) + end +end diff --git a/script/c511001324.lua b/script/c511001324.lua new file mode 100644 index 00000000..13a4e331 --- /dev/null +++ b/script/c511001324.lua @@ -0,0 +1,60 @@ +--Ocean of Regeneration +function c511001324.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001324,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511001324.cost) + e2:SetTarget(c511001324.target) + e2:SetOperation(c511001324.operation) + c:RegisterEffect(e2) +end +function c511001324.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone(e1) + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c511001324.filter(c,e,tp) + return c:IsRace(RACE_AQUA) and c:IsAttackBelow(1000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001324.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001324.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001324.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001324.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001324.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c511001324.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + tc:RegisterEffect(e1) + end +end +function c511001324.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001325.lua b/script/c511001325.lua new file mode 100644 index 00000000..655ac4e8 --- /dev/null +++ b/script/c511001325.lua @@ -0,0 +1,37 @@ +--Rare Metal Soul +function c511001325.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(c511001325.condition) + e1:SetTarget(c511001325.target) + e1:SetOperation(c511001325.activate) + c:RegisterEffect(e1) +end +function c511001325.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001325.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) +end +function c511001325.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001325.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001325.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001325.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001325.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001326.lua b/script/c511001326.lua new file mode 100644 index 00000000..1ec22265 --- /dev/null +++ b/script/c511001326.lua @@ -0,0 +1,45 @@ +--Anti Emptiness +function c511001326.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511001326.condition) + e1:SetTarget(c511001326.target) + e1:SetOperation(c511001326.operation) + c:RegisterEffect(e1) +end +function c511001326.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) or not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return rp~=tp and ex and tg~=nil and tc+tg:FilterCount(Card.IsType,nil,TYPE_SPELL+TYPE_TRAP)-tg:GetCount()>0 +end +function c511001326.filter(c) + return c:IsFaceup() and c:IsAttackAbove(1) +end +function c511001326.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001326.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001326.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511001326.filter,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.BreakEffect() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(0) + g:GetFirst():RegisterEffect(e1) + end +end diff --git a/script/c511001327.lua b/script/c511001327.lua new file mode 100644 index 00000000..f8d7fe12 --- /dev/null +++ b/script/c511001327.lua @@ -0,0 +1,37 @@ +--Frog Resurrection +function c511001327.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001327.cost) + e1:SetTarget(c511001327.target) + e1:SetOperation(c511001327.activate) + c:RegisterEffect(e1) +end +function c511001327.cfilter(c) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsDiscardable() +end +function c511001327.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001327.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c511001327.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511001327.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001327.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001327.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001327.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001327.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001327.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001328.lua b/script/c511001328.lua new file mode 100644 index 00000000..f5aa26db --- /dev/null +++ b/script/c511001328.lua @@ -0,0 +1,32 @@ +--Flute of Hamelin +function c511001328.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001328.target) + e1:SetOperation(c511001328.activate) + c:RegisterEffect(e1) +end +function c511001328.filter(c,tid) + return c:GetTurnID()==tid and c:IsType(TYPE_MONSTER) and not c:IsReason(REASON_RETURN) +end +function c511001328.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511001328.filter(chkc,tid) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001328.filter,tp,LOCATION_GRAVE,0,1,nil,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001328.filter,tp,LOCATION_GRAVE,0,1,1,nil,tid) +end +function c511001328.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_HAND+LOCATION_DECK,LOCATION_HAND+LOCATION_DECK,nil,tc:GetCode()) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + end + end +end diff --git a/script/c511001329.lua b/script/c511001329.lua new file mode 100644 index 00000000..be7a10fa --- /dev/null +++ b/script/c511001329.lua @@ -0,0 +1,38 @@ +--Claret Note +function c511001329.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetTarget(c511001329.target) + e1:SetOperation(c511001329.activate) + c:RegisterEffect(e1) +end +function c511001329.cfilter(c,tp) + local lv=c:GetLevel() + return c:IsFaceup() and lv>=4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>(math.floor(lv/4)-1) +end +function c511001329.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001329.cfilter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001329.cfilter,tp,0,LOCATION_MZONE,1,nil,tp) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001330,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_DARK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511001329.cfilter,tp,0,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001329.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local lv=tc:GetLevel() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=(math.floor(lv/4)-1) + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001330,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_DARK) then return end + for i=1,math.floor(lv/4) do + local token=Duel.CreateToken(tp,511001330) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001331.lua b/script/c511001331.lua new file mode 100644 index 00000000..c2af29a4 --- /dev/null +++ b/script/c511001331.lua @@ -0,0 +1,41 @@ +--Secret Mission +function c511001331.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001331.condition) + e1:SetTarget(c511001331.target) + e1:SetOperation(c511001331.activate) + c:RegisterEffect(e1) +end +function c511001331.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001331.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local opt=0 + if Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,nil) then + opt=Duel.SelectOption(1-tp,aux.Stringid(511001331,0),aux.Stringid(15552258,1)) + else + opt=Duel.SelectOption(1-tp,aux.Stringid(15552258,1))+1 + end + if opt==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local sg=g:RandomSelect(1-tp,1) + Duel.SetTargetCard(sg) + end + e:SetLabel(opt) +end +function c511001331.activate(e,tp,eg,ep,ev,re,r,rp) + local opt=e:GetLabel() + if opt==1 then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + return + end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.CalculateDamage(Duel.GetAttacker(),tc) + end +end diff --git a/script/c511001332.lua b/script/c511001332.lua new file mode 100644 index 00000000..f25a2baa --- /dev/null +++ b/script/c511001332.lua @@ -0,0 +1,23 @@ +--Invincible Hero +function c511001332.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001332.activate) + c:RegisterEffect(e1) +end +function c511001332.activate(e,tp,eg,ep,ev,re,r,rp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCondition(c511001332.condition) + e2:SetValue(1) + Duel.RegisterEffect(e2,tp) +end +function c511001332.condition(e) + return Duel.GetAttackTarget() and Duel.GetAttackTarget():IsControler(e:GetHandler():GetControler()) +end diff --git a/script/c511001333.lua b/script/c511001333.lua new file mode 100644 index 00000000..c46b69df --- /dev/null +++ b/script/c511001333.lua @@ -0,0 +1,73 @@ +--Fusion Shot +function c511001333.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(c511001333.target) + e1:SetOperation(c511001333.operation) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001333,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c511001333.damcost) + e2:SetTarget(c511001333.damtg) + e2:SetOperation(c511001333.damop) + c:RegisterEffect(e2) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511001333.eqlimit) + c:RegisterEffect(e4) +end +function c511001333.eqlimit(e,c) + return c:IsType(TYPE_FUSION) +end +function c511001333.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) +end +function c511001333.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001333.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001333.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001333.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001333.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 c511001333.cfilter(c,tp,eq) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and bit.band(c:GetReason(),0x40008)==0x40008 and c:GetReasonCard()==eq + and c:IsAbleToRemoveAsCost() and c:IsAttackBelow(1000) and c:GetAttack()>0 +end +function c511001333.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + local mg=eq:GetMaterial():Filter(c511001333.cfilter,nil,tp,eq) + if chk==0 then return mg:GetCount()>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=mg:Select(tp,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(g:GetFirst():GetAttack()) +end +function c511001333.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c511001333.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001334.lua b/script/c511001334.lua new file mode 100644 index 00000000..50bb598f --- /dev/null +++ b/script/c511001334.lua @@ -0,0 +1,141 @@ +--Double Fusion +function c511001334.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001334.cost) + e1:SetTarget(c511001334.target) + e1:SetOperation(c511001334.activate) + c:RegisterEffect(e1) +end +function c511001334.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 c511001334.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511001334.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511001334.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001334.activate(e,tp,eg,ep,ev,re,r,rp) + if true then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001334.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummonStep(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + tc:SetStatus(STATUS_SPSUMMON_STEP,false) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + else + local cg1=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_MZONE,0) + local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) + and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then + Duel.ConfirmCards(1-tp,cg1) + Duel.ConfirmCards(1-tp,cg2) + Duel.ShuffleHand(tp) + end + end + end + local tchkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local tmg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,tmg1,nil,tchkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(tce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,tchkf) + end + end + if res and not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.SelectYesNo(tp,aux.Stringid(33550694,0)) then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001334.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummonStep(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + else + local cg1=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_MZONE,0) + local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) + and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then + Duel.ConfirmCards(1-tp,cg1) + Duel.ConfirmCards(1-tp,cg2) + Duel.ShuffleHand(tp) + end + end + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001335.lua b/script/c511001335.lua new file mode 100644 index 00000000..bb1b6cbd --- /dev/null +++ b/script/c511001335.lua @@ -0,0 +1,60 @@ +--Mirror Damage +function c511001335.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(c511001335.target) + e1:SetOperation(c511001335.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511001335.desop) + c:RegisterEffect(e2) +end +function c511001335.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 e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001335.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_REFLECT_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(c511001335.refcon) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511001335.refcon(e,re,val,r,rp,rc) + return bit.band(r,REASON_EFFECT)~=0 and re:IsActiveType(TYPE_SPELL) and val==e:GetHandler():GetEquipTarget():GetBaseAttack() +end +function c511001335.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001336.lua b/script/c511001336.lua new file mode 100644 index 00000000..02a6df09 --- /dev/null +++ b/script/c511001336.lua @@ -0,0 +1,101 @@ +--Number 4: Stealth Kragen +function c511001336.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER),4,2) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c511001336.destg) + e1:SetOperation(c511001336.desop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001336,1)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511001336.sumcon) + e2:SetTarget(c511001336.sumtg) + e2:SetOperation(c511001336.sumop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511001336.op) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511001336.indes) + c:RegisterEffect(e4) +end +c511001336.xyz_number=4 +function c511001336.desfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:IsDestructable() +end +function c511001336.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001336.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001336.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001336.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,g:GetFirst():GetControler(),0) +end +function c511001336.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.Damage(tc:GetControler(),atk,REASON_EFFECT) + end + end +end +function c511001336.op(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetOverlayGroup() + if g:GetCount()==0 then return end + g:KeepAlive() + e:GetLabelObject():SetLabelObject(g) +end +function c511001336.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and (c:IsCode(511001336) or c:IsCode(511001337)) +end +function c511001336.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511001336.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject() + local ct=g:GetCount() + if chk==0 then return ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>ct-1 + and Duel.IsExistingMatchingCard(c511001336.spfilter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,ct,e:GetHandler(),e,tp) end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,tp,nil) +end +function c511001336.sumop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject():Filter(Card.IsRelateToEffect,nil,e) + local ct=g:GetCount() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=ct-1 or ct<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sp=Duel.SelectMatchingCard(tp,c511001336.spfilter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,ct,ct,e:GetHandler(),e,tp) + local tc=sp:GetFirst() + local at=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.Overlay(tc,Group.FromCards(at)) + tc=sp:GetNext() + at=g:GetNext() + end + Duel.SpecialSummonComplete() +end +function c511001336.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001337.lua b/script/c511001337.lua new file mode 100644 index 00000000..9083060b --- /dev/null +++ b/script/c511001337.lua @@ -0,0 +1,91 @@ +--Kragen Spawn +function c511001337.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER),4,2) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c511001337.destg) + e1:SetOperation(c511001337.desop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001337,1)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511001337.sumcon) + e2:SetTarget(c511001337.sumtg) + e2:SetOperation(c511001337.sumop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511001337.op) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) +end +function c511001337.desfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:IsDestructable() +end +function c511001337.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001337.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001337.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001337.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,g:GetFirst():GetControler(),0) +end +function c511001337.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.Damage(tc:GetControler(),atk,REASON_EFFECT) + end + end +end +function c511001337.op(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetOverlayGroup() + if g:GetCount()==0 then return end + g:KeepAlive() + e:GetLabelObject():SetLabelObject(g) +end +function c511001337.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and (c:IsCode(511001336) or c:IsCode(511001337)) +end +function c511001337.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511001337.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject() + local ct=g:GetCount() + if chk==0 then return ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>ct-1 + and Duel.IsExistingMatchingCard(c511001337.spfilter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,ct,e:GetHandler(),e,tp) end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,tp,nil) +end +function c511001337.sumop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject():Filter(Card.IsRelateToEffect,nil,e) + local ct=g:GetCount() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=ct-1 or ct<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sp=Duel.SelectMatchingCard(tp,c511001337.spfilter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,ct,ct,e:GetHandler(),e,tp) + local tc=sp:GetFirst() + local at=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.Overlay(tc,Group.FromCards(at)) + tc=sp:GetNext() + at=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001338.lua b/script/c511001338.lua new file mode 100644 index 00000000..90d30008 --- /dev/null +++ b/script/c511001338.lua @@ -0,0 +1,104 @@ +--Number 1: Infection Buzz King +function c511001338.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,3) + c:EnableReviveLimit() + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001338,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001338.tgcon) + e1:SetTarget(c511001338.tgtg) + e1:SetOperation(c511001338.tgop) + c:RegisterEffect(e1) + --material + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(12744567,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001338.mttg) + e2:SetOperation(c511001338.mtop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(31386180,0)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c511001338.descost) + e3:SetTarget(c511001338.destg) + e3:SetOperation(c511001338.desop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511001338.indes) + c:RegisterEffect(e4) +end +c511001338.xyz_number=1 +function c511001338.tgcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ +end +function c511001338.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,0,LOCATION_EXTRA,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,1-tp,LOCATION_EXTRA) +end +function c511001338.tgop(e,tp,eg,ep,ev,re,r,rp) + local chk=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) + Duel.ConfirmCards(tp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGrave,tp,0,LOCATION_EXTRA,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c511001338.mtfilter(c) + return c:IsSetCard(0x48) and c:IsType(TYPE_MONSTER) +end +function c511001338.mttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001338.mtfilter,tp,0,LOCATION_GRAVE,1,nil) end +end +function c511001338.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=Duel.SelectMatchingCard(tp,c511001338.mtfilter,tp,0,LOCATION_GRAVE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Overlay(c,g) + end +end +function c511001338.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001338.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511001338.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if tc:IsFacedown() or not tc:IsType(TYPE_MONSTER) then + atk=0 + end + if Duel.Destroy(tc,REASON_EFFECT)>0 and atk>0 then + Duel.BreakEffect() + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end +function c511001338.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001339.lua b/script/c511001339.lua new file mode 100644 index 00000000..4bb59f6e --- /dev/null +++ b/script/c511001339.lua @@ -0,0 +1,98 @@ +--Number 2: Ninja Shadow Mosquito +function c511001339.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,2,3) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCost(c511001339.cost) + e1:SetTarget(c511001339.tg) + e1:SetOperation(c511001339.op) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_DISABLE) + e2:SetTarget(c511001339.distg) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511001339.indes) + c:RegisterEffect(e3) +end +c511001339.xyz_number=2 +function c511001339.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local a=e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) + local b=Duel.GetAttacker():GetCounter(0x1101)>0 + if chk==0 then return a or b end + local op=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(76922029,0)) + if a and b then + op=Duel.SelectOption(tp,aux.Stringid(77700347,0),aux.Stringid(54366836,1)) + elseif a and not b then + Duel.SelectOption(tp,aux.Stringid(3070049,0)) + op=0 + else + Duel.SelectOption(tp,aux.Stringid(54366836,1)) + op=1 + end + if op==0 then + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) + end + e:SetLabel(op) +end +function c511001339.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if e:GetLabel()==0 then + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x1101) + end +end +function c511001339.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local op=e:GetLabel() + if not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + if op==0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetOperation(c511001339.damop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + g:GetFirst():AddCounter(0x1101,1) + end + else + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e2) + end +end +function c511001339.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511001339.distg(e,c) + return c:GetCounter(0x1101)>0 +end +function c511001339.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001340.lua b/script/c511001340.lua new file mode 100644 index 00000000..109c9b5f --- /dev/null +++ b/script/c511001340.lua @@ -0,0 +1,38 @@ +--Galaxy Wrath +function c511001340.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001340.cost) + e1:SetTarget(c511001340.target) + e1:SetOperation(c511001340.activate) + c:RegisterEffect(e1) +end +function c511001340.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()==PHASE_MAIN1 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001340.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001340.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001340.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001340.activate(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,c511001340.filter,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 diff --git a/script/c511001341.lua b/script/c511001341.lua new file mode 100644 index 00000000..d914357a --- /dev/null +++ b/script/c511001341.lua @@ -0,0 +1,78 @@ +--One Two Jump +function c511001341.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001341.condition) + e1:SetTarget(c511001341.target) + e1:SetOperation(c511001341.activate) + c:RegisterEffect(e1) + if not c511001341.global_check then + c511001341.global_check=true + c511001341[0]=Group.CreateGroup() + c511001341[0]:KeepAlive() + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DESTROYING) + ge1:SetOperation(c511001341.checkop) + Duel.RegisterEffect(ge1,0) + local ge4=Effect.CreateEffect(c) + ge4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge4:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + ge4:SetOperation(c511001341.clear) + Duel.RegisterEffect(ge4,0) + end +end +function c511001341.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg:GetCount()~=1 then return end + local tc=eg:GetFirst() + if tc:IsRelateToBattle() and tc:IsFaceup() then + if tc:GetFlagEffect(511001341)>0 then + c511001341[0]:AddCard(tc) + else + tc:RegisterFlagEffect(511001341,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + end + end +end +function c511001341.clear(e,tp,eg,ep,ev,re,r,rp) + c511001341[0]:Clear() +end +function c511001341.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and (ph~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c511001341.filter(c,e,tp) + return c:IsCanBeEffectTarget(e) and c:IsFaceup() and c:IsControler(tp) +end +function c511001341.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=c511001341[0]:Filter(c511001341.filter,nil,e,tp) + if chkc then return false end + if chk==0 then return g:GetCount()>0 and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local sg=g:Select(tp,1,1,nil) + Duel.SetTargetCard(sg) +end +function c511001341.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(g:GetFirst():GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + g:GetFirst():RegisterEffect(e1) + if Duel.SelectYesNo(tp,aux.Stringid(17313545,0)) then + Duel.CalculateDamage(tc,g:GetFirst()) + end + end + end +end diff --git a/script/c511001342.lua b/script/c511001342.lua new file mode 100644 index 00000000..b0f93f27 --- /dev/null +++ b/script/c511001342.lua @@ -0,0 +1,32 @@ +--Desperate Maneuver +function c511001342.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001342.cost) + e1:SetTarget(c511001342.target) + e1:SetOperation(c511001342.activate) + c:RegisterEffect(e1) +end +function c511001342.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c511001342.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511001342.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(g:GetFirst():GetBaseAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + g:GetFirst():RegisterEffect(e1) + end +end diff --git a/script/c511001343.lua b/script/c511001343.lua new file mode 100644 index 00000000..9bdb00ce --- /dev/null +++ b/script/c511001343.lua @@ -0,0 +1,27 @@ +--Regen Warrior +function c511001343.initial_effect(c) + --sp summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001343,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511001343.condition) + e1:SetTarget(c511001343.target) + e1:SetOperation(c511001343.operation) + c:RegisterEffect(e1) +end +function c511001343.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_HAND) and e:GetHandler():IsReason(REASON_EFFECT) +end +function c511001343.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001343.operation(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 diff --git a/script/c511001344.lua b/script/c511001344.lua new file mode 100644 index 00000000..134765d9 --- /dev/null +++ b/script/c511001344.lua @@ -0,0 +1,62 @@ +--Retribution of the Ant Lion +function c511001344.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCondition(c511001344.regcon) + e2:SetOperation(c511001344.regop) + c:RegisterEffect(e2) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001344,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(511001344) + e2:SetTarget(c511001344.damtg) + e2:SetOperation(c511001344.damop) + c:RegisterEffect(e2) +end +function c511001344.regcon(e,tp,eg,ep,ev,re,r,rp) + local d1=false + local d2=false + local tc=eg:GetFirst() + while tc do + if tc:IsPreviousLocation(LOCATION_MZONE) and tc:IsType(TYPE_MONSTER) and tc:IsReason(REASON_DESTROY) then + if tc:GetPreviousControler()==0 then d1=true + else d2=true end + end + tc=eg:GetNext() + end + local evt_p=PLAYER_NONE + if d1 and d2 then evt_p=PLAYER_ALL + elseif d1 then evt_p=0 + elseif d2 then evt_p=1 end + e:SetLabel(evt_p) + return evt_p~=PLAYER_NONE +end +function c511001344.regop(e,tp,eg,ep,ev,re,r,rp) + Duel.RaiseSingleEvent(e:GetHandler(),511001344,e,0,tp,e:GetLabel(),0) +end +function c511001344.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,ep,800) +end +function c511001344.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local d=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if ep==PLAYER_ALL then + Duel.Damage(tp,d,REASON_EFFECT) + Duel.Damage(1-tp,d,REASON_EFFECT) + else + Duel.Damage(ep,d,REASON_EFFECT) + end +end diff --git a/script/c511001345.lua b/script/c511001345.lua new file mode 100644 index 00000000..85182cf0 --- /dev/null +++ b/script/c511001345.lua @@ -0,0 +1,29 @@ +--Synchron Believer +function c511001345.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001345,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001345.condition) + e1:SetTarget(c511001345.target) + e1:SetOperation(c511001345.operation) + c:RegisterEffect(e1) +end +function c511001345.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsType(TYPE_SYNCHRO) +end +function c511001345.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001345.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + Duel.NegateAttack() + end +end diff --git a/script/c511001346.lua b/script/c511001346.lua new file mode 100644 index 00000000..a4315f80 --- /dev/null +++ b/script/c511001346.lua @@ -0,0 +1,32 @@ +--Raptor's Storm +function c511001346.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511001346.condition) + e1:SetTarget(c511001346.target) + e1:SetOperation(c511001346.activate) + c:RegisterEffect(e1) +end +function c511001346.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xba) +end +function c511001346.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) and rp~=tp + and Duel.IsExistingMatchingCard(c511001346.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001346.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsDestructable() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,re:GetHandler(),1,0,0) + end +end +function c511001346.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(re:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c511001347.lua b/script/c511001347.lua new file mode 100644 index 00000000..5662aa35 --- /dev/null +++ b/script/c511001347.lua @@ -0,0 +1,102 @@ +--Unfair Judge +function c511001347.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_END,0) + e1:SetCondition(c511001347.condition) + e1:SetCost(c511001347.cost) + e1:SetTarget(c511001347.target) + e1:SetOperation(c511001347.activate) + c:RegisterEffect(e1) + if not c511001347.global_check then + c511001347.global_check=true + c511001347[0]=false + c511001347[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ATTACK_DISABLED) + ge1:SetOperation(c511001347.checkop) + Duel.RegisterEffect(ge1,0) + local ge4=Effect.CreateEffect(c) + ge4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge4:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + ge4:SetOperation(c511001347.clear) + Duel.RegisterEffect(ge4,0) + end +end +function c511001347.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local p=tc:GetControler() + c511001347[p]=true +end +function c511001347.clear(e,tp,eg,ep,ev,re,r,rp) + c511001347[0]=false + c511001347[1]=false +end +function c511001347.condition(e,tp,eg,ep,ev,re,r,rp) + return c511001347[tp] and Duel.GetCurrentPhase()==PHASE_BATTLE +end +function c511001347.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c511001347.filter(c,atk,def) + return c:IsFaceup() and c:GetAttack()0 then + atk=atkg:GetSum(Card.GetAttack) + end + local defg=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_DEFENSE) + local def=default + if defg:GetCount()>0 then + def=defg:GetSum(Card.GetAttack) + end + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001347.filter(chkc,atk,def) end + if chk==0 then return Duel.IsExistingTarget(c511001347.filter,tp,LOCATION_MZONE,0,1,nil,atk,def) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001347.filter,tp,LOCATION_MZONE,0,1,1,nil,atk,def) +end +function c511001347.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if Duel.GetTurnPlayer()==tp then + Duel.SkipPhase(tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_BP_TWICE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if Duel.GetTurnPlayer()==tp then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetProperty(EFFECT_FLAG_OATH) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511001347.ftarget) + e2:SetLabel(tc:GetFieldID()) + e2:SetReset(RESET_PHASE+PHASE_BATTLE,2) + Duel.RegisterEffect(e2,tp) + --attack all + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_ATTACK_ALL) + e3:SetValue(1) + e3:SetReset(RESET_PHASE+PHASE_BATTLE,2) + tc:RegisterEffect(e3) + end + end +end +function c511001347.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end diff --git a/script/c511001348.lua b/script/c511001348.lua new file mode 100644 index 00000000..4f5982e5 --- /dev/null +++ b/script/c511001348.lua @@ -0,0 +1,69 @@ +--Jewel Sword +function c511001348.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(c511001348.target) + e1:SetOperation(c511001348.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + 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(c511001348.equiplimit) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001348,0)) + e4:SetCategory(CATEGORY_DRAW) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c511001348.drcon) + e4:SetTarget(c511001348.drtg) + e4:SetOperation(c511001348.drop) + c:RegisterEffect(e4) +end +function c511001348.equiplimit(e,c) + return c:IsRace(RACE_WARRIOR) +end +function c511001348.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511001348.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511001348.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001348.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001348.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001348.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 c511001348.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetEquipTarget()~=nil and c:IsLocation(LOCATION_GRAVE) +end +function c511001348.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001348.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001349.lua b/script/c511001349.lua new file mode 100644 index 00000000..3425f0cc --- /dev/null +++ b/script/c511001349.lua @@ -0,0 +1,40 @@ +--Icicle Sacrifice +function c511001349.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001349.target) + e1:SetOperation(c511001349.activate) + c:RegisterEffect(e1) +end +function c511001349.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001350,0,0x4011,0,0,1,RACE_AQUA,ATTRIBUTE_WATER) end + local dis=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0) + e:SetLabel(dis) +end +function c511001349.disop(e,tp) + return e:GetLabel() +end +function c511001349.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetOperation(c511001349.disop) + e1:SetLabel(e:GetLabel()) + Duel.RegisterEffect(e1,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001350,0,0x4011,0,0,1,RACE_AQUA,ATTRIBUTE_WATER) then return end + local token=Duel.CreateToken(tp,511001350) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DOUBLE_TRIBUTE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) +end diff --git a/script/c511001351.lua b/script/c511001351.lua new file mode 100644 index 00000000..0205ffdf --- /dev/null +++ b/script/c511001351.lua @@ -0,0 +1,14 @@ +--Magical Longicorn +function c511001351.initial_effect(c) + --disable and destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_CHAIN_ACTIVATING) + e1:SetOperation(c511001351.disop) + c:RegisterEffect(e1) +end +function c511001351.disop(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp or not re:IsActiveType(TYPE_SPELL) or not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not e:GetHandler():IsAttackPos() then return end + Duel.NegateEffect(ev) +end diff --git a/script/c511001352.lua b/script/c511001352.lua new file mode 100644 index 00000000..ef50643b --- /dev/null +++ b/script/c511001352.lua @@ -0,0 +1,23 @@ +--Insect Garden +function c511001352.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --control + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_CONTROL) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511001352.filter) + e2:SetValue(c511001352.ctval) + c:RegisterEffect(e2) +end +function c511001352.filter(e,c) + return c:IsFaceup() and c:IsLevelBelow(4) and c:IsRace(RACE_INSECT) and c:GetOwner()==e:GetHandlerPlayer() +end +function c511001352.ctval(e,c) + return 1-e:GetHandlerPlayer() +end diff --git a/script/c511001353.lua b/script/c511001353.lua new file mode 100644 index 00000000..019ccac1 --- /dev/null +++ b/script/c511001353.lua @@ -0,0 +1,78 @@ +--Wild Half +function c511001353.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001353.condition) + e1:SetTarget(c511001353.target) + e1:SetOperation(c511001353.activate) + c:RegisterEffect(e1) +end +function c511001353.cfilter(c) + return c:IsFaceup() and c:IsCode(86188410) +end +function c511001353.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001353.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511001353.filter(c,tp) + return c:IsFaceup() and c:GetLevel()>0 + and Duel.IsPlayerCanSpecialSummonMonster(1-tp,511001354,0,0x4011,c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) +end +function c511001353.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001353.filter(chkc,tp) end + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and + Duel.IsExistingTarget(c511001353.filter,tp,0,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511001353.filter,tp,0,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001353.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local ea=Effect.CreateEffect(e:GetHandler()) + ea:SetType(EFFECT_TYPE_SINGLE) + ea:SetCode(EFFECT_SET_BASE_ATTACK) + ea:SetReset(RESET_EVENT+0x1fe000) + ea:SetValue(tc:GetBaseAttack()/2) + tc:RegisterEffect(ea) + local ed=Effect.CreateEffect(e:GetHandler()) + ed:SetType(EFFECT_TYPE_SINGLE) + ed:SetCode(EFFECT_SET_BASE_DEFENSE) + ed:SetReset(RESET_EVENT+0x1fe000) + ed:SetValue(tc:GetBaseDefense()/2) + tc:RegisterEffect(ed) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(1-tp,511001354,0,0x4011,tc:GetAttack(),tc:GetDefense(), + tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) then return end + local token=Duel.CreateToken(tp,511001354) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(tc:GetLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + token:RegisterEffect(e5) + Duel.SpecialSummon(token,0,1-tp,1-tp,false,false,POS_FACEUP) + if not tc:IsType(TYPE_TRAPMONSTER) then + token:CopyEffect(tc:GetCode(),RESET_EVENT+0x1fe0000,1) + end +end diff --git a/script/c511001355.lua b/script/c511001355.lua new file mode 100644 index 00000000..bd4d71a8 --- /dev/null +++ b/script/c511001355.lua @@ -0,0 +1,64 @@ +--Relationship +function c511001355.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001355.target) + e1:SetOperation(c511001355.activate) + c:RegisterEffect(e1) + if not c511001355.global_check then + c511001355.global_check=true + c511001355[0]=Group.CreateGroup() + c511001355[0]:KeepAlive() + c511001355[1]=Group.CreateGroup() + c511001355[1]:KeepAlive() + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(c511001355.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001355.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001355.cfilter(c,atk) + return c:GetTextAttack()==atk +end +function c511001355.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsType,nil,TYPE_MONSTER) + local tc=g:GetFirst() + while tc do + local sg=Duel.GetMatchingGroup(c511001355.cfilter,tp,0xff,0xff,nil,tc:GetTextAttack()) + c511001355[tc:GetPreviousControler()]:Merge(sg) + tc=g:GetNext() + end +end +function c511001355.clear(e,tp,eg,ep,ev,re,r,rp) + c511001355[0]:Clear() + c511001355[1]:Clear() +end +function c511001355.filter(c,e,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_HAND+LOCATION_DECK) and c:IsSetCard(0x3008) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001355.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=c511001355[tp]:Filter(c511001355.filter,nil,e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001355.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=c511001355[tp]:Filter(c511001355.filter,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001356.lua b/script/c511001356.lua new file mode 100644 index 00000000..0c604ac2 --- /dev/null +++ b/script/c511001356.lua @@ -0,0 +1,109 @@ +--Hero's Guild +function c511001356.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --send to grave + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001356,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCategory(CATEGORY_DECKDES) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001356.target) + e2:SetOperation(c511001356.operation) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001356,1)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(511001356) + e3:SetCondition(c511001356.thcon) + e3:SetTarget(c511001356.thtg) + e3:SetOperation(c511001356.thop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(5851097,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(511001357) + e4:SetCondition(c511001356.descon) + e4:SetTarget(c511001356.destg) + e4:SetOperation(c511001356.desop) + c:RegisterEffect(e4) +end +function c511001356.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) and Duel.IsPlayerCanDiscardDeck(1-tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,PLAYER_ALL,1) +end +function c511001356.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or not Duel.IsPlayerCanDiscardDeck(tp,1) or not Duel.IsPlayerCanDiscardDeck(1-tp,1) then return end + local tc1=Duel.GetDecktopGroup(tp,1):GetFirst() + local tc2=Duel.GetDecktopGroup(1-tp,1):GetFirst() + Duel.DiscardDeck(tp,1,REASON_EFFECT) + Duel.DiscardDeck(1-tp,1,REASON_EFFECT) + local v=0 + if tc1 and tc1:IsRace(RACE_WARRIOR) and tc1:IsLocation(LOCATION_GRAVE) and tc1:IsAbleToHand() and Duel.SelectYesNo(tp,aux.Stringid(4179255,0)) then + v=v+1 + end + if tc2 and tc2:IsRace(RACE_WARRIOR) and tc2:IsLocation(LOCATION_GRAVE) and tc1:IsAbleToHand() and Duel.SelectYesNo(1-tp,aux.Stringid(4179255,0)) then + v=v+2 + end + if v==0 then return end + local p=0 + local g=nil + if v==1 then + g=tc1 + p=tc1:GetControler() + elseif v==2 then + g=tc2 + p=tc2:GetControler() + else + g=Group.FromCards(tc1,tc2) + p=PLAYER_ALL + end + Duel.RaiseEvent(g,511001356,e,REASON_EFFECT,tp,p,v) +end +function c511001356.thcon(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetCurrentChain()==0 then return true end + for i=1,Duel.GetCurrentChain() do + local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) + local tc=te:GetHandler() + if tc~=e:GetHandler() and tc:IsControler(tp) and tc:GetOriginalCode()==511001356 then + return false + end + end + return true +end +function c511001356.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,eg,eg:GetCount(),0,0) +end +function c511001356.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=eg:Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()<=0 then return end + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + Duel.ConfirmCards(tp,g) + Duel.RaiseSingleEvent(e:GetHandler(),511001357,e,0,tp,0,0) +end +function c511001356.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsStatus(STATUS_ACTIVATED) +end +function c511001356.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsRelateToEffect(e) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,c,1,0,0) +end +function c511001356.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c511001357.lua b/script/c511001357.lua new file mode 100644 index 00000000..4f2e5008 --- /dev/null +++ b/script/c511001357.lua @@ -0,0 +1,34 @@ +--Remove Bomb +function c511001357.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCost(c511001357.cost) + e1:SetTarget(c511001357.target) + e1:SetOperation(c511001357.activate) + c:RegisterEffect(e1) +end +function c511001357.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511001357.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetDecktopGroup(tp,5) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return g:IsExists(Card.IsAbleToRemove,5,nil) end + Duel.DisableShuffleCheck() + Duel.Remove(g,POS_FACEUP,REASON_COST) + local ct=g:FilterCount(Card.IsType,nil,TYPE_MONSTER) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ct*300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()*300) +end +function c511001357.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001358.lua b/script/c511001358.lua new file mode 100644 index 00000000..7554cc04 --- /dev/null +++ b/script/c511001358.lua @@ -0,0 +1,72 @@ +--Crazy Summon Gear +function c511001358.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001358.target) + e1:SetOperation(c511001358.activate) + c:RegisterEffect(e1) +end +function c511001358.ofilter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511001358.filter(c,e,tp) + return c:IsAttackBelow(1500) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001358.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511001358.ofilter,tp,0,LOCATION_MZONE,1,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001358.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g1=Duel.SelectTarget(tp,c511001358.ofilter,tp,0,LOCATION_MZONE,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c511001358.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001358.ospfilter(c,race,lv,e,tp) + return c:IsRace(race) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,1-tp,false,false,POS_FACEUP) +end +function c511001358.sspfilter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) +end +function c511001358.activate(e,tp,eg,ep,ev,re,r,rp) + local ftop=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ftop>2 then ftop=2 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local op=e:GetLabelObject() + local se=g:GetFirst() + if se==op then se=g:GetNext() end + if op:IsFaceup() and op:IsRelateToEffect(e) then + local sgo=Duel.GetMatchingGroup(c511001358.ospfilter,tp,0,LOCATION_DECK,nil,op:GetRace(),op:GetLevel(),e,tp) + if sgo:GetCount()>0 and ftop>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local osp=sgo:Select(1-tp,1,ftop,nil) + local tc=osp:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,1-tp,1-tp,false,false,POS_FACEUP) + tc=osp:GetNext() + end + end + if se:IsRelateToEffect(e) then + Duel.SpecialSummonStep(se,0,tp,tp,false,false,POS_FACEUP) + local fts=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetMatchingGroup(c511001358.sspfilter,tp,0x13,0,nil,se:GetCode(),e,tp) + if g:GetCount()>0 and fts>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local fg=g:Select(tp,fts,fts,nil) + local tc=fg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc=fg:GetNext() + end + end + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001359.lua b/script/c511001359.lua new file mode 100644 index 00000000..d8cb788c --- /dev/null +++ b/script/c511001359.lua @@ -0,0 +1,46 @@ +--Tri-Slice +function c511001359.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001359.cost) + e1:SetTarget(c511001359.target) + e1:SetOperation(c511001359.operation) + c:RegisterEffect(e1) +end +function c511001359.cfilter(c,e,tp) + local clv=c:GetLevel() + return clv>0 and c:IsRace(RACE_FISH) and (clv==6 or clv==9 or clv==12) + and Duel.IsExistingMatchingCard(c511001359.spfilter,tp,LOCATION_DECK,0,3,nil,clv/3,e,tp) +end +function c511001359.spfilter(c,slv,e,tp) + return c:GetLevel()==slv and c:IsAttribute(ATTRIBUTE_WATER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001359.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511001359.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c511001359.cfilter,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) end + local g=Duel.SelectReleaseGroup(tp,c511001359.cfilter,1,1,nil,e,tp) + local lv=g:GetFirst():GetLevel()/3 + Duel.Release(g,REASON_COST) + Duel.SetTargetParam(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c511001359.operation(e,tp,eg,ep,ev,re,r,rp) + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511001359.spfilter,tp,LOCATION_DECK,0,nil,lv,e,tp) + if g:GetCount()>2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,3,3,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001360.lua b/script/c511001360.lua new file mode 100644 index 00000000..7b5d5b71 --- /dev/null +++ b/script/c511001360.lua @@ -0,0 +1,38 @@ +--Tidal Advantage +function c511001360.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001360.condition) + e1:SetOperation(c511001360.activate) + c:RegisterEffect(e1) +end +function c511001360.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and ((d:IsAttribute(ATTRIBUTE_WATER) and d:IsControler(tp)) or (a:IsAttribute(ATTRIBUTE_WATER) and a:IsControler(tp))) +end +function c511001360.activate(e,tp,eg,ep,ev,re,r,rp) + local s=Duel.GetAttacker() + local o=Duel.GetAttackTarget() + if o:IsAttribute(ATTRIBUTE_WATER) and o:IsControler(tp) then s,o=o,s end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(o:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + o:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetTarget(c511001360.filter) + e2:SetValue(1) + Duel.RegisterEffect(e2,tp) +end +function c511001360.filter(e,c) + return c:IsAttribute(ATTRIBUTE_WATER) +end diff --git a/script/c511001361.lua b/script/c511001361.lua new file mode 100644 index 00000000..4f9f6d47 --- /dev/null +++ b/script/c511001361.lua @@ -0,0 +1,69 @@ +--Sacred Shield +function c511001361.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001361.condition) + e1:SetTarget(c511001361.target) + e1:SetOperation(c511001361.operation) + c:RegisterEffect(e1) +end +function c511001361.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsActiveType(TYPE_TRAP) then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + e:SetLabel(cv) + if ex then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + e:SetLabel(cv) + return ex +end +function c511001361.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511001361.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001361.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511001361.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,1) + e1:SetLabel(cid) + e1:SetValue(c511001361.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511001361.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(e:GetLabel()) + g:GetFirst():RegisterEffect(e2) + end + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetOperation(c511001361.damop) + e3:SetReset(RESET_PHASE+PHASE_END) + e3:SetLabel(e:GetLabel()) + Duel.RegisterEffect(e3,tp) +end +function c511001361.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(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 +function c511001361.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001361) + Duel.Damage(tp,e:GetLabel(),REASON_EFFECT) +end diff --git a/script/c511001362.lua b/script/c511001362.lua new file mode 100644 index 00000000..9284a941 --- /dev/null +++ b/script/c511001362.lua @@ -0,0 +1,32 @@ +--Card of the Dragon King +function c511001362.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001362.target) + e1:SetOperation(c511001362.activate) + c:RegisterEffect(e1) +end +function c511001362.filter(c) + return c:IsReleasableByEffect() and c:IsRace(RACE_DRAGON) +end +function c511001362.target(e,tp,eg,ep,ev,re,r,rp,chk) + local sg=Duel.GetMatchingGroup(c511001362.filter,tp,LOCATION_MZONE,0,nil) + if chk==0 then return sg:GetCount()>0 and Duel.IsPlayerCanDraw(tp,sg:GetCount()) end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,sg:GetSum(Card.GetAttack)) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001362.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local sg=Duel.GetMatchingGroup(c511001362.filter,tp,LOCATION_MZONE,0,nil) + local atk=sg:GetSum(Card.GetAttack) + if Duel.Release(sg,REASON_EFFECT)>0 then + sg=Duel.GetOperatedGroup() + Duel.Damage(p,atk,REASON_EFFECT) + Duel.Draw(p,sg:GetCount(),REASON_EFFECT) + end +end diff --git a/script/c511001363.lua b/script/c511001363.lua new file mode 100644 index 00000000..c759b90e --- /dev/null +++ b/script/c511001363.lua @@ -0,0 +1,116 @@ +--CX 冀望皇バリアン +function c511001363.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,3,nil,nil,5) + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetDescription(aux.Stringid(67926903,0)) + e0:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetCode(EFFECT_SPSUMMON_PROC) + e0:SetRange(LOCATION_EXTRA) + e0:SetCondition(c511001363.xyzcon) + e0:SetOperation(c511001363.xyzop) + e0:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e0) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511001363.atkval) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67926903,1)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c511001363.copycon) + e2:SetTarget(c511001363.copytg) + e2:SetOperation(c511001363.copyop) + c:RegisterEffect(e2) +end +function c511001363.ovfilter(c) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return c:IsFaceup() and no and no>=101 and no<=107 and c:IsSetCard(0x1048) +end +function c511001363.xyzcon(e,c,og) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c511001363.ovfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if mg:GetCount()<=0 then return false end + if mg:IsExists(Card.IsControler,1,nil,tp) then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + end +end +function c511001363.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og) + og=Group.CreateGroup() + local mg=Duel.GetMatchingGroup(c511001363.ovfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + og:Merge(mg) + local tc=mg:GetFirst() + while tc do + local ov=tc:GetOverlayGroup() + if ov:GetCount()>0 then + Duel.Overlay(c,ov) + og:Merge(ov) + end + tc=mg:GetNext() + end + c:SetMaterial(og) + Duel.Overlay(c,og) +end +function c511001363.atkval(e,c) + return c:GetOverlayCount()*1000 +end +function c511001363.copycon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001363.filter(c,e) + return c:IsCanBeEffectTarget(e) and e:GetHandler():GetFlagEffect(c:GetOriginalCode())==0 +end +function c511001363.copytg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + local a=c:CheckRemoveOverlayCard(tp,1,REASON_COST) + local b=Duel.CheckLPCost(tp,800) + local ov=c:GetOverlayGroup() + if chkc then return false end + if chk==0 then return (a or b) and ov:IsExists(c511001363.filter,1,nil,e) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=ov:FilterSelect(tp,c511001363.filter,1,1,nil,e) + Duel.Hint(HINT_CARD,0,g:GetFirst():GetOriginalCode()) + e:SetProperty(0) + Duel.SetTargetCard(g) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + local op=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(76922029,0)) + if a and b then + op=Duel.SelectOption(tp,aux.Stringid(81330115,0),aux.Stringid(21454943,1)) + elseif a and not b then + Duel.SelectOption(tp,aux.Stringid(81330115,0)) + op=0 + else + Duel.SelectOption(tp,aux.Stringid(21454943,1)) + op=1 + end + if op==0 then + Duel.SendtoGrave(g,REASON_COST) + else + Duel.PayLPCost(tp,800) + end + c:RegisterFlagEffect(g:GetFirst():GetOriginalCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511001363.copyop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc then + Duel.MajesticCopy(c,tc) + end +end diff --git a/script/c511001364.lua b/script/c511001364.lua new file mode 100644 index 00000000..d332bf86 --- /dev/null +++ b/script/c511001364.lua @@ -0,0 +1,27 @@ +--Tellus the Little Angel +function c511001364.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001364,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511001364.condition) + e1:SetTarget(c511001364.target) + e1:SetOperation(c511001364.operation) + c:RegisterEffect(e1) +end +function c511001364.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsReason(REASON_RETURN) +end +function c511001364.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001364.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511001365,0,0x4011,0,0,1,RACE_FAIRY,ATTRIBUTE_LIGHT) then return end + local token=Duel.CreateToken(tp,511001365) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511001366.lua b/script/c511001366.lua new file mode 100644 index 00000000..3bafa507 --- /dev/null +++ b/script/c511001366.lua @@ -0,0 +1,45 @@ +--Power Collapse +function c511001366.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001366.condition) + e1:SetTarget(c511001366.target) + e1:SetOperation(c511001366.activate) + c:RegisterEffect(e1) +end +function c511001366.cfilter(c,tp) + local rc=c:GetReasonCard() + return c:IsReason(REASON_BATTLE) and rc:IsControler(tp) and rc:IsRelateToBattle() +end +function c511001366.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and eg:IsExists(c511001366.cfilter,1,nil,tp) +end +function c511001366.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ec=eg:GetFirst() + if chkc then return false end + if chk==0 then return ec and ec:GetReasonCard() and ec:GetReasonCard():IsControler(tp) and ec:GetReasonCard():IsFaceup() + and ec:GetReasonCard():IsCanBeEffectTarget(e) end + Duel.SetTargetCard(ec:GetReasonCard()) +end +function c511001366.activate(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(-ec:GetAttack()) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ATTACK_ALL) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001367.lua b/script/c511001367.lua new file mode 100644 index 00000000..4426442f --- /dev/null +++ b/script/c511001367.lua @@ -0,0 +1,44 @@ +--Star Level Shuffle +function c511001367.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001367.cost) + e1:SetTarget(c511001367.target) + e1:SetOperation(c511001367.activate) + c:RegisterEffect(e1) +end +function c511001367.cfilter(c,e,tp) + return c:GetLevel()>0 and c:IsAbleToGraveAsCost() and Duel.IsExistingTarget(c511001367.filter,tp,LOCATION_GRAVE,0,1,nil,c:GetLevel(),e,tp) +end +function c511001367.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511001367.filter(c,lv,e,tp) + return c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001367.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511001367.cfilter,tp,LOCATION_MZONE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001367.cfilter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + local lv=g:GetFirst():GetLevel() + Duel.SendtoGrave(g,REASON_COST) + Duel.SetTargetParam(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001367.activate(e,tp,eg,ep,ev,re,r,rp) + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001367.filter,tp,LOCATION_GRAVE,0,1,1,nil,lv,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001368.lua b/script/c511001368.lua new file mode 100644 index 00000000..896e1840 --- /dev/null +++ b/script/c511001368.lua @@ -0,0 +1,42 @@ +--Comparable Level +function c511001368.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c511001368.cost) + e1:SetTarget(c511001368.target) + e1:SetOperation(c511001368.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c511001368.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511001368.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001368.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local sg=Duel.GetMatchingGroup(c511001368.filter,tp,LOCATION_HAND,0,nil,e,tp) + if chk==0 then return eg:GetCount()==1 and tc:GetSummonPlayer()~=tp and tc:GetLevel()>0 + and ft>0 and sg:CheckWithSumEqual(Card.GetLevel,tc:GetLevel(),1,ft+1) end + e:SetLabel(tc:GetLevel()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001368.activate(e,tp,eg,ep,ev,re,r,rp) + local lv=e:GetLabel() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local sg=Duel.GetMatchingGroup(c511001368.filter,tp,LOCATION_HAND,0,nil,e,tp) + if ft<=0 and not sg:CheckWithSumEqual(Card.GetLevel,tc:GetLevel(),1,ft+1) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=sg:SelectWithSumEqual(tp,Card.GetLevel,lv,1,ft+1) + if sp:GetCount()>0 then + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001369.lua b/script/c511001369.lua new file mode 100644 index 00000000..c89f715c --- /dev/null +++ b/script/c511001369.lua @@ -0,0 +1,46 @@ +--Intruder Alarm - Yellow Alert +function c511001369.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001369.condition) + e1:SetTarget(c511001369.target) + e1:SetOperation(c511001369.activate) + c:RegisterEffect(e1) +end +function c511001369.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001369.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001369.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001369.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001369.activate(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,c511001369.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetLabelObject(tc) + e1:SetOperation(c511001369.retop) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e1,tp) + end +end +function c511001369.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and tc:IsOnField() then + Duel.Hint(HINT_CARD,0,511001369) + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c511001370.lua b/script/c511001370.lua new file mode 100644 index 00000000..2933ca49 --- /dev/null +++ b/script/c511001370.lua @@ -0,0 +1,33 @@ +--Junk Dealer +function c511001370.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001370.condition) + e1:SetTarget(c511001370.target) + e1:SetOperation(c511001370.activate) + c:RegisterEffect(e1) +end +function c511001370.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsControler(1-tp) and bit.band(tc:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511001370.mgfilter(c,e,tp,fusc) + return c:IsControler(1-tp) and c:IsLocation(LOCATION_GRAVE) and bit.band(c:GetReason(),0x40008)==0x40008 + and c:GetReasonCard()==fusc and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001370.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + local mg=tc:GetMaterial() + if not mg then return false end + local mgg=mg:Filter(c511001370.mgfilter,nil,e,tp,tc) + if chk==0 then return mgg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>mgg:GetCount()-1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,mgg,mgg:GetCount(),0,0) +end +function c511001370.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local mg=tc:GetMaterial():Filter(c511001370.mgfilter,nil,e,tp,tc) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=mg:GetCount()-1 then return end + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511001371.lua b/script/c511001371.lua new file mode 100644 index 00000000..c0b89304 --- /dev/null +++ b/script/c511001371.lua @@ -0,0 +1,125 @@ +--CNo.40 ギミック・パペット-デビルズ・ストリングス +function c511001371.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),9,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001371.rankupregcon) + e1:SetOperation(c511001371.rankupregop) + c:RegisterEffect(e1) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(1102515,0)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetTarget(c511001371.drtg) + e3:SetOperation(c511001371.drop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511001371.indes) + c:RegisterEffect(e4) + if not c511001371.global_check then + c511001371.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001371.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001371.xyz_number=40 +function c511001371.rumfilter(c) + return c:IsCode(75433814) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001371.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001371.rumfilter,1,nil) +end +function c511001371.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(69170557,1)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001371.ctcost) + e1:SetTarget(c511001371.cttg) + e1:SetOperation(c511001371.ctop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(69170557,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001371.destg) + e2:SetOperation(c511001371.desop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c511001371.ctcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001371.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511001371.ctop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + g:GetFirst():AddCounter(0x1024,1) + end +end +function c511001371.desfilter(c) + return c:GetCounter(0x1024)~=0 and c:IsDestructable() +end +function c511001371.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001371.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c511001371.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511001371.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001371.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if Duel.Destroy(g,REASON_EFFECT)==0 then return end + local og=Duel.GetOperatedGroup() + if og:GetCount()>0 then + Duel.BreakEffect() + local sum=og:GetSum(Card.GetBaseAttack) + if sum>0 then + Duel.Damage(1-tp,sum,REASON_EFFECT) + end + Duel.RaiseSingleEvent(e:GetHandler(),EVENT_BATTLE_DESTROYING,e,REASON_EFFECT,tp,0,0) + end +end +function c511001371.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001371.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c511001371.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,69170557) + Duel.CreateToken(1-tp,69170557) +end +function c511001371.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001372.lua b/script/c511001372.lua new file mode 100644 index 00000000..cf92fbf8 --- /dev/null +++ b/script/c511001372.lua @@ -0,0 +1,101 @@ +--Number C88: Gimmick Puppet Disaster Leo (Anime) +function c511001372.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,9,4) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001372.rankupregcon) + e1:SetOperation(c511001372.rankupregop) + c:RegisterEffect(e1) + --immunity + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetValue(c511001372.efilter) + c:RegisterEffect(e2) + --battle indestructable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e5:SetValue(c511001372.indes) + c:RegisterEffect(e5) + if not c511001372.global_check then + c511001372.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001372.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001372.xyz_number=88 +function c511001372.rumfilter(c) + return c:IsCode(48995978) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001372.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001372.rumfilter,1,nil) +end +function c511001372.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(6165656,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCost(c511001372.cost) + e3:SetTarget(c511001372.target) + e3:SetOperation(c511001372.operation) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + --win + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_DELAY) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCountLimit(1) + e4:SetOperation(c511001372.winop) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) +end +function c511001372.efilter(e,te) + return te:IsActiveType(TYPE_MONSTER) and te:GetOwner()~=e:GetOwner() +end +function c511001372.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001372.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(4000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,4000) +end +function c511001372.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001372.winop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetOverlayCount()==0 then + local WIN_REASON_DISASTER_LEO=0x18 + Duel.Win(tp,WIN_REASON_DISASTER_LEO) + end +end +function c511001372.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,6165656) + Duel.CreateToken(1-tp,6165656) +end +function c511001372.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001373.lua b/script/c511001373.lua new file mode 100644 index 00000000..18b481c5 --- /dev/null +++ b/script/c511001373.lua @@ -0,0 +1,218 @@ +--Overlay Satellite +function c511001373.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --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(c511001373.target) + e1:SetOperation(c511001373.operation) + c:RegisterEffect(e1) + --double xyz material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(511001225) + 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) + --attach + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511001373,0)) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c511001373.atcon) + e5:SetOperation(c511001373.atop) + c:RegisterEffect(e5) + if not c511001373.global_check then + c511001373.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001373.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001373.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 c511001373.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 c511001373.filterx(c) + return c:IsType(TYPE_XYZ) and c.xyz_count and c.xyz_count>0 +end +function c511001373.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511001373.filterx,c:GetControler(),LOCATION_EXTRA,LOCATION_EXTRA,nil) + local tc=g:GetFirst() + while tc do + local tck=Duel.CreateToken(tp,419) + if tc:GetFlagEffect(419)==0 then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetDescription(aux.Stringid(71921856,0)) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetValue(SUMMON_TYPE_XYZ) + e1:SetCondition(c511001373.xyzcon) + e1:SetOperation(c511001373.xyzop) + e1:SetLabelObject(tck) + e1:SetReset(RESET_EVENT+EVENT_ADJUST,1) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(419,RESET_EVENT+EVENT_ADJUST,0,1) + end + tc=g:GetNext() + end +end +function c511001373.mfilter(c,rk,xyz) + return c:IsFaceup() and xyz.xyz_filter(c) and c:IsCanBeXyzMaterial(xyz) and c:IsXyzLevel(xyz,rk) +end +function c511001373.amfilter(c) + return c:GetEquipGroup():IsExists(Card.IsHasEffect,1,nil,511001175) +end +function c511001373.subfilter(c,rk,xyz,tck) + return c:IsFaceup() and c.xyzsub and c.xyzsub==rk and not c:IsStatus(STATUS_DISABLED) + and xyz.xyz_filter(tck) +end +function c511001373.xyzcon(e,c,og) + if c==nil then return true end + local tp=c:GetControler() + local rk=c:GetRank() + local ct=c.xyz_count + local mg=Duel.GetMatchingGroup(c511001373.mfilter,tp,LOCATION_MZONE,0,nil,rk,c) + local tck=e:GetLabelObject() + local mg2=Duel.GetMatchingGroup(c511001373.subfilter,tp,LOCATION_ONFIELD,0,nil,rk,c,tck) + mg:Merge(mg2) + if not mg:IsExists(c511001373.amfilter,1,nil) and not mg:IsExists(Card.IsHasEffect,1,nil,511001225) + and not mg:IsExists(c511001373.subfilter,1,nil,rk,c,tck) then return false end + local g=mg:Filter(c511001373.amfilter,nil) + local eqg=Group.CreateGroup() + local tce=g:GetFirst() + while tce do + local eq=tce:GetEquipGroup() + eq=eq:Filter(Card.IsHasEffect,nil,511001175) + g:Merge(eq) + tce=g:GetNext() + end + local dob=mg:Filter(Card.IsHasEffect,nil,511001225) + local dobc=dob:GetFirst() + while dobc do + ct=ct-1 + dobc=dob:GetNext() + end + mg:Merge(g) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and mg:GetCount()>=ct +end +function c511001373.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og) + local c=e:GetHandler() + local rk=c:GetRank() + local ct=c.xyz_count + local mg=Duel.GetMatchingGroup(c511001373.mfilter,tp,LOCATION_MZONE,0,nil,rk,c) + local tck=e:GetLabelObject() + local mg2=Duel.GetMatchingGroup(c511001373.subfilter,tp,LOCATION_ONFIELD,0,nil,rk,c,tck) + mg:Merge(mg2) + local g1=Group.CreateGroup() + g1:KeepAlive() + local eqg=Group.CreateGroup() + eqg:KeepAlive() + while ct>0 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g2=mg:Select(tp,1,1,nil) + if g2:GetFirst() and c511001373.amfilter(g2:GetFirst()) then + eq=g2:GetFirst():GetEquipGroup() + eq=eq:Filter(Card.IsHasEffect,nil,511001175) + mg:Merge(eq) + elseif g2:GetFirst() and g2:GetFirst():GetEquipTarget()~=nil then + eqg:Merge(g2) + end + if g2:GetFirst() and g2:GetFirst():IsHasEffect(511001225) and ct>0 and (mg:GetCount()<=1 or Duel.SelectYesNo(tp,aux.Stringid(61965407,0))) then + ct=ct-1 + end + mg:Sub(g2) + g1:Merge(g2) + ct=ct-1 + end + local sg=Group.CreateGroup() + local tc=g1:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=g1:GetNext() + end + sg:Merge(eqg) + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(g1) + Duel.Overlay(c,g1) +end +function c511001373.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_LOST_TARGET) and c:GetPreviousEquipTarget():IsLocation(LOCATION_OVERLAY) +end +function c511001373.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetPreviousEquipTarget():GetReasonCard() + Duel.Overlay(rc,Group.FromCards(c)) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + rc:RegisterEffect(e1) +end +function c511001373.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001374.lua b/script/c511001374.lua new file mode 100644 index 00000000..386441fb --- /dev/null +++ b/script/c511001374.lua @@ -0,0 +1,128 @@ +--Number 8: Heraldic King Genom-Heritage (anime) +function c511001374.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x76),4,2) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(69838592,1)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c511001374.atkcon) + e1:SetCost(c511001374.cost) + e1:SetOperation(c511001374.atkop) + c:RegisterEffect(e1) + --effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(10032958,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCost(c511001374.cost) + e2:SetCondition(c511001374.effcon) + e2:SetOperation(c511001374.effop) + c:RegisterEffect(e2) + --name + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51827737,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCountLimit(1) + e2:SetCost(c511001374.cost) + e2:SetCondition(c511001374.cocon) + e2:SetOperation(c511001374.coop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511001374.indes) + c:RegisterEffect(e3) + if not c511001374.global_check then + c511001374.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001374.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001374.xyz_number=8 +function c511001374.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001374.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc and bc:IsFaceup() and bc:IsRelateToBattle() and bc:GetBaseAttack()~=c:GetAttack() and bc:GetAttack()>0 +end +function c511001374.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if c:IsFaceup() and c:IsRelateToBattle() and bc:IsFaceup() and bc:IsRelateToBattle() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(bc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + end +end +function c511001374.effcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and a:IsPosition(POS_FACEUP_ATTACK) +end +function c511001374.effop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local c=e:GetHandler() + if c:IsFaceup() then + Duel.NegateAttack() + local code=a:GetOriginalCode() + c:CopyEffect(code,RESET_EVENT+0x1fe0000) + end +end +function c511001374.cocon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511001374.coop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local c=e:GetHandler() + if c:IsFaceup() then + local code=a:GetCode() + --code + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e1) + --code + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_ADD_CODE) + e2:SetValue(code) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511001374.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,47387961) + Duel.CreateToken(1-tp,47387961) +end +function c511001374.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001375.lua b/script/c511001375.lua new file mode 100644 index 00000000..2ef0a702 --- /dev/null +++ b/script/c511001375.lua @@ -0,0 +1,35 @@ +--Level Resist Wall +function c511001375.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511001375.target) + e1:SetOperation(c511001375.activate) + c:RegisterEffect(e1) +end +function c511001375.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001375.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local sg=Duel.GetMatchingGroup(c511001375.filter,tp,LOCATION_HAND,0,nil,e,tp) + if chk==0 then return eg:GetCount()==1 and tc:GetLevel()>0 and tc:IsControler(tp) + and ft>0 and sg:CheckWithSumEqual(Card.GetLevel,tc:GetLevel(),1,ft+1) end + e:SetLabel(tc:GetLevel()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001375.activate(e,tp,eg,ep,ev,re,r,rp) + local lv=e:GetLabel() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local sg=Duel.GetMatchingGroup(c511001375.filter,tp,LOCATION_HAND,0,nil,e,tp) + if ft<=0 and not sg:CheckWithSumEqual(Card.GetLevel,tc:GetLevel(),1,ft+1) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=sg:SelectWithSumEqual(tp,Card.GetLevel,lv,1,ft+1) + if sp:GetCount()>0 then + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001376.lua b/script/c511001376.lua new file mode 100644 index 00000000..6cc4e26d --- /dev/null +++ b/script/c511001376.lua @@ -0,0 +1,131 @@ +--D/D/D Kali Yuga the Twin Dawn Overlord (Anime) +function c511001376.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0xaf),8,2) + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_CANNOT_DISEFFECT) + c:RegisterEffect(e0) + --cannot disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_DISABLE) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001376,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetOperation(c511001376.negop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001376,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511001376.descost) + e3:SetTarget(c511001376.destg) + e3:SetOperation(c511001376.desop) + c:RegisterEffect(e3) + --return + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DESTROYED) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511001376.retcon) + e4:SetCost(c511001376.descost) + e4:SetTarget(c511001376.rettg) + e4:SetOperation(c511001376.retop) + c:RegisterEffect(e4) +end +function c511001376.negop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511001376.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001376.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511001376.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001376.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local sg=Duel.GetMatchingGroup(c511001376.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511001376.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001376.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) +end +function c511001376.retcfilter(c,tp) + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp and c:IsControler(tp) + and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511001376.retcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and eg:IsExists(c511001376.retcfilter,1,nil,tp) and re and re:GetHandler()==e:GetHandler() +end +function c511001376.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511001376.retcfilter,nil,tp) + local gm=g:Filter(Card.IsPreviousLocation,nil,LOCATION_MZONE) + local gst=g:Filter(Card.IsPreviousLocation,nil,LOCATION_SZONE) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>gm:GetCount()-1 + or Duel.GetLocationCount(tp,LOCATION_SZONE)>gst:GetCount()-1 end + Duel.SetTargetCard(g) +end +function c511001376.retop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(Card.IsRelateToEffect,nil,e) + if not g or g:GetCount()<=0 then return end + local gm=g:Filter(Card.IsPreviousLocation,nil,LOCATION_MZONE) + local gst=g:Filter(Card.IsPreviousLocation,nil,LOCATION_SZONE) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>gm:GetCount()-1 then + local tc=gm:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,tc:GetPreviousLocation(),tc:GetPreviousPosition(),true) + tc=gm:GetNext() + end + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>gst:GetCount()-1 then + local tc=gst:GetFirst() + while tc do + if tc:IsPreviousPosition(POS_FACEDOWN) and tc:IsSSetable() then + Duel.SSet(tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + else + Duel.MoveToField(tc,tp,tp,tc:GetPreviousLocation(),tc:GetPreviousPosition(),true) + if tc:IsFacedown() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end + tc=gst:GetNext() + end + end +end diff --git a/script/c511001377.lua b/script/c511001377.lua new file mode 100644 index 00000000..911a7809 --- /dev/null +++ b/script/c511001377.lua @@ -0,0 +1,66 @@ +--Ring of Fiendish Power +function c511001377.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(c511001377.atlimit) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511001377.damcon) + e3:SetTarget(c511001377.damtg) + e3:SetOperation(c511001377.damop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetCondition(c511001377.descon) + c:RegisterEffect(e4) +end +function c511001377.filter(c,atk) + return c:IsFaceup() and c:IsRace(RACE_FIEND) and c:GetBaseAttack()>atk +end +function c511001377.atlimit(e,c) + return c:IsFacedown() or not c:IsRace(RACE_FIEND) + or Duel.IsExistingMatchingCard(c511001377.filter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,c,c:GetBaseAttack()) +end +function c511001377.damcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsRace(RACE_FIEND) +end +function c511001377.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + local dam=bc:GetDefense() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511001377.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001377.desfilter(c) + return c:IsFaceup() and c:IsRace(RACE_FIEND) +end +function c511001377.descon(e) + return not Duel.IsExistingMatchingCard(c511001377.desfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511001378.lua b/script/c511001378.lua new file mode 100644 index 00000000..d8e3a206 --- /dev/null +++ b/script/c511001378.lua @@ -0,0 +1,35 @@ +--Power Annihilator +function c511001378.initial_effect(c) + --atkdef up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001378,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001378.con) + e1:SetOperation(c511001378.op) + c:RegisterEffect(e1) +end +function c511001378.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:GetAttack()~=c:GetAttack() +end +function c511001378.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and bc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + if bc:GetAttack()>c:GetAttack() then + e1:SetValue(1000) + elseif c:GetAttack()>bc:GetAttack() then + e1:SetValue(-1000) + else + e1:SetValue(0) + end + c:RegisterEffect(e1) + end +end diff --git a/script/c511001379.lua b/script/c511001379.lua new file mode 100644 index 00000000..2144532b --- /dev/null +++ b/script/c511001379.lua @@ -0,0 +1,71 @@ +--Power Bombard +function c511001379.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(511001265) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001379.damcon) + e1:SetTarget(c511001379.damtg) + e1:SetOperation(c511001379.damop) + c:RegisterEffect(e1) + if not c511001379.global_check then + c511001379.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511001379.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511001379.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511001379.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511001379.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511001379.damcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(tp) and ec:IsCode(511001378) and ev>0 +end +function c511001379.damtg(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) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1800) +end +function c511001379.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then + Duel.Damage(1-tp,1800,REASON_EFFECT) + end +end diff --git a/script/c511001380.lua b/script/c511001380.lua new file mode 100644 index 00000000..742d4b20 --- /dev/null +++ b/script/c511001380.lua @@ -0,0 +1,91 @@ +--Explosion Fuse +function c511001380.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001380.con) + e1:SetTarget(c511001380.target) + e1:SetOperation(c511001380.activate) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511001380.desop) + c:RegisterEffect(e2) +end +function c511001380.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511001380.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==1-tp +end +function c511001380.con(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001380.cfilter,1,nil,tp) +end +function c511001380.filter(c,e,tp) + return c:IsCode(511001379) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001380.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001380.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001380.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001380.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if c:IsRelateToEffect(e) and tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001380.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001380,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c511001380.damcon) + e2:SetTarget(c511001380.damtg) + e2:SetOperation(c511001380.damop) + if tp==Duel.GetTurnPlayer() then + e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + end + c:RegisterEffect(e2) + end +end +function c511001380.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001380.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511001380.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then return eq end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eq,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511001380.damop(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + if not eq then return end + if Duel.Destroy(eq,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,1000,REASON_EFFECT) + end +end diff --git a/script/c511001381.lua b/script/c511001381.lua new file mode 100644 index 00000000..ff8b9cb3 --- /dev/null +++ b/script/c511001381.lua @@ -0,0 +1,54 @@ +--Infernal Blasthound +function c511001381.initial_effect(c) + --destroy hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001381,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511001381.descon) + e1:SetTarget(c511001381.destg) + e1:SetOperation(c511001381.desop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001381,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DESTROYED) + e2:SetTarget(c511001381.sptg) + e2:SetOperation(c511001381.spop) + c:RegisterEffect(e2) +end +function c511001381.descon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511001381.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_HAND,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_HAND,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001381.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_HAND,nil):RandomSelect(tp,1) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c511001381.filter(c,e,tp) + return c:IsCode(511001381) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001381.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001381.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001381.spop(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,c511001381.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001382.lua b/script/c511001382.lua new file mode 100644 index 00000000..6bc0e260 --- /dev/null +++ b/script/c511001382.lua @@ -0,0 +1,30 @@ +--Lure Phantom +function c511001382.initial_effect(c) + --return to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80344569,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001382.condition) + e1:SetTarget(c511001382.target) + e1:SetOperation(c511001382.operation) + c:RegisterEffect(e1) +end +function c511001382.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001382.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToHand() and Duel.GetAttacker():IsAbleToHand() end + local g=Group.FromCards(Duel.GetAttacker(),c) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511001382.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>1 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end diff --git a/script/c511001383.lua b/script/c511001383.lua new file mode 100644 index 00000000..f6e2a43b --- /dev/null +++ b/script/c511001383.lua @@ -0,0 +1,37 @@ +--Psychic Cyclone +function c511001383.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001383.target) + e1:SetOperation(c511001383.activate) + c:RegisterEffect(e1) +end +function c511001383.filter(c) + return c:IsFacedown() and c:IsDestructable() +end +function c511001383.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c511001383.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001383.filter,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001383.filter,tp,0,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_NONE,1) +end +function c511001383.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CARDTYPE) + local op=Duel.SelectOption(tp,71,72) + if Duel.Destroy(tc,REASON_EFFECT)>0 then + if (op==0 and tc:IsType(TYPE_SPELL)) or (op==1 and tc:IsType(TYPE_TRAP)) then + Duel.Draw(tp,1,REASON_EFFECT) + else + Duel.Draw(1-tp,1,REASON_EFFECT) + end + end + end +end diff --git a/script/c511001384.lua b/script/c511001384.lua new file mode 100644 index 00000000..8b3f1355 --- /dev/null +++ b/script/c511001384.lua @@ -0,0 +1,52 @@ +--Blaster Cartridge +function c511001384.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES+CATEGORY_DRAW) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c511001384.tg) + e1:SetOperation(c511001384.op) + c:RegisterEffect(e1) +end +function c511001384.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,4) and Duel.IsPlayerCanDraw(tp,1) + and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=5 end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,4) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001384.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + if c:IsRelateToEffect(e) then + Duel.DiscardDeck(p,4,REASON_EFFECT) + Duel.Draw(p,1,REASON_EFFECT) + Duel.BreakEffect() + c:CancelToGrave() + Duel.SendtoDeck(c,nil,0,REASON_EFFECT) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c511001384.descon) + e1:SetTarget(c511001384.destg) + e1:SetOperation(c511001384.desop) + e1:SetReset(RESET_EVENT+0x1de0000) + c:RegisterEffect(e1) + end +end +function c511001384.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DRAW) +end +function c511001384.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,e:GetHandler(),1,0,0) +end +function c511001384.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + end +end diff --git a/script/c511001385.lua b/script/c511001385.lua new file mode 100644 index 00000000..a61bde15 --- /dev/null +++ b/script/c511001385.lua @@ -0,0 +1,54 @@ +--Anchor Knight +function c511001385.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001385,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001385.condition) + e1:SetCost(c511001385.cost) + e1:SetTarget(c511001385.target) + e1:SetOperation(c511001385.operation) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001385,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(3) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511001385.cost) + e2:SetTarget(c511001385.damtg) + e2:SetOperation(c511001385.damop) + c:RegisterEffect(e2) +end +function c511001385.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511001385.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c511001385.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001385.operation(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_DEFENSE) + end +end +function c511001385.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511001385.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001386.lua b/script/c511001386.lua new file mode 100644 index 00000000..721773c4 --- /dev/null +++ b/script/c511001386.lua @@ -0,0 +1,66 @@ +--Violent Salvage +function c511001386.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001386.condition) + e1:SetTarget(c511001386.target) + e1:SetOperation(c511001386.activate) + c:RegisterEffect(e1) +end +function c511001386.cfilter(c) + return c:IsFaceup() and c:IsCode(511001385) +end +function c511001386.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001386.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511001386.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc1=Duel.GetFieldCard(tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)-1) + local tc2=Duel.GetFieldCard(tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)-2) + local tc3=Duel.GetFieldCard(tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)-3) + if chk==0 then return tc1 and tc1:IsAbleToHand() and tc2 and tc2:IsAbleToHand() and tc3 and tc3:IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,Group.FromCards(tc1,tc2,tc3),3,0,0) +end +function c511001386.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc1=Duel.GetFieldCard(tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)-1) + local tc2=Duel.GetFieldCard(tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)-2) + local tc3=Duel.GetFieldCard(tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)-3) + if not tc1 or not tc1:IsAbleToHand() or not tc2 or not tc2:IsAbleToHand() or not tc3 + or not tc3:IsAbleToHand() then return end + local g=Group.FromCards(tc1,tc2,tc3) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + e2:SetReset(RESET_EVENT+0x07c0000) + tc:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetReset(RESET_EVENT+0x0f80000) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e4:SetCode(EFFECT_CANNOT_TRIGGER) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetValue(1) + tc:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_CANNOT_ACTIVATE) + tc:RegisterEffect(e5) + tc=g:GetNext() + end + end +end diff --git a/script/c511001387.lua b/script/c511001387.lua new file mode 100644 index 00000000..a405be46 --- /dev/null +++ b/script/c511001387.lua @@ -0,0 +1,43 @@ +--Soul Anchor +function c511001387.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(c511001387.target) + e1:SetOperation(c511001387.operation) + c:RegisterEffect(e1) + --Indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + 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) + --Pos limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + c:RegisterEffect(e4) +end +function c511001387.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 c511001387.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 diff --git a/script/c511001388.lua b/script/c511001388.lua new file mode 100644 index 00000000..cf3a03c0 --- /dev/null +++ b/script/c511001388.lua @@ -0,0 +1,82 @@ +--Mad Profiler +function c511001388.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(83965310,0)) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511001388.spcon) + e2:SetOperation(c511001388.spop) + c:RegisterEffect(e2) + --banish + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001388,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511001388.cost) + e3:SetTarget(c511001388.tg) + e3:SetOperation(c511001388.op) + c:RegisterEffect(e3) +end +function c511001388.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 + and Duel.CheckReleaseGroup(c:GetControler(),nil,3,nil) +end +function c511001388.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),nil,3,3,nil) + Duel.Release(g,REASON_COST) +end +function c511001388.cfilter(c,tp) + local tpe=0 + if c:IsType(TYPE_MONSTER) then + tpe=TYPE_MONSTER + elseif c:IsType(TYPE_SPELL) then + tpe=TYPE_SPELL + else + tpe=TYPE_TRAP + end + return c:IsAbleToGraveAsCost() + and Duel.IsExistingTarget(c511001388.banfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tpe) +end +function c511001388.banfilter(c,tpe) + return c:IsType(tpe) and c:IsAbleToRemove() and (c:IsType(TYPE_MONSTER) or c:IsFaceup()) +end +function c511001388.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001388.cfilter,tp,LOCATION_HAND,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tc=Duel.SelectMatchingCard(tp,c511001388.cfilter,tp,LOCATION_HAND,0,1,1,nil,tp):GetFirst() + Duel.SendtoGrave(tc,REASON_COST) + if tc:IsType(TYPE_MONSTER) then + e:SetLabel(TYPE_MONSTER) + elseif tc:IsType(TYPE_SPELL) then + e:SetLabel(TYPE_SPELL) + else + e:SetLabel(TYPE_TRAP) + end +end +function c511001388.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511001388.banfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511001388.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511001389.lua b/script/c511001389.lua new file mode 100644 index 00000000..d9587664 --- /dev/null +++ b/script/c511001389.lua @@ -0,0 +1,49 @@ +--Crime and Punishment +function c511001389.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511001389.con) + e1:SetTarget(c511001389.tg) + e1:SetOperation(c511001389.op) + c:RegisterEffect(e1) +end +function c511001389.con(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and Duel.GetAttackTarget()==nil +end +function c511001389.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001389.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetOperation(c511001389.spop) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e1,tp) +end +function c511001389.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001389.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001389.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + if g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(96148285,0))then + Duel.Hint(HINT_CARD,0,511001389) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + if sg:GetCount()~=0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511001390.lua b/script/c511001390.lua new file mode 100644 index 00000000..7d111c21 --- /dev/null +++ b/script/c511001390.lua @@ -0,0 +1,31 @@ +--Pinpoint Shot +function c511001390.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_TOHAND) + e1:SetCategory(CATEGORY_HANDES) + e1:SetTarget(c511001390.target) + e1:SetOperation(c511001390.operation) + c:RegisterEffect(e1) +end +function c511001390.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 + and Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + e:GetHandler():SetHint(CHINT_CARD,ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c511001390.operation(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,ac) + if g:GetCount()>0 then + Duel.ConfirmCards(tp,g) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c511001391.lua b/script/c511001391.lua new file mode 100644 index 00000000..2721ee87 --- /dev/null +++ b/script/c511001391.lua @@ -0,0 +1,79 @@ +--ユベル +function c511001391.initial_effect(c) + --battle + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e1:SetCondition(c511001391.condition) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_RELEASE+CATEGORY_DESTROY) + e4:SetDescription(aux.Stringid(78371393,1)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCondition(c511001391.descon) + e4:SetTarget(c511001391.destg) + e4:SetOperation(c511001391.desop) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(78371393,3)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e5:SetCode(EVENT_DESTROYED) + e5:SetCondition(c511001391.spcon) + e5:SetTarget(c511001391.sptg) + e5:SetOperation(c511001391.spop) + e5:SetLabelObject(e4) + c:RegisterEffect(e5) +end +function c511001391.condition(e) + return e:GetHandler():IsAttackPos() +end +function c511001391.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001391.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsLocation(LOCATION_DECK) end + if not Duel.CheckReleaseGroup(tp,nil,1,nil) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + end +end +function c511001391.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + if Duel.CheckReleaseGroup(tp,Card.IsReleasableByEffect,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(78371393,2)) then + local g=Duel.SelectReleaseGroup(tp,Card.IsReleasableByEffect,1,1,nil) + Duel.Release(g,REASON_EFFECT) + else Duel.Destroy(c,REASON_EFFECT) end +end +function c511001391.spcon(e,tp,eg,ep,ev,re,r,rp) + return re~=e:GetLabelObject() +end +function c511001391.filter(c,e,tp) + return c:IsCode(4779091) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) + and (not c:IsLocation(LOCATION_GRAVE) or not c:IsHasEffect(EFFECT_NECRO_VALLEY)) +end +function c511001391.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511001391.spop(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,c511001391.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c511001392.lua b/script/c511001392.lua new file mode 100644 index 00000000..edafb480 --- /dev/null +++ b/script/c511001392.lua @@ -0,0 +1,81 @@ +--ユベル-Das Abscheulich Ritter +function c511001392.initial_effect(c) + c:EnableReviveLimit() + --battle + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e1:SetCondition(c511001392.condition) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_RELEASE+CATEGORY_DESTROY) + e4:SetDescription(aux.Stringid(4779091,1)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCondition(c511001392.descon) + e4:SetTarget(c511001392.destg) + e4:SetOperation(c511001392.desop) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(4779091,2)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e5:SetTarget(c511001392.sptg) + e5:SetOperation(c511001392.spop) + c:RegisterEffect(e5) + --cannot special summon + local e6=Effect.CreateEffect(c) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e6) +end +function c511001392.condition(e) + return e:GetHandler():IsAttackPos() +end +function c511001392.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001392.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511001392.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,e:GetHandler()) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct>0 and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,ct,nil) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,ct,ct,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + end +end +function c511001392.filter(c,e,tp) + return c:IsCode(31764700) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) + and (not c:IsLocation(LOCATION_GRAVE) or not c:IsHasEffect(EFFECT_NECRO_VALLEY)) +end +function c511001392.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511001392.spop(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,c511001392.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) + end +end diff --git a/script/c511001393.lua b/script/c511001393.lua new file mode 100644 index 00000000..304eb5f3 --- /dev/null +++ b/script/c511001393.lua @@ -0,0 +1,43 @@ +--Scab Scream +function c511001393.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001393.condition) + e1:SetTarget(c511001393.target) + e1:SetOperation(c511001393.activate) + c:RegisterEffect(e1) +end +function c511001393.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return at:IsControler(tp) and at:IsFaceup() and at:IsCode(100000224) and a:IsAttackAbove(2000) +end +function c511001393.filter(c,e,tp) + return c:IsCode(511001394) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511001393.target(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if chk==0 then return a:IsOnField() and a:IsDestructable() and at:IsAbleToGrave() and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001393.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetTargetCard(a) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,a,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001393.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if a:IsRelateToEffect(e) and Duel.Destroy(a,REASON_EFFECT)>0 then + if at:IsCode(100000224) and Duel.SendtoGrave(at,REASON_EFFECT)>0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001393.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end + end + end +end diff --git a/script/c511001394.lua b/script/c511001394.lua new file mode 100644 index 00000000..20f40b29 --- /dev/null +++ b/script/c511001394.lua @@ -0,0 +1,46 @@ +--Scar-Knight +function c511001394.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e4:SetDescription(aux.Stringid(511001394,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCondition(c511001394.con) + e4:SetCost(c511001394.cost) + e4:SetTarget(c511001394.tg) + e4:SetOperation(c511001394.op) + c:RegisterEffect(e4) +end +function c511001394.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001394.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511001394.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,g:GetCount()*500) +end +function c511001394.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct>0 then + Duel.Damage(1-tp,ct*500,REASON_EFFECT,true) + Duel.Damage(tp,ct*500,REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c511001395.lua b/script/c511001395.lua new file mode 100644 index 00000000..29c9967b --- /dev/null +++ b/script/c511001395.lua @@ -0,0 +1,53 @@ +--マジシャンズ・エイプ +function c511001395.initial_effect(c) + --Type Spellcaster + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_ADD_RACE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(RACE_SPELLCASTER) + c:RegisterEffect(e1) + --control + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(31975743,0)) + e2:SetCategory(CATEGORY_CONTROL) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511001395.condition) + e2:SetCost(c511001395.cost) + e2:SetTarget(c511001395.target) + e2:SetOperation(c511001395.operation) + c:RegisterEffect(e2) +end +function c511001395.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c511001395.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c511001395.filter(c) + return c:IsFaceup() and c:IsControlerCanBeChanged() +end +function c511001395.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001395.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001395.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511001395.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511001395.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if Duel.GetControl(tc,tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001396.lua b/script/c511001396.lua new file mode 100644 index 00000000..e7b8dc40 --- /dev/null +++ b/script/c511001396.lua @@ -0,0 +1,52 @@ +--ファイターズ・エイプ +function c511001396.initial_effect(c) + --Type Warrior + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e0:SetCode(EFFECT_ADD_RACE) + e0:SetRange(LOCATION_MZONE) + e0:SetValue(RACE_WARRIOR) + c:RegisterEffect(e0) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41098335,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511001396.atkcon) + e1:SetOperation(c511001396.atkop) + c:RegisterEffect(e1) + --atk clear + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TURN_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetOperation(c511001396.retop) + c:RegisterEffect(e2) +end +function c511001396.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsFaceup() and e:GetHandler():IsRelateToBattle() +end +function c511001396.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(400) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c511001396.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetTurnPlayer()==tp and c:GetAttackedCount()==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c:GetBaseAttack()) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001397.lua b/script/c511001397.lua new file mode 100644 index 00000000..4ae0cdfb --- /dev/null +++ b/script/c511001397.lua @@ -0,0 +1,25 @@ +--Unequal Treaty +function c511001397.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511001397.con) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511001397.drop) + c:RegisterEffect(e2) +end +function c511001397.con(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst():IsControler(tp) and Duel.GetAttackTarget()==nil +end +function c511001397.drop(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp then + Duel.Recover(tp,100,REASON_EFFECT) + Duel.Damage(1-tp,100,REASON_EFFECT) + end +end diff --git a/script/c511001398.lua b/script/c511001398.lua new file mode 100644 index 00000000..5768c2c3 --- /dev/null +++ b/script/c511001398.lua @@ -0,0 +1,34 @@ +--Forced March +function c511001398.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001398.target) + e1:SetOperation(c511001398.activate) + c:RegisterEffect(e1) +end +function c511001398.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001398.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()/2) + if tc:RegisterEffect(e1) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end + tc=sg:GetNext() + end +end diff --git a/script/c511001399.lua b/script/c511001399.lua new file mode 100644 index 00000000..5cddb605 --- /dev/null +++ b/script/c511001399.lua @@ -0,0 +1,30 @@ +--Toy Cannon +function c511001399.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001399.target) + e1:SetOperation(c511001399.activate) + c:RegisterEffect(e1) +end +function c511001399.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) +end +function c511001399.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001399.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001399.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001399.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c511001399.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + Duel.Damage(1-tp,400,REASON_EFFECT) + end +end diff --git a/script/c511001400.lua b/script/c511001400.lua new file mode 100644 index 00000000..0b21dcd4 --- /dev/null +++ b/script/c511001400.lua @@ -0,0 +1,34 @@ +--Animal Trail +function c511001400.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c511001400.condition) + e1:SetTarget(c511001400.target) + e1:SetOperation(c511001400.activate) + c:RegisterEffect(e1) +end +function c511001400.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp +end +function c511001400.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001400.cfilter,1,nil,tp) +end +function c511001400.afilter(c) + return c:IsRace(RACE_BEAST) and c:IsAbleToHand() +end +function c511001400.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001400.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001400.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001400.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001401.lua b/script/c511001401.lua new file mode 100644 index 00000000..45fe26f1 --- /dev/null +++ b/script/c511001401.lua @@ -0,0 +1,39 @@ +--Koala March +function c511001401.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001401.target) + e1:SetOperation(c511001401.activate) + c:RegisterEffect(e1) +end +function c511001401.filter(c,e,tp) + return (c:IsCode(42129512) or c:IsCode(69579761) or c:IsCode(87685879) or c:IsCode(1371589) or c:IsCode(7243511)) + and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001401.spfilter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001401.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c:IsControler(tp) and c83764718.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001401.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001401.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001401.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local g=Duel.GetMatchingGroup(c511001401.spfilter,tp,LOCATION_HAND,0,nil,tc:GetCode(),e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(525110,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.BreakEffect() + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511001402.lua b/script/c511001402.lua new file mode 100644 index 00000000..d435c713 --- /dev/null +++ b/script/c511001402.lua @@ -0,0 +1,16 @@ +--Rubble King +function c511001402.initial_effect(c) + --Trap activate in hand + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001402.condition) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCountLimit(1) + c:RegisterEffect(e1) +end +function c511001402.condition(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_GRAVE,0)>=30 +end diff --git a/script/c511001403.lua b/script/c511001403.lua new file mode 100644 index 00000000..7430528b --- /dev/null +++ b/script/c511001403.lua @@ -0,0 +1,70 @@ +--Shuffle Reborn +function c511001403.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001403.condition) + e1:SetTarget(c511001403.target) + e1:SetOperation(c511001403.activate) + c:RegisterEffect(e1) +end +function c511001403.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511001403.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001403.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c:IsControler(tp) and c511001403.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001403.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001403.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001403.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToDeck,tp,LOCATION_ONFIELD,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + if Duel.SendtoDeck(g,nil,2,REASON_EFFECT) then + Duel.ShuffleDeck(tp) + local dr=Duel.GetDecktopGroup(tp,1):GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + local bg=Group.FromCards(tc,dr) + bg:KeepAlive() + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCountLimit(1) + e3:SetLabelObject(bg) + e3:SetOperation(c511001403.rmop) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) + end + end + end +end +function c511001403.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511001404.lua b/script/c511001404.lua new file mode 100644 index 00000000..dbd7b96b --- /dev/null +++ b/script/c511001404.lua @@ -0,0 +1,34 @@ +--D/D Baphomet +function c511001404.initial_effect(c) + --double lv + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001404,1)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001404.target) + e1:SetOperation(c511001404.operation) + c:RegisterEffect(e1) +end +function c511001404.filter(c) + return c:IsFaceup() and c:GetLevel()>0 and c:GetLevel()<7 +end +function c511001404.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001404.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001404.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001404.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511001404.operation(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:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetLevel()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001405.lua b/script/c511001405.lua new file mode 100644 index 00000000..02606b24 --- /dev/null +++ b/script/c511001405.lua @@ -0,0 +1,82 @@ +--D/D Swirlal Slime +function c511001405.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetTarget(c511001405.sptg) + e1:SetOperation(c511001405.spop) + c:RegisterEffect(e1) +end +function c511001405.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511001405.filter2(c,e,tp,m,ec,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,ec,chkf) +end +function c511001405.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local c=e:GetHandler() + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND,0,c) + local res=Duel.IsExistingMatchingCard(c511001405.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,c,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001405.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,c,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001405.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsControler(1-tp) or c:IsImmuneToEffect(e) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001405.filter1,tp,LOCATION_HAND,0,c,e) + local sg1=Duel.GetMatchingGroup(c511001405.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,c,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001405.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,c,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + else + local cg1=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) + and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then + Duel.ConfirmCards(1-tp,cg1) + Duel.ConfirmCards(1-tp,cg2) + Duel.ShuffleHand(tp) + end + end +end diff --git a/script/c511001406.lua b/script/c511001406.lua new file mode 100644 index 00000000..1814929f --- /dev/null +++ b/script/c511001406.lua @@ -0,0 +1,28 @@ +--Smile World +function c511001406.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001406.target) + e1:SetOperation(c511001406.activate) + c:RegisterEffect(e1) +end +function c511001406.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511001406.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local atk=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)*100 + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511001407.lua b/script/c511001407.lua new file mode 100644 index 00000000..2a655997 --- /dev/null +++ b/script/c511001407.lua @@ -0,0 +1,70 @@ +--Gagagamirage +function c511001407.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --xyz + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(511001225) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511001407.target) + c:RegisterEffect(e2) + if not c511001407.global_check then + c511001407.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001407.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001407.target(e,c) + return c:IsSetCard(0x54) and c:IsFaceup() +end +function c511001407.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001408.lua b/script/c511001408.lua new file mode 100644 index 00000000..c3cba792 --- /dev/null +++ b/script/c511001408.lua @@ -0,0 +1,41 @@ +--Magical Sky Mirror +function c511001408.initial_effect(c) + --copy spell + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001408.target) + e1:SetOperation(c511001408.operation) + c:RegisterEffect(e1) +end +function c511001408.filter(c,e,tp,eg,ep,ev,re,r,rp,tid) + local te=c:GetActivateEffect() + if not te then return end + local cost=te:GetCost() + local target=te:GetTarget() + return c:GetTurnID()==tid-1 and c:IsPreviousPosition(POS_FACEUP) + and c:GetType()==0x2 and (not cost or cost(te,1-tp,eg,ep,ev,re,r,rp,0)) and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) +end +function c511001408.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511001408.filter(chkc,tp,eg,ep,ev,re,r,rp,tid) end + if chk==0 then return Duel.IsExistingTarget(c511001408.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp,eg,ep,ev,re,r,rp,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tc=Duel.SelectTarget(tp,c511001408.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp,tid):GetFirst() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + e:SetLabelObject(te) + Duel.ClearTargetCard() + tc:CreateEffectRelation(e) + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c511001408.operation(e,tp,eg,ep,ev,re,r,rp) + local te=e:GetLabelObject() + if not te:GetHandler():IsRelateToEffect(e) then return end + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end diff --git a/script/c511001409.lua b/script/c511001409.lua new file mode 100644 index 00000000..be882bb5 --- /dev/null +++ b/script/c511001409.lua @@ -0,0 +1,54 @@ +--D/D/D Contract Modification +function c511001409.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c511001409.con) + e1:SetCost(c511001409.cost) + e1:SetTarget(c511001409.tg) + e1:SetOperation(c511001409.op) + c:RegisterEffect(e1) +end +function c511001409.con(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) +end +function c511001409.cfilter(c,atk) + return c:IsSetCard(0x10af) and c:GetAttack()>atk +end +function c511001409.costfilter(c,tp) + return c:IsSetCard(0x10af) and c:IsAbleToRemoveAsCost() + and not Duel.IsExistingMatchingCard(c511001409.cfilter,tp,LOCATION_GRAVE,0,1,nil,c:GetAttack()) +end +function c511001409.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001409.costfilter,tp,LOCATION_GRAVE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001409.costfilter,tp,LOCATION_GRAVE,0,1,1,nil,tp) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001409.filter(c) + return c:IsSetCard(0xaf) and c:IsType(TYPE_PENDULUM) and c:IsLevelBelow(4) and c:IsAbleToHand() +end +function c511001409.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001409.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001409.op(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001409.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001409.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c511001409.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511001410.lua b/script/c511001410.lua new file mode 100644 index 00000000..3f283ae7 --- /dev/null +++ b/script/c511001410.lua @@ -0,0 +1,77 @@ +--Dream Shark +function c511001410.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511001410.con) + e1:SetTarget(c511001410.tg) + e1:SetOperation(c511001410.op) + c:RegisterEffect(e1) + --des rep + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001410.reptg) + c:RegisterEffect(e2) +end +function c511001410.con(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + e:SetLabel(cv) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511001410.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001410.op(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + local c=e:GetHandler() + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e1=Effect.CreateEffect(c) + 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(c511001410.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x47e0000) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end +function c511001410.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then e:SetLabel(val) return 0 + else return val end +end +function c511001410.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) and c:GetDefense()>=1000 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ef0000) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(-1000) + c:RegisterEffect(e1) + return true +end diff --git a/script/c511001411.lua b/script/c511001411.lua new file mode 100644 index 00000000..780faa62 --- /dev/null +++ b/script/c511001411.lua @@ -0,0 +1,32 @@ +--Little Red Riding Hood +--Jackpro 1.3 +function c511001411.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001411.condition) + e1:SetTarget(c511001411.target) + e1:SetOperation(c511001411.operation) + c:RegisterEffect(e1) +end +function c511001411.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511001411.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_WARRIOR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001411.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001411.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001411.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,c511001411.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001413.lua b/script/c511001413.lua new file mode 100644 index 00000000..a3c163d5 --- /dev/null +++ b/script/c511001413.lua @@ -0,0 +1,35 @@ +--Giant's Training +function c511001413.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001413.cost) + e1:SetTarget(c511001413.target) + e1:SetOperation(c511001413.activate) + c:RegisterEffect(e1) +end +function c511001413.cfilter(c) + return c:IsFaceup() and c:IsCode(511001412) +end +function c511001413.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001413.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001413.cfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001413.filter(c,e,tp) + return c:IsCode(511001414) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001413.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001413.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511001413.activate(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,c511001413.filter,tp,0x13,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) + g:GetFirst():CompleteProcedure() +end diff --git a/script/c511001414.lua b/script/c511001414.lua new file mode 100644 index 00000000..01111cdc --- /dev/null +++ b/script/c511001414.lua @@ -0,0 +1,5 @@ +--Globerman +--Jackpro 1.3 +function c511001414.initial_effect(c) + c:EnableReviveLimit() +end diff --git a/script/c511001415.lua b/script/c511001415.lua new file mode 100644 index 00000000..6ad742db --- /dev/null +++ b/script/c511001415.lua @@ -0,0 +1,19 @@ +--Iron Knight +--Jackpro 1.3 +function c511001415.initial_effect(c) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetCondition(c511001415.sdcon) + e2:SetValue(-1000) + c:RegisterEffect(e2) +end +function c511001415.filter(c) + return c:IsFaceup() and c:IsCode(511001416) +end +function c511001415.sdcon(e) + return Duel.IsExistingMatchingCard(c511001415.filter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end diff --git a/script/c511001416.lua b/script/c511001416.lua new file mode 100644 index 00000000..2adfd1cb --- /dev/null +++ b/script/c511001416.lua @@ -0,0 +1,34 @@ +--Iron Hans +function c511001416.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001416.sptg) + e1:SetOperation(c511001416.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511001416.filter(c,e,tp) + return c:IsCode(511001415) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001416.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001416.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001416.spop(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,c511001416.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001417.lua b/script/c511001417.lua new file mode 100644 index 00000000..c9f83206 --- /dev/null +++ b/script/c511001417.lua @@ -0,0 +1,29 @@ +--Water of Life +function c511001417.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001417.target) + e1:SetOperation(c511001417.activate) + c:RegisterEffect(e1) +end +function c511001417.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001417.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c:IsControler(tp) and c511001417.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001417.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001417.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001417.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511001418.lua b/script/c511001418.lua new file mode 100644 index 00000000..3913e12b --- /dev/null +++ b/script/c511001418.lua @@ -0,0 +1,76 @@ +--Forest Wolf +function c511001418.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetOperation(c511001418.eqop) + c:RegisterEffect(e1) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetCode(EVENT_LEAVE_FIELD_P) + e4:SetOperation(c511001418.eqcheck) + c:RegisterEffect(e4) + --Release equipped monsters + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCondition(c511001418.damcon) + e2:SetTarget(c511001418.damtg) + e2:SetOperation(c511001418.damop) + e2:SetLabelObject(e4) + c:RegisterEffect(e2) +end +function c511001418.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local d=Duel.GetAttackTarget() + if d==c then d=Duel.GetAttacker() end + if not d or c:IsStatus(STATUS_BATTLE_DESTROYED) then return end + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Equip(tp,d,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001418.eqlimit) + d:RegisterEffect(e1) + end +end +function c511001418.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001418.eqcheck(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject() then e:GetLabelObject():DeleteGroup() end + local g=e:GetHandler():GetEquipGroup() + g:KeepAlive() + e:SetLabelObject(g) +end +function c511001418.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:GetPreviousLocation()==LOCATION_MZONE +end +function c511001418.spfilter2(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001418.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject():GetLabelObject() + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511001418.damop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject():GetLabelObject() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if g:GetCount()>ft then return end + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tc:GetOwner(),tc:GetOwner(),false,false,POS_FACEUP) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001419.lua b/script/c511001419.lua new file mode 100644 index 00000000..35d7b41c --- /dev/null +++ b/script/c511001419.lua @@ -0,0 +1,47 @@ +--Iron Cage +--Jackpro 1.3 +function c511001419.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001419.target) + e1:SetOperation(c511001419.operation) + c:RegisterEffect(e1) +end +function c511001419.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001419.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 Duel.Destroy(tc,0,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511001419.recon) + e1:SetOperation(c511001419.retop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + c:RegisterEffect(e1) + end +end +function c511001419.recon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001419.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if not tc or not tc:IsLocation(LOCATION_GRAVE) then return end + Duel.Hint(HINT_CARD,0,511001419) + if Duel.SpecialSummon(tc,0,tc:GetOwner(),tc:GetOwner(),false,false,POS_FACEUP)>0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c511001420.lua b/script/c511001420.lua new file mode 100644 index 00000000..10e2db02 --- /dev/null +++ b/script/c511001420.lua @@ -0,0 +1,46 @@ +--Spinning Wheel Spindle +--Jackpro 1.3 +function c511001420.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001420.target) + e1:SetOperation(c511001420.activate) + c:RegisterEffect(e1) +end +function c511001420.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001420.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + if Duel.Destroy(g,REASON_EFFECT)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c511001420.retop) + e1:SetLabel(0) + e1:SetLabelObject(g:GetFirst()) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511001420.retop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if Duel.GetTurnPlayer()~=tp then return end + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + e:GetHandler():SetTurnCounter(ct) + if ct==3 and g and g:IsLocation(LOCATION_GRAVE) then + Duel.SpecialSummon(g,0,1-tp,1-tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511001421.lua b/script/c511001421.lua new file mode 100644 index 00000000..561ca3d5 --- /dev/null +++ b/script/c511001421.lua @@ -0,0 +1,55 @@ +--Chaos Barrier +function c511001421.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001421.target) + e1:SetOperation(c511001421.activate) + c:RegisterEffect(e1) +end +function c511001421.filter(c,tp) + return c:IsFaceup() and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) + and Duel.IsExistingTarget(c511001421.filter2,tp,LOCATION_MZONE,0,1,c,c:GetCode()) +end +function c511001421.filter2(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511001421.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c:IsControler(tp) and c511001421.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001421.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g1=Duel.SelectTarget(tp,c511001421.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g2=Duel.SelectTarget(tp,c511001421.filter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst(),g1:GetFirst():GetCode()) +end +function c511001421.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=2 + or tg:FilterCount(Card.IsControler,nil,tp)~=2 then return end + local tc=tg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetValue(aux.imval1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc: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_CANNOT_REMOVE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e3) + tc=tg:GetNext() + end +end diff --git a/script/c511001422.lua b/script/c511001422.lua new file mode 100644 index 00000000..70f50b7f --- /dev/null +++ b/script/c511001422.lua @@ -0,0 +1,69 @@ +--Hundred Summon +function c511001422.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001422.condition) + e1:SetTarget(c511001422.target) + e1:SetOperation(c511001422.activate) + c:RegisterEffect(e1) +end +function c511001422.cfilter(c) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return no and no>=101 and no<=107 and c:IsSetCard(0x48) +end +function c511001422.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001422.cfilter,tp,LOCATION_MZONE,0,3,nil) +end +function c511001422.filter(c,e,tp) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return no and no>=101 and no<=107 and c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001422.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001422.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001422.activate(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,c511001422.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetOperation(c511001422.retop) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4,true) + end +end +function c511001422.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) +end diff --git a/script/c511001423.lua b/script/c511001423.lua new file mode 100644 index 00000000..7cf4b611 --- /dev/null +++ b/script/c511001423.lua @@ -0,0 +1,81 @@ +--Glory of the Seven Emperors +function c511001423.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001423.target) + e1:SetOperation(c511001423.activate) + c:RegisterEffect(e1) + --act qp in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511001423.handcon) + c:RegisterEffect(e2) +end +function c511001423.handcon(e) + local ph=Duel.GetCurrentPhase() + return Duel.IsExistingMatchingCard(c511001423.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) + and ph>=0x08 and ph<=0x20 +end +function c511001423.cfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) +end +function c511001423.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001423.atfilter(c) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return no and no>=101 and no<=107 and c:IsFaceup() and c:IsSetCard(0x1048) +end +function c511001423.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c:IsControler(tp) and c511001423.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001423.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511001423.atfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001423.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001423.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local g=Duel.GetMatchingGroup(c511001423.atfilter,tp,LOCATION_REMOVED,0,nil) + if g:GetCount()>0 then + Duel.Overlay(tc,g) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c511001423.lpop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetLabel(Duel.GetLP(1-tp)) + Duel.RegisterEffect(e3,tp) + end + end +end +function c511001423.lpop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001423) + if Duel.GetLP(1-tp)>e:GetLabel() then + Duel.SetLP(tp,Duel.GetLP(1-tp)-e:GetLabel(),REASON_EFFECT) + else + Duel.SetLP(tp,e:GetLabel()-Duel.GetLP(1-tp),REASON_EFFECT) + end +end diff --git a/script/c511001424.lua b/script/c511001424.lua new file mode 100644 index 00000000..9787e4ad --- /dev/null +++ b/script/c511001424.lua @@ -0,0 +1,64 @@ +--Power Stream +function c511001424.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001424.target) + e1:SetOperation(c511001424.activate) + c:RegisterEffect(e1) + if not c511001424.global_check then + c511001424.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetOperation(c511001424.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511001424.checkop(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + if ph<=PHASE_MAIN1 or ph>=PHASE_MAIN2 then return end + local tc=eg:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001424)==0 then + tc:RegisterFlagEffect(511001424,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + end + tc=eg:GetNext() + end +end +function c511001424.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:IsType(TYPE_XYZ) and c:GetFlagEffect(511001424)>0 +end +function c511001424.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001424.filter(chkc) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c511001424.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001424.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511001424.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) and c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_CALCULATING) + e1:SetOperation(c511001424.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511001424.atkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if a~=e:GetHandler() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(1000) + a:RegisterEffect(e1) +end diff --git a/script/c511001425.lua b/script/c511001425.lua new file mode 100644 index 00000000..b77f8e8c --- /dev/null +++ b/script/c511001425.lua @@ -0,0 +1,29 @@ +--浮上 +function c511001425.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001425.target) + e1:SetOperation(c511001425.activate) + c:RegisterEffect(e1) +end +function c511001425.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001425.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001425.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001425.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001425.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001425.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511001426.lua b/script/c511001426.lua new file mode 100644 index 00000000..6706839f --- /dev/null +++ b/script/c511001426.lua @@ -0,0 +1,45 @@ +--RUM-クイック・カオス +function c511001426.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001426.target) + e1:SetOperation(c511001426.activate) + c:RegisterEffect(e1) +end +function c511001426.filter1(c,e,tp) + return c:IsFaceup() and Duel.IsExistingMatchingCard(c511001426.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+1) +end +function c511001426.filter2(c,e,tp,mc,rk) + return c:GetRank()==rk and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511001426.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001426.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511001426.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp)end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511001426.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001426.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001426.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c511001427.lua b/script/c511001427.lua new file mode 100644 index 00000000..42138394 --- /dev/null +++ b/script/c511001427.lua @@ -0,0 +1,78 @@ +--Chaos Hundred Universe +function c511001427.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001427.target) + e1:SetOperation(c511001427.activate) + c:RegisterEffect(e1) +end +function c511001427.filter(c,tp,tid) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return no and no>=101 and no<=107 and c:IsSetCard(0x1048) and c:IsReason(REASON_DESTROY) and c:GetTurnID()==tid + and c:GetPreviousControler()==tp +end +function c511001427.spfilter(c,e,tp) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return no and no>=101 and no<=107 and c:IsSetCard(0x1048) and c:IsCanBeSpecialSummoned(e,0,1-tp,false,false) +end +function c511001427.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + local g=Duel.GetMatchingGroup(c511001427.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tp,tid) + local ct=g:GetCount() + if chk==0 then return ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>=ct + and g:IsExists(Card.IsCanBeSpecialSummoned,ct,nil,e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c511001427.spfilter,tp,LOCATION_EXTRA,0,ct,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,ct,0,0) +end +function c511001427.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511001427.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tp,Duel.GetTurnCount()) + local ct=g:GetCount() + if Duel.GetLocationCount(tp,LOCATION_MZONE)0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c511001427.spfilter,tp,LOCATION_EXTRA,0,ct,ct,nil,e,tp) + local tc2=g2:GetFirst() + while tc2 do + Duel.SpecialSummonStep(tc2,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e2) + tc2=g2:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001428.lua b/script/c511001428.lua new file mode 100644 index 00000000..b166e50e --- /dev/null +++ b/script/c511001428.lua @@ -0,0 +1,71 @@ +--Overlay Award +function c511001428.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001428.operation1) + e1:SetHintTiming(0,TIMING_MAIN_END) + c:RegisterEffect(e1) + --instant(chain) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001428,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_MAIN_END) + e2:SetCondition(c511001428.condition2) + e2:SetOperation(c511001428.operation2) + c:RegisterEffect(e2) +end +function c511001428.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001428.operation1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetFlagEffect(tp,511001428)==0 and Duel.GetOverlayCount(tp,1,0)>0 and Duel.IsExistingMatchingCard(c511001428.filter,tp,0,LOCATION_MZONE,1,nil) + and Duel.GetCurrentPhase()<=PHASE_BATTLE and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + local g1=Duel.GetOverlayGroup(tp,1,0) + local g2=Duel.GetMatchingGroup(c511001428.filter,tp,0,LOCATION_MZONE,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(47660516,0)) + local mg2=g1:Select(tp,1,1,nil) + local oc=mg2:GetFirst():GetOverlayTarget() + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(81816475,1)) + local tc=g2:Select(tp,1,1,nil):GetFirst() + Duel.Overlay(tc,mg2) + Duel.RaiseSingleEvent(oc,EVENT_DETACH_MATERIAL,e,0,0,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,511001428,RESET_PHASE+PHASE_END,0,1) + end +end +function c511001428.condition2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()<=PHASE_BATTLE and not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetFlagEffect(tp,511001428)==0 and Duel.GetOverlayCount(tp,1,0)>0 + and Duel.IsExistingMatchingCard(c511001428.filter,tp,0,LOCATION_MZONE,1,nil) +end +function c511001428.operation2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g1=Duel.GetOverlayGroup(tp,1,0) + local g2=Duel.GetMatchingGroup(c511001428.filter,tp,0,LOCATION_MZONE,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(47660516,0)) + local mg2=g1:Select(tp,1,1,nil) + local oc=mg2:GetFirst():GetOverlayTarget() + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(81816475,1)) + local tc=g2:Select(tp,1,1,nil):GetFirst() + Duel.Overlay(tc,mg2) + Duel.RaiseSingleEvent(oc,EVENT_DETACH_MATERIAL,e,0,0,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,511001428,RESET_PHASE+PHASE_END,0,1) +end diff --git a/script/c511001429.lua b/script/c511001429.lua new file mode 100644 index 00000000..1d58d749 --- /dev/null +++ b/script/c511001429.lua @@ -0,0 +1,150 @@ +--CNo.102 光堕天使ノーブル・デーモン +function c511001429.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),5,4) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001429.rankupregcon) + e1:SetOperation(c511001429.rankupregop) + c:RegisterEffect(e1) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511001429.indes) + c:RegisterEffect(e4) + if not c511001429.global_check then + c511001429.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511001429.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511001429.xyz_number=102 + +function c511001429.rumfilter(c) + return c:IsCode(49678559) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001429.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001429.rumfilter,1,nil) +end +function c511001429.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001429,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001429.cost) + e1:SetTarget(c511001429.tg) + e1:SetOperation(c511001429.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511001429.reptg) + e2:SetOperation(c511001429.repop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --trigger + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001429,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(511001429) + e3:SetTarget(c511001429.trtg) + e3:SetOperation(c511001429.trop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) +end +function c511001429.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001429.filter(c) + return c:IsFaceup() and (c:GetAttack()>0 or not c:IsDisabled()) +end +function c511001429.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001429.filter,tp,0,LOCATION_MZONE,1,nil) end +end +function c511001429.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511001429.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.HintSelection(g) + local tc=g:GetFirst() + if tc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end +function c511001429.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) end + if Duel.SelectYesNo(tp,aux.Stringid(67173574,0)) then + local g=e:GetHandler():GetOverlayGroup() + Duel.SendtoGrave(g,REASON_EFFECT) + return true + else return false end +end +function c511001429.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.RaiseSingleEvent(e:GetHandler(),511001429,e,r,rp,tp,0) +end +function c511001429.trtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local atk=e:GetHandler():GetAttack() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c511001429.trop(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:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local atk=e:GetHandler():GetAttack() + Duel.Damage(p,atk,REASON_EFFECT) + end +end +function c511001429.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,67173574) + Duel.CreateToken(1-tp,67173574) +end +function c511001429.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511001430.lua b/script/c511001430.lua new file mode 100644 index 00000000..45490d85 --- /dev/null +++ b/script/c511001430.lua @@ -0,0 +1,150 @@ +--CNo.103 神葬零嬢ラグナ・インフィニティ +function c511001430.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c511001430.rankupregop) + c:RegisterEffect(e1) + --activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(511001430) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511001430.damcost) + e2:SetCondition(c511001430.damcon) + e2:SetTarget(c511001430.damtg) + e2:SetOperation(c511001430.damop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001430,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c511001430.spcon) + e3:SetTarget(c511001430.sptg) + e3:SetOperation(c511001430.spop) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511001430.indes) + c:RegisterEffect(e4) + if not c511001430.global_check then + c511001430.global_check=true + --register + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(c511001430.operation) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001430.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001430.xyz_number=103 + +function c511001430.rumfilter(c) + return c:IsCode(94380860) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001430.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001430.rumfilter,1,nil) then + e:SetLabel(1) + else + e:SetLabel(0) + end +end +function c511001430.damcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + e:SetLabel(ev) + return eg:GetCount()==1 and ec:IsControler(1-tp) and ev>0 +end +function c511001430.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001430.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c511001430.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001430.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511001430.spfilter(c,e,tp) + return c:IsCode(94380860) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001430.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001430.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) and e:GetLabelObject():GetLabel()==1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001430.spop(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,c511001430.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001430.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001430)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511001430.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001430,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511001430.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001430,e,0,0,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511001430.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,20785975) + Duel.CreateToken(1-tp,20785975) +end +function c511001430.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511001431.lua b/script/c511001431.lua new file mode 100644 index 00000000..d0d3f1f5 --- /dev/null +++ b/script/c511001431.lua @@ -0,0 +1,112 @@ +--CNo.106 溶岩掌ジャイアント・ハンド・レッド +function c511001431.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001431.rankupregcon) + e1:SetOperation(c511001431.rankupregop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(c511001431.damval) + c:RegisterEffect(e2) + if not c511001431.global_check then + c511001431.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001431.numchk) + Duel.RegisterEffect(ge2,0) + end + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511001431.indes) + c:RegisterEffect(e3) + if not c511001431.global_check then + c511001431.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511001431.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511001431.xyz_number=106 + +function c511001431.rumfilter(c) + return c:IsCode(88177324) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001431.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001431.rumfilter,1,nil) +end +function c511001431.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(55888045,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001431.discon) + e1:SetCost(c511001431.discost) + e1:SetTarget(c511001431.distg) + e1:SetOperation(c511001431.disop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511001431.damval(e,re,val,r,rp,rc) + if e:GetHandler():IsPosition(POS_FACEUP_ATTACK) and bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end +function c511001431.discon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,63746411) +end +function c511001431.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001431.filter(c) + return c:IsFaceup() and not c:IsDisabled() +end +function c511001431.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001431.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end +end +function c511001431.disop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001431.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511001431.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,55888045) + Duel.CreateToken(1-tp,55888045) +end +function c511001431.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511001432.lua b/script/c511001432.lua new file mode 100644 index 00000000..77bb82b8 --- /dev/null +++ b/script/c511001432.lua @@ -0,0 +1,34 @@ +--潜航母艦エアロ・シャーク +function c511001432.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,3,2) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5014629,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511001432.damcost) + e1:SetTarget(c511001432.damtg) + e1:SetOperation(c511001432.damop) + c:RegisterEffect(e1) +end +function c511001432.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001432.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + if chk==0 then return ct>0 end + Duel.SetTargetParam(ct*400) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*400) +end +function c511001432.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + Duel.Damage(p,ct*400,REASON_EFFECT) +end diff --git a/script/c511001433.lua b/script/c511001433.lua new file mode 100644 index 00000000..f13c21d9 --- /dev/null +++ b/script/c511001433.lua @@ -0,0 +1,71 @@ +--運命の扉 +function c511001433.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001433.condition) + e1:SetTarget(c511001433.target) + e1:SetOperation(c511001433.activate) + c:RegisterEffect(e1) +end +function c511001433.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511001433.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,511001433,0,0x21,0,0,1,RACE_FIEND,ATTRIBUTE_LIGHT) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001433.activate(e,tp,eg,ep,ev,re,r,rp) + if not Duel.NegateAttack() then return end + Duel.BreakEffect() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001433,0,0x21,0,0,1,RACE_FIEND,ATTRIBUTE_LIGHT) then return end + c:AddMonsterAttribute(TYPE_EFFECT) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(27062594,0)) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCondition(c511001433.damcon) + e1:SetTarget(c511001433.damtg) + e1:SetOperation(c511001433.damop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511001433.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001433.cfilter(c) + return c:IsSetCard(0x48) and c:IsType(TYPE_XYZ) and c:IsAbleToRemove() +end +function c511001433.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001433.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511001433.damop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001433.cfilter,tp,LOCATION_GRAVE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local sg=g:Select(tp,1,g:GetCount(),nil) + if sg:GetCount()>0 then + local ct=Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) + local val=Duel.Damage(1-tp,ct*500,REASON_EFFECT) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(val) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end + end +end diff --git a/script/c511001434.lua b/script/c511001434.lua new file mode 100644 index 00000000..6fd81b59 --- /dev/null +++ b/script/c511001434.lua @@ -0,0 +1,67 @@ +--Rank Revolution +function c511001434.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511001434.condition) + e1:SetTarget(c511001434.target) + e1:SetOperation(c511001434.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001434.descon) + e2:SetOperation(c511001434.desop) + c:RegisterEffect(e2) +end +function c511001434.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local tc=g:GetFirst() + e:SetLabelObject(tc) + return g:GetCount()==1 and tc:IsFaceup() and tc:IsType(TYPE_XYZ) +end +function c511001434.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return e:GetLabelObject():IsCanBeEffectTarget(e) end + Duel.SetTargetCard(e:GetLabelObject()) +end +function c511001434.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511001434.tg) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511001434.tg) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + end +end +function c511001434.tg(e,c) + local tc=e:GetHandler() + return c~=tc and ((c:GetRank()>0 and c:GetRank()>tc:GetRank()) or (c:GetLevel()>0 and c:GetLevel()>tc:GetRank())) +end +function c511001434.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001434.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001435.lua b/script/c511001435.lua new file mode 100644 index 00000000..def08b75 --- /dev/null +++ b/script/c511001435.lua @@ -0,0 +1,34 @@ +--スター・ブライト・ドラゴン +function c511001435.initial_effect(c) + --lv up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(16719802,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511001435.tg) + e1:SetOperation(c511001435.op) + c:RegisterEffect(e1) +end +function c511001435.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511001435.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001435.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c511001435.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001435.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) +end +function c511001435.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(14812659,0)) + local ac=Duel.AnnounceNumber(tp,1,2) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(ac) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001436.lua b/script/c511001436.lua new file mode 100644 index 00000000..347bddc4 --- /dev/null +++ b/script/c511001436.lua @@ -0,0 +1,48 @@ +--Last Magnet +function c511001436.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511001436.condition) + e1:SetTarget(c511001436.target) + e1:SetOperation(c511001436.activate) + c:RegisterEffect(e1) +end +function c511001436.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsControler(1-tp) +end +function c511001436.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001436.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511001436.eqlimit(e,c) + return c:GetControler()~=e:GetOwnerPlayer() +end diff --git a/script/c511001437.lua b/script/c511001437.lua new file mode 100644 index 00000000..06edc650 --- /dev/null +++ b/script/c511001437.lua @@ -0,0 +1,27 @@ +--Scouting Warrior +function c511001437.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(87774234,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c511001437.condition) + e1:SetTarget(c511001437.target) + e1:SetOperation(c511001437.operation) + c:RegisterEffect(e1) +end +function c511001437.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_DECK) +end +function c511001437.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001437.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001438.lua b/script/c511001438.lua new file mode 100644 index 00000000..a418ad32 --- /dev/null +++ b/script/c511001438.lua @@ -0,0 +1,35 @@ +--Guard Master +function c511001438.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511001438.condition) + e1:SetCost(c511001438.cost) + e1:SetTarget(c511001438.target) + e1:SetOperation(c511001438.operation) + c:RegisterEffect(e1) +end +function c511001438.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsPosition(POS_FACEUP_ATTACK) +end +function c511001438.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511001438.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,Duel.GetAttackTarget(),1,0,0) +end +function c511001438.operation(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + Duel.ChangePosition(at,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + at:RegisterEffect(e1) +end diff --git a/script/c511001439.lua b/script/c511001439.lua new file mode 100644 index 00000000..b0b24ab0 --- /dev/null +++ b/script/c511001439.lua @@ -0,0 +1,24 @@ +--Zero Hole +function c511001439.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001439.condition) + e1:SetTarget(c511001439.target) + e1:SetOperation(c511001439.activate) + c:RegisterEffect(e1) +end +function c511001439.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(e:GetHandler():GetControler(),LOCATION_HAND,0)==0 +end +function c511001439.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511001439.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511001440.lua b/script/c511001440.lua new file mode 100644 index 00000000..19f9cf21 --- /dev/null +++ b/script/c511001440.lua @@ -0,0 +1,68 @@ +--Synchron Keeper +function c511001440.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001440.con) + e1:SetCost(c511001440.cost) + e1:SetTarget(c511001440.tg) + e1:SetOperation(c511001440.op) + c:RegisterEffect(e1) +end +function c511001440.con(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainDisablable(ev) then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511001440.cfilter(c,e,tp,clv) + local lv=c:GetLevel() + return c:IsAbleToRemoveAsCost() and lv>0 and c:IsType(TYPE_TUNER) + and Duel.IsExistingMatchingCard(c511001440.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,lv+clv) +end +function c511001440.spfilter(c,e,tp,lv) + return c:IsType(TYPE_SYNCHRO) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,false,false) +end +function c511001440.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c511001440.cfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,c:GetLevel()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001440.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,c:GetLevel()) + g:AddCard(c) + g:KeepAlive() + e:SetLabelObject(g) + e:SetLabel(g:GetSum(Card.GetLevel)) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001440.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001440.op(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + Duel.NegateEffect(ev) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001440.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,e:GetLabel()) + local tc=g:GetFirst() + if tc then + tc:SetMaterial(e:GetLabelObject()) + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + end +end diff --git a/script/c511001441.lua b/script/c511001441.lua new file mode 100644 index 00000000..f3f7179c --- /dev/null +++ b/script/c511001441.lua @@ -0,0 +1,99 @@ +--Lightlow Protection +function c511001441.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(c511001441.target) + e1:SetOperation(c511001441.activate) + 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) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(511001265) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511001441.descon) + e3:SetTarget(c511001441.destg) + e3:SetOperation(c511001441.desop) + c:RegisterEffect(e3) + if not c511001441.global_check then + c511001441.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511001441.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511001441.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 c511001441.activate(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 c511001441.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511001441.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511001441.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,e,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511001441.descon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec==e:GetHandler():GetEquipTarget() and rp~=tp and ev>0 +end +function c511001441.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler():GetEquipTarget(),1,0,0) +end +function c511001441.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler():GetEquipTarget(),REASON_EFFECT) + end +end diff --git a/script/c511001442.lua b/script/c511001442.lua new file mode 100644 index 00000000..6dd7dae8 --- /dev/null +++ b/script/c511001442.lua @@ -0,0 +1,64 @@ +--Spirit Contamination +function c511001442.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511001442.condition) + e1:SetTarget(c511001442.target) + e1:SetOperation(c511001442.activate) + c:RegisterEffect(e1) + if not c511001442.global_check then + c511001442.global_check=true + c511001442[0]=false + c511001442[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511001442.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001442.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001442.cfilter(c,tp) + return c:IsType(TYPE_MONSTER) and c:IsControler(tp) +end +function c511001442.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(c511001442.cfilter,1,nil,tp) then + c511001442[tp]=true + end + if eg:IsExists(c511001442.cfilter,1,nil,1-tp) then + c511001442[1-tp]=true + end +end +function c511001442.clear(e,tp,eg,ep,ev,re,r,rp) + c511001442[0]=false + c511001442[1]=false +end +function c511001442.condition(e,tp,eg,ep,ev,re,r,rp) + return c511001442[tp] +end +function c511001442.filter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511001442.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511001442.filter(chkc) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(c511001442.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001442.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001442.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001443.lua b/script/c511001443.lua new file mode 100644 index 00000000..0b5cc240 --- /dev/null +++ b/script/c511001443.lua @@ -0,0 +1,52 @@ +--Tuner's Mind +function c511001443.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001443.condition) + e1:SetTarget(c511001443.target) + e1:SetOperation(c511001443.activate) + c:RegisterEffect(e1) +end +function c511001443.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsType(TYPE_SYNCHRO) +end +function c511001443.target(e,tp,eg,ep,ev,re,r,rp,chk) + local at=Duel.GetAttackTarget() + if chk==0 then return at and at:IsAbleToExtra() end + Duel.SetTargetCard(at) + Duel.SetOperationInfo(0,CATEGORY_TODECK,at,1,0,0) +end +function c511001443.mgfilter(c,e,tp,sync) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x80008)~=0x80008 or c:GetReasonCard()~=sync + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001443.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 or sumtype~=SUMMON_TYPE_SYNCHRO or mg:GetCount()==0 + or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) + or mg:IsExists(c511001443.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable and Duel.SelectYesNo(tp,aux.Stringid(32441317,0)) then + Duel.BreakEffect() + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) + local g=mg:Filter(c511001443.filter,nil) + local atg=g:GetFirst() + if g:GetCount()>1 then + atg=g:Select(tp,1,1,nil):GetFirst() + end + Duel.ChangeAttackTarget(atg) + end +end +function c511001443.filter(c) + return c:IsType(TYPE_TUNER) +end diff --git a/script/c511001444.lua b/script/c511001444.lua new file mode 100644 index 00000000..16ac758a --- /dev/null +++ b/script/c511001444.lua @@ -0,0 +1,25 @@ +--Stop Hammer +function c511001444.initial_effect(c) + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(82593786,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetCondition(c511001444.condition) + e1:SetOperation(c511001444.operation) + c:RegisterEffect(e1) +end +function c511001444.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()~=nil +end +function c511001444.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-500) + Duel.GetAttacker():RegisterEffect(e1) + end +end diff --git a/script/c511001445.lua b/script/c511001445.lua new file mode 100644 index 00000000..985e3038 --- /dev/null +++ b/script/c511001445.lua @@ -0,0 +1,89 @@ +--Halfway to Forever +function c511001445.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001445.target) + e1:SetOperation(c511001445.activate) + c:RegisterEffect(e1) +end +function c511001445.filter(c,tid) + return c:GetTurnID()==tid and c:IsReason(REASON_BATTLE) +end +function c511001445.xyzfilter(c,mg) + return c:IsXyzSummonable(mg) and (c.minxyzct==2 or c.maxxyzct>=2) +end +function c511001445.mfilter1(c,exg) + return exg:IsExists(c511001445.mfilter2,1,nil,c) +end +function c511001445.mfilter2(c,mc) + return c.xyz_filter(mc) +end +function c511001445.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tid=Duel.GetTurnCount() + local mg=Duel.GetMatchingGroup(c511001445.filter,tp,LOCATION_GRAVE,0,nil,tid) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and mg:GetCount()>1 + and Duel.IsExistingMatchingCard(c511001445.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,mg) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001445.activate(e,tp,eg,ep,ev,re,r,rp) + local tid=Duel.GetTurnCount() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local mg=Duel.GetMatchingGroup(c511001445.filter,tp,LOCATION_GRAVE,0,nil,tid) + local exg=Duel.GetMatchingGroup(c511001445.xyzfilter,tp,LOCATION_EXTRA,0,nil,mg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg1=mg:FilterSelect(tp,c511001445.mfilter1,1,1,nil,exg) + local tc1=sg1:GetFirst() + local exg2=exg:Filter(c511001445.mfilter2,nil,tc1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg2=mg:FilterSelect(tp,c511001445.mfilter1,1,1,tc1,exg2) + sg1:Merge(sg2) + local xyzg=Duel.GetMatchingGroup(c511001445.xyzfilter,tp,LOCATION_EXTRA,0,nil,sg1) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:Select(tp,1,1,nil):GetFirst() + xyz:SetMaterial(sg1) + Duel.Overlay(xyz,sg1) + Duel.SpecialSummon(xyz,SUMMON_TYPE_XYZ,tp,tp,true,false,POS_FACEUP) + xyz:CompleteProcedure() + end +end diff --git a/script/c511001446.lua b/script/c511001446.lua new file mode 100644 index 00000000..0eb2466b --- /dev/null +++ b/script/c511001446.lua @@ -0,0 +1,32 @@ +--Overtake Summon +function c511001446.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCost(c511001446.cost) + e1:SetTarget(c511001446.tg) + e1:SetOperation(c511001446.op) + c:RegisterEffect(e1) +end +function c511001446.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckRemoveOverlayCard(tp,0,1,1,REASON_COST) end + Duel.RemoveOverlayCard(tp,0,1,1,1,REASON_COST) +end +function c511001446.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001446.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001446.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001446.op(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,c511001446.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 diff --git a/script/c511001447.lua b/script/c511001447.lua new file mode 100644 index 00000000..786c8f88 --- /dev/null +++ b/script/c511001447.lua @@ -0,0 +1,94 @@ +--Session Draw +function c511001447.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001447.activate) + c:RegisterEffect(e1) +end +function c511001447.activate(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DRAW) + e1:SetCountLimit(1) + if Duel.GetTurnPlayer()==tp and ph==PHASE_DRAW then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c511001447.con) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN,1) + end + e1:SetOperation(c511001447.op) + Duel.RegisterEffect(e1,tp) +end +function c511001447.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()~=e:GetLabel() +end +function c511001447.xyzfilter(c,mg) + return c:IsXyzSummonable(mg) and (c.minxyzct==2 or c.maxxyzct>=2) +end +function c511001447.op(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp or Duel.GetCurrentPhase()~=PHASE_DRAW or Duel.GetTurnPlayer()~=tp + or bit.band(r,REASON_RULE)==0 then return end + Duel.Hint(HINT_CARD,0,511001447) + local tc1=eg:GetFirst() + local tc2=Duel.GetDecktopGroup(tp,1):GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc1 and tc2 then + local g=Group.FromCards(tc1,tc2) + Duel.ConfirmCards(1-tp,g) + if tc1:IsType(TYPE_MONSTER) and tc2:IsType(TYPE_MONSTER) and tc1:GetLevel()==tc2:GetLevel() then + local xyzg=Duel.GetMatchingGroup(c511001447.xyzfilter,tp,LOCATION_EXTRA,0,nil,g) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:Select(tp,1,1,nil):GetFirst() + xyz:SetMaterial(g) + Duel.Overlay(xyz,g) + Duel.SpecialSummon(xyz,SUMMON_TYPE_XYZ,tp,tp,true,false,POS_FACEUP) + xyz:CompleteProcedure() + end + end + Duel.ShuffleHand(tp) + end + Duel.ShuffleHand(tp) +end diff --git a/script/c511001448.lua b/script/c511001448.lua new file mode 100644 index 00000000..130a4791 --- /dev/null +++ b/script/c511001448.lua @@ -0,0 +1,43 @@ +--Cascade Barrier +function c511001448.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511001448.condition) + e1:SetTarget(c511001448.target) + e1:SetOperation(c511001448.activate) + c:RegisterEffect(e1) +end +function c511001448.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001448.filter(c) + return c:IsFaceup() and c:GetFlagEffect(c511001448)==0 +end +function c511001448.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001448.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001448.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001448.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001448.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsType(TYPE_MONSTER) and tc:GetFlagEffect(511001448)==0 then + tc:RegisterFlagEffect(511001448,RESET_EVENT+0x1fe0000,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(0) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001449.lua b/script/c511001449.lua new file mode 100644 index 00000000..96a08266 --- /dev/null +++ b/script/c511001449.lua @@ -0,0 +1,44 @@ +--Adapt to Adversity +function c511001449.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001449.limcon) + e2:SetOperation(c511001449.limop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + +end +function c511001449.limfilter(c,tp) + return c:IsControler(tp) +end +function c511001449.limcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001449.limfilter,1,nil,tp) +end +function c511001449.limop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001449.limfilter,nil,tp) + local tc=g:GetFirst() + while tc do + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(c511001449.indesval) + e3:SetReset(RESET_CHAIN) + tc:RegisterEffect(e3) + tc=g:GetNext() + end +end +function c511001449.indesval(e,re) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c511001450.lua b/script/c511001450.lua new file mode 100644 index 00000000..b5e0b6f0 --- /dev/null +++ b/script/c511001450.lua @@ -0,0 +1,46 @@ +--Escape Lure +function c511001450.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001450.atkcon) + e1:SetTarget(c511001450.atktg) + e1:SetOperation(c511001450.atkop) + c:RegisterEffect(e1) +end +function c511001450.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001450.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local at=Duel.GetAttackTarget() + if chk==0 then + if at then + return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,at) + else + return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,nil) + end + end +end +function c511001450.atkop(e,tp,eg,ep,ev,re,r,rp) + local g + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + if Duel.GetAttackTarget() then + g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + else + g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) + end + if g:GetCount()>0 then + Duel.ChangeAttackTarget(g:GetFirst()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001450.rdop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + end +end +function c511001450.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) + Duel.ChangeBattleDamage(1-tp,ev/2) +end diff --git a/script/c511001451.lua b/script/c511001451.lua new file mode 100644 index 00000000..12d12478 --- /dev/null +++ b/script/c511001451.lua @@ -0,0 +1,28 @@ +--Book of Flip +function c511001451.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001451.target) + e1:SetOperation(c511001451.activate) + c:RegisterEffect(e1) +end +function c511001451.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FLIP) and c:IsCanTurnSet() +end +function c511001451.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001451.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001451.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001451.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511001451.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c511001452.lua b/script/c511001452.lua new file mode 100644 index 00000000..4052eaac --- /dev/null +++ b/script/c511001452.lua @@ -0,0 +1,53 @@ +--Heraldry Catastrophe +function c511001452.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001452.target) + e1:SetOperation(c511001452.activate) + c:RegisterEffect(e1) +end +function c511001452.filter(c,tp) + return c:IsFaceup() and c:GetOwner()==tp +end +function c511001452.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001452.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001452.filter,tp,0,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511001452.filter,tp,0,LOCATION_MZONE,1,1,nil,tp) +end +function c511001452.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TURN_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetOperation(c511001452.op) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) + tc:CreateEffectRelation(e1) + end +end +function c511001452.desfilter(c,atk) + return c:IsFaceup() and c:GetAttack()<=atk and c:IsDestructable() +end +function c511001452.op(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local g=Duel.GetMatchingGroup(c511001452.desfilter,tp,0,LOCATION_MZONE,tc,tc:GetAttack()) + if tc:IsRelateToEffect(e) and tc:IsControler(1-tp) and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(68535320,0)) then + Duel.Hint(HINT_CARD,0,511001452) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=g:Select(tp,1,g:GetCount(),nil) + Duel.HintSelection(sg) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + Duel.BreakEffect() + local dg=Duel.GetOperatedGroup() + local sum=dg:GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT) + end + end +end diff --git a/script/c511001453.lua b/script/c511001453.lua new file mode 100644 index 00000000..def04308 --- /dev/null +++ b/script/c511001453.lua @@ -0,0 +1,82 @@ +--Misdirection Wing +function c511001453.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001453.condition) + e1:SetTarget(c511001453.target) + e1:SetOperation(c511001453.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCost(c511001453.cost) + e2:SetTarget(c511001453.target) + e2:SetOperation(c511001453.activate) + c:RegisterEffect(e2) +end +function c511001453.cfilter(c) + return c:GetSequence()<5 +end +function c511001453.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 + and not Duel.IsExistingMatchingCard(c511001453.cfilter,tp,LOCATION_SZONE,0,1,e:GetHandler()) +end +function c511001453.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001453.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc 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:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local g=Duel.GetMatchingGroup(nil,tp,0,LOCATION_ONFIELD,nil) + local tg=g:GetFirst() + while tg do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tg:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tg:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetRange(LOCATION_ONFIELD) + e3:SetCode(EVENT_CHAIN_ACTIVATING) + e3:SetOperation(c511001453.disop) + e3:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END) + tg:RegisterEffect(e3) + tg=g:GetNext() + end + end +end +function c511001453.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + Duel.NegateEffect(ev) +end +function c511001453.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToRemoveAsCost() and Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_ONFIELD,0,2,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,LOCATION_ONFIELD,0,2,2,c) + g:AddCard(c) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end diff --git a/script/c511001454.lua b/script/c511001454.lua new file mode 100644 index 00000000..4b76d538 --- /dev/null +++ b/script/c511001454.lua @@ -0,0 +1,83 @@ +--D/D Necro Slime +function c511001454.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c511001454.cost) + e1:SetTarget(c511001454.target) + e1:SetOperation(c511001454.activate) + c:RegisterEffect(e1) +end +function c511001454.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511001454.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511001454.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) and c:IsSetCard(0x10af) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511001454.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511001454.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001454.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001454.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001454.filter1,tp,LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511001454.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001454.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + else + local cg1=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_MZONE,0) + local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) + and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then + Duel.ConfirmCards(1-tp,cg1) + Duel.ConfirmCards(1-tp,cg2) + Duel.ShuffleHand(tp) + end + end +end diff --git a/script/c511001455.lua b/script/c511001455.lua new file mode 100644 index 00000000..b963e16c --- /dev/null +++ b/script/c511001455.lua @@ -0,0 +1,84 @@ +--Covenant with the Seal Mistake +function c511001455.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) + --effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001455,0)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511001455.condition) + e2:SetTarget(c511001455.target) + e2:SetOperation(c511001455.operation) + c:RegisterEffect(e2) +end +function c511001455.condition(e,tp,eg,ep,ev,re,r,rp) + return re:GetOwner()~=e:GetHandler() and re:IsActiveType(TYPE_TRAP) +end +function c511001455.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511001455.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=eg:GetFirst() + Duel.NegateEffect(ev) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(9765723,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY then + e3:SetCondition(c511001455.damcon1) + e3:SetLabel(Duel.GetTurnCount()) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + else + e3:SetCondition(c511001455.damcon2) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + end + e3:SetCost(c511001455.damcost) + e3:SetTarget(c511001455.damtg) + e3:SetOperation(c511001455.damop) + c:RegisterEffect(e3) +end +function c511001455.damcon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() +end +function c511001455.damcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001455.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511001455)==0 end + e:GetHandler():RegisterFlagEffect(511001455,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511001455.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c511001455.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001456.lua b/script/c511001456.lua new file mode 100644 index 00000000..3ec156a1 --- /dev/null +++ b/script/c511001456.lua @@ -0,0 +1,88 @@ +--Re-contract Covenant +function c511001456.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) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001456,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_CHAIN_DISABLED) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001456.con) + e2:SetTarget(c511001456.tg) + e2:SetOperation(c511001456.op) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_CHAIN_NEGATED) + c:RegisterEffect(e3) +end +function c511001456.con(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re and re:GetHandler():IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511001456.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=re:GetHandler() + local condition=re:GetCondition() + local cost=re:GetCost() + local target=re:GetTarget() + if chk==0 then return (not condition or condition(e,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(e,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(e,tp,eg,ep,ev,re,r,rp,0)) end + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(9765723,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY then + e3:SetCondition(c511001456.damcon1) + e3:SetLabel(Duel.GetTurnCount()) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + else + e3:SetCondition(c511001456.damcon2) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + end + e3:SetCost(c511001456.damcost) + e3:SetTarget(c511001456.damtg) + e3:SetOperation(c511001456.damop) + c:RegisterEffect(e3) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ClearTargetCard() + e:SetLabelObject(re) + if cost then cost(e,tp,eg,ep,ev,re,r,rp,1) end + e:SetCategory(re:GetCategory()) + e:SetProperty(re:GetProperty()) + if target and target(e,tp,eg,ep,ev,re,r,rp,0) then target(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c511001456.op(e,tp,eg,ep,ev,re,r,rp) + local te=e:GetLabelObject() + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end +function c511001456.damcon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() +end +function c511001456.damcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001456.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511001456)==0 end + e:GetHandler():RegisterFlagEffect(511001456,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511001456.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c511001456.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001458.lua b/script/c511001458.lua new file mode 100644 index 00000000..ab524647 --- /dev/null +++ b/script/c511001458.lua @@ -0,0 +1,53 @@ +--Gulliver Chain +function c511001458.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHANGE_POS) + e1:SetCondition(c511001458.condition) + e1:SetTarget(c511001458.target) + e1:SetOperation(c511001458.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetOperation(c511001458.desop) + e2:SetRange(LOCATION_SZONE) + c:RegisterEffect(e2) +end +function c511001458.condition(e,tp,eg,ep,ev,re,r,rp) + return re and rp==tp +end +function c511001458.filter(c,e,tp) + return c:IsControler(1-tp) and c:IsCanBeEffectTarget(e) and c:IsLocation(LOCATION_MZONE) +end +function c511001458.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local g=eg:Filter(c511001458.filter,nil,e,tp) + if chk==0 then return g:GetCount()>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local tc=g:Select(tp,1,1,nil) + Duel.SetTargetCard(tc) + if not tc:GetFirst():IsPosition(POS_FACEUP_DEFENSE) then + Duel.SetOperationInfo(0,CATEGORY_POSITION,tc,1,0,0) + end +end +function c511001458.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and c:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE) + c:SetCardTarget(tc) + end +end +function c511001458.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if tc and tc:IsAttackPos() then + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Destroy(c,REASON_EFFECT) + end + end +end diff --git a/script/c511001459.lua b/script/c511001459.lua new file mode 100644 index 00000000..6ff7038e --- /dev/null +++ b/script/c511001459.lua @@ -0,0 +1,48 @@ +--Clear Effector +function c511001459.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92676637,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511001459.drcon) + e1:SetTarget(c511001459.drtg) + e1:SetOperation(c511001459.drop) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetOperation(c511001459.negop) + c:RegisterEffect(e2) +end +function c511001459.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO +end +function c511001459.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001459.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c511001459.negop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetReasonCard() + if r==REASON_SYNCHRO and Duel.SelectYesNo(tp,aux.Stringid(1639384,0)) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001460.lua b/script/c511001460.lua new file mode 100644 index 00000000..4a769e81 --- /dev/null +++ b/script/c511001460.lua @@ -0,0 +1,32 @@ +--Selection of Fate +function c511001460.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001460.target) + e1:SetOperation(c511001460.activate) + c:RegisterEffect(e1) +end +function c511001460.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001460.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001460.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end +end +function c511001460.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local sg=g:RandomSelect(1-tp,1) + local tc=sg:GetFirst() + if tc then + Duel.ConfirmCards(1-tp,tc) + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + else + Duel.ShuffleHand(tp) + end + end +end diff --git a/script/c511001465.lua b/script/c511001465.lua new file mode 100644 index 00000000..87172152 --- /dev/null +++ b/script/c511001465.lua @@ -0,0 +1,35 @@ +--Eshila the Lovely Bisque Doll +function c511001465.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511001465.val) + c:RegisterEffect(e1) +end +function c511001465.val(e,c) + local g=Duel.GetMatchingGroup(Card.IsSetCard,e:GetHandlerPlayer(),LOCATION_GRAVE,0,nil,0x220b) + local atk=0 + while g:GetCount()>=4 and g:GetClassCount(Card.GetCode)>=4 do + local g1=g:GetFirst() + local g2=g:GetNext() + while g2:GetCode()==g1:GetCode() do + g2=g:GetNext() + end + local g3=g:GetNext() + while g3:GetCode()==g1:GetCode() or g3:GetCode()==g2:GetCode() do + g3=g:GetNext() + end + local g4=g:GetNext() + while g4:GetCode()==g1:GetCode() or g4:GetCode()==g2:GetCode() or g4:GetCode()==g3:GetCode() do + g4=g:GetNext() + end + if g1 and g2 and g3 and g4 then + g:Sub(Group.FromCards(g1,g2,g3,g4)) + atk=atk+1000 + end + end + return atk +end diff --git a/script/c511001466.lua b/script/c511001466.lua new file mode 100644 index 00000000..7421ad19 --- /dev/null +++ b/script/c511001466.lua @@ -0,0 +1,50 @@ +--Alice the Wandering Doll +function c511001466.initial_effect(c) + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44789585,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetTarget(c511001466.damtg) + e2:SetOperation(c511001466.damop) + c:RegisterEffect(e2) +end +function c511001466.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511001466.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetTarget(c511001466.cttg) + e1:SetOperation(c511001466.ctop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) +end +function c511001466.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,e:GetHandler(),1,0,0) +end +function c511001466.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and not Duel.GetControl(c,1-tp) then + if not c:IsImmuneToEffect(e) and c:IsAbleToChangeControler() then + Duel.Destroy(c,REASON_EFFECT) + end + end +end diff --git a/script/c511001467.lua b/script/c511001467.lua new file mode 100644 index 00000000..37c1c43e --- /dev/null +++ b/script/c511001467.lua @@ -0,0 +1,63 @@ +--Marionette Burial +function c511001467.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001467.condition) + e1:SetTarget(c511001467.target) + e1:SetOperation(c511001467.activate) + c:RegisterEffect(e1) +end +function c511001467.cfilter(c) + return c:IsFaceup() and c:IsCode(511001466) +end +function c511001467.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001467.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511001467.tgfilter(c,code) + return c:IsFaceup() and c:IsCode(code) and c:IsAbleToGrave() +end +function c511001467.spfilter(c,e,tp) + return c:IsCode(511001468) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511001467.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001467.tgfilter,tp,LOCATION_MZONE,0,1,nil,511001462) + and Duel.IsExistingMatchingCard(c511001467.tgfilter,tp,LOCATION_MZONE,0,1,nil,511001464) + and Duel.IsExistingMatchingCard(c511001467.tgfilter,tp,LOCATION_MZONE,0,1,nil,511001461) + and Duel.IsExistingMatchingCard(c511001467.tgfilter,tp,LOCATION_MZONE,0,1,nil,511001463) + and Duel.IsExistingMatchingCard(c511001467.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,4,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001467.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c511001467.tgfilter,tp,LOCATION_MZONE,0,nil,511001462) + local g2=Duel.GetMatchingGroup(c511001467.tgfilter,tp,LOCATION_MZONE,0,nil,511001464) + local g3=Duel.GetMatchingGroup(c511001467.tgfilter,tp,LOCATION_MZONE,0,nil,511001461) + local g4=Duel.GetMatchingGroup(c511001467.tgfilter,tp,LOCATION_MZONE,0,nil,511001463) + local sp=Duel.GetMatchingGroup(c511001467.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=-1 then return end + if g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 and g4:GetCount()>0 + and sp:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg2=g2:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg3=g3:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg4=g4:Select(tp,1,1,nil) + sg1:Merge(sg2) + sg1:Merge(sg3) + sg1:Merge(sg4) + if Duel.SendtoGrave(sg1,REASON_EFFECT) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local spg=sp:Select(tp,1,1,nil) + if spg:GetCount()>0 and Duel.SpecialSummon(spg,0,tp,tp,true,true,POS_FACEUP) then + spg:GetFirst():CompleteProcedure() + end + end + end +end diff --git a/script/c511001468.lua b/script/c511001468.lua new file mode 100644 index 00000000..68375183 --- /dev/null +++ b/script/c511001468.lua @@ -0,0 +1,56 @@ +--Doll Chimera +function c511001468.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511001468.atkval) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001468,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCondition(c511001468.spcon) + e3:SetCost(c511001468.spcost) + e3:SetTarget(c511001468.sptg) + e3:SetOperation(c511001468.spop) + c:RegisterEffect(e3) +end +function c511001468.atkval(e,c) + return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0x220b)*400 +end +function c511001468.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511001468.costfilter(c) + return c:IsSetCard(0x220b) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511001468.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001468.costfilter,tp,LOCATION_DECK,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001468.costfilter,tp,LOCATION_DECK,0,2,2,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001468.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001468.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,true,true,POS_FACEUP) then + c:CompleteProcedure() + end +end diff --git a/script/c511001469.lua b/script/c511001469.lua new file mode 100644 index 00000000..7228edb9 --- /dev/null +++ b/script/c511001469.lua @@ -0,0 +1,31 @@ +--Door to Mirrorland +function c511001469.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001469.condition) + e1:SetTarget(c511001469.target) + e1:SetOperation(c511001469.activate) + c:RegisterEffect(e1) +end +function c511001469.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,511001466) +end +function c511001469.filter(c,e,tp) + return c:IsCode(511001465) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001469.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001469.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001469.activate(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,c511001469.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001470.lua b/script/c511001470.lua new file mode 100644 index 00000000..fb56754f --- /dev/null +++ b/script/c511001470.lua @@ -0,0 +1,36 @@ +--Doll Hammer +function c511001470.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW+CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001470.target) + e1:SetOperation(c511001470.activate) + c:RegisterEffect(e1) +end +function c511001470.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:IsDestructable() end + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) + and Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) + Duel.SetOperationInfo(0,CATEGORY_POSITION,nil,1,0,0) +end +function c511001470.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.Draw(tp,2,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) + end + end +end diff --git a/script/c511001471.lua b/script/c511001471.lua new file mode 100644 index 00000000..ed7c96b7 --- /dev/null +++ b/script/c511001471.lua @@ -0,0 +1,42 @@ +--Cursed Dollhouse +function c511001471.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001471,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_CONTROL_CHANGED) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001471.condition) + e2:SetTarget(c511001471.target) + e2:SetOperation(c511001471.operation) + c:RegisterEffect(e2) +end +function c511001471.cfilter(c,tp) + return c:IsCode(511001466) and c:IsControler(1-tp) and c:GetPreviousControler()==tp +end +function c511001471.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001471.cfilter,1,nil,tp) +end +function c511001471.spfilter(c,e,tp) + return c:IsSetCard(0x220b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001471.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001471.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001471.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,c511001471.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001472.lua b/script/c511001472.lua new file mode 100644 index 00000000..cd25e4ed --- /dev/null +++ b/script/c511001472.lua @@ -0,0 +1,35 @@ +--Released Curse +function c511001472.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511001472.condition) + e1:SetTarget(c511001472.target) + e1:SetOperation(c511001472.activate) + c:RegisterEffect(e1) +end +function c511001472.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,511001466) +end +function c511001472.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511001472.filter(c,tp) + return c:GetOwner()==tp +end +function c511001472.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + if Duel.Destroy(g,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local dam1=dg:FilterCount(c511001472.filter,nil,tp) + local dam2=dg:FilterCount(c511001472.filter,nil,1-tp) + Duel.Damage(tp,dam1*300,REASON_EFFECT) + Duel.Damage(1-tp,dam2*300,REASON_EFFECT) + end +end diff --git a/script/c511001473.lua b/script/c511001473.lua new file mode 100644 index 00000000..ccee5d74 --- /dev/null +++ b/script/c511001473.lua @@ -0,0 +1,35 @@ +--Necro Dollmeister +function c511001473.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001473.condition) + e1:SetTarget(c511001473.target) + e1:SetOperation(c511001473.activate) + c:RegisterEffect(e1) +end +function c511001473.cfilter(c,tp) + return c:IsSetCard(0x220b) and c:GetPreviousControler()==tp +end +function c511001473.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001473.cfilter,1,nil,tp) +end +function c511001473.filter(c,e,tp) + return c:IsSetCard(0x220b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001473.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511001473.filter,tp,LOCATION_DECK,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c511001473.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511001473.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511001474.lua b/script/c511001474.lua new file mode 100644 index 00000000..53569149 --- /dev/null +++ b/script/c511001474.lua @@ -0,0 +1,52 @@ +--Card Loan +function c511001474.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001474.cost) + e1:SetTarget(c511001474.target) + e1:SetOperation(c511001474.activate) + c:RegisterEffect(e1) +end +function c511001474.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 c511001474.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,1000) +end +function c511001474.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local tc=Duel.GetDecktopGroup(p,1):GetFirst() + if Duel.Draw(p,d,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.Recover(1-tp,1000,REASON_EFFECT) + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetLabelObject(tc) + e1:SetOperation(c511001474.tdop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511001474.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc then + Duel.Hint(HINT_CARD,0,511001474) + if tc:IsLocation(LOCATION_DECK) then + Duel.MoveSequence(tc,1) + else + Duel.SendtoDeck(tc,nil,1,REASON_EFFECT) + end + end +end diff --git a/script/c511001475.lua b/script/c511001475.lua new file mode 100644 index 00000000..3383aef0 --- /dev/null +++ b/script/c511001475.lua @@ -0,0 +1,42 @@ +--Future Vision +function c511001475.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001475.condition) + e1:SetTarget(c511001475.target) + e1:SetOperation(c511001475.activate) + c:RegisterEffect(e1) +end +function c511001475.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) +end +function c511001475.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_DECK)>0 end +end +function c511001475.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + if sg:GetCount()<=0 then return end + local g=Duel.GetMatchingGroup(Card.IsType,1-tp,LOCATION_DECK,0,nil,TYPE_MONSTER) + local dcount=Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0) + if dcount==0 then return end + if g:GetCount()==0 then + Duel.ConfirmDecktop(1-tp,dcount) + return + end + local seq=-1 + local tc=g:GetFirst() + local spcard=nil + while tc do + if tc:GetSequence()>seq then + seq=tc:GetSequence() + spcard=tc + end + tc=g:GetNext() + end + Duel.ConfirmDecktop(1-tp,dcount-seq) + if sg:IsExists(Card.IsRace,1,nil,spcard:GetRace()) then + Duel.Recover(1-tp,1000,REASON_EFFECT) + end +end diff --git a/script/c511001476.lua b/script/c511001476.lua new file mode 100644 index 00000000..48023f74 --- /dev/null +++ b/script/c511001476.lua @@ -0,0 +1,74 @@ +--Reverse Reborn +function c511001476.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001476.target) + e1:SetOperation(c511001476.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511001476.desop) + c:RegisterEffect(e2) +end +function c511001476.spfilter(c,e,tp) + return c:IsSetCard(0x5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001476.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001476.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001476.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001476.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001476.eqlimit(e,c) + return e:GetLabelObject()==c +end +function c511001476.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001476.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + --coin + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ADJUST) + e2:SetOperation(c511001476.coinop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511001476.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if c:IsReason(REASON_DESTROY) and tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511001476.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if not tc then return end + local val=tc:GetFlagEffectLabel(36690018) + if val==1 then + tc:SetFlagEffectLabel(36690018,1-val) + end +end diff --git a/script/c511001477.lua b/script/c511001477.lua new file mode 100644 index 00000000..ed775a75 --- /dev/null +++ b/script/c511001477.lua @@ -0,0 +1,39 @@ +--Ace of Wand +function c511001477.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511001477.condition) + e1:SetTarget(c511001477.target) + e1:SetOperation(c511001477.activate) + c:RegisterEffect(e1) +end +function c511001477.cfilter(c,eg) + local tp=c:GetControler() + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) + and not eg:IsExists(c511001477.cfilter2,1,nil,tp) +end +function c511001477.cfilter2(c,tp) + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) + and c:IsControler(1-tp) +end +function c511001477.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001477.cfilter,1,nil,eg) +end +function c511001477.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c511001477.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001477.cfilter,nil,eg) + local p=g:GetFirst():GetControler() + local sum=g:GetSum(Card.GetAttack) + local res=Duel.TossCoin(tp,1) + if res==1 then + Duel.Recover(p,sum,REASON_EFFECT) + else + Duel.Damage(p,sum,REASON_EFFECT) + end +end diff --git a/script/c511001478.lua b/script/c511001478.lua new file mode 100644 index 00000000..f4b468f5 --- /dev/null +++ b/script/c511001478.lua @@ -0,0 +1,75 @@ +--Knight of Pentacles +function c511001478.initial_effect(c) + --coin + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(97574404,0)) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001478.cointg) + e1:SetOperation(c511001478.coinop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511001478.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c511001478.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local res=0 + if c:IsHasEffect(73206827) then + res=1-Duel.SelectOption(tp,60,61) + else res=Duel.TossCoin(tp,1) end + c511001478.arcanareg(c,res) +end +function c511001478.arcanareg(c,coin) + --coin effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetCondition(c511001478.indcon) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetCondition(c511001478.atcon) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c511001478.descon) + e3:SetTarget(c511001478.destg) + e3:SetOperation(c511001478.desop) + c:RegisterEffect(e3) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) +end +function c511001478.indcon(e) + return e:GetHandler():GetFlagEffectLabel(36690018)==1 +end +function c511001478.atcon(e) + return e:GetHandler():GetFlagEffectLabel(36690018)==0 +end +function c511001478.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetFlagEffectLabel(36690018)==0 and c:IsRelateToBattle() and Duel.GetAttackTarget() and c==Duel.GetAttackTarget() +end +function c511001478.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 c511001478.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001479.lua b/script/c511001479.lua new file mode 100644 index 00000000..70a099ad --- /dev/null +++ b/script/c511001479.lua @@ -0,0 +1,61 @@ +--Overtraining +function c511001479.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001479.target) + e1:SetOperation(c511001479.activate) + c:RegisterEffect(e1) +end +function c511001479.filter(c) + return c:IsFaceup() and c:GetFlagEffect(511001479)==0 +end +function c511001479.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001479.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001479.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001479.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001479.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsType(TYPE_MONSTER) and tc:GetFlagEffect(511001479)==0 then + tc:RegisterFlagEffect(511001479,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(511001480,RESET_EVENT+0x1fe0000,0,1) + local de=Effect.CreateEffect(e:GetHandler()) + de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + de:SetCode(EVENT_PHASE+PHASE_END) + de:SetCountLimit(1) + de:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + de:SetLabelObject(tc) + de:SetCondition(c511001479.descon) + de:SetOperation(c511001479.desop) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END then + de:SetLabel(Duel.GetTurnCount()) + de:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + de:SetLabel(0) + de:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + Duel.RegisterEffect(de,tp) + end +end +function c511001479.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() and tc:GetFlagEffect(511001480)~=0 +end +function c511001479.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) + Duel.SendtoGrave(tc,REASON_EFFECT) +end diff --git a/script/c511001480.lua b/script/c511001480.lua new file mode 100644 index 00000000..6e118d5a --- /dev/null +++ b/script/c511001480.lua @@ -0,0 +1,20 @@ +--Bizarre Sacrifice +function c511001480.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001480.target) + e1:SetOperation(c511001480.activate) + c:RegisterEffect(e1) +end +function c511001480.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,0,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511001480.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511001481.lua b/script/c511001481.lua new file mode 100644 index 00000000..14274c5d --- /dev/null +++ b/script/c511001481.lua @@ -0,0 +1,29 @@ +--Non-equivalent Exchange +function c511001481.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001481.target) + e1:SetOperation(c511001481.activate) + c:RegisterEffect(e1) +end +function c511001481.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) +end +function c511001481.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511001481.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>0 + and Duel.IsExistingTarget(c511001481.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001481.filter,tp,0,LOCATION_GRAVE,1,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001481.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:GetCount()>0 then + Duel.SpecialSummon(tg,0,tp,1-tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001482.lua b/script/c511001482.lua new file mode 100644 index 00000000..283d6c5a --- /dev/null +++ b/script/c511001482.lua @@ -0,0 +1,26 @@ +--Shifting Land +function c511001482.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001482.lpop) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511001482.lpop) + c:RegisterEffect(e2) +end +function c511001482.lpop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local sum=0 + if g:GetCount()>0 then + sum=g:GetSum(Card.GetAttack) + end + Duel.SetLP(tp,sum,REASON_EFFECT) + Duel.BreakEffect() +end diff --git a/script/c511001483.lua b/script/c511001483.lua new file mode 100644 index 00000000..1e6b69e1 --- /dev/null +++ b/script/c511001483.lua @@ -0,0 +1,43 @@ +--Sky of Endless Night +function c511001483.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511001483.reptg) + e2:SetValue(c511001483.repval) + e2:SetOperation(c511001483.repop) + c:RegisterEffect(e2) +end +function c511001483.repfilter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) +end +function c511001483.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001483.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511001483.repfilter,nil,tp) + if chk==0 then return eg:IsExists(c511001483.repfilter,1,nil,tp) end + e:SetLabelObject(g) + return Duel.IsExistingMatchingCard(c511001483.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c511001483.repval(e,c) + return c511001483.repfilter(c,e:GetHandlerPlayer()) +end +function c511001483.repop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local xyz=Duel.SelectMatchingCard(tp,c511001483.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if xyz:GetCount()>0 then + Duel.HintSelection(xyz) + Duel.Overlay(xyz:GetFirst(),g) + end + end +end diff --git a/script/c511001484.lua b/script/c511001484.lua new file mode 100644 index 00000000..d75510f9 --- /dev/null +++ b/script/c511001484.lua @@ -0,0 +1,56 @@ +--World Cycle +function c511001484.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(97697678,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001484.condition) + e2:SetCost(c511001484.cost) + e2:SetTarget(c511001484.target) + e2:SetOperation(c511001484.operation) + c:RegisterEffect(e2) +end +function c511001484.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c511001484.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetLP(tp,math.floor(Duel.GetLP(tp)/2),REASON_EFFECT) +end +function c511001484.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK,0,1,nil) end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001484.operation(e,tp,eg,ep,ev,re,r,rp) + _replace_count=_replace_count+1 + if _replace_count>_replace_max or not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown()then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511001485.lua b/script/c511001485.lua new file mode 100644 index 00000000..0f460ae8 --- /dev/null +++ b/script/c511001485.lua @@ -0,0 +1,76 @@ +--Tachyon Cannon +function c511001485.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(c511001485.target) + e1:SetOperation(c511001485.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-500) + 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(c511001485.eqlimit) + c:RegisterEffect(e3) + --attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLED) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511001485.atcon) + e4:SetCost(c511001485.atcost) + e4:SetOperation(c511001485.atop) + c:RegisterEffect(e4) +end +function c511001485.eqlimit(e,c) + return c:IsCode(88177324) or c:IsCode(68396121) +end +function c511001485.filter(c) + return c:IsFaceup() and (c:IsCode(88177324) or c:IsCode(68396121)) +end +function c511001485.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511001485.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001485.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001485.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001485.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 c511001485.atcon(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + return eq:IsRelateToBattle() and Duel.GetAttacker()==eq and eq:GetAttack()>=500 +end +function c511001485.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c511001485.value) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) +end +function c511001485.value(e,c) + return c:GetAttack()/2 +end +function c511001485.atop(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + if not eq:IsRelateToBattle() then return end + Duel.ChainAttack() +end diff --git a/script/c511001486.lua b/script/c511001486.lua new file mode 100644 index 00000000..4e07ad1e --- /dev/null +++ b/script/c511001486.lua @@ -0,0 +1,36 @@ +--Tachyon Drive +function c511001486.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001486.target) + e1:SetOperation(c511001486.activate) + c:RegisterEffect(e1) +end +function c511001486.filter(c) + return c:IsFaceup() and (c:IsCode(88177324) or c:IsCode(68396121)) +end +function c511001486.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001486.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001486.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001486.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001486.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(c511001486.efilter) + tc:RegisterEffect(e1) + end +end +function c511001486.efilter(e,re,rp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and re:GetOwner()~=e:GetOwner() +end diff --git a/script/c511001487.lua b/script/c511001487.lua new file mode 100644 index 00000000..ee97db02 --- /dev/null +++ b/script/c511001487.lua @@ -0,0 +1,82 @@ +--Tachyon Flare Wing +function c511001487.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(c511001487.condition) + e1:SetTarget(c511001487.target) + e1:SetOperation(c511001487.activate) + c:RegisterEffect(e1) +end +function c511001487.cfilter(c,tp) + return c:IsType(TYPE_XYZ) and c:GetSummonPlayer()~=tp +end +function c511001487.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001487.cfilter,1,nil,tp) +end +function c511001487.filter(c) + return c:IsFaceup() and c:IsSetCard(0x107b) +end +function c511001487.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001487.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001487.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511001487.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001487.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetControler()==c:GetControler() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(c511001487.disable) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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(c511001487.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --Save Monster + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetTarget(c511001487.destg) + e3:SetOperation(c511001487.desop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511001487.disable(e,c) + return c:IsType(TYPE_XYZ) or bit.band(c:GetOriginalType(),TYPE_XYZ)==TYPE_XYZ +end +function c511001487.eqlimit(e,c) + return c:GetControler()==e:GetOwnerPlayer() and c:IsSetCard(0x107b) +end +function c511001487.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tg=c:GetEquipTarget() + if chk==0 then return c and not c:IsStatus(STATUS_DESTROY_CONFIRMED) + and tg end + return Duel.SelectYesNo(tp,aux.Stringid(511001487,0)) +end +function c511001487.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=c:GetEquipTarget() + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001488.lua b/script/c511001488.lua new file mode 100644 index 00000000..4e9c0f8f --- /dev/null +++ b/script/c511001488.lua @@ -0,0 +1,88 @@ +--Chaos Life +function c511001488.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001488.condition) + e1:SetOperation(c511001488.operation) + c:RegisterEffect(e1) +end +function c511001488.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if not ex then + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + e:SetLabel(cp) + if not ex or not Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) then return false end + if cp==tp and cv>=Duel.GetLP(tp) then return true + elseif cp~=tp and cv>=Duel.GetLP(1-tp) then return true + elseif cp==PLAYER_ALL then + local op=0 + if cv>=Duel.GetLP(1-tp) then + op=op+1 + end + if cv>=Duel.GetLP(tp) then + op=op+2 + end + if op==3 then + e:SetLabel(PLAYER_ALL) + elseif op==2 then + e:SetLabel(tp) + elseif op==1 then + e:SetLabel(1-tp) + else + return false + end + return true + end + else + e:SetLabel(cp) + if cp==tp and cv>=Duel.GetLP(tp) then return true + elseif cp~=tp and cv>=Duel.GetLP(1-tp) then return true + elseif cp==PLAYER_ALL then + local op=0 + if cv>=Duel.GetLP(1-tp) then + op=op+1 + end + if cv>=Duel.GetLP(tp) then + op=op+2 + end + if op==3 then + e:SetLabel(PLAYER_ALL) + elseif op==2 then + e:SetLabel(tp) + elseif op==1 then + e:SetLabel(1-tp) + else + return false + end + return true + end + end + return false +end +function c511001488.operation(e,tp,eg,ep,ev,re,r,rp) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local cp=e:GetLabel() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REVERSE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + if cp==tp then + e1:SetTargetRange(1,0) + elseif cp~=tp then + e1:SetTargetRange(0,1) + else + e1:SetTargetRange(1,1) + end + e1:SetLabel(cid) + e1:SetValue(c511001488.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511001488.refcon(e,re,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c511001489.lua b/script/c511001489.lua new file mode 100644 index 00000000..a178a12b --- /dev/null +++ b/script/c511001489.lua @@ -0,0 +1,114 @@ +--The Legendary Fisherman III +function c511001489.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetCondition(c511001489.hspcon) + e1:SetOperation(c511001489.hspop) + e1:SetValue(SUMMON_TYPE_SPECIAL+1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001489,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511001489.bantg) + e2:SetOperation(c511001489.banop) + c:RegisterEffect(e2) + --Double Damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511001489.con) + e3:SetCost(c511001489.cost) + e3:SetOperation(c511001489.op) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511001489.econ) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511001489.hspcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),Card.IsCode,1,nil,3643300) +end +function c511001489.hspop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,3643300) + Duel.Release(g,REASON_COST) +end +function c511001489.bantg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) + and e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,0) +end +function c511001489.banop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,5,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + if Duel.Remove(g,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY)>0 then + g=g:Filter(Card.IsLocation,nil,LOCATION_REMOVED) + g:KeepAlive() + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511001489,RESET_EVENT+0x1fe0000,0,1) + tc=g:GetNext() + end + e:SetLabelObject(g) + end + end +end +function c511001489.con(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp~=tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp~=tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_REVERSE_RECOVER) +end +function c511001489.retfilter(c) + return c:GetFlagEffect(511001489)>0 and c:IsLocation(LOCATION_REMOVED) +end +function c511001489.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject():GetLabelObject() + local sg=g:Filter(c511001489.retfilter,nil) + if chk==0 then return sg:GetCount()>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>=sg:GetCount() end + local tc=sg:GetFirst() + while tc do + Duel.ReturnToField(tc) + tc=sg:GetNext() + end +end +function c511001489.op(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(0,1) + e2:SetLabel(cid) + e2:SetValue(c511001489.damop) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) +end +function c511001489.damop(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + return val*2 +end +function c511001489.ffilter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c511001489.econ(e) + return Duel.IsExistingMatchingCard(c511001489.ffilter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end diff --git a/script/c511001490.lua b/script/c511001490.lua new file mode 100644 index 00000000..26d7881d --- /dev/null +++ b/script/c511001490.lua @@ -0,0 +1,37 @@ +--Xyz Discharge +function c511001490.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001490.cost) + e1:SetTarget(c511001490.target) + e1:SetOperation(c511001490.activate) + c:RegisterEffect(e1) +end +function c511001490.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,1-tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(1-tp,Card.IsAbleToGraveAsCost,1-tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001490.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsControlerCanBeChanged() +end +function c511001490.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001490.filter,1-tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,tp,LOCATION_MZONE) +end +function c511001490.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(1-tp,c511001490.filter,1-tp,0,LOCATION_MZONE,ft,ft,nil) + local tc=g:GetFirst() + while tc do + Duel.GetControl(tc,1-tp) + tc=g:GetNext() + end +end diff --git a/script/c511001491.lua b/script/c511001491.lua new file mode 100644 index 00000000..366023de --- /dev/null +++ b/script/c511001491.lua @@ -0,0 +1,29 @@ +--Overlay Burglary +function c511001491.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001491.condition) + e1:SetOperation(c511001491.activate) + c:RegisterEffect(e1) +end +function c511001491.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return at:IsControler(tp) and at:IsFaceup() and at:IsType(TYPE_XYZ) and a:IsType(TYPE_XYZ) and a:GetOverlayCount()>0 +end +function c511001491.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if a and a:IsControler(1-tp) and a:IsLocation(LOCATION_MZONE) and at and at:IsControler(tp) and at:IsLocation(LOCATION_MZONE) then + local g=a:GetOverlayGroup() + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(47660516,0)) + local mg=g:Select(tp,1,1,nil) + local oc=mg:GetFirst():GetOverlayTarget() + Duel.Overlay(at,mg) + Duel.RaiseSingleEvent(oc,EVENT_DETACH_MATERIAL,e,0,0,0,0) + end + end +end diff --git a/script/c511001492.lua b/script/c511001492.lua new file mode 100644 index 00000000..f4e37c0f --- /dev/null +++ b/script/c511001492.lua @@ -0,0 +1,41 @@ +--Cursed Chaos +function c511001492.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c511001492.sdcon) + c:RegisterEffect(e2) + --pay + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_ACTIVATE_COST) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(0,1) + e3:SetTarget(c511001492.actarget) + e3:SetCost(c511001492.costchk) + e3:SetOperation(c511001492.costop) + c:RegisterEffect(e3) +end +function c511001492.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1048) +end +function c511001492.sdcon(e) + return not Duel.IsExistingMatchingCard(c511001492.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511001492.actarget(e,te,tp) + return te:IsActiveType(TYPE_MONSTER) +end +function c511001492.costchk(e,te_or_c,tp) + return Duel.CheckLPCost(tp,500) +end +function c511001492.costop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,500) +end diff --git a/script/c511001493.lua b/script/c511001493.lua new file mode 100644 index 00000000..b1e4ba20 --- /dev/null +++ b/script/c511001493.lua @@ -0,0 +1,45 @@ +--Shining Reborn +function c511001493.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001493.cost) + e1:SetTarget(c511001493.target) + e1:SetOperation(c511001493.operation) + c:RegisterEffect(e1) +end +function c511001493.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,2,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,2,2,nil) + Duel.Release(sg,REASON_COST) +end +function c511001493.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) +end +function c511001493.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)~=0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001493.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp) end + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,1-tp,LOCATION_GRAVE) +end +function c511001493.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + if Duel.SendtoGrave(g,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=Duel.SelectMatchingCard(tp,c511001493.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) + if sp:GetCount()>0 and Duel.SpecialSummon(sp,0,tp,1-tp,false,false,POS_FACEUP)>0 then + local setg=Duel.GetMatchingGroup(Card.IsSSetable,1-tp,0,LOCATION_HAND,nil) + if setg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(60082869,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local sg=setg:Select(tp,1,1,nil) + Duel.SSet(1-tp,sg:GetFirst()) + end + end + end +end diff --git a/script/c511001494.lua b/script/c511001494.lua new file mode 100644 index 00000000..89008b6f --- /dev/null +++ b/script/c511001494.lua @@ -0,0 +1,33 @@ +--Shining Stunt +function c511001494.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001494.condition) + e1:SetTarget(c511001494.target) + e1:SetOperation(c511001494.activate) + c:RegisterEffect(e1) +end +function c511001494.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001494.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + local dam=tg:GetAttack()/2 + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,dam) +end +function c511001494.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.Damage(tp,tc:GetAttack()/2,REASON_EFFECT) + end + end +end diff --git a/script/c511001495.lua b/script/c511001495.lua new file mode 100644 index 00000000..c35a68d9 --- /dev/null +++ b/script/c511001495.lua @@ -0,0 +1,68 @@ +--Shining Sly +function c511001495.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetCondition(c511001495.atcon) + e1:SetValue(aux.imval1) + c:RegisterEffect(e1) + --Negate Damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511001495.con) + e2:SetCost(c511001495.cost) + e2:SetOperation(c511001495.op) + c:RegisterEffect(e2) +end +function c511001495.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001495.atcon(e) + local c=e:GetHandler() + return Duel.IsExistingMatchingCard(c511001495.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,1,c) +end +function c511001495.con(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + e:SetLabel(cp) + if ex and (cp==tp or cp==1-tp) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + e:SetLabel(cp) + return ex and ((cp==tp and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER)) + or (cp==1-tp and Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_REVERSE_RECOVER))) +end +function c511001495.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local cp=e:GetLabel() + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsReleasable,cp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,cp,LOCATION_MZONE,0,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001495.op(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + local cp=e:GetLabel() + 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) + if cp==tp then + e1:SetTargetRange(1,0) + else + e1:SetTargetRange(0,1) + end + e1:SetLabel(cid) + e1:SetValue(c511001495.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511001495.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then e:SetLabel(val) return 0 + else return val end +end diff --git a/script/c511001496.lua b/script/c511001496.lua new file mode 100644 index 00000000..5bfb8892 --- /dev/null +++ b/script/c511001496.lua @@ -0,0 +1,58 @@ +--Break the Seal +function c511001496.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001496.target) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511001496.cost) + e2:SetTarget(c511001496.tg) + e2:SetOperation(c511001496.op) + c:RegisterEffect(e2) +end +function c511001496.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c511001496.cost(e,tp,eg,ep,ev,re,r,rp,0) and c511001496.tg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e:SetOperation(c511001496.op) + c511001496.cost(e,tp,eg,ep,ev,re,r,rp,1) + c511001496.tg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c511001496.cfilter(c) + return c:IsFaceup() and c:IsCode(511001496) and c:IsAbleToGraveAsCost() +end +function c511001496.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c511001496.cfilter,tp,LOCATION_SZONE,0,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001496.cfilter,tp,LOCATION_SZONE,0,1,1,c) + g:AddCard(c) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001496.afilter(c) + return c:IsSetCard(0x40) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511001496.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001496.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001496.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001496.afilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001497.lua b/script/c511001497.lua new file mode 100644 index 00000000..38300c7d --- /dev/null +++ b/script/c511001497.lua @@ -0,0 +1,70 @@ +--Guardian Shield +function c511001497.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(c511001497.target) + e1:SetOperation(c511001497.operation) + c:RegisterEffect(e1) + --Def up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(300) + 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(c511001497.eqlimit) + c:RegisterEffect(e3) + --replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c511001497.reptg) + e4:SetValue(c511001497.repval) + e4:SetOperation(c511001497.repop) + c:RegisterEffect(e4) +end +function c511001497.eqlimit(e,c) + return c:IsSetCard(0x52) +end +function c511001497.filter(c) + return c:IsFaceup() and c:IsSetCard(0x52) +end +function c511001497.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511001497.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001497.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001497.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001497.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 c511001497.repfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x52) and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) + and c:IsReason(REASON_BATTLE) +end +function c511001497.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return eg:IsExists(c511001497.repfilter,1,nil,tp) and c + and not c:IsStatus(STATUS_DESTROY_CONFIRMED) end + return Duel.SelectYesNo(tp,aux.Stringid(67616300,1)) +end +function c511001497.repval(e,c) + return c511001497.repfilter(c,e:GetHandlerPlayer()) +end +function c511001497.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c511001498.lua b/script/c511001498.lua new file mode 100644 index 00000000..f00493fd --- /dev/null +++ b/script/c511001498.lua @@ -0,0 +1,36 @@ +--Celebration of Creation +function c511001498.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001498.condition) + e1:SetOperation(c511001498.activate) + c:RegisterEffect(e1) +end +function c511001498.condition(e,tp,eg,ep,ev,re,r,rp) + return re and re:GetHandler():IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511001498.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()==tp then + Duel.SkipPhase(tp,PHASE_DRAW,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(tp,PHASE_STANDBY,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(tp,PHASE_MAIN1,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(tp,PHASE_BATTLE,RESET_PHASE+PHASE_END,1,1) + Duel.SkipPhase(tp,PHASE_MAIN2,RESET_PHASE+PHASE_END,1) + else + Duel.SkipPhase(1-tp,PHASE_DRAW,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(1-tp,PHASE_STANDBY,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(1-tp,PHASE_MAIN1,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_END,1,1) + Duel.SkipPhase(1-tp,PHASE_MAIN2,RESET_PHASE+PHASE_END,1) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511001499.lua b/script/c511001499.lua new file mode 100644 index 00000000..8a579729 --- /dev/null +++ b/script/c511001499.lua @@ -0,0 +1,77 @@ +--Take One Chance +function c511001499.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001499.target) + e1:SetOperation(c511001499.activate) + c:RegisterEffect(e1) +end +function c511001499.filter(c,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) +end +function c511001499.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001499.filter,tp,LOCATION_GRAVE,0,1,nil,tp,eg,ep,ev,re,r,rp) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end +end +function c511001499.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE,0,nil) + local g=sg:RandomSelect(tp,1) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + if not te then return end + local con=te:GetCondition() + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + if (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + Duel.BreakEffect() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + else + Duel.ConfirmCards(1-tp,g) + Duel.ConfirmCards(tp,g) + end + end +end diff --git a/script/c511001500.lua b/script/c511001500.lua new file mode 100644 index 00000000..c77120f9 --- /dev/null +++ b/script/c511001500.lua @@ -0,0 +1,31 @@ +--Obedience +function c511001500.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001500.activate) + c:RegisterEffect(e1) +end +function c511001500.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_BE_BATTLE_TARGET) + e1:SetCondition(c511001500.con) + e1:SetOperation(c511001500.op) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001500.cfilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c511001500.con(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return at:IsDefensePos() and not Duel.IsExistingMatchingCard(c511001500.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,a:GetAttack()) +end +function c511001500.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001500) + local at=Duel.GetAttackTarget() + Duel.ChangePosition(at,POS_FACEUP_ATTACK) +end diff --git a/script/c511001501.lua b/script/c511001501.lua new file mode 100644 index 00000000..050dd832 --- /dev/null +++ b/script/c511001501.lua @@ -0,0 +1,42 @@ +--クリムゾン・ブレーダー +function c511001501.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80321197,0)) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCondition(c511001501.spcon) + e1:SetOperation(c511001501.spop) + c:RegisterEffect(e1) +end +function c511001501.spcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + return tc:IsType(TYPE_SYNCHRO) and tc:GetPreviousControler()~=tp +end +function c511001501.spop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetTargetRange(0,1) + e1:SetCondition(c511001501.sumcon) + e1:SetLabel(Duel.GetTurnCount()) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + end + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + Duel.RegisterEffect(e3,tp) +end +function c511001501.sumcon(e) + return Duel.GetTurnCount()~=e:GetLabel() and Duel.GetTurnPlayer()~=e:GetOwnerPlayer() +end diff --git a/script/c511001502.lua b/script/c511001502.lua new file mode 100644 index 00000000..c3e75553 --- /dev/null +++ b/script/c511001502.lua @@ -0,0 +1,34 @@ +--Trick Mirror +function c511001502.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001502.condition) + e1:SetTarget(c511001502.target) + e1:SetOperation(c511001502.activate) + c:RegisterEffect(e1) +end +function c511001502.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp +end +function c511001502.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=re:GetTarget() + if chk==0 then return not tg or tg(e,tp,eg,ep,ev,re,r,rp,0) end + e:SetCategory(re:GetCategory()) + e:SetProperty(re:GetProperty()) + e:SetLabelObject(re) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c511001502.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Group.CreateGroup() + Duel.ChangeTargetCard(ev,g) + Duel.ChangeChainOperation(ev,c511001502.repop) + local te=e:GetLabelObject() + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end +function c511001502.repop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():CancelToGrave(false) +end diff --git a/script/c511001503.lua b/script/c511001503.lua new file mode 100644 index 00000000..99c6e9d7 --- /dev/null +++ b/script/c511001503.lua @@ -0,0 +1,44 @@ +--Violet Flash +function c511001503.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001503.activate) + c:RegisterEffect(e1) +end +function c511001503.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_CHAINING) + e1:SetOperation(c511001503.chainop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511001503.drcon) + e2:SetOperation(c511001503.drop) + e2:SetCountLimit(1) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c511001503.chainop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if re:IsHasType(EFFECT_TYPE_ACTIVATE) and rc:IsSetCard(0x46) and re:IsActiveType(TYPE_SPELL) then + Duel.SetChainLimit(c511001503.chainlm) + end +end +function c511001503.chainlm(e,rp,tp) + return rp==tp or not e:GetHandler():IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511001503.filter(c,tp) + return c:IsControler(tp) and bit.band(c:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511001503.drcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001503.filter,1,nil,tp) +end +function c511001503.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001503) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c511001504.lua b/script/c511001504.lua new file mode 100644 index 00000000..dc5010fd --- /dev/null +++ b/script/c511001504.lua @@ -0,0 +1,55 @@ +--Dark Tournament +function c511001504.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_MAIN_END) + e1:SetTarget(c511001504.target) + e1:SetOperation(c511001504.activate) + c:RegisterEffect(e1) +end +function c511001504.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,sg,sg:GetCount(),0,0) +end +function c511001504.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sg=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if sg:GetCount()>0 then + Duel.ChangePosition(sg,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511001504.tg) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetValue(1) + e2:SetTarget(c511001504.tg) + Duel.RegisterEffect(e2,tp) + local be=Effect.CreateEffect(c) + be:SetType(EFFECT_TYPE_FIELD) + be:SetCode(EFFECT_CANNOT_EP) + be:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + be:SetTargetRange(1,1) + be:SetCondition(c511001504.becon) + be:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(be,tp) + end +end +function c511001504.tg(e,c) + return c:IsPosition(POS_FACEUP_ATTACK) +end +function c511001504.becon(e) + return Duel.IsExistingMatchingCard(Card.IsAttackable,e:GetHandlerPlayer(),LOCATION_MZONE,LOCATION_MZONE,1,nil) +end diff --git a/script/c511001505.lua b/script/c511001505.lua new file mode 100644 index 00000000..eb75e0d7 --- /dev/null +++ b/script/c511001505.lua @@ -0,0 +1,34 @@ +--Rebirth Tablet +function c511001505.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001505.condition) + e1:SetTarget(c511001505.target) + e1:SetOperation(c511001505.operation) + c:RegisterEffect(e1) +end +function c511001505.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp +end +function c511001505.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001505.cfilter,1,nil,tp) +end +function c511001505.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001505.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001505.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001505.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,c511001505.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001506.lua b/script/c511001506.lua new file mode 100644 index 00000000..73921b53 --- /dev/null +++ b/script/c511001506.lua @@ -0,0 +1,17 @@ +--Seraphim Gardna +function c511001506.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(c511001506.val) + c:RegisterEffect(e1) +end +function c511001506.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511001506.val(e,c) + return Duel.GetMatchingGroupCount(c511001506.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*300 +end diff --git a/script/c511001507.lua b/script/c511001507.lua new file mode 100644 index 00000000..1489a4c5 --- /dev/null +++ b/script/c511001507.lua @@ -0,0 +1,17 @@ +--Seraphim Saber +function c511001507.initial_effect(c) + --atk + 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:SetValue(c511001507.val) + c:RegisterEffect(e1) +end +function c511001507.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511001507.val(e,c) + return Duel.GetMatchingGroupCount(c511001507.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,e:GetHandler())*300 +end diff --git a/script/c511001508.lua b/script/c511001508.lua new file mode 100644 index 00000000..773c1e37 --- /dev/null +++ b/script/c511001508.lua @@ -0,0 +1,27 @@ +--Boomerang Elf +function c511001508.initial_effect(c) + --negate attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001508,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(TIMING_BATTLE_PHASE,0) + e1:SetCondition(c511001508.atkcon) + e1:SetTarget(c511001508.atktg) + e1:SetOperation(c511001508.atkop) + c:RegisterEffect(e1) +end +function c511001508.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker() and e:GetHandler()==Duel.GetAttacker() and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511001508.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,0,LOCATION_MZONE,1,Duel.GetAttackTarget()) end +end +function c511001508.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(21558682,0)) + local g=Duel.SelectMatchingCard(tp,nil,tp,0,LOCATION_MZONE,1,1,Duel.GetAttackTarget()) + if g:GetCount()>0 then + Duel.ChangeAttackTarget(g:GetFirst()) + end +end diff --git a/script/c511001509.lua b/script/c511001509.lua new file mode 100644 index 00000000..91436a9b --- /dev/null +++ b/script/c511001509.lua @@ -0,0 +1,27 @@ +--Learning Elf +function c511001509.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001509,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511001509.condition) + e1:SetTarget(c511001509.target) + e1:SetOperation(c511001509.operation) + c:RegisterEffect(e1) +end +function c511001509.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsReason(REASON_RETURN) +end +function c511001509.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001509.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001510.lua b/script/c511001510.lua new file mode 100644 index 00000000..8f6bc01c --- /dev/null +++ b/script/c511001510.lua @@ -0,0 +1,23 @@ +--Sacrifice of Grave Goods +function c511001510.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001510.activate) + c:RegisterEffect(e1) +end +function c511001510.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DOUBLE_TRIBUTE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTarget(c511001510.tg) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end +function c511001510.tg(e,c) + return c:GetEquipCount()>0 +end diff --git a/script/c511001511.lua b/script/c511001511.lua new file mode 100644 index 00000000..d6fb2de1 --- /dev/null +++ b/script/c511001511.lua @@ -0,0 +1,57 @@ +--Spirit Slayer +function c511001511.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(c511001511.target) + e1:SetOperation(c511001511.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + 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) + --atk change + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_BATTLE_START) + e4:SetRange(LOCATION_SZONE) + e4:SetOperation(c511001511.atkop) + c:RegisterEffect(e4) +end +function c511001511.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 c511001511.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 c511001511.atkop(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + + if eq==Duel.GetAttacker() and Duel.GetAttackTarget() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1fe0000) + Duel.GetAttackTarget():RegisterEffect(e1) + end +end diff --git a/script/c511001512.lua b/script/c511001512.lua new file mode 100644 index 00000000..ad2f4af9 --- /dev/null +++ b/script/c511001512.lua @@ -0,0 +1,53 @@ +--Holy Sacrifice +function c511001512.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001512.target) + e1:SetOperation(c511001512.activate) + c:RegisterEffect(e1) +end +function c511001512.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001512.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetLabel(0) + e1:SetLabelObject(tc) + e1:SetOperation(c511001512.desop) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetOperation(c511001512.ndop) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + Duel.RegisterEffect(e2,tp) + tc:CreateEffectRelation(e1) + end +end +function c511001512.ndop(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + if ep~=tp or ph<0x08 or ph>0x20 then return end + local sum=e:GetLabelObject():GetLabel()+ev + Duel.ChangeBattleDamage(tp,0) + e:GetLabelObject():SetLabel(sum) +end +function c511001512.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local val=e:GetLabel() + if tc:IsRelateToEffect(e) and tc:GetAttack()-1 + and Duel.CheckReleaseGroup(c:GetControler(),Card.IsType,1,nil,TYPE_XYZ) +end +function c511001514.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),Card.IsType,1,1,nil,TYPE_XYZ) + Duel.Release(g,REASON_COST) +end +function c511001514.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511001514.spop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(511001225) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511001514.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001515.lua b/script/c511001515.lua new file mode 100644 index 00000000..bca0706f --- /dev/null +++ b/script/c511001515.lua @@ -0,0 +1,80 @@ +--Sniping Hazy Type-0 +function c511001515.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(16898077,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001515.descost) + e1:SetTarget(c511001515.destg) + e1:SetOperation(c511001515.desop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35952884,1)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c511001515.sumcon) + e2:SetTarget(c511001515.sumtg) + e2:SetOperation(c511001515.sumop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_REMOVE) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e4) +end +function c511001515.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001515.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c511001515.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,400,REASON_EFFECT) + end +end +function c511001515.sumcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousLocation(LOCATION_ONFIELD) + and c:GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c511001515.mgfilter(c,e,tp,sync) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x80008)~=0x80008 or c:GetReasonCard()~=sync + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001515.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local mg=e:GetHandler():GetMaterial() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if chk==0 then return mg:GetCount()>0 and ft>=mg:GetCount() + and not mg:IsExists(c511001515.mgfilter,1,nil,e,tp,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,mg,mg:GetCount(),tp,0) +end +function c511001515.sumop(e,tp,eg,ep,ev,re,r,rp) + local mg=e:GetHandler():GetMaterial() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if mg:GetCount()>ft + or mg:IsExists(c511001515.mgfilter,1,nil,e,tp,e:GetHandler()) then return end + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511001516.lua b/script/c511001516.lua new file mode 100644 index 00000000..05bc1a34 --- /dev/null +++ b/script/c511001516.lua @@ -0,0 +1,38 @@ +--Stardust Assault Warrior +function c511001516.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --sp summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001516,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001516.condition) + e1:SetTarget(c511001516.target) + e1:SetOperation(c511001516.operation) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) +end +function c511001516.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c511001516.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001516.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001516.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,c511001516.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001517.lua b/script/c511001517.lua new file mode 100644 index 00000000..ac7ad6a7 --- /dev/null +++ b/script/c511001517.lua @@ -0,0 +1,39 @@ +--Stardust Charge Warrior +function c511001517.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001517,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001517.condition) + e1:SetTarget(c511001517.target) + e1:SetOperation(c511001517.operation) + c:RegisterEffect(e1) + --attack all + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ATTACK_ALL) + e2:SetValue(c511001517.atkfilter) + c:RegisterEffect(e2) +end +function c511001517.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c511001517.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001517.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c511001517.atkfilter(e,c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end diff --git a/script/c511001518.lua b/script/c511001518.lua new file mode 100644 index 00000000..821140a7 --- /dev/null +++ b/script/c511001518.lua @@ -0,0 +1,47 @@ +--Barrier Ninjitsu Art of Hazy Extinguishing +function c511001518.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001518.actcon) + c:RegisterEffect(e1) + --damage reduce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,0) + e2:SetValue(c511001518.damval) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511001518.descon) + e3:SetOperation(c511001518.desop) + c:RegisterEffect(e3) +end +function c511001518.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x2b) +end +function c511001518.actcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001518.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001518.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 and rp~=e:GetHandlerPlayer() and val<=800 then + return 0 + end + return val +end +function c511001518.desfilter(c,tp) + return c:IsSetCard(0x2b) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp +end +function c511001518.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001518.desfilter,1,nil,tp) +end +function c511001518.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001519.lua b/script/c511001519.lua new file mode 100644 index 00000000..6726133d --- /dev/null +++ b/script/c511001519.lua @@ -0,0 +1,27 @@ +--Ninjitsu Art of Hazy Duplication +function c511001519.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001519.target) + e1:SetOperation(c511001519.operation) + c:RegisterEffect(e1) +end +function c511001519.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x2b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001519.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001519.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001519.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,c511001519.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,1,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001520.lua b/script/c511001520.lua new file mode 100644 index 00000000..0a33e44d --- /dev/null +++ b/script/c511001520.lua @@ -0,0 +1,72 @@ +--Barrier Ninjitsu Art of Gathering Shadows +function c511001520.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(c511001520.actcon) + e1:SetTarget(c511001520.cost1) + e1:SetOperation(c511001520.operation1) + c:RegisterEffect(e1) + --instant(chain) + local e2=Effect.CreateEffect(c) + e2:SetHintTiming(0,TIMING_BATTLE_START) + e2:SetDescription(aux.Stringid(79205581,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1) + e2:SetCondition(c511001520.condition2) + e2:SetTarget(c511001520.cost2) + e2:SetOperation(c511001520.operation2) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511001520.descon) + e3:SetOperation(c511001520.desop) + c:RegisterEffect(e3) +end +function c511001520.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x2b) +end +function c511001520.actcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001520.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001520.cost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) and Duel.GetTurnPlayer()~=tp + and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) + e:SetLabel(1) + else e:SetLabel(0) end +end +function c511001520.operation1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if e:GetLabel()==1 then + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end +function c511001520.condition2(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) and Duel.GetTurnPlayer()~=tp +end +function c511001520.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511001520.operation2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end +function c511001520.desfilter(c,tp) + return c:IsSetCard(0x2b) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp +end +function c511001520.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001520.desfilter,1,nil,tp) +end +function c511001520.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001521.lua b/script/c511001521.lua new file mode 100644 index 00000000..26e83976 --- /dev/null +++ b/script/c511001521.lua @@ -0,0 +1,33 @@ +--Cyber Petit Angel +function c511001521.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001521,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001521.tg) + e1:SetOperation(c511001521.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511001521.filter(c) + return c:IsCode(39996157) and c:IsAbleToHand() +end +function c511001521.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001521.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001521.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001521.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001522.lua b/script/c511001522.lua new file mode 100644 index 00000000..d9d57875 --- /dev/null +++ b/script/c511001522.lua @@ -0,0 +1,36 @@ +--Wall of Ivy (Anime) +function c511001522.initial_effect(c) + --sp summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001522,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetTarget(c511001522.tg) + e1:SetOperation(c511001522.op) + c:RegisterEffect(e1) +end +function c511001522.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,tp,0) +end +function c511001522.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,30069399,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH,POS_FACEUP_DEFENSE,1-tp) then + local token=Duel.CreateToken(tp,30069399) + if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DESTROY) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetOperation(c511001522.damop) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() + end +end +function c511001522.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,300,REASON_EFFECT) +end diff --git a/script/c511001523.lua b/script/c511001523.lua new file mode 100644 index 00000000..75952bd1 --- /dev/null +++ b/script/c511001523.lua @@ -0,0 +1,37 @@ +--Ground Capture +function c511001523.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001523.condition) + e1:SetOperation(c511001523.activate) + c:RegisterEffect(e1) +end +function c511001523.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001523.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001523.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511001523.drcon) + e2:SetOperation(c511001523.drop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) +end +function c511001523.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) +end +function c511001523.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and ev>=1000 +end +function c511001523.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c511001524.lua b/script/c511001524.lua new file mode 100644 index 00000000..76804466 --- /dev/null +++ b/script/c511001524.lua @@ -0,0 +1,32 @@ +--Tears of a Mermaid +function c511001524.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001524.condition) + e1:SetTarget(c511001524.target) + e1:SetOperation(c511001524.activate) + c:RegisterEffect(e1) +end +function c511001524.cfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511001524.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(c511001524.cfilter,tp,LOCATION_MZONE,0,1,nil) then return false end + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp and Duel.IsChainNegatable(ev) +end +function c511001524.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001524.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511001525.lua b/script/c511001525.lua new file mode 100644 index 00000000..928094ba --- /dev/null +++ b/script/c511001525.lua @@ -0,0 +1,31 @@ +--Offensive Guard +function c511001525.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001525.condition) + e1:SetTarget(c511001525.target) + e1:SetOperation(c511001525.activate) + c:RegisterEffect(e1) +end +function c511001525.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetAttackTarget()==nil +end +function c511001525.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001525.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetAttacker() + if tg:IsFaceup() and tg:IsAttackable() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tg:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tg:RegisterEffect(e1) + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c511001526.lua b/script/c511001526.lua new file mode 100644 index 00000000..3bf42cf9 --- /dev/null +++ b/script/c511001526.lua @@ -0,0 +1,16 @@ +--Amorphous Barrier +function c511001526.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001526.condition) + e1:SetOperation(c511001526.activate) + c:RegisterEffect(e1) +end +function c511001526.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>=3 +end +function c511001526.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511001527.lua b/script/c511001527.lua new file mode 100644 index 00000000..764e6578 --- /dev/null +++ b/script/c511001527.lua @@ -0,0 +1,36 @@ +--Closed Plant Gate +function c511001527.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001527.condition) + e1:SetOperation(c511001527.activate) + c:RegisterEffect(e1) +end +function c511001527.cfilter(c,tp) + return c:IsFaceup() and c:IsRace(RACE_PLANT) and Duel.IsExistingMatchingCard(c511001527.cfilter2,tp,LOCATION_MZONE,0,1,c,c:GetCode()) +end +function c511001527.cfilter2(c,code) + return c:IsFaceup() and c:IsRace(RACE_PLANT) and c:IsCode(code) +end +function c511001527.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001527.cfilter,tp,LOCATION_MZONE,0,1,nil,tp) +end +function c511001527.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) + e1:SetTargetRange(0,LOCATION_MZONE) + if Duel.GetTurnPlayer()~=tp then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c511001527.skipcon) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,1) + end + Duel.RegisterEffect(e1,tp) +end +function c511001527.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c511001528.lua b/script/c511001528.lua new file mode 100644 index 00000000..e1fd4c03 --- /dev/null +++ b/script/c511001528.lua @@ -0,0 +1,93 @@ +--Darkness Half +function c511001528.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511001528.condition) + e1:SetTarget(c511001528.target) + e1:SetOperation(c511001528.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001528.descon) + e2:SetOperation(c511001528.desop) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511001528.desop2) + c:RegisterEffect(e3) +end +function c511001528.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001528.cfilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c511001528.filter(c,tp) + local atk=c:GetAttack() + return c:IsFaceup() and not Duel.IsExistingMatchingCard(c511001528.cfilter,tp,LOCATION_MZONE,0,1,nil,atk) +end +function c511001528.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001528.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001528.filter,tp,LOCATION_MZONE,0,1,nil,tp) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(1-tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(1-tp,511001529,0,0x4011,1000,1000,3,RACE_FIEND,ATTRIBUTE_DARK)end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001528.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511001528.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if Duel.IsPlayerAffectedByEffect(1-tp,59822133) then return end + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(1-tp,511001529,0,0x4011,1000,1000,3,RACE_FIEND,ATTRIBUTE_DARK) then + for i=1,2 do + local token=Duel.CreateToken(tp,511001529) + Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) + end + Duel.SpecialSummonComplete() + end + 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_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001528.rcon) + e1:SetValue(c511001528.value) + tc:RegisterEffect(e1,true) + end +end +function c511001528.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001528.value(e,c) + return c:GetBaseAttack()/2 +end +function c511001528.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001528.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end +function c511001528.desop2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001530.lua b/script/c511001530.lua new file mode 100644 index 00000000..c59705e2 --- /dev/null +++ b/script/c511001530.lua @@ -0,0 +1,36 @@ +--Dual Gate +function c511001530.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001530.cost) + e1:SetTarget(c511001530.target) + e1:SetOperation(c511001530.activate) + c:RegisterEffect(e1) +end +function c511001530.costfilter(c) + return c:IsCode(511001530) and c:IsAbleToRemoveAsCost() +end +function c511001530.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingMatchingCard(c511001530.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c511001530.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + rg:AddCard(e:GetHandler()) + Duel.Remove(rg,POS_FACEUP,REASON_COST) +end +function c511001530.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) + e:GetHandler():CancelToGrave() +end +function c511001530.activate(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():CancelToGrave() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001531.lua b/script/c511001531.lua new file mode 100644 index 00000000..8e353d51 --- /dev/null +++ b/script/c511001531.lua @@ -0,0 +1,113 @@ +--Reincarnation of the Seven Emperors +function c511001531.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001531.condition) + e1:SetTarget(c511001531.target) + e1:SetOperation(c511001531.operation) + c:RegisterEffect(e1) +end +function c511001531.cfilter(c) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return no and no>=101 and no<=107 and c:IsSetCard(0x48) +end +function c511001531.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + local ca=a:GetOverlayGroup():IsExists(c511001531.cfilter,1,nil) + local cd=d:GetOverlayGroup():IsExists(c511001531.cfilter,1,nil) + if ca and cd and a:GetAttack()==d:GetAttack() and a:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)==0 and a:IsAttackPos() and d:IsAttackPos() + and d:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)==0 then return false end + if a:IsFaceup() and a:IsType(TYPE_XYZ) and ca and d:IsAttackPos() and a:GetAttack()<=d:GetAttack() and a:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)==0 then + e:SetLabelObject(a) + return true + end + if d:IsFaceup() and d:IsType(TYPE_XYZ) and cd + and ((d:GetAttack()<=a:GetAttack() and d:IsAttackPos()) or (d:GetDefense()0 or tc:IsControler(tp)) + and Duel.IsExistingMatchingCard(c511001531.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + local g=tc:GetOverlayGroup() + g:AddCard(tc) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,tc:GetOverlayCount()+1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001531.operation(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001531.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetOperation(c511001531.banop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + e2:SetLabelObject(e:GetLabelObject()) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_PHASE+PHASE_DAMAGE) + e:GetLabelObject():RegisterEffect(e3) +end +function c511001531.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511001531.banop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local g=tc:GetOverlayGroup() + g:AddCard(tc) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local tcg=g:GetFirst() + while tcg do + tcg:RegisterFlagEffect(511001531,RESET_EVENT+0x1fe0000,0,1) + tcg=g:GetNext() + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001531.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetLabelObject(g:GetFirst()) + e1:SetOperation(c511001531.damop2) + Duel.RegisterEffect(e1,tp) + g:GetFirst():CreateEffectRelation(e1) + else + local cg=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg and cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + end +end +function c511001531.damop2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_CARD,0,511001531) + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511001532.lua b/script/c511001532.lua new file mode 100644 index 00000000..a7370515 --- /dev/null +++ b/script/c511001532.lua @@ -0,0 +1,81 @@ +--Rebirth of the Seven Emperors +function c511001532.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001532.condition) + e1:SetCost(c511001532.cost) + e1:SetTarget(c511001532.target) + e1:SetOperation(c511001532.activate) + c:RegisterEffect(e1) +end +function c511001532.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at and at:IsFaceup() and at:IsControler(tp) and at:IsType(TYPE_XYZ) +end +function c511001532.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end + + if chk==0 then return end +end +function c511001532.filter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetFlagEffect(511001531)>0 +end +function c511001532.target(e,tp,eg,ep,ev,re,r,rp,chk) + local sg=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_MZONE,LOCATION_MZONE,nil,TYPE_XYZ) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return sg:GetCount()>0 and sg:FilterCount(Card.IsReleasable,nil)==sg:GetCount() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001532.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil,e,tp) end + local ct=Duel.Release(sg,REASON_COST) + Duel.SetTargetParam(ct+1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_REMOVED) +end +function c511001532.atfilter(c) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return no and no>=101 and no<=107 and c:IsFaceup() and c:IsSetCard(0x1048) +end +function c511001532.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001532.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + local g=Duel.GetMatchingGroup(c511001532.atfilter,tp,LOCATION_REMOVED,0,nil) + if g:GetCount()>0 then + if g:GetCount()>ct then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + g=g:Select(tp,ct,ct,nil) + end + Duel.Overlay(tc,g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetReset(RESET_PHASE+PHASE_BATTLE) + e2:SetCountLimit(1) + e2:SetOperation(c511001532.damop) + Duel.RegisterEffect(e2,tp) + end + end +end +function c511001532.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001532) + local dam=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)*300 + Duel.Damage(tp,dam,REASON_EFFECT) + dam=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)*300 + Duel.Damage(1-tp,dam,REASON_EFFECT) +end diff --git a/script/c511001533.lua b/script/c511001533.lua new file mode 100644 index 00000000..da26d7a8 --- /dev/null +++ b/script/c511001533.lua @@ -0,0 +1,39 @@ +--Flower Judgment +function c511001533.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(c511001533.condition) + e1:SetTarget(c511001533.target) + e1:SetOperation(c511001533.activate) + c:RegisterEffect(e1) +end +function c511001533.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001533.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) and c:IsType(TYPE_XYZ) and c:GetOverlayCount()>0 +end +function c511001533.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001533.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001533.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001533.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001533.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local ct=tc:GetOverlayCount() + tc:RemoveOverlayCard(tp,ct,ct,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(ct*800) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001534.lua b/script/c511001534.lua new file mode 100644 index 00000000..03f1271a --- /dev/null +++ b/script/c511001534.lua @@ -0,0 +1,20 @@ +--Rose Marker +function c511001534.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511001534.damop) + c:RegisterEffect(e2) +end +function c511001534.damop(e,tp,eg,ep,ev,re,r,rp) + if re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp then + Duel.Damage(1-tp,300,REASON_EFFECT) + end +end diff --git a/script/c511001535.lua b/script/c511001535.lua new file mode 100644 index 00000000..60fc3230 --- /dev/null +++ b/script/c511001535.lua @@ -0,0 +1,20 @@ +--Cyber Valkyrie +function c511001535.initial_effect(c) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_CALCULATING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511001535.atk) + c:RegisterEffect(e2) +end +function c511001535.atk(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d or d:GetCode()~=511001535 or d:IsControler(1-tp) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-300) + e1:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511001536.lua b/script/c511001536.lua new file mode 100644 index 00000000..35456121 --- /dev/null +++ b/script/c511001536.lua @@ -0,0 +1,54 @@ +--Advance Carnival +function c511001536.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001536.activate) + c:RegisterEffect(e1) + if not c511001536.global_check then + c511001536.global_check=true + c511001536[0]=false + c511001536[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c511001536.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001536.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001536.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE then + c511001536[tc:GetControler()]=true + end + tc=eg:GetNext() + end +end +function c511001536.clear(e,tp,eg,ep,ev,re,r,rp) + c511001536[0]=false + c511001536[1]=false +end +function c511001536.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,511001536)~=0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetCondition(c511001536.con) + e1:SetTarget(aux.TargetBoolFunction(Card.IsLevelAbove,5)) + e1:SetValue(0x1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,511001536,RESET_PHASE+PHASE_END,0,1) +end +function c511001536.con(e) + return c511001536[e:GetHandlerPlayer()] +end diff --git a/script/c511001537.lua b/script/c511001537.lua new file mode 100644 index 00000000..03775c6f --- /dev/null +++ b/script/c511001537.lua @@ -0,0 +1,55 @@ +--Ancient Armageddon Gear +function c511001537.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001537.target) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001537.damcon) + e2:SetTarget(c511001537.damtg) + e2:SetOperation(c511001537.damop) + c:RegisterEffect(e2) +end +function c511001537.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetOperation(c511001537.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,1) + c:RegisterEffect(e1) +end +function c511001537.desop(e,tp,eg,ep,ev,re,r,rp) + if tp~=Duel.GetTurnPlayer() then return end + Duel.Destroy(e:GetHandler(),REASON_RULE) +end +function c511001537.damcon(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsType,nil,TYPE_MONSTER) + local tc=g:GetFirst() + return g:GetCount()==1 and tc:IsReason(REASON_DESTROY) and tc:IsPreviousLocation(LOCATION_ONFIELD) +end +function c511001537.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(Card.IsType,nil,TYPE_MONSTER) + local tc=g:GetFirst() + if chk==0 then return true end + Duel.SetTargetPlayer(tc:GetPreviousControler()) + Duel.SetTargetParam(tc:GetPreviousAttackOnField()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tc:GetPreviousControler(),tc:GetPreviousAttackOnField()) +end +function c511001537.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001538.lua b/script/c511001538.lua new file mode 100644 index 00000000..e6897120 --- /dev/null +++ b/script/c511001538.lua @@ -0,0 +1,39 @@ +--Ancient Gear Booster +function c511001538.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --double + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCondition(c511001538.damcon) + e2:SetOperation(c511001538.damop) + c:RegisterEffect(e2) +end +function c511001538.damcon(e,tp,eg,ep,ev,re,r,rp) + if rp~=tp or not re:GetHandler():IsSetCard(0x7) then return end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + return ex +end +function c511001538.damop(e,tp,eg,ep,ev,re,r,rp) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetValue(c511001538.dammul) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) +end +function c511001538.dammul(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + return val*2 +end diff --git a/script/c511001539.lua b/script/c511001539.lua new file mode 100644 index 00000000..e074f95b --- /dev/null +++ b/script/c511001539.lua @@ -0,0 +1,130 @@ +--Ancient Gear Hound Dog +function c511001539.initial_effect(c) + --actlimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511001539.atkop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(24919805,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511001539.damcon) + e2:SetTarget(c511001539.damtg) + e2:SetOperation(c511001539.damop) + c:RegisterEffect(e2) + --fusion + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(33550694,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511001539.fuscon) + e3:SetTarget(c511001539.fustg) + e3:SetOperation(c511001539.fusop) + c:RegisterEffect(e3) +end +function c511001539.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511001539.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511001539.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511001539.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c511001539.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511001539.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001539.confilter(c) + return c:IsFaceup() and c:IsSetCard(0x7) +end +function c511001539.fuscon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001539.confilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c511001539.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511001539.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511001539.fustg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511001539.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001539.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001539.fusop(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001539.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511001539.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001539.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + else + local cg1=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_MZONE,0) + local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) + and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then + Duel.ConfirmCards(1-tp,cg1) + Duel.ConfirmCards(1-tp,cg2) + Duel.ShuffleHand(tp) + end + end +end diff --git a/script/c511001540.lua b/script/c511001540.lua new file mode 100644 index 00000000..3076c1b9 --- /dev/null +++ b/script/c511001540.lua @@ -0,0 +1,96 @@ +--Ancient Gear Double Bite Hound Dog +function c511001540.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeRep(c,42878636,2,true,true) + --actlimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511001540.atkop) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001540,0)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetTarget(c511001540.cttg) + e2:SetOperation(c511001540.ctop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(52846880,1)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetProperty(EFFECT_FLAG_DELAY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_START) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511001540.descon) + e4:SetTarget(c511001540.destg) + e4:SetOperation(c511001540.desop) + c:RegisterEffect(e4) +end +function c511001540.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511001540.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511001540.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511001540.ctfilter(c,tp) + return c:IsControler(1-tp) and c:GetCounter(0x1102)==0 +end +function c511001540.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511001540.ctfilter,1,nil,tp) end +end +function c511001540.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001540.ctfilter,nil,tp) + local tc=g:GetFirst() + while tc do + tc:AddCounter(0x1102,1) + tc=g:GetNext() + end +end +function c511001540.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if not bc then return false end + local g=Group.CreateGroup() + if tc:GetCounter(0x1102)>0 then + g:AddCard(tc) + end + if bc:GetCounter(0x1102)>0 then + g:AddCard(bc) + end + g:KeepAlive() + e:SetLabelObject(g) + return g:GetCount()>0 +end +function c511001540.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject() + if chk==0 then return g and g:IsExists(Card.IsDestructable,1,nil) end + g:KeepAlive() + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001540.desfilter(c) + return c:IsRelateToBattle() and c:GetCounter(0x1102)>0 +end +function c511001540.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject():Filter(c511001540.desfilter,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511001541.lua b/script/c511001541.lua new file mode 100644 index 00000000..3509ee7e --- /dev/null +++ b/script/c511001541.lua @@ -0,0 +1,64 @@ +--Ancient Gear Rebirth Fusion +function c511001541.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511001541.con) + e1:SetTarget(c511001541.target) + e1:SetOperation(c511001541.activate) + c:RegisterEffect(e1) +end +function c511001541.con(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)==REASON_EFFECT and rp~=tp +end +function c511001541.cfilter(c,fc,e,tp) + local fd=c:GetCode() + if not c:IsSetCard(0x7) or c:IsPreviousPosition(POS_FACEDOWN) or c:GetPreviousControler()~=tp + or not c:IsCanBeEffectTarget(e) then return false end + for i=1,fc.material_count do + if fd==fc.material[i] then return true end + end + return false +end +function c511001541.spfilter(c,e,tp,eg) + local ct=c.material_count + return ct~=nil and eg:IsExists(c511001541.cfilter,1,nil,c,e,tp) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c511001541.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local sg=Duel.GetMatchingGroup(c511001541.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp,eg) + if chkc then return false end + if chk==0 then return sg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + local tcg=sg:GetFirst() + local tg=Group.CreateGroup() + while tcg do + local g=eg:Filter(c511001541.cfilter,nil,tcg,e,tp) + tg:Merge(g) + tcg=sg:GetNext() + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tgf=tg:Select(tp,1,1,nil) + Duel.SetTargetCard(tgf) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_EXTRA) +end +function c511001541.spfilter2(c,e,tp,tc) + local fd=tc:GetCode() + local ct=c.material_count + if ct==nil or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) then return false end + for i=1,c.material_count do + if fd==c.material[i] then return true end + end + return false +end +function c511001541.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001541.spfilter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc) + if g:GetCount()>0 then + Duel.SpecialSummon(g,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + g:GetFirst():CompleteProcedure() + end +end diff --git a/script/c511001542.lua b/script/c511001542.lua new file mode 100644 index 00000000..a5806a2a --- /dev/null +++ b/script/c511001542.lua @@ -0,0 +1,49 @@ +--Ancient Gear Reborn +function c511001542.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + c:RegisterEffect(e1) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCondition(c511001542.condition) + e2:SetTarget(c511001542.target) + e2:SetOperation(c511001542.operation) + c:RegisterEffect(e2) +end +function c511001542.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511001542.filter(c,e,tp,tid) + return c:GetTurnID()==tid and c:IsSetCard(0x7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsReason(REASON_RETURN) +end +function c511001542.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511001542.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001542.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001542.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp,tid) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001542.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetBaseAttack()+200) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001543.lua b/script/c511001543.lua new file mode 100644 index 00000000..e03aedc5 --- /dev/null +++ b/script/c511001543.lua @@ -0,0 +1,36 @@ +--Ancient Gear Spark Shot +function c511001543.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001543.condition) + e2:SetTarget(c511001543.target) + e2:SetOperation(c511001543.activate) + c:RegisterEffect(e2) +end +function c511001543.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return eg:GetCount()==1 and ec:IsSetCard(0x7) and ec:IsPreviousLocation(LOCATION_GRAVE) + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)<=1 +end +function c511001543.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=eg:GetFirst() + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ec:GetAttack()/2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ec:GetAttack()/2) +end +function c511001543.activate(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,ec:GetAttack()/2,REASON_EFFECT) +end diff --git a/script/c511001544.lua b/script/c511001544.lua new file mode 100644 index 00000000..3a4c616f --- /dev/null +++ b/script/c511001544.lua @@ -0,0 +1,180 @@ +--Ancient Gear Triple Bite Hound Dog +function c511001544.initial_effect(c) + --fusion material + c:EnableReviveLimit() + c511001544.material_count=2 + c511001544.material={42878636,511001540} + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c511001544.fcon) + e0:SetOperation(c511001544.fop) + c:RegisterEffect(e0) + --actlimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511001544.atkop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e2:SetValue(2) + c:RegisterEffect(e2) +end +function c511001544.fcon(e,g,gc,chkf) + if g==nil then return true end + local mg=g:Filter(Card.IsCanBeFusionMaterial,gc,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + if gc:IsHasEffect(511002961) then + return mg:IsExists(aux.FConditionFilter22,1,gc,511001540,42878636,true,e:GetHandler()) + elseif gc:CheckFusionSubstitute(e:GetHandler()) then + return mg:IsExists(aux.FConditionFilter21,1,nil,511001540,42878636,true) + elseif gc:IsFusionCode(511001540) then + return mg:IsExists(aux.FConditionFilter12,1,nil,42878636,true,e:GetHandler()) + elseif gc:IsFusionCode(42878636) then + return mg:IsExists(aux.FConditionFilter12,1,nil,511001540,true,e:GetHandler()) + or mg:IsExists(Card.IsFusionCode,2,gc,42878636) + end + end + local b1=0 local b2=0 local bw=0 local bwxct=0 + local ct=0 + local fs=chkf==PLAYER_NONE + local tc=mg:GetFirst() + while tc do + local match=false + if tc:IsFusionCode(42878636) then b1=1 match=true end + if tc:IsFusionCode(511001540) then b2=1 match=true end + if tc:IsHasEffect(511002961) then bwxct=bwxct+1 match=true end + if not tc:IsHasEffect(511002961) and tc:CheckFusionSubstitute(e:GetHandler()) then bw=1 match=true end + if match then + if aux.FConditionCheckF(tc,chkf) then fs=true end + ct=ct+1 + end + tc=mg:GetNext() + end + if not fs then return false end + if ct>1 and b1+b2+bw+bwxct>1 then return true end + fs=chkf==PLAYER_NONE + tc=mg:GetFirst() + b1=0 + while tc do + if tc:IsFusionCode(42878636) then b1=b1+1 if aux.FConditionCheckF(tc,chkf) then fs=true end end + tc=mg:GetNext() + end + return b1>2 +end +function c511001544.fop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local g=eg:Filter(Card.IsCanBeFusionMaterial,gc,e:GetHandler()) + local tc=gc + local g1=nil + local mat=Group.CreateGroup() + local sg=g:Filter(aux.FConditionFilter22,nil,42878636,511001540,true,e:GetHandler()) + local sg2=sg:Clone() + if gc then + if chkf~=PLAYER_NONE and not aux.FConditionCheckF(gc,chkf) then + sg2=sg:Filter(aux.FConditionCheckF,nil,chkf) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + tc=g1:GetFirst() + sg:RemoveCard(tc) + sg2:RemoveCard(tc) + end + local ok=false + if tc:IsHasEffect(511002961) then + sg:RemoveCard(tc) + sg2:RemoveCard(tc) + mat:AddCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:FilterSelect(tp,aux.FConditionFilter22,1,1,nil,42878636,511001540,true,e:GetHandler()) + local tc2=g2:GetFirst() + if tc2:IsHasEffect(511002961) then ok=true sg:RemoveCard(tc2) sg:Remove(c511001544.FConditionFilterx2,nil,e:GetHandler()) mat:AddCard(tc2) + elseif tc2:CheckFusionSubstitute(e:GetHandler()) then + ok=true mat:AddCard(tc2) + sg:Remove(c511001544.FConditionFilterx,nil,e:GetHandler()) + sg:Remove(c511001544.FConditionFilterx2,nil,e:GetHandler()) + elseif tc2:IsFusionCode(511001540) then + g2:AddCard(tc) + Duel.SetFusionMaterial(g2) + return + else + ok=true + mat:AddCard(tc2) sg:RemoveCard(tc2) + sg:Remove(c511001544.FConditionFilterx2,nil,e:GetHandler()) + end + elseif tc:CheckFusionSubstitute(e:GetHandler()) then + sg:Remove(c511001544.FConditionFilterx,nil,e:GetHandler()) + mat:AddCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:FilterSelect(tp,aux.FConditionFilter22,1,1,nil,42878636,511001540,true,e:GetHandler()) + local tc2=g2:GetFirst() + if tc2:IsHasEffect(511002961) then ok=true sg:RemoveCard(tc2) sg:Remove(c511001544.FConditionFilterx2,nil,e:GetHandler()) mat:AddCard(tc2) + elseif tc2:IsFusionCode(511001540) then + g2:AddCard(tc) + Duel.SetFusionMaterial(g2) + return + else + ok=true + mat:AddCard(tc2) + sg:RemoveCard(tc2) + sg:Remove(c511001544.FConditionFilterx2,nil,e:GetHandler()) + end + elseif tc:IsFusionCode(511001540) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:FilterSelect(tp,aux.FConditionFilter12,1,1,nil,42878636,true,e:GetHandler()) + g2:AddCard(tc) + Duel.SetFusionMaterial(g2) + return + else + mat:AddCard(tc) + sg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:FilterSelect(tp,aux.FConditionFilter22,1,1,nil,42878636,511001540,true,e:GetHandler()) + local tc2=g2:GetFirst() + if tc2:IsHasEffect(511002961) then ok=true sg:RemoveCard(tc2) sg:Remove(c511001544.FConditionFilterx2,nil,e:GetHandler()) mat:AddCard(tc2) + elseif tc2:CheckFusionSubstitute(e:GetHandler()) then + ok=true mat:AddCard(tc2) + sg:Remove(c511001544.FConditionFilterx,nil,e:GetHandler()) + sg:Remove(c511001544.FConditionFilterx2,nil,e:GetHandler()) + elseif tc2:IsFusionCode(511001540) then + g2:AddCard(tc) + Duel.SetFusionMaterial(g2) + return + else + mat:AddCard(tc2) + sg:RemoveCard(tc2) + sg:Remove(c511001544.FConditionFilterx2,nil,e:GetHandler()) + end + end + if not ok or (sg:IsExists(aux.FConditionFilter12,1,nil,42878636,true,e:GetHandler()) and Duel.SelectYesNo(tp,93)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g3=sg:Select(tp,1,1,nil) + mat:Merge(g3) + end + Duel.SetFusionMaterial(mat) +end +function c511001544.FConditionFilterx(c,fc) + return c:CheckFusionSubstitute(fc) and not c:IsHasEffect(511002961) and not c:IsFusionCode(42878636,511001540) +end +function c511001544.FConditionFilterx2(c,fc) + return c:IsFusionCode(511001540) and not c:CheckFusionSubstitute(fc) +end +function c511001544.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511001544.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511001544.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c511001545.lua b/script/c511001545.lua new file mode 100644 index 00000000..36ad6a8b --- /dev/null +++ b/script/c511001545.lua @@ -0,0 +1,67 @@ +--Beastborg Panther Predator +function c511001545.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511001545.fusfilter1,c511001545.fusfilter2,true) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(6602300,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001545.damtg) + e1:SetOperation(c511001545.damop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35952884,1)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c511001545.sumcon) + e2:SetTarget(c511001545.sumtg) + e2:SetOperation(c511001545.sumop) + c:RegisterEffect(e2) +end +function c511001545.fusfilter1(c) + return c:IsLevelBelow(4) and c:IsRace(RACE_BEASTWARRIOR) +end +function c511001545.fusfilter2(c) + return c:IsLevelBelow(4) and c:IsRace(RACE_MACHINE) +end +function c511001545.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetHandler():GetAttack()/2) +end +function c511001545.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,e:GetHandler():GetAttack()/2,REASON_EFFECT) +end +function c511001545.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end +function c511001545.mgfilter(c,e,tp,fusc) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001545.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local mg=e:GetHandler():GetMaterial() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if chk==0 then return mg:GetCount()>0 and ft>=mg:GetCount() + and not mg:IsExists(c511001545.mgfilter,1,nil,e,tp,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,mg,mg:GetCount(),tp,0) +end +function c511001545.sumop(e,tp,eg,ep,ev,re,r,rp) + local mg=e:GetHandler():GetMaterial() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if mg:GetCount()>ft + or mg:IsExists(c511001545.mgfilter,1,nil,e,tp,e:GetHandler()) then return end + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511001546.lua b/script/c511001546.lua new file mode 100644 index 00000000..515d7c91 --- /dev/null +++ b/script/c511001546.lua @@ -0,0 +1,52 @@ +--Beast-borg Medal of Honor +function c511001546.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001546.condition) + e1:SetTarget(c511001546.target) + e1:SetOperation(c511001546.activate) + c:RegisterEffect(e1) +end +function c511001546.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsSetCard(0x20c) and tc:IsType(TYPE_FUSION) +end +function c511001546.target(e,tp,eg,ep,ev,re,r,rp,chk) + local at=Duel.GetAttackTarget() + if chk==0 then return at and at:IsCanBeEffectTarget(e) and at:IsDestructable() end + Duel.SetTargetCard(at) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,at,1,0,0) +end +function c511001546.mgfilter(c,e,tp,fusc) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001546.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if Duel.Destroy(tc,REASON_EFFECT)==0 or bit.band(sumtype,SUMMON_TYPE_FUSION)~=SUMMON_TYPE_FUSION or mg:GetCount()==0 + or mg:GetCount()>ft + or mg:IsExists(c511001546.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable then + Duel.BreakEffect() + if Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) then + Duel.BreakEffect() + local sum=mg:GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT,true) + Duel.Damage(tp,sum,REASON_EFFECT,true) + Duel.RDComplete() + end + end +end diff --git a/script/c511001547.lua b/script/c511001547.lua new file mode 100644 index 00000000..7ea08946 --- /dev/null +++ b/script/c511001547.lua @@ -0,0 +1,66 @@ +--Beast-borg Medal of the Iron Shield +function c511001547.initial_effect(c) + c:EnableCounterPermit(0x103) + --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) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511001547.ctcon) + e2:SetOperation(c511001547.ctop) + c:RegisterEffect(e2) + --gain atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001547,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511001547.atkcost) + e3:SetTarget(c511001547.atktg) + e3:SetOperation(c511001547.atkop) + c:RegisterEffect(e3) +end +function c511001547.ctcon(e,tp,eg,ep,ev,re,r,rp) + return ev>=100 and ep==tp +end +function c511001547.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ct=math.floor(ev/100) + c:AddCounter(0x103,ct) +end +function c511001547.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=e:GetHandler():GetCounter(0x103) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and ct>0 end + e:SetLabel(ct) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001547.filter(c) + return c:IsFaceup() and c:IsSetCard(0x20c) +end +function c511001547.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001547.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001547.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001547.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001547.atkop(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_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(e:GetLabel()*100) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001548.lua b/script/c511001548.lua new file mode 100644 index 00000000..159e7d76 --- /dev/null +++ b/script/c511001548.lua @@ -0,0 +1,87 @@ +--Beastborg Polymerizer +function c511001548.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001548.sptg) + e2:SetOperation(c511001548.spop) + c:RegisterEffect(e2) + --cannot normal summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(1,0) + e3:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_MSET) + c:RegisterEffect(e4) +end +function c511001548.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511001548.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x20c) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511001548.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511001548.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001548.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001548.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001548.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511001548.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001548.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511001549.lua b/script/c511001549.lua new file mode 100644 index 00000000..c411846e --- /dev/null +++ b/script/c511001549.lua @@ -0,0 +1,63 @@ +--Cricket Close +function c511001549.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001549.target) + e1:SetOperation(c511001549.activate) + c:RegisterEffect(e1) +end +function c511001549.sefilter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL) and not c:IsDisabled() +end +function c511001549.opfilter(c) + return c:IsFaceup() and not c:IsDisabled() +end +function c511001549.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511001549.sefilter,tp,LOCATION_ONFIELD,0,2,e:GetHandler()) + and Duel.IsExistingTarget(c511001549.opfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c511001549.sefilter,tp,LOCATION_ONFIELD,0,2,2,e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g2=Duel.SelectTarget(tp,c511001549.opfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g1,3,0,0) +end +function c511001549.refilter(c,e) + return ((c:IsFaceup() and not c:IsDisabled()) or c:IsType(TYPE_TRAPMONSTER)) and c:IsRelateToEffect(e) +end +function c511001549.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(c511001549.refilter,nil,e)~=3 then return end + local tc=tg:GetFirst() + while tc do + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + tc=tg:GetNext() + end +end diff --git a/script/c511001550.lua b/script/c511001550.lua new file mode 100644 index 00000000..c6034c74 --- /dev/null +++ b/script/c511001550.lua @@ -0,0 +1,70 @@ +--Empty Fishing +function c511001550.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001550.condition) + e1:SetTarget(c511001550.target) + e1:SetOperation(c511001550.operation) + c:RegisterEffect(e1) +end +function c511001550.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511001550.filter(c) + return c:IsFaceup() and c:IsDisabled() and c:IsAbleToHand() +end +function c511001550.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511001550.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001550.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,2,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511001550.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,2,2,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511001550.operation(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001550.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + sg:KeepAlive() + local de=Effect.CreateEffect(e:GetHandler()) + de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + de:SetCode(EVENT_PHASE+PHASE_END) + de:SetCountLimit(1) + de:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + de:SetLabelObject(sg) + de:SetCondition(c511001550.descon) + de:SetOperation(c511001550.desop) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END then + de:SetLabel(Duel.GetTurnCount()) + de:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + de:SetLabel(0) + de:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + Duel.RegisterEffect(de,tp) + end +end +function c511001550.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) +end +function c511001550.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() +end +function c511001550.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g then return end + Duel.Hint(HINT_CARD,0,511001550) + g:DeleteGroup() + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c511001551.lua b/script/c511001551.lua new file mode 100644 index 00000000..4443160b --- /dev/null +++ b/script/c511001551.lua @@ -0,0 +1,27 @@ +--Fiend Cannon +function c511001551.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511001551.condition) + e1:SetTarget(c511001551.target) + e1:SetOperation(c511001551.activate) + c:RegisterEffect(e1) +end +function c511001551.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at and at:IsControler(1-tp) and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511001551.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511001551.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001552.lua b/script/c511001552.lua new file mode 100644 index 00000000..483f9d83 --- /dev/null +++ b/script/c511001552.lua @@ -0,0 +1,61 @@ +--Fusion Dispersal +function c511001552.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001552.condition) + e1:SetTarget(c511001552.target) + e1:SetOperation(c511001552.activate) + c:RegisterEffect(e1) +end +function c511001552.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and a:IsType(TYPE_FUSION) +end +function c511001552.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local a=Duel.GetAttacker() + if chkc then return chkc==a end + if chk==0 then return a and a:IsOnField() and a:IsCanBeEffectTarget(e) and a:IsAbleToExtra() end + Duel.SetTargetCard(a) + Duel.SetOperationInfo(0,CATEGORY_TODECK,a,1,0,0) +end +function c511001552.mgfilter(c,e,tp,fusc) + return c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,1-tp,false,false,POS_FACEUP,1-tp) + or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001552.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not (tc:IsRelateToEffect(e) and tc:IsFaceup()) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 then return end + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + if bit.band(sumtype,SUMMON_TYPE_FUSION)~=SUMMON_TYPE_FUSION or mg:GetCount()==0 + or mg:GetCount()>ft + or mg:IsExists(c511001552.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable then + Duel.BreakEffect() + if Duel.SpecialSummon(mg,0,tp,1-tp,false,false,POS_FACEUP) then + local mtg=mg:GetMaxGroup(Card.GetAttack) + local sg=mtg:GetFirst() + if mtg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(17874674,0)) + local stg=mtg:Select(tp,1,1,nil) + sg=stg:GetFirst() + Duel.HintSelection(stg) + end + local atk=sg:GetAttack() + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c511001553.lua b/script/c511001553.lua new file mode 100644 index 00000000..a6a00522 --- /dev/null +++ b/script/c511001553.lua @@ -0,0 +1,43 @@ +--Giant Sky Sword +function c511001553.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001553.condition) + e1:SetTarget(c511001553.target) + e1:SetOperation(c511001553.activate) + c:RegisterEffect(e1) +end +function c511001553.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=1000 +end +function c511001553.filter(c) + return c:GetControler()~=c:GetOwner() +end +function c511001553.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,30459350) + and Duel.IsExistingMatchingCard(c511001553.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,0,0,0) +end +function c511001553.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + local tc=g:GetFirst() + while tc do + if not tc:IsImmuneToEffect(e) then + Duel.GetControl(tc,tc:GetOwner()) + tc:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetValue(tc:GetOwner()) + e1:SetReset(RESET_EVENT+0xec0000) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end + Duel.BreakEffect() + local sg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511001554.lua b/script/c511001554.lua new file mode 100644 index 00000000..045a00d8 --- /dev/null +++ b/script/c511001554.lua @@ -0,0 +1,41 @@ +--Ice Rage Shot +function c511001554.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001554.target) + e1:SetOperation(c511001554.activate) + c:RegisterEffect(e1) + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DESTROYING) + ge1:SetOperation(c511001554.checkop) + Duel.RegisterEffect(ge1,0) +end +function c511001554.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + if tc:IsFaceup() and bc:IsRace(RACE_AQUA) and bc:GetPreviousControler()==tp then + tc:RegisterFlagEffect(511001554,RESET_EVENT+0x1fe0000,0,1) + end +end +function c511001554.filter(c) + return c:IsFaceup() and c:GetFlagEffect(511001554)>0 and c:IsDestructable() +end +function c511001554.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001554.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001554.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001554.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) +end +function c511001554.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,tc:GetPreviousAttackOnField(),REASON_EFFECT) + end +end diff --git a/script/c511001555.lua b/script/c511001555.lua new file mode 100644 index 00000000..0134e34c --- /dev/null +++ b/script/c511001555.lua @@ -0,0 +1,74 @@ +--Persona Shutter - Instant +function c511001555.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001555.condition) + e1:SetTarget(c511001555.target) + e1:SetOperation(c511001555.activate) + c:RegisterEffect(e1) +end +function c511001555.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetAttackTarget()==nil +end +function c511001555.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001555,0,0x11,tg:GetAttack(),tg:GetDefense(), + tg:GetLevel(),tg:GetRace(),tg:GetAttribute()) and e:IsHasType(EFFECT_TYPE_ACTIVATE) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001555.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) or tc:IsFacedown() or not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001555,0,0x11,tc:GetAttack(),tc:GetDefense(), + tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) then return end + c:AddMonsterAttribute(TYPE_NORMAL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(tc:GetCode()) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetDefense()) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SET_BASE_ATTACK) + e3:SetValue(tc:GetAttack()) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + c:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + c:RegisterEffect(e5) + local e7=e1:Clone() + e7:SetCode(EFFECT_CHANGE_LEVEL) + e7:SetValue(tc:GetLevel()) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_PHASE+PHASE_BATTLE) + e8:SetRange(LOCATION_MZONE) + e8:SetCountLimit(1) + e8:SetOperation(c511001555.desop) + e8:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e8) +end +function c511001555.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001556.lua b/script/c511001556.lua new file mode 100644 index 00000000..b08e2192 --- /dev/null +++ b/script/c511001556.lua @@ -0,0 +1,20 @@ +--Persona Shutter Layer 2 +function c511001556.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --immune + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetTargetRange(0,LOCATION_ONFIELD) + e2:SetValue(c511001556.efilter) + c:RegisterEffect(e2) +end +function c511001556.efilter(e,te) + return e:GetOwnerPlayer()~=te:GetOwnerPlayer() and te:GetHandler():IsOnField() +end diff --git a/script/c511001557.lua b/script/c511001557.lua new file mode 100644 index 00000000..d7d296b1 --- /dev/null +++ b/script/c511001557.lua @@ -0,0 +1,32 @@ +--Pure Pupil +function c511001557.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001557.condition) + e1:SetTarget(c511001557.target) + e1:SetOperation(c511001557.activate) + c:RegisterEffect(e1) +end +function c511001557.filter(c) + return c:IsFaceup() and c:IsAttackBelow(1000) +end +function c511001557.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev) + and Duel.IsExistingMatchingCard(c511001557.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001557.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001557.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511001558.lua b/script/c511001558.lua new file mode 100644 index 00000000..abaf9465 --- /dev/null +++ b/script/c511001558.lua @@ -0,0 +1,39 @@ +--水晶薔薇の女神 +function c511001558.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001558,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511001558.condition) + e1:SetOperation(c511001558.operation) + c:RegisterEffect(e1) +end +function c511001558.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and not bc:IsType(TYPE_TOKEN) and bc:GetLeaveFieldDest()==0 +end +function c511001558.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc:IsRelateToBattle() then + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_SEND_REPLACE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetTarget(c511001558.reptg) + e1:SetOperation(c511001558.repop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + bc:RegisterEffect(e1) + end +end +function c511001558.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_BATTLE) end + return true +end +function c511001558.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511001559.lua b/script/c511001559.lua new file mode 100644 index 00000000..b7e438f0 --- /dev/null +++ b/script/c511001559.lua @@ -0,0 +1,67 @@ +--Beast-borg Medal of the White Sword +function c511001559.initial_effect(c) + c:EnableCounterPermit(0x103) + --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) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DAMAGE) + e2:SetCondition(c511001559.ctcon) + e2:SetOperation(c511001559.ctop) + c:RegisterEffect(e2) + --gain atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001559,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511001559.atkcost) + e3:SetTarget(c511001559.atktg) + e3:SetOperation(c511001559.atkop) + c:RegisterEffect(e3) +end +function c511001559.ctcon(e,tp,eg,ep,ev,re,r,rp) + return ev>=100 and ep~=tp and rp==tp +end +function c511001559.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ct=math.floor(ev/100) + c:AddCounter(0x103,ct) +end +function c511001559.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=e:GetHandler():GetCounter(0x103) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and ct>0 end + e:SetLabel(ct) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001559.filter(c) + return c:IsFaceup() and c:IsSetCard(0x20c) +end +function c511001559.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001559.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001559.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001559.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001559.atkop(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_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(e:GetLabel()*100) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001560.lua b/script/c511001560.lua new file mode 100644 index 00000000..ebdbcd36 --- /dev/null +++ b/script/c511001560.lua @@ -0,0 +1,68 @@ +--Burn Gift +function c511001560.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001560.target) + e1:SetOperation(c511001560.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511001560.desop) + c:RegisterEffect(e2) + --Destroy2 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511001560.descon2) + e3:SetTarget(c511001560.destg2) + e3:SetOperation(c511001560.desop2) + c:RegisterEffect(e3) +end +function c511001560.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsCanBeSpecialSummoned(e,0,1-tp,false,false,POS_FACEUP,1-tp) +end +function c511001560.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001560.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001560.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.HintSelection(g) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001560.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) then + if Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP)==0 then return end + c:SetCardTarget(tc) + end +end +function c511001560.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,400,REASON_EFFECT) + end +end +function c511001560.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001560.destg2(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) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c511001560.desop2(e,tp,eg,ep,ev,re,r,rp) + if Duel.Destroy(e:GetHandler(),REASON_EFFECT)>0 then + Duel.Damage(1-tp,400,REASON_EFFECT) + end +end diff --git a/script/c511001561.lua b/script/c511001561.lua new file mode 100644 index 00000000..7b72a0c0 --- /dev/null +++ b/script/c511001561.lua @@ -0,0 +1,84 @@ +--Harpie Nightmare Mirror +function c511001561.initial_effect(c) + --Copy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511001561.target) + e1:SetOperation(c511001561.operation) + c:RegisterEffect(e1) +end +function c511001561.cfilter(c,tp) + return c:GetSummonPlayer()~=tp +end +function c511001561.filter(c,tp) + return c:IsFaceup() and c:GetLevel()>0 and c:IsCode(76812113) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001562,0,0x4011,c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) +end +function c511001561.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511001561.cfilter,nil,tp) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001353.filter(chkc,tp) end + if chk==0 then return g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=g:GetCount() + and Duel.IsExistingTarget(c511001561.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001561.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,g:GetCount(),0,0) +end +function c511001561.operation(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001561.cfilter,nil,tp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001564.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001564.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_MZONE) and e:GetHandler():GetPreviousControler()==tp +end +function c511001564.filter(c,e,tp) + return c:IsSetCard(0xc6) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001564.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001564.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001564.spop(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,c511001564.filter,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 diff --git a/script/c511001565.lua b/script/c511001565.lua new file mode 100644 index 00000000..47dc58bf --- /dev/null +++ b/script/c511001565.lua @@ -0,0 +1,67 @@ +--Performage Mirror Conductor +function c511001565.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --lowest value + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetRange(LOCATION_PZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(c511001565.target) + e1:SetValue(c511001565.val) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + c:RegisterEffect(e2) + --switch + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001565,0)) + e3:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCondition(c511001565.con) + e3:SetTarget(c511001565.tg) + e3:SetOperation(c511001565.op) + c:RegisterEffect(e3) +end +function c511001565.val(e,c) + if c:GetBaseAttack()<=c:GetBaseDefense() then + return c:GetBaseAttack() + else + return c:GetBaseDefense() + end +end +function c511001565.target(e,c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 +end +function c511001565.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc +end +function c511001565.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local bc=e:GetHandler():GetBattleTarget() + if chkc then return chkc==bc end + if chk==0 then return bc:IsOnField() and bc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(bc) +end +function c511001565.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + local def=tc:GetDefense() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(def) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001566.lua b/script/c511001566.lua new file mode 100644 index 00000000..56a47419 --- /dev/null +++ b/script/c511001566.lua @@ -0,0 +1,67 @@ +--Performage Wind Sucker +function c511001566.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --level + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c511001566.lvtg) + e2:SetOperation(c511001566.lvop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SPSUMMON_PROC) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e3:SetRange(LOCATION_HAND) + e3:SetCondition(c511001566.spcon) + c:RegisterEffect(e3) + --spsummon level + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e4:SetOperation(c511001566.splvop) + c:RegisterEffect(e4) +end +function c511001566.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511001566.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001566.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001566.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001566.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001566.lvop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511001566.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511001566.splvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001567.lua b/script/c511001567.lua new file mode 100644 index 00000000..72be6977 --- /dev/null +++ b/script/c511001567.lua @@ -0,0 +1,43 @@ +--Bye Bye Damage +function c511001567.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001567.target) + e1:SetOperation(c511001567.activate) + c:RegisterEffect(e1) +end +function c511001567.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:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_ATTACK) +end +function c511001567.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511001567.damcon) + e2:SetOperation(c511001567.damop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c511001567.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and e:GetHandler():IsRelateToBattle() +end +function c511001567.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,ev*2,REASON_EFFECT) +end diff --git a/script/c511001568.lua b/script/c511001568.lua new file mode 100644 index 00000000..2d31f18c --- /dev/null +++ b/script/c511001568.lua @@ -0,0 +1,32 @@ +--Plus Star 123 +function c511001568.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001568.target) + e1:SetOperation(c511001568.activate) + c:RegisterEffect(e1) +end +function c511001568.filter(c) + return c:IsFaceup() and c:IsLevelBelow(4) +end +function c511001568.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001568.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001568.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001568.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001568.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local lv=Duel.AnnounceNumber(tp,1,2,3) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001569.lua b/script/c511001569.lua new file mode 100644 index 00000000..67c2868e --- /dev/null +++ b/script/c511001569.lua @@ -0,0 +1,44 @@ +--罠蘇生 +function c511001569.initial_effect(c) + --copy trap + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0x1e1,0x1e1) + e1:SetCost(c511001569.cost) + e1:SetTarget(c511001569.target) + e1:SetOperation(c511001569.operation) + c:RegisterEffect(e1) +end +function c511001569.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511001569.filter(c) + return c:GetType()==0x4 and c:IsAbleToRemove() and c:CheckActivateEffect(false,false,false)~=nil +end +function c511001569.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511001569.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001569.filter,tp,0,LOCATION_GRAVE,1,nil) end + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511001569.filter,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511001569.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + local te=tc:CheckActivateEffect(false,false,false) + if not te then return end + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end +end diff --git a/script/c511001570.lua b/script/c511001570.lua new file mode 100644 index 00000000..f6876e87 --- /dev/null +++ b/script/c511001570.lua @@ -0,0 +1,36 @@ +--Tribute Ticket +function c511001570.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001570.retcost) + c:RegisterEffect(e1) + --summon proc + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(11370031,0)) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_SUMMON_PROC) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_HAND,0) + e4:SetCondition(c511001570.sumcon) + e4:SetOperation(c511001570.sumop) + e4:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_SET_PROC) + c:RegisterEffect(e5) +end +function c511001570.retcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001570.sumcon(e,c) + if c==nil then return e:GetHandler():IsReleasable() end + local mi,ma=c:GetTributeRequirement() + return ma>1 and mi>1 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511001570.sumop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Release(e:GetHandler(),REASON_COST) +end diff --git a/script/c511001571.lua b/script/c511001571.lua new file mode 100644 index 00000000..7941ebb0 --- /dev/null +++ b/script/c511001571.lua @@ -0,0 +1,72 @@ +--Utopia Sword +function c511001571.initial_effect(c) + 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(c511001571.target) + e1:SetOperation(c511001571.operation) + c:RegisterEffect(e1) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetValue(c511001571.eqlimit) + c:RegisterEffect(e3) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetValue(800) + c:RegisterEffect(e5) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511001571.descon) + e3:SetCost(c511001571.descost) + e3:SetTarget(c511001571.destg) + e3:SetOperation(c511001571.desop) + c:RegisterEffect(e3) +end +function c511001571.eqlimit(e,c) + return c:IsSetCard(0x107f) +end +function c511001571.filter(c) + return c:IsFaceup() and c:IsSetCard(0x107f) +end +function c511001571.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001571.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001571.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001571.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001571.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 c511001571.descon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + return e:GetHandler():GetEquipTarget()==ec and ec:IsControler(tp) + and bc:GetPreviousControler()==1-tp and bc:IsReason(REASON_BATTLE) +end +function c511001571.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001571.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler():GetEquipTarget()) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler():GetPreviousEquipTarget()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511001571.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler():GetPreviousEquipTarget()) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511001572.lua b/script/c511001572.lua new file mode 100644 index 00000000..20a65272 --- /dev/null +++ b/script/c511001572.lua @@ -0,0 +1,66 @@ +--Giant Hunter +function c511001572.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(c511001572.target) + e1:SetOperation(c511001572.operation) + c:RegisterEffect(e1) + --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) + --actlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetCondition(c511001572.accon) + e4:SetOperation(c511001572.acop) + c:RegisterEffect(e4) +end +function c511001572.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 c511001572.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 c511001572.accon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst()==e:GetHandler():GetEquipTarget() +end +function c511001572.acop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511001572.aclimit) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e1,tp) + local d=Duel.GetAttackTarget() + if Duel.GetLP(tp)0 + and Duel.IsExistingMatchingCard(c511001573.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001573.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttackTarget() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c511001573.rdcon) + e2:SetOperation(c511001573.rdop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetOperation(c511001573.spop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + e3:SetValue(1) + Duel.RegisterEffect(e3,tp) +end +function c511001573.rdcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511001573.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev-500) +end +function c511001573.spop(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,c511001573.filter,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 diff --git a/script/c511001574.lua b/script/c511001574.lua new file mode 100644 index 00000000..c865fca8 --- /dev/null +++ b/script/c511001574.lua @@ -0,0 +1,37 @@ +--Fourcing +function c511001574.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001574.cost) + e1:SetTarget(c511001574.target) + e1:SetOperation(c511001574.activate) + c:RegisterEffect(e1) +end +function c511001574.cfilter(c,e,tp) + return c:IsAbleToGraveAsCost() and Duel.IsExistingMatchingCard(c511001574.filter,tp,LOCATION_HAND,0,1,c,e,tp) +end +function c511001574.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001574.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001574.cfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001574.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001574.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001574.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001574.activate(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,c511001574.filter,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 diff --git a/script/c511001575.lua b/script/c511001575.lua new file mode 100644 index 00000000..7e57c9b2 --- /dev/null +++ b/script/c511001575.lua @@ -0,0 +1,105 @@ +--Guard Robe Exchange +function c511001575.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(c511001575.target) + e1:SetOperation(c511001575.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + 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) + --damage + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(511001265) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511001575.damcon) + e4:SetTarget(c511001575.damtg) + e4:SetOperation(c511001575.damop) + c:RegisterEffect(e4) + if not c511001575.global_check then + c511001575.global_check=true + --register + local ge=Effect.CreateEffect(c) + ge:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge:SetCode(EVENT_ADJUST) + ge:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge:SetOperation(c511001575.regop) + Duel.RegisterEffect(ge,0) + end +end +function c511001575.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 c511001575.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 c511001575.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst()==e:GetHandler():GetEquipTarget() and ev>0 and re:GetOwner()~=e:GetHandler() +end +function c511001575.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c511001575.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001575.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511001575.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511001575.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end diff --git a/script/c511001576.lua b/script/c511001576.lua new file mode 100644 index 00000000..362ab295 --- /dev/null +++ b/script/c511001576.lua @@ -0,0 +1,80 @@ +--Number Return +function c511001576.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001576.condition) + e1:SetTarget(c511001576.target) + e1:SetOperation(c511001576.activate) + c:RegisterEffect(e1) +end +function c511001576.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c511001576.filter(c,e,tp) + local ct=c.minxyzct + return c:IsSetCard(0x48) and c:IsType(TYPE_XYZ) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and ct + and Duel.IsExistingMatchingCard(c511001576.atfilter,tp,LOCATION_GRAVE,0,ct,c) +end +function c511001576.atfilter(c) + return c:IsSetCard(0x48) and c:IsType(TYPE_MONSTER) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001576.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001576.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001576.activate(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,c511001576.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + local ct=tc.minxyzct + local ct2=tc.maxxyzct + local og=Duel.SelectMatchingCard(tp,c511001576.atfilter,tp,LOCATION_GRAVE,0,ct,ct2,nil) + Duel.Overlay(tc,og) + end +end diff --git a/script/c511001577.lua b/script/c511001577.lua new file mode 100644 index 00000000..b871148e --- /dev/null +++ b/script/c511001577.lua @@ -0,0 +1,83 @@ +--Number Spell Caster +function c511001577.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c511001577.cost) + e1:SetTarget(c511001577.target) + e1:SetOperation(c511001577.operation) + c:RegisterEffect(e1) +end +function c511001577.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x48) end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x48) + Duel.Release(g,REASON_COST) +end +function c511001577.filter(c,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return c:IsType(TYPE_SPELL) and c:IsType(TYPE_CONTINUOUS) and (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) +end +function c511001577.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=0 + if e:GetHandler():IsLocation(LOCATION_HAND) then ct=ct+1 end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>ct + and Duel.IsExistingMatchingCard(c511001577.filter,tp,LOCATION_DECK,0,1,nil,tp,eg,ep,ev,re,r,rp) end +end +function c511001577.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(c511001577.filter,tp,LOCATION_DECK,0,nil,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + local g=sg:Select(tp,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + if te then + local con=te:GetCondition() + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + Duel.ClearTargetCard() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + Duel.BreakEffect() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end +end diff --git a/script/c511001578.lua b/script/c511001578.lua new file mode 100644 index 00000000..71e3c1cd --- /dev/null +++ b/script/c511001578.lua @@ -0,0 +1,43 @@ +--Flying Dragon Whirl +function c511001578.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(c511001578.condition) + e1:SetTarget(c511001578.target) + e1:SetOperation(c511001578.activate) + c:RegisterEffect(e1) +end +function c511001578.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001578.tgfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsAbleToGrave() +end +function c511001578.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,nil) + and Duel.IsExistingMatchingCard(c511001578.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001578.tgfilter,tp,LOCATION_DECK,0,1,4,nil) + Duel.SendtoGrave(g,REASON_COST) + Duel.SetTargetParam(g:GetCount()) +end +function c511001578.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and ct>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*300) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001579.lua b/script/c511001579.lua new file mode 100644 index 00000000..f57ce03e --- /dev/null +++ b/script/c511001579.lua @@ -0,0 +1,29 @@ +--Entermachine Gadget Giant +function c511001579.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(20366274,1)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c511001579.descon) + e1:SetTarget(c511001579.destg) + e1:SetOperation(c511001579.desop) + c:RegisterEffect(e1) +end +function c511001579.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bit.band(bc:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511001579.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return bc:IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) +end +function c511001579.desop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + if bc:IsRelateToBattle() then + Duel.Destroy(bc,REASON_EFFECT) + end +end diff --git a/script/c511001580.lua b/script/c511001580.lua new file mode 100644 index 00000000..7835f6f3 --- /dev/null +++ b/script/c511001580.lua @@ -0,0 +1,55 @@ +--Performage Ball Rider +function c511001580.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001580.tgtg) + e2:SetOperation(c511001580.tgop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(2830693,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_GRAVE) + e3:SetCondition(c511001580.spcon) + e3:SetTarget(c511001580.sptg) + e3:SetOperation(c511001580.spop) + c:RegisterEffect(e3) +end +function c511001580.tgfilter(c) + return c:IsType(TYPE_PENDULUM) and c:IsAbleToGrave() +end +function c511001580.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001580.tgfilter,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_EXTRA) +end +function c511001580.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001580.tgfilter,tp,LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c511001580.spcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and bit.band(a:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL + and Duel.GetAttackTarget()==nil +end +function c511001580.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001580.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001581.lua b/script/c511001581.lua new file mode 100644 index 00000000..ce070ac5 --- /dev/null +++ b/script/c511001581.lua @@ -0,0 +1,51 @@ +--Performage Water Dancer +function c511001581.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --position + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(60410769,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001581.postg) + e2:SetOperation(c511001581.posop) + c:RegisterEffect(e2) + --lose atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001160,1)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetTarget(c511001581.postg2) + e3:SetOperation(c511001581.posop2) + c:RegisterEffect(e3) +end +function c511001581.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAttackPos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAttackPos,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPATTACK) + local g=Duel.SelectTarget(tp,Card.IsAttackPos,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511001581.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsAttackPos() then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + end +end +function c511001581.postg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetHandler():GetReasonCard() + if chkc then return chkc==tc end + if chk==0 then return tc:IsFaceup() and tc:IsAttackPos() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) +end +function c511001581.posop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToBattle() and tc:IsAttackPos() then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + end +end diff --git a/script/c511001582.lua b/script/c511001582.lua new file mode 100644 index 00000000..ef0a5122 --- /dev/null +++ b/script/c511001582.lua @@ -0,0 +1,31 @@ +--Performage Hurricane +function c511001582.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001582.condition) + e1:SetTarget(c511001582.target) + e1:SetOperation(c511001582.activate) + c:RegisterEffect(e1) +end +function c511001582.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc6) +end +function c511001582.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001582.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c511001582.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c511001582.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511001582.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) end + local sg=Duel.GetMatchingGroup(c511001582.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c511001582.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001582.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end diff --git a/script/c511001583.lua b/script/c511001583.lua new file mode 100644 index 00000000..dabd2741 --- /dev/null +++ b/script/c511001583.lua @@ -0,0 +1,47 @@ +--Fortress of Prophecy +function c511001583.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) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c511001583.atcon) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001583,0)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511001583.drcon) + e3:SetTarget(c511001583.drtg) + e3:SetOperation(c511001583.drop) + c:RegisterEffect(e3) +end +function c511001583.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c511001583.atcon(e) + return Duel.IsExistingMatchingCard(c511001583.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511001583.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c511001583.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001583.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001584.lua b/script/c511001584.lua new file mode 100644 index 00000000..7ab9c296 --- /dev/null +++ b/script/c511001584.lua @@ -0,0 +1,37 @@ +--Pinch Breaker +function c511001584.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001584.condition) + e1:SetTarget(c511001584.target) + e1:SetOperation(c511001584.activate) + c:RegisterEffect(e1) +end +function c511001584.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001584.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetTargetCard(tg) +end +function c511001584.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc2=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + if tc2 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc2:GetDefense()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001585.lua b/script/c511001585.lua new file mode 100644 index 00000000..992301db --- /dev/null +++ b/script/c511001585.lua @@ -0,0 +1,65 @@ +--Power Gift +function c511001585.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001585.condition) + e1:SetCost(c511001585.cost) + e1:SetTarget(c511001585.target) + e1:SetOperation(c511001585.activate) + c:RegisterEffect(e1) +end +function c511001585.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001585.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511001585.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511001585.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511001585.cfilter,tp,LOCATION_HAND,0,1,nil) + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001585.cfilter,tp,LOCATION_HAND,0,1,1,nil) + local atk=g:GetFirst():GetAttack() + Duel.SendtoGrave(g,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetTargetParam(atk) +end +function c511001585.activate(e,tp,eg,ep,ev,re,r,rp) + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(atk) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_BATTLED) + e2:SetOperation(c511001585.desop) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end +function c511001585.desop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttackTarget() then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c511001586.lua b/script/c511001586.lua new file mode 100644 index 00000000..e8a1c6bf --- /dev/null +++ b/script/c511001586.lua @@ -0,0 +1,38 @@ +--Zero Gazer +function c511001586.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001586.condition) + e1:SetTarget(c511001586.target) + e1:SetOperation(c511001586.activate) + c:RegisterEffect(e1) +end +function c511001586.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511001586.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttackTarget() + if chk==0 then return tg and tg:IsOnField() and tg:GetAttack()>0 and tg:IsFaceup() and Duel.IsPlayerCanDraw(tp,1) end +end +function c511001586.activate(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d and d:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetReset(RESET_EVENT+0xfe0000) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + d:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetOperation(c511001586.drop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) + end +end +function c511001586.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c511001587.lua b/script/c511001587.lua new file mode 100644 index 00000000..43da415f --- /dev/null +++ b/script/c511001587.lua @@ -0,0 +1,60 @@ +--Sample Fossil +function c511001587.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001587,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001587.sptg) + e1:SetOperation(c511001587.spop) + c:RegisterEffect(e1) +end +function c511001587.filter(c) + return c:IsLevelBelow(4) and c:IsType(TYPE_MONSTER) +end +function c511001587.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001587.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511001587.filter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001587.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511001587.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(1) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + if c:IsRelateToEffect(e) then + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SET_ATTACK) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(tc:GetBaseAttack()) + e4:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e4) + end + end +end diff --git a/script/c511001588.lua b/script/c511001588.lua new file mode 100644 index 00000000..f070dc80 --- /dev/null +++ b/script/c511001588.lua @@ -0,0 +1,28 @@ +--Shell Knight +function c511001588.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001588.damtg) + e1:SetOperation(c511001588.damop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511001588.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511001588.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001589.lua b/script/c511001589.lua new file mode 100644 index 00000000..e1ce48d3 --- /dev/null +++ b/script/c511001589.lua @@ -0,0 +1,65 @@ +--Uluru's Guardian +function c511001589.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001589,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001589.negcon) + e1:SetCost(c511001589.cbcost) + e1:SetTarget(c511001589.negtg) + e1:SetOperation(c511001589.negop) + c:RegisterEffect(e1) +end +function c511001589.cfilter(c) + return c:IsType(TYPE_TRAP) and c:IsFaceup() and c:IsAbleToGraveAsCost() +end +function c511001589.cbcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001589.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001589.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001589.negcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if rp==tp or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or not g:IsContains(c) then return false end + return Duel.IsChainNegatable(ev) or Duel.IsChainDisablable(ev) +end +function c511001589.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511001589.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=re:GetHandler() + Duel.NegateActivation(ev) + Duel.NegateEffect(ev) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end diff --git a/script/c511001590.lua b/script/c511001590.lua new file mode 100644 index 00000000..fafc2126 --- /dev/null +++ b/script/c511001590.lua @@ -0,0 +1,66 @@ +--Uluru, the Guardian Spirit +function c511001590.initial_effect(c) + --SSummon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511001590.con) + e1:SetTarget(c511001590.target) + e1:SetOperation(c511001590.op) + c:RegisterEffect(e1) +end +function c511001590.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,511001589) +end +function c511001590.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,511001590,0,0x11,0,2500,4,RACE_ROCK,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001590.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001590,0,0x11,0,2500,4,RACE_ROCK,ATTRIBUTE_EARTH) then return end + c:AddMonsterAttribute(TYPE_NORMAL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511001590.sdop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --must attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_EP) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(0,1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_MUST_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_MUST_BE_ATTACKED) + e4:SetRange(LOCATION_MZONE) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e4) +end +function c511001590.sdop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001591.lua b/script/c511001591.lua new file mode 100644 index 00000000..050fc956 --- /dev/null +++ b/script/c511001591.lua @@ -0,0 +1,37 @@ +--Fossil Hammer +function c511001591.initial_effect(c) + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001591.target) + e1:SetOperation(c511001591.operation) + c:RegisterEffect(e1) +end +function c511001591.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511001591.filter2(c,e,tp) + return c:IsDestructable() and Duel.IsExistingMatchingCard(c511001591.spfilter,tp,0,LOCATION_GRAVE,1,nil,e,tp,c:GetLevel()) +end +function c511001591.spfilter(c,e,tp,lv) + return c:GetLevel()>0 and c:GetLevel()0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=Duel.SelectMatchingCard(1-tp,c511001591.spfilter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,g:GetFirst():GetLevel()) + if sg2:GetCount()>0 then + Duel.SpecialSummon(sg2,0,1-tp,1-tp,false,false,POS_FACEUP_ATTACK) + end + end +end \ No newline at end of file diff --git a/script/c511001592.lua b/script/c511001592.lua new file mode 100644 index 00000000..bf2903a1 --- /dev/null +++ b/script/c511001592.lua @@ -0,0 +1,81 @@ +--Half Life +function c511001592.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001592.condition) + e1:SetTarget(c511001592.target) + e1:SetOperation(c511001592.operation) + c:RegisterEffect(e1) +end +function c511001592.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:GetAttack()==d:GetAttack() and a:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)>0 and d:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)>0 + and a:IsAttackPos() and d:IsAttackPos() then return false end + if a:IsAttackPos() and d:IsAttackPos() and a:GetAttack()==d:GetAttack() and a:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)>0 then + e:SetLabelObject(d) + return true + end + if a:IsAttackPos() and d:IsAttackPos() and a:GetAttack()==d:GetAttack() and d:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)>0 then + local g=Group.FromCards(a) + g:KeepAlive() + e:SetLabelObject(g) + return true + end + if a:IsAttackPos() and d:IsAttackPos() and a:GetAttack()==d:GetAttack() and a:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)==0 + and d:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)==0 then + local g=Group.FromCards(a,d) + g:KeepAlive() + e:SetLabelObject(g) + return true + end + if d:IsAttackPos() and a:GetAttack()>d:GetAttack() and d:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)==0 then + local g=Group.FromCards(d) + g:KeepAlive() + e:SetLabelObject(g) + return true + end + if d:IsAttackPos() and a:GetAttack()d:GetDefense() and d:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)==0 then + local g=Group.FromCards(d) + g:KeepAlive() + e:SetLabelObject(g) + return true + end + return false +end +function c511001592.filter(c) + return c:GetAttack()>1 +end +function c511001592.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject() + if chk==0 then return g:GetCount()>0 and g:IsExists(c511001592.filter,1,nil) end +end +function c511001592.operation(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if g:GetCount()==0 then return end + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c511001593.lua b/script/c511001593.lua new file mode 100644 index 00000000..f5426f3f --- /dev/null +++ b/script/c511001593.lua @@ -0,0 +1,40 @@ +--魂の綱 +function c511001593.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511001593.condition) + e1:SetCost(c511001593.cost) + e1:SetTarget(c511001593.target) + e1:SetOperation(c511001593.activate) + c:RegisterEffect(e1) +end +function c511001593.cfilter(c,tp) + return c:IsType(TYPE_MONSTER) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511001593.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001593.cfilter,1,nil,tp) +end +function c511001593.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 c511001593.spfilter(c,e,tp) + return c:GetLevel()<=4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001593.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001593.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001593.activate(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,c511001593.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001594.lua b/script/c511001594.lua new file mode 100644 index 00000000..15bddf03 --- /dev/null +++ b/script/c511001594.lua @@ -0,0 +1,38 @@ +--キングス・ナイト +function c511001594.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64788463,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511001594.spcon) + e1:SetTarget(c511001594.sptg) + e1:SetOperation(c511001594.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c511001594.cfilter(c) + return c:IsFaceup() and c:IsCode(25652259) +end +function c511001594.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001594.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001594.filter(c,e,tp) + return c:IsCode(90876561) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001594.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001594.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001594.spop(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,c511001594.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001596.lua b/script/c511001596.lua new file mode 100644 index 00000000..8da431b3 --- /dev/null +++ b/script/c511001596.lua @@ -0,0 +1,65 @@ +--デビルズ・サンクチュアリ +function c511001596.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001596.target) + e1:SetOperation(c511001596.activate) + c:RegisterEffect(e1) +end +function c511001596.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,24874631,0,0x4011,-2,0,1,RACE_FIEND,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001596.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,24874631,0,0x4011,-2,0,1,RACE_FIEND,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,24874631) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e0=Effect.CreateEffect(e:GetHandler()) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_SET_BASE_ATTACK) + e0:SetValue(-2) + e0:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetOperation(c511001596.rtcost) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3,true) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetValue(Duel.GetLP(1-tp)) + token:RegisterEffect(e4) +end +function c511001596.rtcost(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + if Duel.GetLP(tp)>1000 and Duel.SelectYesNo(tp,aux.Stringid(24874630,0)) then + Duel.PayLPCost(tp,1000) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c511001597.lua b/script/c511001597.lua new file mode 100644 index 00000000..865f16c2 --- /dev/null +++ b/script/c511001597.lua @@ -0,0 +1,85 @@ +--Sin World +function c511001597.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(27564031,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001597.condition) + e2:SetTarget(c511001597.target) + e2:SetOperation(c511001597.operation) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c511001597.attarget) + e3:SetCondition(c511001597.atcon) + c:RegisterEffect(e3) +end +function c511001597.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c511001597.filter(c) + return c:IsSetCard(0x23) and c:IsAbleToHand() and c:IsType(TYPE_MONSTER) +end +function c511001597.filter2(c) + return c:IsSetCard(0x23) and c:IsType(TYPE_MONSTER) +end +function c511001597.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001597.filter,tp,LOCATION_DECK,0,1,nil) + or e:GetHandler():GetFlagEffect(511001597)==0 end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c511001597.operation(e,tp,eg,ep,ev,re,r,rp) + _replace_count=_replace_count+1 + if _replace_count>_replace_max or not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c511001597.filter2,tp,LOCATION_DECK,0,nil) + if g:GetCount()>0 then + local tc=g:RandomSelect(tp,1):GetFirst() + if tc:IsAbleToHand() then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + else + Duel.SendtoGrave(tc,REASON_EFFECT) + end + e:GetHandler():ResetFlagEffect(511001597) + else + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ConfirmCards(tp,cg) + Duel.ShuffleDeck(tp) + e:GetHandler():RegisterFlagEffect(511001597,RESET_EVENT+0x1fe0000,0,1) + end +end +function c511001597.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x23) +end +function c511001597.atcon(e) + return Duel.IsExistingMatchingCard(c511001597.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511001597.attarget(e,c) + return not c:IsSetCard(0x23) +end diff --git a/script/c511001598.lua b/script/c511001598.lua new file mode 100644 index 00000000..c75a9e45 --- /dev/null +++ b/script/c511001598.lua @@ -0,0 +1,31 @@ +--サイバー・プリマ +function c511001598.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2158562,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511001598.destg) + e1:SetOperation(c511001598.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511001598.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL) and c:IsDestructable() +end +function c511001598.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001598.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c511001598.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0,nil) +end +function c511001598.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001598.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511001599.lua b/script/c511001599.lua new file mode 100644 index 00000000..2d91c55b --- /dev/null +++ b/script/c511001599.lua @@ -0,0 +1,23 @@ +--エトワール・サイバー +function c511001599.initial_effect(c) + --atkdef up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79853073,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001599.con) + e1:SetOperation(c511001599.op) + c:RegisterEffect(e1) +end +function c511001599.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil +end +function c511001599.op(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(600) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c511001600.lua b/script/c511001600.lua new file mode 100644 index 00000000..286367ff --- /dev/null +++ b/script/c511001600.lua @@ -0,0 +1,56 @@ +--サイバー・ブレイダー +function c511001600.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,97023549,11460577,false,false) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetCondition(c511001600.indcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetCondition(c511001600.atkcon) + e2:SetValue(c511001600.atkval) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_ONFIELD) + e3:SetCondition(c511001600.discon) + c:RegisterEffect(e3) + --disable effect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAIN_SOLVING) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511001600.discon) + e4:SetOperation(c511001600.disop) + c:RegisterEffect(e4) +end +function c511001600.indcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==1 +end +function c511001600.atkcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==2 +end +function c511001600.discon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==3 +end +function c511001600.atkval(e,c) + return c:GetAttack()*2 +end +function c511001600.disop(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if rp~=tp and tl==LOCATION_SZONE then + Duel.NegateEffect(ev) + end +end diff --git a/script/c511001602.lua b/script/c511001602.lua new file mode 100644 index 00000000..25d3d0a2 --- /dev/null +++ b/script/c511001602.lua @@ -0,0 +1,24 @@ +--Cursed Fire King Doom Burst +function c511001602.initial_effect(c) + --lose atk + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DESTROYED) + e1:SetOperation(c511001602.op) + c:RegisterEffect(e1) +end +function c511001602.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-400) + g:GetFirst():RegisterEffect(e1) + end +end diff --git a/script/c511001603.lua b/script/c511001603.lua new file mode 100644 index 00000000..b8a47ad1 --- /dev/null +++ b/script/c511001603.lua @@ -0,0 +1,274 @@ +--Hot Red Dragon Archfiend King Calamity +function c511001603.initial_effect(c) + --synchro summon + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetCode(EFFECT_SPSUMMON_PROC) + e0:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e0:SetRange(LOCATION_EXTRA) + e0:SetCondition(c511001603.syncon) + e0:SetOperation(c511001603.synop) + e0:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e0) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(53981499,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511001603.damcon) + e1:SetTarget(c511001603.damtg) + e1:SetOperation(c511001603.damop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001603,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DESTROYED) + e2:SetTarget(c511001603.sptg) + e2:SetOperation(c511001603.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCondition(c511001603.descon) + e3:SetOperation(c511001603.desop) + c:RegisterEffect(e3) +end +function c511001603.matfilter1(c,syncard) + return c:IsType(TYPE_TUNER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) +end +function c511001603.matfilter2(c,syncard) + return c:IsFaceup() and not c:IsType(TYPE_TUNER) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSynchroMaterial(syncard) +end +function c511001603.synfilter1(c,syncard,lv,g1,g2,g3) + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + local f1=c.tuner_filter + if c:IsHasEffect(55863245) then + return g3:IsExists(c511001603.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) + else + return g1:IsExists(c511001603.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) + end +end +function c511001603.synfilter2(c,syncard,lv,g2,f1,tuner1) + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + local f2=c.tuner_filter + if f1 and not f1(c) then return false end + if f2 and not f2(tuner1) then return false end + return g2:IsExists(c511001603.synfilter3,1,nil,syncard,lv-tlv,f1,f2) +end +function c511001603.synfilter3(c,syncard,lv,f1,f2) + local mlv=c:GetSynchroLevel(syncard) + local lv1=bit.band(mlv,0xffff) + local lv2=bit.rshift(mlv,16) + return (lv1==lv or lv2==lv) and (not f1 or f1(c)) and (not f2 or f2(c)) +end +function c511001603.syncon(e,c,tuner,mg) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end + local g1=nil + local g2=nil + local g3=nil + if mg then + g1=mg:Filter(c511001603.matfilter1,nil,c) + g2=mg:Filter(c511001603.matfilter2,nil,c) + g3=mg:Filter(c511001603.matfilter1,nil,c) + else + g1=Duel.GetMatchingGroup(c511001603.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c511001603.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c511001603.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + local tlv=tuner:GetSynchroLevel(c) + if lv-tlv<=0 then return false end + local f1=tuner.tuner_filter + if not pe then + return g1:IsExists(c511001603.synfilter2,1,tuner,c,lv-tlv,g2,f1,tuner) + else + return c511001603.synfilter2(pe:GetOwner(),c,lv-tlv,g2,f1,tuner) + end + end + if not pe then + return g1:IsExists(c511001603.synfilter1,1,nil,c,lv,g1,g2,g3) + else + return c511001603.synfilter1(pe:GetOwner(),c,lv,g1,g2) + end +end +function c511001603.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) + local g=Group.CreateGroup() + local g1=nil + local g2=nil + local g3=nil + if mg then + g1=mg:Filter(c511001603.matfilter1,nil,c) + g2=mg:Filter(c511001603.matfilter2,nil,c) + g3=mg:Filter(c511001603.matfilter1,nil,c) + else + g1=Duel.GetMatchingGroup(c511001603.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c511001603.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c511001603.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + g:AddCard(tuner) + local lv1=tuner:GetSynchroLevel(c) + local f1=tuner.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner2=nil + if not pe then + local t2=g1:FilterSelect(tp,c511001603.synfilter2,1,1,tuner,c,lv-lv1,g2,f1,tuner) + tuner2=t2:GetFirst() + else + tuner2=pe:GetOwner() + Group.FromCards(tuner2):Select(tp,1,1,nil) + end + g:AddCard(tuner2) + local lv2=tuner2:GetSynchroLevel(c) + local f2=tuner2.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=g2:FilterSelect(tp,c511001603.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) + g:Merge(m3) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner1=nil + if not pe then + local t1=g1:FilterSelect(tp,c511001603.synfilter1,1,1,nil,c,lv,g1,g2,g3) + tuner1=t1:GetFirst() + else + tuner1=pe:GetOwner() + Group.FromCards(tuner1):Select(tp,1,1,nil) + end + g:AddCard(tuner1) + local lv1=tuner1:GetSynchroLevel(c) + local f1=tuner1.tuner_filter + local t2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if tuner1:IsHasEffect(55863245) then + t2=g3:FilterSelect(tp,c511001603.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) + else + t2=g1:FilterSelect(tp,c511001603.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) + end + local tuner2=t2:GetFirst() + g:AddCard(tuner2) + local lv2=tuner2:GetSynchroLevel(c) + local f2=tuner2.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=g2:FilterSelect(tp,c511001603.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) + g:Merge(m3) + end + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c511001603.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsType(TYPE_MONSTER) +end +function c511001603.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local bc=c:GetBattleTarget() + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511001603.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001603.filter(c,e,tp) + return c:IsCode(39765958) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001603.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001603.spop(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,c511001603.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) then + local ge=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=ge:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=ge:GetNext() + end + end +end +function c511001603.descon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d +end +function c511001603.desfilter(c,ca) + return not c:IsStatus(STATUS_BATTLE_DESTROYED) and (not ca or ca==c) +end +function c511001603.desop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a:IsStatus(STATUS_BATTLE_DESTROYED) or not d:IsStatus(STATUS_BATTLE_DESTROYED) then + local g=Group.FromCards(a,d) + if a:IsAttackPos() and d:IsAttackPos() then + if a:GetAttack()==d:GetAttack() then + g=g:Filter(c511001603.desfilter,nil,nil) + elseif a:GetAttack()d:GetAttack() then + g=g:Filter(c511001603.desfilter,nil,d) + else + g=Group.CreateGroup() + end + elseif a:IsAttackPos() and d:IsDefensePos() then + if a:GetAttack()>d:GetDefense() then + g=g:Filter(c511001603.desfilter,nil,d) + else + g=Group.CreateGroup() + end + else + g=Group.CreateGroup() + end + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_CHAIN) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetReset(RESET_CHAIN) + tc:RegisterEffect(e2) + tc:SetStatus(STATUS_BATTLE_DESTROYED,true) + tc=g:GetNext() + end + Duel.Destroy(g,REASON_BATTLE) + end +end diff --git a/script/c511001604.lua b/script/c511001604.lua new file mode 100644 index 00000000..3f0a05b9 --- /dev/null +++ b/script/c511001604.lua @@ -0,0 +1,38 @@ +--Synchro Drive +function c511001604.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001604.activate) + c:RegisterEffect(e1) +end +function c511001604.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_SYNCHRO)) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CHANGE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + e3:SetValue(c511001604.damval) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c511001604.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_BATTLE)~=0 then + return val/2 + else + return val + end +end diff --git a/script/c511001605.lua b/script/c511001605.lua new file mode 100644 index 00000000..ad897edb --- /dev/null +++ b/script/c511001605.lua @@ -0,0 +1,49 @@ +--Black Brooch +function c511001605.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(c511001605.target) + e1:SetOperation(c511001605.operation) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-1000) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e3) + --equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) + --Indes + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e5:SetValue(1) + c:RegisterEffect(e5) +end +function c511001605.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 c511001605.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 diff --git a/script/c511001606.lua b/script/c511001606.lua new file mode 100644 index 00000000..401fb0e9 --- /dev/null +++ b/script/c511001606.lua @@ -0,0 +1,125 @@ +--Over Tuning +function c511001606.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001606.operation) + c:RegisterEffect(e1) +end +function c511001606.operation(e,tp,eg,ep,ev,re,r,rp) + --spsummon + local ec1=Effect.CreateEffect(e:GetHandler()) + ec1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ec1:SetCode(EVENT_SUMMON_SUCCESS) + ec1:SetCondition(c511001606.check) + ec1:SetLabel(0) + ec1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(ec1,tp) + local ec2=ec1:Clone() + ec2:SetCode(EVENT_SPSUMMON_SUCCESS) + ec2:SetCondition(c511001606.check2) + ec2:SetLabelObject(ec1) + Duel.RegisterEffect(ec2,tp) + local ec3=ec2:Clone() + ec3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + Duel.RegisterEffect(ec3,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c511001606.spcon) + e2:SetOperation(c511001606.spop) + e2:SetLabelObject(ec1) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001606.spcon2) + Duel.RegisterEffect(e3,tp) + local e4=e2:Clone() + e4:SetCode(EVENT_CHAIN_END) + Duel.RegisterEffect(e4,tp) + local e5=e2:Clone() + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + Duel.RegisterEffect(e5,tp) + local e6=e2:Clone() + e6:SetCode(EVENT_DAMAGE_STEP_END) + Duel.RegisterEffect(e6,tp) + local e7=e2:Clone() + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCountLimit(1) + Duel.RegisterEffect(e7,tp) + local e8=Effect.CreateEffect(e:GetHandler()) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_ADJUST) + e8:SetValue(1) + e8:SetLabelObject(ec1) + e8:SetCondition(c511001606.spcon) + e8:SetOperation(c511001606.regop) + e8:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e8,tp) +end +function c511001606.cfilter(c,tp) + return c:IsControler(tp) and c:IsType(TYPE_TUNER) +end +function c511001606.check(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==2 then return end + if eg:IsExists(c511001606.cfilter,1,nil,tp) then + e:SetLabel(1) + end +end +function c511001606.check2(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()==2 then return end + if eg:IsExists(c511001606.cfilter,1,nil,tp) then + e:GetLabelObject():SetLabel(1) + end +end +function c511001606.spfilter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001606.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()==1 +end +function c511001606.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()==1 and Duel.GetCurrentChain()==0 +end +function c511001606.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=1 then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001606.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(85602018,0)) then + e:GetLabelObject():SetLabel(2) + Duel.Hint(HINT_CARD,0,511001606) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001606.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001606.regop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=1 then return end + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC_G) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_DECK) + e1:SetCountLimit(1) + e1:SetLabelObject(e:GetLabelObject()) + e1:SetCondition(c511001606.spcon3) + e1:SetOperation(c511001606.spop3) + e1:SetReset(RESET_EVENT+EVENT_ADJUST) + tc:RegisterEffect(e1) +end +function c511001606.spcon3(e,c,og) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetLabelObject():GetLabel()==1 + and Duel.IsExistingMatchingCard(c511001606.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) +end +function c511001606.spop3(e,tp,eg,ep,ev,re,r,rp,c,og) + Duel.Hint(HINT_CARD,0,511001606) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001606.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + og:Merge(g) + e:GetLabelObject():SetLabel(2) +end diff --git a/script/c511001607.lua b/script/c511001607.lua new file mode 100644 index 00000000..f9570245 --- /dev/null +++ b/script/c511001607.lua @@ -0,0 +1,28 @@ +--Deadly Hand +function c511001607.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001607.condition) + e1:SetTarget(c511001607.target) + e1:SetOperation(c511001607.operation) + c:RegisterEffect(e1) +end +function c511001607.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)==Duel.GetMatchingGroupCount(Card.IsType,tp,0,LOCATION_HAND,nil,TYPE_MONSTER) +end +function c511001607.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001607.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511001608.lua b/script/c511001608.lua new file mode 100644 index 00000000..3000fb9c --- /dev/null +++ b/script/c511001608.lua @@ -0,0 +1,202 @@ +--No.93 希望皇ホープ・カイザー +function c511001608.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,12,2) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001608,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511001608.sptg) + e1:SetOperation(c511001608.spop) + 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_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c511001608.indcon) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetCondition(c511001608.indcon) + e4:SetValue(c511001608.efilter) + c:RegisterEffect(e4) + --no damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CHANGE_DAMAGE) + e5:SetRange(LOCATION_MZONE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,0) + e5:SetCondition(c511001608.indcon) + e5:SetValue(c511001608.damval) + c:RegisterEffect(e5) + --destroy + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DESTROY) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c511001608.descon) + e6:SetTarget(c511001608.destg) + e6:SetOperation(c511001608.desop) + c:RegisterEffect(e6) + --control + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(511001608,1)) + e7:SetCategory(CATEGORY_CONTROL) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_DESTROYED) + e7:SetCondition(c511001608.ctcon) + e7:SetTarget(c511001608.cttg) + e7:SetOperation(c511001608.ctop) + c:RegisterEffect(e7) + --battle indestructable + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e8:SetValue(c511001608.indes) + c:RegisterEffect(e8) + if not c511001608.global_check then + c511001608.global_check=true + c511001608[0]=0 + c511001608[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + ge1:SetCode(EVENT_DESTROY) + ge1:SetOperation(c511001608.regop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001608.clear) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511001608.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511001608.xyz_number=93 +function c511001608.chkfilter(c,tp,re) + return c:IsSetCard(0x48) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c511001608.regop(e,tp,eg,ep,ev,re,r,rp) + local g1=eg:Filter(c511001608.chkfilter,nil,tp) + local g2=eg:Filter(c511001608.chkfilter,nil,1-tp) + c511001608[tp]=c511001608[tp]+g1:GetCount() + c511001608[1-tp]=c511001608[1-tp]+g2:GetCount() +end +function c511001608.clear(e,tp,eg,ep,ev,re,r,rp) + c511001608[0]=0 + c511001608[1]=0 +end +function c511001608.filter(c,e,tp) + return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001608.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ct=e:GetHandler():GetOverlayCount() + if chk==0 then return ct>0 and e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct + and Duel.IsExistingMatchingCard(c511001608.filter,tp,LOCATION_EXTRA,0,ct,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,tp,LOCATION_EXTRA) +end +function c511001608.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetOverlayCount() + if Duel.GetLocationCount(tp,LOCATION_MZONE)0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end +function c511001608.ctcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) and rp~=tp and c:GetPreviousControler()==tp and re + and re:GetHandler():IsType(TYPE_MONSTER) +end +function c511001608.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=re:GetHandler() + if re and tc:IsLocation(LOCATION_MZONE) and tc:IsControlerCanBeChanged() then + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,tc,1,0,0) + end +end +function c511001608.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp) + end +end +function c511001608.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,23187256) + Duel.CreateToken(1-tp,23187256) +end +function c511001608.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001609.lua b/script/c511001609.lua new file mode 100644 index 00000000..fd128252 --- /dev/null +++ b/script/c511001609.lua @@ -0,0 +1,63 @@ +--Rank Gazer +function c511001609.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001609.tg) + e1:SetOperation(c511001609.op) + c:RegisterEffect(e1) +end +function c511001609.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local sum=g:GetSum(Card.GetRank)*300 + if chk==0 then return sum>0 end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,sum) +end +function c511001609.op(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local sum=g:GetSum(Card.GetRank)*300 + Duel.Recover(p,sum,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511001609.spcon) + e1:SetOperation(c511001609.spop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001609.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001609.cfilter,1,nil,tp) +end +function c511001609.cfilter(c,tp) + return c:IsType(TYPE_XYZ) and c:GetPreviousControler()==tp and c:IsControler(tp) +end +function c511001609.spfilter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001609.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.GetMatchingGroup(c511001609.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(102380,0)) then + Duel.Hint(HINT_CARD,0,511001609) + local at=eg:Filter(c511001609.cfilter,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + local stg=Group.CreateGroup() + local atc=at:GetFirst() + while atc do + stg:Merge(atc:GetOverlayGroup()) + atc=at:GetNext() + end + if stg:GetCount()>0 then + Duel.SendtoGrave(stg,REASON_RULE) + end + Duel.Overlay(sg:GetFirst(),at) + end +end diff --git a/script/c511001610.lua b/script/c511001610.lua new file mode 100644 index 00000000..16dd60c6 --- /dev/null +++ b/script/c511001610.lua @@ -0,0 +1,30 @@ +--Battle Purification +function c511001610.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001610.target) + e1:SetOperation(c511001610.activate) + c:RegisterEffect(e1) +end +function c511001610.filter(c) + return c:IsFaceup() and c:GetAttack()~=c:GetBaseAttack() +end +function c511001610.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001610.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511001610.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001610.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511001611.lua b/script/c511001611.lua new file mode 100644 index 00000000..9590396a --- /dev/null +++ b/script/c511001611.lua @@ -0,0 +1,60 @@ +--Numbers Evaille +function c511001611.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001611.target) + e1:SetOperation(c511001611.activate) + c:RegisterEffect(e1) +end +function c511001611.numfilter(c) + return c.xyz_number +end +function c511001611.spfilterchk(c,e,tp,ntg) + return c:IsSetCard(0x48) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) + and ntg:CheckWithSumEqual(c511001611.numfilter,c.xyz_number,1,99) +end +function c511001611.numfilter2(c) + return c.xyz_number and c.xyz_number==0 +end +function c511001611.spfilterchk(c,e,tp,ntg) + return c:IsSetCard(0x48) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) + and c.xyz_number and c.xyz_number==0 and ntg:IsExists(c511001611.numfilter2,1,c) +end +function c511001611.afilter(c) + return c:IsSetCard(0x48) and c:IsType(TYPE_XYZ) +end +function c511001611.spfilter(c,e,tp,g,ct) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) + and c.xyz_number==ct and not g:IsContains(c) +end +function c511001611.target(e,tp,eg,ep,ev,re,r,rp,chk) + local nt=Duel.GetMatchingGroup(c511001611.afilter,tp,LOCATION_EXTRA,0,nil) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and (Duel.IsExistingMatchingCard(c511001611.spfilterchk,tp,LOCATION_EXTRA,0,1,nil,e,tp,nt) + or Duel.IsExistingMatchingCard(c511001611.spfilterchk2,tp,LOCATION_EXTRA,0,1,nil,e,tp,nt)) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_EXTRA) +end +function c511001611.activate(e,tp,eg,ep,ev,re,r,rp) + local nt=Duel.GetMatchingGroup(c511001611.afilter,tp,LOCATION_EXTRA,0,nil) + local spg=Duel.GetMatchingGroup(c511001611.spfilterchk,tp,LOCATION_EXTRA,0,nil,e,tp,nt) + local spg2=Duel.GetMatchingGroup(c511001611.spfilterchk2,tp,LOCATION_EXTRA,0,nil,e,tp,nt) + if spg:GetCount()<=0 or spg:GetCount()<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg=nt:Select(tp,1,99,nil) + while not Duel.IsExistingMatchingCard(c511001611.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,sg,sg:GetSum(c511001611.numfilter)) do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + sg=nt:Select(tp,1,99,nil) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001611.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,sg,sg:GetSum(c511001611.numfilter)) + local tc=g:GetFirst() + if tc then + tc:SetMaterial(sg) + Duel.SpecialSummon(tc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + Duel.Overlay(tc,sg) + tc:CompleteProcedure() + end +end diff --git a/script/c511001612.lua b/script/c511001612.lua new file mode 100644 index 00000000..0f564e15 --- /dev/null +++ b/script/c511001612.lua @@ -0,0 +1,46 @@ +--Numbers Exist +function c511001612.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001612.target) + e1:SetOperation(c511001612.activate) + c:RegisterEffect(e1) +end +function c511001612.filter(c) + return c:IsFaceup() and c:IsSetCard(0x48) +end +function c511001612.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001612.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001612.filter,tp,LOCATION_MZONE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(34016756,0)) + local g1=Duel.SelectTarget(tp,c511001612.filter,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(34016756,1)) + local g2=Duel.SelectTarget(tp,c511001612.filter,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) +end +function c511001612.activate(e,tp,eg,ep,ev,re,r,rp) + local hc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if tc==hc then tc=g:GetNext() end + if hc:IsFaceup() and hc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=hc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(0) + if hc:RegisterEffect(e1) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c511001613.lua b/script/c511001613.lua new file mode 100644 index 00000000..9f9300ba --- /dev/null +++ b/script/c511001613.lua @@ -0,0 +1,68 @@ +--Parallel Material +function c511001613.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001613.activate) + c:RegisterEffect(e1) + if not c511001613.global_check then + c511001613.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001613.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001613.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(511001225) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001613.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001614.lua b/script/c511001614.lua new file mode 100644 index 00000000..860f9aac --- /dev/null +++ b/script/c511001614.lua @@ -0,0 +1,51 @@ +--Spirit Xyz Spark +function c511001614.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001614.condition) + e1:SetTarget(c511001614.target) + e1:SetOperation(c511001614.operation) + c:RegisterEffect(e1) +end +function c511001614.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001614.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001614.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001614.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001614.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001614.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001614.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c511001614.drcon) + e2:SetOperation(c511001614.drop) + e2:SetReset(RESET_EVENT+0x1100000) + tc:RegisterEffect(e2) + end +end +function c511001614.drcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and not e:GetHandler():IsReason(REASON_BATTLE) +end +function c511001614.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c511001615.lua b/script/c511001615.lua new file mode 100644 index 00000000..be101e85 --- /dev/null +++ b/script/c511001615.lua @@ -0,0 +1,49 @@ +--Xyz Spiral +function c511001615.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001615.activate) + c:RegisterEffect(e1) +end +function c511001615.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_PIERCE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_XYZ)) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + -- + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c511001615.damcon) + e2:SetOperation(c511001615.damop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c511001615.damcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + return Duel.GetTurnPlayer()==tp and Duel.GetBattleDamage(1-tp)>0 and a:IsType(TYPE_XYZ) + and a:IsHasEffect(EFFECT_PIERCE) and d:IsDefensePos() +end +function c511001615.damop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + Duel.ChangeBattleDamage(1-tp,a:GetRank()*200) + --draw + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetOperation(c511001615.drop) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e1,tp) +end +function c511001615.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c511001616.lua b/script/c511001616.lua new file mode 100644 index 00000000..09934515 --- /dev/null +++ b/script/c511001616.lua @@ -0,0 +1,76 @@ +--Raptor's Ultimate Mace +function c511001616.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(c511001616.target) + e1:SetOperation(c511001616.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1000) + 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(c511001616.eqlimit) + c:RegisterEffect(e3) + --0 damage + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511001616.atkcon) + e4:SetOperation(c511001616.atkop) + c:RegisterEffect(e4) +end +function c511001616.eqlimit(e,c) + return c:IsSetCard(0xba) +end +function c511001616.filter(c) + return c:IsFaceup() and c:IsSetCard(0xba) +end +function c511001616.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511001616.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001616.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001616.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001616.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 c511001616.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eq=c:GetEquipTarget() + local bc=eq:GetBattleTarget() + if not bc or eq:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)>0 then return false end + if eq:IsAttackPos() and bc:IsAttackPos() and eq:GetAttack()<=bc:GetAttack() then return true end + if eq:IsDefensePos() and eq:GetDefense()0 and Duel.SelectYesNo(tp,aux.Stringid(984114,0)) then + Duel.ChangeBattleDamage(eq:GetControler(),0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c511001617.lua b/script/c511001617.lua new file mode 100644 index 00000000..5a8dc732 --- /dev/null +++ b/script/c511001617.lua @@ -0,0 +1,29 @@ +--Planet Alignment +function c511001617.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001617.condition) + e1:SetTarget(c511001617.target) + e1:SetOperation(c511001617.activate) + c:RegisterEffect(e1) +end +function c511001617.cfilter(c) + return c:IsFaceup() and c:IsCode(54493213) +end +function c511001617.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001617.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511001617.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511001617.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + Duel.Damage(1-tp,300,REASON_EFFECT) +end diff --git a/script/c511001618.lua b/script/c511001618.lua new file mode 100644 index 00000000..0816456a --- /dev/null +++ b/script/c511001618.lua @@ -0,0 +1,42 @@ +--Necro Raptors +function c511001618.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001618.condition) + e1:SetTarget(c511001618.target) + e1:SetOperation(c511001618.operation) + c:RegisterEffect(e1) +end +function c511001618.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetBattleDamage(tp)>0 and Duel.GetAttackTarget()==nil +end +function c511001618.filter(c,e,tp) + return c:IsSetCard(0xba) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001618.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001618.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001618.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001618.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001618.operation(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001618.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001618.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511001619.lua b/script/c511001619.lua new file mode 100644 index 00000000..20366ed4 --- /dev/null +++ b/script/c511001619.lua @@ -0,0 +1,81 @@ +--Light Speed Attack +function c511001619.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001619.target) + e1:SetOperation(c511001619.activate) + c:RegisterEffect(e1) + if not c511001619.global_check then + c511001619.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511001619.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511001619.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511001619.filter(c) + return c:IsType(TYPE_QUICKPLAY) and c:CheckActivateEffect(false,false,false)~=nil +end +function c511001619.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c511001619.filter,tp,LOCATION_HAND,0,1,nil) end +end +function c511001619.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.SelectMatchingCard(tp,c511001619.filter,tp,LOCATION_HAND,0,1,1,nil):GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end +end diff --git a/script/c511001620.lua b/script/c511001620.lua new file mode 100644 index 00000000..5e30168f --- /dev/null +++ b/script/c511001620.lua @@ -0,0 +1,17 @@ +--Vigilante Garter +function c511001620.initial_effect(c) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c511001620.op) + c:RegisterEffect(e1) +end +function c511001620.op(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c511001621.lua b/script/c511001621.lua new file mode 100644 index 00000000..c9498a62 --- /dev/null +++ b/script/c511001621.lua @@ -0,0 +1,66 @@ +--Shield Reflector +function c511001621.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(c511001621.target) + e1:SetOperation(c511001621.operation) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetCondition(c511001621.damcon) + e2:SetTarget(c511001621.damtg) + e2:SetOperation(c511001621.damop) + e2:SetRange(LOCATION_SZONE) + 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 c511001621.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 c511001621.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 c511001621.damcon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d==e:GetHandler():GetEquipTarget() +end +function c511001621.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if chk==0 then return true end + local dam=a:GetAttack()/2 + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,a:GetControler(),dam) +end +function c511001621.damop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local dp=Duel.GetAttackTarget():GetControler() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001621.damop2) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,dp) + Duel.Damage(a:GetControler(),a:GetAttack()/2,REASON_EFFECT) +end +function c511001621.damop2(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) +end diff --git a/script/c511001622.lua b/script/c511001622.lua new file mode 100644 index 00000000..225bc9b8 --- /dev/null +++ b/script/c511001622.lua @@ -0,0 +1,51 @@ +--エアーズロック・サンライズ +function c511001622.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001622.cost) + e1:SetTarget(c511001622.target) + e1:SetOperation(c511001622.activate) + c:RegisterEffect(e1) +end +function c511001622.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) + e:SetLabel(g:GetCount()) +end +function c511001622.filter(c,e,tp) + return c:IsRace(RACE_BEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001622.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511001622.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001622.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001622.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001622.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local ct=Duel.GetMatchingGroupCount(Card.IsRace,tp,LOCATION_GRAVE,0,nil,RACE_BEAST+RACE_BEASTWARRIOR+RACE_WINDBEAST+RACE_PLANT) + tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*-200) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + end +end diff --git a/script/c511001623.lua b/script/c511001623.lua new file mode 100644 index 00000000..82889ad0 --- /dev/null +++ b/script/c511001623.lua @@ -0,0 +1,51 @@ +--Triangle Gimmick Box +function c511001623.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001623.target) + e1:SetOperation(c511001623.activate) + c:RegisterEffect(e1) +end +function c511001623.filter(c) + return c:IsType(TYPE_XYZ) and c:IsAbleToRemove() +end +function c511001623.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsType(TYPE_XYZ) +end +function c511001623.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001623.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001623.filter,tp,LOCATION_GRAVE,0,3,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001623.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511001623.filter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001623.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=3 then return end + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) + Duel.BreakEffect() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001623.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001624.lua b/script/c511001624.lua new file mode 100644 index 00000000..2cd5221f --- /dev/null +++ b/script/c511001624.lua @@ -0,0 +1,39 @@ +--Raidraptor - Devil Eagle +function c511001624.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0xba),3,2) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetDescription(aux.Stringid(511001624,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511001624.cost) + e1:SetTarget(c511001624.target) + e1:SetOperation(c511001624.operation) + c:RegisterEffect(e1) +end +function c511001624.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001624.filter(c) + return c:IsFaceup() and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511001624.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001624.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001624.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001624.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) +end +function c511001624.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511001625.lua b/script/c511001625.lua new file mode 100644 index 00000000..8cd7df53 --- /dev/null +++ b/script/c511001625.lua @@ -0,0 +1,35 @@ +--Raidraptor - Necro Vulture +function c511001625.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001625,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001625.cost) + e1:SetTarget(c511001625.tg) + e1:SetOperation(c511001625.op) + c:RegisterEffect(e1) +end +function c511001625.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511001625.tgfilter(c) + return c:IsSetCard(0x95) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511001625.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001625.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001625.tgfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectTarget(tp,c511001625.tgfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c511001625.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511001627.lua b/script/c511001627.lua new file mode 100644 index 00000000..221a8f8e --- /dev/null +++ b/script/c511001627.lua @@ -0,0 +1,32 @@ +--Galaxy Journey +function c511001627.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001627.activate) + c:RegisterEffect(e1) +end +function c511001627.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_REMOVE) + e1:SetCondition(c511001627.spcon) + e1:SetOperation(c511001627.spop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001627.filter(c,tp) + return not c:IsType(TYPE_TOKEN) and c:IsType(TYPE_MONSTER) and c:IsControler(tp) +end +function c511001627.spcon(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001627.filter,nil,tp) + local tc=g:GetFirst() + return g:GetCount()==1 and tc +end +function c511001627.spop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001627.filter,nil,tp) + local tc=g:GetFirst() + Duel.Hint(HINT_CARD,0,511001627) + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511001628.lua b/script/c511001628.lua new file mode 100644 index 00000000..e2f16bec --- /dev/null +++ b/script/c511001628.lua @@ -0,0 +1,42 @@ +--Hyper Galaxy +function c511001628.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001628.cost) + e1:SetTarget(c511001628.target) + e1:SetOperation(c511001628.activate) + c:RegisterEffect(e1) +end +function c511001628.cfilter(c) + return c:IsFaceup() and c:IsAttackAbove(2000) and c:IsReleasable() +end +function c511001628.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001628.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511001628.cfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g1=Duel.SelectMatchingCard(tp,c511001628.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g2=Duel.SelectMatchingCard(tp,c511001628.cfilter,tp,0,LOCATION_MZONE,1,1,nil) + g1:Merge(g2) + Duel.Release(g1,REASON_COST) +end +function c511001628.filter(c,e,tp) + return c:IsCode(93717133) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001628.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001628.filter,tp,0x13,LOCATION_GRAVE,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511001628.activate(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,c511001628.filter,tp,0x13,LOCATION_GRAVE,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001630.lua b/script/c511001630.lua new file mode 100644 index 00000000..55acaae0 --- /dev/null +++ b/script/c511001630.lua @@ -0,0 +1,32 @@ +--Cliff Scream +function c511001630.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001630.condition) + e1:SetTarget(c511001630.target) + e1:SetOperation(c511001630.activate) + c:RegisterEffect(e1) +end +function c511001630.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=1000 +end +function c511001630.desfilter(c) + return c:GetSequence()<5 and c:IsDestructable() +end +function c511001630.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511001630.desfilter,tp,LOCATION_SZONE,LOCATION_SZONE,2,e:GetHandler()) end + local g=Duel.GetMatchingGroup(c511001630.desfilter,tp,LOCATION_SZONE,LOCATION_SZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) +end +function c511001630.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001630.desfilter,tp,LOCATION_SZONE,LOCATION_SZONE,e:GetHandler()) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=g:Select(tp,2,2,nil) + Duel.HintSelection(dg) + Duel.Destroy(dg,REASON_EFFECT) + end +end diff --git a/script/c511001631.lua b/script/c511001631.lua new file mode 100644 index 00000000..4b0a8429 --- /dev/null +++ b/script/c511001631.lua @@ -0,0 +1,46 @@ +--Revelation of Hope +function c511001631.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001631.cost) + e1:SetTarget(c511001631.tg) + e1:SetOperation(c511001631.op) + c:RegisterEffect(e1) +end +function c511001631.cfilter(c,e,tp) + return c:IsRace(RACE_DRAGON) and not c:IsType(TYPE_XYZ) and c:GetLevel()>0 and c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c511001631.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetLevel()) +end +function c511001631.spfilter(c,e,tp,lv) + return c:GetRank()==lv and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511001631.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511001631.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511001631.cfilter,tp,LOCATION_MZONE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001631.cfilter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + local lv=g:GetFirst():GetLevel() + Duel.SendtoGrave(g,REASON_COST) + Duel.SetTargetParam(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001631.op(e,tp,eg,ep,ev,re,r,rp) + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=Duel.SelectMatchingCard(tp,c511001631.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,lv):GetFirst() + if sc then + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c511001632.lua b/script/c511001632.lua new file mode 100644 index 00000000..3eb5df83 --- /dev/null +++ b/script/c511001632.lua @@ -0,0 +1,49 @@ +--オーバーレイ・リジェネレート +function c511001632.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001632.target) + e1:SetOperation(c511001632.activate) + c:RegisterEffect(e1) +end +function c511001632.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001632.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct1=Duel.GetMatchingGroupCount(c511001632.filter,tp,LOCATION_MZONE,0,nil) + local ct2=Duel.GetMatchingGroupCount(c511001632.filter,tp,0,LOCATION_MZONE,nil) + if chk==0 then return ct1+ct2>0 and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=ct1 + and Duel.GetFieldGroupCount(tp,0,LOCATION_DECK)>=ct2 end +end +function c511001632.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c511001632.filter,tp,LOCATION_MZONE,0,nil) + local g2=Duel.GetMatchingGroup(c511001632.filter,tp,0,LOCATION_MZONE,nil) + if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)0 then + local o=Duel.GetDecktopGroup(tp,g1:GetCount()) + Duel.DisableShuffleCheck() + while o:GetCount()>0 and g1:GetCount()>0 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sgo=o:Select(tp,1,1,nil) + o:Sub(sgo) + local sg=g1:Select(tp,1,1,nil) + g1:Sub(sg) + Duel.Overlay(sg:GetFirst(),sgo) + end + end + if g2:GetCount()>0 then + local o=Duel.GetDecktopGroup(1-tp,g2:GetCount()) + Duel.DisableShuffleCheck() + while o:GetCount()>0 and g2:GetCount()>0 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sgo=o:Select(1-tp,1,1,nil) + o:Sub(sgo) + local sg=g2:Select(1-tp,1,1,nil) + g2:Sub(sg) + Duel.Overlay(sg:GetFirst(),sgo) + end + end +end diff --git a/script/c511001633.lua b/script/c511001633.lua new file mode 100644 index 00000000..bacd8f66 --- /dev/null +++ b/script/c511001633.lua @@ -0,0 +1,32 @@ +--Serial Claw +function c511001633.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511001633.condition) + e1:SetTarget(c511001633.target) + e1:SetOperation(c511001633.activate) + c:RegisterEffect(e1) +end +function c511001633.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return eg:GetCount()==1 and tc:IsControler(tp) and bc:IsReason(REASON_BATTLE) +end +function c511001633.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=eg:GetFirst() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) +end +function c511001633.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(500) + tc:RegisterEffect(e1) + Duel.ChainAttack() +end diff --git a/script/c511001634.lua b/script/c511001634.lua new file mode 100644 index 00000000..3f16a7f4 --- /dev/null +++ b/script/c511001634.lua @@ -0,0 +1,35 @@ +--Gadget Recovery +function c511001634.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetDescription(aux.Stringid(511001634,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCountLimit(1) + e2:SetCode(EVENT_BATTLED) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511001634.tg) + e2:SetOperation(c511001634.op) + c:RegisterEffect(e2) +end +function c511001634.filter(c) + return c:IsType(TYPE_EQUIP) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001634.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttackTarget()~=nil + and Duel.IsExistingMatchingCard(c511001634.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,0,1,0,LOCATION_GRAVE) +end +function c511001634.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001634.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001635.lua b/script/c511001635.lua new file mode 100644 index 00000000..0e9ac702 --- /dev/null +++ b/script/c511001635.lua @@ -0,0 +1,33 @@ +--Memory Emerge +function c511001635.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001635.target) + e1:SetOperation(c511001635.activate) + c:RegisterEffect(e1) +end +function c511001635.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + if e:GetHandler():IsLocation(LOCATION_HAND) then + ct=ct-1 + end + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) + and ct>0 end +end +function c511001635.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local atk=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)*200 + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511001636.lua b/script/c511001636.lua new file mode 100644 index 00000000..e7ec5b22 --- /dev/null +++ b/script/c511001636.lua @@ -0,0 +1,31 @@ +--Route Change +function c511001636.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001636.condition) + e1:SetTarget(c511001636.target) + e1:SetOperation(c511001636.activate) + c:RegisterEffect(e1) +end +function c511001636.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001636.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end +end +function c511001636.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + if g:GetCount()>0 then + local a=Duel.GetAttacker() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(a:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + a:RegisterEffect(e1) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end diff --git a/script/c511001637.lua b/script/c511001637.lua new file mode 100644 index 00000000..62b2c749 --- /dev/null +++ b/script/c511001637.lua @@ -0,0 +1,66 @@ +--Hot Red Dragon Archfiend Belial +function c511001637.initial_effect(c) + --synchro summon + c:EnableReviveLimit() + aux.AddSynchroProcedure2(c,nil,aux.NonTuner(nil)) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001637,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511001637.spcon) + e2:SetTarget(c511001637.sptg) + e2:SetOperation(c511001637.spop) + c:RegisterEffect(e2) +end +function c511001637.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511001637.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:GetLevel()>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + and Duel.IsExistingMatchingCard(c511001637.filter2,tp,LOCATION_DECK,0,1,nil,c:GetLevel(),e,tp) +end +function c511001637.filter2(c,lv,e,tp) + return c:IsType(TYPE_TUNER) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001637.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c511001637.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE+LOCATION_DECK) +end +function c511001637.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c511001637.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g1:GetFirst() + if tc then + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c511001637.filter2,tp,LOCATION_DECK,0,1,1,nil,tc:GetLevel(),e,tp) + if g2:GetCount()>0 then + Duel.SpecialSummonStep(g2:GetFirst(),0,tp,tp,false,false,POS_FACEUP) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + g2:GetFirst():RegisterEffect(e3,true) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetReset(RESET_EVENT+0x1fe0000) + g2:GetFirst():RegisterEffect(e4,true) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001639.lua b/script/c511001639.lua new file mode 100644 index 00000000..aff6a45b --- /dev/null +++ b/script/c511001639.lua @@ -0,0 +1,35 @@ +--Junk Changer +function c511001639.initial_effect(c) + --shift lv + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001639,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511001639.condition) + e1:SetOperation(c511001639.operation) + c:RegisterEffect(e1) +end +function c511001639.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x43) +end +function c511001639.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001639.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c511001639.operation(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,aux.Stringid(76922029,0)) + local op=Duel.SelectOption(tp,aux.Stringid(82693917,0),aux.Stringid(17643265,0)) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1ff0000) + if op==0 then + e1:SetValue(1) + else + e1:SetValue(-1) + end + c:RegisterEffect(e1) + end +end diff --git a/script/c511001640.lua b/script/c511001640.lua new file mode 100644 index 00000000..d2a5e5a1 --- /dev/null +++ b/script/c511001640.lua @@ -0,0 +1,225 @@ +--Accel Synchro +function c511001640.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + --synchro effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001640.sctg) + e1:SetOperation(c511001640.scop) + c:RegisterEffect(e1) + if not c511001640.global_check then + c511001640.global_check=true + --double tuner + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(c511001640.op) + Duel.RegisterEffect(ge1,0) + end +end +function c511001640.op(e,tp,eg,ep,ev,re,r,rp) + --Double Tuners + if c62242678 and not c62242678.dobtun then --Hot Red Dragon Archfiend King Calamity + local mt=c62242678 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsAttribute(ATTRIBUTE_DARK) and mc:IsRace(RACE_DRAGON) + and mc:IsType(TYPE_SYNCHRO) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end + if c511001603 and not c511001603.dobtun then --Hot Red Dragon Archfiend King Calamity (Anime) + local mt=c511001603 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsType(TYPE_SYNCHRO) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end + if c97489701 and not c97489701.dobtun then --Red Nova Dragon + local mt=c97489701 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsCode(70902743) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end + if c16172067 and not c16172067.dobtun then --Red Dragon Archfiend Tyrant + local mt=c16172067 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return true end + mt.minntct=1 + mt.maxntct=99 + mt.sync=true + mt.dobtun=true + end + if c93157004 and not c93157004.dobtun then --Vylon Omega + local mt=c93157004 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsSetCard(0x30) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end +end +function c511001640.ffilter(c,syncard,tp) + return c:GetSynchroLevel(syncard)%2==1 or (not c:IsCanBeSynchroMaterial(syncard) and c:IsControler(tp)) +end +function c511001640.filter(c,e,tp) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511001640.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c511001640.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + if not c:IsType(TYPE_SYNCHRO) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,true) + or not mt.sync then return false end + if nontuner:IsExists(c511001640.ffilter,1,nil,c,tp) + or tuner:IsExists(c511001640.ffilter,1,nil,c,tp) then return false end + if tuner:GetCount()==1 then + if c:IsSetCard(0x301) then + return nontuner:IsExists(c511001640.lvfilter2,1,nil,c,tuner) and nontuner:GetCount()==1 + else + return tuner:IsExists(c511001640.lvfilter,1,nil,c,nontuner) + end + elseif tuner:GetCount()==2 then + return tuner:IsExists(c511001640.dtfilter1,1,nil,c,tuner,nontuner) + else + return false + end +end +function c511001640.dtfilter1(c,syncard,tuner,nontuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=syncard:GetLevel() + local tlv=c:GetSynchroLevel(syncard)/2 + if lv-tlv<=0 then return false end + return tuner:IsExists(c511001640.dtfilter2,1,c,syncard,lv-tlv,nontuner,c) +end +function c511001640.dtfilter2(c,syncard,lv,nontuner,tuner1) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local tlv=c:GetSynchroLevel(syncard)/2 + if lv-tlv<=0 then return false end + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,tuner1) + nt=nt:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + if nt:GetCount()~=nontuner:GetCount() then return false end + return mt.minntct and mt.maxntct and mt.minntct<=nt:GetCount() and mt.maxntct>=nt:GetCount() + and nt:CheckWithSumEqual(c511001640.lvfilterx,lv-tlv,nt:GetCount(),nt:GetCount(),syncard) +end +function c511001640.lvfilterx(c,syncard) + return c:GetSynchroLevel(syncard)/2 +end +function c511001640.lvfilter(c,syncard,nontuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard)/2 + local slv=syncard:GetLevel() + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + if nt:GetCount()~=nontuner:GetCount() then return false end + return mt.minntct and mt.maxntct and mt.minntct<=nt:GetCount() and mt.maxntct>=nt:GetCount() + and nt:CheckWithSumEqual(c511001640.lvfilterx,slv-lv,nt:GetCount(),nt:GetCount(),syncard) +end +function c511001640.lvfilter2(c,syncard,tuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard)/2 + local slv=syncard:GetLevel() + local nt=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(c511001640.lvfilterx,lv+slv,1,1,syncard) +end +function c511001640.matfilter1(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_SYNCHRO) and c:IsType(TYPE_TUNER) and c:IsFaceup() + and mt.tuner_filter and mt.tuner_filter(c) +end +function c511001640.matfilter2(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_SYNCHRO) and not c:IsType(TYPE_TUNER) and c:IsFaceup() + and mt.nontuner_filter and mt.nontuner_filter(c) +end +function c511001640.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001640.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001640.scop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=-1 then return end + local g=Duel.GetMatchingGroup(c511001640.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=g:Select(tp,1,1,nil):GetFirst() + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511001640.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tc) + local nontuner=Duel.GetMatchingGroup(c511001640.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tc) + tuner:Merge(nontuner) + tc:SetMaterial(tuner) + Duel.SendtoGrave(tuner,REASON_EFFECT+REASON_MATERIAL+REASON_SYNCHRO) + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,true,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511001641.lua b/script/c511001641.lua new file mode 100644 index 00000000..0b09940a --- /dev/null +++ b/script/c511001641.lua @@ -0,0 +1,28 @@ +--Scrap-Iron Welding +function c511001641.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001641.target) + e1:SetOperation(c511001641.activate) + c:RegisterEffect(e1) +end +function c511001641.filter(c,e,tp) + return c:IsSetCard(0x43) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001641.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511001641.filter,tp,LOCATION_HAND,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c511001641.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511001641.filter,tp,LOCATION_HAND,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001642.lua b/script/c511001642.lua new file mode 100644 index 00000000..419f574a --- /dev/null +++ b/script/c511001642.lua @@ -0,0 +1,47 @@ +--Synchro Alliance +function c511001642.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001642.tg) + e1:SetOperation(c511001642.op) + c:RegisterEffect(e1) +end +function c511001642.filter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) + and Duel.IsExistingMatchingCard(c511001642.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c) +end +function c511001642.filter2(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511001642.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001642.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001642.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + Duel.SelectTarget(tp,c511001642.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) +end +function c511001642.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(c511001642.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,tc) + local tcg=g:GetFirst() + while tcg do + tcg:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000,1) + tcg=g:GetNext() + end + g=Duel.GetMatchingGroup(c511001642.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + tcg=g:GetFirst() + while tcg do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(Duel.GetMatchingGroupCount(Card.IsType,tcg:GetControler(),LOCATION_GRAVE,0,nil,TYPE_SYNCHRO)*600) + tcg:RegisterEffect(e1) + tcg=g:GetNext() + end + end +end diff --git a/script/c511001643.lua b/script/c511001643.lua new file mode 100644 index 00000000..1962e3af --- /dev/null +++ b/script/c511001643.lua @@ -0,0 +1,40 @@ +--Vigilante Zeni +function c511001643.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(511001643,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001643.cost) + e1:SetTarget(c511001643.target) + e1:SetOperation(c511001643.operation) + c:RegisterEffect(e1) +end +function c511001643.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetAttack()>0 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511001643.spfilter(c,e,tp) + return c:IsLevelBelow(3) and (c:IsCode(511001643) or c:IsCode(511001620)) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001643.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001643.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001643.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,c511001643.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 diff --git a/script/c511001644.lua b/script/c511001644.lua new file mode 100644 index 00000000..a6649fbf --- /dev/null +++ b/script/c511001644.lua @@ -0,0 +1,101 @@ +--機皇神龍アステリスク +function c511001644.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001644.spcon) + c:RegisterEffect(e1) + --attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511001644.atkval) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(38522377,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511001644.damcon) + e3:SetTarget(c511001644.damtg) + e3:SetOperation(c511001644.damop) + c:RegisterEffect(e3) + --cannot be target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetValue(c511001644.tg) + c:RegisterEffect(e4) + --destroy replace + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_DESTROY_REPLACE) + e5:SetTarget(c511001644.desreptg) + c:RegisterEffect(e5) +end +function c511001644.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0x13) +end +function c511001644.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001644.spfilter,c:GetControler(),LOCATION_MZONE,0,3,nil) +end +function c511001644.atkfilter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsRace(RACE_MACHINE) +end +function c511001644.atkval(e,c) + local g=Duel.GetMatchingGroup(c511001644.atkfilter,c:GetControler(),LOCATION_MZONE,0,c) + return g:GetSum(Card.GetAttack) +end +function c511001644.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsType,1,nil,TYPE_SYNCHRO) +end +function c511001644.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local t1=false + local t2=false + local tc=eg:GetFirst() + while tc do + if tc:IsType(TYPE_SYNCHRO) then + if tc:GetSummonPlayer()==tp then t1=true else t2=true end + end + tc=eg:GetNext() + end + if t1 and not t2 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) + elseif not t1 and t2 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) + else Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,1000) end +end +function c511001644.damop(e,tp,eg,ep,ev,re,r,rp) + local ex,g,gc,dp,dv=Duel.GetOperationInfo(0,CATEGORY_DAMAGE) + if dp~=PLAYER_ALL then Duel.Damage(dp,1000,REASON_EFFECT) + else + Duel.Damage(tp,1000,REASON_EFFECT) + Duel.Damage(1-tp,1000,REASON_EFFECT) + end +end +function c511001644.tg(e,c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c~=e:GetHandler() +end +function c511001644.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) + and Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_MZONE,0,1,e:GetHandler(),RACE_MACHINE) end + if Duel.SelectYesNo(tp,aux.Stringid(67511500,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsRace,tp,LOCATION_MZONE,0,1,1,e:GetHandler(),RACE_MACHINE) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REPLACE) + return true + else return false end +end diff --git a/script/c511001645.lua b/script/c511001645.lua new file mode 100644 index 00000000..1f9cbd4d --- /dev/null +++ b/script/c511001645.lua @@ -0,0 +1,135 @@ +--E・HERO ゴッド・ネオス +function c511001645.initial_effect(c) + --fusion material + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511001645.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511001645.spcon) + e2:SetOperation(c511001645.spop) + c:RegisterEffect(e2) + --copy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(31111109,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511001645.copycost) + e3:SetOperation(c511001645.copyop) + c:RegisterEffect(e3) + --atkup + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c511001645.atkval) + c:RegisterEffect(e4) +end +function c511001645.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c511001645.spfilter(c) + return c:IsAbleToDeckOrExtraAsCost() and c:IsCode(89943723) +end +function c511001645.spfilter2(c) + return c:IsAbleToDeckOrExtraAsCost() and c:IsSetCard(0x1f) +end +function c511001645.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<0 then return false end + local g=Duel.GetMatchingGroup(c511001645.spfilter,tp,LOCATION_ONFIELD,0,nil) + local nsg=Duel.GetMatchingGroup(c511001645.spfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) + if g:GetCount()==0 or nsg:GetClassCount(Card.GetCode)<=5 then return false end + if ft>0 then return true end + local f1=g:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f2=nsg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + if ft==-2 then return f1+f2==3 + elseif ft==-1 then return f1+f2>=2 + else return f1+f2>=1 end +end +function c511001645.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetMatchingGroup(c511001645.spfilter,tp,LOCATION_ONFIELD,0,nil) + local nsg=Duel.GetMatchingGroup(c511001645.spfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) + g:Merge(nsg) + local rg=Group.CreateGroup() + local tc=nil + for i=1,7 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if i==1 then + tc=g:FilterSelect(tp,Card.IsCode,1,1,nil,89943723):GetFirst() + elseif ft<=0 then + tc=g:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g:Select(tp,1,1,nil):GetFirst() + end + if tc then + rg:AddCard(tc) + g:Remove(Card.IsCode,nil,tc:GetCode()) + end + rg:AddCard(tc) + g:Remove(Card.IsCode,nil,tc:GetCode()) + ft=ft+1 + end + local cg=rg:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(rg,nil,2,REASON_COST) +end +function c511001645.copyfilter(c) + return c:IsSetCard(0x1f) and c:IsType(TYPE_MONSTER) + and not c:IsHasEffect(EFFECT_FORBIDDEN) and c:IsAbleToRemoveAsCost() +end +function c511001645.copycost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001645.copyfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001645.copyfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + g:GetFirst():RegisterFlagEffect(511001645,RESET_EVENT+0x1fe0000,0,1) + e:SetLabelObject(g:GetFirst()) +end +function c511001645.copyop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc then + local code=tc:GetOriginalCode() + local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(31111109,1)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetLabel(cid) + e1:SetOperation(c511001645.rstop) + c:RegisterEffect(e1) + end +end +function c511001645.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=e:GetLabel() + c:ResetEffect(cid,RESET_COPY) + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c511001645.atkfilter(c) + return c:GetFlagEffect(511001645)>0 +end +function c511001645.atkval(e,c) + return Duel.GetMatchingGroupCount(c511001645.atkfilter,c:GetControler(),LOCATION_REMOVED,0,nil)*500 +end diff --git a/script/c511001646.lua b/script/c511001646.lua new file mode 100644 index 00000000..818c95dd --- /dev/null +++ b/script/c511001646.lua @@ -0,0 +1,101 @@ +--相生の魔術師 +function c511001646.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --change lv + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c511001646.lvtg) + e2:SetOperation(c511001646.lvop) + c:RegisterEffect(e2) + --atk + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_ATKCHANGE) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetRange(LOCATION_MZONE) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetCountLimit(1) + e6:SetTarget(c511001646.atktg) + e6:SetOperation(c511001646.atkop) + c:RegisterEffect(e6) +end +function c511001646.filter(c,tp) + if not c:IsFaceup() then return false end + if c:GetLevel()>0 then + return Duel.IsExistingMatchingCard(c511001646.lvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,c:GetLevel()) + elseif c:GetRank()>0 and c:IsHasEffect(511002096) then + return Duel.IsExistingMatchingCard(c511001646.lvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,c:GetRank()) + end + return false +end +function c511001646.lvfilter(c,lv) + if c:GetLevel()>0 then + return c:IsFaceup() and c:GetLevel()~=lv + elseif c:GetRank()>0 and c:IsHasEffect(EFFECT_XYZ_LEVEL) then + return c:IsFaceup() and c:GetRank()~=lv + end + return false +end +function c511001646.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001646.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001646.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001646.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) +end +function c511001646.lvop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g + if tc:GetLevel()>0 then + g=Duel.SelectMatchingCard(tp,c511001646.lvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tc:GetLevel()) + else + g=Duel.SelectMatchingCard(tp,c511001646.lvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tc:GetRank()) + end + local tc2=g:GetFirst() + if tc2 then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + if tc:GetLevel()>0 then + e1:SetCode(EFFECT_CHANGE_LEVEL) + else + e1:SetCode(EFFECT_CHANGE_RANK) + end + if tc2:GetLevel()>0 then + e1:SetValue(tc2:GetLevel()) + else + e1:SetValue(tc2:GetRank()) + end + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end +end +function c511001646.atkfilter(c,atk) + return c:IsFaceup() and c:GetAttack()~=atk +end +function c511001646.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + local atk=c:GetAttack() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc~=c and c511001646.atkfilter(chkc,atk) end + if chk==0 then return Duel.IsExistingTarget(c511001646.atkfilter,tp,LOCATION_MZONE,0,1,c,atk) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001646.atkfilter,tp,LOCATION_MZONE,0,1,1,c,atk) +end +function c511001646.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + local atk=tc:GetAttack() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001647.lua b/script/c511001647.lua new file mode 100644 index 00000000..a3492318 --- /dev/null +++ b/script/c511001647.lua @@ -0,0 +1,8 @@ +--Archeonys +function c511001647.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e1) +end diff --git a/script/c511001648.lua b/script/c511001648.lua new file mode 100644 index 00000000..dd29e4de --- /dev/null +++ b/script/c511001648.lua @@ -0,0 +1,63 @@ +--Dyna Tank +function c511001648.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,511001649,aux.FilterBoolFunction(Card.IsRace,RACE_DINOSAUR),1,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511001648.splimit) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(511001649) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511001648.atkop) + c:RegisterEffect(e2) + --switch + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001648,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_F) + e3:SetCode(EVENT_CHAINING) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511001648.tgcon) + e3:SetOperation(c511001648.tgop) + c:RegisterEffect(e3) +end +function c511001648.splimit(e,se,sp,st) + return se:GetHandler():IsCode(511001649) +end +function c511001648.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(ev) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c511001648.tgcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if rp==tp or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return eg and g:IsContains(c) +end +function c511001648.filter(c,re,rp,tf) + return tf(re,rp,nil,nil,nil,nil,nil,nil,0,c) +end +function c511001648.tgop(e,tp,eg,ep,ev,re,r,rp) + local tf=re:GetTarget() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511001648.filter,tp,0,LOCATION_MZONE,1,1,nil,re,rp,tf) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.ChangeTargetCard(ev,g) + end +end diff --git a/script/c511001649.lua b/script/c511001649.lua new file mode 100644 index 00000000..076d5faf --- /dev/null +++ b/script/c511001649.lua @@ -0,0 +1,45 @@ +--Dyna Base +function c511001649.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001649,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001649.spcost) + e1:SetTarget(c511001649.sptg) + e1:SetOperation(c511001649.spop) + c:RegisterEffect(e1) +end +function c511001649.cfilter(c) + return c:IsRace(RACE_DINOSAUR) and c:IsReleasable() +end +function c511001649.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() + and Duel.IsExistingMatchingCard(c511001649.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,c511001649.cfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + g:AddCard(e:GetHandler()) + Duel.Release(g,REASON_COST) + e:SetLabelObject(tc) +end +function c511001649.filter(c,e,tp) + return c:IsCode(511001648) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c511001649.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001649.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001649.spop(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,c511001649.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + Duel.RaiseSingleEvent(tc,511001649,e,REASON_EFFECT,tp,tp,e:GetLabelObject():GetTextAttack()) + end +end diff --git a/script/c511001650.lua b/script/c511001650.lua new file mode 100644 index 00000000..1320b49f --- /dev/null +++ b/script/c511001650.lua @@ -0,0 +1,62 @@ +--Orichalcos Sword of Sealing +function c511001650.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:SetCost(c511001650.cost) + e1:SetTarget(c511001650.target) + e1:SetOperation(c511001650.operation) + c:RegisterEffect(e1) + --negate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e3) + --equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) + if not c511001650.global_check then + c511001650.global_check=true + --register + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511001650.op) + Duel.RegisterEffect(ge1,0) + end +end +function c511001650.cfilter(c) + return c:GetFlagEffect(511001650)>0 and c:IsDiscardable() +end +function c511001650.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001650.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c511001650.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511001650.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 c511001650.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 c511001650.op(e,tp,eg,ep,ev,re,r,rp) + local g=eg + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511001650,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=g:GetNext() + end +end diff --git a/script/c511001651.lua b/script/c511001651.lua new file mode 100644 index 00000000..f98da80f --- /dev/null +++ b/script/c511001651.lua @@ -0,0 +1,26 @@ +--死者転生 +function c511001651.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001651.target) + e1:SetOperation(c511001651.activate) + c:RegisterEffect(e1) +end +function c511001651.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c511001651.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001651.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,0,LOCATION_GRAVE) +end +function c511001651.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c511001651.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + end +end diff --git a/script/c511001652.lua b/script/c511001652.lua new file mode 100644 index 00000000..3a7c3cce --- /dev/null +++ b/script/c511001652.lua @@ -0,0 +1,119 @@ +--E・HERO カオス・ネオス +function c511001652.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,89943723,43237273,17732278,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511001652.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511001652.spcon) + e2:SetOperation(c511001652.spop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(17032740,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511001652.retcon1) + e3:SetTarget(c511001652.rettg) + e3:SetOperation(c511001652.retop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(0) + e4:SetCondition(c511001652.retcon2) + c:RegisterEffect(e4) + -- + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + e5:SetOperation(c511001652.sprop) + c:RegisterEffect(e5) +end +function c511001652.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c511001652.spfilter(c,code) + return c:IsAbleToDeckOrExtraAsCost() and c:GetCode()==code +end +function c511001652.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + local g1=Duel.GetMatchingGroup(c511001652.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c511001652.spfilter,tp,LOCATION_ONFIELD,0,nil,43237273) + local g3=Duel.GetMatchingGroup(c511001652.spfilter,tp,LOCATION_ONFIELD,0,nil,17732278) + if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f3=g3:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + if ft==-2 then return f1+f2+f3==3 + elseif ft==-1 then return f1+f2+f3>=2 + else return f1+f2+f3>=1 end +end +function c511001652.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c511001652.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c511001652.spfilter,tp,LOCATION_ONFIELD,0,nil,43237273) + local g3=Duel.GetMatchingGroup(c511001652.spfilter,tp,LOCATION_ONFIELD,0,nil,17732278) + g1:Merge(g2) + g1:Merge(g3) + local g=Group.CreateGroup() + local tc=nil + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + g1:Remove(Card.IsCode,nil,tc:GetCode()) + ft=ft+1 + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c511001652.retcon1(e,tp,eg,ep,ev,re,r,rp,chk) + return not e:GetHandler():IsHasEffect(42015635) +end +function c511001652.retcon2(e,tp,eg,ep,ev,re,r,rp,chk) + return e:GetHandler():IsHasEffect(42015635) +end +function c511001652.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtra() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c511001652.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) +end +function c511001652.sprop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c511001653.lua b/script/c511001653.lua new file mode 100644 index 00000000..7ee35e39 --- /dev/null +++ b/script/c511001653.lua @@ -0,0 +1,32 @@ +--Red Supremacy +function c511001653.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001653.cost) + e1:SetTarget(c511001653.target) + e1:SetOperation(c511001653.activate) + c:RegisterEffect(e1) +end +function c511001653.cfilter(c) + return c:IsCode(70902743) and c:IsAbleToRemoveAsCost() +end +function c511001653.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001653.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001653.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001653.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001653.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + tc:CopyEffect(70902743,RESET_EVENT+0x1fe0000,1) + end +end diff --git a/script/c511001654.lua b/script/c511001654.lua new file mode 100644 index 00000000..397a4afc --- /dev/null +++ b/script/c511001654.lua @@ -0,0 +1,44 @@ +--Battle Tuning +function c511001654.initial_effect(c) + --synchro effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) + e1:SetCondition(c511001654.sccon) + e1:SetTarget(c511001654.sctg) + e1:SetOperation(c511001654.scop) + c:RegisterEffect(e1) +end +function c511001654.sccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511001654.spfilter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,false) + and Duel.IsExistingMatchingCard(c511001654.filter,tp,LOCATION_MZONE,0,1,nil,c,c:GetLevel()) +end +function c511001654.filter(c,sync,lv) + return c:IsFaceup() and c:GetSynchroLevel(sync)==lv and c:IsType(TYPE_TUNER) + and c:IsCanBeSynchroMaterial(sync) +end +function c511001654.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001654.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001654.scop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=-1 then return end + local g=Duel.GetMatchingGroup(c511001654.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=g:Select(tp,1,1,nil):GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mg=Duel.SelectMatchingCard(tp,c511001654.filter,tp,LOCATION_MZONE,0,1,1,nil,sc,sc:GetLevel()) + sc:SetMaterial(mg) + Duel.SendtoGrave(mg,REASON_MATERIAL+REASON_SYNCHRO) + Duel.BreakEffect() + Duel.SpecialSummon(sc,SUMMON_TYPE_SYNCHRO,tp,tp,true,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c511001655.lua b/script/c511001655.lua new file mode 100644 index 00000000..ea5da806 --- /dev/null +++ b/script/c511001655.lua @@ -0,0 +1,62 @@ +--Gagaga Escape +function c511001655.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BECOME_TARGET) + e1:SetCondition(c511001655.condition) + e1:SetTarget(c511001655.target) + e1:SetOperation(c511001655.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001655,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCost(c511001655.cost) + e2:SetTarget(c511001655.tg) + e2:SetOperation(c511001655.op) + c:RegisterEffect(e2) +end +function c511001655.filter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0x54) +end +function c511001655.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsActiveType(TYPE_XYZ) and eg:IsExists(c511001655.filter,1,nil,tp) and Duel.IsChainDisablable(ev) +end +function c511001655.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511001655.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end +function c511001655.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511001655.posfilter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsSetCard(0x54) +end +function c511001655.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c511001655.posfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001655.posfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001655.posfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001655.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001656.lua b/script/c511001656.lua new file mode 100644 index 00000000..ea3bee55 --- /dev/null +++ b/script/c511001656.lua @@ -0,0 +1,36 @@ +--Guts Guard +function c511001656.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59560625,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001656.condition) + e1:SetTarget(c511001656.target) + e1:SetOperation(c511001656.activate) + c:RegisterEffect(e1) +end +function c511001656.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at and at:IsControler(tp) +end +function c511001656.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) +end +function c511001656.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + --Duel.ChangeAttackTarget(tc) + Duel.CalculateDamage(Duel.GetAttacker(),tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001657.lua b/script/c511001657.lua new file mode 100644 index 00000000..28bbaa8e --- /dev/null +++ b/script/c511001657.lua @@ -0,0 +1,29 @@ +--Revenge Attack +function c511001657.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c511001657.condition) + e1:SetOperation(c511001657.activate) + c:RegisterEffect(e1) +end +function c511001657.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return a:IsControler(tp) and at and at:IsControler(1-tp) and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) + and a:IsOnField() and a:IsRelateToBattle() +end +function c511001657.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if a:IsRelateToBattle() then + Duel.ChainAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1000) + a:RegisterEffect(e1) + end +end diff --git a/script/c511001658.lua b/script/c511001658.lua new file mode 100644 index 00000000..b4442306 --- /dev/null +++ b/script/c511001658.lua @@ -0,0 +1,87 @@ +--真閃珖竜 スターダスト・クロニクル +function c511001658.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),1) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetLabel(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c511001658.valcheck) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --leave replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EFFECT_SEND_REPLACE) + e3:SetTarget(c511001658.reptg) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) + --reset + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ADJUST) + e4:SetCountLimit(1) + e4:SetRange(LOCATION_MZONE) + e4:SetOperation(c511001658.reset) + e4:SetLabelObject(e1) + c:RegisterEffect(e4) + --Special Summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(35952884,1)) + e5:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetCode(EVENT_TO_GRAVE) + e5:SetCondition(c511001658.sumcon) + e5:SetTarget(c511001658.sumtg) + e5:SetOperation(c511001658.sumop) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EVENT_REMOVE) + c:RegisterEffect(e6) + local e7=e5:Clone() + e7:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e7) +end +function c511001658.valcheck(e,c) + local ct=c:GetMaterialCount() + e:GetLabelObject():SetLabel(ct) +end +function c511001658.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ct=e:GetLabelObject():GetLabel() + if chk==0 then return ct>0 end + c:SetTurnCounter(ct-1) + e:GetLabelObject():SetLabel(ct-1) + return true +end +function c511001658.reset(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ct=c:GetMaterialCount() + c:SetTurnCounter(ct) + e:GetLabelObject():SetLabel(ct) +end +function c511001658.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511001658.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,nil) +end +function c511001658.sumop(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 tc=Duel.CreateToken(tp,83994433) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001659.lua b/script/c511001659.lua new file mode 100644 index 00000000..9b3fe5dc --- /dev/null +++ b/script/c511001659.lua @@ -0,0 +1,140 @@ +--Number C9: Chaos Dyson Sphere (anime) +function c511001659.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,10,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001659.rankupregcon) + e1:SetOperation(c511001659.rankupregop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32559361,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001659.damtg) + e2:SetOperation(c511001659.damop) + c:RegisterEffect(e2) + --damage2 + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(32559361,2)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511001659.damcost) + e3:SetTarget(c511001659.damtg2) + e3:SetOperation(c511001659.damop2) + c:RegisterEffect(e3) + --battle indestructable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e5:SetValue(c511001659.indes) + c:RegisterEffect(e5) + if not c511001659.global_check then + c511001659.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001659.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001659.xyz_number=9 +function c511001659.rumfilter(c) + return c:IsCode(1992816) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001659.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001659.rumfilter,1,nil) +end +function c511001659.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --material + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(32559361,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLED) + e1:SetTarget(c511001659.target) + e1:SetOperation(c511001659.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --atk limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetCondition(c511001659.atcon) + e4:SetValue(c511001659.atlimit) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) +end +function c511001659.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + if chk==0 then return tc and c:IsType(TYPE_XYZ) and not tc:IsType(TYPE_TOKEN) and tc:IsAbleToChangeControler() + and not c:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsOnField() end +end +function c511001659.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToBattle() and not tc:IsImmuneToEffect(e) then + local og=tc:GetOverlayGroup() + if og:GetCount()>0 then + Duel.SendtoGrave(og,REASON_RULE) + end + Duel.Overlay(c,Group.FromCards(tc)) + end +end +function c511001659.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetOverlayCount()>0 end + local ct=e:GetHandler():GetOverlayCount() + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*500) +end +function c511001659.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=e:GetHandler():GetOverlayCount() + Duel.Damage(p,ct*500,REASON_EFFECT) +end +function c511001659.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + local g=e:GetHandler():GetOverlayGroup() + local ct=g:GetCount() + Duel.SendtoGrave(g,REASON_COST) + e:SetLabel(ct) +end +function c511001659.damtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=e:GetLabel() + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*800) +end +function c511001659.damop2(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=e:GetLabel() + Duel.Damage(p,ct*800,REASON_EFFECT) +end +function c511001659.atcon(e) + return e:GetHandler():GetOverlayCount()>0 +end +function c511001659.atlimit(e,c) + return c~=e:GetHandler() +end +function c511001659.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,32559361) + Duel.CreateToken(1-tp,32559361) +end +function c511001659.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001660.lua b/script/c511001660.lua new file mode 100644 index 00000000..12c49ee1 --- /dev/null +++ b/script/c511001660.lua @@ -0,0 +1,39 @@ +--Chaos Alliance +function c511001660.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(c511001660.condition) + e1:SetTarget(c511001660.target) + e1:SetOperation(c511001660.activate) + c:RegisterEffect(e1) +end +function c511001660.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001660.filter(c,atk) + return (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) and c:IsFaceup() and c:GetAttack()0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001661.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001662.lua b/script/c511001662.lua new file mode 100644 index 00000000..7007cc10 --- /dev/null +++ b/script/c511001662.lua @@ -0,0 +1,74 @@ +--Number Lockdown +function c511001662.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,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001662.target) + e1:SetOperation(c511001662.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(123709,1)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCondition(c511001662.descon) + e2:SetTarget(c511001662.destg) + e2:SetOperation(c511001662.desop) + c:RegisterEffect(e2) +end +function c511001662.filter(c) + return c:IsFaceup() and c:IsSetCard(0x48) +end +function c511001662.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001662.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001662.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001662.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511001662.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() 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_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001662.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + tc:RegisterEffect(e2,true) + end +end +function c511001662.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001662.descon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) +end +function c511001662.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if chk==0 then return tc end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Group.FromCards(c,tc),2,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()) +end +function c511001662.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + local atk=tc:GetAttack() + if Duel.Destroy(Group.FromCards(c,tc),REASON_EFFECT)>1 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c511001663.lua b/script/c511001663.lua new file mode 100644 index 00000000..1286e12d --- /dev/null +++ b/script/c511001663.lua @@ -0,0 +1,52 @@ +--Heraldic Beast Leo +function c511001663.initial_effect(c) + c:EnableUnsummonable() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(511001663,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c511001663.cost) + e1:SetTarget(c511001663.tg) + e1:SetOperation(c511001663.op) + c:RegisterEffect(e1) +end +function c511001663.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511001663.filter(c) + return c:IsFaceup() and c:GetAttack()~=c:GetBaseAttack() +end +function c511001663.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511001663.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c511001663.filter,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(34016756,0)) + local g2=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511001663.op(e,tp,eg,ep,ev,re,r,rp) + local hc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if tc==hc then tc=g:GetNext() end + if hc:IsFaceup() and hc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=0 + if hc:GetBaseAttack()>hc:GetAttack() then + atk=hc:GetBaseAttack()-hc:GetAttack() + else + atk=hc:GetAttack()-hc:GetBaseAttack() + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-atk) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001664.lua b/script/c511001664.lua new file mode 100644 index 00000000..a211c4c8 --- /dev/null +++ b/script/c511001664.lua @@ -0,0 +1,30 @@ +--Numeron Wall +function c511001664.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98777036,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c511001664.sumcon) + e1:SetTarget(c511001664.sumtg) + e1:SetOperation(c511001664.sumop) + c:RegisterEffect(e1) +end +function c511001664.sumcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_BATTLE)>0 and ep==tp +end +function c511001664.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001664.sumop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.BreakEffect() + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511001665.lua b/script/c511001665.lua new file mode 100644 index 00000000..6cc929fa --- /dev/null +++ b/script/c511001665.lua @@ -0,0 +1,90 @@ +--Numeron Spell Revision +function c511001665.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001665.condition) + e1:SetCost(c511001665.cost) + e1:SetTarget(c511001665.target) + e1:SetOperation(c511001665.activate) + c:RegisterEffect(e1) +end +function c511001665.cfilter(c) + return c:GetSequence()<5 +end +function c511001665.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and not Duel.IsExistingMatchingCard(c511001665.cfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) +end +function c511001665.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsChainNegatable(ev) and Duel.IsChainDisablable(ev) end + --Duel.NegateActivation(ev) + --Duel.NegateEffect(ev) +end +function c511001665.filter(c,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return (Duel.GetLocationCount(1-tp,LOCATION_SZONE)>0 or c:IsType(TYPE_FIELD)) and c:IsType(TYPE_SPELL) + and (not condition or condition(te,1-tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,1-tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,1-tp,eg,ep,ev,re,r,rp,0)) +end +function c511001665.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001665.filter,tp,0,LOCATION_DECK,1,nil,tp,eg,ep,ev,re,r,rp) end + Duel.NegateActivation(ev) + Duel.NegateEffect(ev) +end +function c511001665.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001665.filter,tp,0,LOCATION_DECK,nil,tp,eg,ep,ev,re,r,rp) + if sg:GetCount()<=0 then return end + Duel.ConfirmCards(tp,sg) + local g=sg:Select(tp,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local opt=0 + if te then + local con=te:GetCondition() + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + Duel.ClearTargetCard() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,1-tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,1-tp,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + Duel.BreakEffect() + if op then op(te,1-tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end +end diff --git a/script/c511001666.lua b/script/c511001666.lua new file mode 100644 index 00000000..7e04a6f5 --- /dev/null +++ b/script/c511001666.lua @@ -0,0 +1,54 @@ +--Numeron Xyz Revision +function c511001666.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON) + e1:SetCondition(c511001666.condition) + e1:SetCost(c511001666.cost) + e1:SetTarget(c511001666.target) + e1:SetOperation(c511001666.activate) + c:RegisterEffect(e1) +end +function c511001666.cfilter(c) + return c:GetSequence()<5 +end +function c511001666.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep and eg:GetCount()==1 and (Duel.GetCurrentChain()==0 or (Duel.GetFlagEffect(tp,511001666)>0 and Duel.GetCurrentChain()==1)) + and eg:GetFirst():GetSummonType()==SUMMON_TYPE_XYZ + and not Duel.IsExistingMatchingCard(c511001666.cfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) +end +function c511001666.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or eg:IsExists(Card.IsDestructable,1,nil) end + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_COST) +end +function c511001666.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) +end +function c511001666.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001666.filter,tp,0,LOCATION_DECK,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,1-tp,LOCATION_DECK) +end +function c511001666.activate(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(c511001666.filter,tp,0,LOCATION_DECK,nil,e,tp) + if sg:GetCount()<=0 then return end + Duel.ConfirmCards(tp,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=sg:Select(tp,1,1,nil):GetFirst() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0xfe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0xfe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001667.lua b/script/c511001667.lua new file mode 100644 index 00000000..6d803f57 --- /dev/null +++ b/script/c511001667.lua @@ -0,0 +1,34 @@ +--Numeron Storm +function c511001667.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001667.condition) + e1:SetTarget(c511001667.target) + e1:SetOperation(c511001667.activate) + c:RegisterEffect(e1) +end +function c511001667.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x200) +end +function c511001667.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001667.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001667.filter(c) + return c:GetSequence()<5 and c:IsDestructable() +end +function c511001667.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511001667.filter,tp,0,LOCATION_SZONE,1,c) end + local sg=Duel.GetMatchingGroup(c511001667.filter,tp,0,LOCATION_SZONE,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511001667.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001667.filter,tp,0,LOCATION_SZONE,e:GetHandler()) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + Duel.Damage(1-tp,1000,REASON_EFFECT) + end +end diff --git a/script/c511001668.lua b/script/c511001668.lua new file mode 100644 index 00000000..94ab8fda --- /dev/null +++ b/script/c511001668.lua @@ -0,0 +1,30 @@ +--ガガガーディアン +function c511001668.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12423762,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001668.spcon) + e1:SetTarget(c511001668.sptg) + e1:SetOperation(c511001668.spop) + c:RegisterEffect(e1) +end +function c511001668.spcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()~=tp and Duel.GetAttackTarget()==nil +end +function c511001668.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511001668.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511001669.lua b/script/c511001669.lua new file mode 100644 index 00000000..3ef32499 --- /dev/null +++ b/script/c511001669.lua @@ -0,0 +1,27 @@ +--Balloon Party +function c511001669.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001669.target) + e1:SetOperation(c511001669.activate) + c:RegisterEffect(e1) +end +function c511001669.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001670,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_WIND) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511001669.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001670,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_WIND) then + for i=1,2 do + local token=Duel.CreateToken(tp,511001670) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001671.lua b/script/c511001671.lua new file mode 100644 index 00000000..ec93cea7 --- /dev/null +++ b/script/c511001671.lua @@ -0,0 +1,37 @@ +--High Half +function c511001671.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001671.condition) + e1:SetTarget(c511001671.target) + e1:SetOperation(c511001671.activate) + c:RegisterEffect(e1) +end +function c511001671.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001671.filter(c) + return c:IsFaceup() and c:IsAttackAbove(2000) +end +function c511001671.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001671.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001671.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001671.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511001671.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001672.lua b/script/c511001672.lua new file mode 100644 index 00000000..316a7d58 --- /dev/null +++ b/script/c511001672.lua @@ -0,0 +1,50 @@ +--Overlay Break +function c511001672.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001672.cost) + e1:SetTarget(c511001672.target) + e1:SetOperation(c511001672.operation) + c:RegisterEffect(e1) +end +function c511001672.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c511001672.filter(c,cst) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and (not cst or c:GetOverlayCount()~=0) +end +function c511001672.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local chkcost=e:GetLabel()==1 and true or false + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001672.filter(chkc,chkcost) end + if chk==0 then + e:SetLabel(0) + return Duel.IsExistingTarget(c511001672.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,chkcost) + end + e:SetLabel(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001672.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,chkcost) +end +function c511001672.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local og=tc:GetOverlayGroup() + if Duel.SendtoGrave(og,REASON_EFFECT)~=0 and tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c511001673.lua b/script/c511001673.lua new file mode 100644 index 00000000..04cf5748 --- /dev/null +++ b/script/c511001673.lua @@ -0,0 +1,49 @@ +--Footsteps of the Goddess +function c511001673.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001673.target) + e1:SetOperation(c511001673.operation) + c:RegisterEffect(e1) +end +function c511001673.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and Duel.IsPlayerCanSpecialSummon(1-tp) + and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511001673.filter(c,e,tp) + return c:IsAttackBelow(1500) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001673.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanSpecialSummon(1-tp) then return end + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + if g:GetCount()>0 then + Duel.ConfirmCards(tp,g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=g:FilterSelect(tp,c511001673.filter,1,1,nil,e,1-tp):GetFirst() + if sc then + Duel.SpecialSummonStep(sc,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sc:RegisterEffect(e1) + local sg=Duel.GetMatchingGroup(c511001673.filter,tp,LOCATION_HAND,0,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(525110,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc2=sg:Select(tp,1,1,nil):GetFirst() + Duel.BreakEffect() + Duel.SpecialSummonStep(sc2,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sc2:RegisterEffect(e2) + end + Duel.SpecialSummonComplete() + end + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c511001674.lua b/script/c511001674.lua new file mode 100644 index 00000000..cab3363f --- /dev/null +++ b/script/c511001674.lua @@ -0,0 +1,50 @@ +--Winged Trumpeter +function c511001674.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(c511001674.target) + e1:SetOperation(c511001674.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + c:RegisterEffect(e2) + --def up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(500) + c:RegisterEffect(e3) + --equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511001674.eqlimit) + c:RegisterEffect(e4) +end +function c511001674.eqlimit(e,c) + return c:IsRace(RACE_FAIRY) +end +function c511001674.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511001674.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001674.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001674.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001674.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001674.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 diff --git a/script/c511001675.lua b/script/c511001675.lua new file mode 100644 index 00000000..fc1809f0 --- /dev/null +++ b/script/c511001675.lua @@ -0,0 +1,47 @@ +--Star Blaster +function c511001675.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DICE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetTarget(c511001675.target) + e1:SetOperation(c511001675.activate) + c:RegisterEffect(e1) +end +function c511001675.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511001675.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001675.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001675.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001675.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c511001675.spfilter(c,lv,e,tp) + return c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001675.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local dice=Duel.TossDice(tp,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(dice) + tc:RegisterEffect(e1) + local g=Duel.GetMatchingGroup(c511001675.spfilter,tp,LOCATION_HAND,0,nil,tc:GetLevel(),e,tp) + if tc:IsReleasableByEffect() and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and g:GetCount()>0 + and Duel.SelectYesNo(tp,aux.Stringid(102380,0)) then + Duel.Release(tc,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.BreakEffect() + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511001676.lua b/script/c511001676.lua new file mode 100644 index 00000000..1953584f --- /dev/null +++ b/script/c511001676.lua @@ -0,0 +1,44 @@ +--Raise the Woof +function c511001676.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001676.condition) + e1:SetTarget(c511001676.target) + e1:SetOperation(c511001676.activate) + c:RegisterEffect(e1) +end +function c511001676.cfilter(c) + return c:IsFaceup() and c:IsLevelAbove(3) +end +function c511001676.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c511001676.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001676.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001677,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,4,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,4,0,0) +end +function c511001676.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001677,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) then + for i=1,4 do + local token=Duel.CreateToken(tp,511001677) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + token:RegisterEffect(e2) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001678.lua b/script/c511001678.lua new file mode 100644 index 00000000..cf7025ec --- /dev/null +++ b/script/c511001678.lua @@ -0,0 +1,38 @@ +--Pooch Party +function c511001678.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001678.target) + e1:SetOperation(c511001678.activate) + c:RegisterEffect(e1) +end +function c511001678.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001679,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511001678.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001679,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) then + for i=1,2 do + local token=Duel.CreateToken(tp,511001679) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local de=Effect.CreateEffect(e:GetHandler()) + de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + de:SetRange(LOCATION_MZONE) + de:SetCode(EVENT_PHASE+PHASE_END) + de:SetCountLimit(1) + de:SetOperation(c511001678.desop) + de:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(de) + end + Duel.SpecialSummonComplete() + end +end +function c511001678.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001680.lua b/script/c511001680.lua new file mode 100644 index 00000000..c5cea591 --- /dev/null +++ b/script/c511001680.lua @@ -0,0 +1,35 @@ +--Junk Robot Cleanaga +function c511001680.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetDescription(aux.Stringid(511001680,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001680.cost) + e1:SetTarget(c511001680.target) + e1:SetOperation(c511001680.operation) + c:RegisterEffect(e1) +end +function c511001680.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001680.filter(c) + return c:IsSetCard(0x1043) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511001680.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511001680.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001680.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectTarget(tp,c511001680.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c511001680.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511001681.lua b/script/c511001681.lua new file mode 100644 index 00000000..786c686f --- /dev/null +++ b/script/c511001681.lua @@ -0,0 +1,43 @@ +--Eco Spell - Reduce Waste +function c511001681.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001681.cost) + e1:SetTarget(c511001681.target) + e1:SetOperation(c511001681.activate) + c:RegisterEffect(e1) +end +function c511001681.cfilter(c) + return c:IsSetCard(0x1043) and c:IsType(TYPE_MONSTER) +end +function c511001681.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local sg=Duel.GetMatchingGroup(c511001681.cfilter,tp,LOCATION_DECK,0,nil) + local th=sg:Filter(Card.IsAbleToHand,nil) + local thct=th:GetCount() + if thct==1 then + sg:Sub(th) + end + if chk==0 then return (sg:GetCount()>=3 or thct==1) and sg:IsExists(Card.IsAbleToRemove,2,nil) + and (sg:IsExists(Card.IsAbleToHand,1,nil) or thct==1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=sg:FilterSelect(tp,Card.IsAbleToRemove,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001681.filter(c) + return c:IsSetCard(0x1043) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511001681.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001681.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001681.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001681.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001682.lua b/script/c511001682.lua new file mode 100644 index 00000000..52d5c9c2 --- /dev/null +++ b/script/c511001682.lua @@ -0,0 +1,35 @@ +--Junk Robot Camelcycle +function c511001682.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetDescription(aux.Stringid(511001682,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001682.cost) + e1:SetTarget(c511001682.target) + e1:SetOperation(c511001682.operation) + c:RegisterEffect(e1) +end +function c511001682.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001682.filter(c) + return c:IsSetCard(0x20d) and c:IsAbleToHand() +end +function c511001682.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511001682.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001682.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectTarget(tp,c511001682.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c511001682.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511001683.lua b/script/c511001683.lua new file mode 100644 index 00000000..8f966a4c --- /dev/null +++ b/script/c511001683.lua @@ -0,0 +1,38 @@ +--Junk Robot Computerkong +function c511001683.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(511001683,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001683.cost) + e1:SetTarget(c511001683.target) + e1:SetOperation(c511001683.operation) + c:RegisterEffect(e1) +end +function c511001683.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001683.filter(c) + return c:IsSetCard(0x1043) and c:IsFaceup() +end +function c511001683.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001683.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001683.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001683.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001683.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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+PHASE_END) + e1:SetValue(800) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001684.lua b/script/c511001684.lua new file mode 100644 index 00000000..cf0f5555 --- /dev/null +++ b/script/c511001684.lua @@ -0,0 +1,31 @@ +--Junk Robot Teapot Kangaroo +function c511001684.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001684,0)) + e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001684.con) + e1:SetCost(c511001684.cost) + e1:SetOperation(c511001684.op) + c:RegisterEffect(e1) +end +function c511001684.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511001684.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001684.op(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001684.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511001684.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,0) +end diff --git a/script/c511001685.lua b/script/c511001685.lua new file mode 100644 index 00000000..1b186bdd --- /dev/null +++ b/script/c511001685.lua @@ -0,0 +1,30 @@ +--Eco Spell - Recycle +function c511001685.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001685.target) + e1:SetOperation(c511001685.activate) + c:RegisterEffect(e1) +end +function c511001685.filter(c,e,tp) + return c:IsSetCard(0x1043) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001685.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and c511001685.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingTarget(c511001685.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001685.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c511001685.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if g:GetCount()==2 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001686.lua b/script/c511001686.lua new file mode 100644 index 00000000..aa89e89e --- /dev/null +++ b/script/c511001686.lua @@ -0,0 +1,24 @@ +--Mix-Up +function c511001686.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001686.target) + e1:SetOperation(c511001686.activate) + c:RegisterEffect(e1) +end +function c511001686.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001686.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511001687.lua b/script/c511001687.lua new file mode 100644 index 00000000..8af247d0 --- /dev/null +++ b/script/c511001687.lua @@ -0,0 +1,33 @@ +--Pursuit of the Fiend +function c511001687.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511001687.condition) + e1:SetCost(c511001687.cost) + e1:SetOperation(c511001687.activate) + c:RegisterEffect(e1) +end +function c511001687.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsControler(tp) and tc:IsType(TYPE_XYZ) and tc:IsFaceup() + and tc:GetBattleTarget():IsDefensePos() +end +function c511001687.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return tc:CheckRemoveOverlayCard(tp,1,REASON_COST) end + local g=tc:GetOverlayGroup() + Duel.SendtoGrave(g,REASON_COST) +end +function c511001687.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:IsRelateToBattle() and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001688.lua b/script/c511001688.lua new file mode 100644 index 00000000..71558285 --- /dev/null +++ b/script/c511001688.lua @@ -0,0 +1,43 @@ +--Abyss Guardian +function c511001688.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001688,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511001688.condition) + e1:SetTarget(c511001688.target) + e1:SetOperation(c511001688.operation) + c:RegisterEffect(e1) + --end battle phase + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001688,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511001688.skipcon) + e2:SetOperation(c511001688.skipop) + c:RegisterEffect(e2) +end +function c511001688.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511001688.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511001688.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001688.skipcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 +end +function c511001688.skipop(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511001689.lua b/script/c511001689.lua new file mode 100644 index 00000000..f88b2851 --- /dev/null +++ b/script/c511001689.lua @@ -0,0 +1,54 @@ +--Abyss Kid +function c511001689.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001689,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511001689.condition) + e1:SetTarget(c511001689.target) + e1:SetOperation(c511001689.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001689,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c511001689.descon) + e2:SetOperation(c511001689.desop) + c:RegisterEffect(e2) +end +function c511001689.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511001689.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511001689.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001689.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp +end +function c511001689.desop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetRange(LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,0) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + else + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + end + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c511001690.lua b/script/c511001690.lua new file mode 100644 index 00000000..9b9c6070 --- /dev/null +++ b/script/c511001690.lua @@ -0,0 +1,59 @@ +--Abyss Ruler Mictlancoatl +function c511001690.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001690.spcon) + e1:SetOperation(c511001690.spop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(85103922,1)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001690.destg) + e2:SetOperation(c511001690.desop) + c:RegisterEffect(e2) +end +function c511001690.spfilter(c) + return (c:IsSetCard(0xec) or c:IsSetCard(0xb1) or c:IsSetCard(0x75) or c:IsSetCard(0x74) or c:IsCode(87303357) or c:IsCode(53375573) + or c:IsCode(40387124) or c:IsCode(74069667) or c:IsCode(29424328) or c:IsCode(86442081) or c:IsCode(18318842) or c:IsCode(88409165) + or c:IsCode(44223284) or c:IsCode(84478195) or c:IsCode(67111213) or c:IsCode(9753964) or c:IsCode(96864105) or c:IsCode(36076683) + or c:IsCode(21044178) or c:IsCode(97232518)) and c:IsAbleToRemoveAsCost() +end +function c511001690.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001690.spfilter,tp,LOCATION_GRAVE,0,3,nil) +end +function c511001690.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c511001690.spfilter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c511001690.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511001690.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001690.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c511001690.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511001690.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511001690.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + Duel.BreakEffect() + Duel.Damage(1-tp,600,REASON_EFFECT) + end +end diff --git a/script/c511001691.lua b/script/c511001691.lua new file mode 100644 index 00000000..c631f02c --- /dev/null +++ b/script/c511001691.lua @@ -0,0 +1,22 @@ +--Xyz Bento +function c511001691.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511001691.condition) + e1:SetOperation(c511001691.activate) + c:RegisterEffect(e1) +end +function c511001691.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsType(TYPE_XYZ) and tc:IsFaceup() + and tc:GetBattleTarget():IsDefenseAbove(2000) +end +function c511001691.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + if tc:IsRelateToBattle() and tc:IsFaceup() then + Duel.Overlay(tc,Group.FromCards(bc)) + end +end diff --git a/script/c511001692.lua b/script/c511001692.lua new file mode 100644 index 00000000..2ee2f4bb --- /dev/null +++ b/script/c511001692.lua @@ -0,0 +1,69 @@ +--Cardian - Yanagi +function c511001692.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001692,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001692.spcost) + e1:SetTarget(c511001692.sptg) + e1:SetOperation(c511001692.spop) + c:RegisterEffect(e1) + c511001692.spe=e1 + if not c511001692.global_check then + c511001692.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001692.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001692.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001692.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001692.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==11 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001692.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001692.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001692.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001692.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001692.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001692.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001693.lua b/script/c511001693.lua new file mode 100644 index 00000000..7e1a7b02 --- /dev/null +++ b/script/c511001693.lua @@ -0,0 +1,69 @@ +--Cardian - Kiri +function c511001693.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001693,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001693.spcost) + e1:SetTarget(c511001693.sptg) + e1:SetOperation(c511001693.spop) + c:RegisterEffect(e1) + c511001693.spe=e1 + if not c511001693.global_check then + c511001693.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001693.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001693.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001693.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001693.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==12 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001693.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001693.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001693.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001693.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001693.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001693.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001694.lua b/script/c511001694.lua new file mode 100644 index 00000000..8776c660 --- /dev/null +++ b/script/c511001694.lua @@ -0,0 +1,70 @@ +--Cardian - Kiri ni Houou +function c511001694.initial_effect(c) + c:EnableUnsummonable() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001694,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001694.spcost) + e1:SetTarget(c511001694.sptg) + e1:SetOperation(c511001694.spop) + c:RegisterEffect(e1) + c511001694.spe=e1 + if not c511001694.global_check then + c511001694.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001694.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001694.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001694.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001694.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==12 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001694.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001694.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001694.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001694.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001694.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001694.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001695.lua b/script/c511001695.lua new file mode 100644 index 00000000..8fc33c1a --- /dev/null +++ b/script/c511001695.lua @@ -0,0 +1,69 @@ +--Cardian - Matsu +function c511001695.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001695,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001695.spcost) + e1:SetTarget(c511001695.sptg) + e1:SetOperation(c511001695.spop) + c:RegisterEffect(e1) + c511001695.spe=e1 + if not c511001695.global_check then + c511001695.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001695.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001695.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001695.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001695.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==1 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001695.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001695.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001695.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001695.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001695.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001695.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001696.lua b/script/c511001696.lua new file mode 100644 index 00000000..ac3a6c55 --- /dev/null +++ b/script/c511001696.lua @@ -0,0 +1,70 @@ +--Cardian - Matsu ni Tsuru +function c511001696.initial_effect(c) + c:EnableUnsummonable() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001696,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001696.spcost) + e1:SetTarget(c511001696.sptg) + e1:SetOperation(c511001696.spop) + c:RegisterEffect(e1) + c511001696.spe=e1 + if not c511001696.global_check then + c511001696.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001696.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001696.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001696.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001696.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==1 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001696.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001696.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001696.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001696.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001696.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001696.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001697.lua b/script/c511001697.lua new file mode 100644 index 00000000..a3c6a067 --- /dev/null +++ b/script/c511001697.lua @@ -0,0 +1,70 @@ +--Cardian - Sakura ni Maku +function c511001697.initial_effect(c) + c:EnableUnsummonable() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001697,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001697.spcost) + e1:SetTarget(c511001697.sptg) + e1:SetOperation(c511001697.spop) + c:RegisterEffect(e1) + c511001697.spe=e1 + if not c511001697.global_check then + c511001697.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001697.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001697.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001697.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001697.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==3 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001697.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001697.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001697.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001697.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001697.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001697.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001698.lua b/script/c511001698.lua new file mode 100644 index 00000000..a5f7b8bc --- /dev/null +++ b/script/c511001698.lua @@ -0,0 +1,69 @@ +--Cardian - Susuki +function c511001698.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001698,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001698.spcost) + e1:SetTarget(c511001698.sptg) + e1:SetOperation(c511001698.spop) + c:RegisterEffect(e1) + c511001698.spe=e1 + if not c511001698.global_check then + c511001698.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001698.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001698.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001698.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001698.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==8 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001698.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001698.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001698.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001698.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001698.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001698.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001699.lua b/script/c511001699.lua new file mode 100644 index 00000000..7d7ecaf0 --- /dev/null +++ b/script/c511001699.lua @@ -0,0 +1,70 @@ +--Cardian - Susuki ni Tsuki +function c511001699.initial_effect(c) + c:EnableUnsummonable() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001699,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001699.spcost) + e1:SetTarget(c511001699.sptg) + e1:SetOperation(c511001699.spop) + c:RegisterEffect(e1) + c511001699.spe=e1 + if not c511001699.global_check then + c511001699.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001699.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001699.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001699.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001699.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==8 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001699.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001699.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001699.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001699.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001699.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001699.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001700.lua b/script/c511001700.lua new file mode 100644 index 00000000..e9adb35a --- /dev/null +++ b/script/c511001700.lua @@ -0,0 +1,112 @@ +--Cardian - Yanagi ni Ono no Michikaze +function c511001700.initial_effect(c) + c:EnableUnsummonable() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001700,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001700.spcost) + e1:SetTarget(c511001700.sptg) + e1:SetOperation(c511001700.spop) + c:RegisterEffect(e1) + --synchro level + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) + e3:SetTarget(c511001700.syntg) + e3:SetValue(1) + e3:SetOperation(c511001700.synop) + c:RegisterEffect(e3) + c511001700.spe=e1 + if not c511001700.global_check then + c511001700.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001700.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001700.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001700.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001700.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==11 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001700.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001700.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001700.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001700.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001700.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001700.cardiansynlevel(c) + return 2 +end +function c511001700.synfilter(c,syncard,tuner,f) + return c:IsFaceup() and c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) +end +function c511001700.syntg(e,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + local lv2=syncard:GetLevel()-c511001700.cardiansynlevel(c) + if lv<=0 and lv2<=0 then return false end + local g=Duel.GetMatchingGroup(c511001700.synfilter,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local res=g:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) + local res2=g:CheckWithSumEqual(c511001700.cardiansynlevel,lv2,minc,maxc) + return res or res2 +end +function c511001700.synop(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + local lv2=syncard:GetLevel()-c511001700.cardiansynlevel(c) + local g=Duel.GetMatchingGroup(c511001700.synfilter,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local res=g:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) + local res2=g:CheckWithSumEqual(c511001700.cardiansynlevel,lv2,minc,maxc) + local sg=nil + if (res2 and res and Duel.SelectYesNo(tp,aux.Stringid(89818984,2))) + or (res2 and not res) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + sg=g:SelectWithSumEqual(tp,c511001700.cardiansynlevel,lv2,minc,maxc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + sg=g:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,minc,maxc,syncard) + end + Duel.SetSynchroMaterial(sg) +end +function c511001700.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001701.lua b/script/c511001701.lua new file mode 100644 index 00000000..126c47ac --- /dev/null +++ b/script/c511001701.lua @@ -0,0 +1,83 @@ +--Cardian - Ameshikou +function c511001701.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),2) + c:EnableReviveLimit() + --skip draw + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001701.scon) + e1:SetOperation(c511001701.sop) + c:RegisterEffect(e1) + --draw negate + local e2=Effect.CreateEffect(c) + e2:SetRange(LOCATION_MZONE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DRAW) + e2:SetCondition(c511001701.drcon) + e2:SetOperation(c511001701.drop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_DRAW) + e3:SetCondition(c511001701.damcon) + e3:SetOperation(c511001701.damop) + c:RegisterEffect(e3) +end +function c511001701.scon(e,tp,eg,ep,ev,re,r,rp) + local mg=e:GetHandler():GetMaterial() + return tp==Duel.GetTurnPlayer() and mg:GetCount()>0 and mg:IsExists(Card.IsCode,1,nil,89818984) and mg:IsExists(Card.IsCode,1,nil,16024176) + and mg:IsExists(Card.IsCode,1,nil,43413875) and mg:IsExists(Card.IsCode,1,nil,16802689) +end +function c511001701.sop(e,tp,eg,ep,ev,re,r,rp) + local dt=Duel.GetDrawCount(tp) + if dt~=0 and not Duel.SelectYesNo(tp,aux.Stringid(1945387,0)) then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end +end +function c511001701.drcon(e,tp,eg,ep,ev,re,r,rp) + local mg=e:GetHandler():GetMaterial() + return ep==tp and mg:GetCount()>0 and mg:IsExists(Card.IsCode,1,nil,89818984) and mg:IsExists(Card.IsCode,1,nil,16024176) + and mg:IsExists(Card.IsCode,1,nil,43413875) and mg:IsExists(Card.IsCode,1,nil,16802689) +end +function c511001701.drop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() then return end + Duel.NegateRelatedChain(c,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c511001701.damcon(e,tp,eg,ep,ev,re,r,rp) + local mg=e:GetHandler():GetMaterial() + return ep~=tp and mg:GetCount()>0 and mg:IsExists(Card.IsCode,1,nil,89818984) and mg:IsExists(Card.IsCode,1,nil,16024176) + and mg:IsExists(Card.IsCode,1,nil,43413875) and mg:IsExists(Card.IsCode,1,nil,16802689) +end +function c511001701.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,1500,REASON_EFFECT) +end diff --git a/script/c511001702.lua b/script/c511001702.lua new file mode 100644 index 00000000..b5cccdfe --- /dev/null +++ b/script/c511001702.lua @@ -0,0 +1,59 @@ +--Hana Awase +function c511001702.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001702.target) + e1:SetOperation(c511001702.activate) + c:RegisterEffect(e1) +end +function c511001702.filter(c,e,tp) + return c:GetAttack()==100 and c:IsSetCard(0xe6) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001702.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511001702.filter,tp,LOCATION_DECK,0,4,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,4,0,LOCATION_DECK) +end +function c511001702.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<4 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if not Duel.IsExistingMatchingCard(c511001702.filter,tp,LOCATION_DECK,0,4,nil,e,tp) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001702.filter,tp,LOCATION_DECK,0,4,4,nil,e,tp) + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_EFFECT) + e2:SetValue(c511001702.sumlimit) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + tc:RegisterEffect(e4,true) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + tc:RegisterEffect(e5,true) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end +function c511001702.sumlimit(e,c) + return not c:IsSetCard(0xe6) +end diff --git a/script/c511001703.lua b/script/c511001703.lua new file mode 100644 index 00000000..47842b2d --- /dev/null +++ b/script/c511001703.lua @@ -0,0 +1,34 @@ +--Hanazumi +function c511001703.initial_effect(c) + --arrange + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001703.target) + e1:SetOperation(c511001703.operation) + c:RegisterEffect(e1) +end +function c511001703.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0xe6) +end +function c511001703.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001703.filter,tp,LOCATION_DECK,0,3,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511001703.filter,tp,LOCATION_DECK,0,3,3,nil) + Duel.ConfirmCards(1-tp,g) + Duel.SetTargetCard( g) +end +function c511001703.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ct=g:GetCount() + if ct>0 then + Duel.ShuffleDeck(tp) + local tc=g:GetFirst() + while tc do + Duel.MoveSequence(tc,0) + tc=g:GetNext() + end + Duel.ConfirmDecktop(tp,ct) + Duel.SortDecktop(tp,tp,ct) + end +end diff --git a/script/c511001704.lua b/script/c511001704.lua new file mode 100644 index 00000000..91732a05 --- /dev/null +++ b/script/c511001704.lua @@ -0,0 +1,73 @@ +--No Cheaters Allowed +function c511001704.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511001704.target1) + e1:SetOperation(c511001704.operation1) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001704,1)) + e1:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCondition(c511001704.condition) + e2:SetTarget(c511001704.target2) + e2:SetOperation(c511001704.operation2) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511001704.sdcon) + c:RegisterEffect(e3) +end +function c511001704.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xe6) and c:IsType(TYPE_SYNCHRO) +end +function c511001704.ofilter(c) + return c:GetSummonLocation()==LOCATION_HAND +end +function c511001704.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001704.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511001704.ofilter,tp,0,LOCATION_MZONE,1,nil) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511001704.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.IsExistingMatchingCard(c511001704.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511001704.ofilter,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,nil) + and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + local sg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) + e:SetLabel(1) + else e:SetLabel(0) end +end +function c511001704.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c511001704.operation1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if e:GetLabel()==1 then + local sg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,0,LOCATION_MZONE,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + end +end +function c511001704.operation2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local sg=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,0,LOCATION_MZONE,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end +function c511001704.sdcon(e) + return not Duel.IsExistingMatchingCard(c511001704.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511001705.lua b/script/c511001705.lua new file mode 100644 index 00000000..6a41f968 --- /dev/null +++ b/script/c511001705.lua @@ -0,0 +1,65 @@ +--Commitment to Tomorrow +function c511001705.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001705.condition) + e1:SetTarget(c511001705.target) + e1:SetOperation(c511001705.activate) + c:RegisterEffect(e1) + if not c511001705.global_check then + c511001705.global_check=true + c511001705[0]=0 + c511001705[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511001705.checkop) + Duel.RegisterEffect(ge1,0) + local ge4=Effect.CreateEffect(c) + ge4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge4:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + ge4:SetOperation(c511001705.clear) + Duel.RegisterEffect(ge4,0) + end +end +function c511001705.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsSetCard,nil,0x48) + local tc=g:GetFirst() + while tc do + c511001705[tc:GetPreviousControler()]=c511001705[tc:GetPreviousControler()]+tc:GetPreviousAttackOnField() + tc=g:GetNext() + end +end +function c511001705.clear(e,tp,eg,ep,ev,re,r,rp) + c511001705[0]=0 + c511001705[1]=0 +end +function c511001705.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001705.filter(c) + return c:IsFaceup() and c:IsSetCard(0x48) +end +function c511001705.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001705.filter(chkc) end + if chk==0 then return c511001705[tp]>0 and Duel.IsExistingTarget(c511001705.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001705.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001705.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001705[tp]) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001706.lua b/script/c511001706.lua new file mode 100644 index 00000000..547df77a --- /dev/null +++ b/script/c511001706.lua @@ -0,0 +1,76 @@ +--SNo.39 希望皇ホープ・ザ・ライトニング +function c511001706.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_START) + e1:SetOperation(c511001706.disop) + c:RegisterEffect(e1) + --attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511001706.atkcon) + e2:SetValue(c511001706.atkval) + c:RegisterEffect(e2) + if not c511001706.global_check then + c511001706.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001706.numchk) + Duel.RegisterEffect(ge2,0) + end + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511001706.indes) + c:RegisterEffect(e3) + if not c511001706.global_check then + c511001706.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511001706.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511001706.xyz_number=39 +function c511001706.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + end +end +function c511001706.atkcon(e) + return e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,86532744) +end +function c511001706.atkval(e,c) + return e:GetHandler():GetRank()*1000 +end +function c511001706.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,56832966) + Duel.CreateToken(1-tp,56832966) +end +function c511001706.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511001707.lua b/script/c511001707.lua new file mode 100644 index 00000000..9ce0ef6a --- /dev/null +++ b/script/c511001707.lua @@ -0,0 +1,46 @@ +--Gagaga Illusion +function c511001707.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001707.target) + e1:SetOperation(c511001707.activate) + c:RegisterEffect(e1) +end +function c511001707.filter(c,e,tp) + return c:IsSetCard(0x54) and c:IsFaceup() and c:GetLevel()>0 +end +function c511001707.spfilter(c,e,tp) + return c:GetLevel()>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001707.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511001707.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c511001707.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp)end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c511001707.filter,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c511001707.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g2,1,0,0) +end +function c511001707.activate(e,tp,eg,ep,ev,re,r,rp) + local lc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + if tc==lc then tc=g:GetNext() end + if lc:IsFaceup() and lc:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + local lv=lc:GetLevel() + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001708.lua b/script/c511001708.lua new file mode 100644 index 00000000..b89a338c --- /dev/null +++ b/script/c511001708.lua @@ -0,0 +1,49 @@ +--RUM Shining Force +function c511001708.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001708.target) + e1:SetOperation(c511001708.activate) + c:RegisterEffect(e1) +end +function c511001708.filter1(c,e,tp) + local rk=c:GetRank() + return (c:IsFaceup() or c:IsLocation(LOCATION_GRAVE)) and c:IsType(TYPE_XYZ) + and (c:IsCode(56832966) or c:IsCode(86532744) or c:IsCode(52653092)) + and Duel.IsExistingMatchingCard(c511001708.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetCode()) + and (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or c:IsLocation(LOCATION_MZONE)) +end +function c511001708.filter2(c,e,tp,mc,rk,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return c:GetRank()==rk and (c:IsCode(56832966) or c:IsCode(86532744) or c:IsCode(52653092)) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511001708.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) and c511001708.filter1(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001708.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511001708.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001708.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001708.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c511001709.lua b/script/c511001709.lua new file mode 100644 index 00000000..90d590aa --- /dev/null +++ b/script/c511001709.lua @@ -0,0 +1,57 @@ +--Mystical Donator +function c511001709.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_RECOVER) + e1:SetDescription(aux.Stringid(511001709,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511001709.cost) + e1:SetTarget(c511001709.target) + e1:SetOperation(c511001709.operation) + c:RegisterEffect(e1) +end +function c511001709.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetAttack()>0 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511001709.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(76922029,0)) + local op=Duel.SelectOption(tp,aux.Stringid(2191144,0),aux.Stringid(3701074,0)) + e:SetLabel(op) + if op==0 then + e:SetProperty(0) + else + e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,800) + end +end +function c511001709.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(800) + tc:RegisterEffect(e1) + end + else + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) + end +end diff --git a/script/c511001710.lua b/script/c511001710.lua new file mode 100644 index 00000000..6f2a744b --- /dev/null +++ b/script/c511001710.lua @@ -0,0 +1,80 @@ +--Performapal Seesawhopper +function c511001710.initial_effect(c) + --return + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001710,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCondition(c511001710.thcon) + e1:SetCost(c511001710.thcost) + e1:SetTarget(c511001710.thtg) + e1:SetOperation(c511001710.thop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(86840720,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCondition(c511001710.spcon) + e2:SetTarget(c511001710.sptg) + e2:SetOperation(c511001710.spop) + c:RegisterEffect(e2) +end +function c511001710.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511001710.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001710.thfilter(c) + return c:IsLevelBelow(3) and c:IsSetCard(0x9f) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511001710.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511001710.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001710.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectTarget(tp,c511001710.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c511001710.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c511001710.spcfilter(c) + return c:IsPreviousLocation(LOCATION_HAND) and c:IsType(TYPE_MONSTER) +end +function c511001710.spcon(e,tp,eg,ep,ev,re,r,rp) + return not eg:IsContains(e:GetHandler()) and eg:IsExists(c511001710.spcfilter,1,nil) +end +function c511001710.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001710.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001710.valcon) + c:RegisterEffect(e1,true) + end +end +function c511001710.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c511001711.lua b/script/c511001711.lua new file mode 100644 index 00000000..f5668a0c --- /dev/null +++ b/script/c511001711.lua @@ -0,0 +1,76 @@ +--Performapal Landlord Hermit Crab +function c511001711.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001711,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511001711.spcon) + e2:SetTarget(c511001711.sptg) + e2:SetOperation(c511001711.spop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetDescription(aux.Stringid(511001711,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(TIMING_DAMAGE_CAL) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetCountLimit(1) + e3:SetCondition(c511001711.atkcon) + e3:SetOperation(c511001711.atkop) + c:RegisterEffect(e3) +end +function c511001711.cfilter(c,tp) + return c:IsType(TYPE_PENDULUM) and c:IsPreviousLocation(LOCATION_MZONE) and c:IsLocation(LOCATION_EXTRA) + and c:GetPreviousControler()==tp +end +function c511001711.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001711.cfilter,1,nil,tp) +end +function c511001711.spfilter(c,e,tp) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001711.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c511001711.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001711.spfilter,tp,LOCATION_SZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001711.spfilter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001711.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001711.atkcon(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and ((a:GetControler()==tp and a:IsRelateToBattle() and a:IsType(TYPE_PENDULUM)) + or (d:GetControler()==tp and d:IsRelateToBattle() and d:IsType(TYPE_PENDULUM))) + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>1 +end +function c511001711.atkop(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if Duel.GetTurnPlayer()~=tp then a=Duel.GetAttackTarget() end + if not a:IsRelateToBattle() then return end + local atk=(Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)-1)*300 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(atk) + a:RegisterEffect(e1) +end diff --git a/script/c511001712.lua b/script/c511001712.lua new file mode 100644 index 00000000..89b6a47e --- /dev/null +++ b/script/c511001712.lua @@ -0,0 +1,62 @@ +--Performapal Big Bite Turtle +function c511001712.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --change level + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001712,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001712.lvtg) + e2:SetOperation(c511001712.lvop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetDescription(aux.Stringid(511001712,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetTarget(c511001712.destg) + e3:SetOperation(c511001712.desop) + c:RegisterEffect(e3) +end +function c511001712.cfilter(c) + return c:GetLevel()>1 and not c:IsPublic() +end +function c511001712.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001712.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local cg=Duel.SelectMatchingCard(tp,c511001712.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleHand(tp) + Duel.SetTargetCard(cg) +end +function c511001712.lvop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511001712.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetHandler():GetReasonCard() + if chkc then return chkc==tc end + if chk==0 then return true end + if tc:IsCanBeEffectTarget(e) then + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) + end +end +function c511001712.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001713.lua b/script/c511001713.lua new file mode 100644 index 00000000..1b684b57 --- /dev/null +++ b/script/c511001713.lua @@ -0,0 +1,40 @@ +--Performapal Raingoat +function c511001713.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001713.con) + e1:SetOperation(c511001713.op) + c:RegisterEffect(e1) +end +function c511001713.con(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511001713.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsAbleToGraveAsCost() and Duel.SelectYesNo(tp,aux.Stringid(2407147,0)) + and Duel.SendtoGrave(c,REASON_COST+REASON_REPLACE)>0 then + 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(c511001713.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + end +end +function c511001713.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end diff --git a/script/c511001714.lua b/script/c511001714.lua new file mode 100644 index 00000000..6a4c67af --- /dev/null +++ b/script/c511001714.lua @@ -0,0 +1,71 @@ +--Pendulum Climax +function c511001714.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001714.target) + e1:SetOperation(c511001714.activate) + c:RegisterEffect(e1) +end +function c511001714.cfilter(c,tp) + local lv=c:GetLevel() + return lv>0 and c:IsType(TYPE_PENDULUM) and Duel.IsExistingMatchingCard(c511001714.eqfilter,tp,0,LOCATION_GRAVE,1,nil,lv) +end +function c511001714.eqfilter(c,lv) + return c:GetLevel()>0 and lv==c:GetLevel() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001714.filter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:GetBattledGroupCount()>0 + and Duel.CheckReleaseGroup(tp,c511001714.cfilter,1,c,tp) +end +function c511001714.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if not e:GetHandler():IsLocation(LOCATION_SZONE) then ft=ft-1 end + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001714.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001714.filter,tp,LOCATION_MZONE,0,1,nil,tp) and ft>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001714.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + local tr=Duel.SelectReleaseGroup(tp,c511001714.cfilter,1,1,g:GetFirst(),tp) + e:SetLabel(tr:GetFirst():GetLevel()) + Duel.Release(tr,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,0,LOCATION_GRAVE) +end +function c511001714.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(12152769,2)) + local g=Duel.SelectMatchingCard(tp,c511001714.eqfilter,tp,0,LOCATION_GRAVE,1,1,nil,e:GetLabel()) + local ec=g:GetFirst() + if ec then + Duel.HintSelection(g) + if not Duel.Equip(tp,ec,tc,false) then return end + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001714.eqlimit) + ec:RegisterEffect(e1) + local e2=Effect.CreateEffect(tc) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(ec:GetTextAttack()/2) + ec:RegisterEffect(e2) + local e3=Effect.CreateEffect(tc) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + ec:RegisterEffect(e3) + end + end +end +function c511001714.eqlimit(e,c) + return e:GetOwner()==c +end diff --git a/script/c511001715.lua b/script/c511001715.lua new file mode 100644 index 00000000..2c816439 --- /dev/null +++ b/script/c511001715.lua @@ -0,0 +1,25 @@ +--Mysterious Mirror +function c511001715.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511001715.activate) + c:RegisterEffect(e1) +end +function c511001715.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + e2:SetValue(1) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c511001716.lua b/script/c511001716.lua new file mode 100644 index 00000000..fc74d637 --- /dev/null +++ b/script/c511001716.lua @@ -0,0 +1,82 @@ +--Supremacy Fusion +function c511001716.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001716.condition) + e1:SetTarget(c511001716.target) + e1:SetOperation(c511001716.activate) + c:RegisterEffect(e1) +end +function c511001716.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 c511001716.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511001716.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511001716.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511001716.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001716.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001716.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001716.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511001716.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001716.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + else + local cg1=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_MZONE,0) + local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) + and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then + Duel.ConfirmCards(1-tp,cg1) + Duel.ConfirmCards(1-tp,cg2) + Duel.ShuffleHand(tp) + end + end +end diff --git a/script/c511001717.lua b/script/c511001717.lua new file mode 100644 index 00000000..ada792d2 --- /dev/null +++ b/script/c511001717.lua @@ -0,0 +1,12 @@ +--Dark Tyranno +function c511001717.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetCondition(c511001717.con) + c:RegisterEffect(e1) +end +function c511001717.con(e) + return not Duel.IsExistingMatchingCard(Card.IsAttackPos,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511001718.lua b/script/c511001718.lua new file mode 100644 index 00000000..2e02020e --- /dev/null +++ b/script/c511001718.lua @@ -0,0 +1,29 @@ +--Icebergdon +function c511001718.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000040,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001718.target) + e1:SetOperation(c511001718.operation) + c:RegisterEffect(e1) +end +function c511001718.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsDestructable() +end +function c511001718.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001718.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001718.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001718.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511001719.lua b/script/c511001719.lua new file mode 100644 index 00000000..38ee004e --- /dev/null +++ b/script/c511001719.lua @@ -0,0 +1,24 @@ +--Horned Saurus +function c511001719.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,511000893,45894482,true,true) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001719.regcon) + e1:SetOperation(c511001719.regop) + c:RegisterEffect(e1) +end +function c511001719.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end +function c511001719.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c511001720.lua b/script/c511001720.lua new file mode 100644 index 00000000..9e5f811d --- /dev/null +++ b/script/c511001720.lua @@ -0,0 +1,33 @@ +--Baggy Pants Lavasaurus +function c511001720.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001720,1)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c511001720.thtg) + e1:SetOperation(c511001720.thop) + c:RegisterEffect(e1) +end +function c511001720.thfilter(c) + return c:GetLevel()==5 and c:IsAbleToHand() +end +function c511001720.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001720.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001720.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + else + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ConfirmCards(tp,cg) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c511001721.lua b/script/c511001721.lua new file mode 100644 index 00000000..7651e33f --- /dev/null +++ b/script/c511001721.lua @@ -0,0 +1,51 @@ +--Chokoikoi +function c511001721.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001721.target) + e1:SetOperation(c511001721.activate) + c:RegisterEffect(e1) +end +function c511001721.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) and Duel.IsPlayerCanSpecialSummon(tp) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,3) +end +function c511001721.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)==3 then + local g=Duel.GetOperatedGroup() + local tc=g:GetFirst() + while tc do + if Duel.GetLocationCount(p,LOCATION_MZONE)>0 and tc:IsSetCard(0xe6) + and tc:IsCanBeSpecialSummoned(e,0,p,false,false) then + Duel.SpecialSummonStep(tc,0,p,p,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(0) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e3) + elseif tc:IsType(TYPE_MONSTER) then + Duel.SendtoGrave(tc,REASON_EFFECT) + Duel.Damage(p,1000,REASON_EFFECT) + end + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001722.lua b/script/c511001722.lua new file mode 100644 index 00000000..694c2093 --- /dev/null +++ b/script/c511001722.lua @@ -0,0 +1,23 @@ +--Fuda Aratame +function c511001722.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511001722.activate) + c:RegisterEffect(e1) +end +function c511001722.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTarget(c511001722.filter) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end +function c511001722.filter(e,c) + return c:IsSetCard(0xe6) +end diff --git a/script/c511001723.lua b/script/c511001723.lua new file mode 100644 index 00000000..743f69fc --- /dev/null +++ b/script/c511001723.lua @@ -0,0 +1,69 @@ +--Cardian - Hagi ni Inoshishi +function c511001723.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001723,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001723.spcost) + e1:SetTarget(c511001723.sptg) + e1:SetOperation(c511001723.spop) + c:RegisterEffect(e1) + c511001723.spe=e1 + if not c511001723.global_check then + c511001723.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001723.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001723.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001723.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001723.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==7 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001723.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001723.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001723.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001723.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001723.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001723.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001724.lua b/script/c511001724.lua new file mode 100644 index 00000000..d11091e6 --- /dev/null +++ b/script/c511001724.lua @@ -0,0 +1,112 @@ +--Cardian - Botan ni Cho +function c511001724.initial_effect(c) + c:EnableUnsummonable() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001724,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001724.spcost) + e1:SetTarget(c511001724.sptg) + e1:SetOperation(c511001724.spop) + c:RegisterEffect(e1) + --synchro level + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) + e3:SetTarget(c511001724.syntg) + e3:SetValue(1) + e3:SetOperation(c511001724.synop) + c:RegisterEffect(e3) + c511001724.spe=e1 + if not c511001724.global_check then + c511001724.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001724.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001724.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001724.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001724.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==6 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001724.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001724.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001724.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001724.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001724.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001724.cardiansynlevel(c) + return 2 +end +function c511001724.synfilter(c,syncard,tuner,f) + return c:IsFaceup() and c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) +end +function c511001724.syntg(e,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + local lv2=syncard:GetLevel()-c511001724.cardiansynlevel(c) + if lv<=0 and lv2<=0 then return false end + local g=Duel.GetMatchingGroup(c511001724.synfilter,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local res=g:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) + local res2=g:CheckWithSumEqual(c511001724.cardiansynlevel,lv2,minc,maxc) + return res or res2 +end +function c511001724.synop(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + local lv2=syncard:GetLevel()-c511001724.cardiansynlevel(c) + local g=Duel.GetMatchingGroup(c511001724.synfilter,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local res=g:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) + local res2=g:CheckWithSumEqual(c511001724.cardiansynlevel,lv2,minc,maxc) + local sg=nil + if (res2 and res and Duel.SelectYesNo(tp,aux.Stringid(57261568,3))) + or (res2 and not res) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + sg=g:SelectWithSumEqual(tp,c511001724.cardiansynlevel,lv2,minc,maxc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + sg=g:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,minc,maxc,syncard) + end + Duel.SetSynchroMaterial(sg) +end +function c511001724.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001725.lua b/script/c511001725.lua new file mode 100644 index 00000000..7c4c497a --- /dev/null +++ b/script/c511001725.lua @@ -0,0 +1,69 @@ +--Cardian - Momiji ni Shika +function c511001725.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001725,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511001725.spcost) + e1:SetTarget(c511001725.sptg) + e1:SetOperation(c511001725.spop) + c:RegisterEffect(e1) + c511001725.spe=e1 + if not c511001725.global_check then + c511001725.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001725.cardchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511001725.spcon(c,e) + if c==nil or not e then return false end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,c511001725.filter,1,nil) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001725.filter(c) + local re=c:GetReasonEffect() + local spchk=bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL) + return c:GetLevel()==10 and c:IsSetCard(0xe6) + and (spchk==0 or (spchk~=0 and (not re or not re:GetHandler():IsSetCard(0xe6) or not re:GetHandler():IsType(TYPE_MONSTER)))) +end +function c511001725.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001725.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511001725.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511001725.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001725.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) then + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if not tc:IsSetCard(0xe6) or not tc.spcon or not tc.spcon(tc,tc.spe) then + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end + end +end +function c511001725.cardchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511001726.lua b/script/c511001726.lua new file mode 100644 index 00000000..c23b98c8 --- /dev/null +++ b/script/c511001726.lua @@ -0,0 +1,46 @@ +--Ancient Gear Ultimate Hound Dog +function c511001726.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,511001544,aux.FilterBoolFunction(Card.IsSetCard,0x7),1,true,true) + --halve lp + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001726,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c511001726.lpcon) + e1:SetOperation(c511001726.lpop) + c:RegisterEffect(e1) + --multi attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(2) + c:RegisterEffect(e2) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c511001726.atkop) + c:RegisterEffect(e3) +end +function c511001726.lpcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511001726.lpop(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(1-tp,Duel.GetLP(1-tp)/2) +end +function c511001726.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511001726.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511001726.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c511001727.lua b/script/c511001727.lua new file mode 100644 index 00000000..576a8760 --- /dev/null +++ b/script/c511001727.lua @@ -0,0 +1,13 @@ +--Speed World - Neo +function c511001727.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE) + e2:SetValue(1) + c:RegisterEffect(e2) +end diff --git a/script/c511001728.lua b/script/c511001728.lua new file mode 100644 index 00000000..48294dec --- /dev/null +++ b/script/c511001728.lua @@ -0,0 +1,19 @@ +--Flamesaurus +function c511001728.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001728,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c511001728.operation) + c:RegisterEffect(e1) +end +function c511001728.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + c:RegisterEffect(e1) +end diff --git a/script/c511001729.lua b/script/c511001729.lua new file mode 100644 index 00000000..0cc32750 --- /dev/null +++ b/script/c511001729.lua @@ -0,0 +1,27 @@ +--Pompadour Blizzardon +function c511001729.initial_effect(c) + --position + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetTarget(c511001729.postg) + e1:SetOperation(c511001729.posop) + c:RegisterEffect(e1) +end +function c511001729.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) +end +function c511001729.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001730.lua b/script/c511001730.lua new file mode 100644 index 00000000..97708203 --- /dev/null +++ b/script/c511001730.lua @@ -0,0 +1,54 @@ +--Twin Volcano +function c511001730.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(33737664,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c511001730.damcon) + e2:SetTarget(c511001730.damtg) + e2:SetOperation(c511001730.damop) + c:RegisterEffect(e2) + --damage2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000527,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511001730.cost) + e2:SetTarget(c511001730.damtg) + e2:SetOperation(c511001730.damop2) + c:RegisterEffect(e2) +end +function c511001730.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001730.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511001730.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511001730.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001730.damop2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001731.lua b/script/c511001731.lua new file mode 100644 index 00000000..ddfad3f2 --- /dev/null +++ b/script/c511001731.lua @@ -0,0 +1,55 @@ +--Amazoness Arena +function c511001731.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001731.target) + e1:SetOperation(c511001731.activate) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511001731.chkop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001731,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_EVENT_PLAYER+EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(511001731) + e3:SetCost(c511001731.damcost) + e3:SetTarget(c511001731.damtg) + e3:SetOperation(c511001731.damop) + c:RegisterEffect(e3) +end +function c511001731.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,PLAYER_ALL,600) +end +function c511001731.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Recover(tp,600,REASON_EFFECT) + Duel.Recover(1-tp,600,REASON_EFFECT) +end +function c511001731.chkop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.GetAttacker() then return end + Duel.RaiseSingleEvent(e:GetHandler(),511001731,e,r,rp,Duel.GetAttacker():GetControler(),0) +end +function c511001731.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,100) end + Duel.PayLPCost(tp,100) +end +function c511001731.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(100) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,100) +end +function c511001731.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001732.lua b/script/c511001732.lua new file mode 100644 index 00000000..2781c1b8 --- /dev/null +++ b/script/c511001732.lua @@ -0,0 +1,88 @@ +--Antihope, the God of Despair +function c511001732.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c511001732.ttcon) + e1:SetOperation(c511001732.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_LIMIT_SET_PROC) + c:RegisterEffect(e2) + --cannot special summon + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --to hand + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001732,0)) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_GRAVE) + e4:SetCountLimit(1,511001732) + e4:SetCondition(c511001732.thcon) + e4:SetTarget(c511001732.thtg) + e4:SetOperation(c511001732.thop) + c:RegisterEffect(e4) + -- + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(0,1) + e5:SetTarget(c511001732.splimit) + c:RegisterEffect(e5) +end +function c511001732.ttcon(e,c) + if c==nil then return true end + local rg=Duel.GetTributeGroup(c) + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and rg:GetClassCount(Card.GetLevel)>=3 +end +function c511001732.tfilter(c,lv) + return c:GetLevel()==lv +end +function c511001732.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.GetTributeGroup(c) + local rg=Group.CreateGroup() + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local tc=g:Select(tp,1,1,nil):GetFirst() + if tc then + rg:AddCard(tc) + g:Remove(c511001732.tfilter,nil,tc:GetLevel()) + end + end + c:SetMaterial(rg) + Duel.Release(rg,REASON_SUMMON+REASON_MATERIAL) +end +function c511001732.ocfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001732.pcfilter(c) + return c:IsFaceup() and c:IsCode(52085072) +end +function c511001732.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001732.ocfilter,tp,0,LOCATION_MZONE,1,nil) + and not Duel.IsExistingMatchingCard(c511001732.pcfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001732.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + e:GetHandler():CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c511001732.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end +function c511001732.splimit(e,c,tp,sumtp,sumpos) + return bit.band(sumtp,SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ +end diff --git a/script/c511001733.lua b/script/c511001733.lua new file mode 100644 index 00000000..ce30a6e0 --- /dev/null +++ b/script/c511001733.lua @@ -0,0 +1,35 @@ +--Flame Egg Level 5 +function c511001733.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c511001733.condition) + e1:SetTarget(c511001733.target) + e1:SetOperation(c511001733.activate) + c:RegisterEffect(e1) +end +function c511001733.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and bit.band(r,REASON_EFFECT)~=0 +end +function c511001733.filter(c,e,tp) + return c:GetLevel()==5 and c:IsCanBeSpecialSummoned(e,0,1-tp,false,false) +end +function c511001733.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(1-tp,0,0,TYPE_MONSTER,0,0,5,0,0) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,1-tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511001733.activate(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanSpecialSummonMonster(1-tp,0,0,TYPE_MONSTER,0,0,5,0,0) then return end + local g=Duel.GetMatchingGroup(c511001733.filter,1-tp,LOCATION_HAND,0,nil,e,tp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and g:GetCount()>0 and Duel.SelectYesNo(1-tp,aux.Stringid(20758643,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(1-tp,1,1,nil) + Duel.SpecialSummon(sg,0,1-tp,1-tp,false,false,POS_FACEUP) + else + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c511001734.lua b/script/c511001734.lua new file mode 100644 index 00000000..a52cddca --- /dev/null +++ b/script/c511001734.lua @@ -0,0 +1,35 @@ +--Volcanic Abyss +function c511001734.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c511001734.condition) + e1:SetTarget(c511001734.target) + e1:SetOperation(c511001734.activate) + c:RegisterEffect(e1) +end +function c511001734.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c511001734.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,0,1-tp,LOCATION_HAND) +end +function c511001734.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,0,LOCATION_HAND) + if g:GetCount()>0 then + Duel.ConfirmCards(p,g) + local tg=g:Filter(Card.IsType,nil,TYPE_MONSTER) + if tg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + local sg=tg:Select(p,1,1,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + end + Duel.ShuffleHand(1-p) + end +end diff --git a/script/c511001735.lua b/script/c511001735.lua new file mode 100644 index 00000000..38296656 --- /dev/null +++ b/script/c511001735.lua @@ -0,0 +1,25 @@ +--Volcanic Ash +function c511001735.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001735.target) + e1:SetOperation(c511001735.activate) + c:RegisterEffect(e1) +end +function c511001735.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:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPATTACK) + local g=Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_ATTACK) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511001735.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511001736.lua b/script/c511001736.lua new file mode 100644 index 00000000..ca9fee40 --- /dev/null +++ b/script/c511001736.lua @@ -0,0 +1,32 @@ +--Frozen Ice Cave +function c511001736.initial_effect(c) + --lv change + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001736.target) + e1:SetOperation(c511001736.operation) + c:RegisterEffect(e1) +end +function c511001736.filter(c) + return c:IsPosition(POS_FACEUP_DEFENSE) and c:GetLevel()>0 +end +function c511001736.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001736.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001736.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPDEFENSE) + Duel.SelectTarget(tp,c511001736.filter,tp,LOCATION_MZONE,0,1,1,nil) + end +function c511001736.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end + diff --git a/script/c511001737.lua b/script/c511001737.lua new file mode 100644 index 00000000..d782c23f --- /dev/null +++ b/script/c511001737.lua @@ -0,0 +1,62 @@ +--Avalanche +function c511001737.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001737.target) + e1:SetOperation(c511001737.activate) + c:RegisterEffect(e1) +end +function c511001737.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if not eg or eg:GetCount()~=1 then return false end + local tc=eg:GetFirst() + if chkc then return chkc==tc and chkc:GetSummonType()==SUMMON_TYPE_XYZ end + if chk==0 then return tc and tc:IsOnField() and tc:IsCanBeEffectTarget(e) and tc:GetSummonType()==SUMMON_TYPE_XYZ end + Duel.SetTargetCard(tc) +end +function c511001737.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() 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_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001737.rcon) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_F) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001737.damcon) + e2:SetTarget(c511001737.damtg) + e2:SetOperation(c511001737.damop) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end +end +function c511001737.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001737.damcon(e,tp,eg,ep,ev,re,r,rp) + local tg=e:GetHandler():GetFirstCardTarget() + return tg and re and re:GetHandler()==tg +end +function c511001737.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=e:GetHandler():GetFirstCardTarget() + if chk==0 then return true end + Duel.SetTargetPlayer(tg:GetControler()) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tg:GetControler(),500) +end +function c511001737.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001738.lua b/script/c511001738.lua new file mode 100644 index 00000000..0d4c5a15 --- /dev/null +++ b/script/c511001738.lua @@ -0,0 +1,43 @@ +--Blizzard Egg Level 5 +function c511001738.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10000080,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c511001738.condition1) + e1:SetTarget(c511001738.target) + e1:SetOperation(c511001738.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetDescription(aux.Stringid(10000080,1)) + e2:SetCondition(c511001738.condition2) + c:RegisterEffect(e2) +end +function c511001738.condition1(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and bit.band(r,REASON_EFFECT)~=0 +end +function c511001738.condition2(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and bit.band(r,REASON_EFFECT)~=0 +end +function c511001738.filter(c,e,tp) + return c:GetLevel()==5 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001738.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(ep,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(ep,0,0,TYPE_MONSTER,0,0,5,0,0) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,ep,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,ep,500) +end +function c511001738.activate(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanSpecialSummonMonster(ep,0,0,TYPE_MONSTER,0,0,5,0,0) then return end + local g=Duel.GetMatchingGroup(c511001738.filter,ep,LOCATION_HAND,0,nil,e,ep) + if Duel.GetLocationCount(ep,LOCATION_MZONE)>0 and g:GetCount()>0 and Duel.SelectYesNo(ep,aux.Stringid(20758643,1)) then + Duel.Hint(HINT_SELECTMSG,ep,HINTMSG_SPSUMMON) + local sg=g:Select(ep,1,1,nil) + Duel.SpecialSummon(sg,0,ep,ep,false,false,POS_FACEUP) + else + Duel.Damage(ep,500,REASON_EFFECT) + end +end diff --git a/script/c511001739.lua b/script/c511001739.lua new file mode 100644 index 00000000..f11e3821 --- /dev/null +++ b/script/c511001739.lua @@ -0,0 +1,27 @@ +--Compensation Exchange +function c511001739.initial_effect(c) + --negate attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511001739.condition) + e1:SetTarget(c511001739.target) + e1:SetOperation(c511001739.operation) + c:RegisterEffect(e1) +end +function c511001739.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) +end +function c511001739.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttackTarget() end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,Duel.GetAttackTarget():GetAttack()) +end +function c511001739.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d and Duel.NegateAttack() then + if d:IsFacedown() then Duel.ConfirmCards(1-tp,d) end + Duel.Damage(tp,d:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511001740.lua b/script/c511001740.lua new file mode 100644 index 00000000..d0850a64 --- /dev/null +++ b/script/c511001740.lua @@ -0,0 +1,40 @@ +--Forced Change +function c511001740.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001740.condition) + e1:SetTarget(c511001740.target) + e1:SetOperation(c511001740.activate) + c:RegisterEffect(e1) +end +function c511001740.filter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) +end +function c511001740.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g then return false end + return g:IsExists(c511001740.filter,1,nil,tp) +end +function c511001740.filter2(c,re,rp,tf,ceg,cep,cev,cre,cr,crp,g) + return tf(re,rp,ceg,cep,cev,cre,cr,crp,0,c) and not g:IsContains(c) +end +function c511001740.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g then return false end + local tf=re:GetTarget() + local res,ceg,cep,cev,cre,cr,crp=Duel.CheckEvent(re:GetCode(),true) + if chkc then return chkc~=e:GetLabelObject() and chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and tf(re,rp,ceg,cep,cev,cre,cr,crp,0,chkc,g) end + if chk==0 then return Duel.IsExistingTarget(c511001740.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,re,rp,tf,ceg,cep,cev,cre,cr,crp,g) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001740.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,re,rp,tf,ceg,cep,cev,cre,cr,crp,g) +end +function c511001740.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g and g:GetFirst():IsRelateToEffect(e) then + Duel.ChangeTargetCard(ev,g) + end +end diff --git a/script/c511001742.lua b/script/c511001742.lua new file mode 100644 index 00000000..a61fbdd5 --- /dev/null +++ b/script/c511001742.lua @@ -0,0 +1,35 @@ +--Goyo Predator +function c511001742.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7391448,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCondition(c511001742.spcon) + e1:SetTarget(c511001742.sptg) + e1:SetOperation(c511001742.spop) + c:RegisterEffect(e1) +end +function c511001742.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not c:IsRelateToBattle() or c:IsFacedown() then return false end + return bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c511001742.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,LOCATION_GRAVE) +end +function c511001742.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001743.lua b/script/c511001743.lua new file mode 100644 index 00000000..af2c374f --- /dev/null +++ b/script/c511001743.lua @@ -0,0 +1,111 @@ +--Goyo Defender +function c511001743.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c511001743.spcon) + e1:SetOperation(c511001743.spop) + e1:SetValue(1) + c:RegisterEffect(e1) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511001743.con) + e2:SetOperation(c511001743.op) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetDescription(aux.Stringid(511000034,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(TIMING_DAMAGE_CAL) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetCondition(c511001743.atkcon) + e3:SetTarget(c511001743.atktg) + e3:SetOperation(c511001743.atkop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001743,1)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_DESTROYED) + e4:SetCondition(c511001743.descon) + e4:SetTarget(c511001743.destg) + e4:SetOperation(c511001743.desop) + c:RegisterEffect(e4) +end +function c511001743.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 + and not Duel.IsExistingMatchingCard(c511001743.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001743.cfilter(c) + return c:IsFacedown() or not c:IsCode(511001743) +end +function c511001743.spop(e,tp,eg,ep,ev,re,r,rp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511001743.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511001743.op(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():SetStatus(STATUS_PROC_COMPLETE,false) +end +function c511001743.atkcon(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a:GetControler()~=tp and d and d==e:GetHandler() +end +function c511001743.filter(c) + return c:IsFaceup() and c:IsCode(511001743) +end +function c511001743.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001743.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and e:GetHandler():GetFlagEffect(511001743)==0 end + e:GetHandler():RegisterFlagEffect(511001743,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c511001743.atkop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local atk=Duel.GetMatchingGroupCount(c511001743.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*1000 + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(atk) + c:RegisterEffect(e1) + end +end +function c511001743.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetReason(),0x41)==0x41 +end +function c511001743.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511001743.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511001744.lua b/script/c511001744.lua new file mode 100644 index 00000000..5589983e --- /dev/null +++ b/script/c511001744.lua @@ -0,0 +1,153 @@ +--Goyo King +function c511001744.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(c511001744.synfilter),1) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(3989465,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001744.atkcon) + e1:SetTarget(c511001744.atktg) + e1:SetOperation(c511001744.atkop) + c:RegisterEffect(e1) + --control all + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001744,0)) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCategory(CATEGORY_CONTROL) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCondition(c511001744.ctcon) + e2:SetTarget(c511001744.cttg) + e2:SetOperation(c511001744.ctop) + c:RegisterEffect(e2) + --control + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(4941482,0)) + e3:SetCategory(CATEGORY_CONTROL) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511001744.ctcon2) + e3:SetCost(c511001744.ctcost2) + e3:SetTarget(c511001744.cttg2) + e3:SetOperation(c511001744.ctop2) + c:RegisterEffect(e3) + if not c511001744.global_check then + c511001744.global_check=true + c511001744[0]=false + c511001744[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c511001744.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetOperation(c511001744.clear) + Duel.RegisterEffect(ge3,0) + end +end +function c511001744.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(Card.IsControler,1,nil,1-tp) then + c511001744[tp]=true + end + if eg:IsExists(Card.IsControler,1,nil,tp) then + c511001744[1-tp]=true + end +end +function c511001744.clear(e,tp,eg,ep,ev,re,r,rp) + c511001744[0]=false + c511001744[1]=false +end +function c511001744.synfilter(c) + return c:IsSetCard(0x20f) or c:IsCode(7391448) +end +function c511001744.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local c=e:GetHandler() + return ph==PHASE_DAMAGE and (c==Duel.GetAttacker() or c==Duel.GetAttackTarget()) + and not Duel.IsDamageCalculated() +end +function c511001744.atkfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x20f) or c:IsCode(7391448)) +end +function c511001744.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001744.atkfilter,tp,LOCATION_MZONE,0,1,nil) + and e:GetHandler():GetFlagEffect(511001744)==0 end + e:GetHandler():RegisterFlagEffect(511001744,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c511001744.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local atk=Duel.GetMatchingGroupCount(c511001744.atkfilter,tp,LOCATION_MZONE,0,nil)*400 + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end +function c511001744.ctcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c511001744.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,ft,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) +end +function c511001744.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc=g:GetFirst() + while tc do + Duel.GetControl(tc,tp) + tc=g:GetNext() + end +end +function c511001744.ctcon2(e,tp,eg,ep,ev,re,r,rp) + return c511001744[tp] +end +function c511001744.costfilter(c) + return c:IsSetCard(0x20f) or c:IsCode(7391448) +end +function c511001744.ctcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511001744.costfilter,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,c511001744.costfilter,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c511001744.ctfilter(c) + return c:IsFaceup() and c:IsLevelBelow(8) and c:IsAbleToChangeControler() +end +function c511001744.cttg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001744.ctfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001744.ctfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511001744.ctfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511001744.ctop2(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) then + if not tc:IsImmuneToEffect(e) and tc:IsAbleToChangeControler() then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end diff --git a/script/c511001745.lua b/script/c511001745.lua new file mode 100644 index 00000000..2a413253 --- /dev/null +++ b/script/c511001745.lua @@ -0,0 +1,42 @@ +--Power Darts Shooter +function c511001745.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001745,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511001745.target) + e1:SetOperation(c511001745.operation) + c:RegisterEffect(e1) +end +function c511001745.filter(c) + return c:IsFaceup() and c:IsSetCard(0x210) +end +function c511001745.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001745.filter(chkc) end + if chk==0 then return e:GetHandler():IsReleasableByEffect() + and Duel.IsExistingTarget(c511001745.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001745.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001745.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if Duel.Release(c,REASON_EFFECT)~=0 and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001745.atkcon) + e1:SetValue(600) + tc:RegisterEffect(e1) + end +end +function c511001745.atkcon(e) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x80 +end diff --git a/script/c511001746.lua b/script/c511001746.lua new file mode 100644 index 00000000..95628b8a --- /dev/null +++ b/script/c511001746.lua @@ -0,0 +1,35 @@ +--Rocket Darts Shooter +function c511001746.initial_effect(c) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001746,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511001746.target) + e1:SetOperation(c511001746.operation) + c:RegisterEffect(e1) +end +function c511001746.filter(c) + return c:IsFaceup() and c:IsSetCard(0x210) +end +function c511001746.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001746.filter(chkc) end + if chk==0 then return e:GetHandler():IsReleasableByEffect() + and Duel.IsExistingTarget(c511001746.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001746.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001746.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if Duel.Release(c,REASON_EFFECT)~=0 and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001747.lua b/script/c511001747.lua new file mode 100644 index 00000000..b7e6045a --- /dev/null +++ b/script/c511001747.lua @@ -0,0 +1,77 @@ +--Ultimate Darts Shooter +function c511001747.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001747,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511001747.tg) + e1:SetOperation(c511001747.op) + c:RegisterEffect(e1) + if not c511001747.global_check then + c511001747.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_PHASE+PHASE_END) + ge1:SetCondition(c511001747.spcon1) + ge1:SetOperation(c511001747.spop1) + ge1:SetCountLimit(1) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE+PHASE_END) + ge2:SetCondition(c511001747.spcon2) + ge2:SetOperation(c511001747.spop2) + ge2:SetCountLimit(1) + Duel.RegisterEffect(ge2,0) + end +end +function c511001747.filter(c,e,tp,tid) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and bit.band(c:GetReason(),0x42)==0x42 and c:GetTurnID()==tid + and c:IsSetCard(0x210) and c:GetFlagEffect(511001747)==0 +end +function c511001747.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001747.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.IsExistingTarget(c511001747.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local max=99 + if Duel.IsPlayerAffectedByEffect(tp,59822133) then max=1 end + Duel.SelectTarget(tp,c511001747.filter,tp,LOCATION_GRAVE,0,1,max,nil,e,tp,tid) +end +function c511001747.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()<=0 then return end + Duel.RegisterFlagEffect(tp,511001747,RESET_PHASE+PHASE_END,0,1) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511001747,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + tc=g:GetNext() + end +end +function c511001747.spcon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,511001747)>0 +end +function c511001747.spcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(1-tp,511001747)>0 +end +function c511001747.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetFlagEffect(511001747)>0 +end +function c511001747.spop1(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001747) + local sg=Duel.GetMatchingGroup(c511001747.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if sg:GetCount()>ft then return end + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) +end +function c511001747.spop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001747) + local sg=Duel.GetMatchingGroup(c511001747.spfilter,1-tp,LOCATION_GRAVE,0,nil,e,tp) + local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(1-tp,59822133) then ft=1 end + if sg:GetCount()>ft then return end + Duel.SpecialSummon(sg,0,1-tp,1-tp,false,false,POS_FACEUP) +end diff --git a/script/c511001748.lua b/script/c511001748.lua new file mode 100644 index 00000000..b3c81b9a --- /dev/null +++ b/script/c511001748.lua @@ -0,0 +1,39 @@ +--Sasumata Gardna +function c511001748.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(511001748,1)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001748.sptg) + e1:SetOperation(c511001748.spop) + c:RegisterEffect(e1) +end +function c511001748.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511001748.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001748.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c511001748.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001748.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511001748.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(-500) + if tc:RegisterEffect(e1) and c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511001749.lua b/script/c511001749.lua new file mode 100644 index 00000000..30066bfa --- /dev/null +++ b/script/c511001749.lua @@ -0,0 +1,46 @@ +--Element Sword +function c511001749.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(c511001749.target) + e1:SetOperation(c511001749.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(800) + e2:SetCondition(c511001749.condition) + 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 c511001749.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 c511001749.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 c511001749.condition(e) + local phase=Duel.GetCurrentPhase() + local ec=e:GetHandler():GetEquipTarget() + local tc=ec:GetBattleTarget() + return (phase==PHASE_DAMAGE or phase==PHASE_DAMAGE_CAL) + and ec and tc and (not ec:IsAttribute(tc:GetAttribute()) and not tc:IsAttribute(ec:GetAttribute())) +end diff --git a/script/c511001750.lua b/script/c511001750.lua new file mode 100644 index 00000000..d028943c --- /dev/null +++ b/script/c511001750.lua @@ -0,0 +1,167 @@ +--Emergency Evasion +function c511001750.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001750.condition) + e1:SetTarget(c511001750.target) + e1:SetOperation(c511001750.activate) + c:RegisterEffect(e1) +end +function c511001750.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511001750.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511001750.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,0,e:GetHandler()) + if g:GetCount()>0 and Duel.Remove(g,0,REASON_EFFECT+REASON_TEMPORARY)>0 then + local rg=Duel.GetOperatedGroup() + rg:KeepAlive() + local tc=rg:GetFirst() + while tc do + tc:RegisterFlagEffect(511001750,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=rg:GetNext() + end + if Duel.GetTurnPlayer()==tp then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC_G) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(0xff) + e1:SetCountLimit(1) + e1:SetLabelObject(rg) + e1:SetCondition(c511001750.drcon1) + e1:SetOperation(c511001750.drop1) + e1:SetReset(RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c511001750.drcon2) + e2:SetOperation(c511001750.drop2) + e2:SetLabelObject(rg) + e2:SetRange(0xff) + e2:SetReset(RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511001750.drcon3) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_CHAIN_END) + c:RegisterEffect(e4) + local e5=e2:Clone() + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + c:RegisterEffect(e5) + local e6=e2:Clone() + e6:SetCode(EVENT_DAMAGE_STEP_END) + c:RegisterEffect(e6) + local e7=e2:Clone() + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCountLimit(1) + c:RegisterEffect(e7) + end +end +function c511001750.drcon1(e,c,og) + if c==nil then return true end + local tp=c:GetControler() + return Duel.IsPlayerCanDraw(tp,1) and c:GetFlagEffect(511001749)==0 +end +function c511001750.retfilter(c,tp,tpe) + return c:GetFlagEffect(511001750)>0 and c:IsLocation(LOCATION_REMOVED) and c:IsType(tpe) + and (Duel.GetLocationCount(tp,c:GetPreviousLocation())>0 or c:IsType(TYPE_FIELD)) +end +function c511001750.drop1(e,tp,eg,ep,ev,re,r,rp,c,og) + local g=e:GetLabelObject() + c:RegisterFlagEffect(511001749,RESET_PHASE+PHASE_END,0,1) + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + Duel.Hint(HINT_CARD,0,511001750) + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + local tpe=0 + if tc:IsType(TYPE_MONSTER) then + tpe=TYPE_MONSTER + elseif tc:IsType(TYPE_SPELL) then + tpe=TYPE_SPELL + elseif tc:IsType(TYPE_TRAP) then + tpe=TYPE_TRAP + else + return + end + if g:IsExists(c511001750.retfilter,1,nil,tp,tpe) then + local rg=g:FilterSelect(tp,c511001750.retfilter,1,1,nil,tp,tpe) + Duel.HintSelection(rg) + local rc=rg:GetFirst() + if bit.band(rc:GetType(),TYPE_FIELD) then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 and Duel.SendtoGrave(of,REASON_RULE)==0 then + Duel.SendtoGrave(rc,REASON_RULE) + end + end + if rc:GetPreviousLocation()==LOCATION_MZONE then + Duel.ReturnToField(rc) + else + Duel.MoveToField(rc,tp,tp,rc:GetPreviousLocation(),rc:GetPreviousPosition(),true) + end + end + Duel.ShuffleHand(tp) + end + return +end +function c511001750.drcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsPlayerCanDraw(tp,1) and e:GetHandler():GetFlagEffect(511001749)==0 +end +function c511001750.drcon3(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsPlayerCanDraw(tp,1) and e:GetHandler():GetFlagEffect(511001749)==0 and Duel.GetCurrentChain()==0 +end +function c511001750.drop2(e,tp,eg,ep,ev,re,r,rp) + if not Duel.SelectYesNo(tp,aux.Stringid(30461781,0)) then return end + local g=e:GetLabelObject() + e:GetHandler():RegisterFlagEffect(511001749,RESET_PHASE+PHASE_END,0,1) + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + Duel.Hint(HINT_CARD,0,511001750) + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + local tpe=0 + if tc:IsType(TYPE_MONSTER) then + tpe=TYPE_MONSTER + elseif tc:IsType(TYPE_SPELL) then + tpe=TYPE_SPELL + elseif tc:IsType(TYPE_TRAP) then + tpe=TYPE_TRAP + else + return + end + if g:IsExists(c511001750.retfilter,1,nil,tp,tpe) then + local rg=g:FilterSelect(tp,c511001750.retfilter,1,1,nil,tp,tpe) + Duel.HintSelection(rg) + local rc=rg:GetFirst() + if bit.band(rc:GetType(),TYPE_FIELD) then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 and Duel.SendtoGrave(of,REASON_RULE)==0 then + Duel.SendtoGrave(rc,REASON_RULE) + end + end + if rc:GetPreviousLocation()==LOCATION_MZONE then + Duel.ReturnToField(rc) + else + Duel.MoveToField(rc,tp,tp,rc:GetPreviousLocation(),rc:GetPreviousPosition(),true) + end + end + Duel.ShuffleHand(tp) + end +end diff --git a/script/c511001751.lua b/script/c511001751.lua new file mode 100644 index 00000000..3e9d4466 --- /dev/null +++ b/script/c511001751.lua @@ -0,0 +1,51 @@ +--Insurance +function c511001751.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001751.target) + e1:SetOperation(c511001751.activate) + c:RegisterEffect(e1) + --Recover + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_HAND) + e2:SetCondition(c511001751.rccon) + e2:SetTarget(c511001751.rctg) + e2:SetOperation(c511001751.rcop) + c:RegisterEffect(e2) +end +function c511001751.filter(c) + return c:IsFacedown() and c:IsAbleToHand() +end +function c511001751.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c89882100.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001751.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511001751.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511001751.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFacedown() and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c511001751.rccon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511001751.rctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,500) +end +function c511001751.rcop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c511001752.lua b/script/c511001752.lua new file mode 100644 index 00000000..338c10e4 --- /dev/null +++ b/script/c511001752.lua @@ -0,0 +1,46 @@ +--Necro Illusion +function c511001752.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001752.target) + e1:SetOperation(c511001752.activate) + c:RegisterEffect(e1) +end +function c511001752.filter(c,e,tp,tid) + return bit.band(c:GetReason(),0x21)==0x21 and c:GetTurnID()==tid + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001752.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c511001752.filter(chkc,e,tp,tid) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001752.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp,tid) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001752.activate(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,c511001752.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,Duel.GetTurnCount()) + if g:GetCount()>0 then + Duel.HintSelection(g) + local tc=g:GetFirst() + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetOperation(c511001752.tgop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + Duel.SpecialSummonComplete() + end +end +function c511001752.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001753.lua b/script/c511001753.lua new file mode 100644 index 00000000..76c2d559 --- /dev/null +++ b/script/c511001753.lua @@ -0,0 +1,48 @@ +--Skill Shock +function c511001753.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001753.condition) + e1:SetCost(c511001753.cost) + e1:SetTarget(c511001753.target) + e1:SetOperation(c511001753.activate) + c:RegisterEffect(e1) +end +function c511001753.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev) +end +function c511001753.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c511001753.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511001753.activate(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + Duel.NegateEffect(ev) + if rc:IsRelateToEffect(re) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + rc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(1) + rc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + rc:RegisterEffect(e3) + end +end diff --git a/script/c511001754.lua b/script/c511001754.lua new file mode 100644 index 00000000..d432f73e --- /dev/null +++ b/script/c511001754.lua @@ -0,0 +1,29 @@ +--Arbitrator +function c511001754.initial_effect(c) + --end bp + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001754,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511001754.condition) + e1:SetCost(c511001754.cost) + e1:SetOperation(c511001754.operation) + c:RegisterEffect(e1) +end +function c511001754.cfilter(c,tp) + return c:GetPreviousControler()==tp +end +function c511001754.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and eg:IsExists(c511001754.cfilter,1,nil,tp) +end +function c511001754.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c511001754.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511001755.lua b/script/c511001755.lua new file mode 100644 index 00000000..8bffb6eb --- /dev/null +++ b/script/c511001755.lua @@ -0,0 +1,33 @@ +--Devoted Gardna +function c511001755.initial_effect(c) + --0 damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001755,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001755.condition) + e1:SetCost(c511001755.cost) + e1:SetOperation(c511001755.operation) + c:RegisterEffect(e1) +end +function c511001755.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) and d:IsFaceup() and d:IsAttackBelow(1000) +end +function c511001755.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() end + Duel.SendtoGrave(c,REASON_COST) +end +function c511001755.operation(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001755.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511001755.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511001756.lua b/script/c511001756.lua new file mode 100644 index 00000000..26975217 --- /dev/null +++ b/script/c511001756.lua @@ -0,0 +1,22 @@ +--Big Eater +function c511001756.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001756.spcon) + e1:SetOperation(c511001756.spop) + c:RegisterEffect(e1) +end +function c511001756.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,c:GetControler(),LOCATION_HAND,0,1,c) +end +function c511001756.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,2,c) + Duel.SendtoGrave(g,REASON_COST) +end diff --git a/script/c511001757.lua b/script/c511001757.lua new file mode 100644 index 00000000..589b2eac --- /dev/null +++ b/script/c511001757.lua @@ -0,0 +1,37 @@ +--Piri Reis Map +function c511001757.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001757.target) + e1:SetOperation(c511001757.activate) + c:RegisterEffect(e1) +end +function c511001757.afilter(c) + return c:GetAttack()==0 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511001757.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001757.afilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001757.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tc=Duel.SelectMatchingCard(tp,c511001757.afilter,tp,LOCATION_DECK,0,1,1,nil):GetFirst() + if tc and Duel.SendtoHand(tc,nil,REASON_EFFECT) then + Duel.ConfirmCards(1-tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_COST) + e1:SetOperation(c511001757.sumcost) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SPSUMMON_COST) + tc:RegisterEffect(e2) + end +end +function c511001757.sumcost(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(tp,Duel.GetLP(tp)/2) +end diff --git a/script/c511001758.lua b/script/c511001758.lua new file mode 100644 index 00000000..65a3f318 --- /dev/null +++ b/script/c511001758.lua @@ -0,0 +1,69 @@ +--Akashic Record +function c511001758.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001758.target) + e1:SetOperation(c511001758.activate) + c:RegisterEffect(e1) + if not c511001758.global_check then + c511001758.global_check=true + c511001758[0]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c511001758.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + ge2:SetOperation(c511001758.checkop) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_SPSUMMON_SUCCESS) + ge3:SetOperation(c511001758.checkop) + Duel.RegisterEffect(ge3,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_CHAINING) + ge3:SetOperation(c511001758.checkop) + Duel.RegisterEffect(ge3,0) + end +end +function c511001758.filter(c) + local code=c:GetCode() + if c511001758[0]<=0 then return false end + for i=1,c511001758[0] do + if code==c511001758[i] then return true end + end + return false +end +function c511001758.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if not c511001758.filter(tc) then + c511001758[0]=c511001758[0]+1 + c511001758[c511001758[0]]=tc:GetCode() + end + tc=eg:GetNext() + end +end +function c511001758.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511001758.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + local dg=Duel.GetOperatedGroup() + local rg=dg:Filter(c511001758.filter,nil) + if rg:GetCount()>0 then + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511001759.lua b/script/c511001759.lua new file mode 100644 index 00000000..669285c3 --- /dev/null +++ b/script/c511001759.lua @@ -0,0 +1,58 @@ +--Meteor Stream +function c511001759.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001759.damcon) + e1:SetTarget(c511001759.damtg) + e1:SetOperation(c511001759.damop) + c:RegisterEffect(e1) + if not c511001759.global_check then + c511001759.global_check=true + c511001759[0]=Group.CreateGroup() + c511001759[0]:KeepAlive() + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(c511001759.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001759.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001759.cfilter(c) + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_RELEASE) +end +function c511001759.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001759.cfilter,nil) + if g:GetCount()>0 then + c511001759[0]:Merge(g) + end +end +function c511001759.clear(e,tp,eg,ep,ev,re,r,rp) + c511001759[0]:Clear() +end +function c511001759.gfilter(c) + return c511001759[0]:IsContains(c) +end +function c511001759.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001759.gfilter,1,nil) +end +function c511001759.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511001759.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001760.lua b/script/c511001760.lua new file mode 100644 index 00000000..6603e35e --- /dev/null +++ b/script/c511001760.lua @@ -0,0 +1,42 @@ +--Overlay Barrage +function c511001760.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001760.cost) + e1:SetTarget(c511001760.target) + e1:SetOperation(c511001760.operation) + c:RegisterEffect(e1) +end +function c511001760.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c511001760.filter(c,cst) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and (not cst or c:GetOverlayCount()~=0) +end +function c511001760.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local chkcost=e:GetLabel()==1 and true or false + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001672.filter(chkc,chkcost) end + if chk==0 then + e:SetLabel(0) + return Duel.IsExistingTarget(c511001760.filter,tp,LOCATION_MZONE,0,1,nil,chkcost) + end + e:SetLabel(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001760.filter,tp,LOCATION_MZONE,0,1,1,nil,chkcost) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511001760.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local og=tc:GetOverlayGroup() + local ct=og:GetCount() + if Duel.SendtoGrave(og,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,ct*500,REASON_EFFECT) + end + end +end diff --git a/script/c511001761.lua b/script/c511001761.lua new file mode 100644 index 00000000..031958ff --- /dev/null +++ b/script/c511001761.lua @@ -0,0 +1,32 @@ +--Foolish Forest - Baalche Chem +function c511001761.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkdown + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4587638,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511001761.atkop) + c:RegisterEffect(e2) +end +function c511001761.atkop(e,tp,eg,ep,ev,re,r,rp) + if ev>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-ev) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001762.lua b/script/c511001762.lua new file mode 100644 index 00000000..cf3e968d --- /dev/null +++ b/script/c511001762.lua @@ -0,0 +1,112 @@ +--Spring Punch +function c511001762.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(c511001762.target) + e1:SetOperation(c511001762.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(c511001762.eqlimit) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(511001762) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511001762.damcon) + e3:SetTarget(c511001762.damtg) + e3:SetOperation(c511001762.damop) + c:RegisterEffect(e3) + if not c511001762.global_check then + c511001762.global_check=true + --register + local ge=Effect.CreateEffect(c) + ge:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge:SetCode(EVENT_ADJUST) + ge:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge:SetOperation(c511001762.regop) + Duel.RegisterEffect(ge,0) + end +end +function c511001762.eqlimit(e,c) + return c:IsRace(RACE_MACHINE) +end +function c511001762.eqfilter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c511001762.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001762.eqfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001762.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001762.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001762.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 c511001762.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001762)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511001762.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001762,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511001762.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + if e:GetLabel()0 +end +function c511001762.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetHandler():GetEquipTarget() + if chk==0 then return tc end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(tc:GetAttack()/2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()/2) +end +function c511001762.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=e:GetHandler():GetEquipTarget() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,tc:GetAttack()/2,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.SkipPhase(tp,PHASE_BATTLE,RESET_PHASE+PHASE_END,1,1) +end diff --git a/script/c511001763.lua b/script/c511001763.lua new file mode 100644 index 00000000..c0dd8fc9 --- /dev/null +++ b/script/c511001763.lua @@ -0,0 +1,38 @@ +--Skill Twist +function c511001763.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001763.condition) + e1:SetTarget(c511001763.target) + e1:SetOperation(c511001763.activate) + c:RegisterEffect(e1) +end +function c511001763.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsActiveType(TYPE_MONSTER) or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + if ep==tp then return end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return tc:IsLocation(LOCATION_MZONE) +end +function c511001763.filter(c,re,rp,tf,ceg,cep,cev,cre,cr,crp) + return tf(re,rp,ceg,cep,cev,cre,cr,crp,0,c) and c:IsFaceup() +end +function c511001763.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tf=re:GetTarget() + local res,ceg,cep,cev,cre,cr,crp=Duel.CheckEvent(re:GetCode(),true) + if chk==0 then return Duel.IsExistingMatchingCard(c511001763.filter,tp,LOCATION_MZONE,0,1,e:GetLabelObject(),re,rp,tf,ceg,cep,cev,cre,cr,crp) end +end +function c511001763.activate(e,tp,eg,ep,ev,re,r,rp) + local tf=re:GetTarget() + local res,ceg,cep,cev,cre,cr,crp=Duel.CheckEvent(re:GetCode(),true) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511001763.filter,tp,LOCATION_MZONE,0,1,1,e:GetLabelObject(),re,rp,tf,ceg,cep,cev,cre,cr,crp) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.ChangeTargetCard(ev,g) + end +end diff --git a/script/c511001764.lua b/script/c511001764.lua new file mode 100644 index 00000000..00e7382e --- /dev/null +++ b/script/c511001764.lua @@ -0,0 +1,45 @@ +--Trap Pause +function c511001764.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001764.target) + e1:SetOperation(c511001764.activate) + c:RegisterEffect(e1) +end +function c511001764.filter(c) + return c:IsFaceup() and c:IsType(TYPE_TRAP) and c:IsType(TYPE_CONTINUOUS) and not c:IsDisabled() +end +function c511001764.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c511001764.filter,tp,0,LOCATION_ONFIELD,nil) + if chk==0 then return ct>0 and Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511001764.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511001764.filter,tp,0,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end + Duel.Draw(tp,g:GetCount(),REASON_EFFECT) +end diff --git a/script/c511001765.lua b/script/c511001765.lua new file mode 100644 index 00000000..69221292 --- /dev/null +++ b/script/c511001765.lua @@ -0,0 +1,33 @@ +--Overlay Rebirth +function c511001765.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001765.target) + e1:SetOperation(c511001765.activate) + c:RegisterEffect(e1) +end +function c511001765.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001765.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511001765.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingTarget(Card.IsType,tp,LOCATION_GRAVE,0,2,nil,TYPE_MONSTER) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001765.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_GRAVE,0,2,2,nil,TYPE_MONSTER) +end +function c511001765.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:GetCount()<3 then return end + local tc=tg:Filter(Card.IsLocation,nil,LOCATION_MZONE):GetFirst() + local mat=tg:Filter(Card.IsLocation,nil,LOCATION_GRAVE) + if tc and tc:IsRelateToEffect(e) and tc:IsType(TYPE_XYZ) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) + and mat:GetCount()==2 then + Duel.Overlay(tc,mat) + end +end diff --git a/script/c511001766.lua b/script/c511001766.lua new file mode 100644 index 00000000..9eb3fb91 --- /dev/null +++ b/script/c511001766.lua @@ -0,0 +1,41 @@ +--Big Jaws (Anime) +function c511001766.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001766.spcon) + c:RegisterEffect(e1) + if not c511001766.global_check then + c511001766.global_check=true + c511001766[0]=true + c511001766[1]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHAIN_SOLVED) + ge1:SetOperation(c511001766.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001766.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001766.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c511001766[tp] +end +function c511001766.checkop(e,tp,eg,ep,ev,re,r,rp) + if re:GetActiveType()==TYPE_SPELL and re:IsHasType(EFFECT_TYPE_ACTIVATE) then + c511001766[rp]=true + end +end +function c511001766.clear(e,tp,eg,ep,ev,re,r,rp) + c511001766[0]=false + c511001766[1]=false +end diff --git a/script/c511001767.lua b/script/c511001767.lua new file mode 100644 index 00000000..60a5093a --- /dev/null +++ b/script/c511001767.lua @@ -0,0 +1,31 @@ +--Destruction Reward +function c511001767.initial_effect(c) + --destroyed + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511001767.condition) + e1:SetTarget(c511001767.target) + e1:SetOperation(c511001767.operation) + c:RegisterEffect(e1) +end +function c511001767.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return eg:GetCount()==1 and ec:IsPreviousLocation(LOCATION_MZONE) and ec:GetPreviousControler()==1-tp + and ec:IsReason(REASON_DESTROY) and ec:IsLevelAbove(5) +end +function c511001767.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=eg:GetFirst() + local ct=0 + if ec:IsLevelAbove(7) then ct=2 else ct=1 end + if chk==0 then return Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511001767.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001768.lua b/script/c511001768.lua new file mode 100644 index 00000000..e2533619 --- /dev/null +++ b/script/c511001768.lua @@ -0,0 +1,28 @@ +--Forced Release +function c511001768.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001768.target) + e1:SetOperation(c511001768.activate) + c:RegisterEffect(e1) +end +function c511001768.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()>0 +end +function c511001768.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001768.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001768.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001768.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511001768.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local og=tc:GetOverlayGroup() + if og:GetCount()==0 then return end + Duel.SendtoGrave(og,REASON_EFFECT) + end +end diff --git a/script/c511001769.lua b/script/c511001769.lua new file mode 100644 index 00000000..184c6ad2 --- /dev/null +++ b/script/c511001769.lua @@ -0,0 +1,29 @@ +--エクシーズ・ギフト +function c511001769.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001769.condition) + e1:SetTarget(c511001769.target) + e1:SetOperation(c511001769.activate) + c:RegisterEffect(e1) +end +function c511001769.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001769.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001769.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil) +end +function c511001769.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511001769.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001770.lua b/script/c511001770.lua new file mode 100644 index 00000000..15390e31 --- /dev/null +++ b/script/c511001770.lua @@ -0,0 +1,61 @@ +--カードカー・D +function c511001770.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetOperation(c511001770.sumsuc) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(45812361,0)) + e5:SetCategory(CATEGORY_DRAW) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511001770.condition) + e5:SetCost(c511001770.cost) + e5:SetTarget(c511001770.target) + e5:SetOperation(c511001770.operation) + c:RegisterEffect(e5) +end +function c511001770.sumsuc(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511001770,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) +end +function c511001770.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511001770)~=0 +end +function c511001770.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 and e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) +end +function c511001770.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511001770.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001771.lua b/script/c511001771.lua new file mode 100644 index 00000000..40f6c78a --- /dev/null +++ b/script/c511001771.lua @@ -0,0 +1,83 @@ +--Guardian Eatos +function c511001771.initial_effect(c) + --sum limit + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c511001771.sumlimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_SPSUMMON_PROC) + e4:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e4:SetRange(LOCATION_HAND) + e4:SetCondition(c511001771.spcon) + c:RegisterEffect(e4) + --remove + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511001771,0)) + e5:SetCategory(CATEGORY_REMOVE) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCost(c511001771.rmcost) + e5:SetTarget(c511001771.rmtg) + e5:SetOperation(c511001771.rmop) + c:RegisterEffect(e5) +end +function c511001771.cfilter(c) + return c:IsFaceup() and c:IsCode(55569674) +end +function c511001771.sumlimit(e) + return not Duel.IsExistingMatchingCard(c511001771.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end +function c511001771.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_MONSTER) + and Duel.IsExistingMatchingCard(c511001771.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511001771.eqfilter(c) + return c:IsCode(55569674) and c:IsDestructable() +end +function c511001771.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(c511001771.eqfilter,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,c511001771.eqfilter,1,1,nil) + Duel.Destroy(g,REASON_COST) +end +function c511001771.rmfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c511001771.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(1-tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(1-tp,LOCATION_GRAVE,0)-1) + if chk==0 then return tc and tc:IsType(TYPE_MONSTER) and tc:IsAbleToRemove() and tc:GetAttack()>0 end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,0) +end +function c511001771.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFieldCard(1-tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(1-tp,LOCATION_GRAVE,0)-1) + local sum=0 + while tc and tc:IsType(TYPE_MONSTER) and tc:IsAbleToRemove() and tc:GetAttack()>0 do + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + sum=sum+tc:GetAttack() + tc=Duel.GetFieldCard(1-tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(1-tp,LOCATION_GRAVE,0)-1) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(sum) + c:RegisterEffect(e1) +end diff --git a/script/c511001772.lua b/script/c511001772.lua new file mode 100644 index 00000000..ab4cb5ce --- /dev/null +++ b/script/c511001772.lua @@ -0,0 +1,73 @@ +--Xyz Strike +function c511001772.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY+CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001772.condition) + e1:SetTarget(c511001772.target) + e1:SetOperation(c511001772.activate) + c:RegisterEffect(e1) +end +function c511001772.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a or not d then return false end + if tp==ep or not re:IsActiveType(TYPE_TRAP) or not re:IsHasType(EFFECT_TYPE_ACTIVATE) + or not Duel.IsChainNegatable(ev) then return false end + return a:IsFaceup() and d:IsFaceup() and a:IsType(TYPE_XYZ) and d:IsType(TYPE_XYZ) + and a:GetControler()~=d:GetControler() +end +function c511001772.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001772.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a:IsControler(1-tp) then a,d=d,a end + local aatk=a:GetAttack() + local datk=d:GetAttack() + if tc:IsType(TYPE_MONSTER) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(d:GetAttack()) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_BATTLE) + a:RegisterEffect(e1) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0xfe0000) + d:RegisterEffect(e3) + else + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001772.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + end + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end +end +function c511001772.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev*2) +end diff --git a/script/c511001773.lua b/script/c511001773.lua new file mode 100644 index 00000000..010c4dc5 --- /dev/null +++ b/script/c511001773.lua @@ -0,0 +1,27 @@ +--Explosive Breakout +function c511001773.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511001773.condition) + e1:SetOperation(c511001773.activate) + c:RegisterEffect(e1) +end +function c511001773.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:IsControler(tp) and tc:IsFaceup() and tc:GetBattleTarget():GetPreviousControler()==1-tp + and tc:GetBattleTarget():IsLevelAbove(8) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 +end +function c511001773.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:IsRelateToBattle() and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.ChainAttack() + end +end diff --git a/script/c511001774.lua b/script/c511001774.lua new file mode 100644 index 00000000..8bda90ba --- /dev/null +++ b/script/c511001774.lua @@ -0,0 +1,47 @@ +--Summon Pass +function c511001774.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001774,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c511001774.sumcon) + e2:SetTarget(c511001774.sumtg) + e2:SetOperation(c511001774.sumop) + c:RegisterEffect(e2) +end +function c511001774.sumcon(e,tp,eg,ep,ev,re,r,rp) + local c=eg:GetFirst() + return c:IsOnField() and c:IsLevelBelow(4) +end +function c511001774.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return true end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tc:GetControler(),1) +end +function c511001774.sumop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local p=tc:GetControler() + local hc=Duel.GetDecktopGroup(1-p,1):GetFirst() + Duel.Draw(1-p,1,REASON_EFFECT) + if hc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CARDTYPE) + local op=Duel.SelectOption(p,70,71,72) + Duel.ConfirmCards(p,hc) + Duel.ShuffleHand(1-p) + if (op~=0 and hc:IsType(TYPE_MONSTER)) or (op~=1 and hc:IsType(TYPE_SPELL)) or (op~=2 and hc:IsType(TYPE_TRAP)) then + Duel.Destroy(tc,REASON_EFFECT) + end + end + end +end diff --git a/script/c511001775.lua b/script/c511001775.lua new file mode 100644 index 00000000..e8747254 --- /dev/null +++ b/script/c511001775.lua @@ -0,0 +1,98 @@ +--Hologram Projection +function c511001775.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001775.target) + e1:SetOperation(c511001775.activate) + c:RegisterEffect(e1) +end +function c511001775.filter(c,e,tp) + return c:IsFaceup() and c:GetLevel()>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001775,0,0x1,c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) +end +function c511001775.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001775.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001775.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511001775.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001775.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511001775,0,0x1,tc:GetAttack(),tc:GetDefense(),tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) then return end + c:AddMonsterAttribute(TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(tc:GetCode()) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetDefense()) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SET_BASE_ATTACK) + e3:SetValue(tc:GetAttack()) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + c:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + c:RegisterEffect(e5) + local e6=e1:Clone() + e6:SetCode(EFFECT_REMOVE_TYPE) + e6:SetValue(TYPE_TRAP) + c:RegisterEffect(e6) + local e7=e1:Clone() + e7:SetCode(EFFECT_CHANGE_LEVEL) + e7:SetValue(tc:GetLevel()) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_CANNOT_ATTACK) + e8:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e8) + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(5361647,0)) + e9:SetCategory(CATEGORY_DESTROY) + e9:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e9:SetCode(EVENT_BE_BATTLE_TARGET) + e9:SetTarget(c511001775.destg) + e9:SetOperation(c511001775.desop) + e9:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e9) + local e10=Effect.CreateEffect(c) + e10:SetDescription(aux.Stringid(5361647,0)) + e10:SetCategory(CATEGORY_DESTROY) + e10:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e10:SetRange(LOCATION_MZONE) + e10:SetCode(EVENT_BECOME_TARGET) + e10:SetTarget(c511001775.destg) + e10:SetOperation(c511001775.desop) + e10:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e10) +end +function c511001775.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 c511001775.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c511001776.lua b/script/c511001776.lua new file mode 100644 index 00000000..7c18fff6 --- /dev/null +++ b/script/c511001776.lua @@ -0,0 +1,168 @@ +--Number 43: Manipulator of Souls (anime) +function c511001776.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),2,3) + c:EnableReviveLimit() + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56051086,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511001776.eqcon) + e1:SetTarget(c511001776.eqtg) + e1:SetOperation(c511001776.eqop) + 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_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c511001776.indcon) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e3) + --gain atk + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(56051086,1)) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_RECOVER) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511001776.atkcon) + e4:SetOperation(c511001776.atkop) + c:RegisterEffect(e4) + --damage + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511001776,0)) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(511001776) + e5:SetTarget(c511001776.damtg) + e5:SetOperation(c511001776.damop) + c:RegisterEffect(e5) + --negate + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(11819616,0)) + e6:SetCategory(CATEGORY_DISABLE) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e6:SetCode(EVENT_CHAINING) + e6:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c511001776.discon) + e6:SetCost(c511001776.discost) + e6:SetTarget(c511001776.distg) + e6:SetOperation(c511001776.disop) + c:RegisterEffect(e6) + --battle indestructable + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e7:SetValue(c511001776.indes) + c:RegisterEffect(e7) + if not c511001776.global_check then + c511001776.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001776.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001776.xyz_number=43 +function c511001776.eqcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ +end +function c511001776.filter(c) + return c:IsSetCard(0x48) and c:IsType(TYPE_MONSTER) +end +function c511001776.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001776.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511001776.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511001776.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511001776.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001776.eqlimit) + tc:RegisterEffect(e1) + end +end +function c511001776.eqlimit(e,c) + return c==e:GetOwner() +end +function c511001776.indcon(e) + return e:GetHandler():GetEquipGroup():IsExists(Card.IsSetCard,1,nil,0x48) +end +function c511001776.atkcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511001776.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ev) + e1:SetReset(RESET_EVENT+0x1ff0000) + e:GetHandler():RegisterEffect(e1) + Duel.RaiseSingleEvent(e:GetHandler(),511001776,e,r,rp,ep,ev) +end +function c511001776.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c511001776.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001776.disfilter(c,g) + return g:IsContains(c) +end +function c511001776.discon(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipGroup() + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not eq then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsExists(c511001776.disfilter,1,nil,eq) and Duel.IsChainDisablable(ev) +end +function c511001776.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001776.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511001776.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end +function c511001776.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,56051086) + Duel.CreateToken(1-tp,56051086) +end +function c511001776.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001777.lua b/script/c511001777.lua new file mode 100644 index 00000000..52fc285c --- /dev/null +++ b/script/c511001777.lua @@ -0,0 +1,142 @@ +--CNo.43 魂魄傀儡鬼神カオス・マリオネッター +function c511001777.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),3,4) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001777.rankupregcon) + e1:SetOperation(c511001777.rankupregop) + c:RegisterEffect(e1) + --battle indestructable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e5:SetValue(c511001777.indes) + c:RegisterEffect(e5) + if not c511001777.global_check then + c511001777.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001777.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001777.xyz_number=43 +function c511001777.rumfilter(c) + return c:IsCode(56051086) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001777.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001777.rumfilter,1,nil) +end +function c511001777.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(32446630,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511001777.spcon) + e1:SetCost(c511001777.spcost) + e1:SetTarget(c511001777.sptg) + e1:SetOperation(c511001777.spop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsCode,32446631)) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --Negates Battle Damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e3:SetCondition(c511001777.rdcon) + e3:SetOperation(c511001777.rdop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + --atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_EXTRA_ATTACK) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(aux.TargetBoolFunction(Card.IsCode,32446631)) + e4:SetValue(c511001777.atkval) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) +end +function c511001777.cfilter(c,lp) + return c:IsFaceup() and c:GetAttack()>lp +end +function c511001777.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001777.cfilter,tp,0,LOCATION_MZONE,1,nil,Duel.GetLP(1-tp)) +end +function c511001777.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001777.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,32446631,0,0x4011,-2,-2,1,RACE_FIEND,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,tp,LOCATION_MZONE) +end +function c511001777.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,32446631,0,0x4011,-2,-2,1,RACE_FIEND,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,32446631) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(Duel.GetLP(1-tp)) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + token:RegisterEffect(e2) + Duel.SpecialSummonComplete() +end +function c511001777.rdcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (a:IsCode(32446631) or (d and d:IsCode(32446631))) and tp==ep +end +function c511001777.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) + local c=e:GetHandler() + if ev>0 and tp==ep then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(ev) + c:RegisterEffect(e1) + end +end +function c511001777.atkval(e,c) + return e:GetHandler():GetOverlayCount()-1 +end +function c511001777.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,32446630) + Duel.CreateToken(1-tp,32446630) +end +function c511001777.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001778.lua b/script/c511001778.lua new file mode 100644 index 00000000..c61af1ce --- /dev/null +++ b/script/c511001778.lua @@ -0,0 +1,33 @@ +--牙鮫帝シャーク・カイゼル +function c511001778.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,3,4) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(69610924,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001778.cost) + e1:SetOperation(c511001778.operation) + c:RegisterEffect(e1) +end +function c511001778.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001778.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local atk=(c:GetMaterialCount()-c:GetOverlayCount())*1000 + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001779.lua b/script/c511001779.lua new file mode 100644 index 00000000..05457502 --- /dev/null +++ b/script/c511001779.lua @@ -0,0 +1,66 @@ +--Number 19: Freezerdon (anime) +function c511001779.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,2) + c:EnableReviveLimit() + --reattach + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001779,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001779.cost) + e1:SetTarget(c511001779.target) + e1:SetOperation(c511001779.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511001779.indes) + c:RegisterEffect(e2) + if not c511001779.global_check then + c511001779.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001779.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001779.xyz_number=19 +function c511001779.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001779.filter(c) + local g=c:GetMaterial() + g=g:Filter(c511001779.mfilter,nil) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and g:GetCount()>0 +end +function c511001779.mfilter(c) + return c:IsLocation(LOCATION_GRAVE) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001779.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001779.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end +end +function c511001779.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511001779.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local mat=tc:GetMaterial():Filter(c511001779.mfilter,nil) + if not tc:IsImmuneToEffect(e) then + Duel.Overlay(tc,mat) + end + end +end +function c511001779.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,55067058) + Duel.CreateToken(1-tp,55067058) +end +function c511001779.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001780.lua b/script/c511001780.lua new file mode 100644 index 00000000..9137715e --- /dev/null +++ b/script/c511001780.lua @@ -0,0 +1,49 @@ +--天穹覇龍ドラゴアセンション +function c511001780.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c511001780.atkval) + c:RegisterEffect(e1) + --Destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511001780.desreptg) + e2:SetOperation(c511001780.desrepop) + c:RegisterEffect(e2) +end +function c511001780.atkval(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)*1000 +end +function c511001780.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) and c:IsOnField() and c:IsFaceup() + and c:IsAbleToExtra() end + return true +end +function c511001780.mgfilter(c,e,tp,sync) + return c:IsControler(tp) and c:IsLocation(LOCATION_HAND+LOCATION_GRAVE+LOCATION_REMOVED) + and bit.band(c:GetReason(),0x80008)==0x80008 and c:GetReasonCard()==sync + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001780.desrepop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sumtype=c:GetSummonType() + local mg=c:GetMaterial():Filter(c511001780.mgfilter,nil,e,tp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if Duel.SendtoDeck(c,nil,0,REASON_EFFECT+REASON_REPLACE)>0 + and sumtype==SUMMON_TYPE_SYNCHRO and mg:GetCount()>0 + and mg:GetCount()<=ft then + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001781.lua b/script/c511001781.lua new file mode 100644 index 00000000..c6d2ee0c --- /dev/null +++ b/script/c511001781.lua @@ -0,0 +1,247 @@ +--Number C6: Chronomaly Chaos Atlandis (Anime) +function c511001781.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001781.rankupregcon) + e1:SetOperation(c511001781.rankupregop) + c:RegisterEffect(e1) + --battle indestructable + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e7:SetValue(c511001781.indes) + c:RegisterEffect(e7) + if not c511001781.global_check then + c511001781.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001781.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001781.xyz_number=6 +function c511001781.rumfilter(c) + return c:IsCode(9161357) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001781.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001781.rumfilter,1,nil) +end +function c511001781.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(876330,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001781.eqtg) + e1:SetOperation(c511001781.eqop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --equip 2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32559361,0)) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLED) + e2:SetTarget(c511001781.eqtg2) + e2:SetOperation(c511001781.eqop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c511001781.val) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(16037007,0)) + e4:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetCode(EVENT_CHAINING) + e4:SetCondition(c511001781.discon) + e4:SetCost(c511001781.discost) + e4:SetTarget(c511001781.distg) + e4:SetOperation(c511001781.disop) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + --lp 1 + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(84926738,1)) + e5:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_FREE_CHAIN) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511001781.lpcon) + e5:SetCost(c511001781.lpcost) + e5:SetTarget(c511001781.lptg) + e5:SetOperation(c511001781.lpop) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(38107923,1)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EVENT_PHASE+PHASE_STANDBY) + e6:SetCondition(c511001781.spcon) + e6:SetTarget(c511001781.sptg) + e6:SetOperation(c511001781.spop) + e6:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e6) +end +function c511001781.eqfilter(c,tp) + return c:IsSetCard(0x7f) and (c:IsAbleToChangeControler() or c:IsControler(tp)) +end +function c511001781.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001781.eqfilter(chkc,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511001781.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511001781.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511001781.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) and tc~=c then + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001781.eqlimit) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001781,RESET_EVENT+0x1fe0000,0,0) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c511001781.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001781.eqtg2(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + if chk==0 then return tc and not tc:IsType(TYPE_TOKEN) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and tc:IsAbleToChangeControler() and not c:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsOnField() end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,tc,1,0,0) +end +function c511001781.eqtc(c) + return c:GetFlagEffect(511001781)>0 +end +function c511001781.val(e,c) + return c:GetEquipGroup():FilterCount(c511001781.eqtc,nil)*1000 +end +function c511001781.discon(e,tp,eg,ep,ev,re,r,rp) + if not c511001781.eqcon(e,tp,eg,ep,ev,re,r,rp) then return false end + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsContains(e:GetHandler()) and Duel.IsChainDisablable(ev) +end +function c511001781.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(Card.IsAbleToGraveAsCost,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001781.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001781.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511001781.lpcon(e,tp,eg,ep,ev,re,r,rp) + if not c511001781.eqcon(e,tp,eg,ep,ev,re,r,rp) then return false end + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_CHAINING,true) + if res and tre then + if tre==e then return false end + end + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c511001781.lptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLP(1-tp)~=1 end +end +function c511001781.lpcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:CheckRemoveOverlayCard(tp,3,REASON_COST) end + local ov=c:GetOverlayGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ) + local sg=ov:Select(tp,3,3,nil) + Duel.SendtoGrave(sg,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001781.lpop(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(1-tp,1) +end +function c511001781.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return tp==Duel.GetTurnPlayer() and c:GetOverlayCount()==0 +end +function c511001781.spfilter(c,e,tp,mc) + return c:IsCode(9161357) and mc:IsCanBeXyzMaterial(c) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,true) +end +function c511001781.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001781.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,c) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001781.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsControler(1-tp) or c:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001781.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,c) + local sc=g:GetFirst() + if sc then + local mg=c:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(c)) + Duel.Overlay(sc,Group.FromCards(c)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,true,POS_FACEUP) + sc:CompleteProcedure() + end +end +function c511001781.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,6387204) + Duel.CreateToken(1-tp,6387204) +end +function c511001781.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001782.lua b/script/c511001782.lua new file mode 100644 index 00000000..3d0158a9 --- /dev/null +++ b/script/c511001782.lua @@ -0,0 +1,78 @@ +--パワー・ピカクス +function c511001782.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(c511001782.target) + e1:SetOperation(c511001782.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) + --remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(90246973,0)) + e3:SetCategory(CATEGORY_REMOVE+CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c511001782.rmtg) + e3:SetOperation(c511001782.rmop) + c:RegisterEffect(e3) +end +function c511001782.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 c511001782.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 c511001782.rmfilter(c,lv) + return c:IsLevelBelow(lv) and c:IsAbleToRemove() +end +function c511001782.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ec=e:GetHandler():GetEquipTarget() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511001782.rmfilter(chkc,ec:GetLevel()) end + if chk==0 then return Duel.IsExistingTarget(c511001782.rmfilter,tp,0,LOCATION_GRAVE,1,nil,ec:GetLevel()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511001782.rmfilter,tp,0,LOCATION_GRAVE,1,1,nil,ec:GetLevel()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511001782.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ec=c:GetEquipTarget() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 then + local atk=tc:GetTextAttack()/2 + if atk<=0 then return end + --Atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetCondition(c511001782.atcon) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + c:RegisterEffect(e1) + end +end +function c511001782.atcon(e) + local ec=e:GetHandler():GetEquipTarget() + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and Duel.GetAttackTarget() + and (ec==Duel.GetAttacker() or Duel.GetAttackTarget()==ec) +end diff --git a/script/c511001783.lua b/script/c511001783.lua new file mode 100644 index 00000000..f7650b1c --- /dev/null +++ b/script/c511001783.lua @@ -0,0 +1,63 @@ +--霧の王 +function c511001783.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35950025,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511001783.ntcon) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_DISABLE) + e2:SetCondition(c511001783.discon) + e2:SetTarget(c511001783.distg) + c:RegisterEffect(e2) + --1 atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(14261867,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e3:SetCondition(c511001783.atkcon) + e3:SetOperation(c511001783.atkop) + c:RegisterEffect(e3) +end +function c511001783.filter(c) + return c:IsFaceup() and c:IsCode(111215001) +end +function c511001783.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and (Duel.IsExistingMatchingCard(c511001783.filter,c:GetControler(),LOCATION_ONFIELD,0,1,nil) + or Duel.IsEnvironment(111215001)) +end +function c511001783.discon(e) + return e:GetHandler():IsAttackPos() +end +function c511001783.distg(e,c) + return c~=e:GetHandler() +end +function c511001783.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c==Duel.GetAttacker() and bc and bc:IsControler(1-tp) +end +function c511001783.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and bc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + bc:RegisterEffect(e2) + end +end diff --git a/script/c511001784.lua b/script/c511001784.lua new file mode 100644 index 00000000..7696ce2c --- /dev/null +++ b/script/c511001784.lua @@ -0,0 +1,60 @@ +--青氷の白夜龍 +function c511001784.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79473793,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_F) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001784.negcon) + e1:SetTarget(c511001784.negtg) + e1:SetOperation(c511001784.negop) + c:RegisterEffect(e1) + --change battle target + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(79473793,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511001784.cbcon) + e2:SetCost(c511001784.cbcost) + e2:SetOperation(c511001784.cbop) + c:RegisterEffect(e2) +end +function c511001784.negcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return g and g:IsContains(c) +end +function c511001784.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsDestructable() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001784.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(re:GetHandler(),REASON_EFFECT) + end +end +function c511001784.cbcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return r~=REASON_REPLACE and c~=bt and bt:IsFaceup() and bt:GetControler()==c:GetControler() +end +function c511001784.cfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGraveAsCost() +end +function c511001784.cbcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001784.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001784.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001784.cbop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeAttackTarget(e:GetHandler()) +end diff --git a/script/c511001785.lua b/script/c511001785.lua new file mode 100644 index 00000000..c7b6abea --- /dev/null +++ b/script/c511001785.lua @@ -0,0 +1,50 @@ +--痛魂の呪術 +function c511001785.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001785.condition1) + e1:SetOperation(c511001785.operation1) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCondition(c511001785.condition2) + e2:SetOperation(c511001785.operation2) + c:RegisterEffect(e2) +end +function c511001785.condition1(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c511001785.operation1(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_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511001785.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511001785.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end +function c511001785.condition2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511001785.operation2(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511001786.lua b/script/c511001786.lua new file mode 100644 index 00000000..ae478268 --- /dev/null +++ b/script/c511001786.lua @@ -0,0 +1,41 @@ +--雲魔物-アイ・オブ・ザ・タイフーン +function c511001786.initial_effect(c) + --pos Change + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(57610714,0)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c511001786.posop) + c:RegisterEffect(e3) + --cost + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetDescription(aux.Stringid(511001786,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCountLimit(1) + e4:SetCondition(c511001786.atkcon) + e4:SetOperation(c511001786.atkop) + c:RegisterEffect(e4) +end +function c511001786.posop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) +end +function c511001786.atkcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511001786.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if 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:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001787.lua b/script/c511001787.lua new file mode 100644 index 00000000..1405a5ce --- /dev/null +++ b/script/c511001787.lua @@ -0,0 +1,39 @@ +--Mirage Target +function c511001787.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001787.condition) + e1:SetCost(c511001787.cost) + e1:SetTarget(c511001787.target) + e1:SetOperation(c511001787.activate) + c:RegisterEffect(e1) +end +function c511001787.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(1-tp) +end +function c511001787.cfilter(c) + return c:IsSetCard(0x18) and c:IsAbleToGraveAsCost() +end +function c511001787.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511001787.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511001787.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001787.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + local atk=g:GetFirst():GetTextAttack() + if atk<0 then atk=0 end + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,atk) +end +function c511001787.activate(e,tp,eg,ep,ev,re,r,rp) + if not Duel.NegateAttack() then return end + Duel.Recover(tp,Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM),REASON_EFFECT) +end diff --git a/script/c511001788.lua b/script/c511001788.lua new file mode 100644 index 00000000..bce39170 --- /dev/null +++ b/script/c511001788.lua @@ -0,0 +1,57 @@ +--Big Summon Cloud +function c511001788.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --maintain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511001788.mtcon) + e2:SetOperation(c511001788.mtop) + c:RegisterEffect(e2) + --sp summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001788,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511001788.spcost) + e3:SetTarget(c511001788.sptg) + e3:SetOperation(c511001788.spop) + c:RegisterEffect(e3) +end +function c511001788.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001788.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)~=0 and Duel.SelectYesNo(tp,aux.Stringid(79850798,1)) then + Duel.SendtoGrave(Duel.GetFieldGroup(tp,LOCATION_HAND,0),REASON_COST) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end +function c511001788.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511001788.filter(c,e,tp) + return c:IsSetCard(0x18) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001788.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001788.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001788.spop(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,c511001788.filter,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 diff --git a/script/c511001789.lua b/script/c511001789.lua new file mode 100644 index 00000000..bfc119b0 --- /dev/null +++ b/script/c511001789.lua @@ -0,0 +1,19 @@ +--Kiribi Lady +function c511001789.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001789.spcon) + c:RegisterEffect(e1) +end +function c511001789.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511001789.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001789.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511001790.lua b/script/c511001790.lua new file mode 100644 index 00000000..f052dcb3 --- /dev/null +++ b/script/c511001790.lua @@ -0,0 +1,45 @@ +--Xyz Cyclone +function c511001790.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLED) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCondition(c511001790.condition) + e1:SetTarget(c511001790.target) + e1:SetOperation(c511001790.activate) + c:RegisterEffect(e1) +end +function c511001790.condition(e,tp,eg,ep,ev,re,r,rp) + local bc=Duel.GetAttackTarget() + if not bc then return false end + if bc:IsControler(tp) then bc=Duel.GetAttacker() end + e:SetLabelObject(bc) + return bc:IsStatus(STATUS_BATTLE_DESTROYED) and bc:GetBattleTarget():IsStatus(STATUS_OPPO_BATTLE) +end +function c511001790.filter(c,e) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) and (not e or c:IsCanBeEffectTarget(e)) +end +function c511001790.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511001790.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c511001790.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local bc=e:GetLabelObject() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=Duel.GetMatchingGroup(c511001790.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler(),e) + local g1=sg:Select(tp,1,1,nil) + sg:Sub(g1) + Duel.SetTargetCard(g1) + if bc:GetOverlayCount()>0 and sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(511001790,0)) then + local g2=sg:Select(tp,1,1,nil) + Duel.SetTargetCard(g2) + g1:Merge(g2) + end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,g1:GetCount(),0,0) +end +function c511001790.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511001791.lua b/script/c511001791.lua new file mode 100644 index 00000000..3e0ed794 --- /dev/null +++ b/script/c511001791.lua @@ -0,0 +1,182 @@ +--覇王黒竜オッドアイズ・リベリオン・ドラゴン +function c511001791.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),7,2) + c:EnableReviveLimit() + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --pendulum set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001791.pctg) + e1:SetOperation(c511001791.pcop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511001791.descon) + e2:SetTarget(c511001791.destg) + e2:SetOperation(c511001791.desop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MATERIAL_CHECK) + e3:SetValue(c511001791.valcheck) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --multi atk + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001791,0)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCondition(c511001791.atkcon) + e4:SetCost(c511001791.atkcost) + e4:SetTarget(c511001791.atktg) + e4:SetOperation(c511001791.atkop) + c:RegisterEffect(e4) + --To Pendulum + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(35952884,1)) + e5:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e5:SetCode(EVENT_TO_GRAVE) + e5:SetCondition(c511001791.pencon) + e5:SetTarget(c511001791.pentg) + e5:SetOperation(c511001791.penop) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EVENT_REMOVE) + c:RegisterEffect(e6) + local e7=e5:Clone() + e7:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e7) + if not c511001791.global_check then + c511001791.global_check=true + c511001791[0]=0 + c511001791[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511001791.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001791.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001791.pcfilter(c) + return c:IsType(TYPE_PENDULUM) and not c:IsForbidden() +end +function c511001791.pctg(e,tp,eg,ep,ev,re,r,rp,chk) + local seq=e:GetHandler():GetSequence() + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) + and Duel.IsExistingMatchingCard(c511001791.pcfilter,tp,LOCATION_DECK,0,1,nil) end +end +function c511001791.pcop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local seq=e:GetHandler():GetSequence() + if not Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c511001791.pcfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.MoveToField(g:GetFirst(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end +function c511001791.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ and e:GetLabel()==1 +end +function c511001791.desfilter(c) + return c:IsFaceup() and c:IsLevelBelow(7) and c:IsDestructable() +end +function c511001791.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511001791.desfilter,tp,0,LOCATION_MZONE,nil) + local sum=g:GetSum(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,sum) +end +function c511001791.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001791.desfilter,tp,0,LOCATION_MZONE,nil) + if Duel.Destroy(g,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local sum=dg:GetSum(Card.GetPreviousAttackOnField) + Duel.Damage(1-tp,sum,REASON_EFFECT) + end +end +function c511001791.matfilter(c) + return c:IsType(TYPE_XYZ) and c:IsHasEffect(EFFECT_XYZ_LEVEL) and c:IsXyzLevel(c,7) +end +function c511001791.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(c511001791.matfilter,1,nil) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end +function c511001791.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 and c511001791[tp]>0 +end +function c511001791.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001791.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEffectCount(EFFECT_EXTRA_ATTACK)==0 end +end +function c511001791.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(c511001791[tp]-1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511001791.pencon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511001791.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + local lsc=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local rsc=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + local g=Group.FromCards(lsc,rsc):Filter(Card.IsDestructable,nil) + if chk==0 then return g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511001791.penop(e,tp,eg,ep,ev,re,r,rp) + local lsc=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local rsc=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + local g=Group.FromCards(lsc,rsc) + if Duel.Destroy(g,REASON_EFFECT)~=0 and e:GetHandler():IsRelateToEffect(e) then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end +function c511001791.desfilter2(c,tp) + return c:GetPreviousControler()==tp and bit.band(c:GetPreviousTypeOnField(),TYPE_MONSTER)==TYPE_MONSTER +end +function c511001791.checkop(e,tp,eg,ep,ev,re,r,rp) + local ct1=eg:FilterCount(c511001791.desfilter2,nil,1-tp) + local ct2=eg:FilterCount(c511001791.desfilter2,nil,tp) + if ct1>0 then + c511001791[tp]=c511001791[tp]+ct1 + end + if ct2>0 then + c511001791[1-tp]=c511001791[1-tp]+ct2 + end +end +function c511001791.clear(e,tp,eg,ep,ev,re,r,rp) + c511001791[0]=0 + c511001791[1]=0 +end diff --git a/script/c511001792.lua b/script/c511001792.lua new file mode 100644 index 00000000..b998fd7d --- /dev/null +++ b/script/c511001792.lua @@ -0,0 +1,33 @@ +--Number Karma +function c511001792.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511001792.damcon) + e2:SetTarget(c511001792.damtg) + e2:SetOperation(c511001792.damop) + c:RegisterEffect(e2) +end +function c511001792.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x48) +end +function c511001792.damcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c511001792.cfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511001792.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,500) +end +function c511001792.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,500,REASON_EFFECT,true) + Duel.Damage(tp,500,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511001793.lua b/script/c511001793.lua new file mode 100644 index 00000000..59bd7225 --- /dev/null +++ b/script/c511001793.lua @@ -0,0 +1,109 @@ +--Chaos Return +function c511001793.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001793.condition) + e1:SetCost(c511001793.cost) + e1:SetTarget(c511001793.target) + e1:SetOperation(c511001793.activate) + c:RegisterEffect(e1) +end +function c511001793.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001793.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:SetLabelObject(Duel.GetAttacker()) + Duel.HintSelection(Group.FromCards(Duel.GetAttacker())) + Duel.NegateAttack() +end +function c511001793.filter(c,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return c:IsType(TYPE_SPELL) and (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) and (c:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) +end +function c511001793.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001793.filter(chkc,tp,eg,ep,ev,re,r,rp) end + if chk==0 then return Duel.IsExistingTarget(c511001793.filter,tp,LOCATION_GRAVE,0,1,nil,tp,eg,ep,ev,re,r,rp) + and Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + Duel.SelectTarget(tp,c511001793.filter,tp,LOCATION_GRAVE,0,1,1,nil,tp,eg,ep,ev,re,r,rp) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) +end +function c511001793.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001793.tgfilter,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 and Duel.SendtoGrave(g,REASON_EFFECT)~=0 then + if tc and tc:IsRelateToEffect(e) then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + if not te then return end + local con=te:GetCondition() + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + if (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + Duel.BreakEffect() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end + local a=e:GetLabelObject() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(a:GetEffectCount(EFFECT_EXTRA_ATTACK)+1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + a:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + a:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_FIRST_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + a:RegisterEffect(e1) + end +end diff --git a/script/c511001794.lua b/script/c511001794.lua new file mode 100644 index 00000000..a7299293 --- /dev/null +++ b/script/c511001794.lua @@ -0,0 +1,28 @@ +--Temptation of the Goddess +function c511001794.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001794.target) + e1:SetOperation(c511001794.operation) + c:RegisterEffect(e1) +end +function c511001794.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummon(1-tp) end +end +function c511001794.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,1-tp,false,false) +end +function c511001794.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001794.filter,tp,0,LOCATION_HAND,nil,e,tp) + local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.ConfirmCards(tp,hg) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(57554544,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SpecialSummon(sg,0,1-tp,1-tp,false,false,POS_FACEUP_ATTACK) + end + Duel.ShuffleHand(1-tp) +end diff --git a/script/c511001795.lua b/script/c511001795.lua new file mode 100644 index 00000000..0d8bba67 --- /dev/null +++ b/script/c511001795.lua @@ -0,0 +1,40 @@ +--Pendulum Storm +function c511001795.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c511001795.cost) + e1:SetTarget(c511001795.target) + e1:SetOperation(c511001795.activate) + c:RegisterEffect(e1) +end +function c511001795.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local lsc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local rsc1=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + local lsc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,6) + local rsc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,7) + local g=Group.FromCards(lsc1,rsc1,lsc2,rsc2):Filter(Card.IsDestructable,nil) + local ct=g:FilterCount(Card.IsControler,nil,1-tp) + local desct=Duel.GetTargetCount(c511001795.filter,tp,0,LOCATION_ONFIELD,e:GetHandler()) + if chk==0 then return g:GetCount()>0 and desct-ct>0 end + Duel.Destroy(g,REASON_COST) +end +function c511001795.filter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511001795.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c511001795.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c511001795.filter,tp,0,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001795.filter,tp,0,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001795.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001796.lua b/script/c511001796.lua new file mode 100644 index 00000000..d060bb1d --- /dev/null +++ b/script/c511001796.lua @@ -0,0 +1,44 @@ +--Performage Shadow Maker +function c511001796.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(511001796,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001796.spcon) + e1:SetCost(c511001796.spcost) + e1:SetTarget(c511001796.sptg) + e1:SetOperation(c511001796.spop) + c:RegisterEffect(e1) +end +function c511001796.spcon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsContains(e:GetHandler()) +end +function c511001796.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001796.filter(c,e,tp) + return c:IsCode(511001796) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001796.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001796.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001796.spop(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,c511001796.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001797.lua b/script/c511001797.lua new file mode 100644 index 00000000..9b821e29 --- /dev/null +++ b/script/c511001797.lua @@ -0,0 +1,27 @@ +--Glare Level 5 +function c511001797.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001797.target) + e1:SetOperation(c511001797.activate) + c:RegisterEffect(e1) +end +function c511001797.filter(c) + return c:IsFaceup() and c:GetLevel()==5 +end +function c511001797.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001797.filter,tp,LOCATION_MZONE,0,1,nil) end + local dam=Duel.GetMatchingGroupCount(c511001797.filter,tp,LOCATION_MZONE,0,nil)*500 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511001797.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511001797.filter,tp,LOCATION_MZONE,0,nil)*500 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511001798.lua b/script/c511001798.lua new file mode 100644 index 00000000..d9f3dcea --- /dev/null +++ b/script/c511001798.lua @@ -0,0 +1,58 @@ +--Abyss Stage - Treasure Ship of the Seven Lucky Gods +function c511001798.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --attach and destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(78933589,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_BOTH_SIDE) + e2:SetTarget(c511001798.target) + e2:SetOperation(c511001798.activate) + c:RegisterEffect(e2) + --Effect Draw + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DRAW_COUNT) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(1,1) + e3:SetValue(c511001798.val) + c:RegisterEffect(e3) +end +function c511001798.filter(c) + return not c:IsType(TYPE_TOKEN) +end +function c511001798.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001798.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001798.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511001798.filter,tp,LOCATION_MZONE,0,1,1,nil) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,g:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511001798.activate(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 not tc:IsImmuneToEffect(e) then + local og=tc:GetOverlayGroup() + if og:GetCount()>0 then + Duel.SendtoGrave(og,REASON_RULE) + end + Duel.Overlay(c,Group.FromCards(tc)) + end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) +end +function c511001798.owfilter(c,tp) + return c:GetOwner()==tp +end +function c511001798.val(e,c) + return e:GetHandler():GetOverlayGroup():FilterCount(c511001798.owfilter,nil,Duel.GetTurnPlayer())+1 +end diff --git a/script/c511001799.lua b/script/c511001799.lua new file mode 100644 index 00000000..f0d757ca --- /dev/null +++ b/script/c511001799.lua @@ -0,0 +1,32 @@ +--Exploding Cloud +function c511001799.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001799.target) + e1:SetOperation(c511001799.activate) + c:RegisterEffect(e1) +end +function c511001799.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsDestructable() +end +function c511001799.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001799.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001799.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001799.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,g:GetFirst():GetAttack()) +end +function c511001799.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + local dam=tc:GetAttack() + if dam<0 then return end + Duel.Damage(tp,dam,REASON_EFFECT) + end +end diff --git a/script/c511001800.lua b/script/c511001800.lua new file mode 100644 index 00000000..8de3bbb0 --- /dev/null +++ b/script/c511001800.lua @@ -0,0 +1,45 @@ +--Superior Overlay +function c511001800.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001800.condition) + e1:SetTarget(c511001800.target) + e1:SetOperation(c511001800.activate) + c:RegisterEffect(e1) +end +function c511001800.cfilter(c,ct) + return c:IsType(TYPE_XYZ) and c:GetOverlayCount()>ct +end +function c511001800.ofilter(c) + return c:IsType(TYPE_XYZ) and (c:GetOverlayCount()>0 or c:IsFaceup()) +end +function c511001800.condition(e,tp,eg,ep,ev,re,r,rp) + local og=Duel.GetMatchingGroup(c511001800.ofilter,tp,0,LOCATION_MZONE,nil) + local ct=og:GetSum(Card.GetOverlayCount) + return Duel.IsExistingMatchingCard(c511001800.cfilter,tp,LOCATION_MZONE,0,1,nil,ct) +end +function c511001800.filter(c) + return c:IsType(TYPE_XYZ) and (c:GetOverlayCount()>0 or c:IsFaceup()) and c:IsDestructable() +end +function c511001800.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001800.filter,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c511001800.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511001800.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001800.filter,tp,0,LOCATION_MZONE,nil) + local dg=sg:Filter(Card.CheckRemoveOverlayCard,nil,1-tp,1,REASON_EFFECT) + if dg:GetCount()>0 and Duel.SelectYesNo(1-tp,aux.Stringid(81330115,0)) then + local g=dg:Select(1-tp,1,10,nil) + sg:Sub(g) + local tc=g:GetFirst() + while tc do + tc:RemoveOverlayCard(1-tp,1,1,REASON_EFFECT) + tc=g:GetNext() + end + end + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511001801.lua b/script/c511001801.lua new file mode 100644 index 00000000..9d3c72fc --- /dev/null +++ b/script/c511001801.lua @@ -0,0 +1,30 @@ +--Breakthrough +function c511001801.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001801.condition) + e1:SetTarget(c511001801.target) + e1:SetOperation(c511001801.activate) + c:RegisterEffect(e1) +end +function c511001801.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511001801.filter(c,e) + return c:IsDestructable() and (not e or c:IsRelateToEffect(e)) +end +function c511001801.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511001801.filter,1,nil,nil) end + local g=eg:Filter(c511001801.filter,nil,nil) + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511001801.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001801.filter,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511001802.lua b/script/c511001802.lua new file mode 100644 index 00000000..545e5f91 --- /dev/null +++ b/script/c511001802.lua @@ -0,0 +1,50 @@ +--Fake Friendship Treaty +function c511001802.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_STANDBY_PHASE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetTarget(c511001802.limit) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e4) + --self destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511001802.descon1) + e5:SetOperation(c511001802.desop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_DAMAGE) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c511001802.descon2) + e6:SetOperation(c511001802.desop) + c:RegisterEffect(e6) +end +function c511001802.limit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsLevelBelow(4) +end +function c511001802.descon1(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(tp) +end +function c511001802.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511001802.descon2(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and rp==tp +end diff --git a/script/c511001803.lua b/script/c511001803.lua new file mode 100644 index 00000000..f1264354 --- /dev/null +++ b/script/c511001803.lua @@ -0,0 +1,56 @@ +--Stonehenge +function c511001803.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001803.target) + e1:SetOperation(c511001803.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511001803.desop) + c:RegisterEffect(e2) +end +function c511001803.spfilter(c,e,tp) + return c:GetAttack()==0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001803.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001803.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001803.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001803.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001803.eqlimit(e,c) + return e:GetLabelObject()==c +end +function c511001803.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001803.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + end +end +function c511001803.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001804.lua b/script/c511001804.lua new file mode 100644 index 00000000..7ea44ae4 --- /dev/null +++ b/script/c511001804.lua @@ -0,0 +1,31 @@ +--Dummy Marker +function c511001804.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(983995,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511001804.drcon) + e1:SetTarget(c511001804.drtg) + e1:SetOperation(c511001804.drop) + c:RegisterEffect(e1) +end +function c511001804.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) + and c:IsPreviousPosition(POS_FACEDOWN) +end +function c511001804.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dr=1 + if rp~=tp and re:IsActiveType(TYPE_SPELL) then dr=2 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(dr) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,dr) +end +function c511001804.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001805.lua b/script/c511001805.lua new file mode 100644 index 00000000..3ef3a14f --- /dev/null +++ b/script/c511001805.lua @@ -0,0 +1,30 @@ +--Charge +function c511001805.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001805.target) + e1:SetOperation(c511001805.activate) + c:RegisterEffect(e1) +end +function c511001805.filter(c) + return c:IsFaceup() and c:IsCode(50400231) +end +function c511001805.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001805.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511001805.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001805.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(2000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511001806.lua b/script/c511001806.lua new file mode 100644 index 00000000..d62130fe --- /dev/null +++ b/script/c511001806.lua @@ -0,0 +1,29 @@ +--Bear Trap +function c511001806.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + 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:SetTarget(c511001806.target) + e1:SetOperation(c511001806.activate) + c:RegisterEffect(e1) +end +function c511001806.filter(c) + return c:IsFaceup() and c:IsAttackBelow(1500) and c:IsDestructable() +end +function c511001806.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001806.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001806.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001806.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001806.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001807.lua b/script/c511001807.lua new file mode 100644 index 00000000..753cdf7c --- /dev/null +++ b/script/c511001807.lua @@ -0,0 +1,25 @@ +--Invisible Wire +function c511001807.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001807.condition) + e1:SetTarget(c511001807.target) + e1:SetOperation(c511001807.activate) + c:RegisterEffect(e1) +end +function c511001807.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511001807.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() and tg:IsAttackBelow(2000) end + Duel.SetTargetCard(tg) +end +function c511001807.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001808.lua b/script/c511001808.lua new file mode 100644 index 00000000..933f4cfa --- /dev/null +++ b/script/c511001808.lua @@ -0,0 +1,25 @@ +--Invisible Wire +function c511001808.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001808.condition) + e1:SetTarget(c511001808.target) + e1:SetOperation(c511001808.activate) + c:RegisterEffect(e1) +end +function c511001808.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511001808.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() and tg:IsAttackBelow(2000) end + Duel.SetTargetCard(tg) +end +function c511001808.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001809.lua b/script/c511001809.lua new file mode 100644 index 00000000..6b0a1c89 --- /dev/null +++ b/script/c511001809.lua @@ -0,0 +1,4 @@ +--Mask of Shine & Dark +function c511001809.initial_effect(c) + c:EnableReviveLimit() +end diff --git a/script/c511001810.lua b/script/c511001810.lua new file mode 100644 index 00000000..13633ec2 --- /dev/null +++ b/script/c511001810.lua @@ -0,0 +1,4 @@ +--Contract of Mask +function c511001810.initial_effect(c) + aux.AddRitualProcGreaterCode(c,511001809) +end diff --git a/script/c511001811.lua b/script/c511001811.lua new file mode 100644 index 00000000..3338da63 --- /dev/null +++ b/script/c511001811.lua @@ -0,0 +1,4 @@ +--Psycho-Puppet +function c511001811.initial_effect(c) + c:EnableReviveLimit() +end diff --git a/script/c511001812.lua b/script/c511001812.lua new file mode 100644 index 00000000..ede4b0f0 --- /dev/null +++ b/script/c511001812.lua @@ -0,0 +1,4 @@ +--Puppet Ritual +function c511001812.initial_effect(c) + aux.AddRitualProcGreaterCode(c,511001811) +end diff --git a/script/c511001813.lua b/script/c511001813.lua new file mode 100644 index 00000000..e06781d3 --- /dev/null +++ b/script/c511001813.lua @@ -0,0 +1,48 @@ +--Curse of Millennium Shield +function c511001813.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001813.target) + e1:SetOperation(c511001813.activate) + c:RegisterEffect(e1) +end +c511001813.fit_monster={32012841} +function c511001813.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=32012841 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) + or c:IsHasEffect(EFFECT_NECRO_VALLEY) then return false end + if m:IsContains(c) then + m:RemoveCard(c) + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + m:AddCard(c) + else + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + end + return result +end +function c511001813.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c511001813.filter,tp,0x13,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511001813.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c511001813.filter,tp,0x13,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511001814.lua b/script/c511001814.lua new file mode 100644 index 00000000..153bff80 --- /dev/null +++ b/script/c511001814.lua @@ -0,0 +1,59 @@ +--Yamadron Ritual +function c511001814.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001814.target) + e1:SetOperation(c511001814.activate) + c:RegisterEffect(e1) +end +c511001814.fit_monster={70345785} +function c511001814.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=70345785 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) + or c:IsHasEffect(EFFECT_NECRO_VALLEY) then return false end + local mg2=Duel.GetMatchingGroup(c511001814.filter2,tp,LOCATION_DECK,0,nil,c) + m:Merge(mg2) + if m:IsContains(c) then + m:RemoveCard(c) + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + m:AddCard(c) + else + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + end + m:Sub(mg2) + return result +end +function c511001814.filter2(c,rc) + return c:IsCanBeRitualMaterial(rc) and c:GetLevel()>0 +end +function c511001814.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c511001814.filter,tp,0x33,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x33) +end +function c511001814.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c511001814.filter,tp,0x33,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + local mg2=Duel.GetMatchingGroup(c511001814.filter2,tp,LOCATION_DECK,0,nil,tc) + mg:Merge(mg2) + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + tc:SetMaterial(mat) + local mat1=mat:Filter(Card.IsLocation,nil,LOCATION_DECK) + mat:Sub(mat1) + Duel.ReleaseRitualMaterial(mat) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_RELEASE+REASON_MATERIAL+REASON_RITUAL) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511001815.lua b/script/c511001815.lua new file mode 100644 index 00000000..c615d3a7 --- /dev/null +++ b/script/c511001815.lua @@ -0,0 +1,53 @@ +--Gate Guardian Ritual +function c511001815.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001815.target) + e1:SetOperation(c511001815.activate) + c:RegisterEffect(e1) +end +c511001815.fit_monster={25833572} +function c511001815.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=25833572 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) then return false end + if m:IsContains(c) then + m:RemoveCard(c) + result=m:IsExists(Card.IsCode,1,nil,25955164) and m:IsExists(Card.IsCode,1,nil,62340868) + and m:IsExists(Card.IsCode,1,nil,98434877) + m:AddCard(c) + else + result=m:IsExists(Card.IsCode,1,nil,25955164) and m:IsExists(Card.IsCode,1,nil,62340868) + and m:IsExists(Card.IsCode,1,nil,98434877) + end + return result +end +function c511001815.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c511001815.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001815.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c511001815.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat1=mg:FilterSelect(tp,Card.IsCode,1,1,nil,25955164) + local mat2=mg:FilterSelect(tp,Card.IsCode,1,1,nil,62340868) + local mat3=mg:FilterSelect(tp,Card.IsCode,1,1,nil,98434877) + mat1:Merge(mat2) + mat1:Merge(mat3) + tc:SetMaterial(mat1) + Duel.ReleaseRitualMaterial(mat1) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511001816.lua b/script/c511001816.lua new file mode 100644 index 00000000..208ca9fa --- /dev/null +++ b/script/c511001816.lua @@ -0,0 +1,58 @@ +--Ultimate Dragon +function c511001816.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001816.target) + e1:SetOperation(c511001816.activate) + c:RegisterEffect(e1) +end +c511001816.fit_monster={23995346} +function c511001816.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=23995346 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) then return false end + local mg2=Duel.GetMatchingGroup(c511001816.filter2,tp,LOCATION_DECK,0,nil,c) + m:Merge(mg2) + if m:IsContains(c) then + m:RemoveCard(c) + result=m:IsExists(Card.IsCode,3,nil,89631139) + m:AddCard(c) + else + result=m:IsExists(Card.IsCode,3,nil,89631139) + end + m:Sub(mg2) + return result +end +function c511001816.filter2(c,rc) + return c:IsCanBeRitualMaterial(rc) and c:GetLevel()>0 +end +function c511001816.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c511001816.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001816.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c511001816.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + local mg2=Duel.GetMatchingGroup(c511001816.filter2,tp,LOCATION_DECK,0,nil,tc) + mg:Merge(mg2) + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:FilterSelect(tp,Card.IsCode,3,3,nil,89631139) + tc:SetMaterial(mat) + local mat1=mat:Filter(Card.IsLocation,nil,LOCATION_DECK) + mat:Sub(mat1) + Duel.ReleaseRitualMaterial(mat) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_RELEASE+REASON_MATERIAL+REASON_RITUAL) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511001817.lua b/script/c511001817.lua new file mode 100644 index 00000000..91d3d322 --- /dev/null +++ b/script/c511001817.lua @@ -0,0 +1,48 @@ +--Revival of Sennen Genjin +function c511001817.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001817.target) + e1:SetOperation(c511001817.activate) + c:RegisterEffect(e1) +end +c511001817.fit_monster={76232340} +function c511001817.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=76232340 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) + or c:IsHasEffect(EFFECT_NECRO_VALLEY) then return false end + if m:IsContains(c) then + m:RemoveCard(c) + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + m:AddCard(c) + else + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + end + return result +end +function c511001817.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c511001817.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c511001817.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c511001817.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511001818.lua b/script/c511001818.lua new file mode 100644 index 00000000..3664979a --- /dev/null +++ b/script/c511001818.lua @@ -0,0 +1,47 @@ +--Curse of Tri-Horned Dragon +function c511001818.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001818.target) + e1:SetOperation(c511001818.activate) + c:RegisterEffect(e1) +end +c511001818.fit_monster={39111158} +function c511001818.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=39111158 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) then return false end + if m:IsContains(c) then + m:RemoveCard(c) + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + m:AddCard(c) + else + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + end + return result +end +function c511001818.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c511001818.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001818.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c511001818.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511001819.lua b/script/c511001819.lua new file mode 100644 index 00000000..f8c04d26 --- /dev/null +++ b/script/c511001819.lua @@ -0,0 +1,59 @@ +--Revived Serpent Night Dragon +function c511001819.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001819.target) + e1:SetOperation(c511001819.activate) + c:RegisterEffect(e1) +end +c511001819.fit_monster={66516792} +function c511001819.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=66516792 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) + or c:IsHasEffect(EFFECT_NECRO_VALLEY) then return false end + local mg2=Duel.GetMatchingGroup(c511001819.filter2,tp,LOCATION_DECK,0,nil,c) + m:Merge(mg2) + if m:IsContains(c) then + m:RemoveCard(c) + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + m:AddCard(c) + else + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + end + m:Sub(mg2) + return result +end +function c511001819.filter2(c,rc) + return c:IsCanBeRitualMaterial(rc) and c:GetLevel()>0 +end +function c511001819.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c511001819.filter,tp,0x32,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x32) +end +function c511001819.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c511001819.filter,tp,0x32,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + local mg2=Duel.GetMatchingGroup(c511001819.filter2,tp,LOCATION_DECK,0,nil,tc) + mg:Merge(mg2) + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + tc:SetMaterial(mat) + local mat1=mat:Filter(Card.IsLocation,nil,LOCATION_DECK) + mat:Sub(mat1) + Duel.ReleaseRitualMaterial(mat) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_RELEASE+REASON_MATERIAL+REASON_RITUAL) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511001820.lua b/script/c511001820.lua new file mode 100644 index 00000000..42421d30 --- /dev/null +++ b/script/c511001820.lua @@ -0,0 +1,47 @@ +--Cosmo Queen's Prayer +function c511001820.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001820.target) + e1:SetOperation(c511001820.activate) + c:RegisterEffect(e1) +end +c511001820.fit_monster={38999506} +function c511001820.filter(c,e,tp,m) + local cd=c:GetCode() + if cd~=38999506 or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) then return false end + if m:IsContains(c) then + m:RemoveCard(c) + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + m:AddCard(c) + else + result=m:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + end + return result +end +function c511001820.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + return Duel.IsExistingMatchingCard(c511001820.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001820.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c511001820.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp,mg) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + mg:RemoveCard(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511001821.lua b/script/c511001821.lua new file mode 100644 index 00000000..b1a7340f --- /dev/null +++ b/script/c511001821.lua @@ -0,0 +1,251 @@ +--Necroid Synchro +function c511001821.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --synchro effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) + e1:SetTarget(c511001821.sctg) + e1:SetOperation(c511001821.scop) + c:RegisterEffect(e1) + if not c511001821.global_check then + c511001821.global_check=true + --double tuner + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(c511001821.op) + Duel.RegisterEffect(ge1,0) + end +end +function c511001821.op(e,tp,eg,ep,ev,re,r,rp) + --Double Tuners + if c62242678 and not c62242678.dobtun then --Hot Red Dragon Archfiend King Calamity + local mt=c62242678 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsAttribute(ATTRIBUTE_DARK) and mc:IsRace(RACE_DRAGON) + and mc:IsType(TYPE_SYNCHRO) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end + if c511001603 and not c511001603.dobtun then --Hot Red Dragon Archfiend King Calamity (Anime) + local mt=c511001603 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsType(TYPE_SYNCHRO) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end + if c97489701 and not c97489701.dobtun then --Red Nova Dragon + local mt=c97489701 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsCode(70902743) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end + if c16172067 and not c16172067.dobtun then --Red Dragon Archfiend Tyrant + local mt=c16172067 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return true end + mt.minntct=1 + mt.maxntct=99 + mt.sync=true + mt.dobtun=true + end + if c93157004 and not c93157004.dobtun then --Vylon Omega + local mt=c93157004 + mt.tuner_filter=function(mc) return true end + mt.nontuner_filter=function(mc) return mc and mc:IsSetCard(0x30) end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + mt.dobtun=true + end +end +function c511001821.filter(c,e,tp) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511001821.matfilter1,tp,LOCATION_GRAVE,0,nil,c) + local nontuner=Duel.GetMatchingGroup(c511001821.matfilter2,tp,LOCATION_GRAVE,0,nil,c) + if not c:IsType(TYPE_SYNCHRO) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,false) + or not mt.sync then return false end + if c:IsSetCard(0x301) then + return nontuner:IsExists(c511001821.lvfilter2,1,nil,c,tuner) + elseif mt.dobtun then + return tuner:IsExists(c511001821.dtfilter1,1,nil,c,tuner,nontuner) + else + return tuner:IsExists(c511001821.lvfilter,1,nil,c,nontuner) + end +end +function c511001821.dtfilter1(c,syncard,tuner,nontuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=syncard:GetLevel() + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + return tuner:IsExists(c511001821.dtfilter2,1,c,syncard,lv-tlv,nontuner,c) +end +function c511001821.dtfilter2(c,syncard,lv,nontuner,tuner1) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,tuner1) + nt=nt:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,lv-tlv,mt.minntct,mt.maxntct,syncard) +end +function c511001821.lvfilter(c,syncard,nontuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,slv-lv,mt.minntct,mt.maxntct,syncard) +end +function c511001821.lvfilter2(c,syncard,tuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,lv+slv,mt.minntct,mt.maxntct,syncard) +end +function c511001821.matfilter1(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_TUNER) and c:IsCanBeSynchroMaterial(syncard) and c:IsAbleToRemove() + and mt.tuner_filter and mt.tuner_filter(c) +end +function c511001821.matfilter2(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_MONSTER) and c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard) and c:IsAbleToRemove() + and mt.nontuner_filter and mt.nontuner_filter(c) +end +function c511001821.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001821.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001821.scop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001821.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=g:Select(tp,1,1,nil):GetFirst() + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c511001821.matfilter1,tp,LOCATION_GRAVE,0,nil,tc) + local nontuner=Duel.GetMatchingGroup(c511001821.matfilter2,tp,LOCATION_GRAVE,0,nil,tc) + local mat1 + if tc:IsSetCard(0x301) then + nontuner=nontuner:Filter(c511001821.lvfilter2,nil,tc,tuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=nontuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + tuner=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=tuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()+tlv,mt.minntct,mt.maxntct,tc) + mat1:Merge(mat2) + elseif mt.dobtun then + mat1=Group.CreateGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner1=tuner:FilterSelect(tp,c511001821.dtfilter1,1,1,nil,tc,tuner,nontuner):GetFirst() + mat1:AddCard(tuner1) + local tlv1=tuner1:GetSynchroLevel(tc) + local tuner2=tuner:FilterSelect(tp,c511001821.dtfilter2,1,1,tuner1,tc,tc:GetLevel()-tlv1,nontuner,tuner1):GetFirst() + mat1:AddCard(tuner2) + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,tuner1) + nt=nt:Filter(Card.IsCanBeSynchroMaterial,nil,tc,tuner2) + local tlv2=tuner2:GetSynchroLevel(tc) + local m3=nt:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()-tlv1-tlv2,mt.minntct,mt.maxntct,tc) + mat1:Merge(m3) + else + tuner=tuner:Filter(c511001821.lvfilter,nil,tc,nontuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=tuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + nontuner=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=nontuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()-tlv,mt.minntct,mt.maxntct,tc) + mat1:Merge(mat2) + end + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_SYNCHRO) + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,true,false,POS_FACEUP) + --disable + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc:CompleteProcedure() + end +end diff --git a/script/c511001822.lua b/script/c511001822.lua new file mode 100644 index 00000000..4374bb4b --- /dev/null +++ b/script/c511001822.lua @@ -0,0 +1,97 @@ +--RUM-バリアンズ・フォース +function c511001822.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001822.target) + e1:SetOperation(c511001822.activate) + c:RegisterEffect(e1) +end +function c511001822.filter1(c,e,tp) + local rk=c:GetRank() + return c:IsFaceup() and c:IsType(TYPE_XYZ) + and Duel.IsExistingMatchingCard(c511001822.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetCode()) +end +function c511001822.filter2(c,e,tp,mc,rk,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return c:GetRank()==rk and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) + and mc:IsCanBeXyzMaterial(c) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511001822.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511001822.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511001822.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511001822.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001822.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001822.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + local e1=Effect.CreateEffect(sc) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetTarget(c511001822.distg) + sc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetTarget(c511001822.dettg) + e2:SetOperation(c511001822.detop) + e2:SetLabelObject(sc) + e2:SetReset(RESET_CHAIN) + c:RegisterEffect(e2) + end +end +function c511001822.distg(e,c) + return c~=e:GetHandler() and c:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) +end +function c511001822.detfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()>0 +end +function c511001822.dettg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local sc=e:GetLabelObject() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001822.detfilter(chkc) end + if chk==0 then return sc and Duel.IsExistingTarget(c511001822.detfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001822.detfilter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511001822.detop(e,tp,eg,ep,ev,re,r,rp) + local sc=e:GetLabelObject() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and sc then + local og=tc:GetOverlayGroup() + if og:GetCount()==0 then return end + if Duel.SendtoGrave(og,REASON_EFFECT)>0 then + Duel.Overlay(sc,og) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(og:GetCount()*-300) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001823.lua b/script/c511001823.lua new file mode 100644 index 00000000..7ffb6015 --- /dev/null +++ b/script/c511001823.lua @@ -0,0 +1,84 @@ +--宝玉獣ルビー・カーバンクル +function c511001823.initial_effect(c) + --send replace + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TO_GRAVE_REDIRECT_CB) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c511001823.repcon) + e1:SetOperation(c511001823.repop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32710364,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511001823.target) + e2:SetOperation(c511001823.operation) + c:RegisterEffect(e2) + --Special Summon self + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c511001823.sptg) + e3:SetOperation(c511001823.spop) + c:RegisterEffect(e3) +end +function c511001823.repcon(e) + local c=e:GetHandler() + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsReason(REASON_DESTROY) +end +function c511001823.repop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e1) + Duel.RaiseEvent(c,47408488,e,0,tp,0,0) +end +function c511001823.filter(c,e,sp) + return c:IsFaceup() and c:IsSetCard(0x1034) and c:IsCanBeSpecialSummoned(e,0,sp,true,false) +end +function c511001823.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001823.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) + local gct=Duel.GetMatchingGroupCount(c511001823.filter,tp,LOCATION_SZONE,0,nil,e,tp) + if ct>gct then + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,gct,tp,LOCATION_SZONE) + else + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,tp,LOCATION_SZONE) + end +end +function c511001823.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ct==0 then return end + local g=Duel.GetMatchingGroup(c511001823.filter,tp,LOCATION_SZONE,0,nil,e,tp) + local gc=g:GetCount() + if gc==0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end + if gc<=ct then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,ct,ct,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001823.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511001823.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001824.lua b/script/c511001824.lua new file mode 100644 index 00000000..4be4ebd5 --- /dev/null +++ b/script/c511001824.lua @@ -0,0 +1,31 @@ +--Overlay Dark Reincarnation +function c511001824.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001824.target) + e1:SetOperation(c511001824.activate) + c:RegisterEffect(e1) +end +function c511001824.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckRemoveOverlayCard(tp,0,1,1,REASON_EFFECT) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsPlayerCanSpecialSummon(tp) + and Duel.IsPlayerCanDraw(tp,1) end +end +function c511001824.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.CheckRemoveOverlayCard,tp,0,LOCATION_MZONE,nil,tp,1,REASON_EFFECT) + if sg:GetCount()==0 then return end + local g=Duel.GetOverlayGroup(tp,0,1) + local mc=g:RandomSelect(tp,1):GetFirst() + if Duel.SendtoGrave(mc,REASON_EFFECT)>0 then + if mc:IsAttribute(ATTRIBUTE_DARK) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and mc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + if Duel.SpecialSummon(mc,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.Draw(tp,1,REASON_EFFECT) + end + else + Duel.SetLP(tp,Duel.GetLP(tp)/2) + end + end +end diff --git a/script/c511001825.lua b/script/c511001825.lua new file mode 100644 index 00000000..38bbd192 --- /dev/null +++ b/script/c511001825.lua @@ -0,0 +1,33 @@ +--Banish Reactor +function c511001825.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_REMOVE) + e1:SetCondition(c511001825.condition) + e1:SetTarget(c511001825.target) + e1:SetOperation(c511001825.activate) + c:RegisterEffect(e1) +end +function c511001825.cfilter(c,tp) + return c:GetPreviousControler()==tp +end +function c511001825.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001825.cfilter,1,nil,tp) +end +function c511001825.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001825.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001825.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c511001825.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001825.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511001826.lua b/script/c511001826.lua new file mode 100644 index 00000000..9c3a9f99 --- /dev/null +++ b/script/c511001826.lua @@ -0,0 +1,109 @@ +--Memories of Courage +function c511001826.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(c511001826.condition) + e1:SetTarget(c511001826.target) + e1:SetOperation(c511001826.activate) + c:RegisterEffect(e1) + if not c511001826.global_check then + c511001826.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c511001826.desop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_BATTLED) + ge2:SetOperation(c511001826.desop2) + Duel.RegisterEffect(ge2,0) + end +end +function c511001826.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001826.filter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x48) and c:IsType(TYPE_XYZ) and c:GetOverlayCount()==0 + and c:GetFlagEffect(511001825+tp)>0 +end +function c511001826.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001826.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001826.filter,tp,LOCATION_MZONE,0,1,nil,tp) + and Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,0x48) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + Duel.SelectTarget(tp,c511001826.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) +end +function c511001826.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local ct=Duel.GetMatchingGroupCount(Card.IsSetCard,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,0x48) + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(ct*500) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:GetFlagEffect(511001823+tp)==0 then + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetValue(1) + tc:RegisterEffect(e3) + end + end +end +function c511001826.desop(e,tp,eg,ep,ev,re,r,rp) + local dc=Duel.GetAttackTarget() + if not dc then return end + if ev<=0 then return end + local bc=dc:GetBattleTarget() + if not bc:IsSetCard(0x48) or not bc:IsType(TYPE_XYZ) or not dc:IsSetCard(0x48) or not dc:IsType(TYPE_XYZ) + or bc:GetOverlayCount()>0 or dc:GetOverlayCount()>0 then return end + if ep==tp then + if dc:IsControler(1-tp) and bc:IsStatus(STATUS_BATTLE_DESTROYED) + and not dc:IsStatus(STATUS_BATTLE_DESTROYED) then + dc:RegisterFlagEffect(511001823+1-tp,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end + if bc:IsControler(1-tp) and dc:IsStatus(STATUS_BATTLE_DESTROYED) + and not bc:IsStatus(STATUS_BATTLE_DESTROYED) then + bc:RegisterFlagEffect(511001823+1-tp,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end + end + if ep==1-tp then + if dc:IsControler(tp) and bc:IsStatus(STATUS_BATTLE_DESTROYED) + and not dc:IsStatus(STATUS_BATTLE_DESTROYED) then + dc:RegisterFlagEffect(511001823+tp,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end + if bc:IsControler(tp) and dc:IsStatus(STATUS_BATTLE_DESTROYED) + and not bc:IsStatus(STATUS_BATTLE_DESTROYED) then + bc:RegisterFlagEffect(511001823+tp,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end + end +end +function c511001826.desop2(e,tp,eg,ep,ev,re,r,rp) + local dc=Duel.GetAttackTarget() + if not dc then return end + local bc=dc:GetBattleTarget() + if not bc:IsSetCard(0x48) or not bc:IsType(TYPE_XYZ) or not dc:IsSetCard(0x48) or not dc:IsType(TYPE_XYZ) + or bc:GetOverlayCount()>0 or dc:GetOverlayCount()>0 then return end + if dc:IsControler(1-tp) then dc,bc=bc,dc end + if dc:IsControler(tp) then + dc:RegisterFlagEffect(511001825+tp,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end + if bc:IsControler(1-tp) then + bc:RegisterFlagEffect(511001825+1-tp,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end +end diff --git a/script/c511001827.lua b/script/c511001827.lua new file mode 100644 index 00000000..4316f4fc --- /dev/null +++ b/script/c511001827.lua @@ -0,0 +1,88 @@ +--Gimmick Vengeance +function c511001827.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511001827) + e1:SetCondition(c511001827.damcon) + e1:SetTarget(c511001827.damtg) + e1:SetOperation(c511001827.damop) + c:RegisterEffect(e1) + --act qp in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511001827.handcon) + c:RegisterEffect(e2) + if not c511001827.global_check then + c511001827.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511001827.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511001827.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001827.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511001827.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001827)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetOverlayCount()) + e1:SetOperation(c511001827.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001827,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511001827.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetOverlayCount() then return end + local val=0 + if e:GetLabel()>c:GetOverlayCount() then + val=e:GetLabel()-c:GetOverlayCount() + else + val=c:GetOverlayCount()-e:GetLabel() + end + Duel.RaiseEvent(c,511001827,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetOverlayCount()) +end +function c511001827.damcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(1-tp) and ev>0 and (not re or not re:GetHandler():IsType(TYPE_XYZ)) +end +function c511001827.damfilter(c) + return c:IsFaceup() and c:IsSetCard(0x83) +end +function c511001827.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001827.damfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001827.damfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc=Duel.SelectTarget(tp,c511001827.damfilter,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()) +end +function c511001827.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end +function c511001827.handcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_HAND,0)==1 +end diff --git a/script/c511001828.lua b/script/c511001828.lua new file mode 100644 index 00000000..c2064524 --- /dev/null +++ b/script/c511001828.lua @@ -0,0 +1,72 @@ +--Galaxy Burst +function c511001828.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001828.condition) + e1:SetTarget(c511001828.target) + e1:SetOperation(c511001828.activate) + c:RegisterEffect(e1) +end +function c511001828.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001828.filter(c) + return c:IsFaceup() and c:IsSetCard(0x55) +end +function c511001828.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and aux.disfilter1(chkc) end + if chk==0 then return Duel.IsExistingTarget(aux.disfilter1,tp,0,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c511001828.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,aux.disfilter1,tp,0,LOCATION_ONFIELD,1,2,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) +end +function c511001828.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + while tc do + if ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + end + tc=g:GetNext() + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g2=Duel.SelectMatchingCard(tp,c511001828.filter,tp,LOCATION_MZONE,0,1,1,nil) + local tc2=g2:GetFirst() + if tc2 then + Duel.HintSelection(g2) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc2:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc2:RegisterEffect(e1) + end +end diff --git a/script/c511001829.lua b/script/c511001829.lua new file mode 100644 index 00000000..1f1a56e8 --- /dev/null +++ b/script/c511001829.lua @@ -0,0 +1,31 @@ +--Photon Hurricane +function c511001829.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001829.target) + e1:SetOperation(c511001829.activate) + c:RegisterEffect(e1) +end +function c511001829.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c511001829.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ct=Duel.GetMatchingGroupCount(nil,tp,LOCATION_HAND,0,e:GetHandler()) + if chk==0 then return Duel.IsExistingMatchingCard(c511001829.filter,tp,0,LOCATION_ONFIELD,1,c) + and ct>0 end + local sg=Duel.GetMatchingGroup(c511001829.filter,tp,0,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,1,0,0) +end +function c511001829.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(nil,tp,LOCATION_HAND,0,e:GetHandler()) + local rg=Duel.GetMatchingGroup(c511001829.filter,tp,0,LOCATION_ONFIELD,nil) + if ct<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local sg=rg:Select(tp,1,ct,nil) + Duel.HintSelection(sg) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end diff --git a/script/c511001830.lua b/script/c511001830.lua new file mode 100644 index 00000000..f6843ffb --- /dev/null +++ b/script/c511001830.lua @@ -0,0 +1,67 @@ +--Battle Gravity +function c511001830.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(79580323,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511001830.damcon) + e2:SetTarget(c511001830.damtg) + e2:SetOperation(c511001830.damop) + c:RegisterEffect(e2) + if not c511001830.global_check then + c511001830.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ATTACK_ANNOUNCE) + ge1:SetOperation(c511001830.check) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ATTACK_DISABLED) + ge2:SetOperation(c511001830.check2) + Duel.RegisterEffect(ge2,0) + end +end +function c511001830.filter(c) + local ct=c:GetFlagEffectLabel(51101830) + return not ct or ct==0 +end +function c511001830.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001830.filter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511001830.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(Duel.GetTurnPlayer()) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,Duel.GetTurnPlayer(),1000) +end +function c511001830.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001830.check(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(51101830) + if ct then + tc:SetFlagEffectLabel(51101830,ct+1) + else + tc:RegisterFlagEffect(51101830,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,1) + end +end +function c511001830.check2(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(51101830) + if ct then + tc:SetFlagEffectLabel(51101830,ct-1) + end +end diff --git a/script/c511001844.lua b/script/c511001844.lua new file mode 100644 index 00000000..2cbe5d9a --- /dev/null +++ b/script/c511001844.lua @@ -0,0 +1,5 @@ +--サイレント・ソードマン LV1 +function c511001844.initial_effect(c) +end +c511001844.lvupcount=1 +c511001844.lvup={511001846} diff --git a/script/c511001845.lua b/script/c511001845.lua new file mode 100644 index 00000000..f052259e --- /dev/null +++ b/script/c511001845.lua @@ -0,0 +1,5 @@ +--サイレント・ソードマン LV2 +function c511001845.initial_effect(c) +end +c511001845.lvupcount=1 +c511001845.lvup={511001846} diff --git a/script/c511001846.lua b/script/c511001846.lua new file mode 100644 index 00000000..5525d404 --- /dev/null +++ b/script/c511001846.lua @@ -0,0 +1,72 @@ +--サイレント・ソードマン LV4 +function c511001846.initial_effect(c) + c:EnableUnsummonable() + --cannot special summon + local e0=Effect.CreateEffect(c) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e0) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001846,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCondition(c511001846.atkcon) + e1:SetOperation(c511001846.atkop) + c:RegisterEffect(e1) + --change name + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetValue(c511001846.val) + c:RegisterEffect(e2) +end +c511001846.lvupcount=1 +c511001846.lvup={511001847} +function c511001846.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ect=e:GetHandler():GetEffectCount(511001846) + return tp==Duel.GetTurnPlayer() and 11-ect>0 and not e:GetHandler():IsStatus(STATUS_SPSUMMON_TURN) +end +function c511001846.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c:GetBaseAttack()+500) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(511001846) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + if e:GetHandler():GetEffectCount(511001846)==2 and Duel.SendtoGrave(c,REASON_EFFECT)>0 then + local token=Duel.CreateToken(tp,511001847) + Duel.MoveToField(token,tp,tp,LOCATION_MZONE,c:GetPreviousPosition(),true) + token:SetStatus(STATUS_PROC_COMPLETE,true) + token:SetStatus(STATUS_SPSUMMON_TURN,true) + end +end +function c511001846.val(e,c) + local ect=e:GetHandler():GetEffectCount(511001846) + if ect==1 then + return 74388798 + elseif ect==2 then + return 511001847 + elseif ect==3 then + return 37267041 + elseif ect>3 then + return 511001844+ect + else + return 511001846 + end +end diff --git a/script/c511001847.lua b/script/c511001847.lua new file mode 100644 index 00000000..8d51fe1b --- /dev/null +++ b/script/c511001847.lua @@ -0,0 +1,54 @@ +--サイレント・ソードマン LV6 +function c511001847.initial_effect(c) + c:EnableUnsummonable() + --cannot special summon + local e0=Effect.CreateEffect(c) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e0) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001847,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_REPEAT) + e1:SetCondition(c511001847.atkcon) + e1:SetOperation(c511001847.atkop) + c:RegisterEffect(e1) + --change name + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetValue(c511001847.val) + c:RegisterEffect(e2) +end +function c511001847.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ect=e:GetHandler():GetEffectCount(511001847) + return tp==Duel.GetTurnPlayer() and 9-ect>0 and not e:GetHandler():IsStatus(STATUS_SPSUMMON_TURN) +end +function c511001847.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c:GetBaseAttack()+500) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(511001847) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c511001847.val(e,c) + local ect=e:GetHandler():GetEffectCount(511001847) + return 511001847+ect +end diff --git a/script/c511001857.lua b/script/c511001857.lua new file mode 100644 index 00000000..f21e7960 --- /dev/null +++ b/script/c511001857.lua @@ -0,0 +1,35 @@ +--Last Trick +function c511001857.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) + e1:SetOperation(c511001857.activate) + c:RegisterEffect(e1) +end +function c511001857.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_CHAIN_ACTIVATING) + e1:SetOperation(c511001857.regop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001857.regop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if rp==tp or not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_SPELL) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EVENT_LEAVE_FIELD_P) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetOperation(c511001857.repop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + rc:RegisterEffect(e1) +end +function c511001857.repop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetDestination()~=LOCATION_GRAVE then return end + local p=e:GetOwner():GetOwner() + Duel.SendtoHand(e:GetHandler(),p,REASON_EFFECT) + Duel.ConfirmCards(1-p,e:GetHandler()) +end diff --git a/script/c511001858.lua b/script/c511001858.lua new file mode 100644 index 00000000..59c265f2 --- /dev/null +++ b/script/c511001858.lua @@ -0,0 +1,63 @@ +--Hide and Shark +function c511001858.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511001858.condition) + e1:SetCost(c511001858.cost) + e1:SetTarget(c511001858.target) + e1:SetOperation(c511001858.activate) + c:RegisterEffect(e1) +end +c511001858.collection={ + [13429800]=true;[34290067]=true;[10532969]=true;[71923655]=true;[32393580]=true; + [810000016]=true;[20358953]=true;[37798171]=true;[70101178]=true;[23536866]=true; + [7500772]=true;[511001410]=true;[69155991]=true;[37792478]=true;[17201174]=true; + [44223284]=true;[70655556]=true;[63193879]=true;[25484449]=true;[810000026]=true; + [17643265]=true;[64319467]=true;[810000030]=true;[810000008]=true;[20838380]=true; + [87047161]=true;[80727036]=true;[28593363]=true;[50449881]=true;[49221191]=true; + [65676461]=true;[440556]=true;[511001273]=true;[31320433]=true;[5014629]=true; + [14306092]=true;[84224627]=true;[511001163]=true;[511001169]=true;[511001858]=true; +} +function c511001858.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetLP(tp)<=2000 +end +function c511001858.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511001858.filter(c) + return c:IsFaceup() and c511001858.collection[c:GetCode()] and c:IsAbleToRemove() +end +function c511001858.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511001858.filter,tp,LOCATION_MZONE,0,1,nil) end + local lp=math.floor(Duel.GetLP(tp)/2) + Duel.PayLPCost(tp,lp) + local g=Duel.GetMatchingGroup(c511001858.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + Duel.SetTargetParam(lp) +end +function c511001858.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001858.filter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY)>0 then + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.BreakEffect() + Duel.ReturnToField(tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001859.lua b/script/c511001859.lua new file mode 100644 index 00000000..f012fcb5 --- /dev/null +++ b/script/c511001859.lua @@ -0,0 +1,78 @@ +--Prevent Reborn +function c511001859.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001859.condition) + e1:SetOperation(c511001859.operation) + c:RegisterEffect(e1) +end +function c511001859.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if tc:IsControler(1-tp) then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + if not tc or not bc or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) + or not tc:IsPosition(POS_FACEUP_ATTACK) then return false end + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + end + end + else + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + end +end +function c511001859.operation(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001859.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + e2:SetOperation(c511001859.spop) + Duel.RegisterEffect(e2,tp) +end +function c511001859.damop(e,tp,eg,ep,ev,re,r,rp) + local dam=ev-1000 + if dam<0 then dam=0 end + Duel.ChangeBattleDamage(tp,dam) +end +function c511001859.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsLocation(LOCATION_MZONE) +end +function c511001859.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Group.FromCards(Duel.GetAttacker(),Duel.GetAttackTarget()):Filter(c511001859.filter,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or g:GetCount()<=0 then return end + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + g=g:Select(tp,1,1,nil) + end + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001860.lua b/script/c511001860.lua new file mode 100644 index 00000000..d09e93cc --- /dev/null +++ b/script/c511001860.lua @@ -0,0 +1,47 @@ +--Galaxy Dragon Maelstrom +function c511001860.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001860.condition) + e1:SetTarget(c511001860.target) + e1:SetOperation(c511001860.activate) + c:RegisterEffect(e1) +end +function c511001860.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a and d and a:IsType(TYPE_XYZ) and d:IsType(TYPE_XYZ) and a:IsFaceup() and d:IsFaceup() and a:IsRace(RACE_DRAGON) + and d:IsRace(RACE_DRAGON) and tp~=ep and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511001860.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001860.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + local c=e:GetHandler() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c511001861.lua b/script/c511001861.lua new file mode 100644 index 00000000..a84bd259 --- /dev/null +++ b/script/c511001861.lua @@ -0,0 +1,27 @@ +--Photon Shock +function c511001861.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000593,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001861.condition) + e1:SetOperation(c511001861.activate) + c:RegisterEffect(e1) +end +function c511001861.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + return Duel.GetBattleDamage(tp)>0 and tc and tc:IsSetCard(0x55) +end +function c511001861.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511001861.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511001861.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(1-ep,ev,false) +end diff --git a/script/c511001862.lua b/script/c511001862.lua new file mode 100644 index 00000000..1cebf1ec --- /dev/null +++ b/script/c511001862.lua @@ -0,0 +1,57 @@ +--Power Exchange +function c511001862.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001862.condition) + e1:SetTarget(c511001862.target) + e1:SetOperation(c511001862.operation) + c:RegisterEffect(e1) +end +function c511001862.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + e:SetLabel(cv) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + e:SetLabel(cv) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511001862.filter(c,atk) + return c:IsFaceup() and c:GetAttack()>=atk +end +function c511001862.target(e,tp,eg,ep,ev,re,r,rp,chk) + local cid=e:GetLabel() + if chk==0 then return Duel.IsExistingMatchingCard(c511001862.filter,tp,LOCATION_MZONE,0,1,nil,cid) end +end +function c511001862.operation(e,tp,eg,ep,ev,re,r,rp) + local cid=e:GetLabel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511001862.filter,tp,LOCATION_MZONE,0,1,1,nil,cid) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-cid) + if tc:RegisterEffect(e1) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetLabel(cid) + e2:SetValue(c511001862.damcon) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) + end + end +end +function c511001862.damcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return 0 +end diff --git a/script/c511001863.lua b/script/c511001863.lua new file mode 100644 index 00000000..95a61124 --- /dev/null +++ b/script/c511001863.lua @@ -0,0 +1,24 @@ +--Mirror Shade +function c511001863.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001863.cost) + e1:SetOperation(c511001863.activate) + c:RegisterEffect(e1) +end +function c511001863.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511001863.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511001864.lua b/script/c511001864.lua new file mode 100644 index 00000000..341e19b5 --- /dev/null +++ b/script/c511001864.lua @@ -0,0 +1,37 @@ +--Prevent and Draw +function c511001864.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001864.condition) + e1:SetTarget(c511001864.target) + e1:SetOperation(c511001864.operation) + c:RegisterEffect(e1) +end +function c511001864.condition(e,tp,eg,ep,ev,re,r,rp) + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c511001864.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001864.operation(e,tp,eg,ep,ev,re,r,rp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetLabel(cid) + e2:SetValue(c511001864.damcon) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) + Duel.Draw(tp,1,REASON_EFFECT) +end +function c511001864.damcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return val/2 +end diff --git a/script/c511001865.lua b/script/c511001865.lua new file mode 100644 index 00000000..2c7e6919 --- /dev/null +++ b/script/c511001865.lua @@ -0,0 +1,22 @@ +--Boxing Glove Trap +function c511001865.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001865.damtg) + e1:SetOperation(c511001865.damop) + c:RegisterEffect(e1) +end +function c511001865.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(200) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,200) +end +function c511001865.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001866.lua b/script/c511001866.lua new file mode 100644 index 00000000..1274f4ca --- /dev/null +++ b/script/c511001866.lua @@ -0,0 +1,61 @@ +--Rank Domination +function c511001866.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511001866.atktarget) + c:RegisterEffect(e2) + --lowest first + local e3=e2:Clone() + e3:SetTarget(c511001866.atktarget2) + c:RegisterEffect(e3) + --lose atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c511001866.atktg) + e4:SetValue(c511001866.atkval) + c:RegisterEffect(e4) +end +function c511001866.atktarget(e,c) + return c:GetRank()<=0 +end +function c511001866.filter(c,rk) + local atkct=c:GetEffectCount(EFFECT_EXTRA_ATTACK)+1 + return c:IsFaceup() and c:GetRank()>0 and c:GetRank()0 and Duel.IsExistingMatchingCard(c511001866.filter,p,LOCATION_MZONE,0,1,nil,rk) +end +function c511001866.atktg(e,c) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a or not d or a:GetRank()<=0 or d:GetRank()<=0 or a:GetRank()==d:GetRank() then return false end + if a:GetRank()>d:GetRank() then + return c==d + else + return c==a + end +end +function c511001866.atkval(e,c) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a or not d or a:GetRank()<=0 or d:GetRank()<=0 or a:GetRank()==d:GetRank() then return 0 end + if a:GetRank()>d:GetRank() then + return (a:GetRank()-d:GetRank())*-1000 + else + return (d:GetRank()-a:GetRank())*-1000 + end +end diff --git a/script/c511001867.lua b/script/c511001867.lua new file mode 100644 index 00000000..01dcad97 --- /dev/null +++ b/script/c511001867.lua @@ -0,0 +1,94 @@ +--Destiny Break +function c511001867.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(c511001867.condition) + e1:SetTarget(c511001867.target) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001867.drcon) + e2:SetTarget(c511001867.drtg) + e2:SetOperation(c511001867.drop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetOperation(c511001867.desop) + c:RegisterEffect(e3) +end +function c511001867.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511001867.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.GetAttacker() and c511001867.drcon(e,tp,eg,ep,ev,re,r,rp) then + e:SetCategory(CATEGORY_DRAW) + e:SetOperation(c511001867.drop) + c511001867.drtg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c511001867.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511001867.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,1,tp,1) +end +function c511001867.drop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + Duel.BreakEffect() + if tc:IsType(TYPE_MONSTER) then + Duel.NegateAttack() + Duel.ShuffleHand(tp) + tc:RegisterFlagEffect(511001867,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + else + Duel.SendtoGrave(tc,REASON_EFFECT) + end + end +end +function c511001867.filter(c,e,tp) + return c:GetFlagEffect(511001867)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001867.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001867) + if Duel.Destroy(e:GetHandler(),REASON_EFFECT)<=0 then return end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c511001867.filter,tp,LOCATION_HAND,0,ft,ft,nil,e,tp) + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001868.lua b/script/c511001868.lua new file mode 100644 index 00000000..0315e49c --- /dev/null +++ b/script/c511001868.lua @@ -0,0 +1,29 @@ +--Performance Band Hurricane +function c511001868.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001868.target) + e1:SetOperation(c511001868.activate) + c:RegisterEffect(e1) +end +function c511001868.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) +end +function c511001868.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ct=Duel.GetMatchingGroupCount(c511001868.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return ct>0 and Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511001868.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:GetCount()>0 then + Duel.SendtoHand(tg,nil,REASON_EFFECT) + end +end diff --git a/script/c511001869.lua b/script/c511001869.lua new file mode 100644 index 00000000..a814735c --- /dev/null +++ b/script/c511001869.lua @@ -0,0 +1,72 @@ +--Resurrection Tribute +function c511001869.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001869.condition) + e1:SetTarget(c511001869.target) + e1:SetOperation(c511001869.activate) + c:RegisterEffect(e1) + if not c511001869.global_check then + c511001869.global_check=true + c511001869[0]=true + c511001869[1]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DESTROYED) + ge1:SetOperation(c511001869.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001869.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001869.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsLocation(LOCATION_GRAVE) and tc:IsReason(REASON_BATTLE) then + c511001869[tc:GetPreviousControler()]=true + end + tc=eg:GetNext() + end +end +function c511001869.clear(e,tp,eg,ep,ev,re,r,rp) + c511001869[0]=false + c511001869[1]=false +end +function c511001869.condition(e,tp,eg,ep,ev,re,r,rp) + return c511001869[tp] +end +function c511001869.filter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511001869.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c511001869.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001869.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + if Duel.Destroy(g,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001869.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.BreakEffect() + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + end + end + end +end diff --git a/script/c511001870.lua b/script/c511001870.lua new file mode 100644 index 00000000..0c7e2a2c --- /dev/null +++ b/script/c511001870.lua @@ -0,0 +1,27 @@ +--Cross Heart +function c511001870.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511001870.condition) + e1:SetTarget(c511001870.target) + e1:SetOperation(c511001870.operation) + c:RegisterEffect(e1) +end +function c511001870.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511001870.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return tc:IsControlerCanBeChanged() and tc:IsControler(1-tp) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,tc,1,0,0) +end +function c511001870.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp) + end +end diff --git a/script/c511001871.lua b/script/c511001871.lua new file mode 100644 index 00000000..9018106e --- /dev/null +++ b/script/c511001871.lua @@ -0,0 +1,32 @@ +--Amazoness Charm +function c511001871.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001871.target) + e1:SetOperation(c511001871.activate) + c:RegisterEffect(e1) +end +function c511001871.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDefensePos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511001871.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and not tc:IsAttackPos() then + if Duel.ChangePosition(tc,POS_FACEUP_ATTACK)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(200) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001872.lua b/script/c511001872.lua new file mode 100644 index 00000000..ed71df87 --- /dev/null +++ b/script/c511001872.lua @@ -0,0 +1,99 @@ +--Self Tribute +function c511001872.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001872.condition) + e1:SetCost(c511001872.cost) + e1:SetTarget(c511001872.target) + e1:SetOperation(c511001872.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511001872.condition2) + c:RegisterEffect(e2) +end +function c511001872.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if tc:IsControler(1-tp) then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + if not tc or not bc or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + e:SetLabelObject(tc) + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if tc:IsAttackPos() then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + else + return bc:GetDefense()>tc:GetDefense() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end + end + else + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end +end +function c511001872.cfilter(c,e,tp) + return c:IsOnField() and c:IsType(TYPE_MONSTER) and c:IsControler(tp) and (not e or c:IsRelateToEffect(e)) +end +function c511001872.condition2(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if tg==nil then return false end + local g=tg:Filter(c511001872.cfilter,nil,nil,tp) + g:KeepAlive() + e:SetLabelObject(g) + return ex and tc+g:GetCount()-tg:GetCount()>0 +end +function c511001872.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 c511001872.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject() + if chk==0 then return g end + Duel.SetTargetCard(g) +end +function c511001872.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c511001872.cfilter,nil,e,tp) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c511001873.lua b/script/c511001873.lua new file mode 100644 index 00000000..b2a107d5 --- /dev/null +++ b/script/c511001873.lua @@ -0,0 +1,50 @@ +--ゼロ・フォース +function c511001873.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511001873.condition) + e1:SetTarget(c511001873.target) + e1:SetOperation(c511001873.operation) + c:RegisterEffect(e1) +end +function c511001873.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:GetControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511001873.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001873.cfilter,nil,tp) + local tc=g:GetFirst() + return g:GetCount()==1 +end +function c511001873.filter(c,atk) + return c:IsFaceup() and c:IsAttackAbove(atk) +end +function c511001873.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511001873.cfilter,nil,tp) + local tc=g:GetFirst() + if chk==0 then return tc + and Duel.IsExistingMatchingCard(c511001873.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tc:GetAttack()) end + Duel.SetTargetCard(tc) +end +function c511001873.operation(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetFirstTarget() + if tg and tg:IsRelateToEffect(e) then + Duel.ConfirmCards(1-tp,tg) + local g=Duel.GetMatchingGroup(c511001873.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tg:GetAttack()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + end +end diff --git a/script/c511001874.lua b/script/c511001874.lua new file mode 100644 index 00000000..efad5b6b --- /dev/null +++ b/script/c511001874.lua @@ -0,0 +1,73 @@ +--Rescue Xyz +function c511001874.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --synchro effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001874.target) + e1:SetOperation(c511001874.activate) + c:RegisterEffect(e1) +end +function c511001874.filter(c) + return c:IsFaceup() and c:GetOwner()~=c:GetControler() +end +function c511001874.xyzfilter(c,mg) + return c:IsXyzSummonable(mg) and c.minxyzct<=mg:GetCount() +end +function c511001874.target(e,tp,eg,ep,ev,re,r,rp,chk) + local mg=Duel.GetMatchingGroup(c511001874.filter,tp,0,LOCATION_MZONE,nil) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001874.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,mg) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001874.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local mg=Duel.GetMatchingGroup(c511001874.filter,tp,0,LOCATION_MZONE,nil) + local g=Duel.GetMatchingGroup(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,nil,mg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=g:Select(tp,1,1,nil):GetFirst() + if mg:GetCount()>xyz.minxyzct then + mg=mg:Select(tp,xyz.minxyzct,xyz.maxxyzct,nil) + end + Duel.XyzSummon(tp,xyz,mg) + end +end diff --git a/script/c511001875.lua b/script/c511001875.lua new file mode 100644 index 00000000..677f6880 --- /dev/null +++ b/script/c511001875.lua @@ -0,0 +1,48 @@ +--Overlay Hunt +function c511001875.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001875.condition) + e1:SetTarget(c511001875.target) + e1:SetOperation(c511001875.activate) + c:RegisterEffect(e1) +end +function c511001875.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a:IsType(TYPE_XYZ) and a:IsControler(1-tp) and d and d:IsFaceup() + and d:IsType(TYPE_XYZ) and d:IsControler(tp) +end +function c511001875.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + Duel.SetTargetCard(Group.FromCards(a,d)) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,a,1,0,0) +end +function c511001875.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a and a:IsRelateToEffect(e) and a:IsFaceup() and a:IsControler(1-tp) and d + and d:IsRelateToEffect(e) and d:IsFaceup() and d:IsControler(tp) then + Duel.NegateRelatedChain(a,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e2) + local og=a:GetOverlayGroup() + local oc=og:GetFirst():GetOverlayTarget() + Duel.Overlay(d,og) + Duel.RaiseSingleEvent(oc,EVENT_DETACH_MATERIAL,e,0,0,0,0) + end +end diff --git a/script/c511001876.lua b/script/c511001876.lua new file mode 100644 index 00000000..32040cf4 --- /dev/null +++ b/script/c511001876.lua @@ -0,0 +1,49 @@ +--Raidraptor - Rig +function c511001876.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001876.target) + e1:SetOperation(c511001876.activate) + c:RegisterEffect(e1) +end +function c511001876.filter(c) + return c:IsFaceup() and c:GetLevel()>0 and not c:IsRace(RACE_WINDBEAST) +end +function c511001876.filter2(c,lv) + return c:IsFaceup() and c:GetLevel()==lv and not c:IsRace(RACE_WINDBEAST) +end +function c511001876.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001876.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511001876.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tg=g:GetMinGroup(Card.GetLevel) + local lv=tg:GetFirst():GetLevel() + local t={} + local p=1 + while g:GetCount()>0 do + t[p]=lv + p=p+1 + g:Sub(tg) + if g:GetCount()>0 then + tg=g:GetMinGroup(Card.GetLevel) + lv=tg:GetFirst():GetLevel() + end + end + t[p]=nil + Duel.Hint(HINT_SELECTMSG,tp,567) + e:SetLabel(Duel.AnnounceNumber(tp,table.unpack(t))) +end +function c511001876.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001876.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e:GetLabel()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(RACE_WINDBEAST) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511001877.lua b/script/c511001877.lua new file mode 100644 index 00000000..b0471477 --- /dev/null +++ b/script/c511001877.lua @@ -0,0 +1,23 @@ +--Performance Turn +function c511001877.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001877.target) + e1:SetOperation(c511001877.activate) + c:RegisterEffect(e1) +end +function c511001877.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:IsSetCard(0x9f) end + if chk==0 then return Duel.IsExistingTarget(Card.IsSetCard,tp,LOCATION_MZONE,0,1,nil,0x9f) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsSetCard,tp,LOCATION_MZONE,0,1,1,nil,0x9f) +end +function c511001877.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511001878.lua b/script/c511001878.lua new file mode 100644 index 00000000..38f6ef8c --- /dev/null +++ b/script/c511001878.lua @@ -0,0 +1,32 @@ +--Overlay Zero Buster +function c511001878.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001878.condition) + e1:SetTarget(c511001878.target) + e1:SetOperation(c511001878.activate) + c:RegisterEffect(e1) +end +function c511001878.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()==0 +end +function c511001878.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001878.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001878.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001878.activate(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001879.lua b/script/c511001879.lua new file mode 100644 index 00000000..8926b110 --- /dev/null +++ b/script/c511001879.lua @@ -0,0 +1,66 @@ +--Overlay Reborn +function c511001879.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001879.cost) + e1:SetTarget(c511001879.target) + e1:SetOperation(c511001879.activate) + c:RegisterEffect(e1) +end +function c511001879.cfilter(c) + return c:IsLevelBelow(4) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511001879.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001879.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511001879.cfilter,1,1,REASON_COST,nil) +end +function c511001879.filter(c,e,tp) + return c:IsRankBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsType(TYPE_XYZ) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001879.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001879.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001879.activate(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,c511001879.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + local rk=tc:GetRank() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local sg=Duel.GetMatchingGroup(Card.CheckRemoveOverlayCard,tp,0,LOCATION_MZONE,nil,tp,rk,REASON_EFFECT) + if sg:GetCount()>0 then + if sg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,532) + sg=sg:Select(tp,1,1,nil) + Duel.HintSelection(sg) + end + sg:GetFirst():RemoveOverlayCard(tp,rk,rk,REASON_EFFECT) + else + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4) + end + end +end diff --git a/script/c511001880.lua b/script/c511001880.lua new file mode 100644 index 00000000..fe0dec1f --- /dev/null +++ b/script/c511001880.lua @@ -0,0 +1,72 @@ +--Overlay Buster +function c511001880.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(c511001880.condition) + e1:SetTarget(c511001880.target) + e1:SetOperation(c511001880.activate) + c:RegisterEffect(e1) +end +function c511001880.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001880.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001880.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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:SetCondition(c511001880.atkcon) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(500) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001880,RESET_EVENT+0x1220000+RESET_PHASE+PHASE_END,0,1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(25123082,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e2:SetCondition(c511001880.shcon) + e2:SetTarget(c511001880.shtg) + e2:SetOperation(c511001880.shop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c511001880.atkcon(e) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x80 +end +function c511001880.shcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + if not tc then return false end + if tc:IsControler(1-tp) then tc=Duel.GetAttacker() end + local bc=tc:GetBattleTarget() + e:SetLabelObject(bc) + return bc:IsStatus(STATUS_BATTLE_DESTROYED) and tc:IsStatus(STATUS_OPPO_BATTLE) and bc:IsType(TYPE_XYZ) + and tc:GetFlagEffect(511001880)~=0 and bc:GetOverlayCount()>0 +end +function c511001880.shtg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetLabelObject() + if chk==0 then return bc and bc:GetOverlayCount()>0 end + local dam=bc:GetOverlayCount()*500 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511001880.shop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001881.lua b/script/c511001881.lua new file mode 100644 index 00000000..cf7589e1 --- /dev/null +++ b/script/c511001881.lua @@ -0,0 +1,58 @@ +--Xyz Meteor +function c511001881.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001881.target) + e1:SetOperation(c511001881.operation) + c:RegisterEffect(e1) +end +function c511001881.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511001881.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001881.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001881.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001881.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001881.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(49328340,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511001881.drcon) + e2:SetTarget(c511001881.drtg) + e2:SetOperation(c511001881.drop) + e2:SetLabelObject(tc) + Duel.RegisterEffect(e2,tp) + tc:RegisterFlagEffect(511001881,RESET_EVENT+0x1fe0000,0,1) + end +end +function c511001881.drcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return bc and bc:IsDefensePos() and tc:GetFlagEffect(511001881)>0 and e:GetLabelObject()==tc +end +function c511001881.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001881.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001882.lua b/script/c511001882.lua new file mode 100644 index 00000000..fee05ce9 --- /dev/null +++ b/script/c511001882.lua @@ -0,0 +1,34 @@ +--Xyz Weight +function c511001882.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001882.condition) + e1:SetTarget(c511001882.target) + e1:SetOperation(c511001882.activate) + c:RegisterEffect(e1) +end +function c511001882.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsType(TYPE_XYZ) and tc:IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511001882.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return true end + Duel.SetTargetCard(tc) +end +function c511001882.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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+PHASE_BATTLE) + e1:SetValue(c511001882.atkval) + tc:RegisterEffect(e1) + end +end +function c511001882.atkval(e,c) + return c:GetOverlayCount()*-800 +end diff --git a/script/c511001883.lua b/script/c511001883.lua new file mode 100644 index 00000000..7f04c9a4 --- /dev/null +++ b/script/c511001883.lua @@ -0,0 +1,46 @@ +--Power Analysis +function c511001883.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(c511001883.condition) + e1:SetTarget(c511001883.target) + e1:SetOperation(c511001883.activate) + c:RegisterEffect(e1) +end +function c511001883.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001883.filter(c,tp) + return c:IsRace(RACE_MACHINE) and c:IsFaceup() + and Duel.IsExistingMatchingCard(c511001883.filter2,tp,0,LOCATION_MZONE,1,c,c:GetAttack()) +end +function c511001883.filter2(c,atk) + return c:IsFaceup() and c:GetAttack()~=atk +end +function c511001883.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001883.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001883.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001883.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) +end +function c511001883.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511001883.filter2,tp,0,LOCATION_MZONE,1,1,nil,tc:GetAttack()) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(g:GetFirst():GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511001884.lua b/script/c511001884.lua new file mode 100644 index 00000000..a266b108 --- /dev/null +++ b/script/c511001884.lua @@ -0,0 +1,32 @@ +--Space Gate +function c511001884.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001884.negcon) + e1:SetTarget(c511001884.negtg) + e1:SetOperation(c511001884.negop) + c:RegisterEffect(e1) +end +function c511001884.cfilter(c) + return c:IsFaceup() and c:IsCode(1992816) +end +function c511001884.negcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP) and Duel.IsChainNegatable(ev) + and Duel.IsExistingMatchingCard(c511001884.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511001884.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001884.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511001885.lua b/script/c511001885.lua new file mode 100644 index 00000000..95e64936 --- /dev/null +++ b/script/c511001885.lua @@ -0,0 +1,32 @@ +--Sunken Kingdom +function c511001885.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e2:SetValue(300) + c:RegisterEffect(e2) + --cannot be target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c511001885.tgtg) + e3:SetValue(c511001885.tgval) + c:RegisterEffect(e3) +end +function c511001885.tgtg(e,c) + return c:IsFaceup() and c:IsSetCard(0x70) +end +function c511001885.tgval(e,c) + return not c:IsImmuneToEffect(e) and c:IsLevelBelow(4) +end diff --git a/script/c511001886.lua b/script/c511001886.lua new file mode 100644 index 00000000..84f3102f --- /dev/null +++ b/script/c511001886.lua @@ -0,0 +1,51 @@ +--Atlandis Invitation +function c511001886.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001886.condition) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(26920296,2)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c511001886.descon) + e2:SetTarget(c511001886.destg) + e2:SetOperation(c511001886.desop) + c:RegisterEffect(e2) +end +function c511001886.cfilter(c) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return c:IsFaceup() and no and no==6 and c:IsSetCard(0x48) +end +function c511001886.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001886.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001886.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511001886.desfilter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:GetAttackedCount()==0 and c:IsDestructable() +end +function c511001886.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dg=Duel.GetMatchingGroup(c511001886.desfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,dg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dg:GetSum(Card.GetAttack)) +end +function c511001886.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local dg=Duel.GetMatchingGroup(c511001886.desfilter,tp,0,LOCATION_MZONE,nil) + if dg:GetCount()>0 and Duel.Destroy(dg,REASON_EFFECT)>0 then + local sum=dg:GetSum(Card.GetPreviousAttackOnField) + Duel.Damage(tp,sum,REASON_EFFECT) + end +end diff --git a/script/c511001887.lua b/script/c511001887.lua new file mode 100644 index 00000000..582e86b5 --- /dev/null +++ b/script/c511001887.lua @@ -0,0 +1,47 @@ +--光のピラミッド +function c511001887.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Doom Virus (Faceup) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511001887.banop) + c:RegisterEffect(e2) + --check + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_MSET) + e3:SetOperation(c511001887.chkop) + c:RegisterEffect(e3) +end +function c511001887.filter(c) + return c:IsFaceup() and (c:IsAttribute(ATTRIBUTE_DEVINE) or c:IsRace(RACE_DEVINE) or c:IsRace(RACE_CREATORGOD) + or bit.band(c:GetOriginalRace(),RACE_DEVINE)==RACE_DEVINE or bit.band(c:GetOriginalRace(),RACE_CREATORGOD)==RACE_CREATORGOD + or bit.band(c:GetOriginalAttribute(),ATTRIBUTE_DEVINE)==ATTRIBUTE_DEVINE) and c:IsAbleToRemove() +end +function c511001887.filter2(c) + return c:IsFacedown() and (c:IsAttribute(ATTRIBUTE_DEVINE) or c:IsRace(RACE_DEVINE) or c:IsRace(RACE_CREATORGOD) + or bit.band(c:GetOriginalRace(),RACE_DEVINE)==RACE_DEVINE or bit.band(c:GetOriginalRace(),RACE_CREATORGOD)==RACE_CREATORGOD + or bit.band(c:GetOriginalAttribute(),ATTRIBUTE_DEVINE)==ATTRIBUTE_DEVINE) and c:IsAbleToRemove() +end +function c511001887.banop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001887.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local conf=Duel.GetMatchingGroup(c511001887.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + Duel.Remove(conf,POS_FACEUP,REASON_EFFECT) + end +end +function c511001887.chkop(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE,POS_FACEDOWN) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + end +end diff --git a/script/c511001888.lua b/script/c511001888.lua new file mode 100644 index 00000000..d2d2a940 --- /dev/null +++ b/script/c511001888.lua @@ -0,0 +1,29 @@ +--Palenque Sarcophagus +function c511001888.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001888.condition) + e1:SetTarget(c511001888.target) + e1:SetOperation(c511001888.activate) + c:RegisterEffect(e1) +end +function c511001888.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x70) +end +function c511001888.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001888.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001888.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511001888.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001889.lua b/script/c511001889.lua new file mode 100644 index 00000000..6997b3c0 --- /dev/null +++ b/script/c511001889.lua @@ -0,0 +1,57 @@ +--Aura Armor +function c511001889.initial_effect(c) + --end battle phase + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(18964575,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001889.condition) + e1:SetTarget(c511001889.target) + e1:SetOperation(c511001889.activate) + c:RegisterEffect(e1) +end +function c511001889.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()~=tp and Duel.GetAttackTarget()==nil and Duel.GetLP(tp)<=2000 +end +function c511001889.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,511001890,0,0x4011,-2,-2,4,RACE_WARRIOR,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001889.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001890,0,0x4011,-2,-2,4,RACE_WARRIOR,ATTRIBUTE_EARTH) then return end + if Duel.NegateAttack() then + local token=Duel.CreateToken(tp,511001890) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c511001889.val) + e1:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetValue(c511001889.val) + e2:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetReset(RESET_EVENT+0x0fe0000) + e3:SetOperation(c511001889.sumop) + token:RegisterEffect(e3) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001889.val(e,c) + return Duel.GetLP(e:GetHandler():GetOwner()) +end +function c511001889.sumop(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(tp,Duel.GetLP(tp)/2) +end diff --git a/script/c511001891.lua b/script/c511001891.lua new file mode 100644 index 00000000..c1ff85fa --- /dev/null +++ b/script/c511001891.lua @@ -0,0 +1,104 @@ +--Spirit Illusion +function c511001891.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP+CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001891.target) + e1:SetOperation(c511001891.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) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_LEAVE_FIELD_P) + e3:SetOperation(c511001891.checkop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c511001891.desop) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) +end +function c511001891.filter(c,tp) + return c:IsFaceup() + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001892,0,0x4011,c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) +end +function c511001891.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001891.filter(chkc,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001891.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001891.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511001891.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + if not Duel.Equip(tp,c,tc) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511001892,0,0x4011,tc:GetAttack(),tc:GetDefense(), + tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) then return end + local token=Duel.CreateToken(tp,511001892) + token:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0xfe0000,1) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetValue(tc:GetDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(tc:GetLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + token:RegisterEffect(e5) + if tc:IsType(TYPE_EFFECT) and not token:IsType(TYPE_EFFECT) then + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_ADD_TYPE) + e6:SetValue(TYPE_EFFECT) + e6:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e6) + end + Duel.SpecialSummonComplete() + c:SetCardTarget(token) + end +end +function c511001891.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c511001891.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local g=e:GetHandler():GetCardTarget() + local tc=g:Filter(aux.TRUE,e:GetHandler():GetEquipTarget()):GetFirst() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001893.lua b/script/c511001893.lua new file mode 100644 index 00000000..0f6c9c2a --- /dev/null +++ b/script/c511001893.lua @@ -0,0 +1,28 @@ +--Class System +function c511001893.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001893.condition) + e1:SetTarget(c511001893.target) + e1:SetOperation(c511001893.activate) + c:RegisterEffect(e1) +end +function c511001893.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if ep==tp or not re:IsActiveType(TYPE_MONSTER) or not Duel.IsChainDisablable(ev) then return false end + return a and d and a:IsControler(1-tp) and re:GetHandler()==a and d:IsControler(tp) and a:GetLevel()>0 and d:GetLevel()>0 + and a:GetLevel()<=d:GetLevel() +end +function c511001893.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511001893.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + Duel.NegateAttack(a) + Duel.NegateEffect(ev) +end diff --git a/script/c511001894.lua b/script/c511001894.lua new file mode 100644 index 00000000..77727c84 --- /dev/null +++ b/script/c511001894.lua @@ -0,0 +1,45 @@ +--Aetonyx Flame +function c511001894.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001894.cost) + e1:SetTarget(c511001894.target) + e1:SetOperation(c511001894.activate) + c:RegisterEffect(e1) +end +function c511001894.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001894.filter(c) + return (c:IsFacedown() or not (c:IsAttribute(ATTRIBUTE_FIRE) and c:IsRace(RACE_FIEND))) and c:IsDestructable() +end +function c511001894.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001894.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c511001894.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511001894.spfilter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsRace(RACE_FIEND) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001894.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001894.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if Duel.Destroy(sg,REASON_EFFECT)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + local g=Duel.GetMatchingGroup(c511001894.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + if g:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(62742651,2)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511001895.lua b/script/c511001895.lua new file mode 100644 index 00000000..003837ba --- /dev/null +++ b/script/c511001895.lua @@ -0,0 +1,53 @@ +--Junk Dealer +function c511001895.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001895.target) + e1:SetOperation(c511001895.activate) + c:RegisterEffect(e1) +end +function c511001895.filter(c,e,tp) + return c:IsRace(RACE_MACHINE+RACE_WARRIOR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001895.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001895.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001895.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ct>2 then ct=2 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001895.filter,tp,LOCATION_GRAVE,0,1,ct,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511001895.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 then return end + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetBaseAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UNRELEASABLE_SUM) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetValue(1) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001896.lua b/script/c511001896.lua new file mode 100644 index 00000000..d1f929c4 --- /dev/null +++ b/script/c511001896.lua @@ -0,0 +1,62 @@ +--Toy Robot Box +function c511001896.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:SetCost(c511001896.cost) + e1:SetTarget(c511001896.target) + e1:SetOperation(c511001896.activate) + c:RegisterEffect(e1) + if not c511001896.global_check then + c511001896.global_check=true + --atk limit + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + ge1:SetTargetRange(0,LOCATION_MZONE) + ge1:SetCondition(c511001896.atcon) + ge1:SetValue(c511001896.atlimit) + ge1:SetLabel(0) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD) + ge2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + ge2:SetTargetRange(0,LOCATION_MZONE) + ge2:SetCondition(c511001896.atcon) + ge2:SetValue(c511001896.atlimit) + ge2:SetLabel(1) + Duel.RegisterEffect(ge2,1) + end +end +function c511001896.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 c511001896.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,140000085,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_WIND) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c511001896.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,140000085,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_WIND) then return end + for i=1,3 do + local token=Duel.CreateToken(tp,140000085) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() +end +function c511001896.atcon(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetLabel(),LOCATION_ONFIELD,0,1,nil,140000085) +end +function c511001896.atlimit(e,c) + return c:GetCode()~=140000085 +end diff --git a/script/c511001897.lua b/script/c511001897.lua new file mode 100644 index 00000000..7250707c --- /dev/null +++ b/script/c511001897.lua @@ -0,0 +1,39 @@ +--Soldier Revolt +function c511001897.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001897.condition) + e1:SetTarget(c511001897.target) + e1:SetOperation(c511001897.activate) + c:RegisterEffect(e1) +end +function c511001897.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511001897.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 + and Duel.IsExistingMatchingCard(c511001897.cfilter,tp,LOCATION_ONFIELD,0,1,nil,79853073) + and Duel.IsExistingMatchingCard(c511001897.cfilter,tp,LOCATION_ONFIELD,0,1,nil,67532912) + and Duel.IsExistingMatchingCard(c511001897.cfilter,tp,LOCATION_ONFIELD,0,1,nil,75559356) +end +function c511001897.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND+LOCATION_ONFIELD)~=0 end + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND+LOCATION_ONFIELD) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c511001897.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND+LOCATION_ONFIELD) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end diff --git a/script/c511001898.lua b/script/c511001898.lua new file mode 100644 index 00000000..29ea93b0 --- /dev/null +++ b/script/c511001898.lua @@ -0,0 +1,37 @@ +--Bronze Knights +function c511001898.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:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c511001898.cost) + e1:SetTarget(c511001898.target) + e1:SetOperation(c511001898.activate) + c:RegisterEffect(e1) +end +function c511001898.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 + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local cg=Duel.SelectMatchingCard(tp,Card.IsDiscardable,tp,LOCATION_HAND,0,1,ft,nil) + Duel.SendtoGrave(cg,REASON_COST+REASON_DISCARD) + e:SetLabel(cg:GetCount()) +end +function c511001898.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,511001899,0,0x4011,500,500,1,RACE_WARRIOR,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,e:GetLabel(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,e:GetLabel(),0,0) +end +function c511001898.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001899,0,0x4011,500,500,1,RACE_WARRIOR,ATTRIBUTE_EARTH) then + for i=1,e:GetLabel() do + local token=Duel.CreateToken(tp,511001899) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001900.lua b/script/c511001900.lua new file mode 100644 index 00000000..d540545f --- /dev/null +++ b/script/c511001900.lua @@ -0,0 +1,36 @@ +--Pride of Tribe +function c511001900.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511001900.condition) + e1:SetTarget(c511001900.target) + e1:SetOperation(c511001900.activate) + c:RegisterEffect(e1) +end +function c511001900.cfilter(c,tp) + return c:IsSetCard(0x4) and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp + and c:GetPreviousLocation()==LOCATION_MZONE and bit.band(c:GetPreviousPosition(),POS_FACEUP)~=0 +end +function c511001900.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001900.cfilter,1,nil,tp) +end +function c511001900.filter(c,e,tp) + return c:IsSetCard(0x4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001900.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001900.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001900.activate(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,c511001900.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001901.lua b/script/c511001901.lua new file mode 100644 index 00000000..3e3b8c47 --- /dev/null +++ b/script/c511001901.lua @@ -0,0 +1,47 @@ +--Shield Wall +function c511001901.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:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511001901.target) + e1:SetOperation(c511001901.activate) + c:RegisterEffect(e1) +end +function c511001901.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001902,0,0x4011,0,1000,1,RACE_ROCK,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,4,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,4,0,0) +end +function c511001901.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511001902,0,0x4011,0,1000,1,RACE_ROCK,ATTRIBUTE_EARTH) then + for i=1,4 do + local token=Duel.CreateToken(tp,511001902) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetOperation(c511001901.desop) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2) + end + Duel.SpecialSummonComplete() + end +end +function c511001901.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsAttackPos() then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c511001903.lua b/script/c511001903.lua new file mode 100644 index 00000000..51f72c3c --- /dev/null +++ b/script/c511001903.lua @@ -0,0 +1,71 @@ +--Genesis Crisis +function c511001903.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001903.target) + e1:SetOperation(c511001903.operation) + c:RegisterEffect(e1) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001903.thtg) + e1:SetOperation(c511001903.thop) + c:RegisterEffect(e1) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511001903.descon) + e3:SetOperation(c511001903.desop) + c:RegisterEffect(e3) +end +function c511001903.filter(c) + return c:IsFaceup() and c:IsCode(22056710) +end +function c511001903.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001903.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001903.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511001903.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001903.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + end +end +function c511001903.thfilter(c) + return c:IsRace(RACE_ZOMBIE) and c:IsAbleToHand() +end +function c511001903.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001903.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511001903.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001903.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c511001903.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001903.desfilter(c) + return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and c:IsDestructable() +end +function c511001903.desop(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(c511001903.desfilter,tp,LOCATION_MZONE,0,nil) + dg:AddCard(e:GetHandler()) + Duel.Destroy(dg,REASON_EFFECT) +end diff --git a/script/c511001904.lua b/script/c511001904.lua new file mode 100644 index 00000000..7497e10e --- /dev/null +++ b/script/c511001904.lua @@ -0,0 +1,53 @@ +--Amazoness Call +function c511001904.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001904.condition) + e1:SetTarget(c511001904.target) + e1:SetOperation(c511001904.activate) + c:RegisterEffect(e1) +end +function c511001904.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x4) +end +function c511001904.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001904.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001904.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsAbleToExtra() +end +function c511001904.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511001904.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001904.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511001904.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511001904.mgfilter(c,e,tp,fusc) + return not c:IsLocation(LOCATION_GRAVE) or bit.band(c:GetReason(),0x40008)~=0x40008 + or c:GetReasonCard()~=fusc or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) + or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001904.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not (tc:IsRelateToEffect(e) and tc:IsFaceup()) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + local mg1=mg:Filter(Card.IsControler,nil,tp) + local mg2=mg:Filter(Card.IsControler,nil,1-tp) + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 or bit.band(sumtype,SUMMON_TYPE_FUSION)~=SUMMON_TYPE_FUSION or mg:GetCount()==0 + or mg:IsExists(c511001904.mgfilter,1,nil,e,tp,tc) or mg1:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) + or mg2:GetCount()>Duel.GetLocationCount(1-tp,LOCATION_MZONE) then + sumable=false + end + if sumable then + Duel.BreakEffect() + Duel.SpecialSummon(mg1,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummon(mg2,0,1-tp,1-tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001905.lua b/script/c511001905.lua new file mode 100644 index 00000000..0b489ba3 --- /dev/null +++ b/script/c511001905.lua @@ -0,0 +1,106 @@ +--Giant Racket +function c511001905.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(c511001905.target) + e1:SetOperation(c511001905.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) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511001905.indescon) + e3:SetOperation(c511001905.indesop) + c:RegisterEffect(e3) +end +function c511001905.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 c511001905.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511001905.indescon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if tc~=e:GetHandler():GetEquipTarget() then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + if not tc or not bc or tc~=e:GetHandler():GetEquipTarget() or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if tc:IsAttackPos() then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + else + return bc:GetDefense()>tc:GetDefense() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end + end + else + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end +end +function c511001905.indesop(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + if eq then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + eq:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,eq:GetControler()) + end +end diff --git a/script/c511001906.lua b/script/c511001906.lua new file mode 100644 index 00000000..a7f97ff8 --- /dev/null +++ b/script/c511001906.lua @@ -0,0 +1,67 @@ +--Attachment Dragon +function c511001906.initial_effect(c) + --lv change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001906,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001906.eqtg) + e1:SetOperation(c511001906.eqop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + --pos + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(98649372,1)) + e4:SetCategory(CATEGORY_POSITION) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetTarget(c511001906.postg) + e4:SetOperation(c511001906.posop) + c:RegisterEffect(e4) +end +function c511001906.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001906.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001906.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.Equip(tp,c,tc,true) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001906.eqlimit) + c:RegisterEffect(e1) + end +end +function c511001906.postg(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then return eq end + Duel.SetOperationInfo(0,CATEGORY_POSITION,eq,1,0,0) +end +function c511001906.posop(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + if not e:GetHandler():IsRelateToEffect(e) then return end + if eq then + Duel.ChangePosition(eq,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511001907.lua b/script/c511001907.lua new file mode 100644 index 00000000..0008e7a9 --- /dev/null +++ b/script/c511001907.lua @@ -0,0 +1,34 @@ +--Amazoness Trainer +function c511001907.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c511001907.condition) + e1:SetTarget(c511001907.target) + e1:SetOperation(c511001907.activate) + c:RegisterEffect(e1) +end +function c511001907.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if d:IsControler(tp) or a:IsControler(1-tp) then return false end + return a:IsCode(10979723) and a:IsRelateToBattle() and d:IsLocation(LOCATION_ONFIELD) +end +function c511001907.target(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if chk==0 then return a:IsChainAttackable() end +end +function c511001907.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if a and a:IsRelateToBattle() and a:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(400) + a:RegisterEffect(e1) + Duel.ChainAttack() + end +end diff --git a/script/c511001908.lua b/script/c511001908.lua new file mode 100644 index 00000000..0b2ba91a --- /dev/null +++ b/script/c511001908.lua @@ -0,0 +1,82 @@ +--Ultimate Stage Costume +function c511001908.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001908.target) + e1:SetOperation(c511001908.operation) + c:RegisterEffect(e1) + --trigger + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001908.descon) + e2:SetOperation(c511001908.desop) + c:RegisterEffect(e2) + --retarget + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(511001908) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c511001908.target) + e3:SetOperation(c511001908.operation) + c:RegisterEffect(e3) +end +function c511001908.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(511001908,true) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsFaceup() end + if chk==0 then return res or 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 c511001908.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + local atk=tc:GetAttack() + local def=tc:GetDefense() + 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(c511001908.rcon) + e1:SetValue(3000) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCondition(c511001908.rcon2) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(atk) + tc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + e4:SetValue(def) + tc:RegisterEffect(e4,true) + end +end +function c511001908.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001908.rcon2(e) + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and e:GetHandler()==Duel.GetAttacker() + and e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001908.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001908.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.RaiseSingleEvent(e:GetHandler(),511001908,e,REASON_EFFECT,tp,tp,0) +end diff --git a/script/c511001909.lua b/script/c511001909.lua new file mode 100644 index 00000000..255a4e84 --- /dev/null +++ b/script/c511001909.lua @@ -0,0 +1,27 @@ +--Gamble Angel Bunny +function c511001909.initial_effect(c) + --coin + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89718302,0)) + e1:SetCategory(CATEGORY_COIN+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001909.damtg) + e1:SetOperation(c511001909.damop) + c:RegisterEffect(e1) +end +function c511001909.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c511001909.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_COIN) + local coin=Duel.SelectOption(tp,60,61) + local res=Duel.TossCoin(tp,1) + if coin~=res then + Duel.Damage(1-tp,1000,REASON_EFFECT) + else + Duel.Damage(tp,1000,REASON_EFFECT) + end +end diff --git a/script/c511001910.lua b/script/c511001910.lua new file mode 100644 index 00000000..e3e2a471 --- /dev/null +++ b/script/c511001910.lua @@ -0,0 +1,30 @@ +--デステニー・デストロイ +function c511001910.initial_effect(c) + --discard deck + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES+CATEGORY_DAMAGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c511001910.target) + e1:SetOperation(c511001910.activate) + c:RegisterEffect(e1) +end +function c511001910.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,5) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(5) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,5) +end +function c511001910.filter(c) + return c:IsLocation(LOCATION_GRAVE) and c:IsType(TYPE_SPELL) +end +function c511001910.activate(e,tp,eg,ep,ev,re,r,rp) + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardDeck(p,val,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + local ct=g:FilterCount(c511001910.filter,nil) + if ct>0 then + Duel.Damage(tp,ct*100,REASON_EFFECT) + end +end diff --git a/script/c511001911.lua b/script/c511001911.lua new file mode 100644 index 00000000..099d8315 --- /dev/null +++ b/script/c511001911.lua @@ -0,0 +1,58 @@ +--Alert +function c511001911.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001911.target) + e1:SetOperation(c511001911.activate) + c:RegisterEffect(e1) +end +function c511001911.filter(c) + return c:IsType(TYPE_SPELL) and c:IsType(TYPE_CONTINUOUS) and c:IsFacedown() + and c:CheckActivateEffect(false,false,false)~=nil +end +function c511001911.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001911.filter,tp,LOCATION_SZONE,0,1,nil) end +end +function c511001911.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.SelectMatchingCard(tp,c511001911.filter,tp,LOCATION_SZONE,0,1,1,nil) + local tc=sg:GetFirst() + if tc then + Duel.HintSelection(sg) + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + Duel.ChangePosition(tc,POS_FACEUP) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511001912.lua b/script/c511001912.lua new file mode 100644 index 00000000..473b8069 --- /dev/null +++ b/script/c511001912.lua @@ -0,0 +1,17 @@ +--Thunder Knight +function c511001912.initial_effect(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_ONFIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511001912.atkval) + c:RegisterEffect(e2) +end +function c511001912.filter(c) + return c:IsFaceup() and c:IsRace(RACE_THUNDER) +end +function c511001912.atkval(e,c) + return Duel.GetMatchingGroupCount(c511001912.filter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil)*400 +end diff --git a/script/c511001913.lua b/script/c511001913.lua new file mode 100644 index 00000000..20d84110 --- /dev/null +++ b/script/c511001913.lua @@ -0,0 +1,55 @@ +--Warp Beam +function c511001913.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001913.target) + e1:SetOperation(c511001913.activate) + c:RegisterEffect(e1) +end +function c511001913.filter(c,e) + return c:IsFaceup() and c:IsCanBeEffectTarget(e) +end +function c511001913.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 + local tg=Duel.GetMatchingGroup(c511001913.filter,tp,LOCATION_MZONE,0,e:GetHandler(),e) + local sg=Duel.GetMatchingGroup(Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,e:GetHandler()) + if tg:GetCount()==sg:GetCount() then + return tg:GetCount()>1 + else + return sg:GetCount()>=tg:GetCount() + end + end + local tg=Duel.GetMatchingGroup(c511001913.filter,tp,LOCATION_MZONE,0,e:GetHandler(),e) + local sg=Duel.GetMatchingGroup(Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,e:GetHandler()) + tg:Merge(sg) + local max=math.floor(tg:GetCount()/2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,max,nil) + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + sg=sg:Select(tp,g:GetCount(),g:GetCount(),nil) + Duel.SendtoGrave(sg,REASON_COST) +end +function c511001913.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c511001914.lua b/script/c511001914.lua new file mode 100644 index 00000000..92d8bf6f --- /dev/null +++ b/script/c511001914.lua @@ -0,0 +1,31 @@ +--Genghis Ghan the Emperor Dragon +function c511001914.initial_effect(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001265,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511001914.damcon) + e2:SetTarget(c511001914.damtg) + e2:SetOperation(c511001914.damop) + c:RegisterEffect(e2) +end +function c511001914.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511001914.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsType(TYPE_MONSTER) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,Card.IsType,tp,0,LOCATION_GRAVE,1,1,nil,TYPE_MONSTER) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) +end +function c511001914.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:GetAttack()>0 then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511001915.lua b/script/c511001915.lua new file mode 100644 index 00000000..8754d555 --- /dev/null +++ b/script/c511001915.lua @@ -0,0 +1,61 @@ +--Micron Force +function c511001915.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511001915.condition) + e1:SetTarget(c511001915.target) + e1:SetOperation(c511001915.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511001915.descon) + e2:SetOperation(c511001915.desop) + c:RegisterEffect(e2) +end +function c511001915.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001915.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511001915.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() 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_SET_BASE_ATTACK) + e1:SetValue(c511001915.val) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001915.rcon) + tc:RegisterEffect(e1,true) + end +end +function c511001915.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511001915.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001915.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end +function c511001915.val(e,c) + return e:GetHandler():GetBaseAttack()/2 +end diff --git a/script/c511001916.lua b/script/c511001916.lua new file mode 100644 index 00000000..cede5e5c --- /dev/null +++ b/script/c511001916.lua @@ -0,0 +1,44 @@ +--Punishing Fire +function c511001916.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001916.damtg) + e1:SetOperation(c511001916.damop) + c:RegisterEffect(e1) +end +function c511001916.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511001916.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511001916.damcon2) + e1:SetOperation(c511001916.damop2) + if Duel.GetTurnPlayer()~=tp then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + else + e1:SetLabel(0) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + end + Duel.RegisterEffect(e1,tp) +end +function c511001916.damcon2(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return Duel.GetTurnCount()~=e:GetLabel() and ep~=tp and tc:IsControler(1-tp) and tc:IsPosition(POS_FACEUP_ATTACK) +end +function c511001916.damop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511001916) + Duel.Damage(1-tp,600,REASON_EFFECT) +end diff --git a/script/c511001917.lua b/script/c511001917.lua new file mode 100644 index 00000000..6a0ad71b --- /dev/null +++ b/script/c511001917.lua @@ -0,0 +1,92 @@ +--Paradox Synthesis +function c511001917.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001917.cost) + e1:SetTarget(c511001917.target) + e1:SetOperation(c511001917.activate) + c:RegisterEffect(e1) +end +function c511001917.cfilter1(c) + return c:IsType(TYPE_XYZ) and c:IsReleasable() +end +function c511001917.cfilter2(c,tp) + return c:IsFaceup() and c:IsLevelAbove(5) and c:IsReleasable() + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,c) +end +function c511001917.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511001917.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511001917.cfilter1,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511001917.cfilter2,tp,0,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g2=Duel.SelectMatchingCard(tp,c511001917.cfilter2,tp,0,LOCATION_MZONE,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g1=Duel.SelectMatchingCard(tp,c511001917.cfilter1,tp,LOCATION_MZONE,0,1,1,nil) + g1:Merge(g2) + local atk=g1:GetSum(Card.GetAttack) + Duel.Release(g1,REASON_COST) + Duel.SetTargetParam(atk) +end +function c511001917.activate(e,tp,eg,ep,ev,re,r,rp) + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetLabelObject(tc) + e2:SetCondition(c511001917.descon) + e2:SetOperation(c511001917.desop) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetLabelObject(e2) + e3:SetOperation(c511001917.resetop) + Duel.RegisterEffect(e3,tp) + end +end +function c511001917.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject() +end +function c511001917.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and tc:GetBattledGroupCount()>0 then + local atk=tc:GetAttack() + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + e:Reset() + end +end +function c511001917.resetop(e,tp,eg,ep,ev,re,r,rp) + local eff=e:GetLabelObject() + if not eff then + e:Reset() + return + end + local tc=eff:GetLabelObject() + if not tc or eg:IsContains(tc) then + e:GetLabelObject():Reset() + e:Reset() + end +end diff --git a/script/c511001918.lua b/script/c511001918.lua new file mode 100644 index 00000000..f416e79b --- /dev/null +++ b/script/c511001918.lua @@ -0,0 +1,48 @@ +--Satellite Base +function c511001918.initial_effect(c) + --ind + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(c511001918.indval) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(50400231,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c511001918.atkcon) + e2:SetOperation(c511001918.atkop) + c:RegisterEffect(e2) + --atk clear + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLED) + e3:SetOperation(c511001918.retop) + c:RegisterEffect(e3) +end +function c511001918.indval(e,c) + return c:IsLevelBelow(5) +end +function c511001918.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001918.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c511001918.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetAttackTarget() and c==Duel.GetAttackTarget() then + c:ResetEffect(RESET_DISABLE,RESET_EVENT) + end +end diff --git a/script/c511001919.lua b/script/c511001919.lua new file mode 100644 index 00000000..648a36c3 --- /dev/null +++ b/script/c511001919.lua @@ -0,0 +1,30 @@ +--Mine Blast +function c511001919.initial_effect(c) + --discard deck + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c511001919.distarget) + e1:SetOperation(c511001919.disop) + c:RegisterEffect(e1) +end +function c511001919.distarget(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,5) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(5) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,5) +end +function c511001919.disop(e,tp,eg,ep,ev,re,r,rp) + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardDeck(p,val,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetValue(0) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511001920.lua b/script/c511001920.lua new file mode 100644 index 00000000..35ff4c98 --- /dev/null +++ b/script/c511001920.lua @@ -0,0 +1,29 @@ +--Take Flight +function c511001920.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001920.condition) + e1:SetTarget(c511001920.target) + e1:SetOperation(c511001920.activate) + c:RegisterEffect(e1) +end +function c511001920.cfilter(c) + return c:IsFaceup() and c:IsCode(7093411) +end +function c511001920.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001920.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511001920.filter(c) + return c:IsSetCard(0x1034) and not c:IsCode(7093411) and c:IsAbleToHand() +end +function c511001920.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001920.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c511001920.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c511001920.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001920.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end diff --git a/script/c511001921.lua b/script/c511001921.lua new file mode 100644 index 00000000..8f3e0d77 --- /dev/null +++ b/script/c511001921.lua @@ -0,0 +1,111 @@ +--Golden Rule +function c511001921.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(c511001921.target) + e1:SetOperation(c511001921.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(c511001921.eqlimit) + c:RegisterEffect(e2) + --Destroy (S/T) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511001921.descon1) + e3:SetOperation(c511001921.desop1) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c511001921.desop2) + c:RegisterEffect(e4) +end +function c511001921.eqlimit(e,c) + return c:IsSetCard(0x1034) +end +function c511001921.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1034) +end +function c511001921.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511001921.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001921.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511001921.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511001921.stfilter(c) + return c:IsLevelBelow(3) and c:IsSetCard(0x1034) +end +function c511001921.spfilter(c,e,tp) + return c:IsSetCard(0x1034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001921.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + if not Duel.Equip(tp,c,tc) then return end + local stg=Duel.GetMatchingGroup(c511001921.stfilter,tp,LOCATION_DECK,0,nil) + if Duel.GetLocationCount(tp,LOCATION_SZONE)>1 and stg:GetCount()>1 + and Duel.SelectYesNo(tp,aux.Stringid(10004783,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local sg1=stg:Select(tp,2,2,nil) + local tc1=sg1:GetFirst() + while tc1 do + Duel.MoveToField(tc1,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local e1=Effect.CreateEffect(tc) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + tc1:RegisterEffect(e1) + tc1=sg1:GetNext() + end + Duel.RaiseEvent(sg1,47408488,e,0,tp,0,0) + local spg=Duel.GetMatchingGroup(c511001921.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and spg:GetCount()>0 + and Duel.SelectYesNo(tp,aux.Stringid(70245411,2)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=spg:Select(tp,1,1,nil) + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + sg1:Merge(sp) + end + local gtc=sg1:GetFirst() + while gtc do + c:SetCardTarget(gtc) + gtc=sg1:GetNext() + end + end + end +end +function c511001921.desfilter1(c,eg) + return c:GetPreviousLocation()==LOCATION_SZONE and eg:IsContains(c) +end +function c511001921.descon1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local g=c:GetCardTarget() + return g:GetCount()>0 and g:IsExists(c511001921.desfilter1,1,e:GetHandler():GetEquipTarget(),eg) +end +function c511001921.desop1(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end +function c511001921.desop2(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetHandler():GetCardTarget() + if g:GetCount()<=0 then return end + local tc=g:Filter(Card.IsLocation,e:GetHandler():GetEquipTarget(),LOCATION_MZONE):GetFirst() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001922.lua b/script/c511001922.lua new file mode 100644 index 00000000..18e747ff --- /dev/null +++ b/script/c511001922.lua @@ -0,0 +1,39 @@ +--Big Volcano +function c511001922.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001922.cost) + e1:SetTarget(c511001922.target) + e1:SetOperation(c511001922.activate) + c:RegisterEffect(e1) +end +function c511001922.cfilter(c) + return c:IsRace(RACE_PYRO) and c:IsAbleToGraveAsCost() +end +function c511001922.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001922.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001922.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001922.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) +end +function c511001922.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511001922.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>1 + and Duel.IsExistingTarget(c511001922.filter,tp,0,LOCATION_GRAVE,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001922.filter,tp,0,LOCATION_GRAVE,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001922.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:GetCount()>1 then + Duel.SpecialSummon(tg,0,1-tp,1-tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001923.lua b/script/c511001923.lua new file mode 100644 index 00000000..4f0b8e30 --- /dev/null +++ b/script/c511001923.lua @@ -0,0 +1,33 @@ +--Trap Strap +function c511001923.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511001923.condition) + e1:SetTarget(c511001923.target) + e1:SetOperation(c511001923.activate) + c:RegisterEffect(e1) +end +function c511001923.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511001923.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return re:GetHandler():IsCanTurnSet() end +end +function c511001923.spfilter(c,e,tp) + return c:IsSetCard(0x1034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001923.activate(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + rc:CancelToGrave() + Duel.ChangePosition(rc,POS_FACEDOWN) + Duel.RaiseEvent(rc,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) + local spg=Duel.GetMatchingGroup(c511001923.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and spg:GetCount()>0 + and Duel.SelectYesNo(tp,aux.Stringid(70245411,2)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=spg:Select(tp,1,1,nil) + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001924.lua b/script/c511001924.lua new file mode 100644 index 00000000..d3c7a20f --- /dev/null +++ b/script/c511001924.lua @@ -0,0 +1,62 @@ +--召喚雲 +function c511001924.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(55375684,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001924.condition) + e2:SetTarget(c511001924.target) + e2:SetOperation(c511001924.operation) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511001924.mtcon) + e3:SetOperation(c511001924.mtop) + c:RegisterEffect(e3) +end +function c511001924.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511001924.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x18) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001924.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001924.filter,tp,LOCATION_HAND+LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c511001924.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001924.filter,tp,LOCATION_HAND+LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001924.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001924.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) + and Duel.SelectYesNo(tp,aux.Stringid(79850798,1)) then + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD,nil) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c511001925.lua b/script/c511001925.lua new file mode 100644 index 00000000..9e6c95ec --- /dev/null +++ b/script/c511001925.lua @@ -0,0 +1,34 @@ +--Anchor Bind +function c511001925.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001925.condition) + e1:SetTarget(c511001925.target) + e1:SetOperation(c511001925.activate) + c:RegisterEffect(e1) +end +function c511001925.cfilter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c511001925.check() + return Duel.IsExistingMatchingCard(c511001925.cfilter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end +function c511001925.condition(e,tp,eg,ep,ev,re,r,rp) + return c511001925.check() +end +function c511001925.filter(c) + return c:IsPosition(POS_FACEUP_DEFENSE) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsDestructable() +end +function c511001925.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001925.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511001925.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511001925.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001925.filter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511001926.lua b/script/c511001926.lua new file mode 100644 index 00000000..39cc7225 --- /dev/null +++ b/script/c511001926.lua @@ -0,0 +1,80 @@ +--ファントム・オブ・カオス +function c511001926.initial_effect(c) + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30312361,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001926.cost) + e1:SetTarget(c511001926.target) + e1:SetOperation(c511001926.operation) + c:RegisterEffect(e1) + --no battle damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_NO_BATTLE_DAMAGE) + c:RegisterEffect(e2) +end +function c511001926.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(30312361)==0 end + e:GetHandler():RegisterFlagEffect(30312361,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511001926.filter(c) + return c:IsType(TYPE_MONSTER) and not c:IsForbidden() +end +function c511001926.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001926.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001926.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001926.filter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c511001926.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) then + local code=tc:GetOriginalCode() + local ba=tc:GetBaseAttack() + if ba<0 then ba=0 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(ba) + c:RegisterEffect(e2) + local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(30312361,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetLabel(cid) + e3:SetLabelObject(e2) + e3:SetOperation(c511001926.rstop) + c:RegisterEffect(e3) + end +end +function c511001926.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=e:GetLabel() + c:ResetEffect(cid,RESET_COPY) + local e2=e:GetLabelObject() + local e1=e2:GetLabelObject() + e1:Reset() + e2:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end diff --git a/script/c511001927.lua b/script/c511001927.lua new file mode 100644 index 00000000..3f0734c3 --- /dev/null +++ b/script/c511001927.lua @@ -0,0 +1,45 @@ +--Power Spirit +function c511001927.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c511001927.cost) + e1:SetTarget(c511001927.target) + e1:SetOperation(c511001927.operation) + c:RegisterEffect(e1) +end +function c511001927.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 c511001927.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001927.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() 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_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511001927.rcon) + e1:SetValue(c511001927.ind) + tc:RegisterEffect(e1,true) + end +end +function c511001927.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) and e:GetHandler():IsPosition(POS_FACEUP_ATTACK) +end +function c511001927.ind(e,c) + local atk=e:GetHandler():GetAttack()+900 + return c:IsAttackBelow(atk) +end diff --git a/script/c511001928.lua b/script/c511001928.lua new file mode 100644 index 00000000..7fcb37f6 --- /dev/null +++ b/script/c511001928.lua @@ -0,0 +1,26 @@ +--Monopole Chain +function c511001928.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001928.condition) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) +end +function c511001928.cfilter(c) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return c:IsFaceup() and no and no==9 and c:IsSetCard(0x48) +end +function c511001928.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001928.cfilter,tp,LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511001929.lua b/script/c511001929.lua new file mode 100644 index 00000000..0bb63931 --- /dev/null +++ b/script/c511001929.lua @@ -0,0 +1,39 @@ +--Number Lifter +function c511001929.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001929.target) + e1:SetOperation(c511001929.activate) + c:RegisterEffect(e1) +end +function c511001929.spfilter(c,e,tp) + return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001929.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001929.spfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001929.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001929.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001929.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001930.lua b/script/c511001930.lua new file mode 100644 index 00000000..bcdf425d --- /dev/null +++ b/script/c511001930.lua @@ -0,0 +1,28 @@ +--Orichalcum Mirage +function c511001930.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001930.condition) + e1:SetTarget(c511001930.target) + e1:SetOperation(c511001930.activate) + c:RegisterEffect(e1) +end +function c511001930.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511001930.filter(c) + return c:IsFaceup() and c:IsSetCard(0x70) +end +function c511001930.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001930.filter,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end +end +function c511001930.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,c511001930.filter,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + local tc=g:GetFirst() + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511001931.lua b/script/c511001931.lua new file mode 100644 index 00000000..5bda2c7e --- /dev/null +++ b/script/c511001931.lua @@ -0,0 +1,48 @@ +--Illegal Summon +function c511001931.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001931.target) + e1:SetOperation(c511001931.activate) + c:RegisterEffect(e1) +end +function c511001931.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001931.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001931.filter,tp,LOCATION_DECK,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummon(1-tp) and Duel.GetFieldGroupCount(tp,0,LOCATION_DECK)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,PLAYER_ALL,LOCATION_DECK) +end +function c511001931.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + local g1=Duel.GetMatchingGroup(c511001931.filter,tp,LOCATION_DECK,0,nil,e,tp) + local g2=Duel.GetMatchingGroup(c511001931.filter,tp,0,LOCATION_DECK,nil,e,tp) + if g1:GetCount()<=0 or g2:GetCount()<=0 then + if g1:GetCount()<=0 then + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ConfirmCards(tp,cg) + Duel.ShuffleDeck(tp) + end + if g2:GetCount()<=0 then + local cg=Duel.GetFieldGroup(1-tp,LOCATION_DECK,0) + Duel.ConfirmCards(tp,cg) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleDeck(1-tp) + end + return + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp1=g1:Select(tp,1,1,nil):GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp2=g2:Select(1-tp,1,1,nil):GetFirst() + if Duel.SpecialSummonStep(sp1,0,1-tp,1-tp,false,false,POS_FACEUP) + and Duel.SpecialSummonStep(sp2,0,1-tp,tp,false,false,POS_FACEUP) then + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001932.lua b/script/c511001932.lua new file mode 100644 index 00000000..41134ef6 --- /dev/null +++ b/script/c511001932.lua @@ -0,0 +1,43 @@ +--Crystal Spring +function c511001932.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --arrange + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_TO_DECK) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001932.tdcon) + e2:SetOperation(c511001932.tdop) + c:RegisterEffect(e2) +end +function c511001932.cfilter(c,tp) + return c:IsLocation(LOCATION_DECK) and c:GetPreviousControler()==tp and c:IsControler(tp) + and c:IsType(TYPE_MONSTER) and c:IsSetCard(0x1034) +end +function c511001932.tdcon(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511001932.cfilter,nil,tp) + local tc=g:GetFirst() + return g:GetCount()==1 and Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,2,tc,0x1034) +end +function c511001932.tdop(e,tp,eg,ep,ev,re,r,rp) + local gc=eg:Filter(c511001932.cfilter,nil,tp) + local tc=gc:GetFirst() + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_DECK,0,tc,0x1034) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local sg=g:Select(tp,2,2,nil) + sg:AddCard(tc) + Duel.ShuffleDeck(tp) + local sgc=sg:GetFirst() + while sgc do + Duel.MoveSequence(sgc,0) + sgc=sg:GetNext() + end + Duel.SortDecktop(tp,tp,3) + end +end diff --git a/script/c511001933.lua b/script/c511001933.lua new file mode 100644 index 00000000..6887b854 --- /dev/null +++ b/script/c511001933.lua @@ -0,0 +1,24 @@ +--Wicked Rune - Sadness +function c511001933.initial_effect(c) + --banish + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetDescription(aux.Stringid(511001933,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c511001933.bantg) + e1:SetOperation(c511001933.banop) + c:RegisterEffect(e1) +end +function c511001933.filter(c,code) + return c:IsCode(code) and c:IsAbleToRemove() +end +function c511001933.bantg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511001933.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511001933.banop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001933.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511001934.lua b/script/c511001934.lua new file mode 100644 index 00000000..1827788c --- /dev/null +++ b/script/c511001934.lua @@ -0,0 +1,86 @@ +--Wicked Canon +function c511001934.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --tograve + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001934,0)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001934.tgcon) + e2:SetTarget(c511001934.tgtg) + e2:SetOperation(c511001934.tgop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511001934,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511001934.spcost) + e3:SetTarget(c511001934.sptg) + e3:SetOperation(c511001934.spop) + c:RegisterEffect(e3) +end +function c511001934.tgcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511001934.tgfilter(c) + return c:IsSetCard(0x212) and c:IsType(TYPE_SPELL) and c:IsAbleToGrave() +end +function c511001934.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001934.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001934.tgop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001934.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c511001934.cfilter(c) + return c:IsSetCard(0x212) and c:IsType(TYPE_SPELL) and c:IsAbleToRemoveAsCost() +end +function c511001934.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c511001934.cfilter,tp,LOCATION_GRAVE,0,nil) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and g:GetCount()>0 + and Duel.IsExistingMatchingCard(c511001934.filter1,tp,LOCATION_EXTRA,0,1,nil,e,tp,g:GetCount()) end + e:SetLabel(g:GetCount()) + g:AddCard(e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001934.filter2(c,fc,e,tp,lv) + local fd=c:GetCode() + if not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:GetLevel()<=0 or c:GetLevel()>lv*2 then return false end + for i=1,fc.material_count do + if fd==fc.material[i] then return true end + end + return false +end +function c511001934.filter1(c,e,tp,lv) + local ct=c.material_count + if lv<=0 then return false end + return ct~=nil and Duel.IsExistingMatchingCard(c511001934.filter2,tp,LOCATION_DECK,0,1,nil,c,e,tp,lv) +end +function c511001934.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001934.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511001934.filter1,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,e:GetLabel()) + if g:GetCount()>0 then + Duel.ConfirmCards(1-tp,g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local spg=Duel.SelectMatchingCard(tp,c511001934.filter2,tp,LOCATION_DECK,0,1,1,nil,g:GetFirst(),e,tp,e:GetLabel()) + Duel.SpecialSummon(spg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001935.lua b/script/c511001935.lua new file mode 100644 index 00000000..ba718959 --- /dev/null +++ b/script/c511001935.lua @@ -0,0 +1,24 @@ +--Wicked Rune - Anger +function c511001935.initial_effect(c) + --banish + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetDescription(aux.Stringid(511001935,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c511001935.bantg) + e1:SetOperation(c511001935.banop) + c:RegisterEffect(e1) +end +function c511001935.filter(c,code) + return c:IsCode(code) and c:IsAbleToRemove() +end +function c511001935.bantg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511001935.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511001935.banop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001935.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511001936.lua b/script/c511001936.lua new file mode 100644 index 00000000..7321aca3 --- /dev/null +++ b/script/c511001936.lua @@ -0,0 +1,24 @@ +--Wicked Rune - Doubt +function c511001936.initial_effect(c) + --banish + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetDescription(aux.Stringid(511001936,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c511001936.bantg) + e1:SetOperation(c511001936.banop) + c:RegisterEffect(e1) +end +function c511001936.filter(c,code) + return c:IsCode(code) and c:IsAbleToRemove() +end +function c511001936.bantg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511001936.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511001936.banop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001936.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511001937.lua b/script/c511001937.lua new file mode 100644 index 00000000..ed4e0fd0 --- /dev/null +++ b/script/c511001937.lua @@ -0,0 +1,24 @@ +--Wicked Rune - Anguish +function c511001937.initial_effect(c) + --banish + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetDescription(aux.Stringid(511001937,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c511001937.bantg) + e1:SetOperation(c511001937.banop) + c:RegisterEffect(e1) +end +function c511001937.filter(c,code) + return c:IsCode(code) and c:IsAbleToRemove() +end +function c511001937.bantg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511001937.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511001937.banop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001937.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511001938.lua b/script/c511001938.lua new file mode 100644 index 00000000..056dcc76 --- /dev/null +++ b/script/c511001938.lua @@ -0,0 +1,24 @@ +--Wicked Rune - Hatred +function c511001938.initial_effect(c) + --banish + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetDescription(aux.Stringid(511001938,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c511001938.bantg) + e1:SetOperation(c511001938.banop) + c:RegisterEffect(e1) +end +function c511001938.filter(c,code) + return c:IsCode(code) and c:IsAbleToRemove() +end +function c511001938.bantg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511001938.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511001938.banop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001938.filter,tp,LOCATION_GRAVE,0,e:GetHandler(),e:GetHandler():GetCode()) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511001939.lua b/script/c511001939.lua new file mode 100644 index 00000000..ec0f89fd --- /dev/null +++ b/script/c511001939.lua @@ -0,0 +1,100 @@ +--コピーキャット +function c511001939.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001939.target) + e1:SetOperation(c511001939.activate) + c:RegisterEffect(e1) +end +function c511001939.filter(c,e,tp,eg,ep,ev,re,r,rp) + local ref=c:GetReasonEffect() + if not c:IsReason(REASON_BATTLE) and not c:IsReason(REASON_RULE) + and (not ref or ref:GetHandler():GetOwner()==tp) then return false end + if not c:IsPreviousLocation(LOCATION_ONFIELD) then return false end + if c:IsType(TYPE_MONSTER) then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + else + local te=c:GetActivateEffect() + if not te then return false end + local cost=te:GetCost() + local target=te:GetTarget() + return (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) + end +end +function c511001939.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511001939.filter(chkc,e,tp,eg,ep,ev,re,r,rp) end + if chk==0 then return Duel.IsExistingTarget(c511001939.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp,eg,ep,ev,re,r,rp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001939.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp) +end +function c511001939.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) or not c:IsRelateToEffect(e) then return end + if tc:IsType(TYPE_MONSTER) then + Duel.MoveToField(c,tp,tp,LOCATION_MZONE,POS_FACEUP,true) + c:SetStatus(STATUS_PROC_COMPLETE,true) + c:SetStatus(STATUS_SPSUMMON_TURN,true) + c:AddMonsterAttribute(tc:GetType()) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetDefense()) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SET_BASE_ATTACK) + e3:SetValue(tc:GetAttack()) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + c:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + c:RegisterEffect(e5) + c:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000,1) + Duel.RaiseSingleEvent(c,EVENT_SPSUMMON_SUCCESS,e,REASON_EFFECT,rp,ep,0) + else + local te=tc:GetActivateEffect() + if not te then return end + local tpe=tc:GetType() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + Duel.MoveSequence(c,5) + end + Duel.ClearTargetCard() + local tg=te:GetTarget() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + c:CancelToGrave(false) + else + c:CancelToGrave(true) + local code=te:GetHandler():GetOriginalCode() + c:CopyEffect(code,RESET_EVENT+0x1fc0000,1) + end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end +end diff --git a/script/c511001941.lua b/script/c511001941.lua new file mode 100644 index 00000000..bcf6d442 --- /dev/null +++ b/script/c511001941.lua @@ -0,0 +1,27 @@ +--ターボ・ウォリアー +function c511001941.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atk down + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511001941.atkcon) + e1:SetOperation(c511001941.atkop) + c:RegisterEffect(e1) +end +function c511001941.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a==c and d and d:IsFaceup() and d:GetAttack()>e:GetHandler():GetAttack() +end +function c511001941.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(Duel.GetAttackTarget():GetAttack()/2) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.GetAttackTarget():RegisterEffect(e1) +end diff --git a/script/c511001942.lua b/script/c511001942.lua new file mode 100644 index 00000000..661019ef --- /dev/null +++ b/script/c511001942.lua @@ -0,0 +1,29 @@ +--Bee Force - Arbalest the Quickshot +function c511001942.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001942,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetTarget(c511001942.sptg) + e2:SetOperation(c511001942.spop) + c:RegisterEffect(e2) +end +function c511001942.filter(c,e,tp) + return c:IsCode(511001942) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001942.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001942.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001942.spop(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,c511001942.filter,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 diff --git a/script/c511001943.lua b/script/c511001943.lua new file mode 100644 index 00000000..b6b60776 --- /dev/null +++ b/script/c511001943.lua @@ -0,0 +1,38 @@ +--Bee Force - Dart the Pursuit +function c511001943.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetDescription(aux.Stringid(511001943,0)) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001943.damcon) + e1:SetTarget(c511001943.damtg) + e1:SetCost(c511001943.damcost) + e1:SetOperation(c511001943.damop) + c:RegisterEffect(e1) +end +function c511001943.damcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return tc:IsRelateToBattle() and tc:IsStatus(STATUS_OPPO_BATTLE) and tc:IsControler(tp) and tc:IsSetCard(0x214) + and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) +end +function c511001943.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511001943.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + local atk=eg:GetFirst():GetBattleTarget():GetPreviousAttackOnField() + if atk<0 then atk=0 end + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c511001943.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001944.lua b/script/c511001944.lua new file mode 100644 index 00000000..f46d1fe2 --- /dev/null +++ b/script/c511001944.lua @@ -0,0 +1,24 @@ +--Bee Force - Pin the Hit +function c511001944.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100004,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511001944.target) + e1:SetOperation(c511001944.operation) + c:RegisterEffect(e1) +end +function c511001944.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(200) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,200) +end +function c511001944.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001945.lua b/script/c511001945.lua new file mode 100644 index 00000000..3fc54547 --- /dev/null +++ b/script/c511001945.lua @@ -0,0 +1,38 @@ +--Bee Force - Twinbow the Continuous Attack +function c511001945.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001945.spcon) + e1:SetOperation(c511001945.spop) + c:RegisterEffect(e1) + --multi attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511001945.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511001945.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.NegateRelatedChain(c,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0xfe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0xfe0000) + c:RegisterEffect(e2) +end diff --git a/script/c511001946.lua b/script/c511001946.lua new file mode 100644 index 00000000..c498afd8 --- /dev/null +++ b/script/c511001946.lua @@ -0,0 +1,42 @@ +--Bee Force - Needle the Stinger +function c511001946.initial_effect(c) + --disable + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetDescription(aux.Stringid(511001946,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001946.cost) + e1:SetTarget(c511001946.target) + e1:SetOperation(c511001946.operation) + c:RegisterEffect(e1) +end +function c511001946.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x214) end + local sg=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x214) + Duel.Release(sg,REASON_COST) +end +function c511001946.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511001946.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsDisabled() then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001947.lua b/script/c511001947.lua new file mode 100644 index 00000000..31639346 --- /dev/null +++ b/script/c511001947.lua @@ -0,0 +1,39 @@ +--Bee Force - Azusa the Spirit Bow +function c511001947.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --double + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCondition(c511001947.damcon) + e2:SetOperation(c511001947.damop) + c:RegisterEffect(e2) +end +function c511001947.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x214) +end +function c511001947.damcon(e,tp,eg,ep,ev,re,r,rp) + if rp~=tp or not re:GetHandler():IsSetCard(0x214) then return end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + return ex and Duel.IsExistingMatchingCard(c511001947.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler()) +end +function c511001947.damop(e,tp,eg,ep,ev,re,r,rp) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetValue(c511001947.damval) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) +end +function c511001947.damval(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + return val*2 +end diff --git a/script/c511001948.lua b/script/c511001948.lua new file mode 100644 index 00000000..d11612de --- /dev/null +++ b/script/c511001948.lua @@ -0,0 +1,121 @@ +--Bee Force - Big Ballista the Final Battle +function c511001948.initial_effect(c) + --synchro summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c511001948.syncon) + e1:SetOperation(c511001948.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001948,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511001948.atkcon) + e2:SetCost(c511001948.atkcost) + e2:SetTarget(c511001948.atktg) + e2:SetOperation(c511001948.atkop) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) +end +function c511001948.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511001948.matfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c511001948.synfilter1(c,syncard,lv,g) + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + if c:IsNotTuner() then return false end + local wg=g:Clone() + wg:RemoveCard(c) + return wg:IsExists(c511001948.synfilter2,1,nil,syncard,lv-tlv,wg) +end +function c511001948.synfilter2(c,syncard,lv,g) + if not c:IsSetCard(0x214) or not c:IsType(TYPE_SYNCHRO) then return false end + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + return g:IsExists(c511001948.synfilter3,1,c,syncard,lv-tlv) +end +function c511001948.synfilter3(c,syncard,lv) + local mlv=c:GetSynchroLevel(syncard) + local lv1=bit.band(mlv,0xffff) + local lv2=bit.rshift(mlv,16) + return c:IsNotTuner() and (lv1==lv or lv2==lv) +end +function c511001948.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c511001948.matfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local lv=c:GetLevel() + if tuner then return c511001948.synfilter1(tuner,c,lv,mg) end + return mg:IsExists(c511001948.synfilter1,1,nil,c,lv,mg) +end +function c511001948.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local mg=Duel.GetMatchingGroup(c511001948.matfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local lv=c:GetLevel() + local m1=tuner + if not tuner then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t1=mg:FilterSelect(tp,c511001948.synfilter1,1,1,nil,c,lv,mg) + m1=t1:GetFirst() + g:AddCard(m1) + end + lv=lv-m1:GetSynchroLevel(c) + mg:RemoveCard(m1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t2=mg:FilterSelect(tp,c511001948.synfilter2,1,1,nil,c,lv,mg) + local m2=t2:GetFirst() + g:AddCard(m2) + lv=lv-m2:GetSynchroLevel(c) + mg:RemoveCard(m2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t3=mg:FilterSelect(tp,c511001948.synfilter3,1,1,nil,c,lv) + g:Merge(t3) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c511001948.cfilter(c) + return c:IsSetCard(0x214) and c:IsType(TYPE_MONSTER) +end +function c511001948.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c511001948.cfilter,tp,LOCATION_GRAVE,0,e:GetHandler()) + if chk==0 then return g:GetCount()>0 and g:FilterCount(Card.IsAbleToRemoveAsCost,nil)==g:GetCount() end + e:SetLabel(g:GetCount()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001948.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511001948.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()*-500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511001949.lua b/script/c511001949.lua new file mode 100644 index 00000000..c7fbf687 --- /dev/null +++ b/script/c511001949.lua @@ -0,0 +1,98 @@ +--Bee Force - Hama the Devil Conquering Bow +function c511001949.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsSetCard,0x214),1) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100009,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511001949.atcon) + e1:SetTarget(c511001949.attg) + e1:SetOperation(c511001949.atop) + c:RegisterEffect(e1) + --attack twice + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + c:RegisterEffect(e2) + --Damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95100009,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511001949.damcon) + e3:SetTarget(c511001949.damtg) + e3:SetOperation(c511001949.damop) + c:RegisterEffect(e3) + if not c511001949.global_check then + c511001949.global_check=true + c511001949[0]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511001949.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001949.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511001949.atcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511001949.attg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511001949.atop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-ev) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + end +end +function c511001949.damcon(e,tp,eg,ep,ev,re,r,rp,chk) + return Duel.GetTurnPlayer()==tp and c511001949[0] +end +function c511001949.filter(c) + return c:IsSetCard(0x214) and c:IsType(TYPE_MONSTER) +end +function c511001949.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001949.filter,tp,LOCATION_GRAVE,0,1,nil) end + local dam=Duel.GetMatchingGroupCount(c511001949.filter,tp,LOCATION_GRAVE,0,nil)*300 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511001949.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local d=Duel.GetMatchingGroupCount(c511001949.filter,tp,LOCATION_GRAVE,0,nil)*300 + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001949.checkop(e,tp,eg,ep,ev,re,r,rp) + c511001949[0]=false +end +function c511001949.clear(e,tp,eg,ep,ev,re,r,rp) + c511001949[0]=true +end diff --git a/script/c511001950.lua b/script/c511001950.lua new file mode 100644 index 00000000..0fc7d304 --- /dev/null +++ b/script/c511001950.lua @@ -0,0 +1,35 @@ +--All-Out Rebellion +function c511001950.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001950.condition) + e1:SetTarget(c511001950.target) + e1:SetOperation(c511001950.activate) + c:RegisterEffect(e1) +end +function c511001950.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c511001950.filter(c,e,tp) + return c:IsSetCard(0x214) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001950.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct + and Duel.IsExistingMatchingCard(c511001950.filter,tp,LOCATION_GRAVE,0,ct,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001950.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE) + if Duel.GetLocationCount(tp,LOCATION_MZONE)0 + and Duel.IsExistingMatchingCard(c511001951.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp,tc:GetCode()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001951.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001951.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp,tc:GetCode()) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + local ct=e:GetLabel() + ct=ct-1 + e:SetLabel(ct) + if ct<=0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end + end +end diff --git a/script/c511001952.lua b/script/c511001952.lua new file mode 100644 index 00000000..ca72ca19 --- /dev/null +++ b/script/c511001952.lua @@ -0,0 +1,173 @@ +--Ultimitl Bishbalkin the Ultimate Legendary God +function c511001952.initial_effect(c) + --level 0 + c:SetStatus(STATUS_NO_LEVEL,true) + --dark synchro summon + c:EnableReviveLimit() + c511001952.tuner_filter=function(mc) return mc and mc:IsSetCard(0x301) end + c511001952.nontuner_filter=function(mc) return true end + c511001952.minntct=1 + c511001952.maxntct=1 + c511001952.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c511001952.syncon) + e1:SetOperation(c511001952.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511001952.val) + c:RegisterEffect(e2) + --Token + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c511001952.sptg) + e3:SetOperation(c511001952.spop) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c511001952.desreptg) + e4:SetOperation(c511001952.desrepop) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(29146185,1)) + e5:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(511001952) + e5:SetTarget(c511001952.destg) + e5:SetOperation(c511001952.desop) + c:RegisterEffect(e5) + --add setcode + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e6:SetCode(EFFECT_ADD_SETCODE) + e6:SetValue(0x301) + c:RegisterEffect(e6) +end +function c511001952.tmatfilter(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c511001952.ntmatfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c511001952.synfilter1(c,lv,tuner,syncard) + local tlv=c:GetSynchroLevel(syncard) + if c:GetFlagEffect(100000147)==0 then + return c:IsLevelAbove(8) and tuner:IsExists(c511001952.synfilter2,1,nil,tlv,lv+tlv,syncard) + else + return tuner:IsExists(c511001952.synfilter2,1,nil,lv-tlv,syncard) + end +end +function c511001952.synfilter2(c,lv,lv2,syncard) + return c:GetSynchroLevel(syncard)==lv or c:GetSynchroLevel(syncard)==lv2 +end +function c511001952.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local tuner=Duel.GetMatchingGroup(c511001952.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c511001952.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return nontuner:IsExists(c511001952.synfilter1,1,nil,12,tuner,c) +end +function c511001952.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local tun=Duel.GetMatchingGroup(c511001952.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nont=Duel.GetMatchingGroup(c511001952.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local nontmat=nont:FilterSelect(tp,c511001952.synfilter1,1,1,nil,12,tun,c) + local mat1=nontmat:GetFirst() + g:AddCard(mat1) + local lv1=mat1:GetSynchroLevel(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t + if mat1:GetFlagEffect(100000147)==0 then + t=tun:FilterSelect(tp,c511001952.synfilter2,1,1,nil,12+lv1,lv1,c) + else + t=tun:FilterSelect(tp,c511001952.synfilter2,1,1,nil,12-lv1,c) + end + g:Merge(t) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c511001952.val(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,LOCATION_MZONE)*1000 +end +function c511001952.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,90884404,0,0x4011,100,0,1,RACE_FIEND,ATTRIBUTE_DARK)) + or (Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(1-tp,90884404,0,0x4011,100,0,1,RACE_FIEND,ATTRIBUTE_DARK)) end + local ft=(Duel.GetLocationCount(tp,LOCATION_MZONE)+Duel.GetLocationCount(1-tp,LOCATION_MZONE)) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ft,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ft,0,0) +end +function c511001952.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<=0 or not Duel.IsPlayerCanSpecialSummonMonster(tp,90884404,0,0x4011,100,0,1,RACE_FIEND,ATTRIBUTE_DARK) then return end + for i=1,ft do + local token=Duel.CreateToken(tp,90884404) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e1) + end + local ft2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft2>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft2=1 end + if ft2<=0 or not Duel.IsPlayerCanSpecialSummonMonster(1-tp,90884404,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) then return end + for i=1,ft2 do + local token=Duel.CreateToken(tp,90884404) + Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e1) + end + Duel.SpecialSummonComplete() +end +function c511001952.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) and c:IsOnField() and c:IsFaceup() + and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + if Duel.SelectYesNo(tp,aux.Stringid(511001952,0)) then return true + else return false end +end +function c511001952.desrepop(e,tp,eg,ep,ev,re,r,rp) + Duel.RaiseSingleEvent(e:GetHandler(),511001952,re,r,rp,0,0) +end +function c511001952.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*200) +end +function c511001952.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct>0 then + Duel.Damage(1-tp,ct*200,REASON_EFFECT) + end +end diff --git a/script/c511001954.lua b/script/c511001954.lua new file mode 100644 index 00000000..d24b0128 --- /dev/null +++ b/script/c511001954.lua @@ -0,0 +1,55 @@ +--BF-孤高のシルバー・ウィンド +function c511001954.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x33),aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100014,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511001954.descost) + e1:SetTarget(c511001954.destg) + e1:SetOperation(c511001954.desop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511001954.indtg) + e2:SetCountLimit(1) + e2:SetValue(aux.TRUE) + c:RegisterEffect(e2) +end +function c511001954.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c511001954.filter(c,atk) + return c:IsFaceup() and c:GetDefense()<=atk and c:IsDestructable() +end +function c511001954.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001954.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) end + local g=Duel.GetMatchingGroup(c511001954.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e:GetHandler():GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001954.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511001954.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,2,nil,e:GetHandler():GetAttack()) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end +function c511001954.indtg(e,c) + return c:IsFaceup() and c:IsSetCard(0x33) +end diff --git a/script/c511001955.lua b/script/c511001955.lua new file mode 100644 index 00000000..f786ec90 --- /dev/null +++ b/script/c511001955.lua @@ -0,0 +1,69 @@ +--A BF-驟雨のライキリ +function c511001955.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --add type + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001955.tncon) + e1:SetOperation(c511001955.tnop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c511001955.valcheck) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c511001955.destg) + e3:SetOperation(c511001955.desop) + c:RegisterEffect(e3) +end +function c511001955.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsSetCard,1,nil,0x33) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end +function c511001955.tncon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and e:GetLabel()==1 +end +function c511001955.tnop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511001955.filter(c) + return c:IsFaceup() and c:IsSetCard(0x33) +end +function c511001955.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingMatchingCard(c511001955.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + local ct=Duel.GetMatchingGroupCount(c511001955.filter,tp,LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511001955.desop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511001956.lua b/script/c511001956.lua new file mode 100644 index 00000000..b9c61a48 --- /dev/null +++ b/script/c511001956.lua @@ -0,0 +1,33 @@ +--ライトニング・ウォリアー +function c511001956.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(87259077,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCondition(c511001956.damcon) + e1:SetTarget(c511001956.damtg) + e1:SetOperation(c511001956.damop) + c:RegisterEffect(e1) +end +function c511001956.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local t=Duel.GetAttackTarget() + if ev==1 then t=Duel.GetAttacker() end + if not c:IsRelateToBattle() or c:IsFacedown() then return false end + return t:IsType(TYPE_MONSTER) +end +function c511001956.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511001956.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)*400,REASON_EFFECT) +end diff --git a/script/c511001957.lua b/script/c511001957.lua new file mode 100644 index 00000000..2d3d27cd --- /dev/null +++ b/script/c511001957.lua @@ -0,0 +1,47 @@ +--閃珖竜 スターダスト +function c511001957.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy replace + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511001957.reptg) + e1:SetValue(c511001957.repval) + c:RegisterEffect(e1) +end +function c511001957.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(511001957)==0 and eg:GetCount()>0 end + if Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + c:RegisterFlagEffect(511001957,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Hint(HINT_CARD,0,511001957) + Duel.HintSelection(g) + if eg:IsContains(tc) then + e:SetLabelObject(tc) + else + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetCountLimit(1) + e1:SetValue(c511001957.valcon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + e:SetLabelObject(nil) + end + end + end + return true +end +function c511001957.repval(e,c) + return c==e:GetLabelObject() +end +function c511001957.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 +end diff --git a/script/c511001958.lua b/script/c511001958.lua new file mode 100644 index 00000000..deebf162 --- /dev/null +++ b/script/c511001958.lua @@ -0,0 +1,25 @@ +--Gate Vehicle +function c511001958.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511001958.condition) + e1:SetOperation(c511001958.operation) + c:RegisterEffect(e1) +end +function c511001958.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511001958.operation(e,tp,eg,ep,ev,re,r,rp) + local ats=eg:GetFirst():GetAttackableTarget() + local at=Duel.GetAttackTarget() + if ats:FilterCount(aux.TRUE,at)<=0 then return end + if Duel.SelectYesNo(tp,aux.Stringid(511001958,0)) then + local g=ats:Select(tp,1,1,at) + Duel.Hint(HINT_CARD,0,511001958) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end diff --git a/script/c511001959.lua b/script/c511001959.lua new file mode 100644 index 00000000..5d686f55 --- /dev/null +++ b/script/c511001959.lua @@ -0,0 +1,11 @@ +-- Speeding Roaring Road Guardian +function c511001959.initial_effect(c) + --atklimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(aux.TRUE) + c:RegisterEffect(e2) +end diff --git a/script/c511001960.lua b/script/c511001960.lua new file mode 100644 index 00000000..ac17850c --- /dev/null +++ b/script/c511001960.lua @@ -0,0 +1,38 @@ +--Illegal Modding +function c511001960.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001960.cost) + e1:SetTarget(c511001960.target) + e1:SetOperation(c511001960.activate) + c:RegisterEffect(e1) +end +function c511001960.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,511000813) + and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,511000827) + and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,511001958) end + local rg1=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,511000813) + local rg2=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,511000827) + local rg3=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,511001958) + rg1:Merge(rg2) + rg1:Merge(rg3) + Duel.Release(rg1,REASON_COST) +end +function c511001960.spfilter(c,e,tp) + return c:IsCode(511001959) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001960.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001960.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511001960.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c511001960.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001961.lua b/script/c511001961.lua new file mode 100644 index 00000000..42453123 --- /dev/null +++ b/script/c511001961.lua @@ -0,0 +1,73 @@ +--BF-精鋭のゼピュロス +function c511001961.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100021,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c511001961.cost) + e1:SetTarget(c511001961.target) + e1:SetOperation(c511001961.operation) + c:RegisterEffect(e1) +end +function c511001961.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chk==0 then + if ft<0 then return false end + if ft==0 then + return Duel.IsExistingMatchingCard(Card.IsAbleToHandAsCost,tp,LOCATION_MZONE,0,1,nil) + else + return Duel.IsExistingMatchingCard(Card.IsAbleToHandAsCost,tp,LOCATION_ONFIELD,0,1,nil) + end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + if ft==0 then + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHandAsCost,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) + else + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHandAsCost,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) + end +end +function c511001961.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,400) +end +function c511001961.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.Damage(tp,400,REASON_EFFECT) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_MSET) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511001961.desop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SSET) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_CHANGE_POS) + e3:SetCondition(c511001961.descon2) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c511001961.descon3) + c:RegisterEffect(e4) + end +end +function c511001961.filter2(c) + return bit.band(c:GetPreviousPosition(),POS_FACEUP)~=0 and bit.band(c:GetPosition(),POS_FACEDOWN)~=0 +end +function c511001961.descon2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001961.filter2,1,nil) +end +function c511001961.descon3(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsFacedown,1,nil) +end +function c511001961.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511001962.lua b/script/c511001962.lua new file mode 100644 index 00000000..04d213f1 --- /dev/null +++ b/script/c511001962.lua @@ -0,0 +1,32 @@ +--Blackwing - Gram the Shining Star +function c511001962.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x33),aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001962,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511001962.sumtg) + e1:SetOperation(c511001962.sumop) + c:RegisterEffect(e1) + end +function c511001962.sumfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x33) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001962.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001962.sumfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511001962.sumop(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,c511001962.sumfilter,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 diff --git a/script/c511001963.lua b/script/c511001963.lua new file mode 100644 index 00000000..371bc506 --- /dev/null +++ b/script/c511001963.lua @@ -0,0 +1,27 @@ +--フォーミュラ・シンクロン +function c511001963.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001963,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511001963.drtg) + e1:SetOperation(c511001963.drop) + c:RegisterEffect(e1) +end +function c511001963.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001963.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511001964.lua b/script/c511001964.lua new file mode 100644 index 00000000..042bb35e --- /dev/null +++ b/script/c511001964.lua @@ -0,0 +1,44 @@ +--レッド・ワイバーン +function c511001964.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100024,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001964.descon) + e1:SetTarget(c511001964.destg) + e1:SetOperation(c511001964.desop) + c:RegisterEffect(e1) +end +function c511001964.cfilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c511001964.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001964.cfilter,tp,0,LOCATION_MZONE,2,nil,e:GetHandler():GetAttack()) + and Duel.GetTurnPlayer()~=tp +end +function c511001964.filter(c,tp) + local atk=c:GetAttack() + return c:IsFaceup() and c:IsDestructable() + and not Duel.IsExistingMatchingCard(c511001964.cfilter,tp,0,LOCATION_MZONE,1,nil,atk) +end +function c511001964.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511001964.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511001964.filter,tp,0,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001964.filter,tp,0,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001964.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001965.lua b/script/c511001965.lua new file mode 100644 index 00000000..df45fdf9 --- /dev/null +++ b/script/c511001965.lua @@ -0,0 +1,58 @@ +--Arctic Beast - Iceberg Narwhal +function c511001965.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001965.discon) + e1:SetTarget(c511001965.distg) + e1:SetOperation(c511001965.disop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_DAMAGE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511001965.damcon) + e2:SetTarget(c511001965.damtg) + e2:SetOperation(c511001965.damop) + c:RegisterEffect(e2) +end +function c511001965.discon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and a and a==e:GetHandler() + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp and Duel.IsChainNegatable(ev) +end +function c511001965.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001965.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511001965.damcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c511001965.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c511001965.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001966.lua b/script/c511001966.lua new file mode 100644 index 00000000..e239977e --- /dev/null +++ b/script/c511001966.lua @@ -0,0 +1,41 @@ +--C・ドラゴン +function c511001966.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atk + 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:SetValue(c511001966.atkval) + c:RegisterEffect(e1) + --mill + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(64973287,1)) + e2:SetCategory(CATEGORY_DECKDES) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(aux.bdocon) + e2:SetTarget(c511001966.ddtg) + e2:SetOperation(c511001966.ddop) + c:RegisterEffect(e2) +end +function c511001966.atkfilter(c) + return c:IsSetCard(0x25) and c:IsType(TYPE_MONSTER) +end +function c511001966.atkval(e,c) + return Duel.GetMatchingGroupCount(c511001966.atkfilter,c:GetControler(),LOCATION_GRAVE,0,nil)*200 +end +function c511001966.ddtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local bc=e:GetHandler():GetBattleTarget() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(bc:GetLevel()) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,bc:GetLevel()) +end +function c511001966.ddop(e,tp,eg,ep,ev,re,r,rp) + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardDeck(p,val,REASON_EFFECT) +end diff --git a/script/c511001967.lua b/script/c511001967.lua new file mode 100644 index 00000000..0363dc97 --- /dev/null +++ b/script/c511001967.lua @@ -0,0 +1,42 @@ +--不退の荒武者 +function c511001967.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),aux.NonTuner(Card.IsRace,RACE_WARRIOR),1) + c:EnableReviveLimit() + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(c511001967.indes) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c511001967.descon) + e2:SetTarget(c511001967.destg) + e2:SetOperation(c511001967.desop) + c:RegisterEffect(e2) +end +function c511001967.indes(e,c) + return c:GetAttack()>e:GetHandler():GetAttack() +end +function c511001967.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + return tc:IsRelateToBattle() + and tc:GetAttack()>e:GetHandler():GetAttack() +end +function c511001967.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetHandler():GetBattleTarget() + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c511001967.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001968.lua b/script/c511001968.lua new file mode 100644 index 00000000..67cef3c8 --- /dev/null +++ b/script/c511001968.lua @@ -0,0 +1,40 @@ +--AOJ Tractor +function c511001968.initial_effect(c) + --salvage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001968,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001968.thcon) + e1:SetCost(c511001968.thcost) + e1:SetTarget(c511001968.thtg) + e1:SetOperation(c511001968.thop) + c:RegisterEffect(e1) +end +function c511001968.confilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) +end +function c511001968.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001968.confilter,tp,0,LOCATION_MZONE,1,nil) +end +function c511001968.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511001968.filter(c) + return c:IsSetCard(0x1) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511001968.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001968.filter,tp,LOCATION_DECK,0,2,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_DECK) +end +function c511001968.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001968.filter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,2,2,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c511001969.lua b/script/c511001969.lua new file mode 100644 index 00000000..e0234d71 --- /dev/null +++ b/script/c511001969.lua @@ -0,0 +1,38 @@ +--Assault Blackwing - Kusanagi the Gathering Storm +function c511001969.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --Atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c511001969.valop) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) +end +function c511001969.valop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetSummonType()~=SUMMON_TYPE_SYNCHRO then return end + local g=c:GetMaterial() + local tc=g:GetFirst() + local atk=0 + while tc do + if tc:IsType(TYPE_SYNCHRO) and tc:IsSetCard(0x33) then + local tatk=tc:GetTextAttack() + if tatk<0 then tatk=0 end + atk=atk+tatk + end + tc=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c511001970.lua b/script/c511001970.lua new file mode 100644 index 00000000..1de22c16 --- /dev/null +++ b/script/c511001970.lua @@ -0,0 +1,17 @@ +--Celestial Biker Maiden Tokkou Ladies +function c511001970.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511001970.spcon) + c:RegisterEffect(e1) +end +function c511001970.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511001971.lua b/script/c511001971.lua new file mode 100644 index 00000000..6199e985 --- /dev/null +++ b/script/c511001971.lua @@ -0,0 +1,36 @@ +--Legendary Boss Red Queen the Biker Goddess +function c511001971.initial_effect(c) + --control + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001971.cttg) + e1:SetOperation(c511001971.ctop) + c:RegisterEffect(e1) +end +function c511001971.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,ft,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511001971.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc=g:GetFirst() + while tc do + if Duel.GetControl(tc,tp,PHASE_END,1) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end +end diff --git a/script/c511001972.lua b/script/c511001972.lua new file mode 100644 index 00000000..48c4f8e5 --- /dev/null +++ b/script/c511001972.lua @@ -0,0 +1,32 @@ +--Jutte Lord +function c511001972.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001972,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511001972.sptg) + e1:SetOperation(c511001972.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c511001972.filter(c,e,tp) + return (c:IsCode(60410769) or c:IsCode(511001972)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001972.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001972.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001972.spop(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,c511001972.filter,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 diff --git a/script/c511001973.lua b/script/c511001973.lua new file mode 100644 index 00000000..d49a487a --- /dev/null +++ b/script/c511001973.lua @@ -0,0 +1,129 @@ +--TG レシプロ・ドラゴン・フライ +function c511001973.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.NonTuner(nil)) + c:EnableReviveLimit() + --todeck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100034,0)) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001973.tg) + e1:SetOperation(c511001973.op) + c:RegisterEffect(e1) + --Type Machine + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_ADD_RACE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(RACE_MACHINE) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511001973,3)) + e4:SetCategory(CATEGORY_DRAW) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DESTROYED) + e4:SetTarget(c511001973.drtg) + e4:SetOperation(c511001973.drop) + c:RegisterEffect(e4) + --Half stats + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(95100034,4)) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_CHAINING) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511001973.discon) + e5:SetOperation(c511001973.disop) + c:RegisterEffect(e5) +end +function c511001973.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and (c:IsAbleToGrave() or c:IsAbleToExtra()) +end +function c511001973.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001973.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001973.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511001973.filter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc:IsAbleToExtra() then + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) + end + if tc:IsAbleToGrave() then + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) + end +end +function c511001973.mgfilter(c,e,tp,sync) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x80008)~=0x80008 or c:GetReasonCard()~=sync + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001973.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) then return end + local a=tc:IsAbleToGrave() + local b=tc:IsAbleToExtra() + local op=2 + if a and b then + op=Duel.SelectOption(tp,aux.Stringid(2407147,0),aux.Stringid(52823314,0)) + elseif a then + Duel.SelectOption(tp,aux.Stringid(2407147,0)) + op=0 + elseif b then + Duel.SelectOption(tp,aux.Stringid(52823314,0)) + op=1 + end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + if op==0 and Duel.SendtoGrave(tc,REASON_EFFECT)==0 then sumable=false end + if op==1 and Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 then sumable=false end + if sumtype~=SUMMON_TYPE_SYNCHRO or mg:GetCount()==0 or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) + or mg:IsExists(c511001973.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable and Duel.SelectYesNo(tp,aux.Stringid(32441317,0)) then + Duel.BreakEffect() + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001973.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001973.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c511001973.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + return re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) and Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):IsContains(c) +end +function c511001973.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c:GetBaseAttack()/2) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(c:GetBaseDefense()/2) + c:RegisterEffect(e2) + end +end diff --git a/script/c511001974.lua b/script/c511001974.lua new file mode 100644 index 00000000..c28c328a --- /dev/null +++ b/script/c511001974.lua @@ -0,0 +1,29 @@ +--Phantom Knights Tomb Shield +function c511001974.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5818294,0)) + e1:SetCategory(CATEGORY_NEGATE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511001974.negcon) + e1:SetCost(c511001974.negcost) + e1:SetTarget(c511001974.negtg) + e1:SetOperation(c511001974.negop) + c:RegisterEffect(e1) +end +function c511001974.negcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511001974.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511001974.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end +function c511001974.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) +end diff --git a/script/c511001975.lua b/script/c511001975.lua new file mode 100644 index 00000000..0e266cf3 --- /dev/null +++ b/script/c511001975.lua @@ -0,0 +1,48 @@ +--Phantom Knights Dark Gauntlet +function c511001975.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001975.target) + e1:SetOperation(c511001975.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c511001975.handcon) + c:RegisterEffect(e2) +end +function c511001975.handcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_ONFIELD,0)==0 +end +function c511001975.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsPlayerCanSpecialSummonMonster(tp,24212820,0x10db,0x21,300,600,4,RACE_WARRIOR,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001975.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) + and Duel.IsPlayerCanSpecialSummonMonster(tp,24212820,0x10db,0x21,300,600,4,RACE_WARRIOR,ATTRIBUTE_DARK) then + c:AddMonsterAttribute(TYPE_EFFECT) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetCondition(c511001975.atkcon) + e1:SetValue(c511001975.atkval) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + end +end +function c511001975.atkcon(e) + return Duel.GetAttackTarget() and e:GetHandler()==Duel.GetAttackTarget() +end +function c511001975.atkval(e,c) + return Duel.GetMatchingGroupCount(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x10db)*300 +end diff --git a/script/c511001976.lua b/script/c511001976.lua new file mode 100644 index 00000000..ebe727f0 --- /dev/null +++ b/script/c511001976.lua @@ -0,0 +1,36 @@ +--The Phantom Knights Shade Brigandine +function c511001976.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001976.target) + e1:SetOperation(c511001976.activate) + c:RegisterEffect(e1) + --Trap activate in set turn + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCondition(c511001976.cond) + c:RegisterEffect(e2) +end +function c511001976.cond(e) + return not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_TRAP) +end +function c511001976.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsPlayerCanSpecialSummonMonster(tp,98827725,0x10db,0x11,0,800,4,RACE_WARRIOR,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001976.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) + and Duel.IsPlayerCanSpecialSummonMonster(tp,98827725,0x10db,0x11,0,800,4,RACE_WARRIOR,ATTRIBUTE_DARK) then + c:AddMonsterAttribute(TYPE_NORMAL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + end +end diff --git a/script/c511001977.lua b/script/c511001977.lua new file mode 100644 index 00000000..fed77452 --- /dev/null +++ b/script/c511001977.lua @@ -0,0 +1,26 @@ +--White Warrior - Hail the Iron Hammer +function c511001977.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCondition(aux.bdocon) + e1:SetTarget(c511001977.destg) + e1:SetOperation(c511001977.desop) + c:RegisterEffect(e1) +end +function c511001977.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001977.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001978.lua b/script/c511001978.lua new file mode 100644 index 00000000..7019cbde --- /dev/null +++ b/script/c511001978.lua @@ -0,0 +1,34 @@ +--White Warrior - Fog the Treasure Shield +function c511001978.initial_effect(c) + --destroy s/t + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100039,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511001978.descon) + e1:SetTarget(c511001978.destg) + e1:SetOperation(c511001978.desop) + c:RegisterEffect(e1) +end +function c511001978.descon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst():IsControler(tp) and Duel.GetAttackTarget()==nil and e:GetHandler():IsPosition(POS_FACEUP_DEFENSE) +end +function c511001978.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511001978.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511001978.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001978.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001978.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001978.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511001979.lua b/script/c511001979.lua new file mode 100644 index 00000000..0fcf9a3c --- /dev/null +++ b/script/c511001979.lua @@ -0,0 +1,53 @@ +--White Warrior - Sleet the Morning Star +function c511001979.initial_effect(c) + --Gain effect + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100040,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001979.cost) + e1:SetTarget(c511001979.target) + e1:SetOperation(c511001979.operation) + c:RegisterEffect(e1) +end +function c511001979.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511001979.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,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c511001979.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(tc) + e1:SetDescription(aux.Stringid(30079770,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT+EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(aux.bdocon) + e1:SetTarget(c511001979.damtg) + e1:SetOperation(c511001979.damop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c511001979.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetHandler():GetAttack()/2 + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511001979.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=e:GetHandler():GetAttack()/2 + if dam<0 then dam=0 end + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511001980.lua b/script/c511001980.lua new file mode 100644 index 00000000..d80257d3 --- /dev/null +++ b/script/c511001980.lua @@ -0,0 +1,38 @@ +--White Warrior - Snow the Rope Dart +function c511001980.initial_effect(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5361647,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetTarget(c511001980.thtg) + e1:SetOperation(c511001980.thop) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) + --atkup + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c511001980.atkval) + c:RegisterEffect(e5) +end +function c511001980.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c511001980.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsAbleToHand() then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end +function c511001980.atkval(e,c) + return Duel.GetFieldGroupCount(0,LOCATION_ONFIELD,LOCATION_ONFIELD)*100 +end diff --git a/script/c511001981.lua b/script/c511001981.lua new file mode 100644 index 00000000..9b47b0de --- /dev/null +++ b/script/c511001981.lua @@ -0,0 +1,93 @@ +--太陽龍インティ +function c511001981.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy&damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100042,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511001981.descon) + e1:SetTarget(c511001981.destg) + e1:SetOperation(c511001981.desop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95100042,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511001981.spcon) + e2:SetTarget(c511001981.sptg) + e2:SetOperation(c511001981.spop) + c:RegisterEffect(e2) + --atk 0 + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95100042,2)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetHintTiming(TIMING_DAMAGE_STEP) + e3:SetCountLimit(1) + e3:SetCondition(c511001981.atkcon) + e3:SetOperation(c511001981.atkop) + c:RegisterEffect(e3) +end +function c511001981.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511001981.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetHandler():GetReasonCard() + if tc:IsRelateToBattle() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()) + end +end +function c511001981.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetReasonCard() + if not tc:IsRelateToBattle() then return end + local atk=tc:GetAttack() + if atk<0 then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end +function c511001981.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511001981.spfilter(c,e,tp) + return c:IsCode(66818682) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001981.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001981.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001981.spop(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,c511001981.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511001981.atkcon(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and e:GetHandler():GetAttack()>0 +end +function c511001981.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001982.lua b/script/c511001982.lua new file mode 100644 index 00000000..d7c072c5 --- /dev/null +++ b/script/c511001982.lua @@ -0,0 +1,104 @@ +--ドリル・ウォリアー +function c511001982.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c511001982.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3429238,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001982.datcost) + e1:SetTarget(c511001982.dattg) + e1:SetOperation(c511001982.datop) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95100043,1)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511001982.rmcost) + e2:SetTarget(c511001982.rmtg) + e2:SetOperation(c511001982.rmop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95100043,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_REMOVED) + e3:SetCondition(c511001982.spcon) + e3:SetTarget(c511001982.sptg) + e3:SetOperation(c511001982.spop) + c:RegisterEffect(e3) +end +c511001982.material_setcode=0x17 +function c511001982.tfilter(c) + return c:IsCode(56286179) or c:IsHasEffect(20932152) +end +function c511001982.datcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return true end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511001982.dattg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c511001982.datop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511001982.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetMatchingGroupCount(Card.IsDiscardable,tp,LOCATION_HAND,0,e:GetHandler()) end + Duel.DiscardHand(tp,Card.IsDiscardable,2,2,REASON_COST+REASON_DISCARD) +end +function c511001982.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),2,0,0) +end +function c511001982.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT)~=0 then + e:GetHandler():RegisterFlagEffect(511001982,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,1) + end +end +function c511001982.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511001982.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511001982)~=0 end + e:GetHandler():ResetFlagEffect(511001982) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511001982.filter(c) + return c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511001982.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) and Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511001982.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c511001983.lua b/script/c511001983.lua new file mode 100644 index 00000000..79ed3517 --- /dev/null +++ b/script/c511001983.lua @@ -0,0 +1,33 @@ +--カタパルト・ウォリアー +function c511001983.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100044,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001983.cost) + e1:SetTarget(c511001983.target) + e1:SetOperation(c511001983.operation) + c:RegisterEffect(e1) +end +function c511001983.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + e:SetLabel(sg:GetFirst():GetAttack()) + Duel.Release(sg,REASON_COST) +end +function c511001983.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c511001983.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001986.lua b/script/c511001986.lua new file mode 100644 index 00000000..3a06b103 --- /dev/null +++ b/script/c511001986.lua @@ -0,0 +1,46 @@ +--Demon Moncarch +function c511001986.initial_effect(c) + --copy Spell + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100047,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511001986.condition) + e1:SetCost(c511001986.cost) + e1:SetTarget(c511001986.target) + e1:SetOperation(c511001986.operation) + c:RegisterEffect(e1) +end +function c511001986.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE +end +function c511001986.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToRemoveAsCost() and c:CheckActivateEffect(false,true,false)~=nil +end +function c511001986.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001986.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(95100047,1)) + local g=Duel.SelectMatchingCard(tp,c511001986.filter,tp,LOCATION_GRAVE,0,1,1,nil) + local te=g:GetFirst():CheckActivateEffect(false,true,true) + c511001986[Duel.GetCurrentChain()]=te + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001986.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local te=c511001986[Duel.GetCurrentChain()] + if chkc then + local tg=te:GetTarget() + return tg(e,tp,eg,ep,ev,re,r,rp,0,true) + end + if chk==0 then return true end + if not te then return end + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + local tg=te:GetTarget() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c511001986.operation(e,tp,eg,ep,ev,re,r,rp) + local te=c511001986[Duel.GetCurrentChain()] + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end diff --git a/script/c511001987.lua b/script/c511001987.lua new file mode 100644 index 00000000..4a3cb201 --- /dev/null +++ b/script/c511001987.lua @@ -0,0 +1,15 @@ +--Symmetry Rorschach +function c511001987.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(aux.bdocon) + e1:SetOperation(c511001987.operation) + c:RegisterEffect(e1) +end +function c511001987.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetDecktopGroup(1-tp,1) + if g:GetCount()==0 then return end + Duel.ConfirmCards(tp,g) +end diff --git a/script/c511001988.lua b/script/c511001988.lua new file mode 100644 index 00000000..8cbb658e --- /dev/null +++ b/script/c511001988.lua @@ -0,0 +1,39 @@ +--Monarch's Freezing Air +function c511001988.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c511001988.descost) + e1:SetTarget(c511001988.destg) + e1:SetOperation(c511001988.desop) + c:RegisterEffect(e1) +end +function c511001988.cfilter(c) + return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemoveAsCost() +end +function c511001988.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c511001988.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511001988.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + g:AddCard(e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511001988.filter(c) + return c:IsFacedown() and c:IsDestructable() +end +function c511001988.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511001988.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(c511001988.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001988.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511001988.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511001989.lua b/script/c511001989.lua new file mode 100644 index 00000000..30da0e84 --- /dev/null +++ b/script/c511001989.lua @@ -0,0 +1,49 @@ +--Bee Jewel of Rebirth +function c511001989.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001989.target) + e1:SetOperation(c511001989.activate) + c:RegisterEffect(e1) +end +function c511001989.filter(c,e,tp) + return c:IsSetCard(0x214) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001989.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511001989.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511001989.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511001989.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511001989.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e4) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001990.lua b/script/c511001990.lua new file mode 100644 index 00000000..b827ae43 --- /dev/null +++ b/script/c511001990.lua @@ -0,0 +1,68 @@ +--Bee Formation +function c511001990.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(TIMING_STANDBY_PHASE,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511001990.target) + e1:SetOperation(c511001990.activate) + c:RegisterEffect(e1) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511001990.descon) + e3:SetOperation(c511001990.desop) + c:RegisterEffect(e3) + --gain atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c511001990.atkop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c511001990.filter(c) + return c:IsSetCard(0x214) and c:IsFaceup() +end +function c511001990.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001990.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001990.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511001990.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511001990.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + end +end +function c511001990.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511001990.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511001990.spfilter(c,tp) + return c:GetSummonPlayer()==1-tp +end +function c511001990.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if eg:IsExists(c511001990.spfilter,1,nil,tp) and tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(400) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511001991.lua b/script/c511001991.lua new file mode 100644 index 00000000..cfea09ea --- /dev/null +++ b/script/c511001991.lua @@ -0,0 +1,29 @@ +--Giant Hades Stag Beetle +function c511001991.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95100053,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DESTROYED) + e2:SetTarget(c511001991.sptg) + e2:SetOperation(c511001991.spop) + c:RegisterEffect(e2) +end +function c511001991.filter(c,e,tp) + return c:IsCode(75292259) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001991.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001991.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511001991.spop(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,c511001991.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001992.lua b/script/c511001992.lua new file mode 100644 index 00000000..e201760d --- /dev/null +++ b/script/c511001992.lua @@ -0,0 +1,34 @@ +--魔王龍 ベエルゼ +function c511001992.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE) + e1:SetValue(1) + c:RegisterEffect(e1) + --atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(34408491,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_DAMAGE) + e3:SetOperation(c511001992.atkop) + c:RegisterEffect(e3) +end +function c511001992.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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ev) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511001993.lua b/script/c511001993.lua new file mode 100644 index 00000000..8f16419c --- /dev/null +++ b/script/c511001993.lua @@ -0,0 +1,47 @@ +--魔王超龍 ベエルゼウス +function c511001993.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE) + e1:SetValue(1) + c:RegisterEffect(e1) + --atk 0 + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511001993.atktg) + e2:SetOperation(c511001993.atkop) + c:RegisterEffect(e2) +end +function c511001993.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c511001993.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511001993.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,0) +end +function c511001993.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511001993.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.Recover(tp,atk,REASON_EFFECT) + end +end diff --git a/script/c511001994.lua b/script/c511001994.lua new file mode 100644 index 00000000..64e38e21 --- /dev/null +++ b/script/c511001994.lua @@ -0,0 +1,27 @@ +--Cannon Wheel +function c511001994.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100056,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c511001994.damcon) + e1:SetTarget(c511001994.damtg) + e1:SetOperation(c511001994.damop) + c:RegisterEffect(e1) +end +function c511001994.damcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_SYNCHRO +end +function c511001994.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511001994.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511001995.lua b/script/c511001995.lua new file mode 100644 index 00000000..47556f2c --- /dev/null +++ b/script/c511001995.lua @@ -0,0 +1,32 @@ +--Assault Wheel +function c511001995.initial_effect(c) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e1) + --to defense + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511001995.con) + e2:SetOperation(c511001995.op) + c:RegisterEffect(e2) +end +function c511001995.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetAttackedCount()>0 +end +function c511001995.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --change base attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + c:RegisterEffect(e1) +end diff --git a/script/c511001996.lua b/script/c511001996.lua new file mode 100644 index 00000000..db4ba385 --- /dev/null +++ b/script/c511001996.lua @@ -0,0 +1,12 @@ +--Sleepy beauty +function c511001996.initial_effect(c) + --level + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetRange(LOCATION_GRAVE) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_ZOMBIE)) + e1:SetValue(-1) + c:RegisterEffect(e1) +end diff --git a/script/c511001997.lua b/script/c511001997.lua new file mode 100644 index 00000000..32df3cbc --- /dev/null +++ b/script/c511001997.lua @@ -0,0 +1,143 @@ +--Number 44: Sky Pegasus (Anime) +function c511001997.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --payment damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_PAY_LPCOST) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511001997.damcon) + e1:SetTarget(c511001997.damtg) + e1:SetOperation(c511001997.damop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetDescription(aux.Stringid(80764541,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c511001997.descost) + e2:SetTarget(c511001997.destg) + e2:SetOperation(c511001997.desop) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(93568288,0)) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511001997.eqtg) + e3:SetOperation(c511001997.eqop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511001997.indes) + c:RegisterEffect(e4) + if not c511001997.global_check then + c511001997.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001997.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001997.xyz_number=44 +function c511001997.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep +end +function c511001997.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c511001997.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511001997.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001997.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511001997.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001997.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001997.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511001997.filter,tp,0,LOCATION_MZONE,1,1,nil) + if not Duel.CheckLPCost(1-tp,500) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + end +end +function c511001997.desop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(1-tp,500) and Duel.SelectYesNo(1-tp,aux.Stringid(80764541,1)) then + Duel.PayLPCost(1-tp,500) + if Duel.IsChainDisablable(0) then + Duel.NegateEffect(0) + return + end + end + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511001997.eqfilter(c) + return c:IsFaceup() and c:IsSetCard(0x48) +end +function c511001997.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511001997.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511001997.eqfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511001997.eqfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511001997.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc or not tc:IsRelateToEffect(e) or tc:IsFacedown() then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(c511001997.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetLabelObject(tc) + c:RegisterEffect(e2) +end +function c511001997.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c511001997.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,80764541) + Duel.CreateToken(1-tp,80764541) +end +function c511001997.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001998.lua b/script/c511001998.lua new file mode 100644 index 00000000..604ba0dc --- /dev/null +++ b/script/c511001998.lua @@ -0,0 +1,126 @@ +--Number 46: Dragluon (Anime) +function c511001998.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),8,2) + c:EnableReviveLimit() + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DRAGON)) + c:RegisterEffect(e1) + --untargetable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetCondition(c511001998.atkcon) + e2:SetValue(aux.imval1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetValue(aux.tgval) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetDescription(aux.Stringid(511001998,0)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c511001998.spcost) + e4:SetCondition(c511001998.spcon) + e4:SetTarget(c511001998.sptg) + e4:SetOperation(c511001998.spop) + c:RegisterEffect(e4) + --control or destroy + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetDescription(aux.Stringid(511001998,1)) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511001998.ctcon) + e5:SetTarget(c511001998.cttg) + e5:SetOperation(c511001998.ctop) + c:RegisterEffect(e5) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511001998.indes) + c:RegisterEffect(e6) + if not c511001998.global_check then + c511001998.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001998.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001998.xyz_number=46 +function c511001998.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c511001998.atkcon(e) + return Duel.IsExistingMatchingCard(c511001998.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler()) +end +function c511001998.spcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c511001998.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c511001998.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001998.filter(c,e,tp) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511001998.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001998.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511001998.spop(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,c511001998.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end +function c511001998.ctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayCount()==0 + and not Duel.IsExistingMatchingCard(c511001998.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c511001998.ctfilter(c) + return c:IsFaceup() and c:IsControlerCanBeChanged() and c:IsRace(RACE_DRAGON) +end +function c511001998.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001998.ctfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511001998.ctfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511001998.ctfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511001998.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if tc:IsDestructable() and Duel.SelectYesNo(1-tp,aux.Stringid(80764541,1)) then + Duel.PayLPCost(1-tp,math.floor(Duel.GetLP(1-tp)/2)) + Duel.Destroy(tc,REASON_EFFECT) + end + Duel.GetControl(tc,tp) + end +end +function c511001998.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,2978414) + Duel.CreateToken(1-tp,2978414) +end +function c511001998.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001999.lua b/script/c511001999.lua new file mode 100644 index 00000000..ccd96f6e --- /dev/null +++ b/script/c511001999.lua @@ -0,0 +1,67 @@ +--Number 15: Gimmick Puppet Giant Grinder (Anime) +function c511001999.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,2) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001999.descost) + e1:SetTarget(c511001999.destg) + e1:SetOperation(c511001999.desop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511001999.indes) + c:RegisterEffect(e2) + if not c511001999.global_check then + c511001999.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001999.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001999.xyz_number=15 +function c511001999.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001999.filter(c) + return (c:IsFaceup() and c:IsType(TYPE_XYZ)) or (c:IsFacedown() and c:GetOverlayCount()>0) +end +function c511001999.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511001999.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + local sg=Duel.GetMatchingGroup(c511001999.filter,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511001999.ctfilter(c,tp) + return c:GetPreviousControler()==tp +end +function c511001999.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511001999.filter,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local g1=dg:Filter(c511001999.ctfilter,nil,tp) + local g2=dg:Filter(c511001999.ctfilter,nil,1-tp) + local sum1=g1:GetSum(Card.GetAttack) + local sum2=g2:GetSum(Card.GetAttack) + Duel.Damage(tp,sum1,REASON_EFFECT) + Duel.Damage(1-tp,sum2,REASON_EFFECT) + end +end +function c511001999.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,88120966) + Duel.CreateToken(1-tp,88120966) +end +function c511001999.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002000.lua b/script/c511002000.lua new file mode 100644 index 00000000..56efe288 --- /dev/null +++ b/script/c511002000.lua @@ -0,0 +1,94 @@ +--CXyz Zubaba Saikyo General +function c511002000.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100062,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511002000.eqcost) + e1:SetTarget(c511002000.eqtg) + e1:SetOperation(c511002000.eqop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95100062,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCost(c511002000.eqcost) + e2:SetCondition(c511002000.spcon) + e2:SetTarget(c511002000.sptg) + e2:SetOperation(c511002000.spop) + c:RegisterEffect(e2) +end +function c511002000.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002000.filter(c,tp) + return c:CheckUniqueOnField(tp) and c:IsType(TYPE_MONSTER) +end +function c511002000.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c511002000.filter,tp,LOCATION_HAND,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_HAND) +end +function c511002000.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local tc=Duel.SelectMatchingCard(tp,c511002000.filter,tp,LOCATION_HAND,0,1,1,nil,tp):GetFirst() + if tc then + if not Duel.Equip(tp,tc,c,true) then return end + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002000.eqlimit) + tc:RegisterEffect(e1) + local atk=tc:GetTextAttack() + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + end +end +function c511002000.eqlimit(e,c) + return e:GetOwner()==c +end +function c511002000.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsType(TYPE_MONSTER) + and e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,31563350) +end +function c511002000.spfilter(c,e,tp) + return c:IsFaceup() and e:GetHandler():GetEquipGroup():IsContains(c) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002000.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c511002000.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002000.spfilter,tp,LOCATION_SZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002000.spfilter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002000.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002001.lua b/script/c511002001.lua new file mode 100644 index 00000000..8cd09da6 --- /dev/null +++ b/script/c511002001.lua @@ -0,0 +1,63 @@ +--SNo.39 希望皇ホープONE +function c511002001.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3,c511002001.ovfilter,aux.Stringid(86532744,1)) + c:EnableReviveLimit() + --Banish + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) + e1:SetDescription(aux.Stringid(95100063,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511002001.cost) + e1:SetTarget(c511002001.target) + e1:SetOperation(c511002001.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002001.indes) + c:RegisterEffect(e2) + if not c511002001.global_check then + c511002001.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002001.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002001.xyz_number=39 +function c511002001.ovfilter(c) + return c:IsFaceup() and c:IsCode(84013237) +end +function c511002001.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:CheckRemoveOverlayCard(tp,1,REASON_COST) and Duel.GetLP(tp)>1 end + Duel.SendtoGrave(c:GetOverlayGroup(),REASON_COST) + Duel.SetLP(tp,1) +end +function c511002001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511002001.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + if Duel.Remove(sg,POS_FACEUP,REASON_EFFECT)>0 then + local sum=Duel.GetOperatedGroup():GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT) + end +end +function c511002001.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,86532744) + Duel.CreateToken(1-tp,86532744) +end +function c511002001.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002002.lua b/script/c511002002.lua new file mode 100644 index 00000000..d6673fb1 --- /dev/null +++ b/script/c511002002.lua @@ -0,0 +1,35 @@ +--EMバリアバルーンバク +function c511002002.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCost(c511002002.dmcost) + e1:SetOperation(c511002002.dmop) + c:RegisterEffect(e1) +end +function c511002002.dmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002002.dmop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckEvent(EVENT_PRE_BATTLE_DAMAGE) then + Duel.ChangeBattleDamage(tp,0) + Duel.ChangeBattleDamage(1-tp,0) + else + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetCountLimit(1) + e1:SetOperation(c511002002.nodamop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c511002002.nodamop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) + Duel.ChangeBattleDamage(1-tp,0) +end diff --git a/script/c511002003.lua b/script/c511002003.lua new file mode 100644 index 00000000..8983d633 --- /dev/null +++ b/script/c511002003.lua @@ -0,0 +1,78 @@ +--Performapal Extra Shooter +function c511002003.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95100065,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCost(c511002003.damcost) + e2:SetTarget(c511002003.damtg) + e2:SetOperation(c511002003.damop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95100065,1)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c511002003.destg) + e3:SetOperation(c511002003.desop) + c:RegisterEffect(e3) + Duel.AddCustomActivityCounter(511002003,ACTIVITY_SPSUMMON,c511002003.counterfilter) +end +function c511002003.counterfilter(c) + return c:GetSummonType()~=SUMMON_TYPE_PENDULUM +end +function c511002003.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(511002003,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c511002003.splimit) + Duel.RegisterEffect(e1,tp) +end +function c511002003.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return sumtype==SUMMON_TYPE_PENDULUM +end +function c511002003.damfilter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) +end +function c511002003.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c511002003.damfilter,tp,LOCATION_EXTRA,0,nil) + if chk==0 then return ct>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) +end +function c511002003.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(c511002003.damfilter,tp,LOCATION_EXTRA,0,nil) + Duel.Damage(p,ct*300,REASON_EFFECT) +end +function c511002003.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsDestructable() +end +function c511002003.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c511002003.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002003.filter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511002003.filter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511002003.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,300,REASON_EFFECT) + end +end diff --git a/script/c511002004.lua b/script/c511002004.lua new file mode 100644 index 00000000..687c2c84 --- /dev/null +++ b/script/c511002004.lua @@ -0,0 +1,34 @@ +--Gap Power +function c511002004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002004.condition) + e1:SetTarget(c511002004.target) + e1:SetOperation(c511002004.activate) + c:RegisterEffect(e1) +end +function c511002004.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)seq and seq>seq2) or (seq2>seq and seq>seq1)) +end +function c511002005.lvtg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local seq=e:GetHandler():GetSequence() + local lv=e:GetHandler():GetLevel() + local ct1=Duel.GetMatchingGroupCount(c511002005.seqfilter,tp,LOCATION_MZONE,0,nil,nil,tp,seq,lv,nil) + local ct2=Duel.GetMatchingGroupCount(c511002005.seqfilter,tp,LOCATION_MZONE,0,nil,nil,tp,seq,lv,e) + if chkc then return false end + if chk==0 then return ct1>0 and ct2>0 and ct1==ct2 end + local g=Duel.GetMatchingGroup(c511002005.seqfilter,tp,LOCATION_MZONE,0,nil,nil,tp,seq,lv,e) + Duel.SetTargetCard(g) +end +function c511002005.lvop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local seq=c:GetSequence() + local lv=c:GetLevel() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c511002005.seqfilter,nil,e,tp,seq,lv,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end + diff --git a/script/c511002007.lua b/script/c511002007.lua new file mode 100644 index 00000000..fb433d15 --- /dev/null +++ b/script/c511002007.lua @@ -0,0 +1,44 @@ +--Melodious Rhythm Change +function c511002007.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511002007.target) + e1:SetOperation(c511002007.activate) + c:RegisterEffect(e1) +end +function c511002007.filter(c,e,tp) + if not c:IsFaceup() or not c:IsSetCard(0x9b) or not c:IsAbleToHand() then return false end + if c:IsControler(tp) then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002007.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + end +end +function c511002007.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002007.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002007.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511002007.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002007.spfilter(c,e,tp) + return c:IsSetCard(0x9b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002007.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + if Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 and tc:IsLocation(LOCATION_HAND) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002007.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002008.lua b/script/c511002008.lua new file mode 100644 index 00000000..22789e65 --- /dev/null +++ b/script/c511002008.lua @@ -0,0 +1,92 @@ +--Saint Instrument +function c511002008.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(c511002008.target) + e1:SetOperation(c511002008.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) + --atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(34408491,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_CHAINING) + e3:SetCondition(c511002008.atkcon) + e3:SetOperation(c511002008.atkop) + c:RegisterEffect(e3) + --target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetCondition(c511002008.atcon) + e4:SetValue(c511002008.atlimit) + c:RegisterEffect(e4) +end +function c511002008.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 c511002008.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002008.atcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget():IsSetCard(0x9b) +end +function c511002008.atlimit(e,c) + return c~=e:GetHandler():GetEquipTarget() +end +function c511002008.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + c511002008[ev]=cv + if ex then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + c511002008[ev]=cv + return ex and Duel.IsPlayerAffectedByEffect(cp,EFFECT_REVERSE_RECOVER) +end +function c511002008.atkop(e,tp,eg,ep,ev,re,r,rp) + local cid=c511002008[ev] + local tc=e:GetHandler():GetEquipTarget() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(cid) + if tc:RegisterEffect(e1) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetLabel(cid) + e2:SetValue(c511002008.damcon) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) + end + end +end +function c511002008.damcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return 0 +end diff --git a/script/c511002009.lua b/script/c511002009.lua new file mode 100644 index 00000000..a75642b5 --- /dev/null +++ b/script/c511002009.lua @@ -0,0 +1,108 @@ +--Moonlight Panther Dancer +function c511002009.initial_effect(c) + --fustion material + aux.AddFusionProcCodeFun(c,51777272,aux.FilterBoolFunction(Card.IsSetCard,0xdf),1,true,true) + c:EnableReviveLimit() + --attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(9999) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511002009.unop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_DAMAGE_CALCULATING) + e3:SetCondition(c511002009.indescon) + e3:SetOperation(c511002009.indesop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE) + e4:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e4:SetTarget(c511002009.valtg) + e4:SetValue(c511002009.vala) + c:RegisterEffect(e4) + --atk up + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCategory(CATEGORY_ATKCHANGE) + e5:SetCode(EVENT_BATTLE_DESTROYING) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511002009.atkcon) + e5:SetOperation(c511002009.atkop) + c:RegisterEffect(e5) + --indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e6:SetValue(c511002009.indval) + c:RegisterEffect(e6) +end +function c511002009.unop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if c:GetFlagEffect(511002009)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + c:RegisterFlagEffect(511002009,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + end + if bc then + if bc:GetFlagEffect(511002007)>0 then + bc:RegisterFlagEffect(511002008,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + else + bc:RegisterFlagEffect(511002007,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + end + end +end +function c511002009.valtg(e,c) + return c:GetFlagEffect(511002008)>0 +end +function c511002009.vala(e,c) + return c==e:GetHandler() +end +function c511002009.indescon(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + return bc and bc:GetFlagEffect(511002007)==0 +end +function c511002009.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsRelateToBattle() and e:GetHandler():IsFaceup() +end +function c511002009.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToBattle() and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(200) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end +function c511002009.indesop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + bc:RegisterEffect(e1,true) +end +function c511002009.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end diff --git a/script/c511002010.lua b/script/c511002010.lua new file mode 100644 index 00000000..b2538eff --- /dev/null +++ b/script/c511002010.lua @@ -0,0 +1,63 @@ +--Magical Star Sword +function c511002010.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(c511002010.target) + e1:SetOperation(c511002010.operation) + c:RegisterEffect(e1) + --Equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --tograve + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(90434926,0)) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_HAND) + e3:SetTarget(c511002010.drtg) + e3:SetOperation(c511002010.drop) + c:RegisterEffect(e3) +end +function c511002010.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 c511002010.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002010.damfil(c,tp) + return c:IsControler(tp) and c:IsAbleToGrave() and c:IsType(TYPE_SPELL) +end +function c511002010.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511002010.damfil,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,eg,1,tp,LOCATION_HAND) +end +function c511002010.drop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetEquipTarget() + local dc=eg:Filter(c511002010.damfil,nil,tp):Select(tp,1,1,nil) + if c:IsRelateToEffect(e) then + Duel.SendtoGrave(dc,REASON_EFFECT) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0x1fe0000) + ec:RegisterEffect(e1) + end +end diff --git a/script/c511002011.lua b/script/c511002011.lua new file mode 100644 index 00000000..b7e82459 --- /dev/null +++ b/script/c511002011.lua @@ -0,0 +1,30 @@ +--Hayate, the Soaring Star Above the Earth +function c511002011.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511002011.ntcon) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c511002011.con) + e2:SetOperation(c511002011.op) + c:RegisterEffect(e2) +end +function c511002011.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 +end +function c511002011.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 +end +function c511002011.op(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511002012.lua b/script/c511002012.lua new file mode 100644 index 00000000..e927bd9f --- /dev/null +++ b/script/c511002012.lua @@ -0,0 +1,25 @@ +--Tenma, the Rising Star Amidst the Heavens +function c511002012.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(78651105,0)) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511002012.ntcon) + c:RegisterEffect(e1) +end +--Earth Collection +c511002012.collection1={ +[42685062]=true;[76052811]=true;[71564150]=true; +[77827521]=true;[75375465]=true;[70595331]=true; +[67987302]=true;[94773007]=true;[45042329]=true; +} +function c511002012.cfilter(c) + return c:IsFaceup() and ((c511002012.collection1[c:GetCode()] or c:IsSetCard(0x408) or c:IsSetCard(0x21) or c:IsSetCard(0x21f))) +end +function c511002012.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002012.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002013.lua b/script/c511002013.lua new file mode 100644 index 00000000..0611ff07 --- /dev/null +++ b/script/c511002013.lua @@ -0,0 +1,51 @@ +--Idaten, the Star of Supreme Victory +function c511002013.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511002013.ffilter1,c511002013.ffilter2,true) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002013.atkcon) + e1:SetOperation(c511002013.atkop) + c:RegisterEffect(e1) +end +c511002013.earth_collection={ + [42685062]=true;[76052811]=true;[71564150]=true;[77827521]=true;[75375465]=true; + [70595331]=true;[67987302]=true;[94773007]=true;[45042329]=true; +} +c511002013.sky_collection={ + [10000020]=true;[79575620]=true;[32559361]=true;[77998771]=true;[15914410]=true; + [49771608]=true;[61777313]=true;[40844552]=true;[76348260]=true;[2356994]=true; + [53334641]=true;[3629090]=true;[77235086]=true;[16972957]=true;[42216237]=true; + [42418084]=true;[59509952]=true;[18378582]=true;[81146288]=true;[85399281]=true; + [58601383]=true;[86327225]=true;[41589166]=true;[37910722]=true;[12171659]=true; + [75326861]=true;[2519690]=true;[96570609]=true;[95457011]=true;[74841885]=true; + [11458071]=true;[48453776]=true;[90122655]=true;[69865139]=true;[32995007]=true; + [1992816]=true;[80764541]=true;[87390067]=true;[3072808]=true;[49674183]=true; + [42431843]=true;[29146185]=true;[69992868]=true;[96470883]=true;[10028593]=true; +} +function c511002013.ffilter1(c) + return c:IsFusionSetCard(0x408) or c:IsFusionSetCard(0x21f) or c:IsFusionSetCard(0x21) or c511002013.earth_collection[c:GetFusionCode()]) +end +function c511002013.ffilter2(c) + return c:IsFusionSetCard(0x407) or c:IsFusionSetCard(0xef) or c511002013.sky_collection[c:GetFusionCode()]) +end +function c511002013.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and c:GetLevel()>=bc:GetLevel() and bc:IsControler(1-tp) +end +function c511002013.atkop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + if bc and bc:IsFaceup() and bc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(0) + bc:RegisterEffect(e1) + end +end diff --git a/script/c511002014.lua b/script/c511002014.lua new file mode 100644 index 00000000..3419e424 --- /dev/null +++ b/script/c511002014.lua @@ -0,0 +1,32 @@ +--Supreme Thunder Star Raijin +function c511002014.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511002014.ffilter1,c511002014.ffilter2,true) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e1) +end +c511002014.earth_collection={ + [42685062]=true;[76052811]=true;[71564150]=true;[77827521]=true;[75375465]=true; + [70595331]=true;[67987302]=true;[94773007]=true;[45042329]=true; +} +c511002014.sky_collection={ + [10000020]=true;[79575620]=true;[32559361]=true;[77998771]=true;[15914410]=true; + [49771608]=true;[61777313]=true;[40844552]=true;[76348260]=true;[2356994]=true; + [53334641]=true;[3629090]=true;[77235086]=true;[16972957]=true;[42216237]=true; + [42418084]=true;[59509952]=true;[18378582]=true;[81146288]=true;[85399281]=true; + [58601383]=true;[86327225]=true;[41589166]=true;[37910722]=true;[12171659]=true; + [75326861]=true;[2519690]=true;[96570609]=true;[95457011]=true;[74841885]=true; + [11458071]=true;[48453776]=true;[90122655]=true;[69865139]=true;[32995007]=true; + [1992816]=true;[80764541]=true;[87390067]=true;[3072808]=true;[49674183]=true; + [42431843]=true;[29146185]=true;[69992868]=true;[96470883]=true;[10028593]=true; +} +function c511002014.ffilter1(c) + return c:IsFusionSetCard(0x408) or c:IsFusionSetCard(0x21f) or c:IsFusionSetCard(0x21) or c511002014.earth_collection[c:GetFusionCode()]) +end +function c511002014.ffilter2(c) + return c:IsFusionSetCard(0x407) or c:IsFusionSetCard(0xef) or c511002014.sky_collection[c:GetFusionCode()]) +end diff --git a/script/c511002015.lua b/script/c511002015.lua new file mode 100644 index 00000000..5e19cca0 --- /dev/null +++ b/script/c511002015.lua @@ -0,0 +1,52 @@ +--Supreme Storm Star Fuujin +function c511002015.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511002015.ffilter1,c511002015.ffilter2,true) + --damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002015.damtg) + e1:SetOperation(c511002015.damop) + c:RegisterEffect(e1) +end +c511002015.earth_collection={ + [42685062]=true;[76052811]=true;[71564150]=true;[77827521]=true;[75375465]=true; + [70595331]=true;[67987302]=true;[94773007]=true;[45042329]=true; +} +c511002015.sky_collection={ + [10000020]=true;[79575620]=true;[32559361]=true;[77998771]=true;[15914410]=true; + [49771608]=true;[61777313]=true;[40844552]=true;[76348260]=true;[2356994]=true; + [53334641]=true;[3629090]=true;[77235086]=true;[16972957]=true;[42216237]=true; + [42418084]=true;[59509952]=true;[18378582]=true;[81146288]=true;[85399281]=true; + [58601383]=true;[86327225]=true;[41589166]=true;[37910722]=true;[12171659]=true; + [75326861]=true;[2519690]=true;[96570609]=true;[95457011]=true;[74841885]=true; + [11458071]=true;[48453776]=true;[90122655]=true;[69865139]=true;[32995007]=true; + [1992816]=true;[80764541]=true;[87390067]=true;[3072808]=true;[49674183]=true; + [42431843]=true;[29146185]=true;[69992868]=true;[96470883]=true;[10028593]=true; +} +function c511002015.ffilter1(c) + return c:IsFusionSetCard(0x408) or c:IsFusionSetCard(0x21f) or c:IsFusionSetCard(0x21) or c511002015.earth_collection[c:GetFusionCode()]) +end +function c511002015.ffilter2(c) + return c:IsFusionSetCard(0x407) or c:IsFusionSetCard(0xef) or c511002015.sky_collection[c:GetFusionCode()]) +end +function c511002015.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511002015.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c511002015.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if chk==0 then return ct>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*500) +end +function c511002015.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(c511002015.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Damage(p,ct*500,REASON_EFFECT) +end diff --git a/script/c511002016.lua b/script/c511002016.lua new file mode 100644 index 00000000..cdce9198 --- /dev/null +++ b/script/c511002016.lua @@ -0,0 +1,37 @@ +--Fusion Front Base +function c511002016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002016.condition) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(c511002016.damval) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511002016.sdcon) + c:RegisterEffect(e3) +end +function c511002016.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) +end +function c511002016.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002016.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002016.damval(e,re,val,r,rp,rc) + if re and bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end +function c511002016.sdcon(e) + return not Duel.IsExistingMatchingCard(c511002016.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002017.lua b/script/c511002017.lua new file mode 100644 index 00000000..d6b069cd --- /dev/null +++ b/script/c511002017.lua @@ -0,0 +1,37 @@ +--Edge Nightmare +function c511002017.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(44887817,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511002017.sptg) + e2:SetOperation(c511002017.spop) + c:RegisterEffect(e2) +end +function c511002017.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsReason(REASON_FUSION) and c:IsSetCard(0xc3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002017.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002017.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002017.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002017.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002017.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002018.lua b/script/c511002018.lua new file mode 100644 index 00000000..43e4daa4 --- /dev/null +++ b/script/c511002018.lua @@ -0,0 +1,56 @@ +--デストーイ・シザー・ベアー +function c511002018.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,30068120,3841833,true,true) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100080,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511002018.eqcon) + e1:SetTarget(c511002018.eqtg) + e1:SetOperation(c511002018.eqop) + c:RegisterEffect(e1) +end +function c511002018.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + if not c:IsRelateToBattle() or c:IsFacedown() then return false end + e:SetLabelObject(tc) + return tc:IsLocation(LOCATION_GRAVE) and tc:IsType(TYPE_MONSTER) and tc:IsReason(REASON_BATTLE) +end +function c511002018.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetLabelObject() + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,tc,1,0,0) +end +function c511002018.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002018.eqlimit) + tc:RegisterEffect(e1) + local atk=tc:GetTextAttack() + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + end +end +function c511002018.eqlimit(e,c) + return e:GetOwner()==c +end diff --git a/script/c511002019.lua b/script/c511002019.lua new file mode 100644 index 00000000..5838cbd3 --- /dev/null +++ b/script/c511002019.lua @@ -0,0 +1,39 @@ +--浅すぎた墓穴 +function c511002019.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002019.target) + e1:SetOperation(c511002019.activate) + c:RegisterEffect(e1) +end +function c511002019.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetLevel()==4 +end +function c511002019.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002019.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE,1-tp)>0 + and Duel.IsExistingMatchingCard(c511002019.filter,tp,0,LOCATION_GRAVE,1,nil,e,1-tp) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002019.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c511002019.filter,tp,LOCATION_GRAVE,0,nil,e,tp) + local g2=Duel.GetMatchingGroup(c511002019.filter,1-tp,LOCATION_GRAVE,0,nil,e,1-tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + local tc1=sg1:GetFirst() + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(1-tp,1,1,nil) + local tc2=sg2:GetFirst() + sg1:Merge(sg2) + Duel.HintSelection(sg1) + Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + Duel.SpecialSummonStep(tc2,0,1-tp,1-tp,false,false,POS_FACEUP_DEFENSE) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002020.lua b/script/c511002020.lua new file mode 100644 index 00000000..5c3eb04f --- /dev/null +++ b/script/c511002020.lua @@ -0,0 +1,43 @@ +--Match Pump +function c511002020.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002020.cost) + e1:SetTarget(c511002020.target) + e1:SetOperation(c511002020.activate) + c:RegisterEffect(e1) +end +function c511002020.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002020.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetHandler()~=se:GetHandler() +end +function c511002020.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c511002020.sumlimit) + Duel.RegisterEffect(e1,tp) +end +function c511002020.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.Draw(tp,1,REASON_EFFECT)==0 then return end + local dr=Duel.GetOperatedGroup():GetFirst() + Duel.ConfirmCards(1-tp,dr) + if dr:IsLevelBelow(4) and dr:IsCanBeSpecialSummoned(e,0,tp,false,false) then + if Duel.SpecialSummon(dr,0,tp,tp,false,false,POS_FACEUP)>0 and dr:IsType(TYPE_PENDULUM) then + Duel.Destroy(dr,REASON_EFFECT) + end + else + Duel.Remove(dr,POS_FACEUP,REASON_EFFECT) + end + Duel.ShuffleHand(tp) +end diff --git a/script/c511002021.lua b/script/c511002021.lua new file mode 100644 index 00000000..cf6ec988 --- /dev/null +++ b/script/c511002021.lua @@ -0,0 +1,17 @@ +--真紅眼の闇竜 +function c511002021.initial_effect(c) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c511002021.val) + c:RegisterEffect(e3) +end +function c511002021.filter(c) + return c:IsSetCard(0x43) and c:IsType(TYPE_MONSTER) +end +function c511002021.val(e,c) + return Duel.GetMatchingGroupCount(c511002021.filter,c:GetControler(),LOCATION_GRAVE,0,nil)*400 +end diff --git a/script/c511002027.lua b/script/c511002027.lua new file mode 100644 index 00000000..deb17a3f --- /dev/null +++ b/script/c511002027.lua @@ -0,0 +1,49 @@ +--Magnification Don!! +function c511002027.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511002027.condition) + e1:SetTarget(c511002027.target) + e1:SetOperation(c511002027.activate) + c:RegisterEffect(e1) +end +function c511002027.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return eg:GetCount()==1 and tc:IsControler(tp) and tc:IsSetCard(0x213) and tc:IsLevelAbove(4) + and bc and bit.band(bc:GetBattlePosition(),POS_DEFENSE)~=0 +end +function c511002027.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return tc:IsFaceup() end + Duel.SetTargetCard(tc) +end +function c511002027.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_START) + e2:SetCountLimit(1) + e2:SetOperation(c511002027.atkop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c511002027.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(e:GetHandler():GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c511002029.lua b/script/c511002029.lua new file mode 100644 index 00000000..40334d41 --- /dev/null +++ b/script/c511002029.lua @@ -0,0 +1,47 @@ +--Recovery Chute +function c511002029.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+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(c511002029.condition) + e1:SetTarget(c511002029.target) + e1:SetOperation(c511002029.activate) + c:RegisterEffect(e1) +end +function c511002029.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002029.filter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x213) and c:IsLevelBelow(4) and c:IsAbleToHand() + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,c) +end +function c511002029.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511002029.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOHAND) + local g1=Duel.SelectTarget(tp,c511002029.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g2=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g1,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g2,1,0,0) +end +function c511002029.activate(e,tp,eg,ep,ev,re,r,rp) + local ex,g1=Duel.GetOperationInfo(0,CATEGORY_TOHAND) + local ex,g2=Duel.GetOperationInfo(0,CATEGORY_ATKCHANGE) + local tc1=g1:GetFirst() + local tc2=g2:GetFirst() + if tc1 and tc2 and tc1:IsFaceup() and tc1:IsRelateToEffect(e) and tc2:IsFaceup() and tc2:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc1:GetAttack()) + if tc2:RegisterEffect(e1) then + Duel.SendtoHand(tc1,nil,REASON_EFFECT) + end + end +end diff --git a/script/c511002030.lua b/script/c511002030.lua new file mode 100644 index 00000000..897776af --- /dev/null +++ b/script/c511002030.lua @@ -0,0 +1,66 @@ +--However! +function c511002030.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) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCondition(c511002030.atkcon) + e2:SetTarget(c511002030.atktg) + e2:SetOperation(c511002030.atkop) + c:RegisterEffect(e2) +end +function c511002030.atkcon(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if Duel.IsDamageCalculated() then return false end + local tc=Duel.GetAttacker() + if not tc then return false end + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + e:SetLabelObject(tc) + return tc and tc:IsFaceup() and tc:IsSetCard(0x213) and tc:IsRelateToBattle() + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511002030.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetLabelObject() + if chkc then return chkc==tc end + if chk==0 then return tc and tc:IsOnField() and tc:IsCanBeEffectTarget(e) and tc:GetFlagEffect(511002030)==0 end + Duel.SetTargetCard(tc) +end +function c511002030.atkop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc or not tc:IsRelateToBattle() or tc:IsFacedown() then return end + tc:RegisterFlagEffect(511002030,RESET_EVENT+0x1fe0000,0,1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetCountLimit(1) + e1:SetValue(c511002030.valcon) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_NO_BATTLE_DAMAGE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(1) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(1) + tc:RegisterEffect(e3) +end +function c511002030.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c511002031.lua b/script/c511002031.lua new file mode 100644 index 00000000..d50ca479 --- /dev/null +++ b/script/c511002031.lua @@ -0,0 +1,50 @@ +--E・HERO ネオス・ナイト +function c511002031.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,89943723,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),1,true,true) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c511002031.valcheck) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511002031.atkcon) + e3:SetOperation(c511002031.atkop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --multiatk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EXTRA_ATTACK) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511002031.valcheck(e,c) + local g=c:GetMaterial() + local atk=-1 + local tc=g:GetFirst() + if tc:IsCode(89943723) or tc:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then tc=g:GetNext() end + if not tc:IsCode(89943723) then + atk=tc:GetTextAttack()/2 + end + e:SetLabel(atk) +end +function c511002031.atkcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511002031.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local atk=e:GetLabelObject():GetLabel() + if atk>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002032.lua b/script/c511002032.lua new file mode 100644 index 00000000..0016deeb --- /dev/null +++ b/script/c511002032.lua @@ -0,0 +1,59 @@ +--Assault Blackwing - Kunisada the Fogbow +function c511002032.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --tohand + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c511002032.thcost) + e3:SetTarget(c511002032.thtg) + e3:SetOperation(c511002032.thop) + c:RegisterEffect(e3) +end +function c511002032.filter(c) + return c:IsSetCard(0x33) and c:IsLevelBelow(3) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511002032.synfilter(c) + return c:IsFaceup() and c:IsSetCard(0x33) and c:IsType(TYPE_SYNCHRO) +end +function c511002032.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511002032.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002032.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002032.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511002032.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511002032.thop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetFirstTarget() + if tg and tg:IsRelateToEffect(e) and Duel.SendtoHand(tg,nil,REASON_EFFECT)~=0 then + Duel.ConfirmCards(1-tp,tg) + local atk=tg:GetAttack() + local g=Duel.GetMatchingGroup(c511002032.synfilter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + end +end diff --git a/script/c511002033.lua b/script/c511002033.lua new file mode 100644 index 00000000..2e65ac76 --- /dev/null +++ b/script/c511002033.lua @@ -0,0 +1,64 @@ +--Illusion Ninjitsu Art of Hazy Toad +function c511002033.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002033.actcon) + c:RegisterEffect(e1) + --Increase ATK + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_HANDES+CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetCondition(c511002033.atkcon) + e2:SetTarget(c511002033.atktg) + e2:SetOperation(c511002033.atkop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511002033.descon) + c:RegisterEffect(e3) +end +function c511002033.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x2b) +end +function c511002033.actcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002033.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002033.descon(e) + return not Duel.IsExistingMatchingCard(c511002033.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511002033.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and ph>=0x08 and ph<=0x20 +end +function c511002033.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) + and Duel.IsExistingMatchingCard(c511002033.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) +end +function c511002033.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_EFFECT+REASON_DISCARD,nil)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511002033.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511002034.lua b/script/c511002034.lua new file mode 100644 index 00000000..d8605b11 --- /dev/null +++ b/script/c511002034.lua @@ -0,0 +1,119 @@ +--クリアウィング・シンクロ・ドラゴン +function c511002034.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(82044279,0)) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002034.condition) + e1:SetTarget(c511002034.target) + e1:SetOperation(c511002034.operation) + c:RegisterEffect(e1) +end +function c511002034.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511002034.cfilter(c) + return c:IsLevelAbove(5) and c:IsLocation(LOCATION_MZONE) +end +function c511002034.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then + local g=Group.CreateGroup() + for i=1,ev do + local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) + local tc=te:GetHandler() + if tc and tc:IsCanBeEffectTarget(e) and te:IsActiveType(TYPE_MONSTER) then + local loc=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_LOCATION) + if tc:IsLevelAbove(5) and loc==LOCATION_MZONE then g:AddCard(tc) end + if te:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then + local tg=Duel.GetChainInfo(i,CHAININFO_TARGET_CARDS) + if tg and tg:IsExists(c511002034.cfilter,1,nil) then g:AddCard(tc) end + end + end + end + return g:IsContains(chkc) end + if chk==0 then + local g=Group.CreateGroup() + for i=1,ev do + local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) + local tc=te:GetHandler() + if tc and tc:IsCanBeEffectTarget(e) and te:IsActiveType(TYPE_MONSTER) then + local loc=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_LOCATION) + if tc:IsLevelAbove(5) and loc==LOCATION_MZONE then g:AddCard(tc) end + if te:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then + local tg=Duel.GetChainInfo(i,CHAININFO_TARGET_CARDS) + if tg and tg:IsExists(c511002034.cfilter,1,nil) then g:AddCard(tc) end + end + end + end + return g:GetCount()>0 end + local g=Group.CreateGroup() + for i=1,ev do + local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) + local tc=te:GetHandler() + if tc and tc:IsCanBeEffectTarget(e) and te:IsActiveType(TYPE_MONSTER) then + local loc=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_LOCATION) + local check=false + if tc:IsLevelAbove(5) and loc==LOCATION_MZONE then g:AddCard(tc) end + if te:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then + local tg=Duel.GetChainInfo(i,CHAININFO_TARGET_CARDS) + if tg and tg:IsExists(c511002034.cfilter,1,nil) then g:AddCard(tc) end + end + if check then tc:RegisterFlagEffect(51102034,RESET_CHAIN,0,1,i) end + end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local sg=g:Select(tp,1,1,nil) + Duel.SetTargetCard(sg) + local i=sg:GetFirst():GetFlagEffectLabel(51102034) + local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,sg,1,0,0) + if sg:GetFirst():IsRelateToEffect(te) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,1,0,0) + end +end +function c511002034.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) then return end + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + local e3=nil + if tc:IsType(TYPE_TRAPMONSTER) then + e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000) + end + local i=tc:GetFlagEffectLabel(51102034) + local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) + if tc:RegisterEffect(e1) and tc:RegisterEffect(e2) and (e3==nil or tc:RegisterEffect(e3)) and tc:IsRelateToEffect(te) and Duel.Destroy(tc,REASON_EFFECT)>0 then + if c:IsRelateToEffect(e) and c:IsFaceup() then + local atk=tc:GetTextAttack() + if atk<=0 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end + end +end diff --git a/script/c511002035.lua b/script/c511002035.lua new file mode 100644 index 00000000..024e121a --- /dev/null +++ b/script/c511002035.lua @@ -0,0 +1,49 @@ +--ナチュル・バンブーシュート +function c511002035.initial_effect(c) + --mat check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MATERIAL_CHECK) + e1:SetValue(c511002035.valcheck) + c:RegisterEffect(e1) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c511002035.regcon) + e2:SetOperation(c511002035.regop) + c:RegisterEffect(e2) + e2:SetLabelObject(e1) +end +function c511002035.valcheck(e,c) + local g=c:GetMaterial() + local flag=0 + if g:IsExists(Card.IsSetCard,1,nil,0x2310) then flag=1 end + if g:IsExists(Card.IsCode,1,nil,39389320) then flag=1 end + if g:IsExists(Card.IsCode,1,nil,40453765) then flag=1 end + if g:IsExists(Card.IsCode,1,nil,20394040) then flag=1 end + e:SetLabel(flag) +end +function c511002035.regcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE + and e:GetLabelObject():GetLabel()~=0 +end +function c511002035.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetCondition(c511002035.atcon) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c511002035.atcon(e) + return e:GetHandler():GetAttackAnnouncedCount()>0 +end diff --git a/script/c511002036.lua b/script/c511002036.lua new file mode 100644 index 00000000..0e28895c --- /dev/null +++ b/script/c511002036.lua @@ -0,0 +1,36 @@ +--ドリル・ウォリアー +function c511002036.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002036.datcon) + e1:SetCost(c511002036.datcost) + e1:SetOperation(c511002036.datop) + c:RegisterEffect(e1) +end +function c511002036.datcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 and not e:GetHandler():IsHasEffect(EFFECT_DIRECT_ATTACK) +end +function c511002036.datcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return true end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511002036.datop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002037.lua b/script/c511002037.lua new file mode 100644 index 00000000..e4fc596e --- /dev/null +++ b/script/c511002037.lua @@ -0,0 +1,24 @@ +--灰塵王 アッシュ・ガッシュ +function c511002037.initial_effect(c) + --lvup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(19012345,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511002037.condition) + e1:SetOperation(c511002037.operation) + c:RegisterEffect(e1) +end +function c511002037.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511002037.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end diff --git a/script/c511002038.lua b/script/c511002038.lua new file mode 100644 index 00000000..0fa80e78 --- /dev/null +++ b/script/c511002038.lua @@ -0,0 +1,66 @@ +--デモンズ・チェーン +function c511002038.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,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511002038.condition) + e1:SetTarget(c511002038.target) + e1:SetOperation(c511002038.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511002038.descon) + e2:SetOperation(c511002038.desop) + c:RegisterEffect(e2) +end +function c511002038.cfilter(c) + local code=c:GetCode() + return c:IsFaceup() and (code==511000853 or code==511000826) +end +function c511002038.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002038.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002038.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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511002038.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() 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_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511002038.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + tc:RegisterEffect(e2,true) + end +end +function c511002038.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511002038.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c511002038.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end diff --git a/script/c511002039.lua b/script/c511002039.lua new file mode 100644 index 00000000..b9832fc4 --- /dev/null +++ b/script/c511002039.lua @@ -0,0 +1,49 @@ +--バラに棲む悪霊 +function c511002039.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,96470883,49674183,true,true) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81146288,0)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002039.distg) + e2:SetOperation(c511002039.disop) + c:RegisterEffect(e2) +end +function c511002039.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end +end +function c511002039.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + local tc=g:GetFirst() + while tc do + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end +end diff --git a/script/c511002040.lua b/script/c511002040.lua new file mode 100644 index 00000000..5a025789 --- /dev/null +++ b/script/c511002040.lua @@ -0,0 +1,38 @@ +--Blackwing - Tornado the Twisting Scroll +function c511002040.initial_effect(c) + --sp summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29116732,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002040.spcon) + e1:SetTarget(c511002040.sptg) + e1:SetOperation(c511002040.spop) + c:RegisterEffect(e1) +end +function c511002040.spfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511002040.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002040.spfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c511002040.filter(c,e,tp) + return c:GetLevel()==1 and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002040.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002040.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002040.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002040.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002040.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002041.lua b/script/c511002041.lua new file mode 100644 index 00000000..02be270a --- /dev/null +++ b/script/c511002041.lua @@ -0,0 +1,52 @@ +--Assault Blackwing - Sayo the Hidden Rain +function c511002041.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.NonTuner(nil)) + c:EnableReviveLimit() + --add type + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002041.tncon) + e1:SetOperation(c511002041.tnop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c511002041.valcheck) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e3:SetCountLimit(2) + e3:SetValue(c511002041.valcon) + c:RegisterEffect(e3) +end +function c511002041.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsSetCard,1,nil,0x33) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end +function c511002041.tncon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and e:GetLabel()==1 +end +function c511002041.tnop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511002041.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c511002042.lua b/script/c511002042.lua new file mode 100644 index 00000000..9befc059 --- /dev/null +++ b/script/c511002042.lua @@ -0,0 +1,105 @@ +-- Assault Blackwing - Sohaya the Early Summer Rain +function c511002042.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --add type + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002042.tncon) + e1:SetOperation(c511002042.tnop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c511002042.valcheck) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(17377751,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c511002042.spcon) + e3:SetTarget(c511002042.sptg) + e3:SetOperation(c511002042.spop) + c:RegisterEffect(e3) + --sp summon self + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_GRAVE) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetCondition(c511002042.spscon) + e4:SetCost(c511002042.spscost) + e4:SetTarget(c511002042.spstg) + e4:SetOperation(c511002042.spsop) + c:RegisterEffect(e4) +end +function c511002042.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsSetCard,1,nil,0x33) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end +function c511002042.tncon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and e:GetLabel()==1 +end +function c511002042.tnop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511002042.spcon(e,tp,eg,ep,ev,re,r,rp,chk) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c511002042.filter(c,e,tp) + return c:IsSetCard(0x1033) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002042.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002042.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002042.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002042.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002042.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511002042.spscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetTurnID()==Duel.GetTurnCount() and not e:GetHandler():IsReason(REASON_RETURN) +end +function c511002042.cfilter(c) + return c:IsCode(511002042) and c:IsAbleToRemoveAsCost() +end +function c511002042.spscost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002042.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002042.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002042.spstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002042.spsop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002043.lua b/script/c511002043.lua new file mode 100644 index 00000000..72d2363d --- /dev/null +++ b/script/c511002043.lua @@ -0,0 +1,29 @@ +-- Raidraptor - Sanctuary +function c511002043.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511002043.condition) + e1:SetTarget(c511002043.target) + e1:SetOperation(c511002043.activate) + c:RegisterEffect(e1) +end +function c511002043.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xba) +end +function c511002043.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetMatchingGroupCount(c511002043.cfilter,tp,LOCATION_MZONE,0,nil)>=3 +end +function c511002043.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511002043.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002044.lua b/script/c511002044.lua new file mode 100644 index 00000000..5a61b0fa --- /dev/null +++ b/script/c511002044.lua @@ -0,0 +1,30 @@ +--Raidraptor - Avenge Vulture +function c511002044.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1833916,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_DAMAGE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCountLimit(1) + e2:SetCondition(c511002044.spcon) + e2:SetTarget(c511002044.sptg) + e2:SetOperation(c511002044.spop) + c:RegisterEffect(e2) +end +function c511002044.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and bit.band(r,REASON_EFFECT)~=0 +end +function c511002044.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002044.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002045.lua b/script/c511002045.lua new file mode 100644 index 00000000..38e10ccf --- /dev/null +++ b/script/c511002045.lua @@ -0,0 +1,42 @@ +--Raidraptor - Pain Lanius +function c511002045.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(511001748,1)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002045.sptg) + e1:SetOperation(c511002045.spop) + c:RegisterEffect(e1) +end +function c511002045.filter(c) + return c:IsFaceup() and c:IsSetCard(0xba) +end +function c511002045.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002045.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c511002045.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002045.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511002045.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) + and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local dam=tc:GetAttack() + if tc:GetAttack()>tc:GetDefense() then dam=tc:GetDefense() end + if dam<0 then dam=0 end + Duel.Damage(tp,dam,REASON_EFFECT) + end +end diff --git a/script/c511002046.lua b/script/c511002046.lua new file mode 100644 index 00000000..aec36557 --- /dev/null +++ b/script/c511002046.lua @@ -0,0 +1,86 @@ +--キラー・ラブカ +function c511002046.initial_effect(c) + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(93830681,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1) + e1:SetCondition(c511002046.condition) + e1:SetCost(c511002046.cost) + e1:SetTarget(c511002046.target) + e1:SetOperation(c511002046.operation) + c:RegisterEffect(e1) +end +function c511002046.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return a:IsControler(1-tp) and at and at:IsControler(tp) and at:IsFaceup() and at:IsSetCard(0xba) and at:IsType(TYPE_XYZ) +end +function c511002046.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002046.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttackTarget() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c511002046.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(tc) + e1:SetDescription(aux.Stringid(16691074,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCondition(c511002046.atkcon) + e1:SetCost(c511002046.atkcost) + e1:SetOperation(c511002046.atkop) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(tc) + e2:SetDescription(aux.Stringid(29146185,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(511002046) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCost(c511002046.atkcost) + e2:SetTarget(c511002046.destg) + e2:SetOperation(c511002046.desop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c511002046.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a~=nil and d and d==e:GetHandler() and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511002046.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002046.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.NegateAttack() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.RaiseSingleEvent(c,511002046,e,r,rp,ep,0) + end +end +function c511002046.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetAttacker() + if chk==0 then return tc:IsDestructable() end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c511002046.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002047.lua b/script/c511002047.lua new file mode 100644 index 00000000..be95659c --- /dev/null +++ b/script/c511002047.lua @@ -0,0 +1,62 @@ +--Rotation Blade of Pioneer +function c511002047.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(c511002047.target) + e1:SetOperation(c511002047.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(c511002047.eqlimit) + c:RegisterEffect(e2) + --Atk,def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(800) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetCountLimit(1) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c511002047.damtg) + e4:SetOperation(c511002047.damop) + c:RegisterEffect(e4) +end +function c511002047.eqlimit(e,c) + return c:IsRace(RACE_WINDBEAST) and c:IsType(TYPE_SYNCHRO) +end +function c511002047.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) and c:IsType(TYPE_SYNCHRO) +end +function c511002047.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and c511002047.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002047.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002047.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002047.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002047.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetEquipTarget():GetMaterialCount() + if chk==0 then return ec>0 end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ec*400) +end +function c511002047.damop(e,tp,eg,ep,ev,re,r,rp) + local dam=e:GetHandler():GetEquipTarget():GetMaterialCount()*400 + Duel.Damage(1-tp,dam,REASON_EFFECT) +end diff --git a/script/c511002048.lua b/script/c511002048.lua new file mode 100644 index 00000000..88dd21a1 --- /dev/null +++ b/script/c511002048.lua @@ -0,0 +1,100 @@ +--Call of the Living Dead + --Scripted by Edo9300 + function c511002048.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002048.tg) + e1:SetOperation(c511002048.op) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetTarget(c511002048.target) + e2:SetOperation(c511002048.operation) + c:RegisterEffect(e2) + --remain field + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_REMAIN_FIELD) + c:RegisterEffect(e3) + end + function c511002048.fil(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) + end + function c511002048.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002048.fil,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) + end + function c511002048.op(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002048.fil,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(RACE_ZOMBIE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENCE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(0) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end + end + function c511002048.filter(c,e,tp) + return c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsReason(REASON_BATTLE) and c:GetOriginalRace()~=RACE_ZOMBIE + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + end + function c511002048.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and eg:IsExists(c511002048.filter,1,nil,e,tp) end + eg:Filter(c511002048.filter,nil,e,tp):GetFirst():CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,eg:Filter(c511002048.filter,nil,e,tp),1,0,0) + end + function c511002048.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:Filter(c511002048.filter,nil,e,tp):GetFirst() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(RACE_ZOMBIE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENCE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(0) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_SET_ATTACK) + e3:SetValue(tc:GetAttack()*1.1) + tc:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end + end diff --git a/script/c511002050.lua b/script/c511002050.lua new file mode 100644 index 00000000..23ea4ae2 --- /dev/null +++ b/script/c511002050.lua @@ -0,0 +1,51 @@ +--ロード・オブ・ザ・レッド +function c511002050.initial_effect(c) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002050.descon) + e1:SetTarget(c511002050.destg) + e1:SetOperation(c511002050.desop) + c:RegisterEffect(e1) + if not c511002050.global_check then + c511002050.global_check=true + c511002050[0]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHAINING) + ge1:SetOperation(c511002050.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002050.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002050.descon(e,tp,eg,ep,ev,re,r,rp) + return c511002050[0]>1 and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511002050.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511002050.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) +end +function c511002050.checkop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(0,511002050)==0 and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) then + c511002050[0]=c511002050[0]+1 + Duel.RegisterFlagEffect(0,511002050,RESET_CHAIN,0,1) + end +end +function c511002050.clear(e,tp,eg,ep,ev,re,r,rp) + c511002050[0]=0 +end diff --git a/script/c511002051.lua b/script/c511002051.lua new file mode 100644 index 00000000..97288330 --- /dev/null +++ b/script/c511002051.lua @@ -0,0 +1,26 @@ +--Attack Guidance Armor +function c511002051.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511002051.atktg) + e1:SetOperation(c511002051.atkop) + c:RegisterEffect(e1) +end +function c511002051.filter(c) + return (not Duel.GetAttacker() or c~=Duel.GetAttacker()) and c~=Duel.GetAttackTarget() +end +function c511002051.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002051.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511002051.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511002051.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + --Duel.ChangeAttackTarget(tc) + Duel.CalculateDamage(Duel.GetAttacker(),tc) + end +end diff --git a/script/c511002052.lua b/script/c511002052.lua new file mode 100644 index 00000000..b0dea347 --- /dev/null +++ b/script/c511002052.lua @@ -0,0 +1,69 @@ +--魔法効果の矢 +function c511002052.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002052.cost) + e1:SetTarget(c511002052.target) + e1:SetOperation(c511002052.activate) + e1:SetLabel(0) + c:RegisterEffect(e1) +end +function c511002052.cfilter(c,tp) + return c:IsRace(RACE_ZOMBIE) and Duel.IsExistingTarget(c511002052.filter,tp,0,LOCATION_MZONE,1,nil) +end +function c511002052.filter(c) + return c:IsFaceup() and not c:IsRace(RACE_ZOMBIE) +end +function c511002052.cost(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(1) + return true +end +function c511002052.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002052.filter(chkc) end + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c511002052.cfilter,1,nil,tp) + end + local rg=Duel.SelectReleaseGroup(tp,c511002052.cfilter,1,1,nil,tp) + local atk=rg:GetFirst():GetTextAttack() + if atk<0 then atk=0 end + Duel.Release(rg,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002052.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetTargetParam(atk) +end +function c511002052.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetLabel(atk) + e1:SetOwnerPlayer(tp) + e1:SetOperation(c511002052.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c511002052.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local atk=e:GetLabel() + if Duel.GetTurnPlayer()==e:GetOwnerPlayer() then + if c:GetAttack()>0 then + Duel.Hint(HINT_CARD,0,511002052) + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end + end +end diff --git a/script/c511002053.lua b/script/c511002053.lua new file mode 100644 index 00000000..0fc66ab0 --- /dev/null +++ b/script/c511002053.lua @@ -0,0 +1,77 @@ +--Synchro Out +function c511002053.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002053.target) + e1:SetOperation(c511002053.activate) + c:RegisterEffect(e1) +end +function c511002053.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToExtra() +end +function c511002053.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002053.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002053.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511002053.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511002053.mgfilter(c,e,tp,sync) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x80008)~=0x80008 or c:GetReasonCard()~=sync + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002053.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 or sumtype~=SUMMON_TYPE_SYNCHRO or mg:GetCount()==0 + or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) + or mg:IsExists(c511002053.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable then + Duel.BreakEffect() + local fid=e:GetHandler():GetFieldID() + local spc=mg:GetFirst() + while spc do + Duel.SpecialSummonStep(spc,0,tp,tp,false,false,POS_FACEUP) + spc:RegisterFlagEffect(51102053,RESET_EVENT+0x1fe0000,0,1,fid) + spc=mg:GetNext() + end + Duel.SpecialSummonComplete() + mg:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(mg) + e1:SetCondition(c511002053.descon) + e1:SetOperation(c511002053.desop) + Duel.RegisterEffect(e1,tp) + end +end +function c511002053.desfilter(c,fid) + return c:GetFlagEffectLabel(51102053)==fid +end +function c511002053.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511002053.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511002053.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511002053.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c511002054.lua b/script/c511002054.lua new file mode 100644 index 00000000..863d37e1 --- /dev/null +++ b/script/c511002054.lua @@ -0,0 +1,101 @@ +--No.42 スターシップ・ギャラクシー・トマホーク +function c511002054.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,2) + c:EnableReviveLimit() + --token + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetDescription(aux.Stringid(10389142,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002054.spcost) + e1:SetTarget(c511002054.sptg) + e1:SetOperation(c511002054.spop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002054.indes) + c:RegisterEffect(e2) + if not c511002054.global_check then + c511002054.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002054.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002054.xyz_number=42 +function c511002054.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002054.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,10389143,0,0x4011,2000,0,6,RACE_MACHINE,ATTRIBUTE_WIND) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ft,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ft,0,0) +end +function c511002054.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 or not Duel.IsPlayerCanSpecialSummonMonster(tp,10389143,0,0x4011,2000,0,6,RACE_MACHINE,ATTRIBUTE_WIND) then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local fid=e:GetHandler():GetFieldID() + local g=Group.CreateGroup() + for i=1,ft do + local token=Duel.CreateToken(tp,10389143) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_ADD_SETCODE) + e1:SetValue(0x48) + e1:SetReset(RESET_EVENT+0x0fe0000) + token:RegisterEffect(e1) + token:RegisterFlagEffect(10389142,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + g:AddCard(token) + end + Duel.SpecialSummonComplete() + g:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c511002054.descon) + e1:SetOperation(c511002054.desop) + Duel.RegisterEffect(e1,tp) +end +function c511002054.desfilter(c,fid) + return c:GetFlagEffectLabel(10389142)==fid +end +function c511002054.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511002054.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511002054.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511002054.desfilter,nil,e:GetLabel()) + g:DeleteGroup() + Duel.Destroy(tg,REASON_EFFECT) +end +function c511002054.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,10389142) + Duel.CreateToken(1-tp,10389142) +end +function c511002054.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002055.lua b/script/c511002055.lua new file mode 100644 index 00000000..912f0411 --- /dev/null +++ b/script/c511002055.lua @@ -0,0 +1,38 @@ +--Starship Adjust Plane +function c511002055.initial_effect(c) + --lv + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100117,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c511002055.target) + e1:SetOperation(c511002055.operation) + c:RegisterEffect(e1) +end +function c511002055.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511002055.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002055.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002055.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002055.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511002055.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local lv=c:GetLevel()+tc:GetLevel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002056.lua b/script/c511002056.lua new file mode 100644 index 00000000..3930318d --- /dev/null +++ b/script/c511002056.lua @@ -0,0 +1,31 @@ +--Tomahawk Cannon +function c511002056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002056.condition) + e1:SetTarget(c511002056.target) + e1:SetOperation(c511002056.activate) + c:RegisterEffect(e1) +end +function c511002056.filter(c) + return c:IsFaceup() and c:IsCode(10389142) +end +function c511002056.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002056.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.GetAttacker():IsControler(1-tp) +end +function c511002056.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511002056.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and Duel.NegateAttack() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002057.lua b/script/c511002057.lua new file mode 100644 index 00000000..0fa505eb --- /dev/null +++ b/script/c511002057.lua @@ -0,0 +1,30 @@ +--援護射撃 +function c511002057.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002057.target) + e1:SetOperation(c511002057.activate) + c:RegisterEffect(e1) +end +function c511002057.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c511002057.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002057.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002057.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002057.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002058.lua b/script/c511002058.lua new file mode 100644 index 00000000..8a1b27d3 --- /dev/null +++ b/script/c511002058.lua @@ -0,0 +1,98 @@ +--No.52 ダイヤモンド・クラブ・キング +function c511002058.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --atk/def + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100120,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002058.adcost) + e1:SetTarget(c511002058.adtg) + e1:SetOperation(c511002058.adop) + c:RegisterEffect(e1) + --to defense + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002058.postg) + e2:SetOperation(c511002058.posop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511002058.indes) + c:RegisterEffect(e3) + if not c511002058.global_check then + c511002058.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002058.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002058.xyz_number=52 +function c511002058.adcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002058.adtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsDefenseAbove(100) end +end +function c511002058.adop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local maxc=c:GetDefense() + maxc=math.floor(maxc/100)*100 + local t={} + for i=1,maxc/100 do + t[i]=i*100 + end + local val=Duel.AnnounceNumber(tp,table.unpack(t)) + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(val) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(-val) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_PIERCE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e3) + end +end +function c511002058.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c511002058.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c511002058.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,7194917) + Duel.CreateToken(1-tp,7194917) +end +function c511002058.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002059.lua b/script/c511002059.lua new file mode 100644 index 00000000..73fba14d --- /dev/null +++ b/script/c511002059.lua @@ -0,0 +1,76 @@ +--No.91 サンダー・スパーク・ドラゴン +function c511002059.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,5) + c:EnableReviveLimit() + --destroy1 + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(32543380,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002059.cost) + e1:SetLabel(3) + e1:SetTarget(c511002059.destg1) + e1:SetOperation(c511002059.desop1) + c:RegisterEffect(e1) + --destroy2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(84417082,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511002059.cost) + e2:SetLabel(5) + e2:SetTarget(c511002059.destg2) + e2:SetOperation(c511002059.desop2) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511002059.indes) + c:RegisterEffect(e3) + if not c511002059.global_check then + c511002059.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002059.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002059.xyz_number=91 +function c511002059.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=e:GetLabel() + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,ct,REASON_COST) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + e:GetHandler():RemoveOverlayCard(tp,ct,ct,REASON_COST) +end +function c511002059.destg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511002059.desop1(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end +function c511002059.destg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0,nil) +end +function c511002059.desop2(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(sg,REASON_EFFECT) +end +function c511002059.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,84417082) + Duel.CreateToken(1-tp,84417082) +end +function c511002059.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002060.lua b/script/c511002060.lua new file mode 100644 index 00000000..7cf7d80e --- /dev/null +++ b/script/c511002060.lua @@ -0,0 +1,65 @@ +--No.50 ブラック・コーン号 +function c511002060.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --destroy&damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetDescription(aux.Stringid(511002060,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002060.cost) + e1:SetTarget(c511002060.target) + e1:SetOperation(c511002060.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002060.indes) + c:RegisterEffect(e2) + if not c511002060.global_check then + c511002060.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002060.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002060.xyz_number=50 +function c511002060.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002060.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + local atk=g:GetFirst():GetAttack() + if atk<0 then atk=0 end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c511002060.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then + local atk=tc:GetAttack() + if atk<0 then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end +function c511002060.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,51735257) + Duel.CreateToken(1-tp,51735257) +end +function c511002060.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002064.lua b/script/c511002064.lua new file mode 100644 index 00000000..39ba4431 --- /dev/null +++ b/script/c511002064.lua @@ -0,0 +1,110 @@ +--No.82 蟻岩土ブリリアント +function c511002064.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --effect + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511002064,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002064.cost) + e1:SetTarget(c511002064.target) + e1:SetOperation(c511002064.operation) + c:RegisterEffect(e1) + if not c511002064.global_check then + c511002064.global_check=true + c511002064[0]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(c511002064.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002064.clear) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511002064.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511002064.xyz_number=82 +function c511002064.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x215) or c:IsCode(31437713)) +end +function c511002064.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002064.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002064.filter,tp,LOCATION_MZONE,0,1,nil) + and not e:GetHandler():IsStatus(STATUS_CHAINING) end +end +function c511002064.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002064.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(tc) + e1:SetDescription(aux.Stringid(95100126,1)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511002064.damcon) + e1:SetTarget(c511002064.damtg) + e1:SetOperation(c511002064.damop) + e1:SetReset(RESET_EVENT+0x1130000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(tc) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511002064.unop) + e2:SetLabelObject(e1) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511002064.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) and c511002064[0] +end +function c511002064.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetHandler():GetAttack() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) + e:Reset() +end +function c511002064.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,e:GetHandler():GetAttack(),REASON_EFFECT) +end +function c511002064.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(Card.IsCode,1,nil,511002065) then + c511002064[0]=true + end +end +function c511002064.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,31437713) + Duel.CreateToken(1-tp,31437713) +end +function c511002064.clear(e,tp,eg,ep,ev,re,r,rp) + c511002064[0]=false +end +function c511002064.unop(e,tp,eg,ep,ev,re,r,rp) + local ef=e:GetLabelObject() + if ef and bit.band(r,REASON_DESTROY)==0 then + ef:Reset() + e:Reset() + end +end diff --git a/script/c511002065.lua b/script/c511002065.lua new file mode 100644 index 00000000..9be58e3e --- /dev/null +++ b/script/c511002065.lua @@ -0,0 +1,74 @@ +--Land Power +function c511002065.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetDescription(aux.Stringid(511002065,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c511002065.spcon) + e2:SetTarget(c511002065.sptg) + e2:SetOperation(c511002065.spop) + c:RegisterEffect(e2) + --cannot be battle target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(c511002065.tg) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetCondition(c511002065.con) + e4:SetTarget(c511002065.tg) + c:RegisterEffect(e4) + local e5=e2:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) + local e6=e2:Clone() + e6:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e6) +end +function c511002065.cfilter(c,tp) + return c:IsFaceup() and (c:IsSetCard(0x215) or c:IsCode(31437713)) and c:IsControler(tp) +end +function c511002065.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002065.cfilter,1,nil,tp) +end +function c511002065.spfilter(c,e,tp) + return c:IsSetCard(0x215) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002065.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002065.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c511002065.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002065.spfilter,tp,LOCATION_DECK+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 c511002065.tg(e,c) + return c:IsFaceup() and (c:IsSetCard(0x215) or c:IsCode(31437713)) +end +function c511002065.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x215) or c:IsCode(31437713)) +end +function c511002065.con(e,c) + return not Duel.IsExistingMatchingCard(c511002065.filter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511002066.lua b/script/c511002066.lua new file mode 100644 index 00000000..46454115 --- /dev/null +++ b/script/c511002066.lua @@ -0,0 +1,35 @@ +--Splitting Planarian +function c511002066.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511002066.spcost) + e2:SetTarget(c511002066.sptg) + e2:SetOperation(c511002066.spop) + c:RegisterEffect(e2) +end +function c511002066.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002066.filter(c,e,tp) + return c:IsCode(511002067) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002066.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511002066.filter,tp,LOCATION_DECK,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c511002066.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<2 then return end + local g=Duel.GetMatchingGroup(c511002066.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002068.lua b/script/c511002068.lua new file mode 100644 index 00000000..b63b7b7b --- /dev/null +++ b/script/c511002068.lua @@ -0,0 +1,40 @@ +--Sacrifice Rank-up +function c511002068.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002068.target) + e1:SetOperation(c511002068.activate) + c:RegisterEffect(e1) +end +function c511002068.filter1(c,e,tp) + return c:GetOverlayGroup():IsExists(Card.IsAbleToRemoveAsCost,2,nil) + and Duel.IsExistingMatchingCard(c511002068.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetRank()+1) +end +function c511002068.filter2(c,e,tp,rk) + return c:GetRank()==rk and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002068.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511002068.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002068.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp)end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511002068.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + local ovg=g:GetFirst():GetOverlayGroup() + local sg=ovg:FilterSelect(tp,Card.IsAbleToRemoveAsCost,2,2,nil) + Duel.Remove(sg,POS_FACEUP,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002068.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=Duel.SelectMatchingCard(tp,c511002068.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetRank()+1):GetFirst() + if sc then + Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002069.lua b/script/c511002069.lua new file mode 100644 index 00000000..76dfd94a --- /dev/null +++ b/script/c511002069.lua @@ -0,0 +1,16 @@ +--Moon Gardna +function c511002069.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002069.spcon) + c:RegisterEffect(e1) +end +function c511002069.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>1 +end diff --git a/script/c511002071.lua b/script/c511002071.lua new file mode 100644 index 00000000..a38de15e --- /dev/null +++ b/script/c511002071.lua @@ -0,0 +1,24 @@ +--Rank Drop +function c511002071.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511002071.target) + e1:SetOperation(c511002071.activate) + c:RegisterEffect(e1) +end +function c511002071.filter(c) + return c:IsFaceup() and c:GetRank()>0 and c:IsDestructable() +end +function c511002071.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002071.filter,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c511002071.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511002071.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511002071.filter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511002072.lua b/script/c511002072.lua new file mode 100644 index 00000000..60ed690d --- /dev/null +++ b/script/c511002072.lua @@ -0,0 +1,37 @@ +--Photon Advancer +function c511002072.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511002072.atk) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetCondition(c511002072.spcon) + c:RegisterEffect(e2) +end +function c511002072.cfilter(c) + return c:IsFaceup() and c:IsCode(511002072) +end +function c511002072.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002072.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c511002072.atk(e,c) + local sum=0 + local g=Duel.GetMatchingGroup(c511002072.cfilter,c:GetControler(),LOCATION_MZONE,0,c) + local tc=g:GetFirst() + while tc do + sum=sum+tc:GetBaseAttack() + tc=g:GetNext() + end + return sum +end diff --git a/script/c511002073.lua b/script/c511002073.lua new file mode 100644 index 00000000..5d7a371e --- /dev/null +++ b/script/c511002073.lua @@ -0,0 +1,47 @@ +--Photon Jumper +function c511002073.initial_effect(c) + --end battle phase + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100138,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002073.condition) + e1:SetTarget(c511002073.target) + e1:SetOperation(c511002073.operation) + c:RegisterEffect(e1) +end +function c511002073.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511002073.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511002073.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.BreakEffect() + local ph=Duel.GetCurrentPhase() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + if Duel.GetTurnPlayer()==tp and ph>PHASE_MAIN1 and ph0 + and Duel.IsExistingMatchingCard(c511002075.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002075.spop(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 tc=Duel.SelectMatchingCard(tp,c511002075.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp):GetFirst() + if tc then + Duel.SpecialSummon(tc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + else + local cg=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg and cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + end +end diff --git a/script/c511002076.lua b/script/c511002076.lua new file mode 100644 index 00000000..8bdb2de0 --- /dev/null +++ b/script/c511002076.lua @@ -0,0 +1,38 @@ +--Cat Shark +function c511002076.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,2,2) + c:EnableReviveLimit() + --double + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002076.cost) + e1:SetTarget(c511002076.target) + e1:SetOperation(c511002076.operation) + c:RegisterEffect(e1) +end +function c511002076.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002076.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsRankBelow(4) +end +function c511002076.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511002076.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002076.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002076.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002077.lua b/script/c511002077.lua new file mode 100644 index 00000000..f7ca1aba --- /dev/null +++ b/script/c511002077.lua @@ -0,0 +1,56 @@ +--Number 17: Leviathan Dragon (anime) +function c511002077.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,3,2) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(69610924,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002077.cost) + e1:SetOperation(c511002077.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002077.indes) + c:RegisterEffect(e2) + if not c511002077.global_check then + c511002077.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002077.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002077.xyz_number=17 +function c511002077.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002077.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c511002077.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,69610924) + Duel.CreateToken(1-tp,69610924) +end +function c511002077.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002078.lua b/script/c511002078.lua new file mode 100644 index 00000000..326bd8e2 --- /dev/null +++ b/script/c511002078.lua @@ -0,0 +1,29 @@ +--Xyz Drop +function c511002078.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002078.target) + e1:SetOperation(c511002078.activate) + c:RegisterEffect(e1) +end +function c511002078.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511002078.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingMatchingCard(c511002078.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002078.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511002078.filter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + end +end diff --git a/script/c511002079.lua b/script/c511002079.lua new file mode 100644 index 00000000..6d0d6074 --- /dev/null +++ b/script/c511002079.lua @@ -0,0 +1,136 @@ +--Raidraptor - Ultimate Falcon +function c511002079.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_WINDBEAST),10,3) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetDescription(aux.Stringid(511002079,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511002079.negcost) + e1:SetTarget(c511002079.negtg) + e1:SetOperation(c511002079.negop) + c:RegisterEffect(e1) + --effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511002079.regcon) + e2:SetOperation(c511002079.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MATERIAL_CHECK) + e3:SetValue(c511002079.valcheck) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --Unaffected by Opponent Card Effects + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetValue(c511002079.unval) + c:RegisterEffect(e5) +end +function c511002079.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002079.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) +end +function c511002079.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,0,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_MONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(-1000) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end +end +function c511002079.regcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ and e:GetLabel()==1 +end +function c511002079.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(0) + e1:SetTarget(c511002079.endtg) + e1:SetOperation(c511002079.endop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511002079.matfilter(c) + return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) +end +function c511002079.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(c511002079.matfilter,1,nil) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end +function c511002079.endtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 then + e:SetCategory(0) + e:SetProperty(0) + e:SetLabel(1) + else + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) + e:SetCategory(CATEGORY_DAMAGE) + e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e:SetLabel(0) + end +end +function c511002079.endop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==1 then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + else + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + end +end +function c511002079.unval(e,te) + return te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end diff --git a/script/c511002080.lua b/script/c511002080.lua new file mode 100644 index 00000000..3940a320 --- /dev/null +++ b/script/c511002080.lua @@ -0,0 +1,45 @@ +--Rank-Up-Magic Skip Force +function c511002080.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002080.target) + e1:SetOperation(c511002080.activate) + c:RegisterEffect(e1) +end +function c511002080.filter1(c,e,tp) + return c:IsFaceup() and Duel.IsExistingMatchingCard(c511002080.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+2) +end +function c511002080.filter2(c,e,tp,mc,rk) + return c:GetRank()==rk and c:IsSetCard(0xba) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511002080.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511002080.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511002080.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp)end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511002080.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002080.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002080.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+2) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c511002081.lua b/script/c511002081.lua new file mode 100644 index 00000000..855a78fb --- /dev/null +++ b/script/c511002081.lua @@ -0,0 +1,157 @@ +--Blackwing - Gofu the Hazy Shadow +function c511002081.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002081.spcon) + c:RegisterEffect(e1) + --token + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95100147,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511002081.tktg) + e2:SetOperation(c511002081.tkop) + c:RegisterEffect(e2) + --synlimit + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e5:SetValue(c511002081.synlimit) + c:RegisterEffect(e5) + --material effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetCondition(c511002081.atkcon) + e3:SetOperation(c511002081.atkop) + c:RegisterEffect(e3) + --graveyard synchro + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(511002081) + c:RegisterEffect(e4) + if not c511002081.global_check then + c511002081.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002081.synchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002081.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0,nil)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511002081.tktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002082,0,0x4011,0,0,1,RACE_WINDBEAST,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511002081.tkop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<2 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511002082,0,0x4011,0,0,1,RACE_WINDBEAST,ATTRIBUTE_DARK) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,511002082) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end + Duel.SpecialSummonComplete() +end +function c511002081.synlimit(e,c) + if not c then return false end + return not c:IsLocation(LOCATION_GRAVE) +end +function c511002081.atkcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_SYNCHRO +end +function c511002081.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99946920,1)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCondition(c511002081.recon) + e1:SetValue(LOCATION_DECK) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1) +end +function c511002081.recon(e) + return e:GetHandler():IsFaceup() +end +function c511002081.synchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511002083.lua b/script/c511002083.lua new file mode 100644 index 00000000..0b8df501 --- /dev/null +++ b/script/c511002083.lua @@ -0,0 +1,51 @@ +--Assault Blackwing - Onimaru the Divine Swell +function c511002083.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511002083.atkop) + c:RegisterEffect(e1) + if not c511002083.global_check then + c511002083.global_check=true + c511002083[0]=0 + c511002083[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetOperation(c511002083.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002083.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002083.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:GetSummonType()==SUMMON_TYPE_SYNCHRO then + c511002083[tc:GetSummonPlayer()]=c511002083[tc:GetSummonPlayer()]+1 + end +end +function c511002083.clear(e,tp,eg,ep,ev,re,r,rp) + c511002083[0]=0 + c511002083[1]=0 +end +function c511002083.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c511002083[tp] + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002084.lua b/script/c511002084.lua new file mode 100644 index 00000000..785a001c --- /dev/null +++ b/script/c511002084.lua @@ -0,0 +1,30 @@ +--Raidraptor - Desperate +function c511002084.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511002084.condition) + e1:SetTarget(c511002084.target) + e1:SetOperation(c511002084.activate) + c:RegisterEffect(e1) +end +function c511002084.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xba) +end +function c511002084.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainDisablable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc>0 and Duel.IsExistingMatchingCard(c511002084.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002084.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002084.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c511002085.lua b/script/c511002085.lua new file mode 100644 index 00000000..fae4f629 --- /dev/null +++ b/script/c511002085.lua @@ -0,0 +1,78 @@ +--Sky Excalibur +function c511002085.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(c511002085.target) + e1:SetOperation(c511002085.operation) + c:RegisterEffect(e1) + --equip limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetValue(1) + c:RegisterEffect(e2) + --atk/def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(400) + c:RegisterEffect(e3) + --sp summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511002085,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c511002085.spcon) + e4:SetTarget(c511002085.sptg) + e4:SetOperation(c511002085.spop) + c:RegisterEffect(e4) + --immune + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetValue(c511002085.efilter) + c:RegisterEffect(e5) +end +function c511002085.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002085.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002085.efilter(e,re) + return e:GetHandlerPlayer()~=re:GetOwnerPlayer() +end +function c511002085.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetEquipTarget()~=nil and c:IsLocation(LOCATION_GRAVE) +end +function c511002085.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsRace(RACE_WINDBEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002085.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002085.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002085.spop(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,c511002085.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002086.lua b/script/c511002086.lua new file mode 100644 index 00000000..0637f151 --- /dev/null +++ b/script/c511002086.lua @@ -0,0 +1,51 @@ +--Hurricane Nest +function c511002086.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetDescription(aux.Stringid(41307269,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002086.condition) + e2:SetCost(c511002086.cost) + e2:SetTarget(c511002086.target) + e2:SetOperation(c511002086.operation) + c:RegisterEffect(e2) +end +function c511002086.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if eg:GetCount()==1 and tc:GetSummonPlayer()~=tp then + e:SetLabelObject(tc) + return true + else + return false + end +end +function c511002086.cfilter(c) + return c:IsCode(42598242) and c:IsAbleToGraveAsCost() +end +function c511002086.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002086.cfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil )end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002086.cfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002086.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and tc:IsDestructable() end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c511002086.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002087.lua b/script/c511002087.lua new file mode 100644 index 00000000..5320e130 --- /dev/null +++ b/script/c511002087.lua @@ -0,0 +1,40 @@ +--Gravity Gain +function c511002087.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511002087.atktarget) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511002087.mtcon) + e3:SetOperation(c511002087.mtop) + c:RegisterEffect(e3) +end +function c511002087.atktarget(e,c) + return c:GetLevel()<=4 +end +function c511002087.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002087.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckReleaseGroup(tp,nil,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(63014935,2)) then + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c511002088.lua b/script/c511002088.lua new file mode 100644 index 00000000..0455dc46 --- /dev/null +++ b/script/c511002088.lua @@ -0,0 +1,61 @@ +--Number 61: Volcasaurus (anime) +function c511002088.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,2) + c:EnableReviveLimit() + --destroy&damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetDescription(aux.Stringid(29669359,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002088.cost) + e1:SetTarget(c511002088.target) + e1:SetOperation(c511002088.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002088.indes) + c:RegisterEffect(e2) + if not c511002088.global_check then + c511002088.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002088.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002088.xyz_number=61 +function c511002088.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002088.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511002088.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end + end +end +function c511002088.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,29669359) + Duel.CreateToken(1-tp,29669359) +end +function c511002088.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002089.lua b/script/c511002089.lua new file mode 100644 index 00000000..9a559cfb --- /dev/null +++ b/script/c511002089.lua @@ -0,0 +1,65 @@ +--Instant Freeze +function c511002089.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002089.condition) + e1:SetTarget(c511002089.target) + e1:SetOperation(c511002089.activate) + c:RegisterEffect(e1) +end +function c511002089.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511002089.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_POSITION,eg,1,0,0) + end +end +function c511002089.activate(e,tp,eg,ep,ev,re,r,rp) + local ec=re:GetHandler() + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + ec:CancelToGrave() + Duel.ChangePosition(ec,POS_FACEDOWN) + Duel.RaiseEvent(ec,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + if Duel.GetTurnPlayer()==tp and ec:IsControler(tp) then + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + elseif Duel.GetTurnPlayer()==tp and ec:IsControler(1-tp) then + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + elseif Duel.GetTurnPlayer()~=tp and ec:IsControler(1-tp) then + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + else + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + end + e1:SetValue(1) + ec:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c511002089.turncon) + e2:SetOperation(c511002089.turnop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,3) + Duel.RegisterEffect(e2,Duel.GetTurnPlayer()) + end +end +function c511002089.turncon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511002089.turnop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + e:GetHandler():SetTurnCounter(ct) + if ct==3 then + e:GetOwner():ResetFlagEffect(1082946) + end +end diff --git a/script/c511002090.lua b/script/c511002090.lua new file mode 100644 index 00000000..0fb92b0b --- /dev/null +++ b/script/c511002090.lua @@ -0,0 +1,160 @@ +--Number 6: Chronomaly Atlandis (Anime) +function c511002090.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,2) + c:EnableReviveLimit() + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(9161357,0)) + e1:SetCategory(CATEGORY_LEAVE_GRAVE+CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511002090.eqcon) + e1:SetTarget(c511002090.eqtg) + e1:SetOperation(c511002090.eqop) + c:RegisterEffect(e1) + --lp + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(9161357,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511002090.lpcost) + e2:SetOperation(c511002090.lpop) + c:RegisterEffect(e2) + --lp - 0 materials + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(52090844,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511002090.hlpcon) + e3:SetOperation(c511002090.hlpop) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetCondition(c511002090.indcon) + e4:SetValue(1) + c:RegisterEffect(e4) + --avoid battle damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e5:SetRange(LOCATION_MZONE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,0) + e5:SetCondition(c511002090.indcon) + c:RegisterEffect(e5) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511002090.indes) + c:RegisterEffect(e6) + if not c511002090.global_check then + c511002090.global_check=true + c511002090[0]=0 + c511002090[1]=0 + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002090.numchk) + Duel.RegisterEffect(ge2,0) + --lpcheck + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetOperation(c511002090.lpchk) + Duel.RegisterEffect(ge1,0) + end +end +c511002090.xyz_number=6 +function c511002090.eqcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ +end +function c511002090.filter(c) + return c:IsSetCard(0x48) and c:IsType(TYPE_MONSTER) +end +function c511002090.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002090.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511002090.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c9161357.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511002090.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002090.eqlimit) + tc:RegisterEffect(e1) + local atk=tc:GetBaseAttack() + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + end +end +function c511002090.eqlimit(e,c) + return e:GetOwner()==c +end +function c511002090.lpcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002090.lpop(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(1-tp,Duel.GetLP(1-tp)/2) +end +function c511002090.hlpcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetOverlayCount()==0 +end +function c511002090.hlpop(e,tp,eg,ep,ev,re,r,rp) + local lp=Duel.GetLP(tp) + Duel.SetLP(tp,lp/2) + Duel.SetLP(1-tp,Duel.GetLP(1-tp)/2) + if lp>1000 and Duel.GetLP(tp)<=1000 then + Duel.RegisterFlagEffect(tp,51102090,0,0,0) + end +end +function c511002090.indcon(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),51102090)>0 +end +function c511002090.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,9161357) + Duel.CreateToken(1-tp,9161357) +end +function c511002090.lpchk(e,tp,eg,ep,ev,re,r,rp) + local prevlp1=c511002090[tp] + local prevlp2=c511002090[1-tp] + if prevlp1<=1000 and Duel.GetLP(tp)>1000 then + Duel.ResetFlagEffect(tp,51102090) + end + if prevlp2<=1000 and Duel.GetLP(1-tp)>1000 then + Duel.ResetFlagEffect(1-tp,51102090) + end + c511002090[tp]=Duel.GetLP(tp) + c511002090[1-tp]=Duel.GetLP(1-tp) +end +function c511002090.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002091.lua b/script/c511002091.lua new file mode 100644 index 00000000..85babdae --- /dev/null +++ b/script/c511002091.lua @@ -0,0 +1,99 @@ +--Number 33: Chronomaly Machu Mech (anime) +function c511002091.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,2) + c:EnableReviveLimit() + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(511001265) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002091.damcon) + e1:SetCost(c511002091.damcost) + e1:SetTarget(c511002091.damtg) + e1:SetOperation(c511002091.damop) + c:RegisterEffect(e1) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511002091.indes) + c:RegisterEffect(e3) + if not c511002091.global_check then + c511002091.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511002091.operation) + Duel.RegisterEffect(e2,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002091.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002091.xyz_number=33 +function c511002091.damcon(e,tp,eg,ep,ev,re,r,rp) + return ev>0 +end +function c511002091.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002091.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c511002091.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002091.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511002091.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511002091.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511002091.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,39139935) + Duel.CreateToken(1-tp,39139935) +end +function c511002091.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002092.lua b/script/c511002092.lua new file mode 100644 index 00000000..7c5a2a3e --- /dev/null +++ b/script/c511002092.lua @@ -0,0 +1,61 @@ +--Number 73: Abyss Splash (anime) +function c511002092.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,2) + c:EnableReviveLimit() + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(36076683,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002092.atkcon) + e1:SetCost(c511002092.atkcost) + e1:SetOperation(c511002092.atkop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002092.indes) + c:RegisterEffect(e2) + if not c511002092.global_check then + c511002092.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002092.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002092.xyz_number=73 +function c511002092.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002092.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002092.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end +function c511002092.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,36076683) + Duel.CreateToken(1-tp,36076683) +end +function c511002092.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002093.lua b/script/c511002093.lua new file mode 100644 index 00000000..8245e564 --- /dev/null +++ b/script/c511002093.lua @@ -0,0 +1,71 @@ +--Joyful Doom +function c511002093.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511002093.condition) + e1:SetTarget(c511002093.target) + e1:SetOperation(c511002093.activate) + c:RegisterEffect(e1) +end +function c511002093.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE + and tc:GetSummonPlayer()~=tp +end +function c511002093.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + local g=tc:GetMaterial() + if chk==0 then return g:GetCount()>0 end + local lp=g:GetSum(Card.GetPreviousAttackOnField) + Duel.SetTargetCard(tc) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(lp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,lp) +end +function c511002093.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) + if tc:IsCode(88071625) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(-d) + e1:SetReset(RESET_EVENT+0xfe0000) + tc:RegisterEffect(e1) + elseif tc:IsCode(47942531) or tc:IsCode(8794435) or tc:IsCode(6614221) or tc:GetOriginalCode()==110000010 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0xfe0000) + tc:RegisterEffect(e1) + elseif tc:GetOriginalCode()==51100236 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + elseif tc:IsCode(23770284) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-d/2) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511002094.lua b/script/c511002094.lua new file mode 100644 index 00000000..45ac6c64 --- /dev/null +++ b/script/c511002094.lua @@ -0,0 +1,143 @@ +--スピード・ワールド +function c511002094.initial_effect(c) + c:EnableCounterPermit(0x91) + c:SetCounterLimit(0x91,12) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(0xff) + e1:SetOperation(c511002094.op) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511002094.damop) + c:RegisterEffect(e2) + --add counter + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EVENT_PHASE_START+PHASE_STANDBY) + e3:SetOperation(c511002094.ctop) + c:RegisterEffect(e3) + --activation + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_ACTIVATE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(1,1) + e4:SetValue(c511002094.aclimit) + Duel.RegisterEffect(e4,tp) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c511002094.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e7:SetRange(LOCATION_SZONE) + e7:SetTargetRange(1,1) + e7:SetTarget(c511002094.aclimit2) + c:RegisterEffect(e7) + --lose counter + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_DAMAGE) + e8:SetOperation(c511002094.ctopx) + c:RegisterEffect(e8) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c511002094.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c511002094.ctcon2(e,re) + return not re:GetHandler():IsCode(100100103) or re:GetHandler()~=e:GetHandler() +end +function c511002094.filter(c) + return c:GetCode()~=511002094 +end +function c511002094.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,511002094,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end +function c511002094.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() + and c:GetControler()==e:GetHandler():GetControler() and not c:IsSetCard(0x200) then + Duel.Damage(rp,2000,REASON_EFFECT) + end +end +function c511002094.ctop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,100100090) then return end + e:GetHandler():AddCounter(0x91,1) +end +function c511002094.aclimit(e,re) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and re:GetHandler():IsType(TYPE_FIELD) +end +function c511002094.aclimit2(e,c) + return c:IsType(TYPE_FIELD) +end +function c511002094.tgn(e,c) + return c==e:GetHandler() +end +function c511002094.ctopx(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if ep~=tp then return end + local ct=math.floor(ev/1000) + c:RemoveCounter(tp,0x91,ct,REASON_RULE) +end diff --git a/script/c511002095.lua b/script/c511002095.lua new file mode 100644 index 00000000..30e2569f --- /dev/null +++ b/script/c511002095.lua @@ -0,0 +1,81 @@ +--Nameless +function c511002095.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002095.target) + e1:SetOperation(c511002095.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511002095.descon) + e2:SetOperation(c511002095.desop) + c:RegisterEffect(e2) + --change name + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(8873112,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511002095.ccon) + e3:SetOperation(c511002095.cop) + c:RegisterEffect(e3) +end +function c511002095.filter(c) + return c:IsFaceup() and c:GetCode()~=511002095 +end +function c511002095.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511002095.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c511002095.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002095.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) +end +function c511002095.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() 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_ONFIELD) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511002095.rcon) + e1:SetValue(511002095) + tc:RegisterEffect(e1,true) + end +end +function c511002095.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511002095.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511002095.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end +function c511002095.ccon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) +end +function c511002095.cop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(511002095) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002096.lua b/script/c511002096.lua new file mode 100644 index 00000000..d03ca3a7 --- /dev/null +++ b/script/c511002096.lua @@ -0,0 +1,180 @@ +--相克の魔術師 +function c511002096.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + + --pendulum summon + aux.EnablePendulumAttribute(c) + --xyz level + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c511002096.xyztg) + e2:SetOperation(c511002096.xyzop) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c511002096.distg) + e3:SetOperation(c511002096.disop) + c:RegisterEffect(e3) + if not c511002096.global_check then + c511002096.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002096.synchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002096.synchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511002096.xyzfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511002096.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002096.xyzfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002096.xyzfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002096.xyzfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511002096.xyzop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_XYZ_LEVEL) + e1:SetValue(c511002096.xyzlv) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_LEVEL_FINAL) + e2:SetValue(c511002096.xyzlv) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SYNCHRO_LEVEL) + e3:SetValue(c511002096.xyzlv) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_RITUAL_LEVEL) + e4:SetValue(c511002096.xyzlv) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(511002096) + e5:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e5) + local e6=Effect.CreateEffect(e:GetHandler()) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(511000538) + e6:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e6) + end +end +function c511002096.xyzlv(e,c,rc) + return c:GetRank() +end +function c511002096.disfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsType(TYPE_EFFECT) and not c:IsDisabled() +end +function c511002096.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002096.disfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002096.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511002096.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511002096.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_TRIGGER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end diff --git a/script/c511002097.lua b/script/c511002097.lua new file mode 100644 index 00000000..0e9740e7 --- /dev/null +++ b/script/c511002097.lua @@ -0,0 +1,36 @@ +--Rough Fight +function c511002097.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(69764158,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511002097.damcon) + e1:SetCost(c511002097.damcost) + e1:SetTarget(c511002097.damtg) + e1:SetOperation(c511002097.damop) + c:RegisterEffect(e1) +end +function c511002097.cfilter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsCode(511009200) +end +function c511002097.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and Duel.IsExistingMatchingCard(c511002097.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511002097.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002097.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c511002097.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002098.lua b/script/c511002098.lua new file mode 100644 index 00000000..8623512e --- /dev/null +++ b/script/c511002098.lua @@ -0,0 +1,35 @@ +--Rough Exploder +function c511002098.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(69764158,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511002098.damcon) + e1:SetCost(c511002098.damcost) + e1:SetTarget(c511002098.damtg) + e1:SetOperation(c511002098.damop) + c:RegisterEffect(e1) +end +function c511002098.cfilter(c) + return c:IsFaceup() and c:IsCode(511009200) +end +function c511002098.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002098.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511002098.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002098.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511002098.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002099.lua b/script/c511002099.lua new file mode 100644 index 00000000..3e13de90 --- /dev/null +++ b/script/c511002099.lua @@ -0,0 +1,99 @@ +--Agent of Hatred +function c511002099.initial_effect(c) + --gain lp + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511002099,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002099.reccon) + e1:SetTarget(c511002099.rectg) + e1:SetOperation(c511002099.recop) + c:RegisterEffect(e1) + if not c511002099.global_check then + c511002099.global_check=true + c511002099[0]=0 + --register + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c511002099.regop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002099.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002099.reccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511002099.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return c511002099[0]>0 end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,0) +end +function c511002099.recop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local i=1 + local ct=c511002099[0] + local rg=Group.CreateGroup() + local dam=0 + while i0 then + local i=1 + while c511002099[i]~=nil do + c511002099[i]=nil + i=i+1 + end + c511002099[0]=0 + end +end diff --git a/script/c511002100.lua b/script/c511002100.lua new file mode 100644 index 00000000..45e2916a --- /dev/null +++ b/script/c511002100.lua @@ -0,0 +1,80 @@ +--Card of Heaven and Earth +function c511002100.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002100.condition) + e1:SetTarget(c511002100.target) + e1:SetOperation(c511002100.activate) + c:RegisterEffect(e1) + if not c511002100.global_check then + c511002100.global_check=true + c511002100[0]=true + c511002100[1]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c511002100.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002100.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002100.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:IsLevelAbove(7) then + c511002100[tc:GetControler()]=true + end +end +function c511002100.clear(e,tp,eg,ep,ev,re,r,rp) + c511002100[0]=false + c511002100[1]=false +end +function c511002100.condition(e,tp,eg,ep,ev,re,r,rp) + return c511002100[tp] +end +function c511002100.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then ft=ft-1 end + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) and ft>0 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511002100.filter(c) + return c:IsSSetable() or c:IsMSetable(true,nil) +end +function c511002100.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local g=Duel.GetDecktopGroup(p,2) + Duel.Draw(p,d,REASON_EFFECT) + if g:IsExists(c511002100.filter,1,nil) then + local sc=g:FilterSelect(p,c511002100.filter,1,1,nil):GetFirst() + if sc:IsMSetable(true,nil) then + Duel.MSet(p,sc,true,nil) + else + Duel.SSet(p,sc) + Duel.ConfirmCards(1-p,sc) + end + else + Duel.ConfirmCards(1-p,g) + Duel.ShuffleHand(p) + end + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_FORBIDDEN) + e1:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002101.lua b/script/c511002101.lua new file mode 100644 index 00000000..39d7dd77 --- /dev/null +++ b/script/c511002101.lua @@ -0,0 +1,89 @@ +--フォトン・サテライト +function c511002101.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --lvup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(63223260,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002101.target) + e1:SetOperation(c511002101.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(511001225) + c:RegisterEffect(e2) + if not c511002101.global_check then + c511002101.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002101.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002101.filter(c) + return c:IsFaceup() and c:IsSetCard(0x55) and c:IsLevelAbove(1) +end +function c511002101.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511002101.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002101.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002101.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002101.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c511002101.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511002102.lua b/script/c511002102.lua new file mode 100644 index 00000000..de4d152a --- /dev/null +++ b/script/c511002102.lua @@ -0,0 +1,111 @@ +--Xyz Unity +function c511002102.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(c511002102.target) + e1:SetOperation(c511002102.operation) + c:RegisterEffect(e1) + --pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(98649372,1)) + e2:SetCategory(CATEGORY_POSITION+CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002102.postg) + e2:SetOperation(c511002102.posop) + 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(c511002102.eqlimit) + c:RegisterEffect(e3) + --multi attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511002102.macon) + e4:SetCost(c511002102.macost) + e4:SetOperation(c511002102.maop) + c:RegisterEffect(e4) +end +function c511002102.eqlimit(e,c) + return c:IsType(TYPE_XYZ) +end +function c511002102.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511002102.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002102.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002102.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002102.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002102.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002102.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipTarget():IsDefensePos() end +end +function c511002102.atkfilter(c) + return c:IsPosition(POS_FACEUP_DEFENSE) and c:IsType(TYPE_XYZ) +end +function c511002102.posop(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.ChangePosition(eq,POS_FACEUP_ATTACK) + local atk=0 + local g=Duel.GetMatchingGroup(c511002102.atkfilter,tp,LOCATION_MZONE,0,eq) + local bc=g:GetFirst() + while bc do + atk=atk+bc:GetAttack() + bc=g:GetNext() + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + eq:RegisterEffect(e1) +end +function c511002102.macon(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 c511002102.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsAbleToGraveAsCost() +end +function c511002102.macost(e,tp,eg,ep,ev,re,r,rp,chk) + local eq=e:GetHandler():GetEquipTarget() + if chk==0 then return Duel.IsExistingMatchingCard(c511002102.cfilter,tp,LOCATION_MZONE,0,1,eq) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002102.cfilter,tp,LOCATION_MZONE,0,1,1,eq) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002102.maop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end +end diff --git a/script/c511002103.lua b/script/c511002103.lua new file mode 100644 index 00000000..3c69f362 --- /dev/null +++ b/script/c511002103.lua @@ -0,0 +1,30 @@ +--Celestial Profit +function c511002103.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002103.condition) + e1:SetTarget(c511002103.target) + e1:SetOperation(c511002103.activate) + c:RegisterEffect(e1) +end +function c511002103.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_HAND) and c:GetControler()==tp and c:GetPreviousControler()==tp +end +function c511002103.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002103.cfilter,1,nil,tp) and rp~=tp +end +function c511002103.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:FilterCount(c511002103.cfilter,nil,tp) + if chk==0 then return Duel.IsPlayerCanDraw(tp,ct*2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct*2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct*2) +end +function c511002103.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002104.lua b/script/c511002104.lua new file mode 100644 index 00000000..b2ab78a9 --- /dev/null +++ b/script/c511002104.lua @@ -0,0 +1,41 @@ +--Desperate Guard +function c511002104.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002104.condition) + e1:SetCost(c511002104.cost) + e1:SetOperation(c511002104.activate) + c:RegisterEffect(e1) +end +function c511002104.condition(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 then return false end + 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 and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511002104.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511002104.activate(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,1) + e1:SetLabel(cid) + e1:SetValue(c511002104.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002104.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end diff --git a/script/c511002105.lua b/script/c511002105.lua new file mode 100644 index 00000000..4e0e79fa --- /dev/null +++ b/script/c511002105.lua @@ -0,0 +1,141 @@ +--Clear Robe +function c511002105.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002105.condition) + e1:SetTarget(c511002105.target) + e1:SetOperation(c511002105.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511002105.condition2) + c:RegisterEffect(e2) +end +function c511002105.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if tc:IsControler(1-tp) then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + if not tc or not bc or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + e:SetLabelObject(tc) + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if tc:IsAttackPos() then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + else + return bc:GetDefense()>tc:GetDefense() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end + end + else + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end +end +function c511002105.cfilter(c,tp) + return c:IsOnField() and c:IsType(TYPE_MONSTER) and c:IsControler(tp) +end +function c511002105.condition2(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ex and tg~=nil and tc+tg:FilterCount(c511002105.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c511002105.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOHAND) + if ex and tg~=nil and tc+tg:FilterCount(c511002105.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c511002105.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_REMOVE) + if ex and tg~=nil and tc+tg:FilterCount(c511002105.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c511002105.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TODECK) + if ex and tg~=nil and tc+tg:FilterCount(c511002105.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c511002105.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_RELEASE) + if ex and tg~=nil and tc+tg:FilterCount(c511002105.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c511002105.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE) + if ex and tg~=nil and tc+tg:FilterCount(c511002105.cfilter,nil,tp)-tg:GetCount()==1 then + local g=tg:Filter(c511002105.cfilter,nil,tp) + e:SetLabelObject(g:GetFirst()) + return true + end + return false +end +function c511002105.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and (tc:GetAttack()>0 or tc:GetDefense()>0) end + Duel.SetTargetCard(tc) +end +function c511002105.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_CHAIN) + tc: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_IMMUNE_EFFECT) + e2:SetReset(RESET_CHAIN) + e2:SetValue(c511002105.efilter) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e4) + end +end +function c511002105.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end diff --git a/script/c511002106.lua b/script/c511002106.lua new file mode 100644 index 00000000..def56de3 --- /dev/null +++ b/script/c511002106.lua @@ -0,0 +1,48 @@ +--Higher Dimension Guard +function c511002106.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002106.cost) + e1:SetOperation(c511002106.activate) + c:RegisterEffect(e1) +end +function c511002106.filter(c) + return c:IsFaceup() and c:GetFlagEffect(511002106)==0 +end +function c511002106.cfilter(c,tp) + return c:IsAbleToRemoveAsCost() and Duel.IsExistingMatchingCard(c511002106.filter,tp,LOCATION_MZONE,0,1,c) +end +function c511002106.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002106.cfilter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002106.cfilter,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002106.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002106.filter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + tc:RegisterFlagEffect(511002106,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(c511002106.efilter) + tc:RegisterEffect(e2) + end +end +function c511002106.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end diff --git a/script/c511002107.lua b/script/c511002107.lua new file mode 100644 index 00000000..79d42378 --- /dev/null +++ b/script/c511002107.lua @@ -0,0 +1,98 @@ +--Fruit of the Dead +function c511002107.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002107.target) + e1:SetOperation(c511002107.activate) + c:RegisterEffect(e1) + if not c511002107.global_check then + c511002107.global_check=true + c511002107[0]=0 + --register + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(511001265) + ge1:SetOperation(c511002107.regop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002107.clear) + Duel.RegisterEffect(ge2,0) + --register2 + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511002107.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511002107.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsFaceup,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511002107.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511002107.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511002107.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return c511002107[0]>0 end + local ct=c511002107[0] + local t={} + for i=1,ct do + t[i]=c511002107[i] + end + local dam=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,dam) +end +function c511002107.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c511002107.regop(e,tp,eg,ep,ev,re,r,rp) + c511002107[0]=c511002107[0]+1 + c511002107[c511002107[0]]=ev +end +function c511002107.clear(e,tp,eg,ep,ev,re,r,rp) + local ct=c511002107[0] + if ct>0 then + local i=1 + while c511002107[i]~=nil do + c511002107[i]=nil + i=i+1 + end + c511002107[0]=0 + end +end diff --git a/script/c511002108.lua b/script/c511002108.lua new file mode 100644 index 00000000..a57a6a94 --- /dev/null +++ b/script/c511002108.lua @@ -0,0 +1,69 @@ +--キメラテック・オーバー・ドラゴン +function c511002108.initial_effect(c) + c:EnableReviveLimit() + --fusion material + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_FUSION_MATERIAL) + e1:SetCondition(c511002108.fscondition) + e1:SetOperation(c511002108.fsoperation) + c:RegisterEffect(e1) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(aux.fuslimit) + c:RegisterEffect(e2) + --spsummon success + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c511002108.sucop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetOperation(c511002108.tgop) + c:RegisterEffect(e4) +end +c511002108.material_count=1 +c511002108.material={70095154} +function c511002108.spfilter(c,mg) + return (c:IsCode(70095154) or c:IsHasEffect(EFFECT_FUSION_SUBSTITUTE)) + and mg:IsExists(Card.IsRace,1,c,RACE_MACHINE) +end +function c511002108.fscondition(e,mg,gc) + if mg==nil then return false end + if gc then return false end + return mg:IsExists(c511002108.spfilter,1,nil,mg) +end +function c511002108.fsoperation(e,tp,eg,ep,ev,re,r,rp,gc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=eg:FilterSelect(tp,c511002108.spfilter,1,1,nil,eg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=eg:FilterSelect(tp,Card.IsRace,1,63,g1:GetFirst(),RACE_MACHINE) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) +end +function c511002108.sucop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(c:GetMaterialCount()*800) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(c:GetMaterialCount()) + c:RegisterEffect(e3) +end +function c511002108.tgop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c511002109.lua b/script/c511002109.lua new file mode 100644 index 00000000..a8581e5f --- /dev/null +++ b/script/c511002109.lua @@ -0,0 +1,126 @@ +--ゴヨウ・エンペラー +function c511002109.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,c511002109.ffilter,2,false) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002109.atkcon) + e1:SetTarget(c511002109.atktg) + e1:SetOperation(c511002109.atkop) + c:RegisterEffect(e1) + --return control + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511002109.ctcon) + e2:SetTarget(c511002109.cttg) + e2:SetOperation(c511002109.ctop) + c:RegisterEffect(e2) +end +function c511002109.ffilter(c) + return c:IsFusionSetCard(0x204) or c:IsFusionCode(7391448) or c:IsFusionCode(63364266) or c:IsFusionCode(98637386) or c:IsFusionCode(84305651) + or c:IsFusionCode(58901502) or c:IsFusionCode(59255742) +end +function c511002109.atkcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if tc:IsControler(tp) then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + if not tc or not bc or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + if bc~=e:GetHandler() and bc:GetOwner()==tp then return false end + e:SetLabelObject(tc) + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if tc:IsAttackPos() then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + else + return bc:GetDefense()>tc:GetDefense() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end + end + else + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end +end +function c511002109.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and tc:IsControlerCanBeChanged() end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,tc,1,0,0) +end +function c511002109.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2) + Duel.GetControl(tc,tp) + end +end +function c511002109.ctcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and c:GetLocation()~=LOCATION_DECK +end +function c511002109.ctfilter(c) + return c:GetControler()~=c:GetOwner() +end +function c511002109.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end +end +function c511002109.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local tc=g:GetFirst() + while tc do + if not tc:IsImmuneToEffect(e) then + tc:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetValue(tc:GetOwner()) + e1:SetReset(RESET_EVENT+0xec0000) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end +end diff --git a/script/c511002110.lua b/script/c511002110.lua new file mode 100644 index 00000000..0a9b4cfb --- /dev/null +++ b/script/c511002110.lua @@ -0,0 +1,107 @@ +--毒蛇神ヴェノミナーガ +function c511002110.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511002110.atkval) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(8062132,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetCondition(c511002110.condition) + e3:SetCost(c511002110.cost) + e3:SetTarget(c511002110.target) + e3:SetOperation(c511002110.operation) + c:RegisterEffect(e3) + --unaffectable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetValue(aux.tgval) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetValue(c511002110.efilter) + c:RegisterEffect(e5) + --win + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(8062132,1)) + e6:SetCategory(CATEGORY_COUNTER) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_BATTLE_DAMAGE) + e6:SetCondition(c511002110.ctcon) + e6:SetOperation(c511002110.ctop) + c:RegisterEffect(e6) +end +function c511002110.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c511002110.atkval(e,c) + return Duel.GetMatchingGroupCount(Card.IsRace,c:GetControler(),LOCATION_GRAVE,0,nil,RACE_REPTILE)*500 +end +function c511002110.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511002110.cfilter(c) + return c:IsRace(RACE_REPTILE) and c:IsAbleToRemoveAsCost() +end +function c511002110.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002110.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002110.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002110.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002110.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,true,false,POS_FACEUP) + end +end +function c511002110.ctcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511002110.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c511002110.wincon) + e2:SetOperation(c511002110.winop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + Duel.RegisterEffect(e2,tp) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,3) + c511002110[e:GetHandler()]=e2 +end +function c511002110.wincon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002110.winop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + e:GetHandler():SetTurnCounter(ct) + if ct==3 then + e:GetOwner():ResetFlagEffect(1082946) + Duel.Win(tp,0x12) + end +end diff --git a/script/c511002111.lua b/script/c511002111.lua new file mode 100644 index 00000000..5e0a2786 --- /dev/null +++ b/script/c511002111.lua @@ -0,0 +1,117 @@ +--No.106 巨岩掌ジャイアント・ハンド +function c511002111.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(63746411,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002111.condition) + e1:SetCost(c511002111.cost) + e1:SetTarget(c511002111.target) + e1:SetOperation(c511002111.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(50491121,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCondition(c511002111.descon) + e2:SetTarget(c511002111.destg) + e2:SetOperation(c511002111.desop) + c:RegisterEffect(e2) + if not c511002111.global_check then + c511002111.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002111.numchk) + Duel.RegisterEffect(ge2,0) + end + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511002111.indes) + c:RegisterEffect(e3) + if not c511002111.global_check then + c511002111.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511002111.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511002111.xyz_number=106 +function c511002111.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsActiveType(TYPE_MONSTER) + and Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)==LOCATION_MZONE +end +function c511002111.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002111.filter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c511002111.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002111.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002111.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511002111.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511002111.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsType(TYPE_EFFECT) 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_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511002111.rcon) + tc:RegisterEffect(e1,true) + end +end +function c511002111.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511002111.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,63746411) + Duel.CreateToken(1-tp,63746411) +end +function c511002111.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasCardTarget(Duel.GetAttacker()) +end +function c511002111.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if chk==0 then return a:IsOnField() end + Duel.SetTargetCard(a) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,a,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,a:GetAttack()) +end +function c511002111.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) + and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,tc:GetPreviousAttackOnField(),REASON_EFFECT) + end +end +function c511002111.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511002112.lua b/script/c511002112.lua new file mode 100644 index 00000000..3140697f --- /dev/null +++ b/script/c511002112.lua @@ -0,0 +1,39 @@ +--超巨大空中宮殿ガンガリディア +function c511002112.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),10,2) + c:EnableReviveLimit() + --destroy&damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetDescription(aux.Stringid(3814632,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511002112.cost) + e1:SetTarget(c511002112.target) + e1:SetOperation(c511002112.operation) + c:RegisterEffect(e1) +end +function c511002112.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002112.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002112.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local p=tc:GetControler() + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.SetLP(p,Duel.GetLP(p)/2) + end + end +end diff --git a/script/c511002113.lua b/script/c511002113.lua new file mode 100644 index 00000000..4945d0d9 --- /dev/null +++ b/script/c511002113.lua @@ -0,0 +1,63 @@ +--Different Dimension Barrier - Lost Force +function c511002113.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002113.condition) + e1:SetTarget(c511002113.target) + e1:SetOperation(c511002113.activate) + c:RegisterEffect(e1) + if not c511002113.global_check then + c511002113.global_check=true + c511002113[0]=true + c511002113[1]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_LEAVE_FIELD) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511002113.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002113.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002113.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsType(TYPE_MONSTER) and not c:IsReason(REASON_BATTLE) +end +function c511002113.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(c511002113.cfilter,1,nil,tp) then + c511002113[tp]=true + end + if eg:IsExists(c511002113.cfilter,1,nil,1-tp) then + c511002113[1-tp]=true + end +end +function c511002113.clear(e,tp,eg,ep,ev,re,r,rp) + c511002113[0]=false + c511002113[1]=false +end +function c511002113.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and c511002113[tp] +end +function c511002113.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) + local dam=tg:GetAttack() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002113.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if Duel.NegateAttack() then + Duel.BreakEffect() + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end + end +end diff --git a/script/c511002114.lua b/script/c511002114.lua new file mode 100644 index 00000000..e7c2ac7e --- /dev/null +++ b/script/c511002114.lua @@ -0,0 +1,24 @@ +--Stage Select +function c511002114.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002114.target) + e1:SetOperation(c511002114.activate) + c:RegisterEffect(e1) +end +function c511002114.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=2 + and Duel.GetFieldGroupCount(1-tp,LOCATION_DECK,0)>=2 end +end +function c511002114.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.ShuffleDeck(1-tp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(24140059,1)) + local tc=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_DECK,0,1,1,nil):GetFirst() + if tc then + Duel.ShuffleDeck(tp) + Duel.MoveSequence(tc,0) + Duel.ConfirmDecktop(tp,1) + end +end diff --git a/script/c511002115.lua b/script/c511002115.lua new file mode 100644 index 00000000..2cda7d84 --- /dev/null +++ b/script/c511002115.lua @@ -0,0 +1,29 @@ +--Magical Pendulum Box +function c511002115.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002115.target) + e1:SetOperation(c511002115.activate) + c:RegisterEffect(e1) +end +function c511002115.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511002115.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + local dg=Duel.GetOperatedGroup() + Duel.ConfirmCards(1-p,dg) + local rct=dg:FilterCount(Card.IsType,nil,TYPE_PENDULUM) + if rct~=2 then + Duel.SendtoGrave(dg,REASON_EFFECT) + end + Duel.ShuffleHand(p) +end diff --git a/script/c511002116.lua b/script/c511002116.lua new file mode 100644 index 00000000..24e97666 --- /dev/null +++ b/script/c511002116.lua @@ -0,0 +1,132 @@ +--Orichalcum Chain +function c511002116.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --xyz + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(511002116) + e2:SetCondition(c511002116.con) + e2:SetRange(LOCATION_SZONE) + c:RegisterEffect(e2) + --summon + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetRange(LOCATION_SZONE) + e4:SetOperation(c511002116.sumop) + c:RegisterEffect(e4) + --destroy2 + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c511002116.descon2) + e5:SetOperation(c511002116.desop2) + c:RegisterEffect(e5) + --return + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetCode(EVENT_LEAVE_FIELD_P) + e6:SetOperation(c511002116.checkop) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e7:SetCode(EVENT_LEAVE_FIELD) + e7:SetOperation(c511002116.retop) + e7:SetLabelObject(e6) + c:RegisterEffect(e7) + if not c511002116.global_check then + c511002116.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002116.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002116.con(e) + return e:GetHandler():GetFlagEffect(511002115)==0 +end +function c511002116.sumop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=eg:GetFirst() + if tc:GetSummonType()==SUMMON_TYPE_XYZ and c:GetFlagEffect(511002115)>0 and c:GetFlagEffect(511002114)==0 then + Duel.Hint(HINT_CARD,0,511002116) + c:SetCardTarget(tc) + c:RegisterFlagEffect(511002114,RESET_EVENT+0x1fe0000,0,0) + end +end +function c511002116.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511002116.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511002116.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c511002116.retop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsReason(REASON_DESTROY) then return end + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + if not Duel.GetControl(tc,1-tp) then + if not tc:IsImmuneToEffect(e) and tc:IsAbleToChangeControler() then + Duel.Destroy(tc,REASON_EFFECT) + end + end + end +end +function c511002116.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511002117.lua b/script/c511002117.lua new file mode 100644 index 00000000..a2680c1c --- /dev/null +++ b/script/c511002117.lua @@ -0,0 +1,50 @@ +--Elastic Space +function c511002117.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002117.condition) + e1:SetOperation(c511002117.operation) + c:RegisterEffect(e1) +end +function c511002117.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c511002117.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_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511002117.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(c511002117.damval) + e2:SetLabel(cid) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c511002117.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end +function c511002117.damval(e,re,val,r,rp,rc) + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return val end + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end diff --git a/script/c511002118.lua b/script/c511002118.lua new file mode 100644 index 00000000..8c475937 --- /dev/null +++ b/script/c511002118.lua @@ -0,0 +1,57 @@ +--Clock Knight No. 12 +function c511002118.initial_effect(c) + --coin + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89718302,0)) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002118.tg) + e1:SetOperation(c511002118.op) + c:RegisterEffect(e1) + --coin + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_TOSS_COIN_NEGATE) + e2:SetCondition(c511002118.coincon) + e2:SetOperation(c511002118.coinop) + c:RegisterEffect(e2) +end +function c511002118.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c511002118.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local res=Duel.TossCoin(tp,1) + if res==1 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1200) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + else + Duel.Destroy(c,REASON_EFFECT) + end + end +end +function c511002118.cfilter(c) + return c:IsFaceup() and c:IsCode(511002118) +end +function c511002118.coincon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and e:GetHandler():GetFlagEffect(511002118)==0 + and Duel.IsExistingMatchingCard(c511002118.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c511002118.coinop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(511002118)~=0 then return end + if Duel.SelectYesNo(tp,aux.Stringid(36562627,0)) then + Duel.Hint(HINT_CARD,0,511002118) + e:GetHandler():RegisterFlagEffect(511002118,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.TossCoin(tp,ev) + end +end diff --git a/script/c511002119.lua b/script/c511002119.lua new file mode 100644 index 00000000..e34c2fa3 --- /dev/null +++ b/script/c511002119.lua @@ -0,0 +1,34 @@ +--Mobius Castle +function c511002119.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --selfdestroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c511002119.descon) + c:RegisterEffect(e2) + --Atk/def down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_BEAST+RACE_BEASTWARRIOR+RACE_WINDBEAST+RACE_PLANT+RACE_DINOSAUR+RACE_REPTILE+RACE_INSECT)) + e3:SetValue(-500) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) +end +function c511002119.cfilter(c) + return c:IsFaceup() and c:IsCode(4929256) +end +function c511002119.descon(e) + return not Duel.IsExistingMatchingCard(c511002119.cfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end diff --git a/script/c511002120.lua b/script/c511002120.lua new file mode 100644 index 00000000..7f6b9786 --- /dev/null +++ b/script/c511002120.lua @@ -0,0 +1,66 @@ +--Hyper Burning +function c511002120.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c511002120.condition1) + e1:SetCost(c511002120.cost) + e1:SetOperation(c511002120.activate1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511002120.condition2) + e2:SetOperation(c511002120.activate2) + c:RegisterEffect(e2) +end +function c511002120.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>=Duel.GetLP(tp) +end +function c511002120.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511002120.activate1(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002120.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511002120.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511002120.condition2(e,tp,eg,ep,ev,re,r,rp) + local e1=Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_DAMAGE) + local e2=Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) + local rd=e1 and not e2 + local rr=not e1 and e2 + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) and not rd and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_NO_EFFECT_DAMAGE) + and cv>=Duel.GetLP(tp) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and rr and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_NO_EFFECT_DAMAGE) + and cv>=Duel.GetLP(tp) +end +function c511002120.activate2(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(c511002120.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002120.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end diff --git a/script/c511002121.lua b/script/c511002121.lua new file mode 100644 index 00000000..7666a434 --- /dev/null +++ b/script/c511002121.lua @@ -0,0 +1,72 @@ +--Xyz Imprisonment +function c511002121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002121.condition) + e1:SetTarget(c511002121.target) + e1:SetOperation(c511002121.activate) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(76436988,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002121.damcon) + e2:SetTarget(c511002121.damtg) + e2:SetOperation(c511002121.damop) + c:RegisterEffect(e2) +end +function c511002121.cfilter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsControler(1-tp) and (not e or c:IsRelateToEffect(e)) +end +function c511002121.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002121.cfilter,1,nil,nil,tp) +end +function c511002121.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(eg) +end +function c511002121.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=eg:Filter(c511002121.cfilter,nil,e,tp) + local tc=g:GetFirst() + while tc do + 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_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511002121.rcon) + tc:RegisterEffect(e1,true) + tc=g:GetNext() + end + c:RegisterFlagEffect(511002121,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) +end +function c511002121.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511002121.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511002121)>0 +end +function c511002121.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511002121.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + end +end diff --git a/script/c511002122.lua b/script/c511002122.lua new file mode 100644 index 00000000..fce8138a --- /dev/null +++ b/script/c511002122.lua @@ -0,0 +1,52 @@ +--Xyz Pieces +function c511002122.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002122.condition) + e1:SetTarget(c511002122.target) + e1:SetOperation(c511002122.activate) + c:RegisterEffect(e1) +end +function c511002122.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at and at:IsFaceup() and at:IsControler(tp) and at:IsType(TYPE_XYZ) +end +function c511002122.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(Duel.GetAttackTarget()) +end +function c511002122.filter(c,e,tp) + return c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002122.activate(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if not Duel.NegateAttack() then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511002122.filter,tp,LOCATION_DECK,0,nil,e,tp) + if at and at:IsRelateToEffect(e) and at:IsReleasableByEffect() and g:GetCount()>1 + and Duel.SelectYesNo(tp,aux.Stringid(63014935,2)) then + if Duel.Release(at,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() + end + end +end diff --git a/script/c511002123.lua b/script/c511002123.lua new file mode 100644 index 00000000..c67d7de5 --- /dev/null +++ b/script/c511002123.lua @@ -0,0 +1,38 @@ +--Weaker Overlay +function c511002123.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002123.condition) + e1:SetOperation(c511002123.activate) + c:RegisterEffect(e1) +end +function c511002123.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:IsControler(1-tp) then + a,d=d,a + end + return d and a:IsType(TYPE_XYZ) and a:IsFaceup() and d:IsType(TYPE_XYZ) and d:IsFaceup() and a:IsControler(tp) + and d:IsControler(1-tp) and a:GetOverlayCount()~=d:GetOverlayCount() +end +function c511002123.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d or not a:IsRelateToBattle() or not d:IsRelateToBattle() then return end + local act=a:GetOverlayCount() + local dct=d:GetOverlayCount() + if act==dct then return end + if dct>act then + a,d=d,a + dct,act=act,dct + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(600*act) + d:RegisterEffect(e1) +end diff --git a/script/c511002124.lua b/script/c511002124.lua new file mode 100644 index 00000000..ef929da4 --- /dev/null +++ b/script/c511002124.lua @@ -0,0 +1,32 @@ +--Overlay Stopper +function c511002124.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002124.condition) + e1:SetTarget(c511002124.target) + e1:SetOperation(c511002124.activate) + c:RegisterEffect(e1) +end +function c511002124.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsType(TYPE_XYZ) +end +function c511002124.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local a=Duel.GetAttacker() + if chkc then return chkc==a end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and a and a:IsOnField() and a:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(a) +end +function c511002124.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=Duel.GetAttacker() + if not tg or not tg:IsRelateToEffect(e) or tg:IsStatus(STATUS_ATTACK_CANCELED) + or not Duel.NegateAttack() then return end + if not tg:IsImmuneToEffect(e) and c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(tg,Group.FromCards(c)) + end +end diff --git a/script/c511002125.lua b/script/c511002125.lua new file mode 100644 index 00000000..4fb44736 --- /dev/null +++ b/script/c511002125.lua @@ -0,0 +1,62 @@ +--リジェクト・リボーン +function c511002125.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002125.condition) + e1:SetTarget(c511002125.target) + e1:SetOperation(c511002125.activate) + c:RegisterEffect(e1) + if not c511002125.global_check then + c511002125.global_check=true + c511002125[0]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ATTACK_DISABLED) + ge1:SetOperation(c511002125.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002125.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002125.checkop(e,tp,eg,ep,ev,re,r,rp) + c511002125[0]=c511002125[0]+1 +end +function c511002125.clear(e,tp,eg,ep,ev,re,r,rp) + c511002125[0]=0 +end +function c511002125.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(1-tp) +end +function c511002125.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511002125.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002125.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + if Duel.Destroy(sg,REASON_EFFECT)>0 or sg:GetCount()==0 then + Duel.BreakEffect() + local ct=c511002125[0] + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft=ct then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sumg=g:Select(tp,ct,ct,nil) + Duel.SpecialSummon(sumg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002126.lua b/script/c511002126.lua new file mode 100644 index 00000000..6ff26811 --- /dev/null +++ b/script/c511002126.lua @@ -0,0 +1,32 @@ +--レッド・スプリンター +function c511002126.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14886469,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002126.spcon) + e1:SetTarget(c511002126.sptg) + e1:SetOperation(c511002126.spop) + c:RegisterEffect(e1) +end +function c511002126.spcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c511002126.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002126.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002126.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002126.spop(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,c511002126.filter,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 diff --git a/script/c511002127.lua b/script/c511002127.lua new file mode 100644 index 00000000..1f128442 --- /dev/null +++ b/script/c511002127.lua @@ -0,0 +1,30 @@ +--グラナドラ +function c511002127.initial_effect(c) + --recover? + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(90925163,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002127.condition) + e1:SetTarget(c511002127.target) + e1:SetOperation(c511002127.operation) + c:RegisterEffect(e1) +end +function c511002127.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():IsDefensePos() +end +function c511002127.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) +end +function c511002127.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsPosition(POS_FACEUP_DEFENSE) then + Duel.SetLP(p,Duel.GetLP(p)+d) + end +end \ No newline at end of file diff --git a/script/c511002128.lua b/script/c511002128.lua new file mode 100644 index 00000000..39cfd1e9 --- /dev/null +++ b/script/c511002128.lua @@ -0,0 +1,34 @@ +--Doom Gazer +function c511002128.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511002128.condition) + e1:SetTarget(c511002128.target) + e1:SetOperation(c511002128.operation) + c:RegisterEffect(e1) +end +function c511002128.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0 then + e:SetLabel(tg:FilterCount(Card.IsOnField,nil)) + return true + else + return false + end +end +function c511002128.target(e,tp,eg,ep,ev,re,r,rp,chk) + local dam=e:GetLabel() + if chk==0 then return dam>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam*300) +end +function c511002128.operation(e,tp,eg,ep,ev,re,r,rp) + local dam=e:GetLabel() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,dam*300,REASON_EFFECT) +end diff --git a/script/c511002129.lua b/script/c511002129.lua new file mode 100644 index 00000000..9edec9a5 --- /dev/null +++ b/script/c511002129.lua @@ -0,0 +1,40 @@ +--Reverse Effector +function c511002129.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY+CATEGORY_POSITION+CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BECOME_TARGET) + e1:SetCondition(c511002129.condition) + e1:SetTarget(c511002129.target) + e1:SetOperation(c511002129.activate) + c:RegisterEffect(e1) +end +function c511002129.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) + and tc:IsPosition(POS_FACEDOWN_DEFENSE) and tc:IsLocation(LOCATION_MZONE) +end +function c511002129.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_POSITION,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,tc,1,0,0) +end +function c511002129.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFacedown() then + Duel.ChangePosition(tc,POS_FACEUP_ATTACK) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT) + end +end diff --git a/script/c511002130.lua b/script/c511002130.lua new file mode 100644 index 00000000..2d9fe591 --- /dev/null +++ b/script/c511002130.lua @@ -0,0 +1,27 @@ +--Rendering Tuning +function c511002130.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002130.target) + e1:SetOperation(c511002130.activate) + c:RegisterEffect(e1) +end +function c511002130.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002130.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002130.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511002130.activate(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,c511002130.filter,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 diff --git a/script/c511002131.lua b/script/c511002131.lua new file mode 100644 index 00000000..73523946 --- /dev/null +++ b/script/c511002131.lua @@ -0,0 +1,85 @@ +--Last Chance +function c511002131.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002131.condition) + e1:SetTarget(c511002131.target) + e1:SetOperation(c511002131.activate) + c:RegisterEffect(e1) +end +function c511002131.condition(e,tp,eg,ep,ev,re,r,rp) + return re:GetHandler():IsType(TYPE_COUNTER) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511002131.filter(c,e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then + ft=ft-1 + end + local te=c:GetActivateEffect() + if not te then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return c:IsType(TYPE_COUNTER) and (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) + and (ft>0 or c:IsType(TYPE_FIELD)) +end +function c511002131.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then + ft=ft-1 + end + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511002131.filter(chkc,e,tp,eg,ep,ev,re,r,rp) end + if chk==0 then return Duel.IsExistingTarget(c511002131.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp,eg,ep,ev,re,r,rp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + Duel.SelectTarget(tp,c511002131.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp) +end +function c511002131.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511002132.lua b/script/c511002132.lua new file mode 100644 index 00000000..c4cb304d --- /dev/null +++ b/script/c511002132.lua @@ -0,0 +1,57 @@ +--Panic Burial +function c511002132.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002132.target) + e1:SetOperation(c511002132.activate) + c:RegisterEffect(e1) + if not c511002132.global_check then + c511002132.global_check=true + c511002132[0]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(c511002132.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002132.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002132.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c511002132.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002132.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002132.filter,tp,0,LOCATION_MZONE,1,nil) + and c511002132[0]>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511002132.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,c511002132[0]*100) +end +function c511002132.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local dam=Duel.Damage(1-tp,c511002132[0]*100,REASON_EFFECT) + if dam>0 and tc 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) + e1:SetValue(-dam) + tc:RegisterEffect(e1) + end +end +function c511002132.checkop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(Card.IsType,nil,TYPE_MONSTER) + c511002132[0]=c511002132[0]+ct +end +function c511002132.clear(e,tp,eg,ep,ev,re,r,rp) + c511002132[0]=0 +end diff --git a/script/c511002133.lua b/script/c511002133.lua new file mode 100644 index 00000000..217f905a --- /dev/null +++ b/script/c511002133.lua @@ -0,0 +1,110 @@ +--Hyper Quick! +function c511002133.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000752,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002133.condition) + e1:SetTarget(c511002133.target) + e1:SetOperation(c511002133.operation) + c:RegisterEffect(e1) +end +function c511002133.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_HAND+LOCATION_ONFIELD) +end +function c511002133.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002133.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + local tc=Duel.GetOperatedGroup():GetFirst() + Duel.ConfirmCards(1-p,tc) + if tc:IsType(TYPE_SPELL) and not c:IsType(TYPE_QUICKPLAY) and Duel.SelectYesNo(tp,aux.Stringid(511002133,0)) then + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(TYPE_QUICKPLAY) + e1:SetReset(RESET_EVENT+0x0fe0000) + tc:RegisterEffect(e1) + local te=tc:GetActivateEffect() + if te then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(te:GetCode()) + e2:SetRange(LOCATION_SZONE+LOCATION_HAND) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCondition(c511002133.accon) + if te:GetCost() then + e2:SetCost(te:GetCost()) + end + e2:SetReset(RESET_EVENT+0x0fe0000) + e2:SetTarget(c511002133.actg) + e2:SetOperation(c511002133.acop) + tc:RegisterEffect(e2) + end + end + Duel.ShuffleHand(tp) +end +function c511002133.accon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local c=e:GetHandler() + local te=c:GetActivateEffect() + local condition=te:GetCondition() + return (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511002133.actg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local con=false + if Duel.GetTurnPlayer()~=c:GetControler() then + con=not c:IsStatus(STATUS_SET_TURN) and c:IsFacedown() + else + if Duel.GetCurrentChain()>0 or not (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) then + if c:IsLocation(LOCATION_HAND) then + con=(Duel.GetLocationCount(tp,LOCATION_SZONE)>0 or c:IsType(TYPE_FIELD)) + elseif c:IsLocation(LOCATION_SZONE) then + con=not c:IsStatus(STATUS_SET_TURN) and c:IsFacedown() + end + end + end + local te=c:GetActivateEffect() + local target=te:GetTarget() + local tpe=c:GetType() + if chk==0 then return con and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) end + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 and Duel.SendtoGrave(of,REASON_RULE)==0 then Duel.SendtoGrave(c,REASON_RULE) end + end + if c:IsLocation(LOCATION_ONFIELD) and c:IsFacedown() then + Duel.ChangePosition(c,POS_FACEUP) + else + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + c:CreateEffectRelation(te) + if target then target(te,tp,eg,ep,ev,re,r,rp,1) end +end +function c511002133.acop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local te=c:GetActivateEffect() + local op=te:GetOperation() + local tpe=c:GetType() + if op then + c:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + c:CancelToGrave(false) + end + c:ReleaseEffectRelation(te) + if op then op(te,tp,eg,ep,ev,re,r,rp) end + end +end diff --git a/script/c511002134.lua b/script/c511002134.lua new file mode 100644 index 00000000..4a3aa6a0 --- /dev/null +++ b/script/c511002134.lua @@ -0,0 +1,40 @@ +--Battle Rush +function c511002134.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002134.condition) + e1:SetOperation(c511002134.activate) + c:RegisterEffect(e1) +end +function c511002134.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:IsControler(1-tp) then + a,d=d,a + end + return d and a:IsControler(tp) and d:IsControler(1-tp) +end +function c511002134.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return end + if a:IsControler(1-tp) then + a,d=d,a + end + if not a:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + a:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + a:RegisterEffect(e2,true) +end diff --git a/script/c511002135.lua b/script/c511002135.lua new file mode 100644 index 00000000..0c2b43c0 --- /dev/null +++ b/script/c511002135.lua @@ -0,0 +1,18 @@ +--アンノウン・シンクロン +function c511002135.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002135.spcon) + c:RegisterEffect(e1) +end +function c511002135.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil)==0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE,nil)>0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end diff --git a/script/c511002136.lua b/script/c511002136.lua new file mode 100644 index 00000000..083d5cf2 --- /dev/null +++ b/script/c511002136.lua @@ -0,0 +1,61 @@ +--スチーム・シンクロン +function c511002136.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(53855409,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002136.spcon) + e1:SetTarget(c511002136.sptg) + e1:SetOperation(c511002136.spop) + c:RegisterEffect(e1) + --synchro effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(83295594,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,0x1c0+TIMING_MAIN_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511002136.sccon) + e2:SetTarget(c511002136.sctarg) + e2:SetOperation(c511002136.scop) + c:RegisterEffect(e2) +end +function c511002136.gfilter(c) + return c:GetCode()~=83295594 +end +function c511002136.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002136.gfilter,1,nil,tp) +end +function c511002136.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002136.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511002136.sccon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetTurnPlayer()~=tp + and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) +end +function c511002136.sctarg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,1,nil,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002136.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetControler()~=tp or not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,nil,c) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SynchroSummon(tp,sg:GetFirst(),c) + end +end diff --git a/script/c511002137.lua b/script/c511002137.lua new file mode 100644 index 00000000..0bd2484e --- /dev/null +++ b/script/c511002137.lua @@ -0,0 +1,31 @@ +--Clockwork +function c511002137.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002137.target) + e1:SetOperation(c511002137.activate) + c:RegisterEffect(e1) +end +function c511002137.filter(c,lv) + return c:GetLevel()>lv and c:IsFaceup() and c:IsCode(511002118) +end +function c511002137.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP) and c:IsCode(511002118) + and Duel.IsExistingMatchingCard(c511002137.filter,tp,LOCATION_MZONE,0,1,nil,c:GetLevel()) +end +function c511002137.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002137.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002137.activate(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,c511002137.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 diff --git a/script/c511002138.lua b/script/c511002138.lua new file mode 100644 index 00000000..d09e11f2 --- /dev/null +++ b/script/c511002138.lua @@ -0,0 +1,59 @@ +--Switch Off +function c511002138.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002138.target) + e1:SetOperation(c511002138.activate) + c:RegisterEffect(e1) +end +function c511002138.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsType(TYPE_CONTINUOUS) and not c:IsDisabled() +end +function c511002138.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and c511002138.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002138.filter,tp,0,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511002138.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_POSITION,nil,1,0,0) +end +function c511002138.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectMatchingCard(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.ChangePosition(g,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end + end +end diff --git a/script/c511002139.lua b/script/c511002139.lua new file mode 100644 index 00000000..d2634203 --- /dev/null +++ b/script/c511002139.lua @@ -0,0 +1,30 @@ +--Buster Trap +function c511002139.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002139.condition) + e1:SetTarget(c511002139.target) + e1:SetOperation(c511002139.operation) + c:RegisterEffect(e1) +end +function c511002139.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511002139.filter(c,tp) + return c:IsFaceup() and c:IsControler(1-tp) and c:IsOnField() and c:IsDestructable() +end +function c511002139.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511002139.filter,1,nil,tp) end + local g=eg:Filter(c511002139.filter,nil,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002139.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)>0 then + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511002140.lua b/script/c511002140.lua new file mode 100644 index 00000000..19b29567 --- /dev/null +++ b/script/c511002140.lua @@ -0,0 +1,70 @@ +--Rainbow Blessing +function c511002140.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002140.cost) + e1:SetTarget(c511002140.target) + e1:SetOperation(c511002140.activate) + c:RegisterEffect(e1) +end +function c511002140.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511002140.filter(c) + return c:IsFaceup() and c:IsCode(47408488) +end +function c511002140.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckLPCost(tp,1000) and Duel.IsExistingMatchingCard(c511002140.filter,tp,LOCATION_ONFIELD,0,1,nil) end + local lp=Duel.GetLP(tp) + local t={} + local f=math.floor((lp)/1000) + local l=1 + while l<=f and l<=20 do + t[l]=l*1000 + l=l+1 + end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(17078030,0)) + local announce=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.PayLPCost(tp,announce) + Duel.SetTargetParam(announce/1000) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,g,1,0x6,announce/1000) +end +function c511002140.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local g=Duel.GetMatchingGroup(c511002140.filter,tp,LOCATION_ONFIELD,0,nil) + if g:GetCount()<=0 then return end + if g:GetCount()==1 then + local sc=Duel.GetFirstMatchingCard(c511002140.filter,tp,LOCATION_ONFIELD,0,nil) + Duel.HintSelection(Group.FromCards(sc)) + sc:AddCounter(0x6,ct) + else + while g:GetCount()>1 and ct>0 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local sg=g:Select(tp,1,1,nil) + local sc=sg:GetFirst() + local t={} + local i=1 + local lv=e:GetHandler():GetLevel() + for i=1,ct do + t[i]=i + end + local tempct=Duel.AnnounceNumber(tp,table.unpack(t)) + ct=ct-tempct + Duel.HintSelection(sg) + sc:AddCounter(0x6,tempct) + g:RemoveCard(sc) + end + if g:GetCount()==1 and ct>0 then + local sc=g:GetFirst() + Duel.HintSelection(Group.FromCards(sc)) + sc:AddCounter(0x6,ct) + end + end +end diff --git a/script/c511002141.lua b/script/c511002141.lua new file mode 100644 index 00000000..a8dfff0e --- /dev/null +++ b/script/c511002141.lua @@ -0,0 +1,65 @@ +--The One to be Protected +function c511002141.initial_effect(c) + --defup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002141.condition) + e1:SetCost(c511002141.cost) + e1:SetTarget(c511002141.target) + e1:SetOperation(c511002141.operation) + c:RegisterEffect(e1) +end +function c511002141.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a:IsControler(1-tp) +end +function c511002141.cfilter(c,atk) + return c:IsAbleToGraveAsCost() and c:GetAttack()>atk +end +function c511002141.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511002141.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511002141.cfilter,tp,LOCATION_DECK,0,1,nil,Duel.GetAttacker():GetAttack()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=Duel.SelectMatchingCard(tp,c511002141.cfilter,tp,LOCATION_DECK,0,1,1,nil,Duel.GetAttacker():GetAttack()) + local atk=sg:GetFirst():GetAttack() + Duel.SendtoGrave(sg,REASON_COST) + Duel.SetTargetParam(atk) +end +function c511002141.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if not d or not d:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + d:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + d:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLED) + e3:SetOperation(c511002141.damop) + e3:SetLabel(Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + e3:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e3,tp) +end +function c511002141.damop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()>0 then + Duel.Hint(HINT_CARD,0,511002141) + Duel.Damage(tp,e:GetLabel(),REASON_EFFECT) + end +end diff --git a/script/c511002142.lua b/script/c511002142.lua new file mode 100644 index 00000000..92383e60 --- /dev/null +++ b/script/c511002142.lua @@ -0,0 +1,31 @@ +--Thousand Strings +function c511002142.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002142.condition) + e1:SetTarget(c511002142.target) + e1:SetOperation(c511002142.activate) + c:RegisterEffect(e1) +end +function c511002142.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511002142.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511002142.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002143.lua b/script/c511002143.lua new file mode 100644 index 00000000..c0d130ae --- /dev/null +++ b/script/c511002143.lua @@ -0,0 +1,39 @@ +--Yoshitsune the Goblin of Beauty +function c511002143.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79409334,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002143.condition) + e1:SetTarget(c511002143.target) + e1:SetOperation(c511002143.operation) + 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_INDESTRUCTABLE_COUNT) + e2:SetCountLimit(1) + e2:SetValue(c511002143.valcon) + c:RegisterEffect(e2) +end +function c511002143.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and a:IsAttackAbove(1000) +end +function c511002143.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c511002143.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c511002143.valcon(e,re,r,rp) + return e:GetHandler():IsDefensePos() and bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c511002144.lua b/script/c511002144.lua new file mode 100644 index 00000000..4cdd8e1c --- /dev/null +++ b/script/c511002144.lua @@ -0,0 +1,28 @@ +--Shizuka the Heavenly Dancer +function c511002144.initial_effect(c) + --gain lp + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79409334,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002144.condition) + e1:SetTarget(c511002144.target) + e1:SetOperation(c511002144.operation) + c:RegisterEffect(e1) +end +function c511002144.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) +end +function c511002144.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,600) +end +function c511002144.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c511002145.lua b/script/c511002145.lua new file mode 100644 index 00000000..5dbbd7b1 --- /dev/null +++ b/script/c511002145.lua @@ -0,0 +1,32 @@ +--Battle Claw Fox +function c511002145.initial_effect(c) + --atk limit + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(31173519,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511002145.condition) + e1:SetOperation(c511002145.operation) + c:RegisterEffect(e1) +end +function c511002145.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + return tc and not tc:IsStatus(STATUS_BATTLE_DESTROYED) and tc:IsControler(1-tp) +end +function c511002145.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if not tc or not tc:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c511002145.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + tc:RegisterEffect(e1) +end +function c511002145.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511002145) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511002146.lua b/script/c511002146.lua new file mode 100644 index 00000000..9519be51 --- /dev/null +++ b/script/c511002146.lua @@ -0,0 +1,62 @@ +--New Year Drum +function c511002146.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(c511002146.target) + e1:SetOperation(c511002146.operation) + c:RegisterEffect(e1) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetCondition(c511002146.spcon) + e2:SetTarget(c511002146.sptg) + e2:SetOperation(c511002146.spop) + e2:SetRange(LOCATION_SZONE) + 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 c511002146.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 c511002146.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 c511002146.spcon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d==e:GetHandler():GetEquipTarget() +end +function c511002146.filter(c,e,tp) + return c:IsCode(511002145) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002146.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002146.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002146.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.ChangeAttackTarget(g:GetFirst()) + end +end diff --git a/script/c511002147.lua b/script/c511002147.lua new file mode 100644 index 00000000..889b665f --- /dev/null +++ b/script/c511002147.lua @@ -0,0 +1,27 @@ +--Mosquito Force +function c511002147.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(13839120,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002147.tg) + e1:SetOperation(c511002147.op) + c:RegisterEffect(e1) +end +function c511002147.filter(c) + return c:IsCode(511002147) and c:IsAbleToHand() +end +function c511002147.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002147.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002147.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstMatchingCard(c511002147.filter,tp,LOCATION_DECK,0,nil) + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511002148.lua b/script/c511002148.lua new file mode 100644 index 00000000..6ccf918d --- /dev/null +++ b/script/c511002148.lua @@ -0,0 +1,36 @@ +--Mosquito Commando +function c511002148.initial_effect(c) + --counter + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002148.con) + e1:SetCost(c511002148.cost) + e1:SetTarget(c511002148.tg) + e1:SetOperation(c511002148.op) + c:RegisterEffect(e1) +end +function c511002148.cfilter(c) + return c:IsFaceup() and c:IsCode(511001339) +end +function c511002148.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002148.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511002148.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511002148.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,g,1,0x1101,1) +end +function c511002148.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + tc:AddCounter(0x1101,1) + end +end diff --git a/script/c511002149.lua b/script/c511002149.lua new file mode 100644 index 00000000..7bd6d3df --- /dev/null +++ b/script/c511002149.lua @@ -0,0 +1,54 @@ +--Shark Splash +function c511002149.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511002149.condition) + e1:SetTarget(c511002149.target) + e1:SetOperation(c511002149.activate) + c:RegisterEffect(e1) +end +c511002149.collection={ + [13429800]=true;[34290067]=true;[10532969]=true;[71923655]=true;[32393580]=true; + [810000016]=true;[20358953]=true;[37798171]=true;[70101178]=true;[23536866]=true; + [7500772]=true;[511001410]=true;[69155991]=true;[37792478]=true;[17201174]=true; + [44223284]=true;[70655556]=true;[63193879]=true;[25484449]=true;[810000026]=true; + [17643265]=true;[64319467]=true;[810000030]=true;[810000008]=true;[20838380]=true; + [87047161]=true;[80727036]=true;[28593363]=true;[50449881]=true;[49221191]=true; + [65676461]=true;[440556]=true;[511001273]=true;[31320433]=true;[5014629]=true; + [14306092]=true;[84224627]=true;[511001163]=true;[511001169]=true;[511001858]=true; +} +function c511002149.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_ONFIELD) and c511002149.collection[c:GetCode()] and c:IsType(TYPE_MONSTER) + and c:IsControler(tp) and c:GetPreviousControler()==tp +end +function c511002149.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511002149.cfilter,nil,tp) + return g:GetCount()==1 +end +function c511002149.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=eg:Filter(c511002149.cfilter,nil,tp):GetFirst() + if chk==0 then return tc:IsCanBeEffectTarget(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()-1000) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) +end +function c511002149.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + local atk=tc:GetAttack() + if atk<=0 then return end + Duel.BreakEffect() + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c511002150.lua b/script/c511002150.lua new file mode 100644 index 00000000..ce73d7a1 --- /dev/null +++ b/script/c511002150.lua @@ -0,0 +1,36 @@ +--Resurrection March +function c511002150.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002150.condition) + e1:SetTarget(c511002150.target) + e1:SetOperation(c511002150.activate) + c:RegisterEffect(e1) +end +function c511002150.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x6d) and c:IsType(TYPE_XYZ) +end +function c511002150.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002150.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002150.filter(c,e,tp) + return c:IsSetCard(0x6d) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002150.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002150.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002150.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002150.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002150.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002151.lua b/script/c511002151.lua new file mode 100644 index 00000000..6a726e3a --- /dev/null +++ b/script/c511002151.lua @@ -0,0 +1,45 @@ +--Numbers Impact +function c511002151.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002151.condition) + e1:SetTarget(c511002151.target) + e1:SetOperation(c511002151.activate) + c:RegisterEffect(e1) +end +function c511002151.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:IsControler(1-tp) then + a,d=d,a + end + return d and a:IsControler(tp) and a:IsSetCard(0x48) and d:IsControler(1-tp) and a:GetAttack()+1000<=d:GetAttack() +end +function c511002151.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:IsControler(1-tp) then + a,d=d,a + end + if chkc then return chkc==a end + if chk==0 then return a:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(a) +end +function c511002151.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local bc=tc:GetBattleTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and bc:IsRelateToBattle() and bc:IsControler(1-tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(bc:GetAttack()) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002152.lua b/script/c511002152.lua new file mode 100644 index 00000000..a4ae933c --- /dev/null +++ b/script/c511002152.lua @@ -0,0 +1,34 @@ +--Djinn Orchestra +function c511002152.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002152.target) + e1:SetOperation(c511002152.activate) + c:RegisterEffect(e1) +end +function c511002152.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x6d) and c:IsType(TYPE_XYZ) +end +function c511002152.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c511002152.cfilter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002152.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local atkg=Duel.GetMatchingGroup(c511002152.cfilter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()==0 or atkg:GetCount()==0 then return end + local atk=atkg:GetSum(Card.GetAttack) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-atk) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002153.lua b/script/c511002153.lua new file mode 100644 index 00000000..ca86a51d --- /dev/null +++ b/script/c511002153.lua @@ -0,0 +1,56 @@ +--Lancelot, Knight of the Lake +function c511002153.initial_effect(c) + --effect gain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c511002153.efcon) + e1:SetOperation(c511002153.efop) + c:RegisterEffect(e1) +end +function c511002153.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c511002153.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(3606728,1)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002153.atkcon) + e1:SetTarget(c511002153.atktg) + e1:SetOperation(c511002153.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c511002153.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c511002153.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511002153.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(-800) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002154.lua b/script/c511002154.lua new file mode 100644 index 00000000..078cd4f6 --- /dev/null +++ b/script/c511002154.lua @@ -0,0 +1,71 @@ +--Bubble Rod +function c511002154.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(c511002154.target) + e1:SetOperation(c511002154.operation) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(800) + 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(c511002154.eqlimit) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(100000169,0)) + e4:SetCategory(CATEGORY_DRAW) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c511002154.drcon) + e4:SetTarget(c511002154.drtg) + e4:SetOperation(c511002154.drop) + c:RegisterEffect(e4) +end +function c511002154.eqlimit(e,c) + return c:IsCode(79979666) +end +function c511002154.filter(c) + return c:IsFaceup() and c:IsCode(79979666) +end +function c511002154.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002154.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002154.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002154.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002154.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 c511002154.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + if not ec then return end + return c:IsReason(REASON_LOST_TARGET) and ec:IsReason(REASON_DESTROY) +end +function c511002154.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002154.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002155.lua b/script/c511002155.lua new file mode 100644 index 00000000..add9f019 --- /dev/null +++ b/script/c511002155.lua @@ -0,0 +1,52 @@ +--Dark Alligator +function c511002155.initial_effect(c) + --summon with 3 tribute + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(78651105,1)) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SUMMON_PROC) + e3:SetCondition(c511002155.ttcon) + e3:SetOperation(c511002155.ttop) + e3:SetValue(SUMMON_TYPE_ADVANCE+1) + c:RegisterEffect(e3) + --sp summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(78651105,2)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetCondition(c511002155.spcon) + e4:SetTarget(c511002155.sptg) + e4:SetOperation(c511002155.spop) + c:RegisterEffect(e4) +end +function c511002155.ttcon(e,c) + if c==nil then return true end + return Duel.GetTributeCount(c)>=4 +end +function c511002155.ttop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectTribute(tp,c,4,4) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c511002155.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE+1 +end +function c511002155.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511002155.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<2 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511002156,0,0x4011,2000,0,4,RACE_REPTILE,0) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,511002156) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002157.lua b/script/c511002157.lua new file mode 100644 index 00000000..5ee71ffc --- /dev/null +++ b/script/c511002157.lua @@ -0,0 +1,45 @@ +--Anti the Abyss +function c511002157.initial_effect(c) + -- Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511002157,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002157.condition) + e1:SetCost(c511002157.cost) + e1:SetTarget(c511002157.target) + e1:SetOperation(c511002157.operation) + c:RegisterEffect(e1) +end +function c511002157.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at and at:IsControler(tp) +end +function c511002157.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002157.target(e,tp,eg,ep,ev,re,r,rp,chk) + local at=Duel.GetAttackTarget() + if chk==0 then return true end + Duel.SetTargetCard(at) +end +function c511002157.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and a:IsRelateToBattle() and a:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(a:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002158.lua b/script/c511002158.lua new file mode 100644 index 00000000..ed1b7836 --- /dev/null +++ b/script/c511002158.lua @@ -0,0 +1,34 @@ +--Anti the Earth +function c511002158.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(15341821,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002158.condition) + e1:SetTarget(c511002158.target) + e1:SetOperation(c511002158.operation) + c:RegisterEffect(e1) +end +function c511002158.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511002158.filter(c,e,tp) + return c:IsCode(52085072) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511002158.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002158.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002158.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002158.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002158.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c511002159.lua b/script/c511002159.lua new file mode 100644 index 00000000..83a569a2 --- /dev/null +++ b/script/c511002159.lua @@ -0,0 +1,31 @@ +--Anti the Sky +function c511002159.initial_effect(c) + --pos + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002159.condition) + e1:SetCost(c511002159.cost) + e1:SetTarget(c511002159.target) + e1:SetOperation(c511002159.operation) + c:RegisterEffect(e1) +end +function c511002159.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002159.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002159.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttacker():IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttacker(),1,0,0) +end +function c511002159.operation(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + if at:IsAttackPos() and at:IsRelateToBattle() then + Duel.Destroy(at,REASON_EFFECT) + end +end diff --git a/script/c511002160.lua b/script/c511002160.lua new file mode 100644 index 00000000..1710bd92 --- /dev/null +++ b/script/c511002160.lua @@ -0,0 +1,43 @@ +--Strain Endo +function c511002160.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000609,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c511002160.con) + e1:SetTarget(c511002160.tg) + e1:SetOperation(c511002160.op) + c:RegisterEffect(e1) +end +function c511002160.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)0 or dg:GetCount()==0 then + Duel.BreakEffect() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=spg:Select(tp,ft,ft,nil) + if sp:GetCount()>0 then + ft=ft-sp:GetCount() + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002161.lua b/script/c511002161.lua new file mode 100644 index 00000000..6e3da4c2 --- /dev/null +++ b/script/c511002161.lua @@ -0,0 +1,51 @@ +--Counter Meowsure +function c511002161.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511002161.condition) + e1:SetTarget(c511002161.target) + e1:SetOperation(c511002161.activate) + c:RegisterEffect(e1) +end +function c511002161.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsType(TYPE_TRAP) +end +function c511002161.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002161.cfilter,1,nil,tp) +end +function c511002161.filter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511002161.afilter(c) + return c:IsFaceup() and c:IsSetCard(0x305) +end +function c511002161.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511002161.filter(chkc) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(c511002161.filter,tp,0,LOCATION_ONFIELD,1,nil) + and Duel.IsExistingMatchingCard(c511002161.afilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511002161.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002161.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511002161.afilter,tp,LOCATION_MZONE,0,1,1,nil) + local tg=g:GetFirst() + if tg then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tg:GetAttack()*2) + tg:RegisterEffect(e1) + end + end +end diff --git a/script/c511002162.lua b/script/c511002162.lua new file mode 100644 index 00000000..c284c12f --- /dev/null +++ b/script/c511002162.lua @@ -0,0 +1,31 @@ +--Celestial Mage +function c511002162.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511002162,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DESTROYED) + e2:SetTarget(c511002162.drtg) + e2:SetOperation(c511002162.drop) + c:RegisterEffect(e2) +end +function c511002162.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002162.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002163.lua b/script/c511002163.lua new file mode 100644 index 00000000..28d80c21 --- /dev/null +++ b/script/c511002163.lua @@ -0,0 +1,72 @@ +--Oily Cicada +function c511002163.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCondition(c511002163.con) + e1:SetCode(511001225) + c:RegisterEffect(e1) + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetOperation(c511002163.regop) + c:RegisterEffect(e2) + if not c511002163.global_check then + c511002163.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002163.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002163.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511002163.con(e) + return e:GetHandler():GetFlagEffect(511002163)>0 +end +function c511002163.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511002163,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) +end diff --git a/script/c511002164.lua b/script/c511002164.lua new file mode 100644 index 00000000..9df93801 --- /dev/null +++ b/script/c511002164.lua @@ -0,0 +1,114 @@ +--Shade of the King +function c511002164.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002164.condition) + e1:SetTarget(c511002164.target) + e1:SetOperation(c511002164.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511002164.condition2) + c:RegisterEffect(e2) +end +function c511002164.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if not tc:IsType(TYPE_XYZ) or tc:GetRank()<=7 then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + if not tc or not bc or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + if tc:GetRank()<=7 or not tc:IsType(TYPE_XYZ) then return false end + if bc:GetRank()>7 and bc:IsType(TYPE_XYZ) then return false end + e:SetLabelObject(tc) + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if tc:IsAttackPos() then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + else + return bc:GetDefense()>tc:GetDefense() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end + end + else + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end +end +function c511002164.cfilter(c,e) + return c:IsOnField() and c:IsType(TYPE_XYZ) and c:GetRank()>=8 and (not e or c:IsRelateToEffect(e)) +end +function c511002164.condition2(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if tg==nil then return false end + local g=tg:Filter(c511002164.cfilter,nil,nil) + if ex and g:GetCount()==1 then + e:SetLabelObject(g:GetFirst()) + return true + else + return false + end +end +function c511002164.filter2(c,e,tp,mc,rk,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return c:GetRank()==rk and mc:IsCanBeXyzMaterial(c) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002164.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and Duel.IsExistingMatchingCard(c511002164.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetCode()) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002164.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end + if tc:IsControler(1-tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if tc:IsControler(tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002164.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.SendtoGrave(mg,REASON_RULE) + end + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_CHAIN) + sc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + sc:RegisterEffect(e2) + end +end diff --git a/script/c511002165.lua b/script/c511002165.lua new file mode 100644 index 00000000..d5673525 --- /dev/null +++ b/script/c511002165.lua @@ -0,0 +1,31 @@ +--Cicada Force +function c511002165.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002165.condition) + e1:SetTarget(c511002165.target) + e1:SetOperation(c511002165.activate) + c:RegisterEffect(e1) +end +function c511002165.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x217) +end +function c511002165.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) + and Duel.IsExistingMatchingCard(c511002165.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002165.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511002165.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002165.filter,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c511002165.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511002165.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511002165.filter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511002166.lua b/script/c511002166.lua new file mode 100644 index 00000000..dc02f439 --- /dev/null +++ b/script/c511002166.lua @@ -0,0 +1,63 @@ +--催眠術 +function c511002166.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002166.target) + e1:SetOperation(c511002166.activate) + c:RegisterEffect(e1) +end +function c511002166.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,0,0) +end +function c511002166.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_TRIGGER) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DISABLE_EFFECT) + e5:SetValue(RESET_TURN_SET) + e5:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e5) + if tc:IsType(TYPE_TRAPMONSTER) then + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e6:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e6) + end + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_UPDATE_ATTACK) + e7:SetReset(RESET_EVENT+0x1fe0000) + e7:SetValue(-800) + tc:RegisterEffect(e7) + end +end diff --git a/script/c511002167.lua b/script/c511002167.lua new file mode 100644 index 00000000..eab21b3b --- /dev/null +++ b/script/c511002167.lua @@ -0,0 +1,95 @@ +--闇晦ましの城 +function c511002167.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511002167.operation) + c:RegisterEffect(e1) +end +function c511002167.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_HAND,0,nil,TYPE_MONSTER) + if g:GetCount()<=0 then return end + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511002167)==0 then + tc:RegisterFlagEffect(511002167,RESET_PHASE+PHASE_END,0,1) + --no tribute + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(10000080,1)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SET_PROC) + e1:SetCondition(c511002167.ntcon) + e1:SetOperation(c511002167.ntop) + e1:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + --1 tribute + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(10000080,1)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c511002167.tcon) + e2:SetOperation(c511002167.top) + e2:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + --2 tribute + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetDescription(aux.Stringid(10000080,1)) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LIMIT_SET_PROC) + e3:SetCondition(c511002167.ttcon) + e3:SetOperation(c511002167.ttop) + e3:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end +end +function c511002167.spchk(c) + return c:IsFaceup() and not c:IsStatus(STATUS_DISABLED) and c:GetOriginalCode()==511002167 +end +function c511002167.ntcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and c:GetLevel()<=4 +end +function c511002167.ntop(e,tp,eg,ep,ev,re,r,rp,c) + if Duel.IsExistingMatchingCard(c511002167.spchk,tp,LOCATION_MZONE,0,1,nil) then + e:SetTargetRange(POS_FACEDOWN,0) + else + e:SetTargetRange(POS_FACEDOWN_DEFENSE,0) + end +end +function c511002167.tcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 and (c:GetLevel()==5 or c:GetLevel()==6) + and Duel.GetTributeCount(c)>=1 +end +function c511002167.top(e,tp,eg,ep,ev,re,r,rp,c) + if Duel.IsExistingMatchingCard(c511002167.spchk,tp,LOCATION_MZONE,0,1,nil) then + e:SetTargetRange(POS_FACEDOWN,0) + else + e:SetTargetRange(POS_FACEDOWN_DEFENSE,0) + end + local g=Duel.SelectTribute(tp,c,1,1) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c511002167.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-2 and Duel.GetTributeCount(c)>=2 + and c:GetLevel()>=7 +end +function c511002167.ttop(e,tp,eg,ep,ev,re,r,rp,c) + if Duel.IsExistingMatchingCard(c511002167.spchk,tp,LOCATION_MZONE,0,1,nil) then + e:SetTargetRange(POS_FACEDOWN,0) + else + e:SetTargetRange(POS_FACEDOWN_DEFENSE,0) + end + local g=Duel.SelectTribute(tp,c,2,2) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end diff --git a/script/c511002168.lua b/script/c511002168.lua new file mode 100644 index 00000000..98c56587 --- /dev/null +++ b/script/c511002168.lua @@ -0,0 +1,28 @@ +--Dragon Cry +function c511002168.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(c511002168.condition) + e1:SetOperation(c511002168.activate) + c:RegisterEffect(e1) +end +function c511002168.cfilter(c) + return c:IsFaceup() and c:IsLevelBelow(4) and c:IsRace(RACE_DRAGON) +end +function c511002168.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return tp~=Duel.GetTurnPlayer() and bit.band(ph,PHASE_MAIN2+PHASE_END)==0 + and Duel.IsExistingMatchingCard(c511002168.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002168.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 diff --git a/script/c511002169.lua b/script/c511002169.lua new file mode 100644 index 00000000..f5a7fd91 --- /dev/null +++ b/script/c511002169.lua @@ -0,0 +1,48 @@ +--Durability (Dragon's Endurance) +function c511002169.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002169.condition) + e1:SetCost(c511002169.cost) + e1:SetTarget(c511002169.target) + e1:SetOperation(c511002169.activate) + c:RegisterEffect(e1) +end +function c511002169.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsFaceup() and d:IsRace(RACE_DRAGON) +end +function c511002169.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk==0 then return d:GetAttack()>1 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(d:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + d:RegisterEffect(e1) +end +function c511002169.target(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk==0 then return true end + Duel.SetTargetCard(d) +end +function c511002169.activate(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d and d:IsFaceup() and d:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + d:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + d:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_NO_BATTLE_DAMAGE) + d:RegisterEffect(e3) + end +end diff --git a/script/c511002170.lua b/script/c511002170.lua new file mode 100644 index 00000000..a7270a10 --- /dev/null +++ b/script/c511002170.lua @@ -0,0 +1,58 @@ +--Reverse-Time +function c511002170.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c511002170.condition) + e1:SetTarget(c511002170.target) + e1:SetOperation(c511002170.activate) + c:RegisterEffect(e1) +end +function c511002170.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END and Duel.GetTurnPlayer()~=tp +end +function c511002170.filter(c,tid) + return c:GetTurnID()==tid and c:IsAbleToRemove() +end +function c511002170.filter2(c,tid) + return c:GetTurnID()==tid and c:IsReason(REASON_DESTROY) and c:IsType(TYPE_MONSTER) +end +function c511002170.tpchk(c,tp) + return c:GetPreviousControler()==tp +end +function c511002170.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chk==0 then return Duel.IsExistingMatchingCard(c511002170.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tid) + or (Duel.IsExistingMatchingCard(c511002170.filter2,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,tid)) end + local sg=Duel.GetMatchingGroup(c511002170.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tid) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,sg,sg:GetCount(),0,0) +end +function c511002170.activate(e,tp,eg,ep,ev,re,r,rp) + local tid=Duel.GetTurnCount() + local sg=Duel.GetMatchingGroup(c511002170.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tid) + if sg:GetCount()>0 then + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) + end + local g=Duel.GetMatchingGroup(c511002170.filter2,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tid) + if g:GetCount()>0 then + local g1=g:Filter(c511002170.tpchk,nil,tp) + local g2=g:Filter(c511002170.tpchk,nil,1-tp) + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ft2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if g1:GetCount()>ft1 then + g1=g1:Select(tp,ft1,ft1,nil) + end + if g2:GetCount()>ft2 then + g2=g2:Select(1-tp,ft2,ft2,nil) + end + g1:Merge(g2) + local tc=g1:GetFirst() + while tc do + Duel.MoveToField(tc,tc:GetPreviousControler(),tc:GetPreviousControler(),LOCATION_MZONE,tc:GetPreviousPosition(),true) + tc=g1:GetNext() + end + end +end diff --git a/script/c511002175.lua b/script/c511002175.lua new file mode 100644 index 00000000..774addb9 --- /dev/null +++ b/script/c511002175.lua @@ -0,0 +1,31 @@ +--Burning Dragon +function c511002175.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2158562,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511002175.destg) + e1:SetOperation(c511002175.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002175.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511002175.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511002175.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0,nil) +end +function c511002175.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002175.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511002176.lua b/script/c511002176.lua new file mode 100644 index 00000000..f062132d --- /dev/null +++ b/script/c511002176.lua @@ -0,0 +1,25 @@ +--Guivre +function c511002176.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74440055,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(aux.bdocon) + e1:SetTarget(c511002176.target) + e1:SetOperation(c511002176.operation) + c:RegisterEffect(e1) +end +function c511002176.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,tp,0) +end +function c511002176.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002177,0,0x4011,0,0,1,RACE_DRAGON,0,POS_FACEUP,tp) then + local token=Duel.CreateToken(tp,511002177) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002178.lua b/script/c511002178.lua new file mode 100644 index 00000000..b124b601 --- /dev/null +++ b/script/c511002178.lua @@ -0,0 +1,37 @@ +--Hurricane Dragon +function c511002178.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002178.atcon) + e1:SetCost(c511002178.atcost) + e1:SetOperation(c511002178.atop) + c:RegisterEffect(e1) +end +function c511002178.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 and not e:GetHandler():IsHasEffect(EFFECT_ATTACK_ALL) +end +function c511002178.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return true end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511002178.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ATTACK_ALL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002179.lua b/script/c511002179.lua new file mode 100644 index 00000000..ee1cb2b0 --- /dev/null +++ b/script/c511002179.lua @@ -0,0 +1,35 @@ +--Wish Dragon +function c511002179.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511002179,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002179.cost) + e1:SetTarget(c511002179.target) + e1:SetOperation(c511002179.operation) + c:RegisterEffect(e1) +end +function c511002179.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511002179.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002180,0,0x4011,0,0,1,RACE_DRAGON,0) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511002179.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002180,0,0x4011,0,0,1,RACE_DRAGON,0) then + for i=1,2 do + local token=Duel.CreateToken(tp,511002180) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002181.lua b/script/c511002181.lua new file mode 100644 index 00000000..b3dd3fab --- /dev/null +++ b/script/c511002181.lua @@ -0,0 +1,84 @@ +--Mantra's Curse-Binding +function c511002181.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002181.cost) + e1:SetTarget(c511002181.target) + e1:SetOperation(c511002181.activate) + c:RegisterEffect(e1) + --reuse + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002181.tgcon) + e2:SetCost(c511002181.cost) + e2:SetTarget(c511002181.target) + e2:SetOperation(c511002181.activate) + c:RegisterEffect(e2) + --atkdown + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(12117532,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511002181.atkcon) + e3:SetOperation(c511002181.atkop) + c:RegisterEffect(e3) +end +function c511002181.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c511002181.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511002181.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + 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_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511002181.rcon) + tc:RegisterEffect(e1,true) + end +end +function c511002181.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511002181.tgcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFirstCardTarget()==nil and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511002181.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetFirstCardTarget()~=nil +end +function c511002181.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=c:GetFirstCardTarget() + if tc then + 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:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511002181.rcon) + tc:RegisterEffect(e1,true) + end +end diff --git a/script/c511002182.lua b/script/c511002182.lua new file mode 100644 index 00000000..c566efe4 --- /dev/null +++ b/script/c511002182.lua @@ -0,0 +1,52 @@ +--Blizzard Wall +function c511002182.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002182.target) + e1:SetOperation(c511002182.activate) + c:RegisterEffect(e1) + if not c511002182.global_check then + c511002182.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BE_BATTLE_TARGET) + ge1:SetOperation(c511002182.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002182.filter(c) + return c:GetFlagEffect(511002182)>0 +end +function c511002182.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002182.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002182.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,c511002182.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511002182.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetOperation(c511002182.ctop) + tc:RegisterEffect(e1) + end +end +function c511002182.ctop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttacker() and e:GetHandler():GetReasonCard() and e:GetHandler():GetReasonCard()==Duel.GetAttacker() then + Duel.Hint(HINT_CARD,0,511002182) + Duel.GetAttacker():AddCounter(0x1015,1,REASON_EFFECT) + end + e:Reset() +end +function c511002182.checkop(e,tp,eg,ep,ev,re,r,rp) + local bt=eg:GetFirst() + bt:RegisterFlagEffect(511002182,RESET_EVENT+0x1fc0000,0,0) +end diff --git a/script/c511002183.lua b/script/c511002183.lua new file mode 100644 index 00000000..41220965 --- /dev/null +++ b/script/c511002183.lua @@ -0,0 +1,29 @@ +--Ice Block +function c511002183.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511002183.activate) + c:RegisterEffect(e1) +end +function c511002183.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if not tc or not tc:IsRelateToBattle() then return end + if Duel.NegateAttack() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetCondition(c511002183.con) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + tc:RegisterEffect(e2) + end +end +function c511002183.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end diff --git a/script/c511002184.lua b/script/c511002184.lua new file mode 100644 index 00000000..c50e4899 --- /dev/null +++ b/script/c511002184.lua @@ -0,0 +1,41 @@ +--The Ice-Bound God +function c511002184.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002184.condition) + e1:SetTarget(c511002184.target) + e1:SetOperation(c511002184.activate) + c:RegisterEffect(e1) +end +function c511002184.cfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511002184.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002184.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil) +end +function c511002184.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,0,0) +end +function c511002184.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,aux.disfilter1,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002185.lua b/script/c511002185.lua new file mode 100644 index 00000000..89603461 --- /dev/null +++ b/script/c511002185.lua @@ -0,0 +1,54 @@ +--Crown of Command +function c511002185.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(c511002185.target) + e1:SetOperation(c511002185.operation) + c:RegisterEffect(e1) + --lose atk and def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511002185.atkop) + 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 c511002185.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 c511002185.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002185.atkop(e,tp,eg,ep,ev,re,r,rp) + local eq=e:GetHandler():GetEquipTarget() + local bc=eq:GetBattleTarget() + if not bc or not bc:IsRelateToBattle() then return end + Duel.Hint(HINT_CARD,0,511002185) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-500) + bc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + bc:RegisterEffect(e2) +end diff --git a/script/c511002187.lua b/script/c511002187.lua new file mode 100644 index 00000000..f18252ca --- /dev/null +++ b/script/c511002187.lua @@ -0,0 +1,57 @@ +--Ice Doll Mirror +function c511002187.initial_effect(c) + --place + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3784434,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002187.cost) + e1:SetTarget(c511002187.target) + e1:SetOperation(c511002187.activate) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(712559,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetTarget(c511002187.target2) + e2:SetOperation(c511002187.activate2) + c:RegisterEffect(e2) +end +function c511002187.cfilter(c) + return c:IsCode(511002186) and not c:IsPublic() +end +function c511002187.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002187.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511002187.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) +end +function c511002187.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end +end +function c511002187.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local token=Duel.CreateToken(tp,511002186) + Duel.MoveToField(token,tp,tp,LOCATION_MZONE,POS_FACEUP,true) + token:SetStatus(STATUS_PROC_COMPLETE,true) + token:SetStatus(STATUS_SPSUMMON_TURN,true) +end +function c511002187.filter(c,e,tp) + return c:IsCode(511002186) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002187.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002187.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) +end +function c511002187.activate2(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,c511002187.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002191.lua b/script/c511002191.lua new file mode 100644 index 00000000..3d5f7336 --- /dev/null +++ b/script/c511002191.lua @@ -0,0 +1,48 @@ +--RR lock Chain +function c511002191.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(2148918,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511002191.sptg) + e2:SetOperation(c511002191.spop) + c:RegisterEffect(e2) +end +function c511002191.filter(c,e) + return c:IsFaceup() and c:IsSetCard(0xba) +end +function c511002191.tgfilter(c,e,tp) + local atk=0 + local g=Duel.GetMatchingGroup(c511002191.filter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()<=0 then return false end + local bc=g:GetFirst() + while bc do + atk=atk+bc:GetAttack() + bc=g:GetNext() + end + return c:IsFaceup() and c:IsControler(1-tp) and c:GetAttack()>atk and c:IsCanBeEffectTarget(e) +end +function c511002191.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511002191.tgfilter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=eg:FilterSelect(tp,c511002191.tgfilter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511002191.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511002192.lua b/script/c511002192.lua new file mode 100644 index 00000000..c3394f7f --- /dev/null +++ b/script/c511002192.lua @@ -0,0 +1,52 @@ +--RR reactor +function c511002192.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk change + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetDescription(aux.Stringid(2148918,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetTarget(c511002192.sptg) + e2:SetOperation(c511002192.spop) + c:RegisterEffect(e2) +end +function c511002192.filter(c,e) + return c:IsFaceup() and c:IsSetCard(0xba) +end +function c511002192.tgfilter(c,e,tp) + local atk=0 + local g=Duel.GetMatchingGroup(c511002192.filter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()<=0 then return false end + local bc=g:GetFirst() + while bc do + atk=atk+bc:GetAttack() + bc=g:GetNext() + end + return c:GetAttack()>atk and c:IsControler(1-tp) and c:IsCanBeEffectTarget(e) and c:IsDestructable() +end +function c511002192.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511002192.tgfilter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=eg:FilterSelect(tp,c511002192.tgfilter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) +end +function c511002192.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c511002193.lua b/script/c511002193.lua new file mode 100644 index 00000000..be4cbf5a --- /dev/null +++ b/script/c511002193.lua @@ -0,0 +1,79 @@ +--RR Target Flag +function c511002193.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_STANDBY_PHASE,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002193.target) + e1:SetOperation(c511002193.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(0) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CLIENT_HINT+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511002193.descon) + e2:SetTarget(c511002193.destg) + e2:SetOperation(c511002193.desop) + e2:SetLabel(0) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c511002193.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsPlayerCanDraw(tp,1) end + e:GetLabelObject():SetLabel(0) + e:GetLabelObject():SetDescription(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002193.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + local td=Duel.GetDecktopGroup(tp,1):GetFirst() + if td then + Duel.Draw(tp,1,REASON_EFFECT) + Duel.ConfirmCards(1-tp,td) + if td:IsType(TYPE_MONSTER) then + e:GetLabelObject():SetLabel(TYPE_MONSTER) + e:GetLabelObject():SetDescription(70) + elseif td:IsType(TYPE_SPELL) then + e:GetLabelObject():SetLabel(TYPE_SPELL) + e:GetLabelObject():SetDescription(71) + else + e:GetLabelObject():SetLabel(TYPE_TRAP) + e:GetLabelObject():SetDescription(72) + end + Duel.ShuffleHand(tp) + end + end +end +function c511002193.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511002193.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 c511002193.desop(e,tp,eg,ep,ev,re,r,rp) + if Duel.Destroy(e:GetHandler(),REASON_EFFECT)>0 then + if e:GetLabel()==0 then return end + local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.ConfirmCards(tp,hg) + local dg=hg:Filter(Card.IsType,nil,e:GetLabel()) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end + e:SetDescription(0) +end diff --git a/script/c511002194.lua b/script/c511002194.lua new file mode 100644 index 00000000..922cbee7 --- /dev/null +++ b/script/c511002194.lua @@ -0,0 +1,51 @@ +--死霊操りしパペットマスター +function c511002194.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41442341,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511002194.spcon) + e1:SetCost(c511002194.spcost) + e1:SetTarget(c511002194.sptg) + e1:SetOperation(c511002194.spop) + c:RegisterEffect(e1) +end +function c511002194.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c511002194.spcost(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 c511002194.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002194.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002194.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002194.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>3 then ft=3 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002194.filter,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.HintSelection(g) + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002195.lua b/script/c511002195.lua new file mode 100644 index 00000000..b2cfe1c9 --- /dev/null +++ b/script/c511002195.lua @@ -0,0 +1,87 @@ +--Dragoon D-END +function c511002195.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,83965310,17132130,false,false) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCategory(CATEGORY_DAMAGE+CATEGORY_DESTROY) + e2:SetDescription(aux.Stringid(95100157,0)) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511002195.descost) + e2:SetTarget(c511002195.destg) + e2:SetOperation(c511002195.desop) + c:RegisterEffect(e2) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_GRAVE) + e3:SetDescription(aux.Stringid(76263644,1)) + e3:SetCondition(c511002195.spcon) + e3:SetCost(c511002195.spcost) + e3:SetTarget(c511002195.sptg) + e3:SetOperation(c511002195.spop) + c:RegisterEffect(e3) + --indestructable effect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511002195.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511002195.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511002195.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local atk=0 + if tc:IsFaceup() then atk=tc:GetAttack() end + if Duel.Destroy(tc,REASON_EFFECT)==0 then return end + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end +function c511002195.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002195.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002195.spfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002195.spfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002195.spfilter(c) + return c:IsSetCard(0xc008) and c:IsAbleToRemoveAsCost() +end +function c511002195.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002195.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002196.lua b/script/c511002196.lua new file mode 100644 index 00000000..76666b46 --- /dev/null +++ b/script/c511002196.lua @@ -0,0 +1,33 @@ +--Jester Puppet Trick Rider +function c511002196.initial_effect(c) + --salvage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(984114,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511002196.tg) + e1:SetOperation(c511002196.op) + c:RegisterEffect(e1) +end +function c511002196.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511002196.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002196.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002196.filter,tp,LOCATION_DECK,0,1,1,nil) + local ct=Duel.GetMatchingGroupCount(Card.IsAbleToHand,tp,LOCATION_DECK,0,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + elseif ct>0 then + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ConfirmCards(tp,cg) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c511002197.lua b/script/c511002197.lua new file mode 100644 index 00000000..2967ba67 --- /dev/null +++ b/script/c511002197.lua @@ -0,0 +1,34 @@ +--Mobius Glacier +function c511002197.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c511002197.descon) + c:RegisterEffect(e2) + --Pos Change + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SET_POSITION) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_BEAST+RACE_BEASTWARRIOR+RACE_WINDBEAST+RACE_PLANT+RACE_DINOSAUR+RACE_INSECT)) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(POS_FACEUP_ATTACK) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e4) +end +function c511002197.filter(c) + return c:IsFaceup() and c:IsCode(4929256) +end +function c511002197.descon(e) + return not Duel.IsExistingMatchingCard(c511002197.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end diff --git a/script/c511002198.lua b/script/c511002198.lua new file mode 100644 index 00000000..c5e94281 --- /dev/null +++ b/script/c511002198.lua @@ -0,0 +1,39 @@ +--Jester Puppet Acrobat +function c511002198.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(423585,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002198.spcost) + e1:SetTarget(c511002198.sptg) + e1:SetOperation(c511002198.spop) + c:RegisterEffect(e1) +end +function c511002198.costfilter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c511002198.filter,tp,LOCATION_HAND,0,1,c,e,tp) +end +function c511002198.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002198.costfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002198.costfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002198.filter(c,e,tp) + return c:GetLevel()==4 and (c:IsCode(511002198) or c:IsCode(511002196) or c:IsCode(511000810)) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002198.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002198.spop(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,c511002198.filter,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 diff --git a/script/c511002199.lua b/script/c511002199.lua new file mode 100644 index 00000000..1ed78c89 --- /dev/null +++ b/script/c511002199.lua @@ -0,0 +1,48 @@ +--Tragic Comedy +function c511002199.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(1) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c511002199.damcon) + e3:SetTarget(c511002199.damtg) + e3:SetOperation(c511002199.damop) + c:RegisterEffect(e3) +end +function c511002199.damcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a:IsRelateToBattle() and d:IsRelateToBattle() and not a:IsStatus(STATUS_BATTLE_DESTROYED) + and not d:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511002199.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Group.FromCards(Duel.GetAttacker(),Duel.GetAttackTarget()) + if chk==0 then return g:IsExists(Card.IsControler,1,nil,1-tp) end + local dg=g:Filter(Card.IsControler,nil,1-tp) + local atk=dg:GetSum(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c511002199.damop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d or not a:IsRelateToBattle() or not d:IsRelateToBattle() or a:IsStatus(STATUS_BATTLE_DESTROYED) + or d:IsStatus(STATUS_BATTLE_DESTROYED) then return end + local g=Group.FromCards(a,d) + local dg=g:Filter(Card.IsControler,nil,1-tp) + local atk=dg:GetSum(Card.GetAttack) + Duel.Damage(1-tp,atk,REASON_EFFECT) +end diff --git a/script/c511002200.lua b/script/c511002200.lua new file mode 100644 index 00000000..ee5780fd --- /dev/null +++ b/script/c511002200.lua @@ -0,0 +1,58 @@ +--煉獄龍 オーガ・ドラグーン +function c511002200.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81020646,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002200.discon) + e1:SetTarget(c511002200.distg) + e1:SetOperation(c511002200.disop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(29146185,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(511002200) + e2:SetOperation(c511002200.atkop) + c:RegisterEffect(e2) +end +function c511002200.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and ep~=tp + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 +end +function c511002200.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511002200.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + if Duel.Destroy(eg,REASON_EFFECT)>0 then + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.RaiseSingleEvent(c,511002200,e,r,rp,ep,0) + end + end + end +end +function c511002200.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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(500) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002201.lua b/script/c511002201.lua new file mode 100644 index 00000000..33d09dea --- /dev/null +++ b/script/c511002201.lua @@ -0,0 +1,27 @@ +--Void Cauldron +function c511002201.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511002201.reptg) + e2:SetValue(c511002201.repval) + c:RegisterEffect(e2) +end +function c511002201.repfilter(c) + return c:IsOnField() and c:IsReason(REASON_EFFECT) +end +function c511002201.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 + and eg:IsExists(c511002201.repfilter,1,nil) end + return Duel.SelectYesNo(tp,aux.Stringid(511002201,0)) +end +function c511002201.repval(e,c) + return c:IsOnField() and c:IsReason(REASON_EFFECT) +end diff --git a/script/c511002202.lua b/script/c511002202.lua new file mode 100644 index 00000000..5918d580 --- /dev/null +++ b/script/c511002202.lua @@ -0,0 +1,64 @@ +--妖精竜 エンシェント +function c511002202.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --draw + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetDescription(aux.Stringid(4179255,0)) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_F) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002202.drcon) + e1:SetTarget(c511002202.drtg) + e1:SetOperation(c511002202.drop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetDescription(aux.Stringid(4179255,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002202.descon) + e2:SetTarget(c511002202.destg) + e2:SetOperation(c511002202.desop) + c:RegisterEffect(e2) +end +function c511002202.drcon(e,tp,eg,ep,ev,re,r,rp) + return re and re:IsActiveType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511002202.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002202.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c511002202.check() + local tc=Duel.GetFieldCard(0,LOCATION_SZONE,5) + if tc and tc:IsFaceup() then return true end + tc=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return tc and tc:IsFaceup() +end +function c511002202.descon(e,tp,eg,ep,ev,re,r,rp) + return c511002202.check() +end +function c511002202.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002202.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002203.lua b/script/c511002203.lua new file mode 100644 index 00000000..6852f87d --- /dev/null +++ b/script/c511002203.lua @@ -0,0 +1,57 @@ +--機械竜 パワー・ツール +function c511002203.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --draw + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetDescription(aux.Stringid(68084557,0)) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_EQUIP) + e1:SetTarget(c511002203.drtg) + e1:SetOperation(c511002203.drop) + c:RegisterEffect(e1) + --equip change + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetDescription(aux.Stringid(68084557,1)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511002203.eqtg) + e2:SetOperation(c511002203.eqop) + c:RegisterEffect(e2) +end +function c511002203.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002203.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c511002203.eqfilter(c,ec) + return c:IsType(TYPE_EQUIP) and c:GetEquipTarget() and c:GetEquipTarget()~=ec +end +function c511002203.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002203.eqfilter,tp,0,LOCATION_SZONE,1,nil,e:GetHandler()) + and not e:GetHandler():IsStatus(STATUS_CHAINING) end +end +function c511002203.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(43641473,0)) + local g=Duel.SelectMatchingCard(tp,c511002203.eqfilter,tp,0,LOCATION_SZONE,1,5,nil,e:GetHandler()) + if g:GetCount()>0 then + Duel.HintSelection(g) + local tc=g:GetFirst() + while tc do + Duel.Equip(tp,tc,c) + tc=g:GetNext() + end + end +end diff --git a/script/c511002204.lua b/script/c511002204.lua new file mode 100644 index 00000000..f09223ef --- /dev/null +++ b/script/c511002204.lua @@ -0,0 +1,59 @@ +--Forest Burst +function c511002204.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(c511002204.target) + e1:SetOperation(c511002204.operation) + c:RegisterEffect(e1) + --Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511002204.descon) + e2:SetTarget(c511002204.destg) + e2:SetOperation(c511002204.desop) + c:RegisterEffect(e2) +end +function c511002204.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 c511002204.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002204.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and c:GetFirstCardTarget() + and c:GetFirstCardTarget():IsLocation(LOCATION_MZONE) +end +function c511002204.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetHandler():GetPreviousEquipTarget() + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()) +end +function c511002204.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511002205.lua b/script/c511002205.lua new file mode 100644 index 00000000..edb7b415 --- /dev/null +++ b/script/c511002205.lua @@ -0,0 +1,44 @@ +-- Morphtronic Master Arm +function c511002205.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(c511002205.target) + e1:SetOperation(c511002205.operation) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511002205.value) + c:RegisterEffect(e2) + --Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c511002205.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 c511002205.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002205.filter(c) + return c:IsFaceup() and c:IsSetCard(0x26) +end +function c511002205.value(e,c) + return Duel.GetMatchingGroupCount(c511002205.filter,c:GetControler(),LOCATION_ONFIELD,0,nil)*300 +end diff --git a/script/c511002206.lua b/script/c511002206.lua new file mode 100644 index 00000000..ec5d9f89 --- /dev/null +++ b/script/c511002206.lua @@ -0,0 +1,64 @@ +--Pile Arm +function c511002206.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(c511002206.target) + e1:SetOperation(c511002206.operation) + c:RegisterEffect(e1) + --Atk,def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + c:RegisterEffect(e2) + --Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(78586116,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(511002206) + e4:SetTarget(c511002206.destg) + e4:SetOperation(c511002206.desop) + c:RegisterEffect(e4) +end +function c511002206.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 c511002206.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + Duel.RaiseSingleEvent(c,511002206,e,0,0,0,0,0) + end +end +function c511002206.filter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511002206.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511002206.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c511002206.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002206.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002206.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002207.lua b/script/c511002207.lua new file mode 100644 index 00000000..ffff0497 --- /dev/null +++ b/script/c511002207.lua @@ -0,0 +1,46 @@ +--Curse of the Forest +function c511002207.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002207.target) + e1:SetOperation(c511002207.activate) + c:RegisterEffect(e1) +end +function c511002207.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:GetAttack()>0 +end +function c511002207.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002207.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511002207.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c511002207.filter,tp,LOCATION_MZONE,0,nil) + local g2=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,0)) + local sg1=g1:Select(tp,1,1,nil) + local tc1=sg1:GetFirst() + Duel.HintSelection(sg1) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,1)) + local sg2=g2:Select(tp,1,1,nil) + local tc2=sg2:GetFirst() + Duel.HintSelection(sg2) + local atk=tc1:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-atk) + if tc1:RegisterEffect(e1) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(-atk) + tc2:RegisterEffect(e2) + end + end +end diff --git a/script/c511002208.lua b/script/c511002208.lua new file mode 100644 index 00000000..4d51fc94 --- /dev/null +++ b/script/c511002208.lua @@ -0,0 +1,31 @@ +--Wrath of the Forest +function c511002208.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c511002208.condition) + e1:SetTarget(c511002208.target) + e1:SetOperation(c511002208.activate) + c:RegisterEffect(e1) +end +function c511002208.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if not at then return false end + if at:IsControler(tp) then at=Duel.GetAttacker() end + return at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511002208.target(e,tp,eg,ep,ev,re,r,rp,chk) + local at=Duel.GetAttackTarget() + if at:IsControler(tp) then at=Duel.GetAttacker() end + if chk==0 then return true end + Duel.SetTargetCard(at) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,at:GetAttack()) +end +function c511002208.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToBattle() then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511002209.lua b/script/c511002209.lua new file mode 100644 index 00000000..27a2bf80 --- /dev/null +++ b/script/c511002209.lua @@ -0,0 +1,29 @@ +--Those We Protect +function c511002209.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59560625,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511002209.target) + e1:SetOperation(c511002209.activate) + c:RegisterEffect(e1) +end +function c511002209.filter(c,a) + return c~=a +end +function c511002209.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(c511002209.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,d,a) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002209.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,d,a) +end +function c511002209.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511002210.lua b/script/c511002210.lua new file mode 100644 index 00000000..2beb1837 --- /dev/null +++ b/script/c511002210.lua @@ -0,0 +1,29 @@ +--シャーマン・コール +function c511002210.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002210.condition) + e1:SetOperation(c511002210.activate) + c:RegisterEffect(e1) +end +function c511002210.cfilter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsSetCard(0x26) +end +function c511002210.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002210.cfilter,tp,LOCATION_MZONE,0,2,nil) +end +function c511002210.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002210.cfilter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002211.lua b/script/c511002211.lua new file mode 100644 index 00000000..2e8eb7c9 --- /dev/null +++ b/script/c511002211.lua @@ -0,0 +1,47 @@ +--Black-winged Arrow +function c511002211.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,0x1c0) + e1:SetTarget(c511002211.target) + e1:SetOperation(c511002211.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c511002211.handcon) + c:RegisterEffect(e2) +end +function c511002211.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,0,0) +end +function c511002211.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end +function c511002211.handcon(e) + local g=Duel.GetMatchingGroup(Card.IsSetCard,e:GetHandlerPlayer(),LOCATION_GRAVE,0,nil,0x33) + local ct=g:GetClassCount(Card.GetCode) + return ct>=4 +end diff --git a/script/c511002214.lua b/script/c511002214.lua new file mode 100644 index 00000000..729aac46 --- /dev/null +++ b/script/c511002214.lua @@ -0,0 +1,60 @@ +--魔天使ローズ・ソーサラー +function c511002214.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002214.spcon) + e1:SetOperation(c511002214.spop) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(55099248,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511002214.atktg) + e2:SetOperation(c511002214.atkop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002214.spfilter(c) + return c:IsFaceup() and c:IsCode(96470883) and c:IsAbleToHandAsCost() +end +function c511002214.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511002214.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c511002214.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c511002214.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c511002214.filter(c,tp) + return c:IsFaceup() and c:IsCode(96470883) and c:IsLocation(LOCATION_MZONE) and c:GetSummonPlayer()==tp +end +function c511002214.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511002214.filter,1,nil,tp) end +end +function c511002214.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=eg:FilterSelect(tp,c511002214.filter,1,1,nil,tp) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002215.lua b/script/c511002215.lua new file mode 100644 index 00000000..0438f432 --- /dev/null +++ b/script/c511002215.lua @@ -0,0 +1,34 @@ +--Rose Spirits +function c511002215.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511002215.cost) + e1:SetCondition(aux.damcon1) + e1:SetOperation(c511002215.operation) + c:RegisterEffect(e1) +end +function c511002215.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002215.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_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511002215.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002215.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c511002216.lua b/script/c511002216.lua new file mode 100644 index 00000000..42e37a90 --- /dev/null +++ b/script/c511002216.lua @@ -0,0 +1,58 @@ +--Black Rose Seed +function c511002216.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002216.condition) + e1:SetTarget(c511002216.target) + e1:SetOperation(c511002216.activate) + c:RegisterEffect(e1) +end +c511002216.collection={ + [49674183]=true;[96470883]=true;[31986288]=true;[41160533]=true;[51085303]=true; + [41201555]=true;[75252099]=true;[58569561]=true;[96385345]=true;[17720747]=true; + [98884569]=true;[23087070]=true;[1557341]=true;[12469386]=true;[2986553]=true; + [51852507]=true;[44125452]=true;[61049315]=true;[79531196]=true;[89252157]=true; + [32485271]=true;[33698022]=true;[73580471]=true;[4290468]=true;[25090294]=true; + [45247637]=true;[71645243]=true;[73580471]=true;[4290468]=true;[25090294]=true; +} +function c511002216.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if d==nil then return end + if (a:IsSetCard(0x218) or c511002216.collection[a:GetCode()]) and not (d:IsSetCard(0x218) or c511002216.collection[d:GetCode()]) + and a:IsRelateToBattle() then + e:SetLabelObject(a) + return true + end + if not (a:IsSetCard(0x218) or c511002216.collection[a:GetCode()]) and (d:IsSetCard(0x218) or c511002216.collection[d:GetCode()]) + and d:IsRelateToBattle() then + e:SetLabelObject(d) + return true + end + return false +end +function c511002216.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return true end + Duel.SetTargetCard(tc) +end +function c511002216.activate(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(800) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) +end diff --git a/script/c511002217.lua b/script/c511002217.lua new file mode 100644 index 00000000..58167df3 --- /dev/null +++ b/script/c511002217.lua @@ -0,0 +1,59 @@ +--Cards from the Blessed Grass +function c511002217.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002217.target) + e1:SetOperation(c511002217.activate) + c:RegisterEffect(e1) + if not c511002217.global_check then + c511002217.global_check=true + c511002217[0]=0 + c511002217[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_TO_HAND) + ge1:SetOperation(c511002217.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002217.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002217.cfilter(c,tp) + return c:IsControler(tp) and c:IsPreviousLocation(LOCATION_DECK) +end +function c511002217.checkop(e,tp,eg,ep,ev,re,r,rp) + local ct1=eg:FilterCount(c511002217.cfilter,nil,tp) + local ct2=eg:FilterCount(c511002217.cfilter,nil,1-tp) + c511002217[tp]=c511002217[tp]+ct1 + c511002217[1-tp]=c511002217[1-tp]+ct2 +end +function c511002217.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return c511002217[tp]>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=c511002217[tp] + and Duel.IsPlayerCanSpecialSummonMonster(tp,28062326,0,0x4011,800,500,1,RACE_PLANT,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,c511002217[tp],0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,c511002217[tp],0,0) +end +function c511002217.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ftc511002217[tp] then ft=c511002217[tp] end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>=ft + and Duel.IsPlayerCanSpecialSummonMonster(tp,28062326,0,0x4011,800,500,1,RACE_PLANT,ATTRIBUTE_EARTH) then + for i=1,ft do + local token=Duel.CreateToken(tp,28062326) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end +function c511002217.clear(e,tp,eg,ep,ev,re,r,rp) + c511002217[0]=0 + c511002217[1]=0 +end diff --git a/script/c511002218.lua b/script/c511002218.lua new file mode 100644 index 00000000..4005846c --- /dev/null +++ b/script/c511002218.lua @@ -0,0 +1,63 @@ +--Rose Shield +function c511002218.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(c511002218.target) + e1:SetOperation(c511002218.operation) + c:RegisterEffect(e1) + --destroy sub + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e2:SetValue(1) + c:RegisterEffect(e2) + --Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(78586116,0)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(511002218) + e4:SetTarget(c511002218.damtg) + e4:SetOperation(c511002218.damop) + c:RegisterEffect(e4) +end +function c511002218.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 c511002218.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + Duel.RaiseSingleEvent(c,511002218,e,0,0,0,0,0) + end +end +function c511002218.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + Duel.SetTargetParam(ct*300) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) +end +function c511002218.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + Duel.Damage(p,ct*300,REASON_EFFECT) +end diff --git a/script/c511002219.lua b/script/c511002219.lua new file mode 100644 index 00000000..dc2e32ed --- /dev/null +++ b/script/c511002219.lua @@ -0,0 +1,115 @@ +--BF-大旆のヴァーユ +function c511002219.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89326990,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetTarget(c511002219.target) + e1:SetOperation(c511002219.operation) + c:RegisterEffect(e1) + --synchro limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e2:SetValue(aux.TRUE) + c:RegisterEffect(e2) +end +function c511002219.matfilter(c,lv,syncard,mclv) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:GetSynchroLevel(syncard)==lv-mclv and c:IsNotTuner() and c:IsAbleToRemove() + and mt.nontuner_filter and mt.nontuner_filter(c) +end +function c511002219.filter(c,e,tp,mc) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local mclv=mc:GetSynchroLevel(c) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,false) + and Duel.IsExistingMatchingCard(c511002219.matfilter,tp,LOCATION_GRAVE,0,1,nil,c:GetLevel(),c,mclv) + and mt.sync and mt.minntct and mt.minntct==1 and mt.tuner_filter and mt.tuner_filter(mc) +end +function c511002219.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and c:IsAbleToRemove() + and Duel.IsExistingMatchingCard(c511002219.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002219.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c511002219.filter,tp,LOCATION_EXTRA,0,nil,e,tp,c) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=g:Select(tp,1,1,nil):GetFirst() + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + local mclv=c:GetSynchroLevel(tc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat=Duel.SelectMatchingCard(tp,c511002219.matfilter,tp,LOCATION_GRAVE,0,1,1,nil,tc:GetLevel(),tc,mclv) + mat:AddCard(c) + tc:SetMaterial(mat) + Duel.Remove(mat,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_SYNCHRO) + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511002220.lua b/script/c511002220.lua new file mode 100644 index 00000000..d9628dd8 --- /dev/null +++ b/script/c511002220.lua @@ -0,0 +1,30 @@ +--Moon-light Black Sheep +function c511002220.initial_effect(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2729285,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c511002220.condition) + e1:SetTarget(c511002220.target) + e1:SetOperation(c511002220.operation) + c:RegisterEffect(e1) +end +function c511002220.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp + and c:IsLocation(LOCATION_GRAVE) and r==REASON_FUSION +end +function c511002220.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c511002220.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,e:GetHandler()) + end +end + diff --git a/script/c511002221.lua b/script/c511002221.lua new file mode 100644 index 00000000..6eba7c7a --- /dev/null +++ b/script/c511002221.lua @@ -0,0 +1,58 @@ +--タンホイザーゲート +function c511002221.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002221.target) + e1:SetOperation(c511002221.activate) + c:RegisterEffect(e1) +end +function c511002221.filter(c) + return c:IsType(TYPE_FUSION) and c:IsFaceup() +end +function c511002221.desfilter(c,atk,g) + return (c:IsFacedown() or not c:IsType(TYPE_FUSION)) and c:IsDestructable() and c:IsAttackBelow(atk) and not g:IsContains(c) + and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511002221.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and c511002221.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002221.filter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511002221.filter,tp,LOCATION_MZONE,LOCATION_MZONE,2,2,nil) + local atk=g:GetSum(Card.GetAttack) + local sg=Duel.GetMatchingGroup(c511002221.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,atk,g) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + local pct=0 + if g:IsExists(Card.IsControler,1,nil,tp) then + pct=pct+1 + end + if g:IsExists(Card.IsControler,1,nil,1-tp) then + pct=pct+2 + end + if pct==1 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,atk) + elseif pct==2 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) + else + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,atk) + end +end +function c511002221.damfilter(c,tp) + return c:IsControler(tp) and not c:IsLocation(LOCATION_MZONE) +end +function c511002221.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not g or g:FilterCount(Card.IsRelateToEffect,nil,e)~=2 then return end + local atk=g:GetSum(Card.GetAttack) + local sg=Duel.GetMatchingGroup(c511002221.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,atk,g) + Duel.Destroy(sg,REASON_EFFECT) + if sg:IsExists(c511002221.damfilter,1,nil,tp) then + Duel.Damage(tp,atk,REASON_EFFECT) + end + if sg:IsExists(c511002221.damfilter,1,nil,1-tp) then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c511002222.lua b/script/c511002222.lua new file mode 100644 index 00000000..9f45edcb --- /dev/null +++ b/script/c511002222.lua @@ -0,0 +1,39 @@ +--Speedroid Lightning Archduke +function c511002222.initial_effect(c) + --revive + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92826944,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511002222.condition) + e1:SetCost(c511002222.cost) + e1:SetTarget(c511002222.target) + e1:SetOperation(c511002222.operation) + c:RegisterEffect(e1) +end +function c511002222.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002222.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<1000 +end +function c511002222.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002222.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511002222.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002222.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002222.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002222.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002223.lua b/script/c511002223.lua new file mode 100644 index 00000000..4c8c771b --- /dev/null +++ b/script/c511002223.lua @@ -0,0 +1,31 @@ +--Hi-Speedroid Puzzle +function c511002223.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --Double ATK + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(6951,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCountLimit(1) + e1:SetCondition(c511002223.atkcon) + e1:SetOperation(c511002223.atkop) + c:RegisterEffect(e1) +end +function c511002223.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bit.band(bc:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL and bc:IsControler(1-tp) +end +function c511002223.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:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002224.lua b/script/c511002224.lua new file mode 100644 index 00000000..ef5e6837 --- /dev/null +++ b/script/c511002224.lua @@ -0,0 +1,67 @@ +--Goyo Arrow +function c511002224.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(c511002224.target) + e1:SetOperation(c511002224.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(c511002224.eqlimit) + c:RegisterEffect(e2) + --damage + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetCountLimit(1) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c511002224.damtg) + e4:SetOperation(c511002224.damop) + c:RegisterEffect(e4) +end +function c511002224.eqlimit(e,c) + return c:IsSetCard(0x204) or c:IsCode(7391448) or c:IsCode(63364266) or c:IsCode(98637386) or c:IsCode(84305651) + or c:IsCode(58901502) or c:IsCode(59255742) +end +function c511002224.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x204) or c:IsCode(7391448) or c:IsCode(63364266) or c:IsCode(98637386) or c:IsCode(84305651) + or c:IsCode(58901502) or c:IsCode(59255742)) +end +function c511002224.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(c511002224.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002224.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002224.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002224.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetEquipTarget() + if chk==0 then return ec and ec:GetLevel()>0 end + local lv=ec:GetLevel() + local dam=lv*100 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002224.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ec=e:GetHandler():GetEquipTarget() + if not ec then return end + local dam=ec:GetLevel()*100 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511002225.lua b/script/c511002225.lua new file mode 100644 index 00000000..0033c7ac --- /dev/null +++ b/script/c511002225.lua @@ -0,0 +1,6 @@ +--Bombing Beast Fire Bomber +function c511002225.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),aux.FilterBoolFunction(Card.IsRace,RACE_PYRO),true) +end diff --git a/script/c511002226.lua b/script/c511002226.lua new file mode 100644 index 00000000..43529327 --- /dev/null +++ b/script/c511002226.lua @@ -0,0 +1,6 @@ +--Firebird, The Burning Skywing +function c511002226.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),aux.FilterBoolFunction(Card.IsRace,RACE_PYRO),true) +end diff --git a/script/c511002227.lua b/script/c511002227.lua new file mode 100644 index 00000000..09b6db1f --- /dev/null +++ b/script/c511002227.lua @@ -0,0 +1,42 @@ +--フルール・ド・シュヴァリエ +function c511002227.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c511002227.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(45037489,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002227.discon) + e1:SetTarget(c511002227.distg) + e1:SetOperation(c511002227.disop) + c:RegisterEffect(e1) +end +c511002227.material_setcode=0x17 +function c511002227.tfilter(c) + return c:IsCode(19642774) or c:IsHasEffect(20932152) +end +function c511002227.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp~=tp + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511002227.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511002227.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511002228.lua b/script/c511002228.lua new file mode 100644 index 00000000..4ad7b23d --- /dev/null +++ b/script/c511002228.lua @@ -0,0 +1,82 @@ +--デストーイ・サーベル・タイガー +function c511002228.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunFunRep(c,c511002228.mfilter1,c511002228.mfilter2,1,63,true) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511002228.spcon) + e2:SetTarget(c511002228.sptg) + e2:SetOperation(c511002228.spop) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xad)) + e3:SetValue(c511002228.atkval) + c:RegisterEffect(e3) + --effect gain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetCondition(c511002228.efcon) + e3:SetOperation(c511002228.efop) + c:RegisterEffect(e3) +end +function c511002228.mfilter1(c) + return c:IsFusionSetCard(0xad) and c:IsLevelAbove(6) +end +function c511002228.mfilter2(c) + return c:IsFusionSetCard(0xa9) or c:IsFusionSetCard(0xc3) +end +function c511002228.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511002228.spfilter(c,e,tp) + return c:IsSetCard(0xad) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511002228.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511002228.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002228.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002228.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002228.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end +function c511002228.atkfilter(c) + return c:IsFaceup() and (c:IsSetCard(0xa9) or c:IsSetCard(0xad)) +end +function c511002228.atkval(e,c) + return Duel.GetMatchingGroupCount(c511002228.atkfilter,c:GetControler(),LOCATION_MZONE,0,nil)*400 +end +function c511002228.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_FUSION +end +function c511002228.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + rc:RegisterEffect(e2,true) +end diff --git a/script/c511002229.lua b/script/c511002229.lua new file mode 100644 index 00000000..6270d172 --- /dev/null +++ b/script/c511002229.lua @@ -0,0 +1,33 @@ +--ライトニング・トライコーン +function c511002229.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75733063,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c511002229.target) + e1:SetOperation(c511002229.operation) + c:RegisterEffect(e1) +end +function c511002229.filter(c,e,tp) + local code=c:GetCode() + return (code==77506119 or code==13995824) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002229.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002229.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002229.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,c511002229.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002230.lua b/script/c511002230.lua new file mode 100644 index 00000000..a4a0db47 --- /dev/null +++ b/script/c511002230.lua @@ -0,0 +1,36 @@ +--ロード・ウォリアー +function c511002230.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c511002230.tfilter,aux.NonTuner(nil),2) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2322421,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002230.tg) + e1:SetOperation(c511002230.op) + c:RegisterEffect(e1) +end +c511002230.material_setcode=0x17 +function c511002230.tfilter(c) + return c:IsCode(71971554) or c:IsHasEffect(20932152) +end +function c511002230.filter(c,e,tp) + return c:IsLevelBelow(2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002230.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002230.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002230.op(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,c511002230.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002231.lua b/script/c511002231.lua new file mode 100644 index 00000000..b88531f1 --- /dev/null +++ b/script/c511002231.lua @@ -0,0 +1,17 @@ +--Pump Action Commando +function c511002231.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(c511002231.condtion) + e1:SetValue(400) + c:RegisterEffect(e1) +end +function c511002231.condtion(e) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and a and a==e:GetHandler() and d and d:IsControler(1-e:GetHandlerPlayer()) +end diff --git a/script/c511002232.lua b/script/c511002232.lua new file mode 100644 index 00000000..2d7e8497 --- /dev/null +++ b/script/c511002232.lua @@ -0,0 +1,21 @@ +--Roar Vulcan +function c511002232.initial_effect(c) + --atk change + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_START) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511002232.atkop) + c:RegisterEffect(e1) +end +function c511002232.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-800) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002233.lua b/script/c511002233.lua new file mode 100644 index 00000000..371b8970 --- /dev/null +++ b/script/c511002233.lua @@ -0,0 +1,23 @@ +--Vanguard +function c511002233.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76321376,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c511002233.damtg) + e1:SetOperation(c511002233.damop) + c:RegisterEffect(e1) +end +function c511002233.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511002233.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002234.lua b/script/c511002234.lua new file mode 100644 index 00000000..c3e58d8d --- /dev/null +++ b/script/c511002234.lua @@ -0,0 +1,34 @@ +--Satelliteroid +function c511002234.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81977953,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002234.descost) + e1:SetTarget(c511002234.destg) + e1:SetOperation(c511002234.desop) + c:RegisterEffect(e1) +end +function c511002234.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c511002234.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511002234.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002234.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c511002234.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002234.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002234.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002235.lua b/script/c511002235.lua new file mode 100644 index 00000000..dfcf0c88 --- /dev/null +++ b/script/c511002235.lua @@ -0,0 +1,36 @@ +--Missileroid +function c511002235.initial_effect(c) + --atk change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(43426903,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511002235.con) + e1:SetOperation(c511002235.op) + c:RegisterEffect(e1) +end +function c511002235.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and c:IsRelateToBattle() and bc:IsRelateToBattle() and c:IsCode(511002235) +end +function c511002235.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not c:IsRelateToBattle() or not c:IsCode(511002235) or not bc:IsRelateToBattle() then return end + local atk=c:GetAttack() + local def=c:GetDefense() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(-def) + e2:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e2) +end diff --git a/script/c511002236.lua b/script/c511002236.lua new file mode 100644 index 00000000..6c0b5265 --- /dev/null +++ b/script/c511002236.lua @@ -0,0 +1,54 @@ +--Launcheroid +function c511002236.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79185500,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002236.eqtg) + e1:SetOperation(c511002236.eqop) + c:RegisterEffect(e1) +end +function c511002236.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) and chkc~=e:GetHandler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511002236.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsControler(1-tp) + or Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + if not tc or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002236.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) +end +function c511002236.eqlimit(e,c) + return e:GetLabelObject()==c +end diff --git a/script/c511002237.lua b/script/c511002237.lua new file mode 100644 index 00000000..86929467 --- /dev/null +++ b/script/c511002237.lua @@ -0,0 +1,11 @@ +--Heliroid +function c511002237.initial_effect(c) + -- direct atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsCode,511002235)) + c:RegisterEffect(e2) +end diff --git a/script/c511002238.lua b/script/c511002238.lua new file mode 100644 index 00000000..4ae6eeba --- /dev/null +++ b/script/c511002238.lua @@ -0,0 +1,27 @@ +--Tankroid +function c511002238.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetDescription(aux.Stringid(23454876,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002238.drcon) + e1:SetTarget(c511002238.drtg) + e1:SetOperation(c511002238.drop) + c:RegisterEffect(e1) +end +function c511002238.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511002238.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002238.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002239.lua b/script/c511002239.lua new file mode 100644 index 00000000..bd6003a0 --- /dev/null +++ b/script/c511002239.lua @@ -0,0 +1,26 @@ +--Stealth +function c511002239.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3648368,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002239.target) + e1:SetOperation(c511002239.operation) + c:RegisterEffect(e1) +end +function c511002239.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_POSITION,nil,1,0,0) +end +function c511002239.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + local g=Duel.SelectMatchingCard(tp,Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.ChangePosition(tc,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) + end +end diff --git a/script/c511002241.lua b/script/c511002241.lua new file mode 100644 index 00000000..36e40d1a --- /dev/null +++ b/script/c511002241.lua @@ -0,0 +1,38 @@ +--Shovelroid +function c511002241.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(6320631,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCost(c511002241.cost) + e1:SetTarget(c511002241.target) + e1:SetOperation(c511002241.operation) + c:RegisterEffect(e1) +end +function c511002241.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 c511002241.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511002241.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002241.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002241.filter,tp,LOCATION_DECK,0,1,1,nil) + local ct=Duel.GetMatchingGroupCount(Card.IsAbleToHand,tp,LOCATION_DECK,0,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + elseif ct>0 then + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ConfirmCards(tp,cg) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c511002242.lua b/script/c511002242.lua new file mode 100644 index 00000000..b610ebd5 --- /dev/null +++ b/script/c511002242.lua @@ -0,0 +1,40 @@ +--EinRoid +function c511002242.initial_effect(c) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000506,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetTarget(c511002242.target) + e1:SetOperation(c511002242.operation) + c:RegisterEffect(e1) +end +function c511002242.tgfilter(c) + return c:IsSetCard(0x16) and c:IsAbleToGrave() +end +function c511002242.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,tp,LOCATION_DECK) +end +function c511002242.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002242.tgfilter,tp,LOCATION_DECK,0,nil) + local ct=Duel.GetMatchingGroupCount(Card.IsAbleToGrave,tp,LOCATION_DECK,0,nil) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=g:Select(tp,2,2,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + elseif g:GetCount()==1 then + Duel.ConfirmCards(1-tp,g) + Duel.ConfirmCards(tp,g) + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ConfirmCards(tp,cg) + Duel.ShuffleDeck(tp) + elseif ct>0 then + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ConfirmCards(tp,cg) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c511002243.lua b/script/c511002243.lua new file mode 100644 index 00000000..da7b2fcf --- /dev/null +++ b/script/c511002243.lua @@ -0,0 +1,28 @@ +--Zweiroid +function c511002243.initial_effect(c) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(34004470,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511002243.atcost) + e2:SetOperation(c511002243.atop) + c:RegisterEffect(e2) +end +function c511002243.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c511002243.atop(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:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002244.lua b/script/c511002244.lua new file mode 100644 index 00000000..7e5fc24d --- /dev/null +++ b/script/c511002244.lua @@ -0,0 +1,74 @@ +--Solidroid α +function c511002244.initial_effect(c) + aux.AddFusionProcCode3(c,511000660,98049038,511002240,false,false) + c:EnableReviveLimit() + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511002244.spcon) + e2:SetOperation(c511002244.spop) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(16304628,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c511002244.atkop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c511002244.cfilter(c,code) + return c:IsCode(code) and c:IsAbleToGraveAsCost() +end +function c511002244.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local g1=Duel.GetMatchingGroup(c511002244.cfilter,tp,LOCATION_HAND,0,nil,98049038) + local g2=Duel.GetMatchingGroup(c511002244.cfilter,tp,LOCATION_HAND,0,nil,511002240) + local g3=Duel.GetMatchingGroup(c511002244.cfilter,tp,LOCATION_HAND,0,nil,511000660) + if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c511002244.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.GetMatchingGroup(c511002244.cfilter,tp,LOCATION_HAND,0,nil,98049038) + local g2=Duel.GetMatchingGroup(c511002244.cfilter,tp,LOCATION_HAND,0,nil,511002240) + local g3=Duel.GetMatchingGroup(c511002244.cfilter,tp,LOCATION_HAND,0,nil,511000660) + g1:Merge(g2) + g1:Merge(g3) + local g=Group.CreateGroup() + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tc=g1:Select(tp,1,1,nil):GetFirst() + g:AddCard(tc) + g1:Remove(Card.IsCode,nil,tc:GetCode()) + end + Duel.SendtoGrave(g,REASON_COST) +end +function c511002244.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local atk=tc:GetBaseAttack() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end diff --git a/script/c511002245.lua b/script/c511002245.lua new file mode 100644 index 00000000..2836d9a7 --- /dev/null +++ b/script/c511002245.lua @@ -0,0 +1,79 @@ +--Solidroid beta +function c511002245.initial_effect(c) + aux.AddFusionProcCode3(c,98049038,511002240,511000660,false,false) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511002245.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511002245.spcon) + e2:SetOperation(c511002245.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(16304628,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c511002245.destg) + e3:SetOperation(c511002245.desop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c511002245.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c511002245.spfilter(c,code) + return c:IsCode(code) and c:IsAbleToRemoveAsCost() +end +function c511002245.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local g1=Duel.GetMatchingGroup(c511002245.spfilter,tp,LOCATION_GRAVE,0,nil,98049038) + local g2=Duel.GetMatchingGroup(c511002245.spfilter,tp,LOCATION_GRAVE,0,nil,511002240) + local g3=Duel.GetMatchingGroup(c511002245.spfilter,tp,LOCATION_GRAVE,0,nil,511000660) + if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c511002245.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.GetMatchingGroup(c511002245.spfilter,tp,LOCATION_GRAVE,0,nil,98049038) + local g2=Duel.GetMatchingGroup(c511002245.spfilter,tp,LOCATION_GRAVE,0,nil,511002240) + local g3=Duel.GetMatchingGroup(c511002245.spfilter,tp,LOCATION_GRAVE,0,nil,511000660) + g1:Merge(g2) + g1:Merge(g3) + local g=Group.CreateGroup() + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local tc=g1:Select(tp,1,1,nil):GetFirst() + g:AddCard(tc) + g1:Remove(Card.IsCode,nil,tc:GetCode()) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002245.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002245.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002246.lua b/script/c511002246.lua new file mode 100644 index 00000000..fe19e44d --- /dev/null +++ b/script/c511002246.lua @@ -0,0 +1,93 @@ +--Solidroid gamma +function c511002246.initial_effect(c) + aux.AddFusionProcCode3(c,511002240,511000660,98049038,false,false) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511002246.splimit) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511002246.spcon) + e2:SetOperation(c511002246.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(16304628,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c511002246.destg) + e3:SetOperation(c511002246.desop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c511002246.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c511002246.spfilter(c,code) + return c:IsCode(code) and c:IsAbleToRemoveAsCost() +end +function c511002246.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + local g1=Duel.GetMatchingGroup(c511002246.spfilter,tp,LOCATION_ONFIELD,0,nil,511002240) + local g2=Duel.GetMatchingGroup(c511002246.spfilter,tp,LOCATION_ONFIELD,0,nil,511000660) + local g3=Duel.GetMatchingGroup(c511002246.spfilter,tp,LOCATION_ONFIELD,0,nil,98049038) + if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f3=g3:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + if ft==-2 then return f1+f2+f3==3 + elseif ft==-1 then return f1+f2+f3>=2 + else return f1+f2+f3>=1 end +end +function c511002246.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c511002246.spfilter,tp,LOCATION_ONFIELD,0,nil,511002240) + local g2=Duel.GetMatchingGroup(c511002246.spfilter,tp,LOCATION_ONFIELD,0,nil,511000660) + local g3=Duel.GetMatchingGroup(c511002246.spfilter,tp,LOCATION_ONFIELD,0,nil,98049038) + g1:Merge(g2) + g1:Merge(g3) + local g=Group.CreateGroup() + local tc=nil + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + g1:Remove(Card.IsCode,nil,tc:GetCode()) + ft=ft+1 + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002246.filter(c) + return c:IsFacedown() and c:IsDestructable() +end +function c511002246.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511002246.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002246.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002246.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511002247.lua b/script/c511002247.lua new file mode 100644 index 00000000..9c65aa90 --- /dev/null +++ b/script/c511002247.lua @@ -0,0 +1,24 @@ +--Escape +function c511002247.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002247.target) + e1:SetOperation(c511002247.activate) + c:RegisterEffect(e1) +end +function c511002247.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511002247.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end diff --git a/script/c511002248.lua b/script/c511002248.lua new file mode 100644 index 00000000..6b538d2e --- /dev/null +++ b/script/c511002248.lua @@ -0,0 +1,34 @@ +--March of the roid +function c511002248.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002248.condition) + e1:SetTarget(c511002248.target) + e1:SetOperation(c511002248.activate) + c:RegisterEffect(e1) +end +function c511002248.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x16) +end +function c511002248.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002248.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511002248.filter(c,e,tp) + return c:IsSetCard(0x16) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002248.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002248.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002248.activate(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,c511002248.filter,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 diff --git a/script/c511002249.lua b/script/c511002249.lua new file mode 100644 index 00000000..53eb3c38 --- /dev/null +++ b/script/c511002249.lua @@ -0,0 +1,29 @@ +--Old Model to the Frontline +function c511002249.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002249.target) + e1:SetOperation(c511002249.activate) + c:RegisterEffect(e1) +end +function c511002249.filter(c,e,tp) + return c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002249.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511002249.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002249.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002249.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002249.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002250.lua b/script/c511002250.lua new file mode 100644 index 00000000..560ed3fd --- /dev/null +++ b/script/c511002250.lua @@ -0,0 +1,37 @@ +--アクア・ジェット +function c511002250.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002250.target) + e1:SetOperation(c511002250.activate) + c:RegisterEffect(e1) +end +function c511002250.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c511002250.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002250.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002250.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511002250.filter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(300) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(300) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002251.lua b/script/c511002251.lua new file mode 100644 index 00000000..a21d9fae --- /dev/null +++ b/script/c511002251.lua @@ -0,0 +1,81 @@ +--Transformation +function c511002251.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002251.target) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(39131963,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCondition(c511002251.descon) + e2:SetTarget(c511002251.destg) + e2:SetOperation(c511002251.desop) + e2:SetLabel(0) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000083,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511002251.damcon) + e3:SetTarget(c511002251.damtg) + e3:SetOperation(c511002251.damop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) +end +function c511002251.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + e:GetLabelObject():SetLabel(0) +end +function c511002251.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and tp~=Duel.GetTurnPlayer() +end +function c511002251.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local a=Duel.GetAttacker() + Duel.SetTargetCard(a) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,a,1,0,0) +end +function c511002251.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local a=Duel.GetAttacker() + if a and a:IsRelateToEffect(e) then + local atk=a:GetAttack() + if Duel.Destroy(a,REASON_EFFECT)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002251.damopx) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + if atk<=0 then return end + e:SetLabel(e:GetLabel()+atk) + end + end +end +function c511002251.damopx(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511002251.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) +end +function c511002251.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local dam=e:GetLabelObject():GetLabel() + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,dam) +end +function c511002251.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + e:GetLabelObject():SetLabel(0) +end diff --git a/script/c511002252.lua b/script/c511002252.lua new file mode 100644 index 00000000..ced19f11 --- /dev/null +++ b/script/c511002252.lua @@ -0,0 +1,32 @@ +--Loaner Delivery +function c511002252.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002252.condition) + e1:SetTarget(c511002252.target) + e1:SetOperation(c511002252.activate) + c:RegisterEffect(e1) +end +function c511002252.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsRace,1,nil,RACE_MACHINE) +end +function c511002252.filter(c,e,tp) + return c:IsRace(RACE_MACHINE) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002252.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002252.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002252.activate(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,c511002252.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002253.lua b/script/c511002253.lua new file mode 100644 index 00000000..e0318214 --- /dev/null +++ b/script/c511002253.lua @@ -0,0 +1,37 @@ +--Mechanic's Soul +function c511002253.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCost(c511002253.cost) + e1:SetTarget(c511002253.target) + e1:SetOperation(c511002253.activate) + c:RegisterEffect(e1) +end +function c511002253.cfilter(c) + return c:IsSetCard(0x16) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511002253.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002253.cfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002253.cfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002253.filter(c,tp) + return c:IsSetCard(0x16) and c:GetPreviousControler()==tp and c:IsControler(tp) and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511002253.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511002253.filter,nil,tp) + local tc=g:GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and g:GetCount()==1 end + Duel.SetTargetCard(tc) +end +function c511002253.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,tc:GetPreviousPosition(),true) + end +end diff --git a/script/c511002254.lua b/script/c511002254.lua new file mode 100644 index 00000000..3a358c60 --- /dev/null +++ b/script/c511002254.lua @@ -0,0 +1,33 @@ +--Return Ticket +function c511002254.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c511002254.target) + e1:SetOperation(c511002254.activate) + c:RegisterEffect(e1) +end +function c511002254.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002254.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(Card.IsRace,nil,RACE_MACHINE) + local tc=g:GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()==1 + and Duel.IsExistingMatchingCard(c511002254.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,tc:GetCode()) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002254.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not tc then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002254.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,tc:GetCode()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002256.lua b/script/c511002256.lua new file mode 100644 index 00000000..4e374f97 --- /dev/null +++ b/script/c511002256.lua @@ -0,0 +1,34 @@ +--Dragonic Contract +function c511002256.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002256.condition) + e1:SetTarget(c511002256.target) + e1:SetOperation(c511002256.activate) + c:RegisterEffect(e1) +end +function c511002256.cfilter(c) + return c:IsFaceup() and c:IsCode(511002255) +end +function c511002256.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002256.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511002256.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002256.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002256.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511002256.activate(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,c511002256.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002260.lua b/script/c511002260.lua new file mode 100644 index 00000000..4e0d7f9b --- /dev/null +++ b/script/c511002260.lua @@ -0,0 +1,34 @@ +--アイス・ブリザード・マスター +function c511002260.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(32750510,1)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002260.descost) + e1:SetTarget(c511002260.destg) + e1:SetOperation(c511002260.desop) + c:RegisterEffect(e1) +end +function c511002260.cfilter(c) + return c:IsFaceup() and c:IsCode(511000396) and c:IsAbleToGraveAsCost() +end +function c511002260.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002260.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002260.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002260.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002260.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002260.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002260.filter(c) + return c:GetCounter(0x15)>0 and c:IsDestructable() +end +function c511002260.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002260.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511002261.lua b/script/c511002261.lua new file mode 100644 index 00000000..ad3f0ba2 --- /dev/null +++ b/script/c511002261.lua @@ -0,0 +1,34 @@ +--氷の女王 +function c511002261.initial_effect(c) + --damage + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(15187079,0)) + e7:SetCategory(CATEGORY_CONTROL) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetProperty(EFFECT_FLAG_CARD_TARGET) + e7:SetRange(LOCATION_MZONE) + e7:SetCost(c511002261.ctcost) + e7:SetTarget(c511002261.cttg) + e7:SetOperation(c511002261.ctop) + c:RegisterEffect(e7) +end +function c511002261.ctcost(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 c511002261.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToChangeControler() +end +function c511002261.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002261.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002261.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511002261.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511002261.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c511002262.lua b/script/c511002262.lua new file mode 100644 index 00000000..9f419888 --- /dev/null +++ b/script/c511002262.lua @@ -0,0 +1,26 @@ +--Ittan Momen +function c511002262.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56223084,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DESTROYED) + e1:SetOperation(c511002262.operation) + c:RegisterEffect(e1) +end +function c511002262.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002263.lua b/script/c511002263.lua new file mode 100644 index 00000000..f6c68551 --- /dev/null +++ b/script/c511002263.lua @@ -0,0 +1,42 @@ +--赤鬼 +function c511002263.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetDescription(aux.Stringid(38757297,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c511002263.cost) + e1:SetTarget(c511002263.tg) + e1:SetOperation(c511002263.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002263.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local hct=hg:GetCount() + if chk==0 then return hg:GetCount()>0 and hg:FilterCount(Card.IsAbleToGraveAsCost,nil)==hct + and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,hct,nil) end + e:SetLabel(0) + Duel.SendtoGrave(hg,REASON_COST) + e:SetLabel(hct) +end +function c511002263.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,e:GetLabel(),0,0) +end +function c511002263.op(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + if g:GetCount()0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,23116809,0,0x4011,100,100,1,RACE_PYRO,ATTRIBUTE_FIRE) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002267.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,23116809,0,0x4011,100,100,1,RACE_PYRO,ATTRIBUTE_FIRE) then return end + local token=Duel.CreateToken(tp,23116809) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + token:RegisterEffect(e2) +end diff --git a/script/c511002268.lua b/script/c511002268.lua new file mode 100644 index 00000000..d7bffb31 --- /dev/null +++ b/script/c511002268.lua @@ -0,0 +1,43 @@ +--怨念の魂 業火 +function c511002268.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeRep(c,23116809,3,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --gain atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511002268.cost) + e2:SetOperation(c511002268.op) + c:RegisterEffect(e2) +end +function c511002268.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_MZONE,0,nil,23116809) + local c=e:GetHandler() + if chk==0 then return g:GetCount()>0 and g:FilterCount(Card.IsCanBeFusionMaterial,nil)==g:GetCount() end + e:SetLabel(g:GetCount()) + local mg=c:GetMaterial() + mg:Merge(g) + c:SetMaterial(mg) + Duel.SendtoGrave(g,REASON_COST+REASON_MATERIAL+REASON_FUSION) +end +function c511002268.op(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()*100) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002269.lua b/script/c511002269.lua new file mode 100644 index 00000000..33699b2d --- /dev/null +++ b/script/c511002269.lua @@ -0,0 +1,72 @@ +--Gathering of Malice +function c511002269.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002269.target) + e1:SetOperation(c511002269.activate) + c:RegisterEffect(e1) +end +function c511002269.filter0(c,tp) + return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() and c:IsCode(23116809) +end +function c511002269.filter1(c,e,tp) + return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) and c:IsCode(23116809) +end +function c511002269.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) and c:IsCode(23116808) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511002269.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002269.filter0,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local res=Duel.IsExistingMatchingCard(c511002269.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511002269.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002269.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002269.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e,tp) + local sg1=Duel.GetMatchingGroup(c511002269.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511002269.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511002270.lua b/script/c511002270.lua new file mode 100644 index 00000000..3ae2ca06 --- /dev/null +++ b/script/c511002270.lua @@ -0,0 +1,16 @@ +--Fate of the Living +function c511002270.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --race + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_GRAVE,LOCATION_GRAVE) + e2:SetCode(EFFECT_CHANGE_RACE) + e2:SetValue(0x10000000) + c:RegisterEffect(e2) +end diff --git a/script/c511002271.lua b/script/c511002271.lua new file mode 100644 index 00000000..4392d430 --- /dev/null +++ b/script/c511002271.lua @@ -0,0 +1,27 @@ +--Spirit Rest +function c511002271.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002271.target) + e1:SetOperation(c511002271.activate) + c:RegisterEffect(e1) +end +function c511002271.filter(c) + return c:IsAbleToGrave() and c:IsRace(0x10000000) +end +function c511002271.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002271.filter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(c511002271.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c511002271.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002271.filter,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c511002272.lua b/script/c511002272.lua new file mode 100644 index 00000000..6a1ea323 --- /dev/null +++ b/script/c511002272.lua @@ -0,0 +1,57 @@ +-- Saber of Malice +function c511002272.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(c511002272.target) + e1:SetOperation(c511002272.operation) + c:RegisterEffect(e1) + -- Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) + -- destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002272.descon) + e2:SetTarget(c511002272.destg) + e2:SetOperation(c511002272.desop) + c:RegisterEffect(e2) +end +function c511002272.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 c511002272.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002272.descon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + local d=Duel.GetAttackTarget() + return ec==Duel.GetAttacker() and d and d:IsDefensePos() and ec:IsRace(0x10000000) +end +function c511002272.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttackTarget(),1,0,0) +end +function c511002272.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + if tc and tc:IsRelateToBattle() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002273.lua b/script/c511002273.lua new file mode 100644 index 00000000..52c4d863 --- /dev/null +++ b/script/c511002273.lua @@ -0,0 +1,32 @@ +--Haunted Shrine +function c511002273.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c511002273.condition) + e1:SetTarget(c511002273.target) + e1:SetOperation(c511002273.activate) + c:RegisterEffect(e1) +end +function c511002273.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511002273.filter(c,e,tp) + return c:IsRace(0x10000000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002273.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002273.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_GRAVE) +end +function c511002273.activate(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,c511002273.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002274.lua b/script/c511002274.lua new file mode 100644 index 00000000..c4913998 --- /dev/null +++ b/script/c511002274.lua @@ -0,0 +1,43 @@ +--Judgment of the Underworld Ruler +function c511002274.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON) + e1:SetCondition(c511002274.condition) + e1:SetTarget(c511002274.target) + e1:SetOperation(c511002274.activate) + c:RegisterEffect(e1) +end +function c511002274.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 and rp~=tp +end +function c511002274.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c511002274.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsRace(0x10000000) and c:IsAbleToRemoveAsCost() +end +function c511002274.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsCode(68722455) +end +function c511002274.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) + Duel.BreakEffect() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + local g=Duel.GetMatchingGroup(c511002274.cfilter,tp,LOCATION_GRAVE,0,nil) + local spg=Duel.GetMatchingGroup(c511002274.filter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>4 and spg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(62742651,2)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=g:Select(tp,5,5,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp=spg:Select(tp,1,1,nil) + Duel.SpecialSummon(sp,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002275.lua b/script/c511002275.lua new file mode 100644 index 00000000..801336f5 --- /dev/null +++ b/script/c511002275.lua @@ -0,0 +1,35 @@ +--Vindictive Spirits +function c511002275.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002275.condition) + e1:SetTarget(c511002275.target) + e1:SetOperation(c511002275.activate) + c:RegisterEffect(e1) +end +function c511002275.spfilter(c,tp) + return c:GetSummonPlayer()==1-tp and c:IsPreviousLocation(LOCATION_GRAVE) +end +function c511002275.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002275.spfilter,1,nil,tp) +end +function c511002275.filter(c,e,tp) + return c:IsRace(0x10000000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002275.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002275.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002275.activate(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,c511002275.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002276.lua b/script/c511002276.lua new file mode 100644 index 00000000..b4472081 --- /dev/null +++ b/script/c511002276.lua @@ -0,0 +1,15 @@ +--サイバー・ダイナソー +function c511002276.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetCondition(c511002276.dircon) + c:RegisterEffect(e1) +end +function c511002276.dircon(e) + local tp=e:GetHandlerPlayer() + return not Duel.IsExistingMatchingCard(Card.IsType,tp,0,LOCATION_ONFIELD,1,nil,TYPE_SPELL+TYPE_TRAP) + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)==1 + and not Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511002277.lua b/script/c511002277.lua new file mode 100644 index 00000000..dbc1cc15 --- /dev/null +++ b/script/c511002277.lua @@ -0,0 +1,37 @@ +--堕天使ディザイア +function c511002277.initial_effect(c) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(55690251,1)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002277.cost) + e1:SetTarget(c511002277.target) + e1:SetOperation(c511002277.operation) + c:RegisterEffect(e1) +end +function c511002277.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetAttack()>=1000 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511002277.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c511002277.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c511002279.lua b/script/c511002279.lua new file mode 100644 index 00000000..272074e1 --- /dev/null +++ b/script/c511002279.lua @@ -0,0 +1,34 @@ +--Dark Mist +function c511002279.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:SetOperation(c511002279.activate) + c:RegisterEffect(e1) +end +function c511002279.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:SetOperation(c511002279.operation) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511002279.cfilter(c,lv) + return c:GetLevel()==lv and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToGraveAsCost() +end +function c511002279.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if not a then return end + local lv=a:GetLevel() + if Duel.IsExistingMatchingCard(c511002279.cfilter,tp,LOCATION_DECK,0,1,nil,lv) + and Duel.SelectYesNo(tp,aux.Stringid(92720564,0)) then + Duel.Hint(HINT_CARD,0,511002279) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002279.cfilter,tp,LOCATION_DECK,0,1,1,nil,lv) + Duel.SendtoGrave(g,REASON_COST) + Duel.NegateAttack() + end +end diff --git a/script/c511002280.lua b/script/c511002280.lua new file mode 100644 index 00000000..8e7f9273 --- /dev/null +++ b/script/c511002280.lua @@ -0,0 +1,30 @@ +--Fallen Angel's Bewitchment +function c511002280.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002280.condition) + e1:SetTarget(c511002280.target) + e1:SetOperation(c511002280.activate) + c:RegisterEffect(e1) +end +function c511002280.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) and c:IsAttribute(ATTRIBUTE_DARK) +end +function c511002280.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002280.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002280.target(e,tp,eg,ep,ev,re,r,rp,chk) + local p=1-Duel.GetTurnPlayer() + if chk==0 then return Duel.IsExistingMatchingCard(nil,p,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end +end +function c511002280.activate(e,tp,eg,ep,ev,re,r,rp) + local p=1-Duel.GetTurnPlayer() + local g=Duel.SelectMatchingCard(tp,nil,p,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511002281.lua b/script/c511002281.lua new file mode 100644 index 00000000..0890813d --- /dev/null +++ b/script/c511002281.lua @@ -0,0 +1,23 @@ +--Flash of Dark Lightning +function c511002281.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON) + e1:SetCondition(c511002281.condition) + e1:SetTarget(c511002281.target) + e1:SetOperation(c511002281.activate) + c:RegisterEffect(e1) +end +function c511002281.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsControler,1,nil,1-tp) and Duel.GetCurrentChain()==0 +end +function c511002281.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) +end +function c511002281.activate(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(Card.IsControler,nil,1-tp) + Duel.NegateSummon(eg) +end diff --git a/script/c511002282.lua b/script/c511002282.lua new file mode 100644 index 00000000..3b231aa2 --- /dev/null +++ b/script/c511002282.lua @@ -0,0 +1,25 @@ +--Black Mamba +function c511002282.initial_effect(c) + --pos + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(42647539,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c511002282.posop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002282.posop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectMatchingCard(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511002284.lua b/script/c511002284.lua new file mode 100644 index 00000000..a2482e1a --- /dev/null +++ b/script/c511002284.lua @@ -0,0 +1,28 @@ +--Poisonous Viper +function c511002284.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(46128076,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002284.condition) + e1:SetTarget(c511002284.target) + e1:SetOperation(c511002284.operation) + c:RegisterEffect(e1) +end +function c511002284.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511002284.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,500) +end +function c511002284.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Damage(e:GetHandlerPlayer(),d,REASON_EFFECT) +end diff --git a/script/c511002285.lua b/script/c511002285.lua new file mode 100644 index 00000000..63e2b13d --- /dev/null +++ b/script/c511002285.lua @@ -0,0 +1,37 @@ +--Urubonus, the Avatar of Malice +function c511002285.initial_effect(c) + --atk change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79491903,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCountLimit(1) + e1:SetCondition(c511002285.atkcon) + e1:SetOperation(c511002285.atkop) + c:RegisterEffect(e1) +end +function c511002285.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local a=Duel.GetAttacker() + if a==c then a=Duel.GetAttackTarget() end + return a and a:IsRelateToBattle() +end +function c511002285.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc==c then tc=Duel.GetAttackTarget() end + if tc:IsFacedown() or not tc:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-300) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(-300) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) +end diff --git a/script/c511002286.lua b/script/c511002286.lua new file mode 100644 index 00000000..cb72b7af --- /dev/null +++ b/script/c511002286.lua @@ -0,0 +1,44 @@ +--サイバー・エルタニン +function c511002286.initial_effect(c) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002286.destg) + e1:SetOperation(c511002286.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_SET_ATTACK) + e4:SetValue(c511002286.value) + c:RegisterEffect(e4) +end +function c511002286.filter(c) + return c:IsFaceup() and c:IsSetCard(0x93) +end +function c511002286.value(e,c) + return Duel.GetMatchingGroupCount(c511002286.filter,0,LOCATION_REMOVED,LOCATION_REMOVED,nil)*500 +end +function c511002286.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) + and Duel.GetMatchingGroupCount(c511002286.filter,0,LOCATION_REMOVED,LOCATION_REMOVED,nil)>0 end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) +end +function c511002286.desop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c511002286.filter,0,LOCATION_REMOVED,LOCATION_REMOVED,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,ct,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002287.lua b/script/c511002287.lua new file mode 100644 index 00000000..8e2b9484 --- /dev/null +++ b/script/c511002287.lua @@ -0,0 +1,68 @@ +--Cyber Roar +function c511002287.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(c511002287.target) + e1:SetOperation(c511002287.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + 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(c511002287.eqlimit) + c:RegisterEffect(e3) + --draw + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(78586116,0)) + e4:SetCategory(CATEGORY_DRAW) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(511002287) + e4:SetTarget(c511002287.drtg) + e4:SetOperation(c511002287.drop) + c:RegisterEffect(e4) +end +function c511002287.eqlimit(e,c) + return c:IsSetCard(0x93) +end +function c511002287.filter(c) + return c:IsFaceup() and c:IsSetCard(0x93) +end +function c511002287.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002287.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002287.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002287.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002287.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + if tc:IsCode(70095154) then + Duel.RaiseSingleEvent(c,511002287,e,0,0,0,0,0) + end + end +end +function c511002287.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002287.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002288.lua b/script/c511002288.lua new file mode 100644 index 00000000..212246f5 --- /dev/null +++ b/script/c511002288.lua @@ -0,0 +1,48 @@ +--Emergency Cyber +function c511002288.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002288.target) + e1:SetOperation(c511002288.activate) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c511002288.thcost) + e2:SetTarget(c511002288.thtg) + e2:SetOperation(c511002288.thop) + c:RegisterEffect(e2) +end +function c511002288.filter(c) + return c:IsLevelAbove(8) and c:IsSetCard(0x93) and c:IsAbleToHand() +end +function c511002288.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002288.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002288.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002288.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c511002288.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c511002288.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c511002288.thop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + end +end diff --git a/script/c511002289.lua b/script/c511002289.lua new file mode 100644 index 00000000..49232b5e --- /dev/null +++ b/script/c511002289.lua @@ -0,0 +1,18 @@ +--Air Sphere +function c511002289.initial_effect(c) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c511002289.con) + c:RegisterEffect(e2) +end +function c511002289.filter(c) + return c:IsFaceup() and (c:IsCode(511002289) or c:IsCode(511002290) or c:IsCode(14466224) + or c:IsCode(72144675) or c:IsCode(66094973) or c:IsCode(511002291) or c:IsCode(511002292)) +end +function c511002289.con(e) + return Duel.IsExistingMatchingCard(c511002289.filter,e:GetHandlerPlayer(),LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end diff --git a/script/c511002290.lua b/script/c511002290.lua new file mode 100644 index 00000000..40aa8f49 --- /dev/null +++ b/script/c511002290.lua @@ -0,0 +1,20 @@ +--Breeze Sphere +function c511002290.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002290.spcon) + c:RegisterEffect(e1) +end +function c511002290.filter(c) + return c:IsFaceup() and c:IsLevelAbove(5) +end +function c511002290.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002290.filter,tp,0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511002291.lua b/script/c511002291.lua new file mode 100644 index 00000000..85080758 --- /dev/null +++ b/script/c511002291.lua @@ -0,0 +1,35 @@ +--Synthesize Sphere +function c511002291.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14943837,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002291.sumtg) + e1:SetOperation(c511002291.sumop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002291.filter(c,e,tp) + return (c:IsCode(511002289) or c:IsCode(511002290) or c:IsCode(14466224) or c:IsCode(72144675) + or c:IsCode(66094973) or c:IsCode(511002291) or c:IsCode(511002292)) and c:IsLevelBelow(4) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002291.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002291.sumop(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,c511002291.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002292.lua b/script/c511002292.lua new file mode 100644 index 00000000..bfc1ec97 --- /dev/null +++ b/script/c511002292.lua @@ -0,0 +1,33 @@ +--Virtual Sphere +function c511002292.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(54629413,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002292.sumcon) + e1:SetTarget(c511002292.sumtg) + e1:SetOperation(c511002292.sumop) + c:RegisterEffect(e1) +end +function c511002292.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511002292.filter(c,e,tp) + return (c:IsCode(511002289) or c:IsCode(511002290) or c:IsCode(14466224) or c:IsCode(72144675) + or c:IsCode(66094973) or c:IsCode(511002291) or c:IsCode(511002292)) and c:IsLevelBelow(4) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002292.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002292.sumop(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,c511002292.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002293.lua b/script/c511002293.lua new file mode 100644 index 00000000..cfa1eaaf --- /dev/null +++ b/script/c511002293.lua @@ -0,0 +1,91 @@ +--The アトモスフィア +function c511002293.initial_effect(c) + --summon with 3 tribute + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(78651105,1)) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SUMMON_PROC) + e3:SetCondition(c511002293.ttcon) + e3:SetOperation(c511002293.ttop) + e3:SetValue(SUMMON_TYPE_ADVANCE+1) + c:RegisterEffect(e3) + --equip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95100269,0)) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002293.eqcon) + e2:SetTarget(c511002293.eqtg) + e2:SetOperation(c511002293.eqop) + c:RegisterEffect(e2) +end +function c511002293.ttcon(e,c) + if c==nil then return true end + return Duel.GetTributeCount(c)>=3 +end +function c511002293.ttop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g, REASON_SUMMON+REASON_MATERIAL) +end +function c511002293.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=e:GetLabelObject() + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE+1 +end +function c511002293.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToChangeControler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511002293.eqlimit(e,c) + return e:GetOwner()==c +end +function c511002293.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + local def=tc:GetTextDefense() + if atk<0 or tc:IsFacedown() then atk=0 end + if def<0 or tc:IsFacedown() then def=0 end + if not Duel.Equip(tp,tc,c,false) then return end + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002293.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + if def>0 then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(def) + tc:RegisterEffect(e3) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end diff --git a/script/c511002294.lua b/script/c511002294.lua new file mode 100644 index 00000000..b6effa3d --- /dev/null +++ b/script/c511002294.lua @@ -0,0 +1,25 @@ +--Excavation Work +function c511002294.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002294.target) + e1:SetOperation(c511002294.activate) + c:RegisterEffect(e1) +end +function c511002294.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,LOCATION_HAND,0,1,nil) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) +end +function c511002294.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardHand(p,nil,d,d,REASON_EFFECT) + if Duel.IsPlayerCanDraw(p,1) and Duel.SelectYesNo(p,aux.Stringid(22093873,0)) then + Duel.Draw(p,1,REASON_EFFECT) + end +end diff --git a/script/c511002295.lua b/script/c511002295.lua new file mode 100644 index 00000000..a9f7dfe5 --- /dev/null +++ b/script/c511002295.lua @@ -0,0 +1,15 @@ +--真実の眼 +function c511002295.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_PUBLIC) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_HAND) + c:RegisterEffect(e2) +end diff --git a/script/c511002296.lua b/script/c511002296.lua new file mode 100644 index 00000000..d4b9c236 --- /dev/null +++ b/script/c511002296.lua @@ -0,0 +1,33 @@ +--Air Barrier +function c511002296.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(c511002296.condition) + e1:SetOperation(c511002296.activate) + c:RegisterEffect(e1) +end +function c511002296.cfilter(c) + return c:IsFaceup() and (c:IsCode(511002289) or c:IsCode(511002290) or c:IsCode(14466224) or c:IsCode(72144675) + or c:IsCode(66094973) or c:IsCode(511002291) or c:IsCode(511002292)) +end +function c511002296.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002296.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002296.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) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(0,LOCATION_MZONE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c511002297.lua b/script/c511002297.lua new file mode 100644 index 00000000..431ffa77 --- /dev/null +++ b/script/c511002297.lua @@ -0,0 +1,38 @@ +--Atmospheric Regeneration +function c511002297.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002297.condition) + e1:SetTarget(c511002297.target) + e1:SetOperation(c511002297.activate) + c:RegisterEffect(e1) +end +function c511002297.cfilter(c) + return c:IsCode(511002289) or c:IsCode(511002290) or c:IsCode(14466224) or c:IsCode(72144675) + or c:IsCode(66094973) or c:IsCode(511002291) or c:IsCode(511002292) +end +function c511002297.filter(c,e,tp) + return (c:IsCode(511002289) or c:IsCode(511002290) or c:IsCode(14466224) or c:IsCode(72144675) + or c:IsCode(66094973) or c:IsCode(511002291) or c:IsCode(511002292)) and c:IsLevelBelow(4) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002297.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002297.cfilter,1,nil) +end +function c511002297.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002297.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002297.activate(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,c511002297.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002298.lua b/script/c511002298.lua new file mode 100644 index 00000000..0e80b178 --- /dev/null +++ b/script/c511002298.lua @@ -0,0 +1,37 @@ +--Atmospheric Transference +function c511002298.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002298.condition) + e1:SetTarget(c511002298.target) + e1:SetOperation(c511002298.activate) + c:RegisterEffect(e1) +end +function c511002298.cfilter(c) + return c:IsFaceup() and (c:IsCode(511002289) or c:IsCode(511002290) or c:IsCode(14466224) or c:IsCode(72144675) + or c:IsCode(66094973) or c:IsCode(511002291) or c:IsCode(511002292)) +end +function c511002298.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002298.cfilter,1,nil) +end +function c511002298.filter(c,e,tp) + return (c:IsCode(511002289) or c:IsCode(511002290) or c:IsCode(14466224) or c:IsCode(72144675) + or c:IsCode(66094973) or c:IsCode(511002291) or c:IsCode(511002292)) and c:IsLevelBelow(4) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002298.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002298.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002298.activate(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,c511002298.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002299.lua b/script/c511002299.lua new file mode 100644 index 00000000..98633e6e --- /dev/null +++ b/script/c511002299.lua @@ -0,0 +1,24 @@ +--Unbroken Atmosphere +function c511002299.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002299.condition) + e1:SetOperation(c511002299.activate) + c:RegisterEffect(e1) +end +function c511002299.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttackTarget() + return a and a:IsFaceup() and (a:IsCode(511002289) or a:IsCode(511002290) or a:IsCode(14466224) or a:IsCode(72144675) + or a:IsCode(66094973) or a:IsCode(511002291) or a:IsCode(511002292)) and a:IsControler(tp) +end +function c511002299.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511002302.lua b/script/c511002302.lua new file mode 100644 index 00000000..249ea4fa --- /dev/null +++ b/script/c511002302.lua @@ -0,0 +1,31 @@ +--Quality +function c511002302.initial_effect(c) + --Special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(13803864,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c511002302.sptg) + e1:SetOperation(c511002302.spop) + c:RegisterEffect(e1) +end +function c511002302.spfilter(c,e,tp) + return c:IsCode(511002301) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002302.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002302.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002302.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002302.spfilter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002303.lua b/script/c511002303.lua new file mode 100644 index 00000000..005a9db8 --- /dev/null +++ b/script/c511002303.lua @@ -0,0 +1,26 @@ +--Aftershock +function c511002303.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511002303.target) + e1:SetOperation(c511002303.activate) + c:RegisterEffect(e1) +end +function c511002303.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if chk==0 then return tg:IsControler(tp) and tg:IsOnField() and d and d:IsDefensePos() end + Duel.SetTargetCard(tg) +end +function c511002303.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002304.lua b/script/c511002304.lua new file mode 100644 index 00000000..f48a1f32 --- /dev/null +++ b/script/c511002304.lua @@ -0,0 +1,20 @@ +--Indestructible Armor Plating +function c511002304.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511002304.target) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511002304.target(e,c) + return c:IsCode(511002301) and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end diff --git a/script/c511002305.lua b/script/c511002305.lua new file mode 100644 index 00000000..0965c685 --- /dev/null +++ b/script/c511002305.lua @@ -0,0 +1,28 @@ +--Long-Range Strike +function c511002305.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002305.target) + e1:SetOperation(c511002305.activate) + c:RegisterEffect(e1) +end +function c511002305.filter(c) + return c:IsFaceup() and c:IsLevelBelow(3) and c:IsRace(RACE_MACHINE) +end +function c511002305.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511002305.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511002305.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002305.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002306.lua b/script/c511002306.lua new file mode 100644 index 00000000..3b16154b --- /dev/null +++ b/script/c511002306.lua @@ -0,0 +1,33 @@ +--Prototype Development +function c511002306.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002306.cost) + e1:SetTarget(c511002306.target) + e1:SetOperation(c511002306.activate) + c:RegisterEffect(e1) +end +function c511002306.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_MACHINE) end + local g=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,RACE_MACHINE) + Duel.Release(g,REASON_COST) +end +function c511002306.filter(c,e,tp) + return c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002306.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511002306.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002306.activate(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,c511002306.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002307.lua b/script/c511002307.lua new file mode 100644 index 00000000..860cd764 --- /dev/null +++ b/script/c511002307.lua @@ -0,0 +1,35 @@ +--Replacement Parts +function c511002307.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002307.cost) + e1:SetTarget(c511002307.target) + e1:SetOperation(c511002307.activate) + c:RegisterEffect(e1) +end +function c511002307.cfilter(c) + return c:IsRace(RACE_MACHINE) and c:IsAbleToGraveAsCost() +end +function c511002307.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002307.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002307.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002307.filter(c) + return c:GetLevel()==4 and c:IsRace(RACE_MACHINE) and c:IsAbleToHand() +end +function c511002307.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002307.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002307.activate(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002307.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511002308.lua b/script/c511002308.lua new file mode 100644 index 00000000..23fc3a6b --- /dev/null +++ b/script/c511002308.lua @@ -0,0 +1,33 @@ +--Scrap Storage +function c511002308.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002308.target) + e1:SetOperation(c511002308.activate) + c:RegisterEffect(e1) +end +function c511002308.filter(c,code) + return c:IsCode(code) and c:IsAbleToGrave() +end +function c511002308.tgfilter(c,tp) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) + and Duel.IsExistingMatchingCard(c511002308.filter,tp,LOCATION_DECK,0,1,nil,c:GetCode()) +end +function c511002308.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002308.tgfilter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002308.tgfilter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002308.tgfilter,tp,LOCATION_MZONE,0,1,1,nil,tp) +end +function c511002308.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002308.filter,tp,LOCATION_DECK,0,1,63,nil,tc:GetCode()) + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c511002309.lua b/script/c511002309.lua new file mode 100644 index 00000000..25d805ab --- /dev/null +++ b/script/c511002309.lua @@ -0,0 +1,28 @@ +--アテナ +function c511002309.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48964966,1)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002309.damcon) + e1:SetTarget(c511002309.damtg) + e1:SetOperation(c511002309.damop) + c:RegisterEffect(e1) +end +function c511002309.damcon(e,tp,eg,ep,ev,re,r,rp) + return not eg:IsContains(e:GetHandler()) +end +function c511002309.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511002309.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002310.lua b/script/c511002310.lua new file mode 100644 index 00000000..de55fd12 --- /dev/null +++ b/script/c511002310.lua @@ -0,0 +1,38 @@ +--Iofiel +function c511002310.initial_effect(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60549248,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCost(c511002310.cost) + e1:SetOperation(c511002310.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002310.cfilter(c) + return c:IsRace(RACE_FAIRY) and c:GetLevel()==1 and c:IsAbleToGraveAsCost() +end +function c511002310.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002310.cfilter,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002310.cfilter,tp,LOCATION_DECK,0,1,1,nil,tp) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002310.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002312.lua b/script/c511002312.lua new file mode 100644 index 00000000..8a5bfa7a --- /dev/null +++ b/script/c511002312.lua @@ -0,0 +1,21 @@ +--Shatiel +function c511002312.initial_effect(c) + --atk&def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FAIRY)) + e1:SetValue(c511002312.atkval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) +end +function c511002312.atkfilter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511002312.atkval(e,c) + return Duel.GetMatchingGroupCount(c511002312.atkfilter,c:GetControler(),LOCATION_MZONE,0,nil)*400 +end diff --git a/script/c511002315.lua b/script/c511002315.lua new file mode 100644 index 00000000..c18d87d8 --- /dev/null +++ b/script/c511002315.lua @@ -0,0 +1,12 @@ +--Zeriel +function c511002315.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FAIRY)) + e1:SetValue(500) + c:RegisterEffect(e1) +end diff --git a/script/c511002316.lua b/script/c511002316.lua new file mode 100644 index 00000000..f76fdcb9 --- /dev/null +++ b/script/c511002316.lua @@ -0,0 +1,47 @@ +--光学迷彩アーマー +function c511002316.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(c511002316.target) + e1:SetOperation(c511002316.operation) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetCondition(c511002316.con) + 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(c511002316.eqlimit) + c:RegisterEffect(e3) +end +function c511002316.eqlimit(e,c) + return c:IsLevelBelow(3) and c:IsRace(RACE_FAIRY) +end +function c511002316.filter(c) + return c:IsFaceup() and c:IsLevelBelow(3) and c:IsRace(RACE_FAIRY) +end +function c511002316.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002316.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002316.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002316.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002316.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002316.con(e) + return not Duel.IsExistingMatchingCard(Card.IsAttackPos,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511002317.lua b/script/c511002317.lua new file mode 100644 index 00000000..46b47397 --- /dev/null +++ b/script/c511002317.lua @@ -0,0 +1,17 @@ +--Angel Ring +function c511002317.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FAIRY)) + e2:SetValue(200) + c:RegisterEffect(e2) +end diff --git a/script/c511002318.lua b/script/c511002318.lua new file mode 100644 index 00000000..9e9431c8 --- /dev/null +++ b/script/c511002318.lua @@ -0,0 +1,29 @@ +--Holy Sanctuary +function c511002318.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --decrease tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DECREASE_TRIBUTE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FAIRY)) + e2:SetValue(0x1) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c511002318.target) + e3:SetValue(-500) + c:RegisterEffect(e3) +end +function c511002318.target(e,c) + return c:IsFaceup() and not c:IsRace(RACE_FAIRY) +end diff --git a/script/c511002319.lua b/script/c511002319.lua new file mode 100644 index 00000000..aea6afc8 --- /dev/null +++ b/script/c511002319.lua @@ -0,0 +1,32 @@ +--ヘカテリス +function c511002319.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74130411,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511002319.thcon) + e1:SetTarget(c511002319.thtg) + e1:SetOperation(c511002319.thop) + c:RegisterEffect(e1) +end +function c511002319.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,511002317) +end +function c511002319.filter(c) + return c:IsCode(511002318) and c:IsAbleToHand() +end +function c511002319.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002319.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002319.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511002320.lua b/script/c511002320.lua new file mode 100644 index 00000000..651a9f18 --- /dev/null +++ b/script/c511002320.lua @@ -0,0 +1,36 @@ +--Light of the Master +function c511002320.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002320.target) + e1:SetOperation(c511002320.activate) + c:RegisterEffect(e1) +end +function c511002320.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511002320.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002320.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002320.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002320.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002320.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local g=Duel.GetMatchingGroup(c511002320.filter,tp,LOCATION_MZONE,0,nil) + if tc 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) + e1:SetValue(g:GetCount()*300) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002321.lua b/script/c511002321.lua new file mode 100644 index 00000000..effddefd --- /dev/null +++ b/script/c511002321.lua @@ -0,0 +1,45 @@ +--神の居城-ヴァルハラ +function c511002321.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002321.cost) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1353770,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511002321.target) + e2:SetOperation(c511002321.operation) + c:RegisterEffect(e2) +end +function c511002321.cfilter(c) + return c:IsCode(511002318) and c:IsAbleToRemoveAsCost() +end +function c511002321.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002321.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002321.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002321.filter(c,e,tp) + return c:IsRace(RACE_FAIRY) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002321.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002321.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c511002321.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002321.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c511002322.lua b/script/c511002322.lua new file mode 100644 index 00000000..fa8dc1a1 --- /dev/null +++ b/script/c511002322.lua @@ -0,0 +1,92 @@ +--Light Towards the Temple +function c511002322.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002322.target) + e1:SetOperation(c511002322.activate) + c:RegisterEffect(e1) + if not c511002322.global_check then + c511002322.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511002322.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002322.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511002322.filter(c,tp) + if c:GetCode()~=1353770 then return false end + if c:IsType(TYPE_FIELD) then + return c:CheckActivateEffect(true,true,true)~=nil and c:IsLocation(LOCATION_HAND) + elseif bit.band(c:GetType(),0x20002)==0x20002 then + return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and (c:GetActivateEffect():IsActivatable(tp) + or c:CheckActivateEffect(true,true,true)~=nil) + end + return false + +end +function c511002322.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002322.filter,tp,0x13,0,1,nil,tp) end +end +function c511002322.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(15248873,0)) + local tc=Duel.SelectMatchingCard(tp,c511002322.filter,tp,0x13,0,1,1,nil,tp):GetFirst() + if tc then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co and bit.band(tpe,TYPE_FIELD)==0 then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end +end diff --git a/script/c511002323.lua b/script/c511002323.lua new file mode 100644 index 00000000..b5a5f082 --- /dev/null +++ b/script/c511002323.lua @@ -0,0 +1,61 @@ +--Advent of the Goddess +function c511002323.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002323.condition) + e1:SetCost(c511002323.cost) + e1:SetTarget(c511002323.target) + e1:SetOperation(c511002323.activate) + c:RegisterEffect(e1) +end +function c511002323.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsRace(RACE_FAIRY) +end +function c511002323.filter(c,e,tp) + return c:IsRace(RACE_FAIRY) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + and Duel.IsExistingMatchingCard(c511002323.costfilter,tp,LOCATION_GRAVE,0,4,c) +end +function c511002323.costfilter(c) + return c:IsRace(RACE_FAIRY) and c:GetLevel()==1 and c:IsAbleToRemoveAsCost() +end +function c511002323.spfilter(c,e,tp) + return c:IsRace(RACE_FAIRY) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002323.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002323.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end + local spg=Duel.GetMatchingGroup(c511002323.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,e,tp) + local g + local remchk=false + while g==nil or not remchk do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=Duel.SelectMatchingCard(tp,c511002323.costfilter,tp,LOCATION_GRAVE,0,4,4,nil) + spg:Sub(g) + if spg:GetCount()>0 then + remchk=true + end + spg:Merge(g) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002323.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002323.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002323.activate(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 tc=Duel.SelectMatchingCard(tp,c511002323.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(92039899,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002324.lua b/script/c511002324.lua new file mode 100644 index 00000000..3472c863 --- /dev/null +++ b/script/c511002324.lua @@ -0,0 +1,51 @@ +--Angel Tear +function c511002324.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002324.cost) + e1:SetTarget(c511002324.target) + e1:SetOperation(c511002324.activate) + c:RegisterEffect(e1) +end +function c511002324.filter(c,e,tp) + return c:IsRace(RACE_FAIRY) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + and Duel.IsExistingMatchingCard(c511002324.costfilter,tp,LOCATION_GRAVE,0,4,c) +end +function c511002324.costfilter(c) + return c:IsRace(RACE_FAIRY) and c:IsAbleToRemoveAsCost() +end +function c511002324.spfilter(c,e,tp) + return c:IsRace(RACE_FAIRY) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002324.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002324.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local spg=Duel.GetMatchingGroup(c511002324.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + local g + local remchk=false + while g==nil or not remchk do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=Duel.SelectMatchingCard(tp,c511002324.costfilter,tp,LOCATION_GRAVE,0,4,4,nil) + spg:Sub(g) + if spg:GetCount()>0 then + remchk=true + end + spg:Merge(g) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002324.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002324.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002324.activate(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,c511002324.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002325.lua b/script/c511002325.lua new file mode 100644 index 00000000..5d207fb9 --- /dev/null +++ b/script/c511002325.lua @@ -0,0 +1,24 @@ +--Angelic Mercy +function c511002325.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511002325.target) + e1:SetOperation(c511002325.activate) + c:RegisterEffect(e1) +end +function c511002325.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FAIRY) +end +function c511002325.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002325.filter,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end +end +function c511002325.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,c511002325.filter,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511002326.lua b/script/c511002326.lua new file mode 100644 index 00000000..bb6e4332 --- /dev/null +++ b/script/c511002326.lua @@ -0,0 +1,37 @@ +--Divine Castle Gate +function c511002326.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002326.cost) + e1:SetOperation(c511002326.activate) + c:RegisterEffect(e1) +end +function c511002326.costfilter(c) + return c:IsCode(511002318) and c:IsAbleToGraveAsCost() +end +function c511002326.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002326.costfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tc=Duel.SelectMatchingCard(tp,c511002326.costfilter,tp,LOCATION_ONFIELD,0,1,1,nil):GetFirst() + if tc:IsFacedown() then Duel.ConfirmCards(1-tp,tc) end + Duel.SendtoGrave(tc,REASON_COST) +end +function c511002326.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(c511002326.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511002326.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_BATTLE)~=0 then + return val/2 + else + return val + end +end diff --git a/script/c511002327.lua b/script/c511002327.lua new file mode 100644 index 00000000..d1e5a7d5 --- /dev/null +++ b/script/c511002327.lua @@ -0,0 +1,38 @@ +--Heaven's Judgment +function c511002327.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002327.condition) + e1:SetCost(c511002327.cost) + e1:SetTarget(c511002327.target) + e1:SetOperation(c511002327.activate) + c:RegisterEffect(e1) +end +function c511002327.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002327.costfilter(c,lv) + return c:IsRace(RACE_FAIRY) and c:GetLevel()==lv and c:IsAbleToGraveAsCost() +end +function c511002327.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if chk==0 then return Duel.IsExistingMatchingCard(c511002327.costfilter,tp,LOCATION_DECK,0,1,nil,a:GetLevel()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002327.costfilter,tp,LOCATION_DECK,0,1,1,nil,a:GetLevel()) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002327.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511002327.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002328.lua b/script/c511002328.lua new file mode 100644 index 00000000..5bf8f09a --- /dev/null +++ b/script/c511002328.lua @@ -0,0 +1,32 @@ +--Saint Aura +function c511002328.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002328.target) + e1:SetOperation(c511002328.activate) + c:RegisterEffect(e1) +end +function c511002328.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511002328.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DEFENSE) + local g=Duel.SelectMatchingCard(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.ChangePosition(tc,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511002329.lua b/script/c511002329.lua new file mode 100644 index 00000000..cad5b305 --- /dev/null +++ b/script/c511002329.lua @@ -0,0 +1,28 @@ +--Sacred Revelation +function c511002329.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002329.condition) + e1:SetCost(c511002329.cost) + e1:SetOperation(c511002329.activate) + c:RegisterEffect(e1) +end +function c511002329.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511002329.costfilter(c) + return c:IsRace(RACE_FAIRY) and c:IsLevelBelow(4) +end +function c511002329.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002329.costfilter,tp,LOCATION_DECK,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002329.costfilter,tp,LOCATION_DECK,0,2,2,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002329.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttackTarget()==nil then + Duel.NegateAttack() + end +end diff --git a/script/c511002332.lua b/script/c511002332.lua new file mode 100644 index 00000000..e7b0f91e --- /dev/null +++ b/script/c511002332.lua @@ -0,0 +1,17 @@ +--Camouflage +function c511002332.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002332.condition) + e1:SetOperation(c511002332.activate) + c:RegisterEffect(e1) +end +function c511002332.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d:IsFaceup() and d:IsLevelBelow(2) +end +function c511002332.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511002333.lua b/script/c511002333.lua new file mode 100644 index 00000000..01c8c193 --- /dev/null +++ b/script/c511002333.lua @@ -0,0 +1,20 @@ +--Crocodile Scale +function c511002333.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetOperation(c511002333.operation) + c:RegisterEffect(e1) +end +function c511002333.operation(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002333.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511002333.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511002334.lua b/script/c511002334.lua new file mode 100644 index 00000000..59cd9cc1 --- /dev/null +++ b/script/c511002334.lua @@ -0,0 +1,28 @@ +--Snare +function c511002334.initial_effect(c) + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(82593786,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511002334.target) + e1:SetOperation(c511002334.activate) + c:RegisterEffect(e1) +end +function c511002334.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(Duel.GetAttacker()) +end +function c511002334.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.NegateAttack() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_ATTACK) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002335.lua b/script/c511002335.lua new file mode 100644 index 00000000..db03a481 --- /dev/null +++ b/script/c511002335.lua @@ -0,0 +1,34 @@ +--Division +function c511002335.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511002179,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002335.cost) + e1:SetTarget(c511002335.target) + e1:SetOperation(c511002335.operation) + c:RegisterEffect(e1) +end +function c511002335.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511002335.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002336,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_FIRE) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511002335.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002336,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_FIRE) then + for i=1,2 do + local token=Duel.CreateToken(tp,511002336) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002337.lua b/script/c511002337.lua new file mode 100644 index 00000000..05775c83 --- /dev/null +++ b/script/c511002337.lua @@ -0,0 +1,17 @@ +--Electronic Motor +function c511002337.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Def up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_MACHINE)) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + c:RegisterEffect(e2) +end diff --git a/script/c511002338.lua b/script/c511002338.lua new file mode 100644 index 00000000..5b16e270 --- /dev/null +++ b/script/c511002338.lua @@ -0,0 +1,32 @@ +--Electric Shock +function c511002338.initial_effect(c) + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002338.condition) + e1:SetTarget(c511002338.target) + e1:SetOperation(c511002338.activate) + c:RegisterEffect(e1) +end +function c511002338.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c511002338.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.IsExistingMatchingCard(c511002338.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002338.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(Duel.GetAttacker()) +end +function c511002338.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.NegateAttack() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002339.lua b/script/c511002339.lua new file mode 100644 index 00000000..07d79276 --- /dev/null +++ b/script/c511002339.lua @@ -0,0 +1,13 @@ +--Lady Bettle +function c511002339.initial_effect(c) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetCountLimit(1) + e1:SetValue(c511002339.valcon) + c:RegisterEffect(e1) +end +function c511002339.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c511002340.lua b/script/c511002340.lua new file mode 100644 index 00000000..36faedcc --- /dev/null +++ b/script/c511002340.lua @@ -0,0 +1,32 @@ +--Needle Honey Bee +function c511002340.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67270095,1)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002340.con) + e1:SetOperation(c511002340.op) + c:RegisterEffect(e1) +end +function c511002340.con(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + return ep==tp and ev>0 and bc and bc==eg:GetFirst() +end +function c511002340.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-ev) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c511002342.lua b/script/c511002342.lua new file mode 100644 index 00000000..b62a6378 --- /dev/null +++ b/script/c511002342.lua @@ -0,0 +1,24 @@ +--Butterfly Fairy +function c511002342.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002342.spcon) + e1:SetOperation(c511002342.spop) + c:RegisterEffect(e1) +end +function c511002342.spfilter(c) + local code=c:GetCode() + return code==511002341 or code==16366944 or code==511000521 +end +function c511002342.spcon(e,c) + if c==nil then return true end + return Duel.CheckReleaseGroup(c:GetControler(),c511002342.spfilter,2,nil) +end +function c511002342.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,c511002342.spfilter,2,2,nil) + Duel.Release(g,REASON_COST) +end diff --git a/script/c511002343.lua b/script/c511002343.lua new file mode 100644 index 00000000..0a034578 --- /dev/null +++ b/script/c511002343.lua @@ -0,0 +1,28 @@ +--Forbidden Substance +function c511002343.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002343.target) + e1:SetOperation(c511002343.activate) + c:RegisterEffect(e1) +end +function c511002343.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_FACEUP) + Duel.SelectTarget(tp,IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511002343.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(1) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002344.lua b/script/c511002344.lua new file mode 100644 index 00000000..47805b6b --- /dev/null +++ b/script/c511002344.lua @@ -0,0 +1,21 @@ +--Spider Restraint +function c511002344.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511002344.activate) + c:RegisterEffect(e1) +end +function c511002344.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc and tc:IsFaceup() and tc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002345.lua b/script/c511002345.lua new file mode 100644 index 00000000..752b2327 --- /dev/null +++ b/script/c511002345.lua @@ -0,0 +1,75 @@ +--Wing Stream +function c511002345.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002345.condition) + e1:SetTarget(c511002345.target) + e1:SetOperation(c511002345.activate) + c:RegisterEffect(e1) +end +function c511002345.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d or not d:IsRace(RACE_INSECT) or d:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + e:SetLabelObject(d) + if a:IsPosition(POS_FACEUP_DEFENSE) then + if not a:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if a:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if a:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if d:IsAttackPos() then + if a:GetDefense()==d:GetAttack() and not d:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return a:GetDefense()~=0 + else + return a:GetDefense()>=d:GetAttack() + end + else + return a:GetDefense()>d:GetDefense() + end + elseif a:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if d:IsAttackPos() then + if a:GetAttack()==d:GetAttack() and not a:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return a:GetAttack()~=0 + else + return a:GetAttack()>=d:GetAttack() + end + else + return a:GetAttack()>d:GetDefense() + end + end + end + else + if d:IsAttackPos() then + if a:GetAttack()==d:GetAttack() and not a:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return a:GetAttack()~=0 + else + return a:GetAttack()>=d:GetAttack() + end + else + return a:GetAttack()>d:GetDefense() + end + end +end +function c511002345.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and tc:IsAttackAbove(500) end + Duel.SetTargetCard(tc) +end +function c511002345.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(-500) + tc:RegisterEffect(e3) + end +end diff --git a/script/c511002347.lua b/script/c511002347.lua new file mode 100644 index 00000000..db33348f --- /dev/null +++ b/script/c511002347.lua @@ -0,0 +1,25 @@ +--Drawn to the Abyss +function c511002347.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002347.condition) + e1:SetTarget(c511002347.target) + e1:SetOperation(c511002347.activate) + c:RegisterEffect(e1) +end +function c511002347.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002347.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLP(tp)>1 and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002347.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(tp,math.floor(Duel.GetLP(tp)/2),REASON_EFFECT) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511002348.lua b/script/c511002348.lua new file mode 100644 index 00000000..1d0722b9 --- /dev/null +++ b/script/c511002348.lua @@ -0,0 +1,30 @@ +--Ruined Future +function c511002348.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_ATTACK,0x11e0) + e1:SetTarget(c511002348.target) + e1:SetOperation(c511002348.activate) + c:RegisterEffect(e1) +end +function c511002348.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLP(tp)>1 and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511002348.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local atk=0 + if tc:IsFaceup() then atk=tc:GetAttack()/2 end + if Duel.Destroy(tc,REASON_EFFECT)==0 then return end + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c511002349.lua b/script/c511002349.lua new file mode 100644 index 00000000..9e4a31bd --- /dev/null +++ b/script/c511002349.lua @@ -0,0 +1,20 @@ +--Self Destruct +function c511002349.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002349.target) + e1:SetOperation(c511002349.activate) + c:RegisterEffect(e1) +end +function c511002349.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,0,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511002349.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511002350.lua b/script/c511002350.lua new file mode 100644 index 00000000..e807de97 --- /dev/null +++ b/script/c511002350.lua @@ -0,0 +1,15 @@ +--E・HERO オーシャン +function c511002350.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetCondition(c511002350.dircon) + c:RegisterEffect(e1) +end +function c511002350.filter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c511002350.dircon(e) + return Duel.IsExistingMatchingCard(c511002350.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end diff --git a/script/c511002351.lua b/script/c511002351.lua new file mode 100644 index 00000000..31c43faa --- /dev/null +++ b/script/c511002351.lua @@ -0,0 +1,24 @@ +--E・HERO ボルテック +function c511002351.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(71107816,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511002351.retcon) + e1:SetTarget(c511002351.rettg) + e1:SetOperation(c511002351.retop) + c:RegisterEffect(e1) +end +function c511002351.retcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511002351.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(nil,0,LOCATION_REMOVED,LOCATION_REMOVED,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c511002351.retop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,0,LOCATION_REMOVED,LOCATION_REMOVED,nil) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_RETURN) +end diff --git a/script/c511002352.lua b/script/c511002352.lua new file mode 100644 index 00000000..164b13bf --- /dev/null +++ b/script/c511002352.lua @@ -0,0 +1,46 @@ +--E・HERO ガイア +function c511002352.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH),true) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(16304628,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetOperation(c511002352.atkop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002352.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(atk/2) + tc:RegisterEffect(e1) + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(atk/2) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end + end +end diff --git a/script/c511002353.lua b/script/c511002353.lua new file mode 100644 index 00000000..48f2d607 --- /dev/null +++ b/script/c511002353.lua @@ -0,0 +1,52 @@ +--E・HERO フレイム・ブラスト +function c511002353.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x3008),aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_FIRE),true) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetCondition(c511002353.atkcon) + e2:SetValue(1000) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(85399281,0)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511002353.condition) + e3:SetTarget(c511002353.target) + e3:SetOperation(c511002353.operation) + c:RegisterEffect(e3) +end +function c511002353.atkcon(e) + local ph=Duel.GetCurrentPhase() + if ph~=PHASE_DAMAGE and ph~=PHASE_DAMAGE_CAL then return false end + local bc=e:GetHandler():GetBattleTarget() + return bc and bc:IsFaceup() and bc:IsAttribute(ATTRIBUTE_WATER) +end +function c511002353.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511002353.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511002353.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511002353.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511002353.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511002353.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511002354.lua b/script/c511002354.lua new file mode 100644 index 00000000..ae637909 --- /dev/null +++ b/script/c511002354.lua @@ -0,0 +1,55 @@ +--Hero Pressure +function c511002354.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002354.target) + e1:SetOperation(c511002354.activate) + c:RegisterEffect(e1) +end +function c511002354.cfilter(c) + return c:IsSetCard(0x3008) and c:IsFaceup() +end +function c511002354.filter(c) + return c:IsFaceup() and (c:GetAttack()>0 or c:GetDefense()>0) +end +function c511002354.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511002354.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511002354.filter,tp,0,LOCATION_MZONE,1,nil) end +end +function c511002354.activate(e,tp,eg,ep,ev,re,r,rp) + local val=Duel.GetMatchingGroupCount(c511002354.cfilter,tp,LOCATION_MZONE,0,nil)*300 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511002354.filter,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local efchk=0 + if tc:GetAttack()>0 then + efchk=efchk+1 + end + if tc:GetDefense()>0 then + efchk=efchk+2 + end + local op=0 + if efchk==3 then + op=Duel.SelectOption(tp,aux.Stringid(92142169,0),aux.Stringid(511002354,0)) + elseif efchk==1 then + op=0 + else + op=1 + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + if op==0 then + e1:SetCode(EFFECT_UPDATE_ATTACK) + else + e1:SetCode(EFFECT_UPDATE_DEFENSE) + end + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-val) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002355.lua b/script/c511002355.lua new file mode 100644 index 00000000..b9df0d7e --- /dev/null +++ b/script/c511002355.lua @@ -0,0 +1,35 @@ +--Residual Reflection +function c511002355.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:SetCost(c511002355.cost) + e1:SetOperation(c511002355.activate) + c:RegisterEffect(e1) +end +function c511002355.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c511002355.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002355.cfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local cg=Duel.SelectMatchingCard(tp,c511002355.cfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,2,2,nil) + Duel.Remove(cg,POS_FACEUP,REASON_COST) +end +function c511002355.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(0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c511002356.lua b/script/c511002356.lua new file mode 100644 index 00000000..f00731af --- /dev/null +++ b/script/c511002356.lua @@ -0,0 +1,52 @@ +--Voltic Spear +function c511002356.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(c511002356.target) + e1:SetOperation(c511002356.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511002356.value) + c:RegisterEffect(e2) + --equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511002356.eqlimit) + c:RegisterEffect(e4) +end +function c511002356.eqlimit(e,c) + return (c:IsRace(RACE_WARRIOR) or c:IsSetCard(0x3008)) +end +function c511002356.filter(c) + return c:IsFaceup() and (c:IsRace(RACE_WARRIOR) or c:IsSetCard(0x3008)) +end +function c511002356.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002356.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002356.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002356.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002356.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002356.value(e,c) + local ec=e:GetHandler():GetEquipTarget() + if ec:IsCode(9327502) then + return 1000 + else + return 300 + end +end diff --git a/script/c511002357.lua b/script/c511002357.lua new file mode 100644 index 00000000..26f95bb5 --- /dev/null +++ b/script/c511002357.lua @@ -0,0 +1,32 @@ +--Element Counter +function c511002357.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002357.condition) + e1:SetTarget(c511002357.target) + e1:SetOperation(c511002357.activate) + c:RegisterEffect(e1) +end +function c511002357.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsSetCard(0x3008) +end +function c511002357.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) + local dam=Duel.GetMatchingGroupCount(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x3008)*500 + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002357.activate(e,tp,eg,ep,ev,re,r,rp) + local dam=Duel.GetMatchingGroupCount(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x3008)*500 + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack() then + Duel.Damage(1-tp,dam,REASON_EFFECT) + end + end +end diff --git a/script/c511002358.lua b/script/c511002358.lua new file mode 100644 index 00000000..c5a45abe --- /dev/null +++ b/script/c511002358.lua @@ -0,0 +1,23 @@ +--E・HERO アイスエッジ +function c511002358.initial_effect(c) + --ind + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(c511002358.indval) + c:RegisterEffect(e1) + --immune + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetValue(c511002358.efilter) + c:RegisterEffect(e2) +end +function c511002358.indval(e,c) + return c:IsLevelAbove(4) +end +function c511002358.efilter(e,te) + return te:IsActiveType(TYPE_MONSTER) and te:GetHandler():IsLevelAbove(4) +end diff --git a/script/c511002359.lua b/script/c511002359.lua new file mode 100644 index 00000000..3beab9ca --- /dev/null +++ b/script/c511002359.lua @@ -0,0 +1,28 @@ +--E・HERO フラッシュ +function c511002359.initial_effect(c) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(85399281,0)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetTarget(c511002359.target) + e3:SetOperation(c511002359.operation) + c:RegisterEffect(e3) +end +function c511002359.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002359.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c511002359.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c511002359.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c51100236.lua b/script/c51100236.lua new file mode 100644 index 00000000..ed27d530 --- /dev/null +++ b/script/c51100236.lua @@ -0,0 +1,684 @@ +--The Winged Dragon of Ra (Anime) +--マイケル・ローレンス・ディーによってスクリプト +function c51100236.initial_effect(c) + --Summon with 3 Tribute + c:SetUniqueOnField(1,0,51100236) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c51100236.sumoncon) + e1:SetOperation(c51100236.sumonop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LIMIT_SET_PROC) + e2:SetCondition(c51100236.setcon) + c:RegisterEffect(e2) + --Summon Cannot be Negated + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e3) + --summon success + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c51100236.sumsuc) + c:RegisterEffect(e4) + --release limit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_UNRELEASABLE_SUM) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetValue(c51100236.recon) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCondition(c51100236.recon2) + e7:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e7) + --cannot be target + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e8:SetRange(LOCATION_MZONE) + e8:SetValue(c51100236.tgfilter) + c:RegisterEffect(e8) + --immune effect + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetCode(EFFECT_IMMUNE_EFFECT) + e9:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e9:SetRange(LOCATION_MZONE) + e9:SetValue(c51100236.efilter) + c:RegisterEffect(e9) + --indes + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_SINGLE) + e10:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e10:SetRange(LOCATION_MZONE) + e10:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e10:SetValue(1) + c:RegisterEffect(e10) + --ATK/DEF effects are only applied until the End Phase + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e11:SetProperty(EFFECT_FLAG_REPEAT) + e11:SetRange(LOCATION_MZONE) + e11:SetCode(EVENT_PHASE+PHASE_END) + e11:SetCountLimit(1) + e11:SetOperation(c51100236.atkdefresetop) + c:RegisterEffect(e11) + --If Special Summoned: Send to previous location + local e12=Effect.CreateEffect(c) + e12:SetDescription(aux.Stringid(511000235,1)) + e12:SetCategory(CATEGORY_TOGRAVE+CATEGORY_REMOVE+CATEGORY_TOHAND+CATEGORY_TODECK) + e12:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e12:SetRange(LOCATION_MZONE) + e12:SetProperty(EFFECT_FLAG_REPEAT+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e12:SetCountLimit(1) + e12:SetCode(EVENT_PHASE+PHASE_END) + e12:SetCondition(c51100236.stgcon) + e12:SetTarget(c51100236.stgtg) + e12:SetOperation(c51100236.stgop) + c:RegisterEffect(e12) + --Point-to-Point Transfer + local e15=Effect.CreateEffect(c) + e15:SetDescription(aux.Stringid(51100236,1)) + e15:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e15:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e15:SetCode(EVENT_SPSUMMON_SUCCESS) + e15:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e15:SetCondition(c51100236.egpcon) + e15:SetCost(c51100236.payatkcost) + e15:SetOperation(c51100236.payatkop) + c:RegisterEffect(e15) + --negate + local e16=Effect.CreateEffect(c) + e16:SetDescription(aux.Stringid(51100236,6)) + e16:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e16:SetCode(EVENT_BE_BATTLE_TARGET) + e16:SetCondition(c51100236.negcon) + e16:SetOperation(c51100236.negop) + c:RegisterEffect(e16) + --Egyptian God Phoenix + local e18=Effect.CreateEffect(c) + e18:SetDescription(aux.Stringid(51100236,5)) + e18:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e18:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e18:SetCode(EVENT_SPSUMMON_SUCCESS) + e18:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e18:SetCondition(c51100236.egpcon) + e18:SetOperation(c51100236.egpop) + c:RegisterEffect(e18) + --[[tribute check + local ea=Effect.CreateEffect(c) + ea:SetType(EFFECT_TYPE_SINGLE) + ea:SetCode(EFFECT_MATERIAL_CHECK) + ea:SetValue(c51100236.valcheck) + c:RegisterEffect(ea) + --give atk effect only when summon + local ex=Effect.CreateEffect(c) + ex:SetType(EFFECT_TYPE_SINGLE) + ex:SetCode(EFFECT_SUMMON_COST) + ex:SetOperation(c51100236.facechk) + ex:SetLabelObject(ea) + c:RegisterEffect(ex)]] + --chant + local sum1=Effect.CreateEffect(c) + sum1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + sum1:SetCode(EVENT_SUMMON_SUCCESS) + sum1:SetOperation(c51100236.sumop) + c:RegisterEffect(sum1) + local sum2=sum1:Clone() + sum2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(sum2) + local sum3=sum1:Clone() + sum3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(sum3) + --redirect attack + local red=Effect.CreateEffect(c) + red:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + red:SetCode(EVENT_SPSUMMON_SUCCESS) + red:SetOperation(c51100236.redatk) + c:RegisterEffect(red) + --De-Fusion + if not c51100236.global_check then + c51100236.global_check=true + local df=Effect.CreateEffect(c) + df:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + df:SetCode(EVENT_ADJUST) + df:SetOperation(c51100236.dfop) + Duel.RegisterEffect(df,0) + end +end +function c51100236.dfop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsCode,c:GetControler(),0xff,0xff,nil,95286165) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(51100236)==0 then + --Activate + local e1=Effect.CreateEffect(tc) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(51100236,4)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetHintTiming(0,TIMING_DRAW_PHASE+TIMING_END_PHASE) + e1:SetTarget(c51100236.tg) + e1:SetOperation(c51100236.op) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(51100236,0,0,1) + end + tc=g:GetNext() + end +end +function c51100236.dffilter2(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and (c:IsCode(10000010) or c:IsCode(511000237)) +end +function c51100236.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c51100236.dffilter2(chkc) end + if chk==0 then return Duel.IsExistingTarget(c51100236.dffilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c51100236.dffilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,g:GetFirst():GetAttack()) +end +function c51100236.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not (tc:IsRelateToEffect(e) and tc:IsFaceup()) then return end + local atk=tc:GetAttack() + tc:ResetEffect(RESET_LEAVE,RESET_EVENT) + Duel.Recover(tp,atk,REASON_EFFECT) + tc:RegisterFlagEffect(236,RESET_EVENT+0x1fe0000,0,1) + if Duel.GetAttacker() and Duel.GetAttacker()==tc then Duel.NegateAttack() end + if Duel.GetCurrentChain()<=1 then return end + for i=1,Duel.GetCurrentChain()-1 do + local te=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT) + local g=Duel.GetChainInfo(i,CHAININFO_TARGET_CARDS) + if te:IsHasProperty(EFFECT_FLAG_CARD_TARGET) and g:IsContains(tc) then + local rg=Group.CreateGroup() + rg:Merge(g) + rg:RemoveCard(tc) + Duel.ChangeTargetCard(i,rg) + end + end +end +function c51100236.sumoncon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 +end +function c51100236.sumonop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c51100236.setcon(e,c) + if not c then return true end + return false +end +function c51100236.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(c51100236.chainlm) +end +function c51100236.chainlm(e,rp,tp) + return e:GetHandler():IsAttribute(ATTRIBUTE_DEVINE) +end +function c51100236.recon(e,c) + return c:GetControler()~=e:GetHandler():GetControler() +end +function c51100236.recon2(e) + return Duel.GetTurnPlayer()~=e:GetOwnerPlayer() +end +function c51100236.efilter(e,te) + return te:IsActiveType(TYPE_EFFECT) and te:GetOwner()~=e:GetOwner() +end +function c51100236.tgfilter(e,re) + if not re or not re:IsActiveType(TYPE_SPELL+TYPE_TRAP) then return false end + return re:IsHasCategory(CATEGORY_DESTROY+CATEGORY_RELEASE+CATEGORY_REMOVE+CATEGORY_TOHAND+CATEGORY_TODECK+CATEGORY_TOGRAVE) +end +function c51100236.tgg(c,card) + return c:GetCardTarget() and c:GetCardTarget():IsContains(card) +end +function c51100236.atkdefresetop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetValue(c:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetValue(c:GetBaseDefense()) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local eqg=c:GetEquipGroup() + local tgg=Duel.GetMatchingGroup(c51100236.tgg,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,c) + eqg:Merge(tgg) + if eqg:GetCount()>0 then + Duel.Destroy(eqg,REASON_EFFECT) + end +end +function c51100236.stgcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c51100236.stgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + if c:IsPreviousLocation(LOCATION_GRAVE) then + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,c,1,0,0) + elseif c:IsPreviousLocation(LOCATION_DECK) then + Duel.SetOperationInfo(0,CATEGORY_TODECK,c,1,0,0) + elseif c:IsPreviousLocation(LOCATION_HAND) then + Duel.SetOperationInfo(0,CATEGORY_TOHAND,c,1,0,0) + elseif c:IsPreviousLocation(LOCATION_REMOVED) then + Duel.SetOperationInfo(0,CATEGORY_REMOVE,c,1,0,0) + end +end +function c51100236.stgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + if c:IsPreviousLocation(LOCATION_GRAVE) then + Duel.SendtoGrave(c,REASON_EFFECT) + elseif c:IsPreviousLocation(LOCATION_DECK) then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + elseif c:IsPreviousLocation(LOCATION_HAND) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + elseif c:IsPreviousLocation(LOCATION_REMOVED) then + Duel.Remove(c,POS_FACEUP,REASON_EFFECT) + end + end +end +function c51100236.valcheck(e,c) + local g=c:GetMaterial() + local tc=g:GetFirst() + local atk=0 + local def=0 + while tc do + local catk=tc:GetTextAttack() + local cdef=tc:GetTextDefense() + atk=atk+(catk>=0 and catk or 0) + def=def+(cdef>=0 and cdef or 0) + tc=g:GetNext() + end + if e:GetLabel()==1 then + e:SetLabel(0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(def) + c:RegisterEffect(e2) + end +end +function c51100236.facechk(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetLabel(1) +end +function c51100236.payatkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2) end + local lp=Duel.GetLP(tp) + e:SetLabel(lp-1) + Duel.PayLPCost(tp,lp-1) +end +function c51100236.payatkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local lp=e:GetLabel() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c:GetBaseAttack()+lp) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(c:GetBaseDefense()+lp) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_ADD_TYPE) + e3:SetValue(TYPE_FUSION) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3,true) + local def=Effect.CreateEffect(c) + def:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(def) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(2191144,0)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c51100236.tatkcost) + e4:SetOperation(c51100236.tatkop) + e4:SetLabelObject(def) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + --gain atk/def + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_RECOVER) + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c51100236.atkop1) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + --gain atk/def + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_CHAIN_END) + e6:SetRange(LOCATION_MZONE) + e6:SetOperation(c51100236.atkop2) + e6:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetRange(LOCATION_MZONE) + e7:SetTargetRange(0,LOCATION_MZONE) + e7:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE) + e7:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e7:SetTarget(c51100236.valtg) + e7:SetValue(c51100236.vala) + e7:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e8:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE) + e8:SetCode(EVENT_DAMAGE_STEP_END) + e8:SetCondition(c51100236.dircon) + e8:SetOperation(c51100236.dirop) + e8:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e8) + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetCode(EFFECT_EXTRA_ATTACK) + e9:SetValue(9999) + e9:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e9) + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e10:SetCode(EVENT_DAMAGE_STEP_END) + e10:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e10:SetCondition(c51100236.uncon) + e10:SetOperation(c51100236.unop) + e10:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e10) + end +end +function c51100236.atkop1(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ev) + e1:SetReset(RESET_EVENT+0x1ff0000) + e:GetHandler():RegisterEffect(e1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(ev) + e1:SetReset(RESET_EVENT+0x1ff0000) + e:GetHandler():RegisterEffect(e1) + Duel.SetLP(tp,1,REASON_EFFECT) +end +function c51100236.atkop2(e,tp,eg,ep,ev,re,r,rp) + local lp=Duel.GetLP(tp) + if lp<=1 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(lp-1) + e1:SetReset(RESET_EVENT+0x1ff0000) + e:GetHandler():RegisterEffect(e1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(lp-1) + e1:SetReset(RESET_EVENT+0x1ff0000) + e:GetHandler():RegisterEffect(e1) + Duel.SetLP(tp,1,REASON_EFFECT) +end +function c51100236.egpcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_GRAVE) +end +function c51100236.egpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() then + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e0:SetReset(RESET_EVENT+0x1fe0000) + e0:SetCode(EFFECT_CHANGE_CODE) + e0:SetValue(511000237) + c:RegisterEffect(e0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(39853199,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c51100236.descost) + e3:SetTarget(c51100236.destg) + e3:SetOperation(c51100236.desop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_ALWAYS_ATTACK) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + end +end +function c51100236.descost(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 c51100236.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) + and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c51100236.despop) + e1:SetReset(RESET_CHAIN) + e1:SetLabel(Duel.GetCurrentChain()) + Duel.RegisterEffect(e1,tp) +end +function c51100236.despfilter(c,tp) + return c:GetSummonPlayer()~=tp +end +function c51100236.despop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c51100236.despfilter,nil,tp) + if g:GetCount()~=1 then return end + Duel.ChangeTargetCard(e:GetLabel(),g) +end +function c51100236.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and not tc:IsHasEffect(513000065) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetValue(c51100236.desfil) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.BreakEffect() + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c51100236.desfil(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c51100236.tatkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,e:GetHandler()) end + local g=Duel.SelectReleaseGroup(tp,nil,1,10,e:GetHandler()) + local tc=g:GetFirst() + local suma=0 + local sumd=0 + while tc do + suma=suma+tc:GetAttack() + sumd=sumd+tc:GetDefense() + tc=g:GetNext() + end + e:SetLabel(suma) + e:GetLabelObject():SetLabel(sumd) + Duel.Release(g,REASON_COST) +end +function c51100236.tatkop(e,tp,eg,ep,ev,re,r,rp) + local atk=e:GetLabel() + local def=e:GetLabelObject():GetLabel() + local c=e:GetHandler() + if c:GetFlagEffect(236)>0 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(def) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c51100236.uncon(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + return bc and bc:IsRelateToBattle() +end +function c51100236.unop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + bc:RegisterFlagEffect(51100236,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) +end +function c51100236.valtg(e,c) + return c:GetFlagEffect(51100236)>0 +end +function c51100236.vala(e,c) + return c==e:GetHandler() +end +function c51100236.dircon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and Duel.GetAttacker()==e:GetHandler() +end +function c51100236.dirop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e:GetHandler():RegisterEffect(e1) +end +function c51100236.negcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and a:IsFaceup() and a:IsAttribute(ATTRIBUTE_DEVINE) and a:IsRace(RACE_DEVINE) + and not a:IsCode(10000011) and not a:IsCode(21208154) +end +function c51100236.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c51100236.sumop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --[[Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100236,7)) + local op=Duel.SelectOption(tp,aux.Stringid(51100236,8),aux.Stringid(51100236,9),aux.Stringid(51100236,10), + aux.Stringid(51100236,11),aux.Stringid(51100236,12),aux.Stringid(51100236,13)) + if op~=3 then + if not Duel.GetControl(c,1-tp) then + if not c:IsImmuneToEffect(e) and c:IsAbleToChangeControler() then + Duel.Destroy(c,REASON_EFFECT) + end + end + end + Duel.BreakEffect()]] + --control + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_CANNOT_CHANGE_CONTROL) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + if e:GetCode()~=EVENT_SUMMON_SUCCESS then return end + local g=c:GetMaterial() + local tc=g:GetFirst() + local atk=0 + local def=0 + while tc do + local catk=tc:GetPreviousAttackOnField() + local cdef=tc:GetPreviousDefenseOnField() + atk=atk+(catk>=0 and catk or 0) + def=def+(cdef>=0 and cdef or 0) + tc=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(def) + c:RegisterEffect(e2) +end +function c51100236.redatk(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and a and a:IsControler(1-tp) and Duel.GetAttackTarget() then + Duel.ChangeAttackTarget(e:GetHandler()) + end +end +--MLD diff --git a/script/c511002360.lua b/script/c511002360.lua new file mode 100644 index 00000000..cdd7234c --- /dev/null +++ b/script/c511002360.lua @@ -0,0 +1,53 @@ +--Heat Crystals +function c511002360.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002360.cost) + e1:SetTarget(c511002360.target) + e1:SetOperation(c511002360.activate) + c:RegisterEffect(e1) +end +function c511002360.cfilter(c) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToRemoveAsCost() +end +function c511002360.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsType(TYPE_FUSION) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + and Duel.IsExistingMatchingCard(c511002360.cfilter,tp,LOCATION_GRAVE,0,2,c) +end +function c511002360.spfilter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsType(TYPE_FUSION) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002360.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002360.filter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,1,nil,e,tp) end + local spg=Duel.GetMatchingGroup(c511002360.spfilter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,nil,e,tp) + local g + local remchk=false + while g==nil or not remchk do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + g=Duel.SelectMatchingCard(tp,c511002360.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + spg:Sub(g) + if spg:GetCount()>0 then + remchk=true + end + spg:Merge(g) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002360.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002360.spfilter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA+LOCATION_GRAVE) +end +function c511002360.activate(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,c511002360.spfilter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c511002361.lua b/script/c511002361.lua new file mode 100644 index 00000000..ccd95583 --- /dev/null +++ b/script/c511002361.lua @@ -0,0 +1,42 @@ +--Hero Solidarity +function c511002361.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(c511002361.cost) + e1:SetTarget(c511002361.target) + e1:SetOperation(c511002361.activate) + c:RegisterEffect(e1) +end +function c511002361.costfilter(c) + return c:IsSetCard(0x3008) and c:IsAbleToRemoveAsCost() +end +function c511002361.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c511002361.filter,tp,0,LOCATION_ONFIELD,nil) + if chk==0 then return Duel.IsExistingMatchingCard(c511002361.costfilter,tp,LOCATION_GRAVE,0,1,nil) + and ct>0 end + if ct>2 then ct=2 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002361.costfilter,tp,LOCATION_GRAVE,0,1,ct,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(g:GetCount()) +end +function c511002361.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511002361.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511002361.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,e:GetLabel(),0,0) +end +function c511002361.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + local g=Duel.GetMatchingGroup(c511002361.filter,tp,0,LOCATION_ONFIELD,nil) + if g:GetCount()0 + and Duel.IsExistingMatchingCard(c511002362.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002362.activate(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 tc=Duel.SelectMatchingCard(tp,c511002362.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + tc:RegisterFlagEffect(51102362,RESET_EVENT+0x1fe0000,0,1,Duel.GetTurnCount()) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetLabel(Duel.GetTurnCount()) + e2:SetLabelObject(tc) + e2:SetCondition(c511002362.descon) + e2:SetOperation(c511002362.desop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + e2:SetCountLimit(1) + Duel.RegisterEffect(e2,tp) + end +end +function c511002362.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return Duel.GetTurnCount()~=e:GetLabel() and Duel.GetTurnPlayer()==tp and tc:GetFlagEffectLabel(51102362)==e:GetLabel() +end +function c511002362.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Hint(HINT_CARD,0,511002362) + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c511002363.lua b/script/c511002363.lua new file mode 100644 index 00000000..9f34741e --- /dev/null +++ b/script/c511002363.lua @@ -0,0 +1,28 @@ +--Soul Return +function c511002363.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002363.target) + e1:SetOperation(c511002363.activate) + c:RegisterEffect(e1) +end +function c511002363.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAbleToDeck() +end +function c511002363.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511002363.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002363.filter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511002363.filter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,2,0,0) +end +function c511002363.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=2 then return end + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + Duel.SortDecktop(tp,tp,2) +end \ No newline at end of file diff --git a/script/c511002364.lua b/script/c511002364.lua new file mode 100644 index 00000000..675abb61 --- /dev/null +++ b/script/c511002364.lua @@ -0,0 +1,29 @@ +--Defender Hero +function c511002364.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002364.condition) + e1:SetTarget(c511002364.target) + e1:SetOperation(c511002364.activate) + c:RegisterEffect(e1) +end +function c511002364.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) +end +function c511002364.filter(c) + return c:IsFaceup() and c:IsSetCard(0x8) +end +function c511002364.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002364.filter,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end +end +function c511002364.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,c511002364.filter,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511002365.lua b/script/c511002365.lua new file mode 100644 index 00000000..d0e2f0e2 --- /dev/null +++ b/script/c511002365.lua @@ -0,0 +1,26 @@ +--Element Change +function c511002365.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002365.target) + e1:SetOperation(c511002365.operation) + c:RegisterEffect(e1) +end +function c511002365.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,562) + local rc=Duel.AnnounceAttribute(tp,1,0xffff) + e:SetLabel(rc) +end +function c511002365.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(e:GetLabel()) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511002366.lua b/script/c511002366.lua new file mode 100644 index 00000000..560bb7cb --- /dev/null +++ b/script/c511002366.lua @@ -0,0 +1,30 @@ +--Responsibility +function c511002366.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002366.condition) + e1:SetTarget(c511002366.target) + e1:SetOperation(c511002366.activate) + c:RegisterEffect(e1) +end +function c511002366.filter(c) + return c:IsSetCard(0x8) and c:IsLevelAbove(5) +end +function c511002366.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.IsExistingMatchingCard(c511002366.filter,tp,LOCATION_GRAVE,0,1,nil) +end +function c511002366.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511002366.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002367.lua b/script/c511002367.lua new file mode 100644 index 00000000..d195d4a7 --- /dev/null +++ b/script/c511002367.lua @@ -0,0 +1,35 @@ +--Rookie Fight +function c511002367.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002367.condition) + e1:SetTarget(c511002367.target) + e1:SetOperation(c511002367.activate) + c:RegisterEffect(e1) +end +function c511002367.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c511002367.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002367.cfilter,1,nil,tp) +end +function c511002367.spfilter(c,e,tp) + return c:IsLevelBelow(3) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002367.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002367.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002367.activate(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,c511002367.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002368.lua b/script/c511002368.lua new file mode 100644 index 00000000..9c33b72b --- /dev/null +++ b/script/c511002368.lua @@ -0,0 +1,25 @@ +--Swamp of The Fallen +function c511002368.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002368.condition) + e1:SetOperation(c511002368.activate) + c:RegisterEffect(e1) +end +function c511002368.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002368.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc and tc:IsFaceup() and tc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002369.lua b/script/c511002369.lua new file mode 100644 index 00000000..24651878 --- /dev/null +++ b/script/c511002369.lua @@ -0,0 +1,40 @@ +--Instant Mask Change +function c511002369.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002369.condition) + e1:SetTarget(c511002369.target) + e1:SetOperation(c511002369.activate) + c:RegisterEffect(e1) +end +function c511002369.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511002369.tfilter(c,att,e,tp) + return c:IsSetCard(0xa008) and c:GetLevel()==8 and c:IsAttribute(att) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511002369.filter(c,e,tp) + return c:IsSetCard(0xa008) + and Duel.IsExistingMatchingCard(c511002369.tfilter,tp,LOCATION_EXTRA,0,1,nil,c:GetAttribute(),e,tp) +end +function c511002369.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002369.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002369.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002369.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()<=0 or Duel.SendtoGrave(g,REASON_EFFECT)==0 then return end + local att=g:GetFirst():GetAttribute() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c511002369.tfilter,tp,LOCATION_EXTRA,0,1,1,nil,att,e,tp) + if sg:GetCount()>0 then + Duel.BreakEffect() + Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEUP) + sg:GetFirst():CompleteProcedure() + end +end diff --git a/script/c511002370.lua b/script/c511002370.lua new file mode 100644 index 00000000..fa2bcb37 --- /dev/null +++ b/script/c511002370.lua @@ -0,0 +1,37 @@ +--馬頭鬼 +function c511002370.initial_effect(c) + --revive + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92826944,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c511002370.cost) + e1:SetCondition(aux.exccon) + e1:SetTarget(c511002370.target) + e1:SetOperation(c511002370.operation) + c:RegisterEffect(e1) +end +function c511002370.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002370.filter(c,e,tp) + return c:IsRace(0x10000000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002370.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511002370.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002370.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002370.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002370.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002371.lua b/script/c511002371.lua new file mode 100644 index 00000000..8711e882 --- /dev/null +++ b/script/c511002371.lua @@ -0,0 +1,34 @@ +--火車 +function c511002371.initial_effect(c) + --todeck + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(52512994,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c511002371.tdtg) + e3:SetOperation(c511002371.tdop) + c:RegisterEffect(e3) +end +function c511002371.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c511002371.rfilter(c) + return c:IsLocation(LOCATION_DECK+LOCATION_EXTRA) and c:IsRace(0x10000000) and bit.band(c:GetPreviousPosition(),POS_FACEUP)~=0 +end +function c511002371.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + local c=e:GetHandler() + local rt=Duel.GetOperatedGroup():FilterCount(c511002371.rfilter,nil) + if rt>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(rt*1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002372.lua b/script/c511002372.lua new file mode 100644 index 00000000..06ab4534 --- /dev/null +++ b/script/c511002372.lua @@ -0,0 +1,6 @@ +--Gilti-Gearfried the Magical Steel Knight +function c511002372.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,423705,51828629,true,true) +end diff --git a/script/c511002373.lua b/script/c511002373.lua new file mode 100644 index 00000000..f2f1bb73 --- /dev/null +++ b/script/c511002373.lua @@ -0,0 +1,46 @@ +--Moon-Light Lio Dancer +function c511002373.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,97165977,aux.FilterBoolFunction(Card.IsSetCard,0xdf),2,true,true) + --immune + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetValue(aux.tgoval) + c:RegisterEffect(e1) + --Unaffected by Opponent Card Effects + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetValue(c511002373.unval) + c:RegisterEffect(e2) + --attack twice + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(1) + c:RegisterEffect(e3) + --destroy effect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetOperation(c511002373.desop) + c:RegisterEffect(e4) +end +function c511002373.unval(e,te) + return te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c511002373.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if Duel.GetAttacker()==c and c:GetFlagEffect(511002373)==0 then + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + c:RegisterFlagEffect(511002373,RESET_PHASE+PHASE_END,0,1) + end +end diff --git a/script/c511002374.lua b/script/c511002374.lua new file mode 100644 index 00000000..b7efd337 --- /dev/null +++ b/script/c511002374.lua @@ -0,0 +1,89 @@ +--Moon-Light Tiger +function c511002374.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Fusion reborn + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12525049,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002374.sptg) + e1:SetOperation(c511002374.spop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(40318957,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c511002374.thtg) + e2:SetOperation(c511002374.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002374.spfilter(c,e,tp) + return c:IsSetCard(0xdf) and c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511002374.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002374.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002374.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002374.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002374.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetOperation(c511002374.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tc:RegisterEffect(e3,true) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_ATTACK) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4,true) + Duel.SpecialSummonComplete() + end +end +function c511002374.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511002374.thfilter(c) + return c:IsSetCard(0x46) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511002374.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002374.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c511002374.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002374.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511002375.lua b/script/c511002375.lua new file mode 100644 index 00000000..d1c3e4dd --- /dev/null +++ b/script/c511002375.lua @@ -0,0 +1,106 @@ +--Moon-Light Wolf +function c511002375.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Fusion Summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002375.sptg) + e1:SetOperation(c511002375.spop) + c:RegisterEffect(e1) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(40318957,0)) + e3:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c511002375.thtg) + e3:SetOperation(c511002375.thop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c511002375.thcon) + c:RegisterEffect(e4) +end +function c511002375.filter0(c) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end +function c511002375.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c511002375.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0xdf) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511002375.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002375.filter0,tp,LOCATION_MZONE+LOCATION_HAND,0,nil) + local res=Duel.IsExistingMatchingCard(c511002375.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511002375.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002375.spop(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002375.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511002375.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511002375.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c511002375.thfilter(c) + return c:IsSetCard(0x46) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511002375.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002375.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002375.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002375.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c511002375.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_HAND) +end diff --git a/script/c511002376.lua b/script/c511002376.lua new file mode 100644 index 00000000..056f6397 --- /dev/null +++ b/script/c511002376.lua @@ -0,0 +1,42 @@ +--Dice Colosseum of Destiny +function c511002376.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002376.target) + e1:SetOperation(c511002376.activate) + c:RegisterEffect(e1) +end +function c511002376.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c511002376.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local d=Duel.TossDice(tp,1) + if d==1 or d==3 or d==5 then + Duel.Destroy(tc,REASON_EFFECT) + else + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_CALCULATING) + e1:SetOperation(c511002376.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end +end +function c511002376.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(1000) + e:GetHandler():RegisterEffect(e1) +end diff --git a/script/c511002377.lua b/script/c511002377.lua new file mode 100644 index 00000000..6bfcb8e3 --- /dev/null +++ b/script/c511002377.lua @@ -0,0 +1,36 @@ +--Speedroid Pachingocard +function c511002377.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(28563545,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c511002377.cost) + e1:SetTarget(c511002377.target) + e1:SetOperation(c511002377.operation) + c:RegisterEffect(e1) +end +function c511002377.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1,true) +end +function c511002377.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002377.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002378.lua b/script/c511002378.lua new file mode 100644 index 00000000..e1d25ee9 --- /dev/null +++ b/script/c511002378.lua @@ -0,0 +1,27 @@ +--機皇帝の賜与 +function c511002378.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002378.target) + e1:SetOperation(c511002378.activate) + c:RegisterEffect(e1) +end +function c511002378.filter(c) + return c:IsFaceup() and c:IsSetCard(0x13) +end +function c511002378.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c511002378.filter,tp,LOCATION_MZONE,0,nil) + if chk==0 then return ct>0 and Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511002378.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(c511002378.filter,tp,LOCATION_MZONE,0,nil) + Duel.Draw(p,ct,REASON_EFFECT) +end diff --git a/script/c511002379.lua b/script/c511002379.lua new file mode 100644 index 00000000..12a23a4c --- /dev/null +++ b/script/c511002379.lua @@ -0,0 +1,32 @@ +--摩天楼 -スカイスクレイパー- +function c511002379.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + 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(c511002379.atkup) + c:RegisterEffect(e2) +end +function c511002379.atkup(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a:IsControler(1-tp) then + a,d=d,a + end + if not d or not a or a:IsControler(1-tp) then return end + if not a:IsSetCard(0x3008) then return end + if d:GetAttack()>a:GetAttack() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(1000) + a:RegisterEffect(e1) + end +end diff --git a/script/c511002380.lua b/script/c511002380.lua new file mode 100644 index 00000000..18aff138 --- /dev/null +++ b/script/c511002380.lua @@ -0,0 +1,35 @@ +--Performapal Uni +function c511002380.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(38667773,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511002380.sptg) + e1:SetOperation(c511002380.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002380.filter(c,e,tp) + return c:IsSetCard(0x9f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002380.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002380.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002380.spop(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,c511002380.filter,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 diff --git a/script/c511002381.lua b/script/c511002381.lua new file mode 100644 index 00000000..3f954c81 --- /dev/null +++ b/script/c511002381.lua @@ -0,0 +1,38 @@ +--Performapal Corn +function c511002381.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002381.thcost) + e1:SetTarget(c511002381.thtg) + e1:SetOperation(c511002381.thop) + c:RegisterEffect(e1) +end +function c511002381.cfilter(c) + return c:IsCode(511002380) and c:IsPosition(POS_FACEUP_ATTACK) +end +function c511002381.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAttackPos() and Duel.IsExistingMatchingCard(c511002381.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATTACK) + local g=Duel.SelectMatchingCard(tp,c511002381.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + g:AddCard(c) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) +end +function c511002381.filter(c) + return c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c511002381.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511002381.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002381.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002381.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511002382.lua b/script/c511002382.lua new file mode 100644 index 00000000..49a3024b --- /dev/null +++ b/script/c511002382.lua @@ -0,0 +1,24 @@ +--Raidraptor - Napalm Dragonius +function c511002382.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17415895,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002382.target) + e1:SetOperation(c511002382.operation) + c:RegisterEffect(e1) +end +function c511002382.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511002382.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002383.lua b/script/c511002383.lua new file mode 100644 index 00000000..2ae02391 --- /dev/null +++ b/script/c511002383.lua @@ -0,0 +1,35 @@ +--Goyo Catapult +function c511002383.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(97567736,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511002383.damcost) + e1:SetTarget(c511002383.damtg) + e1:SetOperation(c511002383.damop) + c:RegisterEffect(e1) +end +function c511002383.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511002383.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002383.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511002383.cfilter,1,1,REASON_COST) +end +function c511002383.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511002383.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002384.lua b/script/c511002384.lua new file mode 100644 index 00000000..d6cf4a2b --- /dev/null +++ b/script/c511002384.lua @@ -0,0 +1,73 @@ +--C/C/C Rock Armor of Defense +function c511002384.initial_effect(c) + aux.AddXyzProcedure(c,nil,6,2) + c:EnableReviveLimit() + -- ATK + local e1=Effect.CreateEffect(c) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511002384.atkcon) + e1:SetCost(c511002384.atkcost) + e1:SetTarget(c511002384.atktg) + e1:SetOperation(c511002384.atkop) + c:RegisterEffect(e1) + --Disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511002384.disop) + c:RegisterEffect(e2) +end +function c511002384.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002384.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:CheckRemoveOverlayCard(tp,1,REASON_COST) end + c:RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002384.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_EARTH) and c:GetDefense()>0 +end +function c511002384.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002384.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511002384.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(c511002384.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local def=0 + local tc=g:GetFirst() + while tc do + local cdef=tc:GetDefense() + if cdef<0 then cdef=0 end + def=def+cdef + tc=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(def/2) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c511002384.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc and tc:IsAttribute(ATTRIBUTE_EARTH) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x57a0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x57a0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002385.lua b/script/c511002385.lua new file mode 100644 index 00000000..d1137822 --- /dev/null +++ b/script/c511002385.lua @@ -0,0 +1,63 @@ +--C/C/C Rock Shooter of Shooting +function c511002385.initial_effect(c) + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsAttribute,ATTRIBUTE_EARTH),1) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(50903514,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002385.condition) + e1:SetTarget(c511002385.target) + e1:SetOperation(c511002385.operation) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(31801517,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetOperation(c511002385.atkop) + c:RegisterEffect(e2) +end +function c511002385.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_DAMAGE and not Duel.IsDamageCalculated() +end +function c511002385.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,e:GetHandler()) +end +function c511002385.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-1000) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) +end +function c511002385.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_EARTH) +end +function c511002385.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local g=Duel.GetMatchingGroup(c511002385.filter,tp,LOCATION_MZONE,LOCATION_MZONE,c) + local val=g:GetSum(Card.GetLevel)*200 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(val) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002386.lua b/script/c511002386.lua new file mode 100644 index 00000000..9596f07a --- /dev/null +++ b/script/c511002386.lua @@ -0,0 +1,36 @@ +--Film Magician +function c511002386.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26593852,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetTarget(c511002386.atktg) + e1:SetOperation(c511002386.atkop) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511002386.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc==c then tc=Duel.GetAttackTarget() end + if chk==0 then return tc and tc:IsFaceup() end +end +function c511002386.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc==c then tc=Duel.GetAttackTarget() end + if tc:IsRelateToBattle() and c:IsRelateToBattle() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e1:SetValue(tc:GetAttack()) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002387.lua b/script/c511002387.lua new file mode 100644 index 00000000..28ff82bc --- /dev/null +++ b/script/c511002387.lua @@ -0,0 +1,45 @@ +--ものマネ幻想師 +function c511002387.initial_effect(c) + --trigger + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(494922,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002387.tg) + e1:SetOperation(c511002387.op) + c:RegisterEffect(e1) +end +function c511002387.filter(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return end + local cost=te:GetCost() + local target=te:GetTarget() + return te:GetCode()==EVENT_FREE_CHAIN and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0) or not cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) + and (not c:IsType(TYPE_CONTINUOUS+TYPE_EQUIP) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) +end +function c511002387.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c511002387.filter(chkc,e,tp,eg,ep,ev,re,r,rp) end + if chk==0 then return Duel.IsExistingTarget(c511002387.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp,eg,ep,ev,re,r,rp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + Duel.SelectTarget(tp,c511002387.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp) +end +function c511002387.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) + and (not tc:IsType(TYPE_CONTINUOUS+TYPE_EQUIP) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) then + local te=tc:GetActivateEffect() + if not te then return end + if tc:IsType(TYPE_CONTINUOUS+TYPE_EQUIP) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + c:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000,1) + end + local tg=te:GetTarget() + local op=te:GetOperation() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end +end diff --git a/script/c511002388.lua b/script/c511002388.lua new file mode 100644 index 00000000..2dc54996 --- /dev/null +++ b/script/c511002388.lua @@ -0,0 +1,57 @@ +--Copy Doll +function c511002388.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:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511002388.target) + e1:SetOperation(c511002388.activate) + c:RegisterEffect(e1) +end +function c511002388.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,511002389,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002388.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>3 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002389,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_EARTH) then + local token=Duel.CreateToken(tp,511002389) + if Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511002388.op) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end + end +end +function c511002388.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil and c:IsReleasable() + and Duel.SelectYesNo(tp,aux.Stringid(35050257,0)) then + Duel.Release(c,REASON_COST) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002388.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + end +end +function c511002388.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511002390.lua b/script/c511002390.lua new file mode 100644 index 00000000..3d81ed12 --- /dev/null +++ b/script/c511002390.lua @@ -0,0 +1,44 @@ +--Power Off +function c511002390.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002390.target) + e1:SetOperation(c511002390.activate) + c:RegisterEffect(e1) +end +function c511002390.filter(c,e,tp) + local mg=c:GetMaterial() + return c:IsFaceup() and c:IsType(0x20000000) and c:IsType(0x40000000) and c:IsAbleToGrave() and mg:GetCount()>0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>=mg:GetCount()+1 and not mg:IsExists(c511002390.mgfilter,1,nil,e,tp,c) +end +function c511002390.mgfilter(c,e,tp,card) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),REASON_COST)~=REASON_COST or c:GetReasonCard()~=card + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002390.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002390.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002390.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511002390.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c511002390.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local mg=tc:GetMaterial() + local sumable=true + if Duel.SendtoGrave(tc,REASON_EFFECT)==0 or mg:GetCount()==0 + or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) + or mg:IsExists(c511002390.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable then + Duel.BreakEffect() + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002391.lua b/script/c511002391.lua new file mode 100644 index 00000000..ee4bd437 --- /dev/null +++ b/script/c511002391.lua @@ -0,0 +1,16 @@ +--Fires of Shiranui +function c511002391.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot tograve + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_CANNOT_TO_GRAVE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetValue(1) + c:RegisterEffect(e3) +end diff --git a/script/c511002392.lua b/script/c511002392.lua new file mode 100644 index 00000000..5744a028 --- /dev/null +++ b/script/c511002392.lua @@ -0,0 +1,49 @@ +--Leaf of the Transforming Tanuki +function c511002392.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002392.condition) + e1:SetTarget(c511002392.target) + e1:SetOperation(c511002392.operation) + c:RegisterEffect(e1) +end +function c511002392.cfilter(c) + return c:IsOnField() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511002392.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if tg==nil then return false end + local g=tg:Filter(c511002392.cfilter,nil) + g:KeepAlive() + e:SetLabelObject(g) + return ex and tc+g:GetCount()-tg:GetCount()==1 +end +function c511002392.filter(c,card) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() and c~=card +end +function c511002392.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + local g=e:GetLabelObject() + if chk==0 then return g and Duel.IsExistingMatchingCard(c511002392.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,g:GetFirst(),e:GetHandler()) end + Duel.SetTargetCard(g) + local dg=Duel.GetMatchingGroup(c511002392.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,g:GetFirst(),e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,1,0,0) +end +function c511002392.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(1) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetReset(RESET_CHAIN) + tc:RegisterEffect(e1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,c511002392.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,tc,e:GetHandler()) + Duel.Destroy(dg,REASON_EFFECT) + end +end diff --git a/script/c511002393.lua b/script/c511002393.lua new file mode 100644 index 00000000..1f80fcf4 --- /dev/null +++ b/script/c511002393.lua @@ -0,0 +1,36 @@ +--Ability Limitation +function c511002393.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e2) + --pay + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_ACTIVATE_COST) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + e3:SetTarget(c511002393.actarget) + e3:SetCost(c511002393.costchk) + e3:SetOperation(c511002393.costop) + c:RegisterEffect(e3) +end +function c511002393.actarget(e,te,tp) + return te:IsActiveType(TYPE_MONSTER) +end +function c511002393.costchk(e,te_or_c,tp) + return Duel.CheckLPCost(tp,500) +end +function c511002393.costop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,500) +end diff --git a/script/c511002394.lua b/script/c511002394.lua new file mode 100644 index 00000000..199fde4a --- /dev/null +++ b/script/c511002394.lua @@ -0,0 +1,30 @@ +--Shield Strike +function c511002394.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511002394.condition) + e1:SetTarget(c511002394.target) + e1:SetOperation(c511002394.activate) + c:RegisterEffect(e1) +end +function c511002394.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst():IsControler(tp) +end +function c511002394.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(tg:GetDefense()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tg:GetDefense()) +end +function c511002394.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetAttacker() + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + if tg:IsRelateToBattle() then + Duel.Damage(p,tg:GetDefense(),REASON_EFFECT) + end +end diff --git a/script/c511002395.lua b/script/c511002395.lua new file mode 100644 index 00000000..4de3d05b --- /dev/null +++ b/script/c511002395.lua @@ -0,0 +1,45 @@ +--Construct Element +function c511002395.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002395.target) + e1:SetOperation(c511002395.activate) + c:RegisterEffect(e1) +end +function c511002395.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsAbleToExtra() and c:IsSetCard(0x3008) +end +function c511002395.spfilter(c,e,tp,lv) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c511002395.lvfilter(c,lv) + return c:GetLevel()==lv +end +function c511002395.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002395.filter,tp,LOCATION_MZONE,0,1,nil) end + local sg=Duel.GetMatchingGroup(c511002395.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c511002395.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511002395.filter,tp,LOCATION_MZONE,0,nil) + if Duel.SendtoDeck(sg,nil,0,REASON_EFFECT)>0 then + local spg=Group.CreateGroup() + local tc=sg:GetFirst() + while tc do + local sumg=Duel.GetMatchingGroup(c511002395.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + sumg:Sub(spg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local gc=sumg:FilterSelect(tp,c511002395.lvfilter,1,1,nil,tc:GetPreviousLevelOnField()):GetFirst() + if gc then + spg:AddCard(gc) + end + tc=sg:GetNext() + end + if spg:GetCount()>0 then + Duel.SpecialSummon(spg,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002396.lua b/script/c511002396.lua new file mode 100644 index 00000000..8d4e1f8e --- /dev/null +++ b/script/c511002396.lua @@ -0,0 +1,51 @@ +--Emergency Bulkhead +function c511002396.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+TIMING_BATTLE_START) + e1:SetOperation(c511002396.activate) + c:RegisterEffect(e1) +end +function c511002396.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c511002396.atkcon) + e2:SetTarget(c511002396.atktg) + Duel.RegisterEffect(e2,tp) + --check + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511002396.checkop) + e3:SetLabelObject(e2) + Duel.RegisterEffect(e3,tp) +end +function c511002396.atkcon(e) + return e:GetHandler():GetFlagEffect(30606547)~=0 +end +function c511002396.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() +end +function c511002396.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(30606547)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + e:GetHandler():RegisterFlagEffect(30606547,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end diff --git a/script/c511002397.lua b/script/c511002397.lua new file mode 100644 index 00000000..e66d8143 --- /dev/null +++ b/script/c511002397.lua @@ -0,0 +1,59 @@ +--Weak Anger +function c511002397.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002397.target) + e1:SetOperation(c511002397.activate) + c:RegisterEffect(e1) +end +function c511002397.filter(c) + return c:IsFaceup() and c:IsLevelBelow(3) +end +function c511002397.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002397.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002397.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002397.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511002397.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local fid=e:GetHandler():GetFieldID() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(51102397,RESET_EVENT+0x1fe0000,0,1,fid) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(25123082,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetLabel(fid) + e2:SetLabelObject(tc) + e2:SetCondition(c511002397.shcon) + e2:SetTarget(c511002397.shtg) + e2:SetOperation(c511002397.shop) + Duel.RegisterEffect(e2,tp) + end +end +function c511002397.shcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return eg:IsContains(tc) and tc:GetFlagEffectLabel(51102397)==e:GetLabel() +end +function c511002397.shtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,Duel.GetAttacker():GetAttack()) +end +function c511002397.shop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,Duel.GetAttacker():GetAttack(),REASON_EFFECT) +end diff --git a/script/c511002398.lua b/script/c511002398.lua new file mode 100644 index 00000000..1b24f7b5 --- /dev/null +++ b/script/c511002398.lua @@ -0,0 +1,53 @@ +--Hero's Backup +function c511002398.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511002398.condition) + e1:SetTarget(c511002398.target) + e1:SetOperation(c511002398.activate) + c:RegisterEffect(e1) +end +function c511002398.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==tp and ph>=0x08 and ph<=0x20 + and (ph~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c511002398.filter(c,tp) + return c:IsFaceup() and Duel.IsExistingMatchingCard(c511002398.filter2,tp,0,LOCATION_MZONE,1,nil,c:GetAttack()) +end +function c511002398.filter2(c,atk) + return c:IsFaceup() and c:IsAttackAbove(atk+1000) +end +function c511002398.rfilter(c) + return c:IsSetCard(0x3008) and c:IsAbleToRemove() +end +function c511002398.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002398.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002398.filter,tp,LOCATION_MZONE,0,1,nil,tp) + and Duel.IsExistingMatchingCard(c511002398.rfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002398.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + local g=Duel.GetMatchingGroup(c511002398.rfilter,tp,LOCATION_GRAVE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511002398.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local tg=Duel.SelectMatchingCard(tp,c511002398.rfilter,tp,LOCATION_GRAVE,0,1,1,nil):GetFirst() + if tg and Duel.Remove(tg,POS_FACEUP,REASON_EFFECT)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tg:GetAttack()) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511002399.lua b/script/c511002399.lua new file mode 100644 index 00000000..3bfe2f00 --- /dev/null +++ b/script/c511002399.lua @@ -0,0 +1,40 @@ +--Evasion Under Fire +function c511002399.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002399.con) + e1:SetOperation(c511002399.activate) + c:RegisterEffect(e1) +end +function c511002399.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 or Duel.GetBattleDamage(1-tp)>0 +end +function c511002399.activate(e,tp,eg,ep,ev,re,r,rp) + local dam=0 + if Duel.GetBattleDamage(tp)>0 then + dam=dam+1 + end + if Duel.GetBattleDamage(1-tp)>0 then + dam=dam+2 + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002399.damop) + e1:SetLabel(dam) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511002399.damop(e,tp,eg,ep,ev,re,r,rp) + local dam=e:GetLabel() + if dam==1 then + Duel.ChangeBattleDamage(tp,0) + elseif dam==2 then + Duel.ChangeBattleDamage(1-tp,0) + elseif dam==3 then + Duel.ChangeBattleDamage(tp,0) + Duel.ChangeBattleDamage(1-tp,0) + end +end diff --git a/script/c511002400.lua b/script/c511002400.lua new file mode 100644 index 00000000..f395bc08 --- /dev/null +++ b/script/c511002400.lua @@ -0,0 +1,22 @@ +--Glassman +function c511002400.initial_effect(c) + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --normal monster + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_INITIAL+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_ADD_TYPE) + e3:SetValue(TYPE_NORMAL) + c:RegisterEffect(e3) +end diff --git a/script/c511002401.lua b/script/c511002401.lua new file mode 100644 index 00000000..ae94f881 --- /dev/null +++ b/script/c511002401.lua @@ -0,0 +1,45 @@ +--Neospace Wave +function c511002401.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002401.condition) + e1:SetTarget(c511002401.target) + e1:SetOperation(c511002401.activate) + c:RegisterEffect(e1) +end +function c511002401.filter(c) + return c:IsSetCard(0x1f) and c:IsType(TYPE_MONSTER) +end +function c511002401.condition(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + local neoct=Duel.GetMatchingGroupCount(c511002401.filter,tp,LOCATION_DECK,0,nil) + return neoct>ct +end +function c511002401.spfilter(c,e,tp) + return c:IsSetCard(0x1f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002401.target(e,tp,eg,ep,ev,re,r,rp,chk) + local mg=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)+mg:GetCount() + local sg=Duel.GetMatchingGroup(c511002401.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if chk==0 then return mg:GetCount()>0 and mg:FilterCount(Card.IsAbleToGrave,nil)==mg:GetCount() + and sg:CheckWithSumEqual(Card.GetAttack,mg:GetSum(Card.GetAttack)/2,1,ft) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,mg,mg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002401.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local sg=Duel.GetMatchingGroup(c511002401.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if Duel.SendtoGrave(mg,REASON_EFFECT)>0 then + local g=mg:Filter(Card.IsLocation,nil,LOCATION_GRAVE) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.BreakEffect() + if ft>0 then + local spg=sg:SelectWithSumEqual(tp,Card.GetAttack,g:GetSum(Card.GetAttack)/2,1,ft) + Duel.SpecialSummon(spg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002402.lua b/script/c511002402.lua new file mode 100644 index 00000000..7952db33 --- /dev/null +++ b/script/c511002402.lua @@ -0,0 +1,55 @@ +--Reptia Egg +function c511002402.initial_effect(c) + --register + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002402.regcon) + e1:SetOperation(c511002402.regop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511002402.spcon) + e2:SetCost(c511002402.spcost) + e2:SetOperation(c511002402.spop) + c:RegisterEffect(e2) +end +function c511002402.regcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002402.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511002402,RESET_EVENT+0x1fe0000,0,0) +end +function c511002402.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetFlagEffect(511002402)==2 +end +function c511002402.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511002402.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002402.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511002402.filter(c,e,tp) + return c:IsCode(511002331) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002402.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>3 then ft=3 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002402.filter,tp,0x13,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002403.lua b/script/c511002403.lua new file mode 100644 index 00000000..e68bc5f2 --- /dev/null +++ b/script/c511002403.lua @@ -0,0 +1,53 @@ +--時の魔術師 +function c511002403.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MONSTER_SSET) + e1:SetValue(TYPE_SPELL) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_COIN+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetTarget(c511002403.target) + e2:SetOperation(c511002403.activate) + c:RegisterEffect(e2) +end +function c511002403.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)>0 end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002403.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(71625222,1)) + local coin=Duel.SelectOption(tp,60,61) + local res=Duel.TossCoin(tp,1) + if coin~=res then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.RaiseEvent(e:GetHandler(),71625222,e,0,0,tp,0) + Duel.RaiseEvent(e:GetHandler(),71625222,e,0,0,1-tp,0) + else + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + g:AddCard(e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) + local dg=Duel.GetOperatedGroup() + local sum=dg:GetSum(Card.GetAttack) + Duel.Damage(tp,sum/2,REASON_EFFECT) + end +end diff --git a/script/c511002404.lua b/script/c511002404.lua new file mode 100644 index 00000000..7b6ea7e2 --- /dev/null +++ b/script/c511002404.lua @@ -0,0 +1,45 @@ +--Compensation Mediation +function c511002404.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002404.condition) + e1:SetTarget(c511002404.target) + e1:SetOperation(c511002404.activate) + c:RegisterEffect(e1) +end +function c511002404.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 +end +function c511002404.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,0,LOCATION_GRAVE,2,nil) end + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,nil,2,0,0) +end +function c511002404.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=2 then return end + local g=Duel.GetMatchingGroup(nil,tp,0,LOCATION_GRAVE,nil) + if g:GetCount()>1 then + local sg=g:Select(1-tp,2,2,nil) + sg:AddCard(c) + local tc=sg:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEDOWN_ATTACK,true) + tc=sg:GetNext() + end + Duel.ShuffleSetCard(sg) + local rsel=sg:RandomSelect(tp,1) + Duel.ConfirmCards(tp,rsel) + Duel.ConfirmCards(1-tp,rsel) + if rsel:IsContains(c) then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + sg:RemoveCard(c) + Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) + Duel.SendtoGrave(c,REASON_EFFECT) + else + Duel.SendtoGrave(sg,REASON_EFFECT) + end + end + +end diff --git a/script/c511002405.lua b/script/c511002405.lua new file mode 100644 index 00000000..8f23f2ec --- /dev/null +++ b/script/c511002405.lua @@ -0,0 +1,26 @@ +--Relentless Attacks +function c511002405.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511002405.condition) + e1:SetTarget(c511002405.target) + e1:SetOperation(c511002405.activate) + c:RegisterEffect(e1) +end +function c511002405.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return eg:GetCount()==1 and tc:IsControler(tp) and bc and bc:IsReason(REASON_BATTLE) and bc:IsControler(1-tp) +end +function c511002405.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=eg:GetFirst() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) +end +function c511002405.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.ChainAttack() +end diff --git a/script/c511002406.lua b/script/c511002406.lua new file mode 100644 index 00000000..a9d7720e --- /dev/null +++ b/script/c511002406.lua @@ -0,0 +1,40 @@ +--Extra Boost +function c511002406.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002406.target) + e1:SetOperation(c511002406.activate) + c:RegisterEffect(e1) +end +function c511002406.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511002406.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(tc:GetDefense()/2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c511002406.desop) + tc:RegisterEffect(e2) + end +end +function c511002406.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511002407.lua b/script/c511002407.lua new file mode 100644 index 00000000..18014126 --- /dev/null +++ b/script/c511002407.lua @@ -0,0 +1,53 @@ +--Take Over +function c511002407.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002407.target) + e1:SetOperation(c511002407.activate) + c:RegisterEffect(e1) + if not c511002407.global_check then + c511002407.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + ge1:SetOperation(c511002407.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002407.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsFaceup,nil) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511002407+tc:GetSummonPlayer(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + tc=g:GetNext() + end +end +function c511002407.filter(c,e,tp) + return c:IsReleasableByEffect() and c:GetFlagEffect(511002407+tp)>0 + and Duel.IsExistingMatchingCard(c511002407.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,c:GetRace()) + and (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or c:IsControler(tp)) +end +function c511002407.spfilter(c,e,tp,race) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsRace(race) +end +function c511002407.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002407.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002407.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local tc=Duel.SelectMatchingCard(tp,c511002407.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp):GetFirst() + if tc and Duel.Release(tc,REASON_EFFECT)>0 then + local race=tc:GetRace() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002407.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,tc:GetRace()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002409.lua b/script/c511002409.lua new file mode 100644 index 00000000..4dc3aaf9 --- /dev/null +++ b/script/c511002409.lua @@ -0,0 +1,51 @@ +--Scrap Garage +function c511002409.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002409.condition) + e1:SetTarget(c511002409.target) + e1:SetOperation(c511002409.activate) + c:RegisterEffect(e1) +end +function c511002409.cfilter(c,tp) + return (c:IsSetCard(0x219) or c:IsCode(82556058)) and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp + and c:GetPreviousLocation()==LOCATION_MZONE and bit.band(c:GetPreviousPosition(),POS_FACEUP)~=0 +end +function c511002409.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002409.cfilter,1,nil,tp) +end +function c511002409.filter(c,e,tp) + return (c:IsSetCard(0x219) or c:IsCode(82556058)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002409.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002409.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002409.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002409.filter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp) + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002410.lua b/script/c511002410.lua new file mode 100644 index 00000000..e906eea6 --- /dev/null +++ b/script/c511002410.lua @@ -0,0 +1,71 @@ +--Engine Tuner +function c511002410.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(c511002410.target) + e1:SetOperation(c511002410.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) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e3:SetCondition(c511002410.poscon) + c:RegisterEffect(e3) + --Atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetValue(c511002410.value) + c:RegisterEffect(e4) + --reset + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DESTROY_REPLACE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_SZONE) + e5:SetTarget(c511002410.desreptg) + e5:SetOperation(c511002410.desrepop) + c:RegisterEffect(e5) +end +function c511002410.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 c511002410.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002410.poscon(e) + return e:GetHandler():GetEquipTarget():IsPosition(POS_FACEUP_ATTACK) +end +function c511002410.value(e,c) + return e:GetHandler():GetEquipTarget():GetDefense()/2 +end +function c511002410.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + if chk==0 then return c:IsReason(REASON_LOST_TARGET) and ec and ec:IsReason(REASON_DESTROY) and c:IsCanTurnSet() end + return true +end +function c511002410.desrepop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:CancelToGrave() + Duel.ChangePosition(c,POS_FACEDOWN) + Duel.RaiseEvent(c,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) +end diff --git a/script/c511002411.lua b/script/c511002411.lua new file mode 100644 index 00000000..ad159476 --- /dev/null +++ b/script/c511002411.lua @@ -0,0 +1,36 @@ +--Two-for-One Repair Job +function c511002411.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002411.target) + e1:SetOperation(c511002411.activate) + c:RegisterEffect(e1) +end +function c511002411.filter(c,e,tp) + return (c:IsSetCard(0x219) or c:IsCode(82556058)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002411.rfilter(c) + return (c:IsSetCard(0x219) or c:IsCode(82556058)) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c511002411.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002411.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002411.activate(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,c511002411.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + Duel.BreakEffect() + local rg=Duel.GetMatchingGroup(c511002411.rfilter,tp,LOCATION_GRAVE,0,nil) + if rg:GetCount()>0 then + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511002412.lua b/script/c511002412.lua new file mode 100644 index 00000000..ba73a068 --- /dev/null +++ b/script/c511002412.lua @@ -0,0 +1,28 @@ +--Motor Shell +function c511002412.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98884569,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002412.condition) + e1:SetTarget(c511002412.target) + e1:SetOperation(c511002412.operation) + c:RegisterEffect(e1) +end +function c511002412.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511002412.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002412.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511002413,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,511002413) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511002414.lua b/script/c511002414.lua new file mode 100644 index 00000000..3d6cbc6e --- /dev/null +++ b/script/c511002414.lua @@ -0,0 +1,33 @@ +--Motor Violence +function c511002414.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98884569,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002414.condition) + e1:SetTarget(c511002414.target) + e1:SetOperation(c511002414.operation) + c:RegisterEffect(e1) +end +function c511002414.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511002414.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511002414.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511002413,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_DARK) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,511002413) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002415.lua b/script/c511002415.lua new file mode 100644 index 00000000..4a2642fe --- /dev/null +++ b/script/c511002415.lua @@ -0,0 +1,33 @@ +--機械改造工場 +function c511002415.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002415.target) + e1:SetOperation(c511002415.activate) + c:RegisterEffect(e1) +end +function c511002415.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c511002415.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002415.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511002415.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002415.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c511002416.lua b/script/c511002416.lua new file mode 100644 index 00000000..8379f99a --- /dev/null +++ b/script/c511002416.lua @@ -0,0 +1,26 @@ +--ダーク・アイズ・イリュージョニスト +function c511002416.initial_effect(c) + --battled + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLED) + e1:SetOperation(c511002416.atop) + c:RegisterEffect(e1) +end +function c511002416.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc==Duel.GetAttacker() then + Duel.Hint(HINT_CARD,0,511002416) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e2) + end +end diff --git a/script/c511002417.lua b/script/c511002417.lua new file mode 100644 index 00000000..f09714ca --- /dev/null +++ b/script/c511002417.lua @@ -0,0 +1,30 @@ +--Decisive Power of Absolute Destiny +function c511002417.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002417.target) + e1:SetOperation(c511002417.activate) + c:RegisterEffect(e1) +end +function c511002417.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and Duel.IsPlayerCanSpecialSummon(1-tp) + and Duel.IsExistingMatchingCard(nil,tp,0,LOCATION_DECK,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,564) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c511002417.filter(c,code,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002417.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 or not Duel.IsPlayerCanSpecialSummon(1-tp) then return end + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(1-tp,c511002417.filter,1-tp,LOCATION_DECK,0,1,1,nil,ac,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,1-tp,1-tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511002418.lua b/script/c511002418.lua new file mode 100644 index 00000000..ab228278 --- /dev/null +++ b/script/c511002418.lua @@ -0,0 +1,93 @@ +--青眼の光龍 +function c511002418.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511002418.spcon) + e2:SetOperation(c511002418.spop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c511002418.val) + c:RegisterEffect(e3) + --negate + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(53347303,0)) + e4:SetCategory(CATEGORY_DISABLE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_CHAINING) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511002418.discon) + e4:SetTarget(c511002418.distg) + e4:SetOperation(c511002418.disop) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(74131780,0)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCost(c511002418.descost) + e5:SetTarget(c511002418.destg) + e5:SetOperation(c511002418.desop) + c:RegisterEffect(e5) +end +function c511002418.spcon(e,c) + if c==nil then return true end + return Duel.CheckReleaseGroup(c:GetControler(),Card.IsCode,1,nil,23995346) +end +function c511002418.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),Card.IsCode,1,1,nil,23995346) + Duel.Release(g,REASON_COST) +end +function c511002418.val(e,c) + return Duel.GetMatchingGroupCount(Card.IsRace,c:GetControler(),LOCATION_GRAVE,0,nil,RACE_DRAGON)*300 +end +function c511002418.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end + local loc,tg=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION,CHAININFO_TARGET_CARDS) + if not tg or not tg:IsContains(c) then return false end + return Duel.IsChainDisablable(ev) and loc~=LOCATION_DECK +end +function c511002418.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511002418.disop(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.NegateEffect(ev) +end +function c511002418.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511002418.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,99,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002418.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002419.lua b/script/c511002419.lua new file mode 100644 index 00000000..e478f75f --- /dev/null +++ b/script/c511002419.lua @@ -0,0 +1,41 @@ +--ドラゴン・目覚めの旋律 +function c511002419.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002419.condition) + e1:SetCost(c511002419.cost) + e1:SetTarget(c511002419.target) + e1:SetOperation(c511002419.activate) + c:RegisterEffect(e1) +end +function c511002419.cfilter(c) + return c:IsFaceup() and c:IsCode(17985575) +end +function c511002419.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002419.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511002419.costfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c511002419.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002419.costfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c511002419.costfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511002419.filter(c) + return c:IsRace(RACE_DRAGON) and c:IsAbleToHand() +end +function c511002419.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002419.filter,tp,LOCATION_DECK,0,2,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_DECK) +end +function c511002419.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511002419.filter,tp,LOCATION_DECK,0,nil) + if sg:GetCount()<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=sg:Select(tp,2,2,nil) + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) +end diff --git a/script/c511002420.lua b/script/c511002420.lua new file mode 100644 index 00000000..b7dca434 --- /dev/null +++ b/script/c511002420.lua @@ -0,0 +1,95 @@ +--Forced Activation +function c511002420.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002420.target) + e1:SetOperation(c511002420.activate) + c:RegisterEffect(e1) +end +function c511002420.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFacedown,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_POSITION,nil,1,0,0) +end +function c511002420.filter(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te or not (te:IsActivatable(c:GetControler()) or c:IsStatus(STATUS_SET_TURN)) then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + if te:GetCode()==EVENT_FREE_CHAIN then + return (not condition or condition(te,c:GetControler(),eg,ep,ev,re,r,rp)) + and (not cost or cost(te,c:GetControler(),eg,ep,ev,re,r,rp,0)) + and (not target or target(te,c:GetControler(),eg,ep,ev,re,r,rp,0)) + elseif te:GetCode()==EVENT_CHAINING then + return (not condition or condition(te,c:GetControler(),Group.FromCards(e:GetHandler()),tp,0,e,r,tp)) + and (not cost or cost(te,c:GetControler(),Group.FromCards(e:GetHandler()),tp,0,e,r,tp,0)) + and (not target or target(te,c:GetControler(),Group.FromCards(e:GetHandler()),tp,0,e,r,tp,0)) + else + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(te:GetCode(),true) + return res and (not condition or condition(te,c:GetControler(),teg,tep,tev,tre,tr,trp)) + and (not cost or cost(te,c:GetControler(),teg,tep,tev,tre,tr,trp,0)) + and (not target or target(te,c:GetControler(),teg,tep,tev,tre,tr,trp,0)) + end +end +function c511002420.activate(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + local g=Duel.SelectMatchingCard(tp,Card.IsFacedown,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.ChangePosition(tc,0,0,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE) + if tc:IsLocation(LOCATION_SZONE) and c511002420.filter(tc,e,tp,eg,ep,ev,re,r,rp) then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + Duel.ClearTargetCard() + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if te:GetCode()==EVENT_FREE_CHAIN then + if co then co(te,tc:GetControler(),eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tc:GetControler(),eg,ep,ev,re,r,rp,1) end + elseif te:GetCode()==EVENT_CHAINING then + if co then co(te,tc:GetControler(),Group.FromCards(c),tp,0,e,r,tp,1) end + if tg then tg(te,tc:GetControler(),Group.FromCards(c),tp,0,e,r,tp,1) end + else + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(te:GetCode(),true) + if co then co(te,tc:GetControler(),teg,tep,tev,tre,tr,trp,1) end + if tg then tg(te,tc:GetControler(),teg,tep,tev,tre,tr,trp,1) end + end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if te:GetCode()==EVENT_FREE_CHAIN then + if op then op(te,tc:GetControler(),eg,ep,ev,re,r,rp) end + elseif te:GetCode()==EVENT_CHAINING then + if op then op(te,tc:GetControler(),Group.FromCards(c),tp,0,e,r,tp) end + else + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(te:GetCode(),true) + if op then op(te,tc:GetControler(),teg,tep,tev,tre,tr,trp) end + end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end +end diff --git a/script/c511002425.lua b/script/c511002425.lua new file mode 100644 index 00000000..96b6b22f --- /dev/null +++ b/script/c511002425.lua @@ -0,0 +1,157 @@ +--モザイク・マンティコア +function c511002425.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,511002422,511002423,511002424,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511002425.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511002425.spcon) + e2:SetOperation(c511002425.spop) + c:RegisterEffect(e2) + --sp summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(102380,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c511002425.destg) + e3:SetOperation(c511002425.desop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(75347539,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c511002425.spcost2) + e4:SetTarget(c511002425.sptg2) + e4:SetOperation(c511002425.spop2) + c:RegisterEffect(e4) +end +function c511002425.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c511002425.spfilter(c,code1,code2,code3) + return c:IsAbleToGraveAsCost() and (c:IsFusionCode(code1) or c:IsFusionCode(code2) or c:IsFusionCode(code3)) +end +function c511002425.spfilter1(c,mg,ft) + local mg2=mg:Clone() + mg2:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return ft>=-1 and c:IsFusionCode(511002422) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial(nil,true) + and mg2:IsExists(c511002425.spfilter2,1,nil,mg2,ft) +end +function c511002425.spfilter2(c,mg,ft) + local mg2=mg:Clone() + mg2:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return ft>=0 and c:IsFusionCode(511002423) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial(nil,true) + and mg2:IsExists(c511002425.spfilter3,1,nil,ft) +end +function c511002425.spfilter3(c,ft) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return ft>=1 and c:IsFusionCode(511002424) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial(nil,true) +end +function c511002425.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + local mg=Duel.GetMatchingGroup(c511002425.spfilter,tp,LOCATION_ONFIELD,0,nil,511002422,511002423,511002424) + return mg:IsExists(c511002425.spfilter1,1,nil,mg,ft) +end +function c511002425.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local mg=Duel.GetMatchingGroup(c511002425.spfilter,tp,LOCATION_ONFIELD,0,nil,511002422,511002423,511002424) + local g=Group.CreateGroup() + local tc=nil + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + if i==1 then + tc=mg:FilterSelect(tp,c511002425.spfilter1,1,1,nil,mg,ft):GetFirst() + end + if i==2 then + tc=mg:FilterSelect(tp,c511002425.spfilter2,1,1,nil,mg,ft):GetFirst() + end + if i==3 then + tc=mg:FilterSelect(tp,c511002425.spfilter3,1,1,nil,ft):GetFirst() + end + g:AddCard(tc) + mg:RemoveCard(tc) + if tc:IsLocation(LOCATION_MZONE) then ft=ft+1 end + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoGrave(g,REASON_COST) +end +function c511002425.filter(c,e,tp) + return c:IsCode(511002422) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,e:GetHandler():GetPreviousControler()) + and Duel.IsExistingMatchingCard(c511002425.filter2,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,c,e,tp) +end +function c511002425.filter2(c,e,tp) + return c:IsCode(511002423) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,e:GetHandler():GetPreviousControler()) +end +function c511002425.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE) +end +function c511002425.desop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local p=e:GetHandler():GetPreviousControler() + if Duel.GetLocationCount(p,LOCATION_MZONE)<2 then return end + local g1=Duel.GetMatchingGroup(c511002425.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,e,tp) + if g1:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=Duel.SelectMatchingCard(tp,c511002425.filter2,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,sg1:GetFirst(),e,tp) + sg1:Merge(sg2) + if sg1:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end + Duel.SpecialSummon(sg1,0,tp,p,false,false,POS_FACEUP) +end +function c511002425.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtraAsCost() end + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_COST) +end +function c511002425.spfilterx(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002425.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>=2 + and Duel.IsExistingTarget(c511002425.spfilterx,tp,LOCATION_GRAVE,0,1,nil,e,tp,511002423) + and Duel.IsExistingTarget(c511002425.spfilterx,tp,LOCATION_GRAVE,0,1,nil,e,tp,511002424) + and Duel.IsExistingTarget(c511002425.spfilterx,tp,LOCATION_GRAVE,0,1,nil,e,tp,511002422) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c511002425.spfilterx,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,511002423) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c511002425.spfilterx,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,511002424) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g3=Duel.SelectTarget(tp,c511002425.spfilterx,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,511002422) + g1:Merge(g2) + g1:Merge(g3) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,3,0,0) +end +function c511002425.spop2(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if g:GetCount()~=3 or ft<3 then return end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511002426.lua b/script/c511002426.lua new file mode 100644 index 00000000..2c19e6fb --- /dev/null +++ b/script/c511002426.lua @@ -0,0 +1,30 @@ +--トゲトゲ神の殺虫剤 +function c511002426.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002426.target) + e1:SetOperation(c511002426.activate) + c:RegisterEffect(e1) +end +function c511002426.cfilter(c) + return c:IsRace(RACE_INSECT) and c:IsFaceup() and c:IsDestructable() +end +function c511002426.filter(c,tp) + return c:IsRace(RACE_INSECT) and (c:IsFaceup() or c:IsControler(tp)) and c:IsDestructable() +end +function c511002426.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002426.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c511002426.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,1,0,0) +end +function c511002426.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002426.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002427.lua b/script/c511002427.lua new file mode 100644 index 00000000..ecc65e73 --- /dev/null +++ b/script/c511002427.lua @@ -0,0 +1,44 @@ +--Parasite Worm +function c511002427.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002427.target) + e1:SetOperation(c511002427.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c511002427.target2) + c:RegisterEffect(e3) +end +function c511002427.filter(c,tp,ep) + return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and ep~=tp and c:IsDestructable() +end +function c511002427.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return c511002427.filter(tc,tp,ep) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()) +end +function c511002427.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end +function c511002427.filter2(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and c:GetSummonPlayer()~=tp + and c:IsDestructable() +end +function c511002427.target2(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return eg:GetCount()==1 and c511002427.filter2(tc,tp) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end diff --git a/script/c511002429.lua b/script/c511002429.lua new file mode 100644 index 00000000..d59852ea --- /dev/null +++ b/script/c511002429.lua @@ -0,0 +1,100 @@ +--Spirit Sword of Sealing +function c511002429.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002429.target) + e1:SetOperation(c511002429.activate) + c:RegisterEffect(e1) + --remain field + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REMAIN_FIELD) + c:RegisterEffect(e2) +end +function c511002429.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511002429.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Remove(tc,tc:GetPosition(),REASON_EFFECT+REASON_TEMPORARY)~=0 then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x9fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x9fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(1,1) + e3:SetLabelObject(tc) + e3:SetCondition(aux.nfbdncon) + e3:SetTarget(c511002429.sumlimit) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(c511002429.indesval) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetProperty(EFFECT_FLAG_DELAY) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_TO_GRAVE) + e5:SetRange(LOCATION_SZONE) + e5:SetLabelObject(tc) + e5:SetLabel(tc:GetOwner()) + e5:SetCondition(c511002429.retcon) + e5:SetTarget(c511002429.rettg) + e5:SetOperation(c511002429.retop) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + end +end +function c511002429.filter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp + and c:GetControler()==tp and c:IsReason(REASON_DESTROY) and c:GetOwner()==tp +end +function c511002429.retcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002429.filter,1,nil,e:GetLabel()) +end +function c511002429.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and e:GetHandler():IsRelateToEffect(e) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c511002429.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + if c:IsRelateToEffect(e) then + Duel.ReturnToField(tc) + Duel.Destroy(c,REASON_EFFECT) + tc:ResetEffect(RESET_MSCHANGE,RESET_EVENT) + end +end +function c511002429.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject()==c +end +function c511002429.indesval(e,re) + return re:GetOwner()~=e:GetOwner() +end diff --git a/script/c511002430.lua b/script/c511002430.lua new file mode 100644 index 00000000..228aaa4c --- /dev/null +++ b/script/c511002430.lua @@ -0,0 +1,46 @@ +--Trap Charm +function c511002430.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(c511002430.target) + e1:SetOperation(c511002430.operation) + c:RegisterEffect(e1) +end +function c511002430.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 e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=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 c511002430.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --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) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c511002430.efilter) + c:RegisterEffect(e3,true) + end +end +function c511002430.efilter(e,re) + return re:IsActiveType(TYPE_TRAP) +end diff --git a/script/c511002431.lua b/script/c511002431.lua new file mode 100644 index 00000000..21b4581a --- /dev/null +++ b/script/c511002431.lua @@ -0,0 +1,43 @@ +--Spell Barrier +function c511002431.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002431.target) + e1:SetOperation(c511002431.activate) + c:RegisterEffect(e1) +end +function c511002431.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002431.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(c511002431.efilter) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetCondition(c511002431.damcon) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c511002431.efilter(e,te) + return te:IsActiveType(TYPE_MONSTER) +end +function c511002431.damcon(e) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsType(TYPE_EFFECT) +end diff --git a/script/c511002433.lua b/script/c511002433.lua new file mode 100644 index 00000000..1fa10062 --- /dev/null +++ b/script/c511002433.lua @@ -0,0 +1,55 @@ +--Flames of the Archfiend +function c511002433.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002433.condition) + e1:SetTarget(c511002433.target) + e1:SetOperation(c511002433.activate) + c:RegisterEffect(e1) +end +function c511002433.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_FIEND) +end +function c511002433.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002433.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c511002433.filter(c) + return c:IsFaceup() and not c:IsRace(RACE_FIEND) +end +function c511002433.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local c2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + if chk==0 then return true end + local g=Group.CreateGroup() + if c1 then g:AddCard(c1) end + if c2 then g:AddCard(c2) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,1000) +end +function c511002433.activate(e,tp,eg,ep,ev,re,r,rp) + local c1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local c2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + local g=Group.CreateGroup() + if c1 then g:AddCard(c1) end + if c2 then g:AddCard(c2) end + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end + Duel.Damage(1-tp,1000,REASON_EFFECT,true) + Duel.Damage(tp,1000,REASON_EFFECT,true) + Duel.RDComplete() + local sg=Duel.GetMatchingGroup(c511002433.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end +end diff --git a/script/c511002434.lua b/script/c511002434.lua new file mode 100644 index 00000000..b1b649e3 --- /dev/null +++ b/script/c511002434.lua @@ -0,0 +1,44 @@ +--Spellbinding Illusion +function c511002434.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(c511002434.condition) + e1:SetTarget(c511002434.target) + e1:SetOperation(c511002434.activate) + c:RegisterEffect(e1) +end +function c511002434.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002434.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511002434.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(-500) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end diff --git a/script/c511002435.lua b/script/c511002435.lua new file mode 100644 index 00000000..da8bdca4 --- /dev/null +++ b/script/c511002435.lua @@ -0,0 +1,85 @@ +--Eva Abductor +function c511002435.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17955766,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511002435.cost) + e1:SetTarget(c511002435.tg) + e1:SetOperation(c511002435.op) + c:RegisterEffect(e1) + --change pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(13215230,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetCondition(c511002435.poscon) + e2:SetTarget(c511002435.postg) + e2:SetOperation(c511002435.posop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c511002435.atop) + c:RegisterEffect(e3) +end +function c511002435.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c511002435.filter(c) + return c:IsFaceup() and c:IsControlerCanBeChanged() +end +function c511002435.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511002435.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002435.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002435.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c511002435.filter,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.GetControl(tc,tp) then + c:SetCardTarget(tc) + end + end +end +function c511002435.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsFaceup() +end +function c511002435.posfilter(c,g) + return g:IsContains(c) +end +function c511002435.postg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetHandler():GetCardTarget() + if chk==0 then return g:GetCount()>0 end + local g=Duel.GetMatchingGroup(c511002435.posfilter,tp,LOCATION_MZONE,0,nil,g) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511002435.posop(e,tp,eg,ep,ev,re,r,rp) + local sg=e:GetHandler():GetCardTarget() + local g=Duel.GetMatchingGroup(c511002435.posfilter,tp,LOCATION_MZONE,0,nil,sg) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) +end +function c511002435.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=c:GetCardTarget() + local sg=Duel.GetMatchingGroup(c511002435.posfilter,tp,LOCATION_MZONE,0,nil,g) + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end +end diff --git a/script/c511002436.lua b/script/c511002436.lua new file mode 100644 index 00000000..135a49c7 --- /dev/null +++ b/script/c511002436.lua @@ -0,0 +1,4 @@ +--Booby Trap +function c511002436.initial_effect(c) + --effectless +end diff --git a/script/c511002437.lua b/script/c511002437.lua new file mode 100644 index 00000000..c99f6ea3 --- /dev/null +++ b/script/c511002437.lua @@ -0,0 +1,45 @@ +--Teletemporate +function c511002437.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002437.target) + e1:SetOperation(c511002437.activate) + c:RegisterEffect(e1) +end +function c511002437.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511002437.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.Remove(tc,tc:GetPosition(),REASON_EFFECT+REASON_TEMPORARY)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE_START+PHASE_MAIN1) + e1:SetLabel(Duel.GetTurnCount()) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_MAIN1 then + e1:SetReset(RESET_PHASE+PHASE_MAIN1+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_MAIN1+RESET_SELF_TURN,1) + end + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetOperation(c511002437.retop) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511002437.retop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnCount()~=e:GetLabel() and tp==Duel.GetTurnPlayer() then + Duel.Hint(HINT_CARD,0,511002437) + Duel.ReturnToField(e:GetLabelObject()) + end +end diff --git a/script/c511002440.lua b/script/c511002440.lua new file mode 100644 index 00000000..87031141 --- /dev/null +++ b/script/c511002440.lua @@ -0,0 +1,45 @@ +--Medicine Eater +function c511002440.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511002440.condition) + e1:SetTarget(c511002440.target) + e1:SetOperation(c511002440.activate) + c:RegisterEffect(e1) +end +function c511002440.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE + and tc:GetMaterialCount()>0 +end +function c511002440.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=eg:GetFirst() + local g=tc:GetMaterial() + if chkc then return g:IsContains(chkc) and chkc:IsCanBeEffectTarget(e) end + if chk==0 then return g:IsExists(Card.IsCanBeEffectTarget,1,nil,e) end + if g:GetCount()>1 then + g=g:FilterSelect(tp,Card.IsCanBeEffectTarget,1,1,nil,e) + end + Duel.SetTargetCard(g) + tc:CreateEffectRelation(e) +end +function c511002440.activate(e,tp,eg,ep,ev,re,r,rp) + local sc=eg:GetFirst() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and sc and sc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(tc:GetDefense()/2) + sc:RegisterEffect(e2) + sc:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000,1) + end +end diff --git a/script/c511002443.lua b/script/c511002443.lua new file mode 100644 index 00000000..eac8803c --- /dev/null +++ b/script/c511002443.lua @@ -0,0 +1,7 @@ +--Pierce Musketeer +function c511002443.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e1) +end diff --git a/script/c511002444.lua b/script/c511002444.lua new file mode 100644 index 00000000..9b0e66d5 --- /dev/null +++ b/script/c511002444.lua @@ -0,0 +1,54 @@ +--ゴーゴンの眼 +function c511002444.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Defense... + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetTarget(aux.TargetBoolFunction(Card.IsDefensePos)) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetProperty(0) + e3:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_TRIGGER) + c:RegisterEffect(e4) + --damage + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(48009503,0)) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EVENT_DESTROYED) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511002444.damcon) + e5:SetTarget(c511002444.damtg) + e5:SetOperation(c511002444.damop) + c:RegisterEffect(e5) +end +function c511002444.filter(c,tp) + return c:GetPreviousControler()==1-tp and c:IsPreviousPosition(POS_DEFENSE) +end +function c511002444.damcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002444.filter,1,nil,tp) +end +function c511002444.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=eg:Filter(c511002444.filter,nil,tp) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(g:GetSum(Card.GetDefense)/2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetSum(Card.GetDefense)/2) +end +function c511002444.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002445.lua b/script/c511002445.lua new file mode 100644 index 00000000..e1a33e64 --- /dev/null +++ b/script/c511002445.lua @@ -0,0 +1,42 @@ +--Theft Whip +function c511002445.initial_effect(c) + --effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(0,TIMING_EQUIP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002445.target) + e1:SetOperation(c511002445.activate) + c:RegisterEffect(e1) +end +function c511002445.tcfilter(tc,ec,tp,eg,ep,ev,re,r,rp) + if tc:IsFacedown() then return false end + if ec:CheckEquipTarget(tc) then return true end + local te=ec:GetActivateEffect() + if te then + local tg=te:GetTarget() + return tg and tg(te,tp,eg,ep,ev,re,r,rp,0,tc) + end + return false +end +function c511002445.ecfilter(c,tp,eg,ep,ev,re,r,rp) + return c:IsType(TYPE_EQUIP) and c:GetEquipTarget()~=nil + and Duel.IsExistingMatchingCard(c511002445.tcfilter,tp,LOCATION_MZONE,0,1,c:GetEquipTarget(),c,tp,eg,ep,ev,re,r,rp) +end +function c511002445.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002445.ecfilter,tp,0,LOCATION_SZONE,1,nil,tp,eg,ep,ev,re,r,rp) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end +end +function c511002445.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(43641473,0)) + local g=Duel.SelectMatchingCard(tp,c511002445.ecfilter,tp,0,LOCATION_SZONE,1,1,nil,tp,eg,ep,ev,re,r,rp) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local tg=Duel.SelectMatchingCard(tp,c511002445.tcfilter,tp,LOCATION_MZONE,0,1,1,nil,tc,tp,eg,ep,ev,re,r,rp):GetFirst() + Duel.Equip(tp,tc,tg) + end +end diff --git a/script/c511002446.lua b/script/c511002446.lua new file mode 100644 index 00000000..bf5772cf --- /dev/null +++ b/script/c511002446.lua @@ -0,0 +1,39 @@ +--アヌビスの裁き +function c511002446.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002446.condition) + e1:SetTarget(c511002446.target) + e1:SetOperation(c511002446.activate) + c:RegisterEffect(e1) +end +function c511002446.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and Duel.IsChainDisablable(ev) +end +function c511002446.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511002446.filter(c,tp) + return c:GetPreviousControler()==tp +end +function c511002446.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local sg1=dg:Filter(c511002446.filter,nil,tp) + local sg2=dg:Filter(c511002446.filter,nil,1-tp) + local sum1=sg1:GetSum(Card.GetAttack)/2 + local sum2=sg2:GetSum(Card.GetAttack)/2 + Duel.Damage(tp,sum1,REASON_EFFECT,true) + Duel.Damage(1-tp,sum2,REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c511002447.lua b/script/c511002447.lua new file mode 100644 index 00000000..033bf6db --- /dev/null +++ b/script/c511002447.lua @@ -0,0 +1,34 @@ +--Descendants of the Dead +function c511002447.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511002447.spcon) + e1:SetTarget(c511002447.target) + e1:SetOperation(c511002447.activate) + c:RegisterEffect(e1) +end +function c511002447.cfilter(c) + return c:IsReason(REASON_BATTLE) and c:IsLevelAbove(5) +end +function c511002447.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002447.cfilter,1,nil) +end +function c511002447.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002447.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511002447.spfilter,tp,LOCATION_DECK,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c511002447.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511002447.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511002448.lua b/script/c511002448.lua new file mode 100644 index 00000000..07d21140 --- /dev/null +++ b/script/c511002448.lua @@ -0,0 +1,23 @@ +--Annihilating Light +function c511002448.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511002448.activate) + c:RegisterEffect(e1) +end +function c511002448.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_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c511002448.desop) + Duel.RegisterEffect(e1,tp) +end +function c511002448.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511002448) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511002449.lua b/script/c511002449.lua new file mode 100644 index 00000000..3b11e4ec --- /dev/null +++ b/script/c511002449.lua @@ -0,0 +1,74 @@ +--Prominence +function c511002449.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(c511002449.target) + e1:SetOperation(c511002449.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) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000319,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c511002449.destg) + e3:SetOperation(c511002449.desop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(78586116,0)) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(511002449) + e4:SetTarget(c511002449.destg2) + e4:SetOperation(c511002449.desop2) + c:RegisterEffect(e4) +end +function c511002449.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 c511002449.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002449.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetEquipTarget() + if chk==0 then return ec and ec:IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,ec,1,0,0) +end +function c511002449.desop(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + if ec and ec:IsLocation(LOCATION_MZONE) and Duel.Destroy(ec,REASON_EFFECT)>0 then + Duel.RaiseSingleEvent(e:GetHandler(),511002449,e,0,0,0,0,0) + end +end +function c511002449.destg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + local dam=g:FilterCount(Card.IsType,nil,TYPE_MONSTER)*400 + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002449.desop2(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + if Duel.Destroy(g,REASON_EFFECT)>0 then + local dam=g:FilterCount(Card.IsType,nil,TYPE_MONSTER)*500 + Duel.Damage(1-tp,dam,REASON_EFFECT) + end +end diff --git a/script/c511002451.lua b/script/c511002451.lua new file mode 100644 index 00000000..0825d65c --- /dev/null +++ b/script/c511002451.lua @@ -0,0 +1,33 @@ +--The World of True Darkness +function c511002451.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(c511002451.damval) + c:RegisterEffect(e2) + --no damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e3:SetOperation(c511002451.op) + c:RegisterEffect(e3) +end +function c511002451.damval(e,re,val,r,rp,rc) + return 0 +end +function c511002451.op(e,tp,eg,ep,ev,re,r,rp) + if ep==1-tp then + Duel.Hint(HINT_CARD,0,511002451) + Duel.ChangeBattleDamage(1-tp,0) + Duel.Recover(tp,ev,REASON_EFFECT) + end +end diff --git a/script/c511002452.lua b/script/c511002452.lua new file mode 100644 index 00000000..48cf4a6e --- /dev/null +++ b/script/c511002452.lua @@ -0,0 +1,126 @@ +--ガーディアン・デスサイス +function c511002452.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --summon limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_MSET) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(18175965,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetRange(LOCATION_HAND+LOCATION_DECK) + e4:SetCondition(c511002452.spcon) + e4:SetTarget(c511002452.sptg) + e4:SetOperation(c511002452.spop) + c:RegisterEffect(e4) + --equip + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(18175965,1)) + e5:SetCategory(CATEGORY_EQUIP) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + e5:SetCondition(c511002452.eqcon) + e5:SetTarget(c511002452.eqtg) + e5:SetOperation(c511002452.eqop) + c:RegisterEffect(e5) + --disable summon + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EFFECT_CANNOT_SUMMON) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetTargetRange(1,0) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e7) + --destroy + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_IGNITION) + e8:SetCategory(CATEGORY_DESTROY) + e8:SetDescription(aux.Stringid(39765958,0)) + e8:SetRange(LOCATION_MZONE) + e8:SetCondition(c511002452.descon) + e8:SetTarget(c511002452.destg) + e8:SetOperation(c511002452.desop) + c:RegisterEffect(e8) + --Destroy replace + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e9:SetCode(EFFECT_DESTROY_REPLACE) + e9:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e9:SetRange(LOCATION_MZONE) + e9:SetTarget(c511002452.desreptg) + c:RegisterEffect(e9) +end +function c511002452.cfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:GetPreviousControler()==tp + and c:IsReason(REASON_DESTROY) and c:IsCode(34022290) +end +function c511002452.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002452.cfilter,1,nil,tp) +end +function c511002452.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,1,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002452.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,1,tp,tp,true,false,POS_FACEUP_DEFENSE)>0 then + c:CompleteProcedure() + end +end +function c511002452.filter(c,ec) + return c:IsCode(81954378) and c:CheckEquipTarget(ec) +end +function c511002452.eqcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511002452.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c511002452.filter,tp,LOCATION_DECK,0,1,nil,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_DECK) +end +function c511002452.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or c:IsFacedown() or not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(18175965,3)) + local g=Duel.SelectMatchingCard(tp,c511002452.filter,tp,LOCATION_DECK,0,1,1,nil,c) + if g:GetCount()>0 then + Duel.Equip(tp,g:GetFirst(),c) + end +end +function c511002452.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsAttackPos() +end +function c511002452.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511002452.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.Destroy(sg,REASON_EFFECT) +end +function c511002452.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 end + Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + return true +end diff --git a/script/c511002453.lua b/script/c511002453.lua new file mode 100644 index 00000000..b45a32f3 --- /dev/null +++ b/script/c511002453.lua @@ -0,0 +1,24 @@ +--Dazzling Radiance +function c511002453.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002453.condition) + e1:SetOperation(c511002453.activate) + c:RegisterEffect(e1) +end +function c511002453.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,0,LOCATION_MZONE,2,nil) +end +function c511002453.activate(e,tp,eg,ep,ev,re,r,rp) + local cg=Duel.GetMatchingGroup(nil,tp,0,LOCATION_MZONE,nil) + if cg:GetCount()<1 then return end + Duel.NegateAttack() + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + if g:GetCount()<=0 then return end + local ag=g:GetMinGroup(Card.GetAttack) + local a=ag:Select(1-tp,1,1,nil):GetFirst() + local d=cg:Select(1-tp,1,1,a):GetFirst() + Duel.CalculateDamage(a,d) +end diff --git a/script/c511002454.lua b/script/c511002454.lua new file mode 100644 index 00000000..de315eb3 --- /dev/null +++ b/script/c511002454.lua @@ -0,0 +1,50 @@ +--Grazing Bullet +function c511002454.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) + e1:SetCondition(c511002454.condition) + e1:SetTarget(c511002454.target) + e1:SetOperation(c511002454.activate) + c:RegisterEffect(e1) +end +function c511002454.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 c511002454.filter(c,e) + return (not e and c:IsPosition(POS_FACEUP_ATTACK)) or (e and c:IsFaceup() and c:IsRelateToEffect(e)) +end +function c511002454.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511002454.filter,tp,LOCATION_MZONE,0,1,nil,nil) + and Duel.IsExistingTarget(c511002454.filter,tp,0,LOCATION_MZONE,1,nil,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF) + local g1=Duel.SelectTarget(tp,c511002454.filter,tp,LOCATION_MZONE,0,1,1,nil,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g2=Duel.SelectTarget(tp,c511002454.filter,tp,0,LOCATION_MZONE,1,1,nil,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,g2:GetFirst():GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g1:GetFirst():GetAttack()) +end +function c511002454.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c511002454.filter,nil,e) + local g1=g:Filter(Card.IsControler,nil,tp) + local g2=g:Filter(Card.IsControler,nil,1-tp) + local sum1=g1:GetSum(Card.GetAttack) + local sum2=g2:GetSum(Card.GetAttack) + Duel.Damage(tp,sum2,REASON_EFFECT,true) + Duel.Damage(1-tp,sum1,REASON_EFFECT,true) + Duel.RDComplete() + local tc=g2:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + tc=g2:GetNext() + end +end diff --git a/script/c511002455.lua b/script/c511002455.lua new file mode 100644 index 00000000..f5fa8d34 --- /dev/null +++ b/script/c511002455.lua @@ -0,0 +1,58 @@ +--Blue on Blue +function c511002455.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) + e1:SetCondition(c511002455.condition) + e1:SetTarget(c511002455.target) + e1:SetOperation(c511002455.activate) + c:RegisterEffect(e1) +end +function c511002455.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 c511002455.filter(c,e) + return c:IsPosition(POS_FACEUP_ATTACK) and (not e or c:IsRelateToEffect(e)) +end +function c511002455.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511002455.filter,tp,0,LOCATION_MZONE,2,nil,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + Duel.SelectTarget(tp,c511002455.filter,tp,0,LOCATION_MZONE,2,2,nil,nil) +end +function c511002455.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(c511002455.filter,nil,e)~=2 then return end + local sg=tg:Clone() + sg:KeepAlive() + local tc=tg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetReset(RESET_EVENT+0x9fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_CONFIRM) + e2:SetOperation(c511002455.atkop) + e2:SetLabelObject(sg) + e2:SetReset(RESET_EVENT+0x9fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=tg:GetNext() + end +end +function c511002455.atkop(e,tp,eg,ep,ev,re,r,rp) + local p=e:GetHandlerPlayer() + local g=e:GetLabelObject() + if not g then return end + Duel.Hint(HINT_CARD,0,511002455) + local d=g:Select(p,1,1,e:GetHandler()):GetFirst() + Duel.ChangeAttackTarget(d) + d:ResetEffect(RESET_MSCHANGE,RESET_EVENT) + g:DeleteGroup() +end diff --git a/script/c511002456.lua b/script/c511002456.lua new file mode 100644 index 00000000..3c0e38bd --- /dev/null +++ b/script/c511002456.lua @@ -0,0 +1,66 @@ +--Refracting Prism +function c511002456.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002456.condition) + e1:SetTarget(c511002456.target) + e1:SetOperation(c511002456.activate) + c:RegisterEffect(e1) +end +function c511002456.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 +end +function c511002456.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)-1 + local tc=Duel.GetFieldGroup(tp,LOCATION_MZONE,0):GetFirst() + if chk==0 then return ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct and tc + and Duel.IsPlayerCanSpecialSummonMonster(tp,tc:GetCode(),0,tc:GetType(),tc:GetAttack(),tc:GetDefense() + ,tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,0,0) +end +function c511002456.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)-1 + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local tc=g:GetFirst() + if ct<=0 or ft0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002459,0,0x4011,1000,1000,3,RACE_AQUA,ATTRIBUTE_WATER) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,tp,0) +end +function c511002458.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE,tp)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511002459,0,0x4011,1000,1000,3,RACE_AQUA,ATTRIBUTE_WATER) then return end + local token=Duel.CreateToken(tp,511002459) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511002460.lua b/script/c511002460.lua new file mode 100644 index 00000000..faff5840 --- /dev/null +++ b/script/c511002460.lua @@ -0,0 +1,23 @@ +--Shadow Shield +function c511002460.initial_effect(c) + --change battle target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79997591,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002460.condition) + e1:SetOperation(c511002460.activate) + c:RegisterEffect(e1) +end +function c511002460.condition(e,tp,eg,ep,ev,re,r,rp) + local bt=Duel.GetAttackTarget() + return bt and bt:IsControler(tp) +end +function c511002460.activate(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + local bt=Duel.GetAttackTarget() + if not (bt:IsRelateToBattle() and bt:IsControler(tp)) then return end + if at:IsAttackable() and not at:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.ChangeAttackTarget(nil) + end +end diff --git a/script/c511002461.lua b/script/c511002461.lua new file mode 100644 index 00000000..04adb626 --- /dev/null +++ b/script/c511002461.lua @@ -0,0 +1,67 @@ +--Jam Breeding Machine +--scripted by GameMaster (GM) +function c511002461.initial_effect(c) +--Activate +local e1=Effect.CreateEffect(c) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetCode(EVENT_FREE_CHAIN) +c:RegisterEffect(e1) +--token +local e2=Effect.CreateEffect(c) +e2:SetDescription(aux.Stringid(110,0)) +e2:SetCategory(CATEGORY_SPECIAL_SUMMON) +e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) +e2:SetCode(EVENT_PHASE+PHASE_STANDBY) +e2:SetRange(LOCATION_SZONE) +e2:SetCountLimit(1) +e2:SetCondition(c511002461.spcon) +e2:SetTarget(c511002461.sptg) +e2:SetOperation(c511002461.spop) +c:RegisterEffect(e2) +local e3=Effect.CreateEffect(c) +e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) +e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) +e3:SetRange(LOCATION_SZONE) +e3:SetCode(EVENT_SUMMON_SUCCESS) +e3:SetCondition(c511002461.descon) +e3:SetOperation(c511002461.desop) +c:RegisterEffect(e3) +local e4=e3:Clone() +e4:SetCode(EVENT_SPSUMMON_SUCCESS) +c:RegisterEffect(e4) +local e5=e3:Clone() +e5:SetCode(EVENT_FLIP_SUMMON_SUCCESS) +c:RegisterEffect(e5) +end + +c511002461.collection={ [31709826]=true; [46821314]=true; [3918345]=true; +[26905245]=true; [511001208]=true;[511001205]=true; [37984162]=true; +[511000482]=true; [511001207]=true; [100000706]=true;[511001206]=true; +[511000285]=true; [5600127]=true; [45206713]=true; [72291412]=true; +[21770261]=true; } + +function c511002461.spcon(e,tp,eg,ep,ev,re,r,rp) +return Duel.GetTurnPlayer()==tp +end +function c511002461.sptg(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) +Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002461.spop(e,tp,eg,ep,ev,re,r,rp) +if not e:GetHandler():IsRelateToEffect(e) then return end +if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +and Duel.IsPlayerCanSpecialSummonMonster(tp,21770261,0,0x4011,500,500,1,RACE_AQUA,ATTRIBUTE_WATER) then +local token=Duel.CreateToken(tp,21770261) +Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) +end +end +function c511002461.filter1(c,tp) +return c:IsFaceup() and c:GetSummonPlayer()==tp and not c511002461.collection[c:GetCode()] +end +function c511002461.descon(e,tp,eg,ep,ev,re,r,rp) +return eg:IsExists(c511002461.filter1,1,nil,tp) +end +function c511002461.desop(e,tp,eg,ep,ev,re,r,rp) +Duel.Destroy(e:GetHandler(),REASON_RULE) +end diff --git a/script/c511002462.lua b/script/c511002462.lua new file mode 100644 index 00000000..47ea540d --- /dev/null +++ b/script/c511002462.lua @@ -0,0 +1,46 @@ +--デストーイ・シザー・タイガー +function c511002462.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFunRep(c,30068120,aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),1,63,true,true) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511002462.descon) + e2:SetTarget(c511002462.destg) + e2:SetOperation(c511002462.desop) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xad)) + e3:SetValue(c511002462.atkval) + c:RegisterEffect(e3) +end +function c511002462.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511002462.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local ct=e:GetHandler():GetMaterialCount() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002462.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.Destroy(g,REASON_EFFECT) +end +function c511002462.atkfilter(c) + return c:IsFaceup() and (c:IsSetCard(0xa9) or c:IsSetCard(0xad)) +end +function c511002462.atkval(e,c) + return Duel.GetMatchingGroupCount(c511002462.atkfilter,c:GetControler(),LOCATION_MZONE,0,nil)*300 +end diff --git a/script/c511002463.lua b/script/c511002463.lua new file mode 100644 index 00000000..867784f0 --- /dev/null +++ b/script/c511002463.lua @@ -0,0 +1,78 @@ +--キメラテック・フォートレス・ドラゴン +function c511002463.initial_effect(c) + c:EnableReviveLimit() + --fusion material + aux.AddFusionProcCodeFunRep(c,70095154,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),1,63,true,true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(aux.fuslimit) + c:RegisterEffect(e2) + --spsummon success + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c511002463.sucop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetOperation(c511002463.tgop) + c:RegisterEffect(e4) + --attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + e5:SetOperation(c511002463.negop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_ATTACK_ANNOUNCE) + e6:SetTarget(c511002463.damtg) + e6:SetOperation(c511002463.damop) + c:RegisterEffect(e6) +end +function c511002463.sucop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(c:GetMaterialCount()-1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetCondition(c511002463.dircon) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetCondition(c511002463.atkcon) + c:RegisterEffect(e3) +end +function c511002463.dircon(e) + return e:GetHandler():GetAttackAnnouncedCount()>0 +end +function c511002463.atkcon(e) + return e:GetHandler():IsDirectAttacked() +end +function c511002463.tgop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.SendtoGrave(g,REASON_EFFECT) +end +function c511002463.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c511002463.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c511002463.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002464.lua b/script/c511002464.lua new file mode 100644 index 00000000..2fcf0c92 --- /dev/null +++ b/script/c511002464.lua @@ -0,0 +1,113 @@ +--サイバー・ヴァリー +function c511002464.initial_effect(c) + --draw 1 + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3657444,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002464.con1) + e1:SetCost(c511002464.cost1) + e1:SetTarget(c511002464.tg1) + e1:SetOperation(c511002464.op1) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(3657444,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511002464.cost2) + e2:SetTarget(c511002464.tg2) + e2:SetOperation(c511002464.op2) + c:RegisterEffect(e2) + --salvage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(3657444,2)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511002464.cost3) + e3:SetTarget(c511002464.tg3) + e3:SetOperation(c511002464.op3) + c:RegisterEffect(e3) +end +function c511002464.con1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511002464.cost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002464.tg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002464.op1(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.Draw(tp,1,REASON_EFFECT) +end +function c511002464.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_ONFIELD,0,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,LOCATION_ONFIELD,0,1,1,c) + g:AddCard(c) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002464.tg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511002464.op2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c511002464.cost3(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND,0,1,1,nil) + g:AddCard(c) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002464.tg3(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511002464.op3(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetReset(RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + tc:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + tc:RegisterEffect(e4) + end +end diff --git a/script/c511002465.lua b/script/c511002465.lua new file mode 100644 index 00000000..1227f10b --- /dev/null +++ b/script/c511002465.lua @@ -0,0 +1,27 @@ +--Stinging Jellyfish +function c511002465.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34761062,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c511002465.descon) + e1:SetTarget(c511002465.destg) + e1:SetOperation(c511002465.desop) + c:RegisterEffect(e1) +end +function c511002465.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return Duel.GetAttackTarget() and Duel.GetAttackTarget()==c +end +function c511002465.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler():GetBattleTarget(),1,0,0) +end +function c511002465.desop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + if bc:IsRelateToBattle() then + Duel.Destroy(bc,REASON_EFFECT) + end +end diff --git a/script/c511002466.lua b/script/c511002466.lua new file mode 100644 index 00000000..8dd5e071 --- /dev/null +++ b/script/c511002466.lua @@ -0,0 +1,19 @@ +--Silent Sea Nettle +function c511002466.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002466.spcon) + c:RegisterEffect(e1) +end +function c511002466.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511002466.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002466.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002467.lua b/script/c511002467.lua new file mode 100644 index 00000000..87d7d840 --- /dev/null +++ b/script/c511002467.lua @@ -0,0 +1,71 @@ +--黄昏の忍者将軍-ゲツガ +function c511002467.initial_effect(c) + --normal summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76930964,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511002467.otcon) + e1:SetOperation(c511002467.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_PROC) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c511002467.spcost) + e3:SetTarget(c511002467.sptg) + e3:SetOperation(c511002467.spop) + c:RegisterEffect(e3) +end +function c511002467.otfilter(c,tp) + return c:IsSetCard(0x2b) and (c:IsControler(tp) or c:IsFaceup()) +end +function c511002467.otcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c511002467.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 +end +function c511002467.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c511002467.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local sg=Duel.SelectTribute(tp,c,1,1,mg) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c511002467.filter(c,e,tp) + return c:IsSetCard(0x2b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002467.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAttackPos() end + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) +end +function c511002467.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511002467.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c511002467.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002467.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c511002467.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 then return end + if g:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,ft,ft,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + else + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002468.lua b/script/c511002468.lua new file mode 100644 index 00000000..92ad9c98 --- /dev/null +++ b/script/c511002468.lua @@ -0,0 +1,32 @@ +--Infection Fly +function c511002468.initial_effect(c) + --level + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98154550,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002468.target) + e1:SetOperation(c511002468.operation) + c:RegisterEffect(e1) +end +function c511002468.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511002468.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002468.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002468.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002468.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()*2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002469.lua b/script/c511002469.lua new file mode 100644 index 00000000..6c3338cf --- /dev/null +++ b/script/c511002469.lua @@ -0,0 +1,37 @@ +--Multifly +function c511002469.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002469.target) + e1:SetOperation(c511002469.activate) + c:RegisterEffect(e1) +end +function c511002469.filter(c,e,tp) + return c:IsFaceup() and c:IsLevelBelow(2) + and Duel.IsExistingMatchingCard(c511002469.spfilter,tp,LOCATION_HAND,0,2,nil,e,tp,c:GetCode()) +end +function c511002469.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002469.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002469.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingTarget(c511002469.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002469.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c511002469.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local g=Duel.GetMatchingGroup(c511002469.spfilter,tp,LOCATION_HAND,0,nil,e,tp,tc:GetCode()) + if g:GetCount()<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511002470.lua b/script/c511002470.lua new file mode 100644 index 00000000..a45dcbc5 --- /dev/null +++ b/script/c511002470.lua @@ -0,0 +1,82 @@ +--Tsukumo Slash +function c511002470.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511001762) + e1:SetCondition(c511002470.condition) + e1:SetTarget(c511002470.target) + e1:SetOperation(c511002470.activate) + c:RegisterEffect(e1) + if not c511002470.global_check then + c511002470.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511002470.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511002470.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511001762)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511002470.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001762,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511002470.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if c:GetAttack()>e:GetLabel() then + val=c:GetAttack()-e:GetLabel() + Duel.RaiseEvent(c,511001762,re,REASON_EFFECT,rp,tp,val) + end + e:SetLabel(c:GetAttack()) +end +function c511002470.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return Duel.GetLP(tp)<=100 and Duel.GetLP(1-tp)<=100 and Duel.GetLP(tp)~=Duel.GetLP(1-tp) + and ec:IsControler(1-tp) and ev>0 +end +function c511002470.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002470.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.GetLP(tp)>100 or Duel.GetLP(1-tp)>100 or Duel.GetLP(tp)==Duel.GetLP(1-tp) then return end + local val=0 + if Duel.GetLP(tp)>Duel.GetLP(1-tp) then + val=Duel.GetLP(tp)-Duel.GetLP(1-tp) + else + val=Duel.GetLP(1-tp)-Duel.GetLP(tp) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(val*100) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002471.lua b/script/c511002471.lua new file mode 100644 index 00000000..2a7ab4e8 --- /dev/null +++ b/script/c511002471.lua @@ -0,0 +1,83 @@ +--Endless Bond +function c511002471.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002471.target) + e1:SetOperation(c511002471.operation) + c:RegisterEffect(e1) +end +function c511002471.filter(c,e,tp) + return c:IsSetCard(0x107f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002471.afilter(c) + return c:IsSetCard(0x107f) and c:IsType(TYPE_MONSTER) +end +function c511002471.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002471.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002471.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002471.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002471.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + c:SetCardTarget(tc) + local g=Duel.GetMatchingGroup(c511002471.afilter,tp,LOCATION_GRAVE,0,nil) + local atk=0 + local tg=g:GetFirst() + while tg do + atk=atk+tg:GetAttack() + tg=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetDescription(aux.Stringid(48447192,0)) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002471.con) + e2:SetTarget(c511002471.tg) + e2:SetOperation(c511002471.op) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511002471.con(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetCardTarget():GetFirst() + return ec and eg:IsContains(ec) +end +function c511002471.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetCardTarget():GetFirst() + if chk==0 then return ec:GetAttack()>=1000 end + Duel.SetTargetCard(ec) +end +function c511002471.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.ChainAttack() + local bc=tc:GetBattleTarget() + if bc and bc:GetOwner()==tp and Duel.IsPlayerCanDraw(tp,1) and Duel.SelectYesNo(tp,aux.Stringid(41858121,0)) then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end + end +end diff --git a/script/c511002472.lua b/script/c511002472.lua new file mode 100644 index 00000000..fefac588 --- /dev/null +++ b/script/c511002472.lua @@ -0,0 +1,96 @@ +--Ant Barrier +function c511002472.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002472.target) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000047,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002472.atkcon) + e2:SetTarget(c511002472.atktg) + e2:SetOperation(c511002472.atkop) + c:RegisterEffect(e2) + --Negate Damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetRange(LOCATION_HAND) + e3:SetCondition(c511002472.discon) + e3:SetTarget(c511002472.distg) + e3:SetOperation(c511002472.disop) + c:RegisterEffect(e3) +end +function c511002472.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local a=Duel.GetAttacker() + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and c511002472.atkcon(e,tp,Group.FromCards(a),ep,ev,re,r,rp) + and c511002472.atktg(e,tp,Group.FromCards(a),ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(61965407,1)) then + e:SetOperation(c511002472.atkop) + c511002472.atktg(e,tp,Group.FromCards(a),ep,ev,re,r,rp,1) + else + e:SetOperation(nil) + end +end +function c511002472.atkcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:IsControler(1-tp) +end +function c511002472.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and e:GetHandler():GetFlagEffect(511002472)==0 end + Duel.SetTargetCard(tg) + e:GetHandler():RegisterFlagEffect(511002472,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002472.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.NegateAttack() + end +end +function c511002472.discon(e,tp,eg,ep,ev,re,r,rp) + if not re:IsActiveType(TYPE_MONSTER) or ep==tp then return false end + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c511002472.distg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + c:CreateEffectRelation(e) +end +function c511002472.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e1=Effect.CreateEffect(c) + 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(c511002472.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local g=Duel.GetMatchingGroup(c511002472.filter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + end +end +function c511002472.filter(c) + return not c:IsPosition(POS_FACEUP_DEFENSE) +end +function c511002472.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then e:SetLabel(val) return 0 + else return val end +end diff --git a/script/c511002473.lua b/script/c511002473.lua new file mode 100644 index 00000000..d2c18ec2 --- /dev/null +++ b/script/c511002473.lua @@ -0,0 +1,70 @@ +--Danger Draw +function c511002473.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002473.condition) + e1:SetTarget(c511002473.target) + e1:SetOperation(c511002473.activate) + c:RegisterEffect(e1) +end +function c511002473.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and a:GetAttack()>Duel.GetLP(tp) and Duel.GetAttackTarget()==nil +end +function c511002473.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002473.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local g=Duel.GetDecktopGroup(p,1) + local tc=g:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + Duel.ConfirmCards(1-p,tc) + Duel.ShuffleHand(p) + if not tc:IsType(TYPE_TRAP) then return end + Duel.NegateAttack() + if Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and tc:CheckActivateEffect(false,false,false)~=nil + and Duel.SelectYesNo(tp,aux.Stringid(28265983,0)) then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511002474.lua b/script/c511002474.lua new file mode 100644 index 00000000..bcab0952 --- /dev/null +++ b/script/c511002474.lua @@ -0,0 +1,111 @@ +--Damage Take-Over +function c511002474.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002474.condition) + e1:SetTarget(c511002474.target) + e1:SetOperation(c511002474.activate) + c:RegisterEffect(e1) + --activate (effect) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511002474.condition2) + e2:SetTarget(c511002474.target2) + e2:SetOperation(c511002474.operation) + c:RegisterEffect(e2) +end +function c511002474.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511002474.filter(c,ev) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetAttack()>ev +end +function c511002474.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local dam=Duel.GetBattleDamage(tp) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002474.filter(chkc,dam) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c511002474.filter,tp,LOCATION_MZONE,0,1,nil,dam) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002474.filter,tp,LOCATION_MZONE,0,1,1,nil,dam) +end +function c511002474.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-Duel.GetBattleDamage(tp)) + if tc:RegisterEffect(e1) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetOperation(c511002474.damop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) + end + if c:IsRelateToEffect(e) then + Duel.BreakEffect() + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + end + end +end +function c511002474.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511002474.condition2(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + e:SetLabel(cv) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + e:SetLabel(cv) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511002474.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local cid=e:GetLabel() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002474.filter(chkc,cid) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c511002474.filter,tp,LOCATION_MZONE,0,1,nil,cid) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002474.filter,tp,LOCATION_MZONE,0,1,1,nil,cid) +end +function c511002474.operation(e,tp,eg,ep,ev,re,r,rp) + local cid=e:GetLabel() + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-cid) + if tc:RegisterEffect(e1) then + 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(c511002474.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + end + if c:IsRelateToEffect(e) then + Duel.BreakEffect() + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + end + end +end +function c511002474.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end + return 0 +end diff --git a/script/c511002475.lua b/script/c511002475.lua new file mode 100644 index 00000000..6c052251 --- /dev/null +++ b/script/c511002475.lua @@ -0,0 +1,38 @@ +--Light Wing Bumper +function c511002475.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_DISABLED) + e1:SetTarget(c511002475.target) + e1:SetOperation(c511002475.activate) + c:RegisterEffect(e1) +end +function c511002475.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511002475.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + local c=e:GetHandler() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetValue(-800) + tc:RegisterEffect(e3) + tc=g:GetNext() + end +end diff --git a/script/c511002476.lua b/script/c511002476.lua new file mode 100644 index 00000000..d2725239 --- /dev/null +++ b/script/c511002476.lua @@ -0,0 +1,80 @@ +--Choshobu +function c511002476.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002476.target) + e1:SetOperation(c511002476.activate) + c:RegisterEffect(e1) +end +function c511002476.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToExtra() +end +function c511002476.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002476.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002476.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511002476.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511002476.mgfilter(c,e,tp,sync) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x80008)~=0x80008 or c:GetReasonCard()~=sync + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002476.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local mg=tc:GetMaterial() + local sumable=true + local sumtype=tc:GetSummonType() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 or sumtype~=SUMMON_TYPE_SYNCHRO or mg:GetCount()==0 + or mg:GetCount()>ft + or mg:IsExists(c511002476.mgfilter,1,nil,e,tp,tc) then + sumable=false + end + if sumable and Duel.SelectYesNo(tp,aux.Stringid(32441317,0)) then + Duel.BreakEffect() + local spc=mg:GetFirst() + while spc do + Duel.SpecialSummonStep(spc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1fe0000) + spc:RegisterEffect(e1,true) + spc=mg:GetNext() + end + Duel.SpecialSummonComplete() + Duel.BreakEffect() + local hc=Duel.GetDecktopGroup(tp,1):GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if hc then + Duel.ConfirmCards(1-tp,hc) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and hc:IsSetCard(0xe3) then + Duel.SpecialSummonStep(hc,0,tp,tp,true,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1fe0000) + hc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + elseif hc:IsType(TYPE_MONSTER) then + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + local lp=Duel.GetLP(tp) + Duel.SetLP(tp,math.ceil(lp/2)) + end + end + Duel.ShuffleHand(tp) + end + end +end diff --git a/script/c511002477.lua b/script/c511002477.lua new file mode 100644 index 00000000..388f32a2 --- /dev/null +++ b/script/c511002477.lua @@ -0,0 +1,89 @@ +--Cardian - Gokou +function c511002477.initial_effect(c) + --synchro summon + c:EnableReviveLimit() + c511002477.tuner_filter=function(mc) return true end + c511002477.nontuner_filter=function(mc) return true end + c511002477.minntct=4 + c511002477.maxntct=4 + c511002477.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(aux.SynCondition(nil,nil,4,4)) + e1:SetTarget(aux.SynTarget(nil,nil,4,4)) + e1:SetOperation(aux.SynOperation(nil,nil,4,4)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --negate spell + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(68140974,2)) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511002477.negcon) + e2:SetTarget(c511002477.negtg) + e2:SetOperation(c511002477.negop) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(54912977,0)) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_START) + e3:SetCondition(c511002477.discon) + e3:SetTarget(c511002477.distg) + e3:SetOperation(c511002477.disop) + c:RegisterEffect(e3) +end +function c511002477.negcon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return ep~=tp and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511002477.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511002477.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511002477.discon(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + return r~=REASON_REPLACE and bc and bc:IsControler(1-tp) +end +function c511002477.distg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return not bc:IsDisabled() end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,bc,1,0,0) +end +function c511002477.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc:IsRelateToBattle() then + Duel.NegateRelatedChain(bc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e2) + end +end diff --git a/script/c511002478.lua b/script/c511002478.lua new file mode 100644 index 00000000..25c6e810 --- /dev/null +++ b/script/c511002478.lua @@ -0,0 +1,36 @@ +--Fuda Shikomi +function c511002478.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002478.target) + e1:SetOperation(c511002478.activate) + c:RegisterEffect(e1) +end +function c511002478.filter(c) + return c:IsFaceup() and c:IsSetCard(0xe3) and c:GetLevel()~=2 +end +function c511002478.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002478.filter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c511002478.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002478.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002478.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetLevel()~=2 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c511002479.lua b/script/c511002479.lua new file mode 100644 index 00000000..7eee4121 --- /dev/null +++ b/script/c511002479.lua @@ -0,0 +1,33 @@ +--Vow of Tribe +function c511002479.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002479.condition) + e1:SetOperation(c511002479.activate) + c:RegisterEffect(e1) +end +function c511002479.cfilter(c) + local p=c:GetControler() + return c:IsFaceup() and Duel.IsExistingMatchingCard(c511002479.filter,p,0,LOCATION_MZONE,1,nil,c:GetCode()) +end +function c511002479.filter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511002479.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002479.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511002479.cfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c511002479.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002479.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002480.lua b/script/c511002480.lua new file mode 100644 index 00000000..7e1993a3 --- /dev/null +++ b/script/c511002480.lua @@ -0,0 +1,63 @@ +--バスター・モード +function c511002480.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c511002480.cost) + e1:SetTarget(c511002480.target) + e1:SetOperation(c511002480.activate) + c:RegisterEffect(e1) +end +c511002480.list={[44508094]=61257789,[70902743]=77336644,[6021033]=1764972, + [31924889]=14553285,[23693634]=38898779,[95526884]=37169670} +function c511002480.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c511002480.filter1(c,e,tp) + local code=c:GetCode() + local tcode=c511002480.list[code] + return tcode and c:IsType(TYPE_SYNCHRO) and Duel.IsExistingMatchingCard(c511002480.filter2,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,tcode,e,tp) +end +function c511002480.filter2(c,tcode,e,tp) + return c:IsCode(tcode) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511002480.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c511002480.filter1,1,nil,e,tp) + end + local rg=Duel.SelectReleaseGroup(tp,c511002480.filter1,1,1,nil,e,tp) + e:SetLabel(rg:GetFirst():GetCode()) + Duel.Release(rg,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511002480.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local code=e:GetLabel() + local tcode=c511002480.list[code] + local tc=Duel.SelectMatchingCard(tp,c511002480.filter2,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,tcode,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(c511002480.efilter) + tc:RegisterEffect(e2) + tc:CompleteProcedure() + end +end +function c511002480.efilter(e,re,rp) + return e:GetHandlerPlayer()~=rp +end diff --git a/script/c511002481.lua b/script/c511002481.lua new file mode 100644 index 00000000..43049555 --- /dev/null +++ b/script/c511002481.lua @@ -0,0 +1,32 @@ +--クロス・ソウル +function c511002481.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002481.target) + e1:SetOperation(c511002481.activate) + c:RegisterEffect(e1) +end +function c511002481.filter(c) + return not (c:IsHasEffect(EFFECT_UNRELEASABLE_SUM) and c:IsHasEffect(EFFECT_UNRELEASABLE_NONSUM)) +end +function c511002481.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002481.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002481.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002481.filter,tp,0,LOCATION_MZONE,1,3,nil) +end +function c511002481.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RELEASE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002482.lua b/script/c511002482.lua new file mode 100644 index 00000000..901a072c --- /dev/null +++ b/script/c511002482.lua @@ -0,0 +1,83 @@ +--CNo.15 ギミック・パペット-シリアルキラー +function c511002482.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,9,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002482.rankupregcon) + e1:SetOperation(c511002482.rankupregop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002482.indes) + c:RegisterEffect(e2) + if not c511002482.global_check then + c511002482.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002482.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002482.xyz_number=15 +function c511002482.rumfilter(c) + return c:IsCode(88120966) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511002482.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511002482.rumfilter,1,nil) +end +function c511002482.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(33776843,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002482.cost) + e1:SetTarget(c511002482.target) + e1:SetOperation(c511002482.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511002482.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002482.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,sg:GetSum(Card.GetAttack)) +end +function c511002482.operation(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local atk=0 + local tc=dg:GetFirst() + while tc do + if tc:IsPreviousPosition(POS_FACEUP) then + atk=atk+tc:GetPreviousAttackOnField() + end + tc=dg:GetNext() + end + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end +function c511002482.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,33776843) + Duel.CreateToken(1-tp,33776843) +end +function c511002482.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002483.lua b/script/c511002483.lua new file mode 100644 index 00000000..26a80063 --- /dev/null +++ b/script/c511002483.lua @@ -0,0 +1,29 @@ +--紅蓮魔竜の壺 +function c511002483.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002483.condition) + e1:SetTarget(c511002483.target) + e1:SetOperation(c511002483.activate) + c:RegisterEffect(e1) +end +function c511002483.cfilter(c) + return c:IsFaceup() and c:IsCode(70902743) +end +function c511002483.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002483.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511002483.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511002483.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002484.lua b/script/c511002484.lua new file mode 100644 index 00000000..62ecf575 --- /dev/null +++ b/script/c511002484.lua @@ -0,0 +1,56 @@ +--破壊神の系譜 +function c511002484.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002484.condition) + e1:SetTarget(c511002484.target) + e1:SetOperation(c511002484.activate) + c:RegisterEffect(e1) + if not c511002484.global_check then + c511002484.global_check=true + c511002484[0]=0 + c511002484[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511002484.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002484.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_DEFENSE) and c:GetPreviousControler()==tp +end +function c511002484.checkop(e,tp,eg,ep,ev,re,r,rp) + local ct1=eg:FilterCount(c511002484.cfilter,nil,tp) + local ct2=eg:FilterCount(c511002484.cfilter,nil,1-tp) + c511002484[tp]=c511002484[tp]+ct2 + c511002484[1-tp]=c511002484[1-tp]+ct1 +end +function c511002484.condition(e,tp,eg,ep,ev,re,r,rp) + return c511002484[tp]>0 and Duel.GetTurnPlayer()==tp + and (Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE)) +end +function c511002484.filter(c) + return c:IsFaceup() and c:GetEffectCount(EFFECT_EXTRA_ATTACK)==0 +end +function c511002484.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002484.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002484.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002484.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002484.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(c511002484[tp]) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002485.lua b/script/c511002485.lua new file mode 100644 index 00000000..c595d4de --- /dev/null +++ b/script/c511002485.lua @@ -0,0 +1,70 @@ +--幻奏の歌姫ソプラノ +function c511002485.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002485.target) + e1:SetOperation(c511002485.operation) + c:RegisterEffect(e1) +end +function c511002485.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002485.filter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,gc) +end +function c511002485.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE+LOCATION_HAND,0,c) + local res=Duel.IsExistingMatchingCard(c511002485.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511002485.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002485.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end + local mg1=Duel.GetMatchingGroup(c511002485.filter1,tp,LOCATION_MZONE+LOCATION_HAND,0,c,e) + local sg1=Duel.GetMatchingGroup(c511002485.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511002485.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511002486.lua b/script/c511002486.lua new file mode 100644 index 00000000..8ef274c8 --- /dev/null +++ b/script/c511002486.lua @@ -0,0 +1,54 @@ +--幻奏の音女アリア +function c511002486.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511002486.unregop) + c:RegisterEffect(e1) + --battle damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetOperation(c511002486.regop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(79491903,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCountLimit(1) + e3:SetCondition(c511002486.damcon) + e3:SetTarget(c511002486.damtg) + e3:SetOperation(c511002486.damop) + c:RegisterEffect(e3) +end +function c511002486.unregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetAttacker()==c or (Duel.GetAttackTarget() and Duel.GetAttackTarget()==c) and c:GetFlagEffect(511002486)>0 then + c:ResetFlagEffect(511002486) + end +end +function c511002486.regop(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp then + e:GetHandler():RegisterFlagEffect(511002486,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + end +end +function c511002486.damcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(511002486) +end +function c511002486.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511002486.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002487.lua b/script/c511002487.lua new file mode 100644 index 00000000..3478596a --- /dev/null +++ b/script/c511002487.lua @@ -0,0 +1,51 @@ +--幻奏の華歌聖ブルーム・ディーヴァ +function c511002487.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511002487.mfilter,aux.FilterBoolFunction(Card.IsFusionSetCard,0x9b),true) + --effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c511002487.condition) + e1:SetOperation(c511002487.operation) + c:RegisterEffect(e1) +end +function c511002487.mfilter(c) + return c:IsFusionSetCard(0x209b) or c:IsCode(14763299) or c:IsCode(62895219) +end +function c511002487.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bit.band(bc:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL and bc:IsControler(1-tp) +end +function c511002487.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e2) + if bc:IsRelateToBattle() then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLED) + e3:SetOperation(c511002487.desop) + e3:SetReset(RESET_PHASE+PHASE_DAMAGE) + bc:RegisterEffect(e3) + end + end +end +function c511002487.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511002488.lua b/script/c511002488.lua new file mode 100644 index 00000000..a33b3b71 --- /dev/null +++ b/script/c511002488.lua @@ -0,0 +1,23 @@ +--幻奏の音女カノン +function c511002488.initial_effect(c) + --pos + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(72370114,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002488.target) + e1:SetOperation(c511002488.operation) + c:RegisterEffect(e1) +end +function c511002488.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c511002488.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511002489.lua b/script/c511002489.lua new file mode 100644 index 00000000..76cf5675 --- /dev/null +++ b/script/c511002489.lua @@ -0,0 +1,40 @@ +--幻奏のイリュージョン +function c511002489.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002489.condition) + e1:SetTarget(c511002489.target) + e1:SetOperation(c511002489.activate) + c:RegisterEffect(e1) +end +function c511002489.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and tp~=ep and re:IsActiveType(TYPE_TRAP) + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainDisablable(ev) +end +function c511002489.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9b) +end +function c511002489.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002489.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002489.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002489.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511002489.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002490.lua b/script/c511002490.lua new file mode 100644 index 00000000..dba2b844 --- /dev/null +++ b/script/c511002490.lua @@ -0,0 +1,31 @@ +--独奏の第1楽章 +function c511002490.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002490.condition) + e1:SetTarget(c511002490.target) + e1:SetOperation(c511002490.activate) + c:RegisterEffect(e1) +end +function c511002490.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511002490.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x9b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002490.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002490.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511002490.activate(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,c511002490.filter,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 diff --git a/script/c511002491.lua b/script/c511002491.lua new file mode 100644 index 00000000..ba3db400 --- /dev/null +++ b/script/c511002491.lua @@ -0,0 +1,49 @@ +--Engagement Destiny +function c511002491.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511002491.condition) + e1:SetTarget(c511002491.target) + e1:SetOperation(c511002491.activate) + c:RegisterEffect(e1) +end +function c511002491.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + e:SetLabel(cv) + if ex and (cp==1-tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + e:SetLabel(cv) + return ex and (cp==1-tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_REVERSE_RECOVER) +end +function c511002491.target(e,tp,eg,ep,ev,re,r,rp,chk) + local cid=e:GetLabel() + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(cid/2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,cid/2) +end +function c511002491.activate(e,tp,eg,ep,ev,re,r,rp) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetLabel(cid) + e1:SetValue(c511002491.damcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002491.damcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return val/2 end + return val +end diff --git a/script/c511002492.lua b/script/c511002492.lua new file mode 100644 index 00000000..eebddfa6 --- /dev/null +++ b/script/c511002492.lua @@ -0,0 +1,46 @@ +--Back Attack Ambush +function c511002492.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002492.condition) + e1:SetTarget(c511002492.target) + e1:SetOperation(c511002492.activate) + c:RegisterEffect(e1) +end +function c511002492.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002492.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + if chk==0 then return ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002493,0,0x4011,100,100,1,RACE_WARRIOR,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,0,0) +end +function c511002492.filter(c) + return c:IsReleasableByEffect() and c:IsCode(511002493) +end +function c511002492.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>ct then ft=ct end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511002493,0,0x4011,100,100,1,RACE_WARRIOR,ATTRIBUTE_EARTH) then return end + for i=1,ft do + local token=Duel.CreateToken(tp,511002493) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + local g=Duel.GetMatchingGroup(c511002492.filter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(63014935,2)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=g:Select(tp,1,5,nil) + Duel.Release(sg,REASON_EFFECT) + Duel.Damage(1-tp,sg:GetCount()*500,REASON_EFFECT) + end +end diff --git a/script/c511002494.lua b/script/c511002494.lua new file mode 100644 index 00000000..77ee6aeb --- /dev/null +++ b/script/c511002494.lua @@ -0,0 +1,91 @@ +--Battler's Cry +function c511002494.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511001265) + e1:SetCondition(c511002494.condition) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_WARRIOR)) + e2:SetValue(c511002494.val) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(5851097,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511002494.descon) + e3:SetTarget(c511002494.destg) + e3:SetOperation(c511002494.desop) + c:RegisterEffect(e3) + if not c511002494.global_check then + c511002494.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511002494.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511002494.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511002494.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511002494.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511002494.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(1-tp) and ev>0 and re and re:IsActiveType(TYPE_MONSTER) +end +function c511002494.val(e,c) + return c:GetAttack()*2 +end +function c511002494.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsType,1,nil,TYPE_MONSTER) and e:GetHandler():IsStatus(STATUS_ACTIVATED) +end +function c511002494.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsRelateToEffect(e) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,c,1,0,0) +end +function c511002494.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c511002495.lua b/script/c511002495.lua new file mode 100644 index 00000000..67b52876 --- /dev/null +++ b/script/c511002495.lua @@ -0,0 +1,56 @@ +--Heroic Growth +function c511002495.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(c511002495.target) + e1:SetOperation(c511002495.operation) + c:RegisterEffect(e1) + --Atk Change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetCondition(c511002495.condition) + e2:SetValue(c511002495.value) + 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(c511002495.eqlimit) + c:RegisterEffect(e3) +end +function c511002495.eqlimit(e,c) + return c:IsRace(RACE_WARRIOR) +end +function c511002495.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c511002495.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511002495.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002495.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002495.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002495.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002495.condition(e) + return Duel.GetLP(0)~=Duel.GetLP(1) +end +function c511002495.value(e,c) + local p=e:GetHandler():GetControler() + if Duel.GetLP(p)Duel.GetLP(1-p) then + return c:GetAttack()/2 + end +end diff --git a/script/c511002496.lua b/script/c511002496.lua new file mode 100644 index 00000000..d830dd3d --- /dev/null +++ b/script/c511002496.lua @@ -0,0 +1,42 @@ +--Pixie Gong +function c511002496.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511002496.condition) + e1:SetTarget(c511002496.target) + e1:SetOperation(c511002496.activate) + c:RegisterEffect(e1) +end +function c511002496.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and Duel.GetAttackTarget()==nil +end +c511002496.collection={ + [35429292]=true;[73837870]=true;[4179255]=true;[68401546]=true;[73507661]=true; + [81563416]=true;[91559748]=true;[8687195]=true;[85239662]=true;[44125452]=true; + [28290705]=true;[45425051]=true;[19684740]=true; --Pixie + + [66836598]=true;[37160778]=true;[48742406]=true;[22419772]=true;[45939611]=true; + [44125452]=true;[79575620]=true;[25862681]=true;[23454876]=true;[51960178]=true; + [20315854]=true;[1761063]=true;[6979239]=true; --Fairy + + [44663232]=true;[58753372]=true;[90925163]=true;[55623480]=true;[42921475]=true; --Fairy + Pixie +} +function c511002496.spfilter(c,e,tp) + return (c:IsSetCard(0x412) or c:IsSetCard(0x413) or c511002496.collection[c:GetCode()]) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002496.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002496.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002496.activate(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,c511002496.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002497.lua b/script/c511002497.lua new file mode 100644 index 00000000..35424dff --- /dev/null +++ b/script/c511002497.lua @@ -0,0 +1,43 @@ +--Bug Switch +function c511002497.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002497.condition) + e1:SetTarget(c511002497.target) + e1:SetOperation(c511002497.operation) + c:RegisterEffect(e1) +end +function c511002497.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,87526784) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,23915499) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,50319138) +end +function c511002497.filter(c,e,tp) + return c:IsCode(86804246) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511002497.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:IsPosition(POS_FACEUP_DEFENSE) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_DEFENSE) + and Duel.IsExistingMatchingCard(c511002497.filter,tp,0x13,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPDEFENSE) + local g=Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_DEFENSE) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511002497.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and not tc:IsAttackPos() then + Duel.ChangePosition(tc,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002497.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end + end +end diff --git a/script/c511002498.lua b/script/c511002498.lua new file mode 100644 index 00000000..514f1ee0 --- /dev/null +++ b/script/c511002498.lua @@ -0,0 +1,28 @@ +--Leaf Transformation +function c511002498.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002498.target) + e1:SetOperation(c511002498.activate) + c:RegisterEffect(e1) +end +function c511002498.filter(c,e,tp) + return (c:IsCode(17441953) or c:IsCode(31991800) or c:IsCode(92729410) or c:IsCode(28118128) or c:IsCode(39972129)) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002498.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002498.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002498.activate(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,c511002498.filter,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 diff --git a/script/c511002499.lua b/script/c511002499.lua new file mode 100644 index 00000000..63536a94 --- /dev/null +++ b/script/c511002499.lua @@ -0,0 +1,48 @@ +--レーザー砲機甲鎧 +function c511002499.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(c511002499.target) + e1:SetOperation(c511002499.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1500) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(2000) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511002499.eqlimit) + c:RegisterEffect(e4) +end +function c511002499.eqlimit(e,c) + return c:IsRace(RACE_INSECT) +end +function c511002499.filter(c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) +end +function c511002499.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002499.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002499.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002499.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002499.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end diff --git a/script/c511002500.lua b/script/c511002500.lua new file mode 100644 index 00000000..638170d0 --- /dev/null +++ b/script/c511002500.lua @@ -0,0 +1,3 @@ +--ラーバモス +function c511002500.initial_effect(c) +end diff --git a/script/c511002501.lua b/script/c511002501.lua new file mode 100644 index 00000000..df2499d6 --- /dev/null +++ b/script/c511002501.lua @@ -0,0 +1,36 @@ +--グレート・モス +function c511002501.initial_effect(c) + c:EnableReviveLimit() + --atk down + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(-500) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511002501.spcon) + e2:SetOperation(c511002501.spop) + c:RegisterEffect(e2) +end +function c511002501.eqfilter(c) + return c:IsCode(40240595) and c:GetTurnCounter()>=4 +end +function c511002501.rfilter(c) + return c:IsCode(58192742) and c:GetEquipGroup():IsExists(c511002501.eqfilter,1,nil) +end +function c511002501.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),c511002501.rfilter,1,nil) +end +function c511002501.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),c511002501.rfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end diff --git a/script/c511002502.lua b/script/c511002502.lua new file mode 100644 index 00000000..93419ec7 --- /dev/null +++ b/script/c511002502.lua @@ -0,0 +1,31 @@ +--魔霧雨 +function c511002502.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002502.target) + e1:SetOperation(c511002502.activate) + c:RegisterEffect(e1) +end +function c511002502.filter(c) + return c:IsFaceup() and (c:IsCode(70781052) or c:IsCode(61370518) or c:IsRace(RACE_THUNDER)) +end +function c511002502.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002502.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511002502.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002502.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local atk=tc:GetAttack()*3/10 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(atk) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002504.lua b/script/c511002504.lua new file mode 100644 index 00000000..2ff24b1a --- /dev/null +++ b/script/c511002504.lua @@ -0,0 +1,23 @@ +--カードを狩る死神 +function c511002504.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511002504.atkop) + c:RegisterEffect(e1) +end +function c511002504.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(23603403,0)) then + Duel.Hint(HINT_CARD,0,511002504) + local sc=g:Select(tp,1,1,nil):GetFirst() + Duel.MoveToField(sc,sc:GetControler(),sc:GetControler(),LOCATION_MZONE,POS_FACEDOWN_DEFENSE,true) + Duel.BreakEffect() + if sc:IsControler(tp) then + Duel.GetControl(sc,1-tp,PHASE_END) + end + Duel.ChangeAttackTarget(sc) + end +end diff --git a/script/c511002506.lua b/script/c511002506.lua new file mode 100644 index 00000000..9537e1a0 --- /dev/null +++ b/script/c511002506.lua @@ -0,0 +1,48 @@ +--雷魔神-サンガ +function c511002506.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MONSTER_SSET) + e1:SetValue(TYPE_SPELL) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c511002506.condition) + e2:SetTarget(c511002506.target) + e2:SetOperation(c511002506.activate) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(84565800,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetCountLimit(1) + e3:SetOperation(c511002506.negop) + c:RegisterEffect(e3) +end +function c511002506.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511002506.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002506.cfilter,tp,LOCATION_ONFIELD,0,1,nil,98434877) + and Duel.IsExistingMatchingCard(c511002506.cfilter,tp,LOCATION_ONFIELD,0,1,nil,62340868) +end +function c511002506.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511002506.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511002506.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511002507.lua b/script/c511002507.lua new file mode 100644 index 00000000..e41de0bc --- /dev/null +++ b/script/c511002507.lua @@ -0,0 +1,48 @@ +--水魔神-スーガ +function c511002507.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MONSTER_SSET) + e1:SetValue(TYPE_SPELL) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c511002507.condition) + e2:SetTarget(c511002507.target) + e2:SetOperation(c511002507.activate) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(84565800,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetCountLimit(1) + e3:SetOperation(c511002507.negop) + c:RegisterEffect(e3) +end +function c511002507.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511002507.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002507.cfilter,tp,LOCATION_ONFIELD,0,1,nil,25955164) + and Duel.IsExistingMatchingCard(c511002507.cfilter,tp,LOCATION_ONFIELD,0,1,nil,62340868) +end +function c511002507.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511002507.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511002507.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511002508.lua b/script/c511002508.lua new file mode 100644 index 00000000..af3e4f6d --- /dev/null +++ b/script/c511002508.lua @@ -0,0 +1,48 @@ +--風魔神-ヒューガ +function c511002508.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MONSTER_SSET) + e1:SetValue(TYPE_SPELL) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c511002508.condition) + e2:SetTarget(c511002508.target) + e2:SetOperation(c511002508.activate) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(84565800,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetCountLimit(1) + e3:SetOperation(c511002508.negop) + c:RegisterEffect(e3) +end +function c511002508.cfilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511002508.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002508.cfilter,tp,LOCATION_ONFIELD,0,1,nil,25955164) + and Duel.IsExistingMatchingCard(c511002508.cfilter,tp,LOCATION_ONFIELD,0,1,nil,98434877) +end +function c511002508.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511002508.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511002508.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511002509.lua b/script/c511002509.lua new file mode 100644 index 00000000..93de08eb --- /dev/null +++ b/script/c511002509.lua @@ -0,0 +1,89 @@ +--スフィア・ボム球体時限爆弾 +function c511002509.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001906,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002509.eqtg) + e1:SetOperation(c511002509.eqop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002509.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002509.eqlimit(e,c) + return e:GetOwner()==c +end +function c511002509.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002509.eqlimit) + c:RegisterEffect(e1) + --destroy&damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(26302522,1)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002509.descon) + e2:SetTarget(c511002509.destg) + e2:SetOperation(c511002509.desop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + else + Duel.SendtoGrave(c,REASON_EFFECT) + end +end +function c511002509.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511002509.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local ec=c:GetEquipTarget() + ec:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,c,1,0,0) + if c:GetAttack()>=ec:GetAttack() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,ec,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,c:GetAttack()-ec:GetAttack()) + else + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,ec:GetAttack()-c:GetAttack()) + end +end +function c511002509.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetEquipTarget() + if not c:IsRelateToEffect(e) or not ec or not ec:IsRelateToEffect(e) then return end + if Duel.Destroy(c,REASON_EFFECT)>0 then + if c:GetAttack()>=ec:GetAttack() then + Duel.Destroy(ec,REASON_EFFECT) + Duel.Damage(1-tp,c:GetAttack()-ec:GetAttack(),REASON_EFFECT) + else + Duel.Damage(tp,ec:GetAttack()-c:GetAttack(),REASON_EFFECT) + end + end +end diff --git a/script/c511002515.lua b/script/c511002515.lua new file mode 100644 index 00000000..9752fc2a --- /dev/null +++ b/script/c511002515.lua @@ -0,0 +1,44 @@ +--魔術の呪文書 +function c511002515.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(c511002515.target) + e1:SetOperation(c511002515.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + 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(c511002515.eqlimit) + c:RegisterEffect(e3) +end +function c511002515.eqlimit(e,c) + return c:IsRace(RACE_SPELLCASTER) +end +function c511002515.filter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c511002515.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002515.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002515.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002515.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002515.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end diff --git a/script/c511002516.lua b/script/c511002516.lua new file mode 100644 index 00000000..ac1c6b30 --- /dev/null +++ b/script/c511002516.lua @@ -0,0 +1,11 @@ +--Cardian - Inoshikacho +function c511002516.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e1) +end diff --git a/script/c511002517.lua b/script/c511002517.lua new file mode 100644 index 00000000..144be9b8 --- /dev/null +++ b/script/c511002517.lua @@ -0,0 +1,144 @@ +--機皇神マシニクル∞ +function c511002517.initial_effect(c) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(63468625,0)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c511002517.eqtg) + e3:SetOperation(c511002517.eqop) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(63468625,1)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511002517.damcon) + e4:SetCost(c511002517.damcost) + e4:SetTarget(c511002517.damtg) + e4:SetOperation(c511002517.damop) + c:RegisterEffect(e4) + --gain eff + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(10032958,0)) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_FREE_CHAIN) + e5:SetRange(LOCATION_MZONE) + e5:SetCost(c511002517.effcost) + e5:SetTarget(c511002517.efftg) + e5:SetOperation(c511002517.effop) + c:RegisterEffect(e5) + --Destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetTarget(c511002517.desreptg) + c:RegisterEffect(e2) +end +function c511002517.eqfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() +end +function c511002517.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002517.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511002517.eqfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511002517.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511002517.eqlimit(e,c) + return e:GetOwner()==c and not c:IsDisabled() +end +function c511002517.eqop(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:IsType(TYPE_MONSTER) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002517.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(63468625,RESET_EVENT+0x1fe0000,0,1) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c511002517.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002517.dcfilter(c) + return c:GetFlagEffect(63468625)~=0 and c:IsAbleToGraveAsCost() +end +function c511002517.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(c511002517.dcfilter,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,c511002517.dcfilter,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + local atk=g:GetFirst():GetTextAttack() + if atk<0 then atk=0 end + e:SetLabel(atk) +end +function c511002517.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c511002517.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002517.cfilter(c) + return c:IsSetCard(0x300) and not c:IsSetCard(0x13) and c:IsAbleToGraveAsCost() +end +function c511002517.effcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002517.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002517.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + e:SetLabelObject(g:GetFirst()) +end +function c511002517.efftg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetLabelObject() + Duel.SetTargetCard(tc) +end +function c511002517.effop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc then + c:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end +end +function c511002517.repfilter(c) + return c:IsSetCard(0x300) and not c:IsSetCard(0x13) and c:IsAbleToRemove() +end +function c511002517.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) + and Duel.IsExistingMatchingCard(c511002517.repfilter,tp,LOCATION_GRAVE,0,1,nil) end + if Duel.SelectYesNo(tp,aux.Stringid(100000068,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002517.repfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT+REASON_REPLACE) + return true + else return false end +end diff --git a/script/c511002518.lua b/script/c511002518.lua new file mode 100644 index 00000000..7031b5ea --- /dev/null +++ b/script/c511002518.lua @@ -0,0 +1,64 @@ +--レッド・デーモンズ・ドラゴン/バスター +function c511002518.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(77336644,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c511002518.descon) + e2:SetTarget(c511002518.destg) + e2:SetOperation(c511002518.desop) + c:RegisterEffect(e2) + --Special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(77336644,1)) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511002518.spcon) + e3:SetTarget(c511002518.sptg) + e3:SetOperation(c511002518.spop) + c:RegisterEffect(e3) +end +function c511002518.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler() +end +function c511002518.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002518.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) +end +function c511002518.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511002518.spfilter(c,e,tp) + return c:IsCode(70902743) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002518.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002518.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002518.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002518.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002518.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002519.lua b/script/c511002519.lua new file mode 100644 index 00000000..d47f2164 --- /dev/null +++ b/script/c511002519.lua @@ -0,0 +1,44 @@ +--星墜つる地に立つ閃珖 +function c511002519.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002519.condition) + e1:SetTarget(c511002519.target) + e1:SetOperation(c511002519.activate) + c:RegisterEffect(e1) +end +function c511002519.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()~=tp and at:IsOnField() and bit.band(at:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL + and Duel.GetAttackTarget()==nil +end +function c511002519.filter(c,e,tp) + if not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or not c:IsSetCard(0xa3) + or c:IsHasEffect(EFFECT_NECRO_VALLEY) then return false end + if c:IsLocation(LOCATION_HAND) then + return c:IsControler(tp) or c:IsPublic() + elseif c:IsLocation(LOCATION_REMOVED) then + return c:IsFaceup() + else + return true + end +end +function c511002519.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingMatchingCard(c511002519.filter,tp,0x73,0x32,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x73) +end +function c511002519.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.Draw(tp,1,REASON_EFFECT)~=0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002519.filter,tp,0x73,0x32,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002520.lua b/script/c511002520.lua new file mode 100644 index 00000000..873e3eeb --- /dev/null +++ b/script/c511002520.lua @@ -0,0 +1,47 @@ +--スターライト・ロード +function c511002520.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DISABLE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002520.condition) + e1:SetTarget(c511002520.target) + e1:SetOperation(c511002520.activate) + c:RegisterEffect(e1) +end +function c511002520.cfilter(c,p) + return c:GetControler()==p and c:IsOnField() +end +function c511002520.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainDisablable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(c511002520.cfilter,nil,tp)-tg:GetCount()>1 +end +function c511002520.filter(c,e,tp) + return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,false,false) +end +function c511002520.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002520.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002520.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=re:GetHandler() + if not tc:IsDisabled() then + Duel.NegateEffect(ev) + if tc:IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c511002520.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp):GetFirst() + if tc then + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + end + end + end +end diff --git a/script/c511002521.lua b/script/c511002521.lua new file mode 100644 index 00000000..4cf6ad4c --- /dev/null +++ b/script/c511002521.lua @@ -0,0 +1,165 @@ +--Relay Soul (Anime) +--By Edo9300 +--Cleaned Up and Fixed by MLD +function c511002521.initial_effect(c) + --Survive + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCode(511002521) + e1:SetCost(c511002521.cost) + e1:SetTarget(c511002521.target) + e1:SetOperation(c511002521.activate) + c:RegisterEffect(e1) + if not c511002521.global_check then + c511002521.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetCode(EFFECT_CANNOT_LOSE_LP) + ge1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + ge1:SetTargetRange(1,0) + ge1:SetLabel(0) + ge1:SetCondition(c511002521.con2) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetLabel(1) + Duel.RegisterEffect(ge2,1) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetOperation(c511002521.op) + Duel.RegisterEffect(ge3,0) + end +end +function c511002521.con2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(e:GetLabel(),511002521)>0 +end +function c511002521.op(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + if Duel.GetLP(0)<=0 and ph~=PHASE_DAMAGE then + Duel.RaiseEvent(Duel.GetMatchingGroup(nil,0,0xff,0,nil),511002521,e,0,0,0,0) + Duel.ResetFlagEffect(0,511002521) + end + if Duel.GetLP(1)<=0 and ph~=PHASE_DAMAGE then + Duel.RaiseEvent(Duel.GetMatchingGroup(nil,1,0xff,0,nil),511002521,e,0,0,0,0) + Duel.ResetFlagEffect(1,511002521) + end + if Duel.GetLP(0)>0 and Duel.GetFlagEffect(0,511002521)==0 then + Duel.RegisterFlagEffect(0,511002521,0,0,1) + end + if Duel.GetLP(1)>0 and Duel.GetFlagEffect(1,511002521)==0 then + Duel.RegisterFlagEffect(1,511002521,0,0,1) + end +end +function c511002521.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_CHAIN) + e1:SetCode(EFFECT_CANNOT_LOSE_LP) + Duel.RegisterEffect(e1,e:GetHandlerPlayer()) +end +function c511002521.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002521.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002521.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002521.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tp=e:GetHandlerPlayer() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002521.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetLabel(tp) + e1:SetCondition(c511002521.matcon) + e1:SetOperation(c511002521.matop) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_LOSE_DECK) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetLabel(1) + e2:SetLabelObject(tc) + e2:SetCondition(c511002521.con) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_LOSE_LP) + Duel.RegisterEffect(e3,tp) + local e4=e2:Clone() + e4:SetCode(EFFECT_CANNOT_LOSE_EFFECT) + tc:RegisterEffect(e4) + Duel.RegisterEffect(e4,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetLabel(1-tp) + e3:SetCondition(c511002521.losecon) + e3:SetOperation(c511002521.loseop) + e3:SetReset(RESET_EVENT+0xc020000) + tc:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c511002521.losecon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511002521.loseop(e,tp,eg,ep,ev,re,r,rp) + local WIN_REASON_RELAY_SOUL=0x1a + Duel.Win(e:GetLabel(),WIN_REASON_RELAY_SOUL) +end +function c511002521.con(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject() and e:GetLabelObject():IsLocation(LOCATION_ONFIELD) then + return true + end + if e:GetLabel()==0 then + e:SetLabelObject(nil) + return false + else + e:SetLabel(0) + end + return false +end +function c511002521.matcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_SYNCHRO or r==REASON_XYZ or r==REASON_FUSION +end +function c511002521.matop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tp=e:GetLabel() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetLabel(tp) + e1:SetCondition(c511002521.matcon) + e1:SetOperation(c511002521.matop) + rc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_LOSE_DECK) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetLabelObject(rc) + e2:SetLabel(1) + e2:SetCondition(c511002521.con) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_LOSE_LP) + Duel.RegisterEffect(e3,tp) + local e4=e2:Clone() + e4:SetCode(EFFECT_CANNOT_LOSE_EFFECT) + Duel.RegisterEffect(e4,tp) +end diff --git a/script/c511002522.lua b/script/c511002522.lua new file mode 100644 index 00000000..a4649965 --- /dev/null +++ b/script/c511002522.lua @@ -0,0 +1,30 @@ +--Strain Bomb +function c511002522.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetDescription(aux.Stringid(511001942,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c511002522.destg) + e1:SetOperation(c511002522.desop) + c:RegisterEffect(e1) +end +function c511002522.filter(c) + return (c:IsCode(511002522) or c:IsCode(511002160)) and c:IsFaceup() +end +function c511002522.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(c511002522.filter,tp,LOCATION_ONFIELD,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + if sg:GetCount()>0 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,2000) + end +end +function c511002522.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511002522.filter,tp,LOCATION_ONFIELD,0,nil) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + Duel.Damage(1-tp,2000,REASON_EFFECT) + end +end diff --git a/script/c511002523.lua b/script/c511002523.lua new file mode 100644 index 00000000..a43a64c9 --- /dev/null +++ b/script/c511002523.lua @@ -0,0 +1,47 @@ +--ヘル・テンペスト +function c511002523.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511002523.condition) + e1:SetTarget(c511002523.target) + e1:SetOperation(c511002523.activate) + c:RegisterEffect(e1) +end +function c511002523.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and ev>=4000 +end +function c511002523.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c511002523.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002523.filter,tp,LOCATION_DECK+LOCATION_GRAVE,LOCATION_DECK+LOCATION_GRAVE,1,nil) end + local sg=Duel.GetMatchingGroup(c511002523.filter,tp,LOCATION_DECK+LOCATION_GRAVE,LOCATION_DECK+LOCATION_GRAVE,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,sg,sg:GetCount(),0,0) +end +function c511002523.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511002523.filter,tp,LOCATION_DECK+LOCATION_GRAVE,LOCATION_DECK+LOCATION_GRAVE,nil) + if Duel.Remove(sg,POS_FACEUP,REASON_EFFECT)>0 then + local g=sg:Filter(Card.IsLocation,nil,LOCATION_REMOVED) + g:KeepAlive() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCode(EFFECT_FORBIDDEN) + e2:SetTargetRange(0x7f,0x7f) + e2:SetTarget(c511002523.bantg) + e2:SetLabelObject(g) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetCode(EFFECT_DISABLE) + e3:SetTargetRange(0x7f,0x7f) + e3:SetTarget(c511002523.bantg) + e3:SetLabelObject(g) + Duel.RegisterEffect(e3,tp) + end +end +function c511002523.bantg(e,c) + return (not c:IsOnField() or c:GetRealFieldID()>e:GetFieldID()) and e:GetLabelObject():IsContains(c) +end diff --git a/script/c511002524.lua b/script/c511002524.lua new file mode 100644 index 00000000..c5b5f143 --- /dev/null +++ b/script/c511002524.lua @@ -0,0 +1,127 @@ +--HSRマッハゴー・イータ +function c511002524.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --level + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetDescription(aux.Stringid(3606728,0)) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c511002524.lvtg) + e1:SetOperation(c511002524.lvop) + c:RegisterEffect(e1) + --gain effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(10032958,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511002524.effcost) + e2:SetTarget(c511002524.efftg) + e2:SetOperation(c511002524.effop) + c:RegisterEffect(e2) + if not c511002524.global_check then + c511002524.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511002524.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511002524.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511002524)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetLevel()) + e1:SetOperation(c511002524.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511002524,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511002524.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetLevel() then return end + local val=0 + if e:GetLabel()>c:GetLevel() then + val=e:GetLabel()-c:GetLevel() + else + val=c:GetLevel()-e:GetLabel() + end + Duel.RaiseSingleEvent(c,511002524,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetLevel()) +end +function c511002524.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511002524.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002524.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002524.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002524.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,567) + local lv=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12) + e:SetLabel(lv) +end +function c511002524.lvop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN) + tc:RegisterEffect(e1) + end +end +function c511002524.effcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511002524.efftg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end +end +function c511002524.effop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(511002524) + e1:SetCondition(c511002524.scon) + e1:SetOperation(c511002524.sop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511002524.scon(e,tp,eg,ep,ev,re,r,rp) + return ev>0 and re and re:GetHandler()~=e:GetHandler() +end +function c511002524.sop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002525.lua b/script/c511002525.lua new file mode 100644 index 00000000..c4da5884 --- /dev/null +++ b/script/c511002525.lua @@ -0,0 +1,38 @@ +--蛇神降臨 +function c511002525.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c511002525.condition) + e1:SetTarget(c511002525.target) + e1:SetOperation(c511002525.activate) + c:RegisterEffect(e1) +end +function c511002525.cfilter(c,tp) + return c:IsCode(72677437) and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) +end +function c511002525.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002525.cfilter,1,nil,tp) +end +function c511002525.filter(c,e,tp) + return c:IsCode(8062132) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511002525.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002525.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c511002525.activate(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,c511002525.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511002526.lua b/script/c511002526.lua new file mode 100644 index 00000000..007ee59c --- /dev/null +++ b/script/c511002526.lua @@ -0,0 +1,67 @@ +--幻奏の音女スコア +function c511002526.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetDescription(aux.Stringid(24040093,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511002526.cost) + e1:SetTarget(c511002526.tg) + e1:SetOperation(c511002526.op) + c:RegisterEffect(e1) +end +function c511002526.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002526.filter(c,e,tp,eg,ep,ev,re,r,rp) + local check=false + local te=c:GetActivateEffect() + if not te then return false end + local tg=te:GetTarget() + local op=te:GetOperation() + if (not tg and op) or tg(e,tp,eg,ep,ev,re,r,rp,0) then + check=true + end + return c:IsType(TYPE_SPELL) and c:IsAbleToRemove() and te:GetCode()==EVENT_FREE_CHAIN + and Duel.IsExistingTarget(c511002526.filter2,tp,LOCATION_GRAVE,0,1,c,c:GetCode(),check) +end +function c511002526.filter2(c,code,check,e,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local tg=te:GetTarget() + local op=te:GetOperation() + return c:IsCode(code) and c:IsType(TYPE_SPELL) and c:IsAbleToRemove() and (check or (not tg and op) or tg(e,tp,eg,ep,ev,re,r,rp,0)) +end +function c511002526.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511002526.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,eg,ep,ev,re,r,rp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local tc=Duel.SelectTarget(tp,c511002526.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,eg,ep,ev,re,r,rp):GetFirst() + local te=tc:GetActivateEffect() + if not te then return false end + local tg=te:GetTarget() + local op=te:GetOperation() + if (not tg and op) or tg(e,tp,eg,ep,ev,re,r,rp,0) then + check=true + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectTarget(tp,c511002526.filter2,tp,LOCATION_GRAVE,0,1,1,tc,tc:GetCode(),check,e,tp,eg,ep,ev,re,r,rp) + g2:AddCard(tc) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g2,2,0,0) +end +function c511002526.op(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=2 then return end + if Duel.Remove(tg,POS_FACEUP,REASON_EFFECT)>1 then + local tc=tg:GetFirst() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local op=te:GetOperation() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end +end diff --git a/script/c511002527.lua b/script/c511002527.lua new file mode 100644 index 00000000..b537bf5c --- /dev/null +++ b/script/c511002527.lua @@ -0,0 +1,83 @@ +--カオス・インフィニティ +function c511002527.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511002527.target) + e1:SetOperation(c511002527.activate) + c:RegisterEffect(e1) +end +function c511002527.spfilter(c,e,tp) + return c:IsSetCard(0x13) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002527.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c511002527.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) + and Duel.IsExistingMatchingCard(c511002527.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c511002527.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + Duel.ChangePosition(g,0,0,POS_FACEUP_ATTACK,POS_FACEDOWN_ATTACK) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g1=Duel.GetMatchingGroup(c511002527.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + local g2=Duel.GetMatchingGroup(c511002527.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + local tc=sg1:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(511002527,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=sg1:GetNext() + end + Duel.SpecialSummonComplete() + sg1:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c511002527.descon) + e1:SetOperation(c511002527.desop) + e1:SetLabelObject(sg1) + Duel.RegisterEffect(e1,tp) +end +function c511002527.desfilter(c,fid) + return c:GetFlagEffect(511002527)>0 +end +function c511002527.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511002527.desfilter,1,nil) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511002527.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=e:GetLabelObject() + local dg=sg:Filter(c511002527.desfilter,nil) + sg:DeleteGroup() + if dg:GetCount()>0 then + Duel.Destroy(dg,REASON_EFFECT) + end +end diff --git a/script/c511002528.lua b/script/c511002528.lua new file mode 100644 index 00000000..375b9206 --- /dev/null +++ b/script/c511002528.lua @@ -0,0 +1,43 @@ +--機皇兵スキエル・アイン +function c511002528.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002528.con) + e1:SetOperation(c511002528.op) + c:RegisterEffect(e1) +end +function c511002528.con(e,tp,eg,ep,ev,re,r,rp) + local e1=Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_DAMAGE) + local e2=Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) + local rd=e1 and not e2 + local rr=not e1 and e2 + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) and not rd and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_NO_EFFECT_DAMAGE) + and cv>=1000 then + return true + end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and rr and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_NO_EFFECT_DAMAGE) and cv>=1000 +end +function c511002528.op(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + 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(c511002528.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002528.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then e:SetLabel(val) return 0 + else return val end +end diff --git a/script/c511002529.lua b/script/c511002529.lua new file mode 100644 index 00000000..4920e2f2 --- /dev/null +++ b/script/c511002529.lua @@ -0,0 +1,37 @@ +--機皇兵グランエル・アイン +function c511002529.initial_effect(c) + --atk/def down + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2137678,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002529.target) + e1:SetOperation(c511002529.operation) + c:RegisterEffect(e1) +end +function c511002529.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511002529.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(76922029,0)) + local op=Duel.SelectOption(tp,aux.Stringid(2137678,0),aux.Stringid(511002529,2)) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + if op==0 then + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + else + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetValue(tc:GetDefense()/2) + end + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002530.lua b/script/c511002530.lua new file mode 100644 index 00000000..a74eb5ee --- /dev/null +++ b/script/c511002530.lua @@ -0,0 +1,26 @@ +--機皇兵ワイゼル・アイン +function c511002530.initial_effect(c) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_CONFIRM) + e1:SetCondition(c511002530.con) + e1:SetOperation(c511002530.op) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + c:RegisterEffect(e1) +end +function c511002530.con(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return Duel.GetAttacker():IsControler(tp) and at and at:IsControler(1-tp) and at:IsDefensePos() +end +function c511002530.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc and tc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002531.lua b/script/c511002531.lua new file mode 100644 index 00000000..32132be3 --- /dev/null +++ b/script/c511002531.lua @@ -0,0 +1,51 @@ +--浅すぎた墓穴 +function c511002531.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002531.target) + e1:SetOperation(c511002531.activate) + c:RegisterEffect(e1) +end +function c511002531.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002531.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then + return Duel.IsExistingTarget(c511002531.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002531.filter,1-tp,LOCATION_GRAVE,0,1,nil,e,1-tp) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE,1-tp)>0 + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectTarget(tp,c511002531.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local oc=nil + if Duel.SelectYesNo(1-tp,aux.Stringid(102380,0)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local og=Duel.SelectTarget(1-tp,c511002531.filter,1-tp,LOCATION_GRAVE,0,1,1,nil,e,1-tp) + oc=og:GetFirst() + end + local sc=sg:GetFirst() + if oc~=nil then + sg:AddCard(oc) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,sg,sg:GetCount(),PLAYER_ALL,sc:GetOwner()) + e:SetLabelObject(sc) +end +function c511002531.activate(e,tp,eg,ep,ev,re,r,rp) + local sc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local oc=g:GetFirst() + if oc and oc==sc then oc=g:GetNext() end + if sc and sc:IsRelateToEffect(e) then + Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + if oc and oc:IsRelateToEffect(e) then + Duel.SpecialSummonStep(oc,0,1-tp,1-tp,false,false,POS_FACEUP_DEFENSE) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002532.lua b/script/c511002532.lua new file mode 100644 index 00000000..bef71cdf --- /dev/null +++ b/script/c511002532.lua @@ -0,0 +1,61 @@ +--黒魔術のカーテン +function c511002532.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002532.cost) + e1:SetTarget(c511002532.target) + e1:SetOperation(c511002532.activate) + c:RegisterEffect(e1) +end +function c511002532.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) + local p=tp + if Duel.IsExistingMatchingCard(c511002532.filter,1-tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,1-tp) + and Duel.SelectYesNo(1-tp,aux.Stringid(102380,0)) then + Duel.PayLPCost(1-tp,math.floor(Duel.GetLP(1-tp)/2)) + p=tp+1 + end + e:SetLabel(p) +end +function c511002532.filter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002532.revfilter(c) + return not c:IsPublic() +end +function c511002532.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g1=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + local ct2=Duel.GetFieldGroupCount(tp,0,LOCATION_DECK) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002532.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and Duel.IsPlayerCanSpecialSummon(1-tp) + and (ct2>0 or g1:IsExists(c511002532.revfilter,1,nil) or g1:IsExists(c511002532.filter,1,nil,e,1-tp) ) end + local p=e:GetLabel() + if p~=tp then + p=PLAYER_ALL + end + Duel.SetTargetPlayer(p) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,p,LOCATION_HAND+LOCATION_DECK) +end +function c511002532.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002532.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummonStep(g:GetFirst(),0,tp,tp,false,false,POS_FACEUP) + end + end + if p==PLAYER_ALL and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(1-tp,c511002532.filter,1-tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,1-tp) + if g:GetCount()>0 then + Duel.SpecialSummonStep(g:GetFirst(),0,1-tp,1-tp,false,false,POS_FACEUP) + end + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002533.lua b/script/c511002533.lua new file mode 100644 index 00000000..21d4132e --- /dev/null +++ b/script/c511002533.lua @@ -0,0 +1,42 @@ +--E・HERO サンダー・ジャイアント +function c511002533.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,20721928,84327329,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(61204971,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCountLimit(1) + e2:SetTarget(c511002533.destg) + e2:SetOperation(c511002533.desop) + c:RegisterEffect(e2) +end +function c511002533.filter(c,atk) + return c:IsFaceup() and c:GetBaseAttack()0 +end +function c511002536.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002536.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002536.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002536.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002536.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(3) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002537.lua b/script/c511002537.lua new file mode 100644 index 00000000..62b112a9 --- /dev/null +++ b/script/c511002537.lua @@ -0,0 +1,29 @@ +--Overflowing Treasure +function c511002537.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002537.target) + e1:SetOperation(c511002537.activate) + c:RegisterEffect(e1) +end +function c511002537.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002537.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local atk=Duel.GetFieldGroupCount(tp,LOCATION_HAND,LOCATION_HAND)*500 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(atk) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002538.lua b/script/c511002538.lua new file mode 100644 index 00000000..46ce773e --- /dev/null +++ b/script/c511002538.lua @@ -0,0 +1,28 @@ +--Extra Blast +function c511002538.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511002538.condition) + e1:SetTarget(c511002538.target) + e1:SetOperation(c511002538.activate) + c:RegisterEffect(e1) +end +function c511002538.filter(c,tp) + return c:GetPreviousControler()==1-tp and bit.band(c:GetReason(),0x41)==0x41 + and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511002538.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002538.filter,1,nil,tp) +end +function c511002538.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511002538.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002539.lua b/script/c511002539.lua new file mode 100644 index 00000000..d02b8ab2 --- /dev/null +++ b/script/c511002539.lua @@ -0,0 +1,38 @@ +--亜空間物質転送装置 +function c511002539.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002539.target) + e1:SetOperation(c511002539.operation) + c:RegisterEffect(e1) +end +function c511002539.filter(c) + return c:IsFaceup() and c:IsAbleToRemove() +end +function c511002539.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511002539.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002539.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511002539.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511002539.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(tp) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetOperation(c511002539.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c511002539.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c511002540.lua b/script/c511002540.lua new file mode 100644 index 00000000..1ab57e6d --- /dev/null +++ b/script/c511002540.lua @@ -0,0 +1,32 @@ +--コストダウン +function c511002540.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002540.tg) + e1:SetOperation(c511002540.op) + c:RegisterEffect(e1) +end +function c511002540.filter(c) + return c:GetLevel()>2 +end +function c511002540.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002540.filter,tp,LOCATION_HAND,0,1,nil) end +end +function c511002540.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002540.filter,tp,LOCATION_HAND,0,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67196946,1)) + local sg=g:Select(tp,1,1,nil) + local tc=sg:GetFirst() + Duel.ConfirmCards(1-tp,sg) + if tc:IsLocation(LOCATION_HAND) then Duel.ShuffleHand(tp) end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002541.lua b/script/c511002541.lua new file mode 100644 index 00000000..e6ac4e8d --- /dev/null +++ b/script/c511002541.lua @@ -0,0 +1,41 @@ +--ヘル・ブラスト +function c511002541.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002541.condition) + e1:SetTarget(c511002541.target) + e1:SetOperation(c511002541.operation) + c:RegisterEffect(e1) +end +function c511002541.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) + and c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) +end +function c511002541.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002541.cfilter,1,nil,tp) +end +function c511002541.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511002541.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002541.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002541.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511002541.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002541.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.Destroy(tc,REASON_EFFECT)>0 then + local atk=tc:GetAttack()/2 + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c511002542.lua b/script/c511002542.lua new file mode 100644 index 00000000..20d7c9db --- /dev/null +++ b/script/c511002542.lua @@ -0,0 +1,44 @@ +--ヘル・アライアンス +function c511002542.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(c511002542.target) + e1:SetOperation(c511002542.operation) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511002542.value) + c:RegisterEffect(e2) + --Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c511002542.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 c511002542.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002542.filter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511002542.value(e,c) + return Duel.GetMatchingGroupCount(c511002542.filter,0,LOCATION_MZONE,LOCATION_MZONE,nil,c:GetCode())*800 +end diff --git a/script/c511002543.lua b/script/c511002543.lua new file mode 100644 index 00000000..8497d5fe --- /dev/null +++ b/script/c511002543.lua @@ -0,0 +1,65 @@ +--零鳥獣シルフィーネ +function c511002543.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86848580,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511002543.discost) + e1:SetTarget(c511002543.distg) + e1:SetOperation(c511002543.disop) + c:RegisterEffect(e1) +end +function c511002543.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002543.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511002543.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + local tc=g:GetFirst() + if not tc then return end + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,2) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,2) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end + Duel.BreakEffect() + local atk=g:FilterCount(Card.IsDisabled,nil)*300 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local sg=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tg=sg:GetFirst() + if tg then + Duel.HintSelection(sg) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetValue(-atk) + tg:RegisterEffect(e4) + end +end diff --git a/script/c511002544.lua b/script/c511002544.lua new file mode 100644 index 00000000..834a9a30 --- /dev/null +++ b/script/c511002544.lua @@ -0,0 +1,32 @@ +--ブリザード・サンダーバード +function c511002544.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(90019393,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002544.cost) + e1:SetTarget(c511002544.target) + e1:SetOperation(c511002544.operation) + c:RegisterEffect(e1) +end +function c511002544.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511002544.filter(c,e,tp) + return c:IsRace(RACE_WINDBEAST) and not c:IsCode(50920465) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002544.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002544.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511002544.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,c511002544.filter,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 diff --git a/script/c511002545.lua b/script/c511002545.lua new file mode 100644 index 00000000..357d40ed --- /dev/null +++ b/script/c511002545.lua @@ -0,0 +1,29 @@ +--オーロラ・ウィング +function c511002545.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70089580,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,70089580) + e1:SetCondition(c511002545.condition) + e1:SetTarget(c511002545.target) + e1:SetOperation(c511002545.operation) + c:RegisterEffect(e1) +end +function c511002545.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511002545.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002545.operation(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_DEFENSE) + end +end diff --git a/script/c511002546.lua b/script/c511002546.lua new file mode 100644 index 00000000..c2782275 --- /dev/null +++ b/script/c511002546.lua @@ -0,0 +1,75 @@ +--ブリザード・ファルコン +function c511002546.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(51102546) + e1:SetTarget(c511002546.damtg) + e1:SetOperation(c511002546.damop) + c:RegisterEffect(e1) + if not c511002546.global_check then + c511002546.global_check=true + --register + local ge=Effect.CreateEffect(c) + ge:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge:SetCode(EVENT_ADJUST) + ge:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge:SetOperation(c511002546.regop) + Duel.RegisterEffect(ge,0) + end +end +function c511002546.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511002546)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511002546.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511002546,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511002546.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + if e:GetLabel()c:GetBaseAttack() then + Duel.RaiseSingleEvent(c,51102546,re,REASON_EFFECT,rp,tp,val) + end + end + e:SetLabel(c:GetAttack()) +end +function c511002546.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local atk=0 + if c:GetBaseAttack()>=c:GetAttack() then + atk=c:GetBaseAttack()-c:GetAttack() + else + atk=c:GetAttack()-c:GetBaseAttack() + end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c511002546.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local atk=0 + if c:GetBaseAttack()>=c:GetAttack() then + atk=c:GetBaseAttack()-c:GetAttack() + else + atk=c:GetAttack()-c:GetBaseAttack() + end + Duel.Damage(p,atk,REASON_EFFECT) +end diff --git a/script/c511002547.lua b/script/c511002547.lua new file mode 100644 index 00000000..bf6ed314 --- /dev/null +++ b/script/c511002547.lua @@ -0,0 +1,41 @@ +--ガード・ペンギン +function c511002547.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(aux.damcon1) + e1:SetTarget(c511002547.tg) + e1:SetOperation(c511002547.op) + c:RegisterEffect(e1) +end +function c511002547.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002547.op(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + local c=e:GetHandler() + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e1=Effect.CreateEffect(c) + 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(c511002547.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end +function c511002547.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then e:SetLabel(val) return 0 + else return val end +end diff --git a/script/c511002548.lua b/script/c511002548.lua new file mode 100644 index 00000000..e5aaa014 --- /dev/null +++ b/script/c511002548.lua @@ -0,0 +1,46 @@ +--Sneak Exploder +function c511002548.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002548.condition) + e1:SetTarget(c511002548.target) + c:RegisterEffect(e1) + --destroy&damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(26302522,1)) + e2:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002548.descon) + e2:SetTarget(c511002548.destg) + e2:SetOperation(c511002548.desop) + c:RegisterEffect(e2) +end +function c511002548.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)==0 +end +function c511002548.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():RegisterFlagEffect(511002548,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,0,1) +end +function c511002548.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and e:GetHandler():GetFlagEffect(511002548)>0 +end +function c511002548.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*500) +end +function c511002548.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + if Duel.SendtoGrave(c,REASON_EFFECT)>0 then + Duel.Damage(1-tp,ct*500,REASON_EFFECT) + end +end diff --git a/script/c511002549.lua b/script/c511002549.lua new file mode 100644 index 00000000..6072da31 --- /dev/null +++ b/script/c511002549.lua @@ -0,0 +1,28 @@ +--洗脳-ブレインコントロール +function c511002549.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002549.target) + e1:SetOperation(c511002549.activate) + c:RegisterEffect(e1) +end +function c511002549.filter(c) + return c:IsControlerCanBeChanged() and c:IsFaceup() +end +function c511002549.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002549.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002549.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511002549.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511002549.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c511002550.lua b/script/c511002550.lua new file mode 100644 index 00000000..c1029ab3 --- /dev/null +++ b/script/c511002550.lua @@ -0,0 +1,34 @@ +--Revival Knight +function c511002550.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_END_PHASE) + e1:SetCondition(c511002550.condition) + e1:SetTarget(c511002550.target) + e1:SetOperation(c511002550.activate) + c:RegisterEffect(e1) +end +function c511002550.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END +end +function c511002550.filter(c,tid,e,tp) + return c:IsReason(REASON_DESTROY) and (c:IsCode(511000008) or c:IsCode(511000957)) and c:GetTurnID()==tid + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetPreviousControler()==tp +end +function c511002550.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c511002550.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,LOCATION_GRAVE+LOCATION_REMOVED,nil,Duel.GetTurnCount(),e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()==1 end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002550.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002550.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,LOCATION_GRAVE+LOCATION_REMOVED,nil,Duel.GetTurnCount(),e,tp) + local tc=g:GetFirst() + if g:GetCount()~=1 or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511002551.lua b/script/c511002551.lua new file mode 100644 index 00000000..06107796 --- /dev/null +++ b/script/c511002551.lua @@ -0,0 +1,80 @@ +--Synchro Striker Unit +function c511002551.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002551.condition) + e1:SetTarget(c511002551.target) + e1:SetOperation(c511002551.operation) + c:RegisterEffect(e1) +end +function c511002551.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002551.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511002551.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511002551.filter(chkc) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c511002551.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511002551.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002551.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atk/def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1000) + 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(c511002551.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --lose atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetCondition(c511002551.atkcon) + e3:SetOperation(c511002551.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511002551.eqlimit(e,c) + return c:IsType(TYPE_SYNCHRO) +end +function c511002551.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002551.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetEquipTarget() + if c:IsRelateToEffect(e) and ec and ec:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002552.lua b/script/c511002552.lua new file mode 100644 index 00000000..504e5326 --- /dev/null +++ b/script/c511002552.lua @@ -0,0 +1,97 @@ +--捨て身の宝札 +function c511002552.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002552.condition) + e1:SetCost(c511002552.cost) + e1:SetTarget(c511002552.target) + e1:SetOperation(c511002552.activate) + c:RegisterEffect(e1) + if not c511002552.global_check then + c511002552.global_check=true + c511002552[0]=true + c511002552[1]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHANGE_POS) + ge1:SetOperation(c511002552.poscheck) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002552.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002552.poscheck(e,tp,eg,ep,ev,re,r,rp) + if re==nil then + c511002552[rp]=false + end +end +function c511002552.clear(e,tp,eg,ep,ev,re,r,rp) + c511002552[0]=true + c511002552[1]=true +end +function c511002552.check(tp) + local at1=0 + local ct=0 + for i=0,4 do + local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + if tc and tc:IsPosition(POS_FACEUP_ATTACK) then + at1=at1+tc:GetAttack() + ct=ct+1 + end + end + local at2=-1 + for i=0,4 do + local tc=Duel.GetFieldCard(1-tp,LOCATION_MZONE,i) + if tc and tc:IsFaceup() then + local atk=tc:GetAttack() + if at2<0 or atk0 +end +function c511002552.condition(e,tp,eg,ep,ev,re,r,rp) + return c511002552.check(tp) +end +function c511002552.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_FLIPSUMMON)==0 + and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 and c511002552[tp] end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + Duel.RegisterEffect(e3,tp) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_OATH) + e4:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e4:SetReset(RESET_PHASE+PHASE_END) + e4:SetTargetRange(LOCATION_MZONE,0) + Duel.RegisterEffect(e4,tp) +end +function c511002552.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511002552.activate(e,tp,eg,ep,ev,re,r,rp) + if not c511002552.check(tp) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002553.lua b/script/c511002553.lua new file mode 100644 index 00000000..3a3397d2 --- /dev/null +++ b/script/c511002553.lua @@ -0,0 +1,76 @@ +--Reaction Summon +function c511002553.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511001265) + e1:SetCondition(c511002553.condition) + e1:SetTarget(c511002553.target) + e1:SetOperation(c511002553.activate) + c:RegisterEffect(e1) + if not c511002553.global_check then + c511002553.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511002553.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511002553.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511002553.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511002553.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511002553.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(1-tp) and ev>0 +end +function c511002553.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002553.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002553.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002553.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002553.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002553.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002554.lua b/script/c511002554.lua new file mode 100644 index 00000000..2667873b --- /dev/null +++ b/script/c511002554.lua @@ -0,0 +1,59 @@ +--Echo Mirror +function c511002554.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002554.condition) + e1:SetTarget(c511002554.target) + e1:SetOperation(c511002554.activate) + c:RegisterEffect(e1) + if not c511002554.global_check then + c511002554.global_check=true + c511002554[0]=true + c511002554[1]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE_STEP_END) + ge1:SetOperation(c511002554.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002554.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002554.checkop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) and at:IsDefensePos() then + c511002554[at:GetControler()]=true + end +end +function c511002554.clear(e,tp,eg,ep,ev,re,r,rp) + c511002554[0]=false + c511002554[1]=false +end +function c511002554.condition(e,tp,eg,ep,ev,re,r,rp) + return c511002554[tp] +end +function c511002554.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002554.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local g=Duel.GetDecktopGroup(p,1) + local tc=g:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + Duel.ConfirmCards(1-p,tc) + if tc and tc:IsType(TYPE_MONSTER) then + Duel.Damage(1-tp,tc:GetLevel()*300,REASON_EFFECT) + end + Duel.ShuffleHand(p) +end diff --git a/script/c511002555.lua b/script/c511002555.lua new file mode 100644 index 00000000..03873625 --- /dev/null +++ b/script/c511002555.lua @@ -0,0 +1,32 @@ +--Erosion Hand Forest +function c511002555.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --to deck + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002555.damcon) + e2:SetTarget(c511002555.damtg) + e2:SetOperation(c511002555.damop) + c:RegisterEffect(e2) +end +function c511002555.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002555.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,1000) +end +function c511002555.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Damage(tp,1000,REASON_EFFECT,true) + Duel.Damage(1-tp,1000,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511002556.lua b/script/c511002556.lua new file mode 100644 index 00000000..98c7a631 --- /dev/null +++ b/script/c511002556.lua @@ -0,0 +1,25 @@ +--Damaging Hand +function c511002556.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_DRAW) + e1:SetCondition(c511002556.condition) + e1:SetTarget(c511002556.target) + e1:SetOperation(c511002556.activate) + c:RegisterEffect(e1) +end +function c511002556.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(ep,LOCATION_MZONE,0)==0 +end +function c511002556.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)*300) +end +function c511002556.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,Duel.GetFieldGroupCount(p,LOCATION_HAND,0)*300,REASON_EFFECT) +end diff --git a/script/c511002557.lua b/script/c511002557.lua new file mode 100644 index 00000000..66058e12 --- /dev/null +++ b/script/c511002557.lua @@ -0,0 +1,48 @@ +--Hand Power +function c511002557.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(c511002557.condition) + e1:SetCost(c511002557.cost) + e1:SetTarget(c511002557.target) + e1:SetOperation(c511002557.activate) + c:RegisterEffect(e1) +end +function c511002557.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +c511002557.collection={ + [28003512]=true;[52800428]=true;[62793020]=true;[68535320]=true;[95929069]=true; + [22530212]=true;[21414674]=true;[63746411]=true;[55888045]=true; +} +function c511002557.cfilter(c) + return c511002557.collection[c:GetCode()] and c:IsAbleToRemoveAsCost() +end +function c511002557.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002557.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002557.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002557.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002557.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002558.lua b/script/c511002558.lua new file mode 100644 index 00000000..e7cf3043 --- /dev/null +++ b/script/c511002558.lua @@ -0,0 +1,39 @@ +--Hand Vice +function c511002558.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002558.condition) + e1:SetTarget(c511002558.target) + e1:SetOperation(c511002558.activate) + c:RegisterEffect(e1) +end +c511002558.collection={ + [28003512]=true;[52800428]=true;[62793020]=true;[68535320]=true;[95929069]=true; + [22530212]=true;[21414674]=true;[63746411]=true;[55888045]=true; +} +function c511002558.cfilter(c) + return c:IsFaceup() and c511002558.collection[c:GetCode()] +end +function c511002558.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.IsExistingMatchingCard(c511002558.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002558.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + local dam=tg:GetAttack() + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002558.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if Duel.NegateAttack() then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end + end +end diff --git a/script/c511002559.lua b/script/c511002559.lua new file mode 100644 index 00000000..8a808629 --- /dev/null +++ b/script/c511002559.lua @@ -0,0 +1,25 @@ +--Double Tension +function c511002559.initial_effect(c) + --damage cal + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002559.condition) + e1:SetOperation(c511002559.activate) + c:RegisterEffect(e1) +end +function c511002559.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + return tc:IsControler(tp) and tc:GetAttackedCount()==2 +end +function c511002559.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if a and a:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(a:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + a:RegisterEffect(e1) + end +end diff --git a/script/c511002560.lua b/script/c511002560.lua new file mode 100644 index 00000000..969e2f6f --- /dev/null +++ b/script/c511002560.lua @@ -0,0 +1,27 @@ +--Fake Form +function c511002560.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_CHANGE_POS) + e1:SetCondition(c511002560.condition) + e1:SetTarget(c511002560.target) + e1:SetOperation(c511002560.activate) + c:RegisterEffect(e1) +end +function c511002560.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsType,1,nil,TYPE_MONSTER) and re +end +function c511002560.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=eg:FilterCount(Card.IsType,nil,TYPE_MONSTER)*400 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002560.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002561.lua b/script/c511002561.lua new file mode 100644 index 00000000..7ac1b26e --- /dev/null +++ b/script/c511002561.lua @@ -0,0 +1,34 @@ +--Djinn Cycle +--NOTE: Edit out, remove comments when Trigger is already handled by YGoPro Percy +function c511002561.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + --e1:SetCategory(CATEGORY_DAMAGE) + --e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + --e1:SetDescription(aux.Stringid(11287364,0)) + --e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + --Trigger not allowed on Xyz Material + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c511002561.damcon) + --e1:SetTarget(c511002561.damtg) + e1:SetOperation(c511002561.damop) + c:RegisterEffect(e1) +end +function c511002561.damcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c511002561.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c511002561.damop(e,tp,eg,ep,ev,re,r,rp) + --local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + --Duel.Damage(p,d,REASON_EFFECT) + --replacement for Trigger + local rc=e:GetHandler():GetReasonCard() + Duel.Hint(HINT_CARD,0,511002561) + Duel.Damage(1-rc:GetControler(),400,REASON_EFFECT) +end diff --git a/script/c511002562.lua b/script/c511002562.lua new file mode 100644 index 00000000..d275a64f --- /dev/null +++ b/script/c511002562.lua @@ -0,0 +1,51 @@ +--Reserve Cyclone +function c511002562.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_DELAYED_QUICKEFFECT) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_RELEASE) + e1:SetCondition(c511002562.condition) + e1:SetTarget(c511002562.target) + e1:SetOperation(c511002562.activate) + c:RegisterEffect(e1) + if not c511002562.global_check then + c511002562.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CONTROL_CHANGED) + ge1:SetOperation(c511002562.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002562.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + tc:RegisterFlagEffect(511002562,RESET_EVENT+0x3100000,0,0) + tc=eg:GetNext() + end +end +function c511002562.cfilter(c) + return c:GetFlagEffect(511002562)>0 +end +function c511002562.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002562.cfilter,1,nil) +end +function c511002562.filter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511002562.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511002562.filter(chkc) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(c511002562.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511002562.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002562.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002563.lua b/script/c511002563.lua new file mode 100644 index 00000000..5cbe4f1c --- /dev/null +++ b/script/c511002563.lua @@ -0,0 +1,34 @@ +--Vector Change +function c511002563.initial_effect(c) + --active + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002563.condition) + e1:SetTarget(c511002563.target) + e1:SetOperation(c511002563.activate) + c:RegisterEffect(e1) +end +function c511002563.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002563.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local a=Duel.GetAttacker() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDefensePos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) + and a:IsAttackPos() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + g:AddCard(a) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,2,0,0) +end +function c511002563.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local tc=Duel.GetFirstTarget() + if a and a:IsRelateToBattle() and a:IsAttackPos() and tc and tc:IsRelateToEffect(e) and not tc:IsAttackPos() then + Duel.ChangePosition(a,POS_FACEUP_DEFENSE) + Duel.ChangePosition(tc,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) + end +end diff --git a/script/c511002564.lua b/script/c511002564.lua new file mode 100644 index 00000000..6f1c59fd --- /dev/null +++ b/script/c511002564.lua @@ -0,0 +1,25 @@ +--Flip Flap +function c511002564.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002564.target) + e1:SetOperation(c511002564.activate) + c:RegisterEffect(e1) +end +function c511002564.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAttackPos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPATTACK) + local g=Duel.SelectTarget(tp,Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511002564.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511002565.lua b/script/c511002565.lua new file mode 100644 index 00000000..8652eefc --- /dev/null +++ b/script/c511002565.lua @@ -0,0 +1,87 @@ +--Disaster Conspiracy +function c511002565.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511002565) + e1:SetCondition(c511002565.condition) + e1:SetTarget(c511002565.target) + e1:SetOperation(c511002565.activate) + c:RegisterEffect(e1) + if not c511002565.global_check then + c511002565.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_AVAILABLE_BD) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c511002565.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002565.checkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if ev<1000 then return end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return end + if ep==PLAYER_ALL then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetOperation(c511002565.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetOperation(c511002565.damop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,1-tp) + end + if a:IsControler(ep) then + a,d=d,a + end + if d:IsControler(1-ep) or d:GetOwner()==ep then return end + if a:IsControler(1-ep) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetOperation(c511002565.damop) + e1:SetLabelObject(d) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,ep) + end +end +function c511002565.damop(e,tp,eg,ep,ev,re,r,rp) + local d=e:GetLabelObject() + if not d:IsLocation(LOCATION_MZONE) then + Duel.RaiseEvent(d,511002565,e,REASON_BATTLE,1-tp,tp,ev) + end +end +function c511002565.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(1-tp) +end +function c511002565.filter(c,atk) + return c:GetAttack()>atk and c:IsAbleToGrave() +end +function c511002565.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=eg:GetFirst() + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,0,LOCATION_DECK,1,nil) end + local sg=Duel.GetMatchingGroup(c511002565.filter,tp,0,LOCATION_DECK,nil,ec:GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,sg,sg:GetCount(),0,0) +end +function c511002565.activate(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local sg=Duel.GetMatchingGroup(c511002565.filter,tp,0,LOCATION_DECK,nil,ec:GetAttack()) + if sg:GetCount()>0 then + Duel.SendtoGrave(sg,REASON_EFFECT) + elseif Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,0,LOCATION_DECK,1,nil) then + local cg=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + Duel.ConfirmCards(1-tp,cg) + Duel.ConfirmCards(tp,cg) + Duel.ShuffleDeck(1-tp) + end +end diff --git a/script/c511002566.lua b/script/c511002566.lua new file mode 100644 index 00000000..df83b80a --- /dev/null +++ b/script/c511002566.lua @@ -0,0 +1,63 @@ +--Heraldry Protection +function c511002566.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511002566.condition) + e1:SetTarget(c511002566.target) + e1:SetOperation(c511002566.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511002566.descon) + e2:SetOperation(c511002566.desop) + c:RegisterEffect(e2) +end +function c511002566.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002566.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511002566.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() 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:SetValue(-800) + e1:SetCondition(c511002566.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + tc:RegisterEffect(e2,true) + end +end +function c511002566.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511002566.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511002566.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(), REASON_EFFECT) +end diff --git a/script/c511002567.lua b/script/c511002567.lua new file mode 100644 index 00000000..e790eadc --- /dev/null +++ b/script/c511002567.lua @@ -0,0 +1,47 @@ +--Direct Magnet +function c511002567.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511002567.condition) + e1:SetCost(c511002567.cost) + e1:SetTarget(c511002567.target) + e1:SetOperation(c511002567.activate) + c:RegisterEffect(e1) +end +function c511002567.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002567.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetLP(tp,math.floor(Duel.GetLP(tp)/2),REASON_EFFECT) +end +function c511002567.filter(c) + return c:IsFaceup() and c:IsCode(100000570) +end +function c511002567.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002567.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002567.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002567.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002567.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002568.lua b/script/c511002568.lua new file mode 100644 index 00000000..5bbd7bbd --- /dev/null +++ b/script/c511002568.lua @@ -0,0 +1,57 @@ +--Foreman's Fury +function c511002568.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + 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(c511002568.condition) + e1:SetTarget(c511002568.target) + e1:SetOperation(c511002568.activate) + c:RegisterEffect(e1) +end +function c511002568.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002568.filter(c) + return c:IsRace(RACE_MACHINE) and c:IsFaceup() +end +function c511002568.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002568.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002568.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002568.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) +end +function c511002568.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local bt=e:GetHandler():GetBattleTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_START) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetOperation(c511002568.atkop) + tc:RegisterEffect(e1) + if bt then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-1000) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + end +end +function c511002568.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc then + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002569.lua b/script/c511002569.lua new file mode 100644 index 00000000..67cbaa87 --- /dev/null +++ b/script/c511002569.lua @@ -0,0 +1,46 @@ +--Upgrade +function c511002569.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002569.cost) + e1:SetTarget(c511002569.target) + e1:SetOperation(c511002569.activate) + c:RegisterEffect(e1) +end +function c511002569.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsType,1,nil,TYPE_XYZ) end + local g=Duel.SelectReleaseGroup(tp,Card.IsType,1,1,nil,TYPE_XYZ) + Duel.Release(g,REASON_COST) +end +function c511002569.filter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002569.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511002569.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002569.activate(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,c511002569.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002570.lua b/script/c511002570.lua new file mode 100644 index 00000000..defe3b51 --- /dev/null +++ b/script/c511002570.lua @@ -0,0 +1,38 @@ +--Dance of the Guardian +function c511002570.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002570.condition) + e1:SetTarget(c511002570.target) + e1:SetOperation(c511002570.activate) + c:RegisterEffect(e1) +end +function c511002570.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002570.revfilter(c) + return not c:IsPublic() +end +function c511002570.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + if chk==0 then return (g:IsExists(c511002570.revfilter,1,nil) or g:IsExists(Card.IsType,1,nil,TYPE_MONSTER)) + and Duel.IsPlayerCanDraw(tp,1) end +end +function c511002570.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + local tc=g:RandomSelect(tp,1):GetFirst() + if tc then + Duel.ConfirmCards(1-tp,tc) + if tc:IsType(TYPE_MONSTER) then + if Duel.NegateAttack() and Duel.SendtoGrave(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end + else + Duel.ShuffleHand(1-tp) + end + end +end diff --git a/script/c511002571.lua b/script/c511002571.lua new file mode 100644 index 00000000..8aa23aca --- /dev/null +++ b/script/c511002571.lua @@ -0,0 +1,66 @@ +--Tachyon Unit +function c511002571.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c511002571.cost) + e1:SetTarget(c511002571.target) + e1:SetOperation(c511002571.activate) + c:RegisterEffect(e1) +end +function c511002571.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 c511002571.filter(c,tp,eg,ep,ev,re,r,rp) + if not c:IsCode(88177324) and not c:IsCode(68396121) then return false end + if c:IsFacedown() then return false end + local e=Effect.CreateEffect(c) + e:SetType(EFFECT_TYPE_SINGLE) + e:SetCode(511002571) + c:RegisterEffect(e) + local cost=c.negcost + local tg=c.negtg + return cost and (not tg or tg(e,tp,eg,ep,ev,re,r,rp,0)) and c.negop +end +function c511002571.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002571.filter(chkc,tp,eg,ep,ev,re,r,rp) end + if chk==0 then return Duel.IsExistingTarget(c511002571.filter,tp,LOCATION_MZONE,0,1,nil,tp,eg,ep,ev,re,r,rp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + Duel.SelectTarget(tp,c511002571.filter,tp,LOCATION_MZONE,0,1,1,nil,tp,eg,ep,ev,re,r,rp) +end +function c511002571.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local te=Effect.CreateEffect(tc) + te:SetType(EFFECT_TYPE_SINGLE) + te:SetCode(511002571) + tc:RegisterEffect(te) + local tg=tc.negtg + local op=tc.negop + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + tc:CreateEffectRelation(te) + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511002572.lua b/script/c511002572.lua new file mode 100644 index 00000000..990d00d9 --- /dev/null +++ b/script/c511002572.lua @@ -0,0 +1,72 @@ +--Dragonic Divine +function c511002572.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002572.condition) + e1:SetCost(c511002572.cost) + e1:SetTarget(c511002572.target) + e1:SetOperation(c511002572.activate) + c:RegisterEffect(e1) + if not c511002572.global_check then + c511002572.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHAIN_SOLVED) + ge1:SetOperation(c511002572.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002572.checkop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if re:IsHasType(EFFECT_TYPE_ACTIVATE) and rc:IsType(TYPE_SPELL) then + rc:RegisterFlagEffect(511002572,RESET_PHASE+PHASE_END,0,0) + end +end +function c511002572.cfilter(c) + return c:IsFaceup() and c:IsLevelAbove(8) and c:IsRace(RACE_DRAGON) +end +function c511002572.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002572.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002572.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 c511002572.filter(c) + return c:IsType(TYPE_SPELL) and c:GetFlagEffect(511002572)>0 +end +function c511002572.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)-1 + local tc=Duel.GetFieldCard(tp,LOCATION_GRAVE,ct) + local check=false + while tc and not check do + ct=ct-1 + if c511002572.filter(tc) then + check=true + else + tc=Duel.GetFieldCard(tp,LOCATION_GRAVE,ct) + end + end + if chk==0 then return tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) and tc:IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tc,1,0,0) +end +function c511002572.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)-1 + local tc=Duel.GetFieldCard(tp,LOCATION_GRAVE,ct) + local check=false + while tc and not check do + ct=ct-1 + if c511002572.filter(tc) then + check=true + else + tc=Duel.GetFieldCard(tp,LOCATION_GRAVE,ct) + end + end + if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) and tc:IsAbleToHand() then + Duel.HintSelection(Group.FromCards(tc)) + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511002573.lua b/script/c511002573.lua new file mode 100644 index 00000000..30f2ecca --- /dev/null +++ b/script/c511002573.lua @@ -0,0 +1,43 @@ +--Wave Rebound +function c511002573.initial_effect(c) + --Activate(effect) + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_NEGATE+CATEGORY_DAMAGE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_ACTIVATE) + e4:SetCode(EVENT_CHAINING) + e4:SetCondition(c511002573.condition) + e4:SetTarget(c511002573.target) + e4:SetOperation(c511002573.activate) + c:RegisterEffect(e4) +end +function c511002573.cfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsLocation(LOCATION_GRAVE) +end +function c511002573.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_SPECIAL_SUMMON) + if ex and tg~=nil and tc+tg:FilterCount(c511002573.cfilter,nil)-tg:GetCount()>0 then + local g=tg:Filter(c511002573.cfilter,nil) + g:KeepAlive() + e:SetLabelObject(g) + return true + end + return false +end +function c511002573.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject() + if chk==0 then return g and g:GetCount()>0 end + Duel.SetTargetCard(g) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetSum(Card.GetAttack)) +end +function c511002573.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:GetCount()>0 then + Duel.Damage(p,tg:GetSum(Card.GetAttack),REASON_EFFECT) + end +end diff --git a/script/c511002574.lua b/script/c511002574.lua new file mode 100644 index 00000000..73ba1e2b --- /dev/null +++ b/script/c511002574.lua @@ -0,0 +1,27 @@ +--自由解放 +function c511002574.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511002574.condition) + e1:SetTarget(c511002574.target) + e1:SetOperation(c511002574.activate) + c:RegisterEffect(e1) +end +function c511002574.cfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp +end +function c511002574.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002574.cfilter,1,nil,tp) +end +function c511002574.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local tg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tg,tg:GetCount(),0,0) +end +function c511002574.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c511002575.lua b/script/c511002575.lua new file mode 100644 index 00000000..fea5b847 --- /dev/null +++ b/script/c511002575.lua @@ -0,0 +1,66 @@ +--Explosive Wall +function c511002575.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002575.condition) + e1:SetTarget(c511002575.target) + e1:SetOperation(c511002575.activate) + c:RegisterEffect(e1) + --Activate (graveyard) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c511002575.condition) + e2:SetCost(c511002575.rmcost) + e2:SetTarget(c511002575.rmtg) + e2:SetOperation(c511002575.rmop) + c:RegisterEffect(e2) +end +function c511002575.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002575.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() + and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,2,0,0) +end +function c511002575.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc and tc:IsRelateToBattle() and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_MZONE,0,1,1,nil) + g:AddCard(tc) + if g:GetCount()>1 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end + end +end +function c511002575.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002575.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsAbleToRemove() + and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.SetTargetCard(tg) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,0,e:GetHandler()) + g:AddCard(tg) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511002575.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc and tc:IsRelateToBattle() and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,0,e:GetHandler()) + g:AddCard(tc) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c511002576.lua b/script/c511002576.lua new file mode 100644 index 00000000..1e94a2ac --- /dev/null +++ b/script/c511002576.lua @@ -0,0 +1,46 @@ +--Dark Computer Virus +function c511002576.initial_effect(c) + --effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002576.cost) + e1:SetTarget(c511002576.target) + e1:SetOperation(c511002576.activate) + c:RegisterEffect(e1) +end +function c511002576.costfilter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_MACHINE) +end +function c511002576.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511002576.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511002576.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511002576.tcfilter(tc,ec,tp,eg,ep,ev,re,r,rp) + local te=ec:GetActivateEffect() + if te then + local tg=te:GetTarget() + return tg and tg(te,tp,eg,ep,ev,re,r,rp,0,tc) + end + return false +end +function c511002576.ecfilter(c,tp,eg,ep,ev,re,r,rp) + return c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:GetCardTargetCount()==1 + and Duel.IsExistingMatchingCard(c511002576.tcfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,c:GetFirstCardTarget(),c,tp,eg,ep,ev,re,r,rp) +end +function c511002576.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002576.ecfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil,tp,eg,ep,ev,re,r,rp) end +end +function c511002576.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(43641473,0)) + local g=Duel.SelectMatchingCard(tp,c511002576.ecfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil,tp,eg,ep,ev,re,r,rp) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local tg=Duel.SelectMatchingCard(tp,c511002576.tcfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,tc:GetFirstCardTarget(),tc,tp, + eg,ep,ev,re,r,rp):GetFirst() + tc:CancelCardTarget(tc:GetFirstCardTarget()) + tc:SetCardTarget(tg) + end +end diff --git a/script/c511002577.lua b/script/c511002577.lua new file mode 100644 index 00000000..1c1cb14c --- /dev/null +++ b/script/c511002577.lua @@ -0,0 +1,92 @@ +--Element Fusion +function c511002577.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c511002577.target) + e1:SetOperation(c511002577.activate) + c:RegisterEffect(e1) + if not c511002577.global_check then + c511002577.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_TO_DECK) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511002577.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002577.filter0(c,tp) + return (c:IsControler(tp) or c:IsFaceup()) and c:IsCode(74711057) and c:IsCanBeFusionMaterial() +end +function c511002577.filter1(c,e,tp) + return (c:IsControler(tp) or c:IsFaceup()) and c:IsCode(74711057) and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002577.filter2(c) + return c:IsSetCard(0x3008) and c:IsFaceup() and c:IsCanBeFusionMaterial() +end +function c511002577.filter3(c,e) + return c:IsSetCard(0x3008) and c:IsFaceup() and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002577.fusfilter(c,e,tp,m1,m2,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) and (c:IsCode(95486586) or c:IsCode(46759931)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and m1:IsExists(c511002577.filterx,1,nil,m2,chkf,c) + and (c:IsControler(tp) or c:GetFlagEffect(511002577)>0) +end +function c511002577.fusfilter2(c,e,tp,m1,m2,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) and (c:IsCode(95486586) or c:IsCode(46759931)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and m1:IsExists(c511002577.filterx,1,nil,m2,chkf,c) +end +function c511002577.filterx(c,m2,chkf,fus) + return fus:CheckFusionMaterial(m2,c,chkf) +end +function c511002577.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mga1=Duel.GetMatchingGroup(c511002577.filter0,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local mga2=Duel.GetMatchingGroup(c511002577.filter2,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil) + local res=Duel.IsExistingMatchingCard(c511002577.fusfilter,tp,LOCATION_EXTRA,LOCATION_EXTRA,1,nil,e,tp,mga1,mga2,nil,chkf) + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002577.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002577.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e,tp) + local mg2=Duel.GetMatchingGroup(c511002577.filter3,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil,e) + local sg1=Duel.GetMatchingGroup(c511002577.fusfilter2,tp,LOCATION_EXTRA,LOCATION_EXTRA,nil,e,tp,mg1,mg2,nil,chkf) + if sg1:GetCount()>0 then + local g=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) + Duel.ConfirmCards(tp,g) + local sg=sg1:Clone() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local mgsel=mg1:Select(tp,1,1,nil) + local mgc=mgsel:GetFirst() + Duel.HintSelection(mgsel) + local mat1=Duel.SelectFusionMaterial(tp,tc,mg2,mgc,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION+REASON_RETURN) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + end + tc:CompleteProcedure() + end +end +function c511002577.cfilter(c) + return c:IsLocation(LOCATION_EXTRA) and c:IsType(TYPE_FUSION) +end +function c511002577.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511002577.cfilter,nil) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511002577,nil,0,0) + tc=g:GetNext() + end +end diff --git a/script/c511002578.lua b/script/c511002578.lua new file mode 100644 index 00000000..bb9cff38 --- /dev/null +++ b/script/c511002578.lua @@ -0,0 +1,28 @@ +--燃えさかる大地 +function c511002578.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_SZONE) + e2:SetTarget(c511002578.destg) + c:RegisterEffect(e2) + --Def down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(-700) + c:RegisterEffect(e3) +end +function c511002578.destg(e,c) + return c==Duel.GetFieldCard(c:GetControler(),LOCATION_SZONE,5) +end diff --git a/script/c511002579.lua b/script/c511002579.lua new file mode 100644 index 00000000..b15bface --- /dev/null +++ b/script/c511002579.lua @@ -0,0 +1,33 @@ +--Raccoon Reversal +function c511002579.initial_effect(c) + --negate attack + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002579.condition) + e1:SetTarget(c511002579.target) + e1:SetOperation(c511002579.operation) + c:RegisterEffect(e1) +end +function c511002579.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) + and (d:IsCode(17441953) or d:IsCode(31991800) or d:IsCode(92729410) or d:IsCode(28118128) or d:IsCode(39972129)) +end +function c511002579.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() and tg:IsDestructable() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,tg:GetAttack()) +end +function c511002579.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc and tc:IsRelateToBattle() and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) + and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511002580.lua b/script/c511002580.lua new file mode 100644 index 00000000..2047bfec --- /dev/null +++ b/script/c511002580.lua @@ -0,0 +1,60 @@ +--Ordeal of the Hero +function c511002580.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511002580.condition) + e1:SetTarget(c511002580.target) + e1:SetOperation(c511002580.activate) + c:RegisterEffect(e1) +end +function c511002580.cfilter(c) + return c:IsFaceup() and (c:IsCode(77631175) or c:IsCode(13030280)) +end +function c511002580.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.IsExistingMatchingCard(c511002580.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002580.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=eg:GetFirst() + if chk==0 then return tc:IsFaceup() and tc:IsOnField() and Duel.IsPlayerCanSpecialSummon(1-tp) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>1 end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,1-tp,LOCATION_DECK) +end +function c511002580.spfilter(c,e,tp,lv) + return c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002580.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(c511002580.spfilter,tp,0,LOCATION_DECK,nil,e,1-tp,tc:GetLevel()) + if g:GetCount()>=2 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(1-tp,2,2,nil) + local spc=sg:GetFirst() + while spc do + Duel.SpecialSummonStep(spc,0,1-tp,1-tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + spc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + spc:RegisterEffect(e2,true) + spc=sg:GetNext() + end + Duel.SpecialSummonComplete() + else + local cg=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + Duel.ConfirmCards(tp,cg) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleDeck(1-tp) + Duel.Damage(1-tp,400,REASON_EFFECT) + end + end +end diff --git a/script/c511002581.lua b/script/c511002581.lua new file mode 100644 index 00000000..00f0006f --- /dev/null +++ b/script/c511002581.lua @@ -0,0 +1,58 @@ +--リバース・バスター +function c511002581.initial_effect(c) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c511002581.atkop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(90640901,0)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_START) + e4:SetCondition(c511002581.descon) + e4:SetTarget(c511002581.destg) + e4:SetOperation(c511002581.desop) + c:RegisterEffect(e4) +end +function c511002581.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511002581.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511002581.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511002581.descon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return e:GetHandler()==Duel.GetAttacker() and d and d:IsPosition(POS_FACEDOWN_DEFENSE) +end +function c511002581.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk==0 then return d:IsDestructable() and d:IsOnField() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,d,1,0,0) +end +function c511002581.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local d=Duel.GetAttackTarget() + if d:IsRelateToBattle() then + Duel.Destroy(d,REASON_EFFECT) + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.BreakEffect() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end + end +end diff --git a/script/c511002582.lua b/script/c511002582.lua new file mode 100644 index 00000000..381a98f7 --- /dev/null +++ b/script/c511002582.lua @@ -0,0 +1,50 @@ +--Photon Spear +function c511002582.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(c511002582.target) + e1:SetOperation(c511002582.operation) + c:RegisterEffect(e1) + --Pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_PIERCE) + 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(c511002582.eqlimit) + c:RegisterEffect(e3) + --double tribute + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_DOUBLE_TRIBUTE) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511002582.eqlimit(e,c) + return c:IsSetCard(0x55) +end +function c511002582.filter(c) + return c:IsFaceup() and c:IsSetCard(0x55) +end +function c511002582.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511002582.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002582.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002582.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002582.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + end +end diff --git a/script/c511002583.lua b/script/c511002583.lua new file mode 100644 index 00000000..3cec770e --- /dev/null +++ b/script/c511002583.lua @@ -0,0 +1,37 @@ +--Gorgonic Ritual +function c511002583.initial_effect(c) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_ACTIVATE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCost(c511002583.cost) + e3:SetTarget(c511002583.target) + e3:SetOperation(c511002583.activate) + c:RegisterEffect(e3) +end +function c511002583.filter(c,e,tp) + return c:IsRace(RACE_ROCK) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002583.cfilter(c,e,tp) + return c:IsRace(RACE_ROCK) and c:IsType(TYPE_XYZ) and c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c511002583.filter,tp,LOCATION_GRAVE,0,2,c,e,tp) +end +function c511002583.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002583.cfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local g=Duel.SelectMatchingCard(tp,c511002583.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002583.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE) +end +function c511002583.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511002583.filter,tp,LOCATION_GRAVE,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511002584.lua b/script/c511002584.lua new file mode 100644 index 00000000..5ca40086 --- /dev/null +++ b/script/c511002584.lua @@ -0,0 +1,66 @@ +--Shield Coat +function c511002584.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511002584.condition) + e1:SetTarget(c511002584.target) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --Double DEF + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetTarget(aux.TargetBoolFunction(Card.IsPosition,POS_FACEUP_DEFENSE)) + e4:SetValue(c511002584.defval) + c:RegisterEffect(e4) +end +function c511002584.cfilter(c,tp) + return c:GetSummonPlayer()~=tp and c:IsFaceup() + and Duel.IsExistingMatchingCard(c511002584.filter,tp,LOCATION_MZONE,0,1,nil,c:GetAttack()) +end +function c511002584.filter(c,atk) + return c:IsFaceup() and atk>c:GetDefense() +end +function c511002584.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002584.cfilter,1,nil,tp) +end +function c511002584.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + c:SetTurnCounter(0) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002584.descon) + e2:SetOperation(c511002584.desop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + c:RegisterEffect(e2) +end +function c511002584.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002584.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==2 then + Duel.Destroy(c,REASON_RULE) + end +end +function c511002584.defval(e,c) + return c:GetDefense()*2 +end diff --git a/script/c511002585.lua b/script/c511002585.lua new file mode 100644 index 00000000..199d01f7 --- /dev/null +++ b/script/c511002585.lua @@ -0,0 +1,103 @@ +--Revival Ticket +function c511002585.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511002585) + e1:SetCondition(c511002585.condition) + e1:SetTarget(c511002585.target) + e1:SetOperation(c511002585.activate) + c:RegisterEffect(e1) + if not c511002585.global_check then + c511002585.global_check=true + c511002585[0]=0 + c511002585[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c511002585.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002585.clear) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_PHASE+PHASE_BATTLE) + ge3:SetOperation(c511002585.trigop) + ge3:SetCountLimit(1) + Duel.RegisterEffect(ge3,0) + end +end +function c511002585.checkop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then + c511002585[tp]=c511002585[tp]+ev + end + if ep==1-tp then + c511002585[1-tp]=c511002585[1-tp]+ev + end +end +function c511002585.clear(e,tp,eg,ep,ev,re,r,rp) + c511002585[0]=0 + c511002585[1]=0 +end +function c511002585.trigop(e,tp,eg,ep,ev,re,r,rp) + Duel.RaiseEvent(e:GetHandler(),511002585,e,REASON_RULE,Duel.GetTurnPlayer(),1-Duel.GetTurnPlayer(),ev) +end +function c511002585.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and ep==tp +end +function c511002585.cfilter(c,tp,tid) + return c:GetPreviousControler()==tp and c:GetTurnID()==tid and bit.band(c:GetReason(),REASON_BATTLE)~=0 +end +function c511002585.ftchk(ft,tp,ct,e) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,0,e:GetHandler()) + if ft<=ct then + ft=ft+g:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + end +end +function c511002585.chkfilter(c,e,tp) + return not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) + or not c:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) +end +function c511002585.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c511002585.cfilter,tp,0x7f,0x7f,nil,tp,Duel.GetTurnCount()) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=g:GetCount() + c511002585.ftchk(ft,tp,ct,e) + if chk==0 then return ct>0 and ft>=ct and not g:IsExists(c511002585.chkfilter,1,nil,e,tp) + and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,0,ct,e:GetHandler()) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,c511002585[tp]) +end +function c511002585.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002585.cfilter,tp,0x7f,0x7f,nil,tp,Duel.GetTurnCount()) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=g:GetCount() + c511002585.ftchk(ft,tp,ct,e) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,0,e:GetHandler()) + if ft0 + and Duel.IsExistingMatchingCard(c511002586.filter,tp,LOCATION_DECK,0,1,nil,e,tp,cid) end + Duel.SetTargetParam(cid) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002586.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + 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(c511002586.damcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c511002586.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp,atk):GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + c:SetCardTarget(tc) + end +end +function c511002586.damcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(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 diff --git a/script/c511002587.lua b/script/c511002587.lua new file mode 100644 index 00000000..0489231e --- /dev/null +++ b/script/c511002587.lua @@ -0,0 +1,69 @@ +--魂食神龍ドレイン・ドラゴン +function c511002587.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76321376,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c511002587.damtg) + e1:SetOperation(c511002587.damop) + c:RegisterEffect(e1) + --tribute limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRIBUTE_LIMIT) + e2:SetValue(c511002587.tlimit) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e3) + --update atk,def + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c511002587.val) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e5) + --cannot attack + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_SUMMON_SUCCESS) + e6:SetOperation(c511002587.disatk) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e7) +end +function c511002587.tlimit(e,c) + return not c:IsRace(RACE_DRAGON) +end +function c511002587.val(e,c) + return Duel.GetLP(1-c:GetControler()) +end +function c511002587.disatk(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511002587.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local atk=e:GetHandler():GetPreviousAttackOnField()/2 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c511002587.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002588.lua b/script/c511002588.lua new file mode 100644 index 00000000..a7a279fe --- /dev/null +++ b/script/c511002588.lua @@ -0,0 +1,37 @@ +--Gorgonic Pile +function c511002588.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511002588.target) + e1:SetOperation(c511002588.activate) + c:RegisterEffect(e1) +end +function c511002588.cfilter(c) + return c:IsFaceup() and (c:IsCode(37168514) or c:IsCode(64379261) or c:IsCode(37984162) or c:IsCode(90764875) or c:IsCode(84401683)) +end +function c511002588.filter(c) + return c:IsFaceup() and c:IsRace(RACE_ROCK) and c:GetLevel()>0 +end +function c511002588.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511002588.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002588.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511002588.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002588.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002588.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local ct=Duel.GetMatchingGroupCount(c511002588.cfilter,tp,LOCATION_MZONE,0,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(ct) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002589.lua b/script/c511002589.lua new file mode 100644 index 00000000..12267029 --- /dev/null +++ b/script/c511002589.lua @@ -0,0 +1,36 @@ +--スパイダー・ウェブ +function c511002589.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --to defense + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c511002589.poscon) + e2:SetOperation(c511002589.posop) + c:RegisterEffect(e2) +end +function c511002589.poscon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsPosition(POS_FACEUP_ATTACK) and a:IsRelateToBattle() and a:IsControler(1-tp) + and not a:IsRace(RACE_INSECT) +end +function c511002589.posop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if Duel.ChangePosition(a,POS_FACEUP_DEFENSE)~=0 then + e:GetHandler():CreateRelation(a,RESET_EVENT+0x1fe0000) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,3) + e1:SetCondition(c511002589.poscon2) + a:RegisterEffect(e1) + end +end +function c511002589.poscon2(e) + return e:GetOwner():IsRelateToCard(e:GetHandler()) +end diff --git a/script/c511002590.lua b/script/c511002590.lua new file mode 100644 index 00000000..3382e3e1 --- /dev/null +++ b/script/c511002590.lua @@ -0,0 +1,51 @@ +--RUM-レヴォリューション・フォース +function c511002590.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002590.target) + e1:SetOperation(c511002590.activate) + c:RegisterEffect(e1) +end +function c511002590.filter(c,e,tp) + local rk=c:GetRank() + return rk>0 and c:IsFaceup() and c:IsControlerCanBeChanged() + and Duel.IsExistingMatchingCard(c511002590.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetCode()) +end +function c511002590.spfilter(c,e,tp,mc,rk,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return c:GetRank()==rk and c:IsSetCard(0xba) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511002590.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511002590.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002590.filter,tp,0,LOCATION_MZONE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511002590.filter,tp,0,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002590.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) or not tc:IsFaceup() then return end + if not Duel.GetControl(tc,tp) then return end + Duel.BreakEffect() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002590.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.SendtoGrave(mg,REASON_RULE) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c511002591.lua b/script/c511002591.lua new file mode 100644 index 00000000..363529ff --- /dev/null +++ b/script/c511002591.lua @@ -0,0 +1,84 @@ +--Emトラピーズ・マジシャン +function c511002591.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER),4,2) + c:EnableReviveLimit() + --avoid damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_AVAILABLE_BD) + e1:SetTargetRange(1,1) + e1:SetValue(c511002591.damval) + c:RegisterEffect(e1) + --multi attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetHintTiming(0,TIMING_MAIN_END) + e2:SetCondition(c511002591.mtcon) + e2:SetCost(c511002591.mtcost) + e2:SetTarget(c511002591.mttg) + e2:SetOperation(c511002591.mtop) + c:RegisterEffect(e2) +end +function c511002591.damval(e,re,val,r,rp,rc) + local atk=e:GetHandler():GetAttack() + if val<=atk and bit.band(r,REASON_EFFECT)>0 then return 0 else return val end +end +function c511002591.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_BATTLE or Duel.IsAbleToEnterBP() +end +function c511002591.mtcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002591.mtfilter(c) + return c:IsFaceup() and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) and c:GetFlagEffect(511002591)==0 +end +function c511002591.mttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002591.mtfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002591.mtfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tc=Duel.SelectTarget(tp,c511002591.mtfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil):GetFirst() + tc:RegisterFlagEffect(511002591,RESET_CHAIN,0,1) +end +function c511002591.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + local fid=c:GetFieldID() + if tc and tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(51102591,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCountLimit(1) + e2:SetLabel(fid) + e2:SetLabelObject(tc) + e2:SetCondition(c511002591.descon) + e2:SetOperation(c511002591.desop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c511002591.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return tc:GetFlagEffectLabel(51102591)==e:GetLabel() and tc:GetAttackedCount()<2 +end +function c511002591.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511002591) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c511002596.lua b/script/c511002596.lua new file mode 100644 index 00000000..2ff60299 --- /dev/null +++ b/script/c511002596.lua @@ -0,0 +1,35 @@ +--Joint Future +function c511002596.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002596.condition) + e1:SetCost(c511002596.cost) + e1:SetTarget(c511002596.target) + e1:SetOperation(c511002596.activate) + c:RegisterEffect(e1) +end +function c511002596.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp and Duel.IsChainNegatable(ev) +end +function c511002596.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c511002596.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_TODECK,eg,1,0,0) + end +end +function c511002596.activate(e,tp,eg,ep,ev,re,r,rp) + local ec=re:GetHandler() + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + ec:CancelToGrave() + Duel.SendtoDeck(ec,nil,2,REASON_EFFECT) + end +end diff --git a/script/c511002597.lua b/script/c511002597.lua new file mode 100644 index 00000000..5a7ca067 --- /dev/null +++ b/script/c511002597.lua @@ -0,0 +1,81 @@ +--D・クリーナン +function c511002597.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48868994,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002597.cona) + e1:SetCost(c511002597.costa) + e1:SetTarget(c511002597.tga) + e1:SetOperation(c511002597.opa) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(48868994,1)) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002597.cond) + e2:SetTarget(c511002597.tgd) + e2:SetOperation(c511002597.opd) + c:RegisterEffect(e2) +end +function c511002597.cona(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsDisabled() and e:GetHandler():IsAttackPos() +end +function c511002597.costa(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(Card.IsAbleToGraveAsCost,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002597.tga(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511002597.opa(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002597.cond(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsDisabled() and e:GetHandler():IsDefensePos() +end +function c511002597.filter(c) + return c:IsFaceup() and c:IsAttackPos() and c:IsAbleToChangeControler() +end +function c511002597.tgd(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002597.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511002597.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511002597.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511002597.eqlimit(e,c) + return e:GetOwner()==c and not c:IsDisabled() +end +function c511002597.opd(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackPos() then + if c:IsFaceup() and c:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + tc:CreateRelation(c,RESET_EVENT+0x1fe0000) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002597.eqlimit) + tc:RegisterEffect(e1) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end diff --git a/script/c511002598.lua b/script/c511002598.lua new file mode 100644 index 00000000..1b87558a --- /dev/null +++ b/script/c511002598.lua @@ -0,0 +1,54 @@ +--グローアップ・バルブ +function c511002598.initial_effect(c) + --lvup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99747800,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCondition(c511002598.lvcon) + e1:SetOperation(c511002598.lvop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67441435,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c511002598.spcost) + e2:SetTarget(c511002598.sptg) + e2:SetOperation(c511002598.spop) + c:RegisterEffect(e2) +end +function c511002598.lvcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511002598.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0xff0000) + e1:SetValue(1) + c:RegisterEffect(e1) + end +end +function c511002598.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local lv=e:GetHandler():GetLevel() + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,lv) end + Duel.DiscardDeck(tp,lv,REASON_COST) +end +function c511002598.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511002598.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002599.lua b/script/c511002599.lua new file mode 100644 index 00000000..01733775 --- /dev/null +++ b/script/c511002599.lua @@ -0,0 +1,46 @@ +--No.39 希望皇ホープ +function c511002599.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(84013237,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCost(c511002599.atkcost) + e1:SetOperation(c511002599.atkop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002599.indes) + c:RegisterEffect(e2) + if not c511002599.global_check then + c511002599.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002599.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002599.xyz_number=39 +function c511002599.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002599.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c511002599.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,84013237) + Duel.CreateToken(1-tp,84013237) +end +function c511002599.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002600.lua b/script/c511002600.lua new file mode 100644 index 00000000..01931f1c --- /dev/null +++ b/script/c511002600.lua @@ -0,0 +1,51 @@ +--No.88 ギミック・パペット-デステニー・レオ +function c511002600.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,3) + c:EnableReviveLimit() + --detach + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48995978,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002600.target) + e1:SetOperation(c511002600.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002600.indes) + c:RegisterEffect(e2) + if not c511002600.global_check then + c511002600.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002600.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002600.xyz_number=88 +function c511002600.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) end +end +function c511002600.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:RemoveOverlayCard(tp,1,1,REASON_EFFECT) then + if c:GetOverlayCount()==0 then + local WIN_REASON_DESTINY_LEO=0x17 + Duel.Win(c:GetControler(),WIN_REASON_DESTINY_LEO) + end + end +end +function c511002600.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,48995978) + Duel.CreateToken(1-tp,48995978) +end +function c511002600.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002601.lua b/script/c511002601.lua new file mode 100644 index 00000000..98a827ba --- /dev/null +++ b/script/c511002601.lua @@ -0,0 +1,70 @@ +--手札断殺 +function c511002601.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002601.target) + e1:SetOperation(c511002601.activate) + c:RegisterEffect(e1) +end +function c511002601.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + if e:GetHandler():IsLocation(LOCATION_HAND) then h1=h1-1 end + local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + local a=false + local b=false + if h1==0 then + a=Duel.IsPlayerCanDraw(tp,1) + elseif h1<4 then + a=Duel.IsPlayerCanDraw(tp,h1) + else + a=Duel.IsPlayerCanDraw(tp,4) + end + if h2==0 then + b=Duel.IsPlayerCanDraw(1-tp,1) + elseif h2<4 then + b=Duel.IsPlayerCanDraw(1-tp,h2) + else + b=Duel.IsPlayerCanDraw(1-tp,4) + end + return a and b + end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c511002601.activate(e,tp,eg,ep,ev,re,r,rp) + local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + local turnp=Duel.GetTurnPlayer() + local g1 + if h1==0 then + h1=1 + g1=Group.CreateGroup() + elseif h1<4 then + g1=Duel.GetFieldGroup(turnp,LOCATION_HAND,0) + else + h1=4 + Duel.Hint(HINT_SELECTMSG,turnp,HINTMSG_TOGRAVE) + g1=Duel.SelectMatchingCard(turnp,aux.TRUE,turnp,LOCATION_HAND,0,4,4,nil) + end + Duel.ConfirmCards(1-turnp,g1) + local g2 + if h2==0 then + h2=1 + g2=Group.CreateGroup() + elseif h2<4 then + g2=Duel.GetFieldGroup(1-turnp,LOCATION_HAND,0) + else + h2=4 + Duel.Hint(HINT_SELECTMSG,1-turnp,HINTMSG_TOGRAVE) + g2=Duel.SelectMatchingCard(1-turnp,aux.TRUE,1-turnp,LOCATION_HAND,0,4,4,nil) + end + Duel.ConfirmCards(turnp,g2) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_EFFECT) + Duel.BreakEffect() + Duel.Draw(turnp,h1,REASON_EFFECT) + Duel.Draw(1-turnp,h2,REASON_EFFECT) +end diff --git a/script/c511002602.lua b/script/c511002602.lua new file mode 100644 index 00000000..b93e1e32 --- /dev/null +++ b/script/c511002602.lua @@ -0,0 +1,84 @@ +--BF-極光のアウロラ +function c511002602.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002602.spcon) + e1:SetOperation(c511002602.spop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(4068622,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002602.target) + e2:SetOperation(c511002602.operation) + c:RegisterEffect(e2) + --special summon limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.FALSE) + c:RegisterEffect(e3) +end +function c511002602.spfilter1(c) + return c:IsFaceup() and c:IsSetCard(0x33) and c:IsType(TYPE_TUNER) and c:IsAbleToRemove() +end +function c511002602.spfilter2(c) + return c:IsFaceup() and not c:IsType(TYPE_TUNER) and c:IsAbleToRemove() +end +function c511002602.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c511002602.spfilter1,c:GetControler(),LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511002602.spfilter2,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c511002602.spop(e,tp,eg,ep,ev,re,r,rp,c) + local lv=0 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c511002602.spfilter1,tp,LOCATION_MZONE,0,1,1,nil) + lv=g1:GetFirst():GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c511002602.spfilter2,tp,LOCATION_MZONE,0,1,1,nil) + lv=lv+g2:GetFirst():GetLevel() + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) +end +function c511002602.filter(c,lv) + return c:IsSetCard(0x33) and c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemove() and c:GetLevel()==lv +end +function c511002602.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002602.filter,tp,LOCATION_EXTRA,0,1,nil,e:GetHandler():GetLevel()) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,0,tp,LOCATION_EXTRA) +end +function c511002602.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local tc=Duel.SelectMatchingCard(tp,c511002602.filter,tp,LOCATION_EXTRA,0,1,1,nil,c:GetLevel()):GetFirst() + if tc and c:IsFaceup() and c:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + local code=tc:GetOriginalCode() + local ba=tc:GetBaseAttack() + local reset_flag=RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN + c:CopyEffect(code, reset_flag, 1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(reset_flag) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetValue(ba) + c:RegisterEffect(e2) + end +end diff --git a/script/c511002603.lua b/script/c511002603.lua new file mode 100644 index 00000000..3a47e4c9 --- /dev/null +++ b/script/c511002603.lua @@ -0,0 +1,19 @@ +--クリエイト・リゾネーター +function c511002603.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002603.spcon) + c:RegisterEffect(e1) +end +function c511002603.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511002603.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002603.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002604.lua b/script/c511002604.lua new file mode 100644 index 00000000..2452a3fb --- /dev/null +++ b/script/c511002604.lua @@ -0,0 +1,169 @@ +--オレイカルコスの結界 +function c511002604.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + c:RegisterEffect(e1) + --cannot disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DISABLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetValue(500) + c:RegisterEffect(e3) + --cannot leave + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(e5) + local e6=e4:Clone() + e6:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(e6) + local e7=e4:Clone() + e7:SetCode(EFFECT_CANNOT_TO_DECK) + c:RegisterEffect(e7) + local e8=e4:Clone() + e8:SetCode(EFFECT_CANNOT_TO_EXTRA) + c:RegisterEffect(e8) + local e9=e4:Clone() + e9:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e9) + local e10=e4:Clone() + e10:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e10) + local e11=e4:Clone() + e11:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + c:RegisterEffect(e11) + local e12=e4:Clone() + e12:SetCode(EFFECT_UNRELEASABLE_SUM) + c:RegisterEffect(e12) + local e13=e4:Clone() + e13:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e13) + --negate + local e14=Effect.CreateEffect(c) + e14:SetDescription(aux.Stringid(35952884,0)) + e14:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e14:SetType(EFFECT_TYPE_QUICK_O) + e14:SetCode(EVENT_CHAINING) + e14:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_CANNOT_DISABLE) + e14:SetRange(LOCATION_HAND) + e14:SetCondition(c511002604.discon) + e14:SetCost(c511002604.discost) + e14:SetTarget(c511002604.distg) + e14:SetOperation(c511002604.disop) + c:RegisterEffect(e14) + --spsummon + local e15=Effect.CreateEffect(c) + e15:SetDescription(aux.Stringid(18326736,0)) + e15:SetType(EFFECT_TYPE_QUICK_O) + e15:SetRange(LOCATION_FZONE) + e15:SetCode(EVENT_FREE_CHAIN) + e15:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e15:SetCost(c511002604.cost) + e15:SetTarget(c511002604.tg) + e15:SetOperation(c511002604.op) + e15:SetHintTiming(0,TIMING_END_PHASE) + c:RegisterEffect(e15) +end +function c511002604.discon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsChainNegatable(ev) +end +function c511002604.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002604.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511002604.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511002604.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(511002604)==0 end + c:RegisterFlagEffect(511002604,RESET_CHAIN,0,1) +end +function c511002604.filter(c,tp) + local seq=c:GetSequence() + local mc=Duel.GetFieldCard(tp,LOCATION_MZONE,seq) + local sc=Duel.GetFieldCard(tp,LOCATION_SZONE,seq) + if c:GetFlagEffect(511002604)>0 then return false end + if c:IsLocation(LOCATION_MZONE) then + return not sc + else + return not mc and c:GetFlagEffect(511002603)>0 + end +end +function c511002604.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002604.filter,tp,LOCATION_ONFIELD,0,1,nil,tp) end +end +function c511002604.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local tc=Duel.SelectMatchingCard(tp,c511002604.filter,tp,LOCATION_ONFIELD,0,1,1,nil,tp):GetFirst() + if tc then + local seq=tc:GetSequence() + local loc=0 + if tc:IsLocation(LOCATION_MZONE) then + loc=LOCATION_SZONE + else + loc=LOCATION_MZONE + end + local pos=0 + if tc:IsFaceup() then + pos=POS_FACEUP + elseif tc:IsLocation(LOCATION_SZONE) and tc:IsFacedown() then + pos=POS_FACEDOWN_DEFENSE + else + pos=POS_FACEDOWN + end + Duel.MoveToField(tc,tp,tp,loc,pos,true) + if tc:IsLocation(LOCATION_MZONE) then + tc:SetStatus(STATUS_SPSUMMON_TURN,true) + else + tc:RegisterFlagEffect(511002603,RESET_EVENT+0x1fe0000,0,0) + end + tc:RegisterFlagEffect(511002604,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + Duel.MoveSequence(tc,seq) + local e1=Effect.CreateEffect(tc) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetCondition(c511002604.con) + e1:SetValue(c511002604.val) + tc:RegisterEffect(e1) + Duel.RaiseEvent(tc,47408488,e,0,tp,0,0) + end +end +function c511002604.con(e) + return e:GetHandler():IsLocation(LOCATION_SZONE) +end +function c511002604.val(e,c) + return TYPE_SPELL+TYPE_CONTINUOUS +end diff --git a/script/c511002605.lua b/script/c511002605.lua new file mode 100644 index 00000000..a8381f7a --- /dev/null +++ b/script/c511002605.lua @@ -0,0 +1,46 @@ +--Unlimited Blade Rain +function c511002605.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:SetCondition(c511002605.condition) + e1:SetTarget(c511002605.target) + e1:SetOperation(c511002605.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) +end +function c511002605.cfilter(c) + return c:GetSequence()<5 +end +function c511002605.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c511002605.cfilter,tp,LOCATION_SZONE,0,1,nil) +end +function c511002605.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 c511002605.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) + local ct=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_EQUIP) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + if ct>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(19025379,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=g:Select(tp,1,ct,nil) + Duel.Destroy(sg,REASON_EFFECT) + end + end +end diff --git a/script/c511002606.lua b/script/c511002606.lua new file mode 100644 index 00000000..f7af68bb --- /dev/null +++ b/script/c511002606.lua @@ -0,0 +1,36 @@ +--Neverfading Mist +function c511002606.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetValue(1) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511002606.mtcon) + e3:SetOperation(c511002606.mtop) + c:RegisterEffect(e3) +end +function c511002606.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002606.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,1500) and Duel.SelectYesNo(tp,aux.Stringid(84389640,1)) then + Duel.PayLPCost(tp,1500) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c511002607.lua b/script/c511002607.lua new file mode 100644 index 00000000..0a0ea490 --- /dev/null +++ b/script/c511002607.lua @@ -0,0 +1,21 @@ +--Emphasis of Light +function c511002607.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT)) + e2:SetCountLimit(1) + e2:SetValue(c511002607.valcon) + c:RegisterEffect(e2) +end +function c511002607.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c511002608.lua b/script/c511002608.lua new file mode 100644 index 00000000..05a83980 --- /dev/null +++ b/script/c511002608.lua @@ -0,0 +1,64 @@ +--Neutralization Spell +function c511002608.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON) + e1:SetCondition(c511002608.condition1) + e1:SetCost(c511002608.cost1) + e1:SetTarget(c511002608.target1) + e1:SetOperation(c511002608.activate1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON) + c:RegisterEffect(e3) + --Activate(effect) + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_NEGATE+CATEGORY_TOHAND) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetType(EFFECT_TYPE_ACTIVATE) + e4:SetCode(EVENT_CHAINING) + e4:SetCondition(c511002608.condition2) + e4:SetCost(c511002608.cost1) + e4:SetTarget(c511002608.target2) + e4:SetOperation(c511002608.activate2) + c:RegisterEffect(e4) +end +function c511002608.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 +end +function c511002608.cost1(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 c511002608.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,eg,eg:GetCount(),0,0) +end +function c511002608.activate1(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.SendtoHand(eg,nil,REASON_EFFECT) +end +function c511002608.condition2(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511002608.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsAbleToHand() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_TOHAND,eg,1,0,0) + end +end +function c511002608.activate2(e,tp,eg,ep,ev,re,r,rp) + local ec=re:GetHandler() + Duel.NegateActivation(ev) + if ec:IsRelateToEffect(re) then + ec:CancelToGrave() + Duel.SendtoHand(eg,nil,REASON_EFFECT) + end +end diff --git a/script/c511002609.lua b/script/c511002609.lua new file mode 100644 index 00000000..b5adac94 --- /dev/null +++ b/script/c511002609.lua @@ -0,0 +1,52 @@ +--Eruption of Fire +function c511002609.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002609.condition) + e1:SetTarget(c511002609.target) + e1:SetOperation(c511002609.activate) + c:RegisterEffect(e1) +end +function c511002609.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsControler,1,nil,1-tp) +end +function c511002609.filter(c,tp) + return c:IsCode(19384334) and c:GetActivateEffect():IsActivatable(tp) +end +function c511002609.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002609.filter,tp,LOCATION_DECK,0,1,nil,tp) end +end +function c511002609.tgfilter(c) + return c:GetSequence()<5 and c:IsAbleToGrave() +end +function c511002609.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + local tc=Duel.SelectMatchingCard(tp,c511002609.filter,tp,LOCATION_DECK,0,1,1,nil,tp):GetFirst() + if tc then + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc then + Duel.SendtoGrave(fc,REASON_RULE) + Duel.BreakEffect() + end + fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + local fchk=fc and fc:IsFaceup() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local g=Duel.GetMatchingGroup(c511002609.tgfilter,tp,LOCATION_SZONE,0,e:GetHandler()) + if fchk and g:GetCount()>0 and Duel.SelectYesNo(1-tp,aux.Stringid(2843014,0)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) + local tg=g:Select(1-tp,1,1,nil) + Duel.SendtoGrave(tg,REASON_EFFECT) + local dg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if dg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(28553439,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local des=dg:Select(tp,1,1,nil) + Duel.HintSelection(des) + Duel.BreakEffect() + Duel.Destroy(des,REASON_EFFECT) + end + end + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end +end diff --git a/script/c511002618.lua b/script/c511002618.lua new file mode 100644 index 00000000..5674d67d --- /dev/null +++ b/script/c511002618.lua @@ -0,0 +1,29 @@ +--Catastrophe Draw +function c511002618.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002618.cost) + e1:SetTarget(c511002618.target) + e1:SetOperation(c511002618.activate) + c:RegisterEffect(e1) +end +function c511002618.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,0,5,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_MZONE,0,5,5,nil) + Duel.Destroy(g,REASON_COST) +end +function c511002618.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511002618.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002619.lua b/script/c511002619.lua new file mode 100644 index 00000000..68c8ce0a --- /dev/null +++ b/script/c511002619.lua @@ -0,0 +1,36 @@ +--Battle x 2 +function c511002619.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(82593786,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511002619.condition) + e1:SetOperation(c511002619.activate) + c:RegisterEffect(e1) +end +function c511002619.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) and a and a:IsControler(tp) + and d and a:GetAttack()*2<=d:GetAttack() +end +function c511002619.filter(c,tp) + return c:IsRelateToBattle() and c:IsControler(tp) +end +function c511002619.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Group.FromCards(Duel.GetAttacker(),Duel.GetAttackTarget()) + g=g:Filter(c511002619.filter,nil,tp) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002620.lua b/script/c511002620.lua new file mode 100644 index 00000000..23bf772d --- /dev/null +++ b/script/c511002620.lua @@ -0,0 +1,114 @@ +--Underworld Resonance - Synchro Fusion +function c511002620.initial_effect(c) + --synchro effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002620.target) + e1:SetOperation(c511002620.activate) + c:RegisterEffect(e1) +end +function c511002620.chk(e,tp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + for i=0,4 do + for j=0,4 do + local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,j) + local g=Group.FromCards(c1,c2) + if c1 and c2 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() then + if Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) + and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) then + return true + end + end + end + end + for i=0,4 do + for j=0,4 do + for k=0,4 do + local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,j) + local c3=Duel.GetFieldCard(tp,LOCATION_MZONE,k) + local g=Group.FromCards(c1,c2,c3) + if c1 and c2 and c3 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() + and c3:IsCanBeFusionMaterial() then + if Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) + and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) then + return true + end + end + end + end + end + for i=0,4 do + for j=0,4 do + for k=0,4 do + for l=0,4 do + local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,j) + local c3=Duel.GetFieldCard(tp,LOCATION_MZONE,k) + local c4=Duel.GetFieldCard(tp,LOCATION_MZONE,l) + local g=Group.FromCards(c1,c2,c3,c4) + if c1 and c2 and c3 and c4 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() + and c3:IsCanBeFusionMaterial() and c4:IsCanBeFusionMaterial() then + if Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) + and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) then + return true + end + end + end + end + end + end + local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,0) + local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,1) + local c3=Duel.GetFieldCard(tp,LOCATION_MZONE,2) + local c4=Duel.GetFieldCard(tp,LOCATION_MZONE,3) + local c5=Duel.GetFieldCard(tp,LOCATION_MZONE,4) + local g=Group.FromCards(c1,c2,c3,c4,c5) + return c1 and c2 and c3 and c4 and c5 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() and c3:IsCanBeFusionMaterial() + and c4:IsCanBeFusionMaterial() and c5:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) + and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) +end +function c511002620.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002620.filter2(c,e,tp,m,f) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil) +end +function c511002620.synfilter(c,mg) + return c:IsSynchroSummonable(nil,mg) and mg:CheckWithSumEqual(Card.GetSynchroLevel,c:GetLevel(),mg:GetCount(),mg:GetCount(),c) +end +function c511002620.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return c511002620.chk(e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) +end +function c511002620.activate(e,tp,eg,ep,ev,re,r,rp) + if not c511002620.chk(e,tp) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002620.filter1,tp,LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511002620.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + if sg1:GetCount()>0 then + local sg=sg1:Clone() + local tc2=nil + local tc=nil + local mat1=Group.CreateGroup() + while not tc or not tc2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + tc=sg:Select(tp,1,1,nil):GetFirst() + mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc2=Duel.SelectMatchingCard(tp,c511002620.synfilter,tp,LOCATION_EXTRA,0,1,1,nil,mat1):GetFirst() + end + tc:SetMaterial(mat1) + tc2:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION+REASON_SYNCHRO) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummon(tc2,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + tc2:CompleteProcedure() + end +end diff --git a/script/c511002621.lua b/script/c511002621.lua new file mode 100644 index 00000000..884d4005 --- /dev/null +++ b/script/c511002621.lua @@ -0,0 +1,137 @@ +--おう国こく +function c511002621.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetRange(0x5f) + e1:SetOperation(c511002621.op) + c:RegisterEffect(e1) + --decrease tribute + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(72497366,0)) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetRange(LOCATION_REMOVED) + e2:SetTargetRange(LOCATION_HAND,0) + e2:SetCondition(c511002621.ntcon) + c:RegisterEffect(e2) + --cannot direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e3:SetRange(LOCATION_REMOVED) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e3) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_REMOVED) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c511002621.ctcon2) + c:RegisterEffect(e6) + --destroy + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e9:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_DELAY) + e9:SetCode(EVENT_DESTROYED) + e9:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e9:SetRange(LOCATION_REMOVED) + e9:SetCondition(c511002621.descon) + e9:SetTarget(c511002621.destg) + e9:SetOperation(c511002621.desop) + c:RegisterEffect(e9) + local e10=e2:Clone() + e10:SetCode(EFFECT_SET_PROC) + c:RegisterEffect(e10) + --cannot attack + local e12=Effect.CreateEffect(c) + e12:SetType(EFFECT_TYPE_FIELD) + e12:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e12:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e12:SetRange(LOCATION_REMOVED) + e12:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e12:SetCondition(c511002621.atkcon) + e12:SetTarget(c511002621.atktg) + c:RegisterEffect(e12) + --check + local e13=Effect.CreateEffect(c) + e13:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e13:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e13:SetCode(EVENT_ATTACK_ANNOUNCE) + e13:SetRange(LOCATION_SZONE) + e13:SetOperation(c511002621.checkop) + e13:SetLabelObject(e2) + c:RegisterEffect(e13) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_REMOVED) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c511002621.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +function c511002621.op(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_REMOVED,0,1,nil,511002621) then + Duel.DisableShuffleCheck() + Duel.SendtoDeck(c,nil,-2,REASON_RULE) + else + Duel.Remove(c,POS_FACEUP,REASON_RULE) + Duel.Hint(HINT_CARD,0,511002621) + end + if c:GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end +function c511002621.ntcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511002621.cfilter(c,tp) + return c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c511002621.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002621.cfilter,1,nil,tp) +end +function c511002621.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=eg:Filter(c511002621.cfilter,nil,tp):GetSum(Card.GetAttack)/2 + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(dam) +end +function c511002621.desop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002621.atkcon(e) + return e:GetHandler():GetFlagEffect(30606547)~=0 +end +function c511002621.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() +end +function c511002621.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(30606547)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + e:GetHandler():RegisterFlagEffect(30606547,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end diff --git a/script/c511002622.lua b/script/c511002622.lua new file mode 100644 index 00000000..6f12ae9d --- /dev/null +++ b/script/c511002622.lua @@ -0,0 +1,117 @@ +--Blade Shade +function c511002622.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(TIMING_STANDBY_PHASE,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002622.target) + e1:SetOperation(c511002622.activate) + c:RegisterEffect(e1) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511002622.descon) + e3:SetOperation(c511002622.desop) + c:RegisterEffect(e3) + --negate attack + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(93238626,1)) + e4:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_BE_BATTLE_TARGET) + e4:SetCondition(c511002622.qcon) + e4:SetOperation(c511002622.qop) + c:RegisterEffect(e4) + --cannot be destroyed + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetDescription(aux.Stringid(64038662,0)) + e5:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_FREE_CHAIN) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetCondition(c511002622.procon) + e5:SetOperation(c511002622.proop) + c:RegisterEffect(e5) + --destroy + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(78586116,0)) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(511002622) + e6:SetTarget(c511002622.damtg) + e6:SetOperation(c511002622.damop) + c:RegisterEffect(e6) +end +function c511002622.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002622.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + end +end +function c511002622.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511002622.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511002622.qcon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + local tc=e:GetHandler():GetFirstCardTarget() + return d and tc and d==tc +end +function c511002622.qop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.NegateAttack() + Duel.RaiseSingleEvent(c,511002622,e,0,0,0,0,0) +end +function c511002622.procon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc +end +function c511002622.proop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCountLimit(1) + e1:SetValue(c511002622.valcon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.RaiseSingleEvent(c,511002622,e,0,0,0,0,0) + end +end +function c511002622.valcon(e,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c511002622.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511002622.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002623.lua b/script/c511002623.lua new file mode 100644 index 00000000..582f906c --- /dev/null +++ b/script/c511002623.lua @@ -0,0 +1,69 @@ +--BFブラックフェザー-陽かげ炎ろうのカーム +function c511002623.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(88305978,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511002623.condition) + e1:SetCost(c511002623.cost) + e1:SetTarget(c511002623.target) + e1:SetOperation(c511002623.operation) + c:RegisterEffect(e1) + + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511002623.spcon) + c:RegisterEffect(e2) +end +function c511002623.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511002623.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002623.filter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002623.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002623.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002623.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002623.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002623.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetOperation(c511002623.rmop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511002623.rmop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end +function c511002623.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x33) +end +function c511002623.spcon(e,c) + if c==nil then return true end + local g=Duel.GetMatchingGroup(c511002623.cfilter,c:GetControler(),LOCATION_MZONE,0,nil) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetSum(Card.GetLevel)>=8 +end diff --git a/script/c511002624.lua b/script/c511002624.lua new file mode 100644 index 00000000..4009e7fb --- /dev/null +++ b/script/c511002624.lua @@ -0,0 +1,31 @@ +--Amazing Pendulum +function c511002624.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002624.condition) + e1:SetTarget(c511002624.target) + e1:SetOperation(c511002624.activate) + c:RegisterEffect(e1) +end +function c511002624.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.GetFieldCard(tp,LOCATION_SZONE,6) and not Duel.GetFieldCard(tp,LOCATION_SZONE,7) +end +function c511002624.filter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c511002624.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002624.filter,tp,LOCATION_EXTRA,0,2,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_EXTRA) +end +function c511002624.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002624.filter,tp,LOCATION_EXTRA,0,nil) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,2,2,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c511002625.lua b/script/c511002625.lua new file mode 100644 index 00000000..02b9badd --- /dev/null +++ b/script/c511002625.lua @@ -0,0 +1,34 @@ +--EMエンタメイトロングフォーン・ブル +function c511002625.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67111213,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002625.tg) + e1:SetOperation(c511002625.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002625.filter(c) + return c:IsAttackBelow(1000) and c:IsSetCard(0x9f) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511002625.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511002625.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002625.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002625.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511002626.lua b/script/c511002626.lua new file mode 100644 index 00000000..52f12daf --- /dev/null +++ b/script/c511002626.lua @@ -0,0 +1,34 @@ +--BF-フェスティバル +function c511002626.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002626.condition) + e1:SetTarget(c511002626.target) + e1:SetOperation(c511002626.activate) + c:RegisterEffect(e1) +end +function c511002626.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x33) +end +function c511002626.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsControler,1,nil,1-tp) + and Duel.IsExistingMatchingCard(c511002626.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002626.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002627,0x33,0x4011,0,0,1,RACE_WINDBEAST,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c511002626.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511002627,0x33,0x4011,0,0,1,RACE_WINDBEAST,ATTRIBUTE_DARK) then + for i=1,3 do + local token=Duel.CreateToken(tp,511002627) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002631.lua b/script/c511002631.lua new file mode 100644 index 00000000..42976ebd --- /dev/null +++ b/script/c511002631.lua @@ -0,0 +1,31 @@ +--クリッター +function c511002631.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26202165,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002631.condition) + e1:SetTarget(c511002631.target) + e1:SetOperation(c511002631.operation) + c:RegisterEffect(e1) +end +function c511002631.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511002631.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002631.filter(c) + return c:IsAttackBelow(1500) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511002631.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002631.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511002637.lua b/script/c511002637.lua new file mode 100644 index 00000000..e139dc9d --- /dev/null +++ b/script/c511002637.lua @@ -0,0 +1,26 @@ +--Champion's Pulse +function c511002637.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002637.condition) + e1:SetTarget(c511002637.target) + e1:SetOperation(c511002637.activate) + c:RegisterEffect(e1) +end +function c511002637.cfilter(c) + return c:IsSetCard(0x21a) or c:IsCode(82382815) +end +function c511002637.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE + and Duel.IsExistingMatchingCard(c511002637.cfilter,tp,LOCATION_GRAVE,0,2,nil) +end +function c511002637.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,1000) +end +function c511002637.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Recover(1-tp,1000,REASON_EFFECT) + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511002638.lua b/script/c511002638.lua new file mode 100644 index 00000000..55d68b7e --- /dev/null +++ b/script/c511002638.lua @@ -0,0 +1,30 @@ +--Champion's Storm +function c511002638.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511002638.activate) + c:RegisterEffect(e1) +end +function c511002638.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_PRE_BATTLE_DAMAGE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetOperation(c511002638.damop) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetValue(1) + Duel.RegisterEffect(e2,tp) +end +function c511002638.damop(e,tp,eg,ep,ev,re,r,rp) + if tp==ep then + Duel.ChangeBattleDamage(1-ep,ev,false) + end +end diff --git a/script/c511002639.lua b/script/c511002639.lua new file mode 100644 index 00000000..205e2f2f --- /dev/null +++ b/script/c511002639.lua @@ -0,0 +1,41 @@ +--Champion's Ambition +function c511002639.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002639.condition) + e1:SetTarget(c511002639.target) + e1:SetOperation(c511002639.activate) + c:RegisterEffect(e1) +end +function c511002639.cfilter(c) + return c:IsSetCard(0x21a) or c:IsCode(82382815) +end +function c511002639.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002639.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c511002639.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) + and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002639.dfilter(c) + return c:IsDestructable() +end +function c511002639.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002640.lua b/script/c511002640.lua new file mode 100644 index 00000000..74bc9a8b --- /dev/null +++ b/script/c511002640.lua @@ -0,0 +1,58 @@ +--獣神機王バルバロスUr +function c511002640.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,78651105,96938777,true,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c511002640.vala) + c:RegisterEffect(e1) + --pos Change + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c511002640.regop) + c:RegisterEffect(e3) + --attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_EXTRA_ATTACK) + e4:SetValue(9999) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetRange(LOCATION_MZONE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e5:SetCondition(c511002640.dircon) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_ATTACK) + e6:SetCondition(c511002640.atkcon2) + c:RegisterEffect(e6) +end +function c511002640.vala(e,c) + local ca=e:GetHandler() + return ca:GetFlagEffect(511002640)>0 + and (c:GetLevel()>ca:GetLevel()-ca:GetFlagEffect(511002640) or c:IsFacedown()) +end +function c511002640.regop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d then + local i=0 + local lv=d:GetLevel() + while i0 +end +function c511002640.atkcon2(e) + return e:GetHandler():IsDirectAttacked() +end diff --git a/script/c511002641.lua b/script/c511002641.lua new file mode 100644 index 00000000..f4e2a163 --- /dev/null +++ b/script/c511002641.lua @@ -0,0 +1,55 @@ +--神機王ウル +function c511002641.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c511002641.vala) + c:RegisterEffect(e1) + --pos Change + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c511002641.regop) + c:RegisterEffect(e3) + --attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_EXTRA_ATTACK) + e4:SetValue(9999) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetRange(LOCATION_MZONE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e5:SetCondition(c511002641.dircon) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_ATTACK) + e6:SetCondition(c511002641.atkcon2) + c:RegisterEffect(e6) +end +function c511002641.vala(e,c) + local ca=e:GetHandler() + return ca:GetFlagEffect(511002641)>0 + and (c:GetLevel()>ca:GetLevel()-ca:GetFlagEffect(511002641) or c:IsFacedown()) +end +function c511002641.regop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d then + local i=0 + local lv=d:GetLevel() + while i0 +end +function c511002641.atkcon2(e) + return e:GetHandler():IsDirectAttacked() +end diff --git a/script/c511002642.lua b/script/c511002642.lua new file mode 100644 index 00000000..af813417 --- /dev/null +++ b/script/c511002642.lua @@ -0,0 +1,35 @@ +--軍神ガープ +function c511002642.initial_effect(c) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(37955049,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511002642.atcost) + e3:SetOperation(c511002642.atop) + c:RegisterEffect(e3) +end +function c511002642.cfilter(c) + return c:IsRace(RACE_DEVINE) and not c:IsPublic() +end +function c511002642.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002642.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511002642.cfilter,tp,LOCATION_HAND,0,1,63,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + e:SetLabel(g:GetCount()) +end +function c511002642.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(e:GetLabel()*300) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c511002643.lua b/script/c511002643.lua new file mode 100644 index 00000000..e0edd984 --- /dev/null +++ b/script/c511002643.lua @@ -0,0 +1,40 @@ +--Hell Toxic Moth +function c511002643.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(56209279,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511002643.sptg) + e2:SetOperation(c511002643.spop) + c:RegisterEffect(e2) +end +function c511002643.filter(c,e,tp) + return c:IsCode(511002643) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002643.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002643.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,0,0) +end +function c511002643.spop(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 tc=Duel.SelectMatchingCard(tp,c511002643.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp):GetFirst() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0xfe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0xfe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002644.lua b/script/c511002644.lua new file mode 100644 index 00000000..7eb8ac28 --- /dev/null +++ b/script/c511002644.lua @@ -0,0 +1,76 @@ +--地獄蛆 +function c511002644.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(38667773,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c511002644.spcost) + e1:SetTarget(c511002644.sptg) + e1:SetOperation(c511002644.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + if not c511002644.global_check then + c511002644.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + ge1:SetOperation(c511002644.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + Duel.RegisterEffect(ge2,0) + local ge3=ge1:Clone() + ge3:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(ge3,0) + end +end +function c511002644.costfilter(c,e,tp) + return (c:IsCode(36029076) or c:IsSetCard(0x21b)) and c:IsAbleToGraveAsCost() +end +function c511002644.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002644.costfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local cc=Duel.SelectMatchingCard(tp,c511002644.costfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SendtoGrave(cc,REASON_COST) +end +function c511002644.filter(c,e,tp) + return c:GetFlagEffect(511002644)>0 and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002644.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002644.spop(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 tc=Duel.SelectMatchingCard(tp,c511002644.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end +function c511002644.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsType,nil,TYPE_SYNCHRO) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511002644,0,0,0) + tc=g:GetNext() + end +end diff --git a/script/c511002645.lua b/script/c511002645.lua new file mode 100644 index 00000000..5f3db64f --- /dev/null +++ b/script/c511002645.lua @@ -0,0 +1,29 @@ +--Hell Summon +function c511002645.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002645.target) + e1:SetOperation(c511002645.activate) + c:RegisterEffect(e1) +end +function c511002645.filter(c,e,tp) + return (c:IsCode(36029076) or c:IsSetCard(0x21b)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002645.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002645.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002645.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002645.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002645.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002646.lua b/script/c511002646.lua new file mode 100644 index 00000000..50d8a5f4 --- /dev/null +++ b/script/c511002646.lua @@ -0,0 +1,37 @@ +--Hell Vermin Mine +function c511002646.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002646.target) + e1:SetOperation(c511002646.activate) + c:RegisterEffect(e1) +end +function c511002646.filter(c) + return (c:IsCode(36029076) or c:IsSetCard(0x21b)) and c:IsAbleToGrave() +end +function c511002646.desfilter(c) + return c:IsAttackPos() and c:IsDestructable() +end +function c511002646.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002646.filter,tp,LOCATION_HAND,0,1,nil) + and Duel.IsExistingMatchingCard(c511002646.desfilter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002646.desfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002646.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511002646.filter,tp,LOCATION_HAND,0,1,1,nil) + if g1:GetCount()>0 then + Duel.SendtoGrave(g1,REASON_EFFECT) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectMatchingCard(tp,c511002646.desfilter,tp,0,LOCATION_MZONE,1,1,nil) + if g2:GetCount()>0 then + Duel.HintSelection(g2) + Duel.Destroy(g2,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511002647.lua b/script/c511002647.lua new file mode 100644 index 00000000..a206dede --- /dev/null +++ b/script/c511002647.lua @@ -0,0 +1,34 @@ +--Mimic Hell Worm +function c511002647.initial_effect(c) + --change lv + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000761,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002647.tg) + e1:SetOperation(c511002647.op) + c:RegisterEffect(e1) +end +function c511002647.filter(c,lv) + return c:IsFaceup() and c:GetLevel()~=lv +end +function c511002647.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local lv=e:GetHandler():GetLevel() + if chk==0 then return Duel.IsExistingMatchingCard(c511002647.filter,tp,0,LOCATION_MZONE,1,nil,lv) end +end +function c511002647.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local lv=c:GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511002647.filter,tp,0,LOCATION_MZONE,1,1,nil,lv) + local tc=g:GetFirst() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002648.lua b/script/c511002648.lua new file mode 100644 index 00000000..d2ba5fe5 --- /dev/null +++ b/script/c511002648.lua @@ -0,0 +1,55 @@ +--Transcendent Harmony of Duality +function c511002648.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002648.condition) + e1:SetTarget(c511002648.target) + e1:SetOperation(c511002648.activate) + c:RegisterEffect(e1) +end +function c511002648.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,1686814) +end +function c511002648.filter(c) + return c:IsFaceup() and (not c:IsType(TYPE_TUNER) or not c:IsSetCard(0x301)) +end +function c511002648.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002648.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002648.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002648.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002648.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + if not tc:IsType(TYPE_TUNER) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetValue(c511002648.synlimit) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_ADD_SETCODE) + e4:SetValue(0x301) + tc:RegisterEffect(e4) + end +end +function c511002648.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x301) +end diff --git a/script/c511002649.lua b/script/c511002649.lua new file mode 100644 index 00000000..8559456b --- /dev/null +++ b/script/c511002649.lua @@ -0,0 +1,53 @@ +--Enshrined Force of Duality +function c511002649.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c511002649.condition) + e1:SetTarget(c511002649.target) + e1:SetOperation(c511002649.operation) + c:RegisterEffect(e1) +end +function c511002649.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,1686814) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511002649.spfilter(c,e,tp) + return c:GetLevel()==10 and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002649.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511002649.spfilter,tp,LOCATION_EXTRA,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) +end +function c511002649.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511002649.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002650.lua b/script/c511002650.lua new file mode 100644 index 00000000..6df579c9 --- /dev/null +++ b/script/c511002650.lua @@ -0,0 +1,68 @@ +--RR replication +function c511002650.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002650.condition) + e1:SetTarget(c511002650.target) + e1:SetOperation(c511002650.activate) + c:RegisterEffect(e1) +end +function c511002650.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsFaceup() and d:IsControler(tp) and d:IsSetCard(0xba) and d:IsLevelBelow(4) +end +function c511002650.target(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,d:GetOriginalCode(),0xba,d:GetType(),d:GetAttack(),d:GetDefense(), + d:GetLevel(),d:GetRace(),d:GetAttribute()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002650.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttackTarget() + if not tc or not tc:IsRelateToBattle() then return end + local code=tc:GetOriginalCode() + local token=Duel.CreateToken(tp,code) + Duel.SpecialSummonStep(token,0,tp,tp,true,false,tc:GetPosition()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetBaseDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(tc:GetLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + token:RegisterEffect(e5) + local e6=Effect.CreateEffect(e:GetHandler()) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetReset(RESET_EVENT+0x1fe0000) + e6:SetCode(EFFECT_CHANGE_CODE) + e6:SetValue(tc:GetCode()) + token:RegisterEffect(e6) + local e7=e1:Clone() + e7:SetCode(EFFECT_SET_ATTACK_FINAL) + e7:SetValue(tc:GetAttack()) + token:RegisterEffect(e7) + local e8=e1:Clone() + e8:SetCode(EFFECT_SET_DEFENSE_FINAL) + e8:SetValue(tc:GetDefense()) + token:RegisterEffect(e8) + Duel.SpecialSummonComplete() +end diff --git a/script/c511002651.lua b/script/c511002651.lua new file mode 100644 index 00000000..f059c1fc --- /dev/null +++ b/script/c511002651.lua @@ -0,0 +1,83 @@ +--オッドアイズ・ペルソナ・ドラゴン +function c511002651.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --swap + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c511002651.spcon) + e2:SetTarget(c511002651.sptg) + e2:SetOperation(c511002651.spop) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(23204029,0)) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1) + e3:SetTarget(c511002651.distg) + e3:SetOperation(c511002651.disop) + c:RegisterEffect(e3) +end +function c511002651.spcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511002651.pfilter(c) + return c:IsSetCard(0x99) and c:IsType(TYPE_PENDULUM) +end +function c511002651.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002651.pfilter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002651.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.MoveToField(c,tp,tp,LOCATION_MZONE,POS_FACEUP,true)~=0 then + c:SetStatus(STATUS_SPSUMMON_TURN,true) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local tc=Duel.SelectMatchingCard(tp,c511002651.pfilter,tp,LOCATION_MZONE,0,1,1,c):GetFirst() + if tc then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + end +end +function c511002651.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,0,0) +end +function c511002651.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end + end +end diff --git a/script/c511002652.lua b/script/c511002652.lua new file mode 100644 index 00000000..5677282e --- /dev/null +++ b/script/c511002652.lua @@ -0,0 +1,31 @@ +--Frightfur Sanctuary +function c511002652.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002652.cost) + c:RegisterEffect(e1) + --Effect Draw + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_ADD_SETCODE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_FUSION)) + e2:SetValue(0xad) + c:RegisterEffect(e2) +end +function c511002652.cfilter(c) + return c:IsSetCard(0xad) and c:IsAbleToGraveAsCost() +end +function c511002652.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(c511002652.filter,tp,LOCATION_EXTRA,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511002652.cfilter,tp,LOCATION_EXTRA,0,2,2,nil) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) +end diff --git a/script/c511002653.lua b/script/c511002653.lua new file mode 100644 index 00000000..fa1c497a --- /dev/null +++ b/script/c511002653.lua @@ -0,0 +1,43 @@ +--Barrier Ninjitsu Art of Hazy Transfer +function c511002653.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002653.target) + e1:SetOperation(c511002653.activate) + c:RegisterEffect(e1) +end +function c511002653.filter(c,tp) + return c:IsFaceup() and Duel.IsExistingMatchingCard(c511002653.efffilter,tp,0,LOCATION_MZONE,1,c) +end +function c511002653.efffilter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c511002653.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002653.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002653.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002653.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) +end +function c511002653.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511002653.efffilter,tp,0,LOCATION_MZONE,1,1,tc) + local tc2=g:GetFirst() + if tc2 then + Duel.HintSelection(g) + tc:CopyEffect(tc2:GetOriginalCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + if not tc:IsType(TYPE_EFFECT) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_EFFECT) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end + end +end diff --git a/script/c511002654.lua b/script/c511002654.lua new file mode 100644 index 00000000..263cd3d1 --- /dev/null +++ b/script/c511002654.lua @@ -0,0 +1,70 @@ +--Black Feather Hope +function c511002654.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002654.condition) + e1:SetCost(c511002654.cost) + e1:SetOperation(c511002654.activate) + c:RegisterEffect(e1) + --to deck + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetCategory(CATEGORY_TODECK) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_GRAVE) + e2:SetDescription(aux.Stringid(511000818,0)) + e2:SetCondition(c511002654.tdcon) + e2:SetCost(c511002654.tdcost) + e2:SetTarget(c511002654.tdtg) + e2:SetOperation(c511002654.tdop) + c:RegisterEffect(e2) +end +function c511002654.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and ((a:GetControler()==tp and a:IsSetCard(0x33)) or (d:GetControler()==tp and d:IsSetCard(0x33))) +end +function c511002654.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511002654.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a:IsRelateToBattle() or not d:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetOwnerPlayer(tp) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + e1:SetValue(1) + if a:IsControler(tp) then + a:RegisterEffect(e1) + else + d:RegisterEffect(e1) + end +end +function c511002654.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002654.cfilter(c) + return c:IsSetCard(0x33) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c511002654.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002654.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002654.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002654.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c511002654.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoDeck(c,nil,0,REASON_EFFECT) + end +end diff --git a/script/c511002658.lua b/script/c511002658.lua new file mode 100644 index 00000000..fdf746bc --- /dev/null +++ b/script/c511002658.lua @@ -0,0 +1,45 @@ +--Number 10: Dark Illumiknight +function c511002658.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW) + e1:SetDescription(aux.Stringid(11411223,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002658.cost) + e1:SetTarget(c511002658.target) + e1:SetOperation(c511002658.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002658.indes) + c:RegisterEffect(e2) +end +c511002658.xyz_number=10 +function c511002658.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002658.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002658.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()==0 then return end + Duel.SendtoGrave(g,REASON_EFFECT) + if g:GetFirst():IsLocation(LOCATION_GRAVE) then + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c511002658.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002659.lua b/script/c511002659.lua new file mode 100644 index 00000000..a8f52b2b --- /dev/null +++ b/script/c511002659.lua @@ -0,0 +1,50 @@ +--超ちょうカバーカーニバル +function c511002659.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(c511002659.target) + e1:SetOperation(c511002659.activate) + c:RegisterEffect(e1) +end +function c511002659.filter(c,e,tp) + return c:IsCode(41440148) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002659.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chk==0 then return ft>0 and Duel.IsExistingMatchingCard(c511002659.filter,tp,0x13,0,1,nil,e,tp) + and (ft==1 or Duel.IsPlayerCanSpecialSummonMonster(tp,18027139,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH)) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002659.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<1 then return end + local g=Duel.SelectMatchingCard(tp,c511002659.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + if ft>1 and Duel.IsPlayerCanSpecialSummonMonster(tp,18027139,0,0x4011,0,0,1,RACE_BEAST,ATTRIBUTE_EARTH) then + Duel.BreakEffect() + ft=ft-1 + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + for i=1,ft do + local token=Duel.CreateToken(tp,18027139) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c511002659.atlimit) + e1:SetReset(RESET_EVENT+0x3fe0000) + token:RegisterEffect(e1) + end + Duel.SpecialSummonComplete() + end + end +end +function c511002659.atlimit(e,c) + return not c:IsCode(18027139) +end \ No newline at end of file diff --git a/script/c511002660.lua b/script/c511002660.lua new file mode 100644 index 00000000..904a2f05 --- /dev/null +++ b/script/c511002660.lua @@ -0,0 +1,49 @@ +--Shock Draw +function c511002660.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c511002660.target) + e1:SetOperation(c511002660.activate) + e1:SetHintTiming(0,TIMING_END_PHASE) + c:RegisterEffect(e1) + if not c511002660.global_check then + c511002660.global_check=true + c511002660[0]=0 + c511002660[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE) + ge1:SetOperation(c511002660.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002660.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002660.checkop(e,tp,eg,ep,ev,re,r,rp) + c511002660[ep]=c511002660[ep]+ev +end +function c511002660.clear(e,tp,eg,ep,ev,re,r,rp) + c511002660[0]=0 + c511002660[1]=0 +end +function c511002660.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=c511002660[tp] + local dct=math.floor(ct/1000) + if chk==0 then return dct>0 and Duel.IsPlayerCanDraw(tp,dct) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(dct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,dct) +end +function c511002660.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=c511002660[tp] + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Draw(p,math.floor(ct/1000),REASON_EFFECT) +end diff --git a/script/c511002661.lua b/script/c511002661.lua new file mode 100644 index 00000000..c10602ea --- /dev/null +++ b/script/c511002661.lua @@ -0,0 +1,41 @@ +--Turf +function c511002661.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002661.condition) + e1:SetCost(c511002661.cost) + e1:SetTarget(c511002661.target) + e1:SetOperation(c511002661.activate) + c:RegisterEffect(e1) +end +function c511002661.cfilter(c,tp) + return c:GetSummonPlayer()==tp +end +function c511002661.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002661.cfilter,1,nil,1-tp) +end +function c511002661.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil) + local g=Duel.GetMatchingGroup(Card.IsReleasable,tp,LOCATION_MZONE,0,nil) + if chk==0 then return ct>0 and g:GetCount()==ct end + Duel.Release(g,REASON_COST) +end +function c511002661.spfilter(c,e,sp) + return c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) +end +function c511002661.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511002661.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511002661.activate(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,c511002661.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002662.lua b/script/c511002662.lua new file mode 100644 index 00000000..eb4dbeb5 --- /dev/null +++ b/script/c511002662.lua @@ -0,0 +1,82 @@ +--Junk Shield +function c511002662.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002662.condition) + e1:SetTarget(c511002662.target) + e1:SetOperation(c511002662.activate) + c:RegisterEffect(e1) +end +function c511002662.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if d:IsControler(1-tp) then a,d=d,a end + if not d or d:IsControler(1-tp) or d:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + e:SetLabelObject(d) + if a:IsPosition(POS_FACEUP_DEFENSE) then + if not a:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if a:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if a:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if d:IsAttackPos() then + if a:GetDefense()==d:GetAttack() and not d:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return a:GetDefense()~=0 + else + return a:GetDefense()>=d:GetAttack() + end + else + return a:GetDefense()>d:GetDefense() + end + elseif a:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if d:IsAttackPos() then + if a:GetAttack()==d:GetAttack() and not a:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return a:GetAttack()~=0 + else + return a:GetAttack()>=d:GetAttack() + end + else + return a:GetAttack()>d:GetDefense() + end + end + end + else + if d:IsAttackPos() then + if a:GetAttack()==d:GetAttack() and not a:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return a:GetAttack()~=0 + else + return a:GetAttack()>=d:GetAttack() + end + else + return a:GetAttack()>d:GetDefense() + end + end +end +function c511002662.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc end + Duel.SetTargetCard(tc) +end +function c511002662.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002662.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + end +end +function c511002662.damop(e,tp,eg,ep,ev,re,r,rp) + if tp==ep then + Duel.ChangeBattleDamage(tp,0) + Duel.Damage(1-tp,ev,REASON_EFFECT) + end +end diff --git a/script/c511002663.lua b/script/c511002663.lua new file mode 100644 index 00000000..c30d79e7 --- /dev/null +++ b/script/c511002663.lua @@ -0,0 +1,19 @@ +--Blade Barrier +function c511002663.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511002663.target) + e1:SetOperation(c511002663.activate) + c:RegisterEffect(e1) +end +function c511002663.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511002663.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() + Duel.Damage(1-tp,800,REASON_EFFECT) +end diff --git a/script/c511002664.lua b/script/c511002664.lua new file mode 100644 index 00000000..1bb7ec87 --- /dev/null +++ b/script/c511002664.lua @@ -0,0 +1,25 @@ +--BF-白夜のグラディウス +function c511002664.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002664.spcon) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511002664.filter(c) + return c:IsFaceup() and c:IsSetCard(0x33) +end +function c511002664.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c511002664.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002665.lua b/script/c511002665.lua new file mode 100644 index 00000000..d8e4f42c --- /dev/null +++ b/script/c511002665.lua @@ -0,0 +1,30 @@ +--BF-残夜のクリス +function c511002665.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002665.spcon) + c:RegisterEffect(e1) + --spell/trap indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(c511002665.indval) + c:RegisterEffect(e3) +end +function c511002665.filter(c) + return c:IsFaceup() and c:IsSetCard(0x33) +end +function c511002665.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c511002665.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c511002665.indval(e,re,rp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c511002666.lua b/script/c511002666.lua new file mode 100644 index 00000000..94d6f2ec --- /dev/null +++ b/script/c511002666.lua @@ -0,0 +1,30 @@ +--Spin Mosquito +function c511002666.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41077745,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002666.datcon) + e1:SetCost(c511002666.datcost) + e1:SetOperation(c511002666.datop) + c:RegisterEffect(e1) +end +function c511002666.datcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 and not e:GetHandler():IsHasEffect(EFFECT_DIRECT_ATTACK) +end +function c511002666.datcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c511002666.datop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002667.lua b/script/c511002667.lua new file mode 100644 index 00000000..47499cab --- /dev/null +++ b/script/c511002667.lua @@ -0,0 +1,51 @@ +--Junk Cross +function c511002667.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511002667.condition) + e1:SetOperation(c511002667.activate) + c:RegisterEffect(e1) +end +function c511002667.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and (a:IsSetCard(0x43) or d:IsSetCard(0x43)) and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c511002667.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a or not a:IsRelateToBattle() or a:IsFacedown() or not d or not d:IsRelateToBattle() or d:IsFacedown() then return end + local atk=a:GetAttack() + local def=a:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e2) + local atk2=d:GetAttack() + local def2=d:GetDefense() + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(def2) + e3:SetReset(RESET_EVENT+0x1fe0000) + d:RegisterEffect(e3) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + e4:SetValue(atk2) + e4:SetReset(RESET_EVENT+0x1fe0000) + d:RegisterEffect(e4) +end diff --git a/script/c511002668.lua b/script/c511002668.lua new file mode 100644 index 00000000..9881a868 --- /dev/null +++ b/script/c511002668.lua @@ -0,0 +1,31 @@ +--Insect Luring Light +function c511002668.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002668.target) + e1:SetOperation(c511002668.activate) + c:RegisterEffect(e1) +end +function c511002668.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDefensePos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511002668.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and not tc:IsAttackPos() then + Duel.ChangePosition(tc,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002669.lua b/script/c511002669.lua new file mode 100644 index 00000000..a645d1ab --- /dev/null +++ b/script/c511002669.lua @@ -0,0 +1,38 @@ +-- Pride of the Warrior +function c511002669.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c511002669.sptg) + e1:SetOperation(c511002669.spop) + c:RegisterEffect(e1) +end +function c511002669.filter(c,e,tp) + return bit.band(c:GetReason(),REASON_BATTLE)~=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and c:IsRace(RACE_WARRIOR) +end +function c511002669.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002669.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002669.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002669.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002669.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(1) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c511002670.lua b/script/c511002670.lua new file mode 100644 index 00000000..4c20768f --- /dev/null +++ b/script/c511002670.lua @@ -0,0 +1,35 @@ +--デスサイズ・キラー +function c511002670.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76614340,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002670.atkcon) + e1:SetCost(c511002670.atkcost) + e1:SetOperation(c511002670.atkop) + c:RegisterEffect(e1) +end +function c511002670.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002670.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,e:GetHandler()) end + local rg=Duel.SelectReleaseGroup(tp,nil,1,1,e:GetHandler()) + e:SetLabel(rg:GetFirst():GetAttack()) + Duel.Release(rg,REASON_COST) +end +function c511002670.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end diff --git a/script/c511002672.lua b/script/c511002672.lua new file mode 100644 index 00000000..01e80943 --- /dev/null +++ b/script/c511002672.lua @@ -0,0 +1,25 @@ +--Corn Parade +function c511002672.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --negate attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22991179,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c511002672.con) + e2:SetOperation(c511002672.op) + c:RegisterEffect(e2) +end +function c511002672.con(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsFaceup() and d:IsRace(RACE_PLANT) +end +function c511002672.op(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511002673.lua b/script/c511002673.lua new file mode 100644 index 00000000..b306a428 --- /dev/null +++ b/script/c511002673.lua @@ -0,0 +1,9 @@ +--EMディスカバー・ヒッポ +function c511002673.initial_effect(c) + --double tribute + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DOUBLE_TRIBUTE) + e1:SetValue(1) + c:RegisterEffect(e1) +end diff --git a/script/c511002674.lua b/script/c511002674.lua new file mode 100644 index 00000000..bffc9102 --- /dev/null +++ b/script/c511002674.lua @@ -0,0 +1,30 @@ +--Dark Sentinel +function c511002674.initial_effect(c) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetDescription(aux.Stringid(75367227,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002674.destg) + e2:SetOperation(c511002674.desop) + c:RegisterEffect(e2) +end +function c511002674.desfilter(c) + return c:IsFacedown() and c:IsDestructable() +end +function c511002674.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c511002674.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002674.desfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511002674.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002674.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFacedown() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002675.lua b/script/c511002675.lua new file mode 100644 index 00000000..dc3326ba --- /dev/null +++ b/script/c511002675.lua @@ -0,0 +1,27 @@ +--Memories of Hope +function c511002675.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002675.target) + e1:SetOperation(c511002675.activate) + c:RegisterEffect(e1) +end +function c511002675.filter(c) + return c:IsFaceup() and c:IsSetCard(0x48) +end +function c511002675.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c511002675.filter,tp,LOCATION_MZONE,0,nil) + if chk==0 then return ct>0 and Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511002675.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetMatchingGroupCount(c511002675.filter,tp,LOCATION_MZONE,0,nil) + Duel.Draw(p,ct,REASON_EFFECT) +end diff --git a/script/c511002676.lua b/script/c511002676.lua new file mode 100644 index 00000000..716a3d42 --- /dev/null +++ b/script/c511002676.lua @@ -0,0 +1,20 @@ +--RR-シンギング・レイニアス +function c511002676.initial_effect(c) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c511002676.spcon) + c:RegisterEffect(e1) +end +function c511002676.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511002676.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002676.cfilter,tp,LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002677.lua b/script/c511002677.lua new file mode 100644 index 00000000..11479171 --- /dev/null +++ b/script/c511002677.lua @@ -0,0 +1,64 @@ +--Guts Master Heat +function c511002677.initial_effect(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002677.sptg) + e2:SetOperation(c511002677.spop) + c:RegisterEffect(e2) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002677.descon) + e1:SetTarget(c511002677.destg) + e1:SetOperation(c511002677.desop) + c:RegisterEffect(e1) +end +function c511002677.spfilter(c,e,tp) + return c:IsSetCard(0x21c) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002677.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002677.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002677.spop(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,c511002677.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 c511002677.descon(e,tp,eg,ep,ev,re,r,rp) + local bt=eg:GetFirst() + return e:GetHandler()~=bt and bt:IsFaceup() and bt:IsSetCard(0x21c) and bt:IsAttackPos() and bt:IsControler(tp) +end +function c511002677.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c511002677.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_BATTLED) + e5:SetCondition(c511002677.descon2) + e5:SetOperation(c511002677.desop2) + tc:RegisterEffect(e5) +end +function c511002677.descon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsRelateToBattle() +end +function c511002677.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511002677) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511002678.lua b/script/c511002678.lua new file mode 100644 index 00000000..3cffd322 --- /dev/null +++ b/script/c511002678.lua @@ -0,0 +1,44 @@ +--Guts Master Fire +function c511002678.initial_effect(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002678.sptg) + e2:SetOperation(c511002678.spop) + c:RegisterEffect(e2) + --Protection + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511002678.indtg) + e2:SetValue(c511002678.valcon) + e2:SetCountLimit(1) + c:RegisterEffect(e2) +end +function c511002678.spfilter(c,e,tp) + return c:IsSetCard(0x21c) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002678.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002678.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002678.spop(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,c511002678.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 c511002678.indtg(e,c) + return c:IsAttackPos() and c~=e:GetHandler() and c:IsSetCard(0x21c) +end +function c511002678.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c511002679.lua b/script/c511002679.lua new file mode 100644 index 00000000..55efce3f --- /dev/null +++ b/script/c511002679.lua @@ -0,0 +1,22 @@ +--ポイズンマミー +function c511002679.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(43716289,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c511002679.target) + e1:SetOperation(c511002679.operation) + c:RegisterEffect(e1) +end +function c511002679.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c511002679.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002680.lua b/script/c511002680.lua new file mode 100644 index 00000000..6a2b879a --- /dev/null +++ b/script/c511002680.lua @@ -0,0 +1,25 @@ +--ポイズンマミー +function c511002680.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(43716289,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c511002680.target) + e1:SetOperation(c511002680.operation) + c:RegisterEffect(e1) +end +function c511002680.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDefensePos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511002680.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and not tc:IsAttackPos() then + Duel.ChangePosition(tc,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511002681.lua b/script/c511002681.lua new file mode 100644 index 00000000..b56a56ed --- /dev/null +++ b/script/c511002681.lua @@ -0,0 +1,93 @@ +--Performage Magic Tactician +function c511002681.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(63251695,0)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c511002681.discon) + e2:SetCost(c511002681.discost) + e2:SetTarget(c511002681.distg) + e2:SetOperation(c511002681.disop) + c:RegisterEffect(e2) + --replace + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(21501505,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002681.repcon) + e1:SetCost(c511002681.repcost) + e1:SetTarget(c511002681.reptg) + e1:SetOperation(c511002681.repop) + c:RegisterEffect(e1) +end +function c511002681.tgfilter(c,tp) + return c:IsLocation(LOCATION_SZONE) and c:IsControler(tp) and c:GetSequence()<5 +end +function c511002681.discon(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsExists(c511002681.tgfilter,1,nil,tp) and Duel.IsChainDisablable(ev) +end +function c511002681.discost(e,tp,eg,ep,ev,re,r,rp,chk) + local lc=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local rc=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + if chk==0 then return (not lc or lc:IsDestructable()) and (not rc or rc:IsDestructable()) end + local g=Group.FromCards(lc,rc) + Duel.Destroy(g,REASON_COST) +end +function c511002681.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511002681.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end +function c511002681.repcon(e,tp,eg,ep,ev,re,r,rp) + if e==re or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return tc:IsOnField() and tc:IsLocation(LOCATION_MZONE) +end +function c511002681.cfilter(c,tp,re,rp,tf,ceg,cep,cev,cre,cr,crp,tc) + return c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c511002681.filter,tp,LOCATION_MZONE,0,1,c,re,rp,tf,ceg,cep,cev,cre,cr,crp,tc) +end +function c511002681.filter(c,re,rp,tf,ceg,cep,cev,cre,cr,crp,tc) + return tf(re,rp,ceg,cep,cev,cre,cr,crp,0,c) and c~=tc +end +function c511002681.repcost(e,tp,eg,ep,ev,re,r,rp,chk) + local tf=re:GetTarget() + local c=e:GetHandler() + local tc=e:GetLabelObject() + local res,ceg,cep,cev,cre,cr,crp=Duel.CheckEvent(re:GetCode(),true) + if chk==0 then return Duel.IsExistingMatchingCard(c511002681.cfilter,tp,LOCATION_MZONE,0,1,nil,tp,re,rp,tf,ceg,cep,cev,cre,cr,crp,tc) + and c:IsAbleToGraveAsCost() end + local g=Duel.SelectMatchingCard(tp,c511002681.cfilter,tp,LOCATION_MZONE,0,1,1,nil,tp,re,rp,tf,ceg,cep,cev,cre,cr,crp,tc) + g:AddCard(c) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002681.reptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tf=re:GetTarget() + local res,ceg,cep,cev,cre,cr,crp=Duel.CheckEvent(re:GetCode(),true) + local tc=e:GetLabelObject() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002681.filter(chkc,re,rp,tf,ceg,cep,cev,cre,cr,crp) end + if chk==0 then return Duel.IsExistingTarget(c511002681.filter,tp,LOCATION_MZONE,0,1,tc,re,rp,tf,ceg,cep,cev,cre,cr,crp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002681.filter,tp,LOCATION_MZONE,0,1,1,tc,re,rp,tf,ceg,cep,cev,cre,cr,crp) + e:SetLabelObject(nil) +end +function c511002681.repop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangeTargetCard(ev,Group.FromCards(tc)) + end +end diff --git a/script/c511002682.lua b/script/c511002682.lua new file mode 100644 index 00000000..425c77ee --- /dev/null +++ b/script/c511002682.lua @@ -0,0 +1,38 @@ +--Paparazzi Pest +function c511002682.initial_effect(c) + --lv up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81759748,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002682.cost) + e1:SetTarget(c511002682.target) + e1:SetOperation(c511002682.operation) + c:RegisterEffect(e1) +end +function c511002682.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511002682.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511002682.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002682.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002682.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511002682.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002682.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002683.lua b/script/c511002683.lua new file mode 100644 index 00000000..de220bf8 --- /dev/null +++ b/script/c511002683.lua @@ -0,0 +1,25 @@ +--Scandal Snapper +function c511002683.initial_effect(c) + --lvup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(19012345,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511002683.condition) + e1:SetOperation(c511002683.operation) + c:RegisterEffect(e1) +end +function c511002683.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and e:GetHandler():GetLevel()<12 +end +function c511002683.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) +end diff --git a/script/c511002684.lua b/script/c511002684.lua new file mode 100644 index 00000000..3165d344 --- /dev/null +++ b/script/c511002684.lua @@ -0,0 +1,41 @@ +--Telescopic Lens +function c511002684.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(c511002684.target) + e1:SetOperation(c511002684.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511002684.value) + c:RegisterEffect(e2) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511002684.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 c511002684.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002684.value(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)*400 +end diff --git a/script/c511002685.lua b/script/c511002685.lua new file mode 100644 index 00000000..185cfa16 --- /dev/null +++ b/script/c511002685.lua @@ -0,0 +1,29 @@ +--Ninjitsu Art of Mosquito Marching +function c511002685.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002685.target) + e1:SetOperation(c511002685.activate) + c:RegisterEffect(e1) +end +function c511002685.filter(c,e,tp) + return (c:IsCode(33695750) or c:IsCode(50074522) or c:IsCode(17285476) or c:IsSetCard(0x21d)) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002685.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511002685.filter,tp,LOCATION_HAND,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c511002685.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511002685.filter,tp,LOCATION_HAND,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002686.lua b/script/c511002686.lua new file mode 100644 index 00000000..270bf742 --- /dev/null +++ b/script/c511002686.lua @@ -0,0 +1,27 @@ +--Road Roller +function c511002686.initial_effect(c) + --pos + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59797187,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c511002686.condition) + e1:SetTarget(c511002686.target) + e1:SetOperation(c511002686.operation) + c:RegisterEffect(e1) +end +function c511002686.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==e:GetHandler() +end +function c511002686.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=e:GetHandler():GetBattleTarget() + if chk==0 then return tg and tg:IsRelateToBattle() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,tg,1,0,0) +end +function c511002686.operation(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + if bc and bc:IsRelateToBattle() and bc:IsFaceup() then + Duel.ChangePosition(bc,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c511002687.lua b/script/c511002687.lua new file mode 100644 index 00000000..9619e414 --- /dev/null +++ b/script/c511002687.lua @@ -0,0 +1,25 @@ +--Strong Shovel Excavator +function c511002687.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4732017,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002687.condition) + e1:SetOperation(c511002687.operation) + c:RegisterEffect(e1) +end +function c511002687.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_GRAVE +end +function c511002687.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + c:RegisterEffect(e1) +end diff --git a/script/c511002688.lua b/script/c511002688.lua new file mode 100644 index 00000000..d28b2223 --- /dev/null +++ b/script/c511002688.lua @@ -0,0 +1,13 @@ +--Liberated Rear Warrior +function c511002688.initial_effect(c) + --avoid battle damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_WARRIOR)) + e1:SetValue(1) + c:RegisterEffect(e1) +end diff --git a/script/c511002689.lua b/script/c511002689.lua new file mode 100644 index 00000000..809c5c42 --- /dev/null +++ b/script/c511002689.lua @@ -0,0 +1,15 @@ +--Influence Dragon +function c511002689.initial_effect(c) + -- + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SYNCHRO_CHECK) + e2:SetValue(c511002689.syncheck) + c:RegisterEffect(e2) +end +function c511002689.syncheck(e,c) + if c:IsControler(e:GetHandlerPlayer()) then + c:AssumeProperty(ASSUME_RACE,RACE_DRAGON) + end +end diff --git a/script/c511002690.lua b/script/c511002690.lua new file mode 100644 index 00000000..cc07adba --- /dev/null +++ b/script/c511002690.lua @@ -0,0 +1,77 @@ +--Combat Wheel +function c511002690.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --adup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(38180759,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511002690.atkcon) + e1:SetCost(c511002690.atkcost) + e1:SetTarget(c511002690.atktg) + e1:SetOperation(c511002690.atkop) + c:RegisterEffect(e1) + --target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetTarget(c511002690.tglimit) + e2:SetValue(1) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c511002690.descon) + e3:SetOperation(c511002690.desop) + c:RegisterEffect(e3) +end +function c511002690.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and ph>=0x08 and ph<=0x20 + and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c511002690.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c511002690.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,e:GetHandler()) end +end +function c511002690.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,c) + local atk=g:GetSum(Card.GetAttack) + if atk>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk/2) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end + e:GetHandler():RegisterFlagEffect(511002690,RESET_PHASE+PHASE_END,0,1) + end +end +function c511002690.tglimit(e,c) + return c~=e:GetHandler() +end +function c511002690.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511002690)~=0 +end +function c511002690.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511002690) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511002691.lua b/script/c511002691.lua new file mode 100644 index 00000000..50cdc603 --- /dev/null +++ b/script/c511002691.lua @@ -0,0 +1,33 @@ +--Fuse Ray Blaster +function c511002691.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48964966,1)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511002691.damcon) + e1:SetTarget(c511002691.damtg) + e1:SetOperation(c511002691.damop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002691.damcon(e,tp,eg,ep,ev,re,r,rp) + return not eg:IsContains(e:GetHandler()) and eg:FilterCount(Card.IsCode,nil,511002691)>0 and e:GetHandler():IsAttackPos() +end +function c511002691.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511002691.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002692.lua b/script/c511002692.lua new file mode 100644 index 00000000..ebe5f4c8 --- /dev/null +++ b/script/c511002692.lua @@ -0,0 +1,24 @@ +--Healing Wind +function c511002692.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002692.target) + e1:SetOperation(c511002692.activate) + c:RegisterEffect(e1) +end +function c511002692.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)>0 end + local rec=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)*200 + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(rec) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) +end +function c511002692.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local rec=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)*200 + Duel.Recover(p,rec,REASON_EFFECT) +end diff --git a/script/c511002693.lua b/script/c511002693.lua new file mode 100644 index 00000000..2ad401df --- /dev/null +++ b/script/c511002693.lua @@ -0,0 +1,26 @@ +--Bubble Breeder +function c511002693.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002693.spcon) + e1:SetOperation(c511002693.spop) + c:RegisterEffect(e1) +end +function c511002693.cfilter(c) + return c:IsCode(511002693) and c:IsAbleToGraveAsCost() +end +function c511002693.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c511002693.cfilter,tp,LOCATION_HAND,0,1,c) +end +function c511002693.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002693.cfilter,tp,LOCATION_HAND,0,1,1,c) + Duel.SendtoGrave(g,REASON_COST) +end diff --git a/script/c511002694.lua b/script/c511002694.lua new file mode 100644 index 00000000..c6b77e4e --- /dev/null +++ b/script/c511002694.lua @@ -0,0 +1,27 @@ +--Enigma the Creator +function c511002694.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(31986288,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511002694.condition) + e1:SetTarget(c511002694.target) + e1:SetOperation(c511002694.operation) + c:RegisterEffect(e1) +end +function c511002694.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) +end +function c511002694.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002694.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511002695,0,0x4011,1200,1200,4,RACE_WARRIOR,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,511002695) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511002696.lua b/script/c511002696.lua new file mode 100644 index 00000000..2005bc1e --- /dev/null +++ b/script/c511002696.lua @@ -0,0 +1,20 @@ +--Buzzbuzz Seven +function c511002696.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002696.spcon) + c:RegisterEffect(e1) +end +function c511002696.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511002696.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002696.cfilter,tp,0,LOCATION_MZONE,1,nil) +end diff --git a/script/c511002697.lua b/script/c511002697.lua new file mode 100644 index 00000000..dea0f8aa --- /dev/null +++ b/script/c511002697.lua @@ -0,0 +1,56 @@ +--Tristan, Knight of Tragedy +function c511002697.initial_effect(c) + --effect gain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c511002697.efcon) + e1:SetOperation(c511002697.efop) + c:RegisterEffect(e1) +end +function c511002697.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c511002697.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(3606728,1)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002697.atkcon) + e1:SetTarget(c511002697.atktg) + e1:SetOperation(c511002697.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c511002697.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c511002697.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511002697.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002698.lua b/script/c511002698.lua new file mode 100644 index 00000000..25db73f8 --- /dev/null +++ b/script/c511002698.lua @@ -0,0 +1,65 @@ +--Brilliant Shrine Art +function c511002698.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002698.condition) + e1:SetTarget(c511002698.target) + c:RegisterEffect(e1) + --change target + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000136,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002698.atkcon) + e2:SetTarget(c511002698.atktg) + e2:SetOperation(c511002698.atkop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511002698.descon) + e3:SetOperation(c511002698.desop) + c:RegisterEffect(e3) +end +function c511002698.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x21) +end +function c511002698.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002698.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002698.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local a=Duel.GetAttacker() + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and c511002698.atkcon(e,tp,Group.FromCards(a),ep,ev,re,r,rp) + and c511002698.atktg(e,tp,Group.FromCards(a),ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(61965407,1)) then + e:SetOperation(c511002698.atkop) + c511002698.atktg(e,tp,Group.FromCards(a),ep,ev,re,r,rp,1) + else + e:SetOperation(nil) + end +end +function c511002698.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002698.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002698.cfilter,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end +end +function c511002698.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511002698.cfilter,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + if g:GetCount()>0 then + Duel.ChangeAttackTarget(g:GetFirst()) + end +end +function c511002698.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsSetCard,1,nil,0x21) +end +function c511002698.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511002699.lua b/script/c511002699.lua new file mode 100644 index 00000000..2ab35c53 --- /dev/null +++ b/script/c511002699.lua @@ -0,0 +1,32 @@ +--Damage Eraser +function c511002699.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002699.condition) + e1:SetOperation(c511002699.operation) + c:RegisterEffect(e1) +end +function c511002699.condition(e,tp,eg,ep,ev,re,r,rp) + if rp==tp then return false end + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c511002699.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_REVERSE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511002699.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002699.refcon(e,re,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c511002700.lua b/script/c511002700.lua new file mode 100644 index 00000000..983ff846 --- /dev/null +++ b/script/c511002700.lua @@ -0,0 +1,58 @@ +--Sand Doodlebug +function c511002700.initial_effect(c) + --negate attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80538728,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002700.atcon) + e1:SetOperation(c511002700.atop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(96470883,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002700.destg) + e2:SetOperation(c511002700.desop) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e3) +end +function c511002700.envfilter(c) + return c:IsFaceup() and c:IsCode(23424603) +end +function c511002700.atcon(e,tp,eg,ep,ev,re,r,rp) + return (Duel.IsEnvironment(23424603) or Duel.IsExistingMatchingCard(c511002700.envfilter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)) + and Duel.GetAttacker():IsControler(1-tp) +end +function c511002700.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c511002700.filter(c) + return c:IsFaceup() and c:IsDestructable() and c:IsLevelBelow(3) +end +function c511002700.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511002700.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tg=g:GetMinGroup(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) + end +end +function c511002700.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002700.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002701.lua b/script/c511002701.lua new file mode 100644 index 00000000..b3962c6e --- /dev/null +++ b/script/c511002701.lua @@ -0,0 +1,32 @@ +--マジック・プランター +function c511002701.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002701.cost) + e1:SetTarget(c511002701.target) + e1:SetOperation(c511002701.activate) + c:RegisterEffect(e1) +end +function c511002701.filter(c) + return c:IsFaceup() and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:IsAbleToGraveAsCost() +end +function c511002701.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002701.filter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002701.filter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002701.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511002701.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002702.lua b/script/c511002702.lua new file mode 100644 index 00000000..ad21c2af --- /dev/null +++ b/script/c511002702.lua @@ -0,0 +1,80 @@ +--オッドアイズ・ファントム・ドラゴン +function c511002702.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002702.regcon) + e1:SetOperation(c511002702.regop) + c:RegisterEffect(e1) + -- damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(91711547,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511002702.damcon) + e2:SetTarget(c511002702.damtg) + e2:SetOperation(c511002702.damop) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLE_START) + e3:SetRange(LOCATION_PZONE) + e3:SetOperation(c511002702.atkop) + c:RegisterEffect(e3) +end +function c511002702.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c511002702.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511002702,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002702.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511002702)>0 and ep~=tp +end +function c511002702.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511002702.damop(e,tp,eg,ep,ev,re,r,rp) + local atk=0 + local rp1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local rp2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + if rp1 then + atk=atk+rp1:GetAttack() + end + if rp2 then + atk=atk+rp2:GetAttack() + end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,atk,REASON_EFFECT) +end +function c511002702.atkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + if pc==c then pc=Duel.GetFieldCard(tp,LOCATION_SZONE,7) end + if not pc or not pc:IsSetCard(0x99) or not a or not d then return end + local atk=pc:GetAttack() + if atk<=0 then return end + local g=Group.FromCards(a,d) + if Duel.SelectYesNo(tp,aux.Stringid(511002702,0)) then + Duel.Hint(HINT_CARD,0,511002702) + local sg=g:FilterSelect(tp,Card.IsFaceup,1,1,nil) + local tc=sg:GetFirst() + Duel.HintSelection(sg) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002703.lua b/script/c511002703.lua new file mode 100644 index 00000000..1b62ee5e --- /dev/null +++ b/script/c511002703.lua @@ -0,0 +1,42 @@ +--Carrier Sentinel +function c511002703.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(27004302,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002703.target) + e1:SetOperation(c511002703.operation) + c:RegisterEffect(e1) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_SPSUMMON_PROC) + e4:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e4:SetRange(LOCATION_HAND) + e4:SetCondition(c511002703.spcon) + c:RegisterEffect(e4) +end +function c511002703.filter(c) + return c:IsRace(RACE_BEASTWARRIOR) and c:IsAbleToHand() +end +function c511002703.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002703.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c511002703.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002703.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c511002703.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==1 +end diff --git a/script/c511002704.lua b/script/c511002704.lua new file mode 100644 index 00000000..270583de --- /dev/null +++ b/script/c511002704.lua @@ -0,0 +1,72 @@ +--Beastborg Wolf Kampfer +function c511002704.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511002704.fusfilter1,c511002704.fusfilter2,true) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76539047,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511002704.damcon) + e1:SetTarget(c511002704.damtg) + e1:SetOperation(c511002704.damop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(35952884,1)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c511002704.sumcon) + e2:SetTarget(c511002704.sumtg) + e2:SetOperation(c511002704.sumop) + c:RegisterEffect(e2) +end +function c511002704.fusfilter1(c) + return c:IsLevelBelow(4) and c:IsRace(RACE_BEASTWARRIOR) +end +function c511002704.fusfilter2(c) + return c:IsLevelBelow(4) and c:IsRace(RACE_MACHINE) +end +function c511002704.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511002704.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511002704.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002704.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end +function c511002704.mgfilter(c,e,tp,fusc) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511002704.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local mg=e:GetHandler():GetMaterial() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if chk==0 then return mg:GetCount()>0 and ft>=mg:GetCount() + and not mg:IsExists(c511002704.mgfilter,1,nil,e,tp,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,mg,mg:GetCount(),tp,0) +end +function c511002704.sumop(e,tp,eg,ep,ev,re,r,rp) + local mg=e:GetHandler():GetMaterial() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if mg:GetCount()>ft or mg:IsExists(c511002704.mgfilter,1,nil,e,tp,e:GetHandler()) then return end + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511002705.lua b/script/c511002705.lua new file mode 100644 index 00000000..c5c2d3cb --- /dev/null +++ b/script/c511002705.lua @@ -0,0 +1,126 @@ +--Beast-borg Medal of the Iron Chain +function c511002705.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002705.condition1) + c:RegisterEffect(e1) + --Activate (sp summon) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCondition(c511002705.condition2) + e2:SetTarget(c511002705.target) + c:RegisterEffect(e2) + --trigger + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_NO_TURN_RESET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c511002705.sptg) + e3:SetOperation(c511002705.spop) + c:RegisterEffect(e3) + --atk change + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(95100575,1)) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_DAMAGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511002705.con) + e4:SetOperation(c511002705.op) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_SELF_DESTROY) + e5:SetCondition(c511002705.descon) + c:RegisterEffect(e5) +end +function c511002705.condition1(e,tp,eg,ep,ev,re,r,rp) + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) + return not res or not teg:IsExists(c511002705.tgfilter,1,nil,nil,tp) +end +function c511002705.condition2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002705.tgfilter,1,nil,nil,tp) +end +function c511002705.tgfilter(c,e,tp) + return c:IsControler(1-tp) and (not e or c:IsRelateToEffect(e)) +end +function c511002705.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c511002705.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetCategory(CATEGORY_POSITION) + e:SetOperation(c511002705.spop) + c511002705.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c511002705.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511002705.tgfilter,1,nil,nil,tp) + and e:GetHandler():GetFlagEffect(511002705)==0 end + e:GetHandler():RegisterFlagEffect(511002705,RESET_EVENT+0x1fe0000,0,1) + local g=eg:Filter(c511002705.tgfilter,nil,nil,tp) + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511002705.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(c511002705.tgfilter,nil,e,tp) + local tc=g:GetFirst() + while tc do + 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_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511002705.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + tc:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + tc:RegisterEffect(e3,true) + tc=g:GetNext() + end +end +function c511002705.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511002705.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x20c) +end +function c511002705.descon(e) + return not Duel.IsExistingMatchingCard(c511002705.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511002705.con(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and ev>0 +end +function c511002705.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-ev) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002706.lua b/script/c511002706.lua new file mode 100644 index 00000000..b3836356 --- /dev/null +++ b/script/c511002706.lua @@ -0,0 +1,102 @@ +--サンダー・ユニコーン +function c511002706.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(77506119,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002706.atkcost) + e1:SetTarget(c511002706.atktg) + e1:SetOperation(c511002706.atkop) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(12275533,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,0x1e0) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c511002706.spcon) + e2:SetTarget(c511002706.sptg) + e2:SetOperation(c511002706.spop) + c:RegisterEffect(e2) + --battle destroyed + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetCondition(c511002706.regcon) + e3:SetOperation(c511002706.regop) + c:RegisterEffect(e3) +end +function c511002706.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsAbleToEnterBP() end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511002706.ftarget) + e1:SetLabel(e:GetHandler():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511002706.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c511002706.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and Duel.GetMatchingGroupCount(nil,tp,LOCATION_MZONE,0,e:GetHandler())>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511002706.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=Duel.GetMatchingGroupCount(nil,tp,LOCATION_MZONE,0,e:GetHandler())*-500 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511002706.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511002706)>0 + and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511002706.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002706.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK)>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetOperation(c511002706.rmop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e2,true) + end +end +function c511002706.rmop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end +function c511002706.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511002706.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511002706,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end diff --git a/script/c511002707.lua b/script/c511002707.lua new file mode 100644 index 00000000..641ba323 --- /dev/null +++ b/script/c511002707.lua @@ -0,0 +1,65 @@ +--波動竜騎士 ドラゴエクィテス +function c511002707.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511002707.ffilter,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),true) + --cannot spsummon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetRange(LOCATION_EXTRA) + e1:SetValue(c511002707.splimit) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(14017402,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511002707.efftg) + e2:SetOperation(c511002707.effop) + c:RegisterEffect(e2) + --reflect damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_REFLECT_DAMAGE) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetValue(c511002707.refcon) + c:RegisterEffect(e3) +end +c511002707.miracle_synchro_fusion=true +function c511002707.ffilter(c) + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) +end +function c511002707.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511002707.refcon(e,re,val,r,rp,rc) + return bit.band(r,REASON_EFFECT)~=0 and rp~=e:GetHandler():GetControler() and e:GetHandler():IsAttackPos() +end +function c511002707.filter(c,fusc) + return c:IsLocation(LOCATION_GRAVE) and bit.band(c:GetReason(),0x40008)==0x40008 and c:GetReasonCard()==fusc + and c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemove() +end +function c511002707.efftg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and c511002707.filter(chkc,e:GetHandler()) end + if chk==0 then return Duel.IsExistingTarget(c511002707.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c511002707.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511002707.effop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and c:IsFaceup() and tc:IsRelateToEffect(e) then + if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + c:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000,1) + end + end +end diff --git a/script/c511002708.lua b/script/c511002708.lua new file mode 100644 index 00000000..7b56f0f2 --- /dev/null +++ b/script/c511002708.lua @@ -0,0 +1,38 @@ +--ワンショット・キャノン +function c511002708.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsCode,6142213),aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy & damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(13574687,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002708.target) + e1:SetOperation(c511002708.operation) + c:RegisterEffect(e1) +end +function c511002708.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511002708.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002708.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002708.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511002708.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,g:GetFirst():GetControler(),g:GetFirst():GetAttack()/2) +end +function c511002708.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local dam=tc:GetAttack() + local p=tc:GetControler() + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(p,dam,REASON_EFFECT) + end + end +end diff --git a/script/c511002709.lua b/script/c511002709.lua new file mode 100644 index 00000000..cb1c9c3c --- /dev/null +++ b/script/c511002709.lua @@ -0,0 +1,75 @@ +--覚醒の魔導剣士 +function c511002709.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511002709.thcon) + e1:SetTarget(c511002709.thtg) + e1:SetOperation(c511002709.thop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(aux.bdocon) + e2:SetTarget(c511002709.damtg) + e2:SetOperation(c511002709.damop) + c:RegisterEffect(e2) +end +c511002709.collection={ + [9156135]=true;[21051146]=true;[40737112]=true;[58369990]=true;[33225925]=true; + [49826746]=true;[45141844]=true;[6337436]=true;[73752131]=true;[87557188]=true; + [71625222]=true;[54941203]=true; +} +function c511002709.cfilter(c) + return c:IsSetCard(0x98) or c:IsSetCard(0xa2) or c511002709.collection[c:GetCode()] +end +function c511002709.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_SYNCHRO and c:GetMaterial():GetCount()>0 + and c:GetMaterial():IsExists(c511002709.cfilter,1,nil) +end +function c511002709.thfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511002709.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002709.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002709.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511002709.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511002709.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c511002709.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local bc=e:GetHandler():GetBattleTarget() + Duel.SetTargetCard(bc) + local dam=bc:GetAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002709.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=tc:GetPreviousAttackOnField() + if dam<0 then dam=0 end + Duel.Damage(p,dam,REASON_EFFECT) + end +end diff --git a/script/c511002710.lua b/script/c511002710.lua new file mode 100644 index 00000000..e3847927 --- /dev/null +++ b/script/c511002710.lua @@ -0,0 +1,52 @@ +--Left-Hand Shark +function c511002710.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(4732017,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002710.lvcon) + e1:SetOperation(c511002710.lvop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e2:SetCondition(c511002710.spcon) + e2:SetTarget(c511002710.sptg) + e2:SetOperation(c511002710.spop) + c:RegisterEffect(e2) +end +function c511002710.lvcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_GRAVE +end +function c511002710.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + c:RegisterEffect(e1) +end +function c511002710.filter(c) + return c:IsFaceup() and c:IsCode(810000026) +end +function c511002710.spcon(e,c) + return Duel.IsExistingMatchingCard(c511002710.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002710.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511002710.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002711.lua b/script/c511002711.lua new file mode 100644 index 00000000..d7b1e4be --- /dev/null +++ b/script/c511002711.lua @@ -0,0 +1,17 @@ +--Earthbound Prisoner Stone Sweeper +function c511002711.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002711.spcon) + c:RegisterEffect(e1) +end +function c511002711.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and (Duel.GetFieldCard(tp,LOCATION_SZONE,5) or Duel.GetFieldCard(1-tp,LOCATION_SZONE,5)) +end diff --git a/script/c511002712.lua b/script/c511002712.lua new file mode 100644 index 00000000..a322c28c --- /dev/null +++ b/script/c511002712.lua @@ -0,0 +1,38 @@ +--Earthbound Disciple Geo Kraken +function c511002712.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511002712.fusfilter,c511002712.fusfilter,true) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48009503,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002712.descon) + e1:SetTarget(c511002712.destg) + e1:SetOperation(c511002712.desop) + c:RegisterEffect(e1) +end +function c511002712.fusfilter(c) + return c:IsSetCard(0x21f) or c:IsSetCard(0x21) or c:IsCode(67105242) or c:IsCode(67987302) +end +function c511002712.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and eg:IsExists(Card.IsControler,1,nil,1-tp) +end +function c511002712.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,sg:GetCount()*800) +end +function c511002712.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(sg,REASON_EFFECT) + if ct>0 then + Duel.Damage(1-tp,ct*800,REASON_EFFECT) + end +end diff --git a/script/c511002713.lua b/script/c511002713.lua new file mode 100644 index 00000000..faf56a07 --- /dev/null +++ b/script/c511002713.lua @@ -0,0 +1,54 @@ +--Earthbound Disciple Geo Griffon +function c511002713.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c511002713.sfilter,aux.NonTuner(c511002713.sfilter),1) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002713.descon) + e1:SetTarget(c511002713.destg) + e1:SetOperation(c511002713.desop) + c:RegisterEffect(e1) + --destroy (when self is destroyed) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511002713.descon2) + e2:SetTarget(c511002713.destg) + e2:SetOperation(c511002713.desop) + c:RegisterEffect(e2) +end +function c511002713.sfilter(c) + return c:IsSetCard(0x21f) or c:IsSetCard(0x21) or c:IsCode(67105242) or c:IsCode(67987302) +end +function c511002713.cfilter(c,tp) + return c511002713.sfilter(c) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511002713.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002713.cfilter,1,nil,tp) +end +function c511002713.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002713.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511002713.descon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and (c:IsPreviousSetCard(0x21f) or c:IsPreviousSetCard(0x21) or c:GetPreviousCodeOnField()==67105242 or c:GetPreviousCodeOnField()==67987302) +end diff --git a/script/c511002714.lua b/script/c511002714.lua new file mode 100644 index 00000000..e3a97388 --- /dev/null +++ b/script/c511002714.lua @@ -0,0 +1,32 @@ +--Earthbound Demon Seal +function c511002714.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002714.condition) + e1:SetTarget(c511002714.target) + e1:SetOperation(c511002714.activate) + c:RegisterEffect(e1) +end +function c511002714.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511002714.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) + and c511002714.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) +end +function c511002714.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511002714.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511002715.lua b/script/c511002715.lua new file mode 100644 index 00000000..4a57806f --- /dev/null +++ b/script/c511002715.lua @@ -0,0 +1,32 @@ +--Earthbound Prisoner Line Walker +function c511002715.initial_effect(c) + --resummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(54936498,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetTarget(c511002715.tg) + e1:SetOperation(c511002715.op) + c:RegisterEffect(e1) +end +function c511002715.filter(c) + return c:IsFaceup() and c:GetSummonLocation()==LOCATION_EXTRA +end +function c511002715.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002715.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002715.filter,tp,0,LOCATION_MZONE,1,nil) + and e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002715.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002715.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.RaiseEvent(tc,EVENT_SPSUMMON_SUCCESS,e,REASON_EFFECT,tp,tc:GetControler(),ev) + Duel.RaiseSingleEvent(tc,EVENT_SPSUMMON_SUCCESS,e,REASON_EFFECT,tp,tc:GetControler(),ev) + end +end diff --git a/script/c511002716.lua b/script/c511002716.lua new file mode 100644 index 00000000..83f85071 --- /dev/null +++ b/script/c511002716.lua @@ -0,0 +1,51 @@ +--レッド・ウルフ +function c511002716.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64379261,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002716.spcon) + e1:SetTarget(c511002716.sptg) + e1:SetOperation(c511002716.spop) + c:RegisterEffect(e1) +end +c511002716.collection={ + [58831685]=true;[10202894]=true;[65570596]=true;[511001464]=true;[511001094]=true; + [68722455]=true;[58165765]=true;[45462639]=true;[511001095]=true;[511000365]=true; + [14886469]=true;[30494314]=true;[81354330]=true;[86445415]=true;[100000562]=true; + [34475451]=true;[40975574]=true;[37132349]=true;[61019812]=true;[19025379]=true; + [76547525]=true;[55888045]=true;[97489701]=true;[67030233]=true;[65338781]=true; + [45313993]=true;[8706701]=true;[21142671]=true; +} +function c511002716.cfilter(c) + return c:IsSetCard(0x3b) or c:IsSetCard(0x1045) or c:IsSetCard(0x89b) or c511002716.collection[c:GetCode()] +end +function c511002716.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and c511002716.cfilter(eg:GetFirst()) +end +function c511002716.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002716.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c:GetAttack()/2) + e1:SetReset(RESET_EVENT+0xfe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end diff --git a/script/c511002717.lua b/script/c511002717.lua new file mode 100644 index 00000000..8b1513d6 --- /dev/null +++ b/script/c511002717.lua @@ -0,0 +1,77 @@ +--Earthbound Fusion +function c511002717.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetCondition(c511002717.condition) + e1:SetTarget(c511002717.target) + e1:SetOperation(c511002717.activate) + c:RegisterEffect(e1) +end +function c511002717.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511002717.condition(e,tp,eg,ep,ev,re,r,rp) + return c511002717.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511002717.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5)) +end +function c511002717.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002717.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511002717.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511002717.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511002717.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002717.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002717.filter1,tp,LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511002717.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511002717.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511002718.lua b/script/c511002718.lua new file mode 100644 index 00000000..4815d80f --- /dev/null +++ b/script/c511002718.lua @@ -0,0 +1,49 @@ +--レッド・ミラー +function c511002718.initial_effect(c) + --end battle phase + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(18964575,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002718.thcon) + e1:SetCost(c511002718.thcost) + e1:SetTarget(c511002718.thtg) + e1:SetOperation(c511002718.thop) + c:RegisterEffect(e1) +end +c511002718.collection={ + [58831685]=true;[10202894]=true;[65570596]=true;[511001464]=true;[511001094]=true; + [68722455]=true;[58165765]=true;[45462639]=true;[511001095]=true;[511000365]=true; + [14886469]=true;[30494314]=true;[81354330]=true;[86445415]=true;[100000562]=true; + [34475451]=true;[40975574]=true;[37132349]=true;[61019812]=true;[19025379]=true; + [76547525]=true;[55888045]=true;[97489701]=true;[67030233]=true;[65338781]=true; + [45313993]=true;[8706701]=true;[21142671]=true; +} +function c511002718.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002718.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002718.filter(c) + return (c:IsSetCard(0x3b) or c:IsSetCard(0x1045) or c:IsSetCard(0x89b) or c511002718.collection[c:GetCode()]) + and c:IsAbleToHand() +end +function c511002718.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002718.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002718.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511002718.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511002718.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511002719.lua b/script/c511002719.lua new file mode 100644 index 00000000..4b3c9a29 --- /dev/null +++ b/script/c511002719.lua @@ -0,0 +1,62 @@ +--Earthbound Servant Geo Gremlin +function c511002719.initial_effect(c) + aux.AddSynchroProcedure(c,c511002719.sfilter,aux.NonTuner(c511002719.sfilter),1) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100602,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002719.descon) + e1:SetTarget(c511002719.destg) + e1:SetOperation(c511002719.desop) + c:RegisterEffect(e1) + if not c511002719.global_check then + c511002719.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetLabel(511002719) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + end +end +function c511002719.sfilter(c) + return c:IsSetCard(0x21f) or c:IsSetCard(0x21) or c:IsCode(67105242) or c:IsCode(67987302) +end +function c511002719.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511002719.descon(e,tp,eg,ep,ev,re,r,rp) + return (c511002719.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511002719.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5))) + and Duel.GetCurrentPhase()==PHASE_MAIN1 and e:GetHandler():GetFlagEffect(511002719)~=0 +end +function c511002719.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002719.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if tc:IsFacedown() or Duel.SelectYesNo(1-tp,aux.Stringid(698785,0)) then + if Duel.Destroy(tc,REASON_EFFECT)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end + else + Duel.Recover(tp,tc:GetAttack(),REASON_EFFECT) + end + end +end diff --git a/script/c511002720.lua b/script/c511002720.lua new file mode 100644 index 00000000..aa0c071d --- /dev/null +++ b/script/c511002720.lua @@ -0,0 +1,53 @@ +--Earthbound Disciple Geo Gremlina +function c511002720.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511002720.fusfilter,c511002720.fusfilter,true) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48009503,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DESTROYED) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002720.descon) + e1:SetTarget(c511002720.destg) + e1:SetOperation(c511002720.desop) + c:RegisterEffect(e1) +end +function c511002720.fusfilter(c) + return c:IsSetCard(0x21f) or c:IsSetCard(0x21) or c:IsCode(67105242) or c:IsCode(67987302) +end +function c511002720.filter(c,tp) + return c:GetPreviousControler()==1-tp and bit.band(c:GetReason(),0x41)==0x41 +end +function c511002720.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511002720.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002720.filter,1,nil,tp) + and (c511002720.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511002720.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5))) +end +function c511002720.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,0,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,sg:GetSum(Card.GetAttack)) +end +function c511002720.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local tc=dg:GetFirst() + local dam=0 + while tc do + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + dam=dam+atk + tc=dg:GetNext() + end + Duel.Damage(1-tp,dam,REASON_EFFECT) + end +end diff --git a/script/c511002721.lua b/script/c511002721.lua new file mode 100644 index 00000000..04f207af --- /dev/null +++ b/script/c511002721.lua @@ -0,0 +1,40 @@ +--Earthbound Disciple Geo Glasya-Labolas +function c511002721.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c511002721.fusfilter1,c511002721.fusfilter2,true) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002721.atkcon) + e1:SetOperation(c511002721.atkop) + c:RegisterEffect(e1) +end +c511002721.miracle_synchro_fusion=true +function c511002721.fusfilter1(c) + return c:IsSetCard(0x121f) and c:IsType(TYPE_FUSION) +end +function c511002721.fusfilter2(c) + return c:IsSetCard(0x121f) and c:IsType(TYPE_SYNCHRO) +end +function c511002721.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511002721.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsControler(1-tp) and (bc:IsType(TYPE_FUSION) or bc:IsType(TYPE_SYNCHRO)) and bc:IsFaceup() + and (c511002721.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511002721.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5))) +end +function c511002721.atkop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + if bc and bc:IsFaceup() and bc:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + bc:RegisterEffect(e1) + end +end diff --git a/script/c511002722.lua b/script/c511002722.lua new file mode 100644 index 00000000..5cb4df8a --- /dev/null +++ b/script/c511002722.lua @@ -0,0 +1,33 @@ +--Red Crystal +function c511002722.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511002722.activate) + c:RegisterEffect(e1) +end +c511002722.collection={ + [58831685]=true;[10202894]=true;[65570596]=true;[511001464]=true;[511001094]=true; + [68722455]=true;[58165765]=true;[45462639]=true;[511001095]=true;[511000365]=true; + [14886469]=true;[30494314]=true;[81354330]=true;[86445415]=true;[100000562]=true; + [34475451]=true;[40975574]=true;[37132349]=true;[61019812]=true;[19025379]=true; + [76547525]=true;[55888045]=true;[97489701]=true;[67030233]=true;[65338781]=true; + [45313993]=true;[8706701]=true;[21142671]=true; +} +function c511002722.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetTarget(c511002722.tg) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + Duel.RegisterEffect(e2,tp) +end +function c511002722.tg(e,c) + return c:IsSetCard(0x3b) or c:IsSetCard(0x1045) or c:IsSetCard(0x89b) or c511002722.collection[c:GetCode()] +end diff --git a/script/c511002723.lua b/script/c511002723.lua new file mode 100644 index 00000000..7de5e95d --- /dev/null +++ b/script/c511002723.lua @@ -0,0 +1,69 @@ +--Red Soul +function c511002723.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCost(c511002723.cost) + e1:SetTarget(c511002723.target) + e1:SetOperation(c511002723.activate) + c:RegisterEffect(e1) +end +function c511002723.cfilter(c) + return c:IsAbleToGraveAsCost() and c:IsType(TYPE_MONSTER) +end +function c511002723.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511002723.filter(c) + return c:IsFaceup() and c:GetFlagEffect(70899775)==0 +end +function c511002723.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002723.filter(chkc) end + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511002723.cfilter,tp,LOCATION_HAND,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511002723.cfilter,tp,LOCATION_HAND,0,2,2,nil) + local sum=g:GetSum(Card.GetAttack) + Duel.SendtoGrave(g,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002723.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetParam(sum) +end +function c511002723.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + 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(c511002723.damval) + e1:SetLabel(Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e3) + end +end +function c511002723.damval(e,re,val,r,rp,rc) + local dam=val-e:GetLabel() + if dam>=0 then + return dam + else + return 0 + end +end diff --git a/script/c511002724.lua b/script/c511002724.lua new file mode 100644 index 00000000..7a1a2ffa --- /dev/null +++ b/script/c511002724.lua @@ -0,0 +1,107 @@ +--Engrave Soul Light +function c511002724.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(c511002724.target) + e1:SetOperation(c511002724.operation) + c:RegisterEffect(e1) + --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(c511002724.eqlimit) + c:RegisterEffect(e3) + --atk change other + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(4857085,0)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetTarget(c511002724.chtg) + e4:SetOperation(c511002724.chop) + c:RegisterEffect(e4) + --atk change equip + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_DESTROYED) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511002724.descon) + e5:SetOperation(c511002724.desop) + c:RegisterEffect(e5) +end +c511002724.collection={ + [58831685]=true;[10202894]=true;[65570596]=true;[511001464]=true;[511001094]=true; + [68722455]=true;[58165765]=true;[45462639]=true;[511001095]=true;[511000365]=true; + [14886469]=true;[30494314]=true;[81354330]=true;[86445415]=true;[100000562]=true; + [34475451]=true;[40975574]=true;[37132349]=true;[61019812]=true;[19025379]=true; + [76547525]=true;[55888045]=true;[97489701]=true;[67030233]=true;[65338781]=true; + [45313993]=true;[8706701]=true;[21142671]=true; +} +function c511002724.eqlimit(e,c) + return (c:IsSetCard(0x3b) or c:IsSetCard(0x1045) or c:IsSetCard(0x89b) or c511002724.collection[c:GetCode()]) + and c:IsType(TYPE_SYNCHRO) +end +function c511002724.filter(c) + return (c:IsSetCard(0x3b) or c:IsSetCard(0x1045) or c:IsSetCard(0x89b) or c511002724.collection[c:GetCode()]) + and c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c511002724.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and c511002724.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002724.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002724.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002724.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002724.atkfilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c511002724.chtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002724.atkfilter,tp,0,LOCATION_MZONE,1,nil,e:GetHandler():GetEquipTarget():GetAttack()) end +end +function c511002724.chop(e,tp,eg,ep,ev,re,r,rp) + local atk=e:GetHandler():GetEquipTarget():GetAttack() + local g=Duel.GetMatchingGroup(c511002724.atkfilter,tp,0,LOCATION_MZONE,nil,atk) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c511002724.cfilter(c,tp) + return c:GetPreviousControler()==1-tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511002724.descon(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511002724.cfilter,nil,tp) + local tc=g:GetFirst() + return g:GetCount()==1 and tc:GetBaseAttack()~=e:GetHandler():GetEquipTarget():GetAttack() +end +function c511002724.desop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511002724.cfilter,nil,tp) + local tc=g:GetFirst() + local eq=e:GetHandler():GetEquipTarget() + if eq then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(tc:GetBaseAttack()) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + eq:RegisterEffect(e2) + end +end diff --git a/script/c511002725.lua b/script/c511002725.lua new file mode 100644 index 00000000..222bc96b --- /dev/null +++ b/script/c511002725.lua @@ -0,0 +1,44 @@ +--Earthbound Salvation +function c511002725.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002725.condition) + e1:SetTarget(c511002725.target) + e1:SetOperation(c511002725.activate) + c:RegisterEffect(e1) +end +function c511002725.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511002725.condition(e,tp,eg,ep,ev,re,r,rp) + return (c511002725.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511002725.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5))) +end +function c511002725.filter1(c) + return (c:IsSetCard(0x21f) or c:IsSetCard(0x21) or c:IsCode(67105242) or c:IsCode(67987302)) and c:IsType(TYPE_MONSTER) + and c:IsAbleToHand() +end +function c511002725.filter2(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511002725.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002725.filter1,tp,LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingMatchingCard(c511002725.filter2,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_GRAVE) +end +function c511002725.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c511002725.filter1,tp,LOCATION_GRAVE,0,nil) + local g2=Duel.GetMatchingGroup(c511002725.filter2,tp,LOCATION_GRAVE,0,nil) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.HintSelection(sg1) + Duel.SendtoHand(sg1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg1) + end +end diff --git a/script/c511002726.lua b/script/c511002726.lua new file mode 100644 index 00000000..49ce3f09 --- /dev/null +++ b/script/c511002726.lua @@ -0,0 +1,93 @@ +--BF-隠れ蓑のスチーム +function c511002726.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(9047460,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetTarget(c511002726.tktg) + e1:SetOperation(c511002726.tkop) + c:RegisterEffect(e1) +end +function c511002726.tktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,9047461,0,0x4011,100,100,3,RACE_AQUA,ATTRIBUTE_WIND) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002726.tkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if Duel.IsPlayerCanSpecialSummonMonster(tp,9047461,0,0x4011,100,100,3,RACE_AQUA,ATTRIBUTE_WIND) then + local token=Duel.CreateToken(tp,9047461) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c511002726.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + token:RegisterEffect(e1) + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511002726.operation) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_DAMAGE_STEP) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(511000883) + e3:SetCondition(c511002726.atkcon) + e3:SetOperation(c511002726.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3) + end +end +function c511002726.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c511002726.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511000883)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511002726.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511000883,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511002726.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + if e:GetLabel()>c:GetAttack() then + local val=e:GetLabel()-c:GetAttack() + Duel.RaiseEvent(c,511000883,re,REASON_EFFECT,rp,tp,val) + end + e:SetLabel(c:GetAttack()) +end +function c511002726.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(1-tp) and ev>0 and ec:GetAttack()<=0 +end +function c511002726.atkop(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + Duel.Remove(ec,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511002727.lua b/script/c511002727.lua new file mode 100644 index 00000000..ad6a21e6 --- /dev/null +++ b/script/c511002727.lua @@ -0,0 +1,82 @@ +--No.54 反骨の闘士ライオンハート +function c511002727.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,1,3) + c:EnableReviveLimit() + --ind + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetCondition(c511002727.indcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetOperation(c511002727.damop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(54366836,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e3:SetCondition(c511002727.damcon) + e3:SetCost(c511002727.damcost) + e3:SetOperation(c511002727.surop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511002727.indes) + c:RegisterEffect(e4) + if not c511002727.global_check then + c511002727.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511002727.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511002727.xyz_number=54 +function c511002727.indcon(e) + return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) +end +function c511002727.damop(e,tp,eg,ep,ev,re,r,rp) + if tp==ep then + Duel.ChangeBattleDamage(1-ep,ev,false) + end +end +function c511002727.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,54366836) + Duel.CreateToken(1-tp,54366836) +end +function c511002727.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>=Duel.GetLP(tp) +end +function c511002727.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:CheckRemoveOverlayCard(tp,1,REASON_COST) end + c:RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002727.surop(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002727.damopx) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + Duel.SetLP(tp,100,REASON_EFFECT) +end +function c511002727.damopx(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511002727.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002728.lua b/script/c511002728.lua new file mode 100644 index 00000000..ec5ea74f --- /dev/null +++ b/script/c511002728.lua @@ -0,0 +1,42 @@ +--D-タイム +function c511002728.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002728.condition) + e1:SetTarget(c511002728.target) + e1:SetOperation(c511002728.operation) + c:RegisterEffect(e1) +end +function c511002728.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local lv=tc:GetLevel() + return eg:GetCount()==1 and tc:IsSetCard(0x3008) and tc:IsPreviousPosition(POS_FACEUP) and tc:GetPreviousControler()==tp +end +function c511002728.filter(c,lv) + return c:IsLevelBelow(lv) and c:IsSetCard(0xc008) and c:IsAbleToHand() +end +function c511002728.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002728.filter,tp,LOCATION_DECK,0,1,nil,eg:GetFirst():GetLevel()) end + e:SetLabel(eg:GetFirst():GetLevel()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002728.operation(e,tp,eg,ep,ev,re,r,rp) + local lv=e:GetLabel() + local sg=Duel.GetMatchingGroup(c511002728.filter,tp,LOCATION_DECK,0,nil,lv) + if sg:GetCount()==0 then return end + local ag=Group.CreateGroup() + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tc=sg:Select(tp,1,1,nil):GetFirst() + sg:RemoveCard(tc) + lv=lv-tc:GetLevel() + ag:AddCard(tc) + sg:Remove(Card.IsLevelAbove,nil,lv+1) + until sg:GetCount()==0 or not Duel.SelectYesNo(tp,aux.Stringid(9354555,0)) + Duel.SendtoHand(ag,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,ag) +end diff --git a/script/c511002729.lua b/script/c511002729.lua new file mode 100644 index 00000000..3c151891 --- /dev/null +++ b/script/c511002729.lua @@ -0,0 +1,57 @@ +--D-HERO ドグマガイ +function c511002729.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(17132130,0)) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetValue(1) + e2:SetCondition(c511002729.spcon) + e2:SetOperation(c511002729.spop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(17132130,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511002729.lpcon) + e3:SetOperation(c511002729.lpop) + c:RegisterEffect(e3) +end +function c511002729.spcon(e,c) + if c==nil then return true end + local g=Duel.GetReleaseGroup(c:GetControler()) + local d=g:FilterCount(Card.IsSetCard,nil,0xc008) + local ct=g:GetCount() + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and d>0 and ct>2 +end +function c511002729.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.GetReleaseGroup(c:GetControler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg1=g:FilterSelect(tp,Card.IsSetCard,1,1,nil,0xc008) + g:RemoveCard(sg1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg2=g:Select(tp,2,2,nil) + sg2:Merge(sg1) + Duel.Release(sg2,REASON_COST) +end +function c511002729.lpcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511002729.lpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.SetLP(1-tp,Duel.GetLP(1-tp)/2) + end +end diff --git a/script/c511002730.lua b/script/c511002730.lua new file mode 100644 index 00000000..5aaf8d31 --- /dev/null +++ b/script/c511002730.lua @@ -0,0 +1,69 @@ +--Hope 1 +function c511002730.initial_effect(c) + --Survive + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCode(511002521) + e1:SetCost(c511002730.cost) + e1:SetOperation(c511002730.activate) + c:RegisterEffect(e1) + if not c511002730.global_check then + c511002730.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetCode(EFFECT_CANNOT_LOSE_LP) + ge1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + ge1:SetTargetRange(1,0) + ge1:SetLabel(0) + ge1:SetCondition(c511002730.con2) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetLabel(1) + Duel.RegisterEffect(ge2,1) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetOperation(c511002730.op) + Duel.RegisterEffect(ge3,0) + end +end +function c511002730.con2(e) + return Duel.GetFlagEffect(e:GetLabel(),511002521)>0 +end +function c511002730.op(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + if Duel.GetLP(0)<=0 and ph~=PHASE_DAMAGE then + Duel.RaiseEvent(Duel.GetMatchingGroup(nil,0,LOCATION_ONFIELD,0,nil),511002521,e,0,0,0,0) + Duel.ResetFlagEffect(0,511002521) + end + if Duel.GetLP(1)<=0 and ph~=PHASE_DAMAGE then + Duel.RaiseEvent(Duel.GetMatchingGroup(nil,1,LOCATION_ONFIELD,0,nil),511002521,e,0,0,0,0) + Duel.ResetFlagEffect(1,511002521) + end + if Duel.GetLP(0)>0 and Duel.GetFlagEffect(0,511002521)==0 then + Duel.RegisterFlagEffect(0,511002521,0,0,1) + end + if Duel.GetLP(1)>0 and Duel.GetFlagEffect(1,511002521)==0 then + Duel.RegisterFlagEffect(1,511002521,0,0,1) + end +end +function c511002730.costfilter(c,e,tp) + return c:IsSetCard(0x107f) and c:IsAbleToGraveAsCost() +end +function c511002730.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002730.costfilter,tp,LOCATION_MZONE,0,1,nil) end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_CHAIN) + e1:SetCode(EFFECT_CANNOT_LOSE_LP) + Duel.RegisterEffect(e1,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002730.costfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002730.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(tp,1,REASON_EFFECT) +end diff --git a/script/c511002732.lua b/script/c511002732.lua new file mode 100644 index 00000000..71aa4bb6 --- /dev/null +++ b/script/c511002732.lua @@ -0,0 +1,21 @@ +--Puppet King +function c511002732.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002732.spcon) + e1:SetOperation(c511002732.spop) + c:RegisterEffect(e1) +end +function c511002732.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,511002731) +end +function c511002732.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,511002731) + Duel.Release(g,REASON_COST) +end diff --git a/script/c511002733.lua b/script/c511002733.lua new file mode 100644 index 00000000..3e63ce32 --- /dev/null +++ b/script/c511002733.lua @@ -0,0 +1,98 @@ +--Shed the Situation +function c511002733.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002733.target) + e1:SetOperation(c511002733.activate) + c:RegisterEffect(e1) + if not c511002733.global_check then + c511002733.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002733.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002733.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511002733.filter(c,e,tp) + return c:IsLevelAbove(8) and c:GetLevel()%2==0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002733.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002733.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002733.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002733.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_LEVEL) + e2:SetValue(tc:GetLevel()/2) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(511001225) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002734.lua b/script/c511002734.lua new file mode 100644 index 00000000..d1f34c91 --- /dev/null +++ b/script/c511002734.lua @@ -0,0 +1,48 @@ +--Conquest of the Supreme Ruler +function c511002734.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + c:RegisterEffect(e1) + --trigger + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002734.con) + e2:SetCost(c511002734.cost) + e2:SetOperation(c511002734.op) + c:RegisterEffect(e2) +end +function c511002734.cfilter(c,tp) + return c:IsType(TYPE_SYNCHRO) and c:GetPreviousControler()~=tp and c:GetReasonCard() and c:GetReasonCard():IsType(TYPE_SYNCHRO) + and c:GetReasonCard():IsControler(tp) +end +function c511002734.con(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002734.cfilter,1,nil,tp) +end +function c511002734.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002734.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON) + e1:SetOperation(c511002734.negop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON) + Duel.RegisterEffect(e2,tp) +end +function c511002734.negfilter(c,tp) + return c:GetSummonPlayer()~=tp +end +function c511002734.negop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511002734.negfilter,nil,tp) + Duel.NegateSummon(g) +end diff --git a/script/c511002735.lua b/script/c511002735.lua new file mode 100644 index 00000000..9b339c37 --- /dev/null +++ b/script/c511002735.lua @@ -0,0 +1,76 @@ +--Compulsory Circulation Device +function c511002735.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002735.condition) + e1:SetCost(c511002735.cost) + e1:SetTarget(c511002735.target) + e1:SetOperation(c511002735.activate) + c:RegisterEffect(e1) +end +function c511002735.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511002735.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511002735.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckRemoveOverlayCard(tp,1,0,1,REASON_COST) and ct>0 + and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + if ct>1 then + local t={} + for i=1,ct do + t[i]=i + end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(81330115,0)) + ct=Duel.AnnounceNumber(tp,table.unpack(t)) + end + Duel.RemoveOverlayCard(tp,1,0,ct,ct,REASON_COST) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + Duel.SetTargetParam(ct) +end +function c511002735.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,ct,ct,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + if Duel.Remove(g,0,REASON_EFFECT+REASON_TEMPORARY)>0 then + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511002735,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=g:GetNext() + end + g:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetLabelObject(g) + e1:SetOperation(c511002735.retop) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511002735.retfilter(c) + return c:GetFlagEffect(511002735)~=0 +end +function c511002735.retop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local sg=g:Filter(c511002735.retfilter,nil) + g:DeleteGroup() + local tc=sg:GetFirst() + while tc do + Duel.ReturnToField(tc) + tc=sg:GetNext() + end +end diff --git a/script/c511002736.lua b/script/c511002736.lua new file mode 100644 index 00000000..5ff71e78 --- /dev/null +++ b/script/c511002736.lua @@ -0,0 +1,60 @@ +--Hell Gift +function c511002736.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002736.condition) + e1:SetTarget(c511002736.target) + e1:SetOperation(c511002736.activate) + c:RegisterEffect(e1) +end +function c511002736.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)<=1 +end +function c511002736.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,3) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,3) +end +function c511002736.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c511002736.damop) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetOperation(c511002736.checkop) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EVENT_SUMMON_SUCCESS) + Duel.RegisterEffect(e3,tp) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + Duel.RegisterEffect(e4,tp) +end +function c511002736.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,3000,REASON_EFFECT) +end +function c511002736.cfilter(c,tp) + return (c:IsCode(36029076) or c:IsSetCard(0x21b)) and c:IsFaceup() and c:GetSummonPlayer()==tp +end +function c511002736.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(c511002736.cfilter,1,nil,tp) then + if e:GetLabelObject() then + e:GetLabelObject():Reset() + end + e:Reset() + end +end diff --git a/script/c511002737.lua b/script/c511002737.lua new file mode 100644 index 00000000..ac4b8895 --- /dev/null +++ b/script/c511002737.lua @@ -0,0 +1,77 @@ +--CH キング・アーサー +function c511002737.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),4,2) + c:EnableReviveLimit() + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(511001265) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002737.damcon) + e1:SetCost(c511002737.damcost) + e1:SetTarget(c511002737.damtg) + e1:SetOperation(c511002737.damop) + c:RegisterEffect(e1) + if not c511002737.global_check then + c511002737.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511002737.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511002737.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsFaceup,0,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511002737.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511002737.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511002737.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==eg:GetFirst() and ev>0 +end +function c511002737.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002737.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev) +end +function c511002737.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002738.lua b/script/c511002738.lua new file mode 100644 index 00000000..4a8e1a85 --- /dev/null +++ b/script/c511002738.lua @@ -0,0 +1,36 @@ +--ギミック・パペット-ギア・チェンジャー +function c511002738.initial_effect(c) + --lvchange + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56427559,0)) + e1:SetCategory(CATEGORY_LVCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002738.lvtg) + e1:SetOperation(c511002738.lvop) + c:RegisterEffect(e1) +end +function c511002738.lvfilter(c,lv) + local clv=c:GetLevel() + return c:IsFaceup() and c:IsSetCard(0x83) and clv>0 and clv~=lv +end +function c511002738.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002738.lvfilter(chkc,e:GetHandler():GetLevel()) end + if chk==0 then return Duel.IsExistingTarget(c511002738.lvfilter,tp,LOCATION_MZONE,0,1,e:GetHandler(),e:GetHandler():GetLevel()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002738.lvfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler(),e:GetHandler():GetLevel()) +end +function c511002738.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002739.lua b/script/c511002739.lua new file mode 100644 index 00000000..91c47115 --- /dev/null +++ b/script/c511002739.lua @@ -0,0 +1,21 @@ +--ギミック・パペット-マグネ・ドール +function c511002739.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002739.spcon) + c:RegisterEffect(e1) +end +function c511002739.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511002739.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and Duel.IsExistingMatchingCard(c511002739.cfilter,tp,0,LOCATION_MZONE,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end diff --git a/script/c511002740.lua b/script/c511002740.lua new file mode 100644 index 00000000..9edda1c2 --- /dev/null +++ b/script/c511002740.lua @@ -0,0 +1,31 @@ +--半月竜ラディウス +function c511002740.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(c511002740.spcon) + e1:SetOperation(c511002740.spop) + c:RegisterEffect(e1) +end +function c511002740.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511002740.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002740.filter,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c511002740.spop(e,tp,eg,ep,ev,re,r,rp,c) + --change base attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(c:GetLevel()*2) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) +end diff --git a/script/c511002741.lua b/script/c511002741.lua new file mode 100644 index 00000000..40e55f00 --- /dev/null +++ b/script/c511002741.lua @@ -0,0 +1,14 @@ +--防覇龍ヘリオスフィア +function c511002741.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCondition(c511002741.atcon) + c:RegisterEffect(e1) +end +function c511002741.atcon(e) + return not Duel.IsExistingMatchingCard(Card.IsFaceup,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler()) +end diff --git a/script/c511002742.lua b/script/c511002742.lua new file mode 100644 index 00000000..253c903c --- /dev/null +++ b/script/c511002742.lua @@ -0,0 +1,32 @@ +--Silent Pain +function c511002742.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(57579381,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCondition(c511002742.condition) + e1:SetTarget(c511002742.target) + e1:SetOperation(c511002742.operation) + c:RegisterEffect(e1) +end +function c511002742.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)==1 +end +function c511002742.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511002742.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + Duel.Damage(1-tp,1000,REASON_EFFECT) + end +end diff --git a/script/c511002743.lua b/script/c511002743.lua new file mode 100644 index 00000000..10bc8a58 --- /dev/null +++ b/script/c511002743.lua @@ -0,0 +1,37 @@ +--エSilent Space +function c511002743.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(97268402,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002743.condition) + e1:SetCost(c511002743.cost) + e1:SetTarget(c511002743.target) + e1:SetOperation(c511002743.operation) + c:RegisterEffect(e1) +end +function c511002743.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,511002742) +end +function c511002743.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002743.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002743.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002744.lua b/script/c511002744.lua new file mode 100644 index 00000000..8b13c18f --- /dev/null +++ b/script/c511002744.lua @@ -0,0 +1,34 @@ +--Silent Torment +function c511002744.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(97268402,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002744.condition) + e1:SetCost(c511002744.cost) + e1:SetTarget(c511002744.target) + e1:SetOperation(c511002744.operation) + c:RegisterEffect(e1) +end +function c511002744.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,511002742) +end +function c511002744.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002744.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511002744.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002745.lua b/script/c511002745.lua new file mode 100644 index 00000000..fc0cab93 --- /dev/null +++ b/script/c511002745.lua @@ -0,0 +1,33 @@ +--Plunder Decoy +function c511002745.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002745.condition) + e1:SetTarget(c511002745.target) + e1:SetOperation(c511002745.activate) + c:RegisterEffect(e1) +end +function c511002745.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) +end +function c511002745.filter(c) + return c:IsControlerCanBeChanged() and c:IsFaceup() and c:IsLevelBelow(4) +end +function c511002745.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002745.filter,tp,0,LOCATION_MZONE,1,Duel.GetAttacker()) end + local g=Duel.GetMatchingGroup(c511002745.filter,tp,0,LOCATION_MZONE,Duel.GetAttacker()) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511002745.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c511002745.filter,tp,0,LOCATION_MZONE,1,1,Duel.GetAttacker()) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.GetControl(tc,tp) + end +end diff --git a/script/c511002746.lua b/script/c511002746.lua new file mode 100644 index 00000000..3d81eb19 --- /dev/null +++ b/script/c511002746.lua @@ -0,0 +1,75 @@ +--高等紋章術 +function c511002746.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002746.target) + e1:SetOperation(c511002746.activate) + c:RegisterEffect(e1) +end +function c511002746.xyzfilter(c,mg) + local ct=c.minxyzct + return c:IsXyzSummonable(mg) and ct<=mg:GetCount() and mg:IsExists(c511002746.mfilter,ct,nil,c) +end +function c511002746.mfilter(c,xyz) + return xyz.xyz_filter(c) and c:IsCanBeXyzMaterial(xyz) +end +function c511002746.target(e,tp,eg,ep,ev,re,r,rp,chk) + local mg=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x76) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and mg:GetCount()>1 + and Duel.IsExistingMatchingCard(c511002746.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,mg) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002746.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x76) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local xyzg=Duel.GetMatchingGroup(c511002746.xyzfilter,tp,LOCATION_EXTRA,0,nil,mg) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:Select(tp,1,1,nil):GetFirst() + local ct=xyz.minxyzct + local ct2=xyz.maxxyzct + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=mg:FilterSelect(tp,c511002746.mfilter,ct,ct2,nil,xyz) + Duel.XyzSummon(tp,xyz,g) + end +end diff --git a/script/c511002747.lua b/script/c511002747.lua new file mode 100644 index 00000000..96422580 --- /dev/null +++ b/script/c511002747.lua @@ -0,0 +1,48 @@ +--Overlay Flash +function c511002747.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002747.target) + e1:SetOperation(c511002747.operation) + c:RegisterEffect(e1) +end +function c511002747.filter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:CheckRemoveOverlayCard(tp,1,REASON_COST) +end +function c511002747.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002747.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002747.filter,tp,LOCATION_MZONE,0,1,nil,tp) + and Duel.IsExistingMatchingCard(aux.disfilter1,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511002747.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + g:GetFirst():RemoveOverlayCard(tp,1,1,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,0,0) +end +function c511002747.operation(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetFirstTarget() + if tg and tg:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,aux.disfilter1,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + tg:SetCardTarget(tc) + Duel.HintSelection(g) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(tg) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511002747.rcon) + tc:RegisterEffect(e1,true) + end + end +end +function c511002747.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end diff --git a/script/c511002748.lua b/script/c511002748.lua new file mode 100644 index 00000000..c573e512 --- /dev/null +++ b/script/c511002748.lua @@ -0,0 +1,44 @@ +--Xyz Stand +function c511002748.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002748.target) + e1:SetOperation(c511002748.activate) + c:RegisterEffect(e1) +end +function c511002748.filter(c,tid,e,tp) + return c:IsReason(REASON_BATTLE) and c:IsType(TYPE_XYZ) and c:GetTurnID()==tid + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetPreviousControler()==tp +end +function c511002748.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c511002748.filter,tp,LOCATION_GRAVE,0,nil,Duel.GetTurnCount(),e,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()==1 end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002748.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002748.filter,tp,LOCATION_GRAVE,0,nil,Duel.GetTurnCount(),e,tp) + local tc=g:GetFirst() + if g:GetCount()~=1 or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002749.lua b/script/c511002749.lua new file mode 100644 index 00000000..ecfbb5e7 --- /dev/null +++ b/script/c511002749.lua @@ -0,0 +1,94 @@ +--No.66 覇鍵甲虫マスター・キー・ビートル +function c511002749.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),4,2) + c:EnableReviveLimit() + --target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76067258,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511002749.cost) + e1:SetTarget(c511002749.target) + e1:SetOperation(c511002749.operation) + c:RegisterEffect(e1) + --desrep + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511002749.reptg) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511002749.indes) + c:RegisterEffect(e4) + if not c511002749.global_check then + c511002749.global_check=true + --register + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002749.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002749.xyz_number=66 +function c511002749.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002749.filter(c,ec) + return not ec:IsHasCardTarget(c) +end +function c511002749.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c511002749.filter(chkc,c) end + if chk==0 then return Duel.IsExistingTarget(c511002749.filter,tp,LOCATION_ONFIELD,0,1,nil,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002749.filter,tp,LOCATION_ONFIELD,0,1,1,nil,c) +end +function c511002749.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + tc:RegisterFlagEffect(76067258,RESET_EVENT+0x1fe0000,0,0) + if c:IsFaceup() and c:IsRelateToEffect(e) then + c:SetCardTarget(tc) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + end +end +function c511002749.repfilter(c,tp) + return c:IsControler(tp) and c:GetFlagEffect(76067258)~=0 +end +function c511002749.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetCardTarget():IsExists(c511002749.repfilter,1,nil,tp) end + if Duel.SelectYesNo(tp,aux.Stringid(76067258,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=e:GetHandler():GetCardTarget():FilterSelect(tp,c511002749.repfilter,1,1,nil,tp) + Duel.SendtoGrave(g,REASON_EFFECT) + return true + else return false end +end +function c511002749.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,76067258) + Duel.CreateToken(1-tp,76067258) +end +function c511002749.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002750.lua b/script/c511002750.lua new file mode 100644 index 00000000..13b09f3b --- /dev/null +++ b/script/c511002750.lua @@ -0,0 +1,20 @@ +--シンクロ・マテリアル +function c511002750.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511002750.activate) + c:RegisterEffect(e1) +end +function c511002750.filter(c) + return c:IsFaceup() and c:IsCanBeSynchroMaterial() +end +function c511002750.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SYNCHRO_MATERIAL) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c511002751.lua b/script/c511002751.lua new file mode 100644 index 00000000..495c99ae --- /dev/null +++ b/script/c511002751.lua @@ -0,0 +1,30 @@ +--炎の護封剣 +function c511002751.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c511002751.atcon) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511002751.descon) + c:RegisterEffect(e3) +end +function c511002751.atcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)==0 +end +function c511002751.descon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)~=0 +end diff --git a/script/c511002752.lua b/script/c511002752.lua new file mode 100644 index 00000000..0e0eb90a --- /dev/null +++ b/script/c511002752.lua @@ -0,0 +1,57 @@ +--Gestalt Trap +function c511002752.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002752.condition) + e1:SetTarget(c511002752.target) + e1:SetOperation(c511002752.operation) + c:RegisterEffect(e1) +end +function c511002752.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002752.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002752.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atk/def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + 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) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + --negate + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_DISABLE) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + end +end diff --git a/script/c511002753.lua b/script/c511002753.lua new file mode 100644 index 00000000..c27226ef --- /dev/null +++ b/script/c511002753.lua @@ -0,0 +1,62 @@ +--Take a Chance +function c511002753.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002753.target) + e1:SetLabel(0) + c:RegisterEffect(e1) + --take a chance + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DICE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511002753.tg) + e2:SetOperation(c511002753.op) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c511002753.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + e:SetLabel(Duel.GetLP(tp)) +end +function c511002753.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1) +end +function c511002753.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local dc=Duel.TossDice(tp,1) + if dc==6 then + Duel.SetLP(tp,Duel.GetLP(tp)*5,REASON_EFFECT) + else + local lp=e:GetLabelObject():GetLabel() + Duel.SetLP(tp,lp,REASON_EFFECT) + e:GetLabelObject():SetLabel(0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + c:RegisterEffect(e1) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511002753.damcon) + e3:SetOperation(c511002753.damop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511002753.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002753.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511002753) + Duel.Damage(tp,1000,REASON_EFFECT) +end diff --git a/script/c511002754.lua b/script/c511002754.lua new file mode 100644 index 00000000..79969963 --- /dev/null +++ b/script/c511002754.lua @@ -0,0 +1,28 @@ +--Spirit Foresight +function c511002754.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON) + e1:SetCondition(c511002754.condition) + e1:SetTarget(c511002754.target) + e1:SetOperation(c511002754.activate) + c:RegisterEffect(e1) +end +function c511002754.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 and eg:GetCount()>1 and tp~=ep +end +function c511002754.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:GetCount()-1 + if chk==0 then return Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c511002754.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=eg:Select(tp,1,1,nil) + local g=eg:Clone() + g:Sub(sg) + Duel.NegateSummon(g) + Duel.Draw(tp,g:GetCount(),REASON_EFFECT) +end diff --git a/script/c511002755.lua b/script/c511002755.lua new file mode 100644 index 00000000..b607c0d3 --- /dev/null +++ b/script/c511002755.lua @@ -0,0 +1,49 @@ +--ハイパー・シンクロン +function c511002755.initial_effect(c) + --atk change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40348946,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c511002755.con) + e1:SetOperation(c511002755.op) + c:RegisterEffect(e1) +end +function c511002755.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO and c:GetReasonCard():IsRace(RACE_DRAGON) +end +function c511002755.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sync=c:GetReasonCard() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000) + sync:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + sync:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetOperation(c511002755.rmop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e3:SetLabel(0) + sync:RegisterEffect(e3) +end +function c511002755.rmop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + local ct=e:GetLabel() + e:GetHandler():SetTurnCounter(ct+1) + if ct==1 then + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) + else e:SetLabel(1) end +end diff --git a/script/c511002756.lua b/script/c511002756.lua new file mode 100644 index 00000000..020dccc1 --- /dev/null +++ b/script/c511002756.lua @@ -0,0 +1,76 @@ +--追走の翼 +function c511002756.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002756.target) + e1:SetOperation(c511002756.operation) + c:RegisterEffect(e1) +end +function c511002756.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002756.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() 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_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511002756.rcon) + e1:SetValue(1) + tc:RegisterEffect(e1,true) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(42776855,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_BATTLE_START) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511002756.atkcon) + e3:SetTarget(c511002756.atktg) + e3:SetOperation(c511002756.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511002756.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c511002756.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if not tc then return false end + local bc=tc:GetBattleTarget() + return tc and tc:IsLocation(LOCATION_MZONE) and bc and bc:IsFaceup() and bc:IsLocation(LOCATION_MZONE) and bc:IsLevelAbove(5) + and bc==Duel.GetAttacker() +end +function c511002756.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(42776855)==0 end + e:GetHandler():RegisterFlagEffect(42776855,RESET_CHAIN,0,1) +end +function c511002756.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=c:GetFirstCardTarget() + if not tc then return false end + local bc=tc:GetBattleTarget() + local atk=bc:GetAttack() + if bc:IsRelateToBattle() and Duel.Destroy(bc,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002757.lua b/script/c511002757.lua new file mode 100644 index 00000000..b6d4c411 --- /dev/null +++ b/script/c511002757.lua @@ -0,0 +1,106 @@ +--エクシーズ熱戦!! +function c511002757.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511002757.condition) + e1:SetCost(c511002757.cost) + e1:SetTarget(c511002757.target) + e1:SetOperation(c511002757.activate) + c:RegisterEffect(e1) +end +function c511002757.cfilter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:GetPreviousControler()==tp and (not e or c:IsRelateToEffect(e)) +end +function c511002757.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002757.cfilter,1,nil,nil,tp) and eg:IsExists(c511002757.cfilter,1,nil,nil,1-tp) +end +function c511002757.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 c511002757.filter(c,e,tp,eg) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and eg:IsExists(c511002757.rkfilter,1,nil,c:GetRank(),tp) +end +function c511002757.rkfilter(c,rk,tp) + return c:GetRank()==rk and c:GetPreviousControler()==tp +end +function c511002757.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE,1-tp)>0 + and Duel.IsExistingMatchingCard(c511002757.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,eg) + and Duel.GetFieldGroupCount(1-tp,LOCATION_EXTRA,0)>0 end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,PLAYER_ALL,0) +end +function c511002757.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Group.CreateGroup() + local tc1=nil + local tc2=nil + local tg1=eg:Filter(c511002757.cfilter,nil,e,tp) + local tg2=eg:Filter(c511002757.cfilter,nil,e,1-tp) + local fid=e:GetHandler():GetFieldID() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + tc1=Duel.SelectMatchingCard(tp,c511002757.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,eg):GetFirst() + local pos=POS_FACEUP + if Duel.GetTurnPlayer()==tp then pos=POS_FACEUP_ATTACK end + if tc1 and Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,pos) then + tc1:RegisterFlagEffect(51102757,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1,fid) + end + end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + tc2=Duel.SelectMatchingCard(1-tp,c511002757.filter,1-tp,LOCATION_EXTRA,0,1,1,nil,e,1-tp,eg):GetFirst() + local pos=POS_FACEUP + if Duel.GetTurnPlayer()~=tp then pos=POS_FACEUP_ATTACK end + if tc2 and Duel.SpecialSummonStep(tc2,0,1-tp,1-tp,false,false,pos) then + tc2:RegisterFlagEffect(51102757,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1,fid) + end + end + Duel.SpecialSummonComplete() + if tc1 then + sg:AddCard(tc1) + Duel.Overlay(tc1,tg1) + end + if tc2 then + sg:AddCard(tc2) + Duel.Overlay(tc2,tg2) + end + if tc1 and tc2 then + if Duel.GetTurnPlayer()==tp then + Duel.CalculateDamage(tc1,tc2) + else + Duel.CalculateDamage(tc2,tc1) + end + end + sg:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(sg) + e1:SetCondition(c511002757.descon) + e1:SetOperation(c511002757.desop) + Duel.RegisterEffect(e1,tp) +end +function c511002757.desfilter(c,fid) + return c:GetFlagEffectLabel(51102757)==fid +end +function c511002757.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511002757.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511002757.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511002757.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c511002758.lua b/script/c511002758.lua new file mode 100644 index 00000000..1babad5e --- /dev/null +++ b/script/c511002758.lua @@ -0,0 +1,35 @@ +--Release & Reverse +function c511002758.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002758.target) + e1:SetOperation(c511002758.activate) + c:RegisterEffect(e1) +end +function c511002758.filter(c) + return c:IsReleasableByEffect() and not c:IsHasEffect(EFFECT_SPSUMMON_CONDITION) +end +function c511002758.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002758.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0) +end +function c511002758.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,c511002758.filter,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + if Duel.Release(g,REASON_EFFECT)>0 then + local atk=g:GetFirst():GetAttack() + Duel.Damage(tp,atk,REASON_EFFECT) + Duel.BreakEffect() + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 then + Duel.SpecialSummon(g,0,1-tp,1-tp,false,false,POS_FACEUP) + end + end + end +end diff --git a/script/c511002759.lua b/script/c511002759.lua new file mode 100644 index 00000000..ad4df3ac --- /dev/null +++ b/script/c511002759.lua @@ -0,0 +1,60 @@ +--ダブルフィン・シャーク +function c511002759.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + c511002759.xyzlimit2=function(mc) return mc:IsAttribute(ATTRIBUTE_WATER) end + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(511001225) + c:RegisterEffect(e2) + if not c511002759.global_check then + c511002759.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002759.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002759.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511002760.lua b/script/c511002760.lua new file mode 100644 index 00000000..4096b3e8 --- /dev/null +++ b/script/c511002760.lua @@ -0,0 +1,60 @@ +--H・C ダブル・ランス +function c511002760.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + c511002760.xyzlimit2=function(mc) return mc:IsSetCard(0x206f) end + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(511001225) + c:RegisterEffect(e2) + if not c511002760.global_check then + c511002760.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002760.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002760.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511002761.lua b/script/c511002761.lua new file mode 100644 index 00000000..f394c741 --- /dev/null +++ b/script/c511002761.lua @@ -0,0 +1,59 @@ +--BK スイッチヒッター +function c511002761.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(511001225) + c:RegisterEffect(e1) + if not c511002761.global_check then + c511002761.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002761.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002761.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511002762.lua b/script/c511002762.lua new file mode 100644 index 00000000..1b87dfc8 --- /dev/null +++ b/script/c511002762.lua @@ -0,0 +1,44 @@ +--H-C エクスカリバー +function c511002762.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),4,2) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002762.atkcon) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95486586,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_START) + e2:SetCondition(c511002762.con) + e2:SetCost(c511002762.cost) + e2:SetOperation(c511002762.op) + c:RegisterEffect(e2) +end +function c511002762.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetBattleTarget() +end +function c511002762.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + local g=e:GetHandler():GetOverlayGroup() + Duel.SendtoGrave(g,REASON_COST) +end +function c511002762.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end +function c511002762.atkcon(e) + return Duel.GetLP(e:GetHandlerPlayer())>500 +end diff --git a/script/c511002763.lua b/script/c511002763.lua new file mode 100644 index 00000000..44c4f129 --- /dev/null +++ b/script/c511002763.lua @@ -0,0 +1,47 @@ +--ナイト・バタフライ・アサシン +function c511002763.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3) + c:EnableReviveLimit() + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2191144,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511002763.atkcon) + e1:SetCost(c511002763.atkcost) + e1:SetTarget(c511002763.atktg) + e1:SetOperation(c511002763.atkop) + c:RegisterEffect(e1) +end +function c511002763.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget() and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and (Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()) +end +function c511002763.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) + and e:GetHandler():GetFlagEffect(511002763)==0 end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) + e:GetHandler():RegisterFlagEffect(511002763,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c511002763.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetOverlayCount(tp,1,1)>1 end +end +function c511002763.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local ct=Duel.GetOverlayCount(tp,1,1) + if ct>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*400) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + end + end +end diff --git a/script/c511002764.lua b/script/c511002764.lua new file mode 100644 index 00000000..18910e44 --- /dev/null +++ b/script/c511002764.lua @@ -0,0 +1,39 @@ +--フォトン・アレキサンドラ・クイーン +function c511002764.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --return + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75797046,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002764.retcost) + e1:SetTarget(c511002764.rettg) + e1:SetOperation(c511002764.retop) + c:RegisterEffect(e1) +end +function c511002764.retcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,2,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,2,2,REASON_COST) +end +function c511002764.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511002764.hfilter(c,tp) + return not c:IsOnField() and c:IsControler(tp) +end +function c511002764.retop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + Duel.SendtoHand(g,nil,REASON_EFFECT) + local ct1=g:FilterCount(c511002764.hfilter,nil,tp) + local ct2=g:FilterCount(c511002764.hfilter,nil,1-tp) + Duel.Damage(tp,ct1*500,REASON_EFFECT,true) + Duel.Damage(1-tp,ct2*500,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511002765.lua b/script/c511002765.lua new file mode 100644 index 00000000..8402993d --- /dev/null +++ b/script/c511002765.lua @@ -0,0 +1,41 @@ +--Zero Hole +function c511002765.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002765.condition) + e1:SetTarget(c511002765.target) + e1:SetOperation(c511002765.activate) + c:RegisterEffect(e1) +end +function c511002765.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsActiveType(TYPE_MONSTER) or not Duel.IsChainDisablable(ev) or ep==tp then return false end + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SUMMON_SUCCESS,true) + if res and re:GetCode()==EVENT_SUMMON_SUCCESS and teg:IsContains(re:GetHandler()) then + return true + end + res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_FLIP_SUMMON_SUCCESS,true) + if res and re:GetCode()==EVENT_FLIP_SUMMON_SUCCESS and teg:IsContains(re:GetHandler()) then + return true + end + res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) + if res and re:GetCode()==EVENT_SPSUMMON_SUCCESS and teg:IsContains(re:GetHandler()) then + return true + end + return false +end +function c511002765.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511002765.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511002766.lua b/script/c511002766.lua new file mode 100644 index 00000000..19377d5c --- /dev/null +++ b/script/c511002766.lua @@ -0,0 +1,73 @@ +--All Zero +function c511002766.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002766.cost) + e1:SetTarget(c511002766.target) + e1:SetOperation(c511002766.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(511002766,ACTIVITY_SPSUMMON,c511002766.counterfilter) +end +function c511002766.counterfilter(c) + return c:GetReasonEffect() +end +function c511002766.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(511002766,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(e) + e1:SetTargetRange(1,0) + e1:SetTarget(c511002766.splimit) + Duel.RegisterEffect(e1,tp) +end +function c511002766.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject()~=se and se:IsHasType(EFFECT_TYPE_ACTIONS) +end +function c511002766.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002766.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002766.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002766.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002766.filter,tp,LOCATION_HAND,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4,true) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002767.lua b/script/c511002767.lua new file mode 100644 index 00000000..084909d6 --- /dev/null +++ b/script/c511002767.lua @@ -0,0 +1,93 @@ +--Fit of Rage +function c511002767.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+TIMING_BATTLE_END) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002767.condition) + e1:SetTarget(c511002767.target) + e1:SetOperation(c511002767.operation) + c:RegisterEffect(e1) + if not c511002767.global_check then + c511002767.global_check=true + c511002767[0]=0 + c511002767[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c511002767.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002767.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002767.checkop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttackTarget() then return end + if ep==tp then + c511002767[tp]=c511002767[tp]+ev + end + if ep==1-tp then + c511002767[1-tp]=c511002767[1-tp]+ev + end +end +function c511002767.clear(e,tp,eg,ep,ev,re,r,rp) + c511002767[0]=0 + c511002767[1]=0 +end +function c511002767.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return c511002767[tp]>0 and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and ph>=0x08 and ph<=0x20 +end +function c511002767.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) + local g=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 c511002767.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atk/def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002767[tp]) + 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) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --atkdown + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetOperation(c511002767.atkop) + e4:SetLabelObject(e1) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + end +end +function c511002767.atkop(e,tp,eg,ep,ev,re,r,rp) + local pe=e:GetLabelObject() + pe:SetValue(pe:GetValue()/2) +end diff --git a/script/c511002768.lua b/script/c511002768.lua new file mode 100644 index 00000000..6daa8aed --- /dev/null +++ b/script/c511002768.lua @@ -0,0 +1,61 @@ +--RUM-デス・ダブル・フォース +function c511002768.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002768.target) + e1:SetOperation(c511002768.activate) + c:RegisterEffect(e1) + if not c511002768.globle_check then + c511002768.globle_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(c511002768.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002768.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsType(TYPE_XYZ) and tc:IsReason(REASON_DESTROY) and tc:IsReason(REASON_BATTLE) then + tc:RegisterFlagEffect(511002768,RESET_EVENT+0x1fe0000,0,1) + end + tc=eg:GetNext() + end +end +function c511002768.filter1(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetFlagEffect(511002768)~=0 + and Duel.IsExistingMatchingCard(c511002768.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()*2) +end +function c511002768.filter2(c,e,tp,mc,rk) + return c:GetRank()==rk and mc:IsCanBeXyzMaterial(c) and c:IsSetCard(0xba) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511002768.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511002768.filter1(chkc,e,tp) end + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002768.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002768.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002768.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002768.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()*2) + local sc=g:GetFirst() + if sc then + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c511002769.lua b/script/c511002769.lua new file mode 100644 index 00000000..d0e8b94a --- /dev/null +++ b/script/c511002769.lua @@ -0,0 +1,97 @@ +--Modify Deep Blue +function c511002769.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetLabel(0) + e1:SetCost(c511002769.cost) + e1:SetTarget(c511002769.target) + e1:SetOperation(c511002769.activate) + c:RegisterEffect(e1) +end +function c511002769.filter(c,rk) + return c:GetLevel()==rk +end +function c511002769.xyzfilter(c,mg) + local ct=c.minxyzct + return c:IsXyzSummonable(mg) and ct<=mg:GetCount() and mg:IsExists(c511002769.mfilter,ct,nil,c) +end +function c511002769.mfilter(c,xyz) + return xyz.xyz_filter(c) and c:IsCanBeXyzMaterial(xyz) +end +function c511002769.cfilter(c,e,tp) + local rk=c:GetRank() + local mg=Duel.GetMatchingGroup(c511002769.filter,tp,LOCATION_DECK,0,nil,rk) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsAbleToRemoveAsCost() + and mg:GetCount()>1 and Duel.IsExistingMatchingCard(c511002769.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,mg) +end +function c511002769.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511002769.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511002769.cfilter,tp,LOCATION_MZONE,0,1,nil,e,tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c511002769.cfilter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.Remove(rg,POS_FACEUP,REASON_COST) + local rk=rg:GetFirst():GetRank() + Duel.SetTargetParam(rk) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002769.activate(e,tp,eg,ep,ev,re,r,rp) + local rk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local mg=Duel.GetMatchingGroup(c511002769.filter,tp,LOCATION_DECK,0,nil,rk) + local xyzg=Duel.GetMatchingGroup(c511002769.xyzfilter,tp,LOCATION_EXTRA,0,nil,mg) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:Select(tp,1,1,nil):GetFirst() + local ct=xyz.minxyzct + local ct2=xyz.maxxyzct + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=mg:FilterSelect(tp,c511002769.mfilter,ct,ct2,nil,xyz) + Duel.XyzSummon(tp,xyz,g) + end +end diff --git a/script/c511002770.lua b/script/c511002770.lua new file mode 100644 index 00000000..56401de4 --- /dev/null +++ b/script/c511002770.lua @@ -0,0 +1,44 @@ +--Spirit Coup +function c511002770.initial_effect(c) + --copy spell + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002770.condition) + e1:SetTarget(c511002770.target) + e1:SetOperation(c511002770.activate) + c:RegisterEffect(e1) +end +function c511002770.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002770.filter(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return end + local cost=te:GetCost() + local target=te:GetTarget() + return c:IsType(TYPE_TRAP) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0) or not cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) +end +function c511002770.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002770.filter(chkc,tp,eg,ep,ev,re,r,rp) end + if chk==0 then return Duel.IsExistingTarget(c511002770.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,eg,ep,ev,re,r,rp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tc=Duel.SelectTarget(tp,c511002770.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,eg,ep,ev,re,r,rp):GetFirst() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + e:SetLabelObject(te) + Duel.ClearTargetCard() + tc:CreateEffectRelation(e) + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end +end +function c511002770.activate(e,tp,eg,ep,ev,re,r,rp) + local te=e:GetLabelObject() + if not te:GetHandler():IsRelateToEffect(e) then return end + if not te then return end + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end +end diff --git a/script/c511002771.lua b/script/c511002771.lua new file mode 100644 index 00000000..fb44b1f8 --- /dev/null +++ b/script/c511002771.lua @@ -0,0 +1,31 @@ +--サイレント・ウォビー +function c511002771.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511002771,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002771.sumtg) + e1:SetOperation(c511002771.sumop) + c:RegisterEffect(e1) +end +function c511002771.filter(c) + return not c:IsPosition(POS_FACEUP_DEFENSE) and c:IsControlerCanBeChanged() +end +function c511002771.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002771.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002771.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511002771.sumop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c511002771.filter,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.ChangePosition(tc,POS_FACEUP_DEFENSE)>0 then + Duel.GetControl(tc,tp) + end + end +end diff --git a/script/c511002772.lua b/script/c511002772.lua new file mode 100644 index 00000000..1ea7ef19 --- /dev/null +++ b/script/c511002772.lua @@ -0,0 +1,59 @@ +--ガンバランサー +function c511002772.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(511001225) + c:RegisterEffect(e1) + if not c511002772.global_check then + c511002772.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002772.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002772.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511002773.lua b/script/c511002773.lua new file mode 100644 index 00000000..c7e9201a --- /dev/null +++ b/script/c511002773.lua @@ -0,0 +1,51 @@ +--RR-コール +function c511002773.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002773.cost) + e1:SetTarget(c511002773.target) + e1:SetOperation(c511002773.activate) + c:RegisterEffect(e1) +end +function c511002773.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511002773.filter1(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0xba) and c:IsLevelBelow(3) + and Duel.IsExistingMatchingCard(c511002773.filter2,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) +end +function c511002773.filter2(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002773.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:IsCode(e:GetLabel()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002773.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511002773.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + e:SetLabel(g:GetFirst():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) +end +function c511002773.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local code=tc:GetCode() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002773.filter2,tp,LOCATION_DECK,0,1,1,nil,e,tp,code) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002774.lua b/script/c511002774.lua new file mode 100644 index 00000000..0cd7dadd --- /dev/null +++ b/script/c511002774.lua @@ -0,0 +1,75 @@ +--時空混沌渦 +function c511002774.initial_effect(c) + --banish + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59650656,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511002774.descon) + e1:SetTarget(c511002774.destg) + e1:SetOperation(c511002774.desop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(59650656,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c511002774.spcon) + e2:SetTarget(c511002774.sptg) + e2:SetOperation(c511002774.spop) + c:RegisterEffect(e2) +end +function c511002774.cfilter(c,tp) + return (c:IsCode(88177324) or c:IsCode(68396121)) and c:GetPreviousControler()==tp +end +function c511002774.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002774.cfilter,1,nil,tp) +end +function c511002774.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c511002774.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,nil) + Duel.Remove(g,POP_FACEUP,REASON_EFFECT) +end +function c511002774.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c511002774.spfilter(c,e,tp) + return (c:IsCode(88177324) or c:IsCode(68396121)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002774.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002774.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002774.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002774.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002774.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + _replace_count=_replace_count+1 + if _replace_count<=_replace_max and tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002775.lua b/script/c511002775.lua new file mode 100644 index 00000000..620646de --- /dev/null +++ b/script/c511002775.lua @@ -0,0 +1,29 @@ +--死者蘇生 +function c511002775.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002775.target) + e1:SetOperation(c511002775.activate) + c:RegisterEffect(e1) +end +function c511002775.filter(c,e,tp) + return c:IsSetCard(0xe6) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c511002775.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002775.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002775.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002775.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002775.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) + end +end diff --git a/script/c511002776.lua b/script/c511002776.lua new file mode 100644 index 00000000..8f8528eb --- /dev/null +++ b/script/c511002776.lua @@ -0,0 +1,33 @@ +--防御輪 +function c511002776.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002776.condition) + e1:SetOperation(c511002776.operation) + c:RegisterEffect(e1) +end +function c511002776.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c511002776.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(c511002776.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002776.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(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 diff --git a/script/c511002777.lua b/script/c511002777.lua new file mode 100644 index 00000000..15dc9c60 --- /dev/null +++ b/script/c511002777.lua @@ -0,0 +1,34 @@ +--収縮 +function c511002777.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002777.condition) + e1:SetTarget(c511002777.target) + e1:SetOperation(c511002777.activate) + c:RegisterEffect(e1) +end +function c511002777.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002777.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511002777.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002778.lua b/script/c511002778.lua new file mode 100644 index 00000000..9d4016f2 --- /dev/null +++ b/script/c511002778.lua @@ -0,0 +1,86 @@ +--Recycle Rhinobot +function c511002778.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,c511002778.mfilter,4,3) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(10613952,1)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002778.atkcost) + e1:SetTarget(c511002778.atktg) + e1:SetOperation(c511002778.atkop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(96470883,1)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002778.descon) + e2:SetTarget(c511002778.destg) + e2:SetOperation(c511002778.desop) + c:RegisterEffect(e2) +end +function c511002778.mfilter(c) + return c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_EARTH) +end +function c511002778.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002778.atktg(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() and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c511002778.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(500) + tc:RegisterEffect(e1) + end +end +function c511002778.descon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetOverlayCount()==0 +end +function c511002778.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511002778.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511002778.filter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + local tg=g:GetMinGroup(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) + end +end +function c511002778.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002778.filter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + local tg=g:GetMinGroup(Card.GetAttack) + local sc + if tg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + sc=tg:Select(tp,1,1,nil):GetFirst() + else + sc=tg:GetFirst() + end + if Duel.Destroy(sc,REASON_EFFECT)==0 then return end + local atk=sc:GetBaseAttack() + Duel.Damage(1-tp,atk,REASON_EFFECT,true) + Duel.Damage(tp,atk,REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c511002779.lua b/script/c511002779.lua new file mode 100644 index 00000000..306c5d0a --- /dev/null +++ b/script/c511002779.lua @@ -0,0 +1,57 @@ +--クラスター・ペンデュラム +function c511002779.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(27450400,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002779.sptg) + e1:SetOperation(c511002779.spop) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(92676637,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c511002779.drcon) + e2:SetTarget(c511002779.drtg) + e2:SetOperation(c511002779.drop) + c:RegisterEffect(e2) +end +function c511002779.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,27450401,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002779.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE) + if ft>ct then ft=ct end + if ft<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,27450401,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_EARTH) then return end + local ctn=true + while ft>0 and ctn do + local token=Duel.CreateToken(tp,27450401) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + ft=ft-1 + if ft<=0 or not Duel.SelectYesNo(tp,aux.Stringid(27450400,1)) then ctn=false end + end + Duel.SpecialSummonComplete() +end +function c511002779.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO +end +function c511002779.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002779.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002780.lua b/script/c511002780.lua new file mode 100644 index 00000000..f6c0146c --- /dev/null +++ b/script/c511002780.lua @@ -0,0 +1,40 @@ +--Dark Engineering +function c511002780.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002780.target) + e1:SetOperation(c511002780.activate) + c:RegisterEffect(e1) +end +function c511002780.filter1(c,e,tp) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:GetLevel()==3 + and Duel.IsExistingMatchingCard(c511002780.filter2,tp,LOCATION_HAND,0,1,nil,e,tp,c:GetCode()) +end +function c511002780.filter2(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002780.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:IsCode(e:GetLabel()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002780.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511002780.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + e:SetLabel(g:GetFirst():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511002780.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local code=tc:GetCode() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002780.filter2,tp,LOCATION_HAND,0,1,1,nil,e,tp,code) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002789.lua b/script/c511002789.lua new file mode 100644 index 00000000..e1ca504c --- /dev/null +++ b/script/c511002789.lua @@ -0,0 +1,37 @@ +--Wild Charger +function c511002789.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002789.condition) + e1:SetTarget(c511002789.target) + e1:SetOperation(c511002789.activate) + c:RegisterEffect(e1) +end +function c511002789.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and d:IsFaceup() and d:IsType(TYPE_XYZ) and d:GetOverlayCount()==0 and d:IsControler(tp) + and a:IsControler(1-tp) +end +function c511002789.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local d=Duel.GetAttackTarget() + if chkc then return d==chkc end + if chk==0 then return d:IsOnField() and d:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(d) +end +function c511002789.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local tc=Duel.GetFirstTarget() + if a and a:IsRelateToBattle() and tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(a:GetAttack()) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002790.lua b/script/c511002790.lua new file mode 100644 index 00000000..62fd205e --- /dev/null +++ b/script/c511002790.lua @@ -0,0 +1,52 @@ +--Armored Back +function c511002790.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002790.condition) + e1:SetTarget(c511002790.target) + e1:SetOperation(c511002790.activate) + c:RegisterEffect(e1) +end +function c511002790.cfilter(c,tp) + local ec=c:GetPreviousEquipTarget() + return c:IsReason(REASON_LOST_TARGET) and ec and ec:GetPreviousControler()==tp + and c:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_EXTRA) and ec:IsLocation(LOCATION_GRAVE) +end +function c511002790.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511002790.cfilter,nil,tp) + return g:GetCount()==1 +end +function c511002790.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511002790.cfilter,nil,tp) + local tc=g:GetFirst():GetPreviousEquipTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and tc and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) and e:IsHasType(EFFECT_TYPE_ACTIVATE) end + Duel.SetTargetCard(tc) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) +end +function c511002790.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local g=eg:Filter(c511002790.cfilter,nil,tp) + local tc=g:GetFirst() + if not tc or not tc:IsRelateToEffect(e) then return end + local ec=tc:GetPreviousEquipTarget() + if not ec or not ec:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(ec,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.Equip(tp,tc,ec) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + ec:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + ec:RegisterEffect(e2) + end +end diff --git a/script/c511002791.lua b/script/c511002791.lua new file mode 100644 index 00000000..a81a8e79 --- /dev/null +++ b/script/c511002791.lua @@ -0,0 +1,30 @@ +--Quizzer Panel 9 +function c511002791.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001039,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002791.target) + e1:SetOperation(c511002791.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c511002791.filter(c) + return c:IsSetCard(0x1213) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c511002791.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511002791.filter,tp,LOCATION_GRAVE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c511002791.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002791.filter,tp,LOCATION_GRAVE,0,nil) + if g:GetCount()>0 then + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + end +end diff --git a/script/c511002792.lua b/script/c511002792.lua new file mode 100644 index 00000000..2a72142b --- /dev/null +++ b/script/c511002792.lua @@ -0,0 +1,36 @@ +--Question Change +function c511002792.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511002792.condition) + e1:SetTarget(c511002792.target) + e1:SetOperation(c511002792.activate) + c:RegisterEffect(e1) +end +function c511002792.condition(e,tp,eg,ep,ev,re,r,rp) + if not re then return false end + local rc=re:GetHandler() + return ep==tp and bit.band(r,REASON_EFFECT)~=0 and rc and rc:GetOwner()==tp and rc:IsSetCard(0x1213) + and ev>0 +end +function c511002792.filter(c) + return c:IsSetCard(0x1213) and c:IsFacedown() +end +function c511002792.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002792.filter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(c511002792.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511002792.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(tp,Duel.GetLP(tp)+ev) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectMatchingCard(tp,c511002792.filter,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.ChangePosition(g,0,POS_FACEUP_ATTACK,0,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511002793.lua b/script/c511002793.lua new file mode 100644 index 00000000..3d6c076b --- /dev/null +++ b/script/c511002793.lua @@ -0,0 +1,83 @@ +--ゲイザー・シャーク +function c511002793.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --xyzlimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c511002793.xyzlimit) + c:RegisterEffect(e1) + --banish + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c511002793.rmop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(511002793) + c:RegisterEffect(e3) + if not c511002793.global_check then + c511002793.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002793.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002793.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511002793.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(511002794)>0 then + Duel.Remove(c,POS_FACEUP,REASON_EFFECT) + c:ResetFlagEffect(511002794) + end +end +function c511002793.xyzlimit(e,c) + if not c then return false end + return not e:GetHandler():IsLocation(LOCATION_GRAVE) +end diff --git a/script/c511002794.lua b/script/c511002794.lua new file mode 100644 index 00000000..1feb06fd --- /dev/null +++ b/script/c511002794.lua @@ -0,0 +1,170 @@ +--ZW-玄武絶対聖盾 +function c511002794.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(18865703,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002794.eqtg) + e1:SetOperation(c511002794.eqop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(18865703,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetTarget(c511002794.sptg) + e2:SetOperation(c511002794.spop) + c:RegisterEffect(e2) +end +function c511002794.filter(c) + return c:IsFaceup() and c:IsCode(56840427) +end +function c511002794.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002794.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511002794.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002794.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002794.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or not tc or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002794.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(2000) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --0 damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CHANGE_DAMAGE) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetValue(c511002794.refcon) + e3:SetLabel(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + --Atk,def + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetValue(c511002794.value) + e4:SetLabelObject(e3) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + --Negate Damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_CHAINING) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(aux.damcon1) + e5:SetOperation(c511002794.negop) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) +end +function c511002794.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c511002794.refcon(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then + local atk=e:GetLabel() + e:SetLabel(atk+val) + return 0 + else + return val + end +end +function c511002794.value(e,c) + return e:GetLabelObject():GetLabel() +end +function c511002794.negop(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetOperation(c511002794.negop2) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002794.negop2(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(28265983,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local sg=g:Select(tp,1,1,nil) + local tc=sg:GetFirst() + if tc then + Duel.HintSelection(sg) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + end +end +function c511002794.spfilter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002794.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and c511002794.spfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002794.spfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil,e,tp) + and ft>0 end + if ft>3 then ft=3 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002794.spfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,ft,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c511002794.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + sg=sg:Select(tp,ft,ft,nil) + end + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002795.lua b/script/c511002795.lua new file mode 100644 index 00000000..473bac41 --- /dev/null +++ b/script/c511002795.lua @@ -0,0 +1,70 @@ +--Black Feather Cursed Guard +function c511002795.initial_effect(c) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000995,0)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c511002795.condition) + e2:SetTarget(c511002795.target) + e2:SetOperation(c511002795.activate) + c:RegisterEffect(e2) +end +function c511002795.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not tg or tg:GetCount()~=1 or not tg:GetFirst():IsSetCard(0x33) or not tg:GetFirst():IsLocation(LOCATION_MZONE) + or tg:GetFirst():IsControler(1-tp) then return false end + return rp~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c511002795.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + local tc=tg:GetFirst() + if chk==0 then return tc and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511002795.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + Duel.NegateEffect(ev) + --destroy replace + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetRange(LOCATION_SZONE) + e1:SetTarget(c511002795.destg) + e1:SetValue(c511002795.desval) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c511002795.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if chk==0 then return tc and eg:IsContains(tc) and tc:GetAttack()>=400 and tc:GetLevel()>1 end + if Duel.SelectYesNo(tp,aux.Stringid(511002795,0)) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-400) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_LEVEL) + e2:SetValue(-1) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + return true + else return false + end +end +function c511002795.desval(e,c) + return c==e:GetHandler():GetFirstCardTarget() +end diff --git a/script/c511002796.lua b/script/c511002796.lua new file mode 100644 index 00000000..4f0d107b --- /dev/null +++ b/script/c511002796.lua @@ -0,0 +1,39 @@ +--極星霊リョースアールヴ +function c511002796.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40666140,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002796.sptg) + e1:SetOperation(c511002796.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511002796.filter(c,lv,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c511002796.filter2,tp,LOCATION_MZONE,0,1,nil,lv,c:GetLevel()) +end +function c511002796.filter2(c,lv1,lv2) + local lv=c:GetLevel() + return c:IsFaceup() and lv>0 and lv2<=lv+lv1 +end +function c511002796.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002796.filter,tp,LOCATION_HAND,0,1,nil,e:GetHandler():GetLevel(),e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002796.spop(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 sg=Duel.SelectMatchingCard(tp,c511002796.filter,tp,LOCATION_HAND,0,1,1,nil,e:GetHandler():GetLevel(),e,tp) + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002797.lua b/script/c511002797.lua new file mode 100644 index 00000000..36090506 --- /dev/null +++ b/script/c511002797.lua @@ -0,0 +1,27 @@ +--Mischief of the Goddess +function c511002797.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002797.target) + e1:SetOperation(c511002797.operation) + c:RegisterEffect(e1) +end +function c511002797.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 and Duel.GetLocationCount(1-tp,LOCATION_SZONE)>0 end +end +function c511002797.filter(c) + return c:IsType(TYPE_SPELL) and c:IsSSetable() +end +function c511002797.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002797.filter,tp,0,LOCATION_HAND,nil) + local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.ConfirmCards(tp,hg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local sg=g:Select(tp,1,1,nil) + Duel.SSet(1-tp,sg:GetFirst()) + end + Duel.ShuffleHand(1-tp) +end diff --git a/script/c511002798.lua b/script/c511002798.lua new file mode 100644 index 00000000..6bcc1a96 --- /dev/null +++ b/script/c511002798.lua @@ -0,0 +1,32 @@ +--Chaos Rising +function c511002798.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511002798.condition) + e1:SetTarget(c511002798.target) + e1:SetOperation(c511002798.activate) + c:RegisterEffect(e1) +end +function c511002798.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return ep==tp and ev>=2000 and (a:IsSetCard(0x1048) or (d and d:IsSetCard(0x1048))) +end +function c511002798.spfilter(c,e,tp) + return c:IsSetCard(0x1048) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002798.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002798.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511002798.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002798.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()>0 then + local sg=g:RandomSelect(tp,1) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002799.lua b/script/c511002799.lua new file mode 100644 index 00000000..8fd255b3 --- /dev/null +++ b/script/c511002799.lua @@ -0,0 +1,81 @@ +--Scar-Dragon Whip +function c511002799.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:SetCost(c511002799.cost) + e1:SetTarget(c511002799.target) + e1:SetOperation(c511002799.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + 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) + --return + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(47126872,1)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c511002799.retcon) + e4:SetTarget(c511002799.rettg) + e4:SetOperation(c511002799.retop) + e4:SetLabelObject(e1) + c:RegisterEffect(e4) +end +function c511002799.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,0,LOCATION_HAND,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,0,LOCATION_HAND,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511002799,RESET_EVENT+0x1fe0000,0,1) + tc=g:GetNext() + end + g:KeepAlive() + e:SetLabelObject(g) +end +function c511002799.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 c511002799.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002799.filter(c) + return c:GetFlagEffect(511002799)~=0 +end +function c511002799.retcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject():GetLabelObject() + return g:IsExists(c511002799.filter,1,nil) +end +function c511002799.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=e:GetLabelObject():GetLabelObject():Filter(c511002799.filter,nil,e:GetHandler()) + Duel.SetTargetCard(g) +end +function c511002799.retop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoHand(g,1-tp,REASON_EFFECT) + end +end diff --git a/script/c511002800.lua b/script/c511002800.lua new file mode 100644 index 00000000..e0b989b9 --- /dev/null +++ b/script/c511002800.lua @@ -0,0 +1,48 @@ +--Half Capture +function c511002800.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002800.con) + e1:SetOperation(c511002800.activate) + c:RegisterEffect(e1) +end +function c511002800.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511002800.activate(e,tp,eg,ep,ev,re,r,rp) + local dam=Duel.GetBattleDamage(tp)/2 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002800.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetCountLimit(1) + e2:SetLabel(dam) + e2:SetOperation(c511002800.op) + e2:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e2,tp) +end +function c511002800.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) +end +function c511002800.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511002800) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(e:GetLabel()) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002801.lua b/script/c511002801.lua new file mode 100644 index 00000000..4db0b164 --- /dev/null +++ b/script/c511002801.lua @@ -0,0 +1,28 @@ +--Assault Cyclone +function c511002801.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002801.condition) + e1:SetTarget(c511002801.target) + e1:SetOperation(c511002801.activate) + c:RegisterEffect(e1) +end +function c511002801.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainDisablable(ev) and Duel.GetAttacker() +end +function c511002801.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511002801.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511002802.lua b/script/c511002802.lua new file mode 100644 index 00000000..c4359761 --- /dev/null +++ b/script/c511002802.lua @@ -0,0 +1,35 @@ +--Synchro Nova +function c511002802.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002802.target) + e1:SetOperation(c511002802.activate) + c:RegisterEffect(e1) +end +function c511002802.filter(c,e,tp,lv) + return c:IsType(TYPE_SYNCHRO) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002802.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetFieldGroup(tp,LOCATION_GRAVE,0) + if chk==0 then return g:GetCount()>0 and g:FilterCount(Card.IsAbleToRemove,nil)==g:GetCount() + and g:IsExists(Card.IsType,1,nil,TYPE_SYNCHRO) and g:IsExists(Card.IsType,1,nil,TYPE_TUNER) + and Duel.IsExistingMatchingCard(c511002802.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,g:GetCount()) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002802.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_GRAVE,0,nil) + local ct=Duel.Remove(g,POP_FACEUP,REASON_EFFECT) + if ct>0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c511002802.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,ct) + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002803.lua b/script/c511002803.lua new file mode 100644 index 00000000..b1f6793c --- /dev/null +++ b/script/c511002803.lua @@ -0,0 +1,46 @@ +--Defense Drain +function c511002803.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetTarget(c511002803.target) + e1:SetOperation(c511002803.activate) + c:RegisterEffect(e1) +end +function c511002803.filter(c) + return c:IsFaceup() and c:GetDefense()>0 +end +function c511002803.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002803.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002803.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c511002803.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local g2=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,0)) + local sg1=g1:Select(tp,1,1,nil) + local tc1=sg1:GetFirst() + Duel.HintSelection(sg1) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,1)) + local sg2=g2:Select(tp,1,1,nil) + local tc2=sg2:GetFirst() + Duel.HintSelection(sg2) + local def=tc1:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(0) + if tc1:RegisterEffect(e1) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(def) + tc2:RegisterEffect(e2) + end + end +end diff --git a/script/c511002804.lua b/script/c511002804.lua new file mode 100644 index 00000000..4e66d515 --- /dev/null +++ b/script/c511002804.lua @@ -0,0 +1,117 @@ +--Flash Tune +function c511002804.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002804.condition) + e1:SetTarget(c511002804.target) + e1:SetOperation(c511002804.activate) + c:RegisterEffect(e1) +end +function c511002804.condition(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsType,nil,TYPE_SYNCHRO) + return g:GetCount()==1 +end +function c511002804.matfilter(c,lv,syncard,mclv) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local clv=c:GetSynchroLevel(syncard) + return clv>0 and clv==lv-mclv and mt.tuner_filter and mt.tuner_filter(mc) +end +function c511002804.filter(c,e,tp,mc) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local mclv=mc:GetSynchroLevel(c) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,false) + and Duel.IsExistingMatchingCard(c511002804.matfilter,tp,LOCATION_HAND,0,1,nil,c:GetLevel(),c,mclv) + and mt.sync and mt.minntct and mt.minntct==1 and mt.nontuner_filter and mt.nontuner_filter(mc) + and mc:IsNotTuner() +end +function c511002804.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(Card.IsType,nil,TYPE_SYNCHRO) + local tc=g:GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511002804.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,tc) end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002804.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=eg:Filter(Card.IsType,nil,TYPE_SYNCHRO):GetFirst() + if not tc or not tc:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c511002804.filter,tp,LOCATION_EXTRA,0,nil,e,tp,tc) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=g:Select(tp,1,1,nil):GetFirst() + local code=sc:GetOriginalCode() + local mt=_G["c" .. code] + local mclv=tc:GetSynchroLevel(sc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat=Duel.SelectMatchingCard(tp,c511002804.matfilter,tp,LOCATION_HAND,0,1,1,nil,sc:GetLevel(),sc,mclv) + mat:AddCard(tc) + sc:SetMaterial(mat) + Duel.SendtoGrave(mat,REASON_EFFECT+REASON_MATERIAL+REASON_SYNCHRO) + Duel.SpecialSummon(sc,SUMMON_TYPE_SYNCHRO,tp,tp,true,false,POS_FACEUP_ATTACK) + sc:CompleteProcedure() + end +end diff --git a/script/c511002805.lua b/script/c511002805.lua new file mode 100644 index 00000000..28c1bebc --- /dev/null +++ b/script/c511002805.lua @@ -0,0 +1,22 @@ +--Cornfused +function c511002805.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002805.condition) + e1:SetTarget(c511002805.target) + e1:SetOperation(c511002805.activate) + c:RegisterEffect(e1) +end +function c511002805.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_EFFECT) and Duel.IsChainDisablable(ev) +end +function c511002805.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511002805.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c511002806.lua b/script/c511002806.lua new file mode 100644 index 00000000..bb5c40c7 --- /dev/null +++ b/script/c511002806.lua @@ -0,0 +1,27 @@ +--Let Me Off Easy +function c511002806.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002806.condition) + e1:SetCost(c511002806.cost) + e1:SetTarget(c511002806.target) + e1:SetOperation(c511002806.activate) + c:RegisterEffect(e1) +end +function c511002806.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev) +end +function c511002806.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 c511002806.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511002806.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c511002807.lua b/script/c511002807.lua new file mode 100644 index 00000000..de48defb --- /dev/null +++ b/script/c511002807.lua @@ -0,0 +1,20 @@ +--スターダスト・シャオロン +function c511002807.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_SPSUM_PARAM+EFFECT_FLAG_UNCOPYABLE) + e1:SetTargetRange(POS_FACEUP_ATTACK,0) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511002807.spcon) + c:RegisterEffect(e1) +end +function c511002807.filter(c) + return c:IsFaceup() and c:IsCode(44508094) +end +function c511002807.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c511002807.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002808.lua b/script/c511002808.lua new file mode 100644 index 00000000..245b00ad --- /dev/null +++ b/script/c511002808.lua @@ -0,0 +1,52 @@ +--ビーストアイズ・ペンデュラム・ドラゴン +function c511002808.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xf2),aux.FilterBoolFunction(Card.IsRace,RACE_BEAST),true) + --damage + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c511002808.damcon) + e3:SetTarget(c511002808.damtg) + e3:SetOperation(c511002808.damop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetOperation(c511002808.valcheck) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) +end +function c511002808.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsType(TYPE_MONSTER) +end +function c511002808.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetLabel() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002808.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002808.valcheck(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=c:GetMaterial():Filter(Card.IsRace,nil,RACE_BEAST) + local atk=0 + if g:GetCount()>0 and bit.band(c:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION then + local tc=g:GetFirst() + if tc:GetPreviousControler()==c:GetControler() and tc:IsPreviousLocation(LOCATION_ONFIELD) then + atk=tc:GetTextAttack() + end + if atk<0 then atk=0 end + end + e:GetLabelObject():SetLabel(atk) +end diff --git a/script/c511002809.lua b/script/c511002809.lua new file mode 100644 index 00000000..09dae8bc --- /dev/null +++ b/script/c511002809.lua @@ -0,0 +1,59 @@ +--ルーンアイズ・ペンデュラム・ドラゴン +function c511002809.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xf2),aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER),true) + --multi attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002809.condition) + e1:SetOperation(c511002809.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c511002809.valcheck) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c511002809.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end +function c511002809.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local flag=e:GetLabel() + if bit.band(flag,0x7)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + if flag==0x4 then + e1:SetValue(4) + elseif flag==0x2 then + e1:SetDescription(aux.Stringid(1516510,1)) + e1:SetValue(2) + else + e1:SetDescription(aux.Stringid(1516510,0)) + e1:SetValue(1) + end + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c511002809.valcheck(e,c) + local g=c:GetMaterial() + local flag=0 + if g:GetCount()==2 then + local lg2=g:Filter(Card.IsRace,nil,RACE_SPELLCASTER) + local lv=lg2:GetFirst():GetOriginalLevel() + if lv==5 or lv==6 then + flag=0x2 + elseif lv>6 then + flag=0x4 + elseif lv>0 then + flag=0x1 + end + end + e:GetLabelObject():SetLabel(flag) +end diff --git a/script/c511002810.lua b/script/c511002810.lua new file mode 100644 index 00000000..6906a109 --- /dev/null +++ b/script/c511002810.lua @@ -0,0 +1,71 @@ +--モノマネンド +function c511002810.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002810.target) + e1:SetOperation(c511002810.activate) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_ONFIELD) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511002810.descon) + e2:SetOperation(c511002810.desop) + c:RegisterEffect(e2) +end +function c511002810.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsAttackPos() + and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetCode(),0,0x21,0,0,1,c:GetRace(),c:GetAttribute()) +end +function c511002810.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002810.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c511002810.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATTACK) + local g=Duel.SelectTarget(tp,c511002810.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002810.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,tc:GetCode(),0,0x21,0,0,1,tc:GetRace(),tc:GetAttribute()) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_SPELL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(tc:GetCode()) + c:RegisterEffect(e1) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + c:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + c:RegisterEffect(e5) + local e6=e1:Clone() + e6:SetCode(EFFECT_REMOVE_TYPE) + e6:SetValue(TYPE_TRAP) + c:RegisterEffect(e6) + c:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000,1) + c:SetCardTarget(tc) +end +function c511002810.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c511002810.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511002811.lua b/script/c511002811.lua new file mode 100644 index 00000000..85e033d8 --- /dev/null +++ b/script/c511002811.lua @@ -0,0 +1,80 @@ +--Performance Resurrection - Reborn Force +function c511002811.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002811.condition) + e1:SetOperation(c511002811.activate) + c:RegisterEffect(e1) + if not c511002811.global_check then + c511002811.global_check=true + c511002811[0]=true + c511002811[1]=true + --check + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511002811.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002811.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002811.condition(e,tp,eg,ep,ev,re,r,rp) + return c511002811[tp] +end +function c511002811.cfilter(c) + return c:IsSetCard(0x9f) and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) + and bit.band(c:GetReason(),REASON_DESTROY)==REASON_DESTROY +end +function c511002811.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511002811.cfilter,nil) + local tc=g:GetFirst() + while tc do + c511002811[tc:GetPreviousControler()]=true + tc=g:GetNext() + end +end +function c511002811.clear(e,tp,eg,ep,ev,re,r,rp) + c511002811[0]=false + c511002811[1]=false +end +function c511002811.activate(e,tp,eg,ep,ev,re,r,rp) + --reflect + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(aux.damcon1) + e1:SetOperation(c511002811.damop) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local ph=Duel.GetCurrentPhase() + if ph>=0x08 and ph<=0x20 then + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end +function c511002811.damop(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_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511002811.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002811.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c511002812.lua b/script/c511002812.lua new file mode 100644 index 00000000..9de5699a --- /dev/null +++ b/script/c511002812.lua @@ -0,0 +1,63 @@ +--Photon Specter +function c511002812.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64605089,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511002812.condition) + e1:SetCost(c511002812.cost) + e1:SetTarget(c511002812.target) + e1:SetOperation(c511002812.operation) + c:RegisterEffect(e1) +end +function c511002812.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511002812.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002812.filter(c,e,tp) + return c:IsSetCard(0x55) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002812.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002812.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002812.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002812.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002812.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_UPDATE_ATTACK) + e0:SetValue(-1000) + e0:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e0,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002813.lua b/script/c511002813.lua new file mode 100644 index 00000000..4fff2de5 --- /dev/null +++ b/script/c511002813.lua @@ -0,0 +1,25 @@ +--異次元からの埋葬 +function c511002813.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002813.target) + e1:SetOperation(c511002813.activate) + c:RegisterEffect(e1) +end +function c511002813.filter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) +end +function c511002813.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511002813.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil) end + local g=Duel.GetMatchingGroup(c511002813.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c511002813.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002813.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT+REASON_RETURN) + end +end diff --git a/script/c511002814.lua b/script/c511002814.lua new file mode 100644 index 00000000..fee9849c --- /dev/null +++ b/script/c511002814.lua @@ -0,0 +1,76 @@ +--罅割れゆく斧 +function c511002814.initial_effect(c) + --discard + 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(c511002814.condition) + e1:SetTarget(c511002814.target) + e1:SetOperation(c511002814.activate) + c:RegisterEffect(e1) + if not c511002814.global_check then + c511002814.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetCode(EVENT_LEAVE_FIELD) + ge1:SetOperation(c511002814.resetop) + Duel.RegisterEffect(ge1,0) + --counter + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_TURN_END) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002814.ctop) + Duel.RegisterEffect(ge2,0) + end +end +function c511002814.resfilter(c) + return c:GetOriginalCode()==511002814 +end +function c511002814.resetop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002814.resfilter,tp,0xf7,0xf7,nil) + local tc=g:GetFirst() + while tc do + tc:ResetFlagEffect(511002814) + tc=g:GetNext() + end +end +function c511002814.regfilter(c,tp) + return c:GetOriginalCode()==511002814 and c:IsFacedown() +end +function c511002814.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002814.regfilter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(511002814,RESET_EVENT+0x1fe0000,0,1) + tc=g:GetNext() + end +end +function c511002814.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002814.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + local ct=c:GetFlagEffect(511002814) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return ct>0 and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetTargetParam(ct) +end +function c511002814.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(-ct*500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002815.lua b/script/c511002815.lua new file mode 100644 index 00000000..8c03b6bb --- /dev/null +++ b/script/c511002815.lua @@ -0,0 +1,43 @@ +--Future Energy +function c511002815.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511002815.condition) + e1:SetTarget(c511002815.target) + e1:SetOperation(c511002815.activate) + c:RegisterEffect(e1) +end +function c511002815.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511002815.filter2(c) + return c:GetAttack()>0 +end +function c511002815.condition(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c511002815.filter,tp,LOCATION_MZONE,0,nil) + local g2=Duel.GetMatchingGroup(c511002815.filter,tp,0,LOCATION_MZONE,nil) + local gc1=g1:Filter(c511002815.filter2,nil) + local gc2=g2:Filter(c511002815.filter2,nil) + return g1:GetCount()>0 and g2:GetCount()>0 and gc1:GetSum(Card.GetAttack)0 +end +function c511002816.atcon(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>1 +end diff --git a/script/c511002817.lua b/script/c511002817.lua new file mode 100644 index 00000000..90212489 --- /dev/null +++ b/script/c511002817.lua @@ -0,0 +1,32 @@ +--Rival Crush +function c511002817.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(c511002817.condition) + e1:SetOperation(c511002817.activate) + c:RegisterEffect(e1) +end +function c511002817.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()atk and c:IsAttackable() and c:GetAttackedCount()0 and Duel.IsExistingMatchingCard(c511002817.filter,p,LOCATION_MZONE,0,1,nil,atk) +end diff --git a/script/c511002818.lua b/script/c511002818.lua new file mode 100644 index 00000000..be499b51 --- /dev/null +++ b/script/c511002818.lua @@ -0,0 +1,31 @@ +--ダークシー・レスキュー +function c511002818.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34659866,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511002818.drcon) + e1:SetTarget(c511002818.drtg) + e1:SetOperation(c511002818.drop) + c:RegisterEffect(e1) +end +function c511002818.drcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_SYNCHRO +end +function c511002818.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetHandler():GetReasonCard() + local p=e:GetHandler():GetOwner() + local ct=1 + if tc:IsDefensePos() then ct=ct+1 end + Duel.SetTargetPlayer(p) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,p,ct) +end +function c511002818.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002819.lua b/script/c511002819.lua new file mode 100644 index 00000000..af43de23 --- /dev/null +++ b/script/c511002819.lua @@ -0,0 +1,27 @@ +--Knife Throw +function c511002819.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002819.target) + e1:SetOperation(c511002819.activate) + c:RegisterEffect(e1) +end +function c511002819.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsDestructable() +end +function c511002819.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002819.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002819.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002819.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002819.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002820.lua b/script/c511002820.lua new file mode 100644 index 00000000..58815e13 --- /dev/null +++ b/script/c511002820.lua @@ -0,0 +1,20 @@ +--Morphtronicize +function c511002820.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_ADD_SETCODE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511002820.tg) + e2:SetValue(0x26) + c:RegisterEffect(e2) +end +function c511002820.tg(e,c) + return c:GetLevel()<=4 +end diff --git a/script/c511002821.lua b/script/c511002821.lua new file mode 100644 index 00000000..5cce86ab --- /dev/null +++ b/script/c511002821.lua @@ -0,0 +1,117 @@ +--アーマード・サイバーン +function c511002821.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67159705,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002821.eqtg) + e1:SetOperation(c511002821.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67159705,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002821.uncon) + e2:SetTarget(c511002821.sptg) + e2:SetOperation(c511002821.spop) + c:RegisterEffect(e2) + --destroy sub + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetCondition(c511002821.uncon) + e3:SetValue(1) + c:RegisterEffect(e3) + --eqlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511002821.eqlimit) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(67159705,2)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1) + e5:SetCondition(c511002821.uncon) + e5:SetTarget(c511002821.destg) + e5:SetOperation(c511002821.desop) + c:RegisterEffect(e5) +end +function c511002821.uncon(e) + return e:GetHandler():IsStatus(STATUS_UNION) +end +function c511002821.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c511002821.eqlimit(e,c) + return c:IsSetCard(0x93) and c:IsRace(RACE_MACHINE) +end +function c511002821.filter(c) + return c:IsFaceup() and c:IsSetCard(0x93) and c:IsRace(RACE_MACHINE) and c:GetUnionCount()==0 +end +function c511002821.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c67159705.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(511002821)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511002821.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511002821.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(511002821,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002821.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc or not tc:IsRelateToEffect(e) or not c511002821.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + c:SetStatus(STATUS_UNION,true) +end +function c511002821.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511002821)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(511002821,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002821.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + end +end +function c511002821.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c67159705.desfilter(chkc) end + if chk==0 then return e:GetHandler():GetEquipTarget():GetAttack()>=1000 + and Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002821.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:GetEquipTarget():GetAttack()<1000 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511002822.lua b/script/c511002822.lua new file mode 100644 index 00000000..edbc2962 --- /dev/null +++ b/script/c511002822.lua @@ -0,0 +1,124 @@ +--Prayer to the Evil Spirits +function c511002822.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74335036,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002822.target) + e1:SetOperation(c511002822.activate) + c:RegisterEffect(e1) +end +function c511002822.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + and (c:IsFusionCode(96470883) or c:IsFusionCode(49674183) or c:IsHasEffect(EFFECT_FUSION_SUBSTITUTE)) +end +function c511002822.check(c,g1,g2,chkf) + local tc1=g1:GetFirst() + while tc1 do + local tc2=g2:GetFirst() + while tc2 do + local m=Group.CreateGroup() + m:AddCard(tc1) + m:AddCard(tc2) + if c:CheckFusionMaterial(m,nil,chkf) then + return true + end + tc2=g2:GetNext() + end + tc1=g1:GetNext() + end + return false +end +function c511002822.checkop(c,g1,g2,chkf) + local tc1=g1:GetFirst() + while tc1 do + local tc2=g2:GetFirst() + while tc2 do + local m=Group.CreateGroup() + m:AddCard(tc1) + m:AddCard(tc2) + if c:CheckFusionMaterial(m,nil,chkf) then + tc1:RegisterFlagEffect(511002822,RESET_CHAIN,0,0) + tc2:RegisterFlagEffect(511002822,RESET_CHAIN,0,0) + end + tc2=g2:GetNext() + end + tc1=g1:GetNext() + end +end +function c511002822.filter2(c,e,tp,m1,m2,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c511002822.check(c,m1,m2,chkf) +end +function c511002822.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002822.filter1,tp,LOCATION_HAND,0,nil,e) + local mg2=Duel.GetMatchingGroup(c511002822.filter1,tp,LOCATION_GRAVE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c511002822.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,mg2,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511002822.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,Group.CreateGroup(),mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002822.matfilter1(c) + return c:GetFlagEffect(511002822)>0 +end +function c511002822.matfilter2(c,fusc,m,chkf) + m:AddCard(c) + local chk=false + if fusc:CheckFusionMaterial(m,nil,chkf) then + chk=true + end + m:RemoveCard(c) + return c:GetFlagEffect(511002822)>0 and chk +end +function c511002822.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002822.filter1,tp,LOCATION_HAND,0,nil,e) + local mg2=Duel.GetMatchingGroup(c511002822.filter1,tp,LOCATION_GRAVE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511002822.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,mg2,nil,chkf) + local mg3=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511002822.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,Group.CreateGroup(),mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + c511002822.checkop(tc,mg1,mg2,chkf) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local mat1=mg1:FilterSelect(tp,c511002822.matfilter1,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local mat2=mg2:FilterSelect(tp,c511002822.matfilter2,1,1,nil,tc,mat1,chkf) + mat1:Merge(mat2) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511002823.lua b/script/c511002823.lua new file mode 100644 index 00000000..d38bfae2 --- /dev/null +++ b/script/c511002823.lua @@ -0,0 +1,80 @@ +--Ancient Gear Scrap Fusion +function c511002823.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002823.target) + e1:SetOperation(c511002823.activate) + c:RegisterEffect(e1) +end +function c511002823.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002823.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) and c:IsSetCard(0x7) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511002823.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002823.filter1,tp,LOCATION_GRAVE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c511002823.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511002823.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002823.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002823.filter1,tp,LOCATION_GRAVE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511002823.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511002823.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummonStep(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + tc:CompleteProcedure() + end +end diff --git a/script/c511002824.lua b/script/c511002824.lua new file mode 100644 index 00000000..7bee94eb --- /dev/null +++ b/script/c511002824.lua @@ -0,0 +1,63 @@ +--次元誘爆 +function c511002824.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002824.cost) + e1:SetTarget(c511002824.target) + e1:SetOperation(c511002824.operation) + c:RegisterEffect(e1) +end +function c511002824.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsAbleToExtraAsCost() +end +function c511002824.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002824.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c511002824.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoDeck(g,nil,0,REASON_COST) +end +function c511002824.filter(c,e,tp) + return c:IsFaceup() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002824.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return (Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511002824.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp)) + or (Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002824.filter,1-tp,LOCATION_REMOVED,0,1,nil,e,1-tp)) end + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c511002824.filter,tp,LOCATION_REMOVED,0,ft1,ft1,nil,e,tp) + local ft2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft2>2 then ft2=2 end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(1-tp,c511002824.filter,1-tp,LOCATION_REMOVED,0,ft2,ft2,nil,e,1-tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,g1:GetCount(),0,0) +end +function c511002824.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local g1=g:Filter(Card.IsControler,nil,tp) + local g2=g:Filter(Card.IsControler,nil,1-tp) + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft1>=g1:GetCount() then + local tc=g1:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc=g1:GetNext() + end + end + local ft2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft2>=g2:GetCount() then + local tc=g2:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,1-tp,1-tp,false,false,POS_FACEUP) + tc=g2:GetNext() + end + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002825.lua b/script/c511002825.lua new file mode 100644 index 00000000..267a8771 --- /dev/null +++ b/script/c511002825.lua @@ -0,0 +1,106 @@ +--パワー・ボンド +function c511002825.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002825.target) + e1:SetOperation(c511002825.activate) + c:RegisterEffect(e1) +end +function c511002825.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002825.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsRace(RACE_MACHINE) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511002825.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511002825.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511002825.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002825.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002825.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511002825.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511002825.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetLabelObject(tc) + e2:SetCondition(c511002825.damcon) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END then + e2:SetLabel(Duel.GetTurnCount()) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e2:SetLabel(0) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + e2:SetOperation(c511002825.damop) + Duel.RegisterEffect(e2,tp) + else + local cg1=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_MZONE,0) + local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) + if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) + and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then + Duel.ConfirmCards(1-tp,cg1) + Duel.ConfirmCards(1-tp,cg2) + Duel.ShuffleHand(tp) + end + end +end +function c511002825.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() +end +function c511002825.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Damage(tc:GetControler(),tc:GetBaseAttack(),REASON_EFFECT) +end diff --git a/script/c511002826.lua b/script/c511002826.lua new file mode 100644 index 00000000..e11b1623 --- /dev/null +++ b/script/c511002826.lua @@ -0,0 +1,98 @@ +--サイバネティック・ヒドゥン・テクノロジー +function c511002826.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002826.target) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(92773018,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCondition(c511002826.descon) + e2:SetCost(c511002826.descost) + e2:SetTarget(c511002826.destg) + e2:SetOperation(c511002826.desop) + c:RegisterEffect(e2) + --destroy (hand) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(17266660,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_HAND) + e3:SetCost(c511002826.descost2) + e3:SetTarget(c511002826.destg2) + e3:SetOperation(c511002826.desop2) + c:RegisterEffect(e3) +end +function c511002826.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local a=Duel.GetAttacker() + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and c511002826.descon(e,tp,Group.FromCards(a),ep,ev,re,r,rp) + and c511002826.descost(e,tp,Group.FromCards(a),ep,ev,re,r,rp,0) and c511002826.destg(e,tp,Group.FromCards(a),ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,aux.Stringid(92773018,1)) then + e:SetCategory(CATEGORY_DESTROY) + e:SetOperation(c511002826.desop) + c511002826.descost(e,tp,Group.FromCards(a),ep,ev,re,r,rp,1) + c511002826.destg(e,tp,Group.FromCards(a),ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c511002826.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002826.cfilter(c,x) + return (x or c:IsFaceup()) and c:IsSetCard(0x93) and c:IsRace(RACE_MACHINE) and c:IsAbleToGraveAsCost() +end +function c511002826.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002826.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002826.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002826.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if chk==0 then return a:IsOnField() and a:IsDestructable() end + Duel.SetTargetCard(a) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,a,1,0,0) +end +function c511002826.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + end + Duel.BreakEffect() + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end +function c511002826.descost2(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c511002826.cfilter,tp,LOCATION_HAND,0,1,c,true) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002826.cfilter,tp,LOCATION_HAND,0,1,1,c,true) + g:AddCard(c) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002826.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c511002826.destg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002826.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002826.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002826.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002826.filter,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002827.lua b/script/c511002827.lua new file mode 100644 index 00000000..6aaa84c0 --- /dev/null +++ b/script/c511002827.lua @@ -0,0 +1,54 @@ +--ギミック・パペット-シャドー・フィーラー +function c511002827.initial_effect(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(2830693,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c511002827.spcon) + e2:SetTarget(c511002827.sptg) + e2:SetOperation(c511002827.spop) + c:RegisterEffect(e2) + if not c511002827.global_check then + c511002827.global_check=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetCode(EFFECT_TO_GRAVE_REDIRECT) + ge1:SetTargetRange(LOCATION_OVERLAY,LOCATION_OVERLAY) + ge1:SetTarget(aux.TargetBoolFunction(Card.IsCode,34620088)) + ge1:SetValue(LOCATION_REMOVED) + Duel.RegisterEffect(ge1,0) + end +end +function c511002827.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511002827.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002827.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK)>0 then + Duel.ChangeAttackTarget(c) + local a=Duel.GetAttacker() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e2) + local e3=e2:Clone() + a:RegisterEffect(e3) + end +end diff --git a/script/c511002829.lua b/script/c511002829.lua new file mode 100644 index 00000000..ad8e69f6 --- /dev/null +++ b/script/c511002829.lua @@ -0,0 +1,49 @@ +--熱血指導王ジャイアントレーナー +function c511002829.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,3) + c:EnableReviveLimit() + --draw + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_DAMAGE) + e1:SetDescription(aux.Stringid(30741334,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002829.cost) + e1:SetTarget(c511002829.target) + e1:SetOperation(c511002829.operation) + c:RegisterEffect(e1) +end +function c511002829.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002829.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c511002829.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.ShuffleDeck(tp,REASON_EFFECT) + Duel.ShuffleDeck(1-tp,REASON_EFFECT) + local tc1=Duel.GetDecktopGroup(tp,1):GetFirst() + local tc2=Duel.GetDecktopGroup(1-tp,1):GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + Duel.Draw(1-tp,1,REASON_EFFECT) + if tc1 and tc2 then + Duel.ConfirmCards(1-tp,tc1) + Duel.ConfirmCards(tp,tc2) + if tc1:IsType(TYPE_MONSTER) and tc2:IsType(TYPE_MONSTER) then + Duel.BreakEffect() + if tc1:GetLevel()tc2:GetLevel() then + Duel.Damage(1-tp,800,REASON_EFFECT) + end + end + Duel.BreakEffect() + local g=Group.CreateGroup() + g:AddCard(tc1) + g:AddCard(tc2) + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c511002830.lua b/script/c511002830.lua new file mode 100644 index 00000000..abe7f50a --- /dev/null +++ b/script/c511002830.lua @@ -0,0 +1,99 @@ +--No.40 ギミック・パペット-ヘブンズ・ストリングス +function c511002830.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),8,2) + c:EnableReviveLimit() + --counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75433814,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002830.ctcost) + e1:SetTarget(c511002830.cttg) + e1:SetOperation(c511002830.ctop) + c:RegisterEffect(e1) + --destroy & damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75433814,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002830.descon) + e2:SetTarget(c511002830.destg) + e2:SetOperation(c511002830.desop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511002830.indes) + c:RegisterEffect(e3) + if not c511002830.global_check then + c511002830.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002830.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002830.xyz_number=40 +function c511002830.ctcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002830.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end +end +function c511002830.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + local tc=g:GetFirst() + while tc do + tc:AddCounter(0x1024,1) + tc=g:GetNext() + end + Duel.RegisterFlagEffect(tp,511002830,RESET_PHASE+PHASE_END,0,2) +end +function c511002830.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,511002830)~=0 and Duel.GetTurnPlayer()~=tp +end +function c511002830.desfilter(c) + return c:GetCounter(0x1024)~=0 and c:IsDestructable() +end +function c511002830.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002830.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002830.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511002830.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002830.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) + local dg=Duel.GetOperatedGroup() + local tc=dg:GetFirst() + local dam1=0 + local dam2=0 + while tc do + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if tc:GetPreviousControler()==tp then + dam1=dam1+atk + else + dam2=dam2+atk + end + tc=dg:GetNext() + end + Duel.Damage(tp,dam1,REASON_EFFECT) + Duel.Damage(1-tp,dam2,REASON_EFFECT) +end +function c511002830.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,75433814) + Duel.CreateToken(1-tp,75433814) +end +function c511002830.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002831.lua b/script/c511002831.lua new file mode 100644 index 00000000..1ce3f336 --- /dev/null +++ b/script/c511002831.lua @@ -0,0 +1,29 @@ +--月華竜 ブラック・ローズ +function c511002831.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(33698022,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002831.thtg) + e2:SetOperation(c511002831.thop) + c:RegisterEffect(e2) +end +function c511002831.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511002831.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end diff --git a/script/c511002832.lua b/script/c511002832.lua new file mode 100644 index 00000000..85c1fe21 --- /dev/null +++ b/script/c511002832.lua @@ -0,0 +1,39 @@ +--One Hundred Thousand Gauss +function c511002832.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002832.condition) + e1:SetTarget(c511002832.target) + e1:SetOperation(c511002832.activate) + c:RegisterEffect(e1) +end +function c511002832.cfilter(c,tpe) + return c:IsFaceup() and c:IsType(tpe) +end +function c511002832.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002832.cfilter,tp,LOCATION_MZONE,0,1,nil,0x20000000) + and Duel.IsExistingMatchingCard(c511002832.cfilter,tp,LOCATION_MZONE,0,1,nil,0x40000000) +end +function c511002832.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_DEFENSE) end + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_DEFENSE) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511002832.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectMatchingCard(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_DEFENSE) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.ChangePosition(tc,POS_FACEUP_ATTACK) + local e7=Effect.CreateEffect(e:GetHandler()) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_UPDATE_ATTACK) + e7:SetReset(RESET_EVENT+0x1fe0000) + e7:SetValue(-800) + tc:RegisterEffect(e7) + end +end diff --git a/script/c511002833.lua b/script/c511002833.lua new file mode 100644 index 00000000..65122805 --- /dev/null +++ b/script/c511002833.lua @@ -0,0 +1,55 @@ +--サクリファイス・ロータス +function c511002833.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5592689,0)) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCondition(c511002833.sscon) + e1:SetTarget(c511002833.sstg) + e1:SetOperation(c511002833.ssop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5592689,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c511002833.dmcon) + e2:SetTarget(c511002833.dmtg) + e2:SetOperation(c511002833.dmop) + c:RegisterEffect(e2) +end +function c511002833.sscon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511002833.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002833.ssop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end +function c511002833.dmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002833.dmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c511002833.dmop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002834.lua b/script/c511002834.lua new file mode 100644 index 00000000..d0b27826 --- /dev/null +++ b/script/c511002834.lua @@ -0,0 +1,85 @@ +--幻銃士 +function c511002834.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12958919,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511002834.sptg) + e1:SetOperation(c511002834.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(12958919,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c511002834.damcost) + e2:SetTarget(c511002834.damtg) + e2:SetOperation(c511002834.damop) + c:RegisterEffect(e2) + Duel.AddCustomActivityCounter(511002834,ACTIVITY_ATTACK,c511002834.counterfilter) +end +function c511002834.counterfilter(c) + return not c:IsCode(12958920) +end +function c511002834.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(nil,tp,LOCATION_MZONE,0,e:GetHandler()) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,0,0) +end +function c511002834.spop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(nil,tp,LOCATION_MZONE,0,e:GetHandler()) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>ct then ft=ct end + if ft2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,93224849,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0) +end +function c511002835.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,93224849,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) then + for i=1,3 do + local token=Duel.CreateToken(tp,93224849) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002836.lua b/script/c511002836.lua new file mode 100644 index 00000000..39371da4 --- /dev/null +++ b/script/c511002836.lua @@ -0,0 +1,28 @@ +--トーチ・ゴーレム +function c511002836.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetRange(LOCATION_HAND) + e1:SetTargetRange(POS_FACEUP,1) + e1:SetCondition(c511002836.spcon) + e1:SetOperation(c511002836.spop) + c:RegisterEffect(e1) +end +function c511002836.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>=2 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.IsPlayerCanSpecialSummonMonster(tp,75732623,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) +end +function c511002836.spop(e,tp,eg,ep,ev,re,r,rp,c) + for i=1,2 do + local token=Duel.CreateToken(tp,75732623) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002837.lua b/script/c511002837.lua new file mode 100644 index 00000000..71f4ef00 --- /dev/null +++ b/script/c511002837.lua @@ -0,0 +1,36 @@ +--カオス・バースト +function c511002837.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002837.condition) + e1:SetCost(c511002837.cost) + e1:SetTarget(c511002837.target) + e1:SetOperation(c511002837.activate) + c:RegisterEffect(e1) +end +function c511002837.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002837.cost(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511002837.target(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if chk==0 then return a:IsOnField() and a:IsDestructable() end + Duel.SetTargetCard(a) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,a,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,a:GetAttack()) +end +function c511002837.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local atk=tc:GetAttack() + if atk<0 then atk=0 end + if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511002838.lua b/script/c511002838.lua new file mode 100644 index 00000000..7cfdc96f --- /dev/null +++ b/script/c511002838.lua @@ -0,0 +1,19 @@ +--サイレント・アングラー +function c511002838.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002838.spcon) + c:RegisterEffect(e1) +end +function c511002838.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511002838.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002838.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002839.lua b/script/c511002839.lua new file mode 100644 index 00000000..66a68688 --- /dev/null +++ b/script/c511002839.lua @@ -0,0 +1,46 @@ +--ブラック・レイ・ランサー +function c511002839.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,3,2) + c:EnableReviveLimit() + --disable + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetDescription(aux.Stringid(74416224,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002839.cost) + e1:SetTarget(c511002839.target) + e1:SetOperation(c511002839.operation) + c:RegisterEffect(e1) +end +function c511002839.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002839.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,0,0) +end +function c511002839.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002840.lua b/script/c511002840.lua new file mode 100644 index 00000000..4fd531fc --- /dev/null +++ b/script/c511002840.lua @@ -0,0 +1,67 @@ +--Anchor Whale +function c511002840.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(c511002840.target) + e1:SetOperation(c511002840.operation) + c:RegisterEffect(e1) + --Indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_CANNOT_REMOVE) + e2:SetValue(1) + 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) + --lose atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCountLimit(1) + e4:SetOperation(c511002840.atkop) + c:RegisterEffect(e4) +end +function c511002840.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 c511002840.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002840.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetEquipTarget() + if c:IsRelateToEffect(e) and ec and ec:IsFaceup() then + local atk=ec:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + if atk<=1000 and atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end + end +end diff --git a/script/c511002841.lua b/script/c511002841.lua new file mode 100644 index 00000000..bfcf7b65 --- /dev/null +++ b/script/c511002841.lua @@ -0,0 +1,30 @@ +--ヘル・ツイン・コップ +function c511002841.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86137485,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511002841.atcon) + e1:SetOperation(c511002841.atop) + c:RegisterEffect(e1) +end +function c511002841.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc:IsType(TYPE_MONSTER) and c:IsChainAttackable() +end +function c511002841.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + Duel.ChainAttack() +end diff --git a/script/c511002842.lua b/script/c511002842.lua new file mode 100644 index 00000000..df00d58b --- /dev/null +++ b/script/c511002842.lua @@ -0,0 +1,49 @@ +--Synchro Library +function c511002842.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002842.condition) + e1:SetCost(c511002842.cost) + e1:SetTarget(c511002842.target) + e1:SetOperation(c511002842.activate) + c:RegisterEffect(e1) +end +function c511002842.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002842.cfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemoveAsCost() +end +function c511002842.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511002842.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511002842.cfilter,tp,LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002842.cfilter,tp,LOCATION_GRAVE,0,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.SetTargetParam(g:GetCount()) +end +function c511002842.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)*300) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002843.lua b/script/c511002843.lua new file mode 100644 index 00000000..ac6cc951 --- /dev/null +++ b/script/c511002843.lua @@ -0,0 +1,39 @@ +--Xyz Stun +function c511002843.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,0x1c0) + e1:SetTarget(c511002843.target) + e1:SetOperation(c511002843.activate) + c:RegisterEffect(e1) +end +function c511002843.filter(c) + return aux.disfilter1(c) and c:IsType(TYPE_XYZ) +end +function c511002843.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002843.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,0,0) +end +function c511002843.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511002843.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511002844.lua b/script/c511002844.lua new file mode 100644 index 00000000..59cf4ebb --- /dev/null +++ b/script/c511002844.lua @@ -0,0 +1,84 @@ +--武闘円舞 +function c511002844.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002844.target) + e1:SetOperation(c511002844.activate) + c:RegisterEffect(e1) +end +function c511002844.filter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) + and Duel.IsPlayerCanSpecialSummonMonster(tp,15629802,0,0x4011,c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) +end +function c511002844.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002844.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002844.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511002844.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002844.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,15629802,0,0x4011,tc:GetAttack(),tc:GetDefense(),tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) then return end + local token=Duel.CreateToken(tp,15629802) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(tc:GetLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + token:RegisterEffect(e5) + local e6=Effect.CreateEffect(e:GetHandler()) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_NO_BATTLE_DAMAGE) + e6:SetValue(1) + e6:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + token:RegisterEffect(e7) + local e8=Effect.CreateEffect(e:GetHandler()) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_BATTLE_DESTROYED) + e8:SetOperation(c511002844.desop) + e8:SetReset(RESET_EVENT+0x17e0000+RESET_PHASE+PHASE_END) + token:RegisterEffect(e8) + Duel.SpecialSummonComplete() +end +function c511002844.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if c==tc then tc=Duel.GetAttackTarget() end + if not tc:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-c:GetPreviousAttackOnField()) + tc:RegisterEffect(e1) +end diff --git a/script/c511002845.lua b/script/c511002845.lua new file mode 100644 index 00000000..ddb551a0 --- /dev/null +++ b/script/c511002845.lua @@ -0,0 +1,31 @@ +--返り咲く薔薇の大輪 +function c511002845.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12469386,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511002845.spcon) + e1:SetTarget(c511002845.sptg) + e1:SetOperation(c511002845.spop) + c:RegisterEffect(e1) +end +function c511002845.filter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511002845.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002845.filter,1,e:GetHandler(),tp) +end +function c511002845.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002845.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002846.lua b/script/c511002846.lua new file mode 100644 index 00000000..259a78b7 --- /dev/null +++ b/script/c511002846.lua @@ -0,0 +1,29 @@ +--調律 +function c511002846.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002846.target) + e1:SetOperation(c511002846.activate) + c:RegisterEffect(e1) +end +function c511002846.filter(c,tp) + return c:IsType(TYPE_TUNER) and c:IsAbleToHand() and Duel.IsPlayerCanDiscardDeck(tp,c:GetLevel()+1) +end +function c511002846.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002846.filter,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002846.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002846.filter,tp,LOCATION_DECK,0,1,1,nil,tp) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleDeck(tp) + Duel.BreakEffect() + Duel.DiscardDeck(tp,g:GetFirst():GetLevel(),REASON_EFFECT) + end +end diff --git a/script/c511002847.lua b/script/c511002847.lua new file mode 100644 index 00000000..7d30a086 --- /dev/null +++ b/script/c511002847.lua @@ -0,0 +1,17 @@ +--Water Barrier +function c511002847.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002847.condition) + e1:SetOperation(c511002847.activate) + c:RegisterEffect(e1) +end +function c511002847.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return Duel.GetAttacker():IsControler(1-tp) and at and at:IsFaceup() and at:IsAttribute(ATTRIBUTE_WATER) +end +function c511002847.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end \ No newline at end of file diff --git a/script/c511002848.lua b/script/c511002848.lua new file mode 100644 index 00000000..aee14d31 --- /dev/null +++ b/script/c511002848.lua @@ -0,0 +1,84 @@ +--銀河暴竜 +function c511002848.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(24658418,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002848.condition) + e1:SetTarget(c511002848.target) + e1:SetOperation(c511002848.operation) + c:RegisterEffect(e1) +end +function c511002848.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsCode(93717133) +end +function c511002848.xyzfilter(c,e,tp,a,sc) + return (c.minxyzct==3 or c.maxxyzct>=3) and c.xyz_filter(a) and c.xyz_filter(sc) and a:IsCanBeXyzMaterial(c) and sc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511002848.target(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttackTarget() + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511002848.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,a,c) end + Duel.SetTargetCard(a) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002848.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttackTarget() + local c=e:GetHandler() + if not a or not a:IsRelateToEffect(e) or not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c511002848.xyzfilter,tp,LOCATION_EXTRA,0,nil,e,tp,a,c) + if g:GetCount()>0 then + local mg=Group.CreateGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=g:Select(tp,1,1,nil):GetFirst() + mg:AddCard(c) + mg:AddCard(a) + xyz:SetMaterial(mg) + Duel.Overlay(xyz,mg) + Duel.SpecialSummon(xyz,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + xyz:CompleteProcedure() + end +end diff --git a/script/c511002849.lua b/script/c511002849.lua new file mode 100644 index 00000000..7d7be646 --- /dev/null +++ b/script/c511002849.lua @@ -0,0 +1,59 @@ +--フォトン・カイザー +function c511002849.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(511001225) + c:RegisterEffect(e1) + if not c511002849.global_check then + c511002849.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002849.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002849.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end diff --git a/script/c511002850.lua b/script/c511002850.lua new file mode 100644 index 00000000..31b084e2 --- /dev/null +++ b/script/c511002850.lua @@ -0,0 +1,105 @@ +--バブル・ブリンガー +function c511002850.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002850.condition) + e1:SetOperation(c511002850.activate) + c:RegisterEffect(e1) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(58531587,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511002850.spcost) + e3:SetTarget(c511002850.sptg) + e3:SetOperation(c511002850.spop) + c:RegisterEffect(e3) + if not c511002850.global_check then + c511002850.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002850.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002850.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511002850.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511002850.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c511002850.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002850.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WATER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002850.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002850.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002850.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002850.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002850.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(511001225) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002851.lua b/script/c511002851.lua new file mode 100644 index 00000000..2378b4b2 --- /dev/null +++ b/script/c511002851.lua @@ -0,0 +1,93 @@ +--強化支援メカ・ヘビーウェポン +function c511002851.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23265594,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002851.eqtg) + e1:SetOperation(c511002851.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(23265594,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002851.uncon) + e2:SetTarget(c511002851.sptg) + e2:SetOperation(c511002851.spop) + c:RegisterEffect(e2) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(500) + e3:SetCondition(c511002851.uncon) + c:RegisterEffect(e3) + --Def up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_DEFENSE) + e4:SetValue(500) + e4:SetCondition(c511002851.uncon) + c:RegisterEffect(e4) + --destroy sub + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e5:SetCondition(c511002851.uncon) + e5:SetValue(1) + c:RegisterEffect(e5) + --eqlimit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_EQUIP_LIMIT) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetValue(c511002851.eqlimit) + c:RegisterEffect(e6) +end +function c511002851.uncon(e) + return e:GetHandler():IsStatus(STATUS_UNION) +end +function c511002851.eqlimit(e,c) + return c:IsRace(RACE_MACHINE) +end +function c511002851.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:GetUnionCount()==0 +end +function c511002851.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002851.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(511002851)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511002851.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511002851.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(511002851,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002851.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc:IsRelateToEffect(e) or not c511002851.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + c:SetStatus(STATUS_UNION,true) +end +function c511002851.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511002851)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(511002851,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002851.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511002852.lua b/script/c511002852.lua new file mode 100644 index 00000000..69b0ed45 --- /dev/null +++ b/script/c511002852.lua @@ -0,0 +1,96 @@ +--Y-ドラゴン・ヘッド +function c511002852.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(65622692,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002852.eqtg) + e1:SetOperation(c511002852.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(65622692,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002852.uncon) + e2:SetTarget(c511002852.sptg) + e2:SetOperation(c511002852.spop) + c:RegisterEffect(e2) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(400) + e3:SetCondition(c511002852.uncon) + c:RegisterEffect(e3) + --Def up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_DEFENSE) + e4:SetValue(400) + e4:SetCondition(c511002852.uncon) + c:RegisterEffect(e4) + --destroy sub + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e5:SetCondition(c511002852.uncon) + e5:SetValue(c511002852.repval) + c:RegisterEffect(e5) + --eqlimit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_EQUIP_LIMIT) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetValue(c511002852.eqlimit) + c:RegisterEffect(e6) +end +function c511002852.uncon(e) + return e:GetHandler():IsStatus(STATUS_UNION) +end +function c511002852.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c511002852.eqlimit(e,c) + return c:IsCode(62651957) +end +function c511002852.filter(c) + return c:IsFaceup() and c:IsCode(62651957) and c:GetUnionCount()==0 +end +function c511002852.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002852.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(511002852)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511002852.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511002852.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(511002852,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002852.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc or not tc:IsRelateToEffect(e) or not c511002852.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + c:SetStatus(STATUS_UNION,true) +end +function c511002852.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511002852)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(511002852,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002852.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511002853.lua b/script/c511002853.lua new file mode 100644 index 00000000..879f97c0 --- /dev/null +++ b/script/c511002853.lua @@ -0,0 +1,98 @@ +--Z-メタル・キャタピラー +function c511002853.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64500000,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002853.eqtg) + e1:SetOperation(c511002853.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(64500000,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002853.uncon) + e2:SetTarget(c511002853.sptg) + e2:SetOperation(c511002853.spop) + c:RegisterEffect(e2) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(600) + e3:SetCondition(c511002853.uncon) + c:RegisterEffect(e3) + --Def up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_DEFENSE) + e4:SetValue(600) + e4:SetCondition(c511002853.uncon) + c:RegisterEffect(e4) + --destroy sub + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e5:SetCondition(c511002853.uncon) + e5:SetValue(c511002853.repval) + c:RegisterEffect(e5) + --eqlimit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_EQUIP_LIMIT) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetValue(c511002853.eqlimit) + c:RegisterEffect(e6) +end +function c511002853.uncon(e) + return e:GetHandler():IsStatus(STATUS_UNION) +end +function c511002853.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c511002853.eqlimit(e,c) + local code=c:GetCode() + return code==62651957 or code==65622692 +end +function c511002853.filter(c) + local code=c:GetCode() + return c:IsFaceup() and (code==62651957 or code==65622692) and c:GetUnionCount()==0 +end +function c511002853.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002853.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(511002853)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511002853.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511002853.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(511002853,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002853.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc:IsRelateToEffect(e) or not c511002853.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + c:SetStatus(STATUS_UNION,true) +end +function c511002853.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511002853)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(511002853,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c511002853.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511002854.lua b/script/c511002854.lua new file mode 100644 index 00000000..d06d8700 --- /dev/null +++ b/script/c511002854.lua @@ -0,0 +1,119 @@ +--クリボー +function c511002854.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40640057,0)) + e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002854.con1) + e1:SetCost(c511002854.cost) + e1:SetOperation(c511002854.op1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511002854.con2) + e2:SetCost(c511002854.cost) + e2:SetOperation(c511002854.op2) + c:RegisterEffect(e2) + --target + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(84565800,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetTarget(c511002854.negtg) + e3:SetOperation(c511002854.negop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(20374351,1)) + e4:SetCategory(CATEGORY_DISABLE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_CHAINING) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511002854.discon) + e4:SetTarget(c511002854.distg) + e4:SetOperation(c511002854.disop) + c:RegisterEffect(e4) +end +function c511002854.con1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511002854.con2(e,tp,eg,ep,ev,re,r,rp) + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) and re:IsActiveType(TYPE_MONSTER) +end +function c511002854.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c511002854.op1(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002854.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511002854.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c511002854.op2(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + 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(c511002854.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002854.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then e:SetLabel(val) return 0 + else return val end +end +function c511002854.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,e:GetHandler():GetAttack()) +end +function c511002854.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.NegateAttack() + if c:IsRelateToEffect(e) then + Duel.BreakEffect() + if Duel.Destroy(c,REASON_EFFECT)>0 then + Duel.Damage(tp,c:GetAttack(),REASON_EFFECT) + end + end +end +function c511002854.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsContains(c) and Duel.IsChainDisablable(ev) +end +function c511002854.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,e:GetHandler():GetAttack()) +end +function c511002854.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + if c:IsRelateToEffect(e) then + Duel.BreakEffect() + if Duel.Destroy(c,REASON_EFFECT)>0 then + Duel.Damage(tp,c:GetAttack(),REASON_EFFECT) + end + end +end diff --git a/script/c511002855.lua b/script/c511002855.lua new file mode 100644 index 00000000..c1b6a7cf --- /dev/null +++ b/script/c511002855.lua @@ -0,0 +1,146 @@ +--CX 熱血指導神アルティメットレーナー +function c511002855.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,9,4) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002855.rankupregcon) + e1:SetOperation(c511002855.rankupregop) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002855.uncon) + e2:SetOperation(c511002855.unop) + c:RegisterEffect(e2) + +end + +function c511002855.rumfilter(c) + return c:IsCode(30741334) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511002855.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511002855.rumfilter,1,nil) +end +function c511002855.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --draw + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_DAMAGE) + e1:SetDescription(aux.Stringid(88754763,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002855.condition) + e1:SetCost(c511002855.cost) + e1:SetTarget(c511002855.target) + e1:SetOperation(c511002855.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511002855.uncon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not re:IsActiveType(TYPE_MONSTER) then return false end + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_BECOME_TARGET,true) + if res then + if trp==tp and tre:IsActiveType(TYPE_MONSTER) and teg:IsContains(c) then + return true + end + end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ex and tg~=nil and tg:IsContains(c) then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOHAND) + if ex and tg~=nil and tg:IsContains(c) then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_REMOVE) + if ex and tg~=nil and tg:IsContains(c) then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TODECK) + if ex and tg~=nil and tg:IsContains(c) then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_RELEASE) + if ex and tg~=nil and tg:IsContains(c) then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE) + if ex and tg~=nil and tg:IsContains(c) then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_CONTROL) + if ex and tg~=nil and tg:IsContains(c) then + return true + end + ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DISABLE) + if ex and tg~=nil and tg:IsContains(c) then + return true + end + return false +end +function c511002855.unop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetReset(RESET_CHAIN) + e2:SetValue(c511002855.efilter) + c:RegisterEffect(e2) + end +end +function c511002855.efilter(e,te) + return te:IsActiveType(TYPE_MONSTER) +end +function c511002855.condition(e,tp,eg,ep,ev,re,r,rp) + return aux.bdocon(e,tp,eg,ep,ev,re,r,rp) +end +function c511002855.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_DECK) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,ct,REASON_COST) + local ct=Duel.GetOperatedGroup():GetCount() + e:SetLabel(ct) +end +function c511002855.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel()) +end +function c511002855.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local ct=Duel.Draw(1-tp,d,REASON_EFFECT) + if ct==0 then return end + local dg=Duel.GetOperatedGroup() + Duel.ConfirmCards(1-tp,dg) + local atk=0 + local sg=Group.CreateGroup() + local dc=dg:GetFirst() + while dc do + if dc:IsType(TYPE_MONSTER) and dc:GetLevel()<=4 then + local matk=dc:GetAttack() + if matk<0 then matk=0 end + atk=atk+matk + sg:AddCard(dc) + end + dc=dg:GetNext() + end + Duel.Damage(1-tp,atk,REASON_EFFECT) + Duel.BreakEffect() + Duel.SendtoGrave(sg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) +end diff --git a/script/c511002856.lua b/script/c511002856.lua new file mode 100644 index 00000000..a633065d --- /dev/null +++ b/script/c511002856.lua @@ -0,0 +1,45 @@ +--RR-バニシング・レイニアス +function c511002856.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002856.spcon) + e1:SetTarget(c511002856.sptg) + e1:SetOperation(c511002856.spop) + c:RegisterEffect(e1) + if not c511002856.global_check then + c511002856.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511002856) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511002856) + Duel.RegisterEffect(ge2,0) + end +end +function c511002856.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511002856)>0 +end +function c511002856.spfilter(c,e,tp) + return c:IsCode(53251824) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002856.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002856.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002856.spop(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,c511002856.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 diff --git a/script/c511002857.lua b/script/c511002857.lua new file mode 100644 index 00000000..421125dc --- /dev/null +++ b/script/c511002857.lua @@ -0,0 +1,43 @@ +--RR-ファジー・レイニアス +function c511002857.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002857.spcon) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetTarget(c511002857.thtg) + e2:SetOperation(c511002857.thop) + c:RegisterEffect(e2) +end +function c511002857.cfilter(c) + return c:IsFaceup() and c:IsCode(53251824) +end +function c511002857.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c511002857.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c511002857.thfilter(c) + return c:IsCode(5929801) and c:IsAbleToHand() +end +function c511002857.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002857.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002857.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002857.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511002858.lua b/script/c511002858.lua new file mode 100644 index 00000000..b503ac12 --- /dev/null +++ b/script/c511002858.lua @@ -0,0 +1,67 @@ +--RR-ブレイズ・ファルコン +function c511002858.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_WINDBEAST),5,3) + c:EnableReviveLimit() + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511002858.descon) + e2:SetTarget(c511002858.destg1) + e2:SetOperation(c511002858.desop1) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c511002858.descost) + e3:SetTarget(c511002858.destg2) + e3:SetOperation(c511002858.desop2) + c:RegisterEffect(e3) +end +function c511002858.descon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511002858.destg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002858.desop1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511002858.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002858.filter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL and c:IsDestructable() +end +function c511002858.destg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002858.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002858.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*500) +end +function c511002858.desop2(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511002858.filter,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(sg,REASON_EFFECT) + if ct>0 then + Duel.Damage(1-tp,ct*500,REASON_EFFECT) + end +end diff --git a/script/c511002859.lua b/script/c511002859.lua new file mode 100644 index 00000000..257902c2 --- /dev/null +++ b/script/c511002859.lua @@ -0,0 +1,27 @@ +--究極竜騎士 +function c511002859.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,5405694,23995346,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c511002859.atkval) + c:RegisterEffect(e2) +end +function c511002859.filter(c) + return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsRace(RACE_DRAGON) +end +function c511002859.atkval(e,c) + return Duel.GetMatchingGroupCount(c511002859.filter,c:GetControler(),LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,nil)*500 +end diff --git a/script/c511002860.lua b/script/c511002860.lua new file mode 100644 index 00000000..32d0ca63 --- /dev/null +++ b/script/c511002860.lua @@ -0,0 +1,38 @@ +--クイック・シンクロン +function c511002860.initial_effect(c) + --special summon(hand) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(11366199,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCost(c511002860.spcost) + e2:SetTarget(c511002860.sptg) + e2:SetOperation(c511002860.spop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(20932152) + c:RegisterEffect(e3) +end +function c511002860.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511002860.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002860.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002860.cfilter,tp,LOCATION_HAND,0,1,1,e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002860.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511002860.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or not c:IsRelateToEffect(e) then return end + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c511002861.lua b/script/c511002861.lua new file mode 100644 index 00000000..55e84a6b --- /dev/null +++ b/script/c511002861.lua @@ -0,0 +1,47 @@ +--先史遺産クリスタル・スカル +function c511002861.initial_effect(c) + c:EnableUnsummonable() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002861.spcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --lvchange + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(94203886,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511002861.spcon2) + e2:SetTarget(c511002861.sptg) + e2:SetOperation(c511002861.spop) + c:RegisterEffect(e2) +end +function c511002861.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511002861.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511002861.filter(c,e,tp) + return c:IsCode(15941690) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002861.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002861.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002861.spop(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,c511002861.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002862.lua b/script/c511002862.lua new file mode 100644 index 00000000..15f358b5 --- /dev/null +++ b/script/c511002862.lua @@ -0,0 +1,19 @@ +--先史遺産モアイ +function c511002862.initial_effect(c) + --destroy replace + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002862.reptg) + c:RegisterEffect(e1) +end +function c511002862.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsReason(REASON_BATTLE) and c:IsPosition(POS_FACEUP_ATTACK) end + if Duel.SelectYesNo(tp,aux.Stringid(423585,0)) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + return true + else return false end +end diff --git a/script/c511002863.lua b/script/c511002863.lua new file mode 100644 index 00000000..e6413564 --- /dev/null +++ b/script/c511002863.lua @@ -0,0 +1,20 @@ +--先史遺産ウィングス・スフィンクス +function c511002863.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002863.spcon) + c:RegisterEffect(e1) +end +function c511002863.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x70) +end +function c511002863.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002863.cfilter,tp,LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002864.lua b/script/c511002864.lua new file mode 100644 index 00000000..291e2515 --- /dev/null +++ b/script/c511002864.lua @@ -0,0 +1,34 @@ +--先史遺産クリスタル・エイリアン +function c511002864.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,3,2) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(93730230,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511002864.cost) + e1:SetOperation(c511002864.operation) + c:RegisterEffect(e1) +end +function c511002864.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002864.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e3=e1:Clone() + e3:SetCode(EFFECT_REFLECT_BATTLE_DAMAGE) + c:RegisterEffect(e3) + end +end diff --git a/script/c511002865.lua b/script/c511002865.lua new file mode 100644 index 00000000..82b5490a --- /dev/null +++ b/script/c511002865.lua @@ -0,0 +1,32 @@ +--ギミック・パペット-シザー・アーム +function c511002865.initial_effect(c) + --double lv + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002865.cost) + e1:SetOperation(c511002865.operation) + c:RegisterEffect(e1) +end +function c511002865.filter(c) + return c:IsType(TYPE_EQUIP) and c:GetEquipTarget()~=nil and c:IsDestructable() and c:IsAbleToGraveAsCost() +end +function c511002865.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002865.filter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002865.filter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.Destroy(g,REASON_COST) + Duel.SendtoGrave(g,REASON_COST) +end +function c511002865.operation(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:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c:GetLevel()*2) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002866.lua b/script/c511002866.lua new file mode 100644 index 00000000..108a819e --- /dev/null +++ b/script/c511002866.lua @@ -0,0 +1,111 @@ +--CNo.69 紋章死神カオス・オブ・アームズ +function c511002866.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,4) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002866.rankupregcon) + e1:SetOperation(c511002866.rankupregop) + c:RegisterEffect(e1) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511002866.indes) + c:RegisterEffect(e3) + if not c511002866.global_check then + c511002866.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002866.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002866.xyz_number=69 +function c511002866.rumfilter(c) + return c:IsCode(2407234) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511002866.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511002866.rumfilter,1,nil) +end +function c511002866.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(11522979,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002866.descon) + e1:SetCost(c511002866.descost) + e1:SetTarget(c511002866.destg) + e1:SetOperation(c511002866.desop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(11522979,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002866.target) + e2:SetOperation(c511002866.operation) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c511002866.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002866.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002866.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c511002866.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002866.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002866.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local code=tc:GetOriginalCode() + local atk=tc:GetAttack() + if atk<0 then atk=0 end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + c:RegisterEffect(e2) + c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,1) + end +end +function c511002866.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,11522979) + Duel.CreateToken(1-tp,11522979) +end +function c511002866.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002867.lua b/script/c511002867.lua new file mode 100644 index 00000000..723fe6ff --- /dev/null +++ b/script/c511002867.lua @@ -0,0 +1,93 @@ +--D - Death Match +function c511002867.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511002867,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002867.damtg) + e2:SetOperation(c511002867.damop) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511002867,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511002867.atkcon) + e3:SetTarget(c511002867.atktg) + e3:SetOperation(c511002867.atkop) + c:RegisterEffect(e3) +end +function c511002867.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g1=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local lv1=g1:GetSum(Card.GetLevel) + local g2=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local lv2=g2:GetSum(Card.GetLevel) + if chk==0 then return true end + if lv1>lv2 then + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,(lv1-lv2)*100) + end + if lv2lv2 then + Duel.Damage(1-tp,(lv1-lv2)*100,REASON_EFFECT) + else + Duel.Damage(tp,(lv2-lv1)*100,REASON_EFFECT) + end +end +function c511002867.atkcon(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local lv1=g1:GetSum(Card.GetLevel) + local g2=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local lv2=g2:GetSum(Card.GetLevel) + return lv1>lv2 +end +function c511002867.filter(c) + return c:IsFaceup() and c:IsSetCard(0xc008) +end +function c511002867.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002867.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002867.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002867.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002867.atkop(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local lv1=g1:GetSum(Card.GetLevel) + local g2=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local lv2=g2:GetSum(Card.GetLevel) + if lv2>=lv1 then return end + local c=e:GetHandler() + local atk=(lv1-lv2)*100 + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(atk) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002868.lua b/script/c511002868.lua new file mode 100644 index 00000000..618bd348 --- /dev/null +++ b/script/c511002868.lua @@ -0,0 +1,35 @@ +--Raidraptor - Rapid Xyz +function c511002868.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) + e1:SetCondition(c511002868.xyzcon) + e1:SetTarget(c511002868.xyztg) + e1:SetOperation(c511002868.xyzop) + c:RegisterEffect(e1) +end +function c511002868.cfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511002868.xyzcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE + and Duel.IsExistingMatchingCard(c511002868.cfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c511002868.xyzfilter(c) + return c:IsXyzSummonable(nil) and c:IsSetCard(0xba) +end +function c511002868.xyztg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002868.xyzfilter,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002868.xyzop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002868.xyzfilter,tp,LOCATION_EXTRA,0,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=g:Select(tp,1,1,nil) + Duel.XyzSummon(tp,tg:GetFirst(),nil) + end +end diff --git a/script/c511002869.lua b/script/c511002869.lua new file mode 100644 index 00000000..4c498d92 --- /dev/null +++ b/script/c511002869.lua @@ -0,0 +1,127 @@ +--紋章獣ベルナーズ・ファルコン +function c511002869.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + --lv change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(96704018,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c511002869.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + if not c511002869.global_check then + c511002869.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002869.synchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002869.synchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511002869.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,e:GetHandler()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + if tc:GetLevel()>0 then + e1:SetCode(EFFECT_CHANGE_LEVEL) + else + e1:SetCode(EFFECT_CHANGE_RANK) + end + e1:SetValue(e:GetHandler():GetLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + if tc:GetRank()>0 then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_XYZ_LEVEL) + e2:SetValue(c511002869.xyzlv) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(511002096) + e5:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e5) + local e6=Effect.CreateEffect(e:GetHandler()) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(511000538) + e6:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e6) + end + tc=g:GetNext() + end +end +function c511002869.xyzlv(e,c,rc) + return c:GetRank() +end diff --git a/script/c511002870.lua b/script/c511002870.lua new file mode 100644 index 00000000..4c6e9730 --- /dev/null +++ b/script/c511002870.lua @@ -0,0 +1,123 @@ +--No.102 光天使グローリアス・ヘイロー +function c511002870.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),4,3) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(49678559,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002870.cost) + e1:SetTarget(c511002870.target) + e1:SetOperation(c511002870.operation) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511002870.reptg) + c:RegisterEffect(e2) + if not c511002870.global_check then + c511002870.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002870.numchk) + Duel.RegisterEffect(ge2,0) + end + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511002870.indes) + c:RegisterEffect(e3) + if not c511002870.global_check then + c511002870.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511002870.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511002870.xyz_number=102 +function c511002870.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002870.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511002870.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end +function c511002870.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return c:CheckRemoveOverlayCard(tp,1,REASON_EFFECT) end + if Duel.SelectYesNo(tp,aux.Stringid(49678559,1)) then + local g=c:GetOverlayGroup() + Duel.SendtoGrave(g,REASON_EFFECT) + 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(c511002870.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e3) + return true + else return false end +end +function c511002870.damval(e,re,dam,r,rp,rc) + if bit.band(r,REASON_BATTLE)~=0 then + return dam/2 + else return dam end +end +function c511002870.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,49678559) + Duel.CreateToken(1-tp,49678559) +end +function c511002870.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511002871.lua b/script/c511002871.lua new file mode 100644 index 00000000..ed813848 --- /dev/null +++ b/script/c511002871.lua @@ -0,0 +1,109 @@ +--CNo.104 仮面魔踏士アンブラル +function c511002871.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,4) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002871.rankupregcon) + e1:SetOperation(c511002871.rankupregop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(49456901,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511002871.destg) + e2:SetOperation(c511002871.desop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511002871.indes) + c:RegisterEffect(e3) + if not c511002871.global_check then + c511002871.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511002871.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511002871.xyz_number=104 + +function c511002871.rumfilter(c) + return c:IsCode(2061963) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511002871.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511002871.rumfilter,1,nil) +end +function c511002871.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --negate activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(49456901,1)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_HANDES) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002871.condition) + e1:SetCost(c511002871.cost) + e1:SetTarget(c511002871.target) + e1:SetOperation(c511002871.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511002871.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511002871.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c511002871.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002871.desfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511002871.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002871.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511002871.condition(e,tp,eg,ep,ev,re,r,rp,chk) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and ep~=tp + and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c511002871.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002871.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)>0 end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end +function c511002871.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) then + Duel.BreakEffect() + local g=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0):RandomSelect(1-tp,1) + if Duel.SendtoGrave(g,REASON_EFFECT)>0 then + Duel.SetLP(1-tp,Duel.GetLP(1-tp)/2) + end + end +end +function c511002871.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,49456901) + Duel.CreateToken(1-tp,49456901) +end +function c511002871.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511002872.lua b/script/c511002872.lua new file mode 100644 index 00000000..eb76e807 --- /dev/null +++ b/script/c511002872.lua @@ -0,0 +1,122 @@ +--CNo.105 BK 彗星のカエストス +function c511002872.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,4) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511002872.rankupregcon) + e1:SetOperation(c511002872.rankupregop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(85121942,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c511002872.damcon) + e2:SetTarget(c511002872.damtg) + e2:SetOperation(c511002872.damop) + c:RegisterEffect(e2) + if not c511002872.global_check then + c511002872.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002872.numchk) + Duel.RegisterEffect(ge2,0) + end + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511002872.indes) + c:RegisterEffect(e3) + if not c511002872.global_check then + c511002872.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511002872.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511002872.xyz_number=105 +function c511002872.rumfilter(c) + return c:IsCode(59627393) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511002872.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511002872.rumfilter,1,nil) +end +function c511002872.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetDescription(aux.Stringid(85121942,1)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002872.descost) + e1:SetTarget(c511002872.destg) + e1:SetOperation(c511002872.desop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511002872.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c511002872.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local bc=c:GetBattleTarget() + local dam=bc:GetPreviousAttackOnField() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002872.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002872.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002872.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) +end +function c511002872.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then + local atk=tc:GetAttack() + if atk<0 or tc:IsFacedown() then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end +function c511002872.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,85121942) + Duel.CreateToken(1-tp,85121942) +end +function c511002872.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511002873.lua b/script/c511002873.lua new file mode 100644 index 00000000..3e567395 --- /dev/null +++ b/script/c511002873.lua @@ -0,0 +1,111 @@ +--No.58 Burner visor +function c511002873.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(93108839,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002873.eqcost) + e1:SetTarget(c511002873.eqtg) + e1:SetOperation(c511002873.eqop) + c:RegisterEffect(e1) + --direct + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(93108839,2)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511002873.damcon) + e3:SetCost(c511002873.damcost) + e3:SetTarget(c511002873.damtg) + e3:SetOperation(c511002873.damop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511002873.indes) + c:RegisterEffect(e4) + if not c511002873.global_check then + c511002873.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002873.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002873.xyz_number=58 +function c511002873.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + local g=e:GetHandler():GetOverlayGroup() + Duel.SendtoGrave(g,REASON_COST) +end +function c511002873.eqtg(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() and chkc~=e:GetHandler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511002873.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc or not tc:IsRelateToEffect(e) or tc:IsFacedown() or tc:IsControler(1-tp) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + --eqlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511002873.eqlimit) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetLabelObject(tc) + c:RegisterEffect(e4) +end +function c511002873.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c511002873.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget()~=nil +end +function c511002873.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c511002873.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511002873.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002873.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,93108839) + Duel.CreateToken(1-tp,93108839) +end +function c511002873.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002874.lua b/script/c511002874.lua new file mode 100644 index 00000000..122c950a --- /dev/null +++ b/script/c511002874.lua @@ -0,0 +1,49 @@ +--ジュラシックワールド +function c511002874.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR+RACE_WINDBEAST)) + e2:SetValue(300) + c:RegisterEffect(e2) + --Def + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --immune + local e4=e2:Clone() + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetValue(c511002874.efilter) + c:RegisterEffect(e4) + --change battle target + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(42256406,1)) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BE_BATTLE_TARGET) + e5:SetRange(LOCATION_FZONE) + e5:SetCondition(c511002874.cbcon) + e5:SetOperation(c511002874.cbop) + c:RegisterEffect(e5) +end +function c511002874.efilter(e,te) + return te:IsActiveType(TYPE_TRAP) and e:GetOwnerPlayer()~=te:GetOwnerPlayer() +end +function c511002874.cbcon(e,tp,eg,ep,ev,re,r,rp) + local bt=eg:GetFirst() + return r~=REASON_REPLACE and bt:IsFaceup() and bt:IsControler(tp) and bt:IsRace(RACE_DINOSAUR+RACE_WINDBEAST) + and bt:IsAttackPos() +end +function c511002874.cbop(e,tp,eg,ep,ev,re,r,rp) + local at=eg:GetFirst() + if at:IsAttackPos() and at:IsRelateToBattle() then + Duel.ChangePosition(at,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + end +end diff --git a/script/c511002875.lua b/script/c511002875.lua new file mode 100644 index 00000000..239e224b --- /dev/null +++ b/script/c511002875.lua @@ -0,0 +1,32 @@ +--Ergosphere +function c511002875.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002875.condition) + e1:SetTarget(c511002875.target) + e1:SetOperation(c511002875.activate) + c:RegisterEffect(e1) +end +function c511002875.filter(c) + return c:IsFaceup() and c:IsCode(6930746) +end +function c511002875.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002875.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511002875.filter(c) + return c:IsCode(6930746) and c:IsAbleToHand() +end +function c511002875.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002875.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511002875.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511002875.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511002876.lua b/script/c511002876.lua new file mode 100644 index 00000000..b2a66903 --- /dev/null +++ b/script/c511002876.lua @@ -0,0 +1,59 @@ +--Hidden Fangs of Revenge +function c511002876.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002876.condition) + e1:SetTarget(c511002876.target) + e1:SetOperation(c511002876.activate) + c:RegisterEffect(e1) +end +function c511002876.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511002876.cfilter(c) + return c:IsDefensePos() and c:IsDestructable() +end +function c511002876.filter(c) + return (c:IsFacedown() or c:IsDefensePos()) and c:IsDestructable() +end +function c511002876.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002876.cfilter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(c511002876.filter,tp,LOCATION_ONFIELD,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002876.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511002876.filter,tp,LOCATION_ONFIELD,0,nil) + if Duel.Destroy(g,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local sum=dg:GetSum(Card.GetDefense) + local a=Duel.GetAttacker() + if sum>a:GetAttack() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002876.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + if a:IsControler(tp) then a=Duel.GetAttackTarget() end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e3) + Duel.BreakEffect() + Duel.Destroy(a,REASON_EFFECT) + end + end +end +function c511002876.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511002877.lua b/script/c511002877.lua new file mode 100644 index 00000000..0329a9ca --- /dev/null +++ b/script/c511002877.lua @@ -0,0 +1,45 @@ +--D・ライトン +function c511002877.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REFLECT_DAMAGE) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511002877.cona) + e1:SetTargetRange(1,0) + e1:SetValue(c511002877.refval) + c:RegisterEffect(e1) + --def + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e5:SetCode(EVENT_CHAIN_SOLVED) + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c511002877.surop2) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EVENT_DAMAGE) + c:RegisterEffect(e6) +end +function c511002877.cona(e) + return e:GetHandler():IsAttackPos() +end +function c511002877.refval(e,re,val,r,rp,rc) + return rp~=e:GetHandlerPlayer() and bit.band(r,REASON_EFFECT)~=0 +end +function c511002877.surop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLP(tp)<=0 and not c:IsStatus(STATUS_DISABLED) and not c:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsDefensePos() + and Duel.GetFlagEffect(tp,511002877)==0 then + Duel.Hint(HINT_CARD,0,511002877) + Duel.RegisterFlagEffect(tp,511002877,0,0,0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_COIN) + local coin=Duel.SelectOption(tp,60,61) + local res=Duel.TossCoin(tp,1) + if coin~=res then + Duel.SetLP(tp,0) + Duel.Recover(tp,100,REASON_EFFECT) + end + end +end diff --git a/script/c511002878.lua b/script/c511002878.lua new file mode 100644 index 00000000..55567ef2 --- /dev/null +++ b/script/c511002878.lua @@ -0,0 +1,27 @@ +--ガガガ学園の緊急連絡網 +function c511002878.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002878.target) + e1:SetOperation(c511002878.activate) + c:RegisterEffect(e1) +end +function c511002878.filter(c,e,tp) + return c:IsSetCard(0x54) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002878.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002878.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511002878.activate(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,c511002878.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002879.lua b/script/c511002879.lua new file mode 100644 index 00000000..27ad1720 --- /dev/null +++ b/script/c511002879.lua @@ -0,0 +1,45 @@ +--D2シールド +function c511002879.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002879.condition) + e1:SetTarget(c511002879.target) + e1:SetOperation(c511002879.activate) + c:RegisterEffect(e1) +end +function c511002879.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002879.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:IsPosition(POS_FACEUP_DEFENSE) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_DEFENSE) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_DEFENSE) +end +function c511002879.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetDefense()*2) + tc:RegisterEffect(e1) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DESTROY) + e3:SetLabel(tp) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetOperation(c511002879.drop) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end +function c511002879.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(e:GetLabel(),1,REASON_EFFECT) +end diff --git a/script/c511002880.lua b/script/c511002880.lua new file mode 100644 index 00000000..49d67fdd --- /dev/null +++ b/script/c511002880.lua @@ -0,0 +1,14 @@ +--クロック・リゾネーター +function c511002880.initial_effect(c) + --battle des rep + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetCountLimit(1) + e1:SetTarget(c511002880.reptg) + c:RegisterEffect(e1) +end +function c511002880.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsPosition(POS_FACEUP_DEFENSE) end + return true +end diff --git a/script/c511002881.lua b/script/c511002881.lua new file mode 100644 index 00000000..6117ca7e --- /dev/null +++ b/script/c511002881.lua @@ -0,0 +1,41 @@ +--ラピッド・ウォリアー +function c511002881.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(255998,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002881.condition) + e1:SetCost(c511002881.cost) + e1:SetOperation(c511002881.operation) + c:RegisterEffect(e1) +end +function c511002881.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() and not e:GetHandler():IsHasEffect(EFFECT_DIRECT_ATTACK) +end +function c511002881.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c511002881.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511002881.ftarget) + e1:SetLabel(e:GetHandler():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511002881.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002882.lua b/script/c511002882.lua new file mode 100644 index 00000000..02e735dc --- /dev/null +++ b/script/c511002882.lua @@ -0,0 +1,37 @@ +--二角獣レーム +function c511002882.initial_effect(c) + --deckdes + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(58685438,0)) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511002882.ddcon) + e1:SetTarget(c511002882.ddtg) + e1:SetOperation(c511002882.ddop) + c:RegisterEffect(e1) + --syn limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(c511002882.synlimit) + c:RegisterEffect(e2) +end +function c511002882.ddcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO +end +function c511002882.ddtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,2) +end +function c511002882.ddop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.DiscardDeck(p,2,REASON_EFFECT) +end +function c511002882.synlimit(e,c) + if not c then return false end + return not c:IsRace(RACE_BEAST) +end diff --git a/script/c511002883.lua b/script/c511002883.lua new file mode 100644 index 00000000..b38d63a4 --- /dev/null +++ b/script/c511002883.lua @@ -0,0 +1,88 @@ +--スターダスト・ファントム +function c511002883.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80244114,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511002883.spcon) + e1:SetTarget(c511002883.sptg) + e1:SetOperation(c511002883.spop) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(80244114,1)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c511002883.indcost) + e2:SetTarget(c511002883.indtg) + e2:SetOperation(c511002883.indop) + c:RegisterEffect(e2) +end +function c511002883.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c511002883.spfilter(c,e,tp) + return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002883.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002883.spfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002883.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002883.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002883.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end +function c511002883.indcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511002883.indfilter(c) + return c:IsFaceup() and c:IsCode(44508094) +end +function c511002883.indtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002883.indfilter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511002883.indop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511002883.indfilter,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e2=Effect.CreateEffect(tc) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511002883.desreptg) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end +function c511002883.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsReason(REASON_BATTLE) and c:IsFaceup() and c:GetAttack()>=800 and c:GetDefense()>=800 end + if Duel.SelectYesNo(tp,aux.Stringid(40945356,0)) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(-800) + c:RegisterEffect(e2) + return true + else return false end +end diff --git a/script/c511002884.lua b/script/c511002884.lua new file mode 100644 index 00000000..3ed1aade --- /dev/null +++ b/script/c511002884.lua @@ -0,0 +1,32 @@ +--メサイアの蟻地獄 +function c511002884.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002884.condition) + e1:SetTarget(c511002884.target) + e1:SetOperation(c511002884.activate) + c:RegisterEffect(e1) +end +function c511002884.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002884.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetAttacker() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) +end +function c511002884.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() then + if Duel.NegateAttack() then + Duel.BreakEffect() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511002885.lua b/script/c511002885.lua new file mode 100644 index 00000000..27e57fd6 --- /dev/null +++ b/script/c511002885.lua @@ -0,0 +1,80 @@ +--Quiz Hour +function c511002885.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002885.target) + e1:SetOperation(c511002885.activate) + c:RegisterEffect(e1) + --cannot release + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_RELEASE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511002885.descon) + e3:SetTarget(c511002885.destg) + e3:SetOperation(c511002885.desop) + c:RegisterEffect(e3) +end +function c511002885.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002885.setfilter(c,code,tp) + return (c:IsMSetable(true,nil) or not Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_MSET)) and c:IsCode(code) +end +function c511002885.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(g,REASON_EFFECT) + Duel.BreakEffect() + local g1=Duel.GetMatchingGroup(c511002885.setfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,51102783,tp) + local g2=Duel.GetMatchingGroup(c511002885.setfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,51102786,tp) + local g3=Duel.GetMatchingGroup(c511002885.setfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,51102781,tp) + if g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 then + Duel.Hint(HINT_SELECTMSG,tp,HINT_SET) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINT_SET) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.Hint(HINT_SELECTMSG,tp,HINT_SET) + local sg3=g3:Select(tp,1,1,nil) + sg1:Merge(sg3) + local tc=sg1:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEDOWN_DEFENSE,true) + Duel.RaiseEvent(tc,EVENT_MSET,e,REASON_EFFECT,tp,tp,0) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=sg1:GetNext() + end + end +end +function c511002885.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) +end +function c511002885.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002885.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511002886.lua b/script/c511002886.lua new file mode 100644 index 00000000..39c1a2b1 --- /dev/null +++ b/script/c511002886.lua @@ -0,0 +1,39 @@ +--Infinity Barrage +function c511002886.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511002886.condition) + e1:SetCost(c511002886.cost) + e1:SetTarget(c511002886.target) + e1:SetOperation(c511002886.activate) + c:RegisterEffect(e1) +end +function c511002886.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)==0 +end +function c511002886.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511002886.target(e,tp,eg,ep,ev,re,r,rp,chk) + local dam=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)*400 + if chk==0 then return dam>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511002886.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)*400 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511002887.lua b/script/c511002887.lua new file mode 100644 index 00000000..e191be36 --- /dev/null +++ b/script/c511002887.lua @@ -0,0 +1,35 @@ +--Explosive Blast +function c511002887.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002887.condition) + e1:SetTarget(c511002887.target) + e1:SetOperation(c511002887.activate) + c:RegisterEffect(e1) +end +function c511002887.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002887.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:GetBattledGroupCount()==0 +end +function c511002887.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002887.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002887.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511002887.filter,tp,LOCATION_MZONE,0,1,3,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*400) +end +function c511002887.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ct=Duel.Destroy(sg,REASON_EFFECT) + if ct~=0 then + Duel.BreakEffect() + Duel.Damage(1-tp,ct*400,REASON_EFFECT) + end +end diff --git a/script/c511002888.lua b/script/c511002888.lua new file mode 100644 index 00000000..56ce5905 --- /dev/null +++ b/script/c511002888.lua @@ -0,0 +1,44 @@ +--おもちゃ箱 +function c511002888.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81587028,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511002888.spcon) + e1:SetTarget(c511002888.sptg) + e1:SetOperation(c511002888.spop) + c:RegisterEffect(e1) +end +function c511002888.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511002888.spfilter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002888.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511002888.spfilter,tp,LOCATION_DECK,0,4,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,4,tp,LOCATION_DECK) +end +function c511002888.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<4 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511002888.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()<4 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,4,4,nil) + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511002889.lua b/script/c511002889.lua new file mode 100644 index 00000000..54a9413b --- /dev/null +++ b/script/c511002889.lua @@ -0,0 +1,41 @@ +--Hand Block +function c511002889.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002889.condition) + e1:SetOperation(c511002889.operation) + c:RegisterEffect(e1) +end +c511002889.collection={ + [28003512]=true;[52800428]=true;[62793020]=true;[68535320]=true;[95929069]=true; + [22530212]=true;[21414674]=true; +} +function c511002889.cfilter(c) + return c:IsFaceup() and c511002889.collection[c:GetCode()] +end +function c511002889.condition(e,tp,eg,ep,ev,re,r,rp) + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) + and Duel.IsExistingMatchingCard(c511002889.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002889.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(c511002889.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002889.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(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 diff --git a/script/c511002890.lua b/script/c511002890.lua new file mode 100644 index 00000000..483936b5 --- /dev/null +++ b/script/c511002890.lua @@ -0,0 +1,60 @@ +--Thousand Punisher +function c511002890.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002890.cost) + e1:SetTarget(c511002890.target) + e1:SetOperation(c511002890.activate) + c:RegisterEffect(e1) +end +function c511002890.cfilter(c,tp) + return c:GetAttack()>0 and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,c) +end +function c511002890.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511002890.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 + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c511002890.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511002890.cfilter,1,1,nil) + local atk=g:GetFirst():GetAttack() + Duel.Release(g,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetParam(atk) +end +function c511002890.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local ct=math.floor(atk/1000) + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + if atk==0 then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + else + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(ct-1) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + end +end diff --git a/script/c511002891.lua b/script/c511002891.lua new file mode 100644 index 00000000..5afed65e --- /dev/null +++ b/script/c511002891.lua @@ -0,0 +1,34 @@ +--Thousand Buster +function c511002891.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002891.cost) + e1:SetTarget(c511002891.target) + e1:SetOperation(c511002891.activate) + c:RegisterEffect(e1) +end +function c511002891.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 c511002891.filter(c) + return ((c:IsPosition(POS_FACEUP_DEFENSE) and c:IsDefenseBelow(1000)) or (c:IsPosition(POS_FACEUP_ATTACK) and c:IsAttackBelow(1000))) + and c:IsDestructable() +end +function c511002891.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002891.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511002891.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,1000) +end +function c511002891.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002891.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) + Duel.BreakEffect() + Duel.Damage(1-tp,1000,REASON_EFFECT,true) + Duel.Damage(tp,1000,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511002892.lua b/script/c511002892.lua new file mode 100644 index 00000000..f022e5d6 --- /dev/null +++ b/script/c511002892.lua @@ -0,0 +1,69 @@ +--Ninjitsu Art of Mosquito Repellent +function c511002892.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c511002892.target) + e1:SetOperation(c511002892.activate) + c:RegisterEffect(e1) +end +function c511002892.rmfilter(c) + return (c:IsCode(33695750) or c:IsCode(50074522) or c:IsCode(17285476) or c:IsSetCard(0x21d)) + and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c511002892.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()==0 +end +function c511002892.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002892.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002892.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511002892.rmfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002892.filter,tp,LOCATION_MZONE,0,1,1,nil) + local rg=Duel.GetMatchingGroup(c511002892.rmfilter,tp,LOCATION_GRAVE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,rg,rg:GetCount(),0,0) +end +function c511002892.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002892.rmfilter,tp,LOCATION_GRAVE,0,nil) + local ct=Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and ct>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511002892,RESET_EVENT+0x1220000+RESET_PHASE+PHASE_END,0,1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetLabelObject(tc) + e2:SetCondition(c511002892.rmcon) + e2:SetTarget(c511002892.rmtg) + e2:SetOperation(c511002892.rmop) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) + Duel.RegisterEffect(e2,tp) + end +end +function c511002892.rmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002892.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and tc:GetFlagEffect(511002892)~=0 end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,tc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetAttack()) +end +function c511002892.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c511002893.lua b/script/c511002893.lua new file mode 100644 index 00000000..50f2b057 --- /dev/null +++ b/script/c511002893.lua @@ -0,0 +1,25 @@ +--Ninjitsu Art of Mosquito Combustion +function c511002893.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002893.target) + e1:SetOperation(c511002893.activate) + c:RegisterEffect(e1) +end +function c511002893.filter(c) + return c:GetCounter(0x1101)>0 and c:IsFaceup() +end +function c511002893.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002893.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511002893.activate(e,tp,eg,ep,ev,re,r,rp) + local dam1=Duel.GetMatchingGroupCount(c511002893.filter,tp,LOCATION_MZONE,0,nil)*600 + local dam2=Duel.GetMatchingGroupCount(c511002893.filter,tp,0,LOCATION_MZONE,nil)*600 + Duel.Damage(tp,dam1,REASON_EFFECT,true) + Duel.Damage(1-tp,dam2,REASON_EFFECT,true) + Duel.RDComplete() +end diff --git a/script/c511002894.lua b/script/c511002894.lua new file mode 100644 index 00000000..c20d383d --- /dev/null +++ b/script/c511002894.lua @@ -0,0 +1,28 @@ +--ステルスロイド +function c511002894.initial_effect(c) + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetDescription(aux.Stringid(70194827,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetTarget(c511002894.destg) + e1:SetOperation(c511002894.desop) + c:RegisterEffect(e1) +end +function c511002894.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511002894.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002894.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c511002894.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511002894.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002894.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511002895.lua b/script/c511002895.lua new file mode 100644 index 00000000..006ef934 --- /dev/null +++ b/script/c511002895.lua @@ -0,0 +1,56 @@ +--銀河魔鏡士 +function c511002895.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98263709,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c511002895.rectg) + e1:SetOperation(c511002895.recop) + c:RegisterEffect(e1) + --set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(76321376,0)) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetTarget(c511002895.settg) + e2:SetOperation(c511002895.setop) + c:RegisterEffect(e2) +end +function c511002895.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,800) +end +function c511002895.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c511002895.settg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return (c:IsMSetable(true,nil) or not Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_MSET)) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(511002895)==0 end +end +function c511002895.setop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.MoveToField(c,tp,tp,LOCATION_MZONE,POS_FACEDOWN_DEFENSE,true) + Duel.RaiseEvent(c,EVENT_MSET,e,REASON_EFFECT,tp,tp,0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + c:RegisterFlagEffect(511002895,RESET_EVENT+0x4760000,0,0) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) +end diff --git a/script/c511002896.lua b/script/c511002896.lua new file mode 100644 index 00000000..5a86e026 --- /dev/null +++ b/script/c511002896.lua @@ -0,0 +1,98 @@ +--輝光子パラディオス +function c511002896.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),4,2) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(61344030,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002896.condition) + e1:SetCost(c511002896.cost) + e1:SetTarget(c511002896.target) + e1:SetOperation(c511002896.operation) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(61344030,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511002896.drcon) + e2:SetTarget(c511002896.drtg) + e2:SetOperation(c511002896.drop) + c:RegisterEffect(e2) +end +function c511002896.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==tp and ph>=0x08 and ph<=0x20 + and (ph~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c511002896.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002896.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetAttack()>0 +end +function c511002896.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511002896.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002896.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002896.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511002896.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=Duel.GetFirstTarget() + if tg and tg:IsFaceup() and tg:IsRelateToEffect(e) and tg:GetAttack()>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tg:RegisterEffect(e1) + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + local tc=g:GetFirst() + while tc do + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end + end +end +function c511002896.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) + and c:GetPreviousControler()==tp and c:GetReasonPlayer()==1-tp +end +function c511002896.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002896.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002897.lua b/script/c511002897.lua new file mode 100644 index 00000000..bae8afb2 --- /dev/null +++ b/script/c511002897.lua @@ -0,0 +1,18 @@ +--Ancestor Bird +function c511002897.initial_effect(c) + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_INDESTRUCTABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(1) + e1:SetCondition(c511002897.condition) + c:RegisterEffect(e1) +end +function c511002897.filter(c,tp) + return c:IsType(TYPE_MONSTER) and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,2,c,c:GetCode()) +end +function c511002897.condition(e) + return Duel.IsExistingMatchingCard(c511002897.filter,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,e:GetHandlerPlayer()) +end diff --git a/script/c511002898.lua b/script/c511002898.lua new file mode 100644 index 00000000..f9a30376 --- /dev/null +++ b/script/c511002898.lua @@ -0,0 +1,34 @@ +--Battle Eater +function c511002898.initial_effect(c) + --end battle phase + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(18964575,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002898.condition) + e1:SetCost(c511002898.cost) + e1:SetTarget(c511002898.target) + e1:SetOperation(c511002898.operation) + c:RegisterEffect(e1) +end +function c511002898.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:IsControler(1-tp) and Duel.GetAttackTarget()==nil and at:GetAttack()=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511002899.filter(c,e,tp,tid) + return bit.band(c:GetReason(),REASON_BATTLE)~=0 and c:GetTurnID()==tid and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002899.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tid=Duel.GetTurnCount() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002899.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511002899.activate(e,tp,eg,ep,ev,re,r,rp) + local tid=Duel.GetTurnCount() + local g1=Group.CreateGroup() + local g2=Group.CreateGroup() + local fid=e:GetHandler():GetFieldID() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002899.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + g1=Duel.SelectMatchingCard(tp,c511002899.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,tid) + Duel.SpecialSummonStep(g1:GetFirst(),0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + g1:GetFirst():RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + g1:GetFirst():RegisterEffect(e2,true) + g1:GetFirst():RegisterFlagEffect(51102899,RESET_EVENT+0x1fe0000,0,1,fid) + end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002899.filter,1-tp,LOCATION_GRAVE,0,1,nil,e,1-tp,tid) + and Duel.SelectYesNo(1-tp,aux.Stringid(511000631,1)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + g2=Duel.SelectMatchingCard(1-tp,c511002899.filter,1-tp,LOCATION_GRAVE,0,1,1,nil,e,1-tp,tid) + Duel.SpecialSummonStep(g2:GetFirst(),0,1-tp,1-tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + g2:GetFirst():RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + g2:GetFirst():RegisterEffect(e2,true) + g2:GetFirst():RegisterFlagEffect(51102899,RESET_EVENT+0x1fe0000,0,1,fid) + end + Duel.SpecialSummonComplete() + g1:Merge(g2) + g1:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g1) + e1:SetCondition(c511002899.descon) + e1:SetOperation(c511002899.desop) + Duel.RegisterEffect(e1,tp) +end +function c511002899.desfilter(c,fid) + return c:GetFlagEffectLabel(51102899)==fid +end +function c511002899.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511002899.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511002899.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511002899.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c511002900.lua b/script/c511002900.lua new file mode 100644 index 00000000..65dfb1cc --- /dev/null +++ b/script/c511002900.lua @@ -0,0 +1,32 @@ +--Black Cyclone +function c511002900.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002900.condition) + e1:SetTarget(c511002900.target) + e1:SetOperation(c511002900.activate) + c:RegisterEffect(e1) +end +function c511002900.cfilter(c) + return c:IsFaceup() and c:IsCode(81983656) +end +function c511002900.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) + and Duel.IsExistingMatchingCard(c511002900.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511002900.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511002900.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511002902.lua b/script/c511002902.lua new file mode 100644 index 00000000..39c95390 --- /dev/null +++ b/script/c511002902.lua @@ -0,0 +1,68 @@ +--Absorbing Lamp +function c511002902.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetLabelObject(nil) + e1:SetCondition(c511002902.condition) + e1:SetTarget(c511002902.target) + e1:SetOperation(c511002902.activate) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_LEAVE_FIELD_P) + e2:SetOperation(c511002902.checkop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511002902.desop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) +end +function c511002902.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and Duel.IsChainNegatable(ev) +end +function c511002902.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=re:GetHandler() + if chk==0 then return ec:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(ec) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if ec:IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_TOHAND,eg,1,0,0) + end + e:SetLabelObject(nil) +end +function c511002902.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + Duel.NegateActivation(ev) + if tc and tc:IsRelateToEffect(e) and tc:IsRelateToEffect(re) then + tc:CancelToGrave() + Duel.SendtoHand(tc,tp,REASON_EFFECT) + c:SetCardTarget(tc) + e:SetLabelObject(tc) + end +end +function c511002902.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c511002902.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetFirstCardTarget() + if not tc then + tc=e:GetLabelObject():GetLabelObject():GetLabelObject() + end + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c511002903.lua b/script/c511002903.lua new file mode 100644 index 00000000..a8cc4cff --- /dev/null +++ b/script/c511002903.lua @@ -0,0 +1,58 @@ +--Gearspring Catapult +function c511002903.initial_effect(c) + c:EnableCounterPermit(0x107) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c511002903.ctcon) + e2:SetOperation(c511002903.ctop) + c:RegisterEffect(e2) + --gain atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511002903,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511002903.atkcost) + e3:SetTarget(c511002903.atktg) + e3:SetOperation(c511002903.atkop) + c:RegisterEffect(e3) +end +function c511002903.ctcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002903.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:AddCounter(0x107,1) + Duel.RaiseEvent(c,511002905,e,REASON_EFFECT,tp,tp,0x107) +end +function c511002903.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x107,1,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x107,1,REASON_COST) +end +function c511002903.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc:IsControler(tp) 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 c511002903.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002904.lua b/script/c511002904.lua new file mode 100644 index 00000000..12ae4da7 --- /dev/null +++ b/script/c511002904.lua @@ -0,0 +1,76 @@ +--Automatic Gearspring Machine +function c511002904.initial_effect(c) + c:EnableCounterPermit(0x107) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002904.target) + e1:SetOperation(c511002904.activate) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c511002904.ctcon) + e2:SetOperation(c511002904.ctop) + c:RegisterEffect(e2) + --place + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_COUNTER) + e4:SetDescription(aux.Stringid(47408488,1)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCost(c511002904.plcost) + e4:SetTarget(c511002904.pltg) + e4:SetOperation(c511002904.plop) + c:RegisterEffect(e4) +end +function c511002904.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,2,0,0x107) +end +function c511002904.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + c:AddCounter(0x107,2) + Duel.RaiseEvent(c,511002905,e,REASON_EFFECT,tp,tp,0x107) + end +end +function c511002904.ctcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002904.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:AddCounter(0x107,1) + Duel.RaiseSingleEvent(c,511002905,e,0,0,tp,0) +end +function c511002904.plcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabel(e:GetHandler():GetCounter(0x107)) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002904.pltg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local c=e:GetHandler() + local ct=c:GetCounter(0x107) + return ct>0 and Duel.IsExistingMatchingCard(Card.IsCanAddCounter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c,0x107,ct) + end + Duel.SetTargetParam(e:GetLabel()) + e:SetLabel(0) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,ct,0,0x107) +end +function c511002904.plop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(73853830,1)) + local g=Duel.SelectMatchingCard(tp,Card.IsCanAddCounter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,0x107,ct) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + tc:AddCounter(0x107,ct) + Duel.RaiseEvent(tc,511002905,e,REASON_EFFECT,tp,tp,0x107) + end +end diff --git a/script/c511002905.lua b/script/c511002905.lua new file mode 100644 index 00000000..0b17de3c --- /dev/null +++ b/script/c511002905.lua @@ -0,0 +1,27 @@ +--Gearspring Exploder +function c511002905.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511002905) + e1:SetCondition(c511002905.condition) + e1:SetTarget(c511002905.target) + e1:SetOperation(c511002905.activate) + c:RegisterEffect(e1) +end +function c511002905.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsControler,1,nil,tp) and Duel.GetTurnPlayer()==tp +end +function c511002905.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetCounter(tp,1,0,0x107) + if chk==0 then return ct>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ct*800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*800) +end +function c511002905.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,Duel.GetCounter(tp,1,0,0x107)*800,REASON_EFFECT) +end diff --git a/script/c511002906.lua b/script/c511002906.lua new file mode 100644 index 00000000..6a466168 --- /dev/null +++ b/script/c511002906.lua @@ -0,0 +1,46 @@ +--ネジマキシキガミ +function c511002906.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002906.spcon) + e1:SetOperation(c511002906.spop) + c:RegisterEffect(e1) + --0 atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(2137678,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002906.target) + e2:SetOperation(c511002906.operation) + c:RegisterEffect(e2) +end +function c511002906.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and Duel.IsCanRemoveCounter(c:GetControler(),1,0,0x107,3,REASON_COST) +end +function c511002906.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.RemoveCounter(tp,1,0,0x107,3,REASON_RULE) +end +function c511002906.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511002906.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002907.lua b/script/c511002907.lua new file mode 100644 index 00000000..ad8d2e3d --- /dev/null +++ b/script/c511002907.lua @@ -0,0 +1,102 @@ +--Cursed Ivy +function c511002907.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002907.target) + e1:SetOperation(c511002907.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511002907.desop) + c:RegisterEffect(e2) + --token + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(54629413,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511002907.sumcon) + e3:SetTarget(c511002907.sumtg) + e3:SetOperation(c511002907.sumop) + c:RegisterEffect(e3) +end +function c511002907.filter(c,e,tp) + return c:IsCode(30069398) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002907.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002907.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002907.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002907.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002907.eqlimit(e,c) + return e:GetOwner()==c +end +function c511002907.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002907.eqlimit) + c:RegisterEffect(e1) + end +end +function c511002907.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511002907.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511002907.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511002907.sumop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,30069399,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH,POS_FACEUP_DEFENSE,1-tp) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,30069399) + Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DESTROYED) + e1:SetLabelObject(token) + e1:SetCondition(c511002907.damcon) + e1:SetOperation(c511002907.damop) + Duel.RegisterEffect(e1,tp) + end + Duel.SpecialSummonComplete() +end +function c511002907.damcon(e,tp,eg,ep,ev,re,r,rp) + local tok=e:GetLabelObject() + if eg:IsContains(tok) then + return true + else + if not tok:IsLocation(LOCATION_MZONE) then e:Reset() end + return false + end +end +function c511002907.damop(e,tp,eg,ep,ev,re,r,rp) + local tok=e:GetLabelObject() + Duel.Damage(tok:GetPreviousControler(),300,REASON_EFFECT) +end diff --git a/script/c511002908.lua b/script/c511002908.lua new file mode 100644 index 00000000..5c935e06 --- /dev/null +++ b/script/c511002908.lua @@ -0,0 +1,46 @@ +--Rose Blizzard +function c511002908.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002908.condition) + e1:SetTarget(c511002908.target) + e1:SetOperation(c511002908.activate) + c:RegisterEffect(e1) +end +function c511002908.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_MONSTER) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c511002908.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return re and re:GetHandler():IsLocation(LOCATION_MZONE) end + Duel.SetTargetCard(eg) +end +function c511002908.activate(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + 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(c511002908.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e1) + end +end +function c511002908.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then e:SetLabel(val) return 0 + else return val end +end diff --git a/script/c511002910.lua b/script/c511002910.lua new file mode 100644 index 00000000..41b54bd2 --- /dev/null +++ b/script/c511002910.lua @@ -0,0 +1,39 @@ +--ドリル・シンクロン +function c511002910.initial_effect(c) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_PIERCE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(56286179,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511002910.drcon) + e2:SetTarget(c511002910.drtg) + e2:SetOperation(c511002910.drop) + c:RegisterEffect(e2) +end +function c511002910.drcon(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and d:IsDefensePos() and a:IsControler(tp) +end +function c511002910.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002910.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511002911.lua b/script/c511002911.lua new file mode 100644 index 00000000..2cf3c3d6 --- /dev/null +++ b/script/c511002911.lua @@ -0,0 +1,49 @@ +--奇跡の軌跡 +function c511002911.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+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(c511002911.condition) + e1:SetTarget(c511002911.target) + e1:SetOperation(c511002911.activate) + c:RegisterEffect(e1) +end +function c511002911.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002911.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:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) + and Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_ATTACK) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511002911.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(1-tp,1,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if tc 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:SetCondition(c511002911.atkcon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(1) + tc:RegisterEffect(e2) + end +end +function c511002911.atkcon(e) + local ph=Duel.GetCurrentPhase() + if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) then return false end + return Duel.GetAttacker() +end diff --git a/script/c511002912.lua b/script/c511002912.lua new file mode 100644 index 00000000..57322052 --- /dev/null +++ b/script/c511002912.lua @@ -0,0 +1,41 @@ +--零鳥姫リオート・ハルピュイア +function c511002912.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,2) + c:EnableReviveLimit() + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(13183454,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002912.cost) + e1:SetTarget(c511002912.target) + e1:SetOperation(c511002912.operation) + c:RegisterEffect(e1) +end +function c511002912.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002912.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c511002912.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511002912.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002912.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002912.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511002912.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:GetAttack()>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002913.lua b/script/c511002913.lua new file mode 100644 index 00000000..5f89bc0d --- /dev/null +++ b/script/c511002913.lua @@ -0,0 +1,68 @@ +--No.94 Crystalzero +function c511002913.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,2) + c:EnableReviveLimit() + --atk down + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62070231,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511002913.condition) + e1:SetCost(c511002913.cost) + e1:SetTarget(c511002913.target) + e1:SetOperation(c511002913.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511002913.indes) + c:RegisterEffect(e2) + if not c511002913.global_check then + c511002913.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002913.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511002913.xyz_number=94 +function c511002913.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511002913.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511002913.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c511002913.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + end +end +function c511002913.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,62070231) + Duel.CreateToken(1-tp,62070231) +end +function c511002913.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511002914.lua b/script/c511002914.lua new file mode 100644 index 00000000..14fd30d3 --- /dev/null +++ b/script/c511002914.lua @@ -0,0 +1,132 @@ +--Wings of the Supreme King +function c511002914.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(c511002914.target) + e1:SetOperation(c511002914.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(c511002914.eqlimit) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(1) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(1) + c:RegisterEffect(e4) + --damage + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BATTLE_DESTROYING) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511002914.damcon) + e5:SetCost(c511002914.damcost) + e5:SetTarget(c511002914.damtg) + e5:SetOperation(c511002914.damop) + c:RegisterEffect(e5) + --destroy + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e6:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e6:SetCode(EVENT_LEAVE_FIELD) + e6:SetCondition(c511002914.descon) + e6:SetTarget(c511002914.destg) + e6:SetOperation(c511002914.desop) + c:RegisterEffect(e6) + --disable summon + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetRange(LOCATION_SZONE) + e7:SetCode(EFFECT_CANNOT_SUMMON) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e7:SetTargetRange(1,0) + c:RegisterEffect(e7) + local e8=e7:Clone() + e8:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e8) +end +function c511002914.eqlimit(e,c) + return c:IsRace(RACE_DRAGON) and c:GetSummonLocation()==LOCATION_EXTRA +end +function c511002914.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:GetSummonLocation()==LOCATION_EXTRA +end +function c511002914.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002914.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002914.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511002914.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002914.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002914.damcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + return e:GetHandler():GetEquipTarget()==ec and ec:IsControler(tp) + and bc:GetPreviousControler()==1-tp and bc:IsReason(REASON_BATTLE) +end +function c511002914.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511002914)==0 end + e:GetHandler():RegisterFlagEffect(511002914,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) +end +function c511002914.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ec=e:GetHandler():GetEquipTarget() + local bc=ec:GetBattleTarget() + local dam=bc:GetPreviousAttackOnField() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002914.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002914.descon(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 c511002914.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetPreviousEquipTarget() + local rc=ec:GetReasonCard() + if chk==0 then return rc and rc:IsDestructable() end + Duel.SetTargetCard(rc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,rc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,rc:GetAttack()) +end +function c511002914.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if atk<0 or tc:IsFacedown() then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c511002915.lua b/script/c511002915.lua new file mode 100644 index 00000000..d58acd39 --- /dev/null +++ b/script/c511002915.lua @@ -0,0 +1,39 @@ +--爆弾ウニ-ボム・アーチン- +function c511002915.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002915.condition) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(52140003,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c511002915.damcon) + e2:SetTarget(c511002915.damtg) + e2:SetOperation(c511002915.damop) + c:RegisterEffect(e2) +end +function c511002915.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp +end +function c511002915.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511002915.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511002915.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002916.lua b/script/c511002916.lua new file mode 100644 index 00000000..d8b6e518 --- /dev/null +++ b/script/c511002916.lua @@ -0,0 +1,33 @@ +--和睦の使者 +function c511002916.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(c511002916.condition) + e1:SetCost(c511002916.cost) + e1:SetOperation(c511002916.activate) + c:RegisterEffect(e1) +end +function c511002916.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 +end +function c511002916.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511002916.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.BreakEffect() + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511002917.lua b/script/c511002917.lua new file mode 100644 index 00000000..747e2bd6 --- /dev/null +++ b/script/c511002917.lua @@ -0,0 +1,28 @@ +--Realize Defense +function c511002917.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002917.target) + e1:SetOperation(c511002917.activate) + c:RegisterEffect(e1) +end +function c511002917.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:GetBaseDefense()>c:GetBaseAttack() +end +function c511002917.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002917.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002917.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511002917.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511002917.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511002918.lua b/script/c511002918.lua new file mode 100644 index 00000000..c9436645 --- /dev/null +++ b/script/c511002918.lua @@ -0,0 +1,28 @@ +--Comeback +function c511002918.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002918.target) + e1:SetOperation(c511002918.activate) + c:RegisterEffect(e1) +end +function c511002918.filter(c,tp) + return c:IsControlerCanBeChanged() and c:IsFaceup() and c:GetOwner()==tp +end +function c511002918.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002918.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511002918.filter,tp,0,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511002918.filter,tp,0,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511002918.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.GetControl(tc,tp) + end +end diff --git a/script/c511002919.lua b/script/c511002919.lua new file mode 100644 index 00000000..1c188401 --- /dev/null +++ b/script/c511002919.lua @@ -0,0 +1,35 @@ +--Comic Field +function c511002919.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c511002919.destg) + e4:SetValue(c511002919.desval) + c:RegisterEffect(e4) +end +function c511002919.dfilter(c) + return c:IsFaceup() and c:IsOnField() and c:IsReason(REASON_BATTLE) and (c:IsCode(77631175) or c:IsCode(13030280)) +end +function c511002919.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:FilterCount(c511002919.dfilter,nil)==1 end + Duel.Hint(HINT_CARD,0,511002919) + local g=eg:Filter(c511002919.dfilter,nil) + local tc=g:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(500) + tc:RegisterEffect(e1) + return true +end +function c511002919.desval(e,c) + return c:IsFaceup() and c:IsOnField() and c:IsReason(REASON_BATTLE) and (c:IsCode(77631175) or c:IsCode(13030280)) +end diff --git a/script/c511002920.lua b/script/c511002920.lua new file mode 100644 index 00000000..b6e7880e --- /dev/null +++ b/script/c511002920.lua @@ -0,0 +1,32 @@ +--Decrease +function c511002920.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(35544402,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511002920.target) + e1:SetOperation(c511002920.operation) + c:RegisterEffect(e1) +end +function c511002920.filter(c) + return c:IsFaceup() and c:GetLevel()>2 +end +function c511002920.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002920.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002920.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002920.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002920.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:GetLevel()>2 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002921.lua b/script/c511002921.lua new file mode 100644 index 00000000..ab4115a9 --- /dev/null +++ b/script/c511002921.lua @@ -0,0 +1,38 @@ +--Devoted Love +function c511002921.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511002921.condition) + e1:SetTarget(c511002921.target) + e1:SetOperation(c511002921.activate) + c:RegisterEffect(e1) +end +function c511002921.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and Duel.GetTurnPlayer()~=tp +end +function c511002921.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511002921.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.BreakEffect() + Duel.Draw(1-tp,1,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c511002921.lpop) + Duel.RegisterEffect(e1,tp) +end +function c511002921.lpop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511002921) + Duel.SetLP(tp,0) +end diff --git a/script/c511002922.lua b/script/c511002922.lua new file mode 100644 index 00000000..2b580fa4 --- /dev/null +++ b/script/c511002922.lua @@ -0,0 +1,51 @@ +--Drop Exchange +function c511002922.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002922.cost) + e1:SetTarget(c511002922.target) + e1:SetOperation(c511002922.activate) + c:RegisterEffect(e1) +end +function c511002922.filter(c,g,e,tp) + return c:GetLevel()>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and g:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),2,99) +end +function c511002922.cfilter(c) + return c:GetLevel()>0 and c:IsAbleToGraveAsCost() +end +function c511002922.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511002922.spfilter(c,lv,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and lv==c:GetLevel() +end +function c511002922.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local rg=Duel.GetMatchingGroup(c511002922.cfilter,tp,LOCATION_MZONE,0,nil) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511002922.filter,tp,LOCATION_HAND,0,1,nil,rg,e,tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 end + local g=Group.CreateGroup() + local lv=0 + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + g=Duel.SelectMatchingCard(tp,c511002922.cfilter,tp,LOCATION_MZONE,0,2,99,nil) + lv=g:GetSum(Card.GetLevel) + until Duel.IsExistingMatchingCard(c511002922.spfilter,tp,LOCATION_HAND,0,1,nil,lv,e,tp) + Duel.SendtoGrave(g,REASON_COST) + Duel.SetTargetParam(lv) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002922.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002922.spfilter,tp,LOCATION_HAND,0,1,1,nil,lv,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002923.lua b/script/c511002923.lua new file mode 100644 index 00000000..20a30a2d --- /dev/null +++ b/script/c511002923.lua @@ -0,0 +1,27 @@ +--Fair Exchange +function c511002923.initial_effect(c) + --discard deck + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c511002923.target) + e1:SetOperation(c511002923.activate) + c:RegisterEffect(e1) +end +function c511002923.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,3) and Duel.IsPlayerCanDiscardDeck(1-tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,3) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,0) +end +function c511002923.activate(e,tp,eg,ep,ev,re,r,rp) + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.DiscardDeck(p,val,REASON_EFFECT)>0 then + local g=Duel.GetOperatedGroup():Filter(Card.IsLocation,nil,LOCATION_GRAVE) + local sum=g:GetSum(Card.GetLevel) + Duel.DiscardDeck(1-p,sum,REASON_EFFECT) + end +end diff --git a/script/c511002924.lua b/script/c511002924.lua new file mode 100644 index 00000000..455cba3a --- /dev/null +++ b/script/c511002924.lua @@ -0,0 +1,37 @@ +--Fool's Dice +function c511002924.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511002924.condition) + e1:SetCost(c511002924.cost) + e1:SetTarget(c511002924.target) + e1:SetOperation(c511002924.activate) + c:RegisterEffect(e1) +end +function c511002924.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:GetPreviousControler()~=tp +end +function c511002924.filter(c) + return c:IsType(TYPE_NORMAL) and c:IsLevelBelow(2) and c:IsDiscardable() +end +function c511002924.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002924.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511002924.filter,1,1,REASON_COST+REASON_DISCARD) +end +function c511002924.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return true end + local dam=tc:GetLevel()*200 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511002924.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002925.lua b/script/c511002925.lua new file mode 100644 index 00000000..d6120571 --- /dev/null +++ b/script/c511002925.lua @@ -0,0 +1,43 @@ +--Furious Max's Curse +function c511002925.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(c511002925.target) + e1:SetOperation(c511002925.operation) + c:RegisterEffect(e1) + --Indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + 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) + --cannot change pos + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + c:RegisterEffect(e4) +end +function c511002925.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 c511002925.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end diff --git a/script/c511002926.lua b/script/c511002926.lua new file mode 100644 index 00000000..8194bd0c --- /dev/null +++ b/script/c511002926.lua @@ -0,0 +1,49 @@ +--Gagaga Thunder +function c511002926.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002926.target) + e1:SetOperation(c511002926.activate) + c:RegisterEffect(e1) +end +function c511002926.filter1(c,tp) + return c:GetLevel()>0 and c:IsSetCard(0x54) + and Duel.IsExistingTarget(c511002926.filter2,tp,LOCATION_MZONE,0,1,c,c:GetLevel()) +end +function c511002926.filter2(c,lv) + return c:GetLevel()>0 and c:GetLevel()~=lv and c:IsSetCard(0x54) +end +function c511002926.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511002926.filter1,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tc1=Duel.SelectTarget(tp,c511002926.filter1,tp,LOCATION_MZONE,0,1,1,nil,tp):GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tc2=Duel.SelectTarget(tp,c511002926.filter2,tp,LOCATION_MZONE,0,1,1,tc1,tc1:GetLevel()):GetFirst() + local lv=0 + if tc1:GetLevel()>tc2:GetLevel() then + lv=tc1:GetLevel()-tc2:GetLevel() + else + lv=tc2:GetLevel()-tc1:GetLevel() + end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,lv*300) +end +function c511002926.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==2 then + local tc1=g:GetFirst() + local tc2=g:GetNext() + local lv=0 + if tc1:GetLevel()>tc2:GetLevel() then + lv=tc1:GetLevel()-tc2:GetLevel() + else + lv=tc2:GetLevel()-tc1:GetLevel() + end + Duel.Damage(1-tp,lv*300,REASON_EFFECT) + end +end diff --git a/script/c511002927.lua b/script/c511002927.lua new file mode 100644 index 00000000..7bb9501b --- /dev/null +++ b/script/c511002927.lua @@ -0,0 +1,104 @@ +--Gagagamirror +function c511002927.initial_effect(c) + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --remove + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002927.target) + e1:SetOperation(c511002927.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c511002927.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511002927.regop) + c:RegisterEffect(e3) + if not c511002927.global_check then + c511002927.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511002927.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511002927.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511002927.filter(c,e,tp) + return c:GetLevel()>0 and c:IsFaceup() and c:IsSetCard(0x54) +end +function c511002927.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511002927.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002927.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002927.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002927.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + end +end +function c511002927.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if not tc or not tc:IsLocation(LOCATION_MZONE) then + c:ResetFlagEffect(511000189) + return + end + if c:GetFlagEffect(511000189)>0 and c:GetFlagEffect(511000189)~=tc:GetLevel() then + c:ResetFlagEffect(511000189) + end + while c:GetFlagEffect(511000189)0 and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,c) +end +function c511002930.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511002930.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c511002930.cfilter,1,nil,tp) end + local tc=Duel.SelectReleaseGroup(tp,c511002930.cfilter,1,1,nil,tp):GetFirst() + local atk=tc:GetAttack() + Duel.Release(tc,REASON_COST) + Duel.SetTargetParam(atk) +end +function c511002930.activate(e,tp,eg,ep,ev,re,r,rp) + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(atk) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002931.lua b/script/c511002931.lua new file mode 100644 index 00000000..c46e8ec5 --- /dev/null +++ b/script/c511002931.lua @@ -0,0 +1,72 @@ +--Half Guard +function c511002931.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c511002931.condition) + e1:SetTarget(c511002931.target) + e1:SetOperation(c511002931.operation) + c:RegisterEffect(e1) +end +function c511002931.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if tc:IsControler(1-tp) then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + e:SetLabelObject(tc) + if not tc or not bc or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) + or not tc:IsPosition(POS_FACEUP_ATTACK) or tc:GetAttack()<800 then return false end + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + end + end + else + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + end +end +function c511002931.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc end + Duel.SetTargetCard(tc) +end +function c511002931.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetOperation(c511002931.op) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2) + end +end +function c511002931.op(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.ChangePosition(e:GetHandler(),POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) +end diff --git a/script/c511002932.lua b/script/c511002932.lua new file mode 100644 index 00000000..e0ca57f9 --- /dev/null +++ b/script/c511002932.lua @@ -0,0 +1,17 @@ +--Hexa Knight +function c511002932.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000002,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511002932.ntcon) + c:RegisterEffect(e1) +end +function c511002932.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511002933.lua b/script/c511002933.lua new file mode 100644 index 00000000..e01807cd --- /dev/null +++ b/script/c511002933.lua @@ -0,0 +1,58 @@ +--Hollow Spirit +function c511002933.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100004003,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002933.damcon) + e1:SetTarget(c511002933.damtg) + e1:SetOperation(c511002933.damop) + c:RegisterEffect(e1) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(37694547,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511002933.spcon) + e3:SetTarget(c511002933.sptg) + e3:SetOperation(c511002933.spop) + c:RegisterEffect(e3) +end +function c511002933.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_GRAVE,0,1,nil,RACE_ZOMBIE) +end +function c511002933.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511002933.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002933.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511002933.filter(c,e,tp) + return c:IsCode(511002934) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) + and (not c:IsLocation(LOCATION_GRAVE) or not c:IsHasEffect(EFFECT_NECRO_VALLEY)) +end +function c511002933.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002933.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511002933.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c511002933.filter,tp,0x13,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end diff --git a/script/c511002934.lua b/script/c511002934.lua new file mode 100644 index 00000000..cd670d5e --- /dev/null +++ b/script/c511002934.lua @@ -0,0 +1,46 @@ +--Hollow Ghost +function c511002934.initial_effect(c) + c:EnableReviveLimit() + --spsummon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511002934.splimit) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5851097,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetTarget(c511002934.damtg) + e2:SetOperation(c511002934.damop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511002934.atkcon) + e3:SetValue(0) + c:RegisterEffect(e3) +end +function c511002934.splimit(e,se,sp,st) + return se:GetHandler():IsCode(511002933) +end +function c511002934.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511002934.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002934.atkcon(e) + return not Duel.IsExistingMatchingCard(Card.IsCode,p,LOCATION_GRAVE,0,1,nil,511002933) +end diff --git a/script/c511002935.lua b/script/c511002935.lua new file mode 100644 index 00000000..b70c1fd3 --- /dev/null +++ b/script/c511002935.lua @@ -0,0 +1,21 @@ +--Joe the Pixie +function c511002935.initial_effect(c) + --0 damage + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e4:SetCondition(c511002935.atkcon) + e4:SetOperation(c511002935.atkop) + c:RegisterEffect(e4) +end +function c511002935.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not bc or c:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)>0 then return false end + if c:IsAttackPos() and bc:IsAttackPos() and c:GetAttack()<=bc:GetAttack() then return true end + if c:IsDefensePos() and c:GetDefense()0 + and Duel.IsExistingMatchingCard(c511002937.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002937.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>2 then ft=2 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002937.spfilter,tp,LOCATION_HAND,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511002937.cfilter(c) + return c:IsFaceup() and c:GetAttackedCount()>0 and c:IsCode(511002937) +end +function c511002937.poscon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002937.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511002937.filter(c) + return c:IsFaceup() and c:IsCode(511002937) and c:IsAttackPos() +end +function c511002937.posop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511002937.filter,tp,LOCATION_MZONE,0,nil) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_COPY_INHERIT) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c511002938.lua b/script/c511002938.lua new file mode 100644 index 00000000..be9a15f0 --- /dev/null +++ b/script/c511002938.lua @@ -0,0 +1,32 @@ +--Offerings to the Bound Deity +function c511002938.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002938.cost) + e1:SetTarget(c511002938.target) + e1:SetOperation(c511002938.activate) + c:RegisterEffect(e1) +end +function c511002938.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,Duel.GetLP(tp)/2) +end +function c511002938.filter(c) + return c:IsCode(100000432) and c:IsFaceup() +end +function c511002938.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002938.filter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0x94,2) +end +function c511002938.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511002938.filter,tp,LOCATION_ONFIELD,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + tc:AddCounter(0x94,2) + end +end diff --git a/script/c511002939.lua b/script/c511002939.lua new file mode 100644 index 00000000..352713f3 --- /dev/null +++ b/script/c511002939.lua @@ -0,0 +1,26 @@ +--Rescuer from the Grave +function c511002939.initial_effect(c) + --negate attack and end battle phase + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511002939.con) + e1:SetCost(c511002939.cost) + e1:SetOperation(c511002939.op) + c:RegisterEffect(e1) +end +function c511002939.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002939.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_GRAVE,0,5,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,LOCATION_GRAVE,0,5,5,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511002939.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c511002940.lua b/script/c511002940.lua new file mode 100644 index 00000000..26cf0bae --- /dev/null +++ b/script/c511002940.lua @@ -0,0 +1,34 @@ +--Scrap and Build +function c511002940.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002940.target) + e1:SetOperation(c511002940.activate) + c:RegisterEffect(e1) +end +function c511002940.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002940.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511002940.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002940.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002940.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002940.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002941.lua b/script/c511002941.lua new file mode 100644 index 00000000..a9dea74c --- /dev/null +++ b/script/c511002941.lua @@ -0,0 +1,40 @@ +--Small Resistance +function c511002941.initial_effect(c) + --active + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002941.condition) + e1:SetTarget(c511002941.target) + e1:SetOperation(c511002941.activate) + c:RegisterEffect(e1) +end +function c511002941.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002941.filter(c) + return c:IsLevelBelow(4) and c:GetLevel()>0 and c:IsAttackBelow(1000) +end +function c511002941.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002941.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002941.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + Duel.SelectTarget(tp,c511002941.filter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c511002941.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local tc=Duel.GetFirstTarget() + if a and a:IsRelateToBattle() and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if atk<0 then atk=0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + a:RegisterEffect(e1) + end +end diff --git a/script/c511002942.lua b/script/c511002942.lua new file mode 100644 index 00000000..4a774375 --- /dev/null +++ b/script/c511002942.lua @@ -0,0 +1,47 @@ +--Smoke Mirror +function c511002942.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c511002942.condition) + e1:SetTarget(c511002942.target) + e1:SetOperation(c511002942.activate) + c:RegisterEffect(e1) +end +function c511002942.cfilter(c,tp) + return c:IsType(TYPE_MONSTER) and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,2,c,c:GetCode()) +end +function c511002942.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and Duel.IsExistingMatchingCard(c511002942.cfilter,tp,LOCATION_GRAVE,0,1,nil,tp) +end +function c511002942.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c511002942.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) + and Duel.IsExistingMatchingCard(c511002942.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002942.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511002942.filter,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(g:GetFirst():GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511002943.lua b/script/c511002943.lua new file mode 100644 index 00000000..ada61cb1 --- /dev/null +++ b/script/c511002943.lua @@ -0,0 +1,55 @@ +--Spirit Mask +function c511002943.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(c511002943.target) + e1:SetOperation(c511002943.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) + --send to grave + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511002943.tgcon) + e3:SetTarget(c511002943.tgtg) + e3:SetOperation(c511002943.tgop) + c:RegisterEffect(e3) +end +function c511002943.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 c511002943.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511002943.tgcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsReason(REASON_RETURN) +end +function c511002943.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) +end +function c511002943.tgop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardHand(p,nil,d,d,REASON_EFFECT) +end diff --git a/script/c511002944.lua b/script/c511002944.lua new file mode 100644 index 00000000..ab99f240 --- /dev/null +++ b/script/c511002944.lua @@ -0,0 +1,31 @@ +--Superior Howl +function c511002944.initial_effect(c) + --effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002944.cost) + e1:SetOperation(c511002944.activate) + c:RegisterEffect(e1) +end +function c511002944.ecfilter(c) + return c:IsType(TYPE_EQUIP) and c:IsFaceup() and c:IsDestructable() +end +function c511002944.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002944.ecfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511002944.ecfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.Destroy(g,REASON_COST) +end +function c511002944.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetValue(c511002944.atkval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511002944.atkval(e,c) + return c:GetBaseAttack() +end diff --git a/script/c511002945.lua b/script/c511002945.lua new file mode 100644 index 00000000..d4bef207 --- /dev/null +++ b/script/c511002945.lua @@ -0,0 +1,41 @@ +--三連星のトリオン +function c511002945.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(511002945,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_RELEASE) + e1:SetCondition(c511002945.condition) + e1:SetTarget(c511002945.target) + e1:SetOperation(c511002945.operation) + c:RegisterEffect(e1) +end +function c511002945.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_SUMMON) +end +function c511002945.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsLocation(LOCATION_GRAVE) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511002945.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x17a0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x17a0000) + c:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002946.lua b/script/c511002946.lua new file mode 100644 index 00000000..e89138d2 --- /dev/null +++ b/script/c511002946.lua @@ -0,0 +1,38 @@ +--宝玉の導き +function c511002946.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002946.condition) + e1:SetTarget(c511002946.target) + e1:SetOperation(c511002946.activate) + c:RegisterEffect(e1) +end +function c511002946.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1034) +end +function c511002946.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511002946.cfilter,tp,LOCATION_SZONE,0,2,nil) +end +function c511002946.filter(c,e,tp) + return c:IsSetCard(0x1034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002946.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002946.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511002946.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsExistingMatchingCard(c511002946.cfilter,tp,LOCATION_SZONE,0,2,nil) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002946.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + Duel.BreakEffect() + Duel.Draw(1-tp,1,REASON_EFFECT) +end diff --git a/script/c511002947.lua b/script/c511002947.lua new file mode 100644 index 00000000..255f31d0 --- /dev/null +++ b/script/c511002947.lua @@ -0,0 +1,58 @@ +--ワーム・ホール +function c511002947.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002947.target) + e1:SetOperation(c511002947.operation) + c:RegisterEffect(e1) +end +function c511002947.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:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511002947.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local seq=tc:GetSequence() + if tc:IsControler(1-tp) then seq=seq+16 end + if tc and tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c511002947.rtcon) + e1:SetOperation(c511002947.retop) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE_FIELD) + e2:SetReset(RESET_PHASE+PHASE_DRAW+RESET_OPPO_TURN) + e2:SetLabel(seq) + e2:SetLabelObject(tc) + e2:SetCondition(c511002947.discon) + e2:SetOperation(c511002947.disop) + Duel.RegisterEffect(e2,tp) + end +end +function c511002947.rtcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511002947.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end +function c511002947.discon(e,c) + if e:GetLabelObject():IsLocation(LOCATION_REMOVED) then return true end + return false +end +function c511002947.disop(e,tp) + local dis1=bit.lshift(0x1,e:GetLabel()) + return dis1 +end diff --git a/script/c511002948.lua b/script/c511002948.lua new file mode 100644 index 00000000..40020b56 --- /dev/null +++ b/script/c511002948.lua @@ -0,0 +1,29 @@ +--Triangle Knight +function c511002948.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetDescription(aux.Stringid(511002948,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511002948.condition) + e1:SetTarget(c511002948.target) + e1:SetOperation(c511002948.operation) + c:RegisterEffect(e1) +end +function c511002948.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511002948.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsAbleToDeck() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(Card.IsAbleToDeck,tp,LOCATION_GRAVE,0,3,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c511002948.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c511002949.lua b/script/c511002949.lua new file mode 100644 index 00000000..a7cce28a --- /dev/null +++ b/script/c511002949.lua @@ -0,0 +1,41 @@ +--Trion Barrier +function c511002949.initial_effect(c) + --copy spell + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002949.condition) + e1:SetTarget(c511002949.target) + e1:SetOperation(c511002949.activate) + c:RegisterEffect(e1) +end +function c511002949.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002949.filter(c,e,tp) + return c:IsCode(34796454) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002949.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAttackPos() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingTarget(Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c511002949.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATTACK) + local g=Duel.SelectTarget(tp,Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_HAND) +end +function c511002949.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAttackPos() then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetMatchingGroup(c511002949.filter,tp,LOCATION_HAND,0,nil,e,tp) + if g:GetCount()>=3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,3,3,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002950.lua b/script/c511002950.lua new file mode 100644 index 00000000..ec62bce5 --- /dev/null +++ b/script/c511002950.lua @@ -0,0 +1,35 @@ +--Inland +function c511002950.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002950.condition) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetTarget(c511002950.tg) + e2:SetValue(22702055) + c:RegisterEffect(e2) + --level + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_LEVEL) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,LOCATION_HAND+LOCATION_MZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e3:SetValue(-1) + c:RegisterEffect(e3) +end +function c511002950.condition(e,tp,eg,ep,ev,re,r,rp) + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + return (tc1 and tc1:IsFaceup()) or (tc2 and tc2:IsFaceup()) +end +function c511002950.tg(e,c) + return c:GetSequence()==5 +end diff --git a/script/c511002951.lua b/script/c511002951.lua new file mode 100644 index 00000000..34f9a6e3 --- /dev/null +++ b/script/c511002951.lua @@ -0,0 +1,43 @@ +--Wind Witch - Ice Bell +function c511002951.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(31112776,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511002951.damcon) + e1:SetTarget(c511002951.damtg) + e1:SetOperation(c511002951.damop) + c:RegisterEffect(e1) + if not c511002951.global_check then + c511002951.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511002951) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511002951) + Duel.RegisterEffect(ge2,0) + end +end +function c511002951.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetFlagEffect(c:GetOriginalCode())~=0 +end +function c511002951.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511002951.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002952.lua b/script/c511002952.lua new file mode 100644 index 00000000..61a5239c --- /dev/null +++ b/script/c511002952.lua @@ -0,0 +1,20 @@ +--Wind Witch - Snow Bell +function c511002952.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511002952.spcon) + c:RegisterEffect(e1) +end +function c511002952.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf0) +end +function c511002952.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002952.spfilter,tp,LOCATION_MZONE,0,2,nil) +end diff --git a/script/c511002953.lua b/script/c511002953.lua new file mode 100644 index 00000000..f8c5044f --- /dev/null +++ b/script/c511002953.lua @@ -0,0 +1,46 @@ +--Wind Witch - Winter Bell +function c511002953.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0xf0),aux.NonTuner(Card.IsSetCard,0xf0),1) + c:EnableReviveLimit() + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30312361,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511002953.target) + e1:SetOperation(c511002953.operation) + c:RegisterEffect(e1) + if not c511002953.global_check then + c511002953.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511002953) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511002953) + Duel.RegisterEffect(ge2,0) + end +end +function c511002953.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0xf0) and c:IsLevelBelow(4) +end +function c511002953.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002953.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002953.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511002953.filter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c511002953.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) then + c:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end +end diff --git a/script/c511002954.lua b/script/c511002954.lua new file mode 100644 index 00000000..4b4a30ba --- /dev/null +++ b/script/c511002954.lua @@ -0,0 +1,82 @@ +--Wind Witch - Crystal Bell +function c511002954.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,14577226,aux.FilterBoolFunction(Card.IsFusionSetCard,0xf0),1,true,true) + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30312361,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c511002954.target) + e1:SetOperation(c511002954.operation) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81587028,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c511002954.spcon) + e2:SetTarget(c511002954.sptg) + e2:SetOperation(c511002954.spop) + c:RegisterEffect(e2) + if not c511002954.global_check then + c511002954.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511002954) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511002954) + Duel.RegisterEffect(ge2,0) + end +end +c511002954.miracle_synchro_fusion=true +function c511002954.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsType(TYPE_MONSTER) end + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,TYPE_MONSTER) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,TYPE_MONSTER) +end +function c511002954.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) then + c:ReplaceEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + end +end +function c511002954.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511002954.spfilter(c,e,tp) + return c:IsCode(14577226) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c511002954.spfilter2,tp,LOCATION_GRAVE,0,1,c,e,tp) +end +function c511002954.spfilter2(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002954.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511002954.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c511002954.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c511002954.spfilter2,tp,LOCATION_GRAVE,0,1,1,g1:GetFirst(),e,tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,g1:GetCount(),0,0) +end +function c511002954.spop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=tg:GetCount() then + Duel.SpecialSummon(tg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002955.lua b/script/c511002955.lua new file mode 100644 index 00000000..575a5e2a --- /dev/null +++ b/script/c511002955.lua @@ -0,0 +1,43 @@ +--Wind-Calling Bell Chime +function c511002955.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002955.cost) + e1:SetTarget(c511002955.target) + e1:SetOperation(c511002955.activate) + c:RegisterEffect(e1) +end +function c511002955.cfilter(c,e,tp) + return c:IsSetCard(0xf0) and c:IsLevelBelow(4) and c:IsType(TYPE_MONSTER) and not c:IsPublic() + and Duel.IsExistingMatchingCard(c511002955.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) +end +function c511002955.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002955.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002955.cfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + e:SetLabel(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511002955.cfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.ConfirmCards(1-tp,g) + e:SetLabel(g:GetFirst():GetCode()) + Duel.ShuffleHand(tp) +end +function c511002955.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + local code=e:GetLabel() + Duel.SetTargetParam(code) + e:SetLabel(0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) +end +function c511002955.activate(e,tp,eg,ep,ev,re,r,rp) + local code=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002955.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,code) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002956.lua b/script/c511002956.lua new file mode 100644 index 00000000..993124ac --- /dev/null +++ b/script/c511002956.lua @@ -0,0 +1,47 @@ +--Call of the Wind Witch +function c511002956.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002956.condition) + e1:SetTarget(c511002956.target) + e1:SetOperation(c511002956.activate) + c:RegisterEffect(e1) +end +function c511002956.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE +end +function c511002956.spfilter(c,e,tp,lv) + return c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002956.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0xf0) + and Duel.IsExistingMatchingCard(c511002956.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,c:GetLevel()) +end +function c511002956.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511002956.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002956.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511002956.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002956.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=Duel.SelectMatchingCard(tp,c511002956.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,tc:GetLevel()):GetFirst() + if sc and Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511002957.lua b/script/c511002957.lua new file mode 100644 index 00000000..fd8707ce --- /dev/null +++ b/script/c511002957.lua @@ -0,0 +1,19 @@ +--超電磁タートル +function c511002957.initial_effect(c) + --end battle phase + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34710660,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511002957.condition) + e1:SetOperation(c511002957.operation) + c:RegisterEffect(e1) +end +function c511002957.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE and not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetTurnCount()==e:GetHandler():GetTurnID() and not e:GetHandler():IsReason(REASON_RETURN) +end +function c511002957.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end diff --git a/script/c511002958.lua b/script/c511002958.lua new file mode 100644 index 00000000..fb2c4456 --- /dev/null +++ b/script/c511002958.lua @@ -0,0 +1,32 @@ +--ペア・サイクロイド +function c511002958.initial_effect(c) + c:EnableReviveLimit() + aux.AddFusionProcCodeRep(c,45945685,2,true,true) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e1) + --damage reduce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCondition(c511002958.rdcon) + e2:SetOperation(c511002958.rdop) + c:RegisterEffect(e2) +end +function c511002958.rdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep~=tp and c==Duel.GetAttacker() and Duel.GetAttackTarget()==nil + and c:GetEffectCount(EFFECT_DIRECT_ATTACK)<2 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c511002958.rdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + c:RegisterEffect(e1) +end diff --git a/script/c511002959.lua b/script/c511002959.lua new file mode 100644 index 00000000..ec071f76 --- /dev/null +++ b/script/c511002959.lua @@ -0,0 +1,86 @@ +--スーパービークロイド-ステルス・ユニオン +function c511002959.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode4(c,61538782,98049038,71218746,984114,true,true) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3897065,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002959.eqtg) + e1:SetOperation(c511002959.eqop) + c:RegisterEffect(e1) + --attack all + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetCondition(c511002959.atcon) + e2:SetValue(1) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) + --atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetOperation(c511002959.atkop) + c:RegisterEffect(e4) +end +function c511002959.eqfilter(c,tp) + return c:IsFaceup() and not c:IsRace(RACE_MACHINE) and (c:IsControler(tp) or c:IsAbleToChangeControler()) +end +function c511002959.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511002959.eqfilter(chkc,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511002959.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler(),tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511002959.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler(),tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511002959.eqlimit(e,c) + return e:GetOwner()==c +end +function c511002959.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsType(TYPE_MONSTER) and not tc:IsRace(RACE_MACHINE) and tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + --equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002959.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(511002959) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c511002959.atcon(e) + return e:GetHandler():IsHasEffect(511002959) +end +function c511002959.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsHasEffect(511002959) and c:GetAttackedCount()>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(c:GetBaseAttack()/2) + c:RegisterEffect(e1) + end +end diff --git a/script/c511002960.lua b/script/c511002960.lua new file mode 100644 index 00000000..f99e3069 --- /dev/null +++ b/script/c511002960.lua @@ -0,0 +1,44 @@ +--聖騎士ジャンヌ +function c511002960.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetCondition(c511002960.condtion) + e1:SetValue(-300) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(18426196,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511002960.thcon) + e2:SetTarget(c511002960.thtg) + e2:SetOperation(c511002960.thop) + c:RegisterEffect(e2) +end +function c511002960.condtion(e) + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) + and Duel.GetAttacker()==e:GetHandler() +end +function c511002960.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) +end +function c511002960.thfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511002960.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002960.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002960.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511002960.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511002960.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c511002961.lua b/script/c511002961.lua new file mode 100644 index 00000000..04b12dfd --- /dev/null +++ b/script/c511002961.lua @@ -0,0 +1,1323 @@ +--Parasite Fusioner +--created by MLD equip effect check fixed by CC +function c511002961.initial_effect(c) + --Fusion monster, name + name + function aux.FConditionFilter21(c,code1,code2,sub) + return c:IsFusionCode(code1,code2) or (sub and c:IsHasEffect(511002961)) + end + + function aux.FConditionCode2(code1,code2,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,gc,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + local b1=0 local b2=0 local bw=0 local bwx=0 + if gc:IsFusionCode(code1) then b1=1 end + if gc:IsFusionCode(code2) then b2=1 end + if sub and gc:IsHasEffect(511002961) then bwx=1 end + if sub and gc:CheckFusionSubstitute(e:GetHandler()) then bw=1 end + if b1+b2+bw==0 then return false end + if chkf~=PLAYER_NONE and not Auxiliary.FConditionCheckF(gc,chkf) then + mg=mg:Filter(Auxiliary.FConditionCheckF,nil,chkf) + end + if b1+b2+bw>1 or bwx==1 then + return mg:IsExists(Auxiliary.FConditionFilter22,1,nil,code1,code2,sub,e:GetHandler()) + elseif b1==1 then + return mg:IsExists(Auxiliary.FConditionFilter12,1,nil,code2,sub,e:GetHandler()) + elseif b2==1 then + return mg:IsExists(Auxiliary.FConditionFilter12,1,nil,code1,sub,e:GetHandler()) + else + return mg:IsExists(Auxiliary.FConditionFilter21,1,nil,code1,code2,sub) + end + end + local b1=0 local b2=0 local bw=0 local bwxct=0 + local ct=0 + local fs=chkf==PLAYER_NONE + local tc=mg:GetFirst() + while tc do + local match=false + if tc:IsFusionCode(code1) then b1=1 match=true end + if tc:IsFusionCode(code2) then b2=1 match=true end + if sub and tc:IsHasEffect(511002961) then bwxct=bwxct+1 match=true end + if sub and not tc:IsHasEffect(511002961) and tc:CheckFusionSubstitute(e:GetHandler()) then bw=1 match=true end + if match then + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + ct=ct+1 + end + tc=mg:GetNext() + end + return ct>1 and b1+b2+bw+bwxct>1 and fs + end + end + function Auxiliary.FOperationCode2(code1,code2,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,gc,e:GetHandler()) + local tc=gc + local g1=nil + if gc then + if chkf~=PLAYER_NONE and not Auxiliary.FConditionCheckF(gc,chkf) then + g=g:Filter(Auxiliary.FConditionCheckF,nil,chkf) + end + else + local sg=g:Filter(Auxiliary.FConditionFilter22,nil,code1,code2,sub,e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + tc=g1:GetFirst() + g:RemoveCard(tc) + end + local b1=0 local b2=0 local bw=0 local bwx=0 + if tc:IsFusionCode(code1) then b1=1 end + if tc:IsFusionCode(code2) then b2=1 end + if sub and tc:IsHasEffect(511002961) then bwx=1 end + if sub and not tc:IsHasEffect(511002961) and tc:CheckFusionSubstitute(e:GetHandler()) then bw=1 end + local g2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if b1+b2+bw>1 or bwx==1 then + g2=g:FilterSelect(tp,Auxiliary.FConditionFilter22,1,1,nil,code1,code2,sub,e:GetHandler()) + elseif b1==1 then + g2=g:FilterSelect(tp,Auxiliary.FConditionFilter12,1,1,nil,code2,sub,e:GetHandler()) + elseif b2==1 then + g2=g:FilterSelect(tp,Auxiliary.FConditionFilter12,1,1,nil,code1,sub,e:GetHandler()) + else + g2=g:FilterSelect(tp,Auxiliary.FConditionFilter21,1,1,nil,code1,code2,sub) + end + if g1 then g2:Merge(g1) end + Duel.SetFusionMaterial(g2) + end + end + + --Fusion monster, name + name + name + function Auxiliary.FConditionFilter31(c,code1,code2,code3,sub) + return c:IsFusionCode(code1,code2,code3) or (sub and c:IsHasEffect(511002961)) + end + + function Auxiliary.FConditionCode3(code1,code2,code3,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + local b1=0 local b2=0 local b3=0 local bw=0 local bwxct=0 local bwg=Group.CreateGroup() + local tc=mg:GetFirst() + while tc do + if sub and tc:IsHasEffect(511002961) then + bwxct=bwxct+1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if bwg:IsExists(c511002961.FConditionFilterCodeAndSub,1,nil,tc:GetCode(),e:GetHandler()) then + if tc:IsFusionCode(code1) then b1=1 elseif tc:IsFusionCode(code2) then b2=1 + elseif tc:IsFusionCode(code3) then b3=1 + end + bw=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + bwg:Remove(c511002961.FConditionFilterCodeAndSub,nil,tc:GetCode(),e:GetHandler()) + else + if sub and tc:CheckFusionSubstitute(e:GetHandler()) then + if tc:IsFusionCode(code1,code2,code3) then bwg:AddCard(tc) + else bw=1 end + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if tc:IsFusionCode(code1) then b1=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code2) then b2=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code3) then b3=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + end + end + tc=mg:GetNext() + end + local chc=bwg:GetFirst() + while chc do + if tc:IsFusionCode(code1) and b1==0 then b1=1 + elseif tc:IsFusionCode(code2) and b2==0 then b2=1 + elseif tc:IsFusionCode(code3) and b3==0 then b3=1 + else bw=1 end + chc=bwg:GetNext() + end + if sub and gc:IsHasEffect(511002961) then + return b1+b2+b3+bw+bwxct>1 + elseif sub and gc:CheckFusionSubstitute(e:GetHandler()) then + return b1+b2+b3+bwxct>1 + else + if gc:IsFusionCode(code1) and b1==0 then b1=1 + elseif gc:IsFusionCode(code2) and b2==0 then b2=1 + elseif gc:IsFusionCode(code3) and b3==0 then b3=1 + else return false + end + return b1+b2+b3+bw+bwxct>2 + end + end + local b1=0 local b2=0 local b3=0 local bs=0 local bwxct=0 local bwg=Group.CreateGroup() + local fs=false + local tc=mg:GetFirst() + while tc do + if sub and tc:IsHasEffect(511002961) then + bwxct=bwxct+1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if bwg:IsExists(c511002961.FConditionFilterCodeAndSub,1,nil,tc:GetCode(),e:GetHandler()) then + if tc:IsFusionCode(code1) then b1=1 elseif tc:IsFusionCode(code2) then b2=1 + elseif tc:IsFusionCode(code3) then b3=1 + end + bs=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + bwg:Remove(c511002961.FConditionFilterCodeAndSub,nil,tc:GetCode(),e:GetHandler()) + else + if sub and tc:CheckFusionSubstitute(e:GetHandler()) then + if tc:IsFusionCode(code1,code2,code3) then bwg:AddCard(tc) + else bs=1 end + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if tc:IsFusionCode(code1) then b1=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code2) then b2=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code3) then b3=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + end + end + tc=mg:GetNext() + end + local chc=bwg:GetFirst() + while chc do + if tc:IsFusionCode(code1) and b1==0 then b1=1 + elseif tc:IsFusionCode(code2) and b2==0 then b2=1 + elseif tc:IsFusionCode(code3) and b3==0 then b3=1 + else bs=1 end + chc=bwg:GetNext() + end + return b1+b2+b3+bs+bwxct>=3 and (fs or chkf==PLAYER_NONE) + end + end + function Auxiliary.FOperationCode3(code1,code2,code3,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local fusubsel=false + local sg=g:Filter(Auxiliary.FConditionFilter32,gc,code1,code2,code3,sub,e:GetHandler()) + if gc:IsHasEffect(511002961) then + sg:RemoveCard(gc) + elseif gc:CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3) + sg:RemoveCard(gc) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,gc:GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,gc:GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + if g1:GetFirst():IsHasEffect(511002961) then + sg:Sub(g1) + elseif g1:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3) + sg:Sub(g1) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) + return + end + local fusubsel=false + local sg=g:Filter(Auxiliary.FConditionFilter32,nil,code1,code2,code3,sub,e:GetHandler()) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + if g1:GetFirst():IsHasEffect(511002961) then + sg:Sub(g1) + elseif g1:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3) + sg:Sub(g1) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + if g2:GetFirst():IsHasEffect(511002961) then + sg:Sub(g2) + elseif g2:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3) + sg:Sub(g2) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g2:GetFirst():GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,g2:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g3=sg:Select(tp,1,1,nil) + g1:Merge(g2) + g1:Merge(g3) + Duel.SetFusionMaterial(g1) + end + end + + --Fusion monster, name + name + name + name + function Auxiliary.FConditionFilter41(c,code1,code2,code3,code4,sub) + return c:IsFusionCode(code1,code2,code3,code4) or (sub and c:IsHasEffect(511002961)) + end + + function Auxiliary.FConditionCode4(code1,code2,code3,code4,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + local b1=0 local b2=0 local b3=0 local b4=0 local bw=0 local bwxct=0 local bwg=Group.CreateGroup() + local tc=mg:GetFirst() + while tc do + if sub and tc:IsHasEffect(511002961) then + bwxct=bwxct+1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if bwg:IsExists(c511002961.FConditionFilterCodeAndSub,1,nil,tc:GetCode(),e:GetHandler()) then + if tc:IsFusionCode(code1) then b1=1 elseif tc:IsFusionCode(code2) then b2=1 + elseif tc:IsFusionCode(code3) then b3=1 elseif tc:IsFusionCode(code4) then b4=1 + end + bw=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + bwg:Remove(c511002961.FConditionFilterCodeAndSub,nil,tc:GetCode(),e:GetHandler()) + else + if sub and tc:CheckFusionSubstitute(e:GetHandler()) then + if tc:IsFusionCode(code1,code2,code3,code4) then bwg:AddCard(tc) + else bw=1 end + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if tc:IsFusionCode(code1) then b1=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code2) then b2=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code3) then b3=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code4) then b4=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + end + end + tc=mg:GetNext() + end + local chc=bwg:GetFirst() + while chc do + if tc:IsFusionCode(code1) and b1==0 then b1=1 + elseif tc:IsFusionCode(code2) and b2==0 then b2=1 + elseif tc:IsFusionCode(code3) and b3==0 then b3=1 + elseif tc:IsFusionCode(code4) and b4==0 then b4=1 + else bs=1 end + chc=bwg:GetNext() + end + if sub and gc:IsHasEffect(511002961) then + return b1+b2+b3+b4+bw+bwxct>2 + elseif sub and gc:CheckFusionSubstitute(e:GetHandler()) then + return b1+b2+b3+b4+bwxct>2 + else + if gc:IsFusionCode(code1) and b1==0 then b1=1 + elseif gc:IsFusionCode(code2) and b2==0 then b2=1 + elseif gc:IsFusionCode(code3) and b3==0 then b3=1 + elseif gc:IsFusionCode(code4) and b4==0 then b4=1 + else return false + end + return b1+b2+b3+b4+bw+bwxct>3 + end + end + local b1=0 local b2=0 local b3=0 local b4=0 local bs=0 local bwxct=0 local bwg=Group.CreateGroup() + local fs=false + local tc=mg:GetFirst() + while tc do + if sub and tc:IsHasEffect(511002961) then + bwxct=bwxct+1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if bwg:IsExists(c511002961.FConditionFilterCodeAndSub,1,nil,tc:GetCode(),e:GetHandler()) then + if tc:IsFusionCode(code1) then b1=1 elseif tc:IsFusionCode(code2) then b2=1 + elseif tc:IsFusionCode(code3) then b3=1 elseif tc:IsFusionCode(code4) then b4=1 + end + bs=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + bwg:Remove(c511002961.FConditionFilterCodeAndSub,nil,tc:GetCode(),e:GetHandler()) + else + if sub and tc:CheckFusionSubstitute(e:GetHandler()) then + if tc:IsFusionCode(code1,code2,code3,code4) then bwg:AddCard(tc) + else bs=1 end + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if tc:IsFusionCode(code1) then b1=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code2) then b2=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code3) then b3=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code4) then b4=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + end + end + tc=mg:GetNext() + end + local chc=bwg:GetFirst() + while chc do + if tc:IsFusionCode(code1) and b1==0 then b1=1 + elseif tc:IsFusionCode(code2) and b2==0 then b2=1 + elseif tc:IsFusionCode(code3) and b3==0 then b3=1 + elseif tc:IsFusionCode(code4) and b4==0 then b4=1 + else bs=1 end + chc=bwg:GetNext() + end + return b1+b2+b3+b4+bs+bwxct>=4 and (fs or chkf==PLAYER_NONE) + end + end + function Auxiliary.FOperationCode4(code1,code2,code3,code4,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local fusubsel=false + local sg=g:Filter(Auxiliary.FConditionFilter42,gc,code1,code2,code3,code4,sub,e:GetHandler()) + if gc:IsHasEffect(511002961) then + sg:RemoveCard(gc) + elseif gc:CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:RemoveCard(gc) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,gc:GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,gc:GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + if g1:GetFirst():IsHasEffect(511002961) then + sg:Sub(g1) + elseif g1:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g1) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + if g2:GetFirst():IsHasEffect(511002961) then + sg:Sub(g2) + elseif g2:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g2) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g3=sg:Select(tp,1,1,nil) + g1:Merge(g2) + g1:Merge(g3) + Duel.SetFusionMaterial(g1) + return + end + local fusubsel=false + local sg=g:Filter(Auxiliary.FConditionFilter42,nil,code1,code2,code3,code4,sub,e:GetHandler()) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + if g1:GetFirst():IsHasEffect(511002961) then + sg:Sub(g1) + elseif g1:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g1) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + if g2:GetFirst():IsHasEffect(511002961) then + sg:Sub(g2) + elseif g2:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g2) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g2:GetFirst():GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,g2:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g3=sg:Select(tp,1,1,nil) + if g3:GetFirst():IsHasEffect(511002961) then + sg:Sub(g3) + elseif g3:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002961.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g3) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g3:GetFirst():GetCode()) + else sg:Remove(c511002961.FConditionFilterCodeNotSub,nil,g3:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g4=sg:Select(tp,1,1,nil) + g1:Merge(g2) + g1:Merge(g3) + g1:Merge(g4) + Duel.SetFusionMaterial(g1) + end + end + + --Fusion monster, name + condition + function Auxiliary.FConditionCodeFun(code,f,cc,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + if (gc:IsFusionCode(code) or (sub and gc:CheckFusionSubstitute(e:GetHandler()))) + and mg:IsExists(c511002961.FConditionFilterConAndSub,cc,gc,f,sub) then + return true + elseif f(gc) or (sub and gc:IsHasEffect(511002961)) then + local g1=Group.CreateGroup() local g2=Group.CreateGroup() + local tc=mg:GetFirst() + while tc do + if tc:IsFusionCode(code) or (sub and tc:CheckFusionSubstitute(e:GetHandler())) + then g1:AddCard(tc) end + if f(tc) or (sub and tc:IsHasEffect(511002961)) then g2:AddCard(tc) end + tc=mg:GetNext() + end + if cc>1 then + g2:RemoveCard(gc) + return g1:IsExists(Auxiliary.FConditionFilterCF,1,gc,g2,cc-1) + else + g1:RemoveCard(gc) + return g1:GetCount()>0 + end + else return false end + end + local b1=0 local b2=0 local bw=0 + local fs=false + local tc=mg:GetFirst() + while tc do + local c1=tc:IsFusionCode(code) or (sub and tc:CheckFusionSubstitute(e:GetHandler())) + local c2=f(tc) or (sub and tc:IsHasEffect(511002961)) + if c1 or c2 then + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + if c1 and c2 then bw=bw+1 + elseif c1 then b1=1 + else b2=b2+1 + end + end + tc=mg:GetNext() + end + if b2>cc then b2=cc end + return b1+b2+bw>=1+cc and (fs or chkf==PLAYER_NONE) + end + end + function Auxiliary.FOperationCodeFun(code,f,cc,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if (gc:IsFusionCode(code) or (sub and gc:CheckFusionSubstitute(e:GetHandler()))) + and g:IsExists(c511002961.FConditionFilterConAndSub,cc,gc,f,sub) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(tp,c511002961.FConditionFilterConAndSub,cc,cc,gc,f,sub) + Duel.SetFusionMaterial(g1) + else + local sg1=Group.CreateGroup() local sg2=Group.CreateGroup() + local tc=g:GetFirst() + while tc do + if tc:IsFusionCode(code) or (sub and tc:CheckFusionSubstitute(e:GetHandler())) then sg1:AddCard(tc) end + if f(tc) or (sub and tc:IsHasEffect(511002961)) then sg2:AddCard(tc) end + tc=g:GetNext() + end + if cc>1 then + sg2:RemoveCard(gc) + if sg2:GetCount()==cc-1 then + sg1:Sub(sg2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg1:Select(tp,1,1,gc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:Select(tp,cc-1,cc-1,g1:GetFirst()) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg1:Select(tp,1,1,gc) + Duel.SetFusionMaterial(g1) + end + end + return + end + local sg1=Group.CreateGroup() local sg2=Group.CreateGroup() local fs=false + local tc=g:GetFirst() + while tc do + if tc:IsFusionCode(code) or (sub and tc:CheckFusionSubstitute(e:GetHandler())) then sg1:AddCard(tc) end + if f(tc) or (sub and tc:IsHasEffect(511002961)) then sg2:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + tc=g:GetNext() + end + if chkf~=PLAYER_NONE then + if sg2:GetCount()==cc then + sg1:Sub(sg2) + end + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if fs then g1=sg1:Select(tp,1,1,nil) + else g1=sg1:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) end + local tc1=g1:GetFirst() + sg2:RemoveCard(tc1) + if Auxiliary.FConditionCheckF(tc1,chkf) or sg2:GetCount()==cc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:Select(tp,cc,cc,tc1) + g1:Merge(g2) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,tc1,chkf) + g1:Merge(g2) + if cc>1 then + sg2:RemoveCard(g2:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + g2=sg2:Select(tp,cc-1,cc-1,tc1) + g1:Merge(g2) + end + end + Duel.SetFusionMaterial(g1) + else + if sg2:GetCount()==cc then + sg1:Sub(sg2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + g1:Merge(sg2:Select(tp,cc,cc,g1:GetFirst())) + Duel.SetFusionMaterial(g1) + end + end + end + + --Fusion monster, condition + condition + function Auxiliary.FConditionFilterF2c(c,f1,f2) + return f1(c) or f2(c) or c:IsHasEffect(511002961) + end + function Auxiliary.FConditionFilterF2r(c,f1,f2) + return f1(c) and not f2(c) and not c:IsHasEffect(511002961) + end + + function Auxiliary.FConditionFun2(f1,f2,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return ((f1(gc) or gc:IsHasEffect(511002961)) and mg:IsExists(c511002961.FConditionFilterConAndSub,1,gc,f2,true)) + or ((f2(gc) or gc:IsHasEffect(511002961)) and mg:IsExists(c511002961.FConditionFilterConAndSub,1,gc,f1,true)) end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=mg:GetFirst() + while tc do + if f1(tc) or tc:IsHasEffect(511002961) then g1:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + if f2(tc) or tc:IsHasEffect(511002961) then g2:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + tc=mg:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) + else return g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) end + end + end + function Auxiliary.FOperationFun2(f1,f2,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local sg=Group.CreateGroup() + if f1(gc) or gc:IsHasEffect(511002961) then sg:Merge(g:Filter(c511002961.FConditionFilterConAndSub,gc,f2,true)) end + if f2(gc) or gc:IsHasEffect(511002961) then sg:Merge(g:Filter(c511002961.FConditionFilterConAndSub,gc,f1,true)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local sg=g:Filter(Auxiliary.FConditionFilterF2c,nil,f1,f2) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then + g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + local tc1=g1:GetFirst() + sg:RemoveCard(tc1) + local b1=f1(tc1) or tc1:IsHasEffect(511002961) + local b2=f2(tc1) or tc1:IsHasEffect(511002961) + if b1 and not b2 then sg:Remove(Auxiliary.FConditionFilterF2r,nil,f1,f2) end + if b2 and not b1 then sg:Remove(Auxiliary.FConditionFilterF2r,nil,f2,f1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) + end + end + --Fusion monster, name * n + function Auxiliary.FConditionCodeRep(code,cc,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + local bwxct=mg:FilterCount(c511002961.FConditionFilterx3,gc,e:GetHandler(),sub) + local bw=0 + local ct=mg:FilterCount(c511002961.FConditionFilterCodeNotSub,gc,code,e:GetHandler()) + if mg:IsExists(c511002961.FConditionFilterx2,1,gc,e:GetHandler(),sub) then bw=1 end + if gc:IsFusionCode(code) or (sub and gc:IsHasEffect(511002961)) then return bwxct+bw+ct>=cc-1 + elseif sub and gc:CheckFusionSubstitute(e:GetHandler()) then return bwxct+ct>=cc-1 + else return false end + end + local g1=mg:Filter(Card.IsFusionCode,nil,code) + if not sub then + if chkf~=PLAYER_NONE then return g1:GetCount()>=cc and g1:FilterCount(Card.IsOnField,nil)~=0 + else return g1:GetCount()>=cc end + end + g1=g1:Filter(c511002961.FConditionFilterCodeNotSub,nil,code,e:GetHandler()) + local g2=mg:Filter(c511002961.FConditionFilterx2,nil,e:GetHandler(),sub) + local g3=mg:Filter(c511002961.FConditionFilterx3,nil,e:GetHandler(),sub) + g1:Merge(g3) + if chkf~=PLAYER_NONE then + return (g1:FilterCount(Card.IsOnField,nil)~=0 or g2:FilterCount(Card.IsOnField,nil)~=0) + and g1:GetCount()>=cc-1 and g1:GetCount()+g2:GetCount()>=cc + else return g1:GetCount()>=cc-1 and g1:GetCount()+g2:GetCount()>=cc end + end + end + function Auxiliary.FOperationCodeRep(code,cc,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local g1=g:Filter(c511002961.FConditionFilterCodeNotSub,gc,code,e:GetHandler()) + local g3=g:Filter(c511002961.FConditionFilterx3,gc,e:GetHandler(),sub) + g1:Merge(g3) + if sub and gc:CheckFusionSubstitute(e:GetHandler()) and not gc:IsHasEffect(511002961) then + if cc-1>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local mat=g1:Select(tp,cc-1,cc-1,nil) + Duel.SetFusionMaterial(mat) + end + else + if cc-1>0 then + local sg=g:Filter(Auxiliary.FConditionFilterCR,nil,code,sub,e:GetHandler()) + local mat=Group.CreateGroup() + local tc1 + for i=1,cc-1 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local mat2=sg:Select(tp,1,1,nil) + tc1=mat2:GetFirst() + mat:Merge(mat2) + if tc1:CheckFusionSubstitute(e:GetHandler()) and not tc1:IsHasEffect(511002961) then + sg:Remove(c511002961.FConditionFilterx2,nil,e:GetHandler(),sub) + else sg:RemoveCard(tc1) end + end + Duel.SetFusionMaterial(mat) + end + end + return + end + local sg=g:Filter(Auxiliary.FConditionFilterCR,nil,code,sub,e:GetHandler()) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + local tc1=g1:GetFirst() + for i=1,cc-1 do + if tc1:CheckFusionSubstitute(e:GetHandler()) and not tc1:IsHasEffect(511002961) then + sg:Remove(c511002961.FConditionFilterx2,nil,e:GetHandler(),sub) + else sg:RemoveCard(tc1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + tc1=g2:GetFirst() + g1:Merge(g2) + end + Duel.SetFusionMaterial(g1) + end + end + + --Fusion monster, condition * n + function Auxiliary.FConditionFunRep(f,cc,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return (f(gc) or gc:IsHasEffect(511002961)) and mg:IsExists(c511002961.FConditionFilterConAndSub,cc-1,gc,f,true) end + local g1=mg:Filter(c511002961.FConditionFilterConAndSub,nil,f,true) + if chkf~=PLAYER_NONE then + return g1:FilterCount(Card.IsOnField,nil)~=0 and g1:GetCount()>=cc + else return g1:GetCount()>=cc end + end + end + function Auxiliary.FOperationFunRep(f,cc,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(tp,c511002961.FConditionFilterConAndSub,cc-1,cc-1,gc,f,true) + Duel.SetFusionMaterial(g1) + return + end + local sg=g:Filter(c511002961.FConditionFilterConAndSub,nil,f,true) + if chkf==PLAYER_NONE or sg:GetCount()==cc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,cc,cc,nil) + Duel.SetFusionMaterial(g1) + return + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + if cc>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,cc-1,cc-1,g1:GetFirst()) + g1:Merge(g2) + end + Duel.SetFusionMaterial(g1) + end + end + + --Fusion monster, condition1 + condition2 * minc to maxc + --Fusion monster, name + condition * minc to maxc + function Auxiliary.FConditionFilterFFR(c,f1,f2,mg,minc,chkf) + if not f1(c) and not c:IsHasEffect(511002961) then return false end + if chkf==PLAYER_NONE or aux.FConditionCheckF(c,chkf) then + return minc<=0 or mg:IsExists(c511002961.FConditionFilterConAndSub,minc,c,f2,true) + else + local mg2=mg:Filter(c511002961.FConditionFilterConAndSub,c,f2,true) + return mg2:GetCount()>=minc and mg2:IsExists(aux.FConditionCheckF,1,nil,chkf) + end + end + + function Auxiliary.FConditionFunFunRep(f1,f2,minc,maxc,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + if aux.FConditionFilterFFR(gc,f1,f2,mg,minc,chkf) then + return true + elseif f2(gc) or gc:IsHasEffect(511002961) then + mg:RemoveCard(gc) + if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end + return mg:IsExists(aux.FConditionFilterFFR,1,nil,f1,f2,mg,minc-1,chkf) + else return false end + end + return mg:IsExists(aux.FConditionFilterFFR,1,nil,f1,f2,mg,minc,chkf) + end + end + function Auxiliary.FOperationFunFunRep(f1,f2,minc,maxc,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local minct=minc + local maxct=maxc + if gc then + g:RemoveCard(gc) + if aux.FConditionFilterFFR(gc,f1,f2,g,minct,chkf) then + if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end + local g1=Group.CreateGroup() + if f2(gc) or gc:IsHasEffect(511002961) then + local mg1=g:Filter(aux.FConditionFilterFFR,nil,f1,f2,g,minct-1,chkf) + if mg1:GetCount()>0 then + --if gc fits both, should allow an extra material that fits f1 but doesn't fit f2 + local mg2=g:Filter(c511002961.FConditionFilterConAndSub,nil,f2,true) + mg1:Merge(mg2) + if chkf~=PLAYER_NONE then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) + g1:Merge(sg) + mg1:Sub(sg) + minct=minct-1 + maxct=maxct-1 + if not f2(sg:GetFirst()) and not sg:GetFirst():IsHasEffect(511002961) then + if mg1:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then + if minct<=0 then minct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:FilterSelect(tp,c511002961.FConditionFilterConAndSub,minct,maxct,nil,f2,true) + g1:Merge(sg) + end + Duel.SetFusionMaterial(g1) + return + end + end + if maxct>1 and (minct>1 or Duel.SelectYesNo(tp,93)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:FilterSelect(tp,c511002961.FConditionFilterConAndSub,minct-1,maxct-1,nil,f2,true) + g1:Merge(sg) + mg1:Sub(sg) + local ct=sg:GetCount() + minct=minct-ct + maxct=maxct-ct + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:Select(tp,1,1,nil) + g1:Merge(sg) + mg1:Sub(sg) + minct=minct-1 + maxct=maxct-1 + if mg1:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then + if minct<=0 then minct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:FilterSelect(tp,c511002961.FConditionFilterConAndSub,minct,maxct,nil,f2,true) + g1:Merge(sg) + end + Duel.SetFusionMaterial(g1) + return + end + end + local mg=g:Filter(c511002961.FConditionFilterConAndSub,nil,f2,true) + if chkf~=PLAYER_NONE then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) + g1:Merge(sg) + mg:Sub(sg) + minct=minct-1 + maxct=maxct-1 + end + if mg:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then + if minct<=0 then minct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:Select(tp,minct,maxct,nil) + g1:Merge(sg) + end + Duel.SetFusionMaterial(g1) + return + else + if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end + minct=minct-1 + maxct=maxct-1 + end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(tp,aux.FConditionFilterFFR,1,1,nil,f1,f2,g,minct,chkf) + local mg=g:Filter(c511002961.FConditionFilterConAndSub,g1:GetFirst(),f2,true) + if chkf~=PLAYER_NONE and not aux.FConditionCheckF(g1:GetFirst(),chkf) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) + g1:Merge(sg) + mg:Sub(sg) + minct=minct-1 + maxct=maxct-1 + end + if mg:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then + if minct<=0 then minct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:Select(tp,minct,maxct,nil) + g1:Merge(sg) + end + Duel.SetFusionMaterial(g1) + end + end + + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_EQUIP+CATEGORY_FUSION_SUMMON) + e1:SetTarget(c511002961.sptg) + e1:SetOperation(c511002961.spop) + c:RegisterEffect(e1) + --fusion substitute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_FUSION_SUBSTITUTE) + e2:SetCondition(c511002961.subcon) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(511002961) + e3:SetRange(LOCATION_MZONE) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_ADD_FUSION_SETCODE) + e4:SetValue(0x9d) + e4:SetRange(LOCATION_MZONE) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(4904633) + e5:SetRange(LOCATION_MZONE) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetCode(EFFECT_ADD_FUSION_SETCODE) + e6:SetValue(0xe1) + e6:SetRange(LOCATION_MZONE) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e7:SetCode(EFFECT_ADD_FUSION_SETCODE) + e7:SetValue(0x9) + e7:SetRange(LOCATION_MZONE) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e8:SetCode(EFFECT_ADD_FUSION_SETCODE) + e8:SetValue(0x1f) + e8:SetRange(LOCATION_MZONE) + c:RegisterEffect(e8) + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e9:SetCode(EFFECT_ADD_FUSION_SETCODE) + e9:SetValue(0x8) + e9:SetRange(LOCATION_MZONE) + c:RegisterEffect(e9) + --destroy sub + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_EQUIP) + e10:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e10:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e10:SetValue(1) + c:RegisterEffect(e10) + if not c511002961.global_check then + c511002961.global_check=true + --FUSIONZ!!! + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(c511002961.op) + Duel.RegisterEffect(ge1,0) + end +end +function c511002961.FConditionFilterx(c,fc,code1,code2,code3,code4) + return c:CheckFusionSubstitute(fc) and not c:IsHasEffect(511002961) and not c:IsFusionCode(code1,code2,code3,code4) +end +function c511002961.FConditionFilterx2(c,fc,sub) + return sub and c:CheckFusionSubstitute(fc) and not c:IsHasEffect(511002961) +end +function c511002961.FConditionFilterx3(c,fc,sub) + return sub and c:CheckFusionSubstitute(fc) and c:IsHasEffect(511002961) +end +function c511002961.FConditionFilterCodeAndSub(c,code,fc) + return c:IsFusionCode(code) and c:CheckFusionSubstitute(fc) +end +function c511002961.FConditionFilterCodeOrSub2(c,code1,code2) + return c:IsFusionCode(code1,code2) or c:IsHasEffect(511002961) +end +function c511002961.FConditionFilterCodeNotSub(c,code,fc) + return c:IsFusionCode(code) and not c:CheckFusionSubstitute(fc) +end +function c511002961.FConditionFilterConAndSub(c,f,sub) + return f(c) or (sub and c:IsHasEffect(511002961)) +end +function c511002961.op(e,tp,eg,ep,ev,re,r,rp) + --Non-Utility Fusions + local mt + if c77693536 then --フルメタルフォーゼ・アルカエスト (Fullmetalfoes Alkahest) + mt=c77693536 + mt.filter2=function(c) return c:IsType(TYPE_NORMAL) or c:IsHasEffect(511002961) end + end + if c54401832 then --メタルフォーゼ・カーディナル (Metalfoes Crimsonite) + mt=c54401832 + mt.filter2=function(c) return c:IsAttackBelow(3000) or c:IsHasEffect(511002961) end + end + if c4688231 then --メタルフォーゼ・ミスリエル (Metalfoes Mythriel) + mt=c4688231 + mt.filter2=function(c) return c:IsType(TYPE_PENDULUM) or c:IsHasEffect(511002961) end + end + if c81612598 then --メタルフォーゼ・アダマンテ (Metalfoes Adamante) + mt=c81612598 + mt.filter2=function(c) return c:IsAttackBelow(2500) or c:IsHasEffect(511002961) end + end + if c74506079 then --ワーム・ゼロ (Worm Zero) + mt=c74506079 + mt.ffilter=function(c) return (c:IsFusionSetCard(0x3e) and c:IsRace(RACE_REPTILE)) or c:IsHasEffect(511002961) end + end + if c82734805 then --インフェルノイド・ティエラ (Infernoid Tierra) + mt=c82734805 + mt.fcfilter1=function(c,code1,code2,g) return (c:IsFusionCode(code1,code2) or c:IsHasEffect(511002961)) + and g:IsExists(c511002961.tierrafilter2,1,c) end + mt.fcfilter2=function(c,code,g,fc) return (c:IsFusionCode(code) or c:CheckFusionSubstitute(fc)) and g:IsExists(c511002961.tierrafilter2,1,c) end + mt.fcfilter3=function(c,g,fc) + if c:IsHasEffect(511002961) then + return g:IsExists(c82734805.fcfilter1,1,c,14799437,23440231,g) + elseif c:CheckFusionSubstitute(fc) then + return g:IsExists(c511002961.FConditionFilterCodeOrSub2,1,c,14799437,23440231) + end + if c:IsFusionCode(14799437) and g:IsExists(c82734805.fcfilter2,1,c,23440231,g,fc) then return true end + if c:IsFusionCode(23440231) and g:IsExists(c82734805.fcfilter2,1,c,14799437,g,fc) then return true end + return false + end + mt.fscon=function(e,g,gc,chkf) + if g==nil then return true end + if gc then + local mg=g:Clone() + mg:RemoveCard(gc) + if gc:IsHasEffect(511002961) then + return mg:IsExists(c82734805.fcfilter3,1,nil,mg,e:GetHandler()) + or mg:IsExists(c511002961.tierrafilter1,1,nil,14799437,23440231,mg,e:GetHandler()) + elseif gc:CheckFusionSubstitute(e:GetHandler()) then + return mg:IsExists(c82734805.fcfilter1,1,nil,14799437,23440231,mg) + elseif gc:IsFusionCode(14799437) then + return mg:IsExists(c82734805.fcfilter2,1,nil,23440231,mg,e:GetHandler()) + elseif gc:IsFusionCode(23440231) then + return mg:IsExists(c82734805.fcfilter2,1,nil,14799437,mg,e:GetHandler()) + elseif gc:IsFusionSetCard(0xbb) then + return mg:IsExists(c82734805.fcfilter3,1,nil,mg,e:GetHandler()) + else + return false + end + end + local b1=0 local b2=0 local b3=0 local bs=0 local bwxct=0 local bwg=Group.CreateGroup() + local fs=false + local tc=g:GetFirst() + while tc do + if tc:IsHasEffect(511002961) then + bwxct=bwxct+1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if bwg:IsExists(c511002961.FConditionFilterCodeAndSub,1,nil,tc:GetCode(),e:GetHandler()) then + if tc:IsFusionCode(14799437) then + if b1==0 then b1=1 else b3=1 end if aux.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(23440231) then + if b2==0 then b2=1 else b3=1 end if aux.FConditionCheckF(tc,chkf) then fs=true end + end + bs=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + bwg:Remove(c511002961.FConditionFilterCodeAndSub,nil,tc:GetCode(),e:GetHandler()) + else + if tc:CheckFusionSubstitute(e:GetHandler()) then + if tc:IsFusionCode(14799437,23440231) then bwg:AddCard(tc) + else bs=1 end + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if tc:IsFusionCode(14799437) then + if b1==0 then b1=1 else b3=1 end if aux.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(23440231) then + if b2==0 then b2=1 else b3=1 end if aux.FConditionCheckF(tc,chkf) then fs=true end + end + end + end + end + tc=g:GetNext() + end + local chc=bwg:GetFirst() + while chc do + if tc:IsFusionCode(14799437) then + if b1==0 then b1=1 + elseif bs==0 then bs=1 + else b3=1 end + else + if b2==0 then b2=1 + elseif bs==0 then bs=1 + else b3=1 end + end + chc=bwg:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and b1+b2+b3+bs+bwxct>=3 + else + return b1+b2+b3+bs+bwxct>=3 + end + end + mt.fsop=function(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local g1=Group.CreateGroup() + if not gc and chkf~=PLAYER_NONE then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + gc=eg:FilterSelect(tp,c82734805.fcfilter7,1,1,nil,chkf,e:GetHandler()):GetFirst() + g1:AddCard(gc) + end + local mg=eg:Clone() + if gc then mg:RemoveCard(gc) end + local ok=false + if gc then + if gc:IsHasEffect(511002961) and mg:IsExists(c511002961.tierrafilter1,1,nil,14799437,23440231,mg,e:GetHandler()) + and (not mg:IsExists(c82734805.fcfilter3,1,nil,mg,e:GetHandler()) or Duel.SelectYesNo(tp,93)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:FilterSelect(tp,c511002961.tierrafilter1,1,1,nil,14799437,23440231,mg,e:GetHandler()) + g1:Merge(sg) + elseif gc:CheckFusionSubstitute(e:GetHandler()) and not gc:IsHasEffect(511002961) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:FilterSelect(tp,c82734805.fcfilter1,1,1,nil,14799437,23440231,mg) + g1:Merge(sg) + elseif gc:IsFusionCode(14799437) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:FilterSelect(tp,c82734805.fcfilter2,1,1,nil,23440231,mg,e:GetHandler()) + g1:Merge(sg) + elseif gc:IsFusionCode(23440231) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:FilterSelect(tp,c82734805.fcfilter2,1,1,nil,14799437,mg,e:GetHandler()) + g1:Merge(sg) + elseif gc:IsFusionSetCard(0xbb) or gc:IsHasEffect(511002961) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:FilterSelect(tp,c82734805.fcfilter3,1,1,nil,mg,e:GetHandler()) + g1:Merge(sg) + local tc1=sg:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if tc1:IsHasEffect(511002961) then + local sg=mg:FilterSelect(tp,aux.FConditionFilter22,1,1,nil,14799437,23440231,true,e:GetHandler()) + g1:Merge(sg) + elseif tc1:IsFusionCode(14799437) then + local sg=mg:FilterSelect(tp,c82734805.fcfilter4,1,1,nil,23440231,e:GetHandler()) + g1:Merge(sg) + elseif tc1:IsFusionCode(23440231) then + local sg=mg:FilterSelect(tp,c82734805.fcfilter4,1,1,nil,14799437,e:GetHandler()) + g1:Merge(sg) + else + local sg=mg:FilterSelect(tp,aux.FConditionFilter21,1,1,nil,14799437,23440231) + g1:Merge(sg) + end + ok=true + end + else + local mg2=mg:Filter(aux.FConditionFilter22,nil,14799437,23440231,true,e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg1=mg2:Select(tp,1,1,nil) + local tc1=sg1:GetFirst() + if not mg:IsExists(c511002961.tierrafilter2,2,tc1) then + mg2:Remove(c511002961.tierrafilter2,nil) + end + if tc1:CheckFusionSubstitute(e:GetHandler()) and not tc1:IsHasEffect(511002961) then + mg2:Remove(c511002961.FConditionFilterx2,nil,e:GetHandler(),true) + elseif tc1:IsHasEffect(511002961) then + else mg2:Remove(Card.IsFusionCode,nil,tc1:GetCode()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg2=mg2:Select(tp,1,1,tc1) + g1:Merge(sg1) + g1:Merge(sg2) + end + mg:Sub(g1) + mg=mg:Filter(c511002961.tierrafilter2,nil) + if mg:GetCount()==0 or (ok and not Duel.SelectYesNo(tp,93)) then + Duel.SetFusionMaterial(g1) + return + end + ok=false + local dmg=mg:Filter(Card.IsLocation,nil,LOCATION_DECK) + if dmg:GetCount()>0 and e:GetHandler():GetFlagEffect(31444249)~=0 and Duel.SelectYesNo(tp,aux.Stringid(31444249,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=dmg:Select(tp,1,6-g1:FilterCount(Card.IsLocation,nil,LOCATION_DECK),nil) + g1:Merge(sg) + ok=true + end + if e:GetHandler():GetFlagEffect(31444249)~=0 then + mg:Remove(Card.IsLocation,nil,LOCATION_DECK) + end + if mg:GetCount()==0 or (ok and not Duel.SelectYesNo(tp,93)) then + Duel.SetFusionMaterial(g1) + return + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:Select(tp,1,99,nil) + g1:Merge(sg) + Duel.SetFusionMaterial(g1) + return + end + + local sg=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_EXTRA,LOCATION_EXTRA,nil,82734805) + local tcc=sg:GetFirst() + while tcc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_FUSION_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_REPEAT) + if c82734805 then + e1:SetCondition(c82734805.fscon) + e1:SetOperation(c82734805.fsop) + end + tcc:RegisterEffect(e1) + tcc=sg:GetNext() + end + end +end +function c511002961.tierrafilter1(c,code1,code2,g,fc) + return (c:IsFusionCode(code1,code2) or c:CheckFusionSubstitute(fc)) and g:IsExists(c511002961.tierrafilter2,1,c) +end +function c511002961.tierrafilter2(c) + return c:IsFusionSetCard(0xbb) or c:IsHasEffect(511002961) +end + +function c511002961.subcon(e) + return e:GetHandler():IsFaceup() and e:GetHandler():IsOnField() +end +function c511002961.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002961.filter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,gc) +end +function c511002961.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE+LOCATION_HAND,0,c) + local res=Duel.IsExistingMatchingCard(c511002961.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511002961.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511002961.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end + local mg1=Duel.GetMatchingGroup(c511002961.filter1,tp,LOCATION_MZONE+LOCATION_HAND,0,c,e) + local sg1=Duel.GetMatchingGroup(c511002961.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511002961.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.BreakEffect() + if not Duel.Equip(tp,c,tc,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511002961.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + end +end +function c511002961.eqlimit(e,c) + return e:GetLabelObject()==c +end + diff --git a/script/c511002962.lua b/script/c511002962.lua new file mode 100644 index 00000000..86bf9257 --- /dev/null +++ b/script/c511002962.lua @@ -0,0 +1,22 @@ +--Amazoness Empress +function c511002962.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,15951532,aux.FilterBoolFunction(Card.IsFusionSetCard,0x4),1,true,true) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x4)) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + --pierce + local e3=e1:Clone() + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) +end diff --git a/script/c511002963.lua b/script/c511002963.lua new file mode 100644 index 00000000..29f07363 --- /dev/null +++ b/script/c511002963.lua @@ -0,0 +1,65 @@ +--Amazoness Liger +function c511002963.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,10979723,aux.FilterBoolFunction(Card.IsFusionSetCard,0x4),1,true,true) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511002963.atcon) + e1:SetValue(500) + c:RegisterEffect(e1) + --attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetOperation(c511002963.negop) + e2:SetRange(LOCATION_MZONE) + c:RegisterEffect(e2) + --lose atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLED) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCondition(c511002963.atkcon) + e3:SetTarget(c511002963.atktg) + e3:SetOperation(c511002963.atkop) + c:RegisterEffect(e3) +end +function c511002963.atcon(e) + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and e:GetHandler()==Duel.GetAttacker() +end +function c511002963.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()~=e:GetHandler() + and Duel.SelectYesNo(tp,aux.Stringid(8279188,0)) then + Duel.NegateAttack() + end +end +function c511002963.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + return a:IsControler(tp) and d:IsControler(1-tp) and a:IsSetCard(0x4) +end +function c511002963.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511002963.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(-800) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511002964.lua b/script/c511002964.lua new file mode 100644 index 00000000..782dc7ac --- /dev/null +++ b/script/c511002964.lua @@ -0,0 +1,76 @@ +--Amazoness Audience Room +function c511002964.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002964.condition1) + c:RegisterEffect(e1) + --Activate (sp summon) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCondition(c511002964.condition2) + e2:SetTarget(c511002964.target) + c:RegisterEffect(e2) + --trigger + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_RECOVER) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c511002964.sptg) + e3:SetOperation(c511002964.spop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetCondition(c511002964.descon) + c:RegisterEffect(e4) +end +function c511002964.condition1(e,tp,eg,ep,ev,re,r,rp) + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) + return not res or not teg:IsExists(c511002964.tgfilter,1,nil,nil,tp) +end +function c511002964.condition2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511002964.tgfilter,1,nil,nil,tp) +end +function c511002964.tgfilter(c,e,tp) + return c:IsControler(1-tp) and (not e or c:IsRelateToEffect(e)) +end +function c511002964.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c511002964.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetCategory(CATEGORY_RECOVER) + e:SetOperation(c511002964.spop) + c511002964.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c511002964.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511002964.tgfilter,1,nil,nil,tp) end + local g=eg:Filter(c511002964.tgfilter,nil,nil,tp) + Duel.SetTargetCard(eg) + local sum=g:GetSum(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,sum) +end +function c511002964.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(c511002964.tgfilter,nil,e,tp) + local sum=g:GetSum(Card.GetAttack) + Duel.Recover(tp,sum,REASON_EFFECT) +end +function c511002964.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x4) +end +function c511002964.descon(e) + return not Duel.IsExistingMatchingCard(c511002964.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511002965.lua b/script/c511002965.lua new file mode 100644 index 00000000..2487a53e --- /dev/null +++ b/script/c511002965.lua @@ -0,0 +1,33 @@ +--Amazoness Substitution +function c511002965.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511002965.condition) + e1:SetTarget(c511002965.target) + e1:SetOperation(c511002965.activate) + c:RegisterEffect(e1) +end +function c511002965.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsSetCard(0x4) +end +function c511002965.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002965.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002965.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511002965.activate(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 tc=Duel.SelectMatchingCard(tp,c511002965.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511002966.lua b/script/c511002966.lua new file mode 100644 index 00000000..92c0cb60 --- /dev/null +++ b/script/c511002966.lua @@ -0,0 +1,77 @@ +--Amazoness Secret Hot Spring +function c511002966.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --confirm + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetDescription(aux.Stringid(90519313,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511002966.rectg) + e2:SetOperation(c511002966.recop) + c:RegisterEffect(e2) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetCondition(c511002966.descon) + c:RegisterEffect(e4) + if not c511002966.global_check then + c511002966.global_check=true + c511002966[0]={} + c511002966[1]={} + c511002966[2]=0 + c511002966[3]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c511002966.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002966.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002966.checkop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then + c511002966[tp+2]=c511002966[tp+2]+1 + c511002966[tp][c511002966[tp+2]]=ev + end + if ep==1-tp then + c511002966[1-tp+2]=c511002966[1-tp+2]+1 + c511002966[1-tp][c511002966[1-tp+2]]=ev + end +end +function c511002966.clear(e,tp,eg,ep,ev,re,r,rp) + c511002966[0]={} + c511002966[1]={} + c511002966[2]=0 + c511002966[3]=0 +end +function c511002966.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x4) +end +function c511002966.descon(e) + return not Duel.IsExistingMatchingCard(c511002966.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511002966.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return c511002966[2+tp]>0 end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,0) +end +function c511002966.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local t=c511002966[tp] + local lp=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.Recover(tp,lp,REASON_EFFECT) +end diff --git a/script/c511002967.lua b/script/c511002967.lua new file mode 100644 index 00000000..98a61b85 --- /dev/null +++ b/script/c511002967.lua @@ -0,0 +1,49 @@ +--Amazoness Curse Mirror +function c511002967.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_END_PHASE) + e1:SetCondition(c511002967.condition) + c:RegisterEffect(e1) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002967.op) + c:RegisterEffect(e1) + if not c511002967.global_check then + c511002967.global_check=true + c511002967[0]=true + c511002967[1]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c511002967.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511002967.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511002967.checkop(e,tp,eg,ep,ev,re,r,rp) + c511002967[ep]=true +end +function c511002967.clear(e,tp,eg,ep,ev,re,r,rp) + c511002967[0]=false + c511002967[1]=false +end +function c511002967.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END and c511002967[tp] +end +function c511002967.op(e,tp,eg,ep,ev,re,r,rp) + if ep==tp and e:GetHandler():GetFlagEffect(511002967)==0 and Duel.SelectYesNo(tp,aux.Stringid(93816465,1)) then + e:GetHandler():RegisterFlagEffect(511002967,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.ChangeBattleDamage(tp,0) + end +end diff --git a/script/c511002968.lua b/script/c511002968.lua new file mode 100644 index 00000000..1c6a4044 --- /dev/null +++ b/script/c511002968.lua @@ -0,0 +1,51 @@ +--Amazoness Magical Mirror +function c511002968.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Negate Damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002968.con) + e2:SetOperation(c511002968.op) + c:RegisterEffect(e2) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetCondition(c511002968.descon) + c:RegisterEffect(e4) +end +function c511002968.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x4) +end +function c511002968.descon(e) + return not Duel.IsExistingMatchingCard(c511002968.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511002968.con(e,tp,eg,ep,ev,re,r,rp) + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) and rp~=tp +end +function c511002968.op(e,tp,eg,ep,ev,re,r,rp,val,r,rc) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511002968.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511002968.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c511002969.lua b/script/c511002969.lua new file mode 100644 index 00000000..7ac1f3a1 --- /dev/null +++ b/script/c511002969.lua @@ -0,0 +1,52 @@ +--Slow Life +function c511002969.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511002969.condition) + c:RegisterEffect(e1) + --disable summon (player) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c511002969.con1) + e2:SetTargetRange(1,0) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_MSET) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCondition(c511002969.con2) + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e4) + --disable summon (opponent) + local e5=e2:Clone() + e5:SetCondition(c511002969.con3) + e5:SetTargetRange(0,1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_MSET) + c:RegisterEffect(e6) + local e7=e4:Clone() + e7:SetCondition(c511002969.con4) + e7:SetTargetRange(0,1) + c:RegisterEffect(e7) +end +function c511002969.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511002969.con1(e) + return Duel.GetActivityCount(e:GetHandlerPlayer(),ACTIVITY_SPSUMMON)>0 +end +function c511002969.con2(e) + return Duel.GetActivityCount(e:GetHandlerPlayer(),ACTIVITY_NORMALSUMMON)>0 +end +function c511002969.con3(e) + return Duel.GetActivityCount(1-e:GetHandlerPlayer(),ACTIVITY_SPSUMMON)>0 +end +function c511002969.con4(e) + return Duel.GetActivityCount(1-e:GetHandlerPlayer(),ACTIVITY_NORMALSUMMON)>0 +end diff --git a/script/c511002970.lua b/script/c511002970.lua new file mode 100644 index 00000000..16a9c1a6 --- /dev/null +++ b/script/c511002970.lua @@ -0,0 +1,26 @@ +--Fellow's Gift +function c511002970.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002970.target) + e1:SetOperation(c511002970.activate) + c:RegisterEffect(e1) +end +function c511002970.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local tc=g:GetFirst() + if chkc then return chkc:IsControler(tp) and chkc:IsControlerCanBeChanged() and g:IsContains(chkc) and g:GetCount()==1 end + if chk==0 then return g:GetCount()==1 and tc:IsControlerCanBeChanged() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511002970.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,1-tp) + end +end diff --git a/script/c511002973.lua b/script/c511002973.lua new file mode 100644 index 00000000..94ae222f --- /dev/null +++ b/script/c511002973.lua @@ -0,0 +1,197 @@ +--Gladiator Beast Assault Fort +function c511002973.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511002973.condition) + c:RegisterEffect(e1) + --adjust + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002973.descon) + e2:SetOperation(c511002973.desop) + c:RegisterEffect(e2) + --name + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CHANGE_CODE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_SZONE,0) + e3:SetTarget(c511002973.gbtg) + e3:SetValue(511002974) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CHANGE_TYPE) + e4:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) + c:RegisterEffect(e4) + --negate + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_CHAINING) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511002973.discon) + e5:SetOperation(c511002973.disop) + c:RegisterEffect(e5) + --activate + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e6:SetCode(EVENT_DESTROYED) + e6:SetTarget(c511002973.actg) + e6:SetOperation(c511002973.acop) + c:RegisterEffect(e6) + if not c511002973.global_check then + c511002973.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511002973.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002973.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511002973.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return ep==tp and (a:IsSetCard(0x19) or (d and d:IsSetCard(0x19))) +end +function c511002973.cfilter2(c,fid) + return c:IsFaceup() and c:IsCode(511002973) and not c:IsDisabled() and c:GetFieldID()0 then + Duel.Overlay(tc,og) + end + tc:RegisterFlagEffect(511002973,RESET_EVENT+0x11fe0000,0,0) + tc=sg:GetNext() + end +end +function c511002973.gbtg(e,c) + return c:IsSetCard(0x19) and c~=e:GetHandler() and c:GetSequence()<5 +end +function c511002973.cfilter(c) + return c:IsFaceup() and c:IsCode(511002973) and not c:IsDisabled() +end +function c511002973.resetop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not Duel.IsExistingMatchingCard(c511002973.cfilter,tp,LOCATION_SZONE,0,1,nil) then + c:ResetEffect(0x10000000,RESET_EVENT) + if bit.band(c:GetType(),TYPE_CONTINUOUS+TYPE_FIELD)==0 then + Duel.SendtoGrave(c,REASON_RULE) + elseif not c:IsCode(511002974) then + local og=c:GetOverlayGroup() + if og:GetCount()>0 then + Duel.SendtoGrave(og,REASON_RULE) + end + end + end +end +function c511002973.discon(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsControler(tp) and re:GetHandler():IsCode(511002974) +end +function c511002973.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + re:GetHandler():CancelToGrave() +end +function c511002973.acfilter(c,tp) + local te=c:GetActivateEffect() + return c:IsCode(511002975) and te:IsActivatable(tp) +end +function c511002973.actg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_ONFIELD,0,nil) + if chk==0 then return g:GetCount()>0 and (Duel.GetLocationCount(tp,LOCATION_SZONE)>0 or g:FilterCount(Card.IsLocation,nil,LOCATION_SZONE)>0) + and Duel.IsExistingMatchingCard(c511002973.acfilter,tp,0x13,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002973.acop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_ONFIELD,0,nil) + if Duel.Destroy(g,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + local tc=Duel.SelectMatchingCard(tp,c511002973.acfilter,tp,0x13,0,1,1,nil,tp):GetFirst() + if tc then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end +end diff --git a/script/c511002974.lua b/script/c511002974.lua new file mode 100644 index 00000000..f6d4d65d --- /dev/null +++ b/script/c511002974.lua @@ -0,0 +1,198 @@ +--Gladiator Beast Fort +function c511002974.initial_effect(c) + c:RegisterFlagEffect(511002973,0,0,0) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --attach + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(19310321,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511002974.gbcon) + e2:SetTarget(c511002974.gbtg) + e2:SetOperation(c511002974.gbop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(17415895,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511002974.damcost) + e3:SetTarget(c511002974.damtg) + e3:SetOperation(c511002974.damop) + c:RegisterEffect(e3) + --target + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(82962242,0)) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCountLimit(1) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetTarget(c511002974.tgtg) + e4:SetOperation(c511002974.tgop) + c:RegisterEffect(e4) + --battle + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_QUICK_F) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e5:SetCondition(c511002974.btcon) + e5:SetTarget(c511002974.bttg) + e5:SetOperation(c511002974.btop) + c:RegisterEffect(e5) + --effect + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_QUICK_F) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EVENT_BECOME_TARGET) + e6:SetTarget(c511002974.efftg) + e6:SetOperation(c511002974.effop) + c:RegisterEffect(e6) +end +function c511002974.gbcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayCount()==0 +end +function c511002974.gbfilter(c) + return c:IsSetCard(0x19) and c:IsType(TYPE_MONSTER) +end +function c511002974.gbtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002974.gbfilter,tp,LOCATION_DECK,0,1,nil) end +end +function c511002974.gbop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.SelectMatchingCard(tp,c511002974.gbfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.Overlay(c,g) + end +end +function c511002974.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetHandler():GetOverlayGroup() + if chk==0 then return g:IsExists(Card.IsAbleToDeckAsCost,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local sg=g:FilterSelect(tp,Card.IsAbleToDeckAsCost,1,1,nil) + Duel.SendtoDeck(sg,nil,2,REASON_COST) +end +function c511002974.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511002974.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511002974.filter(c) + return c:IsFaceup() and c:IsSetCard(0x19) and c:GetFlagEffect(511002974)==0 and c:GetFlagEffect(511002975)==0 + and c:GetFlagEffect(511002972)==0 and c:GetFlagEffect(511002973)==0 +end +function c511002974.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002974.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002974.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tc=Duel.SelectTarget(tp,c511002974.filter,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + local op=0 + if tc then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(76922029,0)) + if tc:GetFlagEffect(511002974)==0 and tc:GetFlagEffect(511002975)==0 then + op=Duel.SelectOption(tp,aux.Stringid(77700347,0),aux.Stringid(50789693,1)) + elseif tc:GetFlagEffect(511002974)==0 then + Duel.SelectOption(tp,aux.Stringid(77700347,0)) + op=0 + else + Duel.SelectOption(tp,aux.Stringid(50789693,1)) + op=1 + end + if op==0 then + tc:RegisterFlagEffect(511002972,RESET_CHAIN,0,0) + else + tc:RegisterFlagEffect(511002973,RESET_CHAIN,0,0) + end + end +end +function c511002974.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if tc:GetFlagEffect(511002972)>0 then + tc:RegisterFlagEffect(511002974,RESET_EVENT+0x1fe0000,0,0) + elseif tc:GetFlagEffect(511002973)>0 then + tc:RegisterFlagEffect(511002975,RESET_EVENT+0x1fe0000,0,0) + end + end +end +function c511002974.btcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and (a:GetFlagEffect(511002974)>0 or d:GetFlagEffect(511002974)>0) +end +function c511002974.bttg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(511002974)==0 end + c:RegisterFlagEffect(511002974,RESET_CHAIN,0,1) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local g=Group.CreateGroup() + if a:GetFlagEffect(511002974)>0 then g:AddCard(a) end + if d:GetFlagEffect(511002974)>0 then g:AddCard(d) end + Duel.SetTargetCard(g) +end +function c511002974.btop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if c:IsRelateToEffect(e) then + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + end +end +function c511002974.cfilter(c) + return c:GetFlagEffect(511002975)>0 +end +function c511002974.efftg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511002974.cfilter,1,nil) end + local g=eg:Filter(c511002974.cfilter,nil) + Duel.SetTargetCard(g) +end +function c511002974.effop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if c:IsRelateToEffect(e) then + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(c511002974.indesval) + e1:SetReset(RESET_CHAIN) + e1:SetLabelObject(re) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + end +end +function c511002974.indesval(e,re) + return re==e:GetLabelObject() +end diff --git a/script/c511002975.lua b/script/c511002975.lua new file mode 100644 index 00000000..5df37773 --- /dev/null +++ b/script/c511002975.lua @@ -0,0 +1,150 @@ +--Gladiator Beast Great Fortress +function c511002975.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511002975.activate) + c:RegisterEffect(e1) + --attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCondition(c511002975.atcon) + e2:SetTarget(c511002975.attg) + e2:SetOperation(c511002975.atop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DESTROYED) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511002975.damop) + c:RegisterEffect(e3) + --re-place + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_BATTLE) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c511002975.ovtg) + e4:SetOperation(c511002975.ovop) + e4:SetCountLimit(1) + c:RegisterEffect(e4) +end +function c511002975.filter(c) + return c:IsSetCard(0x19) and c:IsType(TYPE_MONSTER) +end +function c511002975.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local sg=Duel.GetMatchingGroup(c511002975.filter,tp,LOCATION_GRAVE,0,nil) + if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(12744567,0)) then + Duel.Overlay(c,sg) + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end + end +end +function c511002975.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511002975.spfilter(c,e,tp) + return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002975.attg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetHandler():GetOverlayGroup() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and g:IsExists(c511002975.spfilter,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511002975.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=c:GetOverlayGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=g:FilterSelect(tp,c511002975.spfilter,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local chk=51102975 + while c:GetFlagEffect(chk)>0 do + chk=chk+1 + end + tc:RegisterFlagEffect(51102975,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1,chk) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + Duel.BreakEffect() + local at=Duel.GetAttacker() + if at:IsAttackable() and not at:IsImmuneToEffect(e) and not tc:IsImmuneToEffect(e) then + local atk=c:GetOverlayCount()*1000 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(1000+atk) + tc:RegisterEffect(e1) + Duel.CalculateDamage(at,tc) + end + c:RegisterFlagEffect(chk,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + end +end +function c511002975.damfilter(c,tp) + return c:IsType(TYPE_MONSTER) and c:IsPreviousLocation(LOCATION_MZONE) and c:IsLocation(LOCATION_GRAVE) + and c:IsReason(REASON_EFFECT+REASON_BATTLE) and c:GetOwner()==tp +end +function c511002975.damop(e,tp,eg,ep,ev,re,r,rp) + local ct1=eg:FilterCount(c511002975.damfilter,nil,tp) + local ct2=eg:FilterCount(c511002975.damfilter,nil,1-tp) + Duel.Damage(tp,ct1*500,REASON_EFFECT) + Duel.Damage(1-tp,ct2*500,REASON_EFFECT) +end +function c511002975.ovfilter(c,fid) + return c:GetFlagEffectLabel(51102975)==fid +end +function c511002975.ovtg(e,tp,eg,ep,ev,re,r,rp,chk) + local check=51102975 + while e:GetHandler():GetFlagEffect(check)==0 do + check=check+1 + if check>=51103000 then return false end + end + if chk==0 then return Duel.IsExistingMatchingCard(c511002975.ovfilter,tp,LOCATION_MZONE,0,1,nil,check) end +end +function c511002975.ovop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local chk=51102975 + while c:GetFlagEffect(chk)==0 do + chk=chk+1 + if chk>=51103000 then return end + end + local g=Duel.GetMatchingGroup(c511002975.ovfilter,tp,LOCATION_MZONE,0,nil,chk) + Duel.Overlay(c,g) +end diff --git a/script/c511002976.lua b/script/c511002976.lua new file mode 100644 index 00000000..84c4d1a0 --- /dev/null +++ b/script/c511002976.lua @@ -0,0 +1,1037 @@ +--クリスタル・ローズ +function c511002976.initial_effect(c) + --Fusion monster, name + name + function aux.FConditionFilter21(c,code1,code2,sub) + return c:IsFusionCode(code1,code2) or (sub and c:IsHasEffect(511002961)) + end + + function aux.FConditionCode2(code1,code2,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,gc,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + local b1=0 local b2=0 local bw=0 local bwx=0 + if gc:IsFusionCode(code1) then b1=1 end + if gc:IsFusionCode(code2) then b2=1 end + if sub and gc:IsHasEffect(511002961) then bwx=1 end + if sub and gc:CheckFusionSubstitute(e:GetHandler()) then bw=1 end + if b1+b2+bw==0 then return false end + if chkf~=PLAYER_NONE and not Auxiliary.FConditionCheckF(gc,chkf) then + mg=mg:Filter(Auxiliary.FConditionCheckF,nil,chkf) + end + if b1+b2+bw>1 or bwx==1 then + return mg:IsExists(Auxiliary.FConditionFilter22,1,nil,code1,code2,sub,e:GetHandler()) + elseif b1==1 then + return mg:IsExists(Auxiliary.FConditionFilter12,1,nil,code2,sub,e:GetHandler()) + elseif b2==1 then + return mg:IsExists(Auxiliary.FConditionFilter12,1,nil,code1,sub,e:GetHandler()) + else + return mg:IsExists(Auxiliary.FConditionFilter21,1,nil,code1,code2,sub) + end + end + local b1=0 local b2=0 local bw=0 local bwxct=0 + local ct=0 + local fs=chkf==PLAYER_NONE + local tc=mg:GetFirst() + while tc do + local match=false + if tc:IsFusionCode(code1) then b1=1 match=true end + if tc:IsFusionCode(code2) then b2=1 match=true end + if sub and tc:IsHasEffect(511002961) then bwxct=bwxct+1 match=true end + if sub and not tc:IsHasEffect(511002961) and tc:CheckFusionSubstitute(e:GetHandler()) then bw=1 match=true end + if match then + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + ct=ct+1 + end + tc=mg:GetNext() + end + return ct>1 and b1+b2+bw+bwxct>1 and fs + end + end + function Auxiliary.FOperationCode2(code1,code2,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,gc,e:GetHandler()) + local tc=gc + local g1=nil + if gc then + if chkf~=PLAYER_NONE and not Auxiliary.FConditionCheckF(gc,chkf) then + g=g:Filter(Auxiliary.FConditionCheckF,nil,chkf) + end + else + local sg=g:Filter(Auxiliary.FConditionFilter22,nil,code1,code2,sub,e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + tc=g1:GetFirst() + g:RemoveCard(tc) + end + local b1=0 local b2=0 local bw=0 local bwx=0 + if tc:IsFusionCode(code1) then b1=1 end + if tc:IsFusionCode(code2) then b2=1 end + if sub and tc:IsHasEffect(511002961) then bwx=1 end + if sub and not tc:IsHasEffect(511002961) and tc:CheckFusionSubstitute(e:GetHandler()) then bw=1 end + local g2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if b1+b2+bw>1 or bwx==1 then + g2=g:FilterSelect(tp,Auxiliary.FConditionFilter22,1,1,nil,code1,code2,sub,e:GetHandler()) + elseif b1==1 then + g2=g:FilterSelect(tp,Auxiliary.FConditionFilter12,1,1,nil,code2,sub,e:GetHandler()) + elseif b2==1 then + g2=g:FilterSelect(tp,Auxiliary.FConditionFilter12,1,1,nil,code1,sub,e:GetHandler()) + else + g2=g:FilterSelect(tp,Auxiliary.FConditionFilter21,1,1,nil,code1,code2,sub) + end + if g1 then g2:Merge(g1) end + Duel.SetFusionMaterial(g2) + end + end + + --Fusion monster, name + name + name + function Auxiliary.FConditionFilter31(c,code1,code2,code3,sub) + return c:IsFusionCode(code1,code2,code3) or (sub and c:IsHasEffect(511002961)) + end + + function Auxiliary.FConditionCode3(code1,code2,code3,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + local b1=0 local b2=0 local b3=0 local bw=0 local bwxct=0 local bwg=Group.CreateGroup() + local tc=mg:GetFirst() + while tc do + if sub and tc:IsHasEffect(511002961) then + bwxct=bwxct+1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if bwg:IsExists(c511002976.FConditionFilterCodeAndSub,1,nil,tc:GetCode(),e:GetHandler()) then + if tc:IsFusionCode(code1) then b1=1 elseif tc:IsFusionCode(code2) then b2=1 + elseif tc:IsFusionCode(code3) then b3=1 + end + bw=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + bwg:Remove(c511002976.FConditionFilterCodeAndSub,nil,tc:GetCode(),e:GetHandler()) + else + if sub and tc:CheckFusionSubstitute(e:GetHandler()) then + if tc:IsFusionCode(code1,code2,code3) then bwg:AddCard(tc) + else bw=1 end + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if tc:IsFusionCode(code1) then b1=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code2) then b2=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code3) then b3=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + end + end + tc=mg:GetNext() + end + local chc=bwg:GetFirst() + while chc do + if tc:IsFusionCode(code1) and b1==0 then b1=1 + elseif tc:IsFusionCode(code2) and b2==0 then b2=1 + elseif tc:IsFusionCode(code3) and b3==0 then b3=1 + else bw=1 end + chc=bwg:GetNext() + end + if sub and gc:IsHasEffect(511002961) then + return b1+b2+b3+bw+bwxct>1 + elseif sub and gc:CheckFusionSubstitute(e:GetHandler()) then + return b1+b2+b3+bwxct>1 + else + if gc:IsFusionCode(code1) and b1==0 then b1=1 + elseif gc:IsFusionCode(code2) and b2==0 then b2=1 + elseif gc:IsFusionCode(code3) and b3==0 then b3=1 + else return false + end + return b1+b2+b3+bw+bwxct>2 + end + end + local b1=0 local b2=0 local b3=0 local bs=0 local bwxct=0 local bwg=Group.CreateGroup() + local fs=false + local tc=mg:GetFirst() + while tc do + if sub and tc:IsHasEffect(511002961) then + bwxct=bwxct+1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if bwg:IsExists(c511002976.FConditionFilterCodeAndSub,1,nil,tc:GetCode(),e:GetHandler()) then + if tc:IsFusionCode(code1) then b1=1 elseif tc:IsFusionCode(code2) then b2=1 + elseif tc:IsFusionCode(code3) then b3=1 + end + bs=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + bwg:Remove(c511002976.FConditionFilterCodeAndSub,nil,tc:GetCode(),e:GetHandler()) + else + if sub and tc:CheckFusionSubstitute(e:GetHandler()) then + if tc:IsFusionCode(code1,code2,code3) then bwg:AddCard(tc) + else bs=1 end + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if tc:IsFusionCode(code1) then b1=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code2) then b2=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code3) then b3=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + end + end + tc=mg:GetNext() + end + local chc=bwg:GetFirst() + while chc do + if tc:IsFusionCode(code1) and b1==0 then b1=1 + elseif tc:IsFusionCode(code2) and b2==0 then b2=1 + elseif tc:IsFusionCode(code3) and b3==0 then b3=1 + else bs=1 end + chc=bwg:GetNext() + end + return b1+b2+b3+bs+bwxct>=3 and (fs or chkf==PLAYER_NONE) + end + end + function Auxiliary.FOperationCode3(code1,code2,code3,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local fusubsel=false + local sg=g:Filter(Auxiliary.FConditionFilter32,gc,code1,code2,code3,sub,e:GetHandler()) + if gc:IsHasEffect(511002961) then + sg:RemoveCard(gc) + elseif gc:CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3) + sg:RemoveCard(gc) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,gc:GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,gc:GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + if g1:GetFirst():IsHasEffect(511002961) then + sg:Sub(g1) + elseif g1:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3) + sg:Sub(g1) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) + return + end + local fusubsel=false + local sg=g:Filter(Auxiliary.FConditionFilter32,nil,code1,code2,code3,sub,e:GetHandler()) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + if g1:GetFirst():IsHasEffect(511002961) then + sg:Sub(g1) + elseif g1:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3) + sg:Sub(g1) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + if g2:GetFirst():IsHasEffect(511002961) then + sg:Sub(g2) + elseif g2:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3) + sg:Sub(g2) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g2:GetFirst():GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,g2:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g3=sg:Select(tp,1,1,nil) + g1:Merge(g2) + g1:Merge(g3) + Duel.SetFusionMaterial(g1) + end + end + + --Fusion monster, name + name + name + name + function Auxiliary.FConditionFilter41(c,code1,code2,code3,code4,sub) + return c:IsFusionCode(code1,code2,code3,code4) or (sub and c:IsHasEffect(511002961)) + end + + function Auxiliary.FConditionCode4(code1,code2,code3,code4,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + local b1=0 local b2=0 local b3=0 local b4=0 local bw=0 local bwxct=0 local bwg=Group.CreateGroup() + local tc=mg:GetFirst() + while tc do + if sub and tc:IsHasEffect(511002961) then + bwxct=bwxct+1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if bwg:IsExists(c511002976.FConditionFilterCodeAndSub,1,nil,tc:GetCode(),e:GetHandler()) then + if tc:IsFusionCode(code1) then b1=1 elseif tc:IsFusionCode(code2) then b2=1 + elseif tc:IsFusionCode(code3) then b3=1 elseif tc:IsFusionCode(code4) then b4=1 + end + bw=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + bwg:Remove(c511002976.FConditionFilterCodeAndSub,nil,tc:GetCode(),e:GetHandler()) + else + if sub and tc:CheckFusionSubstitute(e:GetHandler()) then + if tc:IsFusionCode(code1,code2,code3,code4) then bwg:AddCard(tc) + else bw=1 end + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if tc:IsFusionCode(code1) then b1=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code2) then b2=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code3) then b3=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code4) then b4=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + end + end + tc=mg:GetNext() + end + local chc=bwg:GetFirst() + while chc do + if tc:IsFusionCode(code1) and b1==0 then b1=1 + elseif tc:IsFusionCode(code2) and b2==0 then b2=1 + elseif tc:IsFusionCode(code3) and b3==0 then b3=1 + elseif tc:IsFusionCode(code4) and b4==0 then b4=1 + else bs=1 end + chc=bwg:GetNext() + end + if sub and gc:IsHasEffect(511002961) then + return b1+b2+b3+b4+bw+bwxct>2 + elseif sub and gc:CheckFusionSubstitute(e:GetHandler()) then + return b1+b2+b3+b4+bwxct>2 + else + if gc:IsFusionCode(code1) and b1==0 then b1=1 + elseif gc:IsFusionCode(code2) and b2==0 then b2=1 + elseif gc:IsFusionCode(code3) and b3==0 then b3=1 + elseif gc:IsFusionCode(code4) and b4==0 then b4=1 + else return false + end + return b1+b2+b3+b4+bw+bwxct>3 + end + end + local b1=0 local b2=0 local b3=0 local b4=0 local bs=0 local bwxct=0 local bwg=Group.CreateGroup() + local fs=false + local tc=mg:GetFirst() + while tc do + if sub and tc:IsHasEffect(511002961) then + bwxct=bwxct+1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if bwg:IsExists(c511002976.FConditionFilterCodeAndSub,1,nil,tc:GetCode(),e:GetHandler()) then + if tc:IsFusionCode(code1) then b1=1 elseif tc:IsFusionCode(code2) then b2=1 + elseif tc:IsFusionCode(code3) then b3=1 elseif tc:IsFusionCode(code4) then b4=1 + end + bs=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + bwg:Remove(c511002976.FConditionFilterCodeAndSub,nil,tc:GetCode(),e:GetHandler()) + else + if sub and tc:CheckFusionSubstitute(e:GetHandler()) then + if tc:IsFusionCode(code1,code2,code3,code4) then bwg:AddCard(tc) + else bs=1 end + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + else + if tc:IsFusionCode(code1) then b1=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code2) then b2=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code3) then b3=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + elseif tc:IsFusionCode(code4) then b4=1 if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + end + end + end + end + tc=mg:GetNext() + end + local chc=bwg:GetFirst() + while chc do + if tc:IsFusionCode(code1) and b1==0 then b1=1 + elseif tc:IsFusionCode(code2) and b2==0 then b2=1 + elseif tc:IsFusionCode(code3) and b3==0 then b3=1 + elseif tc:IsFusionCode(code4) and b4==0 then b4=1 + else bs=1 end + chc=bwg:GetNext() + end + return b1+b2+b3+b4+bs+bwxct>=4 and (fs or chkf==PLAYER_NONE) + end + end + function Auxiliary.FOperationCode4(code1,code2,code3,code4,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local fusubsel=false + local sg=g:Filter(Auxiliary.FConditionFilter42,gc,code1,code2,code3,code4,sub,e:GetHandler()) + if gc:IsHasEffect(511002961) then + sg:RemoveCard(gc) + elseif gc:CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:RemoveCard(gc) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,gc:GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,gc:GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + if g1:GetFirst():IsHasEffect(511002961) then + sg:Sub(g1) + elseif g1:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g1) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + if g2:GetFirst():IsHasEffect(511002961) then + sg:Sub(g2) + elseif g2:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g2) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g3=sg:Select(tp,1,1,nil) + g1:Merge(g2) + g1:Merge(g3) + Duel.SetFusionMaterial(g1) + return + end + local fusubsel=false + local sg=g:Filter(Auxiliary.FConditionFilter42,nil,code1,code2,code3,code4,sub,e:GetHandler()) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + if g1:GetFirst():IsHasEffect(511002961) then + sg:Sub(g1) + elseif g1:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g1) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g1:GetFirst():GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,g1:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + if g2:GetFirst():IsHasEffect(511002961) then + sg:Sub(g2) + elseif g2:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g2) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g2:GetFirst():GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,g2:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g3=sg:Select(tp,1,1,nil) + if g3:GetFirst():IsHasEffect(511002961) then + sg:Sub(g3) + elseif g3:GetFirst():CheckFusionSubstitute(e:GetHandler()) and not fusubsel then + sg:Remove(c511002976.FConditionFilterx,nil,e:GetHandler(),code1,code2,code3,code4) + sg:Sub(g3) + fusubsel=true + elseif fusubsel then sg:Remove(Card.IsFusionCode,nil,g3:GetFirst():GetCode()) + else sg:Remove(c511002976.FConditionFilterCodeNotSub,nil,g3:GetFirst():GetCode(),e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g4=sg:Select(tp,1,1,nil) + g1:Merge(g2) + g1:Merge(g3) + g1:Merge(g4) + Duel.SetFusionMaterial(g1) + end + end + + --Fusion monster, name + condition + function Auxiliary.FConditionCodeFun(code,f,cc,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + if (gc:IsFusionCode(code) or (sub and gc:CheckFusionSubstitute(e:GetHandler()))) + and mg:IsExists(c511002976.FConditionFilterConAndSub,cc,gc,f,sub) then + return true + elseif f(gc) or (sub and gc:IsHasEffect(511002961)) then + local g1=Group.CreateGroup() local g2=Group.CreateGroup() + local tc=mg:GetFirst() + while tc do + if tc:IsFusionCode(code) or (sub and tc:CheckFusionSubstitute(e:GetHandler())) + then g1:AddCard(tc) end + if f(tc) or (sub and tc:IsHasEffect(511002961)) then g2:AddCard(tc) end + tc=mg:GetNext() + end + if cc>1 then + g2:RemoveCard(gc) + return g1:IsExists(Auxiliary.FConditionFilterCF,1,gc,g2,cc-1) + else + g1:RemoveCard(gc) + return g1:GetCount()>0 + end + else return false end + end + local b1=0 local b2=0 local bw=0 + local fs=false + local tc=mg:GetFirst() + while tc do + local c1=tc:IsFusionCode(code) or (sub and tc:CheckFusionSubstitute(e:GetHandler())) + local c2=f(tc) or (sub and tc:IsHasEffect(511002961)) + if c1 or c2 then + if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end + if c1 and c2 then bw=bw+1 + elseif c1 then b1=1 + else b2=b2+1 + end + end + tc=mg:GetNext() + end + if b2>cc then b2=cc end + return b1+b2+bw>=1+cc and (fs or chkf==PLAYER_NONE) + end + end + function Auxiliary.FOperationCodeFun(code,f,cc,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if (gc:IsFusionCode(code) or (sub and gc:CheckFusionSubstitute(e:GetHandler()))) + and g:IsExists(c511002976.FConditionFilterConAndSub,cc,gc,f,sub) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(tp,c511002976.FConditionFilterConAndSub,cc,cc,gc,f,sub) + Duel.SetFusionMaterial(g1) + else + local sg1=Group.CreateGroup() local sg2=Group.CreateGroup() + local tc=g:GetFirst() + while tc do + if tc:IsFusionCode(code) or (sub and tc:CheckFusionSubstitute(e:GetHandler())) then sg1:AddCard(tc) end + if f(tc) or (sub and tc:IsHasEffect(511002961)) then sg2:AddCard(tc) end + tc=g:GetNext() + end + if cc>1 then + sg2:RemoveCard(gc) + if sg2:GetCount()==cc-1 then + sg1:Sub(sg2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg1:Select(tp,1,1,gc) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:Select(tp,cc-1,cc-1,g1:GetFirst()) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg1:Select(tp,1,1,gc) + Duel.SetFusionMaterial(g1) + end + end + return + end + local sg1=Group.CreateGroup() local sg2=Group.CreateGroup() local fs=false + local tc=g:GetFirst() + while tc do + if tc:IsFusionCode(code) or (sub and tc:CheckFusionSubstitute(e:GetHandler())) then sg1:AddCard(tc) end + if f(tc) or (sub and tc:IsHasEffect(511002961)) then sg2:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + tc=g:GetNext() + end + if chkf~=PLAYER_NONE then + if sg2:GetCount()==cc then + sg1:Sub(sg2) + end + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if fs then g1=sg1:Select(tp,1,1,nil) + else g1=sg1:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) end + local tc1=g1:GetFirst() + sg2:RemoveCard(tc1) + if Auxiliary.FConditionCheckF(tc1,chkf) or sg2:GetCount()==cc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:Select(tp,cc,cc,tc1) + g1:Merge(g2) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg2:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,tc1,chkf) + g1:Merge(g2) + if cc>1 then + sg2:RemoveCard(g2:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + g2=sg2:Select(tp,cc-1,cc-1,tc1) + g1:Merge(g2) + end + end + Duel.SetFusionMaterial(g1) + else + if sg2:GetCount()==cc then + sg1:Sub(sg2) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + g1:Merge(sg2:Select(tp,cc,cc,g1:GetFirst())) + Duel.SetFusionMaterial(g1) + end + end + end + + --Fusion monster, condition + condition + function Auxiliary.FConditionFilterF2c(c,f1,f2) + return f1(c) or f2(c) or c:IsHasEffect(511002961) + end + function Auxiliary.FConditionFilterF2r(c,f1,f2) + return f1(c) and not f2(c) and not c:IsHasEffect(511002961) + end + + function Auxiliary.FConditionFun2(f1,f2,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return ((f1(gc) or gc:IsHasEffect(511002961)) and mg:IsExists(c511002976.FConditionFilterConAndSub,1,gc,f2,true)) + or ((f2(gc) or gc:IsHasEffect(511002961)) and mg:IsExists(c511002976.FConditionFilterConAndSub,1,gc,f1,true)) end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=mg:GetFirst() + while tc do + if f1(tc) or tc:IsHasEffect(511002961) then g1:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + if f2(tc) or tc:IsHasEffect(511002961) then g2:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + tc=mg:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) + else return g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) end + end + end + function Auxiliary.FOperationFun2(f1,f2,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local sg=Group.CreateGroup() + if f1(gc) or gc:IsHasEffect(511002961) then sg:Merge(g:Filter(c511002976.FConditionFilterConAndSub,gc,f2,true)) end + if f2(gc) or gc:IsHasEffect(511002961) then sg:Merge(g:Filter(c511002976.FConditionFilterConAndSub,gc,f1,true)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local sg=g:Filter(Auxiliary.FConditionFilterF2c,nil,f1,f2) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then + g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + local tc1=g1:GetFirst() + sg:RemoveCard(tc1) + local b1=f1(tc1) or tc1:IsHasEffect(511002961) + local b2=f2(tc1) or tc1:IsHasEffect(511002961) + if b1 and not b2 then sg:Remove(Auxiliary.FConditionFilterF2r,nil,f1,f2) end + if b2 and not b1 then sg:Remove(Auxiliary.FConditionFilterF2r,nil,f2,f1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) + end + end + --Fusion monster, name * n + function Auxiliary.FConditionCodeRep(code,cc,sub,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + local bwxct=mg:FilterCount(c511002976.FConditionFilterx3,gc,e:GetHandler(),sub) + local bw=0 + local ct=mg:FilterCount(c511002976.FConditionFilterCodeNotSub,gc,code,e:GetHandler()) + if mg:IsExists(c511002976.FConditionFilterx2,1,gc,e:GetHandler(),sub) then bw=1 end + if gc:IsFusionCode(code) or (sub and gc:IsHasEffect(511002961)) then return bwxct+bw+ct>=cc-1 + elseif sub and gc:CheckFusionSubstitute(e:GetHandler()) then return bwxct+ct>=cc-1 + else return false end + end + local g1=mg:Filter(Card.IsFusionCode,nil,code) + if not sub then + if chkf~=PLAYER_NONE then return g1:GetCount()>=cc and g1:FilterCount(Card.IsOnField,nil)~=0 + else return g1:GetCount()>=cc end + end + g1=g1:Filter(c511002976.FConditionFilterCodeNotSub,nil,code,e:GetHandler()) + local g2=mg:Filter(c511002976.FConditionFilterx2,nil,e:GetHandler(),sub) + local g3=mg:Filter(c511002976.FConditionFilterx3,nil,e:GetHandler(),sub) + g1:Merge(g3) + if chkf~=PLAYER_NONE then + return (g1:FilterCount(Card.IsOnField,nil)~=0 or g2:FilterCount(Card.IsOnField,nil)~=0) + and g1:GetCount()>=cc-1 and g1:GetCount()+g2:GetCount()>=cc + else return g1:GetCount()>=cc-1 and g1:GetCount()+g2:GetCount()>=cc end + end + end + function Auxiliary.FOperationCodeRep(code,cc,sub,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local notfusion=bit.rshift(chkfnf,8)~=0 + local sub=sub or notfusion + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local g1=g:Filter(c511002976.FConditionFilterCodeNotSub,gc,code,e:GetHandler()) + local g3=g:Filter(c511002976.FConditionFilterx3,gc,e:GetHandler(),sub) + g1:Merge(g3) + if sub and gc:CheckFusionSubstitute(e:GetHandler()) and not gc:IsHasEffect(511002961) then + if cc-1>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local mat=g1:Select(tp,cc-1,cc-1,nil) + Duel.SetFusionMaterial(mat) + end + else + if cc-1>0 then + local sg=g:Filter(Auxiliary.FConditionFilterCR,nil,code,sub,e:GetHandler()) + local mat=Group.CreateGroup() + local tc1 + for i=1,cc-1 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local mat2=sg:Select(tp,1,1,nil) + tc1=mat2:GetFirst() + mat:Merge(mat2) + if tc1:CheckFusionSubstitute(e:GetHandler()) and not tc1:IsHasEffect(511002961) then + sg:Remove(c511002976.FConditionFilterx2,nil,e:GetHandler(),sub) + else sg:RemoveCard(tc1) end + end + Duel.SetFusionMaterial(mat) + end + end + return + end + local sg=g:Filter(Auxiliary.FConditionFilterCR,nil,code,sub,e:GetHandler()) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + local tc1=g1:GetFirst() + for i=1,cc-1 do + if tc1:CheckFusionSubstitute(e:GetHandler()) and not tc1:IsHasEffect(511002961) then + sg:Remove(c511002976.FConditionFilterx2,nil,e:GetHandler(),sub) + else sg:RemoveCard(tc1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + tc1=g2:GetFirst() + g1:Merge(g2) + end + Duel.SetFusionMaterial(g1) + end + end + + --Fusion monster, condition * n + function Auxiliary.FConditionFunRep(f,cc,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return (f(gc) or gc:IsHasEffect(511002961)) and mg:IsExists(c511002976.FConditionFilterConAndSub,cc-1,gc,f,true) end + local g1=mg:Filter(c511002976.FConditionFilterConAndSub,nil,f,true) + if chkf~=PLAYER_NONE then + return g1:FilterCount(Card.IsOnField,nil)~=0 and g1:GetCount()>=cc + else return g1:GetCount()>=cc end + end + end + function Auxiliary.FOperationFunRep(f,cc,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(tp,c511002976.FConditionFilterConAndSub,cc-1,cc-1,gc,f,true) + Duel.SetFusionMaterial(g1) + return + end + local sg=g:Filter(c511002976.FConditionFilterConAndSub,nil,f,true) + if chkf==PLAYER_NONE or sg:GetCount()==cc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,cc,cc,nil) + Duel.SetFusionMaterial(g1) + return + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + if cc>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,cc-1,cc-1,g1:GetFirst()) + g1:Merge(g2) + end + Duel.SetFusionMaterial(g1) + end + end + + --Fusion monster, condition1 + condition2 * minc to maxc + --Fusion monster, name + condition * minc to maxc + function Auxiliary.FConditionFilterFFR(c,f1,f2,mg,minc,chkf) + if not f1(c) and not c:IsHasEffect(511002961) then return false end + if chkf==PLAYER_NONE or aux.FConditionCheckF(c,chkf) then + return minc<=0 or mg:IsExists(c511002976.FConditionFilterConAndSub,minc,c,f2,true) + else + local mg2=mg:Filter(c511002976.FConditionFilterConAndSub,c,f2,true) + return mg2:GetCount()>=minc and mg2:IsExists(aux.FConditionCheckF,1,nil,chkf) + end + end + + function Auxiliary.FConditionFunFunRep(f1,f2,minc,maxc,insf) + return function(e,g,gc,chkfnf) + if g==nil then return insf end + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + if aux.FConditionFilterFFR(gc,f1,f2,mg,minc,chkf) then + return true + elseif f2(gc) or gc:IsHasEffect(511002961) then + mg:RemoveCard(gc) + if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end + return mg:IsExists(aux.FConditionFilterFFR,1,nil,f1,f2,mg,minc-1,chkf) + else return false end + end + return mg:IsExists(aux.FConditionFilterFFR,1,nil,f1,f2,mg,minc,chkf) + end + end + function Auxiliary.FOperationFunFunRep(f1,f2,minc,maxc,insf) + return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local minct=minc + local maxct=maxc + if gc then + g:RemoveCard(gc) + if aux.FConditionFilterFFR(gc,f1,f2,g,minct,chkf) then + if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end + local g1=Group.CreateGroup() + if f2(gc) or gc:IsHasEffect(511002961) then + local mg1=g:Filter(aux.FConditionFilterFFR,nil,f1,f2,g,minct-1,chkf) + if mg1:GetCount()>0 then + --if gc fits both, should allow an extra material that fits f1 but doesn't fit f2 + local mg2=g:Filter(c511002976.FConditionFilterConAndSub,nil,f2,true) + mg1:Merge(mg2) + if chkf~=PLAYER_NONE then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) + g1:Merge(sg) + mg1:Sub(sg) + minct=minct-1 + maxct=maxct-1 + if not f2(sg:GetFirst()) and not sg:GetFirst():IsHasEffect(511002961) then + if mg1:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then + if minct<=0 then minct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:FilterSelect(tp,c511002976.FConditionFilterConAndSub,minct,maxct,nil,f2,true) + g1:Merge(sg) + end + Duel.SetFusionMaterial(g1) + return + end + end + if maxct>1 and (minct>1 or Duel.SelectYesNo(tp,93)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:FilterSelect(tp,c511002976.FConditionFilterConAndSub,minct-1,maxct-1,nil,f2,true) + g1:Merge(sg) + mg1:Sub(sg) + local ct=sg:GetCount() + minct=minct-ct + maxct=maxct-ct + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:Select(tp,1,1,nil) + g1:Merge(sg) + mg1:Sub(sg) + minct=minct-1 + maxct=maxct-1 + if mg1:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then + if minct<=0 then minct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg1:FilterSelect(tp,c511002976.FConditionFilterConAndSub,minct,maxct,nil,f2,true) + g1:Merge(sg) + end + Duel.SetFusionMaterial(g1) + return + end + end + local mg=g:Filter(c511002976.FConditionFilterConAndSub,nil,f2,true) + if chkf~=PLAYER_NONE then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) + g1:Merge(sg) + mg:Sub(sg) + minct=minct-1 + maxct=maxct-1 + end + if mg:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then + if minct<=0 then minct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:Select(tp,minct,maxct,nil) + g1:Merge(sg) + end + Duel.SetFusionMaterial(g1) + return + else + if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end + minct=minct-1 + maxct=maxct-1 + end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(tp,aux.FConditionFilterFFR,1,1,nil,f1,f2,g,minct,chkf) + local mg=g:Filter(c511002976.FConditionFilterConAndSub,g1:GetFirst(),f2,true) + if chkf~=PLAYER_NONE and not aux.FConditionCheckF(g1:GetFirst(),chkf) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) + g1:Merge(sg) + mg:Sub(sg) + minct=minct-1 + maxct=maxct-1 + end + if mg:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then + if minct<=0 then minct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg=mg:Select(tp,minct,maxct,nil) + g1:Merge(sg) + end + Duel.SetFusionMaterial(g1) + end + end + + --fusion substitute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_FUSION_SUBSTITUTE) + e2:SetCondition(c511002976.subcon) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(511002961) + e3:SetRange(LOCATION_MZONE) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_ADD_FUSION_SETCODE) + e4:SetValue(0x9d) + e4:SetRange(LOCATION_MZONE) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(4904633) + e5:SetRange(LOCATION_MZONE) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetCode(EFFECT_ADD_FUSION_SETCODE) + e6:SetValue(0xe1) + e6:SetRange(LOCATION_MZONE) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e7:SetCode(EFFECT_ADD_FUSION_SETCODE) + e7:SetValue(0x9) + e7:SetRange(LOCATION_MZONE) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e8:SetCode(EFFECT_ADD_FUSION_SETCODE) + e8:SetValue(0x1f) + e8:SetRange(LOCATION_MZONE) + c:RegisterEffect(e8) + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e9:SetCode(EFFECT_ADD_FUSION_SETCODE) + e9:SetValue(0x8) + e9:SetRange(LOCATION_MZONE) + c:RegisterEffect(e9) + if not c511002976.global_check then + c511002976.global_check=true + --FUSIONZ!!! + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(c511002976.op) + Duel.RegisterEffect(ge1,0) + end +end +function c511002976.FConditionFilterx(c,fc,code1,code2,code3,code4) + return c:CheckFusionSubstitute(fc) and not c:IsHasEffect(511002961) and not c:IsFusionCode(code1,code2,code3,code4) +end +function c511002976.FConditionFilterx2(c,fc,sub) + return sub and c:CheckFusionSubstitute(fc) and not c:IsHasEffect(511002961) +end +function c511002976.FConditionFilterx3(c,fc,sub) + return sub and c:CheckFusionSubstitute(fc) and c:IsHasEffect(511002961) +end +function c511002976.FConditionFilterCodeAndSub(c,code,fc) + return c:IsFusionCode(code) and c:CheckFusionSubstitute(fc) +end +function c511002976.FConditionFilterCodeOrSub2(c,code1,code2) + return c:IsFusionCode(code1,code2) or c:IsHasEffect(511002961) +end +function c511002976.FConditionFilterCodeNotSub(c,code,fc) + return c:IsFusionCode(code) and not c:CheckFusionSubstitute(fc) +end +function c511002976.FConditionFilterConAndSub(c,f,sub) + return f(c) or (sub and c:IsHasEffect(511002961)) +end +function c511002976.op(e,tp,eg,ep,ev,re,r,rp) + --Non-Utility Fusions + local mt + if c77693536 then --フルメタルフォーゼ・アルカエスト (Fullmetalfoes Alkahest) + mt=c77693536 + mt.filter2=function(c) return c:IsType(TYPE_NORMAL) or c:IsHasEffect(511002961) end + end + if c54401832 then --メタルフォーゼ・カーディナル (Metalfoes Crimsonite) + mt=c54401832 + mt.filter2=function(c) return c:IsAttackBelow(3000) or c:IsHasEffect(511002961) end + end + if c4688231 then --メタルフォーゼ・ミスリエル (Metalfoes Mythriel) + mt=c4688231 + mt.filter2=function(c) return c:IsType(TYPE_PENDULUM) or c:IsHasEffect(511002961) end + end + if c81612598 then --メタルフォーゼ・アダマンテ (Metalfoes Adamante) + mt=c81612598 + mt.filter2=function(c) return c:IsAttackBelow(2500) or c:IsHasEffect(511002961) end + end + if c74506079 then --ワーム・ゼロ (Worm Zero) + mt=c74506079 + mt.ffilter=function(c) return (c:IsFusionSetCard(0x3e) and c:IsRace(RACE_REPTILE)) or c:IsHasEffect(511002961) end + end +end +function c511002976.subcon(e) + return e:GetHandler():IsFaceup() and e:GetHandler():IsOnField() +end +function c511002976.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002976.filter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,gc) +end diff --git a/script/c511002977.lua b/script/c511002977.lua new file mode 100644 index 00000000..acd72816 --- /dev/null +++ b/script/c511002977.lua @@ -0,0 +1,33 @@ +--Cemetery Change +function c511002977.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(c511002977.cost) + e1:SetTarget(c511002977.target) + e1:SetOperation(c511002977.activate) + c:RegisterEffect(e1) +end +function c511002977.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 c511002977.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + or Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,LOCATION_GRAVE)>0 end + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511002977.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) + Duel.BreakEffect() + local g1=Duel.GetFieldGroup(tp,LOCATION_GRAVE,0) + local g2=Duel.GetFieldGroup(tp,0,LOCATION_GRAVE) + Duel.SendtoDeck(g1,nil,-2,REASON_EFFECT) + Duel.SendtoDeck(g2,nil,-2,REASON_EFFECT) + Duel.SendtoGrave(g1,REASON_EFFECT,1-tp) + Duel.SendtoGrave(g2,REASON_EFFECT,tp) +end diff --git a/script/c511002978.lua b/script/c511002978.lua new file mode 100644 index 00000000..538c41ed --- /dev/null +++ b/script/c511002978.lua @@ -0,0 +1,98 @@ +--Earthbound Beginning +function c511002978.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002978.condition) + e1:SetTarget(c511002978.target) + e1:SetOperation(c511002978.activate) + c:RegisterEffect(e1) + if not c511002978.global_check then + c511002978.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511002978.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002978.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511002978.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil and Duel.GetLP(tp)<=3000 +end +function c511002978.filter(c,tp) + local te=c:GetActivateEffect() + if not te then return false end + return c:IsType(TYPE_FIELD) and te:IsActivatable(tp) +end +function c511002978.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002978.filter,tp,LOCATION_DECK,0,1,nil,tp) end +end +function c511002978.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511002978.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511002978.con) + e2:SetOperation(c511002978.op) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) +end +function c511002978.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) +end +function c511002978.con(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511002978.op(e,tp,eg,ep,ev,re,r,rp) + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc then Duel.Destroy(fc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + local sg=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_DECK,0,nil,TYPE_FIELD) + local chc=sg:GetFirst() + while chc do + local te=chc:GetActivateEffect() + if te and not te:IsActivatable(tp) then + te:SetProperty(te:GetProperty()+EFFECT_FLAG_DAMAGE_STEP) + end + chc=sg:GetNext() + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c511002978.filter,tp,LOCATION_DECK,0,1,1,nil,tp) + if g:GetCount()>0 and not Duel.GetFieldCard(tp,LOCATION_SZONE,5) then + local tc=g:GetFirst() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + local cost=te:GetCost() + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,te,0,tp,tp,Duel.GetCurrentChain()) + end + chc=sg:GetFirst() + while chc do + local te=chc:GetActivateEffect() + if te and te:IsActivatable(tp) then + te:SetProperty(te:GetProperty()-EFFECT_FLAG_DAMAGE_STEP) + end + chc=sg:GetNext() + end +end diff --git a/script/c511002981.lua b/script/c511002981.lua new file mode 100644 index 00000000..5369c238 --- /dev/null +++ b/script/c511002981.lua @@ -0,0 +1,91 @@ +--Pendulum Fusion +function c511002981.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74335036,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002981.target) + e1:SetOperation(c511002981.activate) + c:RegisterEffect(e1) + local f=Card.IsCanBeFusionMaterial + Card.IsCanBeFusionMaterial=function(c,fc,ismon) + if (c:GetSequence()==6 or c:GetSequence()==7) and c:IsLocation(LOCATION_SZONE) then + return f(c,fc,true) + end + if c:IsCode(80604091) then return f(c,fc,true) end + return f(c,fc,ismon) + end + local tf=Card.IsType + Card.IsType=function(c,tpe) + if c:IsLocation(LOCATION_SZONE) and c:GetSequence()>=6 then return tf(c,tpe) or bit.band(c:GetOriginalType(),tpe)==tpe end + return tf(c,tpe) + end +end +function c511002981.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002981.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511002981.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local g1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local g2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + local g3=Duel.GetFieldCard(1-tp,LOCATION_SZONE,6) + local g4=Duel.GetFieldCard(1-tp,LOCATION_SZONE,7) + local mg1=Group.FromCards(g1,g2,g3,g4):Filter(c511002981.filter1,nil,e) + local res=Duel.IsExistingMatchingCard(c511002981.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511002981.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511002981.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local g1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local g2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + local g3=Duel.GetFieldCard(1-tp,LOCATION_SZONE,6) + local g4=Duel.GetFieldCard(1-tp,LOCATION_SZONE,7) + local mg1=Group.FromCards(g1,g2,g3,g4):Filter(c511002981.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c511002981.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c74335036.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511002982.lua b/script/c511002982.lua new file mode 100644 index 00000000..352322b4 --- /dev/null +++ b/script/c511002982.lua @@ -0,0 +1,33 @@ +--検閲 +function c511002982.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(16227556,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002982.cfcon) + e2:SetCost(c511002982.cfcost) + e2:SetOperation(c511002982.cfop) + c:RegisterEffect(e2) +end +function c511002982.cfcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)~=0 +end +function c511002982.cfcost(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 c511002982.cfop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND):RandomSelect(tp,1) + if g:GetCount()~=0 then + Duel.ConfirmCards(tp,g) + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c511002983.lua b/script/c511002983.lua new file mode 100644 index 00000000..2c729438 --- /dev/null +++ b/script/c511002983.lua @@ -0,0 +1,45 @@ +--リサイクル +function c511002983.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --recycle + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(96316857,0)) + e2:SetCategory(CATEGORY_TODECK) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511002983.rccon) + e2:SetCost(c511002983.rccost) + e2:SetTarget(c511002983.rctg) + e2:SetOperation(c511002983.rcop) + c:RegisterEffect(e2) +end +function c511002983.rccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002983.rccost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,300) end + Duel.PayLPCost(tp,300) +end +function c511002983.filter(c) + return c:IsAbleToDeck() and not c:IsType(TYPE_MONSTER) +end +function c511002983.rctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511002983.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002983.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c511002983.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511002983.rcop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,1,REASON_EFFECT) + end +end diff --git a/script/c511002984.lua b/script/c511002984.lua new file mode 100644 index 00000000..ddaead88 --- /dev/null +++ b/script/c511002984.lua @@ -0,0 +1,68 @@ +--カオス・フォーム +function c511002984.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002984.target) + e1:SetOperation(c511002984.activate) + c:RegisterEffect(e1) +end +c511002984.card_code_list={46986414} +function c511002984.filter(c,e,tp,m1,ft) + if not c:IsSetCard(0xcf) or bit.band(c:GetType(),0x81)~=0x81 + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c) + if ft>0 then + return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) + or Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,46986414,89631139) + else + return ft>-1 and mg:IsExists(c511002984.mfilterf,1,nil,tp,mg,c) + end +end +function c511002984.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumEqual(Card.GetRitualLevel,rc:GetLevel(),0,99,rc) + else return false end +end +function c511002984.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg1=Duel.GetRitualMaterial(tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return Duel.IsExistingMatchingCard(c511002984.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg1,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511002984.activate(e,tp,eg,ep,ev,re,r,rp) + local mg1=Duel.GetRitualMaterial(tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511002984.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg1,ft) + local tc=g:GetFirst() + if tc then + local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc) + local mat=Group.CreateGroup() + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,209) + if not Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,46986414,89631139) + or Duel.SelectYesNo(tp,210) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c511002984.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),0,99,tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511002985.lua b/script/c511002985.lua new file mode 100644 index 00000000..80e03162 --- /dev/null +++ b/script/c511002985.lua @@ -0,0 +1,49 @@ +--極星將テュール +function c511002985.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c511002985.descon) + c:RegisterEffect(e1) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(32750510,1)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511002985.cost) + e3:SetOperation(c511002985.op) + c:RegisterEffect(e3) +end +function c511002985.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DEVINE) +end +function c511002985.descon(e) + return not Duel.IsExistingMatchingCard(c511002985.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511002985.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511002985.op(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_DISEFFECT) + e1:SetValue(c511002985.effectfilter) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_INACTIVATE) + e2:SetRange(LOCATION_SZONE) + e2:SetValue(c511002985.effectfilter) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c511002985.effectfilter(e,ct) + local te=Duel.GetChainInfo(ct,CHAININFO_TRIGGERING_EFFECT) + local tc=te:GetHandler() + return tc:IsRace(RACE_DEVINE) +end diff --git a/script/c511002986.lua b/script/c511002986.lua new file mode 100644 index 00000000..d69cd66d --- /dev/null +++ b/script/c511002986.lua @@ -0,0 +1,57 @@ +--Earthbound Prison +function c511002986.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_FZONE) + e2:SetOperation(c511002986.disop) + c:RegisterEffect(e2) + --to hand + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_DESTROYED) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCondition(c511002986.con) + e4:SetOperation(c511002986.op) + c:RegisterEffect(e4) +end +function c511002986.disop(e,tp,eg,ep,ev,re,r,rp) + if re:IsHasCategory(CATEGORY_ATKCHANGE) then + Duel.NegateEffect(ev) + end +end +function c511002986.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_SZONE) and c:GetPreviousSequence()==5 +end +function c511002986.op(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(rp,Duel.GetLP(rp)/2,REASON_EFFECT) + local g=Duel.GetMatchingGroup(aux.disfilter1,rp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end +end diff --git a/script/c511002987.lua b/script/c511002987.lua new file mode 100644 index 00000000..1138d223 --- /dev/null +++ b/script/c511002987.lua @@ -0,0 +1,23 @@ +--Earthbound Prisoner Ground Keeper +function c511002987.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511002987.indtg) + e1:SetValue(c511002987.indval) + c:RegisterEffect(e1) +end +function c511002987.filter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsFaceup() + and (c:IsSetCard(0x21f) or c:IsSetCard(0x21) or c:IsCode(67105242) or c:IsCode(67987302)) +end +function c511002987.indtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511002987.filter,1,nil,tp) end + return true +end +function c511002987.indval(e,c) + return c511002987.filter(c,e:GetHandlerPlayer()) +end diff --git a/script/c511002988.lua b/script/c511002988.lua new file mode 100644 index 00000000..1cf42865 --- /dev/null +++ b/script/c511002988.lua @@ -0,0 +1,62 @@ +--ミョルニルの魔槌 +function c511002988.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511002988.condition) + e1:SetTarget(c511002988.target) + e1:SetOperation(c511002988.activate) + c:RegisterEffect(e1) +end +function c511002988.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 c511002988.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DEVINE) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) +end +function c511002988.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511002988.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002988.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511002988.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511002988.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511002988,RESET_EVENT+0x1220000+RESET_PHASE+PHASE_END,0,1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(25123082,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e2:SetLabelObject(tc) + e2:SetCondition(c511002988.damcon) + e2:SetTarget(c511002988.damtg) + e2:SetOperation(c511002988.damop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c511002988.damcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return eg:IsContains(tc) and tc:GetFlagEffect(511002988)~=0 +end +function c511002988.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511002988.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511002989.lua b/script/c511002989.lua new file mode 100644 index 00000000..185a2a07 --- /dev/null +++ b/script/c511002989.lua @@ -0,0 +1,105 @@ +--ウィキッド・リボーン +function c511002989.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c511002989.cost) + e1:SetTarget(c511002989.target) + e1:SetOperation(c511002989.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511002989.desop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511002989.regop) + c:RegisterEffect(e3) +end +function c511002989.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c511002989.filter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002989.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511002989.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511002989.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511002989.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511002989.eqlimit(e,c) + return e:GetLabelObject()==c +end +function c511002989.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 Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)>0 then + Duel.Equip(tp,c,tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + --Add Equip limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(c511002989.eqlimit) + e2:SetLabelObject(tc) + c:RegisterEffect(e2) + end +end +function c511002989.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetEquipTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511002989.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + if not ec then return end + if c:IsReason(REASON_LOST_TARGET) and ec:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_EXTRA) + and ec:GetReasonEffect() and bit.band(ec:GetReason(),0x41)==0x41 and ec:GetReasonEffect():GetOwner()~=c then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(37534148,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND) + e1:SetCountLimit(1) + e1:SetTarget(c511002989.sptg) + e1:SetOperation(c511002989.spop) + e1:SetLabelObject(ec) + e1:SetReset(RESET_EVENT+0x1400000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + ec:RegisterFlagEffect(511002989,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c511002989.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetPreviousEquipTarget() + if chk==0 then return ec and ec:GetFlagEffect(511002989)~=0 end + Duel.SetTargetCard(ec) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,ec,1,0,0) +end +function c511002989.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511002990.lua b/script/c511002990.lua new file mode 100644 index 00000000..2dadb3ec --- /dev/null +++ b/script/c511002990.lua @@ -0,0 +1,48 @@ +--Victim's Darkness +function c511002990.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511002990.condition) + e1:SetTarget(c511002990.target) + e1:SetOperation(c511002990.operation) + c:RegisterEffect(e1) +end +function c511002990.cfilter(c,e,tp) + return c:IsOnField() and c:IsType(TYPE_MONSTER) and c:IsControler(tp) and (not e or c:IsRelateToEffect(e)) +end +function c511002990.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if tg==nil then return false end + local g=tg:Filter(c511002990.cfilter,nil,nil,tp) + g:KeepAlive() + e:SetLabelObject(g) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and ex and tc+g:GetCount()-tg:GetCount()==1 +end +function c511002990.tgfilter(c) + return c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToGrave() +end +function c511002990.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject() + if chk==0 then return g and Duel.IsExistingMatchingCard(c511002990.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c511002990.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511002990.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(1) + e1:SetReset(RESET_CHAIN) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511002991.lua b/script/c511002991.lua new file mode 100644 index 00000000..0ee4680a --- /dev/null +++ b/script/c511002991.lua @@ -0,0 +1,54 @@ +--サイバー・ブレイダー +function c511002991.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,97023549,11460577,false,false) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetCondition(c511002991.con) + e1:SetValue(1) + e1:SetLabel(1) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetCondition(c511002991.con) + e2:SetValue(c511002991.atkval) + e2:SetLabel(2) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_ONFIELD) + e3:SetCondition(c511002991.con) + e3:SetLabel(3) + c:RegisterEffect(e3) + --disable effect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAIN_SOLVING) + e4:SetRange(LOCATION_MZONE) + e4:SetLabel(3) + e4:SetCondition(c511002991.con) + e4:SetOperation(c511002991.disop) + c:RegisterEffect(e4) +end +function c511002991.con(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)==e:GetLabel() +end +function c511002991.atkval(e,c) + return c:GetAttack()*2 +end +function c511002991.disop(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if rp~=tp and (tl==LOCATION_MZONE or tl==LOCATION_SZONE) then + Duel.NegateEffect(ev) + end +end diff --git a/script/c511002992.lua b/script/c511002992.lua new file mode 100644 index 00000000..b16d294b --- /dev/null +++ b/script/c511002992.lua @@ -0,0 +1,68 @@ +--レスキューキャット +function c511002992.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14878871,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002992.spcost) + e1:SetTarget(c511002992.sptg) + e1:SetOperation(c511002992.spop) + c:RegisterEffect(e1) +end +function c511002992.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511002992.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsRace(RACE_BEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002992.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511002992.filter,tp,LOCATION_DECK,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c511002992.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g=Duel.GetMatchingGroup(c511002992.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>=2 then + local fid=e:GetHandler():GetFieldID() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + local tc=sg:GetFirst() + tc:RegisterFlagEffect(51102992,RESET_EVENT+0x1fe0000,0,1,fid) + tc=sg:GetNext() + tc:RegisterFlagEffect(51102992,RESET_EVENT+0x1fe0000,0,1,fid) + sg:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(sg) + e1:SetCondition(c511002992.descon) + e1:SetOperation(c511002992.desop) + Duel.RegisterEffect(e1,tp) + end +end +function c511002992.desfilter(c,fid) + return c:GetFlagEffectLabel(51102992)==fid +end +function c511002992.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511002992.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511002992.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511002992.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c511002993.lua b/script/c511002993.lua new file mode 100644 index 00000000..3b54b068 --- /dev/null +++ b/script/c511002993.lua @@ -0,0 +1,43 @@ +--氷結界の龍 ブリューナク +function c511002993.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(50321796,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511002993.cost) + e1:SetTarget(c511002993.target) + e1:SetOperation(c511002993.operation) + c:RegisterEffect(e1) +end +function c511002993.costfilter(c) + return c:IsDiscardable() and c:IsAbleToGraveAsCost() +end +function c511002993.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002993.costfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + local rt=Duel.GetTargetCount(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local cg=Duel.SelectMatchingCard(tp,c511002993.costfilter,tp,LOCATION_HAND,0,1,rt,nil) + Duel.SendtoGrave(cg,REASON_COST+REASON_DISCARD) + e:SetLabel(cg:GetCount()) +end +function c511002993.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local ct=e:GetLabel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local eg=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,ct,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,eg,ct,0,0) +end +function c511002993.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local rg=tg:Filter(Card.IsRelateToEffect,nil,e) + if rg:GetCount()>0 then + Duel.SendtoHand(rg,nil,REASON_EFFECT) + end +end diff --git a/script/c511002994.lua b/script/c511002994.lua new file mode 100644 index 00000000..5b0710ed --- /dev/null +++ b/script/c511002994.lua @@ -0,0 +1,35 @@ +--ゴヨウ・ガーディアン +function c511002994.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7391448,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCondition(c511002994.spcon) + e1:SetTarget(c511002994.sptg) + e1:SetOperation(c511002994.spop) + c:RegisterEffect(e1) +end +function c511002994.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not c:IsRelateToBattle() or c:IsFacedown() then return false end + return bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c511002994.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) +end +function c511002994.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511002995.lua b/script/c511002995.lua new file mode 100644 index 00000000..30ae6574 --- /dev/null +++ b/script/c511002995.lua @@ -0,0 +1,33 @@ +--洗脳-ブレインコントロール +function c511002995.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511002995.cost) + e1:SetTarget(c511002995.target) + e1:SetOperation(c511002995.activate) + c:RegisterEffect(e1) +end +function c511002995.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c511002995.filter(c) + return c:IsControlerCanBeChanged() and c:IsFaceup() +end +function c511002995.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511002995.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511002995.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511002995.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511002995.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c511002996.lua b/script/c511002996.lua new file mode 100644 index 00000000..05479885 --- /dev/null +++ b/script/c511002996.lua @@ -0,0 +1,52 @@ +--王宮の勅命 +function c511002996.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e2:SetTarget(c511002996.distg) + c:RegisterEffect(e2) + --disable effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511002996.disop) + c:RegisterEffect(e3) + --maintain + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c511002996.mtcon) + e4:SetOperation(c511002996.mtop) + c:RegisterEffect(e4) +end +function c511002996.distg(e,c) + return c~=e:GetHandler() and c:IsType(TYPE_SPELL) +end +function c511002996.disop(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if tl==LOCATION_SZONE and re:IsActiveType(TYPE_SPELL) then + Duel.NegateEffect(ev) + end +end +function c511002996.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511002996.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,700) and Duel.SelectYesNo(tp,aux.Stringid(61740673,0)) then + Duel.PayLPCost(tp,700) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c511002997.lua b/script/c511002997.lua new file mode 100644 index 00000000..3254bcd5 --- /dev/null +++ b/script/c511002997.lua @@ -0,0 +1,110 @@ +--未来融合-フューチャー・フュージョン +function c511002997.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002997.target) + e1:SetOperation(c511002997.activate) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511002997.desop) + c:RegisterEffect(e2) + --Destroy2 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c511002997.descon2) + e3:SetOperation(c511002997.desop2) + c:RegisterEffect(e3) +end +function c511002997.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) +end +function c511002997.filter2(c,m) + return c:IsType(TYPE_FUSION) and c:CheckFusionMaterial(m) and not c:IsForbidden() +end +function c511002997.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetMatchingGroup(c511002997.filter1,tp,LOCATION_DECK,0,nil,e) + return Duel.IsExistingMatchingCard(c511002997.filter2,tp,LOCATION_EXTRA,0,1,nil,mg) + end + e:GetHandler():SetTurnCounter(0) +end +function c511002997.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local mg=Duel.GetMatchingGroup(c511002997.filter1,tp,LOCATION_DECK,0,nil,e) + local sg=Duel.GetMatchingGroup(c511002997.filter2,tp,LOCATION_EXTRA,0,nil,mg) + if sg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + Duel.ConfirmCards(1-tp,tc) + local code=tc:GetCode() + local mat=Duel.SelectFusionMaterial(tp,tc,mg) + local fg=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_EXTRA,0,nil,code) + local tc=fg:GetFirst() + while tc do + tc:SetMaterial(mat) + tc=fg:GetNext() + end + Duel.SendtoGrave(mat,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511002997.proccon) + e1:SetOperation(c511002997.procop) + e1:SetLabel(code) + e1:SetLabelObject(e) + c:RegisterEffect(e1) + end +end +function c511002997.procfilter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c511002997.proccon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511002997.procop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==2 then + local code=e:GetLabel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c511002997.procfilter,tp,LOCATION_EXTRA,0,1,1,nil,code,e,tp):GetFirst() + if not tc then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then + Duel.SendtoGrave(tc,REASON_EFFECT) + tc:CompleteProcedure() + else + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + c:SetCardTarget(tc) + end + end +end +function c511002997.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511002997.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c511002997.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511002998.lua b/script/c511002998.lua new file mode 100644 index 00000000..041e7500 --- /dev/null +++ b/script/c511002998.lua @@ -0,0 +1,108 @@ +--王家の眠る谷-ネクロバレー +function c511002998.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk&Def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x2e)) + e2:SetValue(500) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --cannot remove + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_REMOVE) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(LOCATION_GRAVE,0) + e4:SetCondition(c511002998.contp) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetTargetRange(0,LOCATION_GRAVE) + e5:SetCondition(c511002998.conntp) + c:RegisterEffect(e5) + --necro valley + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetCode(EFFECT_NECRO_VALLEY) + e6:SetRange(LOCATION_FZONE) + e6:SetTargetRange(LOCATION_GRAVE,0) + e6:SetCondition(c511002998.contp) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetTargetRange(0,LOCATION_GRAVE) + e7:SetCondition(c511002998.conntp) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD) + e8:SetCode(EFFECT_NECRO_VALLEY) + e8:SetRange(LOCATION_FZONE) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetTargetRange(1,0) + e8:SetCondition(c511002998.contp) + c:RegisterEffect(e8) + local e9=e8:Clone() + e9:SetTargetRange(0,1) + e9:SetCondition(c511002998.conntp) + c:RegisterEffect(e9) + --disable + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e10:SetCode(EVENT_CHAIN_SOLVING) + e10:SetRange(LOCATION_FZONE) + e10:SetOperation(c511002998.disop) + c:RegisterEffect(e10) +end +function c511002998.contp(e) + return not Duel.IsPlayerAffectedByEffect(e:GetHandler():GetControler(),EFFECT_NECRO_VALLEY_IM) +end +function c511002998.conntp(e) + return not Duel.IsPlayerAffectedByEffect(1-e:GetHandler():GetControler(),EFFECT_NECRO_VALLEY_IM) +end +function c511002998.disfilter(c,im0,im1) + if c:IsControler(0) then return im0 and c:IsHasEffect(EFFECT_NECRO_VALLEY) + else return im1 and c:IsHasEffect(EFFECT_NECRO_VALLEY) end +end +function c511002998.discheck(ev,category,re,im0,im1,targets) + local ex,tg,ct,p,v=Duel.GetOperationInfo(ev,category) + if not ex then return false end + if v==LOCATION_GRAVE then + if p==0 then return im0 + elseif p==1 then return im1 + elseif p==PLAYER_ALL then return im0 and im1 + end + end + if tg and tg:GetCount()>0 then + if targets and targets:IsContains(re:GetHandler()) then + return tg:IsExists(c511002998.disfilter,1,nil,im0,im1) + else + return tg:IsExists(c511002998.disfilter,1,re:GetHandler(),im0,im1) + end + end + return false +end +function c511002998.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=re:GetHandler() + if not Duel.IsChainDisablable(ev) or tc:IsHasEffect(EFFECT_NECRO_VALLEY_IM) then return end + local res=false + local targets=nil + if re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then + targets=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + end + local im0=not Duel.IsPlayerAffectedByEffect(0,EFFECT_NECRO_VALLEY_IM) + local im1=not Duel.IsPlayerAffectedByEffect(1,EFFECT_NECRO_VALLEY_IM) + if not res and c511002998.discheck(ev,CATEGORY_SPECIAL_SUMMON,re,im0,im1,targets) then res=true end + if not res and c511002998.discheck(ev,CATEGORY_REMOVE,re,im0,im1,targets) then res=true end + if not res and c511002998.discheck(ev,CATEGORY_TOHAND,re,im0,im1,targets) then res=true end + if not res and c511002998.discheck(ev,CATEGORY_TODECK,re,im0,im1,targets) then res=true end + if not res and c511002998.discheck(ev,CATEGORY_LEAVE_GRAVE,re,im0,im1,targets) then res=true end + if res then Duel.NegateEffect(ev) end +end diff --git a/script/c511004000.lua b/script/c511004000.lua new file mode 100644 index 00000000..4b22aecb --- /dev/null +++ b/script/c511004000.lua @@ -0,0 +1,99 @@ +--Destiny Draw +--Scripted by Edo9300 +function c511004000.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(0xff) + e1:SetCondition(c511004000.con) + e1:SetOperation(c511004000.op) + c:RegisterEffect(e1) + --Destiny Draw + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_REMOVED) + e2:SetCountLimit(1,511004000+EFFECT_COUNT_CODE_DUEL) + e2:SetCondition(c511004000.drcon) + e2:SetTarget(c511004000.drtg) + e2:SetOperation(c511004000.drop) + c:RegisterEffect(e2) + --protection + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_TO_DECK) + c:RegisterEffect(e5) + local e6=e3:Clone() + e6:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + c:RegisterEffect(e6) +end +function c511004000.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==1 +end +function c511004000.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_REMOVED,0,1,nil,511004000) then + Duel.DisableShuffleCheck() + Duel.SendtoDeck(c,nil,-2,REASON_RULE) + else + Duel.Remove(c,POS_FACEUP,REASON_RULE) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end +function c511004000.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=Duel.GetLP(1-tp)/2 and Duel.GetFieldGroupCount(e:GetHandler():GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(e:GetHandler():GetControler(),0,LOCATION_MZONE)>0 +end +function c511004000.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetTurnPlayer()~=tp then return end + if chk==0 then return true end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end +end +function c511004000.drop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + _replace_count=_replace_count+1 + if _replace_count>_replace_max or not c:IsRelateToEffect(e) then return end + local g1=Duel.GetMatchingGroup(nil,tp,LOCATION_DECK,0,nil) + if g1:GetCount()>5 then + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_DECK,0,5,5,nil) + while g:GetCount()>0 do + local sg=g:RandomSelect(tp,1):GetFirst() + Duel.MoveSequence(sg,0) + g:RemoveCard(sg) + end + Duel.Draw(tp,1,REASON_RULE) + Duel.ShuffleDeck(tp) + else + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.MoveSequence(g:GetFirst(),0) + Duel.Draw(tp,1,REASON_RULE) + Duel.ShuffleDeck(tp) + end +end +end \ No newline at end of file diff --git a/script/c511004001.lua b/script/c511004001.lua new file mode 100644 index 00000000..54672a1a --- /dev/null +++ b/script/c511004001.lua @@ -0,0 +1,82 @@ +--Speed Duel +--Scripted by Edo9300 +function c511004001.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(0xff) + e1:SetCondition(c511004001.con) + e1:SetOperation(c511004001.op) + c:RegisterEffect(e1) + --protection + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_TO_DECK) + c:RegisterEffect(e5) + local e6=e3:Clone() + e6:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + c:RegisterEffect(e6) +end +function c511004001.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==1 +end +function c511004001.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_REMOVED,0,1,nil,511004001) then + Duel.DisableShuffleCheck() + Duel.SendtoDeck(c,nil,-2,REASON_RULE) + else + Duel.Remove(c,POS_FACEUP,REASON_RULE) + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,LOCATION_HAND) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + local g1=Duel.GetMatchingGroup(nil,tp,LOCATION_DECK,0,nil) + if g1:GetCount()>20 then + local tg1=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_DECK,0,g1:GetCount()-20,g1:GetCount()-20,nil) + Duel.SendtoDeck(tg1,nil,-2,REASON_RULE) + end + local g2=Duel.GetMatchingGroup(nil,1-tp,LOCATION_DECK,0,nil) + if g2:GetCount()>20 then + local tg2=Duel.SelectMatchingCard(1-tp,nil,1-tp,LOCATION_DECK,0,g2:GetCount()-20,g2:GetCount()-20,nil) + Duel.SendtoDeck(tg2,nil,-2,REASON_RULE) + end + local g3=Duel.GetMatchingGroup(nil,tp,LOCATION_EXTRA,0,nil) + if g3:GetCount()>5 then + local tg3=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_EXTRA,0,g3:GetCount()-5,g3:GetCount(),nil) + Duel.SendtoDeck(tg3,nil,-2,REASON_RULE) + end + local g4=Duel.GetMatchingGroup(nil,1-tp,LOCATION_EXTRA,0,nil) + if g4:GetCount()>5 then + local tg4=Duel.SelectMatchingCard(1-tp,nil,1-tp,LOCATION_EXTRA,0,g4:GetCount()-5,g4:GetCount(),nil) + Duel.SendtoDeck(tg4,nil,-2,REASON_RULE) + end + Duel.ShuffleDeck(tp) + Duel.ShuffleDeck(1-tp) + Duel.BreakEffect() + Duel.Draw(tp,4,REASON_RULE) + Duel.Draw(1-tp,4,REASON_RULE) + local seq=-4 + while seq~=28 do + seq=seq+4 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetLabel(seq) + e1:SetOperation(c511004001.disop) + e1:SetReset(0) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511004001.disop(e,tp) + return bit.lshift(0x1,e:GetLabel()) +end \ No newline at end of file diff --git a/script/c511004002.lua b/script/c511004002.lua new file mode 100644 index 00000000..da2c349e --- /dev/null +++ b/script/c511004002.lua @@ -0,0 +1,39 @@ +--Mirror Force (anime) +--Scripted by edo9300 +function c511004002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511004002.condition) + e1:SetTarget(c511004002.target) + e1:SetOperation(c511004002.activate) + c:RegisterEffect(e1) +end +function c511004002.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511004002.filter(c,atk) + return c:IsAttackPos() and c:GetAttack()<=atk +end +function c511004002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511004002.filter,tp,0,LOCATION_MZONE,1,nil,Duel.GetAttacker():GetAttack()) end + local g=Duel.GetMatchingGroup(c511004002.filter,tp,0,LOCATION_MZONE,nil,Duel.GetAttacker():GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511004002.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511004002.filter,tp,0,LOCATION_MZONE,nil,Duel.GetAttacker():GetAttack()) + local a=Duel.GetAttacker() + g:RemoveCard(a) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.HintSelection(Group.FromCards(tc)) + Duel.Damage(1-tp,a:GetAttack()-tc:GetAttack(),REASON_EFFECT) + Duel.Destroy(tc,REASON_EFFECT) + tc=g:GetNext() + end + end + Duel.Destroy(a,REASON_EFFECT) +end diff --git a/script/c511004003.lua b/script/c511004003.lua new file mode 100644 index 00000000..31ef3831 --- /dev/null +++ b/script/c511004003.lua @@ -0,0 +1,114 @@ +--Deja vu +--Scripted by edo9300 +function c511004003.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511004003.target) + e1:SetOperation(c511004003.activate) + c:RegisterEffect(e1) + if not c511004003.global_check then + c511004003.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_PHASE+PHASE_END) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + ge1:SetOperation(c511004003.chkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCondition(c511004003.con) + ge2:SetCode(EVENT_PHASE+PHASE_DRAW) + Duel.RegisterEffect(ge2,0) + end +end +function c511004003.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511004003.fil2,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) or Duel.IsExistingMatchingCard(c511004003.fil,tp,0xff,0xff,1,nil) end +end +function c511004003.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511004003.fil2,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + loc=tc:GetFlagEffectLabel(511004003-3) + if loc==1 then + Duel.SendtoDeck(tc,tc:GetFlagEffectLabel(511004003-1),2,REASON_EFFECT) + elseif loc==2 then + Duel.SendtoHand(tc,tc:GetFlagEffectLabel(511004003-1),REASON_EFFECT) + elseif loc==4 or loc==8 then + if not Duel.MoveToField(tc,tp,tc:GetFlagEffectLabel(511004003-1),loc,tc:GetFlagEffectLabel(511004003-2),true) then + Duel.ChangePosition(tc,tc:GetFlagEffectLabel(511004003-2)) + end + elseif loc==10 then + Duel.SendtoGrave(tc,REASON_EFFECT) + elseif loc==20 then + Duel.Remove(tc,tc:GetFlagEffectLabel(511004003-2),REASON_EFFECT) + elseif loc==64 then + Duel.SendtoDeck(tc,tc:GetFlagEffectLabel(511004003-1),2,REASON_EFFECT) + elseif loc==100 then + Duel.SendtoExtraP(tc,tc:GetFlagEffectLabel(511004003-1),REASON_EFFECT) + end + if tc:GetSequence()~=tc:GetFlagEffectLabel(511004003) then + Duel.MoveSequence(tc,tc:GetFlagEffectLabel(511004003)) + end + tc=g:GetNext() + end + end + local g=Duel.GetMatchingGroup(c511004003.fil,tp,0xff,0xff,nil) + local g1=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + if g1:GetCount()>0 then + local tc=g1:GetFirst() + while tc do + local seq=tc:GetSequence() + g=g:Filter(c511004003.fil3,nil,seq) + tc=g1:GetNext() + end + end + if g:GetCount()>0 then + local tc1=g:GetFirst() + while tc1 do + Duel.SpecialSummonStep(tc1,0,tc1:GetFlagEffectLabel(511004003-1),tc1:GetFlagEffectLabel(511004003-1),true,true,tc1:GetFlagEffectLabel(511004003-2)) + if tc1:GetSequence()~=tc1:GetFlagEffectLabel(511004003) then + Duel.MoveSequence(tc1,tc1:GetFlagEffectLabel(511004003)) + end + tc1=g:GetNext() + end + Duel.SpecialSummonComplete() + end + end +end +function c511004003.fil(c) + return c:GetFlagEffectLabel(511004003-3)==LOCATION_MZONE and not c:IsLocation(LOCATION_MZONE) +end +function c511004003.fil2(c) + return c:GetFlagEffectLabel(511004003-3)~=c:GetLocation() or c:GetFlagEffectLabel(511004003-2)~=c:GetPosition() or c:GetFlagEffectLabel(511004003-1)~=c:GetControler() +end +function c511004003.fil3(c,seq) + return c:GetFlagEffectLabel(511004003)~=seq +end +function c511004003.chkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,0xff,0xff,nil) + local tc=g:GetFirst() + while tc do + tc:ResetFlagEffect(511004003-3) + tc:ResetFlagEffect(511004003-2) + tc:ResetFlagEffect(511004003-1) + tc:ResetFlagEffect(511004003) + if tc:IsLocation(LOCATION_EXTRA) and tc:IsFaceup() and tc:IsType(TYPE_PENDULUM) then + tc:RegisterFlagEffect(511004003-3,0,0,1,100) + else + tc:RegisterFlagEffect(511004003-3,0,0,1,tc:GetLocation()) + end + tc:RegisterFlagEffect(511004003-2,0,0,1,tc:GetPosition()) + tc:RegisterFlagEffect(511004003-1,0,0,1,tc:GetControler()) + tc:RegisterFlagEffect(511004003,0,0,1,tc:GetSequence()) + tc=g:GetNext() + end +end +function c511004003.con(e,tp,eg,ep,ev,re,r,rp,chk) + return Duel.GetTurnCount()==1 +end diff --git a/script/c511004004.lua b/script/c511004004.lua new file mode 100644 index 00000000..76bb51ea --- /dev/null +++ b/script/c511004004.lua @@ -0,0 +1,115 @@ +--Dimension Magic +--Scripted by Edo9300 +function c511004004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetCondition(c511004004.condition) + e1:SetTarget(c511004004.target) + e1:SetOperation(c511004004.activate) + c:RegisterEffect(e1) +end +function c511004004.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c511004004.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511004004.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511004004.filter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511004004.rfilter(c,fid) + return c:IsReleasableByEffect() and c:GetFieldID()~=fid +end +function c511004004.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetMatchingGroup(c511004004.cfilter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + if Duel.CheckReleaseGroup(tp,Card.IsReleasableByEffect,2,tc) then + ch=1 + tc=nil + else + ch=0 + tc=g:GetNext() + end + end + end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and ch==1 + and Duel.IsExistingMatchingCard(c511004004.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + local g1=Duel.GetMatchingGroup(c511004004.cfilter,tp,LOCATION_MZONE,0,nil) + local ct=g1:GetCount() + if ct>2 then + g=Duel.SelectReleaseGroup(tp,Card.IsReleasableByEffect,2,2,nil) + elseif ct==1 then + g=Duel.SelectReleaseGroup(tp,Card.IsReleasableByEffect,2,2,g1:GetFirst()) + elseif ct==2 then + g=Duel.SelectReleaseGroup(tp,Card.IsReleasableByEffect,1,1,nil) + g1=Duel.GetMatchingGroup(c511004004.cfilter,tp,LOCATION_MZONE,0,g:GetFirst()) + if g1:GetCount()==2 then + g:AddCard(Duel.SelectReleaseGroup(tp,Card.IsReleasableByEffect,1,1,g:GetFirst()):GetFirst()) + else + g:AddCard(Duel.SelectReleaseGroup(tp,c511004004.rfilter,1,1,g:GetFirst(),g1:GetFirst():GetFieldID()):GetFirst()) + end + end + e:SetLabelObject(g) + g:KeepAlive() + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511004004.activate(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if g:GetCount()==2 then + if Duel.Release(g,REASON_EFFECT)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c511004004.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if sg:GetCount()==0 then return end + Duel.BreakEffect() + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + if Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_MZONE,0,2,nil,RACE_SPELLCASTER) + and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) then + local sg=Duel.SelectMatchingCard(tp,Card.IsRace,tp,LOCATION_MZONE,0,2,2,nil,RACE_SPELLCASTER) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + local fid=e:GetHandler():GetFieldID() + sg:GetFirst():RegisterFlagEffect(511004004,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + sg:GetNext():RegisterFlagEffect(511004004,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + sg:KeepAlive() + Duel.HintSelection(sg) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(sg) + e1:SetCondition(c511004004.rmcon) + e1:SetOperation(c511004004.rmop) + Duel.RegisterEffect(e1,tp) + Duel.HintSelection(dg) + Duel.BreakEffect() + Duel.Destroy(dg,REASON_BATTLE) + end + end +end + +function c511004004.rmfilter(c,fid) + return c:GetFlagEffectLabel(511004004)==fid +end +function c511004004.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511004004.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511004004.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511004004.rmfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c511004005.lua b/script/c511004005.lua new file mode 100644 index 00000000..5f0d4f08 --- /dev/null +++ b/script/c511004005.lua @@ -0,0 +1,92 @@ +--Dark Necrofear (Anime) +--Scripted by Edo9300 +function c511004005.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e0) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511004005.spcon) + e1:SetOperation(c511004005.spop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c511004005.condition) + e2:SetTarget(c511004005.target) + e2:SetOperation(c511004005.operation) + c:RegisterEffect(e2) +end +function c511004005.spfilter(c) + return c:IsRace(RACE_FIEND) and c:IsAbleToRemoveAsCost() +end +function c511004005.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511004005.spfilter,tp,LOCATION_GRAVE,0,3,nil) +end +function c511004005.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511004005.spfilter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511004005.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511004005.filter(c) + return c:IsCode(16625614) +end +function c511004005.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingMatchingCard(c511004005.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil) + and Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_SZONE,5) end +end +function c511004005.cfilter(c) + return c:IsFaceup() and c:IsControlerCanBeChanged() +end +function c511004005.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_SZONE,5) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c511004005.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + local cost=te:GetCost() + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + tc=Duel.SelectTarget(tp,c511004005.cfilter,tp,0,LOCATION_MZONE,1,1,nil):GetFirst() + if not tc or Duel.GetLocationCount(e:GetHandlerPlayer(),LOCATION_SZONE)<=0 then return end + Duel.Equip(tp,e:GetHandler(),tc) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511004005.eqlimit) + e:GetHandler():RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_CONTROL) + e2:SetValue(tp) + e2:SetReset(RESET_EVENT+0x1fc0000) + e:GetHandler():RegisterEffect(e2) + end +end +function c511004005.eqlimit(e,c) + return e:GetOwner()==c +end diff --git a/script/c511004006.lua b/script/c511004006.lua new file mode 100644 index 00000000..8f180986 --- /dev/null +++ b/script/c511004006.lua @@ -0,0 +1,110 @@ +--Dark Necrofear (Manga) +--Scripted by Edo9300 +function c511004006.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511004006.spcon) + e1:SetOperation(c511004006.spop) + c:RegisterEffect(e1) + --possess + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511004006.con) + e2:SetOperation(c511004006.op) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + e3:SetRange(LOCATION_GRAVE) + e3:SetOperation(c511004006.op2) + c:RegisterEffect(e3) + --Gain and Damage + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE+CATEGORY_RECOVER) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetRange(LOCATION_GRAVE) + e4:SetCondition(c511004006.dmcon) + e4:SetTarget(c511004006.dmtg) + e4:SetOperation(c511004006.dmop) + c:RegisterEffect(e4) + if not c511004006.global_check then + c511004006.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(c511004006.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511004006.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:GetFlagEffect(511004006)==0 and tc:IsType(TYPE_MONSTER) and (tc:GetPreviousPosition()==POS_FACEUP_ATTACK or tc:GetPreviousPosition()==POS_ATTACK) then + tc:RegisterFlagEffect(511004006+1,RESET_PHASE+PHASE_END,0,5) + end + tc=eg:GetNext() + end +end +function c511004006.spfilter(c) + return c:GetFlagEffect(511004006+1)>0 and c:IsAbleToRemoveAsCost() +end +function c511004006.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511004006.spfilter,tp,LOCATION_GRAVE,0,3,nil) +end +function c511004006.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511004006.spfilter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511004006.con(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + return e:GetHandler():GetLocation()==LOCATION_GRAVE +end +function c511004006.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(511004006+2,0,0,1) + if Duel.GetCurrentPhase()>=8 and Duel.GetCurrentPhase()<=20 and Duel.GetTurnPlayer()~=tp then + local tc=Duel.SelectMatchingCard(c:GetOwner(),nil,c:GetOwner(),0,LOCATION_MZONE,1,1,nil):GetFirst() + if tc then + tc:RegisterFlagEffect(511004006,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + end +end +function c511004006.op2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(511004006+2)>0 and Duel.GetTurnPlayer()~=tp then + local tc=Duel.SelectMatchingCard(c:GetOwner(),nil,c:GetOwner(),0,LOCATION_MZONE,1,1,nil):GetFirst() + if tc then + tc:RegisterFlagEffect(511004006,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + end +end +function c511004006.dmcon(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + return Duel.GetAttacker():GetFlagEffect(511004006)>0 and Duel.GetAttacker():GetControler()~=tp +end +function c511004006.dmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local c=Duel.GetAttacker() + local dam=c:GetAttack()/2 + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511004006.dmop(e,tp,eg,ep,ev,re,r,rp) + local c=Duel.GetAttacker() + local dam=c:GetAttack()/2 + if Duel.NegateAttack() then + Duel.Recover(tp,dam,REASON_EFFECT) + Duel.Damage(1-tp,dam,REASON_EFFECT) + end +end diff --git a/script/c511004008.lua b/script/c511004008.lua new file mode 100644 index 00000000..5cf518d7 --- /dev/null +++ b/script/c511004008.lua @@ -0,0 +1,61 @@ +--Spiritual Fusion +--Scripted by Edo9300 +function c511004008.initial_effect(c) + local fsel=Duel.SelectFusionMaterial + Duel.SelectFusionMaterial=function(tp,c,g,gc,chkf) + if c:IsCode(511000990) then + if g:IsExists(c511000990.sameplayerchk,1,nil,tp) then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_SZONE,0,nil) + g:Merge(mg1) + end + if g:IsExists(c511000990.sameplayerchk,1,nil,1-tp) then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_SZONE,0,nil) + local mg2=Duel.GetMatchingGroup(c511000990.mat2,tp,0,LOCATION_SZONE,nil) + g:Merge(mg1) + g:Merge(mg2) + end + end + if Duel.IsPlayerAffectedByEffect(1-tp,5000) and Duel.SelectYesNo(1-tp,aux.Stringid(4002,8)) then + Duel.ConfirmCards(1-tp,g) + local label=0 + if g:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) or (gc and gc:IsLocation(LOCATION_HAND)) then label=label+1 end + if g:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) or (gc and gc:IsLocation(LOCATION_DECK)) then label=label+2 end + Duel.RegisterFlagEffect(1-tp,511004008+label,0,0,1) + return fsel(1-tp,c,g,gc,chkf) + end + return fsel(tp,c,g,gc,chkf) + end + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511004008.activate) + c:RegisterEffect(e1) +end +function c511004008.op(e) + local tp=e:GetLabel() + if Duel.GetFlagEffect(tp,511004009)>0 or Duel.GetFlagEffect(tp,511004011)>0 then + Duel.ShuffleHand(1-tp) end + if Duel.GetFlagEffect(tp,511004010)>0 or Duel.GetFlagEffect(tp,511004011)>0 then + Duel.ShuffleDeck(1-tp) end + Duel.ResetFlagEffect(tp,511004008) + Duel.ResetFlagEffect(tp,511004009) + Duel.ResetFlagEffect(tp,511004010) + Duel.ResetFlagEffect(tp,511004011) +end +function c511004008.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(5000) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END,1) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,e:GetHandlerPlayer()) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetLabel(tp) + e2:SetOperation(c511004008.op) + e2:SetReset(RESET_PHASE+PHASE_END,1) + Duel.RegisterEffect(e2,e:GetHandlerPlayer()) +end diff --git a/script/c511004014.lua b/script/c511004014.lua new file mode 100644 index 00000000..3c6e0401 --- /dev/null +++ b/script/c511004014.lua @@ -0,0 +1,273 @@ +--Battle City +--Scripted by Edo9300 +function c511004014.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(0xff) + e1:SetCondition(c511004014.con) + e1:SetOperation(c511004014.op) + c:RegisterEffect(e1) + --Double Tribute + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_REMOVED) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_DOUBLE_TRIBUTE) + e2:SetTarget(function(e,c)return c:GetSummonLocation()==LOCATION_EXTRA and c:GetMaterialCount()==2 end) + e2:SetValue(1) + c:RegisterEffect(e2) + --Triple Tribute + local e2a=Effect.CreateEffect(c) + e2a:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e2a:SetType(EFFECT_TYPE_FIELD) + e2a:SetRange(LOCATION_REMOVED) + e2a:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2a:SetCode(EFFECT_TRIPLE_TRIBUTE) + e2a:SetTarget(function(e,c)return c:GetSummonLocation()==LOCATION_EXTRA and c:GetMaterialCount()>=3 end) + e2a:SetValue(1) + c:RegisterEffect(e2a) + --faceup def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_REMOVED) + e3:SetCode(EFFECT_DEVINE_LIGHT) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetTargetRange(1,1) + c:RegisterEffect(e3) + --summon with 3 tribute + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e4:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e4:SetRange(LOCATION_REMOVED) + e4:SetTargetRange(0xff,0xff) + e4:SetTarget(function(e,c)return c:GetLevel()>=10 and not c:IsHasEffect(EFFECT_LIMIT_SUMMON_PROC) end) + e4:SetCondition(c511004014.ttcon) + e4:SetOperation(c511004014.ttop) + e4:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetTarget(function(e,c)return c:GetLevel()>=10 and not c:IsHasEffect(EFFECT_LIMIT_SET_PROC) end) + e5:SetCode(EFFECT_LIMIT_SET_PROC) + c:RegisterEffect(e5) + --Cannot Attack + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetCode(EFFECT_CANNOT_ATTACK) + e6:SetRange(LOCATION_REMOVED) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e6:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e6:SetTarget(function(e,c)return c:IsStatus(STATUS_SPSUMMON_TURN) and c:GetFlagEffect(511004016)==0 end) + c:RegisterEffect(e6) + --Quick + local e7=Effect.CreateEffect(c) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_ADJUST) + e7:SetRange(LOCATION_REMOVED) + e7:SetOperation(c511004014.operation) + c:RegisterEffect(e7) + --Negate + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e8:SetCode(EVENT_CHAIN_SOLVING) + e8:SetRange(LOCATION_REMOVED) + e8:SetOperation(c511004014.negop) + c:RegisterEffect(e8) + local e9=e8:Clone() + e9:SetCode(EVENT_DESTROYED) + e9:SetOperation(c511004014.negop2) + c:RegisterEffect(e9) + --To controler's grave + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e10:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e10:SetRange(LOCATION_REMOVED) + e10:SetCode(EVENT_ADJUST) + e10:SetOperation(c511004014.gvop) + c:RegisterEffect(e10) + --Attack + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e11:SetRange(LOCATION_REMOVED) + e11:SetCode(EVENT_LEAVE_FIELD) + e11:SetCondition(function(e,tp)ph=Duel.GetCurrentPhase()return ph>=PHASE_BATTLE_STEP and ph=3 +end +function c511004014.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,3,3) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c511004014.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==1 +end +function c511004014.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil,511004014) then + Duel.DisableShuffleCheck() + Duel.SendtoDeck(c,nil,-2,REASON_RULE) + else + Duel.Remove(c,POS_FACEUP,REASON_RULE) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND and Duel.IsPlayerCanDraw(e:GetHandlerPlayer(),1)then + Duel.Draw(tp,1,REASON_RULE) + end +end +function c511004014.negop(e,tp,eg,ep,ev,re,r,rp) + if re:GetHandler():GetFlagEffect(511000173)>0 and re:IsActiveType(TYPE_TRAP+TYPE_SPELL) then + Duel.NegateEffect(ev) + end +end +function c511004014.negop2(e,tp,eg,ep,ev,re,r,rp) + if eg:GetCount()==0 then return false end + local tc=eg:GetFirst() + while tc do + tc:RegisterFlagEffect(511000173,0,RESET_CHAIN,1) + tc=eg:GetNext() + end +end +function c511004014.spfilter(c) + local te=c:GetActivateEffect() + return te and c:GetFlagEffect(511000171)==0 + and c:IsType(TYPE_SPELL) and not c:IsType(TYPE_QUICKPLAY) +end +function c511004014.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511004014.spfilter,c:GetControler(),LOCATION_SZONE+LOCATION_HAND,LOCATION_SZONE+LOCATION_HAND,nil) + if g:GetCount()<=0 then return end + local tc=g:GetFirst() + while tc do + local te=tc:GetActivateEffect() + if tc:GetFlagEffect(511000171)==0 and te then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(te:GetCode()) + e1:SetRange(LOCATION_SZONE+LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetCondition(c511004014.accon) + e1:SetCost(c511004014.acco) + e1:SetTarget(c511004014.actg) + e1:SetOperation(c511004014.acop) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511000171,nil,0,1) + end + tc=g:GetNext() + end +end +function c511004014.accon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local c=e:GetHandler() + local te=c:GetActivateEffect() + local condition=te:GetCondition() + return (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) + and not e:GetHandler():IsStatus(STATUS_CHAINING) and ph>=0x08 and ph<=0x80 +end +function c511004014.acco(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local te=c:GetActivateEffect() + local cost=te:GetCost() + if cost then + if chk==0 then return (not cost or cost(e,tp,eg,ep,ev,re,r,rp,chk)) end + end + local con=false + if Duel.GetTurnPlayer()~=c:GetControler() then + con=not c:IsStatus(STATUS_SET_TURN) and c:IsFacedown() and not c:IsLocation(LOCATION_HAND) + else + if Duel.GetCurrentChain()>0 or not (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) then + if c:IsLocation(LOCATION_HAND) then + con=(Duel.GetLocationCount(tp,LOCATION_SZONE)>0 or c:IsType(TYPE_FIELD)) + elseif c:IsLocation(LOCATION_SZONE) then + con=not c:IsStatus(STATUS_SET_TURN) and c:IsFacedown() + end + end + end + local target=te:GetTarget() + local tpe=c:GetType() + if chk==0 then return con and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) end + e:SetCategory(te:GetCategory()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 and Duel.SendtoGrave(of,REASON_RULE)==0 then Duel.SendtoGrave(c,REASON_RULE) end + end + if c:IsLocation(LOCATION_ONFIELD) and c:IsFacedown() then + Duel.ChangePosition(c,POS_FACEUP) + else + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if cost then + return cost(e,tp,eg,ep,ev,re,r,rp,chk) + end +end +function c511004014.actg(e,tp,eg,ep,ev,re,r,rp,chk) + local te=e:GetHandler():GetActivateEffect() + local target=te:GetTarget() + if chk==0 then return (not target or target(e,tp,eg,ep,ev,re,r,rp,chk)) end + if te:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + else e:SetProperty(0) end + if target then target(e,tp,eg,ep,ev,re,r,rp,chk) end +end +function c511004014.acop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local te=c:GetActivateEffect() + local op=te:GetOperation() + local tpe=c:GetType() + if op then + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 and not c:IsHasEffect(EFFECT_REMAIN_FIELD) then + c:CancelToGrave(false) + end + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end +end +function c511004014.gvop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(function(c)return c:GetFlagEffect(511004014)==0 end,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_SEND_REPLACE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetTarget(c511004014.reptg) + e1:SetOperation(c511004014.repop) + e1:SetCondition(c511004014.repcon) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511004014,0,0,1) + tc=g:GetNext() + end + end +end +function c511004014.repcon(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + return c:GetControler()~=c:GetOwner() +end +function c511004014.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:GetFlagEffect(511004014)>0 and c:IsLocation(LOCATION_ONFIELD) end + return true +end +function c511004014.repop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:ResetFlagEffect(511004014) + if bit.band(r,REASON_DESTROY)~=0 then + c:RegisterFlagEffect(511000173,RESET_CHAIN,0,1) + end + Duel.SendtoGrave(e:GetHandler(),r,e:GetHandler():GetControler()) +end +function c511004014.repval(e,c) + return c:GetControler()~=c:GetOwner() and c:GetPreviousLocation()==LOCATION_ONFIELD and c:GetDestination()==LOCATION_GRAVE +end \ No newline at end of file diff --git a/script/c511004015.lua b/script/c511004015.lua new file mode 100644 index 00000000..f006cc1c --- /dev/null +++ b/script/c511004015.lua @@ -0,0 +1,129 @@ +--Catapult Turtle (Anime) +--Scripted by Edo9300 +function c511004015.initial_effect(c) + --Damage, S/T Destroy, Monster Destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511004015.cost) + c:RegisterEffect(e1) +end +function c511004015.cost(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) + or Duel.CheckReleaseGroup(tp,c511004015.filter2,1,nil,tp,e) end + local sel=0 + if Duel.CheckReleaseGroup(tp,nil,1,nil) then + if Duel.IsExistingTarget(c511004015.filter,tp,0,LOCATION_ONFIELD,1,e:GetHandler()) then + sel=sel+2 + else + sel=sel+1 + end + end + if Duel.CheckReleaseGroup(tp,c511004015.filter2,1,nil,tp,e) then + sel=sel+3 + end + local op=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(61587183,0)) + if sel==5 then + op=Duel.SelectOption(tp,aux.Stringid(95727991,0),aux.Stringid(24413299,2),aux.Stringid(131182,1)) + elseif sel==4 then + op=Duel.SelectOption(tp,aux.Stringid(95727991,0),aux.Stringid(131182,1)) + if op==1 then op=2 end + elseif sel==2 then + op=Duel.SelectOption(tp,aux.Stringid(95727991,0),aux.Stringid(24413299,2)) + elseif sel==3 then + Duel.SelectOption(tp,aux.Stringid(131182,1)) + op=2 + elseif sel==1 then + Duel.SelectOption(tp,aux.Stringid(95727991,0)) + op=0 + end + if op==0 or op==1 then + sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + elseif op==2 then + sg=Duel.SelectReleaseGroup(tp,c511004015.filter2,1,1,nil,tp,e) + end + if op==0 then + e:SetCategory(CATEGORY_DAMAGE) + e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e:SetTarget(c511004015.target) + e:SetOperation(c511004015.operation) + e:SetLabel(sg:GetFirst():GetAttack()/2) + elseif op==1 then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e:SetTarget(c511004015.target2) + e:SetOperation(c511004015.operation2) + e:SetLabelObject(sg:GetFirst()) + elseif op==2 then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e:SetTarget(c511004015.target3) + e:SetOperation(c511004015.operation3) + Duel.SetTargetCard(sg) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000) + sg:GetFirst():RegisterEffect(e1) + e:SetLabel(sg:GetFirst():GetAttack()) + end + Duel.Release(sg,REASON_COST) +end +function c511004015.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c511004015.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511004015.filter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsFaceup() +end +function c511004015.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(e:GetLabelObject():GetOwner()) + Duel.SetTargetParam(e:GetLabelObject():GetAttack()/2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511004015.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabelObject():GetAttack()/2) +end +function c511004015.operation2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(p,d,REASON_EFFECT) + end + end +end +function c511004015.filter2(c,tp,e) + return Duel.IsExistingTarget(c511004015.filter3,tp,0,LOCATION_MZONE,1,nil,c:GetAttack()+600) and c:IsReleasableByEffect() and c:IsCanBeEffectTarget(e) +end +function c511004015.filter3(c,atk) + return c:IsDestructable() and c:IsPosition(POS_FACEUP_DEFENSE) and c:GetDefense()=la) or (d==eqc and la>=ld) then + c511004100[0]=true + c511004100[1]=true + end +end +function c511004100.clear(e,tp,eg,ep,ev,re,r,rp) + c511004100[0]=false + c511004100[1]=false +end +function c511004100.eqfilter(c,ec,tp) + return c:IsOnField() and c:IsControler(tp) and c:GetEquipTarget()==ec +end +function c511004100.condition2(e,tp,eg,ep,ev,re,r,rp) + if e==re or e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(c511004100.eqfilter,nil)-tg:GetCount()==1 and Duel.IsChainNegatable(ev) +end +function c511004100.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end +function c511004100.operation2(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + e:GetHandler():RegisterFlagEffect(511004100,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) +end +function c511004100.con(e,tp,eg,ep,ev,re,r,rp) + return c511004100[tp] or e:GetHandler():GetFlagEffect(511004100)>0 +end +function c511004100.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local atk=e:GetHandler():GetEquipTarget():GetAttack() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c511004100.op(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511004101.lua b/script/c511004101.lua new file mode 100644 index 00000000..05432dba --- /dev/null +++ b/script/c511004101.lua @@ -0,0 +1,30 @@ +--Zombie Dog +--scripted by:urielkama +function c511004101.initial_effect(c) +--atk update +local e1=Effect.CreateEffect(c) +e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) +e1:SetDescription(aux.Stringid(511004101,0)) +e1:SetCategory(CATEGORY_ATKCHANGE) +e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) +e1:SetHintTiming(TIMING_DAMAGE_CAL) +e1:SetRange(LOCATION_MZONE) +e1:SetProperty(EFFECT_FLAG_DAMAGE_CAL) +e1:SetCondition(c511004101.condtion) +e1:SetOperation(c511004101.atop) +c:RegisterEffect(e1) +end +function c511004101.condtion(e) + local ph=Duel.GetCurrentPhase() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) + and Duel.GetAttacker()==e:GetHandler() and (Duel.GetAttackTarget()~=nil or Duel.GetAttackTarget()==nil) +end +function c511004101.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511004102.lua b/script/c511004102.lua new file mode 100644 index 00000000..2ceefc86 --- /dev/null +++ b/script/c511004102.lua @@ -0,0 +1,38 @@ +--Xyz Stun +--scripted by:urielkama +function c511004102.initial_effect(c) +--disable +local e1=Effect.CreateEffect(c) +e1:SetDescription(aux.Stringid(511004102,0)) +e1:SetProperty(EFFECT_FLAG_CARD_TARGET) +e1:SetCategory(CATEGORY_NEGATE) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetCode(EVENT_FREE_CHAIN) +e1:SetTarget(c511004102.target) +e1:SetOperation(c511004102.activate) +c:RegisterEffect(e1) +end +function c511004102.tgfilter(c) + return c:IsType(TYPE_XYZ) and c:IsFaceup() +end +function c511004102.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511004102.tgfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511004102.tgfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,g,1,0,0) +end +function c511004102.activate(e,tp,eg,ep,ev,re,r,rp) +local tc=Duel.GetFirstTarget() +if tc:IsRelateToEffect(e) then +local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c511004103.lua b/script/c511004103.lua new file mode 100644 index 00000000..fc51f9c7 --- /dev/null +++ b/script/c511004103.lua @@ -0,0 +1,71 @@ +--Xyz Reborn Plus +--scripted by: urielkama +--cleaned and fixed by MLD +function c511004103.initial_effect(c) + --special summon/attach + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511004103,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511004103.tg) + e1:SetOperation(c511004103.op) + c:RegisterEffect(e1) +end +function c511004103.spfilter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511004103.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.GetLocationCount(tp,LOCATION_MZONE,0)>0 + and Duel.IsExistingTarget(c511004103.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp)end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511004103.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,LOCATION_GRAVE) +end +function c511004103.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_MZONE,0)<=0 and not c:IsRelateToEffect(e) then return end + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + local e1=Effect.CreateEffect(tc) + e1:SetDescription(aux.Stringid(51960178,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCost(c511004103.drcost) + e1:SetTarget(c511004103.drtg) + e1:SetOperation(c511004103.drop) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabelObject(c) + tc:RegisterEffect(e1) + if not tc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + end + end + end +end +function c511004103.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and e:GetHandler():GetOverlayGroup():IsContains(tc) end + Duel.SendtoGrave(tc,REASON_COST) +end +function c511004103.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511004103.drop(e,tp,eg,ep,ev,re,r,rp,chk) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511004104.lua b/script/c511004104.lua new file mode 100644 index 00000000..be97f62e --- /dev/null +++ b/script/c511004104.lua @@ -0,0 +1,38 @@ +--Xyz Move +--scripted by:urielkama +function c511004104.initial_effect(c) +--change control and end battle phase +local e1=Effect.CreateEffect(c) +e1:SetDescription(aux.Stringid(511004104,0)) +e1:SetProperty(EFFECT_FLAG_CARD_TARGET) +e1:SetCategory(CATEGORY_CONTROL) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetCode(EVENT_FREE_CHAIN) +e1:SetCondition(c511004104.condition) +e1:SetTarget(c511004104.target) +e1:SetOperation(c511004104.activate) +c:RegisterEffect(e1) +end +function c511004104.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_BATTLE and Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_MZONE,0,1,nil,TYPE_XYZ) +end +function c511004104.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:IsAbleToChangeControler() and chkc:IsType(TYPE_XYZ) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_SKIP_BP) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsAbleToChangeControler,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511004104.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsControler(tp) and tc:IsAbleToChangeControler() and not tc:IsImmuneToEffect(e) then + Duel.GetControl(tc,1-tp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e1,tp) + end +end \ No newline at end of file diff --git a/script/c511004105.lua b/script/c511004105.lua new file mode 100644 index 00000000..b40baa78 --- /dev/null +++ b/script/c511004105.lua @@ -0,0 +1,35 @@ +-- Xyz Coat +--scripted by:urielkama +function c511004105.initial_effect(c) +--indes by effect and battle +local e1=Effect.CreateEffect(c) +e1:SetProperty(EFFECT_FLAG_CARD_TARGET) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetCode(EVENT_FREE_CHAIN) +e1:SetTarget(c511004105.target) +e1:SetOperation(c511004105.activate) +c:RegisterEffect(e1) +end +function c511004105.filter(c) + return c:IsType(TYPE_XYZ) and c:IsFaceup() +end +function c511004105.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511004105.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511004105.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511004105.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + 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+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c511004106.lua b/script/c511004106.lua new file mode 100644 index 00000000..066bf817 --- /dev/null +++ b/script/c511004106.lua @@ -0,0 +1,54 @@ +--Xyz Battle Chain +--scripted by:urielkama +function c511004106.initial_effect(c) +--activate +local e1=Effect.CreateEffect(c) +e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetCode(EVENT_CHAINING) +e1:SetCondition(c511004106.con) +e1:SetTarget(c511004106.tg) +e1:SetOperation(c511004106.op) +c:RegisterEffect(e1) +end +function c511004106.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511004106.cfilter(c) + return c:IsLocation(LOCATION_MZONE) and c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetEffectCount(EFFECT_CANNOT_ATTACK)==0 and c:GetEffectCount(EFFECT_CANNOT_ATTACK_ANNOUNCE)==0 and c:GetAttackedCount()==0 +end +function c511004106.con(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end + if not (re:IsActiveType(TYPE_SPELL) or re:IsActiveType(TYPE_TRAP)) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsExists(c511004106.cfilter,1,nil) and Duel.IsChainNegatable(ev) and Duel.IsExistingMatchingCard(c511004106.filter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(c511004106.filter,tp,0,LOCATION_MZONE,1,nil) +end +function c511004106.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511004106.filter,tp,LOCATION_MZONE,0,1,nil) and not Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_SKIP_M2) end + local g=Duel.SelectTarget(tp,c511004106.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511004106.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(eg,REASON_EFFECT)~=0 and Duel.GetTurnPlayer()~=tp and not (Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()==PHASE_BATTLE_START and Duel.GetCurrentPhase()==PHASE_BATTLE)) then + local g=Duel.GetMatchingGroup(c511004106.cfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + local sg=g:Select(Duel.GetTurnPlayer(),1,1,nil) + Duel.HintSelection(sg) + Duel.CalculateDamage(sg:GetFirst(),tc) + if tc:IsStatus(STATUS_BATTLE_DESTROYED) then + Duel.Destroy(tc,REASON_BATTLE) + end + else Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + end + end + end +end \ No newline at end of file diff --git a/script/c511004107.lua b/script/c511004107.lua new file mode 100644 index 00000000..2eabf7d6 --- /dev/null +++ b/script/c511004107.lua @@ -0,0 +1,5 @@ +--Bomb Token +--scripted by:urielkama +function c511004107.initial_effect(c) + +end \ No newline at end of file diff --git a/script/c511004108.lua b/script/c511004108.lua new file mode 100644 index 00000000..7b75a3a9 --- /dev/null +++ b/script/c511004108.lua @@ -0,0 +1,42 @@ +--Wonderbeat Elf +--scripted by:urielkama +function c511004108.initial_effect(c) +--must attack +local e1=Effect.CreateEffect(c) +e1:SetType(EFFECT_TYPE_SINGLE) +e1:SetCode(EFFECT_MUST_ATTACK) +e1:SetCondition(c511004108.facon) +c:RegisterEffect(e1) +--multiple attacks +local e2=Effect.CreateEffect(c) +e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) +e2:SetCode(EVENT_BATTLE_CONFIRM) +e2:SetOperation(c511004108.atop) +c:RegisterEffect(e2) +end +--OCG elf collection +c511004108.collection={ +[44663232]=true;[98582704]=true;[39897277]=true; +[93221206]=true;[97170107]=true;[85239662]=true; +[68625727]=true;[59983499]=true;[21417692]=true; +[69140098]=true;[42386471]=true;[61807040]=true; +[11613567]=true;[15025844]=true;[98299011]=true; +} +function c511004108.facon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c511004108.atfilter(c) + return c:IsFaceup() and (c511004108.collection[c:GetCode()] or c:IsSetCard(0xe4) or c:IsSetCard(0x405)) +end +function c511004108.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511004108.atfilter,tp,LOCATION_MZONE,0,nil) + local ct=g:GetCount() + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(ct) + c:RegisterEffect(e1) +end diff --git a/script/c511004109.lua b/script/c511004109.lua new file mode 100644 index 00000000..5a73ac73 --- /dev/null +++ b/script/c511004109.lua @@ -0,0 +1,24 @@ +--Wind of the Gods +--scripted by:urielkama +function c511004109.initial_effect(c) +--destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511004109.target) + e1:SetOperation(c511004109.activate) + c:RegisterEffect(e1) +end +function c511004109.filter(c) + return c:IsFaceup() and c:IsRace(RACE_ROCK) and c:IsDestructable() +end +function c511004109.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511004109.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511004109.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511004109.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511004109.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511004110.lua b/script/c511004110.lua new file mode 100644 index 00000000..f46f9541 --- /dev/null +++ b/script/c511004110.lua @@ -0,0 +1,33 @@ +--Water Barrier +--scripted by:urielkama +function c511004110.initial_effect(c) +--activate +local e1=Effect.CreateEffect(c) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetProperty(EFFECT_FLAG_CARD_TARGET) +e1:SetCode(EVENT_FREE_CHAIN) +e1:SetTarget(c511004110.target) +e1:SetOperation(c511004110.activate) +c:RegisterEffect(e1) +end +function c511004110.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511004110.target(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return Duel.IsExistingTarget(c511004110.filter,tp,LOCATION_MZONE,0,1,nil) end +local g=Duel.SelectTarget(tp,c511004110.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511004110.activate(e,tp,eg,ep,ev,re,r,rp) +local tc=Duel.GetFirstTarget() +if tc:IsFacedown() then return end +if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(aux.imval1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511004111.lua b/script/c511004111.lua new file mode 100644 index 00000000..271a4efd --- /dev/null +++ b/script/c511004111.lua @@ -0,0 +1,40 @@ +--Wasteland Tornado +--scripted by:urielkama +function c511004111.initial_effect(c) +--activate +local e1=Effect.CreateEffect(c) +e1:SetDescription(aux.Stringid(511004111,0)) +e1:SetCategory(CATEGORY_DESTROY) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetProperty(EFFECT_FLAG_CARD_TARGET) +e1:SetCode(EVENT_FREE_CHAIN) +e1:SetTarget(c511004111.target) +e1:SetOperation(c511004111.activate) +c:RegisterEffect(e1) +end +function c511004111.dessptfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511004111.setsptfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() +end +function c511004111.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +if chkc then return chkc:IsLocation(LOCATION_SZONE) and c511004111.dessptfilter(chkc) and chkc~=e:GetHandler() end +if chk==0 then return Duel.IsExistingTarget(c511004111.dessptfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end +Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) +local g=Duel.SelectTarget(tp,c511004111.dessptfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) +Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511004111.activate(e,tp,eg,ep,ev,re,r,rp) +local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + local dp=tc:GetControler() + local g=Duel.GetMatchingGroup(c511004111.setsptfilter,dp,LOCATION_HAND,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(dp,aux.Stringid(511004111,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,510) + local sg=g:Select(dp,1,1,nil) + Duel.SSet(dp,sg:GetFirst()) + end + end +end \ No newline at end of file diff --git a/script/c511004112.lua b/script/c511004112.lua new file mode 100644 index 00000000..16ce97e6 --- /dev/null +++ b/script/c511004112.lua @@ -0,0 +1,50 @@ +--Warrior Defense +--scripted by:urielkama +function c511004112.initial_effect(c) +--activate +local e1=Effect.CreateEffect(c) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetCode(EVENT_DESTROYED) +e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) +e1:SetCondition(c511004112.condition) +e1:SetTarget(c511004112.target) +e1:SetOperation(c511004112.activate) +c:RegisterEffect(e1) +end +function c511004112.cfilter(c,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp or c:GetPreviousControler()~=tp +end +function c511004112.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511004112.cfilter,1,nil,tp) +end +function c511004112.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsFaceup() +end +function c511004112.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +if chkc then return chkc:IsControler(1-tp) and c511004112.filter(chkc) end +if chk==0 then return Duel.IsExistingTarget(c511004112.filter,tp,0,LOCATION_MZONE,1,nil) end +local g=Duel.SelectTarget(tp,c511004112.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511004112.activate(e,tp,eg,ep,ev,re,r,rp) +local tc=Duel.GetFirstTarget() +local dtg=eg:GetFirst() +local atk=dtg:GetAttack() +if atk<0 then atk=0 return end +if tc:IsFacedown() then return end +if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) +end + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetValue(1) + Duel.RegisterEffect(e2,tp) +end \ No newline at end of file diff --git a/script/c511004113.lua b/script/c511004113.lua new file mode 100644 index 00000000..4e47ab4c --- /dev/null +++ b/script/c511004113.lua @@ -0,0 +1,60 @@ +--Voltage Summon +--scripted by:urielkama +function c511004113.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511004113.target) + e1:SetOperation(c511004113.activate) + c:RegisterEffect(e1) +end +function c511004113.filter(c) + return c:IsReleasableByEffect() and c:IsCode(511004125) +end +function c511004113.spfilter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511004113.target(e,tp,eg,ep,ev,re,r,rp,chk) + local sg=Duel.GetMatchingGroup(c511004113.filter,tp,LOCATION_MZONE,0,nil) + if chk==0 then return sg:GetCount()>0 and Duel.IsExistingMatchingCard(c511004113.spfilter,tp,LOCATION_DECK,0,sg:GetCount(),nil,e,tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511004113.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511004113.filter,tp,LOCATION_MZONE,0,nil) + if Duel.Release(sg,REASON_EFFECT)>0 then + sg=Duel.GetOperatedGroup() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511004113.spfilter,tp,LOCATION_DECK,0,sg:GetCount(),sg:GetCount(),nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_BASE_ATTACK) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_BASE_DEFENSE) + tc:RegisterEffect(e4) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end + end +end \ No newline at end of file diff --git a/script/c511004114.lua b/script/c511004114.lua new file mode 100644 index 00000000..261a618d --- /dev/null +++ b/script/c511004114.lua @@ -0,0 +1,91 @@ +--Volcanic Mine +--scripted by:urielkama +function c511004114.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:SetCost(c511004114.cost) +e1:SetTarget(c511004114.tg) +e1:SetOperation(c511004114.op) +c:RegisterEffect(e1) +end +function c511004114.cost(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetTarget(c511004114.negfilter) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c511004114.negfilter) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c511004114.negfilter(e,c) + return c:IsType(TYPE_MONSTER+TYPE_EFFECT) and (c:IsFaceup() or c:IsFacedown()) +end +function c511004114.tg(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(1-tp,511004107,0,0,1000,1000,1,RACE_PYRO,ATTRIBUTE_FIRE) end + local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ft,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ft,0,0) +end +function c511004114.op(e,tp,eg,ep,ev,re,r,rp) +local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft<=0 or not Duel.IsPlayerCanSpecialSummonMonster(1-tp,511004107,0,0,1000,1000,1,RACE_PYRO,ATTRIBUTE_FIRE) then return end + local fid=e:GetHandler():GetFieldID() + local g=Group.CreateGroup() + for i=1,ft do + local token=Duel.CreateToken(1-tp,511004107) + Duel.SpecialSummonStep(token,0,1-tp,1-tp,false,false,POS_FACEUP_DEFENSE) + token:RegisterFlagEffect(511004114,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + g:AddCard(token) + end + Duel.SpecialSummonComplete() + g:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c511004114.descon) + e1:SetOperation(c511004114.desop) + Duel.RegisterEffect(e1,tp) +end +function c511004114.desfilter(c,fid) + return c:GetFlagEffectLabel(511004114)==fid +end +function c511004114.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511004114.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511004114.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511004114.desfilter,nil,e:GetLabel()) + g:DeleteGroup() + Duel.Destroy(tg,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511004116.lua b/script/c511004116.lua new file mode 100644 index 00000000..d9c3a7c8 --- /dev/null +++ b/script/c511004116.lua @@ -0,0 +1,27 @@ +--Victim Barrier +--scripted by:urielkama +function c511004116.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511004116.condition) + e1:SetTarget(c511004116.target) + e1:SetOperation(c511004116.activate) + c:RegisterEffect(e1) +end +function c511004116.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511004116.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end +end +function c511004116.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + if g:GetCount()>0 then + local a=Duel.GetAttacker() + if Duel.ChangeAttackTarget(g:GetFirst())~=0 and g:GetFirst():GetCounter(0x1104)>0 then + a:AddCounter(0x1104,1) + end + end +end \ No newline at end of file diff --git a/script/c511004117.lua b/script/c511004117.lua new file mode 100644 index 00000000..56a176db --- /dev/null +++ b/script/c511004117.lua @@ -0,0 +1,106 @@ +--Vaccination +--scripted by:urielkama +function c511004117.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(c511004117.target) + e1:SetOperation(c511004117.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) + --immune effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c511004117.stimtg) + e3:SetValue(c511004117.stimfilter) + c:RegisterEffect(e3) + --equip to another target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCategory(CATEGORY_EQUIP) + e4:SetDescription(aux.Stringid(511004117,0)) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetRange(LOCATION_GRAVE) + e4:SetCondition(c511004117.retcon) + e4:SetTarget(c511004117.rettg) + e4:SetOperation(c511004117.retop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c511004117.filter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) +end +function c511004117.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511004117.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511004117.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511004117.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511004117.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + Duel.BreakEffect() + tc:AddCounter(0x1108,1) + end +end +function c511004117.stimfilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP+TYPE_MONSTER+TYPE_EFFECT) and c511004117.collection[te:GetCode()] +end +function c511004117.stimtg(e,c) + return c:IsType(TYPE_MONSTER) and c:GetCounter(0x1108)>0 +end +function c511004117.retcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE or bit.band(tc:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION + and tc:GetMaterialCount()>0 +end +function c511004117.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + local tc=eg:GetFirst() + local g=tc:GetMaterial() + if chkc then return g:IsContains(chkc) and chkc:IsCanBeEffectTarget(e) end + if chk==0 then return g:IsExists(Card.IsCanBeEffectTarget,1,nil,e) end + if g:GetCount()>1 and g==ec then + g=g:FilterSelect(tp,Card.IsCanBeEffectTarget,1,1,nil,e) + end + Duel.SetTargetCard(g) + tc:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,c,1,0,0) +end +function c511004117.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sc=eg:GetFirst() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and (tc:IsReason(REASON_RELEASE) or tc:IsReason(REASON_FUSION)) and sc and sc:IsRelateToEffect(e) and sc:IsFaceup() and c and c:IsRelateToEffect(e) then + Duel.Equip(tp,c,sc) + Duel.BreakEffect() + sc:AddCounter(0x1108,1) + Duel.ConfirmCards(tc:GetPreviousControler(),tc) + end +end +c511004117.collection={ +[86361354]=true;[33184167]=true;[24725825]=true; +[22804644]=true;[170000150]=true;[511000398]=true; +[35027493]=true;[39163598]=true;[54591086]=true; +[57728570]=true;[84491298]=true;[100000166]=true; +[511000822]=true;[511000823]=true;[511002576]=true; +} \ No newline at end of file diff --git a/script/c511004118.lua b/script/c511004118.lua new file mode 100644 index 00000000..67f50acd --- /dev/null +++ b/script/c511004118.lua @@ -0,0 +1,5 @@ +--V Undine +--scripted by:urielkama +function c511004118.initial_effect(c) +--unknown effect +end \ No newline at end of file diff --git a/script/c511004119.lua b/script/c511004119.lua new file mode 100644 index 00000000..8de7d9e0 --- /dev/null +++ b/script/c511004119.lua @@ -0,0 +1,5 @@ +--V Sylph +--scripted by:urielkama +function c511004119.initial_effect(c) +--unknown effect +end \ No newline at end of file diff --git a/script/c511004120.lua b/script/c511004120.lua new file mode 100644 index 00000000..105cde58 --- /dev/null +++ b/script/c511004120.lua @@ -0,0 +1,5 @@ +--V Gnome +--scripted by:urielkama +function c511004120.initial_effect(c) +--unknown effect +end \ No newline at end of file diff --git a/script/c511004121.lua b/script/c511004121.lua new file mode 100644 index 00000000..fad2ec91 --- /dev/null +++ b/script/c511004121.lua @@ -0,0 +1,71 @@ +--Utopian Hope +--scripted by:urielkama +function c511004121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511004121.condition) + e1:SetOperation(c511004121.activate) + c:RegisterEffect(e1) + --target reg + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BECOME_TARGET) + e2:SetRange(0xff) + e2:SetOperation(c511004121.regop1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAIN_SOLVED) + e3:SetRange(0xff) + e3:SetOperation(c511004121.regop2) + c:RegisterEffect(e3) + e3:SetLabelObject(e2) +end +function c511004121.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x7f)) + e1:SetValue(c511004121.ctfilter) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if e:GetHandler():GetFlagEffect(511004121)>0 then + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetTargetRange(0,LOCATION_ONFIELD+LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_EXTRA) + e1:SetTarget(c511000383.distarget) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end + local sg=Duel.GetMatchingGroup(Card.IsStatus,tp,0,LOCATION_ONFIELD+LOCATION_HAND+LOCATION_DECK,nil,STATUS_ACTIVATED+STATUS_DISABLED) + Duel.SendtoGrave(sg,REASON_EFFECT) +end +function c511004121.distarget(e,c) + return c~=e:GetHandler() and c:IsType(TYPE_TRAP+TYPE_SPELL+TYPE_MONSTER) +end +function c511004121.regfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x7f) +end +function c511004121.regop1(e,tp,eg,ep,ev,re,r,rp) + if rp==tp or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) or eg:GetCount()>0 + or not eg:IsExists(c511004121.regfilter,1,nil) then + e:SetLabelObject(nil) + else e:SetLabelObject(re) end +end +function c511004121.regop2(e,tp,eg,ep,ev,re,r,rp) + local pe=e:GetLabelObject():GetLabelObject() + if pe and pe==re then + e:GetHandler():RegisterFlagEffect(511004121,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c511004121.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,0x7f) +end +function c511004121.ctfilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP+TYPE_EFFECT) and e:GetOwnerPlayer()~=te:GetOwnerPlayer() +end \ No newline at end of file diff --git a/script/c511004122.lua b/script/c511004122.lua new file mode 100644 index 00000000..a59a3638 --- /dev/null +++ b/script/c511004122.lua @@ -0,0 +1,23 @@ +--Utopia's Last Line of Defense +--scripted by:urielkama +function c511004122.initial_effect(c) +--change position +local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511004122,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511004122.con2) + e1:SetOperation(c511004122.op2) + c:RegisterEffect(e1) +end +function c511004122.con2(e,tp,eg,ep,ev,re,r,rp) + local bt=eg:GetFirst() + return r~=REASON_BATTLE and bt:IsSetCard(0x107f) +end +function c511004122.op2(e,tp,eg,ep,ev,re,r,rp) +local bt=Duel.GetAttackTarget() + if bt:IsRelateToBattle() and not bt:IsPosition(POS_FACEUP_DEFENSE) then + Duel.ChangePosition(bt,POS_FACEUP_DEFENSE,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511004123.lua b/script/c511004123.lua new file mode 100644 index 00000000..ad865630 --- /dev/null +++ b/script/c511004123.lua @@ -0,0 +1,80 @@ +--Utopia Rising +--scripted by:urielkama +function c511004123.initial_effect(c) +--Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511004123.target) + e1:SetOperation(c511004123.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511004123.desop) + c:RegisterEffect(e2) +end +function c511004123.spfilter(c,e,tp) + return c:IsCode(84013237) or c:IsCode(511002599) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511004123.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511004123.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511004123.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511004123.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511004123.eqlimit(e,c) + return e:GetOwner()==c +end +function c511004123.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e0=Effect.CreateEffect(tc) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_EQUIP_LIMIT) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e0:SetReset(RESET_EVENT+0x1fe0000) + e0:SetValue(c511004123.eqlimit) + c:RegisterEffect(e0) + --copy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c511004123.operation2) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c511004123.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511004123.filter(c) + return c:IsType(TYPE_XYZ) +end +function c511004123.operation2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local wg=Duel.GetMatchingGroup(c511004123.filter,c:GetControler(),LOCATION_MZONE,0,nil) + local wbc=wg:GetFirst() + while wbc do + local code=wbc:GetOriginalCode() + if c:IsFaceup() and c:GetFlagEffect(code)==0 and code:IsStatus(STATUS_ACTIVATED) then + c:CopyEffect(code,RESET_EVENT+0x1ff0000+RESET_PHASE+RESET_END,1) + c:RegisterFlagEffect(code,RESET_EVENT+0x1ff0000+RESET_PHASE+RESET_END,0,1) + end + wbc=wg:GetNext() + end +end \ No newline at end of file diff --git a/script/c511004124.lua b/script/c511004124.lua new file mode 100644 index 00000000..d9372c34 --- /dev/null +++ b/script/c511004124.lua @@ -0,0 +1,73 @@ +--Ultimate Xyz +--scripted by:urielkama +--cleaned and fixed by MLD +function c511004124.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511004124.cost) + e1:SetTarget(c511004124.target) + e1:SetOperation(c511004124.operation) + c:RegisterEffect(e1) +end +function c511004124.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c511004124.cfilter(c,tp) + local g=c:GetOverlayGroup() + local sum=0 + local gc=g:GetFirst() + while gc do + local atk=gc:GetAttack() + if atk<0 then atk=0 end + sum=sum+atk + gc=g:GetNext() + end + return c:IsFaceup() and c:IsType(TYPE_XYZ) and g:GetCount()>0 + and Duel.IsExistingTarget(c511004124.filter,tp,0,LOCATION_MZONE,1,nil,sum) +end +function c511004124.filter(c,sum) + return c:GetAttack()0 + and Duel.IsExistingTarget(c511004126.ofilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.SelectTarget(tp,c511004126.ofilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511004126.activate(e,tp,eg,ep,ev,re,r,rp) +local tc=Duel.GetFirstTarget() + if tc:GetOverlayCount()==0 then return end + local g=tc:GetOverlayGroup():Filter(Card.IsAbleToGraveAsCost,nil):Select(tp,1,2,nil) + if g:GetCount()>0 then + local ct=Duel.SendtoGrave(g,REASON_EFFECT) + e:SetLabel(ct) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if not ft==e:GetLabel() or not Duel.IsPlayerCanSpecialSummonMonster(tp,511004125,0,0,300,200,1,RACE_THUNDER,ATTRIBUTE_LIGHT) then return end + for i=1,e:GetLabel() do + local token=Duel.CreateToken(tp,511004125) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end \ No newline at end of file diff --git a/script/c511004127.lua b/script/c511004127.lua new file mode 100644 index 00000000..e55a007c --- /dev/null +++ b/script/c511004127.lua @@ -0,0 +1,143 @@ +--Scab Scarknight(Anime) +--scripted by:urielkama +--added Scab Counter placing and remove Self Destruction position related +function c511004127.initial_effect(c) + --battle indestructable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetCondition(c511004127.indescon) + e1:SetValue(1) + c:RegisterEffect(e1) + --must attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_MUST_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_MUST_BE_ATTACKED) + e4:SetRange(LOCATION_MZONE) + c:RegisterEffect(e4) + --counter + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_COUNTER) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_BATTLED) + e5:SetCondition(c511004127.ctcon) + e5:SetTarget(c511004127.cttg) + e5:SetOperation(c511004127.ctop) + c:RegisterEffect(e5) + --control + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_CONTROL) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_MZONE) + e6:SetProperty(EFFECT_FLAG_REPEAT) + e6:SetCountLimit(1) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetTarget(c511004127.target) + e6:SetOperation(c511004127.activate) + c:RegisterEffect(e6) + --only 1 can exists + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_CANNOT_SUMMON) + e7:SetCondition(c511004127.excon) + c:RegisterEffect(e7) + local e8=e7:Clone() + e8:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e8) + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e9:SetCode(EFFECT_SPSUMMON_CONDITION) + e9:SetValue(c511004127.splimit) + c:RegisterEffect(e9) + local ea=Effect.CreateEffect(c) + ea:SetType(EFFECT_TYPE_SINGLE) + ea:SetCode(EFFECT_SELF_DESTROY) + ea:SetCondition(c511004127.descon) + c:RegisterEffect(ea) + --negate + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_QUICK_F) + e10:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e10:SetCode(EVENT_CHAINING) + e10:SetRange(LOCATION_MZONE) + e10:SetCondition(c511004127.con) + e10:SetTarget(c511004127.tg) + e10:SetOperation(c511004127.op) + c:RegisterEffect(e10) +end +function c511004127.indescon(e) + return e:GetHandler():IsAttackPos() +end +function c511004127.ctcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + return tc:IsRelateToBattle() and tc + and not tc:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511004127.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetHandler():GetBattleTarget() + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,tc,1,0,0) +end +function c511004127.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + tc:AddCounter(0x109a,1) + end +end +function c511004127.cfilter(c,tp) + return c:GetControler()~=tp and c:IsFaceup() and c:IsControlerCanBeChanged() and c:GetCounter(0x109a)>0 +end +function c511004127.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingMatchingCard(c511004127.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,1-tp,LOCATION_MZONE) +end +function c511004127.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c511004127.cfilter,tp,0,LOCATION_MZONE,ft,ft,nil,tp) + local tc=g:GetFirst() + while tc do + Duel.GetControl(tc,tp) + tc=g:GetNext() + end +end +function c511004127.con(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_MONSTER) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + return re:IsHasCategory(CATEGORY_RECOVER) +end +function c511004127.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511004127.op(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) +end +function c511004127.exfilter(c,fid) + return c:IsFaceup() and c:GetCode()==511004127 and (fid==nil or c:GetFieldID() copy Vampire Hunter (80485722) eff + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511004316,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_START) + e1:SetTarget(c511004316.destg) + e1:SetOperation(c511004316.desop) + c:RegisterEffect(e1) +end +function c511004316.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if chk==0 then return bc and bc:IsFaceup() and bc:IsRace(RACE_ZOMBIE) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) +end +function c511004316.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc:IsRelateToBattle() then + Duel.Destroy(bc,REASON_EFFECT) + end +end + diff --git a/script/c511004319.lua b/script/c511004319.lua new file mode 100644 index 00000000..ea1f6257 --- /dev/null +++ b/script/c511004319.lua @@ -0,0 +1,17 @@ +--妖精の贈りもの a.k.a Fairy's Gift (DOR) +function c511004319.initial_effect(c) + --flip effect + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511004319,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c511004319.flipop) + c:RegisterEffect(e1) +end +function c511004319.flipop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Recover(tp,800,REASON_EFFECT) +end + + + diff --git a/script/c511004320.lua b/script/c511004320.lua new file mode 100644 index 00000000..f4da2358 --- /dev/null +++ b/script/c511004320.lua @@ -0,0 +1,47 @@ +--ローガーディアン a.k.a Skull Guardian (DOR) +function c511004320.initial_effect(c) + --flip effect & atkchange + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511004320,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c511004320.operation) + 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_UPDATE_ATTACK) + e2:SetCondition(c511004320.condtion) + e2:SetValue(900) + c:RegisterEffect(e2) +end +function c511004320.condtion(e) + local ph=Duel.GetCurrentPhase() + if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) or not e:GetHandler():IsRelateToBattle() then return false end + local bc=e:GetHandler():GetBattleTarget() + return bc and bc:IsFaceup() and bc:IsRace(RACE_FIEND) +end +function c511004320.atktg(e,c) + return c:GetFieldID()<=e:GetLabel() and c:IsAttribute(ATTRIBUTE_LIGHT) +end +function c511004320.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + local mg,fid=g:GetMaxGroup(Card.GetFieldID) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511004320.atktg) + e1:SetValue(300) + e1:SetLabel(fid) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end + + + diff --git a/script/c511004321.lua b/script/c511004321.lua new file mode 100644 index 00000000..95a5ca2b --- /dev/null +++ b/script/c511004321.lua @@ -0,0 +1,35 @@ +--Skull Skull Servant (DOR) +--scripted by GameMaster (GM) +function c511004321.initial_effect(c) + --atk/def up 300 skullServant + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511004321,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e2:SetOperation(c511004321.operation) + c:RegisterEffect(e2) +end +function c511004321.atktg(e,c) + return c:GetFieldID()<=e:GetLabel() and c:IsCode(32274490) +end +function c511004321.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + local mg,fid=g:GetMaxGroup(Card.GetFieldID) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511004321.atktg) + e1:SetValue(300) + e1:SetLabel(fid) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end + diff --git a/script/c511004322.lua b/script/c511004322.lua new file mode 100644 index 00000000..02879a02 --- /dev/null +++ b/script/c511004322.lua @@ -0,0 +1,358 @@ +--concentration duel +--scripted by andré +function c511004322.initial_effect(c) + --card Confirm for test + local ea=Effect.CreateEffect(c) + ea:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + ea:SetDescription(aux.Stringid(100100,15)) + ea:SetType(EFFECT_TYPE_QUICK_O) + ea:SetRange(LOCATION_REMOVED) + ea:SetCode(EVENT_FREE_CHAIN) + ea:SetOperation(c511004322.hax) + --c:RegisterEffect(ea) + --protection + local eb=Effect.CreateEffect(c) + eb:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_DECK) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + c:RegisterEffect(ee) + local ef=eb:clone() + ef:SetCode(EFFECT_IMMUNE_EFFECT) + c:RegisterEffect(ef) + --clean forbidden love + local e0=Effect.CreateEffect(c) --turn end + e0:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e0:SetRange(LOCATION_REMOVED) + e0:SetCode(EVENT_TURN_END) + e0:SetCountLimit(1) + e0:SetOperation(c511004322.cfl) + c:RegisterEffect(e0) + local e0a=e0:Clone() --when sent to deck + e0a:SetCode(EVENT_TO_DECK) + e0a:SetCondition(c511004322.cflcon) + c:RegisterEffect(e0a) + --remove + local e0b=Effect.CreateEffect(c) + e0b:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e0b:SetCode(EVENT_TO_HAND) + e0b:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e0b:SetRange(LOCATION_REMOVED) + e0b:SetTarget(c511004322.damtg) + e0b:SetOperation(c511004322.damop) + c:RegisterEffect(e0b) + --active + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetCountLimit(1) + e1:SetCondition(c511004322.activecondition) + e1:SetOperation(c511004322.activeoperation) + c:RegisterEffect(e1) + --skip draw phase + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SKIP_DP) + e2:SetRange(LOCATION_REMOVED) + e2:SetTargetRange(1,0) + c:RegisterEffect(e2) + --declare a normal summon or set + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_DISABLE_CHAIN) + e3:SetDescription(1050) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_REMOVED) + e3:SetCountLimit(1) + e3:SetCondition(c511004322.normalsetcondition) + e3:SetTarget(c511004322.normalsettarget) + e3:SetOperation(c511004322.normalsetoperation) + c:RegisterEffect(e3) + --declare a spell activation + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_DISABLE_CHAIN) + e4:SetDescription(1051) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_REMOVED) + e4:SetCountLimit(1) + e4:SetTarget(c511004322.spelltarget) + e4:SetOperation(c511004322.spelloperation) + c:RegisterEffect(e4) + --declare a trap activation + local e5=Effect.CreateEffect(c) + e5:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_DISABLE_CHAIN) + e5:SetDescription(1052) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_FREE_CHAIN) + e5:SetRange(LOCATION_REMOVED) + e5:SetCountLimit(1) + e5:SetTarget(c511004322.traptarget) + e5:SetOperation(c511004322.trapoperation) + c:RegisterEffect(e5) +end +forbidden={} +forbidden[0]={} +forbidden[1]={} +function c511004322.cflcon(e,tp,eg,ep,ev,re,r,rp) + return re:GetHandler()~=e:GetHandler() +end +--[[ +function c511004322.hax(e,tp,eg,ep,ev,re,r,rp) + Duel.ConfirmCards(tp,Duel.GetDecktopGroup(tp,Duel.GetFieldGroupCount(tp,LOCATION_DECK,0))) +end +--]] +function c511004322.cfl(e,tp,eg,ep,ev,re,r,rp) + forbidden[tp]={} +end +function c511004322.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return re and re:GetHandler()~=e:GetHandler() and not re:GetHandler():IsCode(511004322) end +end +function c511004322.damop(e,tp,eg,ep,ev,re,r,rp) + local sg=eg + if sg:GetCount()>0 then + Duel.SendtoDeck(sg,nil,0,REASON_RULE) + if sg:IsContains(Card.IsControler,nil,tp) then + Duel.ShuffleDeck(tp) + forbidden[tp]={} + end + end +end +--active condition+operation +function c511004322.activecondition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==1 +end +function c511004322.activeoperation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Remove(c,POS_FACEUP,REASON_RULE) + local hand1=Duel.GetMatchingGroup(Card.GetControler,tp,LOCATION_HAND,0,nil) + Duel.SendtoDeck(hand1,tp,0,REASON_RULE) + local hand2=Duel.GetMatchingGroup(Card.GetControler,tp,0,LOCATION_HAND,nil) + Duel.SendtoDeck(hand2,1-tp,0,REASON_RULE) +end +--normal/set +function c511004322.normalsetcondition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c511004322.normalsettarget(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetChainLimit(c511004322.nl) +end +function c511004322.nl(e,tp,eg,ep,ev,re,r,rp) + return false +end +function c511004322.normalsetoperation(e,tp,eg,ep,ev,re,r,rp) + local n=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local r={} + for i=1,n do + if not forbidden[tp][i] then table.insert(r,i) end + end + local an=Duel.AnnounceNumber(tp,table.unpack(r))-1 + local c=Duel.GetFieldCard(tp,LOCATION_DECK,an) + local tmin=0 + local tmax=0 + if c:IsType(TYPE_MONSTER) then + tmin,tmax=c:GetTributeRequirement() + end + Duel.ConfirmCards(tp,c) + Duel.ConfirmCards(1-tp,c) + if c:IsType(TYPE_MONSTER) and (c:IsSummonable(true,nil) or c:IsMSetable(true,nil)) and ((Duel.IsExistingMatchingCard(Card.IsReleasable,tp,LOCATION_MZONE,0,tmin,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-tmin) or (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and tmin==0)) then + local poi=0 --set/summon control variable + if c:IsSummonable(true,nil) or c:IsMSetable(true,nil) then + poi=Duel.SelectOption(tp,1,1153) + elseif c:IsSummonable(true,nil) then + poi=0 + else + poi=1 + end + if poi==0 then + Duel.DisableShuffleCheck() + Duel.SendtoHand(c,tp,REASON_RULE) + Duel.Summon(tp,c,true,nil) + else + Duel.DisableShuffleCheck() + Duel.SendtoHand(c,tp,REASON_RULE) + Duel.MSet(tp,c,true,nil) + end + if c:IsLocation(LOCATION_HAND) then + Duel.DisableShuffleCheck() + Duel.SendtoDeck(c,tp,an,REASON_RULE) + forbidden[tp][an+1]=true + Duel.Hint(HINT_MESSAGE,tp,aux.Stringid(4002,9)) + else + --re organize forbidden list + for i=an+1,n do + forbidden[tp][i]=forbidden[tp][i+1] + end + end + else + forbidden[tp][an+1]=true + Duel.Hint(HINT_MESSAGE,tp,aux.Stringid(4002,9)) + end +end +--spell +function c511004322.spelltarget(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end +end +function c511004322.spelloperation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local n=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local r={} + for i=1,n do + if not forbidden[tp][i] then table.insert(r,i) end + end + local an=Duel.AnnounceNumber(tp,table.unpack(r))-1 + local tc=Duel.GetFieldCard(tp,LOCATION_DECK,an) + Duel.ConfirmCards(tp,tc) + Duel.ConfirmCards(1-tp,tc) + if tc:IsType(TYPE_SPELL) then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + if te:IsActivatable(tp) then + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.DisableShuffleCheck() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 and not tc:IsHasEffect(EFFECT_REMAIN_FIELD) then + tc:CancelToGrave(false) + end + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + --re organize forbidden list + for i=an+1,n do + forbidden[tp][i]=forbidden[tp][i+1] + end + else + forbidden[tp][an+1]=true + Duel.Hint(HINT_MESSAGE,tp,aux.Stringid(4002,9)) + end + else + forbidden[tp][an+1]=true + Duel.Hint(HINT_MESSAGE,tp,aux.Stringid(4002,9)) + end +end +--trap +function c511004322.traptarget(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end +end +function c511004322.trapoperation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local n=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local r={} + for i=1,n do + if not forbidden[tp][i] then table.insert(r,i) end + end + local an=Duel.AnnounceNumber(tp,table.unpack(r))-1 + local tc=Duel.GetFieldCard(tp,LOCATION_DECK,an) + Duel.ConfirmCards(tp,tc) + Duel.ConfirmCards(1-tp,tc) + if tc:IsType(TYPE_TRAP) then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + if te:IsActivatable(tp) then + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + Duel.DisableShuffleCheck() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)~=0 then + Duel.MoveSequence(tc,5) + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 and not tc:IsHasEffect(EFFECT_REMAIN_FIELD) then + tc:CancelToGrave(false) + end + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + --re organize forbidden list + for i=an+1,n do + forbidden[tp][i]=forbidden[tp][i+1] + end + else + forbidden[tp][an+1]=true + Duel.Hint(HINT_MESSAGE,tp,aux.Stringid(4002,9)) + end + else + forbidden[tp][an+1]=true + Duel.Hint(HINT_MESSAGE,tp,aux.Stringid(4002,9)) + end +end +--[[ + scripter note: not fully working, you can see monster by searching effect's + also, need event deck shuffle + the cost may be working wrong if it demand to dischard top card deck, because it may be turned on sending random card, since you don't have top deck card theoricaly +--]] \ No newline at end of file diff --git a/script/c511004324.lua b/script/c511004324.lua new file mode 100644 index 00000000..fa836868 --- /dev/null +++ b/script/c511004324.lua @@ -0,0 +1,30 @@ +--Sectarian of Secrets (DOR) +--scripted by GameMaster (GM) +function c511004324.initial_effect(c) + -- lose 300 atk/def when destroyed + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511004324,1)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetOperation(c511004324.desop) + c:RegisterEffect(e2) +end +function c511004324.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if c==tc then tc=Duel.GetAttackTarget() end + if not tc:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-300) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) +end + + diff --git a/script/c511004326.lua b/script/c511004326.lua new file mode 100644 index 00000000..c8fccc73 --- /dev/null +++ b/script/c511004326.lua @@ -0,0 +1,16 @@ +--Strains desmone +--scripted by andré +function c511004326.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511004326.atkval) + c:RegisterEffect(e1) +end +function c511004326.atkval(e,c) + local atk=Duel.GetLP(1-c:GetControler())/2 + return atk +end \ No newline at end of file diff --git a/script/c511004327.lua b/script/c511004327.lua new file mode 100644 index 00000000..5759db93 --- /dev/null +++ b/script/c511004327.lua @@ -0,0 +1,33 @@ +--substitute pain +--scripted by andré +function c511004327.initial_effect(c) + --activate + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_ACTIVATE) + e0:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e0) + --damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1) + e1:SetTarget(c511004327.target) + e1:SetOperation(c511004327.activate) + c:RegisterEffect(e1) +end +function c511004327.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511004327.filter(c) + return c:GetCounter(0x1107)>=1 +end +function c511004327.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511004327.filter,tp,LOCATION_ONFIELD,0,nil)*400 + Duel.Damage(p,dam,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511004328.lua b/script/c511004328.lua new file mode 100644 index 00000000..49c3f79e --- /dev/null +++ b/script/c511004328.lua @@ -0,0 +1,32 @@ +--hunting net +--scripted by andré +function c511004328.initial_effect(c) + --place on spell field + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511004328.condition) + e1:SetTarget(c511004328.target) + e1:SetOperation(c511004328.operation) + c:RegisterEffect(e1) +end +function c511004328.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsLocation(LOCATION_ONFIELD) +end +function c511004328.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOHAND) + return ex and tg~=nil and tc+tg:FilterCount(c511004328.filter,nil)-tg:GetCount()>0 +end +function c511004328.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end +end +function c511004328.operation(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOHAND) + local og=tg:Filter(c511004328.filter,nil) + local oc=og:GetFirst() + while oc and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 do + Duel.MoveToField(oc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + oc:AddCounter(0x1107,1) + oc=og:GetNext() + end +end \ No newline at end of file diff --git a/script/c511004329.lua b/script/c511004329.lua new file mode 100644 index 00000000..f37c0d99 --- /dev/null +++ b/script/c511004329.lua @@ -0,0 +1,33 @@ +--Mystic Lamp +--scripted by andré +function c511004329.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c511004329.operation) + c:RegisterEffect(e1) +end +function c511004329.atktg(e,c) + return c:GetFieldID()<=e:GetLabel() and c:IsCode(99510761) +end +function c511004329.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local mg,fid=g:GetMaxGroup(Card.GetFieldID) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511004329.atktg) + e1:SetValue(700) + e1:SetLabel(fid) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c511004330.lua b/script/c511004330.lua new file mode 100644 index 00000000..f993c4f5 --- /dev/null +++ b/script/c511004330.lua @@ -0,0 +1,30 @@ +--Shadow Specter +--scripted by andré +function c511004330.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c511004330.operation) + c:RegisterEffect(e1) +end +function c511004330.atktg(e,c) + return c:GetFieldID()<=e:GetLabel() and (c:IsCode(511004330) or c:IsCode(40575313)) +end +function c511004330.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + local mg,fid=g:GetMaxGroup(Card.GetFieldID) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511004330.atktg) + e1:SetValue(300) + e1:SetLabel(fid) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511004331.lua b/script/c511004331.lua new file mode 100644 index 00000000..2f1dc99f --- /dev/null +++ b/script/c511004331.lua @@ -0,0 +1,35 @@ +--Golem's Clap +--scripted by andré +function c511004331.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511004331.condition) + e1:SetTarget(c511004331.target) + e1:SetOperation(c511004331.activate) + c:RegisterEffect(e1) +end +function c511004331.cfilter(c) + return c:IsFaceup() and c:IsCode(511005623) +end +function c511004331.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511004331.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511004331.filter(c,e) + return c:IsCode(511005624) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511004331.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511004331.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511004331.activate(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,c511004331.filter,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 \ No newline at end of file diff --git a/script/c511004332.lua b/script/c511004332.lua new file mode 100644 index 00000000..68aeeafe --- /dev/null +++ b/script/c511004332.lua @@ -0,0 +1,32 @@ +--Dryad (DOR) +--scripted by andré +function c511004332.initial_effect(c) + --battled + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_CONFIRM) + e1:SetCondition(c511004332.condition) + e1:SetOperation(c511004332.atop) + c:RegisterEffect(e1) +end +function c511004332.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local pos=c:GetBattlePosition() + return c==Duel.GetAttackTarget() and (pos==POS_FACEDOWN_DEFENSE or pos==POS_FACEDOWN_ATTACK) and c:IsLocation(LOCATION_MZONE) +end +function c511004332.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc==Duel.GetAttacker() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + bc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c511004333.lua b/script/c511004333.lua new file mode 100644 index 00000000..1560e0bd --- /dev/null +++ b/script/c511004333.lua @@ -0,0 +1,32 @@ +--Curtain of the Dark Ones (DOR) +--scripted by andré +function c511004333.initial_effect(c) + --battled + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_CONFIRM) + e1:SetCondition(c511004333.condition) + e1:SetOperation(c511004333.atop) + c:RegisterEffect(e1) +end +function c511004333.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local pos=c:GetBattlePosition() + return c==Duel.GetAttackTarget() and (pos==POS_FACEDOWN_DEFENSE or pos==POS_FACEDOWN_ATTACK) and c:IsLocation(LOCATION_MZONE) +end +function c511004333.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc==Duel.GetAttacker() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + bc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c511004334.lua b/script/c511004334.lua new file mode 100644 index 00000000..3823e84d --- /dev/null +++ b/script/c511004334.lua @@ -0,0 +1,32 @@ +--Phantom Dewan (DOR) +--scripted by andré +function c511004334.initial_effect(c) + --battled + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_CONFIRM) + e1:SetCondition(c511004334.condition) + e1:SetOperation(c511004334.atop) + c:RegisterEffect(e1) +end +function c511004334.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local pos=c:GetBattlePosition() + return c==Duel.GetAttackTarget() and (pos==POS_FACEDOWN_DEFENSE or pos==POS_FACEDOWN_ATTACK) and c:IsLocation(LOCATION_MZONE) +end +function c511004334.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc==Duel.GetAttacker() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + bc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c511004335.lua b/script/c511004335.lua new file mode 100644 index 00000000..a6e1b6b8 --- /dev/null +++ b/script/c511004335.lua @@ -0,0 +1,35 @@ +--Half Shield +--scripted by andré +function c511004335.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511004335.activate) + c:RegisterEffect(e1) +end +c511004335[0]=0 +c511004335[1]=0 +function c511004335.activate(e,tp,eg,ep,ev,re,r,rp) + c511004335[tp]=1 + if Duel.GetFlagEffect(tp,511004335)~=0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1) + e1:SetTargetRange(1,0) + e1:SetValue(c511004335.val) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE,1) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,511004335,RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c511004335.val(e,re,dam,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 and re and re:IsActiveType(TYPE_MONSTER) and re:GetHandlerPlayer()~=tp then + e:Reset() + return dam/2 end + if bit.band(r,REASON_BATTLE)~=0 then + e:Reset() + return dam/2 end + return dam +end \ No newline at end of file diff --git a/script/c511004336.lua b/script/c511004336.lua new file mode 100644 index 00000000..b7feae9a --- /dev/null +++ b/script/c511004336.lua @@ -0,0 +1,28 @@ +--Capture Snare +--scripted by andré +function c511004336.initial_effect(c) + --atk stop + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511004336.con) + e1:SetTarget(c511004336.tg) + e1:SetOperation(c511004336.op) + c:RegisterEffect(e1) +end +function c511004336.filter(c) + return c:IsFaceup() and c:GetCounter(0x1107)>=1 and Duel.GetAttacker():GetControler()~=tp +end +function c511004336.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511004336.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511004336.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end +end +function c511004336.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then + Duel.MoveToField(Duel.GetAttacker(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.GetAttacker():AddCounter(0x1107,1) + end +end \ No newline at end of file diff --git a/script/c511004337.lua b/script/c511004337.lua new file mode 100644 index 00000000..2262f564 --- /dev/null +++ b/script/c511004337.lua @@ -0,0 +1,30 @@ +--Dark Auction +--Scripted by andré +function c511004337.initial_effect(c) + --return to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511004337.tg) + e1:SetOperation(c511004337.op) + c:RegisterEffect(e1) +end +function c511004337.tfilter(c) + return c:GetCounter(0x1107)~=0 +end +function c511004337.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511004337.tfilter,tp,LOCATION_ONFIELD,0,1,nil) end + local g=Duel.GetMatchingGroup(c511004337.tfilter,tp,LOCATION_ONFIELD,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511004337.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511004337.tfilter,tp,LOCATION_ONFIELD,0,nil) + local g=Duel.SelectMatchingCard(tp,c511004337.tfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + local tc=g:GetFirst() + local dam=tc:GetAttack() + if tc then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.Damage(1-tp,dam,REASON_EFECT) + end +end \ No newline at end of file diff --git a/script/c511004338.lua b/script/c511004338.lua new file mode 100644 index 00000000..c76cc75c --- /dev/null +++ b/script/c511004338.lua @@ -0,0 +1,22 @@ +--死神のドクロイゾ a.k.a Dokuroizo the Grim Reaper +function c511004338.initial_effect(c) + --active limit --> stun opponent trap cards + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511004338.atkop) + c:RegisterEffect(e1) +end +function c511004338.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511004338.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511004338.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c511004339.lua b/script/c511004339.lua new file mode 100644 index 00000000..69460240 --- /dev/null +++ b/script/c511004339.lua @@ -0,0 +1,34 @@ +--Decoy Baby +--scripted by andré +function c511004339.initial_effect(c) + --place a monster from the opponent side + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511004339.tg) + e1:SetOperation(c511004339.op) + c:RegisterEffect(e1) +end +function c511004339.filter1(c,e,tp) + return c:IsFaceup() and c:GetCounter(0x1107)~=0 and Duel.IsExistingMatchingCard(c511004339.filter2,tp,0,LOCATION_MZONE,1,nil,e,tp,c,c:GetRace()) +end +function c511004339.filter2(c,e,tp,mc,rc) + return c:GetType()==mc:GetType() and c:GetRace()==rc +end +function c511004339.tg(e,tp,eg,ev,ep,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c511004339.filter1(chkc,e,tp) end + if chk==0 then return Duel.IsExistingMatchingCard(c511004339.filter1,tp,LOCATION_SZONE,0,1,nil,e,tp) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end +end +function c511004339.op(e,tp,eg,ev,ep,re,r,rp,chk) + local g1=Duel.SelectMatchingCard(tp,c511004339.filter1,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + local tc=g1:GetFirst() + if tc then + local g2=Duel.SelectMatchingCard(tp,c511004339.filter2,tp,0,LOCATION_MZONE,1,1,nil,e,tp,tc,tc:GetRace()) + local mtc=g2:GetFirst() + if mtc and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then + Duel.MoveToField(mtc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + mtc:AddCounter(0x1107,1) + end + end +end \ No newline at end of file diff --git a/script/c511004340.lua b/script/c511004340.lua new file mode 100644 index 00000000..1bdbaf75 --- /dev/null +++ b/script/c511004340.lua @@ -0,0 +1,61 @@ +--Strain Element +--scripted by andré +function c511004340.initial_effect(c) + --equip to a opm + 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(c511004340.tgeq) + e1:SetOperation(c511004340.opeq) + 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) + --special summon a token + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_EQUIP) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511004340.tscon) + e3:SetOperation(c511004340.tsop) + c:RegisterEffect(e3) +end +function c511004340.tgeq(e,tp,eg,ev,ep,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511004340.opeq(e,tp,eg,ev,ep,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 c511004340.tscon(e,tp,eg,ev,ep,re,r,rp) + return eg:IsContains(e:GetHandler()) +end +function c511004340.tsop(e,tp,eg,ev,ep,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if Duel.IsPlayerCanSpecialSummon(tp) then + local token=Duel.CreateToken(tp,511004325) + local atk=e:GetHandler():GetEquipTarget():GetAttack() + local c=e:GetHandler() + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(atk+500) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end \ No newline at end of file diff --git a/script/c511004341.lua b/script/c511004341.lua new file mode 100644 index 00000000..dcd60b72 --- /dev/null +++ b/script/c511004341.lua @@ -0,0 +1,19 @@ +--Negate Attack (anime) +--scripted by andré +function c511004341.initial_effect(c) + --negate atack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511004341.condition) + e1:SetOperation(c511004341.operation) + c:RegisterEffect(e1) +end +function c511004341.condition(e,tp,ev,eg,ep,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511004341.operation(e,tp,ev,eg,ep,re,r,rp) + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end \ No newline at end of file diff --git a/script/c511004342.lua b/script/c511004342.lua new file mode 100644 index 00000000..9f9c781d --- /dev/null +++ b/script/c511004342.lua @@ -0,0 +1,24 @@ +--骨ネズミ a.k.a Bone Mouse (Anime) DOR +function c511004342.initial_effect(c) + --active limit --> stun opponent trap cards + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511004342.atkop) + c:RegisterEffect(e1) +end +function c511004342.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511004342.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511004342.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end + + diff --git a/script/c511004343.lua b/script/c511004343.lua new file mode 100644 index 00000000..d5d6fc37 --- /dev/null +++ b/script/c511004343.lua @@ -0,0 +1,71 @@ +--Spirit Battle +function c511004343.initial_effect(c) + --active + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511004343.target) + e1:SetOperation(c511004343.operation) + c:RegisterEffect(e1) +end +function c511004343.filter(c,e,tp,tid) + return bit.band(c:GetReason(),0x21)==0x21 and c:GetTurnID()==tid and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511004343.target(e,tp,eg,ev,ep,re,r,rp,chk) + local tid=Duel.GetTurnCount() + if chk==0 then return Duel.IsExistingTarget(c511004343.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) and Duel.IsExistingTarget(c511004343.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp,tid) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tg1=Duel.SelectTarget(tp,c511004343.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,tid) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tg2=Duel.SelectTarget(1-tp,c511004343.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp,tid) + local monster_1=tg1:GetFirst() + local monster_2=tg2:GetFirst() + local atk1=monster_1:GetAttack() + local atk2=monster_2:GetAttack() + Group.Merge(tg1,tg2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tg,2,0,0) +end +function c511004343.operation(e,tp,eg,ev,ep,re,r,rp,chk) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg1=tg:Filter(Card.IsControler,nil,tp) + local tg2=tg:Filter(Card.IsControler,nil,1-tp) + Duel.SpecialSummon(tg1,0,tp,tp,false,false,POS_FACEUP_ATTACK) + Duel.SpecialSummon(tg2,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) + local monster_1=tg1:GetFirst() + local monster_2=tg2:GetFirst() + local atk1=tg1:GetFirst():GetAttack() + local atk2=tg2:GetFirst():GetAttack() + local atk=tg:GetFirst() + while atk do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_NO_BATTLE_DAMAGE) + e1:SetReset(RESET_CHAIN) + e1:SetValue(1) + atk:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetReset(RESET_CHAIN) + e2:SetValue(1) + atk:RegisterEffect(e2) + atk=tg:GetNext() + end + Duel.CalculateDamage(monster_1,monster_2) + if atk1>atk2 then + Duel.RaiseSingleEvent(monster_1,EVENT_BATTLE_DAMAGE,e,REASON_EFFECT,0,1-tp,atk2) + elseif atk1c:GetBaseAttack() +end +function c511004500.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511004500.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511004500.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511004500.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511004500.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511004501.lua b/script/c511004501.lua new file mode 100644 index 00000000..493b4caf --- /dev/null +++ b/script/c511004501.lua @@ -0,0 +1,90 @@ +--Dimension U-Turn +function c511004501.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511004501.target) + e1:SetOperation(c511004501.activate) + c:RegisterEffect(e1) + --Synchro Summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,0x1c0) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c511004501.rmcost2) + e2:SetTarget(c511004501.rmtg2) + e2:SetOperation(c511004501.rmop2) + c:RegisterEffect(e2) +end +function c511004501.filter(c,e,tp) + return c:IsFaceup() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511004501.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c511004501.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511004501.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511004501.filter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511004501.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabelObject(tc) + e1:SetCondition(c511004501.rmcon) + e1:SetOperation(c511004501.rmop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.SpecialSummonComplete() + tc:CompleteProcedure() + tc:RegisterFlagEffect(511004501,RESET_EVENT+0x1fe0000,0,1) + end +end +function c511004501.rmcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return tc:GetFlagEffect(511004501)~=0 +end +function c511004501.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) +end +function c511004501.rmcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511004501.rmtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511004501.rmop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetOperation(c511004501.retop) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511004501.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c511005001.lua b/script/c511005001.lua new file mode 100644 index 00000000..45d67532 --- /dev/null +++ b/script/c511005001.lua @@ -0,0 +1,123 @@ +--Eye of Illusion +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() +local _str=4001 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Attack redirect/negation + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetDescription(aux.Stringid(_str,0)) + e2:SetCondition(scard.sfx1_cd) + e2:SetOperation(scard.sfx1_op) + c:RegisterEffect(e2) + --Taking control + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCategory(CATEGORY_CONTROL) + e3:SetCountLimit(1) + e3:SetTarget(scard.sfx2_tg) + e3:SetOperation(scard.sfx2_op) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(scard.eq_limit) + c:RegisterEffect(e4) +end + +--Effect 1 Activate (Equip) +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:GetControler()==tp 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_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and e:GetHandler():IsRelateToEffect(e) then + Duel.Equip(tp,e:GetHandler(),tc) + end +end + +function scard.eq_limit(e,c) + return e:GetHandler():GetControler()==c:GetControler() +end +--Effect 2 Negate/Redirect attack +function scard.sfx1_cd(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetEquipTarget() + return Duel.GetAttackTarget()==tc or (Duel.GetAttacker()==tc and Duel.GetAttackTarget()) +end + +function scard.sfx1_op(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=e:GetHandler():GetEquipTarget() + local ac=Duel.GetAttacker() + local op=0 + if Duel.GetAttackTarget()==tc and Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,0,1,tc) then + op=Duel.SelectOption(tp,aux.Stringid(_str,1),aux.Stringid(_str,2)) + else + op=Duel.SelectOption(tp,aux.Stringid(_str,1)) + end + if ac==tc then ac=Duel.GetAttackTarget() end + if op==0 then + Duel.NegateAttack() + ac:RegisterFlagEffect(s_id,RESET_PHASE+PHASE_END,0,2) + else + if ac:IsAttackable() then Duel.ChangeAttackTarget(Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_MZONE,0,1,1,tc):GetFirst()) end + end +end + +--Effect 3 Take control +function scard.sfx2_fil(c) + return c:GetFlagEffect(s_id)~=0 and c:IsControlerCanBeChanged() +end + +function scard.sfx2_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(scard.sfx2_fil,tp,0,LOCATION_MZONE,1,nil) end +end + +function scard.sfx2_op(e,tp,eg,ep,ev,re,r,rp) + local loc=Duel.GetLocationCount(tp,LOCATION_MZONE) + if loc<1 then return end + local g=Duel.GetMatchingGroup(scard.sfx2_fil,tp,0,LOCATION_MZONE,nil) + local cg + if g:GetCount()>loc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + cg=g:Select(tc,loc,loc,nil) + else + cg=g:Clone() + end + local tc=cg:GetFirst() + while tc do + Duel.HintSelection(Group.FromCards(tc)) + Duel.GetControl(tc,tp,PHASE_END,1) + tc=cg:GetNext() + end +end \ No newline at end of file diff --git a/script/c511005002.lua b/script/c511005002.lua new file mode 100644 index 00000000..ccb40155 --- /dev/null +++ b/script/c511005002.lua @@ -0,0 +1,109 @@ +--Champion's Faction +--fixed by MLD +function c511005002.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511005002.condition) + e1:SetTarget(c511005002.target) + e1:SetOperation(c511005002.activate) + c:RegisterEffect(e1) +end +c511005002.collection={ + [70406920]=true;[46700124]=true;[89222931]=true;[96938777]=true;[18891691]=true; + [501000079]=true;[49195710]=true;[20563387]=true;[93568288]=true;[47387961]=true; + [19012345]=true;[35058857]=true;[6901008]=true;[60990740]=true;[75326861]=true; + [32995007]=true;[96381979]=true;[80955168]=true;[70791313]=true;[16509093]=true; + [83986578]=true;[3056267]=true;[10071456]=true;[47879985]=true;[89959682]=true; + [62242678]=true;[22858242]=true;[91512835]=true;[18710707]=true;[87564352]=true; + [23756165]=true;[50140163]=true;[87257460]=true;[15951532]=true;[6214884]=true; + [22996376]=true;[54702678]=true;[38180759]=true;[6614221]=true;[45121025]=true; + [5818798]=true;[4179849]=true;[14462257]=true;[29155212]=true;[55818463]=true; + [20438745]=true;[72426662]=true;[53375573]=true;[44223284]=true;[17573739]=true; + [8561192]=true;[78651105]=true;[19028307]=true;[10613952]=true;[21223277]=true; + [40732515]=true;[23659124]=true;[29515122]=true;[5901497]=true;[71411377]=true; + [11250655]=true;[19748583]=true;[60992364]=true;[27337596]=true;[61370518]=true; + [16768387]=true;[12817939]=true;[58206034]=true;[85313220]=true;[88307361]=true; + [84025439]=true;[51371017]=true;[86327225]=true;[74069667]=true;[83303851]=true; + [47198668]=true;[8463720]=true;[82956492]=true;[44852429]=true;[44186624]=true; + [15939229]=true;[3758046]=true;[27873305]=true;[56619314]=true;[92536468]=true; + [74583607]=true;[987311]=true;[79109599]=true;[99426834]=true;[30741334]=true; + [67136033]=true;[39711336]=true;[30646525]=true;[70583986]=true;[2316186]=true; + [75917088]=true;[43791861]=true;[20193924]=true;[8763963]=true;[34408491]=true; + [29424328]=true;[89832901]=true;[56907389]=true;[24857466]=true;[53982768]=true; + [5309481]=true;[75675029]=true;[69455834]=true;[82213171]=true;[45425051]=true; + [28290705]=true;[64514622]=true;[22910685]=true;[511001914]=true;[511000141]=true; + [511001690]=true;[82382815]=true; +} +function c511005002.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsFaceup() + and (c511005002.collection[d:GetCode()] or d:IsSetCard(0x81) or d:IsSetCard(0xda) or d:IsSetCard(0xbe) or d:IsSetCard(0x21a)) +end +function c511005002.filter(c,e,tp) + return (c511005002.collection[c:GetCode()] or c:IsSetCard(0x81) or c:IsSetCard(0xda) or c:IsSetCard(0xbe) or c:IsSetCard(0x21a)) + and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511005002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 + and Duel.IsExistingMatchingCard(c511005002.filter,tp,LOCATION_DECK,0,3,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_DECK) +end +function c511005002.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=2 then return end + local g=Duel.GetMatchingGroup(c511005002.filter,tp,LOCATION_DECK,0,nil,e,tp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) or g:GetCount()<3 then return end + local c=e:GetHandler() + local fid=c:GetFieldID() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,3,3,nil) + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc:RegisterFlagEffect(51105002,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() + sg:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(sg) + e1:SetCondition(c511005002.descon) + e1:SetOperation(c511005002.desop) + Duel.RegisterEffect(e1,tp) +end +function c511005002.desfilter(c,fid) + return c:GetFlagEffectLabel(51105002)==fid +end +function c511005002.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511005002.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511005002.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511005002.desfilter,nil,e:GetLabel()) + g:DeleteGroup() + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c511005003.lua b/script/c511005003.lua new file mode 100644 index 00000000..790988a5 --- /dev/null +++ b/script/c511005003.lua @@ -0,0 +1,45 @@ +--Brohunder +-- I'll just copy Sishunder + +local scard=c511005003 + +function scard.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511005003,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(scard.rmtg) + e1:SetOperation(scard.rmop) + c:RegisterEffect(e1) +end +function scard.filter(c) + return c:IsRace(RACE_THUNDER) and c:IsAttribute(ATTRIBUTE_LIGHT) and c:GetLevel()==4 + and c:GetCode()~=511005003 and c:IsAttackBelow(1600) and c:IsAbleToRemove() +end +function scard.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and scard.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(scard.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,scard.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,HINTMSG_REMOVE,g,1,0,0) +end +function scard.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_REMOVED) + e1:SetCountLimit(1) + e1:SetOperation(scard.thop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function scard.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,e:GetHandler()) +end \ No newline at end of file diff --git a/script/c511005005.lua b/script/c511005005.lua new file mode 100644 index 00000000..49289398 --- /dev/null +++ b/script/c511005005.lua @@ -0,0 +1,39 @@ +--Fool's Dice +-- By Shad3 +--fixed by MLD +function c511005005.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetCondition(c511005005.condition) + e1:SetCost(c511005005.cost) + e1:SetTarget(c511005005.target) + e1:SetOperation(c511005005.activate) + c:RegisterEffect(e1) +end +function c511005005.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:GetPreviousControler()~=tp +end +function c511005005.filter(c) + return c:IsType(TYPE_NORMAL) and c:IsLevelBelow(2) and c:IsDiscardable() +end +function c511005005.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511005005.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511005005.filter,1,1,REASON_COST+REASON_DISCARD) +end +function c511005005.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return true end + local dam=tc:GetLevel()*200 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511005005.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511005006.lua b/script/c511005006.lua new file mode 100644 index 00000000..71cb014b --- /dev/null +++ b/script/c511005006.lua @@ -0,0 +1,76 @@ +--Line Monster K Horse +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +function scard.initial_effect(c) + --Normal/Special Summon effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetDescription(HINTMSG_DESTROY) + e1:SetTarget(scard.me1_tg) + e1:SetOperation(scard.me1_op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e4=e1:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) + --Special Summon lv3 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_DESTROYED) + e3:SetCategory(CATEGORY_SPSUMMON) + e3:SetDescription(HINTMSG_SPSUMMON) + e3:SetCondition(scard.me2_cd) + e3:SetTarget(scard.me2_tg) + e3:SetOperation(scard.me2_op) + c:RegisterEffect(e3) +end + +--Normal/Special/Flip Summon effect +function scard.me1_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=Duel.GetFieldCard(1-tp,LOCATION_SZONE,4-e:GetHandler():GetSequence()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Group.FromCards(c),1,0,0) +end + +function scard.me1_op(e,tp,eg,ep,ev,re,r,rp) + local c=Duel.GetFieldCard(1-tp,LOCATION_SZONE,4-e:GetHandler():GetSequence()) + if not c then return end + Duel.HintSelection(Group.FromCards(tc)) + Duel.Destroy(tc,REASON_EFFECT) +end + +--Special Summon lv3 +function scard.me2_cd(e,tp,eg,ep,ev,re,r,rp) + return re and re:GetOwner()==e:GetHandler() and eg:IsExists(aux.FilterBoolFunction(Card.IsType,TYPE_TRAP),1,nil) +end + +function scard.me2_sfil(c,e,tp) + return c:GetLevel()==3 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not (c:IsCode(41493640) or c:IsCode(511005006)) +end + +function scard.me2_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(scard.me2_sfil,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPSUMMON,nil,1,tp,LOCATION_HAND) +end + +function scard.me2_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,scard.me2_sfil,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if tg:GetCount()<1 then return end + Duel.SpecialSummon(tg,0,tp,tp,false,false,POS_FACEUP) +end \ No newline at end of file diff --git a/script/c511005007.lua b/script/c511005007.lua new file mode 100644 index 00000000..ec7a4926 --- /dev/null +++ b/script/c511005007.lua @@ -0,0 +1,36 @@ +--Guidance to Salvation +-- By Shad3 + +local scard=c511005007 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=1500 +end + +function scard.fil(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsAttackBelow(1500) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(scard.fil,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,scard.fil,tp,LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511005008.lua b/script/c511005008.lua new file mode 100644 index 00000000..de34ec40 --- /dev/null +++ b/script/c511005008.lua @@ -0,0 +1,25 @@ +--Pappycorn +-- By Shad3 + +local scard=c511005008 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetValue(scard.val) + c:RegisterEffect(e1) +end + +function scard.fil(c) + return c:IsCode(511002672) and c:IsFaceup() +end + +function scard.val(e,c) + if Duel.IsExistingMatchingCard(scard.fil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) then + return 1000 + end + return 0 +end \ No newline at end of file diff --git a/script/c511005009.lua b/script/c511005009.lua new file mode 100644 index 00000000..87e28111 --- /dev/null +++ b/script/c511005009.lua @@ -0,0 +1,62 @@ +--Mokusatsu +-- By Shad3 + +local scard=c511005009 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DRAW) + e1:SetCategory(CATEGORY_HANDES+CATEGORY_DRAW) + e1:SetCondition(scard.cont_cd) + e1:SetTarget(scard.cont_tg) + e1:SetOperation(scard.cont_op) + c:RegisterEffect(e1) + --Continuous + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCategory(CATEGORY_HANDES+CATEGORY_DRAW) + e2:SetCondition(scard.cont_cd) + e2:SetTarget(scard.cont_tg) + e2:SetOperation(scard.cont_op) + c:RegisterEffect(e2) +end + +function scard.cont_cd(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and r==REASON_RULE +end + +function scard.cont_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetParam(Duel.AnnounceCard(tp)) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,1,1-tp,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,1,1-tp,0) +end + +function scard.cont_op(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND) + if tg:GetCount()>0 then + -- Revision with OCG ruling + -- Duel.ConfirmCards(tp,tg) + local ng=tg:Filter(Card.IsCode,nil,Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + if ng:GetCount()>0 then + Duel.HintSelection(ng) + Duel.SendtoGrave(ng,REASON_EFFECT+REASON_DISCARD) + Duel.ShuffleHand(1-tp) + 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) + else + Duel.ShuffleHand(1-tp) + if Duel.SelectYesNo(1-tp,aux.Stringid(4001,3)) then Duel.Draw(1-tp,1,REASON_EFFECT) end + end + end +end \ No newline at end of file diff --git a/script/c511005010.lua b/script/c511005010.lua new file mode 100644 index 00000000..49fbd908 --- /dev/null +++ b/script/c511005010.lua @@ -0,0 +1,48 @@ +--Name Erasure +-- By Shad3 + +local scard,s_id=c511005010,511005010 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCategory(CATEGORY_HANDES+CATEGORY_DAMAGE) + e2:SetCondition(scard.cd) + e2:SetTarget(scard.tg) + e2:SetOperation(scard.op) + c:RegisterEffect(e2) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,s_id)==0 +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)>0 end + Duel.SetTargetParam(Duel.AnnounceCard(tp)) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,1,1-tp,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,1000,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0) + -- Revision with OCG ruling + -- Duel.ConfirmCards(tp,g) + local tg=g:Filter(Card.IsCode,nil,Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)) + if tg:GetCount()>0 then + Duel.HintSelection(tg) + Duel.SendtoGrave(tg,REASON_EFFECT+REASON_DISCARD) + else + Duel.Damage(tp,1000,REASON_EFFECT) + Duel.RegisterFlagEffect(tp,s_id,RESET_PHASE+PHASE_END,0,1) + end + Duel.ShuffleHand(1-tp) +end \ No newline at end of file diff --git a/script/c511005011.lua b/script/c511005011.lua new file mode 100644 index 00000000..ca5a2a24 --- /dev/null +++ b/script/c511005011.lua @@ -0,0 +1,41 @@ +--Negative Energy +-- By Shad3 + +local scard=c511005011 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetTarget(scard.act_tg) + e1:SetOperation(scard.act_op) + c:RegisterEffect(e1) +end + +function scard.act_fil(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) +end + +function scard.act_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(scard.act_fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(scard.act_fil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g,0,0,0) +end + +function scard.act_op(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetMatchingGroup(scard.act_fil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if tg:GetCount()>0 then + local tc=tg:GetFirst() + local c=e:GetHandler() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + tc=tg:GetNext() + end + end +end \ No newline at end of file diff --git a/script/c511005013.lua b/script/c511005013.lua new file mode 100644 index 00000000..84569df0 --- /dev/null +++ b/script/c511005013.lua @@ -0,0 +1,52 @@ +--Otonari Thunder +-- By Shad3 + +local scard=c511005013 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_DECK) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(scard.sum_cd) + e1:SetOperation(scard.sum_op) + c:RegisterEffect(e1) +end + +if not scard.Set_hunder then + scard.Set_hunder={ --This should be replaced when there's 'hunder' archetype + [21524779]=true, --Mahunder + [84530620]=true, --Pahunder + [57019473]=true, --Sishunder + [48049769]=true, --Thunder Seahorse + [84417082]=true, --Number 91 + [511002059]=true, --Number 91 (A) + [511005003]=true, --Brohunder + [511005013]=true --Otonari Thunder (this!) + --Rolling Thunder, Thunder Mountain to be added + } + + for _,i in ipairs{ + 71438011,78663366,61204971,34961968, + 698785,15510988,31786629,54752875, + 77506119,987311,50920465,14089428, + 21817254 + } do + scard.Set_hunder[i]=true + end +end + +function scard.hunder_fil(c) + return c:IsFaceup() and scard.Set_hunder[c:GetCode()] +end + +function scard.sum_cd(e,c) + if not c then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsAnyMatchingCard(tp,scard.hunder_fil,LOCATION_MZONE,0,4,nil) +end + +function scard.sum_op(e,tp,eg,ep,ev,re,r,rp,c) + Duel.ShuffleDeck(tp) +end \ No newline at end of file diff --git a/script/c511005014.lua b/script/c511005014.lua new file mode 100644 index 00000000..be80cf3a --- /dev/null +++ b/script/c511005014.lua @@ -0,0 +1,62 @@ +--Acid Hell Fly +-- By Shad3 + +local scard=c511005014 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetDescription(aux.Stringid(511005014,0)) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end + +function scard.fil(c) + return c:IsFaceup() and c:GetType()==TYPE_EQUIP+TYPE_SPELL +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and scard.fil(chkc) end + if chk==0 then return Duel.IsExistingTarget(scard.fil,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,scard.fil,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local tec=tc:GetEquipTarget() + local v=0 + if tec then + v=tec:GetAttack() + end + if Duel.Destroy(tc,REASON_EFFECT) then + if v==0 then return end + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(v/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tec:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(v-tec:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end + end +end \ No newline at end of file diff --git a/script/c511005015.lua b/script/c511005015.lua new file mode 100644 index 00000000..99b62011 --- /dev/null +++ b/script/c511005015.lua @@ -0,0 +1,37 @@ +--Sneak Attack +-- By Shad3 + +local scard=c511005015 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttackable,tp,LOCATION_MZONE,0,1,nil) end +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(Card.IsAttackable,tp,LOCATION_MZONE,0,1,nil) then return end + Duel.Hint(HINT_SELECTMSG,tp,524) + local ac=Duel.SelectMatchingCard(tp,Card.IsAttackable,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + local tc=nil + local tg_ok=Duel.IsExistingMatchingCard(Card.IsCanBeBattleTarget,tp,0,LOCATION_MZONE,1,nil,ac) + local direct_ok=false + if ac:IsHasEffect(EFFECT_DIRECT_ATTACK) or not tg_ok then + direct_ok=Duel.SelectYesNo(tp,31) + end + if direct_ok then + Duel.Damage(1-tp,ac:GetAttack(),REASON_BATTLE) + elseif tg_ok then + Duel.Hint(HINT_SELECTMSG,tp,525) + tc=Duel.SelectMatchingCard(tp,Card.IsCanBeBattleTarget,tp,0,LOCATION_MZONE,1,1,nil,ac):GetFirst() + Duel.CalculateDamage(ac,tc) + end +end \ No newline at end of file diff --git a/script/c511005016.lua b/script/c511005016.lua new file mode 100644 index 00000000..a82ffc52 --- /dev/null +++ b/script/c511005016.lua @@ -0,0 +1,41 @@ +--Astral Shift +-- By Shad3 + +local scard=c511005016 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCondition(scard.act_cd) + e1:SetTarget(scard.act_tg) + e1:SetOperation(scard.act_op) + c:RegisterEffect(e1) +end + +function scard.act_cd(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + return tc and tc:IsControler(tp) +end + +function scard.act_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,1,tp,0) +end + +function scard.act_op(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeAttackTarget(nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLED) + e1:SetOperation(scard.draw_op) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + Duel.RegisterEffect(e1,tp) +end + +function scard.draw_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,1,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511005017.lua b/script/c511005017.lua new file mode 100644 index 00000000..356757bc --- /dev/null +++ b/script/c511005017.lua @@ -0,0 +1,42 @@ +--Battery Unit Charge +-- Copied from Overlay Regen + +local scard=c511005017 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(scard.cost) + e1:SetTarget(scard.target) + e1:SetOperation(scard.activate) + c:RegisterEffect(e1) +end +function scard.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function scard.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function scard.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and scard.filter(chkc) end + if chk==0 then + if e:GetLabel()==0 then return false end + e:SetLabel(0) + return Duel.IsExistingTarget(scard.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + end + e:SetLabel(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,scard.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function scard.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) and c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(tc,Group.FromCards(c)) + end +end \ No newline at end of file diff --git a/script/c511005018.lua b/script/c511005018.lua new file mode 100644 index 00000000..6d1e1702 --- /dev/null +++ b/script/c511005018.lua @@ -0,0 +1,83 @@ +--Balance Blaster +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +function scard.initial_effect(c) + --Global Reg + if not scard.gl_chk then + scard.gl_chk=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetOperation(scard.flag_op) + Duel.RegisterEffect(ge1,0) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CUSTOM+s_id) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(scard.cd) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.flag_reg(c) + if c:IsFaceup() and c:GetFlagEffect(s_id)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabel(c:GetAttack()) + e1:SetOperation(scard.flag_raise) + c:RegisterEffect(e1) + c:RegisterFlagEffect(s_id,RESET_EVENT+0x1fe0000,0,1) + end +end + +function scard.flag_op(e,tp,eg,ep,ev,re,r,rp) + Duel.GetFieldGroup(0,LOCATION_MZONE,LOCATION_MZONE):ForEach(scard.flag_reg) +end + +function scard.flag_raise(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + Duel.RaiseEvent(Group.FromCards(c),EVENT_CUSTOM+s_id,e,REASON_EFFECT,rp,tp,e:GetLabel()) + e:SetLabel(c:GetAttack()) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(tp) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local val=ev-tc:GetAttack() + if val~=0 then + Duel.Damage(1-tp,math.abs(val),REASON_EFFECT) + tc:ResetEffect(EFFECT_UPDATE_ATTACK,RESET_CODE) + tc:ResetEffect(EFFECT_SET_ATTACK,RESET_CODE) + tc:ResetEffect(EFFECT_SET_ATTACK_FINAL,RESET_CODE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(val) + tc:RegisterEffect(e1) + while tc:GetAttack()~=ev do + e1:SetValue(e1:GetValue()+ev-tc:GetAttack()) + end + end +end \ No newline at end of file diff --git a/script/c511005019.lua b/script/c511005019.lua new file mode 100644 index 00000000..a3da1031 --- /dev/null +++ b/script/c511005019.lua @@ -0,0 +1,38 @@ +--Incornceivable +-- By Shad3 + +local scard=c511005019 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.fil(c,e,tp) + return c:IsCode(511005044) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetAttacker() + return ac:IsControler(1-tp) and ac:GetAttack()>=2500 +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(scard.fil,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,scard.fil,tp,LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if not tc then return end + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) then + Duel.ChangeAttackTarget(tc) + end +end \ No newline at end of file diff --git a/script/c511005020.lua b/script/c511005020.lua new file mode 100644 index 00000000..02409ca6 --- /dev/null +++ b/script/c511005020.lua @@ -0,0 +1,42 @@ +--Oopsword +-- By Shad3 + +local scard=c511005020 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + if rp==tp then return false end + if not (re and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET)) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + return g:GetFirst():IsOnField() +end + +function scard.lv3_fil(c,e,tp) + return c:GetLevel()==3 and c:IsRace(RACE_WARRIOR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(scard.lv3_fil,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(scard.lv3_fil,tp,LOCATION_GRAVE,0,nil,e,tp) + if g:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + Duel.ChangeTargetCard(ev,sg) +end \ No newline at end of file diff --git a/script/c511005021.lua b/script/c511005021.lua new file mode 100644 index 00000000..309eefe3 --- /dev/null +++ b/script/c511005021.lua @@ -0,0 +1,73 @@ +--Final Cross +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +function scard.initial_effect(c) + --Global effect + if not scard.gl_chk then + scard.gl_chk=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(scard.reg_op) + Duel.RegisterEffect(ge1,0) + end + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetPreoerty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.reg_op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(0,s_id)~=0 then return end + local c=eg:GetFirst() + while c do + if c:IsType(TYPE_SYNCHRO) then + Duel.RegisterFlagEffect(0,s_id,RESET_PHASE+PHASE_END,0,1) + return + end + c=eg:GetNext() + end +end + +function scard.at_fil(c) + return c:IsType(TYPE_SYNCHRO) and c:IsFaceup() and c:GetAttackAnnouncedCount()>0 and c:GetFlagEffect(s_id)==0 +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(0,s_id)~=0 +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and scard.at_fil(chkc) + if chk==0 then return Duel.IsExistingTarget(scard.at_fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp.scard.at_fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + tc:RegisterFlagEffect(s_id,RESET_EVENT+0x1fe0000+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+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511005022.lua b/script/c511005022.lua new file mode 100644 index 00000000..1c548360 --- /dev/null +++ b/script/c511005022.lua @@ -0,0 +1,61 @@ +--Bond's Reward +-- By Shad3 + +local scard=c511005022 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DAMAGE) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.fld_fil(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end + +function scard.grv_fil(c) + return c:IsAbleToRemove() and c:IsType(TYPE_SYNCHRO) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() end + if chk==0 then return Duel.IsExistingTarget(scard.fld_fil,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(scard.grv_fil,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SelectTarget(tp,scard.fld_fil,tp,LOCATION_MZONE,0,1,1,nil) +end + +function scard.grv_lvl_sum(c) + return c:GetLevel()*200 +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local tg=Duel.GetFieldGroup(tp,LOCATION_GRAVE,0):Filter(scard.grv_fil,nil) + if tc:IsRelateToEffect(e) and tg:GetCount()>0 then + if not Duel.Remove(tg,nil,REASON_EFFECT) then return end + local i=tg:Filter(Card.IsLocation,nil,LOCATION_REMOVED):GetSum(scard.grv_lvl_sum) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(i) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(scard.dmg_op) + e2:SetLabel(i) + Duel.RegisterEffect(e2,tp) + end +end + +function scard.dmg_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,e:GetLabel(),REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511005023.lua b/script/c511005023.lua new file mode 100644 index 00000000..f8f9f417 --- /dev/null +++ b/script/c511005023.lua @@ -0,0 +1,78 @@ +--Bonds of Hope +-- By Shad3 +--fixed by MLD +function c511005023.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(c511005023.condition) + e1:SetTarget(c511005023.target) + e1:SetOperation(c511005023.activate) + c:RegisterEffect(e1) +end +function c511005023.cfilter(c,tp) + return c:IsType(TYPE_XYZ) and c:IsControler(tp) +end +function c511005023.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511005023.cfilter,1,nil,tp) +end +function c511005023.filter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511005023.filter2(c) + return c:IsType(TYPE_XYZ) and c:IsFaceup() and c:GetOverlayCount()~=0 +end +function c511005023.filter3(c) + return c:IsType(TYPE_XYZ) and c:IsFaceup() +end +function c511005023.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511005023.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(c511005023.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) + and Duel.IsExistingMatchingCard(c511005023.filter2,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511005023.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511005023.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) or Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)<=0 then return end + local xc + local og=Group.CreateGroup() + if c:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ) + local xg=Duel.SelectMatchingCard(tp,c511005023.filter2,tp,LOCATION_MZONE,0,1,1,nil,TYPE_XYZ) + if xg:GetCount()>0 then + Duel.HintSelection(xg) + xc=xg:GetFirst() + og=xc:GetOverlayGroup() + c:CancelToGrave() + og:AddCard(c) + end + end + if og:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local ng=Duel.SelectMatchingCard(tp,c511005023.filter3,tp,LOCATION_MZONE,0,1,1,xc) + Duel.HintSelection(ng) + local nc=ng:GetFirst() + Duel.Overlay(nc,og) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c511005023.desop) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) +end +function c511005023.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and tc:IsOnField() then Duel.Destroy(tc,REASON_EFFECT) end +end diff --git a/script/c511005024.lua b/script/c511005024.lua new file mode 100644 index 00000000..c4561c47 --- /dev/null +++ b/script/c511005024.lua @@ -0,0 +1,41 @@ +--爆弾ウニ-ボム・アーチン- +-- By Shad3 +--fixed and cleanup by MLD +function c511005024.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511005024.condition) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(52140003,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c511005024.damcon) + e2:SetTarget(c511005024.damtg) + e2:SetOperation(c511005024.damop) + c:RegisterEffect(e2) +end +function c511005024.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp +end +function c511005024.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511005024.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511005024.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511005025.lua b/script/c511005025.lua new file mode 100644 index 00000000..d59357a3 --- /dev/null +++ b/script/c511005025.lua @@ -0,0 +1,45 @@ +--Bracer of Power +-- By Shad3 + +local scard=c511005025 + +function scard.initial_effect(c) + --Act + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EVENT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + 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) + --Inc ATK + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(500) + c:RegisterEffect(e3) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==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 scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + end +end \ No newline at end of file diff --git a/script/c511005026.lua b/script/c511005026.lua new file mode 100644 index 00000000..96002791 --- /dev/null +++ b/script/c511005026.lua @@ -0,0 +1,55 @@ +--Breaking the Norm +--By Shad3 + +local scard=c511005026 + +function scard.initial_effect(c) + --Activation + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.lv_fil(c,i) + return c:GetLevel()==i and not c:IsType(TYPE_XYZ) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local c=g:GetFirst() + while c do + if g:FilterCount(scard.lv_fil,nil,c:GetLevel())>=3 then return true end + c=g:GetNext() + end + return false +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local c=g:GetFirst() + local lv=0 + while c do + local i=c:GetLevel() + if g:FilterCount(scard.lv_fil,nil,i)>=3 then + lv=i + break + end + c=g:GetNext() + end + local dg=Duel.GetFieldGroup(1-tp,LOCATION_DECK,0) + Duel.ConfirmCards(tp,dg) + if lv>0 then + local tg=dg:Filter(scard.lv_fil,nil,lv):Filter(Card.IsCanBeSpecialSummoned,nil,e,0,tp,false,false):Select(tp,1,1,nil) + Duel.SpecialSummon(tg,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511005027.lua b/script/c511005027.lua new file mode 100644 index 00000000..d577366c --- /dev/null +++ b/script/c511005027.lua @@ -0,0 +1,40 @@ +--Overlay Assistance +-- By Shad3 + +local scard=c511005027 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.xyz_sum_fil(c,p) + return c:IsType(TYPE_XYZ) and c:GetControler()==p +end + +function scard.xyz_fup_fil(c) + return c:IsType(TYPE_XYZ) and c:IsFaceup() +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(scard.xyz_sum_fil,1,nil,1-tp) and Duel.GetFieldGroup(tp,LOCATION_HAND,0):GetCount()==0 +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,1,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=Duel.SelectMatchingCard(tp,scard.xyz_fup_fil,tp,0,LOCATION_MZONE,1,1,nil):GetFirst() + if not c then return end + local i=c:GetOverlayCount() + if i>0 then Duel.Draw(tp,i,REASON_EFFECT) end +end \ No newline at end of file diff --git a/script/c511005028.lua b/script/c511005028.lua new file mode 100644 index 00000000..172d9e89 --- /dev/null +++ b/script/c511005028.lua @@ -0,0 +1,45 @@ +--Overlay Banish + +local scard=c511005028 + +function scard.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_DETACH_EVENT) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCategory(CATEGORY_NEGATE) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + if not scard.global_chk then + scard['ev0']=nil + scard.global_chk=true + local ge=Effect.CreateEffect(c) + ge:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge:SetCode(EVENT_DETACH_MATERIAL) + ge:SetOperation(scard.det_op) + Duel.RegisterEffect(ge,0) + end +end + +function scard.det_op(e,tp,eg,ep,ev,re,r,rp) + local cid=Duel.GetCurrentChain() + if cid>0 then + scard['ev0']=Duel.GetChainInfo(cid,CHAININFO_CHAIN_ID) + end +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE and Duel.GetChainInfo(0,CHAININFO_CHAIN_ID)==scard['ev0'] and re:IsActiveType(TYPE_XYZ) and Duel.IsChainNegatable(ev) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end \ No newline at end of file diff --git a/script/c511005029.lua b/script/c511005029.lua new file mode 100644 index 00000000..8393e5c3 --- /dev/null +++ b/script/c511005029.lua @@ -0,0 +1,53 @@ +--Magic Blade - Ice Sword +-- By Shad3 + +local scard=c511005029 + +function scard.initial_effect(c) + --Act + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EVENT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + 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(scard.eq_lmt) + c:RegisterEffect(e2) + --Inc ATK + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(500) + c:RegisterEffect(e3) +end + +function scard.fil(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and scard.fil(chkc) end + if chk==0 then return Duel.IsExistingTarget(scard.fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,scard.fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + end +end + +function scard.eq_lmt(e,c) + return c:IsRace(RACE_WARRIOR) +end \ No newline at end of file diff --git a/script/c511005030.lua b/script/c511005030.lua new file mode 100644 index 00000000..e08a18a4 --- /dev/null +++ b/script/c511005030.lua @@ -0,0 +1,97 @@ +--Ojamachine Yellow +-- By Shad3 + +local scard=c511005030 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_DESTROYED) + e4:SetOperation(scard.des_op) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e5:SetValue(1) + c:RegisterEffect(e5) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local n=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chk==0 then return n>0 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then n=1 end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,n,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,n,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local n=Duel.GetLocationCount(tp,LOCATION_MZONE) + if n<1 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then n=1 end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,511005031,0xf,0x4011,0,1000,3,RACE_MACHINE,ATTRIBUTE_LIGHT) then return end + local g=Group.CreateGroup() + for i=1,n do + local token=Duel.CreateToken(tp,511005031) + if Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + g:AddCard(token) + end + end + Duel.SpecialSummonComplete() + g:KeepAlive() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(scard.tdes_cd) + e2:SetOperation(scard.tdes_op) + e2:SetLabelObject(g) + Duel.RegisterEffect(e2,tp) +end + +function scard.tdes_fil(c,g) + return g:IsContains(c) +end + +function scard.tdes_cd(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if eg:IsExists(scard.tdes_fil,1,nil,g) then + return true + elseif not g:IsExists(Card.IsLocation,1,nil,LOCATION_MZONE) then + g:DeleteGroup() + e:Reset() + end + return false +end + +function scard.tdes_op(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tc=eg:GetFirst() + while tc do + if g:IsContains(tc) then + Duel.Damage(1-tc:GetPreviousControler(),300,REASON_EFFECT) + g:RemoveCard(tc) + end + tc=eg:GetNext() + end +end + +function scard.des_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-e:GetHandler():GetPreviousControler(),300,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511005032.lua b/script/c511005032.lua new file mode 100644 index 00000000..3e1248ed --- /dev/null +++ b/script/c511005032.lua @@ -0,0 +1,71 @@ +--Line World +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Line Monster 500 atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(scard.line_val) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EFFECT_SEND_REPLACE) + e3:SetRange(LOCATION_FZONE) + e3:SetTarget(scard.tg) + e3:SetValue(scard.val) + c:RegisterEffect(e3) +end + +if not scard.SetLineW then + scard.setLineW={ + [41493640]=true, + [32476434]=true, + [75253697]=true, + [511005006]=true + } +end + +function scard.line_val(e,c) + if scard.setLineW[c:GetCode()] then return 500 end + return 0 +end + +function scard.fil(c) + return c:GetFlagEffect(s_id)==0 and bit.band(c:GetReason(),REASON_DESTROY)~=0 and bit.band(c:GetReason(),REASON_RULE)==0 and c:GetDestination()==LOCATION_GRAVE and c:GetOwner()~=c:GetReasonPlayer() and not c:IsType(TYPE_TOKEN) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(scard.fil,1,nil) end + local c=eg:GetFirst() + local ph=Duel.GetCurrentPhase() + while c do + if scard.fil(c) then + c:RegisterFlagEffect(s_id,RESET_EVENT+0x1be0000+RESET_PHASE+ph,0,0) + Duel.SendtoGrave(c,r,c:GetReasonPlayer()) + end + c=eg:GetNext() + end + return true +end + +function scard.val(e,c) + return false +end \ No newline at end of file diff --git a/script/c511005033.lua b/script/c511005033.lua new file mode 100644 index 00000000..431112b3 --- /dev/null +++ b/script/c511005033.lua @@ -0,0 +1,41 @@ +--Line World Revival +-- By Shad3 + +local scard=c511005033 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.lw_fil(c) + return c:IsCode(511005032) and c:IsFaceup() +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(scard.lw_fil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end + +function scard.sum_fil(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(scard.sum_fil,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local g=Duel.GetMatchingGroup(scard.sum_fil,tp,LOCATION_GRAVE,0,nil,e,tp) + if g:GetCount()<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + Duel.SpecialSummon(g:Select(tp,1,1,nil),0,tp,tp,false,false,POS_FACEUP) +end \ No newline at end of file diff --git a/script/c511005035.lua b/script/c511005035.lua new file mode 100644 index 00000000..38aea691 --- /dev/null +++ b/script/c511005035.lua @@ -0,0 +1,76 @@ +--Double Buster Swords +-- By Shad3 + +local scard=c511005035 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + 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(scard.eq_lmt) + c:RegisterEffect(e2) + --2 ATKs + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(1) + c:RegisterEffect(e3) + --Pierce + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e4) + --Destroy End Phase + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetRange(LOCATION_SZONE) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetCountLimit(1) + e5:SetDescription(1101) + e5:SetOperation(scard.des_op) + c:RegisterEffect(e5) +end + +function scard.eq_fil(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and scard.eq_fil(chkc) end + if chk==0 then return Duel.IsExistingTarget(scard.eq_fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,scard.eq_fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + end +end + +function scard.eq_lmt(e,c) + return c:IsRace(RACE_WARRIOR) +end + +function scard.des_op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetEquipTarget() + if c:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511005036.lua b/script/c511005036.lua new file mode 100644 index 00000000..acbb258e --- /dev/null +++ b/script/c511005036.lua @@ -0,0 +1,41 @@ +--Poseidon Wind +-- By Shad3 + +local scard=c511005036 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end + +function scard.attr_fil(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=Duel.GetAttacker() + if chkc then return chkc==tc end + if chk==0 then return tc:IsOnField() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) + local n=Duel.GetMatchingGroup(scard.attr_fil,tp,LOCATION_MZONE,0,nil):GetCount() + if n>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,n*800) end +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then Duel.NegateAttack() end + local n=Duel.GetMatchingGroup(scard.attr_fil,tp,LOCATION_MZONE,0,nil):GetCount() + if n>0 then Duel.Damage(1-tp,n*800,REASON_EFFECT) end +end \ No newline at end of file diff --git a/script/c511005038.lua b/script/c511005038.lua new file mode 100644 index 00000000..6b11ab66 --- /dev/null +++ b/script/c511005038.lua @@ -0,0 +1,44 @@ +--Synchro Overlimit +-- By Shad3 + +local scard=c511005038 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(scard.cd) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.syn_fil(c,p) + return c:IsOnField() and c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsControler(p) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return scard.syn_fil(Duel.GetAttacker(),tp) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsOnField() and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e2:SetOperation(scard.des_op) + tc:RegisterEffect(e2) + end +end + +function scard.des_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511005039.lua b/script/c511005039.lua new file mode 100644 index 00000000..5a0c07d7 --- /dev/null +++ b/script/c511005039.lua @@ -0,0 +1,39 @@ +--Synchro Rivalry +-- By Shad3 + +local scard=c511005039 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(scard.cd) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end + +function scard.syn_fil(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsControler(p) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(scard.syn_fil,1,nil,1-tp) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end \ No newline at end of file diff --git a/script/c511005040.lua b/script/c511005040.lua new file mode 100644 index 00000000..468678d6 --- /dev/null +++ b/script/c511005040.lua @@ -0,0 +1,32 @@ +--Surprise Inspection +-- By Shad3 + +local scard=c511005040 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_POSITION) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.fd_fil(c) + return c:GetPosition()==POS_FACEDOWN_DEFENSE +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() end + if chk==0 then return Duel.IsExistingTarget(scard.fd_fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + Duel.SetOperationInfo(0,CATEGORY_POSITION,Duel.SelectTarget(tp,scard.fd_fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil),1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) end +end \ No newline at end of file diff --git a/script/c511005041.lua b/script/c511005041.lua new file mode 100644 index 00000000..74b5ef45 --- /dev/null +++ b/script/c511005041.lua @@ -0,0 +1,31 @@ +--Traplin +-- By Shad3 + +local scard=c511005041 + +function scard.initial_effect(c) + --SpSummon proc + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(scard.sp_cd) + e1:SetOperation(scard.sp_op) + c:RegisterEffect(e1) +end + +function scard.sp_fil(c) + return c:IsType(TYPE_TRAP+TYPE_CONTINUOUS) and c:IsFaceup() and c:IsReleasable() +end + +function scard.sp_cd(e,c) + if c==nil then return true end + local tp=c:GetOwner() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(scard.sp_fil,tp,LOCATION_SZONE,0,1,nil) +end + +function scard.sp_op(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + Duel.Release(Duel.SelectMatchingCard(tp,scard.sp_fil,tp,LOCATION_SZONE,0,1,1,nil),REASON_COST) +end \ No newline at end of file diff --git a/script/c511005042.lua b/script/c511005042.lua new file mode 100644 index 00000000..ef21a949 --- /dev/null +++ b/script/c511005042.lua @@ -0,0 +1,29 @@ +--Hell Centipede +-- By Shad3 + +local scard=c511005042 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(scard.sum_cd) + e1:SetDescription(aux.Stringid(4001,4)) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_SETCODE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(0x21b) + c:RegisterEffect(e2) +end + +function scard.sum_cd(e,c) + if c==nil then return true end + local tp=c:GetControler() + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end \ No newline at end of file diff --git a/script/c511005043.lua b/script/c511005043.lua new file mode 100644 index 00000000..c0d655cd --- /dev/null +++ b/script/c511005043.lua @@ -0,0 +1,64 @@ +--Eternal Bond +-- By Shad3 + +local scard=c511005043 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.fil(c,e,tp) + return c:IsSetCard(0x55) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(scard.fil,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end + +function scard.ph_fil(c,tp) + return c:IsFaceup() and c:IsSetCard(0x55) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local n=Duel.GetLocationCount(tp,LOCATION_MZONE) + if n<1 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then n=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,scard.fil,tp,LOCATION_GRAVE,0,n,n,nil,e,tp) + if g:GetCount()==0 then return end + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + Duel.BreakEffect() + local ng=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE):Filter(scard.ph_fil,nil) + local tpn=ng:FilterCount(Card.IsControler,nil,tp) + local npn=ng:FilterCount(Card.IsControler,nil,1-tp) + if tpn<=npn or tpn+npn==1 then return end + if npn>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + tc=ng:Filter(Card.IsControler,nil,1-tp):FilterSelect(tp,Card.IsControlerCanBeChanged,1,1,nil):GetFirst() + if tc then Duel.GetControl(tc,tp) end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + tc=ng:FilterSelect(tp,Card.IsControler,1,1,nil,tp):GetFirst() + ng:RemoveCard(tc) + local val=ng:GetSum(Card.GetAttack) + if val==0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(val) + tc:RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511005044.lua b/script/c511005044.lua new file mode 100644 index 00000000..b659cdc9 --- /dev/null +++ b/script/c511005044.lua @@ -0,0 +1,27 @@ +--Giant Kra-Corn +-- By Shad3 + +local scard=c511005044 +function scard.initial_effect(c) + --Continual effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(scard.tg) + e1:SetValue(scard.val) + c:RegisterEffect(e1) +end + +function scard.fil(c) + return c:IsRace(RACE_PLANT) and c:IsPosition(POS_FACEUP_ATTACK) +end + +function scard.tg(e,c) + return scard.fil(c) +end + +function scard.val(e,c) + return Duel.GetMatchingGroup(scard.fil,c:GetControler(),LOCATION_MZONE,0,c):GetSum(Card.GetBaseAttack) +end \ No newline at end of file diff --git a/script/c511005045.lua b/script/c511005045.lua new file mode 100644 index 00000000..1358b0e2 --- /dev/null +++ b/script/c511005045.lua @@ -0,0 +1,62 @@ +--Galactic Fury +-- By Shad3 + +local scard=c511005045 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Global check + if not scard.gl_chk then + scard.gl_chk=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE) + ge1:SetOperation(scard.reg_op) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_TURN_END) + ge2:SetOperation(scard.clr_op) + Duel.RegisterEffect(ge2,0) + scard.dmg={[0]=0,[1]=0} + end +end + +function scard.reg_op(e,tp,eg,ep,ev,re,r,rp) + scard.dmg[ep]=scard.dmg[ep]+ev +end + +function scard.clr_op(e,tp,eg,ep,ev,re,r,rp) + scard.dmg[0]=0 + scard.dmg[1]=0 +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return scard.dmg[tp]>0 +end + +function scard.sum_fil(c,e,tp) + return c:IsSetCard(0x7b) and c:IsDefenseBelow(scard.dmg[tp]) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(scard.sum_fil,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,scard.sum_fil,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(o,CATEGORY_SPECIAL_SUMMON,g,1,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511005046.lua b/script/c511005046.lua new file mode 100644 index 00000000..4d938e95 --- /dev/null +++ b/script/c511005046.lua @@ -0,0 +1,85 @@ +--Final Prophecy +-- By Shad3 + +local scard=c511005046 + +function scard.initial_effect(c) + --Damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_SZONE) + e1:SetDescription(aux.Stringid(511005046,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetCondition(scard.dm_cd) + e1:SetTarget(scard.dm_tg) + e1:SetOperation(scard.dm_op) + e1:SetCountLimit(1) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_CHAINING) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetCondition(scard.cd) + e2:SetCost(scard.cs) + e2:SetTarget(scard.tg) + e2:SetOperation(scard.op) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end + +function scard.dm_cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetFlagEffect(511005046)==0 +end + +function scard.dm_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,e:GetLabel()) +end + +function scard.dm_op(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if e:GetLabel()>0 then + Duel.Damage(tp,e:GetLabel(),REASON_EFFECT) + Duel.Damage(1-tp,e:GetLabel(),REASON_EFFECT) + end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) and rp~=tp +end + +function scard.eq_fil(c) + return c:IsType(TYPE_EQUIP) and c:IsFaceup() +end + +function scard.cs(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(scard.eq_fil,tp,LOCATION_SZONE,0,1,nil) end + local g=Duel.SelectMatchingCard(tp,scard.eq_fil,tp,LOCATION_ONFIELD,0,1,1,nil) + local tc=g:GetFirst():GetEquipTarget() + local atk=tc:GetAttack() + Duel.Destroy(g,REASON_COST) + e:GetLabelObject():SetLabel(math.abs(atk-tc:GetAttack())) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.NegateEffect(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(re:GetHandler(),REASON_EFFECT) + end + if Duel.GetCurrentPhase()==PHASE_STANDBY and Duel.GetTurnPlayer()==tp then + e:GetHandler():RegisterFlagEffect(511005046,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + end +end \ No newline at end of file diff --git a/script/c511005047.lua b/script/c511005047.lua new file mode 100644 index 00000000..7a0c4779 --- /dev/null +++ b/script/c511005047.lua @@ -0,0 +1,32 @@ +--Final Life Gardna +-- By Shad3 + +local scard=c511005047 +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(scard.cd) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>=Duel.GetLP(tp) +end + +function scard.op(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_PRE_BATTLE_DAMAGE) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + e1:SetOperation(scard.zero_op) + Duel.RegisterEffect(e1,tp) + Duel.SetLP(tp,100) + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end + +function scard.zero_op(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end \ No newline at end of file diff --git a/script/c511005048.lua b/script/c511005048.lua new file mode 100644 index 00000000..16a9ad3b --- /dev/null +++ b/script/c511005048.lua @@ -0,0 +1,49 @@ +--Smoke Mirror +-- By Shad3 +--fixed by MLD +function c511005048.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c511005048.condition) + e1:SetTarget(c511005048.target) + e1:SetOperation(c511005048.activate) + c:RegisterEffect(e1) +end +function c511005048.cfilter(c,tp) + return c:IsType(TYPE_MONSTER) and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,2,c,c:GetCode()) +end +function c511005048.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and Duel.IsExistingMatchingCard(c511005048.cfilter,tp,LOCATION_GRAVE,0,1,nil,tp) +end +function c511005048.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c511005048.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) + and Duel.IsExistingMatchingCard(c511005048.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511005048.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511005048.filter,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetValue(g:GetFirst():GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c511005049.lua b/script/c511005049.lua new file mode 100644 index 00000000..e40dd194 --- /dev/null +++ b/script/c511005049.lua @@ -0,0 +1,43 @@ +--AC - Haunted Lance +-- By Shad3 + +local scard=c511005049 + +function scard.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:SetTarget(scard.target) + e1:SetOperation(scard.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + c:RegisterEffect(e2) +end +function scard.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function scard.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511005050.lua b/script/c511005050.lua new file mode 100644 index 00000000..470e4567 --- /dev/null +++ b/script/c511005050.lua @@ -0,0 +1,37 @@ +--Spell Summon Stopper +-- By Shad3 + +local scard=c511005050 + +function scard.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:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END,2) + e1:SetValue(scard.lm_val) + e1:SetLabel(Duel.GetTurnCount()) + Duel.RegisterEffect(e1,p) +end + +function scard.lm_val(e,re,tp) + return Duel.GetTurnCount()>e:GetLabel() and re:IsActiveType(TYPE_SPELL) and (re:IsHasCategory(CATEGORY_SUMMON) or re:IsHasCategory(CATEGORY_SPECIAL_SUMMON)) +end \ No newline at end of file diff --git a/script/c511005051.lua b/script/c511005051.lua new file mode 100644 index 00000000..2d732d34 --- /dev/null +++ b/script/c511005051.lua @@ -0,0 +1,51 @@ +--Phantom Scales +-- By Shad3 + +local scard=c511005051 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.sel_fil(c,e) + return c:IsFaceup() and c:IsRace(RACE_INSECT) and c:IsCanBeEffectTarget(e) +end + +function scard.sum_fil(c,e,p,co) + return c:IsCode(co) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsFaceup() and chkc:IsOnField() end + local g=Duel.GetMatchingGroup(scard.sel_fil,tp,LOCATION_MZONE,0,nil,e) + local tg=g:Clone() + local c=g:GetFirst() + while c do + if Duel.GetMatchingGroupCount(scard.sum_fil,tp,LOCATION_DECK,0,nil,e,tp,c:GetCode())==0 then + tg:RemoveCard(c) + end + c=g:GetNext() + end + if chk==0 then return tg:GetCount()>0 end + local tc=tg:Select(tp,1,1,nil) + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local ttc=Duel.SelectMatchingCard(tp,scard.sum_fil,tp,LOCATION_DECK,0,1,1,nil,e,tp,tc:GetCode()):GetFirst() + if ttc then + Duel.SpecialSummon(ttc,0,tp,tp,false,false,POS_FACEUP) + end + end +end \ No newline at end of file diff --git a/script/c511005052.lua b/script/c511005052.lua new file mode 100644 index 00000000..6ca4eb06 --- /dev/null +++ b/script/c511005052.lua @@ -0,0 +1,66 @@ +--Photon Specter +-- By Shad3 + +local scard=c511005052 + +function scard.initial_effect(c) + --Trigger + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetDescription(aux.Stringid(511005052,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCondition(scard.cd) + e1:SetCost(scard.cs) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and not Duel.GetAttackTarget() +end + +function scard.cs(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),nil,REASON_COST) +end + +function scard.sm_fil(c,e,tp) + return c:IsSetCard(0x55) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and scard.sm_fil(chkc) end + if chk==0 then return Duel.IsExistingTarget(scard.sm_fil,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,Duel.SelectTarget(tp,scard.sm_fil,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp),1,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE_EFFECT) + e1:SetReset(RESET_EVENT+0x1fe0000) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE) + local e3=e1:Clone() + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(-1000) + local e4=e1:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(1) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + tc:RegisterEffect(e2) + tc:RegisterEffect(e1) + tc:RegisterEffect(e4) + end + Duel.SpecialSummonComplete() + end +end \ No newline at end of file diff --git a/script/c511005053.lua b/script/c511005053.lua new file mode 100644 index 00000000..5c2a59b2 --- /dev/null +++ b/script/c511005053.lua @@ -0,0 +1,77 @@ +--Galaxy Shot +-- By Shad3 + +local scard=c511005053 + +function scard.initial_effect(c) + --Act + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + 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(scard.eq_lmt) + c:RegisterEffect(e2) + --Trb + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCondition(scard.dm_cd) + e3:SetTarget(scard.dm_tg) + e3:SetOperation(scard.dm_op) + c:RegisterEffect(e3) +end + +function scard.fil(c) + return c:IsFaceup() and c:IsSetCard(0x107b) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and scard.fil(chkc) end + if chk==0 then return Duel.IsExistingTarget(scard.fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,scard.fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + end +end + +function scard.eq_lmt(e,c) + return c:IsSetCard(0x107b) +end + +function scard.dm_cd(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep and eg:GetFirst()==e:GetHandler():GetEquipTarget() +end + +function scard.dm_tg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler():GetEquipTarget() + if chk==0 then return c:IsReleasable() end + local atk=c:GetAttack() + Duel.Release(c,REASON_COST) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end + +function scard.dm_op(e,tp,eg,ep,ev,re,r,rp) + local p,dmg=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,dmg,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511005054.lua b/script/c511005054.lua new file mode 100644 index 00000000..9e7f6d5f --- /dev/null +++ b/script/c511005054.lua @@ -0,0 +1,103 @@ +--Prediction +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() +local _str=4001 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Predict + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCategory(CATEGORY_NEGATE) + e2:SetCountLimit(1) + e2:SetCondition(scard.cont_cd) + e2:SetOperation(scard.cont_op) + c:RegisterEffect(e2) + --Negate Prediction + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAINING) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(scard.neg_cd) + e3:SetOperation(scard.neg_op) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SUMMON) + e4:SetCondition(scard.neg1_cd) + e4:SetOperation(scard.negs_op) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_FLIP_SUMMON) + e5:SetCondition(scard.neg2_cd) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EVENT_SPSUMMON) + e6:SetCondition(scard.neg3_cd) + c:RegisterEffect(e6) + c:RegisterFlagEffect(s_id,0,0,0) + --Reset Prediction + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_TURN_END) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e7:SetCountLimit(1) + e7:SetOperation(scard.rst_op) + c:RegisterEffect(e7) +end + +function scard.cont_cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end + +function scard.cont_op(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local cde=Duel.AnnounceCard(tp) + local act=Duel.SelectOption(tp,aux.Stringid(_str,5),aux.Stringid(_str,6),aux.Stringid(_str,7),aux.Stringid(_str,8)) + e:SetLabel(act) + e:GetHandler():SetFlagEffectLabel(s_id,cde) +end + +function scard.neg_cd(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and e:GetLabelObject():GetLabel()==0 and re:GetHandler():IsCode(e:GetHandler():GetFlagEffectLabel(s_id)) and Duel.IsChainNegatable(ev) +end + +function scard.neg_op(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) +end + +function scard.neg1_cd(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and Duel.GetCurrentChain()==0 and e:GetLabelObject():GetLabel()==1 and eg:IsExists(Card.IsCode,1,nil,e:GetHandler():GetFlagEffectLabel(s_id)) +end + +function scard.neg2_cd(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and Duel.GetCurrentChain()==0 and e:GetLabelObject():GetLabel()==2 and eg:IsExists(Card.IsCode,1,nil,e:GetHandler():GetFlagEffectLabel(s_id)) +end + +function scard.neg3_cd(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and Duel.GetCurrentChain()==0 and e:GetLabelObject():GetLabel()==3 and eg:IsExists(Card.IsCode,1,nil,e:GetHandler():GetFlagEffectLabel(s_id)) +end + +function scard.negs_op(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) +end + +function scard.rst_op(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():SetFlagEffectLabel(s_id,0) +end \ No newline at end of file diff --git a/script/c511005055.lua b/script/c511005055.lua new file mode 100644 index 00000000..7e8fbd4e --- /dev/null +++ b/script/c511005055.lua @@ -0,0 +1,77 @@ +--Flattery +-- By Shad3 + +local scard,s_id=c511005055,511005055 + +function scard.initial_effect(c) + --Global Reg + if not scard.gl_chk then + scard.gl_chk=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetOperation(scard.flag_op) + Duel.RegisterEffect(ge1,0) + end + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CUSTOM+s_id) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.flag_reg(c) + if c:IsFaceup() and c:GetFlagEffect(s_id)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabel(c:GetAttack()) + e1:SetOperation(scard.flag_raise) + c:RegisterEffect(e1) + c:RegisterFlagEffect(s_id,RESET_EVENT+0x1fe0000,0,1) + end +end + +function scard.flag_op(e,tp,eg,ep,ev,re,r,rp) + Duel.GetFieldGroup(0,LOCATION_MZONE,LOCATION_MZONE):ForEach(scard.flag_reg) +end + +function scard.flag_raise(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local ph=Duel.GetCurrentPhase() + if ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE then + Duel.RaiseEvent(Group.FromCards(c),EVENT_CUSTOM+s_id,e,REASON_EFFECT,rp,tp,math.abs(e:GetLabel()-c:GetAttack())) + end + e:SetLabel(c:GetAttack()) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsFaceup() and chkc:IsControler(tp) end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(ev) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511005056.lua b/script/c511005056.lua new file mode 100644 index 00000000..dcbc551c --- /dev/null +++ b/script/c511005056.lua @@ -0,0 +1,102 @@ +--Reservation Reward +-- By Shad3 + +local scard=c511005056 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(scard.cd) + e2:SetOperation(scard.op) + c:RegisterEffect(e2) + --Set + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(scard.set_tg) + e3:SetOperation(scard.set_op) + e3:SetCountLimit(1) + c:RegisterEffect(e3) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) and re:IsActiveType(TYPE_SPELL) and re:IsActiveType(TYPE_QUICKPLAY) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local eg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + local tc=eg:GetFirst() + while tc do + if tc:IsFaceup() and tc:IsLocation(LOCATION_MZONE) then + if not c:IsRelateToCard(tc) then + c:CreateRelation(tc,RESET_EVENT+0x1fe0000) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(scard.fx_cd) + tc:RegisterEffect(e1) + end + if c:IsRelateToCard(re:GetHandler()) and not c:IsHasCardTarget(tc) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(scard.dbl_cd) + e1:SetValue(scard.dbl_val) + tc:RegisterEffect(e1) + end + end + tc=eg:GetNext() + end +end + +function scard.fx_cd(e,c) + if e:GetOwner():IsRelateToCard(e:GetHandler()) then return e:GetHandler():GetControler()==e:GetOwner():GetControler() end + e:Reset() + return false +end + +function scard.dbl_cd(e,c) + if e:GetOwner():IsRelateToCard(e:GetHandler()) then + local ph=Duel.GetCurrentPhase() + return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE + end + e:Reset() + return false +end + +function scard.dbl_val(e,c) + return c:GetAttack()*2 +end + +function scard.qui_fil(c) + return c:IsType(TYPE_SPELL) and c:IsType(TYPE_QUICKPLAY) and c:IsSSetable() +end + +function scard.set_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.IsExistingMatchingCard(scard.qui_fil,tp,LOCATION_HAND,0,1,nil) end +end + +function scard.set_op(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.SelectMatchingCard(tp,scard.qui_fil,tp,LOCATION_HAND,0,1,1,nil):GetFirst() + if tc then + Duel.SSet(tp,tc) + tc:SetStatus(STATUS_SET_TURN,false) + e:GetHandler():CreateRelation(tc,RESET_EVENT+0x1fe0000) + Duel.RaiseEvent(tc,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) + end +end \ No newline at end of file diff --git a/script/c511005057.lua b/script/c511005057.lua new file mode 100644 index 00000000..6cde3914 --- /dev/null +++ b/script/c511005057.lua @@ -0,0 +1,119 @@ +--Remember Attack +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +function scard.initial_effect(c) + --Flag to avoid infinite loop + scard['no_react_ev']=true + --Global reg + if not scard['gl_reg'] then + scard['gl_reg']=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHAIN_NEGATED) + ge1:SetOperation(scard.flag_op) + Duel.RegisterEffect(ge1,0) + end + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.flag_op(e,tp,eg,ep,ev,re,r,rp) + if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetCode()==EVENT_FREE_CHAIN then + local c=re:GetHandler() + if c:GetOriginalCode()==s_id then return end + if c:GetFlagEffect(s_id)~=0 then c:ResetFlagEffect(s_id) end + c:RegisterFlagEffect(s_id,RESET_PHASE+PHASE_END,0,3) + c:RegisterFlagEffect(s_id,RESET_PHASE+PHASE_END,0,1) + end +end + +function scard.rpl_fil(c,e,tp,eg,ep,ev,re,r,rp) + if c:GetFlagEffect(s_id)==1 and not + scard['no_react_ev'] and c:IsCanBeEffectTarget(e) then + local te=c:GetActivateEffect() + if not te then return false end + local cd=te:GetCondition() + local cs=te:GetCost() + local tg=te:GetTarget() + return te:IsActivatable(tp) and + (not cd or cd(te,tp,eg,ep,ev,re,r,rp)) and + (not cs or cs(te,tp,eg,ep,ev,re,r,rp,0)) and + (not tg or tg(te,tp,eg,ep,ev,re,r,rp,0)) + end + return false +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(scard.rpl_fil,tp,LOCATION_GRAVE,0,nil,e,tp,eg,ep,ev,re,r,rp) + if chk==0 then + local loc + if e:GetHandler():IsLocation(LOCATION_SZONE) then + loc=Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + else + loc=Duel.GetLocationCount(tp,LOCATION_SZONE)>1 + end + return loc and g:GetCount()>0 + end + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,550) + local tc=g:Select(tp,1,1,nil) + Duel.SetTargetCard(tc) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_SZONE)<1 then return end + local te=tc:GetActivateEffect() + local cd=te:GetCondition() + local cs=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + if te:IsActivatable(tp) and + (not cd or cd(te,tp,eg,ep,ev,re,r,rp)) and + (not cs or cs(te,tp,eg,ep,ev,re,r,rp,0)) and + (not tg or tg(te,tp,eg,ep,ev,re,r,rp,0)) + then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + if not (tc:IsType(TYPE_SPELL) and tc:IsType(TYPE_CONTINUOUS+TYPE_EQUIP)) then tc:CancelToGrave(false) end + if not tc:IsType(TYPE_SPELL) then return end + tc:CreateEffectRelation(te) + if cs then cs(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local tgc=g:GetFirst() + while tgc do + tgc:CreateEffectRelation(te) + tgc=g:GetNext() + end + end + tc:SetStatus(STATUS_ACTIVATED,true) + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if g then + local tgc=g:GetFirst() + while tgc do + tgc:ReleaseEffectRelation(te) + tgc=g:GetNext() + end + end + end +end \ No newline at end of file diff --git a/script/c511005058.lua b/script/c511005058.lua new file mode 100644 index 00000000..5f97be00 --- /dev/null +++ b/script/c511005058.lua @@ -0,0 +1,17 @@ +--Muscle Gardna +-- By Shad3 + +local scard=c511005058 + +function scard.initial_effect(c) + --Cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetCondition(scard.cd) + c:RegisterEffect(e1) +end + +function scard.cd(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)>1 +end \ No newline at end of file diff --git a/script/c511005059.lua b/script/c511005059.lua new file mode 100644 index 00000000..cf6ba1b2 --- /dev/null +++ b/script/c511005059.lua @@ -0,0 +1,62 @@ +--Overlay Marker +-- By Shad3 + +local scard=c511005059 + +function scard.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_DETACH_EVENT) + --Global Check + if not scard['gl_chk'] then + scard['gl_chk']=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DETACH_MATERIAL) + ge1:SetOperation(scard.flag_op) + Duel.RegisterEffect(ge1,0) + end + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.flag_op(e,tp,eg,ep,ev,re,r,rp) + local cid=Duel.GetCurrentChain() + if cid>0 then scard['det_chk']=Duel.GetChainInfo(cid,CHAININFO_CHAIN_ID) end +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker() and Duel.GetAttackTarget() and Duel.GetChainInfo(0,CHAININFO_CHAIN_ID)==scard['det_chk'] and re:IsActiveType(TYPE_XYZ) and re:GetHandler():GetOverlayCount()==0 and Duel.IsChainNegatable(ev) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end + local val=Duel.GetAttacker():GetAttack()+Duel.GetAttackTarget():GetAttack() + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,val) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(re:GetHandler(),REASON_EFFECT) + end + Duel.BreakEffect() + local val=0 + if Duel.GetAttacker() then val=val+Duel.GetAttacker():GetAttack() end + if Duel.GetAttackTarget() then val=val+Duel.GetAttackTarget():GetAttack() end + if val>0 then + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,val,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511005060.lua b/script/c511005060.lua new file mode 100644 index 00000000..6a80368d --- /dev/null +++ b/script/c511005060.lua @@ -0,0 +1,126 @@ +--Master Magician's Incantation +-- By Shad3 + +--Works perfectly for "EVENT_FREE_CHAIN" and "EVENT_CHAINING" spells only + +local scard=c511005060 + +function scard.initial_effect(c) + --Flag to avoid infinite loop + scard['no_react_ev']=true + --Global check + if not scard['gl_chk'] then + scard['gl_chk']=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHAINING) + ge1:SetOperation(scard.flag_op) + Duel.RegisterEffect(ge1,0) + end + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.flag_op(e,tp,eg,ep,ev,re,r,rp) + local ch=Duel.GetCurrentChain() + scard['cstore_'..ch]={eg,ep,ev,re,r,rp} +end + +function scard.hnd_fil(c,e,tp,eg,ep,ev,re,r,rp) + if c:IsType(TYPE_SPELL) and not scard['no_react_ev'] then + local te=c:GetActivateEffect() + if not te then return end + local cd=te:GetCondition() + local cs=te:GetCost() + local tg=te:GetTarget() + if te:GetCode()==EVENT_CHAINING then + local ch=Duel.GetCurrentChain()-1 + if ch>0 then + local i=scard['cstore_'..ch] + local neg,nep,nev,nre,nr,nrp=i[1],i[2],i[3],i[4],i[5] + return (not cd or cd(te,tp,neg,nep,nev,nre,nr,nrp)) and + (not cs or cs(te,tp,neg,nep,nev,nre,nr,nrp,0)) and + (not tg or tg(te,tp,neg,nep,nev,nre,nr,nrp,0)) + end + elseif te:GetCode()==EVENT_FREE_CHAIN then + return (not cd or cd(te,tp,eg,ep,ev,re,r,rp)) and + (not cs or cs(te,tp,eg,ep,ev,re,r,rp,0)) and + (not tg or tg(te,tp,eg,ep,ev,re,r,rp,0)) + end + end + return false +end + +function scard.szo_fil(c,e,tp,eg,ep,ev,re,r,rp) + return not c:IsFaceup() and scard.hnd_fil(c,e,tp,eg,ep,ev,re,r,rp) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local loc=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then loc=loc-1 end + if loc>0 then + return Duel.IsExistingMatchingCard(scard.szo_fil,tp,LOCATION_SZONE,0,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp) or Duel.IsExistingMatchingCard(scard.hnd_fil,tp,LOCATION_HAND,0,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp) + elseif loc==0 then + return Duel.IsExistingMatchingCard(scard.szo_fil,tp,LOCATION_SZONE,0,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp) + end + return false + end + e:SetProperty(0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local og=Duel.GetMatchingGroup(scard.szo_fil,tp,LOCATION_SZONE,0,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then + og:Merge(Duel.GetMatchingGroup(scard.hnd_fil,tp,LOCATION_HAND,0,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp)) + end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511005057,1)) + local tc=og:Select(tp,1,1,nil):GetFirst() + if not tc then return end + local te=tc:GetActivateEffect() + local cs=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + local neg,nep,nev,nre,nr,nrp=eg,ep,ev,re,r,rp + if te:GetCode()==EVENT_CHAINING then + local ch=Duel.GetCurrentChain()-1 + local i=scard['cstore_'..ch] + neg,nep,nev,nre,nr,nrp=i[1],i[2],i[3],i[4],i[5] + end + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + if tc:IsLocation(LOCATION_HAND) then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + else + Duel.ChangePosition(tc,POS_FACEUP) + end + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + if not (tc:IsType(TYPE_SPELL) and tc:IsType(TYPE_CONTINUOUS+TYPE_EQUIP)) then tc:CancelToGrave(false) end + if not tc:IsType(TYPE_SPELL) then return end + tc:CreateEffectRelation(te) + if cs then cs(te,tp,neg,nep,nev,nre,nr,nrp,1) end + if tg then tg(te,tp,neg,nep,nev,nre,nr,nrp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local tgc=g:GetFirst() + while tgc do + tgc:CreateEffectRelation(te) + tgc=g:GetNext() + end + end + tc:SetStatus(STATUS_ACTIVATED,true) + if op then op(te,tp,neg,nep,nev,nre,nr,nrp) end + tc:ReleaseEffectRelation(te) + if g then + local tgc=g:GetFirst() + while tgc do + tgc:ReleaseEffectRelation(te) + tgc=g:GetNext() + end + end +end \ No newline at end of file diff --git a/script/c511005061.lua b/script/c511005061.lua new file mode 100644 index 00000000..f7e2cb6a --- /dev/null +++ b/script/c511005061.lua @@ -0,0 +1,36 @@ +--Scrap and Build +-- By Shad3 +--fixed by MLD +function c511005061.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511005061.target) + e1:SetOperation(c511005061.activate) + c:RegisterEffect(e1) +end +function c511005061.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511005061.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511005061.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511005061.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511005061.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511005061.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511005063.lua b/script/c511005063.lua new file mode 100644 index 00000000..bd26c384 --- /dev/null +++ b/script/c511005063.lua @@ -0,0 +1,230 @@ +--Magical Hats (Anime) +-- By Shad3 + +local scard=c511005063 + +--Jack specific card effects -_- +if not scard.gl_chk then + scard.gl_chk=true + local regeff=Card.RegisterEffect + Card.RegisterEffect=function(c,e,f) + local tc=e:GetOwner() + if tc then + local tg=e:GetTarget() + if tg then + if c35803249 and tg==c35803249.distg then --Jinzo - Lord + --Debug.Message('"Jinzo - Lord" detected') + e:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + elseif c51452091 and tg==c51452091.distarget then --Royal Decree + --Debug.Message('"Royal Decree" detected') + e:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + elseif c77585513 and tg==c77585513.distg then --Jinzo + --Debug.Message('"Jinzo" detected') + e:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + elseif c84636823 and tg==c84636823.distg then --Spell Canceller + --Debug.Message('"Spell Canceller" detected') + e:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + end + end + end + return regeff(c,e,f) + end +end + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end + +function scard.fil(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsFaceup() +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local n=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chk==0 then return n>0 and Duel.IsExistingTarget(scard.fil,tp,LOCATION_MZONE,0,1,nil) end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then n=1 end + Duel.SelectTarget(tp,scard.fil,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,n,tp,0) +end + +function scard.sum_fil(c,e,tp) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetCode(),nil,0x11,0,0,0,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local loc=Duel.GetLocationCount(tp,LOCATION_MZONE) + if loc<1 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then loc=1 end + local gg=Duel.GetMatchingGroup(scard.sum_fil,tp,LOCATION_DECK,0,nil,e,tp) + local sg=Group.CreateGroup() + if gg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(4001,10)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + sg:Merge(gg:Select(tp,1,loc,nil)) + end + local sco=loc-sg:GetCount() + if sco>0 then + for i=1,sco do + sg:AddCard(Duel.CreateToken(tp,511005062)) + end + end + local stc=sg:GetFirst() + while stc do + local e1=Effect.CreateEffect(stc) + if stc:IsType(TYPE_SPELL+TYPE_TRAP) then + local te=stc:GetActivateEffect() + if te then + local se1=Effect.CreateEffect(stc) + se1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + se1:SetCondition(scard.mimica_cd) + se1:SetCost(scard.mimica_cs) + se1:SetTarget(scard.mimica_tg) + se1:SetOperation(scard.mimica_op) + se1:SetProperty(bit.bor(te:GetProperty(),EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)) + se1:SetCategory(te:GetCategory()) + se1:SetLabel(te:GetLabel()) + se1:SetLabelObject(te:GetLabelObject()) + se1:SetReset(RESET_EVENT+0x47c0000) + stc:RegisterEffect(se1) + local se2=Effect.CreateEffect(stc) + se2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + se2:SetCode(EVENT_FLIP) + se2:SetCondition(scard.mimica_cd) + se2:SetOperation(scard.mimica_rst) + se1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + se1:SetReset(RESET_EVENT+0x47c0000) + stc:RegisterEffect(se2) + if stc:IsType(TYPE_TRAP) then + local te1=Effect.CreateEffect(stc) + te1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + te1:SetCode(EVENT_BE_BATTLE_TARGET) + te1:SetRange(LOCATION_MZONE) + te1:SetCondition(scard.mimicb_cd) + te1:SetOperation(scard.mimicb_op) + te1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_UNCOPYABLE) + te1:SetReset(RESET_EVENT+0x47c0000) + stc:RegisterEffect(te1) + end + end + end + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(TYPE_NORMAL+TYPE_MONSTER) + e1:SetReset(RESET_EVENT+0x47c0000) + stc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_REMOVE_RACE) + e2:SetValue(RACE_ALL) + stc:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_REMOVE_ATTRIBUTE) + e3:SetValue(0xff) + stc:RegisterEffect(e3,true) + local e4=e1:Clone() + e4:SetCode(EFFECT_SET_BASE_ATTACK) + e4:SetValue(0) + stc:RegisterEffect(e4,true) + local e5=e1:Clone() + e5:SetCode(EFFECT_SET_BASE_DEFENSE) + e5:SetValue(0) + stc:RegisterEffect(e5,true) + stc:SetStatus(STATUS_NO_LEVEL,true) + stc=sg:GetNext() + end + Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEDOWN_DEFENSE) + if tc:IsFaceup() then + if tc:IsHasEffect(EFFECT_DEVINE_LIGHT) then Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + else + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + tc:ClearEffectRelation() + end + end + sg:AddCard(tc) + Duel.ConfirmCards(1-tp,sg) + Duel.ShuffleSetCard(sg) +end + +function scard.mimica_cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_DAMAGE or (re and e:GetHandler()==re:GetHandler()) +end + +function scard.mimica_rst(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():ResetEffect(EFFECT_CHANGE_TYPE,RESET_CODE) +end + +function scard.mimica_cs(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + c:AssumeProperty(ASSUME_TYPE,c:GetOriginalType()) + local te=c:GetActivateEffect() + local tprop=te:GetProperty() + te:SetProperty(bit.bor(tprop,EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)) + local act=te:IsActivatable(tp) + te:SetProperty(tprop) + if chk==0 then return act end + e:SetType(EFFECT_TYPE_ACTIVATE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetOperation(scard.mimica_endop) + c:CreateEffectRelation(e1) + Duel.RegisterEffect(e1,tp) + local cost=te:GetCost() + if cost then cost(te,tp,eg,ep,ev,re,r,rp,1) end +end + +function scard.mimica_tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local te=e:GetHandler():GetActivateEffect() + local targ=te:GetTarget() + if chkc then return targ and targ(tp,eg,ep,ev,re,r,rp,0,chkc) end + if chk==0 then return not targ or targ(te,tp,eg,ep,ev,re,r,rp,0) end + e:GetHandler():SetStatus(STATUS_ACTIVATED,true) + if targ then targ(te,tp,eg,ep,ev,re,r,rp,1) end +end + +function scard.mimica_op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local te=c:GetActivateEffect() + --local ote,ceg,cep,cev,cre,cr,crp=Duel.CheckEvent(te:GetCode(),true) + local oper=te:GetOperation() + if oper then oper(e,tp,eg,ep,ev,re,r,rp) end +end + +function scard.mimica_endop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetCurrentPhase()~=PHASE_DAMAGE and c:IsRelateToEffect(e) then + if Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and c:IsType(TYPE_CONTINUOUS) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + elseif not (c:IsType(TYPE_EQUIP) and c:GetEquipTarget()) then + Duel.SendtoGrave(c,REASON_RULE) + end + end + e:Reset() +end + +function scard.mimicb_cd(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:AssumeProperty(ASSUME_TYPE,c:GetOriginalType()) + local te=c:GetActivateEffect() + return te:IsActivatable(tp) +end + +function scard.mimicb_op(e,tp,eg,ep,ev,re,r,rp) + if not Duel.SelectYesNo(tp,aux.Stringid(4001,9)) then return end + local c=e:GetHandler() + Duel.ChangePosition(c,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE) +end diff --git a/script/c511005064.lua b/script/c511005064.lua new file mode 100644 index 00000000..e085d8d2 --- /dev/null +++ b/script/c511005064.lua @@ -0,0 +1,77 @@ +--Fusion Trench +-- By Shad3 +--fixed by MLD +function c511005064.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511005064.atktg) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c511005064.con) + e3:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_FUSION)) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(511005064) + c:RegisterEffect(e4) + if not c511005064.global_check then + c511005064.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511005064.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ATTACK_ANNOUNCE) + ge3:SetOperation(c511005064.checkop2) + Duel.RegisterEffect(ge3,0) + end +end +function c511005064.atktg(e,c) + return not c:IsType(TYPE_FUSION) +end +function c511005064.con(e) + return Duel.GetFlagEffect(Duel.GetTurnPlayer(),511005064)==0 +end +function c511005064.cfilter(c,tp) + return c:GetSummonPlayer()==tp and (not c:IsType(TYPE_FUSION) or c:IsFacedown()) +end +function c511005064.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(c511005064.cfilter,1,nil,Duel.GetTurnPlayer()) then + Duel.RegisterFlagEffect(Duel.GetTurnPlayer(),511005064,RESET_PHASE+PHASE_END,0,1) + end +end +function c511005064.checkop2(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if a:IsType(TYPE_FUSION) and Duel.GetAttackTarget()==nil and a:IsHasEffect(EFFECT_DIRECT_ATTACK) and a:IsHasEffect(511005064) then + local e1=Effect.CreateEffect(a) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetOperation(c511005064.checkop3) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + a:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_ATTACK_DISABLED) + a:RegisterEffect(e2) + end +end +function c511005064.checkop3(e,tp,eg,ep,ev,re,r,rp) + Duel.RegisterFlagEffect(Duel.GetTurnPlayer(),511005064,RESET_PHASE+PHASE_END,0,1) +end diff --git a/script/c511005065.lua b/script/c511005065.lua new file mode 100644 index 00000000..52ac4158 --- /dev/null +++ b/script/c511005065.lua @@ -0,0 +1,40 @@ +--Deep Anglerfish +-- By Shad3 +-- No Deep Anglerfish Jr. So no Special Summon part (still built like it's about to SpSummon) + +local scard=c511005065 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(4001,11)) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end + +function scard.fil(c) + return c:IsType(TYPE_FISH) and c:IsAbleToGrave() +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tg=Duel.SelectMatchingCard(tp,scard.fil,tp,LOCATION_DECK,0,1,1,nil) + if tg:GetCount()~=0 then + if Duel.SendtoGrave(tg,REASON_EFFECT)~=0 then + --Special Summon the nonexisting Deep Anglerfish Jr. + end + end +end \ No newline at end of file diff --git a/script/c511005066.lua b/script/c511005066.lua new file mode 100644 index 00000000..2655cbb4 --- /dev/null +++ b/script/c511005066.lua @@ -0,0 +1,54 @@ +--Triple Belly Knight (Manga) +-- By Shad3 + +local scard=c511005066 + +function scard.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(scard.mat_cd) + e1:SetOperation(scard.mat_op) + c:RegisterEffect(e1) +end + +function scard.mat_cd(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end + +function scard.mat_op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetReset(RESET_EVENT+0x5000000) + e1:SetDescription(aux.Stringid(4001,12)) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + rc:RegisterEffect(e1,true) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:GetOverlayCount()>0 and c:GetOverlayGroup():IsContains(e:GetOwner()) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0) +end + +function scard.fil(c,e,tp) + return c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,scard.fil,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + end +end \ No newline at end of file diff --git a/script/c511005067.lua b/script/c511005067.lua new file mode 100644 index 00000000..50481b91 --- /dev/null +++ b/script/c511005067.lua @@ -0,0 +1,54 @@ +--Sealer Formation +-- By Shad3 + +local scard=c511005067 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Add/Draw + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(scard.cd) + e2:SetOperation(scard.op) + c:RegisterEffect(e2) + --Global const + if not scard.gl_chk then + scard.gl_chk=true + scard.seal_lst={ + 25880422,29549364,63102017, + 58921041,511000176 + } + end +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 and Duel.GetDrawCount(tp)>0 +end + +function scard.fil(c) + for _,i=pairs(scard.seal_lst) do + if c:IsCode(i) then return c:IsAbleToHand() end + end + return false +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetDrawCount(tp)>0 and Duel.IsExistingMatchingCard(scard.fil,tp,LOCATION_GRAVE,0,1,nil) and Duel.SelectYesNo(tp,1) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + local g=Duel.SelectMatchingCard(tp,scard.fil,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,tp,REASON_EFFECT+REASON_REVEAL) end + end +end \ No newline at end of file diff --git a/script/c511005068.lua b/script/c511005068.lua new file mode 100644 index 00000000..084301d3 --- /dev/null +++ b/script/c511005068.lua @@ -0,0 +1,99 @@ +--Rivals Unite +-- By Shad3 + +local scard=c511005068 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_DISABLED) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Destroyed + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_DESTROYED) + e2:SetCategory(CATEGORY_CONTROL) + e2:SetCondition(scard.con_cd) + e2:SetOperation(scard.con_op) + c:RegisterEffect(e2) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + return bc and ac:IsLocation(LOCATION_MZONE) and bc:IsLocation(LOCATION_MZONE) and ac:IsControler(tp) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=Duel.GetAttackTarget() + if chk==0 then return bc and bc:IsFaceup() and bc:IsCanBeEffectTarget(e) and bc:IsControlerCanBeChanged() end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetValue(function(e,c) return e:GetHandlerPlayer() end) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetValue(function(e,c) return c==e:GetLabelObject() end) + e3:SetLabelObject(tc) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_DESTROYED) + e4:SetRange(LOCATION_SZONE) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetCondition(scard.des_cd) + e4:SetOperation(scard.des_op) + c:RegisterEffect(e4) + end +end + +function scard.des_cd(e,tp,eg,ep,ev,re,r,rp) + local rc=e:GetHandler():GetEquipTarget() + return rc and eg:IsExists(rc) +end + +function scard.des_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end + +function scard.con_cd(e,tp,eg,ep,ev,re,r,rp) + local rc=e:GetHandler():GetPreviousEquipTarget() + return rc and rc:IsLocation(LOCATION_ONFIELD) and rc:IsFaceup() +end + +function scard.con_op(e,tp,eg,ep,ev,re,r,rp) + local rc=e:GetHandler():GetPreviousEquipTarget() + if not rc or not rc:IsLocation(LOCATION_ONFIELD) or rc:IsFacedown() or rc:IsImmuneToEffect(e) then return end + rc:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetValue(rc:GetOwner()) + e1:SetReset(RESET_EVENT+0xec0000) + rc:RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511005069.lua b/script/c511005069.lua new file mode 100644 index 00000000..b4ddd4cf --- /dev/null +++ b/script/c511005069.lua @@ -0,0 +1,72 @@ +--Reverse Damage +-- By Shad3 + +local scard=c511005069 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(scard.cd) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Destroyed + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(scard.des_cd) + e2:SetOperation(scard.des_op) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(tp) or (Duel.GetAttackTarget() and Duel.GetAttackTarget():IsControler(tp)) +end + +function scard.sel_fil(c) + return c==Duel.GetAttacker() or c==Duel.GetAttackTarget() +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local fg=Duel.GetMatchingGroup(scard.sel_fil,tp,LOCATION_MZONE,0,nil) + local tc + if fg:GetCount()==1 then + tc=fg:GetFirst() + else + tc=fg:Select(tp,1,1,nil):GetFirst() + end + if not tc then return end + local c=e:GetHandler() + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetOperation(scard.dmg_op) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + e2:SetLabel(Duel.GetBattleDamage(tp)/2) + c:RegisterEffect(e2) + e:GetLabelObject():SetLabel(Duel.GetBattleDamage(tp)-e2:GetLabel()) +end + +function scard.dmg_op(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,e:GetLabel()) +end + +function scard.des_cd(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end + +function scard.des_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,e:GetLabel(),REASON_EFFECT) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511005070.lua b/script/c511005070.lua new file mode 100644 index 00000000..b6792f0f --- /dev/null +++ b/script/c511005070.lua @@ -0,0 +1,74 @@ +--Shield Fin +--シールド・フィン +-- By Shad3 + +local scard=c511005070 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + 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) + --ATK 0 + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetCondition(scard.at0_cd) + e3:SetOperation(scard.at0_op) + c:RegisterEffect(e3) +end + +function scard.tg(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 scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + end +end + +function scard.at0_cd(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return e:GetHandler():GetEquipTarget():GetAttack()>0 and ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE +end + +function scard.at0_op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=c:GetEquipTarget() + if not tc or tc:IsImmuneToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) +end \ No newline at end of file diff --git a/script/c511005071.lua b/script/c511005071.lua new file mode 100644 index 00000000..58af7061 --- /dev/null +++ b/script/c511005071.lua @@ -0,0 +1,126 @@ +--Power Gravity +--パワー・グラヴィティ +-- By Shad3 + +local scard,s_id=c511005071,511005071 + +function scard.initial_effect(c) + --Global Reg + if not scard.gl_chk then + scard.gl_chk=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetOperation(scard.flag_op) + Duel.RegisterEffect(ge1,0) + end + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CUSTOM+s_id) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(scard.sds_cd) + e2:SetOperation(scard.sds_op) + c:RegisterEffect(e2) + --flag check + local e3=Effect.CreateEffect(c) + e3:SetCode(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetCondition(scard.sds_flagcd) + e3:SetOperation(scard.sds_flagop) + c:RegisterEffect(e3) +end + +function scard.flag_reg(c) + if c:IsFaceup() and c:GetFlagEffect(s_id)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabel(c:GetAttack()) + e1:SetOperation(scard.flag_raise) + c:RegisterEffect(e1) + c:RegisterFlagEffect(s_id,RESET_EVENT+0x1fe0000,0,1,0) + end +end + +function scard.flag_op(e,tp,eg,ep,ev,re,r,rp) + Duel.GetFieldGroup(0,LOCATION_MZONE,LOCATION_MZONE):ForEach(scard.flag_reg) +end + +function scard.flag_raise(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + Duel.RaiseEvent(Group.FromCards(c),EVENT_CUSTOM+s_id,e,REASON_EFFECT,tp,tp,math.abs(e:GetLabel()-c:GetAttack())) + e:SetLabel(c:GetAttack()) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp +end + +function scard.tg(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 scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_SET_ATTACK_FINAL) + e0:SetValue(0) + e0:SetReset(RESET_EVENT+0x1fe0000) + re:GetHandler():RegisterEffect(e0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(tc) + e1:SetValue(function(e,c) return c==e:GetLabelObject() end) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(ev) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end + +function scard.sds_cd(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + return ec and ec:GetFlagEffectLabel(s_id)==1 +end + +function scard.sds_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end + +function scard.sds_flagcd(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + return ec and Duel.GetAttacker()==ec +end + +function scard.sds_flagop(e,tp,eg,ep,ev,re,r,rp) + ec:SetFlagEffectLabel(s_id,1) +end \ No newline at end of file diff --git a/script/c511005072.lua b/script/c511005072.lua new file mode 100644 index 00000000..dbf7b25c --- /dev/null +++ b/script/c511005072.lua @@ -0,0 +1,63 @@ +--Quick Star: Level 3 +--クイック・スターレベル3 +-- By Shad3 + +local scard=c511005072 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_LVCHANGE) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.g_slvl(g) + local rg=Group.CreateGroup() + local eg={} + local ei={} + local c=g:GetFirst() + while c do + local lv=c:GetLevel() + if not eg[lv] then + eg[lv]={} + ei[lv]=0 + end + table.insert(eg[lv],c) + ei[lv]=ei[lv]+1 + c=g:GetNext() + end + for j,k in pairs(ei) do + if k>1 then + for _,tc in pairs(eg[j]) do + rg:AddCard(tc) + end + end + end + return rg +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=scard.g_slvl(Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil)) + if chk==0 then return g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_LVCHANGE,g,0,0,3) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local g=scard.g_slvl(Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil)) + if g:GetCount()==0 then return end + local c=e:GetHandler() + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(3) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end \ No newline at end of file diff --git a/script/c511005073.lua b/script/c511005073.lua new file mode 100644 index 00000000..3bdf478b --- /dev/null +++ b/script/c511005073.lua @@ -0,0 +1,90 @@ +--Life Exchange +--ライフ・エクスチェンジ +-- By Shad3 + +local scard=c511005073 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(scard.cd) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + if ex and cp~=tp then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + return ex and cp~=tp +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(scard.dmgval) + e1:SetReset(RESET_CHAIN) + e1:SetLabel(cid) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_RECOVER) + e2:SetOperation(scard.recop) + e2:SetReset(RESET_CHAIN) + e2:SetLabel(cid) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAIN_SOLVED) + e3:SetOperation(scard.solvop) + e3:SetReset(RESET_CHAIN) + e3:SetLabelObject(e1) + Duel.RegisterEffect(e3,tp) + e1:SetLabelObject(e3) + e2:SetLabelObject(e3) +end + +function scard.dmgval(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if e:GetHandler()~=re:GetHandler() and cc~=0 and Duel.GetChainInfo(0,CHAININFO_CHAIN_ID)==e:GetLabel() then + e:GetLabelObject():SetLabel(val) + return 0 + else + return val + end +end + +function scard.recop(e,tp,eg,ep,ev,re,r,rp) + local cc=Duel.GetCurrentChain() + if ep~=tp and cc~=0 and Duel.GetChainInfo(cc,CHAININFO_CHAIN_ID)==e:GetLabel() then + Duel.SetLP(ep,Duel.GetLP(ep)-ev) + e:GetLabelObject():SetLabel(-ev) + e:Reset() + end +end + +function scard.solvop(e,tp,eg,ep,ev,re,r,rp) + Debug.Message("ping") + local cc=Duel.GetCurrentChain() + Debug.Message(cc) + if cc==0 or Duel.GetChainInfo(cc,CHAININFO_CHAIN_ID)~=e:GetLabelObject():GetLabel() then return end + local val=e:GetLabel() + if val>0 then + Duel.Damage(tp,val,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,502) + local tc=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil):GetFirst() + if tc then Duel.Destroy(tc,REASON_EFFECT) end + elseif val<0 then + Duel.Recover(tp,-val,REASON_EFFECT) + Duel.Damage(1-tp,1000,REASON_EFFECT) + end + e:Reset() +end \ No newline at end of file diff --git a/script/c511005074.lua b/script/c511005074.lua new file mode 100644 index 00000000..e123922c --- /dev/null +++ b/script/c511005074.lua @@ -0,0 +1,59 @@ +--Substitution Shield +--身代わりの盾 +-- By Shad3 + +local scard=c511005074 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + 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) + --Negate 1 attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(scard.neg_op) + c:RegisterEffect(e3) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==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 scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + end +end + +function scard.neg_op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetEquipTarget() + local tep=tc:GetControler() + if Duel.GetFlagEffect(tep,511005074)==0 and c:GetFlagEffect(511005074)==0 and not tc:IsDisabled() and Duel.SelectYesNo(tep,aux.Stringid(4001,13)) then + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.NegateAttack() + Duel.RegisterFlagEffect(tep,511005074,RESET_PHASE+PHASE_DAMAGE,0,0) + c:RegisterFlagEffect(511005074,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end +end \ No newline at end of file diff --git a/script/c511005075.lua b/script/c511005075.lua new file mode 100644 index 00000000..a0148bfa --- /dev/null +++ b/script/c511005075.lua @@ -0,0 +1,69 @@ +--Shield of Bones +--シールド・オブ・ボンズ +-- By Shad3 + +local scard=c511005075 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetHintTiming(0,TIMING_ATTACK) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.fil(c,e) + return c:IsFaceup() and not c:IsImmuneToEffect(e) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(scard.fil,tp,LOCATION_MZONE,0,1,nil,e) end + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,Duel.GetMatchingGroup(scard.fil,tp,LOCATION_MZONE,0,nil,e),0,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(scard.fil,tp,LOCATION_MZONE,0,nil,e) + if g:GetCount()>0 then + local c=e:GetHandler() + g:ForEach(function(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_DISABLE_EFFECT) + tc:RegisterEffect(e3) + if tc:IsType(TYPE_TRAPMONSTER) then + local e4=e2:Clone() + e4:SetCode(EFFECT_DISABLE_TRAPMONSTER) + tc:RegisterEffect(e4) + end + end) + local cod=e:GetHandler():GetOriginalCode() + local te1=Effect.CreateEffect(c) + te1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + te1:SetCode(EVENT_ATTACK_ANNOUNCE) + te1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,cod) + Duel.NegateAttack() + end) + te1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + Duel.RegisterEffect(te1,tp) + if Duel.GetAttacker() then + Duel.BreakEffect() + Duel.Hint(HINT_CARD,0,cod) + Duel.NegateAttack() + end + end +end \ No newline at end of file diff --git a/script/c511005076.lua b/script/c511005076.lua new file mode 100644 index 00000000..505b3065 --- /dev/null +++ b/script/c511005076.lua @@ -0,0 +1,88 @@ +--Shining Horizon +--シャイニング・ホライゾン +-- By Shad3 + +local scard=c511005076 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local rc=tc:GetReasonCard() + return tc:IsType(TYPE_MONSTER) and rc:IsRelateToBattle() and rc:IsControler(tp) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 end + e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local p,amt=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,amt,REASON_EFFECT)~=0 then + local dc=Duel.GetOperatedGroup():GetFirst() + Duel.ConfirmCards(1-p,dc) + if dc:GetType()==TYPE_SPELL and Duel.GetLocationCount(p,LOCATION_SZONE)>0 then + local te=dc:GetActivateEffect() + if not te or te:GetCode()~=EVENT_FREE_CHAIN then return end + local teprop=te:GetProperty() + te:SetProperty(bit.bor(teprop,EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)) + local res=false + if te:IsActivatable(p) then res=true end + te:SetProperty(teprop) + if not res then return end + local cond=te:GetCondition() + local cost=te:GetCost() + local targ=te:GetTarget() + if (not cond or cond(te,p,eg,ep,ev,re,r,rp)) and + (not cost or cost(te,p,eg,ep,ev,re,r,rp,0)) and + (not targ or targ(te,p,eg,ep,ev,re,r,rp,0)) and + Duel.SelectYesNo(p,aux.Stringid(4002,1)) then + Duel.BreakEffect() + local oper=te:GetOperation() + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.MoveToField(dc,p,p,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,dc:GetOriginalCode()) + dc:CreateEffectRelation(te) + if cost then cost(te,p,eg,ep,ev,re,r,rp,1) end + if targ then targ(te,p,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local tgc=g:GetFirst() + while tgc do + tgc:CreateEffectRelation(te) + tgc=g:GetNext() + end + end + dc:SetStatus(STATUS_ACTIVATED,true) + if oper then oper(te,p,eg,ep,ev,re,r,rp) end + dc:ReleaseEffectRelation(te) + if g then + local tgc=g:GetFirst() + while tgc do + tgc:ReleaseEffectRelation(te) + tgc=g:GetNext() + end + end + dc:CancelToGrave(false) + end + else + Duel.ShuffleHand(p) + end + end +end \ No newline at end of file diff --git a/script/c511005077.lua b/script/c511005077.lua new file mode 100644 index 00000000..4b32c326 --- /dev/null +++ b/script/c511005077.lua @@ -0,0 +1,70 @@ +--Power Change Barrier +--パサー・チェンジ・バリア +-- By Shad3 + +local scard=c511005077 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Negate, Decrease ATK + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_ACTIVATING) + e2:SetRange(LOCATION_SZONE) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetCondition(scard.neg_cd) + e2:SetOperation(scard.neg_op) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) + --Self Destruct + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(scard.des_op) + c:RegisterEffect(e3) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not (c:IsRelateToEffect(e) and tc:IsRelateToEffect(e)) then return end + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(function(e_,c_) return e_:GetLabel() end) + e1:SetLabel(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + e:GetLabelObject():SetLabelObject(e1) +end + +function scard.neg_cd(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + local tc=e:GetHandler():GetFirstCardTarget() + return re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) and g:IsContains(tc) +end + +function scard.neg_op(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + local ne=e:GetLabelObject() + ne:SetLabel(ne:GetLabel()-600) +end + +function scard.des_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511005079.lua b/script/c511005079.lua new file mode 100644 index 00000000..72fe07f7 --- /dev/null +++ b/script/c511005079.lua @@ -0,0 +1,51 @@ +--Gagaga Barrier +-- By Shad3 + +local scard=c511005079 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(scard.cd) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + if rp==tp then return end + if not (re and re:IsActiveType(TYPE_MONSTER) and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) and re:GetHandler():IsLocation(LOCATION_MZONE)) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + local c=g:GetFirst() + if c:IsOnField() and c:IsFaceup() and c:IsSetCard(0x54) then + e:SetLabelObject(c) + return true + end + return false +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsOnField() and tc:IsFaceup() then + local rc=re:GetHandler() + tc:CreateRelation(rc,RESET_EVENT+0x1fe0000) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetCondition(scard.dis_cd) + e1:SetLabelObject(tc) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE_EFFECT) + rc:RegisterEffect(e2) + end +end + +function scard.dis_cd(e) + if e:GetLabelObject():IsRelateToCard(e:GetHandler()) then return true end + e:Reset() + return false +end \ No newline at end of file diff --git a/script/c511005080.lua b/script/c511005080.lua new file mode 100644 index 00000000..ca933266 --- /dev/null +++ b/script/c511005080.lua @@ -0,0 +1,51 @@ +--Gagaga Thunder +-- By Shad3 +--fixed by MLD +function c511005080.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511005080.target) + e1:SetOperation(c511005080.activate) + c:RegisterEffect(e1) +end +function c511005080.filter1(c,tp) + return c:GetLevel()>0 and c:IsSetCard(0x54) + and Duel.IsExistingTarget(c511005080.filter2,tp,LOCATION_MZONE,0,1,c,c:GetLevel()) +end +function c511005080.filter2(c,lv) + return c:GetLevel()>0 and c:GetLevel()~=lv and c:IsSetCard(0x54) +end +function c511005080.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511005080.filter1,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tc1=Duel.SelectTarget(tp,c511005080.filter1,tp,LOCATION_MZONE,0,1,1,nil,tp):GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tc2=Duel.SelectTarget(tp,c511005080.filter2,tp,LOCATION_MZONE,0,1,1,tc1,tc1:GetLevel()):GetFirst() + local lv=0 + if tc1:GetLevel()>tc2:GetLevel() then + lv=tc1:GetLevel()-tc2:GetLevel() + else + lv=tc2:GetLevel()-tc1:GetLevel() + end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,lv*300) +end +function c511005080.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==2 then + local tc1=g:GetFirst() + local tc2=g:GetNext() + local lv=0 + if tc1:GetLevel()>tc2:GetLevel() then + lv=tc1:GetLevel()-tc2:GetLevel() + else + lv=tc2:GetLevel()-tc1:GetLevel() + end + Duel.Damage(1-tp,lv*300,REASON_EFFECT) + end +end diff --git a/script/c511005081.lua b/script/c511005081.lua new file mode 100644 index 00000000..133d56c4 --- /dev/null +++ b/script/c511005081.lua @@ -0,0 +1,50 @@ +--Reawakening of the Emperor +--帝王の再覚醒 +-- By Shad3 +--Edited by MLD +function c511005081.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511005081.target) + e1:SetOperation(c511005081.activate) + c:RegisterEffect(e1) + if not c511005081.global_check then + c511005081.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHAIN_SOLVED) + ge1:SetOperation(c511005081.checkop) + Duel.RegisterEffect(ge1,0) + end +end +c511005081.collection={ + [9748752]=true;[51945556]=true;[15545291]=true;[23064604]=true;[23689697]=true; + [69230391]=true;[69327790]=true;[87288189]=true;[87602890]=true;[96570609]=true; + [4929256]=true;[57666212]=true;[60229110]=true;[65612386]=true;[85718645]=true; + [73125233]=true;[26205777]=true; +} +function c511005081.checkop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if re:IsActiveType(TYPE_MONSTER) and re:GetCode()==EVENT_SUMMON_SUCCESS + and bit.band(rc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE then + rc:RegisterFlagEffect(511005081,RESET_EVENT+0x1fe0000,0,0) + end +end +function c511005081.filter(c) + return c:IsFaceup() and c:GetFlagEffect(511005081)>0 and bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE + and c:IsLevelAbove(5) and c511005081.collection[c:GetCode()] +end +function c511005081.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511005081.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511005081.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511005081.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.RaiseSingleEvent(tc,EVENT_SUMMON_SUCCESS,e,r,rp,ep,0) + end +end diff --git a/script/c511005083.lua b/script/c511005083.lua new file mode 100644 index 00000000..398ef2e0 --- /dev/null +++ b/script/c511005083.lua @@ -0,0 +1,131 @@ +--Infection Medium +--インフェクション・ミーディアム +-- By Shad3 + +local scard=c511005083 +local s_id=511005083 +local t_id=511005082 +local _str=4001 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Can't Summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SUMMON) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetTarget(scard.nosum_tg) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e3) + --IBToken Destroyed + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DESTROYED) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e4:SetDescription(aux.Stringid(_str,15)) + e4:SetCondition(scard.des_cd) + e4:SetTarget(scard.des_tg) + e4:SetOperation(scard.des_op) + c:RegisterEffect(e4) + --Global check + if not scard.gl_chk then + scard.gl_chk=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_LEAVE_FIELD) + ge1:SetOperation(scard.reg_op) + Duel.RegisterEffect(ge1,0) + end +end + +function scard.reg_op(e,tp,eg,ep,ev,re,r,rp) + local c=eg:GetFirst() + while c do + if c:IsReason(REASON_DESTROY) and c:IsType(TYPE_MONSTER) and c:IsType(TYPE_XYZ) and c:IsRace(RACE_FIEND) then + Duel.RegisterFlagEffect(c:GetPreviousControler(),s_id,RESET_PHASE+PHASE_END,0,1) + end + c=eg:GetNext() + end +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,s_id)~=0 +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local gc=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + if chk==0 then + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return false end --spiritdragon + if gc==0 then return false end + return Duel.IsPlayerCanSpecialSummonMonster(tp,t_id,0,0x4011,300,300,1,RACE_FIEND,ATTRIBUTE_DARK) and Duel.GetLocationCount(tp,LOCATION_MZONE)+gc>4 + end + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,gc,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,5,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end --spiritdragon + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + if Duel.Destroy(g,REASON_EFFECT)~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>4 then + for i=1,5 do + local tc=Duel.CreateToken(tp,t_id) + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(scard.dam_op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end + Duel.SpecialSummonComplete() + end +end + +function scard.dam_op(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(_str,14)) then + Duel.ChangeBattleDamage(tp,0) + Duel.ChangeBattleDamage(1-tp,0) + end +end + +function scard.nosum_tg(e,c) + return c:IsLocation(LOCATION_HAND) +end + +function scard.des_cd(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,t_id) +end + +function scard.des_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetFieldGroup(tp,0,LOCATION_MZONE),1,tp,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end + +function scard.des_op(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local tc=Duel.GetFieldGroup(tp,0,LOCATION_MZONE):Select(tp,1,1,nil):GetFirst() + if tc and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,300,REASON_EFFECT) + end + end +end \ No newline at end of file diff --git a/script/c511005084.lua b/script/c511005084.lua new file mode 100644 index 00000000..71f694fc --- /dev/null +++ b/script/c511005084.lua @@ -0,0 +1,116 @@ +--Infection Extension +--インフェクション・エクステンション +-- By Shad3 + +local scard=c511005084 +local s_id=511005084 +local t_id=511005082 +local _str=4001 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetCost(scard.cs) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Summon limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(0,1) + e2:SetTarget(scard.nosum_tg) + c:RegisterEffect(e2) + --Force ATKpos for Normal Summons + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(scard.sumatpos_op) + c:RegisterEffect(e3) + --IBToken Destroyed + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DESTROYED) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e4:SetDescription(aux.Stringid(_str,15)) + e4:SetCondition(scard.des_cd) + e4:SetTarget(scard.des_tg) + e4:SetOperation(scard.des_op) + c:RegisterEffect(e4) +end + +function scard.cs(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFEFCT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanSpecialSummonMonster(tp,t_id,0,0x4011,300,300,1,RACE_FIEND,ATTRIBUTE_DARK) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + local tc=Duel.CreateToken(tp,t_id) + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(scard.dam_op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + Duel.SpecialSummonComplete() + end +end + +function scard.dam_op(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(_str,14)) then + Duel.ChangeBattleDamage(tp,0) + Duel.ChangeBattleDamage(1-tp,0) + end +end + +function scard.nosum_tg(e,c,tp,st,spos) + return bit.band(spos,POS_FACEUP_ATTACK)~=POS_FACEUP_ATTACK +end + +function sumatpos_op(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp then Duel.ChangePosition(eg,POS_FACEUP_ATTACK) end +end + +function scard.des_cd(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,t_id) +end + +function scard.des_tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetFieldGroup(tp,0,LOCATION_MZONE),1,tp,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end + +function scard.des_op(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local tc=Duel.GetFieldGroup(tp,0,LOCATION_MZONE):Select(tp,1,1,nil):GetFirst() + if tc and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,300,REASON_EFFECT) + end + end +end \ No newline at end of file diff --git a/script/c511005085.lua b/script/c511005085.lua new file mode 100644 index 00000000..9b8a6d15 --- /dev/null +++ b/script/c511005085.lua @@ -0,0 +1,72 @@ +--Cross Counter Trap +--クロス・カウンター・トラップ +-- By Shad3 + +local scard=c511005085 +local s_id=511005085 + +function scard.initial_effect(c) + --Activate (does nothing, just to avoid error) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(aux.FALSE) + c:RegisterEffect(e1) + --Allow Trap from hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(scard.tograve_cd) + e2:SetOperation(scard.tograve_op) + c:RegisterEffect(e2) + --External register + if not scard.gl_chk then + scard.gl_chk=true + scard.tcount={[0]=0,[1]=0} + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_TURN_END) + ge1:SetOperation(scard.rst_op) + Duel.RegisterEffect(ge1,0) + end +end + +function scard.rst_op() + scard.tcount[0]=0 + scard.tcount[1]=0 +end + +function scard.tograve_cd(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) and rp~=tp +end + +function scard.tograve_op(e,tp,eg,ep,ev,re,r,rp) + local ct=scard.tcount[tp] + if ct==0 then + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAINING) + e2:SetOperation(scard.t_res_op) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + Duel.RegisterEffect(e2,tp) + end + scard.tcount[tp]=ct+1 +end + +function scard.t_res_op(e,tp,eg,ep,ev,re,r,rp) + if rp==tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP) and re:GetHandler():GetPreviousLocation()==LOCATION_HAND then + scard.tcount[tp]=scard.tcount[tp]-1 + if scard.tcount[tp]==0 then + e:GetLabelObject():Reset() + e:Reset() + end + end +end \ No newline at end of file diff --git a/script/c511005086.lua b/script/c511005086.lua new file mode 100644 index 00000000..64cea15c --- /dev/null +++ b/script/c511005086.lua @@ -0,0 +1,48 @@ +--Jump Guard +--ジャンプ・ガード +-- By Shad3 + +local scard=c511005086 +local s_id=511005086 + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(scard.cd) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Global check + if not scard.gl_chk then + scard.gl_chk=true + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_LEAVE_FIELD) + ge1:SetCondition(scard.reg_cd) + ge1:SetOperation(scard.reg_op) + Duel.RegisterEffect(ge1,0) + end +end + +function scard.reg_cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(0,s_id)==0 and eg:IsExists(Card.IsType,1,nil,TYPE_MONSTER) +end + +function scard.reg_op(e,tp,eg,ep,ev,re,r,rp) + Duel.RegisterFlagEffect(0,s_id,RESET_PHASE+PHASE_END,0,1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(0,s_id)~=0 +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) +end diff --git a/script/c511005087.lua b/script/c511005087.lua new file mode 100644 index 00000000..a11318d9 --- /dev/null +++ b/script/c511005087.lua @@ -0,0 +1,40 @@ +--Magic Rebounder +--マジック・リバウンダー +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(scard.cd) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetBattleDamage(tp)>0 +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Group.FromCards(Duel.GetAttacker()),1,tp,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc and tc:IsOnField() then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511005088.lua b/script/c511005088.lua new file mode 100644 index 00000000..8681ea88 --- /dev/null +++ b/script/c511005088.lua @@ -0,0 +1,77 @@ +--Performapal Reborn Force +--復活のエンタメ-リボーン・フォース- +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(scard.cd) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) + --Global check + if not scard.gl_chk then + scard.gl_chk=true + scard.sreg={} + local ge1=Effect.GlobalEffect() + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DESTROYED) + ge1:SetOperation(scard.reg_op) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.GlobalEffect() + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_TURN_END) + ge2:SetOperation(scard.rst_op) + Duel.RegisterEffect(ge2,0) + end +end + +function scard.reg_op(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsType(TYPE_MONSTER) and tc:IsSetCard(0x9f) then scard.sreg[tc:GetPreviousControler()]=true end + tc=eg:GetNext() + end +end + +function scard.rst_op() + scard.sreg[0]=false + scard.sreg[1]=false +end + +function scard.cd(e,tp,eg,ep,ev,re,r,rp) + return scard.sreg[tp] +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(scard.ref_val) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) then + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end + +function scard.ref_val(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then + e:Reset() + return true + end + return false +end \ No newline at end of file diff --git a/script/c511005089.lua b/script/c511005089.lua new file mode 100644 index 00000000..7ceaf50c --- /dev/null +++ b/script/c511005089.lua @@ -0,0 +1,130 @@ +--Galaxy Shockwave +--銀河衝撃 +-- By Shad3 +--fixed by MLD +function c511005089.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511005089.atkcon) + e1:SetTarget(c511005089.target) + e1:SetOperation(c511005089.activate) + c:RegisterEffect(e1) +end +function c511005089.filter(c) + return c:IsSetCard(0x7b) and c:IsFaceup() +end +function c511005089.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511005089.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511005089.filter,tp,LOCATION_MZONE,0,1,nil) end + local tc=Duel.SelectTarget(tp,c511005089.filter,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + local bc=tc:GetBattleTarget() + if Duel.GetAttacker() and tc:IsRelateToBattle() and bc and bc:IsFaceup() and tc:GetAttack()==bc:GetAttack() + and c511005089.atkcost(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(4002,0)) then + c511005089.atkcost(e,tp,eg,ep,ev,re,r,rp,1) + Duel.SetTargetParam(1) + end +end +function c511005089.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local label=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local fid=c:GetFieldID() + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(0xff) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c511005089.atkcon) + e1:SetCost(c511005089.atkcost) + e1:SetTarget(c511005089.atktg) + e1:SetOperation(c511005089.atkop) + e1:SetLabelObject(tc) + e1:SetLabel(fid) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511005089.resetop) + e2:SetLabelObject(e1) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_CHANGE_POS) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCondition(c511005089.resetcon) + e3:SetOperation(c511005089.resetop) + e3:SetLabelObject(e1) + tc:RegisterEffect(e3) + if label==1 then + tc:RegisterFlagEffect(fid,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) + c511005089.atkop(e,tp,eg,ep,ev,re,r,rp) + end + end +end +function c511005089.resetcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and c:IsFacedown() +end +function c511005089.resetop(e,tp,eg,ep,ev,re,r,rp) + local ce=e:GetLabelObject() + if ce then + ce:Reset() + end + e:Reset() +end +function c511005089.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511005089.cfilter(c) + return c:IsSetCard(0x7b) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c511005089.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511005089.cfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511005089.cfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511005089.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and tc:IsRelateToBattle() and tc:GetBattleTarget() and tc:GetBattleTarget():IsFaceup() + and tc:GetAttack()==tc:GetBattleTarget():GetAttack() and tc:GetFlagEffect(e:GetLabel())==0 end + Duel.SetTargetCard(tc) + tc:RegisterFlagEffect(e:GetLabel(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c511005089.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local bc=tc:GetBattleTarget() + if not tc or not tc:IsRelateToEffect(e) or not bc:IsRelateToBattle() then return end + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1500) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + bc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_DISABLE_EFFECT) + bc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetCode(EFFECT_TYPE_SINGLE) + e4:SetType(EFFECT_IMMUNE_EFFECT) + e4:SetValue(c511005089.imval) + e4:SetReset(RESET_PHASE+PHASE_DAMAGE) + bc:RegisterEffect(e4) +end +function c511005089.imval(e,re) + return re:GetOwner()~=e:GetOwner() +end diff --git a/script/c511005090.lua b/script/c511005090.lua new file mode 100644 index 00000000..d21199b8 --- /dev/null +++ b/script/c511005090.lua @@ -0,0 +1,107 @@ +--Shadow Clone Zone +--多分影分身 +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +function scard.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + 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(scard.eq_lmt) + c:RegisterEffect(e2) + --Add ATK + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE_START) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetTarget(scard.at_tg) + e3:SetOperation(scard.at_op) + c:RegisterEffect(e3) +end + +function scard.eq_fil(c) + return c:IsFaceup() and c:GetLevel()==3 +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and scard.eq_fil(chkc) end + if chk==0 then return Duel.IsExistingTarget(scard.eq_fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,scard.eq_fil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + end +end + +function scard.eq_lmt(e,c) + return c:GetLevel()==3 +end + +function scard.check_def(p) + local g=Duel.GetMatchingGroup(Card.IsFaceup,p,0,LOCATION_MZONE,nil) + if g:GetCount()==0 then return 0 end + local tc=g:GetFirst() + local n=0 + local defs={} + while tc do + local d=tc:GetDefense() + local v=defs[d] + if v then + v=v+1 + if v==2 then n=n+1 end + n=n+1 + defs[d]=v + else + defs[d]=1 + end + tc=g:GetNext() + end + return n +end + +function scard.at_tg(e,tp,eg,ep,ev,re,r,rp,chk) + local n=scard.check_def(tp) + if chk==0 then return n>1 end + e:SetLabel(n) +end + +function scard.at_op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local n=e:GetLabel() + if n>1 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(n-1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511005091.lua b/script/c511005091.lua new file mode 100644 index 00000000..3967a6f1 --- /dev/null +++ b/script/c511005091.lua @@ -0,0 +1,134 @@ +--Sacrifice's Blast +-- By Shad3 + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +function scard.initial_effect(c) + --Globals + if not scard.gl_reg then + scard.gl_reg=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SSET) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetCondition(scard.gtg_cd) + ge1:SetOperation(scard.gtg_op) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_SUMMON_SUCCESS) + ge2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge2:SetOperation(scard.sum_op) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_LEAVE_FIELD_P) + ge3:SetOperation(scard.reflag_op) + Duel.RegisterEffect(ge3,0) + end + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(scard.tg) + e1:SetOperation(scard.op) + c:RegisterEffect(e1) +end + +function scard.orcode(c) + return c:GetOriginalCode()==s_id +end + +function scard.gtg_cd(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(scard.orcode,1,nil,s_id) +end + +function scard.gtg_op(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(scard.orcode,nil,s_id) + local c=g:GetFirst() + while c do + local p=c:GetControler() + if Duel.GetFieldGroupCount(p,LOCATION_MZONE,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TARGET) + local tc=Duel.GetFieldGroup(p,LOCATION_MZONE,LOCATION_MZONE):Select(p,1,1,nil):GetFirst() + local fid=c:GetFieldID() + tc:RegisterFlagEffect(s_id,RESET_EVENT+0x1000000,0,0,fid) + end + c=g:GetNext() + end +end + +function scard.fid_chk(c,id) + return c:GetFieldID()==id +end + +function scard.sum_op(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE then + local g=tc:GetMaterial() + local sactg={} + g:ForEach(function(c) + if c:GetFlagEffect(s_id)~=0 then + sactg[c:GetFlagEffectLabel(s_id)]=true + c:ResetFlagEffect(s_id) + end + end) + local sg=Duel.GetMatchingGroup(scard.orcode,0,LOCATION_SZONE,LOCATION_SZONE,nil) + sg:ForEach(function(c) + local fid=c:GetFieldID() + if sactg[fid] then + c:GetActivateEffect():SetLabel(tc:GetFieldID()) + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(s_id) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(scard.des_op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + end + end) + end +end + +function scard.des_op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.Destroy(c,REASON_EFFECT)~=0 then + Duel.Damage(c:GetPreviousControler(),c:GetPreviousAttackOnField(),REASON_EFFECT) + end +end + +function scard.reflag_op(e,tp,eg,ep,ev,re,r,rp) + local c=eg:GetFirst() + while c do + if c:GetFlagEffect(s_id)~=0 then + if bit.band(c:GetReason(),REASON_RELEASE)==0 then + c:ResetFlagEffect(s_id) + end + end + c=eg:GetNext() + end +end + +function scard.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local ac=Duel.GetAttacker() + if chk==0 then + return ac:GetControler()~=tp and e:GetLabel()==ac:GetFieldID() + end + e:GetHandler():SetCardTarget(ac) +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + local ac=e:GetHandler():GetFirstCardTarget() + if ac then + Duel.RaiseSingleEvent(ac,s_id,e,REASON_EFFECT,tp,tp,e:GetHandler():GetFieldID()) + end +end \ No newline at end of file diff --git a/script/c511005092.lua b/script/c511005092.lua new file mode 100644 index 00000000..b26cef51 --- /dev/null +++ b/script/c511005092.lua @@ -0,0 +1,407 @@ +--Sealed Duel +-- - Works with Single Duel + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +--before anything +if not scard.rc_ovr then + scard.rc_ovr=true + local c_getrace=Card.GetRace + Card.GetRace=function(c) + if c:IsType(TYPE_MONSTER) then return 0xffffff end + return c_getrace(c) + end + local c_getorigrace=Card.GetOriginalRace + Card.GetOriginalRace=function(c) + if c:IsType(TYPE_MONSTER) then return 0xffffff end + return c_getorigrace(c) + end + local c_getprevraceonfield=Card.GetPreviousRaceOnField + Card.GetPreviousRaceOnField=function(c) + if bit.band(c:GetPreviousTypeOnField(),TYPE_MONSTER)~=0 then return 0xffffff end + return c_getprevraceonfield(c) + end + local c_israce=Card.IsRace + Card.IsRace=function(c,r) + if c:IsType(TYPE_MONSTER) then return true end + return c_israce(c,r) + end + local d_createtoken=Duel.CreateToken + Duel.CreateToken=function(...) + local args={select(1,...)} + local c=d_createtoken(table.unpack(args)) + c:RegisterFlagEffect(s_id,0,0,0) + return c + end +end + +function scard.initial_effect(c) + if scard.regok then return end + scard.regok=true + --Pre-draw + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetOperation(scard.op) + Duel.RegisterEffect(e1,0) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + e2:SetCountLimit(1) + e2:SetCondition(scard.nt_cd) + e2:SetOperation(scard.nt_op) + Duel.RegisterEffect(e2,0) +end + +--define pack +--pack[1]=BP01, [2]=BP02, [3]=BPW2, [4]=BP03 +--[1]=rare, [2/3/4]=common, [5]=foil +local pack={} + pack[1]={} + pack[1][1]={ + 78010363,34124316,77585513,79575620,89111398,61370518,40737112,25551951,4929256,88753985,83104731, + 12538374,85520851,44330098,73125233,79473793,17559367,9748752,59575539,98777036,10000000,5556499, + 10802915,84013237,10002346,47506081,69610924,68597372,31386180,94119480,71594310,12580477,72302403, + 55144522,18144506,79571449,4031928,19613556,45986603,70828912,68005187,73915051,56747793,31036355, + 44947065,98645731,41420027,44095762,97077563,83555666,53582587,26905245,82732705,49010598,77538567 + } + pack[1][2]={ + 61831093,93920745,1347977,74131780,45141844,71413901,48343627,21502796,91133740,66788016,79759861, + 40619825,5318639,64047146,19230407,7165085,14087893,71453557,34236961,61127349,24874630,56460688, + 98045062,43040603,30683373,6178850,25789292,83584898,27243130,6430659,73178098,37390589,60082869, + 59744639,59344077,62279055,29267084,98239899,38411870,37576645,54704216,38275183,36261276,94192409, + 66518841,15552258,73729209,46502013,24673894,50078509,79161790,21636650,53656677,87106146,72022087, + 11091375 + } + pack[1][3]={ + 49881766,79182538,13179332,35052053,69247929,78193831,78658564,40133511,88472456,78636495,53982768, + 49681811,18036057,2134346,63749102,53839837,42386471,83986578,40659562,46363422,51945556,70074904, + 51838385,14778250,90810762,16956455,70095154,59023523,85306040,78700060,77252217,85087012,93151201, + 20546916,39303359,61802346,78651105,51196174,37955049,60953118,83269557,17573739,70050374,44223284, + 23927545,59042331,12235475,95637655,41224658,7025445,4694209,94215860,62476815,51254277,12299841, + 12076263,33225925,41098335,53540729,13039848,28933734 + } + pack[1][4]={ + 33508719,46657337,26302522,65240384,45894482,52860176,43586926,21593977,47025270,16268841,1434352, + 3510565,2671330,11448373,16226786,88975532,87621407,18325492,71218746,29216198,83982270,33695750, + 31034919,30312361,3657444,14089428,7736719,14506878,15658249,95360850,97021916,45620686,47217354, + 66288028,40225398,97385276,57421866,55099248,19665973,53162898,89567993,68473226,14785765,15394083, + 86952477,26082117,25259669 + } + pack[1][5]={} + for _,v in ipairs(pack[1][1]) do table.insert(pack[1][5],v) end + for _,v in ipairs(pack[1][2]) do table.insert(pack[1][5],v) end + for _,v in ipairs(pack[1][3]) do table.insert(pack[1][5],v) end + for _,v in ipairs(pack[1][4]) do table.insert(pack[1][5],v) end + pack[2]={} + pack[2][1]={ + 6631034,31560081,34124316,66362965,79575620,7572887,40737112,68007326,78636495,70074904,83104731, + 15894048,85520851,81919143,58554959,61538782,3657444,40921744,33655493,83269557,49879995,59575539, + 5645210,8483333,78651105,79473793,19028307,85028288,55690251,97940434,55758589,45812361,36088082, + 21954587,10532969,61231400,83764718,55144522,70828912,79571449,48712195,98645731,33904024,81000306, + 97077563,37576645,42671151,60080151,6691855 + } + pack[2][2]={ + 11091375,69247929,43096270,93013676,78658564,31709826,88240808,40133511,45894482,88472456,8131171, + 18036057,43586926,47025270,90790253,16268841,2671330,22609617,4041838,88975532,15960641,65240384, + 42386471,16956455,18325492,44729197,71218746,70095154,85306040,63749102,55424270,12538374,99861526, + 85087012,48115277,93187568,18430390,4906301,66337215,39303359,64262809,26376390,78700060,13893596, + 95360850,97021916,14778250,33420078,96938777,20546916,61802346,33695750,15341821,66288028,40225398 + } + pack[2][3]={ + 59042331,4694209,96872283,19665973,42280216,64926005,7025445,58324930,41098335,15394083,84914462, + 40619741,14785765,97896503,62476815,56223084,2584136,65367484,25206027,52823314,1281505,38679204, + 74064212,86039057,12423762,66499018,64892035,33911264,19700943,82593786,18988391,42969214,66200210, + 52097679,40619825,99597615,70046172,64047146,73915051,14087893,58577036,71453557,61127349,34016756, + 32022366,98045062,82828051,55713623,12923641,58775978,80921533,24874630,60399954,6178850 + } + pack[2][4]={ + 67196946,25789292,91580102,27863269,73048641,98867329,19578592,27243130,22346472,73178098,17418744, + 96864811,77622396,12607053,22359980,68540058,57882509,93382620,59744639,83133491,21597117,28649820, + 43250041,66742250,66526672,36361633,78211862,96008713,12117532,13955608,30643162,60306104,86871614, + 60406591,26905245,79852326,34815282,97151365,71272951,37390589,66518841,80987696,15552258,97168905, + 73729209,53656677,87106146,21636650,6799227,3129635,49514333,86778566,44046281,78474168 + } + pack[2][5]={ + 10000000,10000010,10000020 + } + for _,v in ipairs(pack[2][1]) do table.insert(pack[2][5],v) end + for _,v in ipairs(pack[2][2]) do table.insert(pack[2][5],v) end + for _,v in ipairs(pack[2][3]) do table.insert(pack[2][5],v) end + for _,v in ipairs(pack[2][4]) do table.insert(pack[2][5],v) end + pack[3]={} + pack[3][1]={ + 13945283,62340868,51534754,25773409,59380081,52323207,53828396,76763417,2158562,50287060,99747800, + 22624373,18489208,68722455,11613567,98954375,20351153,72328962,81275309,2137678,43359262,95905259, + 5244497,49374988,40921545,83274244,30811116,79759861,56830749,22046459,70231910,56460688,47453433, + 25774450,98847704,59560625,62325062,77538567,42793609,89792713,11741041,75987257,22869904 + } + pack[3][2]={ + 77542832,16768387,39751093,87523462,39978267,39168895,56647086,39507162,95701283,54749427,23303072, + 41753322,88650530,84932271,88494899,96146814,69529567,45801022 + } + pack[3][3]={ + 6903857,43332022,98649372,47349310,20193924,56410040,79972330,8814959,9861795,8649148,61132951, + 44682448,80208158,5284653,4058065,67922702,4417407,54635862 + } + pack[3][4]={ + 6930746,83225447,65169794,34664411,43422537,37534148,52497105,70344351,38411870,90669991,74458486, + 31000575,18271561,85352446,49204190,73632127,71098407,63630268,94156050 + } + pack[3][5]={ + 6614221,86585274,21249921,80117527,38296564 + } + pack[4]={} + pack[4][1]={ + 42364374,71413901,82108372,39168895,78636495,42386471,16956455,85306040,89222931,85087012,18430390, + 61802346,39303359,54040221,52319752,14089428,76203291,75081613,96235275,41113025,6061630,92826944, + 84847656,74976215,69695704,45041488,12435193,80925836,42463414,77135531,10321588,4694209,39037517, + 37792478,49680980,82199284,20474741,83957459,66816282,91438994,62950604,47013502,85682655,4611269, + 95905259,1371589,66499018,64892035,40921545,98225108,42969214,97396380,89362180,15767889,50896944 + } + pack[4][2]={ + 23635815,40133511,38742075,77491079,40320754,30914564,76909279,2671330,18325492,55424270,3370104, + 93130021,21074344,94689635,99861526,79409334,12398280,20586572,46508640,95943058,91596726,52035300, + 87685879,39180960,59797187,11232355,17266660,52430902,38041940,2525268,95090813,71759912,90508760, + 43426903,65422840,79337169,3603242,23927545,20351153,13521194,12235475,96930127,2137678,84747429, + 73625877,93830681,5237827,2584136,49374988,72429240,7914843,30464153,78663366,30608985,54635862 + } + pack[4][3]={ + 37984162,61318483,12467005,99733359,25727454,72302403,70046172,86198326,70828912,82432018,19230407, + 73915051,95281259,55991637,81385346,37684215,31036355,2204140,4861205,10012614,28106077,98045062, + 82828051,12923641,36045450,37534148,1353770,6178850,4230620,62991886,99995595,35480699,45247637, + 32180819,44887817,92346415,25789292,95507060,91580102,25518020,66835946,98867329,84428023,78082039, + 27243130,67775894,60398723,53610653,89882100,88616795,73199638,36042825,96864811,83438826,23562407 + } + pack[4][4]={ + 42502956,54773234,52112003,88610708,97077563,22359980,68540058,57882509,41925941,31785398,80163754, + 98239899,3149764,59744639,83133491,29267084,66742250,12503902,96008713,77538567,4923662,60306104, + 93895605,34815282,82633308,23323812,59718521,37390589,91078716,54451023,97168905,73729209,17490535, + 43889633,16678947,87106146,32854013,21636650,89792713,3146695,25642998,11741041,75987257,44046281, + 78474168,44509898,71098407,63630268,23122036,25005816,51099515,88494120,14883228,50277973,87772572 + } + pack[4][5]={ + 47506081,95992081,11411223,47805931,3989465,76372778,581014,12014404,48009503,74593218,57043117, + 95169481,66506689,51960178,80764541,75367227,68836428 + } + for _,v in ipairs(pack[4][1]) do table.insert(pack[4][5],v) end + for _,v in ipairs(pack[4][2]) do table.insert(pack[4][5],v) end + for _,v in ipairs(pack[4][3]) do table.insert(pack[4][5],v) end + for _,v in ipairs(pack[4][4]) do table.insert(pack[4][5],v) end +local packopen=false +local handnum={[0]=5;[1]=5} + +--DangerZone + +local side={[0]={};[1]={}} +local function _prepSide(p,g) + local c=g:GetFirst() + while c do + table.insert(side[p],c:GetOriginalCode()) + c=g:GetNext() + end +end + +local function _printDeck() +--[[ uncomment this if you want to have deck listing + local io=require("io") + for p=0,1 do + local f=io.open("./deck/sealedpack"..p..".ydk","w+") + f:write("#created by ...\n#main\n") + local g=Duel.GetFieldGroup(p,LOCATION_DECK+LOCATION_HAND,0) + local c=g:GetFirst() + while c do + f:write(c:GetOriginalCode().."\n") + c=g:GetNext() + end + f:write("#extra\n") + g=Duel.GetFieldGroup(p,LOCATION_EXTRA,0) + c=g:GetFirst() + while c do + f:write(c:GetOriginalCode().."\n") + c=g:GetNext() + end + f:write("!side\n") + for _,i in ipairs(side[p]) do + f:write(i.."\n") + end + f:close() + end +--]] +end + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + if packopen then e:Reset() return end + packopen=true + Duel.DisableShuffleCheck() + --Hint + Duel.Hint(HINT_CARD,0,s_id) + for p=0,1 do + local c=Duel.CreateToken(p,s_id) + Duel.Remove(c,POS_FACEUP,REASON_RULE) + Duel.Hint(HINT_CODE,p,s_id) + --protection (steal Boss Duel xD) + local e10=Effect.CreateEffect(c) + e10:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e10:SetType(EFFECT_TYPE_SINGLE) + e10:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(e10) + local e11=e10:Clone() + e11:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(e11) + local e12=e10:Clone() + e12:SetCode(EFFECT_CANNOT_TO_DECK) + c:RegisterEffect(e12) + local e13=e10:Clone() + e13:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + c:RegisterEffect(e13) + end + --note hand card + handnum[0]=5 --Duel.GetFieldGroupCount(0,LOCATION_HAND,0) + handnum[1]=5 --Duel.GetFieldGroupCount(1,LOCATION_HAND,0) + --SetLP + Duel.SetLP(0,8000) + Duel.SetLP(1,8000) + --FOR RANDOOM + local rseed=0 + for i=1,6 do + local r={Duel.TossCoin(i%2,5)} + for n=1,5 do + rseed=bit.lshift(rseed,1)+r[n] + end + end + math.randomseed(rseed) + local fg=Duel.GetFieldGroup(0,0x43,0x43) + --remove all cards + Duel.SendtoDeck(fg,nil,-2,REASON_RULE) + --Open packs (let's keep it at 10 for now) + local numpack=10 + for np=1,numpack do + for p=0,1 do + local n=math.random(4) + Duel.Hint(HINT_OPSELECTED,p,aux.Stringid(4002,2+n)) + local g=Group.CreateGroup() + for i=1,5 do + local cpack=pack[n][i] + local c=cpack[math.random(#cpack)] + g:AddCard(Duel.CreateToken(p,c)) + end + local ga=g:Filter(Card.IsAbleToHand,nil) + Duel.SendtoHand(g,nil,REASON_RULE) + Duel.ConfirmCards(p,g:Filter(Card.IsLocation,nil,LOCATION_EXTRA)) + Duel.SendtoDeck(g:Filter(Card.IsLocation,nil,LOCATION_HAND),nil,2,REASON_RULE) + end + end + --next step + --Players remove from each deck until card>=40 (optional) + local rg=Group.CreateGroup() + for p=0,1 do + Duel.ConfirmCards(p,Duel.GetFieldGroup(p,LOCATION_DECK+LOCATION_EXTRA,0)) + local num=Duel.GetFieldGroupCount(p,LOCATION_DECK,0)-40 + if num>0 and Duel.SelectYesNo(p,aux.Stringid(4002,7)) then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_REMOVE) + local g=Duel.GetFieldGroup(p,LOCATION_DECK,0):Select(p,1,num,nil) + _prepSide(p,g) + rg:Merge(g) + end + end + if rg:GetCount()>0 then Duel.SendtoDeck(rg,nil,-2,REASON_RULE) end + --next step + --Shuffle deck and add card + for p=0,1 do + Duel.ShuffleDeck(p) + end + for p=0,1 do + Duel.SendtoHand(Duel.GetDecktopGroup(p,handnum[p]),nil,REASON_RULE) + end + for p=0,1 do + if Duel.SelectYesNo(p,aux.Stringid(4002,2)) then + local sg=Duel.GetFieldGroup(p,LOCATION_HAND,0) + local ct=sg:GetCount() + Duel.SendtoDeck(sg,nil,1,REASON_RULE) + --local c=sg:GetFirst() + --while c do + -- Duel.MoveSequence(c,1) + -- c=sg:GetNext() + --end + Duel.SendtoHand(Duel.GetDecktopGroup(p,ct),nil,REASON_RULE) + end + end + e:Reset() + --if someone wants/needs a deck listing (local hosting only), the function itself can be uncommented + _printDeck() +end + +--Nocheat zone + +function scard.flag_chk(c) + return c:GetFlagEffect(s_id)==0 +end + +function scard.nt_cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()>1 and Duel.IsExistingMatchingCard(scard.flag_chk,Duel.GetTurnPlayer(),0x43,0,1,nil) +end + +function scard.nt_op(e,tp,eg,ep,ev,re,r,rp) + Duel.DisableShuffleCheck() + --Hint + local p=Duel.GetTurnPlayer() + Duel.Hint(HINT_CARD,p,s_id) + Duel.Hint(HINT_CODE,p,s_id) + --note hand card + local hn=5 --Duel.GetFieldGroupCount(p,LOCATION_HAND,0) + local fg=Duel.GetMatchingGroup(scard.flag_chk,p,0x43,0,nil) + --remove all cards + Duel.SendtoDeck(fg,nil,-2,REASON_RULE) + --Open packs (let's keep it at 10 for now) + local numpack=10 + for np=1,numpack do + local n=math.random(4) + Duel.Hint(HINT_OPSELECTED,p,aux.Stringid(4002,2+n)) + local g=Group.CreateGroup() + for i=1,5 do + local cpack=pack[n][i] + local c=cpack[math.random(#cpack)] + g:AddCard(Duel.CreateToken(p,c)) + end + local ga=g:Filter(Card.IsAbleToHand,nil) + Duel.SendtoHand(g,nil,REASON_RULE) + Duel.ConfirmCards(p,g:Filter(Card.IsLocation,nil,LOCATION_EXTRA)) + Duel.SendtoDeck(g:Filter(Card.IsLocation,nil,LOCATION_HAND),nil,2,REASON_RULE) + end + --next step + --Players remove from each deck until card>=40 (optional) + local rg=Group.CreateGroup() + Duel.ConfirmCards(p,Duel.GetFieldGroup(p,LOCATION_DECK+LOCATION_EXTRA,0)) + local num=Duel.GetFieldGroupCount(p,LOCATION_DECK,0)-40 + if num>0 and Duel.SelectYesNo(p,aux.Stringid(4002,7)) then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_REMOVE) + local g=Duel.GetFieldGroup(p,LOCATION_DECK,0):Select(p,1,num,nil) + rg:Merge(g) + end + if rg:GetCount()>0 then Duel.SendtoDeck(rg,nil,-2,REASON_RULE) end + --next step + --Shuffle deck and add card + Duel.ShuffleDeck(p) + Duel.SendtoHand(Duel.GetDecktopGroup(p,hn),nil,REASON_RULE) + if Duel.SelectYesNo(p,aux.Stringid(4002,2)) then + local sg=Duel.GetFieldGroup(p,LOCATION_HAND,0) + local ct=sg:GetCount() + Duel.SendtoDeck(sg,nil,1,REASON_RULE) + --local c=sg:GetFirst() + --while c do + -- Duel.MoveSequence(c,1) + -- c=sg:GetNext() + --end + Duel.SendtoHand(Duel.GetDecktopGroup(p,ct),nil,REASON_RULE) + end +end diff --git a/script/c511005093.lua b/script/c511005093.lua new file mode 100644 index 00000000..3db53e5e --- /dev/null +++ b/script/c511005093.lua @@ -0,0 +1,313 @@ +--Booster Draft Duel (HIJACK) +-- - Works with Single Duel + +local function getID() + local str=string.match(debug.getinfo(2,'S')['source'],"c%d+%.lua") + str=string.sub(str,1,string.len(str)-4) + local scard=_G[str] + local s_id=tonumber(string.sub(str,2)) + return scard,s_id +end + +local scard,s_id=getID() + +--before anything +if not scard.rc_ovr then + scard.rc_ovr=true + local c_getrace=Card.GetRace + Card.GetRace=function(c) + if c:IsType(TYPE_MONSTER) then return 0xffffff end + return c_getrace(c) + end + local c_getorigrace=Card.GetOriginalRace + Card.GetOriginalRace=function(c) + if c:IsType(TYPE_MONSTER) then return 0xffffff end + return c_getorigrace(c) + end + local c_getprevraceonfield=Card.GetPreviousRaceOnField + Card.GetPreviousRaceOnField=function(c) + if bit.band(c:GetPreviousTypeOnField(),TYPE_MONSTER)~=0 then return 0xffffff end + return c_getprevraceonfield(c) + end + local c_israce=Card.IsRace + Card.IsRace=function(c,r) + if c:IsType(TYPE_MONSTER) then return true end + return c_israce(c,r) + end +end + +function scard.initial_effect(c) + if scard.regok then return end + scard.regok=true + --Pre-draw + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetOperation(scard.op) + Duel.RegisterEffect(e1,0) +end + +--define pack +--pack=BP03 +--[1]=rare, [2/3/4]=common, [5]=foil +local pack={} + pack[1]={ + 42364374,71413901,82108372,39168895,78636495,42386471,16956455,85306040,89222931,85087012,18430390, + 61802346,39303359,54040221,52319752,14089428,76203291,75081613,96235275,41113025,6061630,92826944, + 84847656,74976215,69695704,45041488,12435193,80925836,42463414,77135531,10321588,4694209,39037517, + 37792478,49680980,82199284,20474741,83957459,66816282,91438994,62950604,47013502,85682655,4611269, + 95905259,1371589,66499018,64892035,40921545,98225108,42969214,97396380,89362180,15767889,50896944 + } + pack[2]={ + 23635815,40133511,38742075,77491079,40320754,30914564,76909279,2671330,18325492,55424270,3370104, + 93130021,21074344,94689635,99861526,79409334,12398280,20586572,46508640,95943058,91596726,52035300, + 87685879,39180960,59797187,11232355,17266660,52430902,38041940,2525268,95090813,71759912,90508760, + 43426903,65422840,79337169,3603242,23927545,20351153,13521194,12235475,96930127,2137678,84747429, + 73625877,93830681,5237827,2584136,49374988,72429240,7914843,30464153,78663366,30608985,54635862 + } + pack[3]={ + 37984162,61318483,12467005,99733359,25727454,72302403,70046172,86198326,70828912,82432018,19230407, + 73915051,95281259,55991637,81385346,37684215,31036355,2204140,4861205,10012614,28106077,98045062, + 82828051,12923641,36045450,37534148,1353770,6178850,4230620,62991886,99995595,35480699,45247637, + 32180819,44887817,92346415,25789292,95507060,91580102,25518020,66835946,98867329,84428023,78082039, + 27243130,67775894,60398723,53610653,89882100,88616795,73199638,36042825,96864811,83438826,23562407 + } + pack[4]={ + 42502956,54773234,52112003,88610708,97077563,22359980,68540058,57882509,41925941,31785398,80163754, + 98239899,3149764,59744639,83133491,29267084,66742250,12503902,96008713,77538567,4923662,60306104, + 93895605,34815282,82633308,23323812,59718521,37390589,91078716,54451023,97168905,73729209,17490535, + 43889633,16678947,87106146,32854013,21636650,89792713,3146695,25642998,11741041,75987257,44046281, + 78474168,44509898,71098407,63630268,23122036,25005816,51099515,88494120,14883228,50277973,87772572 + } + pack[5]={ + 47506081,95992081,11411223,47805931,3989465,76372778,581014,12014404,48009503,74593218,57043117, + 95169481,66506689,51960178,80764541,75367227,68836428 + } + for _,v in ipairs(pack[1]) do table.insert(pack[5],v) end + for _,v in ipairs(pack[2]) do table.insert(pack[5],v) end + for _,v in ipairs(pack[3]) do table.insert(pack[5],v) end + for _,v in ipairs(pack[4]) do table.insert(pack[5],v) end +local packopen=false +local handnum={[0]=5;[1]=5} + +--DangerZone +--(Disabled) + +local skip_effects={} + +function scard.op(e,tp,eg,ep,ev,re,r,rp) + if packopen then e:Reset() return end + packopen=true + Duel.DisableShuffleCheck() + --Hint + Duel.Hint(HINT_CARD,0,s_id) + for p=0,1 do + local c=Duel.CreateToken(p,s_id) + Duel.Remove(c,POS_FACEUP,REASON_RULE) + Duel.Hint(HINT_CODE,p,s_id) + --protection (steal Boss Duel xD) + local e10=Effect.CreateEffect(c) + e10:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e10:SetType(EFFECT_TYPE_SINGLE) + e10:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(e10) + local e11=e10:Clone() + e11:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(e11) + local e12=e10:Clone() + e12:SetCode(EFFECT_CANNOT_TO_DECK) + c:RegisterEffect(e12) + local e13=e10:Clone() + e13:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + c:RegisterEffect(e13) + end + --note hand card + handnum[0]=5 --Duel.GetFieldGroupCount(0,LOCATION_HAND,0) + handnum[1]=5 --Duel.GetFieldGroupCount(1,LOCATION_HAND,0) + --SetLP + Duel.SetLP(0,8000) + Duel.SetLP(1,8000) + --FOR RANDOOM + local rseed=0 + for i=1,6 do + local r={Duel.TossCoin(i%2,5)} + for n=1,5 do + rseed=bit.lshift(rseed,1)+r[n] + end + end + math.randomseed(rseed) + local fg=Duel.GetFieldGroup(0,0x43,0x43) + --remove all cards + Duel.SendtoDeck(fg,nil,-2,REASON_RULE) + --Open packs + --SKIP + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_DP) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + Duel.RegisterEffect(e1,0) + local e2=e1:Clone() + e2:SetCode(EFFECT_SKIP_M1) + Duel.RegisterEffect(e2,0) + local e3=e1:Clone() + e3:SetCode(EFFECT_SKIP_BP) + Duel.RegisterEffect(e3,0) + e:Reset() + local e4=e1:Clone() + e3:SetCode(EFFECT_SKIP_M2) + Duel.RegisterEffect(e4,0) + local e5=e1:Clone() + e5:SetCode(EFFECT_CANNOT_BP) + Duel.RegisterEffect(e5,0) + local e6=e1:Clone() + e6:SetCode(EFFECT_CANNOT_M2) + Duel.RegisterEffect(e6,0) + local e7=e1:Clone() + e7:SetCode(EFFECT_CANNOT_EP) + Duel.RegisterEffect(e7,0) + table.insert(skip_effects,e1) + table.insert(skip_effects,e2) + table.insert(skip_effects,e3) + table.insert(skip_effects,e4) + table.insert(skip_effects,e5) + table.insert(skip_effects,e6) + table.insert(skip_effects,e7) + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_PHASE_START+PHASE_STANDBY) + e5:SetCountLimit(1) + e5:SetCondition(scard.nt_cd) + e5:SetOperation(scard.nt_op) + Duel.RegisterEffect(e5,0) + e:Reset() +end + +--Checks + +function scard.flag_chk(c) + return c:GetFlagEffect(s_id)==0 +end + +function scard.nt_cd(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()>1 +end + +local playerpack=Group.CreateGroup() +local playerpick={[0]={},[1]={},[2]={},[3]={}} +local confirmchk=999 +local nump=2 +local p2_exists=false +local p3_exists=false +local postprocess=false + +function scard.nt_op(e,tp,eg,ep,ev,re,r,rp) + local tcount=Duel.GetTurnCount() + local tplayer=Duel.GetTurnPlayer() + if tcount<=4 then --determine 3rd/4th player + if Duel.IsExistingMatchingCard(scard.flag_chk,tplayer,0x43,0,1,nil) then + local fg=Duel.GetFieldGroup(tplayer,0x43,0x43) + --remove all cards + Duel.SendtoDeck(fg,nil,-2,REASON_RULE) + if tcount==2 then + p2_exists=true + nump=3 + end + if tcount==3 then + p3_exists=true + nump=4 + end + end + elseif not postprocess then --go ahead and pick cards + if nump==3 and tcount%4==3 then return end + Duel.DisableShuffleCheck() + local ppick + if nump==3 and tcount%4==0 then + ppick=playerpick[2] + elseif nump==2 then + ppick=playerpick[tplayer] + else + ppick=playerpick[(tcount-1)%4] + end + --Pick one + if playerpack:GetCount()==0 then + for p=1,3 do + for i=1,5 do + local cpack=pack[i] + local c=cpack[math.random(#cpack)] + playerpack:AddCard(Duel.CreateToken(tplayer,c)) + end + end + if nump==2 then + Duel.SendtoHand(playerpack,nil,REASON_RULE) + Duel.SendtoDeck(playerpack:Filter(Card.IsLocation,nil,LOCATION_HAND),nil,0,REASON_RULE) + confirmchk=tcount + end + end + if nump==2 and tcount>confirmchk then + Duel.ConfirmCards(tplayer,playerpack) + confirmchk=999 + elseif nump>2 then + Duel.SendtoHand(playerpack,nil,REASON_RULE) + Duel.SendtoDeck(playerpack:Filter(Card.IsLocation,nil,LOCATION_HAND),nil,0,REASON_RULE) + Duel.ConfirmCards(tplayer,playerpack) + end + Duel.Hint(HINT_SELECTMSG,tplayer,HINTMSG_TODECK) + local rc=playerpack:Select(tplayer,1,1,nil):GetFirst() + --local rc=playerpack:RandomSelect(tplayer,1):GetFirst() --testing purpose + playerpack:RemoveCard(rc) + Duel.SendtoDeck(rc,nil,-2,REASON_RULE) + if nump>2 then Duel.SendtoDeck(playerpack,nil,-2,REASON_RULE) end + table.insert(ppick,rc:GetOriginalCode()) + if #playerpick[0]>=45 and #playerpick[1]>=45 and (not p2_exists or #playerpick[2]>=45) and (not p3_exists or #playerpick[3]>=45) then + Duel.SendtoDeck(playerpack,nil,-2,REASON_RULE) + postprocess=true + end + --end go ahead + else --postprocess + if Duel.GetFieldGroupCount(tplayer,LOCATION_DECK+LOCATION_HAND,0)==0 then + if nump==3 and tcount%4==3 then return end + local ppick + if nump==3 and tcount%4==0 then + ppick=playerpick[2] + elseif nump==2 then + ppick=playerpick[tplayer] + else + ppick=playerpick[(tcount-1)%4] + end + local g=Group.CreateGroup() + for _,c in ipairs(ppick) do + g:AddCard(Duel.CreateToken(tplayer,c)) + end + Duel.DisableShuffleCheck() + Duel.SendtoHand(g,nil,REASON_RULE) + Duel.SendtoDeck(g:Filter(Card.IsLocation,nil,LOCATION_HAND),nil,0,REASON_RULE) + Duel.ShuffleDeck(tplayer) + Duel.SendtoHand(Duel.GetDecktopGroup(tplayer,5),nil,REASON_RULE) + if Duel.SelectYesNo(tplayer,aux.Stringid(4002,2)) then + local sg=Duel.GetFieldGroup(tplayer,LOCATION_HAND,0) + local ct=sg:GetCount() + Duel.SendtoDeck(sg,nil,1,REASON_RULE) + Duel.SendtoHand(Duel.GetDecktopGroup(tplayer,ct),nil,REASON_RULE) + end + elseif tcount%4==1 then + --resets + for _,ske in ipairs(skip_effects) do + ske:Reset() + end + --no attack this turn + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,0) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_M2) + Duel.RegisterEffect(e2,0) + e:Reset() + end + end +end diff --git a/script/c511005590.lua b/script/c511005590.lua new file mode 100644 index 00000000..6026fb2b --- /dev/null +++ b/script/c511005590.lua @@ -0,0 +1,50 @@ +--Landstar Shoot +--scripted by GameMaster(GM) +function c511005590.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(c511005590.target) + e1:SetOperation(c511005590.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(600) + 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) + --remain field + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_REMAIN_FIELD) + c:RegisterEffect(e4) +end +function c511005590.eqlimit(e,c) + return c:IsCode(100000630) and c:IsCode(100000631) and c:IsCode(100000632) and c:IsCode(3573512) and c:IsCode(83602069) +end +function c511005590.filter(c) + return c:IsFaceup() and c:IsCode(100000630) or c:IsCode(100000631) or c:IsCode(100000632) or c:IsCode(3573512) or c:IsCode(83602069) +end +function c511005590.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511005590.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511005590.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511005590.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511005590.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 diff --git a/script/c511005591.lua b/script/c511005591.lua new file mode 100644 index 00000000..debf6c2d --- /dev/null +++ b/script/c511005591.lua @@ -0,0 +1,23 @@ +--Masked Doll +--GameMaster(GM) +function c511005591.initial_effect(c) +--Activate +local e1=Effect.CreateEffect(c) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetCode(EVENT_FREE_CHAIN) +c:RegisterEffect(e1) +--Cost Change +local e2=Effect.CreateEffect(c) +e2:SetType(EFFECT_TYPE_FIELD) +e2:SetCode(EFFECT_LPCOST_CHANGE) +e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) +e2:SetRange(LOCATION_SZONE) +e2:SetTargetRange(1,0) +e2:SetValue(c511005591.costchange) +c:RegisterEffect(e2) +end +function c511005591.costchange(e,re,rp,val) +if re:GetHandler():IsCode(82432018) then +return 0 +else return val end +end \ No newline at end of file diff --git a/script/c511005592.lua b/script/c511005592.lua new file mode 100644 index 00000000..13ae1caa --- /dev/null +++ b/script/c511005592.lua @@ -0,0 +1,44 @@ +--Steel Armor +--Scripted by GameMaster(GM) +function c511005592.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(c511005592.target) + e1:SetOperation(c511005592.operation) + c:RegisterEffect(e1) + --Def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(1000) + 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) + --remain field + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_REMAIN_FIELD) + c:RegisterEffect(e4) + end +function c511005592.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 c511005592.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 \ No newline at end of file diff --git a/script/c511005593.lua b/script/c511005593.lua new file mode 100644 index 00000000..df09793f --- /dev/null +++ b/script/c511005593.lua @@ -0,0 +1,34 @@ +--Haunted Missile +--Scripted by GameMaster(GM) +function c511005593.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511005593.damtg) + e1:SetOperation(c511005593.damop) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c511005593.handcon) + c:RegisterEffect(e2) +end + +function c511005593.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c511005593.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c511005593.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511005594.lua b/script/c511005594.lua new file mode 100644 index 00000000..c73441ac --- /dev/null +++ b/script/c511005594.lua @@ -0,0 +1,32 @@ +--mistrust +--scripted by GameMaster (GM) and Snrk +function c511005594.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --control + local e2=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511005594.target) + e2:SetOperation(c511005594.operation) + c:RegisterEffect(e2) +end +function c511005594.filter(c,e,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsControlerCanBeChanged() +end +function c511005594.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return eg:IsExists(c511005594.filter,1,nil,e,1-tp) end +end +function c511005594.operation(e,tp,eg,ep,ev,re,r,rp) + local tc + local c=e:GetHandler() + local g=eg:Filter(c511005594.filter,nil,e,1-tp) + if g:GetCount()<1 or not c:IsRelateToEffect(e) then return end + if g:GetCount()>1 then tc=g:Select(tp,1,1,nil) else tc=g:GetFirst() end + if tc then Duel.GetControl(tc,tp) end +end \ No newline at end of file diff --git a/script/c511005595.lua b/script/c511005595.lua new file mode 100644 index 00000000..0dfa855c --- /dev/null +++ b/script/c511005595.lua @@ -0,0 +1,44 @@ +--Negative Image Inversion +--Scripted by GameMaster(GM) +function c511005595.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511005595.condition) + e1:SetTarget(c511005595.target) + e1:SetOperation(c511005595.activate) + c:RegisterEffect(e1) +end +function c511005595.cfilter(c) + return c:IsFacedown() and c:IsType(TYPE_MONSTER) +end +function c511005595.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511005595.cfilter,1-tp,LOCATION_MZONE,0,1,nil) +end +function c511005595.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDefensePos() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DEFENSE) + local g=Duel.SelectTarget(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511005595.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsDefensePos() and tc:IsRelateToEffect(e) and Duel.ChangePosition(tc,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK)~=0 then + local atk=tc:GetBaseAttack() + local def=tc:GetBaseDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(def) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511005596.lua b/script/c511005596.lua new file mode 100644 index 00000000..e24799e1 --- /dev/null +++ b/script/c511005596.lua @@ -0,0 +1,25 @@ +--Masquerade +function c511005596.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511005596.condition) + e1:SetOperation(c511005596.activate) + c:RegisterEffect(e1) +end +function c511005596.filter(c) + return c:IsFaceup() and (c:IsCode(20765952) or c:IsCode(29549364)) +end +function c511005596.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511005596.filter,tp,LOCATION_SZONE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) +end +function c511005596.activate(e,tp,eg,ep,ev,re,r,rp,chkc) + if not Duel.IsExistingMatchingCard(c511005596.filter,tp,LOCATION_SZONE,0,1,nil) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local tc=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil):GetFirst() + if tc then Duel.GetControl(tc,tp) end +end \ No newline at end of file diff --git a/script/c511005597.lua b/script/c511005597.lua new file mode 100644 index 00000000..8c191fad --- /dev/null +++ b/script/c511005597.lua @@ -0,0 +1,64 @@ +--Carat Idol +--Scripted by GameMaster(GM) +function c511005597.initial_effect(c) +--target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetCondition(c511005597.con) + e1:SetTarget(c511005597.tglimit) + e1:SetValue(1) + c:RegisterEffect(e1) + --Destroy all Monsters and Inflict 800 Damage for Each Monster + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511005597,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c511005597.descon) + e2:SetTarget(c511005597.destg) + e2:SetOperation(c511005597.desop) + c:RegisterEffect(e2) + --check + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c511005597.chkop) + c:RegisterEffect(e3) +end +function c511005597.desfilter(c,g,pg) + return c:IsFaceup() and c:GetAttack()>=1500 and c:IsDestructable() +end +function c511005597.filter2(c) + return c:IsFacedown() and c:IsAttackAbove(1500) and c:IsDestructable() +end +function c511005597.con(e) + return e:GetHandler():IsDefensePos() +end +function c511005597.tglimit(e,c) + return c~=e:GetHandler() +end +function c511005597.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and not c:IsLocation(LOCATION_DECK) + and Duel.IsExistingMatchingCard(c511005597.havefieldfilter,0,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) +end +function c511005597.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511005597.desfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + end +function c511005597.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511005597.desfilter,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) +end +function c511005597.chkop(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE,POS_FACEDOWN) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + end +end diff --git a/script/c511005598.lua b/script/c511005598.lua new file mode 100644 index 00000000..261d49b2 --- /dev/null +++ b/script/c511005598.lua @@ -0,0 +1,38 @@ +--Gorgonic Temptaion +--scripted by GameMaster(GM) +function c511005598.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --choose atk target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCountLimit(1) + --e2:SetTarget(c511005598.target) + e2:SetOperation(c511005598.operation) + c:RegisterEffect(e2) +end +c511005598.collection={ [37168514]=true; [37984162]=true; [64378261]=true; [90764875]=true; [84401683]=true; } +function c511005598.filter(c) + return c:IsFaceup() and c511005598.collection[c:GetCode()] +end +function c511005598.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511005598.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.GetAttacker():IsControler(1-tp) end +end +function c511005598.operation(e,tp,eg,ep,ev,re,r,rp) + local ats=eg:GetFirst():GetAttackableTarget() + local at=Duel.GetAttackTarget() + if ats:GetCount()==0 or (at and ats:GetCount()==1) then return end + if Duel.SelectYesNo(tp,HINTMSG_EFFECT) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=ats:Select(tp,1,1,at) + Duel.Hint(HINT_CARD,0,511005598) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + end +end \ No newline at end of file diff --git a/script/c511005599.lua b/script/c511005599.lua new file mode 100644 index 00000000..5c6f2df4 --- /dev/null +++ b/script/c511005599.lua @@ -0,0 +1,37 @@ +--Raft Party +--scripted by GameMaster(GM) +function c511005599.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511005599.target) + e1:SetOperation(c511005599.activate) + c:RegisterEffect(e1) +end +function c511005599.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511005600,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_WATER) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511005599.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511005600,0,0x4011,0,0,1,RACE_MACHINE,ATTRIBUTE_WATER) then + for i=1,2 do + local token=Duel.CreateToken(tp,511005600) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) +local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511005599.sumlimit) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() + end +end +function c511005599.sumlimit(e,c) + return not c:IsAttribute(ATTRIBUTE_WATER) +end diff --git a/script/c511005601.lua b/script/c511005601.lua new file mode 100644 index 00000000..be32b8c1 --- /dev/null +++ b/script/c511005601.lua @@ -0,0 +1,34 @@ +--Parasite mind +--scripted by GameMaster(GM) +function c511005601.initial_effect(c) +--Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511005601.condition) + e1:SetTarget(c511005601.thtg) + e1:SetOperation(c511005601.thop) + c:RegisterEffect(e1) + --remain field + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_REMAIN_FIELD) + c:RegisterEffect(e2) +end +function c511005601.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511005601.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and (c:IsType(TYPE_CONTINUOUS) and c:IsFaceup()) +end +function c511005601.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(1-tp) and c511005601.filter(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c511005601.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511005601.filter,tp,0,LOCATION_ONFIELD,0,1,nil) +end +function c511005601.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + e:GetHandler():CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000) +end \ No newline at end of file diff --git a/script/c511005602.lua b/script/c511005602.lua new file mode 100644 index 00000000..44a99ace --- /dev/null +++ b/script/c511005602.lua @@ -0,0 +1,121 @@ +--pupa of moth +--Scripted by GameMaster (GM) +function c511005602.initial_effect(c) + --spsummon great moth if destroyed before count 5 + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511005602,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511005602.condition) + e1:SetTarget(c511005602.target) + e1:SetOperation(c511005602.operation) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + --special summon perfectly ultimate great moth manga at turn count 5 + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511005602,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c511005602.spcon) + e3:SetCost(c511005602.spcost) + e3:SetTarget(c511005602.sptg) + e3:SetOperation(c511005602.spop) + c:RegisterEffect(e3) + --required + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c511005602.regop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) + local e6=e4:Clone() + e6:SetCode(EVENT_FLIP) + c:RegisterEffect(e6) + --to defense + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(511005602,0)) + e7:SetCategory(CATEGORY_POSITION) + e7:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e7:SetCode(EVENT_SUMMON_SUCCESS) + e7:SetTarget(c511005602.potg) + e7:SetOperation(c511005602.poop) + c:RegisterEffect(e7) + local e8=e7:Clone() + e8:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e8) + local e9=e7:Clone() + e9:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e9) +end +function c511005602.potg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c511005602.poop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c511005602.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsLocation(LOCATION_DECK) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511005602.spfilter(c,e,tp) + return c:IsCode(14141448) and c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,true,false,POS_FACE_UP) +end +function c511005602.target(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511005602.spfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE) +end +function c511005602.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,c511005602.spfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + Duel.ConfirmCards(1-tp,g) + end + Duel.SpecialSummonComplete() +end +function c511005602.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(34830503,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end + +function c511005602.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetFlagEffect(34830503)==0 +end +function c511005602.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511005602.spfilter2(c,e,tp) + return c:IsCode(48579379) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511005602.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511005602.spfilter2,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511005602.spop(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,c511005602.spfilter2,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:RegisterFlagEffect(48579379,RESET_EVENT+0x16e0000,0,0) + tc:CompleteProcedure() + end +end diff --git a/script/c511005603.lua b/script/c511005603.lua new file mode 100644 index 00000000..9963fcc0 --- /dev/null +++ b/script/c511005603.lua @@ -0,0 +1,59 @@ +--Perfectly utimate Great moth (Anime) +--scripted by GameMaster (GM) +function c511005603.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511005603.spcon) + e2:SetOperation(c511005603.spop) + c:RegisterEffect(e2) + --atkdown + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511005603.atkcon) + e3:SetOperation(c511005603.atkop) + e3:SetCountLimit(1) + c:RegisterEffect(e3) +end +function c511005603.eqfilter(c) + return c:IsCode(40240595) and c:GetTurnCounter()>=5 +end +function c511005603.rfilter(c) + return c:IsCode(58192742) and c:GetEquipGroup():FilterCount(c511005603.eqfilter,nil)>0 +end +function c511005603.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),c511005603.rfilter,1,nil) +end +function c511005603.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),c511005603.rfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c511005603.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==1-tp +end + +function c511005603.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-100) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + tc=g:GetNext() + + end +end diff --git a/script/c511005604.lua b/script/c511005604.lua new file mode 100644 index 00000000..1bed32ba --- /dev/null +++ b/script/c511005604.lua @@ -0,0 +1,31 @@ +--Captian Lock +--Scripted by GameMaster (GM) +function c511005604.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,5265750,15653824,true,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetRange(LOCATION_MZONE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + c:RegisterEffect(e2) + --selfdestroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c511005604.descon) + c:RegisterEffect(e3) +end +function c511005604.desfilter(c) + return c:IsFaceup() and c:GetAttack()>=1000 +end +function c511005604.descon(e) + return Duel.IsExistingMatchingCard(c511005604.desfilter,e:GetHandler():GetControler(),LOCATION_MZONE,LOCATION_MZONE,1,nil) +end \ No newline at end of file diff --git a/script/c511005605.lua b/script/c511005605.lua new file mode 100644 index 00000000..9fe84c74 --- /dev/null +++ b/script/c511005605.lua @@ -0,0 +1,143 @@ +--Deadman Pirates +-- By Shad3 + +--[[ +Trap/Continuous +Activate this card by targeting 1 "Captain Lock" in your Graveyard; Special Summon it in Attack Position, but its effects are negated. When this card leaves the field, destroy that monster. When that monster leaves the field, destroy this card. Once per turn: You can target 1 monster in your Graveyard; equip it to the monster Special Summoned by this card's effect. That monster gains ATK equal to the combined ATK of the monsters equipped to it by this effect. +--]] + +local self=c511005605 + +function self.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetTarget(self.tg) + e1:SetOperation(self.op) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_LEAVE_FIELD_P) + e2:SetOperation(self.dis_chk_op) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(self.des_op) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(self.des2_cd) + e4:SetOperation(self.des2_op) + c:RegisterEffect(e4) + --Equip grave + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_FREE_CHAIN) + e5:SetCategory(CATEGORY_EQUIP) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1) + e5:SetTarget(self.eq_tg) + e5:SetOperation(self.eq_op) + c:RegisterEffect(e5) +end + +function self.fil(c,e,p) + return c:IsCode(511005604) and c:IsCanBeSpecialSummoned(e,0,p,false,false) +end + +function self.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and self.fil(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(self.fil,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local g=Duel.SelectTarget(tp,self.fil,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,tp,0) +end + +function self.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + c:SetCardTarget(tc) + end +end + +function self.dis_chk_op(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else + e:SetLabel(0) + end +end + +function self.des_op(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()==0 then + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end + +function self.des2_cd(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end + +function self.des2_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end + +function self.eq_tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsType(TYPE_MONSTER) end + if chk==0 then + local ct=e:GetHandler():GetFirstCardTarget() + return ct and ct:IsLocation(LOCATION_MZONE) and ct:IsFaceup() and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.IsExistingTarget(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_MONSTER) + end + local g=Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_GRAVE,0,1,1,nil,TYPE_MONSTER) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end + +function self.eq_op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + local ct=c:GetFirstCardTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and ct and ct:IsOnField() and ct:IsFaceup() then + if Duel.Equip(tp,tc,ct,false) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetLabelObject(ct) + e1:SetValue(function(e,c) return e:GetLabelObject()==c end) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + end +end \ No newline at end of file diff --git a/script/c511005606.lua b/script/c511005606.lua new file mode 100644 index 00000000..5ae3a4a8 --- /dev/null +++ b/script/c511005606.lua @@ -0,0 +1,20 @@ +--Mask of Shine and Dark (DOR) +--Scripted by GameMaster (GM) +function c511005606.initial_effect(c) + --gain 900 atk against warrior race + 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(c511005606.condtion) + e1:SetValue(900) + c:RegisterEffect(e1) +end +function c511005606.condtion(e) + local ph=Duel.GetCurrentPhase() + if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) or not e:GetHandler():IsRelateToBattle() then return false end + local bc=e:GetHandler():GetBattleTarget() + return bc and bc:IsFaceup() and bc:IsRace(RACE_WARRIOR) +end + diff --git a/script/c511005607.lua b/script/c511005607.lua new file mode 100644 index 00000000..b2de8434 --- /dev/null +++ b/script/c511005607.lua @@ -0,0 +1,26 @@ +--Tao the chanter +--Scripted by GameMaster (GM) +local id,cod=511005607,c511005607 +function cod.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(id,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(cod.operation) + c:RegisterEffect(e1) +end +function cod.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttribute,tp,0,LOCATION_MZONE,1,nil,ATTRIBUTE_LIGHT) end +end +function cod.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAttribute,tp,0,LOCATION_MZONE,nil,ATTRIBUTE_LIGHT) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetValue(ATTRIBUTE_DARK) + e1:SetReset(RESET_EVENT+0x1ff0000) + tc:RegisterEffect(e1,true) + tc=g:GetNext() + end +end diff --git a/script/c511005608.lua b/script/c511005608.lua new file mode 100644 index 00000000..6ae5af99 --- /dev/null +++ b/script/c511005608.lua @@ -0,0 +1,30 @@ +--Fiend's Hand (DOR) +--Scripted by GameMaster (GM) +function c511005608.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511005608,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511005608.condition) + e1:SetTarget(c511005608.target) + e1:SetOperation(c511005608.operation) + c:RegisterEffect(e1) +end +function c511005608.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) + and e:GetHandler():GetReasonCard():IsRelateToBattle() +end +function c511005608.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local rc=e:GetHandler():GetReasonCard() + Duel.SetTargetCard(rc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,rc,1,0,0) +end +function c511005608.operation(e,tp,eg,ep,ev,re,r,rp) + local rc=Duel.GetFirstTarget() + if rc:IsRelateToEffect(e) then + Duel.Destroy(rc,REASON_EFFECT) + end +end diff --git a/script/c511005609.lua b/script/c511005609.lua new file mode 100644 index 00000000..5c6e9590 --- /dev/null +++ b/script/c511005609.lua @@ -0,0 +1,42 @@ +-- Kageningen +--scripted by GameMaster (GM) +function c511005609.initial_effect(c) +--spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511005609,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FLIP) + e1:SetTarget(c511005609.sptg) + e1:SetOperation(c511005609.spop) + c:RegisterEffect(e1) + --damage change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetOperation(c511005609.damop) + c:RegisterEffect(e2) +end +function c511005609.spfilter(c,e,tp) + return c:IsCode(511005609) and c:IsCanBeSpecialSummoned(e,156,tp,false,false) +end +function c511005609.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511005609.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511005609.spop(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,c511005609.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,156,tp,tp,false,false,POS_FACEUP) + local rf=g:GetFirst().evolreg + if rf then rf(g:GetFirst()) end + end +end +function c511005609.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(e,0) +end diff --git a/script/c51100561.lua b/script/c51100561.lua new file mode 100644 index 00000000..f04ed895 --- /dev/null +++ b/script/c51100561.lua @@ -0,0 +1,74 @@ +--Get Your Game On! +function c51100561.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c51100561.target) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c51100561.atktg) + e2:SetValue(c51100561.val) + c:RegisterEffect(e2) +end +c51100561.illegal=true +function c51100561.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dl=6 + while dl==6 do + dl=Duel.TossDice(tp,1) + end + local op=0 + local proof=true + if dl==1 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100561,0)) + op=Duel.SelectOption(tp,aux.Stringid(51100561,1),aux.Stringid(51100561,2),aux.Stringid(51100561,3)) + if op~=0 then + proof=false + end + end + if dl==2 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100561,4)) + op=Duel.SelectOption(tp,aux.Stringid(51100561,5),aux.Stringid(51100561,6),aux.Stringid(51100561,7)) + if op~=1 then + proof=false + end + end + if dl==3 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100561,8)) + op=Duel.SelectOption(tp,aux.Stringid(51100561,9),aux.Stringid(51100561,10),aux.Stringid(51100561,3)) + if op~=0 then + proof=false + end + end + if dl==4 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100561,11)) + local mon=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100561,12)) + local day=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31) + if mon~=7 or day~=28 then + proof=false + end + end + if dl==5 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51100561,13)) + op=Duel.AnnounceCard(tp) + if op~=501000006 and op~=501000007 and op~=501000004 then + proof=false + end + end + if proof==false then + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_RULE) + end +end +function c51100561.atktg(e,c) + return c:IsSetCard(0x3008) or c:IsSetCard(0x1f) +end +function c51100561.val(e,c) + return c:GetAttack()*2 +end diff --git a/script/c511005610.lua b/script/c511005610.lua new file mode 100644 index 00000000..5fd494a3 --- /dev/null +++ b/script/c511005610.lua @@ -0,0 +1,34 @@ +--Wood Remains(DOR) +--Scripted by GameMaster(GM) +function c511005610.initial_effect(c) + --flip gain 500 atk/def + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c511005610.operation) + c:RegisterEffect(e1) +end +function c511005610.atktg(e,c) + return c:GetFieldID()<=e:GetLabel() and c:IsCode(17733394) +end +function c511005610.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + local mg,fid=g:GetMaxGroup(Card.GetFieldID) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511005610.atktg) + e1:SetValue(500) + e1:SetLabel(fid) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end + \ No newline at end of file diff --git a/script/c511005611.lua b/script/c511005611.lua new file mode 100644 index 00000000..e6869eae --- /dev/null +++ b/script/c511005611.lua @@ -0,0 +1,46 @@ +--Temple of skulls (DOR) +--scripted by GameMaster (GM) +function c511005611.initial_effect(c) + --cannot trigger + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(1,1) + e1:SetCondition(c511005611.con) + e1:SetValue(c511005611.aclimit) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511005611.con) + e2:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e2:SetTarget(c511005611.distg) + c:RegisterEffect(e2) + --disable effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetCondition(c511005611.con) + e3:SetRange(LOCATION_MZONE) + e3:SetOperation(c511005611.disop) + c:RegisterEffect(e3) +end +function c511005611.aclimit(e,re,tp) + return re:IsActiveType(TYPE_SPELL) +end +function c511005611.distg(e,c) + return c:IsType(TYPE_SPELL) +end +function c511005611.disop(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if tl==LOCATION_SZONE and re:IsActiveType(TYPE_SPELL) then + Duel.NegateEffect(ev) + end +end +function c511005611.con(e) + return e:GetHandler():IsDefensePos() +end \ No newline at end of file diff --git a/script/c511005612.lua b/script/c511005612.lua new file mode 100644 index 00000000..db5d87ba --- /dev/null +++ b/script/c511005612.lua @@ -0,0 +1,35 @@ +--Mech Mole Zombie (DOR) +--Keddy was here +local id,cod=511005612,c511005612 +function cod.initial_effect(c) + --Zombifi + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(id,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetOperation(cod.zop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_FLIP) + e2:SetCondition(cod.zcon) + e2:SetOperation(cod.zop) + c:RegisterEffect(e2) +end +function cod.zcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>4 and ph<100 +end +function cod.zop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local c=e:GetHandler() + local ag=a:GetAttackableTarget() + if a:IsAttackable() and not a:IsImmuneToEffect(e) and ag:IsContains(c) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(RACE_ZOMBIE) + e1:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511005613.lua b/script/c511005613.lua new file mode 100644 index 00000000..bdef8ad4 --- /dev/null +++ b/script/c511005613.lua @@ -0,0 +1,23 @@ +--Blue-Eyed Silver Zombie +local id,cod=511005613,c511005613 +function cod.initial_effect(c) + --Zombifi + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_FLIP) + e1:SetOperation(cod.zop) + c:RegisterEffect(e1) +end +function cod.zop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(RACE_ZOMBIE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end \ No newline at end of file diff --git a/script/c511005614.lua b/script/c511005614.lua new file mode 100644 index 00000000..0ecb2047 --- /dev/null +++ b/script/c511005614.lua @@ -0,0 +1,24 @@ +--Graveyard and the hand of inviation +--scripted by GameMaster (GM) +local id,cod=511005614,c511005614 +function cod.initial_effect(c) + --Zombifi + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_FLIP) + e1:SetOperation(cod.zop) + c:RegisterEffect(e1) +end +function cod.zop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(RACE_ZOMBIE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end \ No newline at end of file diff --git a/script/c511005615.lua b/script/c511005615.lua new file mode 100644 index 00000000..c6b14904 --- /dev/null +++ b/script/c511005615.lua @@ -0,0 +1,94 @@ +--Yamatano Dragon scroll (DOR) +--scripted by GameMaster (GM) +function c511005615.initial_effect(c)--special summon + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511005615,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCondition(c511005615.spcon) + e1:SetCost(c511005615.spcost) + e1:SetTarget(c511005615.sptg) + e1:SetOperation(c511005615.spop) + c:RegisterEffect(e1) + --get turn counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511005615.con) + e2:SetOperation(function (e) e:GetHandler():SetTurnCounter(e:GetHandler():GetTurnCounter()+1) end) + c:RegisterEffect(e2) + --required + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHANGE_POS) + e3:SetOperation(c511005615.regop) + e3:SetCondition(c511005615.con) + c:RegisterEffect(e3) + --to defense + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511005615,0)) + e4:SetCategory(CATEGORY_POSITION) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetTarget(c511005615.potg) + e4:SetOperation(c511005615.poop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e5) + local e6=e4:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end + +function c511005615.potg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c511005615.poop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then + c:SetTurnCounter(0) + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end + +function c511005615.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511005615,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end +function c511005615.con(e) + return e:GetHandler():IsDefensePos() +end +function c511005615.spcon(e,c) + if c==nil then return true end + return e:GetHandler():GetTurnCounter(e)==3 and e:GetHandler():IsDefensePos() +end +function c511005615.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511005615.spfilter2(c,e,tp) + return c:IsCode(70345785) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511005615.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511005615.spfilter2,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511005615.spop(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,c511005615.spfilter2,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end + diff --git a/script/c511005616.lua b/script/c511005616.lua new file mode 100644 index 00000000..958d9e39 --- /dev/null +++ b/script/c511005616.lua @@ -0,0 +1,42 @@ +--Lucky Trinket (DOR) +--scripted by GameMaster(GM) +function c511005616.initial_effect(c) +--atkdown + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511005616.atkcon) + e1:SetOperation(c511005616.atkop) + e1:SetCountLimit(1) + e1:SetTarget(c511005616.target) + c:RegisterEffect(e1) +end +function c511005616.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsDefensePos() +end + +function c511005616.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511005616.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-100) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end + +function c511005616.filter(c) +return c:IsAttribute(0x20) and c:IsFaceup() +end + +function c511005616.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511005616.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511005616.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511005616.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end \ No newline at end of file diff --git a/script/c511005617.lua b/script/c511005617.lua new file mode 100644 index 00000000..884dd990 --- /dev/null +++ b/script/c511005617.lua @@ -0,0 +1,16 @@ +--Nemuriko (DOR) +--scripted by GameMaster (GM) +function c511005617.initial_effect(c) + --warrior race cannot atk/ chg pos + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetCondition(function(e)return e:GetHandler():IsDefensePos() end) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_WARRIOR)) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + c:RegisterEffect(e2) +end \ No newline at end of file diff --git a/script/c511005618.lua b/script/c511005618.lua new file mode 100644 index 00000000..c7586a40 --- /dev/null +++ b/script/c511005618.lua @@ -0,0 +1,23 @@ +--The bewitching Phantom theif (DOR) +--scripted by GameMaster (GM) +function c511005618.initial_effect(c) + --active limit --> stun opponent trap cards + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511005618.atkop) + c:RegisterEffect(e1) +end +function c511005618.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511005618.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511005618.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c511005619.lua b/script/c511005619.lua new file mode 100644 index 00000000..bc0251cf --- /dev/null +++ b/script/c511005619.lua @@ -0,0 +1,29 @@ +--Flame reaper (DOR) +--scripted by GameMaster (GM) +function c511005619.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c511005619.target) + e1:SetCondition(c511005619.condition) + e1:SetOperation(c511005619.operation) + c:RegisterEffect(e1) +end +function c511005619.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end + +function c511005619.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end + +function c511005619.cfilter(c) + return c:IsFaceup() and c:IsCode(86318356) +end +function c511005619.condition(e,tp,eg,ep,ev,re,r,rp) +return Duel.IsExistingMatchingCard(c511005619.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end diff --git a/script/c511005620.lua b/script/c511005620.lua new file mode 100644 index 00000000..fba2a2fa --- /dev/null +++ b/script/c511005620.lua @@ -0,0 +1,27 @@ +--The Snake Hair (DOR) +--scripted by GameMaster (GM) +function c511005620.initial_effect(c) + --battled + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetOperation(c511005620.atop) + c:RegisterEffect(e1) +end +function c511005620.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc==Duel.GetAttacker() then + Duel.Hint(HINT_CARD,0,511005620) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e2) + end +end diff --git a/script/c511005621.lua b/script/c511005621.lua new file mode 100644 index 00000000..b0debfe2 --- /dev/null +++ b/script/c511005621.lua @@ -0,0 +1,32 @@ +--illlusionist faceless mage (DOR) +--scripted by GameMaster (GM) +function c511005621.initial_effect(c) + --battled + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511005621.condition) + e1:SetOperation(c511005621.atop) + c:RegisterEffect(e1) +end +function c511005621.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local pos=c:GetBattlePosition() + return c==Duel.GetAttackTarget() and (pos==POS_FACEDOWN_DEFENSE or pos==POS_FACEDOWN_ATTACK) and c:IsLocation(LOCATION_MZONE) +end +function c511005621.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc==Duel.GetAttacker() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + bc:RegisterEffect(e2) +end +end diff --git a/script/c511005622.lua b/script/c511005622.lua new file mode 100644 index 00000000..00bd835c --- /dev/null +++ b/script/c511005622.lua @@ -0,0 +1,35 @@ +--Hurricail (DOR) +--scripted by GameMaster (GM) +function c511005622.initial_effect(c) +--Destroy spells in colums + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetCode(EVENT_FLIP) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetDescription(HINTMSG_DESTROY) + e1:SetTarget(c511005622.target) + e1:SetOperation(c511005622.operation) + c:RegisterEffect(e1) + end + +function c511005622.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsOnField() then return false end + local seq=e:GetHandler():GetSequence() + local g=Group.CreateGroup() + local tc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,4-seq) + if tc then g:AddCard(tc) end + local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,seq) + if tc2 then g:AddCard(tc2) end + if g:GetCount()>0 then Duel.Destroy(g,REASON_EFFECT) end +end + +function c511005622.target(e,tp,eg,ep,ev,re,r,rp,chk) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,4-seq) + local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,seq) + if chk==0 then return tc or tc2 end + local g=Group.CreateGroup() + if tc then g:AddCard(tc) end + if tc2 then g:AddCard(tc2) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end \ No newline at end of file diff --git a/script/c511005623.lua b/script/c511005623.lua new file mode 100644 index 00000000..96707127 --- /dev/null +++ b/script/c511005623.lua @@ -0,0 +1,37 @@ +--Gogogo Dexia (Manga) +--scripted by GameMaster (GM) +function c511005623.initial_effect(c) + --cannot atk earth monsters + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetRange(LOCATION_MZONE) + e0:SetTargetRange(0,LOCATION_MZONE) + e0:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e0:SetValue(c511005623.atlimit) + e0:SetCondition(c511005623.condition2) + c:RegisterEffect(e0) + --Pos Change + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_POSITION) + e1:SetCondition(c511005623.condition) + e1:SetValue(POS_FACEUP_DEFENSE) + c:RegisterEffect(e1) +end +function c511005623.atlimit(e,c) + return c==e:GetHandler() and c:IsFaceup() and c:IsAttribute(ATTRIBUTE_EARTH) +end +function c511005623.condition2(e,tp,eg,ep,ev,re,r,rp) + local tp=e:GetHandlerPlayer() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511005623.filter,tp,LOCATION_MZONE,0,1,nil,511005624) + and Duel.IsExistingMatchingCard(c511005623.filter,tp,LOCATION_MZONE,0,1,nil,511005623) +end + +function c511005623.filter(c,code) + return c:IsCode(code) and c:IsFaceup() +end + +function c511005623.condition(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,511005624) +end \ No newline at end of file diff --git a/script/c511005624.lua b/script/c511005624.lua new file mode 100644 index 00000000..3cba0079 --- /dev/null +++ b/script/c511005624.lua @@ -0,0 +1,39 @@ +--Gogogo Aristeria (Manga) +--scripted by GameMaster (GM) +function c511005624.initial_effect(c) + --cannot atk earth monsters + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetRange(LOCATION_MZONE) + e0:SetTargetRange(0,LOCATION_MZONE) + e0:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e0:SetValue(c511005624.atlimit) + e0:SetCondition(c511005624.condition2) + c:RegisterEffect(e0) + --Pos Change + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_POSITION) + e1:SetCondition(c511005624.condition) + e1:SetValue(POS_FACEUP_DEFENSE) + c:RegisterEffect(e1) +end + +function c511005624.atlimit(e,c) + return c==e:GetHandler() and c:IsFaceup() and c:IsAttribute(ATTRIBUTE_EARTH) +end + +function c511005624.condition2(e,tp,eg,ep,ev,re,r,rp) + local tp=e:GetHandlerPlayer() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511005624.filter,tp,LOCATION_MZONE,0,1,nil,511005624) + and Duel.IsExistingMatchingCard(c511005624.filter,tp,LOCATION_MZONE,0,1,nil,511005623) +end + +function c511005624.filter(c,code) + return c:IsCode(code) and c:IsFaceup() +end + +function c511005624.condition(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,511005623) +end \ No newline at end of file diff --git a/script/c511005625.lua b/script/c511005625.lua new file mode 100644 index 00000000..0c2696b2 --- /dev/null +++ b/script/c511005625.lua @@ -0,0 +1,51 @@ +--cosmo queen (DOR) +--scripted by GameMaster (GM) +function c511005625.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c511005625.op) + c:RegisterEffect(e1) +end + +function c511005625.filter(c) + return c and c:IsFaceup() +end +function c511005625.condition(e) + return + not c511005625.filter(Duel.GetFieldCard(0,LOCATION_SZONE,5)) and + not c511005625.filter(Duel.GetFieldCard(1,LOCATION_SZONE,5)) +end + +function c511005625.op(e) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetCondition(c511005625.condition) + e1:SetValue(c511005625.val) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --Def + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + --field + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CHANGE_ENVIRONMENT) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511005625.condition) + e3:SetValue(59197169) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) +end + +function c511005625.val(e,c) + local r=c:GetRace() + if bit.band(r,RACE_FIEND+RACE_SPELLCASTER)>0 then return 200 + elseif bit.band(r,RACE_FAIRY)>0 then return -200 + else return 0 end +end \ No newline at end of file diff --git a/script/c511005626.lua b/script/c511005626.lua new file mode 100644 index 00000000..63a56cc9 --- /dev/null +++ b/script/c511005626.lua @@ -0,0 +1,60 @@ +--Curse of Dragon (DOR) +--scripted by GameMaster (GM) +function c511005626.initial_effect(c) + --field treated as wasteland + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetOperation(c511005626.operation) + c:RegisterEffect(e1) +end +function c511005626.filter(c) + return c and c:IsCode(code) and c:IsFaceUp() +end +function c511005626.condition(e) + return + not c511005626.filter(Duel.GetFieldCard(0,LOCATION_SZONE,5)) and + not c511005626.filter(Duel.GetFieldCard(1,LOCATION_SZONE,5)) +end + +function c511005626.atktg(e,c) + return c:IsType(TYPE_MONSTER) and c:IsRace(RACE_ZOMBIE+RACE_ROCK+RACE_DINOSAUR) +end + + +function c511005626.operation(e) + local c=e:GetHandler() + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511005626.atktg) + e1:SetCondition(c511005626.condition) + e1:SetValue(c511005626.val) + e1:SetLabel(fid) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + --Def + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetCondition(c511005626.condition) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --field + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCondition(c511005626.condition) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_CHANGE_ENVIRONMENT) + e3:SetValue(23424603) + c:RegisterEffect(e3) + end + +function c511005626.val(e,c) + local r=c:GetRace() + if bit.band(r,RACE_ZOMBIE+RACE_ROCK+RACE_DINOSAUR)>0 then return 200 + else return 0 end +end \ No newline at end of file diff --git a/script/c511005627.lua b/script/c511005627.lua new file mode 100644 index 00000000..4f28bf99 --- /dev/null +++ b/script/c511005627.lua @@ -0,0 +1,138 @@ +--Larva of moth (DOR) +--scripted by GameMaster (GM) +function c511005627.initial_effect(c) + --if destroyed summon larva moth + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511005627,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511005627.condition) + e1:SetTarget(c511005627.target) + e1:SetOperation(c511005627.operation) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e2) + --to defense + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511005627,0)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c511005627.potg) + e3:SetOperation(c511005627.poop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) + --special summon pupa of moth + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(511005627,0)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EVENT_PHASE+PHASE_STANDBY) + e6:SetCondition(c511005627.spcon) + e6:SetCost(c511005627.spcost) + e6:SetTarget(c511005627.sptg) + e6:SetOperation(c511005627.spop) + c:RegisterEffect(e6) + --required + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_CHANGE_POS) + e7:SetOperation(c511005627.regop) + e7:SetCondition(c511005627.condition2) + c:RegisterEffect(e7) + --get turn counter + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e8:SetCode(EVENT_PHASE+PHASE_END) + e8:SetRange(LOCATION_MZONE) + e8:SetCountLimit(1) + e8:SetCondition(c511005627.condition2) + e8:SetOperation(function (e) e:GetHandler():SetTurnCounter(e:GetHandler():GetTurnCounter()+1) end) + c:RegisterEffect(e8) +end + +c511005627.collection={ [87756343]=true; [511002500]=true; } + + +--position change +function c511005627.potg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c511005627.poop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then + c:SetTurnCounter(0) + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +--count summon +function c511005627.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511005627,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end + +function c511005627.condition2(e) + return e:GetHandler():IsDefensePos() +end +function c511005627.spcon(e,c) + if c==nil then return true end + return e:GetHandler():GetTurnCounter(e)==4 +end +function c511005627.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511005627.spfilter2(c,e,tp) + return c:IsCode(511005602) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511005627.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511005627.spfilter2,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511005627.spop(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,c511005627.spfilter2,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end +------------------------------ +--summon larva moth +function c511005627.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsLocation(LOCATION_DECK) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511005627.spfilter(c,e,tp) + return c511005627.collection[c:GetCode()] and c:IsRace(RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,true,false,POS_FACE_UP) +end +function c511005627.target(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511005627.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c511005627.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,c511005627.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + Duel.ConfirmCards(1-tp,g) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511005628.lua b/script/c511005628.lua new file mode 100644 index 00000000..28aea4b6 --- /dev/null +++ b/script/c511005628.lua @@ -0,0 +1,40 @@ +--Unfair Treaty +--scripted by Shad3 & GameMaster (GM) +function c511005628.initial_effect(c) +--Activate +local e1=Effect.CreateEffect(c) +e1:SetType(EFFECT_TYPE_ACTIVATE) +e1:SetCost(c511005628.cost) +e1:SetCode(EVENT_FREE_CHAIN) +c:RegisterEffect(e1) +local e2=Effect.CreateEffect(c) +e2:SetDescription(aux.Stringid(511005628,0)) +e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) +e2:SetCode(EFFECT_LPCOST_REPLACE) +e2:SetRange(LOCATION_SZONE) +e2:SetCondition(c511005628.condition) +e2:SetOperation(c511005628.operation) +c:RegisterEffect(e2) +end + +function c511005628.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,2,e:GetHandler()) end + Duel.DiscardHand(tp,Card.IsDiscardable,2,2,REASON_COST+REASON_DISCARD) +end + +function c511005628.condition(e,tp,eg,ep,ev,re,r,rp) + if re and tp==ep and re:GetActiveType()==TYPE_SPELL+TYPE_CONTINUOUS and e:GetHandler():GetFlagEffect(511005628)==0 then + e:GetHandler():RegisterFlagEffect(511005628,RESET_EVENT,0,0) + local res=Duel.CheckLPCost(1-ep,ev) + e:GetHandler():ResetFlagEffect(511005628) + return res + end + return false +end +function c511005628.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(511005628,RESET_EVENT,0,0) + Duel.Hint(HINT_CARD,0,c:GetOriginalCode()) + Duel.PayLPCost(1-ep,ev) + c:ResetFlagEffect(511005628) +end \ No newline at end of file diff --git a/script/c511005629.lua b/script/c511005629.lua new file mode 100644 index 00000000..fe3bcab2 --- /dev/null +++ b/script/c511005629.lua @@ -0,0 +1,35 @@ +--Illegal Keeper +--scripted by GameMaster (GM) +function c511005629.initial_effect(c) + --Return cards to deck & inflict 1000 per card returned + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(3167573,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c511005629.condition) + e1:SetTarget(c511005629.target) + e1:SetOperation(c511005629.activate) + c:RegisterEffect(e1) +end +function c511005629.cfilter(c,tp) + return c:IsControler(tp) and c:IsPreviousLocation(LOCATION_DECK) and ep~=tp and Duel.GetCurrentPhase()~=PHASE_DRAW +end +function c511005629.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511005629.cfilter,1,nil,1-tp) +end +function c511005629.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1) +end +function c511005629.filter(c,e,tp) + return c:IsRelateToEffect(e) and c:IsControler(tp) and c:IsPreviousLocation(LOCATION_DECK) +end +function c511005629.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=eg:Filter(c511005629.filter,nil,e,1-tp) + local ct=Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + Duel.Damage(1-tp,ct*1000,REASON_EFFECT) +end + \ No newline at end of file diff --git a/script/c511005630.lua b/script/c511005630.lua new file mode 100644 index 00000000..116a0fe5 --- /dev/null +++ b/script/c511005630.lua @@ -0,0 +1,39 @@ +--Freedom Bird +--scripted by GameMaster (GM) +--fixed by MLD +function c511005630.initial_effect(c) + --Special summon Freedom bird from you deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511005630,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511005630.spcon) + e1:SetTarget(c511005630.sptg) + e1:SetOperation(c511005630.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c511005630.cfilter(c,tp) + return c:GetSummonPlayer()~=tp +end +function c511005630.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511005630.cfilter,1,nil,tp) +end +function c511005630.filter(c,e,tp) + return c:IsCode(511005630) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511005630.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511005630.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511005630.spop(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,c511005630.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c51100567.lua b/script/c51100567.lua new file mode 100644 index 00000000..b69e8194 --- /dev/null +++ b/script/c51100567.lua @@ -0,0 +1,53 @@ +--Judge Man (DM) +--Scripted by edo9300 +function c51100567.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51100567,2)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e1:SetCondition(c51100567.condition) + e1:SetCost(c51100567.cost) + e1:SetTarget(c51100567.target) + e1:SetOperation(c51100567.operation) + c:RegisterEffect(e1) + if not c51100567.global_check then + c51100567.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c51100567.chk) + Duel.RegisterEffect(ge1,0) + end +end +c51100567.dm=true +function c51100567.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c51100567.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c51100567.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1000) and Duel.GetFlagEffect(tp,51100567+1)==0 end + Duel.PayLPCost(tp,1000) + if Duel.GetTurnPlayer()==tp then + Duel.RegisterFlagEffect(tp,51100567+1,RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,1) + else + Duel.RegisterFlagEffect(tp,51100567+1,RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,1) + end +end +function c51100567.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c51100567.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) + Duel.Damage(1-tp,ct*500,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c51100570.lua b/script/c51100570.lua new file mode 100644 index 00000000..c079bf40 --- /dev/null +++ b/script/c51100570.lua @@ -0,0 +1,145 @@ +--Strike Ninja (DM) +--Scripted by edo9300 +function c51100570.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41006930,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,51100570) + e1:SetCost(c51100570.rmcost) + e1:SetTarget(c51100570.rmtg) + e1:SetOperation(c51100570.rmop) + c:RegisterEffect(e1) + --activate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51100570,0)) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_PZONE+LOCATION_MZONE) + e2:SetCondition(c51100570.condition) + e2:SetCost(c51100570.accost) + e2:SetTarget(c51100570.actg) + e2:SetOperation(c51100570.acop) + c:RegisterEffect(e2) + if not c51100570.global_check then + c51100570.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetCountLimit(1) + ge1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge1:SetOperation(c51100570.chk) + Duel.RegisterEffect(ge1,0) + end +end +c51100570.dm=true +function c51100570.dm_custom_pass_ability(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return Duel.GetFlagEffect(c:GetControler(),51100570)==0 and e:GetHandler():GetFlagEffect(300)>0 and r~=1048650 +end +function c51100570.chk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,300) + Duel.CreateToken(1-tp,300) +end +function c51100570.cfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToRemoveAsCost() +end +function c51100570.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c51100570.cfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c51100570.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.RegisterFlagEffect(e:GetHandler():GetControler(),51100570,RESET_PHASE+PHASE_END,0,1) +end +function c51100570.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c51100570.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c51100570.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Remove(c,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(c) + e1:SetCountLimit(1) + e1:SetOperation(c51100570.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c51100570.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end +function c51100570.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(300)>0 +end +function c51100570.accost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetMatchingGroupCount(Card.IsDiscardable,tp,LOCATION_HAND,0,e:GetHandler())>1 end + Duel.DiscardHand(tp,Card.IsDiscardable,2,2,REASON_COST+REASON_DISCARD) +end +function c51100570.filter(c) + return c:IsFacedown() and c:CheckActivateEffect(false,false,false)~=nil +end +function c51100570.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c51100570.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c51100570.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + local g=Duel.SelectTarget(tp,c51100570.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) + local tc=g:GetFirst() + e:SetLabelObject(tc) + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ChangePosition(tc,POS_FACEUP) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end +end +function c51100570.acop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local op=te:GetOperation() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end +end \ No newline at end of file diff --git a/script/c511006000.lua b/script/c511006000.lua new file mode 100644 index 00000000..fe7e2928 --- /dev/null +++ b/script/c511006000.lua @@ -0,0 +1,24 @@ +--Eternal Spell +function c511006000.initial_effect(c) +--Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511006000.thtg) + e1:SetOperation(c511006000.thop) + c:RegisterEffect(e1) +end +function c511006000.filter(c) + return c:IsType(TYPE_SPELL) and c:IsType(TYPE_CONTINUOUS) +end +function c511006000.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c511006000.filter(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c511006000.filter,tp,0,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511006000.filter,tp,0,LOCATION_GRAVE,1,1,nil) +end +function c511006000.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + e:GetHandler():CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000) +end \ No newline at end of file diff --git a/script/c511006002.lua b/script/c511006002.lua new file mode 100644 index 00000000..9cc75235 --- /dev/null +++ b/script/c511006002.lua @@ -0,0 +1,32 @@ +--Exus Summon +function c511006002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511006002.condition) + e1:SetTarget(c511006002.target) + e1:SetOperation(c511006002.activate) + c:RegisterEffect(e1) +end +function c511006002.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsAbleToHand() +end +function c511006002.filter(c,tc,e,tp) + return c:GetAttack()6 and c:IsSummonable(false,se) +end +function c511006004.discardfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511006004.filter(c,se,tp) + return c511006004.lvfilter(c,se) and Duel.IsExistingMatchingCard(c511006004.discardfilter,tp,LOCATION_HAND,0,2,c) +end +function c511006004.filter2(c,se,tp) + return c511006004.discardfilter(c) and Duel.IsExistingMatchingCard(c511006004.lvfilter,tp,LOCATION_HAND,0,1,c,se) +end + +function c511006004.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local se=e:GetLabelObject() + if chk==0 then return Duel.IsExistingMatchingCard(c511006004.filter,tp,LOCATION_HAND,0,1,nil,se,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511006004.filter2,tp,LOCATION_HAND,0,1,1,nil,se,tp) + Duel.SendtoGrave(g1,REASON_COST) + local g2=Duel.SelectMatchingCard(tp,c511006004.filter2,tp,LOCATION_HAND,0,1,1,nil,se,tp) + Duel.SendtoGrave(g2,REASON_COST) +end +function c511006004.target(e,tp,eg,ep,ev,re,r,rp,chk) + local se=e:GetLabelObject() + if chk==0 then return Duel.IsExistingMatchingCard(c511006004.lvfilter,tp,LOCATION_HAND,0,1,nil,se) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c511006004.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local se=e:GetLabelObject() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local tc=Duel.SelectMatchingCard(tp,c511006004.lvfilter,tp,LOCATION_HAND,0,1,1,nil,se):GetFirst() + if tc then + Duel.Summon(tp,tc,false,se) + end +end \ No newline at end of file diff --git a/script/c511007001.lua b/script/c511007001.lua new file mode 100644 index 00000000..dfaf794b --- /dev/null +++ b/script/c511007001.lua @@ -0,0 +1,61 @@ +--coded by Lyris +--Absolute Buster +function c511007001.initial_effect(c) + --This turn, negate all Spell/Trap Card effects that would negate an attack and/or prevent a card(s) from being destroyed. [Trap Stun & Necrovalley] + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511007001.activate) + c:RegisterEffect(e1) +end +function c511007001.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_SZONE,LOCATION_SZONE) + e1:SetTarget(c511007001.distarget) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + --disable effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetOperation(c511007001.disoperation) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + --disable trap monster + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c511007001.distarget) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c511007001.distarget(e,c) + return c~=e:GetHandler() and c:IsType(TYPE_SPELL+TYPE_TRAP) and + --prevents destruction + (c:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) or c:IsHasEffect(EFFECT_INDESTRUCTABLE_EFFECT) or c:IsHasEffect(EFFECT_INDESTRUCTABLE_COUNT) or c:IsHasEffect(EFFECT_DESTROY_REPLACE)) +end +function c511007001.disoperation(e,tp,eg,ep,ev,re,r,rp) + local ec=Duel.GetAttacker() + local rc=re:GetHandler() + local targets=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + local res=true + --Checks if the effect to be negated makes the attacking monster leave the field; most cards don't do that if they negate attacks + local category={CATEGORY_DESTROY,CATEGORY_RELEASE,CATEGORY_REMOVE,CATEGORY_TODECK,CATEGORY_TOGRAVE,CATEGORY_TOHAND} + for i=0,5 do + local ex,tg,ct,p,v=Duel.GetOperationInfo(ev,category[i]) + if ex then + if tg and tg:GetCount()>0 then + if tg:IsContains(ec) then res=false end + end + end + end + --Note: This cannot negate non-Targeting attack negation. + if re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and (res or (rc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) or rc:IsHasEffect(EFFECT_INDESTRUCTABLE_EFFECT) or rc:IsHasEffect(EFFECT_INDESTRUCTABLE_COUNT))) then + Duel.NegateEffect(ev) + end +end diff --git a/script/c511007003.lua b/script/c511007003.lua new file mode 100644 index 00000000..8ce8479d --- /dev/null +++ b/script/c511007003.lua @@ -0,0 +1,40 @@ +--coded by Lyris +--Briar Pin-Seal +function c511007003.initial_effect(c) + --When this card is activated; pick 1 card in your opponent's hand at random. + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511007003.target) + e1:SetOperation(c511007003.activate) + c:RegisterEffect(e1) + --That card cannot be used [Prohibition] + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCode(EFFECT_FORBIDDEN) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0x7f,0x7f) + e2:SetTarget(c511007003.bantg) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --It cannot be discarded. [Narukami Waterfall] + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_DISCARD_HAND) + e3:SetTargetRange(1,1) + e3:SetTarget(c511007003.bantg) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) +end +function c511007003.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end +end +function c511007003.activate(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetFieldGroup(tp,0,LOCATION_HAND):RandomSelect(tp,1):GetFirst() + e:SetLabelObject(ac) +end +function c511007003.bantg(e,c) + return c==e:GetLabelObject():GetLabelObject() +end diff --git a/script/c511007006.lua b/script/c511007006.lua new file mode 100644 index 00000000..a3e462e3 --- /dev/null +++ b/script/c511007006.lua @@ -0,0 +1,105 @@ +--coded by Lyris +--Flash Fang +--fixed by MLD +function c511007006.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511007006.target) + e1:SetOperation(c511007006.activate) + c:RegisterEffect(e1) +end +c511007006.collection={ + [13429800]=true;[34290067]=true;[10532969]=true;[71923655]=true;[32393580]=true; + [810000016]=true;[20358953]=true;[37798171]=true;[70101178]=true;[23536866]=true; + [7500772]=true;[511001410]=true;[69155991]=true;[37792478]=true;[17201174]=true; + [44223284]=true;[70655556]=true;[63193879]=true;[25484449]=true;[810000026]=true; + [17643265]=true;[64319467]=true;[810000030]=true;[810000008]=true;[20838380]=true; + [87047161]=true;[80727036]=true;[28593363]=true;[50449881]=true;[49221191]=true; + [65676461]=true;[440556]=true;[511001273]=true;[31320433]=true;[5014629]=true; + [14306092]=true;[84224627]=true;[511001163]=true;[511001169]=true;[511001858]=true; +} +function c511007006.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x321) or c511007006.collection[c:GetCode()]) +end +function c511007006.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511007006.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c511007006.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511007006.filter,tp,LOCATION_MZONE,0,nil) + local c=e:GetHandler() + local fid=c:GetFieldID() + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(51107006,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetOperation(c511007006.regop) + tc:RegisterEffect(e2) + tc=sg:GetNext() + end + sg:KeepAlive() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetReset(RESET_PHASE+PHASE_BATTLE) + e2:SetCountLimit(1) + e2:SetLabel(fid) + e2:SetLabelObject(sg) + e2:SetCondition(c511007006.descon) + e2:SetOperation(c511007006.desop) + Duel.RegisterEffect(e2,tp) +end +function c511007006.regop(e,tp,eg,ep,ev,re,r,rp) + if ep~=tp and Duel.GetAttackTarget()==nil then + local c=e:GetHandler() + c:SetFlagEffectLabel(51107006,c:GetFlagEffectLabel(51107006)+ev) + end +end +function c511007006.desfilter(c,fid) + return c:GetFlagEffectLabel(51107006)-fid>0 +end +function c511007006.desopfilter(c,dam) + return c:GetAttack()=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511007007.filter(c,e,tp,tid) + return bit.band(c:GetReason(),REASON_BATTLE)~=0 and c:GetTurnID()==tid and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511007007.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tid=Duel.GetTurnCount() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511007007.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511007007.activate(e,tp,eg,ep,ev,re,r,rp) + local tid=Duel.GetTurnCount() + local g1=Group.CreateGroup() + local g2=Group.CreateGroup() + local fid=e:GetHandler():GetFieldID() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511007007.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,tid) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + g1=Duel.SelectMatchingCard(tp,c511007007.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,tid) + Duel.SpecialSummonStep(g1:GetFirst(),0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + g1:GetFirst():RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + g1:GetFirst():RegisterEffect(e2,true) + g1:GetFirst():RegisterFlagEffect(51107007,RESET_EVENT+0x1fe0000,0,1,fid) + end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511007007.filter,1-tp,LOCATION_GRAVE,0,1,nil,e,1-tp,tid) + and Duel.SelectYesNo(1-tp,aux.Stringid(511000631,1)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + g2=Duel.SelectMatchingCard(1-tp,c511007007.filter,1-tp,LOCATION_GRAVE,0,1,1,nil,e,1-tp,tid) + Duel.SpecialSummonStep(g2:GetFirst(),0,1-tp,1-tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + g2:GetFirst():RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + g2:GetFirst():RegisterEffect(e2,true) + g2:GetFirst():RegisterFlagEffect(51107007,RESET_EVENT+0x1fe0000,0,1,fid) + end + Duel.SpecialSummonComplete() + g1:Merge(g2) + g1:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g1) + e1:SetCondition(c511007007.descon) + e1:SetOperation(c511007007.desop) + Duel.RegisterEffect(e1,tp) +end +function c511007007.desfilter(c,fid) + return c:GetFlagEffectLabel(51107007)==fid +end +function c511007007.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511007007.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511007007.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511007007.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c511007008.lua b/script/c511007008.lua new file mode 100644 index 00000000..f25c7cf7 --- /dev/null +++ b/script/c511007008.lua @@ -0,0 +1,48 @@ +--coded by Lyris +--Action Card - From the Brink of Defeat +function c511007008.initial_effect(c) + --Target 1 battling monster; it gains 800 ATK during damage calculation only, also negate its destruction by this battle. + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511007008.target) + e1:SetOperation(c511007008.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(function(e,tp) return tp~=Duel.GetTurnPlayer() end) + c:RegisterEffect(e2) +end +function c511007008.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Group.FromCards(Duel.GetAttacker(),Duel.GetAttackTarget()) + if chkc then return g:IsContains(chkc) end + if chk==0 then return g:IsExists(Card.IsCanBeEffectTarget,1,nil,e) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tg=g:FilterSelect(tp,Card.IsCanBeEffectTarget,1,1,nil,e) + Duel.SetTargetCard(tg) +end +function c511007008.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCountLimit(1) + e1:SetValue(function(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetCondition(function(e) return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL end) + e2:SetValue(800) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511007010.lua b/script/c511007010.lua new file mode 100644 index 00000000..a0c6e6d2 --- /dev/null +++ b/script/c511007010.lua @@ -0,0 +1,48 @@ +--coded by Lyris +--Buried Destiny +function c511007010.initial_effect(c) + --Activate only if a Spell Card your opponent already used in the Duel is not in their Graveyard. Select 1 card with the same name in your Graveyard and return it to the hand. + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511007010.target) + e1:SetOperation(c511007010.activate) + c:RegisterEffect(e1) + if not c511007010.globle_check then + c511007010.globle_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_CHAIN_SOLVED) + ge1:SetOperation(c511007010.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511007010.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=re:GetHandler() + if tc:IsType(TYPE_SPELL) then + tc:RegisterFlagEffect(511007010,0,0,1) + if tc:GetControler()==0 then tc:SetFlagEffectLabel(511007010,0) else tc:SetFlagEffectLabel(511007010,1) end + end +end +function c511007010.filter(c,tp) + return c:IsAbleToHand() and Duel.IsExistingMatchingCard(c511007010.chfilter,tp,0,0xef,1,nil,tp,c:GetCode()) +end +function c511007010.chfilter(c,tp,code) + return c:GetFlagEffectLabel(511007010)==1-tp and c:IsCode(code) +end +function c511007010.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511007010.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511007010.filter,tp,LOCATION_GRAVE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511007010.filter,tp,LOCATION_GRAVE,0,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511007010.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end \ No newline at end of file diff --git a/script/c511007013.lua b/script/c511007013.lua new file mode 100644 index 00000000..940cf8ce --- /dev/null +++ b/script/c511007013.lua @@ -0,0 +1,57 @@ +--coded by Lyris +--Charging Construction +function c511007013.initial_effect(c) + --If you Normal Summoned a "Heavy Industry" monster this turn: [Turbo Booster] Special Summon 1 "Heavy Industry" monster from your hand in face-up Defense Position. + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(function(e,tp,eg,ep,ev,re,r,rp) return c511007013[tp] end) + e1:SetTarget(c511007013.target) + e1:SetOperation(c511007013.activate) + c:RegisterEffect(e1) + if not c511007013.global_check then + c511007013.global_check=true + c511007013[0]=false + c511007013[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c511007013.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c511007013.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511007013.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if c511007013.heavy_industry[tc:GetCode()] then + c511007013[tc:GetControler()]=true + end +end +function c511007013.clear(e,tp,eg,ep,ev,re,r,rp) + c511007013[0]=false + c511007013[1]=false +end +c511007013.heavy_industry={ + [29515122]=true;[42851643]=true;[511002686]=true;[511002687]=true; +} +function c511007013.filter(c,e,tp) + return c511007013.heavy_industry[c:GetCode()] and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511007013.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511007013.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511007013.activate(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,c511007013.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511007014.lua b/script/c511007014.lua new file mode 100644 index 00000000..9d220d7e --- /dev/null +++ b/script/c511007014.lua @@ -0,0 +1,97 @@ +--coded by Lyris +--Clean Barrier - Clear Force +function c511007014.initial_effect(c) + --When an opponent's monster declares an attack: The ATK of all face-up monsters your opponent currently controls becomes their original ATK, [Number 107: Galaxy-Eyes Tachyon Dragon] also negate any card effects that would change the ATK of a monster(s) your opponent controls [Distortion Crystal]. These changes last until the end of the Battle Phase. + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511007014.condition) + e1:SetOperation(c511007014.activate) + c:RegisterEffect(e1) + if not c511007014.global_check then + c511007014.global_check=true + --Check for ATK changing effects + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511007014.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511007014.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511007014)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511007014.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511007014,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511007014.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=c:GetAttack()-e:GetLabel() + Duel.RaiseEvent(c,511007014,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511007014.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511007014.filter(c) + return c:IsFaceup() and c:GetAttack()~=c:GetBaseAttack() +end +function c511007014.activate(e,tp,eg,ep,ev,re,r,rp) + --[[local e0=Effect.CreateEffect(e:GetHandler()) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetCode(EFFECT_DISABLE) + e0:SetTargetRange(0,LOCATION_MZONE) + Duel.RegisterEffect(e0,tp)]] + local e0=Effect.CreateEffect(e:GetHandler()) + e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e0:SetCode(511007014) + e0:SetCondition(c511007014.atkcon) + e0:SetOperation(c511007014.atkop) + e0:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e0,tp) + local g=Duel.GetMatchingGroup(c511007014.filter,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetAttack()~=tc:GetBaseAttack() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end +end +--[[function c511007014.dfilter(c) + return c:IsHasEffect(EFFECT_UPDATE_ATTACK) or c:IsHasEffect(EFFECT_SET_ATTACK) or c:IsHasEffect(EFFECT_SET_ATTACK_FINAL) or c:IsHasEffect(EFFECT_SET_BASE_ATTACK) +end]] +function c511007014.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsControler,1,nil,1-tp) and ev~=0 +end +function c511007014.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(tc:GetAttack()-ev) + tc:RegisterEffect(e1) +end diff --git a/script/c511007015.lua b/script/c511007015.lua new file mode 100644 index 00000000..af9b1238 --- /dev/null +++ b/script/c511007015.lua @@ -0,0 +1,58 @@ +--coded by Lyris +--Clock Knight No. 3 +function c511007015.initial_effect(c) + --Once per turn, you can toss a coin. If the result is Heads, this card gains 1200 ATK until the End Phase. Otherwise, destroy this card. [Clock Knight No. 12] + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89718302,0)) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511007015.tg) + e1:SetOperation(c511007015.op) + c:RegisterEffect(e1) + --Once per turn, if you control another "Clock Knight" monster, you can negate the effects of a card requiring a coin toss and redo the coin toss. [Clock Knight No. 12] + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_TOSS_COIN_NEGATE) + e2:SetCondition(c511007015.coincon) + e2:SetOperation(c511007015.coinop) + c:RegisterEffect(e2) +end +function c511007015.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c511007015.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local res=Duel.TossCoin(tp,1) + if res==1 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1200) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + else + Duel.Destroy(c,REASON_EFFECT) + end + end +end +function c511007015.cfilter(c) + return c:IsFaceup() and (c:IsCode(511002118) or c:IsCode(511007015)) +end +function c511007015.coincon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and e:GetHandler():GetFlagEffect(511007015)==0 + and Duel.IsExistingMatchingCard(c511007015.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c511007015.coinop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(511007015)~=0 then return end + if Duel.SelectYesNo(tp,aux.Stringid(36562627,0)) then + Duel.Hint(HINT_CARD,0,511007015) + e:GetHandler():RegisterFlagEffect(511007015,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.TossCoin(tp,ev) + end +end diff --git a/script/c511007016.lua b/script/c511007016.lua new file mode 100644 index 00000000..89d93fdb --- /dev/null +++ b/script/c511007016.lua @@ -0,0 +1,32 @@ +--coded by Lyris +--fixed by MLD +--Comeback +function c511007016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetTarget(c511007016.target) + e1:SetOperation(c511007016.activate) + c:RegisterEffect(e1) +end +function c511007016.filter(c,tp) + return c:IsControlerCanBeChanged() and c:IsFaceup() and c:GetOwner()==tp +end +function c511007016.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511007016.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511007016.filter,tp,0,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c511007016.filter,tp,0,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511007016.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and not Duel.GetControl(tc,tp) then + if not tc:IsImmuneToEffect(e) and tc:IsAbleToChangeControler() then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end diff --git a/script/c511007017.lua b/script/c511007017.lua new file mode 100644 index 00000000..e5845f92 --- /dev/null +++ b/script/c511007017.lua @@ -0,0 +1,37 @@ +--coded by Lyris +--fixed by MLD +--Comic Field +function c511007017.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --If exactly 1 "Comics Hero" monster would be destroyed by battle, it gains 500 ATK instead. [Puzzle Reborn & Crystal Protector] + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_FZONE) + e2:SetTarget(c511007017.indtg) + e2:SetValue(c511007017.indval) + c:RegisterEffect(e2) +end +function c511007017.dfilter(c) + return c:IsFaceup() and c:IsOnField() and c:IsReason(REASON_BATTLE) and (c:IsCode(77631175) or c:IsCode(13030280)) +end +function c511007017.indtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:FilterCount(c511007017.dfilter,nil)==1 end + Duel.Hint(HINT_CARD,0,511007017) + local g=eg:Filter(c511007017.dfilter,nil) + local tc=g:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(500) + tc:RegisterEffect(e1) + return true +end +function c511007017.indval(e,c) + return c:IsFaceup() and c:IsOnField() and c:IsReason(REASON_BATTLE) and (c:IsCode(77631175) or c:IsCode(13030280)) +end diff --git a/script/c511007018.lua b/script/c511007018.lua new file mode 100644 index 00000000..ca667538 --- /dev/null +++ b/script/c511007018.lua @@ -0,0 +1,60 @@ +--coded by Lyris +--Common Sacrifice +function c511007018.initial_effect(c) + --Activate only during your Main Phase while your opponent controls 3 or more monsters: Send 2 monsters your opponent controls with the lowest ATK to the Graveyard; Special Summon 1 Level 7 or higher monster from your hand. + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511007018.condition) + e1:SetCost(c511007018.cost) + e1:SetTarget(c511007018.target) + e1:SetOperation(c511007018.activate) + c:RegisterEffect(e1) +end +--Activate only during your Main Phase while your opponent controls 3 or more monsters. +function c511007018.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>=3 +end +--Send 2 monsters your opponent controls with the lowest ATK to the Graveyard. +function c511007018.cfilter1(c,g) + local tg=g:Filter(c511007018.cfilter2,c,g) + return c:IsAbleToGraveAsCost() and tg:GetCount()>0 +end +function c511007018.cfilter2(c,g) + return c:IsAbleToGrave() and g:GetMinGroup(Card.GetAttack):IsContains(c) +end +function c511007018.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) + if chk==0 then return g:IsExists(c511007018.cfilter1,1,nil,g) end + local rg=g:GetMinGroup(Card.GetAttack) + if rg:GetCount()>1 then + local tg1=rg:Select(tp,2,2,nil) + Duel.SendtoGrave(tg1,REASON_COST) + return + end + local tc=rg:GetFirst() + g:RemoveCard(tc) + rg=g:GetMinGroup(Card.GetAttack) + local tg=rg:FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil) + tg:AddCard(tc) + Duel.SendtoGrave(tg,REASON_COST) +end +--Special Summon 1 Level 7 or higher monster from your hand. [Ancient Rules] +function c511007018.filter(c,e,tp) + return c:IsLevelAbove(7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511007018.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511007018.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511007018.activate(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,c511007018.filter,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 diff --git a/script/c511007019.lua b/script/c511007019.lua new file mode 100644 index 00000000..e16f21e2 --- /dev/null +++ b/script/c511007019.lua @@ -0,0 +1,68 @@ +--coded by Lyris +--Chain Summon +function c511007019.initial_effect(c) + --If you have Xyz Summoned 2 or more Xyz Monsters this turn: Special Summon 1 Xyz Monster from your Extra Deck whose Rank is lower than that of the Xyz Monster you control with the lowest Rank. + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511007019.target) + e1:SetOperation(c511007019.activate) + c:RegisterEffect(e1) + local g=Group.CreateGroup() + g:KeepAlive() + e1:SetLabelObject(g) + if not c511007019.global_check then + c511007019.global_check=true + c511007019[0]=0 + c511007019[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetOperation(c511007019.checkop) + ge1:SetLabelObject(e1) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511007019.clear) + ge2:SetLabelObject(e1) + Duel.RegisterEffect(ge2,0) + end +end +function c511007019.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:GetSummonType()==SUMMON_TYPE_XYZ then + e:GetLabelObject():GetLabelObject():AddCard(tc) + c511007019[ep]=c511007019[ep]+1 + end +end +function c511007019.clear(e,tp,eg,ep,ev,re,r,rp) + c511007019[0]=0 + c511007019[1]=0 + e:GetLabelObject():GetLabelObject():Clear() +end +function c511007019.filter(c,e,tp,rk) + return c:GetRank()1 and not lg:IsExists(Card.IsFacedown,1,nil) + and Duel.IsExistingMatchingCard(c511007019.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,lg:GetFirst():GetRank()) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511007019.activate(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local lg=g:GetMinGroup(Card.GetRank) + if lg:IsExists(Card.IsFacedown,1,nil) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c511007019.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,lg:GetFirst():GetRank()) + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511007021.lua b/script/c511007021.lua new file mode 100644 index 00000000..34178d41 --- /dev/null +++ b/script/c511007021.lua @@ -0,0 +1,104 @@ +--coded by Lyris +--fix by MLD +--Cursed Ivy +function c511007021.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511007021.target) + e1:SetOperation(c511007021.operation) + c:RegisterEffect(e1) + --When this card is removed from the field, destroy that monster. [Premature Burial] + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c511007021.desop) + c:RegisterEffect(e2) + --Special Summon 2 "Ivy Tokens" (Plant-Type/EARTH/Level 1/ATK 0/DEF 0) to your opponent's side of the field in Defense Position. [Wall of Ivy] + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOKEN+CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511007021.spcon) + e3:SetTarget(c511007021.sptg) + e3:SetOperation(c511007021.spop) + c:RegisterEffect(e3) +end +function c511007021.spfilter(c,e,tp) + return c:IsCode(30069398) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511007021.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511007021.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511007021.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511007021.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511007021.eqlimit(e,c) + return e:GetOwner()==c +end +function c511007021.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) then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 then return end + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511007021.eqlimit) + c:RegisterEffect(e1) + end +end +function c511007021.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511007021.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511007021.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511007021.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=1 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,30069399,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_EARTH,POS_FACEUP_DEFENSE,1-tp) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,30069399) + if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DESTROYED) + e1:SetLabelObject(token) + e1:SetCondition(c511007021.damcon) + e1:SetOperation(c511007021.damop) + Duel.RegisterEffect(e1,tp) + end + end + Duel.SpecialSummonComplete() +end +function c511007021.damcon(e,tp,eg,ep,ev,re,r,rp) + local tok=e:GetLabelObject() + if eg:IsContains(tok) then + return true + else + if not tok:IsLocation(LOCATION_MZONE) then e:Reset() end + return false + end +end +function c511007021.damop(e,tp,eg,ep,ev,re,r,rp) + local tok=e:GetLabelObject() + Duel.Damage(tok:GetPreviousControler(),300,REASON_EFFECT) +end diff --git a/script/c511007022.lua b/script/c511007022.lua new file mode 100644 index 00000000..d3614989 --- /dev/null +++ b/script/c511007022.lua @@ -0,0 +1,62 @@ +--coded by Lyris +--Cyber Phoenix (Anime) +function c511007022.initial_effect(c) + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e1:SetTarget(c511007022.distg) + c:RegisterEffect(e1) + --disable effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511007022.disop) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511007022,0)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511007022.condition) + e3:SetTarget(c511007022.target) + e3:SetOperation(c511007022.operation) + c:RegisterEffect(e3) +end +function c511007022.disfilter(c,tp,n) + if n~=0 and not c:IsLocation(LOCATION_MZONE) then return false end + return c:IsControler(tp) and c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c511007022.distg(e,c) + if not e:GetHandler():IsAttackPos() then return false end + local tc=c:GetCardTarget() + return tc:IsExists(c511007022.disfilter,1,nil,e:GetHandlerPlayer(),0) +end +function c511007022.disop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsAttackPos() or re:IsActiveType(TYPE_MONSTER) then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g then return end + if g:IsExists(c511007022.disfilter,1,nil,tp,1) and Duel.SelectYesNo(tp,aux.Stringid(511007022,1)) then + Duel.NegateEffect(ev) + end +end +function c511007022.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) +end +function c511007022.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511007022.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511007024.lua b/script/c511007024.lua new file mode 100644 index 00000000..2fbb446c --- /dev/null +++ b/script/c511007024.lua @@ -0,0 +1,65 @@ +--coded by Lyris +--Damage Boost +function c511007024.initial_effect(c) + --Activate only when your opponent activates a card effect that would negate the effect of a card you control that inflicts damage to your opponent. Negate the effect, and destroy that card. Then, double the damage inflicted to your opponent. [The Legendary Fisherman III] + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511007024.condition) + e1:SetTarget(c511007024.target) + e1:SetOperation(c511007024.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCondition(c511007024.condition2) + c:RegisterEffect(e2) +end +function c511007024.condition(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_MONSTER) and not re:IsActiveType(TYPE_TRAP) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local tex,ttg,ttc=Duel.GetOperationInfo(ev,CATEGORY_NEGATE) + if not tex or ttg==nil or ttc+ttg:FilterCount(Card.IsControler,nil,tp)-ttg:GetCount()<=0 then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev-1,CATEGORY_DAMAGE) + if ex and (cp~=tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev-1,CATEGORY_RECOVER) + return ex and (cp~=tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_REVERSE_RECOVER) +end +function c511007024.condition2(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_MONSTER) and not re:IsActiveType(TYPE_TRAP) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local tex,ttg,ttc=Duel.GetOperationInfo(ev,CATEGORY_DISABLE) + if not tex or ttg==nil or ttc+ttg:FilterCount(Card.IsControler,nil,tp)-ttg:GetCount()<=0 then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev-1,CATEGORY_DAMAGE) + if ex and (cp~=tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev-1,CATEGORY_RECOVER) + return ex and (cp~=tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_REVERSE_RECOVER) +end +function c511007024.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsDestructable() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,re:GetHandler(),1,0,0) + end +end +function c511007024.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(re:GetHandler(),REASON_EFFECT)~=0 then + --Duel.BreakEffect() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(0,1) + e2:SetValue(c511007024.damop) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) + Duel.RegisterFlagEffect(tp,511007024,RESET_PHASE+PHASE_END,0,1) + end +end +function c511007024.damop(e,re,val,r,rp,rc) + local tp=e:GetHandlerPlayer() + local cc=Duel.GetCurrentChain() + if cc==0 or rp~=tp or bit.band(r,REASON_EFFECT)==0 or Duel.GetFlagEffect(tp,511007024)==0 then return val end + Duel.ResetFlagEffect(tp,511007024) + return val*2 +end diff --git a/script/c511007027.lua b/script/c511007027.lua new file mode 100644 index 00000000..0a158015 --- /dev/null +++ b/script/c511007027.lua @@ -0,0 +1,41 @@ +--Coded by Lyris +--fixed by MLD +--Devoted Love +function c511007027.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511007027.condition) + e1:SetTarget(c511007027.target) + e1:SetOperation(c511007027.operation) + c:RegisterEffect(e1) +end +function c511007027.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and Duel.GetTurnPlayer()~=tp +end +function c511007027.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c511007027.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.BreakEffect() + Duel.Draw(1-tp,1,REASON_EFFECT) + --At the End Phase of this turn, your Life Points become 0. [Power Bond & Self-Destruct Button] + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetOperation(c511007027.damop) + Duel.RegisterEffect(e2,tp) +end +function c511007027.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,511007027) + Duel.SetLP(tp,0) +end diff --git a/script/c511007029.lua b/script/c511007029.lua new file mode 100644 index 00000000..ede366fe --- /dev/null +++ b/script/c511007029.lua @@ -0,0 +1,24 @@ +--Coded by Lyris +--Double Evolution +function c511007029.initial_effect(c) + --Double an equip spell effect. + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511007029.target) + e1:SetOperation(c511007029.operation) + c:RegisterEffect(e1) +end +function c511007029.filter(c) + return c:GetEquipTarget()~=nil-- and c:IsType(TYPE_EQUIP) +end +function c511007029.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511007029.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end +end +function c511007029.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.SelectMatchingCard(tp,c511007029.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + tc:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000) + end +end diff --git a/script/c511007030.lua b/script/c511007030.lua new file mode 100644 index 00000000..00d0ced9 --- /dev/null +++ b/script/c511007030.lua @@ -0,0 +1,51 @@ +--Coded by Lyris +--fixed by MLD +--Drop Exchange +function c511007030.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511007030.cost) + e1:SetTarget(c511007030.target) + e1:SetOperation(c511007030.operation) + c:RegisterEffect(e1) +end +function c511007030.filter(c,g,e,tp) + return c:GetLevel()>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and g:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),2,99) +end +function c511007030.cfilter(c) + return c:GetLevel()>0 and c:IsAbleToGraveAsCost() +end +function c511007030.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local rg=Duel.GetMatchingGroup(c511007030.cfilter,tp,LOCATION_MZONE,0,nil) + if chk==0 then return Duel.IsExistingMatchingCard(c511007030.filter,tp,LOCATION_HAND,0,1,nil,rg,e,tp) end + local g=Group.CreateGroup() + local lv=0 + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + g=Duel.SelectMatchingCard(tp,c511007030.cfilter,tp,LOCATION_MZONE,0,2,99,nil) + lv=g:GetSum(Card.GetLevel) + until Duel.IsExistingMatchingCard(c511007030.spfilter,tp,LOCATION_HAND,0,1,nil,lv,e,tp) + e:SetLabel(lv) + Duel.SendtoGrave(g,REASON_COST) +end +function c511007030.spfilter(c,lv,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and lv==c:GetLevel() +end +function c511007030.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 end + Duel.SetTargetParam(e:GetLabel()) + e:SetLabel(0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511007030.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511007030.spfilter,tp,LOCATION_HAND,0,1,1,nil,lv,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511008001.lua b/script/c511008001.lua new file mode 100644 index 00000000..390fa0fb --- /dev/null +++ b/script/c511008001.lua @@ -0,0 +1,45 @@ +--Sharkify +--Scripted by Snrk +function c511008001.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(c511008001.target) + e1:SetOperation(c511008001.operation) + c:RegisterEffect(e1) + --Shark + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_ADD_SETCODE) + e2:SetValue(0x979) + c:RegisterEffect(e2) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(300) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511008001.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 c511008001.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 diff --git a/script/c511008002.lua b/script/c511008002.lua new file mode 100644 index 00000000..21f5e1b5 --- /dev/null +++ b/script/c511008002.lua @@ -0,0 +1,40 @@ +--Small Resistance +--Scripted by Snrk +function c511008002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511008002.condition) + e1:SetTarget(c511008002.target) + e1:SetOperation(c511008002.activate) + c:RegisterEffect(e1) +end +function c511008002.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511008002.filter(c) + return c:IsLevelBelow(4) and c:GetLevel()>0 and c:IsAttackBelow(1000) +end +function c511008002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511008002.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511008002.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511008002.filter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c511008002.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local tc=Duel.GetFirstTarget() + if a and a:IsRelateToBattle() and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if atk<0 then atk=0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + a:RegisterEffect(e1) + end +end diff --git a/script/c511008003.lua b/script/c511008003.lua new file mode 100644 index 00000000..99f2b070 --- /dev/null +++ b/script/c511008003.lua @@ -0,0 +1,41 @@ +--Soul Barter +--Scripted by Snrk +function c511008003.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511008003.cost) + e1:SetTarget(c511008003.target) + e1:SetOperation(c511008003.activate) + c:RegisterEffect(e1) +end +function c511008003.filter1(c,e,tp) + return c:IsAbleToGraveAsCost() +end +function c511008003.filter2(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511008003.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511008003.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + local g=Duel.SelectMatchingCard(tp,c511008003.filter1,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_COST) + e:SetLabelObject(g:GetFirst()) + end +end +function c511008003.target(e,tp,eg,ep,ev,re,r,rp,chk) + -- if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511008003.filter2(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c511008003.filter2,tp,LOCATION_GRAVE,0,1,e:GetLabelObject(),e,tp) end + Duel.SetOperationInfo(0,OPERATION_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511008003.activate(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,c511008003.filter2,tp,LOCATION_GRAVE,0,1,1,e:GetLabelObject(),e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511008004.lua b/script/c511008004.lua new file mode 100644 index 00000000..a31ba3d3 --- /dev/null +++ b/script/c511008004.lua @@ -0,0 +1,24 @@ +--Sun Shower +--Scripted by Snrk +function c511008004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511008004.target) + e1:SetOperation(c511008004.activate) + c:RegisterEffect(e1) +end +function c511008004.filter(c) + return c:IsRace(RACE_ZOMBIE) and c:IsFaceup() and c:IsDestructable() +end +function c511008004.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511008004.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(c511008004.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c511008004.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511008004.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c511008005.lua b/script/c511008005.lua new file mode 100644 index 00000000..b6c1c849 --- /dev/null +++ b/script/c511008005.lua @@ -0,0 +1,42 @@ +--Stealth Strike +--Scripted by Snrk +function c511008005.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511008005.target) + e1:SetOperation(c511008005.activate) + c:RegisterEffect(e1) +end +function c511008005.xyzfilter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c511008005.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) + and chkc:IsLocation(LOCATION_MZONE) + and c511008005.xyzfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511008005.xyzfilter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511008005.xyzfilter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) +end +function c511008005.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c511008006.lua b/script/c511008006.lua new file mode 100644 index 00000000..cd885b45 --- /dev/null +++ b/script/c511008006.lua @@ -0,0 +1,33 @@ +--Superior Howl +--Scripted by Snrk +--fixed by MLD +function c511008006.initial_effect(c) + --effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511008006.cost) + e1:SetOperation(c511008006.activate) + c:RegisterEffect(e1) +end +function c511008006.ecfilter(c) + return c:IsType(TYPE_EQUIP) and c:IsFaceup() and c:IsDestructable() +end +function c511008006.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511008006.ecfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511008006.ecfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.Destroy(g,REASON_COST) +end +function c511008006.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetValue(c511008006.atkval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511008006.atkval(e,c) + return c:GetBaseAttack() +end diff --git a/script/c511008009.lua b/script/c511008009.lua new file mode 100644 index 00000000..99ced98a --- /dev/null +++ b/script/c511008009.lua @@ -0,0 +1,25 @@ +--The Mystical Guillotine +--Scripted by Snrk +function c511008009.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511008009.target) + e1:SetOperation(c511008009.activate) + c:RegisterEffect(e1) +end +function c511008009.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) end +end +function c511008009.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511008010.lua b/script/c511008010.lua new file mode 100644 index 00000000..e3f83755 --- /dev/null +++ b/script/c511008010.lua @@ -0,0 +1,52 @@ +--The King of Divine Punishment, Dark Highlander +--Scripted by Snrk +function c511008010.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_FIEND),aux.NonTuner(Card.IsRace,RACE_FIEND),1) + c:EnableReviveLimit() + --disable spsummon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetTarget(c511008010.splimit) + c:RegisterEffect(e1) + --send to grave + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511008010,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511008010.target) + e2:SetOperation(c511008010.operation) + c:RegisterEffect(e2) +end +function c511008010.splimit(e,c,tp,sumtp,sumpos) + return bit.band(sumtp,SUMMON_TYPE_SYNCHRO)==SUMMON_TYPE_SYNCHRO +end +function c511008010.filter(c) + return c:GetEquipCount()>0 +end +function c511008010.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511008010.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511008010.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g=Duel.SelectTarget(tp,c511008010.filter,tp,0,LOCATION_MZONE,1,1,nil) + local eqg=g:GetFirst():GetEquipGroup() + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eqg,eqg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,eqg:GetCount()*400) +end +function c511008010.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local eqg=tc:GetEquipGroup() + if eqg:GetCount()>0 then + local des=Duel.Destroy(eqg,REASON_EFFECT) + Duel.Damage(1-tp,des*400,REASON_EFFECT) + end + end +end \ No newline at end of file diff --git a/script/c511008011.lua b/script/c511008011.lua new file mode 100644 index 00000000..9a5ea197 --- /dev/null +++ b/script/c511008011.lua @@ -0,0 +1,42 @@ +--Trion Barrier +--Scripted by Snrk +function c511008011.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511008011.condition) + e1:SetTarget(c511008011.target) + e1:SetOperation(c511008011.activate) + c:RegisterEffect(e1) +end +function c511008011.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511008011.filter(c,e,tp) + return c:IsCode(34796454) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511008011.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAttackPos() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 + and Duel.IsExistingTarget(Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c511008011.filter,tp,LOCATION_HAND,0,3,nil,e,tp) end + local g=Duel.SelectTarget(tp,Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_HAND) +end +function c511008011.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAttackPos() then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=2 then return end + local g=Duel.GetMatchingGroup(c511008011.filter,tp,LOCATION_HAND,0,nil,e,tp) + if g:GetCount()>=3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,3,3,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511008012.lua b/script/c511008012.lua new file mode 100644 index 00000000..a8f3fe1d --- /dev/null +++ b/script/c511008012.lua @@ -0,0 +1,29 @@ +--Celestial Guard +--Scripted by Snrk +function c511008012.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511008012.activate) + c:RegisterEffect(e1) +end +function c511008012.filter(e,c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511008012.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e1:SetTarget(c511008012.filter) +-- e1:SetValue(c511008012.indval) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +--function c511008012.indval(e,re,rp) +--function c511008012.indval(e,te) +-- return te:GetOwner()~=e:GetOwner() +-- return rp~=e:GetHandlerPlayer() +--end \ No newline at end of file diff --git a/script/c511008013.lua b/script/c511008013.lua new file mode 100644 index 00000000..c0da9f66 --- /dev/null +++ b/script/c511008013.lua @@ -0,0 +1,21 @@ +--Chewbone Jr. +--Scripted by Snrk +function c511008013.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511008013,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c511008013.target) + e1:SetOperation(c511008013.activate) + c:RegisterEffect(e1) +end +function c511008013.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c511008013.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511008015.lua b/script/c511008015.lua new file mode 100644 index 00000000..ba096908 --- /dev/null +++ b/script/c511008015.lua @@ -0,0 +1,74 @@ +--Counter Sword +--Scripted by Snrk +--fixed by MLD +function c511008015.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511008015.condition) + e1:SetTarget(c511008015.target) + e1:SetOperation(c511008015.operation) + c:RegisterEffect(e1) +end +function c511008015.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511008015.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 e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingMatchingCard(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 c511008015.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --halve atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c511008015.atkcon) + e3:SetOperation(c511008015.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c511008015.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==e:GetHandler():GetEquipTarget() +end +function c511008015.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc and tc:IsRelateToBattle() then + local atk=tc:GetAttack()/2 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511008016.lua b/script/c511008016.lua new file mode 100644 index 00000000..ddfba075 --- /dev/null +++ b/script/c511008016.lua @@ -0,0 +1,253 @@ +--Court Battle +--Scripted by Snrk +function c511008016.initial_effect(c) + c:SetUniqueOnField(1,1,511008016) + --tokens + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511008016.toktg) + e1:SetOperation(c511008016.tokop) + c:RegisterEffect(e1) + --attach token + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c511008016.attcon) + e2:SetTarget(c511008016.atttg) + e2:SetOperation(c511008016.attop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCondition(c511008016.attcon2) + e3:SetTarget(c511008016.atttg2) + e3:SetOperation(c511008016.attop2) + c:RegisterEffect(e3) + --attach xyz + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(511008016) + e4:SetProperty(EFFECT_FLAG_DELAY) + e4:SetCondition(c511008016.xattcon) + e4:SetOperation(c511008016.xattop) + c:RegisterEffect(e4) + --leave + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetProperty(EFFECT_FLAG_DELAY) + e5:SetOperation(c511008016.leaveop) + c:RegisterEffect(e5) +end + +--attach token +function c511008016.confil(c,p) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:GetPreviousControler()~=p +end +function c511008016.attcon(e,tp,eg,ep,ev,re,r,rp) + if re~=nil then if re:GetHandlerPlayer()~=tp then return false else return true end end + if eg:Filter(c511008016.confil,nil,tp):GetCount()>1 then return false end + return eg:IsExists(c511008016.confil,1,nil,tp,rp) +end +function c511008016.atttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511008016.tfil,tp,LOCATION_MZONE,0,1,nil) + and eg:GetFirst():IsPreviousLocation(LOCATION_MZONE) end +end +function c511008016.attop(e,tp,eg,ep,ev,re,r,rp) + local tok=Duel.GetMatchingGroup(c511008016.tfil,tp,LOCATION_MZONE,0,nil):GetFirst() + local gdes=eg:Filter(c511008016.confil,nil,tp) + if e:GetHandler():IsRelateToEffect(e) and gdes:GetCount()>0 and tok then + Duel.Overlay(tok,gdes) + Duel.RaiseEvent(tok,511008016,e,0,0,0,0) + end +end +function c511008016.tfil(c) + return c:IsCode(511008017) and c:IsFaceup() +end +function c511008016.attcon2(e,tp,eg,ep,ev,re,r,rp) + return c511008016.attcon(e,1-tp,eg,ep,ev,re,r,rp) +end +function c511008016.atttg2(e,tp,eg,ep,ev,re,r,rp,chk) + return c511008016.atttg(e,1-tp,eg,ep,ev,re,r,rp,chk) +end +function c511008016.attop2(e,tp,eg,ep,ev,re,r,rp) + return c511008016.attop(e,1-tp,eg,ep,ev,re,r,rp) +end + +--tokens +function c511008016.tokcheck(e) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511008017,0,0x4011,0,0,0,0,0) + and Duel.IsPlayerCanSpecialSummonMonster(1-tp,511008017,0,0x4011,0,0,0,0,0) +end +function c511008016.toktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return c511008016.tokcheck end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511008016.tokop(e,tp,eg,ep,ev,re,r,rp) + c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c511008016.tokcheck then + local sToken=Duel.CreateToken(tp,511008017) + local oToken=Duel.CreateToken(1-tp,511008017) + Duel.SpecialSummonStep(sToken,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + Duel.SpecialSummonStep(oToken,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + Duel.SpecialSummonComplete() + --immune + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511008016.immfil) + e1:SetReset(RESET_EVENT+0x47c0000) + oToken:RegisterEffect(e1,true) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetValue(aux.imval1) + e2:SetReset(RESET_EVENT+0x47c0000) + oToken:RegisterEffect(e2,true) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c511008016.dirtg) + e3:SetReset(RESET_EVENT+0x47c0000) + oToken:RegisterEffect(e3,true) + --cannot be tributed + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_UNRELEASABLE_SUM) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + e4:SetReset(RESET_EVENT+0x1fe0000) + oToken:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_UNRELEASABLE_NONSUM) + oToken:RegisterEffect(e5) + --no type/attribute/level + local e6=Effect.CreateEffect(c) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CHANGE_RACE) + e6:SetValue(0) + oToken:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetCode(EFFECT_CHANGE_ATTRIBUTE) + oToken:RegisterEffect(e7) + oToken:SetStatus(STATUS_NO_LEVEL,true) + --cannot change battle pos + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e8:SetReset(RESET_EVENT+0x1fe0000) + oToken:RegisterEffect(e8) + --clone + local e9=e1:Clone() + sToken:RegisterEffect(e9,true) + local e10=e2:Clone() + sToken:RegisterEffect(e10,true) + local e11=e3:Clone() + sToken:RegisterEffect(e11,true) + local e12=e4:Clone() + sToken:RegisterEffect(e12,true) + local e13=e5:Clone() + sToken:RegisterEffect(e13,true) + local e14=e6:Clone() + sToken:RegisterEffect(e14,true) + local e15=e7:Clone() + sToken:RegisterEffect(e15,true) + local e16=e8:Clone() + sToken:RegisterEffect(e16,true) + sToken:SetStatus(STATUS_NO_LEVEL,true) + end +end +function c511008016.dirtg(e,c) + return not Duel.IsExistingMatchingCard(c511008016.dirfil,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c511008016.dirfil(c) + return not c:IsCode(511008017) +end +function c511008016.immfil(e,te) + return not te:GetOwner():IsCode(511008016) +end + +--attach xyz +function c511008016.xattcon(e,tp,eg,ep,ev,re,r,rp) + local tok1=Duel.GetMatchingGroup(c511008016.tfil,tp,LOCATION_MZONE,0,nil):GetFirst() + local tct1=tok1:GetOverlayGroup():GetCount() + local tok2=Duel.GetMatchingGroup(c511008016.tfil,1-tp,LOCATION_MZONE,0,nil):GetFirst() + local tct2=tok2:GetOverlayGroup():GetCount() + if tct1>2 then + e:SetLabelObject(tok1) + return true end + if tct2>2 then + e:SetLabelObject(tok2) + return true end + return false +end +function c511008016.xattop(e,tp,eg,ep,ev,re,r,rp) + if not c:IsRelateToEffect(e) then return end + local tok=e:GetLabelObject() + local rp=tok:GetControler() + local c=Duel.GetMatchingGroup(c511008016.tfil,rp,LOCATION_MZONE,0,nil):GetFirst() + local cp=c:GetControler() + if Duel.IsExistingMatchingCard(c511008016.xyzfil,cp,LOCATION_MZONE,0,1,nil) then + local xg=Duel.GetMatchingGroup(c511008016.xyzfil,cp,LOCATION_MZONE,0,nil) + if xg:GetCount()==0 then return end + local og=c:GetOverlayGroup() + local ogct=og:GetCount() + while ogct>0 do + Duel.Hint(HINT_SELECTMSG,cp,HINTMSG_TARGET) + local xtg=xg:Select(cp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,cp,HINTMSG_TARGET) + local sog=0 + if xg:GetCount()<2 then + sog=og:Select(cp,ogct,ogct,nil) + else + sog=og:Select(cp,1,ogct,nil) + end + local xtgc=xtg:GetFirst() + Duel.Overlay(xtgc,sog) + Duel.RaiseSingleEvent(c,EVENT_DETACH_MATERIAL,e,0,0,0,0) + ogct=ogct-sog:GetCount() + local sogc=sog:GetFirst() + while sogc do + og:RemoveCard(sogc) + sogc=sog:GetNext() + end + end + end + local cb=Duel.GetMatchingGroup(c511008016.cbfil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.Destroy(cb,REASON_EFFECT) +end +function c511008016.cbfil(c) + return c:IsCode(511008016) and c:IsFaceup() +end +function c511008016.xyzfil(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end + +--leave +function c511008016.leaveop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsFacedown() then return end + local tg=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_MZONE,LOCATION_MZONE,nil,511008017) + local tc=tg:GetFirst() + while tc do + local og=tc:GetOverlayGroup() + Duel.SendtoGrave(og,REASON_DESTROY) + tc=tg:GetNext() + end + Duel.Destroy(tg,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511008018.lua b/script/c511008018.lua new file mode 100644 index 00000000..cccfea7c --- /dev/null +++ b/script/c511008018.lua @@ -0,0 +1,29 @@ +--Fair Exchange +--Scripted by Snrk +--fixed by MLD +function c511008018.initial_effect(c) + --discard deck + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c511008018.target) + e1:SetOperation(c511008018.activate) + c:RegisterEffect(e1) +end +function c511008018.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,3) and Duel.IsPlayerCanDiscardDeck(1-tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(3) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,3) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,1-tp,0) +end +function c511008018.activate(e,tp,eg,ep,ev,re,r,rp) + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.DiscardDeck(p,val,REASON_EFFECT)>0 then + local g=Duel.GetOperatedGroup():Filter(Card.IsLocation,nil,LOCATION_GRAVE) + local sum=g:GetSum(Card.GetLevel) + Duel.DiscardDeck(1-p,sum,REASON_EFFECT) + end +end diff --git a/script/c511008019.lua b/script/c511008019.lua new file mode 100644 index 00000000..f1c28f99 --- /dev/null +++ b/script/c511008019.lua @@ -0,0 +1,22 @@ +--Fighting Fund +--Scripted by Snrk +function c511008019.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511008019.activate) + c:RegisterEffect(e1) +end +function c511008019.activate(e,tp,eg,ep,ev,re,r,rp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + e2:SetValue(1) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c511008020.lua b/script/c511008020.lua new file mode 100644 index 00000000..e35623ae --- /dev/null +++ b/script/c511008020.lua @@ -0,0 +1,57 @@ +--Final Countup +--Scripted by Snrk +function c511008020.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511008020.condition) + e1:SetTarget(c511008020.target) + e1:SetOperation(c511008020.activate) + c:RegisterEffect(e1) + if not c511008020.global_check then + c511008020.global_check=true + c511008020[0]=0 + c511008020[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_PAY_LPCOST) + ge1:SetOperation(c511008020.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_DAMAGE) + Duel.RegisterEffect(ge2,0) + end +end +function c511008020.checkop(e,tp,eg,ep,ev,re,r,rp) + --Debug.Message("atk 1 "..ev.."") + c511008020[ep]=c511008020[ep]+ev +end +function c511008020.filter1(c) + return c:IsFaceup() and c:IsSetCard(0x7f) +end +function c511008020.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=Duel.GetLP(1-tp) +end +function c511008020.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingTarget(c511008020.filter1,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511008020.filter1,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetParam(c511008020[tp]) + --Debug.Message("atk 2 "..c511008020[tp].."") + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,nil,0,tp,c511008020[tp]) +end +function c511008020.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(atk) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511008021.lua b/script/c511008021.lua new file mode 100644 index 00000000..61d2002f --- /dev/null +++ b/script/c511008021.lua @@ -0,0 +1,67 @@ +--Delayed Summon +--Scripted by Snrk +function c511008021.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511008021.condition) + e1:SetTarget(c511008021.target) + e1:SetOperation(c511008021.activate) + c:RegisterEffect(e1) + if not c511008021.global_check then + c511008021.global_check=true + c511008021[0]=0 + c511008021[1]=0 + sv=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON) + ge1:SetOperation(c511008021.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON) + Duel.RegisterEffect(ge2,0) + local ge3=ge1:Clone() + ge3:SetCode(EVENT_FLIP_SUMMON) + Duel.RegisterEffect(ge3,0) + local ge4=Effect.CreateEffect(c) + ge4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge4:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge4:SetOperation(c511008021.clear) + Duel.RegisterEffect(ge4,0) + end +end +function c511008021.checkop(e,tp,eg,ep,ev,re,r,rp) + c511008021[ep]=1 +end +function c511008021.clear(e,tp,eg,ep,ev,re,r,rp) + self=e:GetHandler():GetOwner() + if c511008021[self]==1 then sv=1 else sv=0 end + c511008021[0]=0 c511008021[1]=0 +end +function c511008021.hfilter(c) + return c:IsSummonable(true,nil,1) or c:IsMSetable(true,nil,1) +end +function c511008021.condition(e,tp,eg,ep,ev,re,r,rp) + return sv==0 and Duel.IsExistingMatchingCard(c511008021.hfilter,tp,LOCATION_HAND,0,1,nil) and Duel.GetAttacker():GetControler()==1-tp +end +function c511008021.target(e,tp,eg,ep,ev,re,r,rp,chk) + Debug.Message(""..Duel.GetAttacker():GetControler().." = "..1-tp.."") + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c511008021.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c511008021.hfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + local s1=tc:IsSummonable(true,nil,1) + local s2=tc:IsMSetable(true,nil,1) + if (s1 and s2 and Duel.SelectPosition(tp,tc,POS_FACEUP_ATTACK+POS_FACEDOWN_DEFENSE)==POS_FACEUP_ATTACK) or not s2 then + Duel.Summon(tp,tc,true,nil,1) + else + Duel.MSet(tp,tc,true,nil,1) + end + end +end \ No newline at end of file diff --git a/script/c511008022.lua b/script/c511008022.lua new file mode 100644 index 00000000..5ff9c81c --- /dev/null +++ b/script/c511008022.lua @@ -0,0 +1,35 @@ +--Golden Form +--Scripted by Snrk +--fixed by MLD +function c511008022.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHANGE_POS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511008022.condition) + e1:SetTarget(c511008022.target) + e1:SetOperation(c511008022.activate) + c:RegisterEffect(e1) +end +function c511008022.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and bit.band(tc:GetPreviousPosition(),POS_DEFENSE)~=0 and tc:IsPosition(POS_FACEUP_ATTACK) +end +function c511008022.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chkc then return chkc==tc end + if chk==0 then return tc:IsFaceup() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) +end +function c511008022.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511008023.lua b/script/c511008023.lua new file mode 100644 index 00000000..402e9633 --- /dev/null +++ b/script/c511008023.lua @@ -0,0 +1,64 @@ +--Dauntless Challenge +--Scripted by Snrk +function c511008023.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511008023.atkcon) + e1:SetOperation(c511008023.atkop) + c:RegisterEffect(e1) +end +--activate +function c511008023.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if not a or not at then return end + return a:IsControler(tp) and a:GetAttack()<=at:GetAttack() +end +function c511008023.atkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if not a:IsRelateToBattle() or not at:IsRelateToBattle() then return end + --double attack + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(a:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000) + a:RegisterEffect(e1) + --destroy spell + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c511008023.descon) + e2:SetTarget(c511008023.destg) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e2:SetOperation(c511008023.desop) + Duel.RegisterEffect(e2,tp) +end +--destroy spell +function c511008023.sfilter(c) + return c:IsFacedown() or c:IsType(TYPE_SPELL) +end +function c511008023.descon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if a:IsControler(tp) and at:IsControler(1-tp) and a:IsOnField() and at and a:IsRelateToBattle() and not at:IsRelateToBattle() then return true end + return false +end +function c511008023.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c511008023.sfilter(chkc) end + if chk==0 then return true end +end +function c511008023.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local target=Duel.SelectMatchingCard(tp,c511008023.sfilter,tp,0,LOCATION_SZONE,1,1,nil) + if not g then return end + local g=target:GetFirst() + if g:IsFacedown() then Duel.ConfirmCards(tp,g) end + if g:IsType(TYPE_SPELL) then Duel.Destroy(g,REASON_EFFECT) end +end \ No newline at end of file diff --git a/script/c511008024.lua b/script/c511008024.lua new file mode 100644 index 00000000..2571669c --- /dev/null +++ b/script/c511008024.lua @@ -0,0 +1,34 @@ +--Dragon Buster +--Scripted by Snrk +function c511008024.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511008024.condition) + e1:SetTarget(c511008024.target) + e1:SetOperation(c511008024.activate) + c:RegisterEffect(e1) +end +function c511008024.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511008024.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c511008024.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511008024.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511008024.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511008024.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or not tc:IsFaceup() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(500) + tc:RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511008025.lua b/script/c511008025.lua new file mode 100644 index 00000000..50405a07 --- /dev/null +++ b/script/c511008025.lua @@ -0,0 +1,52 @@ +--Dragonslayer +--Scripted by Snrk +function c511008025.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(c511008025.target) + e1:SetOperation(c511008025.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) + --atk change + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DAMAGE_CALCULATING) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511008025.atkop) + c:RegisterEffect(e3) +end +function c511008025.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 c511008025.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 c511008025.atkop(e,tp,eg,ep,ev,re,r,rp) + local eqc=e:GetHandler():GetEquipTarget() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if (not d or eqc==Duel.GetAttacker() and not d:IsRace(RACE_DRAGON)) or (not a or eqc==Duel.GetAttackTarget() and not a:IsRace(RACE_DRAGON)) or (a~=eqc and d~=eqc) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(1400) + eqc:RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511008026.lua b/script/c511008026.lua new file mode 100644 index 00000000..74b3f71f --- /dev/null +++ b/script/c511008026.lua @@ -0,0 +1,66 @@ +--Granel Top 5 +--Scripted by Snrk +function c511008026.initial_effect(c) + --self destruction + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c511008026.sdcon) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511008026.eqcon) + e2:SetOperation(c511008026.eqop) + c:RegisterEffect(e2) +end +--self destruction +function c511008026.cfil(c) + return c:IsFaceup() and (c:IsCode(100000050) or c:IsCode(100000056) or c:IsCode(100000061)) +end +function c511008026.sdcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c511008026.cfil,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end +--equip +function c511008026.eqfil1(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() +end +function c511008026.eqfil2(c) + return c:IsFaceup() and c:IsCode(100000050) or c:IsCode(100000056) or c:IsCode(100000061) +end +function c511008026.eqcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingTarget(c511008026.eqfil1,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingTarget(c511008026.eqfil2,tp,LOCATION_MZONE,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 +end +function c511008026.eqlimit(e,c) + return not c:IsDisabled() +end +function c511008026.eqop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local eqg=Duel.SelectMatchingCard(tp,c511008026.eqfil2,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local eqtgc=Duel.SelectMatchingCard(tp,c511008026.eqfil1,tp,0,LOCATION_MZONE,1,1,nil) + if not eqg or not eqtgc then return end + local eqc=eqg:GetFirst() + local eqtg=eqtgc:GetFirst() + if eqtg:IsFaceup() and eqtg:IsType(TYPE_MONSTER) then + if eqc:IsFaceup() then + if not Duel.Equip(tp,eqtg,eqc,false) then return end + --add equip limit + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511008026.eqlimit) + eqtg:RegisterEffect(e1) + else Duel.SendtoGrave(eqtg,REASON_EFFECT) end + end +end \ No newline at end of file diff --git a/script/c511008027.lua b/script/c511008027.lua new file mode 100644 index 00000000..5bcb0ec5 --- /dev/null +++ b/script/c511008027.lua @@ -0,0 +1,71 @@ +--Grapple Chain +--Scripted by Snrk and Edo +function c511008027.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511008027.target) + e1:SetOperation(c511008027.activate) + c:RegisterEffect(e1) +end +function c511008027.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g1=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g2=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local fid=e:GetHandler():GetFieldID() + g1:GetFirst():RegisterFlagEffect(511008027,RESET_EVENT+0x1fe0000,0,1,fid) + g2:GetFirst():RegisterFlagEffect(511008028,RESET_EVENT+0x1fe0000,0,1,fid) + e:SetLabel(fid) + g1:Merge(g2) + g1:KeepAlive() + e:SetLabelObject(g1) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g2,1,0,0) +end +function c511008027.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabelObject():GetCount()==2 then + local tc1=e:GetLabelObject():Filter(function(c)return c:GetFlagEffect(511008027)>0 end,nil):GetFirst() + local tc2=e:GetLabelObject():Filter(function(c)return c:GetFlagEffect(511008028)>0 end,nil):GetFirst() + if not tc2 or not tc1:IsRelateToEffect(e) then return end + if tc1:GetPosition()~=tc2:GetPosition() then + Duel.ChangePosition(tc2,tc1:GetPosition()) + end + c:SetCardTarget(tc2) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511008027.value) + tc2:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_MZONE) + e2:SetLabelObject(tc1) + e2:SetLabel(e:GetLabel()) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetOperation(c511008027.changebpop) + tc2:RegisterEffect(e2,true) + --Debug.Message("DIS IS UEN DEE ODDA EFFAECT STATS!") + end +end +function c511008027.value(e,c,re) + if re~=nil then return e~=re else return false end +end +function c511008027.changebpop(e) + local c=e:GetHandler() + if e:GetLabelObject():GetPosition()~=c:GetPosition() + and c:GetFlagEffectLabel(511008028)==e:GetLabel() + and e:GetLabelObject():GetFlagEffectLabel(511008027)==e:GetLabel() then + Duel.ChangePosition(c,e:GetLabelObject():GetPosition()) + end +end \ No newline at end of file diff --git a/script/c511008029.lua b/script/c511008029.lua new file mode 100644 index 00000000..585f5ff6 --- /dev/null +++ b/script/c511008029.lua @@ -0,0 +1,38 @@ +--Reverse Wall +-- by Snrk +local self=c511008029 + +function self.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(self.cd) + e1:SetTarget(self.tg) + e1:SetOperation(self.op) + c:RegisterEffect(e1) +end + +function self.desg(p) return Duel.GetMatchingGroup(Card.IsDestructable,p,0,LOCATION_MZONE,nil) end +function self.exist(p) return Duel.IsExistingMatchingCard(Card.IsDestructable,p,0,LOCATION_MZONE,1,nil) end +function self.cf(c,p) return c:GetPreviousControler()==p and c:IsPreviousLocation(LOCATION_MZONE) and c:IsType(TYPE_MONSTER) and c:GetPreviousDefenseOnField()>=2000 end + +function self.cd(e,tp,eg) return eg:IsExists(self.cf,1,nil,tp) end +function self.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return self.exist(tp) end + local g=self.desg(tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function self.op(e,tp) + if not self.exist(tp) then return end + Duel.Destroy(self.desg(tp),REASON_EFFECT) +end + + + + + + + + diff --git a/script/c511008030.lua b/script/c511008030.lua new file mode 100644 index 00000000..7bfc8461 --- /dev/null +++ b/script/c511008030.lua @@ -0,0 +1,62 @@ +--Returning Light +-- by Snrk +local self=c511008030 + +function self.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(self.tg) + e1:SetOperation(self.op) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_LEAVE_FIELD_P) + e2:SetOperation(function (e) if e:GetHandler():IsDisabled() then e:SetLabel(1) else e:SetLabel(0) end end) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(self.desop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) +end + +function self.exist(e,p) return Duel.IsExistingMatchingCard(self.ssf,p,LOCATION_GRAVE,0,1,nil,e,p) end +function self.ssf(c,e,p) return c:IsCanBeSpecialSummoned(e,0,p,false,false) and c:IsAttribute(ATTRIBUTE_LIGHT) end +function self.cf(c,p) return c:GetSummonPlayer()~=p end + +function self.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:GetControler()==tp and chkc:IsCanBeSpecialSummoned(e,0,tp,false,false) and chkc:GetAttribute()==ATTRIBUTE_LIGHT end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and eg:Filter(self.cf,nil,tp) and self.exist(e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function self.op(e,tp) + local c=e:GetHandler() + if not self.exist(e,tp) or not c:IsRelateToEffect(e) then return end + local tc=Duel.SelectMatchingCard(tp,self.ssf,tp,LOCATION_GRAVE,0,1,1,nil,e,tp):GetFirst() + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Equip(tp,c,tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(function (e,c) return e:GetLabelObject()==c end) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + c:RegisterEffect(e1) +end +function self.desop(e) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511008031.lua b/script/c511008031.lua new file mode 100644 index 00000000..a94719e8 --- /dev/null +++ b/script/c511008031.lua @@ -0,0 +1,47 @@ +--Ray of Hope (ZEXAL) +-- by Snrk +local self=c511008031 +local sid=511008031 + +function self.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(self.cd) + e1:SetOperation(self.op) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(self.op2) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end + +function self.cf(c,p) return c:IsControler(p) and c:IsType(TYPE_MONSTER) and c:IsOnField() end + +function self.cd(e,tp,eg,ep,ev) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + local fc=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_ONFIELD,0,nil,TYPE_MONSTER) + e:SetLabelObject(tg) + return ex and tg~=nil and tg:FilterCount(self.cf,nil,tp)==fc +end +function self.op(e,tp,eg,ep,ev,re) + local tg=e:GetLabelObject():Filter(self.cf,nil,tp) + if tg:GetCount()<=0 then return end + local tc=tg:Select(tp,1,1,nil):GetFirst() + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(function (p) return Duel.GetFlagEffect(tp,sid)~=0 end,tp) + e1:SetReset(RESET_CHAIN) + tc:RegisterEffect(e1) + e:SetLabel(re:GetHandler():GetFieldID()) + Duel.RegisterFlagEffect(tp,sid,RESET_CHAIN,0,1) +end +function self.op2(e,tp,eg,ep,ev,re) + if e:GetLabel()==1 then Duel.ResetFlagEffect(tp,sid) end + if e:GetLabelObject():GetLabel()==re:GetHandler():GetFieldID() then e:SetLabel(1) end +end \ No newline at end of file diff --git a/script/c511009005.lua b/script/c511009005.lua new file mode 100644 index 00000000..c59c626f --- /dev/null +++ b/script/c511009005.lua @@ -0,0 +1,22 @@ +--Red Lamp +function c511009005.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26293219,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511009005.damtg) + e1:SetOperation(c511009005.damop) + c:RegisterEffect(e1) +end +function c511009005.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c511009005.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511009008.lua b/script/c511009008.lua new file mode 100644 index 00000000..a3f34658 --- /dev/null +++ b/script/c511009008.lua @@ -0,0 +1,33 @@ +--Magical Thunder +function c511009008.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009008.cost) + e1:SetTarget(c511009008.target) + e1:SetOperation(c511009008.activate) + c:RegisterEffect(e1) +end +function c511009008.costfilter(c) + return c:IsDiscardable() and c:IsType(TYPE_SPELL) +end +function c511009008.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009008.costfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c511009008.costfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511009008.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsDestructable() and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511009008.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511009010.lua b/script/c511009010.lua new file mode 100644 index 00000000..28355f6d --- /dev/null +++ b/script/c511009010.lua @@ -0,0 +1,99 @@ +--Cosmic Space +-- !counter 0x1109 Life Star Counter +function c511009010.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c511009010.operation) + c:RegisterEffect(e1) + + --remove counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(59907935,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetOperation(c511009010.rmop) + c:RegisterEffect(e2) + + --add counter on summoned + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_COUNTER) + e3:SetDescription(aux.Stringid(511000129,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c511009010.target) + e3:SetOperation(c511009010.activate) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_FLIP) + c:RegisterEffect(e5) + + --Destroy + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DESTROY) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_ADJUST) + e6:SetRange(LOCATION_FZONE) + e6:SetOperation(c511009010.desop) + c:RegisterEffect(e6) +end +function c511009010.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + tc:AddCounter(0x1109,tc:GetLevel(),REASON_EFFECT) + tc:RegisterFlagEffect(511009010,RESET_EVENT+0x1fe0000,0,1) + tc=g:GetNext() + end +end + + + +function c511009010.rmcountfilter(c) + return c:GetCounter(0x1109)~=0 +end + +function c511009010.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009010.rmcountfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + tc:RemoveCounter(tp,0x1109,1,REASON_EFFECT) + tc=g:GetNext() + end + local g2=Duel.GetMatchingGroup(c511009010.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g2,REASON_EFFECT) +end + +function c511009010.filter(c,tp,ep) + return c:IsFaceup() +end +function c511009010.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511009010.filter,1,nil,tp) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x1109) +end +function c511009010.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511009010.filter,nil,e,tp) + local tc=g:GetFirst() + while tc do + tc:AddCounter(0x1109,tc:GetLevel(),REASON_EFFECT) + tc:RegisterFlagEffect(511009010,RESET_EVENT+0x1fe0000,0,1) + tc=g:GetNext() + end +end + +function c511009010.desfilter(c,g,pg) + return c:IsFaceup() and c:GetCounter(0x1109)==0 and c:GetFlagEffect(511009010)~=0 and c:IsDestructable() +end +function c511009010.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009010.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511009011.lua b/script/c511009011.lua new file mode 100644 index 00000000..8f27064f --- /dev/null +++ b/script/c511009011.lua @@ -0,0 +1,30 @@ +--Lira the Giver +function c511009011.initial_effect(c) + + --Give Counter + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(98162021,0)) + e3:SetCategory(CATEGORY_COUNTER) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetTarget(c511009011.addct2) + e3:SetOperation(c511009011.addc2) + c:RegisterEffect(e3) +end +function c511009011.addct2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() end + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x109,1,REASON_EFFECT) + and Duel.IsExistingTarget(Card.IsCanAddCounter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler(),0x1109,1) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(98162021,1)) + Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler(),0x1109,1) +end +function c511009011.addc2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetCounter(0x1109)==0 then return end + c:RemoveCounter(tp,0x1109,1,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + tc:AddCounter(0x1109,1) + end +end diff --git a/script/c511009012.lua b/script/c511009012.lua new file mode 100644 index 00000000..8ae4abc6 --- /dev/null +++ b/script/c511009012.lua @@ -0,0 +1,30 @@ +--Eva Epsilon +function c511009012.initial_effect(c) + --Give Counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(39892082,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c511009012.damcon) + e2:SetOperation(c511009012.damop) + c:RegisterEffect(e2) +end + +function c511009012.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetCounter(0x1109) + e:SetLabel(ct) + return ct>0 and c:IsLocation(LOCATION_GRAVE) +end +function c511009012.damop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + for i=1,ct do + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(83604828,1)) + local tc=g:Select(tp,1,1,nil):GetFirst() + tc:AddCounter(0x1109,1) + end +end diff --git a/script/c511009013.lua b/script/c511009013.lua new file mode 100644 index 00000000..bb02bd35 --- /dev/null +++ b/script/c511009013.lua @@ -0,0 +1,38 @@ +--Greed Quasar (anime) +function c511009013.initial_effect(c) + --base attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511009013.atkval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + c:RegisterEffect(e2) + + --Add counter + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e6:SetCode(EVENT_LEAVE_FIELD) + e6:SetRange(LOCATION_MZONE) + e6:SetOperation(c511009013.addop2) + c:RegisterEffect(e6) +end +function c511009013.atkval(e,c) + return c:GetCounter(0x1109)*300 +end +function c511009013.addop2(e,tp,eg,ep,ev,re,r,rp) + local count=0 + local c=eg:GetFirst() + while c~=nil do + if c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and c:GetReasonCard()==e:GetHandler() then + count=count+c:GetCounter(0x1109) + end + c=eg:GetNext() + end + if count>0 then + e:GetHandler():AddCounter(0x1109,count) + end +end diff --git a/script/c511009014.lua b/script/c511009014.lua new file mode 100644 index 00000000..b15ef601 --- /dev/null +++ b/script/c511009014.lua @@ -0,0 +1,45 @@ +--Mystical Elf +function c511009014.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(16304628,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511009014.atktg) + e1:SetOperation(c511009014.atkop) + c:RegisterEffect(e1) + +end +function c511009014.atktg(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 true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g,g:GetCount(),0,0) +end +function c511009014.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local atk=c:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + end +end diff --git a/script/c511009015.lua b/script/c511009015.lua new file mode 100644 index 00000000..13e6a5f8 --- /dev/null +++ b/script/c511009015.lua @@ -0,0 +1,27 @@ +--Gearspring Exploder +function c511009015.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(95100633) + e1:SetCondition(c511009015.condition) + e1:SetTarget(c511009015.target) + e1:SetOperation(c511009015.activate) + c:RegisterEffect(e1) +end +function c511009015.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsControler,1,nil,tp) and Duel.GetTurnPlayer()==tp +end +function c511009015.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetCounter(tp,1,0,0x108) + if chk==0 then return ct>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ct*800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*800) +end +function c511009015.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,Duel.GetCounter(tp,1,0,0x108)*800,REASON_EFFECT) +end diff --git a/script/c511009016.lua b/script/c511009016.lua new file mode 100644 index 00000000..53fc991b --- /dev/null +++ b/script/c511009016.lua @@ -0,0 +1,61 @@ +--Gearspring Catapult +function c511009016.initial_effect(c) + c:EnableCounterPermit(0x108) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511009016.addcon) + e2:SetOperation(c511009016.addop) + c:RegisterEffect(e2) + --attackup + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(62154416,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c511009016.atkcost) + e3:SetTarget(c511009016.atktg) + e3:SetOperation(c511009016.atkop) + c:RegisterEffect(e3) +end +function c511009016.addcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511009016.addop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:AddCounter(0x108,1) + Duel.RaiseEvent(c,95100633,e,0,tp,0,0) +end + +function c511009016.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x108,1,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x108,1,REASON_COST) +end +function c511009016.atktg(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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009016.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009017.lua b/script/c511009017.lua new file mode 100644 index 00000000..bd4a2963 --- /dev/null +++ b/script/c511009017.lua @@ -0,0 +1,52 @@ +--Gearspring Spirit +function c511009017.initial_effect(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(45458027,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511009017.target) + e2:SetOperation(c511009017.operation) + c:RegisterEffect(e2) + --spsummon + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_SPSUMMON_PROC) + e5:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e5:SetRange(LOCATION_HAND) + e5:SetCondition(c511009017.spcon) + e5:SetOperation(c511009017.spop) + c:RegisterEffect(e5) + +end + +function c511009017.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsCanRemoveCounter(tp,1,0,0x108,3,REASON_COST) +end +function c511009017.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.RemoveCounter(tp,1,0,0x108,3,REASON_COST) +end + +function c511009017.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(aux.nzatk,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,aux.nzatk,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511009017.operation(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_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(0) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009018.lua b/script/c511009018.lua new file mode 100644 index 00000000..102f0373 --- /dev/null +++ b/script/c511009018.lua @@ -0,0 +1,80 @@ +--Automatic Gearspring Machine +function c511009018.initial_effect(c) + c:EnableCounterPermit(0x108) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009018.target) + e1:SetOperation(c511009018.activate) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511009018.addcon) + e2:SetOperation(c511009018.addop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(61156777,1)) + e3:SetCategory(CATEGORY_COUNTER) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c511009018.spcost) + e3:SetTarget(c511009018.sptg) + e3:SetOperation(c511009018.spop) + c:RegisterEffect(e3) +end +function c511009018.addcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511009018.addop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:AddCounter(0x108,1) + Duel.RaiseEvent(c,95100633,e,0,tp,0,0) +end +function c511009018.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,2,0,0x108) +end +function c511009018.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + c:AddCounter(0x108,2) + Duel.RaiseEvent(c,95100633,e,0,tp,0,0) + end +end + +function c511009018.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabel(e:GetHandler():GetCounter(0x108)) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511009018.filter(c,e,tp) + return c:IsFaceup() and c:IsCanAddCounter(0x108,1) +end +function c511009018.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local c=e:GetHandler() + local ct=c:GetCounter(0x108) + return ct>0 and Duel.IsExistingMatchingCard(Card.IsCanAddCounter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c,0x108,ct) + end + Duel.SetTargetParam(e:GetLabel()) + e:SetLabel(0) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,ct,0,0x108) +end +function c511009018.spop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(73853830,1)) + local g=Duel.SelectMatchingCard(tp,Card.IsCanAddCounter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,0x108,ct) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + tc:AddCounter(0x108,ct) + Duel.RaiseEvent(tc,95100633,e,0,tp,0,0) + end +end diff --git a/script/c511009019.lua b/script/c511009019.lua new file mode 100644 index 00000000..67aa1cb6 --- /dev/null +++ b/script/c511009019.lua @@ -0,0 +1,46 @@ +--Heavy Metal King +function c511009019.initial_effect(c) + c:EnableReviveLimit() + --spsummon proc + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_DECK) + e1:SetCondition(c511009019.spcon) + e1:SetOperation(c511009019.spop) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_CALCULATING) + e2:SetCondition(c511009019.atkcon) + e2:SetOperation(c511009019.atkop) + c:RegisterEffect(e2) +end +function c511009019.spfilter(c) + return c:IsCode(56907389) and c:GetEquipGroup():IsExists(Card.IsCode,1,nil,68540058) +end +function c511009019.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c511009019.spfilter,1,nil) +end +function c511009019.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,c511009019.spfilter,1,1,nil) + Duel.Release(g,REASON_COST) + Duel.ShuffleDeck(tp) +end +function c511009019.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==Duel.GetAttacker() and Duel.GetAttackTarget()~=nil +end +function c511009019.atkop(e,tp,eg,ep,ev,re,r,rp) + local bc=Duel.GetAttackTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(bc:GetAttack()/2) + e:GetHandler():RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511009024.lua b/script/c511009024.lua new file mode 100644 index 00000000..7c973850 --- /dev/null +++ b/script/c511009024.lua @@ -0,0 +1,115 @@ +--Over the Red +function c511009024.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511009024) + e1:SetTarget(c511009024.target) + e1:SetOperation(c511009024.activate) + c:RegisterEffect(e1) + if not c511009024.global_check then + c511009024.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511009024.operation) + Duel.RegisterEffect(e2,0) + end +end + +--red collection +c511009024.collection={ + [58831685]=true;[10202894]=true;[65570596]=true;[511001464]=true;[511001094]=true; + [68722455]=true;[58165765]=true;[45462639]=true;[511001095]=true;[511000365]=true; + [14886469]=true;[30494314]=true;[81354330]=true;[86445415]=true;[100000562]=true; + [34475451]=true;[40975574]=true;[37132349]=true;[61019812]=true;[19025379]=true; + [76547525]=true;[55888045]=true;[97489701]=true;[67030233]=true;[65338781]=true; + [45313993]=true;[8706701]=true;[21142671]=true; +} + +function c511009024.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(1-tp) and ev>0 +end +function c511009024.filter(c,e,tp) + return c:IsFaceup() and (c:IsSetCard(0x3b) or c:IsSetCard(0x1045) or c:IsSetCard(0x89b) or c511009024.collection[c:GetCode()]) + and c:IsType(TYPE_SYNCHRO) and c:IsCanBeEffectTarget(e) +end +function c511009024.rmfilter(c) + return (c:IsSetCard(0x3b) or c:IsSetCard(0x1045) or c:IsSetCard(0x89b) or c511009024.collection[c:GetCode()]) + and c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemoveAsCost() +end +function c511009024.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) end + if chk==0 then return eg:IsExists(c511009024.filter,1,nil,e) end + if eg:GetCount()==1 then + Duel.SetTargetCard(eg) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=eg:FilterSelect(tp,c511009024.filter,1,1,nil,e) + Duel.SetTargetCard(g) + end +end +function c511009024.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + local sg=Duel.GetMatchingGroup(c511009024.rmfilter,tp,LOCATION_GRAVE,0,nil) + if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(511009024,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local tg=sg:Select(tp,1,1,nil) + Duel.HintSelection(tg) + Duel.Remove(tg,POS_FACEUP,REASON_COST) + -- Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + local atk=tg:GetFirst():GetAttack() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end + end +end + +--atk change check +function c511009024.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511009024)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511009024.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511009024,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511009024.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + val=e:GetLabel()-c:GetAttack() + if val>0 then + Duel.RaiseEvent(c,511009024,re,REASON_EFFECT,rp,tp,val) + end + e:SetLabel(c:GetAttack()) +end \ No newline at end of file diff --git a/script/c511009025.lua b/script/c511009025.lua new file mode 100644 index 00000000..551fe926 --- /dev/null +++ b/script/c511009025.lua @@ -0,0 +1,150 @@ +--Starve Venom Fusion Dragon (Anime) +function c511009025.initial_effect(c) + --fusion + c:EnableReviveLimit() + -- aux.AddFusionProcFunRep(c,c511009025.mat_filter,2,true) + if Card.IsFusionAttribute then + aux.AddFusionProcFunRep(c,c511009025.mat_filter1,2,true) + else + aux.AddFusionProcFunRep(c,c511009025.mat_filter2,2,true) + end + --material + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetDescription(aux.Stringid(511000674,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511009025.atkcon) + e1:SetTarget(c511009025.tg) + e1:SetOperation(c511009025.op) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(7338,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c511009025.nmtg) + e2:SetOperation(c511009025.nmop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(7338,2)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DESTROYED) + e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCondition(c511009025.descon) + e3:SetTarget(c511009025.destg) + e3:SetOperation(c511009025.desop) + c:RegisterEffect(e3) + if not c511009025.global_check then + c511009025.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetLabel(511009025) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + end +end +function c511009025.mat_filter1(c) + return c:IsFusionAttribute(ATTRIBUTE_DARK) +end +function c511009025.mat_filter2(c) + return c:IsAttribute(ATTRIBUTE_DARK) +end +function c511009025.atkfil(c) + return not c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c511009025.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local c=e:GetHandler() + return c:GetFlagEffect(511009025)~=0 and bit.band(c:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and c:GetMaterial() + and not c:GetMaterial():IsExists(c511009025.atkfil,1,nil) +end +function c511009025.filter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c511009025.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009025.filter,tp,0,LOCATION_MZONE,1,nil) end +end +function c511009025.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511009025.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local atk=0 + local tc=g:GetFirst() + while tc do + atk=atk+tc:GetAttack() + tc=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end + +function c511009025.nmfil(c) + return c:IsFaceup() and c:IsLevelAbove(5) +end +function c511009025.nmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511009025.nmfil(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009025.nmfil,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511009025.nmfil,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511009025.nmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local code=tc:GetCode() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end +end + +function c511009025.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) +end +function c511009025.desfil(c) + return c:IsSummonType(SUMMON_TYPE_SPECIAL) +end +function c511009025.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009025.desfil,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511009025.desfil,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511009025.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009025.desfil,tp,0,LOCATION_MZONE,nil) + if Duel.Destroy(g,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local atk=0 + local tc=dg:GetFirst() + while tc do + if tc:IsPreviousPosition(POS_FACEUP) then + atk=atk+tc:GetPreviousAttackOnField() + end + tc=dg:GetNext() + end + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c511009026.lua b/script/c511009026.lua new file mode 100644 index 00000000..8b72c59c --- /dev/null +++ b/script/c511009026.lua @@ -0,0 +1,67 @@ +--Predator PLanter +function c511009026.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(1353770,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511009026.target) + e2:SetOperation(c511009026.operation) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511009026.mtcon) + e3:SetOperation(c511009026.mtop) + c:RegisterEffect(e3) +end + +function c511009026.filter(c,e,sp) + return c:IsSetCard(0xf3) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) +end +function c511009026.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009026.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c511009026.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009026.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + g:GetFirst():RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + g:GetFirst():RegisterEffect(e2,true) + end +end + +function c511009026.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511009026.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLP(tp)>800 and Duel.SelectYesNo(tp,aux.Stringid(95100827,0)) then + Duel.PayLPCost(tp,800) + else + Duel.Destroy(e:GetHandler(),REASON_RULE) + end +end + diff --git a/script/c511009027.lua b/script/c511009027.lua new file mode 100644 index 00000000..762490da --- /dev/null +++ b/script/c511009027.lua @@ -0,0 +1,47 @@ +--Rank-Up-Magic Escape Force +function c511009027.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511009027.target) + e1:SetOperation(c511009027.activate) + c:RegisterEffect(e1) +end +function c511009027.filter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsFaceup() + and Duel.IsExistingMatchingCard(c511009027.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+1,c:GetCode()) +end +function c511009027.filter2(c,e,tp,mc,rk,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return c:GetRank()==rk and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511009027.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttackTarget() + if chkc then return chkc==tg and c511009027.filter(chkc,e,tp) end + if chk==0 then return tg and tg:IsOnField() and tg:IsCanBeEffectTarget(e) and c511009027.filter(tg,e,tp) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009027.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.NegateAttack() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009027.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP_ATTACK) + sc:CompleteProcedure() + end +end diff --git a/script/c511009028.lua b/script/c511009028.lua new file mode 100644 index 00000000..b5f18f34 --- /dev/null +++ b/script/c511009028.lua @@ -0,0 +1,22 @@ +--Amazoness Empress +function c511009028.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,15951532,aux.FilterBoolFunction(Card.IsFusionSetCard,0x4),1,true,true) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x4)) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + --pierce + local e3=e1:Clone() + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) +end diff --git a/script/c511009029.lua b/script/c511009029.lua new file mode 100644 index 00000000..0276c441 --- /dev/null +++ b/script/c511009029.lua @@ -0,0 +1,65 @@ +--Amazoness Liger +function c511009029.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,10979723,aux.FilterBoolFunction(Card.IsFusionSetCard,0x4),1,true,true) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511009029.cond) + e1:SetValue(500) + c:RegisterEffect(e1) + --attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511009029.negop) + c:RegisterEffect(e2) + --lose atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLED) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCondition(c511009029.atkcon) + e3:SetTarget(c511009029.atktg) + e3:SetOperation(c511009029.atkop) + c:RegisterEffect(e3) +end +function c511009029.cond(e) + local phase=Duel.GetCurrentPhase() + return (phase==PHASE_DAMAGE or phase==PHASE_DAMAGE_CAL) and Duel.GetAttacker()==e:GetHandler() +end +function c511009029.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + return a:IsControler(tp) and d:IsControler(1-tp) and a:IsSetCard(0x4) +end +function c511009029.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511009029.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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) + e1:SetValue(-800) + tc:RegisterEffect(e1) + end +end +function c511009029.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()~=e:GetHandler() + and Duel.SelectYesNo(tp,aux.Stringid(8279188,0)) then + Duel.NegateAttack() + end +end diff --git a/script/c511009030.lua b/script/c511009030.lua new file mode 100644 index 00000000..425564e7 --- /dev/null +++ b/script/c511009030.lua @@ -0,0 +1,66 @@ +--Shadow Guardsmen +--fixed by MLD +function c511009030.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:SetHintTiming(0,TIMING_BATTLE_START) + e1:SetCondition(c511009030.condition) + e1:SetTarget(c511009030.target) + e1:SetOperation(c511009030.activate) + c:RegisterEffect(e1) +end +function c511009030.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c511009030.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(1-tp,LOCATION_MZONE,0) + if chk==0 then return Duel.IsPlayerCanSpecialSummonMonster(tp,511009031,0,0x4011,1,1,1,RACE_WARRIOR,ATTRIBUTE_DARK) + and ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct end + local ct=Duel.GetFieldGroupCount(1-tp,LOCATION_MZONE,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,0,0) +end +function c511009030.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetFieldGroupCount(1-tp,LOCATION_MZONE,0) + if Duel.GetLocationCount(tp,LOCATION_MZONE)0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511009033,0,0x4011,0,0,1,RACE_INSECT,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511009032.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) + or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511009033,0,0x4011,0,0,1,RACE_INSECT,ATTRIBUTE_EARTH) then return end + local token=Duel.CreateToken(tp,511009033) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) +end \ No newline at end of file diff --git a/script/c511009034.lua b/script/c511009034.lua new file mode 100644 index 00000000..c2c99d25 --- /dev/null +++ b/script/c511009034.lua @@ -0,0 +1,34 @@ +--Scale Up +function c511009034.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009034.target) + e1:SetOperation(c511009034.activate) + c:RegisterEffect(e1) +end +function c511009034.filter(c) + return c:IsFaceup() and (c:GetSequence()==6 or c:GetSequence()==7) +end +function c511009034.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c511009034.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009034.filter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511009034.filter,tp,LOCATION_SZONE,0,1,1,nil) +end +function c511009034.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LSCALE) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_RSCALE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511009035.lua b/script/c511009035.lua new file mode 100644 index 00000000..bfbcd924 --- /dev/null +++ b/script/c511009035.lua @@ -0,0 +1,57 @@ +--D - Soul +--fixed by MLD +function c511009035.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(c511009035.condition) + e1:SetCost(c511009035.cost) + e1:SetTarget(c511009035.target) + e1:SetOperation(c511009035.activate) + c:RegisterEffect(e1) +end +function c511009035.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511009035.cfilter(c) + return c:GetAttack()>0 and c:IsSetCard(0xc008) and c:IsAbleToRemoveAsCost() +end +function c511009035.filter(c) + return c:IsFaceup() and c:IsSetCard(0xc008) +end +function c511009035.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511009035.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511009035.filter(chkc) end + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511009035.cfilter,tp,LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingTarget(c511009035.filter,tp,LOCATION_MZONE,0,1,nil) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,c511009035.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + local atk=g:GetFirst():GetAttack() + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009035.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetParam(atk) +end +function c511009035.activate(e,tp,eg,ep,ev,re,r,rp) + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009036.lua b/script/c511009036.lua new file mode 100644 index 00000000..e51e3b0c --- /dev/null +++ b/script/c511009036.lua @@ -0,0 +1,90 @@ +--Dark Contract with the Abyss Pendulum +--fixed by MLD +function c511009036.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetHintTiming(TIMING_TOHAND) + e1:SetTarget(c511009036.target) + c:RegisterEffect(e1) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(2316186,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_HAND) + e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511009036.thcon) + e3:SetTarget(c511009036.thtg) + e3:SetOperation(c511009036.thop) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetDescription(aux.Stringid(9765723,1)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetCountLimit(1) + e4:SetCondition(c511009036.damcon) + e4:SetTarget(c511009036.damtg) + e4:SetOperation(c511009036.damop) + c:RegisterEffect(e4) +end +function c511009036.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_TO_HAND,true) + if res then + if c511009036.thcon(e,tp,teg,tep,tev,tre,tr,trp) and c511009036.thtg(e,tp,teg,tep,tev,tre,tr,trp,0) + and Duel.SelectYesNo(tp,aux.Stringid(24348804,0)) then + e:SetCategory(CATEGORY_DAMAGE) + e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + c511009036.thtg(e,tp,teg,tep,tev,tre,tr,trp,1) + e:SetOperation(c511009036.thop) + else + e:SetCategory(0) + e:SetProperty(EFFECT_FLAG_DELAY) + e:SetOperation(nil) + end + end +end +function c511009036.thfilter(c,tp) + return c:IsType(TYPE_PENDULUM) and c:IsSetCard(0xaf) and c:GetPreviousControler()==tp and c:IsControler(tp) + and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c511009036.thcon(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511009036.thfilter,nil,tp) + return g:GetCount()==1 +end +function c511009036.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c511009036.thfilter,nil,tp) + local tc=g:GetFirst() + if chk==0 then return tc and tc:GetDefense()>0 and e:GetHandler():GetFlagEffect(511009036)==0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(tc:GetDefense()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,tc:GetDefense()) + e:GetHandler():RegisterFlagEffect(511009036,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511009036.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511009036.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511009036.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c511009036.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511009037.lua b/script/c511009037.lua new file mode 100644 index 00000000..b9da37e2 --- /dev/null +++ b/script/c511009037.lua @@ -0,0 +1,59 @@ +--Hollow Spirit +function c511009037.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(20032555,1)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511009037.condition) + e1:SetTarget(c511009037.target) + e1:SetOperation(c511009037.operation) + c:RegisterEffect(e1) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(102380,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511009037.spcon) + e3:SetTarget(c511009037.sptg) + e3:SetOperation(c511009037.spop) + c:RegisterEffect(e3) +end +function c511009037.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_GRAVE,0,1,nil,RACE_ZOMBIE) +end +function c511009037.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c511009037.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511009037.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511009037.spfilter(c,e,tp) + return c:IsCode(511009039) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) + and (not c:IsLocation(LOCATION_GRAVE) or not c:IsHasEffect(EFFECT_NECRO_VALLEY)) +end +function c511009037.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009037.spfilter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511009037.spop(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 tc=Duel.SelectMatchingCard(tp,c511009037.spfilter,tp,0x13,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP)>0 then + tc:CompleteProcedure() + end +end diff --git a/script/c511009039.lua b/script/c511009039.lua new file mode 100644 index 00000000..28b6adbd --- /dev/null +++ b/script/c511009039.lua @@ -0,0 +1,47 @@ +--Hollow Ghost +function c511009039.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511009039.splimit) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(37457534,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511009039.target) + e2:SetOperation(c511009039.operation) + c:RegisterEffect(e2) + --atk down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetCondition(c511009039.con) + e3:SetValue(0) + c:RegisterEffect(e3) +end +function c511009039.splimit(e,se,sp,st) + return se:GetHandler():IsCode(511009037) +end +function c511009039.con(e) + return not Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,511009037) +end +function c511009039.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(600) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,600) +end +function c511009039.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511009040.lua b/script/c511009040.lua new file mode 100644 index 00000000..271c49f4 --- /dev/null +++ b/script/c511009040.lua @@ -0,0 +1,32 @@ +--Performapal Showup +function c511009040.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009040.target) + e1:SetOperation(c511009040.activate) + c:RegisterEffect(e1) +end +function c511009040.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) +end +function c511009040.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009040.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009040.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009040.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511009040.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009041.lua b/script/c511009041.lua new file mode 100644 index 00000000..dfb9e432 --- /dev/null +++ b/script/c511009041.lua @@ -0,0 +1,29 @@ +--Frightfur Re-Knit +function c511009041.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009041.target) + e1:SetOperation(c511009041.activate) + c:RegisterEffect(e1) +end +function c511009041.filter(c,e,tp) + return c:IsSetCard(0xad) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009041.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009041.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511009041.activate(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,c511009041.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + Duel.HintSelection(g) + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009042.lua b/script/c511009042.lua new file mode 100644 index 00000000..64a1dac1 --- /dev/null +++ b/script/c511009042.lua @@ -0,0 +1,52 @@ +--Ancient Gear Magic Shield +function c511009042.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(c511009042.target) + e1:SetOperation(c511009042.operation) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(1200) + c:RegisterEffect(e2) + --Indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511009042.eqlimit) + c:RegisterEffect(e4) + +end +function c511009042.eqlimit(e,c) + return c:IsSetCard(0x7) +end +function c511009042.filter(c) + return c:IsFaceup() and c:IsSetCard(0x7) +end +function c511009042.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009042.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009042.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511009042.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511009042.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 + diff --git a/script/c511009043.lua b/script/c511009043.lua new file mode 100644 index 00000000..72b2162a --- /dev/null +++ b/script/c511009043.lua @@ -0,0 +1,59 @@ +--Isolde, Belle of the Underworld (anime) +function c511009043.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c511009043.spcon) + c:RegisterEffect(e2) + --lv change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(2) + e2:SetTarget(c511009043.lvtg) + e2:SetOperation(c511009043.lvop) + c:RegisterEffect(e2) +end +function c511009043.spfilter(c) + return c:IsFaceup() and c:IsCode(96163807) +end +function c511009043.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009043.spfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c511009043.filter(c) + return c:IsFaceup() and c:GetLevel()>0 and c:IsRace(RACE_ZOMBIE) +end +function c511009043.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009043.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009043.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511009043.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local t={} + local i=1 + local p=1 + local lv=g:GetFirst():GetLevel() + for i=4,8 do + if lv~=i then t[p]=i p=p+1 end + end + t[p]=nil + Duel.Hint(HINT_SELECTMSG,tp,567) + e:SetLabel(Duel.AnnounceNumber(tp,table.unpack(t))) +end +function c511009043.lvop(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_CHANGE_LEVEL) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009044.lua b/script/c511009044.lua new file mode 100644 index 00000000..3cc4422f --- /dev/null +++ b/script/c511009044.lua @@ -0,0 +1,116 @@ +--Over the Red +function c511009044.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(95100790) + -- e1:SetCondition(c511009044.condition) + e1:SetTarget(c511009044.target) + e1:SetOperation(c511009044.activate) + c:RegisterEffect(e1) + if not c511009044.global_check then + c511009044.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511009044.operation) + Duel.RegisterEffect(e2,0) + end +end + +--red collection +c511009044.collection={ + [58831685]=true;[10202894]=true;[65570596]=true;[511001464]=true;[511001094]=true; + [68722455]=true;[58165765]=true;[45462639]=true;[511001095]=true;[511000365]=true; + [14886469]=true;[30494314]=true;[81354330]=true;[86445415]=true;[100000562]=true; + [34475451]=true;[40975574]=true;[37132349]=true;[61019812]=true;[19025379]=true; + [76547525]=true;[55888045]=true;[97489701]=true;[67030233]=true;[65338781]=true; + [45313993]=true;[8706701]=true;[21142671]=true; +} + +function c511009044.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(1-tp) and ev>0 +end +function c511009044.filter(c,e,tp) + return c:IsFaceup() and (c:IsSetCard(0x3b) or c:IsSetCard(0x1045) or c:IsSetCard(0x89b) or c511009044.collection[c:GetCode()]) + and c:IsType(TYPE_SYNCHRO) and c:IsCanBeEffectTarget(e) +end +function c511009044.rmfilter(c) + return (c:IsSetCard(0x3b) or c:IsSetCard(0x1045) or c:IsSetCard(0x89b) or c511009044.collection[c:GetCode()]) + and c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemoveAsCost() +end +function c511009044.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) end + if chk==0 then return eg:IsExists(c511009044.filter,1,nil,e) end + if eg:GetCount()==1 then + Duel.SetTargetCard(eg) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=eg:FilterSelect(tp,c511009044.filter,1,1,nil,e) + Duel.SetTargetCard(g) + end +end +function c511009044.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + local sg=Duel.GetMatchingGroup(c511009044.rmfilter,tp,LOCATION_GRAVE,0,nil) + if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(95100790,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local tg=sg:Select(tp,1,1,nil) + Duel.HintSelection(tg) + Duel.Remove(tg,POS_FACEUP,REASON_COST) + -- Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + local atk=tg:GetFirst():GetAttack() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end + end +end + +--atk change check +function c511009044.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(95100790)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511009044.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(95100790,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511009044.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + val=e:GetLabel()-c:GetAttack() + if val>0 then + Duel.RaiseEvent(c,95100790,re,REASON_EFFECT,rp,tp,val) + end + e:SetLabel(c:GetAttack()) +end \ No newline at end of file diff --git a/script/c511009047.lua b/script/c511009047.lua new file mode 100644 index 00000000..31c91088 --- /dev/null +++ b/script/c511009047.lua @@ -0,0 +1,64 @@ +--Performapal Lizardraw (anime) +function c511009047.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c511009047.target) + e2:SetOperation(c511009047.activate) + c:RegisterEffect(e2) + --drawp + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_DESTROYED) + e2:SetCountLimit(1) + e2:SetCondition(c511009047.drcon) + e2:SetTarget(c511009047.drtg) + e2:SetOperation(c511009047.drop) + c:RegisterEffect(e2) +end +function c511009047.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511009047.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end + + +function c511009047.cfilter(c,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c511009047.drcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511009047.cfilter,1,nil,tp) +end +function c511009047.cfilter2(c) + return c:IsFaceup() and c:IsSetCard(0x9f) +end +function c511009047.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + local ct=Duel.GetMatchingGroupCount(c511009047.cfilter2,tp,LOCATION_MZONE,0,nil) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct) +end +function c511009047.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511009049.lua b/script/c511009049.lua new file mode 100644 index 00000000..ae0ef6b8 --- /dev/null +++ b/script/c511009049.lua @@ -0,0 +1,268 @@ +--Red Dragon Archfiend Tyrant (anime) +function c511009049.initial_effect(c) + c:EnableReviveLimit() + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c511009049.syncon) + e1:SetOperation(c511009049.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511009049.discon) + e2:SetTarget(c511009049.distg) + e2:SetOperation(c511009049.disop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c511009049.destg) + e3:SetOperation(c511009049.desop) + c:RegisterEffect(e3) +end +function c511009049.matfilter1(c,syncard) + return c:IsType(TYPE_TUNER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) +end +function c511009049.matfilter2(c,syncard) + return c:IsNotTuner() and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) +end +function c511009049.synfilter1(c,syncard,lv,g1,g2,g3,g4) + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + local f1=c.tuner_filter + if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then + return g3:IsExists(c511009049.synfilter2,1,c,syncard,lv-tlv,g2,g4,f1,c) + else + return g1:IsExists(c511009049.synfilter2,1,c,syncard,lv-tlv,g2,g4,f1,c) + end +end +function c511009049.synfilter2(c,syncard,lv,g2,g4,f1,tuner1) + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + local f2=c.tuner_filter + if f1 and not f1(c) then return false end + if f2 and not f2(tuner1) then return false end + if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not c:IsLocation(LOCATION_HAND)) or c:IsHasEffect(EFFECT_HAND_SYNCHRO) then + return g4:IsExists(c511009049.synfilter3,1,nil,syncard,lv-tlv,f1,f2,g2) + else + return g2:CheckWithSumEqual(Card.GetSynchroLevel,lv-tlv,1,62,syncard) + end +end +function c511009049.synfilter3(c,syncard,lv,f1,f2,g2) + if not (not f1 or f1(c)) and not (not f2 or f2(c)) then return false end + local mlv=c:GetSynchroLevel(syncard) + local slv=lv-mlv + if slv<0 then return false end + if slv==0 then + return true + else + return g2:CheckWithSumEqual(Card.GetSynchroLevel,slv,1,61,syncard) + end +end +function c511009049.syncon(e,c,tuner,mg) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end + local g1=nil + local g2=nil + local g3=nil + local g4=nil + if mg then + g1=mg:Filter(c511009049.matfilter1,nil,c) + g2=mg:Filter(c511009049.matfilter2,nil,c) + g3=mg:Filter(c511009049.matfilter1,nil,c) + g4=mg:Filter(c511009049.matfilter2,nil,c) + else + g1=Duel.GetMatchingGroup(c511009049.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c511009049.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c511009049.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + g4=Duel.GetMatchingGroup(c511009049.matfilter2,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + local tlv=tuner:GetSynchroLevel(c) + if lv-tlv<=0 then return false end + local f1=tuner.tuner_filter + if not pe then + return g1:IsExists(c511009049.synfilter2,1,tuner,c,lv-tlv,g2,g4,f1,tuner) + else + return c511009049.synfilter2(pe:GetOwner(),c,lv-tlv,g2,nil,f1,tuner) + end + end + if not pe then + return g1:IsExists(c511009049.synfilter1,1,nil,c,lv,g1,g2,g3,g4) + else + return c511009049.synfilter1(pe:GetOwner(),c,lv,g1,g2,g3,g4) + end +end +function c511009049.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) + local g=Group.CreateGroup() + local g1=nil + local g2=nil + local g3=nil + local g4=nil + if mg then + g1=mg:Filter(c511009049.matfilter1,nil,c) + g2=mg:Filter(c511009049.matfilter2,nil,c) + g3=mg:Filter(c511009049.matfilter1,nil,c) + g4=mg:Filter(c511009049.matfilter2,nil,c) + else + g1=Duel.GetMatchingGroup(c511009049.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c511009049.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c511009049.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + g4=Duel.GetMatchingGroup(c511009049.matfilter2,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + g:AddCard(tuner) + local lv1=tuner:GetSynchroLevel(c) + local f1=tuner.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner2=nil + if not pe then + local t2=g1:FilterSelect(tp,c511009049.synfilter2,1,1,tuner,c,lv-lv1,g2,g4,f1,tuner) + tuner2=t2:GetFirst() + else + tuner2=pe:GetOwner() + Group.FromCards(tuner2):Select(tp,1,1,nil) + end + g:AddCard(tuner2) + local lv2=tuner2:GetSynchroLevel(c) + local f2=tuner2.tuner_filter + local m3=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then + m3=g4:FilterSelect(tp,c511009049.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2,g2) + local lv3=m3:GetFirst():GetSynchroLevel(c) + if lv-lv1-lv2-lv3>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m4=g2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-lv1-lv2-lv3,1,61,c) + g:Merge(m4) + end + else + m3=g2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-lv1-lv2,1,62,c) + end + g:Merge(m3) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner1=nil + local hand=nil + if not pe then + local t1=g1:FilterSelect(tp,c511009049.synfilter1,1,1,nil,c,lv,g1,g2,g3,g4) + tuner1=t1:GetFirst() + else + tuner1=pe:GetOwner() + Group.FromCards(tuner1):Select(tp,1,1,nil) + end + g:AddCard(tuner1) + local lv1=tuner1:GetSynchroLevel(c) + local f1=tuner1.tuner_filter + local tuner2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then + local t2=g3:FilterSelect(tp,c511009049.synfilter2,1,1,tuner1,c,lv-lv1,g2,g4,f1,tuner1) + tuner2=t2:GetFirst() + else + local t2=g1:FilterSelect(tp,c511009049.synfilter2,1,1,tuner1,c,lv-lv1,g2,g4,f1,tuner1) + tuner2=t2:GetFirst() + end + g:AddCard(tuner2) + local lv2=tuner2:GetSynchroLevel(c) + local f2=tuner2.tuner_filter + local m3=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not tuner2:IsLocation(LOCATION_HAND)) + or tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then + m3=g4:FilterSelect(tp,c511009049.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2,g2) + local lv3=m3:GetFirst():GetSynchroLevel(c) + if lv-lv1-lv2-lv3>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m4=g2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-lv1-lv2-lv3,1,61,c) + g:Merge(m4) + end + else + m3=g2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-lv1-lv2,1,63,c) + end + g:Merge(m3) + end + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end + +function c511009049.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009049.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511009049.ftarget) + e1:SetLabel(e:GetHandler():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511009049.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c511009049.discon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and a and a==e:GetHandler() + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp~=tp and Duel.IsChainNegatable(ev) +end +function c511009049.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511009049.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(500) + c:RegisterEffect(e1) + end +end + + + + + +function c511009049.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009049.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511009050.lua b/script/c511009050.lua new file mode 100644 index 00000000..b2135a86 --- /dev/null +++ b/script/c511009050.lua @@ -0,0 +1,115 @@ +--Red Dragon Archfiend +function c511009050.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy1 + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70902743,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c511009050.condition1) + e1:SetTarget(c511009050.target1) + e1:SetOperation(c511009050.operation1) + c:RegisterEffect(e1) + --destroy2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(70902743,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCondition(c511009050.condition2) + e2:SetTarget(c511009050.target2) + e2:SetOperation(c511009050.operation2) + c:RegisterEffect(e2) + if not c511009050.global_check then + c511009050.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ATTACK_ANNOUNCE) + ge1:SetOperation(c511009050.check) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ATTACK_DISABLED) + ge2:SetOperation(c511009050.check2) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_SUMMON_SUCCESS) + ge3:SetOperation(c511009050.checkop) + Duel.RegisterEffect(ge3,0) + local ge4=Effect.CreateEffect(c) + ge4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge4:SetCode(EVENT_SPSUMMON_SUCCESS) + ge4:SetOperation(c511009050.checkop) + Duel.RegisterEffect(ge4,0) + end +end +function c511009050.check(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(95100760) + if ct then + tc:SetFlagEffectLabel(95100760,ct+1) + else + tc:RegisterFlagEffect(95100760,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,1) + end +end +function c511009050.check2(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(95100760) + if ct then + tc:SetFlagEffectLabel(95100760,ct-1) + end +end +function c511009050.checkop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetCurrentPhase()==PHASE_MAIN2 or Duel.GetCurrentPhase()==PHASE_END then + local tc=eg:GetFirst() + while tc do + local ct=tc:GetFlagEffectLabel(95100760) + if ct then + tc:SetFlagEffectLabel(95100760,ct+1) + else + tc:RegisterFlagEffect(95100760,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,1) + end + tc=eg:GetNext() + end + end + + +end +function c511009050.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget() and not Duel.GetAttackTarget():IsAttackPos() +end +function c511009050.filter1(c) + return not c:IsAttackPos() and c:IsDestructable() +end +function c511009050.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511009050.filter1,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009050.operation1(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009050.filter1,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c511009050.filter2(c) + local ct=c:GetFlagEffectLabel(95100760) + return (not ct or ct==0) and c:IsDestructable() +end +function c511009050.condition2(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511009050.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511009050.filter2,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009050.operation2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + local g=Duel.GetMatchingGroup(c511009050.filter2,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511009051.lua b/script/c511009051.lua new file mode 100644 index 00000000..d50bfd07 --- /dev/null +++ b/script/c511009051.lua @@ -0,0 +1,36 @@ +--Scarlight Red Dragon Archfiend (anime) +function c511009051.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511009051.destg) + e2:SetOperation(c511009051.desop) + c:RegisterEffect(e2) +end +function c511009051.filter(c,atk) + return c:IsFaceup() and c:IsAttackBelow(atk) and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL + and c:IsDestructable() +end +function c511009051.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c511009051.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,c:GetAttack()) end + local g=Duel.GetMatchingGroup(c511009051.filter,tp,LOCATION_MZONE,LOCATION_MZONE,c,c:GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*500) +end +function c511009051.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local g=Duel.GetMatchingGroup(c511009051.filter,tp,LOCATION_MZONE,LOCATION_MZONE,c,c:GetAttack()) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct>0 then + Duel.BreakEffect() + Duel.Damage(1-tp,ct*500,REASON_EFFECT) + end +end diff --git a/script/c511009052.lua b/script/c511009052.lua new file mode 100644 index 00000000..13ce1cb9 --- /dev/null +++ b/script/c511009052.lua @@ -0,0 +1,50 @@ +--D - Pressure +function c511009052.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511009052.tg) + e1:SetOperation(c511009052.op) + c:RegisterEffect(e1) + if not c511009052.global_check then + c511009052.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c511009052.checkop) + Duel.RegisterEffect(ge1,0) + end +end + +function c511009052.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:GetFlagEffect(95100810)==0 then + tc:RegisterFlagEffect(95100810,RESET_PHASE+PHASE_END,0,1) + end + tc=eg:GetNext() + end +end +function c511009052.fil1(c) + return c:IsFaceup() and c:IsSetCard(0xc008) and c:GetFlagEffect(95100810)>0 and c:GetAttack()>0 +end +function c511009052.filter2(c,atk,e,tp) + return c:IsSetCard(0xc008) and c:GetAttack()<=atk and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009052.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009052.fil1(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009052.fil1,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511009052.fil1,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009052.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c511009052.filter2,tp,LOCATION_HAND,0,1,1,nil,tc:GetAttack(),e,tp) + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511009053.lua b/script/c511009053.lua new file mode 100644 index 00000000..43f8b1a3 --- /dev/null +++ b/script/c511009053.lua @@ -0,0 +1,135 @@ +--Destiny HERO - Dystopiaguy +function c511009053.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xc008),2,true) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511009053.spcon) + e2:SetTarget(c511009053.sptg) + e2:SetOperation(c511009053.spop) + c:RegisterEffect(e2) + + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(511001265) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511009053.damcon) + -- e1:SetCost(c511009053.damcost) + e1:SetTarget(c511009053.damtg) + e1:SetOperation(c511009053.damop) + c:RegisterEffect(e1) + if not c511009053.global_check then + c511009053.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511009053.operation) + Duel.RegisterEffect(e2,0) + + end +end + +function c511009053.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511009053.spfilter(c,e,tp) + return c:IsReason(REASON_FUSION) and e:GetHandler()==c:GetReasonCard() +end +function c511009053.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and c511009053.spfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c511009053.spfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511009053.spfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511009053.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end + + + +------------------------------------------- +function c511009053.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsFaceup,0,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511009053.Atkop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_MZONE) + e2:SetLabel(tc:GetDefense()) + e2:SetOperation(c511009053.Defop) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511009053.Atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c511009053.Defop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetDefense() then return end + local val=0 + if e:GetLabel()>c:GetDefense() then + val=e:GetLabel()-c:GetDefense() + else + val=c:GetDefense()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetDefense()) +end + +function c511009053.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==eg:GetFirst() and ev>0 +end +function c511009053.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsOnField() and chkc:IsDestructable() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009053.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511009054.lua b/script/c511009054.lua new file mode 100644 index 00000000..adb776e6 --- /dev/null +++ b/script/c511009054.lua @@ -0,0 +1,86 @@ +--Rank-Up-Magic The Phantom Knights of Launch +function c511009054.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511009054.target) + e1:SetOperation(c511009054.activate) + c:RegisterEffect(e1) + + --to deck + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetCategory(CATEGORY_TODECK) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_GRAVE) + e2:SetDescription(aux.Stringid(511000818,0)) + e2:SetCondition(c511009054.tdcon) + e2:SetOperation(c511009054.tdop) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c511009054.filter1(c,e,tp) + local rk=c:GetRank() + return c:IsFaceup() and c:IsType(TYPE_XYZ) + and Duel.IsExistingMatchingCard(c511009054.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetCode()) +end +function c511009054.filter2(c,e,tp,mc,rk,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return c:GetRank()==rk and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511009054.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511009054.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511009054.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511009054.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009054.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009054.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + if (tc:IsSetCard(0x10db) or tc:IsCode(16195942)) and Duel.SelectYesNo(tp,aux.Stringid(95100814,0)) then + e:GetHandler():CancelToGrave() + Duel.Overlay(sc,Group.FromCards(e:GetHandler())) + end + + sc:CompleteProcedure() + e:GetLabelObject():SetLabelObject(sc) + end +end + +--------------------------- + +function c511009054.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetLabelObject() and e:GetLabelObject():IsLocation(LOCATION_MZONE) +end + +function c511009054.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return e:GetHandler():IsAbleToHand() and tc:IsLocation(LOCATION_MZONE) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c511009054.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + + if tc:IsLocation(LOCATION_MZONE) then + Duel.Overlay(tc,Group.FromCards(c)) + end +end diff --git a/script/c511009055.lua b/script/c511009055.lua new file mode 100644 index 00000000..8fd4c795 --- /dev/null +++ b/script/c511009055.lua @@ -0,0 +1,34 @@ +--Amazoness Spy +function c511009055.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(53804307,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c511009055.spcost) + e1:SetTarget(c511009055.sptg) + e1:SetOperation(c511009055.spop) + c:RegisterEffect(e1) +end +function c511009055.cfilter(c) + return c:IsSetCard(0x4) and c:IsType(TYPE_MONSTER) and not c:IsPublic() +end +function c511009055.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009055.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511009055.cfilter,tp,LOCATION_HAND,0,1,1,e:GetHandler()) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) +end +function c511009055.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511009055.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009058.lua b/script/c511009058.lua new file mode 100644 index 00000000..c1d2bcbe --- /dev/null +++ b/script/c511009058.lua @@ -0,0 +1,57 @@ +--White Circle Reef +function c511009058.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009058.target) + e1:SetOperation(c511009058.activate) + c:RegisterEffect(e1) +end +--White monster collection +c511009058.collection={ + [1571945]=true;[3557275]=true;[9433350]=true;[13429800]=true; + [15150365]=true;[20193924]=true;[24644634]=true;[32269855]=true; + [38517737]=true;[73398797]=true;[73891874]=true;[79473793]=true; + [79814787]=true;[89631139]=true;[92409659]=true;[98024118]=true; + [22804410]=true;[71039903]=true;[84812868]=true; + [501000016]=true; + [511002341]=true; + [511001977]=true;[511001978]=true;[511001979]=true;[511001980]=true; + [511001090]=true;[511001091]=true; + [95100846]=true;[95100847]=true; + +} +function c511009058.filter(c,tp) + return c:IsFaceup() and c:IsDestructable() + and Duel.IsExistingMatchingCard(c511009058.nfilter1,tp,LOCATION_DECK,0,1,nil,c) + and (c511009058.collection[c:GetCode()] or c:IsSetCard(0x202)) +end +function c511009058.nfilter1(c,tc) + return c:IsCode(tc:GetCode()) and c:IsAbleToHand() +end +function c511009058.nfilter2(c,tc) + return c:IsCode(tc:GetPreviousCodeOnField()) and c:IsAbleToHand() +end +function c511009058.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009058.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511009058.filter,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511009058.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511009058.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.BreakEffect() + local g=Duel.SelectMatchingCard(tp,c511009058.nfilter2,tp,LOCATION_DECK,0,1,1,nil,tc) + local hc=g:GetFirst() + if hc then + Duel.SendtoHand(hc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,hc) + end + end +end diff --git a/script/c511009059.lua b/script/c511009059.lua new file mode 100644 index 00000000..8836feea --- /dev/null +++ b/script/c511009059.lua @@ -0,0 +1,52 @@ +--White Mirror +function c511009059.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009059.target) + e1:SetOperation(c511009059.activate) + c:RegisterEffect(e1) +end +--White monster collection +c511009059.collection={ + [1571945]=true;[3557275]=true;[9433350]=true;[13429800]=true; + [15150365]=true;[20193924]=true;[24644634]=true;[32269855]=true; + [38517737]=true;[73398797]=true;[73891874]=true;[79473793]=true; + [79814787]=true;[89631139]=true;[92409659]=true;[98024118]=true; + [22804410]=true;[71039903]=true;[84812868]=true; + [501000016]=true; + [511002341]=true; + [511001977]=true;[511001978]=true;[511001979]=true;[511001980]=true; + [511001090]=true;[511001091]=true; +} +function c511009059.filter(c,e,tp) + return (c511009059.collection[c:GetCode()] or c:IsSetCard(0x202)) and Duel.IsExistingMatchingCard(c511009059.thfil,tp,LOCATION_DECK,0,1,nil,c:GetCode()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009059.spfilter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009059.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c:IsControler(tp) and c83764718.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511009059.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511009059.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511009059.thfil(c,code) + return c:IsCode(code) and c:IsAbleToHand() +end +function c511009059.activate(e,tp,eg,ep,ev,re,r,rp) +local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + if Duel.IsExistingMatchingCard(c511009059.thfil,tp,LOCATION_DECK,0,1,nil,tc:GetCode()) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009059.thfil,tp,LOCATION_DECK,0,1,1,nil,tc:GetCode()) + Duel.SendtoHand(g,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c511009060.lua b/script/c511009060.lua new file mode 100644 index 00000000..30ca0c34 --- /dev/null +++ b/script/c511009060.lua @@ -0,0 +1,41 @@ +--White Prosperity +function c511009060.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511009060.target) + e1:SetOperation(c511009060.operation) + c:RegisterEffect(e1) +end +--White monster collection +c511009060.collection={ + [1571945]=true;[3557275]=true;[9433350]=true;[13429800]=true; + [15150365]=true;[20193924]=true;[24644634]=true;[32269855]=true; + [38517737]=true;[73398797]=true;[73891874]=true;[79473793]=true; + [79814787]=true;[89631139]=true;[92409659]=true;[98024118]=true; + [22804410]=true;[71039903]=true;[84812868]=true; + [501000016]=true; + [511002341]=true; + [511001977]=true;[511001978]=true;[511001979]=true;[511001980]=true; + [511001090]=true;[511001091]=true; + [95100846]=true;[95100847]=true; +} +function c511009060.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and (c511009060.collection[c:GetCode()] or c:IsSetCard(0x202)) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_HAND,0,1,c,c:GetCode()) and c:IsLevelBelow(4) +end +function c511009060.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511009060.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c511009060.filter,tp,LOCATION_HAND,0,2,nil,e,tp) end +end +function c511009060.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c511009060.filter,tp,LOCATION_HAND,0,2,2,nil,e,tp) + if tc:GetCount()~=2 then return end + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) +end \ No newline at end of file diff --git a/script/c511009061.lua b/script/c511009061.lua new file mode 100644 index 00000000..5af1ba5e --- /dev/null +++ b/script/c511009061.lua @@ -0,0 +1,50 @@ +--Jumbo Drill (anime) +function c511009061.initial_effect(c) + --to defence + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511009061.poscon) + e1:SetOperation(c511009061.posop) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c511009061.val) + c:RegisterEffect(e3) +end +-- Heavy Industry Collection +c511009061.collection={ +[42851643]=true;[29515122]=true;[13647631]=true;[511002686]=true;[511002687]=true; +} +function c511009061.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetAttackedCount()>0 +end +function c511009061.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsAttackPos() then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,3) + c:RegisterEffect(e1) +end +function c511009061.val(e,c) + return Duel.GetMatchingGroupCount(c511009061.filter,c:GetControler(),LOCATION_MZONE,0,nil)*300 +end +function c511009061.filter(c) + return c:IsFaceup() and c511009061.collection[c:GetCode()] +end \ No newline at end of file diff --git a/script/c511009062.lua b/script/c511009062.lua new file mode 100644 index 00000000..990fa9cf --- /dev/null +++ b/script/c511009062.lua @@ -0,0 +1,43 @@ +--Heavy-Armored Train Iron Wolf +function c511009062.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),4,2) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(12533811,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511009062.condition) + e1:SetCost(c511009062.cost) + e1:SetTarget(c511009062.target) + e1:SetOperation(c511009062.operation) + c:RegisterEffect(e1) +end +function c511009062.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c511009062.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511009062.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:GetEffectCount(EFFECT_DIRECT_ATTACK)==0 +end +function c511009062.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511009062.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009062.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009062.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009062.operation(e,tp,eg,ep,ev,re,r,rp,chk) + 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_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009063.lua b/script/c511009063.lua new file mode 100644 index 00000000..c7ce365a --- /dev/null +++ b/script/c511009063.lua @@ -0,0 +1,28 @@ +--Spirit Summit Warrior +function c511009063.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(15871676,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511009063.sptg) + e1:SetOperation(c511009063.spop) + c:RegisterEffect(e1) +end +function c511009063.filter(c,e,tp) + return c:IsRace(RACE_WARRIOR) and c:GetLevel()==3 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009063.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009063.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511009063.spop(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,c511009063.filter,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 diff --git a/script/c511009064.lua b/script/c511009064.lua new file mode 100644 index 00000000..8349f742 --- /dev/null +++ b/script/c511009064.lua @@ -0,0 +1,41 @@ +--Superheavy Samurai Trumpeteer +function c511009064.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67757079,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCost(c511009064.spcost) + e1:SetCondition(c511009064.spcon) + e1:SetTarget(c511009064.sptg) + e1:SetOperation(c511009064.spop) + c:RegisterEffect(e1) +end +function c511009064.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511009064.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and not Duel.IsExistingMatchingCard(c511009064.filter,tp,LOCATION_GRAVE,0,1,nil) +end +function c511009064.cfilter(c) + return c:IsSetCard(0x9a) and c:IsAbleToGraveAsCost() +end +function c511009064.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009064.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511009064.cfilter,1,1,REASON_COST) +end +function c511009064.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511009064.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009065.lua b/script/c511009065.lua new file mode 100644 index 00000000..e38a850c --- /dev/null +++ b/script/c511009065.lua @@ -0,0 +1,58 @@ +--Superheavy Samurai Ninja Sarutobi +function c511009065.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --add setcode + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_ADD_SETCODE) + e1:SetValue(0x9a) + c:RegisterEffect(e1) + + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(96029574,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511009065.destg) + e2:SetCondition(c511009065.descon) + e2:SetOperation(c511009065.desop) + c:RegisterEffect(e2) + + --defence attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DEFENSE_ATTACK) + e3:SetValue(1) + c:RegisterEffect(e3) +end + +function c511009065.cfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511009065.descon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c511009065.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c511009065.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511009065.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c511009065.filter2(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c511009065.filter2,tp,0,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511009065.filter2,tp,0,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511009065.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local p=tc:GetControler() + if Duel.Destroy(tc,REASON_EFFECT)==0 then return end + Duel.Damage(p,500,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511009066.lua b/script/c511009066.lua new file mode 100644 index 00000000..21054dec --- /dev/null +++ b/script/c511009066.lua @@ -0,0 +1,56 @@ +--Abyss Actor Wild Hope +function c511009066.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(41546,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c511009066.sptg) + e3:SetOperation(c511009066.spop) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(67808837,0)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_DESTROYED) + e4:SetTarget(c511009066.sptg2) + e4:SetOperation(c511009066.spop2) + c:RegisterEffect(e4) +end + +function c511009066.thfilter1(c) + return c:IsSetCard(0x10ec) and c:IsFaceup() and c:IsAbleToHand() +end +function c511009066.thfilter2(c) + return c:IsSetCard(0x10ec) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511009066.sptg(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return Duel.IsExistingMatchingCard(c511009066.thfilter1,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_EXTRA) +end +function c511009066.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009066.thfilter1,tp,LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c511009066.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return Duel.IsExistingMatchingCard(c511009066.thfilter2,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511009066.spop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009066.thfilter2,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511009067.lua b/script/c511009067.lua new file mode 100644 index 00000000..2104de02 --- /dev/null +++ b/script/c511009067.lua @@ -0,0 +1,133 @@ +--Wings of the Supreme King +function c511009067.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(c511009067.target) + e1:SetOperation(c511009067.operation) + c:RegisterEffect(e1) + --cannot be destroyed (monster) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(1) + c:RegisterEffect(e2) + --cannot be destroyed + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetValue(1) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511009067.eqlimit) + c:RegisterEffect(e4) + --damage + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BATTLE_DESTROYING) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c511009067.damcon) + e5:SetCost(c511009067.damcost) + e5:SetTarget(c511009067.damtg) + e5:SetOperation(c511009067.damop) + c:RegisterEffect(e5) + --destroy + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e6:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e6:SetCode(EVENT_LEAVE_FIELD) + e6:SetCondition(c511009067.descon) + e6:SetTarget(c511009067.destg) + e6:SetOperation(c511009067.desop) + c:RegisterEffect(e6) + --disable summon + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetRange(LOCATION_SZONE) + e7:SetCode(EFFECT_CANNOT_SUMMON) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e7:SetTargetRange(1,0) + c:RegisterEffect(e7) + local e8=e7:Clone() + e8:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + c:RegisterEffect(e8) +end +function c511009067.eqlimit(e,c) + return c:IsRace(RACE_DRAGON) and c:GetSummonLocation()==LOCATION_EXTRA +end +function c511009067.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:GetSummonLocation()==LOCATION_EXTRA +end +function c511009067.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009067.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009067.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511009067.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511009067.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 c511009067.damcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + return e:GetHandler():GetEquipTarget()==ec and ec:IsControler(tp) + and bc:GetPreviousControler()==1-tp and bc:IsReason(REASON_BATTLE) +end +function c511009067.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511009067)==0 end + e:GetHandler():RegisterFlagEffect(511009067,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) +end +function c511009067.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ec=e:GetHandler():GetEquipTarget() + local bc=ec:GetBattleTarget() + local dam=bc:GetPreviousAttackOnField() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511009067.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511009067.descon(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 c511009067.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=e:GetHandler():GetPreviousEquipTarget() + local rc=ec:GetReasonCard() + if chk==0 then return rc and rc:IsDestructable() end + Duel.SetTargetCard(rc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,rc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,rc:GetAttack()) +end +function c511009067.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if atk<0 or tc:IsFacedown() then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c511009068.lua b/script/c511009068.lua new file mode 100644 index 00000000..753a1d54 --- /dev/null +++ b/script/c511009068.lua @@ -0,0 +1,57 @@ +--Abyss Script - Abode of the Fire Dragon +function c511009068.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009068.target) + e1:SetOperation(c511009068.activate) + c:RegisterEffect(e1) +end +function c511009068.filter(c) + return c:IsFaceup() and c:IsSetCard(0x10ec) +end +function c511009068.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009068.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009068.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009068.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511009068.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + --damage + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(100000210,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c511009068.condition) + e2:SetTarget(c511009068.target2) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetOperation(c511009068.operation) + tc:RegisterEffect(e2) + end +end +function c511009068.rmfilter(c) + return c:IsAbleToRemove() +end +function c511009068.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c511009068.target2(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) + if chk==0 then return g:FilterCount(c511009068.rmfilter,nil)>=3 end +end +function c511009068.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) + if g:GetCount()<3 then return end + Duel.ConfirmCards(tp,g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=Duel.SelectMatchingCard(tp,Card.IsAbleToGrave,tp,0,LOCATION_EXTRA,3,3,nil) + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511009070.lua b/script/c511009070.lua new file mode 100644 index 00000000..bcf0102b --- /dev/null +++ b/script/c511009070.lua @@ -0,0 +1,45 @@ +--Full Throttle Soul +function c511009070.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_PUBLIC) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511009070.con) + e2:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + c:RegisterEffect(e2) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c511009070.descon) + e4:SetTarget(c511009070.destg) + e4:SetOperation(c511009070.desop) + c:RegisterEffect(e4) +end +function c511009070.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009070.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c511009070.filter(c) + return c:IsFaceup() and c:IsSetCard(0x21c) +end + +function c511009070.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return not c:IsLocation(LOCATION_DECK) +end +function c511009070.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009070.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511009071.lua b/script/c511009071.lua new file mode 100644 index 00000000..5b98ff4b --- /dev/null +++ b/script/c511009071.lua @@ -0,0 +1,39 @@ +--Cyber Angel - Vishnu +function c511009071.initial_effect(c) + c:EnableReviveLimit() + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511009071.destg) + e2:SetOperation(c511009071.desop) + c:RegisterEffect(e2) +end + + +function c511009071.desfilter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsDestructable() +end +function c511009071.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c511009071.desfilter,tp,0,LOCATION_MZONE,nil) + if chk==0 then return g:GetCount()>0 end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*1000) +end +function c511009071.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009071.desfilter,tp,0,LOCATION_MZONE,nil) + + local g=Duel.GetMatchingGroup(c511009071.desfilter,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) + if Duel.Damage(1-tp,ct*1000,REASON_EFFECT)~=0 then + local c=e:GetHandler() + local atk=ct-1 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c511009072.lua b/script/c511009072.lua new file mode 100644 index 00000000..907b919f --- /dev/null +++ b/script/c511009072.lua @@ -0,0 +1,36 @@ +--Performapal Wim Witch +function c511009072.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCondition(c511009072.spcon) + e1:SetTarget(c511009072.sptg) + e1:SetOperation(c511009072.spop) + c:RegisterEffect(e1) + --double tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DOUBLE_TRIBUTE) + e2:SetValue(c511009072.condition) + c:RegisterEffect(e2) +end +function c511009072.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c511009072.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511009072.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511009072.condition(e,c) + return c:IsType(TYPE_PENDULUM) +end diff --git a/script/c511009073.lua b/script/c511009073.lua new file mode 100644 index 00000000..1a878aae --- /dev/null +++ b/script/c511009073.lua @@ -0,0 +1,93 @@ +--Descend Dragon Magician +function c511009073.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --lv up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(54936498,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_PZONE) + e1:SetTarget(c511009073.tg) + e1:SetOperation(c511009073.op) + c:RegisterEffect(e1) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(54936498,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetOperation(c511009073.operation) + c:RegisterEffect(e1) + --effect gain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c511009073.efcon) + e1:SetOperation(c511009073.efop) + c:RegisterEffect(e1) +end +function c511009073.filter(c) + return c:IsFaceup() and not c:IsRace(RACE_DRAGON) +end +function c511009073.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009073.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009073.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511009073.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009073.op(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_CHANGE_RACE) + e1:SetValue(RACE_DRAGON) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end + +function c511009073.operation(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:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(RACE_DRAGON) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end + +function c511009073.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c511009073.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetCondition(c511009073.atkcon) + e3:SetValue(rc:GetAttack()*2) + rc:RegisterEffect(e3) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c511009073.atkcon(e) + local ph=Duel.GetCurrentPhase() + local bc=e:GetHandler():GetBattleTarget() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and bc and bc:IsRace(RACE_DRAGON) +end \ No newline at end of file diff --git a/script/c511009074.lua b/script/c511009074.lua new file mode 100644 index 00000000..498f593c --- /dev/null +++ b/script/c511009074.lua @@ -0,0 +1,103 @@ +--Dark Requiem Xyz Dragon +function c511009074.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,2) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000675,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511009074.cost) + e1:SetCondition(c511009074.con) + e1:SetTarget(c511009074.target) + e1:SetOperation(c511009074.operation) + c:RegisterEffect(e1) + + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(24696097,1)) + e2:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511009074.cost) + e2:SetCondition(c511009074.discon) + e2:SetTarget(c511009074.distg) + e2:SetOperation(c511009074.disop) + c:RegisterEffect(e2) +end +function c511009074.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511009074.filter(c) + return c:IsFaceup() and c:IsLevelAbove(5) +end +function c511009074.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,16195942) +end +function c511009074.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(c511009074.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009074.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511009074.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 not tc:IsImmuneToEffect(e) then + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(0) + tc:RegisterEffect(e1) + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(tc:GetBaseAttack()) + c:RegisterEffect(e2) + end + end +end + + + +function c511009074.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end + if re:IsHasCategory(CATEGORY_NEGATE) + and Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0 + and e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,16195942) +end +function c511009074.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009074.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511009074.spfilter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009074.disop(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 tc=Duel.SelectMatchingCard(tp,c511009074.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp):GetFirst() + if tc then + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) ~=0 then + Duel.NegateEffect(ev) + end + end +end diff --git a/script/c511009075.lua b/script/c511009075.lua new file mode 100644 index 00000000..65e11316 --- /dev/null +++ b/script/c511009075.lua @@ -0,0 +1,28 @@ +--Synchro gazer +function c511009075.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetCost(c511009075.cost) + e1:SetTarget(c511009075.target) + e1:SetOperation(c511009075.operation) + c:RegisterEffect(e1) +end +function c511009075.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsType,1,nil,TYPE_SYNCHRO) end + local g=Duel.SelectReleaseGroup(tp,Card.IsType,1,1,nil,TYPE_SYNCHRO) + Duel.Release(g,REASON_COST) +end +function c511009075.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511009075.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,0,LOCATION_MZONE,nil) + local dam=Duel.ChangePosition(g,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) + Duel.Damage(1-tp,dam*200,REASON_EFFECT) +end diff --git a/script/c511009076.lua b/script/c511009076.lua new file mode 100644 index 00000000..d9b66ac2 --- /dev/null +++ b/script/c511009076.lua @@ -0,0 +1,30 @@ +--Final Tombstone +function c511009076.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009076.condition) + e1:SetTarget(c511009076.target) + e1:SetOperation(c511009076.activate) + c:RegisterEffect(e1) +end +function c511009076.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=1000 and Duel.GetLP(1-tp)<=1000 +end +function c511009076.filter(c) + return c:GetControler()~=c:GetOwner() +end +function c511009076.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(Card.IsDiscardable,tp,LOCATION_HAND,LOCATION_HAND,nil) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,LOCATION_HAND)==g:GetCount() end + Duel.SetTargetPlayer(PLAYER_ALL) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,PLAYER_ALL,g:GetCount()) +end +function c511009076.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,LOCATION_HAND) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_DISCARD+REASON_EFFECT) + end +end diff --git a/script/c511009077.lua b/script/c511009077.lua new file mode 100644 index 00000000..f09b6964 --- /dev/null +++ b/script/c511009077.lua @@ -0,0 +1,54 @@ +--Performapal Allcover Hippo +function c511009077.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(96606246,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511009077.sptg) + e1:SetOperation(c511009077.spop) + c:RegisterEffect(e1) + + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(47829960,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511009077.target) + e2:SetOperation(c511009077.operation) + c:RegisterEffect(e2) +end +function c511009077.filter(c,e,tp) + return c:IsSetCard(0x9f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + +end +function c511009077.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009077.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511009077.spop(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,c511009077.filter,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 c511009077.posfilter(c) + return c:IsFaceup() and c:IsAttackPos() +end +function c511009077.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511009077.posfilter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(c511009077.posfilter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c511009077.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009077.posfilter,tp,LOCATION_MZONE,0,nil) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) +end diff --git a/script/c511009078.lua b/script/c511009078.lua new file mode 100644 index 00000000..74ba3eb7 --- /dev/null +++ b/script/c511009078.lua @@ -0,0 +1,43 @@ + --Overlay Breast Armor +function c511009078.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + + --destroy replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c511009078.reptg) + e3:SetValue(c511009078.repval) + e3:SetOperation(c511009078.repop) + c:RegisterEffect(e3) +end + + +-------------------------------------------- +function c511009078.repfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsReason(REASON_BATTLE) and c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0xba) and c:CheckRemoveOverlayCard(tp,1,REASON_EFFECT) +end +function c511009078.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511009078.repfilter,1,nil,tp) end + if Duel.SelectYesNo(tp,aux.Stringid(25341652,1)) then + local g=eg:Filter(c511009078.repfilter,nil,tp) + Duel.SetTargetCard(g) + return true + else return false end +end +function c511009078.repval(e,c) + return c511009078.repfilter(c,e:GetHandlerPlayer()) +end +function c511009078.repop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=g:GetFirst() + while tc do + tc:RemoveOverlayCard(tp,1,1,REASON_EFFECT) + tc=g:GetNext() + end +end + diff --git a/script/c511009079.lua b/script/c511009079.lua new file mode 100644 index 00000000..72c015a6 --- /dev/null +++ b/script/c511009079.lua @@ -0,0 +1,71 @@ +--Raptor's Intercept Form +--fixed by MLD +function c511009079.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --swap + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(67547370,1)) + e5:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e5:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e5:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1) + e5:SetCondition(c511009079.atkcon) + e5:SetOperation(c511009079.atkop) + c:RegisterEffect(e5) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(11819616,0)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511009079.discon) + e2:SetTarget(c511009079.distg) + e2:SetOperation(c511009079.disop) + c:RegisterEffect(e2) +end +function c511009079.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a and d:IsFaceup() and d:IsSetCard(0xba) and d:IsRelateToBattle() and bit.band(d:GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ + and not e:GetHandler():IsStatus(STATUS_CHAINING) and d:IsControler(tp) +end +function c511009079.atkop(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not e:GetHandler():IsRelateToEffect(e) or not a or not d or not d:IsRelateToBattle() or d:IsFacedown() then return end + local atk=d:GetAttack() + local def=d:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SWAP_ATTACK_FINAL) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + d:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SWAP_DEFENSE_FINAL) + e2:SetValue(atk) + d:RegisterEffect(e2) +end +function c511009079.filter(c,tp) + return c:IsFaceup() and bit.band(c:GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ and c:IsSetCard(0xba) + and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) +end +function c511009079.discon(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsExists(c511009079.filter,1,nil,tp) and Duel.IsChainDisablable(ev) +end +function c511009079.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511009079.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c511009080.lua b/script/c511009080.lua new file mode 100644 index 00000000..a43a3cbd --- /dev/null +++ b/script/c511009080.lua @@ -0,0 +1,46 @@ +--Ancient Gear Double Imitate +function c511009080.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009080.target) + e1:SetOperation(c511009080.operation) + c:RegisterEffect(e1) +end +function c511009080.filter(c,e,tp) + return c:IsSetCard(0x7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511009080.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009080.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511009080.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local c=e:GetHandler() + if ft>2 then ft=2 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009080.filter,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511009081.lua b/script/c511009081.lua new file mode 100644 index 00000000..7b70e6b6 --- /dev/null +++ b/script/c511009081.lua @@ -0,0 +1,38 @@ +--Abyss Costume - Sword of the Valiant +function c511009081.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(c511009081.target) + e1:SetOperation(c511009081.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + 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 c511009081.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 c511009081.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 \ No newline at end of file diff --git a/script/c511009082.lua b/script/c511009082.lua new file mode 100644 index 00000000..2d42066a --- /dev/null +++ b/script/c511009082.lua @@ -0,0 +1,38 @@ +--Abyss Costume - Shield of the Dwarf +function c511009082.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(c511009082.target) + e1:SetOperation(c511009082.operation) + c:RegisterEffect(e1) + --DEF up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(300) + 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 c511009082.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 c511009082.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 \ No newline at end of file diff --git a/script/c511009083.lua b/script/c511009083.lua new file mode 100644 index 00000000..6035485f --- /dev/null +++ b/script/c511009083.lua @@ -0,0 +1,52 @@ +--Costume Box of Abyss Actor +function c511009083.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c511009083.target) + e3:SetOperation(c511009083.operation) + c:RegisterEffect(e3) +end +function c511009083.cfilter(c) + return c:IsFaceup() +end +function c511009083.filter2(c) + return c:IsSetCard(0x420e) +end +function c511009083.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511009083.cfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511009083.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c511009083.filter2,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009083.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511009083.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local sg=Duel.SelectMatchingCard(tp,c511009083.filter2,tp,LOCATION_DECK,0,1,1,nil) + local sc=sg:GetFirst() + if sc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + if not Duel.Equip(tp,sc,tc,true) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511009083.eqlimit) + e1:SetLabelObject(tc) + sc:RegisterEffect(e1) + end +end +function c511009083.eqlimit(e,c) + return e:GetLabelObject()==c +end diff --git a/script/c511009084.lua b/script/c511009084.lua new file mode 100644 index 00000000..17760c06 --- /dev/null +++ b/script/c511009084.lua @@ -0,0 +1,95 @@ +--Double Exposure +function c511009084.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(95100770,0)) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_SZONE) + e4:SetCost(c511009084.cost) + e4:SetTarget(c511009084.tg1) + e4:SetOperation(c511009084.op1) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(97567736,1)) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_FREE_CHAIN) + e5:SetRange(LOCATION_SZONE) + e5:SetCost(c511009084.cost) + e5:SetTarget(c511009084.tg2) + e5:SetOperation(c511009084.op2) + c:RegisterEffect(e5) +end +function c511009084.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511009084)==0 end + e:GetHandler():RegisterFlagEffect(511009084,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511009084.filter1(c,tp) + return c:IsFaceup() and Duel.IsExistingTarget(c511009084.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,c:GetCode()) and c:IsLevelBelow(6) +end +function c511009084.filter2(c,code) + return c:IsFaceup() and c:IsCode(code) and c:IsLevelBelow(6) +end +function c511009084.tg1(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(c511009084.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c511009084.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009084.filter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst(),g1:GetFirst():GetCode()) +end +function c511009084.op1(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc1=g:GetFirst() + local tc2=g:GetNext() + if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) and tc2:IsFaceup() then + local lv=tc1:GetLevel()+tc2:GetLevel() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL_FINAL) + e1:SetValue(tc1:GetLevel()*2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc1:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_LEVEL_FINAL) + e2:SetValue(tc2:GetLevel()*2) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e2) + end +end +function c511009084.filterB1(c,tp) + return c:IsFaceup() and Duel.IsExistingTarget(c511009084.filterB2,c:GetControler(),LOCATION_MZONE,0,1,c,c:GetCode()) +end +function c511009084.filterB2(c,code) + return c:IsFaceup() and not c:IsCode(code) +end +function c511009084.tg2(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(c511009084.filterB1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectTarget(tp,c511009084.filterB1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009084.filterB2,g1:GetFirst():GetControler(),LOCATION_MZONE,0,1,1,g1:GetFirst(),g1:GetFirst():GetCode()) +end +function c511009084.op2(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc1=g:GetFirst() + local tc2=g:GetNext() + if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) and tc2:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc1:GetCode()) + tc2:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511009085.lua b/script/c511009085.lua new file mode 100644 index 00000000..1d8263e6 --- /dev/null +++ b/script/c511009085.lua @@ -0,0 +1,48 @@ +--Double Sensor Ship +function c511009085.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetLabel(3) + e1:SetOperation(c511009085.op) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000202,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetLabelObject(e1) + e2:SetCondition(c511009085.condition) + e2:SetTarget(c511009085.target) + e2:SetOperation(c511009085.operation) + c:RegisterEffect(e2) +end +function c511009085.op(e,tp,eg,ep,ev,re,r,rp) + if tp~=Duel.GetTurnPlayer() and Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) then + local tg=Duel.GetAttacker() + if Duel.IsExistingMatchingCard(c511009085.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,tg,tg:GetCode()) then + if Duel.SelectYesNo(tp,aux.Stringid(511000202,0)) then + e:GetHandler():RegisterFlagEffect(95100771,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.NegateAttack() + end + end + end +end +function c511009085.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511009085.filter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511009085.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return e:GetHandler():GetFlagEffect(95100771)==0 and tg:IsOnField() and tg:IsCanBeEffectTarget(e) and Duel.IsExistingMatchingCard(c511009085.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,tg,tg:GetCode()) end + Duel.SetTargetCard(tg) + e:GetHandler():RegisterFlagEffect(95100771,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511009085.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511009086.lua b/script/c511009086.lua new file mode 100644 index 00000000..eb398220 --- /dev/null +++ b/script/c511009086.lua @@ -0,0 +1,40 @@ +--Double Cipher +function c511009086.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009086.target) + e1:SetOperation(c511009086.operation) + c:RegisterEffect(e1) +end +function c511009086.filter1(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()>0 and c:IsCode(18963306) +end +function c511009086.filter2(c) + return c:IsCode(18963306) +end +function c511009086.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511009086.filter1,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c511009086.filter1,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g1=Duel.SelectTarget(tp,c511009086.filter1,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511009086.filter2,tp,LOCATION_EXTRA,0,1,1,nil) +end +function c511009086.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc1=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc2=g:GetFirst() + if tc1==tc2 then tc2=g:GetNext() end + if tc1:IsFacedown() or not tc1:IsRelateToEffect(e) then return end + local og=tc1:GetOverlayGroup() + if og:GetCount()==0 then return end + if Duel.SendtoGrave(og,REASON_EFFECT)~=0 then + Duel.SpecialSummon(tc2,0,tp,tp,true,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511009087.lua b/script/c511009087.lua new file mode 100644 index 00000000..11405c3e --- /dev/null +++ b/script/c511009087.lua @@ -0,0 +1,32 @@ +--Rising Rush +function c511009087.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c511009087.con) + e1:SetTarget(c511009087.tg) + e1:SetOperation(c511009087.op) + c:RegisterEffect(e1) +end +function c511009087.con(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and bit.band(r,REASON_EFFECT)~=0 +end +function c511009087.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009087.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009087.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511009087.op(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,c511009087.filter,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 diff --git a/script/c511009088.lua b/script/c511009088.lua new file mode 100644 index 00000000..66430b69 --- /dev/null +++ b/script/c511009088.lua @@ -0,0 +1,59 @@ +--Fortissimo the mobile fortress (anime) +function c511009088.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000084,2)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e2:SetCountLimit(1) + e2:SetCondition(c511009088.spcon) + e2:SetTarget(c511009088.sptg) + e2:SetOperation(c511009088.spop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511009088.damcon2) + e3:SetOperation(c511009088.damop2) + c:RegisterEffect(e3) +end +function c511009088.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009088.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511009088.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009088.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511009088.spop(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,c511009088.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 c511009088.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c511009088.damcon2(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c511009088.cfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,1,nil) +end +function c511009088.damop2(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetTurnPlayer() + Duel.Hint(HINT_CARD,0,95100782) + Duel.Damage(p,100,REASON_EFFECT) +end diff --git a/script/c511009089.lua b/script/c511009089.lua new file mode 100644 index 00000000..62165a51 --- /dev/null +++ b/script/c511009089.lua @@ -0,0 +1,37 @@ +--Expressroid (anime) +function c511009089.initial_effect(c) + --salvage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(984114,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c511009089.target) + e1:SetOperation(c511009089.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511009089.filter(c) + return c:IsRace(RACE_MACHINE) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511009089.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511009089.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009089.filter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511009089.filter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,2,0,0) +end +function c511009089.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c511009090.lua b/script/c511009090.lua new file mode 100644 index 00000000..f8070993 --- /dev/null +++ b/script/c511009090.lua @@ -0,0 +1,32 @@ +--Offerings to the Bound Deity +function c511009090.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009090.cost) + e1:SetTarget(c511009090.target) + e1:SetOperation(c511009090.activate) + c:RegisterEffect(e1) +end +function c511009090.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511009090.filter(c) + return c:IsCode(100000432) and c:IsFaceup() +end +function c511009090.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009090.filter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0x94,2) +end +function c511009090.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c511009090.filter,tp,LOCATION_ONFIELD,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + tc:AddCounter(0x94,2) + end +end diff --git a/script/c511009091.lua b/script/c511009091.lua new file mode 100644 index 00000000..c48a8f04 --- /dev/null +++ b/script/c511009091.lua @@ -0,0 +1,82 @@ +--D/D Savant Thomas (anime) +function c511009091.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Back to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41546,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511009091.thtg) + e1:SetOperation(c511009091.thop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(41546,1)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,41546) + e2:SetTarget(c511009091.sptg) + e2:SetOperation(c511009091.spop) + c:RegisterEffect(e2) +end + +function c511009091.thfil(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c511009091.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009091.thfil,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c511009091.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009091.thfil,tp,LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end + +function c511009091.spcfil(c) + local seq=c:GetSequence() + return c:IsSetCard(0xaf) and (seq==6 or seq==7) and c:IsDestructable() +end +function c511009091.spfil(c,e,tp) + return c:IsSetCard(0x10af) and c:GetLevel()==8 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009091.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c511009091.spcfil(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c511009091.spcfil,tp,LOCATION_SZONE,0,1,nil) and Duel.IsExistingMatchingCard(c511009091.spfil,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511009091.spcfil,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511009091.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009091.spfil,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local sc=g:GetFirst() + if sc and Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sc:RegisterEffect(e2) + + Duel.RegisterEffect(e3,tp) + Duel.SpecialSummonComplete() + end + end +end diff --git a/script/c511009092.lua b/script/c511009092.lua new file mode 100644 index 00000000..3d4c2892 --- /dev/null +++ b/script/c511009092.lua @@ -0,0 +1,33 @@ +--Amazoness Substitution +function c511009092.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511009092.condition) + e1:SetTarget(c511009092.target) + e1:SetOperation(c511009092.activate) + c:RegisterEffect(e1) +end +function c511009092.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsSetCard(0x4) +end +function c511009092.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009092.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009092.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_HAND) +end +function c511009092.activate(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 tc=Duel.SelectMatchingCard(tp,c511009092.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c511009093.lua b/script/c511009093.lua new file mode 100644 index 00000000..3089af53 --- /dev/null +++ b/script/c511009093.lua @@ -0,0 +1,61 @@ +--Cipher Diffusion +function c511009093.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009093.target) + e1:SetOperation(c511009093.activate) + c:RegisterEffect(e1) +end +function c511009093.filter1(c) + return c:IsFaceup() and c:GetAttack()>=3000 and c:IsSetCard(0xe5) +end +function c511009093.filter2(c) + return c:IsFaceup() and c:IsSetCard(0xe5) +end +function c511009093.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511009093.filter1,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c511009093.filter1,tp,LOCATION_MZONE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,0)) + local g1=Duel.SelectTarget(tp,c511009093.filter1,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,1)) + local g2=Duel.SelectTarget(tp,c511009093.filter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) + e:SetLabelObject(g1:GetFirst()) + + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetProperty(EFFECT_FLAG_OATH) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511009093.ftarget) + e2:SetLabel(g2:GetFirst():GetFieldID()) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c511009093.activate(e,tp,eg,ep,ev,re,r,rp) + local tc1=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc2=g:GetFirst() + if tc1==tc2 then tc2=g:GetNext() end + if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) and tc2:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc2:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(0) + tc1:RegisterEffect(e2) + end +end +function c511009093.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end \ No newline at end of file diff --git a/script/c511009094.lua b/script/c511009094.lua new file mode 100644 index 00000000..9496a397 --- /dev/null +++ b/script/c511009094.lua @@ -0,0 +1,44 @@ +--Demise Urban +function c511009094.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --negate attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(22991179,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCondition(c511009094.condition) + e2:SetCountLimit(1) + e2:SetTarget(c511009094.target) + e2:SetOperation(c511009094.activate) + c:RegisterEffect(e2) +end +function c511009094.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511009094.filter(c) + return c:IsFaceup() and c:IsSetCard(0xc008) +end +function c511009094.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009094.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009094.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009094.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009094.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(100) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009095.lua b/script/c511009095.lua new file mode 100644 index 00000000..94dba199 --- /dev/null +++ b/script/c511009095.lua @@ -0,0 +1,91 @@ +--Clear Wing Fast Dragon (Anime) +function c511009095.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(6144,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1,6144) + e1:SetCost(c511009095.spcost) + e1:SetTarget(c511009095.sptg) + e1:SetOperation(c511009095.spop) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(15240238,0)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511009095.target) + e2:SetOperation(c511009095.operation) + c:RegisterEffect(e2) +end + +function c511009095.spcfil1(c,tp) + return c:IsFaceup() and c:IsSetCard(0x2016) and c:IsType(TYPE_TUNER) and c:IsLevelBelow(6) and c:IsAbleToGraveAsCost() and Duel.IsExistingMatchingCard(c511009095.spcfil2,tp,LOCATION_MZONE,0,1,c,c:GetLevel()) +end +function c511009095.spcfil2(c,lv) + return c:IsFaceup() and not c:IsType(TYPE_TUNER) and c:IsAbleToGraveAsCost() and c:GetLevel()+lv==7 +end +function c511009095.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009095.spcfil1,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c511009095.spcfil1,tp,LOCATION_MZONE,0,1,1,nil,tp) + local tc1=g1:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c511009095.spcfil2,tp,LOCATION_MZONE,0,1,1,tc1,tc1:GetLevel()) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) +end +function c511009095.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511009095.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511009095.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c511009095.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511009095.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009095.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511009095.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511009095.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:GetAttack()>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end diff --git a/script/c511009096.lua b/script/c511009096.lua new file mode 100644 index 00000000..76ee2076 --- /dev/null +++ b/script/c511009096.lua @@ -0,0 +1,17 @@ +--Speedroid Passinglider +function c511009096.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75498415,0)) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511009096.ntcon) + c:RegisterEffect(e1) +end +function c511009096.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)==0 +end diff --git a/script/c511009098.lua b/script/c511009098.lua new file mode 100644 index 00000000..f19ec8f6 --- /dev/null +++ b/script/c511009098.lua @@ -0,0 +1,28 @@ +--Transistor the Warrior +function c511009098.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30190809,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511009098.condition) + e1:SetCost(c511009098.cost) + e1:SetOperation(c511009098.operation) + c:RegisterEffect(e1) +end +function c511009098.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 and e:GetHandler():GetEffectCount(EFFECT_DIRECT_ATTACK)==0 +end +function c511009098.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,e:GetHandler()) end + local g=Duel.SelectReleaseGroup(tp,nil,1,1,e:GetHandler()) + Duel.Release(g,REASON_COST) +end +function c511009098.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511009099.lua b/script/c511009099.lua new file mode 100644 index 00000000..2dc1ed89 --- /dev/null +++ b/script/c511009099.lua @@ -0,0 +1,26 @@ +--ダーク・グレファー +function c511009099.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14536035,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511009099.spcon) + e1:SetOperation(c511009099.spop) + c:RegisterEffect(e1) +end +function c511009099.spfilter(c) + return c:IsRace(RACE_WARRIOR) +end +function c511009099.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c511009099.spfilter,c:GetControler(),LOCATION_HAND,0,1,c) +end +function c511009099.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,c511009099.spfilter,tp,LOCATION_HAND,0,1,1,c) + Duel.SendtoGrave(g,REASON_DISCARD+REASON_COST) +end \ No newline at end of file diff --git a/script/c511009100.lua b/script/c511009100.lua new file mode 100644 index 00000000..60269e4c --- /dev/null +++ b/script/c511009100.lua @@ -0,0 +1,32 @@ +--Chamelele Leon +function c511009100.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(24103628,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511009100.condition) + e1:SetTarget(c511009100.target) + e1:SetOperation(c511009100.operation) + c:RegisterEffect(e1) +end +function c511009100.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511009100.filter(c,e,tp) + return c:IsAttackBelow(1000) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009100.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009100.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511009100.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,c511009100.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511009101.lua b/script/c511009101.lua new file mode 100644 index 00000000..6dae06ec --- /dev/null +++ b/script/c511009101.lua @@ -0,0 +1,36 @@ +--Cubic Avatar +function c511009101.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511009101.condition) + e1:SetTarget(c511009101.target) + e1:SetOperation(c511009101.activate) + c:RegisterEffect(e1) +end +function c511009101.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(1-tp) +end +function c511009101.filter(c,e,tp) + return c:IsCode(15610297) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009101.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009101.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511009101.activate(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,c511009101.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local a=Duel.GetAttacker() + if a:IsRelateToBattle() and a:IsFaceup() then + Duel.CalculateDamage(a,tc) + end + end +end diff --git a/script/c511009102.lua b/script/c511009102.lua new file mode 100644 index 00000000..aa94fdbd --- /dev/null +++ b/script/c511009102.lua @@ -0,0 +1,41 @@ +--Enhanced Counter +function c511009102.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c511009102.con) + e1:SetTarget(c511009102.tg) + e1:SetOperation(c511009102.activate) + c:RegisterEffect(e1) +end +function c511009102.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511009102.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetParam(Duel.GetBattleDamage(tp)) +end +function c511009102.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511009102.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c511009102.filter,tp,LOCATION_MZONE,0,1,1,nil,pos) + local sc=g:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(d) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sc:RegisterEffect(e1) +end +function c511009102.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511009103.lua b/script/c511009103.lua new file mode 100644 index 00000000..56bf5c6d --- /dev/null +++ b/script/c511009103.lua @@ -0,0 +1,61 @@ +--Fast Chant +function c511009103.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009103.cost) + e1:SetTarget(c511009103.target) + e1:SetOperation(c511009103.activate) + c:RegisterEffect(e1) +end +function c511009103.cfilter(c) + return c:GetType()==TYPE_SPELL and c:IsAbleToDeck() and c:CheckActivateEffect(true,true,false)~=nil +end +function c511009103.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009103.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511009103.cfilter,tp,LOCATION_HAND,0,1,1,nil) + e:SetLabelObject(g:GetFirst()) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c511009103.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return true end + local tc=e:GetLabelObject() + local te,ceg,cep,cev,cre,cr,crp=tc:CheckActivateEffect(false,true,true) + Duel.ClearTargetCard() + tc:CreateEffectRelation(e) + local tg=te:GetTarget() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,ceg,cep,cev,cre,cr,crp,1) end + te:SetLabelObject(e:GetLabelObject()) + e:SetLabelObject(te) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c511009103.activate(e,tp,eg,ep,ev,re,r,rp) +local te=e:GetLabelObject() + if not te then return end + if not te:GetHandler():IsRelateToEffect(e) then return end + e:SetLabelObject(te:GetLabelObject()) + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,0) + e1:SetCondition(c511009103.accon) + e1:SetValue(c511009103.aclimit) + e1:SetLabel(Duel.GetTurnCount()) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) +end +function c511009103.accon(e) + return e:GetLabel()~=Duel.GetTurnCount() +end +function c511009103.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) +end \ No newline at end of file diff --git a/script/c511009104.lua b/script/c511009104.lua new file mode 100644 index 00000000..bf9151db --- /dev/null +++ b/script/c511009104.lua @@ -0,0 +1,64 @@ +--Rank-Up-Magic Cipher Ascension +function c511009104.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41201386,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511009104.target) + e1:SetOperation(c511009104.activate) + c:RegisterEffect(e1) +end +function c511009104.filter1(c,e,tp) + local rk=c:GetRank() + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0xe5) + and Duel.IsExistingMatchingCard(c511009104.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1) +end +function c511009104.filter2(c,e,tp,mc,rk) + return c:GetRank()==rk and c:IsSetCard(0xe5) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511009104.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511009104.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511009104.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511009104.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009104.filter(c) + return c:IsFaceup() and c:IsLevelAbove(4) +end +function c511009104.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009104.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + + if Duel.GetMatchingGroupCount(c511009104.filter,tp,LOCATION_MZONE,0,nil)>0 then + Duel.BreakEffect() + end + if sc:IsFaceup() then + local val=Duel.GetMatchingGroupCount(c511009104.filter,tp,LOCATION_MZONE,0,nil)*500 + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(val) + sc:RegisterEffect(e1) + end + end +end diff --git a/script/c511009105.lua b/script/c511009105.lua new file mode 100644 index 00000000..6277c1fd --- /dev/null +++ b/script/c511009105.lua @@ -0,0 +1,76 @@ +--Performage Trapeze Force Witch +function c511009105.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xc6),2,true) + --indes + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511009105.target) + e2:SetValue(1) + c:RegisterEffect(e2) + --cannot be target + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) + + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e4:SetCondition(c511009105.atcon) + e4:SetValue(1) + c:RegisterEffect(e4) + --atk + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_ATKCHANGE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BATTLE_START) + e5:SetRange(LOCATION_MZONE) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + + e5:SetCondition(c511009105.atkcon) + e5:SetTarget(c511009105.atktg) + e5:SetOperation(c511009105.atkop) + c:RegisterEffect(e5) +end +function c511009105.target(e,c) + return c:IsSetCard(0xc6) +end +function c511009105.atfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc6) +end +function c511009105.atcon(e) + return Duel.IsExistingMatchingCard(c511009105.atfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler()) +end + + +function c511009105.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if d and a:GetControler()~=d:GetControler() then + if a:IsControler(tp) and a:IsSetCard(0xc6) then e:SetLabelObject(d) + elseif (d:IsSetCard(0xc6)) then e:SetLabelObject(a) end + return true + else return false end +end +function c511009105.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetLabelObject() + if chkc then return chkc==tc end + if chk==0 then return tc:IsOnField() and tc:IsFaceup() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) +end +function c511009105.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-600) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009106.lua b/script/c511009106.lua new file mode 100644 index 00000000..14fd1a93 --- /dev/null +++ b/script/c511009106.lua @@ -0,0 +1,105 @@ +--Performage String Figure +function c511009106.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(34475451,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511009106.condition) + e1:SetTarget(c511009106.target) + e1:SetOperation(c511009106.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c511009106.ftg) + e2:SetOperation(c511009106.fop) + c:RegisterEffect(e2) +end +function c511009106.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp and Duel.GetAttackTarget()==nil +end +function c511009106.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c511009106.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local a=Duel.GetAttacker() + if a:IsAttackable() and not a:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + Duel.CalculateDamage(a,c) + end + end +end +function c511009106.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511009106.filter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) +end +function c511009106.ftg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,c) + local res=Duel.IsExistingMatchingCard(c511009106.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511009106.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009106.fop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end + local mg1=Duel.GetMatchingGroup(c511009106.filter1,tp,LOCATION_MZONE,0,c,e) + local sg1=Duel.GetMatchingGroup(c511009106.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511009106.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511009107.lua b/script/c511009107.lua new file mode 100644 index 00000000..70b15fb1 --- /dev/null +++ b/script/c511009107.lua @@ -0,0 +1,79 @@ +--Performage Bubble Gardna +function c511009107.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetDescription(aux.Stringid(511001711,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(TIMING_DAMAGE_CAL) + e3:SetRange(LOCATION_PZONE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetCountLimit(1) + e3:SetCondition(c511009107.atkcon) + e3:SetOperation(c511009107.atkop) + c:RegisterEffect(e3) + + --destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c511009107.reptg) + e4:SetValue(c511009107.repval) + c:RegisterEffect(e4) +end +function c511009107.atkcon(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return d and ((a:GetControler()==tp and a:IsRelateToBattle() ) + or (d:GetControler()==tp and d:IsRelateToBattle())) and pc and pc:IsSetCard(0xc6) +end +function c511009107.atkop(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + if Duel.GetTurnPlayer()~=tp then a=Duel.GetAttackTarget() end + if not a:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511009107.rdop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + + + -- local e1=Effect.CreateEffect(e:GetHandler()) + -- e1:SetType(EFFECT_TYPE_SINGLE) + -- e1:SetCode(EFFECT_UPDATE_ATTACK) + -- e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + -- e1:SetValue(atk) + -- a:RegisterEffect(e1) +end +function c511009107.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) + Duel.ChangeBattleDamage(1-tp,ev/2) +end + + +----destroy replace +function c511009107.repfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) + and c:IsSetCard(0xc6) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c511009107.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:FilterCount(c511009107.repfilter,nil,e:GetHandlerPlayer()) + if chk==0 then return ct>0 end + if Duel.SelectYesNo(tp,aux.Stringid(43175858,0)) then + return true + else return false end +end +function c511009107.repval(e,c) + return c511009107.repfilter(c,e:GetHandlerPlayer()) +end + diff --git a/script/c511009108.lua b/script/c511009108.lua new file mode 100644 index 00000000..5cea9a62 --- /dev/null +++ b/script/c511009108.lua @@ -0,0 +1,72 @@ +--Shooting Star Sword +function c511009108.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(c511009108.target) + e1:SetOperation(c511009108.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) +--Indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511009108.indes) + c:RegisterEffect(e3) + --chain atk + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(35884610,0)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EVENT_BATTLED) + e6:SetCondition(c511009108.atcon) + e6:SetOperation(c511009108.atop) + c:RegisterEffect(e6) + +end + +function c511009108.filter(c) + return c:IsFaceup() +end +function c511009108.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009108.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009108.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511009108.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511009108.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 c511009108.indes(e,c) + local lv=e:GetHandler():GetEquipTarget():GetLevel() + return c:IsLevelBelow(lv) +end +function c511009108.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler():GetEquipTarget() + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and bc:IsLevelBelow(c:GetLevel()) and c:IsChainAttackable() +end +function c511009108.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetHandler():GetEquipTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511009109.lua b/script/c511009109.lua new file mode 100644 index 00000000..21971c9d --- /dev/null +++ b/script/c511009109.lua @@ -0,0 +1,52 @@ +--Shura the Conqueror Star +function c511009109.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,511002013,c511009109.ffilter,1,true,true) + + --half atk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_SET_ATTACK) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetValue(0) + c:RegisterEffect(e4) + --atk + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511009109.atkcon) + e5:SetOperation(c511009109.atkop) + c:RegisterEffect(e5) +end + +function c511009109.ffilter(c) + return c:IsRace(RACE_WARRIOR) and c:GetLevel()>=5 +end + +function c511009109.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a:GetControler()~=d:GetControler() and (a==e:GetHandler() or d==e:GetHandler()) +end +function c511009109.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a:IsFaceup() and a:IsRelateToBattle() and d:IsFaceup() and d:IsRelateToBattle() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(a:GetLevel()*200) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + a:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(d:GetLevel()*200) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + d:RegisterEffect(e2) + end +end diff --git a/script/c511009110.lua b/script/c511009110.lua new file mode 100644 index 00000000..f948b13a --- /dev/null +++ b/script/c511009110.lua @@ -0,0 +1,183 @@ +--Kaiky the sky star +function c511009110.initial_effect(c) + --Fusion Summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCost(c511009110.fuscost) + e1:SetTarget(c511009110.fustarget) + e1:SetOperation(c511009110.fusoperation) + c:RegisterEffect(e1) + --effect gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c511009110.efcon) + e2:SetOperation(c511009110.efop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(12469386,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_GRAVE) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(511001265) + e3:SetCondition(c511009110.spcon) + e3:SetTarget(c511009110.sptg) + e3:SetOperation(c511009110.spop) + c:RegisterEffect(e3) + if not c511009110.global_check then + c511009110.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511009110.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511009110.fuscost(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 c511009110.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511009110.filter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) + and c:CheckFusionMaterial(m,gc) +end +function c511009110.fustarget(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE+LOCATION_HAND,0,c) + local res=Duel.IsExistingMatchingCard(c511009110.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511009110.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009110.fusoperation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end + local mg1=Duel.GetMatchingGroup(c511009110.filter1,tp,LOCATION_MZONE+LOCATION_HAND,0,c,e) + local sg1=Duel.GetMatchingGroup(c511009110.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511009110.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c511009110.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_FUSION +end +function c511009110.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetCondition(c511009110.damcon) + e1:SetTarget(c511009110.damtg) + e1:SetOperation(c511009110.damop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) +end +function c511009110.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511009110.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,500) +end +function c511009110.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511009110.spcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(tp) and ec:IsType(TYPE_FUSION) and ev>0 +end +function c511009110.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511009110.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511009110.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:IsFaceup() and tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511009110.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511009110.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + end + e:SetLabel(c:GetAttack()) +end diff --git a/script/c511009111.lua b/script/c511009111.lua new file mode 100644 index 00000000..578a9a75 --- /dev/null +++ b/script/c511009111.lua @@ -0,0 +1,50 @@ +--Warrior's Supervision +--fixed by MLD +function c511009111.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511009111.condition) + e1:SetCost(c511009111.cost) + e1:SetTarget(c511009111.target) + e1:SetOperation(c511009111.activate) + c:RegisterEffect(e1) +end +function c511009111.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c511009111.cfilter(c) + return c:GetAttack()>0 and c:IsRace(RACE_WARRIOR) and c:IsDiscardable() +end +function c511009111.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c511009111.target(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.IsExistingMatchingCard(c511009111.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,c511009111.cfilter,tp,LOCATION_HAND,0,1,1,nil) + local atk=g:GetFirst():GetBaseAttack() + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) + Duel.SetTargetParam(atk) + Duel.SetTargetCard(tc) +end +function c511009111.activate(e,tp,eg,ep,ev,re,r,rp) + local atk=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local tc=Duel.GetFirstTarget() + if tc 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:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end + diff --git a/script/c511009123.lua b/script/c511009123.lua new file mode 100644 index 00000000..4420694f --- /dev/null +++ b/script/c511009123.lua @@ -0,0 +1,27 @@ +--Tamagushi the Righteous +function c511009123.initial_effect(c) + --summon with no tribute + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51126152,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c511009123.ntcon) + e2:SetOperation(c511009123.ntop) + c:RegisterEffect(e2) +end +function c511009123.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511009123.ntop(e,tp,eg,ep,ev,re,r,rp,c) + --change base attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0xff0000) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + c:RegisterEffect(e1) +end diff --git a/script/c511009124.lua b/script/c511009124.lua new file mode 100644 index 00000000..9797b05f --- /dev/null +++ b/script/c511009124.lua @@ -0,0 +1,45 @@ +--Sakaki the Honor Student +function c511009124.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetValue(1) + e1:SetCondition(c511009124.spcon) + c:RegisterEffect(e1) + --spsummon limit + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511009124.limcon) + e2:SetOperation(c511009124.limop) + c:RegisterEffect(e2) +end +-- Prietress Collection +c511009124.collection={ +[36734924]=true;[17214465]=true; +[54455435]=true;[3381441]=true; +[100000010]=true; +} +function c511009124.filter(c) + return c:IsFaceup() and (c511009124.collection[c:GetCode()] or c:IsSetCard(0x404)) +end +function c511009124.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009124.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c511009124.limcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c511009124.limop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end + diff --git a/script/c511009126.lua b/script/c511009126.lua new file mode 100644 index 00000000..5c327943 --- /dev/null +++ b/script/c511009126.lua @@ -0,0 +1,98 @@ +--White Aura Dolphin +function c511009126.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(49678559,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511009126.atktarget) + e1:SetOperation(c511009126.atkoperation) + c:RegisterEffect(e1) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(8062132,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c511009126.condition) + e3:SetCost(c511009126.cost) + e3:SetTarget(c511009126.target) + e3:SetOperation(c511009126.operation) + c:RegisterEffect(e3) +end +--White monster collection +c511009126.collection={ + [1571945]=true;[3557275]=true;[9433350]=true;[13429800]=true; + [15150365]=true;[20193924]=true;[24644634]=true;[32269855]=true; + [38517737]=true;[73398797]=true;[73891874]=true;[79473793]=true; + [79814787]=true;[89631139]=true;[92409659]=true;[98024118]=true; + [22804410]=true;[71039903]=true;[84812868]=true; + [501000016]=true; + [511002341]=true; + [511001977]=true;[511001978]=true;[511001979]=true;[511001980]=true; + [511001090]=true;[511001091]=true; + [95100846]=true;[95100847]=true; + +} + + +function c511009126.filter(c) + return c:IsFaceup() +end +function c511009126.atktarget(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511009126.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009126.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511009126.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511009126.atkoperation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end + + +--revive +function c511009126.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511009126.cfilter(c) + return (c511009126.collection[c:GetCode()] or c:IsSetCard(0x202)) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c511009126.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009126.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511009126.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511009126.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511009126.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511009127.lua b/script/c511009127.lua new file mode 100644 index 00000000..38824d36 --- /dev/null +++ b/script/c511009127.lua @@ -0,0 +1,28 @@ +--Triangle Knight +function c511009127.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetDescription(aux.Stringid(511009127,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511009127.condition) + e1:SetTarget(c511009127.target) + e1:SetOperation(c511009127.operation) + c:RegisterEffect(e1) +end +function c511009127.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511009127.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsAbleToDeck() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(Card.IsAbleToDeck,tp,LOCATION_GRAVE,0,3,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c511009127.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c511009128.lua b/script/c511009128.lua new file mode 100644 index 00000000..5f0e86ab --- /dev/null +++ b/script/c511009128.lua @@ -0,0 +1,32 @@ +--Decago Knight +function c511009128.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100664,0)) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511009128.condition) + e1:SetTarget(c511009128.target) + e1:SetOperation(c511009128.operation) + c:RegisterEffect(e1) +end +function c511009128.cfilter(c) + return c:IsCode(511009128) +end +function c511009128.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009128.cfilter,tp,LOCATION_GRAVE,0,3,nil) +end +function c511009128.filter1(c) + return c:IsCode(511009128) and c:IsAbleToDeck() +end +function c511009128.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511009128.filter,tp,LOCATION_GRAVE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c511009128.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009128.filter,tp,LOCATION_GRAVE,0,nil) + if g:GetCount()>0 then + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + end +end diff --git a/script/c511009129.lua b/script/c511009129.lua new file mode 100644 index 00000000..287efc69 --- /dev/null +++ b/script/c511009129.lua @@ -0,0 +1,17 @@ +--Hexa Knight +function c511009129.initial_effect(c) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95100665,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c511009129.ntcon) + c:RegisterEffect(e2) +end +function c511009129.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end diff --git a/script/c511009130.lua b/script/c511009130.lua new file mode 100644 index 00000000..60f164d9 --- /dev/null +++ b/script/c511009130.lua @@ -0,0 +1,30 @@ +--Cup Udon Uno +function c511009130.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100656,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511009130.condition) + e1:SetTarget(c511009130.target) + e1:SetOperation(c511009130.operation) + c:RegisterEffect(e1) +end +function c511009130.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp + and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c511009130.filter(c) + return c:IsDestructable() +end +function c511009130.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511009130.filter,tp,0,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009130.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009130.filter,tp,0,LOCATION_SZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511009131.lua b/script/c511009131.lua new file mode 100644 index 00000000..ab3623f0 --- /dev/null +++ b/script/c511009131.lua @@ -0,0 +1,30 @@ +--Cup Ramen Lard +function c511009131.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100657,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511009131.condition) + e1:SetTarget(c511009131.target) + e1:SetOperation(c511009131.operation) + c:RegisterEffect(e1) +end +function c511009131.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp + and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c511009131.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsDestructable() +end +function c511009131.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511009131.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009131.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009131.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511009132.lua b/script/c511009132.lua new file mode 100644 index 00000000..6ce44398 --- /dev/null +++ b/script/c511009132.lua @@ -0,0 +1,30 @@ +--Cup Meatball Cayenne +function c511009132.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100658,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511009132.condition) + e1:SetTarget(c511009132.target) + e1:SetOperation(c511009132.operation) + c:RegisterEffect(e1) +end +function c511009132.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp + and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c511009132.filter(c) + return c:IsType(TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c511009132.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c511009132.filter,tp,0,LOCATION_HAND,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009132.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009132.filter,tp,0,LOCATION_HAND,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511009133.lua b/script/c511009133.lua new file mode 100644 index 00000000..11e0e077 --- /dev/null +++ b/script/c511009133.lua @@ -0,0 +1,54 @@ +--Cipher Interfere +function c511009133.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCondition(c511009133.atkcon) + e2:SetCountLimit(1) + e2:SetTarget(c511009133.atktg) + e2:SetOperation(c511009133.atkop) + c:RegisterEffect(e2) +end +function c511009133.filter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c511009133.atkcon(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if Duel.IsDamageCalculated() then return false end + local tc=Duel.GetAttacker() + if not tc then return false end + if tc:IsControler(1-tp) then + tc=Duel.GetAttackTarget() + end + e:SetLabelObject(tc) + return tc and tc:IsFaceup() and tc:IsSetCard(0xe5) and tc:IsRelateToBattle() + and Duel.IsExistingMatchingCard(c511009133.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,tc,tc:GetCode()) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511009133.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetLabelObject() + if chkc then return chkc==tc end + if chk==0 then return tc and tc:IsOnField() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) +end +function c511009133.atkop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc or not tc:IsRelateToBattle() or tc:IsFacedown() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) +end + diff --git a/script/c511009134.lua b/script/c511009134.lua new file mode 100644 index 00000000..28c31340 --- /dev/null +++ b/script/c511009134.lua @@ -0,0 +1,71 @@ +--Doodle Beast - Tyranno +function c511009134.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51945556,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c511009134.condition) + e1:SetTarget(c511009134.target) + e1:SetOperation(c511009134.operation) + c:RegisterEffect(e1) + --normal summon with 1 tribute + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(55690251,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c511009134.otcon) + e2:SetOperation(c511009134.otop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_SET_PROC) + c:RegisterEffect(e3) + + +end + +function c511009134.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE +end +function c511009134.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009134.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local atk=tc:GetAttack()/2 + if atk<0 or tc:IsFacedown() then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk/2) + e1:SetReset(RESET_EVENT+0x1ff0000) + e:GetHandler():RegisterEffect(e1) + end + end +end +function c511009134.otfilter(c,tp) + return c:IsSetCard(0x1403) and (c:IsControler(tp) or c:IsFaceup()) +end +function c511009134.otcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c511009134.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 +end +function c511009134.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c511009134.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local sg=Duel.SelectTribute(tp,c,1,1,mg) + c:SetMaterial(sg) + Duel.Release(sg, REASON_SUMMON+REASON_MATERIAL) +end + diff --git a/script/c511009135.lua b/script/c511009135.lua new file mode 100644 index 00000000..5863f6f9 --- /dev/null +++ b/script/c511009135.lua @@ -0,0 +1,28 @@ +--Doodlebook - Uh Uh Uh! +function c511009135.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511009135.condition) + e1:SetTarget(c511009135.target) + e1:SetOperation(c511009135.activate) + c:RegisterEffect(e1) +end +function c511009135.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + return tc and tc:IsControler(tp) and tc:IsFaceup() and tc:IsSetCard(0x403) +end +function c511009135.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c511009135.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsRelateToEffect(e) then + Duel.NegateAttack() + end +end diff --git a/script/c511009136.lua b/script/c511009136.lua new file mode 100644 index 00000000..d92a8c0f --- /dev/null +++ b/script/c511009136.lua @@ -0,0 +1,130 @@ +--Neo Galaxy-Eyes Cipher Dragon +function c511009136.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,9,3) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetDescription(aux.Stringid(511009136,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511009136.condition) + e1:SetCost(c511009136.cost) + e1:SetTarget(c511009136.target) + e1:SetOperation(c511009136.operation) + c:RegisterEffect(e1) + + + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c511009136.valcheck) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + + --return control + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c511009136.ctcon) + e4:SetTarget(c511009136.cttg) + e4:SetOperation(c511009136.ctop) + c:RegisterEffect(e4) + + local e5=e2:Clone() + e5:SetLabelObject(e4) + c:RegisterEffect(e5) +end +function c511009136.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ and e:GetLabel()==1 and e:GetHandler():GetOverlayCount()>0 +end +function c511009136.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + local g=e:GetHandler():GetOverlayGroup() + Duel.SendtoGrave(g,REASON_COST) +end +function c511009136.filter(c) + return c:IsFaceup() and c:IsControlerCanBeChanged() +end +function c511009136.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511009136.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,1-tp,LOCATION_MZONE) +end +function c511009136.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c511009136.filter,tp,0,LOCATION_MZONE,ft,ft,nil) + local tc=g:GetFirst() + while tc do + if Duel.GetControl(tc,tp) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE_EFFECT) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(c:GetAttack()) + tc:RegisterEffect(e3) + end + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CHANGE_CODE) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetValue(511009136) + tc:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_ATTACK) + e5:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e5) + tc:CreateRelation(c,RESET_EVENT+0x1fe0000) + tc=g:GetNext() + end +end + +function c511009136.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsCode,1,nil,18963306) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end + + +----return control +function c511009136.ctcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and c:GetLocation()~=LOCATION_DECK and e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ and e:GetLabel()==1 +end +function c511009136.ctfilter(c,rc) + return c:GetControler()~=c:GetOwner() and c:IsRelateToCard(rc) +end +function c511009136.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009136.ctfilter,tp,LOCATION_MZONE,0,1,nil,e:GetHandler()) end +end +function c511009136.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009136.ctfilter,tp,LOCATION_MZONE,0,nil,e:GetHandler()) + local tc=g:GetFirst() + while tc do + if not tc:IsImmuneToEffect(e) then + tc:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetValue(tc:GetOwner()) + e1:SetReset(RESET_EVENT+0xec0000) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end +end diff --git a/script/c511009137.lua b/script/c511009137.lua new file mode 100644 index 00000000..78d45df8 --- /dev/null +++ b/script/c511009137.lua @@ -0,0 +1,31 @@ +--Bewitching Butterfly +function c511009137.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511009137.spcon) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c511009137.sdcon) + c:RegisterEffect(e2) +end +function c511009137.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511009137.sdfilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c511009137.sdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009137.sdfilter,tp,0,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) +end diff --git a/script/c511009138.lua b/script/c511009138.lua new file mode 100644 index 00000000..24f142e7 --- /dev/null +++ b/script/c511009138.lua @@ -0,0 +1,44 @@ +--Cipher Shield +function c511009138.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --reduce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,0) + e2:SetCondition(c511009138.damcon) + e2:SetValue(c511009138.damval) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_NO_EFFECT_DAMAGE) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetTarget(c511009138.target) + e4:SetCondition(c511009138.damcon) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c511009138.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 end + return val +end +function c511009138.target(e,c) + return c:IsSetCard(0xe5) +end +function c511009138.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xe5) +end +function c511009138.damcon(e) + return Duel.IsExistingMatchingCard(c511009138.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,2,nil) +end \ No newline at end of file diff --git a/script/c511009139.lua b/script/c511009139.lua new file mode 100644 index 00000000..bb7a9ecd --- /dev/null +++ b/script/c511009139.lua @@ -0,0 +1,58 @@ +--Monster Clock +function c511009139.initial_effect(c) +--Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(61538782,1)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + + e1:SetCondition(c511009139.eqcon) + e1:SetTarget(c511009139.eqtg) + e1:SetOperation(c511009139.eqop) + c:RegisterEffect(e1) +end + +function c511009139.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if c:IsFacedown() then return false end + e:SetLabelObject(tc) + return tc:IsLocation(LOCATION_MZONE) and tc:IsType(TYPE_MONSTER) +end +function c511009139.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetLabelObject() + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,tc,1,0,0) +end +function c511009139.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511009139.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + end +end +function c511009139.eqlimit(e,c) + return e:GetOwner()==c +end \ No newline at end of file diff --git a/script/c511009140.lua b/script/c511009140.lua new file mode 100644 index 00000000..c5cd4c04 --- /dev/null +++ b/script/c511009140.lua @@ -0,0 +1,76 @@ +--Amazoness Audience Room +function c511009140.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009140.condition1) + c:RegisterEffect(e1) + --Activate (sp summon) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCondition(c511009140.condition2) + e2:SetTarget(c511009140.target) + c:RegisterEffect(e2) + --trigger + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_RECOVER) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c511009140.sptg) + e3:SetOperation(c511009140.spop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetCondition(c511009140.descon) + c:RegisterEffect(e4) +end +function c511009140.condition1(e,tp,eg,ep,ev,re,r,rp) + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) + return not res or not teg:IsExists(c511009140.tgfilter,1,nil,nil,tp) +end +function c511009140.condition2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511009140.tgfilter,1,nil,nil,tp) +end +function c511009140.tgfilter(c,e,tp) + return c:IsControler(1-tp) and (not e or c:IsRelateToEffect(e)) +end +function c511009140.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c511009140.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetCategory(CATEGORY_RECOVER) + e:SetOperation(c511009140.spop) + c511009140.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c511009140.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c511009140.tgfilter,1,nil,nil,tp) end + local g=eg:Filter(c511009140.tgfilter,nil,nil,tp) + Duel.SetTargetCard(eg) + local sum=g:GetSum(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,sum) +end +function c511009140.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(c511009140.tgfilter,nil,e,tp) + local sum=g:GetSum(Card.GetAttack) + Duel.Recover(tp,sum,REASON_EFFECT) +end +function c511009140.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x4) +end +function c511009140.descon(e) + return not Duel.IsExistingMatchingCard(c511009140.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c511009141.lua b/script/c511009141.lua new file mode 100644 index 00000000..9b006ecf --- /dev/null +++ b/script/c511009141.lua @@ -0,0 +1,40 @@ +--Curse of the Dolls +function c511009141.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009141.condition) + e1:SetTarget(c511009141.target) + e1:SetOperation(c511009141.activate) + c:RegisterEffect(e1) +end +--doll collection +c511009141.collection={ + [72657739]=true;[91939608]=true;[85639257]=true;[92418590]=true; + [2903036]=true;[39806198]=true;[49563947]=true;[82579942]=true; +} +function c511009141.cfilter(c) + return c:IsType(TYPE_MONSTER) and (c511009141.collection[c:GetCode()] or c:IsSetCard(0x20b) or c:IsSetCard(0x9d)) +end +function c511009141.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009141.cfilter,tp,LOCATION_GRAVE,0,5,nil) +end +function c511009141.filter(c) + return c:IsFacedown() and c:IsDefensePos() and c:IsDestructable() +end +function c511009141.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511009141.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009141.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511009141.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511009141.activate(e) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c511009142.lua b/script/c511009142.lua new file mode 100644 index 00000000..9e66d73e --- /dev/null +++ b/script/c511009142.lua @@ -0,0 +1,41 @@ +--White Morray +function c511009142.initial_effect(c) + --disable + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c511009142.sumsuc) + c:RegisterEffect(e1) + + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetCondition(c511009142.condition) + c:RegisterEffect(e2) + + --spsum success + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c511009142.gete) + c:RegisterEffect(e1) +end +function c511009142.sumsuc(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(95100847,RESET_EVENT+0x1ec0000,0,1) +end +function c511009142.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(95100847)>0 +end +function c511009142.gete(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetPreviousLocation()~=LOCATION_GRAVE then return end + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end diff --git a/script/c511009143.lua b/script/c511009143.lua new file mode 100644 index 00000000..3f7289e1 --- /dev/null +++ b/script/c511009143.lua @@ -0,0 +1,34 @@ +--promotion +function c511009143.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009143.cost) + e1:SetTarget(c511009143.target) + e1:SetOperation(c511009143.activate) + c:RegisterEffect(e1) +end +function c511009143.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,511002633) end + local g=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,511002633) + Duel.Release(g,REASON_COST) +end +function c511009143.filter(c,e,tp) + return (c:IsCode(511002634) or c:IsCode(511002731) or c:IsCode(511009178) or c:IsCode(511009179)) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511009143.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511009143.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511009143.activate(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,c511009143.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + g:GetFirst():CompleteProcedure() + end +end diff --git a/script/c511009144.lua b/script/c511009144.lua new file mode 100644 index 00000000..a82e5daa --- /dev/null +++ b/script/c511009144.lua @@ -0,0 +1,48 @@ +-- Flight of the duel dragon +function c511009144.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009144.descost) + e1:SetTarget(c511009144.target) + e1:SetOperation(c511009144.activate) + c:RegisterEffect(e1) +end +function c511009144.cfilter(c) + return c:IsFaceup() and (c:IsRace(RACE_DRAGON) or c511009144.collection[c:GetCode()] or c:IsSetCard(0x1045) or c:IsSetCard(0x1093)) and c:IsAbleToGraveAsCost() +end +c511009144.collection={ + [86240887]=true;[86805855]=true;[70681994]=true;[511000705]=true;[1546123]=true; + [64599569]=true;[84243274]=true;[91998119]=true;[74157028]=true;[87751584]=true; + [40418351]=true;[79229522]=true;[2111707]=true;[25119460]=true;[9293977]=true; + [84058253]=true;[72959823]=true;[100000570]=true;[100000029]=true;[100000621]=true; + [54752875]=true;[86164529]=true;[21435914]=true;[6021033]=true;[2403771]=true; + [68084557]=true;[52145422]=true;[62560742]=true;[50321796]=true;[76891401]=true; + [511001275]=true;[1639384]=true;[77799846]=true;[95992081]=true;[511001273]=true; + [21970285]=true;[92870717]=true;[51531505]=true;[15146890]=true;[14920218]=true; + [88935103]=true;[83980492]=true;[19474136]=true;[15146890]=true;[14920218]=true; +} +function c511009144.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009144.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511009144.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511009144.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsCanTurnSet() +end +function c511009144.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009144.filter,tp,LOCATION_ONFIELD,0,1,nil) end +end +function c511009144.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sg=Duel.GetMatchingGroup(c511009144.filter,tp,LOCATION_ONFIELD,0,e:GetHandler()) + local tc=sg:GetFirst() + while tc do + tc:CancelToGrave() + Duel.ChangePosition(tc,POS_FACEDOWN) + tc=sg:GetNext() + end + Duel.RaiseEvent(sg,EVENT_SSET,e,REASON_EFFECT,1-tp,tp,0) +end diff --git a/script/c511009145.lua b/script/c511009145.lua new file mode 100644 index 00000000..e89da6e4 --- /dev/null +++ b/script/c511009145.lua @@ -0,0 +1,17 @@ +--Assault Blackwing - Kunifusa the Fogbow +function c511009145.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --Tuner + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetCondition(c511009145.tncon) + c:RegisterEffect(e1) + +end +function c511009145.tncon(e) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and e:GetHandler():GetMaterial():IsExists(Card.IsSetCard,1,nil,0x33) +end diff --git a/script/c511009146.lua b/script/c511009146.lua new file mode 100644 index 00000000..38932d69 --- /dev/null +++ b/script/c511009146.lua @@ -0,0 +1,44 @@ +--Hightide +function c511009146.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(c511009146.target) + e1:SetOperation(c511009146.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + c:RegisterEffect(e2) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c511009146.eqlimit) + c:RegisterEffect(e4) +end +function c511009146.eqlimit(e,c) + return c:IsRace(RACE_FISH) or c:IsRace(RACE_SEASERPENT) +end +function c511009146.filter(c) + return c:IsFaceup() and (c:IsRace(RACE_FISH) or c:IsRace(RACE_SEASERPENT)) +end +function c511009146.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009146.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009146.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511009146.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511009146.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 diff --git a/script/c511009151.lua b/script/c511009151.lua new file mode 100644 index 00000000..26347a29 --- /dev/null +++ b/script/c511009151.lua @@ -0,0 +1,28 @@ +--Gorgon Charm +function c511009151.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009151.target) + e1:SetOperation(c511009151.activate) + c:RegisterEffect(e1) +end +function c511009151.filter(c) + return c:IsFacedown() and c:IsDefensePos() +end +function c511009151.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(c511009151.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + local g=Duel.SelectTarget(tp,c511009151.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c511009151.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFacedown() then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511009152.lua b/script/c511009152.lua new file mode 100644 index 00000000..c42bb977 --- /dev/null +++ b/script/c511009152.lua @@ -0,0 +1,44 @@ +--Furious Max Curse +function c95100698.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(c95100698.target) + e1:SetOperation(c95100698.operation) + c:RegisterEffect(e1) + --Indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --cannot change pos + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e3:SetValue(1) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c95100698.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 c95100698.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 diff --git a/script/c511009153.lua b/script/c511009153.lua new file mode 100644 index 00000000..b12afb50 --- /dev/null +++ b/script/c511009153.lua @@ -0,0 +1,32 @@ +--Junk Ball +function c511009153.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009153.cost) + e1:SetTarget(c511009153.target) + e1:SetOperation(c511009153.activate) + c:RegisterEffect(e1) +end +function c511009153.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 c511009153.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511009154,0,0x4011,0,0,2,RACE_WARRIOR,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511009153.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511009154,0,0x4011,0,0,2,RACE_WARRIOR,ATTRIBUTE_EARTH) then + for i=1,2 do + local token=Duel.CreateToken(tp,511009154) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511009155.lua b/script/c511009155.lua new file mode 100644 index 00000000..debe2a9b --- /dev/null +++ b/script/c511009155.lua @@ -0,0 +1,49 @@ +--Performapal Pyro Lobster +function c511009155.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(93543806,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511009155.lvtg) + e1:SetOperation(c511009155.lvop) + c:RegisterEffect(e1) + +end +function c511009155.filter1(c,tp) + return c:IsLevelAbove(1) and c:IsSetCard(0x9f) + and Duel.IsExistingTarget(c511009155.filter2,tp,LOCATION_GRAVE,0,1,c,c:GetLevel()) +end +function c511009155.filter2(c,lvl) + return c:IsLevelAbove(1) and c:IsSetCard(0x9f) and (c:GetLevel()+lvl)<=12 +end + + +function c511009155.filter(c) + return c:IsFaceup() and c:IsLevelAbove(1) +end +function c511009155.lvtg(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(c511009155.filter1,tp,LOCATION_GRAVE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g1=Duel.SelectMatchingCard(tp,c511009155.filter1,tp,LOCATION_GRAVE,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g2=Duel.SelectMatchingCard(tp,c511009155.filter2,tp,LOCATION_GRAVE,0,1,1,g1:GetFirst(),g1:GetFirst():GetLevel()) + local lvl=g1:GetFirst():GetLevel()+g2:GetFirst():GetLevel() + Duel.SelectTarget(tp,c511009155.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,lvl) + e:SetLabel(lvl) +end +function c511009155.lvop(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_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009156.lua b/script/c511009156.lua new file mode 100644 index 00000000..f94edee1 --- /dev/null +++ b/script/c511009156.lua @@ -0,0 +1,27 @@ +--Magnet Pandoll +function c511009156.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100671,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c511009156.condition) + e1:SetTarget(c511009156.target) + e1:SetOperation(c511009156.operation) + c:RegisterEffect(e1) +end +function c511009156.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler() and e:GetHandler():IsReason(REASON_BATTLE) +end +function c511009156.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(200) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,200) +end +function c511009156.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511009157.lua b/script/c511009157.lua new file mode 100644 index 00000000..35cb5ab7 --- /dev/null +++ b/script/c511009157.lua @@ -0,0 +1,28 @@ +--Magnet Jammer +function c511009157.initial_effect(c) + --return to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100668,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetTarget(c511009157.target) + e1:SetOperation(c511009157.operation) + c:RegisterEffect(e1) +end +function c511009157.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetAttackTarget()==c or (Duel.GetAttacker()==c and Duel.GetAttackTarget()~=nil) end + local g=Group.FromCards(Duel.GetAttacker(),Duel.GetAttackTarget()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c511009157.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Group.CreateGroup() + local c=Duel.GetAttacker() + if c:IsRelateToBattle() then g:AddCard(c) end + c=Duel.GetAttackTarget() + if c~=nil and c:IsRelateToBattle() then g:AddCard(c) end + if g:GetCount()>0 then + Duel.SendtoHand(g, nil, REASON_EFFECT) + end +end diff --git a/script/c511009159.lua b/script/c511009159.lua new file mode 100644 index 00000000..af1acecd --- /dev/null +++ b/script/c511009159.lua @@ -0,0 +1,61 @@ +--Blade Wing +function c511009159.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c511009159.condition) + e1:SetTarget(c511009159.target) + e1:SetOperation(c511009159.operation) + c:RegisterEffect(e1) +end +function c511009159.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511009159.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 e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511009159.ftarget) + e1:SetLabel(g:GetFirst():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511009159.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c511009159.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end diff --git a/script/c511009160.lua b/script/c511009160.lua new file mode 100644 index 00000000..9b4b6520 --- /dev/null +++ b/script/c511009160.lua @@ -0,0 +1,62 @@ +--Sacred Sword Thanatos +function c511009160.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(c511009160.target) + e1:SetOperation(c511009160.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) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(300) + c:RegisterEffect(e3) + --Token destroy and atk up + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ADJUST) + e4:SetRange(LOCATION_SZONE) + e4:SetOperation(c511009160.desop) + c:RegisterEffect(e4) +end +function c511009160.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 c511009160.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 c511009160.filter(c,g,pg) + return c:IsType(TYPE_TOKEN) and c:IsDestructable() +end +function c511009160.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009160.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + atk=g:GetSum(Card.GetAttack) + Duel.Destroy(g,REASON_EFFECT) + + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + e:GetHandler():GetEquipTarget():RegisterEffect(e1) +end diff --git a/script/c511009161.lua b/script/c511009161.lua new file mode 100644 index 00000000..033a023c --- /dev/null +++ b/script/c511009161.lua @@ -0,0 +1,55 @@ +--Spirit Mask +function c511009161.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(c511009161.target) + e1:SetOperation(c511009161.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) + --tograve + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOGRAVE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c511009161.tgcon) + e4:SetTarget(c511009161.tgtg) + e4:SetOperation(c511009161.tgop) + c:RegisterEffect(e4) +end +function c511009161.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 c511009161.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511009161.tgcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsReason(REASON_RETURN) +end +function c511009161.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) +end +function c511009161.tgop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.DiscardHand(p,nil,d,d,REASON_EFFECT) +end diff --git a/script/c511009162.lua b/script/c511009162.lua new file mode 100644 index 00000000..31fff0cb --- /dev/null +++ b/script/c511009162.lua @@ -0,0 +1,49 @@ +--Performapal Return Tantan +function c511009162.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99284890,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511009162.target1) + e2:SetOperation(c511009162.operation) + c:RegisterEffect(e2) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(56675280,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetCondition(c511009162.condition) + e3:SetTarget(c511009162.target2) + e3:SetOperation(c511009162.operation) + c:RegisterEffect(e3) +end +function c511009162.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsLocation(LOCATION_DECK) +end +function c511009162.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511009162.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511009162.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c511009163.lua b/script/c511009163.lua new file mode 100644 index 00000000..4bb901a3 --- /dev/null +++ b/script/c511009163.lua @@ -0,0 +1,36 @@ +--inland +function c511009163.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009163.condition) + c:RegisterEffect(e1) + --Change to umi + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e2:SetTarget(c511009163.sertg) + e2:SetValue(22702055) + c:RegisterEffect(e2) + --level + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_LEVEL) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,LOCATION_HAND+LOCATION_MZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e3:SetValue(-1) + c:RegisterEffect(e3) +end +function c511009163.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511009163.condition(e,tp,eg,ep,ev,re,r,rp) + return c511009163.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511009163.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5)) +end +function c511009163.sertg(e,c) + return c:IsFaceup() and c:IsType(TYPE_FIELD) +end \ No newline at end of file diff --git a/script/c511009164.lua b/script/c511009164.lua new file mode 100644 index 00000000..f1c951cd --- /dev/null +++ b/script/c511009164.lua @@ -0,0 +1,26 @@ +--Fellow's Gift +function c511009164.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009164.target) + e1:SetOperation(c511009164.activate) + c:RegisterEffect(e1) +end +function c511009164.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local tc=g:GetFirst() + if chkc then return chkc:IsControler(tp) and chkc:IsControlerCanBeChanged() and g:IsContains(chkc) and g:GetCount()==1 end + if chk==0 then return g:GetCount()==1 and tc:IsControlerCanBeChanged() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511009164.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,1-tp) + end +end diff --git a/script/c511009165.lua b/script/c511009165.lua new file mode 100644 index 00000000..7f373094 --- /dev/null +++ b/script/c511009165.lua @@ -0,0 +1,37 @@ +--Frightfur Kraken +function c511009165.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,97567736,7614,true,true) + --attack twice + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + c:RegisterEffect(e2) + --pos change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(90790253,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511009165.poscon) + e1:SetTarget(c511009165.postg) + e1:SetOperation(c511009165.posop) + c:RegisterEffect(e1) +end +function c511009165.poscon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c511009165.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c511009165.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c511009166.lua b/script/c511009166.lua new file mode 100644 index 00000000..0914d5fd --- /dev/null +++ b/script/c511009166.lua @@ -0,0 +1,239 @@ +--Evil-Sealing Flash +function c511009166.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --disable your field + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511009166.dscon1) + e2:SetOperation(c511009166.dsop1) + c:RegisterEffect(e2) + -- disable opponent field + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511009166.dscon2) + e3:SetOperation(c511009166.dsop2) + c:RegisterEffect(e3) + + --atk & def + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511009166.atkcon) + e4:SetOperation(c511009166.atkop) + c:RegisterEffect(e4) + + --damage + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(46128076,0)) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EVENT_PHASE+PHASE_BATTLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1) + e5:SetTarget(c511009166.damtg) + e5:SetOperation(c511009166.damop) + c:RegisterEffect(e5) +end + +--disable your zone +function c511009166.dscon1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511009166.dsop1(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + --disable field + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetOperation(c511009166.disop1) + e1:SetReset(RESET_EVENT+0x1ff0000) + e:GetHandler():RegisterEffect(e1) + + local ct=e:GetHandler():GetFlagEffectLabel(95100886) + if ct==nil then + e:GetHandler():RegisterFlagEffect(95100886,RESET_EVENT+0x1fe0000,0,0,1) + else + ct=ct+1 + e:GetHandler():SetFlagEffectLabel(95100886,ct) + end +end +function c511009166.disop1(e,tp) + local dis1=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0) + return dis1 +end + + +--disable opponent zone +function c511009166.dscon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511009166.dsop2(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + --disable field + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetOperation(c511009166.disop2) + e1:SetReset(RESET_EVENT+0x1ff0000) + e:GetHandler():RegisterEffect(e1) + local ct=e:GetHandler():GetFlagEffectLabel(95100886) + if ct==nil then + e:GetHandler():RegisterFlagEffect(95100886,RESET_EVENT+0x1fe0000,0,0,1) + else + ct=ct+1 + e:GetHandler():SetFlagEffectLabel(95100886,ct) + end +end +function c511009166.disop2(e,tp) + local dis1=Duel.SelectDisableField(1-tp,1,LOCATION_MZONE,0,0) + local seq=0 + if dis1==1 then seq=0 end + if dis1==2 then seq=1 end + if dis1==4 then seq=2 end + if dis1==8 then seq=3 end + if dis1==16 then seq=4 end + return bit.lshift(0x1,16+seq) +end + +--atk up +function c511009166.atkcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if not bc then return false end + if bc:IsControler(1-tp) then bc=tc end + e:SetLabelObject(bc) + return bc:IsFaceup() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c511009166.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local c=Duel.GetLocationCount(tp,LOCATION_MZONE) + if c==0 then return end + + local tc=e:GetLabelObject() + + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetOperation(c511009166.disop3) + e1:SetReset(RESET_EVENT+0x1ff0000) + e:GetHandler():RegisterEffect(e1) + + if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsControler(tp) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c*800) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetOperation(c511009166.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e3:SetCountLimit(1) + tc:RegisterEffect(e3,true) + end +end + +function c511009166.disop3(e,tp) + local c=Duel.GetLocationCount(tp,LOCATION_MZONE) + if c==0 then return end + local dis1=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0) + local ct=e:GetHandler():GetFlagEffectLabel(95100886) + if ct==nil then + e:GetHandler():RegisterFlagEffect(95100886,RESET_EVENT+0x1fe0000,0,0,1) + else + ct=ct+1 + e:GetHandler():SetFlagEffectLabel(95100886,ct) + end + if c>1 then + local dis2=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,dis1) + local ct=e:GetHandler():GetFlagEffectLabel(95100886) + if ct==nil then + e:GetHandler():RegisterFlagEffect(95100886,RESET_EVENT+0x1fe0000,0,0,1) + else + ct=ct+1 + e:GetHandler():SetFlagEffectLabel(95100886,ct) + end + dis1=bit.bor(dis1,dis2) + if c>2 then + local dis3=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,dis1) + local ct=e:GetHandler():GetFlagEffectLabel(95100886) + if ct==nil then + e:GetHandler():RegisterFlagEffect(95100886,RESET_EVENT+0x1fe0000,0,0,1) + else + ct=ct+1 + e:GetHandler():SetFlagEffectLabel(95100886,ct) + end + dis1=bit.bor(dis1,dis3) + if c>3 then + local dis4=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,dis1) + local ct=e:GetHandler():GetFlagEffectLabel(95100886) + if ct==nil then + e:GetHandler():RegisterFlagEffect(95100886,RESET_EVENT+0x1fe0000,0,0,1) + else + ct=ct+1 + e:GetHandler():SetFlagEffectLabel(95100886,ct) + end + dis1=bit.bor(dis1,dis4) + if c>4 then + local dis5=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,dis1) + local ct=e:GetHandler():GetFlagEffectLabel(95100886) + if ct==nil then + e:GetHandler():RegisterFlagEffect(95100886,RESET_EVENT+0x1fe0000,0,0,1) + else + ct=ct+1 + e:GetHandler():SetFlagEffectLabel(95100886,ct) + end + dis1=bit.bor(dis1,dis5) + end + end + end + end + return dis1 +end +function c511009166.desop(e,tp,eg,ep,ev,re,r,rp) + if Duel.Destroy(e:GetHandler(),REASON_EFFECT) then + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + end +end + + +--damage +function c511009166.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=e:GetHandler():GetFlagEffectLabel(95100886) + -- Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,ct*500) + -- Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*500) +end +function c511009166.damop(e,tp,eg,ep,ev,re,r,rp) + -- local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=e:GetHandler():GetFlagEffectLabel(95100886) + -- Duel.Damage(p,ct*300,REASON_EFFECT) + Duel.Damage(tp,ct*500,REASON_EFFECT) + Duel.Damage(1-tp,ct*500,REASON_EFFECT) +end + + diff --git a/script/c511009167.lua b/script/c511009167.lua new file mode 100644 index 00000000..280ec17a --- /dev/null +++ b/script/c511009167.lua @@ -0,0 +1,92 @@ +--Performapal Big Support +function c511009167.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c511009167.condition) + e1:SetTarget(c511009167.target) + e1:SetOperation(c511009167.activate) + c:RegisterEffect(e1) + if not c511009167.global_check then + c511009167.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetOperation(c511009167.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511009167.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:GetFlagEffect(95100888)==0 then + tc:RegisterFlagEffect(95100888,RESET_PHASE+PHASE_END,0,1) + end + tc=eg:GetNext() + end +end +function c511009167.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511009167.filter(c) + return c:GetFlagEffect(95100888)>0 +end +function c511009167.eqfilter(c) + return c:IsSetCard(0x9f) and c:IsAttackBelow(1000) and c:IsType(TYPE_MONSTER) +end +function c511009167.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c511009167.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c511009167.eqfilter,tp,LOCATION_HAND,0,1,nil) end + local g=Duel.SelectTarget(tp,c511009167.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_HAND) +end +function c511009167.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if not tc then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(12152769,2)) + local g=Duel.SelectMatchingCard(tp,c511009167.eqfilter,tp,LOCATION_HAND,0,1,1,nil) + local ec=g:GetFirst() + if ec then + Duel.HintSelection(g) + if not Duel.Equip(tp,ec,tc,true) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511009167.eqlimit) + e1:SetLabelObject(tc) + ec:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(ec:GetTextAttack()*2) + ec:RegisterEffect(e2) + + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetOperation(c511009167.tgop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + ec:RegisterEffect(e3) + end + end + +function c511009167.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c511009167.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511009168.lua b/script/c511009168.lua new file mode 100644 index 00000000..c2127bf6 --- /dev/null +++ b/script/c511009168.lua @@ -0,0 +1,118 @@ +--Delay Armor +function c511009168.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(c511009168.target) + e1:SetOperation(c511009168.operation) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + 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(c511009168.eqlimit) + c:RegisterEffect(e3) + + + --cannot destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75886890,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511009168.eqcon) + e2:SetCost(c511009168.eqcost) + e2:SetOperation(c511009168.eqop) + c:RegisterEffect(e2) + + --handes + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(12174035,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c511009168.hdcon) + e3:SetTarget(c511009168.hdtg) + e3:SetOperation(c511009168.hdop) + c:RegisterEffect(e3) + +end +function c511009168.eqlimit(e,c) + return c:IsSetCard(0xc008) +end +function c511009168.filter(c) + return c:IsFaceup() and c:IsSetCard(0xc008) +end +function c511009168.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c511009168.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009168.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511009168.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511009168.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 c511009168.eqcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget() +end +function c511009168.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabelObject(e:GetHandler():GetEquipTarget()) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511009168.eqop(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetLabelObject() + if ec and ec:IsFaceup() and ec:IsLocation(LOCATION_MZONE) then + Duel.BreakEffect() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + ec:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + ec:RegisterEffect(e2) + end +end + +--destroy and damage +function c511009168.hdcon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst()==e:GetHandler():GetEquipTarget() and eg:GetFirst():IsStatus(STATUS_OPPO_BATTLE) +end +function c511009168.desfilter(c,lvl) + return c:IsFaceup() and c:IsLevelBelow(lvl) and c:IsDestructable() +end +function c511009168.hdtg(e,tp,eg,ep,ev,re,r,rp,chk) + local lvl=e:GetHandler():GetEquipTarget():GetBattleTarget():GetLevel() + if chk==0 then return Duel.IsExistingMatchingCard(c511009168.desfilter,tp,0,LOCATION_MZONE,1,nil,lvl) end + -- local g=Duel.GetMatchingGroup(c21313376.filter,tp,0,LOCATION_MZONE,nil,lvl) + local tc=Duel.SelectTarget(tp,c511009168.desfilter,tp,0,LOCATION_MZONE,1,1,nil,lvl) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c511009168.hdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.Destroy(tc,REASON_EFFECT) then + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end + diff --git a/script/c511009169.lua b/script/c511009169.lua new file mode 100644 index 00000000..ca011dd8 --- /dev/null +++ b/script/c511009169.lua @@ -0,0 +1,36 @@ +-- Speedroid Scratch +function c511009169.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009169.cost) + e1:SetTarget(c511009169.target) + e1:SetOperation(c511009169.activate) + c:RegisterEffect(e1) +end +function c511009169.costfilter(c) + return c:IsSetCard(0x2016) and c:IsAbleToGraveAsCost() and c:IsType(TYPE_MONSTER) +end +function c511009169.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009169.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511009169.costfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511009169.filter(c) + return c:IsSetCard(0x2016) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511009169.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009169.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511009169.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009169.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511009170.lua b/script/c511009170.lua new file mode 100644 index 00000000..8a70a656 --- /dev/null +++ b/script/c511009170.lua @@ -0,0 +1,38 @@ +--Speedroid Bamboo Horse +function c511009170.initial_effect(c) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(41269771,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c511009170.sptg) + e2:SetOperation(c511009170.spop) + c:RegisterEffect(e2) +end +function c511009170.filter(c,e,tp) + return c:IsSetCard(0x2016) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009170.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009170.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511009170.spop(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,c511009170.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c511009170.atktg) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c511009170.atktg(e,c) + return c:IsSetCard(0x2016) +end diff --git a/script/c511009171.lua b/script/c511009171.lua new file mode 100644 index 00000000..cc04c4c7 --- /dev/null +++ b/script/c511009171.lua @@ -0,0 +1,43 @@ +--Wind Witch Ice Bell +function c511009171.initial_effect(c) + --pos + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(17415895,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511009171.damcon) + e1:SetTarget(c511009171.damtg) + e1:SetOperation(c511009171.damop) + c:RegisterEffect(e1) + if not c511009171.global_check then + c511009171.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511009171) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511009171) + Duel.RegisterEffect(ge2,0) + end +end + +function c511009171.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(c:GetOriginalCode())>0 +end +function c511009171.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511009171.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511009172.lua b/script/c511009172.lua new file mode 100644 index 00000000..9df9170f --- /dev/null +++ b/script/c511009172.lua @@ -0,0 +1,20 @@ +--Wind Witch Snow Bell +function c511009172.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511009172.spcon) + c:RegisterEffect(e1) +end +function c511009172.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf0) +end +function c511009172.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009172.spfilter,tp,LOCATION_MZONE,0,2,nil) +end diff --git a/script/c511009173.lua b/script/c511009173.lua new file mode 100644 index 00000000..7665adb8 --- /dev/null +++ b/script/c511009173.lua @@ -0,0 +1,46 @@ +--Wind Witch Winter Bell +function c511009173.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0xf0),aux.NonTuner(Card.IsSetCard,0xf0),1) + c:EnableReviveLimit() + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(41209827,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c511009173.nmtg) + e2:SetOperation(c511009173.nmop) + c:RegisterEffect(e2) + if not c511009173.global_check then + c511009173.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511009173) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511009173) + Duel.RegisterEffect(ge2,0) + end +end +function c511009173.nmfil(c) + return c:IsLevelBelow(4) and c:IsSetCard(0xf0) and c:IsType(TYPE_MONSTER) +end +function c511009173.nmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511009173.nmfil(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009173.nmfil,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511009173.nmfil,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c511009173.nmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then + c:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end +end diff --git a/script/c511009174.lua b/script/c511009174.lua new file mode 100644 index 00000000..2443b4c6 --- /dev/null +++ b/script/c511009174.lua @@ -0,0 +1,86 @@ +--Wind Witch Crystal Bell +function c511009174.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,7543,c511009174.mat_filter,1,true,true) + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30312361,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c511009174.nmtg) + e1:SetOperation(c511009174.nmop) + c:RegisterEffect(e1) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(23899727,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c511009174.condition) + e1:SetTarget(c511009174.target) + e1:SetOperation(c511009174.operation) + c:RegisterEffect(e1) + if not c511009174.global_check then + c511009174.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511009174) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511009174) + Duel.RegisterEffect(ge2,0) + end +end +c511009174.miracle_synchro_fusion=true +function c511009174.mat_filter(c) + return c:IsFusionSetCard(0xf0) +end + +function c511009174.nmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsType(TYPE_MONSTER) end + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,TYPE_MONSTER) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,TYPE_MONSTER) +end +function c511009174.nmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) then + c:CopyEffect(tc:GetOriginalCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + end +end +function c511009174.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511009174.spfilter(c,e,tp) + return c:IsCode(7543) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c511009174.spfilter2,tp,LOCATION_GRAVE,0,1,c,e,tp) +end +function c511009174.spfilter2(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009174.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511009174.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c511009174.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c511009174.spfilter2,tp,LOCATION_GRAVE,0,1,1,g1:GetFirst(),e,tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,g1:GetCount(),0,0) +end +function c511009174.operation(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=tg:GetCount() then + Duel.SpecialSummon(tg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009175.lua b/script/c511009175.lua new file mode 100644 index 00000000..a356b6d7 --- /dev/null +++ b/script/c511009175.lua @@ -0,0 +1,43 @@ +--Wind-Calling Bell Chime +function c511009175.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009175.cost) + e1:SetTarget(c511009175.target) + e1:SetOperation(c511009175.activate) + c:RegisterEffect(e1) +end +function c511009175.cfilter(c,e,tp) + return c:IsSetCard(0xf0) and c:IsLevelBelow(4) and c:IsType(TYPE_MONSTER) and not c:IsPublic() + and Duel.IsExistingMatchingCard(c511009175.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) +end +function c511009175.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009175.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009175.cfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + e:SetLabel(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c511009175.cfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.ConfirmCards(1-tp,g) + e:SetLabel(g:GetFirst():GetCode()) + Duel.ShuffleHand(tp) +end +function c511009175.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + local code=e:GetLabel() + Duel.SetTargetParam(code) + e:SetLabel(0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) +end +function c511009175.activate(e,tp,eg,ep,ev,re,r,rp) + local code=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009175.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,code) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009180.lua b/script/c511009180.lua new file mode 100644 index 00000000..5d221d8e --- /dev/null +++ b/script/c511009180.lua @@ -0,0 +1,28 @@ +--Cipher Stranger (Anime) +function c511009180.initial_effect(c) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73146473,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetTarget(c511009180.thtg) + e2:SetOperation(c511009180.thop) + c:RegisterEffect(e2) +end + +function c511009180.sfilter(c) + return c:IsSetCard(0x95) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511009180.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009180.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511009180.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009180.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511009181.lua b/script/c511009181.lua new file mode 100644 index 00000000..0ebec400 --- /dev/null +++ b/script/c511009181.lua @@ -0,0 +1,33 @@ +--Guidance to the Abyss +function c511009181.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009181.condition) + e1:SetTarget(c511009181.target) + e1:SetOperation(c511009181.activate) + c:RegisterEffect(e1) +end +function c511009181.cfilter(c) + return c:IsSetCard(0xed) and c:IsType(TYPE_MONSTER) +end +function c511009181.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetMatchingGroupCount(c59839761.cfilter,e:GetHandler():GetControler(),LOCATION_GRAVE,0,nil)==2 +end +function c511009181.filter(c,e,tp) + return c:IsSetCard(0xed) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009181.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009181.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511009181.activate(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,c511009181.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009182.lua b/script/c511009182.lua new file mode 100644 index 00000000..96cdd407 --- /dev/null +++ b/script/c511009182.lua @@ -0,0 +1,43 @@ +--Mystic Egg +function c511009182.initial_effect(c) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetOperation(c511009182.regop) + c:RegisterEffect(e2) +end +function c511009182.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 and c:IsReason(REASON_DESTROY) then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100662,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(c:GetLocation()) + e1:SetTarget(c511009182.sptg) + e1:SetOperation(c511009182.spop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511009182.filter(c,e,tp) + return (c:IsCode(511009183) or c:IsCode(511009184) or c:IsCode(511009185))and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c511009182.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009182.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c511009182.spop(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.GetMatchingGroup(c511009182.filter,tp,LOCATION_HAND+LOCATION_DECK,0,nil) + local tc=g:RandomSelect(tp,1):GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c511009183.lua b/script/c511009183.lua new file mode 100644 index 00000000..93ae5b0d --- /dev/null +++ b/script/c511009183.lua @@ -0,0 +1,11 @@ +--Mystic Baby Dragon +function c511009183.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) +end \ No newline at end of file diff --git a/script/c511009186.lua b/script/c511009186.lua new file mode 100644 index 00000000..dc7819d9 --- /dev/null +++ b/script/c511009186.lua @@ -0,0 +1,11 @@ +--Mystic Dragon +function c511009186.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) +end diff --git a/script/c511009189.lua b/script/c511009189.lua new file mode 100644 index 00000000..e8f743ef --- /dev/null +++ b/script/c511009189.lua @@ -0,0 +1,41 @@ +--Mystic Revolution +function c511009189.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009189.cost) + e1:SetTarget(c511009189.target) + e1:SetOperation(c511009189.activate) + c:RegisterEffect(e1) +end +c511009189.list={[511009183]=511009186,[511009184]=511009187,[511009185]=511009188} +function c511009189.cfilter(c) + return c:IsCode(511009183) or c:IsCode(511009184) or c:IsCode(511009185) and + Duel.IsExistingMatchingCard(c511009189.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,c511009189.list[c:GetCode()],e,tp) +end +function c511009189.spfilter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c511009189.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c511009189.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c511009189.cfilter,1,1,nil) + Duel.Release(g,REASON_COST) + e:SetLabel(g:GetFirst():GetCode()) +end +function c511009189.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) +end +function c511009189.activate(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 code=e:GetLabel() + local g=Duel.SelectMatchingCard(tp,c511009189.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,code,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + g:GetFirst():CompleteProcedure() + end +end diff --git a/script/c511009190.lua b/script/c511009190.lua new file mode 100644 index 00000000..4178775b --- /dev/null +++ b/script/c511009190.lua @@ -0,0 +1,93 @@ +--Fairy Powder +function c511009190.initial_effect(c) + --lv change + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009190.target) + e1:SetOperation(c511009190.operation) + c:RegisterEffect(e1) +end +function c511009190.filter(c) + return c:GetLevel()>0 +end +function c511009190.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009190.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009190.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPDEFENSE) + Duel.SelectTarget(tp,c511009190.filter,tp,LOCATION_MZONE,0,1,1,nil) + end +function c511009190.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_RACE) + e2:SetValue(RACE_FAIRY) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetCondition(c511009190.effcon) + e3:SetReset(RESET_EVENT+17e0000+RESET_PHASE+PHASE_END) + e3:SetOperation(c511009190.effop) + tc:RegisterEffect(e3) + end +end + +function c511009190.effcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ and e:GetHandler():GetReasonCard():IsRace(RACE_FAIRY) +end +function c511009190.effop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,95100911) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(38331564,1)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511009190.atkcon) + e1:SetOperation(c511009190.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c511009190.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c511009190.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(66500065,1)) + e2:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end diff --git a/script/c511009191.lua b/script/c511009191.lua new file mode 100644 index 00000000..457178c8 --- /dev/null +++ b/script/c511009191.lua @@ -0,0 +1,37 @@ +--Lyrical Luscinia - Sapphire Sparrow +--fixed by MLD +function c511009191.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59708927,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetTarget(c511009191.sptg) + e1:SetOperation(c511009191.spop) + c:RegisterEffect(e1) +end +function c511009191.spfilter(c,e,tp) + return c:GetLevel()==1 and c:IsSetCard(0x1f8) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009191.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x1f8) and c:GetCode()~=511009191 +end +function c511009191.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c511009191.filter,tp,LOCATION_MZONE,0,1,e:GetHandler(),e,tp) + and Duel.IsExistingMatchingCard(c511009191.spfilter,tp,LOCATION_HAND,0,1,e:GetHandler(),e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c511009191.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009191.spfilter,tp,LOCATION_HAND,0,1,1,c,e,tp) + if g:GetCount()>0 then + g:AddCard(c) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009192.lua b/script/c511009192.lua new file mode 100644 index 00000000..145934c7 --- /dev/null +++ b/script/c511009192.lua @@ -0,0 +1,29 @@ +--Lyrical Luscinia - Cobalt Sparrow +--fixed by MLD +function c511009192.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(24432029,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c511009192.target) + e1:SetOperation(c511009192.operation) + c:RegisterEffect(e1) +end +function c511009192.filter(c) + return c:IsCode(511009192) and c:IsAbleToHand() +end +function c511009192.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009192.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511009192.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009192.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511009193.lua b/script/c511009193.lua new file mode 100644 index 00000000..87f061c6 --- /dev/null +++ b/script/c511009193.lua @@ -0,0 +1,126 @@ +--Lyrical Luscinia - Assemble Nightingale +--fixed by MLD +function c511009193.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x1f8),1,2,nil,nil,63) + c:EnableReviveLimit() + --atk + 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:SetValue(c511009193.atkval) + c:RegisterEffect(e1) + --mutiple direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c511009193.rdcon) + e2:SetOperation(c511009193.rdop) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c511009193.dircon) + c:RegisterEffect(e3) + --no damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e5:SetCondition(c511009193.damcon) + e5:SetOperation(c511009193.damop) + c:RegisterEffect(e5) + --destroy replace + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EFFECT_DESTROY_REPLACE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetTarget(c511009193.reptg) + c:RegisterEffect(e6) +end +function c511009193.atkval(e,c) + return c:GetOverlayCount()*100 +end +function c511009193.rdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep~=tp and c==Duel.GetAttacker() and Duel.GetAttackTarget()==nil and c:GetFlagEffect(511009193)0 then return false end + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if c:IsAttackPos() and bc:IsDefensePos() and bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 + and c:GetAttack()<=bc:GetDefense() then return true end + if c:IsAttackPos() and (bc:IsAttackPos() or bc:IsHasEffect(EFFECT_DEFENSE_ATTACK)) + and c:GetAttack()<=bc:GetAttack() then return true end + if c:IsDefensePos() and bc:IsDefensePos() and bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 + and c:GetDefense()0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c511009194.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=e:GetHandler():GetLevel()*500 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c511009195.lua b/script/c511009195.lua new file mode 100644 index 00000000..9a144664 --- /dev/null +++ b/script/c511009195.lua @@ -0,0 +1,31 @@ +--Lyrical Luscinia - Bird Song +--fixed by MLD +function c511009195.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511009195.condition) + e1:SetTarget(c511009195.target) + e1:SetOperation(c511009195.activate) + c:RegisterEffect(e1) +end +function c511009195.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst():GetControler()==tp and eg:GetFirst():IsSetCard(0x1f8) +end +function c511009195.filter(c,e,tp) + return c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009195.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009195.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511009195.activate(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,c511009195.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end \ No newline at end of file diff --git a/script/c511009196.lua b/script/c511009196.lua new file mode 100644 index 00000000..975b7970 --- /dev/null +++ b/script/c511009196.lua @@ -0,0 +1,46 @@ +--Lyrical Luscinia - Bird Strike +--fixed by MLD +function c511009196.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009196.condition) + e1:SetTarget(c511009196.target) + e1:SetOperation(c511009196.activate) + c:RegisterEffect(e1) +end +function c511009196.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1f8) +end +function c511009196.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009196.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511009196.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,0,LOCATION_MZONE,1,nil) end +end +function c511009196.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end +end diff --git a/script/c511009198.lua b/script/c511009198.lua new file mode 100644 index 00000000..f2fc3e82 --- /dev/null +++ b/script/c511009198.lua @@ -0,0 +1,48 @@ +--Galaxy-Eyes Nova +function c511009198.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_ATTACK,TIMING_ATTACK) + e1:SetCost(c511009198.cost) + e1:SetTarget(c511009198.target) + e1:SetOperation(c511009198.activate) + c:RegisterEffect(e1) +end +function c511009198.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x107b) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x107b) + Duel.Release(g,REASON_COST) +end +function c511009198.filter(c,e,tp) + return c:IsSetCard(0x107b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009198.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511009198.filter(chkc,e,tp) end + if chk==0 then + if e:GetLabel()==1 then + e:SetLabel(0) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511009198.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511009198.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511009198.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + e:SetLabel(0) +end +function c511009198.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009200.lua b/script/c511009200.lua new file mode 100644 index 00000000..f70f4571 --- /dev/null +++ b/script/c511009200.lua @@ -0,0 +1,21 @@ +--Fool Clown +--Scripted by eclair11 +function c511009200.initial_effect(c) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c511009200.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c511009200.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511009202.lua b/script/c511009202.lua new file mode 100644 index 00000000..417925de --- /dev/null +++ b/script/c511009202.lua @@ -0,0 +1,37 @@ +--Search Shock +--Scripted by eclair11 +function c511009202.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009202.cost) + e1:SetTarget(c511009202.target) + e1:SetOperation(c511009202.activate) + c:RegisterEffect(e1) +end +function c511009202.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511009202.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009202.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511009202.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511009202.filter(c) + return c:IsCode(511002885) and c:IsAbleToHand() +end +function c511009202.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009202.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511009202.activate(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009202.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c511009203.lua b/script/c511009203.lua new file mode 100644 index 00000000..e8ad6d5a --- /dev/null +++ b/script/c511009203.lua @@ -0,0 +1,63 @@ +--Lightning Saber +--Scripted by eclair11 +function c511009203.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(c511009203.target) + e1:SetOperation(c511009203.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + 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) + --chain attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLED) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511009203.chcon) + e4:SetOperation(c511009203.chop) + c:RegisterEffect(e4) +end +function c511009203.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 c511009203.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 c511009203.chcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler():GetEquipTarget() + local bc=c:GetBattleTarget() + return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) +end +function c511009203.chop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler():GetEquipTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(c:GetAttack()/2) + c:RegisterEffect(e1) + Duel.ChainAttack() +end \ No newline at end of file diff --git a/script/c511009204.lua b/script/c511009204.lua new file mode 100644 index 00000000..b47f8595 --- /dev/null +++ b/script/c511009204.lua @@ -0,0 +1,33 @@ +--Last Groan +--Scripted by eclair11 +function c511009204.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009204.condition) + e1:SetTarget(c511009204.target) + e1:SetOperation(c511009204.activate) + c:RegisterEffect(e1) +end +function c511009204.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511009204.filter(c,e,tp) + return (c:IsCode(511002160) or c:IsCode(511002522)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009204.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009204.filter,tp,LOCATION_DECK,0,1,nil,e,tp) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511009204.activate(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,c511009204.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511009205.lua b/script/c511009205.lua new file mode 100644 index 00000000..ddc8bba3 --- /dev/null +++ b/script/c511009205.lua @@ -0,0 +1,40 @@ +--Counterstrike Molt +--Scripted by eclair11 +function c511009205.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c511009205.condition) + e1:SetTarget(c511009205.target) + e1:SetOperation(c511009205.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_BATTLE_DESTROYED) + c:RegisterEffect(e2) +end +function c511009205.filter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c511009205.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511009205.filter,1,nil,tp) +end +function c511009205.spfilter(c,e,sp,val) + return c:IsRace(RACE_INSECT) and c:GetLevel()0 + and Duel.IsExistingMatchingCard(c511009205.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp,tc:GetLevel()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511009205.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009205.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp,tc:GetLevel()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511009206.lua b/script/c511009206.lua new file mode 100644 index 00000000..719cacb2 --- /dev/null +++ b/script/c511009206.lua @@ -0,0 +1,34 @@ +--Infernity Queen +--Scripted by eclair11 +function c511009206.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCondition(c511009206.condition) + e1:SetTarget(c511009206.target) + e1:SetOperation(c511009206.operation) + c:RegisterEffect(e1) +end +function c511009206.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 +end +function c511009206.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsFaceup() and chkc:IsLocation(LOCATION_MZONE) 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 c511009206.operation(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:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c511009207.lua b/script/c511009207.lua new file mode 100644 index 00000000..cc698fcd --- /dev/null +++ b/script/c511009207.lua @@ -0,0 +1,30 @@ +--Iron Resolve +--Scripted by eclair11 +--fixed by MLD +function c511009207.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:SetCost(c511009207.cost) + e1:SetOperation(c511009207.activate) + c:RegisterEffect(e1) +end +function c511009207.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511009207.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.BreakEffect() + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end \ No newline at end of file diff --git a/script/c511009208.lua b/script/c511009208.lua new file mode 100644 index 00000000..8c0f783c --- /dev/null +++ b/script/c511009208.lua @@ -0,0 +1,56 @@ +--Courageous Heart +--Scripted by eclair11 +function c511009208.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c511009208.cost) + e1:SetTarget(c511009208.target) + e1:SetOperation(c511009208.activate) + c:RegisterEffect(e1) +end +function c511009208.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511009208.negfilter(c) + return c:IsType(TYPE_MONSTER) and aux.disfilter1(c) +end +function c511009208.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and c511009208.negfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009208.negfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511009208.negfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511009208.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + end +end \ No newline at end of file diff --git a/script/c511009209.lua b/script/c511009209.lua new file mode 100644 index 00000000..4da9ace8 --- /dev/null +++ b/script/c511009209.lua @@ -0,0 +1,38 @@ +--Robocircus +--Scripted by eclair11 +function c511009209.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCountLimit(1) + e2:SetTarget(c511009209.target) + e2:SetOperation(c511009209.operation) + c:RegisterEffect(e2) +end +function c511009209.filter(c,e,pl) + return c:IsSetCard(0x85) and c:IsCanBeSpecialSummoned(e,0,pl,false,false) +end +function c511009209.target(e,tp,eg,ep,ev,re,r,rp,chk) + local pl=eg:GetFirst():GetSummonPlayer() + local tc=eg:GetFirst() + if chk==0 then return tc:IsRace(RACE_MACHINE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009209.filter,pl,LOCATION_HAND,0,1,nil,e,pl) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,pl,LOCATION_HAND) +end +function c511009209.operation(e,tp,eg,ep,ev,re,r,rp) + local pl=eg:GetFirst():GetSummonPlayer() + if Duel.GetLocationCount(pl,LOCATION_MZONE)<=0 or not Duel.SelectEffectYesNo(pl,e:GetHandler()) then return end + Duel.Hint(HINT_SELECTMSG,pl,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(pl,c511009209.filter,pl,LOCATION_HAND,0,1,1,nil,e,pl) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,pl,pl,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c511009210.lua b/script/c511009210.lua new file mode 100644 index 00000000..3bc868cb --- /dev/null +++ b/script/c511009210.lua @@ -0,0 +1,40 @@ +--Labyrinth of Decisions +--Scripted by eclair11 +function c511009210.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --send to grave + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLED) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511009210.condition) + e2:SetCost(c511009210.cost) + e2:SetTarget(c511009210.target) + e2:SetOperation(c511009210.operation) + c:RegisterEffect(e2) +end +function c511009210.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()) + or Duel.GetAttackTarget():IsControler(1-tp) +end +function c511009210.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,600) end + Duel.PayLPCost(tp,600) +end +function c511009210.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,0,LOCATION_HAND) +end +function c511009210.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) + local sg=g:Select(1-tp,1,1,nil) + Duel.HintSelection(sg) + Duel.SendtoGrave(sg,REASON_RULE) + end +end \ No newline at end of file diff --git a/script/c511009212.lua b/script/c511009212.lua new file mode 100644 index 00000000..0d3ae4c0 --- /dev/null +++ b/script/c511009212.lua @@ -0,0 +1,135 @@ +--Spell Search +--remade by MLD with tips from Shad3 +function c511009212.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PREDRAW) + e1:SetCondition(aux.FALSE) + e1:SetTarget(c511009212.faketg) + e1:SetOperation(c511009212.fakeop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511009212.condition) + e2:SetTarget(c511009212.target) + e2:SetOperation(c511009212.activate) + c:RegisterEffect(e2) + if not c511009212.global_check then + c511009212.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ADJUST) + ge1:SetOperation(c511009212.checkop) + ge1:SetCountLimit(1) + Duel.RegisterEffect(ge1,0) + end +end +function c511009212.faketg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetTurnPlayer()~=tp and Duel.GetDrawCount(1-tp)>0 end + local dt=Duel.GetDrawCount(1-tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(0,1) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end +end +function c511009212.fakeop(e,tp,eg,ep,ev,re,r,rp) + _replace_count=_replace_count+1 + if _replace_count<=_replace_max then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(1-tp,c511009212.afilter,1-tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(tp,g) + else + local dg=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + Duel.ConfirmCards(tp,dg) + Duel.ShuffleDeck(1-tp) + end + end +end +function c511009212.filter(c) + return c:GetOriginalCode()==511009212 +end +function c511009212.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009212.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + --local g2=Group.CreateGroup() + local tc=g:GetFirst() + while tc do + local te=tc:GetActivateEffect() + te:SetCondition(aux.TRUE) + if te:IsActivatable(tc:GetControler()) and Duel.SelectYesNo(tc:GetControler(),aux.Stringid(28265983,0)) then + Duel.ChangePosition(tc,POS_FACEUP) + --g2:AddCard(tc) + end + te:SetCondition(aux.FALSE) + tc=g:GetNext() + end + --[[if g2:GetCount()>0 then + Duel.RaiseEvent(g2,EVENT_PREDRAW,e,REASON_EFFECT,Duel.GetTurnPlayer(),Duel.GetTurnPlayer(),0) + end]] +end +function c511009212.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetDrawCount(1-tp)>0 +end +function c511009212.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return true end + e:SetType(EFFECT_TYPE_ACTIVATE) + local dt=Duel.GetDrawCount(1-tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(0,1) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_END) + e2:SetLabelObject(e) + e2:SetOperation(c511009212.resetop) + e2:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e2,tp) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,1-tp,LOCATION_DECK) +end +function c511009212.resetop(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) +end +function c511009212.afilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c511009212.activate(e,tp,eg,ep,ev,re,r,rp) + _replace_count=_replace_count+1 + if _replace_count<=_replace_max then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(1-tp,c511009212.afilter,1-tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(tp,g) + else + local dg=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + Duel.ConfirmCards(tp,dg) + Duel.ShuffleDeck(1-tp) + end + end +end diff --git a/script/c511009213.lua b/script/c511009213.lua new file mode 100644 index 00000000..bdc328a0 --- /dev/null +++ b/script/c511009213.lua @@ -0,0 +1,23 @@ +--Grand Naval Battle +--Scripted by eclair11 +function c511009213.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --double damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c511009213.condition) + e2:SetOperation(c511009213.operation) + c:RegisterEffect(e2) +end +function c511009213.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(tp) and Duel.GetAttacker():IsAttribute(ATTRIBUTE_WATER) +end +function c511009213.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(1-tp,ev*2) +end \ No newline at end of file diff --git a/script/c511009214.lua b/script/c511009214.lua new file mode 100644 index 00000000..19d34ef4 --- /dev/null +++ b/script/c511009214.lua @@ -0,0 +1,61 @@ +--Metal Reflect Slime +--Scripted by eclair11 +function c511009214.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511009214.condition) + e1:SetTarget(c511009214.target) + e1:SetOperation(c511009214.activate) + c:RegisterEffect(e1) +end +function c511009214.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and ev>=Duel.GetLP(tp)+ev/2 +end +function c511009214.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,511009215,0,0x4011,0,-2,1,RACE_AQUA,ATTRIBUTE_WATER) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511009214.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511009215,0,0x4011,0,-2,1,RACE_AQUA,ATTRIBUTE_WATER) then return end + local token=Duel.CreateToken(tp,511009215) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + if tc:IsHasEffect(EFFECT_ADD_RACE) and not tc:IsHasEffect(EFFECT_CHANGE_RACE) then + e1:SetValue(tc:GetOriginalRace()) + else + e1:SetValue(tc:GetRace()) + end + e1:SetReset(RESET_EVENT+0x1ff0000) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + if tc:IsHasEffect(EFFECT_ADD_ATTRIBUTE) and not tc:IsHasEffect(EFFECT_CHANGE_ATTRIBUTE) then + e2:SetValue(tc:GetOriginalAttribute()) + else + e2:SetValue(tc:GetAttribute()) + end + e2:SetReset(RESET_EVENT+0x1ff0000) + token:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_DEFENSE) + e3:SetValue(tc:GetAttack()*3/4) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3,true) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_ATTACK) + e4:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e4,true) + Duel.SpecialSummonComplete() +end \ No newline at end of file diff --git a/script/c511009300.lua b/script/c511009300.lua new file mode 100644 index 00000000..e4fdcfd6 --- /dev/null +++ b/script/c511009300.lua @@ -0,0 +1,179 @@ +--Gladiator Beast Andabatae +function c511009300.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,7573135,aux.FilterBoolFunction(Card.IsFusionSetCard,0x19),2,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511009300.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(27346636,1)) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511009300.sprcon) + e2:SetOperation(c511009300.sprop) + c:RegisterEffect(e2) + --spsummon when summoned + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(7573135,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c511009300.hsptg) + e3:SetOperation(c511009300.hspop) + c:RegisterEffect(e3) + + --special summon after battle + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(48156348,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_PHASE+PHASE_BATTLE) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c511009300.spcon) + e4:SetCost(c511009300.spcost) + e4:SetTarget(c511009300.sptg) + e4:SetOperation(c511009300.spop) + c:RegisterEffect(e4) + --gain atk when a GB is shuffled + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(36378213,0)) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCategory(CATEGORY_ATKCHANGE) + e5:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e5:SetCode(EVENT_TO_DECK) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c511009300.atkcon) + e5:SetOperation(c511009300.atkop) + c:RegisterEffect(e5) +end +function c511009300.splimit(e,se,sp,st) + return e:GetHandler():GetLocation()~=LOCATION_EXTRA +end +function c511009300.spfilter1(c,tp) + return c:IsFusionCode(7573135) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) + and Duel.IsExistingMatchingCard(c511009300.spfilter2,tp,LOCATION_MZONE,0,2,c) +end +function c511009300.spfilter2(c) + return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() +end +function c511009300.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 + and Duel.IsExistingMatchingCard(c511009300.spfilter1,tp,LOCATION_ONFIELD,0,1,nil,tp) +end +function c511009300.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(27346636,2)) + local g1=Duel.SelectMatchingCard(tp,c511009300.spfilter1,tp,LOCATION_ONFIELD,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(27346636,3)) + local g2=Duel.SelectMatchingCard(tp,c511009300.spfilter2,tp,LOCATION_MZONE,0,2,2,g1:GetFirst()) + g1:Merge(g2) + local tc=g1:GetFirst() + while tc do + if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end + tc=g1:GetNext() + end + Duel.SendtoDeck(g1,nil,2,REASON_COST) +end + + + + +function c511009300.hspfilter(c,e,tp) + return c:IsSetCard(0x19) and not c:IsCode(511009300) and c:IsCanBeSpecialSummoned(e,113,tp,true,false) +end +function c511009300.hsptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009300.hspfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009300.hspop(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,c511009300.hspfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + tc:RegisterFlagEffect(511009300,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCountLimit(1) + e1:SetLabelObject(tc) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c511009300.retcon) + e1:SetOperation(c511009300.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c511009300.retcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return tc:GetFlagEffect(511009300)>0 and tc:IsRelateToBattle() and tc:IsFaceup() +end +function c511009300.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) +end + + + +function c511009300.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 +end +function c511009300.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToExtraAsCost() end + Duel.SendtoDeck(c,nil,0,REASON_COST) +end +function c511009300.filter(c,e,tp) + return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,120,tp,false,false) +end +function c511009300.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009300.filter,tp,LOCATION_DECK,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c511009300.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g=Duel.GetMatchingGroup(c511009300.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + local tc=sg:GetFirst() + Duel.SpecialSummonStep(tc,120,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + tc=sg:GetNext() + Duel.SpecialSummonStep(tc,120,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + Duel.SpecialSummonComplete() + end +end +function c511009300.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetCount()==1 and eg:GetFirst():IsSetCard(0x19) +end +function c511009300.atkfilter(c,e,tp) + return c:GetPreviousControler()==tp and c:IsSetCard(0x19) and c:GetAttack()>0 +end +function c511009300.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler() + local g=eg:Filter(c511009300.atkfilter,nil,e,tp) + if not g:GetCount()==1 then return end + local atk=g:GetSum(Card.GetAttack) + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(atk) + tc:RegisterEffect(e1) +end diff --git a/script/c511009301.lua b/script/c511009301.lua new file mode 100644 index 00000000..0f25325c --- /dev/null +++ b/script/c511009301.lua @@ -0,0 +1,31 @@ +--Willpower of Gladiator Beast +function c511009301.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009301.actcon) + c:RegisterEffect(e1) + --cannot direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e5:SetTargetRange(0,LOCATION_MZONE) + e5:SetValue(c511009301.atlimit) + c:RegisterEffect(e5) +end +function c511009301.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x19) +end +function c511009301.actcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009301.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511009301.atlimit(e,c) + return not c:IsSetCard(0x19) or c:IsFacedown() +end \ No newline at end of file diff --git a/script/c511009302.lua b/script/c511009302.lua new file mode 100644 index 00000000..fcbe3eec --- /dev/null +++ b/script/c511009302.lua @@ -0,0 +1,32 @@ +--Medallion of Gladiator Beast +function c511009302.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x19)) + e2:SetValue(1) + c:RegisterEffect(e2) + --damage reduce + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(20281581,0)) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c511009302.rdcon) + e2:SetOperation(c511009302.rdop) + c:RegisterEffect(e2) +end +function c511009302.rdcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511009302.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev*2) +end \ No newline at end of file diff --git a/script/c511009304.lua b/script/c511009304.lua new file mode 100644 index 00000000..9d0aaed3 --- /dev/null +++ b/script/c511009304.lua @@ -0,0 +1,202 @@ +--Gladiator Beast Tamer Editor +function c511009304.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,c511009304.ffilter,2,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c511009304.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c511009304.sprcon) + e2:SetOperation(c511009304.sprop) + c:RegisterEffect(e2) + + --Special Summon + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetTarget(c511009304.sptg) + e5:SetOperation(c511009304.spop) + c:RegisterEffect(e5) + --negate attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetOperation(c511009304.op) + c:RegisterEffect(e2) + + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(29669359,2)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e2:SetCountLimit(1) + e2:SetCondition(c511009304.descon) + e2:SetTarget(c511009304.destg) + e2:SetOperation(c511009304.desop) + c:RegisterEffect(e2) + + --shuffle and summon + + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(92373006,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetCondition(c511009304.condition) + e3:SetCost(c511009304.spcost2) + e3:SetTarget(c511009304.sptg2) + e3:SetOperation(c511009304.spop2) + c:RegisterEffect(e3) + + if not c511009304.global_check then + c511009304.global_check=true + c511009304[0]=false + c511009304[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE_STEP_END) + ge1:SetOperation(c511009304.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c511009304.clear) + Duel.RegisterEffect(ge2,0) + end +end +--summon itself +function c511009304.ffilter(c) + return c:IsFusionSetCard(0x19) and c:GetLevel()>=5 +end +function c511009304.splimit(e,se,sp,st) + return e:GetHandler():GetLocation()~=LOCATION_EXTRA +end +function c511009304.spfilter(c) + return c:IsFusionSetCard(0x19) and c:GetLevel()>=5 and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() +end +function c511009304.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c511009304.spfilter,tp,LOCATION_MZONE,0,2,nil) +end +function c511009304.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c511009304.spfilter,tp,LOCATION_MZONE,0,2,2,nil) + local tc=g:GetFirst() + while tc do + if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end + tc=g:GetNext() + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end + +--special summon 1 GB +function c511009304.sumfilter(c,e,tp) + return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511009304.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009304.sumfilter,tp,LOCATION_EXTRA,LOCATION_EXTRA,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511009304.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009304.sumfilter,tp,LOCATION_EXTRA,LOCATION_EXTRA,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,g:GetFirst():GetControler(),true,false,POS_FACEUP) + end +end +--destroy +function c511009304.desconfilter(c) + return c:IsFaceup() and c:IsSetCard(0x19) +end +function c511009304.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009304.desconfilter,tp,LOCATION_MZONE,0,2,nil) +end +function c511009304.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,g:GetFirst():GetControler(),g:GetFirst():GetAttack()) +end +function c511009304.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local dam=tc:GetAttack() + local p=tc:GetControler() + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(p,dam,REASON_EFFECT) + end + end +end + +--negate attack +function c511009304.op(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end + +--shuffle +function c511009304.condition(e,tp,eg,ep,ev,re,r,rp) + return c511009304[tp] +end +function c511009304.checkop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if Duel.GetAttacker():IsSetCard(0x19) and at then + c511009304[0]=true + c511009304[1]=true + end +end +function c511009304.clear(e,tp,eg,ep,ev,re,r,rp) + c511009304[0]=false + c511009304[1]=false +end +function c511009304.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x19) and c:IsAbleToDeck() +end +function c511009304.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009304.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c511009304.cfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c511009304.spfilter2(c,e,tp) + return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009304.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511009304.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511009304.spop2(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,c511009304.spfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,130,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + end + end +end + + diff --git a/script/c511009305.lua b/script/c511009305.lua new file mode 100644 index 00000000..8b6452e8 --- /dev/null +++ b/script/c511009305.lua @@ -0,0 +1,52 @@ +--Double Resonator +function c511009305.initial_effect(c) + --tuner + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c511009305.target) + e1:SetCondition(c511009305.condition) + e1:SetOperation(c511009305.operation) + c:RegisterEffect(e1) + if not c511009305.global_check then + c511009305.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511009305) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511009305) + Duel.RegisterEffect(ge2,0) + end +end +function c511009305.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511009305)>0 +end +function c511009305.filter(c) + return c:IsFaceup() and not c:IsType(TYPE_TUNER) +end +function c511009305.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511009305.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009305.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009305.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009305.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009306.lua b/script/c511009306.lua new file mode 100644 index 00000000..2ee1da7b --- /dev/null +++ b/script/c511009306.lua @@ -0,0 +1,153 @@ +--Gladiator Beast Medusa Shield +function c511009306.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,0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511009306.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(c511009306.tgcon) + e2:SetOperation(c511009306.tgop) + c:RegisterEffect(e2) + --cannot be destroyed effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c511009306.indtg) + e3:SetValue(1) + c:RegisterEffect(e3) + --disable + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DISABLE) + e4:SetDescription(aux.Stringid(74416224,0)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c511009306.negtg) + e4:SetOperation(c511009306.negop) + c:RegisterEffect(e4) + --Destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c511009306.descon) + e5:SetOperation(c511009306.desop) + c:RegisterEffect(e5) + + --to grave + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_TO_GRAVE) + e6:SetOperation(c511009306.regop) + c:RegisterEffect(e6) +end +function c511009306.filter(c) + return c:IsFaceup() and c:IsSetCard(0x19) +end +function c511009306.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009306.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009306.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511009306.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511009306.tgcon(e,tp,eg,ep,ev,re,r,rp) + return re==e:GetLabelObject() +end +function c511009306.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() + if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then + c:SetCardTarget(tc) + end +end +function c511009306.indtg(e,c) + return e:GetHandler():IsHasCardTarget(c) +end + +function c511009306.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,0,0) +end +function c511009306.negop(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,aux.disfilter1,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end + + + +function c511009306.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c511009306.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end + + +function c511009306.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44860890,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_GRAVE) + e1:SetHintTiming(TIMING_END_PHASE) + e1:SetCountLimit(1) + e1:SetCondition(c511009306.setcon) + e1:SetTarget(c511009306.settg) + e1:SetOperation(c511009306.setop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c511009306.setcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_END +end +function c511009306.setfilter(c) + return c:IsSetCard(0x19) and c:IsType(TYPE_TRAP) and c:IsSSetable() +end +function c511009306.settg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c511009306.setfilter,tp,LOCATION_DECK,0,1,nil) end +end +function c511009306.setop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local g=Duel.SelectMatchingCard(tp,c511009306.setfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SSet(tp,g:GetFirst()) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511009307.lua b/script/c511009307.lua new file mode 100644 index 00000000..523ab40d --- /dev/null +++ b/script/c511009307.lua @@ -0,0 +1,46 @@ +--Ancient Gear Devil (Anime) +function c511009307.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x7),2,true) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5014629,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511009307.damtg) + e1:SetOperation(c511009307.damop) + c:RegisterEffect(e1) + --Unaffected by Opponent Card Effects + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetCondition(c511009307.eqcon) + e2:SetValue(c511009307.unval) + c:RegisterEffect(e2) +end +function c511009307.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL) +end +function c511009307.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009307.filter,tp,LOCATION_ONFIELD,0,1,nil) end + local ct=Duel.GetMatchingGroupCount(c511009307.filter,tp,LOCATION_ONFIELD,0,nil) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ct*1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*1000) +end +function c511009307.damop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c511009307.filter,tp,LOCATION_ONFIELD,0,nil) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,ct*1000,REASON_EFFECT) +end +function c511009307.eqcon(e) + return e:GetHandler():GetEquipGroup()>0 +end +function c511009307.unval(e,te) + return te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end \ No newline at end of file diff --git a/script/c511009308.lua b/script/c511009308.lua new file mode 100644 index 00000000..48d0233b --- /dev/null +++ b/script/c511009308.lua @@ -0,0 +1,34 @@ +--White Salvation +function c511009308.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511009308.target) + e2:SetOperation(c511009308.operation) + c:RegisterEffect(e2) +end +function c511009308.filter(c) + return c:IsSetCard(0x202) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511009308.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009308.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c511009308.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009308.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c511009309.lua b/script/c511009309.lua new file mode 100644 index 00000000..78f90614 --- /dev/null +++ b/script/c511009309.lua @@ -0,0 +1,39 @@ +--White Line +function c511009309.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511009309.target) + e1:SetOperation(c511009309.activate) + c:RegisterEffect(e1) +end +function c511009309.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPATTACK) + local g=Duel.SelectTarget(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) +end +function c511009309.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,0,0) then + 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(c511009309.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c511009309.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end \ No newline at end of file diff --git a/script/c511009310.lua b/script/c511009310.lua new file mode 100644 index 00000000..b9fb4a88 --- /dev/null +++ b/script/c511009310.lua @@ -0,0 +1,32 @@ +--Synchro Zone +function c511009310.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009310.target) + e1:SetOperation(c511009310.operation) + c:RegisterEffect(e1) + --disable attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(78625592,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c511009310.target) + e2:SetOperation(c511009310.operation) + c:RegisterEffect(e2) +end +function c511009310.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tg=Duel.GetAttacker() + e:SetLabel(0) + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and tg:IsType(TYPE_SYNCHRO) and tp~=Duel.GetTurnPlayer() then + e:SetLabel(1) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) + end +end +function c511009310.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.NegateAttack() +end diff --git a/script/c511009311.lua b/script/c511009311.lua new file mode 100644 index 00000000..e438b033 --- /dev/null +++ b/script/c511009311.lua @@ -0,0 +1,43 @@ +--Cyber Tutubon +function c511009311.initial_effect(c) + --become material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c511009311.condition) + e2:SetOperation(c511009311.operation) + c:RegisterEffect(e2) +end +function c511009311.condition(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RITUAL +end +function c511009311.operation(e,tp,eg,ep,ev,re,r,rp) +local c=e:GetHandler() + if c:IsReason(REASON_RITUAL) then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(96729612,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_GRAVE+LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED) + e1:SetReset(RESET_EVENT+0x2fe0000+RESET_PHASE+PHASE_END) + e1:SetTarget(c511009311.thtg) + e1:SetOperation(c511009311.thop) + c:RegisterEffect(e1) + end +end +function c511009311.thfilter(c) + return c:GetType()==0x82 and c:IsAbleToHand() +end +function c511009311.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009311.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c511009311.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009311.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end \ No newline at end of file diff --git a/script/c511009312.lua b/script/c511009312.lua new file mode 100644 index 00000000..79171ac1 --- /dev/null +++ b/script/c511009312.lua @@ -0,0 +1,51 @@ +--Unfinished Ancient Gear +--fixed by MLD +function c511009312.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009312.target) + e1:SetOperation(c511009312.activate) + c:RegisterEffect(e1) +end +function c511009312.spfilter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x7) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c511009312.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009312.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511009312.activate(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,c511009312.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + local atk=tc:GetAttack() + local def=tc:GetDefense() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(atk/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetValue(def/2) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3,true) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511009314.lua b/script/c511009314.lua new file mode 100644 index 00000000..9c197320 --- /dev/null +++ b/script/c511009314.lua @@ -0,0 +1,33 @@ +--Wire Mesh - Chain Deathmatch +function c511009314.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5361647,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCost(c511009314.descost) + e2:SetTarget(c511009314.destg) + e2:SetOperation(c511009314.desop) + c:RegisterEffect(e2) +end +function c511009314.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c511009314.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 c511009314.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511009315.lua b/script/c511009315.lua new file mode 100644 index 00000000..1b9ad33a --- /dev/null +++ b/script/c511009315.lua @@ -0,0 +1,74 @@ +--Multiplying Thorns +function c511009315.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c511009315.descon) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c511009315.damtg) + e3:SetOperation(c511009315.damop) + c:RegisterEffect(e3) + --Self Damage (when thorn counter is removed) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_REMOVE_COUNTER+0x1104) + e4:SetOperation(c511009315.damop1) + c:RegisterEffect(e4) + --Self Damage 2 (when monster with Thorn counter leave the field) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetRange(LOCATION_SZONE) + e5:SetOperation(c511009315.damop2) + c:RegisterEffect(e5) +end +function c511009315.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local p=Duel.GetTurnPlayer() + local ct=Duel.GetCounter(p,LOCATION_ONFIELD,0,0x1104) + Duel.SetTargetPlayer(p) + Duel.SetTargetParam(ct*400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,p,ct*400) +end +function c511009315.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511009315.descon(e) + return Duel.GetCounter(0,1,0,0x1104)==0 +end +function c511009315.damop1(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,ev*100,REASON_EFFECT) +end +function c511009315.damop2(e,tp,eg,ep,ev,re,r,rp) + local count=0 + local c=eg:GetFirst() + while c~=nil do + if c:IsPreviousLocation(LOCATION_ONFIELD) then + count=count+c:GetCounter(0x1104) + end + c=eg:GetNext() + end + if count>0 then + Duel.Damage(tp,count*100,REASON_EFFECT) + end +end diff --git a/script/c511009316.lua b/script/c511009316.lua new file mode 100644 index 00000000..608b33b9 --- /dev/null +++ b/script/c511009316.lua @@ -0,0 +1,67 @@ +--Smile Potion +function c511009316.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511009316) + e1:SetCondition(c511009316.condition) + e1:SetTarget(c511009316.target) + e1:SetOperation(c511009316.activate) + c:RegisterEffect(e1) + if not c511009316.global_check then + c511009316.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c511009316.operation) + Duel.RegisterEffect(e2,0) + end +end +function c511009316.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511009316.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511009316.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end + +--atk change check +function c511009316.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511009316)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511009316.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511009316,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511009316.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + val=c:GetAttack()-e:GetLabel() + if val>0 then + Duel.RaiseEvent(c,511009316,re,REASON_EFFECT,rp,tp,val) + end + e:SetLabel(c:GetAttack()) +end \ No newline at end of file diff --git a/script/c511009317.lua b/script/c511009317.lua new file mode 100644 index 00000000..c7d864dc --- /dev/null +++ b/script/c511009317.lua @@ -0,0 +1,101 @@ +--Raidraptor - Iron Heart +--fixed by MLD +function c511009317.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(c511009317.target) + e1:SetOperation(c511009317.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + 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(c511009317.eqlimit) + c:RegisterEffect(e3) + --summon + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetRange(LOCATION_GRAVE) + e4:SetCondition(c511009317.sumcon) + e4:SetTarget(c511009317.sumtg) + e4:SetOperation(c511009317.sumop) + c:RegisterEffect(e4) +end +function c511009317.eqlimit(e,c) + return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) +end +function c511009317.filter(c) + return c:IsFaceup() and c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) +end +function c511009317.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009317.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009317.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511009317.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511009317.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511009317.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetTurnID()==Duel.GetTurnCount() and not e:GetHandler():IsReason(REASON_RETURN) +end +function c511009317.ovfilter(c,e) + return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and c:IsType(TYPE_MONSTER) and (not e or c:IsCanBeEffectTarget(e)) +end +function c511009317.spfilter(c,e,tp,e2) + return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c511009317.ovfilter,tp,LOCATION_GRAVE,0,1,c) and (not e2 or c:IsCanBeEffectTarget(e2)) +end +function c511009317.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511009317.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local sg=Duel.GetMatchingGroup(c511009317.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp,e) + local og=Duel.GetMatchingGroup(c511009317.ovfilter,tp,LOCATION_GRAVE,0,nil,e) + local g + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + if sg:GetCount()==og:GetCount() then + g=sg:Select(tp,2,2,nil) + else + g=sg:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g2=og:Select(tp,1,1,g:GetFirst()) + g:Merge(g2) + end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511009317.sumop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()~=2 then return end + local sg=g:Filter(Card.IsCanBeSpecialSummoned,nil,e,0,tp,false,false) + if sg:GetCount()==0 then return end + local tc + if sg:GetCount()==1 then + tc=sg:GetFirst() + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + tc=g:Select(tp,1,1,nil):GetFirst() + end + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + g:RemoveCard(tc) + Duel.Overlay(tc,g) + end +end diff --git a/script/c511009318.lua b/script/c511009318.lua new file mode 100644 index 00000000..cf1af3e3 --- /dev/null +++ b/script/c511009318.lua @@ -0,0 +1,120 @@ +--Performapal Pendulum Art and Clean +function c511009318.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009318.condition) + e1:SetCost(c511009318.cost) + e1:SetTarget(c511009318.tg) + e1:SetOperation(c511009318.op) + c:RegisterEffect(e1) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c511009318.regop) + c:RegisterEffect(e2) +end +function c511009318.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511009318.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetLabelObject(e) + e1:SetTarget(c511009318.sumlimit) + Duel.RegisterEffect(e1,tp) + e:GetHandler():RegisterFlagEffect(511009318,RESET_PHASE+PHASE_END,0,1) +end +function c511009318.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject()~=se +end +function c511009318.filter(c,e,tp) + return c:IsSetCard(0x9f) and c:IsType(TYPE_PENDULUM) and c:IsFaceup() and c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009318.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009318.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009318.op(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009318.filter,tp,LOCATION_EXTRA,0,ft,ft,nil,e,tp) + local c=e:GetHandler() + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end + +function c511009318.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(511009318)>0 then + + + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(24919805,1)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCost(c511009318.descost) + e1:SetTarget(c511009318.destg) + e1:SetOperation(c511009318.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + + end +end +function c511009318.descon(e) + local c=e:GetHandler() + return not c:GetFlagEffect(511009318)==0 +end +function c511009318.cfilter(c) + return c:IsSetCard(0x9f) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeckAsCost() +end +function c511009318.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009318.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c511009318.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c511009318.desfilter(c) + return c:IsStatus(STATUS_SPSUMMON_TURN) +end +function c511009318.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009318.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511009318.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009318.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009318.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511009319.lua b/script/c511009319.lua new file mode 100644 index 00000000..e6311bea --- /dev/null +++ b/script/c511009319.lua @@ -0,0 +1,31 @@ +--Raidraptor - Evasive +function c511009319.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCost(c511009319.cost) + e1:SetCondition(c511009319.condition) + e1:SetOperation(c511009319.operation) + c:RegisterEffect(e1) +end +function c511009319.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsPosition(POS_FACEUP) and tc:IsSetCard(0xba) and tc:IsType(TYPE_XYZ) and tc:GetOverlayCount()~=0 +end +function c511009319.cfilter(c) + return c:IsPosition(POS_FACEUP) and c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and c:GetOverlayCount()~=0 +end +function c511009319.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return + tc:IsControler(tp) and tc:IsPosition(POS_FACEUP) and tc:IsSetCard(0xba) and tc:IsType(TYPE_XYZ) and tc:GetOverlayCount()~=0 + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g1=tc:GetOverlayGroup() + local mg2=g1:Select(tp,1,1,nil) + Duel.SendtoHand(mg2,nil,REASON_COST) +end +function c511009319.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511009320.lua b/script/c511009320.lua new file mode 100644 index 00000000..57ea2a89 --- /dev/null +++ b/script/c511009320.lua @@ -0,0 +1,11 @@ +--Paper Doll +function c511009320.initial_effect(c) + --Normal monster + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetRange(LOCATION_HAND) + e1:SetValue(TYPE_MONSTER) + c:RegisterEffect(e1) +end diff --git a/script/c511009321.lua b/script/c511009321.lua new file mode 100644 index 00000000..db7a74e6 --- /dev/null +++ b/script/c511009321.lua @@ -0,0 +1,55 @@ +--The Phantom Knights of Cursed Javelin +function c511009321.initial_effect(c) + aux.AddXyzProcedure(c,nil,2,2) + c:EnableReviveLimit() + --atk down + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62070231,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCountLimit(1) + e1:SetCondition(c511009321.condition) + e1:SetCost(c511009321.cost) + e1:SetTarget(c511009321.target) + e1:SetOperation(c511009321.operation) + c:RegisterEffect(e1) +end +function c511009321.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511009321.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511009321.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,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511009321.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end diff --git a/script/c511009322.lua b/script/c511009322.lua new file mode 100644 index 00000000..3784758b --- /dev/null +++ b/script/c511009322.lua @@ -0,0 +1,43 @@ +--Lyrical Luscinia - Turquoise Warbler +--fixed by MLD +function c511009322.initial_effect(c) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c511009322.spcon) + c:RegisterEffect(e1) + --spsummon success + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(29116732,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c511009322.sumtg) + e2:SetOperation(c511009322.sumop) + c:RegisterEffect(e2) +end +function c511009322.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)==0 +end +function c511009322.filter(c,e,tp) + return c:GetLevel()==1 and c:IsSetCard(0x1f8) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009322.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009322.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c511009322.sumop(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,c511009322.filter,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 diff --git a/script/c511009323.lua b/script/c511009323.lua new file mode 100644 index 00000000..894ff734 --- /dev/null +++ b/script/c511009323.lua @@ -0,0 +1,56 @@ +--The Phantom Knights of Lost Vambrace +function c511009323.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511009323.target) + e1:SetOperation(c511009323.activate) + c:RegisterEffect(e1) +end +function c511009323.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsPlayerCanSpecialSummonMonster(tp,511009323,0x10db,0x11,2,600,0,RACE_WARRIOR,ATTRIBUTE_DARK) + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511009323.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-600) + tc:RegisterEffect(e1) + end + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,511009323,0x10db,0x11,2,600,0,RACE_WARRIOR,ATTRIBUTE_DARK) then + Duel.BreakEffect() + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + c:AddMonsterAttributeComplete() + + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTarget(c511009323.filter) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + + Duel.SpecialSummonComplete() + end +end +function c511009323.filter(e,c) + return c:IsSetCard(0x10db) +end diff --git a/script/c511009324.lua b/script/c511009324.lua new file mode 100644 index 00000000..ed7e0498 --- /dev/null +++ b/script/c511009324.lua @@ -0,0 +1,138 @@ +--Parasite Plant +--fixed by MLD +function c511009324.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON+CATEGORY_EQUIP+CATEGORY_FUSION_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetTarget(c511009324.target) + e1:SetOperation(c511009324.operation) + c:RegisterEffect(e1) + --eq + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_CONTROL+CATEGORY_EQUIP) + e4:SetDescription(aux.Stringid(11493868,0)) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetTarget(c511009324.eqtg) + e4:SetOperation(c511009324.eqop) + c:RegisterEffect(e4) +end +function c511009324.eqfilter(c,g,tp) + return c:IsFaceup() and c:IsCode(6205579) and c:IsControler(tp) and c:IsAbleToGrave() and g:IsExists(c511009324.eqfilter2,1,c) +end +function c511009324.eqfilter2(c) + return c:IsFaceup() and c:IsCode(6205579) and c:IsAbleToGrave() +end +function c511009324.filter(c,tp) + local g=c:GetEquipGroup() + if c:IsControler(1-tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + return g:IsExists(c511009324.eqfilter,1,nil,g,tp) and c:IsAbleToGrave() and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 +end +function c511009324.spfilter(c,e,tp) + return c:IsCode(511009344) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c511009324.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009324.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511009324.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) + and Duel.IsExistingMatchingCard(c511009324.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectTarget(tp,c511009324.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + local g2=g1:GetFirst():GetEquipGroup() + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g1,g1:GetCount(),0,0) +end +function c511009324.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local g=tc:GetEquipGroup() + if not c511009324.filter(tc,tp) then return end + g:AddCard(tc) + if Duel.SendtoGrave(g,REASON_EFFECT)>2 and tc:IsLocation(LOCATION_GRAVE) and g:IsExists(Card.IsLocation,2,tc,LOCATION_GRAVE) then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=Duel.SelectMatchingCard(tp,c511009324.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp):GetFirst() + if sc and Duel.SpecialSummonStep(sc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c511009324.efilter) + e1:SetOwnerPlayer(tp) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + local eqg=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,6205579) + if eqg:GetCount()>Duel.GetLocationCount(tp,LOCATION_SZONE) then return end + local eqc=eqg:GetFirst() + while eqc do + if Duel.Equip(tp,eqc,sc,true) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511009324.eqlimit) + e1:SetLabelObject(sc) + eqc:RegisterEffect(e1) + end + eqc=eqg:GetNext() + end + Duel.EquipComplete() + end + end + end +end +function c511009324.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() and re:IsActiveType(TYPE_MONSTER) +end +function c511009324.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c511009324.efilter(e,te) + return te:GetOwnerPlayer()~=e:GetHandlerPlayer() and te:GetOwner()~=e:GetOwner() + and te:IsActiveType(TYPE_MONSTER) +end +function c511009324.ctfilter(c,tp) + return c:IsFaceup() and c:IsCode(511009344) and (c:IsControler(tp) or c:IsControlerCanBeChanged()) +end +function c511009324.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009324.ctfilter(chkc,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511009324.ctfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_DECK,0,1,nil,6205579) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511009324.ctfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_DECK) +end +function c511009324.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(12152769,2)) + local ec=Duel.SelectMatchingCard(tp,Card.IsCode,tp,LOCATION_DECK,0,1,1,nil,6205579):GetFirst() + if not ec then return end + if Duel.Equip(tp,ec,tc,true) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511009324.eqlimit) + e1:SetLabelObject(tc) + ec:RegisterEffect(e1) + if tc:IsControler(1-tp) then + Duel.GetControl(tc,tp) + end + end + end +end diff --git a/script/c511009325.lua b/script/c511009325.lua new file mode 100644 index 00000000..9ffc0e80 --- /dev/null +++ b/script/c511009325.lua @@ -0,0 +1,95 @@ +--The Phantom Knights of Double Badge +function c511009325.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c511009325.condition) + e1:SetTarget(c511009325.target) + e1:SetOperation(c511009325.activate) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(18563744,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c511009325.atkcost) + e2:SetTarget(c511009325.atktg) + e2:SetOperation(c511009325.atkop) + c:RegisterEffect(e2) +end +function c511009325.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511009325.filter(c,e) + return c:IsFaceup() and c:IsSetCard(0x10db) and c:IsCanBeEffectTarget(e) +end +function c511009325.xyzfilter(c,mg) + return c:IsXyzSummonable(mg,2,2) +end +function c511009325.mfilter1(c,mg,exg) + return mg:IsExists(c511009325.mfilter2,1,c,c,exg) +end +function c511009325.mfilter2(c,mc,exg) + return exg:IsExists(Card.IsXyzSummonable,1,nil,Group.FromCards(c,mc)) +end +function c511009325.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local mg=Duel.GetMatchingGroup(c511009325.filter,tp,LOCATION_MZONE,0,nil,e) + local exg=Duel.GetMatchingGroup(c511009325.xyzfilter,tp,LOCATION_EXTRA,0,nil,mg) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and exg:GetCount()>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg1=mg:FilterSelect(tp,c511009325.mfilter1,1,1,nil,mg,exg) + local tc1=sg1:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg2=mg:FilterSelect(tp,c511009325.mfilter2,1,1,tc1,tc1,exg) + sg1:Merge(sg2) + Duel.SetTargetCard(sg1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009325.tfilter(c,e) + return c:IsRelateToEffect(e) and c:IsFaceup() +end +function c511009325.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c511009325.tfilter,nil,e) + if g:GetCount()<2 then return end + local xyzg=Duel.GetMatchingGroup(c511009325.xyzfilter,tp,LOCATION_EXTRA,0,nil,g) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:Select(tp,1,1,nil):GetFirst() + Duel.XyzSummon(tp,xyz,g) + end +end +function c511009325.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511009325.atkfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()>0 +end +function c511009325.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009325.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009325.atkfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009325.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009325.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local ct=tc:GetOverlayCount() + tc:RemoveOverlayCard(tp,ct,ct,REASON_EFFECT) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(ct*500) + tc:RegisterEffect(e1) + end +end + diff --git a/script/c511009326.lua b/script/c511009326.lua new file mode 100644 index 00000000..e4ac7872 --- /dev/null +++ b/script/c511009326.lua @@ -0,0 +1,28 @@ +--Parasite Discharge +--fixed by MLD +function c511009326.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009326.target) + e1:SetOperation(c511009326.activate) + c:RegisterEffect(e1) +end +function c511009326.filter(c,e,tp) + return c:IsCode(6205579) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009326.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009326.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c511009326.activate(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,c511009326.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009327.lua b/script/c511009327.lua new file mode 100644 index 00000000..647fc299 --- /dev/null +++ b/script/c511009327.lua @@ -0,0 +1,51 @@ +--RUM Burial of The Phantom Knights +function c511009327.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511009327.target) + e1:SetOperation(c511009327.activate) + c:RegisterEffect(e1) +end +function c511009327.filter1(c,e,tp) + return c:IsSetCard(0x10db) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c511009327.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+2,c:GetCode()) +end +function c511009327.filter2(c,e,tp,mc,rk,code) + if c.rum_limit_code and code~=c.rum_limit_code then return false end + return c:GetRank()==rk and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511009327.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511009327.filter1(chkc,e,tp) end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511009327.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511009327.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,tp,LOCATION_EXTRA) +end +function c511009327.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009327.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+2) + local sc=g:GetFirst() + if sc then + Duel.BreakEffect() + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(sc,Group.FromCards(c)) + end + end +end diff --git a/script/c511009328.lua b/script/c511009328.lua new file mode 100644 index 00000000..2eb9d505 --- /dev/null +++ b/script/c511009328.lua @@ -0,0 +1,91 @@ +--The Phantom Knights of Around Burn +function c511009328.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44968459,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009328.condition) + e1:SetCost(c511009328.cost) + e1:SetTarget(c511009328.target) + e1:SetOperation(c511009328.activate) + c:RegisterEffect(e1) + if not c511009328.global_check then + c511009328.global_check=true + c511009328[0]=0 + c511009328[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(c511009328.op) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511009328.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c511009328.cfilter(c) + return c:IsSetCard(0x10db) and c:IsAbleToRemoveAsCost() +end +function c511009328.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009328.cfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c511009328.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(rg,POS_FACEUP,REASON_COST) +end +function c511009328.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE +end +function c511009328.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009328.activate(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.BreakEffect() + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetOperation(c511009328.damop) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e1,tp) +end +function c511009328.chkfilter(c,tp) + return c:IsType(TYPE_MONSTER) and c:IsLocation(LOCATION_GRAVE) + and c:GetPreviousControler()==tp +end +function c511009328.op(e,tp,eg,ep,ev,re,r,rp) + if eg==nil or eg:GetCount()<=0 then return end + local ph=Duel.GetCurrentPhase() + if ph>=0x08 and ph<=0x20 then + local ct1=eg:FilterCount(c511009328.chkfilter,nil,tp) + local ct2=eg:FilterCount(c511009328.chkfilter,nil,1-tp) + if ct1>0 then + c511009328[tp]=c511009328[tp]+ct1 + end + if ct2>0 then + c511009328[1-tp]=c511009328[1-tp]+ct2 + end + end +end +function c511009328.clear(e,tp,eg,ep,ev,re,r,rp) + c511009328[0]=0 + c511009328[1]=0 +end +function c511009328.damop(e,tp,eg,ep,ev,re,r,rp) + if c511009328[0]>0 or c511009328[1]>0 then + Duel.Hint(HINT_CARD,0,511009328) + Duel.Damage(tp,c511009328[tp]*800,REASON_EFFECT) + Duel.Damage(1-tp,c511009328[1-tp]*800,REASON_EFFECT) + end +end diff --git a/script/c511009329.lua b/script/c511009329.lua new file mode 100644 index 00000000..3d933b77 --- /dev/null +++ b/script/c511009329.lua @@ -0,0 +1,70 @@ +--Fairy Rail +function c511009329.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c511009329.cost) + e1:SetCondition(c511009329.con) + e1:SetTarget(c511009329.tg) + e1:SetOperation(c511009329.activate) + c:RegisterEffect(e1) +end +--OCG Fairy collection +c511009329.collection={ +[51960178]=true; +[25862681]=true; +[23454876]=true; +[90925163]=true; +[48742406]=true; +[51960178]=true; +[45939611]=true; +[20315854]=true; +[1761063]=true; +[6979239]=true; +[55623480]=true; +[42921475]=true; +} +function c511009329.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,0,2,REASON_COST) end + Duel.RemoveOverlayCard(tp,1,0,2,2,REASON_COST) +end +function c511009329.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c511009329.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x412) or c511009329.collection[c:GetCode()]) +end +function c511009329.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c511009329.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SelectTarget(tp,c511009329.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetParam(Duel.GetBattleDamage(tp)) + + +end +function c511009329.activate(e,tp,eg,ep,ev,re,r,rp) + local sc=Duel.GetFirstTarget() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + -- Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + -- local g=Duel.SelectMatchingCard(tp,c511009329.filter,tp,LOCATION_MZONE,0,1,1,nil,pos) + + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(d) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1) + -- If that monster attacks, it is changed to Defense Position at the end of damage calculation. + + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511009329.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511009329.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c511009330.lua b/script/c511009330.lua new file mode 100644 index 00000000..958e0075 --- /dev/null +++ b/script/c511009330.lua @@ -0,0 +1,97 @@ +--Gathering Light +function c511009330.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --attach + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511009330.spcost) + e2:SetTarget(c511009330.sptg) + e2:SetOperation(c511009330.spop) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c511009330.tg) + e3:SetValue(c511009330.val) + c:RegisterEffect(e3) + --negate attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e4:SetCountLimit(1) + e4:SetCondition(c511009330.condition) + e4:SetOperation(c511009330.operation) + c:RegisterEffect(e4) +end +function c511009330.costfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c511009330.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009330.costfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511009330.costfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c511009330.filter(c,e,tp) + return (c:IsRace(RACE_DRAGON) or c511009330.collection[c:GetCode()] or c:IsSetCard(0x1045) or c:IsSetCard(0x1093)) +end +c511009330.collection={ + [86240887]=true;[86805855]=true;[70681994]=true;[511000705]=true;[1546123]=true; + [64599569]=true;[84243274]=true;[91998119]=true;[74157028]=true;[87751584]=true; + [40418351]=true;[79229522]=true;[2111707]=true;[25119460]=true;[9293977]=true; + [84058253]=true;[72959823]=true;[100000570]=true;[100000029]=true;[100000621]=true; + [54752875]=true;[86164529]=true;[21435914]=true;[6021033]=true;[2403771]=true; + [68084557]=true;[52145422]=true;[62560742]=true;[50321796]=true;[76891401]=true; + [511001275]=true;[1639384]=true;[77799846]=true;[95992081]=true;[511001273]=true; + [21970285]=true;[92870717]=true;[51531505]=true;[15146890]=true;[14920218]=true; + [88935103]=true;[83980492]=true;[19474136]=true;[15146890]=true;[14920218]=true; +} +function c511009330.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009330.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009330.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511009330.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) + local dg=Duel.GetMatchingGroup(c511009330.dfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,1,0,0) +end +function c511009330.dfilter(c) + return c:IsDestructable() +end +function c511009330.spop(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 not tc:IsImmuneToEffect(e) then + local og=tc:GetOverlayGroup() + if og:GetCount()>0 then + Duel.SendtoGrave(og,REASON_RULE) + end + Duel.Overlay(c,Group.FromCards(tc)) + end + + local dg=Duel.SelectMatchingCard(tp,c511009330.dfilter,tp,0,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.Destroy(dg,REASON_EFFECT) +end + +function c511009330.tg(e,c) + return (c:IsRace(RACE_DRAGON) or c511009330.collection[c:GetCode()] or c:IsSetCard(0x1045) or c:IsSetCard(0x1093)) +end +function c511009330.val(e,c) + return e:GetHandler():GetOverlayCount()*400 +end +function c511009330.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511009330.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c511009331.lua b/script/c511009331.lua new file mode 100644 index 00000000..5f2a2f62 --- /dev/null +++ b/script/c511009331.lua @@ -0,0 +1,58 @@ +--Performapal Ballad +function c511009331.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --lose attack 1 + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000947,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511009331.atkcon) + e1:SetOperation(c511009331.atkop) + c:RegisterEffect(e1) + --lose atk 2 + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511009331.atkcon2) + e2:SetOperation(c511009331.atkop2) + c:RegisterEffect(e2) +end + +function c511009331.atkcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:GetControler()==tp and Duel.GetAttackTarget() and at:IsSetCard(0x9f) +end +function c511009331.atkop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-600) + e1:SetReset(RESET_EVENT+0x1fe0000) + at:RegisterEffect(e1) +end + + +function c511009331.atkcon2(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a and a:IsRelateToBattle() and a:IsControler(tp) and a:IsSetCard(0x9f) +end +function c511009331.atkop(e,tp,eg,ep,ev,re,r,rp) + local atk=Duel.GetAttacker():GetAttack() + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc 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) + e1:SetValue(-atk) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009332.lua b/script/c511009332.lua new file mode 100644 index 00000000..691d4e83 --- /dev/null +++ b/script/c511009332.lua @@ -0,0 +1,51 @@ +--Album of Memories +function c511009332.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetLabel(0) + e1:SetOperation(c511009332.op) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000202,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetLabelObject(e1) + e2:SetCondition(c511009332.condition) + e2:SetTarget(c511009332.target) + e2:SetOperation(c511009332.operation) + c:RegisterEffect(e2) +end +function c511009332.filter(c) + return c:IsFaceup() and c:IsSetCard(0xa9) +end +function c511009332.op(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(0) + if tp~=Duel.GetTurnPlayer() and Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and Duel.IsExistingMatchingCard(c511009332.filter,tp,LOCATION_GRAVE,0,1,nil) then + if Duel.SelectYesNo(tp,aux.Stringid(511000202,0)) then + Duel.NegateAttack() + local ct=e:GetLabel() + ct=ct+1 + e:SetLabel(ct) + end + end +end +function c511009332.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and not e:GetHandler():IsStatus(STATUS_CHAINING) and e:GetLabel()<=Duel.GetMatchingGroupCount(c511009332.filter,tp,LOCATION_GRAVE,0,nil) +end +function c511009332.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c511009332.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() + local ct=e:GetLabelObject():GetLabel() + ct=ct+1 + e:GetLabelObject():SetLabel(ct) + +end diff --git a/script/c511009333.lua b/script/c511009333.lua new file mode 100644 index 00000000..7e3744c0 --- /dev/null +++ b/script/c511009333.lua @@ -0,0 +1,34 @@ +--Ancient Gear Inspection +--fixed by MLD +function c511009333.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c511009333.target) + e1:SetOperation(c511009333.activate) + c:RegisterEffect(e1) +end +function c511009333.filter(c) + return c:IsFaceup() and c:IsSetCard(0x7) and c:IsAbleToHand() +end +function c511009333.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009333.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009333.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511009333.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511009333.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c511009334.lua b/script/c511009334.lua new file mode 100644 index 00000000..425e61e1 --- /dev/null +++ b/script/c511009334.lua @@ -0,0 +1,29 @@ +--Odd-Eyes Accel +function c511009334.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:SetOperation(c511009334.activate) + c:RegisterEffect(e1) +end +function c511009334.activate(e,tp,eg,ep,ev,re,r,rp) + + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511009334.ntcon) + e1:SetTarget(c511009334.nttg) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511009334.ntcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c511009334.nttg(e,c) + return c:IsLevelAbove(5) and c:IsSetCard(0x99) +end diff --git a/script/c511009335.lua b/script/c511009335.lua new file mode 100644 index 00000000..7537bc5c --- /dev/null +++ b/script/c511009335.lua @@ -0,0 +1,120 @@ +--Moon Protector +function c511009335.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,64751286,c511009335.ffilter,1,true,true) + + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62543393,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511009335.target) + e1:SetOperation(c511009335.operation) + c:RegisterEffect(e1) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetCondition(c511009335.atkcon) + e2:SetValue(aux.imval1) + c:RegisterEffect(e2) + + --Atk down + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(24311595,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCondition(c511009335.atkcond) + e3:SetTarget(c511009335.atktg) + e3:SetOperation(c511009335.atkop) + c:RegisterEffect(e3) + + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(22200403,1)) + e8:SetCategory(CATEGORY_DRAW) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_DESTROYED) + e8:SetRange(LOCATION_MZONE) + e8:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e8:SetCondition(c511009335.atkcond2) + e8:SetTarget(c511009335.atktg2) + e8:SetOperation(c511009335.atkop2) + c:RegisterEffect(e8) +end + +function c511009335.ffilter(c) + return c:IsSetCard(0x52) and c:IsAttribute(ATTRIBUTE_DARK) +end + + +function c511009335.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,511009337,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_LIGHT) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511009335.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511009337,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_LIGHT) then + local token=Duel.CreateToken(tp,511009337) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511009335.atkcon(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,511009337) +end + +-----atk down +function c511009335.atkcond(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + return tc:GetPreviousControler()==tp and tc:IsCode(511009337) and tc:IsReason(REASON_BATTLE) +end +function c511009335.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=eg:GetFirst():GetReasonCard() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511009335.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.Recover(1-tp,800,REASON_EFFECT) + end +end +------atk down2 +function c511009335.cfilter(c,tp) + return c:IsCode(511009337) and c:IsReason(REASON_DESTROY) and c:GetReasonPlayer()~=tp +end +function c511009335.atkcond2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511009335.cfilter,1,nil,tp) and bit.band(r,REASON_EFFECT)~=0 and re:IsActiveType(TYPE_MONSTER) and re:GetControler()==1-tp +end +function c511009335.atktg2(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=re:GetHandler() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511009335.atkop2(e,tp,eg,ep,ev,re,r,rp) +local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.Recover(e:GetHandler():GetControler(),800,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511009336.lua b/script/c511009336.lua new file mode 100644 index 00000000..826cb3cc --- /dev/null +++ b/script/c511009336.lua @@ -0,0 +1,120 @@ +--Sun Protector +function c511009336.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c, 57482479,c511009336.ffilter,1,true,true) + + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62543393,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511009336.target) + e1:SetOperation(c511009336.operation) + c:RegisterEffect(e1) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetCondition(c511009336.atkcon) + e2:SetValue(aux.imval1) + c:RegisterEffect(e2) + + --Atk down + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(24311595,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCondition(c511009336.atkcond) + e3:SetTarget(c511009336.atktg) + e3:SetOperation(c511009336.atkop) + c:RegisterEffect(e3) + + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(22200403,1)) + e8:SetCategory(CATEGORY_DRAW) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_DESTROYED) + e8:SetRange(LOCATION_MZONE) + e8:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e8:SetCondition(c511009336.atkcond2) + e8:SetTarget(c511009336.atktg2) + e8:SetOperation(c511009336.atkop2) + c:RegisterEffect(e8) +end + +function c511009336.ffilter(c) + return c:IsSetCard(0x52) and c:IsAttribute(ATTRIBUTE_LIGHT) +end + + +function c511009336.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,511009337,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_LIGHT) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511009336.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,511009337,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_LIGHT) then + local token=Duel.CreateToken(tp,511009337) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end +function c511009336.atkcon(e) + return Duel.IsExistingMatchingCard(Card.IsCode,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil,511009337) +end + +-----atk down +function c511009336.atkcond(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + return tc:GetPreviousControler()==tp and tc:IsCode(511009337) and tc:IsReason(REASON_BATTLE) +end +function c511009336.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=eg:GetFirst():GetReasonCard() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511009336.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.Damage(1-tp,800,REASON_EFFECT) + end +end +------atk down2 +function c511009336.cfilter(c,tp) + return c:IsCode(511009337) and c:IsReason(REASON_DESTROY) and c:GetReasonPlayer()~=tp +end +function c511009336.atkcond2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511009336.cfilter,1,nil,tp) and bit.band(r,REASON_EFFECT)~=0 and re:IsActiveType(TYPE_MONSTER) +end +function c511009336.atktg2(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=re:GetHandler() + if chk==0 then return tg:IsOnField() end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c511009336.atkop2(e,tp,eg,ep,ev,re,r,rp) +local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.Damage(1-tp,800,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511009338.lua b/script/c511009338.lua new file mode 100644 index 00000000..04e3c311 --- /dev/null +++ b/script/c511009338.lua @@ -0,0 +1,112 @@ +--Parasite Magic +--fixed by MLD +function c511009338.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetCondition(c511009338.condition) + e1:SetTarget(c511009338.target) + e1:SetOperation(c511009338.activate) + c:RegisterEffect(e1) + if not c511009338.global_check then + c511009338.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511009338.checkop) + Duel.RegisterEffect(ge1,0) + end +end +--OCG Parasite collection +c511009338.collection={ + [6205579]=true; +} +function c511009338.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511009338.cfilter(c) + return c:IsFaceup() and (c511009338.collection[c:GetCode()] or c:IsSetCard(0x410)) +end +function c511009338.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009338.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511009338.acfilter(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + if not c:IsType(TYPE_SPELL) or not c:IsSSetable(true) then return false end + if not c:IsType(TYPE_FIELD) and Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return false end + if te:IsActivatable(tp) then return true end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) +end +function c511009338.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c511009338.acfilter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511009338.acfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp,eg,ep,ev,re,r,rp) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(511000770,1)) + local g=Duel.SelectTarget(tp,c511009338.acfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp,eg,ep,ev,re,r,rp) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) +end +function c511009338.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and (tc:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) then + local tpe=tc:GetType() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.SSet(tp,tc) + if not tc:IsLocation(LOCATION_SZONE) then return end + local te=tc:GetActivateEffect() + if not te then return end + Duel.ChangePosition(tc,POS_FACEUP) + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511009339.lua b/script/c511009339.lua new file mode 100644 index 00000000..6b2df405 --- /dev/null +++ b/script/c511009339.lua @@ -0,0 +1,59 @@ +--Power Parasite +--fixed by MLD +function c511009339.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + 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(c511009339.condition) + e1:SetTarget(c511009339.target) + e1:SetOperation(c511009339.activate) + c:RegisterEffect(e1) +end +function c511009339.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511009339.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then ft=ft-1 end + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsFaceup() end + if chk==0 then return ft>0 and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,6205579) end + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_GRAVE) +end +function c511009339.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(12152769,2)) + local g=Duel.SelectMatchingCard(tp,Card.IsCode,tp,LOCATION_GRAVE,0,1,1,nil,6205579) + local ec=g:GetFirst() + if ec then + Duel.HintSelection(g) + if not Duel.Equip(tp,ec,tc,true) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511009339.eqlimit) + e1:SetLabelObject(tc) + ec:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(300) + ec:RegisterEffect(e2) + end + end +end +function c511009339.eqlimit(e,c) + return c==e:GetLabelObject() +end diff --git a/script/c511009340.lua b/script/c511009340.lua new file mode 100644 index 00000000..7a2b7571 --- /dev/null +++ b/script/c511009340.lua @@ -0,0 +1,161 @@ +--Odd-Eyes Raging Dragon (Anime) +function c511009340.initial_effect(c) + c:EnableReviveLimit() + aux.EnablePendulumAttribute(c,false) + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),7,2) + --pendulum set + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7548,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511009340.pctg) + e1:SetOperation(c511009340.pcop) + c:RegisterEffect(e1) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511009340.regcon) + e2:SetOperation(c511009340.regop) + c:RegisterEffect(e2) + --material check + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MATERIAL_CHECK) + e3:SetValue(c511009340.valcheck) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --pendulum + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(7548,0)) + e7:SetCategory(CATEGORY_DESTROY) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e7:SetCode(EVENT_DESTROYED) + e7:SetProperty(EFFECT_FLAG_DELAY) + e7:SetCondition(c511009340.pencon) + e7:SetTarget(c511009340.pentg) + e7:SetOperation(c511009340.penop) + c:RegisterEffect(e7) +end +function c511009340.pcfilter(c) + return c:IsType(TYPE_PENDULUM) and not c:IsForbidden() +end +function c511009340.pctg(e,tp,eg,ep,ev,re,r,rp,chk) + local seq=e:GetHandler():GetSequence() + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) + and Duel.IsExistingMatchingCard(c511009340.pcfilter,tp,LOCATION_DECK,0,1,nil) end +end +function c511009340.pcop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local seq=e:GetHandler():GetSequence() + if not Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c511009340.pcfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.MoveToField(g:GetFirst(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end + + +function c511009340.regcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ and e:GetLabel()==1 +end +function c511009340.regop(e,tp,eg,ep,ev,re,r,rp) +local c=e:GetHandler() + --extra att + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(7548,1)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c511009340.descost) + e2:SetTarget(c511009340.destg) + e2:SetOperation(c511009340.desop) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) +end +function c511009340.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + Duel.SendtoGrave(e:GetHandler():GetOverlayGroup(),REASON_COST) +end +function c511009340.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.IsExistingMatchingCard(c511009340.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + if chk==0 then return g end + local g2=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g2,g2:GetCount(),0,0) +end +function c511009340.negfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsFaceup() +end +function c511009340.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511009340.negfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + if not tc then return end + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end + Duel.BreakEffect() + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e4:SetValue(ct*200) + c:RegisterEffect(e4) + end +end +function c511009340.matfilter(c) + return c:IsType(TYPE_XYZ) and c:IsHasEffect(EFFECT_XYZ_LEVEL) and c:IsXyzLevel(c,7) +end +function c511009340.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(c511009340.matfilter,1,nil) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end + + +function c511009340.pencon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_MZONE) +end +function c511009340.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end +end +function c511009340.penop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end diff --git a/script/c511009341.lua b/script/c511009341.lua new file mode 100644 index 00000000..38974a5e --- /dev/null +++ b/script/c511009341.lua @@ -0,0 +1,37 @@ +--Parasitic Maneuver +--fixed by MLD +function c511009341.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511009341.target) + e1:SetOperation(c511009341.activate) + c:RegisterEffect(e1) +end +--OCG Parasite collection +c511009341.collection={ + [6205579]=true; +} +function c511009341.filter(c) + return c:IsFaceup() and (c511009341.collection[c:GetCode()] or c:IsSetCard(0x410)) +end +function c511009341.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009341.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009341.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009341.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009341.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(1) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511009342.lua b/script/c511009342.lua new file mode 100644 index 00000000..66eaafc8 --- /dev/null +++ b/script/c511009342.lua @@ -0,0 +1,110 @@ +--The Phantom Knights of Wrong Magnet Ring +function c511009342.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511009342.condition) + e1:SetCost(c511009342.cost) + e1:SetTarget(c511009342.target) + e1:SetOperation(c511009342.activate) + c:RegisterEffect(e1) +end +function c511009342.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511009342.costfilter(c) + return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,c:GetCode()) and c:IsDiscardable() +end +function c511009342.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009342.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c511009342.costfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c511009342.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end +end +function c511009342.activate(e,tp,eg,ep,ev,re,r,rp) + if not Duel.NegateAttack() then return end + Duel.BreakEffect() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) + or not Duel.IsPlayerCanSpecialSummonMonster(tp,511009342,0x10db,0x21,1,0,0,RACE_WARRIOR,ATTRIBUTE_DARK) + then return end + Duel.BreakEffect() + c:AddMonsterAttribute(TYPE_EFFECT) + Duel.SpecialSummonStep(c,1,tp,tp,true,false,POS_FACEUP_ATTACK) + c:AddMonsterAttributeComplete() + + --equip change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(40884383,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511009342.eqtg) + e1:SetOperation(c511009342.eqop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(76925842,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511009342.drcost) + e2:SetCondition(c511009342.drcon) + e2:SetTarget(c511009342.drtg) + e2:SetOperation(c511009342.drop) + c:RegisterEffect(e2) + Duel.SpecialSummonComplete() +end + +function c511009342.eqfilter(c) + return c:IsFaceup() and c:IsType(TYPE_EQUIP) +end +function c511009342.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) end + if chk==0 then return Duel.IsExistingMatchingCard(c511009342.eqfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) + end + + +end +function c511009342.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() then + local g=Duel.GetMatchingGroup(c511009342.eqfilter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + local ec=g:GetFirst() + while ec do + Duel.Equip(tp,ec,c) + ec=g:GetNext() + end + Duel.EquipComplete() + end + +end +function c511009342.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + local et=math.floor(e:GetHandler():GetEquipCount()/2) + if et>0 then + e:SetLabel(et) + end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c511009342.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Debug.Message(c:GetEquipCount()) + return e:GetHandler():GetEquipCount()>1 +end + +function c511009342.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,e:GetLabel()) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel()) +end +function c511009342.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511009343.lua b/script/c511009343.lua new file mode 100644 index 00000000..2c25d590 --- /dev/null +++ b/script/c511009343.lua @@ -0,0 +1,123 @@ +--The Phantom Knights of Possession +function c511009343.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009343.target) + e1:SetOperation(c511009343.activate) + c:RegisterEffect(e1) +end +function c511009343.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c511009343.xyzfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and Duel.IsExistingTarget(c511009343.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,c) +end +function c511009343.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009343.xyzfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009343.xyzfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511009343.xyzfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009343.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc2=Duel.SelectMatchingCard(tp,c511009343.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil):GetFirst() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_XYZ_LEVEL) + e1:SetValue(tc2:GetLevel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_LEVEL_FINAL) + e2:SetValue(tc2:GetLevel()) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SYNCHRO_LEVEL) + e3:SetValue(tc2:GetLevel()) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_RITUAL_LEVEL) + e4:SetValue(tc2:GetLevel()) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e4) + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(511002096) + e5:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e5) + local e6=Effect.CreateEffect(e:GetHandler()) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(511000538) + e6:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e6) + end +end \ No newline at end of file diff --git a/script/c511009344.lua b/script/c511009344.lua new file mode 100644 index 00000000..86976821 --- /dev/null +++ b/script/c511009344.lua @@ -0,0 +1,74 @@ +--Parasite Queen +--fixed by MLD +function c511009344.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,6205579,aux.FilterBoolFunction(Card.IsType,TYPE_FUSION),1,true,true) + -- atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511009344.val) + c:RegisterEffect(e1) + --atkdown + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c511009344.atktg) + e2:SetValue(c511009344.atkval) + c:RegisterEffect(e2) + --return to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80344569,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511009344.eqcon) + e1:SetOperation(c511009344.eqop) + c:RegisterEffect(e1) +end +function c511009344.val(e,c) + local val1=Duel.GetMatchingGroupCount(c511009344.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + local val2=Duel.GetMatchingGroupCount(c511009344.filter2,0,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + return (val1+val2)*300 +end +function c511009344.filter(c) + return c:IsFaceup() and c:IsCode(6205579) +end +function c511009344.filter2(c) + return c:IsFaceup() and c:IsCode(6205579) and c:IsHasEffect(511009347) +end +function c511009344.atktg(e,c) + return not c:IsCode(511009344) +end +function c511009344.atkval(e,c) + local val1=c:GetEquipGroup():FilterCount(c511009344.filter,nil) + local val2=c:GetEquipGroup():FilterCount(c511009344.filter2,nil) + return (val1+val2)*-800 +end +function c511009344.eqcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and e:GetHandler():GetEquipGroup():IsExists(Card.IsCode,1,nil,6205579) +end +function c511009344.eqop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local eqc=e:GetHandler():GetEquipGroup():FilterSelect(tp,Card.IsCode,1,1,nil,6205579):GetFirst() + if eqc and tc:IsFaceup() and tc:IsRelateToBattle() then + if not Duel.Equip(tp,eqc,tc,false) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511009344.eqlimit) + e1:SetLabelObject(tc) + eqc:RegisterEffect(e1) + end +end +function c511009344.eqlimit(e,c) + return e:GetLabelObject()==c +end diff --git a/script/c511009345.lua b/script/c511009345.lua new file mode 100644 index 00000000..7d2b8907 --- /dev/null +++ b/script/c511009345.lua @@ -0,0 +1,116 @@ +--Double Parasitic Rebirth +--fixed by MLD +function c511009345.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c511009345.condition) + e1:SetTarget(c511009345.target) + e1:SetOperation(c511009345.activate) + c:RegisterEffect(e1) +end +function c511009345.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c511009345.filter(c,ft1,ft2,tp) + local p=c:GetControler() + if c:IsFacedown() then return false end + local g1=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_GRAVE,0,nil,6205579) + local g2=Duel.GetMatchingGroupCount(Card.IsCode,tp,0,LOCATION_GRAVE,nil,6205579) + local ft=0 + if Duel.GetLocationCount(p,LOCATION_SZONE)<=1 then return false end + if g1>1 and ft1>1 then return true end + if g2>1 and ft2>1 then return true end + if g1>0 and g2>0 and ft1>0 and ft2>0 then return true end + return false +end +function c511009345.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ft1=Duel.GetLocationCount(tp,LOCATION_SZONE) + local ft2=Duel.GetLocationCount(1-tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then ft1=ft1-1 end + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009345.filter(chkc,ft1,ft2,tp) end + if chk==0 then return Duel.IsExistingTarget(c511009345.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,ft1,ft2,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c511009345.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,ft1,ft2,tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,2,tp,LOCATION_GRAVE) +end +function c511009345.activate(e,tp,eg,ep,ev,re,r,rp) + local ft1=Duel.GetLocationCount(tp,LOCATION_SZONE) + local ft2=Duel.GetLocationCount(1-tp,LOCATION_SZONE) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and c511009345.filter(tc,ft1,ft2,tp) then + local p=tc:GetControler() + if Duel.GetLocationCount(p,LOCATION_SZONE)<=1 then return end + local g1=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_GRAVE,0,nil,6205579) + local g2=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_GRAVE,nil,6205579) + local chk1=g1:GetCount()>1 and ft1>1 + local chk2=g2:GetCount()>1 and ft2>1 + local chk3=g2:GetCount()>0 and ft2>0 and g1:GetCount()>0 and ft1>0 + local eqg + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(12152769,2)) + if chk1 and chk2 and chk3 then + g1:Merge(g2) + eqg=g1:Select(tp,2,2,nil) + elseif chk1 and not chk3 then + eqg=g1:Select(tp,2,2,nil) + elseif chk2 and not chk3 then + eqg=g2:Select(tp,2,2,nil) + else + g1:Merge(g2) + eqg=g1:Select(tp,1,1,nil) + local tc=eqg:GetFirst() + if tc:IsControler(tp) then ft1=ft1-1 else ft2=ft2-1 end + if ft1<=0 then g1:Remove(Card.IsControler,nil,tp) end + if ft2<=0 then g1:Remove(Card.IsControler,nil,1-tp) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(12152769,2)) + local sel=g1:Select(tp,1,1,tc) + eqg:Merge(sel) + end + Duel.HintSelection(eqg) + local eqc=eqg:GetFirst() + while eqc do + if Duel.Equip(eqc:GetControler(),eqc,tc) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0xfe0000) + e1:SetValue(c511009345.eqlimit) + e1:SetLabelObject(tc) + eqc:RegisterEffect(e1) + eqc:RegisterFlagEffect(511009345,RESET_EVENT+0xfe0000,0,0) + end + eqc=eqg:GetNext() + end + Duel.EquipComplete() + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511009345.ctop) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end +function c511009345.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c511009345.ctfilter(c,tp) + return c:GetFlagEffect(511009345)>0 and c:GetControler()~=tp +end +function c511009345.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p=c:GetControler() + local g=c:GetEquipGroup():Filter(c511009345.ctfilter,nil,p) + local tc=g:GetFirst() + while tc do + Duel.MoveToField(tc,p,p,LOCATION_SZONE,POS_FACEUP,true) + Duel.Equip(p,tc,c) + tc=g:GetNext() + end + Duel.EquipComplete() +end diff --git a/script/c511009346.lua b/script/c511009346.lua new file mode 100644 index 00000000..f7eee0ed --- /dev/null +++ b/script/c511009346.lua @@ -0,0 +1,148 @@ +--Protector Adoration +function c511009346.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511009346.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(c511009346.tgcon) + e2:SetOperation(c511009346.tgop) + c:RegisterEffect(e2) + --Disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c511009346.indestg) + e3:SetValue(1) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_ATTACK_ALL) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c511009346.indestg) + e4:SetValue(c511009346.atkfilter) + c:RegisterEffect(e4) + + --destroy at end of BP + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(79580323,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511009346.descon) + e2:SetOperation(c511009346.desop) + c:RegisterEffect(e2) + + --Destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c511009346.descon) + e5:SetOperation(c511009346.desop) + c:RegisterEffect(e5) + + if not c511009346.global_check then + c511009346.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_BATTLED) + ge2:SetOperation(c511009346.battleop) + Duel.RegisterEffect(ge2,0) + end +end +function c511009346.filter(c) + return c:IsFaceup() and c:GetSummonLocation()==LOCATION_EXTRA +end +function c511009346.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009346.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009346.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009346.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009346.tgcon(e,tp,eg,ep,ev,re,r,rp) + return re==e:GetLabelObject() +end +function c511009346.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() + if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then + c:SetCardTarget(tc) + + if Duel.IsPlayerCanSpecialSummonMonster(tp,511009337,0,0x4011,0,0,1,RACE_WARRIOR,ATTRIBUTE_LIGHT) + and Duel.SelectYesNo(tp,aux.Stringid(57103969,0)) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + then + for i=1,2 do + local token=Duel.CreateToken(tp,511009337) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + token:RegisterEffect(e2,true) + end + Duel.SpecialSummonComplete() + + end + end +end +function c511009346.indestg(e,c) + return e:GetHandler():IsHasCardTarget(c) +end +function c511009346.atkfilter(e,c) + return c:IsCode(511009337) +end +--destroy at end of Battle phase +function c511009346.tokfilter(c,rc) + return c:IsCode(511009337) and not c:IsRelateToCard(rc) +end +function c511009346.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009346.tokfilter,tp,LOCATION_MZONE,0,1,nil,e:GetHandler()) and tp==Duel.GetTurnPlayer() +end +function c511009346.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + local g=Group.FromCards(tc,c) + Duel.Destroy(g,REASON_EFFECT) +end + +function c511009346.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c511009346.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end + + +function c511009346.battleop(e,tp,eg,ep,ev,re,r,rp) + local dc=Duel.GetAttackTarget() + if not dc then return end + local bc=dc:GetBattleTarget() + if not bc:IsCode(511009337) or not dc:IsCode(511009337) then return end + if dc:IsControler(1-tp) then dc,bc=bc,dc end + if dc:IsControler(tp) then + -- dc:RegisterFlagEffect(511001825+tp,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + dc:CreateRelation(c,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + end + if bc:IsControler(1-tp) then + -- bc:RegisterFlagEffect(511001825+1-tp,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + bc:CreateRelation(c,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + end +end \ No newline at end of file diff --git a/script/c511009347.lua b/script/c511009347.lua new file mode 100644 index 00000000..d32990b1 --- /dev/null +++ b/script/c511009347.lua @@ -0,0 +1,132 @@ +--Parasite Generator +--fixed by MLD +function c511009347.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c511009347.condition) + e1:SetTarget(c511009347.target) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(7570,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetTarget(c511009347.sptg) + e2:SetOperation(c511009347.spop) + c:RegisterEffect(e2) + --counted as 2 for parasite Queen + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(511009347) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e3:SetTarget(aux.TargetBoolFunction(Card.IsCode,6205579)) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c511009347.indtg) + e4:SetValue(1) + c:RegisterEffect(e4) + Duel.AddCustomActivityCounter(51109347,ACTIVITY_NORMALSUMMON,c511009347.counterfilter) + Duel.AddCustomActivityCounter(51109347,ACTIVITY_SPSUMMON,c511009347.counterfilter) +end +--OCG Parasite collection +c511009347.collection={ + [6205579]=true; +} +function c511009347.counterfilter(c) + return not (c511009347.collection[c:GetCode()] or c:IsSetCard(0x410)) +end +function c511009347.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCustomActivityCount(51109347,tp,ACTIVITY_SPSUMMON)>0 + or Duel.GetCustomActivityCount(51109347,tp,ACTIVITY_NORMALSUMMON)>0 +end +function c511009347.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c511009347.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetOperation(c511009347.spop) + c511009347.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c511009347.spfilter(c,e,tp) + return c:IsCode(6205579) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009347.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009347.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) + and e:GetHandler():GetFlagEffect(511009347)==0 end + e:GetHandler():RegisterFlagEffect(511009347,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511009347.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if not e:GetHandler():IsRelateToEffect(e) or ft<=0 then return end + local fid=e:GetHandler():GetFieldID() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009347.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)>0 then + g:GetFirst():RegisterFlagEffect(51109347,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + Duel.BreakEffect() + ft=ft-1 + if ft>0 then + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local sg=Duel.SelectMatchingCard(tp,c511009347.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,ft,ft,nil,e,tp) + Duel.HintSelection(sg) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + local tc=sg:GetFirst() + while tc do + tc:RegisterFlagEffect(51109347,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=sg:GetNext() + end + g:Merge(sg) + end + g:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c511009347.retcon) + e1:SetOperation(c511009347.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c511009347.retfilter(c,fid) + return c:GetFlagEffectLabel(51109347)==fid +end +function c511009347.retcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511009347.retfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511009347.retop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511009347.retfilter,nil,e:GetLabel()) + g:DeleteGroup() + Duel.SendtoDeck(tg,nil,2,REASON_EFFECT) +end +function c511009347.indtg(e,c) + return c511009347.collection[c:GetCode()] or c:IsSetCard(0x410) +end diff --git a/script/c511009349.lua b/script/c511009349.lua new file mode 100644 index 00000000..021ff444 --- /dev/null +++ b/script/c511009349.lua @@ -0,0 +1,55 @@ +--RR-Blaze Burner Falcon +function c511009349.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(22653490,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511009349.tdcon1) + e1:SetOperation(c511009349.tdop1) + c:RegisterEffect(e1) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(22587018,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCondition(aux.bdcon) + e1:SetTarget(c511009349.target) + e1:SetOperation(c511009349.operation) + c:RegisterEffect(e1) +end +function c511009349.tdcon1(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ and Duel.GetLP(tp)-Duel.GetLP(1-tp)>=3000 +end +function c511009349.tdop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(3000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end + +function c511009349.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetOverlayCount()>0 and Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511009349.operation(e,tp,eg,ep,ev,re,r,rp) + local numxyz=e:GetHandler():GetOverlayCount() + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>1 and numxyz>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=g:Select(tp,1,numxyz,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511009350.lua b/script/c511009350.lua new file mode 100644 index 00000000..55b2ea03 --- /dev/null +++ b/script/c511009350.lua @@ -0,0 +1,71 @@ +--Predator plant Chimere rafflesia +function c511009350.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsRace,RACE_PLANT),2,false) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511009350.atkcon) + e1:SetOperation(c511009350.atkop) + c:RegisterEffect(e1) +end +function c511009350.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return (a:GetControler()==tp and a:IsRelateToBattle() and d:GetAttack()~=d:GetBaseAttack()) + or (d and d:GetControler()==tp and d:IsRelateToBattle() and a:GetAttack()~=a:GetBaseAttack()) +end +function c511009350.atkop(e,tp,eg,ep,ev,re,r,rp) + local atk=0 + if e:GetHandler()==Duel.GetAttacker() then + local bc=Duel.GetAttackTarget() + + if(bc:GetBaseAttack()>bc:GetAttack()) then + atk=bc:GetBaseAttack()-bc:GetAttack() + else + atk=bc:GetAttack()>bc:GetBaseAttack() + end + + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(bc:GetBaseAttack()) + bc:RegisterEffect(e1) + + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e2:SetValue(atk) + e:GetHandler():RegisterEffect(e2) + + else + + local bc=Duel.GetAttacker() + + if(bc:GetBaseAttack()>bc:GetAttack()) then + atk=bc:GetBaseAttack()-bc:GetAttack() + else + atk=bc:GetAttack()>bc:GetBaseAttack() + end + + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(bc:GetBaseAttack()) + bc:RegisterEffect(e1) + + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e2:SetValue(atk) + e:GetHandler():RegisterEffect(e2) + +end +end \ No newline at end of file diff --git a/script/c511009351.lua b/script/c511009351.lua new file mode 100644 index 00000000..157fafee --- /dev/null +++ b/script/c511009351.lua @@ -0,0 +1,33 @@ +--Performapal Handsome Samurai Liger +function c511009351.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(55997110,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511009351.condition) + e1:SetTarget(c511009351.target) + e1:SetOperation(c511009351.operation) + c:RegisterEffect(e1) +end +function c511009351.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsType(TYPE_MONSTER) +end +function c511009351.filter(c) + return c:IsLevelAbove(5) and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c511009351.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009351.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511009351.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009351.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511009352.lua b/script/c511009352.lua new file mode 100644 index 00000000..3751104e --- /dev/null +++ b/script/c511009352.lua @@ -0,0 +1,26 @@ +--Performapal Card Gardna +function c511009352.initial_effect(c) + --defup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511009352.val) + c:RegisterEffect(e2) + +end +function c511009352.exfilter(c) + return c:IsFaceup() and c:IsCode(511009352) +end +function c511009352.val(e,c) + local def=0 + local g=Duel.GetMatchingGroup(c511009352.filter,c:GetControler(),LOCATION_MZONE,0,c) + local tc=g:GetFirst() + while tc do + local cdef=tc:GetDefense() + def=def+(cdef>=0 and cdef or 0) + tc=g:GetNext() + end + return def +end diff --git a/script/c511009353.lua b/script/c511009353.lua new file mode 100644 index 00000000..6cc827e7 --- /dev/null +++ b/script/c511009353.lua @@ -0,0 +1,22 @@ +--Speedroid Passing Rider (Manga) +function c511009353.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(37798171,0)) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c511009353.ntcon) + c:RegisterEffect(e1) + -- must be attacked + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MUST_BE_ATTACKED) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511009353.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)==0 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 +end diff --git a/script/c511009354.lua b/script/c511009354.lua new file mode 100644 index 00000000..c75b95b7 --- /dev/null +++ b/script/c511009354.lua @@ -0,0 +1,98 @@ +--D/D/D Super-Inspection King Zero Maxwell +function c511009354.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511009354.atkcon) + e1:SetOperation(c511009354.atkop) + c:RegisterEffect(e1) + --def + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(26593852,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_START) + e1:SetTarget(c511009354.deftg) + e1:SetOperation(c511009354.defop) + c:RegisterEffect(e1) +end + +function c511009354.atkcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if tc:IsControler(tp) then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + if not tc or not bc or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + if bc~=e:GetHandler() and bc:GetOwner()==tp then return false end + e:SetLabelObject(tc) + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if tc:IsAttackPos() then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + else + return bc:GetDefense()>tc:GetDefense() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end + end + else + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end +end + +function c511009354.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + end +end +function c511009354.deftg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc==c then tc=Duel.GetAttackTarget() end + if chk==0 then return tc and tc:IsFaceup() end +end +function c511009354.defop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc==c then tc=Duel.GetAttackTarget() end + if tc:IsRelateToBattle() and c:IsRelateToBattle() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(0) + tc:RegisterEffect(e1) + end +end diff --git a/script/c511009355.lua b/script/c511009355.lua new file mode 100644 index 00000000..6667718b --- /dev/null +++ b/script/c511009355.lua @@ -0,0 +1,36 @@ +--Speed Draw +function c511009355.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009355.condition) + e1:SetTarget(c511009355.target) + e1:SetOperation(c511009355.activate) + c:RegisterEffect(e1) +end +function c511009355.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 +end +function c511009355.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) +end +function c511009355.tgfilter(c) + return c:IsSetCard(0x2016) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c511009355.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local dg=Duel.SelectMatchingCard(tp,c511009355.tgfilter,tp,LOCATION_HAND,0,1,1,nil) + if dg:GetCount()>0 then + Duel.SendtoGrave(dg,REASON_EFFECT) + end +end diff --git a/script/c511009357.lua b/script/c511009357.lua new file mode 100644 index 00000000..e1825b7b --- /dev/null +++ b/script/c511009357.lua @@ -0,0 +1,47 @@ +--Step on Shadow +function c511009357.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009357.target) + e1:SetOperation(c511009357.activate) + c:RegisterEffect(e1) +end + +function c511009357.spfilter(c,e,tp,lv) + return c:IsLevelBelow(lv) and c:GetSummonLocation()==LOCATION_EXTRA and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009357.filter(c,e,tp) + return c:IsFaceup() and Duel.IsExistingMatchingCard(c511009357.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,c:GetLevel()) +end +function c511009357.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()~=tp and chkc:IsLocation(LOCATION_MZONE) and c511009357.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511009357.filter,tp,0,LOCATION_MZONE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511009357.filter,tp,0,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511009357.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=Duel.SelectMatchingCard(tp,c511009357.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,tc:GetLevel()):GetFirst() + if sc and Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511009358.lua b/script/c511009358.lua new file mode 100644 index 00000000..fd9c2727 --- /dev/null +++ b/script/c511009358.lua @@ -0,0 +1,40 @@ +--Step on Shadow +function c511009358.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009358.target) + e1:SetOperation(c511009358.activate) + c:RegisterEffect(e1) +end + +function c511009358.ctlfilter(c,e,tp,lv) + return c:IsLevelBelow(lv-1) and c:IsControlerCanBeChanged() +end +function c511009358.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x9f) and Duel.IsExistingMatchingCard(c511009358.ctlfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,c:GetLevel()) +end +function c511009358.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511009358.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511009358.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511009358.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511009358.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c511009358.ctlfilter,tp,LOCATION_MZONE,0,ft,ft,nil,e,tp,tc:GetLevel()) + local tg=g:GetFirst() + while tg do + Duel.GetControl(tg,1-tp,PHASE_END,1) + tc=g:GetNext() + end +end diff --git a/script/c511009361.lua b/script/c511009361.lua new file mode 100644 index 00000000..1413b3c2 --- /dev/null +++ b/script/c511009361.lua @@ -0,0 +1,26 @@ +--Raidraptor - Silent Roar +function c511009361.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511009361.condition) + e1:SetTarget(c511009361.target) + e1:SetOperation(c511009361.activate) + c:RegisterEffect(e1) +end +function c511009361.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xba) +end +function c511009361.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsChainNegatable(ev) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) and Duel.IsExistingMatchingCard(c511009361.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511009361.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c511009361.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c511009362.lua b/script/c511009362.lua new file mode 100644 index 00000000..536ceeb2 --- /dev/null +++ b/script/c511009362.lua @@ -0,0 +1,48 @@ +--Dark Contract with the Monopoly Seal +--fixed by MLD +function c511009362.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,0) + e2:SetTarget(c511009362.sumlimit) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,1) + e3:SetLabel(TYPE_FUSION) + e3:SetCondition(c511009362.con) + e3:SetTarget(c511009362.splimit) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetLabel(TYPE_SYNCHRO) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetLabel(TYPE_XYZ) + c:RegisterEffect(e5) + local e6=e3:Clone() + e6:SetLabel(TYPE_PENDULUM) + c:RegisterEffect(e6) +end +function c511009362.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsLocation(LOCATION_EXTRA) +end +function c511009362.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsLocation(LOCATION_EXTRA) and c:IsType(e:GetLabel()) +end +function c511009362.filter(c,tpe) + return c:IsFaceup() and c:IsType(tpe) +end +function c511009362.con(e) + return Duel.IsExistingMatchingCard(c511009362.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,e:GetLabel()) +end diff --git a/script/c511009363.lua b/script/c511009363.lua new file mode 100644 index 00000000..bd72adc8 --- /dev/null +++ b/script/c511009363.lua @@ -0,0 +1,92 @@ +--Spirit Reactor +function c511009363.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511009363.val) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c511009363.indcon) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetValue(c511009363.indct) + c:RegisterEffect(e2) + -- Adjust + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e7:SetCode(EVENT_ADJUST) + e7:SetRange(LOCATION_PZONE) + e7:SetOperation(c511009363.op) + c:RegisterEffect(e7) + -- copy scale + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(94585852,0)) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetProperty(EFFECT_FLAG_EVENT_PLAYER+EFFECT_FLAG_DAMAGE_STEP) + e8:SetCode(511009363) + e8:SetRange(LOCATION_PZONE) + e8:SetTarget(c511009363.sctg) + e8:SetOperation(c511009363.scop) + c:RegisterEffect(e8) +end +function c511009363.val(e,c) + return Duel.GetMatchingGroupCount(Card.IsAttribute,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil,ATTRIBUTE_EARTH+ATTRIBUTE_WATER+ATTRIBUTE_FIRE+ATTRIBUTE_WIND)*500 +end +function c511009363.filter(c) + return c:IsAttribute(ATTRIBUTE_EARTH) or c:IsAttribute(ATTRIBUTE_WATER) or c:IsAttribute(ATTRIBUTE_FIRE) or c:IsAttribute(ATTRIBUTE_WIND) +end +function c511009363.indcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009363.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c511009363.indct(e,re,r,rp) + if bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 then + return 1 + else return 0 end +end +function c511009363.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(511002005)==0 and ((c:GetPreviousLocation()~=LOCATION_SZONE + or (c:GetPreviousLocation()==LOCATION_SZONE and c:GetPreviousSequence()~=6 + or c:GetPreviousSequence()~=7)) + and (c:IsLocation(LOCATION_SZONE) + and (c:GetSequence()==6 or c:GetSequence()==7)) ) + then + Duel.RaiseSingleEvent(e:GetHandler(),511009363,e,0,tp,tp,0) + c:RegisterFlagEffect(511002005,RESET_EVENT+0x1fe0000,0,1) + end +end +function c511009363.scfilter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) +end +function c511009363.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc~=e:GetHandler() and chkc:IsLocation(LOCATION_ONFIELD) and c511009363.scfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009363.scfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009363.scfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) +end +function c511009363.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LSCALE) + e1:SetValue(tc:GetLeftScale()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RSCALE) + e2:SetValue(tc:GetRightScale()) + c:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c511009364.lua b/script/c511009364.lua new file mode 100644 index 00000000..e9e9fba1 --- /dev/null +++ b/script/c511009364.lua @@ -0,0 +1,147 @@ +--Performapal Fugolem +function c511009364.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(41546,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511009364.thcon) + e1:SetTarget(c511009364.thtg) + e1:SetOperation(c511009364.thop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCondition(c511009364.effcon) + e2:SetOperation(c511009364.regop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(7241272,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511009364.spcon) + e3:SetTarget(c511009364.sptg) + e3:SetOperation(c511009364.spop) + c:RegisterEffect(e3) + if not c511009364.global_check then + c511009364.global_check=true + c511009364[0]=0 + c511009364[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetOperation(c511009364.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c511009364.clearop) + Duel.RegisterEffect(ge2,0) + end +end +function c511009364.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if bit.band(tc:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION then + local p=tc:GetSummonPlayer() + c511009364[p]=c511009364[p]+1 + end + tc=eg:GetNext() + end +end +function c511009364.thcon(e,tp,eg,ep,ev,re,r,rp) + return c511009364[tp]>0 +end +function c511009364.thfilter(c) + return bit.band(c:GetReason(),0x40008)==0x40008 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c511009364.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009364.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c511009364.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009364.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c511009364.effcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsSummonType(SUMMON_TYPE_PENDULUM) +end +function c511009364.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511009364,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511009364.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511009364)~=0 +end +function c511009364.spfilter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511009364.spfilter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) +end +function c511009364.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,c) + local res=Duel.IsExistingMatchingCard(c511009364.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511009364.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009364.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end + local mg1=Duel.GetMatchingGroup(c511009364.spfilter1,tp,LOCATION_MZONE,0,c,e) + local sg1=Duel.GetMatchingGroup(c511009364.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511009364.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c511009365.lua b/script/c511009365.lua new file mode 100644 index 00000000..f7ae0698 --- /dev/null +++ b/script/c511009365.lua @@ -0,0 +1,34 @@ +--D/D Ghost +function c511009365.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(14536035,1)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetTarget(c511009365.tgtg) + e1:SetOperation(c511009365.tgop) + c:RegisterEffect(e1) + +end +function c511009365.filter(c,code) + return c:IsCode(code) and c:IsAbleToGrave() +end +function c511009365.tgfilter(c,tp) + return (c:IsSetCard(0xae) or c:IsSetCard(0xaf) ) and Duel.IsExistingMatchingCard(c511009365.filter,tp,LOCATION_DECK,0,1,nil,c:GetCode()) +end +function c511009365.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511009365.tgfilter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c511009365.tgfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009365.tgfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),tp) +end +function c511009365.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511009365.filter,tp,LOCATION_DECK,0,1,1,nil,tc:GetCode()) + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c511009366.lua b/script/c511009366.lua new file mode 100644 index 00000000..a5b06881 --- /dev/null +++ b/script/c511009366.lua @@ -0,0 +1,109 @@ +--Spirit Tech Force - Pendulum Governor +function c511009366.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Back to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(65518099,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511009366.thtg) + e1:SetOperation(c511009366.thop) + c:RegisterEffect(e1) + + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c511009366.atlimit) + c:RegisterEffect(e2) + + --cannot attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c511009366.atlimit2) + c:RegisterEffect(e3) + + --effect gain + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(25793414,1)) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c511009366.eftg) + e4:SetOperation(c511009366.efop) + c:RegisterEffect(e4) + if not c511009366.global_check then + c511009366.global_check=true + local ge=Effect.CreateEffect(c) + ge:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge:SetCode(EVENT_CHAINING) + ge:SetOperation(c511009366.checkop) + Duel.RegisterEffect(ge,0) + end +end +function c511009366.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsFaceup() and tc:IsType(TYPE_MONSTER) then + tc:RegisterFlagEffect(511009366,RESET_EVENT,0,1) + end + tc=eg:GetNext() + end +end +function c511009366.thfil(c) + return c:IsSetCard(0x1414) and c:IsAbleToHand() +end +function c511009366.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009366.thfil,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c511009366.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009366.thfil,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c511009366.atlimit(e,c) + local tp=e:GetHandlerPlayer() + return c:IsControler(1-tp) and not c:IsType(TYPE_PENDULUM) and not c:IsImmuneToEffect(e) +end +function c511009366.atlimit2(e,c) + local lsc=Duel.GetFieldCard(tp,LOCATION_SZONE,6):GetLeftScale() + local rsc=Duel.GetFieldCard(tp,LOCATION_SZONE,7):GetRightScale() + local lv=c:GetLevel() + if lsc>rsc then lsc,rsc=rsc,lsc end + return lsc and rsc and (lv>lsc and lv0 then + e:GetHandler():RegisterFlagEffect(tc:GetCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.MajesticCopy(c,tc) + Duel.MajesticCopy(c,tc) + end +end + diff --git a/script/c511009367.lua b/script/c511009367.lua new file mode 100644 index 00000000..0d2913b0 --- /dev/null +++ b/script/c511009367.lua @@ -0,0 +1,114 @@ +--Spirit Crystal - Salamander +function c511009367.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) +--to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81055000,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511009367.thtg1) + e1:SetOperation(c511009367.thop1) + c:RegisterEffect(e1) + + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCondition(c511009367.effcon) + e2:SetOperation(c511009367.regop) + c:RegisterEffect(e2) + + + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(45591967,1)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + + e3:SetCondition(c511009367.descond) + e3:SetTarget(c511009367.destg) + e3:SetOperation(c511009367.desop) + c:RegisterEffect(e3) + --tohand + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c511009367.thcon) + e4:SetTarget(c511009367.thtg) + e4:SetOperation(c511009367.thop) + c:RegisterEffect(e4) +end +function c511009367.thfilter(c) + return c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c511009367.thtg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c511009367.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009367.thfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511009367.thfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511009367.thop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end + +function c511009367.effcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + -- Debug.Message(c:IsPreviousLocation(LOCATION_HAND)) + return c:IsSummonType(SUMMON_TYPE_PENDULUM) and c:IsFaceup() and c:IsAttackPos() and c:IsPreviousLocation(LOCATION_HAND) +end +function c511009367.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511009367,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end + +function c511009367.desfilter(c) + return c:IsFaceup() +end +function c511009367.descond(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511009367)~=0 +end +function c511009367.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +-- if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511009367.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,g:GetFirst():GetControler(),800) +end +function c511009367.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local p=tc:GetControler() + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(p,800,REASON_EFFECT) + end + end +end + + +function c511009367.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_EXTRA) +end +function c511009367.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c511009367.thop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) and Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT)==1 then + Duel.ConfirmCards(1-tp,e:GetHandler()) + end +end diff --git a/script/c511009368.lua b/script/c511009368.lua new file mode 100644 index 00000000..ead0f0f0 --- /dev/null +++ b/script/c511009368.lua @@ -0,0 +1,158 @@ +--Performapal Gatling Ghoul +--Fixed by TheOnePharaoh +function c511009368.initial_effect(c) + --fusion material + --aux.AddFusionProcFun2(c,c511009368.mat_fil,aux.FilterBoolFunction(Card.IsFusionSetCard,0x9f),true) + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c511009368.funcon) + e0:SetOperation(c511009368.funop) + c:RegisterEffect(e0) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(29343734,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511009368.damcon) + e1:SetTarget(c511009368.damtg) + e1:SetOperation(c511009368.damop) + c:RegisterEffect(e1) + --Material Check + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c511009368.matregcon) + e2:SetOperation(c511009368.matregop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(66970002,0)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511009368.condition) + e3:SetTarget(c511009368.target) + e3:SetOperation(c511009368.operation) + c:RegisterEffect(e3) +end +function c511009368.mat_fil(c,fc) + local attr=c:IsAttribute(ATTRIBUTE_DARK) + if Card.IsFusionAttribute then + attr=c:IsFusionAttribute(ATTRIBUTE_DARK,fc) + end + return attr and c:GetLevel()>=5 +end +function c511009368.funcon(e,g,gc,chkfnf) + if g==nil then return true end + local c=e:GetHandler() + local f2=aux.FilterBoolFunction(Card.IsFusionSetCard,0x9f) + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return (c511009368.mat_fil(gc,c) and mg:IsExists(f2,1,gc,c)) + or (f2(gc) and mg:IsExists(c511009368.mat_fil,1,gc,c)) end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=mg:GetFirst() + while tc do + if c511009368.mat_fil(tc,c) then g1:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + if f2(tc) then g2:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + tc=mg:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) + else return g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) end +end +function c511009368.funop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local c=e:GetHandler() + local f2=aux.FilterBoolFunction(Card.IsFusionSetCard,0x9f) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local sg=Group.CreateGroup() + if c511009368.mat_fil(gc,c) then sg:Merge(g:Filter(f2,gc)) end + if f2(gc) then sg:Merge(g:Filter(c511009368.mat_fil,gc,c)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local sg=g:Filter(c511009368.FConditionFilterF2c,nil,c) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then + g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + local tc1=g1:GetFirst() + sg:RemoveCard(tc1) + local b1=c511009368.mat_fil(tc1,c) + local b2=f2(tc1) + if b1 and not b2 then sg:Remove(c511009368.FConditionFilterF2r1,nil,c) end + if b2 and not b1 then sg:Remove(c511009368.FConditionFilterF2r2,nil,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) +end +function c511009368.FConditionFilterF2c(c,fc) + return c511009368.mat_fil(c,fc) or c:IsFusionSetCard(0x9f) +end +function c511009368.FConditionFilterF2r1(c,fc) + return c511009368.mat_fil(c,fc) and not c:IsFusionSetCard(0x9f) +end +function c511009368.FConditionFilterF2r2(c,fc) + return c:IsFusionSetCard(0x9f) and not c511009368.mat_fil(c,fc) +end + +function c511009368.damcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511009368.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetFieldGroupCount(tp,0xc,0xc) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*200) +end +function c511009368.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,0xc,0xc) + Duel.Damage(p,ct*200,REASON_EFFECT) +end +function c511009368.matfilter(c) + return c:IsType(TYPE_PENDULUM) +end +function c511009368.matregcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and e:GetHandler():GetMaterial():IsExists(c511009368.matfilter,1,nil) +end +function c511009368.matregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(511009368,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511009368.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511009368)~=0 +end +function c511009368.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) +end +function c511009368.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if atk<0 or tc:IsFacedown() then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c511009369.lua b/script/c511009369.lua new file mode 100644 index 00000000..4aa724ed --- /dev/null +++ b/script/c511009369.lua @@ -0,0 +1,92 @@ +--Timebreaker Magician (Anime) +function c511009369.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --double + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCondition(c511009369.atkcon) + e3:SetOperation(c511009369.atkop) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e4) + -- Adjust + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e7:SetCode(EVENT_ADJUST) + e7:SetRange(LOCATION_PZONE) + e7:SetOperation(c511009369.op) + c:RegisterEffect(e7) + -- copy scale + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(94585852,0)) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetProperty(EFFECT_FLAG_EVENT_PLAYER+EFFECT_FLAG_DAMAGE_STEP) + e8:SetCode(511009363) + e8:SetRange(LOCATION_PZONE) + e8:SetTarget(c511009369.sctg) + e8:SetOperation(c511009369.scop) + c:RegisterEffect(e8) +end + + + +function c511009369.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return eg:GetCount()==1 and eg:GetFirst()==c + and c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_HAND) +end +function c511009369.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:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c511009369.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(511002005)==0 and ((c:GetPreviousLocation()~=LOCATION_SZONE + or (c:GetPreviousLocation()==LOCATION_SZONE and c:GetPreviousSequence()~=6 + or c:GetPreviousSequence()~=7)) + and (c:IsLocation(LOCATION_SZONE) + and (c:GetSequence()==6 or c:GetSequence()==7)) ) + then + Duel.RaiseSingleEvent(e:GetHandler(),511009363,e,0,tp,tp,0) + c:RegisterFlagEffect(511002005,RESET_EVENT+0x1fe0000,0,1) + end +end +function c511009369.scfilter(c) + return c:IsFaceup() and (c:GetSequence()==6 or c:GetSequence()==7) +end +function c511009369.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c511009369.scfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009369.scfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511009369.scfilter,tp,LOCATION_SZONE,0,1,1,nil) +end +function c511009369.scop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LSCALE) + e1:SetValue(tc:GetLeftScale()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_RSCALE) + e1:SetValue(tc:GetRightScale()) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511009372.lua b/script/c511009372.lua new file mode 100644 index 00000000..af83cb81 --- /dev/null +++ b/script/c511009372.lua @@ -0,0 +1,158 @@ +--Master Spirit Tech Force - Pendulum Ruler +function c511009372.initial_effect(c) + c:EnableReviveLimit() + aux.EnablePendulumAttribute(c,false) + --fusion material + aux.AddFusionProcCodeFun(c,511009366,c511009372.fusfilter,1,true,true) + c:EnableReviveLimit() + --cannot be destroyed + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(1) + c:RegisterEffect(e3) + --cannot attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c511009372.atlimit2) + c:RegisterEffect(e3) + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(c511009372.distg) + c:RegisterEffect(e1) + --effect gain + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(25793414,1)) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c511009372.eftg) + e4:SetOperation(c511009372.efop) + c:RegisterEffect(e4) + --Set in P.Zone + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c511009372.pztg) + e3:SetOperation(c511009372.pzop) + c:RegisterEffect(e3) + --to extra + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetTarget(c511009372.tetg) + e2:SetOperation(c511009372.teop) + c:RegisterEffect(e2) + if not c511009372.global_check then + c511009372.global_check=true + local ge=Effect.CreateEffect(c) + ge:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge:SetCode(EVENT_CHAINING) + ge:SetOperation(c511009372.checkop) + Duel.RegisterEffect(ge,0) + end +end +--spirit OCG collection +c511009372.collection={ + [67105242]=true; + [487395]=true; + [92736188]=true; + [67957315]=true; + [59822133]=true; + [2420921]=true; + [93599951]=true; + [20802187]=true; + [16674846]=true; + [50418970]=true; + [53239672]=true; + [92394653]=true; +} +function c511009372.fusfilter(c) + return c:IsSetCard(0x414) or c511009372.collection[c:GetCode()] +end + +function c511009372.atlimit2(e,c) + local lv=c:GetLevel() + return lv0 then + Duel.MajesticCopy(c,tc) + Duel.MajesticCopy(c,tc) + e:GetHandler():RegisterFlagEffect(tc:GetCode(),RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + if c:GetFlagEffect(511009372)==0 then + --double + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1) + e1:SetTargetRange(1,1) + e1:SetValue(c511009372.damval) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + c:RegisterFlagEffect(511009372,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + end +end +function c511009372.lol(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end + +function c511009372.damval(e,re,val,r,rp,rc) + local c=e:GetHandler() + if bit.band(r,REASON_EFFECT)>0 and re:GetHandler()==c then return val*2 else return val end +end +function c511009372.pzfilter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) +end +function c511009372.pztg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetMatchingGroupCount(c511009372.pzfilter,tp,LOCATION_SZONE,0,nil)<2 end +end +function c511009372.pzop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end + + +function c511009372.tetg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return not e:GetHandler():IsForbidden() end +end +function c511009372.teop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + -- Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.SendtoExtraP(c,tp,REASON_EFFECT) + end +end diff --git a/script/c511009373.lua b/script/c511009373.lua new file mode 100644 index 00000000..5c4f9b39 --- /dev/null +++ b/script/c511009373.lua @@ -0,0 +1,81 @@ +--Illegal Dark Contract with the War God +function c511009373.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --unaffected + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000809,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511009373.condition) + e2:SetTarget(c511009373.target) + e2:SetOperation(c511009373.operation) + c:RegisterEffect(e2) + -- damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(45974017,3)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetCondition(c511009373.damcon) + e3:SetTarget(c511009373.damtg) + e3:SetOperation(c511009373.damop) + c:RegisterEffect(e3) +end +function c511009373.filter(c) + return c:IsFaceup() and c:IsSetCard(0xaf) +end +function c511009373.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c511009373.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c511009373.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009373.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511009373.operation(e,tp,eg,ep,ev,re,r,rp) +local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc1=g:GetFirst() + local tc2=g:GetNext() + if tc1:IsFaceup() and tc2:IsFaceup() and tc1:IsRelateToEffect(e) and tc2:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc1:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-1000) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc2:RegisterEffect(e2) + end +end +function c511009373.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511009373.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c511009373.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511009374.lua b/script/c511009374.lua new file mode 100644 index 00000000..65062589 --- /dev/null +++ b/script/c511009374.lua @@ -0,0 +1,109 @@ +--Binding Swords of Impact +function c511009374.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511009374.cost) + e1:SetCondition(c511009374.condition) + e1:SetTarget(c511009374.target) + e1:SetOperation(c511009374.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(40854197,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c511009374.leavecon) + e2:SetOperation(c511009374.leaveop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_REMOVE) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e4) + --cannot attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e5) + --damage reduce + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetCode(EFFECT_CHANGE_DAMAGE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetRange(LOCATION_MZONE) + e6:SetTargetRange(1,1) + e6:SetValue(c511009374.damval) + c:RegisterEffect(e6) + --act in hand + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e7:SetCondition(c511009374.handcon) + c:RegisterEffect(e7) +end +function c511009374.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_HAND) and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) +end +function c511009374.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>1 end + local g=Duel.GetFieldGroup(p,LOCATION_HAND,0) + Debug.Message(g:GetCount()) + e:SetLabel(count) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) +end +function c511009374.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + -- Debug.Message(e:GetLabel()) + --destroy + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511009374.descon) + e1:SetLabel(e:GetLabel()) + e1:SetOperation(c511009374.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,e:GetLabel()) + e:GetHandler():RegisterEffect(e1) +end +function c511009374.operation(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():SetTurnCounter(0) +end +function c511009374.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511009374.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + Debug.Message(e:GetLabel()) + if ct==e:GetLabel() then + Duel.Destroy(c,REASON_RULE) + end +end +function c511009374.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 end + return val +end +function c511009374.leavecon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c511009374.leaveop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_SKIP_DP) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END,3) + Duel.RegisterEffect(e1,tp) +end +function c511009374.handcon(e) + return true +end diff --git a/script/c511009375.lua b/script/c511009375.lua new file mode 100644 index 00000000..8b4b8e18 --- /dev/null +++ b/script/c511009375.lua @@ -0,0 +1,237 @@ +--Magical Silk Hat +function c511009375.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511009375.condition) + e1:SetTarget(c511009375.target) + e1:SetOperation(c511009375.activate) + c:RegisterEffect(e1) +end +function c511009375.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511009375.filter(c,e,tp) + return c:IsType(TYPE_MONSTER) and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetCode(),nil,0x11,0,0,1,RACE_SPELLCASTER,ATTRIBUTE_LIGHT,POS_FACEDOWN) + -- and Duel.IsExistingMatchingCard(c511009375.stfilter,tp,LOCATION_HAND,0,1,c,e,tp) + and Duel.IsExistingMatchingCard(c511009375.stfilter,tp,LOCATION_HAND,0,1,c) +end +function c511009375.stfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c511009375.stfilter2(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetCode(),nil,0x11,0,0,1,RACE_SPELLCASTER,ATTRIBUTE_LIGHT,POS_FACEDOWN) +end +function c511009375.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009375.filter,tp,LOCATION_HAND,0,1,nil,e,tp) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + -- and Duel.IsExistingMatchingCard(c511009375.stfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c511009375.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g1=Duel.GetMatchingGroup(c511009375.filter,tp,LOCATION_HAND,0,nil,e,tp) + -- Duel.SelectTarget(tp,c19441018.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local g2=Duel.GetMatchingGroup(c511009375.stfilter2,tp,LOCATION_HAND,0,g1:GetFirst(),e,tp) + if g1:GetCount()+g2:GetCount()<2 then return end + local g=Group.CreateGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + + local tg=sg1:GetFirst() + local fid=e:GetHandler():GetFieldID() + local c=e:GetHandler() + while tg do + local e1=Effect.CreateEffect(tg) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(TYPE_NORMAL+TYPE_MONSTER) + e1:SetReset(RESET_EVENT+0x47c0000) + tg:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RACE) + e2:SetValue(RACE_SPELLCASTER) + tg:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e3:SetValue(ATTRIBUTE_LIGHT) + tg:RegisterEffect(e3,true) + local e4=e1:Clone() + e4:SetCode(EFFECT_SET_BASE_ATTACK) + e4:SetValue(0) + tg:RegisterEffect(e4,true) + local e5=e1:Clone() + e5:SetCode(EFFECT_SET_BASE_DEFENSE) + e5:SetValue(0) + tg:RegisterEffect(e5,true) + local e6=e1:Clone() + e6:SetCode(EFFECT_CHANGE_LEVEL) + e6:SetValue(1) + tg:RegisterEffect(e6,true) + tg:RegisterFlagEffect(81210420,RESET_EVENT+0x47c0000+RESET_PHASE+PHASE_BATTLE,0,1,fid) + + --change target + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(54912977,0)) + e9:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e9:SetProperty(EFFECT_FLAG_CARD_TARGET) + e9:SetCode(EVENT_BATTLE_CONFIRM) + e9:SetCondition(c511009375.cond) + -- e9:SetTarget(c511009375.tg) + e9:SetOperation(c511009375.op) + tg:RegisterEffect(e9,true) + + tg=sg1:GetNext() + end + + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(tp,1,1,nil) + + local tg=sg2:GetFirst() + local fid=e:GetHandler():GetFieldID() + while tg do + + local e1=Effect.CreateEffect(tg) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(TYPE_NORMAL+TYPE_MONSTER) + e1:SetReset(RESET_EVENT+0x47c0000) + tg:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RACE) + e2:SetValue(RACE_SPELLCASTER) + tg:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e3:SetValue(ATTRIBUTE_LIGHT) + tg:RegisterEffect(e3,true) + local e4=e1:Clone() + e4:SetCode(EFFECT_SET_BASE_ATTACK) + e4:SetValue(0) + tg:RegisterEffect(e4,true) + local e5=e1:Clone() + e5:SetCode(EFFECT_SET_BASE_DEFENSE) + e5:SetValue(0) + tg:RegisterEffect(e5,true) + local e6=e1:Clone() + e6:SetCode(EFFECT_CHANGE_LEVEL) + e6:SetValue(1) + tg:RegisterEffect(e6,true) + tg:RegisterFlagEffect(81210420,RESET_EVENT+0x47c0000+RESET_PHASE+PHASE_BATTLE,0,1,fid) + + --change target + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(54912977,0)) + e9:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e9:SetProperty(EFFECT_FLAG_CARD_TARGET) + e9:SetCode(EVENT_BATTLE_CONFIRM) + e9:SetCondition(c511009375.cond) + -- e9:SetTarget(c511009375.tg) + e9:SetOperation(c511009375.op) + tg:RegisterEffect(e9,true) + + + tg=sg2:GetNext() + end + g:Merge(sg1) + g:Merge(sg2) + + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEDOWN_ATTACK) + Duel.ShuffleSetCard(g) + g:KeepAlive() + + local de=Effect.CreateEffect(e:GetHandler()) + de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + de:SetCode(EVENT_PHASE+PHASE_BATTLE) + de:SetReset(RESET_PHASE+PHASE_BATTLE) + de:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + de:SetCountLimit(1) + de:SetLabel(fid) + de:SetLabelObject(g) + de:SetOperation(c511009375.desop) + Duel.RegisterEffect(de,tp) + + + -- atklimit + --cannot attack + local e10=Effect.CreateEffect(e:GetHandler()) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + -- e3:SetRange(LOCATION_MZONE) + e10:SetTargetRange(0,LOCATION_MZONE) + e10:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e10:SetReset(RESET_PHASE+PHASE_END) + e10:SetCondition(c511009375.atkcon) + e10:SetTarget(c511009375.atktg) + Duel.RegisterEffect(e10,tp) + local e11=Effect.CreateEffect(e:GetHandler()) + e11:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e11:SetCode(EVENT_ATTACK_ANNOUNCE) + -- e4:SetRange(LOCATION_MZONE) + e11:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e11:SetReset(RESET_PHASE+PHASE_END) + e11:SetOperation(c511009375.checkop) + e11:SetLabelObject(e10) + Duel.RegisterEffect(e11,tp) + +end +function c511009375.desfilter(c,fid) + return c:GetFlagEffectLabel(81210420)==fid +end +function c511009375.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local fid=e:GetLabel() + local tg=g:Filter(c511009375.desfilter,nil,fid) + g:DeleteGroup() + Duel.Destroy(tg,REASON_EFFECT) + local tg2=tg:Filter(c511009375.desfilter,nil,fid) + Duel.SendtoGrave(tg2,REASON_EFFECT) +end + +function c511009375.cond(e,tp,eg,ep,ev,re,r,rp) + return r~=REASON_REPLACE and Duel.GetAttackTarget()==e:GetHandler() and Duel.GetAttacker():IsControler(1-tp) +end +function c511009375.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if bit.band(c:GetOriginalType(),TYPE_MONSTER)==TYPE_MONSTER then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511009375.rdop1) + c:RegisterEffect(e1) + elseif bit.band(c:GetOriginalType(),TYPE_SPELL)==TYPE_SPELL or bit.band(c:GetOriginalType(),TYPE_TRAP)==TYPE_TRAP then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c511009375.rdop2) + c:RegisterEffect(e1) + end +end +function c511009375.rdop1(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end +function c511009375.rdop2(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,0) +end + + +-- atklimit +function c511009375.atkcon(e) + return e:GetHandler():GetFlagEffect(511009375)~=0 +end +function c511009375.atktg(e,c) + return c:GetFieldID()~=e:GetLabel() +end +function c511009375.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(511009375)~=0 then return end + local fid=eg:GetFirst():GetFieldID() + e:GetHandler():RegisterFlagEffect(511009375,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetLabelObject():SetLabel(fid) +end \ No newline at end of file diff --git a/script/c511009376.lua b/script/c511009376.lua new file mode 100644 index 00000000..c72e2505 --- /dev/null +++ b/script/c511009376.lua @@ -0,0 +1,185 @@ +--Destiny HERO - Duskutopiaguy +function c511009376.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,90579153,aux.FilterBoolFunction(Card.IsFusionSetCard,0xc008),1,true,false) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511009376.regcon) + e1:SetOperation(c511009376.regop) + c:RegisterEffect(e1) + -- Protection1 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67754901,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetTarget(c511009376.indtg) + e2:SetOperation(c511009376.indop) + c:RegisterEffect(e2) + -- Protection2 + --Negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(12298909,0)) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511009376.condition) + -- e1:SetCost(c511009376.cost) + e3:SetTarget(c511009376.target) + e3:SetOperation(c511009376.activate) + c:RegisterEffect(e3) +end +function c511009376.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end +function c511009376.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(42878636,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c511009376.fustarg) + e3:SetOperation(c511009376.fusop) + e3:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e3) +end +function c511009376.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511009376.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511009376.fustarg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511009376.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511009376.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009376.fusop(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511009376.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511009376.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511009376.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end + + +----------------protection1------------------ +function c511009376.indfilter(c) + return c:IsFaceup() +end +function c511009376.indtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511009376.indfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009376.indfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009376.indfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511009376.indop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e3=e1:Clone() + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + tc:RegisterEffect(e3) + end +end +-----------------------protection2------------------ +function c511009376.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsOnField() +end +function c511009376.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ex and tg~=nil and tc+tg:FilterCount(c511009376.filter,nil)-tg:GetCount()>0 then + e:SetLabelObject(tg) + return true end +end +function c511009376.filter2(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsOnField() and c:IsCanBeEffectTarget(e) +end +function c511009376.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=e:GetLabelObject():FilterSelect(tp,c511009376.filter2,1,1,nil,e,tp) + Duel.SetTargetCard(g) +end +function c511009376.activate(e,tp,eg,ep,ev,re,r,rp) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local tc=Duel.GetFirstTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511009376.reptg) + local i=0 + local ct=Group.CreateGroup() + while i0 + and Duel.IsExistingMatchingCard(c511009377.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c511009377.eqfilter,tp,LOCATION_HAND,0,1,nil) end + local g=Duel.SelectTarget(tp,c511009377.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_HAND) +end +function c511009377.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if not tc then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(12152769,2)) + local g=Duel.SelectMatchingCard(tp,c511009377.eqfilter,tp,LOCATION_HAND,0,1,1,nil) + local ec=g:GetFirst() + if ec then + Duel.HintSelection(g) + if not Duel.Equip(tp,ec,tc,true) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511009377.eqlimit) + e1:SetLabelObject(tc) + ec:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(ec:GetTextAttack()*-1) + ec:RegisterEffect(e2) + + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetOperation(c511009377.tgop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + ec:RegisterEffect(e3) + end + end + +function c511009377.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c511009377.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c511009378.lua b/script/c511009378.lua new file mode 100644 index 00000000..df20c3f2 --- /dev/null +++ b/script/c511009378.lua @@ -0,0 +1,108 @@ +--Cipher Biplane +function c511009378.initial_effect(c) +--spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(13647631,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c511009378.spcon) + e1:SetTarget(c511009378.sptg) + e1:SetOperation(c511009378.spop) + c:RegisterEffect(e1) + --lvchange + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(45496268,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c511009378.lvtg) + e2:SetOperation(c511009378.lvop) + c:RegisterEffect(e2) + --to grave + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetOperation(c511009378.regop) + c:RegisterEffect(e3) +end +function c511009378.spfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xe5) +end +function c511009378.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511009378.spfilter,1,nil,tp) +end +function c511009378.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511009378.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then + Duel.SpecialSummonComplete() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end + +function c511009378.lvfilter(c) + return c:IsFaceup() and c:GetLevel()~=8 and c:IsSetCard(0xe5) +end +function c511009378.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009378.lvfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009378.lvfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009378.lvfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009378.lvop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(8) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c511009378.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 and c:IsReason(REASON_DESTROY) then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(83991690,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c511009378.thcost) + e1:SetTarget(c511009378.thtg) + e1:SetOperation(c511009378.tgop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511009378.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511009378.thfilter(c) + return c:IsCode(81974607) and c:IsAbleToHand() +end +function c511009378.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009378.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511009378.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009378.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511009380.lua b/script/c511009380.lua new file mode 100644 index 00000000..92f59967 --- /dev/null +++ b/script/c511009380.lua @@ -0,0 +1,65 @@ +--SR fiendmagnet +function c511009380.initial_effect(c) + --tograve + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(83236601,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511009380.condition) + e1:SetTarget(c511009380.target) + e1:SetOperation(c511009380.operation) + c:RegisterEffect(e1) + if not c511009380.global_check then + c511009380.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(511009380) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(511009380) + Duel.RegisterEffect(ge2,0) + end +end +function c511009380.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511009380)>0 +end +function c511009380.filter(c,e,tp,mc) + local token=c + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SYNCHRO_MATERIAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + token:RegisterEffect(e1) + local mg=Group.FromCards(token,mc) + return not c:IsType(TYPE_TUNER) and Duel.IsExistingMatchingCard(c511009380.scfilter,tp,LOCATION_EXTRA,0,1,nil,mg) +end +function c511009380.scfilter(c,mg) + return c:IsSynchroSummonable(nil,mg) +end +function c511009380.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c511009380.filter(chkc,e,tp,e:GetHandler()) end + if chk==0 then return Duel.IsExistingTarget(c511009380.filter,tp,0,LOCATION_MZONE,1,nil,e,tp,e:GetHandler()) end + -- Debug.Message(Duel.IsExistingTarget(c511009380.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp,e:GetHandler())) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511009380.filter,tp,0,LOCATION_MZONE,1,1,nil,e,tp,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511009380.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + if not c:IsRelateToEffect(e) then return end + local mg=Group.FromCards(c,tc) + local g=Duel.GetMatchingGroup(c511009380.scfilter,tp,LOCATION_EXTRA,0,nil,mg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SynchroSummon(tp,sg:GetFirst(),nil,mg) + end +end diff --git a/script/c511009381.lua b/script/c511009381.lua new file mode 100644 index 00000000..4636b80b --- /dev/null +++ b/script/c511009381.lua @@ -0,0 +1,251 @@ +--Greedy Venom Fusion Dragon (Anime) +function c511009381.initial_effect(c) + -- + --aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10f3),c511009381.mat_fil,true) + c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c511009381.funcon) + e0:SetOperation(c511009381.funop) + c:RegisterEffect(e0) + --give effect to material + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(30086349,0)) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511009381.con) + e1:SetOperation(c511009381.op) + c:RegisterEffect(e1) + --Reduce ATK + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51570882,0)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c511009381.atktg) + e2:SetOperation(c511009381.atkop) + c:RegisterEffect(e2) + --destroy and damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(51570882,1)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c511009381.descon) + e3:SetTarget(c511009381.destg) + e3:SetOperation(c511009381.desop) + c:RegisterEffect(e3) +end + +---fusion procedure----- +function c511009381.mat_fil(c,fc) + local attr=c:IsAttribute(ATTRIBUTE_DARK) + if Card.IsFusionAttribute then + attr=c:IsFusionAttribute(ATTRIBUTE_DARK,fc) + end + return attr and c:GetLevel()>=8 +end +function c511009381.funcon(e,g,gc,chkfnf) + if g==nil then return true end + local c=e:GetHandler() + local f2=aux.FilterBoolFunction(Card.IsFusionSetCard,0x10f3) + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return (c511009381.mat_fil(gc,c) and mg:IsExists(f2,1,gc,c)) + or (f2(gc) and mg:IsExists(c511009381.mat_fil,1,gc,c)) end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=mg:GetFirst() + while tc do + if c511009381.mat_fil(tc,c) then g1:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + if f2(tc) then g2:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + tc=mg:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) + else return g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) end +end +function c511009381.funop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local c=e:GetHandler() + local f2=aux.FilterBoolFunction(Card.IsFusionSetCard,0x10f3) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local sg=Group.CreateGroup() + if c511009381.mat_fil(gc,c) then sg:Merge(g:Filter(f2,gc,c)) end + if f2(gc) then sg:Merge(g:Filter(c511009381.mat_fil,gc,c)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local sg=g:Filter(c511009381.FConditionFilterF2c,nil,c) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then + g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + local tc1=g1:GetFirst() + sg:RemoveCard(tc1) + local b1=c511009381.mat_fil(tc1,c) + local b2=f2(tc1) + if b1 and not b2 then sg:Remove(c511009381.FConditionFilterF2r1,nil,c) end + if b2 and not b1 then sg:Remove(c511009381.FConditionFilterF2r2,nil,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) +end +function c511009381.FConditionFilterF2c(c,fc) + return c511009381.mat_fil(c,fc) or c:IsFusionSetCard(0x10f3) +end +function c511009381.FConditionFilterF2r1(c,fc) + return c511009381.mat_fil(c,fc) and not c:IsFusionSetCard(0x10f3) +end +function c511009381.FConditionFilterF2r2(c,fc) + return c:IsFusionSetCard(0x10f3) and not c511009381.mat_fil(c,fc) +end +------------------- +function c511009381.con(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c511009381.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=c:GetMaterial() + local tc=g:GetFirst() + while tc do + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(18175965,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetRange(tc:GetLocation()) + e4:SetCondition(c511009381.spcon) + e4:SetCost(c511009381.spcost) + e4:SetTarget(c511009381.sptg) + e4:SetReset(RESET_EVENT+0x1ff0000) + e4:SetOperation(c511009381.spop) + tc:RegisterEffect(e4) + + tc=g:GetNext() + end + +end +function c511009381.cfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:GetPreviousControler()==tp + and c:IsReason(REASON_DESTROY) and c:IsCode(51570882) +end +function c511009381.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511009381.cfilter,1,nil,tp) +end +function c511009381.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and e:GetHandler():IsLocation(LOCATION_GRAVE) end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c511009381.spfilter(c,e,tp) + return c:IsCode(51570882) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009381.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009381.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511009381.spop(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,c511009381.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + --forbidden + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_FORBIDDEN) + e1:SetTargetRange(0x7f,0x7f) + e1:SetTarget(c511009381.bantg) + e1:SetLabel(ac) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c511009381.bantg(e,c) + return c:IsCode(7610) +end +-------------------- +function c511009381.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and 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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511009381.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e0:SetCode(EFFECT_SET_ATTACK_FINAL) + e0:SetValue(0) + e0:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + end +end + +function c511009381.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c511009381.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + local sg=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c511009381.ctfilter(c,tp) + return c:GetPreviousControler()==tp +end +function c511009381.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local g1=dg:Filter(c511009381.ctfilter,nil,tp) + local g2=dg:Filter(c511009381.ctfilter,nil,1-tp) + local sum1=g1:GetSum(Card.GetAttack) + local sum2=g2:GetSum(Card.GetAttack) + Duel.Damage(tp,sum1,REASON_EFFECT) + Duel.Damage(1-tp,sum2,REASON_EFFECT) + end +end diff --git a/script/c511009382.lua b/script/c511009382.lua new file mode 100644 index 00000000..ee458a5b --- /dev/null +++ b/script/c511009382.lua @@ -0,0 +1,123 @@ +--C/C/C Sonic Halberd of Battle +function c511009382.initial_effect(c) +c:EnableReviveLimit() + --aux.AddFusionProcFun2(c,c511009382.mat_fil,aux.FilterBoolFunction(Card.IsFusionSetCard,511009400),true) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_FUSION_MATERIAL) + e0:SetCondition(c511009382.funcon) + e0:SetOperation(c511009382.funop) + c:RegisterEffect(e0) + + --multiattack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(c511009382.val) + c:RegisterEffect(e1) + --immune + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(46132282,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c511009382.effop) + c:RegisterEffect(e1) +end + +function c511009382.mat_fil(c,fc) + local attr=c:IsAttribute(ATTRIBUTE_WIND) + if Card.IsFusionAttribute then + attr=c:IsFusionAttribute(ATTRIBUTE_WIND,fc) + end + return attr and c:GetLevel()>=7 +end + + +function c511009382.funcon(e,g,gc,chkfnf) + if g==nil then return true end + local c=e:GetHandler() + local f2=aux.FilterBoolFunction(Card.IsFusionCode,511009400) + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return (c511009382.mat_fil(gc,c) and mg:IsExists(f2,1,gc,c)) + or (f2(gc) and mg:IsExists(c511009382.mat_fil,1,gc,c)) end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=mg:GetFirst() + while tc do + if c511009382.mat_fil(tc,c) then g1:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + if f2(tc) then g2:AddCard(tc) if Auxiliary.FConditionCheckF(tc,chkf) then fs=true end end + tc=mg:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) + else return g1:IsExists(Auxiliary.FConditionFilterF2,1,nil,g2) end +end +function c511009382.funop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local c=e:GetHandler() + local f2=aux.FilterBoolFunction(Card.IsFusionCode,511009400) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + local sg=Group.CreateGroup() + if c511009382.mat_fil(gc,c) then sg:Merge(g:Filter(f2,gc)) end + if f2(gc) then sg:Merge(g:Filter(c511009382.mat_fil,gc,c)) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=sg:Select(tp,1,1,nil) + Duel.SetFusionMaterial(g1) + return + end + local sg=g:Filter(c511009382.FConditionFilterF2c,nil,c) + local g1=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + if chkf~=PLAYER_NONE then + g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf) + else g1=sg:Select(tp,1,1,nil) end + local tc1=g1:GetFirst() + sg:RemoveCard(tc1) + local b1=c511009382.mat_fil(tc1,c) + local b2=f2(tc1) + if b1 and not b2 then sg:Remove(c511009382.FConditionFilterF2r1,nil,c) end + if b2 and not b1 then sg:Remove(c511009382.FConditionFilterF2r2,nil,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=sg:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SetFusionMaterial(g1) +end +function c511009382.FConditionFilterF2c(c,fc) + return c511009382.mat_fil(c,fc) or c:IsFusionCode(511009400) +end +function c511009382.FConditionFilterF2r1(c,fc) + return c511009382.mat_fil(c,fc) and not c:IsFusionCode(511009400) +end +function c511009382.FConditionFilterF2r2(c,fc) + return c:IsFusionCode(511009400) and not c511009382.mat_fil(c,fc) +end + +function c511009382.attfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) +end +function c511009382.val(e,c) + if Duel.IsExistingMatchingCard(c511009382.attfilter,tp,0,LOCATION_MZONE,1,nil) then + return 3 + else + return 2 + end +end +function c511009382.effop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + c:RegisterEffect(e2) + end +end diff --git a/script/c511009383.lua b/script/c511009383.lua new file mode 100644 index 00000000..44b7aafc --- /dev/null +++ b/script/c511009383.lua @@ -0,0 +1,93 @@ +--D/D Brownie +--Fixed By TheOnePharaoh +--fixed by MLD +function c511009383.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --SelfSummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(66762372,1)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_PZONE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c511009383.spcon) + e1:SetTarget(c511009383.sptg) + e1:SetOperation(c511009383.spop) + c:RegisterEffect(e1) + --SpecialSummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCondition(c511009383.regcon) + e2:SetOperation(c511009383.regop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(17540705,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCondition(c511009383.sccon) + e3:SetTarget(c511009383.sctg) + e3:SetOperation(c511009383.scop) + c:RegisterEffect(e3) +end +function c511009383.cfilter(c,tp) + return c:GetSummonLocation()==LOCATION_EXTRA and c:IsControler(tp) +end +function c511009383.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511009383.cfilter,1,nil,tp) +end +function c511009383.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511009383.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c511009383.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsSummonType(SUMMON_TYPE_PENDULUM) and e:GetHandler():GetSummonLocation()==LOCATION_EXTRA +end +function c511009383.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(511009383,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c511009383.sccon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(511009383)~=0 +end +function c511009383.filter(c,e,tp) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009383.tfilter(c) + return c:IsSetCard(0xaf) and c:IsReleasableByEffect() +end +function c511009383.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c511009383.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and e:GetHandler():IsReleasableByEffect() + and Duel.IsExistingMatchingCard(c511009383.tfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c511009383.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511009383.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511009383.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or not c:IsReleasableByEffect() then return end + local tc=Duel.GetFirstTarget() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,c511009383.tfilter,tp,LOCATION_MZONE,0,1,1,c) + if g:GetCount()>0 then + g:AddCard(c) + if Duel.Release(g,REASON_EFFECT)>1 and tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511009384.lua b/script/c511009384.lua new file mode 100644 index 00000000..4f12f251 --- /dev/null +++ b/script/c511009384.lua @@ -0,0 +1,63 @@ +--Speedroid 5 6 Plane +function c511009384.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(11439455,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511009384.atktg) + e1:SetOperation(c511009384.atkop) + c:RegisterEffect(e1) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(43266605,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_HAND) + e3:SetCondition(c511009384.spcon) + e3:SetTarget(c511009384.sptg) + e3:SetOperation(c511009384.spop) + c:RegisterEffect(e3) +end +function c511009384.atkfilter(c) + return c:IsFaceup() +end +function c511009384.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009384.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009384.atkfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511009384.atkfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g,1,0,0) +end +function c511009384.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-600) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c511009384.cfilter(c,tp) + return c:IsControler(tp) +end +function c511009384.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511009384.cfilter,1,nil,tp) +end +function c511009384.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c511009384.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511009385.lua b/script/c511009385.lua new file mode 100644 index 00000000..15094781 --- /dev/null +++ b/script/c511009385.lua @@ -0,0 +1,77 @@ +--Speedroid Vidroskull +function c511009385.initial_effect(c) +--spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(21250202,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_HAND) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetCondition(c511009385.spcon) + e3:SetTarget(c511009385.sptg) + e3:SetOperation(c511009385.spop) + c:RegisterEffect(e3) + + -- damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511009385.damcon) + e2:SetOperation(c511009385.damop) + c:RegisterEffect(e2) + if not c511009385.global_check then + c511009385.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetOperation(c511009385.spcheckop) + Duel.RegisterEffect(ge1,0) + end +end +function c511009385.spcheckop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local p1=false + local p2=false + while tc do + if tc:GetSummonPlayer()==0 then p1=true else p2=true end + tc=eg:GetNext() + end + if p1 then Duel.RegisterFlagEffect(0,511009385,RESET_PHASE+PHASE_END,0,1) end + if p2 then Duel.RegisterFlagEffect(1,511009385,RESET_PHASE+PHASE_END,0,1) end +end + +function c511009385.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return Duel.GetFlagEffect(1-tp,511009385)~=0 and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 +end +function c511009385.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 c511009385.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c511009385.penfilter,tp,LOCATION_EXTRA,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end + + + +function c511009385.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep==tp and c:IsRelateToBattle() and eg:GetFirst()==c:GetBattleTarget() +end +function c511009385.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(1-tp,ev,false) +end diff --git a/script/c511009386.lua b/script/c511009386.lua new file mode 100644 index 00000000..5bdfd42e --- /dev/null +++ b/script/c511009386.lua @@ -0,0 +1,29 @@ +--Pendulum Holt +function c511009386.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009386.condition) + e1:SetTarget(c511009386.target) + e1:SetOperation(c511009386.activate) + c:RegisterEffect(e1) +end +function c511009386.cfilter(c) + return c:IsFaceup() +end +function c511009386.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetMatchingGroupCount(c511009386.cfilter,c:GetControler(),LOCATION_EXTRA,0,nil)>=3 +end +function c511009386.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c511009386.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511009387.lua b/script/c511009387.lua new file mode 100644 index 00000000..dbcb628d --- /dev/null +++ b/script/c511009387.lua @@ -0,0 +1,63 @@ +--Dark Anthelion Dragon +function c511009387.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,2) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(16195942,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511009387.cost) + e1:SetTarget(c511009387.target) + e1:SetOperation(c511009387.operation) + c:RegisterEffect(e1) +end +function c511009387.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) + --indes + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + e:GetHandler():RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e:GetHandler():RegisterEffect(e2) +end +function c511009387.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,math.ceil(g:GetFirst():GetAttack())) +end +function c511009387.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 not tc:IsImmuneToEffect(e) then + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(math.ceil(atk/2)) + tc:RegisterEffect(e1) + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(math.ceil(atk/2)) + c:RegisterEffect(e2) + Duel.Recover(tp,math.ceil(atk/2),REASON_EFFECT) + end + end +end diff --git a/script/c511009388.lua b/script/c511009388.lua new file mode 100644 index 00000000..0e082c46 --- /dev/null +++ b/script/c511009388.lua @@ -0,0 +1,42 @@ +--D/D Scale Surveyor +function c511009388.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy and set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511009388.condition) + e1:SetTarget(c511009388.target) + e1:SetOperation(c511009388.operation) + c:RegisterEffect(e1) +end +function c511009388.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) +end +function c511009388.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511009388.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c511009388.filter,tp,0,LOCATION_SZONE,1,nil) end +end +function c511009388.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511009388.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LSCALE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RSCALE) + tc:RegisterEffect(e2) + + tc=g:GetNext() + end +end diff --git a/script/c511009389.lua b/script/c511009389.lua new file mode 100644 index 00000000..6ec04386 --- /dev/null +++ b/script/c511009389.lua @@ -0,0 +1,70 @@ +--Dowsing Fusion +function c511009389.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009389.target) + e1:SetOperation(c511009389.activate) + c:RegisterEffect(e1) +end +function c511009389.filter1(c,e) + return c:IsType(TYPE_PENDULUM) and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511009389.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511009389.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511009389.filter1,tp,LOCATION_GRAVE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c511009389.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511009389.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009389.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511009389.filter1,tp,LOCATION_GRAVE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511009389.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511009389.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummonStep(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + Duel.SpecialSummonComplete() + tc:CompleteProcedure() + end +end diff --git a/script/c511009390.lua b/script/c511009390.lua new file mode 100644 index 00000000..602134a7 --- /dev/null +++ b/script/c511009390.lua @@ -0,0 +1,49 @@ +--C/C/C Rock Sword of Battle +function c511009390.initial_effect(c) + --fusion material + c:EnableReviveLimit() + if Card.IsFusionAttribute then + aux.AddFusionProcCodeFun(c,511009400,c511009390.ffilter1,1,true,true) + else + aux.AddFusionProcCodeFun(c,511009400,c511009390.ffilter2,1,true,true) + end + --adup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511009390.atktg) + e1:SetOperation(c511009390.atkop) + c:RegisterEffect(e1) +end +------------ +function c511009390.ffilter1(c) + return c:IsFusionAttribute(ATTRIBUTE_EARTH) and (c:GetLevel()==5 or c:GetLevel()==6) +end +function c511009390.ffilter2(c) + return c:IsAttribute(ATTRIBUTE_EARTH) and (c:GetLevel()==5 or c:GetLevel()==6) +end +-------------- +function c511009390.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_EARTH) +end +function c511009390.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009390.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511009390.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(c511009390.filter,tp,LOCATION_MZONE,LOCATION_MZONE,c) + local atk=g:GetSum(Card.GetAttack) + if atk>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end + end +end +function c511009390.ffilter(c,e,tp) + return c:IsCanBeFusionMaterial() and c:IsAttribute(ATTRIBUTE_EARTH) and (c:GetLevel()==5 or c:GetLevel()==6) +end diff --git a/script/c511009391.lua b/script/c511009391.lua new file mode 100644 index 00000000..384c7434 --- /dev/null +++ b/script/c511009391.lua @@ -0,0 +1,47 @@ +--C/C/C Water Sword of Battle +function c511009391.initial_effect(c) + --fusion material + c:EnableReviveLimit() + if Card.IsFusionAttribute then + aux.AddFusionProcCodeFun(c,511009400,c511009390.ffilter1,1,true,true) + else + aux.AddFusionProcCodeFun(c,511009400,c511009390.ffilter2,1,true,true) + end + --adup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c511009391.atktg) + e1:SetOperation(c511009391.atkop) + c:RegisterEffect(e1) +end +function c511009390.ffilter1(c) + return c:IsFusionAttribute(ATTRIBUTE_WATER) and (c:GetLevel()==5 or c:GetLevel()==6) +end +function c511009390.ffilter2(c) + return c:IsAttribute(ATTRIBUTE_WATER) and (c:GetLevel()==5 or c:GetLevel()==6) +end +function c511009391.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511009391.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009391.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c511009391.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(c511009391.filter,tp,LOCATION_MZONE,LOCATION_MZONE,c) + local atk=g:GetSum(Card.GetAttack) + if atk>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end + end +end +function c511009391.ffilter(c,e,tp) + return c:IsCanBeFusionMaterial() and c:IsAttribute(ATTRIBUTE_WATER) and (c:GetLevel()==5 or c:GetLevel()==6) +end diff --git a/script/c511009392.lua b/script/c511009392.lua new file mode 100644 index 00000000..4f3779fb --- /dev/null +++ b/script/c511009392.lua @@ -0,0 +1,118 @@ +--D/D/D Knowledge King Tomb Conquistador +function c511009392.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + -- Peffect + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_PZONE) + e1:SetCondition(c511009392.damcon) + e1:SetOperation(c511009392.damop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(91596726,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c511009392.cost) + e2:SetOperation(c511009392.operation) + c:RegisterEffect(e2) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c511009392.atkop) + c:RegisterEffect(e3) + --search + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(64973287,1)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_DESTROYING) + e4:SetCondition(aux.bdocon) + e4:SetTarget(c511009392.thtg) + e4:SetOperation(c511009392.thop) + c:RegisterEffect(e4) +end +-- REGEN LP +function c511009392.damcon(e,tp,eg,ep,ev,re,r,rp) + if tp~=Duel.GetTurnPlayer() then return false end + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return re:IsSetCard(0xae) and ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) +end +function c511009392.damop(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_REVERSE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c511009392.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c511009392.refcon(e,re,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end + + +--ATK UP +function c511009392.cfilter(c) + return c:IsSetCard(0xae) and c:IsAbleToGraveAsCost() +end +function c511009392.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009392.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511009392.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511009392.operation(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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end + +function c511009392.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511009392.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511009392.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511009392.filter(c) + return c:IsSetCard(0xae) and c:IsAbleToHand() +end +function c511009392.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009392.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c511009392.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c511009392.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c511009393.lua b/script/c511009393.lua new file mode 100644 index 00000000..fea0aee6 --- /dev/null +++ b/script/c511009393.lua @@ -0,0 +1,177 @@ +--Performapal Sky Magician +function c511009393.initial_effect(c) + + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(aux.chainreg) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(28201945,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511009393.con) + e3:SetOperation(c511009393.op) + c:RegisterEffect(e3) + + --Spell change + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(81020646,0)) + e4:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_CHAINING) + e4:SetCondition(c511009393.discon) + e4:SetTarget(c511009393.distg) + e4:SetOperation(c511009393.disop) + c:RegisterEffect(e4) + + + --Special Summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(35952884,1)) + e5:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetCode(EVENT_TO_GRAVE) + e5:SetCondition(c511009393.descon) + e5:SetTarget(c511009393.destg) + e5:SetOperation(c511009393.desop) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EVENT_REMOVE) + c:RegisterEffect(e6) + local e7=e5:Clone() + e7:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e7) +end +function c511009393.con(e,tp,eg,ep,ev,re,r,rp) + local c=re:GetHandler() + return rp==tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and e:GetHandler():GetFlagEffect(1)>0 +end + +function c511009393.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end + + +----Spell changing +function c511009393.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and ep~=tp + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c511009393.thfilter(c) + return c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:IsAbleToHand() and Duel.IsExistingMatchingCard(c511009393.actfilter,tp,LOCATION_HAND,0,1,nil,tp,eg,ep,ev,re,r,rp,c:GetCode()) +end +function c511009393.actfilter(c,tp,eg,ep,ev,re,r,rp,code) + local te=c:GetActivateEffect() + if not te then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return c:IsType(TYPE_SPELL) and c:IsType(TYPE_CONTINUOUS) and (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) + and not c:getCode()==code +end +function c511009393.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c511009393.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009393.thfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c511009393.thfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511009393.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 then + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(c511009393.actfilter,tp,LOCATION_HAND,0,nil,tp,eg,ep,ev,re,r,rp,tc:getCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + local g=sg:Select(tp,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + if te then + local con=te:GetCondition() + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + Duel.ClearTargetCard() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + Duel.BreakEffect() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end + end +end + +------------------------------------------ + +function c511009393.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c511009393.desfilter(c) + return c:IsFacedown() or c:IsType(TYPE_SPELL) +end + +function c511009393.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c511009393.desfilter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c511009393.desfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + if g:GetCount()>0 and g:GetFirst():IsFaceup() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + end +end +function c511009393.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if tc:IsFacedown() then Duel.ConfirmCards(tp,tc) end + if tc:IsType(TYPE_SPELL) then Duel.Destroy(tc,REASON_EFFECT) end + end +end + +--------------------------------------------- diff --git a/script/c511009394.lua b/script/c511009394.lua new file mode 100644 index 00000000..b1983bbb --- /dev/null +++ b/script/c511009394.lua @@ -0,0 +1,34 @@ +--Magician's Left Hand +function c511009394.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44665365,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511009394.discon) + e1:SetTarget(c511009394.distg) + e1:SetOperation(c511009394.disop) + c:RegisterEffect(e1) +end +function c511009394.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if ep==tp or c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP) and Duel.IsChainNegatable(ev) +end +function c511009394.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511009394.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511009395.lua b/script/c511009395.lua new file mode 100644 index 00000000..b3146e2e --- /dev/null +++ b/script/c511009395.lua @@ -0,0 +1,34 @@ +--Magician's Right Hand +function c511009395.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(44665365,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c511009395.discon) + e1:SetTarget(c511009395.distg) + e1:SetOperation(c511009395.disop) + c:RegisterEffect(e1) +end +function c511009395.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if ep==tp or c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and Duel.IsChainNegatable(ev) +end +function c511009395.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511009395.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c511009396.lua b/script/c511009396.lua new file mode 100644 index 00000000..8651ec72 --- /dev/null +++ b/script/c511009396.lua @@ -0,0 +1,50 @@ +--Dark Seed Planter +function c511009396.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009396.target) + e1:SetOperation(c511009396.activate) + c:RegisterEffect(e1) + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(84013237,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511009396.atkcon) + e1:SetOperation(c511009396.atkop) + c:RegisterEffect(e1) +end + +function c511009396.filter(c) + return c:IsFaceup() and not c:IsAttribute(ATTRIBUTE_DARK) +end +function c511009396.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c511009396.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local sg=Duel.GetMatchingGroup(c511009396.filter,tp,0,LOCATION_MZONE,nil) + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetValue(ATTRIBUTE_DARK) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end +end +function c511009396.atkcon(e,tp,eg,ep,ev,re,r,rp) + local atker=Duel.GetAttacker() + local atktg=Duel.GetAttackTarget() + return atker and atktg and atker:IsFaceup() and atktg:IsFaceup() and atktg:IsControler(tp) and atktg:IsAttribute(ATTRIBUTE_DARK) and atker:IsAttribute(ATTRIBUTE_DARK) +end +function c511009396.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end \ No newline at end of file diff --git a/script/c511009397.lua b/script/c511009397.lua new file mode 100644 index 00000000..d20f794f --- /dev/null +++ b/script/c511009397.lua @@ -0,0 +1,38 @@ +--Clairvoyance +function c511009397.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511009397.target) + e1:SetOperation(c511009397.activate) + c:RegisterEffect(e1) +end +function c511009397.filter(c) + return c:IsFacedown() +end +function c511009397.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_SZONE) and c511009397.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009397.filter,tp,0,LOCATION_SZONE,1,nil) and Duel.IsPlayerCanDraw(tp,2) and Duel.IsPlayerCanDraw(1-tp,2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + Duel.SelectTarget(tp,c511009397.filter,tp,0,LOCATION_SZONE,1,1,nil) +end +function c511009397.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFaceup() then return end + local op=Duel.SelectOption(tp,71,72) + Duel.ConfirmCards(tp,tc) + if (op==0 and tc:IsType(TYPE_SPELL)) or (op==1 and tc:IsType(TYPE_TRAP)) then + if Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 then + Duel.Draw(tp,2,REASON_EFFECT) + end + else + if Duel.SelectYesNo(1-tp,aux.Stringid(3717252,0)) then + Duel.Draw(1-tp,2,REASON_EFFECT) + end + end + +end diff --git a/script/c511009398.lua b/script/c511009398.lua new file mode 100644 index 00000000..58ce21ac --- /dev/null +++ b/script/c511009398.lua @@ -0,0 +1,105 @@ +--メタルフォーゼ・ヴォルフレイム +function c69351984.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_FIEND),3,2) + c:EnableReviveLimit() + --battle + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59627393,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetCondition(c59627393.condition) + e1:SetCost(c59627393.cost) + e1:SetTarget(c59627393.target) + e1:SetOperation(c59627393.operation) + c:RegisterEffect(e1) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCountLimit(1) + e1:SetCost(c94380860.descost) + e4:SetTarget(c79555535.destg) + e4:SetOperation(c79555535.desop) + c:RegisterEffect(e4) +end + +function c59627393.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) and at and ((a:IsControler(tp) and a:IsOnField() and a:IsSetCard(0x84)) + or (at:IsControler(tp) and at:IsOnField() and at:IsFaceup() and at:IsSetCard(0x84))) +end +function c59627393.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,59627393)==0 and e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) + Duel.RegisterFlagEffect(tp,59627393,RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c59627393.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(Duel.GetAttacker()) + Duel.SetTargetCard(Duel.GetAttackTarget()) +end +function c59627393.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + if at:IsControler(tp) then a,at=at,a end + if a:IsFacedown() or not a:IsRelateToEffect(e) or not at:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + a:RegisterEffect(e1,true) + --Disable + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(23274061,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c23274061.battledcon) + e2:SetOperation(c23274061.battledop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + a:RegisterEffect(e2,true) + +end +function c23274061.battledcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local a=Duel.GetAttacker() + if a==c then a=Duel.GetAttackTarget() end + e:SetLabelObject(a) + return a and a:IsRelateToBattle() +end +function c23274061.battledop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsRelateToBattle() then return end + if Duel.Destroy(tc,REASON_EFFECT)==0 then return end + Duel.Damage(1-tp,500,REASON_EFFECT) +end + +------------------------------------------------------------- +function c94380860.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c450000349.filter(c) + return c:IsFaceup() and c:IsSetCard(0xae) and c:IsDestructable() +end +function c450000349.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c450000349.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c450000349.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c450000349.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c450000349.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Draw(tp,1,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c511009399.lua b/script/c511009399.lua new file mode 100644 index 00000000..791ceacf --- /dev/null +++ b/script/c511009399.lua @@ -0,0 +1,53 @@ +--OO rush +function c511009399.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetCondition(c511009399.condition) + e1:SetTarget(c511009399.target) + e1:SetOperation(c511009399.activate) + c:RegisterEffect(e1) + if not c511009399.global_check then + c511009399.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE_STEP_END) + ge1:SetOperation(c511009399.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511009399.checkop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + if at and at:IsRelateToBattle() and not at:GetDefense()==0 then + Duel.GetAttacker():RegisterFlagEffect(511009399,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end +end +function c511009399.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==tp and ph>=0x08 and ph<=0x20 +end +function c511009399.filter(c) + return c:IsFaceup() and c:GetBattledGroupCount()>0 and c:GetFlagEffect(511009399)>0 +end +function c511009399.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511009399.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511009399.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511009399.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c511009399.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c511009402.lua b/script/c511009402.lua new file mode 100644 index 00000000..4429d406 --- /dev/null +++ b/script/c511009402.lua @@ -0,0 +1,71 @@ +-- Performapal Sky Pupil +function c511009402.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c511009402.spcon) + e1:SetOperation(c511009402.spop) + c:RegisterEffect(e1) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511009402.atkcon) + e1:SetOperation(c61692648.atkop) + c:RegisterEffect(e1) +end +function c511009402.spfilter(c) + return c:IsFaceup() and c:IsCode(100912001) and c:IsAbleToHandAsCost() +end +function c511009402.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511009402.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c511009402.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c511009402.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c511009402.cfilter(c) + return c:IsFaceup() and c:IsCode(100912001) +end +function c511009402.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009402.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c61692648.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(math.ceil(c:GetBaseAttack()/2)) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_START) + e2:SetOperation(c511009402.disop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e2) + end +end +function c511009402.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + end +end \ No newline at end of file diff --git a/script/c511009403.lua b/script/c511009403.lua new file mode 100644 index 00000000..f95e8408 --- /dev/null +++ b/script/c511009403.lua @@ -0,0 +1,30 @@ +--Performapal Sky Ring +function c511009403.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c511009403.condition) + e1:SetTarget(c511009403.target) + e1:SetOperation(c511009403.operation) + c:RegisterEffect(e1) +end +function c511009403.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) and c:IsRace(RACE_SPELLCASTER) +end +function c511009403.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(c511009403.filter,tp,LOCATION_MZONE,0,1,nil) then return false end + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_MONSTER) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc>0 +end +function c511009403.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end +function c511009403.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) +end diff --git a/script/c511009404.lua b/script/c511009404.lua new file mode 100644 index 00000000..bfdb950b --- /dev/null +++ b/script/c511009404.lua @@ -0,0 +1,53 @@ +--Performapal Sky Illusion +function c511009404.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009404.condition) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_SPELLCASTER)) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e3) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(c511009404.atlimit) + c:RegisterEffect(e2) + --Self Destruct + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c511009404.des_op) + c:RegisterEffect(e3) +end +function c511009404.filter(c) + return c:IsFaceup() and c:IsCode(100912001) and Duel.IsExistingMatchingCard(c511009404.filter,tp,LOCATION_MZONE,0,1,c) +end +function c511009404.filter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c511009404.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511009404.filter,tp,LOCATION_MZONE,0,1,nil) +end + +function c511009404.atlimit(e,c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and not c:IsCode(100912001) +end + +function c511009404.des_op(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c511009405.lua b/script/c511009405.lua new file mode 100644 index 00000000..43fefe90 --- /dev/null +++ b/script/c511009405.lua @@ -0,0 +1,27 @@ +--Predaplant Cephalotus Snail +function c511009405.initial_effect(c) +--damage reduce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetCondition(c511009405.rdcon) + e1:SetOperation(c511009405.rdop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c511009405.con) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c511009405.rdcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511009405.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end + +function c511009405.con(e,c) + return e:GetHandler():IsAttackPos() +end \ No newline at end of file diff --git a/script/c511009406.lua b/script/c511009406.lua new file mode 100644 index 00000000..67da18ce --- /dev/null +++ b/script/c511009406.lua @@ -0,0 +1,65 @@ +--Predaplant Cordyceps (anime) +function c511009406.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92609670,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c511009406.spcon) + e1:SetCost(c511009406.spcost) + e1:SetTarget(c511009406.sptg) + e1:SetOperation(c511009406.spop) + c:RegisterEffect(e1) +end +function c511009406.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511009406.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) +end +function c511009406.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x10f3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009406.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511009406.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c511009406.filter,tp,LOCATION_GRAVE,0,2,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511009406.filter,tp,LOCATION_GRAVE,0,2,2,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c511009406.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 or (g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + if g:GetCount()>ft then g=g:Select(tp,ft,ft,nil) end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c511009406.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) +end +function c511009406.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsType(TYPE_FUSION) +end diff --git a/script/c511009407.lua b/script/c511009407.lua new file mode 100644 index 00000000..21f8c277 --- /dev/null +++ b/script/c511009407.lua @@ -0,0 +1,27 @@ +--Predaplant Lilyzard +function c511009407.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100001003,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511009407.condition) + e1:SetTarget(c511009407.target) + e1:SetOperation(c511009407.operation) + c:RegisterEffect(e1) +end +function c511009407.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_GRAVE +end +function c511009407.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511009407.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c511009410.lua b/script/c511009410.lua new file mode 100644 index 00000000..b237fe40 --- /dev/null +++ b/script/c511009410.lua @@ -0,0 +1,102 @@ +--Ivy Bind Castle +function c511009410.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,LOCATION_ONFIELD) + c:RegisterEffect(e3) + --disable effect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAIN_SOLVING) + e4:SetRange(LOCATION_SZONE) + e4:SetOperation(c511009410.disop) + c:RegisterEffect(e4) + --damage + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(30757396,0)) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EVENT_PHASE+PHASE_STANDBY) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1) + e5:SetCondition(c511009410.damcon) + e5:SetTarget(c511009410.damtg) + e5:SetOperation(c511009410.damop) + c:RegisterEffect(e5) + + --maintain + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(37195861,0)) + e6:SetCategory(CATEGORY_TOHAND) + e6:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CARD_TARGET) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EVENT_PHASE+PHASE_STANDBY) + e6:SetCountLimit(1) + e6:SetCondition(c511009410.con) + e6:SetTarget(c511009410.tg) + e6:SetOperation(c511009410.op) + c:RegisterEffect(e6) +end + + +function c511009410.disop(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if rp~=tp and (tl==LOCATION_MZONE or tl==LOCATION_SZONE) then + Duel.NegateEffect(ev) + end +end + +function c511009410.damcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511009410.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*800) +end +function c511009410.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE) + Duel.Damage(p,ct*800,REASON_EFFECT) +end +function c511009410.effilter(c) + return c:IsFaceup() and c:IsReleasableByEffect() +end +function c511009410.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511009410.filter(c) + return c:IsSetCard(0x10f3) and c:IsReleasableByEffect() +end +function c511009410.tg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c511009410.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c511009410.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Release(tc,REASON_COST) + else Duel.Destroy(c,REASON_COST) + end +end diff --git a/script/c511009411.lua b/script/c511009411.lua new file mode 100644 index 00000000..e5b1ebce --- /dev/null +++ b/script/c511009411.lua @@ -0,0 +1,79 @@ +--Seed Cannon Salvo +function c511009411.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(78748366,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c511009411.thcost) + e2:SetTarget(c511009411.thtg) + e2:SetOperation(c511009411.thop) + c:RegisterEffect(e2) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(41517968,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_DESTROYED) + e4:SetTarget(c511009411.destg) + e4:SetOperation(c511009411.desop) + c:RegisterEffect(e4) +end +function c511009411.costfilter(c) + return c:IsSetCard(0x10f3) and c:IsLevelBelow(4) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c511009411.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009411.costfilter,tp,LOCATION_DECK,0,1,nil) end + local g=Duel.SelectMatchingCard(tp,c511009411.costfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511009411.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c511009411.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Damage(p,d,REASON_EFFECT)~=0 then + local mg=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=mg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-600) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=mg:GetNext() + end + end +end +------------------------ +function c511009411.filter(c) + return c:IsFaceup() and c:IsSetCard(0x10f3) +end +function c511009411.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingMatchingCard(c511009411.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + local ct=Duel.GetMatchingGroupCount(c511009411.filter,tp,LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009411.desop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c511009412.lua b/script/c511009412.lua new file mode 100644 index 00000000..98520621 --- /dev/null +++ b/script/c511009412.lua @@ -0,0 +1,43 @@ +--Magician's Encore +function c511009412.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511001324,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e1:SetCondition(c511009412.condition) + e2:SetTarget(c511009412.target) + e2:SetOperation(c511009412.operation) + c:RegisterEffect(e2) +end +function c511009412.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,0,nil) + if g:GetCount()~=1 then return false end + local c=g:GetFirst() + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end + +function c511009412.filter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009412.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c511009412.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c511009412.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c511009412.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c511009412.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 + end +end \ No newline at end of file diff --git a/script/c511010005.lua b/script/c511010005.lua new file mode 100644 index 00000000..58e72ecd --- /dev/null +++ b/script/c511010005.lua @@ -0,0 +1,13 @@ +--Number 5: Doom Chimera Dragon (Anime) +function c511010005.initial_effect(c) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010005.indes) + c:RegisterEffect(e6) +end +c511010005.xyz_number=5 +function c511010005.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010007.lua b/script/c511010007.lua new file mode 100644 index 00000000..b5eb9138 --- /dev/null +++ b/script/c511010007.lua @@ -0,0 +1,55 @@ +--Number 7: Lucky Straight (anime) +function c511010007.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,3) + c:EnableReviveLimit() + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(96864105,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511010007.atkcost) + e1:SetOperation(c511010007.atkop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511010007.indes) + c:RegisterEffect(e2) + if not c511010007.global_check then + c511010007.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010007.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010007.xyz_number=7 +function c511010007.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:CheckRemoveOverlayCard(tp,1,REASON_COST) end + c:RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010007.atkop(e,tp,eg,ep,ev,re,r,rp) + local d1=Duel.TossDice(tp,1) + local tc=e:GetHandler():GetBattleTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(d1*700) + e:GetHandler():RegisterEffect(e1) +end +function c511010007.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,82308875) + Duel.CreateToken(1-tp,82308875) +end +function c511010007.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010009.lua b/script/c511010009.lua new file mode 100644 index 00000000..0b457987 --- /dev/null +++ b/script/c511010009.lua @@ -0,0 +1,113 @@ +--No.9 天蓋星ダイソン・スフィア (Anime) +function c511010009.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,9,2) + c:EnableReviveLimit() + --negate attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511010009,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(0,TIMING_BATTLE_PHASE) + e1:SetCondition(c511010009.atkcon) + e1:SetCost(c511010009.atkcost) + e1:SetOperation(c511010009.atkop) + c:RegisterEffect(e1) + --material + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511010009,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c511010009.olcon) + e2:SetTarget(c511010009.oltg) + e2:SetOperation(c511010009.olop) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511010009,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c511010009.dacon) + e3:SetCost(c511010009.dacost) + e3:SetOperation(c511010009.daop) + c:RegisterEffect(e3) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010009.indes) + c:RegisterEffect(e6) + if not c511010009.global_check then + c511010009.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010009.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010009.xyz_number=9 +function c511010009.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==Duel.GetAttackTarget() +end +function c511010009.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(511010009)==0 end + e:GetHandler():RegisterFlagEffect(511010009,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c511010009.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c511010009.olcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayCount()==0 and e:GetHandler():IsType(TYPE_XYZ) +end +function c511010009.oltg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsType(TYPE_MONSTER) end + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,LOCATION_GRAVE,0,2,nil,TYPE_MONSTER) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_GRAVE,0,2,2,nil,TYPE_MONSTER) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,2,0,0) +end +function c511010009.olop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Overlay(c,g) + end + end +end +function c511010009.dafilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c511010009.dacon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 + and Duel.IsExistingMatchingCard(c511010009.dafilter,tp,0,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) +end +function c511010009.dacost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010009.daop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) + and Duel.IsExistingMatchingCard(c511010009.dafilter,tp,0,LOCATION_MZONE,1,nil,c:GetAttack()) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511010009.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,1992816) + Duel.CreateToken(1-tp,1992816) +end +function c511010009.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010010.lua b/script/c511010010.lua new file mode 100644 index 00000000..439700f5 --- /dev/null +++ b/script/c511010010.lua @@ -0,0 +1,59 @@ +--Number 10: Illumiknight (anime) +function c511010010.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW) + e1:SetDescription(aux.Stringid(11411223,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511010010.cost) + e1:SetTarget(c511010010.target) + e1:SetOperation(c511010010.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511010010.indes) + c:RegisterEffect(e2) + if not c511010010.global_check then + c511010010.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010010.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010010.xyz_number=10 +function c511010010.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010010.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511010010.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()==0 then return end + Duel.SendtoGrave(g,REASON_EFFECT) + if g:GetFirst():IsLocation(LOCATION_GRAVE) then + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c511010010.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,11411223) + Duel.CreateToken(1-tp,11411223) +end +function c511010010.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010011.lua b/script/c511010011.lua new file mode 100644 index 00000000..dfc59b1c --- /dev/null +++ b/script/c511010011.lua @@ -0,0 +1,66 @@ +--No.11 ビッグ・アイ (Anime) +function c511010011.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,2) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetDescription(aux.Stringid(511010011,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511010011.cost) + e1:SetTarget(c511010011.target) + e1:SetOperation(c511010011.operation) + c:RegisterEffect(e1) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010011.indes) + c:RegisterEffect(e6) + if not c511010011.global_check then + c511010011.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010011.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010011.xyz_number=11 +function c511010011.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) + and e:GetHandler():GetAttackAnnouncedCount()==0 end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c511010011.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:GetControler()~=tp and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c511010011.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp) + end +end +function c511010011.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,80117527) + Duel.CreateToken(1-tp,80117527) +end +function c511010011.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010012.lua b/script/c511010012.lua new file mode 100644 index 00000000..52d2de23 --- /dev/null +++ b/script/c511010012.lua @@ -0,0 +1,45 @@ +--Number 12: Crimson Shadow Armor Ninja +function c511010012.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,2) + c:EnableReviveLimit() + --destroy replace + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511010012.reptg) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511010012.indes) + c:RegisterEffect(e2) + if not c511010012.global_check then + c511010012.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010012.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010012.xyz_number=12 +function c511010012.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) end + if Duel.SelectYesNo(tp,aux.Stringid(48739166,1)) then + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_EFFECT) + return true + else return false end +end +function c511010012.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,19333131) + Duel.CreateToken(1-tp,19333131) +end +function c511010012.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010020.lua b/script/c511010020.lua new file mode 100644 index 00000000..b078dc58 --- /dev/null +++ b/script/c511010020.lua @@ -0,0 +1,56 @@ +--No.20 蟻岩土ブリリアント +function c511010020.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,3,2) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(58712976,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511010020.cost) + e1:SetOperation(c511010020.operation) + c:RegisterEffect(e1) + --battle indestructable +local e2=Effect.CreateEffect(c) +e2:SetType(EFFECT_TYPE_SINGLE) +e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) +e2:SetValue(c511010020.indes) +c:RegisterEffect(e2) + if not c511010020.global_check then + c511010020.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010020.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010020.xyz_number=20 +function c511010020.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010020.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c511010020.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,47805931) + Duel.CreateToken(1-tp,47805931) +end +function c511010020.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010021.lua b/script/c511010021.lua new file mode 100644 index 00000000..89bf761c --- /dev/null +++ b/script/c511010021.lua @@ -0,0 +1,67 @@ +--No.21 氷結のレディ・ジャスティス (Anime) +function c511010021.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,2) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511010021.atkval) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c511010021.descost) + e2:SetTarget(c511010021.destg) + e2:SetOperation(c511010021.desop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511010021.indes) + c:RegisterEffect(e3) + if not c511010021.global_check then + c511010021.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010021.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010021.xyz_number=21 +function c511010021.atkval(e,c) + return c:GetOverlayCount()*1000 +end +function c511010021.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010021.desfilter(c) + return c:IsDefensePos() +end +function c511010021.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511010021.desfilter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c511010021.desfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511010021.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511010021.desfilter,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c511010021.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,57707471) + Duel.CreateToken(1-tp,57707471) +end +function c511010021.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010025.lua b/script/c511010025.lua new file mode 100644 index 00000000..2e62eec0 --- /dev/null +++ b/script/c511010025.lua @@ -0,0 +1,81 @@ +--No.25 重装光学撮影機フォーカス・フォース (Anime) +function c511010025.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,2) + c:EnableReviveLimit() + --disable + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511010025,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511010025.condition) + e1:SetCost(c511010025.cost) + e1:SetTarget(c511010025.target) + e1:SetOperation(c511010025.operation) + c:RegisterEffect(e1) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511010025.indes) + c:RegisterEffect(e3) + if not c511010025.global_check then + c511010025.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010025.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010025.xyz_number=25 +function c511010025.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if ep==tp or c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c511010025.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010025.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + local g=Duel.SetTargetCard(re:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c511010025.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.NegateActivation(ev)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + end +end + +function c511010025.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,64554883) + Duel.CreateToken(1-tp,64554883) +end +function c511010025.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010030.lua b/script/c511010030.lua new file mode 100644 index 00000000..133bc726 --- /dev/null +++ b/script/c511010030.lua @@ -0,0 +1,96 @@ +--No.30 破滅のアシッド・ゴーレム +function c511010030.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),3,2) + c:EnableReviveLimit() + --remove material + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81330115,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c511010030.rmcon) + e1:SetTarget(c511010030.rmtg) + e1:SetOperation(c511010030.rmop) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetCondition(c511010030.atcon) + c:RegisterEffect(e2) + --material + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511010030,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCondition(c511010030.olcon) + e3:SetTarget(c511010030.oltg) + e3:SetOperation(c511010030.olop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c511010030.indes) + c:RegisterEffect(e4) + if not c511010030.global_check then + c511010030.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010030.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010030.xyz_number=30 +function c511010030.atcon(e) + return e:GetHandler():GetOverlayCount()==0 +end +function c511010030.rmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c511010030.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if e:GetHandler():GetOverlayCount()==0 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,2000) + end +end +function c511010030.rmop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) and Duel.SelectYesNo(tp,aux.Stringid(81330115,1)) then + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_EFFECT) + else + Duel.Damage(tp,2000,REASON_EFFECT) + end +end + +function c511010030.olcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayCount()==0 +end +function c511010030.oltg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) +if chk==0 then return true end + if e:GetHandler():GetOverlayCount()==0 then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,2000) + end +end +function c511010030.olop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + if Duel.Destroy(c,REASON_EFFECT)~=0 then + Duel.Damage(tp,2000,REASON_EFFECT) + end + end +end +function c511010030.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,81330115) + Duel.CreateToken(1-tp,81330115) +end +function c511010030.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010032.lua b/script/c511010032.lua new file mode 100644 index 00000000..9d7e6586 --- /dev/null +++ b/script/c511010032.lua @@ -0,0 +1,76 @@ +--No.32 海咬龍シャーク・ドレイク (Anime) +function c511010032.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3) + c:EnableReviveLimit() + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511010032,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCountLimit(1) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511010032.atcon) + e1:SetCost(c511010032.atcost) + e1:SetTarget(c511010032.attg) + e1:SetOperation(c511010032.atop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511010032.indes) + c:RegisterEffect(e2) + if not c511010032.global_check then + c511010032.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010032.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010032.xyz_number=32 +function c511010032.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c==Duel.GetAttacker() and c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) + and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c511010032.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010032.attg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.GetAttackTarget():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK,1-tp) end + Duel.GetAttackTarget():CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,Duel.GetAttackTarget(),1,0,0) +end +function c511010032.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=Duel.GetAttackTarget() + if not bc:IsRelateToEffect(e) then return end + if Duel.SpecialSummonStep(bc,0,tp,1-tp,false,false,POS_FACEUP_ATTACK) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + Duel.SpecialSummonComplete() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.BreakEffect() + Duel.ChainAttack(bc) + end + end +end +function c511010032.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,65676461) + Duel.CreateToken(1-tp,65676461) +end +function c511010032.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511010035.lua b/script/c511010035.lua new file mode 100644 index 00000000..5188e37c --- /dev/null +++ b/script/c511010035.lua @@ -0,0 +1,53 @@ +--Number 35: Ravenous Tarantula (Anime) +function c511010035.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,10,2) + c:EnableReviveLimit() + --half atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511010035.atktg) + e1:SetValue(c511010035.val) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) + --battle indestructable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e5:SetValue(c511010035.indes) + c:RegisterEffect(e5) + if not c511010035.global_check then + c511010035.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010035.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010035.xyz_number=35 +function c511010035.atktg(e,c) + return c:IsRace(RACE_INSECT) +end +function c511010035.val(e,c) + local tp=e:GetHandler():GetControler() + if Duel.GetLP(tp)<=Duel.GetLP(1-tp) then + return Duel.GetLP(1-tp)-Duel.GetLP(tp) + else + return Duel.GetLP(tp)-Duel.GetLP(1-tp) + end +end +function c511010035.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,90162951) + Duel.CreateToken(1-tp,90162951) +end +function c511010035.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010039.lua b/script/c511010039.lua new file mode 100644 index 00000000..5308bdc7 --- /dev/null +++ b/script/c511010039.lua @@ -0,0 +1,81 @@ +--No.39 希望皇ホープ・ルーツ (Anime) +function c511010039.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,1,2) + c:EnableReviveLimit() + --disable attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511010039,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511010039.atkcon) + e1:SetCost(c511010039.atkcost) + e1:SetTarget(c511010039.atktg) + e1:SetOperation(c511010039.atkop) + c:RegisterEffect(e1) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010039.indes) + c:RegisterEffect(e6) + if not c511010039.global_check then + c511010039.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010039.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010039.xyz_number=39 +function c511010039.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsType(TYPE_XYZ) and bc:IsFaceup() and bc:IsControler(1-tp) +end +function c511010039.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if chk==0 then return c:CheckRemoveOverlayCard(tp,1,REASON_COST) end + local g=c:GetOverlayGroup() + if g:GetCount()>0 then + local mg=g:Select(tp,1,1,nil) + Duel.SendtoGrave(mg,REASON_COST) + Duel.RaiseSingleEvent(c,EVENT_DETACH_MATERIAL,e,0,0,0,0) + Duel.Overlay(bc,mg) + end +end +function c511010039.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(e:GetHandler():GetBattleTarget()) +end +function c511010039.ofilter(c) + return c:GetOverlayCount()~=0 +end +function c511010039.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if Duel.NegateAttack() and c:IsRelateToEffect(e) and c:IsFaceup() then + local to=Duel.SelectMatchingCard(tp,c511010039.ofilter,tp,0,LOCATION_MZONE,1,1,nil):GetFirst() + local toc=1 + local toc=to:GetOverlayCount() + local atk=math.ceil(((tc:GetRank()-c:GetRank())*100)*toc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c511010039.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,84124261) + Duel.CreateToken(1-tp,84124261) +end +function c511010039.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010047.lua b/script/c511010047.lua new file mode 100644 index 00000000..184c3a56 --- /dev/null +++ b/script/c511010047.lua @@ -0,0 +1,102 @@ +--No.47 ナイトメア・シャーク +function c511010047.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,3,2) + c:EnableReviveLimit() + --charge + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(31320433,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c511010047.mattg) + e1:SetOperation(c511010047.matop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(31320433,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c511010047.dacon) + e2:SetCost(c511010047.dacost) + e2:SetTarget(c511010047.datg) + e2:SetOperation(c511010047.daop) + c:RegisterEffect(e2) + --battle indestructable +local e2=Effect.CreateEffect(c) +e2:SetType(EFFECT_TYPE_SINGLE) +e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) +e2:SetValue(c511010047.indes) +c:RegisterEffect(e2) + if not c511010047.global_check then + c511010047.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010047.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010047.xyz_number=47 +function c511010047.matfilter(c) + return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and not c:IsType(TYPE_TOKEN) and c:GetLevel()==3 and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511010047.mattg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511010047.matfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) end +end +function c511010047.matop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=Duel.SelectMatchingCard(tp,c511010047.matfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>=0 then + Duel.Overlay(e:GetHandler(),g) + end +end +function c511010047.dacon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c511010047.dacost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010047.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c511010047.datg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511010047.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511010047.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c511010047.filter,tp,LOCATION_MZONE,0,1,1,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c511010047.ftarget) + e1:SetLabel(g:GetFirst():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511010047.daop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c511010047.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c511010047.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,31320433) + Duel.CreateToken(1-tp,31320433) +end +function c511010047.indes(e,c) +return not c:IsSetCard(0x48) +end diff --git a/script/c511010053.lua b/script/c511010053.lua new file mode 100644 index 00000000..5aecd3f6 --- /dev/null +++ b/script/c511010053.lua @@ -0,0 +1,235 @@ +--No.53 偽骸神 Heart-eartH +--fixed by MLD +function c511010053.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --Immune + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511010053.efilter) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511010053.indes) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(876330,0)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c511010053.eqtg) + e3:SetOperation(c511010053.eqop) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetTarget(c511010053.desreptg) + e4:SetOperation(c511010053.desrepop) + c:RegisterEffect(e4) + --damage + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(511010053,2)) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(511010053) + e5:SetTarget(c511010053.damtg) + e5:SetOperation(c511010053.damop) + c:RegisterEffect(e5) + --recover + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(3701074,0)) + e6:SetCategory(CATEGORY_RECOVER) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e6:SetCode(511010054) + e6:SetCost(c511010053.bdcost) + e6:SetTarget(c511010053.rectg) + e6:SetOperation(c511010053.recop) + c:RegisterEffect(e6) + --battle damage + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(93730230,0)) + e7:SetCategory(CATEGORY_DAMAGE) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e7:SetCode(EVENT_BATTLE_DAMAGE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e7:SetRange(LOCATION_MZONE) + e7:SetCountLimit(1) + e7:SetCondition(c511010053.bdcon) + e7:SetCost(c511010053.bdcost) + e7:SetTarget(c511010053.bdtg) + e7:SetOperation(c511010053.bdop) + c:RegisterEffect(e7) + --93 Summon + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(64414267,0)) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_BE_BATTLE_TARGET) + e8:SetCondition(c511010053.xyzcon) + e8:SetTarget(c511010053.xyztg) + e8:SetOperation(c511010053.xyzop) + c:RegisterEffect(e8) + if not c511010053.global_check then + c511010053.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010053.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010053.xyz_number=53 +function c511010053.efilter(e,re) + return e:GetHandlerPlayer()~=re:GetHandlerPlayer() +end +function c511010053.indes(e,c) + return not c:IsSetCard(0x48) +end +function c511010053.eqfilter(c) + return c:IsType(TYPE_MONSTER) and not c:IsForbidden() +end +function c511010053.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c511010053.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511010053.eqfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511010053.eqfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511010053.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + local a=Duel.GetAttacker() + if tc and tc:IsRelateToEffect(e) and c:IsFaceup() and c:IsRelateToEffect(e) and a and a:IsRelateToBattle() then + if not Duel.Equip(tp,tc,c) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511010053.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(a:GetAttack()) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(511010053,RESET_EVENT+0x1fe0000,0,0) + end +end +function c511010053.eqlimit(e,c) + return e:GetOwner()==c +end +function c511010053.repfilter(c,ec) + return c:GetEquipTarget()==ec and c:IsAbleToGrave() and c:GetFlagEffect(511010053)>0 +end +function c511010053.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511010053.repfilter,tp,LOCATION_SZONE,LOCATION_SZONE,nil,c) + if chk==0 then return c:IsReason(REASON_BATTLE) and g:GetCount()>0 end + if Duel.SelectYesNo(tp,aux.Stringid(63465535,1)) then + local atk=c:GetAttack() + e:SetLabel(atk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REPLACE) + return true + else return false end +end +function c511010053.desrepop(e,tp,eg,ep,ev,re,r,rp) + local atk1=e:GetLabel() + local atk2=e:GetHandler():GetAttack() + local dif=atk1-atk2 + Duel.RaiseSingleEvent(e:GetHandler(),511010053,e,r,rp,ep,dif) +end +function c511010053.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev/2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev/2) +end +function c511010053.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + Duel.RaiseSingleEvent(e:GetHandler(),511010054,e,r,rp,ep,d) +end +function c511010053.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ev) +end +function c511010053.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c511010053.bdcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c511010053.bdcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:CheckRemoveOverlayCard(tp,1,REASON_COST) end + c:RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010053.bdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ev/2) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ev/2) +end +function c511010053.bdop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c511010053.xyzcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayCount()==0 +end +function c511010053.xyzfilter(c,e,tp) + return e:GetHandler():IsCanBeXyzMaterial(c) and c:IsCode(97403510) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511010053.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511010053.xyzfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511010053.xyzop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsControler(1-tp) or c:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511010053.xyzfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local sc=g:GetFirst() + if sc then + local mg=c:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(c)) + Duel.Overlay(sc,Group.FromCards(c)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end +function c511010053.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,23998625) + Duel.CreateToken(1-tp,23998625) +end diff --git a/script/c511010064.lua b/script/c511010064.lua new file mode 100644 index 00000000..6432f0ee --- /dev/null +++ b/script/c511010064.lua @@ -0,0 +1,80 @@ +--No.64 古狸三太夫 +function c511010064.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_BEAST),2,2) + c:EnableReviveLimit() + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(39972129,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511010064.spcost) + e1:SetTarget(c511010064.sptg) + e1:SetOperation(c511010064.spop) + c:RegisterEffect(e1) + --indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetCondition(c511010064.indcon) + e2:SetValue(1) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511010064.indes) + c:RegisterEffect(e3) + if not c511010064.global_check then + c511010064.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010064.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010064.xyz_number=64 +function c511010064.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010064.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,39972130,0,0x4011,-2,0,1,RACE_BEAST,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c511010064.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,39972130,0,0x4011,-2,0,1,RACE_BEAST,ATTRIBUTE_EARTH) then return end + local token=Duel.CreateToken(tp,39972130) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local g,atk=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil):GetMaxGroup(Card.GetAttack) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + Duel.SpecialSummonComplete() +end +function c511010064.ifilter(c) + return c:IsFaceup() and c:Code(39972130) +end +function c511010064.indcon(e) + return Duel.IsExistingMatchingCard(c511010064.ifilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler()) +end +function c511010064.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,39972129) + Duel.CreateToken(1-tp,39972129) +end +function c511010064.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010065.lua b/script/c511010065.lua new file mode 100644 index 00000000..03c9e8d1 --- /dev/null +++ b/script/c511010065.lua @@ -0,0 +1,61 @@ +--No.65 裁断魔人ジャッジ・バスター +function c511010065.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,2,2) + c:EnableReviveLimit() + --negate activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511010065,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c511010065.condition) + e1:SetCost(c511010065.cost) + e1:SetTarget(c511010065.target) + e1:SetOperation(c511010065.operation) + c:RegisterEffect(e1) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511010065.indes) + c:RegisterEffect(e3) + if not c511010065.global_check then + c511010065.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010065.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010065.xyz_number=65 +function c511010065.condition(e,tp,eg,ep,ev,re,r,rp,chk) + local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + return rp~=tp and not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and loc==LOCATION_MZONE + and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) +end +function c511010065.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010065.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c511010065.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + Duel.Damage(1-tp,500,REASON_EFFECT) +end +function c511010065.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,3790062) + Duel.CreateToken(1-tp,3790062) +end +function c511010065.indes(e,c) +return not c:IsSetCard(0x48) +end diff --git a/script/c511010069.lua b/script/c511010069.lua new file mode 100644 index 00000000..d24b95a8 --- /dev/null +++ b/script/c511010069.lua @@ -0,0 +1,105 @@ +--No.69 紋章神コート・オブ・アームズ (Anime) +function c511010069.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3) + c:EnableReviveLimit() + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetTarget(c511010069.distg) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c511010069.operation) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(1) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511010069,0)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetCondition(c511010069.descon) + e4:SetCost(c511010069.descost) + e4:SetTarget(c511010069.destg) + e4:SetOperation(c511010069.desop) + c:RegisterEffect(e4) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010069.indes) + c:RegisterEffect(e6) + if not c511010069.global_check then + c511010069.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010069.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010069.xyz_number=69 +function c511010069.distg(e,c) + return c~=e:GetHandler() +end +function c511010069.copfilter(c) + return c:IsFaceup() and c:IsStatus(STATUS_DISABLED) +end +function c511010069.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local wg=Duel.GetMatchingGroup(c511010069.copfilter,tp,LOCATION_MZONE,LOCATION_MZONE,c) + local wbc=wg:GetFirst() + while wbc do + local code=wbc:GetOriginalCode() + if c:IsFaceup() and c:GetFlagEffect(code)==0 then + c:CopyEffect(code,RESET_EVENT+0x1ff0000+EVENT_CHAINING,1) + c:RegisterFlagEffect(code,RESET_EVENT+0x1ff0000+EVENT_CHAINING,0,1) + end + wbc=wg:GetNext() + end +end +function c511010069.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c511010069.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010069.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511010069.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c511010069.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,2407234) + Duel.CreateToken(1-tp,2407234) +end +function c511010069.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010070.lua b/script/c511010070.lua new file mode 100644 index 00000000..cdeea404 --- /dev/null +++ b/script/c511010070.lua @@ -0,0 +1,91 @@ +--No.70 デッドリー・シン +--Number 70: Deadly Sin (Anime) +function c511010070.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511010070,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511010070.rmcost) + e1:SetTarget(c511010070.rmtg) + e1:SetOperation(c511010070.rmop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511010070,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511010070.atkcon) + e2:SetOperation(c511010070.atkop) + c:RegisterEffect(e2) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010070.indes) + c:RegisterEffect(e6) +end +c511010070.xyz_number=70 +function c511010070.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010070.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c511010070.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + tc:RegisterFlagEffect(511010070,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c511010070.retcon) + e1:SetOperation(c511010070.retop) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c511010070.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and e:GetLabelObject():GetFlagEffect(511010070)~=0 +end +function c511010070.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end +function c511010070.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler() +end +function c511010070.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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_RANK) + e2:SetValue(3) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end +end +function c511010070.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010083.lua b/script/c511010083.lua new file mode 100644 index 00000000..67ae2389 --- /dev/null +++ b/script/c511010083.lua @@ -0,0 +1,70 @@ +--No.83 ギャラクシー・クィーン +function c511010083.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,1,3) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48928529,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511010083.cost) + e1:SetOperation(c511010083.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511010083.indes) + c:RegisterEffect(e2) + if not c511010083.global_check then + c511010083.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010083.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010083.xyz_number=83 +function c511010083.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010083.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + e2:SetValue(1) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_PIERCE) + e3:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + tc:RegisterEffect(e3) + tc=g:GetNext() + end +end +function c511010083.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,48928529) + Duel.CreateToken(1-tp,48928529) +end +function c511010083.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010096.lua b/script/c511010096.lua new file mode 100644 index 00000000..8ec0e591 --- /dev/null +++ b/script/c511010096.lua @@ -0,0 +1,71 @@ +--No.96 ブラック・ミスト (Anime) +function c511010096.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),2,3) + c:EnableReviveLimit() + --atk u/d + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511010096,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511010096.atkcost) + e1:SetTarget(c511010096.atktg) + e1:SetOperation(c511010096.atkop) + c:RegisterEffect(e1) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010096.indes) + c:RegisterEffect(e6) + if not c511010096.global_check then + c511010096.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010096.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010096.xyz_number=96 +function c511010096.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010096.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local at=Duel.GetAttackTarget() + if chk==0 then return ((at and at:IsFaceup() and Duel.GetAttacker()==e:GetHandler()) or at==e:GetHandler()) + and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.SetTargetCard(e:GetHandler():GetBattleTarget()) +end +function c511010096.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local atk=tc:GetAttack()/2 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511010096.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,55727845) + Duel.CreateToken(1-tp,55727845) +end +function c511010096.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010103.lua b/script/c511010103.lua new file mode 100644 index 00000000..1ba9d26c --- /dev/null +++ b/script/c511010103.lua @@ -0,0 +1,105 @@ +--Number 103: Ragnazero (Anime) +function c511010103.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(94380860,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(511010103) + e1:SetCountLimit(1) + e1:SetCost(c511010103.cost) + e1:SetTarget(c511010103.destg) + e1:SetOperation(c511010103.desop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511010103.indes) + c:RegisterEffect(e2) +if not c511010103.global_check then + c511010103.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010103.numchk) + Duel.RegisterEffect(ge2,0) + --register + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge3:SetOperation(c511010103.atkregoperation) + Duel.RegisterEffect(ge3,0) + end +end +c511010103.xyz_number=103 +--atk change check +function c511010103.atkregoperation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511010103)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c511010103.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511010103,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c511010103.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + if e:GetLabel()~=c:GetAttack() then + Duel.RaiseEvent(c,511010103,re,REASON_EFFECT,rp,tp,1) + end + e:SetLabel(c:GetAttack()) +end +function c511010103.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010103.desfilter(c,e,tp) + return c:GetAttack()PHASE_MAIN1 and ph0) and (cxm and cxm>0) then + return c:IsFaceup() and (c:GetAttackAnnouncedCount()==0 or c:GetAttackAnnouncedCount()~=c:GetBattledGroupCount()+cfn) and Duel.GetTurnPlayer()==c:GetControler() and (c:GetEffectCount(EFFECT_CANNOT_ATTACK)==0 and c:GetEffectCount(EFFECT_CANNOT_ATTACK_ANNOUNCE)==0) and (c:IsAttackPos() or c:GetEffectCount(EFFECT_DEFENCE_ATTACK)==1) and c:GetAttackAnnouncedCount()<=math.ceil(cxa+cxm) + elseif (cfn and cfn~=0) and (cxa and cxa>0) and not cxm then + return c:IsFaceup() and (c:GetAttackAnnouncedCount()==0 or c:GetAttackAnnouncedCount()~=c:GetBattledGroupCount()+cfn) and Duel.GetTurnPlayer()==c:GetControler() and (c:GetEffectCount(EFFECT_CANNOT_ATTACK)==0 and c:GetEffectCount(EFFECT_CANNOT_ATTACK_ANNOUNCE)==0) and (c:IsAttackPos() or c:GetEffectCount(EFFECT_DEFENCE_ATTACK)==1) and (c:GetEffectCount(EFFECT_EXTRA_ATTACK_MONSTER)==0 and c:GetAttackAnnouncedCount()<=cxa) + elseif (cfn and cfn~=0) and (cxm and cxm>0) and not cxa then + return c:IsFaceup() and (c:GetAttackAnnouncedCount()==0 or c:GetAttackAnnouncedCount()~=c:GetBattledGroupCount()+cfn) and Duel.GetTurnPlayer()==c:GetControler() and (c:GetEffectCount(EFFECT_CANNOT_ATTACK)==0 and c:GetEffectCount(EFFECT_CANNOT_ATTACK_ANNOUNCE)==0) and (c:IsAttackPos() or c:GetEffectCount(EFFECT_DEFENCE_ATTACK)==1) and (c:GetEffectCount(EFFECT_EXTRA_ATTACK)==0 and c:GetAttackAnnouncedCount()<=cxm) + elseif (cfn and cfn~=0) and (not cxa and not cxm) then + return c:IsFaceup() and (c:GetAttackAnnouncedCount()==0 or c:GetAttackAnnouncedCount()~=c:GetBattledGroupCount()+cfn) and Duel.GetTurnPlayer()==c:GetControler() and (c:GetEffectCount(EFFECT_CANNOT_ATTACK)==0 and c:GetEffectCount(EFFECT_CANNOT_ATTACK_ANNOUNCE)==0) and (c:IsAttackPos() or c:GetEffectCount(EFFECT_DEFENCE_ATTACK)==1) and (c:GetEffectCount(EFFECT_EXTRA_ATTACK)==0 and c:GetEffectCount(EFFECT_EXTRA_ATTACK_MONSTER)==0) + elseif (cxa and cxa>0) and (cxm and cxm>0) and not cfn then + return c:IsFaceup() and (c:GetAttackAnnouncedCount()==0 or c:GetAttackAnnouncedCount()~=c:GetBattledGroupCount()) and Duel.GetTurnPlayer()==c:GetControler() and (c:GetEffectCount(EFFECT_CANNOT_ATTACK)==0 and c:GetEffectCount(EFFECT_CANNOT_ATTACK_ANNOUNCE)==0) and (c:IsAttackPos() or c:GetEffectCount(EFFECT_DEFENCE_ATTACK)==1) and c:GetAttackAnnouncedCount()<=math.ceil(cxa+cxm) + elseif (cxa and cxa>0) and (not cfn and not cxm) then + return c:IsFaceup() and (c:GetAttackAnnouncedCount()==0 or c:GetAttackAnnouncedCount()~=c:GetBattledGroupCount()) and Duel.GetTurnPlayer()==c:GetControler() and (c:GetEffectCount(EFFECT_CANNOT_ATTACK)==0 and c:GetEffectCount(EFFECT_CANNOT_ATTACK_ANNOUNCE)==0) and (c:IsAttackPos() or c:GetEffectCount(EFFECT_DEFENCE_ATTACK)==1) and (c:GetEffectCount(EFFECT_EXTRA_ATTACK_MONSTER)==0 and c:GetAttackAnnouncedCount()<=cxa) + elseif (cxm and cxm>0) and (not cfn and not cxa) then + return c:IsFaceup() and (c:GetAttackAnnouncedCount()==0 or c:GetAttackAnnouncedCount()~=c:GetBattledGroupCount()) and Duel.GetTurnPlayer()==c:GetControler() and (c:GetEffectCount(EFFECT_CANNOT_ATTACK)==0 and c:GetEffectCount(EFFECT_CANNOT_ATTACK_ANNOUNCE)==0) and (c:IsAttackPos() or c:GetEffectCount(EFFECT_DEFENCE_ATTACK)==1) and (c:GetEffectCount(EFFECT_EXTRA_ATTACK)==0 and c:GetAttackAnnouncedCount()<=cxm) + else + return c:IsFaceup() and (c:GetAttackAnnouncedCount()==0 or c:GetAttackAnnouncedCount()~=c:GetBattledGroupCount()) and Duel.GetTurnPlayer()==c:GetControler() and (c:GetEffectCount(EFFECT_CANNOT_ATTACK)==0 and c:GetEffectCount(EFFECT_CANNOT_ATTACK_ANNOUNCE)==0) and (c:IsAttackPos() or c:GetEffectCount(EFFECT_DEFENCE_ATTACK)==1) and (c:GetEffectCount(EFFECT_EXTRA_ATTACK)==0 and c:GetEffectCount(EFFECT_EXTRA_ATTACK_MONSTER)==0) + end +end +function c511010107.negcon(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511010107.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()~=0 then + return Duel.GetCurrentPhase()==PHASE_BATTLE + else + return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) + end +end +function c511010107.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010107.filter2(c) + return c:IsFaceup() and (c:GetAttack()~=c:GetBaseAttack() or c:GetDefense()~=c:GetBaseDefense()) +end +function c511010107.filter3(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c511010107.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511010107.filter3,tp,LOCATION_MZONE,LOCATION_MZONE,c) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + g=Duel.GetMatchingGroup(c511010107.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,c) + tc=g:GetFirst() + while tc do + if tc:GetAttack()~=tc:GetBaseAttack() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + if tc:GetDefense()~=tc:GetBaseDefense() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetValue(tc:GetBaseDefense()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end + if c:IsFaceup() and c:IsRelateToEffect(e) then + local ct=e:GetLabelObject():GetLabel() + local atk=math.ceil(ct*1000) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + if Duel.GetTurnPlayer()==tp then + local val=math.max(c:GetEffectCount(EFFECT_EXTRA_ATTACK)+1,c:GetAttackAnnouncedCount()) + if c:GetEffectCount(EFFECT_EXTRA_ATTACK_MONSTER)>0 then + local val=math.max(c:GetEffectCount(EFFECT_EXTRA_ATTACK)+c:GetEffectCount(EFFECT_EXTRA_ATTACK_MONSTER)+1,c:GetAttackAnnouncedCount()) + end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(val) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e2) + end + end +end +function c511010107.regcon(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) +end + +function c511010107.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=e:GetLabelObject():GetLabel() + e:GetLabelObject():SetLabel(ct+1) +end +function c511010107.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,88177324) + Duel.CreateToken(1-tp,88177324) +end +function c511010107.indes(e,c) +return not c:IsSetCard(0x48) +end +function c511010107.reset(e,tp,eg,ep,ev,re,r,rp,chk) + e:GetLabelObject():SetLabel(0) +end diff --git a/script/c511010132.lua b/script/c511010132.lua new file mode 100644 index 00000000..d9b546da --- /dev/null +++ b/script/c511010132.lua @@ -0,0 +1,110 @@ +--CNo.32 海咬龍シャーク・ドレイク・バイス (Anime) +function c511010132.initial_effect(c) + --xyz summon + c:EnableReviveLimit() + aux.AddXyzProcedure(c,nil,4,4,c511010132.ovfilter,aux.Stringid(511010132,0)) + --atk/def + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511010132,1)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511010132.cost) + e1:SetTarget(c511010132.target) + e1:SetOperation(c511010132.operation) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511010132.condition) + c:RegisterEffect(e2) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010132.indes) + c:RegisterEffect(e6) + if not c511010132.global_check then + c511010132.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010132.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010132.xyz_number=32 +function c511010132.ovfilter(c) + return c:IsFaceup() and c:IsCode(65676461) +end +c511010132.collection={ + [13429800]=true;[34290067]=true;[10532969]=true;[71923655]=true;[32393580]=true; + [810000016]=true;[20358953]=true;[37798171]=true;[70101178]=true;[23536866]=true; + [7500772]=true;[511001410]=true;[69155991]=true;[37792478]=true;[17201174]=true; + [44223284]=true;[70655556]=true;[63193879]=true;[25484449]=true;[810000026]=true; + [17643265]=true;[64319467]=true;[810000030]=true;[810000008]=true;[20838380]=true; + [87047161]=true;[80727036]=true;[28593363]=true;[50449881]=true;[49221191]=true; + [65676461]=true;[440556]=true;[511001273]=true;[31320433]=true;[5014629]=true; + [14306092]=true;[84224627]=true;[511001163]=true;[511001169]=true;[511001858]=true; +} +function c511010132.rfilter(c) + return c:IsType(TYPE_MONSTER) and (c:IsSetCard(0x2D56) or c:IsSetCard(0x321) or c511010132.collection[c:GetCode()]) and c:IsAbleToRemoveAsCost() +end +function c511010132.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) + and (Duel.IsExistingMatchingCard(c511010132.rfilter,tp,LOCATION_GRAVE,0,1,nil) or e:GetHandler():GetOverlayGroup():IsExists(c511010132.rfilter,1,nil)) end + if Duel.IsExistingMatchingCard(c511010132.rfilter,tp,LOCATION_GRAVE,0,1,nil) then + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) + else + local og=e:GetHandler():GetOverlayGroup() + if og:GetCount()>0 then + local mg=og:FilterSelect(tp,c511010132.rfilter,1,1,nil) + Duel.SendtoGrave(mg,REASON_COST) + Duel.RaiseSingleEvent(e:GetHandler(),EVENT_DETACH_MATERIAL,e,0,0,0,0) + end + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c511010132.rfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabelObject(g:GetFirst()) +end +function c511010132.filter(c) + return c:IsFaceup() and (c:GetAttack()>0 or c:GetDefense()>0) +end +function c511010132.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c511010132.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511010132.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511010132.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c511010132.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local tr=e:GetLabelObject() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack()-tr:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c511010132.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)>=1000 +end +function c511010132.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,84124261) + Duel.CreateToken(1-tp,84124261) +end +function c511010132.indes(e,c) +return not c:IsSetCard(0x48) +end diff --git a/script/c511010139.lua b/script/c511010139.lua new file mode 100644 index 00000000..a54ff377 --- /dev/null +++ b/script/c511010139.lua @@ -0,0 +1,80 @@ +--CNo.39 希望皇ホープレイ (Anime) +function c511010139.initial_effect(c) + --xyz summon + c:EnableReviveLimit() + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),4,3,c511010139.ovfilter,aux.Stringid(511010139,1)) + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(511010139,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511010139.cost) + e1:SetOperation(c511010139.operation) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511010139.condition) + c:RegisterEffect(e2) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010139.indes) + c:RegisterEffect(e6) + if not c511010139.global_check then + c511010139.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010139.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010139.xyz_number=39 +function c511010139.ovfilter(c) + return c:IsFaceup() and c:IsCode(84013237) +end +function c511010139.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010139.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-1000) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + g:GetFirst():RegisterEffect(e2) + end + end +end +function c511010139.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)>=1000 +end +function c511010139.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,84124261) + Duel.CreateToken(1-tp,84124261) +end +function c511010139.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010165.lua b/script/c511010165.lua new file mode 100644 index 00000000..b28707cf --- /dev/null +++ b/script/c511010165.lua @@ -0,0 +1,102 @@ +--CNo.65 裁断魔王ジャッジ・デビル +function c511010165.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),3,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511010165.rankupregcon) + e1:SetOperation(c511010165.rankupregop) + c:RegisterEffect(e1) + --addown + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511010165,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c511010165.cost) + e2:SetTarget(c511010165.target) + e2:SetOperation(c511010165.operation) + c:RegisterEffect(e2) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010165.indes) + c:RegisterEffect(e6) + if not c511010165.global_check then + c511010165.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010165.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010165.xyz_number=65 +function c511010165.rumfilter(c) + return c:IsCode(3790062) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511010165.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511010165.rumfilter,1,nil) +end +function c511010165.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --act limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511010165.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010165.filter(c) + return c:IsFaceup() +end +function c511010165.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c511010165.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c511010165.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511010165.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c511010165.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local choice=Duel.SelectOption(tp,aux.Stringid(511010165,1),aux.Stringid(511010165,0)) + + if choice>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(-1000) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + else + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end +end +function c511010165.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,49195710) + Duel.CreateToken(1-tp,49195710) +end +function c511010165.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010173.lua b/script/c511010173.lua new file mode 100644 index 00000000..f512ccb0 --- /dev/null +++ b/script/c511010173.lua @@ -0,0 +1,66 @@ +--CNo.73 激瀧瀑神アビス・スープラ +function c511010173.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,3) + c:EnableReviveLimit() + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511010173,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c511010173.atkcon) + e1:SetCost(c511010173.atkcost) + e1:SetOperation(c511010173.atkop) + c:RegisterEffect(e1) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010173.indes) + c:RegisterEffect(e6) + if not c511010173.global_check then + c511010173.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010173.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010173.xyz_number=73 +function c511010173.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsControler(1-tp) +end +function c511010173.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:CheckRemoveOverlayCard(tp,1,REASON_COST) and c:GetFlagEffect(511010173)==0 end + c:RemoveOverlayCard(tp,1,1,REASON_COST) + c:RegisterFlagEffect(511010173,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c511010173.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if c:IsRelateToBattle() and c:IsFaceup() and bc:IsRelateToBattle() and bc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(bc:GetAttack()) + c:RegisterEffect(e1) + end +end +function c511010173.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,96864105) + Duel.CreateToken(1-tp,96864105) +end +function c511010173.indes(e,c) +return not c:IsSetCard(0x48) +end + + diff --git a/script/c511010192.lua b/script/c511010192.lua new file mode 100644 index 00000000..5e6b7fc4 --- /dev/null +++ b/script/c511010192.lua @@ -0,0 +1,147 @@ +--CNo.92 偽骸虚龍 Heart-eartH Chaos Dragon (Anime) +function c511010192.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,10,4) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511010192.rankupregcon) + e1:SetOperation(c511010192.rankupregop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetLabel(0) + c:RegisterEffect(e2) + --recover + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511010192,0)) + e3:SetCategory(CATEGORY_RECOVER) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetRange(LOCATION_MZONE) + e3:SetLabelObject(e2) + e3:SetCountLimit(1) + e3:SetTarget(c511010192.rectg) + e3:SetOperation(c511010192.recop) + c:RegisterEffect(e3) + --reset + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ADJUST) + e5:SetCountLimit(1) + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c511010192.reset) + e5:SetLabelObject(e2) + c:RegisterEffect(e5) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010192.indes) + c:RegisterEffect(e6) + if not c511010192.global_check then + c511010192.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010192.numchk) + Duel.RegisterEffect(ge2,0) + --check + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge3:SetCode(EVENT_DAMAGE) + ge3:SetCondition(c511010192.checkcon) + ge3:SetOperation(c511010192.checkop) + ge3:SetLabelObject(e2) + Duel.RegisterEffect(ge3,0) + end +end +c511010192.xyz_number=92 +function c511010192.rumfilter(c) + return c:IsCode(97403510) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511010192.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511010192.rumfilter,1,nil) +end +function c511010192.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --negate + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(511010192,1)) + e4:SetCategory(CATEGORY_DISABLE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCost(c511010192.discost) + e4:SetTarget(c511010192.distg) + e4:SetOperation(c511010192.disop) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) +end +function c511010192.checkcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst():IsControler(tp) +end +function c511010192.checkop(e,tp,eg,ep,ev,re,r,rp) + local val=e:GetLabelObject():GetLabel()+ev + e:GetLabelObject():SetLabel(val) +end +function c511010192.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,e:GetLabelObject():GetLabel()) +end +function c511010192.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Recover(p,e:GetLabelObject():GetLabel(),REASON_EFFECT) +end +function c511010192.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010192.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,0,LOCATION_ONFIELD,1,nil) end +end +function c511010192.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,0,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end +end +function c511010192.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,47017574) + Duel.CreateToken(1-tp,47017574) +end +function c511010192.indes(e,c) +return not c:IsSetCard(0x48) +end +function c511010192.reset(e,tp,eg,ep,ev,re,r,rp,chk) + e:GetLabelObject():SetLabel(0) +end \ No newline at end of file diff --git a/script/c511010196.lua b/script/c511010196.lua new file mode 100644 index 00000000..07332ba0 --- /dev/null +++ b/script/c511010196.lua @@ -0,0 +1,127 @@ +--CNo.96 ブラック・ストーム (Anime) +function c511010196.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),3,4) + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511010196.rankupregcon) + e1:SetOperation(c511010196.rankupregop) + c:RegisterEffect(e1) + --Share Battle Damage If Destroyed By Battle + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c511010196.damcon) + e2:SetOperation(c511010196.damop) + c:RegisterEffect(e2) + --battle indestructable + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e6:SetValue(c511010196.indes) + c:RegisterEffect(e6) + if not c511010196.global_check then + c511010196.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010196.numchk) + Duel.RegisterEffect(ge2,0) + end +end + +c511010196.xyz_number=96 +function c511010196.rumfilter(c) + return c:IsCode(55727845) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511010196.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511010196.rumfilter,1,nil) +end +function c511010196.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511010196,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c511010196.atkcon) + e3:SetCost(c511010196.atkcost) + e3:SetTarget(c511010196.atktg) + e3:SetOperation(c511010196.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) +end + +function c511010196.negfilter1(c) + return c:IsFaceup() and c:GetOriginalCode()==513000031 and not c:IsStatus(STATUS_DISABLED) +end +function c511010196.negfilter2(c) + return c:IsFaceup() and c:GetOriginalCode()==511001603 and not c:IsStatus(STATUS_DISABLED) +end +function c511010196.damcon(e,tp,eg,ep,ev,re,r,rp) +local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not bc then return false end + if Duel.GetMatchingGroup(c511010196.negfilter1,tp,0,LOCATION_MZONE,nil):GetCount()==0 then + if Duel.GetMatchingGroup(c511010196.negfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil):GetCount()==0 then + if not bc:IsCode(511012010) and (c:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)>1 or (c:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)==1 and not (bc:IsSetCard(0x48) or c:IsStatus(STATUS_DISABLED)))) then return false end + end + end + if c:IsAttackPos() and bc:IsAttackPos() and c:GetAttack()<=bc:GetAttack() then return true end + if c:IsDefensePos() and c:GetDefense()0) or (at==c and a:GetAttack()>0)) + and not e:GetHandler():IsStatus(STATUS_CHAINING) + end + Duel.SetTargetCard(e:GetHandler():GetBattleTarget()) +end +function c511010196.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetAttack()>0 then + local atk=tc:GetBaseAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(atk) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c511010196.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,77205367) + Duel.CreateToken(1-tp,77205367) +end +function c511010196.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010205.lua b/script/c511010205.lua new file mode 100644 index 00000000..e05a068f --- /dev/null +++ b/script/c511010205.lua @@ -0,0 +1,254 @@ +--CNo.5 亡朧龍カオス・キマイラ・ドラゴン (Anime) +function c511010205.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,3,nil,nil,5) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c511010205.atkval) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetCondition(c511010205.atcon) + c:RegisterEffect(e2) + --multiple attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(c511010205.atkvalue) + c:RegisterEffect(e3) + --banish + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_REMOVE) + e4:SetDescription(aux.Stringid(511010205,0)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c511010205.atkcost) + e4:SetCondition(c511010205.atkcon) + e4:SetTarget(c511010205.atktg) + e4:SetOperation(c511010205.atkop) + c:RegisterEffect(e4) + --halve atk + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_DAMAGE_CALCULATING) + e5:SetCondition(c511010205.halfcon) + e5:SetOperation(c511010205.halfop) + c:RegisterEffect(e5) + --back to deck + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TODECK) + e6:SetDescription(aux.Stringid(511010205,1)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetCountLimit(1) + e6:SetRange(LOCATION_MZONE) + e6:SetTarget(c511010205.tdtg) + e6:SetOperation(c511010205.tdop) + c:RegisterEffect(e6) + --atk reset + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_PHASE+PHASE_BATTLE) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetOperation(c511010205.resetop) + c:RegisterEffect(e7) + --reattach + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(511010205,2)) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetCode(EVENT_PHASE+PHASE_STANDBY) + e8:SetRange(LOCATION_MZONE) + e8:SetCondition(c511010205.reattcon) + e8:SetCost(c511010205.reattcost) + e8:SetTarget(c511010205.reatttg) + e8:SetOperation(c511010205.reattop) + c:RegisterEffect(e8) + --Rank Up Check + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e9:SetCode(EVENT_SPSUMMON_SUCCESS) + e9:SetCondition(c511010205.rankupregcon) + e9:SetOperation(c511010205.rankupregop) + c:RegisterEffect(e9) + --battle indestructable + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_SINGLE) + e10:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e10:SetValue(c511010205.indes) + c:RegisterEffect(e10) + if not c511010205.global_check then + c511010205.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010205.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010205.xyz_number=5 +function c511010205.atkval(e,c) + return c:GetOverlayCount()*1000 +end +function c511010205.atcon(e) + return e:GetHandler():GetFlagEffect(511010205)==0 +end +function c511010205.atkvalue(e,c) + return e:GetHandler():GetFlagEffect(511010205)-1 +end +function c511010205.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetHandler():GetOverlayGroup() + if chk==0 then return g:GetCount()>0 end + local sg=g:Select(tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_COST) + Duel.RaiseSingleEvent(e:GetHandler(),EVENT_DETACH_MATERIAL,e,0,0,0,0) + sg:GetFirst():RegisterFlagEffect(511205,RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,0,0) +end +function c511010205.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_BATTLE and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c511010205.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_DECK,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) +end +function c511010205.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_DECK,nil):RandomSelect(tp,1) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + g:GetFirst():RegisterFlagEffect(5110205,RESET_PHASE+PHASE_END,0,0) + e:GetHandler():RegisterFlagEffect(511010205,RESET_EVENT+0x1ff0000,0,0) +end +function c511010205.halfcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil +end +function c511010205.halfop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(c:GetAttack()/2) + c:RegisterEffect(e1) +end +function c511010205.tdfilter(c) + return c:IsAbleToDeck() and c:GetFlagEffect(5110205)~=0 +end +function c511010205.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511010205.tdfilter,tp,0,LOCATION_REMOVED,1,nil) end + local g=Duel.GetMatchingGroup(c511010205.tdfilter,tp,0,LOCATION_REMOVED,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c511010205.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511010205.tdfilter,tp,0,LOCATION_REMOVED,nil) + Duel.SendtoDeck(g,nil,0,REASON_EFFECT) + Duel.SortDecktop(tp,1-tp,g:GetCount()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_FORBIDDEN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE) + tc:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + tc:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CANNOT_TRIGGER) + tc:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_DISABLE_EFFECT) + tc:RegisterEffect(e5) + local e6=e1:Clone() + e6:SetCode(EFFECT_CANNOT_SUMMON) + tc:RegisterEffect(e6) + local e7=e1:Clone() + e7:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + tc:RegisterEffect(e7) + local e8=e1:Clone() + e8:SetCode(EFFECT_CANNOT_MSET) + tc:RegisterEffect(e8) + local e9=e1:Clone() + e9:SetCode(EFFECT_CANNOT_SSET) + tc:RegisterEffect(e9) + tc=g:GetNext() + end +end +function c511010205.resetop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():ResetFlagEffect(511010205) +end +function c511010205.reattcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511010205.reattcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c511010205.reattfilter(c) + return c:GetFlagEffect(511205)~=0 +end +function c511010205.reatttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511010205.reattfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end + local g=Duel.GetMatchingGroup(c511010205.reattfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,g:GetCount(),tp,0) +end +function c511010205.reattop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511010205.reattfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil) + if g:GetCount()>0 then + Duel.Overlay(e:GetHandler(),g) + end +end +function c511010205.rumfilter(c) + return c:IsCode(511010005) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end + +function c511010205.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and rc:IsSetCard(0x95) and e:GetHandler():GetMaterial():IsExists(c511010205.rumfilter,1,nil) +end +function c511010205.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --material + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(511010205,3)) + e9:SetType(EFFECT_TYPE_IGNITION) + e9:SetRange(LOCATION_MZONE) + e9:SetCountLimit(1) + e9:SetTarget(c511010205.mattg) + e9:SetOperation(c511010205.matop) + e9:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e9) +end + +function c511010205.mattg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,nil) end +end +function c511010205.matop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + Duel.Overlay(c,g) + end +end +function c511010205.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,69757518) + Duel.CreateToken(1-tp,69757518) +end +function c511010205.indes(e,c) +return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c511010238.lua b/script/c511010238.lua new file mode 100644 index 00000000..ec26e766 --- /dev/null +++ b/script/c511010238.lua @@ -0,0 +1,77 @@ +--Number C39: Utopia Ray V (anime) +function c511010238.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511010238.rankupregcon) + e1:SetOperation(c511010238.rankupregop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c511010238.indes) + c:RegisterEffect(e2) + if not c511010238.global_check then + c511010238.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010238.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010238.xyz_number=39 +function c511010238.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + return re and re:GetHandler():IsCode(92365601) +end +function c511010238.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(66970002,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511010238.descost) + e1:SetTarget(c511010238.destg) + e1:SetOperation(c511010238.desop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511010238.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010238.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) +end +function c511010238.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if atk<0 or tc:IsFacedown() then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end +function c511010238.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,66970002) + Duel.CreateToken(1-tp,66970002) +end +function c511010238.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511010239.lua b/script/c511010239.lua new file mode 100644 index 00000000..4bbdeeed --- /dev/null +++ b/script/c511010239.lua @@ -0,0 +1,121 @@ +--CNo.39 希望皇ホープレイ・ヴィクトリー (Anime) +function c511010239.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511010239.rankupregcon) + e1:SetOperation(c511010239.rankupregop) + c:RegisterEffect(e1) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511010239.indes) + c:RegisterEffect(e3) + if not c511010239.global_check then + c511010239.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511010239.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511010239.xyz_number=39 +function c511010239.rumfilter(c) + return c:IsCode(84013237) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511010239.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511010239.rumfilter,1,nil) +end +function c511010239.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() +--actlimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c511010239.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511010239,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCondition(c511010239.atkcon) + e2:SetCost(c511010239.atkcost) + e2:SetTarget(c511010239.atktg) + e2:SetOperation(c511010239.atkop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end + +function c511010239.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c511010239.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c511010239.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c511010239.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsFaceup() and bc:IsControler(1-tp) +end +function c511010239.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010239.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(e:GetHandler():GetBattleTarget()) +end +function c511010239.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + Duel.AdjustInstantly(tc) + local atk=tc:GetAttack() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end + end +end + +function c511010239.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,87911394) + Duel.CreateToken(1-tp,87911394) +end +function c511010239.indes(e,c) +return not c:IsSetCard(0x48) +end diff --git a/script/c511011000.lua b/script/c511011000.lua new file mode 100644 index 00000000..d22e69b4 --- /dev/null +++ b/script/c511011000.lua @@ -0,0 +1,68 @@ +--Scab Blast +--scripted by Keddy +function c511011000.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c511011000.target) + e1:SetOperation(c511011000.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(45950291,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PREDRAW) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c511011000.thcon) + e2:SetTarget(c511011000.thtg) + e2:SetOperation(c511011000.thop) + c:RegisterEffect(e2) +end +function c511011000.filter(c) + return c:IsFaceup() and c:GetCounter(0x109a)>0 +end +function c511011000.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511011000.filter,tp,LOCATION_MZONE,0,1,nil) end + local dam=Duel.GetMatchingGroupCount(c511011000.filter,tp,LOCATION_MZONE,0,nil)*200 + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + if dam>0 then Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end +end +function c511011000.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetMatchingGroupCount(c511011000.filter,tp,LOCATION_MZONE,0,nil)*200 + Duel.Damage(p,dam,REASON_EFFECT) +end +function c511011000.thcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c511011000.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c511011000.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + _replace_count=_replace_count+1 + if _replace_count<=_replace_max and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c511011001.lua b/script/c511011001.lua new file mode 100644 index 00000000..aabf6590 --- /dev/null +++ b/script/c511011001.lua @@ -0,0 +1,40 @@ +--Victim Barrier +--scripted by Keddy +function c511011001.initial_effect(c) + --change target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511011001.condition) + e1:SetTarget(c511011001.target) + e1:SetOperation(c511011001.activate) + c:RegisterEffect(e1) +end +function c511011001.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c511011001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end +end +function c511011001.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget()) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.ChangeAttackTarget(tc) + if tc:GetCounter(0x109a)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetOperation(c511011001.ctop) + Duel.RegisterEffect(e1,tp) + end + end +end +function c511011001.ctop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if a and a:IsRelateToBattle() then + a:AddCounter(0x109a,1) + end +end diff --git a/script/c511011002.lua b/script/c511011002.lua new file mode 100644 index 00000000..1492e346 --- /dev/null +++ b/script/c511011002.lua @@ -0,0 +1,79 @@ +--Crest Burn +--scripted by Keddy +function c511011002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(511011002) + e1:SetTarget(c511011002.target) + e1:SetOperation(c511011002.activate) + c:RegisterEffect(e1) + if not c511011002.global_check then + c511011002.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_LEAVE_FIELD) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c511011002.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511011002.cfilter(c,tp) + return c:IsCode(100000370) and c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_DESTROY) and c:IsControler(tp) + and c:GetPreviousControler()==tp +end +function c511011002.filter(c) + return c:IsFaceup() and c:IsCode(111215001) +end +function c511011002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return ev>0 and Duel.IsExistingMatchingCard(c511011002.filter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.SetTargetParam(ev) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0x1110,ev) +end +function c511011002.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=ev + local g=Duel.GetMatchingGroup(c511011002.filter,tp,LOCATION_ONFIELD,0,nil) + if g:GetCount()<=0 then return end + if g:GetCount()==1 then + local sc=Duel.GetFirstMatchingCard(c511011002.filter,tp,LOCATION_ONFIELD,0,nil) + Duel.HintSelection(Group.FromCards(sc)) + sc:AddCounter(0x1110,ct) + else + while g:GetCount()>1 and ct>0 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local sg=g:Select(tp,1,1,nil) + local sc=sg:GetFirst() + local t={} + local i=1 + for i=1,ct do + t[i]=i + end + local tempct=Duel.AnnounceNumber(tp,table.unpack(t)) + ct=ct-tempct + Duel.HintSelection(sg) + sc:AddCounter(0x1110,tempct) + g:RemoveCard(sc) + end + if g:GetCount()==1 and ct>0 then + local sc=g:GetFirst() + Duel.HintSelection(Group.FromCards(sc)) + sc:AddCounter(0x1110,ct) + end + end +end +function c511011002.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c511011002.cfilter,nil,tp) + local ct=0 + local tc=g:GetFirst() + while tc do + ct=ct+tc:GetCounter(0x95) + tc=g:GetNext() + end + if re then + Duel.RaiseEvent(g,511011002,re,r,rp,ep,ct) + else + Duel.RaiseEvent(g,511011002,e,r,rp,ep,ct) + end +end diff --git a/script/c511011003.lua b/script/c511011003.lua new file mode 100644 index 00000000..a87daf9a --- /dev/null +++ b/script/c511011003.lua @@ -0,0 +1,32 @@ +--Chewbone (Anime) +--scripted by Keddy +function c511011003.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511011003,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c511011003.sptg) + e1:SetOperation(c511011003.spop) + c:RegisterEffect(e1) +end +function c511011003.spfilter(c,e,tp) + return c:IsCode(511008013) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511011003.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511011003.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c511011003.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>3 then ft=3 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511011003.spfilter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c511011004.lua b/script/c511011004.lua new file mode 100644 index 00000000..f8f62878 --- /dev/null +++ b/script/c511011004.lua @@ -0,0 +1,51 @@ +--Tour of Doom (Anime) +function c511011004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_STANDBY_PHASE) + c:RegisterEffect(e1) + --coin + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(62784717,0)) + e2:SetCategory(CATEGORY_COIN) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c511011004.coincon) + e2:SetTarget(c511011004.cointg) + e2:SetOperation(c511011004.coinop) + c:RegisterEffect(e2) +end +function c511011004.coincon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c511011004.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c511011004.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local res=Duel.TossCoin(tp,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SUMMON) + if res==0 then + e1:SetReset(RESET_PHASE+PHASE_END,2) + e1:SetTargetRange(1,0) + else + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(0,1) + end + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + Duel.RegisterEffect(e3,tp) +end diff --git a/script/c511012000.lua b/script/c511012000.lua new file mode 100644 index 00000000..c7ef03d1 --- /dev/null +++ b/script/c511012000.lua @@ -0,0 +1,31 @@ +--オッドアイズ・ドラゴン +function c511012000.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511012000,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c511012000.damcon) + e1:SetTarget(c511012000.damtg) + e1:SetOperation(c511012000.damop) + c:RegisterEffect(e1) +end +function c511012000.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLevelAbove(5) and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c511012000.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetHandler():GetBattleTarget():GetAttack()/2 + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c511012000.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c511012001.lua b/script/c511012001.lua new file mode 100644 index 00000000..2cbbc1c8 --- /dev/null +++ b/script/c511012001.lua @@ -0,0 +1,61 @@ +--オッドアイズ・ペンデュラム・ドラゴン +--fixed by MLD +function c511012001.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --cannot destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(511012000) + e1:SetRange(LOCATION_PZONE) + c:RegisterEffect(e1) + --reduce + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(16178681,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c511012001.rdcon) + e2:SetOperation(c511012001.rdop) + c:RegisterEffect(e2) + --double + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e4:SetCondition(c511012001.damcon) + e4:SetOperation(c511012001.damop) + c:RegisterEffect(e4) +end +function c511012001.rdcon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(511012001)>0 then return false end + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + return ep==tp and tc and tc:IsType(TYPE_PENDULUM) and Duel.GetBattleDamage(tp)>0 +end +function c511012001.rdop(e,tp,eg,ep,ev,re,r,rp) + local pc1=e:GetHandler() + local pc2=Duel.GetFieldCard(tp,LOCATION_SZONE,13-pc1:GetSequence()) + local g + if pc2 and pc2:IsHasEffect(511012000) and pc2:GetFlagEffect(511012001)==0 then + g=Group.FromCards(pc1,pc2) + else + g=Group.FromCards(pc1) + end + if Duel.GetFlagEffect(tp,511012001)==0 and Duel.SelectYesNo(tp,aux.Stringid(16178681,2)) then + if g:GetCount()>1 then g=g:Select(tp,1,1,nil) end + Duel.HintSelection(g) + Duel.Hint(HINT_CARD,0,511012001) + local tc=g:GetFirst() + Duel.RegisterFlagEffect(tp,511012001,RESET_PHASE+PHASE_DAMAGE,0,1) + tc:RegisterFlagEffect(511012001,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.ChangeBattleDamage(tp,0) + end +end +function c511012001.damcon(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + return ep~=tp and bc and bc:IsLevelAbove(5) and bc:IsControler(1-tp) +end +function c511012001.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end diff --git a/script/c511018508.lua b/script/c511018508.lua new file mode 100644 index 00000000..df2afd30 --- /dev/null +++ b/script/c511018508.lua @@ -0,0 +1,99 @@ +--Raidraptor Retrofit Lanius +--fixed by MLD +function c511018508.initial_effect(c) + c511018508.xyzlimit2=function(mc) return mc:IsSetCard(0xba) end + function aux.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f then + mt.xyz_filter=function(mc) return mc and f(mc) end + else + mt.xyz_filter=function(mc) return true end + end + mt.minxyzct=ct + if not maxct then + mt.maxxyzct=ct + else + if maxct==5 and code~=14306092 and code~=63504681 and code~=23776077 then + mt.maxxyzct=99 + else + mt.maxxyzct=maxct + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + if not maxct then maxct=ct end + if alterf then + e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) + e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) + else + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) + end + e1:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e1) + end + + --lvchange + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(66457407,0)) + e1:SetCategory(CATEGORY_LVCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE+LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511018508.lvtg) + e1:SetOperation(c511018508.lvop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(511001225) + c:RegisterEffect(e2) + if not c511018508.global_check then + c511018508.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511018508.xyzchk) + Duel.RegisterEffect(ge2,0) + end +end +function c511018508.xyzchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,419) + Duel.CreateToken(1-tp,419) +end +function c511018508.lvfilter(c,code,lv) + return c:IsFaceup() and c:IsSetCard(0xba) and c:GetLevel()>0 and (c:GetCode()~=code or c:GetLevel()~=lv) +end +function c511018508.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c511018508.lvfilter(chkc,c:GetCode(),c:GetLevel()) and chkc~=c end + if chk==0 then return Duel.IsExistingTarget(c511018508.lvfilter,tp,LOCATION_MZONE,0,1,c,c:GetCode(),c:GetLevel()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c511018508.lvfilter,tp,LOCATION_MZONE,0,1,1,c,c:GetCode(),c:GetLevel()) +end +function c511018508.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and (c:IsFaceup() or c:IsLocation(LOCATION_HAND)) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + e2:SetValue(tc:GetCode()) + c:RegisterEffect(e2) + end +end diff --git a/script/c511018510.lua b/script/c511018510.lua new file mode 100644 index 00000000..8877948b --- /dev/null +++ b/script/c511018510.lua @@ -0,0 +1,80 @@ +--Rank-Up-Magic Cipher Pursuit +function c511018510.initial_effect(c) + --Activate + local re1=Effect.CreateEffect(c) + re1:SetDescription(aux.Stringid(41201386,0)) + re1:SetCategory(CATEGORY_SPECIAL_SUMMON) + re1:SetType(EFFECT_TYPE_ACTIVATE) + re1:SetCode(EVENT_FREE_CHAIN) + re1:SetProperty(EFFECT_FLAG_CARD_TARGET) + re1:SetCondition(c511018510.con) + re1:SetTarget(c511018510.target) + re1:SetOperation(c511018510.activate) + c:RegisterEffect(re1) +end + +function c511018510.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)-Duel.GetLP(1-tp)>=2000 or Duel.GetLP(1-tp)-Duel.GetLP(tp)>=2000 +end + +function c511018510.filter1(c,e,tp) + local rk=c:GetRank() + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0xe5) + and Duel.IsExistingMatchingCard(c511018510.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1) +end +function c511018510.filter2(c,e,tp,mc,rk) + return c:GetRank()==rk and c:IsSetCard(0xe5) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511018510.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511018510.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c511018510.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c511018510.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end + +function c511018510.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511018510.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummonStep(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + if sc:IsCode(2530830) or sc:IsCode(6137) then + local te=Effect.CreateEffect(sc) + te:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + te:SetCode(EVENT_SPSUMMON_SUCCESS) + te:SetRange(LOCATION_MZONE) + te:SetCountLimit(1) + te:SetCost(sc.descost) + te:SetTarget(sc.destg) + te:SetOperation(sc.desop) + te:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + sc:RegisterEffect(te) + else + local te=Effect.CreateEffect(sc) + te:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + te:SetCode(EVENT_SPSUMMON_SUCCESS) + te:SetRange(LOCATION_MZONE) + te:SetCountLimit(1) + te:SetCondition(sc.condition) + te:SetCost(sc.cost) + te:SetTarget(sc.target) + te:SetOperation(sc.operation) + te:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + sc:RegisterEffect(te) + end + Duel.SpecialSummonComplete() + sc:CompleteProcedure() +end +end diff --git a/script/c51101940.lua b/script/c51101940.lua new file mode 100644 index 00000000..ec0469bb --- /dev/null +++ b/script/c51101940.lua @@ -0,0 +1,49 @@ +--Quiz Panel - Obelisk 30 +os = require('os') +function c51101940.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51101940,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c51101940.operation) + c:RegisterEffect(e1) +end +c51101940.collection={ + [8062132]=true;[13893596]=true;[200000002]=true;[33396948]=true;[511000296]=true; + [6165656]=true;[53334641]=true;[81171949]=true;[95308449]=true;[100100065]=true; + [94212438]=true; +} +function c51101940.operation(e,tp,eg,ep,ev,re,r,rp) + local endtime=0 + local check=true + local start=os.time() + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51101940,0)) + local ac1=Duel.AnnounceCard(1-tp) + endtime=os.time()-start + if endtime>10 or not c51101940.collection[ac1] then + check=false + else + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51101940,0)) + local ac2=Duel.AnnounceCard(1-tp) + endtime=os.time()-start + if endtime>10 or not c51101940.collection[ac1] or ac1==ac2 then + check=false + else + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51101940,0)) + local ac3=Duel.AnnounceCard(1-tp) + endtime=os.time()-start + if endtime>10 or not c51101940.collection[ac1] or ac1==ac3 or ac3==ac2 then + check=false + end + end + end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + if check==true then + Duel.Damage(tp,1200,REASON_EFFECT) + else + if Duel.GetAttacker() then + Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT) + end + Duel.Damage(1-tp,1200,REASON_EFFECT) + end +end diff --git a/script/c51102025.lua b/script/c51102025.lua new file mode 100644 index 00000000..45bb38c3 --- /dev/null +++ b/script/c51102025.lua @@ -0,0 +1,62 @@ +--Quiz Monkey +function c51102025.initial_effect(c) + --Question + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCountLimit(1) + e1:SetCondition(c51102025.condition) + e1:SetOperation(c51102025.operation) + c:RegisterEffect(e1) +end +function c51102025.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c51102025.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x213) +end +function c51102025.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102025,0)) + local quest=Duel.AnnounceNumber(1-tp,0,1,2,3,4,5) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetLabel(quest) + e1:SetOperation(c51102025.op) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c51102025.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local quest=e:GetLabel() + Duel.Hint(HINT_CARD,0,51102025) + if Duel.GetMatchingGroupCount(c51102025.cfilter,tp,LOCATION_MZONE,0,nil)==quest then + Duel.Recover(1-tp,1000,REASON_EFFECT) + else + if c:IsLocation(LOCATION_GRAVE) then + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.Destroy(tc,REASON_EFFECT)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetValue(tc:GetDefense()) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end + end + end + end + end +end diff --git a/script/c51102026.lua b/script/c51102026.lua new file mode 100644 index 00000000..48a3d94d --- /dev/null +++ b/script/c51102026.lua @@ -0,0 +1,116 @@ +--Sphin-Quiz +function c51102026.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c51102026.sumcon) + e1:SetTarget(c51102026.sumtg) + e1:SetOperation(c51102026.sumop) + c:RegisterEffect(e1) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetCondition(c51102026.con) + e2:SetValue(1) + c:RegisterEffect(e2) + --Quest + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95100088,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c51102026.qcon) + e3:SetOperation(c51102026.qop) + c:RegisterEffect(e3) +end +function c51102026.sumcon(e,tp,eg,ep,ev,re,r,rp) + local rc=eg:GetFirst() + return rc:IsSetCard(0x213) +end +function c51102026.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c51102026.sumop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c51102026.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x213) +end +function c51102026.con(e) + return Duel.IsExistingMatchingCard(c51102026.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,e:GetHandler()) +end +function c51102026.qcon(e,tp,eg,ep,ev,re,r,rp) + local bt=eg:GetFirst() + return r~=REASON_REPLACE and bt:IsSetCard(0x213) +end +function c51102026.qop(e,tp,eg,ep,ev,re,r,rp) + local ghd=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_DECK,LOCATION_HAND+LOCATION_DECK) + local gex=Duel.GetFieldGroup(tp,LOCATION_EXTRA,LOCATION_EXTRA) + if ghd:GetCount()==0 and gex:GetCount()==0 then return end + local op=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51102026,3)) + if ghd:GetCount()>0 and gex:GetCount()>0 then + op=Duel.SelectOption(tp,aux.Stringid(51102026,0),aux.Stringid(51102026,1),aux.Stringid(51102026,2)) + elseif ghd:GetCount()>0 then + Duel.SelectOption(tp,aux.Stringid(51102026,0)) + op=0 + else + op=Duel.SelectOption(tp,aux.Stringid(51102026,1),aux.Stringid(51102026,2)) + op=op+1 + end + local lv=0 + local quest=0 + if op==0 then + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(51102026,0)) + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102026,0)) + quest=Duel.AnnounceNumber(1-tp,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) + lv=ghd:GetMaxGroup(Card.GetLevel):GetFirst():GetLevel() + Duel.ConfirmCards(1-tp,ghd) + Duel.ConfirmCards(tp,ghd) + Duel.ShuffleDeck(tp) + Duel.ShuffleDeck(1-tp) + Duel.ShuffleHand(tp) + Duel.ShuffleHand(1-tp) + elseif op==1 then + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(51102026,1)) + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102026,1)) + quest=Duel.AnnounceNumber(1-tp,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) + lv=gex:GetMaxGroup(Card.GetLevel):GetFirst():GetLevel() + Duel.ConfirmCards(1-tp,gex) + Duel.ConfirmCards(tp,gex) + else + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(51102026,2)) + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102026,2)) + quest=Duel.AnnounceNumber(1-tp,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) + lv=gex:GetMaxGroup(Card.GetRank):GetFirst():GetRank() + Duel.ConfirmCards(1-tp,gex) + Duel.ConfirmCards(tp,gex) + end + if quest==lv then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tg=g:GetMaxGroup(Card.GetAttack) + if tg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + tg=tg:Select(tp,1,1,nil) + Duel.HintSelection(tg) + end + if Duel.Destroy(tg,REASON_EFFECT)>0 then + Duel.Damage(tg:GetFirst():GetPreviousControler(),tg:GetFirst():GetAttack(),REASON_EFFECT) + end + end + else + Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end diff --git a/script/c51102028.lua b/script/c51102028.lua new file mode 100644 index 00000000..ba36aa2d --- /dev/null +++ b/script/c51102028.lua @@ -0,0 +1,59 @@ +--Last Question +function c51102028.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0+TIMING_MAIN_END) + e1:SetCondition(c51102028.condition) + e1:SetOperation(c51102028.activate) + c:RegisterEffect(e1) +end +function c51102028.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.IsAbleToEnterBP() +end +function c51102028.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(51102028,0)) + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102028,0)) + local quest=Duel.AnnounceNumber(1-tp,0,1,2,3,4,5,6,7,8,9,10) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE_START+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetLabel(quest) + e1:SetOperation(c51102028.op) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetLabel(0) + e2:SetOperation(c51102028.endop) + Duel.RegisterEffect(e2,tp) + e1:SetLabelObject(e2) +end +function c51102028.op(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetLabel(1) + Duel.Hint(HINT_CARD,0,51102028) + local quest=e:GetLabel() + local ct=Duel.GetMatchingGroupCount(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local c=e:GetHandler() + if ct==quest then + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) + else + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + end +end +function c51102028.endop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Hint(HINT_CARD,0,51102028) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + end +end diff --git a/script/c51102781.lua b/script/c51102781.lua new file mode 100644 index 00000000..e4b400b9 --- /dev/null +++ b/script/c51102781.lua @@ -0,0 +1,56 @@ +--Quiz Panel - Obelisk 10 +os = require('os') +function c51102781.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(51102781,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c51102781.operation) + c:RegisterEffect(e1) +end +c51102781.collection={ + [12143771]=true;[58538870]=true;[85936485]=true; +} +function c51102781.spfilter(c,e,tp) + return c:IsCode(51102782) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c51102781.operation(e,tp,eg,ep,ev,re,r,rp) + local endtime=0 + local check=true + local start=os.time() + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102781,0)) + local ac1=Duel.AnnounceCard(1-tp) + endtime=os.time()-start + if endtime>10 or not c51102781.collection[ac1] then + check=false + else + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102781,0)) + local ac2=Duel.AnnounceCard(1-tp) + endtime=os.time()-start + if endtime>10 or not c51102781.collection[ac1] or ac1==ac2 then + check=false + else + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102781,0)) + local ac3=Duel.AnnounceCard(1-tp) + endtime=os.time()-start + if endtime>10 or not c51102781.collection[ac1] or ac1==ac3 or ac3==ac2 then + check=false + end + end + end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c51102781.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + end + if check==true then + Duel.Damage(tp,500,REASON_EFFECT) + else + if Duel.GetAttacker() then + Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT) + end + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c51102782.lua b/script/c51102782.lua new file mode 100644 index 00000000..32114f0c --- /dev/null +++ b/script/c51102782.lua @@ -0,0 +1,50 @@ +--Quiz Panel - Obelisk 20 +os = require('os') +function c51102782.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(51102781,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c51102782.operation) + c:RegisterEffect(e1) +end +function c51102782.spfilter(c,e,tp) + return c:IsCode(51101940) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c51102782.operation(e,tp,eg,ep,ev,re,r,rp) + local endtime=0 + local check=true + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,TYPE_MONSTER) + local lv=g:GetSum(Card.GetLevel) + local start=os.time() + local ct=0 + local dn=0 + repeat + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102782,0)) + dn=Duel.AnnounceNumber(1-tp,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43, + 44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92, + 93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126--,127,128,129,130, + --131,132,133,134,135,136,137,138,139,140 + ) + ct=ct+dn + endtime=os.time()-start + if endtime>10 or ct>lv then + check=false + end + until check==false or dn<140 or not Duel.SelectYesNo(tp,aux.Stringid(51102782,1)) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c51102782.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + end + if lv==ct then + Duel.Damage(tp,800,REASON_EFFECT) + else + if Duel.GetAttacker() then + Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT) + end + Duel.Damage(1-tp,800,REASON_EFFECT) + end +end diff --git a/script/c51102783.lua b/script/c51102783.lua new file mode 100644 index 00000000..4ba50bc8 --- /dev/null +++ b/script/c51102783.lua @@ -0,0 +1,50 @@ +--Quiz Panel - Slifer 10 +os = require('os') +function c51102783.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(51102781,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c51102783.operation) + c:RegisterEffect(e1) +end +function c51102783.spfilter(c,e,tp) + return c:IsCode(51102784) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c51102783.operation(e,tp,eg,ep,ev,re,r,rp) + local endtime=0 + local check=true + local start=os.time() + local ct=0 + local bonus=0 + repeat + if bonus~=6 and bonus~=12 and bonus~=18 then + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(51102783,0)) + else + if Duel.SelectYesNo(1-tp,aux.Stringid(51102783,1)) then + ct=ct+1 + end + end + ct=ct+1 + bonus=bonus+1 + endtime=os.time()-start + if endtime>10 then + check=false + end + until check==false or ct>=20 + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c51102783.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + end + if check==true then + Duel.Damage(tp,500,REASON_EFFECT) + else + if Duel.GetAttacker() then + Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT) + end + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c51102784.lua b/script/c51102784.lua new file mode 100644 index 00000000..3c0669ec --- /dev/null +++ b/script/c51102784.lua @@ -0,0 +1,43 @@ +--Quiz Panel - Slifer 20 +os = require('os') +function c51102784.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(51102781,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c51102784.operation) + c:RegisterEffect(e1) +end +function c51102784.spfilter(c,e,tp) + return c:IsCode(51102785) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c51102784.operation(e,tp,eg,ep,ev,re,r,rp) + local endtime=0 + local check=true + local start=os.time() + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102784,0)) + local tc=Duel.AnnounceNumber(1-tp,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43, + 44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92, + 93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126 + --,127,128,129,130,131,132,133,134,135,136,137,138,139,140 + ) + endtime=os.time()-start + if endtime>5 or tc~=Duel.GetTurnCount() then + check=false + end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c51102784.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + end + if check==true then + Duel.Damage(tp,800,REASON_EFFECT) + else + if Duel.GetAttacker() then + Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT) + end + Duel.Damage(1-tp,800,REASON_EFFECT) + end +end diff --git a/script/c51102785.lua b/script/c51102785.lua new file mode 100644 index 00000000..baf92b4e --- /dev/null +++ b/script/c51102785.lua @@ -0,0 +1,30 @@ +--Quiz Panel - Slifer 30 +os = require('os') +function c51102785.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(51102785,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c51102785.operation) + c:RegisterEffect(e1) +end +function c51102785.operation(e,tp,eg,ep,ev,re,r,rp) + local endtime=0 + local check=true + local start=os.time() + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(51102785,0)) + endtime=os.time()-start + if endtime<30 or endtime>32 then + check=false + end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + if check==true then + Duel.Damage(tp,1200,REASON_EFFECT) + else + if Duel.GetAttacker() then + Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT) + end + Duel.Damage(1-tp,1200,REASON_EFFECT) + end +end diff --git a/script/c51102786.lua b/script/c51102786.lua new file mode 100644 index 00000000..1e264c6d --- /dev/null +++ b/script/c51102786.lua @@ -0,0 +1,68 @@ +--Quiz Panel - Ra 10 +os = require('os') +function c51102786.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(51102781,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c51102786.operation) + c:RegisterEffect(e1) +end +function c51102786.spfilter(c,e,tp) + return c:IsCode(51102787) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c51102786.operation(e,tp,eg,ep,ev,re,r,rp) + local endtime=0 + local check=true + local start=os.time() + local ct=0 + local ac + repeat + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102786,0)) + ac=Duel.AnnounceCard(1-tp) + endtime=os.time()-start + ct=ct+1 + if endtime>10 or ac~=49003308 then + check=false + end + until check==false or ct>=3 + if check==true then + ct=0 + repeat + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102786,0)) + ac=Duel.AnnounceCard(1-tp) + endtime=os.time()-start + ct=ct+1 + if endtime>10 or ac~=43793530 then + check=false + end + until check==false or ct>=3 + if check==true then + ct=0 + repeat + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102786,0)) + ac=Duel.AnnounceCard(1-tp) + endtime=os.time()-start + ct=ct+1 + if endtime>10 or ac~=39674352 then + check=false + end + until check==false or ct>=3 + end + end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c51102786.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + end + if check==true then + Duel.Damage(tp,500,REASON_EFFECT) + else + if Duel.GetAttacker() then + Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT) + end + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c51102787.lua b/script/c51102787.lua new file mode 100644 index 00000000..362a423e --- /dev/null +++ b/script/c51102787.lua @@ -0,0 +1,45 @@ +--Quiz Panel - Ra 20 +function c51102787.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(51102781,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c51102787.operation) + c:RegisterEffect(e1) +end +function c51102787.spfilter(c,e,tp) + return c:IsCode(51102788) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c51102787.operation(e,tp,eg,ep,ev,re,r,rp) + local check=true + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(51102787,0)) + local h=Duel.GetDecktopGroup(1-tp,1) + local tc=h:GetFirst() + Duel.Draw(1-tp,1,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + local ct=1 + while ct<=4095 and check==true do + if tc:IsSetCard(ct) then + check=false + end + ct=ct+1 + end + Duel.ShuffleHand(1-tp) + end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c51102787.spfilter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + end + if check==true then + Duel.Damage(tp,800,REASON_EFFECT) + else + if Duel.GetAttacker() then + Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT) + end + Duel.Damage(1-tp,800,REASON_EFFECT) + end +end diff --git a/script/c51102788.lua b/script/c51102788.lua new file mode 100644 index 00000000..719c8ca5 --- /dev/null +++ b/script/c51102788.lua @@ -0,0 +1,42 @@ +--Quiz Panel - Ra 30 +os = require('os') +function c51102788.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51102781,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetOperation(c51102788.operation) + c:RegisterEffect(e1) +end +function c51102788.filter(c,g) + local tc=g:GetFirst() + while tc do + if c:IsCode(tc:GetCode()) then return true end + tc=g:GetNext() + end + return false +end +function c51102788.operation(e,tp,eg,ep,ev,re,r,rp) + local endtime=0 + local check=true + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_DECK,0,1,3,nil) + local ct=Duel.GetMatchingGroupCount(c51102788.filter,tp,0x13,0,nil,g) + local start=os.time() + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(51102788,0)) + local tc=Duel.AnnounceNumber(1-tp,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43, + 44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92, + 93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120) + endtime=os.time()-start + if endtime>10 or tc~=ct then + check=false + end + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + if check==true then + Duel.Damage(tp,500,REASON_EFFECT) + else + if Duel.GetAttacker() then + Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT) + end + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c51192573.lua b/script/c51192573.lua index 0b13f6df..bdd79080 100644 --- a/script/c51192573.lua +++ b/script/c51192573.lua @@ -1,75 +1,75 @@ ---宇宙獣ガンギル -function c51192573.initial_effect(c) - --summon with 1 tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(51192573,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SUMMON_PROC) - e1:SetCondition(c51192573.otcon) - e1:SetOperation(c51192573.otop) - e1:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(51192573,1)) - e2:SetCategory(CATEGORY_COUNTER) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetTarget(c51192573.cttg) - e2:SetOperation(c51192573.ctop) - c:RegisterEffect(e2) - --atk def - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetCondition(c51192573.adcon) - e3:SetTarget(c51192573.adtg) - e3:SetValue(c51192573.adval) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) -end -function c51192573.otfilter(c,tp) - return c:GetOwner()==tp -end -function c51192573.otcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local mg=Duel.GetMatchingGroup(c51192573.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,1-tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 -end -function c51192573.otop(e,tp,eg,ep,ev,re,r,rp,c) - local mg=Duel.GetMatchingGroup(c51192573.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,1-tp) - local sg=Duel.SelectTribute(tp,c,1,1,mg) - c:SetMaterial(sg) - Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) -end -function c51192573.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_COUNTER,g,1,0x100e,1) -end -function c51192573.ctop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - tc:AddCounter(0x100e,1) - end -end -function c51192573.adcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c51192573.adtg(e,c) - local bc=c:GetBattleTarget() - return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) -end -function c51192573.adval(e,c) - return c:GetCounter(0x100e)*-300 -end +--宇宙獣ガンギル +function c51192573.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51192573,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c51192573.otcon) + e1:SetOperation(c51192573.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51192573,1)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c51192573.cttg) + e2:SetOperation(c51192573.ctop) + c:RegisterEffect(e2) + --atk def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetCondition(c51192573.adcon) + e3:SetTarget(c51192573.adtg) + e3:SetValue(c51192573.adval) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) +end +function c51192573.otfilter(c,tp) + return c:GetOwner()==tp +end +function c51192573.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c51192573.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,1-tp) + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) +end +function c51192573.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c51192573.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,1-tp) + local sg=Duel.SelectTribute(tp,c,1,1,mg) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c51192573.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,g,1,0x100e,1) +end +function c51192573.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + tc:AddCounter(0x100e,1) + end +end +function c51192573.adcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() +end +function c51192573.adtg(e,c) + local bc=c:GetBattleTarget() + return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) +end +function c51192573.adval(e,c) + return c:GetCounter(0x100e)*-300 +end diff --git a/script/c51194046.lua b/script/c51194046.lua index 1940fe73..5201da44 100644 --- a/script/c51194046.lua +++ b/script/c51194046.lua @@ -1,82 +1,82 @@ ---クリフォート・アセンブラ -function c51194046.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(1,0) - e2:SetTarget(c51194046.splimit) - c:RegisterEffect(e2) - --draw - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(51194046,0)) - e3:SetCategory(CATEGORY_DRAW) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetRange(LOCATION_PZONE) - e3:SetCountLimit(1) - e3:SetCondition(c51194046.drcon) - e3:SetTarget(c51194046.drtg) - e3:SetOperation(c51194046.drop) - c:RegisterEffect(e3) - if not c51194046.global_check then - c51194046.global_check=true - c51194046[0]=0 - c51194046[1]=0 - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SUMMON_SUCCESS) - ge1:SetOperation(c51194046.checkop) - Duel.RegisterEffect(ge1,0) - local ge2=ge1:Clone() - ge2:SetCode(EVENT_MSET) - Duel.RegisterEffect(ge2,0) - local ge3=Effect.CreateEffect(c) - ge3:SetType(EFFECT_TYPE_FIELD) - ge3:SetCode(EFFECT_MATERIAL_CHECK) - ge3:SetTargetRange(LOCATION_HAND,LOCATION_HAND) - ge3:SetValue(c51194046.valcheck) - Duel.RegisterEffect(ge3,0) - ge1:SetLabelObject(ge3) - ge2:SetLabelObject(ge3) - local ge4=Effect.CreateEffect(c) - ge4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge4:SetCode(EVENT_PHASE_START+PHASE_DRAW) - ge4:SetOperation(c51194046.clearop) - Duel.RegisterEffect(ge4,0) - end -end -function c51194046.splimit(e,c) - return not c:IsSetCard(0xaa) -end -function c51194046.checkop(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - if bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE then - local p=tc:GetSummonPlayer() - c51194046[p]=c51194046[p]+e:GetLabelObject():GetLabel() - end -end -function c51194046.valcheck(e,c) - local ct=c:GetMaterial():FilterCount(Card.IsSetCard,nil,0xaa) - e:SetLabel(ct) -end -function c51194046.clearop(e,tp,eg,ep,ev,re,r,rp) - c51194046[0]=0 - c51194046[1]=0 -end -function c51194046.drcon(e,tp,eg,ep,ev,re,r,rp) - return c51194046[tp]>0 -end -function c51194046.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,c51194046[tp]) end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,c51194046[tp]) -end -function c51194046.drop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Draw(tp,c51194046[tp],REASON_EFFECT) -end +--クリフォート・アセンブラ +function c51194046.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetTarget(c51194046.splimit) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(51194046,0)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_PZONE) + e3:SetCountLimit(1) + e3:SetCondition(c51194046.drcon) + e3:SetTarget(c51194046.drtg) + e3:SetOperation(c51194046.drop) + c:RegisterEffect(e3) + if not c51194046.global_check then + c51194046.global_check=true + c51194046[0]=0 + c51194046[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c51194046.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_MSET) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD) + ge3:SetCode(EFFECT_MATERIAL_CHECK) + ge3:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + ge3:SetValue(c51194046.valcheck) + Duel.RegisterEffect(ge3,0) + ge1:SetLabelObject(ge3) + ge2:SetLabelObject(ge3) + local ge4=Effect.CreateEffect(c) + ge4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge4:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge4:SetOperation(c51194046.clearop) + Duel.RegisterEffect(ge4,0) + end +end +function c51194046.splimit(e,c) + return not c:IsSetCard(0xaa) +end +function c51194046.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE then + local p=tc:GetSummonPlayer() + c51194046[p]=c51194046[p]+e:GetLabelObject():GetLabel() + end +end +function c51194046.valcheck(e,c) + local ct=c:GetMaterial():FilterCount(Card.IsSetCard,nil,0xaa) + e:SetLabel(ct) +end +function c51194046.clearop(e,tp,eg,ep,ev,re,r,rp) + c51194046[0]=0 + c51194046[1]=0 +end +function c51194046.drcon(e,tp,eg,ep,ev,re,r,rp) + return c51194046[tp]>0 +end +function c51194046.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,c51194046[tp]) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,c51194046[tp]) +end +function c51194046.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Draw(tp,c51194046[tp],REASON_EFFECT) +end diff --git a/script/c51196805.lua b/script/c51196805.lua index 1206fe77..23c14d14 100644 --- a/script/c51196805.lua +++ b/script/c51196805.lua @@ -1,63 +1,63 @@ ---ゴーストリック・スケルトン -function c51196805.initial_effect(c) - --summon limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetCondition(c51196805.sumcon) - c:RegisterEffect(e1) - --turn set - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(51196805,0)) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c51196805.postg) - e2:SetOperation(c51196805.posop) - c:RegisterEffect(e2) - --banish - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(51196805,1)) - e3:SetCategory(CATEGORY_REMOVE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCountLimit(1,51196805) - e3:SetCode(EVENT_FLIP) - e3:SetTarget(c51196805.rmtg) - e3:SetOperation(c51196805.rmop) - c:RegisterEffect(e3) -end -function c51196805.sfilter(c) - return c:IsFaceup() and c:IsSetCard(0x8d) -end -function c51196805.sumcon(e) - return not Duel.IsExistingMatchingCard(c51196805.sfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c51196805.postg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(51196805)==0 end - c:RegisterFlagEffect(51196805,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) - Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) -end -function c51196805.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) - end -end -function c51196805.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,1-tp,LOCATION_DECK) -end -function c51196805.rmop(e,tp,eg,ep,ev,re,r,rp) - local ct1=Duel.GetMatchingGroupCount(c51196805.sfilter,tp,LOCATION_MZONE,0,nil) - local ct2=Duel.GetFieldGroupCount(tp,0,LOCATION_DECK) - if ct1>ct2 then ct1=ct2 end - if ct1==0 then return end - local t={} - for i=1,ct1 do t[i]=i end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51196805,2)) - local ac=Duel.AnnounceNumber(tp,table.unpack(t)) - local g=Duel.GetDecktopGroup(1-tp,ac) - Duel.DisableShuffleCheck() - Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT) -end +--ゴーストリック・スケルトン +function c51196805.initial_effect(c) + --summon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c51196805.sumcon) + c:RegisterEffect(e1) + --turn set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51196805,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c51196805.postg) + e2:SetOperation(c51196805.posop) + c:RegisterEffect(e2) + --banish + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(51196805,1)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCountLimit(1,51196805) + e3:SetCode(EVENT_FLIP) + e3:SetTarget(c51196805.rmtg) + e3:SetOperation(c51196805.rmop) + c:RegisterEffect(e3) +end +function c51196805.sfilter(c) + return c:IsFaceup() and c:IsSetCard(0x8d) +end +function c51196805.sumcon(e) + return not Duel.IsExistingMatchingCard(c51196805.sfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c51196805.postg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(51196805)==0 end + c:RegisterFlagEffect(51196805,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) +end +function c51196805.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) + end +end +function c51196805.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,1-tp,LOCATION_DECK) +end +function c51196805.rmop(e,tp,eg,ep,ev,re,r,rp) + local ct1=Duel.GetMatchingGroupCount(c51196805.sfilter,tp,LOCATION_MZONE,0,nil) + local ct2=Duel.GetFieldGroupCount(tp,0,LOCATION_DECK) + if ct1>ct2 then ct1=ct2 end + if ct1==0 then return end + local t={} + for i=1,ct1 do t[i]=i end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(51196805,2)) + local ac=Duel.AnnounceNumber(tp,table.unpack(t)) + local g=Duel.GetDecktopGroup(1-tp,ac) + Duel.DisableShuffleCheck() + Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT) +end diff --git a/script/c512000007.lua b/script/c512000007.lua new file mode 100644 index 00000000..85c87649 --- /dev/null +++ b/script/c512000007.lua @@ -0,0 +1,87 @@ +--Underworld Circle +function c512000007.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c512000007.target) + e1:SetOperation(c512000007.activate) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(512000007,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_REPEAT) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetTarget(c512000007.drtg) + e2:SetOperation(c512000007.drop) + c:RegisterEffect(e2) +end +function c512000007.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c512000007.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c512000007.filter,tp,LOCATION_DECK+LOCATION_HAND,LOCATION_DECK+LOCATION_HAND,1,nil) end + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local tg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local sg=Duel.GetMatchingGroup(c512000007.filter,tp,LOCATION_DECK+LOCATION_HAND,LOCATION_DECK+LOCATION_HAND,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,tg:GetCount(),0,0) +end +function c512000007.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c512000007.filter,tp,LOCATION_DECK+LOCATION_HAND,LOCATION_DECK+LOCATION_HAND,nil) + local tg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) + Duel.Destroy(tg,REASON_EFFECT) +--remove +local c=e:GetHandler() +local e3=Effect.CreateEffect(c) +e3:SetType(EFFECT_TYPE_FIELD) +e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) +e3:SetCode(EFFECT_TO_GRAVE_REDIRECT) +e3:SetRange(LOCATION_SZONE) +e3:SetTarget(c512000007.rmtarget) +e3:SetValue(LOCATION_REMOVED) +Duel.RegisterEffect(e3,tp,1-tp) +end +function c512000007.filt(c,e,tp) +return c:IsCanBeSpecialSummoned(e,0,tp,true,true) and c:IsType(TYPE_MONSTER) +end +function c512000007.drtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then + return Duel.IsExistingTarget(c512000007.filt,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c512000007.filt,1-tp,LOCATION_GRAVE,0,1,nil,e,1-tp) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE,1-tp)>0 + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectTarget(tp,c512000007.filt,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local og=Duel.SelectTarget(1-tp,c512000007.filt,1-tp,LOCATION_GRAVE,0,1,1,nil,e,1-tp) + local sc=sg:GetFirst() + local oc=og:GetFirst() + local g=Group.FromCards(sc,oc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) + e:SetLabelObject(sc) +end +function c512000007.drop(e,tp,eg,ep,ev,re,r,rp) + local sc=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local oc=g:GetFirst() + if oc==sc then oc=g:GetNext() end + if sc:IsRelateToEffect(e) then + Duel.SpecialSummonStep(sc,0,tp,tp,true,true,POS_FACEUP) + end + if oc:IsRelateToEffect(e) then + Duel.SpecialSummonStep(oc,0,1-tp,1-tp,true,true,POS_FACEUP) + end + Duel.SpecialSummonComplete() +end +function c512000007.rmtarget(e,c) + return not c:IsLocation(0x80) and not c:IsType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c512000094.lua b/script/c512000094.lua new file mode 100644 index 00000000..ef78f240 --- /dev/null +++ b/script/c512000094.lua @@ -0,0 +1,34 @@ +--Anti-Magic Arrows +--scripted by GameMaster (GM) +function c512000094.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetTarget(c512000094.target) + e1:SetOperation(c512000094.activate) + c:RegisterEffect(e1) +end + + + +function c512000094.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + Duel.SetChainLimit(aux.FALSE) + end +end +function c512000094.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(c512000094.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c512000094.aclimit(e,re,tp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c512000099.lua b/script/c512000099.lua new file mode 100644 index 00000000..7b7bdfd9 --- /dev/null +++ b/script/c512000099.lua @@ -0,0 +1,24 @@ +--Magic Removal Virus Cannon +function c512000099.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c512000099.target) + e1:SetOperation(c512000099.activate) + c:RegisterEffect(e1) +end +function c512000099.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGrave() +end +function c512000099.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c512000099.filter,tp,0,LOCATION_DECK+LOCATION_HAND,1,nil) end + local sg=Duel.GetMatchingGroup(c512000099.filter,tp,0,LOCATION_DECK+LOCATION_HAND,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,sg,sg:GetCount(),0,0) +end +function c512000099.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c512000099.filter,tp,0,LOCATION_DECK+LOCATION_HAND,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + local p=e:GetHandler():GetControler() + end \ No newline at end of file diff --git a/script/c51267887.lua b/script/c51267887.lua index d177395e..952e66d7 100644 --- a/script/c51267887.lua +++ b/script/c51267887.lua @@ -1,14 +1,6 @@ --体温の上昇 function c51267887.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(c51267887.target) - e1:SetOperation(c51267887.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_DINOSAUR)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c51267887.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c51267887.eqlimit) - c:RegisterEffect(e4) -end -function c51267887.eqlimit(e,c) - return c:IsRace(RACE_DINOSAUR) -end -function c51267887.filter(c) - return c:IsFaceup() and c:IsRace(RACE_DINOSAUR) -end -function c51267887.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c51267887.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c51267887.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c51267887.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c51267887.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 diff --git a/script/c5128859.lua b/script/c5128859.lua index e3afe7da..e5a6edfa 100644 --- a/script/c5128859.lua +++ b/script/c5128859.lua @@ -1,96 +1,97 @@ ---E・HERO マリン・ネオス -function c5128859.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,89943723,78734254,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c5128859.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c5128859.spcon) - e2:SetOperation(c5128859.spop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(5128859,0)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetTarget(c5128859.destg) - e3:SetOperation(c5128859.desop) - c:RegisterEffect(e3) -end -function c5128859.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) -end -function c5128859.spfilter(c,code) - return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) -end -function c5128859.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-1 then return false end - local g1=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,nil,78734254) - if g1:GetCount()==0 or g2:GetCount()==0 then return false end - if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end - if ft>0 then return true end - local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - if ft==-1 then return f1>0 and f2>0 - else return f1>0 or f2>0 end -end -function c5128859.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g1=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,nil,78734254) - g1:Merge(g2) - local g=Group.CreateGroup() - local tc=nil - for i=1,2 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - if ft<=0 then - tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() - ft=ft+1 - else - tc=g1:Select(tp,1,1,nil):GetFirst() - end - g:AddCard(tc) - if i==1 then - g1:Clear() - if tc:IsFusionCode(89943723) then - local sg=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,tc,78734254) - g1:Merge(sg) - end - if tc:IsFusionCode(78734254) then - local sg=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) - g1:Merge(sg) - end - end - end - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c5128859.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,1-tp,LOCATION_HAND) -end -function c5128859.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) - local sg=g:RandomSelect(tp,1) - Duel.Destroy(sg,REASON_EFFECT) -end +--E・HERO マリン・ネオス +function c5128859.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,89943723,78734254,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c5128859.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c5128859.spcon) + e2:SetOperation(c5128859.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(5128859,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c5128859.destg) + e3:SetOperation(c5128859.desop) + c:RegisterEffect(e3) +end +c5128859.material_setcode=0x8 +function c5128859.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c5128859.spfilter(c,code) + return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) +end +function c5128859.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local g1=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,nil,78734254) + if g1:GetCount()==0 or g2:GetCount()==0 then return false end + if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + if ft==-1 then return f1>0 and f2>0 + else return f1>0 or f2>0 end +end +function c5128859.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,nil,78734254) + g1:Merge(g2) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + ft=ft+1 + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + if i==1 then + g1:Clear() + if tc:IsFusionCode(89943723) then + local sg=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,tc,78734254) + g1:Merge(sg) + end + if tc:IsFusionCode(78734254) then + local sg=Duel.GetMatchingGroup(c5128859.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) + g1:Merge(sg) + end + end + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c5128859.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,1-tp,LOCATION_HAND) +end +function c5128859.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + local sg=g:RandomSelect(tp,1) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c513000000.lua b/script/c513000000.lua new file mode 100644 index 00000000..16252ac5 --- /dev/null +++ b/script/c513000000.lua @@ -0,0 +1,27 @@ +--Virus Cannon (Anime) +function c513000000.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000000.target) + e1:SetOperation(c513000000.operation) + c:RegisterEffect(e1) +end +function c513000000.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGrave() +end +function c513000000.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,0,LOCATION_DECK+LOCATION_HAND,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,10,tp,LOCATION_DECK) +end +function c513000000.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c513000000.filter,tp,0,LOCATION_DECK+LOCATION_HAND,nil):Select(1-tp,10,10,nil) + Duel.SendtoGrave(g,REASON_EFFECT) + if g:GetCount()<10 then + local cg=Duel.GetFieldGroup(1-tp,LOCATION_DECK+LOCATION_HAND,0) + Duel.ConfirmCards(tp,cg) + Duel.ShuffleHand(1-tp) + Duel.ShuffleDeck(1-tp) + end +end diff --git a/script/c513000001.lua b/script/c513000001.lua new file mode 100644 index 00000000..e1e742a8 --- /dev/null +++ b/script/c513000001.lua @@ -0,0 +1,47 @@ +--聖なるバリア-ミラーフォース- +function c513000001.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c513000001.condition) + e1:SetTarget(c513000001.target) + e1:SetOperation(c513000001.activate) + c:RegisterEffect(e1) +end +function c513000001.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c513000001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,0,LOCATION_MZONE,nil) + local sum=g:GetSum(Card.GetAttack) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(sum) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,sum) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c513000001.dfilter(c) + return c:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)~=1 +end +function c513000001.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local sum=g:GetSum(Card.GetAttack) + Duel.Damage(p,sum,REASON_BATTLE) + local dg=g:Filter(c513000001.dfilter,nil) + if Duel.Destroy(dg,REASON_BATTLE)~=dg:GetCount() then + local sg=dg:Filter(Card.IsLocation,nil,LOCATION_MZONE) + Duel.SendtoGrave(sg,REASON_BATTLE) + end + local tc=dg:GetFirst() + while tc do + tc:SetStatus(STATUS_BATTLE_DESTROYED,true) + Duel.RaiseSingleEvent(tc,EVENT_BATTLE_DESTROYED,e,REASON_BATTLE,tp,tp,0) + tc=dg:GetNext() + end + Duel.RaiseEvent(dg,EVENT_BATTLE_DESTROYED,e,REASON_BATTLE,tp,tp,0) + end +end diff --git a/script/c513000002.lua b/script/c513000002.lua new file mode 100644 index 00000000..bd8c074b --- /dev/null +++ b/script/c513000002.lua @@ -0,0 +1,56 @@ +--銀幕の鏡壁 +function c513000002.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(0,TIMING_DAMAGE_STEP) + e1:SetCondition(c513000002.condition) + e1:SetTarget(c513000002.target) + e1:SetOperation(c513000002.operation) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c513000002.operation) + c:RegisterEffect(e2) + --atkchange + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetTarget(c513000002.atktg) + e3:SetValue(c513000002.atkval) + c:RegisterEffect(e3) + local g=Group.CreateGroup() + g:KeepAlive() + e1:SetLabelObject(g) + e2:SetLabelObject(g) + e3:SetLabelObject(g) +end +function c513000002.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c513000002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetLabelObject():Clear() +end +function c513000002.operation(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if a and a:IsControler(1-tp) and a:IsFaceup() and a:IsLocation(LOCATION_MZONE) then + e:GetLabelObject():AddCard(a) + if a:GetFlagEffect(513000002)==0 then + a:RegisterFlagEffect(513000002,RESET_EVENT+0x1fe0000,0,1) + end + end +end +function c513000002.atktg(e,c) + return c:GetFlagEffect(513000002)~=0 and e:GetLabelObject():IsContains(c) +end +function c513000002.atkval(e,c) + return c:GetAttack()/2 +end diff --git a/script/c513000003.lua b/script/c513000003.lua new file mode 100644 index 00000000..1ea0b7cf --- /dev/null +++ b/script/c513000003.lua @@ -0,0 +1,104 @@ +--時械神 ザフィオン +function c513000003.initial_effect(c) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c513000003.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --s/t to deck + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetDescription(aux.Stringid(513000003,0)) + e6:SetCode(EVENT_BATTLED) + e6:SetTarget(c513000003.target) + e6:SetOperation(c513000003.activate) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(512000003,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000003.tdcon) + e7:SetTarget(c513000003.tdtg) + e7:SetOperation(c513000003.tdop) + c:RegisterEffect(e7) + --draw + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(513000003,1)) + e8:SetCategory(CATEGORY_DRAW) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e8:SetCode(EVENT_LEAVE_FIELD) + e8:SetTarget(c513000003.drtg) + e8:SetOperation(c513000003.drop) + c:RegisterEffect(e8) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000003.sumlimit) + c:RegisterEffect(e9) +end +function c513000003.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c513000003.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() +end +function c513000003.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(c513000003.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c513000003.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c513000003.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) +end +function c513000003.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000003.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000003.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000003.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ht=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(5-ht) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,5-ht) +end +function c513000003.drop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ht=Duel.GetFieldGroupCount(p,LOCATION_HAND,0) + if ht<5 then + Duel.Draw(p,5-ht,REASON_EFFECT) + end +end +function c513000003.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000004.lua b/script/c513000004.lua new file mode 100644 index 00000000..986fc3bf --- /dev/null +++ b/script/c513000004.lua @@ -0,0 +1,119 @@ +--ワンハンドレッド·アイ·ドラゴン +function c513000004.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + c513000004.tuner_filter=function(mc) return mc and mc:IsSetCard(0x301) end + c513000004.nontuner_filter=function(mc) return true end + c513000004.minntct=1 + c513000004.maxntct=1 + c513000004.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c513000004.syncon) + e1:SetOperation(c513000004.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c513000004.operation) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(513000004,0)) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c513000004.thcon) + e3:SetTarget(c513000004.thtg) + e3:SetOperation(c513000004.thop) + c:RegisterEffect(e3) + --add setcode + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_ADD_SETCODE) + e4:SetValue(0x301) + c:RegisterEffect(e4) +end +function c513000004.tmatfilter(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c513000004.ntmatfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c513000004.synfilter1(c,lv,tuner,syncard) + local tlv=c:GetSynchroLevel(syncard) + if c:GetFlagEffect(100000147)==0 then + return tuner:IsExists(c513000004.synfilter2,1,nil,lv+tlv,syncard) + else + return tuner:IsExists(c513000004.synfilter2,1,nil,lv-tlv,syncard) + end +end +function c513000004.synfilter2(c,lv,syncard) + return c:GetSynchroLevel(syncard)==lv +end +function c513000004.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local tuner=Duel.GetMatchingGroup(c513000004.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nontuner=Duel.GetMatchingGroup(c513000004.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + return nontuner:IsExists(c513000004.synfilter1,1,nil,8,tuner,c) +end +function c513000004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local tun=Duel.GetMatchingGroup(c513000004.tmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local nont=Duel.GetMatchingGroup(c513000004.ntmatfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local nontmat=nont:FilterSelect(tp,c513000004.synfilter1,1,1,nil,8,tun,c) + local mat1=nontmat:GetFirst() + g:AddCard(mat1) + local lv1=mat1:GetSynchroLevel(c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t + if mat1:GetFlagEffect(100000147)==0 then + t=tun:FilterSelect(tp,c513000004.synfilter2,1,1,nil,8+lv1,c) + else + t=tun:FilterSelect(tp,c513000004.synfilter2,1,1,nil,8-lv1,c) + end + g:Merge(t) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c513000004.filter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsType(TYPE_MONSTER) +end +function c513000004.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local wg=Duel.GetMatchingGroup(c513000004.filter,c:GetControler(),LOCATION_GRAVE,0,nil) + local wbc=wg:GetFirst() + while wbc do + local code=wbc:GetOriginalCode() + if c:IsFaceup() and c:GetFlagEffect(code)==0 then + c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + c:RegisterFlagEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + wbc=wg:GetNext() + end +end +function c513000004.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c513000004.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c513000004.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c513000005.lua b/script/c513000005.lua new file mode 100644 index 00000000..404f7523 --- /dev/null +++ b/script/c513000005.lua @@ -0,0 +1,35 @@ +--Thousand-Eyed Ghost +function c513000005.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000038,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c513000005.spcon) + e2:SetTarget(c513000005.sptg) + e2:SetOperation(c513000005.spop) + c:RegisterEffect(e2) +end +function c513000005.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c513000005.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000005.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c513000005.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c513000005.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + elseif Duel.IsPlayerCanSpecialSummon(tp) then + local cg=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c513000006.lua b/script/c513000006.lua new file mode 100644 index 00000000..997a3cce --- /dev/null +++ b/script/c513000006.lua @@ -0,0 +1,32 @@ +--Three-Eyed Ghost +function c513000006.initial_effect(c) + --add to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000290,1)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c513000006.thcost) + e1:SetTarget(c513000006.thtg) + e1:SetOperation(c513000006.thop) + c:RegisterEffect(e1) +end +function c513000006.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c513000006.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c513000006.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000006.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c513000006.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c513000006.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c513000007.lua b/script/c513000007.lua new file mode 100644 index 00000000..39c9b660 --- /dev/null +++ b/script/c513000007.lua @@ -0,0 +1,48 @@ +--Sea of Rebirth +function c513000007.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(513000007,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c513000007.spcon) + e2:SetTarget(c513000007.sptg) + e2:SetOperation(c513000007.spop) + c:RegisterEffect(e2) +end +function c513000007.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x2b) +end +function c513000007.tgfilter(c,e,tp) + return c:IsFaceup() and c:IsControler(1-tp) and (not e or c:IsRelateToEffect(e)) +end +function c513000007.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c513000007.tgfilter,1,nil,nil,tp) +end +function c513000007.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000007.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:FilterCount(c513000007.tgfilter,nil,nil,tp) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct + and Duel.IsExistingMatchingCard(c513000007.filter,tp,LOCATION_DECK,0,ct,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) + Duel.SetTargetCard(eg) +end +function c513000007.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local ct=eg:FilterCount(c513000007.tgfilter,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)107 or not c:IsSetCard(0x48) or rk<=0 then return false end + if c:IsLocation(LOCATION_GRAVE+LOCATION_EXTRA) then + return c:IsCanBeSpecialSummoned(e,0,tp,true,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + else + return c:IsFaceup() and Duel.IsExistingMatchingCard(c513000008.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk) + end + +end +function c513000008.filter2(c,e,tp,mc,rk) + return (c:IsSetCard(0x1048) or c:IsSetCard(0x1073) or c:IsCode(511000296)) and mc:IsCanBeXyzMaterial(c) + and c:GetRank()==rk+1 and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c513000008.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c513000008.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c513000008.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetFirst():IsLocation(LOCATION_MZONE) then + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + else + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_EXTRA) + end +end +function c513000008.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local reqxyz=false + if not tc then return end + if tc:IsLocation(LOCATION_MZONE) then + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + reqxyz=true + else + if not tc:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP)then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end + end + local sg=Duel.GetMatchingGroup(c513000008.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,tc,tc:GetRank()) + if sg:GetCount()>0 and (reqxyz or Duel.SelectYesNo(tp,aux.Stringid(73988674,2))) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=sg:Select(tp,1,1,nil):GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + mg:AddCard(tc) + sc:SetMaterial(mg) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end + end +end diff --git a/script/c513000009.lua b/script/c513000009.lua new file mode 100644 index 00000000..dd377b15 --- /dev/null +++ b/script/c513000009.lua @@ -0,0 +1,53 @@ +--Crush Card +function c513000009.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c513000009.condition) + e1:SetTarget(c513000009.target) + e1:SetOperation(c513000009.activate) + c:RegisterEffect(e1) +end +function c513000009.cfilter(c,tp) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackBelow(1000) and c:GetPreviousControler()==tp +end +function c513000009.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c513000009.cfilter,1,nil,tp) +end +function c513000009.tgfilter(c) + return c:IsFaceup() and c:GetAttack()>=1500 and c:IsDestructable() +end +function c513000009.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c513000009.tgfilter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c513000009.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAttackAbove(1500) +end +function c513000009.activate(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE+LOCATION_HAND+LOCATION_DECK) + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + local dg=conf:Filter(c513000009.filter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + dg:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetRange(LOCATION_GRAVE) + e1:SetTargetRange(1,1) + e1:SetLabelObject(dg) + e1:SetCondition(aux.nfbdncon) + e1:SetTarget(c513000009.sumlimit) + e1:SetReset(RESET_EVENT+0x17a0000) + e:GetHandler():RegisterEffect(e1) + end +end +function c513000009.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject():IsContains(c) and c:IsLocation(LOCATION_GRAVE) +end diff --git a/script/c513000010.lua b/script/c513000010.lua new file mode 100644 index 00000000..41a4a396 --- /dev/null +++ b/script/c513000010.lua @@ -0,0 +1,26 @@ +--Soul Connection +function c513000010.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000010.target) + e1:SetOperation(c513000010.activate) + c:RegisterEffect(e1) +end +function c513000010.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c513000010.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000010.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c513000010.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c513000010.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c513000011.lua b/script/c513000011.lua new file mode 100644 index 00000000..573f0ab0 --- /dev/null +++ b/script/c513000011.lua @@ -0,0 +1,27 @@ +--Burning Soul +function c513000011.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000011.target) + e1:SetOperation(c513000011.activate) + c:RegisterEffect(e1) +end +function c513000011.filter(c) + return not c:IsHasEffect(EFFECT_NECRO_VALLEY) and c:IsAbleToHand() +end +function c513000011.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000011.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c513000011.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c513000011.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c513000012.lua b/script/c513000012.lua new file mode 100644 index 00000000..620be8c4 --- /dev/null +++ b/script/c513000012.lua @@ -0,0 +1,146 @@ +--シューティング・スター・ドラゴン +function c513000012.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.FilterBoolFunction(Card.IsCode,44508094)) + c:EnableReviveLimit() + --opponent's turn synchro + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(575512,0)) + e1:SetHintTiming(0,TIMING_END_PHASE+TIMING_MAIN_END) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_EXTRA) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c513000012.syncon) + e1:SetTarget(c513000012.syntg) + e1:SetOperation(c513000012.synop) + c:RegisterEffect(e1) + --multi attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(24696097,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c513000012.mtcon) + e2:SetOperation(c513000012.mtop) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(24696097,1)) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_F) + e3:SetCode(EVENT_CHAINING) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c513000012.discon) + e3:SetTarget(c513000012.distg) + e3:SetOperation(c513000012.disop) + c:RegisterEffect(e3) + --banish + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(24696097,2)) + e4:SetCategory(CATEGORY_REMOVE) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCondition(c513000012.bancon) + e4:SetCost(c513000012.bancost) + e4:SetOperation(c513000012.banop) + c:RegisterEffect(e4) + --Return + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(24696097,3)) + e5:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetRange(LOCATION_REMOVED) + e5:SetCountLimit(1) + e5:SetTarget(c513000012.rettg) + e5:SetOperation(c513000012.retop) + c:RegisterEffect(e5) +end +function c513000012.syncon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c513000012.syntg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsSynchroSummonable(nil) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,tp,LOCATION_EXTRA) +end +function c513000012.synop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SynchroSummon(tp,c,nil) + end +end +function c513000012.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=5 +end +function c513000012.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.ConfirmDecktop(tp,5) + local g=Duel.GetDecktopGroup(tp,5) + local ct=g:FilterCount(Card.IsType,nil,TYPE_TUNER) + Duel.ShuffleDeck(tp) + if ct>=2 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e1:SetValue(ct-1) + c:RegisterEffect(e1) + end +end +function c513000012.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end + if re:IsHasCategory(CATEGORY_NEGATE) + and Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0 +end +function c513000012.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c513000012.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c513000012.bancon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c513000012.bancost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST+REASON_TEMPORARY) +end +function c513000012.banop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(513000012,RESET_EVENT+0x1fe0000,0,0) + if Duel.GetAttacker() and Duel.SelectYesNo(tp,94) then Duel.NegateAttack() + else + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_REMOVED) + e1:SetCountLimit(1) + e1:SetOperation(c513000012.negop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c513000012.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(513000012)>0 end +end +function c513000012.retop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.ReturnToField(e:GetHandler()) + end +end +function c513000012.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c513000013.lua b/script/c513000013.lua new file mode 100644 index 00000000..7b38ec8d --- /dev/null +++ b/script/c513000013.lua @@ -0,0 +1,230 @@ +--スカーレッド・ノヴァ・ドラゴン +function c513000013.initial_effect(c) + --synchro summon + c513000013.tuner_filter=function(mc) return true end + c513000013.nontuner_filter=function(mc) return mc and mc:IsCode(70902743) end + c513000013.minntct=1 + c513000013.maxntct=1 + c513000013.sync=true + c513000013.dobtun=true + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c513000013.syncon) + e1:SetOperation(c513000013.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c513000013.atkval) + c:RegisterEffect(e2) + --indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(c513000013.indval) + c:RegisterEffect(e3) + --banish + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(24696097,2)) + e4:SetCategory(CATEGORY_REMOVE) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCondition(c513000013.bancon) + e4:SetTarget(c513000013.bantg) + e4:SetOperation(c513000013.banop) + c:RegisterEffect(e4) + --Return + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(24696097,3)) + e5:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetRange(LOCATION_REMOVED) + e5:SetCountLimit(1) + e5:SetTarget(c513000013.rettg) + e5:SetOperation(c513000013.retop) + c:RegisterEffect(e5) +end +function c513000013.matfilter1(c,syncard) + return c:IsType(TYPE_TUNER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) +end +function c513000013.matfilter2(c,syncard) + return c:IsFaceup() and c:IsCode(70902743) and c:IsCanBeSynchroMaterial(syncard) +end +function c513000013.synfilter1(c,syncard,lv,g1,g2,g3) + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + local f1=c.tuner_filter + if c:IsHasEffect(55863245) then + return g3:IsExists(c513000013.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) + else + return g1:IsExists(c513000013.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) + end +end +function c513000013.synfilter2(c,syncard,lv,g2,f1,tuner1) + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + local f2=c.tuner_filter + if f1 and not f1(c) then return false end + if f2 and not f2(tuner1) then return false end + return g2:IsExists(c513000013.synfilter3,1,nil,syncard,lv-tlv,f1,f2) +end +function c513000013.synfilter3(c,syncard,lv,f1,f2) + local mlv=c:GetSynchroLevel(syncard) + local lv1=bit.band(mlv,0xffff) + local lv2=bit.rshift(mlv,16) + return (lv1==lv or lv2==lv) and (not f1 or f1(c)) and (not f2 or f2(c)) +end +function c513000013.syncon(e,c,tuner,mg) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end + local g1=nil + local g2=nil + local g3=nil + if mg then + g1=mg:Filter(c513000013.matfilter1,nil,c) + g2=mg:Filter(c513000013.matfilter2,nil,c) + g3=mg:Filter(c513000013.matfilter1,nil,c) + else + g1=Duel.GetMatchingGroup(c513000013.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c513000013.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c513000013.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + local tlv=tuner:GetSynchroLevel(c) + if lv-tlv<=0 then return false end + local f1=tuner.tuner_filter + if not pe then + return g1:IsExists(c513000013.synfilter2,1,tuner,c,lv-tlv,g2,f1,tuner) + else + return c513000013.synfilter2(pe:GetOwner(),c,lv-tlv,g2,f1,tuner) + end + end + if not pe then + return g1:IsExists(c513000013.synfilter1,1,nil,c,lv,g1,g2,g3) + else + return c513000013.synfilter1(pe:GetOwner(),c,lv,g1,g2) + end +end +function c513000013.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) + local g=Group.CreateGroup() + local g1=nil + local g2=nil + local g3=nil + if mg then + g1=mg:Filter(c513000013.matfilter1,nil,c) + g2=mg:Filter(c513000013.matfilter2,nil,c) + g3=mg:Filter(c513000013.matfilter1,nil,c) + else + g1=Duel.GetMatchingGroup(c513000013.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c513000013.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c513000013.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + g:AddCard(tuner) + local lv1=tuner:GetSynchroLevel(c) + local f1=tuner.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner2=nil + if not pe then + local t2=g1:FilterSelect(tp,c513000013.synfilter2,1,1,tuner,c,lv-lv1,g2,f1,tuner) + tuner2=t2:GetFirst() + else + tuner2=pe:GetOwner() + Group.FromCards(tuner2):Select(tp,1,1,nil) + end + g:AddCard(tuner2) + local lv2=tuner2:GetSynchroLevel(c) + local f2=tuner2.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=g2:FilterSelect(tp,c513000013.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) + g:Merge(m3) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner1=nil + if not pe then + local t1=g1:FilterSelect(tp,c513000013.synfilter1,1,1,nil,c,lv,g1,g2,g3) + tuner1=t1:GetFirst() + else + tuner1=pe:GetOwner() + Group.FromCards(tuner1):Select(tp,1,1,nil) + end + g:AddCard(tuner1) + local lv1=tuner1:GetSynchroLevel(c) + local f1=tuner1.tuner_filter + local t2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if tuner1:IsHasEffect(55863245) then + t2=g3:FilterSelect(tp,c513000013.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) + else + t2=g1:FilterSelect(tp,c513000013.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) + end + local tuner2=t2:GetFirst() + g:AddCard(tuner2) + local lv2=tuner2:GetSynchroLevel(c) + local f2=tuner2.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=g2:FilterSelect(tp,c513000013.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) + g:Merge(m3) + end + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c513000013.atkval(e,c) + return Duel.GetMatchingGroupCount(Card.IsType,c:GetControler(),LOCATION_GRAVE,0,nil,TYPE_TUNER)*500 +end +function c513000013.indval(e,re,tp) + return e:GetHandler():GetControler()~=tp +end +function c513000013.bancon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c513000013.bantg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c513000013.banop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Remove(c,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY)>0 then + c:RegisterFlagEffect(513000013,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + if Duel.GetAttacker() and Duel.SelectYesNo(tp,94) then Duel.NegateAttack() + else + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_REMOVED) + e1:SetCountLimit(1) + e1:SetOperation(c513000013.negop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end + end +end +function c513000013.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(513000013)>0 end +end +function c513000013.retop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.ReturnToField(e:GetHandler()) + end +end +function c513000013.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end diff --git a/script/c513000014.lua b/script/c513000014.lua new file mode 100644 index 00000000..b478b3f0 --- /dev/null +++ b/script/c513000014.lua @@ -0,0 +1,167 @@ +--TG ハルバード・キャノン +function c513000014.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),2) + c:EnableReviveLimit() + --register + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c513000014.regcon) + e1:SetOperation(c513000014.regop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c513000014.valcheck) + e2:SetLabelObject(e2) + c:RegisterEffect(e2) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(35952884,1)) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c513000014.spcon) + e3:SetTarget(c513000014.sptg) + e3:SetOperation(c513000014.spop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_REMOVE) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e5) + --negate activate + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(2061963,0)) + e6:SetCategory(CATEGORY_DISABLE) + e6:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e6:SetType(EFFECT_TYPE_QUICK_O) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EVENT_CHAINING) + e6:SetCondition(c513000014.negcon) + e6:SetTarget(c513000014.negtg) + e6:SetOperation(c513000014.negop) + c:RegisterEffect(e6) +end +function c513000014.valcheck(e,c) + local g=c:GetMaterial() + local ct=g:GetCount() + e:GetLabelObject():SetLabel(ct) +end +function c513000014.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and e:GetLabel()>0 +end +function c513000014.chkfilter(c,label) + return c:GetFlagEffect(label)>0 +end +function c513000014.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=e:GetLabel() + local label=5130014 + while Duel.IsExistingMatchingCard(c513000014.chkfilter,tp,LOCATION_MZONE,0,1,nil,label) do + label=label+1 + end + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e1:SetDescription(aux.Stringid(97836203,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SUMMON) + e1:SetCountLimit(ct,label) + e1:SetCondition(c513000014.discon) + e1:SetTarget(c513000014.distg) + e1:SetOperation(c513000014.disop) + e1:SetReset(RESET_EVENT+0x0ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetDescription(aux.Stringid(97836203,1)) + e2:SetCode(EVENT_FLIP_SUMMON) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetDescription(aux.Stringid(97836203,2)) + e3:SetCode(EVENT_SPSUMMON) + c:RegisterEffect(e3) + c:RegisterFlagEffect(51300014,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c513000014.discon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 +end +function c513000014.distg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c513000014.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) +end +function c513000014.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c513000014.filter(c,e,tp) + return c:IsCode(51447164) and c:IsCanBeSpecialSummoned(e,0,tp,false,true) +end +function c513000014.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000014.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c513000014.spop(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,c513000014.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,true,POS_FACEUP) + end +end +function c513000014.negcon(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + if not re:IsActiveType(TYPE_MONSTER) or ep==tp or e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) + or not Duel.IsChainDisablable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ex and tg~=nil and tc+tg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)-tg:GetCount()==1 then + return true + end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOHAND) + if ex and tg~=nil and tc+tg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)-tg:GetCount()==1 then + return true + end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_REMOVE) + if ex and tg~=nil and tc+tg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)-tg:GetCount()==1 then + return true + end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TODECK) + if ex and tg~=nil and tc+tg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)-tg:GetCount()==1 then + return true + end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_RELEASE) + if ex and tg~=nil and tc+tg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)-tg:GetCount()==1 then + return true + end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE) + if ex and tg~=nil and tc+tg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)-tg:GetCount()==1 then + return true + end + return false +end +function c513000014.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c513000014.negop(e,tp,eg,ep,ev,re,r,rp) + local tc=re:GetHandler() + if Duel.NegateEffect(ev) and tc:IsRelateToEffect(re) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-800) + tc:RegisterEffect(e1) + end +end diff --git a/script/c513000015.lua b/script/c513000015.lua new file mode 100644 index 00000000..3f2dc8d4 --- /dev/null +++ b/script/c513000015.lua @@ -0,0 +1,140 @@ +--TG ブレード・ガンナー +function c513000015.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),1) + c:EnableReviveLimit() + --opponent's turn synchro + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(575512,0)) + e1:SetHintTiming(0,TIMING_END_PHASE+TIMING_MAIN_END) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_EXTRA) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c513000015.syncon) + e1:SetTarget(c513000015.syntg) + e1:SetOperation(c513000015.synop) + c:RegisterEffect(e1) + --Negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51447164,0)) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCondition(c513000015.discon) + e2:SetCost(c513000015.discost) + e2:SetTarget(c513000015.distg) + e2:SetOperation(c513000015.disop) + c:RegisterEffect(e2) + --banish + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(24696097,2)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c513000015.bancon) + e3:SetTarget(c513000015.bantg) + e3:SetOperation(c513000015.banop) + c:RegisterEffect(e3) + --Return + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(24696097,3)) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_REMOVED) + e4:SetCountLimit(1) + e4:SetTarget(c513000015.rettg) + e4:SetOperation(c513000015.retop) + c:RegisterEffect(e4) + --draw + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(98558751,1)) + e5:SetCategory(CATEGORY_DRAW) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e5:SetCode(EVENT_DESTROYED) + e5:SetTarget(c513000015.drtg) + e5:SetOperation(c513000015.drop) + c:RegisterEffect(e5) +end +function c513000015.syncon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetCurrentChain()==0 +end +function c513000015.syntg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsSynchroSummonable(nil) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,tp,LOCATION_EXTRA) +end +function c513000015.synop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SynchroSummon(tp,c,nil) + end +end +function c513000015.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and rp~=tp + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c513000015.discost(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 c513000015.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c513000015.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c513000015.bancon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c513000015.bantg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c513000015.banop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.Remove(c,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY)>0 then + c:RegisterFlagEffect(513000015,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end +end +function c513000015.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(513000015)>0 end +end +function c513000015.retop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.ReturnToField(e:GetHandler()) + end +end +function c513000015.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c513000015.mgfilter(c,e,tp,sync) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x80008)~=0x80008 or c:GetReasonCard()~=sync + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c513000015.drop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) + local mg=c:GetMaterial() + if mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) or c:GetSummonType()~=SUMMON_TYPE_SYNCHRO + or mg:IsExists(c513000015.mgfilter,1,nil,e,tp,c) or not Duel.SelectYesNo(tp,aux.Stringid(32441317,0)) then return end + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c513000016.lua b/script/c513000016.lua new file mode 100644 index 00000000..7aa42497 --- /dev/null +++ b/script/c513000016.lua @@ -0,0 +1,107 @@ +--王家の神殿 +function c513000016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Trap activate in set turn + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_SZONE,0) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(29762407,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c513000016.cost) + e3:SetTarget(c513000016.target) + e3:SetOperation(c513000016.operation) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_ACTIVATE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(0,1) + e4:SetCondition(c513000016.econ) + e4:SetValue(c513000016.elimit) + c:RegisterEffect(e4) + if not c513000016.global_check then + c513000016.global_check=true + c513000016[0]=0 + c513000016[1]=0 + --activate limit + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_CHAINING) + ge1:SetRange(LOCATION_MZONE) + ge1:SetOperation(c513000016.aclimit1) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge2:SetCode(EVENT_CHAIN_NEGATED) + ge2:SetRange(LOCATION_MZONE) + ge2:SetOperation(c513000016.aclimit2) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetOperation(c513000016.clear) + Duel.RegisterEffect(ge3,0) + end +end +function c513000016.cfilter(c) + return c:IsAbleToRemoveAsCost() and c:IsType(TYPE_MONSTER) +end +function c513000016.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000016.cfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.CheckReleaseGroup(tp,nil,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c513000016.cfilter,tp,LOCATION_HAND,0,1,1,nil) + e:SetLabelObject(g:GetFirst()) + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c513000016.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.IsPlayerCanSpecialSummon(tp) end + local tc=e:GetLabelObject() + if tc then + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) + end +end +function c513000016.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or not Duel.IsPlayerCanSpecialSummon(tp) then return end + local tc=e:GetLabelObject() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c513000016.aclimit1(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + c513000016[ep]=c513000016[ep]+1 +end +function c513000016.aclimit2(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + c513000016[ep]=c513000016[ep]-1 +end +function c513000016.clear(e,tp,eg,ep,ev,re,r,rp) + c513000016[0]=0 + c513000016[1]=0 +end +function c513000016.econ(e) + return c513000016[1-e:GetHandlerPlayer()]>=2 +end +function c513000016.elimit(e,te,tp) + return te:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c513000017.lua b/script/c513000017.lua new file mode 100644 index 00000000..7319484e --- /dev/null +++ b/script/c513000017.lua @@ -0,0 +1,90 @@ +--No.101 S・H・Ark Knight +function c513000017.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --material + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(48739166,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c513000017.cost) + e1:SetTarget(c513000017.target) + e1:SetOperation(c513000017.operation) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c513000017.reptg) + c:RegisterEffect(e2) + if not c513000017.global_check then + c513000017.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c513000017.numchk) + Duel.RegisterEffect(ge2,0) + end + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c513000017.indes) + c:RegisterEffect(e3) + if not c513000017.global_check then + c513000017.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c513000017.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c513000017.xyz_number=101 +function c513000017.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c513000017.filter(c) + return c:IsAbleToChangeControler() and not c:IsType(TYPE_TOKEN) +end +function c513000017.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000017.filter,tp,0,LOCATION_MZONE,1,nil) end +end +function c513000017.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectMatchingCard(tp,c513000017.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.HintSelection(g) + if g:GetCount()>0 then + local og=g:GetFirst():GetOverlayGroup() + if og:GetCount()>0 then + Duel.SendtoGrave(og,REASON_RULE) + end + Duel.Overlay(c,g) + end + end +end +function c513000017.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) end + if Duel.SelectYesNo(tp,aux.Stringid(48739166,1)) then + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_EFFECT) + return true + else return false end +end +function c513000017.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,48739166) + Duel.CreateToken(1-tp,48739166) +end +function c513000017.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c513000018.lua b/script/c513000018.lua new file mode 100644 index 00000000..df3128e4 --- /dev/null +++ b/script/c513000018.lua @@ -0,0 +1,98 @@ +--No.16 色の支配者ショック・ルーラー +function c513000018.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,3) + c:EnableReviveLimit() + --act limit + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(54719828,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c513000018.cost) + e1:SetOperation(c513000018.operation) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c513000018.indes) + c:RegisterEffect(e2) + if not c513000018.global_check then + c513000018.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c513000018.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c513000018.xyz_number=16 +function c513000018.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c513000018.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(54719828,1)) + local op=Duel.SelectOption(tp,70,71,72) + local c=e:GetHandler() + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetTargetRange(0,0xff) + e1:SetTarget(c513000018.distarget) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + e1:SetLabel(op) + Duel.RegisterEffect(e1,tp) + --disable effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetOperation(c513000018.disoperation) + e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + e2:SetLabel(op) + Duel.RegisterEffect(e2,tp) + --disable trap monster + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetTargetRange(0,0xff) + e3:SetTarget(c513000018.distarget) + e3:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + e3:SetLabel(op) + Duel.RegisterEffect(e3,tp) +end +function c513000018.distarget(e,c) + local type=0 + if e:GetLabel()==0 then + type=TYPE_MONSTER + elseif e:GetLabel()==1 then + type=TYPE_SPELL + else + type=TYPE_TRAP + end + return c:IsType(type) +end +function c513000018.disoperation(e,tp,eg,ep,ev,re,r,rp) + local type=0 + if e:GetLabel()==0 then + type=TYPE_MONSTER + elseif e:GetLabel()==1 then + type=TYPE_SPELL + else + type=TYPE_TRAP + end + if re:IsActiveType(type) and re:GetHandler():IsControler(1-tp) then + Duel.NegateEffect(ev) + end +end +function c513000018.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,54719828) + Duel.CreateToken(1-tp,54719828) +end +function c513000018.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c513000019.lua b/script/c513000019.lua new file mode 100644 index 00000000..77d614b8 --- /dev/null +++ b/script/c513000019.lua @@ -0,0 +1,42 @@ +--The Unchosen One (Anime) +function c513000019.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c513000019.condition) + e1:SetTarget(c513000019.target) + e1:SetOperation(c513000019.operation) + c:RegisterEffect(e1) +end +function c513000019.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>=2 +end +function c513000019.filter(c,tp) + return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,c) +end +function c513000019.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c513000019.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c513000019.filter,1-tp,LOCATION_MZONE,0,1,nil,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + local g=Duel.SelectTarget(1-tp,c513000019.filter,1-tp,LOCATION_MZONE,0,1,1,nil,tp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,g:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c513000019.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,tc) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if sg:IsExists(Card.IsCanBeSpecialSummoned,1,nil,e,0,tp,false,false) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=sg:FilterSelect(tp,Card.IsCanBeSpecialSummoned,1,1,nil,e,0,tp,false,false) + Duel.BreakEffect() + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end + end + end +end diff --git a/script/c513000020.lua b/script/c513000020.lua new file mode 100644 index 00000000..3b0fb202 --- /dev/null +++ b/script/c513000020.lua @@ -0,0 +1,32 @@ +--Negative Energy Generator +function c513000020.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c513000020.target) + e1:SetOperation(c513000020.operation) + c:RegisterEffect(e1) +end +function c513000020.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) +end +function c513000020.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c513000020.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c513000020.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c513000020.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c513000020.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetBaseAttack()*3) + tc:RegisterEffect(e1) + end +end diff --git a/script/c513000022.lua b/script/c513000022.lua new file mode 100644 index 00000000..e6e8d0d5 --- /dev/null +++ b/script/c513000022.lua @@ -0,0 +1,37 @@ +--THE Supremacy Sun +function c513000022.initial_effect(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c513000022.spr) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(51402908,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_GRAVE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c513000022.spcon) + e3:SetTarget(c513000022.sptg) + e3:SetOperation(c513000022.spop) + c:RegisterEffect(e3) +end +function c513000022.spr(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(51402908,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,2) +end +function c513000022.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetTurnID()~=Duel.GetTurnCount() and c:GetFlagEffect(51402908)>0 +end +function c513000022.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) + e:GetHandler():ResetFlagEffect(51402908) +end +function c513000022.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c513000023.lua b/script/c513000023.lua new file mode 100644 index 00000000..1e4b5220 --- /dev/null +++ b/script/c513000023.lua @@ -0,0 +1,26 @@ +--茫漠の死者 +function c513000023.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c513000023.spcon) + 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_SET_ATTACK) + e2:SetValue(c513000023.value) + c:RegisterEffect(e2) +end +function c513000023.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.GetLP(c:GetControler())<1000 +end +function c513000023.value(e,c) + return Duel.GetLP(1-e:GetHandlerPlayer())-100 +end diff --git a/script/c513000024.lua b/script/c513000024.lua new file mode 100644 index 00000000..e943f701 --- /dev/null +++ b/script/c513000024.lua @@ -0,0 +1,79 @@ +--E・HERO Core +function c513000024.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsSetCard,0x3008),3,true) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95486586,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_START) + e2:SetCondition(c513000024.atkcon) + e2:SetOperation(c513000024.atkop) + c:RegisterEffect(e2) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(22587018,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCondition(aux.bdcon) + e1:SetTarget(c513000024.target) + e1:SetOperation(c513000024.operation) + c:RegisterEffect(e1) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(95486586,2)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DESTROYED) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetTarget(c513000024.sptg) + e4:SetOperation(c513000024.spop) + c:RegisterEffect(e4) +end +function c513000024.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetBattleTarget() +end +function c513000024.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c513000024.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_ONFIELD,2,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c513000024.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_ONFIELD,nil) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=g:Select(tp,2,2,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + end +end +function c513000024.spfilter(c,e,tp) + return c:IsCode(74711057) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c513000024.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000024.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c513000024.spop(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,c513000024.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c513000025.lua b/script/c513000025.lua new file mode 100644 index 00000000..cbdfd486 --- /dev/null +++ b/script/c513000025.lua @@ -0,0 +1,26 @@ +--オーロラ・ドロー +function c513000025.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c513000025.condition) + e1:SetTarget(c513000025.target) + e1:SetOperation(c513000025.activate) + c:RegisterEffect(e1) +end +function c513000025.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,e:GetHandler()) +end +function c513000025.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c513000025.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c513000026.lua b/script/c513000026.lua new file mode 100644 index 00000000..dd503e6f --- /dev/null +++ b/script/c513000026.lua @@ -0,0 +1,19 @@ +--棺桶売り +function c513000026.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c513000026.operation) + c:RegisterEffect(e2) +end +function c513000026.operation(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(Card.IsControler,nil,1-tp) + Duel.Damage(1-tp,ct*700,REASON_EFFECT) +end diff --git a/script/c513000027.lua b/script/c513000027.lua new file mode 100644 index 00000000..13b7b59c --- /dev/null +++ b/script/c513000027.lua @@ -0,0 +1,65 @@ +--Ebon Sun +function c513000027.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --gain LP + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c513000027.rectg) + e2:SetOperation(c513000027.recop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(87046457,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_SZONE) + e3:SetTarget(c513000027.sptg) + e3:SetOperation(c513000027.spop) + c:RegisterEffect(e3) +end +function c513000027.rectg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return eg:IsExists(Card.IsType,1,nil,TYPE_MONSTER) end + local g=eg:Filter(Card.IsType,nil,TYPE_MONSTER) + local sum=g:GetSum(Card.GetAttack) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(sum) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,sum) +end +function c513000027.recop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) + end +end +function c513000027.filter(c,e,tp) + return c:IsPreviousLocation(LOCATION_GRAVE) and (not e or c:IsRelateToEffect(e)) + and c:GetPreviousControler()==tp +end +function c513000027.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c513000027.filter,1,nil,nil,tp) end + Duel.SetTargetCard(eg) +end +function c513000027.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=eg:Filter(c513000027.filter,nil,e,tp) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c513000028.lua b/script/c513000028.lua new file mode 100644 index 00000000..0bea2ce9 --- /dev/null +++ b/script/c513000028.lua @@ -0,0 +1,70 @@ +--アンドロ・スフィンクス +function c513000028.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_DECK) + e2:SetCondition(c513000028.spcon) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(15013468,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c513000028.damcon) + e3:SetTarget(c513000028.damtg) + e3:SetOperation(c513000028.damop) + c:RegisterEffect(e3) + --cannot attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c513000028.atklimit) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c513000028.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c513000028.cfilter(c) + return c:IsFaceup() and c:IsCode(53569894) +end +function c513000028.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000028.cfilter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end +function c513000028.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bit.band(bc:GetBattlePosition(),POS_DEFENSE)~=0 +end +function c513000028.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetHandler():GetBattleTarget():GetAttack()/2 + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c513000028.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c513000029.lua b/script/c513000029.lua new file mode 100644 index 00000000..216afc7e --- /dev/null +++ b/script/c513000029.lua @@ -0,0 +1,64 @@ +--スフィンクス・テーレイア +function c513000029.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_DECK) + e2:SetCondition(c513000029.spcon) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLE_START) + e3:SetRange(LOCATION_MZONE) + e3:SetOperation(c513000029.atkop) + c:RegisterEffect(e3) + --cannot attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetOperation(c513000029.atklimit) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c513000029.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c513000029.cfilter(c) + return c:IsFaceup() and c:IsCode(53569894) +end +function c513000029.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000029.cfilter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end +function c513000029.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x57a0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x57a0000) + tc:RegisterEffect(e2) + end +end diff --git a/script/c513000030.lua b/script/c513000030.lua new file mode 100644 index 00000000..7fcf7feb --- /dev/null +++ b/script/c513000030.lua @@ -0,0 +1,74 @@ +--スフィンクス・アンドロジュネス +function c513000030.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(87997872,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_HAND+LOCATION_DECK) + e2:SetProperty(EFFECT_FLAG_CHAIN_UNIQUE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c513000030.spcon) + e2:SetCost(c513000030.cost) + e2:SetTarget(c513000030.sptg) + e2:SetOperation(c513000030.spop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(87997872,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCost(c513000030.cost) + e3:SetOperation(c513000030.atkop) + c:RegisterEffect(e3) +end +function c513000030.cfilter(c,tp,code) + return c:IsCode(code) and c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) +end +function c513000030.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c513000030.cfilter,1,nil,tp,15013468) + and eg:IsExists(c513000030.cfilter,1,nil,tp,51402177) +end +function c513000030.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 c513000030.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + if e:GetHandler():IsLocation(LOCATION_DECK) then + Duel.ConfirmCards(1-tp,e:GetHandler()) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c513000030.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c513000030.afilter(c) + return c:GetAttack()>0 +end +function c513000030.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local g=Duel.GetMatchingGroup(c513000030.afilter,tp,LOCATION_GRAVE,0,nil) + local atk=0 + local tg=g:GetFirst() + while tg do + atk=atk+tg:GetAttack() + tg=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + if Duel.GetTurnPlayer()==tp then + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + c:RegisterEffect(e1) + end +end diff --git a/script/c513000031.lua b/script/c513000031.lua new file mode 100644 index 00000000..121ebd8b --- /dev/null +++ b/script/c513000031.lua @@ -0,0 +1,170 @@ +--シューティング・クェーサー・ドラゴン +function c513000031.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),2) + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c513000031.efilter) + c:RegisterEffect(e1) + --multi attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c513000031.mtcon) + e2:SetOperation(c513000031.mtop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MATERIAL_CHECK) + e3:SetValue(c513000031.valcheck) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --Special Summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(35952884,1)) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c513000031.sumcon) + e4:SetTarget(c513000031.sumtg) + e4:SetOperation(c513000031.sumop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_REMOVE) + c:RegisterEffect(e5) + local e6=e4:Clone() + e6:SetCode(EVENT_TO_DECK) + c:RegisterEffect(e6) + --destroy + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_DAMAGE_STEP_END) + e7:SetRange(LOCATION_MZONE) + e7:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e7:SetCondition(c513000031.descon) + e7:SetOperation(c513000031.desop) + c:RegisterEffect(e7) + --reduce + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD) + e8:SetCode(EFFECT_CHANGE_DAMAGE) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetRange(LOCATION_MZONE) + e8:SetTargetRange(1,0) + e8:SetCondition(c513000031.damcon) + e8:SetValue(c513000031.damval) + c:RegisterEffect(e8) + local e9=e8:Clone() + e9:SetCode(EFFECT_NO_EFFECT_DAMAGE) + c:RegisterEffect(e9) +end +function c513000031.valcheck(e,c) + local g=c:GetMaterial() + local ct=g:FilterCount(Card.IsType,nil,TYPE_SYNCHRO) + e:GetLabelObject():SetLabel(ct) +end +function c513000031.mtcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and e:GetLabel()>0 +end +function c513000031.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=e:GetLabel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(ct-1) + c:RegisterEffect(e1) +end +function c513000031.sumcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c513000031.filter(c,e,tp) + return c:IsCode(24696097) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,false,false) +end +function c513000031.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c513000031.sumop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c513000031.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp):GetFirst() + if tc then + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + end +end +function c513000031.descon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d +end +function c513000031.desfilter(c,ca) + return not c:IsStatus(STATUS_BATTLE_DESTROYED) and (not ca or ca==c) +end +function c513000031.desop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not a:IsStatus(STATUS_BATTLE_DESTROYED) or not d:IsStatus(STATUS_BATTLE_DESTROYED) then + local g=Group.FromCards(a,d) + if a:IsAttackPos() and d:IsAttackPos() then + if a:GetAttack()==d:GetAttack() then + g=g:Filter(c513000031.desfilter,nil,nil) + elseif a:GetAttack()d:GetAttack() then + g=g:Filter(c513000031.desfilter,nil,d) + else + g=Group.CreateGroup() + end + elseif a:IsAttackPos() and d:IsDefensePos() then + if a:GetAttack()>d:GetDefense() then + g=g:Filter(c513000031.desfilter,nil,d) + else + g=Group.CreateGroup() + end + else + g=Group.CreateGroup() + end + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_CHAIN) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetReset(RESET_CHAIN) + tc:RegisterEffect(e2) + tc:SetStatus(STATUS_BATTLE_DESTROYED,true) + tc=g:GetNext() + end + Duel.Destroy(g,REASON_BATTLE) + end +end +function c513000031.damcon(e) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 +end +function c513000031.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 end + return val +end +function c513000031.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() and re:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c513000032.lua b/script/c513000032.lua new file mode 100644 index 00000000..6d3b8e7b --- /dev/null +++ b/script/c513000032.lua @@ -0,0 +1,47 @@ +--N・ブラック・パンサー +function c513000032.initial_effect(c) + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(43237273,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c513000032.target) + e1:SetOperation(c513000032.operation) + c:RegisterEffect(e1) +end +function c513000032.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c513000032.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsType(TYPE_TOKEN) then + local code=tc:GetOriginalCode() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetCode(EFFECT_ADD_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + if not tc:IsType(TYPE_TRAPMONSTER) then + c:CopyEffect(code,RESET_EVENT+0x1ff0000,1) + end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetReset(RESET_EVENT+0x1ff0000) + e2:SetValue(tc:GetAttack()) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_DEFENSE_FINAL) + e3:SetReset(RESET_EVENT+0x1ff0000) + e3:SetValue(tc:GetDefense()) + c:RegisterEffect(e3) + end +end diff --git a/script/c513000033.lua b/script/c513000033.lua new file mode 100644 index 00000000..57c34386 --- /dev/null +++ b/script/c513000033.lua @@ -0,0 +1,67 @@ +--フリッグのリンゴ +function c513000033.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c513000033.condition) + e1:SetTarget(c513000033.target) + e1:SetOperation(c513000033.activate) + c:RegisterEffect(e1) + if not c513000033.global_check then + c513000033.global_check=true + c513000033[0]=0 + c513000033[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c513000033.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c513000033.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c513000033.checkop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then + c513000033[tp]=c513000033[tp]+ev + end + if ep==1-tp then + c513000033[1-tp]=c513000033[1-tp]+ev + end +end +function c513000033.clear(e,tp,eg,ep,ev,re,r,rp) + c513000033[0]=0 + c513000033[1]=0 +end +function c513000033.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c513000033.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,42671152,0,0x4011,-2,-2,1,RACE_FIEND,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,c513000033[tp]) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c513000033.activate(e,tp,eg,ep,ev,re,r,rp) + local rec=Duel.Recover(tp,c513000033[tp],REASON_EFFECT) + if rec~=c513000033[tp] or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,42671152,0,0x4011,-2,-2,1,RACE_FIEND,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,42671152) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c513000033[tp]) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + token:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() +end diff --git a/script/c513000034.lua b/script/c513000034.lua new file mode 100644 index 00000000..36bc30b0 --- /dev/null +++ b/script/c513000034.lua @@ -0,0 +1,33 @@ +--Transcendental Ruin +function c513000034.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c513000034.condition) + e1:SetTarget(c513000034.target) + e1:SetOperation(c513000034.activate) + c:RegisterEffect(e1) +end +function c513000034.condition(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc>0 +end +function c513000034.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)>0 end +end +function c513000034.activate(e,tp,eg,ep,ev,re,r,rp) + local op=re:GetOperation() + Duel.ChangeChainOperation(ev,c513000034.repop(1-tp,op)) +end +function c513000034.repop(p,op) + return function (e,tp,eg,ep,ev,re,r,rp) + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + e:GetHandler():CancelToGrave(false) + end + if op then op(e,tp,eg,ep,ev,re,r,rp) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,p,LOCATION_ONFIELD,0,nil) + Duel.Destroy(sg,REASON_EFFECT) + end +end diff --git a/script/c513000035.lua b/script/c513000035.lua new file mode 100644 index 00000000..c6433ce9 --- /dev/null +++ b/script/c513000035.lua @@ -0,0 +1,108 @@ +--TG カタパルト・ドラゴン +function c513000035.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64898834,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c513000035.sptg) + e1:SetOperation(c513000035.spop) + c:RegisterEffect(e1) + --Type Machine + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_ADD_RACE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(RACE_MACHINE) + c:RegisterEffect(e2) + --Add to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000073,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c513000035.stg) + e3:SetOperation(c513000035.sop) + c:RegisterEffect(e3) + --Half stats + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(95100034,4)) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_CHAINING) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c513000035.discon) + e5:SetOperation(c513000035.disop) + c:RegisterEffect(e5) +end +function c513000035.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000035.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000035.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c513000035.spop(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,c513000035.filter,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 c513000035.sfilter(c) + return c:IsSetCard(0x27) and c:IsAbleToHand() +end +function c513000035.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000035.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c513000035.sop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tc=Duel.SelectMatchingCard(tp,c513000035.sfilter,tp,LOCATION_DECK,0,1,1,nil):GetFirst() + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + --sumlimit + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + tc:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + tc:RegisterEffect(e3) + end +end +function c513000035.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + return re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) and Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):IsContains(c) +end +function c513000035.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c:GetBaseAttack()/2) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(c:GetBaseDefense()/2) + c:RegisterEffect(e2) + end +end diff --git a/script/c513000036.lua b/script/c513000036.lua new file mode 100644 index 00000000..d7341273 --- /dev/null +++ b/script/c513000036.lua @@ -0,0 +1,106 @@ +--TG ジェット・ファルコン +function c513000036.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(37300735,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c513000036.damcon) + e1:SetTarget(c513000036.damtg) + e1:SetOperation(c513000036.damop) + c:RegisterEffect(e1) + --Type Machine + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_ADD_RACE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(RACE_MACHINE) + c:RegisterEffect(e2) + --Add to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(511000073,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c513000036.stg) + e3:SetOperation(c513000036.sop) + c:RegisterEffect(e3) + --Half stats + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(95100034,4)) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_CHAINING) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c513000036.discon) + e5:SetOperation(c513000036.disop) + c:RegisterEffect(e5) +end +function c513000036.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO +end +function c513000036.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c513000036.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c513000036.sfilter(c) + return c:IsSetCard(0x27) and c:IsAbleToHand() +end +function c513000036.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000036.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c513000036.sop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tc=Duel.SelectMatchingCard(tp,c513000036.sfilter,tp,LOCATION_DECK,0,1,1,nil):GetFirst() + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + --sumlimit + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + tc:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + tc:RegisterEffect(e3) + end +end +function c513000036.discon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + return re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) and Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):IsContains(c) +end +function c513000036.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c:GetBaseAttack()/2) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(c:GetBaseDefense()/2) + c:RegisterEffect(e2) + end +end diff --git a/script/c513000037.lua b/script/c513000037.lua new file mode 100644 index 00000000..d6329937 --- /dev/null +++ b/script/c513000037.lua @@ -0,0 +1,72 @@ +--遺言の札 +function c513000037.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(511001265) + e1:SetCondition(c513000037.condition) + e1:SetTarget(c513000037.target) + e1:SetOperation(c513000037.activate) + c:RegisterEffect(e1) + if not c513000037.global_check then + c513000037.global_check=true + --register + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c513000037.operation) + Duel.RegisterEffect(e2,0) + end +end +function c513000037.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + if tc:GetFlagEffect(511001265)==0 then + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_MZONE) + e1:SetLabel(tc:GetAttack()) + e1:SetOperation(c513000037.op) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001265,RESET_EVENT+0x1fe0000,0,1) + end + tc=g:GetNext() + end +end +function c513000037.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetLabel()==c:GetAttack() then return end + local val=0 + if e:GetLabel()>c:GetAttack() then + val=e:GetLabel()-c:GetAttack() + else + val=c:GetAttack()-e:GetLabel() + end + Duel.RaiseEvent(c,511001265,re,REASON_EFFECT,rp,tp,val) + e:SetLabel(c:GetAttack()) +end +function c513000037.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ec:IsControler(tp) and ev>0 +end +function c513000037.target(e,tp,eg,ep,ev,re,r,rp,chk) + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if chk==0 then return hg:GetCount()<5 and Duel.IsPlayerCanDraw(tp,5-hg:GetCount()) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(5-hg:GetCount()) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,5-hg:GetCount()) +end +function c513000037.activate(e,tp,eg,ep,ev,re,r,rp) + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if hg:GetCount()<5 then + Duel.Draw(tp,5-hg:GetCount(),REASON_EFFECT) + end +end diff --git a/script/c513000038.lua b/script/c513000038.lua new file mode 100644 index 00000000..27b1dae9 --- /dev/null +++ b/script/c513000038.lua @@ -0,0 +1,61 @@ +--ライオウ +function c513000038.initial_effect(c) + --disable search + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_TO_HAND) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_DECK) + c:RegisterEffect(e1) + --cannot draw + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_DRAW) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,1) + e2:SetCondition(c513000038.con) + c:RegisterEffect(e2) + --disable spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e3:SetDescription(aux.Stringid(71564252,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_SPSUMMON) + e3:SetCondition(c513000038.condition) + e3:SetCost(c513000038.cost) + e3:SetTarget(c513000038.target) + e3:SetOperation(c513000038.operation) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,1) + e4:SetTarget(c513000038.sumlimit) + c:RegisterEffect(e4) +end +function c513000038.con(e) + return Duel.GetCurrentPhase()~=PHASE_DRAW +end +function c513000038.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep and eg:GetCount()==1 and Duel.GetCurrentChain()==0 +end +function c513000038.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c513000038.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c513000038.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) +end +function c513000038.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsLocation(LOCATION_DECK) +end diff --git a/script/c513000039.lua b/script/c513000039.lua new file mode 100644 index 00000000..01c1608f --- /dev/null +++ b/script/c513000039.lua @@ -0,0 +1,92 @@ +--時械神メタイオン +function c513000039.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c513000039.damop) + c:RegisterEffect(e1) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + --to hand + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(74530899,1)) + e6:SetCategory(CATEGORY_TOHAND+CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetCountLimit(1) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c513000039.thcon) + e6:SetTarget(c513000039.thtg) + e6:SetOperation(c513000039.thop) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(74530899,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000039.tdcon) + e7:SetTarget(c513000039.tdtg) + e7:SetOperation(c513000039.tdop) + c:RegisterEffect(e7) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000039.sumlimit) + c:RegisterEffect(e9) +end +function c513000039.damop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp and e:GetHandler():IsPosition(POS_FACEUP_ATTACK) and Duel.SelectYesNo(tp,aux.Stringid(93816465,1)) then + Duel.ChangeBattleDamage(tp,0) + end +end +function c513000039.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 +end +function c513000039.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c513000039.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + if g:GetCount()==0 then return end + local sg=g:Select(tp,1,10,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_HAND+LOCATION_EXTRA) + Duel.Damage(1-tp,ct*300,REASON_EFFECT) +end +function c513000039.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000039.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000039.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000039.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000040.lua b/script/c513000040.lua new file mode 100644 index 00000000..87445e6c --- /dev/null +++ b/script/c513000040.lua @@ -0,0 +1,79 @@ +--時械神 カミオン +function c513000040.initial_effect(c) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c513000040.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --mon to deck + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TODECK+CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetDescription(aux.Stringid(513000003,0)) + e6:SetCode(EVENT_BATTLED) + e6:SetTarget(c513000040.tg) + e6:SetOperation(c513000040.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(512000003,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000040.tdcon) + e7:SetTarget(c513000040.tdtg) + e7:SetOperation(c513000040.tdop) + c:RegisterEffect(e7) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000040.sumlimit) + c:RegisterEffect(e9) +end +function c513000040.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c513000040.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,sg:GetCount()*500) +end +function c513000040.op(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,nil) + local ct=Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + Duel.Damage(1-tp,ct*500,REASON_EFFECT) +end +function c513000040.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000040.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000040.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000040.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000041.lua b/script/c513000041.lua new file mode 100644 index 00000000..e7af5fb0 --- /dev/null +++ b/script/c513000041.lua @@ -0,0 +1,101 @@ +--時械神 ラツィオン +function c513000041.initial_effect(c) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c513000041.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --s/t to deck + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetDescription(aux.Stringid(513000003,0)) + e6:SetCode(EVENT_BATTLED) + e6:SetTarget(c513000041.tg) + e6:SetOperation(c513000041.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(512000003,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000041.tdcon) + e7:SetTarget(c513000041.tdtg) + e7:SetOperation(c513000041.tdop) + c:RegisterEffect(e7) + --damage + local e8=Effect.CreateEffect(c) + e8:SetCategory(CATEGORY_DAMAGE) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e8:SetRange(LOCATION_MZONE) + e8:SetCode(EVENT_DRAW) + e8:SetCondition(c513000041.drcon) + e8:SetTarget(c513000041.drtg) + e8:SetOperation(c513000041.drop) + c:RegisterEffect(e8) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000041.sumlimit) + c:RegisterEffect(e9) +end +function c513000041.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c513000041.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_MZONE+LOCATION_GRAVE,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c513000041.op(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_MZONE+LOCATION_GRAVE,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) +end +function c513000041.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000041.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000041.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000041.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_DRAW +end +function c513000041.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c513000041.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c513000041.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000042.lua b/script/c513000042.lua new file mode 100644 index 00000000..4bc971c5 --- /dev/null +++ b/script/c513000042.lua @@ -0,0 +1,83 @@ +--時械神 ハイロン +function c513000042.initial_effect(c) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c513000042.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --difference damage + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetDescription(aux.Stringid(513000003,0)) + e6:SetCode(EVENT_BATTLED) + e6:SetCondition(c513000042.con) + e6:SetTarget(c513000042.tg) + e6:SetOperation(c513000042.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(512000003,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000042.tdcon) + e7:SetTarget(c513000042.tdtg) + e7:SetOperation(c513000042.tdop) + c:RegisterEffect(e7) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000042.sumlimit) + c:RegisterEffect(e9) +end +function c513000042.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c513000042.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)~=Duel.GetLP(1-tp) +end +function c513000042.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=Duel.GetLP(1-tp)-Duel.GetLP(tp) + if dam<0 then dam=Duel.GetLP(tp)-Duel.GetLP(1-tp) end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c513000042.op(e,tp,eg,ep,ev,re,r,rp) + local dam=Duel.GetLP(1-tp)-Duel.GetLP(tp) + if dam<0 then dam=Duel.GetLP(tp)-Duel.GetLP(1-tp) end + Duel.Damage(1-tp,dam,REASON_EFFECT) +end +function c513000042.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000042.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000042.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000042.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000043.lua b/script/c513000043.lua new file mode 100644 index 00000000..2d99e1d9 --- /dev/null +++ b/script/c513000043.lua @@ -0,0 +1,77 @@ +--時械神 ガブリオン +function c513000043.initial_effect(c) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c513000043.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --todeck + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetDescription(aux.Stringid(513000003,0)) + e6:SetCode(EVENT_BATTLED) + e6:SetTarget(c513000043.tg) + e6:SetOperation(c513000043.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(512000003,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000043.tdcon) + e7:SetTarget(c513000043.tdtg) + e7:SetOperation(c513000043.tdop) + c:RegisterEffect(e7) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000043.sumlimit) + c:RegisterEffect(e9) +end +function c513000043.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c513000043.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c513000043.op(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) +end +function c513000043.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000043.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000043.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000043.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000044.lua b/script/c513000044.lua new file mode 100644 index 00000000..2e6b6f35 --- /dev/null +++ b/script/c513000044.lua @@ -0,0 +1,73 @@ +--時械神 サディオン +function c513000044.initial_effect(c) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c513000044.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --4000 lp + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetDescription(aux.Stringid(513000003,0)) + e6:SetCode(EVENT_BATTLED) + e6:SetCondition(c513000044.con) + e6:SetOperation(c513000044.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(512000003,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000044.tdcon) + e7:SetTarget(c513000044.tdtg) + e7:SetOperation(c513000044.tdop) + c:RegisterEffect(e7) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000044.sumlimit) + c:RegisterEffect(e9) +end +function c513000044.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c513000044.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<4000 +end +function c513000044.op(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(tp,4000,REASON_EFFECT) +end +function c513000044.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000044.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000044.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000044.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000045.lua b/script/c513000045.lua new file mode 100644 index 00000000..c07d6f4c --- /dev/null +++ b/script/c513000045.lua @@ -0,0 +1,78 @@ +--時械神 ミチオン +function c513000045.initial_effect(c) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c513000045.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --half damage + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetDescription(aux.Stringid(513000003,0)) + e6:SetCode(EVENT_BATTLED) + e6:SetTarget(c513000045.tg) + e6:SetOperation(c513000045.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(512000003,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000045.tdcon) + e7:SetTarget(c513000045.tdtg) + e7:SetOperation(c513000045.tdop) + c:RegisterEffect(e7) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000045.sumlimit) + c:RegisterEffect(e9) +end +function c513000045.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c513000045.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,Duel.GetLP(1-tp)/2) +end +function c513000045.op(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,Duel.GetLP(p)/2,REASON_EFFECT) +end +function c513000045.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000045.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000045.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000045.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000046.lua b/script/c513000046.lua new file mode 100644 index 00000000..c63d94e5 --- /dev/null +++ b/script/c513000046.lua @@ -0,0 +1,38 @@ +--虚无械アイン +function c513000046.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c513000046.condition) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_END_PHASE+TIMING_DAMAGE_STEP) + c:RegisterEffect(e1) + --reduce tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DECREASE_TRIBUTE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_HAND,0) + e2:SetCondition(c513000046.con) + e2:SetTarget(c513000046.filter) + e2:SetValue(0x20002) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetValue(0) + c:RegisterEffect(e3) +end +function c513000046.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c513000046.con(e) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)==0 +end +function c513000046.filter(e,c) + return c:GetLevel()==10 +end diff --git a/script/c513000047.lua b/script/c513000047.lua new file mode 100644 index 00000000..560d9e2d --- /dev/null +++ b/script/c513000047.lua @@ -0,0 +1,76 @@ +--無限械アイン・ソフ +function c513000047.initial_effect(c) + --Activate to Grave + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_END_PHASE+TIMING_DAMAGE_STEP) + e1:SetCondition(c513000047.condition) + e1:SetCost(c513000047.cost) + e1:SetTarget(c513000047.target) + c:RegisterEffect(e1) + --your turn + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCondition(c513000047.spcon) + e2:SetTarget(c513000047.sptg) + e2:SetOperation(c513000047.spop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetValue(0) + c:RegisterEffect(e3) +end +function c513000047.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c513000047.costfilter(c) + return c:IsFaceup() and c:IsCode(100000012) and c:IsAbleToGraveAsCost() +end +function c513000047.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000047.costfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c513000047.costfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c513000047.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c513000047.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetOperation(c513000047.spop) + c513000047.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c513000047.spcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c513000047.spfilter(c,e,tp) + return c:IsLevelAbove(10) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000047.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000047.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c513000047.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if not e:GetHandler():IsRelateToEffect(e) or ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c513000047.spfilter,tp,LOCATION_HAND,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c513000048.lua b/script/c513000048.lua new file mode 100644 index 00000000..20904fc5 --- /dev/null +++ b/script/c513000048.lua @@ -0,0 +1,26 @@ +--時械巫女 +function c513000048.initial_effect(c) + c:EnableUnsummonable() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c513000048.spcon) + c:RegisterEffect(e1) + --double tribute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DOUBLE_TRIBUTE) + e2:SetValue(c513000048.condition) + c:RegisterEffect(e2) +end +function c513000048.condition(e,c) + return c:IsRace(RACE_FAIRY) +end +function c513000048.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end diff --git a/script/c513000049.lua b/script/c513000049.lua new file mode 100644 index 00000000..3eda3bd8 --- /dev/null +++ b/script/c513000049.lua @@ -0,0 +1,79 @@ +--時械神 サンダイオン +function c513000049.initial_effect(c) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c513000049.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --4000 damage + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetDescription(aux.Stringid(513000003,0)) + e6:SetCode(EVENT_BATTLED) + e6:SetTarget(c513000049.tg) + e6:SetOperation(c513000049.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(512000003,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000049.tdcon) + e7:SetTarget(c513000049.tdtg) + e7:SetOperation(c513000049.tdop) + c:RegisterEffect(e7) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000049.sumlimit) + c:RegisterEffect(e9) +end +function c513000049.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c513000049.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(4000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,4000) +end +function c513000049.op(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c513000049.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000049.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000049.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000049.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000050.lua b/script/c513000050.lua new file mode 100644 index 00000000..4dac03c3 --- /dev/null +++ b/script/c513000050.lua @@ -0,0 +1,82 @@ +--時械神 ラフィオン +function c513000050.initial_effect(c) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCondition(c513000050.damcon) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e5) + --half damage + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TOHAND+CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetDescription(aux.Stringid(513000003,0)) + e6:SetCode(EVENT_BATTLED) + e6:SetTarget(c513000050.tg) + e6:SetOperation(c513000050.op) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(512000003,2)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_PHASE+PHASE_STANDBY) + e7:SetProperty(EFFECT_FLAG_REPEAT) + e7:SetCountLimit(1) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c513000050.tdcon) + e7:SetTarget(c513000050.tdtg) + e7:SetOperation(c513000050.tdop) + c:RegisterEffect(e7) + --disable summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_MZONE) + e9:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetTargetRange(1,0) + e9:SetTarget(c513000050.sumlimit) + c:RegisterEffect(e9) +end +function c513000050.damcon(e) + return e:GetHandler():IsAttackPos() +end +function c513000050.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return bc end + if bc:IsRelateToBattle() then + Duel.SetOperationInfo(0,CATEGORY_TOHAND,bc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,bc:GetAttack()) + end +end +function c513000050.op(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + if bc and bc:IsRelateToBattle() and Duel.SendtoHand(bc,nil,REASON_EFFECT)>0 then + Duel.Damage(1-tp,bc:GetAttack(),REASON_EFFECT) + end +end +function c513000050.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000050.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000050.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:IsAbleToDeck() then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end +function c513000050.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return not se:GetHandler():IsCode(100000013) and not se:GetHandler():IsCode(100000014) +end diff --git a/script/c513000051.lua b/script/c513000051.lua new file mode 100644 index 00000000..d1eebf37 --- /dev/null +++ b/script/c513000051.lua @@ -0,0 +1,178 @@ +--無限光アイン・ソフ・オウル +function c513000051.initial_effect(c) + --Activate to Grave + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c513000051.cost) + e1:SetTarget(c513000051.target) + c:RegisterEffect(e1) + --swarm + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(102380,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCondition(c513000051.spcon) + e2:SetTarget(c513000051.sptg) + e2:SetOperation(c513000051.spop) + c:RegisterEffect(e2) + --cannot trigger + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetTargetRange(1,0) + e3:SetCondition(c513000051.accon) + e3:SetValue(c513000051.aclimit) + c:RegisterEffect(e3) + --sp summon sephylon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(2407147,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c513000051.sephcon) + e4:SetCost(c513000051.sephcost) + e4:SetTarget(c513000051.sephtg) + e4:SetOperation(c513000051.sephop) + c:RegisterEffect(e4) + if not c513000051.global_check then + c513000051.global_check=true + c513000051[0]=0 + c513000051[1]=0 + c513000051[2]={} + c513000051[3]={} + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c513000051.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + Duel.RegisterEffect(ge2,0) + local ge3=ge1:Clone() + ge3:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(ge3,0) + end +end +function c513000051.costfilter(c) + return c:IsFaceup() and c:IsCode(100000013) and c:IsAbleToGraveAsCost() +end +function c513000051.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000051.costfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c513000051.costfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c513000051.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c513000051.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetOperation(c513000051.spop) + c513000051.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c513000051.spcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c513000051.spfilter(c,e,tp) + return c:IsLevelAbove(10) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000051.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000051.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c513000051.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if not e:GetHandler():IsRelateToEffect(e) or ft<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c513000051.spfilter,tp,LOCATION_HAND,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c513000051.accon(e) + return Duel.GetTurnPlayer()==e:GetHandlerPlayer() and Duel.GetCurrentPhase()==PHASE_STANDBY +end +function c513000051.aclimit(e,re,tp) + local rc=re:GetHandler() + return re:GetActivateLocation()==LOCATION_MZONE and (rc:IsSetCard(0x4a) or rc:IsCode(74530899)) and not rc:IsImmuneToEffect(e) +end +function c513000051.cfilter(c,tp) + return (c:IsSetCard(0x4a) or c:IsCode(74530899) or c:IsCode(8967776)) and c:IsFaceup() and c:GetSummonPlayer()==tp +end +function c513000051.checkop(e,tp,eg,ep,ev,re,r,rp) + local g1=eg:Filter(c513000051.cfilter,nil,tp) + local g2=eg:Filter(c513000051.cfilter,nil,1-tp) + local tc1=g1:GetFirst() + while tc1 do + if c513000051[tp]==0 then + c513000051[2+tp][1]=tc1:GetCode() + c513000051[tp]=c513000051[tp]+1 + else + local chk=true + for i=1,c513000051[tp]+1 do + if c513000051[2+tp][i]==tc1:GetCode() then + chk=false + end + end + if chk then + c513000051[2+tp][c513000051[tp]+1]=tc1:GetCode() + c513000051[tp]=c513000051[tp]+1 + end + end + tc1=g1:GetNext() + end + while tc2 do + if c513000051[1-tp]==0 then + c513000051[2+1-tp][1]=tc2:GetCode() + c513000051[1-tp]=c513000051[1-tp]+1 + else + local chk=true + for i=1,c513000051[1-tp]+1 do + if c513000051[2+1-tp][i]==tc2:GetCode() then + chk=false + end + end + if chk then + c513000051[2+1-tp][c513000051[1-tp]+1]=tc2:GetCode() + c513000051[1-tp]=c513000051[1-tp]+1 + end + end + tc2=g2:GetNext() + end +end +function c513000051.sephcon(e,tp,eg,ep,ev,re,r,rp) + return c513000051[tp]>=10 +end +function c513000051.sephcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c513000051.filter(c,e,tp) + return c:IsCode(8967776) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) + and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c513000051.sephtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000051.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c513000051.sephop(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,c513000051.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c513000052.lua b/script/c513000052.lua new file mode 100644 index 00000000..82c3a8e4 --- /dev/null +++ b/script/c513000052.lua @@ -0,0 +1,158 @@ +--究極時械神セフィロン +function c513000052.initial_effect(c) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c513000052.splimit) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(8967776,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c513000052.sptg) + e2:SetOperation(c513000052.spop) + c:RegisterEffect(e2) + --attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c513000052.atkval) + c:RegisterEffect(e3) + --disable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_BATTLE_START) + e4:SetOperation(c513000052.disop) + c:RegisterEffect(e4) + --0 damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e5:SetCondition(c513000052.damcon) + e5:SetOperation(c513000052.damop) + c:RegisterEffect(e5) + -- + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_CHAIN_SOLVING) + e6:SetRange(LOCATION_MZONE) + e6:SetCondition(c513000052.damcon2) + e6:SetOperation(c513000052.damop) + c:RegisterEffect(e6) +end +function c513000052.splimit(e,se,sp,st) + return se:GetHandler():IsCode(100000014) +end +function c513000052.filter(c,e,tp) + return (c:IsSetCard(0x4a) or c:IsCode(74530899) or c:IsCode(8967776)) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c513000052.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000052.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c513000052.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c513000052.filter,tp,0x13,0,ft,ft,nil,e,tp) + local c=e:GetHandler() + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK) + e3:SetValue(4000) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end +function c513000052.cfilter(c) + return (c:IsSetCard(0x4a) or c:IsCode(74530899)) and c:IsFaceup() +end +function c513000052.atkval(e,c) + local g=Duel.GetMatchingGroup(c513000052.cfilter,c:GetControler(),LOCATION_MZONE,0,nil) + return g:GetSum(Card.GetAttack) +end +function c513000052.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + end +end +function c513000052.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not bc or c:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)>0 then return false end + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if c:IsAttackPos() and bc:IsDefensePos() and bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 + and c:GetAttack()<=bc:GetDefense() then return true end + if c:IsAttackPos() and (bc:IsAttackPos() or bc:IsHasEffect(EFFECT_DEFENSE_ATTACK)) + and c:GetAttack()<=bc:GetAttack() then return true end + if c:IsDefensePos() and bc:IsDefensePos() and bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 + and c:GetDefense()0 then + Duel.ConfirmCards(1-tp,sg) + Duel.ConfirmCards(tp,sg) + end + Duel.Destroy(g,REASON_EFFECT) +end +function c513000053.distg(e,c) + return c:IsType(TYPE_TRAP) +end +function c513000053.disop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if re:IsActiveType(TYPE_TRAP) and rc:IsOnField() then + Duel.NegateEffect(ev) + if rc:IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + end +end diff --git a/script/c513000054.lua b/script/c513000054.lua new file mode 100644 index 00000000..36c6ac4b --- /dev/null +++ b/script/c513000054.lua @@ -0,0 +1,25 @@ +--クロス・ソウル +function c513000054.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000054.target) + e1:SetOperation(c513000054.activate) + c:RegisterEffect(e1) +end +function c513000054.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c513000054.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RELEASE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c513000055.lua b/script/c513000055.lua new file mode 100644 index 00000000..0f173687 --- /dev/null +++ b/script/c513000055.lua @@ -0,0 +1,87 @@ +--二重魔法 +function c513000055.initial_effect(c) + --copy spell + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c513000055.target) + e1:SetOperation(c513000055.operation) + c:RegisterEffect(e1) +end +function c513000055.filter(c,e,tp,eg,ep,ev,re,r,rp,tid) + local te=c:CheckActivateEffect(false,false,false) + if c:GetTurnID()~=tid-1 or not c:IsPreviousPosition(POS_FACEUP) then return false end + if c:IsType(TYPE_SPELL) and te then + if c:IsSetCard(0x95) then + local tg=te:GetTarget() + return not tg or tg(e,tp,eg,ep,ev,re,r,rp,0) + else + return true + end + end + return false +end +function c513000055.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c513000055.filter(chkc,e,tp,eg,ep,ev,re,r,rp,tid) end + if chk==0 then + local b=e:GetHandler():IsLocation(LOCATION_HAND) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if (b and ft>1) or (not b and ft>0) then + return Duel.IsExistingTarget(c513000055.filter,tp,0,LOCATION_GRAVE,1,e:GetHandler(),e,tp,eg,ep,ev,re,r,rp,tid) + else + return false + end + end + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c513000055.filter,tp,0,LOCATION_GRAVE,1,ft,nil,e,tp,eg,ep,ev,re,r,rp,tid) +end +function c513000055.operation(e,tp,eg,ep,ev,re,r,rp) + local tgg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc=tgg:GetFirst() + while tc and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 do + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + tc=tgg:GetNext() + end +end diff --git a/script/c513000056.lua b/script/c513000056.lua new file mode 100644 index 00000000..2134a736 --- /dev/null +++ b/script/c513000056.lua @@ -0,0 +1,262 @@ +--集いし願い +function c513000056.initial_effect(c) + --Synchro monster, 1 tuner + n or more monsters + function aux.AddSynchroProcedure(c,f1,f2,ct) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=ct + mt.maxntct=99 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + --Synchro monster, 1 tuner + 1 monster + function Auxiliary.AddSynchroProcedure2(c,f1,f2) + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + if f1 then + mt.tuner_filter=function(mc) return mc and f1(mc) end + else + mt.tuner_filter=function(mc) return true end + end + if f2 then + mt.nontuner_filter=function(mc) return mc and f2(mc) end + else + mt.nontuner_filter=function(mc) return true end + end + mt.minntct=1 + mt.maxntct=1 + mt.sync=true + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(Auxiliary.SynCondition(f1,f2,1,1)) + e1:SetTarget(Auxiliary.SynTarget(f1,f2,1,1)) + e1:SetOperation(Auxiliary.SynOperation(f1,f2,1,1)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + end + + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c513000056.condition) + e1:SetTarget(c513000056.target) + e1:SetOperation(c513000056.activate) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(13513663,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCost(c513000056.atkcost) + e2:SetTarget(c513000056.atktg) + e2:SetOperation(c513000056.atkop) + c:RegisterEffect(e2) + --banish + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(123709,1)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetTarget(c513000056.rmtg) + e3:SetOperation(c513000056.rmop) + c:RegisterEffect(e3) +end +function c513000056.cfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsAbleToExtraAsCost() +end +function c513000056.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000056.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c513000056.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c513000056.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) +end +function c513000056.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(1-tp,nil,1-tp,0,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.CalculateDamage(tc,g:GetFirst()) + end + end +end + +function c513000056.filter(c,e,tp) + if not c:IsCode(44508094) then return false end + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c513000056.matfilter1,tp,LOCATION_GRAVE,0,nil,c) + local nontuner=Duel.GetMatchingGroup(c513000056.matfilter2,tp,LOCATION_GRAVE,0,nil,c) + if not c:IsType(TYPE_SYNCHRO) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,true,false) + or not mt.sync then return false end + if c:IsSetCard(0x301) then + return nontuner:IsExists(c513000056.lvfilter2,1,nil,c,tuner) + else + return tuner:IsExists(c513000056.lvfilter,1,nil,c,nontuner) + end +end +function c513000056.lvfilter(c,syncard,nontuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,slv-lv,mt.minntct,mt.maxntct,syncard) +end +function c513000056.lvfilter2(c,syncard,tuner) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + local lv=c:GetSynchroLevel(syncard) + local slv=syncard:GetLevel() + local nt=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,syncard,c) + return mt.minntct and mt.maxntct and nt:CheckWithSumEqual(Card.GetSynchroLevel,lv+slv,mt.minntct,mt.maxntct,syncard) +end +function c513000056.matfilter1(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_TUNER) and c:IsCanBeSynchroMaterial(syncard) and c:IsAbleToRemove() + and mt.tuner_filter and mt.tuner_filter(c) +end +function c513000056.matfilter2(c,syncard) + local code=syncard:GetOriginalCode() + local mt=_G["c" .. code] + return c:IsType(TYPE_MONSTER) and c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard) and c:IsAbleToRemove() + and mt.nontuner_filter and mt.nontuner_filter(c) +end +function c513000056.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if d:IsControler(1-tp) then a,d=d,a end + if d:IsControler(1-tp) or not d:IsCode(24696097) or d:GetEffectCount(EFFECT_INDESTRUCTABLE_BATTLE)>0 then return false end + if d==Duel.GetAttackTarget() and d:IsDefensePos() then return false end + if d:IsAttackPos() and a:IsDefensePos() and a:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 + and d:GetAttack()<=a:GetDefense() then return true end + if d:IsAttackPos() and (a:IsAttackPos() or a:IsHasEffect(EFFECT_DEFENSE_ATTACK)) + and d:GetAttack()<=a:GetAttack() then return true end + if d:IsDefensePos() and a:IsDefensePos() and a:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 + and d:GetDefense()0 + and Duel.IsExistingMatchingCard(c513000056.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c513000056.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c513000056.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + Duel.BreakEffect() + local g=Duel.GetMatchingGroup(c513000056.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=g:Select(tp,1,1,nil):GetFirst() + local code=tc:GetOriginalCode() + local mt=_G["c" .. code] + local tuner=Duel.GetMatchingGroup(c513000056.matfilter1,tp,LOCATION_GRAVE,0,nil,tc) + local nontuner=Duel.GetMatchingGroup(c513000056.matfilter2,tp,LOCATION_GRAVE,0,nil,tc) + local mat1 + if tc:IsSetCard(0x301) then + nontuner=nontuner:Filter(c513000056.lvfilter2,nil,tc,tuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=nontuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + tuner=tuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=tuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()+tlv,mt.minntct,mt.maxntct,tc) + mat1:Merge(mat2) + else + tuner=tuner:Filter(c513000056.lvfilter,nil,tc,nontuner) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + mat1=tuner:Select(tp,1,1,nil) + local tlv=mat1:GetFirst():GetSynchroLevel(tc) + nontuner=nontuner:Filter(Card.IsCanBeSynchroMaterial,nil,tc,mat1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local mat2=nontuner:SelectWithSumEqual(tp,Card.GetSynchroLevel,tc:GetLevel()-tlv,mt.minntct,mt.maxntct,tc) + mat1:Merge(mat2) + end + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_SYNCHRO) + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,true,false,POS_FACEUP) + c:SetCardTarget(tc) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_OWNER_RELATE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetCondition(c513000056.rcon) + e2:SetValue(c513000056.val) + tc:RegisterEffect(e2,true) + end +end +function c513000056.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c513000056.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c513000056.vfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsRace(RACE_DRAGON) +end +function c513000056.val(e,c) + local g=Duel.GetMatchingGroup(c513000056.vfilter,c:GetControler(),LOCATION_GRAVE,0,nil) + return g:GetSum(Card.GetAttack) +end +function c513000056.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if chk==0 then return tc end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,Group.FromCards(c,tc),2,0,0) +end +function c513000056.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if not c:IsRelateToEffect(e) then return end + Duel.Remove(Group.FromCards(c,tc),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c513000057.lua b/script/c513000057.lua new file mode 100644 index 00000000..00be4385 --- /dev/null +++ b/script/c513000057.lua @@ -0,0 +1,128 @@ +--賢者の石 サバティエル +function c513000057.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_DECK) + e1:SetCondition(c513000057.thcon) + e1:SetTarget(c513000057.thtg) + e1:SetOperation(c513000057.thop) + c:RegisterEffect(e1) + --Activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetLabel(0) + e2:SetTarget(c513000057.target) + c:RegisterEffect(e2) +end +function c513000057.cfilter(c) + return c:IsCode(57116033) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) +end +function c513000057.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c513000057.cfilter,1,nil) +end +function c513000057.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c513000057.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end +function c513000057.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,Duel.GetLP(tp)/2) +end +function c513000057.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + local c=e:GetHandler() + local ct=e:GetLabel() + if chk==0 then + if ct<3 then + return c513000057.cost(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) + else + return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + end + end + if ct<3 then + c513000057.cost(e,tp,eg,ep,ev,re,r,rp,1) + e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e:SetProperty(0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) + e:SetOperation(c513000057.activate1) + else + e:SetCategory(CATEGORY_ATKCHANGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + e:SetOperation(c513000057.activate2) + end +end +function c513000057.activate1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=e:GetLabel() + if not c:IsRelateToEffect(e) then return end + Duel.DisableShuffleCheck() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tc=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil):GetFirst() + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_DECK) + e1:SetCondition(c513000057.accon) + e1:SetTarget(c513000057.thtg) + e1:SetOperation(c513000057.thop) + e1:SetLabelObject(tc) + e1:SetReset(RESET_EVENT+0x13e0000) + c:RegisterEffect(e1) + c:CancelToGrave() + if tc:IsPreviousLocation(LOCATION_DECK) then + Duel.SendtoDeck(c,nil,0,REASON_EFFECT) + else + Duel.SendtoGrave(c,REASON_EFFECT) + end + ct=ct+1 + c:SetTurnCounter(ct) + e:SetLabel(ct) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetOperation(c513000057.apply) + e1:SetLabel(tc:GetPreviousSequence()) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + end +end +function c513000057.apply(e,tp,eg,ep,ev,re,r,rp) + Duel.DisableShuffleCheck() + Duel.MoveSequence(e:GetHandler(),e:GetLabel()) +end +function c513000057.accon(e,tp,eg,ep,ev,re,r,rp) + return re and re:GetHandler()==e:GetLabelObject() +end +function c513000057.activate2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()*ct) + tc:RegisterEffect(e1) + end +end diff --git a/script/c513000058.lua b/script/c513000058.lua new file mode 100644 index 00000000..ddb73584 --- /dev/null +++ b/script/c513000058.lua @@ -0,0 +1,37 @@ +--混沌の黒魔術師 +function c513000058.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001039,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c513000058.sptg) + e1:SetOperation(c513000058.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --redirect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_BATTLE_DESTROY_REDIRECT) + e4:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e4) +end +function c513000058.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c513000058.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000058.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c513000058.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c513000058.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c513000059.lua b/script/c513000059.lua new file mode 100644 index 00000000..59319ed1 --- /dev/null +++ b/script/c513000059.lua @@ -0,0 +1,142 @@ +--CNo.101 S・H・Dark Knight +function c513000059.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c513000059.rankupregcon) + e1:SetOperation(c513000059.rankupregop) + c:RegisterEffect(e1) + --material + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(12744567,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c513000059.target) + e2:SetOperation(c513000059.operation) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(12744567,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_RECOVER) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c513000059.spcon) + e3:SetTarget(c513000059.sptg) + e3:SetOperation(c513000059.spop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c513000059.indes) + c:RegisterEffect(e4) + if not c513000059.global_check then + c513000059.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c513000059.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c513000059.xyz_number=101 +function c513000059.filter(c) + return not c:IsType(TYPE_TOKEN) and c:IsAbleToChangeControler() +end +function c513000059.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c513000059.filter(chkc) end + if chk==0 then return e:GetHandler():IsType(TYPE_XYZ) + and Duel.IsExistingTarget(c513000059.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c513000059.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c513000059.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then + local og=tc:GetOverlayGroup() + if og:GetCount()>0 then + Duel.SendtoGrave(og,REASON_RULE) + end + Duel.Overlay(c,Group.FromCards(tc)) + end +end +function c513000059.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetOverlayCount()>0 +end +function c513000059.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) + local rec=e:GetHandler():GetBaseAttack() + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(rec) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) +end +function c513000059.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.BreakEffect() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) + end +end +function c513000059.rumfilter(c) + return c:IsCode(48739166) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c513000059.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c513000059.rumfilter,1,nil) +end +function c513000059.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --sp summon 101 + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetDescription(aux.Stringid(102380,0)) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCost(c513000059.spcost2) + e5:SetTarget(c513000059.sptg2) + e5:SetOperation(c513000059.spop2) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) +end +function c513000059.spcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + local g=e:GetHandler():GetOverlayGroup() + Duel.SendtoGrave(g,REASON_COST) +end +function c513000059.spfilter(c,e,tp) + return c:IsCode(48739166) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000059.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and (Duel.IsExistingMatchingCard(c513000059.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + or e:GetHandler():GetOverlayGroup():IsExists(c513000059.spfilter,1,nil,e,tp)) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c513000059.spop2(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,c513000059.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c513000059.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,12744567) + Duel.CreateToken(1-tp,12744567) +end +function c513000059.indes(e,c) + return not c:IsSetCard(0x48) +end \ No newline at end of file diff --git a/script/c513000060.lua b/script/c513000060.lua new file mode 100644 index 00000000..be1b9e58 --- /dev/null +++ b/script/c513000060.lua @@ -0,0 +1,105 @@ +--No.39 希望皇ビヨンド・ザ・ホープ +function c513000060.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,6,2) + c:EnableReviveLimit() + --Immune + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_ONFIELD,0) + e1:SetValue(c513000060.efilter) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c513000060.atkcon) + e2:SetValue(0) + c:RegisterEffect(e2) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(21521304,1)) + e6:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON+CATEGORY_RECOVER) + e6:SetType(EFFECT_TYPE_QUICK_O) + e6:SetCode(EVENT_FREE_CHAIN) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c513000060.spcon) + e6:SetCost(c513000060.spcost) + e6:SetTarget(c513000060.sptg) + e6:SetOperation(c513000060.spop) + c:RegisterEffect(e6) + --battle indestructable + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e7:SetValue(c513000060.indes) + c:RegisterEffect(e7) + if not c513000060.global_check then + c513000060.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c513000060.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c513000060.xyz_number=39 +function c513000060.efilter(e,re) + return re:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c513000060.atkcon(e) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==e:GetHandlerPlayer() and ph>=0x08 and ph<=0x80 + and e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,84013237) +end +function c513000060.spcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE and e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,84013237) +end +function c513000060.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c513000060.rmfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsAbleToRemove() +end +function c513000060.spfilter(c,e,tp) + return c:IsCode(84013237) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000060.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c513000060.rmfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c513000060.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,0,0,tp,1250) +end +function c513000060.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c513000060.rmfilter,tp,LOCATION_MZONE,0,1,1,nil) + if g1:GetCount()>0 then + Duel.HintSelection(g1) + if Duel.Remove(g1,POS_FACEUP,REASON_EFFECT)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c513000060.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.HintSelection(g2) + if Duel.SpecialSummon(g2,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.BreakEffect() + Duel.Recover(tp,g2:GetFirst():GetAttack()/2,REASON_EFFECT) + end +end +function c513000060.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,21521304) + Duel.CreateToken(1-tp,21521304) +end +function c513000060.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c513000061.lua b/script/c513000061.lua new file mode 100644 index 00000000..76adc21f --- /dev/null +++ b/script/c513000061.lua @@ -0,0 +1,113 @@ +--No.99 希望皇龍ホープドラグーン +function c513000061.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,10,3) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51543904,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c513000061.sptg) + e1:SetOperation(c513000061.spop) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c513000061.negcost) + e2:SetCondition(c513000061.negcon) + e2:SetTarget(c513000061.negtg) + e2:SetOperation(c513000061.negop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c513000061.indes) + c:RegisterEffect(e3) + if not c513000061.global_check then + c513000061.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c513000061.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c513000061.xyz_number=99 +function c513000061.filter(c,e,tp) + return c:IsSetCard(0x48) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000061.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c513000061.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c513000061.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c513000061.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c513000061.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end +function c513000061.negcon(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainDisablable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_REMOVE) + if ex and tg~=nil and tg:IsContains(e:GetHandler()) then return true end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if ex and tg~=nil and tg:IsContains(e:GetHandler()) then return true end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TODECK) + if ex and tg~=nil and tg:IsContains(e:GetHandler()) then return true end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOGRAVE) + if ex and tg~=nil and tg:IsContains(e:GetHandler()) then return true end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_TOHAND) + return ex and tg~=nil and tg:IsContains(e:GetHandler()) +end +function c513000061.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c513000061.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c513000061.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local sum=dg:GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT) + end +end +function c513000061.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,51543904) + Duel.CreateToken(1-tp,51543904) +end +function c513000061.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c513000062.lua b/script/c513000062.lua new file mode 100644 index 00000000..8a1c00d8 --- /dev/null +++ b/script/c513000062.lua @@ -0,0 +1,223 @@ +--No.80 狂装覇王ラプソディ・イン・バーサーク +function c513000062.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(876330,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c513000062.eqtg) + e1:SetOperation(c513000062.eqop) + c:RegisterEffect(e1) + --banish + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(612115,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c513000062.rmcost) + e2:SetTarget(c513000062.rmtg) + e2:SetOperation(c513000062.rmop) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c513000062.indes) + c:RegisterEffect(e3) + if not c513000062.global_check then + c513000062.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c513000062.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c513000062.xyz_number=80 +function c513000062.eqtg(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() and chkc~=e:GetHandler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c513000062.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc or not tc:IsRelateToEffect(e) or tc:IsFacedown() then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1200) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(c513000062.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetLabelObject(tc) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e3:SetCondition(c513000062.btcon) + e3:SetCost(c513000062.btcost) + e3:SetOperation(c513000062.btop) + e3:SetRange(LOCATION_SZONE) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_CHAINING) + e4:SetCondition(c513000062.con) + e4:SetCost(c513000062.btcost) + e4:SetOperation(c513000062.op) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) +end +function c513000062.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c513000062.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c513000062.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,0) +end +function c513000062.rmfilter(c,ty) + return c:IsType(ty) and c:IsAbleToRemove() +end +function c513000062.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,nil,typ) + local a=g:IsExists(Card.IsType,1,nil,TYPE_MONSTER) + local b=g:IsExists(Card.IsType,1,nil,TYPE_SPELL) + local c=g:IsExists(Card.IsType,1,nil,TYPE_TRAP) + local op=3 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(53839837,5)) + if a and b and c then + op=Duel.SelectOption(tp,aux.Stringid(53839837,1),aux.Stringid(53839837,2),aux.Stringid(53839837,3)) + elseif a and b then + op=Duel.SelectOption(tp,aux.Stringid(53839837,1),aux.Stringid(53839837,2)) + elseif b and c then + op=Duel.SelectOption(tp,aux.Stringid(53839837,2),aux.Stringid(53839837,3)) + op=op+1 + elseif a and c then + op=Duel.SelectOption(tp,aux.Stringid(53839837,1),aux.Stringid(53839837,3)) + if op==1 then op=op+1 end + elseif a then + Duel.SelectOption(tp,aux.Stringid(53839837,1)) + op=0 + elseif b then + Duel.SelectOption(tp,aux.Stringid(53839837,2)) + op=1 + elseif c then + Duel.SelectOption(tp,aux.Stringid(53839837,3)) + op=2 + end + local type=0 + if op==0 then type=TYPE_MONSTER + elseif op==1 then type=TYPE_SPELL + elseif op==2 then type=TYPE_TRAP end + local sg=g:Filter(c513000062.rmfilter,nil,type) + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) +end +function c513000062.btcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>=1000 +end +function c513000062.btcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local eq=c:GetEquipTarget() + if chk==0 then return c:IsDestructable() and c:IsAbleToGraveAsCost() end + Duel.Destroy(c,REASON_COST) + Duel.SendtoGrave(c,REASON_COST) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67441435,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c513000062.spcost) + e1:SetTarget(c513000062.sptg) + e1:SetOperation(c513000062.spop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c513000062.btop(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c513000062.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c513000062.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,ev/2) +end +function c513000062.con(e,tp,eg,ep,ev,re,r,rp) + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) and cv>=1000 then return true end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) and cv>=1000 +end +function c513000062.op(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(c513000062.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c513000062.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return val/2 +end +function c513000062.spcfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c513000062.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000062.spcfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=Duel.SelectMatchingCard(tp,c513000062.spcfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(sg,REASON_COST) +end +function c513000062.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c513000062.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) +end +function c513000062.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,93568288) + Duel.CreateToken(1-tp,93568288) +end +function c513000062.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c513000063.lua b/script/c513000063.lua new file mode 100644 index 00000000..a5f7bc5f --- /dev/null +++ b/script/c513000063.lua @@ -0,0 +1,251 @@ +--CNo.80 葬装覇王レクイエム・イン・バーサーク +function c513000063.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c513000063.rankupregop) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(876330,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c513000063.eqtg) + e2:SetOperation(c513000063.eqop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(612115,0)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c513000063.rmcost) + e3:SetTarget(c513000063.rmtg) + e3:SetOperation(c513000063.rmop) + c:RegisterEffect(e3) + --battle indestructable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(c513000063.indes) + c:RegisterEffect(e4) + if not c513000063.global_check then + c513000063.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c513000063.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c513000063.xyz_number=80 +function c513000063.rumfilter(c) + return c:IsCode(93568288) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c513000063.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c513000063.rumfilter,1,nil) then + e:SetLabel(1) + else + e:SetLabel(0) + end +end +function c513000063.eqtg(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() and chkc~=e:GetHandler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c513000063.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + local sp=false + if e:GetLabelObject():GetLabel()==1 then + sp=true + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c513000063.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(2000) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + if sp then + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c513000063.discon) + e3:SetOperation(c513000063.disop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + --destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetTarget(c513000063.reptg) + e4:SetOperation(c513000063.repop) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + --Negate Damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_CHAIN_SOLVING) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(aux.damcon1) + e5:SetOperation(c513000063.repop2) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + end +end +function c513000063.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c513000063.discon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + return ec and ec:GetControler()==tp and (ec==Duel.GetAttacker() or ec==Duel.GetAttackTarget()) and ec:GetBattleTarget() +end +function c513000063.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetEquipTarget():GetBattleTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) +end +function c513000063.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end + if Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:GetHandler():SetStatus(STATUS_DESTROY_CONFIRMED,true) + return true + else return false end +end +function c513000063.repop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + c:SetStatus(STATUS_DESTROY_CONFIRMED,false) + Duel.SendtoGrave(c,REASON_EFFECT+REASON_REPLACE) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67441435,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c513000063.spcost) + e1:SetTarget(c513000063.sptg) + e1:SetOperation(c513000063.spop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c513000063.repop2(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if not c:IsStatus(STATUS_DESTROY_CONFIRMED) + and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + Duel.SendtoGrave(c,REASON_EFFECT+REASON_REPLACE) + local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) + local e1=Effect.CreateEffect(c) + 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(c513000063.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67441435,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c513000063.spcost) + e1:SetTarget(c513000063.sptg) + e1:SetOperation(c513000063.spop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c513000063.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then e:SetLabel(val) return 0 + else return val end +end +function c513000063.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(sg,REASON_COST) +end +function c513000063.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c513000063.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) +end +function c513000063.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c513000063.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,0) +end +function c513000063.rmop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,nil) + local op=0 + if sg:IsExists(Card.IsLocation,1,nil,LOCATION_MZONE) and sg:IsExists(Card.IsLocation,1,nil,LOCATION_SZONE) then + op=Duel.SelectOption(tp,aux.Stringid(26495087,1),aux.Stringid(99458769,3)) + elseif sg:IsExists(Card.IsLocation,1,nil,LOCATION_MZONE) then + Duel.SelectOption(tp,aux.Stringid(26495087,1)) + op=0 + else + Duel.SelectOption(tp,aux.Stringid(99458769,3)) + op=1 + end + local bg + if op==0 then + bg=sg:Filter(Card.IsLocation,nil,LOCATION_MZONE) + else + bg=sg:Filter(Card.IsLocation,nil,LOCATION_SZONE) + end + Duel.Remove(bg,POS_FACEUP,REASON_EFFECT) +end +function c513000063.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,20563387) + Duel.CreateToken(1-tp,20563387) +end +function c513000063.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c513000064.lua b/script/c513000064.lua new file mode 100644 index 00000000..32d54d2d --- /dev/null +++ b/script/c513000064.lua @@ -0,0 +1,79 @@ +--超融合 +function c513000064.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetCost(c513000064.cost) + e1:SetTarget(c513000064.target) + e1:SetOperation(c513000064.activate) + c:RegisterEffect(e1) +end +function c513000064.filter0(c,tp) + return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() +end +function c513000064.filter1(c,e,tp) + return (c:IsControler(tp) or c:IsFaceup()) and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c513000064.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,true,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c513000064.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c513000064.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c513000064.filter0,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local res=Duel.IsExistingMatchingCard(c513000064.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c513000064.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + Duel.SetChainLimit(aux.FALSE) +end +function c513000064.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c513000064.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e,tp) + local sg1=Duel.GetMatchingGroup(c513000064.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c513000064.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,true,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c513000065.lua b/script/c513000065.lua new file mode 100644 index 00000000..fb049935 --- /dev/null +++ b/script/c513000065.lua @@ -0,0 +1,63 @@ +--神の進化 +function c513000065.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetTarget(c513000065.target) + e1:SetOperation(c513000065.activate) + c:RegisterEffect(e1) +end +function c513000065.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DEVINE) +end +function c513000065.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000065.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c513000065.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c513000065.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(513000065) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc: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_IMMUNE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(c513000065.efilter) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetOperation(c513000065.atkup) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + tc=g:GetNext() + end +end +function c513000065.efilter(e,te) + return te:GetOwner()~=e:GetOwner() and te:GetOwner()~=e:GetHandler() +end +function c513000065.atkup(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --Atk/Def up + local e2=Effect.CreateEffect(e:GetOwner()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1000) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end diff --git a/script/c513000066.lua b/script/c513000066.lua new file mode 100644 index 00000000..c46ae070 --- /dev/null +++ b/script/c513000066.lua @@ -0,0 +1,47 @@ +--ウィジャ盤 +function c513000066.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c513000066.condition) + e1:SetTarget(c513000066.target) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(94212438,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c513000066.wincon) + e2:SetOperation(c513000066.winop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetCode(EFFECT_ADD_TYPE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetValue(TYPE_SPELL) + c:RegisterEffect(e3) +end +function c513000066.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,31829185) +end +function c513000066.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():SetTurnCounter(0) +end +function c513000066.wincon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c513000066.winop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==5 then + Duel.Win(tp,0x15) + end +end diff --git a/script/c513000067.lua b/script/c513000067.lua new file mode 100644 index 00000000..7bbc321f --- /dev/null +++ b/script/c513000067.lua @@ -0,0 +1,81 @@ +--Champion's Majesty +function c513000067.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+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCondition(c513000067.condition) + e1:SetTarget(c513000067.target) + e1:SetOperation(c513000067.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) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(63851864,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c513000067.atkcon) + e3:SetOperation(c513000067.atkop) + c:RegisterEffect(e3) + --disable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(0,LOCATION_ONFIELD) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e4) + --cannot disable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_DISABLE) + c:RegisterEffect(e5) +end +function c513000067.cfilter(c) + return c:IsSetCard(0x21a) or c:IsCode(82382815) +end +function c513000067.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c513000067.cfilter,tp,LOCATION_GRAVE,0,3,nil) +end +function c513000067.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 c513000067.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + end +end +function c513000067.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + local bc=ec:GetBattleTarget() + return e:GetHandler():GetEquipTarget()==eg:GetFirst() and bc:IsReason(REASON_BATTLE) +end +function c513000067.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=c:GetEquipTarget() + if tc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c513000068.lua b/script/c513000068.lua new file mode 100644 index 00000000..13f874bc --- /dev/null +++ b/script/c513000068.lua @@ -0,0 +1,43 @@ +--Sin 青眼の白龍 +function c513000068.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e0) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c513000068.spcon) + e1:SetOperation(c513000068.spop) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c513000068.descon) + c:RegisterEffect(e2) +end +function c513000068.spfilter(c) + return c:IsCode(89631139) and c:IsAbleToGraveAsCost() +end +function c513000068.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000068.spfilter,c:GetControler(),LOCATION_DECK,0,1,nil) +end +function c513000068.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c513000068.spfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c513000068.descon(e) + return not Duel.IsEnvironment(27564031) +end diff --git a/script/c513000069.lua b/script/c513000069.lua new file mode 100644 index 00000000..b9bfd747 --- /dev/null +++ b/script/c513000069.lua @@ -0,0 +1,37 @@ +--Sin 真紅眼の黒竜 +function c513000069.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c513000069.spcon) + e1:SetOperation(c513000069.spop) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c513000069.descon) + c:RegisterEffect(e2) +end +function c513000069.spfilter(c) + return c:IsCode(74677422) and c:IsAbleToGraveAsCost() +end +function c513000069.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000069.spfilter,c:GetControler(),LOCATION_DECK,0,1,nil) +end +function c513000069.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c513000069.spfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c513000069.descon(e) + return not Duel.IsEnvironment(27564031) +end diff --git a/script/c513000070.lua b/script/c513000070.lua new file mode 100644 index 00000000..6219e61e --- /dev/null +++ b/script/c513000070.lua @@ -0,0 +1,42 @@ +--Sin サイバー・エンド・ドラゴン +function c513000070.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c513000070.spcon) + e1:SetOperation(c513000070.spop) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c513000070.descon) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) +end +function c513000070.spfilter(c) + return c:IsCode(1546123) and c:IsAbleToGraveAsCost() +end +function c513000070.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000070.spfilter,c:GetControler(),LOCATION_EXTRA,0,1,nil) +end +function c513000070.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c513000070.spfilter,tp,LOCATION_EXTRA,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c513000070.descon(e) + return not Duel.IsEnvironment(27564031) +end diff --git a/script/c513000071.lua b/script/c513000071.lua new file mode 100644 index 00000000..e3de9442 --- /dev/null +++ b/script/c513000071.lua @@ -0,0 +1,36 @@ +--Sin Selector +function c513000071.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c513000071.cost) + e1:SetTarget(c513000071.target) + e1:SetOperation(c513000071.activate) + c:RegisterEffect(e1) +end +function c513000071.cfilter(c) + return c:IsSetCard(0x23) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c513000071.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000071.cfilter,tp,LOCATION_GRAVE,0,2,nil) end + local g=Duel.SelectMatchingCard(tp,c513000071.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c513000071.filter(c) + return c:IsSetCard(0x23) and c:IsAbleToHand() +end +function c513000071.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c513000071.filter,tp,LOCATION_DECK,0,2,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_DECK) +end +function c513000071.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c513000071.filter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tg=g:Select(tp,2,2,nil) + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end +end diff --git a/script/c513000072.lua b/script/c513000072.lua new file mode 100644 index 00000000..f8cb0892 --- /dev/null +++ b/script/c513000072.lua @@ -0,0 +1,15 @@ +--Sin パラレルギア +function c513000072.initial_effect(c) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c513000072.descon) + c:RegisterEffect(e2) +end +function c513000072.descon(e) + return not Duel.IsEnvironment(27564031) +end + diff --git a/script/c513000073.lua b/script/c513000073.lua new file mode 100644 index 00000000..f7be0b6c --- /dev/null +++ b/script/c513000073.lua @@ -0,0 +1,107 @@ +--Sin レインボー・ドラゴン +function c513000073.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e0) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c513000073.spcon) + e1:SetOperation(c513000073.spop) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c513000073.descon) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetDescription(aux.Stringid(79856792,0)) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(TIMING_DAMAGE_STEP) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c513000073.atcon) + e3:SetCost(c513000073.atcost) + e3:SetOperation(c513000073.atop) + c:RegisterEffect(e3) + --todeck + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TODECK) + e4:SetDescription(aux.Stringid(79856792,1)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c513000073.tdcost) + e4:SetTarget(c513000073.tdtg) + e4:SetOperation(c513000073.tdop) + c:RegisterEffect(e4) +end +function c513000073.spfilter(c) + return c:IsCode(79856792) and c:IsAbleToGraveAsCost() +end +function c513000073.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000073.spfilter,c:GetControler(),LOCATION_DECK,0,1,nil) +end +function c513000073.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c513000073.spfilter,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c513000073.descon(e) + return not Duel.IsEnvironment(27564031) +end +function c513000073.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c513000073.afilter(c) + return c:IsSetCard(0x23) and c:IsAbleToGraveAsCost() +end +function c513000073.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000073.afilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsAbleToGraveAsCost,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) + local ct=g:FilterCount(Card.IsSetCard,nil,0x23) + e:SetLabel(ct) +end +function c513000073.atop(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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()*1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c513000073.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x23) and c:IsAbleToRemoveAsCost() +end +function c513000073.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000073.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + local g=Duel.GetMatchingGroup(c513000073.cfilter,tp,LOCATION_GRAVE,0,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c513000073.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c513000073.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c513000074.lua b/script/c513000074.lua new file mode 100644 index 00000000..96fe06a4 --- /dev/null +++ b/script/c513000074.lua @@ -0,0 +1,69 @@ +--Sin パラドクス・ドラゴン +function c513000074.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x23),aux.NonTuner(Card.IsSetCard,0x23),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(8310162,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c513000074.spcon) + e1:SetTarget(c513000074.sptg) + e1:SetOperation(c513000074.spop) + c:RegisterEffect(e1) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c513000074.descon) + c:RegisterEffect(e2) + --atkdown + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(c513000074.atkval) + c:RegisterEffect(e3) +end +function c513000074.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c513000074.spfilter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c513000074.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c513000074.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c513000074.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c513000074.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c513000074.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end +end +function c513000074.descon(e) + return not Duel.IsEnvironment(27564031) +end +function c513000074.atkfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c513000074.atkval(e,c) + local tatk=0 + local g=Duel.GetMatchingGroup(c513000074.atkfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,e:GetHandler()) + local tc=g:GetFirst() + while tc do + tatk=tatk+tc:GetAttack() + tc=g:GetNext() + end + return -tatk +end diff --git a/script/c513000075.lua b/script/c513000075.lua new file mode 100644 index 00000000..31ca248d --- /dev/null +++ b/script/c513000075.lua @@ -0,0 +1,97 @@ +--Sin スターダスト・ドラゴン +function c513000075.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c513000075.spcon) + e1:SetOperation(c513000075.spop) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c513000075.descon) + c:RegisterEffect(e2) + --Negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(44508094,0)) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c513000075.condition) + e3:SetCost(c513000075.cost) + e3:SetTarget(c513000075.target) + e3:SetOperation(c513000075.operation) + c:RegisterEffect(e3) + --Revive + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(44508094,1)) + e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_GRAVE) + e4:SetCountLimit(1) + e4:SetTarget(c513000075.sumtg) + e4:SetOperation(c513000075.sumop) + c:RegisterEffect(e4) +end +function c513000075.spfilter(c) + return c:IsCode(44508094) and c:IsAbleToGraveAsCost() +end +function c513000075.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000075.spfilter,c:GetControler(),LOCATION_EXTRA,0,1,nil) +end +function c513000075.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c513000075.spfilter,tp,LOCATION_EXTRA,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c513000075.descon(e) + return not Duel.IsEnvironment(27564031) +end +function c513000075.condition(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end + if re:IsHasCategory(CATEGORY_NEGATE) + and Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT):IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(Card.IsOnField,nil)-tg:GetCount()>0 +end +function c513000075.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c513000075.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c513000075.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + e:GetHandler():RegisterFlagEffect(513000075,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) +end +function c513000075.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(513000075)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c513000075.sumop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c513000076.lua b/script/c513000076.lua new file mode 100644 index 00000000..8f787e3c --- /dev/null +++ b/script/c513000076.lua @@ -0,0 +1,75 @@ +--Sin トゥルース・ドラゴン +function c513000076.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(55586621,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c513000076.descon) + e2:SetTarget(c513000076.destg) + e2:SetOperation(c513000076.desop) + c:RegisterEffect(e2) + --self destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_SELF_DESTROY) + e3:SetCondition(c513000076.descon2) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetTarget(c513000076.desreptg) + c:RegisterEffect(e4) +end +function c513000076.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return tc:IsRelateToBattle() and tc:IsStatus(STATUS_OPPO_BATTLE) and tc:IsControler(tp) and tc:IsSetCard(0x23) + and bc:IsReason(REASON_BATTLE) +end +function c513000076.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*800) +end +function c513000076.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct~=0 then + Duel.BreakEffect() + Duel.Damage(1-tp,ct*800,REASON_EFFECT) + end +end +function c513000076.descon2(e) + return not Duel.IsEnvironment(27564031) +end +function c513000076.repfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x23) and c:IsAbleToRemoveAsCost() +end +function c513000076.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) + and Duel.IsExistingMatchingCard(c513000076.repfilter,tp,LOCATION_GRAVE,0,1,nil) end + if Duel.SelectYesNo(tp,aux.Stringid(25165047,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c513000076.repfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + return true + else return false end +end diff --git a/script/c513000077.lua b/script/c513000077.lua new file mode 100644 index 00000000..f1c3ed18 --- /dev/null +++ b/script/c513000077.lua @@ -0,0 +1,126 @@ +--Beast-borg Medal of the Crimson Chain +function c513000077.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c513000077.condition1) + c:RegisterEffect(e1) + --Activate (sp summon) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCondition(c513000077.condition2) + e2:SetTarget(c513000077.target) + c:RegisterEffect(e2) + --trigger + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_NO_TURN_RESET+EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c513000077.sptg) + e3:SetOperation(c513000077.spop) + c:RegisterEffect(e3) + --destroy + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e7:SetRange(LOCATION_SZONE) + e7:SetCode(EFFECT_SELF_DESTROY) + e7:SetCondition(c513000077.descon) + c:RegisterEffect(e7) + --card limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e4:SetTargetRange(0,1) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EFFECT_CANNOT_SUMMON) + e5:SetTargetRange(0,1) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EFFECT_CANNOT_ACTIVATE) + e6:SetTargetRange(0,1) + e6:SetValue(c513000077.aclimit) + c:RegisterEffect(e6) +end +function c513000077.condition1(e,tp,eg,ep,ev,re,r,rp) + local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS,true) + return not res or not teg:IsExists(c513000077.tgfilter,1,nil,e,tp) +end +function c513000077.condition2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c513000077.tgfilter,1,nil,e,tp) +end +function c513000077.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c513000077.tgfilter(chkc,e,tp) end + if chk==0 then return true end + if c513000077.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetCategory(CATEGORY_POSITION) + e:SetOperation(c513000077.spop) + e:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + c513000077.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e:SetOperation(nil) + end +end +function c513000077.tgfilter(c,e,tp) + return c:IsControler(1-tp) and c:IsPreviousLocation(LOCATION_EXTRA) and c:IsCanBeEffectTarget(e) +end +function c513000077.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c513000077.tgfilter(chkc,e,tp) end + if chk==0 then return eg:IsExists(c513000077.tgfilter,1,nil,e,tp) + and e:GetHandler():GetFlagEffect(513000077)==0 end + e:GetHandler():RegisterFlagEffect(513000077,RESET_EVENT+0x1fe0000,0,1) + local g=eg:FilterSelect(tp,c513000077.tgfilter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c513000077.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and 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_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c513000077.rcon) + tc:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + tc:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + tc:RegisterEffect(e3,true) + end +end +function c513000077.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c513000077.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x20c) +end +function c513000077.descon(e) + return not Duel.IsExistingMatchingCard(c513000077.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c513000077.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c513000078.lua b/script/c513000078.lua new file mode 100644 index 00000000..f1609c00 --- /dev/null +++ b/script/c513000078.lua @@ -0,0 +1,208 @@ +--セイヴァー・デモン・ドラゴン +function c513000078.initial_effect(c) + --synchro summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c513000078.syncon) + e1:SetOperation(c513000078.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67030233,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c513000078.descon) + e2:SetTarget(c513000078.destg) + e2:SetOperation(c513000078.desop) + c:RegisterEffect(e2) + --Disable + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(67030233,1)) + e3:SetCategory(CATEGORY_DISABLE+CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c513000078.distg) + e3:SetOperation(c513000078.disop) + c:RegisterEffect(e3) + --to extra & Special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(67030233,2)) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCountLimit(1) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetTarget(c513000078.sptg) + e4:SetOperation(c513000078.spop) + c:RegisterEffect(e4) + --Negate + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(12298909,0)) + e5:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY+CATEGORY_DAMAGE) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_CHAINING) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c513000078.condition) + e5:SetTarget(c513000078.target) + e5:SetOperation(c513000078.operation) + c:RegisterEffect(e5) +end +function c513000078.matfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c513000078.synfilter1(c,syncard,lv,g) + if not c:IsCode(21159309) then return false end + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + local t=false + if c:IsType(TYPE_TUNER) then t=true end + local wg=g:Clone() + wg:RemoveCard(c) + return wg:IsExists(c513000078.synfilter2,1,nil,syncard,lv-tlv,wg,t) +end +function c513000078.synfilter2(c,syncard,lv,g,tuner) + if not c:IsCode(70902743) then return false end + local tlv=c:GetSynchroLevel(syncard) + if lv-tlv<=0 then return false end + if not tuner and not c:IsType(TYPE_TUNER) then return false end + return g:IsExists(c513000078.synfilter3,1,c,syncard,lv-tlv) +end +function c513000078.synfilter3(c,syncard,lv) + local mlv=c:GetSynchroLevel(syncard) + local lv1=bit.band(mlv,0xffff) + local lv2=bit.rshift(mlv,16) + return c:IsNotTuner() and (lv1==lv or lv2==lv) +end +function c513000078.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c513000078.matfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local lv=c:GetLevel() + if tuner then return c513000078.synfilter1(tuner,c,lv,mg) end + return mg:IsExists(c513000078.synfilter1,1,nil,c,lv,mg) +end +function c513000078.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local mg=Duel.GetMatchingGroup(c513000078.matfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local lv=c:GetLevel() + local m1=tuner + if not tuner then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t1=mg:FilterSelect(tp,c513000078.synfilter1,1,1,nil,c,lv,mg) + m1=t1:GetFirst() + g:AddCard(m1) + end + lv=lv-m1:GetSynchroLevel(c) + local t=false + if m1:IsType(TYPE_TUNER) then t=true end + mg:RemoveCard(m1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t2=mg:FilterSelect(tp,c513000078.synfilter2,1,1,nil,c,lv,mg,t) + local m2=t2:GetFirst() + g:AddCard(m2) + lv=lv-m2:GetSynchroLevel(c) + mg:RemoveCard(m2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t3=mg:FilterSelect(tp,c513000078.synfilter3,1,1,nil,c,lv) + g:Merge(t3) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c513000078.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==Duel.GetAttacker() +end +function c513000078.desfilter(c) + return c:IsDefensePos() and c:IsDestructable() +end +function c513000078.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c513000078.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c513000078.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c513000078.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c513000078.disfilter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) and not c:IsDisabled() +end +function c513000078.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c513000078.disfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c513000078.disfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c513000078.disfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c513000078.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if c:IsRelateToEffect(e) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(tc:GetAttack()) + e3:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e3) + end + end +end +function c513000078.spfilter(c,e,tp) + return c:IsCode(70902743) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000078.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c513000078.spfilter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c513000078.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c513000078.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if bit.band(c:GetOriginalType(),0x802040)~=0 and Duel.SendtoDeck(c,nil,0,REASON_EFFECT)~=0 + and c:IsLocation(LOCATION_EXTRA) and tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c513000078.condition(e,tp,eg,ep,ev,re,r,rp) + if e==re or e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tg:IsContains(e:GetHandler()) +end +function c513000078.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetHandler():GetAttack()) + end +end +function c513000078.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + if Duel.Destroy(eg,REASON_EFFECT)>0 then + Duel.Damage(1-tp,e:GetHandler():GetAttack(),REASON_EFFECT) + end + end +end diff --git a/script/c513000079.lua b/script/c513000079.lua new file mode 100644 index 00000000..21b573ba --- /dev/null +++ b/script/c513000079.lua @@ -0,0 +1,45 @@ +--ダーク・ダイブ・ボンバー +function c513000079.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(32646477,0)) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c513000079.cost) + e1:SetTarget(c513000079.target) + e1:SetOperation(c513000079.operation) + c:RegisterEffect(e1) +end +function c513000079.costfilter(c) + return c:GetLevel()>0 +end +function c513000079.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c513000079.costfilter,1,e:GetHandler()) end + local g=Duel.SelectReleaseGroup(tp,c513000079.costfilter,1,1,e:GetHandler()) + e:SetLabel(g:GetFirst():GetLevel()*200) + Duel.Release(g,REASON_COST) +end +function c513000079.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) + e:SetLabel(0) +end +function c513000079.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c513000080.lua b/script/c513000080.lua new file mode 100644 index 00000000..5ac5401c --- /dev/null +++ b/script/c513000080.lua @@ -0,0 +1,125 @@ +--Graveyard Rebound +function c513000080.initial_effect(c) + --to deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001629,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c513000080.con) + e1:SetOperation(c513000080.op) + c:RegisterEffect(e1) +end +function c513000080.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_DECK) and e:GetHandler():GetPreviousControler()==tp and bit.band(r,REASON_EFFECT)~=0 +end +function c513000080.op(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetTarget(c513000080.tdtg) + e1:SetOperation(c513000080.tdop) + if Duel.GetTurnPlayer()==tp then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c513000080.tdcon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + e:GetHandler():RegisterEffect(e1) +end +function c513000080.tdcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()~=e:GetLabel() +end +function c513000080.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToDeck() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c513000080.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + Duel.RegisterFlagEffect(tp,513000080,RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetOperation(c513000080.operation) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c513000080.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_SPELL+TYPE_TRAP) + if g:GetCount()<=0 then return end + local tc=g:GetFirst() + while tc do + local te=tc:GetActivateEffect() + if tc:GetFlagEffect(513000080)==0 and te then + local e1=Effect.CreateEffect(tc) + if te:GetCategory() then + e1:SetCategory(te:GetCategory()) + end + if te:GetProperty() then + e1:SetProperty(te:GetProperty()) + end + if te:GetDescription() then + e1:SetDescription(te:GetDescription()) + end + if tc:IsType(TYPE_SPELL) and not tc:IsType(TYPE_QUICKPLAY) then + e1:SetType(EFFECT_TYPE_IGNITION+EFFECT_TYPE_ACTIVATE) + else + e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_ACTIVATE) + end + e1:SetCode(te:GetCode()) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c513000080.accon) + if te:GetCost() then + e1:SetCost(te:GetCost()) + end + e1:SetTarget(c513000080.actg) + e1:SetOperation(c513000080.acop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(513000080,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + tc=g:GetNext() + end +end +function c513000080.accon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local te=c:GetActivateEffect() + local condition=te:GetCondition() + return (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) + and Duel.GetFlagEffect(tp,513000080)>0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c513000080.actg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local te=c:GetActivateEffect() + local target=te:GetTarget() + local tpe=c:GetType() + if chk==0 then return (Duel.GetLocationCount(tp,LOCATION_SZONE)>0 or c:IsType(TYPE_FIELD)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) end + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 and Duel.SendtoGrave(of,REASON_RULE)==0 then Duel.SendtoGrave(c,REASON_RULE) end + end + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + c:CreateEffectRelation(te) + if target then target(te,tp,eg,ep,ev,re,r,rp,1) end +end +function c513000080.acop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local te=c:GetActivateEffect() + local op=te:GetOperation() + local tpe=c:GetType() + if op then + c:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + c:CancelToGrave(false) + end + c:ReleaseEffectRelation(te) + if op then op(te,tp,eg,ep,ev,re,r,rp) end + end +end diff --git a/script/c513000082.lua b/script/c513000082.lua new file mode 100644 index 00000000..7afa6e26 --- /dev/null +++ b/script/c513000082.lua @@ -0,0 +1,41 @@ +--魂縛門 +function c513000082.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(500000149,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c513000082.tg) + e2:SetOperation(c513000082.op) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c513000082.filter(c,e,tp) + local lp=Duel.GetLP(tp) + return c:IsFaceup() and c:IsDestructable() and c:GetAttack()0 and Duel.Destroy(g,REASON_EFFECT)>0 then + Duel.Damage(1-tp,800,REASON_EFFECT) + Duel.Damage(tp,800,REASON_EFFECT) + end +end diff --git a/script/c513000083.lua b/script/c513000083.lua new file mode 100644 index 00000000..ab2230a0 --- /dev/null +++ b/script/c513000083.lua @@ -0,0 +1,114 @@ +--DZW-魔装鵺妖衣 +function c513000083.initial_effect(c) + --Destroy 1 spell/trap + local e0=Effect.CreateEffect(c) + e0:SetDescription(aux.Stringid(29095552,0)) + e0:SetCategory(CATEGORY_DESTROY) + e0:SetType(EFFECT_TYPE_IGNITION) + e0:SetProperty(EFFECT_FLAG_CARD_TARGET) + e0:SetRange(LOCATION_MZONE) + e0:SetTarget(c513000083.destg) + e0:SetOperation(c513000083.desop) + c:RegisterEffect(e0) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(6330307,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c513000083.eqtg) + e1:SetOperation(c513000083.eqop) + c:RegisterEffect(e1) + --destroy sub + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --Disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCode(EFFECT_DISABLE) + c:RegisterEffect(e3) + --atkup + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(70271583,1)) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e4:SetCategory(CATEGORY_ATKCHANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_BATTLE_DAMAGE) + e4:SetCondition(c513000083.atkcon) + e4:SetOperation(c513000083.atkop) + c:RegisterEffect(e4) +end +function c513000083.desfilter(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c513000083.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c513000083.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c513000083.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c513000083.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c513000083.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c513000083.filter(c) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return c:IsFaceup() and c:IsSetCard(0x7f) and c:IsSetCard(0x1048) and no and no==39 +end +function c513000083.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c513000083.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c513000083.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c513000083.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c513000083.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) or not c:CheckUniqueOnField(tp) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c513000083.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) +end +function c513000083.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c513000083.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + return ep==tp and (ec==Duel.GetAttacker() or ec==Duel.GetAttackTarget()) +end +function c513000083.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetEquipTarget() + if not c:IsRelateToEffect(e) then return end + --Atk Change + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(ec:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + Duel.ChainAttack() +end diff --git a/script/c513000084.lua b/script/c513000084.lua new file mode 100644 index 00000000..ad8cfd59 --- /dev/null +++ b/script/c513000084.lua @@ -0,0 +1,113 @@ +--エコール・ド・ゾーン +function c513000084.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(500000147,0)) + e2:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON) + e2:SetTarget(c513000084.destg) + e2:SetOperation(c513000084.desop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_SPSUMMON) + c:RegisterEffect(e4) + --successful summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(500000147,0)) + e5:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN+CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_QUICK_F) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_SUMMON_SUCCESS) + e5:SetTarget(c513000084.destg2) + e5:SetOperation(c513000084.desop2) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e6) + local e7=e5:Clone() + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e7) + --cannot direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e4) +end +function c513000084.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentChain()==0 end + local ct=eg:GetCount() + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,0,0) +end +function c513000084.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) + local tc=eg:GetFirst() + while tc do + local token=Duel.CreateToken(tp,500000148) + Duel.SpecialSummonStep(token,0,tc:GetPreviousControler(),tc:GetPreviousControler(),false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetBaseDefense()) + token:RegisterEffect(e2) + tc=eg:GetNext() + end + Duel.SpecialSummonComplete() +end +function c513000084.filter(c,re,e) + return c:IsFaceup() and (not re or re:GetOwner()~=e:GetOwner()) +end +function c513000084.destg2(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + if chk==0 then return eg:IsExists(c513000084.filter,1,nil,re,e) end + local ct=eg:GetCount() + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ct,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,0,0) +end +function c513000084.desop2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) + local tc=eg:GetFirst() + while tc do + if not tc:IsLocation(LOCATION_MZONE) then + local token=Duel.CreateToken(tp,500000148) + Duel.SpecialSummonStep(token,0,tc:GetPreviousControler(),tc:GetPreviousControler(),false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetBaseDefense()) + token:RegisterEffect(e2) + end + tc=eg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c513000085.lua b/script/c513000085.lua new file mode 100644 index 00000000..8af08995 --- /dev/null +++ b/script/c513000085.lua @@ -0,0 +1,42 @@ +--ディメンション・ワンダラー +function c513000085.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62107612,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c513000085.condition) + e1:SetCost(c513000085.cost) + e1:SetTarget(c513000085.target) + e1:SetOperation(c513000085.operation) + c:RegisterEffect(e1) +end +function c513000085.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and re +end +function c513000085.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c513000085.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c513000085.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and c513000085.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c513000085.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c513000085.filter,tp,LOCATION_REMOVED,LOCATION_REMOVED,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetSum(Card.GetAttack)) +end +function c513000085.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + if g:GetCount()==2 then + local sum=g:GetSum(Card.GetAttack) + Duel.Damage(1-tp,sum,REASON_EFFECT) + end +end diff --git a/script/c513000086.lua b/script/c513000086.lua new file mode 100644 index 00000000..fc602fa3 --- /dev/null +++ b/script/c513000086.lua @@ -0,0 +1,44 @@ +--Absurd Stealer +function c513000086.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000040,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c513000086.target) + e1:SetOperation(c513000086.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c513000086.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c513000086.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(tc:GetDefense()) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) + end + end +end diff --git a/script/c513000087.lua b/script/c513000087.lua new file mode 100644 index 00000000..fba69973 --- /dev/null +++ b/script/c513000087.lua @@ -0,0 +1,72 @@ +--手をつなぐ魔人 +function c513000087.initial_effect(c) + --target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetTarget(c513000087.tglimit) + c:RegisterEffect(e1) + --defup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c513000087.con) + e2:SetValue(c513000087.val) + c:RegisterEffect(e2) + --only 1 can exists + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SUMMON) + e5:SetCondition(c513000087.excon) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetCode(EFFECT_SPSUMMON_CONDITION) + e7:SetValue(c513000087.splimit) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_SELF_DESTROY) + e8:SetCondition(c513000087.descon) + c:RegisterEffect(e8) +end +function c513000087.tglimit(e,c) + return c~=e:GetHandler() +end +function c513000087.con(e) + return e:GetHandler():IsDefensePos() +end +function c513000087.val(e,c) + local def=0 + local g=Duel.GetMatchingGroup(Card.IsFaceup,c:GetControler(),LOCATION_MZONE,0,c) + local tc=g:GetFirst() + while tc do + local cdef=tc:GetDefense() + def=def+(cdef>=0 and cdef or 0) + tc=g:GetNext() + end + return def +end +function c513000087.exfilter(c,fid) + return c:IsFaceup() and c:IsCode(100000001) and (fid==nil or c:GetFieldID()1 end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c513000090.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetDecktopGroup(tp,2) + Duel.Draw(tp,2,REASON_EFFECT) + if g:FilterCount(Card.IsLocation,nil,LOCATION_HAND)==2 then + local tc=g:GetFirst() + while tc do + Duel.MoveToField(tc,tp,tp,LOCATION_MZONE,POS_FACEDOWN_DEFENSE,true) + tc:SetStatus(STATUS_SUMMON_TURN,true) + tc=g:GetNext() + end + Duel.RaiseEvent(g,EVENT_MSET,e,REASON_EFFECT,tp,tp,0) + end +end diff --git a/script/c513000091.lua b/script/c513000091.lua new file mode 100644 index 00000000..b5df47d0 --- /dev/null +++ b/script/c513000091.lua @@ -0,0 +1,51 @@ +--Jurassic Impact +function c513000091.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c513000091.condition) + e1:SetTarget(c513000091.target) + e1:SetOperation(c513000091.activate) + c:RegisterEffect(e1) +end +function c513000091.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)0 +end diff --git a/script/c513000094.lua b/script/c513000094.lua new file mode 100644 index 00000000..66a14229 --- /dev/null +++ b/script/c513000094.lua @@ -0,0 +1,95 @@ +--未来融合-フューチャー・フュージョン +function c513000094.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000094.target) + e1:SetOperation(c513000094.activate) + c:RegisterEffect(e1) +end +function c513000094.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() +end +function c513000094.filter2(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) +end +function c513000094.filter3(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c513000094.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c513000094.filter1,tp,LOCATION_DECK,0,nil) + local res=Duel.IsExistingMatchingCard(c513000094.filter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c513000094.filter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c513000094.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c513000094.filter2,tp,LOCATION_DECK,0,nil,e) + local sg1=Duel.GetMatchingGroup(c513000094.filter3,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c513000094.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + if not tc:IsLocation(LOCATION_MZONE) then return end + tc:CompleteProcedure() + Duel.Equip(tp,c,tc) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c513000094.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c513000094.eqlimit(e,c) + return e:GetLabelObject()==c +end diff --git a/script/c513000095.lua b/script/c513000095.lua new file mode 100644 index 00000000..957437b0 --- /dev/null +++ b/script/c513000095.lua @@ -0,0 +1,82 @@ +--黒の魔法神官 +function c513000095.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c513000095.spcon) + e2:SetOperation(c513000095.spop) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(88619463,0)) + e3:SetCategory(CATEGORY_NEGATE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c513000095.discon) + e3:SetTarget(c513000095.distg) + e3:SetOperation(c513000095.disop) + c:RegisterEffect(e3) + --atk change + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_BATTLE_START) + e4:SetRange(LOCATION_MZONE) + e4:SetOperation(c513000095.atkop) + c:RegisterEffect(e4) +end +function c513000095.rfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsLevelAbove(6) +end +function c513000095.spcon(e,c) + if c==nil then return true end + return Duel.CheckReleaseGroup(c:GetControler(),c513000095.rfilter,2,nil) +end +function c513000095.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),c513000095.rfilter,2,2,nil) + Duel.Release(g,REASON_COST) +end +function c513000095.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and re:IsActiveType(TYPE_TRAP) and Duel.IsChainNegatable(ev) +end +function c513000095.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c513000095.disop(e,tp,eg,ep,ev,re,r,rp,chk) + if e:GetHandler():IsFacedown() or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c513000095.filter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c513000095.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + local atk=Duel.GetMatchingGroupCount(c513000095.filter,tp,LOCATION_GRAVE,0,nil)*500 + if tc then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c513000096.lua b/script/c513000096.lua new file mode 100644 index 00000000..1ed52b5d --- /dev/null +++ b/script/c513000096.lua @@ -0,0 +1,96 @@ +--クリアー・バイス・ドラゴン +function c513000096.initial_effect(c) + --remove att + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_REMOVE_ATTRIBUTE) + e1:SetValue(ATTRIBUTE_DARK) + 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_UPDATE_ATTACK) + e2:SetCondition(c513000096.atkcon) + e2:SetValue(c513000096.atkval) + c:RegisterEffect(e2) + --to defense + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_BATTLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c513000096.poscon) + e3:SetOperation(c513000096.posop) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c513000096.desreptg) + c:RegisterEffect(e4) + --Negate + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(12298909,0)) + e5:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_CHAINING) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e5:SetRange(LOCATION_MZONE) + e5:SetCondition(c513000096.discon) + e5:SetCost(c513000096.discost) + e5:SetTarget(c513000096.distg) + e5:SetOperation(c513000096.disop) + c:RegisterEffect(e5) +end +function c513000096.atkcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL + and Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget()~=nil +end +function c513000096.atkval(e,c) + return Duel.GetAttackTarget():GetAttack()*2 +end +function c513000096.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetAttackedCount()>0 +end +function c513000096.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsAttackPos() then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c513000096.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if chk==0 then return c:IsReason(REASON_BATTLE) and c:IsFaceup() and g:GetCount()>0 end + if Duel.SelectYesNo(tp,aux.Stringid(511000174,0)) then + Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + return true + else return false end +end +function c513000096.discon(e,tp,eg,ep,ev,re,r,rp) + if e==re or e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) or not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tg:IsContains(e:GetHandler()) +end +function c513000096.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD,nil) +end +function c513000096.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c513000096.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c513000097.lua b/script/c513000097.lua new file mode 100644 index 00000000..fc9114a6 --- /dev/null +++ b/script/c513000097.lua @@ -0,0 +1,35 @@ +--女教皇の錫杖 +function c513000097.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c513000097.condition) + e1:SetTarget(c513000097.target) + e1:SetOperation(c513000097.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c513000097.handcon) + c:RegisterEffect(e2) +end +function c513000097.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c513000097.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c513000097.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.BreakEffect() + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end +function c513000097.handcon(e) + return Duel.GetFieldGroupCount(e:GetHandler():GetControler(),LOCATION_MZONE,0)==0 +end diff --git a/script/c513000098.lua b/script/c513000098.lua new file mode 100644 index 00000000..b3f16f54 --- /dev/null +++ b/script/c513000098.lua @@ -0,0 +1,52 @@ +--Sin Cross +function c513000098.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000098.target) + e1:SetOperation(c513000098.activate) + c:RegisterEffect(e1) +end +function c513000098.filter(c,e,tp) + return c:IsSetCard(0x23) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c513000098.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c513000098.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c513000098.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c513000098.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c513000098.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP)>0 then + tc:RegisterFlagEffect(513000098,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetTarget(c513000098.rmtg) + e1:SetOperation(c513000098.rmop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c513000098.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc and tc:GetFlagEffect(513000098)~=0 end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c513000098.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc and tc:GetFlagEffect(513000098)~=0 then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c513000099.lua b/script/c513000099.lua new file mode 100644 index 00000000..77eb215f --- /dev/null +++ b/script/c513000099.lua @@ -0,0 +1,45 @@ +--Sin Force +function c513000099.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000099.target) + e1:SetOperation(c513000099.activate) + c:RegisterEffect(e1) +end +function c513000099.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c513000099.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --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) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c513000099.efilter) + c:RegisterEffect(e3,true) + end +end +function c513000099.efilter(e,te) + return te:IsActiveType(TYPE_SPELL) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end diff --git a/script/c513000100.lua b/script/c513000100.lua new file mode 100644 index 00000000..bf76158c --- /dev/null +++ b/script/c513000100.lua @@ -0,0 +1,38 @@ +--Scrap-Iron Barricade +function c513000100.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c513000100.target) + e1:SetOperation(c513000100.activate) + c:RegisterEffect(e1) +end +function c513000100.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c513000100.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsCanTurnSet() then + Duel.BreakEffect() + c:CancelToGrave() + Duel.ChangePosition(c,POS_FACEDOWN) + Duel.RaiseEvent(c,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) + end + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(c513000100.indval) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c513000100.indval(e,re,tp) + return e:GetOwner():GetControler()~=tp +end diff --git a/script/c513000101.lua b/script/c513000101.lua new file mode 100644 index 00000000..3b6ddc2b --- /dev/null +++ b/script/c513000101.lua @@ -0,0 +1,31 @@ +--Scrap-Iron Pitfall +function c513000101.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c513000101.target) + e1:SetOperation(c513000101.activate) + c:RegisterEffect(e1) +end +function c513000101.filter(c,e,tp) + return c:GetSummonPlayer()~=tp and c:IsAbleToHand() and (not e or c:IsRelateToEffect(e)) +end +function c513000101.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c513000101.filter,nil,nil,tp) + if chk==0 then return g:GetCount()==1 end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c513000101.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c513000101.filter,nil,e,tp) + Duel.SendtoHand(g,nil,REASON_EFFECT) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsCanTurnSet() then + Duel.BreakEffect() + c:CancelToGrave() + Duel.ChangePosition(c,POS_FACEDOWN) + Duel.RaiseEvent(c,EVENT_SSET,e,REASON_EFFECT,tp,tp,0) + end +end diff --git a/script/c513000102.lua b/script/c513000102.lua new file mode 100644 index 00000000..516edf1a --- /dev/null +++ b/script/c513000102.lua @@ -0,0 +1,58 @@ +--Destiny Activator +function c513000102.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c513000102.target) + e1:SetOperation(c513000102.activate) + c:RegisterEffect(e1) +end +function c513000102.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1) +end +function c513000102.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local p,val=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.DiscardDeck(p,val,REASON_EFFECT)>0 then + local tc=Duel.GetOperatedGroup():GetFirst() + local tpe=0 + if tc:IsType(TYPE_MONSTER) then + tpe=TYPE_MONSTER + elseif tc:IsType(TYPE_SPELL) then + tpe=TYPE_SPELL + else + tpe=TYPE_TRAP + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DRAW) + e1:SetLabel(tpe) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c513000102.drcon) + e1:SetOperation(c513000102.drop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c513000102.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_DRAW and eg:GetCount()==1 +end +function c513000102.drop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local hg=eg:Filter(Card.IsLocation,nil,LOCATION_HAND) + local hc=hg:GetFirst() + if hg:GetCount()==0 then return end + Duel.ConfirmCards(tp,hg) + Duel.ShuffleHand(1-tp) + if hc:IsType(e:GetLabel()) and Duel.Destroy(c,REASON_EFFECT)>0 then + Duel.SetLP(1-tp,Duel.GetLP(1-tp)/2,REASON_EFFECT) + end +end diff --git a/script/c513000103.lua b/script/c513000103.lua new file mode 100644 index 00000000..c0c68fed --- /dev/null +++ b/script/c513000103.lua @@ -0,0 +1,22 @@ +--花騎士団の駿馬 +function c513000103.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c513000103.drtg) + e1:SetOperation(c513000103.drop) + c:RegisterEffect(e1) +end +function c513000103.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c513000103.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c513000104.lua b/script/c513000104.lua new file mode 100644 index 00000000..c9c6a6c6 --- /dev/null +++ b/script/c513000104.lua @@ -0,0 +1,50 @@ +--パワー・ウォール +function c513000104.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c513000104.condition) + e1:SetCost(c513000104.cost) + e1:SetOperation(c513000104.activate) + c:RegisterEffect(e1) +end +function c513000104.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetBattleDamage(tp)>=100 +end +function c513000104.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local dam=Duel.GetBattleDamage(tp) + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if ct==1 then + Duel.DiscardDeck(tp,1,REASON_COST) + e:SetLabel(1) + else + local t={} + local l=1 + while dam>0 and ct>0 do + dam=dam-100 + ct=ct-1 + t[l]=l + l=l+1 + end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(85087012,2)) + local ac=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.DiscardDeck(tp,ac,REASON_COST) + e:SetLabel(ac*100) + end +end +function c513000104.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c513000104.damop) + e1:SetLabel(e:GetLabel()) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c513000104.damop(e,tp,eg,ep,ev,re,r,rp) + local dam=ev-e:GetLabel() + if dam<0 then dam=0 end + Duel.ChangeBattleDamage(tp,dam) +end diff --git a/script/c513000105.lua b/script/c513000105.lua new file mode 100644 index 00000000..90c9a3fb --- /dev/null +++ b/script/c513000105.lua @@ -0,0 +1,79 @@ +--Magical Alms +function c513000105.initial_effect(c) + --activation + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000105.target) + e1:SetOperation(c513000105.activate) + c:RegisterEffect(e1) + --adjust + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(512000011,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetOperation(c513000105.gop) + c:RegisterEffect(e2) +end +function c513000105.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) +end +function c513000105.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c513000105.gop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local turnp=Duel.GetTurnPlayer() + local g=Duel.AnnounceNumber(turnp,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126--,127,128,129,130,131,132,133,134,135,136,137,138,139,140 + ) + local val=Duel.Recover(turnp,500*g,REASON_EFFECT) + Duel.Recover(1-turnp,val,REASON_EFFECT) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_SZONE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabel(0) + e1:SetOperation(c513000105.regop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(512000011,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetLabel(g) + e2:SetLabelObject(e1) + e2:SetCondition(c513000105.damcon) + e2:SetOperation(c513000105.damop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) +end +function c513000105.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabel()>e:GetLabelObject():GetLabel() +end +function c513000105.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Damage(Duel.GetTurnPlayer(),e:GetLabel()*1000,REASON_EFFECT) +end +function c513000105.regop(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==Duel.GetTurnPlayer() then + local i=e:GetLabel() + e:SetLabel(i+1) + end +end diff --git a/script/c513000106.lua b/script/c513000106.lua new file mode 100644 index 00000000..97afbf36 --- /dev/null +++ b/script/c513000106.lua @@ -0,0 +1,50 @@ +--暗黒の召喚神 +function c513000106.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(100000069,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c513000106.cost) + e1:SetTarget(c513000106.target) + e1:SetOperation(c513000106.operation) + c:RegisterEffect(e1) +end +function c513000106.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() and Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 end + Duel.Release(e:GetHandler(),REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c513000106.filter(c,e,tp,code) + return c:IsCode(code)and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c513000106.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c513000106.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,6007213) + and Duel.IsExistingTarget(c513000106.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,32491822) + and Duel.IsExistingTarget(c513000106.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,69890967) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c513000106.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,6007213) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c513000106.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,32491822) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g3=Duel.SelectTarget(tp,c513000106.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,69890967) + g1:Merge(g2) + g1:Merge(g3) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,3,0,0) +end +function c513000106.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if g:GetCount()~=3 or ft<3 then return end + Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) +end diff --git a/script/c513000107.lua b/script/c513000107.lua new file mode 100644 index 00000000..6013575e --- /dev/null +++ b/script/c513000107.lua @@ -0,0 +1,64 @@ +--ハーピィ・レディ -鳳凰の陣- +function c513000107.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(c513000107.cost) + e1:SetTarget(c513000107.target) + e1:SetOperation(c513000107.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(513000107,ACTIVITY_ATTACK,c513000107.counterfilter) +end +function c513000107.counterfilter(c) + return not c:IsSetCard(0x64) +end +function c513000107.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(513000107,tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTarget(c513000107.atklimit) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c513000107.atklimit(e,c) + return c:IsSetCard(0x64) +end +function c513000107.cfilter(c) + return c:IsFaceup() and c:IsCode(76812113) +end +function c513000107.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c513000107.cfilter,tp,LOCATION_MZONE,0,nil) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,0,LOCATION_MZONE,1,nil) + and ct>0 end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c513000107.activate(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c513000107.cfilter,tp,LOCATION_MZONE,0,nil) + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + if ct<=0 or g:GetCount()<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=g:Select(tp,1,ct,nil) + Duel.HintSelection(sg) + if Duel.Destroy(sg,REASON_EFFECT)>0 then + local dg=Duel.GetOperatedGroup() + local tc=dg:GetFirst() + local atk=0 + while tc do + local tatk=tc:GetAttack() + if tatk>0 then atk=atk+tatk end + tc=dg:GetNext() + end + local lp=Duel.GetLP(1-tp) + if lp<=atk then + Duel.SetLP(1-tp,0) + else + Duel.SetLP(1-tp,lp-atk) + end + end +end diff --git a/script/c513000108.lua b/script/c513000108.lua new file mode 100644 index 00000000..07353072 --- /dev/null +++ b/script/c513000108.lua @@ -0,0 +1,109 @@ +--Infernity Des Gunman +function c513000108.initial_effect(c) + --Negate Damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511000035,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c513000108.con) + e1:SetCost(c513000108.cost) + e1:SetOperation(c513000108.op) + c:RegisterEffect(e1) + if not c513000108.global_check then + c513000108.global_check=true + c513000108[0]=0 + c513000108[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DAMAGE) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + ge1:SetOperation(c513000108.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c513000108.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c513000108.con(e,tp,eg,ep,ev,re,r,rp) + if ep==tp or Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 then return false end + local e1=Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_DAMAGE) + local e2=Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) + local rd=e1 and not e2 + local rr=not e1 and e2 + local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) + if ex and (cp==tp or cp==PLAYER_ALL) and not rd and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_NO_EFFECT_DAMAGE) then + e:SetLabel(cv) + return true + end + ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) + if ex and (cp==tp or cp==PLAYER_ALL) and rr and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_NO_EFFECT_DAMAGE) then + e:SetLabel(cv) + return true + end + return false +end +function c513000108.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c513000108.op(e,tp,eg,ep,ev,re,r,rp) + local val=e:GetLabel() + 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(c513000108.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 and c513000108[tp]>0 and Duel.SelectYesNo(tp,aux.Stringid(39910367,1)) then + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsType(TYPE_MONSTER) then + Duel.Damage(1-tp,c513000108[tp]+val,REASON_EFFECT) + else + Duel.Damage(tp,c513000108[tp],REASON_EFFECT) + end + Duel.ShuffleDeck(tp,REASON_EFFECT) + else + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(c513000108.damval) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) + end +end +function c513000108.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end +function c513000108.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end +function c513000108.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_EFFECT)>0 then + c513000108[ep]=c513000108[ep]+ev + end +end +function c513000108.clear(e,tp,eg,ep,ev,re,r,rp) + c513000108[0]=0 + c513000108[1]=0 +end diff --git a/script/c513000109.lua b/script/c513000109.lua new file mode 100644 index 00000000..8ee9a4db --- /dev/null +++ b/script/c513000109.lua @@ -0,0 +1,94 @@ +--Draw of Fate +function c513000109.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DRAW) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c513000109.condition) + e1:SetTarget(c513000109.target) + e1:SetOperation(c513000109.activate) + c:RegisterEffect(e1) +end +function c513000109.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c513000109.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsPlayerCanDraw(1-tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c513000109.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateAttack() and Duel.Draw(1-tp,1,REASON_EFFECT)~=0 then + Duel.BreakEffect() + local h1=Duel.GetDecktopGroup(tp,1):GetFirst() + Duel.Draw(tp,1,REASON_EFFECT) + if h1==0 then return end + local h2=Duel.GetDecktopGroup(1-tp,1):GetFirst() + Duel.Draw(1-tp,1,REASON_EFFECT) + if h2==0 then return end + Duel.ConfirmCards(tp,h1) + Duel.ConfirmCards(tp,h2) + local g=Group.FromCards(h1,h2) + g:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c513000109.regop) + e1:SetLabel(3) + e1:SetLabelObject(g) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + e2:SetLabelObject(e1) + e2:SetOperation(c513000109.regop2) + Duel.RegisterEffect(e2,tp) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(e3,tp) + local e4=e2:Clone() + e4:SetCode(EVENT_CHAINING) + Duel.RegisterEffect(e4,tp) + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetCountLimit(1) + e5:SetOperation(c513000109.winop) + e5:SetReset(RESET_PHASE+PHASE_END) + e5:SetLabelObject(e1) + Duel.RegisterEffect(e5,tp) + end +end +function c513000109.regop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if g:GetCount()==0 then return end + local tc=eg:GetFirst() + if tc==g:GetFirst() and (e:GetLabel()==3 or e:GetLabel()==1) then + e:SetLabel(e:GetLabel()-1) + end + if tc==g:GetNext() and (e:GetLabel()==3 or e:GetLabel()==2) then + e:SetLabel(e:GetLabel()-2) + end +end +function c513000109.regop2(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject():GetLabelObject() + if g:GetCount()==0 then return end + local tc=eg:GetFirst() + if tc==g:GetFirst() and (e:GetLabel()==3 or e:GetLabel()==1) then + e:GetLabelObject():SetLabel(e:GetLabel()-1) + end + if tc==g:GetNext() and (e:GetLabel()==3 or e:GetLabel()==2) then + e:GetLabelObject():SetLabel(e:GetLabel()-2) + end +end +function c513000109.winop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()==3 then + Duel.Win(PLAYER_NONE,0x57) + end + if e:GetLabelObject():GetLabel()==2 then + Duel.Win(tp,0x57) + end + if e:GetLabelObject():GetLabel()==1 then + Duel.Win(1-tp,0x57) + end +end diff --git a/script/c513000110.lua b/script/c513000110.lua new file mode 100644 index 00000000..76ca9f94 --- /dev/null +++ b/script/c513000110.lua @@ -0,0 +1,81 @@ +--Evil 1 +function c513000110.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c513000110.condition) + e1:SetOperation(c513000110.activate) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000186,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c513000110.descon) + e2:SetCost(c513000110.descost) + e2:SetTarget(c513000110.destg) + e2:SetOperation(c513000110.desop) + c:RegisterEffect(e2) +end +function c513000110.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d~=nil and d:IsFaceup() and not Duel.IsDamageCalculated() +end +function c513000110.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local c=e:GetHandler() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + d:RegisterEffect(e1) + local e2=e1:Clone() + a:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e3:SetOperation(c513000110.dop) + e3:SetReset(RESET_PHASE+PHASE_DAMAGE) + a:RegisterEffect(e3) +end +function c513000110.dop(e,tp,eg,ep,ev,re,r,rp) + local lp1=Duel.GetLP(tp)-1 + local lp2=Duel.GetLP(1-tp)-1 + Duel.ChangeBattleDamage(tp,lp1) + Duel.ChangeBattleDamage(1-tp,lp2) +end +function c513000110.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c513000110.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c513000110.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c513000110.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end diff --git a/script/c513000111.lua b/script/c513000111.lua new file mode 100644 index 00000000..2f0abfc0 --- /dev/null +++ b/script/c513000111.lua @@ -0,0 +1,51 @@ +--最終突撃命令 +function c513000111.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000111.target) + e1:SetOperation(c513000111.activate) + c:RegisterEffect(e1) + --Pos Change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_POSITION) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(POS_FACEUP_ATTACK) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + c:RegisterEffect(e3) +end +function c513000111.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetFieldGroup(tp,LOCATION_DECK,LOCATION_DECK) + local ct1=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local ct2=Duel.GetFieldGroupCount(tp,0,LOCATION_DECK) + local send=ct1+ct2 + if ct1>3 then send=send-3 end + if ct2>3 then send=send-3 end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,send,0,0) +end +function c513000111.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetFieldGroup(tp,LOCATION_DECK,0) + local g2=Duel.GetFieldGroup(tp,0,LOCATION_DECK) + local send=Group.CreateGroup() + if g1:GetCount()>3 then + local sg1=g1:Select(tp,3,3,nil) + g1:Sub(sg1) + send:Merge(g1) + end + if g2:GetCount()>3 then + local sg2=g2:Select(1-tp,3,3,nil) + g2:Sub(sg2) + send:Merge(g2) + end + Duel.DisableShuffleCheck() + Duel.SendtoGrave(send,REASON_EFFECT) + Duel.SortDecktop(tp,tp,3) + Duel.SortDecktop(1-tp,1-tp,3) +end diff --git a/script/c513000112.lua b/script/c513000112.lua new file mode 100644 index 00000000..50ebe406 --- /dev/null +++ b/script/c513000112.lua @@ -0,0 +1,75 @@ +--Abyss Boat Watchman +function c513000112.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(513000112,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c513000112.condition) + e1:SetTarget(c513000112.target) + e1:SetOperation(c513000112.operation) + c:RegisterEffect(e1) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(513000112,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c513000112.regcon) + e2:SetOperation(c513000112.regop) + c:RegisterEffect(e2) +end +function c513000112.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c513000112.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c513000112.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c513000112.regcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp +end +function c513000112.regop(e,tp,eg,ep,ev,re,r,rp) + --spsummon + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(2830693,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c513000112.spcon) + e1:SetTarget(c513000112.sptg) + e1:SetOperation(c513000112.spop) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) +end +function c513000112.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c513000112.filter(c,e,tp) + return (c:IsSetCard(0xec) or c:IsSetCard(0xb1)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000112.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c513000112.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c513000112.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c513000112.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c513000112.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c513000113.lua b/script/c513000113.lua new file mode 100644 index 00000000..69d98e93 --- /dev/null +++ b/script/c513000113.lua @@ -0,0 +1,27 @@ +--リバイバルスライム +function c513000113.initial_effect(c) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(37694547,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c513000113.spcon) + e3:SetTarget(c513000113.sptg) + e3:SetOperation(c513000113.spop) + c:RegisterEffect(e3) +end +function c513000113.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c513000113.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 c513000113.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c513000115.lua b/script/c513000115.lua new file mode 100644 index 00000000..c6baa05f --- /dev/null +++ b/script/c513000115.lua @@ -0,0 +1,44 @@ +--Kiteroid +function c513000115.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c513000115.op) + c:RegisterEffect(e1) + --no damage 2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000011,1)) + e2:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c513000115.con2) + e2:SetCost(c513000115.cost2) + e2:SetOperation(c513000115.op2) + c:RegisterEffect(e2) +end +function c513000115.op(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDiscardable() and ep==tp and Duel.GetAttackTarget()==nil and Duel.SelectYesNo(tp,aux.Stringid(81275309,0)) + and Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT+REASON_REPLACE+REASON_DISCARD) then + Duel.ChangeBattleDamage(tp,0) + end +end +function c513000115.con2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c513000115.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,513000115)==0 end + Duel.RegisterFlagEffect(tp,513000115,0,0,0) +end +function c513000115.op2(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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c513000115.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c513000115.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c513000116.lua b/script/c513000116.lua new file mode 100644 index 00000000..999ace11 --- /dev/null +++ b/script/c513000116.lua @@ -0,0 +1,41 @@ +--選ばれし者 +function c513000116.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000116.target) + e1:SetOperation(c513000116.activate) + c:RegisterEffect(e1) +end +function c513000116.spfilter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c513000116.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_HAND,0,2,e:GetHandler(),TYPE_SPELL+TYPE_TRAP) + and Duel.IsExistingMatchingCard(c513000116.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end +end +function c513000116.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g1=Duel.GetMatchingGroup(c513000116.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + local g2=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_HAND,0,nil,TYPE_SPELL+TYPE_TRAP) + if g1:GetCount()==0 or g2:GetCount()<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(21888494,0)) + local sg1=g1:Select(tp,1,1,nil) + local sc=sg1:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(21888494,1)) + local sg2=g2:Select(tp,2,2,nil) + sg1:Merge(sg2) + Duel.ConfirmCards(1-tp,sg1) + Duel.ShuffleHand(tp) + local rg=sg1:Select(1-tp,1,1,nil) + local tc=rg:GetFirst() + if tc:IsType(TYPE_MONSTER) and tc:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + Duel.SendtoGrave(sg2,REASON_EFFECT) + else + Duel.SendtoGrave(sg1,REASON_EFFECT) + end +end diff --git a/script/c513000117.lua b/script/c513000117.lua new file mode 100644 index 00000000..e959d067 --- /dev/null +++ b/script/c513000117.lua @@ -0,0 +1,61 @@ +--Circle of Life +function c513000117.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,1) + e2:SetLabel(0) + e2:SetCondition(c513000117.condition) + e2:SetValue(c513000117.aclimit) + c:RegisterEffect(e2) + --discard + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(512000006,0)) + e3:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c513000117.cost) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetOperation(c513000117.resop) + e4:SetLabelObject(e2) + c:RegisterEffect(e4) +end +function c513000117.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabel()==0 +end +function c513000117.aclimit(e,re,tp) + if not re:IsActiveType(TYPE_SPELL) or re:GetHandler()==e:GetHandler() then return false end + local c=re:GetHandler() + return not c:IsLocation(LOCATION_SZONE) or (Duel.GetTurnCount()-c:GetTurnID()<2 and c:GetFieldID()>e:GetHandler():GetFieldID()) + and c:GetControler()==Duel.GetTurnPlayer() +end +function c513000117.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c513000117.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetLabelObject():GetLabel()~=1 + and Duel.IsExistingMatchingCard(c513000117.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c513000117.cfilter,1,1,REASON_COST+REASON_DISCARD) + e:GetLabelObject():SetLabel(1) +end +function c513000117.resop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then + e:GetLabelObject():SetLabel(0) + end +end diff --git a/script/c513000118.lua b/script/c513000118.lua new file mode 100644 index 00000000..e92b0ed9 --- /dev/null +++ b/script/c513000118.lua @@ -0,0 +1,122 @@ +--Underworld Circle +function c513000118.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000118.target) + e1:SetOperation(c513000118.activate) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(512000007,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c513000118.sptg) + e2:SetOperation(c513000118.spop) + c:RegisterEffect(e2) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(513000118) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(1,0) + e1:SetValue(1) + c:RegisterEffect(e1) + if not c513000118.global_check then + c513000118.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c513000118.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(ge2,0) + end + + local f=Card.IsCanBeSpecialSummoned + Card.IsCanBeSpecialSummoned=function(c,e,tpe,tp,con,conr) + if Duel.IsPlayerAffectedByEffect(tp,513000118) then return c:IsType(TYPE_MONSTER) and f(c,e,tpe,tp,true,conr) end + return f(c,e,tpe,tp,con,conr) + end + local proc=Duel.SpecialSummonStep + Duel.SpecialSummonStep=function(tc,tpe,sump,tp,check,limit,pos) + if Duel.IsPlayerAffectedByEffect(sump,513000118) then proc(tc,tpe,sump,tp,true,limit,pos) else proc(tc,tpe,sump,tp,check,limit,pos) end + end + local proc2=Duel.SpecialSummon + Duel.SpecialSummon=function(g,tpe,sump,tp,check,limit,pos) + if Duel.IsPlayerAffectedByEffect(sump,513000118) then proc2(g,tpe,sump,tp,true,limit,pos) else proc2(g,tpe,sump,tp,check,limit,pos) end + end +end +function c513000118.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c513000118.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tg=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local sg=Duel.GetMatchingGroup(c513000118.filter,tp,LOCATION_DECK,LOCATION_DECK,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,tg:GetCount(),0,0) +end +function c513000118.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local sg=Duel.GetMatchingGroup(c513000118.filter,tp,LOCATION_DECK,LOCATION_DECK,nil) + local tg=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if tg:GetCount()>0 then + Duel.Destroy(tg,REASON_EFFECT) + end + if sg:GetCount()>0 then + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) + end +end +function c513000118.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c513000118.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000118.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_GRAVE) +end +function c513000118.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000118.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c513000118.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SpecialSummonStep(g1:GetFirst(),0,tp,tp,false,false,POS_FACEUP) + end + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c513000118.spfilter,1-tp,LOCATION_GRAVE,0,1,nil,e,1-tp) + and Duel.SelectYesNo(1-tp,aux.Stringid(62742651,1)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(1-tp,c513000118.spfilter,1-tp,LOCATION_GRAVE,0,1,1,nil,e,1-tp) + Duel.SpecialSummonStep(g2:GetFirst(),0,1-tp,1-tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() +end +function c513000118.checkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsFaceup,nil) + local tc=g:GetFirst() + while tc do + if Duel.IsPlayerAffectedByEffect(tc:GetSummonPlayer(),513000118) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetCondition(c513000118.recon) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + end + tc=g:GetNext() + end +end +function c513000118.recon(e) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and Duel.IsPlayerAffectedByEffect(c:GetSummonPlayer(),513000118) +end diff --git a/script/c513000119.lua b/script/c513000119.lua new file mode 100644 index 00000000..8b409e0a --- /dev/null +++ b/script/c513000119.lua @@ -0,0 +1,30 @@ +--Card Hexative +function c513000119.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c513000119.target) + e1:SetOperation(c513000119.activate) + c:RegisterEffect(e1) +end +function c513000119.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and chkc:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,0,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(19059929,0)) + Duel.SelectTarget(tp,Card.IsFacedown,tp,0,LOCATION_SZONE,1,9,nil) +end +function c513000119.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c513000120.lua b/script/c513000120.lua new file mode 100644 index 00000000..16dacc7c --- /dev/null +++ b/script/c513000120.lua @@ -0,0 +1,91 @@ +--人造人間-サイコ・ロード +function c513000120.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c513000120.spcon) + e2:SetOperation(c513000120.spop) + c:RegisterEffect(e2) + --cannot trigger + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_TRIGGER) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0xa,0xa) + e3:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_TRAP)) + c:RegisterEffect(e3) + --disable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DISABLE) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e4:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_TRAP)) + c:RegisterEffect(e4) + --disable effect + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_CHAIN_SOLVING) + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c513000120.disop) + c:RegisterEffect(e5) + --disable trap monster + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e6:SetRange(LOCATION_MZONE) + e6:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e6:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_TRAP)) + c:RegisterEffect(e6) + --destroy + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(35803249,0)) + e7:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetRange(LOCATION_MZONE) + e7:SetCountLimit(1) + e7:SetTarget(c513000120.destg) + e7:SetOperation(c513000120.desop) + c:RegisterEffect(e7) +end +function c513000120.disop(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if tl==LOCATION_SZONE and re:IsActiveType(TYPE_TRAP) then + Duel.NegateEffect(ev) + end +end +function c513000120.spfilter(c) + return c:IsFaceup() and c:IsCode(77585513) and c:IsAbleToGraveAsCost() +end +function c513000120.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c513000120.spfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c513000120.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c513000120.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c513000120.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,0,LOCATION_SZONE+LOCATION_HAND,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsType,tp,0,LOCATION_SZONE+LOCATION_HAND,nil,TYPE_TRAP) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,sg:GetCount()*300) +end +function c513000120.desop(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + local g2=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_SZONE,nil) + g1:Merge(g2) + Duel.ConfirmCards(tp,g1) + Duel.ShuffleHand(1-tp) + local sg=Duel.GetMatchingGroup(Card.IsType,tp,0,LOCATION_SZONE+LOCATION_HAND,nil,TYPE_TRAP) + local ct=Duel.Destroy(sg,REASON_EFFECT) + Duel.Damage(1-tp,ct*300,REASON_EFFECT) +end diff --git a/script/c513000121.lua b/script/c513000121.lua new file mode 100644 index 00000000..4be400f3 --- /dev/null +++ b/script/c513000121.lua @@ -0,0 +1,23 @@ +--Anti-Magic Arrows +function c513000121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetOperation(c513000121.activate) + c:RegisterEffect(e1) +end +function c513000121.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(c513000121.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c513000121.aclimit(e,re,tp) + return re:GetHandler():IsFacedown() +end diff --git a/script/c513000122.lua b/script/c513000122.lua new file mode 100644 index 00000000..49469fd7 --- /dev/null +++ b/script/c513000122.lua @@ -0,0 +1,23 @@ +--Magic Removal Virus Cannon +function c513000122.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c513000122.target) + e1:SetOperation(c513000122.activate) + c:RegisterEffect(e1) +end +function c513000122.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGrave() +end +function c513000122.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGrave,tp,0,LOCATION_DECK+LOCATION_HAND,1,nil) end + local sg=Duel.GetMatchingGroup(c513000122.filter,tp,0,LOCATION_DECK+LOCATION_HAND,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,sg,sg:GetCount(),0,0) +end +function c513000122.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c513000122.filter,tp,0,LOCATION_DECK+LOCATION_HAND,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c513000123.lua b/script/c513000123.lua new file mode 100644 index 00000000..e0014a2f --- /dev/null +++ b/script/c513000123.lua @@ -0,0 +1,25 @@ +--Blackwing - Pinaka the Waxing Moon +function c513000123.initial_effect(c) + --add to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(513000123,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DESTROYED) + e1:SetTarget(c513000123.target) + e1:SetOperation(c513000123.operation) + c:RegisterEffect(e1) +end +function c513000123.filter(c) + return c:IsSetCard(0x33) and c:IsAbleToHand() +end +function c513000123.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c513000123.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c513000123.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c513000123.filter,tp,LOCATION_GRAVE,0,1,999,nil) + Duel.SendtoHand(g,nil,REASON_EFFECT) +end diff --git a/script/c513000124.lua b/script/c513000124.lua new file mode 100644 index 00000000..16d6b9ef --- /dev/null +++ b/script/c513000124.lua @@ -0,0 +1,133 @@ +--Infernity Zero (Anime) +--scripted by Keddy +function c513000124.initial_effect(c) + c:EnableReviveLimit() + --connot special summon + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e0) + --Survive + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(511002521) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c513000124.spcost) + e1:SetTarget(c513000124.sptg) + e1:SetOperation(c513000124.spop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_LOSE_LP) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(1,0) + e2:SetValue(1) + c:RegisterEffect(e2) + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + --counter + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_DAMAGE) + e4:SetCondition(c513000124.ctcon) + e4:SetOperation(c513000124.ctop) + c:RegisterEffect(e4) + --self destroy + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EFFECT_SELF_DESTROY) + e6:SetCondition(c513000124.sdcon) + c:RegisterEffect(e6) + if not c513000124.global_check then + c513000124.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD) + ge1:SetCode(EFFECT_CANNOT_LOSE_LP) + ge1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + ge1:SetTargetRange(1,0) + ge1:SetLabel(0) + ge1:SetCondition(c513000124.con2) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetLabel(1) + Duel.RegisterEffect(ge2,1) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetOperation(c513000124.op) + Duel.RegisterEffect(ge3,0) + end +end +function c513000124.con2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(e:GetLabel(),511002521)>0 +end +function c513000124.op(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + if Duel.GetLP(0)<=0 and ph~=PHASE_DAMAGE then + Duel.RaiseEvent(Duel.GetMatchingGroup(nil,0,0xff,0,nil),511002521,e,0,0,0,0) + Duel.ResetFlagEffect(0,511002521) + end + if Duel.GetLP(1)<=0 and ph~=PHASE_DAMAGE then + Duel.RaiseEvent(Duel.GetMatchingGroup(nil,1,0xff,0,nil),511002521,e,0,0,0,0) + Duel.ResetFlagEffect(1,511002521) + end + if Duel.GetLP(0)>0 and Duel.GetFlagEffect(0,511002521)==0 then + Duel.RegisterFlagEffect(0,511002521,0,0,1) + end + if Duel.GetLP(1)>0 and Duel.GetFlagEffect(1,511002521)==0 then + Duel.RegisterFlagEffect(1,511002521,0,0,1) + end +end +function c513000124.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_CHAIN) + e1:SetCode(EFFECT_CANNOT_LOSE_LP) + Duel.RegisterEffect(e1,tp) +end +function c513000124.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c513000124.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then + c:CompleteProcedure() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c513000124.ctcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c513000124.ctop(e,tp,eg,ep,ev,re,r,rp) + local ct=math.floor(ev/500) + e:GetHandler():AddCounter(0x1097,ct) +end +function c513000124.sdcon(e) + return e:GetHandler():GetCounter(0x1097)>=3 +end diff --git a/script/c513000125.lua b/script/c513000125.lua new file mode 100644 index 00000000..6bb05b57 --- /dev/null +++ b/script/c513000125.lua @@ -0,0 +1,124 @@ +--Fog Castle (Anime) +--scripted by Keddy +function c513000125.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_FZONE) + e2:SetTarget(c513000125.destg) + e2:SetValue(c513000125.desval) + e2:SetOperation(c513000125.desop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ADJUST) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c513000125.chkop) + c:RegisterEffect(e3) + --salvage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(111215001,0)) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetCondition(c513000125.thcon) + e4:SetCost(c513000125.thcost) + e4:SetTarget(c513000125.thtg) + e4:SetOperation(c513000125.thop) + c:RegisterEffect(e4) +end +function c513000125.dfilter(c,tp) + return c:IsControler(tp) and c:IsReason(REASON_BATTLE) +end +function c513000125.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c513000125.dfilter,nil,tp) + if chk==0 then return g:GetCount()>0 end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return Duel.SelectYesNo(tp,aux.Stringid(40945356,0)) +end +function c513000125.desval(e,c) + return c:IsControler(e:GetHandlerPlayer()) and c:IsReason(REASON_BATTLE) +end +function c513000125.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0) + local nseq=0 + if s==1 then nseq=0 + elseif s==2 then nseq=1 + elseif s==4 then nseq=2 + elseif s==8 then nseq=3 + else nseq=4 end + Duel.MoveSequence(tc,nseq) + c:AddCounter(0x1110,1) + c:ResetEffect(RESET_DISABLE,RESET_EVENT) +end +function c513000125.chkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetCounter(0x1110)>0 and c:GetFlagEffect(513000125)~=c:GetCounter(0x1110) then + if 5-c:GetCounter(0x1110)=5 +end +function c513000125.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if chk==0 then return hg:GetCount()>0 and hg:FilterCount(Card.IsAbleToGraveAsCost,nil)==hg:GetCount() + and e:GetHandler():IsAbleToGraveAsCost() end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:AddCard(e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) +end +function c513000125.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_GRAVE,0,4,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_GRAVE,0,4,4,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,4,0,0) +end +function c513000125.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end diff --git a/script/c513000126.lua b/script/c513000126.lua new file mode 100644 index 00000000..b3c8e103 --- /dev/null +++ b/script/c513000126.lua @@ -0,0 +1,43 @@ +--Arcana Force VIII - The Strength (Anime) +--scripted by Keddy +function c513000126.initial_effect(c) + --coin + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(513000126,0)) + e1:SetCategory(CATEGORY_COIN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c513000126.cointg) + e1:SetOperation(c513000126.coinop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c513000126.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c513000126.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local res=0 + if c:IsHasEffect(73206827) then + res=1-Duel.SelectOption(tp,60,61) + else res=Duel.TossCoin(tp,1) end + if res==0 then + local g=Duel.GetMatchingGroup(Card.IsControlerCanBeChanged,tp,LOCATION_MZONE,0,c) + Duel.GetControl(g,1-tp) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + Duel.GetControl(tc,tp) + end + end +end diff --git a/script/c513000127.lua b/script/c513000127.lua new file mode 100644 index 00000000..222ac474 --- /dev/null +++ b/script/c513000127.lua @@ -0,0 +1,94 @@ +--Gjallarhorn +--scripted by Keddy +function c513000127.initial_effect(c) + --Return + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c513000127.condition) + e1:SetTarget(c513000127.target) + e1:SetOperation(c513000127.activate) + c:RegisterEffect(e1) +end +function c513000127.cfilter(c,tp) + return c:IsFaceup() and c:IsRace(RACE_DEVINE) +end +function c513000127.condition(e,tp,eg,ep,ev,re,r,rp,chk) + return eg:IsExists(c513000127.cfilter,1,nil,tp) +end +function c513000127.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetLabelObject(e) + e1:SetOperation(c513000127.resetop) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + c:SetTurnCounter(0) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetLabel(3) + e2:SetCountLimit(1) + e2:SetCondition(c513000127.remcon) + e2:SetOperation(c513000127.remop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,3) + c:RegisterEffect(e2) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,3) + c513000127[c]=e2 +end +function c513000127.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) + e3:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DEVINE)) + Duel.RegisterEffect(e3,tp) +end +function c513000127.resetop(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetType(EFFECT_TYPE_QUICK_O) +end +function c513000127.remcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c513000127.remop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==3 then + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE+CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(513000127) + e2:SetCountLimit(1) + e2:SetTarget(c513000127.damtg) + e2:SetOperation(c513000127.damop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) + c:RegisterEffect(e2) + c:ResetFlagEffect(1082946) + Duel.RaiseSingleEvent(c,513000127,e,r,rp,ep,0) + end +end +function c513000127.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetSum(Card.GetAttack)) +end +function c513000127.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,nil) + g:AddCard(c) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + Duel.Damage(1-tp,g:GetSum(Card.GetAttack),REASON_EFFECT) +end diff --git a/script/c513000128.lua b/script/c513000128.lua new file mode 100644 index 00000000..c338adf6 --- /dev/null +++ b/script/c513000128.lua @@ -0,0 +1,73 @@ +--Attribute Gravity (Anime) +--scripted by Keddy +function c513000128.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --must attack (light) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c513000128.atktg) + e2:SetLabel(ATTRIBUTE_LIGHT) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_MUST_BE_ATTACKED) + e3:SetTarget(c513000128.atktg2) + e3:SetValue(c513000128.atkval) + c:RegisterEffect(e3) + local e5=e2:Clone() + e5:SetLabel(ATTRIBUTE_DARK) + c:RegisterEffect(e2) + local e6=e3:Clone() + e6:SetLabel(ATTRIBUTE_DARK) + c:RegisterEffect(e6) + local e8=e2:Clone() + e8:SetLabel(ATTRIBUTE_WATER) + c:RegisterEffect(e8) + local e9=e3:Clone() + e9:SetLabel(ATTRIBUTE_WATER) + c:RegisterEffect(e9) + local e11=e2:Clone() + e11:SetLabel(ATTRIBUTE_FIRE) + c:RegisterEffect(e11) + local e12=e3:Clone() + e12:SetLabel(ATTRIBUTE_FIRE) + c:RegisterEffect(e12) + local e14=e2:Clone() + e14:SetLabel(ATTRIBUTE_WIND) + c:RegisterEffect(e14) + local e15=e3:Clone() + e15:SetLabel(ATTRIBUTE_WIND) + c:RegisterEffect(e15) + local e17=e2:Clone() + e17:SetLabel(ATTRIBUTE_DEVINE) + c:RegisterEffect(e17) + local e18=e3:Clone() + e18:SetLabel(ATTRIBUTE_DEVINE) + c:RegisterEffect(e18) + local e20=e2:Clone() + e20:SetLabel(ATTRIBUTE_EARTH) + c:RegisterEffect(e20) + local e21=e3:Clone() + e21:SetLabel(ATTRIBUTE_EARTH) + c:RegisterEffect(e21) +end +function c513000128.atktg(e,c) + return c:IsAttribute(e:GetLabel()) and c:IsAttackPos() + and Duel.IsExistingMatchingCard(c513000128.adval,c:GetControler(),0,LOCATION_MZONE,1,nil,e:GetLabel()) +end +function c513000128.atktg2(e,c) + return c:IsAttribute(e:GetLabel()) + and Duel.IsExistingMatchingCard(c513000128.adval,c:GetControler(),0,LOCATION_MZONE,1,nil,e:GetLabel()) +end +function c513000128.adval(c,att) + return c:IsFaceup() and c:IsAttribute(att) +end +function c513000128.atkval(e,c) + return not c:IsImmuneToEffect(e) and c:IsAttribute(e:GetLabel()) +end diff --git a/script/c5133471.lua b/script/c5133471.lua index 915f59c9..7296246a 100644 --- a/script/c5133471.lua +++ b/script/c5133471.lua @@ -1,56 +1,56 @@ ---ギャラクシー・サイクロン -function c5133471.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(5133471,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c5133471.target) - e1:SetOperation(c5133471.activate) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(5133471,1)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1,5133471) - e2:SetCondition(aux.exccon) - e2:SetCost(c5133471.descost) - e2:SetTarget(c5133471.destg) - e2:SetOperation(c5133471.activate) - c:RegisterEffect(e2) -end -function c5133471.filter(c) - return c:IsFacedown() and c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c5133471.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c5133471.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c5133471.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c5133471.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c5133471.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c5133471.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c5133471.filter2(c) - return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c5133471.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c5133471.filter2(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c5133471.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c5133471.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end +--ギャラクシー・サイクロン +function c5133471.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5133471,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c5133471.target) + e1:SetOperation(c5133471.activate) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5133471,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,5133471) + e2:SetCondition(aux.exccon) + e2:SetCost(c5133471.descost) + e2:SetTarget(c5133471.destg) + e2:SetOperation(c5133471.activate) + c:RegisterEffect(e2) +end +function c5133471.filter(c) + return c:IsFacedown() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c5133471.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c5133471.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c5133471.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c5133471.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c5133471.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c5133471.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c5133471.filter2(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c5133471.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c5133471.filter2(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c5133471.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c5133471.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end diff --git a/script/c51402908.lua b/script/c51402908.lua index 21ef071f..82188be1 100644 --- a/script/c51402908.lua +++ b/script/c51402908.lua @@ -10,6 +10,7 @@ function c51402908.initial_effect(c) --spsummon local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c51402908.spr) c:RegisterEffect(e2) diff --git a/script/c51405049.lua b/script/c51405049.lua index e36da841..316dae66 100644 --- a/script/c51405049.lua +++ b/script/c51405049.lua @@ -1,62 +1,62 @@ ---ワンチャン!? -function c51405049.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c51405049.condition) - e1:SetTarget(c51405049.target) - e1:SetOperation(c51405049.activate) - c:RegisterEffect(e1) -end -function c51405049.cfilter(c) - return c:IsFaceup() and c:GetLevel()==1 -end -function c51405049.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c51405049.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c51405049.filter(c) - return c:GetLevel()==1 and c:IsAbleToHand() -end -function c51405049.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c51405049.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c51405049.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c51405049.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c51405049.regop) - e1:SetLabel(g:GetFirst():GetCode()) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetCountLimit(1) - e2:SetCondition(c51405049.damcon) - e2:SetOperation(c51405049.damop) - e2:SetReset(RESET_PHASE+PHASE_END) - e2:SetLabelObject(e1) - Duel.RegisterEffect(e2,tp) - end -end -function c51405049.regop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 then return end - local tc=eg:GetFirst() - if tc:IsCode(e:GetLabel()) then - e:SetLabel(0) - end -end -function c51405049.damcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetLabelObject():GetLabel()~=0 -end -function c51405049.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.Damage(tp,2000,REASON_EFFECT) -end +--ワンチャン!? +function c51405049.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c51405049.condition) + e1:SetTarget(c51405049.target) + e1:SetOperation(c51405049.activate) + c:RegisterEffect(e1) +end +function c51405049.cfilter(c) + return c:IsFaceup() and c:GetLevel()==1 +end +function c51405049.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c51405049.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c51405049.filter(c) + return c:GetLevel()==1 and c:IsAbleToHand() +end +function c51405049.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c51405049.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c51405049.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c51405049.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c51405049.regop) + e1:SetLabel(g:GetFirst():GetCode()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c51405049.damcon) + e2:SetOperation(c51405049.damop) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + Duel.RegisterEffect(e2,tp) + end +end +function c51405049.regop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then return end + local tc=eg:GetFirst() + if tc:IsCode(e:GetLabel()) then + e:SetLabel(0) + end +end +function c51405049.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabelObject():GetLabel()~=0 +end +function c51405049.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(tp,2000,REASON_EFFECT) +end diff --git a/script/c51435705.lua b/script/c51435705.lua index 29bb9595..5e0164f9 100644 --- a/script/c51435705.lua +++ b/script/c51435705.lua @@ -32,8 +32,8 @@ function c51435705.shtg(e,tp,eg,ep,ev,re,r,rp,chk) end function c51435705.shop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c51435705.filter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c51435705.filter),tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c51481927.lua b/script/c51481927.lua index 83463860..6406b374 100644 --- a/script/c51481927.lua +++ b/script/c51481927.lua @@ -6,17 +6,26 @@ function c51481927.initial_effect(c) e1:SetCode(EVENT_FREE_CHAIN) c:RegisterEffect(e1) --LP up + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e0:SetCode(EVENT_CHAINING) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e0:SetRange(LOCATION_SZONE) + e0:SetOperation(aux.chainreg) + c:RegisterEffect(e0) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(51481927,0)) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e2:SetCode(EVENT_CHAIN_SOLVED) e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c51481927.condition) e2:SetOperation(c51481927.operation) c:RegisterEffect(e2) end +function c51481927.condition(e,tp,eg,ep,ev,re,r,rp) + return re and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and re:GetHandler()~=e:GetHandler() and e:GetHandler():GetFlagEffect(1)>0 +end function c51481927.operation(e,tp,eg,ep,ev,re,r,rp) - local te=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_EFFECT) - if te:IsHasType(EFFECT_TYPE_ACTIVATE) and te:IsActiveType(TYPE_SPELL) and te:GetHandler()~=e:GetHandler() then - Duel.Recover(e:GetHandlerPlayer(),500,REASON_EFFECT) - end + Duel.Recover(e:GetHandlerPlayer(),500,REASON_EFFECT) end diff --git a/script/c51497409.lua b/script/c51497409.lua new file mode 100644 index 00000000..fcddd09f --- /dev/null +++ b/script/c51497409.lua @@ -0,0 +1,82 @@ +--DDD磐石王ダリウス +--D/D/D Boulder King Darius +--Scripted by Eerie Code +function c51497409.initial_effect(c) + c:EnableReviveLimit() + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_FIEND),3,2) + --Destroy and Draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51497409,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c51497409.cost) + e1:SetTarget(c51497409.ddtg) + e1:SetOperation(c51497409.ddop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51497409,1)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetCondition(c51497409.incon) + e2:SetCost(c51497409.cost) + e2:SetOperation(c51497409.inop) + c:RegisterEffect(e2) +end +function c51497409.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c51497409.ddfilter(c) + return c:IsFaceup() and c:IsSetCard(0xae) +end +function c51497409.ddtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c51497409.ddfilter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c51497409.ddfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c51497409.ddfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c51497409.ddop(e,tp,eg,ep,ev,re,r,rp) + local g,p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + g=g:Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)>0 then + Duel.Draw(p,d,REASON_EFFECT) + end +end +function c51497409.incon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsControler(1-tp) +end +function c51497409.inop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BATTLED) + e3:SetOperation(c51497409.desop) + e3:SetReset(RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e3) + end +end +function c51497409.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local dc=c:GetBattleTarget() + if dc and Duel.Destroy(dc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c51531505.lua b/script/c51531505.lua index f3b75b7c..72bbd11d 100644 --- a/script/c51531505.lua +++ b/script/c51531505.lua @@ -1,47 +1,47 @@ ---竜穴の魔術師 -function c51531505.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(51531505,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetCondition(c51531505.condition) - e2:SetCost(c51531505.cost) - e2:SetTarget(c51531505.target) - e2:SetOperation(c51531505.operation) - c:RegisterEffect(e2) -end -function c51531505.condition(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return tc and tc:IsSetCard(0x98) -end -function c51531505.cfilter(c) - return c:IsType(TYPE_PENDULUM) and c:IsDiscardable() -end -function c51531505.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c51531505.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c51531505.cfilter,1,1,REASON_COST+REASON_DISCARD) -end -function c51531505.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c51531505.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c51531505.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c51531505.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c51531505.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c51531505.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--竜穴の魔術師 +function c51531505.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51531505,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c51531505.condition) + e2:SetCost(c51531505.cost) + e2:SetTarget(c51531505.target) + e2:SetOperation(c51531505.operation) + c:RegisterEffect(e2) +end +function c51531505.condition(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return tc and tc:IsSetCard(0x98) +end +function c51531505.cfilter(c) + return c:IsType(TYPE_PENDULUM) and c:IsDiscardable() +end +function c51531505.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c51531505.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c51531505.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c51531505.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c51531505.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c51531505.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c51531505.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c51531505.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c51531505.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c5153769.lua b/script/c5153769.lua new file mode 100644 index 00000000..e84989db --- /dev/null +++ b/script/c5153769.lua @@ -0,0 +1,29 @@ +--マジェスペクター・ガスト +function c5153769.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c5153769.target) + e1:SetOperation(c5153769.activate) + c:RegisterEffect(e1) +end +function c5153769.filter(c,e,tp) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsSetCard(0xd0) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c5153769.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c5153769.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c5153769.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c5153769.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c5153769.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c51543904.lua b/script/c51543904.lua index 2175996f..f66e532e 100644 --- a/script/c51543904.lua +++ b/script/c51543904.lua @@ -20,7 +20,7 @@ function c51543904.initial_effect(c) e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c51543904.discon) e2:SetCost(c51543904.discost) @@ -86,8 +86,7 @@ function c51543904.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c51543904.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c51549976.lua b/script/c51549976.lua index 59078a3d..77ea82ba 100644 --- a/script/c51549976.lua +++ b/script/c51549976.lua @@ -39,7 +39,7 @@ function c51549976.activate(e,tp,eg,ep,ev,re,r,rp) end function c51549976.actcon(e) local ph=Duel.GetCurrentPhase() - return ph>=PHASE_BATTLE and ph<=PHASE_DAMAGE_CAL + return ph>PHASE_MAIN1 and ph=8 and c:IsFusionAttribute(ATTRIBUTE_DARK) +end +function c51570882.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or aux.fuslimit(e,se,sp,st) +end +function c51570882.disfilter(c) + return c:IsFaceup() and not (c:GetAttack()==0 and c:IsDisabled()) +end +function c51570882.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c51570882.disfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c51570882.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c51570882.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c51570882.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + if tc:IsType(TYPE_TRAPMONSTER) then + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + end + end +end +function c51570882.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c51570882.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dg=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,dg,dg:GetCount(),0,0) +end +function c51570882.rmfilter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsLevelAbove(8) and c:IsAbleToRemove() +end +function c51570882.spop(e,tp,eg,ep,ev,re,r,rp) + local dg=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) + if Duel.Destroy(dg,REASON_EFFECT)==0 then return end + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c51570882.rmfilter,tp,LOCATION_GRAVE,0,c) + if g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsLocation(LOCATION_GRAVE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.SelectYesNo(tp,aux.Stringid(51570882,2)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=g:Select(tp,1,1,nil) + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c51589188.lua b/script/c51589188.lua index c0ec47e6..fe34a2ae 100644 --- a/script/c51589188.lua +++ b/script/c51589188.lua @@ -1,73 +1,73 @@ ---フォトン・トライデント -function c51589188.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(c51589188.condition) - e1:SetTarget(c51589188.target) - e1:SetOperation(c51589188.activate) - c:RegisterEffect(e1) -end -function c51589188.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c51589188.filter(c) - return c:IsFaceup() and c:IsSetCard(0x55) -end -function c51589188.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c51589188.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c51589188.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c51589188.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c51589188.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(700) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetDescription(aux.Stringid(51589188,0)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLE_DAMAGE) - e3:SetLabelObject(tc) - e3:SetCondition(c51589188.descon) - e3:SetTarget(c51589188.destg) - e3:SetOperation(c51589188.desop) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) - end -end -function c51589188.descon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and eg:GetFirst()==e:GetLabelObject() -end -function c51589188.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c51589188.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c51589188.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c51589188.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c51589188.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c51589188.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--フォトン・トライデント +function c51589188.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(c51589188.condition) + e1:SetTarget(c51589188.target) + e1:SetOperation(c51589188.activate) + c:RegisterEffect(e1) +end +function c51589188.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c51589188.filter(c) + return c:IsFaceup() and c:IsSetCard(0x55) +end +function c51589188.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c51589188.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c51589188.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c51589188.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c51589188.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(700) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetDescription(aux.Stringid(51589188,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetLabelObject(tc) + e3:SetCondition(c51589188.descon) + e3:SetTarget(c51589188.destg) + e3:SetOperation(c51589188.desop) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) + end +end +function c51589188.descon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and eg:GetFirst()==e:GetLabelObject() +end +function c51589188.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c51589188.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c51589188.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c51589188.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c51589188.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c51589188.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c51606429.lua b/script/c51606429.lua index 33d3726c..74db8ad8 100644 --- a/script/c51606429.lua +++ b/script/c51606429.lua @@ -32,14 +32,14 @@ function c51606429.target(e,tp,eg,ep,ev,re,r,rp,chk) if e:GetLabel()==0 then return false end e:SetLabel(0) return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,51606429,0x10db,0x11,3,0,0,RACE_WARRIOR,ATTRIBUTE_DARK) end + and Duel.IsPlayerCanSpecialSummonMonster(tp,51606429,0x10db,0x11,0,0,3,RACE_WARRIOR,ATTRIBUTE_DARK) end e:SetLabel(0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) end function c51606429.activate(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,51606429,0x10db,0x11,3,0,0,RACE_WARRIOR,ATTRIBUTE_DARK) then + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,51606429,0x10db,0x11,0,0,3,RACE_WARRIOR,ATTRIBUTE_DARK) then c:AddMonsterAttribute(TYPE_NORMAL) Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) c:AddMonsterAttributeComplete() diff --git a/script/c51644030.lua b/script/c51644030.lua new file mode 100644 index 00000000..74329f72 --- /dev/null +++ b/script/c51644030.lua @@ -0,0 +1,82 @@ +--ディアバウンド・カーネル +function c51644030.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51644030,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c51644030.atkop1) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51644030,1)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,51644030) + e2:SetCondition(c51644030.atkcon) + e2:SetTarget(c51644030.atktg) + e2:SetOperation(c51644030.atkop2) + c:RegisterEffect(e2) +end +function c51644030.atkop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c51644030.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c51644030.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return e:GetHandler():IsAbleToRemove() + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c51644030.atkop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsFaceup() then + local atk=c:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + if c:IsRelateToEffect(e) and not tc:IsHasEffect(EFFECT_REVERSE_UPDATE) then + Duel.BreakEffect() + if Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetLabel(Duel.GetTurnCount()) + e2:SetLabelObject(c) + e2:SetCondition(c51644030.retcon) + e2:SetOperation(c51644030.retop) + if Duel.GetCurrentPhase()==PHASE_STANDBY then + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,2) + else + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY) + end + Duel.RegisterEffect(e2,tp) + end + end + end +end +function c51644030.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()>e:GetLabel() +end +function c51644030.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c51670553.lua b/script/c51670553.lua index fc3a845c..4c13eb3f 100644 --- a/script/c51670553.lua +++ b/script/c51670553.lua @@ -1,80 +1,80 @@ ---魂を吸う竹光 -function c51670553.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c51670553.target) - e1:SetOperation(c51670553.operation) - c:RegisterEffect(e1) - --skip draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(51670553,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_DAMAGE) - e2:SetCondition(c51670553.skipcon) - e2:SetOperation(c51670553.skipop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_SZONE) - e3:SetCondition(c51670553.descon) - e3:SetOperation(c51670553.desop) - c:RegisterEffect(e3) -end -function c51670553.filter(c) - return c:GetEquipCount()~=0 and c:GetEquipGroup():IsExists(Card.IsSetCard,1,nil,0x60) -end -function c51670553.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c51670553.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c51670553.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - e:GetHandler():SetTurnCounter(0) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c51670553.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c51670553.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - c:SetCardTarget(tc) - end -end -function c51670553.skipcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - return tc and ep~=tp and r==REASON_BATTLE and (Duel.GetAttacker()==tc or Duel.GetAttackTarget()==tc) -end -function c51670553.skipop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_SZONE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetCode(EFFECT_SKIP_DP) - e1:SetCondition(c51670553.skipdp) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DRAW+RESET_OPPO_TURN) - e:GetHandler():RegisterEffect(e1) -end -function c51670553.skipdp(e) - local tc=e:GetHandler():GetFirstCardTarget() - return tc and c51670553.filter(tc) -end -function c51670553.descon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c51670553.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetTurnCounter() - ct=ct+1 - c:SetTurnCounter(ct) - if ct==2 then - Duel.Destroy(c,REASON_RULE) - end -end +--魂を吸う竹光 +function c51670553.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c51670553.target) + e1:SetOperation(c51670553.operation) + c:RegisterEffect(e1) + --skip draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51670553,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DAMAGE) + e2:SetCondition(c51670553.skipcon) + e2:SetOperation(c51670553.skipop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c51670553.descon) + e3:SetOperation(c51670553.desop) + c:RegisterEffect(e3) +end +function c51670553.filter(c) + return c:GetEquipCount()~=0 and c:GetEquipGroup():IsExists(Card.IsSetCard,1,nil,0x60) +end +function c51670553.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c51670553.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c51670553.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + e:GetHandler():SetTurnCounter(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c51670553.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c51670553.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + end +end +function c51670553.skipcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and ep~=tp and r==REASON_BATTLE and (Duel.GetAttacker()==tc or Duel.GetAttackTarget()==tc) +end +function c51670553.skipop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetCode(EFFECT_SKIP_DP) + e1:SetCondition(c51670553.skipdp) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DRAW+RESET_OPPO_TURN) + e:GetHandler():RegisterEffect(e1) +end +function c51670553.skipdp(e) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and c51670553.filter(tc) +end +function c51670553.descon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c51670553.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==2 then + Duel.Destroy(c,REASON_RULE) + end +end diff --git a/script/c51728779.lua b/script/c51728779.lua index c0ed5e39..aae709cc 100644 --- a/script/c51728779.lua +++ b/script/c51728779.lua @@ -20,6 +20,7 @@ function c51728779.initial_effect(c) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1,51728780) e2:SetCost(c51728779.cpcost) e2:SetTarget(c51728779.cptg) @@ -67,15 +68,12 @@ function c51728779.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) return tg and tg(e,tp,eg,ep,ev,re,r,rp,0,chkc) end if chk==0 then return Duel.IsExistingTarget(c51728779.cpfilter,tp,LOCATION_GRAVE,0,1,nil) end - e:SetProperty(EFFECT_FLAG_CARD_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) local g=Duel.SelectTarget(tp,c51728779.cpfilter,tp,LOCATION_GRAVE,0,1,1,nil) local te,ceg,cep,cev,cre,cr,crp=g:GetFirst():CheckActivateEffect(false,true,true) Duel.ClearTargetCard() g:GetFirst():CreateEffectRelation(e) local tg=te:GetTarget() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) if tg then tg(e,tp,ceg,cep,cev,cre,cr,crp,1) end te:SetLabelObject(e:GetLabelObject()) e:SetLabelObject(te) diff --git a/script/c51735257.lua b/script/c51735257.lua index 9b8d32de..8fc6b817 100644 --- a/script/c51735257.lua +++ b/script/c51735257.lua @@ -7,7 +7,7 @@ function c51735257.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(51735257,0)) e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c51788412.lua b/script/c51788412.lua new file mode 100644 index 00000000..8a8a12f8 --- /dev/null +++ b/script/c51788412.lua @@ -0,0 +1,52 @@ +--古代の機械混沌巨人 +function c51788412.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x7),4,true) + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --immune + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c51788412.efilter) + c:RegisterEffect(e2) + --activate limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetCondition(c51788412.actcon) + e3:SetValue(c51788412.actlimit) + c:RegisterEffect(e3) + --attack all + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_ATTACK_ALL) + e4:SetValue(1) + c:RegisterEffect(e4) + --pierce + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e5) +end +function c51788412.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end +function c51788412.actcon(e) + local ph=Duel.GetCurrentPhase() + return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE +end +function c51788412.actlimit(e,re,tp) + return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c51790181.lua b/script/c51790181.lua index 721ca01e..e114545b 100644 --- a/script/c51790181.lua +++ b/script/c51790181.lua @@ -1,28 +1,28 @@ ---無欲な壺 -function c51790181.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,51790181+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c51790181.target) - e1:SetOperation(c51790181.activate) - c:RegisterEffect(e1) -end -function c51790181.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,2,2,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,2,0,0) -end -function c51790181.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) - if e:GetHandler():IsRelateToEffect(e) and e:IsHasType(EFFECT_TYPE_ACTIVATE) then - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) - end -end +--無欲な壺 +function c51790181.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,51790181+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c51790181.target) + e1:SetOperation(c51790181.activate) + c:RegisterEffect(e1) +end +function c51790181.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,2,0,0) +end +function c51790181.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + if e:GetHandler():IsRelateToEffect(e) and e:IsHasType(EFFECT_TYPE_ACTIVATE) then + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c5183693.lua b/script/c5183693.lua index f574221f..6ca75dbc 100644 --- a/script/c5183693.lua +++ b/script/c5183693.lua @@ -1,73 +1,42 @@ ---下克上の首飾り -function c5183693.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(c5183693.target) - e1:SetOperation(c5183693.operation) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetCondition(c5183693.atkcon) - e2:SetValue(c5183693.atkval) - 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(c5183693.eqlimit) - c:RegisterEffect(e3) - --todeck - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(5183693,0)) - e4:SetCategory(CATEGORY_TODECK) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetTarget(c5183693.tdtg) - e4:SetOperation(c5183693.tdop) - c:RegisterEffect(e4) -end -function c5183693.eqlimit(e,c) - return c:IsType(TYPE_NORMAL) -end -function c5183693.filter(c) - return c:IsFaceup() and c:IsType(TYPE_NORMAL) -end -function c5183693.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c5183693.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c5183693.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c5183693.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c5183693.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 c5183693.atkcon(e) - if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end - local eqc=e:GetHandler():GetEquipTarget() - local bc=eqc:GetBattleTarget() - return eqc:GetLevel()>0 and bc and bc:GetLevel()>eqc:GetLevel() -end -function c5183693.atkval(e,c) - local bc=c:GetBattleTarget() - return (bc:GetLevel()-c:GetLevel())*500 -end -function c5183693.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToDeck() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c5183693.tdop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) - end -end +--下克上の首飾り +function c5183693.initial_effect(c) + aux.AddEquipProcedure(c,nil,c5183693.filter) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetCondition(c5183693.atkcon) + e2:SetValue(c5183693.atkval) + c:RegisterEffect(e2) + --todeck + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(5183693,0)) + e4:SetCategory(CATEGORY_TODECK) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetTarget(c5183693.tdtg) + e4:SetOperation(c5183693.tdop) + c:RegisterEffect(e4) +end +function c5183693.filter(c) + return c:IsType(TYPE_NORMAL) +end +function c5183693.atkcon(e) + if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end + local eqc=e:GetHandler():GetEquipTarget() + local bc=eqc:GetBattleTarget() + return eqc:GetLevel()>0 and bc and bc:GetLevel()>eqc:GetLevel() +end +function c5183693.atkval(e,c) + local bc=c:GetBattleTarget() + return (bc:GetLevel()-c:GetLevel())*500 +end +function c5183693.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToDeck() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c5183693.tdop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) + end +end diff --git a/script/c51852507.lua b/script/c51852507.lua index 396f6f44..5fadda11 100644 --- a/script/c51852507.lua +++ b/script/c51852507.lua @@ -33,8 +33,7 @@ function c51852507.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c51852507.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c51858200.lua b/script/c51858200.lua new file mode 100644 index 00000000..33e3bdf4 --- /dev/null +++ b/script/c51858200.lua @@ -0,0 +1,119 @@ +--捕食惑星 +function c51858200.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51858200,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,51858200) + e2:SetCondition(c51858200.thcon) + e2:SetTarget(c51858200.thtg) + e2:SetOperation(c51858200.thop) + c:RegisterEffect(e2) + --fusion summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(51858200,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c51858200.spcost) + e3:SetTarget(c51858200.sptg) + e3:SetOperation(c51858200.spop) + c:RegisterEffect(e3) +end +function c51858200.cfilter(c) + return c:IsPreviousLocation(LOCATION_MZONE) and c:GetCounter(0x1041)>0 +end +function c51858200.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c51858200.cfilter,1,nil) +end +function c51858200.thfilter(c) + return c:IsSetCard(0xf3) and c:IsAbleToHand() +end +function c51858200.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c51858200.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c51858200.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c51858200.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c51858200.spfilter1(c,e) + return c:IsSetCard(0x10f3) and not c:IsImmuneToEffect(e) +end +function c51858200.spfilter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c51858200.spfilter3(c) + return c:IsCanBeFusionMaterial() and c:IsSetCard(0x10f3) +end +function c51858200.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsSetCard,nil,0x10f3) + local res=Duel.IsExistingMatchingCard(c51858200.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp):Filter(c51858200.spfilter3,nil) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c51858200.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c51858200.spop(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c51858200.spfilter1,nil,e) + local sg1=Duel.GetMatchingGroup(c51858200.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp):Filter(c51858200.spfilter3,nil) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c51858200.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c51858306.lua b/script/c51858306.lua index 2e6b36e1..ee7ea6b9 100644 --- a/script/c51858306.lua +++ b/script/c51858306.lua @@ -1,58 +1,58 @@ ---エクリプス・ワイバーン -function c51858306.initial_effect(c) - --remove - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(51858306,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c51858306.target) - e1:SetOperation(c51858306.operation) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(51858306,1)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) - e2:SetCode(EVENT_REMOVE) - e2:SetCondition(c51858306.thcon) - e2:SetTarget(c51858306.thtg) - e2:SetOperation(c51858306.thop) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) -end -function c51858306.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) -end -function c51858306.filter(c) - return c:IsLevelAbove(7) and c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_LIGHT+ATTRIBUTE_DARK) - and c:IsAbleToRemove() -end -function c51858306.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,30459350) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c51858306.filter,tp,LOCATION_DECK,0,1,1,nil) - local tc=g:GetFirst() - if tc then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - e:SetLabelObject(tc) - e:GetHandler():RegisterFlagEffect(51858306,RESET_EVENT+0x1e60000,0,1) - tc:RegisterFlagEffect(51858306,RESET_EVENT+0x1fe0000,0,1) - end -end -function c51858306.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsFaceup() and e:GetHandler():GetFlagEffect(51858306)~=0 -end -function c51858306.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=e:GetLabelObject():GetLabelObject() - if chk==0 then return tc and tc:GetFlagEffect(51858306)~=0 and tc:IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,tc,1,0,0) -end -function c51858306.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject():GetLabelObject() - if tc:GetFlagEffect(51858306)~=0 and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 then - Duel.ConfirmCards(1-tp,tc) - end -end +--エクリプス・ワイバーン +function c51858306.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(51858306,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c51858306.target) + e1:SetOperation(c51858306.operation) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(51858306,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_REMOVE) + e2:SetCondition(c51858306.thcon) + e2:SetTarget(c51858306.thtg) + e2:SetOperation(c51858306.thop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c51858306.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) +end +function c51858306.filter(c) + return c:IsLevelAbove(7) and c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_LIGHT+ATTRIBUTE_DARK) + and c:IsAbleToRemove() +end +function c51858306.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,30459350) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c51858306.filter,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + e:SetLabelObject(tc) + e:GetHandler():RegisterFlagEffect(51858306,RESET_EVENT+0x1e60000,0,1) + tc:RegisterFlagEffect(51858306,RESET_EVENT+0x1fe0000,0,1) + end +end +function c51858306.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsFaceup() and e:GetHandler():GetFlagEffect(51858306)~=0 +end +function c51858306.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject():GetLabelObject() + if chk==0 then return tc and tc:GetFlagEffect(51858306)~=0 and tc:IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tc,1,0,0) +end +function c51858306.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject():GetLabelObject() + if tc:GetFlagEffect(51858306)~=0 and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 then + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c5186893.lua b/script/c5186893.lua index 0c06bb6c..5e8b0dde 100644 --- a/script/c5186893.lua +++ b/script/c5186893.lua @@ -24,18 +24,17 @@ end function c5186893.otfilter(c,tp) return c:IsRace(RACE_ZOMBIE) and (c:IsControler(tp) or c:IsFaceup()) end -function c5186893.otcon(e,c) +function c5186893.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c5186893.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c5186893.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c5186893.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) local sg=Duel.SelectTribute(tp,c,1,1,mg) c:SetMaterial(sg) - Duel.Release(sg, REASON_SUMMON+REASON_MATERIAL) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) end function c5186893.spcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c51960178.lua b/script/c51960178.lua index b78ea165..efa6afb1 100644 --- a/script/c51960178.lua +++ b/script/c51960178.lua @@ -8,7 +8,7 @@ function c51960178.initial_effect(c) e1:SetCategory(CATEGORY_DRAW) e1:SetDescription(aux.Stringid(51960178,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_PLAYER_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,51960178) e1:SetCost(c51960178.cost) diff --git a/script/c52022648.lua b/script/c52022648.lua new file mode 100644 index 00000000..073bc421 --- /dev/null +++ b/script/c52022648.lua @@ -0,0 +1,66 @@ +--妖精伝姫-シンデレラ +function c52022648.initial_effect(c) + --cannot be target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c52022648.tglimit) + e1:SetValue(c52022648.tgval) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(52022648,0)) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c52022648.eqcost) + e2:SetTarget(c52022648.eqtg) + e2:SetOperation(c52022648.eqop) + c:RegisterEffect(e2) +end +function c52022648.tglimit(e,c) + return c~=e:GetHandler() +end +function c52022648.tgval(e,re,rp) + return re:IsActiveType(TYPE_SPELL) +end +function c52022648.costfilter(c) + return c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c52022648.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c52022648.costfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c52022648.costfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c52022648.eqfilter(c,ec) + return c:IsType(TYPE_EQUIP) and c:CheckEquipTarget(ec) +end +function c52022648.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c52022648.eqfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_EQUIP,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) +end +function c52022648.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or c:IsFacedown() or not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c52022648.eqfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,c) + local tc=g:GetFirst() + if tc then + Duel.Equip(tp,tc,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetOperation(c52022648.thop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c52022648.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) +end diff --git a/script/c52031567.lua b/script/c52031567.lua index 82ee1931..9a42b4b8 100644 --- a/script/c52031567.lua +++ b/script/c52031567.lua @@ -1,13 +1,14 @@ ---E・HERO マッドボールマン -function c52031567.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,79979666,84327329,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) -end +--E・HERO マッドボールマン +function c52031567.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,79979666,84327329,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) +end +c52031567.material_setcode=0x8 diff --git a/script/c52035300.lua b/script/c52035300.lua index 7a8e7c7c..d20214d8 100644 --- a/script/c52035300.lua +++ b/script/c52035300.lua @@ -1,51 +1,51 @@ ---不死武士 -function c52035300.initial_effect(c) - --release limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(c52035300.recon) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(1) - c:RegisterEffect(e2) - --Special Summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(52035300,0)) - e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_GRAVE) - e3:SetCountLimit(1) - e3:SetCondition(c52035300.condition) - e3:SetTarget(c52035300.target) - e3:SetOperation(c52035300.operation) - c:RegisterEffect(e3) -end -function c52035300.recon(e,c) - return not c:IsRace(RACE_WARRIOR) -end -function c52035300.filter(c) - return c:IsType(TYPE_MONSTER) and not c:IsRace(RACE_WARRIOR) -end -function c52035300.condition(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 - and not Duel.IsExistingMatchingCard(c52035300.filter,tp,LOCATION_GRAVE,0,1,nil) -end -function c52035300.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c52035300.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 then return end - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end +--不死武士 +function c52035300.initial_effect(c) + --release limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c52035300.recon) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1) + c:RegisterEffect(e2) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(52035300,0)) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1) + e3:SetCondition(c52035300.condition) + e3:SetTarget(c52035300.target) + e3:SetOperation(c52035300.operation) + c:RegisterEffect(e3) +end +function c52035300.recon(e,c) + return not c:IsRace(RACE_WARRIOR) +end +function c52035300.filter(c) + return c:IsType(TYPE_MONSTER) and not c:IsRace(RACE_WARRIOR) +end +function c52035300.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and not Duel.IsExistingMatchingCard(c52035300.filter,tp,LOCATION_GRAVE,0,1,nil) +end +function c52035300.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c52035300.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 then return end + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c52068432.lua b/script/c52068432.lua index 62d8f9cf..0e1c205a 100644 --- a/script/c52068432.lua +++ b/script/c52068432.lua @@ -54,8 +54,7 @@ function c52068432.negtg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) end function c52068432.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then Duel.SendtoGrave(eg,REASON_EFFECT) end end diff --git a/script/c52085072.lua b/script/c52085072.lua index 2404740e..a0a291f3 100644 --- a/script/c52085072.lua +++ b/script/c52085072.lua @@ -1,89 +1,89 @@ ---絶望神アンチホープ -function c52085072.initial_effect(c) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e2:SetCondition(c52085072.spcon) - e2:SetOperation(c52085072.spop) - c:RegisterEffect(e2) - --cannot attack - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_CANNOT_ATTACK) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(c52085072.antarget) - c:RegisterEffect(e3) - -- - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(52085072,0)) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetRange(LOCATION_MZONE) - e4:SetHintTiming(TIMING_BATTLE_PHASE) - e4:SetCondition(c52085072.btcon) - e4:SetCost(c52085072.btcost) - e4:SetOperation(c52085072.btop) - c:RegisterEffect(e4) -end -function c52085072.spcfilter(c) - return c:IsFaceup() and c:GetLevel()==1 and c:IsAbleToGraveAsCost() -end -function c52085072.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.IsExistingMatchingCard(c52085072.spcfilter,tp,LOCATION_MZONE,0,4,nil) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>-4 -end -function c52085072.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c52085072.spcfilter,tp,LOCATION_MZONE,0,4,4,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c52085072.antarget(e,c) - return c~=e:GetHandler() -end -function c52085072.btcon(e,tp,eg,ep,ev,re,r,rp) - return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) and not e:GetHandler():IsStatus(STATUS_CHAINING) - and (Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()) -end -function c52085072.btcfilter(c) - return c:IsType(TYPE_MONSTER) and c:GetLevel()==1 and c:IsAbleToRemoveAsCost() -end -function c52085072.btcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c52085072.btcfilter,tp,LOCATION_GRAVE,0,1,nil) - and e:GetHandler():GetFlagEffect(52085072)==0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c52085072.btcfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) - e:GetHandler():RegisterFlagEffect(52085072,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) -end -function c52085072.btop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c52085072.efilter) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - c:RegisterEffect(e2) - end -end -function c52085072.efilter(e,re) - return e:GetHandler()~=re:GetOwner() -end +--絶望神アンチホープ +function c52085072.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e2:SetCondition(c52085072.spcon) + e2:SetOperation(c52085072.spop) + c:RegisterEffect(e2) + --cannot attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c52085072.antarget) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(52085072,0)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetHintTiming(TIMING_BATTLE_PHASE) + e4:SetCondition(c52085072.btcon) + e4:SetCost(c52085072.btcost) + e4:SetOperation(c52085072.btop) + c:RegisterEffect(e4) +end +function c52085072.spcfilter(c) + return c:IsFaceup() and c:GetLevel()==1 and c:IsAbleToGraveAsCost() +end +function c52085072.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.IsExistingMatchingCard(c52085072.spcfilter,tp,LOCATION_MZONE,0,4,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-4 +end +function c52085072.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c52085072.spcfilter,tp,LOCATION_MZONE,0,4,4,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c52085072.antarget(e,c) + return c~=e:GetHandler() +end +function c52085072.btcon(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) and not e:GetHandler():IsStatus(STATUS_CHAINING) + and (Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()) +end +function c52085072.btcfilter(c) + return c:IsType(TYPE_MONSTER) and c:GetLevel()==1 and c:IsAbleToRemoveAsCost() +end +function c52085072.btcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c52085072.btcfilter,tp,LOCATION_GRAVE,0,1,nil) + and e:GetHandler():GetFlagEffect(52085072)==0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c52085072.btcfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:GetHandler():RegisterFlagEffect(52085072,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c52085072.btop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c52085072.efilter) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + end +end +function c52085072.efilter(e,re) + return e:GetHandler()~=re:GetOwner() +end diff --git a/script/c52097679.lua b/script/c52097679.lua index ce222888..166142f2 100644 --- a/script/c52097679.lua +++ b/script/c52097679.lua @@ -1,33 +1,33 @@ ---右手に盾を左手に剣を -function c52097679.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c52097679.target) - e1:SetOperation(c52097679.activate) - c:RegisterEffect(e1) -end -function c52097679.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) - and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetTargetCard(g) -end -function c52097679.filter(c,e) - return c:IsFaceup() and c:IsRelateToEffect(e) and not c:IsImmuneToEffect(e) -end -function c52097679.activate(e,tp,eg,ep,ev,re,r,rp) - local sg=Duel.GetMatchingGroup(c52097679.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e) - local c=e:GetHandler() - local tc=sg:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SWAP_BASE_AD) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=sg:GetNext() - end -end +--右手に盾を左手に剣を +function c52097679.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c52097679.target) + e1:SetOperation(c52097679.activate) + c:RegisterEffect(e1) +end +function c52097679.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetTargetCard(g) +end +function c52097679.filter(c,e) + return c:IsFaceup() and c:IsRelateToEffect(e) and not c:IsImmuneToEffect(e) +end +function c52097679.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c52097679.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e) + local c=e:GetHandler() + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SWAP_BASE_AD) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end +end diff --git a/script/c52105192.lua b/script/c52105192.lua index 26ce0f8f..263b40f0 100644 --- a/script/c52105192.lua +++ b/script/c52105192.lua @@ -34,8 +34,8 @@ function c52105192.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c52105192.activate(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c52105192.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c52105192.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c52112003.lua b/script/c52112003.lua index 2308cf11..633da403 100644 --- a/script/c52112003.lua +++ b/script/c52112003.lua @@ -1,29 +1,29 @@ ---カード・アドバンス -function c52112003.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c52112003.target) - e1:SetOperation(c52112003.activate) - c:RegisterEffect(e1) -end -function c52112003.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 end -end -function c52112003.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.SortDecktop(tp,tp,5) - if Duel.GetFlagEffect(tp,52112003)~=0 then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetTargetRange(LOCATION_HAND,0) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetTarget(aux.TargetBoolFunction(Card.IsLevelAbove,5)) - e1:SetValue(0x1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_EXTRA_SET_COUNT) - Duel.RegisterEffect(e2,tp) - Duel.RegisterFlagEffect(tp,52112003,RESET_PHASE+PHASE_END,0,1) -end +--カード・アドバンス +function c52112003.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c52112003.target) + e1:SetOperation(c52112003.activate) + c:RegisterEffect(e1) +end +function c52112003.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 end +end +function c52112003.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SortDecktop(tp,tp,5) + if Duel.GetFlagEffect(tp,52112003)~=0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetTarget(aux.TargetBoolFunction(Card.IsLevelAbove,5)) + e1:SetValue(0x1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_EXTRA_SET_COUNT) + Duel.RegisterEffect(e2,tp) + Duel.RegisterFlagEffect(tp,52112003,RESET_PHASE+PHASE_END,0,1) +end diff --git a/script/c52128900.lua b/script/c52128900.lua index 1af7c38a..d5f7c9db 100644 --- a/script/c52128900.lua +++ b/script/c52128900.lua @@ -1,48 +1,48 @@ ---シンクロ・ギフト -function c52128900.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c52128900.target) - e1:SetOperation(c52128900.activate) - c:RegisterEffect(e1) -end -function c52128900.filter1(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) -end -function c52128900.filter2(c) - return c:IsFaceup() and not c:IsType(TYPE_SYNCHRO) -end -function c52128900.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c52128900.filter1,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingTarget(c52128900.filter2,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,0)) - local g1=Duel.SelectTarget(tp,c52128900.filter1,tp,LOCATION_MZONE,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,1)) - local g2=Duel.SelectTarget(tp,c52128900.filter2,tp,LOCATION_MZONE,0,1,1,nil) - e:SetLabelObject(g1:GetFirst()) -end -function c52128900.activate(e,tp,eg,ep,ev,re,r,rp) - local tc1=e:GetLabelObject() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local tc2=g:GetFirst() - if tc1==tc2 then tc2=g:GetNext() end - if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) and tc2: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+PHASE_END) - e1:SetValue(tc1:GetBaseAttack()) - tc2:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_ATTACK_FINAL) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(0) - tc1:RegisterEffect(e2) - end -end +--シンクロ・ギフト +function c52128900.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c52128900.target) + e1:SetOperation(c52128900.activate) + c:RegisterEffect(e1) +end +function c52128900.filter1(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c52128900.filter2(c) + return c:IsFaceup() and not c:IsType(TYPE_SYNCHRO) +end +function c52128900.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c52128900.filter1,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c52128900.filter2,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,0)) + local g1=Duel.SelectTarget(tp,c52128900.filter1,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(52128900,1)) + local g2=Duel.SelectTarget(tp,c52128900.filter2,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) +end +function c52128900.activate(e,tp,eg,ep,ev,re,r,rp) + local tc1=e:GetLabelObject() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc2=g:GetFirst() + if tc1==tc2 then tc2=g:GetNext() end + if tc1:IsRelateToEffect(e) and tc1:IsFaceup() and tc2:IsRelateToEffect(e) and tc2: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+PHASE_END) + e1:SetValue(tc1:GetBaseAttack()) + tc2:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(0) + tc1:RegisterEffect(e2) + end +end diff --git a/script/c52176579.lua b/script/c52176579.lua index bbc1de8a..7a380c96 100644 --- a/script/c52176579.lua +++ b/script/c52176579.lua @@ -36,14 +36,13 @@ function c52176579.activate(e,tp,eg,ep,ev,re,r,rp) if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end local g1=Duel.GetMatchingGroup(c52176579.filter,tp,LOCATION_HAND,0,nil,e,tp) - local g2=Duel.GetMatchingGroup(c52176579.filter,tp,LOCATION_GRAVE,0,nil,e,tp) + local g2=Duel.GetMatchingGroup(aux.NecroValleyFilter(c52176579.filter),tp,LOCATION_GRAVE,0,nil,e,tp) if g1:GetCount()==0 or g2:GetCount()==0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg1=g1:Select(tp,1,1,nil) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg2=g2:Select(tp,1,1,nil) sg1:Merge(sg2) - if sg1:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(sg1,0,tp,tp,false,false,POS_FACEUP) end function c52176579.lvfilter(c,tp) @@ -67,7 +66,7 @@ end function c52176579.lvop(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c52176579.tgfilter,tp,LOCATION_DECK,0,1,1,nil,tc) + local g=Duel.SelectMatchingCard(tp,c52176579.tgfilter,tp,LOCATION_DECK,0,1,1,nil,tc:GetLevel()) if g:GetCount()>0 then local gc=g:GetFirst() if Duel.SendtoGrave(gc,REASON_EFFECT)~=0 and gc:IsLocation(LOCATION_GRAVE) and tc:IsRelateToEffect(e) and tc:IsFaceup() then diff --git a/script/c52182715.lua b/script/c52182715.lua index 576956bb..f688d8a1 100644 --- a/script/c52182715.lua +++ b/script/c52182715.lua @@ -1,59 +1,59 @@ ---グリーン・ダストン -function c52182715.initial_effect(c) - c:SetUniqueOnField(1,0,52182715) - --cannot release - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetValue(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) - e3:SetValue(1) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - c:RegisterEffect(e5) - --tohand - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(52182715,0)) - e6:SetCategory(CATEGORY_TOHAND) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET) - e6:SetCode(EVENT_DESTROYED) - e6:SetCondition(c52182715.retcon) - e6:SetTarget(c52182715.rettg) - e6:SetOperation(c52182715.retop) - c:RegisterEffect(e6) -end -function c52182715.retcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c52182715.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c52182715.rettg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local prec=e:GetHandler():GetPreviousControler() - if chkc then return chkc:IsControler(prec) and chkc:IsOnField() and c52182715.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(prec,c52182715.filter,prec,LOCATION_ONFIELD,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c52182715.retop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end +--グリーン・ダストン +function c52182715.initial_effect(c) + c:SetUniqueOnField(1,0,52182715) + --cannot release + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e5) + --tohand + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(52182715,0)) + e6:SetCategory(CATEGORY_TOHAND) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetCode(EVENT_DESTROYED) + e6:SetCondition(c52182715.retcon) + e6:SetTarget(c52182715.rettg) + e6:SetOperation(c52182715.retop) + c:RegisterEffect(e6) +end +function c52182715.retcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c52182715.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c52182715.rettg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local prec=e:GetHandler():GetPreviousControler() + if chkc then return chkc:IsControler(prec) and chkc:IsOnField() and c52182715.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(prec,c52182715.filter,prec,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c52182715.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c52228131.lua b/script/c52228131.lua index 2388e87d..a45e6d96 100644 --- a/script/c52228131.lua +++ b/script/c52228131.lua @@ -29,8 +29,7 @@ function c52228131.activate(e,tp,eg,ep,ev,re,r,rp) if g:GetCount()==0 then return end Duel.ConfirmCards(1-tp,g) Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c52248570.lua b/script/c52248570.lua index c541012b..dab32cf2 100644 --- a/script/c52248570.lua +++ b/script/c52248570.lua @@ -1,59 +1,59 @@ ---プリズンクインデーモン -function c52248570.initial_effect(c) - --maintain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c52248570.mtcon) - e1:SetOperation(c52248570.mtop) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(52248570,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c52248570.atkcon) - e2:SetTarget(c52248570.atktg) - e2:SetOperation(c52248570.atkop) - c:RegisterEffect(e2) -end -function c52248570.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c52248570.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,1000) then - Duel.PayLPCost(tp,1000) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -function c52248570.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and Duel.IsEnvironment(94585852) -end -function c52248570.filter(c) - return c:IsFaceup() and c:IsLevelBelow(4) and c:IsRace(RACE_FIEND) -end -function c52248570.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c52248570.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c52248570.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c52248570.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c52248570.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or not Duel.IsEnvironment(94585852) then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1000) - tc:RegisterEffect(e1) - end -end +--プリズンクインデーモン +function c52248570.initial_effect(c) + --maintain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c52248570.mtcon) + e1:SetOperation(c52248570.mtop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(52248570,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c52248570.atkcon) + e2:SetTarget(c52248570.atktg) + e2:SetOperation(c52248570.atkop) + c:RegisterEffect(e2) +end +function c52248570.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c52248570.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,1000) then + Duel.PayLPCost(tp,1000) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c52248570.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.IsEnvironment(94585852) +end +function c52248570.filter(c) + return c:IsFaceup() and c:IsLevelBelow(4) and c:IsRace(RACE_FIEND) +end +function c52248570.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c52248570.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c52248570.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c52248570.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c52248570.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or not Duel.IsEnvironment(94585852) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c52323874.lua b/script/c52323874.lua index e329bb43..f54efc42 100644 --- a/script/c52323874.lua +++ b/script/c52323874.lua @@ -8,7 +8,7 @@ function c52323874.initial_effect(c) e1:SetCategory(CATEGORY_DAMAGE) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1,52323874) e1:SetCost(c52323874.cost) e1:SetTarget(c52323874.target) diff --git a/script/c52339733.lua b/script/c52339733.lua index 45287ad2..5301e63d 100644 --- a/script/c52339733.lua +++ b/script/c52339733.lua @@ -1,31 +1,31 @@ ---竜胆ブルーム -function c52339733.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c52339733.atkcon) - e1:SetOperation(c52339733.atkop) - c:RegisterEffect(e1) -end -function c52339733.atkcon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return d and a:GetControler()~=d:GetControler() -end -function c52339733.atkop(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if a:IsFaceup() and a:IsRelateToBattle() and d:IsFaceup() and d:IsRelateToBattle() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(a:GetDefense()) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - a:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetValue(d:GetDefense()) - d:RegisterEffect(e2) - end -end +--竜胆ブルーム +function c52339733.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c52339733.atkcon) + e1:SetOperation(c52339733.atkop) + c:RegisterEffect(e1) +end +function c52339733.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a:GetControler()~=d:GetControler() +end +function c52339733.atkop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if a:IsFaceup() and a:IsRelateToBattle() and d:IsFaceup() and d:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(a:GetDefense()) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + a:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetValue(d:GetDefense()) + d:RegisterEffect(e2) + end +end diff --git a/script/c5237827.lua b/script/c5237827.lua index 8d78f32d..b86a806b 100644 --- a/script/c5237827.lua +++ b/script/c5237827.lua @@ -1,43 +1,43 @@ ---ヴァイロン・オーム -function c5237827.initial_effect(c) - --remove - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(5237827,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c5237827.rmtg) - e1:SetOperation(c5237827.rmop) - c:RegisterEffect(e1) -end -function c5237827.filter(c) - return c:IsType(TYPE_EQUIP) and c:IsAbleToRemove() -end -function c5237827.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c5237827.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c5237827.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c5237827.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c5237827.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_REMOVED) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetCondition(c5237827.thcon) - e1:SetOperation(c5237827.thop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - tc:RegisterEffect(e1) - end -end -function c5237827.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c5237827.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) -end +--ヴァイロン・オーム +function c5237827.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5237827,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c5237827.rmtg) + e1:SetOperation(c5237827.rmop) + c:RegisterEffect(e1) +end +function c5237827.filter(c) + return c:IsType(TYPE_EQUIP) and c:IsAbleToRemove() +end +function c5237827.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c5237827.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c5237827.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c5237827.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c5237827.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_REMOVED) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetCondition(c5237827.thcon) + e1:SetOperation(c5237827.thop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + tc:RegisterEffect(e1) + end +end +function c5237827.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c5237827.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) +end diff --git a/script/c52467217.lua b/script/c52467217.lua new file mode 100644 index 00000000..cee52d72 --- /dev/null +++ b/script/c52467217.lua @@ -0,0 +1,64 @@ +--牛頭鬼 +function c52467217.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(52467217,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,52467217) + e1:SetTarget(c52467217.tgtg) + e1:SetOperation(c52467217.tgop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(52467217,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,52467218) + e2:SetCost(c52467217.spcost) + e2:SetTarget(c52467217.sptg) + e2:SetOperation(c52467217.spop) + c:RegisterEffect(e2) +end +function c52467217.tgfilter(c) + return c:IsRace(RACE_ZOMBIE) and c:IsAbleToGrave() +end +function c52467217.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c52467217.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c52467217.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c52467217.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c52467217.cfilter(c) + return c:IsRace(RACE_ZOMBIE) and not c:IsCode(52467217) and c:IsAbleToRemoveAsCost() +end +function c52467217.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c52467217.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c52467217.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c52467217.spfilter(c,e,tp) + return c:IsRace(RACE_ZOMBIE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c52467217.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c52467217.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c52467217.spop(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,c52467217.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 diff --git a/script/c52496105.lua b/script/c52496105.lua index c37950ed..32271bac 100644 --- a/script/c52496105.lua +++ b/script/c52496105.lua @@ -1,27 +1,12 @@ --剣闘獣の闘器マニカ function c52496105.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(c52496105.target) - e1:SetOperation(c52496105.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x19)) -- local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) e2:SetValue(1) 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(c52496105.eqlimit) - c:RegisterEffect(e3) --tohand local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) @@ -33,26 +18,6 @@ function c52496105.initial_effect(c) e4:SetOperation(c52496105.retop) c:RegisterEffect(e4) end -function c52496105.eqlimit(e,c) - return c:IsSetCard(0x19) -end -function c52496105.filter(c) - return c:IsFaceup() and c:IsSetCard(0x19) -end -function c52496105.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c52496105.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c52496105.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c52496105.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c52496105.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 c52496105.retcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local ec=c:GetPreviousEquipTarget() diff --git a/script/c52497105.lua b/script/c52497105.lua index a470e3ea..e20d9c48 100644 --- a/script/c52497105.lua +++ b/script/c52497105.lua @@ -1,58 +1,58 @@ ---蛮勇鱗粉 -function c52497105.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(c52497105.condition) - e1:SetTarget(c52497105.target) - e1:SetOperation(c52497105.activate) - c:RegisterEffect(e1) -end -function c52497105.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c52497105.filter(c) - return c:IsFaceup() and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or c~=Duel.GetAttacker() or Duel.GetAttackTarget()) -end -function c52497105.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c52497105.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c52497105.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c52497105.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c52497105.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(1000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetOperation(c52497105.atkdown) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end -end -function c52497105.atkdown(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetOwner()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-1000) - e1:SetReset(RESET_EVENT+0x1fe0000) - e:GetHandler():RegisterEffect(e1,true) -end +--蛮勇鱗粉 +function c52497105.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(c52497105.condition) + e1:SetTarget(c52497105.target) + e1:SetOperation(c52497105.activate) + c:RegisterEffect(e1) +end +function c52497105.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c52497105.filter(c) + return c:IsFaceup() and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or c~=Duel.GetAttacker() or Duel.GetAttackTarget()) +end +function c52497105.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c52497105.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c52497105.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c52497105.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c52497105.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetOperation(c52497105.atkdown) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end +function c52497105.atkdown(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1,true) +end diff --git a/script/c52503575.lua b/script/c52503575.lua index 68646a66..853d3c64 100644 --- a/script/c52503575.lua +++ b/script/c52503575.lua @@ -1,19 +1,19 @@ ---最終突撃命令 -function c52503575.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Pos Change - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SET_POSITION) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetValue(POS_FACEUP_ATTACK) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) - c:RegisterEffect(e3) -end +--最終突撃命令 +function c52503575.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Pos Change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SET_POSITION) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(POS_FACEUP_ATTACK) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + c:RegisterEffect(e3) +end diff --git a/script/c52512994.lua b/script/c52512994.lua index e965107a..3dc76913 100644 --- a/script/c52512994.lua +++ b/script/c52512994.lua @@ -1,58 +1,58 @@ ---火車 -function c52512994.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c52512994.spcon) - c:RegisterEffect(e2) - --todeck - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(52512994,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetTarget(c52512994.tdtg) - e3:SetOperation(c52512994.tdop) - c:RegisterEffect(e3) -end -function c52512994.spfilter(c) - return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) -end -function c52512994.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c52512994.spfilter,c:GetControler(),LOCATION_MZONE,0,2,nil) -end -function c52512994.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c52512994.rfilter(c) - return c:IsLocation(LOCATION_DECK+LOCATION_EXTRA) and c:IsRace(RACE_ZOMBIE) and bit.band(c:GetPreviousPosition(),POS_FACEUP)~=0 -end -function c52512994.tdop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - local c=e:GetHandler() - local rt=Duel.GetOperatedGroup():FilterCount(c52512994.rfilter,nil) - if rt>0 and c:IsFaceup() and c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(rt*1000) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end +--火車 +function c52512994.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c52512994.spcon) + c:RegisterEffect(e2) + --todeck + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(52512994,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c52512994.tdtg) + e3:SetOperation(c52512994.tdop) + c:RegisterEffect(e3) +end +function c52512994.spfilter(c) + return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) +end +function c52512994.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c52512994.spfilter,c:GetControler(),LOCATION_MZONE,0,2,nil) +end +function c52512994.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c52512994.rfilter(c) + return c:IsLocation(LOCATION_DECK+LOCATION_EXTRA) and c:IsRace(RACE_ZOMBIE) and bit.band(c:GetPreviousPosition(),POS_FACEUP)~=0 +end +function c52512994.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + local c=e:GetHandler() + local rt=Duel.GetOperatedGroup():FilterCount(c52512994.rfilter,nil) + if rt>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(rt*1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c52518793.lua b/script/c52518793.lua index e5c9e7d5..fccd66ea 100644 --- a/script/c52518793.lua +++ b/script/c52518793.lua @@ -1,59 +1,59 @@ ---剣闘獣の檻-コロッセウム -function c52518793.initial_effect(c) - c:EnableCounterPermit(0x7) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Add counter - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(52518793,0)) - e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetRange(LOCATION_FZONE) - e2:SetCondition(c52518793.accon) - e2:SetOperation(c52518793.acop) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x19)) - e3:SetValue(c52518793.atkval) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) - --Destroy replace - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_DESTROY_REPLACE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetRange(LOCATION_FZONE) - e5:SetTarget(c52518793.desreptg) - e5:SetOperation(c52518793.desrepop) - c:RegisterEffect(e5) -end -function c52518793.atkval(e,c) - return e:GetHandler():GetCounter(0x7)*100 -end -function c52518793.cfilter(c,tp) - return c:IsPreviousLocation(LOCATION_DECK) -end -function c52518793.accon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c52518793.cfilter,1,nil,tp) -end -function c52518793.acop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x7,1) -end -function c52518793.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) - and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_HAND,0,1,nil,52518793) end - return Duel.SelectYesNo(tp,aux.Stringid(52518793,1)) -end -function c52518793.desrepop(e,tp,eg,ep,ev,re,r,rp) - Duel.DiscardHand(tp,Card.IsCode,1,1,REASON_EFFECT+REASON_DISCARD,nil,52518793) -end +--剣闘獣の檻-コロッセウム +function c52518793.initial_effect(c) + c:EnableCounterPermit(0x7) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Add counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(52518793,0)) + e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c52518793.accon) + e2:SetOperation(c52518793.acop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x19)) + e3:SetValue(c52518793.atkval) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) + --Destroy replace + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DESTROY_REPLACE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_FZONE) + e5:SetTarget(c52518793.desreptg) + e5:SetOperation(c52518793.desrepop) + c:RegisterEffect(e5) +end +function c52518793.atkval(e,c) + return e:GetHandler():GetCounter(0x7)*100 +end +function c52518793.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_DECK) +end +function c52518793.accon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c52518793.cfilter,1,nil,tp) +end +function c52518793.acop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x7,1) +end +function c52518793.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_HAND,0,1,nil,52518793) end + return Duel.SelectYesNo(tp,aux.Stringid(52518793,1)) +end +function c52518793.desrepop(e,tp,eg,ep,ev,re,r,rp) + Duel.DiscardHand(tp,Card.IsCode,1,1,REASON_EFFECT+REASON_DISCARD,nil,52518793) +end diff --git a/script/c52558805.lua b/script/c52558805.lua index 83474e73..813d0ad0 100644 --- a/script/c52558805.lua +++ b/script/c52558805.lua @@ -7,7 +7,7 @@ function c52558805.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(52558805,0)) e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetHintTiming(TIMING_DAMAGE_STEP+0x1c0) e1:SetCode(EVENT_FREE_CHAIN) diff --git a/script/c52589809.lua b/script/c52589809.lua new file mode 100644 index 00000000..02dd152f --- /dev/null +++ b/script/c52589809.lua @@ -0,0 +1,63 @@ +--風来王 ワイルド・ワインド +function c52589809.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c52589809.spcon) + e1:SetOperation(c52589809.spop) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(aux.exccon) + e2:SetCost(c52589809.thcost) + e2:SetTarget(c52589809.thtg) + e2:SetOperation(c52589809.thop) + c:RegisterEffect(e2) +end +function c52589809.filter(c) + return c:IsFaceup() and c:IsAttackBelow(1500) and c:IsRace(RACE_FIEND) and c:IsType(TYPE_TUNER) +end +function c52589809.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c52589809.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c52589809.spop(e,tp,eg,ep,ev,re,r,rp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c52589809.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c52589809.splimit(e,c) + return not c:IsType(TYPE_SYNCHRO) and c:IsLocation(LOCATION_EXTRA) +end +function c52589809.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c52589809.thfilter(c) + return c:IsAttackBelow(1500) and c:IsRace(RACE_FIEND) and c:IsType(TYPE_TUNER) and c:IsAbleToHand() +end +function c52589809.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c52589809.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c52589809.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c52589809.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c52601736.lua b/script/c52601736.lua index eadb9cf3..08260bb4 100644 --- a/script/c52601736.lua +++ b/script/c52601736.lua @@ -1,89 +1,89 @@ ---甲虫装機 ホッパー -function c52601736.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetDescription(aux.Stringid(52601736,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c52601736.eqtg) - e1:SetOperation(c52601736.eqop) - c:RegisterEffect(e1) - --equip effect - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_LEVEL) - e2:SetValue(4) - c:RegisterEffect(e2) - --direct atk - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(52601736,1)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_SZONE) - e3:SetCondition(c52601736.dacon) - e3:SetCost(c52601736.dacost) - e3:SetOperation(c52601736.daop) - c:RegisterEffect(e3) -end -function c52601736.filter(c) - return c:IsSetCard(0x56) and c:IsType(TYPE_MONSTER) and not c:IsForbidden() -end -function c52601736.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingMatchingCard(c52601736.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,nil,1,tp,LOCATION_GRAVE+LOCATION_HAND) -end -function c52601736.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c52601736.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) - local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then - if not Duel.Equip(tp,tc,c,true) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c52601736.eqlimit) - tc:RegisterEffect(e1) - end -end -function c52601736.eqlimit(e,c) - return e:GetOwner()==c and not c:IsDisabled() -end -function c52601736.dacon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetEquipTarget() - return Duel.IsAbleToEnterBP() - and tc:IsAttackable() and tc:GetEffectCount(EFFECT_DIRECT_ATTACK)==0 -end -function c52601736.ftarget(e,c) - return e:GetLabel()~=c:GetFieldID() -end -function c52601736.dacost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - local tc=e:GetHandler():GetEquipTarget() - Duel.SetTargetCard(tc) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_OATH) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c52601736.ftarget) - e1:SetLabel(tc:GetFieldID()) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c52601736.daop(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_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--甲虫装機 ホッパー +function c52601736.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetDescription(aux.Stringid(52601736,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c52601736.eqtg) + e1:SetOperation(c52601736.eqop) + c:RegisterEffect(e1) + --equip effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_LEVEL) + e2:SetValue(4) + c:RegisterEffect(e2) + --direct atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(52601736,1)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c52601736.dacon) + e3:SetCost(c52601736.dacost) + e3:SetOperation(c52601736.daop) + c:RegisterEffect(e3) +end +function c52601736.filter(c) + return c:IsSetCard(0x56) and c:IsType(TYPE_MONSTER) and not c:IsForbidden() +end +function c52601736.eqtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c52601736.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,nil,1,tp,LOCATION_GRAVE+LOCATION_HAND) +end +function c52601736.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c52601736.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + if not Duel.Equip(tp,tc,c,true) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c52601736.eqlimit) + tc:RegisterEffect(e1) + end +end +function c52601736.eqlimit(e,c) + return e:GetOwner()==c and not c:IsDisabled() +end +function c52601736.dacon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetEquipTarget() + return Duel.IsAbleToEnterBP() + and tc:IsAttackable() and tc:GetEffectCount(EFFECT_DIRECT_ATTACK)==0 +end +function c52601736.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c52601736.dacost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + local tc=e:GetHandler():GetEquipTarget() + Duel.SetTargetCard(tc) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c52601736.ftarget) + e1:SetLabel(tc:GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c52601736.daop(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_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c52624755.lua b/script/c52624755.lua index 6bd2e6dd..d58a0214 100644 --- a/script/c52624755.lua +++ b/script/c52624755.lua @@ -1,33 +1,33 @@ ---闇・道化師のペーテン -function c52624755.initial_effect(c) - --sp summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(52624755,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCost(c52624755.cost) - e1:SetTarget(c52624755.target) - e1:SetOperation(c52624755.operation) - c:RegisterEffect(e1) -end -function c52624755.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c52624755.filter(c,e,sp) - return c:IsCode(52624755) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) -end -function c52624755.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c52624755.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c52624755.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,c52624755.filter,tp,LOCATION_DECK+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 c52624755.initial_effect(c) + --sp summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(52624755,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCost(c52624755.cost) + e1:SetTarget(c52624755.target) + e1:SetOperation(c52624755.operation) + c:RegisterEffect(e1) +end +function c52624755.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c52624755.filter(c,e,sp) + return c:IsCode(52624755) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) +end +function c52624755.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c52624755.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c52624755.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,c52624755.filter,tp,LOCATION_DECK+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 diff --git a/script/c52628687.lua b/script/c52628687.lua index aeab2e8f..afce3e66 100644 --- a/script/c52628687.lua +++ b/script/c52628687.lua @@ -1,78 +1,78 @@ ---ネクロの魔導書 -function c52628687.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,52628687+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c52628687.cost) - e1:SetTarget(c52628687.target) - e1:SetOperation(c52628687.operation) - c:RegisterEffect(e1) -end -function c52628687.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(100) - return true -end -function c52628687.cfilter(c,e,tp) - return c:IsRace(RACE_SPELLCASTER) and c:GetLevel()>0 and c:IsAbleToRemoveAsCost() - and Duel.IsExistingTarget(c52628687.spfilter,tp,LOCATION_GRAVE,0,1,c,e,tp) -end -function c52628687.cffilter(c) - return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) and not c:IsPublic() -end -function c52628687.spfilter(c,e,tp) - return c:IsRace(RACE_SPELLCASTER) and c:GetLevel()>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c52628687.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c52628687.spfilter(chkc,e,tp) end - if chk==0 then - if e:GetLabel()~=100 then return false end - e:SetLabel(0) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c52628687.cfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) - and Duel.IsExistingMatchingCard(c52628687.cffilter,tp,LOCATION_HAND,0,1,e:GetHandler()) - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local rg=Duel.SelectMatchingCard(tp,c52628687.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - e:SetLabel(rg:GetFirst():GetLevel()) - Duel.Remove(rg,POS_FACEUP,REASON_COST) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local cg=Duel.SelectMatchingCard(tp,c52628687.cffilter,tp,LOCATION_HAND,0,1,1,e:GetHandler()) - Duel.ConfirmCards(1-tp,cg) - Duel.ShuffleHand(tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c52628687.spfilter,tp,LOCATION_GRAVE,0,1,1,rg:GetFirst(),e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c52628687.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c52628687.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 Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then - --levelup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - Duel.Equip(tp,c,tc) - Duel.SpecialSummonComplete() - --Add Equip limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EQUIP_LIMIT) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetLabelObject(tc) - e2:SetValue(c52628687.eqlimit) - c:RegisterEffect(e2) - end -end +--ネクロの魔導書 +function c52628687.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,52628687+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c52628687.cost) + e1:SetTarget(c52628687.target) + e1:SetOperation(c52628687.operation) + c:RegisterEffect(e1) +end +function c52628687.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(100) + return true +end +function c52628687.cfilter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:GetLevel()>0 and c:IsAbleToRemoveAsCost() + and Duel.IsExistingTarget(c52628687.spfilter,tp,LOCATION_GRAVE,0,1,c,e,tp) +end +function c52628687.cffilter(c) + return c:IsSetCard(0x106e) and c:IsType(TYPE_SPELL) and not c:IsPublic() +end +function c52628687.spfilter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:GetLevel()>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c52628687.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c52628687.spfilter(chkc,e,tp) end + if chk==0 then + if e:GetLabel()~=100 then return false end + e:SetLabel(0) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c52628687.cfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.IsExistingMatchingCard(c52628687.cffilter,tp,LOCATION_HAND,0,1,e:GetHandler()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c52628687.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + e:SetLabel(rg:GetFirst():GetLevel()) + Duel.Remove(rg,POS_FACEUP,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local cg=Duel.SelectMatchingCard(tp,c52628687.cffilter,tp,LOCATION_HAND,0,1,1,e:GetHandler()) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleHand(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c52628687.spfilter,tp,LOCATION_GRAVE,0,1,1,rg:GetFirst(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c52628687.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c52628687.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 Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then + --levelup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + Duel.Equip(tp,c,tc) + Duel.SpecialSummonComplete() + --Add Equip limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetLabelObject(tc) + e2:SetValue(c52628687.eqlimit) + c:RegisterEffect(e2) + end +end diff --git a/script/c52639377.lua b/script/c52639377.lua index 540b0911..ec16db54 100644 --- a/script/c52639377.lua +++ b/script/c52639377.lua @@ -1,37 +1,37 @@ ---魔界闘士 バルムンク -function c52639377.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(52639377,0)) - e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c52639377.spcon) - e1:SetTarget(c52639377.sptg) - e1:SetOperation(c52639377.spop) - c:RegisterEffect(e1) -end -function c52639377.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_EFFECT) and e:GetHandler():IsReason(REASON_DESTROY) -end -function c52639377.spfilter(c,e,tp) - return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c52639377.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c52639377.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c52639377.spfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c52639377.spfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c52639377.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--魔界闘士 バルムンク +function c52639377.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(52639377,0)) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c52639377.spcon) + e1:SetTarget(c52639377.sptg) + e1:SetOperation(c52639377.spop) + c:RegisterEffect(e1) +end +function c52639377.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c52639377.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c52639377.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c52639377.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c52639377.spfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c52639377.spfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c52639377.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c52653092.lua b/script/c52653092.lua index 8389f0aa..3b9cde3a 100644 --- a/script/c52653092.lua +++ b/script/c52653092.lua @@ -2,13 +2,24 @@ function c52653092.initial_effect(c) --xyz summon c:EnableReviveLimit() + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_FIELD) + e0:SetCode(EFFECT_SPSUMMON_PROC) + e0:SetRange(LOCATION_EXTRA) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetCondition(c52653092.xyzcon) + e0:SetOperation(c52653092.xyzop) + e0:SetValue(SUMMON_TYPE_XYZ) + c:RegisterEffect(e0) local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(52653092,0)) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetRange(LOCATION_EXTRA) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetCondition(c52653092.xyzcon) - e1:SetOperation(c52653092.xyzop) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(aux.XyzCondition2(c52653092.ovfilter,c52653092.xyzop2)) + e1:SetTarget(aux.XyzTarget2(c52653092.ovfilter,c52653092.xyzop2)) + e1:SetOperation(aux.XyzOperation2(c52653092.ovfilter,c52653092.xyzop2)) e1:SetValue(SUMMON_TYPE_XYZ) c:RegisterEffect(e1) --cannot disable spsummon @@ -56,92 +67,216 @@ end function c52653092.ovfilter(c) return c:IsFaceup() and c:IsSetCard(0x107f) end -function c52653092.mfilter(c,xyzc) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) +function c52653092.xyzop2(e,tp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c52653092.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c52653092.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) end -function c52653092.xyzfilter1(c,g) - return g:IsExists(c52653092.xyzfilter2,2,c,c:GetRank()) +function c52653092.xyzm12(c,xyz,tp) + return c52653092.mfilter1(c,xyz,tp) or c52653092.mfilter2(c,xyz,tp) +end +function c52653092.mfilter1(c,xyzc,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) + and (c:IsControler(tp) or c:IsHasEffect(EFFECT_XYZ_MATERIAL)) +end +function c52653092.mfilter2(c,xyzc,tp) + if c:IsLocation(LOCATION_GRAVE) then + return c:IsHasEffect(511002793) and c:IsType(TYPE_XYZ) and not c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) + else + return c:IsHasEffect(511002116) + end +end +function c52653092.xyzfilter1(c,tp,mg,xyz,matg,ct,sg,min,matct,nodoub,notrip) + local tg + local g=mg:Clone() + if matg==nil or matg:GetCount()==0 then tg=Group.CreateGroup() else tg=matg:Clone() end + g:RemoveCard(c) + tg:AddCard(c) + local tsg=false + if sg then + tsg=sg:Clone() + tsg:RemoveCard(c) + end + local gg=tg:Filter(aux.ValidXyzMaterial,nil) + if gg:IsExists(aux.TuneMagXyzFilter,1,nil,gg,tp) then return false end + local ctc=ct+1 + local matct2=matct + if not c:IsHasEffect(511002116) and min then + matct2=matct+1 + end + if min and matct2>min then return false end + if (not min or matct2==min) and ctc>=3 and ctc<=3 then return tg:IsExists(aux.XyzFCheck,1,nil,tp) end + if c:IsType(TYPE_XYZ) then g=g:Filter(c52653092.xyzfilter2,nil,c:GetRank()) end + if ctc>3 then return false end + local res2=false + local res3=false + local eqg=c:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + if not sg then + g:Merge(eqg) + end + local isDouble=false + if not nodoub and c:IsHasEffect(511001225) and (not c.xyzlimit2 or c.xyzlimit2(xyz)) then + if ctc+1<=3 then + isDouble=true + res2=true + end + if (not min or matct2==min) and ctc+1>=3 and ctc+1<=3 then return tg:IsExists(aux.XyzFCheck,1,nil,tp) end + end + if not notrip and c:IsHasEffect(511003001) and (not c.xyzlimit3 or c.xyzlimit3(xyz)) then + if ctc+2<=3 then + res3=true + end + if (not min or matct2==min) and ctc+2>=3 and ctc+2<=3 then return tg:IsExists(aux.XyzFCheck,1,nil,tp) end + end + return g:IsExists(c52653092.xyzfilter1,1,nil,tp,g,xyz,tg,ctc,tsg,min,matct2,false,false) + or (res2 and g:IsExists(c52653092.xyzfilter1,1,nil,tp,g,xyz,tg,ctc+1,tsg,min,matct2,false,false)) + or (res3 and g:IsExists(c52653092.xyzfilter1,1,nil,tp,g,xyz,tg,ctc+1,tsg,min,matct2,false,false)) end function c52653092.xyzfilter2(c,rk) - return c:GetRank()==rk + return c:GetRank()==rk or c:IsHasEffect(511002116) or c:IsHasEffect(511001175) end function c52653092.xyzcon(e,c,og,min,max) if c==nil then return true end local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local ct=-ft - if 3<=ct then return false end - if min and (min>3 or max<3) then return false end - local altmg=nil - if og then - altmg=og - else - altmg=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) - end - if ct<1 and (not min or min<=1) and altmg:IsExists(aux.XyzAlterFilter,1,nil,c52653092.ovfilter,c) - and Duel.IsExistingMatchingCard(c52653092.cfilter,tp,LOCATION_HAND,0,1,nil) then - return true - end local mg=nil + local sg=false if og then - mg=og:Filter(c52653092.mfilter,nil,c) + mg=og:Filter(c52653092.xyzm12,nil,c,tp) + sg=mg:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) else - mg=Duel.GetMatchingGroup(c52653092.mfilter,tp,LOCATION_MZONE,0,nil,c) + mg=Duel.GetMatchingGroup(c52653092.mfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + local mg2=Duel.GetMatchingGroup(c52653092.mfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c,tp) + mg:Merge(mg2) end - return mg:IsExists(c52653092.xyzfilter1,1,nil,mg) + local minchk=min + if c:GetFlagEffect(999)~=0 then minchk=nil end + return mg:IsExists(c52653092.xyzfilter1,1,nil,tp,mg,c,nil,0,sg,minchk,0,false) end function c52653092.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) if og and not min then - local sg=Group.CreateGroup() - local tc=og:GetFirst() - while tc do - sg:Merge(tc:GetOverlayGroup()) - tc=og:GetNext() + if not og:IsExists(c52653092.xyzfilter1,1,nil,tp,og,c,nil,0,og,og:GetCount(),0,false) then + local matg=Group.CreateGroup() + local mg=og:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) + local ct=og:GetCount() + tog=og:Clone() + local tc=tog:GetFirst() + local matct=0 + local ct=0 + while tc do + local isDouble=false + if tc:IsHasEffect(511001225) and (not tc.xyzlimit2 or tc.xyzlimit2(c)) and ct+1<3 + and (not c52653092.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,true,true) or Duel.SelectYesNo(tp,65)) then + isDouble=true + end + if tc:IsHasEffect(511003001) and (not tc.xyzlimit3 or tc.xyzlimit3(c)) and ct+2<3 then + if (isDouble and not c52653092.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,false,true)) + or (not isDouble and not c52653092.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,true,true)) + or Duel.SelectYesNo(tp,65) then + local tct=2 + if isDouble then tct=1 end + ct=ct+tct + end + end + ct=ct+1 + if isDouble then ct=ct+1 end + matct=matct+1 + mg:RemoveCard(tc) + matg:AddCard(tc) + tc=tog:GetNext() + end + while ct<3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg=mg:Select(tp,1,1,nil) + sg:GetFirst():RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + ct=ct+1 + mg:Sub(sg) + matg:Merge(sg) + end + matg:Remove(Card.IsHasEffect,nil,511002116) + matg:Remove(Card.IsHasEffect,nil,511002115) + local sg=Group.CreateGroup() + local tc=matg:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=g:GetNext() + end + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(g) + Duel.Overlay(c,g) + else + local sg=Group.CreateGroup() + local tc=og:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=og:GetNext() + end + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(og) + Duel.Overlay(c,og) end - Duel.SendtoGrave(sg,REASON_RULE) - c:SetMaterial(og) - Duel.Overlay(c,og) - return - end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local ct=-ft - local mg=nil - local altmg=nil - if og then - mg=og:Filter(c52653092.mfilter,nil,c) - altmg=og else - mg=Duel.GetMatchingGroup(c52653092.mfilter,tp,LOCATION_MZONE,0,nil,c) - altmg=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) - end - local b1=mg:IsExists(c52653092.xyzfilter1,1,nil,mg) - local b2=ct<1 and (not min or min<=1) and altmg:IsExists(aux.XyzAlterFilter,1,nil,c52653092.ovfilter,c) - and Duel.IsExistingMatchingCard(c52653092.cfilter,tp,LOCATION_HAND,0,1,nil) - if b2 and (not b1 or Duel.SelectYesNo(tp,aux.Stringid(52653092,0))) then - Duel.DiscardHand(tp,c52653092.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g=altmg:FilterSelect(tp,aux.XyzAlterFilter,1,1,nil,c52653092.ovfilter,c) - local g2=g:GetFirst():GetOverlayGroup() - if g2:GetCount()~=0 then - Duel.Overlay(c,g2) + local mg + local sg=false + if og then + mg=og:Filter(c52653092.xyzm12,nil,c,tp) + sg=mg:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) + else + mg=Duel.GetMatchingGroup(c52653092.xyzm12,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + local mg2=Duel.GetMatchingGroup(c52653092.mfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c,tp) + mg:Merge(mg2) end - c:SetMaterial(g) - Duel.Overlay(c,g) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g1=mg:FilterSelect(tp,c52653092.xyzfilter1,1,1,nil,mg) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g2=mg:FilterSelect(tp,c52653092.xyzfilter2,2,2,g1:GetFirst(),g1:GetFirst():GetRank()) - g1:Merge(g2) - local sg=Group.CreateGroup() - local tc=g1:GetFirst() + local ct=0 + local matg=Group.CreateGroup() + while ct<3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=mg:FilterSelect(tp,c52653092.xyzfilter1,1,1,nil,tp,mg,c,matg,ct,sg,nil,nil,false) + local tc=g:GetFirst() + local isDouble=false + if tc:IsHasEffect(511001225) and (not tc.xyzlimit2 or tc.xyzlimit2(c)) and ct+1<2 + and (not c52653092.xyzfilter1(tc,tp,mg,c,matg,ct,sg,nil,nil,true) or Duel.SelectYesNo(tp,65)) then + isDouble=true + end + if tc:IsHasEffect(511003001) and (not tc.xyzlimit3 or tc.xyzlimit3(c)) and ct+2<3 then + if (isDouble and not c52653092.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,false,true)) + or (not isDouble and not c52653092.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,true,true)) + or Duel.SelectYesNo(tp,65) then + local tct=2 + if isDouble then tct=1 end + ct=ct+tct + end + end + if isDouble then ct=ct+1 end + if not sg then + local eqg=tc:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + mg:Merge(eqg) + end + mg:RemoveCard(tc) + matg:AddCard(tc) + if tc:IsHasEffect(511002116) then + tc:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + end + if tc:IsType(TYPE_XYZ) then mg=mg:Filter(c52653092.xyzfilter2,nil,tc:GetRank()) end + ct=ct+1 + end + matg:Remove(Card.IsHasEffect,nil,511002116) + matg:Remove(Card.IsHasEffect,nil,511002115) + local sg2=Group.CreateGroup() + local tc=matg:GetFirst() while tc do - sg:Merge(tc:GetOverlayGroup()) - tc=g1:GetNext() + local sg1=tc:GetOverlayGroup() + sg2:Merge(sg1) + tc=matg:GetNext() end - Duel.SendtoGrave(sg,REASON_RULE) - c:SetMaterial(g1) - Duel.Overlay(c,g1) + Duel.SendtoGrave(sg2,REASON_RULE) + c:SetMaterial(matg) + Duel.Overlay(c,matg) end end function c52653092.effcon(e) diff --git a/script/c52684508.lua b/script/c52684508.lua index a4327ae2..5758f811 100644 --- a/script/c52684508.lua +++ b/script/c52684508.lua @@ -1,43 +1,43 @@ ---黒炎弾 -function c52684508.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c52684508.cost) - e1:SetTarget(c52684508.target) - e1:SetOperation(c52684508.activate) - c:RegisterEffect(e1) - Duel.AddCustomActivityCounter(52684508,ACTIVITY_ATTACK,c52684508.counterfilter) -end -function c52684508.counterfilter(c) - return not c:IsCode(74677422) -end -function c52684508.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCustomActivityCount(52684508,tp,ACTIVITY_ATTACK)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,74677422)) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c52684508.filter(c) - return c:IsFaceup() and c:IsCode(74677422) -end -function c52684508.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c52684508.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c52684508.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c52684508.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c52684508.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT) - end -end +--黒炎弾 +function c52684508.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c52684508.cost) + e1:SetTarget(c52684508.target) + e1:SetOperation(c52684508.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(52684508,ACTIVITY_ATTACK,c52684508.counterfilter) +end +function c52684508.counterfilter(c) + return not c:IsCode(74677422) +end +function c52684508.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(52684508,tp,ACTIVITY_ATTACK)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,74677422)) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c52684508.filter(c) + return c:IsFaceup() and c:IsCode(74677422) +end +function c52684508.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c52684508.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c52684508.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c52684508.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c52684508.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT) + end +end diff --git a/script/c52709508.lua b/script/c52709508.lua index 6845d08b..4ccd04bd 100644 --- a/script/c52709508.lua +++ b/script/c52709508.lua @@ -40,9 +40,13 @@ function c52709508.regop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if bit.band(att,ATTRIBUTE_EARTH)~=0 then local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c52709508.atkop) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,1) + e1:SetValue(c52709508.aclimit) + e1:SetCondition(c52709508.actcon) e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) c:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(52709508,2)) @@ -76,19 +80,12 @@ function c52709508.regop(e,tp,eg,ep,ev,re,r,rp) c:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(52709508,4)) end end -function c52709508.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c52709508.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end function c52709508.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c52709508.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end function c52709508.damcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local t=Duel.GetAttackTarget() diff --git a/script/c52738610.lua b/script/c52738610.lua index 21f43b20..55eb2b60 100644 --- a/script/c52738610.lua +++ b/script/c52738610.lua @@ -12,6 +12,7 @@ function c52738610.initial_effect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e2:SetTargetRange(LOCATION_MZONE,0) e2:SetTarget(c52738610.tgtg) e2:SetValue(aux.tgoval) diff --git a/script/c52792430.lua b/script/c52792430.lua new file mode 100644 index 00000000..5874980c --- /dev/null +++ b/script/c52792430.lua @@ -0,0 +1,68 @@ +--捕食植物スピノ・ディオネア +function c52792430.initial_effect(c) + --tograve + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(52792430,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c52792430.cttg) + e1:SetOperation(c52792430.ctop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(52792430,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLED) + e3:SetCondition(c52792430.spcon) + e3:SetTarget(c52792430.sptg) + e3:SetOperation(c52792430.spop) + c:RegisterEffect(e3) +end +function c52792430.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsCanAddCounter(0x1041,1) end + if chk==0 then return Duel.IsExistingTarget(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,nil,0x1041,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,1,nil,0x1041,1) +end +function c52792430.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:AddCounter(0x1041,1) and tc:GetLevel()>1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c52792430.lvcon) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end +function c52792430.lvcon(e) + return e:GetHandler():GetCounter(0x1041)>0 +end +function c52792430.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsLevelBelow(c:GetLevel()) and bc:IsStatus(STATUS_OPPO_BATTLE) and bc:IsRelateToBattle() +end +function c52792430.spfilter(c,e,tp) + return c:IsSetCard(0x10f3) and not c:IsCode(52792430) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c52792430.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c52792430.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c52792430.spop(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,c52792430.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c52823314.lua b/script/c52823314.lua index a8e88867..360a3f34 100644 --- a/script/c52823314.lua +++ b/script/c52823314.lua @@ -1,29 +1,29 @@ ---魔界発現世行きバス -function c52823314.initial_effect(c) - --to deck - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(52823314,0)) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c52823314.target) - e1:SetOperation(c52823314.operation) - c:RegisterEffect(e1) -end -function c52823314.filter(c) - return c:GetCode()~=52823314 and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() -end -function c52823314.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c52823314.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c52823314.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c52823314.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end -end +--魔界発現世行きバス +function c52823314.initial_effect(c) + --to deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(52823314,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c52823314.target) + e1:SetOperation(c52823314.operation) + c:RegisterEffect(e1) +end +function c52823314.filter(c) + return c:GetCode()~=52823314 and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c52823314.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c52823314.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c52823314.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c52823314.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end +end diff --git a/script/c52840267.lua b/script/c52840267.lua index 94ea6217..162f3f59 100644 --- a/script/c52840267.lua +++ b/script/c52840267.lua @@ -3,7 +3,7 @@ function c52840267.initial_effect(c) c:SetSPSummonOnce(52840267) --cannot spsummon local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(52840267,1)) + e1:SetDescription(aux.Stringid(52840267,0)) e1:SetCategory(CATEGORY_DRAW) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) @@ -20,6 +20,7 @@ function c52840267.initial_effect(c) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1,52840268) e2:SetCost(c52840267.cpcost) e2:SetTarget(c52840267.cptg) @@ -61,15 +62,12 @@ function c52840267.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) return tg and tg(e,tp,eg,ep,ev,re,r,rp,0,chkc) end if chk==0 then return Duel.IsExistingTarget(c52840267.cpfilter,tp,LOCATION_GRAVE,0,1,nil) end - e:SetProperty(EFFECT_FLAG_CARD_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) local g=Duel.SelectTarget(tp,c52840267.cpfilter,tp,LOCATION_GRAVE,0,1,1,nil) local te,ceg,cep,cev,cre,cr,crp=g:GetFirst():CheckActivateEffect(false,true,true) Duel.ClearTargetCard() g:GetFirst():CreateEffectRelation(e) local tg=te:GetTarget() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) if tg then tg(e,tp,ceg,cep,cev,cre,cr,crp,1) end te:SetLabelObject(e:GetLabelObject()) e:SetLabelObject(te) diff --git a/script/c52869807.lua b/script/c52869807.lua index b0a7a872..5e5fb2dc 100644 --- a/script/c52869807.lua +++ b/script/c52869807.lua @@ -1,36 +1,36 @@ ---BF-逆風のガスト -function c52869807.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c52869807.spcon) - c:RegisterEffect(e1) - --atk down - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCondition(c52869807.atkcon) - e2:SetTarget(c52869807.atktg) - e2:SetValue(-300) - c:RegisterEffect(e2) -end -function c52869807.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and - Duel.GetFieldGroupCount(c:GetControler(),LOCATION_ONFIELD,0)==0 -end -function c52869807.atkcon(e) - local ph=Duel.GetCurrentPhase() - local d=Duel.GetAttackTarget() - local tp=e:GetHandlerPlayer() - return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) - and d and d:IsControler(tp) and d:IsSetCard(0x33) -end -function c52869807.atktg(e,c) - return c==Duel.GetAttacker() -end +--BF-逆風のガスト +function c52869807.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c52869807.spcon) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c52869807.atkcon) + e2:SetTarget(c52869807.atktg) + e2:SetValue(-300) + c:RegisterEffect(e2) +end +function c52869807.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.GetFieldGroupCount(c:GetControler(),LOCATION_ONFIELD,0)==0 +end +function c52869807.atkcon(e) + local ph=Duel.GetCurrentPhase() + local d=Duel.GetAttackTarget() + local tp=e:GetHandlerPlayer() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) + and d and d:IsControler(tp) and d:IsSetCard(0x33) +end +function c52869807.atktg(e,c) + return c==Duel.GetAttacker() +end diff --git a/script/c52900000.lua b/script/c52900000.lua new file mode 100644 index 00000000..030d2418 --- /dev/null +++ b/script/c52900000.lua @@ -0,0 +1,102 @@ +--霊魂鳥神-彦孔雀 +function c52900000.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(aux.ritlimit) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(52900000,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c52900000.thcon) + e2:SetTarget(c52900000.thtg) + e2:SetOperation(c52900000.thop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c52900000.retreg) + c:RegisterEffect(e3) +end +function c52900000.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_RITUAL)==SUMMON_TYPE_RITUAL +end +function c52900000.spfilter(c,e,tp) + return c:IsType(TYPE_SPIRIT) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c52900000.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c52900000.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,0,LOCATION_MZONE,nil) + if g:GetCount()<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local sg=g:Select(tp,1,3,nil) + if Duel.SendtoHand(sg,nil,REASON_EFFECT)~=0 then + local sg2=Duel.GetOperatedGroup() + if not sg2:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then return end + local tg=Duel.GetMatchingGroup(c52900000.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + if tg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.SelectYesNo(tp,aux.Stringid(52900000,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=tg:Select(tp,1,1,nil) + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end + end +end +function c52900000.retreg(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetDescription(1104) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1ee0000+RESET_PHASE+PHASE_END) + e1:SetCondition(aux.SpiritReturnCondition) + e1:SetTarget(c52900000.rettg) + e1:SetOperation(c52900000.retop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + c:RegisterEffect(e2) +end +function c52900000.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:IsHasType(EFFECT_TYPE_TRIGGER_F) then + return true + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,52900001,0,0x4011,1500,1500,4,RACE_WINDBEAST,ATTRIBUTE_WIND) + end + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c52900000.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.SendtoHand(c,nil,REASON_EFFECT)~=0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,52900001,0,0x4011,1500,1500,4,RACE_WINDBEAST,ATTRIBUTE_WIND) then + for i=1,2 do + local token=Duel.CreateToken(tp,52900001) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c52900001.lua b/script/c52900001.lua new file mode 100644 index 00000000..b0da6221 --- /dev/null +++ b/script/c52900001.lua @@ -0,0 +1,5 @@ +--霊魂鳥トークン +--Espirit Token +function c52900001.initial_effect(c) + +end diff --git a/script/c52913738.lua b/script/c52913738.lua index 7d684ff0..373dd87f 100644 --- a/script/c52913738.lua +++ b/script/c52913738.lua @@ -1,49 +1,49 @@ ---破滅の儀式 -function c52913738.initial_effect(c) - aux.AddRitualProcGreaterCode(c,30646525) - --To Deck - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(52913738,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCondition(c52913738.regcon) - e1:SetCost(c52913738.regcost) - e1:SetOperation(c52913738.regop) - c:RegisterEffect(e1) -end -function c52913738.regcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 -end -function c52913738.regcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c52913738.regop(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_BATTLED) - e1:SetOperation(c52913738.tdop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c52913738.tdop(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if d and a:IsType(TYPE_RITUAL) and d:IsStatus(STATUS_BATTLE_DESTROYED) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetCode(EFFECT_SEND_REPLACE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetTarget(c52913738.reptg) - e1:SetOperation(c52913738.repop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - d:RegisterEffect(e1) - end -end -function c52913738.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_BATTLE) end - return true -end -function c52913738.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) -end +--破滅の儀式 +function c52913738.initial_effect(c) + aux.AddRitualProcGreaterCode(c,30646525) + --To Deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(52913738,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c52913738.regcon) + e1:SetCost(c52913738.regcost) + e1:SetOperation(c52913738.regop) + c:RegisterEffect(e1) +end +function c52913738.regcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c52913738.regcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c52913738.regop(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_BATTLED) + e1:SetOperation(c52913738.tdop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c52913738.tdop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if d and a:IsType(TYPE_RITUAL) and d:IsStatus(STATUS_BATTLE_DESTROYED) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_SEND_REPLACE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetTarget(c52913738.reptg) + e1:SetOperation(c52913738.repop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + d:RegisterEffect(e1) + end +end +function c52913738.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetDestination()==LOCATION_GRAVE and c:IsReason(REASON_BATTLE) end + return true +end +function c52913738.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) +end diff --git a/script/c52963531.lua b/script/c52963531.lua index 2a406acb..3401ec75 100644 --- a/script/c52963531.lua +++ b/script/c52963531.lua @@ -1,106 +1,106 @@ ---EMマンモスプラッシュ -function c52963531.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCountLimit(1) - e2:SetCondition(c52963531.spcon) - e2:SetTarget(c52963531.sptg) - e2:SetOperation(c52963531.spop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,52963531+EFFECT_COUNT_CODE_DUEL) - e3:SetTarget(c52963531.target) - e3:SetOperation(c52963531.operation) - c:RegisterEffect(e3) -end -function c52963531.cfilter(c,tp) - return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsControler(tp) -end -function c52963531.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c52963531.cfilter,1,nil,tp) -end -function c52963531.spfilter(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x99) and c:IsType(TYPE_PENDULUM) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c52963531.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c52963531.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c52963531.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c52963531.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c52963531.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c52963531.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c52963531.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c52963531.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c52963531.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c52963531.operation(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c52963531.filter1,tp,LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c52963531.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c52963531.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--EMマンモスプラッシュ +function c52963531.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCountLimit(1) + e2:SetCondition(c52963531.spcon) + e2:SetTarget(c52963531.sptg) + e2:SetOperation(c52963531.spop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,52963531+EFFECT_COUNT_CODE_DUEL) + e3:SetTarget(c52963531.target) + e3:SetOperation(c52963531.operation) + c:RegisterEffect(e3) +end +function c52963531.cfilter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsControler(tp) +end +function c52963531.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c52963531.cfilter,1,nil,tp) +end +function c52963531.spfilter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x99) and c:IsType(TYPE_PENDULUM) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c52963531.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c52963531.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c52963531.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c52963531.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c52963531.filter1(c,e) + return c:IsOnField() and not c:IsImmuneToEffect(e) +end +function c52963531.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c52963531.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) + local res=Duel.IsExistingMatchingCard(c52963531.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c52963531.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c52963531.operation(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c52963531.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c52963531.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c52963531.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c53027855.lua b/script/c53027855.lua index 29967096..292eb656 100644 --- a/script/c53027855.lua +++ b/script/c53027855.lua @@ -1,71 +1,71 @@ ---風霊神ウィンドローズ -function c53027855.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c53027855.spcon) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(53027855,0)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCountLimit(1,53027855) - e3:SetTarget(c53027855.destg) - e3:SetOperation(c53027855.desop) - c:RegisterEffect(e3) - --leave - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_LEAVE_FIELD_P) - e4:SetOperation(c53027855.leaveop) - c:RegisterEffect(e4) -end -function c53027855.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and - Duel.GetMatchingGroupCount(Card.IsAttribute,c:GetControler(),LOCATION_GRAVE,0,nil,ATTRIBUTE_WIND)==5 -end -function c53027855.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c53027855.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c53027855.desfilter,tp,0,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c53027855.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c53027855.desfilter,tp,0,LOCATION_ONFIELD,nil) - Duel.Destroy(g,REASON_EFFECT) -end -function c53027855.leaveop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsFacedown() then return end - local effp=e:GetHandler():GetControler() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SKIP_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - if Duel.GetTurnPlayer()==effp then - e1:SetLabel(Duel.GetTurnCount()) - e1:SetCondition(c53027855.skipcon) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) - end - Duel.RegisterEffect(e1,effp) -end -function c53027855.skipcon(e) - return Duel.GetTurnCount()~=e:GetLabel() -end +--風霊神ウィンドローズ +function c53027855.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c53027855.spcon) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(53027855,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCountLimit(1,53027855) + e3:SetTarget(c53027855.destg) + e3:SetOperation(c53027855.desop) + c:RegisterEffect(e3) + --leave + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD_P) + e4:SetOperation(c53027855.leaveop) + c:RegisterEffect(e4) +end +function c53027855.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.GetMatchingGroupCount(Card.IsAttribute,c:GetControler(),LOCATION_GRAVE,0,nil,ATTRIBUTE_WIND)==5 +end +function c53027855.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c53027855.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c53027855.desfilter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c53027855.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c53027855.desfilter,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c53027855.leaveop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsFacedown() then return end + local effp=e:GetHandler():GetControler() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + if Duel.GetTurnPlayer()==effp then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c53027855.skipcon) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + end + Duel.RegisterEffect(e1,effp) +end +function c53027855.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c53039326.lua b/script/c53039326.lua index 663357d3..ae261f1e 100644 --- a/script/c53039326.lua +++ b/script/c53039326.lua @@ -1,93 +1,93 @@ ---鋼核合成獣研究所 -function c53039326.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --maintain - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetCondition(c53039326.mtcon) - e2:SetOperation(c53039326.mtop) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EVENT_DESTROY) - e3:SetRange(LOCATION_FZONE) - e3:SetOperation(c53039326.check) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetDescription(aux.Stringid(53039326,2)) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_EVENT_PLAYER) - e4:SetCode(EVENT_CUSTOM+53039326) - e4:SetTarget(c53039326.target) - e4:SetOperation(c53039326.operation) - c:RegisterEffect(e4) -end -function c53039326.cfilter(c) - return c:IsCode(36623431) and not c:IsPublic() -end -function c53039326.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c53039326.mtop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - Duel.HintSelection(Group.FromCards(c)) - local g=Duel.GetMatchingGroup(c53039326.cfilter,tp,LOCATION_HAND,0,nil) - local sel=1 - if g:GetCount()~=0 then - sel=Duel.SelectOption(tp,aux.Stringid(53039326,0),aux.Stringid(53039326,1)) - else - sel=Duel.SelectOption(tp,aux.Stringid(53039326,1))+1 - end - if sel==0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local cg=g:Select(tp,1,1,nil) - Duel.ConfirmCards(1-tp,cg) - Duel.ShuffleHand(tp) - else - Duel.Destroy(c,REASON_COST) - end -end -function c53039326.check(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetCurrentPhase()~=PHASE_END then return end - local tc=eg:GetFirst() - local turnp=Duel.GetTurnPlayer() - local b1=false - local b2=false - while tc do - if tc:IsFaceup() and tc:IsLocation(LOCATION_MZONE) and tc:IsSetCard(0x1d) then - if tc:GetOwner()==turnp then b1=true else b2=true end - end - tc=eg:GetNext() - end - if b1 then Duel.RaiseSingleEvent(c,EVENT_CUSTOM+53039326,e,r,rp,turnp,0) end - if b2 then Duel.RaiseSingleEvent(c,EVENT_CUSTOM+53039326,e,r,rp,1-turnp,0) end -end -function c53039326.filter(c) - return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x1d) and c:IsAbleToHand() -end -function c53039326.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) - and Duel.IsExistingMatchingCard(c53039326.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c53039326.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c53039326.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--鋼核合成獣研究所 +function c53039326.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --maintain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCondition(c53039326.mtcon) + e2:SetOperation(c53039326.mtop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_DESTROY) + e3:SetRange(LOCATION_FZONE) + e3:SetOperation(c53039326.check) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetDescription(aux.Stringid(53039326,2)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_EVENT_PLAYER) + e4:SetCode(EVENT_CUSTOM+53039326) + e4:SetTarget(c53039326.target) + e4:SetOperation(c53039326.operation) + c:RegisterEffect(e4) +end +function c53039326.cfilter(c) + return c:IsCode(36623431) and not c:IsPublic() +end +function c53039326.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c53039326.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.HintSelection(Group.FromCards(c)) + local g=Duel.GetMatchingGroup(c53039326.cfilter,tp,LOCATION_HAND,0,nil) + local sel=1 + if g:GetCount()~=0 then + sel=Duel.SelectOption(tp,aux.Stringid(53039326,0),aux.Stringid(53039326,1)) + else + sel=Duel.SelectOption(tp,aux.Stringid(53039326,1))+1 + end + if sel==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local cg=g:Select(tp,1,1,nil) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleHand(tp) + else + Duel.Destroy(c,REASON_COST) + end +end +function c53039326.check(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetCurrentPhase()~=PHASE_END then return end + local tc=eg:GetFirst() + local turnp=Duel.GetTurnPlayer() + local b1=false + local b2=false + while tc do + if tc:IsFaceup() and tc:IsLocation(LOCATION_MZONE) and tc:IsSetCard(0x1d) then + if tc:GetOwner()==turnp then b1=true else b2=true end + end + tc=eg:GetNext() + end + if b1 then Duel.RaiseSingleEvent(c,EVENT_CUSTOM+53039326,e,r,rp,turnp,0) end + if b2 then Duel.RaiseSingleEvent(c,EVENT_CUSTOM+53039326,e,r,rp,1-turnp,0) end +end +function c53039326.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x1d) and c:IsAbleToHand() +end +function c53039326.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) + and Duel.IsExistingMatchingCard(c53039326.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c53039326.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c53039326.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c53054833.lua b/script/c53054833.lua index de875f30..d819eb37 100644 --- a/script/c53054833.lua +++ b/script/c53054833.lua @@ -1,30 +1,30 @@ ---SRダブルヨーヨー -function c53054833.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(53054833,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c53054833.target) - e1:SetOperation(c53054833.operation) - c:RegisterEffect(e1) -end -function c53054833.filter(c,e,tp) - return c:IsLevelBelow(3) and c:IsSetCard(0x2016) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c53054833.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c53054833.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c53054833.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c53054833.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c53054833.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--SRダブルヨーヨー +function c53054833.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(53054833,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c53054833.target) + e1:SetOperation(c53054833.operation) + c:RegisterEffect(e1) +end +function c53054833.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsSetCard(0x2016) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c53054833.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c53054833.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c53054833.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c53054833.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c53054833.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c53112492.lua b/script/c53112492.lua index 6c1fb713..5b035688 100644 --- a/script/c53112492.lua +++ b/script/c53112492.lua @@ -26,8 +26,7 @@ function c53112492.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c53112492.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c53119267.lua b/script/c53119267.lua index e9132399..3e330da7 100644 --- a/script/c53119267.lua +++ b/script/c53119267.lua @@ -1,24 +1,24 @@ ---魔力の棘 -function c53119267.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetOperation(c53119267.damop) - c:RegisterEffect(e2) -end -function c53119267.filter(c,tp) - return c:IsPreviousLocation(LOCATION_HAND) and c:GetControler()~=tp and c:GetPreviousControler()~=tp - and c:IsReason(REASON_DISCARD) -end -function c53119267.damop(e,tp,eg,ep,ev,re,r,rp) - local ct=eg:FilterCount(c53119267.filter,nil,tp) - Duel.Damage(1-tp,ct*500,REASON_EFFECT) -end +--魔力の棘 +function c53119267.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c53119267.damop) + c:RegisterEffect(e2) +end +function c53119267.filter(c,tp) + return c:IsPreviousLocation(LOCATION_HAND) and c:GetControler()~=tp and c:GetPreviousControler()~=tp + and c:IsReason(REASON_DISCARD) +end +function c53119267.damop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c53119267.filter,nil,tp) + Duel.Damage(1-tp,ct*500,REASON_EFFECT) +end diff --git a/script/c53136004.lua b/script/c53136004.lua index a06d18c7..ed8bdf40 100644 --- a/script/c53136004.lua +++ b/script/c53136004.lua @@ -1,54 +1,54 @@ ---魔導皇士 アンプール -function c53136004.initial_effect(c) - --attack up - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_CONTROL) - e1:SetDescription(aux.Stringid(53136004,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,53136004) - e1:SetCost(c53136004.cost) - e1:SetTarget(c53136004.target) - e1:SetOperation(c53136004.operation) - c:RegisterEffect(e1) -end -function c53136004.cfilter1(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToRemoveAsCost() -end -function c53136004.cfilter2(c) - return c:IsSetCard(0x106e) and c:IsAbleToRemoveAsCost() -end -function c53136004.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 - and Duel.IsExistingMatchingCard(c53136004.cfilter1,tp,LOCATION_MZONE,0,1,e:GetHandler()) - and Duel.IsExistingMatchingCard(c53136004.cfilter2,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g1=Duel.SelectMatchingCard(tp,c53136004.cfilter1,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=Duel.SelectMatchingCard(tp,c53136004.cfilter2,tp,LOCATION_GRAVE,0,1,1,nil) - g1:Merge(g2) - Duel.Remove(g1,POS_FACEUP,REASON_COST) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c53136004.filter(c) - return c:IsFaceup() and c:IsControlerCanBeChanged() -end -function c53136004.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c53136004.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c53136004.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c53136004.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) -end -function c53136004.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.GetControl(tc,tp,PHASE_END,1) - end -end +--魔導皇士 アンプール +function c53136004.initial_effect(c) + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetDescription(aux.Stringid(53136004,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,53136004) + e1:SetCost(c53136004.cost) + e1:SetTarget(c53136004.target) + e1:SetOperation(c53136004.operation) + c:RegisterEffect(e1) +end +function c53136004.cfilter1(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToRemoveAsCost() +end +function c53136004.cfilter2(c) + return c:IsSetCard(0x106e) and c:IsAbleToRemoveAsCost() +end +function c53136004.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 + and Duel.IsExistingMatchingCard(c53136004.cfilter1,tp,LOCATION_MZONE,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(c53136004.cfilter2,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c53136004.cfilter1,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c53136004.cfilter2,tp,LOCATION_GRAVE,0,1,1,nil) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c53136004.filter(c) + return c:IsFaceup() and c:IsControlerCanBeChanged() +end +function c53136004.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c53136004.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c53136004.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c53136004.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c53136004.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c53183600.lua b/script/c53183600.lua index 96e4f1c6..0754375f 100644 --- a/script/c53183600.lua +++ b/script/c53183600.lua @@ -1,99 +1,99 @@ ---ブルーアイズ・トゥーン・ドラゴン -function c53183600.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c53183600.spcon) - e2:SetOperation(c53183600.spop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetCondition(c53183600.sdescon) - e3:SetOperation(c53183600.sdesop) - c:RegisterEffect(e3) - --direct attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DIRECT_ATTACK) - e4:SetCondition(c53183600.dircon) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e5:SetCondition(c53183600.atcon) - e5:SetValue(c53183600.atlimit) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e6:SetCondition(c53183600.atcon) - c:RegisterEffect(e6) - --cannot attack - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e7:SetCode(EVENT_SPSUMMON_SUCCESS) - e7:SetOperation(c53183600.atklimit) - c:RegisterEffect(e7) - --attack cost - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_SINGLE) - e8:SetCode(EFFECT_ATTACK_COST) - e8:SetCost(c53183600.atcost) - e8:SetOperation(c53183600.atop) - c:RegisterEffect(e8) -end -function c53183600.cfilter(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c53183600.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.IsExistingMatchingCard(c53183600.cfilter,tp,LOCATION_ONFIELD,0,1,nil) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 and Duel.CheckReleaseGroup(tp,nil,2,nil) -end -function c53183600.spop(e,tp,eg,ep,ev,re,r,rp,c) - local tp=c:GetControler() - local g=Duel.SelectReleaseGroup(tp,nil,2,2,nil) - Duel.Release(g,REASON_COST) -end -function c53183600.sfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c53183600.sdescon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c53183600.sfilter,1,nil) -end -function c53183600.sdesop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c53183600.atkfilter(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c53183600.dircon(e) - return not Duel.IsExistingMatchingCard(c53183600.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c53183600.atcon(e) - return Duel.IsExistingMatchingCard(c53183600.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c53183600.atlimit(e,c) - return not c:IsType(TYPE_TOON) or c:IsFacedown() -end -function c53183600.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c53183600.atcost(e,c,tp) - return Duel.CheckLPCost(tp,500) -end -function c53183600.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.PayLPCost(tp,500) -end +--ブルーアイズ・トゥーン・ドラゴン +function c53183600.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c53183600.spcon) + e2:SetOperation(c53183600.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c53183600.sdescon) + e3:SetOperation(c53183600.sdesop) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetCondition(c53183600.dircon) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e5:SetCondition(c53183600.atcon) + e5:SetValue(c53183600.atlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e6:SetCondition(c53183600.atcon) + c:RegisterEffect(e6) + --cannot attack + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + e7:SetOperation(c53183600.atklimit) + c:RegisterEffect(e7) + --attack cost + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_ATTACK_COST) + e8:SetCost(c53183600.atcost) + e8:SetOperation(c53183600.atop) + c:RegisterEffect(e8) +end +function c53183600.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c53183600.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.IsExistingMatchingCard(c53183600.cfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 and Duel.CheckReleaseGroup(tp,nil,2,nil) +end +function c53183600.spop(e,tp,eg,ep,ev,re,r,rp,c) + local tp=c:GetControler() + local g=Duel.SelectReleaseGroup(tp,nil,2,2,nil) + Duel.Release(g,REASON_COST) +end +function c53183600.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c53183600.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c53183600.sfilter,1,nil) +end +function c53183600.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c53183600.atkfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c53183600.dircon(e) + return not Duel.IsExistingMatchingCard(c53183600.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c53183600.atcon(e) + return Duel.IsExistingMatchingCard(c53183600.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c53183600.atlimit(e,c) + return not c:IsType(TYPE_TOON) or c:IsFacedown() +end +function c53183600.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c53183600.atcost(e,c,tp) + return Duel.CheckLPCost(tp,500) +end +function c53183600.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,500) +end diff --git a/script/c53199020.lua b/script/c53199020.lua index b9c16bdc..21afd078 100644 --- a/script/c53199020.lua +++ b/script/c53199020.lua @@ -31,17 +31,17 @@ end function c53199020.otfilter(c,tp) return c:IsSetCard(0x35) and (c:IsControler(tp) or c:IsFaceup()) end -function c53199020.otcon(e,c) +function c53199020.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c53199020.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c53199020.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c53199020.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) local sg=Duel.SelectTribute(tp,c,1,1,mg) c:SetMaterial(sg) - Duel.Release(sg, REASON_SUMMON+REASON_MATERIAL) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) end function c53199020.chcon1(e,tp,eg,ep,ev,re,r,rp) return ep~=tp and re:GetHandler():GetType()==TYPE_SPELL and re:IsHasType(EFFECT_TYPE_ACTIVATE) diff --git a/script/c53208660.lua b/script/c53208660.lua index c54fcca2..c6a03532 100644 --- a/script/c53208660.lua +++ b/script/c53208660.lua @@ -1,64 +1,64 @@ ---ペンデュラム・コール -function c53208660.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,53208660+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c53208660.condition) - e1:SetCost(c53208660.cost) - e1:SetTarget(c53208660.target) - e1:SetOperation(c53208660.activate) - c:RegisterEffect(e1) - Duel.AddCustomActivityCounter(53208660,ACTIVITY_CHAIN,c53208660.chainfilter) -end -function c53208660.chainfilter(re,tp,cid) - local rc=re:GetHandler() - local loc,seq=Duel.GetChainInfo(cid,CHAININFO_TRIGGERING_LOCATION,CHAININFO_TRIGGERING_SEQUENCE) - return not (re:IsActiveType(TYPE_SPELL) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) - and loc==LOCATION_SZONE and (seq==6 or seq==7) and rc:IsSetCard(0x98)) -end -function c53208660.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCustomActivityCount(53208660,tp,ACTIVITY_CHAIN)==0 -end -function c53208660.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 c53208660.thfilter(c) - return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() -end -function c53208660.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=Duel.GetMatchingGroup(c53208660.thfilter,tp,LOCATION_DECK,0,nil) - return g:GetClassCount(Card.GetCode)>=2 - end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_DECK) -end -function c53208660.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c53208660.thfilter,tp,LOCATION_DECK,0,nil) - if g:GetClassCount(Card.GetCode)>=2 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g1=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g2=g:Select(tp,1,1,nil) - g1:Merge(g2) - Duel.SendtoHand(g1,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g1) - end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e1:SetTargetRange(LOCATION_SZONE,0) - e1:SetTarget(c53208660.indtg) - e1:SetValue(1) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - Duel.RegisterEffect(e1,tp) - end -end -function c53208660.indtg(e,c) - return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsSetCard(0x98) -end +--ペンデュラム・コール +function c53208660.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,53208660+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c53208660.condition) + e1:SetCost(c53208660.cost) + e1:SetTarget(c53208660.target) + e1:SetOperation(c53208660.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(53208660,ACTIVITY_CHAIN,c53208660.chainfilter) +end +function c53208660.chainfilter(re,tp,cid) + local rc=re:GetHandler() + local loc,seq=Duel.GetChainInfo(cid,CHAININFO_TRIGGERING_LOCATION,CHAININFO_TRIGGERING_SEQUENCE) + return not (re:IsActiveType(TYPE_SPELL) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) + and loc==LOCATION_SZONE and (seq==6 or seq==7) and rc:IsSetCard(0x98)) +end +function c53208660.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCustomActivityCount(53208660,tp,ACTIVITY_CHAIN)==0 +end +function c53208660.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 c53208660.thfilter(c) + return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c53208660.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetMatchingGroup(c53208660.thfilter,tp,LOCATION_DECK,0,nil) + return g:GetClassCount(Card.GetCode)>=2 + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_DECK) +end +function c53208660.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c53208660.thfilter,tp,LOCATION_DECK,0,nil) + if g:GetClassCount(Card.GetCode)>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g2=g:Select(tp,1,1,nil) + g1:Merge(g2) + Duel.SendtoHand(g1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g1) + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetTargetRange(LOCATION_SZONE,0) + e1:SetTarget(c53208660.indtg) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c53208660.indtg(e,c) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsSetCard(0x98) +end diff --git a/script/c53244294.lua b/script/c53244294.lua index 35fc6085..598dad3a 100644 --- a/script/c53244294.lua +++ b/script/c53244294.lua @@ -16,6 +16,7 @@ function c53244294.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(53244294,1)) e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c53244294.zcon) e2:SetCost(c53244294.zcost) diff --git a/script/c53251824.lua b/script/c53251824.lua index 69dafd7e..69a04c71 100644 --- a/script/c53251824.lua +++ b/script/c53251824.lua @@ -1,46 +1,46 @@ ---RR-バニシング・レイニアス -function c53251824.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c53251824.spcon) - e1:SetTarget(c53251824.sptg) - e1:SetOperation(c53251824.spop) - c:RegisterEffect(e1) - if not c53251824.global_check then - c53251824.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SUMMON_SUCCESS) - ge1:SetLabel(53251824) - ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - ge1:SetOperation(aux.sumreg) - Duel.RegisterEffect(ge1,0) - local ge2=ge1:Clone() - ge2:SetCode(EVENT_SPSUMMON_SUCCESS) - ge2:SetLabel(53251824) - Duel.RegisterEffect(ge2,0) - end -end -function c53251824.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(53251824)>0 -end -function c53251824.spfilter(c,e,tp) - return c:IsSetCard(0xba) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c53251824.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c53251824.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c53251824.spop(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,c53251824.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 +--RR-バニシング・レイニアス +function c53251824.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c53251824.spcon) + e1:SetTarget(c53251824.sptg) + e1:SetOperation(c53251824.spop) + c:RegisterEffect(e1) + if not c53251824.global_check then + c53251824.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(53251824) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(53251824) + Duel.RegisterEffect(ge2,0) + end +end +function c53251824.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(53251824)>0 +end +function c53251824.spfilter(c,e,tp) + return c:IsSetCard(0xba) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c53251824.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c53251824.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c53251824.spop(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,c53251824.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 diff --git a/script/c53257892.lua b/script/c53257892.lua index 7834c63d..5d21b237 100644 --- a/script/c53257892.lua +++ b/script/c53257892.lua @@ -14,7 +14,7 @@ function c53257892.initial_effect(c) c:RegisterEffect(e1) end function c53257892.filter(c,e,tp) - return c:IsRace(RACE_INSECT+RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + return c:IsRace(RACE_INSECT+RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c53257892.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -24,7 +24,7 @@ end function c53257892.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,c53257892.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c53257892.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end diff --git a/script/c53262004.lua b/script/c53262004.lua index 480eddc6..a48532e9 100644 --- a/script/c53262004.lua +++ b/script/c53262004.lua @@ -1,69 +1,68 @@ ---オッドアイズ・ボルテックス・ドラゴン -function c53262004.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x99),aux.FilterBoolFunction(Card.IsType,TYPE_PENDULUM),false) - --tohand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCountLimit(1,53262004) - e1:SetTarget(c53262004.thtg) - e1:SetOperation(c53262004.thop) - c:RegisterEffect(e1) - --negate - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,53262005) - e2:SetCondition(c53262004.discon) - e2:SetTarget(c53262004.distg) - e2:SetOperation(c53262004.disop) - c:RegisterEffect(e2) -end -function c53262004.filter(c) - return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAbleToHand() -end -function c53262004.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c53262004.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c53262004.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c53262004.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c53262004.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end -function c53262004.discon(e,tp,eg,ep,ev,re,r,rp) - return re:GetHandler()~=e:GetHandler() and not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) - and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev) -end -function c53262004.disfilter(c) - return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAbleToDeck() -end -function c53262004.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c53262004.disfilter,tp,LOCATION_EXTRA,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_EXTRA) - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c53262004.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,c53262004.disfilter,tp,LOCATION_EXTRA,0,1,1,nil) - if Duel.SendtoDeck(g,nil,2,REASON_EFFECT)~=0 then - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end - end -end +--オッドアイズ・ボルテックス・ドラゴン +function c53262004.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x99),aux.FilterBoolFunction(Card.IsFusionType,TYPE_PENDULUM),false) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCountLimit(1,53262004) + e1:SetTarget(c53262004.thtg) + e1:SetOperation(c53262004.thop) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,53262005) + e2:SetCondition(c53262004.discon) + e2:SetTarget(c53262004.distg) + e2:SetOperation(c53262004.disop) + c:RegisterEffect(e2) +end +function c53262004.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAbleToHand() +end +function c53262004.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c53262004.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c53262004.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c53262004.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c53262004.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c53262004.discon(e,tp,eg,ep,ev,re,r,rp) + return re:GetHandler()~=e:GetHandler() and not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) + and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev) +end +function c53262004.disfilter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAbleToDeck() +end +function c53262004.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c53262004.disfilter,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_EXTRA) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c53262004.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c53262004.disfilter,tp,LOCATION_EXTRA,0,1,1,nil) + if Duel.SendtoDeck(g,nil,2,REASON_EFFECT)~=0 then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + end +end diff --git a/script/c53291093.lua b/script/c53291093.lua index cebe1bca..a871b120 100644 --- a/script/c53291093.lua +++ b/script/c53291093.lua @@ -34,17 +34,29 @@ function c53291093.activate(e,tp,eg,ep,ev,re,r,rp) local sg=g:Select(tp,1,1,nil) Duel.BreakEffect() Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + local sc=sg:GetFirst() + local fid=e:GetHandler():GetFieldID() + sc:RegisterFlagEffect(53291093,RESET_EVENT+0x1fe0000,0,1,fid) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetOperation(c53291093.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) e1:SetCountLimit(1) - sg:GetFirst():RegisterEffect(e1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(sc) + e1:SetCondition(c53291093.descon) + e1:SetOperation(c53291093.desop) + Duel.RegisterEffect(e1,tp) end end end +function c53291093.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(53291093)~=e:GetLabel() then + e:Reset() + return false + else return true end +end function c53291093.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) end diff --git a/script/c53315891.lua b/script/c53315891.lua index bc67d60c..613c6e41 100644 --- a/script/c53315891.lua +++ b/script/c53315891.lua @@ -1,123 +1,122 @@ ---合神竜ティマイオス -function c53315891.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode3(c,80019195,85800949,84565800,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c53315891.sprcon) - e2:SetOperation(c53315891.sprop) - c:RegisterEffect(e2) - --immune - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_IMMUNE_EFFECT) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetValue(c53315891.efilter) - c:RegisterEffect(e3) - --atk & def - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e4:SetRange(LOCATION_MZONE) - e4:SetCondition(c53315891.atkcon) - e4:SetTarget(c53315891.atktg) - e4:SetOperation(c53315891.atkop) - c:RegisterEffect(e4) - --spsummon - local e5=Effect.CreateEffect(c) - e5:SetCategory(CATEGORY_SPECIAL_SUMMON) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e5:SetCode(EVENT_BATTLE_DESTROYED) - e5:SetTarget(c53315891.sptg) - e5:SetOperation(c53315891.spop) - c:RegisterEffect(e5) -end -function c53315891.sprfilter(c,code) - return c:IsFusionCode(code) and c:IsAbleToGraveAsCost() -end -function c53315891.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 - and Duel.IsExistingMatchingCard(c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,nil,80019195) - and Duel.IsExistingMatchingCard(c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,nil,85800949) - and Duel.IsExistingMatchingCard(c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,nil,84565800) -end -function c53315891.sprop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g1=Duel.SelectMatchingCard(tp,c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,1,nil,80019195) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g2=Duel.SelectMatchingCard(tp,c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,1,nil,85800949) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g3=Duel.SelectMatchingCard(tp,c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,1,nil,84565800) - g1:Merge(g2) - g1:Merge(g3) - Duel.SendtoGrave(g1,REASON_COST) -end -function c53315891.efilter(e,te) - return te:GetOwner()~=e:GetOwner() -end -function c53315891.atkcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c==Duel.GetAttacker() or c==Duel.GetAttackTarget() -end -function c53315891.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,c) - if g:GetCount()==0 then return false end - local g1,atk=g:GetMaxGroup(Card.GetAttack) - return c:GetAttack()~=atk and c:GetFlagEffect(53315891)==0 - end - c:RegisterFlagEffect(53315891,RESET_CHAIN,0,1) -end -function c53315891.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,c) - if g:GetCount()==0 then return end - local g1,atk=g:GetMaxGroup(Card.GetAttack) - if c:IsRelateToEffect(e) and c:IsFaceup() and atk>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(atk) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - c:RegisterEffect(e2) - end -end -function c53315891.spfilter(c,e,tp) - return c:IsSetCard(0xa0) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) -end -function c53315891.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>=3 - and Duel.IsExistingMatchingCard(c53315891.spfilter,tp,0x13,0,3,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,0x13) -end -function c53315891.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<3 then return end - local g=Duel.GetMatchingGroup(c53315891.spfilter,tp,0x13,0,nil,e,tp) - if g:GetCount()>2 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,3,3,nil) - if sg:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - Duel.SpecialSummon(sg,0,tp,tp,true,true,POS_FACEUP) - end -end +--合神竜ティマイオス +function c53315891.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,80019195,85800949,84565800,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c53315891.sprcon) + e2:SetOperation(c53315891.sprop) + c:RegisterEffect(e2) + --immune + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c53315891.efilter) + c:RegisterEffect(e3) + --atk & def + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c53315891.atkcon) + e4:SetTarget(c53315891.atktg) + e4:SetOperation(c53315891.atkop) + c:RegisterEffect(e4) + --spsummon + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BATTLE_DESTROYED) + e5:SetTarget(c53315891.sptg) + e5:SetOperation(c53315891.spop) + c:RegisterEffect(e5) +end +function c53315891.sprfilter(c,code) + return c:IsFusionCode(code) and c:IsAbleToGraveAsCost() +end +function c53315891.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 + and Duel.IsExistingMatchingCard(c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,nil,80019195) + and Duel.IsExistingMatchingCard(c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,nil,85800949) + and Duel.IsExistingMatchingCard(c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,nil,84565800) +end +function c53315891.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,1,nil,80019195) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,1,nil,85800949) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g3=Duel.SelectMatchingCard(tp,c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,1,nil,84565800) + g1:Merge(g2) + g1:Merge(g3) + Duel.SendtoGrave(g1,REASON_COST) +end +function c53315891.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c53315891.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c==Duel.GetAttacker() or c==Duel.GetAttackTarget() +end +function c53315891.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,c) + if g:GetCount()==0 then return false end + local g1,atk=g:GetMaxGroup(Card.GetAttack) + return c:GetAttack()~=atk and c:GetFlagEffect(53315891)==0 + end + c:RegisterFlagEffect(53315891,RESET_CHAIN,0,1) +end +function c53315891.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,c) + if g:GetCount()==0 then return end + local g1,atk=g:GetMaxGroup(Card.GetAttack) + if c:IsRelateToEffect(e) and c:IsFaceup() and atk>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(atk) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + c:RegisterEffect(e2) + end +end +function c53315891.spfilter(c,e,tp) + return c:IsSetCard(0xa0) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c53315891.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>=3 + and Duel.IsExistingMatchingCard(c53315891.spfilter,tp,0x13,0,3,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,0x13) +end +function c53315891.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<3 then return end + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c53315891.spfilter),tp,0x13,0,nil,e,tp) + if g:GetCount()>2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,3,3,nil) + Duel.SpecialSummon(sg,0,tp,tp,true,true,POS_FACEUP) + end +end diff --git a/script/c53334471.lua b/script/c53334471.lua index 97b7e476..551ed1c8 100644 --- a/script/c53334471.lua +++ b/script/c53334471.lua @@ -1,104 +1,104 @@ ---御前試合 -function c53334471.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c53334471.acttg) - c:RegisterEffect(e1) - --adjust - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EVENT_ADJUST) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c53334471.adjustop) - c:RegisterEffect(e2) - --cannot summon,spsummon,flipsummon - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(1,1) - e4:SetTarget(c53334471.sumlimit) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetRange(LOCATION_SZONE) - e5:SetCode(EFFECT_CANNOT_SUMMON) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetTargetRange(1,1) - e5:SetTarget(c53334471.sumlimit) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD) - e6:SetRange(LOCATION_SZONE) - e6:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e6:SetTargetRange(1,1) - e6:SetTarget(c53334471.sumlimit) - c:RegisterEffect(e6) -end -c53334471[0]=0 -c53334471[1]=0 -function c53334471.acttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - c53334471[0]=0 - c53334471[1]=0 -end -function c53334471.sumlimit(e,c,sump,sumtype,sumpos,targetp) - if sumpos and bit.band(sumpos,POS_FACEDOWN)>0 then return false end - local at=c53334471[sump] - if targetp then at=c53334471[targetp] end - if at==0 then return false end - return c:GetAttribute()~=at -end -function c53334471.getattribute(g) - local aat=0 - local tc=g:GetFirst() - while tc do - aat=bit.bor(aat,tc:GetAttribute()) - tc=g:GetNext() - end - return aat -end -function c53334471.rmfilter(c,at) - return c:GetAttribute()==at -end -function c53334471.adjustop(e,tp,eg,ep,ev,re,r,rp) - local phase=Duel.GetCurrentPhase() - if (phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()) or phase==PHASE_DAMAGE_CAL then return end - local g1=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) - local g2=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - local c=e:GetHandler() - if g1:GetCount()==0 then c53334471[tp]=0 - else - local att=c53334471.getattribute(g1) - if bit.band(att,att-1)~=0 then - if c53334471[tp]==0 or bit.band(c53334471[tp],att)==0 then - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(53334471,0)) - att=Duel.AnnounceAttribute(tp,1,att) - else att=c53334471[tp] end - end - g1:Remove(c53334471.rmfilter,nil,att) - c53334471[tp]=att - end - if g2:GetCount()==0 then c53334471[1-tp]=0 - else - local att=c53334471.getattribute(g2) - if bit.band(att,att-1)~=0 then - if c53334471[1-tp]==0 or bit.band(c53334471[1-tp],att)==0 then - Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(53334471,0)) - att=Duel.AnnounceAttribute(1-tp,1,att) - else att=c53334471[1-tp] end - end - g2:Remove(c53334471.rmfilter,nil,att) - c53334471[1-tp]=att - end - g1:Merge(g2) - if g1:GetCount()>0 then - Duel.SendtoGrave(g1,REASON_RULE) - Duel.Readjust() - end -end +--御前試合 +function c53334471.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c53334471.acttg) + c:RegisterEffect(e1) + --adjust + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c53334471.adjustop) + c:RegisterEffect(e2) + --cannot summon,spsummon,flipsummon + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,1) + e4:SetTarget(c53334471.sumlimit) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_SUMMON) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,1) + e5:SetTarget(c53334471.sumlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetTargetRange(1,1) + e6:SetTarget(c53334471.sumlimit) + c:RegisterEffect(e6) +end +c53334471[0]=0 +c53334471[1]=0 +function c53334471.acttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + c53334471[0]=0 + c53334471[1]=0 +end +function c53334471.sumlimit(e,c,sump,sumtype,sumpos,targetp) + if sumpos and bit.band(sumpos,POS_FACEDOWN)>0 then return false end + local at=c53334471[sump] + if targetp then at=c53334471[targetp] end + if at==0 then return false end + return c:GetAttribute()~=at +end +function c53334471.getattribute(g) + local aat=0 + local tc=g:GetFirst() + while tc do + aat=bit.bor(aat,tc:GetAttribute()) + tc=g:GetNext() + end + return aat +end +function c53334471.rmfilter(c,at) + return c:GetAttribute()==at +end +function c53334471.adjustop(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()) or phase==PHASE_DAMAGE_CAL then return end + local g1=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local g2=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local c=e:GetHandler() + if g1:GetCount()==0 then c53334471[tp]=0 + else + local att=c53334471.getattribute(g1) + if bit.band(att,att-1)~=0 then + if c53334471[tp]==0 or bit.band(c53334471[tp],att)==0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(53334471,0)) + att=Duel.AnnounceAttribute(tp,1,att) + else att=c53334471[tp] end + end + g1:Remove(c53334471.rmfilter,nil,att) + c53334471[tp]=att + end + if g2:GetCount()==0 then c53334471[1-tp]=0 + else + local att=c53334471.getattribute(g2) + if bit.band(att,att-1)~=0 then + if c53334471[1-tp]==0 or bit.band(c53334471[1-tp],att)==0 then + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(53334471,0)) + att=Duel.AnnounceAttribute(1-tp,1,att) + else att=c53334471[1-tp] end + end + g2:Remove(c53334471.rmfilter,nil,att) + c53334471[1-tp]=att + end + g1:Merge(g2) + if g1:GetCount()>0 then + Duel.SendtoGrave(g1,REASON_RULE) + Duel.Readjust() + end +end diff --git a/script/c53334641.lua b/script/c53334641.lua index 33a38c05..f2b6ea5b 100644 --- a/script/c53334641.lua +++ b/script/c53334641.lua @@ -18,6 +18,7 @@ function c53334641.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(53334641,1)) e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) diff --git a/script/c53451824.lua b/script/c53451824.lua index 6f113527..783f978e 100644 --- a/script/c53451824.lua +++ b/script/c53451824.lua @@ -1,58 +1,58 @@ ---幻獣機コンコルーダ -function c53451824.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - -- - local e1=Effect.CreateEffect(c) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_TOKEN)) - e1:SetValue(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(53451824,0)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CHAIN_UNIQUE) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c53451824.spcon) - e3:SetCost(c53451824.spcost) - e3:SetTarget(c53451824.sptg) - e3:SetOperation(c53451824.spop) - c:RegisterEffect(e3) -end -function c53451824.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local crp=c:GetReasonPlayer() - return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and tp~=crp and crp~=PLAYER_NONE -end -function c53451824.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_MZONE,0,nil,TYPE_TOKEN) - e:SetLabel(g:GetCount()) - if chk==0 then return g:GetCount()>0 and g:FilterCount(Card.IsReleasable,nil)==g:GetCount() end - Duel.Release(g,REASON_COST) -end -function c53451824.spfilter(c,e,tp) - return c:IsSetCard(0x101b) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c53451824.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c53451824.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-e:GetLabel()+1 - and Duel.IsExistingTarget(c53451824.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c53451824.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c53451824.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--幻獣機コンコルーダ +function c53451824.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_TOKEN)) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(53451824,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CHAIN_UNIQUE) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c53451824.spcon) + e3:SetCost(c53451824.spcost) + e3:SetTarget(c53451824.sptg) + e3:SetOperation(c53451824.spop) + c:RegisterEffect(e3) +end +function c53451824.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local crp=c:GetReasonPlayer() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and tp~=crp and crp~=PLAYER_NONE +end +function c53451824.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_MZONE,0,nil,TYPE_TOKEN) + e:SetLabel(g:GetCount()) + if chk==0 then return g:GetCount()>0 and g:FilterCount(Card.IsReleasable,nil)==g:GetCount() end + Duel.Release(g,REASON_COST) +end +function c53451824.spfilter(c,e,tp) + return c:IsSetCard(0x101b) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c53451824.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c53451824.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-e:GetLabel()+1 + and Duel.IsExistingTarget(c53451824.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c53451824.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c53451824.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c53466826.lua b/script/c53466826.lua index 3373fc72..81feef97 100644 --- a/script/c53466826.lua +++ b/script/c53466826.lua @@ -1,38 +1,38 @@ ---ヒロイック・チャンス -function c53466826.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,53466826+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c53466826.target) - e1:SetOperation(c53466826.activate) - c:RegisterEffect(e1) -end -function c53466826.filter(c) - return c:IsFaceup() and c:IsSetCard(0x6f) -end -function c53466826.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c53466826.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c53466826.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c53466826.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c53466826.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(tc:GetAttack()*2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--ヒロイック・チャンス +function c53466826.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,53466826+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c53466826.target) + e1:SetOperation(c53466826.activate) + c:RegisterEffect(e1) +end +function c53466826.filter(c) + return c:IsFaceup() and c:IsSetCard(0x6f) +end +function c53466826.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c53466826.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c53466826.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c53466826.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c53466826.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c53485634.lua b/script/c53485634.lua index ada59111..c66d82c0 100644 --- a/script/c53485634.lua +++ b/script/c53485634.lua @@ -1,89 +1,89 @@ ---真紅眼の遡刻竜 -function c53485634.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(53485634,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCondition(c53485634.spcon) - e1:SetTarget(c53485634.sptg) - e1:SetOperation(c53485634.spop) - c:RegisterEffect(e1) - --extra summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(53485634,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c53485634.sumcon) - e2:SetCost(c53485634.sumcost) - e2:SetTarget(c53485634.sumtg) - e2:SetOperation(c53485634.sumop) - c:RegisterEffect(e2) -end -function c53485634.spfilter(c,e,tp) - return c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) - and c:IsReason(REASON_DESTROY) and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and Duel.GetAttacker():IsControler(1-tp))) - and c:IsSetCard(0x3b) and c:IsLevelBelow(7) and c:IsControler(tp) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c53485634.spcon(e,tp,eg,ep,ev,re,r,rp) - return rp~=tp -end -function c53485634.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and eg:IsExists(c53485634.spfilter,1,nil,e,tp) end - local g=eg:Filter(c53485634.spfilter,nil,e,tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),2,tp,LOCATION_GRAVE) -end -function c53485634.filter(c,e,tp) - return c:IsRelateToEffect(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c53485634.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c53485634.filter,nil,e,tp) - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 or g:GetCount()==0 or (ft>1 and g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end - if g:GetCount()>ft then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - g=g:Select(tp,ft,ft,nil) - end - local tc=g:GetFirst() - while tc do - local pos=tc:GetPreviousPosition() - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,pos) - tc=g:GetNext() - end - Duel.SpecialSummonComplete() - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c53485634.sumcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFlagEffect(tp,53485634)==0 -end -function c53485634.sumcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c53485634.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanSummon(tp) end -end -function c53485634.sumop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) - e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x3b)) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - Duel.RegisterFlagEffect(tp,53485634,RESET_PHASE+PHASE_END,0,1) -end +--真紅眼の遡刻竜 +function c53485634.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(53485634,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c53485634.spcon) + e1:SetTarget(c53485634.sptg) + e1:SetOperation(c53485634.spop) + c:RegisterEffect(e1) + --extra summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(53485634,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c53485634.sumcon) + e2:SetCost(c53485634.sumcost) + e2:SetTarget(c53485634.sumtg) + e2:SetOperation(c53485634.sumop) + c:RegisterEffect(e2) +end +function c53485634.spfilter(c,e,tp) + return c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and c:IsReason(REASON_DESTROY) and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and Duel.GetAttacker():IsControler(1-tp))) + and c:IsSetCard(0x3b) and c:IsLevelBelow(7) and c:IsControler(tp) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c53485634.spcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp +end +function c53485634.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and eg:IsExists(c53485634.spfilter,1,nil,e,tp) end + local g=eg:Filter(c53485634.spfilter,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),2,tp,LOCATION_GRAVE) +end +function c53485634.filter(c,e,tp) + return c:IsRelateToEffect(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c53485634.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c53485634.filter,nil,e,tp) + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 or g:GetCount()==0 or (ft>1 and g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if g:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + g=g:Select(tp,ft,ft,nil) + end + local tc=g:GetFirst() + while tc do + local pos=tc:GetPreviousPosition() + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,pos) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c53485634.sumcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFlagEffect(tp,53485634)==0 +end +function c53485634.sumcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c53485634.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanSummon(tp) end +end +function c53485634.sumop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x3b)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,53485634,RESET_PHASE+PHASE_END,0,1) +end diff --git a/script/c53527835.lua b/script/c53527835.lua index cec05337..86fb39f5 100644 --- a/script/c53527835.lua +++ b/script/c53527835.lua @@ -1,32 +1,32 @@ ---ダーク・シティ -function c53527835.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCondition(c53527835.atkcon) - e2:SetTarget(c53527835.atktg) - e2:SetValue(c53527835.atkval) - c:RegisterEffect(e2) -end -function c53527835.atkcon(e) - c53527835[0]=false - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c53527835.atktg(e,c) - return c==Duel.GetAttacker() and c:IsSetCard(0xc008) -end -function c53527835.atkval(e,c) - local d=Duel.GetAttackTarget() - if c53527835[0] or c:GetAttack()0 - and Duel.IsExistingTarget(c53573406.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c53573406.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c53573406.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - end - Duel.SpecialSummonComplete() -end +--カメンレオン +function c53573406.initial_effect(c) + --cannot summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c53573406.sumcon) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(53573406,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCost(c53573406.spcost) + e2:SetTarget(c53573406.sptg) + e2:SetOperation(c53573406.spop) + c:RegisterEffect(e2) + Duel.AddCustomActivityCounter(53573406,ACTIVITY_SPSUMMON,c53573406.counterfilter) +end +function c53573406.counterfilter(c) + return c:GetSummonLocation()==LOCATION_EXTRA +end +function c53573406.cfilter(c) + return c:IsFaceup() and c:IsLevelAbove(5) +end +function c53573406.sumcon(e) + return Duel.IsExistingMatchingCard(c53573406.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c53573406.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(53573406,tp,ACTIVITY_SPSUMMON)==0 end + local fid=e:GetHandler():GetFieldID() + e:SetLabel(fid) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetLabel(fid) + e1:SetTarget(c53573406.sumlimit) + Duel.RegisterEffect(e1,tp) +end +function c53573406.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabel()~=se:GetLabel() and not c:IsLocation(LOCATION_EXTRA) +end +function c53573406.filter(c,e,tp) + return c:GetDefense()==0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c53573406.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetControler()==tp and chkc:GetLocation()==LOCATION_GRAVE and c53573406.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c53573406.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c53573406.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c53573406.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c53586134.lua b/script/c53586134.lua index 5ca1a1de..15e92ed8 100644 --- a/script/c53586134.lua +++ b/script/c53586134.lua @@ -1,21 +1,6 @@ --バブル・ショット function c53586134.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(c53586134.target) - e1:SetOperation(c53586134.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(c53586134.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,79979666)) --equip effect local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) @@ -34,25 +19,6 @@ function c53586134.initial_effect(c) e5:SetValue(1) c:RegisterEffect(e5) end -function c53586134.eqlimit(e,c) - return c:IsCode(79979666) -end -function c53586134.filter(c) - return c:IsFaceup() and c:IsCode(79979666) -end -function c53586134.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c53586134.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c53586134.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c53586134.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c53586134.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 c53586134.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end diff --git a/script/c53610653.lua b/script/c53610653.lua index c81868fa..9057bb11 100644 --- a/script/c53610653.lua +++ b/script/c53610653.lua @@ -1,27 +1,12 @@ --バウンド・ワンド function c53610653.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(c53610653.target) - e1:SetOperation(c53610653.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c53610653.filter) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(c53610653.atkval) 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(c53610653.eqlimit) - c:RegisterEffect(e3) --spsummon local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(53610653,0)) @@ -34,24 +19,8 @@ function c53610653.initial_effect(c) e4:SetOperation(c53610653.spop) c:RegisterEffect(e4) end -function c53610653.eqlimit(e,c) - return c:IsRace(RACE_SPELLCASTER) and not c:IsType(TYPE_XYZ) -end function c53610653.filter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and not c:IsType(TYPE_XYZ) -end -function c53610653.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c53610653.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c53610653.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c53610653.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c53610653.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 + return c:IsRace(RACE_SPELLCASTER) and not c:IsType(TYPE_XYZ) end function c53610653.atkval(e,c) return c:GetLevel()*100 diff --git a/script/c5361647.lua b/script/c5361647.lua index 15bb6926..a9ac6d00 100644 --- a/script/c5361647.lua +++ b/script/c5361647.lua @@ -1,52 +1,52 @@ ---BK グラスジョー -function c5361647.initial_effect(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(5361647,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BE_BATTLE_TARGET) - e1:SetTarget(c5361647.destg) - e1:SetOperation(c5361647.desop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(5361647,1)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCondition(c5361647.thcon) - e2:SetTarget(c5361647.thtg) - e2:SetOperation(c5361647.thop) - c:RegisterEffect(e2) -end -function c5361647.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 c5361647.desop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.Destroy(e:GetHandler(),REASON_EFFECT) - end -end -function c5361647.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_EFFECT) -end -function c5361647.filter(c) - return c:IsSetCard(0x84) and c:GetCode()~=5361647 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c5361647.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c5361647.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c5361647.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c5361647.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c5361647.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--BK グラスジョー +function c5361647.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5361647,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetTarget(c5361647.destg) + e1:SetOperation(c5361647.desop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5361647,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c5361647.thcon) + e2:SetTarget(c5361647.thtg) + e2:SetOperation(c5361647.thop) + c:RegisterEffect(e2) +end +function c5361647.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 c5361647.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end +function c5361647.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) +end +function c5361647.filter(c) + return c:IsSetCard(0x84) and c:GetCode()~=5361647 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c5361647.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c5361647.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c5361647.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c5361647.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c5361647.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c53701457.lua b/script/c53701457.lua new file mode 100644 index 00000000..3dab8c7c --- /dev/null +++ b/script/c53701457.lua @@ -0,0 +1,62 @@ +--No.28 タイタニック・モス +function c53701457.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,2) + c:EnableReviveLimit() + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetCondition(c53701457.dircon) + c:RegisterEffect(e1) + --damage reduce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c53701457.rdcon) + e2:SetOperation(c53701457.rdop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetCondition(c53701457.damcon) + e3:SetCost(c53701457.damcost) + e3:SetTarget(c53701457.damtg) + e3:SetOperation(c53701457.damop) + c:RegisterEffect(e3) +end +c53701457.xyz_number=28 +function c53701457.dircon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)<=1 +end +function c53701457.rdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep~=tp and Duel.GetAttackTarget()==nil + and c:GetEffectCount(EFFECT_DIRECT_ATTACK)<2 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c53701457.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end +function c53701457.damcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c53701457.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c53701457.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + if chk==0 then return ct>0 end + Duel.SetTargetPlayer(1-tp) + local dam=ct*500 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c53701457.damop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=Duel.GetFieldGroupCount(p,LOCATION_HAND,0)*500 + Duel.Damage(p,dam,REASON_EFFECT) +end diff --git a/script/c5371656.lua b/script/c5371656.lua index e24f3b74..b1ae725d 100644 --- a/script/c5371656.lua +++ b/script/c5371656.lua @@ -1,38 +1,16 @@ --魂喰らいの魔刀 function c5371656.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(c5371656.target) - e1:SetOperation(c5371656.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(c5371656.eqlimit) - c:RegisterEffect(e2) -end -function c5371656.eqlimit(e,c) - return c:IsType(TYPE_NORMAL) and c:IsLevelBelow(3) + aux.AddEquipProcedure(c,0,c5371656.filter,nil,nil,c5371656.target,c5371656.operation) end function c5371656.filter(c) - return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsLevelBelow(3) + return c:IsType(TYPE_NORMAL) and c:IsLevelBelow(3) end function c5371656.rfilter(c) local tpe=c:GetType() return bit.band(tpe,TYPE_NORMAL)~=0 and bit.band(tpe,TYPE_TOKEN)==0 and c:IsReleasable() end -function c5371656.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c5371656.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c5371656.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c5371656.filter,tp,LOCATION_MZONE,0,1,1,nil) - local rg=Duel.GetMatchingGroup(c5371656.rfilter,tp,LOCATION_MZONE,0,g:GetFirst()) +function c5371656.target(e,tp,eg,ep,ev,re,r,rp) + local rg=Duel.GetMatchingGroup(c5371656.rfilter,tp,LOCATION_MZONE,0,Duel.GetFirstTarget()) Duel.Release(rg,REASON_COST) e:SetLabel(rg:GetCount()*1000) Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) @@ -41,7 +19,6 @@ function c5371656.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() and tc:IsControler(tp) then - Duel.Equip(tp,e:GetHandler(),tc) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_EQUIP) e1:SetCode(EFFECT_UPDATE_ATTACK) diff --git a/script/c53724621.lua b/script/c53724621.lua index be977b89..7eeeba78 100644 --- a/script/c53724621.lua +++ b/script/c53724621.lua @@ -1,60 +1,60 @@ ---EMギタートル -function c53724621.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --draw - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,53724621) - e2:SetCondition(c53724621.drcon) - e2:SetTarget(c53724621.drtg) - e2:SetOperation(c53724621.drop) - c:RegisterEffect(e2) - --scale - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetTarget(c53724621.target) - e3:SetOperation(c53724621.operation) - c:RegisterEffect(e3) -end -function c53724621.drcon(e,tp,eg,ep,ev,re,r,rp) - return rp==tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_PENDULUM) and re:GetHandler():IsSetCard(0x9f) and e:GetHandler()~=re:GetHandler() -end -function c53724621.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c53724621.drop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Draw(tp,1,REASON_EFFECT) -end -function c53724621.filter(c) - return c:GetSequence()==6 or c:GetSequence()==7 -end -function c53724621.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c53724621.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c53724621.filter,tp,LOCATION_SZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c53724621.filter,tp,LOCATION_SZONE,0,1,1,nil) -end -function c53724621.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LSCALE) - e1:SetValue(2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_RSCALE) - tc:RegisterEffect(e2) - end -end +--EMギタートル +function c53724621.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --draw + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,53724621) + e2:SetCondition(c53724621.drcon) + e2:SetTarget(c53724621.drtg) + e2:SetOperation(c53724621.drop) + c:RegisterEffect(e2) + --scale + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c53724621.target) + e3:SetOperation(c53724621.operation) + c:RegisterEffect(e3) +end +function c53724621.drcon(e,tp,eg,ep,ev,re,r,rp) + return rp==tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_PENDULUM) and re:GetHandler():IsSetCard(0x9f) and e:GetHandler()~=re:GetHandler() +end +function c53724621.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c53724621.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Draw(tp,1,REASON_EFFECT) +end +function c53724621.filter(c) + return c:GetSequence()==6 or c:GetSequence()==7 +end +function c53724621.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c53724621.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c53724621.filter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c53724621.filter,tp,LOCATION_SZONE,0,1,1,nil) +end +function c53724621.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LSCALE) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_RSCALE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c53778229.lua b/script/c53778229.lua index 4e98fb76..dd7c3991 100644 --- a/script/c53778229.lua +++ b/script/c53778229.lua @@ -1,28 +1,28 @@ ---墓地封印 -function c53778229.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c53778229.cost) - e1:SetOperation(c53778229.activate) - c:RegisterEffect(e1) -end -function c53778229.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 c53778229.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetCode(EVENT_CHAIN_ACTIVATING) - e1:SetOperation(c53778229.disop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c53778229.disop(e,tp,eg,ep,ev,re,r,rp) - local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) - if loc==LOCATION_GRAVE then - Duel.NegateEffect(ev) - end -end +--墓地封印 +function c53778229.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c53778229.cost) + e1:SetOperation(c53778229.activate) + c:RegisterEffect(e1) +end +function c53778229.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 c53778229.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_CHAIN_ACTIVATING) + e1:SetOperation(c53778229.disop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c53778229.disop(e,tp,eg,ep,ev,re,r,rp) + local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if loc==LOCATION_GRAVE then + Duel.NegateEffect(ev) + end +end diff --git a/script/c53819028.lua b/script/c53819028.lua new file mode 100644 index 00000000..f0939f7d --- /dev/null +++ b/script/c53819028.lua @@ -0,0 +1,87 @@ +--捕食植物セラセニアント +function c53819028.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(53819028,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c53819028.spcon) + e1:SetTarget(c53819028.sptg) + e1:SetOperation(c53819028.spop) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(53819028,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLED) + e2:SetTarget(c53819028.destg) + e2:SetOperation(c53819028.desop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(53819028,2)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetCountLimit(1,53819028) + e3:SetTarget(c53819028.thtg) + e3:SetOperation(c53819028.thop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c53819028.thcon) + c:RegisterEffect(e4) +end +function c53819028.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp and Duel.GetAttackTarget()==nil +end +function c53819028.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c53819028.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c53819028.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetAttacker() + if tc==e:GetHandler() then tc=Duel.GetAttackTarget() end + if chk==0 then return tc and tc:IsRelateToBattle() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c53819028.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc==e:GetHandler() then tc=Duel.GetAttackTarget() end + if tc:IsRelateToBattle() and tc:IsControler(1-tp) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c53819028.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c53819028.thfilter(c) + return c:IsSetCard(0xf3) and c:IsAbleToHand() and not c:IsCode(53819028) +end +function c53819028.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c53819028.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c53819028.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c53819028.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c53819808.lua b/script/c53819808.lua index 74c0b3c1..cb634a81 100644 --- a/script/c53819808.lua +++ b/script/c53819808.lua @@ -1,38 +1,38 @@ ---六武院 -function c53819808.initial_effect(c) - c:EnableCounterPermit(0x3) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetOperation(c53819808.ctop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --atk down - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_UPDATE_ATTACK) - e4:SetRange(LOCATION_FZONE) - e4:SetTargetRange(0,LOCATION_MZONE) - e4:SetValue(c53819808.val) - c:RegisterEffect(e4) -end -function c53819808.ctfilter(c) - return c:IsFaceup() and c:IsSetCard(0x3d) -end -function c53819808.ctop(e,tp,eg,ep,ev,re,r,rp) - if eg:IsExists(c53819808.ctfilter,1,nil) then - e:GetHandler():AddCounter(0x3,1) - end -end -function c53819808.val(e) - return e:GetHandler():GetCounter(0x3)*-100 -end +--六武院 +function c53819808.initial_effect(c) + c:EnableCounterPermit(0x3) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetOperation(c53819808.ctop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --atk down + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetValue(c53819808.val) + c:RegisterEffect(e4) +end +function c53819808.ctfilter(c) + return c:IsFaceup() and c:IsSetCard(0x3d) +end +function c53819808.ctop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(c53819808.ctfilter,1,nil) then + e:GetHandler():AddCounter(0x3,1) + end +end +function c53819808.val(e) + return e:GetHandler():GetCounter(0x3)*-100 +end diff --git a/script/c53839837.lua b/script/c53839837.lua index c3b6bf3b..5276e167 100644 --- a/script/c53839837.lua +++ b/script/c53839837.lua @@ -3,6 +3,7 @@ function c53839837.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c53839837.spr) c:RegisterEffect(e1) diff --git a/script/c53921056.lua b/script/c53921056.lua index 3c312454..f7ebaba4 100644 --- a/script/c53921056.lua +++ b/script/c53921056.lua @@ -1,36 +1,36 @@ ---氷結界の虎将 ガンターラ -function c53921056.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(53921056,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1) - e1:SetCondition(c53921056.spcon) - e1:SetTarget(c53921056.sptg) - e1:SetOperation(c53921056.spop) - c:RegisterEffect(e1) -end -function c53921056.filter(c,e,tp) - return c:IsSetCard(0x2f) and c:GetCode()~=53921056 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c53921056.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c53921056.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c53921056.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c53921056.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c53921056.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c53921056.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--氷結界の虎将 ガンターラ +function c53921056.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(53921056,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetCondition(c53921056.spcon) + e1:SetTarget(c53921056.sptg) + e1:SetOperation(c53921056.spop) + c:RegisterEffect(e1) +end +function c53921056.filter(c,e,tp) + return c:IsSetCard(0x2f) and c:GetCode()~=53921056 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c53921056.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c53921056.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c53921056.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c53921056.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c53921056.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c53921056.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c53932291.lua b/script/c53932291.lua index f54d2f16..f0d4dec1 100644 --- a/script/c53932291.lua +++ b/script/c53932291.lua @@ -1,63 +1,63 @@ ---SRタケトンボーグ -function c53932291.initial_effect(c) - c:SetSPSummonOnce(53932291) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c53932291.spcon) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(53932291,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c53932291.spcost) - e2:SetTarget(c53932291.sptg) - e2:SetOperation(c53932291.spop) - c:RegisterEffect(e2) -end -function c53932291.spfilter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) -end -function c53932291.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c53932291.spfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c53932291.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c53932291.filter(c,e,tp) - return c:IsSetCard(0x2016) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c53932291.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c53932291.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c53932291.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c53932291.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetTargetRange(1,0) - e1:SetTarget(c53932291.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c53932291.splimit(e,c,tp,sumtp,sumpos) - return c:GetAttribute()~=ATTRIBUTE_WIND -end +--SRタケトンボーグ +function c53932291.initial_effect(c) + c:SetSPSummonOnce(53932291) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c53932291.spcon) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(53932291,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c53932291.spcost) + e2:SetTarget(c53932291.sptg) + e2:SetOperation(c53932291.spop) + c:RegisterEffect(e2) +end +function c53932291.spfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) +end +function c53932291.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c53932291.spfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c53932291.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c53932291.filter(c,e,tp) + return c:IsSetCard(0x2016) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c53932291.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c53932291.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c53932291.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c53932291.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetTargetRange(1,0) + e1:SetTarget(c53932291.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c53932291.splimit(e,c,tp,sumtp,sumpos) + return c:GetAttribute()~=ATTRIBUTE_WIND +end diff --git a/script/c5399521.lua b/script/c5399521.lua index 63dcc1ed..284db938 100644 --- a/script/c5399521.lua +++ b/script/c5399521.lua @@ -1,92 +1,92 @@ ---音響戦士マイクス -function c5399521.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --scale - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CHANGE_LSCALE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c5399521.slcon) - e2:SetValue(4) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_CHANGE_RSCALE) - c:RegisterEffect(e3) - --tohand - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_TOHAND) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCode(EVENT_PHASE+PHASE_END) - e4:SetRange(LOCATION_PZONE) - e4:SetCountLimit(1) - e4:SetCondition(c5399521.thcon) - e4:SetTarget(c5399521.thtg) - e4:SetOperation(c5399521.thop) - c:RegisterEffect(e4) - --spsummon - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_SPSUMMON_PROC) - e5:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e5:SetRange(LOCATION_HAND) - e5:SetCondition(c5399521.spcon) - e5:SetOperation(c5399521.spop) - c:RegisterEffect(e5) - --extra summon - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e6:SetCode(EVENT_SUMMON_SUCCESS) - e6:SetOperation(c5399521.sumop) - c:RegisterEffect(e6) - local e7=e6:Clone() - e7:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e7) -end -function c5399521.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c5399521.thfilter(c) - return c:IsFaceup() and c:IsSetCard(0x1066) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c5399521.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c5399521.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c5399521.thfilter,tp,LOCATION_REMOVED,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c5399521.thfilter,tp,LOCATION_REMOVED,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c5399521.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end -function c5399521.slcon(e) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) - return not tc or not tc:IsSetCard(0x1066) -end -function c5399521.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsCanRemoveCounter(tp,1,0,0x35,3,REASON_COST) -end -function c5399521.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.RemoveCounter(tp,1,0,0x35,3,REASON_COST) -end -function c5399521.sumop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,5399521)~=0 then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - Duel.RegisterFlagEffect(tp,5399521,RESET_PHASE+PHASE_END,0,1) -end +--音響戦士マイクス +function c5399521.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --scale + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_LSCALE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c5399521.slcon) + e2:SetValue(4) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e3) + --tohand + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_PZONE) + e4:SetCountLimit(1) + e4:SetCondition(c5399521.thcon) + e4:SetTarget(c5399521.thtg) + e4:SetOperation(c5399521.thop) + c:RegisterEffect(e4) + --spsummon + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_SPSUMMON_PROC) + e5:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e5:SetRange(LOCATION_HAND) + e5:SetCondition(c5399521.spcon) + e5:SetOperation(c5399521.spop) + c:RegisterEffect(e5) + --extra summon + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_SUMMON_SUCCESS) + e6:SetOperation(c5399521.sumop) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e7) +end +function c5399521.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c5399521.thfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1066) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c5399521.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c5399521.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c5399521.thfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c5399521.thfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c5399521.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c5399521.slcon(e) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) + return not tc or not tc:IsSetCard(0x1066) +end +function c5399521.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsCanRemoveCounter(tp,1,0,0x35,3,REASON_COST) +end +function c5399521.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.RemoveCounter(tp,1,0,0x35,3,REASON_COST) +end +function c5399521.sumop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,5399521)~=0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,5399521,RESET_PHASE+PHASE_END,0,1) +end diff --git a/script/c54241725.lua b/script/c54241725.lua index fcbd7f71..3e4ab5f3 100644 --- a/script/c54241725.lua +++ b/script/c54241725.lua @@ -1,100 +1,102 @@ ---真源の帝王 -function c54241725.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_ATTACK+TIMING_END_PHASE) - e1:SetTarget(c54241725.acttg) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(54241725,0)) - e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_SZONE) - e2:SetCost(c54241725.drcost) - e2:SetTarget(c54241725.drtg) - e2:SetOperation(c54241725.drop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(54241725,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetRange(LOCATION_GRAVE) - e3:SetCountLimit(1,54241725) - e3:SetCost(c54241725.spcost) - e3:SetTarget(c54241725.sptg) - e3:SetOperation(c54241725.spop) - c:RegisterEffect(e3) -end -function c54241725.acttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return true end - if c54241725.drcost(e,tp,eg,ep,ev,re,r,rp,0) and c54241725.drtg(e,tp,eg,ep,ev,re,r,rp,0,chkc) and Duel.SelectYesNo(tp,94) then - e:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - e:SetOperation(c54241725.drop) - c54241725.drcost(e,tp,eg,ep,ev,re,r,rp,1) - c54241725.drtg(e,tp,eg,ep,ev,re,r,rp,1,chkc) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) - else - e:SetCategory(0) - e:SetProperty(0) - e:SetOperation(nil) - end -end -function c54241725.drcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(54241725)==0 end - e:GetHandler():RegisterFlagEffect(54241725,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c54241725.tdfilter(c) - return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() -end -function c54241725.drtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c54241725.tdfilter(chkc) end - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) - and Duel.IsExistingTarget(c54241725.tdfilter,tp,LOCATION_GRAVE,0,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c54241725.tdfilter,tp,LOCATION_GRAVE,0,2,2,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c54241725.drop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if tg:GetCount()<=0 then return end - Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) - Duel.ShuffleDeck(tp) - Duel.BreakEffect() - Duel.Draw(tp,1,REASON_EFFECT) -end -function c54241725.cfilter(c) - return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemoveAsCost() -end -function c54241725.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c54241725.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) - and e:GetHandler():GetFlagEffect(54241725)==0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c54241725.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) - Duel.Remove(g,POS_FACEUP,REASON_COST) - e:GetHandler():RegisterFlagEffect(54241725,RESET_CHAIN,0,1) -end -function c54241725.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,54241725,0,0x11,5,1000,2400,RACE_FAIRY,ATTRIBUTE_LIGHT) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c54241725.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,54241725,0,0x11,5,1000,2400,RACE_FAIRY,ATTRIBUTE_LIGHT) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) - c:AddMonsterAttributeComplete() - Duel.SpecialSummonComplete() - end -end +--真源の帝王 +function c54241725.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_ATTACK+TIMING_END_PHASE) + e1:SetTarget(c54241725.acttg) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(54241725,0)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCost(c54241725.drcost) + e2:SetTarget(c54241725.drtg) + e2:SetOperation(c54241725.drop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(54241725,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1,54241725) + e3:SetHintTiming(0,TIMING_MAIN_END+TIMING_END_PHASE) + e3:SetCost(c54241725.spcost) + e3:SetTarget(c54241725.sptg) + e3:SetOperation(c54241725.spop) + c:RegisterEffect(e3) +end +function c54241725.acttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + if c54241725.drcost(e,tp,eg,ep,ev,re,r,rp,0) and c54241725.drtg(e,tp,eg,ep,ev,re,r,rp,0,chkc) and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c54241725.drop) + c54241725.drcost(e,tp,eg,ep,ev,re,r,rp,1) + c54241725.drtg(e,tp,eg,ep,ev,re,r,rp,1,chkc) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c54241725.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(54241725)==0 end + e:GetHandler():RegisterFlagEffect(54241725,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c54241725.tdfilter(c) + return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() +end +function c54241725.drtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c54241725.tdfilter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c54241725.tdfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c54241725.tdfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c54241725.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:GetCount()<=0 then return end + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + Duel.ShuffleDeck(tp) + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) +end +function c54241725.cfilter(c) + return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemoveAsCost() +end +function c54241725.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c54241725.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) + and e:GetHandler():GetFlagEffect(54241725)==0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c54241725.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:GetHandler():RegisterFlagEffect(54241725,RESET_CHAIN,0,1) +end +function c54241725.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,54241725,0,0x11,1000,2400,5,RACE_FAIRY,ATTRIBUTE_LIGHT) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c54241725.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,54241725,0,0x11,1000,2400,5,RACE_FAIRY,ATTRIBUTE_LIGHT) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + Duel.SpecialSummonComplete() + end +end diff --git a/script/c54250060.lua b/script/c54250060.lua index 3d6e983c..8c1a946f 100644 --- a/script/c54250060.lua +++ b/script/c54250060.lua @@ -1,88 +1,88 @@ ---召魔装着 -function c54250060.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DRAGON+RACE_WARRIOR+RACE_SPELLCASTER)) - e2:SetValue(300) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(54250060,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_FZONE) - e4:SetCountLimit(1) - e4:SetCost(c54250060.spcost) - e4:SetTarget(c54250060.sptg) - e4:SetOperation(c54250060.spop) - c:RegisterEffect(e4) - --to hand - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(54250060,1)) - e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_FZONE) - e5:SetCountLimit(1) - e5:SetCost(c54250060.thcost) - e5:SetTarget(c54250060.thtg) - e5:SetOperation(c54250060.thop) - c:RegisterEffect(e5) -end -function c54250060.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_DISCARD+REASON_COST,nil) -end -function c54250060.spfilter(c,e,tp) - return c:IsSetCard(0xca) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c54250060.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c54250060.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c54250060.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c54250060.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c54250060.cfilter(c) - return c:IsRace(RACE_WARRIOR+RACE_SPELLCASTER) and c:IsAbleToRemoveAsCost() -end -function c54250060.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c54250060.cfilter,tp,LOCATION_GRAVE,0,4,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c54250060.cfilter,tp,LOCATION_GRAVE,0,4,4,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c54250060.thfilter(c) - return c:IsSetCard(0xcb) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c54250060.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c54250060.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c54250060.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c54250060.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--召魔装着 +function c54250060.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DRAGON+RACE_WARRIOR+RACE_SPELLCASTER)) + e2:SetValue(300) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(54250060,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetCountLimit(1) + e4:SetCost(c54250060.spcost) + e4:SetTarget(c54250060.sptg) + e4:SetOperation(c54250060.spop) + c:RegisterEffect(e4) + --to hand + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(54250060,1)) + e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_FZONE) + e5:SetCountLimit(1) + e5:SetCost(c54250060.thcost) + e5:SetTarget(c54250060.thtg) + e5:SetOperation(c54250060.thop) + c:RegisterEffect(e5) +end +function c54250060.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_DISCARD+REASON_COST,nil) +end +function c54250060.spfilter(c,e,tp) + return c:IsSetCard(0xca) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c54250060.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c54250060.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c54250060.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c54250060.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c54250060.cfilter(c) + return c:IsRace(RACE_WARRIOR+RACE_SPELLCASTER) and c:IsAbleToRemoveAsCost() +end +function c54250060.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c54250060.cfilter,tp,LOCATION_GRAVE,0,4,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c54250060.cfilter,tp,LOCATION_GRAVE,0,4,4,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c54250060.thfilter(c) + return c:IsSetCard(0xcb) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c54250060.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c54250060.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c54250060.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c54250060.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c54283059.lua b/script/c54283059.lua index 64277ded..d706028b 100644 --- a/script/c54283059.lua +++ b/script/c54283059.lua @@ -2,7 +2,7 @@ function c54283059.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCost(c54283059.cost) diff --git a/script/c54289683.lua b/script/c54289683.lua index af09f900..c24b4505 100644 --- a/script/c54289683.lua +++ b/script/c54289683.lua @@ -15,14 +15,18 @@ function c54289683.desfilter(c) return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) end function c54289683.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c54289683.filter(chkc) end if chk==0 then return Duel.IsExistingTarget(c54289683.filter,tp,LOCATION_MZONE,0,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local cg=Duel.SelectTarget(tp,c54289683.filter,tp,LOCATION_MZONE,0,1,1,nil) - local c=cg:GetFirst() - local t1=Duel.IsExistingTarget(c54289683.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) + Duel.SelectTarget(tp,c54289683.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c54289683.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local t1=Duel.IsExistingMatchingCard(c54289683.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) local t2=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,93130022,0,0x4011,c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) + and Duel.IsPlayerCanSpecialSummonMonster(tp,93130022,0,0x4011,tc:GetAttack(),tc:GetDefense(),tc:GetLevel(),tc:GetRace(),tc:GetAttribute()) Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(93130021,0)) if t1 and t2 then op=Duel.SelectOption(tp,aux.Stringid(93130021,1),aux.Stringid(93130021,2),aux.Stringid(93130021,3)) @@ -32,41 +36,19 @@ function c54289683.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) op=Duel.SelectOption(tp,aux.Stringid(93130021,1),aux.Stringid(93130021,3)) if op==1 then op=2 end else op=Duel.SelectOption(tp,aux.Stringid(93130021,1)) end - e:SetLabel(op) if op==1 then - e:SetCategory(CATEGORY_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c54289683.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - e:SetLabelObject(g:GetFirst()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - elseif op==2 then - e:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - else - e:SetCategory(CATEGORY_ATKCHANGE) - end -end -function c54289683.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if e:GetLabel()==1 then - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local dc=e:GetLabelObject() - tc=g:GetFirst() - if tc==dc then tc=g:GetNext() end - if tc:IsFaceup() and tc:IsRelateToEffect(e) and dc:IsRelateToEffect(e) then - Duel.Destroy(dc,REASON_EFFECT) + local g=Duel.SelectMatchingCard(tp,c54289683.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) end - elseif e:GetLabel()==2 then - if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + elseif op==2 then local atk=tc:GetAttack() local def=tc:GetDefense() local lv=tc:GetLevel() local race=tc:GetRace() local att=tc:GetAttribute() - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,93130022,0,0x4011,atk,def,lv,race,att) then return end local token=Duel.CreateToken(tp,93130022) tc:CreateRelation(token,RESET_EVENT+0x1fe0000) Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) @@ -114,15 +96,12 @@ function c54289683.operation(e,tp,eg,ep,ev,re,r,rp) token:RegisterEffect(e6,true) Duel.SpecialSummonComplete() else - if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(400) - e1:SetReset(RESET_EVENT+0x1ff0000) - tc:RegisterEffect(e1) - end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(400) + e1:SetReset(RESET_EVENT+0x1ff0000) + tc:RegisterEffect(e1) end end function c54289683.tokenatk(e,c) diff --git a/script/c54297661.lua b/script/c54297661.lua index 0ac56a3c..597289f7 100644 --- a/script/c54297661.lua +++ b/script/c54297661.lua @@ -23,8 +23,8 @@ function c54297661.filter(c,tp) end function c54297661.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c54297661.filter(chkc,tp) end - if chk==0 then return Duel.IsExistingTarget(c54297661.filter,tp,0,LOCATION_MZONE,1,nil,tp) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingTarget(c54297661.filter,tp,0,LOCATION_MZONE,1,nil,tp) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) Duel.SelectTarget(tp,c54297661.filter,tp,0,LOCATION_MZONE,1,1,nil,tp) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) diff --git a/script/c54320860.lua b/script/c54320860.lua index f47baf76..1847b726 100644 --- a/script/c54320860.lua +++ b/script/c54320860.lua @@ -1,41 +1,41 @@ ---インフェルニティ・ビショップ -function c54320860.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,54320860) - e1:SetCondition(c54320860.spcon) - c:RegisterEffect(e1) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_GRAVE) - e2:SetTarget(c54320860.reptg) - e2:SetValue(c54320860.repval) - e2:SetOperation(c54320860.repop) - c:RegisterEffect(e2) -end -function c54320860.spcon(e,c) - if c==nil then return true end - return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)==1 - and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c54320860.filter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) - and c:IsSetCard(0xb) and not c:IsReason(REASON_REPLACE) -end -function c54320860.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 - and eg:IsExists(c54320860.filter,1,nil,tp) and e:GetHandler():IsAbleToRemove() end - return Duel.SelectYesNo(tp,aux.Stringid(54320860,0)) -end -function c54320860.repval(e,c) - return c54320860.filter(c,e:GetHandlerPlayer()) -end -function c54320860.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT+REASON_REPLACE) -end +--インフェルニティ・ビショップ +function c54320860.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,54320860) + e1:SetCondition(c54320860.spcon) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_GRAVE) + e2:SetTarget(c54320860.reptg) + e2:SetValue(c54320860.repval) + e2:SetOperation(c54320860.repop) + c:RegisterEffect(e2) +end +function c54320860.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)==1 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c54320860.filter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) + and c:IsSetCard(0xb) and not c:IsReason(REASON_REPLACE) +end +function c54320860.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 + and eg:IsExists(c54320860.filter,1,nil,tp) and e:GetHandler():IsAbleToRemove() end + return Duel.SelectYesNo(tp,aux.Stringid(54320860,0)) +end +function c54320860.repval(e,c) + return c54320860.filter(c,e:GetHandlerPlayer()) +end +function c54320860.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c54351224.lua b/script/c54351224.lua index b11bd910..c87c93a1 100644 --- a/script/c54351224.lua +++ b/script/c54351224.lua @@ -1,14 +1,6 @@ --リチュアル・ウェポン function c54351224.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(c54351224.target) - e1:SetOperation(c54351224.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c54351224.filter) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,7 @@ function c54351224.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(1500) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c54351224.eqlimit) - c:RegisterEffect(e4) -end -function c54351224.eqlimit(e,c) - return c:IsType(TYPE_RITUAL) and c:IsLevelBelow(6) end function c54351224.filter(c) - return c:IsFaceup() and c:IsType(TYPE_RITUAL) and c:IsLevelBelow(6) -end -function c54351224.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c54351224.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c54351224.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c54351224.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c54351224.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 + return c:IsType(TYPE_RITUAL) and c:IsLevelBelow(6) end diff --git a/script/c54358015.lua b/script/c54358015.lua index 0b16c0c3..f41fde9d 100644 --- a/script/c54358015.lua +++ b/script/c54358015.lua @@ -7,6 +7,7 @@ function c54358015.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(54358015,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) @@ -19,13 +20,18 @@ function c54358015.initial_effect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e2:SetTargetRange(LOCATION_ONFIELD,0) e2:SetTarget(c54358015.tgtg) e2:SetValue(aux.tgoval) c:RegisterEffect(e2) --indes - local e3=e2:Clone() + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_ONFIELD,0) + e3:SetTarget(c54358015.tgtg) e3:SetValue(c54358015.indval) c:RegisterEffect(e3) end diff --git a/script/c54359696.lua b/script/c54359696.lua index 4b69852d..34ac49d7 100644 --- a/script/c54359696.lua +++ b/script/c54359696.lua @@ -1,27 +1,27 @@ ---魔導術士 ラパンデ -function c54359696.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(54359696,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c54359696.target) - e1:SetOperation(c54359696.operation) - c:RegisterEffect(e1) -end -function c54359696.filter(c) - return c:IsSetCard(0x6e) and c:GetLevel()==3 and c:IsAbleToHand() -end -function c54359696.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c54359696.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c54359696.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--魔導術士 ラパンデ +function c54359696.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(54359696,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c54359696.target) + e1:SetOperation(c54359696.operation) + c:RegisterEffect(e1) +end +function c54359696.filter(c) + return c:IsSetCard(0x6e) and c:GetLevel()==3 and c:IsAbleToHand() +end +function c54359696.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c54359696.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c54359696.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c54360049.lua b/script/c54360049.lua index 102414e8..c7111d97 100644 --- a/script/c54360049.lua +++ b/script/c54360049.lua @@ -1,41 +1,41 @@ ---カトブレパスと運命の魔女 -function c54360049.initial_effect(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(54360049,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c54360049.cost) - e1:SetTarget(c54360049.target) - e1:SetOperation(c54360049.operation) - c:RegisterEffect(e1) -end -function c54360049.cfilter(c) - return c:GetTextAttack()==-2 and c:IsAbleToRemoveAsCost() and c:IsType(TYPE_MONSTER) -end -function c54360049.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c54360049.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c54360049.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c54360049.filter(c,tp) - return c:GetSummonPlayer()~=tp -end -function c54360049.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c54360049.filter,1,nil,tp) end - local g=eg:Filter(c54360049.filter,nil,tp) - Duel.SetTargetCard(eg) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c54360049.dfilter(c,e,tp) - return c:GetSummonPlayer()~=tp and c:IsRelateToEffect(e) -end -function c54360049.operation(e,tp,eg,ep,ev,re,r,rp) - local g=eg:Filter(c54360049.dfilter,nil,e,tp) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - end -end +--カトブレパスと運命の魔女 +function c54360049.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(54360049,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c54360049.cost) + e1:SetTarget(c54360049.target) + e1:SetOperation(c54360049.operation) + c:RegisterEffect(e1) +end +function c54360049.cfilter(c) + return c:GetTextAttack()==-2 and c:IsAbleToRemoveAsCost() and c:IsType(TYPE_MONSTER) +end +function c54360049.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c54360049.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c54360049.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c54360049.filter(c,tp) + return c:GetSummonPlayer()~=tp +end +function c54360049.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c54360049.filter,1,nil,tp) end + local g=eg:Filter(c54360049.filter,nil,tp) + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c54360049.dfilter(c,e,tp) + return c:GetSummonPlayer()~=tp and c:IsRelateToEffect(e) +end +function c54360049.operation(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c54360049.dfilter,nil,e,tp) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c54366836.lua b/script/c54366836.lua index 9c599a7f..2220fff4 100644 --- a/script/c54366836.lua +++ b/script/c54366836.lua @@ -24,7 +24,8 @@ function c54366836.initial_effect(c) c:RegisterEffect(e2) --damage local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(54366836,0)) + e3:SetDescription(aux.Stringid(54366836,1)) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) e3:SetRange(LOCATION_MZONE) diff --git a/script/c54401832.lua b/script/c54401832.lua index 0975511a..5ca24042 100644 --- a/script/c54401832.lua +++ b/script/c54401832.lua @@ -11,16 +11,15 @@ function c54401832.initial_effect(c) c:RegisterEffect(e1) end function c54401832.filter1(c) - return c:IsFusionSetCard(0xe1) + return (c:IsFusionSetCard(0xe1) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end function c54401832.filter2(c) - return c:IsAttackBelow(3000) + return (c:IsAttackBelow(3000) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end function c54401832.fscon(e,g,gc,chkfnf) if g==nil then return true end local f1=c54401832.filter1 local f2=c54401832.filter2 - local minc=2 local chkf=bit.band(chkfnf,0xff) local tp=e:GetHandlerPlayer() local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536) @@ -30,17 +29,13 @@ function c54401832.fscon(e,g,gc,chkfnf) fc=fg:GetNext() end local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) + local mg1=mg:Filter(aux.FConditionFilterConAndSub,nil,f1,true) if gc then if not gc:IsCanBeFusionMaterial(e:GetHandler(),true) then return false end - if aux.FConditionFilterFFR(gc,f1,f2,mg,minc,chkf) then - return true - elseif f2(gc) then - mg:RemoveCard(gc) - if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end - return mg:IsExists(aux.FConditionFilterFFR,1,nil,f1,f2,mg,minc-1,chkf) - else return false end + return aux.FConditionFilterFFRCol1(gc,f1,f2,2,chkf,mg,nil,0) + or mg1:IsExists(aux.FConditionFilterFFRCol1,1,nil,f1,f2,2,chkf,mg,nil,0,gc) end - return mg:IsExists(aux.FConditionFilterFFR,1,nil,f1,f2,mg,minc,chkf) + return mg1:IsExists(Auxiliary.FConditionFilterFFRCol1,1,nil,f1,f2,2,chkf,mg,nil,0) end function c54401832.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) local f1=c54401832.filter1 @@ -53,101 +48,51 @@ function c54401832.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) fc=fg:GetNext() end local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) - local minct=2 - local maxct=2 + local mg1=g:Filter(aux.FConditionFilterConAndSub,nil,f1,true) + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if g:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end + end if gc then - g:RemoveCard(gc) - if aux.FConditionFilterFFR(gc,f1,f2,g,minct,chkf) then - if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end - local g1=Group.CreateGroup() - if f2(gc) then - local mg1=g:Filter(aux.FConditionFilterFFR,nil,f1,f2,g,minct-1,chkf) - if mg1:GetCount()>0 then - --if gc fits both, should allow an extra material that fits f1 but doesn't fit f2 - local mg2=g:Filter(f2,nil) - mg1:Merge(mg2) - if chkf~=PLAYER_NONE then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg1:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - g1:Merge(sg) - mg1:Sub(sg) - minct=minct-1 - maxct=maxct-1 - if not f2(sg:GetFirst()) then - if mg1:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then - if minct<=0 then minct=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg1:FilterSelect(tp,f2,minct,maxct,nil) - g1:Merge(sg) - end - Duel.SetFusionMaterial(g1) - return - end - end - if maxct>1 and (minct>1 or Duel.SelectYesNo(tp,93)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg1:FilterSelect(tp,f2,minct-1,maxct-1,nil) - g1:Merge(sg) - mg1:Sub(sg) - local ct=sg:GetCount() - minct=minct-ct - maxct=maxct-ct - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg1:Select(tp,1,1,nil) - g1:Merge(sg) - mg1:Sub(sg) - minct=minct-1 - maxct=maxct-1 - if mg1:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then - if minct<=0 then minct=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg1:FilterSelect(tp,f2,minct,maxct,nil) - g1:Merge(sg) - end - Duel.SetFusionMaterial(g1) - return - end - end - local mg=g:Filter(f2,nil) - if chkf~=PLAYER_NONE then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - g1:Merge(sg) - mg:Sub(sg) - minct=minct-1 - maxct=maxct-1 + local matg=Group.CreateGroup() + if aux.FConditionFilterFFRCol1(gc,f1,f2,2,chkf,g,nil,0) then + matg:AddCard(gc) + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,aux.FConditionFilterFFRCol2,1,1,nil,f1,f2,2,chkf,g,matg,i-1) + matg:Merge(g1) + g:Sub(g1) end - if mg:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then - if minct<=0 then minct=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg:Select(tp,minct,maxct,nil) - g1:Merge(sg) - end - Duel.SetFusionMaterial(g1) - return + matg:RemoveCard(gc) + if sfhchk then Duel.ShuffleHand(tp) end + Duel.SetFusionMaterial(matg) else - if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end - minct=minct-1 - maxct=maxct-1 + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local matg=mg1:FilterSelect(p,aux.FConditionFilterFFRCol1,1,1,nil,f1,f2,2,chkf,g,nil,0,gc) + matg:AddCard(gc) + g:Sub(matg) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,aux.FConditionFilterFFRCol2,1,1,nil,f1,f2,2,chkf,g,matg,1) + matg:Merge(g1) + g:Sub(g1) + matg:RemoveCard(gc) + if sfhchk then Duel.ShuffleHand(tp) end + Duel.SetFusionMaterial(matg) end + return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=g:FilterSelect(tp,aux.FConditionFilterFFR,1,1,nil,f1,f2,g,minct,chkf) - local mg=g:Filter(f2,g1:GetFirst()) - if chkf~=PLAYER_NONE and not aux.FConditionCheckF(g1:GetFirst(),chkf) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - g1:Merge(sg) - mg:Sub(sg) - minct=minct-1 - maxct=maxct-1 - end - if mg:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then - if minct<=0 then minct=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg:Select(tp,minct,maxct,nil) - g1:Merge(sg) + local matg=Group.CreateGroup() + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local matg=mg1:FilterSelect(p,aux.FConditionFilterFFRCol1,1,1,nil,f1,f2,2,chkf,g,nil,0,gc) + g:Sub(matg) + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,aux.FConditionFilterFFRCol2,1,1,nil,f1,f2,2,chkf,g,matg,i-1) + matg:Merge(g1) + g:Sub(g1) end - Duel.SetFusionMaterial(g1) + if sfhchk then Duel.ShuffleHand(tp) end + Duel.SetFusionMaterial(matg) end diff --git a/script/c54407825.lua b/script/c54407825.lua index f3d514a8..031bb6f6 100644 --- a/script/c54407825.lua +++ b/script/c54407825.lua @@ -1,52 +1,52 @@ ---驚天動地 -function c54407825.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --to deck - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TODECK) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c54407825.condition) - e2:SetTarget(c54407825.target) - e2:SetOperation(c54407825.operation) - c:RegisterEffect(e2) -end -function c54407825.filter(c) - return c:IsPreviousLocation(LOCATION_DECK) -end -function c54407825.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c54407825.filter,1,nil) -end -function c54407825.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsAbleToDeck() end - if chk==0 then return e:GetHandler():IsRelateToEffect(e) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c54407825.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_TO_GRAVE) - e1:SetTargetRange(LOCATION_DECK,LOCATION_DECK) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_CANNOT_DISCARD_DECK) - e2:SetTargetRange(1,1) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end +--驚天動地 +function c54407825.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --to deck + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TODECK) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c54407825.condition) + e2:SetTarget(c54407825.target) + e2:SetOperation(c54407825.operation) + c:RegisterEffect(e2) +end +function c54407825.filter(c) + return c:IsPreviousLocation(LOCATION_DECK) +end +function c54407825.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c54407825.filter,1,nil) +end +function c54407825.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsAbleToDeck() end + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c54407825.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_TO_GRAVE) + e1:SetTargetRange(LOCATION_DECK,LOCATION_DECK) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_DISCARD_DECK) + e2:SetTargetRange(1,1) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c54423935.lua b/script/c54423935.lua new file mode 100644 index 00000000..dc7ded44 --- /dev/null +++ b/script/c54423935.lua @@ -0,0 +1,59 @@ +--R・R・R +function c54423935.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c54423935.target) + e1:SetOperation(c54423935.activate) + c:RegisterEffect(e1) +end +function c54423935.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0xba) + and Duel.IsExistingMatchingCard(c54423935.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) +end +function c54423935.spfilter(c,e,tp,cd) + return c:IsCode(cd) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c54423935.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:IsCode(e:GetLabel()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c54423935.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c54423935.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + e:SetLabel(g:GetFirst():GetCode()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c54423935.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c54423935.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,tc:GetCode()) + local sc=g:GetFirst() + if sc and Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetLabelObject(sc) + e1:SetLabel(sc:GetFieldID()) + e1:SetCondition(c54423935.imcon) + e1:SetValue(aux.imval1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetValue(aux.tgoval) + tc:RegisterEffect(e2) + end + end +end +function c54423935.imcon(e) + local tp=e:GetHandlerPlayer() + local sc=e:GetLabelObject() + return sc and sc:GetFieldID()==e:GetLabel() and sc:IsFaceup() and sc:IsLocation(LOCATION_MZONE) + and sc:IsControler(tp) +end diff --git a/script/c54451023.lua b/script/c54451023.lua index d35f9238..62ca79a4 100644 --- a/script/c54451023.lua +++ b/script/c54451023.lua @@ -1,85 +1,85 @@ ---植物連鎖 -function c54451023.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c54451023.condition) - e1:SetTarget(c54451023.target) - e1:SetOperation(c54451023.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(54451023,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetCondition(c54451023.spcon) - e2:SetTarget(c54451023.sptg) - e2:SetOperation(c54451023.spop) - c:RegisterEffect(e2) -end -function c54451023.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c54451023.filter(c) - return c:IsFaceup() and c:IsRace(RACE_PLANT) -end -function c54451023.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c54451023.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c54451023.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c54451023.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c54451023.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - --Atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(500) - e1:SetReset(RESET_EVENT+0x1fe0000) - 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(c54451023.eqlimit) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - end -end -function c54451023.eqlimit(e,c) - return c:GetControler()==e:GetOwnerPlayer() and c:IsRace(RACE_PLANT) -end -function c54451023.spcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetReason(),0x41)==0x41 and e:GetHandler():GetEquipTarget() -end -function c54451023.spfilter(c,e,tp) - return c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c54451023.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c54451023.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c54451023.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c54451023.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c54451023.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--植物連鎖 +function c54451023.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c54451023.condition) + e1:SetTarget(c54451023.target) + e1:SetOperation(c54451023.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(54451023,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c54451023.spcon) + e2:SetTarget(c54451023.sptg) + e2:SetOperation(c54451023.spop) + c:RegisterEffect(e2) +end +function c54451023.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c54451023.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c54451023.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c54451023.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c54451023.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c54451023.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c54451023.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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(c54451023.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c54451023.eqlimit(e,c) + return c:GetControler()==e:GetOwnerPlayer() and c:IsRace(RACE_PLANT) +end +function c54451023.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetReason(),0x41)==0x41 and e:GetHandler():GetEquipTarget() +end +function c54451023.spfilter(c,e,tp) + return c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c54451023.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c54451023.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c54451023.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c54451023.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c54451023.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c54484652.lua b/script/c54484652.lua index 4a490e87..793917d9 100644 --- a/script/c54484652.lua +++ b/script/c54484652.lua @@ -1,65 +1,65 @@ ---超戦士カオス・ソルジャー -function c54484652.initial_effect(c) - c:SetSPSummonOnce(54484652) - c:EnableReviveLimit() - --damage - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(aux.bdogcon) - e1:SetTarget(c54484652.damtg) - e1:SetOperation(c54484652.damop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c54484652.spcon) - e2:SetTarget(c54484652.sptg) - e2:SetOperation(c54484652.spop) - c:RegisterEffect(e2) -end -function c54484652.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local bc=e:GetHandler():GetBattleTarget() - Duel.SetTargetCard(bc) - local dam=bc:GetBaseAttack() - if dam<0 then dam=0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c54484652.damop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local dam=tc:GetBaseAttack() - if dam<0 then dam=0 end - Duel.Damage(p,dam,REASON_EFFECT) - end -end -function c54484652.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_BATTLE) - or (rp~=tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp) -end -function c54484652.spfilter(c,e,tp) - return c:IsSetCard(0xbd) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c54484652.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c54484652.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) -end -function c54484652.spop(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,c54484652.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--超戦士カオス・ソルジャー +function c54484652.initial_effect(c) + c:SetSPSummonOnce(54484652) + c:EnableReviveLimit() + --damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(aux.bdogcon) + e1:SetTarget(c54484652.damtg) + e1:SetOperation(c54484652.damop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c54484652.spcon) + e2:SetTarget(c54484652.sptg) + e2:SetOperation(c54484652.spop) + c:RegisterEffect(e2) +end +function c54484652.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local bc=e:GetHandler():GetBattleTarget() + Duel.SetTargetCard(bc) + local dam=bc:GetBaseAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c54484652.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local dam=tc:GetBaseAttack() + if dam<0 then dam=0 end + Duel.Damage(p,dam,REASON_EFFECT) + end +end +function c54484652.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_BATTLE) + or (rp~=tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp) +end +function c54484652.spfilter(c,e,tp) + return c:IsSetCard(0xbd) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c54484652.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c54484652.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) +end +function c54484652.spop(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,aux.NecroValleyFilter(c54484652.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c54514594.lua b/script/c54514594.lua index 71690174..2a259ffd 100644 --- a/script/c54514594.lua +++ b/script/c54514594.lua @@ -1,33 +1,33 @@ ---ヴォルカニック・ハンマー -function c54514594.initial_effect(c) - --damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(54514594,0)) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c54514594.cost) - e1:SetTarget(c54514594.target) - e1:SetOperation(c54514594.operation) - c:RegisterEffect(e1) -end -function c54514594.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c54514594.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_GRAVE,0,1,nil,0x32) end - Duel.SetTargetPlayer(1-tp) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) -end -function c54514594.operation(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local d=Duel.GetMatchingGroupCount(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x32)*200 - Duel.Damage(p,d,REASON_EFFECT) -end +--ヴォルカニック・ハンマー +function c54514594.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(54514594,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c54514594.cost) + e1:SetTarget(c54514594.target) + e1:SetOperation(c54514594.operation) + c:RegisterEffect(e1) +end +function c54514594.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c54514594.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_GRAVE,0,1,nil,0x32) end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c54514594.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local d=Duel.GetMatchingGroupCount(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x32)*200 + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c54537489.lua b/script/c54537489.lua index 46ea31b5..5036d5b8 100644 --- a/script/c54537489.lua +++ b/script/c54537489.lua @@ -1,45 +1,45 @@ ---タツノオトシオヤ -function c54537489.initial_effect(c) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c54537489.splimit) - c:RegisterEffect(e1) - --token - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(54537489,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(3,54537489) - e2:SetTarget(c54537489.sptg) - e2:SetOperation(c54537489.spop) - c:RegisterEffect(e2) -end -function c54537489.splimit(e,se,sp,st) - return se:IsActiveType(TYPE_MONSTER) and se:GetHandler():IsRace(RACE_WYRM) -end -function c54537489.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetLevel()>1 - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,54537490,0,0x4011,300,200,1,RACE_WYRM,ATTRIBUTE_WATER) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c54537489.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) or c:GetLevel()<2 then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(-1) - c:RegisterEffect(e1) - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,54537490,0,0x4011,300,200,1,RACE_WYRM,ATTRIBUTE_WATER) then - local token=Duel.CreateToken(tp,54537490) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) - end -end +--タツノオトシオヤ +function c54537489.initial_effect(c) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c54537489.splimit) + c:RegisterEffect(e1) + --token + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(54537489,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(3,54537489) + e2:SetTarget(c54537489.sptg) + e2:SetOperation(c54537489.spop) + c:RegisterEffect(e2) +end +function c54537489.splimit(e,se,sp,st) + return se:IsActiveType(TYPE_MONSTER) and se:GetHandler():IsRace(RACE_WYRM) +end +function c54537489.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetLevel()>1 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,54537490,0,0x4011,300,200,1,RACE_WYRM,ATTRIBUTE_WATER) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c54537489.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) or c:GetLevel()<2 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-1) + c:RegisterEffect(e1) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,54537490,0,0x4011,300,200,1,RACE_WYRM,ATTRIBUTE_WATER) then + local token=Duel.CreateToken(tp,54537490) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c54539105.lua b/script/c54539105.lua index 98b9fe23..44d1631e 100644 --- a/script/c54539105.lua +++ b/script/c54539105.lua @@ -1,4 +1,4 @@ ---ライオンの儀式 -function c54539105.initial_effect(c) - aux.AddRitualProcGreaterCode(c,33951077) -end +--ライオンの儀式 +function c54539105.initial_effect(c) + aux.AddRitualProcGreaterCode(c,33951077) +end diff --git a/script/c54631665.lua b/script/c54631665.lua new file mode 100644 index 00000000..a3099022 --- /dev/null +++ b/script/c54631665.lua @@ -0,0 +1,81 @@ +--SPYRAL Resort +function c54631665.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_ONFIELD,0) + e2:SetTarget(c54631665.tgtg) + e2:SetValue(aux.tgoval) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(54631665,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1) + e3:SetTarget(c54631665.thtg) + e3:SetOperation(c54631665.thop) + c:RegisterEffect(e3) + --maintain + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_FZONE) + e4:SetCountLimit(1) + e4:SetCondition(c54631665.mtcon) + e4:SetOperation(c54631665.mtop) + c:RegisterEffect(e4) +end +function c54631665.tgtg(e,c) + return c:IsSetCard(0xee) and c~=e:GetHandler() +end +function c54631665.thfilter(c) + return c:IsSetCard(0xee) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c54631665.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c54631665.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c54631665.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c54631665.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c54631665.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c54631665.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToDeckOrExtraAsCost() +end +function c54631665.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.HintSelection(Group.FromCards(c)) + local g=Duel.GetMatchingGroup(c54631665.cfilter,tp,LOCATION_GRAVE,0,nil) + local sel=1 + if g:GetCount()~=0 then + sel=Duel.SelectOption(tp,aux.Stringid(54631665,1),aux.Stringid(54631665,2)) + else + sel=Duel.SelectOption(tp,aux.Stringid(54631665,2))+1 + end + if sel==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local tg=g:Select(tp,1,1,nil) + Duel.SendtoDeck(tg,nil,2,REASON_COST) + else + Duel.Destroy(c,REASON_COST) + end +end diff --git a/script/c54635862.lua b/script/c54635862.lua index bd78f0db..a4b5df1a 100644 --- a/script/c54635862.lua +++ b/script/c54635862.lua @@ -1,42 +1,42 @@ ---ジェントルーパー -function c54635862.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(54635862,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c54635862.condition) - e1:SetTarget(c54635862.target) - e1:SetOperation(c54635862.operation) - c:RegisterEffect(e1) - --atk limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetValue(c54635862.atlimit) - c:RegisterEffect(e2) -end -function c54635862.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():GetControler()~=tp -end -function c54635862.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c54635862.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c54635862.atlimit(e,c) - return c~=e:GetHandler() -end +--ジェントルーパー +function c54635862.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(54635862,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c54635862.condition) + e1:SetTarget(c54635862.target) + e1:SetOperation(c54635862.operation) + c:RegisterEffect(e1) + --atk limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(c54635862.atlimit) + c:RegisterEffect(e2) +end +function c54635862.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp +end +function c54635862.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c54635862.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c54635862.atlimit(e,c) + return c~=e:GetHandler() +end diff --git a/script/c54702678.lua b/script/c54702678.lua index 6657b2a7..6c0bea60 100644 --- a/script/c54702678.lua +++ b/script/c54702678.lua @@ -1,69 +1,69 @@ ---極戦機王ヴァルバロイド -function c54702678.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,c54702678.ffilter,5,true) - --extra attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(1) - c:RegisterEffect(e1) - --disable - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(54702678,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_BATTLED) - e2:SetCondition(c54702678.discon) - e2:SetOperation(c54702678.disop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(54702678,1)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetCode(EVENT_BATTLE_DESTROYING) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCondition(c54702678.damcon) - e3:SetTarget(c54702678.damtg) - e3:SetOperation(c54702678.damop) - c:RegisterEffect(e3) - -- - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - c:RegisterEffect(e4) -end -function c54702678.ffilter(c) - return c:IsFusionSetCard(0x16) and c:IsRace(RACE_MACHINE) -end -function c54702678.discon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttackTarget() and e:GetHandler()==Duel.GetAttacker() -end -function c54702678.disop(e,tp,eg,ep,ev,re,r,rp) - local bc=e:GetHandler():GetBattleTarget() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x57a0000) - bc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x57a0000) - bc:RegisterEffect(e2) -end -function c54702678.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) -end -function c54702678.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) -end -function c54702678.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--極戦機王ヴァルバロイド +function c54702678.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,c54702678.ffilter,5,true) + --extra attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(54702678,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c54702678.discon) + e2:SetOperation(c54702678.disop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(54702678,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCondition(c54702678.damcon) + e3:SetTarget(c54702678.damtg) + e3:SetOperation(c54702678.damop) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e4) +end +function c54702678.ffilter(c) + return c:IsFusionSetCard(0x16) and c:IsRace(RACE_MACHINE) +end +function c54702678.discon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget() and e:GetHandler()==Duel.GetAttacker() +end +function c54702678.disop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x57a0000) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x57a0000) + bc:RegisterEffect(e2) +end +function c54702678.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c54702678.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c54702678.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c54719828.lua b/script/c54719828.lua index b323b71b..635e3854 100644 --- a/script/c54719828.lua +++ b/script/c54719828.lua @@ -6,6 +6,7 @@ function c54719828.initial_effect(c) --act limit local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(54719828,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c5489987.lua b/script/c5489987.lua new file mode 100644 index 00000000..5ea63d8f --- /dev/null +++ b/script/c5489987.lua @@ -0,0 +1,87 @@ +--花札衛-桜に幕- +function c5489987.initial_effect(c) + c:EnableReviveLimit() + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5489987,0)) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c5489987.drcost) + e1:SetTarget(c5489987.drtg) + e1:SetOperation(c5489987.drop) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5489987,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_HAND) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetCondition(c5489987.atkcon) + e2:SetCost(c5489987.atkcost) + e2:SetOperation(c5489987.atkop) + c:RegisterEffect(e2) +end +function c5489987.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsPublic() end +end +function c5489987.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c5489987.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)~=0 then + local c=e:GetHandler() + local g=Duel.GetOperatedGroup() + local tc=g:GetFirst() + Duel.ConfirmCards(1-tp,tc) + Duel.BreakEffect() + if tc:IsType(TYPE_MONSTER) and tc:IsSetCard(0xe6) then + if c:IsRelateToEffect(e) then + if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then + c:CompleteProcedure() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SendtoGrave(c,REASON_RULE) + end + end + else + if c:IsRelateToEffect(e) then + g:AddCard(c) + end + Duel.SendtoGrave(g,REASON_EFFECT) + end + Duel.ShuffleHand(tp) + end +end +function c5489987.atkcon(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + local tc=Duel.GetAttackTarget() + if not tc then return false end + if tc:IsControler(1-tp) then tc=Duel.GetAttacker() end + e:SetLabelObject(tc) + return tc:IsFaceup() and tc:IsSetCard(0xe6) and tc:IsRelateToBattle() +end +function c5489987.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c5489987.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsControler(tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c54903668.lua b/script/c54903668.lua index 41003aff..3b9786f6 100644 --- a/script/c54903668.lua +++ b/script/c54903668.lua @@ -29,8 +29,7 @@ function c54903668.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c54903668.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c54941203.lua b/script/c54941203.lua index 05c47e7a..1b5dbfd5 100644 --- a/script/c54941203.lua +++ b/script/c54941203.lua @@ -1,65 +1,65 @@ ---調律の魔術師 -function c54941203.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(54941203,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCountLimit(1,54941203) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e1:SetCondition(c54941203.spcon) - e1:SetTarget(c54941203.sptg) - e1:SetOperation(c54941203.spop) - c:RegisterEffect(e1) - --recover - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_RECOVER) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTarget(c54941203.rectg) - e2:SetOperation(c54941203.recop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c54941203.spcon(e,tp,eg,ep,ev,re,r,rp) - local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) - local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) - return tc1 and tc1:IsSetCard(0x98) and tc2 and tc2:IsSetCard(0x98) -end -function c54941203.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c54941203.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1,true) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c54941203.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,400) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,400) -end -function c54941203.recop(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - if Duel.Recover(p,400,REASON_EFFECT)~=0 then - Duel.BreakEffect() - Duel.Damage(tp,400,REASON_EFFECT) - end -end +--調律の魔術師 +function c54941203.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(54941203,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCountLimit(1,54941203) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetCondition(c54941203.spcon) + e1:SetTarget(c54941203.sptg) + e1:SetOperation(c54941203.spop) + c:RegisterEffect(e1) + --recover + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTarget(c54941203.rectg) + e2:SetOperation(c54941203.recop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c54941203.spcon(e,tp,eg,ep,ev,re,r,rp) + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + return tc1 and tc1:IsSetCard(0x98) and tc2 and tc2:IsSetCard(0x98) +end +function c54941203.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c54941203.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c54941203.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-tp,400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,400) +end +function c54941203.recop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + if Duel.Recover(p,400,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.Damage(tp,400,REASON_EFFECT) + end +end diff --git a/script/c5494820.lua b/script/c5494820.lua index ab891a7c..04cb6d5c 100644 --- a/script/c5494820.lua +++ b/script/c5494820.lua @@ -1,14 +1,6 @@ --サイクロンレーザー function c5494820.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(c5494820.target) - e1:SetOperation(c5494820.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c5494820.filter) --atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,30 +12,7 @@ function c5494820.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_PIERCE) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c5494820.eqfilter) - c:RegisterEffect(e4) -end -function c5494820.eqfilter(e,c) - return c:IsCode(10992251) end function c5494820.filter(c) - return c:IsFaceup() and c:IsCode(10992251) -end -function c5494820.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c5494820.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c5494820.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c5494820.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c5494820.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 + return c:IsCode(10992251) end diff --git a/script/c55008284.lua b/script/c55008284.lua index 8f979e7d..bcbd0b4d 100644 --- a/script/c55008284.lua +++ b/script/c55008284.lua @@ -28,6 +28,7 @@ end function c55008284.activate(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local tc=Duel.GetFirstTarget() if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end local g=Duel.GetMatchingGroup(c55008284.spfilter,tp,LOCATION_DECK,0,nil,e,tp,tc:GetCode()) diff --git a/script/c55046718.lua b/script/c55046718.lua index de3f4c55..c0dc66ae 100644 --- a/script/c55046718.lua +++ b/script/c55046718.lua @@ -1,26 +1,11 @@ --ヴァイロン・コンポーネント function c55046718.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(c55046718.target) - e1:SetOperation(c55046718.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x30)) --Pierce local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_PIERCE) 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(c55046718.eqlimit) - c:RegisterEffect(e3) --Search local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(55046718,0)) @@ -33,26 +18,6 @@ function c55046718.initial_effect(c) e4:SetOperation(c55046718.thop) c:RegisterEffect(e4) end -function c55046718.eqlimit(e,c) - return c:IsSetCard(0x30) -end -function c55046718.filter(c) - return c:IsFaceup() and c:IsSetCard(0x30) -end -function c55046718.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c55046718.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c55046718.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c55046718.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c55046718.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 c55046718.thcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) diff --git a/script/c55063751.lua b/script/c55063751.lua index cada4d81..fdaef4e7 100644 --- a/script/c55063751.lua +++ b/script/c55063751.lua @@ -1,76 +1,75 @@ ---Gameciel, the Sea Turtle Kaiju -function c55063751.initial_effect(c) - c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) - --special summon rule - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e1:SetTargetRange(POS_FACEUP_ATTACK,1) - e1:SetCondition(c55063751.spcon) - e1:SetOperation(c55063751.spop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetRange(LOCATION_HAND) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e2:SetTargetRange(POS_FACEUP_ATTACK,0) - e2:SetCondition(c55063751.spcon2) - c:RegisterEffect(e2) - --negate - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(55063751,0)) - e3:SetCategory(CATEGORY_NEGATE+CATEGORY_REMOVE) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_CHAINING) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c55063751.negcon) - e3:SetCost(c55063751.negcost) - e3:SetTarget(c55063751.negtg) - e3:SetOperation(c55063751.negop) - c:RegisterEffect(e3) -end -function c55063751.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xd3) -end -function c55063751.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(Card.IsReleasable,tp,0,LOCATION_MZONE,1,nil) -end -function c55063751.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c55063751.spcon2(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c55063751.cfilter,tp,0,LOCATION_MZONE,1,nil) -end -function c55063751.negcon(e,tp,eg,ep,ev,re,r,rp) - if ep==tp or e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end - return not re:GetHandler():IsCode(55063751) and Duel.IsChainNegatable(ev) -end -function c55063751.negcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsCanRemoveCounter(tp,1,1,0x37,2,REASON_COST) end - Duel.RemoveCounter(tp,1,1,0x37,2,REASON_COST) -end -function c55063751.negtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsAbleToRemove() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) - end -end -function c55063751.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Remove(eg,POS_FACEUP,REASON_EFFECT) - end -end +--海亀壊獣ガメシエル +function c55063751.initial_effect(c) + c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetTargetRange(POS_FACEUP_ATTACK,1) + e1:SetCondition(c55063751.spcon) + e1:SetOperation(c55063751.spop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetRange(LOCATION_HAND) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e2:SetTargetRange(POS_FACEUP_ATTACK,0) + e2:SetCondition(c55063751.spcon2) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(55063751,0)) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_CHAINING) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c55063751.negcon) + e3:SetCost(c55063751.negcost) + e3:SetTarget(c55063751.negtg) + e3:SetOperation(c55063751.negop) + c:RegisterEffect(e3) +end +function c55063751.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xd3) +end +function c55063751.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(Card.IsReleasable,tp,0,LOCATION_MZONE,1,nil) +end +function c55063751.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c55063751.spcon2(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c55063751.cfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c55063751.negcon(e,tp,eg,ep,ev,re,r,rp) + if ep==tp or e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return not re:GetHandler():IsCode(55063751) and Duel.IsChainNegatable(ev) +end +function c55063751.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsCanRemoveCounter(tp,1,1,0x37,2,REASON_COST) end + Duel.RemoveCounter(tp,1,1,0x37,2,REASON_COST) +end +function c55063751.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return re:GetHandler():IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) + end +end +function c55063751.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Remove(eg,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c5506791.lua b/script/c5506791.lua index fe933a5c..eb2410f4 100644 --- a/script/c5506791.lua +++ b/script/c5506791.lua @@ -1,65 +1,65 @@ ---マジェスペクター・キャット -function c5506791.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetCountLimit(1,5506791) - e2:SetTarget(c5506791.regtg) - e2:SetOperation(c5506791.regop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --cannot target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e4:SetValue(aux.tgoval) - c:RegisterEffect(e4) - --indes - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e5:SetRange(LOCATION_MZONE) - e5:SetValue(c5506791.indval) - c:RegisterEffect(e5) -end -function c5506791.thfilter(c) - return c:IsSetCard(0xd0) and c:IsAbleToHand() -end -function c5506791.regtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,1,nil,0xd0) end -end -function c5506791.regop(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_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetCondition(c5506791.thcon) - e1:SetOperation(c5506791.thop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c5506791.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c5506791.thfilter,tp,LOCATION_DECK,0,1,nil) -end -function c5506791.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,5506791) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c5506791.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c5506791.indval(e,re,tp) - return tp~=e:GetHandlerPlayer() -end +--マジェスペクター・キャット +function c5506791.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCountLimit(1,5506791) + e2:SetTarget(c5506791.regtg) + e2:SetOperation(c5506791.regop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --cannot target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetValue(aux.tgoval) + c:RegisterEffect(e4) + --indes + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c5506791.indval) + c:RegisterEffect(e5) +end +function c5506791.thfilter(c) + return c:IsSetCard(0xd0) and c:IsAbleToHand() +end +function c5506791.regtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,1,nil,0xd0) end +end +function c5506791.regop(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_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c5506791.thcon) + e1:SetOperation(c5506791.thop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c5506791.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c5506791.thfilter,tp,LOCATION_DECK,0,1,nil) +end +function c5506791.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,5506791) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c5506791.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c5506791.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end diff --git a/script/c55117418.lua b/script/c55117418.lua index d11978e4..611d39a4 100644 --- a/script/c55117418.lua +++ b/script/c55117418.lua @@ -26,8 +26,7 @@ function c55117418.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c55117418.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c55136228.lua b/script/c55136228.lua index 3b8b090d..1a57fd2e 100644 --- a/script/c55136228.lua +++ b/script/c55136228.lua @@ -1,66 +1,66 @@ ---剣闘獣の底力 -function c55136228.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(c55136228.condition) - e1:SetTarget(c55136228.target) - e1:SetOperation(c55136228.activate) - c:RegisterEffect(e1) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCost(c55136228.thcost) - e1:SetTarget(c55136228.thtg) - e1:SetOperation(c55136228.thop) - c:RegisterEffect(e1) -end -function c55136228.condition(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetCurrentPhase()==PHASE_DAMAGE and Duel.IsDamageCalculated() then return false end - return true -end -function c55136228.filter(c) - return c:IsFaceup() and c:IsSetCard(0x19) -end -function c55136228.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c55136228.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c55136228.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c55136228.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c55136228.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(500) - tc:RegisterEffect(e1) - end -end -function c55136228.cfilter(c) - return c:IsSetCard(0x19) and c:IsAbleToDeckAsCost() -end -function c55136228.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c55136228.cfilter,tp,LOCATION_GRAVE,0,2,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,c55136228.cfilter,tp,LOCATION_GRAVE,0,2,2,e:GetHandler()) - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c55136228.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c55136228.thop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,e:GetHandler()) - end -end +--剣闘獣の底力 +function c55136228.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(c55136228.condition) + e1:SetTarget(c55136228.target) + e1:SetOperation(c55136228.activate) + c:RegisterEffect(e1) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c55136228.thcost) + e1:SetTarget(c55136228.thtg) + e1:SetOperation(c55136228.thop) + c:RegisterEffect(e1) +end +function c55136228.condition(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetCurrentPhase()==PHASE_DAMAGE and Duel.IsDamageCalculated() then return false end + return true +end +function c55136228.filter(c) + return c:IsFaceup() and c:IsSetCard(0x19) +end +function c55136228.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c55136228.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c55136228.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c55136228.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c55136228.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + end +end +function c55136228.cfilter(c) + return c:IsSetCard(0x19) and c:IsAbleToDeckAsCost() +end +function c55136228.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c55136228.cfilter,tp,LOCATION_GRAVE,0,2,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c55136228.cfilter,tp,LOCATION_GRAVE,0,2,2,e:GetHandler()) + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c55136228.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c55136228.thop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,e:GetHandler()) + end +end diff --git a/script/c55154048.lua b/script/c55154048.lua index 8684edf5..bd582316 100644 --- a/script/c55154048.lua +++ b/script/c55154048.lua @@ -1,27 +1,12 @@ --極星宝ドラウプニル function c55154048.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(c55154048.target) - e1:SetOperation(c55154048.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c55154048.filter) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(800) 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(c55154048.eqlimit) - c:RegisterEffect(e3) --Search local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(55154048,0)) @@ -34,25 +19,8 @@ function c55154048.initial_effect(c) e4:SetOperation(c55154048.thop) c:RegisterEffect(e4) end -function c55154048.eqlimit(e,c) - return c:IsSetCard(0x42) or c:IsSetCard(0x4b) -end function c55154048.filter(c) - return c:IsFaceup() and (c:IsSetCard(0x42) or c:IsSetCard(0x4b)) -end -function c55154048.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c55154048.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c55154048.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c55154048.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c55154048.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 + return (c:IsSetCard(0x42) or c:IsSetCard(0x4b)) end function c55154048.thcon(e,tp,eg,ep,ev,re,r,rp,chk) return e:GetHandler():IsPreviousPosition(POS_FACEUP) diff --git a/script/c55171412.lua b/script/c55171412.lua index 48e2eb96..44446cd2 100644 --- a/script/c55171412.lua +++ b/script/c55171412.lua @@ -1,132 +1,133 @@ ---E・HERO アクア・ネオス -function c55171412.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,89943723,17955766,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c55171412.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c55171412.spcon) - e2:SetOperation(c55171412.spop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(55171412,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c55171412.retcon1) - e3:SetTarget(c55171412.rettg) - e3:SetOperation(c55171412.retop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(0) - e4:SetCondition(c55171412.retcon2) - c:RegisterEffect(e4) - --destroy - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(55171412,1)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetCost(c55171412.descost) - e5:SetTarget(c55171412.destg) - e5:SetOperation(c55171412.desop) - c:RegisterEffect(e5) -end -function c55171412.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) -end -function c55171412.spfilter(c,code) - return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) -end -function c55171412.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-1 then return false end - local g1=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,nil,17955766) - if g1:GetCount()==0 or g2:GetCount()==0 then return false end - if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end - if ft>0 then return true end - local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - if ft==-1 then return f1>0 and f2>0 - else return f1>0 or f2>0 end -end -function c55171412.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g1=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,nil,17955766) - g1:Merge(g2) - local g=Group.CreateGroup() - local tc=nil - for i=1,2 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - if ft<=0 then - tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() - ft=ft+1 - else - tc=g1:Select(tp,1,1,nil):GetFirst() - end - g:AddCard(tc) - if i==1 then - g1:Clear() - if tc:IsFusionCode(89943723) then - local sg=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,tc,17955766) - g1:Merge(sg) - end - if tc:IsFusionCode(17955766) then - local sg=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) - g1:Merge(sg) - end - end - end - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c55171412.retcon1(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsHasEffect(42015635) -end -function c55171412.retcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsHasEffect(42015635) -end -function c55171412.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtra() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c55171412.retop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) -end -function c55171412.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c55171412.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,1-tp,LOCATION_HAND) -end -function c55171412.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) - local sg=g:RandomSelect(tp,1) - Duel.Destroy(sg,REASON_EFFECT) -end +--E・HERO アクア・ネオス +function c55171412.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,89943723,17955766,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c55171412.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c55171412.spcon) + e2:SetOperation(c55171412.spop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(55171412,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c55171412.retcon1) + e3:SetTarget(c55171412.rettg) + e3:SetOperation(c55171412.retop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(0) + e4:SetCondition(c55171412.retcon2) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(55171412,1)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCost(c55171412.descost) + e5:SetTarget(c55171412.destg) + e5:SetOperation(c55171412.desop) + c:RegisterEffect(e5) +end +c55171412.material_setcode=0x8 +function c55171412.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c55171412.spfilter(c,code) + return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) +end +function c55171412.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local g1=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,nil,17955766) + if g1:GetCount()==0 or g2:GetCount()==0 then return false end + if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + if ft==-1 then return f1>0 and f2>0 + else return f1>0 or f2>0 end +end +function c55171412.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,nil,17955766) + g1:Merge(g2) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + ft=ft+1 + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + if i==1 then + g1:Clear() + if tc:IsFusionCode(89943723) then + local sg=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,tc,17955766) + g1:Merge(sg) + end + if tc:IsFusionCode(17955766) then + local sg=Duel.GetMatchingGroup(c55171412.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) + g1:Merge(sg) + end + end + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c55171412.retcon1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(42015635) +end +function c55171412.retcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasEffect(42015635) +end +function c55171412.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtra() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c55171412.retop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end +function c55171412.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c55171412.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,1-tp,LOCATION_HAND) +end +function c55171412.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + local sg=g:RandomSelect(tp,1) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c55204071.lua b/script/c55204071.lua index 9f1aff03..ef2aadc5 100644 --- a/script/c55204071.lua +++ b/script/c55204071.lua @@ -56,8 +56,8 @@ end function c55204071.spop2(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,c55204071.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c55204071.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c55226821.lua b/script/c55226821.lua index 728fb7a2..c17c78de 100644 --- a/script/c55226821.lua +++ b/script/c55226821.lua @@ -1,27 +1,12 @@ --稲妻の剣 function c55226821.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(c55226821.target) - e1:SetOperation(c55226821.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(800) 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(c55226821.eqlimit) - c:RegisterEffect(e3) --atk down local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD) @@ -35,22 +20,3 @@ end function c55226821.adtg(e,c) return c:IsAttribute(ATTRIBUTE_WATER) end -function c55226821.eqlimit(e,c) - return c:IsRace(RACE_WARRIOR) -end -function c55226821.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c55226821.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c55226821.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c55226821.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c55226821.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c55226821.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 diff --git a/script/c55256016.lua b/script/c55256016.lua index 5f3fd8e9..5ff9b92e 100644 --- a/script/c55256016.lua +++ b/script/c55256016.lua @@ -1,54 +1,53 @@ ---アヌビスの裁き -function c55256016.initial_effect(c) - --Negate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c55256016.condition) - e1:SetCost(c55256016.cost) - e1:SetTarget(c55256016.target) - e1:SetOperation(c55256016.operation) - c:RegisterEffect(e1) -end -function c55256016.cfilter(c) - return c:IsOnField() and c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c55256016.condition(e,tp,eg,ep,ev,re,r,rp) - if tp==ep or not Duel.IsChainNegatable(ev) then return false end - if not (re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE)) then return false end - local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) - return ex and tg~=nil and tc+tg:FilterCount(c55256016.cfilter,nil)-tg:GetCount()>0 -end -function c55256016.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end - 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 c55256016.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c55256016.desfilter(c) - return c:IsFaceup() -end -function c55256016.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end - local dg=Duel.GetMatchingGroup(c55256016.desfilter,tp,0,LOCATION_MZONE,nil) - if dg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(55256016,0)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local des=dg:Select(tp,1,1,nil) - Duel.HintSelection(des) - local atk=des:GetFirst():GetAttack() - Duel.BreakEffect() - if Duel.Destroy(des,REASON_EFFECT)>0 then - Duel.Damage(1-tp,atk,REASON_EFFECT) - end - end -end +--アヌビスの裁き +function c55256016.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c55256016.condition) + e1:SetCost(c55256016.cost) + e1:SetTarget(c55256016.target) + e1:SetOperation(c55256016.operation) + c:RegisterEffect(e1) +end +function c55256016.cfilter(c) + return c:IsOnField() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c55256016.condition(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not (re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE)) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(c55256016.cfilter,nil)-tg:GetCount()>0 +end +function c55256016.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end + 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 c55256016.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c55256016.desfilter(c) + return c:IsFaceup() +end +function c55256016.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + local dg=Duel.GetMatchingGroup(c55256016.desfilter,tp,0,LOCATION_MZONE,nil) + if dg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(55256016,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local des=dg:Select(tp,1,1,nil) + Duel.HintSelection(des) + local atk=des:GetFirst():GetAttack() + Duel.BreakEffect() + if Duel.Destroy(des,REASON_EFFECT)>0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c55321970.lua b/script/c55321970.lua index 93008a3c..038cce31 100644 --- a/script/c55321970.lua +++ b/script/c55321970.lua @@ -1,14 +1,6 @@ --突風の扇 function c55321970.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(c55321970.target) - e1:SetOperation(c55321970.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c55321970.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(-200) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c55321970.eqlimit) - c:RegisterEffect(e4) -end -function c55321970.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_WIND) -end -function c55321970.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) -end -function c55321970.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c55321970.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c55321970.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c55321970.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c55321970.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 diff --git a/script/c55375684.lua b/script/c55375684.lua index 4a014642..41dbf953 100644 --- a/script/c55375684.lua +++ b/script/c55375684.lua @@ -33,8 +33,8 @@ function c55375684.operation(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c55375684.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c55375684.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then local grav=g:GetFirst():IsLocation(LOCATION_GRAVE) Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) if grav then Duel.Destroy(e:GetHandler(),REASON_EFFECT) end diff --git a/script/c55401221.lua b/script/c55401221.lua index a8b215b7..c04c2e9b 100644 --- a/script/c55401221.lua +++ b/script/c55401221.lua @@ -1,14 +1,14 @@ ---電池メン-単一型 -function c55401221.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c55401221.atlimit) - c:RegisterEffect(e1) -end -function c55401221.atlimit(e,c) - return c:IsFaceup() and c:IsRace(RACE_THUNDER) and c:GetCode()~=55401221 -end +--電池メン-単一型 +function c55401221.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c55401221.atlimit) + c:RegisterEffect(e1) +end +function c55401221.atlimit(e,c) + return c:IsFaceup() and c:IsRace(RACE_THUNDER) and c:GetCode()~=55401221 +end diff --git a/script/c55416843.lua b/script/c55416843.lua index 6e2a2c99..33c9cb60 100644 --- a/script/c55416843.lua +++ b/script/c55416843.lua @@ -23,8 +23,8 @@ function c55416843.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if ft>2 then ft=2 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c55416843.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,ft,nil,e,tp) - if g:GetCount()>0 and not g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c55416843.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,ft,nil,e,tp) + if g:GetCount()>0 then local tc=g:GetFirst() while tc do Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) diff --git a/script/c55428242.lua b/script/c55428242.lua index 81294ff1..864c45f5 100644 --- a/script/c55428242.lua +++ b/script/c55428242.lua @@ -51,6 +51,5 @@ end function c55428242.chainfilter(e,ct) local p=e:GetHandlerPlayer() local te,tp=Duel.GetChainInfo(ct,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) - local tc=te:GetHandler() - return p==tp and tc:GetType()==TYPE_TRAP + return p==tp and te:GetActiveType()==TYPE_TRAP end diff --git a/script/c55470553.lua b/script/c55470553.lua index 71a99643..f69ccd58 100644 --- a/script/c55470553.lua +++ b/script/c55470553.lua @@ -7,6 +7,7 @@ function c55470553.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(55470553,0)) e1:SetCategory(CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_ATTACK_ANNOUNCE) e1:SetRange(LOCATION_MZONE) diff --git a/script/c55553602.lua b/script/c55553602.lua index 8df93851..f1492d4f 100644 --- a/script/c55553602.lua +++ b/script/c55553602.lua @@ -52,8 +52,8 @@ function c55553602.operation(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c55553602.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c55553602.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c5556499.lua b/script/c5556499.lua index 1e721a12..cf06c733 100644 --- a/script/c5556499.lua +++ b/script/c5556499.lua @@ -33,17 +33,18 @@ function c5556499.spfilter(c) end function c5556499.spcon(e,c) if c==nil then return true end + if c:IsHasEffect(EFFECT_NECRO_VALLEY) then return false end local tp=c:GetControler() if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end local g=Duel.GetMatchingGroup(c5556499.spfilter,tp,LOCATION_HAND,0,nil) - if not c:IsAbleToGraveAsCost() then + if not c:IsAbleToGraveAsCost() or Duel.IsPlayerAffectedByEffect(tp,EFFECT_NECRO_VALLEY) then g:RemoveCard(c) end return g:CheckWithSumGreater(Card.GetLevel,8) end function c5556499.spop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.GetMatchingGroup(c5556499.spfilter,c:GetControler(),LOCATION_HAND,0,nil) - if not c:IsAbleToGraveAsCost() then + if not c:IsAbleToGraveAsCost() or Duel.IsPlayerAffectedByEffect(tp,EFFECT_NECRO_VALLEY) then g:RemoveCard(c) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) diff --git a/script/c55569674.lua b/script/c55569674.lua index 4fe569ee..ebab48f8 100644 --- a/script/c55569674.lua +++ b/script/c55569674.lua @@ -1,27 +1,12 @@ --女神の聖剣-エアトス function c55569674.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(c55569674.target) - e1:SetOperation(c55569674.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(500) 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) --atk local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(55569674,0)) @@ -34,19 +19,6 @@ function c55569674.initial_effect(c) e4:SetOperation(c55569674.atkop) c:RegisterEffect(e4) end -function c55569674.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 c55569674.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 c55569674.atkcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end diff --git a/script/c55586621.lua b/script/c55586621.lua index c975c675..67a28763 100644 --- a/script/c55586621.lua +++ b/script/c55586621.lua @@ -1,75 +1,75 @@ ---フォーチュンレディ・ダルキー -function c55586621.initial_effect(c) - --atk,def - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(c55586621.value) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e2) - --level up - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(55586621,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCondition(c55586621.lvcon) - e3:SetOperation(c55586621.lvop) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(55586621,1)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCode(EVENT_BATTLE_DESTROYED) - e4:SetCondition(c55586621.spcon) - e4:SetTarget(c55586621.sptg) - e4:SetOperation(c55586621.spop) - c:RegisterEffect(e4) -end -function c55586621.value(e,c) - return c:GetLevel()*400 -end -function c55586621.lvcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) -end -function c55586621.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c55586621.spcon(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local rc=tc:GetReasonCard() - return eg:GetCount()==1 and rc:IsControler(tp) and rc:IsSetCard(0x31) - and tc:IsType(TYPE_MONSTER) and tc:IsReason(REASON_BATTLE) and tc:IsLocation(LOCATION_GRAVE) -end -function c55586621.spfilter(c,e,tp) - return c:IsSetCard(0x31) and c:IsCanBeSpecialSummoned(e,0x8,tp,false,false) -end -function c55586621.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c55586621.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c55586621.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c55586621.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c55586621.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0x8,tp,tp,false,false,POS_FACEUP) - end -end +--フォーチュンレディ・ダルキー +function c55586621.initial_effect(c) + --atk,def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c55586621.value) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) + --level up + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(55586621,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c55586621.lvcon) + e3:SetOperation(c55586621.lvop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(55586621,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_BATTLE_DESTROYED) + e4:SetCondition(c55586621.spcon) + e4:SetTarget(c55586621.sptg) + e4:SetOperation(c55586621.spop) + c:RegisterEffect(e4) +end +function c55586621.value(e,c) + return c:GetLevel()*400 +end +function c55586621.lvcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) +end +function c55586621.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c55586621.spcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local rc=tc:GetReasonCard() + return eg:GetCount()==1 and rc:IsControler(tp) and rc:IsSetCard(0x31) + and tc:IsType(TYPE_MONSTER) and tc:IsReason(REASON_BATTLE) and tc:IsLocation(LOCATION_GRAVE) +end +function c55586621.spfilter(c,e,tp) + return c:IsSetCard(0x31) and c:IsCanBeSpecialSummoned(e,0x8,tp,false,false) +end +function c55586621.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c55586621.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c55586621.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c55586621.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c55586621.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0x8,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c55599882.lua b/script/c55599882.lua index 78abfa25..62929c20 100644 --- a/script/c55599882.lua +++ b/script/c55599882.lua @@ -1,53 +1,53 @@ ---武神決戦 -function c55599882.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c55599882.target) - e1:SetOperation(c55599882.activate) - c:RegisterEffect(e1) -end -function c55599882.filter(c) - return c:IsFaceup() and c:IsSetCard(0x88) -end -function c55599882.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c55599882.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c55599882.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c55599882.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c55599882.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(55599882,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetTarget(c55599882.rmtg) - e1:SetOperation(c55599882.rmop) - e1:SetReset(RESET_EVENT+0x1620000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c55599882.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - if chk==0 then return bc and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) and bc:IsType(TYPE_MONSTER) - and c:GetBaseAttack()<=bc:GetAttack() and bc:IsAbleToRemove() end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,bc,1,0,0) -end -function c55599882.rmfilter(c,code) - return c:IsCode(code) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() -end -function c55599882.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetBattleTarget() - if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)==0 then return end - local g=Duel.GetMatchingGroup(c55599882.rmfilter,tp,0,LOCATION_HAND+LOCATION_DECK+LOCATION_EXTRA+LOCATION_GRAVE,nil,tc:GetCode()) - if g:GetCount()>0 then - Duel.BreakEffect() - Duel.Remove(g,POS_FACEUP,REASON_EFFECT) - end -end +--武神決戦 +function c55599882.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c55599882.target) + e1:SetOperation(c55599882.activate) + c:RegisterEffect(e1) +end +function c55599882.filter(c) + return c:IsFaceup() and c:IsSetCard(0x88) +end +function c55599882.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c55599882.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c55599882.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c55599882.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c55599882.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(55599882,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetTarget(c55599882.rmtg) + e1:SetOperation(c55599882.rmop) + e1:SetReset(RESET_EVENT+0x1620000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c55599882.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if chk==0 then return bc and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) and bc:IsType(TYPE_MONSTER) + and c:GetBaseAttack()<=bc:GetAttack() and bc:IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,bc,1,0,0) +end +function c55599882.rmfilter(c,code) + return c:IsCode(code) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c55599882.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)==0 then return end + local g=Duel.GetMatchingGroup(c55599882.rmfilter,tp,0,LOCATION_HAND+LOCATION_DECK+LOCATION_EXTRA+LOCATION_GRAVE,nil,tc:GetCode()) + if g:GetCount()>0 then + Duel.BreakEffect() + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c55608151.lua b/script/c55608151.lua index d1e9bbb1..dcb68c52 100644 --- a/script/c55608151.lua +++ b/script/c55608151.lua @@ -23,7 +23,8 @@ function c55608151.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) end function c55608151.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) - local g=Duel.GetMatchingGroup(c55608151.filter,tp,0,LOCATION_ONFIELD,nil) - Duel.Destroy(g,REASON_EFFECT) + if Duel.NegateEffect(ev) then + local g=Duel.GetMatchingGroup(c55608151.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.Destroy(g,REASON_EFFECT) + end end diff --git a/script/c55610595.lua b/script/c55610595.lua index 2a7bbc5b..6df7ec93 100644 --- a/script/c55610595.lua +++ b/script/c55610595.lua @@ -10,6 +10,7 @@ function c55610595.initial_effect(c) --to grave local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c55610595.regop) c:RegisterEffect(e2) diff --git a/script/c55615891.lua b/script/c55615891.lua index c62b6c10..6761c8a3 100644 --- a/script/c55615891.lua +++ b/script/c55615891.lua @@ -1,44 +1,44 @@ ---E・HERO ワイルド・ウィングマン -function c55615891.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,86188410,21844576,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(55615891,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCost(c55615891.descost) - e2:SetTarget(c55615891.destg) - e2:SetOperation(c55615891.desop) - c:RegisterEffect(e2) -end -function c55615891.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c55615891.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c55615891.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c55615891.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c55615891.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c55615891.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c55615891.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--E・HERO ワイルド・ウィングマン +function c55615891.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,86188410,21844576,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(55615891,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCost(c55615891.descost) + e2:SetTarget(c55615891.destg) + e2:SetOperation(c55615891.desop) + c:RegisterEffect(e2) +end +function c55615891.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c55615891.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c55615891.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c55615891.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c55615891.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c55615891.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c55615891.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c5562461.lua b/script/c5562461.lua index 84442861..e25f57d5 100644 --- a/script/c5562461.lua +++ b/script/c5562461.lua @@ -27,8 +27,7 @@ function c5562461.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c5562461.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c55690251.lua b/script/c55690251.lua index 8e35ef71..7bdba756 100644 --- a/script/c55690251.lua +++ b/script/c55690251.lua @@ -1,73 +1,73 @@ ---堕天使ディザイア -function c55690251.initial_effect(c) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) - c:RegisterEffect(e1) - --normal summon with 1 tribute - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(55690251,0)) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SUMMON_PROC) - e2:SetCondition(c55690251.otcon) - e2:SetOperation(c55690251.otop) - e2:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_SET_PROC) - c:RegisterEffect(e3) - --send to grave - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(55690251,1)) - e4:SetCategory(CATEGORY_TOGRAVE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetCountLimit(1) - e4:SetRange(LOCATION_MZONE) - e4:SetTarget(c55690251.target) - e4:SetOperation(c55690251.operation) - c:RegisterEffect(e4) -end -function c55690251.otfilter(c,tp) - return c:IsRace(RACE_FAIRY) and (c:IsControler(tp) or c:IsFaceup()) -end -function c55690251.otcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local mg=Duel.GetMatchingGroup(c55690251.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 -end -function c55690251.otop(e,tp,eg,ep,ev,re,r,rp,c) - local mg=Duel.GetMatchingGroup(c55690251.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - local sg=Duel.SelectTribute(tp,c,1,1,mg) - c:SetMaterial(sg) - Duel.Release(sg, REASON_SUMMON+REASON_MATERIAL) -end -function c55690251.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local c=e:GetHandler() - if chkc then return chkc:GetControler()~=tp and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToGrave() end - if chk==0 then return c:GetAttack()>=1000 and Duel.IsExistingTarget(Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) -end -function c55690251.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and c:GetAttack()>=1000 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-1000) - c:RegisterEffect(e1) - if tc and tc:IsRelateToEffect(e) and not c:IsHasEffect(EFFECT_REVERSE_UPDATE) then - Duel.SendtoGrave(tc,REASON_EFFECT) - end - end -end +--堕天使ディザイア +function c55690251.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --normal summon with 1 tribute + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(55690251,0)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c55690251.otcon) + e2:SetOperation(c55690251.otop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_SET_PROC) + c:RegisterEffect(e3) + --send to grave + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(55690251,1)) + e4:SetCategory(CATEGORY_TOGRAVE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetCountLimit(1) + e4:SetRange(LOCATION_MZONE) + e4:SetTarget(c55690251.target) + e4:SetOperation(c55690251.operation) + c:RegisterEffect(e4) +end +function c55690251.otfilter(c,tp) + return c:IsRace(RACE_FAIRY) and (c:IsControler(tp) or c:IsFaceup()) +end +function c55690251.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c55690251.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) +end +function c55690251.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c55690251.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local sg=Duel.SelectTribute(tp,c,1,1,mg) + c:SetMaterial(sg) + Duel.Release(sg, REASON_SUMMON+REASON_MATERIAL) +end +function c55690251.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:GetControler()~=tp and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToGrave() end + if chk==0 then return c:GetAttack()>=1000 and Duel.IsExistingTarget(Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c55690251.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:GetAttack()>=1000 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + c:RegisterEffect(e1) + if tc and tc:IsRelateToEffect(e) and not c:IsHasEffect(EFFECT_REVERSE_UPDATE) then + Duel.SendtoGrave(tc,REASON_EFFECT) + end + end +end diff --git a/script/c55696885.lua b/script/c55696885.lua index e44a9fed..ff32998c 100644 --- a/script/c55696885.lua +++ b/script/c55696885.lua @@ -1,42 +1,42 @@ ---疫病狼 -function c55696885.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(55696885,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetOperation(c55696885.atkop) - c:RegisterEffect(e1) -end -function c55696885.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(c:GetBaseAttack()*2) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(55696885,1)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c55696885.destg) - e2:SetOperation(c55696885.desop) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e2) -end -function c55696885.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 c55696885.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.Destroy(c,REASON_EFFECT) - end -end +--疫病狼 +function c55696885.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(55696885,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetOperation(c55696885.atkop) + c:RegisterEffect(e1) +end +function c55696885.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(55696885,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c55696885.destg) + e2:SetOperation(c55696885.desop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) +end +function c55696885.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 c55696885.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c55705473.lua b/script/c55705473.lua new file mode 100644 index 00000000..c8004873 --- /dev/null +++ b/script/c55705473.lua @@ -0,0 +1,71 @@ +--バオバブーン +--Baobaboon +--Scripted by Eerie Code +function c55705473.initial_effect(c) + --draw and replace + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(55705473,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c55705473.drtg) + e1:SetOperation(c55705473.drop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(55705473,3)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c55705473.spcon) + e3:SetTarget(c55705473.sptg) + e3:SetOperation(c55705473.spop) + c:RegisterEffect(e3) +end +function c55705473.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c55705473.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Draw(p,d,REASON_EFFECT)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToDeck,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + Duel.BreakEffect() + if Duel.SelectOption(tp,aux.Stringid(55705473,1),aux.Stringid(55705473,2))==0 then + Duel.SendtoDeck(g,nil,0,REASON_EFFECT) + else + Duel.SendtoDeck(g,nil,1,REASON_EFFECT) + end + end +end +function c55705473.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c55705473.spfilter(c,e,tp) + return c:IsCode(55705473) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c55705473.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c55705473.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c55705473.spop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end + ct=math.min(ct,Duel.GetLocationCount(tp,LOCATION_MZONE)) + if ct<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c55705473.spfilter,tp,LOCATION_DECK,0,1,ct,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c55727845.lua b/script/c55727845.lua index 122060ab..5cda3087 100644 --- a/script/c55727845.lua +++ b/script/c55727845.lua @@ -6,6 +6,7 @@ function c55727845.initial_effect(c) --atk u/d local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(55727845,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_ATTACK_ANNOUNCE) e1:SetRange(LOCATION_MZONE) diff --git a/script/c55735315.lua b/script/c55735315.lua index d119b6c6..c8ff358e 100644 --- a/script/c55735315.lua +++ b/script/c55735315.lua @@ -1,54 +1,54 @@ ---魂食神龍ドレイン・ドラゴン -function c55735315.initial_effect(c) - c:EnableUnsummonable() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c55735315.splimit) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(55735315,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c55735315.atkcon) - e2:SetOperation(c55735315.atkop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - c:RegisterEffect(e3) -end -function c55735315.splimit(e,se,sp,st) - local sc=se:GetHandler() - return sc:IsType(TYPE_XYZ) and sc:IsRace(RACE_DRAGON) -end -function c55735315.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetLP(tp)=e:GetLabel() -end -function c55742055.filter1(c) - return c:IsSetCard(0x107a) and c:IsAbleToGrave() -end -function c55742055.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c55742055.filter1,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c55742055.operation1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c55742055.filter1,tp,LOCATION_DECK,0,1,1,nil) - Duel.SendtoGrave(g,REASON_EFFECT) -end -function c55742055.filter2(c,e,tp) - return c:IsSetCard(0x107a) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c55742055.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c55742055.filter2,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c55742055.eqfilter(c,tc,tp) - return c:IsType(TYPE_EQUIP) and c:IsSetCard(0x207a) and c:CheckEquipTarget(tc) and c:CheckUniqueOnField(tp) -end -function c55742055.operation2(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c55742055.filter2,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end - local tg=Duel.GetMatchingGroup(c55742055.eqfilter,tp,LOCATION_HAND,0,nil,tc,tp) - if tg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(55742055,4)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local sg=tg:Select(tp,1,1,nil) - Duel.Equip(tp,sg:GetFirst(),tc,true) - end -end -function c55742055.thfilter(c) - return c:IsSetCard(0x107a) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c55742055.target3(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c55742055.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c55742055.thfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c55742055.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c55742055.operation3(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end -function c55742055.condition4(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetTurnPlayer()~=tp then return false end - local g=Duel.GetMatchingGroup(c55742055.confilter,tp,LOCATION_GRAVE+LOCATION_ONFIELD,0,nil) - return g:GetClassCount(Card.GetCode)==12 -end -function c55742055.target4(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c55742055.operation4(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Draw(tp,1,REASON_EFFECT) -end +--円卓の聖騎士 +function c55742055.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(55742055,0)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetLabel(3) + e2:SetCountLimit(1) + e2:SetCondition(c55742055.effcon) + e2:SetTarget(c55742055.target1) + e2:SetOperation(c55742055.operation1) + c:RegisterEffect(e2) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(55742055,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetLabel(6) + e3:SetCountLimit(1) + e3:SetCondition(c55742055.effcon) + e3:SetTarget(c55742055.target2) + e3:SetOperation(c55742055.operation2) + c:RegisterEffect(e3) + --tohand + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(55742055,2)) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetLabel(9) + e4:SetCountLimit(1) + e4:SetCondition(c55742055.effcon) + e4:SetTarget(c55742055.target3) + e4:SetOperation(c55742055.operation3) + c:RegisterEffect(e4) + -- draw + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(55742055,3)) + e5:SetCategory(CATEGORY_DRAW) + e5:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_FZONE) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetCountLimit(1) + e5:SetCondition(c55742055.condition4) + e5:SetTarget(c55742055.target4) + e5:SetOperation(c55742055.operation4) + c:RegisterEffect(e5) +end +function c55742055.confilter(c) + return c:IsFaceup() and c:IsSetCard(0x107a) +end +function c55742055.effcon(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return false end + local g=Duel.GetMatchingGroup(c55742055.confilter,tp,LOCATION_GRAVE+LOCATION_ONFIELD,0,nil) + return g:GetClassCount(Card.GetCode)>=e:GetLabel() +end +function c55742055.filter1(c) + return c:IsSetCard(0x107a) and c:IsAbleToGrave() +end +function c55742055.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c55742055.filter1,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c55742055.operation1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c55742055.filter1,tp,LOCATION_DECK,0,1,1,nil) + Duel.SendtoGrave(g,REASON_EFFECT) +end +function c55742055.filter2(c,e,tp) + return c:IsSetCard(0x107a) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c55742055.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c55742055.filter2,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c55742055.eqfilter(c,tc,tp) + return c:IsType(TYPE_EQUIP) and c:IsSetCard(0x207a) and c:CheckEquipTarget(tc) and c:CheckUniqueOnField(tp) +end +function c55742055.operation2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c55742055.filter2,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + local tg=Duel.GetMatchingGroup(c55742055.eqfilter,tp,LOCATION_HAND,0,nil,tc,tp) + if tg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(55742055,4)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local sg=tg:Select(tp,1,1,nil) + Duel.Equip(tp,sg:GetFirst(),tc,true) + end +end +function c55742055.thfilter(c) + return c:IsSetCard(0x107a) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c55742055.target3(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c55742055.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c55742055.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c55742055.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c55742055.operation3(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c55742055.condition4(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return false end + local g=Duel.GetMatchingGroup(c55742055.confilter,tp,LOCATION_GRAVE+LOCATION_ONFIELD,0,nil) + return g:GetClassCount(Card.GetCode)==12 +end +function c55742055.target4(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c55742055.operation4(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c55761792.lua b/script/c55761792.lua index 1dedf66c..6888a2e1 100644 --- a/script/c55761792.lua +++ b/script/c55761792.lua @@ -1,4 +1,4 @@ ---カオスの儀式 -function c55761792.initial_effect(c) - aux.AddRitualProcGreaterCode(c,5405694) -end +--カオスの儀式 +function c55761792.initial_effect(c) + aux.AddRitualProcGreaterCode(c,5405694) +end diff --git a/script/c55824220.lua b/script/c55824220.lua index 13fda91e..99303ccb 100644 --- a/script/c55824220.lua +++ b/script/c55824220.lua @@ -1,69 +1,69 @@ ---輝石融合 -function c55824220.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c55824220.target) - e1:SetOperation(c55824220.activate) - c:RegisterEffect(e1) -end -function c55824220.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c55824220.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c55824220.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c55824220.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c55824220.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c55824220.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c55824220.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c55824220.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c55824220.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--輝石融合 +function c55824220.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c55824220.target) + e1:SetOperation(c55824220.activate) + c:RegisterEffect(e1) +end +function c55824220.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c55824220.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c55824220.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c55824220.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c55824220.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c55824220.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c55824220.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c55824220.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c55824220.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c55863245.lua b/script/c55863245.lua index 1b52ced5..be85c88a 100644 --- a/script/c55863245.lua +++ b/script/c55863245.lua @@ -1,79 +1,79 @@ ---たつのこ -function c55863245.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --synchro custom - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCondition(c55863245.syncon) - e1:SetTarget(c55863245.syntg) - e1:SetValue(1) - e1:SetOperation(c55863245.synop) - c:RegisterEffect(e1) - --immune - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetValue(c55863245.efilter) - c:RegisterEffect(e2) - --hand synchro for double tuner - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCondition(c55863245.syncon) - e3:SetCode(EFFECT_HAND_SYNCHRO) - c:RegisterEffect(e3) -end -function c55863245.synfilter1(c,syncard,tuner,f) - return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) -end -function c55863245.synfilter2(c,syncard,tuner,f,g,lv,minc,maxc) - if c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) then - lv=lv-c:GetLevel() - if lv<0 then return false end - if lv==0 then return minc==1 end - return g:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc-1,maxc-1,syncard) - else return false end -end -function c55863245.syncon(e) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c55863245.syntg(e,syncard,f,minc,maxc) - local c=e:GetHandler() - local tp=syncard:GetControler() - local lv=syncard:GetLevel()-c:GetLevel() - if lv<=0 then return false end - local g1=Duel.GetMatchingGroup(c55863245.synfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) - return g1:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) - or Duel.IsExistingMatchingCard(c55863245.synfilter2,tp,LOCATION_HAND,0,1,nil,syncard,c,f,g1,lv,minc,maxc) -end -function c55863245.synop(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc,maxc) - local c=e:GetHandler() - local lv=syncard:GetLevel()-c:GetLevel() - local g1=Duel.GetMatchingGroup(c55863245.synfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) - local g2=Duel.GetMatchingGroup(c55863245.synfilter2,tp,LOCATION_HAND,0,nil,syncard,c,f,g1,lv,minc,maxc) - if not g1:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) - or (g2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(55863245,0))) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local sg=g2:Select(tp,1,1,nil) - local tc=sg:GetFirst() - if lv>tc:GetLevel() then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local tg=g1:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-tc:GetLevel(),minc-1,maxc-1,syncard) - sg:Merge(tg) - end - Duel.SetSynchroMaterial(sg) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local sg=g1:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,minc,maxc,syncard) - Duel.SetSynchroMaterial(sg) - end -end -function c55863245.efilter(e,te) - return te:IsActiveType(TYPE_MONSTER) and te:GetOwner()~=e:GetOwner() -end +--たつのこ +function c55863245.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --synchro custom + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c55863245.syncon) + e1:SetTarget(c55863245.syntg) + e1:SetValue(1) + e1:SetOperation(c55863245.synop) + c:RegisterEffect(e1) + --immune + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetValue(c55863245.efilter) + c:RegisterEffect(e2) + --hand synchro for double tuner + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCondition(c55863245.syncon) + e3:SetCode(EFFECT_HAND_SYNCHRO) + c:RegisterEffect(e3) +end +function c55863245.synfilter1(c,syncard,tuner,f) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) +end +function c55863245.synfilter2(c,syncard,tuner,f,g,lv,minc,maxc) + if c:IsCanBeSynchroMaterial(syncard,tuner) and (f==nil or f(c)) then + lv=lv-c:GetLevel() + if lv<0 then return false end + if lv==0 then return minc==1 end + return g:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc-1,maxc-1,syncard) + else return false end +end +function c55863245.syncon(e) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c55863245.syntg(e,syncard,f,minc,maxc) + local c=e:GetHandler() + local tp=syncard:GetControler() + local lv=syncard:GetLevel()-c:GetLevel() + if lv<=0 then return false end + local g1=Duel.GetMatchingGroup(c55863245.synfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + return g1:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) + or Duel.IsExistingMatchingCard(c55863245.synfilter2,tp,LOCATION_HAND,0,1,nil,syncard,c,f,g1,lv,minc,maxc) +end +function c55863245.synop(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + local g1=Duel.GetMatchingGroup(c55863245.synfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local g2=Duel.GetMatchingGroup(c55863245.synfilter2,tp,LOCATION_HAND,0,nil,syncard,c,f,g1,lv,minc,maxc) + if not g1:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) + or (g2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(55863245,0))) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local sg=g2:Select(tp,1,1,nil) + local tc=sg:GetFirst() + if lv>tc:GetLevel() then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tg=g1:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv-tc:GetLevel(),minc-1,maxc-1,syncard) + sg:Merge(tg) + end + Duel.SetSynchroMaterial(sg) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local sg=g1:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,minc,maxc,syncard) + Duel.SetSynchroMaterial(sg) + end +end +function c55863245.efilter(e,te) + return te:IsActiveType(TYPE_MONSTER) and te:GetOwner()~=e:GetOwner() +end diff --git a/script/c55875323.lua b/script/c55875323.lua index cc07f282..7f4d118e 100644 --- a/script/c55875323.lua +++ b/script/c55875323.lua @@ -3,7 +3,7 @@ function c55875323.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(55875323,0)) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCode(EVENT_BATTLED) e1:SetCondition(c55875323.condition) e1:SetOperation(c55875323.operation) c:RegisterEffect(e1) diff --git a/script/c55885348.lua b/script/c55885348.lua index c201dbd0..8b8f194e 100644 --- a/script/c55885348.lua +++ b/script/c55885348.lua @@ -1,4 +1,4 @@ ---Kozmo Dark Destroyer +--Kozmo-ダークシミター function c55885348.initial_effect(c) --destroy local e1=Effect.CreateEffect(c) @@ -36,9 +36,9 @@ function c55885348.initial_effect(c) end function c55885348.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) end - if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) end function c55885348.desop(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c5592689.lua b/script/c5592689.lua index 8ecbbfd7..21992ab3 100644 --- a/script/c5592689.lua +++ b/script/c5592689.lua @@ -1,58 +1,58 @@ ---サクリファイス・ロータス -function c5592689.initial_effect(c) - --Special Summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(5592689,0)) - e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1) - e1:SetCondition(c5592689.sscon) - e1:SetTarget(c5592689.sstg) - e1:SetOperation(c5592689.ssop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(5592689,1)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCondition(c5592689.dmcon) - e2:SetTarget(c5592689.dmtg) - e2:SetOperation(c5592689.dmop) - c:RegisterEffect(e2) -end -function c5592689.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c5592689.sscon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and not Duel.IsExistingMatchingCard(c5592689.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c5592689.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c5592689.ssop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) and not Duel.IsExistingMatchingCard(c5592689.filter,tp,LOCATION_ONFIELD,0,1,nil) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_ATTACK) - end -end -function c5592689.dmcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c5592689.dmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) -end -function c5592689.dmop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--サクリファイス・ロータス +function c5592689.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5592689,0)) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCondition(c5592689.sscon) + e1:SetTarget(c5592689.sstg) + e1:SetOperation(c5592689.ssop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5592689,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCondition(c5592689.dmcon) + e2:SetTarget(c5592689.dmtg) + e2:SetOperation(c5592689.dmop) + c:RegisterEffect(e2) +end +function c5592689.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c5592689.sscon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and not Duel.IsExistingMatchingCard(c5592689.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c5592689.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c5592689.ssop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) and not Duel.IsExistingMatchingCard(c5592689.filter,tp,LOCATION_ONFIELD,0,1,nil) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end +function c5592689.dmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c5592689.dmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c5592689.dmop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c55935416.lua b/script/c55935416.lua index e49a3414..b1fb42ee 100644 --- a/script/c55935416.lua +++ b/script/c55935416.lua @@ -7,6 +7,7 @@ function c55935416.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(55935416,0)) e1:SetCategory(CATEGORY_DRAW+CATEGORY_TODECK) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c55948544.lua b/script/c55948544.lua index d6ff04ce..bede87ed 100644 --- a/script/c55948544.lua +++ b/script/c55948544.lua @@ -1,102 +1,102 @@ ---ファラオの審判 -function c55948544.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(55948544,0)) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c55948544.condition1) - e1:SetCost(c55948544.cost) - e1:SetOperation(c55948544.operation1) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(55948544,1)) - e2:SetType(EFFECT_TYPE_ACTIVATE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCondition(c55948544.condition2) - e2:SetCost(c55948544.cost) - e2:SetOperation(c55948544.operation2) - c:RegisterEffect(e2) -end -function c55948544.condition1(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,81332143) -end -function c55948544.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) -end -function c55948544.operation1(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,81332143) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(0,1) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_SUMMON) - Duel.RegisterEffect(e2,tp) - local e3=e1:Clone() - e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - Duel.RegisterEffect(e3,tp) - local e4=e1:Clone() - e4:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e4,tp) - local e5=e1:Clone() - e5:SetCode(EFFECT_CANNOT_TURN_SET) - Duel.RegisterEffect(e5,tp) - local e6=Effect.CreateEffect(e:GetHandler()) - e6:SetType(EFFECT_TYPE_FIELD) - e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e6:SetCode(EFFECT_CANNOT_ACTIVATE) - e6:SetTargetRange(0,1) - e6:SetValue(c55948544.aclimit1) - e6:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e6,tp) -end -function c55948544.aclimit1(e,re,tp) - return re:IsActiveType(TYPE_MONSTER) -end -function c55948544.condition2(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,14731897) -end -function c55948544.operation2(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,14731897) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SSET) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_CANNOT_ACTIVATE) - e2:SetTargetRange(0,1) - e2:SetValue(c55948544.aclimit2) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_DISABLE) - e3:SetTargetRange(0,LOCATION_SZONE) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) - local e4=Effect.CreateEffect(e:GetHandler()) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_DISABLE_TRAPMONSTER) - e4:SetTargetRange(0,LOCATION_MZONE) - e4:SetTarget(c55948544.distg) - e4:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e4,tp) -end -function c55948544.aclimit2(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c55948544.distg(e,c) - return c:IsType(TYPE_TRAP) -end +--ファラオの審判 +function c55948544.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(55948544,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c55948544.condition1) + e1:SetCost(c55948544.cost) + e1:SetOperation(c55948544.operation1) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(55948544,1)) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c55948544.condition2) + e2:SetCost(c55948544.cost) + e2:SetOperation(c55948544.operation2) + c:RegisterEffect(e2) +end +function c55948544.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,81332143) +end +function c55948544.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c55948544.operation1(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,81332143) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(0,1) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + Duel.RegisterEffect(e3,tp) + local e4=e1:Clone() + e4:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e4,tp) + local e5=e1:Clone() + e5:SetCode(EFFECT_CANNOT_TURN_SET) + Duel.RegisterEffect(e5,tp) + local e6=Effect.CreateEffect(e:GetHandler()) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetCode(EFFECT_CANNOT_ACTIVATE) + e6:SetTargetRange(0,1) + e6:SetValue(c55948544.aclimit1) + e6:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e6,tp) +end +function c55948544.aclimit1(e,re,tp) + return re:IsActiveType(TYPE_MONSTER) +end +function c55948544.condition2(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,14731897) +end +function c55948544.operation2(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,14731897) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SSET) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetTargetRange(0,1) + e2:SetValue(c55948544.aclimit2) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetTargetRange(0,LOCATION_SZONE) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetTarget(c55948544.distg) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) +end +function c55948544.aclimit2(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c55948544.distg(e,c) + return c:IsType(TYPE_TRAP) +end diff --git a/script/c55985014.lua b/script/c55985014.lua index 8afdb7cb..386a9482 100644 --- a/script/c55985014.lua +++ b/script/c55985014.lua @@ -1,36 +1,36 @@ ---ミラクル・キッズ -function c55985014.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(c55985014.condition) - e1:SetTarget(c55985014.target) - e1:SetOperation(c55985014.activate) - c:RegisterEffect(e1) -end -function c55985014.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c55985014.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,32679370) - and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c55985014.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local val=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_GRAVE,0,nil,32679370)*400 - if val>0 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+PHASE_END) - e1:SetValue(-val) - tc:RegisterEffect(e1) - end -end +--ミラクル・キッズ +function c55985014.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(c55985014.condition) + e1:SetTarget(c55985014.target) + e1:SetOperation(c55985014.activate) + c:RegisterEffect(e1) +end +function c55985014.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c55985014.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,32679370) + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c55985014.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local val=Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_GRAVE,0,nil,32679370)*400 + if val>0 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+PHASE_END) + e1:SetValue(-val) + tc:RegisterEffect(e1) + end +end diff --git a/script/c55997110.lua b/script/c55997110.lua new file mode 100644 index 00000000..07301766 --- /dev/null +++ b/script/c55997110.lua @@ -0,0 +1,29 @@ +--EMハンサムライガー +function c55997110.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(55997110,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCountLimit(1,55997110) + e1:SetCondition(aux.bdogcon) + e1:SetTarget(c55997110.target) + e1:SetOperation(c55997110.operation) + c:RegisterEffect(e1) +end +function c55997110.filter(c) + return c:IsLevelAbove(5) and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c55997110.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c55997110.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c55997110.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c55997110.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c56051086.lua b/script/c56051086.lua index 9bf7b358..15af6e2d 100644 --- a/script/c56051086.lua +++ b/script/c56051086.lua @@ -8,7 +8,7 @@ function c56051086.initial_effect(c) e1:SetDescription(aux.Stringid(56051086,0)) e1:SetCategory(CATEGORY_EQUIP) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c56051086.eqcost) diff --git a/script/c56058888.lua b/script/c56058888.lua index 3f48d946..51a90aef 100644 --- a/script/c56058888.lua +++ b/script/c56058888.lua @@ -21,8 +21,7 @@ function c56058888.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c56058888.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c56074358.lua b/script/c56074358.lua index ccb1899e..59ee9d32 100644 --- a/script/c56074358.lua +++ b/script/c56074358.lua @@ -1,72 +1,72 @@ ---D・フィールド -function c56074358.initial_effect(c) - c:EnableCounterPermit(0x8) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHANGE_POS) - e2:SetRange(LOCATION_FZONE) - e2:SetCondition(c56074358.accon) - e2:SetOperation(c56074358.acop) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x26)) - e3:SetValue(c56074358.atkval) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetDescription(aux.Stringid(56074358,0)) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetCondition(c56074358.spcon) - e4:SetTarget(c56074358.sptg) - e4:SetOperation(c56074358.spop) - c:RegisterEffect(e4) -end -function c56074358.atkval(e,c) - return e:GetHandler():GetCounter(0x8)*300 -end -function c56074358.cfilter(c) - local np=c:GetPosition() - local pp=c:GetPreviousPosition() - return not c:IsStatus(STATUS_CONTINUOUS_POS) and ((np<3 and pp>3) or (pp<3 and np>3)) -end -function c56074358.accon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c56074358.cfilter,1,nil) -end -function c56074358.acop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x8,1) -end -function c56074358.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 -end -function c56074358.filter(c,e,tp) - return c:IsSetCard(0x26) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c56074358.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c56074358.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c56074358.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c56074358.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c56074358.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--D・フィールド +function c56074358.initial_effect(c) + c:EnableCounterPermit(0x8) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c56074358.accon) + e2:SetOperation(c56074358.acop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x26)) + e3:SetValue(c56074358.atkval) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetDescription(aux.Stringid(56074358,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c56074358.spcon) + e4:SetTarget(c56074358.sptg) + e4:SetOperation(c56074358.spop) + c:RegisterEffect(e4) +end +function c56074358.atkval(e,c) + return e:GetHandler():GetCounter(0x8)*300 +end +function c56074358.cfilter(c) + local np=c:GetPosition() + local pp=c:GetPreviousPosition() + return not c:IsStatus(STATUS_CONTINUOUS_POS) and ((np<3 and pp>3) or (pp<3 and np>3)) +end +function c56074358.accon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c56074358.cfilter,1,nil) +end +function c56074358.acop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x8,1) +end +function c56074358.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c56074358.filter(c,e,tp) + return c:IsSetCard(0x26) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c56074358.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c56074358.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c56074358.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c56074358.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c56074358.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c5609226.lua b/script/c5609226.lua index 8ccf5292..db0c5e63 100644 --- a/script/c5609226.lua +++ b/script/c5609226.lua @@ -1,37 +1,37 @@ ---チューナーズ・バリア -function c5609226.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c5609226.target) - e1:SetOperation(c5609226.activate) - c:RegisterEffect(e1) -end -function c5609226.filter(c) - return c:IsFaceup() and c:IsType(TYPE_TUNER) -end -function c5609226.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c5609226.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c5609226.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c5609226.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c5609226.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) - tc:RegisterEffect(e2) - end -end +--チューナーズ・バリア +function c5609226.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c5609226.target) + e1:SetOperation(c5609226.activate) + c:RegisterEffect(e1) +end +function c5609226.filter(c) + return c:IsFaceup() and c:IsType(TYPE_TUNER) +end +function c5609226.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c5609226.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c5609226.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c5609226.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c5609226.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e2) + end +end diff --git a/script/c56094445.lua b/script/c56094445.lua index 400e30d0..c96772c1 100644 --- a/script/c56094445.lua +++ b/script/c56094445.lua @@ -2,21 +2,18 @@ function c56094445.initial_effect(c) --actlimit local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c56094445.atkop) - c:RegisterEffect(e1) -end -function c56094445.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(0,1) e1:SetValue(c56094445.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) + e1:SetCondition(c56094445.actcon) + c:RegisterEffect(e1) end function c56094445.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c56094445.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end diff --git a/script/c56105047.lua b/script/c56105047.lua index a05cc6a7..02583322 100644 --- a/script/c56105047.lua +++ b/script/c56105047.lua @@ -1,35 +1,35 @@ ---ゴゴゴゴースト -function c56105047.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(56105047,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCountLimit(1,56105047) - e1:SetTarget(c56105047.sptg) - e1:SetOperation(c56105047.spop) - c:RegisterEffect(e1) -end -function c56105047.filter(c,e,tp) - return c:IsCode(62476815) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c56105047.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c56105047.filter(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c56105047.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c56105047.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c56105047.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE)==1 then - if c:IsPosition(POS_FACEUP_ATTACK) and c:IsRelateToEffect(e) then - Duel.BreakEffect() - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end - end -end +--ゴゴゴゴースト +function c56105047.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56105047,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCountLimit(1,56105047) + e1:SetTarget(c56105047.sptg) + e1:SetOperation(c56105047.spop) + c:RegisterEffect(e1) +end +function c56105047.filter(c,e,tp) + return c:IsCode(62476815) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c56105047.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c56105047.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c56105047.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c56105047.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c56105047.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE)==1 then + if c:IsPosition(POS_FACEUP_ATTACK) and c:IsRelateToEffect(e) then + Duel.BreakEffect() + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end + end +end diff --git a/script/c56111151.lua b/script/c56111151.lua index e2c3a0ac..bc31a230 100644 --- a/script/c56111151.lua +++ b/script/c56111151.lua @@ -1,72 +1,72 @@ ---Kyoutou Waterfront -function c56111151.initial_effect(c) - c:EnableCounterPermit(0x37) - c:SetCounterLimit(0x37,5) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetRange(LOCATION_FZONE) - e2:SetOperation(c56111151.counter) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_FZONE) - e3:SetCountLimit(1) - e3:SetCondition(c56111151.thcon) - e3:SetTarget(c56111151.thtg) - e3:SetOperation(c56111151.thop) - c:RegisterEffect(e3) - --Destroy replace - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DESTROY_REPLACE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_FZONE) - e4:SetTarget(c56111151.desreptg) - e4:SetOperation(c56111151.desrepop) - c:RegisterEffect(e4) -end -function c56111151.cfilter(c) - return c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c56111151.counter(e,tp,eg,ep,ev,re,r,rp) - local ct=eg:FilterCount(c56111151.cfilter,nil) - if ct>0 then - e:GetHandler():AddCounter(0x37,ct,true) - end -end -function c56111151.thfilter(c) - return c:IsSetCard(0xd3) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c56111151.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x37)>=3 -end -function c56111151.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c56111151.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c56111151.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c56111151.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c56111151.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) - and e:GetHandler():IsCanRemoveCounter(tp,0x37,1,REASON_EFFECT) end - return Duel.SelectYesNo(tp,aux.Stringid(56111151,0)) -end -function c56111151.desrepop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RemoveCounter(tp,0x37,1,REASON_EFFECT) -end +--KYOUTOUウォーターフロント +function c56111151.initial_effect(c) + c:EnableCounterPermit(0x37) + c:SetCounterLimit(0x37,5) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_FZONE) + e2:SetOperation(c56111151.counter) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1) + e3:SetCondition(c56111151.thcon) + e3:SetTarget(c56111151.thtg) + e3:SetOperation(c56111151.thop) + c:RegisterEffect(e3) + --Destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_FZONE) + e4:SetTarget(c56111151.desreptg) + e4:SetOperation(c56111151.desrepop) + c:RegisterEffect(e4) +end +function c56111151.cfilter(c) + return c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c56111151.counter(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c56111151.cfilter,nil) + if ct>0 then + e:GetHandler():AddCounter(0x37,ct,true) + end +end +function c56111151.thfilter(c) + return c:IsSetCard(0xd3) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c56111151.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x37)>=3 +end +function c56111151.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c56111151.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c56111151.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c56111151.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c56111151.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) + and e:GetHandler():IsCanRemoveCounter(tp,0x37,1,REASON_EFFECT) end + return Duel.SelectYesNo(tp,aux.Stringid(56111151,0)) +end +function c56111151.desrepop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RemoveCounter(tp,0x37,1,REASON_EFFECT) +end diff --git a/script/c56209279.lua b/script/c56209279.lua index c11451da..5fafe2dd 100644 --- a/script/c56209279.lua +++ b/script/c56209279.lua @@ -1,54 +1,54 @@ ---インフェルニティ・ネクロマンサー -function c56209279.initial_effect(c) - --to defense - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(56209279,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c56209279.potg) - e1:SetOperation(c56209279.poop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(56209279,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c56209279.spcon) - e2:SetTarget(c56209279.sptg) - e2:SetOperation(c56209279.spop) - c:RegisterEffect(e2) -end -function c56209279.potg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return e:GetHandler():IsAttackPos() end - Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) -end -function c56209279.poop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end -end -function c56209279.spcon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsDisabled() and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 -end -function c56209279.filter(c,e,tp) - return c:IsSetCard(0xb) and c:GetCode()~=56209279 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c56209279.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c56209279.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c56209279.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c56209279.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c56209279.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--インフェルニティ・ネクロマンサー +function c56209279.initial_effect(c) + --to defense + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56209279,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c56209279.potg) + e1:SetOperation(c56209279.poop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(56209279,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c56209279.spcon) + e2:SetTarget(c56209279.sptg) + e2:SetOperation(c56209279.spop) + c:RegisterEffect(e2) +end +function c56209279.potg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c56209279.poop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c56209279.spcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsDisabled() and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 +end +function c56209279.filter(c,e,tp) + return c:IsSetCard(0xb) and c:GetCode()~=56209279 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c56209279.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c56209279.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c56209279.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c56209279.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c56209279.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c56223084.lua b/script/c56223084.lua index 26970319..dd689272 100644 --- a/script/c56223084.lua +++ b/script/c56223084.lua @@ -1,30 +1,30 @@ ---ハリマンボウ -function c56223084.initial_effect(c) - --atkdown - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(56223084,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c56223084.target) - e1:SetOperation(c56223084.operation) - c:RegisterEffect(e1) -end -function c56223084.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c56223084.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-500) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end +--ハリマンボウ +function c56223084.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56223084,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c56223084.target) + e1:SetOperation(c56223084.operation) + c:RegisterEffect(e1) +end +function c56223084.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c56223084.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c56292140.lua b/script/c56292140.lua index 934bb30c..972502c4 100644 --- a/script/c56292140.lua +++ b/script/c56292140.lua @@ -15,6 +15,7 @@ function c56292140.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(56292140,0)) e2:SetCategory(CATEGORY_COUNTER) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_DAMAGE_STEP_END) e2:SetCost(c56292140.ctcost) diff --git a/script/c56350972.lua b/script/c56350972.lua index 450c9364..4284edc3 100644 --- a/script/c56350972.lua +++ b/script/c56350972.lua @@ -1,105 +1,105 @@ ---竜姫神サフィラ -function c56350972.initial_effect(c) - c:EnableReviveLimit() - --effect - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCondition(c56350972.regcon1) - e1:SetOperation(c56350972.regop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCondition(c56350972.regcon2) - e2:SetOperation(c56350972.regop) - c:RegisterEffect(e2) -end -function c56350972.regcon1(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_RITUAL)==SUMMON_TYPE_RITUAL -end -function c56350972.regfilter(c) - return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsPreviousLocation(LOCATION_HAND+LOCATION_DECK) -end -function c56350972.regcon2(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c56350972.regfilter,1,nil) -end -function c56350972.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(56350972,0)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1,56350972) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c56350972.target) - e1:SetOperation(c56350972.operation) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end -function c56350972.filter(c) - return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToHand() -end -function c56350972.target(e,tp,eg,ep,ev,re,r,rp,chk) - local b1=Duel.IsPlayerCanDraw(tp,2) - local b2=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)~=0 - local b3=Duel.IsExistingMatchingCard(c56350972.filter,tp,LOCATION_GRAVE,0,1,nil) - if chk==0 then return b1 or b2 or b3 end - local ops={} - local opval={} - local off=1 - if b1 then - ops[off]=aux.Stringid(56350972,1) - opval[off-1]=1 - off=off+1 - end - if b2 then - ops[off]=aux.Stringid(56350972,2) - opval[off-1]=2 - off=off+1 - end - if b3 then - ops[off]=aux.Stringid(56350972,3) - opval[off-1]=3 - off=off+1 - end - local op=Duel.SelectOption(tp,table.unpack(ops)) - local sel=opval[op] - e:SetLabel(sel) - if sel==1 then - e:SetCategory(CATEGORY_DRAW+CATEGORY_HANDES) - Duel.SetOperationInfo(0,CATEGORY_DRAW,0,0,tp,2) - Duel.SetOperationInfo(0,CATEGORY_HANDES,0,0,tp,1) - elseif sel==2 then - e:SetCategory(CATEGORY_HANDES) - Duel.SetOperationInfo(0,CATEGORY_HANDES,0,0,1-tp,1) - else - e:SetCategory(CATEGORY_TOHAND) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) - end -end -function c56350972.operation(e,tp,eg,ep,ev,re,r,rp) - local sel=e:GetLabel() - if sel==1 then - Duel.Draw(tp,2,REASON_EFFECT) - Duel.BreakEffect() - Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) - elseif sel==2 then - local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) - if g:GetCount()==0 then return end - local sg=g:RandomSelect(tp,1) - Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c56350972.filter,tp,LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - end -end +--竜姫神サフィラ +function c56350972.initial_effect(c) + c:EnableReviveLimit() + --effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCondition(c56350972.regcon1) + e1:SetOperation(c56350972.regop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCondition(c56350972.regcon2) + e2:SetOperation(c56350972.regop) + c:RegisterEffect(e2) +end +function c56350972.regcon1(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_RITUAL)==SUMMON_TYPE_RITUAL +end +function c56350972.regfilter(c) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsPreviousLocation(LOCATION_HAND+LOCATION_DECK) +end +function c56350972.regcon2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c56350972.regfilter,1,nil) +end +function c56350972.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56350972,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1,56350972) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c56350972.target) + e1:SetOperation(c56350972.operation) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c56350972.filter(c) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToHand() +end +function c56350972.target(e,tp,eg,ep,ev,re,r,rp,chk) + local b1=Duel.IsPlayerCanDraw(tp,2) + local b2=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)~=0 + local b3=Duel.IsExistingMatchingCard(c56350972.filter,tp,LOCATION_GRAVE,0,1,nil) + if chk==0 then return b1 or b2 or b3 end + local ops={} + local opval={} + local off=1 + if b1 then + ops[off]=aux.Stringid(56350972,1) + opval[off-1]=1 + off=off+1 + end + if b2 then + ops[off]=aux.Stringid(56350972,2) + opval[off-1]=2 + off=off+1 + end + if b3 then + ops[off]=aux.Stringid(56350972,3) + opval[off-1]=3 + off=off+1 + end + local op=Duel.SelectOption(tp,table.unpack(ops)) + local sel=opval[op] + e:SetLabel(sel) + if sel==1 then + e:SetCategory(CATEGORY_DRAW+CATEGORY_HANDES) + Duel.SetOperationInfo(0,CATEGORY_DRAW,0,0,tp,2) + Duel.SetOperationInfo(0,CATEGORY_HANDES,0,0,tp,1) + elseif sel==2 then + e:SetCategory(CATEGORY_HANDES) + Duel.SetOperationInfo(0,CATEGORY_HANDES,0,0,1-tp,1) + else + e:SetCategory(CATEGORY_TOHAND) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) + end +end +function c56350972.operation(e,tp,eg,ep,ev,re,r,rp) + local sel=e:GetLabel() + if sel==1 then + Duel.Draw(tp,2,REASON_EFFECT) + Duel.BreakEffect() + Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + elseif sel==2 then + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + if g:GetCount()==0 then return end + local sg=g:RandomSelect(tp,1) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c56350972.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c56421754.lua b/script/c56421754.lua index cb23d165..c462dd76 100644 --- a/script/c56421754.lua +++ b/script/c56421754.lua @@ -1,42 +1,42 @@ ---U.A.マイティースラッガー -function c56421754.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,56421754) - e1:SetCondition(c56421754.spcon) - e1:SetOperation(c56421754.spop) - c:RegisterEffect(e1) - --actlimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_CANNOT_ACTIVATE) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,1) - e2:SetValue(c56421754.aclimit) - e2:SetCondition(c56421754.actcon) - c:RegisterEffect(e2) -end -function c56421754.spfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(56421754) and c:IsAbleToHandAsCost() -end -function c56421754.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c56421754.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c56421754.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectMatchingCard(tp,c56421754.spfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoHand(g,nil,REASON_COST) -end -function c56421754.aclimit(e,re,tp) - return not re:GetHandler():IsImmuneToEffect(e) -end -function c56421754.actcon(e) - return Duel.GetAttacker()==e:GetHandler() -end +--U.A.マイティースラッガー +function c56421754.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,56421754) + e1:SetCondition(c56421754.spcon) + e1:SetOperation(c56421754.spop) + c:RegisterEffect(e1) + --actlimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,1) + e2:SetValue(c56421754.aclimit) + e2:SetCondition(c56421754.actcon) + c:RegisterEffect(e2) +end +function c56421754.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(56421754) and c:IsAbleToHandAsCost() +end +function c56421754.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c56421754.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c56421754.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c56421754.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c56421754.aclimit(e,re,tp) + return not re:GetHandler():IsImmuneToEffect(e) +end +function c56421754.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end diff --git a/script/c56433456.lua b/script/c56433456.lua index b543ce13..e2c86ad5 100644 --- a/script/c56433456.lua +++ b/script/c56433456.lua @@ -1,18 +1,18 @@ ---天空の聖域 -function c56433456.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --avoid battle damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FAIRY)) - e2:SetValue(1) - c:RegisterEffect(e2) -end +--天空の聖域 +function c56433456.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --avoid battle damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FAIRY)) + e2:SetValue(1) + c:RegisterEffect(e2) +end diff --git a/script/c5645210.lua b/script/c5645210.lua index 232197ff..5c69bcad 100644 --- a/script/c5645210.lua +++ b/script/c5645210.lua @@ -46,8 +46,7 @@ end function c5645210.effectfilter(e,ct) local p=e:GetHandler():GetControler() local te,tp=Duel.GetChainInfo(ct,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) - local tc=te:GetHandler() - return p==tp and tc:IsType(TYPE_SPELL+TYPE_TRAP) + return p==tp and te:IsActiveType(TYPE_SPELL+TYPE_TRAP) end function c5645210.distarget(e,c) return c:IsType(TYPE_SPELL+TYPE_TRAP) diff --git a/script/c564541.lua b/script/c564541.lua index b850757e..fe65b148 100644 --- a/script/c564541.lua +++ b/script/c564541.lua @@ -1,50 +1,50 @@ ---ミンゲイドラゴン -function c564541.initial_effect(c) - --double tribute - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DOUBLE_TRIBUTE) - e1:SetValue(c564541.dccon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(564541,0)) - e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1) - e2:SetCondition(c564541.spcon) - e2:SetTarget(c564541.sptg) - e2:SetOperation(c564541.spop) - c:RegisterEffect(e2) -end -function c564541.dccon(e,c) - return c:IsRace(RACE_DRAGON) -end -function c564541.cfilter(c) - return c:IsType(TYPE_MONSTER) and not c:IsRace(RACE_DRAGON) -end -function c564541.spcon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 - and not Duel.IsExistingMatchingCard(c564541.cfilter,tp,LOCATION_GRAVE,0,1,nil) -end -function c564541.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c564541.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 - and not Duel.IsExistingMatchingCard(c564541.cfilter,tp,LOCATION_GRAVE,0,1,nil) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1,true) - end -end +--ミンゲイドラゴン +function c564541.initial_effect(c) + --double tribute + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DOUBLE_TRIBUTE) + e1:SetValue(c564541.dccon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(564541,0)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1) + e2:SetCondition(c564541.spcon) + e2:SetTarget(c564541.sptg) + e2:SetOperation(c564541.spop) + c:RegisterEffect(e2) +end +function c564541.dccon(e,c) + return c:IsRace(RACE_DRAGON) +end +function c564541.cfilter(c) + return c:IsType(TYPE_MONSTER) and not c:IsRace(RACE_DRAGON) +end +function c564541.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and not Duel.IsExistingMatchingCard(c564541.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c564541.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c564541.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and not Duel.IsExistingMatchingCard(c564541.cfilter,tp,LOCATION_GRAVE,0,1,nil) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + end +end diff --git a/script/c5650082.lua b/script/c5650082.lua index 8ed4759c..fc3ec133 100644 --- a/script/c5650082.lua +++ b/script/c5650082.lua @@ -1,29 +1,29 @@ ---神風のバリア -エア・フォース- -function c5650082.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c5650082.condition) - e1:SetTarget(c5650082.target) - e1:SetOperation(c5650082.activate) - c:RegisterEffect(e1) -end -function c5650082.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c5650082.filter(c) - return c:IsAttackPos() and c:IsAbleToHand() -end -function c5650082.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c5650082.filter,tp,0,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(c5650082.filter,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c5650082.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c5650082.filter,tp,0,LOCATION_MZONE,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - end -end +--神風のバリア -エア・フォース- +function c5650082.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c5650082.condition) + e1:SetTarget(c5650082.target) + e1:SetOperation(c5650082.activate) + c:RegisterEffect(e1) +end +function c5650082.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c5650082.filter(c) + return c:IsAttackPos() and c:IsAbleToHand() +end +function c5650082.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c5650082.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c5650082.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c5650082.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c5650082.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end diff --git a/script/c56532353.lua b/script/c56532353.lua index 23dca684..d852d277 100644 --- a/script/c56532353.lua +++ b/script/c56532353.lua @@ -64,8 +64,7 @@ function c56532353.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c56532353.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c56532632.lua b/script/c56532632.lua index a60835e1..e31d257a 100644 --- a/script/c56532632.lua +++ b/script/c56532632.lua @@ -12,7 +12,7 @@ function c56532632.initial_effect(c) end function c56532632.condition(e,tp,eg,ep,ev,re,r,rp) local ph=Duel.GetCurrentPhase() - return ep~=tp and ph>=PHASE_BATTLE and ph<=PHASE_DAMAGE_CAL + return ep~=tp and ph>PHASE_MAIN1 and ph0 and ft2>0 then @@ -146,12 +149,15 @@ function c56562619.spop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) sg2=sg2:Select(tp,ft2,ft2,nil) end - local sg=sg2:GetFirst() - while sg do - Duel.SpecialSummonStep(sg,0,tp,1-tp,false,false,POS_FACEUP) - sg=sg2:GetNext() + local sc=sg2:GetFirst() + while sc do + Duel.SpecialSummonStep(sc,0,tp,1-tp,false,false,POS_FACEUP) + sc=sg2:GetNext() end end Duel.SpecialSummonComplete() rg:Clear() end +function c56562619.clearop(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():Clear() +end diff --git a/script/c56585883.lua b/script/c56585883.lua index 0f5c88aa..5c1332f6 100644 --- a/script/c56585883.lua +++ b/script/c56585883.lua @@ -1,86 +1,86 @@ ---ハーピィ・ハーピスト -function c56585883.initial_effect(c) - --change name - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetRange(LOCATION_MZONE+LOCATION_GRAVE) - e1:SetValue(76812113) - c:RegisterEffect(e1) - --return - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(56585883,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetCountLimit(1,56585883) - e2:SetTarget(c56585883.target) - e2:SetOperation(c56585883.operation) - c:RegisterEffect(e2) - --reg - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetOperation(c56585883.regop) - c:RegisterEffect(e3) - --search - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(56585883,1)) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_PHASE+PHASE_END) - e4:SetCountLimit(1,56585884) - e4:SetRange(LOCATION_GRAVE) - e4:SetCondition(c56585883.thcon) - e4:SetTarget(c56585883.thtg) - e4:SetOperation(c56585883.thop) - c:RegisterEffect(e4) -end -function c56585883.filter1(c) - return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) and c:IsAbleToHand() -end -function c56585883.filter2(c) - return c:IsFaceup() and c:IsAbleToHand() -end -function c56585883.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c56585883.filter1,tp,LOCATION_MZONE,0,1,e:GetHandler()) - and Duel.IsExistingTarget(c56585883.filter2,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g1=Duel.SelectTarget(tp,c56585883.filter1,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g2=Duel.SelectTarget(tp,c56585883.filter2,tp,0,LOCATION_MZONE,1,1,nil) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g1,2,0,0) -end -function c56585883.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - end -end -function c56585883.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - c:RegisterFlagEffect(56585883,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c56585883.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(56585883)>0 -end -function c56585883.thfilter(c) - return c:IsAttackBelow(1500) and c:IsRace(RACE_WINDBEAST) and c:GetLevel()==4 and c:IsAbleToHand() -end -function c56585883.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c56585883.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c56585883.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c56585883.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ハーピィ・ハーピスト +function c56585883.initial_effect(c) + --change name + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetRange(LOCATION_MZONE+LOCATION_GRAVE) + e1:SetValue(76812113) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(56585883,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCountLimit(1,56585883) + e2:SetTarget(c56585883.target) + e2:SetOperation(c56585883.operation) + c:RegisterEffect(e2) + --reg + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c56585883.regop) + c:RegisterEffect(e3) + --search + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(56585883,1)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCountLimit(1,56585884) + e4:SetRange(LOCATION_GRAVE) + e4:SetCondition(c56585883.thcon) + e4:SetTarget(c56585883.thtg) + e4:SetOperation(c56585883.thop) + c:RegisterEffect(e4) +end +function c56585883.filter1(c) + return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) and c:IsAbleToHand() +end +function c56585883.filter2(c) + return c:IsFaceup() and c:IsAbleToHand() +end +function c56585883.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c56585883.filter1,tp,LOCATION_MZONE,0,1,e:GetHandler()) + and Duel.IsExistingTarget(c56585883.filter2,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g1=Duel.SelectTarget(tp,c56585883.filter1,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g2=Duel.SelectTarget(tp,c56585883.filter2,tp,0,LOCATION_MZONE,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g1,2,0,0) +end +function c56585883.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end +function c56585883.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(56585883,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c56585883.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(56585883)>0 +end +function c56585883.thfilter(c) + return c:IsAttackBelow(1500) and c:IsRace(RACE_WINDBEAST) and c:GetLevel()==4 and c:IsAbleToHand() +end +function c56585883.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c56585883.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c56585883.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c56585883.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c56594520.lua b/script/c56594520.lua index fa5f0879..e1b54431 100644 --- a/script/c56594520.lua +++ b/script/c56594520.lua @@ -1,22 +1,22 @@ ---ガイアパワー -function c56594520.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH)) - e2:SetValue(500) - c:RegisterEffect(e2) - --Def down - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(-400) - c:RegisterEffect(e3) -end +--ガイアパワー +function c56594520.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH)) + e2:SetValue(500) + c:RegisterEffect(e2) + --Def down + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(-400) + c:RegisterEffect(e3) +end diff --git a/script/c56611470.lua b/script/c56611470.lua index d0874539..d9ad738d 100644 --- a/script/c56611470.lua +++ b/script/c56611470.lua @@ -1,97 +1,97 @@ ---アーティファクトの解放 -function c56611470.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c56611470.target) - e1:SetOperation(c56611470.activate) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(56611470,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_DESTROYED) - e2:SetCondition(c56611470.drcon) - e2:SetCost(c56611470.drcost) - e2:SetTarget(c56611470.drtg) - e2:SetOperation(c56611470.drop) - c:RegisterEffect(e2) -end -function c56611470.filter(c,e) - return c:IsFaceup() and c:IsSetCard(0x97) and c:IsCanBeEffectTarget(e) -end -function c56611470.xyzfilter(c,mg) - return c:IsXyzSummonable(mg,2,2) -end -function c56611470.mfilter1(c,mg,exg) - return mg:IsExists(c56611470.mfilter2,1,c,c,exg) -end -function c56611470.mfilter2(c,mc,exg) - return exg:IsExists(Card.IsXyzSummonable,1,nil,Group.FromCards(c,mc)) -end -function c56611470.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - local mg=Duel.GetMatchingGroup(c56611470.filter,tp,LOCATION_MZONE,0,nil,e) - local exg=Duel.GetMatchingGroup(c56611470.xyzfilter,tp,LOCATION_EXTRA,0,nil,mg) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and exg:GetCount()>0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local sg1=mg:FilterSelect(tp,c56611470.mfilter1,1,1,nil,mg,exg) - local tc1=sg1:GetFirst() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local sg2=mg:FilterSelect(tp,c56611470.mfilter2,1,1,tc1,tc1,exg) - sg1:Merge(sg2) - Duel.SetTargetCard(sg1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c56611470.tfilter(c,e) - return c:IsRelateToEffect(e) and c:IsFaceup() -end -function c56611470.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) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c56611470.attg) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c56611470.tfilter,nil,e) - if g:GetCount()<2 then return end - local xyzg=Duel.GetMatchingGroup(c56611470.xyzfilter,tp,LOCATION_EXTRA,0,nil,g) - if xyzg:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local xyz=xyzg:Select(tp,1,1,nil):GetFirst() - Duel.XyzSummon(tp,xyz,g) - end -end -function c56611470.attg(e,c) - return not c:IsSetCard(0x97) -end -function c56611470.drcon(e,tp,eg,ep,ev,re,r,rp) - return rp~=tp and e:GetHandler():GetPreviousControler()==tp -end -function c56611470.cffilter(c) - return c:IsAttribute(ATTRIBUTE_LIGHT) and c:GetLevel()==5 and not c:IsPublic() -end -function c56611470.drcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c56611470.cffilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local g=Duel.SelectMatchingCard(tp,c56611470.cffilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.ConfirmCards(1-tp,g) - Duel.ShuffleHand(tp) -end -function c56611470.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c56611470.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--アーティファクトの解放 +function c56611470.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c56611470.target) + e1:SetOperation(c56611470.activate) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(56611470,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c56611470.drcon) + e2:SetCost(c56611470.drcost) + e2:SetTarget(c56611470.drtg) + e2:SetOperation(c56611470.drop) + c:RegisterEffect(e2) +end +function c56611470.filter(c,e) + return c:IsFaceup() and c:IsSetCard(0x97) and c:IsCanBeEffectTarget(e) +end +function c56611470.xyzfilter(c,mg) + return c:IsXyzSummonable(mg,2,2) +end +function c56611470.mfilter1(c,mg,exg) + return mg:IsExists(c56611470.mfilter2,1,c,c,exg) +end +function c56611470.mfilter2(c,mc,exg) + return exg:IsExists(Card.IsXyzSummonable,1,nil,Group.FromCards(c,mc)) +end +function c56611470.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local mg=Duel.GetMatchingGroup(c56611470.filter,tp,LOCATION_MZONE,0,nil,e) + local exg=Duel.GetMatchingGroup(c56611470.xyzfilter,tp,LOCATION_EXTRA,0,nil,mg) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and exg:GetCount()>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg1=mg:FilterSelect(tp,c56611470.mfilter1,1,1,nil,mg,exg) + local tc1=sg1:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg2=mg:FilterSelect(tp,c56611470.mfilter2,1,1,tc1,tc1,exg) + sg1:Merge(sg2) + Duel.SetTargetCard(sg1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c56611470.tfilter(c,e) + return c:IsRelateToEffect(e) and c:IsFaceup() +end +function c56611470.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) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c56611470.attg) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c56611470.tfilter,nil,e) + if g:GetCount()<2 then return end + local xyzg=Duel.GetMatchingGroup(c56611470.xyzfilter,tp,LOCATION_EXTRA,0,nil,g) + if xyzg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local xyz=xyzg:Select(tp,1,1,nil):GetFirst() + Duel.XyzSummon(tp,xyz,g) + end +end +function c56611470.attg(e,c) + return not c:IsSetCard(0x97) +end +function c56611470.drcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and e:GetHandler():GetPreviousControler()==tp +end +function c56611470.cffilter(c) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:GetLevel()==5 and not c:IsPublic() +end +function c56611470.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c56611470.cffilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c56611470.cffilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) +end +function c56611470.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c56611470.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c56638325.lua b/script/c56638325.lua index 153592c2..02882e1e 100644 --- a/script/c56638325.lua +++ b/script/c56638325.lua @@ -26,7 +26,7 @@ function c56638325.initial_effect(c) e3:SetCategory(CATEGORY_DESTROY) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e3:SetCountLimit(1) e3:SetCost(c56638325.descost) e3:SetTarget(c56638325.destg) @@ -53,7 +53,7 @@ end function c56638325.limop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetCurrentChain()==0 then Duel.SetChainLimitTillChainEnd(c56638325.chainlm) - else + elseif Duel.GetCurrentChain()==1 then e:GetHandler():RegisterFlagEffect(56638325,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) end end diff --git a/script/c56641453.lua b/script/c56641453.lua index 0006c1a8..54a302bb 100644 --- a/script/c56641453.lua +++ b/script/c56641453.lua @@ -1,66 +1,66 @@ ---コクーン・ヴェール -function c56641453.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c56641453.cost) - e1:SetTarget(c56641453.target) - e1:SetOperation(c56641453.activate) - c:RegisterEffect(e1) -end -c56641453.list={[42682609]=17955766,[43751755]=43237273,[17363041]=54959865, - [29246354]=17732278,[16241441]=89621922,[42239546]=80344569} -function c56641453.filter1(c,e,tp) - if c:IsFacedown() then return false end - local code=c:GetCode() - local tcode=c56641453.list[code] - return tcode and Duel.IsExistingTarget(c56641453.filter2,tp,0x13,0,1,nil,tcode,e,tp) -end -function c56641453.filter2(c,tcode,e,tp) - return c:IsCode(tcode) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c56641453.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - return true -end -function c56641453.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local res=e:GetLabel()==1 - e:SetLabel(0) - return res and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.CheckReleaseGroup(tp,c56641453.filter1,1,nil,e,tp) end - e:SetLabel(0) - local rg=Duel.SelectReleaseGroup(tp,c56641453.filter1,1,1,nil,e,tp) - local code=rg:GetFirst():GetCode() - local tcode=c56641453.list[code] - Duel.Release(rg,REASON_COST) - Duel.SetTargetParam(tcode) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) -end -function c56641453.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(c56641453.damval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tcode=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c56641453.filter2,tp,0x13,0,1,1,nil,tcode,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c56641453.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 - else return val end -end +--コクーン・ヴェール +function c56641453.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c56641453.cost) + e1:SetTarget(c56641453.target) + e1:SetOperation(c56641453.activate) + c:RegisterEffect(e1) +end +c56641453.list={[42682609]=17955766,[43751755]=43237273,[17363041]=54959865, + [29246354]=17732278,[16241441]=89621922,[42239546]=80344569} +function c56641453.filter1(c,e,tp) + if c:IsFacedown() then return false end + local code=c:GetCode() + local tcode=c56641453.list[code] + return tcode and Duel.IsExistingTarget(c56641453.filter2,tp,0x13,0,1,nil,tcode,e,tp) +end +function c56641453.filter2(c,tcode,e,tp) + return c:IsCode(tcode) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c56641453.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c56641453.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local res=e:GetLabel()==1 + e:SetLabel(0) + return res and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c56641453.filter1,1,nil,e,tp) end + e:SetLabel(0) + local rg=Duel.SelectReleaseGroup(tp,c56641453.filter1,1,1,nil,e,tp) + local code=rg:GetFirst():GetCode() + local tcode=c56641453.list[code] + Duel.Release(rg,REASON_COST) + Duel.SetTargetParam(tcode) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c56641453.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(c56641453.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tcode=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c56641453.filter2),tp,0x13,0,1,1,nil,tcode,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c56641453.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end diff --git a/script/c56655675.lua b/script/c56655675.lua index bb386b14..84324e9d 100644 --- a/script/c56655675.lua +++ b/script/c56655675.lua @@ -1,108 +1,107 @@ ---聖霊獣騎 ガイアペライオ -function c56655675.initial_effect(c) - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetValue(1) - e2:SetCondition(c56655675.spcon) - e2:SetOperation(c56655675.spop) - c:RegisterEffect(e2) - --negate - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCondition(c56655675.condition) - e3:SetOperation(c56655675.operation) - c:RegisterEffect(e3) -end -function c56655675.spfilter1(c,mg) - local mg2=mg:Clone() - mg2:RemoveCard(c) - return c:IsFusionSetCard(0x40b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() - and mg2:IsExists(c56655675.spfilter2,1,nil,mg2) -end -function c56655675.spfilter2(c,mg) - local mg2=mg:Clone() - mg2:RemoveCard(c) - return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() - and mg2:IsExists(c56655675.spfilter3,1,nil) -end -function c56655675.spfilter3(c) - return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() -end -function c56655675.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local mg=Duel.GetMatchingGroup(Card.IsFusionSetCard,tp,LOCATION_MZONE,0,nil,0xb5) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and mg:IsExists(c56655675.spfilter1,1,nil,mg) -end -function c56655675.spop(e,tp,eg,ep,ev,re,r,rp,c) - local mg=Duel.GetMatchingGroup(Card.IsFusionSetCard,tp,LOCATION_MZONE,0,nil,0xb5) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g1=mg:FilterSelect(tp,c56655675.spfilter1,1,1,nil,mg) - mg:RemoveCard(g1:GetFirst()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=mg:FilterSelect(tp,c56655675.spfilter2,1,1,nil,mg) - mg:RemoveCard(g2:GetFirst()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g3=mg:FilterSelect(tp,c56655675.spfilter3,1,1,nil) - g1:Merge(g2) - g1:Merge(g3) - c:SetMaterial(g1) - Duel.Remove(g1,POS_FACEUP,REASON_COST) -end -function c56655675.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c56655675.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c56655675.discon) - e1:SetCost(c56655675.discost) - e1:SetTarget(c56655675.distg) - e1:SetOperation(c56655675.disop) - e1:SetReset(RESET_EVENT+0x1fe0000) - e:GetHandler():RegisterEffect(e1) -end -function c56655675.discon(e,tp,eg,ep,ev,re,r,rp) - return re~=e and not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) - and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev) -end -function c56655675.filter(c) - return c:IsSetCard(0xb5) and c:IsAbleToRemoveAsCost() -end -function c56655675.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c56655675.filter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c56655675.filter,tp,LOCATION_HAND,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c56655675.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c56655675.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--聖霊獣騎 ガイアペライオ +function c56655675.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetValue(1) + e2:SetCondition(c56655675.spcon) + e2:SetOperation(c56655675.spop) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c56655675.condition) + e3:SetOperation(c56655675.operation) + c:RegisterEffect(e3) +end +function c56655675.spfilter1(c,mg) + local mg2=mg:Clone() + mg2:RemoveCard(c) + return c:IsFusionSetCard(0x40b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() + and mg2:IsExists(c56655675.spfilter2,1,nil,mg2) +end +function c56655675.spfilter2(c,mg) + local mg2=mg:Clone() + mg2:RemoveCard(c) + return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() + and mg2:IsExists(c56655675.spfilter3,1,nil) +end +function c56655675.spfilter3(c) + return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() +end +function c56655675.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(Card.IsFusionSetCard,tp,LOCATION_MZONE,0,nil,0xb5) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and mg:IsExists(c56655675.spfilter1,1,nil,mg) +end +function c56655675.spop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(Card.IsFusionSetCard,tp,LOCATION_MZONE,0,nil,0xb5) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=mg:FilterSelect(tp,c56655675.spfilter1,1,1,nil,mg) + mg:RemoveCard(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=mg:FilterSelect(tp,c56655675.spfilter2,1,1,nil,mg) + mg:RemoveCard(g2:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g3=mg:FilterSelect(tp,c56655675.spfilter3,1,1,nil) + g1:Merge(g2) + g1:Merge(g3) + c:SetMaterial(g1) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c56655675.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c56655675.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c56655675.discon) + e1:SetCost(c56655675.discost) + e1:SetTarget(c56655675.distg) + e1:SetOperation(c56655675.disop) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) +end +function c56655675.discon(e,tp,eg,ep,ev,re,r,rp) + return re~=e and not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) + and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev) +end +function c56655675.filter(c) + return c:IsSetCard(0xb5) and c:IsAbleToRemoveAsCost() +end +function c56655675.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c56655675.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c56655675.filter,tp,LOCATION_HAND,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c56655675.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c56655675.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c56704140.lua b/script/c56704140.lua index 96253aa3..b49586f5 100644 --- a/script/c56704140.lua +++ b/script/c56704140.lua @@ -27,10 +27,11 @@ function c56704140.operation(e,tp,eg,ep,ev,re,r,rp) if c:IsFacedown() or not c:IsRelateToEffect(e) then return end local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) e1:SetLabel(e:GetLabel()) e1:SetValue(c56704140.tgval) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) end function c56704140.tgval(e,c) diff --git a/script/c5672432.lua b/script/c5672432.lua index cd23eab2..62477068 100644 --- a/script/c5672432.lua +++ b/script/c5672432.lua @@ -28,8 +28,8 @@ end function c5672432.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,c5672432.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c5672432.filter),tp,LOCATION_GRAVE+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 diff --git a/script/c56746202.lua b/script/c56746202.lua index 82dc9206..64c9ade7 100644 --- a/script/c56746202.lua +++ b/script/c56746202.lua @@ -1,53 +1,53 @@ ---スクラップ・キマイラ -function c56746202.initial_effect(c) - Duel.EnableGlobalFlag(GLOBALFLAG_SCRAP_CHIMERA) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(56746202,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c56746202.sumtg) - e1:SetOperation(c56746202.sumop) - c:RegisterEffect(e1) - --synchro custom - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetValue(c56746202.synlimit) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(56746202,1)) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_SCRAP_CHIMERA) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetValue(c56746202.synlimit2) - c:RegisterEffect(e3) -end -function c56746202.filter(c,e,tp) - return c:IsSetCard(0x24) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c56746202.sumtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c56746202.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c56746202.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c56746202.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c56746202.sumop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c56746202.synlimit(e,c) - if not c then return false end - return not c:IsSetCard(0x24) -end -function c56746202.synlimit2(e,c) - return not c:IsSetCard(0x24) -end +--スクラップ・キマイラ +function c56746202.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_SCRAP_CHIMERA) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56746202,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c56746202.sumtg) + e1:SetOperation(c56746202.sumop) + c:RegisterEffect(e1) + --synchro custom + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(c56746202.synlimit) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(56746202,1)) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SCRAP_CHIMERA) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetValue(c56746202.synlimit2) + c:RegisterEffect(e3) +end +function c56746202.filter(c,e,tp) + return c:IsSetCard(0x24) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c56746202.sumtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c56746202.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c56746202.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c56746202.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c56746202.sumop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c56746202.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x24) +end +function c56746202.synlimit2(e,c) + return not c:IsSetCard(0x24) +end diff --git a/script/c56747793.lua b/script/c56747793.lua index 38545e99..5b0c619c 100644 --- a/script/c56747793.lua +++ b/script/c56747793.lua @@ -1,14 +1,6 @@ --団結の力 function c56747793.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(c56747793.target) - e1:SetOperation(c56747793.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk,def local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,26 +12,6 @@ function c56747793.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(c56747793.value) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetValue(1) - c:RegisterEffect(e4) -end -function c56747793.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 c56747793.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 c56747793.value(e,c) return Duel.GetMatchingGroupCount(Card.IsFaceup,e:GetHandler():GetControler(),LOCATION_MZONE,0,nil)*800 diff --git a/script/c56784842.lua b/script/c56784842.lua index bfd7c7e3..4600c1ab 100644 --- a/script/c56784842.lua +++ b/script/c56784842.lua @@ -3,6 +3,7 @@ function c56784842.initial_effect(c) --act limit local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_SUMMON_SUCCESS) e1:SetOperation(c56784842.regop) c:RegisterEffect(e1) @@ -14,7 +15,7 @@ function c56784842.regop(e,tp,eg,ep,ev,re,r,rp) e1:SetType(EFFECT_TYPE_FIELD) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(1,1) e1:SetValue(c56784842.aclimit) diff --git a/script/c56827051.lua b/script/c56827051.lua new file mode 100644 index 00000000..b0da4485 --- /dev/null +++ b/script/c56827051.lua @@ -0,0 +1,75 @@ +--影霊衣の巫女 エリアル +--Ariel, Priestess of the Nekroz +--Script by nekrozar +function c56827051.initial_effect(c) + --level change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56827051,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c56827051.lvcost) + e1:SetOperation(c56827051.lvop) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(56827051,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_RELEASE) + e2:SetCountLimit(1,56827051) + e2:SetCondition(c56827051.thcon) + e2:SetTarget(c56827051.thtg) + e2:SetOperation(c56827051.thop) + c:RegisterEffect(e2) +end +function c56827051.cfilter(c) + return c:IsSetCard(0xb4) and not c:IsPublic() +end +function c56827051.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c56827051.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c56827051.cfilter,tp,LOCATION_HAND,0,1,63,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + e:SetLabel(g:GetCount()) +end +function c56827051.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local ct=e:GetLabel() + local sel=nil + if c:GetLevel()==1 then + sel=Duel.SelectOption(tp,aux.Stringid(56827051,2)) + else + sel=Duel.SelectOption(tp,aux.Stringid(56827051,2),aux.Stringid(56827051,3)) + end + if sel==1 then + ct=ct*-1 + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(ct) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c56827051.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c56827051.filter(c) + return c:IsSetCard(0xb4) and c:IsType(TYPE_MONSTER) and not c:IsType(TYPE_RITUAL) and c:IsAbleToHand() +end +function c56827051.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c56827051.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c56827051.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c56827051.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c56832966.lua b/script/c56832966.lua index 1e5f094f..253c087f 100644 --- a/script/c56832966.lua +++ b/script/c56832966.lua @@ -24,6 +24,7 @@ function c56832966.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(56832966,1)) e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetRange(LOCATION_MZONE) e3:SetCode(EVENT_PRE_DAMAGE_CALCULATE) diff --git a/script/c56907986.lua b/script/c56907986.lua index aa4fb205..bb97c336 100644 --- a/script/c56907986.lua +++ b/script/c56907986.lua @@ -1,103 +1,103 @@ ---Kozmo Strawman -function c56907986.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(56907986,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,56907986) - e1:SetCost(c56907986.spcost1) - e1:SetTarget(c56907986.sptg1) - e1:SetOperation(c56907986.spop1) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(56907986,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCost(c56907986.spcost2) - e2:SetTarget(c56907986.sptg2) - e2:SetOperation(c56907986.spop2) - c:RegisterEffect(e2) -end -function c56907986.spcost1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c56907986.spfilter1(c,e,tp) - return c:IsSetCard(0xd2) and c:IsLevelAbove(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c56907986.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c56907986.spfilter1,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c56907986.spop1(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,c56907986.spfilter1,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 c56907986.spcost2(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 c56907986.spfilter2(c,e,tp) - return c:IsSetCard(0xd2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c56907986.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c56907986.spfilter2(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c56907986.spfilter2,tp,LOCATION_REMOVED,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c56907986.spfilter2,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c56907986.spop2(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetCountLimit(1) - e3:SetCondition(c56907986.descon) - e3:SetOperation(c56907986.desop) - e3:SetLabelObject(tc) - Duel.RegisterEffect(e3,tp) - tc:RegisterFlagEffect(56907986,RESET_EVENT+0x1fe0000,0,1) - Duel.SpecialSummonComplete() - end -end -function c56907986.descon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:GetFlagEffect(56907986)==0 then - e:Reset() - return false - end - return true -end -function c56907986.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.Destroy(tc,REASON_EFFECT) -end +--Kozmo-フォルミート +function c56907986.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(56907986,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,56907986) + e1:SetCost(c56907986.spcost1) + e1:SetTarget(c56907986.sptg1) + e1:SetOperation(c56907986.spop1) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(56907986,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c56907986.spcost2) + e2:SetTarget(c56907986.sptg2) + e2:SetOperation(c56907986.spop2) + c:RegisterEffect(e2) +end +function c56907986.spcost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c56907986.spfilter1(c,e,tp) + return c:IsSetCard(0xd2) and c:IsLevelAbove(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c56907986.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c56907986.spfilter1,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c56907986.spop1(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,c56907986.spfilter1,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 c56907986.spcost2(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 c56907986.spfilter2(c,e,tp) + return c:IsSetCard(0xd2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c56907986.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c56907986.spfilter2(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c56907986.spfilter2,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c56907986.spfilter2,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c56907986.spop2(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCountLimit(1) + e3:SetCondition(c56907986.descon) + e3:SetOperation(c56907986.desop) + e3:SetLabelObject(tc) + Duel.RegisterEffect(e3,tp) + tc:RegisterFlagEffect(56907986,RESET_EVENT+0x1fe0000,0,1) + Duel.SpecialSummonComplete() + end +end +function c56907986.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(56907986)==0 then + e:Reset() + return false + end + return true +end +function c56907986.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c56910167.lua b/script/c56910167.lua index b0d4eee9..f463f07c 100644 --- a/script/c56910167.lua +++ b/script/c56910167.lua @@ -7,7 +7,7 @@ function c56910167.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(56910167,0)) e1:SetCategory(CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_PLAYER_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c56916805.lua b/script/c56916805.lua index 89f73b72..88880097 100644 --- a/script/c56916805.lua +++ b/script/c56916805.lua @@ -1,38 +1,38 @@ ---エナジー・ドレイン -function c56916805.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(c56916805.condition) - e1:SetTarget(c56916805.target) - e1:SetOperation(c56916805.activate) - c:RegisterEffect(e1) -end -function c56916805.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c56916805.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,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 c56916805.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local val=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)*200 - if val~=0 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+PHASE_END) - e1:SetValue(val) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - end -end +--エナジー・ドレイン +function c56916805.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(c56916805.condition) + e1:SetTarget(c56916805.target) + e1:SetOperation(c56916805.activate) + c:RegisterEffect(e1) +end +function c56916805.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c56916805.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,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 c56916805.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local val=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)*200 + if val~=0 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+PHASE_END) + e1:SetValue(val) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c56948373.lua b/script/c56948373.lua index 9f06b540..c23f09ad 100644 --- a/script/c56948373.lua +++ b/script/c56948373.lua @@ -1,26 +1,11 @@ --呪魂の仮面 function c56948373.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(c56948373.target) - e1:SetOperation(c56948373.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk,def local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_CANNOT_ATTACK) 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) --damage local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(56948373,0)) @@ -34,19 +19,6 @@ function c56948373.initial_effect(c) e4:SetOperation(c56948373.damop) c:RegisterEffect(e4) end -function c56948373.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 c56948373.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 c56948373.damcon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp and e:GetHandler():GetEquipTarget()~=nil end diff --git a/script/c56993276.lua b/script/c56993276.lua index 6172718a..b483f585 100644 --- a/script/c56993276.lua +++ b/script/c56993276.lua @@ -1,38 +1,38 @@ ---エレキャンセル -function c56993276.initial_effect(c) - --Activate(summon) - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SUMMON) - e1:SetCondition(c56993276.condition) - e1:SetCost(c56993276.cost) - e1:SetTarget(c56993276.target) - e1:SetOperation(c56993276.activate) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON) - c:RegisterEffect(e2) -end -function c56993276.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentChain()==0 and eg:IsExists(Card.IsControler,1,nil,1-tp) -end -function c56993276.cfilter(c) - return c:IsSetCard(0xe) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() -end -function c56993276.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end - if chk==0 then return Duel.IsExistingMatchingCard(c56993276.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c56993276.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) -end -function c56993276.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=eg:Filter(Card.IsControler,nil,1-tp) - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c56993276.activate(e,tp,eg,ep,ev,re,r,rp) - local g=eg:Filter(Card.IsControler,nil,1-tp) - Duel.NegateSummon(g) - Duel.Destroy(g,REASON_EFFECT) -end +--エレキャンセル +function c56993276.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON) + e1:SetCondition(c56993276.condition) + e1:SetCost(c56993276.cost) + e1:SetTarget(c56993276.target) + e1:SetOperation(c56993276.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON) + c:RegisterEffect(e2) +end +function c56993276.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 and eg:IsExists(Card.IsControler,1,nil,1-tp) +end +function c56993276.cfilter(c) + return c:IsSetCard(0xe) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c56993276.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end + if chk==0 then return Duel.IsExistingMatchingCard(c56993276.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c56993276.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) +end +function c56993276.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=eg:Filter(Card.IsControler,nil,1-tp) + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c56993276.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsControler,nil,1-tp) + Duel.NegateSummon(g) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c57006589.lua b/script/c57006589.lua index 906bc635..e905e4e7 100644 --- a/script/c57006589.lua +++ b/script/c57006589.lua @@ -1,31 +1,31 @@ ---エネルギー吸収板 -function c57006589.initial_effect(c) - --reflect - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c57006589.condition) - e1:SetOperation(c57006589.operation) - c:RegisterEffect(e1) -end -function c57006589.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) -end -function c57006589.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_REVERSE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetLabel(cid) - e1:SetValue(c57006589.refcon) - e1:SetReset(RESET_CHAIN) - Duel.RegisterEffect(e1,tp) -end -function c57006589.refcon(e,re,r,rp,rc) - local cc=Duel.GetCurrentChain() - if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end - local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) - return cid==e:GetLabel() -end +--エネルギー吸収板 +function c57006589.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c57006589.condition) + e1:SetOperation(c57006589.operation) + c:RegisterEffect(e1) +end +function c57006589.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c57006589.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_REVERSE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c57006589.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c57006589.refcon(e,re,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c57031794.lua b/script/c57031794.lua index 4e44728f..b865bf9a 100644 --- a/script/c57031794.lua +++ b/script/c57031794.lua @@ -13,7 +13,7 @@ function c57031794.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_DESTROY) e2:SetDescription(aux.Stringid(57031794,0)) - e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG2_XMDETACH)EFFECT_TYPE_IGNITION) e2:SetProperty(EFFECT_FLAG_CARD_TARGET) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) diff --git a/script/c57043117.lua b/script/c57043117.lua index 8453d629..da39726f 100644 --- a/script/c57043117.lua +++ b/script/c57043117.lua @@ -15,7 +15,7 @@ function c57043117.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_DEFCHANGE) e2:SetDescription(aux.Stringid(57043117,0)) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) e2:SetCode(EVENT_FREE_CHAIN) diff --git a/script/c57062206.lua b/script/c57062206.lua index 1dc1e49a..e819a855 100644 --- a/script/c57062206.lua +++ b/script/c57062206.lua @@ -16,7 +16,7 @@ function c57062206.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c57062206.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c57062206.sptg) e2:SetOperation(c57062206.spop) c:RegisterEffect(e2) @@ -25,14 +25,14 @@ function c57062206.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_UPDATE_ATTACK) e3:SetValue(2500) - e3:SetCondition(c57062206.uncon) + e3:SetCondition(aux.IsUnionState) c:RegisterEffect(e3) --destroy sub local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_EQUIP) e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e5:SetCondition(c57062206.uncon) + e5:SetCondition(aux.IsUnionState) e5:SetValue(c57062206.repval) c:RegisterEffect(e5) --eqlimit @@ -43,9 +43,7 @@ function c57062206.initial_effect(c) e6:SetValue(c57062206.eqlimit) c:RegisterEffect(e6) end -function c57062206.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c57062206.old_union=true function c57062206.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -73,7 +71,7 @@ function c57062206.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c57062206.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(57062206)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c57069605.lua b/script/c57069605.lua index 5c31b690..0ee14dab 100644 --- a/script/c57069605.lua +++ b/script/c57069605.lua @@ -1,32 +1,32 @@ ---魂の氷結 -function c57069605.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(c57069605.condition) - e1:SetOperation(c57069605.activate) - c:RegisterEffect(e1) -end -function c57069605.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetLP(tp)+2000<=Duel.GetLP(1-tp) -end -function c57069605.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SKIP_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - if Duel.GetTurnPlayer()~=tp and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) then - e1:SetLabel(Duel.GetTurnCount()) - e1:SetCondition(c57069605.skipcon) - e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,1) - end - Duel.RegisterEffect(e1,tp) -end -function c57069605.skipcon(e) - return Duel.GetTurnCount()~=e:GetLabel() -end +--魂の氷結 +function c57069605.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(c57069605.condition) + e1:SetOperation(c57069605.activate) + c:RegisterEffect(e1) +end +function c57069605.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)+2000<=Duel.GetLP(1-tp) +end +function c57069605.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + if Duel.GetTurnPlayer()~=tp and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c57069605.skipcon) + e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,1) + end + Duel.RegisterEffect(e1,tp) +end +function c57069605.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c57139487.lua b/script/c57139487.lua index 254bfa11..757a4928 100644 --- a/script/c57139487.lua +++ b/script/c57139487.lua @@ -1,50 +1,50 @@ ---連鎖除外 -function c57139487.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c57139487.target) - e1:SetOperation(c57139487.activate) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c57139487.filter(c) - return c:IsFaceup() and c:GetAttack()<=1000 and c:IsAbleToRemove() -end -function c57139487.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return eg:IsExists(c57139487.filter,1,nil) end - local g=eg:Filter(c57139487.filter,nil) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) -end -function c57139487.efilter(c,e) - return c:IsFaceup() and c:IsAttackBelow(1000) and c:IsRelateToEffect(e) -end -function c57139487.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(c57139487.efilter,nil,e) - Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) - local rg=Group.CreateGroup() - local tc=sg:GetFirst() - while tc do - if tc:IsLocation(LOCATION_REMOVED) then - local tpe=tc:GetType() - if bit.band(tpe,TYPE_TOKEN)==0 then - local g1=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_DECK+LOCATION_HAND,nil,tc:GetCode()) - rg:Merge(g1) - end - end - tc=sg:GetNext() - end - if rg:GetCount()>0 then - Duel.BreakEffect() - Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) - end -end +--連鎖除外 +function c57139487.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c57139487.target) + e1:SetOperation(c57139487.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c57139487.filter(c) + return c:IsFaceup() and c:GetAttack()<=1000 and c:IsAbleToRemove() +end +function c57139487.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return eg:IsExists(c57139487.filter,1,nil) end + local g=eg:Filter(c57139487.filter,nil) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c57139487.efilter(c,e) + return c:IsFaceup() and c:IsAttackBelow(1000) and c:IsRelateToEffect(e) +end +function c57139487.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(c57139487.efilter,nil,e) + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) + local rg=Group.CreateGroup() + local tc=sg:GetFirst() + while tc do + if tc:IsLocation(LOCATION_REMOVED) then + local tpe=tc:GetType() + if bit.band(tpe,TYPE_TOKEN)==0 then + local g1=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_DECK+LOCATION_HAND,nil,tc:GetCode()) + rg:Merge(g1) + end + end + tc=sg:GetNext() + end + if rg:GetCount()>0 then + Duel.BreakEffect() + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c57143342.lua b/script/c57143342.lua index fc6625d9..89939295 100644 --- a/script/c57143342.lua +++ b/script/c57143342.lua @@ -1,75 +1,75 @@ ---彼岸の悪鬼 ガトルホッグ -function c57143342.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c57143342.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(57143342,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,57143342) - e2:SetCondition(c57143342.sscon) - e2:SetTarget(c57143342.sstg) - e2:SetOperation(c57143342.ssop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(57143342,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1,57143342) - e3:SetTarget(c57143342.sptg) - e3:SetOperation(c57143342.spop) - c:RegisterEffect(e3) -end -function c57143342.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c57143342.sdcon(e) - return Duel.IsExistingMatchingCard(c57143342.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c57143342.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c57143342.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c57143342.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c57143342.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c57143342.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c57143342.spfilter(c,e,tp) - return c:IsSetCard(0xb1) and not c:IsCode(57143342) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c57143342.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c57143342.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c57143342.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c57143342.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c57143342.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--彼岸の悪鬼 ガトルホッグ +function c57143342.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c57143342.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(57143342,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,57143342) + e2:SetCondition(c57143342.sscon) + e2:SetTarget(c57143342.sstg) + e2:SetOperation(c57143342.ssop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(57143342,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,57143342) + e3:SetTarget(c57143342.sptg) + e3:SetOperation(c57143342.spop) + c:RegisterEffect(e3) +end +function c57143342.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c57143342.sdcon(e) + return Duel.IsExistingMatchingCard(c57143342.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c57143342.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c57143342.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c57143342.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c57143342.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c57143342.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c57143342.spfilter(c,e,tp) + return c:IsSetCard(0xb1) and not c:IsCode(57143342) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c57143342.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c57143342.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c57143342.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c57143342.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c57143342.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c57201737.lua b/script/c57201737.lua index ab40fb02..63160e20 100644 --- a/script/c57201737.lua +++ b/script/c57201737.lua @@ -1,44 +1,44 @@ ---ガオドレイクのタテガミ -function c57201737.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c57201737.target) - e1:SetOperation(c57201737.activate) - c:RegisterEffect(e1) -end -function c57201737.filter(c) - return c:IsFaceup() and c:IsSetCard(0x2a) -end -function c57201737.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c57201737.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c57201737.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c57201737.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c57201737.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(3000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE_EFFECT) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end -end +--ガオドレイクのタテガミ +function c57201737.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c57201737.target) + e1:SetOperation(c57201737.activate) + c:RegisterEffect(e1) +end +function c57201737.filter(c) + return c:IsFaceup() and c:IsSetCard(0x2a) +end +function c57201737.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c57201737.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c57201737.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c57201737.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c57201737.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(3000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end diff --git a/script/c57274196.lua b/script/c57274196.lua index ad8efbb0..9e8b212b 100644 --- a/script/c57274196.lua +++ b/script/c57274196.lua @@ -1,36 +1,36 @@ ---未来王の予言 -function c57274196.initial_effect(c) - --chain attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(c57274196.condition) - e1:SetCost(c57274196.cost) - e1:SetOperation(c57274196.operation) - c:RegisterEffect(e1) -end -function c57274196.condition(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - return tc:IsControler(tp) and tc:IsRace(RACE_SPELLCASTER) and tc:IsChainAttackable() and tc:IsStatus(STATUS_OPPO_BATTLE) -end -function c57274196.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 - and Duel.GetActivityCount(tp,ACTIVITY_FLIPSUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetLabelObject(e) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_SUMMON) - Duel.RegisterEffect(e2,tp) - local e3=e1:Clone() - e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - Duel.RegisterEffect(e3,tp) -end -function c57274196.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--未来王の予言 +function c57274196.initial_effect(c) + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c57274196.condition) + e1:SetCost(c57274196.cost) + e1:SetOperation(c57274196.operation) + c:RegisterEffect(e1) +end +function c57274196.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsRace(RACE_SPELLCASTER) and tc:IsChainAttackable() and tc:IsStatus(STATUS_OPPO_BATTLE) +end +function c57274196.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 + and Duel.GetActivityCount(tp,ACTIVITY_FLIPSUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetLabelObject(e) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + Duel.RegisterEffect(e3,tp) +end +function c57274196.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c57288064.lua b/script/c57288064.lua index b37cab42..7bd60940 100644 --- a/script/c57288064.lua +++ b/script/c57288064.lua @@ -1,70 +1,70 @@ ---刀神-不知火 -function c57288064.initial_effect(c) - c:SetSPSummonOnce(57288064) - --synchro summon - aux.AddSynchroProcedure(c,c57288064.synfilter,aux.NonTuner(c57288064.synfilter),1) - c:EnableReviveLimit() - --pos - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(57288064,0)) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_POSITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c57288064.postg) - e1:SetOperation(c57288064.posop) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(57288064,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_REMOVE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e2:SetTarget(c57288064.target) - e2:SetOperation(c57288064.operation) - c:RegisterEffect(e2) -end -function c57288064.synfilter(c) - return c:IsRace(RACE_ZOMBIE) -end -function c57288064.filter(c,tp) - local atk=c:GetAttack() - return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and atk>=0 and c:IsAbleToDeck() - and Duel.IsExistingMatchingCard(c57288064.posfilter,tp,0,LOCATION_MZONE,1,nil,atk) -end -function c57288064.posfilter(c,atk) - return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAttackBelow(atk) -end -function c57288064.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c57288064.filter(chkc,tp) end - if chk==0 then return Duel.IsExistingTarget(c57288064.filter,tp,LOCATION_REMOVED,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c57288064.filter,tp,LOCATION_REMOVED,0,1,1,nil,tp) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) -end -function c57288064.posop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 then - local g=Duel.GetMatchingGroup(c57288064.posfilter,tp,0,LOCATION_MZONE,nil,tc:GetAttack()) - Duel.ChangePosition(g,POS_FACEUP_DEFENSE) - end -end -function c57288064.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c57288064.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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) - e1:SetValue(-500) - tc:RegisterEffect(e1) - end -end +--刀神-不知火 +function c57288064.initial_effect(c) + c:SetSPSummonOnce(57288064) + --synchro summon + aux.AddSynchroProcedure(c,c57288064.synfilter,aux.NonTuner(c57288064.synfilter),1) + c:EnableReviveLimit() + --pos + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(57288064,0)) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c57288064.postg) + e1:SetOperation(c57288064.posop) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(57288064,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_REMOVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetTarget(c57288064.target) + e2:SetOperation(c57288064.operation) + c:RegisterEffect(e2) +end +function c57288064.synfilter(c) + return c:IsRace(RACE_ZOMBIE) +end +function c57288064.filter(c,tp) + local atk=c:GetAttack() + return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and atk>=0 and c:IsAbleToDeck() + and Duel.IsExistingMatchingCard(c57288064.posfilter,tp,0,LOCATION_MZONE,1,nil,atk) +end +function c57288064.posfilter(c,atk) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAttackBelow(atk) +end +function c57288064.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c57288064.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c57288064.filter,tp,LOCATION_REMOVED,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c57288064.filter,tp,LOCATION_REMOVED,0,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c57288064.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 then + local g=Duel.GetMatchingGroup(c57288064.posfilter,tp,0,LOCATION_MZONE,nil,tc:GetAttack()) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + end +end +function c57288064.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c57288064.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(-500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c57314798.lua b/script/c57314798.lua index a8406ceb..cf63789e 100644 --- a/script/c57314798.lua +++ b/script/c57314798.lua @@ -6,7 +6,7 @@ function c57314798.initial_effect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetRange(LOCATION_EXTRA) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCondition(c57314798.xyzcon) e1:SetOperation(c57314798.xyzop) e1:SetValue(SUMMON_TYPE_XYZ) @@ -45,58 +45,187 @@ function c57314798.initial_effect(c) c:RegisterEffect(e4) end c57314798.xyz_number=100 -function c57314798.mfilter(c,xyzc) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) +function c57314798.xyzm12(c,xyz,tp) + return c57314798.mfilter1(c,xyz,tp) or c57314798.mfilter2(c,xyz,tp) end -function c57314798.xyzfilter1(c,g) - return g:IsExists(c57314798.xyzfilter2,1,c,c:GetRank(),c:GetCode()) +function c57314798.mfilter1(c,xyzc,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) + and (c:IsControler(tp) or c:IsHasEffect(EFFECT_XYZ_MATERIAL)) end -function c57314798.xyzfilter2(c,rk,code) - return c:GetRank()==rk and c:IsCode(code) +function c57314798.mfilter2(c,xyzc,tp) + if c:IsLocation(LOCATION_GRAVE) then + return c:IsHasEffect(511002793) and c:IsType(TYPE_XYZ) and not c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) + else + return c:IsHasEffect(511002116) + end +end +function c57314798.xyzfilter1(c,tp,mg,xyz,matg,ct,sg,min,matct,nodoub) + local tg + local g=mg:Clone() + if matg==nil or matg:GetCount()==0 then tg=Group.CreateGroup() else tg=matg:Clone() end + g:RemoveCard(c) + tg:AddCard(c) + local tsg=false + if sg then + tsg=sg:Clone() + tsg:RemoveCard(c) + end + local gg=tg:Filter(aux.ValidXyzMaterial,nil) + if gg:IsExists(aux.TuneMagXyzFilter,1,nil,gg,tp) then return false end + local ctc=ct+1 + local matct2=matct + if not c:IsHasEffect(511002116) and min then + matct2=matct+1 + end + if min and matct2>min then return false end + if (not min or matct2==min) and ctc>=2 and ctc<=2 then return tg:IsExists(aux.XyzFCheck,1,nil,tp) end + if c:IsType(TYPE_XYZ) then g=g:Filter(c57314798.xyzfilter2,nil,c:GetCode(),c:GetRank()) end + if ctc>2 then return false end + local res2=false + local eqg=c:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + if not sg then + g:Merge(eqg) + end + local isDouble=false + if not nodoub and c:IsHasEffect(511001225) and (not c.xyzlimit2 or c.xyzlimit2(xyz)) then + if ctc+1<=2 then + isDouble=true + res2=true + end + if (not min or matct2==min) and ctc+1>=2 and ctc+1<=2 then return tg:IsExists(aux.XyzFCheck,1,nil,tp) end + end + return g:IsExists(c57314798.xyzfilter1,1,nil,tp,g,xyz,tg,ctc,tsg,min,matct2,false) + or (res2 and g:IsExists(c57314798.xyzfilter1,1,nil,tp,g,xyz,tg,ctc+1,tsg,min,matct2,false)) +end +function c57314798.xyzfilter2(c,code,rk) + return (c:IsCode(code) and c:GetRank()==rk) or c:IsHasEffect(511002116) or c:IsHasEffect(511001175) end function c57314798.xyzcon(e,c,og,min,max) if c==nil then return true end local tp=c:GetControler() local mg=nil + local sg=false if og then - mg=og:Filter(c57314798.mfilter,nil,c) + mg=og:Filter(c57314798.xyzm12,nil,c,tp) + sg=mg:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) else - mg=Duel.GetMatchingGroup(c57314798.mfilter,tp,LOCATION_MZONE,0,nil,c) + mg=Duel.GetMatchingGroup(c57314798.mfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + local mg2=Duel.GetMatchingGroup(c57314798.mfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c,tp) + mg:Merge(mg2) end - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and (not min or min<=2 and max>=2) - and mg:IsExists(c57314798.xyzfilter1,1,nil,mg) + local minchk=min + if c:GetFlagEffect(999)~=0 then minchk=nil end + return mg:IsExists(c57314798.xyzfilter1,1,nil,tp,mg,c,nil,0,sg,minchk,0,false) end function c57314798.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) - local g=nil - local sg=Group.CreateGroup() if og and not min then - g=og - local tc=og:GetFirst() - while tc do - sg:Merge(tc:GetOverlayGroup()) - tc=og:GetNext() + if not og:IsExists(c57314798.xyzfilter1,1,nil,tp,og,c,nil,0,og,og:GetCount(),0,false) then + local matg=Group.CreateGroup() + local mg=og:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) + local ct=og:GetCount() + tog=og:Clone() + local tc=tog:GetFirst() + local matct=0 + local ct=0 + while tc do + local isDouble=false + if tc:IsHasEffect(511001225) and (not tc.xyzlimit2 or tc.xyzlimit2(c)) and ct+1<2 + and (not c57314798.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,true) or Duel.SelectYesNo(tp,65)) then + isDouble=true + end + ct=ct+1 + if isDouble then ct=ct+1 end + matct=matct+1 + mg:RemoveCard(tc) + matg:AddCard(tc) + tc=tog:GetNext() + end + while ct<2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg=mg:Select(tp,1,1,nil) + sg:GetFirst():RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + ct=ct+1 + mg:Sub(sg) + matg:Merge(sg) + end + matg:Remove(Card.IsHasEffect,nil,511002116) + matg:Remove(Card.IsHasEffect,nil,511002115) + local sg=Group.CreateGroup() + local tc=matg:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=g:GetNext() + end + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(g) + Duel.Overlay(c,g) + else + local sg=Group.CreateGroup() + local tc=og:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=og:GetNext() + end + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(og) + Duel.Overlay(c,og) end else - local mg=nil + local mg + local sg=false if og then - mg=og:Filter(c57314798.mfilter,nil,c) + mg=og:Filter(c57314798.xyzm12,nil,c,tp) + sg=mg:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) else - mg=Duel.GetMatchingGroup(c57314798.mfilter,tp,LOCATION_MZONE,0,nil,c) + mg=Duel.GetMatchingGroup(c57314798.xyzm12,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + local mg2=Duel.GetMatchingGroup(c57314798.mfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c,tp) + mg:Merge(mg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - g=mg:FilterSelect(tp,c57314798.xyzfilter1,1,1,nil,mg) - local tc1=g:GetFirst() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g2=mg:FilterSelect(tp,c57314798.xyzfilter2,1,1,tc1,tc1:GetRank(),tc1:GetCode()) - local tc2=g2:GetFirst() - g:Merge(g2) - sg:Merge(tc1:GetOverlayGroup()) - sg:Merge(tc2:GetOverlayGroup()) + local ct=0 + local matg=Group.CreateGroup() + while ct<2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=mg:FilterSelect(tp,c57314798.xyzfilter1,1,1,nil,tp,mg,c,matg,ct,sg,nil,nil,false) + local tc=g:GetFirst() + local isDouble=false + if tc:IsHasEffect(511001225) and (not tc.xyzlimit2 or tc.xyzlimit2(c)) and ct+1<2 + and (not c57314798.xyzfilter1(tc,tp,mg,c,matg,ct,sg,nil,nil,true) or Duel.SelectYesNo(tp,65)) then + isDouble=true + end + if isDouble then ct=ct+1 end + if not sg then + local eqg=tc:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + mg:Merge(eqg) + end + mg:RemoveCard(tc) + matg:AddCard(tc) + if tc:IsHasEffect(511002116) then + tc:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + end + if tc:IsType(TYPE_XYZ) then mg=mg:Filter(c57314798.xyzfilter2,nil,tc:GetCode(),tc:GetRank()) end + ct=ct+1 + end + matg:Remove(Card.IsHasEffect,nil,511002116) + matg:Remove(Card.IsHasEffect,nil,511002115) + local sg2=Group.CreateGroup() + local tc=matg:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg2:Merge(sg1) + tc=matg:GetNext() + end + Duel.SendtoGrave(sg2,REASON_RULE) + c:SetMaterial(matg) + Duel.Overlay(c,matg) end - Duel.SendtoGrave(sg,REASON_RULE) - c:SetMaterial(g) - Duel.Overlay(c,g) end function c57314798.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end diff --git a/script/c57355219.lua b/script/c57355219.lua index 5b29c75a..99d4e42e 100644 --- a/script/c57355219.lua +++ b/script/c57355219.lua @@ -1,94 +1,93 @@ ---パラドックス・フュージョン -function c57355219.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SPSUMMON) - e1:SetCondition(c57355219.condition1) - e1:SetCost(c57355219.cost) - e1:SetTarget(c57355219.target1) - e1:SetOperation(c57355219.activate1) - c:RegisterEffect(e1) - --Activate(effect) - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_ACTIVATE) - e2:SetCode(EVENT_CHAINING) - e2:SetCondition(c57355219.condition2) - e2:SetCost(c57355219.cost) - e2:SetTarget(c57355219.target2) - e2:SetOperation(c57355219.activate2) - c:RegisterEffect(e2) -end -function c57355219.condition1(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentChain()==0 -end -function c57355219.cfilter(c) - return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsAbleToRemoveAsCost() and not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c57355219.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c57355219.cfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c57355219.cfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST+REASON_TEMPORARY) - e:SetLabelObject(g:GetFirst()) -end -function c57355219.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) -end -function c57355219.activate1(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateSummon(eg) - Duel.Destroy(eg,REASON_EFFECT) - local tc=e:GetLabelObject() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - e1:SetLabelObject(tc) - e1:SetCountLimit(1) - e1:SetCondition(c57355219.retcon) - e1:SetOperation(c57355219.retop) - tc:SetTurnCounter(0) - Duel.RegisterEffect(e1,tp) -end -function c57355219.condition2(e,tp,eg,ep,ev,re,r,rp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c57355219.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c57355219.activate2(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end - local tc=e:GetLabelObject() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - e1:SetLabelObject(tc) - e1:SetCountLimit(1) - e1:SetCondition(c57355219.retcon) - e1:SetOperation(c57355219.retop) - tc:SetTurnCounter(0) - Duel.RegisterEffect(e1,tp) -end -function c57355219.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c57355219.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetLabelObject() - local ct=c:GetTurnCounter() - c:SetTurnCounter(ct+1) - if ct==1 then - Duel.ReturnToField(c,POS_FACEUP_ATTACK) - end -end +--パラドックス・フュージョン +function c57355219.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON) + e1:SetCondition(c57355219.condition1) + e1:SetCost(c57355219.cost) + e1:SetTarget(c57355219.target1) + e1:SetOperation(c57355219.activate1) + c:RegisterEffect(e1) + --Activate(effect) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c57355219.condition2) + e2:SetCost(c57355219.cost) + e2:SetTarget(c57355219.target2) + e2:SetOperation(c57355219.activate2) + c:RegisterEffect(e2) +end +function c57355219.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 +end +function c57355219.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsAbleToRemoveAsCost() and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c57355219.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c57355219.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c57355219.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST+REASON_TEMPORARY) + e:SetLabelObject(g:GetFirst()) +end +function c57355219.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c57355219.activate1(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) + local tc=e:GetLabelObject() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c57355219.retcon) + e1:SetOperation(c57355219.retop) + tc:SetTurnCounter(0) + Duel.RegisterEffect(e1,tp) +end +function c57355219.condition2(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c57355219.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c57355219.activate2(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + local tc=e:GetLabelObject() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c57355219.retcon) + e1:SetOperation(c57355219.retop) + tc:SetTurnCounter(0) + Duel.RegisterEffect(e1,tp) +end +function c57355219.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c57355219.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetLabelObject() + local ct=c:GetTurnCounter() + c:SetTurnCounter(ct+1) + if ct==1 then + Duel.ReturnToField(c,POS_FACEUP_ATTACK) + end +end diff --git a/script/c57470761.lua b/script/c57470761.lua index db21760b..4e172d12 100644 --- a/script/c57470761.lua +++ b/script/c57470761.lua @@ -1,113 +1,113 @@ ---タイラント・ウィング -function c57470761.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c57470761.condition) - e1:SetTarget(c57470761.target) - e1:SetOperation(c57470761.activate) - c:RegisterEffect(e1) -end -function c57470761.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c57470761.filter(c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) -end -function c57470761.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c57470761.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c57470761.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c57470761.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c57470761.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c57470761.eqlimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(400) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_EQUIP) - e4:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) - e4:SetValue(1) - e4:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e4) - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e7:SetCode(EVENT_BATTLE_START) - e7:SetRange(LOCATION_SZONE) - e7:SetOperation(c57470761.regop) - e7:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e7) - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e8:SetCode(EVENT_EQUIP) - e8:SetRange(LOCATION_SZONE) - e8:SetOperation(c57470761.resetop) - e8:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e8) - local e9=Effect.CreateEffect(c) - e9:SetCategory(CATEGORY_DESTROY) - e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e9:SetCode(EVENT_PHASE+PHASE_END) - e9:SetRange(LOCATION_SZONE) - e9:SetCountLimit(1) - e9:SetCondition(c57470761.descon) - e9:SetTarget(c57470761.destg) - e9:SetOperation(c57470761.desop) - e9:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e9) - end -end -function c57470761.eqlimit(e,c) - return c:IsRace(RACE_DRAGON) -end -function c57470761.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ec=c:GetEquipTarget() - if not ec:IsRelateToBattle() then return end - local bc=ec:GetBattleTarget() - if bc and bc:IsControler(1-tp) and Duel.GetAttacker()==ec then - c:RegisterFlagEffect(57470761,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - end -end -function c57470761.resetop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if eg:IsContains(c) then - c:ResetFlagEffect(57470761) - end -end -function c57470761.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(57470761)~=0 -end -function c57470761.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 c57470761.desop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.Destroy(e:GetHandler(),REASON_EFFECT) - end -end +--タイラント・ウィング +function c57470761.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c57470761.condition) + e1:SetTarget(c57470761.target) + e1:SetOperation(c57470761.activate) + c:RegisterEffect(e1) +end +function c57470761.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c57470761.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c57470761.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c57470761.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c57470761.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c57470761.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c57470761.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c57470761.eqlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(400) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e4:SetValue(1) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_BATTLE_START) + e7:SetRange(LOCATION_SZONE) + e7:SetOperation(c57470761.regop) + e7:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_EQUIP) + e8:SetRange(LOCATION_SZONE) + e8:SetOperation(c57470761.resetop) + e8:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e8) + local e9=Effect.CreateEffect(c) + e9:SetCategory(CATEGORY_DESTROY) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e9:SetCode(EVENT_PHASE+PHASE_END) + e9:SetRange(LOCATION_SZONE) + e9:SetCountLimit(1) + e9:SetCondition(c57470761.descon) + e9:SetTarget(c57470761.destg) + e9:SetOperation(c57470761.desop) + e9:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e9) + end +end +function c57470761.eqlimit(e,c) + return c:IsRace(RACE_DRAGON) +end +function c57470761.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetEquipTarget() + if not ec:IsRelateToBattle() then return end + local bc=ec:GetBattleTarget() + if bc and bc:IsControler(1-tp) and Duel.GetAttacker()==ec then + c:RegisterFlagEffect(57470761,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c57470761.resetop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if eg:IsContains(c) then + c:ResetFlagEffect(57470761) + end +end +function c57470761.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(57470761)~=0 +end +function c57470761.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 c57470761.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c57473560.lua b/script/c57473560.lua index 1d64fdba..e84b8bf1 100644 --- a/script/c57473560.lua +++ b/script/c57473560.lua @@ -1,78 +1,78 @@ ---ワイトプリンス -function c57473560.initial_effect(c) - --change code - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_GRAVE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(32274490) - c:RegisterEffect(e1) - --to grave - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(57473560,0)) - e2:SetCategory(CATEGORY_TOGRAVE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetTarget(c57473560.tgtg) - e2:SetOperation(c57473560.tgop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(57473560,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_GRAVE) - e3:SetCost(c57473560.spcost) - e3:SetTarget(c57473560.sptg) - e3:SetOperation(c57473560.spop) - c:RegisterEffect(e3) -end -function c57473560.tgfilter(c,code) - return c:IsCode(code) and c:IsAbleToGrave() -end -function c57473560.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c57473560.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,32274490) - and Duel.IsExistingMatchingCard(c57473560.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,40991587) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,tp,LOCATION_HAND+LOCATION_DECK) -end -function c57473560.tgop(e,tp,eg,ep,ev,re,r,rp) - local g1=Duel.GetMatchingGroup(c57473560.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,32274490) - local g2=Duel.GetMatchingGroup(c57473560.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,40991587) - if g1:GetCount()>0 and g2:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local sg1=g1:Select(tp,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local sg2=g2:Select(tp,1,1,nil) - sg1:Merge(sg2) - Duel.SendtoGrave(sg1,REASON_EFFECT) - end -end -function c57473560.cfilter(c) - return c:IsCode(32274490) and c:IsAbleToRemoveAsCost() -end -function c57473560.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() - and Duel.IsExistingMatchingCard(c57473560.cfilter,tp,LOCATION_GRAVE,0,2,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c57473560.cfilter,tp,LOCATION_GRAVE,0,2,2,e:GetHandler()) - g:AddCard(e:GetHandler()) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c57473560.spfilter(c,e,tp) - return c:IsCode(36021814) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c57473560.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c57473560.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c57473560.spop(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,c57473560.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--ワイトプリンス +function c57473560.initial_effect(c) + --change code + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(32274490) + c:RegisterEffect(e1) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(57473560,0)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetTarget(c57473560.tgtg) + e2:SetOperation(c57473560.tgop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(57473560,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c57473560.spcost) + e3:SetTarget(c57473560.sptg) + e3:SetOperation(c57473560.spop) + c:RegisterEffect(e3) +end +function c57473560.tgfilter(c,code) + return c:IsCode(code) and c:IsAbleToGrave() +end +function c57473560.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c57473560.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,32274490) + and Duel.IsExistingMatchingCard(c57473560.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,40991587) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,tp,LOCATION_HAND+LOCATION_DECK) +end +function c57473560.tgop(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c57473560.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,32274490) + local g2=Duel.GetMatchingGroup(c57473560.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,40991587) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.SendtoGrave(sg1,REASON_EFFECT) + end +end +function c57473560.cfilter(c) + return c:IsCode(32274490) and c:IsAbleToRemoveAsCost() +end +function c57473560.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c57473560.cfilter,tp,LOCATION_GRAVE,0,2,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c57473560.cfilter,tp,LOCATION_GRAVE,0,2,2,e:GetHandler()) + g:AddCard(e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c57473560.spfilter(c,e,tp) + return c:IsCode(36021814) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c57473560.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c57473560.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c57473560.spop(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,c57473560.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c57477163.lua b/script/c57477163.lua index fc093de2..b9f2714a 100644 --- a/script/c57477163.lua +++ b/script/c57477163.lua @@ -1,55 +1,55 @@ ---デストーイ・チェーン・シープ -function c57477163.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,61173621,aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),1,true,true) - --actlimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,1) - e1:SetValue(c57477163.aclimit) - e1:SetCondition(c57477163.actcon) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,57477163) - e2:SetCondition(c57477163.condition) - e2:SetTarget(c57477163.target) - e2:SetOperation(c57477163.operation) - c:RegisterEffect(e2) -end -function c57477163.aclimit(e,re,tp) - return not re:GetHandler():IsImmuneToEffect(e) -end -function c57477163.actcon(e) - return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() -end -function c57477163.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_BATTLE) - or rp~=tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp -end -function c57477163.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c57477163.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(800) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - Duel.SpecialSummonComplete() - end -end +--デストーイ・チェーン・シープ +function c57477163.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,61173621,aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),1,true,true) + --actlimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,1) + e1:SetValue(c57477163.aclimit) + e1:SetCondition(c57477163.actcon) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,57477163) + e2:SetCondition(c57477163.condition) + e2:SetTarget(c57477163.target) + e2:SetOperation(c57477163.operation) + c:RegisterEffect(e2) +end +function c57477163.aclimit(e,re,tp) + return not re:GetHandler():IsImmuneToEffect(e) +end +function c57477163.actcon(e) + return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() +end +function c57477163.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_BATTLE) + or rp~=tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp +end +function c57477163.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c57477163.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c575512.lua b/script/c575512.lua index 160d3201..19e158ef 100644 --- a/script/c575512.lua +++ b/script/c575512.lua @@ -1,82 +1,82 @@ ---PSYフレーム・サーキット -function c575512.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --synchro summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(575512,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_FZONE) - e2:SetCondition(c575512.sccon) - e2:SetTarget(c575512.sctg) - e2:SetOperation(c575512.scop) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(575512,1)) - e3:SetCategory(CATEGORY_ATKCHANGE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLE_START) - e3:SetRange(LOCATION_FZONE) - e3:SetCondition(c575512.atkcon) - e3:SetCost(c575512.atkcost) - e3:SetOperation(c575512.atkop) - c:RegisterEffect(e3) -end -function c575512.scfilter(c,tp) - return c:IsFaceup() and c:IsSetCard(0xc1) and c:IsControler(tp) -end -function c575512.sccon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c575512.scfilter,1,nil,tp) -end -function c575512.sctg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local mg=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_MZONE,0,nil,0xc1) - return Duel.IsExistingMatchingCard(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,1,nil,nil,mg) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c575512.scop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local mg=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_MZONE,0,nil,0xc1) - local g=Duel.GetMatchingGroup(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,nil,nil,mg) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,1,nil) - Duel.SynchroSummon(tp,sg:GetFirst(),nil,mg) - end -end -function c575512.atkcon(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttacker() - if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end - e:SetLabelObject(tc) - return tc and tc:IsControler(tp) and tc:IsSetCard(0xc1) and tc:IsRelateToBattle() and Duel.GetAttackTarget()~=nil -end -function c575512.atkfilter(c) - return c:IsSetCard(0xc1) and c:GetAttack()>0 and c:IsDiscardable() -end -function c575512.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c575512.atkfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) - local g=Duel.SelectMatchingCard(tp,c575512.atkfilter,tp,LOCATION_HAND,0,1,1,nil) - e:SetLabel(g:GetFirst():GetAttack()) - Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) -end -function c575512.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=e:GetLabelObject() - if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsControler(tp) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--PSYフレーム・サーキット +function c575512.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --synchro summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(575512,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c575512.sccon) + e2:SetTarget(c575512.sctg) + e2:SetOperation(c575512.scop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(575512,1)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_START) + e3:SetRange(LOCATION_FZONE) + e3:SetCondition(c575512.atkcon) + e3:SetCost(c575512.atkcost) + e3:SetOperation(c575512.atkop) + c:RegisterEffect(e3) +end +function c575512.scfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xc1) and c:IsControler(tp) +end +function c575512.sccon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c575512.scfilter,1,nil,tp) +end +function c575512.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_MZONE,0,nil,0xc1) + return Duel.IsExistingMatchingCard(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,1,nil,nil,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c575512.scop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local mg=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_MZONE,0,nil,0xc1) + local g=Duel.GetMatchingGroup(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,nil,nil,mg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SynchroSummon(tp,sg:GetFirst(),nil,mg) + end +end +function c575512.atkcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + e:SetLabelObject(tc) + return tc and tc:IsControler(tp) and tc:IsSetCard(0xc1) and tc:IsRelateToBattle() and Duel.GetAttackTarget()~=nil +end +function c575512.atkfilter(c) + return c:IsSetCard(0xc1) and c:GetAttack()>0 and c:IsDiscardable() +end +function c575512.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c575512.atkfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,c575512.atkfilter,tp,LOCATION_HAND,0,1,1,nil) + e:SetLabel(g:GetFirst():GetAttack()) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c575512.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=e:GetLabelObject() + if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsControler(tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c57594700.lua b/script/c57594700.lua index 27ec0118..b5ad20f2 100644 --- a/script/c57594700.lua +++ b/script/c57594700.lua @@ -1,42 +1,42 @@ ---幻奏の音姫マイスタリン・シューベルト -function c57594700.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x9b),2,true) - --remove - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE+CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_NO_TURN_RESET) - e1:SetRange(LOCATION_MZONE) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCountLimit(1) - e1:SetCondition(c57594700.condition) - e1:SetTarget(c57594700.target) - e1:SetOperation(c57594700.operation) - c:RegisterEffect(e1) -end -function c57594700.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c57594700.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,3,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) -end -function c57594700.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - local ct=Duel.Remove(g,POS_FACEUP,REASON_EFFECT) - local c=e:GetHandler() - if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetValue(ct*200) - c:RegisterEffect(e1) - end -end +--幻奏の音姫マイスタリン・シューベルト +function c57594700.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x9b),2,true) + --remove + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_NO_TURN_RESET) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCountLimit(1) + e1:SetCondition(c57594700.condition) + e1:SetTarget(c57594700.target) + e1:SetOperation(c57594700.operation) + c:RegisterEffect(e1) +end +function c57594700.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c57594700.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,3,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c57594700.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ct=Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local c=e:GetHandler() + if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(ct*200) + c:RegisterEffect(e1) + end +end diff --git a/script/c57707471.lua b/script/c57707471.lua index 3d0b49a3..00c67009 100644 --- a/script/c57707471.lua +++ b/script/c57707471.lua @@ -23,6 +23,7 @@ function c57707471.initial_effect(c) --destroy local e3=Effect.CreateEffect(c) e3:SetCategory(CATEGORY_DESTROY) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1) diff --git a/script/c57728570.lua b/script/c57728570.lua index d6c2c8cd..3597a2de 100644 --- a/script/c57728570.lua +++ b/script/c57728570.lua @@ -1,70 +1,70 @@ ---死のデッキ破壊ウイルス -function c57728570.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_TOHAND) - e1:SetCost(c57728570.cost) - e1:SetTarget(c57728570.target) - e1:SetOperation(c57728570.activate) - c:RegisterEffect(e1) -end -function c57728570.costfilter(c) - return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackBelow(1000) -end -function c57728570.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c57728570.costfilter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c57728570.costfilter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c57728570.filter(c) - return c:IsAttackAbove(1500) -end -function c57728570.hgfilter(c) - return not c:IsPublic() or c57728570.filter(c) -end -function c57728570.fgfilter(c) - return c:IsFacedown() or c57728570.filter(c) -end -function c57728570.tgfilter(c) - return ((c:IsLocation(LOCATION_HAND) and c:IsPublic()) or (c:IsLocation(LOCATION_MZONE) and c:IsFaceup())) and c57728570.filter(c) -end -function c57728570.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c57728570.hgfilter,tp,0,LOCATION_HAND,1,nil) - or Duel.IsExistingMatchingCard(c57728570.fgfilter,tp,0,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(c57728570.tgfilter,tp,0,LOCATION_MZONE+LOCATION_HAND,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c57728570.activate(e,tp,eg,ep,ev,re,r,rp) - local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE+LOCATION_HAND) - local ct=0 - if conf:GetCount()>0 then - Duel.ConfirmCards(tp,conf) - local dg=conf:Filter(c57728570.filter,nil) - ct=Duel.Destroy(dg,REASON_EFFECT) - Duel.ShuffleHand(1-tp) - end - local g=Duel.GetMatchingGroup(c57728570.filter,1-tp,LOCATION_DECK,0,nil) - if ct>0 and g:GetCount()>0 and Duel.SelectYesNo(1-tp,aux.Stringid(57728570,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_DESTROY) - local dg=g:Select(1-tp,1,3,nil) - Duel.Destroy(dg,REASON_EFFECT) - end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetValue(0) - e1:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e2,tp) - end -end +--死のデッキ破壊ウイルス +function c57728570.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_TOHAND) + e1:SetCost(c57728570.cost) + e1:SetTarget(c57728570.target) + e1:SetOperation(c57728570.activate) + c:RegisterEffect(e1) +end +function c57728570.costfilter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAttackBelow(1000) +end +function c57728570.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c57728570.costfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c57728570.costfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c57728570.filter(c) + return c:IsAttackAbove(1500) +end +function c57728570.hgfilter(c) + return not c:IsPublic() or c57728570.filter(c) +end +function c57728570.fgfilter(c) + return c:IsFacedown() or c57728570.filter(c) +end +function c57728570.tgfilter(c) + return ((c:IsLocation(LOCATION_HAND) and c:IsPublic()) or (c:IsLocation(LOCATION_MZONE) and c:IsFaceup())) and c57728570.filter(c) +end +function c57728570.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c57728570.hgfilter,tp,0,LOCATION_HAND,1,nil) + or Duel.IsExistingMatchingCard(c57728570.fgfilter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c57728570.tgfilter,tp,0,LOCATION_MZONE+LOCATION_HAND,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c57728570.activate(e,tp,eg,ep,ev,re,r,rp) + local conf=Duel.GetFieldGroup(tp,0,LOCATION_MZONE+LOCATION_HAND) + local ct=0 + if conf:GetCount()>0 then + Duel.ConfirmCards(tp,conf) + local dg=conf:Filter(c57728570.filter,nil) + ct=Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end + local g=Duel.GetMatchingGroup(c57728570.filter,1-tp,LOCATION_DECK,0,nil) + if ct>0 and g:GetCount()>0 and Duel.SelectYesNo(1-tp,aux.Stringid(57728570,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_DESTROY) + local dg=g:Select(1-tp,1,3,nil) + Duel.Destroy(dg,REASON_EFFECT) + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(0) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e2,tp) + end +end diff --git a/script/c57734012.lua b/script/c57734012.lua index 4974bc69..75173443 100644 --- a/script/c57734012.lua +++ b/script/c57734012.lua @@ -1,83 +1,83 @@ ---RUM-七皇の剣 -function c57734012.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_TO_HAND) - e1:SetCondition(c57734012.regcon) - e1:SetOperation(c57734012.regop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_ACTIVATE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCondition(c57734012.condition) - e2:SetCost(c57734012.cost) - e2:SetTarget(c57734012.target) - e2:SetOperation(c57734012.activate) - c:RegisterEffect(e2) -end -function c57734012.regcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return Duel.GetFlagEffect(tp,57734012)==0 and Duel.GetCurrentPhase()==PHASE_DRAW - and c:IsReason(REASON_DRAW) and c:IsReason(REASON_RULE) -end -function c57734012.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.SelectYesNo(tp,aux.Stringid(57734012,0)) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_PUBLIC) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_MAIN1) - c:RegisterEffect(e1) - c:RegisterFlagEffect(57734012,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_MAIN1,0,1) - end -end -function c57734012.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 and not Duel.CheckPhaseActivity() -end -function c57734012.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(57734012)~=0 end -end -function c57734012.filter1(c,e,tp) - local m=_G["c"..c:GetCode()] - if not m then return false end - local no=m.xyz_number - local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] - return no and no>=101 and no<=107 and c:IsSetCard(0x48) and not c:IsSetCard(0x1048) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and (not ect or ect>1 or c:IsLocation(LOCATION_GRAVE)) - and Duel.IsExistingMatchingCard(c57734012.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,no) -end -function c57734012.filter2(c,e,tp,mc,no) - return c.xyz_number==no and c:IsSetCard(0x1048) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c57734012.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) - and Duel.GetFlagEffect(tp,57734012)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c57734012.filter1,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_EXTRA) -end -function c57734012.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,57734012)~=0 then return end - Duel.RegisterFlagEffect(tp,57734012,0,0,0) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectMatchingCard(tp,c57734012.filter1,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil,e,tp) - local tc1=g1:GetFirst() - if tc1 and not tc1:IsHasEffect(EFFECT_NECRO_VALLEY) and Duel.SpecialSummon(tc1,0,tp,tp,false,false,POS_FACEUP)~=0 then - local m=_G["c"..tc1:GetCode()] - if not m then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectMatchingCard(tp,c57734012.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc1,m.xyz_number) - local tc2=g2:GetFirst() - if tc2 then - Duel.BreakEffect() - tc2:SetMaterial(g1) - Duel.Overlay(tc2,g1) - Duel.SpecialSummon(tc2,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - tc2:CompleteProcedure() - end - end -end +--RUM-七皇の剣 +function c57734012.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c57734012.regcon) + e1:SetOperation(c57734012.regop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c57734012.condition) + e2:SetCost(c57734012.cost) + e2:SetTarget(c57734012.target) + e2:SetOperation(c57734012.activate) + c:RegisterEffect(e2) +end +function c57734012.regcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return Duel.GetFlagEffect(tp,57734012)==0 and Duel.GetCurrentPhase()==PHASE_DRAW + and c:IsReason(REASON_DRAW) and c:IsReason(REASON_RULE) +end +function c57734012.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.SelectYesNo(tp,aux.Stringid(57734012,0)) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PUBLIC) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_MAIN1) + c:RegisterEffect(e1) + c:RegisterFlagEffect(57734012,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_MAIN1,EFFECT_FLAG_CLIENT_HINT,1,0,66) + end +end +function c57734012.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 and not Duel.CheckPhaseActivity() +end +function c57734012.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(57734012)~=0 end +end +function c57734012.filter1(c,e,tp) + local m=_G["c"..c:GetCode()] + if not m then return false end + local no=m.xyz_number + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + return no and no>=101 and no<=107 and c:IsSetCard(0x48) and not c:IsSetCard(0x1048) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and (not ect or ect>1 or c:IsLocation(LOCATION_GRAVE)) + and Duel.IsExistingMatchingCard(c57734012.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,no) +end +function c57734012.filter2(c,e,tp,mc,no) + return c.xyz_number==no and c:IsSetCard(0x1048) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c57734012.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetFlagEffect(tp,57734012)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c57734012.filter1,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_EXTRA) +end +function c57734012.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,57734012)~=0 then return end + Duel.RegisterFlagEffect(tp,57734012,0,0,0) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c57734012.filter1),tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc1=g1:GetFirst() + if tc1 and Duel.SpecialSummon(tc1,0,tp,tp,false,false,POS_FACEUP)~=0 then + local m=_G["c"..tc1:GetCode()] + if not m then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c57734012.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc1,m.xyz_number) + local tc2=g2:GetFirst() + if tc2 then + Duel.BreakEffect() + tc2:SetMaterial(g1) + Duel.Overlay(tc2,g1) + Duel.SpecialSummon(tc2,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + tc2:CompleteProcedure() + end + end +end diff --git a/script/c57761191.lua b/script/c57761191.lua new file mode 100644 index 00000000..2af1dc7f --- /dev/null +++ b/script/c57761191.lua @@ -0,0 +1,127 @@ +--真竜機兵ダースメタトロン +--True Draco Da'at Metatron, the Mechsoldier +--Script by nekrozar +function c57761191.initial_effect(c) + --summon with 3 tribute + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e1:SetCondition(c57761191.ttcon) + e1:SetOperation(c57761191.ttop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_LIMIT_SET_PROC) + c:RegisterEffect(e2) + --tribute check + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MATERIAL_CHECK) + e3:SetValue(c57761191.valcheck) + c:RegisterEffect(e3) + --immune + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c57761191.efilter) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(57761191,1)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_DELAY) + e5:SetCode(EVENT_DESTROYED) + e5:SetCondition(c57761191.spcon) + e5:SetTarget(c57761191.sptg) + e5:SetOperation(c57761191.spop) + c:RegisterEffect(e5) +end +function c57761191.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and not c:IsType(TYPE_MONSTER) and c:IsReleasable() +end +function c57761191.ttcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c57761191.otfilter,tp,LOCATION_ONFIELD,0,nil) + return (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and mg:GetCount()>=3) + or ((not Duel.CheckTribute or Duel.CheckTribute(c,1)) and mg:GetCount()>=2) + or ((not Duel.CheckTribute or Duel.CheckTribute(c,2)) and mg:GetCount()>=1) + or ((not Duel.CheckTribute or Duel.CheckTribute(c,3))) +end +function c57761191.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c57761191.otfilter,tp,LOCATION_ONFIELD,0,nil) + local ct=3 + local g=Group.CreateGroup() + if Duel.GetTributeCount(c)0 and Duel.GetTributeCount(c)>=ct and mg:GetCount()>0 + and Duel.SelectYesNo(tp,aux.Stringid(57761191,0)) then + local ect=ct + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then ect=ect-1 end + ect=math.min(mg:GetCount(),ect) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g3=mg:Select(tp,1,ect,nil) + g:Merge(g3) + ct=ct-g3:GetCount() + end + if ct>0 then + local g4=Duel.SelectTribute(tp,c,ct,ct) + g:Merge(g4) + end + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c57761191.valcheck(e,c) + local g=c:GetMaterial() + local typ=0 + local tc=g:GetFirst() + while tc do + typ=bit.bor(typ,bit.band(tc:GetOriginalType(),0x7)) + tc=g:GetNext() + end + e:SetLabel(typ) + if bit.band(typ,TYPE_MONSTER)~=0 then + c:RegisterFlagEffect(0,RESET_EVENT+0xfe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(57761191,2)) + end + if bit.band(typ,TYPE_SPELL)~=0 then + c:RegisterFlagEffect(0,RESET_EVENT+0xfe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(57761191,3)) + end + if bit.band(typ,TYPE_TRAP)~=0 then + c:RegisterFlagEffect(0,RESET_EVENT+0xfe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(57761191,4)) + end +end +function c57761191.efilter(e,te) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE + and te:IsActiveType(e:GetLabelObject():GetLabel()) and te:GetOwner()~=e:GetOwner() +end +function c57761191.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return rp==1-tp and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c57761191.spfilter(c,e,tp) + return c:IsAttribute(0xf) and c:IsType(0x802040) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c57761191.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c57761191.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c57761191.spop(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,c57761191.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c57777714.lua b/script/c57777714.lua index 7e108d8f..11792178 100644 --- a/script/c57777714.lua +++ b/script/c57777714.lua @@ -1,64 +1,73 @@ ---英霊獣使い-セフィラムピリカ -function c57777714.initial_effect(c) - c:SetSPSummonOnce(57777714) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c57777714.splimit) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetTarget(c57777714.target) - e3:SetOperation(c57777714.operation) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetCondition(c57777714.condition) - c:RegisterEffect(e4) -end -function c57777714.splimit(e,c,sump,sumtype,sumpos,targetp) - if c:IsSetCard(0xb5) or c:IsSetCard(0xc4) then return false end - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c57777714.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM -end -function c57777714.filter(c,e,tp) - return (c:IsSetCard(0xb5) or c:IsSetCard(0xc4)) and not c:IsCode(57777714) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c57777714.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c57777714.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c57777714.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c57777714.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c57777714.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetOperation(c57777714.desop) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end -function c57777714.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--英霊獣使い-セフィラムピリカ +function c57777714.initial_effect(c) + c:SetSPSummonOnce(57777714) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c57777714.splimit) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetTarget(c57777714.target) + e3:SetOperation(c57777714.operation) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c57777714.condition) + c:RegisterEffect(e4) +end +function c57777714.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0xb5) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c57777714.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c57777714.filter(c,e,tp) + return (c:IsSetCard(0xb5) or c:IsSetCard(0xc4)) and not c:IsCode(57777714) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c57777714.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c57777714.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c57777714.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c57777714.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c57777714.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(57777714,RESET_EVENT+0x1fe0000,0,1,fid) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c57777714.descon) + e1:SetOperation(c57777714.desop) + Duel.RegisterEffect(e1,tp) + end +end +function c57777714.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(57777714)~=e:GetLabel() then + e:Reset() + return false + else return true end +end +function c57777714.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) +end diff --git a/script/c57784563.lua b/script/c57784563.lua index b58c87fc..a0098c9c 100644 --- a/script/c57784563.lua +++ b/script/c57784563.lua @@ -1,69 +1,69 @@ ---闇魔界の戦士長 ダークソード -function c57784563.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(57784563,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c57784563.eqcon) - e1:SetCost(c57784563.eqcost) - e1:SetTarget(c57784563.eqtg) - e1:SetOperation(c57784563.eqop) - c:RegisterEffect(e1) -end -function c57784563.eqcon(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetLabelObject() - return ec==nil or ec:GetFlagEffect(57784563)==0 -end -function c57784563.cfilter(c) - return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToRemoveAsCost() -end -function c57784563.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c57784563.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c57784563.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c57784563.filter(c) - return c:IsFaceup() and c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToChangeControler() -end -function c57784563.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c57784563.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c57784563.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c57784563.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c57784563.eqlimit(e,c) - return e:GetOwner()==c -end -function c57784563.eqop(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:IsType(TYPE_MONSTER) then - if c:IsFaceup() and c:IsRelateToEffect(e) then - if not Duel.Equip(tp,tc,c,false) then return end - --Add Equip limit - tc:RegisterFlagEffect(57784563,RESET_EVENT+0x1fe0000,0,0) - e:SetLabelObject(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c57784563.eqlimit) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(1) - tc:RegisterEffect(e2) - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end +--闇魔界の戦士長 ダークソード +function c57784563.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(57784563,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c57784563.eqcon) + e1:SetCost(c57784563.eqcost) + e1:SetTarget(c57784563.eqtg) + e1:SetOperation(c57784563.eqop) + c:RegisterEffect(e1) +end +function c57784563.eqcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetLabelObject() + return ec==nil or ec:GetFlagEffect(57784563)==0 +end +function c57784563.cfilter(c) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToRemoveAsCost() +end +function c57784563.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c57784563.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c57784563.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c57784563.filter(c) + return c:IsFaceup() and c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToChangeControler() +end +function c57784563.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c57784563.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c57784563.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c57784563.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c57784563.eqlimit(e,c) + return e:GetOwner()==c +end +function c57784563.eqop(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:IsType(TYPE_MONSTER) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + tc:RegisterFlagEffect(57784563,RESET_EVENT+0x1fe0000,0,0) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c57784563.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(1) + tc:RegisterEffect(e2) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end diff --git a/script/c57793869.lua b/script/c57793869.lua index 36bc4812..fc876555 100644 --- a/script/c57793869.lua +++ b/script/c57793869.lua @@ -49,9 +49,9 @@ function c57793869.initial_effect(c) e7:SetOperation(c57793869.desop) c:RegisterEffect(e7) end -function c57793869.ttcon(e,c) +function c57793869.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c57793869.ttop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,3,3) diff --git a/script/c57815601.lua b/script/c57815601.lua index 2fd748ba..ca712f40 100644 --- a/script/c57815601.lua +++ b/script/c57815601.lua @@ -1,61 +1,61 @@ ---霊獣の騎襲 -function c57815601.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,57815601+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c57815601.target) - e1:SetOperation(c57815601.activate) - c:RegisterEffect(e1) -end -function c57815601.filter1(c,e,tp) - return c:IsSetCard(0x10b5) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingTarget(c57815601.filter2,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,c,e,tp) -end -function c57815601.filter2(c,e,tp) - return c:IsSetCard(0x20b5) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c57815601.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c57815601.filter1,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectTarget(tp,c57815601.filter1,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil,e,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectTarget(tp,c57815601.filter2,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,g1:GetFirst(),e,tp) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) -end -function c57815601.activate(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if ft>0 and g:GetCount()>0 then - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - if g:GetCount()<=ft then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,ft,ft,nil) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - g:Sub(sg) - Duel.SendtoGrave(g,REASON_RULE) - end - end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c57815601.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - end -end -function c57815601.splimit(e,c) - return not c:IsSetCard(0xb5) -end +--霊獣の騎襲 +function c57815601.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,57815601+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c57815601.target) + e1:SetOperation(c57815601.activate) + c:RegisterEffect(e1) +end +function c57815601.filter1(c,e,tp) + return c:IsSetCard(0x10b5) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c57815601.filter2,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,c,e,tp) +end +function c57815601.filter2(c,e,tp) + return c:IsSetCard(0x20b5) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c57815601.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c57815601.filter1,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c57815601.filter1,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c57815601.filter2,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,g1:GetFirst(),e,tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) +end +function c57815601.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if ft>0 and g:GetCount()>0 then + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if g:GetCount()<=ft then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,ft,ft,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + g:Sub(sg) + Duel.SendtoGrave(g,REASON_RULE) + end + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c57815601.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c57815601.splimit(e,c) + return not c:IsSetCard(0xb5) +end diff --git a/script/c57831349.lua b/script/c57831349.lua index 6a9d939c..a4b18b2f 100644 --- a/script/c57831349.lua +++ b/script/c57831349.lua @@ -29,8 +29,7 @@ function c57831349.desfilter(c) end function c57831349.activate(e,tp,eg,ep,ev,re,r,rp) local ec=re:GetHandler() - Duel.NegateActivation(ev) - if ec:IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and ec:IsRelateToEffect(re) then ec:CancelToGrave() if Duel.SendtoDeck(ec,nil,2,REASON_EFFECT)~=0 and ec:IsLocation(LOCATION_DECK+LOCATION_EXTRA) then local g=Duel.GetMatchingGroup(c57831349.desfilter,tp,LOCATION_ONFIELD,0,e:GetHandler()) diff --git a/script/c5795980.lua b/script/c5795980.lua index 2214ff88..6dae57f6 100644 --- a/script/c5795980.lua +++ b/script/c5795980.lua @@ -1,119 +1,119 @@ ---帝王の轟毅 -function c5795980.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetHintTiming(0,0x1e0) - e1:SetCost(c5795980.cost) - e1:SetTarget(c5795980.target) - e1:SetOperation(c5795980.activate) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(5795980,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCost(c5795980.atcost) - e2:SetTarget(c5795980.attg) - e2:SetOperation(c5795980.atop) - c:RegisterEffect(e2) -end -function c5795980.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - return true -end -function c5795980.cfilter(c,e,dg) - if c:IsFacedown() or not c:IsLevelAbove(5) or bit.band(c:GetSummonType(),SUMMON_TYPE_NORMAL)==0 then return false end - local a=0 - if dg:IsContains(c) then a=1 end - if c:GetEquipCount()==0 then return dg:GetCount()-a>=1 end - local eg=c:GetEquipGroup() - local tc=eg:GetFirst() - while tc do - if dg:IsContains(tc) then a=a+1 end - tc=eg:GetNext() - end - return dg:GetCount()-a>=1 -end -function c5795980.tgfilter(c,e) - return aux.disfilter1(c) and c:IsCanBeEffectTarget(e) -end -function c5795980.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c5795980.tgfilter(chkc,e) and chkc~=e:GetHandler() end - if chk==0 then - if not Duel.IsPlayerCanDraw(tp,1) then return false end - if e:GetLabel()==1 then - e:SetLabel(0) - local rg=Duel.GetReleaseGroup(tp) - local dg=Duel.GetMatchingGroup(c5795980.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler(),e) - return rg:IsExists(c5795980.cfilter,1,e:GetHandler(),e,dg) - else - return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) - end - end - if e:GetLabel()==1 then - e:SetLabel(0) - local rg=Duel.GetReleaseGroup(tp) - local dg=Duel.GetMatchingGroup(c5795980.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler(),e) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local sg=rg:FilterSelect(tp,c5795980.cfilter,1,1,e:GetHandler(),e,dg) - Duel.Release(sg,REASON_COST) - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c5795980.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - if tc:IsType(TYPE_TRAPMONSTER) then - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end - Duel.BreakEffect() - Duel.Draw(tp,1,REASON_EFFECT) - end -end -function c5795980.atcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c5795980.attg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,562) - local rc=Duel.AnnounceAttribute(tp,1,0xffff) - e:SetLabel(rc) -end -function c5795980.atop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--帝王の轟毅 +function c5795980.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,0x1e0) + e1:SetCost(c5795980.cost) + e1:SetTarget(c5795980.target) + e1:SetOperation(c5795980.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5795980,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c5795980.atcost) + e2:SetTarget(c5795980.attg) + e2:SetOperation(c5795980.atop) + c:RegisterEffect(e2) +end +function c5795980.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c5795980.cfilter(c,e,dg) + if c:IsFacedown() or not c:IsLevelAbove(5) or bit.band(c:GetSummonType(),SUMMON_TYPE_NORMAL)==0 then return false end + local a=0 + if dg:IsContains(c) then a=1 end + if c:GetEquipCount()==0 then return dg:GetCount()-a>=1 end + local eg=c:GetEquipGroup() + local tc=eg:GetFirst() + while tc do + if dg:IsContains(tc) then a=a+1 end + tc=eg:GetNext() + end + return dg:GetCount()-a>=1 +end +function c5795980.tgfilter(c,e) + return aux.disfilter1(c) and c:IsCanBeEffectTarget(e) +end +function c5795980.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c5795980.tgfilter(chkc,e) and chkc~=e:GetHandler() end + if chk==0 then + if not Duel.IsPlayerCanDraw(tp,1) then return false end + if e:GetLabel()==1 then + e:SetLabel(0) + local rg=Duel.GetReleaseGroup(tp) + local dg=Duel.GetMatchingGroup(c5795980.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler(),e) + return rg:IsExists(c5795980.cfilter,1,e:GetHandler(),e,dg) + else + return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) + end + end + if e:GetLabel()==1 then + e:SetLabel(0) + local rg=Duel.GetReleaseGroup(tp) + local dg=Duel.GetMatchingGroup(c5795980.tgfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler(),e) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=rg:FilterSelect(tp,c5795980.cfilter,1,1,e:GetHandler(),e,dg) + Duel.Release(sg,REASON_COST) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c5795980.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c5795980.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c5795980.attg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,562) + local rc=Duel.AnnounceAttribute(tp,1,0xffff) + e:SetLabel(rc) +end +function c5795980.atop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c58016954.lua b/script/c58016954.lua index 2db3d2b9..9a63f827 100644 --- a/script/c58016954.lua +++ b/script/c58016954.lua @@ -1,57 +1,57 @@ ---イェシャドール-セフィラナーガ -function c58016954.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c58016954.splimit) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCountLimit(1,58016954) - e3:SetCondition(c58016954.condition1) - e3:SetTarget(c58016954.target) - e3:SetOperation(c58016954.operation) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_TO_GRAVE) - e4:SetCondition(aux.TRUE) - c:RegisterEffect(e4) -end -function c58016954.splimit(e,c,sump,sumtype,sumpos,targetp) - if c:IsSetCard(0x9d) or c:IsSetCard(0xc4) then return false end - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c58016954.condition1(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM -end -function c58016954.cfilter(c) - return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsSetCard(0xc4) -end -function c58016954.filter(c) - return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsAbleToHand() -end -function c58016954.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c58016954.filter(chkc) end - if chk==0 then return Duel.IsExistingMatchingCard(c58016954.cfilter,tp,LOCATION_SZONE,0,1,nil) - and Duel.IsExistingTarget(c58016954.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c58016954.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c58016954.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsExistingMatchingCard(c58016954.cfilter,tp,LOCATION_SZONE,0,1,nil) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end +--イェシャドール-セフィラナーガ +function c58016954.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c58016954.splimit) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCountLimit(1,58016954) + e3:SetCondition(c58016954.condition1) + e3:SetTarget(c58016954.target) + e3:SetOperation(c58016954.operation) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(aux.TRUE) + c:RegisterEffect(e4) +end +function c58016954.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0x9d) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c58016954.condition1(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c58016954.cfilter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsSetCard(0xc4) +end +function c58016954.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsAbleToHand() +end +function c58016954.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c58016954.filter(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c58016954.cfilter,tp,LOCATION_SZONE,0,1,nil) + and Duel.IsExistingTarget(c58016954.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c58016954.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c58016954.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(c58016954.cfilter,tp,LOCATION_SZONE,0,1,nil) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c58058134.lua b/script/c58058134.lua index aded9b0f..f177c9ed 100644 --- a/script/c58058134.lua +++ b/script/c58058134.lua @@ -18,7 +18,7 @@ function c58058134.initial_effect(c) e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c58058134.negcon) e2:SetCost(c58058134.negcost) diff --git a/script/c58069384.lua b/script/c58069384.lua index f612f192..699896b9 100644 --- a/script/c58069384.lua +++ b/script/c58069384.lua @@ -7,7 +7,7 @@ function c58069384.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(58069384,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c581014.lua b/script/c581014.lua index af5361ad..a593ec73 100644 --- a/script/c581014.lua +++ b/script/c581014.lua @@ -7,7 +7,7 @@ function c581014.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(581014,1)) e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) @@ -19,7 +19,7 @@ function c581014.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(581014,2)) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) diff --git a/script/c58120309.lua b/script/c58120309.lua index 6992c44f..eeda503a 100644 --- a/script/c58120309.lua +++ b/script/c58120309.lua @@ -1,43 +1,42 @@ ---スターライト・ロード -function c58120309.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DISABLE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c58120309.condition) - e1:SetTarget(c58120309.target) - e1:SetOperation(c58120309.activate) - c:RegisterEffect(e1) -end -function c58120309.filter(c,p) - return c:GetControler()==p and c:IsOnField() -end -function c58120309.condition(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsChainNegatable(ev) then return false end - local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) - return ex and tg~=nil and tc+tg:FilterCount(c58120309.filter,nil,tp)-tg:GetCount()>1 -end -function c58120309.sfilter(c,e,tp) - return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c58120309.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c58120309.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=re:GetHandler() - if not tc:IsDisabled() then - Duel.NegateEffect(ev) - if tc:IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)~=0 then - local sc=Duel.GetFirstMatchingCard(c58120309.sfilter,tp,LOCATION_EXTRA,0,nil,e,tp) - if sc and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(58120309,0)) then - Duel.BreakEffect() - Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) - end - end - end -end +--スターライト・ロード +function c58120309.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DISABLE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c58120309.condition) + e1:SetTarget(c58120309.target) + e1:SetOperation(c58120309.activate) + c:RegisterEffect(e1) +end +function c58120309.filter(c,p) + return c:GetControler()==p and c:IsOnField() +end +function c58120309.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(c58120309.filter,nil,tp)-tg:GetCount()>1 +end +function c58120309.sfilter(c,e,tp) + return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c58120309.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c58120309.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=re:GetHandler() + if not tc:IsDisabled() then + if Duel.NegateEffect(ev) and tc:IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)~=0 then + local sc=Duel.GetFirstMatchingCard(c58120309.sfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if sc and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(58120309,0)) then + Duel.BreakEffect() + Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) + end + end + end +end diff --git a/script/c58132856.lua b/script/c58132856.lua index c50f5c3b..87e91a89 100644 --- a/script/c58132856.lua +++ b/script/c58132856.lua @@ -1,71 +1,72 @@ ---トイ・マジシャン -function c58132856.initial_effect(c) - --Set - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MONSTER_SSET) - e1:SetValue(TYPE_SPELL) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetOperation(c58132856.regop) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(58132856,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_GRAVE) - e3:SetCountLimit(1) - e3:SetTarget(c58132856.sptg) - e3:SetOperation(c58132856.spop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(58132856,1)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - e4:SetTarget(c58132856.destg) - e4:SetOperation(c58132856.desop) - c:RegisterEffect(e4) -end -function c58132856.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) - and c:IsReason(REASON_EFFECT) and c:IsReason(REASON_DESTROY) and rp~=tp then - c:RegisterFlagEffect(58132856,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) - end -end -function c58132856.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(58132856)>0 end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c58132856.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end -function c58132856.cfilter(c) - return c:IsFaceup() and c:IsCode(58132856) -end -function c58132856.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c58132856.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local ct=Duel.GetMatchingGroupCount(c58132856.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - local g=Duel.GetMatchingGroup(c58132856.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - if ct>g:GetCount() then ct=g:GetCount() end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,ct,0,0) -end -function c58132856.desop(e,tp,eg,ep,ev,re,r,rp) - local ct=Duel.GetMatchingGroupCount(c58132856.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - if ct==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectMatchingCard(tp,c58132856.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,ct,ct,nil) - Duel.HintSelection(g) - Duel.Destroy(g,REASON_EFFECT) -end +--トイ・マジシャン +function c58132856.initial_effect(c) + --Set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MONSTER_SSET) + e1:SetValue(TYPE_SPELL) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c58132856.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(58132856,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1) + e3:SetTarget(c58132856.sptg) + e3:SetOperation(c58132856.spop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(58132856,1)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + e4:SetTarget(c58132856.destg) + e4:SetOperation(c58132856.desop) + c:RegisterEffect(e4) +end +function c58132856.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) + and c:IsReason(REASON_EFFECT) and c:IsReason(REASON_DESTROY) and rp~=tp then + c:RegisterFlagEffect(58132856,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) + end +end +function c58132856.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(58132856)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c58132856.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c58132856.cfilter(c) + return c:IsFaceup() and c:IsCode(58132856) +end +function c58132856.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c58132856.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetMatchingGroupCount(c58132856.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + local g=Duel.GetMatchingGroup(c58132856.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + if ct>g:GetCount() then ct=g:GetCount() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,ct,0,0) +end +function c58132856.desop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c58132856.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + if ct==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c58132856.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,ct,ct,nil) + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c58199906.lua b/script/c58199906.lua index 6f49398a..a4d7d05a 100644 --- a/script/c58199906.lua +++ b/script/c58199906.lua @@ -28,7 +28,7 @@ function c58199906.activate(e,tp,eg,ep,ev,re,r,rp) Duel.RegisterEffect(e1,tp) end function c58199906.filter(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) end function c58199906.chain_target(e,te,tp) return Duel.GetMatchingGroup(c58199906.filter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,nil,te) diff --git a/script/c58272005.lua b/script/c58272005.lua index 31a744f8..1ab597a5 100644 --- a/script/c58272005.lua +++ b/script/c58272005.lua @@ -1,82 +1,82 @@ ---生存競争 -function c58272005.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c58272005.condition) - e1:SetTarget(c58272005.target) - e1:SetOperation(c58272005.operation) - c:RegisterEffect(e1) -end -function c58272005.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c58272005.filter(c) - return c:IsFaceup() and c:IsRace(RACE_DINOSAUR) -end -function c58272005.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c58272005.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c58272005.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c58272005.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c58272005.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - --Atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1fe0000) - 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(c58272005.eqlimit) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - --chain attack - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(58272005,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_BATTLE_DESTROYING) - e3:SetCondition(c58272005.atcon) - e3:SetOperation(c58272005.atop) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - end -end -function c58272005.eqlimit(e,c) - return c:IsRace(RACE_DINOSAUR) -end -function c58272005.atcon(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetHandler():GetEquipTarget() - if not eg:IsContains(ec) then return false end - local bc=ec:GetBattleTarget() - return bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) and ec:IsChainAttackable(2,true) and ec:IsStatus(STATUS_OPPO_BATTLE) -end -function c58272005.atop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ec=c:GetEquipTarget() - if not ec:IsRelateToBattle() then return end - Duel.ChainAttack() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - ec:RegisterEffect(e1) -end +--生存競争 +function c58272005.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c58272005.condition) + e1:SetTarget(c58272005.target) + e1:SetOperation(c58272005.operation) + c:RegisterEffect(e1) +end +function c58272005.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c58272005.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DINOSAUR) +end +function c58272005.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c58272005.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c58272005.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c58272005.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c58272005.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + 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(c58272005.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(58272005,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c58272005.atcon) + e3:SetOperation(c58272005.atop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c58272005.eqlimit(e,c) + return c:IsRace(RACE_DINOSAUR) +end +function c58272005.atcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + if not eg:IsContains(ec) then return false end + local bc=ec:GetBattleTarget() + return bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) and ec:IsChainAttackable(2,true) and ec:IsStatus(STATUS_OPPO_BATTLE) +end +function c58272005.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetEquipTarget() + if not ec:IsRelateToBattle() then return end + Duel.ChainAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + ec:RegisterEffect(e1) +end diff --git a/script/c58293343.lua b/script/c58293343.lua index 34e42c9c..ef01a489 100644 --- a/script/c58293343.lua +++ b/script/c58293343.lua @@ -1,69 +1,69 @@ ---タイラント・バースト・ドラゴン -function c58293343.initial_effect(c) - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e1) - --attack all - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ATTACK_ALL) - e2:SetValue(1) - c:RegisterEffect(e2) - --equip - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_EQUIP) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetTarget(c58293343.eqtg) - e3:SetOperation(c58293343.eqop) - c:RegisterEffect(e3) -end -c58293343.material_trap=57470761 -function c58293343.eqtg(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() and chkc~=e:GetHandler() end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) -end -function c58293343.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsLocation(LOCATION_SZONE) or c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetLabelObject(tc) - e1:SetValue(c58293343.eqlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(400) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_EQUIP) - e4:SetCode(EFFECT_EXTRA_ATTACK) - e4:SetValue(2) - e4:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e4) -end -function c58293343.eqlimit(e,c) - return c==e:GetLabelObject() -end +--タイラント・バースト・ドラゴン +function c58293343.initial_effect(c) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e1) + --attack all + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ATTACK_ALL) + e2:SetValue(1) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetTarget(c58293343.eqtg) + e3:SetOperation(c58293343.eqop) + c:RegisterEffect(e3) +end +c58293343.material_trap=57470761 +function c58293343.eqtg(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() and chkc~=e:GetHandler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c58293343.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsLocation(LOCATION_SZONE) or c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabelObject(tc) + e1:SetValue(c58293343.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(400) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_EXTRA_ATTACK) + e4:SetValue(2) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) +end +function c58293343.eqlimit(e,c) + return c==e:GetLabelObject() +end diff --git a/script/c5832914.lua b/script/c5832914.lua index 205c1275..76850a07 100644 --- a/script/c5832914.lua +++ b/script/c5832914.lua @@ -1,37 +1,37 @@ ---トゥーンのかばん -function c5832914.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCondition(c5832914.condition) - e1:SetTarget(c5832914.target) - e1:SetOperation(c5832914.activate) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c5832914.cfilter(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c5832914.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c5832914.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c5832914.filter(c,tp) - return c:GetSummonPlayer()==tp and c:IsAbleToDeck() -end -function c5832914.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c5832914.filter,1,nil,1-tp) end - local g=eg:Filter(c5832914.filter,nil,1-tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c5832914.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) -end +--トゥーンのかばん +function c5832914.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c5832914.condition) + e1:SetTarget(c5832914.target) + e1:SetOperation(c5832914.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c5832914.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c5832914.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c5832914.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c5832914.filter(c,tp) + return c:GetSummonPlayer()==tp and c:IsAbleToDeck() +end +function c5832914.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c5832914.filter,1,nil,1-tp) end + local g=eg:Filter(c5832914.filter,nil,1-tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c5832914.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c58330108.lua b/script/c58330108.lua new file mode 100644 index 00000000..42e4ab0e --- /dev/null +++ b/script/c58330108.lua @@ -0,0 +1,105 @@ +--破壊竜ガンドラ-ギガ・レイズ +function c58330108.initial_effect(c) + c:EnableReviveLimit() + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c58330108.spcon) + e1:SetOperation(c58330108.spop) + c:RegisterEffect(e1) + --atk gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c58330108.value) + c:RegisterEffect(e2) + --variable effect + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(58330108,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c58330108.cost) + e3:SetTarget(c58330108.target) + e3:SetOperation(c58330108.operation) + c:RegisterEffect(e3) +end +function c58330108.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c58330108.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetMatchingGroup(c58330108.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,c) + return g:GetCount()>=2 and ft>-2 and g:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>-ft +end +function c58330108.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + local g=Duel.GetMatchingGroup(c58330108.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,c) + local sg=nil + if ft<=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + sg=g:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) + if ct<2 then + g:Sub(sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg1=g:Select(tp,2-ct,2-ct,nil) + sg:Merge(sg1) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + sg=g:Select(tp,2,2,nil) + end + Duel.SendtoGrave(sg,REASON_COST) +end +function c58330108.value(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_REMOVED,LOCATION_REMOVED)*300 +end +function c58330108.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c58330108.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0xf5) +end +function c58330108.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local gc=Duel.GetMatchingGroup(c58330108.filter,tp,LOCATION_GRAVE,0,nil):GetClassCount(Card.GetCode) + if chk==0 then + local b1=Duel.IsExistingMatchingCard(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) + local b2=Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) + local b3=Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,1,c) + return (gc==1 and b1) or (gc==2 and b2) or (gc>2 and b3) + end + if gc==1 then + e:SetCategory(CATEGORY_DESTROY) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + else + e:SetCategory(CATEGORY_REMOVE) + local loc=LOCATION_ONFIELD + if gc>2 then loc=LOCATION_ONFIELD+LOCATION_GRAVE end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,loc,loc,c) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) + end +end +function c58330108.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local gc=Duel.GetMatchingGroup(c58330108.filter,tp,LOCATION_GRAVE,0,nil):GetClassCount(Card.GetCode) + if gc==1 then + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c) + Duel.Destroy(g,REASON_EFFECT) + else + local loc=LOCATION_ONFIELD + if gc>2 then loc=LOCATION_ONFIELD+LOCATION_GRAVE end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,loc,loc,c) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c58332301.lua b/script/c58332301.lua index 7b644a10..c67091ef 100644 --- a/script/c58332301.lua +++ b/script/c58332301.lua @@ -1,59 +1,60 @@ ---E-HERO ダーク・ガイア -function c58332301.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsRace,RACE_FIEND),aux.FilterBoolFunction(Card.IsRace,RACE_ROCK),true) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(c58332301.splimit) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetOperation(c58332301.atkop) - c:RegisterEffect(e3) - --Pos Change - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_POSITION) - e3:SetDescription(aux.Stringid(58332301,0)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetTarget(c58332301.postg) - e3:SetOperation(c58332301.posop) - c:RegisterEffect(e3) -end -c58332301.dark_calling=true -function c58332301.splimit(e,se,sp,st) - return st==SUMMON_TYPE_FUSION+0x10 -end -function c58332301.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=c:GetMaterial() - local s=0 - local tc=g:GetFirst() - while tc do - local a=tc:GetAttack() - if a<0 then a=0 end - s=s+a - tc=g:GetNext() - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_BASE_ATTACK) - e1:SetValue(s) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c58332301.postg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c58332301.posop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,0,LOCATION_MZONE,nil) - Duel.ChangePosition(g,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) -end +--E-HERO ダーク・ガイア +function c58332301.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsRace,RACE_FIEND),aux.FilterBoolFunction(Card.IsRace,RACE_ROCK),true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(c58332301.splimit) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c58332301.atkop) + c:RegisterEffect(e3) + --Pos Change + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_POSITION) + e3:SetDescription(aux.Stringid(58332301,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetTarget(c58332301.postg) + e3:SetOperation(c58332301.posop) + c:RegisterEffect(e3) +end +c58332301.material_setcode=0x8 +c58332301.dark_calling=true +function c58332301.splimit(e,se,sp,st) + return st==SUMMON_TYPE_FUSION+0x10 +end +function c58332301.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=c:GetMaterial() + local s=0 + local tc=g:GetFirst() + while tc do + local a=tc:GetAttack() + if a<0 then a=0 end + s=s+a + tc=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(s) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c58332301.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c58332301.posop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,0,LOCATION_MZONE,nil) + Duel.ChangePosition(g,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) +end diff --git a/script/c58369990.lua b/script/c58369990.lua index 26f9bf58..bb70e382 100644 --- a/script/c58369990.lua +++ b/script/c58369990.lua @@ -1,37 +1,37 @@ ---凶星の魔術師 -function c58369990.initial_effect(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(58369990,0)) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1) - e1:SetCost(c58369990.cost) - e1:SetTarget(c58369990.target) - e1:SetOperation(c58369990.operation) - c:RegisterEffect(e1) -end -function c58369990.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c58369990.filter(c) - return (c:GetSequence()==6 or c:GetSequence()==7) -end -function c58369990.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c58369990.filter(chkc) end - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) - and Duel.IsExistingTarget(c58369990.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c58369990.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c58369990.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.Draw(tp,1,REASON_EFFECT) - end -end +--凶星の魔術師 +function c58369990.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(58369990,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetCost(c58369990.cost) + e1:SetTarget(c58369990.target) + e1:SetOperation(c58369990.operation) + c:RegisterEffect(e1) +end +function c58369990.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c58369990.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) +end +function c58369990.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c58369990.filter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c58369990.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c58369990.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c58369990.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c58441120.lua b/script/c58441120.lua index 3f7e4f38..964b2988 100644 --- a/script/c58441120.lua +++ b/script/c58441120.lua @@ -1,32 +1,32 @@ ---波動共鳴 -function c58441120.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c58441120.target) - e1:SetOperation(c58441120.activate) - c:RegisterEffect(e1) -end -function c58441120.filter(c) - local lv=c:GetLevel() - return c:IsFaceup() and lv>0 and lv~=4 -end -function c58441120.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c58441120.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c58441120.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c58441120.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c58441120.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--波動共鳴 +function c58441120.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c58441120.target) + e1:SetOperation(c58441120.activate) + c:RegisterEffect(e1) +end +function c58441120.filter(c) + local lv=c:GetLevel() + return c:IsFaceup() and lv>0 and lv~=4 +end +function c58441120.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c58441120.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c58441120.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c58441120.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c58441120.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c58446973.lua b/script/c58446973.lua index aae7a47d..ee59938a 100644 --- a/script/c58446973.lua +++ b/script/c58446973.lua @@ -1,45 +1,45 @@ ---インフェルノイド・デカトロン -function c58446973.initial_effect(c) - -- - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetTarget(c58446973.target) - e1:SetOperation(c58446973.operation) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c58446973.filter(c) - return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and not c:IsCode(58446973) and c:IsAbleToGrave() -end -function c58446973.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c58446973.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c58446973.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c58446973.filter,tp,LOCATION_DECK,0,1,1,nil) - local tc=g:GetFirst() - local c=e:GetHandler() - if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) - and c:IsRelateToEffect(e) and c:IsFaceup() then - local code=tc:GetCode() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(tc:GetLevel()) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CHANGE_CODE) - e2:SetValue(code) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - c:CopyEffect(code,RESET_EVENT+0x1fe0000,1) - end -end +--インフェルノイド・デカトロン +function c58446973.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetTarget(c58446973.target) + e1:SetOperation(c58446973.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c58446973.filter(c) + return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and not c:IsCode(58446973) and c:IsAbleToGrave() +end +function c58446973.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c58446973.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c58446973.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c58446973.filter,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + local c=e:GetHandler() + if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) + and c:IsRelateToEffect(e) and c:IsFaceup() then + local code=tc:GetCode() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetValue(code) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + c:CopyEffect(code,RESET_EVENT+0x1fe0000,1) + end +end diff --git a/script/c58453942.lua b/script/c58453942.lua index 554ce445..d9b5046e 100644 --- a/script/c58453942.lua +++ b/script/c58453942.lua @@ -1,50 +1,50 @@ ---サイコ・ウォールド -function c58453942.initial_effect(c) - --extra atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(58453942,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c58453942.condition) - e1:SetCost(c58453942.cost) - e1:SetTarget(c58453942.target) - e1:SetOperation(c58453942.operation) - c:RegisterEffect(e1) -end -function c58453942.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c58453942.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,800) end - Duel.PayLPCost(tp,800) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c58453942.filter(c) - return c:IsFaceup() and c:IsRace(RACE_PSYCHO) and c:GetEffectCount(EFFECT_EXTRA_ATTACK)==0 -end -function c58453942.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c58453942.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c58453942.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c58453942.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) -end -function c58453942.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - --extra atk - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - tc:RegisterEffect(e1) - end -end +--サイコ・ウォールド +function c58453942.initial_effect(c) + --extra atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(58453942,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c58453942.condition) + e1:SetCost(c58453942.cost) + e1:SetTarget(c58453942.target) + e1:SetOperation(c58453942.operation) + c:RegisterEffect(e1) +end +function c58453942.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c58453942.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c58453942.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PSYCHO) and c:GetEffectCount(EFFECT_EXTRA_ATTACK)==0 +end +function c58453942.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c58453942.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c58453942.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c58453942.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c58453942.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --extra atk + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end diff --git a/script/c58481572.lua b/script/c58481572.lua index 6b2c6bba..7f802e3e 100644 --- a/script/c58481572.lua +++ b/script/c58481572.lua @@ -10,7 +10,7 @@ function c58481572.initial_effect(c) --remove local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) e2:SetRange(LOCATION_MZONE) e2:SetTargetRange(0,0xff) diff --git a/script/c58494728.lua b/script/c58494728.lua index e09c0281..94651f59 100644 --- a/script/c58494728.lua +++ b/script/c58494728.lua @@ -32,11 +32,11 @@ end function c58494728.otfilter(c,tp) return c:IsSetCard(0x100a) and (c:IsControler(tp) or c:IsFaceup()) end -function c58494728.otcon(e,c) +function c58494728.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c58494728.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c58494728.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c58494728.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c58504745.lua b/script/c58504745.lua index cd995d14..e0cbfa1a 100644 --- a/script/c58504745.lua +++ b/script/c58504745.lua @@ -9,7 +9,7 @@ function c58504745.initial_effect(c) e1:SetCategory(CATEGORY_TODECK) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1,58504745) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCost(c58504745.cost) e1:SetTarget(c58504745.target) diff --git a/script/c58531587.lua b/script/c58531587.lua index 5d204688..13e0817c 100644 --- a/script/c58531587.lua +++ b/script/c58531587.lua @@ -63,9 +63,8 @@ function c58531587.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,sg1,2,0,0) end function c58531587.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if Duel.GetLocationCount(tp,LOCATION_MZONE)1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end local tc=g:GetFirst() while tc do Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) diff --git a/script/c58551308.lua b/script/c58551308.lua index aa6efcff..a52c046d 100644 --- a/script/c58551308.lua +++ b/script/c58551308.lua @@ -1,67 +1,68 @@ ---ダークファミリア -function c58551308.initial_effect(c) - --flip effect - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_FLIP) - e1:SetOperation(c58551308.flipop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(58551308,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetTarget(c58551308.sptg) - e2:SetOperation(c58551308.spop) - c:RegisterEffect(e2) -end -function c58551308.flipop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) then - c:RegisterFlagEffect(58551308,RESET_EVENT+0x57a0000,0,1) - end -end -function c58551308.filter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) - or c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) -end -function c58551308.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return e:GetHandler():GetFlagEffect(58551308)~=0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectTarget(tp,c58551308.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectTarget(1-tp,c58551308.filter,1-tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,1-tp) - if g1:GetCount()>0 and g2:GetCount()>0 then - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,PLAYER_ALL,g1:GetFirst():GetOwner()) - elseif g1:GetCount()>0 then - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,1,0,0) - elseif g2:GetCount()>0 then - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g2,1,1,0) - end -end -function c58551308.spop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if sg:GetCount()==0 then return end - local tc=sg:GetFirst() - if tc and Duel.GetLocationCount(tc:GetControler(),LOCATION_MZONE)>0 then - local sp=tc:GetControler() - local spos=0 - if tc:IsCanBeSpecialSummoned(e,0,sp,false,false) then spos=spos+POS_FACEUP_ATTACK end - if tc:IsCanBeSpecialSummoned(e,0,sp,false,false,POS_FACEDOWN) then spos=spos+POS_FACEDOWN_DEFENSE end - if spos~=0 then Duel.SpecialSummonStep(tc,0,sp,sp,false,false,spos) end - end - tc=sg:GetNext() - if tc and Duel.GetLocationCount(tc:GetControler(),LOCATION_MZONE)>0 then - local sp=tc:GetControler() - local spos=0 - if tc:IsCanBeSpecialSummoned(e,0,sp,false,false) then spos=spos+POS_FACEUP_ATTACK end - if tc:IsCanBeSpecialSummoned(e,0,sp,false,false,POS_FACEDOWN) then spos=spos+POS_FACEDOWN_DEFENSE end - if spos~=0 then Duel.SpecialSummonStep(tc,0,sp,sp,false,false,spos) end - end - Duel.SpecialSummonComplete() -end +--ダークファミリア +function c58551308.initial_effect(c) + --flip effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_FLIP) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetOperation(c58551308.flipop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(58551308,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetTarget(c58551308.sptg) + e2:SetOperation(c58551308.spop) + c:RegisterEffect(e2) +end +function c58551308.flipop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) then + c:RegisterFlagEffect(58551308,RESET_EVENT+0x57a0000,0,1) + end +end +function c58551308.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) + or c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) +end +function c58551308.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return e:GetHandler():GetFlagEffect(58551308)~=0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c58551308.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(1-tp,c58551308.filter,1-tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,1-tp) + if g1:GetCount()>0 and g2:GetCount()>0 then + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,PLAYER_ALL,g1:GetFirst():GetOwner()) + elseif g1:GetCount()>0 then + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,1,0,0) + elseif g2:GetCount()>0 then + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g2,1,1,0) + end +end +function c58551308.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()==0 then return end + local tc=sg:GetFirst() + if tc and Duel.GetLocationCount(tc:GetControler(),LOCATION_MZONE)>0 then + local sp=tc:GetControler() + local spos=0 + if tc:IsCanBeSpecialSummoned(e,0,sp,false,false) then spos=spos+POS_FACEUP_ATTACK end + if tc:IsCanBeSpecialSummoned(e,0,sp,false,false,POS_FACEDOWN) then spos=spos+POS_FACEDOWN_DEFENSE end + if spos~=0 then Duel.SpecialSummonStep(tc,0,sp,sp,false,false,spos) end + end + tc=sg:GetNext() + if tc and Duel.GetLocationCount(tc:GetControler(),LOCATION_MZONE)>0 then + local sp=tc:GetControler() + local spos=0 + if tc:IsCanBeSpecialSummoned(e,0,sp,false,false) then spos=spos+POS_FACEUP_ATTACK end + if tc:IsCanBeSpecialSummoned(e,0,sp,false,false,POS_FACEDOWN) then spos=spos+POS_FACEDOWN_DEFENSE end + if spos~=0 then Duel.SpecialSummonStep(tc,0,sp,sp,false,false,spos) end + end + Duel.SpecialSummonComplete() +end diff --git a/script/c58554959.lua b/script/c58554959.lua index 93dc67bc..1f29ae4d 100644 --- a/script/c58554959.lua +++ b/script/c58554959.lua @@ -16,9 +16,9 @@ function c58554959.initial_effect(c) e2:SetCode(EFFECT_PIERCE) c:RegisterEffect(e2) end -function c58554959.otcon(e,c) +function c58554959.otcon(e,c,minc) if c==nil then return true end - return c:GetLevel()>6 and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)~=0 and Duel.GetTributeCount(c)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1) end function c58554959.otop(e,tp,eg,ep,ev,re,r,rp,c) local sg=Duel.SelectTribute(tp,c,1,1) diff --git a/script/c58569561.lua b/script/c58569561.lua index c2be7317..e56d0af9 100644 --- a/script/c58569561.lua +++ b/script/c58569561.lua @@ -1,63 +1,63 @@ ---アロマージ-ローズマリー -function c58569561.initial_effect(c) - --active limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c58569561.actcon) - e1:SetOperation(c58569561.actop) - c:RegisterEffect(e1) - --position change - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_RECOVER) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetCondition(c58569561.poscon) - e2:SetTarget(c58569561.postg) - e2:SetOperation(c58569561.posop) - c:RegisterEffect(e2) -end -function c58569561.actcon(e,tp,eg,ep,ev,re,r,rp) - local ac=Duel.GetAttacker() - return ac and ac:IsControler(tp) and ac:IsRace(RACE_PLANT) -end -function c58569561.actop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetCondition(c58569561.accon) - e1:SetValue(c58569561.actlimit) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - c:RegisterEffect(e1) -end -function c58569561.accon(e) - local tp=e:GetHandlerPlayer() - return Duel.GetLP(tp)>Duel.GetLP(1-tp) -end -function c58569561.actlimit(e,re,tp) - return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) -end -function c58569561.poscon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp -end -function c58569561.postg(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 ep==tp and e:GetHandler():IsRelateToEffect(e) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c58569561.posop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) - end -end +--アロマージ-ローズマリー +function c58569561.initial_effect(c) + --active limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c58569561.actcon) + e1:SetOperation(c58569561.actop) + c:RegisterEffect(e1) + --position change + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_RECOVER) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c58569561.poscon) + e2:SetTarget(c58569561.postg) + e2:SetOperation(c58569561.posop) + c:RegisterEffect(e2) +end +function c58569561.actcon(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetAttacker() + return ac and ac:IsControler(tp) and ac:IsRace(RACE_PLANT) +end +function c58569561.actop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetCondition(c58569561.accon) + e1:SetValue(c58569561.actlimit) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) +end +function c58569561.accon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetLP(tp)>Duel.GetLP(1-tp) +end +function c58569561.actlimit(e,re,tp) + return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end +function c58569561.poscon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c58569561.postg(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 ep==tp and e:GetHandler():IsRelateToEffect(e) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c58569561.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c58577036.lua b/script/c58577036.lua index e19750f1..bc47e1a3 100644 --- a/script/c58577036.lua +++ b/script/c58577036.lua @@ -1,50 +1,50 @@ ---名推理 -function c58577036.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c58577036.target) - e1:SetOperation(c58577036.operation) - c:RegisterEffect(e1) -end -function c58577036.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsPlayerCanSpecialSummon(tp) - and Duel.IsExistingMatchingCard(Card.IsSummonableCard,tp,LOCATION_DECK,0,1,nil) and Duel.IsPlayerCanDiscardDeck(tp,1) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) -end -function c58577036.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanSpecialSummon(tp) or not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.Hint(HINT_SELECTMSG,1-tp,567) - local lv=Duel.AnnounceNumber(1-tp,1,2,3,4,5,6,7,8,9,10,11,12) - local g=Duel.GetMatchingGroup(Card.IsSummonableCard,tp,LOCATION_DECK,0,nil) - local dcount=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - local seq=-1 - local tc=g:GetFirst() - local spcard=nil - while tc do - if tc:GetSequence()>seq then - seq=tc:GetSequence() - spcard=tc - end - tc=g:GetNext() - end - if seq==-1 then - Duel.ConfirmDecktop(tp,dcount) - Duel.ShuffleDeck(tp) - return - end - Duel.ConfirmDecktop(tp,dcount-seq) - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and lv~=spcard:GetLevel() - and spcard:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.DisableShuffleCheck() - if dcount-seq==1 then Duel.SpecialSummon(spcard,0,tp,tp,false,false,POS_FACEUP) - else - Duel.SpecialSummonStep(spcard,0,tp,tp,false,false,POS_FACEUP) - Duel.DiscardDeck(tp,dcount-seq-1,REASON_EFFECT) - Duel.SpecialSummonComplete() - end - else - Duel.DiscardDeck(tp,dcount-seq,REASON_EFFECT+REASON_REVEAL) - end -end +--名推理 +function c58577036.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c58577036.target) + e1:SetOperation(c58577036.operation) + c:RegisterEffect(e1) +end +function c58577036.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsPlayerCanSpecialSummon(tp) + and Duel.IsExistingMatchingCard(Card.IsSummonableCard,tp,LOCATION_DECK,0,1,nil) and Duel.IsPlayerCanDiscardDeck(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) +end +function c58577036.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanSpecialSummon(tp) or not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.Hint(HINT_SELECTMSG,1-tp,567) + local lv=Duel.AnnounceNumber(1-tp,1,2,3,4,5,6,7,8,9,10,11,12) + local g=Duel.GetMatchingGroup(Card.IsSummonableCard,tp,LOCATION_DECK,0,nil) + local dcount=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + local seq=-1 + local tc=g:GetFirst() + local spcard=nil + while tc do + if tc:GetSequence()>seq then + seq=tc:GetSequence() + spcard=tc + end + tc=g:GetNext() + end + if seq==-1 then + Duel.ConfirmDecktop(tp,dcount) + Duel.ShuffleDeck(tp) + return + end + Duel.ConfirmDecktop(tp,dcount-seq) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and lv~=spcard:GetLevel() + and spcard:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.DisableShuffleCheck() + if dcount-seq==1 then Duel.SpecialSummon(spcard,0,tp,tp,false,false,POS_FACEUP) + else + Duel.SpecialSummonStep(spcard,0,tp,tp,false,false,POS_FACEUP) + Duel.DiscardDeck(tp,dcount-seq-1,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + else + Duel.DiscardDeck(tp,dcount-seq,REASON_EFFECT+REASON_REVEAL) + end +end diff --git a/script/c58600555.lua b/script/c58600555.lua index cd229679..393372b5 100644 --- a/script/c58600555.lua +++ b/script/c58600555.lua @@ -19,7 +19,7 @@ function c58600555.initial_effect(c) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCost(c58600555.tdcost) e2:SetTarget(c58600555.tdtg) e2:SetOperation(c58600555.tdop) @@ -155,8 +155,8 @@ function c58600555.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g=Duel.SelectMatchingCard(tp,Card.IsRace,tp,LOCATION_GRAVE,0,1,1,nil,RACE_INSECT) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(Card.IsRace),tp,LOCATION_GRAVE,0,1,1,nil,RACE_INSECT) + if g:GetCount()>0 then Duel.Overlay(c,g) end end diff --git a/script/c58601383.lua b/script/c58601383.lua index a8755740..955923b6 100644 --- a/script/c58601383.lua +++ b/script/c58601383.lua @@ -1,32 +1,32 @@ ---地天の騎士ガイアドレイク -function c58601383.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,97204936,c58601383.ffilter,1,true,true) - --cannot be target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c58601383.efilter1) - c:RegisterEffect(e2) - --cannot be destroyed - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetValue(c58601383.efilter2) - c:RegisterEffect(e3) -end -c58601383.miracle_synchro_fusion=true -function c58601383.ffilter(c) - return c:IsType(TYPE_SYNCHRO) and not c:IsType(TYPE_EFFECT) -end -function c58601383.efilter1(e,re,rp) - return re:IsActiveType(TYPE_EFFECT) -end -function c58601383.efilter2(e,re) - return re:IsActiveType(TYPE_EFFECT) -end +--地天の騎士ガイアドレイク +function c58601383.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,97204936,c58601383.ffilter,1,true,true) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c58601383.efilter1) + c:RegisterEffect(e2) + --cannot be destroyed + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c58601383.efilter2) + c:RegisterEffect(e3) +end +c58601383.miracle_synchro_fusion=true +function c58601383.ffilter(c) + return c:IsFusionType(TYPE_SYNCHRO) and not c:IsFusionType(TYPE_EFFECT) +end +function c58601383.efilter1(e,re,rp) + return re:IsActiveType(TYPE_EFFECT) +end +function c58601383.efilter2(e,re) + return re:IsActiveType(TYPE_EFFECT) +end diff --git a/script/c58604027.lua b/script/c58604027.lua index 7266f22e..3c2a7963 100644 --- a/script/c58604027.lua +++ b/script/c58604027.lua @@ -1,114 +1,114 @@ ---召喚神エクゾディア -function c58604027.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c58604027.spcon) - e2:SetOperation(c58604027.spop) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_MZONE) - e3:SetValue(c58604027.atkval) - c:RegisterEffect(e3) - --immune - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_IMMUNE_EFFECT) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetValue(c58604027.efilter) - c:RegisterEffect(e4) - --to hand - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(58604027,0)) - e5:SetCategory(CATEGORY_TOHAND) - e5:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e5:SetRange(LOCATION_MZONE) - e5:SetCode(EVENT_PHASE+PHASE_END) - e5:SetCountLimit(1) - e5:SetCondition(c58604027.thcon) - e5:SetTarget(c58604027.thtg) - e5:SetOperation(c58604027.thop) - c:RegisterEffect(e5) - --draw - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(58604027,1)) - e6:SetCategory(CATEGORY_DRAW) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e6:SetCode(EVENT_BATTLE_DESTROYED) - e6:SetCondition(c58604027.drcon) - e6:SetTarget(c58604027.drtg) - e6:SetOperation(c58604027.drop) - c:RegisterEffect(e6) -end -function c58604027.atkfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x40) -end -function c58604027.atkval(e,c) - return Duel.GetMatchingGroupCount(c58604027.atkfilter,c:GetControler(),LOCATION_GRAVE,0,nil)*1000 -end -function c58604027.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.CheckReleaseGroup(c:GetControler(),Card.IsSetCard,1,nil,0x40) -end -function c58604027.spop(e,tp,eg,ep,ev,re,r,rp,c) - local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x40) - Duel.Release(g,REASON_COST) -end -function c58604027.efilter(e,te) - return te:GetOwner()~=e:GetOwner() -end -function c58604027.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c58604027.thfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x40) and c:IsAbleToHand() -end -function c58604027.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) -end -function c58604027.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c58604027.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c58604027.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c58604027.cfilter(c) - return c:IsSetCard(0x40) and not c:IsPublic() -end -function c58604027.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) - and Duel.IsExistingMatchingCard(c58604027.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c58604027.drop(e,tp,eg,ep,ev,re,r,rp) - local dt=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if dt==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local cg=Duel.SelectMatchingCard(tp,c58604027.cfilter,tp,LOCATION_HAND,0,1,dt,nil) - Duel.ConfirmCards(1-tp,cg) - Duel.ShuffleHand(tp) - local ct=cg:GetCount() - Duel.Draw(tp,ct,REASON_EFFECT) -end +--召喚神エクゾディア +function c58604027.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c58604027.spcon) + e2:SetOperation(c58604027.spop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c58604027.atkval) + c:RegisterEffect(e3) + --immune + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c58604027.efilter) + c:RegisterEffect(e4) + --to hand + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(58604027,0)) + e5:SetCategory(CATEGORY_TOHAND) + e5:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetCountLimit(1) + e5:SetCondition(c58604027.thcon) + e5:SetTarget(c58604027.thtg) + e5:SetOperation(c58604027.thop) + c:RegisterEffect(e5) + --draw + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(58604027,1)) + e6:SetCategory(CATEGORY_DRAW) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_BATTLE_DESTROYED) + e6:SetCondition(c58604027.drcon) + e6:SetTarget(c58604027.drtg) + e6:SetOperation(c58604027.drop) + c:RegisterEffect(e6) +end +function c58604027.atkfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x40) +end +function c58604027.atkval(e,c) + return Duel.GetMatchingGroupCount(c58604027.atkfilter,c:GetControler(),LOCATION_GRAVE,0,nil)*1000 +end +function c58604027.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),Card.IsSetCard,1,nil,0x40) +end +function c58604027.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x40) + Duel.Release(g,REASON_COST) +end +function c58604027.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c58604027.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c58604027.thfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x40) and c:IsAbleToHand() +end +function c58604027.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c58604027.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c58604027.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c58604027.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c58604027.cfilter(c) + return c:IsSetCard(0x40) and not c:IsPublic() +end +function c58604027.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingMatchingCard(c58604027.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c58604027.drop(e,tp,eg,ep,ev,re,r,rp) + local dt=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if dt==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local cg=Duel.SelectMatchingCard(tp,c58604027.cfilter,tp,LOCATION_HAND,0,1,dt,nil) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleHand(tp) + local ct=cg:GetCount() + Duel.Draw(tp,ct,REASON_EFFECT) +end diff --git a/script/c5861892.lua b/script/c5861892.lua index 56522ebb..3095b91e 100644 --- a/script/c5861892.lua +++ b/script/c5861892.lua @@ -1,134 +1,134 @@ ---アルカナフォースEX-THE LIGHT RULER -function c5861892.initial_effect(c) - c:EnableReviveLimit() - --spsummon proc - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c5861892.spcon) - e1:SetOperation(c5861892.spop) - c:RegisterEffect(e1) - --cannot special summon - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e2) - --coin - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(5861892,0)) - e3:SetCategory(CATEGORY_COIN) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetTarget(c5861892.cointg) - e3:SetOperation(c5861892.coinop) - c:RegisterEffect(e3) -end -function c5861892.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 - and Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,c:GetControler(),LOCATION_MZONE,0,3,nil) -end -function c5861892.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,c:GetControler(),LOCATION_MZONE,0,3,3,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c5861892.cointg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) -end -function c5861892.coinop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local res=0 - if c:IsHasEffect(73206827) then - res=1-Duel.SelectOption(tp,60,61) - else res=Duel.TossCoin(tp,1) end - c5861892.arcanareg(c,res) -end -function c5861892.arcanareg(c,coin) - --coin effect - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(5861892,1)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(c5861892.thcon) - e1:SetTarget(c5861892.thtg) - e1:SetOperation(c5861892.thop) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(5861892,2)) - e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_F) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c5861892.negcon) - e2:SetTarget(c5861892.negtg) - e2:SetOperation(c5861892.negop) - e2:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e2) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) -end -function c5861892.thcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:GetFlagEffectLabel(36690018)==1 and c:IsRelateToBattle() - and c:GetBattleTarget():IsLocation(LOCATION_GRAVE) -end -function c5861892.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c5861892.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end -function c5861892.negcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if not g or not g:IsContains(c) then return false end - return c:GetFlagEffectLabel(36690018)==0 and (re:IsHasType(EFFECT_TYPE_ACTIVATE) or re:IsActiveType(TYPE_MONSTER)) -end -function c5861892.negtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(5861892)==0 end - if c:IsHasEffect(EFFECT_REVERSE_UPDATE) then - c:RegisterFlagEffect(5861892,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsDestructable() then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c5861892.negop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsFaceup() or c:GetAttack()<1000 or not c:IsRelateToEffect(e) or Duel.GetCurrentChain()~=ev+1 then - return - end - if Duel.NegateActivation(ev) then - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(re:GetHandler(),REASON_EFFECT) - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-1000) - c:RegisterEffect(e1) - end -end +--アルカナフォースEX-THE LIGHT RULER +function c5861892.initial_effect(c) + c:EnableReviveLimit() + --spsummon proc + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c5861892.spcon) + e1:SetOperation(c5861892.spop) + c:RegisterEffect(e1) + --cannot special summon + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e2) + --coin + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(5861892,0)) + e3:SetCategory(CATEGORY_COIN) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c5861892.cointg) + e3:SetOperation(c5861892.coinop) + c:RegisterEffect(e3) +end +function c5861892.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 + and Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,c:GetControler(),LOCATION_MZONE,0,3,nil) +end +function c5861892.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,c:GetControler(),LOCATION_MZONE,0,3,3,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c5861892.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c5861892.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local res=0 + if c:IsHasEffect(73206827) then + res=1-Duel.SelectOption(tp,60,61) + else res=Duel.TossCoin(tp,1) end + c5861892.arcanareg(c,res) +end +function c5861892.arcanareg(c,coin) + --coin effect + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5861892,1)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c5861892.thcon) + e1:SetTarget(c5861892.thtg) + e1:SetOperation(c5861892.thop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(5861892,2)) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_F) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c5861892.negcon) + e2:SetTarget(c5861892.negtg) + e2:SetOperation(c5861892.negop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) +end +function c5861892.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetFlagEffectLabel(36690018)==1 and c:IsRelateToBattle() + and c:GetBattleTarget():IsLocation(LOCATION_GRAVE) +end +function c5861892.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c5861892.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c5861892.negcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or not g:IsContains(c) then return false end + return c:GetFlagEffectLabel(36690018)==0 and (re:IsHasType(EFFECT_TYPE_ACTIVATE) or re:IsActiveType(TYPE_MONSTER)) +end +function c5861892.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(5861892)==0 end + if c:IsHasEffect(EFFECT_REVERSE_UPDATE) then + c:RegisterFlagEffect(5861892,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsDestructable() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c5861892.negop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsFaceup() or c:GetAttack()<1000 or not c:IsRelateToEffect(e) or Duel.GetCurrentChain()~=ev+1 then + return + end + if Duel.NegateActivation(ev) then + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(re:GetHandler(),REASON_EFFECT) + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + c:RegisterEffect(e1) + end +end diff --git a/script/c58641905.lua b/script/c58641905.lua index 408946b3..183e7042 100644 --- a/script/c58641905.lua +++ b/script/c58641905.lua @@ -3,7 +3,6 @@ function c58641905.initial_effect(c) --reflect local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) e1:SetCode(EVENT_CHAINING) e1:SetCondition(c58641905.condition) e1:SetOperation(c58641905.operation) @@ -11,10 +10,7 @@ function c58641905.initial_effect(c) end function c58641905.condition(e,tp,eg,ep,ev,re,r,rp) if not re:IsActiveType(TYPE_TRAP) then return false end - 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 + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) end function c58641905.operation(e,tp,eg,ep,ev,re,r,rp) local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) diff --git a/script/c58712976.lua b/script/c58712976.lua index ace316f5..ff6de22b 100644 --- a/script/c58712976.lua +++ b/script/c58712976.lua @@ -7,6 +7,7 @@ function c58712976.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetDescription(aux.Stringid(58712976,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c58753372.lua b/script/c58753372.lua index 8420b386..3b5f7ead 100644 --- a/script/c58753372.lua +++ b/script/c58753372.lua @@ -1,95 +1,95 @@ ---超量妖精アルファン -function c58753372.initial_effect(c) - --lv - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(58753372,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c58753372.target) - e1:SetOperation(c58753372.activate) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(58753372,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,58753372) - e2:SetCost(c58753372.spcost) - e2:SetTarget(c58753372.sptg) - e2:SetOperation(c58753372.spop) - c:RegisterEffect(e2) -end -function c58753372.filter1(c) - return c:IsFaceup() and c:GetLevel()>0 -end -function c58753372.filter2(c,tp) - return c58753372.filter1(c) and c:IsSetCard(0xdc) - and Duel.IsExistingMatchingCard(c58753372.filter1,tp,LOCATION_MZONE,0,1,c) -end -function c58753372.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local g1=Duel.GetMatchingGroup(c58753372.filter1,tp,LOCATION_MZONE,0,nil) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c58753372.filter2(chkc,tp) end - if chk==0 then return Duel.IsExistingTarget(c58753372.filter2,tp,LOCATION_MZONE,0,1,nil,tp) and g1:GetClassCount(Card.GetLevel)>1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c58753372.filter2,tp,LOCATION_MZONE,0,1,1,nil,tp) -end -function c58753372.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local g=Duel.GetMatchingGroup(c58753372.filter1,tp,LOCATION_MZONE,0,tc) - local lc=g:GetFirst() - local lv=tc:GetLevel() - while lc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_CHANGE_LEVEL_FINAL) - e1:SetValue(lv) - e1:SetReset(RESET_EVENT+0x1fe0000) - lc:RegisterEffect(e1) - lc=g:GetNext() - end - end -end -function c58753372.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c58753372.spfilter1(c,e,tp) - return c:IsSetCard(0xdc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c58753372.spfilter2(c) - return c:IsSetCard(0xdc) and c:IsType(TYPE_MONSTER) -end -function c58753372.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=Duel.GetMatchingGroup(c58753372.spfilter1,tp,LOCATION_DECK,0,nil,e,tp) - return g:GetClassCount(Card.GetCode)>=3 - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) -end -function c58753372.spop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c58753372.spfilter2,tp,LOCATION_DECK,0,nil) - if g:GetClassCount(Card.GetCode)>=3 then - local cg=Group.CreateGroup() - for i=1,3 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,sg:GetFirst():GetCode()) - cg:Merge(sg) - end - Duel.ConfirmCards(1-tp,cg) - Duel.ShuffleDeck(tp) - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) - local tg=cg:Select(1-tp,1,1,nil) - local tc=tg:GetFirst() - if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - cg:RemoveCard(tc) - end - Duel.SendtoGrave(cg,REASON_EFFECT) - end -end +--超量妖精アルファン +function c58753372.initial_effect(c) + --lv + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(58753372,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c58753372.target) + e1:SetOperation(c58753372.activate) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(58753372,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,58753372) + e2:SetCost(c58753372.spcost) + e2:SetTarget(c58753372.sptg) + e2:SetOperation(c58753372.spop) + c:RegisterEffect(e2) +end +function c58753372.filter1(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c58753372.filter2(c,tp) + return c58753372.filter1(c) and c:IsSetCard(0xdc) + and Duel.IsExistingMatchingCard(c58753372.filter1,tp,LOCATION_MZONE,0,1,c) +end +function c58753372.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g1=Duel.GetMatchingGroup(c58753372.filter1,tp,LOCATION_MZONE,0,nil) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c58753372.filter2(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c58753372.filter2,tp,LOCATION_MZONE,0,1,nil,tp) and g1:GetClassCount(Card.GetLevel)>1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c58753372.filter2,tp,LOCATION_MZONE,0,1,1,nil,tp) +end +function c58753372.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local g=Duel.GetMatchingGroup(c58753372.filter1,tp,LOCATION_MZONE,0,tc) + local lc=g:GetFirst() + local lv=tc:GetLevel() + while lc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CHANGE_LEVEL_FINAL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + lc:RegisterEffect(e1) + lc=g:GetNext() + end + end +end +function c58753372.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c58753372.spfilter1(c,e,tp) + return c:IsSetCard(0xdc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c58753372.spfilter2(c) + return c:IsSetCard(0xdc) and c:IsType(TYPE_MONSTER) +end +function c58753372.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetMatchingGroup(c58753372.spfilter1,tp,LOCATION_DECK,0,nil,e,tp) + return g:GetClassCount(Card.GetCode)>=3 + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK) +end +function c58753372.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c58753372.spfilter2,tp,LOCATION_DECK,0,nil) + if g:GetClassCount(Card.GetCode)>=3 then + local cg=Group.CreateGroup() + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,sg:GetFirst():GetCode()) + cg:Merge(sg) + end + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleDeck(tp) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local tg=cg:Select(1-tp,1,1,nil) + local tc=tg:GetFirst() + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + cg:RemoveCard(tc) + end + Duel.SendtoGrave(cg,REASON_EFFECT) + end +end diff --git a/script/c58787301.lua b/script/c58787301.lua new file mode 100644 index 00000000..2a14e7d1 --- /dev/null +++ b/script/c58787301.lua @@ -0,0 +1,42 @@ +--堕天使降臨 +function c58787301.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c58787301.cost) + e1:SetTarget(c58787301.target) + e1:SetOperation(c58787301.activate) + c:RegisterEffect(e1) +end +function c58787301.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c58787301.cfilter(c,e,tp) + return c:IsFaceup() and c:GetLevel()>0 + and Duel.IsExistingMatchingCard(c58787301.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,c:GetLevel()) +end +function c58787301.spfilter(c,e,tp,lv) + return c:IsSetCard(0xef) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c58787301.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c58787301.cfilter,tp,0,LOCATION_MZONE,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c58787301.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=math.min(Duel.GetLocationCount(tp,LOCATION_MZONE),2) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g=Duel.SelectMatchingCard(tp,c58787301.cfilter,tp,0,LOCATION_MZONE,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.HintSelection(g) + local lv=g:GetFirst():GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c58787301.spfilter,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp,lv) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c58820923.lua b/script/c58820923.lua index 4180726b..d2bff745 100644 --- a/script/c58820923.lua +++ b/script/c58820923.lua @@ -23,6 +23,7 @@ function c58820923.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetCondition(c58820923.atkcon) e3:SetCost(c58820923.atkcost) e3:SetTarget(c58820923.atktg) diff --git a/script/c58851034.lua b/script/c58851034.lua index 69926020..9ae86bc0 100644 --- a/script/c58851034.lua +++ b/script/c58851034.lua @@ -1,48 +1,47 @@ ---封魔の呪印 -function c58851034.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c58851034.condition) - e1:SetCost(c58851034.cost) - e1:SetTarget(c58851034.target) - e1:SetOperation(c58851034.activate) - c:RegisterEffect(e1) -end -function c58851034.condition(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c58851034.cfilter(c) - return c:IsType(TYPE_SPELL) and c:IsDiscardable() -end -function c58851034.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end - if chk==0 then return Duel.IsExistingMatchingCard(c58851034.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c58851034.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) -end -function c58851034.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c58851034.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c58851034.aclimit) - e1:SetLabel(re:GetHandler():GetCode()) - Duel.RegisterEffect(e1,tp) -end -function c58851034.aclimit(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsCode(e:GetLabel()) -end +--封魔の呪印 +function c58851034.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c58851034.condition) + e1:SetCost(c58851034.cost) + e1:SetTarget(c58851034.target) + e1:SetOperation(c58851034.activate) + c:RegisterEffect(e1) +end +function c58851034.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c58851034.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c58851034.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end + if chk==0 then return Duel.IsExistingMatchingCard(c58851034.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c58851034.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) +end +function c58851034.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c58851034.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c58851034.aclimit) + e1:SetLabel(re:GetHandler():GetCode()) + Duel.RegisterEffect(e1,tp) +end +function c58851034.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsCode(e:GetLabel()) +end diff --git a/script/c58901502.lua b/script/c58901502.lua index 91a40560..31bdac78 100644 --- a/script/c58901502.lua +++ b/script/c58901502.lua @@ -1,63 +1,63 @@ ---ゴヨウ・ディフェンダー -function c58901502.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c58901502.spcon) - e1:SetTarget(c58901502.sptg) - e1:SetOperation(c58901502.spop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(58901502,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BE_BATTLE_TARGET) - e2:SetOperation(c58901502.atkop) - c:RegisterEffect(e2) -end -function c58901502.cfilter(c) - return c:IsFacedown() or not (c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsType(TYPE_SYNCHRO)) -end -function c58901502.spcon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c58901502.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c58901502.spfilter(c,e,tp) - return c:IsCode(58901502) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c58901502.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c58901502.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c58901502.spop(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,c58901502.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c58901502.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(c58901502.atkval) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - c:RegisterEffect(e1) - end -end -function c58901502.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsType(TYPE_SYNCHRO) -end -function c58901502.atkval(e,c) - return Duel.GetMatchingGroupCount(c58901502.filter,c:GetControler(),LOCATION_MZONE,0,e:GetHandler())*1000 -end +--ゴヨウ・ディフェンダー +function c58901502.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c58901502.spcon) + e1:SetTarget(c58901502.sptg) + e1:SetOperation(c58901502.spop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(58901502,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetOperation(c58901502.atkop) + c:RegisterEffect(e2) +end +function c58901502.cfilter(c) + return c:IsFacedown() or not (c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsType(TYPE_SYNCHRO)) +end +function c58901502.spcon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c58901502.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c58901502.spfilter(c,e,tp) + return c:IsCode(58901502) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c58901502.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c58901502.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c58901502.spop(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,c58901502.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c58901502.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(c58901502.atkval) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + end +end +function c58901502.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsType(TYPE_SYNCHRO) +end +function c58901502.atkval(e,c) + return Duel.GetMatchingGroupCount(c58901502.filter,c:GetControler(),LOCATION_MZONE,0,e:GetHandler())*1000 +end diff --git a/script/c58921041.lua b/script/c58921041.lua index a12ed614..a38b7912 100644 --- a/script/c58921041.lua +++ b/script/c58921041.lua @@ -1,35 +1,35 @@ ---魔封じの芳香 -function c58921041.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cannot activate - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_CANNOT_ACTIVATE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(1,1) - e2:SetValue(c58921041.aclimit) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SSET) - e3:SetRange(LOCATION_SZONE) - e3:SetOperation(c58921041.aclimset) - c:RegisterEffect(e3) -end -function c58921041.aclimit(e,re,tp) - if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_SPELL) then return false end - local c=re:GetHandler() - return not c:IsLocation(LOCATION_SZONE) or c:GetFlagEffect(58921041)>0 -end -function c58921041.aclimset(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - while tc do - tc:RegisterFlagEffect(58921041,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,1) - tc=eg:GetNext() - end -end +--魔封じの芳香 +function c58921041.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot activate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,1) + e2:SetValue(c58921041.aclimit) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SSET) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c58921041.aclimset) + c:RegisterEffect(e3) +end +function c58921041.aclimit(e,re,tp) + if not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsActiveType(TYPE_SPELL) then return false end + local c=re:GetHandler() + return not c:IsLocation(LOCATION_SZONE) or c:GetFlagEffect(58921041)>0 +end +function c58921041.aclimset(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + tc:RegisterFlagEffect(58921041,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,1) + tc=eg:GetNext() + end +end diff --git a/script/c58924378.lua b/script/c58924378.lua index 7010a0d7..07cef507 100644 --- a/script/c58924378.lua +++ b/script/c58924378.lua @@ -1,27 +1,27 @@ ---エレキャッスル -function c58924378.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk down - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_BATTLED) - e2:SetRange(LOCATION_FZONE) - e2:SetOperation(c58924378.atkdn) - c:RegisterEffect(e2) -end -function c58924378.atkdn(e,tp,eg,ep,ev,re,r,rp,chk) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if d and d:IsSetCard(0xe) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(-1000) - a:RegisterEffect(e1) - end -end +--エレキャッスル +function c58924378.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLED) + e2:SetRange(LOCATION_FZONE) + e2:SetOperation(c58924378.atkdn) + c:RegisterEffect(e2) +end +function c58924378.atkdn(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if d and d:IsSetCard(0xe) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-1000) + a:RegisterEffect(e1) + end +end diff --git a/script/c58984738.lua b/script/c58984738.lua new file mode 100644 index 00000000..89200380 --- /dev/null +++ b/script/c58984738.lua @@ -0,0 +1,73 @@ +--真竜機士ダイナマイトK +--True Draco Dynamite Knuckle, the Fighter +--Script by nekrozar +function c58984738.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(58984738,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c58984738.otcon) + e1:SetOperation(c58984738.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(58984738,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c58984738.thcon) + e2:SetTarget(c58984738.thtg) + e2:SetOperation(c58984738.thop) + c:RegisterEffect(e2) +end +function c58984738.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsReleasable() +end +function c58984738.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c58984738.otfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c58984738.otop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=Duel.SelectMatchingCard(tp,c58984738.otfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c58984738.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and rp~=tp +end +function c58984738.thfilter(c,tp) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:GetType()==0x20004 + and (c:IsAbleToHand() or (c:GetActivateEffect():IsActivatable(tp) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0)) +end +function c58984738.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c58984738.thfilter,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c58984738.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(58984738,3)) + local g=Duel.SelectMatchingCard(tp,c58984738.thfilter,tp,LOCATION_DECK,0,1,1,nil,tp) + local tc=g:GetFirst() + if tc then + local b1=tc:IsAbleToHand() + local b2=tc:GetActivateEffect():IsActivatable(tp) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + if b1 and (not b2 or Duel.SelectYesNo(tp,aux.Stringid(58984738,2))) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + else + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + local cost=te:GetCost() + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,te,0,tp,tp,Duel.GetCurrentChain()) + end + end +end diff --git a/script/c58990362.lua b/script/c58990362.lua index 58375a98..ebfd800e 100644 --- a/script/c58990362.lua +++ b/script/c58990362.lua @@ -1,55 +1,55 @@ ---秘竜星-セフィラシウゴ -function c58990362.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c58990362.splimit) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCountLimit(1,58990362) - e3:SetCondition(c58990362.condition1) - e3:SetTarget(c58990362.target) - e3:SetOperation(c58990362.operation) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_DESTROYED) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e4:SetCondition(c58990362.condition2) - c:RegisterEffect(e4) -end -function c58990362.splimit(e,c,sump,sumtype,sumpos,targetp) - if c:IsSetCard(0x9e) or c:IsSetCard(0xc4) then return false end - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c58990362.condition1(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM -end -function c58990362.condition2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp -end -function c58990362.thfilter(c) - return (c:IsSetCard(0x9e) or c:IsSetCard(0xc4)) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c58990362.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c58990362.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c58990362.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c58990362.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--秘竜星-セフィラシウゴ +function c58990362.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c58990362.splimit) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCountLimit(1,58990362) + e3:SetCondition(c58990362.condition1) + e3:SetTarget(c58990362.target) + e3:SetOperation(c58990362.operation) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_DESTROYED) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetCondition(c58990362.condition2) + c:RegisterEffect(e4) +end +function c58990362.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0x9e) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c58990362.condition1(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c58990362.condition2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c58990362.thfilter(c) + return (c:IsSetCard(0x9e) or c:IsSetCard(0xc4)) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c58990362.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c58990362.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c58990362.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c58990362.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c58996430.lua b/script/c58996430.lua index f7c75867..f2e4a8c6 100644 --- a/script/c58996430.lua +++ b/script/c58996430.lua @@ -1,36 +1,36 @@ ---ライトロード・ビースト ウォルフ -function c58996430.initial_effect(c) - c:EnableUnsummonable() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetDescription(aux.Stringid(58996430,0)) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c58996430.condtion) - e1:SetTarget(c58996430.target) - e1:SetOperation(c58996430.operation) - c:RegisterEffect(e1) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(c58996430.splimit) - c:RegisterEffect(e2) -end -function c58996430.splimit(e,se,sp,st) - return se:IsHasType(EFFECT_TYPE_ACTIONS) -end -function c58996430.condtion(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetPreviousLocation()==LOCATION_DECK -end -function c58996430.target(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 c58996430.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end +--ライトロード・ビースト ウォルフ +function c58996430.initial_effect(c) + c:EnableUnsummonable() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(58996430,0)) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c58996430.condtion) + e1:SetTarget(c58996430.target) + e1:SetOperation(c58996430.operation) + c:RegisterEffect(e1) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(c58996430.splimit) + c:RegisterEffect(e2) +end +function c58996430.splimit(e,se,sp,st) + return se:IsHasType(EFFECT_TYPE_ACTIONS) +end +function c58996430.condtion(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetPreviousLocation()==LOCATION_DECK +end +function c58996430.target(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 c58996430.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c59048135.lua b/script/c59048135.lua index ff0bdbf4..598b07e3 100644 --- a/script/c59048135.lua +++ b/script/c59048135.lua @@ -1,77 +1,78 @@ ---昇華する紋章 -function c59048135.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(59048135,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetCost(c59048135.thcost) - e2:SetTarget(c59048135.thtg) - e2:SetOperation(c59048135.thop) - c:RegisterEffect(e2) - --cannot be target - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(c59048135.etarget) - e3:SetValue(c59048135.evalue) - c:RegisterEffect(e3) - Duel.AddCustomActivityCounter(59048135,ACTIVITY_SUMMON,c59048135.counterfilter) - Duel.AddCustomActivityCounter(59048135,ACTIVITY_SPSUMMON,c59048135.counterfilter) -end -function c59048135.counterfilter(c) - return c:IsRace(RACE_PSYCHO) and c:IsType(TYPE_XYZ) or c:IsSetCard(0x76) -end -function c59048135.etarget(e,c) - return c:IsRace(RACE_PSYCHO) and c:IsType(TYPE_XYZ) -end -function c59048135.evalue(e,re,rp) - return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) -end -function c59048135.cfilter(c) - return c:IsSetCard(0x76) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() -end -function c59048135.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCustomActivityCount(59048135,tp,ACTIVITY_SUMMON)==0 - and Duel.GetCustomActivityCount(59048135,tp,ACTIVITY_SPSUMMON)==0 - and Duel.IsExistingMatchingCard(c59048135.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c59048135.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetTarget(c59048135.splimit) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_SUMMON) - Duel.RegisterEffect(e2,tp) -end -function c59048135.splimit(e,c) - return not (c:IsRace(RACE_PSYCHO) and c:IsType(TYPE_XYZ)) and not c:IsSetCard(0x76) -end -function c59048135.filter(c) - return c:IsSetCard(0x92) and c:IsType(TYPE_SPELL+TYPE_TRAP) and not c:IsCode(59048135) and c:IsAbleToHand() -end -function c59048135.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c59048135.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c59048135.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c59048135.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--昇華する紋章 +function c59048135.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(59048135,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCost(c59048135.thcost) + e2:SetTarget(c59048135.thtg) + e2:SetOperation(c59048135.thop) + c:RegisterEffect(e2) + --cannot be target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetRange(LOCATION_FZONE) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c59048135.etarget) + e3:SetValue(c59048135.evalue) + c:RegisterEffect(e3) + Duel.AddCustomActivityCounter(59048135,ACTIVITY_SUMMON,c59048135.counterfilter) + Duel.AddCustomActivityCounter(59048135,ACTIVITY_SPSUMMON,c59048135.counterfilter) +end +function c59048135.counterfilter(c) + return c:IsRace(RACE_PSYCHO) and c:IsType(TYPE_XYZ) or c:IsSetCard(0x76) +end +function c59048135.etarget(e,c) + return c:IsRace(RACE_PSYCHO) and c:IsType(TYPE_XYZ) +end +function c59048135.evalue(e,re,rp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end +function c59048135.cfilter(c) + return c:IsSetCard(0x76) and c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c59048135.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(59048135,tp,ACTIVITY_SUMMON)==0 + and Duel.GetCustomActivityCount(59048135,tp,ACTIVITY_SPSUMMON)==0 + and Duel.IsExistingMatchingCard(c59048135.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c59048135.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c59048135.splimit) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) +end +function c59048135.splimit(e,c) + return not (c:IsRace(RACE_PSYCHO) and c:IsType(TYPE_XYZ)) and not c:IsSetCard(0x76) +end +function c59048135.filter(c) + return c:IsSetCard(0x92) and c:IsType(TYPE_SPELL+TYPE_TRAP) and not c:IsCode(59048135) and c:IsAbleToHand() +end +function c59048135.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c59048135.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c59048135.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c59048135.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c59057152.lua b/script/c59057152.lua index bc567bdf..dd8d4719 100644 --- a/script/c59057152.lua +++ b/script/c59057152.lua @@ -1,72 +1,72 @@ ---聖騎士モルドレッド -function c59057152.initial_effect(c) - --normal monster - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetCode(EFFECT_ADD_TYPE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c59057152.eqcon1) - e1:SetValue(TYPE_NORMAL) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_REMOVE_TYPE) - e2:SetValue(TYPE_EFFECT) - c:RegisterEffect(e2) - --Attribute Dark - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetCode(EFFECT_CHANGE_ATTRIBUTE) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c59057152.eqcon2) - e3:SetValue(ATTRIBUTE_DARK) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_LEVEL) - e4:SetValue(1) - c:RegisterEffect(e4) - --spsummon - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(59057152,0)) - e5:SetCategory(CATEGORY_SPECIAL_SUMMON) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetCondition(c59057152.spcon) - e5:SetTarget(c59057152.sptg) - e5:SetOperation(c59057152.spop) - c:RegisterEffect(e5) -end -function c59057152.eqcon1(e) - local eg=e:GetHandler():GetEquipGroup() - return not eg or not eg:IsExists(Card.IsSetCard,1,nil,0x207a) -end -function c59057152.eqcon2(e) - local eg=e:GetHandler():GetEquipGroup() - return eg and eg:IsExists(Card.IsSetCard,1,nil,0x207a) -end -function c59057152.spcon(e,tp,eg,ep,ev,re,r,rp) - return c59057152.eqcon2(e) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 -end -function c59057152.spfilter(c,e,tp) - return c:IsSetCard(0x107a) and c:GetCode()~=59057152 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c59057152.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c59057152.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c59057152.desfilter(c) - return c:IsFaceup() and c:IsType(TYPE_EQUIP) -end -function c59057152.spop(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,c59057152.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local dg=Duel.SelectMatchingCard(tp,c59057152.desfilter,tp,LOCATION_SZONE,0,1,1,nil) - Duel.Destroy(dg,REASON_EFFECT) - end -end +--聖騎士モルドレッド +function c59057152.initial_effect(c) + --normal monster + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c59057152.eqcon1) + e1:SetValue(TYPE_NORMAL) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_REMOVE_TYPE) + e2:SetValue(TYPE_EFFECT) + c:RegisterEffect(e2) + --Attribute Dark + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c59057152.eqcon2) + e3:SetValue(ATTRIBUTE_DARK) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_LEVEL) + e4:SetValue(1) + c:RegisterEffect(e4) + --spsummon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(59057152,0)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCondition(c59057152.spcon) + e5:SetTarget(c59057152.sptg) + e5:SetOperation(c59057152.spop) + c:RegisterEffect(e5) +end +function c59057152.eqcon1(e) + local eg=e:GetHandler():GetEquipGroup() + return not eg or not eg:IsExists(Card.IsSetCard,1,nil,0x207a) +end +function c59057152.eqcon2(e) + local eg=e:GetHandler():GetEquipGroup() + return eg and eg:IsExists(Card.IsSetCard,1,nil,0x207a) +end +function c59057152.spcon(e,tp,eg,ep,ev,re,r,rp) + return c59057152.eqcon2(e) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 +end +function c59057152.spfilter(c,e,tp) + return c:IsSetCard(0x107a) and c:GetCode()~=59057152 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c59057152.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c59057152.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c59057152.desfilter(c) + return c:IsFaceup() and c:IsType(TYPE_EQUIP) +end +function c59057152.spop(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,c59057152.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,c59057152.desfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.Destroy(dg,REASON_EFFECT) + end +end diff --git a/script/c5914184.lua b/script/c5914184.lua index 48e4e3c1..679ca88d 100644 --- a/script/c5914184.lua +++ b/script/c5914184.lua @@ -1,59 +1,59 @@ ---倍返し -function c5914184.initial_effect(c) - c:EnableCounterPermit(0x1a) - --counter - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_DAMAGE) - e1:SetCondition(c5914184.actcon) - e1:SetOperation(c5914184.actop) - c:RegisterEffect(e1) -end -function c5914184.actcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp and tp~=rp and ev>=1000 and bit.band(r,REASON_EFFECT)~=0 -end -function c5914184.actop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - local ct=math.floor(ev/1000) - c:AddCounter(0x1a,ct) - --damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(5914184,0)) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetRange(LOCATION_SZONE) - e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCondition(c5914184.damcon) - e1:SetTarget(c5914184.damtg) - e1:SetOperation(c5914184.damop) - if Duel.GetTurnPlayer()==tp then - e1:SetLabel(0) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - else - e1:SetLabel(Duel.GetTurnCount()) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) - end - c:RegisterEffect(e1) - end -end -function c5914184.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and Duel.GetTurnCount()~=e:GetLabel() -end -function c5914184.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - local dam=e:GetHandler():GetCounter(0x1a)*2000; - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c5914184.damop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) - end -end +--倍返し +function c5914184.initial_effect(c) + c:EnableCounterPermit(0x1a) + --counter + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c5914184.actcon) + e1:SetOperation(c5914184.actop) + c:RegisterEffect(e1) +end +function c5914184.actcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and tp~=rp and ev>=1000 and bit.band(r,REASON_EFFECT)~=0 +end +function c5914184.actop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local ct=math.floor(ev/1000) + c:AddCounter(0x1a,ct) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(5914184,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(c5914184.damcon) + e1:SetTarget(c5914184.damtg) + e1:SetOperation(c5914184.damop) + if Duel.GetTurnPlayer()==tp then + e1:SetLabel(0) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + else + e1:SetLabel(Duel.GetTurnCount()) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + end + c:RegisterEffect(e1) + end +end +function c5914184.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetTurnCount()~=e:GetLabel() +end +function c5914184.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + local dam=e:GetHandler():GetCounter(0x1a)*2000; + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c5914184.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) + end +end diff --git a/script/c59156966.lua b/script/c59156966.lua index efaf0c40..db0cb419 100644 --- a/script/c59156966.lua +++ b/script/c59156966.lua @@ -1,43 +1,43 @@ ---黄金の歯車装置箱 -function c59156966.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - 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(c59156966.condition) - e1:SetTarget(c59156966.target) - e1:SetOperation(c59156966.activate) - c:RegisterEffect(e1) -end -function c59156966.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c59156966.filter(c) - return c:IsFaceup() and c:IsSetCard(0x11) -end -function c59156966.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c59156966.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c59156966.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c59156966.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c59156966.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(500) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UPDATE_DEFENSE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(1500) - tc:RegisterEffect(e2) - end -end +--黄金の歯車装置箱 +function c59156966.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + 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(c59156966.condition) + e1:SetTarget(c59156966.target) + e1:SetOperation(c59156966.activate) + c:RegisterEffect(e1) +end +function c59156966.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c59156966.filter(c) + return c:IsFaceup() and c:IsSetCard(0x11) +end +function c59156966.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c59156966.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c59156966.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c59156966.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c59156966.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(1500) + tc:RegisterEffect(e2) + end +end diff --git a/script/c59170782.lua b/script/c59170782.lua index bc056c1c..3a13b7e6 100644 --- a/script/c59170782.lua +++ b/script/c59170782.lua @@ -8,6 +8,7 @@ function c59170782.initial_effect(c) e1:SetDescription(aux.Stringid(59170782,0)) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c59170782.tgcon1) e1:SetCost(c59170782.tgcost) @@ -18,6 +19,7 @@ function c59170782.initial_effect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_ATTACK_ANNOUNCE) e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetCondition(c59170782.tgcon2) e2:SetCost(c59170782.tgcost) e2:SetOperation(c59170782.tgop2) diff --git a/script/c59197169.lua b/script/c59197169.lua index ae47bce7..1ba94427 100644 --- a/script/c59197169.lua +++ b/script/c59197169.lua @@ -1,26 +1,26 @@ ---闇 -function c59197169.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetValue(c59197169.val) - c:RegisterEffect(e2) - --Def - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end -function c59197169.val(e,c) - local r=c:GetRace() - if bit.band(r,RACE_FIEND+RACE_SPELLCASTER)>0 then return 200 - elseif bit.band(r,RACE_FAIRY)>0 then return -200 - else return 0 end -end +--闇 +function c59197169.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(c59197169.val) + c:RegisterEffect(e2) + --Def + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end +function c59197169.val(e,c) + local r=c:GetRace() + if bit.band(r,RACE_FIEND+RACE_SPELLCASTER)>0 then return 200 + elseif bit.band(r,RACE_FAIRY)>0 then return -200 + else return 0 end +end diff --git a/script/c59255742.lua b/script/c59255742.lua index 903e5507..1e0f337f 100644 --- a/script/c59255742.lua +++ b/script/c59255742.lua @@ -1,126 +1,126 @@ ---ゴヨウ・エンペラー -function c59255742.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,c59255742.ffilter,2,false) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCondition(c59255742.spcon) - e1:SetTarget(c59255742.sptg) - e1:SetOperation(c59255742.spop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_BATTLE_DESTROYED) - e2:SetCondition(c59255742.spcon2) - e2:SetTarget(c59255742.sptg2) - e2:SetOperation(c59255742.spop) - c:RegisterEffect(e2) - --take control - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_CONTROL) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c59255742.cost) - e3:SetTarget(c59255742.target) - e3:SetOperation(c59255742.operation) - c:RegisterEffect(e3) - --return control - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c59255742.ctcon) - e4:SetTarget(c59255742.cttg) - e4:SetOperation(c59255742.ctop) - c:RegisterEffect(e4) -end -c59255742.miracle_synchro_fusion=true -function c59255742.ffilter(c) - return c:IsAttribute(ATTRIBUTE_EARTH) and c:IsRace(RACE_WARRIOR) and c:IsType(TYPE_SYNCHRO) -end -function c59255742.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - if not c:IsRelateToBattle() or c:IsFacedown() then return false end - return bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) -end -function c59255742.spcon2(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local rc=tc:GetReasonCard() - return eg:GetCount()==1 and rc:IsControler(tp) and rc:GetOwner()~=tp - and tc:IsType(TYPE_MONSTER) and tc:IsReason(REASON_BATTLE) and tc:IsLocation(LOCATION_GRAVE) -end -function c59255742.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local bc=e:GetHandler():GetBattleTarget() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetTargetCard(bc) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) -end -function c59255742.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - local tc=eg:GetFirst() - local rc=tc:GetReasonCard() - local bc=rc:GetBattleTarget() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetTargetCard(bc) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) -end -function c59255742.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c59255742.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c59255742.ffilter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c59255742.ffilter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c59255742.filter(c,tp) - return c:GetSummonPlayer()==1-tp and c:IsControlerCanBeChanged() -end -function c59255742.target(e,tp,eg,ep,ev,re,r,rp,chk) - local g=eg:Filter(c59255742.filter,nil,tp) - if chk==0 then return g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=g:GetCount()-1 end - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) -end -function c59255742.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if Duel.GetLocationCount(tp,LOCATION_MZONE)0 + and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) +end +function c59255742.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + local rc=tc:GetReasonCard() + local bc=rc:GetBattleTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) +end +function c59255742.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c59255742.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c59255742.ffilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c59255742.ffilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c59255742.filter(c,tp) + return c:GetSummonPlayer()==1-tp and c:IsControlerCanBeChanged() +end +function c59255742.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=eg:Filter(c59255742.filter,nil,tp) + if chk==0 then return g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=g:GetCount()-1 end + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) +end +function c59255742.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.GetLocationCount(tp,LOCATION_MZONE)0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c5929801.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c5929801.thfilter(c) - return c:IsCode(5929801) and c:IsAbleToHand() -end -function c5929801.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c5929801.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c5929801.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c5929801.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--RR-ファジー・レイニアス +function c5929801.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,5929801) + e1:SetCondition(c5929801.spcon) + e1:SetCost(c5929801.cost) + e1:SetTarget(c5929801.sptg) + e1:SetOperation(c5929801.spop) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,5929802) + e2:SetCost(c5929801.cost) + e2:SetTarget(c5929801.thtg) + e2:SetOperation(c5929801.thop) + c:RegisterEffect(e2) + Duel.AddCustomActivityCounter(5929801,ACTIVITY_SPSUMMON,c5929801.counterfilter) +end +function c5929801.counterfilter(c) + return c:IsSetCard(0xba) +end +function c5929801.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(5929801,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetTarget(c5929801.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c5929801.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0xba) +end +function c5929801.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xba) and not c:IsCode(5929801) +end +function c5929801.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c5929801.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c5929801.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c5929801.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c5929801.thfilter(c) + return c:IsCode(5929801) and c:IsAbleToHand() +end +function c5929801.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c5929801.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c5929801.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c5929801.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c59344077.lua b/script/c59344077.lua index 02ca6c3f..bb6611bb 100644 --- a/script/c59344077.lua +++ b/script/c59344077.lua @@ -30,8 +30,7 @@ function c59344077.activate(e,tp,eg,ep,ev,re,r,rp) return end end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c59364406.lua b/script/c59364406.lua index 0dfea2e7..19cce27a 100644 --- a/script/c59364406.lua +++ b/script/c59364406.lua @@ -16,7 +16,7 @@ function c59364406.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c59364406.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c59364406.sptg) e2:SetOperation(c59364406.spop) c:RegisterEffect(e2) @@ -37,7 +37,7 @@ function c59364406.initial_effect(c) e4:SetType(EFFECT_TYPE_EQUIP) e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e4:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e4:SetCondition(c59364406.uncon) + e4:SetCondition(aux.IsUnionState) e4:SetValue(c59364406.repval) c:RegisterEffect(e4) --eqlimit @@ -48,9 +48,7 @@ function c59364406.initial_effect(c) e5:SetValue(c59364406.eqlimit) c:RegisterEffect(e5) end -function c59364406.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c59364406.old_union=true function c59364406.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -78,7 +76,7 @@ function c59364406.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c59364406.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(59364406)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -96,7 +94,7 @@ function c59364406.spop(e,tp,eg,ep,ev,re,r,rp) end end function c59364406.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and ep~=tp and eg:GetFirst()==e:GetHandler():GetEquipTarget() + return aux.IsUnionState(e) and ep~=tp and eg:GetFirst()==e:GetHandler():GetEquipTarget() end function c59364406.desfilter(c) return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) diff --git a/script/c59380081.lua b/script/c59380081.lua index 949a32a2..6b4521bf 100644 --- a/script/c59380081.lua +++ b/script/c59380081.lua @@ -1,14 +1,14 @@ ---ビッグホーン・マンモス -function c59380081.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetTarget(c59380081.target) - c:RegisterEffect(e1) -end -function c59380081.target(e,c) - return c:IsStatus(STATUS_SUMMON_TURN+STATUS_FLIP_SUMMON_TURN+STATUS_SPSUMMON_TURN) -end +--ビッグホーン・マンモス +function c59380081.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetTarget(c59380081.target) + c:RegisterEffect(e1) +end +function c59380081.target(e,c) + return c:IsStatus(STATUS_SUMMON_TURN+STATUS_FLIP_SUMMON_TURN+STATUS_SPSUMMON_TURN) +end diff --git a/script/c59385322.lua b/script/c59385322.lua index 78b7f1d9..5a404e2d 100644 --- a/script/c59385322.lua +++ b/script/c59385322.lua @@ -1,21 +1,6 @@ --コアバスター function c59385322.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(c59385322.target) - e1:SetOperation(c59385322.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(c59385322.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x1d)) --destroy local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(59385322,0)) @@ -39,26 +24,6 @@ function c59385322.initial_effect(c) e4:SetOperation(c59385322.thop) c:RegisterEffect(e4) end -function c59385322.eqlimit(e,c) - return c:IsSetCard(0x1d) -end -function c59385322.filter(c) - return c:IsFaceup() and c:IsSetCard(0x1d) -end -function c59385322.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c59385322.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c59385322.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c59385322.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c59385322.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 c59385322.descon(e,tp,eg,ep,ev,re,r,rp) local ec=e:GetHandler():GetEquipTarget() if ec~=Duel.GetAttacker() and ec~=Duel.GetAttackTarget() then return false end diff --git a/script/c59432181.lua b/script/c59432181.lua index 3d19cbf8..6e9cfb3f 100644 --- a/script/c59432181.lua +++ b/script/c59432181.lua @@ -9,21 +9,23 @@ function c59432181.initial_effect(c) e1:SetOperation(c59432181.activate) c:RegisterEffect(e1) end -function c59432181.filter(c) - return c:IsType(TYPE_FUSION) +function c59432181.filter(c,tp) + return c:IsFaceup() and Duel.IsExistingMatchingCard(c59432181.cfilter,tp,LOCATION_EXTRA,0,1,nil,c) +end +function c59432181.cfilter(c,tc) + return c:IsType(TYPE_FUSION) and not c:IsCode(tc:GetFusionCode()) end function c59432181.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,nil) - and Duel.IsExistingMatchingCard(c59432181.filter,tp,LOCATION_EXTRA,0,1,nil) end + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c59432181.filter(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c59432181.filter,tp,LOCATION_MZONE,0,1,nil,tp) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SelectTarget(tp,c59432181.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) end function c59432181.activate(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local cg=Duel.SelectMatchingCard(tp,c59432181.filter,tp,LOCATION_EXTRA,0,1,1,nil) + local cg=Duel.SelectMatchingCard(tp,c59432181.cfilter,tp,LOCATION_EXTRA,0,1,1,nil,tc) if cg:GetCount()==0 then return end Duel.ConfirmCards(1-tp,cg) local code1,code2=cg:GetFirst():GetOriginalCodeRule() diff --git a/script/c59463312.lua b/script/c59463312.lua index 2d081ed6..9a4f5831 100644 --- a/script/c59463312.lua +++ b/script/c59463312.lua @@ -1,73 +1,73 @@ ---冥帝従騎エイドス -function c59463312.initial_effect(c) - --summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(59463312,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c59463312.sumop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(59463312,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_GRAVE) - e3:SetCountLimit(1,59463312) - e3:SetCost(c59463312.cost) - e3:SetTarget(c59463312.target) - e3:SetOperation(c59463312.operation) - c:RegisterEffect(e3) -end -function c59463312.sumop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,59463312)~=0 then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetTargetRange(LOCATION_HAND,0) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetValue(0x1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_EXTRA_SET_COUNT) - Duel.RegisterEffect(e2,tp) - Duel.RegisterFlagEffect(tp,59463312,RESET_PHASE+PHASE_END,0,1) -end -function c59463312.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c59463312.filter(c,e,tp) - return c:GetAttack()==800 and c:GetDefense()==1000 and not c:IsCode(59463312) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c59463312.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c59463312.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c59463312.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c59463312.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c59463312.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetTarget(c59463312.splimit) - Duel.RegisterEffect(e1,tp) -end -function c59463312.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return c:IsLocation(LOCATION_EXTRA) -end +--冥帝従騎エイドス +function c59463312.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59463312,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c59463312.sumop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(59463312,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1,59463312) + e3:SetCost(c59463312.cost) + e3:SetTarget(c59463312.target) + e3:SetOperation(c59463312.operation) + c:RegisterEffect(e3) +end +function c59463312.sumop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,59463312)~=0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetValue(0x1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_EXTRA_SET_COUNT) + Duel.RegisterEffect(e2,tp) + Duel.RegisterFlagEffect(tp,59463312,RESET_PHASE+PHASE_END,0,1) +end +function c59463312.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c59463312.filter(c,e,tp) + return c:GetAttack()==800 and c:GetDefense()==1000 and not c:IsCode(59463312) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c59463312.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c59463312.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c59463312.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c59463312.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c59463312.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c59463312.splimit) + Duel.RegisterEffect(e1,tp) +end +function c59463312.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:IsLocation(LOCATION_EXTRA) +end diff --git a/script/c59496924.lua b/script/c59496924.lua index 1613bf29..c3cc5cef 100644 --- a/script/c59496924.lua +++ b/script/c59496924.lua @@ -1,4 +1,4 @@ ---Kozmo Landwalker +--Kozmo-ランドウォーカー function c59496924.initial_effect(c) --destroy replace local e1=Effect.CreateEffect(c) diff --git a/script/c59546528.lua b/script/c59546528.lua index f5918d45..af6f14f7 100644 --- a/script/c59546528.lua +++ b/script/c59546528.lua @@ -9,6 +9,7 @@ function c59546528.initial_effect(c) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c59546528.condition) + e1:SetCost(c59546528.cost) e1:SetTarget(c59546528.target) e1:SetOperation(c59546528.operation) c:RegisterEffect(e1) @@ -22,28 +23,28 @@ end function c59546528.cfilter2(c) return c:IsSetCard(0x2f) and c:IsType(TYPE_MONSTER) and not c:IsPublic() end -function c59546528.filter(c,e) - return c:IsFacedown() and c:IsAbleToHand() and (not e or c:IsRelateToEffect(e)) +function c59546528.filter(c) + return c:IsFacedown() and c:IsAbleToHand() +end +function c59546528.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c59546528.cfilter2,tp,LOCATION_HAND,0,1,nil) end + local ct=Duel.GetTargetCount(c59546528.filter,tp,0,LOCATION_SZONE,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local cg=Duel.SelectMatchingCard(tp,c59546528.cfilter2,tp,LOCATION_HAND,0,1,ct,nil) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleHand(tp) + e:SetLabel(cg:GetCount()) end function c59546528.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(1-tp) and c59546528.filter(chkc) end - if chk==0 then return Duel.IsExistingMatchingCard(c59546528.cfilter2,tp,LOCATION_HAND,0,1,nil) - and Duel.IsExistingTarget(c59546528.filter,tp,0,LOCATION_SZONE,1,nil) end - local ht=Duel.GetMatchingGroupCount(c59546528.cfilter2,tp,LOCATION_HAND,0,nil) + if chk==0 then return Duel.IsExistingTarget(c59546528.filter,tp,0,LOCATION_SZONE,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c59546528.filter,tp,0,LOCATION_SZONE,1,ht,nil) + local g=Duel.SelectTarget(tp,c59546528.filter,tp,0,LOCATION_SZONE,e:GetLabel(),e:GetLabel(),nil) Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) end function c59546528.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local hg=Duel.GetMatchingGroup(c59546528.cfilter2,tp,LOCATION_HAND,0,nil) - if hg:GetCount()0 then - Duel.SendtoHand(rg,nil,REASON_EFFECT) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) end end diff --git a/script/c59546797.lua b/script/c59546797.lua index 84ad55df..f5749f7e 100644 --- a/script/c59546797.lua +++ b/script/c59546797.lua @@ -1,71 +1,72 @@ ---ジュラゲド -function c59546797.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(59546797,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_RECOVER) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_BATTLE_STEP_END) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,59546797) - e1:SetCondition(c59546797.spcon) - e1:SetTarget(c59546797.sptg) - e1:SetOperation(c59546797.spop) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(59546797,1)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_MZONE) - e2:SetHintTiming(TIMING_DAMAGE_STEP) - e2:SetCondition(c59546797.atkcon) - e2:SetCost(c59546797.atkcost) - e2:SetTarget(c59546797.atktg) - e2:SetOperation(c59546797.atkop) - c:RegisterEffect(e2) -end -function c59546797.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_BATTLE_STEP -end -function c59546797.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) -end -function c59546797.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - Duel.Recover(tp,1000,REASON_EFFECT) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c59546797.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c59546797.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c59546797.atktg(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,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c59546797.atkop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) - tc:RegisterEffect(e1) -end +--ジュラゲド +function c59546797.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59546797,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_STEP_END) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,59546797) + e1:SetCondition(c59546797.spcon) + e1:SetTarget(c59546797.sptg) + e1:SetOperation(c59546797.spop) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(59546797,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetCondition(c59546797.atkcon) + e2:SetCost(c59546797.atkcost) + e2:SetTarget(c59546797.atktg) + e2:SetOperation(c59546797.atkop) + c:RegisterEffect(e2) +end +function c59546797.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_BATTLE_STEP +end +function c59546797.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) +end +function c59546797.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Recover(tp,1000,REASON_EFFECT) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c59546797.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c59546797.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c59546797.atktg(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,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c59546797.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + tc:RegisterEffect(e1) +end diff --git a/script/c596051.lua b/script/c596051.lua index cfd1fb48..a1ed961e 100644 --- a/script/c596051.lua +++ b/script/c596051.lua @@ -1,34 +1,34 @@ ---毒蛇の牙 -function c596051.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DEFCHANGE) - 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(c596051.condition) - e1:SetTarget(c596051.target) - e1:SetOperation(c596051.activate) - c:RegisterEffect(e1) -end -function c596051.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c596051.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c596051.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_DEFENSE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(-500) - tc:RegisterEffect(e1) - end -end +--毒蛇の牙 +function c596051.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c596051.condition) + e1:SetTarget(c596051.target) + e1:SetOperation(c596051.activate) + c:RegisterEffect(e1) +end +function c596051.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c596051.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c596051.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c59627393.lua b/script/c59627393.lua index ab61c646..6e48341e 100644 --- a/script/c59627393.lua +++ b/script/c59627393.lua @@ -9,6 +9,7 @@ function c59627393.initial_effect(c) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetHintTiming(TIMING_BATTLE_PHASE) e1:SetCondition(c59627393.condition) e1:SetCost(c59627393.cost) diff --git a/script/c59640711.lua b/script/c59640711.lua index 47269838..e06cc2dd 100644 --- a/script/c59640711.lua +++ b/script/c59640711.lua @@ -26,8 +26,8 @@ end function c59640711.spop(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,c59640711.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c59640711.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c59644958.lua b/script/c59644958.lua index b9b7ac26..2454417a 100644 --- a/script/c59644958.lua +++ b/script/c59644958.lua @@ -1,27 +1,27 @@ ---オーバーレイ・オウル -function c59644958.initial_effect(c) - --detach - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(59644958,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c59644958.cost) - e1:SetTarget(c59644958.target) - e1:SetOperation(c59644958.operation) - c:RegisterEffect(e1) -end -function c59644958.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,600) end - Duel.PayLPCost(tp,600) -end -function c59644958.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,1,1,REASON_EFFECT) end -end -function c59644958.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,532) - local sg=Duel.SelectMatchingCard(tp,Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp,1,REASON_EFFECT) - if sg:GetCount()==0 then return end - Duel.HintSelection(sg) - sg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_EFFECT) -end +--オーバーレイ・オウル +function c59644958.initial_effect(c) + --detach + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59644958,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c59644958.cost) + e1:SetTarget(c59644958.target) + e1:SetOperation(c59644958.operation) + c:RegisterEffect(e1) +end +function c59644958.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,600) end + Duel.PayLPCost(tp,600) +end +function c59644958.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,1,1,REASON_EFFECT) end +end +function c59644958.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,532) + local sg=Duel.SelectMatchingCard(tp,Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp,1,REASON_EFFECT) + if sg:GetCount()==0 then return end + Duel.HintSelection(sg) + sg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_EFFECT) +end diff --git a/script/c59708927.lua b/script/c59708927.lua index 6f7a7580..e9de1bba 100644 --- a/script/c59708927.lua +++ b/script/c59708927.lua @@ -1,48 +1,48 @@ ---アンブラル・ゴースト -function c59708927.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(59708927,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,59708927) - e1:SetCost(c59708927.spcost) - e1:SetTarget(c59708927.sptg) - e1:SetOperation(c59708927.spop) - c:RegisterEffect(e1) -end -function c59708927.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_FIEND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c59708927.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) -end -function c59708927.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c59708927.filter,tp,LOCATION_HAND,0,1,e:GetHandler(),e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) -end -function c59708927.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c59708927.filter,tp,LOCATION_HAND,0,1,1,e:GetHandler(),e,tp) - if g:GetCount()>0 then - g:AddCard(e:GetHandler()) - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--アンブラル・ゴースト +function c59708927.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59708927,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,59708927) + e1:SetCost(c59708927.spcost) + e1:SetTarget(c59708927.sptg) + e1:SetOperation(c59708927.spop) + c:RegisterEffect(e1) +end +function c59708927.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_FIEND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c59708927.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c59708927.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c59708927.filter,tp,LOCATION_HAND,0,1,e:GetHandler(),e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c59708927.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c59708927.filter,tp,LOCATION_HAND,0,1,1,e:GetHandler(),e,tp) + if g:GetCount()>0 then + g:AddCard(e:GetHandler()) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c59718521.lua b/script/c59718521.lua index 218bbe4f..dcbaebc1 100644 --- a/script/c59718521.lua +++ b/script/c59718521.lua @@ -1,62 +1,61 @@ ---ブローニング・パワー -function c59718521.initial_effect(c) - --Activate(summon) - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SUMMON) - e1:SetCondition(c59718521.condition1) - e1:SetCost(c59718521.cost) - e1:SetTarget(c59718521.target1) - e1:SetOperation(c59718521.activate1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON) - c:RegisterEffect(e2) - --Activate(effect) - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_ACTIVATE) - e3:SetCode(EVENT_CHAINING) - e3:SetCondition(c59718521.condition2) - e3:SetCost(c59718521.cost) - e3:SetTarget(c59718521.target2) - e3:SetOperation(c59718521.activate2) - c:RegisterEffect(e3) -end -function c59718521.condition1(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentChain()==0 -end -function c59718521.filter(c) - return c:IsRace(RACE_PSYCHO) and not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c59718521.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c59718521.filter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c59718521.filter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c59718521.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) -end -function c59718521.activate1(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateSummon(eg) - Duel.Destroy(eg,REASON_EFFECT) -end -function c59718521.condition2(e,tp,eg,ep,ev,re,r,rp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c59718521.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c59718521.activate2(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--ブローニング・パワー +function c59718521.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON) + e1:SetCondition(c59718521.condition1) + e1:SetCost(c59718521.cost) + e1:SetTarget(c59718521.target1) + e1:SetOperation(c59718521.activate1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON) + c:RegisterEffect(e2) + --Activate(effect) + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_ACTIVATE) + e3:SetCode(EVENT_CHAINING) + e3:SetCondition(c59718521.condition2) + e3:SetCost(c59718521.cost) + e3:SetTarget(c59718521.target2) + e3:SetOperation(c59718521.activate2) + c:RegisterEffect(e3) +end +function c59718521.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 +end +function c59718521.filter(c) + return c:IsRace(RACE_PSYCHO) and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c59718521.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c59718521.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c59718521.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c59718521.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c59718521.activate1(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) +end +function c59718521.condition2(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c59718521.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c59718521.activate2(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c59750328.lua b/script/c59750328.lua index 1260b461..c6fd7f46 100644 --- a/script/c59750328.lua +++ b/script/c59750328.lua @@ -22,7 +22,7 @@ function c59750328.cost(e,tp,eg,ep,ev,re,r,rp,chk) Duel.RegisterEffect(e1,tp) end function c59750328.target(e,tp,eg,ep,ev,re,r,rp,chk) - local ct=3-Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + local ct=3-Duel.GetMatchingGroupCount(nil,tp,LOCATION_HAND,0,e:GetHandler()) if chk==0 then return ct>0 and Duel.IsPlayerCanDraw(tp,ct) end Duel.SetTargetPlayer(tp) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) diff --git a/script/c59771339.lua b/script/c59771339.lua index 1ecf5d37..1b485bb9 100644 --- a/script/c59771339.lua +++ b/script/c59771339.lua @@ -1,72 +1,72 @@ ---ジャンク・バーサーカー -function c59771339.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c59771339.tfilter,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --atkdown - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(59771339,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c59771339.cost) - e1:SetTarget(c59771339.target) - e1:SetOperation(c59771339.operation) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(59771339,1)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_BATTLE_START) - e2:SetCondition(c59771339.descon) - e2:SetTarget(c59771339.destg) - e2:SetOperation(c59771339.desop) - c:RegisterEffect(e2) -end -c59771339.material_setcode=0x17 -function c59771339.tfilter(c) - return c:IsCode(63977008) or c:IsHasEffect(20932152) -end -function c59771339.cfilter(c) - return c:IsSetCard(0x43) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c59771339.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c59771339.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c59771339.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - e:SetLabel(g:GetFirst():GetAttack()) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c59771339.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c59771339.operation(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_UPDATE_ATTACK) - e1:SetValue(-e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end -function c59771339.descon(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - return e:GetHandler()==Duel.GetAttacker() and d and d:IsDefensePos() -end -function c59771339.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttackTarget(),1,0,0) -end -function c59771339.desop(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - if d:IsRelateToBattle() then - Duel.Destroy(d,REASON_EFFECT) - end -end +--ジャンク・バーサーカー +function c59771339.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c59771339.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59771339,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c59771339.cost) + e1:SetTarget(c59771339.target) + e1:SetOperation(c59771339.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(59771339,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_START) + e2:SetCondition(c59771339.descon) + e2:SetTarget(c59771339.destg) + e2:SetOperation(c59771339.desop) + c:RegisterEffect(e2) +end +c59771339.material_setcode=0x1017 +function c59771339.tfilter(c) + return c:IsCode(63977008) or c:IsHasEffect(20932152) +end +function c59771339.cfilter(c) + return c:IsSetCard(0x43) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c59771339.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c59771339.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c59771339.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + e:SetLabel(g:GetFirst():GetAttack()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c59771339.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c59771339.operation(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_UPDATE_ATTACK) + e1:SetValue(-e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c59771339.descon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return e:GetHandler()==Duel.GetAttacker() and d and d:IsDefensePos() +end +function c59771339.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttackTarget(),1,0,0) +end +function c59771339.desop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d:IsRelateToBattle() then + Duel.Destroy(d,REASON_EFFECT) + end +end diff --git a/script/c59785059.lua b/script/c59785059.lua index 8e5e8c5a..37d0e0d4 100644 --- a/script/c59785059.lua +++ b/script/c59785059.lua @@ -1,85 +1,85 @@ ---イグナイト・スティンガー -function c59785059.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c59785059.sptg) - e1:SetOperation(c59785059.spop) - c:RegisterEffect(e1) - --todeck - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_TODECK) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c59785059.tdtg) - e2:SetOperation(c59785059.tdop) - c:RegisterEffect(e2) -end -function c59785059.desfilter(c) - return c:IsFaceup() and c:IsSetCard(0xc8) -end -function c59785059.desfilter2(c,e) - return c59785059.desfilter(c) and c:IsCanBeEffectTarget(e) -end -function c59785059.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c59785059.desfilter(chkc) end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local ct=-ft+1 - if chk==0 then return ct<=3 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingTarget(c59785059.desfilter,tp,LOCATION_ONFIELD,0,3,nil) - and (ct<=0 or Duel.IsExistingTarget(c59785059.desfilter,tp,LOCATION_MZONE,0,ct,nil)) end - local g=nil - if ct>0 then - local tg=Duel.GetMatchingGroup(c59785059.desfilter2,tp,LOCATION_ONFIELD,0,nil,e) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - g=tg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) - if ct<3 then - tg:Sub(g) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g2=tg:Select(tp,3-ct,3-ct,nil) - g:Merge(g2) - end - Duel.SetTargetCard(g) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - g=Duel.SelectTarget(tp,c59785059.desfilter,tp,LOCATION_ONFIELD,0,3,3,nil) - end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,3,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c59785059.spop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if Duel.Destroy(g,REASON_EFFECT)~=0 then - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end - end -end -function c59785059.thfilter(c) - return c:IsFaceup() and c:IsSetCard(0xc8) and c:IsAbleToHand() -end -function c59785059.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c59785059.thfilter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c59785059.thfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) - and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c59785059.thfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,1-tp,LOCATION_MZONE) -end -function c59785059.tdop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SendtoDeck(g,nil,1,REASON_EFFECT) - end -end +--イグナイト・スティンガー +function c59785059.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c59785059.sptg) + e1:SetOperation(c59785059.spop) + c:RegisterEffect(e1) + --todeck + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_TODECK) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c59785059.tdtg) + e2:SetOperation(c59785059.tdop) + c:RegisterEffect(e2) +end +function c59785059.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc8) +end +function c59785059.desfilter2(c,e) + return c59785059.desfilter(c) and c:IsCanBeEffectTarget(e) +end +function c59785059.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c59785059.desfilter(chkc) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + if chk==0 then return ct<=3 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c59785059.desfilter,tp,LOCATION_ONFIELD,0,3,nil) + and (ct<=0 or Duel.IsExistingTarget(c59785059.desfilter,tp,LOCATION_MZONE,0,ct,nil)) end + local g=nil + if ct>0 then + local tg=Duel.GetMatchingGroup(c59785059.desfilter2,tp,LOCATION_ONFIELD,0,nil,e) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + g=tg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) + if ct<3 then + tg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=tg:Select(tp,3-ct,3-ct,nil) + g:Merge(g2) + end + Duel.SetTargetCard(g) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + g=Duel.SelectTarget(tp,c59785059.desfilter,tp,LOCATION_ONFIELD,0,3,3,nil) + end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c59785059.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.Destroy(g,REASON_EFFECT)~=0 then + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end + end +end +function c59785059.thfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc8) and c:IsAbleToHand() +end +function c59785059.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c59785059.thfilter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c59785059.thfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c59785059.thfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,1-tp,LOCATION_MZONE) +end +function c59785059.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SendtoDeck(g,nil,1,REASON_EFFECT) + end +end diff --git a/script/c59822133.lua b/script/c59822133.lua index 624b3997..8d875237 100644 --- a/script/c59822133.lua +++ b/script/c59822133.lua @@ -70,12 +70,14 @@ function c59822133.spop(e,tp,eg,ep,ev,re,r,rp) local g=Duel.SelectMatchingCard(tp,c59822133.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) local tc=g:GetFirst() if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then - tc:RegisterFlagEffect(59822133,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(59822133,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetCountLimit(1) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) e1:SetLabelObject(tc) e1:SetReset(RESET_PHASE+PHASE_END) e1:SetCondition(c59822133.descon) @@ -85,7 +87,7 @@ function c59822133.spop(e,tp,eg,ep,ev,re,r,rp) end function c59822133.descon(e,tp,eg,ep,ev,re,r,rp) local tc=e:GetLabelObject() - return tc:GetFlagEffect(59822133)~=0 + return tc:GetFlagEffectLabel(59822133)==e:GetLabel() end function c59822133.desop(e,tp,eg,ep,ev,re,r,rp) local tc=e:GetLabelObject() diff --git a/script/c59843383.lua b/script/c59843383.lua new file mode 100644 index 00000000..03d175f8 --- /dev/null +++ b/script/c59843383.lua @@ -0,0 +1,66 @@ +--炎神-不知火 +function c59843383.initial_effect(c) + c:SetSPSummonOnce(59843383) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_ZOMBIE),aux.NonTuner(Card.IsRace,RACE_ZOMBIE),1) + c:EnableReviveLimit() + --to deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(59843383,0)) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c59843383.tdtg) + e1:SetOperation(c59843383.tdop) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c59843383.reptg) + e2:SetValue(c59843383.repval) + c:RegisterEffect(e2) +end +function c59843383.tdfilter(c) + return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsType(TYPE_SYNCHRO) and c:IsRace(RACE_ZOMBIE) and c:IsAbleToDeck() +end +function c59843383.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c59843383.tdfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_GRAVE+LOCATION_REMOVED) +end +function c59843383.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c59843383.tdfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,nil) + if g:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local sg=g:Select(tp,1,g:GetCount(),nil) + local ct=Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) + local dg=Duel.GetMatchingGroup(nil,tp,0,LOCATION_ONFIELD,nil) + if ct>0 and dg:GetCount()>=ct and Duel.SelectYesNo(tp,aux.Stringid(59843383,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg2=dg:Select(tp,ct,ct,nil) + Duel.Destroy(sg2,REASON_EFFECT) + end +end +function c59843383.repfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsRace(RACE_ZOMBIE) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c59843383.rmfilter(c) + return c:IsSetCard(0xd9) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c59843383.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c59843383.repfilter,1,nil,tp) + and Duel.IsExistingMatchingCard(c59843383.rmfilter,tp,LOCATION_GRAVE,0,1,nil) end + if Duel.SelectYesNo(tp,aux.Stringid(59843383,2)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c59843383.rmfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT+REASON_REPLACE) + return true + end + return false +end +function c59843383.repval(e,c) + return c59843383.repfilter(c,e:GetHandlerPlayer()) +end diff --git a/script/c59905358.lua b/script/c59905358.lua index 6c8f4fd2..a38a5dc7 100644 --- a/script/c59905358.lua +++ b/script/c59905358.lua @@ -24,8 +24,7 @@ function c59905358.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c59905358.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c59957503.lua b/script/c59957503.lua index 54380ae1..98103432 100644 --- a/script/c59957503.lua +++ b/script/c59957503.lua @@ -38,8 +38,7 @@ function c59957503.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c59957503.activate(e,tp,eg,ep,ev,re,r,rp) local ec=re:GetHandler() - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then ec:CancelToGrave() Duel.SendtoDeck(ec,nil,2,REASON_EFFECT) end diff --git a/script/c60004971.lua b/script/c60004971.lua index cd772973..52dd32d7 100644 --- a/script/c60004971.lua +++ b/script/c60004971.lua @@ -1,21 +1,6 @@ --ドラグニティの神槍 function c60004971.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(c60004971.target) - e1:SetOperation(c60004971.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(c60004971.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x29)) --atk local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) @@ -38,26 +23,6 @@ function c60004971.initial_effect(c) e5:SetOperation(c60004971.eqop) c:RegisterEffect(e5) end -function c60004971.eqlimit(e,c) - return c:IsSetCard(0x29) -end -function c60004971.filter(c) - return c:IsFaceup() and c:IsSetCard(0x29) -end -function c60004971.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c60004971.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c60004971.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c60004971.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c60004971.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 c60004971.atkval(e,c) return c:GetLevel()*100 end diff --git a/script/c60080151.lua b/script/c60080151.lua index d26f9380..2e6b5c9b 100644 --- a/script/c60080151.lua +++ b/script/c60080151.lua @@ -14,17 +14,16 @@ function c60080151.condition(e,tp,eg,ep,ev,re,r,rp) return tp~=Duel.GetTurnPlayer() end function c60080151.target(e,tp,eg,ep,ev,re,r,rp,chk) - local tg=Duel.GetAttacker() - if chk==0 then return tg:IsOnField() and tg:IsAbleToRemove() end - local dam=tg:GetAttack() - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,dam) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,tg,1,0,0) + local tc=Duel.GetAttacker() + if chk==0 then return tc:IsOnField() and tc:IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,tc:GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,tc,1,0,0) end function c60080151.activate(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetAttacker() - if tc and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + if tc and tc:IsAttackable() and tc:IsRelateToBattle() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then local dam=tc:GetAttack() - if Duel.Damage(tp,dam,REASON_EFFECT)>0 and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + if Duel.Damage(tp,dam,REASON_EFFECT)>0 and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 and tc:IsLocation(LOCATION_REMOVED) then local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCountLimit(1) @@ -45,5 +44,6 @@ function c60080151.spcon(e,tp,eg,ep,ev,re,r,rp) and tc:GetFlagEffect(60080151)~=0 and tc:GetReasonEffect():GetHandler()==e:GetHandler() end function c60080151.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,60080151) Duel.SpecialSummon(e:GetLabelObject(),0,tp,tp,false,false,POS_FACEUP) end diff --git a/script/c60102563.lua b/script/c60102563.lua index 9d49a6ac..011478ee 100644 --- a/script/c60102563.lua +++ b/script/c60102563.lua @@ -1,35 +1,35 @@ ---本気ギレパンダ -function c60102563.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(60102563,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e1:SetCode(EVENT_DESTROYED) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c60102563.atkcon) - e1:SetTarget(c60102563.atktg) - e1:SetOperation(c60102563.atkop) - c:RegisterEffect(e1) -end -function c60102563.cfilter(c) - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and bit.band(c:GetPreviousRaceOnField(),RACE_BEAST)~=0 -end -function c60102563.atkcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c60102563.cfilter,1,nil) -end -function c60102563.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and e:GetHandler():IsFaceup() end -end -function c60102563.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+0x1fe0000) - e1:SetValue(500) - c:RegisterEffect(e1) - end -end +--本気ギレパンダ +function c60102563.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60102563,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_DESTROYED) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c60102563.atkcon) + e1:SetTarget(c60102563.atktg) + e1:SetOperation(c60102563.atkop) + c:RegisterEffect(e1) +end +function c60102563.cfilter(c) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and bit.band(c:GetPreviousRaceOnField(),RACE_BEAST)~=0 +end +function c60102563.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c60102563.cfilter,1,nil) +end +function c60102563.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and e:GetHandler():IsFaceup() end +end +function c60102563.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+0x1fe0000) + e1:SetValue(500) + c:RegisterEffect(e1) + end +end diff --git a/script/c601193.lua b/script/c601193.lua index 89a33880..4b799684 100644 --- a/script/c601193.lua +++ b/script/c601193.lua @@ -1,65 +1,65 @@ ---彼岸の詩人 ウェルギリウス -function c601193.initial_effect(c) - c:SetUniqueOnField(1,0,601193) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --to hand - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(601193,0)) - e1:SetCategory(CATEGORY_TODECK) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c601193.tdcost) - e1:SetTarget(c601193.tdtg) - e1:SetOperation(c601193.tdop) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(601193,1)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,601193) - e2:SetCondition(c601193.drcon) - e2:SetTarget(c601193.drtg) - e2:SetOperation(c601193.drop) - c:RegisterEffect(e2) -end -function c601193.filter(c) - return c:IsSetCard(0xb1) and c:IsDiscardable() -end -function c601193.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c601193.filter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c601193.filter,1,1,REASON_COST+REASON_DISCARD) -end -function c601193.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_ONFIELD+LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsAbleToDeck() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD+LOCATION_GRAVE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD+LOCATION_GRAVE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) -end -function c601193.tdop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) - end -end -function c601193.drcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) -end -function c601193.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c601193.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--彼岸の詩人 ウェルギリウス +function c601193.initial_effect(c) + c:SetUniqueOnField(1,0,601193) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(601193,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c601193.tdcost) + e1:SetTarget(c601193.tdtg) + e1:SetOperation(c601193.tdop) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(601193,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,601193) + e2:SetCondition(c601193.drcon) + e2:SetTarget(c601193.drtg) + e2:SetOperation(c601193.drop) + c:RegisterEffect(e2) +end +function c601193.filter(c) + return c:IsSetCard(0xb1) and c:IsDiscardable() +end +function c601193.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c601193.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c601193.filter,1,1,REASON_COST+REASON_DISCARD) +end +function c601193.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD+LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsAbleToDeck() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD+LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD+LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c601193.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) + end +end +function c601193.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c601193.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c601193.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c60168186.lua b/script/c60168186.lua new file mode 100644 index 00000000..c8f8da0e --- /dev/null +++ b/script/c60168186.lua @@ -0,0 +1,144 @@ +--異形神の契約書 +function c60168186.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --recover + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(60168186,0)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c60168186.effcon) + e2:SetTarget(c60168186.rectg) + e2:SetOperation(c60168186.recop) + e2:SetLabel(TYPE_FUSION) + c:RegisterEffect(e2) + --cannot target + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(60168186,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c60168186.effcon) + e3:SetOperation(c60168186.tgop) + e3:SetLabel(TYPE_SYNCHRO) + c:RegisterEffect(e3) + --remove + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(60168186,2)) + e4:SetCategory(CATEGORY_REMOVE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c60168186.effcon) + e4:SetTarget(c60168186.rmtg) + e4:SetOperation(c60168186.rmop) + e4:SetLabel(TYPE_XYZ) + c:RegisterEffect(e4) + --draw + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(60168186,3)) + e5:SetCategory(CATEGORY_DRAW+CATEGORY_HANDES) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1) + e5:SetCondition(c60168186.effcon) + e5:SetTarget(c60168186.drtg) + e5:SetOperation(c60168186.drop) + e5:SetLabel(TYPE_PENDULUM) + c:RegisterEffect(e5) + --damage + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(60168186,4)) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_STANDBY) + e6:SetRange(LOCATION_SZONE) + e6:SetCountLimit(1) + e6:SetCondition(c60168186.damcon) + e6:SetTarget(c60168186.damtg) + e6:SetOperation(c60168186.damop) + c:RegisterEffect(e6) +end +function c60168186.cfilter(c,tp,typ) + return c:IsFaceup() and c:IsType(typ) and c:IsSetCard(0x10af) and c:IsControler(tp) and bit.band(c:GetSummonLocation(),LOCATION_EXTRA)~=0 +end +function c60168186.effcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c60168186.cfilter,1,nil,tp,e:GetLabel()) +end +function c60168186.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) +end +function c60168186.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c60168186.filter(c,tp,typ) + return c:IsType(typ) and c:IsSetCard(0x10af) and c:IsControler(tp) and bit.band(c:GetSummonLocation(),LOCATION_EXTRA)~=0 +end +function c60168186.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=eg:Filter(c60168186.filter,nil,tp,e:GetLabel()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetValue(aux.tgoval) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c60168186.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c60168186.rmop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,1,1,nil) + if g:GetCount()>0 then + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end +end +function c60168186.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c60168186.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.Draw(tp,1,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + end +end +function c60168186.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c60168186.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,2000) +end +function c60168186.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c60226558.lua b/script/c60226558.lua index efc861de..4d5eb7a1 100644 --- a/script/c60226558.lua +++ b/script/c60226558.lua @@ -1,123 +1,102 @@ ---魂写しの同化 -function c60226558.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(c60226558.target) - e1:SetOperation(c60226558.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(c60226558.eqlimit) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1,60226558) - e3:SetTarget(c60226558.sptg) - e3:SetOperation(c60226558.spop) - c:RegisterEffect(e3) -end -function c60226558.eqlimit(e,c) - return c:IsSetCard(0x9d) -end -function c60226558.filter(c) - return c:IsFaceup() and c:IsSetCard(0x9d) -end -function c60226558.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c60226558.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c60226558.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c60226558.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,562) - local att=Duel.AnnounceAttribute(tp,1,0xff-g:GetFirst():GetAttribute()) - e:SetLabel(att) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c60226558.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) - local att=e:GetLabel() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) - e1:SetValue(att) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - c:SetHint(CHINT_ATTRIBUTE,att) - end -end -function c60226558.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c60226558.filter2(c,e,tp,m,ec,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9d) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,ec,chkf) -end -function c60226558.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local ec=e:GetHandler():GetEquipTarget() - if ec:IsControler(1-tp) then return false end - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,ec) - local res=Duel.IsExistingMatchingCard(c60226558.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,ec,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c60226558.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,ec,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c60226558.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local ec=c:GetEquipTarget() - if ec:IsControler(1-tp) or ec:IsImmuneToEffect(e) then return end - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c60226558.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,ec,e) - local sg1=Duel.GetMatchingGroup(c60226558.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,ec,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c60226558.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,ec,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,ec,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,ec,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--魂写しの同化 +function c60226558.initial_effect(c) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x9d),nil,nil,c60226558.target,c60226558.operation) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,60226558) + e3:SetTarget(c60226558.sptg) + e3:SetOperation(c60226558.spop) + c:RegisterEffect(e3) +end +function c60226558.eqlimit(e,c) + return c:IsSetCard(0x9d) +end +function c60226558.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9d) +end +function c60226558.target(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,562) + local att=Duel.AnnounceAttribute(tp,1,0xff-Duel.GetFirstTarget():GetAttribute()) + e:SetLabel(att) +end +function c60226558.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 + local att=e:GetLabel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetValue(att) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + c:SetHint(CHINT_ATTRIBUTE,att) + end +end +function c60226558.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c60226558.filter2(c,e,tp,m,ec,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9d) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,ec,chkf) +end +function c60226558.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local ec=e:GetHandler():GetEquipTarget() + if ec:IsControler(1-tp) then return false end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,ec) + local res=Duel.IsExistingMatchingCard(c60226558.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,ec,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c60226558.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,ec,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c60226558.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ec=c:GetEquipTarget() + if ec:IsControler(1-tp) or ec:IsImmuneToEffect(e) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c60226558.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,ec,e) + local sg1=Duel.GetMatchingGroup(c60226558.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,ec,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c60226558.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,ec,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,ec,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,ec,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c60228941.lua b/script/c60228941.lua index 885c3d15..d1f4ac57 100644 --- a/script/c60228941.lua +++ b/script/c60228941.lua @@ -1,51 +1,51 @@ ---暗黒界の術師 スノウ -function c60228941.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(60228941,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c60228941.condition) - e1:SetTarget(c60228941.target) - e1:SetOperation(c60228941.operation) - c:RegisterEffect(e1) -end -function c60228941.condition(e,tp,eg,ep,ev,re,r,rp) - e:SetLabel(e:GetHandler():GetPreviousControler()) - return e:GetHandler():IsPreviousLocation(LOCATION_HAND) and bit.band(r,0x4040)==0x4040 -end -function c60228941.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c60228941.filter2(chkc,e,tp) end - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) - if tp~=rp and tp==e:GetLabel() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c60228941.filter2,tp,0,LOCATION_GRAVE,1,nil,e,tp) - and Duel.SelectYesNo(tp,aux.Stringid(60228941,1)) then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH+CATEGORY_SPECIAL_SUMMON) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c60228941.filter2,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) - else - e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - end -end -function c60228941.filter1(c) - return c:IsSetCard(0x6) and c:IsAbleToHand() -end -function c60228941.filter2(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c60228941.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c60228941.filter1,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.BreakEffect() - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end - end -end +--暗黒界の術師 スノウ +function c60228941.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60228941,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c60228941.condition) + e1:SetTarget(c60228941.target) + e1:SetOperation(c60228941.operation) + c:RegisterEffect(e1) +end +function c60228941.condition(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(e:GetHandler():GetPreviousControler()) + return e:GetHandler():IsPreviousLocation(LOCATION_HAND) and bit.band(r,0x4040)==0x4040 +end +function c60228941.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c60228941.filter2(chkc,e,tp) end + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) + if tp~=rp and tp==e:GetLabel() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c60228941.filter2,tp,0,LOCATION_GRAVE,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(60228941,1)) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH+CATEGORY_SPECIAL_SUMMON) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c60228941.filter2,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + else + e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + end +end +function c60228941.filter1(c) + return c:IsSetCard(0x6) and c:IsAbleToHand() +end +function c60228941.filter2(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c60228941.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c60228941.filter1,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.BreakEffect() + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + end +end diff --git a/script/c60234913.lua b/script/c60234913.lua index 6ee7e58b..6d0d3c67 100644 --- a/script/c60234913.lua +++ b/script/c60234913.lua @@ -1,38 +1,38 @@ ---救世の儀式 -function c60234913.initial_effect(c) - aux.AddRitualProcGreaterCode(c,61757117) - --untargetable - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(60234913,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_GRAVE) - e1:SetCost(c60234913.utcost) - e1:SetTarget(c60234913.uttg) - e1:SetOperation(c60234913.utop) - c:RegisterEffect(e1) -end -function c60234913.utcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c60234913.filter(c) - return c:IsFaceup() and c:IsType(TYPE_RITUAL) -end -function c60234913.uttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c60234913.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c60234913.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c60234913.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c60234913.utop(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_CANNOT_BE_EFFECT_TARGET) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--救世の儀式 +function c60234913.initial_effect(c) + aux.AddRitualProcGreaterCode(c,61757117) + --untargetable + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60234913,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c60234913.utcost) + e1:SetTarget(c60234913.uttg) + e1:SetOperation(c60234913.utop) + c:RegisterEffect(e1) +end +function c60234913.utcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c60234913.filter(c) + return c:IsFaceup() and c:IsType(TYPE_RITUAL) +end +function c60234913.uttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c60234913.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c60234913.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c60234913.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c60234913.utop(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_CANNOT_BE_EFFECT_TARGET) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c60365591.lua b/script/c60365591.lua index ac0733ec..f18bafca 100644 --- a/script/c60365591.lua +++ b/script/c60365591.lua @@ -1,4 +1,4 @@ ---奇跡の方舟 -function c60365591.initial_effect(c) - aux.AddRitualProcGreaterCode(c,86327225) -end +--奇跡の方舟 +function c60365591.initial_effect(c) + aux.AddRitualProcGreaterCode(c,86327225) +end diff --git a/script/c60369732.lua b/script/c60369732.lua index 8cad4a9a..c6e2e9a1 100644 --- a/script/c60369732.lua +++ b/script/c60369732.lua @@ -1,4 +1,4 @@ ---大邪神の儀式 -function c60369732.initial_effect(c) - aux.AddRitualProcGreaterCode(c,62420419) -end +--大邪神の儀式 +function c60369732.initial_effect(c) + aux.AddRitualProcGreaterCode(c,62420419) +end diff --git a/script/c60399954.lua b/script/c60399954.lua index 1a08a357..70fc1dbf 100644 --- a/script/c60399954.lua +++ b/script/c60399954.lua @@ -1,67 +1,67 @@ ---ユニオン・アタック -function c60399954.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c60399954.condition) - e1:SetTarget(c60399954.target) - e1:SetOperation(c60399954.operation) - c:RegisterEffect(e1) -end -function c60399954.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 -end -function c60399954.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c60399954.ftarget) - e1:SetLabel(g:GetFirst():GetFieldID()) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c60399954.operation(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_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_BATTLE_START) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetOperation(c60399954.atkop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_NO_BATTLE_DAMAGE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end -function c60399954.ftarget(e,c) - return e:GetLabel()~=c:GetFieldID() -end -function c60399954.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local atk=0 - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,c) - local tc=g:GetFirst() - while tc do - atk=atk+tc:GetAttack() - tc=g:GetNext() - end - local e1=Effect.CreateEffect(e:GetOwner()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - c:RegisterEffect(e1) -end +--ユニオン・アタック +function c60399954.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c60399954.condition) + e1:SetTarget(c60399954.target) + e1:SetOperation(c60399954.operation) + c:RegisterEffect(e1) +end +function c60399954.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c60399954.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c60399954.ftarget) + e1:SetLabel(g:GetFirst():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c60399954.operation(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_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE_START) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetOperation(c60399954.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_NO_BATTLE_DAMAGE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c60399954.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c60399954.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local atk=0 + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,c) + local tc=g:GetFirst() + while tc do + atk=atk+tc:GetAttack() + tc=g:GetNext() + end + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) +end diff --git a/script/c60434189.lua b/script/c60434189.lua index b52a5a7f..2ece0e3a 100644 --- a/script/c60434189.lua +++ b/script/c60434189.lua @@ -1,44 +1,44 @@ ---ペンデュラム・モラトリアム -function c60434189.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetOperation(c60434189.activate) - c:RegisterEffect(e1) -end -function c60434189.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e1:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) - e1:SetTarget(c60434189.indtg) - e1:SetValue(c60434189.indval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetCondition(c60434189.discon) - e2:SetOperation(c60434189.disop) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end -function c60434189.indtg(e,c) - return c:GetSequence()>5 -end -function c60434189.indval(e,re,tp) - return tp~=e:GetHandlerPlayer() -end -function c60434189.indfilter(c) - return c:IsLocation(LOCATION_SZONE) and c:GetSequence()>5 -end -function c60434189.discon(e,tp,eg,ep,ev,re,r,rp) - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return g and g:IsExists(c60434189.indfilter,1,nil) and ep~=tp -end -function c60434189.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) -end +--ペンデュラム・モラトリアム +function c60434189.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c60434189.activate) + c:RegisterEffect(e1) +end +function c60434189.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e1:SetTarget(c60434189.indtg) + e1:SetValue(c60434189.indval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetCondition(c60434189.discon) + e2:SetOperation(c60434189.disop) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c60434189.indtg(e,c) + return c:GetSequence()>5 +end +function c60434189.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end +function c60434189.indfilter(c) + return c:IsLocation(LOCATION_SZONE) and c:GetSequence()>5 +end +function c60434189.discon(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return g and g:IsExists(c60434189.indfilter,1,nil) and ep~=tp +end +function c60434189.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c60482781.lua b/script/c60482781.lua index 10d0afbf..17e74494 100644 --- a/script/c60482781.lua +++ b/script/c60482781.lua @@ -37,7 +37,7 @@ function c60482781.desop(e,tp,eg,ep,ev,re,r,rp) end end end -function c60482781.sumcon(e,c) +function c60482781.sumcon(e,c,minc) if not c then return true end return false end diff --git a/script/c60493189.lua b/script/c60493189.lua index 03643c18..a3186920 100644 --- a/script/c60493189.lua +++ b/script/c60493189.lua @@ -1,49 +1,50 @@ ---E・HERO プラズマヴァイスマン -function c60493189.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,20721928,59793705,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - 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(60493189,0)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c60493189.descost) - e3:SetTarget(c60493189.destg) - e3:SetOperation(c60493189.desop) - c:RegisterEffect(e3) -end -function c60493189.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c60493189.filter(c) - return c:IsAttackPos() -end -function c60493189.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c60493189.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c60493189.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c60493189.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c60493189.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsAttackPos() and tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--E・HERO プラズマヴァイスマン +function c60493189.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,20721928,59793705,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + 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(60493189,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c60493189.descost) + e3:SetTarget(c60493189.destg) + e3:SetOperation(c60493189.desop) + c:RegisterEffect(e3) +end +c60493189.material_setcode=0x8 +function c60493189.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c60493189.filter(c) + return c:IsAttackPos() +end +function c60493189.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c60493189.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c60493189.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c60493189.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c60493189.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsAttackPos() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c60549248.lua b/script/c60549248.lua index 2aca9751..9ca20598 100644 --- a/script/c60549248.lua +++ b/script/c60549248.lua @@ -1,71 +1,71 @@ ---電池メン-角型 -function c60549248.initial_effect(c) - --tohand - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(60549248,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCountLimit(1,60549248) - e1:SetTarget(c60549248.thtg) - e1:SetOperation(c60549248.thop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(60549248,1)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_PHASE+PHASE_END) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1) - e4:SetCondition(c60549248.descon) - e4:SetTarget(c60549248.destg) - e4:SetOperation(c60549248.desop) - c:RegisterEffect(e4) -end -function c60549248.filter(c) - return c:IsSetCard(0x28) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c60549248.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c60549248.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c60549248.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c60549248.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(c:GetBaseAttack()*2) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetValue(c:GetBaseDefense()*2) - c:RegisterEffect(e2) - end - end -end -function c60549248.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c60549248.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 c60549248.desop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.Destroy(e:GetHandler(),REASON_EFFECT) - end -end +--電池メン-角型 +function c60549248.initial_effect(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60549248,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCountLimit(1,60549248) + e1:SetTarget(c60549248.thtg) + e1:SetOperation(c60549248.thop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(60549248,1)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCondition(c60549248.descon) + e4:SetTarget(c60549248.destg) + e4:SetOperation(c60549248.desop) + c:RegisterEffect(e4) +end +function c60549248.filter(c) + return c:IsSetCard(0x28) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c60549248.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c60549248.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c60549248.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c60549248.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(c:GetBaseDefense()*2) + c:RegisterEffect(e2) + end + end +end +function c60549248.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c60549248.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 c60549248.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c6061630.lua b/script/c6061630.lua index 68fc4949..a24993e0 100644 --- a/script/c6061630.lua +++ b/script/c6061630.lua @@ -65,8 +65,8 @@ function c6061630.spop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end local lv=e:GetLabel() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c6061630.sfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,lv,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c6061630.sfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,lv,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c60627999.lua b/script/c60627999.lua index ab907b65..e7d160ba 100644 --- a/script/c60627999.lua +++ b/script/c60627999.lua @@ -1,61 +1,61 @@ ---血の沼地 -function c60627999.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c60627999.target) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EFFECT_SELF_DESTROY) - e2:SetCondition(c60627999.sdescon) - c:RegisterEffect(e2) - --disable spsummon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e3:SetCode(EFFECT_CANNOT_TRIGGER) - e3:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) - e3:SetTarget(c60627999.acttg) - c:RegisterEffect(e3) -end -function c60627999.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - c:SetTurnCounter(0) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_SZONE) - e1:SetCondition(c60627999.descon) - e1:SetOperation(c60627999.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - c:RegisterEffect(e1) -end -function c60627999.descon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c60627999.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetTurnCounter() - ct=ct+1 - c:SetTurnCounter(ct) - if ct==2 then - Duel.Destroy(c,REASON_EFFECT) - end -end -function c60627999.sdescon(e) - return Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,e:GetHandler(),TYPE_SPELL+TYPE_TRAP) -end -function c60627999.acttg(e,c) - return c:IsFacedown() and c:GetSequence()~=5 -end +--血の沼地 +function c60627999.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c60627999.target) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c60627999.sdescon) + c:RegisterEffect(e2) + --disable spsummon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetCode(EFFECT_CANNOT_TRIGGER) + e3:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e3:SetTarget(c60627999.acttg) + c:RegisterEffect(e3) +end +function c60627999.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + c:SetTurnCounter(0) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c60627999.descon) + e1:SetOperation(c60627999.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + c:RegisterEffect(e1) +end +function c60627999.descon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c60627999.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==2 then + Duel.Destroy(c,REASON_EFFECT) + end +end +function c60627999.sdescon(e) + return Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,e:GetHandler(),TYPE_SPELL+TYPE_TRAP) +end +function c60627999.acttg(e,c) + return c:IsFacedown() and c:GetSequence()~=5 +end diff --git a/script/c60645181.lua b/script/c60645181.lua index b14da8ba..646d9741 100644 --- a/script/c60645181.lua +++ b/script/c60645181.lua @@ -9,6 +9,7 @@ function c60645181.initial_effect(c) e1:SetDescription(aux.Stringid(60645181,0)) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCost(c60645181.cost) e1:SetOperation(c60645181.operation) diff --git a/script/c60666820.lua b/script/c60666820.lua index dd038e4c..5cce25fb 100644 --- a/script/c60666820.lua +++ b/script/c60666820.lua @@ -1,56 +1,56 @@ ---デーモン・イーター -function c60666820.initial_effect(c) - c:SetUniqueOnField(1,0,60666820) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c60666820.spcon) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(60666820,0)) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1) - e2:SetCondition(c60666820.condition) - e2:SetTarget(c60666820.target) - e2:SetOperation(c60666820.operation) - c:RegisterEffect(e2) -end -function c60666820.cfilter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) -end -function c60666820.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c60666820.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c60666820.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c60666820.filter(c) - return c:IsFaceup() -end -function c60666820.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c60666820.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingTarget(c60666820.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c60666820.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c60666820.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 and c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) - end -end +--デーモン・イーター +function c60666820.initial_effect(c) + c:SetUniqueOnField(1,0,60666820) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c60666820.spcon) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(60666820,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1) + e2:SetCondition(c60666820.condition) + e2:SetTarget(c60666820.target) + e2:SetOperation(c60666820.operation) + c:RegisterEffect(e2) +end +function c60666820.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c60666820.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c60666820.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c60666820.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c60666820.filter(c) + return c:IsFaceup() +end +function c60666820.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c60666820.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c60666820.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c60666820.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c60666820.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 and c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c60668166.lua b/script/c60668166.lua index d72e3a1b..e1621e46 100644 --- a/script/c60668166.lua +++ b/script/c60668166.lua @@ -1,43 +1,43 @@ ---ナチュル・チェリー -function c60668166.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(60668166,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c60668166.condition) - e1:SetTarget(c60668166.target) - e1:SetOperation(c60668166.operation) - c:RegisterEffect(e1) -end -function c60668166.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return rp~=tp and c:GetPreviousControler()==tp and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 -end -function c60668166.filter(c,e,tp) - return c:IsCode(60668166) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) -end -function c60668166.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c60668166.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c60668166.operation(e,tp,eg,ep,ev,re,r,rp) - local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ct<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end - local g=Duel.GetMatchingGroup(c60668166.filter,tp,LOCATION_DECK,0,nil,e,tp) - if g:GetCount()>0 then - local t1=g:GetFirst() - local t2=g:GetNext() - Duel.SpecialSummonStep(t1,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) - Duel.ConfirmCards(1-tp,t1) - if t2 and ct>1 and Duel.SelectYesNo(tp,aux.Stringid(60668166,1)) then - Duel.SpecialSummonStep(t2,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) - Duel.ConfirmCards(1-tp,t2) - end - Duel.SpecialSummonComplete() - end -end +--ナチュル・チェリー +function c60668166.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60668166,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c60668166.condition) + e1:SetTarget(c60668166.target) + e1:SetOperation(c60668166.operation) + c:RegisterEffect(e1) +end +function c60668166.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return rp~=tp and c:GetPreviousControler()==tp and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c60668166.filter(c,e,tp) + return c:IsCode(60668166) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) +end +function c60668166.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c60668166.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c60668166.operation(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ct<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end + local g=Duel.GetMatchingGroup(c60668166.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>0 then + local t1=g:GetFirst() + local t2=g:GetNext() + Duel.SpecialSummonStep(t1,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + Duel.ConfirmCards(1-tp,t1) + if t2 and ct>1 and Duel.SelectYesNo(tp,aux.Stringid(60668166,1)) then + Duel.SpecialSummonStep(t2,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + Duel.ConfirmCards(1-tp,t2) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c60675348.lua b/script/c60675348.lua new file mode 100644 index 00000000..43920195 --- /dev/null +++ b/script/c60675348.lua @@ -0,0 +1,75 @@ +--ダイナミスト・ハウリング +--Dinomist Howling +--Scripted by Eerie Code +function c60675348.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetOperation(c60675348.activate) + c:RegisterEffect(e1) + --return + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(60675348,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetHintTiming(0,0x1e0) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c60675348.thcost) + e2:SetTarget(c60675348.thtg) + e2:SetOperation(c60675348.thop) + c:RegisterEffect(e2) +end +function c60675348.filter(c) + return c:IsType(TYPE_PENDULUM) and c:IsSetCard(0xd8) and not c:IsForbidden() +end +function c60675348.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c60675348.filter,tp,LOCATION_DECK,0,nil) + local ct=0 + if Duel.CheckLocation(tp,LOCATION_SZONE,6) then ct=ct+1 end + if Duel.CheckLocation(tp,LOCATION_SZONE,7) then ct=ct+1 end + if ct>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(60675348,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local sg=g:Select(tp,1,ct,nil) + local sc=sg:GetFirst() + while sc do + Duel.MoveToField(sc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + sc=sg:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c60675348.splimit) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + end +end +function c60675348.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0xd8) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c60675348.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0xd8) end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0xd8) + Duel.Release(g,REASON_COST) +end +function c60675348.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c60675348.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c60718396.lua b/script/c60718396.lua index 5b1ba91f..8fb471a4 100644 --- a/script/c60718396.lua +++ b/script/c60718396.lua @@ -31,8 +31,7 @@ function c60718396.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c60718396.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c6077601.lua b/script/c6077601.lua index 28865afa..5a55a1ba 100644 --- a/script/c6077601.lua +++ b/script/c6077601.lua @@ -2,7 +2,7 @@ function c6077601.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1,6077601+EFFECT_COUNT_CODE_OATH) @@ -11,27 +11,32 @@ function c6077601.initial_effect(c) c:RegisterEffect(e1) end function c6077601.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() + return c:IsOnField() and c:IsAbleToRemove() end function c6077601.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) + return c:IsOnField() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) end function c6077601.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0xad) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) end +function c6077601.filter3(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end function c6077601.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c6077601.filter0,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil) + local mg1=Duel.GetFusionMaterial(tp):Filter(c6077601.filter0,nil) + local mg2=Duel.GetMatchingGroup(c6077601.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local res=Duel.IsExistingMatchingCard(c6077601.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) + local mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c6077601.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + res=Duel.IsExistingMatchingCard(c6077601.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) end end return res @@ -40,16 +45,18 @@ function c6077601.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c6077601.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c6077601.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c6077601.filter1,nil,e) + local mg2=Duel.GetMatchingGroup(c6077601.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local sg1=Duel.GetMatchingGroup(c6077601.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil + local mg3=nil local sg2=nil local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) + mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c6077601.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + sg2=Duel.GetMatchingGroup(c6077601.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) end if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then local sg=sg1:Clone() @@ -64,7 +71,7 @@ function c6077601.activate(e,tp,eg,ep,ev,re,r,rp) Duel.BreakEffect() Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) local fop=ce:GetOperation() fop(ce,e,tp,tc,mat2) end diff --git a/script/c60800381.lua b/script/c60800381.lua index ad44afbf..e0ce63d2 100644 --- a/script/c60800381.lua +++ b/script/c60800381.lua @@ -1,43 +1,43 @@ ---ジャンク・ウォリアー -function c60800381.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,c60800381.tfilter,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(60800381,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c60800381.con) - e1:SetOperation(c60800381.op) - c:RegisterEffect(e1) -end -c60800381.material_setcode=0x17 -function c60800381.tfilter(c) - return c:IsCode(63977008) or c:IsHasEffect(20932152) -end -function c60800381.con(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c60800381.filter(c) - return c:IsFaceup() and c:IsLevelBelow(2) -end -function c60800381.op(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c60800381.filter,tp,LOCATION_MZONE,0,nil) - if g:GetCount()>0 and c:IsFaceup() and c:IsRelateToEffect(e) then - local atk=0 - local tc=g:GetFirst() - while tc do - atk=atk+tc:GetAttack() - tc=g:GetNext() - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end +--ジャンク・ウォリアー +function c60800381.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,c60800381.tfilter,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60800381,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c60800381.con) + e1:SetOperation(c60800381.op) + c:RegisterEffect(e1) +end +c60800381.material_setcode=0x1017 +function c60800381.tfilter(c) + return c:IsCode(63977008) or c:IsHasEffect(20932152) +end +function c60800381.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c60800381.filter(c) + return c:IsFaceup() and c:IsLevelBelow(2) +end +function c60800381.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c60800381.filter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=0 + local tc=g:GetFirst() + while tc do + atk=atk+tc:GetAttack() + tc=g:GetNext() + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c60832978.lua b/script/c60832978.lua new file mode 100644 index 00000000..f8e8faf5 --- /dev/null +++ b/script/c60832978.lua @@ -0,0 +1,60 @@ +--ダブル・リゾネーター +--Double Resonator +--Scripted by Eerie Code +function c60832978.initial_effect(c) + --tuner (summon) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetTarget(c60832978.target1) + e1:SetOperation(c60832978.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --tuner (banish) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1,60832978) + e3:SetCost(c60832978.cost) + e3:SetTarget(c60832978.target2) + e3:SetOperation(c60832978.operation) + c:RegisterEffect(e3) +end +function c60832978.filter1(c) + return c:IsFaceup() and not c:IsType(TYPE_TUNER) +end +function c60832978.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c60832978.filter1(chkc) end + if chk==0 then return Duel.IsExistingTarget(c60832978.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c60832978.filter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c60832978.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(TYPE_TUNER) + tc:RegisterEffect(e1) + end +end +function c60832978.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c60832978.filter2(c) + return c60832978.filter1(c) and c:IsRace(RACE_FIEND) +end +function c60832978.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c60832978.filter2(chkc) end + if chk==0 then return Duel.IsExistingTarget(c60832978.filter2,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c60832978.filter2,tp,LOCATION_MZONE,0,1,1,nil) +end diff --git a/script/c60879050.lua b/script/c60879050.lua index 3ec3a882..a8133077 100644 --- a/script/c60879050.lua +++ b/script/c60879050.lua @@ -1,73 +1,44 @@ ---機関連結 -function c60879050.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:SetCost(c60879050.cost) - e1:SetTarget(c60879050.target) - e1:SetOperation(c60879050.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(c60879050.eqlimit) - c:RegisterEffect(e2) - --Atk Change - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_SET_ATTACK) - e3:SetValue(c60879050.value) - c:RegisterEffect(e3) - --Pierce - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_EQUIP) - e4:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e4) - --cannot attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CANNOT_ATTACK) - e5:SetRange(LOCATION_SZONE) - e5:SetTargetRange(LOCATION_MZONE,0) - e5:SetTarget(c60879050.ftarget) - c:RegisterEffect(e5) -end -function c60879050.eqlimit(e,c) - return e:GetHandler():GetEquipTarget()==c and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_EARTH) -end -function c60879050.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_EARTH) -end -function c60879050.rmfilter(c) - return c:IsRace(RACE_MACHINE) and c:IsLevelAbove(10) and c:IsAbleToRemoveAsCost() -end -function c60879050.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c60879050.rmfilter,tp,LOCATION_GRAVE,0,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c60879050.rmfilter,tp,LOCATION_GRAVE,0,2,2,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c60879050.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c60879050.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c60879050.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c60879050.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c60879050.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 c60879050.value(e,c) - return c:GetBaseAttack()*2 -end -function c60879050.ftarget(e,c) - return e:GetHandler():GetEquipTarget()~=c -end +--機関連結 +function c60879050.initial_effect(c) + aux.AddEquipProcedure(c,nil,c60879050.filter,c60879050.eqlimit,c60879050.cost) + --Atk Change + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_SET_ATTACK) + e3:SetValue(c60879050.value) + c:RegisterEffect(e3) + --Pierce + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e4) + --cannot attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_ATTACK) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(LOCATION_MZONE,0) + e5:SetTarget(c60879050.ftarget) + c:RegisterEffect(e5) +end +function c60879050.eqlimit(e,c) + return e:GetHandler():GetEquipTarget()==c and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_EARTH) +end +function c60879050.filter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_EARTH) +end +function c60879050.rmfilter(c) + return c:IsRace(RACE_MACHINE) and c:IsLevelAbove(10) and c:IsAbleToRemoveAsCost() +end +function c60879050.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c60879050.rmfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c60879050.rmfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c60879050.value(e,c) + return c:GetBaseAttack()*2 +end +function c60879050.ftarget(e,c) + return e:GetHandler():GetEquipTarget()~=c +end diff --git a/script/c60946968.lua b/script/c60946968.lua index 0fccaa85..44285c4c 100644 --- a/script/c60946968.lua +++ b/script/c60946968.lua @@ -1,32 +1,32 @@ ---異界空間-Aゾーン -function c60946968.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCondition(c60946968.adcon) - e2:SetTarget(c60946968.adtg) - e2:SetValue(-300) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end -function c60946968.adcon(e) - if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end - local d=Duel.GetAttackTarget() - if not d then return false end - local tp=e:GetHandlerPlayer() - if d:IsControler(1-tp) then d=Duel.GetAttacker() end - return d:IsSetCard(0xc) -end -function c60946968.adtg(e,c) - return c==Duel.GetAttacker() or c==Duel.GetAttackTarget() -end +--異界空間-Aゾーン +function c60946968.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c60946968.adcon) + e2:SetTarget(c60946968.adtg) + e2:SetValue(-300) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end +function c60946968.adcon(e) + if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end + local d=Duel.GetAttackTarget() + if not d then return false end + local tp=e:GetHandlerPlayer() + if d:IsControler(1-tp) then d=Duel.GetAttacker() end + return d:IsSetCard(0xc) +end +function c60946968.adtg(e,c) + return c==Duel.GetAttacker() or c==Duel.GetAttackTarget() +end diff --git a/script/c60950180.lua b/script/c60950180.lua index c6bcb782..12fb5866 100644 --- a/script/c60950180.lua +++ b/script/c60950180.lua @@ -1,77 +1,77 @@ ---RR-インペイル・レイニアス -function c60950180.initial_effect(c) - --pos - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(60950180,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c60950180.poscon) - e1:SetTarget(c60950180.postg) - e1:SetOperation(c60950180.posop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(60950180,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,60950180) - e2:SetCondition(c60950180.spcon) - e2:SetTarget(c60950180.sptg) - e2:SetOperation(c60950180.spop) - c:RegisterEffect(e2) - if not c60950180.global_check then - c60950180.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SUMMON_SUCCESS) - ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - ge1:SetLabel(60950180) - ge1:SetOperation(aux.sumreg) - Duel.RegisterEffect(ge1,0) - local ge2=ge1:Clone() - ge2:SetCode(EVENT_SPSUMMON_SUCCESS) - ge2:SetLabel(60950180) - Duel.RegisterEffect(ge2,0) - end -end -function c60950180.poscon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(60950180)>0 -end -function c60950180.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsPosition(POS_FACEUP_ATTACK) end - if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) -end -function c60950180.posop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) - end -end -function c60950180.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetAttackedCount()>0 and Duel.GetCurrentPhase()==PHASE_MAIN2 -end -function c60950180.spfilter(c,e,tp) - return c:IsSetCard(0xba) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c60950180.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c60950180.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c60950180.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c60950180.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c60950180.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--RR-インペイル・レイニアス +function c60950180.initial_effect(c) + --pos + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60950180,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c60950180.poscon) + e1:SetTarget(c60950180.postg) + e1:SetOperation(c60950180.posop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(60950180,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,60950180) + e2:SetCondition(c60950180.spcon) + e2:SetTarget(c60950180.sptg) + e2:SetOperation(c60950180.spop) + c:RegisterEffect(e2) + if not c60950180.global_check then + c60950180.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetLabel(60950180) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(60950180) + Duel.RegisterEffect(ge2,0) + end +end +function c60950180.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(60950180)>0 +end +function c60950180.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c60950180.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end +end +function c60950180.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetAttackedCount()>0 and Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c60950180.spfilter(c,e,tp) + return c:IsSetCard(0xba) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c60950180.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c60950180.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c60950180.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c60950180.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c60950180.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c60953118.lua b/script/c60953118.lua index 72179048..ce43f4f8 100644 --- a/script/c60953118.lua +++ b/script/c60953118.lua @@ -67,13 +67,13 @@ function c60953118.arcanareg(c,coin) e1:SetCode(EFFECT_CHANGE_DAMAGE) e1:SetCondition(c60953118.rdcon1) e1:SetValue(c60953118.rdval) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) local e2=e1:Clone() e2:SetTargetRange(0,1) e2:SetCondition(c60953118.rdcon2) c:RegisterEffect(e2) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) end function c60953118.rdcon1(e) return e:GetHandler():GetFlagEffectLabel(36690018)==1 diff --git a/script/c60954556.lua b/script/c60954556.lua new file mode 100644 index 00000000..0d529e0a --- /dev/null +++ b/script/c60954556.lua @@ -0,0 +1,97 @@ +--LL-サファイア・スワロー +--Lyrical Luscinia - Sapphire Swallow +--Scripted by Eerie Code +function c60954556.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60954556,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,60954556) + e1:SetCondition(c60954556.spcon) + e1:SetTarget(c60954556.sptg) + e1:SetOperation(c60954556.spop) + c:RegisterEffect(e1) + --effect gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c60954556.efcon) + e2:SetOperation(c60954556.efop) + c:RegisterEffect(e2) +end +function c60954556.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) +end +function c60954556.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c60954556.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c60954556.spfilter(c,e,tp) + return c:IsRace(RACE_WINDBEAST) and c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c60954556.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c60954556.spfilter,tp,LOCATION_HAND,0,1,c,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c60954556.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c60954556.spfilter,tp,LOCATION_HAND,0,1,1,c,e,tp) + if g:GetCount()>0 then + g:AddCard(c) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c60954556.efcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return r==REASON_XYZ and c:GetReasonCard():IsAttribute(ATTRIBUTE_WIND) +end +function c60954556.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local p=rc:GetControler() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(60954556,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c60954556.xyzcon) + e1:SetTarget(c60954556.xyztg) + e1:SetOperation(c60954556.xyzop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c60954556.xyzcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ +end +function c60954556.xyzfilter(c) + return (c:IsSetCard(0xf7) or c:IsCode(8491961)) and c:IsType(TYPE_MONSTER) +end +function c60954556.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c60954556.xyzfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c60954556.xyzfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c60954556.xyzfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) +end +function c60954556.xyzop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + Duel.Overlay(c,Group.FromCards(tc)) + end +end \ No newline at end of file diff --git a/script/c60990740.lua b/script/c60990740.lua index bbbd378e..c1494861 100644 --- a/script/c60990740.lua +++ b/script/c60990740.lua @@ -1,58 +1,58 @@ ---絶対王 バック・ジャック -function c60990740.initial_effect(c) - --sset - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1,60990740) - e1:SetCondition(c60990740.condition) - e1:SetCost(c60990740.cost) - e1:SetTarget(c60990740.target) - e1:SetOperation(c60990740.operation) - c:RegisterEffect(e1) - --sort - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,60990741) - e2:SetTarget(c60990740.sdtg) - e2:SetOperation(c60990740.sdop) - c:RegisterEffect(e2) -end -function c60990740.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c60990740.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c60990740.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) - and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_SSET) end -end -function c60990740.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local tc=Duel.GetDecktopGroup(tp,1):GetFirst() - Duel.DisableShuffleCheck() - if tc:GetType()==TYPE_TRAP and tc:IsSSetable() then - Duel.SSet(tp,tc) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - else - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) - end -end -function c60990740.sdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_DECK)>2 end -end -function c60990740.sdop(e,tp,eg,ep,ev,re,r,rp) - Duel.SortDecktop(tp,tp,3) -end +--絶対王 バック・ジャック +function c60990740.initial_effect(c) + --sset + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1,60990740) + e1:SetCondition(c60990740.condition) + e1:SetCost(c60990740.cost) + e1:SetTarget(c60990740.target) + e1:SetOperation(c60990740.operation) + c:RegisterEffect(e1) + --sort + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,60990741) + e2:SetTarget(c60990740.sdtg) + e2:SetOperation(c60990740.sdop) + c:RegisterEffect(e2) +end +function c60990740.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c60990740.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c60990740.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_SSET) end +end +function c60990740.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + Duel.DisableShuffleCheck() + if tc:GetType()==TYPE_TRAP and tc:IsSSetable() then + Duel.SSet(tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + else + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) + end +end +function c60990740.sdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>2 end +end +function c60990740.sdop(e,tp,eg,ep,ev,re,r,rp) + Duel.SortDecktop(tp,tp,3) +end diff --git a/script/c60992105.lua b/script/c60992105.lua index 1a737e82..ae347f21 100644 --- a/script/c60992105.lua +++ b/script/c60992105.lua @@ -1,48 +1,48 @@ ---玄翼竜 ブラック・フェザー -function c60992105.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(60992105,0)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_DAMAGE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCountLimit(1) - e1:SetCondition(c60992105.condition) - e1:SetTarget(c60992105.target) - e1:SetOperation(c60992105.operation) - c:RegisterEffect(e1) -end -function c60992105.condition(e,tp,eg,ep,ev,re,r,rp) - return ep==tp -end -function c60992105.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end - Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1) -end -function c60992105.filter(c) - return c:IsLocation(LOCATION_GRAVE) and c:IsType(TYPE_MONSTER) -end -function c60992105.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct==0 then return end - if ct>5 then ct=5 end - local t={} - for i=1,ct do t[i]=i end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(60992105,1)) - local ac=Duel.AnnounceNumber(tp,table.unpack(t)) - Duel.DiscardDeck(tp,ac,REASON_EFFECT) - local g=Duel.GetOperatedGroup() - if g:IsExists(c60992105.filter,1,nil) and c:IsFaceup() and c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(400) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end +--玄翼竜 ブラック・フェザー +function c60992105.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(60992105,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCountLimit(1) + e1:SetCondition(c60992105.condition) + e1:SetTarget(c60992105.target) + e1:SetOperation(c60992105.operation) + c:RegisterEffect(e1) +end +function c60992105.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c60992105.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1) +end +function c60992105.filter(c) + return c:IsLocation(LOCATION_GRAVE) and c:IsType(TYPE_MONSTER) +end +function c60992105.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if ct==0 then return end + if ct>5 then ct=5 end + local t={} + for i=1,ct do t[i]=i end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(60992105,1)) + local ac=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.DiscardDeck(tp,ac,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + if g:IsExists(c60992105.filter,1,nil) and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(400) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c60992364.lua b/script/c60992364.lua index 141cd14e..25f560eb 100644 --- a/script/c60992364.lua +++ b/script/c60992364.lua @@ -12,6 +12,7 @@ function c60992364.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e2:SetDescription(aux.Stringid(60992364,0)) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) diff --git a/script/c61019812.lua b/script/c61019812.lua index 1ec7b2cb..0b9e2243 100644 --- a/script/c61019812.lua +++ b/script/c61019812.lua @@ -1,52 +1,52 @@ ---レッド・ダストン -function c61019812.initial_effect(c) - c:SetUniqueOnField(1,0,61019812) - --cannot release - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_UNRELEASABLE_SUM) - e1:SetValue(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) - e3:SetValue(1) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - c:RegisterEffect(e5) - --damage - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(61019812,0)) - e6:SetCategory(CATEGORY_DAMAGE) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_DESTROYED) - e6:SetCondition(c61019812.dmcon) - e6:SetTarget(c61019812.dmtg) - e6:SetOperation(c61019812.dmop) - c:RegisterEffect(e6) -end -function c61019812.dmcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c61019812.dmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - Duel.SetTargetPlayer(c:GetPreviousControler()) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,c:GetPreviousControler(),500) -end -function c61019812.dmop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--レッド・ダストン +function c61019812.initial_effect(c) + c:SetUniqueOnField(1,0,61019812) + --cannot release + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e5) + --damage + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(61019812,0)) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_DESTROYED) + e6:SetCondition(c61019812.dmcon) + e6:SetTarget(c61019812.dmtg) + e6:SetOperation(c61019812.dmop) + c:RegisterEffect(e6) +end +function c61019812.dmcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c61019812.dmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + Duel.SetTargetPlayer(c:GetPreviousControler()) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,c:GetPreviousControler(),500) +end +function c61019812.dmop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c61127349.lua b/script/c61127349.lua index 9bca506f..76a439d6 100644 --- a/script/c61127349.lua +++ b/script/c61127349.lua @@ -1,14 +1,6 @@ --ビッグバン・シュート function c61127349.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(c61127349.target) - e1:SetOperation(c61127349.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk down local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,13 +12,6 @@ function c61127349.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_PIERCE) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) --Remove local e5=Effect.CreateEffect(c) e5:SetDescription(aux.Stringid(61127349,0)) @@ -35,19 +20,6 @@ function c61127349.initial_effect(c) e5:SetOperation(c61127349.rmop) c:RegisterEffect(e5) end -function c61127349.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) -end -function c61127349.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 c61127349.rmop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local tc=e:GetHandler():GetEquipTarget() diff --git a/script/c61156777.lua b/script/c61156777.lua index f4d47300..9247801c 100644 --- a/script/c61156777.lua +++ b/script/c61156777.lua @@ -1,64 +1,64 @@ ---BOXサー -function c61156777.initial_effect(c) - c:EnableCounterPermit(0x34) - --Add counter - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(61156777,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(aux.bdogcon) - e1:SetOperation(c61156777.ctop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(61156777,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c61156777.spcost) - e2:SetTarget(c61156777.sptg) - e2:SetOperation(c61156777.spop) - c:RegisterEffect(e2) - --destroy replace - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_DESTROY_REPLACE) - e3:SetTarget(c61156777.reptg) - e3:SetOperation(c61156777.repop) - c:RegisterEffect(e3) -end -function c61156777.ctop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - c:AddCounter(0x34,1) - end -end -function c61156777.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and e:GetHandler():GetCounter(0x34)>1 end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c61156777.filter(c,e,tp) - return c:IsAttribute(ATTRIBUTE_EARTH) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c61156777.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c61156777.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c61156777.spop(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,c61156777.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c61156777.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x34,1,REASON_EFFECT) end - return Duel.SelectYesNo(tp,aux.Stringid(61156777,2)) -end -function c61156777.repop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RemoveCounter(tp,0x34,1,REASON_EFFECT) -end +--BOXサー +function c61156777.initial_effect(c) + c:EnableCounterPermit(0x34) + --Add counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(61156777,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(aux.bdogcon) + e1:SetOperation(c61156777.ctop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(61156777,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c61156777.spcost) + e2:SetTarget(c61156777.sptg) + e2:SetOperation(c61156777.spop) + c:RegisterEffect(e2) + --destroy replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetTarget(c61156777.reptg) + e3:SetOperation(c61156777.repop) + c:RegisterEffect(e3) +end +function c61156777.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + c:AddCounter(0x34,1) + end +end +function c61156777.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and e:GetHandler():GetCounter(0x34)>1 end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c61156777.filter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_EARTH) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c61156777.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c61156777.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c61156777.spop(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,c61156777.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c61156777.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x34,1,REASON_EFFECT) end + return Duel.SelectYesNo(tp,aux.Stringid(61156777,2)) +end +function c61156777.repop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RemoveCounter(tp,0x34,1,REASON_EFFECT) +end diff --git a/script/c61175706.lua b/script/c61175706.lua index 3bc665cf..872e38de 100644 --- a/script/c61175706.lua +++ b/script/c61175706.lua @@ -38,10 +38,10 @@ function c61175706.arcanareg(c,coin) e1:SetTargetRange(LOCATION_MZONE,0) e1:SetTarget(c61175706.atktg) e1:SetValue(c61175706.atkval) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) -- - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) end function c61175706.atktg(e,c) return c:IsSetCard(0x5) diff --git a/script/c61190918.lua b/script/c61190918.lua index 37d62d9a..14903509 100644 --- a/script/c61190918.lua +++ b/script/c61190918.lua @@ -1,52 +1,52 @@ ---トゥーン・バスター・ブレイダー -function c61190918.initial_effect(c) - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c61190918.atklimit) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - --atkup - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetCode(EFFECT_UPDATE_ATTACK) - e4:SetRange(LOCATION_MZONE) - e4:SetValue(c61190918.val) - c:RegisterEffect(e4) - --direct attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_DIRECT_ATTACK) - e5:SetCondition(c61190918.dircon) - c:RegisterEffect(e5) -end -function c61190918.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c61190918.dirfilter1(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c61190918.dirfilter2(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c61190918.dircon(e) - return Duel.IsExistingMatchingCard(c61190918.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) - and not Duel.IsExistingMatchingCard(c61190918.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c61190918.val(e,c) - return Duel.GetMatchingGroupCount(c61190918.filter,c:GetControler(),0,LOCATION_GRAVE+LOCATION_MZONE,nil)*500 -end -function c61190918.filter(c) - return c:IsRace(RACE_DRAGON) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) -end +--トゥーン・バスター・ブレイダー +function c61190918.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c61190918.atklimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + --atkup + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c61190918.val) + c:RegisterEffect(e4) + --direct attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DIRECT_ATTACK) + e5:SetCondition(c61190918.dircon) + c:RegisterEffect(e5) +end +function c61190918.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c61190918.dirfilter1(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c61190918.dirfilter2(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c61190918.dircon(e) + return Duel.IsExistingMatchingCard(c61190918.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) + and not Duel.IsExistingMatchingCard(c61190918.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c61190918.val(e,c) + return Duel.GetMatchingGroupCount(c61190918.filter,c:GetControler(),0,LOCATION_GRAVE+LOCATION_MZONE,nil)*500 +end +function c61190918.filter(c) + return c:IsRace(RACE_DRAGON) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) +end diff --git a/script/c61204971.lua b/script/c61204971.lua index 1afbdbdc..45a498c1 100644 --- a/script/c61204971.lua +++ b/script/c61204971.lua @@ -1,47 +1,48 @@ ---E・HERO サンダー・ジャイアント -function c61204971.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,20721928,84327329,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(61204971,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCost(c61204971.descost) - e2:SetTarget(c61204971.destg) - e2:SetOperation(c61204971.desop) - c:RegisterEffect(e2) -end -function c61204971.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c61204971.filter(c,atk) - return c:IsFaceup() and c:GetBaseAttack()6 and Duel.GetTributeCount(c)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1) end function c61231400.otop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,1,1) diff --git a/script/c61257789.lua b/script/c61257789.lua index 0087b242..905f1ba2 100644 --- a/script/c61257789.lua +++ b/script/c61257789.lua @@ -1,98 +1,97 @@ ---スターダスト・ドラゴン/バスター -function c61257789.initial_effect(c) - c:EnableReviveLimit() - --Cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) - c:RegisterEffect(e1) - --Negate - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(61257789,0)) - e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c61257789.negcon) - e2:SetCost(c61257789.negcost) - e2:SetTarget(c61257789.negtg) - e2:SetOperation(c61257789.negop) - c:RegisterEffect(e2) - --Revive - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(61257789,1)) - e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_GRAVE) - e3:SetCountLimit(1) - e3:SetTarget(c61257789.sumtg) - e3:SetOperation(c61257789.sumop) - c:RegisterEffect(e3) - --Special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(61257789,2)) - e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c61257789.spcon) - e4:SetTarget(c61257789.sptg) - e4:SetOperation(c61257789.spop) - c:RegisterEffect(e4) -end -function c61257789.negcon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) -end -function c61257789.negcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c61257789.negtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c61257789.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re)then - Duel.Destroy(eg,REASON_EFFECT) - end - e:GetHandler():RegisterFlagEffect(61257789,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) -end -function c61257789.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(61257789)>0 - and c:IsCanBeSpecialSummoned(e,0,tp,true,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c61257789.sumop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,true,false,POS_FACEUP) - end -end -function c61257789.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_DESTROY) -end -function c61257789.spfilter(c,e,tp) - return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c61257789.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c61257789.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c61257789.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c61257789.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c61257789.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--スターダスト・ドラゴン/バスター +function c61257789.initial_effect(c) + c:EnableReviveLimit() + --Cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --Negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(61257789,0)) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c61257789.negcon) + e2:SetCost(c61257789.negcost) + e2:SetTarget(c61257789.negtg) + e2:SetOperation(c61257789.negop) + c:RegisterEffect(e2) + --Revive + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(61257789,1)) + e3:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1) + e3:SetTarget(c61257789.sumtg) + e3:SetOperation(c61257789.sumop) + c:RegisterEffect(e3) + --Special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(61257789,2)) + e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c61257789.spcon) + e4:SetTarget(c61257789.sptg) + e4:SetOperation(c61257789.spop) + c:RegisterEffect(e4) +end +function c61257789.negcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) +end +function c61257789.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c61257789.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c61257789.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re)then + Duel.Destroy(eg,REASON_EFFECT) + end + e:GetHandler():RegisterFlagEffect(61257789,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,0) +end +function c61257789.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:GetFlagEffect(61257789)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c61257789.sumop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,true,false,POS_FACEUP) + end +end +function c61257789.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c61257789.spfilter(c,e,tp) + return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c61257789.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c61257789.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c61257789.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c61257789.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c61257789.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c61307542.lua b/script/c61307542.lua index d3e87b6f..9a4ddc53 100644 --- a/script/c61307542.lua +++ b/script/c61307542.lua @@ -1,4 +1,4 @@ ---버제스토마 아노말로카리스 +--バージェストマ・アノマロカリス function c61307542.initial_effect(c) --xyz summon aux.AddXyzProcedure(c,nil,2,3,nil,nil,5) @@ -31,7 +31,7 @@ function c61307542.initial_effect(c) e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetCode(EVENT_FREE_CHAIN) e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e3:SetCountLimit(1) e3:SetCondition(c61307542.descon) e3:SetCost(c61307542.descost) @@ -49,7 +49,8 @@ function c61307542.condition(e,tp,eg,ep,ev,re,r,rp) return eg:IsExists(c61307542.cfilter,1,nil,tp) end function c61307542.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end + local tc=Duel.GetDecktopGroup(tp,1):GetFirst() + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) and tc:IsAbleToHand() end end function c61307542.operation(e,tp,eg,ep,ev,re,r,rp) if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end @@ -74,9 +75,9 @@ function c61307542.descost(e,tp,eg,ep,ev,re,r,rp,chk) end function c61307542.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsOnField() end - if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) end function c61307542.desop(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c61344030.lua b/script/c61344030.lua index 59f7f9f9..19a9a987 100644 --- a/script/c61344030.lua +++ b/script/c61344030.lua @@ -7,7 +7,7 @@ function c61344030.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(61344030,0)) e1:SetCategory(CATEGORY_DISABLE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c61370518.lua b/script/c61370518.lua index 88f4bf61..8fda174e 100644 --- a/script/c61370518.lua +++ b/script/c61370518.lua @@ -1,44 +1,43 @@ ---迅雷の魔王-スカル・デーモン -function c61370518.initial_effect(c) - --maintain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c61370518.mtcon) - e1:SetOperation(c61370518.mtop) - c:RegisterEffect(e1) - --disable and destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c61370518.disop) - c:RegisterEffect(e2) -end -function c61370518.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c61370518.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -function c61370518.disop(e,tp,eg,ep,ev,re,r,rp) - if ep==tp then return end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end - local rc=re:GetHandler() - local dc=Duel.TossDice(tp,1) - if dc==1 or dc==3 or dc==6 then - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then - Duel.Destroy(rc,REASON_EFFECT) - end - end -end +--迅雷の魔王-スカル・デーモン +function c61370518.initial_effect(c) + --maintain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c61370518.mtcon) + e1:SetOperation(c61370518.mtop) + c:RegisterEffect(e1) + --disable and destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c61370518.disop) + c:RegisterEffect(e2) +end +function c61370518.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c61370518.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c61370518.disop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end + local rc=re:GetHandler() + local dc=Duel.TossDice(tp,1) + if dc==1 or dc==3 or dc==6 then + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end + end +end diff --git a/script/c6137095.lua b/script/c6137095.lua index d7d60dff..621a5892 100644 --- a/script/c6137095.lua +++ b/script/c6137095.lua @@ -30,9 +30,8 @@ function c6137095.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c6137095.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) local rc=re:GetHandler() - if rc:IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and rc:IsRelateToEffect(re) then if rc:IsStatus(STATUS_ACT_FROM_HAND) then rc:CancelToGrave() Duel.SendtoHand(rc,nil,REASON_EFFECT) diff --git a/script/c61380658.lua b/script/c61380658.lua index 64c5b3d5..30e505a5 100644 --- a/script/c61380658.lua +++ b/script/c61380658.lua @@ -1,26 +1,26 @@ ---エレキリギリス -function c61380658.initial_effect(c) - --untargetable - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c61380658.atlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c61380658.tglimit) - e2:SetValue(aux.tgoval) - c:RegisterEffect(e2) -end -function c61380658.atlimit(e,c) - return c:IsFaceup() and c:IsSetCard(0xe) and c~=e:GetHandler() -end -function c61380658.tglimit(e,c) - return c:IsSetCard(0xe) and c~=e:GetHandler() -end +--エレキリギリス +function c61380658.initial_effect(c) + --untargetable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c61380658.atlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c61380658.tglimit) + e2:SetValue(aux.tgoval) + c:RegisterEffect(e2) +end +function c61380658.atlimit(e,c) + return c:IsFaceup() and c:IsSetCard(0xe) and c~=e:GetHandler() +end +function c61380658.tglimit(e,c) + return c:IsSetCard(0xe) and c~=e:GetHandler() +end diff --git a/script/c61397885.lua b/script/c61397885.lua new file mode 100644 index 00000000..1ea0fa80 --- /dev/null +++ b/script/c61397885.lua @@ -0,0 +1,118 @@ +--幻煌龍の浸禍 +--Deep Whirlpool of the Mythic Radiance Dragon +--Script by dest +function c61397885.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE+CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c61397885.condition) + e1:SetTarget(c61397885.target) + e1:SetOperation(c61397885.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c61397885.handcon) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(61397885,0)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c61397885.eqcost) + e3:SetTarget(c61397885.eqtg) + e3:SetOperation(c61397885.eqop) + c:RegisterEffect(e3) +end +function c61397885.cfilter(c) + return c:IsFacedown() or not c:IsType(TYPE_NORMAL) +end +function c61397885.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>0 + and not Duel.IsExistingMatchingCard(c61397885.cfilter,tp,LOCATION_MZONE,0,1,nil) + and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c61397885.mfilter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c61397885.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c61397885.mfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c61397885.mfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c61397885.mfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c61397885.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetValue(RESET_TURN_SET) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + end +end +function c61397885.filter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c61397885.handcon(e) + return Duel.IsExistingMatchingCard(c61397885.filter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end +function c61397885.eqcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c61397885.efilter(c,e) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsCanBeEffectTarget(e) +end +function c61397885.eqfilter(c,g) + return c:IsType(TYPE_EQUIP) and c:IsSetCard(0xfa) and g:IsExists(c61397885.eqcheck,1,nil,c) +end +function c61397885.eqcheck(c,ec) + return ec:CheckEquipTarget(c) +end +function c61397885.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local g=Duel.GetMatchingGroup(c61397885.efilter,tp,LOCATION_MZONE,0,nil,e) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c61397885.efilter(chkc,e) end + if chk==0 then return g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c61397885.eqfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,nil,g) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c61397885.efilter,tp,LOCATION_MZONE,0,1,1,nil,e) +end +function c61397885.eqop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tc=tg:GetFirst() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectMatchingCard(tp,c61397885.eqfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,tg) + local eq=g:GetFirst() + if eq then + Duel.Equip(tp,eq,tc,true) + end +end diff --git a/script/c61405855.lua b/script/c61405855.lua index 67796469..015676f4 100644 --- a/script/c61405855.lua +++ b/script/c61405855.lua @@ -1,27 +1,12 @@ --竜殺しの剣 function c61405855.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(c61405855.target) - e1:SetOperation(c61405855.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR)) --atkup local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(700) 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(c61405855.eqlimit) - c:RegisterEffect(e3) --destroy local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(61405855,0)) @@ -34,25 +19,6 @@ function c61405855.initial_effect(c) e4:SetOperation(c61405855.desop) c:RegisterEffect(e4) end -function c61405855.eqlimit(e,c) - return c:IsRace(RACE_WARRIOR) -end -function c61405855.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c61405855.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c61405855.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c61405855.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c61405855.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c61405855.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 c61405855.descon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler():GetEquipTarget() local bc=c:GetBattleTarget() diff --git a/script/c61420130.lua b/script/c61420130.lua index 6faf924e..4e0a377c 100644 --- a/script/c61420130.lua +++ b/script/c61420130.lua @@ -1,88 +1,88 @@ ---버제스토마 할루키게니아 -function c61420130.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c61420130.condition) - e1:SetTarget(c61420130.target) - e1:SetOperation(c61420130.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c61420130.spcon) - e2:SetTarget(c61420130.sptg) - e2:SetOperation(c61420130.spop) - c:RegisterEffect(e2) -end -function c61420130.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c61420130.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c61420130.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(tc:GetAttack()/2) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(tc:GetDefense()/2) - tc:RegisterEffect(e2) - end -end -function c61420130.spcon(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c61420130.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(61420130)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,61420130,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end - c:RegisterFlagEffect(61420130,RESET_CHAIN,0,1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c61420130.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,61420130,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c61420130.efilter) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetReset(RESET_EVENT+0x47e0000) - e3:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c61420130.efilter(e,re) - return re:IsActiveType(TYPE_MONSTER) -end +--バージェストマ・ハルキゲニア +function c61420130.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c61420130.condition) + e1:SetTarget(c61420130.target) + e1:SetOperation(c61420130.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c61420130.spcon) + e2:SetTarget(c61420130.sptg) + e2:SetOperation(c61420130.spop) + c:RegisterEffect(e2) +end +function c61420130.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c61420130.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c61420130.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetAttack()/2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(tc:GetDefense()/2) + tc:RegisterEffect(e2) + end +end +function c61420130.spcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c61420130.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(61420130)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,61420130,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end + c:RegisterFlagEffect(61420130,RESET_CHAIN,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c61420130.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,61420130,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c61420130.efilter) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c61420130.efilter(e,re) + return re:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c6142488.lua b/script/c6142488.lua index 883cc6c4..e3f834ff 100644 --- a/script/c6142488.lua +++ b/script/c6142488.lua @@ -1,51 +1,51 @@ ---ファーニマル・マウス -function c6142488.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - e1:SetCountLimit(1) - e1:SetCost(c6142488.spcost) - e1:SetTarget(c6142488.sptg) - e1:SetOperation(c6142488.spop) - c:RegisterEffect(e1) - Duel.AddCustomActivityCounter(6142488,ACTIVITY_SPSUMMON,c6142488.counterfilter) -end -function c6142488.counterfilter(c) - return c:IsSetCard(0xad) or c:GetSummonLocation()~=LOCATION_EXTRA -end -function c6142488.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCustomActivityCount(6142488,tp,ACTIVITY_SPSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetTarget(c6142488.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c6142488.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return not c:IsSetCard(0xad) and c:IsLocation(LOCATION_EXTRA) -end -function c6142488.filter(c,e,tp) - return c:IsCode(6142488) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c6142488.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c6142488.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c6142488.spop(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if ft>2 then ft=2 end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c6142488.filter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--ファーニマル・マウス +function c6142488.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetCountLimit(1) + e1:SetCost(c6142488.spcost) + e1:SetTarget(c6142488.sptg) + e1:SetOperation(c6142488.spop) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(6142488,ACTIVITY_SPSUMMON,c6142488.counterfilter) +end +function c6142488.counterfilter(c) + return c:IsSetCard(0xad) or c:GetSummonLocation()~=LOCATION_EXTRA +end +function c6142488.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(6142488,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetTarget(c6142488.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c6142488.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0xad) and c:IsLocation(LOCATION_EXTRA) +end +function c6142488.filter(c,e,tp) + return c:IsCode(6142488) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c6142488.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c6142488.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c6142488.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>2 then ft=2 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c6142488.filter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c61441708.lua b/script/c61441708.lua index 34f72249..db988437 100644 --- a/script/c61441708.lua +++ b/script/c61441708.lua @@ -3,6 +3,7 @@ function c61441708.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c61441708.spr) c:RegisterEffect(e1) diff --git a/script/c61468779.lua b/script/c61468779.lua index e7923a44..f94e2766 100644 --- a/script/c61468779.lua +++ b/script/c61468779.lua @@ -1,76 +1,76 @@ ---地霊神グランソイル -function c61468779.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c61468779.spcon) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(61468779,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetTarget(c61468779.sptg) - e3:SetOperation(c61468779.spop) - c:RegisterEffect(e3) - --leave - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_LEAVE_FIELD_P) - e4:SetOperation(c61468779.leaveop) - c:RegisterEffect(e4) -end -function c61468779.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and - Duel.GetMatchingGroupCount(Card.IsAttribute,c:GetControler(),LOCATION_GRAVE,0,nil,ATTRIBUTE_EARTH)==5 -end -function c61468779.filter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c61468779.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c61468779.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c61468779.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c61468779.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c61468779.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c61468779.leaveop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsFacedown() then return end - local effp=e:GetHandler():GetControler() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SKIP_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - if Duel.GetTurnPlayer()==effp then - e1:SetLabel(Duel.GetTurnCount()) - e1:SetCondition(c61468779.skipcon) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) - end - Duel.RegisterEffect(e1,effp) -end -function c61468779.skipcon(e) - return Duel.GetTurnCount()~=e:GetLabel() -end +--地霊神グランソイル +function c61468779.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c61468779.spcon) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(61468779,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetTarget(c61468779.sptg) + e3:SetOperation(c61468779.spop) + c:RegisterEffect(e3) + --leave + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD_P) + e4:SetOperation(c61468779.leaveop) + c:RegisterEffect(e4) +end +function c61468779.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.GetMatchingGroupCount(Card.IsAttribute,c:GetControler(),LOCATION_GRAVE,0,nil,ATTRIBUTE_EARTH)==5 +end +function c61468779.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c61468779.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c61468779.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c61468779.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c61468779.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c61468779.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c61468779.leaveop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsFacedown() then return end + local effp=e:GetHandler():GetControler() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SKIP_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + if Duel.GetTurnPlayer()==effp then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetCondition(c61468779.skipcon) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,1) + end + Duel.RegisterEffect(e1,effp) +end +function c61468779.skipcon(e) + return Duel.GetTurnCount()~=e:GetLabel() +end diff --git a/script/c61528025.lua b/script/c61528025.lua index 52932e42..3191f7cb 100644 --- a/script/c61528025.lua +++ b/script/c61528025.lua @@ -3,7 +3,7 @@ function c61528025.initial_effect(c) --remove local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) e1:SetCode(EFFECT_TO_GRAVE_REDIRECT) e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(0xff,0xff) diff --git a/script/c61529473.lua b/script/c61529473.lua new file mode 100644 index 00000000..dbebb837 --- /dev/null +++ b/script/c61529473.lua @@ -0,0 +1,162 @@ +--真竜の黙示録 +--Apocalypse of the True Dracos +--Script by mercury233 +function c61529473.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c61529473.target) + c:RegisterEffect(e1) + --destory and atk & def down + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(61529473,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+TIMING_END_PHASE) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,61529473) + e2:SetCondition(c61529473.atkcon) + e2:SetCost(c61529473.cost) + e2:SetTarget(c61529473.atktg) + e2:SetOperation(c61529473.atkop) + c:RegisterEffect(e2) + --tribute summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(61529473,1)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetHintTiming(0,TIMING_MAIN_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,61529474) + e3:SetCondition(c61529473.sumcon) + e3:SetCost(c61529473.cost) + e3:SetTarget(c61529473.sumtg) + e3:SetOperation(c61529473.sumop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(61529473,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,61529475) + e4:SetCondition(c61529473.descon) + e4:SetTarget(c61529473.destg) + e4:SetOperation(c61529473.desop) + c:RegisterEffect(e4) +end +function c61529473.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c61529473.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return true end + local b1=c61529473.atkcon(e,tp,eg,ep,ev,re,r,rp) and c61529473.atktg(e,tp,eg,ep,ev,re,r,rp,0) + local b2=c61529473.sumcon(e,tp,eg,ep,ev,re,r,rp) and c61529473.sumtg(e,tp,eg,ep,ev,re,r,rp,0) + if (b1 or b2) and Duel.SelectYesNo(tp,94) then + local op=0 + if b1 and b2 then op=Duel.SelectOption(tp,aux.Stringid(61529473,0),aux.Stringid(61529473,1)) + elseif b1 then op=Duel.SelectOption(tp,aux.Stringid(61529473,0)) + else op=Duel.SelectOption(tp,aux.Stringid(61529473,1))+1 end + if op==0 then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c61529473.atkop) + c61529473.atktg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(CATEGORY_SUMMON) + e:SetProperty(0) + e:SetOperation(c61529473.sumop) + c61529473.sumtg(e,tp,eg,ep,ev,re,r,rp,1) + end + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c61529473.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c61529473.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) end +end +function c61529473.tgfilter(c) + return c:IsFaceup() and (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) +end +function c61529473.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(tp) and c61529473.tgfilter(chkc) and chkc~=c end + if chk==0 then return Duel.IsExistingTarget(c61529473.tgfilter,tp,LOCATION_ONFIELD,0,1,c) + and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) + and Duel.GetFlagEffect(tp,61529473)==0 end + Duel.RegisterFlagEffect(tp,61529473,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c61529473.tgfilter,tp,LOCATION_ONFIELD,0,1,1,c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c61529473.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc2=g:GetFirst() + while tc2 do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(math.ceil(tc2:GetAttack()/2)) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(math.ceil(tc2:GetDefense()/2)) + tc2:RegisterEffect(e2) + tc2=g:GetNext() + end + end + end +function c61529473.sumcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c61529473.sumfilter(c) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsSummonable(true,nil,1) +end +function c61529473.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c61529473.sumfilter,tp,LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(tp,61529474)==0 end + Duel.RegisterFlagEffect(tp,61529474,RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c61529473.sumop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c61529473.sumfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil,1) + end +end +function c61529473.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c61529473.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c61529473.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c61613388.lua b/script/c61613388.lua index 5dbfc8d8..699bd470 100644 --- a/script/c61613388.lua +++ b/script/c61613388.lua @@ -1,78 +1,78 @@ ---U.A.ターンオーバー・タクティクス -function c61613388.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,61613388+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c61613388.condition) - e1:SetTarget(c61613388.target) - e1:SetOperation(c61613388.activate) - c:RegisterEffect(e1) -end -function c61613388.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb2) -end -function c61613388.condition(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c61613388.cfilter,tp,LOCATION_MZONE,0,nil) - return g:GetClassCount(Card.GetCode)>=2 -end -function c61613388.filter(c,e,tp) - return c:IsSetCard(0xb2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c61613388.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) - and Duel.IsExistingMatchingCard(c61613388.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c61613388.locfilter(c,sp) - return c:IsLocation(LOCATION_DECK) and c:IsControler(sp) -end -function c61613388.activate(e,tp,eg,ep,ev,re,r,rp) - local tg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SendtoDeck(tg,nil,2,REASON_EFFECT) - Duel.ShuffleDeck(tp) - local ct1=Duel.GetOperatedGroup():FilterCount(c61613388.locfilter,nil,tp) - local ct2=Duel.GetOperatedGroup():FilterCount(c61613388.locfilter,nil,1-tp) - if ct1>Duel.GetLocationCount(tp,LOCATION_MZONE) then ct1=Duel.GetLocationCount(tp,LOCATION_MZONE) end - if ct2>Duel.GetLocationCount(1-tp,LOCATION_MZONE) then ct2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) end - if ct1<=0 then return end - local g=Duel.GetMatchingGroup(c61613388.filter,tp,LOCATION_DECK,0,nil,e,tp) - if g:GetCount()==0 then return end - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,sg:GetFirst():GetCode()) - ct1=ct1-1 - while ct1>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(61613388,0)) do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) - sg:Merge(g1) - ct1=ct1-1 - end - local sc=sg:GetFirst() - while sc do - if Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - sc:RegisterEffect(e1) - end - sc=sg:GetNext() - end - Duel.SpecialSummonComplete() - if ct2>0 and Duel.IsExistingMatchingCard(Card.IsCanBeSpecialSummoned,tp,0,LOCATION_DECK,1,nil,e,0,1-tp,false,false) - and Duel.SelectYesNo(1-tp,aux.Stringid(61613388,1)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) - local sg2=Duel.SelectMatchingCard(1-tp,Card.IsCanBeSpecialSummoned,tp,0,LOCATION_DECK,1,ct2,nil,e,0,1-tp,false,false) - if sg2:GetCount()>0 then - Duel.SpecialSummon(sg2,0,1-tp,1-tp,false,false,POS_FACEUP) - end - end -end +--U.A.ターンオーバー・タクティクス +function c61613388.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,61613388+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c61613388.condition) + e1:SetTarget(c61613388.target) + e1:SetOperation(c61613388.activate) + c:RegisterEffect(e1) +end +function c61613388.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb2) +end +function c61613388.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c61613388.cfilter,tp,LOCATION_MZONE,0,nil) + return g:GetClassCount(Card.GetCode)>=2 +end +function c61613388.filter(c,e,tp) + return c:IsSetCard(0xb2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c61613388.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c61613388.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c61613388.locfilter(c,sp) + return c:IsLocation(LOCATION_DECK) and c:IsControler(sp) +end +function c61613388.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SendtoDeck(tg,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(tp) + local ct1=Duel.GetOperatedGroup():FilterCount(c61613388.locfilter,nil,tp) + local ct2=Duel.GetOperatedGroup():FilterCount(c61613388.locfilter,nil,1-tp) + if ct1>Duel.GetLocationCount(tp,LOCATION_MZONE) then ct1=Duel.GetLocationCount(tp,LOCATION_MZONE) end + if ct2>Duel.GetLocationCount(1-tp,LOCATION_MZONE) then ct2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) end + if ct1<=0 then return end + local g=Duel.GetMatchingGroup(c61613388.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()==0 then return end + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,sg:GetFirst():GetCode()) + ct1=ct1-1 + while ct1>0 and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(61613388,0)) do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) + sg:Merge(g1) + ct1=ct1-1 + end + local sc=sg:GetFirst() + while sc do + if Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sc:RegisterEffect(e1) + end + sc=sg:GetNext() + end + Duel.SpecialSummonComplete() + if ct2>0 and Duel.IsExistingMatchingCard(Card.IsCanBeSpecialSummoned,tp,0,LOCATION_DECK,1,nil,e,0,1-tp,false,false) + and Duel.SelectYesNo(1-tp,aux.Stringid(61613388,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local sg2=Duel.SelectMatchingCard(1-tp,Card.IsCanBeSpecialSummoned,tp,0,LOCATION_DECK,1,ct2,nil,e,0,1-tp,false,false) + if sg2:GetCount()>0 then + Duel.SpecialSummon(sg2,0,1-tp,1-tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c61639289.lua b/script/c61639289.lua index 7ea7c72e..de7fed7f 100644 --- a/script/c61639289.lua +++ b/script/c61639289.lua @@ -1,44 +1,44 @@ ---イグナイト・イーグル -function c61639289.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c61639289.thcon) - e2:SetTarget(c61639289.thtg) - e2:SetOperation(c61639289.thop) - c:RegisterEffect(e2) -end -function c61639289.thcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return pc and pc:IsSetCard(0xc8) -end -function c61639289.filter(c) - return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() -end -function c61639289.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if chk==0 then return Duel.IsExistingMatchingCard(c61639289.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - local g=Group.FromCards(c,pc) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c61639289.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if not pc then return end - local dg=Group.FromCards(c,pc) - if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c61639289.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--イグナイト・イーグル +function c61639289.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c61639289.thcon) + e2:SetTarget(c61639289.thtg) + e2:SetOperation(c61639289.thop) + c:RegisterEffect(e2) +end +function c61639289.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsSetCard(0xc8) +end +function c61639289.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c61639289.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if chk==0 then return Duel.IsExistingMatchingCard(c61639289.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c61639289.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local dg=Group.FromCards(c,pc) + if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c61639289.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c6165656.lua b/script/c6165656.lua index ea996b72..44300c9c 100644 --- a/script/c6165656.lua +++ b/script/c6165656.lua @@ -21,6 +21,7 @@ function c6165656.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(6165656,0)) e3:SetCategory(CATEGORY_DAMAGE) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1) @@ -41,6 +42,7 @@ function c6165656.initial_effect(c) c:RegisterEffect(e4) end c6165656.xyz_number=88 +c6165656.rum_limit_code=48995978 --target check is in RUM magic cards function c6165656.splimit(e,se,sp,st) return se:GetHandler():IsSetCard(0x95) and se:GetHandler():IsType(TYPE_SPELL) diff --git a/script/c61677004.lua b/script/c61677004.lua new file mode 100644 index 00000000..796fade3 --- /dev/null +++ b/script/c61677004.lua @@ -0,0 +1,35 @@ +--捕食植物ダーリング・コブラ +--Predaplant Darling Cobra +--Script by dest +function c61677004.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(61677004,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,61677004+EFFECT_COUNT_CODE_DUEL) + e1:SetCondition(c61677004.thcon) + e1:SetTarget(c61677004.thtg) + e1:SetOperation(c61677004.thop) + c:RegisterEffect(e1) +end +function c61677004.thcon(e,tp,eg,ep,ev,re,r,rp) + return re and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsSetCard(0x10f3) +end +function c61677004.thfilter(c) + return c:IsSetCard(0x46) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c61677004.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c61677004.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c61677004.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c61677004.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c61692648.lua b/script/c61692648.lua index 3194ea7b..75b94965 100644 --- a/script/c61692648.lua +++ b/script/c61692648.lua @@ -1,20 +1,20 @@ ---勇気機関車ブレイブポッポ -function c61692648.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c61692648.atkop) - c:RegisterEffect(e1) -end -function c61692648.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(math.ceil(c:GetBaseAttack()/2)) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - c:RegisterEffect(e1) - end -end +--勇気機関車ブレイブポッポ +function c61692648.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c61692648.atkop) + c:RegisterEffect(e1) +end +function c61692648.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(math.ceil(c:GetBaseAttack()/2)) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + end +end diff --git a/script/c61705417.lua b/script/c61705417.lua index 467021cf..da603e94 100644 --- a/script/c61705417.lua +++ b/script/c61705417.lua @@ -1,92 +1,92 @@ ---墓荒らし -function c61705417.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c61705417.target) - e1:SetOperation(c61705417.activate) - c:RegisterEffect(e1) -end -function c61705417.filter(c) - return c:IsType(TYPE_SPELL) and c:IsAbleToHand() -end -function c61705417.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c61705417.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c61705417.filter,tp,0,LOCATION_GRAVE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c61705417.filter,tp,0,LOCATION_GRAVE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c61705417.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,tp,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - tc:RegisterFlagEffect(61705417,RESET_EVENT+0x5c0000+RESET_PHASE+PHASE_END,0,1) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetCondition(c61705417.tgcon) - e1:SetOperation(c61705417.tgop) - e1:SetLabelObject(tc) - e1:SetReset(RESET_EVENT+0x5c0000+RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EFFECT_SEND_REPLACE) - e2:SetTarget(c61705417.reptg) - e2:SetReset(RESET_EVENT+0x5c0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_CHAINING) - e3:SetCondition(c61705417.actcon) - e3:SetOperation(c61705417.actop) - e3:SetLabelObject(tc) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) - local e4=Effect.CreateEffect(e:GetHandler()) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_CHAIN_SOLVED) - e4:SetCondition(c61705417.damcon) - e4:SetOperation(c61705417.damop) - e4:SetLabelObject(tc) - e4:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e4,tp) - end -end -function c61705417.tgcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - return tc:GetControler()~=tc:GetOwner() and tc:GetFlagEffect(61705417)~=0 -end -function c61705417.tgop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.SendtoGrave(tc,REASON_EFFECT) -end -function c61705417.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsReason(REASON_COST) and c:GetControler()~=c:GetOwner() end - c:ResetFlagEffect(61705418) - Duel.Damage(c:GetControler(),2000,REASON_EFFECT) - return false -end -function c61705417.actcon(e,tp,eg,ep,ev,re,r,rp) - return rp==tp and re:GetHandler()==e:GetLabelObject() and re:GetHandler():GetFlagEffect(61705417)~=0 -end -function c61705417.actop(e,tp,eg,ep,ev,re,r,rp) - re:GetHandler():RegisterFlagEffect(61705418,RESET_CHAIN,0,1) - e:Reset() -end -function c61705417.damcon(e,tp,eg,ep,ev,re,r,rp) - return rp==tp and re:GetHandler()==e:GetLabelObject() and re:GetHandler():GetFlagEffect(61705418)~=0 -end -function c61705417.damop(e,tp,eg,ep,ev,re,r,rp) - re:GetHandler():ResetFlagEffect(61705418) - Duel.Damage(tp,2000,REASON_EFFECT) - e:Reset() -end +--墓荒らし +function c61705417.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c61705417.target) + e1:SetOperation(c61705417.activate) + c:RegisterEffect(e1) +end +function c61705417.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c61705417.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c61705417.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c61705417.filter,tp,0,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c61705417.filter,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c61705417.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,tp,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + tc:RegisterFlagEffect(61705417,RESET_EVENT+0x5c0000+RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c61705417.tgcon) + e1:SetOperation(c61705417.tgop) + e1:SetLabelObject(tc) + e1:SetReset(RESET_EVENT+0x5c0000+RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EFFECT_SEND_REPLACE) + e2:SetTarget(c61705417.reptg) + e2:SetReset(RESET_EVENT+0x5c0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAINING) + e3:SetCondition(c61705417.actcon) + e3:SetOperation(c61705417.actop) + e3:SetLabelObject(tc) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAIN_SOLVED) + e4:SetCondition(c61705417.damcon) + e4:SetOperation(c61705417.damop) + e4:SetLabelObject(tc) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) + end +end +function c61705417.tgcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return tc:GetControler()~=tc:GetOwner() and tc:GetFlagEffect(61705417)~=0 +end +function c61705417.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SendtoGrave(tc,REASON_EFFECT) +end +function c61705417.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsReason(REASON_COST) and c:GetControler()~=c:GetOwner() end + c:ResetFlagEffect(61705418) + Duel.Damage(c:GetControler(),2000,REASON_EFFECT) + return false +end +function c61705417.actcon(e,tp,eg,ep,ev,re,r,rp) + return rp==tp and re:GetHandler()==e:GetLabelObject() and re:GetHandler():GetFlagEffect(61705417)~=0 +end +function c61705417.actop(e,tp,eg,ep,ev,re,r,rp) + re:GetHandler():RegisterFlagEffect(61705418,RESET_CHAIN,0,1) + e:Reset() +end +function c61705417.damcon(e,tp,eg,ep,ev,re,r,rp) + return rp==tp and re:GetHandler()==e:GetLabelObject() and re:GetHandler():GetFlagEffect(61705418)~=0 +end +function c61705417.damop(e,tp,eg,ep,ev,re,r,rp) + re:GetHandler():ResetFlagEffect(61705418) + Duel.Damage(tp,2000,REASON_EFFECT) + e:Reset() +end diff --git a/script/c6172122.lua b/script/c6172122.lua index 1e35803b..bf6d8906 100644 --- a/script/c6172122.lua +++ b/script/c6172122.lua @@ -1,96 +1,103 @@ ---真紅眼融合 -function c6172122.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,6172122+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c6172122.cost) - e1:SetTarget(c6172122.target) - e1:SetOperation(c6172122.activate) - c:RegisterEffect(e1) -end -function c6172122.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetLabelObject(e) - e2:SetTarget(c6172122.splimit) - Duel.RegisterEffect(e2,tp) -end -function c6172122.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return se~=e:GetLabelObject() -end -function c6172122.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) -end -function c6172122.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and aux.IsMaterialListSetCard(c,0x3b) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c6172122.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c6172122.filter1,tp,0x07,0,nil,e) - local res=Duel.IsExistingMatchingCard(c6172122.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c6172122.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c6172122.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c6172122.filter1,tp,0x07,0,nil,e) - local sg1=Duel.GetMatchingGroup(c6172122.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c6172122.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(74677422) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end +--真紅眼融合 +function c6172122.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,6172122+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c6172122.cost) + e1:SetTarget(c6172122.target) + e1:SetOperation(c6172122.activate) + c:RegisterEffect(e1) +end +function c6172122.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SUMMON)==0 and Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetLabelObject(e) + e2:SetTarget(c6172122.splimit) + Duel.RegisterEffect(e2,tp) +end +function c6172122.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return se~=e:GetLabelObject() +end +function c6172122.filter0(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave() +end +function c6172122.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c6172122.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and aux.IsMaterialListSetCard(c,0x3b) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c6172122.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local mg2=Duel.GetMatchingGroup(c6172122.filter0,tp,LOCATION_DECK,0,nil) + mg1:Merge(mg2) + local res=Duel.IsExistingMatchingCard(c6172122.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c6172122.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c6172122.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c6172122.filter1,nil,e) + local mg2=Duel.GetMatchingGroup(c6172122.filter0,tp,LOCATION_DECK,0,nil) + mg1:Merge(mg2) + local sg1=Duel.GetMatchingGroup(c6172122.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg3=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c6172122.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(74677422) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c61740673.lua b/script/c61740673.lua index 87677d78..90c47e79 100644 --- a/script/c61740673.lua +++ b/script/c61740673.lua @@ -1,52 +1,48 @@ ---王宮の勅命 -function c61740673.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --disable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DISABLE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) - e2:SetTarget(c61740673.distarget) - c:RegisterEffect(e2) - --disable effect - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_CHAIN_SOLVING) - e3:SetRange(LOCATION_SZONE) - e3:SetOperation(c61740673.disoperation) - c:RegisterEffect(e3) - --maintain - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EVENT_PHASE+PHASE_STANDBY) - e4:SetRange(LOCATION_SZONE) - e4:SetCountLimit(1) - e4:SetCondition(c61740673.mtcon) - e4:SetOperation(c61740673.mtop) - c:RegisterEffect(e4) -end -function c61740673.distarget(e,c) - return c~=e:GetHandler() and c:IsType(TYPE_SPELL) -end -function c61740673.disoperation(e,tp,eg,ep,ev,re,r,rp) - local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) - if tl==LOCATION_SZONE and re:IsActiveType(TYPE_SPELL) then - Duel.NegateEffect(ev) - end -end -function c61740673.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c61740673.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,700) and Duel.SelectYesNo(tp,aux.Stringid(61740673,0)) then - Duel.PayLPCost(tp,700) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--王宮の勅命 +function c61740673.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e2:SetTarget(c61740673.distarget) + c:RegisterEffect(e2) + --disable effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c61740673.disoperation) + c:RegisterEffect(e3) + --maintain + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetOperation(c61740673.mtop) + c:RegisterEffect(e4) +end +function c61740673.distarget(e,c) + return c~=e:GetHandler() and c:IsType(TYPE_SPELL) +end +function c61740673.disoperation(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if tl==LOCATION_SZONE and re:IsActiveType(TYPE_SPELL) then + Duel.NegateEffect(ev) + end +end +function c61740673.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,700) then + Duel.PayLPCost(tp,700) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c6178850.lua b/script/c6178850.lua index 981e98cb..e834fd6f 100644 --- a/script/c6178850.lua +++ b/script/c6178850.lua @@ -1,15 +1,7 @@ --ファイティング・スピリッツ function c6178850.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(c6178850.target) - e1:SetOperation(c6178850.operation) - c:RegisterEffect(e1) - --Atk,def + aux.AddEquipProcedure(c) + --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) @@ -22,26 +14,6 @@ function c6178850.initial_effect(c) e3:SetTarget(c6178850.destg) e3:SetOperation(c6178850.desop) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetValue(1) - c:RegisterEffect(e4) -end -function c6178850.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 c6178850.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 c6178850.value(e,c) return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),0,LOCATION_MZONE)*300 diff --git a/script/c61791132.lua b/script/c61791132.lua index 38ca8607..97ed2a68 100644 --- a/script/c61791132.lua +++ b/script/c61791132.lua @@ -1,35 +1,35 @@ ---マリスボラス・フォーク -function c61791132.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(61791132,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c61791132.spcost) - e1:SetTarget(c61791132.sptg) - e1:SetOperation(c61791132.spop) - c:RegisterEffect(e1) -end -function c61791132.cfilter(c) - return c:IsRace(RACE_FIEND) and c:IsAbleToGraveAsCost() -end -function c61791132.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c61791132.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c61791132.cfilter,tp,LOCATION_HAND,0,1,1,e:GetHandler()) - Duel.SendtoGrave(g,REASON_COST) -end -function c61791132.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c61791132.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--マリスボラス・フォーク +function c61791132.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(61791132,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c61791132.spcost) + e1:SetTarget(c61791132.sptg) + e1:SetOperation(c61791132.spop) + c:RegisterEffect(e1) +end +function c61791132.cfilter(c) + return c:IsRace(RACE_FIEND) and c:IsAbleToGraveAsCost() +end +function c61791132.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c61791132.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c61791132.cfilter,tp,LOCATION_HAND,0,1,1,e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) +end +function c61791132.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c61791132.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c61840587.lua b/script/c61840587.lua index 40fb69dc..1c5a7296 100644 --- a/script/c61840587.lua +++ b/script/c61840587.lua @@ -51,8 +51,7 @@ function c61840587.operation(e,tp,eg,ep,ev,re,r,rp) local sg=g:Filter(c61840587.sfilter,nil,e,tp) local sct=sg:GetCount() local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if sct==0 or ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if sct==0 or ft<=0 or (sct>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end if sct>ft then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) sg=sg:Select(tp,ft,ft,nil) diff --git a/script/c61844784.lua b/script/c61844784.lua index 7d0b50b2..9c5f5604 100644 --- a/script/c61844784.lua +++ b/script/c61844784.lua @@ -1,42 +1,42 @@ ---マジック・ガードナー -function c61844784.initial_effect(c) - --destroy rep - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c61844784.addct) - e1:SetOperation(c61844784.addc) - c:RegisterEffect(e1) -end -function c61844784.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SPELL) -end -function c61844784.addct(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c61844784.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c61844784.filter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(61844784,0)) - Duel.SelectTarget(tp,c61844784.filter,tp,LOCATION_SZONE,0,1,1,e:GetHandler()) -end -function c61844784.addc(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - tc:AddCounter(0x102a,1) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EFFECT_DESTROY_REPLACE) - e1:SetTarget(c61844784.reptg) - e1:SetOperation(c61844784.repop) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end -function c61844784.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return bit.band(r,REASON_RULE)==0 - and e:GetHandler():GetCounter(0x102a)>0 end - return true -end -function c61844784.repop(e,tp,eg,ep,ev,re,r,rp,chk) - e:GetHandler():RemoveCounter(tp,0x102a,1,REASON_EFFECT) -end +--マジック・ガードナー +function c61844784.initial_effect(c) + --destroy rep + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c61844784.addct) + e1:SetOperation(c61844784.addc) + c:RegisterEffect(e1) +end +function c61844784.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL) +end +function c61844784.addct(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c61844784.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c61844784.filter,tp,LOCATION_SZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(61844784,0)) + Duel.SelectTarget(tp,c61844784.filter,tp,LOCATION_SZONE,0,1,1,e:GetHandler()) +end +function c61844784.addc(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + tc:AddCounter(0x102a,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetTarget(c61844784.reptg) + e1:SetOperation(c61844784.repop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c61844784.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return bit.band(r,REASON_RULE)==0 + and e:GetHandler():GetCounter(0x102a)>0 end + return true +end +function c61844784.repop(e,tp,eg,ep,ev,re,r,rp,chk) + e:GetHandler():RemoveCounter(tp,0x102a,1,REASON_EFFECT) +end diff --git a/script/c61854111.lua b/script/c61854111.lua index ebae1dfa..39f334db 100644 --- a/script/c61854111.lua +++ b/script/c61854111.lua @@ -1,14 +1,6 @@ --伝説の剣 function c61854111.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(c61854111.target) - e1:SetOperation(c61854111.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c61854111.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c61854111.eqlimit) - c:RegisterEffect(e4) -end -function c61854111.eqlimit(e,c) - return c:IsRace(RACE_WARRIOR) -end -function c61854111.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c61854111.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c61854111.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c61854111.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c61854111.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c61854111.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 diff --git a/script/c61884774.lua b/script/c61884774.lua new file mode 100644 index 00000000..09f15b86 --- /dev/null +++ b/script/c61884774.lua @@ -0,0 +1,107 @@ +--妖仙獣の神颪 +function c61884774.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c61884774.condition) + e1:SetTarget(c61884774.target) + e1:SetOperation(c61884774.activate) + c:RegisterEffect(e1) +end +function c61884774.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c61884774.thfilter(c) + return c:IsSetCard(0xb3) and c:IsLevelAbove(5) and c:IsAbleToHand() +end +function c61884774.pzfilter(c,cd) + return c:IsCode(cd) and not c:IsForbidden() +end +function c61884774.target(e,tp,eg,ep,ev,re,r,rp,chk) + local b1=Duel.IsExistingMatchingCard(c61884774.thfilter,tp,LOCATION_DECK,0,1,nil) + local b2=(Duel.IsExistingMatchingCard(c61884774.pzfilter,tp,LOCATION_DECK,0,1,nil,65025250) + and Duel.IsExistingMatchingCard(c61884774.pzfilter,tp,LOCATION_DECK,0,1,nil,91420254) + and Duel.CheckLocation(tp,LOCATION_SZONE,6) and Duel.CheckLocation(tp,LOCATION_SZONE,7)) + if chk==0 then return b1 or b2 end + local op=0 + if b1 and b2 then + op=Duel.SelectOption(tp,aux.Stringid(61884774,0),aux.Stringid(61884774,1)) + elseif b1 then + op=Duel.SelectOption(tp,aux.Stringid(61884774,0)) + else + op=Duel.SelectOption(tp,aux.Stringid(61884774,1))+1 + end + e:SetLabel(op) + if op==0 then + e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) + else + e:SetCategory(0) + end +end +function c61884774.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c61884774.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end + local op=e:GetLabel() + if op==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c61884774.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + else + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) or not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return end + local tc1=Duel.GetFirstMatchingCard(c61884774.pzfilter,tp,LOCATION_DECK,0,nil,65025250) + local tc2=Duel.GetFirstMatchingCard(c61884774.pzfilter,tp,LOCATION_DECK,0,nil,91420254) + if not (tc1 and tc2) then return end + Duel.MoveToField(tc1,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.MoveToField(tc2,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local fid=c:GetFieldID() + tc1:RegisterFlagEffect(61884774,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,1,fid) + tc2:RegisterFlagEffect(61884774,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,1,fid) + local sg=Group.FromCards(tc1,tc2) + sg:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(sg) + e1:SetCondition(c61884774.descon) + e1:SetOperation(c61884774.desop) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c61884774.splimit(e,c) + return not c:IsSetCard(0xb3) +end +function c61884774.desfilter(c,fid) + return c:GetFlagEffectLabel(61884774)==fid +end +function c61884774.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if Duel.GetTurnPlayer()==tp then return false end + if not g:IsExists(c61884774.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c61884774.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c61884774.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c61936647.lua b/script/c61936647.lua index e1276242..d7ae5ed4 100644 --- a/script/c61936647.lua +++ b/script/c61936647.lua @@ -1,135 +1,135 @@ ---幻影剣 -function c61936647.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(c61936647.condition) - e1:SetTarget(c61936647.target) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_CHAIN_SOLVED) - e2:SetLabelObject(e1) - e2:SetCondition(c61936647.tgcon) - e2:SetOperation(c61936647.tgop) - c:RegisterEffect(e2) - --atk up - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(c61936647.ctg) - e3:SetValue(800) - c:RegisterEffect(e3) - --destroy replace - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EFFECT_DESTROY_REPLACE) - e4:SetRange(LOCATION_SZONE) - e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e4:SetTarget(c61936647.reptg) - e4:SetValue(c61936647.repval) - e4:SetOperation(c61936647.repop) - c:RegisterEffect(e4) - --destroy - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e5:SetRange(LOCATION_SZONE) - e5:SetCode(EVENT_LEAVE_FIELD) - e5:SetCondition(c61936647.descon) - e5:SetOperation(c61936647.desop) - c:RegisterEffect(e5) - --spsummon - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(61936647,1)) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET) - e6:SetType(EFFECT_TYPE_QUICK_O) - e6:SetCode(EVENT_FREE_CHAIN) - e6:SetRange(LOCATION_GRAVE) - e6:SetCountLimit(1,61936647) - e6:SetCost(c61936647.spcost) - e6:SetTarget(c61936647.sptg) - e6:SetOperation(c61936647.spop) - c:RegisterEffect(e6) -end -function c61936647.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c61936647.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_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c61936647.tgcon(e,tp,eg,ep,ev,re,r,rp) - return re==e:GetLabelObject() -end -function c61936647.tgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() - if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then - c:SetCardTarget(tc) - end -end -function c61936647.ctg(e,c) - return e:GetHandler():IsHasCardTarget(c) -end -function c61936647.repfilter(c,e) - return c61936647.ctg(e,c) and c:IsReason(REASON_BATTLE+REASON_EFFECT) -end -function c61936647.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDestructable() and eg:IsExists(c61936647.repfilter,1,nil,e) end - return Duel.SelectYesNo(tp,aux.Stringid(61936647,0)) -end -function c61936647.repval(e,c) - return c61936647.repfilter(c,e) -end -function c61936647.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) -end -function c61936647.descon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end - local tc=c:GetFirstCardTarget() - return tc and eg:IsContains(tc) -end -function c61936647.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c61936647.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c61936647.spfilter(c,e,tp) - return c:IsSetCard(0x10db) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c61936647.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c61936647.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c61936647.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c61936647.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c61936647.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - tc:RegisterEffect(e1,true) - end -end +--幻影剣 +function c61936647.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(c61936647.condition) + e1:SetTarget(c61936647.target) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetLabelObject(e1) + e2:SetCondition(c61936647.tgcon) + e2:SetOperation(c61936647.tgop) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c61936647.ctg) + e3:SetValue(800) + c:RegisterEffect(e3) + --destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c61936647.reptg) + e4:SetValue(c61936647.repval) + e4:SetOperation(c61936647.repop) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c61936647.descon) + e5:SetOperation(c61936647.desop) + c:RegisterEffect(e5) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(61936647,1)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetType(EFFECT_TYPE_QUICK_O) + e6:SetCode(EVENT_FREE_CHAIN) + e6:SetRange(LOCATION_GRAVE) + e6:SetCountLimit(1,61936647) + e6:SetCost(c61936647.spcost) + e6:SetTarget(c61936647.sptg) + e6:SetOperation(c61936647.spop) + c:RegisterEffect(e6) +end +function c61936647.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c61936647.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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c61936647.tgcon(e,tp,eg,ep,ev,re,r,rp) + return re==e:GetLabelObject() +end +function c61936647.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):GetFirst() + if c:IsRelateToEffect(re) and tc:IsFaceup() and tc:IsRelateToEffect(re) then + c:SetCardTarget(tc) + end +end +function c61936647.ctg(e,c) + return e:GetHandler():IsHasCardTarget(c) +end +function c61936647.repfilter(c,e) + return c61936647.ctg(e,c) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c61936647.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable() and eg:IsExists(c61936647.repfilter,1,nil,e) end + return Duel.SelectYesNo(tp,aux.Stringid(61936647,0)) +end +function c61936647.repval(e,c) + return c61936647.repfilter(c,e) +end +function c61936647.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end +function c61936647.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c61936647.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c61936647.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c61936647.spfilter(c,e,tp) + return c:IsSetCard(0x10db) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c61936647.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c61936647.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c61936647.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c61936647.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c61936647.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + end +end diff --git a/script/c61948106.lua b/script/c61948106.lua index a126edfa..649040e2 100644 --- a/script/c61948106.lua +++ b/script/c61948106.lua @@ -1,93 +1,93 @@ ---ガトムズの非常召集 -function c61948106.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,61948106+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c61948106.spcon) - e1:SetCost(c61948106.spcost) - e1:SetTarget(c61948106.sptg) - e1:SetOperation(c61948106.spop) - c:RegisterEffect(e1) -end -function c61948106.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c61948106.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x100d) and c:IsType(TYPE_SYNCHRO) -end -function c61948106.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c61948106.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c61948106.spfilter(c,e,tp) - return c:IsSetCard(0x100d) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c61948106.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c61948106.spfilter(chkc,e,tp) end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c61948106.spfilter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c61948106.spfilter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) -end -function c61948106.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()~=2 then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - local c=e:GetHandler() - local fid=c:GetFieldID() - local tc=g:GetFirst() - while tc do - if Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc:RegisterFlagEffect(61948106,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) - end - tc=g:GetNext() - end - Duel.SpecialSummonComplete() - g:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(g) - e1:SetCondition(c61948106.descon) - e1:SetOperation(c61948106.desop) - Duel.RegisterEffect(e1,tp) -end -function c61948106.desfilter(c,fid) - return c:GetFlagEffectLabel(61948106)==fid -end -function c61948106.descon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c61948106.desfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c61948106.desop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c61948106.desfilter,nil,e:GetLabel()) - Duel.Destroy(tg,REASON_EFFECT) -end +--ガトムズの非常召集 +function c61948106.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,61948106+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c61948106.spcon) + e1:SetCost(c61948106.spcost) + e1:SetTarget(c61948106.sptg) + e1:SetOperation(c61948106.spop) + c:RegisterEffect(e1) +end +function c61948106.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c61948106.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x100d) and c:IsType(TYPE_SYNCHRO) +end +function c61948106.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c61948106.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c61948106.spfilter(c,e,tp) + return c:IsSetCard(0x100d) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c61948106.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c61948106.spfilter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c61948106.spfilter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c61948106.spfilter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c61948106.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()~=2 then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local c=e:GetHandler() + local fid=c:GetFieldID() + local tc=g:GetFirst() + while tc do + if Duel.SpecialSummonStep(tc,0,tp,tp,true,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(61948106,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + end + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + g:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c61948106.descon) + e1:SetOperation(c61948106.desop) + Duel.RegisterEffect(e1,tp) +end +function c61948106.desfilter(c,fid) + return c:GetFlagEffectLabel(61948106)==fid +end +function c61948106.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c61948106.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c61948106.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c61948106.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c61965407.lua b/script/c61965407.lua index 2f27826b..04072ca3 100644 --- a/script/c61965407.lua +++ b/script/c61965407.lua @@ -1,132 +1,132 @@ ---遡洸する煉獄 -function c61965407.initial_effect(c) - Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_STANDBY_PHASE,TIMING_STANDBY_PHASE) - e1:SetTarget(c61965407.target) - e1:SetOperation(c61965407.operation) - e1:SetLabel(0) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCondition(c61965407.thcon) - e2:SetCost(c61965407.thcost) - e2:SetTarget(c61965407.thtg) - e2:SetOperation(c61965407.operation) - e2:SetLabel(1) - c:RegisterEffect(e2) - --tograve - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOGRAVE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCondition(c61965407.tgcon) - e3:SetCost(c61965407.tgcost) - e3:SetTarget(c61965407.tgtg) - e3:SetOperation(c61965407.operation) - e3:SetLabel(2) - c:RegisterEffect(e3) - --tograve - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EFFECT_SELF_TOGRAVE) - e4:SetCondition(c61965407.sdcon) - c:RegisterEffect(e4) -end -function c61965407.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then - if e:GetLabel()==1 then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c61965407.thfilter(chkc) end - if e:GetLabel()==2 then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c61965407.tgfilter(chkc) end - end - if chk==0 then return true end - if Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_STANDBY - and Duel.IsExistingTarget(c61965407.thfilter,tp,LOCATION_GRAVE,0,1,nil) - and Duel.GetFlagEffect(tp,61965407)==0 - and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then - e:SetCategory(CATEGORY_TOHAND) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c61965407.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) - Duel.RegisterFlagEffect(tp,61965407,RESET_PHASE+PHASE_END,0,1) - e:SetLabel(1) - elseif Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY - and Duel.IsExistingTarget(c61965407.tgfilter,tp,LOCATION_REMOVED,0,1,nil) - and Duel.GetFlagEffect(tp,61965408)==0 - and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then - e:SetCategory(CATEGORY_TOGRAVE) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,c61965407.tgfilter,tp,LOCATION_REMOVED,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) - Duel.RegisterFlagEffect(tp,61965408,RESET_PHASE+PHASE_END,0,1) - e:SetLabel(2) - else - e:SetCategory(0) - e:SetProperty(0) - e:SetLabel(0) - end -end -function c61965407.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c61965407.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,61965407)==0 end - Duel.RegisterFlagEffect(tp,61965407,RESET_PHASE+PHASE_END,0,1) -end -function c61965407.thfilter(c) - return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c61965407.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c61965407.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c61965407.thfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c61965407.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c61965407.tgcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c61965407.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,61965408)==0 end - Duel.RegisterFlagEffect(tp,61965408,RESET_PHASE+PHASE_END,0,1) -end -function c61965407.tgfilter(c) - return c:IsFaceup() and c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) -end -function c61965407.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c61965407.tgfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c61965407.tgfilter,tp,LOCATION_REMOVED,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,c61965407.tgfilter,tp,LOCATION_REMOVED,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) -end -function c61965407.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) then return end - if e:GetLabel()==1 then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - else - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) - end -end -function c61965407.sdfilter(c) - return c:IsFacedown() or not c:IsSetCard(0xbb) -end -function c61965407.sdcon(e) - return Duel.IsExistingMatchingCard(c61965407.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end +--遡洸する煉獄 +function c61965407.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_STANDBY_PHASE,TIMING_STANDBY_PHASE) + e1:SetTarget(c61965407.target) + e1:SetOperation(c61965407.operation) + e1:SetLabel(0) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c61965407.thcon) + e2:SetCost(c61965407.thcost) + e2:SetTarget(c61965407.thtg) + e2:SetOperation(c61965407.operation) + e2:SetLabel(1) + c:RegisterEffect(e2) + --tograve + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c61965407.tgcon) + e3:SetCost(c61965407.tgcost) + e3:SetTarget(c61965407.tgtg) + e3:SetOperation(c61965407.operation) + e3:SetLabel(2) + c:RegisterEffect(e3) + --tograve + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_SELF_TOGRAVE) + e4:SetCondition(c61965407.sdcon) + c:RegisterEffect(e4) +end +function c61965407.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then + if e:GetLabel()==1 then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c61965407.thfilter(chkc) end + if e:GetLabel()==2 then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c61965407.tgfilter(chkc) end + end + if chk==0 then return true end + if Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_STANDBY + and Duel.IsExistingTarget(c61965407.thfilter,tp,LOCATION_GRAVE,0,1,nil) + and Duel.GetFlagEffect(tp,61965407)==0 + and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetCategory(CATEGORY_TOHAND) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c61965407.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.RegisterFlagEffect(tp,61965407,RESET_PHASE+PHASE_END,0,1) + e:SetLabel(1) + elseif Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY + and Duel.IsExistingTarget(c61965407.tgfilter,tp,LOCATION_REMOVED,0,1,nil) + and Duel.GetFlagEffect(tp,61965408)==0 + and Duel.SelectYesNo(tp,aux.Stringid(61965407,0)) then + e:SetCategory(CATEGORY_TOGRAVE) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c61965407.tgfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) + Duel.RegisterFlagEffect(tp,61965408,RESET_PHASE+PHASE_END,0,1) + e:SetLabel(2) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetLabel(0) + end +end +function c61965407.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c61965407.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,61965407)==0 end + Duel.RegisterFlagEffect(tp,61965407,RESET_PHASE+PHASE_END,0,1) +end +function c61965407.thfilter(c) + return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c61965407.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c61965407.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c61965407.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c61965407.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c61965407.tgcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c61965407.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,61965408)==0 end + Duel.RegisterFlagEffect(tp,61965408,RESET_PHASE+PHASE_END,0,1) +end +function c61965407.tgfilter(c) + return c:IsFaceup() and c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) +end +function c61965407.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c61965407.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c61965407.tgfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c61965407.tgfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c61965407.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + if e:GetLabel()==1 then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + else + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) + end +end +function c61965407.sdfilter(c) + return c:IsFacedown() or not c:IsSetCard(0xbb) +end +function c61965407.sdcon(e) + return Duel.IsExistingMatchingCard(c61965407.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c62017867.lua b/script/c62017867.lua index 47a57928..484abb32 100644 --- a/script/c62017867.lua +++ b/script/c62017867.lua @@ -1,65 +1,65 @@ ---超重武者グロウ-V -function c62017867.initial_effect(c) - --sort decktop - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCondition(c62017867.condition) - e1:SetTarget(c62017867.target) - e1:SetOperation(c62017867.operation) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c62017867.atkcon) - e2:SetCost(c62017867.atkcost) - e2:SetTarget(c62017867.atktg) - e2:SetOperation(c62017867.atkop) - c:RegisterEffect(e2) -end -function c62017867.condition(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) -end -function c62017867.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=5 end -end -function c62017867.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)<5 then return end - Duel.SortDecktop(tp,tp,5) -end -function c62017867.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil -end -function c62017867.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c62017867.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c62017867.atkop(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - Duel.DisableShuffleCheck() - if tc:IsSetCard(0x9a) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ShuffleHand(tp) - local at=Duel.GetAttacker() - if at:IsFaceup() and at:IsRelateToBattle() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - at:RegisterEffect(e1) - end - else - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) - end -end +--超重武者グロウ-V +function c62017867.initial_effect(c) + --sort decktop + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c62017867.condition) + e1:SetTarget(c62017867.target) + e1:SetOperation(c62017867.operation) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c62017867.atkcon) + e2:SetCost(c62017867.atkcost) + e2:SetTarget(c62017867.atktg) + e2:SetOperation(c62017867.atkop) + c:RegisterEffect(e2) +end +function c62017867.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) +end +function c62017867.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=5 end +end +function c62017867.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)<5 then return end + Duel.SortDecktop(tp,tp,5) +end +function c62017867.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c62017867.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c62017867.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c62017867.atkop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + Duel.DisableShuffleCheck() + if tc:IsSetCard(0x9a) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ShuffleHand(tp) + local at=Duel.GetAttacker() + if at:IsFaceup() and at:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + at:RegisterEffect(e1) + end + else + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_REVEAL) + end +end diff --git a/script/c62023839.lua b/script/c62023839.lua index 7863ac47..e0abbb4b 100644 --- a/script/c62023839.lua +++ b/script/c62023839.lua @@ -1,52 +1,52 @@ ---フィッシュボーグ-アーチャー -function c62023839.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(62023839,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1,62023839) - e1:SetCondition(c62023839.spcon) - e1:SetCost(c62023839.spcost) - e1:SetTarget(c62023839.sptg) - e1:SetOperation(c62023839.spop) - c:RegisterEffect(e1) -end -function c62023839.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c62023839.cfilter(c) - return c:IsAttribute(ATTRIBUTE_WATER) and c:IsDiscardable() -end -function c62023839.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c62023839.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c62023839.cfilter,1,1,REASON_COST+REASON_DISCARD) -end -function c62023839.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c62023839.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_BATTLE_START) - e1:SetCountLimit(1) - e1:SetOperation(c62023839.desop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - end -end -function c62023839.desfilter(c) - return c:IsFacedown() or not c:IsAttribute(ATTRIBUTE_WATER) -end -function c62023839.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c62023839.desfilter,tp,LOCATION_MZONE,0,nil) - if g:GetCount()>0 then - Duel.Hint(HINT_CARD,0,62023839) - Duel.Destroy(g,REASON_EFFECT) - end -end +--フィッシュボーグ-アーチャー +function c62023839.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62023839,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1,62023839) + e1:SetCondition(c62023839.spcon) + e1:SetCost(c62023839.spcost) + e1:SetTarget(c62023839.sptg) + e1:SetOperation(c62023839.spop) + c:RegisterEffect(e1) +end +function c62023839.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c62023839.cfilter(c) + return c:IsAttribute(ATTRIBUTE_WATER) and c:IsDiscardable() +end +function c62023839.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c62023839.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c62023839.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c62023839.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c62023839.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE_START) + e1:SetCountLimit(1) + e1:SetOperation(c62023839.desop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c62023839.desfilter(c) + return c:IsFacedown() or not c:IsAttribute(ATTRIBUTE_WATER) +end +function c62023839.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c62023839.desfilter,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_CARD,0,62023839) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c62038047.lua b/script/c62038047.lua index ee52124a..9eca9c9b 100644 --- a/script/c62038047.lua +++ b/script/c62038047.lua @@ -1,56 +1,56 @@ ---不知火の鍛師 -function c62038047.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(62038047,0)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BE_MATERIAL) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,62038047) - e1:SetCondition(c62038047.thcon) - e1:SetTarget(c62038047.thtg) - e1:SetOperation(c62038047.thop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(62038047,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_REMOVE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetOperation(c62038047.operation) - c:RegisterEffect(e2) -end -function c62038047.filter(c) - return c:IsSetCard(0xd9) and not c:IsCode(62038047) and c:IsAbleToHand() -end -function c62038047.thcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsLocation(LOCATION_GRAVE) and c:IsPreviousLocation(LOCATION_ONFIELD) and r==REASON_SYNCHRO -end -function c62038047.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c62038047.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c62038047.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c62038047.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c62038047.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c62038047.target) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetValue(1) - Duel.RegisterEffect(e1,tp) -end -function c62038047.target(e,c) - return c:IsRace(RACE_ZOMBIE) -end +--不知火の鍛師 +function c62038047.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62038047,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,62038047) + e1:SetCondition(c62038047.thcon) + e1:SetTarget(c62038047.thtg) + e1:SetOperation(c62038047.thop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(62038047,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_REMOVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetOperation(c62038047.operation) + c:RegisterEffect(e2) +end +function c62038047.filter(c) + return c:IsSetCard(0xd9) and not c:IsCode(62038047) and c:IsAbleToHand() +end +function c62038047.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsLocation(LOCATION_GRAVE) and c:IsPreviousLocation(LOCATION_ONFIELD) and r==REASON_SYNCHRO +end +function c62038047.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c62038047.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c62038047.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c62038047.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c62038047.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c62038047.target) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end +function c62038047.target(e,c) + return c:IsRace(RACE_ZOMBIE) +end diff --git a/script/c6205579.lua b/script/c6205579.lua new file mode 100644 index 00000000..794fdb2f --- /dev/null +++ b/script/c6205579.lua @@ -0,0 +1,90 @@ +--パラサイト・フュージョナー +--Parasite Fusioner +--Scripted by Eerie Code +function c6205579.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(6205579,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c6205579.sptg) + e1:SetOperation(c6205579.spop) + c:RegisterEffect(e1) + --fusion substitute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_FUSION_SUBSTITUTE) + e2:SetCondition(c6205579.subcon) + c:RegisterEffect(e2) + --must be substitute + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(6205579) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + c:RegisterEffect(e3) +end + +function c6205579.subcon(e) + return e:GetHandler():IsLocation(LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE) +end +function c6205579.spfilter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c6205579.spfilter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) +end +function c6205579.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,c) + local res=Duel.IsExistingMatchingCard(c6205579.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c6205579.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c6205579.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end + local mg1=Duel.GetMatchingGroup(c6205579.spfilter1,tp,LOCATION_MZONE,0,c,e) + local sg1=Duel.GetMatchingGroup(c6205579.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c6205579.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c62070231.lua b/script/c62070231.lua index 8fc53dc9..69e3362f 100644 --- a/script/c62070231.lua +++ b/script/c62070231.lua @@ -7,7 +7,7 @@ function c62070231.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(62070231,0)) e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) diff --git a/script/c62107612.lua b/script/c62107612.lua index 115342af..e49e540b 100644 --- a/script/c62107612.lua +++ b/script/c62107612.lua @@ -1,33 +1,33 @@ ---ディメンション・ワンダラー -function c62107612.initial_effect(c) - --damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(62107612,0)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_REMOVE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,62107612) - e1:SetCondition(c62107612.condition) - e1:SetCost(c62107612.cost) - e1:SetTarget(c62107612.target) - e1:SetOperation(c62107612.operation) - c:RegisterEffect(e1) -end -function c62107612.condition(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT)~=0 and re and re:GetHandler():IsCode(93717133) -end -function c62107612.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c62107612.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(3000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,3000) -end -function c62107612.operation(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--ディメンション・ワンダラー +function c62107612.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62107612,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_REMOVE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,62107612) + e1:SetCondition(c62107612.condition) + e1:SetCost(c62107612.cost) + e1:SetTarget(c62107612.target) + e1:SetOperation(c62107612.operation) + c:RegisterEffect(e1) +end +function c62107612.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and re and re:GetHandler():IsCode(93717133) +end +function c62107612.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c62107612.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(3000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,3000) +end +function c62107612.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c62125438.lua b/script/c62125438.lua index 6dd5f863..002532b5 100644 --- a/script/c62125438.lua +++ b/script/c62125438.lua @@ -6,7 +6,7 @@ function c62125438.initial_effect(c) e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) - e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x17)) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1017)) c:RegisterEffect(e1) --search local e2=Effect.CreateEffect(c) @@ -22,20 +22,20 @@ function c62125438.initial_effect(c) c:RegisterEffect(e2) end function c62125438.filter(c,tp) - return c:IsSetCard(0x17) and c:IsType(TYPE_MONSTER) and c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) + return c:IsSetCard(0x1017) and c:IsType(TYPE_MONSTER) and c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) end function c62125438.spcon(e,tp,eg,ep,ev,re,r,rp) return eg:IsExists(c62125438.filter,1,nil,tp) and r==REASON_SYNCHRO and re:GetHandler():IsRace(RACE_WARRIOR+RACE_MACHINE) end function c62125438.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,62125439,0x17,0x4011,1000,0,2,RACE_MACHINE,ATTRIBUTE_EARTH) end + and Duel.IsPlayerCanSpecialSummonMonster(tp,62125439,0x1017,0x4011,1000,0,2,RACE_MACHINE,ATTRIBUTE_EARTH) end Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) end function c62125438.spop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,62125439,0x17,0x4011,1000,0,2,RACE_MACHINE,ATTRIBUTE_EARTH) then return end + or not Duel.IsPlayerCanSpecialSummonMonster(tp,62125439,0x1017,0x4011,1000,0,2,RACE_MACHINE,ATTRIBUTE_EARTH) then return end local token=Duel.CreateToken(tp,62125439) Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) end diff --git a/script/c62161698.lua b/script/c62161698.lua index ef10c8c2..889e79cf 100644 --- a/script/c62161698.lua +++ b/script/c62161698.lua @@ -5,6 +5,7 @@ function c62161698.initial_effect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) e1:SetCondition(c62161698.condition) e1:SetTarget(c62161698.target) e1:SetOperation(c62161698.operation) diff --git a/script/c62180201.lua b/script/c62180201.lua index e1de2b26..8a52b5c1 100644 --- a/script/c62180201.lua +++ b/script/c62180201.lua @@ -33,9 +33,9 @@ function c62180201.initial_effect(c) e5:SetValue(c62180201.defval) c:RegisterEffect(e5) end -function c62180201.ttcon(e,c) +function c62180201.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 and Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c62180201.ttop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,3,3) @@ -46,8 +46,8 @@ function c62180201.atktg(e,c) return c~=e:GetHandler() end function c62180201.atkval(e,c) - return c:GetAttack()/2 + return math.ceil(c:GetAttack()/2) end function c62180201.defval(e,c) - return c:GetDefense()/2 + return math.ceil(c:GetDefense()/2) end diff --git a/script/c62188962.lua b/script/c62188962.lua index 5595bc31..5d07c4f1 100644 --- a/script/c62188962.lua +++ b/script/c62188962.lua @@ -1,62 +1,62 @@ ---ヴァンパイア帝国 -function c62188962.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_ZOMBIE)) - e2:SetCondition(c62188962.atkcon) - e2:SetValue(500) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(62188962,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetRange(LOCATION_FZONE) - e3:SetCountLimit(1) - e3:SetCondition(c62188962.descon) - e3:SetTarget(c62188962.destg) - e3:SetOperation(c62188962.desop) - c:RegisterEffect(e3) -end -function c62188962.atkcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL -end -function c62188962.cfilter(c,tp) - return c:IsPreviousLocation(LOCATION_DECK) and c:GetPreviousControler()==tp -end -function c62188962.descon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c62188962.cfilter,1,nil,1-tp) -end -function c62188962.tgfilter(c) - return c:IsSetCard(0x8e) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToGrave() -end -function c62188962.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() end - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and not e:GetHandler():IsStatus(STATUS_CHAINING) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND+LOCATION_DECK) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c62188962.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c62188962.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end - end -end +--ヴァンパイア帝国 +function c62188962.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_ZOMBIE)) + e2:SetCondition(c62188962.atkcon) + e2:SetValue(500) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(62188962,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1) + e3:SetCondition(c62188962.descon) + e3:SetTarget(c62188962.destg) + e3:SetOperation(c62188962.desop) + c:RegisterEffect(e3) +end +function c62188962.atkcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL +end +function c62188962.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_DECK) and c:GetPreviousControler()==tp +end +function c62188962.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c62188962.cfilter,1,nil,1-tp) +end +function c62188962.tgfilter(c) + return c:IsSetCard(0x8e) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToGrave() +end +function c62188962.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() end + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND+LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c62188962.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c62188962.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end diff --git a/script/c62242678.lua b/script/c62242678.lua index 8edbd8e0..b0bac86d 100644 --- a/script/c62242678.lua +++ b/script/c62242678.lua @@ -1,237 +1,230 @@ ---琰魔竜王 レッド・デーモン・カラミティ -function c62242678.initial_effect(c) - --synchro summon - c:EnableReviveLimit() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_EXTRA) - e1:SetCondition(c62242678.syncon) - e1:SetOperation(c62242678.synop) - e1:SetValue(SUMMON_TYPE_SYNCHRO) - c:RegisterEffect(e1) - --act limit - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(62242678,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c62242678.limcon) - e2:SetTarget(c62242678.limtg) - e2:SetOperation(c62242678.limop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(62242678,1)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCode(EVENT_BATTLE_DESTROYING) - e3:SetCondition(aux.bdcon) - e3:SetTarget(c62242678.damtg) - e3:SetOperation(c62242678.damop) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(62242678,2)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_DESTROYED) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e4:SetCondition(c62242678.spcon) - e4:SetTarget(c62242678.sptg) - e4:SetOperation(c62242678.spop) - c:RegisterEffect(e4) - --double tuner - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e5:SetCode(21142671) - c:RegisterEffect(e5) -end -function c62242678.matfilter1(c,syncard) - return c:IsType(TYPE_TUNER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) -end -function c62242678.matfilter2(c,syncard) - return c:IsNotTuner() and c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSynchroMaterial(syncard) -end -function c62242678.synfilter1(c,syncard,lv,g1,g2,g3) - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - local f1=c.tuner_filter - if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then - return g3:IsExists(c62242678.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) - else - return g1:IsExists(c62242678.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) - end -end -function c62242678.synfilter2(c,syncard,lv,g2,f1,tuner1) - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - local f2=c.tuner_filter - if f1 and not f1(c) then return false end - if f2 and not f2(tuner1) then return false end - return g2:IsExists(c62242678.synfilter3,1,nil,syncard,lv-tlv,f1,f2) -end -function c62242678.synfilter3(c,syncard,lv,f1,f2) - local mlv=c:GetSynchroLevel(syncard) - local lv1=bit.band(mlv,0xffff) - local lv2=bit.rshift(mlv,16) - return (lv1==lv or lv2==lv) and (not f1 or f1(c)) and (not f2 or f2(c)) -end -function c62242678.syncon(e,c,tuner,mg) - if c==nil then return true end - local tp=c:GetControler() - if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end - local g1=nil - local g2=nil - local g3=nil - if mg then - g1=mg:Filter(c62242678.matfilter1,nil,c) - g2=mg:Filter(c62242678.matfilter2,nil,c) - g3=mg:Filter(c62242678.matfilter1,nil,c) - else - g1=Duel.GetMatchingGroup(c62242678.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g2=Duel.GetMatchingGroup(c62242678.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g3=Duel.GetMatchingGroup(c62242678.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) - end - local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) - local lv=c:GetLevel() - if tuner then - local tlv=tuner:GetSynchroLevel(c) - if lv-tlv<=0 then return false end - local f1=tuner.tuner_filter - if not pe then - return g1:IsExists(c62242678.synfilter2,1,tuner,c,lv-tlv,g2,f1,tuner) - else - return c62242678.synfilter2(pe:GetOwner(),c,lv-tlv,g2,f1,tuner) - end - end - if not pe then - return g1:IsExists(c62242678.synfilter1,1,nil,c,lv,g1,g2,g3) - else - return c62242678.synfilter1(pe:GetOwner(),c,lv,g1,g2) - end -end -function c62242678.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) - local g=Group.CreateGroup() - local g1=nil - local g2=nil - local g3=nil - if mg then - g1=mg:Filter(c62242678.matfilter1,nil,c) - g2=mg:Filter(c62242678.matfilter2,nil,c) - g3=mg:Filter(c62242678.matfilter1,nil,c) - else - g1=Duel.GetMatchingGroup(c62242678.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g2=Duel.GetMatchingGroup(c62242678.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g3=Duel.GetMatchingGroup(c62242678.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) - end - local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) - local lv=c:GetLevel() - if tuner then - g:AddCard(tuner) - local lv1=tuner:GetSynchroLevel(c) - local f1=tuner.tuner_filter - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local tuner2=nil - if not pe then - local t2=g1:FilterSelect(tp,c62242678.synfilter2,1,1,tuner,c,lv-lv1,g2,f1,tuner) - tuner2=t2:GetFirst() - else - tuner2=pe:GetOwner() - Group.FromCards(tuner2):Select(tp,1,1,nil) - end - g:AddCard(tuner2) - local lv2=tuner2:GetSynchroLevel(c) - local f2=tuner2.tuner_filter - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local m3=g2:FilterSelect(tp,c62242678.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) - g:Merge(m3) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local tuner1=nil - if not pe then - local t1=g1:FilterSelect(tp,c62242678.synfilter1,1,1,nil,c,lv,g1,g2,g3) - tuner1=t1:GetFirst() - else - tuner1=pe:GetOwner() - Group.FromCards(tuner1):Select(tp,1,1,nil) - end - g:AddCard(tuner1) - local lv1=tuner1:GetSynchroLevel(c) - local f1=tuner1.tuner_filter - local t2=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then - t2=g3:FilterSelect(tp,c62242678.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) - else - t2=g1:FilterSelect(tp,c62242678.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) - end - local tuner2=t2:GetFirst() - g:AddCard(tuner2) - local lv2=tuner2:GetSynchroLevel(c) - local f2=tuner2.tuner_filter - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local m3=g2:FilterSelect(tp,c62242678.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) - g:Merge(m3) - end - c:SetMaterial(g) - Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) -end -function c62242678.limcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c62242678.limtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetChainLimit(c62242678.chainlm) -end -function c62242678.chainlm(e,rp,tp) - return tp==rp -end -function c62242678.limop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetValue(c62242678.aclimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c62242678.aclimit(e,re,tp) - return re:GetHandler():IsOnField() or re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c62242678.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local dam=e:GetHandler():GetBattleTarget():GetBaseAttack() - if dam<0 then dam=0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c62242678.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c62242678.spcon(e,tp,eg,ep,ev,re,r,rp) - return rp~=tp and e:GetHandler():GetPreviousControler()==tp -end -function c62242678.spfilter(c,e,tp) - return c:IsLevelBelow(8) and c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) - and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c62242678.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c62242678.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c62242678.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c62242678.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c62242678.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--琰魔竜王 レッド・デーモン・カラミティ +function c62242678.initial_effect(c) + --synchro summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c62242678.syncon) + e1:SetOperation(c62242678.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --act limit + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(62242678,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c62242678.limcon) + e2:SetTarget(c62242678.limtg) + e2:SetOperation(c62242678.limop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(62242678,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(aux.bdcon) + e3:SetTarget(c62242678.damtg) + e3:SetOperation(c62242678.damop) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(62242678,2)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DESTROYED) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCondition(c62242678.spcon) + e4:SetTarget(c62242678.sptg) + e4:SetOperation(c62242678.spop) + c:RegisterEffect(e4) + --double tuner + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e5:SetCode(21142671) + c:RegisterEffect(e5) +end +function c62242678.matfilter1(c,syncard) + return c:IsType(TYPE_TUNER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) +end +function c62242678.matfilter2(c,syncard) + return c:IsNotTuner() and c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSynchroMaterial(syncard) +end +function c62242678.synfilter1(c,syncard,lv,g1,g2,g3) + local f1=c.tuner_filter + if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then + return g3:IsExists(c62242678.synfilter2,1,c,syncard,lv,g2,f1,c) + else + return g1:IsExists(c62242678.synfilter2,1,c,syncard,lv,g2,f1,c) + end +end +function c62242678.synfilter2(c,syncard,lv,g2,f1,tuner1) + local f2=c.tuner_filter + if f1 and not f1(c) then return false end + if f2 and not f2(tuner1) then return false end + local mg=g2:Filter(c62242678.synfilter3,nil,f1,f2) + Duel.SetSelectedCard(Group.FromCards(c,tuner1)) + return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard) +end +function c62242678.synfilter3(c,f1,f2) + return (not f1 or f1(c)) and (not f2 or f2(c)) +end +function c62242678.syncon(e,c,tuner,mg) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end + local g1=nil + local g2=nil + local g3=nil + if mg then + g1=mg:Filter(c62242678.matfilter1,nil,c) + g2=mg:Filter(c62242678.matfilter2,nil,c) + g3=g1:Clone() + else + g1=Duel.GetMatchingGroup(c62242678.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c62242678.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c62242678.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + local f1=tuner.tuner_filter + if not pe then + return g1:IsExists(c62242678.synfilter2,1,tuner,c,lv,g2,f1,tuner) + else + return c62242678.synfilter2(pe:GetOwner(),c,lv,g2,f1,tuner) + end + end + if not pe then + return g1:IsExists(c62242678.synfilter1,1,nil,c,lv,g1,g2,g3) + else + return c62242678.synfilter1(pe:GetOwner(),c,lv,g1,g2,g3) + end +end +function c62242678.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) + local g=Group.CreateGroup() + local g1=nil + local g2=nil + local g3=nil + if mg then + g1=mg:Filter(c62242678.matfilter1,nil,c) + g2=mg:Filter(c62242678.matfilter2,nil,c) + g3=g1:Clone() + else + g1=Duel.GetMatchingGroup(c62242678.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c62242678.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c62242678.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + g:AddCard(tuner) + local f1=tuner.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner2=nil + if not pe then + local t2=g1:FilterSelect(tp,c62242678.synfilter2,1,1,tuner,c,lv,g2,f1,tuner) + tuner2=t2:GetFirst() + else + tuner2=pe:GetOwner() + Group.FromCards(tuner2):Select(tp,1,1,nil) + end + g:AddCard(tuner2) + local f2=tuner2.tuner_filter + local mg2=g2:Filter(c62242678.synfilter3,nil,f1,f2) + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) + g:Merge(m3) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner1=nil + if not pe then + local t1=g1:FilterSelect(tp,c62242678.synfilter1,1,1,nil,c,lv,g1,g2,g3) + tuner1=t1:GetFirst() + else + tuner1=pe:GetOwner() + Group.FromCards(tuner1):Select(tp,1,1,nil) + end + g:AddCard(tuner1) + local f1=tuner1.tuner_filter + local t2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then + t2=g3:FilterSelect(tp,c62242678.synfilter2,1,1,tuner1,c,lv,g2,f1,tuner1) + else + t2=g1:FilterSelect(tp,c62242678.synfilter2,1,1,tuner1,c,lv,g2,f1,tuner1) + end + local tuner2=t2:GetFirst() + g:AddCard(tuner2) + local f2=tuner2.tuner_filter + local mg2=g2:Filter(c62242678.synfilter3,nil,f1,f2) + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) + g:Merge(m3) + end + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c62242678.limcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c62242678.limtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetChainLimit(c62242678.chainlm) +end +function c62242678.chainlm(e,rp,tp) + return tp==rp +end +function c62242678.limop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(c62242678.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c62242678.aclimit(e,re,tp) + return re:GetHandler():IsOnField() or re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c62242678.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetHandler():GetBattleTarget():GetBaseAttack() + if dam<0 then dam=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c62242678.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c62242678.spcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and e:GetHandler():GetPreviousControler()==tp +end +function c62242678.spfilter(c,e,tp) + return c:IsLevelBelow(8) and c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) + and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c62242678.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c62242678.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c62242678.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c62242678.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c62242678.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c62265044.lua b/script/c62265044.lua index dbd42a1f..7abc14dd 100644 --- a/script/c62265044.lua +++ b/script/c62265044.lua @@ -1,61 +1,61 @@ ---竜の渓谷 -function c62265044.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetDescription(aux.Stringid(62265044,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e2:SetCost(c62265044.cost) - e2:SetTarget(c62265044.target1) - e2:SetOperation(c62265044.operation1) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCategory(CATEGORY_TOGRAVE) - e3:SetDescription(aux.Stringid(62265044,2)) - e3:SetTarget(c62265044.target2) - e3:SetOperation(c62265044.operation2) - c:RegisterEffect(e3) -end -function c62265044.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c62265044.filter1(c) - return c:IsLevelBelow(4) and c:IsSetCard(0x29) and c:IsAbleToHand() -end -function c62265044.filter2(c) - return c:IsRace(RACE_DRAGON) and c:IsAbleToGrave() -end -function c62265044.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c62265044.filter1,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c62265044.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c62265044.filter2,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c62265044.operation1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c62265044.filter1,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c62265044.operation2(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c62265044.filter2,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end +--竜の渓谷 +function c62265044.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetDescription(aux.Stringid(62265044,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCost(c62265044.cost) + e2:SetTarget(c62265044.target1) + e2:SetOperation(c62265044.operation1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetDescription(aux.Stringid(62265044,2)) + e3:SetTarget(c62265044.target2) + e3:SetOperation(c62265044.operation2) + c:RegisterEffect(e3) +end +function c62265044.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c62265044.filter1(c) + return c:IsLevelBelow(4) and c:IsSetCard(0x29) and c:IsAbleToHand() +end +function c62265044.filter2(c) + return c:IsRace(RACE_DRAGON) and c:IsAbleToGrave() +end +function c62265044.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c62265044.filter1,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c62265044.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c62265044.filter2,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c62265044.operation1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c62265044.filter1,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c62265044.operation2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c62265044.filter2,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c62312469.lua b/script/c62312469.lua index 5222d931..af040f90 100644 --- a/script/c62312469.lua +++ b/script/c62312469.lua @@ -1,77 +1,78 @@ ---ダーク・ドリアード -function c62312469.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(c62312469.atktg) - e2:SetValue(c62312469.value) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --deck sort - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(62312469,0)) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_DELAY) - e4:SetCode(EVENT_SUMMON_SUCCESS) - e4:SetTarget(c62312469.sttg) - e4:SetOperation(c62312469.stop) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e5) -end -function c62312469.atktg(e,c) - return c:IsAttribute(ATTRIBUTE_EARTH+ATTRIBUTE_WATER+ATTRIBUTE_FIRE+ATTRIBUTE_WIND) -end -function c62312469.value(e,c) - local tp=e:GetHandlerPlayer() - local att=0 - for i=0,4 do - local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) - if tc and tc:IsFaceup() then att=bit.bor(att,tc:GetAttribute()) end - end - local ct=0 - while att~=0 do - if bit.band(att,0x1)~=0 then ct=ct+1 end - att=bit.rshift(att,1) - end - return ct*200 -end -function c62312469.sttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_EARTH) - and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_WATER) - and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_FIRE) - and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_WIND) end -end -function c62312469.stop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_EARTH) - and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_WATER) - and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_FIRE) - and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_WIND) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g1=Duel.SelectMatchingCard(tp,Card.IsAttribute,tp,LOCATION_DECK,0,1,1,nil,ATTRIBUTE_EARTH) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g2=Duel.SelectMatchingCard(tp,Card.IsAttribute,tp,LOCATION_DECK,0,1,1,nil,ATTRIBUTE_WATER) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g3=Duel.SelectMatchingCard(tp,Card.IsAttribute,tp,LOCATION_DECK,0,1,1,nil,ATTRIBUTE_FIRE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g4=Duel.SelectMatchingCard(tp,Card.IsAttribute,tp,LOCATION_DECK,0,1,1,nil,ATTRIBUTE_WIND) - g1:Merge(g2) - g1:Merge(g3) - g1:Merge(g4) - Duel.ConfirmCards(1-tp,g1) - local tc=g1:GetFirst() - while tc do - Duel.MoveSequence(tc,0) - tc=g1:GetNext() - end - Duel.SortDecktop(tp,tp,4) - end -end +--ダーク・ドリアード +function c62312469.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c62312469.atktg) + e2:SetValue(c62312469.value) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --deck sort + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(62312469,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetTarget(c62312469.sttg) + e4:SetOperation(c62312469.stop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e5) +end +function c62312469.atktg(e,c) + return c:IsAttribute(ATTRIBUTE_EARTH+ATTRIBUTE_WATER+ATTRIBUTE_FIRE+ATTRIBUTE_WIND) +end +function c62312469.value(e,c) + local tp=e:GetHandlerPlayer() + local att=0 + for i=0,4 do + local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + if tc and tc:IsFaceup() then att=bit.bor(att,tc:GetAttribute()) end + end + local ct=0 + while att~=0 do + if bit.band(att,0x1)~=0 then ct=ct+1 end + att=bit.rshift(att,1) + end + return ct*200 +end +function c62312469.sttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_EARTH) + and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_WATER) + and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_FIRE) + and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_WIND) end +end +function c62312469.stop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_EARTH) + and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_WATER) + and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_FIRE) + and Duel.IsExistingMatchingCard(Card.IsAttribute,tp,LOCATION_DECK,0,1,nil,ATTRIBUTE_WIND) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g1=Duel.SelectMatchingCard(tp,Card.IsAttribute,tp,LOCATION_DECK,0,1,1,nil,ATTRIBUTE_EARTH) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g2=Duel.SelectMatchingCard(tp,Card.IsAttribute,tp,LOCATION_DECK,0,1,1,nil,ATTRIBUTE_WATER) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g3=Duel.SelectMatchingCard(tp,Card.IsAttribute,tp,LOCATION_DECK,0,1,1,nil,ATTRIBUTE_FIRE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g4=Duel.SelectMatchingCard(tp,Card.IsAttribute,tp,LOCATION_DECK,0,1,1,nil,ATTRIBUTE_WIND) + g1:Merge(g2) + g1:Merge(g3) + g1:Merge(g4) + Duel.ConfirmCards(1-tp,g1) + Duel.ShuffleDeck(tp) + local tc=g1:GetFirst() + while tc do + Duel.MoveSequence(tc,0) + tc=g1:GetNext() + end + Duel.SortDecktop(tp,tp,4) + end +end diff --git a/script/c62315111.lua b/script/c62315111.lua index 71420862..d3c8fd5f 100644 --- a/script/c62315111.lua +++ b/script/c62315111.lua @@ -1,20 +1,19 @@ ---エーリアン・ハンター -function c62315111.initial_effect(c) - --chain attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(62315111,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLED) - e1:SetCondition(c62315111.atcon) - e1:SetOperation(c62315111.atop) - c:RegisterEffect(e1) -end -function c62315111.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() - and bc:GetCounter(0x100e)>0 -end -function c62315111.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--エーリアン・ハンター +function c62315111.initial_effect(c) + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62315111,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c62315111.atcon) + e1:SetOperation(c62315111.atop) + c:RegisterEffect(e1) +end +function c62315111.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return aux.bdcon(e,tp,eg,ep,ev,re,r,rp) and c:IsChainAttackable() + and c:GetBattleTarget():GetCounter(0x100e)>0 +end +function c62315111.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c62340868.lua b/script/c62340868.lua index 5a433ba0..70b1a835 100644 --- a/script/c62340868.lua +++ b/script/c62340868.lua @@ -1,34 +1,34 @@ ---風魔神-ヒューガ -function c62340868.initial_effect(c) - --atkdown - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(62340868,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - e1:SetCountLimit(1) - e1:SetCondition(c62340868.condition) - e1:SetTarget(c62340868.target) - e1:SetOperation(c62340868.operation) - c:RegisterEffect(e1) -end -function c62340868.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==e:GetHandler() -end -function c62340868.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetAttacker():IsCanBeEffectTarget(e) end - Duel.SetTargetCard(Duel.GetAttacker()) -end -function c62340868.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(0) - tc:RegisterEffect(e1) - end -end +--風魔神-ヒューガ +function c62340868.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62340868,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetCountLimit(1) + e1:SetCondition(c62340868.condition) + e1:SetTarget(c62340868.target) + e1:SetOperation(c62340868.operation) + c:RegisterEffect(e1) +end +function c62340868.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==e:GetHandler() +end +function c62340868.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttacker():IsCanBeEffectTarget(e) end + Duel.SetTargetCard(Duel.GetAttacker()) +end +function c62340868.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(0) + tc:RegisterEffect(e1) + end +end diff --git a/script/c62434031.lua b/script/c62434031.lua index f5a1e3a8..ba74cb1c 100644 --- a/script/c62434031.lua +++ b/script/c62434031.lua @@ -1,54 +1,54 @@ ---森羅の花卉士 ナルサス -function c62434031.initial_effect(c) - --deck check - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(62434031,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c62434031.target) - e1:SetOperation(c62434031.operation) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(62434031,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCondition(c62434031.tdcon) - e2:SetTarget(c62434031.tdtg) - e2:SetOperation(c62434031.tdop) - c:RegisterEffect(e2) -end -function c62434031.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c62434031.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - if tc:IsRace(RACE_PLANT) then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) - else - Duel.MoveSequence(tc,1) - end -end -function c62434031.tdcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c62434031.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,1,nil,0x90) end -end -function c62434031.tdop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(62434031,2)) - local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_DECK,0,1,1,nil,0x90) - local tc=g:GetFirst() - if tc then - Duel.ShuffleDeck(tp) - Duel.MoveSequence(tc,0) - Duel.ConfirmDecktop(tp,1) - end -end +--森羅の花卉士 ナルサス +function c62434031.initial_effect(c) + --deck check + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62434031,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c62434031.target) + e1:SetOperation(c62434031.operation) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(62434031,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c62434031.tdcon) + e2:SetTarget(c62434031.tdtg) + e2:SetOperation(c62434031.tdop) + c:RegisterEffect(e2) +end +function c62434031.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c62434031.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsRace(RACE_PLANT) then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) + else + Duel.MoveSequence(tc,1) + end +end +function c62434031.tdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c62434031.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,1,nil,0x90) end +end +function c62434031.tdop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(62434031,2)) + local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_DECK,0,1,1,nil,0x90) + local tc=g:GetFirst() + if tc then + Duel.ShuffleDeck(tp) + Duel.MoveSequence(tc,0) + Duel.ConfirmDecktop(tp,1) + end +end diff --git a/script/c62437430.lua b/script/c62437430.lua index 9201cf58..5be41d80 100644 --- a/script/c62437430.lua +++ b/script/c62437430.lua @@ -32,9 +32,8 @@ function c62437430.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local tc=Duel.SelectMatchingCard(tp,c62437430.filter,tp,0x16,0,1,1,nil):GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + local tc=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c62437430.filter),tp,0x16,0,1,1,nil):GetFirst() + if tc and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_REMOVED) then tc:RegisterFlagEffect(62437430,RESET_EVENT+0x1fe0000,0,0) e:GetLabelObject():SetLabelObject(tc) end diff --git a/script/c62437709.lua b/script/c62437709.lua index d0dc804e..59ff45ab 100644 --- a/script/c62437709.lua +++ b/script/c62437709.lua @@ -1,81 +1,81 @@ ---エーリアン・グレイ -function c62437709.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetTarget(c62437709.target) - e1:SetOperation(c62437709.operation) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_FLIP) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetOperation(c62437709.flop) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(62437709,0)) - e3:SetCategory(CATEGORY_DRAW) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_BATTLE_DESTROYED) - e3:SetCondition(c62437709.drcon) - e3:SetTarget(c62437709.drtg) - e3:SetOperation(c62437709.drop) - c:RegisterEffect(e3) - --atk def - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_UPDATE_ATTACK) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e4:SetCondition(c62437709.adcon) - e4:SetTarget(c62437709.adtg) - e4:SetValue(c62437709.adval) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e5) -end -function c62437709.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_COUNTER,g,1,0x100e,1) -end -function c62437709.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - tc:AddCounter(0x100e,1) - end -end -function c62437709.flop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(62437709,RESET_EVENT+0x17a0000,0,0) -end -function c62437709.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) - and e:GetHandler():GetFlagEffect(62437709)~=0 -end -function c62437709.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c62437709.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end -function c62437709.adcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c62437709.adtg(e,c) - local bc=c:GetBattleTarget() - return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) -end -function c62437709.adval(e,c) - return c:GetCounter(0x100e)*-300 -end +--エーリアン・グレイ +function c62437709.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c62437709.target) + e1:SetOperation(c62437709.operation) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_FLIP) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c62437709.flop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(62437709,0)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetCondition(c62437709.drcon) + e3:SetTarget(c62437709.drtg) + e3:SetOperation(c62437709.drop) + c:RegisterEffect(e3) + --atk def + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetCondition(c62437709.adcon) + e4:SetTarget(c62437709.adtg) + e4:SetValue(c62437709.adval) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e5) +end +function c62437709.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,g,1,0x100e,1) +end +function c62437709.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + tc:AddCounter(0x100e,1) + end +end +function c62437709.flop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(62437709,RESET_EVENT+0x17a0000,0,0) +end +function c62437709.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) + and e:GetHandler():GetFlagEffect(62437709)~=0 +end +function c62437709.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c62437709.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c62437709.adcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() +end +function c62437709.adtg(e,c) + local bc=c:GetBattleTarget() + return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) +end +function c62437709.adval(e,c) + return c:GetCounter(0x100e)*-300 +end diff --git a/script/c62472614.lua b/script/c62472614.lua index a0232a3b..05fb9f64 100644 --- a/script/c62472614.lua +++ b/script/c62472614.lua @@ -1,27 +1,12 @@ --疫病 function c62472614.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(c62472614.target) - e1:SetOperation(c62472614.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR+RACE_SPELLCASTER+RACE_BEASTWARRIOR)) --Atk,def local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_SET_ATTACK) e2:SetValue(0) 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(c62472614.eqlimit) - c:RegisterEffect(e3) --damage local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(62472614,0)) @@ -35,25 +20,6 @@ function c62472614.initial_effect(c) e4:SetOperation(c62472614.damop) c:RegisterEffect(e4) end -function c62472614.eqlimit(e,c) - return c:IsRace(RACE_WARRIOR+RACE_BEASTWARRIOR+RACE_SPELLCASTER) -end -function c62472614.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR+RACE_BEASTWARRIOR+RACE_SPELLCASTER) -end -function c62472614.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and c62472614.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c62472614.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c62472614.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c62472614.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 c62472614.damcon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp end diff --git a/script/c62476197.lua b/script/c62476197.lua index 830c7626..4adcd6fa 100644 --- a/script/c62476197.lua +++ b/script/c62476197.lua @@ -1,29 +1,29 @@ ---アチャチャチャンバラー -function c62476197.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(62476197,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c62476197.spcon) - e1:SetTarget(c62476197.sptg) - e1:SetOperation(c62476197.spop) - c:RegisterEffect(e1) -end -function c62476197.spcon(e,tp,eg,ep,ev,re,r,rp) - return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) or aux.damcon1(e,1-tp,eg,ep,ev,re,r,rp) -end -function c62476197.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) -end -function c62476197.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then - Duel.Damage(1-tp,400,REASON_EFFECT) - end -end +--アチャチャチャンバラー +function c62476197.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(62476197,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c62476197.spcon) + e1:SetTarget(c62476197.sptg) + e1:SetOperation(c62476197.spop) + c:RegisterEffect(e1) +end +function c62476197.spcon(e,tp,eg,ep,ev,re,r,rp) + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) or aux.damcon1(e,1-tp,eg,ep,ev,re,r,rp) +end +function c62476197.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c62476197.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.Damage(1-tp,400,REASON_EFFECT) + end +end diff --git a/script/c62541668.lua b/script/c62541668.lua index d236cd19..5a8905c8 100644 --- a/script/c62541668.lua +++ b/script/c62541668.lua @@ -7,6 +7,7 @@ function c62541668.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(62541668,1)) e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c62560742.lua b/script/c62560742.lua index 35b37aaa..ea6c78a4 100644 --- a/script/c62560742.lua +++ b/script/c62560742.lua @@ -26,22 +26,21 @@ function c62560742.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) end function c62560742.mgfilter(c,e,tp,sync) - return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) or not c:IsType(TYPE_SYNCHRO) - or bit.band(c:GetReason(),0x80008)~=0x80008 or c:GetReasonCard()~=sync - or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) + and bit.band(c:GetReason(),0x80008)==0x80008 and c:GetReasonCard()==sync + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c62560742.operation(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if not tc:IsRelateToEffect(e) then return end local mg=tc:GetMaterial() - local sumable=true + local ct=mg:GetCount() local sumtype=tc:GetSummonType() - if Duel.SendtoGrave(tc,REASON_EFFECT)==0 or tc:GetSummonType()~=SUMMON_TYPE_SYNCHRO or mg:GetCount()==0 - or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) - or mg:IsExists(c62560742.mgfilter,1,nil,e,tp,tc) then - sumable=false - end - if sumable and Duel.SelectYesNo(tp,aux.Stringid(62560742,1)) then + if Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and sumtype==SUMMON_TYPE_SYNCHRO + and ct>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and ct<=Duel.GetLocationCount(tp,LOCATION_MZONE) + and mg:FilterCount(aux.NecroValleyFilter(c62560742.mgfilter),nil,e,tp,tc)==ct + and Duel.SelectYesNo(tp,aux.Stringid(62560742,1)) then Duel.BreakEffect() Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) end diff --git a/script/c6260554.lua b/script/c6260554.lua index 54381750..c437038f 100644 --- a/script/c6260554.lua +++ b/script/c6260554.lua @@ -30,8 +30,7 @@ function c6260554.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c6260554.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c62645025.lua b/script/c62645025.lua new file mode 100644 index 00000000..098f5a98 --- /dev/null +++ b/script/c62645025.lua @@ -0,0 +1,70 @@ +--幻影騎士団ウロング・マグネリング +--The Phantom Knights of Wrong Magnet Ring +--Script by nekrozar +function c62645025.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c62645025.condition) + e1:SetTarget(c62645025.target) + e1:SetOperation(c62645025.activate) + c:RegisterEffect(e1) +end +function c62645025.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c62645025.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,62645025,0x10db,0x21,0,0,2,RACE_WARRIOR,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c62645025.activate(e,tp,eg,ep,ev,re,r,rp) + if not Duel.NegateAttack() then return end + Duel.BreakEffect() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if not c:IsRelateToEffect(e) + or not Duel.IsPlayerCanSpecialSummonMonster(tp,62645025,0x10db,0x21,0,0,2,RACE_WARRIOR,ATTRIBUTE_DARK) then return end + c:AddMonsterAttribute(TYPE_EFFECT) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_ATTACK) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c62645025.drcost) + e1:SetTarget(c62645025.drtg) + e1:SetOperation(c62645025.drop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() +end +function c62645025.cfilter(c) + if c:IsFacedown() or not c:IsAbleToGraveAsCost() then return false end + return (c:IsSetCard(0x10db) and c:IsType(TYPE_MONSTER)) + or (c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsType(TYPE_CONTINUOUS)) +end +function c62645025.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() + and Duel.IsExistingMatchingCard(c62645025.cfilter,tp,LOCATION_ONFIELD,0,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c62645025.cfilter,tp,LOCATION_ONFIELD,0,1,1,c) + g:AddCard(c) + Duel.SendtoGrave(g,REASON_COST) +end +function c62645025.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c62645025.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c62681049.lua b/script/c62681049.lua index 0b586508..01851322 100644 --- a/script/c62681049.lua +++ b/script/c62681049.lua @@ -9,7 +9,7 @@ function c62681049.initial_effect(c) --todeck local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE) e2:SetRange(LOCATION_SZONE) e2:SetCode(EFFECT_TO_HAND_REDIRECT) e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) diff --git a/script/c62709239.lua b/script/c62709239.lua index 252f357f..e1a09f51 100644 --- a/script/c62709239.lua +++ b/script/c62709239.lua @@ -8,7 +8,7 @@ function c62709239.initial_effect(c) e1:SetDescription(aux.Stringid(62709239,0)) e1:SetCategory(CATEGORY_DESTROY) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c62709239.descost) diff --git a/script/c62742651.lua b/script/c62742651.lua index b13be44e..67da76c0 100644 --- a/script/c62742651.lua +++ b/script/c62742651.lua @@ -40,12 +40,12 @@ function c62742651.damtg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,dam) end function c62742651.spfilter(c,e,tp,atk) - return c:IsAttackBelow(atk) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + return c:IsAttackBelow(atk) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c62742651.damop(e,tp,eg,ep,ev,re,r,rp) local dam=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) if Duel.Damage(tp,dam,REASON_EFFECT)~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then - local g=Duel.GetMatchingGroup(c62742651.spfilter,tp,LOCATION_GRAVE,0,nil,e,tp,dam) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c62742651.spfilter),tp,LOCATION_GRAVE,0,nil,e,tp,dam) if g:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(62742651,2)) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=g:Select(tp,1,1,nil) diff --git a/script/c6276588.lua b/script/c6276588.lua index 13d96b32..0f3f4086 100644 --- a/script/c6276588.lua +++ b/script/c6276588.lua @@ -1,55 +1,55 @@ ---カラクリ忍者 九壱九 -function c6276588.initial_effect(c) - --must attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MUST_ATTACK) - c:RegisterEffect(e1) - --pos change - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(6276588,0)) - e3:SetCategory(CATEGORY_POSITION) - e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) - e3:SetCode(EVENT_BE_BATTLE_TARGET) - e3:SetOperation(c6276588.posop) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(6276588,1)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCode(EVENT_BATTLE_DESTROYED) - e4:SetRange(LOCATION_MZONE) - e4:SetCondition(c6276588.spcon) - e4:SetTarget(c6276588.sptg) - e4:SetOperation(c6276588.spop) - c:RegisterEffect(e4) -end -function c6276588.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) - end -end -function c6276588.spcon(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - return eg:GetCount()==1 and tc:GetReasonCard()==e:GetHandler() - and tc:IsLocation(LOCATION_GRAVE) and tc:IsReason(REASON_BATTLE) -end -function c6276588.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsSetCard(0x11) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c6276588.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c6276588.filter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c6276588.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c6276588.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--カラクリ忍者 九壱九 +function c6276588.initial_effect(c) + --must attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + c:RegisterEffect(e1) + --pos change + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(6276588,0)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetOperation(c6276588.posop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(6276588,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_BATTLE_DESTROYED) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c6276588.spcon) + e4:SetTarget(c6276588.sptg) + e4:SetOperation(c6276588.spop) + c:RegisterEffect(e4) +end +function c6276588.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) + end +end +function c6276588.spcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return eg:GetCount()==1 and tc:GetReasonCard()==e:GetHandler() + and tc:IsLocation(LOCATION_GRAVE) and tc:IsReason(REASON_BATTLE) +end +function c6276588.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x11) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c6276588.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c6276588.filter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c6276588.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c6276588.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c62835876.lua b/script/c62835876.lua index 9e0a3737..5bc5edd5 100644 --- a/script/c62835876.lua +++ b/script/c62835876.lua @@ -1,39 +1,39 @@ ---善悪の彼岸 -function c62835876.initial_effect(c) - aux.AddRitualProcGreaterCode(c,35330871) - --search - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1,62835876) - e1:SetCondition(aux.exccon) - e1:SetCost(c62835876.thcost) - e1:SetTarget(c62835876.thtg) - e1:SetOperation(c62835876.thop) - c:RegisterEffect(e1) -end -function c62835876.cfilter(c) - return c:IsSetCard(0xb1) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() -end -function c62835876.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() - and Duel.IsExistingMatchingCard(c62835876.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) - Duel.DiscardHand(tp,c62835876.cfilter,1,1,REASON_COST,nil) -end -function c62835876.filter(c) - return c:IsSetCard(0xb1) and c:IsAbleToHand() -end -function c62835876.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c62835876.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c62835876.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c62835876.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--善悪の彼岸 +function c62835876.initial_effect(c) + aux.AddRitualProcGreaterCode(c,35330871) + --search + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1,62835876) + e1:SetCondition(aux.exccon) + e1:SetCost(c62835876.thcost) + e1:SetTarget(c62835876.thtg) + e1:SetOperation(c62835876.thop) + c:RegisterEffect(e1) +end +function c62835876.cfilter(c) + return c:IsSetCard(0xb1) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c62835876.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c62835876.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) + Duel.DiscardHand(tp,c62835876.cfilter,1,1,REASON_COST,nil) +end +function c62835876.filter(c) + return c:IsSetCard(0xb1) and c:IsAbleToHand() +end +function c62835876.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c62835876.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c62835876.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c62835876.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c62867251.lua b/script/c62867251.lua index 62ebbaa2..0ac9dbf3 100644 --- a/script/c62867251.lua +++ b/script/c62867251.lua @@ -1,31 +1,31 @@ ---聖なる輝き -function c62867251.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cannot mset - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EFFECT_CANNOT_MSET) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - c:RegisterEffect(e2) - --devine light - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EFFECT_DEVINE_LIGHT) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,1) - c:RegisterEffect(e3) - --cannot turn set - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CANNOT_TURN_SET) - e4:SetRange(LOCATION_SZONE) - e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - c:RegisterEffect(e4) -end +--聖なる輝き +function c62867251.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot mset + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_MSET) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + c:RegisterEffect(e2) + --devine light + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_DEVINE_LIGHT) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + c:RegisterEffect(e3) + --cannot turn set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_TURN_SET) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e4) +end diff --git a/script/c62873545.lua b/script/c62873545.lua index 06b60c52..345732fe 100644 --- a/script/c62873545.lua +++ b/script/c62873545.lua @@ -1,27 +1,27 @@ ---究極竜騎士 -function c62873545.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,5405694,23995346,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(c62873545.atkval) - c:RegisterEffect(e2) -end -function c62873545.filter(c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) -end -function c62873545.atkval(e,c) - return Duel.GetMatchingGroupCount(c62873545.filter,c:GetControler(),LOCATION_MZONE,0,c)*500 -end +--究極竜騎士 +function c62873545.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,5405694,23995346,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c62873545.atkval) + c:RegisterEffect(e2) +end +function c62873545.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c62873545.atkval(e,c) + return Duel.GetMatchingGroupCount(c62873545.filter,c:GetControler(),LOCATION_MZONE,0,c)*500 +end diff --git a/script/c62892347.lua b/script/c62892347.lua index 435a292c..a388ca41 100644 --- a/script/c62892347.lua +++ b/script/c62892347.lua @@ -52,7 +52,7 @@ function c62892347.arcanareg(c,coin) e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) e1:SetTarget(c62892347.distg) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) --disable effect local e2=Effect.CreateEffect(c) @@ -60,7 +60,7 @@ function c62892347.arcanareg(c,coin) e2:SetCode(EVENT_CHAIN_SOLVING) e2:SetRange(LOCATION_MZONE) e2:SetOperation(c62892347.disop) - e2:SetReset(RESET_EVENT+0x1ff0000) + e2:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e2) --self destroy local e3=Effect.CreateEffect(c) @@ -69,9 +69,9 @@ function c62892347.arcanareg(c,coin) e3:SetRange(LOCATION_MZONE) e3:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) e3:SetTarget(c62892347.distg) - e3:SetReset(RESET_EVENT+0x1ff0000) + e3:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e3) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) end function c62892347.distg(e,c) local ec=e:GetHandler() @@ -88,8 +88,7 @@ function c62892347.disop(e,tp,eg,ep,ev,re,r,rp) if (val==1 and rp~=ec:GetControler()) or (val==0 and rp==ec:GetControler()) then return end local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if not g or not g:IsContains(ec) then return end - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(re:GetHandler(),REASON_EFFECT) end end diff --git a/script/c62895219.lua b/script/c62895219.lua index b3f9fa5a..95cd4b1b 100644 --- a/script/c62895219.lua +++ b/script/c62895219.lua @@ -12,7 +12,7 @@ function c62895219.initial_effect(c) c:RegisterEffect(e1) --spsummon local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) @@ -37,7 +37,7 @@ function c62895219.thop(e,tp,eg,ep,ev,re,r,rp) end end function c62895219.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return c:IsOnField() and not c:IsImmuneToEffect(e) end function c62895219.filter2(c,e,tp,m,f,gc) return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9b) and (not f or f(c)) @@ -46,7 +46,7 @@ end function c62895219.target(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() if chk==0 then - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,c) + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,c) local res=Duel.IsExistingMatchingCard(c62895219.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) if not res then local ce=Duel.GetChainMaterial(tp) @@ -64,7 +64,7 @@ end function c62895219.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end - local mg1=Duel.GetMatchingGroup(c62895219.filter1,tp,LOCATION_MZONE,0,c,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c62895219.filter1,c,e) local sg1=Duel.GetMatchingGroup(c62895219.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) local mg2=nil local sg2=nil diff --git a/script/c62899696.lua b/script/c62899696.lua new file mode 100644 index 00000000..f4f5a7b5 --- /dev/null +++ b/script/c62899696.lua @@ -0,0 +1,122 @@ +--SRアクマグネ +--Speedroid Fiendmagnet +--Scripted by Eerie Code +function c62899696.initial_effect(c) + --cannot be synchro + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c62899696.smcon) + c:RegisterEffect(e1) + --material check + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetOperation(c62899696.op) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --synchro summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(62899696,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_CUSTOM+62899696) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetTarget(c62899696.sptg) + e4:SetOperation(c62899696.spop) + c:RegisterEffect(e4) + if not c62899696.global_flag then + c62899696.global_flag=true + --flag reset + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHAIN_END) + ge1:SetOperation(c62899696.resetop) + Duel.RegisterEffect(ge1,0) + end +end +function c62899696.smcon(e) + return e:GetHandler():GetFlagEffect(62899696)==0 +end +function c62899696.smcon2(e) + return e:GetHandler():GetFlagEffect(62899696)>0 +end +function c62899696.smtg(e,c) + return c:GetFlagEffect(62899696)>0 +end +function c62899696.filter(c,e) + return c:IsFaceup() and c:IsCanBeEffectTarget(e) +end +function c62899696.synfilter(c,tm,ntm) + local g=Group.FromCards(tm,ntm) + if c:IsFacedown() and c:IsAttribute(ATTRIBUTE_WIND) then + if c:IsSynchroSummonable(nil,g) then + return true + else return false end + else return false end +end +function c62899696.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + if bit.band(Duel.GetCurrentPhase(),PHASE_MAIN1+PHASE_MAIN2)==0 then return end + local c=e:GetHandler() + c:RegisterFlagEffect(62899696,RESET_EVENT+0x1fe0000,0,1) + local check=false + local g=Duel.GetMatchingGroup(c62899696.filter,tp,0,LOCATION_MZONE,nil,e) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SYNCHRO_MATERIAL) + e1:SetCondition(c62899696.smcon2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+Duel.GetCurrentPhase()) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(62899696,RESET_EVENT+0x1fe0000,0,1) + if Duel.IsExistingMatchingCard(c62899696.synfilter,tp,LOCATION_EXTRA,0,1,nil,c,tc) then + check=true + else + tc:ResetFlagEffect(62899696) + end + tc=g:GetNext() + end + if check and Duel.SelectYesNo(tp,aux.Stringid(62899696,0)) then + Duel.RaiseSingleEvent(c,EVENT_CUSTOM+62899696,e,r,rp,0,0) + else + c:ResetFlagEffect(62899696) + end +end +function c62899696.spfilter(c,tp,tc) + return c:GetFlagEffect(62899696)>0 and Duel.IsExistingMatchingCard(c62899696.synfilter,tp,LOCATION_EXTRA,0,1,nil,tc,c) +end +function c62899696.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c62899696.spfilter(chkc,tp,c) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + Duel.SelectTarget(tp,c62899696.spfilter,tp,0,LOCATION_MZONE,1,1,nil,tp,c) +end +function c62899696.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c62899696.synfilter,tp,LOCATION_EXTRA,0,1,1,nil,c,tc) + local sc=g:GetFirst() + if sc then + Duel.SynchroSummon(tp,sc,nil,Group.FromCards(c,tc)) + end + end +end +function c62899696.resetfilter(c) + return c:GetFlagEffect(62899696)>0 +end +function c62899696.resetop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c62899696.resetfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + tc:ResetFlagEffect(62899696) + tc=g:GetNext() + end +end \ No newline at end of file diff --git a/script/c62953041.lua b/script/c62953041.lua index ae4fd219..7e65bb87 100644 --- a/script/c62953041.lua +++ b/script/c62953041.lua @@ -12,6 +12,7 @@ function c62953041.initial_effect(c) --spsummon local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c62953041.spreg) c:RegisterEffect(e2) diff --git a/script/c62957424.lua b/script/c62957424.lua index 4d44e3a2..7e8ff87b 100644 --- a/script/c62957424.lua +++ b/script/c62957424.lua @@ -1,85 +1,85 @@ ---彼岸の悪鬼 リビオッコ -function c62957424.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c62957424.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(62957424,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,62957424) - e2:SetCondition(c62957424.sscon) - e2:SetTarget(c62957424.sstg) - e2:SetOperation(c62957424.ssop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(62957424,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,62957424) - e3:SetTarget(c62957424.sptg) - e3:SetOperation(c62957424.spop) - c:RegisterEffect(e3) -end -function c62957424.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c62957424.sdcon(e) - return Duel.IsExistingMatchingCard(c62957424.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c62957424.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c62957424.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c62957424.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c62957424.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c62957424.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c62957424.spfilter(c,e,tp) - return c:GetLevel()==3 and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_FIEND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c62957424.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c62957424.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c62957424.spop(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,c62957424.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - Duel.SpecialSummonComplete() - end -end +--彼岸の悪鬼 リビオッコ +function c62957424.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c62957424.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(62957424,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,62957424) + e2:SetCondition(c62957424.sscon) + e2:SetTarget(c62957424.sstg) + e2:SetOperation(c62957424.ssop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(62957424,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,62957424) + e3:SetTarget(c62957424.sptg) + e3:SetOperation(c62957424.spop) + c:RegisterEffect(e3) +end +function c62957424.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c62957424.sdcon(e) + return Duel.IsExistingMatchingCard(c62957424.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c62957424.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c62957424.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c62957424.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c62957424.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c62957424.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c62957424.spfilter(c,e,tp) + return c:GetLevel()==3 and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_FIEND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c62957424.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c62957424.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c62957424.spop(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,c62957424.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c62991886.lua b/script/c62991886.lua index e32ac2cc..d790f68b 100644 --- a/script/c62991886.lua +++ b/script/c62991886.lua @@ -1,14 +1,6 @@ --進化する人類 function c62991886.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(c62991886.target) - e1:SetOperation(c62991886.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk Change local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -16,26 +8,6 @@ function c62991886.initial_effect(c) e2:SetCondition(c62991886.condition) e2:SetValue(c62991886.value) 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 c62991886.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 c62991886.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 c62991886.condition(e) return Duel.GetLP(0)~=Duel.GetLP(1) diff --git a/script/c63014935.lua b/script/c63014935.lua index 5bfe5e91..efaa1d9d 100644 --- a/script/c63014935.lua +++ b/script/c63014935.lua @@ -1,95 +1,95 @@ ---ヴォルカニック・クイーン -function c63014935.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e1:SetRange(LOCATION_HAND) - e1:SetTargetRange(POS_FACEUP,1) - e1:SetCondition(c63014935.spcon) - e1:SetOperation(c63014935.spop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(63014935,0)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c63014935.damcost) - e2:SetTarget(c63014935.damtg) - e2:SetOperation(c63014935.damop) - c:RegisterEffect(e2) - --release or damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(63014935,1)) - e3:SetCategory(CATEGORY_RELEASE+CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c63014935.phcon) - e3:SetOperation(c63014935.phop) - c:RegisterEffect(e3) - --spsummon cost - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_SPSUMMON_COST) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetCost(c63014935.spcost) - e4:SetOperation(c63014935.spcop) - c:RegisterEffect(e4) -end -function c63014935.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(1-c:GetControler(),LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(Card.IsReleasable,c:GetControler(),0,LOCATION_MZONE,1,nil) -end -function c63014935.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c63014935.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) - Duel.SendtoGrave(g,REASON_COST) -end -function c63014935.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,1000) -end -function c63014935.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c63014935.phcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c63014935.phop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckReleaseGroup(tp,aux.TRUE,1,e:GetHandler()) and Duel.SelectYesNo(tp,aux.Stringid(63014935,2)) then - Duel.Release(Duel.SelectReleaseGroup(tp,aux.TRUE,1,1,e:GetHandler()),REASON_EFFECT) - else Duel.Damage(tp,1000,REASON_EFFECT) end -end -function c63014935.spcost(e,c,tp) - return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 -end -function c63014935.spcop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) -end +--ヴォルカニック・クイーン +function c63014935.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetRange(LOCATION_HAND) + e1:SetTargetRange(POS_FACEUP,1) + e1:SetCondition(c63014935.spcon) + e1:SetOperation(c63014935.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(63014935,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c63014935.damcost) + e2:SetTarget(c63014935.damtg) + e2:SetOperation(c63014935.damop) + c:RegisterEffect(e2) + --release or damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(63014935,1)) + e3:SetCategory(CATEGORY_RELEASE+CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c63014935.phcon) + e3:SetOperation(c63014935.phop) + c:RegisterEffect(e3) + --spsummon cost + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SPSUMMON_COST) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetCost(c63014935.spcost) + e4:SetOperation(c63014935.spcop) + c:RegisterEffect(e4) +end +function c63014935.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(1-c:GetControler(),LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(Card.IsReleasable,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c63014935.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectMatchingCard(tp,Card.IsReleasable,tp,0,LOCATION_MZONE,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c63014935.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) +end +function c63014935.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,1000) +end +function c63014935.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c63014935.phcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c63014935.phop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckReleaseGroup(tp,aux.TRUE,1,e:GetHandler()) and Duel.SelectYesNo(tp,aux.Stringid(63014935,2)) then + Duel.Release(Duel.SelectReleaseGroup(tp,aux.TRUE,1,1,e:GetHandler()),REASON_EFFECT) + else Duel.Damage(tp,1000,REASON_EFFECT) end +end +function c63014935.spcost(e,c,tp) + return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 +end +function c63014935.spcop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c63035430.lua b/script/c63035430.lua index f5d63f95..e372deea 100644 --- a/script/c63035430.lua +++ b/script/c63035430.lua @@ -1,32 +1,32 @@ ---摩天楼 -スカイスクレイパー- -function c63035430.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCondition(c63035430.atkcon) - e2:SetTarget(c63035430.atktg) - e2:SetValue(c63035430.atkval) - c:RegisterEffect(e2) -end -function c63035430.atkcon(e) - c63035430[0]=false - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c63035430.atktg(e,c) - return c==Duel.GetAttacker() and c:IsSetCard(0x3008) -end -function c63035430.atkval(e,c) - local d=Duel.GetAttackTarget() - if c63035430[0] or c:GetAttack()0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c63060238.tgfilter(c) - return c:IsSetCard(0x3008) and not c:IsCode(63060238) and c:IsAbleToGrave() -end -function c63060238.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c63060238.tgfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c63060238.tgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c63060238.tgfilter,tp,LOCATION_DECK,0,1,1,nil) - local tc=g:GetFirst() - if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(tc:GetAttribute()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_ATTACK_FINAL) - e2:SetValue(tc:GetAttack()) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EFFECT_SET_DEFENSE_FINAL) - e3:SetValue(tc:GetDefense()) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(1,0) - e4:SetTarget(c63060238.splimit) - e4:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e4,tp) - end -end -function c63060238.splimit(e,c,tp,sumtp,sumpos) - return not c:IsType(TYPE_FUSION) -end +--E・HERO ブレイズマン +function c63060238.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(63060238,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,63060238) + e1:SetTarget(c63060238.thtg) + e1:SetOperation(c63060238.thop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --to grave + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(63060238,1)) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,63060238) + e3:SetTarget(c63060238.tgtg) + e3:SetOperation(c63060238.tgop) + c:RegisterEffect(e3) +end +function c63060238.filter(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c63060238.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c63060238.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c63060238.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c63060238.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c63060238.tgfilter(c) + return c:IsSetCard(0x3008) and not c:IsCode(63060238) and c:IsAbleToGrave() +end +function c63060238.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c63060238.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c63060238.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c63060238.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(tc:GetAttribute()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(tc:GetAttack()) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SET_DEFENSE_FINAL) + e3:SetValue(tc:GetDefense()) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,0) + e4:SetTarget(c63060238.splimit) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) + end +end +function c63060238.splimit(e,c,tp,sumtp,sumpos) + return not c:IsType(TYPE_FUSION) +end diff --git a/script/c63224564.lua b/script/c63224564.lua index 5240d835..8dc3aca1 100644 --- a/script/c63224564.lua +++ b/script/c63224564.lua @@ -1,44 +1,10 @@ --サイバー・ボンテージ function c63224564.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(c63224564.target) - e1:SetOperation(c63224564.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,76812113,12206212)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(500) c:RegisterEffect(e2) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c63224564.eqlimit) - c:RegisterEffect(e4) -end -function c63224564.eqlimit(e,c) - return c:IsCode(76812113,12206212) -end -function c63224564.filter(c) - return c:IsFaceup() and c:IsCode(76812113,12206212) -end -function c63224564.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c63224564.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c63224564.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c63224564.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c63224564.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 diff --git a/script/c63227401.lua b/script/c63227401.lua index 410cc492..e0f894bc 100644 --- a/script/c63227401.lua +++ b/script/c63227401.lua @@ -1,61 +1,61 @@ ---スキル・プリズナー -function c63227401.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetTarget(c63227401.target) - e1:SetOperation(c63227401.activate) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(63227401,0)) - e2:SetCategory(CATEGORY_DISABLE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCondition(aux.exccon) - e2:SetCost(c63227401.cost) - e2:SetTarget(c63227401.target) - e2:SetOperation(c63227401.activate) - c:RegisterEffect(e2) -end -function c63227401.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) -end -function c63227401.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - tc:RegisterFlagEffect(63227401,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) - tc:RegisterFlagEffect(0,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(63227401,1)) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_CHAIN_SOLVING) - e1:SetCondition(c63227401.discon) - e1:SetOperation(c63227401.disop) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetLabelObject(tc) - Duel.RegisterEffect(e1,tp) - end -end -function c63227401.discon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:GetFlagEffect(63227401)==0 or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return g and g:IsContains(tc) and re:IsActiveType(TYPE_MONSTER) -end -function c63227401.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) -end -function c63227401.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end +--スキル・プリズナー +function c63227401.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetTarget(c63227401.target) + e1:SetOperation(c63227401.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(63227401,0)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(aux.exccon) + e2:SetCost(c63227401.cost) + e2:SetTarget(c63227401.target) + e2:SetOperation(c63227401.activate) + c:RegisterEffect(e2) +end +function c63227401.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) +end +function c63227401.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + tc:RegisterFlagEffect(63227401,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) + tc:RegisterFlagEffect(0,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(63227401,1)) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetCondition(c63227401.discon) + e1:SetOperation(c63227401.disop) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetLabelObject(tc) + Duel.RegisterEffect(e1,tp) + end +end +function c63227401.discon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(63227401)==0 or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return g and g:IsContains(tc) and re:IsActiveType(TYPE_MONSTER) +end +function c63227401.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end +function c63227401.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end diff --git a/script/c63251695.lua b/script/c63251695.lua index 64480f37..6ca93d4b 100644 --- a/script/c63251695.lua +++ b/script/c63251695.lua @@ -34,9 +34,10 @@ end function c63251695.negop(e,tp,eg,ep,ev,re,r,rp) if Duel.SelectYesNo(tp,aux.Stringid(63251695,1)) then e:GetHandler():RegisterFlagEffect(63251695,RESET_EVENT+0x1fe0000,0,1) - Duel.NegateEffect(ev) - Duel.BreakEffect() - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + if Duel.NegateEffect(ev) then + Duel.BreakEffect() + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end end end function c63251695.effcon(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c63253763.lua b/script/c63253763.lua index a37e3690..fccef97b 100644 --- a/script/c63253763.lua +++ b/script/c63253763.lua @@ -1,65 +1,65 @@ ---エーリアン・リベンジャー -function c63253763.initial_effect(c) - c:SetUniqueOnField(1,0,63253763) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c63253763.spcon) - e1:SetOperation(c63253763.spop) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(63253763,0)) - e2:SetCategory(CATEGORY_COUNTER) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c63253763.cttg) - e2:SetOperation(c63253763.ctop) - c:RegisterEffect(e2) - --atk def - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetCondition(c63253763.adcon) - e3:SetTarget(c63253763.adtg) - e3:SetValue(c63253763.adval) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) -end -function c63253763.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsCanRemoveCounter(c:GetControler(),1,1,0x100e,2,REASON_COST) -end -function c63253763.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.RemoveCounter(tp,1,1,0x100e,2,REASON_COST) -end -function c63253763.cttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end -end -function c63253763.ctop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - local tc=g:GetFirst() - while tc do - tc:AddCounter(0x100e,1) - tc=g:GetNext() - end -end -function c63253763.adcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c63253763.adtg(e,c) - local bc=c:GetBattleTarget() - return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) -end -function c63253763.adval(e,c) - return c:GetCounter(0x100e)*-300 -end +--エーリアン・リベンジャー +function c63253763.initial_effect(c) + c:SetUniqueOnField(1,0,63253763) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c63253763.spcon) + e1:SetOperation(c63253763.spop) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(63253763,0)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c63253763.cttg) + e2:SetOperation(c63253763.ctop) + c:RegisterEffect(e2) + --atk def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetCondition(c63253763.adcon) + e3:SetTarget(c63253763.adtg) + e3:SetValue(c63253763.adval) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) +end +function c63253763.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsCanRemoveCounter(c:GetControler(),1,1,0x100e,2,REASON_COST) +end +function c63253763.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.RemoveCounter(tp,1,1,0x100e,2,REASON_COST) +end +function c63253763.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end +end +function c63253763.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + tc:AddCounter(0x100e,1) + tc=g:GetNext() + end +end +function c63253763.adcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() +end +function c63253763.adtg(e,c) + local bc=c:GetBattleTarget() + return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) +end +function c63253763.adval(e,c) + return c:GetCounter(0x100e)*-300 +end diff --git a/script/c63257623.lua b/script/c63257623.lua index f5d4523a..9e6448b9 100644 --- a/script/c63257623.lua +++ b/script/c63257623.lua @@ -1,63 +1,63 @@ ---森羅の実張り ピース -function c63257623.initial_effect(c) - --deck check - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(63257623,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c63257623.target) - e1:SetOperation(c63257623.operation) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(63257623,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1,63257623) - e3:SetCondition(c63257623.spcon) - e3:SetTarget(c63257623.sptg) - e3:SetOperation(c63257623.spop) - c:RegisterEffect(e3) -end -function c63257623.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c63257623.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - if tc:IsRace(RACE_PLANT) then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) - else - Duel.MoveSequence(tc,1) - end -end -function c63257623.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c63257623.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c63257623.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c63257623.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c63257623.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c63257623.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c63257623.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--森羅の実張り ピース +function c63257623.initial_effect(c) + --deck check + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(63257623,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c63257623.target) + e1:SetOperation(c63257623.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(63257623,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,63257623) + e3:SetCondition(c63257623.spcon) + e3:SetTarget(c63257623.sptg) + e3:SetOperation(c63257623.spop) + c:RegisterEffect(e3) +end +function c63257623.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c63257623.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsRace(RACE_PLANT) then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) + else + Duel.MoveSequence(tc,1) + end +end +function c63257623.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c63257623.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c63257623.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c63257623.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c63257623.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c63257623.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c63257623.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c63259351.lua b/script/c63259351.lua index bc19aca9..5ca2030e 100644 --- a/script/c63259351.lua +++ b/script/c63259351.lua @@ -1,57 +1,57 @@ ---奇跡のジュラシック・エッグ -function c63259351.initial_effect(c) - c:EnableCounterPermit(0x14) - --cannot remove - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetCode(EFFECT_CANNOT_REMOVE) - e1:SetRange(LOCATION_MZONE) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetOperation(c63259351.ctop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetDescription(aux.Stringid(63259351,0)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c63259351.spcost) - e3:SetTarget(c63259351.sptg) - e3:SetOperation(c63259351.spop) - c:RegisterEffect(e3) -end -function c63259351.ctfilter(c,tp) - return c:IsControler(tp) and c:IsRace(RACE_DINOSAUR) -end -function c63259351.ctop(e,tp,eg,ep,ev,re,r,rp) - if eg:IsExists(c63259351.ctfilter,1,nil,tp) then - e:GetHandler():AddCounter(0x14,2) - end -end -function c63259351.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - e:SetLabel(e:GetHandler():GetCounter(0x14)) - Duel.Release(e:GetHandler(),REASON_COST) -end -function c63259351.spfilter(c,lv,e,tp) - return c:IsLevelBelow(lv) and c:IsRace(RACE_DINOSAUR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c63259351.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c63259351.spfilter,tp,LOCATION_DECK,0,1,nil,e:GetHandler():GetCounter(0x14),e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c63259351.spop(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,c63259351.spfilter,tp,LOCATION_DECK,0,1,1,nil,e:GetLabel(),e,tp) - if g:GetCount()~=0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--奇跡のジュラシック・エッグ +function c63259351.initial_effect(c) + c:EnableCounterPermit(0x14) + --cannot remove + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_CANNOT_REMOVE) + e1:SetRange(LOCATION_MZONE) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetOperation(c63259351.ctop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(63259351,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c63259351.spcost) + e3:SetTarget(c63259351.sptg) + e3:SetOperation(c63259351.spop) + c:RegisterEffect(e3) +end +function c63259351.ctfilter(c,tp) + return c:IsControler(tp) and c:IsRace(RACE_DINOSAUR) +end +function c63259351.ctop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(c63259351.ctfilter,1,nil,tp) then + e:GetHandler():AddCounter(0x14,2) + end +end +function c63259351.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + e:SetLabel(e:GetHandler():GetCounter(0x14)) + Duel.Release(e:GetHandler(),REASON_COST) +end +function c63259351.spfilter(c,lv,e,tp) + return c:IsLevelBelow(lv) and c:IsRace(RACE_DINOSAUR) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c63259351.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c63259351.spfilter,tp,LOCATION_DECK,0,1,nil,e:GetHandler():GetCounter(0x14),e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c63259351.spop(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,c63259351.spfilter,tp,LOCATION_DECK,0,1,1,nil,e:GetLabel(),e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c63300440.lua b/script/c63300440.lua index 51cdcd3c..f27f27e3 100644 --- a/script/c63300440.lua +++ b/script/c63300440.lua @@ -1,21 +1,6 @@ --ドラゴン・シールド function c63300440.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(c63300440.target) - e1:SetOperation(c63300440.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(c63300440.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON)) -- local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) @@ -32,22 +17,3 @@ function c63300440.initial_effect(c) e6:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) c:RegisterEffect(e6) end -function c63300440.eqlimit(e,c) - return c:IsRace(RACE_DRAGON) -end -function c63300440.filter(c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) -end -function c63300440.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c63300440.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c63300440.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c63300440.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c63300440.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 diff --git a/script/c6330307.lua b/script/c6330307.lua index 26026f8d..fa7fe3c2 100644 --- a/script/c6330307.lua +++ b/script/c6330307.lua @@ -1,79 +1,79 @@ ---DZW-魔装鵺妖衣 -function c6330307.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(6330307,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetRange(LOCATION_HAND+LOCATION_MZONE) - e1:SetTarget(c6330307.eqtg) - e1:SetOperation(c6330307.eqop) - c:RegisterEffect(e1) - --destroy sub - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - c:RegisterEffect(e2) - --chain attack - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(6330307,1)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_DAMAGE_STEP_END) - e3:SetRange(LOCATION_SZONE) - e3:SetCondition(c6330307.atkcon) - e3:SetOperation(c6330307.atkop) - c:RegisterEffect(e3) -end -function c6330307.filter(c) - return c:IsFaceup() and c:IsSetCard(0x107f) and c:IsSetCard(0x1048) -end -function c6330307.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c6330307.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c6330307.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c6330307.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c6330307.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) or not c:CheckUniqueOnField(tp) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c6330307.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) -end -function c6330307.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c6330307.atkcon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local at=Duel.GetAttackTarget() - return at and a==e:GetHandler():GetEquipTarget() and at:IsRelateToBattle() and at:GetAttack()>0 and a:IsChainAttackable() -end -function c6330307.atkop(e,tp,eg,ep,ev,re,r,rp) - local at=Duel.GetAttackTarget() - local c=e:GetHandler() - local ec=c:GetEquipTarget() - if at:IsRelateToBattle() and not at:IsImmuneToEffect(e) and at:GetAttack()>0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - at:RegisterEffect(e1) - Duel.ChainAttack(at) - end -end +--DZW-魔装鵺妖衣 +function c6330307.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(6330307,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c6330307.eqtg) + e1:SetOperation(c6330307.eqop) + c:RegisterEffect(e1) + --destroy sub + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(6330307,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c6330307.atkcon) + e3:SetOperation(c6330307.atkop) + c:RegisterEffect(e3) +end +function c6330307.filter(c) + return c:IsFaceup() and c:IsSetCard(0x107f) and c:IsSetCard(0x1048) +end +function c6330307.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c6330307.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c6330307.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c6330307.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c6330307.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) or not c:CheckUniqueOnField(tp) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c6330307.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) +end +function c6330307.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c6330307.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return at and a==e:GetHandler():GetEquipTarget() and at:IsRelateToBattle() and at:GetAttack()>0 and a:IsChainAttackable() +end +function c6330307.atkop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + local c=e:GetHandler() + local ec=c:GetEquipTarget() + if at:IsRelateToBattle() and not at:IsImmuneToEffect(e) and at:GetAttack()>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + at:RegisterEffect(e1) + Duel.ChainAttack(at) + end +end diff --git a/script/c63323539.lua b/script/c63323539.lua index 0b8325d2..4f3ace56 100644 --- a/script/c63323539.lua +++ b/script/c63323539.lua @@ -1,32 +1,32 @@ ---トロイボム -function c63323539.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CONTROL_CHANGED) - e1:SetTarget(c63323539.target) - e1:SetOperation(c63323539.operation) - c:RegisterEffect(e1) -end -function c63323539.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return r==REASON_EFFECT and rp==1-tp - and eg:IsExists(Card.IsControler,1,nil,1-tp) end - Duel.SetTargetCard(eg) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) -end -function c63323539.filter(c,e,tp) - return c:IsRelateToEffect(e) and c:IsControler(1-tp) -end -function c63323539.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=eg:FilterSelect(tp,c63323539.filter,1,1,nil,e,tp) - local tc=g:GetFirst() - if not tc then return end - local atk=tc:GetAttack() - if atk<0 or tc:IsFacedown() then atk=0 end - if Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.Damage(1-tp,atk,REASON_EFFECT) - end -end +--トロイボム +function c63323539.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CONTROL_CHANGED) + e1:SetTarget(c63323539.target) + e1:SetOperation(c63323539.operation) + c:RegisterEffect(e1) +end +function c63323539.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return r==REASON_EFFECT and rp==1-tp + and eg:IsExists(Card.IsControler,1,nil,1-tp) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c63323539.filter(c,e,tp) + return c:IsRelateToEffect(e) and c:IsControler(1-tp) +end +function c63323539.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=eg:FilterSelect(tp,c63323539.filter,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + local atk=tc:GetAttack() + if atk<0 or tc:IsFacedown() then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c63364266.lua b/script/c63364266.lua index 59c44f70..b8b8e4cf 100644 --- a/script/c63364266.lua +++ b/script/c63364266.lua @@ -1,53 +1,53 @@ ---ゴヨウ・チェイサー -function c63364266.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --atkup - 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:SetValue(c63364266.val) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(63364266,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCondition(aux.bdogcon) - e2:SetTarget(c63364266.sptg) - e2:SetOperation(c63364266.spop) - c:RegisterEffect(e2) -end -function c63364266.atkfilter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsType(TYPE_SYNCHRO) -end -function c63364266.val(e,c) - return Duel.GetMatchingGroupCount(c63364266.atkfilter,0,LOCATION_MZONE,LOCATION_MZONE,c)*300 -end -function c63364266.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local bc=e:GetHandler():GetBattleTarget() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetTargetCard(bc) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) -end -function c63364266.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local atk=tc:GetAttack() - if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(atk/2) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - Duel.SpecialSummonComplete() - end - end -end +--ゴヨウ・チェイサー +function c63364266.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atkup + 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:SetValue(c63364266.val) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(63364266,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCondition(aux.bdogcon) + e2:SetTarget(c63364266.sptg) + e2:SetOperation(c63364266.spop) + c:RegisterEffect(e2) +end +function c63364266.atkfilter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsType(TYPE_SYNCHRO) +end +function c63364266.val(e,c) + return Duel.GetMatchingGroupCount(c63364266.atkfilter,0,LOCATION_MZONE,LOCATION_MZONE,c)*300 +end +function c63364266.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) +end +function c63364266.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(atk/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end + end +end diff --git a/script/c63465535.lua b/script/c63465535.lua index 15b5d65d..f0a33c98 100644 --- a/script/c63465535.lua +++ b/script/c63465535.lua @@ -1,95 +1,92 @@ ---地底のアラクネー -function c63465535.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure2(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),aux.NonTuner(Card.IsRace,RACE_INSECT)) - c:EnableReviveLimit() - --actlimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c63465535.operation) - c:RegisterEffect(e1) - --equip - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(63465535,0)) - e2:SetCategory(CATEGORY_EQUIP) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c63465535.eqcon) - e2:SetTarget(c63465535.eqtg) - e2:SetOperation(c63465535.eqop) - c:RegisterEffect(e2) - --Destroy replace - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_DESTROY_REPLACE) - e3:SetTarget(c63465535.desreptg) - e3:SetOperation(c63465535.desrepop) - e3:SetLabelObject(e2) - c:RegisterEffect(e3) -end -function c63465535.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c63465535.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end -function c63465535.aclimit(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c63465535.eqcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ec=e:GetLabelObject() - return ec==nil or not ec:IsHasCardTarget(c) or ec:GetFlagEffect(63465535)==0 -end -function c63465535.filter(c) - return c:IsFaceup() and c:IsAbleToChangeControler() -end -function c63465535.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c63465535.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c63465535.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c63465535.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c63465535.eqlimit(e,c) - return e:GetOwner()==c -end -function c63465535.eqop(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:IsType(TYPE_MONSTER) then - if c:IsFaceup() and c:IsRelateToEffect(e) then - if not Duel.Equip(tp,tc,c,false) then return end - --Add Equip limit - tc:RegisterFlagEffect(63465535,RESET_EVENT+0x1fe0000,0,0) - e:SetLabelObject(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c63465535.eqlimit) - tc:RegisterEffect(e1) - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c63465535.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local ec=e:GetLabelObject():GetLabelObject() - if chk==0 then return c:IsReason(REASON_BATTLE) and ec and ec:IsHasCardTarget(c) - and not ec:IsStatus(STATUS_DESTROY_CONFIRMED) and ec:GetFlagEffect(63465535)~=0 end - return Duel.SelectYesNo(tp,aux.Stringid(63465535,1)) -end -function c63465535.desrepop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetLabelObject():GetLabelObject(),REASON_EFFECT+REASON_REPLACE) -end +--地底のアラクネー +function c63465535.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),aux.NonTuner(Card.IsRace,RACE_INSECT)) + c:EnableReviveLimit() + --actlimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,1) + e1:SetValue(c63465535.aclimit) + e1:SetCondition(c63465535.actcon) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(63465535,0)) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c63465535.eqcon) + e2:SetTarget(c63465535.eqtg) + e2:SetOperation(c63465535.eqop) + c:RegisterEffect(e2) + --Destroy replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetTarget(c63465535.desreptg) + e3:SetOperation(c63465535.desrepop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) +end +function c63465535.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c63465535.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end +function c63465535.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=e:GetLabelObject() + return ec==nil or not ec:IsHasCardTarget(c) or ec:GetFlagEffect(63465535)==0 +end +function c63465535.filter(c) + return c:IsFaceup() and c:IsAbleToChangeControler() +end +function c63465535.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c63465535.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c63465535.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c63465535.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c63465535.eqlimit(e,c) + return e:GetOwner()==c +end +function c63465535.eqop(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:IsType(TYPE_MONSTER) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + tc:RegisterFlagEffect(63465535,RESET_EVENT+0x1fe0000,0,0) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c63465535.eqlimit) + tc:RegisterEffect(e1) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c63465535.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ec=e:GetLabelObject():GetLabelObject() + if chk==0 then return c:IsReason(REASON_BATTLE) and ec and ec:IsHasCardTarget(c) + and not ec:IsStatus(STATUS_DESTROY_CONFIRMED) and ec:GetFlagEffect(63465535)~=0 end + return Duel.SelectYesNo(tp,aux.Stringid(63465535,1)) +end +function c63465535.desrepop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetLabelObject():GetLabelObject(),REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c63468625.lua b/script/c63468625.lua index f9b01f2c..a282462f 100644 --- a/script/c63468625.lua +++ b/script/c63468625.lua @@ -1,130 +1,130 @@ ---機皇神マシニクル∞ -function c63468625.initial_effect(c) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(0) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c63468625.spcon) - e2:SetOperation(c63468625.spop) - c:RegisterEffect(e2) - --equip - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(63468625,0)) - e3:SetCategory(CATEGORY_EQUIP) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetTarget(c63468625.eqtg) - e3:SetOperation(c63468625.eqop) - c:RegisterEffect(e3) - --damage - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(63468625,1)) - e4:SetCategory(CATEGORY_DAMAGE) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e4:SetCode(EVENT_PHASE+PHASE_STANDBY) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1) - e4:SetCondition(c63468625.damcon) - e4:SetCost(c63468625.damcost) - e4:SetTarget(c63468625.damtg) - e4:SetOperation(c63468625.damop) - c:RegisterEffect(e4) -end -function c63468625.spfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x13) and c:IsAbleToGraveAsCost() -end -function c63468625.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c63468625.spfilter,c:GetControler(),LOCATION_HAND,0,3,c) -end -function c63468625.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c63468625.spfilter,tp,LOCATION_HAND,0,3,3,c) - Duel.SendtoGrave(g,REASON_COST) -end -function c63468625.eqfilter(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() -end -function c63468625.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c63468625.eqfilter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c63468625.eqfilter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c63468625.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c63468625.eqlimit(e,c) - return e:GetOwner()==c and not c:IsDisabled() -end -function c63468625.eqop(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:IsType(TYPE_MONSTER) then - if c:IsFaceup() and c:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,tc,c,false) then return end - --Add Equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c63468625.eqlimit) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - tc:RegisterEffect(e2) - tc:RegisterFlagEffect(63468625,RESET_EVENT+0x1fe0000,0,1) - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c63468625.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c63468625.dcfilter(c) - return c:GetFlagEffect(63468625)~=0 and c:IsAbleToGraveAsCost() -end -function c63468625.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(c63468625.dcfilter,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,c63468625.dcfilter,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local atk=g:GetFirst():GetTextAttack() - if atk<0 then atk=0 end - e:SetLabel(atk) -end -function c63468625.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(e:GetLabel()) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) -end -function c63468625.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--機皇神マシニクル∞ +function c63468625.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(0) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c63468625.spcon) + e2:SetOperation(c63468625.spop) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(63468625,0)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c63468625.eqtg) + e3:SetOperation(c63468625.eqop) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(63468625,1)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCondition(c63468625.damcon) + e4:SetCost(c63468625.damcost) + e4:SetTarget(c63468625.damtg) + e4:SetOperation(c63468625.damop) + c:RegisterEffect(e4) +end +function c63468625.spfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x13) and c:IsAbleToGraveAsCost() +end +function c63468625.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c63468625.spfilter,c:GetControler(),LOCATION_HAND,0,3,c) +end +function c63468625.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c63468625.spfilter,tp,LOCATION_HAND,0,3,3,c) + Duel.SendtoGrave(g,REASON_COST) +end +function c63468625.eqfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() +end +function c63468625.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c63468625.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c63468625.eqfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c63468625.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c63468625.eqlimit(e,c) + return e:GetOwner()==c and not c:IsDisabled() +end +function c63468625.eqop(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:IsType(TYPE_MONSTER) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c63468625.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(63468625,RESET_EVENT+0x1fe0000,0,1) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c63468625.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c63468625.dcfilter(c) + return c:GetFlagEffect(63468625)~=0 and c:IsAbleToGraveAsCost() +end +function c63468625.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(c63468625.dcfilter,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,c63468625.dcfilter,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local atk=g:GetFirst():GetTextAttack() + if atk<0 then atk=0 end + e:SetLabel(atk) +end +function c63468625.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c63468625.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c63519819.lua b/script/c63519819.lua index 696c906a..d0d7b967 100644 --- a/script/c63519819.lua +++ b/script/c63519819.lua @@ -25,6 +25,7 @@ function c63519819.initial_effect(c) c:RegisterEffect(e2) local e3=e2:Clone() e3:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) c:RegisterEffect(e3) --atk/def local e4=Effect.CreateEffect(c) diff --git a/script/c63545861.lua b/script/c63545861.lua index 8d5582a1..adc89e6e 100644 --- a/script/c63545861.lua +++ b/script/c63545861.lua @@ -1,29 +1,29 @@ ---セイクリッドの流星 -function c63545861.initial_effect(c) - -- - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c63545861.target) - e1:SetOperation(c63545861.regop) - c:RegisterEffect(e1) -end -function c63545861.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end -end -function c63545861.regop(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_DAMAGE_STEP_END) - e1:SetOperation(c63545861.retop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c63545861.retop(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - local g=Group.CreateGroup() - if a:IsSetCard(0x53) and d and d:IsControler(1-tp) and d:IsRelateToBattle() then g:AddCard(d) end - if d and d:IsSetCard(0x53) and a:IsControler(1-tp) and a:IsRelateToBattle() then g:AddCard(a) end - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) -end +--セイクリッドの流星 +function c63545861.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c63545861.target) + e1:SetOperation(c63545861.regop) + c:RegisterEffect(e1) +end +function c63545861.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end +end +function c63545861.regop(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_DAMAGE_STEP_END) + e1:SetOperation(c63545861.retop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c63545861.retop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local g=Group.CreateGroup() + if a:IsSetCard(0x53) and d and d:IsControler(1-tp) and d:IsRelateToBattle() then g:AddCard(d) end + if d and d:IsSetCard(0x53) and a:IsControler(1-tp) and a:IsRelateToBattle() then g:AddCard(a) end + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c63571750.lua b/script/c63571750.lua index f2c05a3e..6ff7c0ae 100644 --- a/script/c63571750.lua +++ b/script/c63571750.lua @@ -44,8 +44,8 @@ function c63571750.thop(e,tp,eg,ep,ev,re,r,rp) if c:IsRelateToEffect(e) then Duel.SendtoGrave(c,REASON_EFFECT) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_GRAVE,0,1,1,c) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(Card.IsAbleToHand),tp,LOCATION_GRAVE,0,1,1,c) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c63583431.lua b/script/c63583431.lua index 0959d5c0..fc9d9f53 100644 --- a/script/c63583431.lua +++ b/script/c63583431.lua @@ -1,65 +1,65 @@ ---ゴゴゴ護符 -function c63583431.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --reduce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CHANGE_DAMAGE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(1,0) - e2:SetCondition(c63583431.damcon) - e2:SetValue(c63583431.damval) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_NO_EFFECT_DAMAGE) - c:RegisterEffect(e3) - --indes - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(63583431,0)) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EVENT_ATTACK_ANNOUNCE) - e4:SetHintTiming(TIMING_BATTLE_PHASE) - e4:SetCountLimit(1) - e4:SetCondition(c63583431.indcon) - e4:SetTarget(c63583431.indtg) - e4:SetOperation(c63583431.indop) - c:RegisterEffect(e4) -end -function c63583431.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x59) -end -function c63583431.damcon(e) - return Duel.IsExistingMatchingCard(c63583431.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,2,nil) -end -function c63583431.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 end - return val -end -function c63583431.indcon(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttacker() - if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end - e:SetLabelObject(tc) - return tc and tc:IsFaceup() and tc:IsControler(tp) and tc:IsSetCard(0x59) -end -function c63583431.indtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetCard(e:GetLabelObject()) -end -function c63583431.indop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - tc:RegisterEffect(e1) - end -end +--ゴゴゴ護符 +function c63583431.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --reduce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,0) + e2:SetCondition(c63583431.damcon) + e2:SetValue(c63583431.damval) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_NO_EFFECT_DAMAGE) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(63583431,0)) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetHintTiming(TIMING_BATTLE_PHASE) + e4:SetCountLimit(1) + e4:SetCondition(c63583431.indcon) + e4:SetTarget(c63583431.indtg) + e4:SetOperation(c63583431.indop) + c:RegisterEffect(e4) +end +function c63583431.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x59) +end +function c63583431.damcon(e) + return Duel.IsExistingMatchingCard(c63583431.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,2,nil) +end +function c63583431.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 end + return val +end +function c63583431.indcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + e:SetLabelObject(tc) + return tc and tc:IsFaceup() and tc:IsControler(tp) and tc:IsSetCard(0x59) +end +function c63583431.indtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(e:GetLabelObject()) +end +function c63583431.indop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + end +end diff --git a/script/c63630268.lua b/script/c63630268.lua index 259fba27..18f5e5bd 100644 --- a/script/c63630268.lua +++ b/script/c63630268.lua @@ -1,37 +1,37 @@ ---幻蝶の護り -function c63630268.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c63630268.target) - e1:SetOperation(c63630268.operation) - c:RegisterEffect(e1) -end -function c63630268.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsPosition(POS_FACEUP_ATTACK) end - if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) -end -function c63630268.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_ATTACK) then - Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) - end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - 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(c63630268.damval) - e1:SetReset(RESET_PHASE+PHASE_END,1) - Duel.RegisterEffect(e1,tp) - end -end -function c63630268.damval(e,re,val,r,rp,rc) - return val/2 -end +--幻蝶の護り +function c63630268.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c63630268.target) + e1:SetOperation(c63630268.operation) + c:RegisterEffect(e1) +end +function c63630268.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) +end +function c63630268.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + 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(c63630268.damval) + e1:SetReset(RESET_PHASE+PHASE_END,1) + Duel.RegisterEffect(e1,tp) + end +end +function c63630268.damval(e,re,val,r,rp,rc) + return val/2 +end diff --git a/script/c63676256.lua b/script/c63676256.lua index c21c1129..93dcbe0f 100644 --- a/script/c63676256.lua +++ b/script/c63676256.lua @@ -16,7 +16,7 @@ function c63676256.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c63676256.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c63676256.sptg) e2:SetOperation(c63676256.spop) c:RegisterEffect(e2) @@ -25,7 +25,7 @@ function c63676256.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetCondition(c63676256.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetValue(1) c:RegisterEffect(e3) --eqlimit @@ -39,7 +39,7 @@ function c63676256.initial_effect(c) local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_EQUIP) e5:SetCode(EFFECT_UPDATE_ATTACK) - e5:SetCondition(c63676256.uncon) + e5:SetCondition(aux.IsUnionState) e5:SetValue(-500) c:RegisterEffect(e5) local e6=e5:Clone() @@ -57,9 +57,7 @@ function c63676256.initial_effect(c) e7:SetOperation(c63676256.desop) c:RegisterEffect(e7) end -function c63676256.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c63676256.old_union=true function c63676256.filter(c) return c:IsFaceup() and c:GetUnionCount()==0 end @@ -81,7 +79,7 @@ function c63676256.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c63676256.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(63676256)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -98,7 +96,7 @@ function c63676256.spop(e,tp,eg,ep,ev,re,r,rp) end end function c63676256.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and eg:GetCount()==1 and eg:GetFirst()==e:GetHandler():GetEquipTarget() + return aux.IsUnionState(e) and eg:GetCount()==1 and eg:GetFirst()==e:GetHandler():GetEquipTarget() end function c63676256.dfilter(c,rac) return c:IsFaceup() and c:IsRace(rac) diff --git a/script/c63730624.lua b/script/c63730624.lua index 33f728f8..1a6caee3 100644 --- a/script/c63730624.lua +++ b/script/c63730624.lua @@ -1,117 +1,87 @@ ---ダブルツールD&C -function c63730624.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(c63730624.target) - e1:SetOperation(c63730624.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(c63730624.eqlimit) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetCondition(c63730624.scon1) - e3:SetValue(1000) - c:RegisterEffect(e3) - --disable - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EVENT_BE_BATTLE_TARGET) - e4:SetCondition(c63730624.scon2) - e4:SetOperation(c63730624.sop2) - c:RegisterEffect(e4) - --atk - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e5:SetRange(LOCATION_SZONE) - e5:SetTargetRange(0,LOCATION_MZONE) - e5:SetCondition(c63730624.ocon1) - e5:SetValue(c63730624.atlimit) - c:RegisterEffect(e5) - --destroy - local e6=Effect.CreateEffect(c) - e6:SetCategory(CATEGORY_DESTROY) - e6:SetDescription(aux.Stringid(63730624,0)) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_DAMAGE_STEP_END) - e6:SetRange(LOCATION_SZONE) - e6:SetCondition(c63730624.ocon2) - e6:SetTarget(c63730624.otg2) - e6:SetOperation(c63730624.oop2) - c:RegisterEffect(e6) -end -function c63730624.eqlimit(e,c) - return c:GetControler()==e:GetHandler():GetControler() - and (c:IsCode(2403771) or (c:IsSetCard(0x26) and c:GetLevel()>=4 and c:IsRace(RACE_MACHINE))) -end -function c63730624.filter(c,tp) - return c:IsControler(tp) and c:IsFaceup() - and (c:IsCode(2403771) or (c:IsSetCard(0x26) and c:GetLevel()>=4 and c:IsRace(RACE_MACHINE))) -end -function c63730624.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c63730624.filter(chkc,tp) end - if chk==0 then return Duel.IsExistingTarget(c63730624.filter,tp,LOCATION_MZONE,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c63730624.filter,tp,LOCATION_MZONE,0,1,1,nil,tp) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c63730624.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:IsControler(tp) and tc:IsFaceup() then - Duel.Equip(tp,c,tc) - end -end -function c63730624.scon1(e) - return e:GetHandler():GetEquipTarget() and Duel.GetTurnPlayer()==e:GetHandler():GetControler() -end -function c63730624.scon2(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and Duel.GetAttacker()==e:GetHandler():GetEquipTarget() -end -function c63730624.sop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local d=Duel.GetAttackTarget() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - d:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - d:RegisterEffect(e2,true) -end -function c63730624.ocon1(e) - return Duel.GetTurnPlayer()~=e:GetHandler():GetControler() -end -function c63730624.atlimit(e,c) - return c~=e:GetHandler():GetEquipTarget() -end -function c63730624.ocon2(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return Duel.GetTurnPlayer()~=tp and d==e:GetHandler():GetEquipTarget() and a:IsRelateToBattle() -end -function c63730624.otg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttacker(),1,0,0) -end -function c63730624.oop2(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - if a:IsRelateToBattle() then - Duel.Destroy(a,REASON_EFFECT) - end -end +--ダブルツールD&C +function c63730624.initial_effect(c) + aux.AddEquipProcedure(c,0,c63730624.filter,c63730624.eqlimit) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetCondition(c63730624.scon1) + e3:SetValue(1000) + c:RegisterEffect(e3) + --disable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_BE_BATTLE_TARGET) + e4:SetCondition(c63730624.scon2) + e4:SetOperation(c63730624.sop2) + c:RegisterEffect(e4) + --atk + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(0,LOCATION_MZONE) + e5:SetCondition(c63730624.ocon1) + e5:SetValue(c63730624.atlimit) + c:RegisterEffect(e5) + --destroy + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DESTROY) + e6:SetDescription(aux.Stringid(63730624,0)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_DAMAGE_STEP_END) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c63730624.ocon2) + e6:SetTarget(c63730624.otg2) + e6:SetOperation(c63730624.oop2) + c:RegisterEffect(e6) +end +function c63730624.eqlimit(e,c) + return c:GetControler()==e:GetHandler():GetControler() + and (c:IsCode(2403771) or (c:IsSetCard(0x26) and c:GetLevel()>=4 and c:IsRace(RACE_MACHINE))) +end +function c63730624.filter(c) + return c:IsCode(2403771) or (c:IsSetCard(0x26) and c:GetLevel()>=4 and c:IsRace(RACE_MACHINE)) +end +function c63730624.scon1(e) + return e:GetHandler():GetEquipTarget() and Duel.GetTurnPlayer()==e:GetHandler():GetControler() +end +function c63730624.scon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetAttacker()==e:GetHandler():GetEquipTarget() +end +function c63730624.sop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local d=Duel.GetAttackTarget() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + d:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + d:RegisterEffect(e2,true) +end +function c63730624.ocon1(e) + return Duel.GetTurnPlayer()~=e:GetHandler():GetControler() +end +function c63730624.atlimit(e,c) + return c~=e:GetHandler():GetEquipTarget() +end +function c63730624.ocon2(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return Duel.GetTurnPlayer()~=tp and d==e:GetHandler():GetEquipTarget() and a:IsRelateToBattle() +end +function c63730624.otg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttacker(),1,0,0) +end +function c63730624.oop2(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if a:IsRelateToBattle() then + Duel.Destroy(a,REASON_EFFECT) + end +end diff --git a/script/c63746411.lua b/script/c63746411.lua index 5945aa73..4a87bda5 100644 --- a/script/c63746411.lua +++ b/script/c63746411.lua @@ -6,7 +6,7 @@ function c63746411.initial_effect(c) --negate local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(63746411,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_CHAINING) e1:SetRange(LOCATION_MZONE) diff --git a/script/c63767246.lua b/script/c63767246.lua index 44715bc6..09f77f0b 100644 --- a/script/c63767246.lua +++ b/script/c63767246.lua @@ -20,6 +20,7 @@ function c63767246.initial_effect(c) e2:SetDescription(aux.Stringid(63767246,1)) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c63767246.cbcon) e2:SetCost(c63767246.cbcost) @@ -48,10 +49,9 @@ function c63767246.distg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) end function c63767246.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) local c=e:GetHandler() local rc=re:GetHandler() - if c:IsRelateToEffect(e) and rc:IsRelateToEffect(re) and c:IsType(TYPE_XYZ) then + if Duel.NegateEffect(ev) and c:IsRelateToEffect(e) and rc:IsRelateToEffect(re) and c:IsType(TYPE_XYZ) then rc:CancelToGrave() Duel.Overlay(c,Group.FromCards(rc)) end @@ -73,7 +73,7 @@ function c63767246.cbop(e,tp,eg,ep,ev,re,r,rp) end end function c63767246.atkfilter1(c,tp) - return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsType(TYPE_XYZ) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsType(TYPE_XYZ) and c:GetBaseAttack()>0 and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp end function c63767246.atkcon(e,tp,eg,ep,ev,re,r,rp) @@ -84,7 +84,8 @@ function c63767246.atkfilter2(c) end function c63767246.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c63767246.atkfilter2(chkc) end - if chk==0 then return Duel.IsExistingTarget(c63767246.atkfilter2,tp,LOCATION_MZONE,0,1,nil) end + if chk==0 then return eg:IsExists(c63767246.atkfilter1,1,nil,tp) + and Duel.IsExistingTarget(c63767246.atkfilter2,tp,LOCATION_MZONE,0,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) Duel.SelectTarget(tp,c63767246.atkfilter2,tp,LOCATION_MZONE,0,1,1,nil) end diff --git a/script/c63789924.lua b/script/c63789924.lua index 1d9bf604..0d21c338 100644 --- a/script/c63789924.lua +++ b/script/c63789924.lua @@ -1,21 +1,6 @@ --盗人の煙玉 function c63789924.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(c63789924.target) - e1:SetOperation(c63789924.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) + aux.AddEquipProcedure(c) --Check & Discard local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(63789924,0)) @@ -28,19 +13,6 @@ function c63789924.initial_effect(c) e3:SetOperation(c63789924.disop) c:RegisterEffect(e3) end -function c63789924.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 c63789924.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 c63789924.discon(e,tp,eg,ep,ev,re,r,rp) return bit.band(r,0x41)==0x41 and e:GetHandler():GetEquipTarget()~=nil and e:GetHandler():IsLocation(LOCATION_GRAVE) end diff --git a/script/c63806265.lua b/script/c63806265.lua index c64a8096..47eae9cb 100644 --- a/script/c63806265.lua +++ b/script/c63806265.lua @@ -1,37 +1,37 @@ ---虹の引力 -function c63806265.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetCondition(c63806265.condition) - e1:SetTarget(c63806265.target) - e1:SetOperation(c63806265.activate) - c:RegisterEffect(e1) -end -function c63806265.cfilter(c) - return c:IsSetCard(0x1034) and (not c:IsOnField() or c:IsFaceup()) -end -function c63806265.condition(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c63806265.cfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) - local ct=g:GetClassCount(Card.GetCode) - return ct>6 -end -function c63806265.filter(c,e,tp) - return c:IsSetCard(0x2034) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c63806265.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c63806265.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_GRAVE) -end -function c63806265.activate(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,c63806265.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) - end -end +--虹の引力 +function c63806265.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c63806265.condition) + e1:SetTarget(c63806265.target) + e1:SetOperation(c63806265.activate) + c:RegisterEffect(e1) +end +function c63806265.cfilter(c) + return c:IsSetCard(0x1034) and (not c:IsOnField() or c:IsFaceup()) +end +function c63806265.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c63806265.cfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) + local ct=g:GetClassCount(Card.GetCode) + return ct>6 +end +function c63806265.filter(c,e,tp) + return c:IsSetCard(0x2034) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c63806265.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c63806265.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_GRAVE) +end +function c63806265.activate(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,aux.NecroValleyFilter(c63806265.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c63821877.lua b/script/c63821877.lua index 0fbcdf2b..3ef0f535 100644 --- a/script/c63821877.lua +++ b/script/c63821877.lua @@ -1,81 +1,81 @@ ---幻影騎士団ラギッドグローブ -function c63821877.initial_effect(c) - --effect gain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_BE_MATERIAL) - e1:SetCondition(c63821877.efcon) - e1:SetOperation(c63821877.efop) - c:RegisterEffect(e1) - --to grave - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(63821877,1)) - e2:SetCategory(CATEGORY_TOGRAVE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,63821877) - e2:SetCost(c63821877.tgcost) - e2:SetTarget(c63821877.tgtg) - e2:SetOperation(c63821877.tgop) - c:RegisterEffect(e2) -end -function c63821877.efcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return r==REASON_XYZ and c:GetReasonCard():IsAttribute(ATTRIBUTE_DARK) -end -function c63821877.efop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local rc=c:GetReasonCard() - local p=rc:GetControler() - if Duel.GetFlagEffect(p,63821877)~=0 then return end - local e1=Effect.CreateEffect(rc) - e1:SetDescription(aux.Stringid(63821877,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c63821877.atkcon) - e1:SetOperation(c63821877.atkop) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - if not rc:IsType(TYPE_EFFECT) then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ADD_TYPE) - e2:SetValue(TYPE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e2,true) - end - Duel.RegisterFlagEffect(p,63821877,RESET_PHASE+PHASE_END,0,1) -end -function c63821877.atkcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ -end -function c63821877.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end -function c63821877.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c63821877.tgfilter(c) - return (c:IsSetCard(0x10db) or (c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP))) and c:IsAbleToGrave() -end -function c63821877.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c63821877.tgfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c63821877.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c63821877.tgfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end +--幻影騎士団ラギッドグローブ +function c63821877.initial_effect(c) + --effect gain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c63821877.efcon) + e1:SetOperation(c63821877.efop) + c:RegisterEffect(e1) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(63821877,1)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,63821877) + e2:SetCost(c63821877.tgcost) + e2:SetTarget(c63821877.tgtg) + e2:SetOperation(c63821877.tgop) + c:RegisterEffect(e2) +end +function c63821877.efcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return r==REASON_XYZ and c:GetReasonCard():IsAttribute(ATTRIBUTE_DARK) +end +function c63821877.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local p=rc:GetControler() + if Duel.GetFlagEffect(p,63821877)~=0 then return end + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(63821877,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c63821877.atkcon) + e1:SetOperation(c63821877.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end + Duel.RegisterFlagEffect(p,63821877,RESET_PHASE+PHASE_END,0,1) +end +function c63821877.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c63821877.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c63821877.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c63821877.tgfilter(c) + return (c:IsSetCard(0x10db) or (c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP))) and c:IsAbleToGrave() +end +function c63821877.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c63821877.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c63821877.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c63821877.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c63845230.lua b/script/c63845230.lua new file mode 100644 index 00000000..9a4a55b4 --- /dev/null +++ b/script/c63845230.lua @@ -0,0 +1,102 @@ +--百万喰らいのグラットン +function c63845230.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c63845230.spcon) + e2:SetOperation(c63845230.spop) + c:RegisterEffect(e2) + --atk/def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c63845230.val) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) + --cannot release + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_UNRELEASABLE_SUM) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e6) + local e7=e5:Clone() + e7:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + c:RegisterEffect(e7) + local e8=e5:Clone() + e8:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e8) + local e9=e5:Clone() + e9:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e9) + --remove + local ea=Effect.CreateEffect(c) + ea:SetDescription(aux.Stringid(63845230,0)) + ea:SetCategory(CATEGORY_REMOVE) + ea:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + ea:SetCode(EVENT_BATTLE_START) + ea:SetCountLimit(1) + ea:SetTarget(c63845230.rmtg) + ea:SetOperation(c63845230.rmop) + c:RegisterEffect(ea) +end +function c63845230.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + local g=Duel.GetMatchingGroup(Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_EXTRA,0,c) + return g:GetCount()>=5 and (ft>0 or g:IsExists(Card.IsLocation,ct,nil,LOCATION_MZONE)) +end +function c63845230.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + local g=Duel.GetMatchingGroup(Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_EXTRA,0,c) + local rg=nil + if ft<=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + rg=g:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) + if ct<5 then + g:Sub(rg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=g:Select(tp,5-ct,99-ct,nil) + rg:Merge(g1) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + rg=g:Select(tp,5,99,nil) + end + Duel.Remove(rg,POS_FACEDOWN,REASON_COST) +end +function c63845230.val(e,c) + return Duel.GetMatchingGroupCount(Card.IsFacedown,0,LOCATION_REMOVED,LOCATION_REMOVED,nil)*100 +end +function c63845230.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetHandler():GetBattleTarget() + if chk==0 then return tc and tc:IsControler(1-tp) and tc:IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,tc,1,0,0) +end +function c63845230.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + if tc:IsRelateToBattle() then + Duel.Remove(tc,POS_FACEDOWN,REASON_EFFECT) + end +end diff --git a/script/c63851864.lua b/script/c63851864.lua index c134c3da..6bbe32f8 100644 --- a/script/c63851864.lua +++ b/script/c63851864.lua @@ -1,21 +1,6 @@ --ブレイク・ドロー function c63851864.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(c63851864.target) - e1:SetOperation(c63851864.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(c63851864.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),nil,nil,c63851864.target) --draw local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(63851864,0)) @@ -29,19 +14,8 @@ function c63851864.initial_effect(c) e3:SetOperation(c63851864.drop) c:RegisterEffect(e3) end -function c63851864.eqlimit(e,c) - return c:IsRace(RACE_MACHINE) -end -function c63851864.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) -end -function c63851864.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c63851864.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c63851864.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +function c63851864.target(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c63851864.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,c,1,0,0) --destroy local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -55,13 +29,6 @@ function c63851864.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) c:SetTurnCounter(0) c:RegisterEffect(e1) end -function c63851864.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 c63851864.descon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp end diff --git a/script/c6387204.lua b/script/c6387204.lua index 4bdf2041..3371b4b1 100644 --- a/script/c6387204.lua +++ b/script/c6387204.lua @@ -18,6 +18,7 @@ function c6387204.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(6387204,1)) e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c6387204.lpcon) e2:SetCost(c6387204.lpcost) diff --git a/script/c63881033.lua b/script/c63881033.lua index 52165b4b..8c698da3 100644 --- a/script/c63881033.lua +++ b/script/c63881033.lua @@ -1,123 +1,123 @@ ---マーシャリング・フィールド -function c63881033.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c63881033.lvtg1) - e1:SetOperation(c63881033.lvop) - c:RegisterEffect(e1) - --disable spsummon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,0) - e2:SetTarget(c63881033.splimit) - c:RegisterEffect(e2) - --lv change - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(63881033,0)) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetTarget(c63881033.lvtg2) - e3:SetOperation(c63881033.lvop) - c:RegisterEffect(e3) - --destroy replace - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_DESTROY_REPLACE) - e4:SetRange(LOCATION_SZONE) - e4:SetTarget(c63881033.reptg) - e4:SetValue(c63881033.repval) - e4:SetOperation(c63881033.repop) - c:RegisterEffect(e4) - --tohand - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(63881033,3)) - e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e5:SetCode(EVENT_TO_GRAVE) - e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e5:SetCondition(c63881033.thcon) - e5:SetTarget(c63881033.thtg) - e5:SetOperation(c63881033.thop) - c:RegisterEffect(e5) -end -function c63881033.lvtg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - if Duel.IsExistingMatchingCard(c63881033.filter,tp,LOCATION_MZONE,0,1,nil) - and Duel.SelectYesNo(tp,94) then - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(63881033,1)) - local lv=Duel.AnnounceNumber(tp,5,6,7,8,9) - e:SetLabel(lv) - e:GetHandler():RegisterFlagEffect(63881033,RESET_PHASE+PHASE_END,0,1) - else - e:SetLabel(0) - end -end -function c63881033.splimit(e,c) - return c:GetRace()~=RACE_MACHINE -end -function c63881033.filter(c) - return c:IsFaceup() and c:IsLevelAbove(5) and c:IsRace(RACE_MACHINE) -end -function c63881033.lvtg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(63881033)==0 - and Duel.IsExistingMatchingCard(c63881033.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(63881033,1)) - local lv=Duel.AnnounceNumber(tp,5,6,7,8,9) - e:SetLabel(lv) - e:GetHandler():RegisterFlagEffect(63881033,RESET_PHASE+PHASE_END,0,1) -end -function c63881033.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if e:GetLabel()==0 then return end - local g=Duel.GetMatchingGroup(c63881033.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL_FINAL) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end -function c63881033.repfilter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) - and c:IsType(TYPE_XYZ) and c:IsRace(RACE_MACHINE) and not c:IsReason(REASON_REPLACE) -end -function c63881033.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c63881033.repfilter,1,nil,tp) end - return Duel.SelectYesNo(tp,aux.Stringid(63881033,2)) -end -function c63881033.repval(e,c) - return c63881033.repfilter(c,e:GetHandlerPlayer()) -end -function c63881033.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) -end -function c63881033.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c63881033.thfilter(c) - return c:IsCode(94220427) and c:IsAbleToHand() -end -function c63881033.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c63881033.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c63881033.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c63881033.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--マーシャリング・フィールド +function c63881033.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c63881033.lvtg1) + e1:SetOperation(c63881033.lvop) + c:RegisterEffect(e1) + --disable spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetTarget(c63881033.splimit) + c:RegisterEffect(e2) + --lv change + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(63881033,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetTarget(c63881033.lvtg2) + e3:SetOperation(c63881033.lvop) + c:RegisterEffect(e3) + --destroy replace + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DESTROY_REPLACE) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c63881033.reptg) + e4:SetValue(c63881033.repval) + e4:SetOperation(c63881033.repop) + c:RegisterEffect(e4) + --tohand + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(63881033,3)) + e5:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_TO_GRAVE) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e5:SetCondition(c63881033.thcon) + e5:SetTarget(c63881033.thtg) + e5:SetOperation(c63881033.thop) + c:RegisterEffect(e5) +end +function c63881033.lvtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.IsExistingMatchingCard(c63881033.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.SelectYesNo(tp,94) then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(63881033,1)) + local lv=Duel.AnnounceNumber(tp,5,6,7,8,9) + e:SetLabel(lv) + e:GetHandler():RegisterFlagEffect(63881033,RESET_PHASE+PHASE_END,0,1) + else + e:SetLabel(0) + end +end +function c63881033.splimit(e,c) + return c:GetRace()~=RACE_MACHINE +end +function c63881033.filter(c) + return c:IsFaceup() and c:IsLevelAbove(5) and c:IsRace(RACE_MACHINE) +end +function c63881033.lvtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(63881033)==0 + and Duel.IsExistingMatchingCard(c63881033.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(63881033,1)) + local lv=Duel.AnnounceNumber(tp,5,6,7,8,9) + e:SetLabel(lv) + e:GetHandler():RegisterFlagEffect(63881033,RESET_PHASE+PHASE_END,0,1) +end +function c63881033.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if e:GetLabel()==0 then return end + local g=Duel.GetMatchingGroup(c63881033.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL_FINAL) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c63881033.repfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) + and c:IsType(TYPE_XYZ) and c:IsRace(RACE_MACHINE) and not c:IsReason(REASON_REPLACE) +end +function c63881033.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c63881033.repfilter,1,nil,tp) end + return Duel.SelectYesNo(tp,aux.Stringid(63881033,2)) +end +function c63881033.repval(e,c) + return c63881033.repfilter(c,e:GetHandlerPlayer()) +end +function c63881033.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end +function c63881033.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c63881033.thfilter(c) + return c:IsCode(94220427) and c:IsAbleToHand() +end +function c63881033.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c63881033.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c63881033.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c63881033.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c63883999.lua b/script/c63883999.lua index 9e8d6475..bae04158 100644 --- a/script/c63883999.lua +++ b/script/c63883999.lua @@ -1,63 +1,62 @@ ---伏魔殿-悪魔の迷宮- -function c63883999.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FIEND)) - e2:SetValue(500) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(63883999,0)) - e3:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_FZONE) - e3:SetCountLimit(1,63883999) - e3:SetTarget(c63883999.target) - e3:SetOperation(c63883999.operation) - c:RegisterEffect(e3) -end -function c63883999.filter(c,e,tp) - local lv=c:GetLevel() - return lv>0 and c:IsFaceup() and c:IsSetCard(0x45) - and Duel.IsExistingMatchingCard(c63883999.rfilter,tp,LOCATION_MZONE,0,1,c) - and Duel.IsExistingMatchingCard(c63883999.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,1,nil,lv,e,tp) -end -function c63883999.rfilter(c) - return c:IsFaceup() and c:IsRace(RACE_FIEND) and c:IsAbleToRemove() -end -function c63883999.spfilter(c,lv,e,tp) - return c:IsSetCard(0x45) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and not c:IsHasEffect(EFFECT_NECRO_VALLEY) -end -function c63883999.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c63883999.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c63883999.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c63883999.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_MZONE) -end -function c63883999.operation(e,tp,eg,ep,ev,re,r,rp,chk) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local rg=Duel.SelectMatchingCard(tp,c63883999.rfilter,tp,LOCATION_MZONE,0,1,1,tc) - if rg:GetCount()>0 and Duel.Remove(rg,POS_FACEUP,REASON_EFFECT)>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c63883999.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil,tc:GetLevel(),e,tp) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - end - end -end +--伏魔殿-悪魔の迷宮- +function c63883999.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FIEND)) + e2:SetValue(500) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(63883999,0)) + e3:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_FZONE) + e3:SetCountLimit(1,63883999) + e3:SetTarget(c63883999.target) + e3:SetOperation(c63883999.operation) + c:RegisterEffect(e3) +end +function c63883999.filter(c,e,tp) + local lv=c:GetLevel() + return lv>0 and c:IsFaceup() and c:IsSetCard(0x45) + and Duel.IsExistingMatchingCard(c63883999.rfilter,tp,LOCATION_MZONE,0,1,c) + and Duel.IsExistingMatchingCard(c63883999.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,1,nil,lv,e,tp) +end +function c63883999.rfilter(c) + return c:IsFaceup() and c:IsRace(RACE_FIEND) and c:IsAbleToRemove() +end +function c63883999.spfilter(c,lv,e,tp) + return c:IsSetCard(0x45) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c63883999.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c63883999.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c63883999.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c63883999.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_MZONE) +end +function c63883999.operation(e,tp,eg,ep,ev,re,r,rp,chk) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c63883999.rfilter,tp,LOCATION_MZONE,0,1,1,tc) + if rg:GetCount()>0 and Duel.Remove(rg,POS_FACEUP,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c63883999.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil,tc:GetLevel(),e,tp) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c6390406.lua b/script/c6390406.lua index ecd478ac..bb0561cb 100644 --- a/script/c6390406.lua +++ b/script/c6390406.lua @@ -18,8 +18,8 @@ function c6390406.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c6390406.activate(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c6390406.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c6390406.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c63941210.lua b/script/c63941210.lua index 27e7f3b0..9df89d11 100644 --- a/script/c63941210.lua +++ b/script/c63941210.lua @@ -1,4 +1,4 @@ ---Jizukiru, the Star Destroying Kaiju +--壊星壊獣ジズキエル function c63941210.initial_effect(c) c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) --special summon rule @@ -67,9 +67,8 @@ function c63941210.distg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) end function c63941210.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) - local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(63941210,1)) then + local g=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) + if Duel.NegateEffect(ev) and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(63941210,1)) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) local tg=g:Select(tp,1,1,nil) Duel.HintSelection(tg) diff --git a/script/c64047146.lua b/script/c64047146.lua index 06884563..921ddf8a 100644 --- a/script/c64047146.lua +++ b/script/c64047146.lua @@ -1,14 +1,6 @@ --一角獣のホーン function c64047146.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(c64047146.target) - e1:SetOperation(c64047146.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -19,13 +11,6 @@ function c64047146.initial_effect(c) local e3=e2:Clone() e3:SetCode(EFFECT_UPDATE_DEFENSE) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) --to deck local e5=Effect.CreateEffect(c) e5:SetDescription(aux.Stringid(64047146,0)) @@ -38,20 +23,6 @@ function c64047146.initial_effect(c) e5:SetOperation(c64047146.tdop) c:RegisterEffect(e5) end -function c64047146.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 c64047146.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 c64047146.tdcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end diff --git a/script/c64063868.lua b/script/c64063868.lua index bcfeb73a..64e94a09 100644 --- a/script/c64063868.lua +++ b/script/c64063868.lua @@ -1,4 +1,4 @@ ---Kozmo Dark Eclipser +--Kozmo-ダークエクリプサー function c64063868.initial_effect(c) --cannot be targeted local e1=Effect.CreateEffect(c) diff --git a/script/c64160836.lua b/script/c64160836.lua index 6da4c9ef..da933996 100644 --- a/script/c64160836.lua +++ b/script/c64160836.lua @@ -1,42 +1,42 @@ ---エーリアン・キッズ -function c64160836.initial_effect(c) - --counter - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetOperation(c64160836.ctop) - c:RegisterEffect(e1) - --atk def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCondition(c64160836.adcon) - e2:SetTarget(c64160836.adtg) - e2:SetValue(c64160836.adval) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end -function c64160836.ctop(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - while tc do - if tc:IsFaceup() and tc:IsControler(1-tp) then - tc:AddCounter(0x100e,1) - end - tc=eg:GetNext() - end -end -function c64160836.adcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c64160836.adtg(e,c) - local bc=c:GetBattleTarget() - return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) -end -function c64160836.adval(e,c) - return c:GetCounter(0x100e)*-300 -end +--エーリアン・キッズ +function c64160836.initial_effect(c) + --counter + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetOperation(c64160836.ctop) + c:RegisterEffect(e1) + --atk def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCondition(c64160836.adcon) + e2:SetTarget(c64160836.adtg) + e2:SetValue(c64160836.adval) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end +function c64160836.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsFaceup() and tc:IsControler(1-tp) then + tc:AddCounter(0x100e,1) + end + tc=eg:GetNext() + end +end +function c64160836.adcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() +end +function c64160836.adtg(e,c) + local bc=c:GetBattleTarget() + return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) +end +function c64160836.adval(e,c) + return c:GetCounter(0x100e)*-300 +end diff --git a/script/c64163367.lua b/script/c64163367.lua index 7a651af1..9884d3b8 100644 --- a/script/c64163367.lua +++ b/script/c64163367.lua @@ -1,41 +1,41 @@ ---「A」細胞培養装置 -function c64163367.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter1 - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_REMOVE_COUNTER+0x100e) - e2:SetOperation(c64163367.ctop1) - c:RegisterEffect(e2) - --counter2 - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(64163367,0)) - e3:SetCategory(CATEGORY_COUNTER) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetCondition(c64163367.ctcon2) - e3:SetOperation(c64163367.ctop2) - c:RegisterEffect(e3) -end -function c64163367.ctop1(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(COUNTER_NEED_ENABLE+0x100e,1) -end -function c64163367.ctcon2(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetHandler():GetCounter(0x100e) - e:SetLabel(ct) - return e:GetHandler():IsReason(REASON_DESTROY) and ct>0 -end -function c64163367.ctop2(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetLabel() - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()==0 then return end - for i=1,ct do - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(64163367,1)) - local sg=g:Select(tp,1,1,nil) - sg:GetFirst():AddCounter(0x100e,1) - end -end +--「A」細胞培養装置 +function c64163367.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter1 + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_REMOVE_COUNTER+0x100e) + e2:SetOperation(c64163367.ctop1) + c:RegisterEffect(e2) + --counter2 + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(64163367,0)) + e3:SetCategory(CATEGORY_COUNTER) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c64163367.ctcon2) + e3:SetOperation(c64163367.ctop2) + c:RegisterEffect(e3) +end +function c64163367.ctop1(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(COUNTER_NEED_ENABLE+0x100e,1) +end +function c64163367.ctcon2(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetHandler():GetCounter(0x100e) + e:SetLabel(ct) + return e:GetHandler():IsReason(REASON_DESTROY) and ct>0 +end +function c64163367.ctop2(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + for i=1,ct do + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(64163367,1)) + local sg=g:Select(tp,1,1,nil) + sg:GetFirst():AddCounter(0x100e,1) + end +end diff --git a/script/c6417578.lua b/script/c6417578.lua index 17128a2b..8edcbd93 100644 --- a/script/c6417578.lua +++ b/script/c6417578.lua @@ -1,71 +1,71 @@ ---神の写し身との接触 -function c6417578.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetCountLimit(1,6417578+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c6417578.target) - e1:SetOperation(c6417578.activate) - c:RegisterEffect(e1) -end -function c6417578.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c6417578.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9d) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c6417578.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c6417578.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c6417578.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c6417578.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c6417578.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c6417578.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c6417578.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--神の写し身との接触 +function c6417578.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCountLimit(1,6417578+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c6417578.target) + e1:SetOperation(c6417578.activate) + c:RegisterEffect(e1) +end +function c6417578.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c6417578.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9d) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c6417578.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c6417578.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c6417578.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c6417578.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c6417578.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c6417578.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c6417578.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c64184058.lua b/script/c64184058.lua index f7086937..95130498 100644 --- a/script/c64184058.lua +++ b/script/c64184058.lua @@ -24,6 +24,7 @@ function c64184058.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetCategory(CATEGORY_TOHAND) e4:SetType(EFFECT_TYPE_QUICK_F) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) e4:SetCode(EVENT_CHAINING) e4:SetRange(LOCATION_GRAVE) e4:SetCountLimit(1,64184059+EFFECT_COUNT_CODE_DUEL) @@ -55,8 +56,8 @@ end function c64184058.thop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_CARD,0,64184058) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectMatchingCard(tp,c64184058.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c64184058.thfilter),tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.HintSelection(g) Duel.SendtoHand(g,nil,REASON_EFFECT) end diff --git a/script/c64245689.lua b/script/c64245689.lua index 3bd0eabd..0dfb970a 100644 --- a/script/c64245689.lua +++ b/script/c64245689.lua @@ -7,6 +7,7 @@ function c64245689.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(64245689,0)) e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) @@ -18,7 +19,7 @@ function c64245689.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(64245689,1)) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) diff --git a/script/c64280356.lua b/script/c64280356.lua index 2820e591..edee7af4 100644 --- a/script/c64280356.lua +++ b/script/c64280356.lua @@ -1,4 +1,4 @@ ---Kozmo Tincan +--Kozmo-フェルブラン function c64280356.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) diff --git a/script/c64306248.lua b/script/c64306248.lua index 9f0a157f..51224273 100644 --- a/script/c64306248.lua +++ b/script/c64306248.lua @@ -1,23 +1,23 @@ ---髑髏顔・天道虫 -function c64306248.initial_effect(c) - --recover - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(64306248,0)) - e1:SetCategory(CATEGORY_RECOVER) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c64306248.target) - e1:SetOperation(c64306248.operation) - c:RegisterEffect(e1) -end -function c64306248.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) -end -function c64306248.operation(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end +--髑髏顔・天道虫 +function c64306248.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64306248,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c64306248.target) + e1:SetOperation(c64306248.operation) + c:RegisterEffect(e1) +end +function c64306248.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1000) +end +function c64306248.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c6430659.lua b/script/c6430659.lua index 696a33f6..80e994bb 100644 --- a/script/c6430659.lua +++ b/script/c6430659.lua @@ -1,55 +1,66 @@ ---ウィルスメール -function c6430659.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --direct attack - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(6430659,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCondition(c6430659.atcon) - e2:SetTarget(c6430659.attg) - e2:SetOperation(c6430659.atop) - c:RegisterEffect(e2) -end -function c6430659.atcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c6430659.filter(c) - return c:IsFaceup() and c:IsLevelBelow(4) and c:IsAttackable() and not c:IsHasEffect(EFFECT_DIRECT_ATTACK) -end -function c6430659.attg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c6430659.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c6430659.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c6430659.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c6430659.atop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_BATTLE) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetOperation(c6430659.tgop) - tc:RegisterEffect(e2) - end -end -function c6430659.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) -end +--ウィルスメール +function c6430659.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(6430659,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c6430659.atcon) + e2:SetTarget(c6430659.attg) + e2:SetOperation(c6430659.atop) + c:RegisterEffect(e2) +end +function c6430659.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c6430659.filter(c) + return c:IsFaceup() and c:IsLevelBelow(4) and c:IsAttackable() and not c:IsHasEffect(EFFECT_DIRECT_ATTACK) +end +function c6430659.attg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c6430659.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c6430659.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c6430659.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c6430659.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(6430659,RESET_EVENT+0x1fe0000,0,1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCountLimit(1) + e2:SetLabelObject(tc) + e2:SetCondition(c6430659.tgcon) + e2:SetOperation(c6430659.tgop) + Duel.RegisterEffect(e2,tp) + end +end +function c6430659.tgcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(6430659)~=0 then + return true + else + e:Reset() + return false + end +end +function c6430659.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SendtoGrave(tc,REASON_EFFECT) +end diff --git a/script/c64332231.lua b/script/c64332231.lua index 78e7d7b5..61402f2e 100644 --- a/script/c64332231.lua +++ b/script/c64332231.lua @@ -7,6 +7,7 @@ function c64332231.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(64332231,0)) e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c64389297.lua b/script/c64389297.lua index 90b38400..e9c0464f 100644 --- a/script/c64389297.lua +++ b/script/c64389297.lua @@ -1,21 +1,6 @@ --迷宮変化 function c64389297.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(c64389297.target) - e1:SetOperation(c64389297.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(c64389297.eqfilter) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,67284908)) --spsummon local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(64389297,0)) @@ -29,25 +14,6 @@ function c64389297.initial_effect(c) e3:SetOperation(c64389297.spop) c:RegisterEffect(e3) end -function c64389297.eqfilter(e,c) - return c:IsCode(67284908) -end -function c64389297.filter(c) - return c:IsFaceup() and c:IsCode(67284908) -end -function c64389297.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c64389297.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c64389297.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c64389297.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c64389297.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 c64389297.spcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():GetEquipTarget():GetControler()==tp end diff --git a/script/c64414267.lua b/script/c64414267.lua index e950f65a..5685f671 100644 --- a/script/c64414267.lua +++ b/script/c64414267.lua @@ -15,6 +15,7 @@ function c64414267.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(64414267,0)) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c64414267.spcon1) diff --git a/script/c6442944.lua b/script/c6442944.lua index 09af8c3e..4348341a 100644 --- a/script/c6442944.lua +++ b/script/c6442944.lua @@ -47,9 +47,9 @@ end function c6442944.spop(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,c6442944.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c6442944.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SET_ATTACK_FINAL) diff --git a/script/c64463828.lua b/script/c64463828.lua index b301d264..f4dfce2d 100644 --- a/script/c64463828.lua +++ b/script/c64463828.lua @@ -2,7 +2,7 @@ function c64463828.initial_effect(c) --fusion material c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsType,TYPE_DUAL),2,false) + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionType,TYPE_DUAL),2,false) --duel status local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) diff --git a/script/c64496451.lua b/script/c64496451.lua index 07eb0c3f..0bf33bc4 100644 --- a/script/c64496451.lua +++ b/script/c64496451.lua @@ -1,182 +1,181 @@ ---クリフォート・ディスク -function c64496451.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(1,0) - e2:SetTarget(c64496451.splimit) - c:RegisterEffect(e2) - --atk up - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_PZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) - e3:SetValue(300) - c:RegisterEffect(e3) - --summon with no tribute - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(64496451,0)) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EFFECT_SUMMON_PROC) - e4:SetCondition(c64496451.ntcon) - c:RegisterEffect(e4) - --change level - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_SUMMON_COST) - e5:SetOperation(c64496451.lvop) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_SPSUMMON_COST) - e6:SetOperation(c64496451.lvop2) - c:RegisterEffect(e6) - --immune - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetCode(EFFECT_IMMUNE_EFFECT) - e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) - e7:SetRange(LOCATION_MZONE) - e7:SetCondition(c64496451.immcon) - e7:SetValue(aux.qlifilter) - c:RegisterEffect(e7) - --summon success - local e8=Effect.CreateEffect(c) - e8:SetDescription(aux.Stringid(64496451,1)) - e8:SetCategory(CATEGORY_SPECIAL_SUMMON) - e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e8:SetCode(EVENT_SUMMON_SUCCESS) - e8:SetCondition(c64496451.spcon) - e8:SetTarget(c64496451.sptg) - e8:SetOperation(c64496451.spop) - c:RegisterEffect(e8) - --tribute check - local e9=Effect.CreateEffect(c) - e9:SetType(EFFECT_TYPE_SINGLE) - e9:SetCode(EFFECT_MATERIAL_CHECK) - e9:SetValue(c64496451.valcheck) - e9:SetLabelObject(e8) - c:RegisterEffect(e9) -end -function c64496451.splimit(e,c) - return not c:IsSetCard(0xaa) -end -function c64496451.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c64496451.lvcon(e) - return e:GetHandler():GetMaterialCount()==0 -end -function c64496451.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c64496451.lvcon) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c64496451.lvcon) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c64496451.lvop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c64496451.immcon(e) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL -end -function c64496451.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 -end -function c64496451.spfilter(c,e,tp) - return c:IsSetCard(0xaa) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c64496451.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingMatchingCard(c64496451.spfilter,tp,LOCATION_DECK,0,2,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) -end -function c64496451.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - local c=e:GetHandler() - local fid=c:GetFieldID() - local g=Duel.GetMatchingGroup(c64496451.spfilter,tp,LOCATION_DECK,0,nil,e,tp) - if g:GetCount()>=2 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,2,2,nil) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - sg:GetFirst():RegisterFlagEffect(64496451,RESET_EVENT+0x1fe0000,0,0,fid) - sg:GetNext():RegisterFlagEffect(64496451,RESET_EVENT+0x1fe0000,0,0,fid) - sg:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(sg) - e1:SetCondition(c64496451.descon) - e1:SetOperation(c64496451.desop) - Duel.RegisterEffect(e1,tp) - end -end -function c64496451.desfilter(c,fid) - return c:GetFlagEffectLabel(64496451)==fid -end -function c64496451.descon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c64496451.desfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c64496451.desop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c64496451.desfilter,nil,e:GetLabel()) - Duel.Destroy(tg,REASON_EFFECT) -end -function c64496451.valcheck(e,c) - local g=c:GetMaterial() - if g:IsExists(Card.IsSetCard,1,nil,0xaa) then - e:GetLabelObject():SetLabel(1) - else - e:GetLabelObject():SetLabel(0) - end -end +--クリフォート・ディスク +function c64496451.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetTarget(c64496451.splimit) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_PZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) + e3:SetValue(300) + c:RegisterEffect(e3) + --summon with no tribute + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(64496451,0)) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SUMMON_PROC) + e4:SetCondition(c64496451.ntcon) + c:RegisterEffect(e4) + --change level + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_SUMMON_COST) + e5:SetOperation(c64496451.lvop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SPSUMMON_COST) + e6:SetOperation(c64496451.lvop2) + c:RegisterEffect(e6) + --immune + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_IMMUNE_EFFECT) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c64496451.immcon) + e7:SetValue(aux.qlifilter) + c:RegisterEffect(e7) + --summon success + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(64496451,1)) + e8:SetCategory(CATEGORY_SPECIAL_SUMMON) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_SUMMON_SUCCESS) + e8:SetCondition(c64496451.spcon) + e8:SetTarget(c64496451.sptg) + e8:SetOperation(c64496451.spop) + c:RegisterEffect(e8) + --tribute check + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetCode(EFFECT_MATERIAL_CHECK) + e9:SetValue(c64496451.valcheck) + e9:SetLabelObject(e8) + c:RegisterEffect(e9) +end +function c64496451.splimit(e,c) + return not c:IsSetCard(0xaa) +end +function c64496451.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c64496451.lvcon(e) + return e:GetHandler():GetMaterialCount()==0 +end +function c64496451.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c64496451.lvcon) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c64496451.lvcon) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c64496451.lvop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c64496451.immcon(e) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL +end +function c64496451.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 +end +function c64496451.spfilter(c,e,tp) + return c:IsSetCard(0xaa) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c64496451.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c64496451.spfilter,tp,LOCATION_DECK,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c64496451.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local c=e:GetHandler() + local fid=c:GetFieldID() + local g=Duel.GetMatchingGroup(c64496451.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + sg:GetFirst():RegisterFlagEffect(64496451,RESET_EVENT+0x1fe0000,0,0,fid) + sg:GetNext():RegisterFlagEffect(64496451,RESET_EVENT+0x1fe0000,0,0,fid) + sg:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(sg) + e1:SetCondition(c64496451.descon) + e1:SetOperation(c64496451.desop) + Duel.RegisterEffect(e1,tp) + end +end +function c64496451.desfilter(c,fid) + return c:GetFlagEffectLabel(64496451)==fid +end +function c64496451.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c64496451.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c64496451.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c64496451.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end +function c64496451.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsSetCard,1,nil,0xaa) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end diff --git a/script/c64500000.lua b/script/c64500000.lua index 50bcf12b..8402b332 100644 --- a/script/c64500000.lua +++ b/script/c64500000.lua @@ -53,7 +53,8 @@ function c64500000.eqlimit(e,c) return c:IsCode(62651957,65622692) or e:GetHandler():GetEquipTarget()==c end function c64500000.filter(c) - return c:IsFaceup() and c:IsCode(62651957,65622692) + local ct1,ct2=c:GetUnionCount() + return c:IsFaceup() and c:IsCode(62651957,65622692) and ct2==0 end function c64500000.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c64500000.filter(chkc) end @@ -73,7 +74,7 @@ function c64500000.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c64500000.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(64500000)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c64514622.lua b/script/c64514622.lua index 7799f727..b92a30d0 100644 --- a/script/c64514622.lua +++ b/script/c64514622.lua @@ -28,8 +28,8 @@ end function c64514622.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,c64514622.filter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c64514622.filter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) end end diff --git a/script/c64554883.lua b/script/c64554883.lua index 3e43f441..cfc49dde 100644 --- a/script/c64554883.lua +++ b/script/c64554883.lua @@ -7,7 +7,7 @@ function c64554883.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(64554883,0)) e1:SetCategory(CATEGORY_DISABLE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(0,0x1c0) diff --git a/script/c645794.lua b/script/c645794.lua index cec2737a..ed2b90c6 100644 --- a/script/c645794.lua +++ b/script/c645794.lua @@ -1,57 +1,57 @@ ---マジェスペクター・フロッグ -function c645794.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --search - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetCountLimit(1,645794) - e2:SetTarget(c645794.settg) - e2:SetOperation(c645794.setop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --cannot target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e4:SetValue(aux.tgoval) - c:RegisterEffect(e4) - --indes - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e5:SetRange(LOCATION_MZONE) - e5:SetValue(c645794.indval) - c:RegisterEffect(e5) -end -function c645794.filter(c) - return c:IsSetCard(0xd0) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() -end -function c645794.settg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingMatchingCard(c645794.filter,tp,LOCATION_DECK,0,1,nil) end -end -function c645794.setop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) - local g=Duel.SelectMatchingCard(tp,c645794.filter,tp,LOCATION_DECK,0,1,1,nil) - local tc=g:GetFirst() - if tc then - Duel.SSet(tp,tc) - Duel.ConfirmCards(1-tp,tc) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_TRIGGER) - e1:SetReset(RESET_EVENT+0x17a0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c645794.indval(e,re,tp) - return tp~=e:GetHandlerPlayer() -end +--マジェスペクター・フロッグ +function c645794.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --search + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCountLimit(1,645794) + e2:SetTarget(c645794.settg) + e2:SetOperation(c645794.setop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --cannot target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetValue(aux.tgoval) + c:RegisterEffect(e4) + --indes + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c645794.indval) + c:RegisterEffect(e5) +end +function c645794.filter(c) + return c:IsSetCard(0xd0) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() +end +function c645794.settg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingMatchingCard(c645794.filter,tp,LOCATION_DECK,0,1,nil) end +end +function c645794.setop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c645794.filter,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.SSet(tp,tc) + Duel.ConfirmCards(1-tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x17a0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c645794.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end diff --git a/script/c6459419.lua b/script/c6459419.lua index 69ba0a71..253795fb 100644 --- a/script/c6459419.lua +++ b/script/c6459419.lua @@ -31,7 +31,7 @@ function c6459419.activate(e,tp,eg,ep,ev,re,r,rp) if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(6459419,0)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local fg=sg:Select(tp,ft,ft,nil) + local fg=sg:Select(tp,1,ft,nil) if fg:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(fg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) end diff --git a/script/c64599569.lua b/script/c64599569.lua index 9058696d..38fdaca3 100644 --- a/script/c64599569.lua +++ b/script/c64599569.lua @@ -1,44 +1,44 @@ ---キメラテック・オーバー・ドラゴン -function c64599569.initial_effect(c) - c:EnableReviveLimit() - --fusion material - aux.AddFusionProcCodeFunRep(c,70095154,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),1,63,true,true) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(aux.fuslimit) - c:RegisterEffect(e2) - --spsummon success - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetOperation(c64599569.sucop) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetOperation(c64599569.tgop) - c:RegisterEffect(e4) -end -function c64599569.sucop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_BASE_ATTACK) - e1:SetValue(c:GetMaterialCount()*800) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_BASE_DEFENSE) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) - e3:SetValue(c:GetMaterialCount()-1) - c:RegisterEffect(e3) -end -function c64599569.tgop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,0,e:GetHandler()) - Duel.SendtoGrave(g,REASON_EFFECT) -end +--キメラテック・オーバー・ドラゴン +function c64599569.initial_effect(c) + c:EnableReviveLimit() + --fusion material + aux.AddFusionProcCodeFunRep(c,70095154,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),1,63,true,true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(aux.fuslimit) + c:RegisterEffect(e2) + --spsummon success + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c64599569.sucop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetOperation(c64599569.tgop) + c:RegisterEffect(e4) +end +function c64599569.sucop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(c:GetMaterialCount()*800) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e3:SetValue(c:GetMaterialCount()-1) + c:RegisterEffect(e3) +end +function c64599569.tgop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,0,e:GetHandler()) + Duel.SendtoGrave(g,REASON_EFFECT) +end diff --git a/script/c64605089.lua b/script/c64605089.lua index 7655a06d..937da90a 100644 --- a/script/c64605089.lua +++ b/script/c64605089.lua @@ -58,7 +58,7 @@ function c64605089.efop(e,tp,eg,ep,ev,re,r,rp) e1:SetCountLimit(1) e1:SetValue(c64605089.valcon) e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1) + rc:RegisterEffect(e1,true) if not rc:IsType(TYPE_EFFECT) then local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE) diff --git a/script/c64631466.lua b/script/c64631466.lua index 6624f59c..3cf940ec 100644 --- a/script/c64631466.lua +++ b/script/c64631466.lua @@ -1,121 +1,121 @@ ---サクリファイス -function c64631466.initial_effect(c) - c:EnableReviveLimit() - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(64631466,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c64631466.eqcon) - e1:SetTarget(c64631466.eqtg) - e1:SetOperation(c64631466.eqop) - c:RegisterEffect(e1) - --atk/def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_SET_ATTACK) - e2:SetCondition(c64631466.adcon) - e2:SetValue(c64631466.atkval) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_SET_DEFENSE) - e3:SetCondition(c64631466.adcon) - e3:SetValue(c64631466.defval) - e3:SetLabelObject(e1) - c:RegisterEffect(e3) - --damage - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetProperty(EFFECT_FLAG_AVAILABLE_BD) - e4:SetCode(EVENT_DAMAGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCondition(c64631466.damcon) - e4:SetOperation(c64631466.damop) - e4:SetLabelObject(e1) - c:RegisterEffect(e4) -end -function c64631466.eqcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ec=e:GetLabelObject() - return ec==nil or ec:GetFlagEffect(64631466)==0 -end -function c64631466.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToChangeControler() end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c64631466.eqlimit(e,c) - return e:GetOwner()==c -end -function c64631466.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsType(TYPE_MONSTER) and tc:IsControler(1-tp) then - if c:IsFaceup() and c:IsRelateToEffect(e) then - if not Duel.Equip(tp,tc,c,false) then return end - --Add Equip limit - tc:RegisterFlagEffect(64631466,RESET_EVENT+0x1fe0000,0,0) - e:SetLabelObject(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c64631466.eqlimit) - tc:RegisterEffect(e1) - --substitute - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(c64631466.repval) - tc:RegisterEffect(e2) - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c64631466.repval(e,re,r,rp) - return bit.band(r,REASON_BATTLE)~=0 -end -function c64631466.damcon(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetLabelObject():GetLabelObject() - return ec and ec:GetFlagEffect(64631466)~=0 and ep==tp and bit.band(r,REASON_BATTLE)~=0 - and (Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()) -end -function c64631466.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.Damage(1-tp,ev,REASON_EFFECT) -end -function c64631466.adcon(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetLabelObject():GetLabelObject() - return ec and ec:GetFlagEffect(64631466)~=0 -end -function c64631466.atkval(e,c) - local ec=e:GetLabelObject():GetLabelObject() - local atk=ec:GetTextAttack() - if ec:IsFacedown() or bit.band(ec:GetOriginalType(),TYPE_MONSTER)==0 or atk<0 then - return 0 - else - return atk - end -end -function c64631466.defval(e,c) - local ec=e:GetLabelObject():GetLabelObject() - local def=ec:GetTextDefense() - if ec:IsFacedown() or bit.band(ec:GetOriginalType(),TYPE_MONSTER)==0 or def<0 then - return 0 - else - return def - end -end +--サクリファイス +function c64631466.initial_effect(c) + c:EnableReviveLimit() + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64631466,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c64631466.eqcon) + e1:SetTarget(c64631466.eqtg) + e1:SetOperation(c64631466.eqop) + c:RegisterEffect(e1) + --atk/def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SET_ATTACK) + e2:SetCondition(c64631466.adcon) + e2:SetValue(c64631466.atkval) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_SET_DEFENSE) + e3:SetCondition(c64631466.adcon) + e3:SetValue(c64631466.defval) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_AVAILABLE_BD) + e4:SetCode(EVENT_DAMAGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c64631466.damcon) + e4:SetOperation(c64631466.damop) + e4:SetLabelObject(e1) + c:RegisterEffect(e4) +end +function c64631466.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=e:GetLabelObject() + return ec==nil or ec:GetFlagEffect(64631466)==0 +end +function c64631466.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToChangeControler() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsAbleToChangeControler,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c64631466.eqlimit(e,c) + return e:GetOwner()==c +end +function c64631466.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsType(TYPE_MONSTER) and tc:IsControler(1-tp) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + tc:RegisterFlagEffect(64631466,RESET_EVENT+0x1fe0000,0,0) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c64631466.eqlimit) + tc:RegisterEffect(e1) + --substitute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(c64631466.repval) + tc:RegisterEffect(e2) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c64631466.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c64631466.damcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetLabelObject():GetLabelObject() + return ec and ec:GetFlagEffect(64631466)~=0 and ep==tp and bit.band(r,REASON_BATTLE)~=0 + and (Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()) +end +function c64631466.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,ev,REASON_EFFECT) +end +function c64631466.adcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetLabelObject():GetLabelObject() + return ec and ec:GetFlagEffect(64631466)~=0 +end +function c64631466.atkval(e,c) + local ec=e:GetLabelObject():GetLabelObject() + local atk=ec:GetTextAttack() + if ec:IsFacedown() or bit.band(ec:GetOriginalType(),TYPE_MONSTER)==0 or atk<0 then + return 0 + else + return atk + end +end +function c64631466.defval(e,c) + local ec=e:GetLabelObject():GetLabelObject() + local def=ec:GetTextDefense() + if ec:IsFacedown() or bit.band(ec:GetOriginalType(),TYPE_MONSTER)==0 or def<0 then + return 0 + else + return def + end +end diff --git a/script/c64662453.lua b/script/c64662453.lua index 72c4ebec..bff45242 100644 --- a/script/c64662453.lua +++ b/script/c64662453.lua @@ -1,60 +1,60 @@ ---アイアンコール -function c64662453.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c64662453.condition) - e1:SetTarget(c64662453.target) - e1:SetOperation(c64662453.activate) - c:RegisterEffect(e1) -end -function c64662453.cfilter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) -end -function c64662453.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c64662453.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c64662453.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c64662453.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c64662453.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c64662453.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c64662453.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c64662453.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetOperation(c64662453.desop) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e3:SetCountLimit(1) - tc:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c64662453.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) +--アイアンコール +function c64662453.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c64662453.condition) + e1:SetTarget(c64662453.target) + e1:SetOperation(c64662453.activate) + c:RegisterEffect(e1) +end +function c64662453.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_MACHINE) +end +function c64662453.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c64662453.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c64662453.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_MACHINE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c64662453.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c64662453.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c64662453.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c64662453.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c64662453.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetOperation(c64662453.desop) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e3:SetCountLimit(1) + tc:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c64662453.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) end \ No newline at end of file diff --git a/script/c64689404.lua b/script/c64689404.lua index e6cf06a0..59611694 100644 --- a/script/c64689404.lua +++ b/script/c64689404.lua @@ -7,6 +7,7 @@ function c64689404.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(64689404,0)) e1:SetCategory(CATEGORY_EQUIP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c64726269.lua b/script/c64726269.lua index 660489d3..cfd6ee7c 100644 --- a/script/c64726269.lua +++ b/script/c64726269.lua @@ -1,81 +1,80 @@ ---光天使スケール -function c64726269.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(64726269,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetTarget(c64726269.sptg) - e1:SetOperation(c64726269.spop) - c:RegisterEffect(e1) - --effect gain - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetCondition(c64726269.effcon) - e2:SetOperation(c64726269.effop) - c:RegisterEffect(e2) -end -function c64726269.filter(c,e,tp) - return c:IsSetCard(0x86) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c64726269.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c64726269.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c64726269.tdfilter(c) - return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToDeck() -end -function c64726269.spop(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,c64726269.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - local sg=Duel.GetMatchingGroup(c64726269.tdfilter,tp,LOCATION_GRAVE,0,nil) - if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(64726269,1)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local tg=sg:Select(tp,1,1,nil) - Duel.HintSelection(tg) - if tg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end - Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) - end - end -end -function c64726269.effcon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_XYZ and e:GetHandler():GetReasonCard():GetMaterial():IsExists(Card.IsPreviousLocation,3,nil,LOCATION_MZONE) -end -function c64726269.effop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local rc=c:GetReasonCard() - local e1=Effect.CreateEffect(rc) - e1:SetDescription(aux.Stringid(64726269,2)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CLIENT_HINT) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c64726269.drcon) - e1:SetOperation(c64726269.drop) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - if not rc:IsType(TYPE_EFFECT) then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ADD_TYPE) - e2:SetValue(TYPE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e2,true) - end -end -function c64726269.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetOverlayCount()~=0 and eg:IsExists(Card.IsPreviousLocation,1,nil,LOCATION_HAND) -end -function c64726269.drop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,64726269) - Duel.Draw(tp,1,REASON_EFFECT) -end +--光天使スケール +function c64726269.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64726269,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c64726269.sptg) + e1:SetOperation(c64726269.spop) + c:RegisterEffect(e1) + --effect gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c64726269.effcon) + e2:SetOperation(c64726269.effop) + c:RegisterEffect(e2) +end +function c64726269.filter(c,e,tp) + return c:IsSetCard(0x86) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c64726269.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c64726269.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c64726269.tdfilter(c) + return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToDeck() +end +function c64726269.spop(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,c64726269.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c64726269.tdfilter),tp,LOCATION_GRAVE,0,nil) + if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(64726269,1)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local tg=sg:Select(tp,1,1,nil) + Duel.HintSelection(tg) + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + end + end +end +function c64726269.effcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ and e:GetHandler():GetReasonCard():GetMaterial():IsExists(Card.IsPreviousLocation,3,nil,LOCATION_MZONE) +end +function c64726269.effop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(64726269,2)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CLIENT_HINT) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c64726269.drcon) + e1:SetOperation(c64726269.drop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c64726269.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayCount()~=0 and eg:IsExists(Card.IsPreviousLocation,1,nil,LOCATION_HAND) +end +function c64726269.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,64726269) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c64753157.lua b/script/c64753157.lua new file mode 100644 index 00000000..0a1c6608 --- /dev/null +++ b/script/c64753157.lua @@ -0,0 +1,109 @@ +--Charming Resort Staff +function c64753157.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64753157,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c64753157.atkcon) + e1:SetTarget(c64753157.atktg) + e1:SetOperation(c64753157.atkop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(64753157,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c64753157.spcon) + e2:SetTarget(c64753157.sptg) + e2:SetOperation(c64753157.spop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(64753157,2)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetRange(LOCATION_GRAVE) + e3:SetCondition(c64753157.thcon) + e3:SetCost(c64753157.thcost) + e3:SetTarget(c64753157.thtg) + e3:SetOperation(c64753157.thop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_TO_GRAVE) + c:RegisterEffect(e4) +end +function c64753157.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d or a:GetControler()==d:GetControler() or not d:IsFaceup() or not a:IsFaceup() then return end + if a:IsControler(tp) and a:IsCode(41091257) then e:SetLabelObject(d) + elseif d:IsControler(tp) and d:IsCode(41091257) then e:SetLabelObject(a) + else return false end + return true +end +function c64753157.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return tc:IsOnField() end + Duel.SetTargetCard(tc) +end +function c64753157.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(1-tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c64753157.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c64753157.spfilter(c,e,tp) + return c:IsCode(41091257) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c64753157.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c64753157.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c64753157.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tg=Duel.GetFirstMatchingCard(c64753157.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if tg then + Duel.SpecialSummon(tg,0,tp,tp,false,false,POS_FACEUP) + end +end +function c64753157.cfilter(c,tp) + return c:IsCode(41091257) and c:GetPreviousControler()==tp +end +function c64753157.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c64753157.cfilter,1,nil,tp) +end +function c64753157.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c64753157.thfilter(c) + return c:IsCode(41091257) and c:IsAbleToHand() +end +function c64753157.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c64753157.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c64753157.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c64753157.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c64765016.lua b/script/c64765016.lua index 8e19ca31..8514aedb 100644 --- a/script/c64765016.lua +++ b/script/c64765016.lua @@ -1,74 +1,74 @@ ---버제스토마 마렐라 -function c64765016.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c64765016.target) - e1:SetOperation(c64765016.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(64765016,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c64765016.spcon) - e2:SetTarget(c64765016.sptg) - e2:SetOperation(c64765016.spop) - c:RegisterEffect(e2) -end -function c64765016.tgfilter(c) - return c:IsType(TYPE_TRAP) and c:IsAbleToGrave() -end -function c64765016.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c64765016.tgfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c64765016.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c64765016.tgfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end -function c64765016.spcon(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c64765016.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(64765016)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,64765016,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end - c:RegisterFlagEffect(64765016,RESET_CHAIN,0,1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c64765016.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,64765016,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c64765016.efilter) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetReset(RESET_EVENT+0x47e0000) - e3:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c64765016.efilter(e,re) - return re:IsActiveType(TYPE_MONSTER) -end +--バージェストマ・マーレラ +function c64765016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c64765016.target) + e1:SetOperation(c64765016.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(64765016,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c64765016.spcon) + e2:SetTarget(c64765016.sptg) + e2:SetOperation(c64765016.spop) + c:RegisterEffect(e2) +end +function c64765016.tgfilter(c) + return c:IsType(TYPE_TRAP) and c:IsAbleToGrave() +end +function c64765016.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c64765016.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c64765016.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c64765016.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c64765016.spcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c64765016.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(64765016)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,64765016,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end + c:RegisterFlagEffect(64765016,RESET_CHAIN,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c64765016.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,64765016,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c64765016.efilter) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c64765016.efilter(e,re) + return re:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c64788463.lua b/script/c64788463.lua index 47cf470f..1176ccd6 100644 --- a/script/c64788463.lua +++ b/script/c64788463.lua @@ -15,7 +15,7 @@ function c64788463.cfilter(c) return c:IsFaceup() and c:IsCode(25652259) end function c64788463.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c64788463.cfilter,tp,LOCATION_MZONE,0,1,nil) + return Duel.IsExistingMatchingCard(c64788463.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end function c64788463.filter(c,e,tp) return c:IsCode(90876561) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) diff --git a/script/c64801562.lua b/script/c64801562.lua index ea148189..1222aca6 100644 --- a/script/c64801562.lua +++ b/script/c64801562.lua @@ -1,14 +1,6 @@ --明鏡止水の心 function c64801562.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(c64801562.target) - e1:SetOperation(c64801562.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Indes local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,13 +12,6 @@ function c64801562.initial_effect(c) e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) e3:SetValue(c64801562.indval) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) --selfdes local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_SINGLE) @@ -36,19 +21,6 @@ function c64801562.initial_effect(c) e5:SetCondition(c64801562.descon) c:RegisterEffect(e5) end -function c64801562.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 c64801562.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 c64801562.indval(e,re,rp) local tc=e:GetHandler():GetEquipTarget() local rc=re:GetHandler() diff --git a/script/c64910482.lua b/script/c64910482.lua index 45abf1e5..ced3cfed 100644 --- a/script/c64910482.lua +++ b/script/c64910482.lua @@ -12,6 +12,7 @@ function c64910482.initial_effect(c) --to grave local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c64910482.regop) c:RegisterEffect(e2) diff --git a/script/c64973287.lua b/script/c64973287.lua index c30ea2df..d63a7b39 100644 --- a/script/c64973287.lua +++ b/script/c64973287.lua @@ -1,53 +1,53 @@ ---ダイナミスト・プテラン -function c64973287.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_PZONE) - e2:SetTarget(c64973287.reptg) - e2:SetValue(c64973287.repval) - e2:SetOperation(c64973287.repop) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(64973287,1)) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLE_DESTROYING) - e3:SetCondition(aux.bdocon) - e3:SetTarget(c64973287.target) - e3:SetOperation(c64973287.operation) - c:RegisterEffect(e3) -end -function c64973287.repfilter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) and c:IsSetCard(0xd8) - and (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp)) -end -function c64973287.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c64973287.repfilter,1,e:GetHandler(),tp) and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end - return Duel.SelectYesNo(tp,aux.Stringid(64973287,0)) -end -function c64973287.repval(e,c) - return c64973287.repfilter(c,e:GetHandlerPlayer()) -end -function c64973287.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) -end -function c64973287.filter(c) - return c:IsSetCard(0xd8) and c:IsAbleToHand() -end -function c64973287.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c64973287.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c64973287.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c64973287.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ダイナミスト・プテラン +function c64973287.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_PZONE) + e2:SetTarget(c64973287.reptg) + e2:SetValue(c64973287.repval) + e2:SetOperation(c64973287.repop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(64973287,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(aux.bdocon) + e3:SetTarget(c64973287.target) + e3:SetOperation(c64973287.operation) + c:RegisterEffect(e3) +end +function c64973287.repfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_ONFIELD) and c:IsSetCard(0xd8) + and (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp)) +end +function c64973287.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c64973287.repfilter,1,e:GetHandler(),tp) and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end + return Duel.SelectYesNo(tp,aux.Stringid(64973287,0)) +end +function c64973287.repval(e,c) + return c64973287.repfilter(c,e:GetHandlerPlayer()) +end +function c64973287.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end +function c64973287.filter(c) + return c:IsSetCard(0xd8) and c:IsAbleToHand() +end +function c64973287.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c64973287.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c64973287.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c64973287.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c64973456.lua b/script/c64973456.lua index 3792564f..21a03871 100644 --- a/script/c64973456.lua +++ b/script/c64973456.lua @@ -1,47 +1,47 @@ ---ヴァイパー・リボーン -function c64973456.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c64973456.condition) - e1:SetTarget(c64973456.target) - e1:SetOperation(c64973456.activate) - c:RegisterEffect(e1) -end -function c64973456.cfilter(c) - return c:IsType(TYPE_MONSTER) and c:GetRace()~=RACE_REPTILE -end -function c64973456.condition(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c64973456.cfilter,tp,LOCATION_GRAVE,0,1,nil) -end -function c64973456.filter(c,e,tp) - return not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c64973456.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c64973456.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c64973456.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c64973456.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c64973456.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetOperation(c64973456.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - tc:RegisterEffect(e1) - end -end -function c64973456.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--ヴァイパー・リボーン +function c64973456.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c64973456.condition) + e1:SetTarget(c64973456.target) + e1:SetOperation(c64973456.activate) + c:RegisterEffect(e1) +end +function c64973456.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:GetRace()~=RACE_REPTILE +end +function c64973456.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c64973456.cfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c64973456.filter(c,e,tp) + return not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c64973456.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c64973456.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c64973456.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c64973456.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c64973456.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c64973456.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + tc:RegisterEffect(e1) + end +end +function c64973456.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c64977888.lua b/script/c64977888.lua new file mode 100644 index 00000000..413c58c5 --- /dev/null +++ b/script/c64977888.lua @@ -0,0 +1,43 @@ +--見習い魔笛使い +function c64977888.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(64977888,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c64977888.sptg) + e1:SetOperation(c64977888.spop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(64977888,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c64977888.spcon) + e2:SetTarget(c64977888.sptg) + e2:SetOperation(c64977888.spop) + c:RegisterEffect(e2) +end +function c64977888.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c64977888.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c64977888.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c64977888.spop(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,c64977888.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 c64977888.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end diff --git a/script/c65025250.lua b/script/c65025250.lua index 2358d82d..3ce89d48 100644 --- a/script/c65025250.lua +++ b/script/c65025250.lua @@ -1,60 +1,60 @@ ---妖仙獣 左鎌神柱 -function c65025250.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_PZONE) - e2:SetTarget(c65025250.reptg) - e2:SetValue(c65025250.repval) - e2:SetOperation(c65025250.repop) - c:RegisterEffect(e2) - --to defense - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(65025250,0)) - e3:SetCategory(CATEGORY_POSITION) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetTarget(c65025250.postg) - e3:SetOperation(c65025250.posop) - c:RegisterEffect(e3) - --cannot be target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(LOCATION_MZONE,0) - e4:SetTarget(c65025250.tgtg) - e4:SetValue(aux.tgoval) - c:RegisterEffect(e4) -end -function c65025250.filter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) - and c:IsSetCard(0xb3) and not c:IsReason(REASON_REPLACE) -end -function c65025250.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c65025250.filter,1,nil,tp) and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end - return Duel.SelectYesNo(tp,aux.Stringid(65025250,1)) -end -function c65025250.repval(e,c) - return c65025250.filter(c,e:GetHandlerPlayer()) -end -function c65025250.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) -end -function c65025250.postg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAttackPos() end - Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) -end -function c65025250.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsPosition(POS_FACEUP_ATTACK) and c:IsRelateToEffect(e) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end -end -function c65025250.tgtg(e,c) - return c~=e:GetHandler() and c:IsSetCard(0xb3) -end +--妖仙獣 左鎌神柱 +function c65025250.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_PZONE) + e2:SetTarget(c65025250.reptg) + e2:SetValue(c65025250.repval) + e2:SetOperation(c65025250.repop) + c:RegisterEffect(e2) + --to defense + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(65025250,0)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c65025250.postg) + e3:SetOperation(c65025250.posop) + c:RegisterEffect(e3) + --cannot be target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetTarget(c65025250.tgtg) + e4:SetValue(aux.tgoval) + c:RegisterEffect(e4) +end +function c65025250.filter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) + and c:IsSetCard(0xb3) and not c:IsReason(REASON_REPLACE) +end +function c65025250.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c65025250.filter,1,nil,tp) and not e:GetHandler():IsStatus(STATUS_DESTROY_CONFIRMED) end + return Duel.SelectYesNo(tp,aux.Stringid(65025250,1)) +end +function c65025250.repval(e,c) + return c65025250.filter(c,e:GetHandlerPlayer()) +end +function c65025250.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) +end +function c65025250.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c65025250.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsPosition(POS_FACEUP_ATTACK) and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c65025250.tgtg(e,c) + return c~=e:GetHandler() and c:IsSetCard(0xb3) +end diff --git a/script/c65079854.lua b/script/c65079854.lua index c0b5bade..e417db3b 100644 --- a/script/c65079854.lua +++ b/script/c65079854.lua @@ -1,14 +1,6 @@ --憎悪の棘 function c65079854.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(c65079854.target) - e1:SetOperation(c65079854.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c65079854.filter) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,13 +12,6 @@ function c65079854.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_PIERCE) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c65079854.eqlimit) - c:RegisterEffect(e4) --indes local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_FIELD) @@ -46,25 +31,8 @@ function c65079854.initial_effect(c) e6:SetOperation(c65079854.adop) c:RegisterEffect(e6) end -function c65079854.eqlimit(e,c) - return c:IsCode(73580471) or c:IsRace(RACE_PLANT) -end function c65079854.filter(c) - return c:IsFaceup() and (c:IsCode(73580471) or c:IsRace(RACE_PLANT)) -end -function c65079854.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c65079854.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c65079854.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c65079854.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c65079854.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 + return c:IsCode(73580471) or c:IsRace(RACE_PLANT) end function c65079854.indestg(e,c) return c==e:GetHandler():GetEquipTarget():GetBattleTarget() diff --git a/script/c6511113.lua b/script/c6511113.lua index bc1cf716..68e7496b 100644 --- a/script/c6511113.lua +++ b/script/c6511113.lua @@ -27,12 +27,14 @@ function c6511113.initial_effect(c) --cannot be target local e4=e3:Clone() e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e4:SetValue(aux.tgoval) c:RegisterEffect(e4) --copy trap local e5=Effect.CreateEffect(c) e5:SetDescription(aux.Stringid(6511113,0)) e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetProperty(EFFECT_FLAG2_XMDETACH) e5:SetRange(LOCATION_MZONE) e5:SetCode(EVENT_FREE_CHAIN) e5:SetHintTiming(0x3c0) @@ -45,6 +47,7 @@ function c6511113.initial_effect(c) local e6=Effect.CreateEffect(c) e6:SetDescription(aux.Stringid(6511113,1)) e6:SetType(EFFECT_TYPE_QUICK_O) + e6:SetProperty(EFFECT_FLAG2_XMDETACH) e6:SetRange(LOCATION_MZONE) e6:SetCode(EVENT_CHAINING) e6:SetCountLimit(1) diff --git a/script/c65169794.lua b/script/c65169794.lua index 53cc8c62..c02e44a1 100644 --- a/script/c65169794.lua +++ b/script/c65169794.lua @@ -1,27 +1,12 @@ --黒いペンダント function c65169794.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(c65169794.target) - e1:SetOperation(c65169794.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(500) 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) --damage local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(65169794,0)) @@ -34,19 +19,6 @@ function c65169794.initial_effect(c) e4:SetOperation(c65169794.damop) c:RegisterEffect(e4) end -function c65169794.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 c65169794.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 c65169794.damcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end diff --git a/script/c65193366.lua b/script/c65193366.lua new file mode 100644 index 00000000..9d48fcfa --- /dev/null +++ b/script/c65193366.lua @@ -0,0 +1,34 @@ +--精霊獣使い ウィンダ +function c65193366.initial_effect(c) + c:SetSPSummonOnce(65193366) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(65193366,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DESTROYED) + e1:SetCondition(c65193366.spcon) + e1:SetTarget(c65193366.sptg) + e1:SetOperation(c65193366.spop) + c:RegisterEffect(e1) +end +function c65193366.spcon(e,tp,eg,ep,ev,re,r,rp) + return rp==1-tp and e:GetHandler():GetPreviousControler()==tp +end +function c65193366.spfilter(c,e,tp) + return c:IsSetCard(0xb5) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c65193366.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c65193366.spfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_EXTRA) +end +function c65193366.spop(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,c65193366.spfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c652362.lua b/script/c652362.lua index ae3e742c..55a05ce1 100644 --- a/script/c652362.lua +++ b/script/c652362.lua @@ -26,16 +26,27 @@ end function c652362.spop(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(652362,RESET_EVENT+0x1fe0000,0,1,fid) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetOperation(c652362.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) e1:SetCountLimit(1) - tc:RegisterEffect(e1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c652362.descon) + e1:SetOperation(c652362.desop) + Duel.RegisterEffect(e1,tp) end end +function c652362.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(652362)~=e:GetLabel() then + e:Reset() + return false + else return true end +end function c652362.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) end diff --git a/script/c65240384.lua b/script/c65240384.lua index 10bb917e..fa7e17e4 100644 --- a/script/c65240384.lua +++ b/script/c65240384.lua @@ -1,39 +1,38 @@ ---ビッグ・シールド・ガードナー -function c65240384.initial_effect(c) - --to attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_DAMAGE_STEP_END) - e1:SetOperation(c65240384.posop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_QUICK_F) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_SET_AVAILABLE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c65240384.negcon) - e2:SetOperation(c65240384.negop) - c:RegisterEffect(e2) -end -function c65240384.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c==Duel.GetAttackTarget() and c:IsDefensePos() and c:IsRelateToBattle() then - Duel.ChangePosition(c,POS_FACEUP_ATTACK) - end -end -function c65240384.negcon(e,tp,eg,ep,ev,re,r,rp) - if re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return tg:GetCount()==1 and tg:GetFirst()==e:GetHandler() and e:GetHandler():IsFacedown() - else - return false - end -end -function c65240384.negop(e,tp,eg,ep,ev,re,r,rp) - if Duel.ChangePosition(e:GetHandler(),POS_FACEUP_DEFENSE) then - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then - Duel.SendtoGrave(eg,REASON_EFFECT) - end - end -end +--ビッグ・シールド・ガードナー +function c65240384.initial_effect(c) + --to attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetOperation(c65240384.posop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_F) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_SET_AVAILABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c65240384.negcon) + e2:SetOperation(c65240384.negop) + c:RegisterEffect(e2) +end +function c65240384.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c==Duel.GetAttackTarget() and c:IsDefensePos() and c:IsRelateToBattle() then + Duel.ChangePosition(c,POS_FACEUP_ATTACK) + end +end +function c65240384.negcon(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg:GetCount()==1 and tg:GetFirst()==e:GetHandler() and e:GetHandler():IsFacedown() + else + return false + end +end +function c65240384.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.ChangePosition(e:GetHandler(),POS_FACEUP_DEFENSE) then + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + Duel.SendtoGrave(eg,REASON_EFFECT) + end + end +end diff --git a/script/c65247798.lua b/script/c65247798.lua index 743e2e6a..c56ec929 100644 --- a/script/c65247798.lua +++ b/script/c65247798.lua @@ -1,92 +1,92 @@ ---妖仙獣 鎌壱太刀 -function c65247798.initial_effect(c) - --summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(65247798,0)) - e1:SetCategory(CATEGORY_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c65247798.sumtg) - e1:SetOperation(c65247798.sumop) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(65247798,1)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) - e2:SetCountLimit(1) - e2:SetCondition(c65247798.thcon) - e2:SetTarget(c65247798.thtg) - e2:SetOperation(c65247798.thop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetOperation(c65247798.regop) - c:RegisterEffect(e3) -end -function c65247798.filter(c) - return c:IsSetCard(0xb3) and not c:IsCode(65247798) and c:IsSummonable(true,nil) -end -function c65247798.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c65247798.filter,tp,LOCATION_HAND,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) -end -function c65247798.sumop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) - local g=Duel.SelectMatchingCard(tp,c65247798.filter,tp,LOCATION_HAND,0,1,1,nil) - if g:GetCount()>0 then - Duel.Summon(tp,g:GetFirst(),true,nil) - end -end -function c65247798.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb3) -end -function c65247798.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c65247798.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) -end -function c65247798.thfilter(c) - return c:IsFaceup() and c:IsAbleToHand() -end -function c65247798.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(1-tp) and c65247798.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c65247798.thfilter,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c65247798.thfilter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c65247798.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end -function c65247798.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(65247798,2)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetTarget(c65247798.rettg) - e1:SetOperation(c65247798.retop) - e1:SetReset(RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end -function c65247798.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c65247798.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--妖仙獣 鎌壱太刀 +function c65247798.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(65247798,0)) + e1:SetCategory(CATEGORY_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c65247798.sumtg) + e1:SetOperation(c65247798.sumop) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(65247798,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) + e2:SetCountLimit(1) + e2:SetCondition(c65247798.thcon) + e2:SetTarget(c65247798.thtg) + e2:SetOperation(c65247798.thop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c65247798.regop) + c:RegisterEffect(e3) +end +function c65247798.filter(c) + return c:IsSetCard(0xb3) and not c:IsCode(65247798) and c:IsSummonable(true,nil) +end +function c65247798.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c65247798.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c65247798.sumop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c65247798.filter,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + Duel.Summon(tp,g:GetFirst(),true,nil) + end +end +function c65247798.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb3) +end +function c65247798.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c65247798.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c65247798.thfilter(c) + return c:IsFaceup() and c:IsAbleToHand() +end +function c65247798.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(1-tp) and c65247798.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c65247798.thfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c65247798.thfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c65247798.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c65247798.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(65247798,2)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetTarget(c65247798.rettg) + e1:SetOperation(c65247798.retop) + e1:SetReset(RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c65247798.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c65247798.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c65260293.lua b/script/c65260293.lua index 3cd5da5e..59de10be 100644 --- a/script/c65260293.lua +++ b/script/c65260293.lua @@ -1,34 +1,32 @@ ---エレメント・マジシャン -function c65260293.initial_effect(c) - --control - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_CHANGE_CONTROL) - e1:SetCondition(c65260293.ctlcon) - c:RegisterEffect(e1) - --chain attack - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(65260293,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLED) - e2:SetCondition(c65260293.atcon) - e2:SetOperation(c65260293.atop) - c:RegisterEffect(e2) -end -function c65260293.filter(c,att) - return c:IsFaceup() and c:IsAttribute(att) -end -function c65260293.ctlcon(e) - return Duel.IsExistingMatchingCard(c65260293.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_WATER) -end -function c65260293.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) - and not c:IsDisabled() and Duel.IsExistingMatchingCard(c65260293.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_WIND) -end -function c65260293.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--エレメント・マジシャン +function c65260293.initial_effect(c) + --control + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_CHANGE_CONTROL) + e1:SetCondition(c65260293.ctlcon) + c:RegisterEffect(e1) + --chain attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(65260293,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c65260293.atcon) + e2:SetOperation(c65260293.atop) + c:RegisterEffect(e2) +end +function c65260293.filter(c,att) + return c:IsFaceup() and c:IsAttribute(att) +end +function c65260293.ctlcon(e) + return Duel.IsExistingMatchingCard(c65260293.filter,0,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_WATER) +end +function c65260293.atcon(e,tp,eg,ep,ev,re,r,rp) + return aux.bdocon(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():IsChainAttackable() + and Duel.IsExistingMatchingCard(c65260293.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,ATTRIBUTE_WIND) +end +function c65260293.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c65301952.lua b/script/c65301952.lua index c8e96f84..97ec5181 100644 --- a/script/c65301952.lua +++ b/script/c65301952.lua @@ -16,6 +16,7 @@ function c65301952.initial_effect(c) e2:SetDescription(aux.Stringid(65301952,0)) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) e2:SetCondition(c65301952.setcon) diff --git a/script/c65305468.lua b/script/c65305468.lua index c509957b..4425b93a 100644 --- a/script/c65305468.lua +++ b/script/c65305468.lua @@ -3,7 +3,7 @@ function c65305468.initial_effect(c) --xyz summon c:EnableReviveLimit() local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetRange(LOCATION_EXTRA) @@ -46,58 +46,187 @@ function c65305468.initial_effect(c) c:RegisterEffect(e7) end c65305468.xyz_number=0 -function c65305468.mfilter(c,xyzc) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and not c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) +function c65305468.xyzm12(c,xyz,tp) + return c65305468.mfilter1(c,xyz,tp) or c65305468.mfilter2(c,xyz,tp) end -function c65305468.xyzfilter1(c,g) - return g:IsExists(c65305468.xyzfilter2,1,c,c:GetRank()) +function c65305468.mfilter1(c,xyzc,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and not c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) + and (c:IsControler(tp) or c:IsHasEffect(EFFECT_XYZ_MATERIAL)) +end +function c65305468.mfilter2(c,xyzc,tp) + if c:IsLocation(LOCATION_GRAVE) then + return c:IsHasEffect(511002793) and c:IsType(TYPE_XYZ) and not c:IsSetCard(0x48) and c:IsCanBeXyzMaterial(xyzc) + else + return c:IsHasEffect(511002116) + end +end +function c65305468.xyzfilter1(c,tp,mg,xyz,matg,ct,sg,min,matct,nodoub) + local tg + local g=mg:Clone() + if matg==nil or matg:GetCount()==0 then tg=Group.CreateGroup() else tg=matg:Clone() end + g:RemoveCard(c) + tg:AddCard(c) + local tsg=false + if sg then + tsg=sg:Clone() + tsg:RemoveCard(c) + end + local gg=tg:Filter(aux.ValidXyzMaterial,nil) + if gg:IsExists(aux.TuneMagXyzFilter,1,nil,gg,tp) then return false end + local ctc=ct+1 + local matct2=matct + if not c:IsHasEffect(511002116) and min then + matct2=matct+1 + end + if min and matct2>min then return false end + if (not min or matct2==min) and ctc>=2 and ctc<=2 then return tg:IsExists(aux.XyzFCheck,1,nil,tp) end + if c:IsType(TYPE_XYZ) then g=g:Filter(c65305468.xyzfilter2,nil,c:GetRank()) end + if ctc>2 then return false end + local res2=false + local eqg=c:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + if not sg then + g:Merge(eqg) + end + local isDouble=false + if not nodoub and c:IsHasEffect(511001225) and (not c.xyzlimit2 or c.xyzlimit2(xyz)) then + if ctc+1<=2 then + isDouble=true + res2=true + end + if (not min or matct2==min) and ctc+1>=2 and ctc+1<=2 then return tg:IsExists(aux.XyzFCheck,1,nil,tp) end + end + return g:IsExists(c65305468.xyzfilter1,1,nil,tp,g,xyz,tg,ctc,tsg,min,matct2,false) + or (res2 and g:IsExists(c65305468.xyzfilter1,1,nil,tp,g,xyz,tg,ctc+1,tsg,min,matct2,false)) end function c65305468.xyzfilter2(c,rk) - return c:GetRank()==rk + return c:GetRank()==rk or c:IsHasEffect(511002116) or c:IsHasEffect(511001175) end function c65305468.xyzcon(e,c,og,min,max) if c==nil then return true end local tp=c:GetControler() local mg=nil + local sg=false if og then - mg=og:Filter(c65305468.mfilter,nil,c) + mg=og:Filter(c65305468.xyzm12,nil,c,tp) + sg=mg:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) else - mg=Duel.GetMatchingGroup(c65305468.mfilter,tp,LOCATION_MZONE,0,nil,c) + mg=Duel.GetMatchingGroup(c65305468.mfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + local mg2=Duel.GetMatchingGroup(c65305468.mfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c,tp) + mg:Merge(mg2) end - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and (not min or min<=2 and max>=2) - and mg:IsExists(c65305468.xyzfilter1,1,nil,mg) + local minchk=min + if c:GetFlagEffect(999)~=0 then minchk=nil end + return mg:IsExists(c65305468.xyzfilter1,1,nil,tp,mg,c,nil,0,sg,minchk,0,false) end function c65305468.xyzop(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) - local g=nil - local sg=Group.CreateGroup() if og and not min then - g=og - local tc=og:GetFirst() - while tc do - sg:Merge(tc:GetOverlayGroup()) - tc=og:GetNext() + if not og:IsExists(c65305468.xyzfilter1,1,nil,tp,og,c,nil,0,og,og:GetCount(),0,false) then + local matg=Group.CreateGroup() + local mg=og:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) + local ct=og:GetCount() + tog=og:Clone() + local tc=tog:GetFirst() + local matct=0 + local ct=0 + while tc do + local isDouble=false + if tc:IsHasEffect(511001225) and (not tc.xyzlimit2 or tc.xyzlimit2(c)) and ct+1<2 + and (not c65305468.xyzfilter1(tc,tp,mg,c,matg,ct,og,og:GetCount(),matct,true) or Duel.SelectYesNo(tp,65)) then + isDouble=true + end + ct=ct+1 + if isDouble then ct=ct+1 end + matct=matct+1 + mg:RemoveCard(tc) + matg:AddCard(tc) + tc=tog:GetNext() + end + while ct<2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local sg=mg:Select(tp,1,1,nil) + sg:GetFirst():RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + ct=ct+1 + mg:Sub(sg) + matg:Merge(sg) + end + matg:Remove(Card.IsHasEffect,nil,511002116) + matg:Remove(Card.IsHasEffect,nil,511002115) + local sg=Group.CreateGroup() + local tc=matg:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=g:GetNext() + end + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(g) + Duel.Overlay(c,g) + else + local sg=Group.CreateGroup() + local tc=og:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg:Merge(sg1) + tc=og:GetNext() + end + Duel.SendtoGrave(sg,REASON_RULE) + c:SetMaterial(og) + Duel.Overlay(c,og) end else - local mg=nil + local mg + local sg=false if og then - mg=og:Filter(c65305468.mfilter,nil,c) + mg=og:Filter(c65305468.xyzm12,nil,c,tp) + sg=mg:Clone() + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) else - mg=Duel.GetMatchingGroup(c65305468.mfilter,tp,LOCATION_MZONE,0,nil,c) + mg=Duel.GetMatchingGroup(c65305468.xyzm12,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c,tp) + local mg2=Duel.GetMatchingGroup(c65305468.mfilter2,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,c,tp) + mg:Merge(mg2) + end + local ct=0 + local matg=Group.CreateGroup() + while ct<2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=mg:FilterSelect(tp,c65305468.xyzfilter1,1,1,nil,tp,mg,c,matg,ct,sg,nil,nil,false) + local tc=g:GetFirst() + local isDouble=false + if tc:IsHasEffect(511001225) and (not tc.xyzlimit2 or tc.xyzlimit2(c)) and ct+1<2 + and (not c65305468.xyzfilter1(tc,tp,mg,c,matg,ct,sg,nil,nil,true) or Duel.SelectYesNo(tp,65)) then + isDouble=true + end + if isDouble then ct=ct+1 end + if not sg then + local eqg=tc:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + mg:Merge(eqg) + end + mg:RemoveCard(tc) + matg:AddCard(tc) + if tc:IsHasEffect(511002116) then + tc:RegisterFlagEffect(511002115,RESET_EVENT+0x1fe0000,0,0) + end + if tc:IsType(TYPE_XYZ) then mg=mg:Filter(c65305468.xyzfilter2,nil,tc:GetRank()) end + ct=ct+1 + end + matg:Remove(Card.IsHasEffect,nil,511002116) + matg:Remove(Card.IsHasEffect,nil,511002115) + local sg2=Group.CreateGroup() + local tc=matg:GetFirst() + while tc do + local sg1=tc:GetOverlayGroup() + sg2:Merge(sg1) + tc=matg:GetNext() end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - g=mg:FilterSelect(tp,c65305468.xyzfilter1,1,1,nil,mg) - local tc1=g:GetFirst() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g2=mg:FilterSelect(tp,c65305468.xyzfilter2,1,1,tc1,tc1:GetRank()) - local tc2=g2:GetFirst() - g:Merge(g2) - sg:Merge(tc1:GetOverlayGroup()) - sg:Merge(tc2:GetOverlayGroup()) + Duel.SendtoGrave(sg2,REASON_RULE) + c:SetMaterial(matg) + Duel.Overlay(c,matg) end - Duel.SendtoGrave(sg,REASON_RULE) - c:SetMaterial(g) - Duel.Overlay(c,g) end function c65305468.cttg(e,tp,eg,ep,ev,re,r,rp,chk) local tc=e:GetHandler():GetBattleTarget() diff --git a/script/c65331686.lua b/script/c65331686.lua index e15ceb6c..321840b6 100644 --- a/script/c65331686.lua +++ b/script/c65331686.lua @@ -1,109 +1,109 @@ ---ファーニマル・オウル -function c65331686.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(65331686,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCountLimit(1,65331686) - e1:SetCondition(c65331686.thcon) - e1:SetTarget(c65331686.thtg) - e1:SetOperation(c65331686.thop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(65331686,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,65331686) - e3:SetCost(c65331686.cost) - e3:SetTarget(c65331686.target) - e3:SetOperation(c65331686.operation) - c:RegisterEffect(e3) -end -function c65331686.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_HAND) -end -function c65331686.thfilter(c) - return c:IsCode(24094653) and c:IsAbleToHand() -end -function c65331686.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c65331686.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c65331686.thop(e,tp,eg,ep,ev,re,r,rp,chk) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c65331686.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c65331686.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 c65331686.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c65331686.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0xad) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c65331686.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c65331686.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c65331686.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c65331686.operation(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c65331686.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c65331686.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c65331686.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--ファーニマル・オウル +function c65331686.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(65331686,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCountLimit(1,65331686) + e1:SetCondition(c65331686.thcon) + e1:SetTarget(c65331686.thtg) + e1:SetOperation(c65331686.thop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(65331686,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,65331686) + e3:SetCost(c65331686.cost) + e3:SetTarget(c65331686.target) + e3:SetOperation(c65331686.operation) + c:RegisterEffect(e3) +end +function c65331686.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_HAND) +end +function c65331686.thfilter(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c65331686.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c65331686.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c65331686.thop(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c65331686.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c65331686.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 c65331686.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c65331686.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0xad) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c65331686.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c65331686.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c65331686.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c65331686.operation(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c65331686.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c65331686.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c65331686.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c65338781.lua b/script/c65338781.lua index 68940213..248bf7dc 100644 --- a/script/c65338781.lua +++ b/script/c65338781.lua @@ -1,84 +1,84 @@ ---熟練の赤魔術士 -function c65338781.initial_effect(c) - c:EnableCounterPermit(0x1) - c:SetCounterLimit(0x1,3) - --add counter - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_CHAINING) - e1:SetRange(LOCATION_MZONE) - e1:SetOperation(aux.chainreg) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVED) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c65338781.acop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(65338781,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c65338781.spcost) - e3:SetTarget(c65338781.sptg) - e3:SetOperation(c65338781.spop) - c:RegisterEffect(e3) - --counter - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(65338781,1)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_GRAVE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCost(c65338781.ctcost) - e4:SetTarget(c65338781.cttg) - e4:SetOperation(c65338781.ctop) - c:RegisterEffect(e4) -end -function c65338781.acop(e,tp,eg,ep,ev,re,r,rp) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and e:GetHandler():GetFlagEffect(1)>0 then - e:GetHandler():AddCounter(0x1,1) - end -end -function c65338781.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetCounter(0x1)==3 and e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c65338781.filter(c,e,tp) - return c:IsSetCard(0x45) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c65338781.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c65338781.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) -end -function c65338781.spop(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,c65338781.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c65338781.ctcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c65338781.ctfilter(c) - return c:IsFaceup() and c:IsCanAddCounter(0x1,1) -end -function c65338781.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c65338781.ctfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c65338781.ctfilter,tp,LOCATION_ONFIELD,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c65338781.ctfilter,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x1) -end -function c65338781.ctop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - tc:AddCounter(0x1,1) - end -end +--熟練の赤魔術士 +function c65338781.initial_effect(c) + c:EnableCounterPermit(0x1) + c:SetCounterLimit(0x1,3) + --add counter + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(aux.chainreg) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c65338781.acop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(65338781,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c65338781.spcost) + e3:SetTarget(c65338781.sptg) + e3:SetOperation(c65338781.spop) + c:RegisterEffect(e3) + --counter + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(65338781,1)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_GRAVE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCost(c65338781.ctcost) + e4:SetTarget(c65338781.cttg) + e4:SetOperation(c65338781.ctop) + c:RegisterEffect(e4) +end +function c65338781.acop(e,tp,eg,ep,ev,re,r,rp) + if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and e:GetHandler():GetFlagEffect(1)>0 then + e:GetHandler():AddCounter(0x1,1) + end +end +function c65338781.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetCounter(0x1)==3 and e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c65338781.filter(c,e,tp) + return c:IsSetCard(0x45) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c65338781.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c65338781.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) +end +function c65338781.spop(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,aux.NecroValleyFilter(c65338781.filter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c65338781.ctcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c65338781.ctfilter(c) + return c:IsFaceup() and c:IsCanAddCounter(0x1,1) +end +function c65338781.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c65338781.ctfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c65338781.ctfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c65338781.ctfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x1) +end +function c65338781.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + tc:AddCounter(0x1,1) + end +end diff --git a/script/c65446452.lua b/script/c65446452.lua index 384720ab..dcfb621d 100644 --- a/script/c65446452.lua +++ b/script/c65446452.lua @@ -1,67 +1,67 @@ ---水舞台装置 -function c65446452.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk & def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) - e2:SetValue(300) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - local e4=e2:Clone() - e4:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xcd)) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e5) - --spsummon - local e6=Effect.CreateEffect(c) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e6:SetCode(EVENT_TO_GRAVE) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e6:SetCondition(c65446452.spcon) - e6:SetTarget(c65446452.sptg) - e6:SetOperation(c65446452.spop) - c:RegisterEffect(e6) -end -function c65446452.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c65446452.spfilter(c,e,tp) - return c:IsRace(RACE_AQUA) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c65446452.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c65446452.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c65446452.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c65446452.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c65446452.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c65446452.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c65446452.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return c:GetRace()~=RACE_AQUA -end +--水舞台装置 +function c65446452.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk & def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e2:SetValue(300) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xcd)) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e5) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_TO_GRAVE) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e6:SetCondition(c65446452.spcon) + e6:SetTarget(c65446452.sptg) + e6:SetOperation(c65446452.spop) + c:RegisterEffect(e6) +end +function c65446452.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c65446452.spfilter(c,e,tp) + return c:IsRace(RACE_AQUA) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c65446452.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c65446452.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c65446452.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c65446452.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c65446452.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c65446452.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c65446452.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:GetRace()~=RACE_AQUA +end diff --git a/script/c65458948.lua b/script/c65458948.lua index 156aff47..2ba84ac7 100644 --- a/script/c65458948.lua +++ b/script/c65458948.lua @@ -1,93 +1,93 @@ ---トゥーン・マーメイド -function c65458948.initial_effect(c) - c:EnableReviveLimit() - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c65458948.spcon) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetCondition(c65458948.sdescon) - e3:SetOperation(c65458948.sdesop) - c:RegisterEffect(e3) - --direct attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DIRECT_ATTACK) - e4:SetCondition(c65458948.dircon) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e5:SetCondition(c65458948.atcon) - e5:SetValue(c65458948.atlimit) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e6:SetCondition(c65458948.atcon) - c:RegisterEffect(e6) - --cannot attack - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e7:SetCode(EVENT_SPSUMMON_SUCCESS) - e7:SetOperation(c65458948.atklimit) - c:RegisterEffect(e7) - --attack cost - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_SINGLE) - e8:SetCode(EFFECT_ATTACK_COST) - e8:SetCost(c65458948.atcost) - e8:SetOperation(c65458948.atop) - c:RegisterEffect(e8) -end -function c65458948.cfilter(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c65458948.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c65458948.cfilter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c65458948.sfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c65458948.sdescon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c65458948.sfilter,1,nil) -end -function c65458948.sdesop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c65458948.atkfilter(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c65458948.dircon(e) - return not Duel.IsExistingMatchingCard(c65458948.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c65458948.atcon(e) - return Duel.IsExistingMatchingCard(c65458948.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c65458948.atlimit(e,c) - return not c:IsType(TYPE_TOON) or c:IsFacedown() -end -function c65458948.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c65458948.atcost(e,c,tp) - return Duel.CheckLPCost(tp,500) -end -function c65458948.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.PayLPCost(tp,500) -end +--トゥーン・マーメイド +function c65458948.initial_effect(c) + c:EnableReviveLimit() + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c65458948.spcon) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c65458948.sdescon) + e3:SetOperation(c65458948.sdesop) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetCondition(c65458948.dircon) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e5:SetCondition(c65458948.atcon) + e5:SetValue(c65458948.atlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e6:SetCondition(c65458948.atcon) + c:RegisterEffect(e6) + --cannot attack + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + e7:SetOperation(c65458948.atklimit) + c:RegisterEffect(e7) + --attack cost + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_ATTACK_COST) + e8:SetCost(c65458948.atcost) + e8:SetOperation(c65458948.atop) + c:RegisterEffect(e8) +end +function c65458948.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c65458948.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c65458948.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c65458948.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c65458948.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c65458948.sfilter,1,nil) +end +function c65458948.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c65458948.atkfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c65458948.dircon(e) + return not Duel.IsExistingMatchingCard(c65458948.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c65458948.atcon(e) + return Duel.IsExistingMatchingCard(c65458948.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c65458948.atlimit(e,c) + return not c:IsType(TYPE_TOON) or c:IsFacedown() +end +function c65458948.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c65458948.atcost(e,c,tp) + return Duel.CheckLPCost(tp,500) +end +function c65458948.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,500) +end diff --git a/script/c65472618.lua b/script/c65472618.lua index 8bdb103c..99f4e7ad 100644 --- a/script/c65472618.lua +++ b/script/c65472618.lua @@ -1,88 +1,88 @@ ---魔装戦士 ドラゴディウス -function c65472618.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_START) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c65472618.atkcon) - e2:SetCost(c65472618.atkcost) - e2:SetOperation(c65472618.atkop) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_DESTROYED) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCondition(c65472618.regcon) - e3:SetTarget(c65472618.regtg) - e3:SetOperation(c65472618.regop) - c:RegisterEffect(e3) -end -function c65472618.atkcon(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttacker() - local bc=Duel.GetAttackTarget() - if not bc then return false end - if tc:IsControler(1-tp) then bc=tc end - e:SetLabelObject(bc) - return bc:IsFaceup() -end -function c65472618.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_DISCARD+REASON_COST,nil) -end -function c65472618.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local bc=e:GetLabelObject() - if bc:IsRelateToBattle() and bc:IsFaceup() and bc:IsControler(1-tp) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(bc:GetAttack()/2) - e1:SetReset(RESET_EVENT+0x1fe0000) - bc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetValue(bc:GetDefense()/2) - bc:RegisterEffect(e2) - end -end -function c65472618.regcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return rp~=tp and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) - and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and Duel.GetAttacker():IsControler(1-tp))) -end -function c65472618.thfilter(c) - return c:IsAttackBelow(2000) and c:IsRace(RACE_WARRIOR+RACE_SPELLCASTER) and not c:IsCode(65472618) -end -function c65472618.regtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c65472618.thfilter,tp,LOCATION_DECK,0,1,nil) end -end -function c65472618.regop(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_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetCondition(c65472618.thcon) - e1:SetOperation(c65472618.thop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c65472618.thfilter2(c) - return c65472618.thfilter(c) and c:IsAbleToHand() -end -function c65472618.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c65472618.thfilter2,tp,LOCATION_DECK,0,1,nil) -end -function c65472618.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,65472618) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c65472618.thfilter2,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--魔装戦士 ドラゴディウス +function c65472618.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c65472618.atkcon) + e2:SetCost(c65472618.atkcost) + e2:SetOperation(c65472618.atkop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DESTROYED) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCondition(c65472618.regcon) + e3:SetTarget(c65472618.regtg) + e3:SetOperation(c65472618.regop) + c:RegisterEffect(e3) +end +function c65472618.atkcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if not bc then return false end + if tc:IsControler(1-tp) then bc=tc end + e:SetLabelObject(bc) + return bc:IsFaceup() +end +function c65472618.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_DISCARD+REASON_COST,nil) +end +function c65472618.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local bc=e:GetLabelObject() + if bc:IsRelateToBattle() and bc:IsFaceup() and bc:IsControler(1-tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(bc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(bc:GetDefense()/2) + bc:RegisterEffect(e2) + end +end +function c65472618.regcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return rp~=tp and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and Duel.GetAttacker():IsControler(1-tp))) +end +function c65472618.thfilter(c) + return c:IsAttackBelow(2000) and c:IsRace(RACE_WARRIOR+RACE_SPELLCASTER) and not c:IsCode(65472618) +end +function c65472618.regtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c65472618.thfilter,tp,LOCATION_DECK,0,1,nil) end +end +function c65472618.regop(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_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c65472618.thcon) + e1:SetOperation(c65472618.thop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c65472618.thfilter2(c) + return c65472618.thfilter(c) and c:IsAbleToHand() +end +function c65472618.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c65472618.thfilter2,tp,LOCATION_DECK,0,1,nil) +end +function c65472618.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,65472618) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c65472618.thfilter2,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c65475294.lua b/script/c65475294.lua index 1b76ae81..c824a29e 100644 --- a/script/c65475294.lua +++ b/script/c65475294.lua @@ -1,25 +1,25 @@ ---味方殺しの女騎士 -function c65475294.initial_effect(c) - --cost - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c65475294.costcon) - e1:SetOperation(c65475294.costop) - c:RegisterEffect(e1) -end -function c65475294.costcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c65475294.costop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.CheckReleaseGroup(tp,nil,1,c) and Duel.SelectYesNo(tp,aux.Stringid(65475294,0)) then - local g=Duel.SelectReleaseGroup(tp,nil,1,1,c) - Duel.Release(g,REASON_COST) - else - Duel.Destroy(c,REASON_COST) - end -end +--味方殺しの女騎士 +function c65475294.initial_effect(c) + --cost + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c65475294.costcon) + e1:SetOperation(c65475294.costop) + c:RegisterEffect(e1) +end +function c65475294.costcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c65475294.costop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.CheckReleaseGroup(tp,nil,1,c) then + local g=Duel.SelectReleaseGroup(tp,nil,1,1,c) + Duel.Release(g,REASON_COST) + else + Duel.Destroy(c,REASON_COST) + end +end diff --git a/script/c65518099.lua b/script/c65518099.lua index 0d9ed165..4bd86366 100644 --- a/script/c65518099.lua +++ b/script/c65518099.lua @@ -1,48 +1,48 @@ ---クリフォート・ツール -function c65518099.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(1,0) - e2:SetTarget(c65518099.splimit) - c:RegisterEffect(e2) - --tohand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(65518099,0)) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_PZONE) - e3:SetCountLimit(1) - e3:SetCost(c65518099.cost) - e3:SetTarget(c65518099.target) - e3:SetOperation(c65518099.operation) - c:RegisterEffect(e3) -end -function c65518099.splimit(e,c,tp,sumtp,sumpos) - return not c:IsSetCard(0xaa) -end -function c65518099.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,800) end - Duel.PayLPCost(tp,800) -end -function c65518099.filter(c) - return c:IsSetCard(0xaa) and not c:IsCode(65518099) and c:IsAbleToHand() -end -function c65518099.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c65518099.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c65518099.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c65518099.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--クリフォート・ツール +function c65518099.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetTarget(c65518099.splimit) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(65518099,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_PZONE) + e3:SetCountLimit(1) + e3:SetCost(c65518099.cost) + e3:SetTarget(c65518099.target) + e3:SetOperation(c65518099.operation) + c:RegisterEffect(e3) +end +function c65518099.splimit(e,c,tp,sumtp,sumpos) + return not c:IsSetCard(0xaa) +end +function c65518099.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c65518099.filter(c) + return c:IsSetCard(0xaa) and not c:IsCode(65518099) and c:IsAbleToHand() +end +function c65518099.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c65518099.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c65518099.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c65518099.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c65612454.lua b/script/c65612454.lua index ce12b032..eab7a536 100644 --- a/script/c65612454.lua +++ b/script/c65612454.lua @@ -1,27 +1,12 @@ --エレキューブ function c65612454.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(c65612454.target) - e1:SetOperation(c65612454.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_THUNDER)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(c65612454.val) 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(c65612454.eqlimit) - c:RegisterEffect(e3) --atkup local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(65612454,0)) @@ -34,25 +19,6 @@ function c65612454.initial_effect(c) e4:SetOperation(c65612454.atkop) c:RegisterEffect(e4) end -function c65612454.eqlimit(e,c) - return c:IsRace(RACE_THUNDER) -end -function c65612454.filter(c) - return c:IsFaceup() and c:IsRace(RACE_THUNDER) -end -function c65612454.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c65612454.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c65612454.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c65612454.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c65612454.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 c65612454.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end Duel.SendtoGrave(e:GetHandler(),REASON_COST) diff --git a/script/c65622692.lua b/script/c65622692.lua index 6e7c2862..53c4097b 100644 --- a/script/c65622692.lua +++ b/script/c65622692.lua @@ -53,7 +53,8 @@ function c65622692.eqlimit(e,c) return c:IsCode(62651957) or e:GetHandler():GetEquipTarget()==c end function c65622692.filter(c) - return c:IsFaceup() and c:IsCode(62651957) + local ct1,ct2=c:GetUnionCount() + return c:IsFaceup() and c:IsCode(62651957) and ct2==0 end function c65622692.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c65622692.filter(chkc) end @@ -73,7 +74,7 @@ function c65622692.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c65622692.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(65622692)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c65646587.lua b/script/c65646587.lua new file mode 100644 index 00000000..783d0c48 --- /dev/null +++ b/script/c65646587.lua @@ -0,0 +1,80 @@ +--ペンデュラム・フュージョン +function c65646587.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,65646587+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c65646587.target) + e1:SetOperation(c65646587.activate) + c:RegisterEffect(e1) +end +function c65646587.filter0(c,e) + local seq=c:GetSequence() + return (seq==6 or seq==7) and c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c65646587.filter1(c,e) + return c:IsOnField() and not c:IsImmuneToEffect(e) +end +function c65646587.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c65646587.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) + if Duel.GetFieldCard(tp,LOCATION_SZONE,6) and Duel.GetFieldCard(tp,LOCATION_SZONE,7) then + mg1:Merge(Duel.GetMatchingGroup(c65646587.filter0,tp,LOCATION_SZONE,0,nil,e)) + end + local res=Duel.IsExistingMatchingCard(c65646587.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c65646587.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c65646587.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c65646587.filter1,nil,e) + if Duel.GetFieldCard(tp,LOCATION_SZONE,6) and Duel.GetFieldCard(tp,LOCATION_SZONE,7) then + mg1:Merge(Duel.GetMatchingGroup(c65646587.filter0,tp,LOCATION_SZONE,0,nil,e)) + end + local sg1=Duel.GetMatchingGroup(c65646587.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c65646587.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c65676461.lua b/script/c65676461.lua index b4049cba..f32d8536 100644 --- a/script/c65676461.lua +++ b/script/c65676461.lua @@ -7,6 +7,7 @@ function c65676461.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(65676461,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetCountLimit(1) e1:SetCode(EVENT_BATTLE_DESTROYING) diff --git a/script/c65685470.lua b/script/c65685470.lua index c80b90ea..6774d2f1 100644 --- a/script/c65685470.lua +++ b/script/c65685470.lua @@ -16,7 +16,7 @@ function c65685470.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c65685470.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c65685470.sptg) e2:SetOperation(c65685470.spop) c:RegisterEffect(e2) @@ -25,21 +25,21 @@ function c65685470.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_UPDATE_ATTACK) e3:SetValue(500) - e3:SetCondition(c65685470.uncon) + e3:SetCondition(aux.IsUnionState) c:RegisterEffect(e3) --Def up local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP) e4:SetCode(EFFECT_UPDATE_DEFENSE) e4:SetValue(500) - e4:SetCondition(c65685470.uncon) + e4:SetCondition(aux.IsUnionState) c:RegisterEffect(e4) --destroy sub local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_EQUIP) e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e5:SetCondition(c65685470.uncon) + e5:SetCondition(aux.IsUnionState) e5:SetValue(1) c:RegisterEffect(e5) --draw @@ -62,9 +62,7 @@ function c65685470.initial_effect(c) e7:SetValue(c65685470.eqlimit) c:RegisterEffect(e7) end -function c65685470.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c65685470.old_union=true function c65685470.eqlimit(e,c) return c:IsSetCard(0x3d) end @@ -89,7 +87,7 @@ function c65685470.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c65685470.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(65685470)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -106,7 +104,7 @@ function c65685470.spop(e,tp,eg,ep,ev,re,r,rp) end end function c65685470.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and e:GetHandler():GetEquipTarget()==eg:GetFirst() + return aux.IsUnionState(e) and e:GetHandler():GetEquipTarget()==eg:GetFirst() end function c65685470.drtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end diff --git a/script/c65703851.lua b/script/c65703851.lua index 35c49831..557b05e7 100644 --- a/script/c65703851.lua +++ b/script/c65703851.lua @@ -22,8 +22,7 @@ function c65703851.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c65703851.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Remove(eg,POS_FACEUP,REASON_EFFECT) end end diff --git a/script/c65743242.lua b/script/c65743242.lua index e78564d7..14b2d68f 100644 --- a/script/c65743242.lua +++ b/script/c65743242.lua @@ -1,31 +1,44 @@ ---地縛霊の誘い -function c65743242.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c65743242.condition) - e1:SetTarget(c65743242.target) - e1:SetOperation(c65743242.activate) - c:RegisterEffect(e1) -end -function c65743242.condition(e,tp,eg,ep,ev,re,r,rp) - return tp~=Duel.GetTurnPlayer() -end -function c65743242.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local ag=eg:GetFirst():GetAttackableTarget() - local at=Duel.GetAttackTarget() - return ag:IsExists(aux.TRUE,1,at) - end -end -function c65743242.activate(e,tp,eg,ep,ev,re,r,rp) - local ag=eg:GetFirst():GetAttackableTarget() - local at=Duel.GetAttackTarget() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=ag:Select(tp,1,1,at) - local tc=g:GetFirst() - if tc then - Duel.ChangeAttackTarget(tc) - end -end +--地縛霊の誘い +function c65743242.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c65743242.condition) + e1:SetTarget(c65743242.target) + e1:SetOperation(c65743242.activate) + c:RegisterEffect(e1) +end +function c65743242.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c65743242.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local ag,da=eg:GetFirst():GetAttackableTarget() + local at=Duel.GetAttackTarget() + return ag:IsExists(aux.TRUE,1,at) or (at~=nil and da) + end +end +function c65743242.activate(e,tp,eg,ep,ev,re,r,rp) + local ag,da=eg:GetFirst():GetAttackableTarget() + local at=Duel.GetAttackTarget() + if da and at~=nil then + local sel=0 + Duel.Hint(HINT_SELECTMSG,tp,31) + if ag:IsExists(aux.TRUE,1,at) then + sel=Duel.SelectOption(tp,1213,1214) + else + sel=Duel.SelectOption(tp,1213) + end + if sel==0 then + Duel.ChangeAttackTarget(nil) + return + end + end + Duel.Hint(HINT_SELECTMSG,tp,549) + local g=ag:Select(tp,1,1,at) + local tc=g:GetFirst() + if tc then + Duel.ChangeAttackTarget(tc) + end +end diff --git a/script/c65758454.lua b/script/c65758454.lua index eb22fa2f..91c96cd5 100644 --- a/script/c65758454.lua +++ b/script/c65758454.lua @@ -21,8 +21,8 @@ end function c65758454.spop(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,c65758454.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c65758454.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) end end diff --git a/script/c65872270.lua b/script/c65872270.lua index fbcf6aa5..abf53912 100644 --- a/script/c65872270.lua +++ b/script/c65872270.lua @@ -1,85 +1,85 @@ ---イグナイト・バースト -function c65872270.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c65872270.target) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCondition(c65872270.descon) - e2:SetTarget(c65872270.destg) - e2:SetOperation(c65872270.desop) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetTarget(c65872270.thtg) - e3:SetOperation(c65872270.thop) - c:RegisterEffect(e3) -end -function c65872270.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - if c65872270.descon(e,tp,eg,ep,ev,re,r,rp) and c65872270.destg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then - e:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND) - e:SetOperation(c65872270.desop) - c65872270.destg(e,tp,eg,ep,ev,re,r,rp,1) - else - e:SetCategory(0) - e:SetOperation(nil) - end -end -function c65872270.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp - and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) -end -function c65872270.desfilter(c) - return c:IsFaceup() and c:IsSetCard(0xc8) -end -function c65872270.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c65872270.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) - and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) - and e:GetHandler():GetFlagEffect(65872270)==0 end - e:GetHandler():RegisterFlagEffect(65872270,RESET_PHASE+PHASE_END,0,1) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,tp,LOCATION_ONFIELD) -end -function c65872270.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,nil) - local ct=g:GetCount() - if ct==0 then return end - if ct>3 then ct=3 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local dg=Duel.SelectMatchingCard(tp,c65872270.desfilter,tp,LOCATION_ONFIELD,0,1,ct,e:GetHandler()) - local ct2=Duel.Destroy(dg,REASON_EFFECT) - if ct2>0 then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local rg=g:Select(tp,ct2,ct2,nil) - Duel.SendtoHand(rg,nil,REASON_EFFECT) - end -end -function c65872270.thfilter(c) - return c:IsFaceup() and c:IsSetCard(0xc8) and c:IsAbleToHand() -end -function c65872270.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c65872270.thfilter,tp,LOCATION_EXTRA,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_EXTRA) -end -function c65872270.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c65872270.thfilter,tp,LOCATION_EXTRA,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--イグナイト・バースト +function c65872270.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c65872270.target) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c65872270.descon) + e2:SetTarget(c65872270.destg) + e2:SetOperation(c65872270.desop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetTarget(c65872270.thtg) + e3:SetOperation(c65872270.thop) + c:RegisterEffect(e3) +end +function c65872270.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c65872270.descon(e,tp,eg,ep,ev,re,r,rp) and c65872270.destg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND) + e:SetOperation(c65872270.desop) + c65872270.destg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c65872270.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp + and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) +end +function c65872270.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc8) +end +function c65872270.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c65872270.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) + and Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) + and e:GetHandler():GetFlagEffect(65872270)==0 end + e:GetHandler():RegisterFlagEffect(65872270,RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,tp,LOCATION_ONFIELD) +end +function c65872270.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,nil) + local ct=g:GetCount() + if ct==0 then return end + if ct>3 then ct=3 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local dg=Duel.SelectMatchingCard(tp,c65872270.desfilter,tp,LOCATION_ONFIELD,0,1,ct,e:GetHandler()) + local ct2=Duel.Destroy(dg,REASON_EFFECT) + if ct2>0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local rg=g:Select(tp,ct2,ct2,nil) + Duel.SendtoHand(rg,nil,REASON_EFFECT) + end +end +function c65872270.thfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc8) and c:IsAbleToHand() +end +function c65872270.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c65872270.thfilter,tp,LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_EXTRA) +end +function c65872270.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c65872270.thfilter,tp,LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c65884091.lua b/script/c65884091.lua index 9fcbd6eb..3d790b95 100644 --- a/script/c65884091.lua +++ b/script/c65884091.lua @@ -6,6 +6,7 @@ function c65884091.initial_effect(c) --immune local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(65884091,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1) diff --git a/script/c65959844.lua b/script/c65959844.lua index fe2b4d0a..88712f64 100644 --- a/script/c65959844.lua +++ b/script/c65959844.lua @@ -36,9 +36,9 @@ function c65959844.initial_effect(c) e4:SetOperation(c65959844.desop) c:RegisterEffect(e4) end -function c65959844.ntcon(e,c) +function c65959844.ntcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + return minc==0 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 end function c65959844.nttg(e,c) return c:IsLevelAbove(5) and c:IsType(TYPE_DUAL) diff --git a/script/c65976795.lua b/script/c65976795.lua new file mode 100644 index 00000000..23be9d9b --- /dev/null +++ b/script/c65976795.lua @@ -0,0 +1,83 @@ +--Subterror Behemoth Stygokraken +function c65976795.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(65976795,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,65976795) + e1:SetTarget(c65976795.target) + e1:SetOperation(c65976795.operation) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(65976795,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetCondition(c65976795.spcon) + e2:SetTarget(c65976795.sptg) + e2:SetOperation(c65976795.spop) + c:RegisterEffect(e2) + --turn set + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(65976795,2)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c65976795.postg) + e3:SetOperation(c65976795.posop) + c:RegisterEffect(e3) +end +function c65976795.filter(c) + return c:IsFaceup() and c:IsSetCard(0x10ed) +end +function c65976795.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ct=Duel.GetMatchingGroupCount(c65976795.filter,tp,LOCATION_MZONE,0,nil) + if chkc then return chkc:IsOnField() and chkc:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,ct,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFacedown,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,ct,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c65976795.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c65976795.cfilter(c,tp) + return c:IsPreviousPosition(POS_FACEUP) and c:IsFacedown() and c:IsControler(tp) +end +function c65976795.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c65976795.cfilter,1,nil,tp) + and not Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) +end +function c65976795.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c65976795.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)==0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c65976795.postg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(65976795)==0 end + c:RegisterFlagEffect(65976795,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) +end +function c65976795.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c66066482.lua b/script/c66066482.lua index d75c3447..2a1b233f 100644 --- a/script/c66066482.lua +++ b/script/c66066482.lua @@ -51,9 +51,9 @@ function c66066482.eqop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end if c:IsFacedown() or not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c66066482.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c66066482.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if not Duel.Equip(tp,tc,c,true) then return end local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) diff --git a/script/c66084673.lua b/script/c66084673.lua index f7b9db5a..5f963786 100644 --- a/script/c66084673.lua +++ b/script/c66084673.lua @@ -1,47 +1,47 @@ ---空炎星-サイチョウ -function c66084673.initial_effect(c) - --attack up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(66084673,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetCondition(c66084673.atkcon) - e1:SetCost(c66084673.atkcost) - e1:SetOperation(c66084673.atkop) - c:RegisterEffect(e1) -end -function c66084673.atkcon(e,tp,eg,ep,ev,re,r,rp) - return (Duel.GetAttacker():IsControler(tp) and Duel.GetAttacker():IsSetCard(0x79)) - or (Duel.GetAttackTarget() and Duel.GetAttackTarget():IsControler(tp) and Duel.GetAttackTarget():IsSetCard(0x79)) -end -function c66084673.filter1(c) - return c:IsFaceup() and c:IsSetCard(0x7c) and c:IsAbleToGraveAsCost() -end -function c66084673.filter2(c) - return c:IsSetCard(0x79) and c:GetBaseAttack()>0 and c:IsAbleToGraveAsCost() -end -function c66084673.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(66084673)==0 - and Duel.IsExistingMatchingCard(c66084673.filter1,tp,LOCATION_ONFIELD,0,1,nil) - and Duel.IsExistingMatchingCard(c66084673.filter2,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g1=Duel.SelectMatchingCard(tp,c66084673.filter1,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g2=Duel.SelectMatchingCard(tp,c66084673.filter2,tp,LOCATION_HAND,0,1,1,nil) - e:SetLabel(g2:GetFirst():GetBaseAttack()) - g1:Merge(g2) - Duel.SendtoGrave(g1,REASON_COST) - e:GetHandler():RegisterFlagEffect(66084673,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) -end -function c66084673.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=Duel.GetAttacker() - if c:IsControler(1-tp) then c=Duel.GetAttackTarget() end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(e:GetLabel()) - c:RegisterEffect(e1) -end +--空炎星-サイチョウ +function c66084673.initial_effect(c) + --attack up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(66084673,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c66084673.atkcon) + e1:SetCost(c66084673.atkcost) + e1:SetOperation(c66084673.atkop) + c:RegisterEffect(e1) +end +function c66084673.atkcon(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetAttacker():IsControler(tp) and Duel.GetAttacker():IsSetCard(0x79)) + or (Duel.GetAttackTarget() and Duel.GetAttackTarget():IsControler(tp) and Duel.GetAttackTarget():IsSetCard(0x79)) +end +function c66084673.filter1(c) + return c:IsFaceup() and c:IsSetCard(0x7c) and c:IsAbleToGraveAsCost() +end +function c66084673.filter2(c) + return c:IsSetCard(0x79) and c:GetBaseAttack()>0 and c:IsAbleToGraveAsCost() +end +function c66084673.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(66084673)==0 + and Duel.IsExistingMatchingCard(c66084673.filter1,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.IsExistingMatchingCard(c66084673.filter2,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c66084673.filter1,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c66084673.filter2,tp,LOCATION_HAND,0,1,1,nil) + e:SetLabel(g2:GetFirst():GetBaseAttack()) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) + e:GetHandler():RegisterFlagEffect(66084673,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c66084673.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=Duel.GetAttacker() + if c:IsControler(1-tp) then c=Duel.GetAttackTarget() end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(e:GetLabel()) + c:RegisterEffect(e1) +end diff --git a/script/c66094973.lua b/script/c66094973.lua index ea3fcef8..36fef933 100644 --- a/script/c66094973.lua +++ b/script/c66094973.lua @@ -1,118 +1,118 @@ ---トランスフォーム・スフィア -function c66094973.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(66094973,0)) - e1:SetCategory(CATEGORY_HANDES+CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c66094973.eqcon) - e1:SetTarget(c66094973.eqtg) - e1:SetOperation(c66094973.eqop) - c:RegisterEffect(e1) - --to defense - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_BATTLE) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c66094973.poscon) - e2:SetOperation(c66094973.posop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(66094973,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c66094973.spcon) - e3:SetTarget(c66094973.sptg) - e3:SetOperation(c66094973.spop) - e3:SetLabelObject(e1) - c:RegisterEffect(e3) -end -function c66094973.eqcon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsHasEffect(66094973) -end -function c66094973.filter(c) - return c:IsPosition(POS_FACEUP_DEFENSE) and c:IsAbleToChangeControler() -end -function c66094973.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c66094973.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.GetFieldGroup(tp,LOCATION_HAND,0)~=0 - and Duel.IsExistingTarget(c66094973.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c66094973.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c66094973.eqlimit(e,c) - return e:GetOwner()==c -end -function c66094973.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetFieldGroup(tp,LOCATION_HAND,0)==0 then return end - Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - if c:IsFaceup() and c:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,tc,c,false) then return end - --Add Equip limit - e:SetLabelObject(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c66094973.eqlimit) - tc:RegisterEffect(e1) - if atk>0 then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SET_AVAILABLE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - tc:RegisterEffect(e2) - end - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) - e3:SetCode(66094973) - e3:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e3) - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c66094973.poscon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetAttackedCount()>0 -end -function c66094973.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsAttackPos() then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end -end -function c66094973.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsHasEffect(66094973) -end -function c66094973.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local tc=e:GetLabelObject():GetLabelObject() - Duel.SetTargetCard(tc) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) -end -function c66094973.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummon(tp) then - if Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE)==0 then - Duel.SendtoGrave(tc,REASON_EFFECT) - end - end -end +--トランスフォーム・スフィア +function c66094973.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(66094973,0)) + e1:SetCategory(CATEGORY_HANDES+CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c66094973.eqcon) + e1:SetTarget(c66094973.eqtg) + e1:SetOperation(c66094973.eqop) + c:RegisterEffect(e1) + --to defense + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c66094973.poscon) + e2:SetOperation(c66094973.posop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(66094973,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c66094973.spcon) + e3:SetTarget(c66094973.sptg) + e3:SetOperation(c66094973.spop) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) +end +function c66094973.eqcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(66094973) +end +function c66094973.filter(c) + return c:IsPosition(POS_FACEUP_DEFENSE) and c:IsAbleToChangeControler() +end +function c66094973.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c66094973.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.GetFieldGroup(tp,LOCATION_HAND,0)~=0 + and Duel.IsExistingTarget(c66094973.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c66094973.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c66094973.eqlimit(e,c) + return e:GetOwner()==c +end +function c66094973.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetFieldGroup(tp,LOCATION_HAND,0)==0 then return end + Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c66094973.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SET_AVAILABLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e3:SetCode(66094973) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c66094973.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetAttackedCount()>0 +end +function c66094973.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsAttackPos() then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c66094973.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasEffect(66094973) +end +function c66094973.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=e:GetLabelObject():GetLabelObject() + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) +end +function c66094973.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummon(tp) then + if Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE)==0 then + Duel.SendtoGrave(tc,REASON_EFFECT) + end + end +end diff --git a/script/c66127916.lua b/script/c66127916.lua index cf015eae..25de1e68 100644 --- a/script/c66127916.lua +++ b/script/c66127916.lua @@ -1,47 +1,46 @@ ---融合準備 -function c66127916.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c66127916.target) - e1:SetOperation(c66127916.activate) - c:RegisterEffect(e1) -end -function c66127916.filter1(c,tp) - return c.material and Duel.IsExistingMatchingCard(c66127916.filter2,tp,LOCATION_DECK,0,1,nil,c) -end -function c66127916.filter2(c,fc) - if c:IsForbidden() or not c:IsAbleToHand() then return false end - return c:IsCode(table.unpack(fc.material)) -end -function c66127916.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c66127916.filter1,tp,LOCATION_EXTRA,0,1,nil,tp) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c66127916.filter3(c) - return c:IsCode(24094653) and c:IsAbleToHand() -end -function c66127916.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local cg=Duel.SelectMatchingCard(tp,c66127916.filter1,tp,LOCATION_EXTRA,0,1,1,nil,tp) - if cg:GetCount()==0 then return end - Duel.ConfirmCards(1-tp,cg) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c66127916.filter2,tp,LOCATION_DECK,0,1,1,nil,cg:GetFirst()) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - local tg=Duel.GetMatchingGroup(c66127916.filter3,tp,LOCATION_GRAVE,0,nil) - if tg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(66127916,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=tg:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end - Duel.SendtoHand(sg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,sg) - end - end -end +--融合準備 +function c66127916.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c66127916.target) + e1:SetOperation(c66127916.activate) + c:RegisterEffect(e1) +end +function c66127916.filter1(c,tp) + return c.material and Duel.IsExistingMatchingCard(c66127916.filter2,tp,LOCATION_DECK,0,1,nil,c) +end +function c66127916.filter2(c,fc) + if c:IsForbidden() or not c:IsAbleToHand() then return false end + return c:IsCode(table.unpack(fc.material)) +end +function c66127916.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c66127916.filter1,tp,LOCATION_EXTRA,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c66127916.filter3(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c66127916.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local cg=Duel.SelectMatchingCard(tp,c66127916.filter1,tp,LOCATION_EXTRA,0,1,1,nil,tp) + if cg:GetCount()==0 then return end + Duel.ConfirmCards(1-tp,cg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c66127916.filter2,tp,LOCATION_DECK,0,1,1,nil,cg:GetFirst()) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + local tg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c66127916.filter3),tp,LOCATION_GRAVE,0,nil) + if tg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(66127916,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=tg:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end + end +end diff --git a/script/c6614221.lua b/script/c6614221.lua index 919ca2ef..e7d21bfe 100644 --- a/script/c6614221.lua +++ b/script/c6614221.lua @@ -1,52 +1,76 @@ ---霧の王 -function c6614221.initial_effect(c) - --decrease tribute - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DECREASE_TRIBUTE) - e1:SetValue(0x2) - c:RegisterEffect(e1) - --tribute check - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_MATERIAL_CHECK) - e2:SetValue(c6614221.valcheck) - c:RegisterEffect(e2) - --give atk effect only when summon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_SUMMON_COST) - e3:SetOperation(c6614221.facechk) - e3:SetLabelObject(e2) - c:RegisterEffect(e3) - --cannot release - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_CANNOT_RELEASE) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(1,1) - c:RegisterEffect(e4) -end -function c6614221.valcheck(e,c) - local g=c:GetMaterial() - local tc=g:GetFirst() - local atk=0 - while tc do - local catk=tc:GetTextAttack() - atk=atk+(catk>=0 and catk or 0) - tc=g:GetNext() - end - if e:GetLabel()==1 then - e:SetLabel(0) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - end -end -function c6614221.facechk(e,tp,eg,ep,ev,re,r,rp) - e:GetLabelObject():SetLabel(1) -end +--霧の王 +function c6614221.initial_effect(c) + --summon with 1 tribute + local e0=Effect.CreateEffect(c) + e0:SetDescription(aux.Stringid(6614221,0)) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_SUMMON_PROC) + e0:SetCondition(c6614221.ttcon) + e0:SetOperation(c6614221.ttop) + e0:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e0) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(6614221,1)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c6614221.ntcon) + c:RegisterEffect(e1) + --tribute check + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c6614221.valcheck) + c:RegisterEffect(e2) + --give atk effect only when summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SUMMON_COST) + e3:SetOperation(c6614221.facechk) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --cannot release + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_RELEASE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,1) + c:RegisterEffect(e4) +end +function c6614221.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c6614221.ttcon(e,c,minc) + if c==nil then return true end + return minc<=1 and Duel.CheckTribute(c,1) +end +function c6614221.ttop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local g=Duel.SelectTribute(tp,c,1,1) + c:SetMaterial(g) + Duel.Release(g, REASON_SUMMON+REASON_MATERIAL) +end +function c6614221.valcheck(e,c) + local g=c:GetMaterial() + local tc=g:GetFirst() + local atk=0 + while tc do + local catk=tc:GetTextAttack() + atk=atk+(catk>=0 and catk or 0) + tc=g:GetNext() + end + if e:GetLabel()==1 then + e:SetLabel(0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + end +end +function c6614221.facechk(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():SetLabel(1) +end diff --git a/script/c66194206.lua b/script/c66194206.lua index e8da938b..26b3b075 100644 --- a/script/c66194206.lua +++ b/script/c66194206.lua @@ -1,50 +1,50 @@ ---ライトロードの裁き -function c66194206.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c66194206.target) - e1:SetOperation(c66194206.activate) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCondition(c66194206.thcon) - e2:SetTarget(c66194206.thtg) - e2:SetOperation(c66194206.thop) - c:RegisterEffect(e2) -end -function c66194206.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToDeck() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c66194206.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - c:CancelToGrave() - Duel.SendtoDeck(c,nil,0,REASON_EFFECT) - end -end -function c66194206.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_DECK) and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsSetCard(0x38) - and bit.band(r,REASON_EFFECT)~=0 -end -function c66194206.thfilter(c) - return c:IsCode(57774843) and c:IsAbleToHand() -end -function c66194206.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c66194206.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c66194206.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstMatchingCard(c66194206.thfilter,tp,LOCATION_DECK,0,nil) - if tc then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--ライトロードの裁き +function c66194206.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c66194206.target) + e1:SetOperation(c66194206.activate) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c66194206.thcon) + e2:SetTarget(c66194206.thtg) + e2:SetOperation(c66194206.thop) + c:RegisterEffect(e2) +end +function c66194206.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToDeck() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c66194206.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.SendtoDeck(c,nil,0,REASON_EFFECT) + end +end +function c66194206.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_DECK) and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():IsSetCard(0x38) + and bit.band(r,REASON_EFFECT)~=0 +end +function c66194206.thfilter(c) + return c:IsCode(57774843) and c:IsAbleToHand() +end +function c66194206.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c66194206.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c66194206.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstMatchingCard(c66194206.thfilter,tp,LOCATION_DECK,0,nil) + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c6628343.lua b/script/c6628343.lua index e50d99e4..5898f62c 100644 --- a/script/c6628343.lua +++ b/script/c6628343.lua @@ -1,98 +1,98 @@ ---開闢の騎士 -function c6628343.initial_effect(c) - --gain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_BE_MATERIAL) - e1:SetCondition(c6628343.mtcon) - e1:SetOperation(c6628343.mtop) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_REMOVE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,6628343) - e2:SetCondition(c6628343.thcon) - e2:SetTarget(c6628343.thtg) - e2:SetOperation(c6628343.thop) - c:RegisterEffect(e2) -end -function c6628343.mtcon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_RITUAL -end -function c6628343.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,6628343)~=0 then return end - local c=e:GetHandler() - local g=eg:Filter(Card.IsSetCard,nil,0x10cf) - local rc=g:GetFirst() - if not rc then return end - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(6628343,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c6628343.rmtg) - e1:SetOperation(c6628343.rmop) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(6628343,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(c6628343.atcon) - e2:SetOperation(c6628343.atop) - e2:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e2,true) - if not rc:IsType(TYPE_EFFECT) then - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_ADD_TYPE) - e3:SetValue(TYPE_EFFECT) - e3:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e3,true) - end - rc:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(6628343,2)) - Duel.RegisterFlagEffect(tp,6628343,RESET_PHASE+PHASE_END,0,1) -end -function c6628343.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c6628343.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end -function c6628343.atcon(e,tp,eg,ep,ev,re,r,rp) - return aux.bdogcon(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():IsChainAttackable() -end -function c6628343.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end -function c6628343.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_GRAVE) -end -function c6628343.thfilter(c) - return c:GetType()==TYPE_SPELL+TYPE_RITUAL and c:IsAbleToHand() -end -function c6628343.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c6628343.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c6628343.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c6628343.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--開闢の騎士 +function c6628343.initial_effect(c) + --gain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_BE_MATERIAL) + e1:SetCondition(c6628343.mtcon) + e1:SetOperation(c6628343.mtop) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_REMOVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,6628343) + e2:SetCondition(c6628343.thcon) + e2:SetTarget(c6628343.thtg) + e2:SetOperation(c6628343.thop) + c:RegisterEffect(e2) +end +function c6628343.mtcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RITUAL +end +function c6628343.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,6628343)~=0 then return end + local c=e:GetHandler() + local g=eg:Filter(Card.IsSetCard,nil,0x10cf) + local rc=g:GetFirst() + if not rc then return end + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(6628343,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c6628343.rmtg) + e1:SetOperation(c6628343.rmop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(6628343,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c6628343.atcon) + e2:SetOperation(c6628343.atop) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + if not rc:IsType(TYPE_EFFECT) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_ADD_TYPE) + e3:SetValue(TYPE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e3,true) + end + rc:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(6628343,2)) + Duel.RegisterFlagEffect(tp,6628343,RESET_PHASE+PHASE_END,0,1) +end +function c6628343.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c6628343.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end +function c6628343.atcon(e,tp,eg,ep,ev,re,r,rp) + return aux.bdogcon(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():IsChainAttackable() +end +function c6628343.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end +function c6628343.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_GRAVE) +end +function c6628343.thfilter(c) + return c:GetType()==TYPE_SPELL+TYPE_RITUAL and c:IsAbleToHand() +end +function c6628343.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c6628343.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c6628343.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c6628343.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c66399653.lua b/script/c66399653.lua index fa9ec18f..bf128de9 100644 --- a/script/c66399653.lua +++ b/script/c66399653.lua @@ -44,7 +44,7 @@ function c66399653.tgfilter(c,e,tp,chk) end function c66399653.cfilter(c,ec) return c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) - and c:IsType(TYPE_UNION) and c:CheckEquipTarget(ec) and not c:IsCode(ec:GetCode()) + and c:IsType(TYPE_UNION) and c:CheckEquipTarget(ec) and aux.CheckUnionEquip(c,ec) and not c:IsCode(ec:GetCode()) end function c66399653.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return eg:IsContains(chkc) and c66399653.tgfilter(chkc,e,tp,true) end @@ -61,12 +61,12 @@ end function c66399653.eqop(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(tp) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) local sg=Duel.SelectMatchingCard(tp,c66399653.cfilter,tp,LOCATION_DECK,0,1,1,nil,tc) local ec=sg:GetFirst() - if ec and Duel.Equip(tp,ec,tc) then - ec:SetStatus(STATUS_UNION,true) + if ec and aux.CheckUnionEquip(ec,tc) and Duel.Equip(tp,ec,tc) then + aux.SetUnionState(ec) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE) diff --git a/script/c66436257.lua b/script/c66436257.lua index 733e49f9..051537b4 100644 --- a/script/c66436257.lua +++ b/script/c66436257.lua @@ -1,30 +1,30 @@ ---ヴォルカニック・カウンター -function c66436257.initial_effect(c) - --remove - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(66436257,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetRange(LOCATION_GRAVE) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetCondition(c66436257.condition) - e1:SetTarget(c66436257.target) - e1:SetOperation(c66436257.operation) - c:RegisterEffect(e1) -end -function c66436257.condition(e,tp,eg,ep,ev,re,r,rp) - return ep==tp -end -function c66436257.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) -end -function c66436257.filter(c) - return c:IsAttribute(ATTRIBUTE_FIRE) and c:GetCode()~=66436257 -end -function c66436257.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT)~=0 - and Duel.IsExistingMatchingCard(c66436257.filter,tp,LOCATION_GRAVE,0,1,nil) then - Duel.Damage(1-tp,ev,REASON_EFFECT) - end -end +--ヴォルカニック・カウンター +function c66436257.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(66436257,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c66436257.condition) + e1:SetTarget(c66436257.target) + e1:SetOperation(c66436257.operation) + c:RegisterEffect(e1) +end +function c66436257.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c66436257.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c66436257.filter(c) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:GetCode()~=66436257 +end +function c66436257.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT)~=0 + and Duel.IsExistingMatchingCard(c66436257.filter,tp,LOCATION_GRAVE,0,1,nil) then + Duel.Damage(1-tp,ev,REASON_EFFECT) + end +end diff --git a/script/c66451379.lua b/script/c66451379.lua index f310d809..71dd3ee7 100644 --- a/script/c66451379.lua +++ b/script/c66451379.lua @@ -1,79 +1,79 @@ ---グレイドル・アリゲーター -function c66451379.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c66451379.eqcon) - e1:SetTarget(c66451379.eqtg) - e1:SetOperation(c66451379.eqop) - c:RegisterEffect(e1) -end -function c66451379.eqcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and re:IsActiveType(TYPE_SPELL))) - and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) -end -function c66451379.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c66451379.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c66451379.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then - Duel.Equip(tp,c,tc,true) - --Add Equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c66451379.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) - --control - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_SET_CONTROL) - e2:SetValue(tp) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - --Destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EVENT_LEAVE_FIELD_P) - e3:SetOperation(c66451379.checkop) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetOperation(c66451379.desop) - e4:SetReset(RESET_EVENT+0x17e0000) - e4:SetLabelObject(e3) - c:RegisterEffect(e4) - end -end -function c66451379.checkop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsDisabled() then - e:SetLabel(1) - else e:SetLabel(0) end -end -function c66451379.desop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabelObject():GetLabel()~=0 then return end - local tc=e:GetHandler():GetEquipTarget() - if tc and tc:IsLocation(LOCATION_MZONE) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--グレイドル・アリゲーター +function c66451379.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c66451379.eqcon) + e1:SetTarget(c66451379.eqtg) + e1:SetOperation(c66451379.eqop) + c:RegisterEffect(e1) +end +function c66451379.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and re:IsActiveType(TYPE_SPELL))) + and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c66451379.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c66451379.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c66451379.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then + Duel.Equip(tp,c,tc,true) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c66451379.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + --control + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_CONTROL) + e2:SetValue(tp) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_LEAVE_FIELD_P) + e3:SetOperation(c66451379.checkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c66451379.desop) + e4:SetReset(RESET_EVENT+0x17e0000) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) + end +end +function c66451379.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c66451379.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetEquipTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c66506689.lua b/script/c66506689.lua index 31401629..5240c04e 100644 --- a/script/c66506689.lua +++ b/script/c66506689.lua @@ -7,7 +7,7 @@ function c66506689.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(66506689,0)) e1:SetCategory(CATEGORY_POSITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCountLimit(1) e1:SetCode(EVENT_FREE_CHAIN) diff --git a/script/c66523544.lua b/script/c66523544.lua index 623d4a48..3f0fa7bb 100644 --- a/script/c66523544.lua +++ b/script/c66523544.lua @@ -7,6 +7,7 @@ function c66523544.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(66523544,0)) e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c66540884.lua b/script/c66540884.lua index 2ccb4552..a16efe38 100644 --- a/script/c66540884.lua +++ b/script/c66540884.lua @@ -1,34 +1,34 @@ ---トリック・デーモン -function c66540884.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(66540884,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCountLimit(1,66540884) - e1:SetCondition(c66540884.thcon) - e1:SetTarget(c66540884.thtg) - e1:SetOperation(c66540884.thop) - c:RegisterEffect(e1) -end -function c66540884.thcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_EFFECT) or c:IsReason(REASON_BATTLE) -end -function c66540884.thfilter(c) - return c:IsSetCard(0x45) and c:GetCode()~=66540884 and c:IsAbleToHand() -end -function c66540884.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c66540884.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c66540884.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c66540884.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--トリック・デーモン +function c66540884.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(66540884,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCountLimit(1,66540884) + e1:SetCondition(c66540884.thcon) + e1:SetTarget(c66540884.thtg) + e1:SetOperation(c66540884.thop) + c:RegisterEffect(e1) +end +function c66540884.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) or c:IsReason(REASON_BATTLE) +end +function c66540884.thfilter(c) + return c:IsSetCard(0x45) and c:GetCode()~=66540884 and c:IsAbleToHand() +end +function c66540884.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c66540884.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c66540884.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c66540884.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c66547759.lua b/script/c66547759.lua index 60af6f59..b5027f4a 100644 --- a/script/c66547759.lua +++ b/script/c66547759.lua @@ -24,7 +24,7 @@ function c66547759.initial_effect(c) e3:SetCategory(CATEGORY_NEGATE) e3:SetType(EFFECT_TYPE_QUICK_F) e3:SetCode(EVENT_CHAINING) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1) e3:SetCondition(c66547759.discon) @@ -69,8 +69,7 @@ function c66547759.distg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) end function c66547759.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then Duel.SendtoGrave(eg,REASON_EFFECT) end end diff --git a/script/c66574418.lua b/script/c66574418.lua index e88c7e14..77a61c3a 100644 --- a/script/c66574418.lua +++ b/script/c66574418.lua @@ -1,63 +1,63 @@ ---伝説の黒石 -function c66574418.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,66574418) - e1:SetCost(c66574418.spcost) - e1:SetTarget(c66574418.sptg) - e1:SetOperation(c66574418.spop) - c:RegisterEffect(e1) - --to deck - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1,66574418) - e2:SetTarget(c66574418.tdtg) - e2:SetOperation(c66574418.tdop) - c:RegisterEffect(e2) -end -function c66574418.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c66574418.spfilter(c,e,tp) - return c:IsSetCard(0x3b) and c:IsLevelBelow(7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c66574418.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c66574418.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c66574418.spop(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,c66574418.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c66574418.tdfilter(c) - return c:IsSetCard(0x3b) and c:IsLevelBelow(7) and c:IsAbleToDeck() -end -function c66574418.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c66574418.tdfilter(chkc) end - if chk==0 then return e:GetHandler():IsAbleToHand() - and Duel.IsExistingTarget(c66574418.tdfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c66574418.tdfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c66574418.tdop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local c=e:GetHandler() - if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 - and tc:IsLocation(LOCATION_DECK+LOCATION_EXTRA) and c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--伝説の黒石 +function c66574418.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,66574418) + e1:SetCost(c66574418.spcost) + e1:SetTarget(c66574418.sptg) + e1:SetOperation(c66574418.spop) + c:RegisterEffect(e1) + --to deck + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,66574418) + e2:SetTarget(c66574418.tdtg) + e2:SetOperation(c66574418.tdop) + c:RegisterEffect(e2) +end +function c66574418.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c66574418.spfilter(c,e,tp) + return c:IsSetCard(0x3b) and c:IsLevelBelow(7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c66574418.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c66574418.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c66574418.spop(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,c66574418.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c66574418.tdfilter(c) + return c:IsSetCard(0x3b) and c:IsLevelBelow(7) and c:IsAbleToDeck() +end +function c66574418.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c66574418.tdfilter(chkc) end + if chk==0 then return e:GetHandler():IsAbleToHand() + and Duel.IsExistingTarget(c66574418.tdfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c66574418.tdfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c66574418.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 + and tc:IsLocation(LOCATION_DECK+LOCATION_EXTRA) and c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c66607691.lua b/script/c66607691.lua index 8b72516e..a33e5970 100644 --- a/script/c66607691.lua +++ b/script/c66607691.lua @@ -26,8 +26,8 @@ end function c66607691.activate(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,c66607691.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()~=0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c66607691.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) g:GetFirst():CompleteProcedure() end diff --git a/script/c66668900.lua b/script/c66668900.lua index 1fd5ec36..d709ea62 100644 --- a/script/c66668900.lua +++ b/script/c66668900.lua @@ -1,28 +1,28 @@ ---アクアアクトレス・グッピー -function c66668900.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c66668900.sptg) - e1:SetOperation(c66668900.spop) - c:RegisterEffect(e1) -end -function c66668900.filter(c,e,tp) - return c:IsSetCard(0xcd) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c66668900.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c66668900.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c66668900.spop(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,c66668900.filter,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 c66668900.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c66668900.sptg) + e1:SetOperation(c66668900.spop) + c:RegisterEffect(e1) +end +function c66668900.filter(c,e,tp) + return c:IsSetCard(0xcd) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c66668900.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c66668900.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c66668900.spop(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,c66668900.filter,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 diff --git a/script/c66698383.lua b/script/c66698383.lua new file mode 100644 index 00000000..084ac527 --- /dev/null +++ b/script/c66698383.lua @@ -0,0 +1,74 @@ +--Vermillion Dragon Mech +function c66698383.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(66698383,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c66698383.descost) + e1:SetTarget(c66698383.destg) + e1:SetOperation(c66698383.desop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(66698383,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c66698383.thcon) + e2:SetTarget(c66698383.thtg) + e2:SetOperation(c66698383.thop) + c:RegisterEffect(e2) +end +function c66698383.cfilter(c,tp) + return (c:IsLocation(LOCATION_HAND+LOCATION_GRAVE) or c:IsFaceup()) + and c:IsType(TYPE_TUNER) and c:IsAbleToRemoveAsCost() + and Duel.IsExistingTarget(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) +end +function c66698383.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c66698383.cfilter,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c66698383.cfilter,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE,0,1,1,nil,tp) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c66698383.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c66698383.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c66698383.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_EFFECT) + and c:IsPreviousLocation(LOCATION_MZONE) and c:GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c66698383.thfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TUNER) and c:IsAbleToHand() +end +function c66698383.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c66698383.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c66698383.thfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c66698383.thfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c66698383.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c66727115.lua b/script/c66727115.lua index c9cfc56f..a874ba9c 100644 --- a/script/c66727115.lua +++ b/script/c66727115.lua @@ -1,46 +1,46 @@ ---武神逐 -function c66727115.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c66727115.cost) - e1:SetTarget(c66727115.target) - e1:SetOperation(c66727115.activate) - c:RegisterEffect(e1) -end -function c66727115.rfilter(c,e,tp) - return c:IsSetCard(0x88) and c:IsRace(RACE_BEASTWARRIOR) - and Duel.IsExistingTarget(c66727115.spfilter,tp,LOCATION_GRAVE,0,1,nil,c:GetCode(),e,tp) -end -function c66727115.spfilter(c,code,e,tp) - return c:IsSetCard(0x88) and c:GetCode()~=code and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c66727115.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - return true -end -function c66727115.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c66727115.spfilter(chkc,e:GetLabel(),e,tp) end - if chk==0 then - if e:GetLabel()~=1 then return false end - e:SetLabel(0) - return Duel.CheckReleaseGroup(tp,c66727115.rfilter,1,nil,e,tp) - end - local g=Duel.SelectReleaseGroup(tp,c66727115.rfilter,1,1,nil,e,tp) - local code=g:GetFirst():GetCode() - e:SetLabel(code) - Duel.Release(g,REASON_COST) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectTarget(tp,c66727115.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,code,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,sg,1,0,0) -end -function c66727115.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--武神逐 +function c66727115.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c66727115.cost) + e1:SetTarget(c66727115.target) + e1:SetOperation(c66727115.activate) + c:RegisterEffect(e1) +end +function c66727115.rfilter(c,e,tp) + return c:IsSetCard(0x88) and c:IsRace(RACE_BEASTWARRIOR) + and Duel.IsExistingTarget(c66727115.spfilter,tp,LOCATION_GRAVE,0,1,nil,c:GetCode(),e,tp) +end +function c66727115.spfilter(c,code,e,tp) + return c:IsSetCard(0x88) and c:GetCode()~=code and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c66727115.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c66727115.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c66727115.spfilter(chkc,e:GetLabel(),e,tp) end + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c66727115.rfilter,1,nil,e,tp) + end + local g=Duel.SelectReleaseGroup(tp,c66727115.rfilter,1,1,nil,e,tp) + local code=g:GetFirst():GetCode() + e:SetLabel(code) + Duel.Release(g,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectTarget(tp,c66727115.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,code,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,sg,1,0,0) +end +function c66727115.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c66752837.lua b/script/c66752837.lua index 3fdbeffd..b393ad7b 100644 --- a/script/c66752837.lua +++ b/script/c66752837.lua @@ -1,65 +1,64 @@ ---霊廟の守護者 -function c66752837.initial_effect(c) - --double tribute - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DOUBLE_TRIBUTE) - e1:SetValue(c66752837.tricon) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,66752837) - e2:SetCondition(c66752837.spcon) - e2:SetTarget(c66752837.sptg) - e2:SetOperation(c66752837.spop) - c:RegisterEffect(e2) -end -function c66752837.tricon(e,c) - return c:IsRace(RACE_DRAGON) -end -function c66752837.cfilter(c) - return c:IsRace(RACE_DRAGON) and c:GetPreviousRaceOnField()==RACE_DRAGON - and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousLocation(LOCATION_MZONE) - and c:IsReason(REASON_EFFECT+REASON_BATTLE) and not c:IsCode(66752837) -end -function c66752837.spcon(e,tp,eg,ep,ev,re,r,rp) - if eg:IsContains(e:GetHandler()) then return false end - local g=eg:Filter(c66752837.cfilter,nil) - if g:GetCount()==0 then return false end - e:SetLabel(0) - if g:IsExists(Card.IsType,1,nil,TYPE_NORMAL) then - e:SetLabel(1) - end - return true -end -function c66752837.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c66752837.thfilter(c) - return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_NORMAL) and c:IsAbleToHand() -end -function c66752837.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c66752837.thfilter,tp,LOCATION_GRAVE,0,nil) - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 and e:GetLabel()==1 - and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(66752837,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=g:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end - Duel.SendtoHand(sg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,sg) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--霊廟の守護者 +function c66752837.initial_effect(c) + --double tribute + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DOUBLE_TRIBUTE) + e1:SetValue(c66752837.tricon) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,66752837) + e2:SetCondition(c66752837.spcon) + e2:SetTarget(c66752837.sptg) + e2:SetOperation(c66752837.spop) + c:RegisterEffect(e2) +end +function c66752837.tricon(e,c) + return c:IsRace(RACE_DRAGON) +end +function c66752837.cfilter(c) + return c:IsRace(RACE_DRAGON) and c:GetPreviousRaceOnField()==RACE_DRAGON + and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousLocation(LOCATION_MZONE) + and c:IsReason(REASON_EFFECT+REASON_BATTLE) and not c:IsCode(66752837) +end +function c66752837.spcon(e,tp,eg,ep,ev,re,r,rp) + if eg:IsContains(e:GetHandler()) then return false end + local g=eg:Filter(c66752837.cfilter,nil) + if g:GetCount()==0 then return false end + e:SetLabel(0) + if g:IsExists(Card.IsType,1,nil,TYPE_NORMAL) then + e:SetLabel(1) + end + return true +end +function c66752837.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c66752837.thfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsType(TYPE_NORMAL) and c:IsAbleToHand() +end +function c66752837.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c66752837.thfilter),tp,LOCATION_GRAVE,0,nil) + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 and e:GetLabel()==1 + and g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(66752837,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c66768175.lua b/script/c66768175.lua new file mode 100644 index 00000000..46a5bdc5 --- /dev/null +++ b/script/c66768175.lua @@ -0,0 +1,68 @@ +--EMバラード +function c66768175.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_START) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCondition(c66768175.atkcon1) + e1:SetOperation(c66768175.atkop1) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLED) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c66768175.atkcon2) + e2:SetTarget(c66768175.atktg2) + e2:SetOperation(c66768175.atkop2) + c:RegisterEffect(e2) +end +function c66768175.atkcon1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if not bc then return false end + if tc:IsControler(1-tp) then bc,tc=tc,bc end + e:SetLabelObject(bc) + return bc:IsFaceup() and tc:IsFaceup() and tc:IsSetCard(0x9f) +end +function c66768175.atkop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local bc=e:GetLabelObject() + if bc:IsRelateToBattle() and bc:IsFaceup() and bc:IsControler(1-tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-600) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + end +end +function c66768175.atkcon2(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(tp) and a:IsSetCard(0x9f) +end +function c66768175.atktg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c66768175.atkop2(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local tc=Duel.GetFirstTarget() + if a:IsFaceup() and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=math.max(0,a:GetAttack()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c66815913.lua b/script/c66815913.lua new file mode 100644 index 00000000..2004f717 --- /dev/null +++ b/script/c66815913.lua @@ -0,0 +1,44 @@ +--霊魂鳥-巫鶴 +function c66815913.initial_effect(c) + --spirit return + aux.EnableSpiritReturn(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(66815913,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCondition(c66815913.condition) + e2:SetTarget(c66815913.target) + e2:SetOperation(c66815913.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c66815913.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SPIRIT) +end +function c66815913.condition(e,tp,eg,ep,ev,re,r,rp) + return not eg:IsContains(e:GetHandler()) and eg:IsExists(c66815913.cfilter,1,nil) +end +function c66815913.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c66815913.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c66816282.lua b/script/c66816282.lua index 749d9473..b753e851 100644 --- a/script/c66816282.lua +++ b/script/c66816282.lua @@ -80,8 +80,7 @@ function c66816282.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c66816282.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c66865880.lua b/script/c66865880.lua index de5081f6..02037d09 100644 --- a/script/c66865880.lua +++ b/script/c66865880.lua @@ -1,26 +1,26 @@ ---マシュマロンのメガネ -function c66865880.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCondition(c66865880.con) - e2:SetValue(c66865880.atlimit) - c:RegisterEffect(e2) -end -function c66865880.cfilter(c) - return c:IsFaceup() and c:IsCode(31305911) -end -function c66865880.con(e) - return Duel.IsExistingMatchingCard(c66865880.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c66865880.atlimit(e,c) - return c:IsFacedown() or c:GetCode()~=31305911 -end +--マシュマロンのメガネ +function c66865880.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c66865880.con) + e2:SetValue(c66865880.atlimit) + c:RegisterEffect(e2) +end +function c66865880.cfilter(c) + return c:IsFaceup() and c:IsCode(31305911) +end +function c66865880.con(e) + return Duel.IsExistingMatchingCard(c66865880.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c66865880.atlimit(e,c) + return c:IsFacedown() or c:GetCode()~=31305911 +end diff --git a/script/c6691855.lua b/script/c6691855.lua index a600bf37..7c3a5c52 100644 --- a/script/c6691855.lua +++ b/script/c6691855.lua @@ -1,67 +1,67 @@ ---鎖付き尖盾 -function c6691855.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c6691855.condition) - e1:SetTarget(c6691855.target) - e1:SetOperation(c6691855.operation) - c:RegisterEffect(e1) -end -function c6691855.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c6691855.filter(c) - return c:IsFaceup() -end -function c6691855.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c6691855.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c6691855.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c6691855.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c6691855.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - --Atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(500) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - --def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_DEFENSE) - e2:SetCondition(c6691855.defcon) - e2:SetValue(c6691855.defval) - e2:SetReset(RESET_EVENT+0x1fe0000) - 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) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - end -end -function c6691855.defcon(e) - if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end - local eq=e:GetHandler():GetEquipTarget() - return (eq==Duel.GetAttacker() or eq==Duel.GetAttackTarget()) and eq:IsDefensePos() -end -function c6691855.defval(e,c) - return c:GetAttack() -end +--鎖付き尖盾 +function c6691855.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c6691855.condition) + e1:SetTarget(c6691855.target) + e1:SetOperation(c6691855.operation) + c:RegisterEffect(e1) +end +function c6691855.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c6691855.filter(c) + return c:IsFaceup() +end +function c6691855.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c6691855.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c6691855.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c6691855.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c6691855.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetCondition(c6691855.defcon) + e2:SetValue(c6691855.defval) + e2:SetReset(RESET_EVENT+0x1fe0000) + 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) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c6691855.defcon(e) + if Duel.GetCurrentPhase()~=PHASE_DAMAGE_CAL then return false end + local eq=e:GetHandler():GetEquipTarget() + return (eq==Duel.GetAttacker() or eq==Duel.GetAttackTarget()) and eq:IsDefensePos() +end +function c6691855.defval(e,c) + return c:GetAttack() +end diff --git a/script/c66938505.lua b/script/c66938505.lua new file mode 100644 index 00000000..b3dd0c37 --- /dev/null +++ b/script/c66938505.lua @@ -0,0 +1,72 @@ +--水晶機巧-リオン +function c66938505.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(66938505,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_MAIN_END+TIMING_BATTLE_START+TIMING_BATTLE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,66938505) + e1:SetCondition(c66938505.sccon) + e1:SetTarget(c66938505.sctg) + e1:SetOperation(c66938505.scop) + c:RegisterEffect(e1) +end +function c66938505.sccon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetTurnPlayer()~=tp + and (ph==PHASE_MAIN1 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) or ph==PHASE_MAIN2) +end +function c66938505.scfilter1(c,e,tp,mc) + local mg=Group.FromCards(c,mc) + return not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c66938505.scfilter2,tp,LOCATION_EXTRA,0,1,nil,mg) +end +function c66938505.scfilter2(c,mg) + return c:IsRace(RACE_MACHINE) and c:IsSynchroSummonable(nil,mg) +end +function c66938505.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c66938505.scfilter1(chkc,e,tp,e:GetHandler()) end + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c66938505.scfilter1,tp,LOCATION_REMOVED,0,1,nil,e,tp,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c66938505.scfilter1,tp,LOCATION_REMOVED,0,1,1,nil,e,tp,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c66938505.scop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or not Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE_EFFECT) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + if not c:IsRelateToEffect(e) then return end + local mg=Group.FromCards(c,tc) + local g=Duel.GetMatchingGroup(c66938505.scfilter2,tp,LOCATION_EXTRA,0,nil,mg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetValue(LOCATION_DECK) + e1:SetReset(RESET_EVENT+0x47e0000) + c:RegisterEffect(e1,true) + local e2=e1:Clone() + tc:RegisterEffect(e2,true) + Duel.SynchroSummon(tp,sg:GetFirst(),nil,mg) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c66957584.lua b/script/c66957584.lua index 55bd5a2c..2517b8ca 100644 --- a/script/c66957584.lua +++ b/script/c66957584.lua @@ -67,9 +67,8 @@ end function c66957584.spop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 then return end local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if sg:GetCount()==0 or ft1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) end diff --git a/script/c66970002.lua b/script/c66970002.lua index d26141e5..c7689311 100644 --- a/script/c66970002.lua +++ b/script/c66970002.lua @@ -19,7 +19,7 @@ function c66970002.initial_effect(c) e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) e2:SetDescription(aux.Stringid(66970002,1)) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c66970002.descon) diff --git a/script/c66994718.lua b/script/c66994718.lua index c1cedfcb..683b6178 100644 --- a/script/c66994718.lua +++ b/script/c66994718.lua @@ -1,32 +1,31 @@ ---ラプターズ・ガスト -function c66994718.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetCondition(c66994718.condition) - e1:SetTarget(c66994718.target) - e1:SetOperation(c66994718.activate) - c:RegisterEffect(e1) -end -function c66994718.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xba) -end -function c66994718.condition(e,tp,eg,ep,ev,re,r,rp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) - and Duel.IsExistingMatchingCard(c66994718.cfilter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c66994718.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsDestructable() then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,re:GetHandler(),1,0,0) - end -end -function c66994718.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(re:GetHandler(),REASON_EFFECT) - end -end +--ラプターズ・ガスト +function c66994718.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c66994718.condition) + e1:SetTarget(c66994718.target) + e1:SetOperation(c66994718.activate) + c:RegisterEffect(e1) +end +function c66994718.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xba) +end +function c66994718.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) + and Duel.IsExistingMatchingCard(c66994718.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c66994718.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsDestructable() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,re:GetHandler(),1,0,0) + end +end +function c66994718.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(re:GetHandler(),REASON_EFFECT) + end +end diff --git a/script/c67030233.lua b/script/c67030233.lua index 57de3b97..5da9f5ff 100644 --- a/script/c67030233.lua +++ b/script/c67030233.lua @@ -1,183 +1,165 @@ ---セイヴァー・デモン・ドラゴン -function c67030233.initial_effect(c) - --synchro summon - c:EnableReviveLimit() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_EXTRA) - e1:SetCondition(c67030233.syncon) - e1:SetOperation(c67030233.synop) - e1:SetValue(SUMMON_TYPE_SYNCHRO) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(67030233,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_BATTLED) - e2:SetCondition(c67030233.descon) - e2:SetTarget(c67030233.destg) - e2:SetOperation(c67030233.desop) - c:RegisterEffect(e2) - --Disable - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(67030233,1)) - e3:SetCategory(CATEGORY_DISABLE+CATEGORY_ATKCHANGE) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_MZONE) - e3:SetTarget(c67030233.distg) - e3:SetOperation(c67030233.disop) - c:RegisterEffect(e3) - --to extra & Special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(67030233,2)) - e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCountLimit(1) - e4:SetCode(EVENT_PHASE+PHASE_END) - e4:SetTarget(c67030233.sptg) - e4:SetOperation(c67030233.spop) - c:RegisterEffect(e4) - -- - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetRange(LOCATION_MZONE) - e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e5:SetValue(1) - c:RegisterEffect(e5) -end -function c67030233.matfilter(c,syncard) - return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) -end -function c67030233.synfilter1(c,syncard,lv,g) - if not c:IsCode(21159309) then return false end - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - local t=false - if c:IsType(TYPE_TUNER) then t=true end - local wg=g:Clone() - wg:RemoveCard(c) - return wg:IsExists(c67030233.synfilter2,1,nil,syncard,lv-tlv,wg,t) -end -function c67030233.synfilter2(c,syncard,lv,g,tuner) - if not c:IsCode(70902743) then return false end - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - if not tuner and not c:IsType(TYPE_TUNER) then return false end - return g:IsExists(c67030233.synfilter3,1,c,syncard,lv-tlv) -end -function c67030233.synfilter3(c,syncard,lv) - local mlv=c:GetSynchroLevel(syncard) - local lv1=bit.band(mlv,0xffff) - local lv2=bit.rshift(mlv,16) - return c:IsNotTuner() and (lv1==lv or lv2==lv) -end -function c67030233.syncon(e,c,tuner) - if c==nil then return true end - local tp=c:GetControler() - local mg=Duel.GetMatchingGroup(c67030233.matfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - local lv=c:GetLevel() - if tuner then return c67030233.synfilter1(tuner,c,lv,mg) end - return mg:IsExists(c67030233.synfilter1,1,nil,c,lv,mg) -end -function c67030233.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) - local g=Group.CreateGroup() - local mg=Duel.GetMatchingGroup(c67030233.matfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - local lv=c:GetLevel() - local m1=tuner - if not tuner then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local t1=mg:FilterSelect(tp,c67030233.synfilter1,1,1,nil,c,lv,mg) - m1=t1:GetFirst() - g:AddCard(m1) - end - lv=lv-m1:GetSynchroLevel(c) - local t=false - if m1:IsType(TYPE_TUNER) then t=true end - mg:RemoveCard(m1) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local t2=mg:FilterSelect(tp,c67030233.synfilter2,1,1,nil,c,lv,mg,t) - local m2=t2:GetFirst() - g:AddCard(m2) - lv=lv-m2:GetSynchroLevel(c) - mg:RemoveCard(m2) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local t3=mg:FilterSelect(tp,c67030233.synfilter3,1,1,nil,c,lv) - g:Merge(t3) - c:SetMaterial(g) - Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) -end -function c67030233.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler()==Duel.GetAttacker() -end -function c67030233.desfilter(c) - return c:IsDefensePos() -end -function c67030233.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c67030233.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c67030233.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c67030233.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end -function c67030233.disfilter(c) - return c:IsFaceup() and c:IsType(TYPE_EFFECT) and not c:IsDisabled() -end -function c67030233.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c67030233.disfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c67030233.disfilter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c67030233.disfilter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c67030233.disop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local c=e:GetHandler() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local atk=tc:GetAttack() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(atk) - e3:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e3) - end -end -function c67030233.spfilter(c,e,tp) - return c:IsCode(70902743) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c67030233.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c67030233.spfilter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c67030233.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c67030233.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local c=e:GetHandler() - if bit.band(c:GetOriginalType(),0x802040)~=0 and Duel.SendtoDeck(c,nil,0,REASON_EFFECT)~=0 - and c:IsLocation(LOCATION_EXTRA) and tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--セイヴァー・デモン・ドラゴン +function c67030233.initial_effect(c) + --synchro summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c67030233.syncon) + e1:SetOperation(c67030233.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67030233,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLED) + e2:SetCondition(c67030233.descon) + e2:SetTarget(c67030233.destg) + e2:SetOperation(c67030233.desop) + c:RegisterEffect(e2) + --Disable + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(67030233,1)) + e3:SetCategory(CATEGORY_DISABLE+CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c67030233.distg) + e3:SetOperation(c67030233.disop) + c:RegisterEffect(e3) + --to extra & Special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(67030233,2)) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCountLimit(1) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetTarget(c67030233.sptg) + e4:SetOperation(c67030233.spop) + c:RegisterEffect(e4) + -- + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e5:SetValue(1) + c:RegisterEffect(e5) +end +function c67030233.matfilter(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c67030233.synfilter1(c,syncard,lv,g) + return c:IsCode(21159309) and g:IsExists(c67030233.synfilter2,1,c,syncard,lv,g,c) +end +function c67030233.synfilter2(c,syncard,lv,g,mc) + if not c:IsCode(70902743) then return false end + if c:IsType(TYPE_TUNER)==mc:IsType(TYPE_TUNER) then return false end + local mg=g:Filter(Card.IsNotTuner,nil) + Duel.SetSelectedCard(Group.FromCards(c,mc)) + return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard) +end +function c67030233.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c67030233.matfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local lv=c:GetLevel() + if tuner then return c67030233.synfilter1(tuner,c,lv,mg) end + return mg:IsExists(c67030233.synfilter1,1,nil,c,lv,mg) +end +function c67030233.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local mg=Duel.GetMatchingGroup(c67030233.matfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local lv=c:GetLevel() + local m1=tuner + if not tuner then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t1=mg:FilterSelect(tp,c67030233.synfilter1,1,1,nil,c,lv,mg) + m1=t1:GetFirst() + g:AddCard(m1) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t2=mg:FilterSelect(tp,c67030233.synfilter2,1,1,m1,c,lv,mg,m1) + g:Merge(t2) + local mg2=mg:Filter(Card.IsNotTuner,nil) + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local t3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) + g:Merge(t3) + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c67030233.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==Duel.GetAttacker() +end +function c67030233.desfilter(c) + return c:IsDefensePos() +end +function c67030233.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c67030233.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c67030233.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c67030233.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c67030233.disfilter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) and not c:IsDisabled() +end +function c67030233.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c67030233.disfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c67030233.disfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c67030233.disfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c67030233.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(atk) + e3:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e3) + end +end +function c67030233.spfilter(c,e,tp) + return c:IsCode(70902743) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c67030233.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c67030233.spfilter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c67030233.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c67030233.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if bit.band(c:GetOriginalType(),0x802040)~=0 and Duel.SendtoDeck(c,nil,0,REASON_EFFECT)~=0 + and c:IsLocation(LOCATION_EXTRA) and tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c67050396.lua b/script/c67050396.lua index 79e87478..4cc2ffb0 100644 --- a/script/c67050396.lua +++ b/script/c67050396.lua @@ -1,67 +1,67 @@ ---Kozmo Goodwitch -function c67050396.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(67050396,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,67050396) - e1:SetCost(c67050396.spcost) - e1:SetTarget(c67050396.sptg) - e1:SetOperation(c67050396.spop) - c:RegisterEffect(e1) - --pos - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(67050396,1)) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetCost(c67050396.poscost) - e2:SetTarget(c67050396.postg) - e2:SetOperation(c67050396.posop) - c:RegisterEffect(e2) -end -function c67050396.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c67050396.spfilter(c,e,tp) - return c:IsSetCard(0xd2) and c:IsLevelAbove(5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c67050396.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c67050396.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c67050396.spop(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,c67050396.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 c67050396.poscost(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 c67050396.posfilter(c) - return c:IsFaceup() and c:IsCanTurnSet() -end -function c67050396.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c67050396.posfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c67050396.posfilter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c67050396.posfilter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) -end -function c67050396.posop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) - end -end +--Kozmo-グリンドル +function c67050396.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67050396,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,67050396) + e1:SetCost(c67050396.spcost) + e1:SetTarget(c67050396.sptg) + e1:SetOperation(c67050396.spop) + c:RegisterEffect(e1) + --pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67050396,1)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c67050396.poscost) + e2:SetTarget(c67050396.postg) + e2:SetOperation(c67050396.posop) + c:RegisterEffect(e2) +end +function c67050396.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c67050396.spfilter(c,e,tp) + return c:IsSetCard(0xd2) and c:IsLevelAbove(5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c67050396.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c67050396.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c67050396.spop(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,c67050396.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 c67050396.poscost(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 c67050396.posfilter(c) + return c:IsFaceup() and c:IsCanTurnSet() +end +function c67050396.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c67050396.posfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c67050396.posfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c67050396.posfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c67050396.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c67098114.lua b/script/c67098114.lua index 0d1cfd7e..b77a5424 100644 --- a/script/c67098114.lua +++ b/script/c67098114.lua @@ -19,6 +19,7 @@ function c67098114.initial_effect(c) --special summon local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c67098114.regop) c:RegisterEffect(e2) @@ -61,8 +62,7 @@ function c67098114.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c67098114.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c67113830.lua b/script/c67113830.lua index 85636e7b..118528d4 100644 --- a/script/c67113830.lua +++ b/script/c67113830.lua @@ -1,36 +1,36 @@ ---墓地墓地の恨み -function c67113830.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c67113830.condition) - e1:SetTarget(c67113830.target) - e1:SetOperation(c67113830.activate) - c:RegisterEffect(e1) -end -function c67113830.condition(e,tp,eg,ep,ev,re,r,rp) - return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) - and Duel.GetFieldGroupCount(tp,0,LOCATION_GRAVE)>7 -end -function c67113830.filter(c) - return c:IsFaceup() and c:GetAttack()>0 -end -function c67113830.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c67113830.filter,tp,0,LOCATION_MZONE,1,nil) end -end -function c67113830.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c67113830.filter,tp,0,LOCATION_MZONE,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--墓地墓地の恨み +function c67113830.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c67113830.condition) + e1:SetTarget(c67113830.target) + e1:SetOperation(c67113830.activate) + c:RegisterEffect(e1) +end +function c67113830.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and Duel.GetFieldGroupCount(tp,0,LOCATION_GRAVE)>7 +end +function c67113830.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c67113830.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c67113830.filter,tp,0,LOCATION_MZONE,1,nil) end +end +function c67113830.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c67113830.filter,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c67120578.lua b/script/c67120578.lua index a0bc214b..11349baf 100644 --- a/script/c67120578.lua +++ b/script/c67120578.lua @@ -1,129 +1,129 @@ ---ガガガヘッド -function c67120578.initial_effect(c) - --summon with no tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(67120578,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SUMMON_PROC) - e1:SetCondition(c67120578.ntcon) - e1:SetOperation(c67120578.ntop) - c:RegisterEffect(e1) - --summon success - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(67120578,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetTarget(c67120578.sptg) - e2:SetOperation(c67120578.spop) - c:RegisterEffect(e2) - --effect gain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_BE_MATERIAL) - e3:SetCondition(c67120578.efcon) - e3:SetOperation(c67120578.efop) - c:RegisterEffect(e3) -end -function c67120578.ntcon(e,c,minc) - if c==nil then return true end - local tp=c:GetControler() - return minc==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 - and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c67120578.ntop(e,tp,eg,ep,ev,re,r,rp,c) - --change base attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetReset(RESET_EVENT+0xff0000) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetValue(4) - c:RegisterEffect(e1) -end -function c67120578.spfilter(c,e,tp) - return c:IsSetCard(0x54) and not c:IsCode(67120578) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c67120578.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c67120578.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c67120578.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - local ct=math.min(2,Duel.GetLocationCount(tp,LOCATION_MZONE)) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c67120578.spfilter,tp,LOCATION_GRAVE,0,1,ct,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) -end -function c67120578.spop(e,tp,eg,ep,ev,re,r,rp) - local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local g=tg:Filter(Card.IsRelateToEffect,nil,e) - local ct=g:GetCount() - if ct>0 and (ct==1 or not Duel.IsPlayerAffectedByEffect(tp,59822133)) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c67120578.splimtg) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetValue(1) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,0) - e2:SetReset(RESET_PHASE+PHASE_END) - e2:SetTarget(c67120578.splimit) - Duel.RegisterEffect(e2,tp) -end -function c67120578.splimtg(e,c) - return not c:IsSetCard(0x54) -end -function c67120578.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return sumtype~=SUMMON_TYPE_XYZ -end -function c67120578.efcon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_XYZ -end -function c67120578.efop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local rc=c:GetReasonCard() - local e1=Effect.CreateEffect(rc) - e1:SetDescription(aux.Stringid(67120578,2)) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c67120578.drcon) - e1:SetTarget(c67120578.drtg) - e1:SetOperation(c67120578.drop) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - if not rc:IsType(TYPE_EFFECT) then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ADD_TYPE) - e2:SetValue(TYPE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e2,true) - end -end -function c67120578.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ -end -function c67120578.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c67120578.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--ガガガヘッド +function c67120578.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67120578,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c67120578.ntcon) + e1:SetOperation(c67120578.ntop) + c:RegisterEffect(e1) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67120578,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c67120578.sptg) + e2:SetOperation(c67120578.spop) + c:RegisterEffect(e2) + --effect gain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetCondition(c67120578.efcon) + e3:SetOperation(c67120578.efop) + c:RegisterEffect(e3) +end +function c67120578.ntcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return minc==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c67120578.ntop(e,tp,eg,ep,ev,re,r,rp,c) + --change base attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0xff0000) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(4) + c:RegisterEffect(e1) +end +function c67120578.spfilter(c,e,tp) + return c:IsSetCard(0x54) and not c:IsCode(67120578) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c67120578.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c67120578.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c67120578.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local ct=math.min(2,Duel.GetLocationCount(tp,LOCATION_MZONE)) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c67120578.spfilter,tp,LOCATION_GRAVE,0,1,ct,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c67120578.spop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(Card.IsRelateToEffect,nil,e) + local ct=g:GetCount() + if ct>0 and (ct==1 or not Duel.IsPlayerAffectedByEffect(tp,59822133)) then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c67120578.splimtg) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetTarget(c67120578.splimit) + Duel.RegisterEffect(e2,tp) +end +function c67120578.splimtg(e,c) + return not c:IsSetCard(0x54) +end +function c67120578.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return sumtype~=SUMMON_TYPE_XYZ +end +function c67120578.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c67120578.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(67120578,2)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c67120578.drcon) + e1:SetTarget(c67120578.drtg) + e1:SetOperation(c67120578.drop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c67120578.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c67120578.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c67120578.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c6713443.lua b/script/c6713443.lua index fb91b735..9e16cd9b 100644 --- a/script/c6713443.lua +++ b/script/c6713443.lua @@ -33,7 +33,8 @@ end function c6713443.spop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local tg=Duel.GetMatchingGroup(c6713443.filter,tp,LOCATION_GRAVE,0,nil,e,tp) - if ft<=0 or tg:GetCount()==0 or (ft>1 and tg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if ft<=0 or tg:GetCount()==0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=tg:Select(tp,ft,ft,nil) local ct=Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) diff --git a/script/c67159705.lua b/script/c67159705.lua index 5af29d50..49f71308 100644 --- a/script/c67159705.lua +++ b/script/c67159705.lua @@ -1,122 +1,120 @@ ---アーマード・サイバーン -function c67159705.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(67159705,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c67159705.eqtg) - e1:SetOperation(c67159705.eqop) - c:RegisterEffect(e1) - --unequip - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(67159705,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c67159705.uncon) - e2:SetTarget(c67159705.sptg) - e2:SetOperation(c67159705.spop) - c:RegisterEffect(e2) - --destroy sub - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetCondition(c67159705.uncon) - e3:SetValue(1) - c:RegisterEffect(e3) - --eqlimit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c67159705.eqlimit) - c:RegisterEffect(e4) - --destroy - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(67159705,2)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_SZONE) - e5:SetCountLimit(1) - e5:SetCondition(c67159705.uncon) - e5:SetTarget(c67159705.destg) - e5:SetOperation(c67159705.desop) - c:RegisterEffect(e5) -end -function c67159705.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end -function c67159705.repval(e,re,r,rp) - return bit.band(r,REASON_BATTLE)~=0 -end -function c67159705.eqlimit(e,c) - return c:IsCode(70095154) or aux.IsMaterialListCode(c,70095154) -end -function c67159705.filter(c) - return c:IsFaceup() and (c:IsCode(70095154) or aux.IsMaterialListCode(c,70095154)) and c:GetUnionCount()==0 -end -function c67159705.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c67159705.filter(chkc) end - if chk==0 then return e:GetHandler():GetFlagEffect(67159705)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c67159705.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c67159705.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) - e:GetHandler():RegisterFlagEffect(67159705,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) -end -function c67159705.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - if not tc:IsRelateToEffect(e) or not c67159705.filter(tc) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) -end -function c67159705.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(67159705)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - e:GetHandler():RegisterFlagEffect(67159705,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) -end -function c67159705.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c67159705.desfilter(c) - return c:IsFaceup() -end -function c67159705.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c67159705.desfilter(chkc) end - if chk==0 then return e:GetHandler():GetEquipTarget():GetAttack()>=1000 - and Duel.IsExistingTarget(c67159705.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c67159705.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c67159705.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:GetEquipTarget():GetAttack()<1000 then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-1000) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--アーマード・サイバーン +function c67159705.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67159705,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c67159705.eqtg) + e1:SetOperation(c67159705.eqop) + c:RegisterEffect(e1) + --unequip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67159705,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(aux.IsUnionState) + e2:SetTarget(c67159705.sptg) + e2:SetOperation(c67159705.spop) + c:RegisterEffect(e2) + --destroy sub + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetCondition(aux.IsUnionState) + e3:SetValue(1) + c:RegisterEffect(e3) + --eqlimit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(c67159705.eqlimit) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(67159705,2)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1) + e5:SetCondition(aux.IsUnionState) + e5:SetTarget(c67159705.destg) + e5:SetOperation(c67159705.desop) + c:RegisterEffect(e5) +end +c67159705.old_union=true +function c67159705.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c67159705.eqlimit(e,c) + return c:IsCode(70095154) or aux.IsMaterialListCode(c,70095154) +end +function c67159705.filter(c) + return c:IsFaceup() and (c:IsCode(70095154) or aux.IsMaterialListCode(c,70095154)) and c:GetUnionCount()==0 +end +function c67159705.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c67159705.filter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(67159705)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c67159705.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c67159705.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) + e:GetHandler():RegisterFlagEffect(67159705,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c67159705.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + if not tc:IsRelateToEffect(e) or not c67159705.filter(tc) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + if not Duel.Equip(tp,c,tc,false) then return end + aux.SetUnionState(c) +end +function c67159705.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(67159705)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + e:GetHandler():RegisterFlagEffect(67159705,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) +end +function c67159705.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP_ATTACK)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c67159705.desfilter(c) + return c:IsFaceup() +end +function c67159705.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c67159705.desfilter(chkc) end + if chk==0 then return e:GetHandler():GetEquipTarget():GetAttack()>=1000 + and Duel.IsExistingTarget(c67159705.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c67159705.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c67159705.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:GetEquipTarget():GetAttack()<1000 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c67173574.lua b/script/c67173574.lua index 1ffa808f..cf8d12ab 100644 --- a/script/c67173574.lua +++ b/script/c67173574.lua @@ -27,7 +27,7 @@ function c67173574.initial_effect(c) e3:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e3:SetCountLimit(1) e3:SetCondition(c67173574.condition) e3:SetCost(c67173574.cost) diff --git a/script/c67227834.lua b/script/c67227834.lua index 2b05747b..f3b5c914 100644 --- a/script/c67227834.lua +++ b/script/c67227834.lua @@ -1,27 +1,12 @@ --魔術の呪文書 function c67227834.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(c67227834.target) - e1:SetOperation(c67227834.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,46986414,38033121)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(700) 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(c67227834.eqlimit) - c:RegisterEffect(e3) --recover local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(67227834,0)) @@ -35,25 +20,6 @@ function c67227834.initial_effect(c) c:RegisterEffect(e4) end c67227834.card_code_list={46986414,38033121} -function c67227834.eqlimit(e,c) - return c:IsCode(46986414,38033121) -end -function c67227834.filter(c) - return c:IsFaceup() and c:IsCode(46986414,38033121) -end -function c67227834.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c67227834.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c67227834.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c67227834.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c67227834.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 c67227834.reccon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end diff --git a/script/c67234805.lua b/script/c67234805.lua index 7fec18df..481c5b90 100644 --- a/script/c67234805.lua +++ b/script/c67234805.lua @@ -1,60 +1,66 @@ ---能力吸収石 -function c67234805.initial_effect(c) - c:EnableCounterPermit(0x16) - c:SetCounterLimit(0x16,2) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c67234805.ctop) - c:RegisterEffect(e2) - --negate - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_TRIGGER) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetCondition(c67234805.discon) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_DISABLE) - e4:SetRange(LOCATION_SZONE) - e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e4:SetCondition(c67234805.discon) - e4:SetTarget(c67234805.distg) - c:RegisterEffect(e4) - --remove counter - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e5:SetCode(EVENT_PHASE+PHASE_END) - e5:SetRange(LOCATION_SZONE) - e5:SetCondition(c67234805.rmcon) - e5:SetOperation(c67234805.rmop) - c:RegisterEffect(e5) -end -function c67234805.ctop(e,tp,eg,ep,ev,re,r,rp) - local c=re:GetHandler() - if c:IsType(TYPE_MONSTER) then - e:GetHandler():AddCounter(0x16,1) - end -end -function c67234805.discon(e) - return e:GetHandler():GetCounter(0x16)==2 -end -function c67234805.distg(e,c) - return c:IsType(TYPE_EFFECT) -end -function c67234805.rmcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x16)>0 -end -function c67234805.rmop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RemoveCounter(tp,0x16,e:GetHandler():GetCounter(0x16),REASON_EFFECT) -end +--能力吸収石 +function c67234805.initial_effect(c) + c:EnableCounterPermit(0x16) + c:SetCounterLimit(0x16,2) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(aux.chainreg) + c:RegisterEffect(e2) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c67234805.ctop) + c:RegisterEffect(e2) + --negate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_TRIGGER) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetCondition(c67234805.discon) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DISABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetCondition(c67234805.discon) + e4:SetTarget(c67234805.distg) + c:RegisterEffect(e4) + --remove counter + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c67234805.rmcon) + e5:SetOperation(c67234805.rmop) + c:RegisterEffect(e5) +end +function c67234805.ctop(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_MONSTER) and e:GetHandler():GetFlagEffect(1)>0 then + e:GetHandler():AddCounter(0x16,1) + end +end +function c67234805.discon(e) + return e:GetHandler():GetCounter(0x16)==2 +end +function c67234805.distg(e,c) + return c:IsType(TYPE_EFFECT) +end +function c67234805.rmcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x16)>0 +end +function c67234805.rmop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RemoveCounter(tp,0x16,e:GetHandler():GetCounter(0x16),REASON_EFFECT) +end diff --git a/script/c67237709.lua b/script/c67237709.lua index 2295314b..545a6ec6 100644 --- a/script/c67237709.lua +++ b/script/c67237709.lua @@ -1,103 +1,103 @@ ---Kozmotown -function c67237709.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(67237709,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c67237709.thtg) - e2:SetOperation(c67237709.thop) - c:RegisterEffect(e2) - --draw - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(67237709,1)) - e3:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_FZONE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCountLimit(1) - e3:SetTarget(c67237709.drtg) - e3:SetOperation(c67237709.drop) - c:RegisterEffect(e3) - --to hand - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_DESTROYED) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e4:SetCondition(c67237709.thcon2) - e4:SetTarget(c67237709.thtg2) - e4:SetOperation(c67237709.thop2) - c:RegisterEffect(e4) -end -function c67237709.thfilter(c) - return c:IsFaceup() and c:IsSetCard(0xd2) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c67237709.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c67237709.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c67237709.thfilter,tp,LOCATION_REMOVED,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c67237709.thfilter,tp,LOCATION_REMOVED,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c67237709.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - local lv=tc:GetOriginalLevel() - local lp=Duel.GetLP(tp) - Duel.SetLP(tp,lp-lv*100) - end -end -function c67237709.drfilter(c) - return c:IsSetCard(0xd2) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() -end -function c67237709.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp) - and Duel.IsExistingMatchingCard(c67237709.drfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.SetTargetPlayer(tp) - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) -end -function c67237709.drop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(p,c67237709.drfilter,p,LOCATION_HAND,0,1,63,nil) - if g:GetCount()>0 then - Duel.ConfirmCards(1-p,g) - local ct=Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - Duel.ShuffleDeck(p) - Duel.BreakEffect() - Duel.Draw(p,ct,REASON_EFFECT) - end -end -function c67237709.thcon2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_EFFECT) - and c:IsPreviousLocation(LOCATION_SZONE) and c:GetPreviousSequence()==5 -end -function c67237709.thfilter2(c) - return c:IsSetCard(0xd2) and c:IsAbleToHand() -end -function c67237709.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c67237709.thfilter2,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c67237709.thop2(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c67237709.thfilter2,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--Kozmo-エメラルドポリス +function c67237709.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67237709,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c67237709.thtg) + e2:SetOperation(c67237709.thop) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(67237709,1)) + e3:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_FZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c67237709.drtg) + e3:SetOperation(c67237709.drop) + c:RegisterEffect(e3) + --to hand + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DESTROYED) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCondition(c67237709.thcon2) + e4:SetTarget(c67237709.thtg2) + e4:SetOperation(c67237709.thop2) + c:RegisterEffect(e4) +end +function c67237709.thfilter(c) + return c:IsFaceup() and c:IsSetCard(0xd2) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c67237709.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c67237709.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c67237709.thfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c67237709.thfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c67237709.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + local lv=tc:GetOriginalLevel() + local lp=Duel.GetLP(tp) + Duel.SetLP(tp,lp-lv*100) + end +end +function c67237709.drfilter(c) + return c:IsSetCard(0xd2) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c67237709.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) + and Duel.IsExistingMatchingCard(c67237709.drfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) +end +function c67237709.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(p,c67237709.drfilter,p,LOCATION_HAND,0,1,63,nil) + if g:GetCount()>0 then + Duel.ConfirmCards(1-p,g) + local ct=Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(p) + Duel.BreakEffect() + Duel.Draw(p,ct,REASON_EFFECT) + end +end +function c67237709.thcon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) + and c:IsPreviousLocation(LOCATION_SZONE) and c:GetPreviousSequence()==5 +end +function c67237709.thfilter2(c) + return c:IsSetCard(0xd2) and c:IsAbleToHand() +end +function c67237709.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c67237709.thfilter2,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c67237709.thop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c67237709.thfilter2,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c67249508.lua b/script/c67249508.lua index a68fb2d0..ee388d74 100644 --- a/script/c67249508.lua +++ b/script/c67249508.lua @@ -19,29 +19,44 @@ end function c67249508.activate(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local tc=e:GetLabelObject() - if tc:IsRelateToBattle() then + if tc:IsRelateToBattle() and not tc:IsImmuneToEffect(e) then local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SET_ATTACK_FINAL) e1:SetValue(tc:GetBaseAttack()*2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) tc:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE) e2:SetCode(EFFECT_SET_DEFENSE_FINAL) e2:SetValue(tc:GetBaseDefense()*2) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) tc:RegisterEffect(e2) + local fid=c:GetFieldID() + tc:RegisterFlagEffect(67249508,RESET_EVENT+0x1fe0000,0,1,fid) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCode(EVENT_DAMAGE_STEP_END) e3:SetCountLimit(1) + e3:SetLabel(fid) + e3:SetLabelObject(tc) + e3:SetCondition(c67249508.descon) e3:SetOperation(c67249508.desop) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - tc:RegisterEffect(e3) + e3:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e3,tp) + end +end +function c67249508.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(67249508)==e:GetLabel() then + return true + else + e:Reset() + return false end end function c67249508.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + local tc=e:GetLabelObject() + Duel.Destroy(tc,REASON_EFFECT) end diff --git a/script/c67273917.lua b/script/c67273917.lua index 080ce8fc..be55437c 100644 --- a/script/c67273917.lua +++ b/script/c67273917.lua @@ -1,44 +1,44 @@ ---イグナイト・デリンジャー -function c67273917.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c67273917.thcon) - e2:SetTarget(c67273917.thtg) - e2:SetOperation(c67273917.thop) - c:RegisterEffect(e2) -end -function c67273917.thcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return pc and pc:IsSetCard(0xc8) -end -function c67273917.filter(c) - return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() -end -function c67273917.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if chk==0 then return Duel.IsExistingMatchingCard(c67273917.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - local g=Group.FromCards(c,pc) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c67273917.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if not pc then return end - local dg=Group.FromCards(c,pc) - if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c67273917.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--イグナイト・デリンジャー +function c67273917.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c67273917.thcon) + e2:SetTarget(c67273917.thtg) + e2:SetOperation(c67273917.thop) + c:RegisterEffect(e2) +end +function c67273917.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsSetCard(0xc8) +end +function c67273917.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c67273917.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if chk==0 then return Duel.IsExistingMatchingCard(c67273917.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c67273917.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local dg=Group.FromCards(c,pc) + if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c67273917.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c67300516.lua b/script/c67300516.lua index de406420..c1e5d1bb 100644 --- a/script/c67300516.lua +++ b/script/c67300516.lua @@ -1,41 +1,41 @@ ---真紅眼の飛竜 -function c67300516.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(67300516,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_GRAVE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCondition(c67300516.spcon) - e1:SetCost(c67300516.spcost) - e1:SetTarget(c67300516.sptg) - e1:SetOperation(c67300516.spop) - c:RegisterEffect(e1) -end -function c67300516.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 -end -function c67300516.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c67300516.filter(c,e,tp) - return c:IsSetCard(0x3b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c67300516.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c67300516.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c67300516.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c67300516.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c67300516.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--真紅眼の飛竜 +function c67300516.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67300516,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCondition(c67300516.spcon) + e1:SetCost(c67300516.spcost) + e1:SetTarget(c67300516.sptg) + e1:SetOperation(c67300516.spop) + c:RegisterEffect(e1) +end +function c67300516.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 +end +function c67300516.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c67300516.filter(c,e,tp) + return c:IsSetCard(0x3b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c67300516.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c67300516.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c67300516.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c67300516.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c67300516.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c67310848.lua b/script/c67310848.lua index 988dfbd4..78309f99 100644 --- a/script/c67310848.lua +++ b/script/c67310848.lua @@ -1,41 +1,41 @@ ---矮星竜 プラネター -function c67310848.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetOperation(c67310848.sumsuc) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c67310848.thcon) - e2:SetTarget(c67310848.thtg) - e2:SetOperation(c67310848.thop) - c:RegisterEffect(e2) -end -function c67310848.sumsuc(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(67310848,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) -end -function c67310848.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(67310848)~=0 -end -function c67310848.thfilter(c) - return c:GetLevel()==7 and c:IsAttribute(ATTRIBUTE_LIGHT+ATTRIBUTE_DARK) and c:IsAbleToHand() -end -function c67310848.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c67310848.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c67310848.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c67310848.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--矮星竜 プラネター +function c67310848.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetOperation(c67310848.sumsuc) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c67310848.thcon) + e2:SetTarget(c67310848.thtg) + e2:SetOperation(c67310848.thop) + c:RegisterEffect(e2) +end +function c67310848.sumsuc(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(67310848,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end +function c67310848.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(67310848)~=0 +end +function c67310848.thfilter(c) + return c:GetLevel()==7 and c:IsAttribute(ATTRIBUTE_LIGHT+ATTRIBUTE_DARK) and c:IsAbleToHand() +end +function c67310848.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c67310848.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c67310848.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c67310848.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c67328336.lua b/script/c67328336.lua index f32dbb18..915c2522 100644 --- a/script/c67328336.lua +++ b/script/c67328336.lua @@ -1,50 +1,51 @@ ---機皇城 -function c67328336.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --untargetable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x3013)) - e2:SetValue(c67328336.effval) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e3:SetDescription(aux.Stringid(67328336,0)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c67328336.thcon) - e3:SetTarget(c67328336.thtg) - e3:SetOperation(c67328336.thop) - c:RegisterEffect(e3) -end -function c67328336.effval(e,re,rp) - return re:GetHandler():IsType(TYPE_SYNCHRO) -end -function c67328336.thcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 -end -function c67328336.filter(c) - return c:IsSetCard(0x3013) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c67328336.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c67328336.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c67328336.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c67328336.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--機皇城 +function c67328336.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --untargetable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x3013)) + e2:SetValue(c67328336.effval) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e3:SetDescription(aux.Stringid(67328336,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c67328336.thcon) + e3:SetTarget(c67328336.thtg) + e3:SetOperation(c67328336.thop) + c:RegisterEffect(e3) +end +function c67328336.effval(e,re,rp) + return re:GetHandler():IsType(TYPE_SYNCHRO) +end +function c67328336.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c67328336.filter(c) + return c:IsSetCard(0x3013) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c67328336.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c67328336.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c67328336.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c67328336.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c67381587.lua b/script/c67381587.lua index c1b782b5..84a7d08a 100644 --- a/script/c67381587.lua +++ b/script/c67381587.lua @@ -1,55 +1,55 @@ ---黒猫の睨み -function c67381587.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c67381587.condition) - e1:SetOperation(c67381587.activate) - c:RegisterEffect(e1) - --position change - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCost(c67381587.poscost) - e2:SetTarget(c67381587.postg) - e2:SetOperation(c67381587.posop) - c:RegisterEffect(e2) -end -function c67381587.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) - and Duel.IsExistingMatchingCard(Card.IsPosition,tp,LOCATION_MZONE,0,2,nil,POS_FACEDOWN_DEFENSE) -end -function c67381587.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) -end -function c67381587.poscost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c67381587.posfilter1(c) - return c:IsFaceup() and c:IsSetCard(0xcc) and c:IsCanTurnSet() - and Duel.IsExistingTarget(c67381587.posfilter2,0,LOCATION_MZONE,LOCATION_MZONE,1,c) -end -function c67381587.posfilter2(c) - return c:IsFaceup() and c:IsCanTurnSet() -end -function c67381587.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c67381587.posfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g1=Duel.SelectTarget(tp,c67381587.posfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g2=Duel.SelectTarget(tp,c67381587.posfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,g1:GetFirst()) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g1,2,0,0) -end -function c67381587.posop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) - end -end +--黒猫の睨み +function c67381587.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c67381587.condition) + e1:SetOperation(c67381587.activate) + c:RegisterEffect(e1) + --position change + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCost(c67381587.poscost) + e2:SetTarget(c67381587.postg) + e2:SetOperation(c67381587.posop) + c:RegisterEffect(e2) +end +function c67381587.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) + and Duel.IsExistingMatchingCard(Card.IsPosition,tp,LOCATION_MZONE,0,2,nil,POS_FACEDOWN_DEFENSE) +end +function c67381587.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end +function c67381587.poscost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c67381587.posfilter1(c) + return c:IsFaceup() and c:IsSetCard(0xcc) and c:IsCanTurnSet() + and Duel.IsExistingTarget(c67381587.posfilter2,0,LOCATION_MZONE,LOCATION_MZONE,1,c) +end +function c67381587.posfilter2(c) + return c:IsFaceup() and c:IsCanTurnSet() +end +function c67381587.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c67381587.posfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g1=Duel.SelectTarget(tp,c67381587.posfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g2=Duel.SelectTarget(tp,c67381587.posfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,g1:GetFirst()) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g1,2,0,0) +end +function c67381587.posop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c67441435.lua b/script/c67441435.lua index 342fa50d..35b81128 100644 --- a/script/c67441435.lua +++ b/script/c67441435.lua @@ -19,9 +19,11 @@ function c67441435.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) end function c67441435.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then return end - Duel.DiscardDeck(tp,1,REASON_EFFECT) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + if Duel.DiscardDeck(tp,1,REASON_EFFECT)~=0 then + local oc=Duel.GetOperatedGroup():GetFirst() + local c=e:GetHandler() + if oc:IsLocation(LOCATION_GRAVE) and c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end + end end diff --git a/script/c67443336.lua b/script/c67443336.lua index f1887c5e..7b1c89e3 100644 --- a/script/c67443336.lua +++ b/script/c67443336.lua @@ -1,35 +1,35 @@ ---裁きの天秤 -function c67443336.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCountLimit(1,67443336+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c67443336.condition) - e1:SetTarget(c67443336.target) - e1:SetOperation(c67443336.activate) - c:RegisterEffect(e1) -end -function c67443336.condition(e,tp,eg,ep,ev,re,r,rp) - local t=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) - local s=Duel.GetFieldGroupCount(tp,LOCATION_HAND+LOCATION_ONFIELD,0) - return t>s -end -function c67443336.target(e,tp,eg,ep,ev,re,r,rp,chk) - local t=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) - local s=Duel.GetFieldGroupCount(tp,LOCATION_HAND+LOCATION_ONFIELD,0) - if chk==0 then return Duel.IsPlayerCanDraw(tp,t-s) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(t-s) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,t-s) -end -function c67443336.activate(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local t=Duel.GetFieldGroupCount(p,0,LOCATION_ONFIELD) - local s=Duel.GetFieldGroupCount(p,LOCATION_HAND+LOCATION_ONFIELD,0) - if t>s then - Duel.Draw(p,t-s,REASON_EFFECT) - end -end +--裁きの天秤 +function c67443336.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCountLimit(1,67443336+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c67443336.condition) + e1:SetTarget(c67443336.target) + e1:SetOperation(c67443336.activate) + c:RegisterEffect(e1) +end +function c67443336.condition(e,tp,eg,ep,ev,re,r,rp) + local t=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + local s=Duel.GetFieldGroupCount(tp,LOCATION_HAND+LOCATION_ONFIELD,0) + return t>s +end +function c67443336.target(e,tp,eg,ep,ev,re,r,rp,chk) + local t=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + local s=Duel.GetFieldGroupCount(tp,LOCATION_HAND+LOCATION_ONFIELD,0) + if chk==0 then return Duel.IsPlayerCanDraw(tp,t-s) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(t-s) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,t-s) +end +function c67443336.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local t=Duel.GetFieldGroupCount(p,0,LOCATION_ONFIELD) + local s=Duel.GetFieldGroupCount(p,LOCATION_HAND+LOCATION_ONFIELD,0) + if t>s then + Duel.Draw(p,t-s,REASON_EFFECT) + end +end diff --git a/script/c67503139.lua b/script/c67503139.lua index 69e04ae2..c0878724 100644 --- a/script/c67503139.lua +++ b/script/c67503139.lua @@ -1,26 +1,26 @@ ---占術姫クリスタルウンディーネ -function c67503139.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetTarget(c67503139.thtg) - e1:SetOperation(c67503139.thop) - c:RegisterEffect(e1) -end -function c67503139.thfilter(c) - return bit.band(c:GetType(),0x81)==0x81 and c:IsAbleToHand() -end -function c67503139.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c67503139.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c67503139.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c67503139.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--占術姫クリスタルウンディーネ +function c67503139.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c67503139.thtg) + e1:SetOperation(c67503139.thop) + c:RegisterEffect(e1) +end +function c67503139.thfilter(c) + return bit.band(c:GetType(),0x81)==0x81 and c:IsAbleToHand() +end +function c67503139.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c67503139.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c67503139.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c67503139.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c67511500.lua b/script/c67511500.lua index 8ec355ac..9644f91e 100644 --- a/script/c67511500.lua +++ b/script/c67511500.lua @@ -1,33 +1,33 @@ ---ドラゴン・ウィッチ-ドラゴンの守護者- -function c67511500.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c67511500.atlimit) - c:RegisterEffect(e1) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetTarget(c67511500.desreptg) - c:RegisterEffect(e2) -end -function c67511500.atlimit(e,c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) -end -function c67511500.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return not c:IsReason(REASON_REPLACE) - and Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_HAND,0,1,nil,RACE_DRAGON) end - if Duel.SelectYesNo(tp,aux.Stringid(67511500,0)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,Card.IsRace,tp,LOCATION_HAND,0,1,1,nil,RACE_DRAGON) - Duel.SendtoGrave(g,REASON_EFFECT+REASON_REPLACE) - return true - else return false end -end +--ドラゴン・ウィッチ-ドラゴンの守護者- +function c67511500.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c67511500.atlimit) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetTarget(c67511500.desreptg) + c:RegisterEffect(e2) +end +function c67511500.atlimit(e,c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) +end +function c67511500.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) + and Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_HAND,0,1,nil,RACE_DRAGON) end + if Duel.SelectYesNo(tp,aux.Stringid(67511500,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsRace,tp,LOCATION_HAND,0,1,1,nil,RACE_DRAGON) + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REPLACE) + return true + else return false end +end diff --git a/script/c675319.lua b/script/c675319.lua new file mode 100644 index 00000000..d2335eb4 --- /dev/null +++ b/script/c675319.lua @@ -0,0 +1,81 @@ +--ゾディアックS +function c675319.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk & def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xf1)) + e2:SetValue(300) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --cannot be target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetValue(c675319.atlimit) + c:RegisterEffect(e4) + --destroy replace + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EFFECT_DESTROY_REPLACE) + e5:SetRange(LOCATION_FZONE) + e5:SetCountLimit(1) + e5:SetTarget(c675319.reptg) + e5:SetValue(c675319.repval) + e5:SetOperation(c675319.repop) + c:RegisterEffect(e5) +end +function c675319.atfilter(c,atk) + return c:IsFaceup() and c:IsRace(RACE_BEASTWARRIOR) and c:GetAttack()>atk +end +function c675319.atlimit(e,c) + return c:IsFaceup() and c:IsRace(RACE_BEASTWARRIOR) and Duel.IsExistingMatchingCard(c675319.atfilter,c:GetControler(),LOCATION_MZONE,0,1,nil,c:GetAttack()) +end +function c675319.repfilter(c,tp,e) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) + and c:IsSetCard(0xf1) and c:IsReason(REASON_EFFECT) and c:GetFlagEffect(675319)==0 +end +function c675319.desfilter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE+LOCATION_HAND) and c:IsType(TYPE_MONSTER) + and not c:IsStatus(STATUS_DESTROY_CONFIRMED+STATUS_BATTLE_DESTROYED) +end +function c675319.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c675319.desfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,1,nil,tp) + and eg:IsExists(c675319.repfilter,1,nil,tp,e) end + if Duel.SelectYesNo(tp,aux.Stringid(675319,0)) then + local g=eg:Filter(c675319.repfilter,nil,tp,e) + if g:GetCount()==1 then + e:SetLabelObject(g:GetFirst()) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESREPLACE) + local cg=g:Select(tp,1,1,nil) + e:SetLabelObject(cg:GetFirst()) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESREPLACE) + local tg=Duel.SelectMatchingCard(tp,c675319.desfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,1,1,nil,tp) + Duel.HintSelection(tg) + Duel.SetTargetCard(tg) + tg:GetFirst():RegisterFlagEffect(675319,RESET_EVENT+0x1fc0000+RESET_CHAIN,0,1) + tg:GetFirst():SetStatus(STATUS_DESTROY_CONFIRMED,true) + return true + else return false end +end +function c675319.repval(e,c) + return c==e:GetLabelObject() +end +function c675319.repop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + tc:SetStatus(STATUS_DESTROY_CONFIRMED,false) + Duel.Destroy(tc,REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c67547370.lua b/script/c67547370.lua index 37ae41e8..7c0a3098 100644 --- a/script/c67547370.lua +++ b/script/c67547370.lua @@ -85,9 +85,7 @@ function c67547370.efilter(e,te) return te:GetOwner()~=e:GetOwner() end function c67547370.atkcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsControler(1-tp) + return e:GetHandler():GetBattleTarget() end function c67547370.atkop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c67616300.lua b/script/c67616300.lua index 2b7eee04..4365f496 100644 --- a/script/c67616300.lua +++ b/script/c67616300.lua @@ -1,101 +1,101 @@ ---チキンレース -function c67616300.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --change damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EFFECT_CHANGE_DAMAGE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,0) - e2:SetCondition(c67616300.damcon1) - e2:SetValue(0) - c:RegisterEffect(e2) - local e7=e2:Clone() - e7:SetCode(EFFECT_NO_EFFECT_DAMAGE) - c:RegisterEffect(e7) - local e3=e2:Clone() - e3:SetTargetRange(0,1) - e3:SetCondition(c67616300.damcon2) - c:RegisterEffect(e3) - local e8=e3:Clone() - e8:SetCode(EFFECT_NO_EFFECT_DAMAGE) - c:RegisterEffect(e8) - --draw - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(67616300,0)) - e4:SetCategory(CATEGORY_DRAW) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_FZONE) - e4:SetProperty(EFFECT_FLAG_BOTH_SIDE+EFFECT_FLAG_PLAYER_TARGET) - e4:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e4:SetCost(c67616300.effcost) - e4:SetTarget(c67616300.drtg) - e4:SetOperation(c67616300.drop) - c:RegisterEffect(e4) - --destroy - local e5=e4:Clone() - e5:SetDescription(aux.Stringid(67616300,1)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetProperty(EFFECT_FLAG_BOTH_SIDE) - e5:SetTarget(c67616300.destg) - e5:SetOperation(c67616300.desop) - c:RegisterEffect(e5) - --recover - local e6=e4:Clone() - e6:SetDescription(aux.Stringid(67616300,2)) - e6:SetCategory(CATEGORY_RECOVER) - e6:SetTarget(c67616300.rectg) - e6:SetOperation(c67616300.recop) - c:RegisterEffect(e6) -end -function c67616300.damcon1(e) - local tp=e:GetHandlerPlayer() - return Duel.GetLP(tp)0 - and Duel.IsExistingTarget(c67696066.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c67696066.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) -end -function c67696066.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - Duel.BreakEffect() - Duel.Damage(tp,1000,REASON_EFFECT) - end -end +--Emトリック・クラウン +function c67696066.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,67696066) + e1:SetTarget(c67696066.sptg) + e1:SetOperation(c67696066.spop) + c:RegisterEffect(e1) +end +function c67696066.filter(c,e,tp) + return c:IsSetCard(0xc6) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c67696066.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c67696066.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c67696066.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c67696066.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) +end +function c67696066.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + Duel.BreakEffect() + Duel.Damage(tp,1000,REASON_EFFECT) + end +end diff --git a/script/c67723438.lua b/script/c67723438.lua index 77d0b70d..f38de59a 100644 --- a/script/c67723438.lua +++ b/script/c67723438.lua @@ -1,50 +1,50 @@ ---緊急テレポート -function c67723438.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c67723438.target) - e1:SetOperation(c67723438.activate) - c:RegisterEffect(e1) -end -function c67723438.filter(c,e,tp) - return c:IsLevelBelow(3) and c:IsRace(RACE_PSYCHO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c67723438.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c67723438.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) -end -function c67723438.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - local fid=c:GetFieldID() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c67723438.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(67723438,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(tc) - e1:SetCondition(c67723438.rmcon) - e1:SetOperation(c67723438.rmop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - end -end -function c67723438.rmcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - return tc:GetFlagEffectLabel(67723438)==e:GetLabel() -end -function c67723438.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) -end +--緊急テレポート +function c67723438.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c67723438.target) + e1:SetOperation(c67723438.activate) + c:RegisterEffect(e1) +end +function c67723438.filter(c,e,tp) + return c:IsLevelBelow(3) and c:IsRace(RACE_PSYCHO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c67723438.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c67723438.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_DECK+LOCATION_HAND) +end +function c67723438.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local fid=c:GetFieldID() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c67723438.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(67723438,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c67723438.rmcon) + e1:SetOperation(c67723438.rmop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c67723438.rmcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return tc:GetFlagEffectLabel(67723438)==e:GetLabel() +end +function c67723438.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c67757079.lua b/script/c67757079.lua index 83bbca7a..509da71b 100644 --- a/script/c67757079.lua +++ b/script/c67757079.lua @@ -1,36 +1,36 @@ ---キング・オブ・ビースト -function c67757079.initial_effect(c) - c:SetUniqueOnField(1,1,67757079) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(67757079,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetCost(c67757079.spcost) - e1:SetTarget(c67757079.sptg) - e1:SetOperation(c67757079.spop) - c:RegisterEffect(e1) -end -function c67757079.cfilter(c) - return c:IsFaceup() and c:IsCode(94878265) -end -function c67757079.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c67757079.cfilter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c67757079.cfilter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c67757079.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c67757079.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--キング・オブ・ビースト +function c67757079.initial_effect(c) + c:SetUniqueOnField(1,1,67757079) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(67757079,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCost(c67757079.spcost) + e1:SetTarget(c67757079.sptg) + e1:SetOperation(c67757079.spop) + c:RegisterEffect(e1) +end +function c67757079.cfilter(c) + return c:IsFaceup() and c:IsCode(94878265) +end +function c67757079.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c67757079.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c67757079.cfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c67757079.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c67757079.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c67775894.lua b/script/c67775894.lua index 225f234e..7af90ae5 100644 --- a/script/c67775894.lua +++ b/script/c67775894.lua @@ -1,27 +1,12 @@ --ワンダー・ワンド function c67775894.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(c67775894.target) - e1:SetOperation(c67775894.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(500) 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(c67775894.eqlimit) - c:RegisterEffect(e3) --draw local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(67775894,0)) @@ -34,25 +19,6 @@ function c67775894.initial_effect(c) e4:SetOperation(c67775894.drop) c:RegisterEffect(e4) end -function c67775894.eqlimit(e,c) - return c:IsRace(RACE_SPELLCASTER) -end -function c67775894.filter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) -end -function c67775894.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c67775894.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c67775894.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c67775894.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c67775894.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 c67775894.drcost(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() if chk==0 then return c:IsAbleToGraveAsCost() and c:GetControler()==c:GetEquipTarget():GetControler() diff --git a/script/c67808837.lua b/script/c67808837.lua index 6d4af3f1..c441bc74 100644 --- a/script/c67808837.lua +++ b/script/c67808837.lua @@ -60,8 +60,8 @@ function c67808837.thop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsRelateToEffect(e) or Duel.Destroy(c,REASON_EFFECT)==0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c67808837.thfilter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c67808837.thfilter),tp,LOCATION_EXTRA+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c67820935.lua b/script/c67820935.lua new file mode 100644 index 00000000..83381bf8 --- /dev/null +++ b/script/c67820935.lua @@ -0,0 +1,43 @@ +--肥大化 +function c67820935.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(c67820935.condition) + e1:SetTarget(c67820935.target) + e1:SetOperation(c67820935.activate) + c:RegisterEffect(e1) +end +function c67820935.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c67820935.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c67820935.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(tc:GetDefense()*2) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + end +end diff --git a/script/c67922702.lua b/script/c67922702.lua index 93bfffb7..e6288a5f 100644 --- a/script/c67922702.lua +++ b/script/c67922702.lua @@ -1,89 +1,89 @@ ---幻獣機テザーウルフ -function c67922702.initial_effect(c) - --level - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(c67922702.lvval) - 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_INDESTRUCTABLE_BATTLE) - e2:SetCondition(c67922702.indcon) - e2:SetValue(1) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e3) - --token - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(67922702,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_SUMMON_SUCCESS) - e4:SetTarget(c67922702.sptg) - e4:SetOperation(c67922702.spop) - c:RegisterEffect(e4) - --atkup - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(67922702,1)) - e5:SetCategory(CATEGORY_ATKCHANGE) - e5:SetType(EFFECT_TYPE_QUICK_O) - e5:SetRange(LOCATION_MZONE) - e5:SetCode(EVENT_FREE_CHAIN) - e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e5:SetHintTiming(TIMING_DAMAGE_STEP) - e5:SetCondition(c67922702.atkcon) - e5:SetCost(c67922702.atkcost) - e5:SetOperation(c67922702.atkop) - c:RegisterEffect(e5) -end -function c67922702.lvval(e,c) - local tp=c:GetControler() - local lv=0 - for i=0,4 do - local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) - if tc and tc:IsCode(31533705) then lv=lv+tc:GetLevel() end - end - return lv -end -function c67922702.indcon(e) - return Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,TYPE_TOKEN) -end -function c67922702.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c67922702.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then - local token=Duel.CreateToken(tp,67922703) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) - end -end -function c67922702.atkcon(e,tp,eg,ep,ev,re,r,rp) - local phase=Duel.GetCurrentPhase() - return e:GetHandler():GetBattleTarget()~=nil and phase==PHASE_DAMAGE and not Duel.IsDamageCalculated() -end -function c67922702.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(67922702)==0 - and Duel.CheckReleaseGroup(tp,Card.IsType,1,nil,TYPE_TOKEN) end - local g=Duel.SelectReleaseGroup(tp,Card.IsType,1,1,nil,TYPE_TOKEN) - Duel.Release(g,REASON_COST) - e:GetHandler():RegisterFlagEffect(67922702,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) -end -function c67922702.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(800) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end +--幻獣機テザーウルフ +function c67922702.initial_effect(c) + --level + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(c67922702.lvval) + 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_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c67922702.indcon) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e3) + --token + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(67922702,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetTarget(c67922702.sptg) + e4:SetOperation(c67922702.spop) + c:RegisterEffect(e4) + --atkup + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(67922702,1)) + e5:SetCategory(CATEGORY_ATKCHANGE) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EVENT_FREE_CHAIN) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e5:SetHintTiming(TIMING_DAMAGE_STEP) + e5:SetCondition(c67922702.atkcon) + e5:SetCost(c67922702.atkcost) + e5:SetOperation(c67922702.atkop) + c:RegisterEffect(e5) +end +function c67922702.lvval(e,c) + local tp=c:GetControler() + local lv=0 + for i=0,4 do + local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + if tc and tc:IsCode(31533705) then lv=lv+tc:GetLevel() end + end + return lv +end +function c67922702.indcon(e) + return Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,TYPE_TOKEN) +end +function c67922702.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c67922702.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then + local token=Duel.CreateToken(tp,67922703) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end +function c67922702.atkcon(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + return e:GetHandler():GetBattleTarget()~=nil and phase==PHASE_DAMAGE and not Duel.IsDamageCalculated() +end +function c67922702.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(67922702)==0 + and Duel.CheckReleaseGroup(tp,Card.IsType,1,nil,TYPE_TOKEN) end + local g=Duel.SelectReleaseGroup(tp,Card.IsType,1,1,nil,TYPE_TOKEN) + Duel.Release(g,REASON_COST) + e:GetHandler():RegisterFlagEffect(67922702,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c67922702.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c67926903.lua b/script/c67926903.lua index 1921d938..94c07086 100644 --- a/script/c67926903.lua +++ b/script/c67926903.lua @@ -1,85 +1,85 @@ ---CX 冀望皇バリアン -function c67926903.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,nil,7,3,c67926903.ovfilter,aux.Stringid(67926903,0),5) - c:EnableReviveLimit() - --atk - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(c67926903.atkval) - c:RegisterEffect(e1) - --copy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(67926903,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1,67926903) - e2:SetTarget(c67926903.copytg) - e2:SetOperation(c67926903.copyop) - c:RegisterEffect(e2) -end -function c67926903.ovfilter(c) - local code=c:GetCode() - local class=_G["c"..code] - if class==nil then return false end - local no=class.xyz_number - return c:IsFaceup() and no and no>=101 and no<=107 and c:IsSetCard(0x1048) -end -function c67926903.atkval(e,c) - return c:GetOverlayCount()*1000 -end -function c67926903.filter(c) - return c:IsSetCard(0x48) and c:IsType(TYPE_EFFECT) -end -function c67926903.copytg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c67926903.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c67926903.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c67926903.filter,tp,LOCATION_GRAVE,0,1,1,nil) -end -function c67926903.copyop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then - local code=tc:GetOriginalCode() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(code) - e1:SetLabel(tp) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - c:RegisterEffect(e1) - local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(67926903,2)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c67926903.rstcon) - e2:SetOperation(c67926903.rstop) - e2:SetLabel(cid) - e2:SetLabelObject(e1) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - c:RegisterEffect(e2) - end -end -function c67926903.rstcon(e,tp,eg,ep,ev,re,r,rp) - local e1=e:GetLabelObject() - return Duel.GetTurnPlayer()~=e1:GetLabel() -end -function c67926903.rstop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local cid=e:GetLabel() - c:ResetEffect(cid,RESET_COPY) - local e1=e:GetLabelObject() - e1:Reset() - Duel.HintSelection(Group.FromCards(c)) - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end +--CX 冀望皇バリアン +function c67926903.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,3,c67926903.ovfilter,aux.Stringid(67926903,0),5) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c67926903.atkval) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67926903,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,67926903) + e2:SetTarget(c67926903.copytg) + e2:SetOperation(c67926903.copyop) + c:RegisterEffect(e2) +end +function c67926903.ovfilter(c) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return c:IsFaceup() and no and no>=101 and no<=107 and c:IsSetCard(0x1048) +end +function c67926903.atkval(e,c) + return c:GetOverlayCount()*1000 +end +function c67926903.filter(c) + return c:IsSetCard(0x48) and c:IsType(TYPE_EFFECT) +end +function c67926903.copytg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c67926903.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c67926903.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c67926903.filter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c67926903.copyop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then + local code=tc:GetOriginalCode() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(code) + e1:SetLabel(tp) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + c:RegisterEffect(e1) + local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(67926903,2)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c67926903.rstcon) + e2:SetOperation(c67926903.rstop) + e2:SetLabel(cid) + e2:SetLabelObject(e1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + c:RegisterEffect(e2) + end +end +function c67926903.rstcon(e,tp,eg,ep,ev,re,r,rp) + local e1=e:GetLabelObject() + return Duel.GetTurnPlayer()~=e1:GetLabel() +end +function c67926903.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=e:GetLabel() + c:ResetEffect(cid,RESET_COPY) + local e1=e:GetLabelObject() + e1:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end diff --git a/script/c67951831.lua b/script/c67951831.lua index 04c85ba4..579fe08b 100644 --- a/script/c67951831.lua +++ b/script/c67951831.lua @@ -1,37 +1,37 @@ ---ヒーローハート -function c67951831.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c67951831.target) - e1:SetOperation(c67951831.activate) - c:RegisterEffect(e1) -end -function c67951831.filter(c) - return c:IsFaceup() and c:IsSetCard(0x3008) -end -function c67951831.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c67951831.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c67951831.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c67951831.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c67951831.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(tc:GetAttack()/2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EXTRA_ATTACK) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--ヒーローハート +function c67951831.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c67951831.target) + e1:SetOperation(c67951831.activate) + c:RegisterEffect(e1) +end +function c67951831.filter(c) + return c:IsFaceup() and c:IsSetCard(0x3008) +end +function c67951831.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c67951831.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c67951831.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c67951831.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c67951831.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c67957315.lua b/script/c67957315.lua index cfa71b4d..da1ee315 100644 --- a/script/c67957315.lua +++ b/script/c67957315.lua @@ -7,7 +7,7 @@ function c67957315.initial_effect(c) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) - e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetHintTiming(TIMING_BATTLE_PHASE+TIMING_CHAIN_END) e1:SetCondition(c67957315.adcon) e1:SetCost(c67957315.adcost) e1:SetOperation(c67957315.adop) diff --git a/script/c67985943.lua b/script/c67985943.lua index e49bc6cc..b4643cde 100644 --- a/script/c67985943.lua +++ b/script/c67985943.lua @@ -1,32 +1,32 @@ ---ジェムナイト・マディラ -function c67985943.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsRace,RACE_PYRO),true) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(c67985943.splimit) - c:RegisterEffect(e2) - --actlimit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCode(EFFECT_CANNOT_ACTIVATE) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,1) - e3:SetValue(c67985943.aclimit) - e3:SetCondition(c67985943.actcon) - c:RegisterEffect(e3) -end -function c67985943.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c67985943.aclimit(e,re,tp) - return not re:GetHandler():IsImmuneToEffect(e) -end -function c67985943.actcon(e) - return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() -end +--ジェムナイト・マディラ +function c67985943.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsRace,RACE_PYRO),true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(c67985943.splimit) + c:RegisterEffect(e2) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetValue(c67985943.aclimit) + e3:SetCondition(c67985943.actcon) + c:RegisterEffect(e3) +end +function c67985943.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c67985943.aclimit(e,re,tp) + return not re:GetHandler():IsImmuneToEffect(e) +end +function c67985943.actcon(e) + return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() +end diff --git a/script/c68077936.lua b/script/c68077936.lua index 462c2a2e..421752dc 100644 --- a/script/c68077936.lua +++ b/script/c68077936.lua @@ -27,7 +27,7 @@ function c68077936.cfilter(c,tp) return c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp and c:IsReason(REASON_EFFECT) end function c68077936.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c68077936.cfilter,1,nil,tp) and re:IsActiveType(TYPE_SPELL) + return eg:IsExists(c68077936.cfilter,1,nil,tp) and re and re:IsActiveType(TYPE_SPELL) end function c68077936.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() end diff --git a/script/c68084557.lua b/script/c68084557.lua index e76f2ea7..903a6a47 100644 --- a/script/c68084557.lua +++ b/script/c68084557.lua @@ -1,58 +1,58 @@ ---機械竜 パワー・ツール -function c68084557.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --draw - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetDescription(aux.Stringid(68084557,0)) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_EQUIP) - e1:SetCountLimit(1,68084557) - e1:SetCondition(c68084557.drcon) - e1:SetTarget(c68084557.drtg) - e1:SetOperation(c68084557.drop) - c:RegisterEffect(e1) - --equip change - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(68084557,1)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetTarget(c68084557.eqtg) - e2:SetOperation(c68084557.eqop) - c:RegisterEffect(e2) -end -function c68084557.drcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c68084557.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c68084557.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end -function c68084557.eqfilter(c,ec) - return c:IsType(TYPE_EQUIP) and c:GetEquipTarget() and c:GetEquipTarget()~=ec and c:CheckEquipTarget(ec) -end -function c68084557.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c68084557.eqfilter(chkc,e:GetHandler()) end - if chk==0 then return Duel.IsExistingTarget(c68084557.eqfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c68084557.eqfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil,e:GetHandler()) -end -function c68084557.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:CheckEquipTarget(c) then - Duel.Equip(tp,tc,c) - end -end +--機械竜 パワー・ツール +function c68084557.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --draw + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetDescription(aux.Stringid(68084557,0)) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_EQUIP) + e1:SetCountLimit(1,68084557) + e1:SetCondition(c68084557.drcon) + e1:SetTarget(c68084557.drtg) + e1:SetOperation(c68084557.drop) + c:RegisterEffect(e1) + --equip change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(68084557,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetTarget(c68084557.eqtg) + e2:SetOperation(c68084557.eqop) + c:RegisterEffect(e2) +end +function c68084557.drcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c68084557.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c68084557.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c68084557.eqfilter(c,ec) + return c:IsType(TYPE_EQUIP) and c:GetEquipTarget() and c:GetEquipTarget()~=ec and c:CheckEquipTarget(ec) +end +function c68084557.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c68084557.eqfilter(chkc,e:GetHandler()) end + if chk==0 then return Duel.IsExistingTarget(c68084557.eqfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c68084557.eqfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil,e:GetHandler()) +end +function c68084557.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:CheckEquipTarget(c) then + Duel.Equip(tp,tc,c) + end +end diff --git a/script/c68140974.lua b/script/c68140974.lua index b100ffbe..db7dc2d7 100644 --- a/script/c68140974.lua +++ b/script/c68140974.lua @@ -1,138 +1,137 @@ ---機皇帝ワイゼル∞ -function c68140974.initial_effect(c) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(0) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(68140974,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c68140974.spcon) - e2:SetTarget(c68140974.sptg) - e2:SetOperation(c68140974.spop) - c:RegisterEffect(e2) - --cannot attack announce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(c68140974.antarget) - c:RegisterEffect(e3) - --equip - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(68140974,1)) - e4:SetCategory(CATEGORY_EQUIP) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1) - e4:SetTarget(c68140974.eqtg) - e4:SetOperation(c68140974.eqop) - c:RegisterEffect(e4) - --negate spell - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(68140974,2)) - e5:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e5:SetType(EFFECT_TYPE_QUICK_O) - e5:SetCode(EVENT_CHAINING) - e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetCondition(c68140974.negcon) - e5:SetTarget(c68140974.negtg) - e5:SetOperation(c68140974.negop) - c:RegisterEffect(e5) -end -function c68140974.filter(c,tp) - return c:IsType(TYPE_MONSTER) and bit.band(c:GetReason(),0x41)==0x41 and c:GetPreviousControler()==tp - and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) -end -function c68140974.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c68140974.filter,1,nil,tp) -end -function c68140974.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c68140974.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then - c:CompleteProcedure() - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c68140974.antarget(e,c) - return c~=e:GetHandler() -end -function c68140974.eqfilter(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() -end -function c68140974.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c68140974.eqfilter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c68140974.eqfilter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c68140974.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c68140974.eqlimit(e,c) - return e:GetOwner()==c -end -function c68140974.eqop(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:IsType(TYPE_MONSTER) then - if c:IsFaceup() and c:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,tc,c,false) then return end - --Add Equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c68140974.eqlimit) - tc:RegisterEffect(e1) - if atk>0 then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - tc:RegisterEffect(e2) - end - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c68140974.negcon(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end - return ep~=tp and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c68140974.negtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c68140974.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--機皇帝ワイゼル∞ +function c68140974.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(0) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(68140974,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c68140974.spcon) + e2:SetTarget(c68140974.sptg) + e2:SetOperation(c68140974.spop) + c:RegisterEffect(e2) + --cannot attack announce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c68140974.antarget) + c:RegisterEffect(e3) + --equip + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(68140974,1)) + e4:SetCategory(CATEGORY_EQUIP) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c68140974.eqtg) + e4:SetOperation(c68140974.eqop) + c:RegisterEffect(e4) + --negate spell + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(68140974,2)) + e5:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetCode(EVENT_CHAINING) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCondition(c68140974.negcon) + e5:SetTarget(c68140974.negtg) + e5:SetOperation(c68140974.negop) + c:RegisterEffect(e5) +end +function c68140974.filter(c,tp) + return c:IsType(TYPE_MONSTER) and bit.band(c:GetReason(),0x41)==0x41 and c:GetPreviousControler()==tp + and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) +end +function c68140974.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c68140974.filter,1,nil,tp) +end +function c68140974.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c68140974.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then + c:CompleteProcedure() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c68140974.antarget(e,c) + return c~=e:GetHandler() +end +function c68140974.eqfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToChangeControler() +end +function c68140974.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c68140974.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c68140974.eqfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c68140974.eqfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c68140974.eqlimit(e,c) + return e:GetOwner()==c +end +function c68140974.eqop(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:IsType(TYPE_MONSTER) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c68140974.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c68140974.negcon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return ep~=tp and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c68140974.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c68140974.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c68170903.lua b/script/c68170903.lua index 8395f722..0d2ed3f6 100644 --- a/script/c68170903.lua +++ b/script/c68170903.lua @@ -1,22 +1,22 @@ ---陽動作戦 -function c68170903.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:SetOperation(c68170903.activate) - c:RegisterEffect(e1) -end -function c68170903.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetValue(c68170903.atlimit) - e1:SetReset(RESET_PHASE+PHASE_END,1) - Duel.RegisterEffect(e1,tp) -end -function c68170903.atlimit(e,c) - return c:IsFacedown() -end +--陽動作戦 +function c68170903.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:SetOperation(c68170903.activate) + c:RegisterEffect(e1) +end +function c68170903.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetValue(c68170903.atlimit) + e1:SetReset(RESET_PHASE+PHASE_END,1) + Duel.RegisterEffect(e1,tp) +end +function c68170903.atlimit(e,c) + return c:IsFacedown() +end diff --git a/script/c68182934.lua b/script/c68182934.lua index 4bda9eb7..2536402b 100644 --- a/script/c68182934.lua +++ b/script/c68182934.lua @@ -1,4 +1,4 @@ ---Sky Dragoons of Draconia +--ドラコニアの翼竜騎兵 function c68182934.initial_effect(c) --pendulum summon aux.EnablePendulumAttribute(c) diff --git a/script/c68184115.lua b/script/c68184115.lua index 3575c7cb..92b26405 100644 --- a/script/c68184115.lua +++ b/script/c68184115.lua @@ -42,9 +42,9 @@ function c68184115.eqop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end if c:IsFacedown() or not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c68184115.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c68184115.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if not Duel.Equip(tp,tc,c,true) then return end local e1=Effect.CreateEffect(c) e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) diff --git a/script/c68191243.lua b/script/c68191243.lua index 7fb2dd8b..55c4be93 100644 --- a/script/c68191243.lua +++ b/script/c68191243.lua @@ -35,7 +35,7 @@ function c68191243.op(e,tp,eg,ep,ev,re,r,rp) Duel.SpecialSummonStep(sg:GetFirst(),0,tp,tp,false,false,POS_FACEUP) ft=ft-1 g:Remove(Card.IsCode,nil,sg:GetFirst():GetCode()) - if g:GetCount()>0 and ft>0 and not Duel.SelectYesNo(tp,aux.Stringid(68191243,0)) then ft=0 end + if g:GetCount()>0 and ft>0 and (Duel.IsPlayerAffectedByEffect(tp,59822133) or not Duel.SelectYesNo(tp,aux.Stringid(68191243,0))) then ft=0 end end Duel.SpecialSummonComplete() end diff --git a/script/c68304813.lua b/script/c68304813.lua index 66c0dd7e..235e4d16 100644 --- a/script/c68304813.lua +++ b/script/c68304813.lua @@ -1,37 +1,37 @@ ---冥界の宝札 -function c68304813.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(68304813,0)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c68304813.condition) - e2:SetTarget(c68304813.target) - e2:SetOperation(c68304813.operation) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_MSET) - c:RegisterEffect(e3) -end -function c68304813.condition(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - return bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and tc:GetMaterialCount()>=2 and tc:GetSummonPlayer()==tp -end -function c68304813.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c68304813.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--冥界の宝札 +function c68304813.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(68304813,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c68304813.condition) + e2:SetTarget(c68304813.target) + e2:SetOperation(c68304813.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_MSET) + c:RegisterEffect(e3) +end +function c68304813.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and tc:GetMaterialCount()>=2 and tc:GetSummonPlayer()==tp +end +function c68304813.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c68304813.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c68334074.lua b/script/c68334074.lua index 84a4414c..cdef31b7 100644 --- a/script/c68334074.lua +++ b/script/c68334074.lua @@ -1,36 +1,36 @@ ---奇跡の復活 -function c68334074.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCost(c68334074.cost) - e1:SetTarget(c68334074.target) - e1:SetOperation(c68334074.activate) - c:RegisterEffect(e1) -end -c68334074.card_code_list={46986414} -function c68334074.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x1,2,REASON_COST) end - Duel.RemoveCounter(tp,1,0,0x1,2,REASON_COST) -end -function c68334074.filter(c,e,tp) - return c:IsCode(46986414,78193831) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c68334074.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c68334074.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c68334074.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c68334074.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c68334074.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--奇跡の復活 +function c68334074.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c68334074.cost) + e1:SetTarget(c68334074.target) + e1:SetOperation(c68334074.activate) + c:RegisterEffect(e1) +end +c68334074.card_code_list={46986414} +function c68334074.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x1,2,REASON_COST) end + Duel.RemoveCounter(tp,1,0,0x1,2,REASON_COST) +end +function c68334074.filter(c,e,tp) + return c:IsCode(46986414,78193831) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c68334074.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c68334074.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c68334074.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c68334074.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c68334074.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c68371799.lua b/script/c68371799.lua index 661bca0c..221026a7 100644 --- a/script/c68371799.lua +++ b/script/c68371799.lua @@ -1,93 +1,93 @@ ---デーモンの将星 -function c68371799.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,68371799) - e1:SetCondition(c68371799.spcon) - e1:SetOperation(c68371799.spop) - e1:SetValue(1) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(68371799,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c68371799.descon) - e2:SetTarget(c68371799.destg) - e2:SetOperation(c68371799.desop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(68371799,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetCondition(c68371799.spcon2) - e3:SetTarget(c68371799.sptg2) - e3:SetOperation(c68371799.spop2) - c:RegisterEffect(e3) -end -function c68371799.filter(c) - return c:IsFaceup() and c:IsSetCard(0x45) -end -function c68371799.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c68371799.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c68371799.spop(e,tp,eg,ep,ev,re,r,rp,c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end -function c68371799.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c68371799.desfilter(c) - return c:IsFaceup() and c:IsSetCard(0x45) -end -function c68371799.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsOnField() and c68371799.desfilter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c68371799.desfilter,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c68371799.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c68371799.spcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE -end -function c68371799.spfilter(c,e,tp) - return c:GetLevel()==6 and c:IsSetCard(0x45) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c68371799.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c68371799.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c68371799.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c68371799.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c68371799.spop2(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--デーモンの将星 +function c68371799.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,68371799) + e1:SetCondition(c68371799.spcon) + e1:SetOperation(c68371799.spop) + e1:SetValue(1) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(68371799,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c68371799.descon) + e2:SetTarget(c68371799.destg) + e2:SetOperation(c68371799.desop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(68371799,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetCondition(c68371799.spcon2) + e3:SetTarget(c68371799.sptg2) + e3:SetOperation(c68371799.spop2) + c:RegisterEffect(e3) +end +function c68371799.filter(c) + return c:IsFaceup() and c:IsSetCard(0x45) +end +function c68371799.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c68371799.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c68371799.spop(e,tp,eg,ep,ev,re,r,rp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c68371799.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c68371799.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0x45) +end +function c68371799.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsOnField() and c68371799.desfilter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c68371799.desfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c68371799.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c68371799.spcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE +end +function c68371799.spfilter(c,e,tp) + return c:GetLevel()==6 and c:IsSetCard(0x45) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c68371799.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c68371799.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c68371799.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c68371799.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c68371799.spop2(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c68392533.lua b/script/c68392533.lua index 8397f521..6ec5c5ec 100644 --- a/script/c68392533.lua +++ b/script/c68392533.lua @@ -1,14 +1,6 @@ --念動増幅装置 function c68392533.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(c68392533.target) - e1:SetOperation(c68392533.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_PSYCHO)) --Cost Change local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) @@ -18,13 +10,6 @@ function c68392533.initial_effect(c) e2:SetTargetRange(1,1) e2:SetValue(c68392533.costchange) 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(c68392533.eqlimit) - c:RegisterEffect(e3) --tohand local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(68392533,0)) @@ -38,19 +23,6 @@ function c68392533.initial_effect(c) e4:SetOperation(c68392533.thop) c:RegisterEffect(e4) end -function c68392533.eqlimit(e,c) - return c:IsRace(RACE_PSYCHO) -end -function c68392533.filter(c) - return c:IsFaceup() and c:IsRace(RACE_PSYCHO) -end -function c68392533.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c68392533.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c68392533.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c68392533.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end function c68392533.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local tc=Duel.GetFirstTarget() diff --git a/script/c68395509.lua b/script/c68395509.lua index ea3aa4c9..4196da5b 100644 --- a/script/c68395509.lua +++ b/script/c68395509.lua @@ -1,52 +1,52 @@ ---マジェスペクター・クロウ -function c68395509.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetCountLimit(1,68395509) - e2:SetTarget(c68395509.thtg) - e2:SetOperation(c68395509.thop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --cannot target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e4:SetValue(aux.tgoval) - c:RegisterEffect(e4) - --indes - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e5:SetRange(LOCATION_MZONE) - e5:SetValue(c68395509.indval) - c:RegisterEffect(e5) -end -function c68395509.thfilter(c) - return c:IsSetCard(0xd0) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() -end -function c68395509.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c68395509.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c68395509.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c68395509.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c68395509.indval(e,re,tp) - return tp~=e:GetHandlerPlayer() -end +--マジェスペクター・クロウ +function c68395509.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCountLimit(1,68395509) + e2:SetTarget(c68395509.thtg) + e2:SetOperation(c68395509.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --cannot target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetValue(aux.tgoval) + c:RegisterEffect(e4) + --indes + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c68395509.indval) + c:RegisterEffect(e5) +end +function c68395509.thfilter(c) + return c:IsSetCard(0xd0) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c68395509.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c68395509.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c68395509.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c68395509.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c68395509.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end diff --git a/script/c68396121.lua b/script/c68396121.lua index da95dd73..f82012d2 100644 --- a/script/c68396121.lua +++ b/script/c68396121.lua @@ -6,6 +6,7 @@ function c68396121.initial_effect(c) --negate local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(68396121,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c68427465.lua b/script/c68427465.lua index d2aeccdf..d3bd05f0 100644 --- a/script/c68427465.lua +++ b/script/c68427465.lua @@ -1,28 +1,12 @@ --破邪の大剣-バオウ function c68427465.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:SetCost(c68427465.cost) - e1:SetTarget(c68427465.target) - e1:SetOperation(c68427465.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,nil,nil,c68427465.cost) --Atkup local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(500) 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) --negate local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -35,19 +19,6 @@ function c68427465.cost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,e:GetHandler()) end Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) end -function c68427465.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 c68427465.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 c68427465.negop(e,tp,eg,ep,ev,re,r,rp) local ec=e:GetHandler():GetEquipTarget() if not ec:IsRelateToBattle() then return end diff --git a/script/c68450517.lua b/script/c68450517.lua index 0c0fe9c5..208fe8cb 100644 --- a/script/c68450517.lua +++ b/script/c68450517.lua @@ -1,42 +1,42 @@ ---A・ジェネクス・ドゥルダーク -function c68450517.initial_effect(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(68450517,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c68450517.descost) - e1:SetTarget(c68450517.destg) - e1:SetOperation(c68450517.desop) - c:RegisterEffect(e1) -end -function c68450517.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c68450517.filter(c,att) - return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAttribute(att) -end -function c68450517.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) - and c68450517.filter(chkc,e:GetHandler():GetAttribute()) end - if chk==0 then return Duel.IsExistingTarget(c68450517.filter,tp,0,LOCATION_MZONE,1,nil,e:GetHandler():GetAttribute()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c68450517.filter,tp,0,LOCATION_MZONE,1,1,nil,e:GetHandler():GetAttribute()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c68450517.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) and c68450517.filter(tc,c:GetAttribute()) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--A・ジェネクス・ドゥルダーク +function c68450517.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(68450517,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c68450517.descost) + e1:SetTarget(c68450517.destg) + e1:SetOperation(c68450517.desop) + c:RegisterEffect(e1) +end +function c68450517.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c68450517.filter(c,att) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsAttribute(att) +end +function c68450517.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) + and c68450517.filter(chkc,e:GetHandler():GetAttribute()) end + if chk==0 then return Duel.IsExistingTarget(c68450517.filter,tp,0,LOCATION_MZONE,1,nil,e:GetHandler():GetAttribute()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c68450517.filter,tp,0,LOCATION_MZONE,1,1,nil,e:GetHandler():GetAttribute()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c68450517.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) and c68450517.filter(tc,c:GetAttribute()) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c68456353.lua b/script/c68456353.lua index 30c6c65e..c91c432c 100644 --- a/script/c68456353.lua +++ b/script/c68456353.lua @@ -26,8 +26,7 @@ function c68456353.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) end function c68456353.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT,nil) diff --git a/script/c68462976.lua b/script/c68462976.lua index 39c669af..83289fc0 100644 --- a/script/c68462976.lua +++ b/script/c68462976.lua @@ -1,42 +1,42 @@ ---魔法族の里 -function c68462976.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --adjust - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_ADJUST) - e2:SetRange(LOCATION_FZONE) - e2:SetOperation(c68462976.adjustop) - c:RegisterEffect(e2) - --cannot activate - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_ACTIVATE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(1,1) - e3:SetLabel(0) - e3:SetValue(c68462976.actlimit) - c:RegisterEffect(e3) - e2:SetLabelObject(e3) -end -function c68462976.actlimit(e,te,tp) - if not te:IsHasType(EFFECT_TYPE_ACTIVATE) or not te:IsActiveType(TYPE_SPELL) then return false end - if tp==e:GetHandlerPlayer() then return e:GetLabel()==1 - else return e:GetLabel()==2 end -end -function c68462976.filter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) -end -function c68462976.adjustop(e,tp,eg,ep,ev,re,r,rp) - local b1=Duel.IsExistingMatchingCard(c68462976.filter,tp,LOCATION_MZONE,0,1,nil) - local b2=Duel.IsExistingMatchingCard(c68462976.filter,tp,0,LOCATION_MZONE,1,nil) - local te=e:GetLabelObject() - if not b1 then te:SetLabel(1) - elseif b1 and not b2 then te:SetLabel(2) - else te:SetLabel(0) end -end +--魔法族の里 +function c68462976.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --adjust + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_FZONE) + e2:SetOperation(c68462976.adjustop) + c:RegisterEffect(e2) + --cannot activate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(1,1) + e3:SetLabel(0) + e3:SetValue(c68462976.actlimit) + c:RegisterEffect(e3) + e2:SetLabelObject(e3) +end +function c68462976.actlimit(e,te,tp) + if not te:IsHasType(EFFECT_TYPE_ACTIVATE) or not te:IsActiveType(TYPE_SPELL) then return false end + if tp==e:GetHandlerPlayer() then return e:GetLabel()==1 + else return e:GetLabel()==2 end +end +function c68462976.filter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c68462976.adjustop(e,tp,eg,ep,ev,re,r,rp) + local b1=Duel.IsExistingMatchingCard(c68462976.filter,tp,LOCATION_MZONE,0,1,nil) + local b2=Duel.IsExistingMatchingCard(c68462976.filter,tp,0,LOCATION_MZONE,1,nil) + local te=e:GetLabelObject() + if not b1 then te:SetLabel(1) + elseif b1 and not b2 then te:SetLabel(2) + else te:SetLabel(0) end +end diff --git a/script/c68473226.lua b/script/c68473226.lua index eeb216fe..2dee920c 100644 --- a/script/c68473226.lua +++ b/script/c68473226.lua @@ -1,52 +1,52 @@ ---ハードアームドラゴン -function c68473226.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c68473226.spcon) - e1:SetOperation(c68473226.spop) - c:RegisterEffect(e1) - --effect reg - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_BE_PRE_MATERIAL) - e2:SetCondition(c68473226.regcon) - e2:SetOperation(c68473226.regop) - c:RegisterEffect(e2) -end -function c68473226.spfilter(c) - return c:IsLevelAbove(8) and c:IsAbleToGraveAsCost() -end -function c68473226.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c68473226.spfilter,c:GetControler(),LOCATION_HAND,0,1,c) -end -function c68473226.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c68473226.spfilter,tp,LOCATION_HAND,0,1,1,c) - Duel.SendtoGrave(g,REASON_COST) -end -function c68473226.regcon(e,tp,eg,ep,ev,re,r,rp) - local rc=e:GetHandler():GetReasonCard() - return r==REASON_SUMMON and rc:IsFaceup() and rc:IsLevelAbove(7) -end -function c68473226.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local rc=c:GetReasonCard() - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(68473226,0)) - e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e1:SetValue(1) - e1:SetCondition(c68473226.indcon) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1) -end -function c68473226.indcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_MZONE) -end +--ハードアームドラゴン +function c68473226.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c68473226.spcon) + e1:SetOperation(c68473226.spop) + c:RegisterEffect(e1) + --effect reg + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_PRE_MATERIAL) + e2:SetCondition(c68473226.regcon) + e2:SetOperation(c68473226.regop) + c:RegisterEffect(e2) +end +function c68473226.spfilter(c) + return c:IsLevelAbove(8) and c:IsAbleToGraveAsCost() +end +function c68473226.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c68473226.spfilter,c:GetControler(),LOCATION_HAND,0,1,c) +end +function c68473226.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c68473226.spfilter,tp,LOCATION_HAND,0,1,1,c) + Duel.SendtoGrave(g,REASON_COST) +end +function c68473226.regcon(e,tp,eg,ep,ev,re,r,rp) + local rc=e:GetHandler():GetReasonCard() + return r==REASON_SUMMON and rc:IsFaceup() and rc:IsLevelAbove(7) +end +function c68473226.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(68473226,0)) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(1) + e1:SetCondition(c68473226.indcon) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1) +end +function c68473226.indcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_MZONE) +end diff --git a/script/c6849042.lua b/script/c6849042.lua index b529fa95..2bed0c7d 100644 --- a/script/c6849042.lua +++ b/script/c6849042.lua @@ -25,11 +25,11 @@ end function c6849042.otfilter(c,tp) return c:IsRace(RACE_DINOSAUR) and (c:IsControler(tp) or c:IsFaceup()) end -function c6849042.otcon(e,c) +function c6849042.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c6849042.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c6849042.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c6849042.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c68540058.lua b/script/c68540058.lua index c5caf60d..f77b17ab 100644 --- a/script/c68540058.lua +++ b/script/c68540058.lua @@ -1,69 +1,69 @@ ---メタル化・魔法反射装甲 -function c68540058.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c68540058.condition) - e1:SetTarget(c68540058.target) - e1:SetOperation(c68540058.operation) - c:RegisterEffect(e1) -end -function c68540058.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c68540058.filter(c) - return c:IsFaceup() -end -function c68540058.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c68540058.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c68540058.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c68540058.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c68540058.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - --Atkup - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(300) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - 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) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - --atk up - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_EQUIP) - e4:SetCode(EFFECT_UPDATE_ATTACK) - e4:SetCondition(c68540058.atkcon) - e4:SetValue(c68540058.atkval) - e4:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e4) - end -end -function c68540058.atkcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL - and Duel.GetAttacker()==e:GetHandler():GetEquipTarget() and Duel.GetAttackTarget() -end -function c68540058.atkval(e,c) - return Duel.GetAttackTarget():GetAttack()/2 -end +--メタル化・魔法反射装甲 +function c68540058.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c68540058.condition) + e1:SetTarget(c68540058.target) + e1:SetOperation(c68540058.operation) + c:RegisterEffect(e1) +end +function c68540058.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c68540058.filter(c) + return c:IsFaceup() +end +function c68540058.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c68540058.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c68540058.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c68540058.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c68540058.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + 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) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + --atk up + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetCondition(c68540058.atkcon) + e4:SetValue(c68540058.atkval) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + end +end +function c68540058.atkcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL + and Duel.GetAttacker()==e:GetHandler():GetEquipTarget() and Duel.GetAttackTarget() +end +function c68540058.atkval(e,c) + return Duel.GetAttackTarget():GetAttack()/2 +end diff --git a/script/c68540059.lua b/script/c68540059.lua new file mode 100644 index 00000000..5f7cbef2 --- /dev/null +++ b/script/c68540059.lua @@ -0,0 +1,73 @@ +--メタル化·魔法反射装甲 +function c68540059.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c68540059.condition) + e1:SetTarget(c68540059.target) + e1:SetOperation(c68540059.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(c68540059.atkup) + c:RegisterEffect(e2) +end +function c68540059.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c68540059.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 e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c68540059.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENCE) + 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(c68540059.eqlimit) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c68540059.eqlimit(e,c) + return c:GetControler()==e:GetOwnerPlayer() +end +function c68540059.atkup(e,tp,eg,ep,ev,re,r,rp) + local eqc=e:GetHandler():GetEquipTarget() + local bc=eqc:GetBattleTarget() + if eqc==Duel.GetAttacker() and bc 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(bc:GetAttack()/2) + eqc:RegisterEffect(e1) + end +end diff --git a/script/c68597372.lua b/script/c68597372.lua index 6f7abe9f..257f6a56 100644 --- a/script/c68597372.lua +++ b/script/c68597372.lua @@ -16,7 +16,7 @@ function c68597372.initial_effect(c) e2:SetCategory(CATEGORY_POSITION) e2:SetDescription(aux.Stringid(68597372,0)) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) e2:SetCost(c68597372.cost) diff --git a/script/c68618157.lua b/script/c68618157.lua index ba314944..9caffd60 100644 --- a/script/c68618157.lua +++ b/script/c68618157.lua @@ -10,7 +10,7 @@ function c68618157.initial_effect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCondition(c68618157.spcon) @@ -24,7 +24,7 @@ function c68618157.initial_effect(c) e2:SetCategory(CATEGORY_TOHAND) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) e2:SetCondition(c68618157.thcon) diff --git a/script/c68625727.lua b/script/c68625727.lua index bec6dcd5..627fb2bb 100644 --- a/script/c68625727.lua +++ b/script/c68625727.lua @@ -1,31 +1,31 @@ ---占術姫ペタルエルフ -function c68625727.initial_effect(c) - --position - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetTarget(c68625727.postg) - e1:SetOperation(c68625727.posop) - c:RegisterEffect(e1) -end -function c68625727.postg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end - local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c68625727.posop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) - if Duel.ChangePosition(g,POS_FACEUP_DEFENSE)~=0 then - local og=Duel.GetOperatedGroup() - local oc=og:GetFirst() - while oc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) - e1:SetReset(RESET_EVENT+0x1fe0000) - oc:RegisterEffect(e1) - oc=og:GetNext() - end - end -end +--占術姫ペタルエルフ +function c68625727.initial_effect(c) + --position + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c68625727.postg) + e1:SetOperation(c68625727.posop) + c:RegisterEffect(e1) +end +function c68625727.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c68625727.posop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,0,LOCATION_MZONE,nil,POS_FACEUP_ATTACK) + if Duel.ChangePosition(g,POS_FACEUP_DEFENSE)~=0 then + local og=Duel.GetOperatedGroup() + local oc=og:GetFirst() + while oc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000) + oc:RegisterEffect(e1) + oc=og:GetNext() + end + end +end diff --git a/script/c68745629.lua b/script/c68745629.lua index 0810a823..8e521d68 100644 --- a/script/c68745629.lua +++ b/script/c68745629.lua @@ -1,28 +1,29 @@ ---E・HERO フレイム・ブラスト -function c68745629.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,98266377,95362816,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetCondition(c68745629.atkcon) - e2:SetValue(1000) - c:RegisterEffect(e2) -end -function c68745629.atkcon(e) - local ph=Duel.GetCurrentPhase() - if ph~=PHASE_DAMAGE and ph~=PHASE_DAMAGE_CAL then return false end - local bc=e:GetHandler():GetBattleTarget() - return bc and bc:IsFaceup() and bc:IsAttribute(ATTRIBUTE_WATER) -end +--E・HERO フレイム・ブラスト +function c68745629.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,98266377,95362816,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetCondition(c68745629.atkcon) + e2:SetValue(1000) + c:RegisterEffect(e2) +end +c68745629.material_setcode=0x8 +function c68745629.atkcon(e) + local ph=Duel.GetCurrentPhase() + if ph~=PHASE_DAMAGE and ph~=PHASE_DAMAGE_CAL then return false end + local bc=e:GetHandler():GetBattleTarget() + return bc and bc:IsFaceup() and bc:IsAttribute(ATTRIBUTE_WATER) +end diff --git a/script/c68819554.lua b/script/c68819554.lua index 69583398..e1f8563a 100644 --- a/script/c68819554.lua +++ b/script/c68819554.lua @@ -1,96 +1,95 @@ ---Emダメージ・ジャグラー -function c68819554.initial_effect(c) - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(68819554,0)) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_NEGATE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetCondition(c68819554.negcon) - e1:SetCost(c68819554.effcost) - e1:SetTarget(c68819554.negtg) - e1:SetOperation(c68819554.negop) - c:RegisterEffect(e1) - --reduce damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(68819554,1)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c68819554.damcon) - e2:SetCost(c68819554.effcost) - e2:SetOperation(c68819554.damop) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_GRAVE) - e3:SetCountLimit(1,68819554) - e3:SetCost(c68819554.thcost) - e3:SetTarget(c68819554.thtg) - e3:SetOperation(c68819554.thop) - c:RegisterEffect(e3) -end -function c68819554.effcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDiscardable() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end -function c68819554.negcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsChainNegatable(ev) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) -end -function c68819554.negtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsDestructable() then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c68819554.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c68819554.damcon(e,tp,eg,ep,ev,re,r,rp) - return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) -end -function c68819554.damop(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(c68819554.damval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - Duel.RegisterFlagEffect(tp,68819554,RESET_PHASE+PHASE_END,0,1) -end -function c68819554.damval(e,re,val,r,rp,rc) - local tp=e:GetHandlerPlayer() - if Duel.GetFlagEffect(tp,68819554)==0 or bit.band(r,REASON_BATTLE)==0 then return val end - Duel.ResetFlagEffect(tp,68819554) - return 0 -end -function c68819554.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c68819554.thfilter(c) - return c:IsSetCard(0xc6) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and not c:IsCode(68819554) -end -function c68819554.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c68819554.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c68819554.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c68819554.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--Emダメージ・ジャグラー +function c68819554.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(68819554,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_NEGATE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c68819554.negcon) + e1:SetCost(c68819554.effcost) + e1:SetTarget(c68819554.negtg) + e1:SetOperation(c68819554.negop) + c:RegisterEffect(e1) + --reduce damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(68819554,1)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c68819554.damcon) + e2:SetCost(c68819554.effcost) + e2:SetOperation(c68819554.damop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1,68819554) + e3:SetCost(c68819554.thcost) + e3:SetTarget(c68819554.thtg) + e3:SetOperation(c68819554.thop) + c:RegisterEffect(e3) +end +function c68819554.effcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c68819554.negcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsChainNegatable(ev) and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c68819554.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsDestructable() then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c68819554.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c68819554.damcon(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) +end +function c68819554.damop(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(c68819554.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.RegisterFlagEffect(tp,68819554,RESET_PHASE+PHASE_END,0,1) +end +function c68819554.damval(e,re,val,r,rp,rc) + local tp=e:GetHandlerPlayer() + if Duel.GetFlagEffect(tp,68819554)==0 or bit.band(r,REASON_BATTLE)==0 then return val end + Duel.ResetFlagEffect(tp,68819554) + return 0 +end +function c68819554.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c68819554.thfilter(c) + return c:IsSetCard(0xc6) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and not c:IsCode(68819554) +end +function c68819554.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c68819554.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c68819554.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c68819554.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c68833958.lua b/script/c68833958.lua index e567ce9d..cb7782e0 100644 --- a/script/c68833958.lua +++ b/script/c68833958.lua @@ -1,29 +1,29 @@ ---一騎加勢 -function c68833958.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c68833958.target) - e1:SetOperation(c68833958.activate) - c:RegisterEffect(e1) -end -function c68833958.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c68833958.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1500) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--一騎加勢 +function c68833958.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c68833958.target) + e1:SetOperation(c68833958.activate) + c:RegisterEffect(e1) +end +function c68833958.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c68833958.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1500) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c68836428.lua b/script/c68836428.lua index b39d7c3f..4a2f70cb 100644 --- a/script/c68836428.lua +++ b/script/c68836428.lua @@ -13,7 +13,7 @@ function c68836428.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(68836428,1)) e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e2:SetCode(EVENT_FREE_CHAIN) e2:SetHintTiming(TIMING_DAMAGE_STEP) e2:SetRange(LOCATION_MZONE) diff --git a/script/c68937720.lua b/script/c68937720.lua index 7055c618..621b1e15 100644 --- a/script/c68937720.lua +++ b/script/c68937720.lua @@ -1,26 +1,26 @@ ---メンタルドレイン -function c68937720.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c68937720.cost) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_CANNOT_ACTIVATE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(1,1) - e2:SetValue(c68937720.aclimit) - c:RegisterEffect(e2) -end -function c68937720.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 c68937720.aclimit(e,re,tp) - local loc=re:GetActivateLocation() - return loc==LOCATION_HAND and re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) -end +--メンタルドレイン +function c68937720.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c68937720.cost) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,1) + e2:SetValue(c68937720.aclimit) + c:RegisterEffect(e2) +end +function c68937720.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 c68937720.aclimit(e,re,tp) + local loc=re:GetActivateLocation() + return loc==LOCATION_HAND and re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c69000994.lua b/script/c69000994.lua index e3d7c103..554555eb 100644 --- a/script/c69000994.lua +++ b/script/c69000994.lua @@ -15,6 +15,7 @@ function c69000994.initial_effect(c) --search local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c69000994.threg) c:RegisterEffect(e2) diff --git a/script/c69058960.lua b/script/c69058960.lua index be67f2f3..22c3146b 100644 --- a/script/c69058960.lua +++ b/script/c69058960.lua @@ -7,6 +7,7 @@ function c69058960.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(69058960,0)) e1:SetCategory(CATEGORY_POSITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1) diff --git a/script/c69069911.lua b/script/c69069911.lua index 5175b6de..a29b0101 100644 --- a/script/c69069911.lua +++ b/script/c69069911.lua @@ -6,6 +6,7 @@ function c69069911.initial_effect(c) --chain attack local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(69069911,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_BATTLE_DESTROYING) e1:SetCountLimit(1) diff --git a/script/c69072185.lua b/script/c69072185.lua index 2cbccedf..912070e3 100644 --- a/script/c69072185.lua +++ b/script/c69072185.lua @@ -24,7 +24,7 @@ function c69072185.initial_effect(c) --remove local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD) - e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCode(EFFECT_TO_GRAVE_REDIRECT) e3:SetRange(LOCATION_PZONE) e3:SetCondition(c69072185.rmcon) diff --git a/script/c69122763.lua b/script/c69122763.lua index 70966cb1..f48e5366 100644 --- a/script/c69122763.lua +++ b/script/c69122763.lua @@ -1,34 +1,34 @@ ---守護霊のお守り -function c69122763.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(c69122763.condition) - e1:SetTarget(c69122763.target) - e1:SetOperation(c69122763.activate) - c:RegisterEffect(e1) -end -function c69122763.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c69122763.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c69122763.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER)*100) - tc:RegisterEffect(e1) - end -end +--守護霊のお守り +function c69122763.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(c69122763.condition) + e1:SetTarget(c69122763.target) + e1:SetOperation(c69122763.activate) + c:RegisterEffect(e1) +end +function c69122763.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c69122763.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c69122763.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER)*100) + tc:RegisterEffect(e1) + end +end diff --git a/script/c69155991.lua b/script/c69155991.lua index aa5a1e98..16d47a88 100644 --- a/script/c69155991.lua +++ b/script/c69155991.lua @@ -1,75 +1,75 @@ ---スクラップ・シャーク -function c69155991.initial_effect(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_CHAINING) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetRange(LOCATION_MZONE) - e1:SetOperation(c69155991.chop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_CHAIN_SOLVED) - e2:SetOperation(c69155991.desop1) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_BATTLED) - e3:SetProperty(EFFECT_FLAG_AVAILABLE_BD) - e3:SetOperation(c69155991.desop2) - e3:SetLabelObject(e2) - c:RegisterEffect(e3) - --to grave - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(69155991,0)) - e4:SetCategory(CATEGORY_TOGRAVE) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e4:SetCondition(c69155991.tgcon) - e4:SetTarget(c69155991.tgtg) - e4:SetOperation(c69155991.tgop) - c:RegisterEffect(e4) -end -function c69155991.chop(e,tp,eg,ep,ev,re,r,rp) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) or re:GetHandler():IsType(TYPE_MONSTER) then - e:GetHandler():RegisterFlagEffect(69155991,RESET_EVENT+0x1fe0000+RESET_CHAIN,0,1) - end -end -function c69155991.desop1(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetFlagEffect(69155991)==0 then return end - c:ResetFlagEffect(69155991) - local ph=Duel.GetCurrentPhase() - if (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and not Duel.IsDamageCalculated() then - c:RegisterFlagEffect(69155992,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) - else - Duel.Destroy(c,REASON_EFFECT) - end -end -function c69155991.desop2(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():GetFlagEffect(69155992)~=0 then - Duel.Destroy(e:GetHandler(),REASON_EFFECT) - end -end -function c69155991.tgcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return bit.band(c:GetReason(),0x41)==0x41 and re:GetOwner():IsSetCard(0x24) -end -function c69155991.filter(c) - return c:IsSetCard(0x24) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() -end -function c69155991.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c69155991.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c69155991.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c69155991.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end +--スクラップ・シャーク +function c69155991.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c69155991.chop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetOperation(c69155991.desop1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_BATTLED) + e3:SetProperty(EFFECT_FLAG_AVAILABLE_BD) + e3:SetOperation(c69155991.desop2) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --to grave + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(69155991,0)) + e4:SetCategory(CATEGORY_TOGRAVE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCondition(c69155991.tgcon) + e4:SetTarget(c69155991.tgtg) + e4:SetOperation(c69155991.tgop) + c:RegisterEffect(e4) +end +function c69155991.chop(e,tp,eg,ep,ev,re,r,rp) + if re:IsHasType(EFFECT_TYPE_ACTIVATE) or re:GetHandler():IsType(TYPE_MONSTER) then + e:GetHandler():RegisterFlagEffect(69155991,RESET_EVENT+0x1fe0000+RESET_CHAIN,0,1) + end +end +function c69155991.desop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(69155991)==0 then return end + c:ResetFlagEffect(69155991) + local ph=Duel.GetCurrentPhase() + if (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and not Duel.IsDamageCalculated() then + c:RegisterFlagEffect(69155992,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) + else + Duel.Destroy(c,REASON_EFFECT) + end +end +function c69155991.desop2(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(69155992)~=0 then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end +end +function c69155991.tgcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(c:GetReason(),0x41)==0x41 and re:GetOwner():IsSetCard(0x24) +end +function c69155991.filter(c) + return c:IsSetCard(0x24) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c69155991.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c69155991.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c69155991.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c69155991.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c69170557.lua b/script/c69170557.lua index 1a733087..f6bb8f5a 100644 --- a/script/c69170557.lua +++ b/script/c69170557.lua @@ -16,6 +16,7 @@ function c69170557.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(69170557,1)) e2:SetCategory(CATEGORY_COUNTER) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) diff --git a/script/c69176131.lua b/script/c69176131.lua index 68de78d4..00e46c7e 100644 --- a/script/c69176131.lua +++ b/script/c69176131.lua @@ -1,20 +1,20 @@ ---スペース・サイクロン -function c69176131.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c69176131.target) - e1:SetOperation(c69176131.activate) - c:RegisterEffect(e1) -end -function c69176131.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,1,1,REASON_EFFECT) end -end -function c69176131.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,532) - local sg=Duel.SelectMatchingCard(tp,Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp,1,REASON_EFFECT) - if sg:GetCount()==0 then return end - Duel.HintSelection(sg) - sg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_EFFECT) -end +--スペース・サイクロン +function c69176131.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c69176131.target) + e1:SetOperation(c69176131.activate) + c:RegisterEffect(e1) +end +function c69176131.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,1,1,REASON_EFFECT) end +end +function c69176131.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,532) + local sg=Duel.SelectMatchingCard(tp,Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp,1,REASON_EFFECT) + if sg:GetCount()==0 then return end + Duel.HintSelection(sg) + sg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_EFFECT) +end diff --git a/script/c69207766.lua b/script/c69207766.lua index 33d65555..46f625d9 100644 --- a/script/c69207766.lua +++ b/script/c69207766.lua @@ -51,9 +51,9 @@ function c69207766.eqop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end if c:IsFacedown() or not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c69207766.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c69207766.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if not Duel.Equip(tp,tc,c,true) then return end local e1=Effect.CreateEffect(c) e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) diff --git a/script/c69211541.lua b/script/c69211541.lua index 4b171740..9b755d72 100644 --- a/script/c69211541.lua +++ b/script/c69211541.lua @@ -1,71 +1,71 @@ ---EMパートナーガ -function c69211541.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(69211541,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c69211541.atktg) - e2:SetOperation(c69211541.atkop1) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(69211541,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetTarget(c69211541.atktg) - e3:SetOperation(c69211541.atkop2) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - --cannot attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CANNOT_ATTACK) - e5:SetRange(LOCATION_MZONE) - e5:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e5:SetTarget(aux.TargetBoolFunction(Card.IsLevelBelow,5)) - c:RegisterEffect(e5) -end -function c69211541.atktg(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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c69211541.filter(c) - return c:IsFaceup() and c:IsSetCard(0x9f) -end -function c69211541.atkop1(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - local ct=Duel.GetMatchingGroupCount(c69211541.filter,tp,LOCATION_ONFIELD,0,nil) - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(ct*300) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c69211541.atkop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local ct=Duel.GetMatchingGroupCount(c69211541.filter,tp,LOCATION_MZONE,0,nil) - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(ct*300) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end +--EMパートナーガ +function c69211541.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(69211541,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c69211541.atktg) + e2:SetOperation(c69211541.atkop1) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(69211541,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetTarget(c69211541.atktg) + e3:SetOperation(c69211541.atkop2) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + --cannot attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_ATTACK) + e5:SetRange(LOCATION_MZONE) + e5:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e5:SetTarget(aux.TargetBoolFunction(Card.IsLevelBelow,5)) + c:RegisterEffect(e5) +end +function c69211541.atktg(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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c69211541.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) +end +function c69211541.atkop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + local ct=Duel.GetMatchingGroupCount(c69211541.filter,tp,LOCATION_ONFIELD,0,nil) + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*300) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c69211541.atkop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local ct=Duel.GetMatchingGroupCount(c69211541.filter,tp,LOCATION_MZONE,0,nil) + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(ct*300) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c69230391.lua b/script/c69230391.lua index e040c1af..d3f0453c 100644 --- a/script/c69230391.lua +++ b/script/c69230391.lua @@ -33,11 +33,10 @@ end function c69230391.otfilter(c) return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE end -function c69230391.otcon(e,c) +function c69230391.otcon(e,c,minc) if c==nil then return true end local mg=Duel.GetMatchingGroup(c69230391.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - return c:GetLevel()>6 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c69230391.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c69230391.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) diff --git a/script/c69243722.lua b/script/c69243722.lua index a6efb7b6..64912559 100644 --- a/script/c69243722.lua +++ b/script/c69243722.lua @@ -1,42 +1,42 @@ ---ジェムナイト・エメラル -function c69243722.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(69243722,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c69243722.cost) - e1:SetTarget(c69243722.target) - e1:SetOperation(c69243722.operation) - c:RegisterEffect(e1) -end -function c69243722.costfilter(c) - return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsAbleToRemoveAsCost() -end -function c69243722.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() - and Duel.IsExistingMatchingCard(c69243722.costfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local rg=Duel.SelectMatchingCard(tp,c69243722.costfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - rg:AddCard(e:GetHandler()) - Duel.Remove(rg,POS_FACEUP,REASON_COST) -end -function c69243722.filter(c,e,tp) - return c:IsSetCard(0x1047) and c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c69243722.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c69243722.filter(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c69243722.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c69243722.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c69243722.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ジェムナイト・エメラル +function c69243722.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(69243722,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c69243722.cost) + e1:SetTarget(c69243722.target) + e1:SetOperation(c69243722.operation) + c:RegisterEffect(e1) +end +function c69243722.costfilter(c) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsAbleToRemoveAsCost() +end +function c69243722.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c69243722.costfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c69243722.costfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + rg:AddCard(e:GetHandler()) + Duel.Remove(rg,POS_FACEUP,REASON_COST) +end +function c69243722.filter(c,e,tp) + return c:IsSetCard(0x1047) and c:IsType(TYPE_FUSION) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c69243722.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c69243722.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c69243722.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c69243722.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c69243722.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c69243953.lua b/script/c69243953.lua index b9cd464d..788a1311 100644 --- a/script/c69243953.lua +++ b/script/c69243953.lua @@ -1,27 +1,12 @@ --蝶の短剣-エルマ function c69243953.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(c69243953.target) - e1:SetOperation(c69243953.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(300) 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) --tohand local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(69243953,0)) @@ -33,20 +18,6 @@ function c69243953.initial_effect(c) e4:SetOperation(c69243953.retop) c:RegisterEffect(e4) end -function c69243953.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 c69243953.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 c69243953.checkeq(e,tp,eg,ep,ev,re,r,rp) if e:GetHandler():GetEquipTarget() then e:SetLabel(1) diff --git a/script/c6924874.lua b/script/c6924874.lua index 8de51c0a..ae5b918b 100644 --- a/script/c6924874.lua +++ b/script/c6924874.lua @@ -15,11 +15,11 @@ function c6924874.initial_effect(c) e2:SetRange(LOCATION_MZONE) e2:SetCode(EFFECT_SET_BASE_ATTACK) e2:SetCondition(c6924874.adcon) - e2:SetValue(2400) + e2:SetValue(c6924874.atkval) c:RegisterEffect(e2) local e3=e2:Clone() e3:SetCode(EFFECT_SET_BASE_DEFENSE) - e3:SetValue(1200) + e3:SetValue(c6924874.defval) c:RegisterEffect(e3) --destroy local e4=Effect.CreateEffect(c) @@ -43,6 +43,12 @@ end function c6924874.adcon(e) return Duel.IsExistingMatchingCard(c6924874.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,2,nil) end +function c6924874.atkval(e,c) + return c:GetBaseAttack()*2 +end +function c6924874.defval(e,c) + return c:GetBaseDefense()*2 +end function c6924874.descon(e,tp,eg,ep,ev,re,r,rp) return Duel.IsExistingMatchingCard(c6924874.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,3,nil) end diff --git a/script/c69270537.lua b/script/c69270537.lua index 75a2a870..02129702 100644 --- a/script/c69270537.lua +++ b/script/c69270537.lua @@ -1,37 +1,37 @@ ---コンタクト・アウト -function c69270537.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c69270537.target) - e1:SetOperation(c69270537.activate) - c:RegisterEffect(e1) -end -function c69270537.tdfilter(c) - return c:IsFaceup() and c:IsSetCard(0x9) and c:IsType(TYPE_FUSION) and c:IsAbleToExtra() -end -function c69270537.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c69270537.tdfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c69270537.tdfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c69270537.tdfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) -end -function c69270537.spfilter(c,e,tp,fc) - return c:IsCode(table.unpack(fc.material)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c69270537.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and tc:IsLocation(LOCATION_EXTRA) then - local sg=Duel.GetMatchingGroup(c69270537.spfilter,tp,LOCATION_DECK,0,nil,e,tp,tc) - if tc:CheckFusionMaterial(sg,nil,PLAYER_NONE) and Duel.SelectYesNo(tp,aux.Stringid(69270537,0)) then - Duel.BreakEffect() - local mats=Duel.SelectFusionMaterial(tp,tc,sg,nil,PLAYER_NONE) - Duel.SpecialSummon(mats,0,tp,tp,false,false,POS_FACEUP) - end - end -end +--コンタクト・アウト +function c69270537.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c69270537.target) + e1:SetOperation(c69270537.activate) + c:RegisterEffect(e1) +end +function c69270537.tdfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9) and c:IsType(TYPE_FUSION) and c:IsAbleToExtra() +end +function c69270537.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c69270537.tdfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c69270537.tdfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c69270537.tdfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c69270537.spfilter(c,e,tp,fc) + return c:IsCode(table.unpack(fc.material)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c69270537.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.SendtoDeck(tc,nil,2,REASON_EFFECT)~=0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and tc:IsLocation(LOCATION_EXTRA) then + local sg=Duel.GetMatchingGroup(c69270537.spfilter,tp,LOCATION_DECK,0,nil,e,tp,tc) + if tc:CheckFusionMaterial(sg,nil,PLAYER_NONE) and Duel.SelectYesNo(tp,aux.Stringid(69270537,0)) then + Duel.BreakEffect() + local mats=Duel.SelectFusionMaterial(tp,tc,sg,nil,PLAYER_NONE) + Duel.SpecialSummon(mats,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c69279219.lua b/script/c69279219.lua index d145420b..687ad16e 100644 --- a/script/c69279219.lua +++ b/script/c69279219.lua @@ -32,8 +32,7 @@ function c69279219.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c69279219.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c69296555.lua b/script/c69296555.lua index 9c9427d9..b8156a1a 100644 --- a/script/c69296555.lua +++ b/script/c69296555.lua @@ -1,28 +1,28 @@ ---光の護封陣 -function c69296555.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c69296555.target) - c:RegisterEffect(e1) - --race - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c69296555.atktg) - c:RegisterEffect(e2) - e1:SetLabelObject(e2) -end -function c69296555.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,563) - local rc=Duel.AnnounceRace(tp,1,0xffffff) - e:GetLabelObject():SetLabel(rc) - e:GetHandler():SetHint(CHINT_RACE,rc) -end -function c69296555.atktg(e,c) - return c:IsStatus(STATUS_SUMMON_TURN+STATUS_FLIP_SUMMON_TURN+STATUS_SPSUMMON_TURN) and c:IsRace(e:GetLabel()) -end +--光の護封陣 +function c69296555.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c69296555.target) + c:RegisterEffect(e1) + --race + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c69296555.atktg) + c:RegisterEffect(e2) + e1:SetLabelObject(e2) +end +function c69296555.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,563) + local rc=Duel.AnnounceRace(tp,1,0xffffff) + e:GetLabelObject():SetLabel(rc) + e:GetHandler():SetHint(CHINT_RACE,rc) +end +function c69296555.atktg(e,c) + return c:IsStatus(STATUS_SUMMON_TURN+STATUS_FLIP_SUMMON_TURN+STATUS_SPSUMMON_TURN) and c:IsRace(e:GetLabel()) +end diff --git a/script/c69304426.lua b/script/c69304426.lua index 3c286ee9..1e09d3d2 100644 --- a/script/c69304426.lua +++ b/script/c69304426.lua @@ -1,83 +1,83 @@ ---アーティファクト-ヴァジュラ -function c69304426.initial_effect(c) - --set - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MONSTER_SSET) - e1:SetValue(TYPE_SPELL) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c69304426.spcon) - e2:SetTarget(c69304426.sptg) - e2:SetOperation(c69304426.spop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCondition(c69304426.descon) - e3:SetTarget(c69304426.destg) - e3:SetOperation(c69304426.desop) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(69304426,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_ATTACK_ANNOUNCE) - e4:SetRange(LOCATION_HAND) - e4:SetCondition(c69304426.hspcon) - e4:SetTarget(c69304426.hsptg) - e4:SetOperation(c69304426.hspop) - c:RegisterEffect(e4) -end -function c69304426.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) - and c:IsReason(REASON_DESTROY) and Duel.GetTurnPlayer()~=tp -end -function c69304426.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 c69304426.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end -function c69304426.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c69304426.filter(c) - return c:GetSequence()<5 -end -function c69304426.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c69304426.filter,tp,LOCATION_SZONE,0,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c69304426.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c69304426.filter,tp,LOCATION_SZONE,0,nil) - Duel.Destroy(g,REASON_EFFECT) -end -function c69304426.hspcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil -end -function c69304426.hsptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c69304426.hspop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--アーティファクト-ヴァジュラ +function c69304426.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MONSTER_SSET) + e1:SetValue(TYPE_SPELL) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c69304426.spcon) + e2:SetTarget(c69304426.sptg) + e2:SetOperation(c69304426.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c69304426.descon) + e3:SetTarget(c69304426.destg) + e3:SetOperation(c69304426.desop) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(69304426,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetRange(LOCATION_HAND) + e4:SetCondition(c69304426.hspcon) + e4:SetTarget(c69304426.hsptg) + e4:SetOperation(c69304426.hspop) + c:RegisterEffect(e4) +end +function c69304426.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) + and c:IsReason(REASON_DESTROY) and Duel.GetTurnPlayer()~=tp +end +function c69304426.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 c69304426.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c69304426.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c69304426.filter(c) + return c:GetSequence()<5 +end +function c69304426.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c69304426.filter,tp,LOCATION_SZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c69304426.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c69304426.filter,tp,LOCATION_SZONE,0,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c69304426.hspcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c69304426.hsptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c69304426.hspop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c69327790.lua b/script/c69327790.lua index fd91d62c..0d1a76cb 100644 --- a/script/c69327790.lua +++ b/script/c69327790.lua @@ -1,94 +1,94 @@ ---烈風帝ライザー -function c69327790.initial_effect(c) - --summon with 1 tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(69327790,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SUMMON_PROC) - e1:SetCondition(c69327790.otcon) - e1:SetOperation(c69327790.otop) - e1:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_PROC) - c:RegisterEffect(e2) - --todeck - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(69327790,1)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCondition(c69327790.tdcon) - e3:SetTarget(c69327790.tdtg) - e3:SetOperation(c69327790.tdop) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_MATERIAL_CHECK) - e4:SetValue(c69327790.valcheck) - e4:SetLabelObject(e3) - c:RegisterEffect(e4) -end -function c69327790.otfilter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE -end -function c69327790.otcon(e,c) - if c==nil then return true end - local mg=Duel.GetMatchingGroup(c69327790.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - return c:GetLevel()>6 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 -end -function c69327790.otop(e,tp,eg,ep,ev,re,r,rp,c) - local mg=Duel.GetMatchingGroup(c69327790.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - local sg=Duel.SelectTribute(tp,c,1,1,mg) - c:SetMaterial(sg) - Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) -end -function c69327790.tdcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE -end -function c69327790.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g1=Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g2=Duel.SelectTarget(tp,nil,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) - if e:GetLabel()==1 - and Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,g1:GetFirst()) - and Duel.SelectYesNo(tp,aux.Stringid(69327790,2)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g3=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g3,1,0,0) - end - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,2,0,0) -end -function c69327790.tdop(e,tp,eg,ep,ev,re,r,rp) - local ex,g1=Duel.GetOperationInfo(0,CATEGORY_TODECK) - local ex2,g2=Duel.GetOperationInfo(0,CATEGORY_TOHAND) - local sg1=g1:Filter(Card.IsRelateToEffect,nil,e) - if sg1:GetCount()>0 and Duel.SendtoDeck(sg1,nil,0,REASON_EFFECT)>1 then - local tc1=sg1:GetFirst() - local tc2=sg1:GetNext() - if tc1:GetControler()==tc2:GetControler() and tc1:IsLocation(LOCATION_DECK) and tc2:IsLocation(LOCATION_DECK) then - Duel.SortDecktop(tp,tc1:GetControler(),2) - end - end - if e:GetLabel()==1 and g2 then - local tc=g2:GetFirst() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(g2,nil,REASON_EFFECT) - end - end -end -function c69327790.valcheck(e,c) - local g=c:GetMaterial() - if g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WIND) then - e:GetLabelObject():SetLabel(1) - else - e:GetLabelObject():SetLabel(0) - end -end +--烈風帝ライザー +function c69327790.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(69327790,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c69327790.otcon) + e1:SetOperation(c69327790.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_PROC) + c:RegisterEffect(e2) + --todeck + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(69327790,1)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCondition(c69327790.tdcon) + e3:SetTarget(c69327790.tdtg) + e3:SetOperation(c69327790.tdop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATERIAL_CHECK) + e4:SetValue(c69327790.valcheck) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) +end +function c69327790.otfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c69327790.otcon(e,c,minc) + if c==nil then return true end + local mg=Duel.GetMatchingGroup(c69327790.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) +end +function c69327790.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c69327790.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) + local sg=Duel.SelectTribute(tp,c,1,1,mg) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c69327790.tdcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE +end +function c69327790.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g1=Duel.SelectTarget(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g2=Duel.SelectTarget(tp,nil,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) + if e:GetLabel()==1 + and Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,g1:GetFirst()) + and Duel.SelectYesNo(tp,aux.Stringid(69327790,2)) then + e:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g3=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g3,1,0,0) + end + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,2,0,0) +end +function c69327790.tdop(e,tp,eg,ep,ev,re,r,rp) + local ex,g1=Duel.GetOperationInfo(0,CATEGORY_TODECK) + local ex2,g2=Duel.GetOperationInfo(0,CATEGORY_TOHAND) + local sg1=g1:Filter(Card.IsRelateToEffect,nil,e) + if sg1:GetCount()>0 and Duel.SendtoDeck(sg1,nil,0,REASON_EFFECT)>1 then + local tc1=sg1:GetFirst() + local tc2=sg1:GetNext() + if tc1:GetControler()==tc2:GetControler() and tc1:IsLocation(LOCATION_DECK) and tc2:IsLocation(LOCATION_DECK) then + Duel.SortDecktop(tp,tc1:GetControler(),2) + end + end + if e:GetLabel()==1 and g2 then + local tc=g2:GetFirst() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(g2,nil,REASON_EFFECT) + end + end +end +function c69327790.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WIND) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end diff --git a/script/c69408987.lua b/script/c69408987.lua index 2605fc47..25673dca 100644 --- a/script/c69408987.lua +++ b/script/c69408987.lua @@ -1,35 +1,35 @@ ---スパイダー・ウェブ -function c69408987.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --to defense - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_DAMAGE_STEP_END) - e2:SetRange(LOCATION_FZONE) - e2:SetCondition(c69408987.poscon) - e2:SetOperation(c69408987.posop) - c:RegisterEffect(e2) -end -function c69408987.poscon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - return a:IsPosition(POS_FACEUP_ATTACK) and a:IsRelateToBattle() -end -function c69408987.posop(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - if Duel.ChangePosition(a,POS_FACEUP_DEFENSE)~=0 then - e:GetHandler():CreateRelation(a,RESET_EVENT+0x1fe0000) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,3) - e1:SetCondition(c69408987.poscon2) - a:RegisterEffect(e1) - end -end -function c69408987.poscon2(e) - return e:GetOwner():IsRelateToCard(e:GetHandler()) -end +--スパイダー・ウェブ +function c69408987.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --to defense + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c69408987.poscon) + e2:SetOperation(c69408987.posop) + c:RegisterEffect(e2) +end +function c69408987.poscon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsPosition(POS_FACEUP_ATTACK) and a:IsRelateToBattle() +end +function c69408987.posop(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + if Duel.ChangePosition(a,POS_FACEUP_DEFENSE)~=0 then + e:GetHandler():CreateRelation(a,RESET_EVENT+0x1fe0000) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,3) + e1:SetCondition(c69408987.poscon2) + a:RegisterEffect(e1) + end +end +function c69408987.poscon2(e) + return e:GetOwner():IsRelateToCard(e:GetHandler()) +end diff --git a/script/c69452756.lua b/script/c69452756.lua new file mode 100644 index 00000000..115cf3f0 --- /dev/null +++ b/script/c69452756.lua @@ -0,0 +1,62 @@ +--醒めない悪夢 +--Eternal Nightmares +--Script by dest +function c69452756.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE+TIMING_EQUIP) + e1:SetTarget(c69452756.target1) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(36970611,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE+TIMING_EQUIP) + e2:SetCost(c69452756.cost2) + e2:SetTarget(c69452756.target2) + e2:SetOperation(c69452756.operation) + c:RegisterEffect(e2) +end +function c69452756.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c69452756.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c69452756.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return true end + if c69452756.cost2(e,tp,eg,ep,ev,re,r,rp,0) and c69452756.target2(e,tp,eg,ep,ev,re,r,rp,0,chkc) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_DESTROY) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c69452756.operation) + c69452756.cost2(e,tp,eg,ep,ev,re,r,rp,1) + c69452756.target2(e,tp,eg,ep,ev,re,r,rp,1,chkc) + else + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c69452756.cost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,1000) and e:GetHandler():GetFlagEffect(69452756)==0 end + Duel.PayLPCost(tp,1000) + e:GetHandler():RegisterFlagEffect(69452756,RESET_CHAIN,0,1) +end +function c69452756.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c69452756.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c69452756.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c69452756.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c69452756.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c69456283.lua b/script/c69456283.lua index 2f609f8d..962affd6 100644 --- a/script/c69456283.lua +++ b/script/c69456283.lua @@ -16,7 +16,7 @@ function c69456283.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c69456283.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c69456283.sptg) e2:SetOperation(c69456283.spop) c:RegisterEffect(e2) @@ -25,20 +25,20 @@ function c69456283.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_UPDATE_ATTACK) e3:SetValue(3000) - e3:SetCondition(c69456283.uncon) + e3:SetCondition(aux.IsUnionState) c:RegisterEffect(e3) --pierce local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP) e4:SetCode(EFFECT_PIERCE) - e4:SetCondition(c69456283.uncon) + e4:SetCondition(aux.IsUnionState) c:RegisterEffect(e4) --destroy sub local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_EQUIP) e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e5:SetCondition(c69456283.uncon) + e5:SetCondition(aux.IsUnionState) e5:SetValue(c69456283.repval) c:RegisterEffect(e5) --eqlimit @@ -49,9 +49,7 @@ function c69456283.initial_effect(c) e6:SetValue(c69456283.eqlimit) c:RegisterEffect(e6) end -function c69456283.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c69456283.old_union=true function c69456283.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -79,7 +77,7 @@ function c69456283.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c69456283.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(69456283)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c69488544.lua b/script/c69488544.lua index cac5d21b..902ef261 100644 --- a/script/c69488544.lua +++ b/script/c69488544.lua @@ -71,8 +71,7 @@ function c69488544.negtg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c69488544.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(re:GetHandler(),REASON_EFFECT) end end diff --git a/script/c69512157.lua b/script/c69512157.lua index 94f8f860..b4b29ff1 100644 --- a/script/c69512157.lua +++ b/script/c69512157.lua @@ -1,29 +1,29 @@ ---竜魔王ベクターP -function c69512157.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --disable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_DISABLE) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(0,LOCATION_SZONE) - e2:SetTarget(c69512157.distg) - c:RegisterEffect(e2) - --disable effect - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_CHAIN_SOLVING) - e3:SetRange(LOCATION_PZONE) - e3:SetOperation(c69512157.disop) - c:RegisterEffect(e3) -end -function c69512157.distg(e,c) - return c:IsType(TYPE_SPELL) and (c:GetSequence()==6 or c:GetSequence()==7) -end -function c69512157.disop(e,tp,eg,ep,ev,re,r,rp) - local p,loc,seq=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_CONTROLER,CHAININFO_TRIGGERING_LOCATION,CHAININFO_TRIGGERING_SEQUENCE) - if re:IsActiveType(TYPE_SPELL) and p~=tp and loc==LOCATION_SZONE and (seq==6 or seq==7) then - Duel.NegateEffect(ev) - end -end +--竜魔王ベクターP +function c69512157.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_DISABLE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(0,LOCATION_SZONE) + e2:SetTarget(c69512157.distg) + c:RegisterEffect(e2) + --disable effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetRange(LOCATION_PZONE) + e3:SetOperation(c69512157.disop) + c:RegisterEffect(e3) +end +function c69512157.distg(e,c) + return c:IsType(TYPE_SPELL) and (c:GetSequence()==6 or c:GetSequence()==7) +end +function c69512157.disop(e,tp,eg,ep,ev,re,r,rp) + local p,loc,seq=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_CONTROLER,CHAININFO_TRIGGERING_LOCATION,CHAININFO_TRIGGERING_SEQUENCE) + if re:IsActiveType(TYPE_SPELL) and p~=tp and loc==LOCATION_SZONE and (seq==6 or seq==7) then + Duel.NegateEffect(ev) + end +end diff --git a/script/c69542930.lua b/script/c69542930.lua index 6fba102c..8bec6247 100644 --- a/script/c69542930.lua +++ b/script/c69542930.lua @@ -27,8 +27,8 @@ end function c69542930.activate(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,c69542930.filter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c69542930.filter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c6958551.lua b/script/c6958551.lua index 854bd863..44b10d42 100644 --- a/script/c6958551.lua +++ b/script/c6958551.lua @@ -1,36 +1,36 @@ ---シャドー・トゥーン -function c6958551.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,6958551+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c6958551.condition) - e1:SetTarget(c6958551.target) - e1:SetOperation(c6958551.activate) - c:RegisterEffect(e1) -end -function c6958551.cfilter(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c6958551.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c6958551.cfilter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c6958551.filter(c) - return c:IsFaceup() and c:GetAttack()>0 -end -function c6958551.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c6958551.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c6958551.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c6958551.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) -end -function c6958551.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetAttack()>0 then - Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) - end -end +--シャドー・トゥーン +function c6958551.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,6958551+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c6958551.condition) + e1:SetTarget(c6958551.target) + e1:SetOperation(c6958551.activate) + c:RegisterEffect(e1) +end +function c6958551.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c6958551.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c6958551.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c6958551.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c6958551.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c6958551.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c6958551.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c6958551.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) +end +function c6958551.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetAttack()>0 then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c69610326.lua b/script/c69610326.lua new file mode 100644 index 00000000..f940a677 --- /dev/null +++ b/script/c69610326.lua @@ -0,0 +1,100 @@ +--覇王眷竜ダークヴルム +--Supreme King Servant Dragon Darkwurm +--Scripted by Eerie Code +function c69610326.initial_effect(c) + aux.EnablePendulumAttribute(c) + --pendulum set + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(69610326,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCondition(c69610326.pccon) + e1:SetTarget(c69610326.pctg) + e1:SetOperation(c69610326.pcop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(69610326,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,69610326) + e2:SetTarget(c69610326.thtg) + e2:SetOperation(c69610326.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(69610326,2)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_GRAVE) + e4:SetCountLimit(1,69610326+100) + e4:SetCondition(c69610326.pccon) + e4:SetTarget(c69610326.sptg) + e4:SetOperation(c69610326.spop) + c:RegisterEffect(e4) +end +function c69610326.pccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c69610326.pcfilter(c) + return c:IsSetCard(0x10f8) and c:IsType(TYPE_PENDULUM) and not c:IsForbidden() +end +function c69610326.pctg(e,tp,eg,ep,ev,re,r,rp,chk) + local seq=e:GetHandler():GetSequence() + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) + and Duel.IsExistingMatchingCard(c69610326.pcfilter,tp,LOCATION_DECK,0,1,nil) end +end +function c69610326.pcop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c69610326.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if not c:IsRelateToEffect(e) then return end + local seq=c:GetSequence() + if not Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c69610326.pcfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.MoveToField(g:GetFirst(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end +function c69610326.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsAttribute(ATTRIBUTE_DARK) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c69610326.thfilter(c) + return c:IsSetCard(0x10f8) and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c69610326.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c69610326.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c69610326.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c69610326.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c69610326.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c69610326.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c69610924.lua b/script/c69610924.lua index a46748b6..0c073dc2 100644 --- a/script/c69610924.lua +++ b/script/c69610924.lua @@ -7,6 +7,7 @@ function c69610924.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetDescription(aux.Stringid(69610924,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c69632396.lua b/script/c69632396.lua index b65e75ea..4d289032 100644 --- a/script/c69632396.lua +++ b/script/c69632396.lua @@ -27,8 +27,7 @@ function c69632396.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c69632396.activate(e,tp,eg,ep,ev,re,r,rp) local ec=re:GetHandler() - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then ec:CancelToGrave() Duel.SendtoHand(ec,nil,REASON_EFFECT) end diff --git a/script/c69711728.lua b/script/c69711728.lua index 58801197..24f93a07 100644 --- a/script/c69711728.lua +++ b/script/c69711728.lua @@ -20,6 +20,7 @@ function c69711728.initial_effect(c) local e3=e2:Clone() e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) c:RegisterEffect(e3) --search local e4=Effect.CreateEffect(c) diff --git a/script/c69757518.lua b/script/c69757518.lua index 383521f7..973267c7 100644 --- a/script/c69757518.lua +++ b/script/c69757518.lua @@ -16,6 +16,7 @@ function c69757518.initial_effect(c) e2:SetDescription(aux.Stringid(69757518,0)) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetCondition(c69757518.atcon) e2:SetCost(c69757518.atcost) e2:SetOperation(c69757518.atop) diff --git a/script/c69831560.lua b/script/c69831560.lua index 78a0af3c..2d0376b2 100644 --- a/script/c69831560.lua +++ b/script/c69831560.lua @@ -56,7 +56,7 @@ function c69831560.arcanareg(c,coin) e1:SetCode(EFFECT_EXTRA_ATTACK) e1:SetCondition(c69831560.macon) e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -65,23 +65,23 @@ function c69831560.arcanareg(c,coin) e2:SetCountLimit(1) e2:SetCondition(c69831560.poscon) e2:SetOperation(c69831560.posop) - e2:SetReset(RESET_EVENT+0x1ff0000) + e2:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e2) -- local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e3:SetCode(EVENT_LEAVE_FIELD_P) e3:SetOperation(c69831560.desop1) - e3:SetReset(RESET_EVENT+0x1ff0000) + e3:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e3) -- local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e4:SetCode(EVENT_LEAVE_FIELD) e4:SetOperation(c69831560.desop2) - e4:SetReset(RESET_EVENT+0x17f0000) + e4:SetReset(RESET_EVENT+0x17e0000) c:RegisterEffect(e4) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) end function c69831560.macon(e) return e:GetHandler():GetFlagEffectLabel(36690018)==1 @@ -99,12 +99,12 @@ function c69831560.posop(e,tp,eg,ep,ev,re,r,rp) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_COPY_INHERIT) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) c:RegisterEffect(e1) end function c69831560.desop1(e,tp,eg,ep,ev,re,r,rp) if e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():GetFlagEffectLabel(36690018)==0 then - e:GetHandler():RegisterFlagEffect(69831560,RESET_EVENT+0x17f0000,0,1) + e:GetHandler():RegisterFlagEffect(69831560,RESET_EVENT+0x17e0000,0,1) end end function c69831560.desop2(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c69840739.lua b/script/c69840739.lua index 2de57201..d2f5b7f8 100644 --- a/script/c69840739.lua +++ b/script/c69840739.lua @@ -9,6 +9,7 @@ function c69840739.initial_effect(c) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_CHAINING) e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e1:SetCondition(c69840739.chcon) e1:SetCost(c69840739.cost) @@ -22,6 +23,7 @@ function c69840739.initial_effect(c) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e2:SetCost(c69840739.cost) e2:SetTarget(c69840739.drtg) diff --git a/script/c698785.lua b/script/c698785.lua index 70eac1f3..13b73a9c 100644 --- a/script/c698785.lua +++ b/script/c698785.lua @@ -8,6 +8,7 @@ function c698785.initial_effect(c) e1:SetDescription(aux.Stringid(698785,0)) e1:SetCategory(CATEGORY_DESTROY) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c698785.cost) diff --git a/script/c69946549.lua b/script/c69946549.lua new file mode 100644 index 00000000..a9126509 --- /dev/null +++ b/script/c69946549.lua @@ -0,0 +1,55 @@ +--捕食植物ドラゴスタペリア +function c69946549.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionType,TYPE_FUSION),aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_DARK),true) + --add counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(69946549,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c69946549.cttg) + e1:SetOperation(c69946549.ctop) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c69946549.discon) + e2:SetOperation(c69946549.disop) + c:RegisterEffect(e2) +end +function c69946549.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsCanAddCounter(0x1041,1) end + if chk==0 then return Duel.IsExistingTarget(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,nil,0x1041,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,1,nil,0x1041,1) +end +function c69946549.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:AddCounter(0x1041,1) and tc:GetLevel()>1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c69946549.lvcon) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end +function c69946549.lvcon(e) + return e:GetHandler():GetCounter(0x1041)>0 +end +function c69946549.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return rp==1-tp and re:IsActiveType(TYPE_MONSTER) and re:GetHandler():GetCounter(0x1041)>0 +end +function c69946549.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end diff --git a/script/c69954399.lua b/script/c69954399.lua index c33a11c2..87744b3c 100644 --- a/script/c69954399.lua +++ b/script/c69954399.lua @@ -1,26 +1,11 @@ --疫病ウィルス ブラックダスト function c69954399.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(c69954399.target) - e1:SetOperation(c69954399.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE)) --Cannot attack local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_CANNOT_ATTACK) 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) --destroy local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -52,20 +37,6 @@ function c69954399.initial_effect(c) e6:SetOperation(c69954399.retop) c:RegisterEffect(e6) end -function c69954399.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 c69954399.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) - e:GetHandler():SetTurnCounter(0) - end -end function c69954399.turncon(e,tp,eg,ep,ev,re,r,rp) local ec=e:GetHandler():GetEquipTarget() return ec:GetControler()==Duel.GetTurnPlayer() diff --git a/script/c69982329.lua b/script/c69982329.lua index 7d485b6a..1308bc85 100644 --- a/script/c69982329.lua +++ b/script/c69982329.lua @@ -1,45 +1,45 @@ ---ペンデュラム・ターン -function c69982329.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c69982329.target) - e1:SetOperation(c69982329.activate) - c:RegisterEffect(e1) -end -function c69982329.filter(c) - return c:IsFaceup() and (c:GetSequence()==6 or c:GetSequence()==7) -end -function c69982329.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c69982329.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c69982329.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c69982329.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) - local tc=g:GetFirst() - local t={} - local p=1 - for i=1,10 do - if i~=tc:GetLeftScale() then - t[p]=i - p=p+1 - end - end - local ac=Duel.AnnounceNumber(tp,table.unpack(t)) - e:SetLabel(ac) -end -function c69982329.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LSCALE) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_CHANGE_RSCALE) - tc:RegisterEffect(e2) - end -end +--ペンデュラム・ターン +function c69982329.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c69982329.target) + e1:SetOperation(c69982329.activate) + c:RegisterEffect(e1) +end +function c69982329.filter(c) + return c:IsFaceup() and (c:GetSequence()==6 or c:GetSequence()==7) +end +function c69982329.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c69982329.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c69982329.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c69982329.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + local tc=g:GetFirst() + local t={} + local p=1 + for i=1,10 do + if i~=tc:GetLeftScale() then + t[p]=i + p=p+1 + end + end + local ac=Duel.AnnounceNumber(tp,table.unpack(t)) + e:SetLabel(ac) +end +function c69982329.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LSCALE) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RSCALE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c700000001.lua b/script/c700000001.lua new file mode 100644 index 00000000..701b8839 --- /dev/null +++ b/script/c700000001.lua @@ -0,0 +1,37 @@ +--Scripted by Eerie Code +--Blackwing - Harmattan the Sandstorm +function c700000001.initial_effect(c) + --Level + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c700000001.target) + e1:SetOperation(c700000001.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c700000001.filter(c) + return c:IsFaceup() and c:IsSetCard(0x33) and c:GetLevel()>0 +end +function c700000001.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c700000001.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000001.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + Duel.SelectTarget(tp,c700000001.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c700000001.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and c:IsFaceup() and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetLevel()) + c:RegisterEffect(e1) + end +end diff --git a/script/c700000002.lua b/script/c700000002.lua new file mode 100644 index 00000000..7b4f5d33 --- /dev/null +++ b/script/c700000002.lua @@ -0,0 +1,45 @@ +--Scripted by Eerie Code +--Assault Blackwing - Kuniyoshi the Fogbow +function c700000002.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --Tuner + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_TUNER) + e1:SetCondition(c700000002.tncon) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c700000002.damcost) + e2:SetTarget(c700000002.damtg) + e2:SetOperation(c700000002.damop) + c:RegisterEffect(e2) +end +function c700000002.tncon(e) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and e:GetHandler():GetMaterial():IsExists(Card.IsSetCard,1,nil,0x33) +end +function c700000002.cfilter(c) + return c:IsSetCard(0x33) and c:IsAbleToGraveAsCost() +end +function c700000002.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000002.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c700000002.cfilter,1,1,REASON_COST,nil) +end +function c700000002.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c700000002.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c700000004.lua b/script/c700000004.lua new file mode 100644 index 00000000..b3230ab4 --- /dev/null +++ b/script/c700000004.lua @@ -0,0 +1,149 @@ +--Goyo King +function c700000004.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(c700000004.synfilter),1) + c:EnableReviveLimit() + --attack up + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetDescription(aux.Stringid(3989465,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c700000004.atkcon) + e1:SetTarget(c700000004.atktg) + e1:SetOperation(c700000004.atkop) + c:RegisterEffect(e1) + --control all + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(700000004,0)) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCategory(CATEGORY_CONTROL) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCondition(aux.bdocon) + e2:SetTarget(c700000004.cttg) + e2:SetOperation(c700000004.ctop) + c:RegisterEffect(e2) + --control + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(4941482,0)) + e3:SetCategory(CATEGORY_CONTROL) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c700000004.ctcon2) + e3:SetCost(c700000004.ctcost2) + e3:SetTarget(c700000004.cttg2) + e3:SetOperation(c700000004.ctop2) + c:RegisterEffect(e3) + if not c700000004.global_check then + c700000004.global_check=true + c700000004[0]=false + c700000004[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c700000004.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetOperation(c700000004.clear) + Duel.RegisterEffect(ge3,0) + end +end +function c700000004.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(Card.IsControler,1,nil,1-tp) then + c700000004[tp]=true + end + if eg:IsExists(Card.IsControler,1,nil,tp) then + c700000004[1-tp]=true + end +end +function c700000004.clear(e,tp,eg,ep,ev,re,r,rp) + c700000004[0]=false + c700000004[1]=false +end +function c700000004.synfilter(c) + return c:IsSetCard(0x204) or c:IsCode(7391448) or c:IsCode(63364266) or c:IsCode(98637386) or c:IsCode(84305651) + or c:IsCode(58901502) or c:IsCode(59255742) +end +function c700000004.atkcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + local c=e:GetHandler() + return ph==PHASE_DAMAGE and (c==Duel.GetAttacker() or c==Duel.GetAttackTarget()) + and not Duel.IsDamageCalculated() +end +function c700000004.atkfilter(c) + return c:IsFaceup() and c700000004.synfilter(c) +end +function c700000004.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000004.atkfilter,tp,LOCATION_MZONE,0,1,nil) + and e:GetHandler():GetFlagEffect(700000004)==0 end + e:GetHandler():RegisterFlagEffect(700000004,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c700000004.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local atk=Duel.GetMatchingGroupCount(c700000004.atkfilter,tp,LOCATION_MZONE,0,nil)*400 + if c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end +function c700000004.ctcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsRelateToBattle() and c:GetBattleTarget():IsType(TYPE_MONSTER) +end +function c700000004.cttg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,ft,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) +end +function c700000004.ctop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc=g:GetFirst() + while tc do + Duel.GetControl(tc,tp) + tc=g:GetNext() + end +end +function c700000004.ctcon2(e,tp,eg,ep,ev,re,r,rp) + return c700000004[tp] +end +function c700000004.ctcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c700000004.synfilter,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,c700000004.synfilter,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c700000004.ctfilter(c) + return c:IsFaceup() and c:IsLevelBelow(8) and c:IsAbleToChangeControler() +end +function c700000004.cttg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c700000004.ctfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000004.ctfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c700000004.ctfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c700000004.ctop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.GetControl(tc,tp) + end +end diff --git a/script/c700000007.lua b/script/c700000007.lua new file mode 100644 index 00000000..f478099d --- /dev/null +++ b/script/c700000007.lua @@ -0,0 +1,50 @@ +--Scripted by Eerie Code +--Illusion Ninjitsu Art of Hazy Shuriken +function c700000007.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c700000007.actcon) + c:RegisterEffect(e1) + --Damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_HAND) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c700000007.damtg) + e2:SetOperation(c700000007.damop) + c:RegisterEffect(e2) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_SELF_DESTROY) + e4:SetCondition(c700000007.descon) + c:RegisterEffect(e4) +end +function c700000007.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x2b) +end +function c700000007.actcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c700000007.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c700000007.damfil(c,tp) + return c:IsControler(tp) and c:IsAbleToGrave() +end +function c700000007.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c700000007.damfil,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c700000007.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=eg:FilterSelect(tp,c700000007.damfil,1,1,nil,tp) + if sg:GetCount()>0 and Duel.SendtoGrave(sg,REASON_EFFECT)>0 then + Duel.Damage(1-tp,300,REASON_EFFECT) + end +end +function c700000007.descon(e) + return not Duel.IsExistingMatchingCard(c700000007.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c700000009.lua b/script/c700000009.lua new file mode 100644 index 00000000..02af60d1 --- /dev/null +++ b/script/c700000009.lua @@ -0,0 +1,60 @@ +--Scripted by Eerie Code +--Performapal Odd-Eyes Light Phoenix +function c700000009.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(700000009,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c700000009.spcon) + e2:SetCost(c700000009.spcost) + e2:SetTarget(c700000009.sptg) + e2:SetOperation(c700000009.spop) + c:RegisterEffect(e2) + --destroy replace + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(700000009,1)) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c700000009.reptg) + c:RegisterEffect(e3) +end +function c700000009.spcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c700000009.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local seq=e:GetHandler():GetSequence() + local sc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + if chk==0 then return sc and sc:IsDestructable(e) end + Duel.Destroy(sc,REASON_COST) +end +function c700000009.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c700000009.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end +function c700000009.repfil(c) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsDestructable() +end +function c700000009.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReason(REASON_BATTLE) and Duel.IsExistingMatchingCard(c700000009.repfil,tp,LOCATION_SZONE,0,1,nil) end + if Duel.SelectYesNo(tp,aux.Stringid(700000009,2)) then + local g=Duel.SelectMatchingCard(tp,c700000009.repfil,tp,LOCATION_SZONE,0,1,1,nil) + Duel.Destroy(g,REASON_EFFECT+REASON_REPLACE) + return true + else return false end +end diff --git a/script/c700000010.lua b/script/c700000010.lua new file mode 100644 index 00000000..f49b2e67 --- /dev/null +++ b/script/c700000010.lua @@ -0,0 +1,63 @@ +--Scripted by Eerie Code +--Performapal Odd-Eyes Unicorn +function c700000010.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Increase ATK + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(700000010,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c700000010.atkcon) + e2:SetTarget(c700000010.atktg) + e2:SetOperation(c700000010.atkop) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetValue(c700000010.atkval) + c:RegisterEffect(e3) +end + +function c700000010.atkcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:IsControler(tp) and at:IsSetCard(0x99) +end +function c700000010.atkfil(c) + return c:IsFaceup() and c:IsSetCard(0x9f) and c:GetAttack()>0 +end +function c700000010.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttacker():IsCanBeEffectTarget(e) and Duel.IsExistingMatchingCard(c700000010.atkfil,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetTargetCard(Group.FromCards(Duel.GetAttacker())) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,Duel.GetAttacker(),1,0,0) +end +function c700000010.atkop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetFirstTarget() + local g=Duel.SelectMatchingCard(tp,c700000010.atkfil,tp,LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + local tg=g:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(tg:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + at:RegisterEffect(e1) + end +end + +function c700000010.atkfilter(c) + return c:IsFaceup() and (c:IsSetCard(0x99) or c:IsSetCard(0x9f)) +end +function c700000010.atkval(e,c) + if c700000010.atkfilter(c) then + return Duel.GetMatchingGroupCount(c700000010.atkfilter,c:GetControler(),LOCATION_MZONE,0,nil)*100 + else return 0 end +end \ No newline at end of file diff --git a/script/c700000011.lua b/script/c700000011.lua new file mode 100644 index 00000000..a217ff25 --- /dev/null +++ b/script/c700000011.lua @@ -0,0 +1,56 @@ +--Scripted by Eerie Code +--Performapal Bot-Eyes Lizard +function c700000011.initial_effect(c) + --Change name + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c700000011.condition) + e1:SetTarget(c700000011.target) + e1:SetOperation(c700000011.operation) + c:RegisterEffect(e1) + if not c700000011.global_check then + c700000011.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(700000011) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(700000011) + Duel.RegisterEffect(ge2,0) + end +end +function c700000011.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(700000011)>0 +end +function c700000011.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,0) + local ac=0 + local token + repeat + ac=Duel.AnnounceCard(tp) + token=Duel.CreateToken(tp,ac) + until token:IsSetCard(0x99) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c700000011.operation(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(ac) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c700000012.lua b/script/c700000012.lua new file mode 100644 index 00000000..c2377c6f --- /dev/null +++ b/script/c700000012.lua @@ -0,0 +1,72 @@ +--Scripted by Eerie Code +--Abyss Actor - Devil Heel +function c700000012.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Reduce ATK (P) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCost(c700000012.atkcost) + e2:SetTarget(c700000012.atktg) + e2:SetOperation(c700000012.atkop) + c:RegisterEffect(e2) + --Reduce ATK (M) + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c700000012.atktg) + e3:SetOperation(c700000012.atkop2) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c700000012.cfilter(c) + return c:IsType(TYPE_PENDULUM) and c:IsSetCard(0x10ec) and c:IsAbleToDeckOrExtraAsCost() +end +function c700000012.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000012.cfilter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.SelectMatchingCard(tp,c700000012.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + local atk=g:GetFirst():GetAttack() + if atk<0 then atk=0 end + e:SetLabel(atk) + Duel.SendtoExtraP(g,nil,REASON_COST) +end +function c700000012.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c700000012.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c700000012.atkfil(c) + return c:IsFaceup() and c:IsSetCard(0x10ec) +end +function c700000012.atkop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local gc=Duel.GetMatchingGroupCount(c700000012.atkfil,tp,LOCATION_MZONE,0,nil) + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(gc*-1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c700000013.lua b/script/c700000013.lua new file mode 100644 index 00000000..6f12474f --- /dev/null +++ b/script/c700000013.lua @@ -0,0 +1,83 @@ +--Scripted by Eerie Code +--Abyss Actor - Big Star +function c700000013.initial_effect(c) + --Pendulum Summon + aux.EnablePendulumAttribute(c) + --Recover + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCost(c700000013.rvcost) + e2:SetTarget(c700000013.rvtg) + e2:SetOperation(c700000013.rvop) + c:RegisterEffect(e2) + --Search + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c700000013.thtg) + e3:SetOperation(c700000013.thop) + c:RegisterEffect(e3) +end +function c700000013.cfilter(c) + return c:IsType(TYPE_PENDULUM) and c:IsSetCard(0x10ec) and c:IsAbleToDeckOrExtraAsCost() +end +function c700000013.rvcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000013.cfilter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.SelectMatchingCard(tp,c700000013.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoExtraP(g,nil,REASON_COST) +end +function c700000013.thfilter(c) + return c:IsType(TYPE_SPELL) and c:IsSetCard(0x20ec) and c:IsAbleToHand() +end +function c700000013.rvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c700000013.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000013.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c700000013.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c700000013.rvop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c700000013.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000013.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c700000013.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c700000013.thfilter,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + tc:RegisterFlagEffect(700000013,RESET_EVENT+0x1fe0000,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabelObject(tc) + e1:SetCondition(c700000013.descon) + e1:SetOperation(c700000013.desop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c700000013.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return tc:GetFlagEffect(700000013)>0 +end +function c700000013.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SendtoGrave(tc,REASON_EFFECT) +end diff --git a/script/c700000014.lua b/script/c700000014.lua new file mode 100644 index 00000000..6ccc810a --- /dev/null +++ b/script/c700000014.lua @@ -0,0 +1,70 @@ +--Scripted by Eerie Code +--Abyss Actor - Funky Comedian +function c700000014.initial_effect(c) + --Pendulum Summon + aux.EnablePendulumAttribute(c) + --Increase ATK (P) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCost(c700000014.atkcost) + e2:SetTarget(c700000014.atktg) + e2:SetOperation(c700000014.atkop) + c:RegisterEffect(e2) + --Reduce ATK (M) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetOperation(c700000014.atkop2) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c700000014.cfilter(c,tp) + return c:IsType(TYPE_PENDULUM) and c:IsSetCard(0x10ec) and c:IsAbleToDeckOrExtraAsCost() + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,c) +end +function c700000014.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000014.cfilter,tp,LOCATION_MZONE,0,1,nil,tp) end + local g=Duel.SelectMatchingCard(tp,c700000014.cfilter,tp,LOCATION_MZONE,0,1,1,nil,tp) + local atk=g:GetFirst():GetAttack() + if atk<0 then atk=0 end + e:SetLabel(atk) + Duel.SendtoExtraP(g,nil,REASON_COST) +end +function c700000014.atktg(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 c700000014.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c700000014.atkfil(c) + return c:IsFaceup() and c:IsSetCard(0x10ec) +end +function c700000014.atkop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local gc=Duel.GetMatchingGroupCount(c700000014.atkfil,tp,LOCATION_MZONE,0,nil) + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(gc*300) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end diff --git a/script/c700000015.lua b/script/c700000015.lua new file mode 100644 index 00000000..57dbe337 --- /dev/null +++ b/script/c700000015.lua @@ -0,0 +1,50 @@ +--Scripted by Eerie Code +--Abyss Actor - Extra +function c700000015.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c700000015.spcon) + e2:SetTarget(c700000015.sptg) + e2:SetOperation(c700000015.spop) + c:RegisterEffect(e2) + --Set in P.Zone + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c700000015.pztg) + e3:SetOperation(c700000015.pzop) + c:RegisterEffect(e3) +end + +function c700000015.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 and e:GetHandler():GetFlagEffect(700000015)==0 +end +function c700000015.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c700000015.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end + +function c700000015.pzfilter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) +end +function c700000015.pztg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetMatchingGroupCount(c700000015.pzfilter,tp,LOCATION_SZONE,0,nil)<2 end +end +function c700000015.pzop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + c:RegisterFlagEffect(700000015,RESET_EVENT+0xfc0000+RESET_PHASE+PHASE_END,0,1) + end +end \ No newline at end of file diff --git a/script/c700000016.lua b/script/c700000016.lua new file mode 100644 index 00000000..8afdf52a --- /dev/null +++ b/script/c700000016.lua @@ -0,0 +1,40 @@ +--Scripted by Eerie Code +--Abyss Actor - Sassy Rookie +function c700000016.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c700000016.destg) + e2:SetOperation(c700000016.desop) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e3:SetCountLimit(1) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c700000016.filter(c) + return c:IsFaceup() and c:IsLevelBelow(4) and c:IsDestructable() +end +function c700000016.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c700000016.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000016.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c700000016.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c700000016.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and c700000016.filter(tc) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c700000017.lua b/script/c700000017.lua new file mode 100644 index 00000000..fd5046d2 --- /dev/null +++ b/script/c700000017.lua @@ -0,0 +1,135 @@ +--Scripted by Eerie Code +--Abyss Actor - Pretty Heroine +function c700000017.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Reduce ATK (P) + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetHintTiming(0,TIMING_BATTLE_END) + e2:SetCondition(c700000017.pacon) + e2:SetTarget(c700000017.patg) + e2:SetOperation(c700000017.paop) + c:RegisterEffect(e2) + --Reduce ATK (M) + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetHintTiming(TIMING_BATTLE_END,TIMING_BATTLE_END) + e3:SetCondition(c700000017.macon) + e3:SetTarget(c700000017.matg) + e3:SetOperation(c700000017.maop) + c:RegisterEffect(e3) + if not c700000017.global_check then + c700000017.global_check=true + c700000017[0]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c700000017.desop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_BATTLE_START) + ge2:SetOperation(c700000017.clear) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_BATTLE_DAMAGE) + ge3:SetOperation(c700000017.damop) + Duel.RegisterEffect(ge3,0) + end +end +function c700000017.desop(e,tp,eg,ep,ev,re,r,rp) + local dc=Duel.GetAttackTarget() + if not dc then return end + local bc=dc:GetBattleTarget() + if ep==tp then + if bc:IsControler(tp) and bc:IsSetCard(0x10ec) and bc:IsStatus(STATUS_BATTLE_DESTROYED) + and not dc:IsStatus(STATUS_BATTLE_DESTROYED) then + dc:RegisterFlagEffect(700000017+tp,RESET_EVENT+0x1fe0000,0,1,ev) + end + if dc:IsControler(tp) and dc:IsSetCard(0x10ec) and dc:IsStatus(STATUS_BATTLE_DESTROYED) + and not bc:IsStatus(STATUS_BATTLE_DESTROYED) then + bc:RegisterFlagEffect(700000017+tp,RESET_EVENT+0x1fe0000,0,1,ev) + end + end + if ep==1-tp then + if bc:IsControler(1-tp) and bc:IsSetCard(0x10ec) and bc:IsStatus(STATUS_BATTLE_DESTROYED) + and not dc:IsStatus(STATUS_BATTLE_DESTROYED) then + dc:RegisterFlagEffect(700000017+1-tp,RESET_EVENT+0x1fe0000,0,1,ev) + end + if dc:IsControler(1-tp) and dc:IsSetCard(0x10ec) and dc:IsStatus(STATUS_BATTLE_DESTROYED) + and not bc:IsStatus(STATUS_BATTLE_DESTROYED) then + bc:RegisterFlagEffect(700000017+1-tp,RESET_EVENT+0x1fe0000,0,1,ev) + end + end +end +function c700000017.clear(e,tp,eg,ep,ev,re,r,rp) + c700000017[0]=0 +end +function c700000017.damop(e,tp,eg,ep,ev,re,r,rp) + c700000017[0]=c700000017[0]+ev +end +function c700000017.pacon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and ph>=0x08 and ph<=0x20 + and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c700000017.pafil(c) + return c:IsFaceup() and c:GetFlagEffect(700000017)>0 and c:GetAttack()>0 +end +function c700000017.patg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c700000017.pafil(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000017.pafil,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c700000017.pafil,tp,0,LOCATION_MZONE,1,1,nil) +end +function c700000017.paop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-tc:GetFlagEffectLabel(700000017+tp)) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c700000017.macon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and c700000017[0]>0 +end +function c700000017.mafil(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c700000017.matg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c700000017.mafil(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000017.mafil,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c700000017.mafil,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g:GetFirst(),1,0,0) +end +function c700000017.maop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetBaseAttack()-c700000017[0]) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c700000018.lua b/script/c700000018.lua new file mode 100644 index 00000000..0c207180 --- /dev/null +++ b/script/c700000018.lua @@ -0,0 +1,50 @@ +--Scripted by Eerie Code +--Abyss Script - Fantasy Magic +function c700000018.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c700000018.target) + e1:SetOperation(c700000018.operation) + c:RegisterEffect(e1) +end +function c700000018.filter(c) + return c:IsFaceup() and c:IsSetCard(0x120e) +end +function c700000018.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c700000018.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000018.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c700000018.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c700000018.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(2356994,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLED) + e1:SetTarget(c700000018.target2) + e1:SetOperation(c700000018.operation2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c700000018.target2(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + if chk==0 then return tc and tc:IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tc,1,0,0) +end +function c700000018.operation2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc:IsRelateToBattle() then + Duel.SendtoHand(bc,nil,REASON_EFFECT) + end +end diff --git a/script/c700000019.lua b/script/c700000019.lua new file mode 100644 index 00000000..308debb8 --- /dev/null +++ b/script/c700000019.lua @@ -0,0 +1,27 @@ +--Scripted by Eerie Code +--Abyss Script - Opening Ceremony +function c700000019.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c700000019.target) + e1:SetOperation(c700000019.activate) + c:RegisterEffect(e1) +end +function c700000019.filter(c) + return c:IsSetCard(0x10ec) and c:IsPosition(POS_FACEUP_ATTACK) +end +function c700000019.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000019.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SetTargetPlayer(tp) + local rec=Duel.GetMatchingGroupCount(c700000019.filter,tp,LOCATION_MZONE,0,nil)*500 + Duel.SetTargetParam(rec) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) +end +function c700000019.activate(e,tp,eg,ep,ev,re,r,rp) + local rec=Duel.GetMatchingGroupCount(c700000019.filter,tp,LOCATION_MZONE,0,nil)*500 + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Recover(p,rec,REASON_EFFECT) +end diff --git a/script/c700000020.lua b/script/c700000020.lua new file mode 100644 index 00000000..764e2051 --- /dev/null +++ b/script/c700000020.lua @@ -0,0 +1,54 @@ +--Scripted by Eerie Code +--Abyss Prop - Escape Stage Coach +function c700000020.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c700000020.condition) + e2:SetTarget(c700000020.target) + e2:SetOperation(c700000020.operation) + c:RegisterEffect(e2) +end +function c700000020.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_BATTLE +end +function c700000020.filter(c) + return c:IsFaceup() and c:IsSetCard(0x10ec) +end +function c700000020.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c700000020.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000020.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SelectTarget(tp,c700000020.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c700000020.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetValue(c700000020.efilter) + e5:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e5) + end +end +function c700000020.efilter(e,te) + return te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end diff --git a/script/c700000021.lua b/script/c700000021.lua new file mode 100644 index 00000000..90dcc4e7 --- /dev/null +++ b/script/c700000021.lua @@ -0,0 +1,39 @@ +--Scripted by Eerie Code +--Fortissimo +function c700000021.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Increase ATK + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c700000021.target) + e2:SetOperation(c700000021.activate) + c:RegisterEffect(e2) +end +function c700000021.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9b) +end +function c700000021.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c700000021.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000021.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c700000021.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c700000021.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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+PHASE_STANDBY+RESET_SELF_TURN) + e1:SetValue(600) + tc:RegisterEffect(e1) + end +end diff --git a/script/c700000022.lua b/script/c700000022.lua new file mode 100644 index 00000000..92683bc7 --- /dev/null +++ b/script/c700000022.lua @@ -0,0 +1,76 @@ +--追走の翼 +function c700000022.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c700000022.target) + e1:SetOperation(c700000022.operation) + c:RegisterEffect(e1) +end +function c700000022.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c700000022.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc and tc:IsFaceup() 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_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c700000022.rcon) + e1:SetValue(1) + tc:RegisterEffect(e1,true) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(42776855,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_BATTLE_START) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c700000022.atkcon) + e3:SetTarget(c700000022.atktg) + e3:SetOperation(c700000022.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c700000022.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c700000022.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetFirstCardTarget() + if not tc then return false end + local bc=tc:GetBattleTarget() + return tc and tc:IsLocation(LOCATION_MZONE) and bc and bc:IsFaceup() and bc:IsLocation(LOCATION_MZONE) and bc:IsLevelAbove(5) + and bc==Duel.GetAttacker() +end +function c700000022.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(42776855)==0 end + e:GetHandler():RegisterFlagEffect(42776855,RESET_CHAIN,0,1) +end +function c700000022.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local tc=c:GetFirstCardTarget() + if not tc then return false end + local bc=tc:GetBattleTarget() + local atk=bc:GetAttack() + if bc:IsRelateToBattle() and Duel.Destroy(bc,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c700000023.lua b/script/c700000023.lua new file mode 100644 index 00000000..4922cd5e --- /dev/null +++ b/script/c700000023.lua @@ -0,0 +1,70 @@ +--Scripted by Eerie Code +--Performage Bonus Dealer +function c700000023.initial_effect(c) + --Pendulum Summon + aux.EnablePendulumAttribute(c) + --Draw + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c700000023.drcon) + e2:SetTarget(c700000023.drtg) + e2:SetOperation(c700000023.drop) + c:RegisterEffect(e2) + --lvatkup + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCost(c700000023.lvcost) + e2:SetTarget(c700000023.lvtg) + e2:SetOperation(c700000023.lvop) + c:RegisterEffect(e2) +end +function c700000023.drfil(c) + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and (c:IsSetCard(0xc6) or c:IsSetCard(0x9f)) and c:IsPreviousLocation(LOCATION_HAND) +end +function c700000023.drcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c700000023.drfil,3,nil) +end +function c700000023.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c700000023.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c700000023.lvfilter(c) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) +end +function c700000023.lvcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000023.lvfilter,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.SelectMatchingCard(tp,c700000023.lvfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.PSendtoExtra(g,nil,REASON_COST) +end +function c700000023.lvtg(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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c700000023.lvop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c700000024.lua b/script/c700000024.lua new file mode 100644 index 00000000..462de91d --- /dev/null +++ b/script/c700000024.lua @@ -0,0 +1,65 @@ +--Scripted by Eerie Code +--Performage Overlay Juggler +function c700000024.initial_effect(c) + --Pendulum Summon + aux.EnablePendulumAttribute(c) + --Xyz to material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c700000024.xmtg) + e2:SetOperation(c700000024.xmop) + c:RegisterEffect(e2) + --Attach + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetTarget(c700000024.xyztg) + e3:SetOperation(c700000024.xyzop) + c:RegisterEffect(e3) +end + +function c700000024.xmfil1(c,tp) + return c:IsType(TYPE_XYZ) and Duel.IsExistingMatchingCard(c700000024.xmfil2,tp,LOCATION_MZONE,0,1,c,c) +end +function c700000024.xmfil2(c,xyzmat) + return c:IsType(TYPE_XYZ) and xyzmat:IsCanBeXyzMaterial(c) +end +function c700000024.xmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c700000024.xmfil1(chkc,tp) end + if chk==0 then return Duel.IsExistingTarget(c700000024.xmfil1,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c700000024.xmfil1,tp,LOCATION_MZONE,0,1,1,nil,tp) +end +function c700000024.xmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectMatchingCard(tp,c700000024.xmfil2,tp,LOCATION_MZONE,0,1,1,tc,tc) + if g:GetCount()>0 and not g:GetFirst():IsImmuneToEffect(e) then + if tc:GetOverlayCount()>0 then + Duel.SendtoGrave(tc:GetOverlayGroup(),REASON_RULE) + end + Duel.Overlay(g:GetFirst(),Group.FromCards(tc)) + end + end +end + +function c700000024.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c700000024.xmfil2(chkc,e:GetHandler()) end + if chk==0 then return Duel.IsExistingTarget(c700000024.xmfil2,tp,LOCATION_MZONE,0,1,nil,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c700000024.xmfil2,tp,LOCATION_MZONE,0,1,1,nil,e:GetHandler()) +end +function c700000024.xyzop(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 not tc:IsImmuneToEffect(e) then + Duel.Overlay(tc,Group.FromCards(c)) + end +end diff --git a/script/c700000025.lua b/script/c700000025.lua new file mode 100644 index 00000000..5b3064fb --- /dev/null +++ b/script/c700000025.lua @@ -0,0 +1,104 @@ +--Scripted by Eerie Code +--Performage Cup Tricker +function c700000025.initial_effect(c) + --Pendulum Summon + aux.EnablePendulumAttribute(c) + --Attach + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(12744567,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetTarget(c700000025.xyztg) + e2:SetOperation(c700000025.xyzop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(102380,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_HAND) + e3:SetTarget(c700000025.sptg) + e3:SetOperation(c700000025.spop) + c:RegisterEffect(e3) + --attach + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetCondition(c700000025.thcon) + e4:SetTarget(c700000025.thtg) + e4:SetOperation(c700000025.thop) + c:RegisterEffect(e4) +end + +function c700000025.xyzfil(c) + return c:IsType(TYPE_XYZ) +end +function c700000025.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c700000025.xyzfil(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000025.xyzfil,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c700000025.xyzfil,tp,LOCATION_MZONE,0,1,1,nil) +end +function c700000025.xyzop(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 not tc:IsImmuneToEffect(e) then + Duel.Overlay(tc,Group.FromCards(c)) + end +end + +function c700000025.spfil(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:GetOverlayCount()>0 +end +function c700000025.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c700000025.spfil(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000025.spfil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + local tg=Duel.SelectTarget(tp,c700000025.spfil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + local g=tg:GetFirst():GetOverlayGroup() + local sg=g:Select(tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c700000025.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-600) + e1:SetReset(RESET_EVENT+0x1ff0000) + tc:RegisterEffect(e1) + end +end + + +function c700000025.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsReason(REASON_COST) and re:IsHasType(0x7e0) and re:IsActiveType(TYPE_MONSTER) and bit.band(c:GetPreviousLocation(),LOCATION_OVERLAY)~=0 then + return true + else return false end +end +function c700000025.thfil1(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c700000025.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetOverlayCount(tp,1,0)>0 and Duel.IsExistingMatchingCard(c700000025.thfil1,tp,LOCATION_MZONE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) +end +function c700000025.thop(e,tp,eg,ep,ev,re,r,rp) + + --if not tc:IsRelateToEffect(e) or not tc:GetOverlayTarget():IsRelateToEffect(e) or not Duel.IsExistingMatchingCard(c700000025.thfil1,tp,LOCATION_MZONE,0,2,nil) then return end + local mg=Duel.GetOverlayGroup(tp,1,0):Select(tp,1,1,nil) + if mg:GetCount()==0 then return end + local tc=mg:GetFirst() + local g=Duel.SelectMatchingCard(tp,c700000025.thfil1,tp,LOCATION_MZONE,0,1,1,tc:GetOverlayTarget()) + if g:GetCount()>0 then + Duel.Overlay(g:GetFirst(),tc) + Duel.RaiseSingleEvent(tc:GetOverlayTarget(),EVENT_DETACH_MATERIAL,e,0,0,0,0) + end +end \ No newline at end of file diff --git a/script/c700000026.lua b/script/c700000026.lua new file mode 100644 index 00000000..d3b6f2e0 --- /dev/null +++ b/script/c700000026.lua @@ -0,0 +1,44 @@ +--Performage Shadow Maker +function c700000026.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetDescription(aux.Stringid(700000026,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c700000026.spcon) + e1:SetCost(c700000026.spcost) + e1:SetTarget(c700000026.sptg) + e1:SetOperation(c700000026.spop) + c:RegisterEffect(e1) +end +function c700000026.spcon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsContains(e:GetHandler()) +end +function c700000026.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c700000026.filter(c,e,tp) + return c:IsCode(700000026) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c700000026.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c700000026.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c700000026.spop(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,c700000026.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c700000027.lua b/script/c700000027.lua new file mode 100644 index 00000000..ea36c4b7 --- /dev/null +++ b/script/c700000027.lua @@ -0,0 +1,58 @@ +--Scripted by Eerie Code +--Raidraptor - Satellite Cannon Falcon +function c700000027.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_WINDBEAST),8,2) + c:EnableReviveLimit() + --Reduce ATK + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c700000027.cost) + e1:SetTarget(c700000027.target) + e1:SetOperation(c700000027.operation) + c:RegisterEffect(e1) +end +function c700000027.cost(e,tp,ep,eg,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c700000027.filter(c,e) + return aux.nzatk(c) and (not e or not c:IsImmuneToEffect(e)) +end +function c700000027.atkfilter(c) + return c:IsSetCard(0xba) and c:IsType(TYPE_MONSTER) +end +function c700000027.target(e,tp,ep,eg,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.nzatk,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c700000027.atkfilter,tp,LOCATION_GRAVE,0,1,nil) end +end +function c700000027.operation(e,tp,ep,eg,ev,re,r,rp) + local mg=Duel.GetMatchingGroupCount(c700000027.filter,tp,0,LOCATION_MZONE,nil,e) + local rc=Duel.GetMatchingGroupCount(c700000027.atkfilter,tp,LOCATION_GRAVE,0,nil) + local g=Duel.GetMatchingGroup(c700000027.atkfilter,tp,LOCATION_GRAVE,0,nil) + local ct=g:GetFirst() + if mg==0 or rc==0 then return end + repeat + local code=ct:GetCode() + Duel.Hint(HINT_CARD,0,code) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tg=Duel.SelectMatchingCard(tp,c700000027.filter,tp,0,LOCATION_MZONE,1,1,nil,e) + local tc=tg:GetFirst() + if tc then + Duel.HintSelection(tg) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + else return + end + rc=rc-1 + ct=g:GetNext() + until rc<=0 or not Duel.IsExistingMatchingCard(c700000027.filter,tp,0,LOCATION_MZONE,1,nil,e) + or not Duel.SelectYesNo(tp,210) +end diff --git a/script/c700000028.lua b/script/c700000028.lua new file mode 100644 index 00000000..f9a2b8c8 --- /dev/null +++ b/script/c700000028.lua @@ -0,0 +1,47 @@ +--Scripted by Eerie Code +--Ancient Gear Chaos Giant +function c700000028.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode4(c,42878636,511001540,511001544,511001726,true,true) + --immune + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c700000028.efilter1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetValue(c700000028.efilter2) + c:RegisterEffect(e3) + --attack all + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ATTACK_ALL) + e1:SetValue(1) + c:RegisterEffect(e1) + --actlimit + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_ATTACK_ANNOUNCE) + e5:SetOperation(c700000028.atkop) + c:RegisterEffect(e5) +end + +function c700000028.efilter1(e,te) + return te:IsActiveType(TYPE_TRAP+TYPE_SPELL) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c700000028.efilter2(e,re,rp) + return aux.tgoval(e,re,rp) and re:IsActiveType(TYPE_TRAP+TYPE_SPELL) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end +function c700000028.atkop(e,tp,eg,ep,ev,re,r,rp) + local e5=Effect.CreateEffect(e:GetHandler()) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_DISABLE) + e5:SetRange(LOCATION_MZONE) + e5:SetTargetRange(0,LOCATION_MZONE) + e5:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e5,tp) +end \ No newline at end of file diff --git a/script/c700000029.lua b/script/c700000029.lua new file mode 100644 index 00000000..0882b8f7 --- /dev/null +++ b/script/c700000029.lua @@ -0,0 +1,32 @@ +--Scripted by Eerie Code +--Bloom Prima the Melodious Choir +--fixed by MLD +function c700000029.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunFunRep(c,c700000029.mfilter1,aux.FilterBoolFunction(Card.IsFusionSetCard,0x9b),1,63,true) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c700000029.matcheck) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EXTRA_ATTACK) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c700000029.mfilter1(c) + local code=c:GetFusionCode() + return code==14763299 or code==62895219 +end +function c700000029.matcheck(e,c) + local ct=c:GetMaterialCount() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*300) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) +end diff --git a/script/c700000030.lua b/script/c700000030.lua new file mode 100644 index 00000000..f7704e71 --- /dev/null +++ b/script/c700000030.lua @@ -0,0 +1,63 @@ +--Scripted by Eerie Code +--Thorn Prisoner - Van +function c700000030.initial_effect(c) + --No battle damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetCost(c700000030.nbcost) + e2:SetTarget(c700000030.nbtg) + e2:SetOperation(c700000030.nbop) + c:RegisterEffect(e2) +end +function c700000030.cfilter(c,e,tp) + return c:IsSetCard(0x513) and not c:IsPublic() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c700000030.nbcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000030.cfilter,tp,LOCATION_HAND,0,1,nil,e,tp) and Duel.CheckLPCost(tp,400) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local cg=Duel.SelectMatchingCard(tp,c700000030.cfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleHand(tp) + e:SetLabelObject(cg:GetFirst()) + Duel.PayLPCost(tp,400) +end +function c700000030.nbtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) end + local tc=e:GetLabelObject() + Duel.SetTargetCard(tc) + e:SetLabelObject(nil) +end +function c700000030.nbop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) then return end + local fid=e:GetHandler():GetFieldID() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c700000030.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetOperation(c700000030.spop) + e2:SetLabelObject(tc) + e2:SetValue(fid) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) + tc:RegisterFlagEffect(70000030,RESET_EVENT+0x1fe0000,0,1,fid) +end +function c700000030.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c700000030.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=e:GetLabelObject() + if c:IsLocation(LOCATION_GRAVE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and tc and tc:GetFlagEffectLabel(70000030)==e:GetValue() + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) then + local g=Group.FromCards(c,tc) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end +end diff --git a/script/c700000031.lua b/script/c700000031.lua new file mode 100644 index 00000000..9ab17a22 --- /dev/null +++ b/script/c700000031.lua @@ -0,0 +1,27 @@ +--Scripted by Eerie Code +--Thorn Prisoner - Darli +function c700000031.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c700000031.negcon) + e1:SetCost(c700000031.negcost) + e1:SetOperation(c700000031.negop) + c:RegisterEffect(e1) +end + +function c700000031.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x513) +end +function c700000031.negcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.IsExistingMatchingCard(c700000031.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c700000031.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,400) end + Duel.PayLPCost(tp,400) +end +function c700000031.negop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end \ No newline at end of file diff --git a/script/c700000032.lua b/script/c700000032.lua new file mode 100644 index 00000000..8c06d040 --- /dev/null +++ b/script/c700000032.lua @@ -0,0 +1,136 @@ +--Scripted by Eerie Code +--Thorn Observer - Zuma +function c700000032.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.NonTuner(Card.IsSetCard,0x513)) + c:EnableReviveLimit() + --Place Counter + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c700000032.pccon) + e1:SetTarget(c700000032.pctg) + e1:SetOperation(c700000032.pcop) + c:RegisterEffect(e1) + --atk limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c700000032.atktg) + c:RegisterEffect(e2) + --damage + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCountLimit(1) + e4:SetTarget(c700000032.damtg) + e4:SetOperation(c700000032.damop) + c:RegisterEffect(e4) + --No battle damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_BE_BATTLE_TARGET) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetCost(c700000032.nbcost) + e5:SetTarget(c700000032.nbtg) + e5:SetOperation(c700000032.nbop) + c:RegisterEffect(e5) +end +function c700000032.pccon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c700000032.pctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end +end +function c700000032.pcop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + tc:AddCounter(0x1104,1) + tc=g:GetNext() + end +end +function c700000032.atktg(e,c) + return c:GetCounter(0x1104)~=0 +end +function c700000032.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local p=Duel.GetTurnPlayer() + local ct=Duel.GetCounter(p,LOCATION_ONFIELD,0,0x1104) + Duel.SetTargetPlayer(p) + Duel.SetTargetParam(ct*400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,p,ct*400) +end +function c700000032.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c700000032.nbcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,400) end + Duel.PayLPCost(tp,400) +end +function c700000032.mgfilter(c,e,tp,sync) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) + and bit.band(c:GetReason(),0x80008)==0x80008 and c:GetReasonCard()==sync + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + and c:IsCanBeEffectTarget(e) +end +function c700000032.nbtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + local mg=c:GetMaterial() + local ct=mg:GetCount() + local sumtype=c:GetSummonType() + if chkc then return false end + if chk==0 then return sumtype==SUMMON_TYPE_SYNCHRO and ct>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and ct<=Duel.GetLocationCount(tp,LOCATION_MZONE) and mg:FilterCount(c700000032.mgfilter,nil,e,tp,c)==ct end + Duel.SetTargetCard(mg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,mg,mg:GetCount(),0,0) +end +function c700000032.nbop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(Card.IsRelateToEffect,nil,e) + if not c:IsRelateToEffect(e) or g:GetCount()~=tg:GetCount() then return end + local fid=c:GetFieldID() + local tc=g:GetFirst() + while tc do + tc:RegisterFlagEffect(70000032,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=g:GetNext() + end + g:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c700000032.damop2) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetOperation(c700000032.spop) + e2:SetLabelObject(g) + e2:SetLabel(g:GetCount()) + e2:SetValue(fid) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) +end +function c700000032.damop2(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end +function c700000032.spfilter(c,fid) + return c:GetFlagEffectLabel(70000032)==fid +end +function c700000032.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=e:GetLabelObject() + local tg=g:Filter(c700000032.spfilter,nil,e:GetValue()) + if not c:IsLocation(LOCATION_GRAVE) or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or tg:GetCount()~=e:GetLabel() then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + tg:AddCard(c) + Duel.SpecialSummon(tg,0,tp,tp,false,false,POS_FACEUP_ATTACK) +end diff --git a/script/c700000033.lua b/script/c700000033.lua new file mode 100644 index 00000000..79dbe12f --- /dev/null +++ b/script/c700000033.lua @@ -0,0 +1,58 @@ +--Scripted by Eerie Code +--Thorn Over Server - Van Darli Zuma +--fixed and cleaned up by MLD +function c700000033.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,700000030,700000031,700000032,true,true) + --Atk update + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c700000033.atkval) + c:RegisterEffect(e1) + --ATK to 100 + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c700000033.cost) + e2:SetTarget(c700000033.target) + e2:SetOperation(c700000033.operation) + c:RegisterEffect(e2) +end +c700000033.miracle_synchro_fusion=true +function c700000033.atkval(e,c) + local cont=c:GetControler() + local atk=2500-Duel.GetLP(cont) + if atk<0 then atk=0 end + return atk*2 +end + +function c700000033.filter(c) + return c:GetAttack()~=100 and c:IsFaceup() +end +function c700000033.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,100) end + Duel.PayLPCost(tp,100) +end +function c700000033.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c700000033.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c700000033.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.SelectTarget(tp,c700000033.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c700000033.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c700000034.lua b/script/c700000034.lua new file mode 100644 index 00000000..a83e993b --- /dev/null +++ b/script/c700000034.lua @@ -0,0 +1,119 @@ +--Scripted by Eerie Code +--Ancient Gear Chaos Fusion +--fixed by MLD +function c700000034.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetCost(c700000034.cost) + e1:SetTarget(c700000034.target) + e1:SetOperation(c700000034.activate) + c:RegisterEffect(e1) +end +function c700000034.cfilter(c) + return c:IsCode(24094653) and c:IsAbleToGraveAsCost() +end +function c700000034.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c700000034.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c700000034.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c700000034.matfilter(c,e,tp) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c700000034.spfilter(c,e,tp) + if not c:IsType(TYPE_FUSION) or not c:IsSetCard(0x7) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) then return false end + local ct=c.material_count + if not ct or Duel.GetLocationCount(tp,LOCATION_MZONE)0 then + return fc:CheckFusionMaterial(mg,nil) and rg2:IsExists(c700000034.rmfilter2,1,nil,mg,rg2,ct,fc) + else + return fc:CheckFusionMaterial(mg,nil) + end +end +function c700000034.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.IsExistingMatchingCard(c700000034.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local fg=Duel.SelectMatchingCard(tp,c700000034.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + Duel.ConfirmCards(1-tp,fg:GetFirst()) + Duel.SetTargetCard(fg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c700000034.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) or not c700000034.spfilter(tc,e,tp) then return false end + local ct=tc.material_count + local mg=Duel.GetMatchingGroup(c700000034.matfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,nil,e,tp) + local rg=Duel.GetMatchingGroup(c700000034.rmfilter,tp,LOCATION_GRAVE,0,nil) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local sg=Group.CreateGroup() + local mg2=Duel.GetMatchingGroup(c700000034.matfilter,tp,LOCATION_GRAVE,0,nil,e,tp) + if tc:CheckFusionMaterial(mg,nil) and rg:GetCount()>=ct then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + sg=rg:Select(tp,ct,ct,nil) + else + mg:Merge(mg2) + mg:Sub(rg) + if tc:CheckFusionMaterial(mg,nil) and rg:GetCount()>=ct then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + sg=rg:Select(tp,ct,ct,nil) + else + mg:Merge(mg2) + rg:Sub(mg) + if tc:CheckFusionMaterial(mg,nil) and rg:GetCount()>=ct then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + sg=rg:Select(tp,ct,ct,nil) + else + local g=mg:Clone() + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local sc=rg:FilterSelect(tp,c700000034.rmfilter2,1,1,nil,g,rg,ct,tc):GetFirst() + rg:RemoveCard(sc) + sg:AddCard(sc) + ct=ct-1 + until ct<=0 + end + end + end + mg:Sub(sg) + Duel.Remove(sg,POS_FACEUP,REASON_EFFECT) + local mat=Duel.SelectFusionMaterial(tp,tc,mg,nil,chkf) + local mc=mat:GetFirst() + while mc do + Duel.SpecialSummonStep(mc,0,tp,tp,true,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + mc:RegisterEffect(e1) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetReset(RESET_EVENT+0x1fe0000) + mc:RegisterEffect(e3) + mc=mat:GetNext() + end + Duel.SpecialSummonComplete() + Duel.BreakEffect() + tc:SetMaterial(mat) + Duel.SendtoGrave(mat,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c70026064.lua b/script/c70026064.lua index f4a26711..4a1da1ce 100644 --- a/script/c70026064.lua +++ b/script/c70026064.lua @@ -1,53 +1,53 @@ ---武神-ヒルコ -function c70026064.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_PZONE) - e2:SetCost(c70026064.spcost) - e2:SetTarget(c70026064.sptg) - e2:SetOperation(c70026064.spop) - c:RegisterEffect(e2) -end -function c70026064.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c70026064.filter1(c,e,tp) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x88) - and Duel.IsExistingMatchingCard(c70026064.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetCode()) -end -function c70026064.filter2(c,e,tp,mc,code) - return c:IsType(TYPE_XYZ) and c:IsSetCard(0x88) and not c:IsCode(code) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c70026064.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c70026064.filter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c70026064.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c70026064.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c70026064.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c70026064.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetCode()) - local sc=g:GetFirst() - if sc then - local mg=tc:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end -end +--武神-ヒルコ +function c70026064.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCost(c70026064.spcost) + e2:SetTarget(c70026064.sptg) + e2:SetOperation(c70026064.spop) + c:RegisterEffect(e2) +end +function c70026064.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c70026064.filter1(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0x88) + and Duel.IsExistingMatchingCard(c70026064.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetCode()) +end +function c70026064.filter2(c,e,tp,mc,code) + return c:IsType(TYPE_XYZ) and c:IsSetCard(0x88) and not c:IsCode(code) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c70026064.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c70026064.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c70026064.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c70026064.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c70026064.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c70026064.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetCode()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c70043345.lua b/script/c70043345.lua index 7590e737..1091ad80 100644 --- a/script/c70043345.lua +++ b/script/c70043345.lua @@ -1,108 +1,109 @@ ---U.A.ペナルティ -function c70043345.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetTarget(c70043345.target) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_BATTLE_START) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1,70043345) - e2:SetCondition(c70043345.rmcon) - e2:SetTarget(c70043345.rmtg) - e2:SetOperation(c70043345.rmop) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetRange(LOCATION_GRAVE) - e3:SetCost(c70043345.thcost) - e3:SetTarget(c70043345.thtg) - e3:SetOperation(c70043345.thop) - c:RegisterEffect(e3) -end -function c70043345.target(e,tp,eg,ep,ev,re,r,rp,chk) - local b1=Duel.GetCurrentPhase()~=PHASE_DAMAGE - local b2=Duel.CheckEvent(EVENT_BATTLE_START) and c70043345.rmcon(e,tp,eg,ep,ev,re,r,rp) and c70043345.rmtg(e,tp,eg,ep,ev,re,r,rp,0) - if chk==0 then return b1 or b2 end - if b2 then - e:SetCategory(CATEGORY_REMOVE) - e:SetOperation(c70043345.rmop) - c70043345.rmtg(e,tp,eg,ep,ev,re,r,rp,1) - else - e:SetCategory(0) - e:SetOperation(nil) - end -end -function c70043345.rmcon(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttacker() - local bc=Duel.GetAttackTarget() - if not bc then return false end - if tc:IsControler(1-tp) then tc,bc=bc,tc end - if tc:IsFaceup() and tc:IsSetCard(0xb2) then - e:SetLabelObject(bc) - return true - else return false end -end -function c70043345.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - local bc=e:GetLabelObject() - if chk==0 then return bc:IsAbleToRemove() and Duel.GetFlagEffect(tp,70043345)==0 end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,bc,1,0,0) - Duel.RegisterFlagEffect(tp,70043345,RESET_PHASE+PHASE_END,0,1) -end -function c70043345.rmop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local bc=e:GetLabelObject() - if bc:IsRelateToBattle() and bc:IsControler(1-tp) and Duel.Remove(bc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then - bc:SetTurnCounter(0) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) - e1:SetLabelObject(bc) - e1:SetCountLimit(1) - e1:SetCondition(c70043345.retcon) - e1:SetOperation(c70043345.retop) - Duel.RegisterEffect(e1,tp) - end -end -function c70043345.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c70043345.retop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - local ct=tc:GetTurnCounter() - ct=ct+1 - tc:SetTurnCounter(ct) - if ct==2 then - Duel.ReturnToField(tc) - end -end -function c70043345.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) -end -function c70043345.thfilter(c) - return c:IsSetCard(0xb2) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() -end -function c70043345.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c70043345.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c70043345.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c70043345.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--U.A.ペナルティ +function c70043345.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetTarget(c70043345.target) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,70043345) + e2:SetCondition(c70043345.rmcon) + e2:SetTarget(c70043345.rmtg) + e2:SetOperation(c70043345.rmop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c70043345.thcost) + e3:SetTarget(c70043345.thtg) + e3:SetOperation(c70043345.thop) + c:RegisterEffect(e3) +end +function c70043345.target(e,tp,eg,ep,ev,re,r,rp,chk) + local b1=Duel.GetCurrentPhase()~=PHASE_DAMAGE + local b2=Duel.CheckEvent(EVENT_BATTLE_START) and c70043345.rmcon(e,tp,eg,ep,ev,re,r,rp) and c70043345.rmtg(e,tp,eg,ep,ev,re,r,rp,0) + if chk==0 then return b1 or b2 end + if b2 then + e:SetCategory(CATEGORY_REMOVE) + e:SetOperation(c70043345.rmop) + c70043345.rmtg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c70043345.rmcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if not bc then return false end + if tc:IsControler(1-tp) then tc,bc=bc,tc end + if tc:IsFaceup() and tc:IsSetCard(0xb2) then + e:SetLabelObject(bc) + return true + else return false end +end +function c70043345.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetLabelObject() + if chk==0 then return bc:IsAbleToRemove() and Duel.GetFlagEffect(tp,70043345)==0 end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,bc,1,0,0) + Duel.RegisterFlagEffect(tp,70043345,RESET_PHASE+PHASE_END,0,1) +end +function c70043345.rmop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local bc=e:GetLabelObject() + if bc:IsRelateToBattle() and bc:IsControler(1-tp) and Duel.Remove(bc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + bc:SetTurnCounter(0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(70043345,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN,2) + e1:SetLabelObject(bc) + e1:SetCountLimit(1) + e1:SetCondition(c70043345.retcon) + e1:SetOperation(c70043345.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c70043345.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c70043345.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local ct=tc:GetTurnCounter() + ct=ct+1 + tc:SetTurnCounter(ct) + if ct==2 then + Duel.ReturnToField(tc) + end +end +function c70043345.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end +function c70043345.thfilter(c) + return c:IsSetCard(0xb2) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c70043345.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c70043345.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c70043345.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c70043345.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c70046172.lua b/script/c70046172.lua index 15946f22..db8b2cc6 100644 --- a/script/c70046172.lua +++ b/script/c70046172.lua @@ -1,34 +1,34 @@ ---突進 -function c70046172.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(c70046172.condition) - e1:SetTarget(c70046172.target) - e1:SetOperation(c70046172.activate) - c:RegisterEffect(e1) -end -function c70046172.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c70046172.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c70046172.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(700) - tc:RegisterEffect(e1) - end -end +--突進 +function c70046172.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(c70046172.condition) + e1:SetTarget(c70046172.target) + e1:SetOperation(c70046172.activate) + c:RegisterEffect(e1) +end +function c70046172.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c70046172.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c70046172.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(700) + tc:RegisterEffect(e1) + end +end diff --git a/script/c70117860.lua b/script/c70117860.lua new file mode 100644 index 00000000..43ea5892 --- /dev/null +++ b/script/c70117860.lua @@ -0,0 +1,62 @@ +--WW-スノウ・ベル +function c70117860.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70117860,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c70117860.spcon) + e1:SetTarget(c70117860.sptg) + e1:SetOperation(c70117860.spop) + c:RegisterEffect(e1) + --effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c70117860.efcon) + e2:SetOperation(c70117860.efop) + c:RegisterEffect(e2) +end +function c70117860.cfilter1(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) +end +function c70117860.cfilter2(c) + return c:IsFacedown() or not c:IsAttribute(ATTRIBUTE_WIND) +end +function c70117860.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c70117860.cfilter1,tp,LOCATION_MZONE,0,2,nil) + and not Duel.IsExistingMatchingCard(c70117860.cfilter2,tp,LOCATION_MZONE,0,1,nil) +end +function c70117860.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c70117860.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c70117860.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_SYNCHRO and e:GetHandler():GetReasonCard():IsAttribute(ATTRIBUTE_WIND) +end +function c70117860.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70117860,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CLIENT_HINT) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c70117860.tgval) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1) +end +function c70117860.tgval(e,re,rp) + return rp~=e:GetHandlerPlayer() +end diff --git a/script/c70147689.lua b/script/c70147689.lua new file mode 100644 index 00000000..c8ab894d --- /dev/null +++ b/script/c70147689.lua @@ -0,0 +1,88 @@ +--古代の機械要塞 +function c70147689.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c70147689.target) + e2:SetValue(c70147689.indval) + c:RegisterEffect(e2) + --cannot be target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c70147689.target) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) + --act limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAINING) + e4:SetRange(LOCATION_SZONE) + e4:SetOperation(c70147689.chainop) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetDescription(aux.Stringid(70147689,0)) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_DELAY) + e5:SetCode(EVENT_DESTROYED) + e5:SetCondition(c70147689.spcon) + e5:SetTarget(c70147689.sptg) + e5:SetOperation(c70147689.spop) + c:RegisterEffect(e5) +end +function c70147689.target(e,c) + return c:IsSetCard(0x7) and c:IsStatus(STATUS_SUMMON_TURN+STATUS_SPSUMMON_TURN) +end +function c70147689.indval(e,re,rp) + return rp~=e:GetHandlerPlayer() +end +function c70147689.chainop(e,tp,eg,ep,ev,re,r,rp) + if re:GetHandler():IsSetCard(0x7) then + Duel.SetChainLimit(c70147689.chainlm) + end +end +function c70147689.chainlm(e,rp,tp) + return tp==rp +end +function c70147689.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c70147689.filter(c,e,tp) + return c:IsSetCard(0x7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c70147689.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c70147689.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c70147689.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c70147689.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c70147689.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c70147689.splimit(e,c) + return not c:IsSetCard(0x7) +end diff --git a/script/c70156997.lua b/script/c70156997.lua index 59f00862..72c66d47 100644 --- a/script/c70156997.lua +++ b/script/c70156997.lua @@ -1,51 +1,51 @@ ---地霊術-「鉄」 -function c70156997.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c70156997.cost) - e1:SetTarget(c70156997.target) - e1:SetOperation(c70156997.activate) - c:RegisterEffect(e1) -end -function c70156997.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsAttribute,1,nil,ATTRIBUTE_EARTH) end - local g=Duel.SelectReleaseGroup(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_EARTH) - Duel.Release(g,REASON_COST) - e:SetLabelObject(g:GetFirst()) -end -function c70156997.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c70156997.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c70156997.filter(chkc,e,tp) end - if chk==0 then - if e:GetLabel()==1 then - e:SetLabel(0) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c70156997.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) - else - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c70156997.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) - end - end - local ex=nil - if e:GetLabel()==1 then - ex=e:GetLabelObject() - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c70156997.filter,tp,LOCATION_GRAVE,0,1,1,ex,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) - e:SetLabel(0) -end -function c70156997.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--地霊術-「鉄」 +function c70156997.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c70156997.cost) + e1:SetTarget(c70156997.target) + e1:SetOperation(c70156997.activate) + c:RegisterEffect(e1) +end +function c70156997.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsAttribute,1,nil,ATTRIBUTE_EARTH) end + local g=Duel.SelectReleaseGroup(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_EARTH) + Duel.Release(g,REASON_COST) + e:SetLabelObject(g:GetFirst()) +end +function c70156997.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c70156997.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c70156997.filter(chkc,e,tp) end + if chk==0 then + if e:GetLabel()==1 then + e:SetLabel(0) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c70156997.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c70156997.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + end + end + local ex=nil + if e:GetLabel()==1 then + ex=e:GetLabelObject() + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c70156997.filter,tp,LOCATION_GRAVE,0,1,1,ex,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + e:SetLabel(0) +end +function c70156997.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c70187958.lua b/script/c70187958.lua index 41666fc4..1cf28da5 100644 --- a/script/c70187958.lua +++ b/script/c70187958.lua @@ -1,29 +1,29 @@ ---ダーク砂バク -function c70187958.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(70187958,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_REMOVE) - e1:SetTarget(c70187958.target) - e1:SetOperation(c70187958.operation) - c:RegisterEffect(e1) -end -function c70187958.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_BEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c70187958.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c70187958.filter(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c70187958.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c70187958.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c70187958.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ダーク砂バク +function c70187958.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70187958,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_REMOVE) + e1:SetTarget(c70187958.target) + e1:SetOperation(c70187958.operation) + c:RegisterEffect(e1) +end +function c70187958.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_BEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c70187958.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c70187958.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c70187958.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c70187958.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c70187958.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c70194827.lua b/script/c70194827.lua index 894156da..8fafc2fd 100644 --- a/script/c70194827.lua +++ b/script/c70194827.lua @@ -1,32 +1,32 @@ ---ブレード・バウンサー -function c70194827.initial_effect(c) - --chain attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(70194827,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCountLimit(1) - e1:SetCode(EVENT_DAMAGE_STEP_END) - e1:SetCondition(c70194827.atcon) - e1:SetCost(c70194827.atcost) - e1:SetOperation(c70194827.atop) - c:RegisterEffect(e1) -end -function c70194827.atcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler()==Duel.GetAttacker() and e:GetHandler():IsChainAttackable(2,true) - and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 -end -function c70194827.atcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) -end -function c70194827.atop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToBattle() then return end - Duel.ChainAttack() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - c:RegisterEffect(e1) -end +--ブレード・バウンサー +function c70194827.initial_effect(c) + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70194827,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCountLimit(1) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c70194827.atcon) + e1:SetCost(c70194827.atcost) + e1:SetOperation(c70194827.atop) + c:RegisterEffect(e1) +end +function c70194827.atcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==Duel.GetAttacker() and e:GetHandler():IsChainAttackable(2,true) + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 +end +function c70194827.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c70194827.atop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToBattle() then return end + Duel.ChainAttack() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) +end diff --git a/script/c70222318.lua b/script/c70222318.lua index eff5f9d3..16608a9e 100644 --- a/script/c70222318.lua +++ b/script/c70222318.lua @@ -1,73 +1,73 @@ ---森羅の霊峰 -function c70222318.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1,70222318) - e2:SetCost(c70222318.cost) - e2:SetTarget(c70222318.target) - e2:SetOperation(c70222318.operation) - c:RegisterEffect(e2) - --deck check - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(70222318,3)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetRange(LOCATION_FZONE) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetCountLimit(1) - e3:SetCondition(c70222318.tgcon) - e3:SetTarget(c70222318.tgtg) - e3:SetOperation(c70222318.tgop) - c:RegisterEffect(e3) -end -function c70222318.cfilter(c) - return c:IsRace(RACE_PLANT) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsAbleToGraveAsCost() -end -function c70222318.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c70222318.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c70222318.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c70222318.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,1,nil,0x90) end -end -function c70222318.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(70222318,0)) - local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_DECK,0,1,1,nil,0x90) - local tc=g:GetFirst() - if tc then - Duel.ShuffleDeck(tp) - Duel.MoveSequence(tc,0) - Duel.ConfirmDecktop(tp,1) - end -end -function c70222318.tgcon(e,tp,eg,ep,ev,re,r,rp) - return tp~=Duel.GetTurnPlayer() -end -function c70222318.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c70222318.tgop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - if tc:IsRace(RACE_PLANT) then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) - else - local opt=Duel.SelectOption(tp,aux.Stringid(70222318,1),aux.Stringid(70222318,2)) - if opt==1 then - Duel.MoveSequence(tc,opt) - end - end -end +--森羅の霊峰 +function c70222318.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1,70222318) + e2:SetCost(c70222318.cost) + e2:SetTarget(c70222318.target) + e2:SetOperation(c70222318.operation) + c:RegisterEffect(e2) + --deck check + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(70222318,3)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetCondition(c70222318.tgcon) + e3:SetTarget(c70222318.tgtg) + e3:SetOperation(c70222318.tgop) + c:RegisterEffect(e3) +end +function c70222318.cfilter(c) + return c:IsRace(RACE_PLANT) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsAbleToGraveAsCost() +end +function c70222318.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c70222318.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c70222318.cfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c70222318.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_DECK,0,1,nil,0x90) end +end +function c70222318.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(70222318,0)) + local g=Duel.SelectMatchingCard(tp,Card.IsSetCard,tp,LOCATION_DECK,0,1,1,nil,0x90) + local tc=g:GetFirst() + if tc then + Duel.ShuffleDeck(tp) + Duel.MoveSequence(tc,0) + Duel.ConfirmDecktop(tp,1) + end +end +function c70222318.tgcon(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c70222318.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c70222318.tgop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + if tc:IsRace(RACE_PLANT) then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(g,REASON_EFFECT+REASON_REVEAL) + else + local opt=Duel.SelectOption(tp,aux.Stringid(70222318,1),aux.Stringid(70222318,2)) + if opt==1 then + Duel.MoveSequence(tc,opt) + end + end +end diff --git a/script/c70245411.lua b/script/c70245411.lua index d9237cad..92058e80 100644 --- a/script/c70245411.lua +++ b/script/c70245411.lua @@ -1,75 +1,75 @@ ---トイポット -function c70245411.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(70245411,0)) - e2:SetCategory(CATEGORY_DRAW+CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCost(c70245411.spcost) - e2:SetTarget(c70245411.sptg) - e2:SetOperation(c70245411.spop) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(70245411,1)) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetTarget(c70245411.thtg) - e3:SetOperation(c70245411.thop) - c:RegisterEffect(e3) -end -function c70245411.spcost(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 c70245411.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c70245411.spfilter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c70245411.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.Draw(tp,1,REASON_EFFECT)==0 then return end - local tc=Duel.GetOperatedGroup():GetFirst() - Duel.ConfirmCards(1-tp,tc) - if tc:IsSetCard(0xa9) and tc:IsType(TYPE_MONSTER) then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local g=Duel.GetMatchingGroup(c70245411.spfilter,tp,LOCATION_HAND,0,nil,e,tp) - if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(70245411,2)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sc=g:Select(tp,1,1,nil) - Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) - end - else - Duel.BreakEffect() - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_DISCARD) - end - Duel.ShuffleHand(tp) -end -function c70245411.filter(c) - return (c:IsCode(30068120) or (c:IsSetCard(0xa9) and c:IsType(TYPE_MONSTER))) and c:IsAbleToHand() -end -function c70245411.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c70245411.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c70245411.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c70245411.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--トイポット +function c70245411.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(70245411,0)) + e2:SetCategory(CATEGORY_DRAW+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCost(c70245411.spcost) + e2:SetTarget(c70245411.sptg) + e2:SetOperation(c70245411.spop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(70245411,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetTarget(c70245411.thtg) + e3:SetOperation(c70245411.thop) + c:RegisterEffect(e3) +end +function c70245411.spcost(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 c70245411.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c70245411.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c70245411.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.Draw(tp,1,REASON_EFFECT)==0 then return end + local tc=Duel.GetOperatedGroup():GetFirst() + Duel.ConfirmCards(1-tp,tc) + if tc:IsSetCard(0xa9) and tc:IsType(TYPE_MONSTER) then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.GetMatchingGroup(c70245411.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(70245411,2)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=g:Select(tp,1,1,nil) + Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) + end + else + Duel.BreakEffect() + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_DISCARD) + end + Duel.ShuffleHand(tp) +end +function c70245411.filter(c) + return (c:IsCode(30068120) or (c:IsSetCard(0xa9) and c:IsType(TYPE_MONSTER))) and c:IsAbleToHand() +end +function c70245411.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c70245411.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c70245411.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c70245411.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c7025445.lua b/script/c7025445.lua index edfa27ae..b1e2763f 100644 --- a/script/c7025445.lua +++ b/script/c7025445.lua @@ -1,76 +1,76 @@ ---パワー・ジャイアント -function c7025445.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c7025445.spcon) - e1:SetOperation(c7025445.spop) - e1:SetValue(1) - c:RegisterEffect(e1) - --level change - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c7025445.lvcon) - e2:SetOperation(c7025445.lvop) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) - --dam reduce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetOperation(c7025445.damop) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_BE_BATTLE_TARGET) - e4:SetOperation(c7025445.damop) - c:RegisterEffect(e4) -end -function c7025445.cfilter(c) - return c:IsLevelBelow(4) and c:IsAbleToGraveAsCost() -end -function c7025445.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c7025445.cfilter,c:GetControler(),LOCATION_HAND,0,1,c) -end -function c7025445.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c7025445.cfilter,tp,LOCATION_HAND,0,1,1,c) - Duel.SendtoGrave(g,REASON_COST) - e:SetLabel(g:GetFirst():GetLevel()) -end -function c7025445.lvcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c7025445.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(-e:GetLabelObject():GetLabel()) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c7025445.damop(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(c7025445.damval) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e2,tp) -end -function c7025445.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 - else return val end -end +--パワー・ジャイアント +function c7025445.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c7025445.spcon) + e1:SetOperation(c7025445.spop) + e1:SetValue(1) + c:RegisterEffect(e1) + --level change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c7025445.lvcon) + e2:SetOperation(c7025445.lvop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --dam reduce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c7025445.damop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_BE_BATTLE_TARGET) + e4:SetOperation(c7025445.damop) + c:RegisterEffect(e4) +end +function c7025445.cfilter(c) + return c:IsLevelBelow(4) and c:IsAbleToGraveAsCost() +end +function c7025445.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c7025445.cfilter,c:GetControler(),LOCATION_HAND,0,1,c) +end +function c7025445.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c7025445.cfilter,tp,LOCATION_HAND,0,1,1,c) + Duel.SendtoGrave(g,REASON_COST) + e:SetLabel(g:GetFirst():GetLevel()) +end +function c7025445.lvcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c7025445.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-e:GetLabelObject():GetLabel()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c7025445.damop(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(c7025445.damval) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) +end +function c7025445.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end diff --git a/script/c70284332.lua b/script/c70284332.lua index 8d8eedfd..0a306a8b 100644 --- a/script/c70284332.lua +++ b/script/c70284332.lua @@ -1,70 +1,70 @@ ---調律師の陰謀 -function c70284332.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_CONTROL) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c70284332.target) - e1:SetOperation(c70284332.operation) - c:RegisterEffect(e1) - --Destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetCondition(c70284332.descon) - e2:SetOperation(c70284332.desop) - c:RegisterEffect(e2) -end -function c70284332.filter(c,e,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeEffectTarget(e) and c:IsControlerCanBeChanged() -end -function c70284332.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return eg:IsContains(chkc) and c70284332.filter(chkc,e,1-tp) end - if chk==0 then return eg:IsExists(c70284332.filter,1,nil,e,1-tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=eg:FilterSelect(tp,c70284332.filter,1,1,nil,e,1-tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) -end -function c70284332.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - c:SetCardTarget(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_CONTROL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_OWNER_RELATE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(tp) - e1:SetReset(RESET_EVENT+0x1fc0000) - e1:SetCondition(c70284332.con) - tc:RegisterEffect(e1) - --redirect - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e2:SetCondition(c70284332.dircon) - e2:SetValue(LOCATION_REMOVED) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - end -end -function c70284332.con(e) - local c=e:GetOwner() - local h=e:GetHandler() - return c:IsHasCardTarget(h) -end -function c70284332.dircon(e) - return e:GetHandler():IsReason(REASON_DESTROY) -end -function c70284332.descon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - return tc and eg:IsContains(tc) -end -function c70284332.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--調律師の陰謀 +function c70284332.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c70284332.target) + e1:SetOperation(c70284332.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c70284332.descon) + e2:SetOperation(c70284332.desop) + c:RegisterEffect(e2) +end +function c70284332.filter(c,e,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeEffectTarget(e) and c:IsControlerCanBeChanged() +end +function c70284332.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) and c70284332.filter(chkc,e,1-tp) end + if chk==0 then return eg:IsExists(c70284332.filter,1,nil,e,1-tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=eg:FilterSelect(tp,c70284332.filter,1,1,nil,e,1-tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c70284332.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_OWNER_RELATE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(tp) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetCondition(c70284332.con) + tc:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e2:SetCondition(c70284332.dircon) + e2:SetValue(LOCATION_REMOVED) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end +function c70284332.con(e) + local c=e:GetOwner() + local h=e:GetHandler() + return c:IsHasCardTarget(h) +end +function c70284332.dircon(e) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c70284332.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c70284332.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c70344351.lua b/script/c70344351.lua index 87d88670..d9234b3a 100644 --- a/script/c70344351.lua +++ b/script/c70344351.lua @@ -25,8 +25,7 @@ function c70344351.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c70344351.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c70422863.lua b/script/c70422863.lua index e3b3009f..1447ee76 100644 --- a/script/c70422863.lua +++ b/script/c70422863.lua @@ -1,51 +1,51 @@ ---星守る結界 -function c70422863.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk/def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c70422863.atktg) - e2:SetValue(c70422863.atkval) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --negate - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetRange(LOCATION_FZONE) - e4:SetCode(EVENT_BE_BATTLE_TARGET) - e4:SetCondition(c70422863.negcon) - e4:SetCost(c70422863.negcost) - e4:SetOperation(c70422863.negop) - c:RegisterEffect(e4) -end -function c70422863.atktg(e,c) - return c:IsType(TYPE_XYZ) and c:IsSetCard(0x9c) -end -function c70422863.atkval(e,c) - return c:GetOverlayCount()*200 -end -function c70422863.negcon(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - return tc:IsFaceup() and tc:IsType(TYPE_XYZ) and tc:IsSetCard(0x9c) - and tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE) -end -function c70422863.cfilter(c) - return c:IsSetCard(0x9c) and c:IsAbleToGraveAsCost() -end -function c70422863.negcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c70422863.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c70422863.cfilter,1,1,REASON_COST) -end -function c70422863.negop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.NegateAttack() -end +--星守る結界 +function c70422863.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk/def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c70422863.atktg) + e2:SetValue(c70422863.atkval) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --negate + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(EVENT_BE_BATTLE_TARGET) + e4:SetCondition(c70422863.negcon) + e4:SetCost(c70422863.negcost) + e4:SetOperation(c70422863.negop) + c:RegisterEffect(e4) +end +function c70422863.atktg(e,c) + return c:IsType(TYPE_XYZ) and c:IsSetCard(0x9c) +end +function c70422863.atkval(e,c) + return c:GetOverlayCount()*200 +end +function c70422863.negcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsFaceup() and tc:IsType(TYPE_XYZ) and tc:IsSetCard(0x9c) + and tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE) +end +function c70422863.cfilter(c) + return c:IsSetCard(0x9c) and c:IsAbleToGraveAsCost() +end +function c70422863.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c70422863.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c70422863.cfilter,1,1,REASON_COST) +end +function c70422863.negop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.NegateAttack() +end diff --git a/script/c70423794.lua b/script/c70423794.lua index b7598250..e257cb29 100644 --- a/script/c70423794.lua +++ b/script/c70423794.lua @@ -1,14 +1,6 @@ --D・コード function c70423794.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(c70423794.target) - e1:SetOperation(c70423794.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x26)) --destroy local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) @@ -21,33 +13,6 @@ function c70423794.initial_effect(c) e2:SetTarget(c70423794.destg) e2:SetOperation(c70423794.desop) 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(c70423794.eqlimit) - c:RegisterEffect(e3) -end -function c70423794.eqlimit(e,c) - return c:IsSetCard(0x26) -end -function c70423794.filter(c) - return c:IsFaceup() and c:IsSetCard(0x26) -end -function c70423794.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c70423794.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c70423794.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c70423794.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c70423794.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 c70423794.descon(e,tp,eg,ep,ev,re,r,rp) local tg=e:GetHandler():GetEquipTarget() diff --git a/script/c70456282.lua b/script/c70456282.lua index a2cb8796..a4c87a02 100644 --- a/script/c70456282.lua +++ b/script/c70456282.lua @@ -1,67 +1,67 @@ ---A BF-霧雨のクナイ -function c70456282.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c70456282.spcon) - e1:SetOperation(c70456282.spop) - c:RegisterEffect(e1) - --lv change - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c70456282.lvtg) - e2:SetOperation(c70456282.lvop) - c:RegisterEffect(e2) -end -function c70456282.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.CheckReleaseGroup(c:GetControler(),Card.IsSetCard,1,nil,0x33) -end -function c70456282.spop(e,tp,eg,ep,ev,re,r,rp,c) - local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x33) - Duel.Release(g,REASON_COST) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_ADD_TYPE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(TYPE_TUNER) - e1:SetReset(RESET_EVENT+0xfe0000) - c:RegisterEffect(e1) -end -function c70456282.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:GetLevel()>0 -end -function c70456282.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c70456282.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c70456282.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c70456282.filter,tp,LOCATION_MZONE,0,1,1,nil) - local t={} - local i=1 - local p=1 - local lv=g:GetFirst():GetLevel() - for i=1,8 do - if lv~=i then t[p]=i p=p+1 end - end - t[p]=nil - Duel.Hint(HINT_SELECTMSG,tp,567) - e:SetLabel(Duel.AnnounceNumber(tp,table.unpack(t))) -end -function c70456282.lvop(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_CHANGE_LEVEL) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--A BF-霧雨のクナイ +function c70456282.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c70456282.spcon) + e1:SetOperation(c70456282.spop) + c:RegisterEffect(e1) + --lv change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c70456282.lvtg) + e2:SetOperation(c70456282.lvop) + c:RegisterEffect(e2) +end +function c70456282.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(c:GetControler(),Card.IsSetCard,1,nil,0x33) +end +function c70456282.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,nil,0x33) + Duel.Release(g,REASON_COST) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(TYPE_TUNER) + e1:SetReset(RESET_EVENT+0xfe0000) + c:RegisterEffect(e1) +end +function c70456282.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:GetLevel()>0 +end +function c70456282.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c70456282.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c70456282.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c70456282.filter,tp,LOCATION_MZONE,0,1,1,nil) + local t={} + local i=1 + local p=1 + local lv=g:GetFirst():GetLevel() + for i=1,8 do + if lv~=i then t[p]=i p=p+1 end + end + t[p]=nil + Duel.Hint(HINT_SELECTMSG,tp,567) + e:SetLabel(Duel.AnnounceNumber(tp,table.unpack(t))) +end +function c70456282.lvop(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_CHANGE_LEVEL) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c70458081.lua b/script/c70458081.lua index b29597a2..a844a637 100644 --- a/script/c70458081.lua +++ b/script/c70458081.lua @@ -1,37 +1,37 @@ ---EMジンライノ -function c70458081.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c70458081.atlimit) - c:RegisterEffect(e1) - --destroy replace - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_GRAVE) - e2:SetTarget(c70458081.reptg) - e2:SetValue(c70458081.repval) - e2:SetOperation(c70458081.repop) - c:RegisterEffect(e2) -end -function c70458081.atlimit(e,c) - return c:IsFaceup() and c:IsSetCard(0x9f) and c~=e:GetHandler() -end -function c70458081.repfilter(c,tp) - return c:IsFaceup() and c:IsSetCard(0x9f) and not c:IsCode(70458081) - and c:IsOnField() and c:IsControler(tp) and c:IsReason(REASON_EFFECT+REASON_BATTLE) -end -function c70458081.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemove() and eg:IsExists(c70458081.repfilter,1,nil,tp) end - return Duel.SelectYesNo(tp,aux.Stringid(70458081,0)) -end -function c70458081.repval(e,c) - return c70458081.repfilter(c,e:GetHandlerPlayer()) -end -function c70458081.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) -end +--EMジンライノ +function c70458081.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c70458081.atlimit) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_GRAVE) + e2:SetTarget(c70458081.reptg) + e2:SetValue(c70458081.repval) + e2:SetOperation(c70458081.repop) + c:RegisterEffect(e2) +end +function c70458081.atlimit(e,c) + return c:IsFaceup() and c:IsSetCard(0x9f) and c~=e:GetHandler() +end +function c70458081.repfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x9f) and not c:IsCode(70458081) + and c:IsOnField() and c:IsControler(tp) and c:IsReason(REASON_EFFECT+REASON_BATTLE) +end +function c70458081.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() and eg:IsExists(c70458081.repfilter,1,nil,tp) end + return Duel.SelectYesNo(tp,aux.Stringid(70458081,0)) +end +function c70458081.repval(e,c) + return c70458081.repfilter(c,e:GetHandlerPlayer()) +end +function c70458081.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c70479321.lua b/script/c70479321.lua index 254cdca8..beae9197 100644 --- a/script/c70479321.lua +++ b/script/c70479321.lua @@ -1,94 +1,94 @@ ---EMドラミング・コング -function c70479321.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetCondition(c70479321.atkcon) - e2:SetTarget(c70479321.atktg) - e2:SetOperation(c70479321.atkop) - c:RegisterEffect(e2) - --summon with no tribute - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(70479321,0)) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SUMMON_PROC) - e3:SetCondition(c70479321.ntcon) - c:RegisterEffect(e3) - --change level - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_SUMMON_COST) - e4:SetOperation(c70479321.lvop) - c:RegisterEffect(e4) - --atk - local e5=e2:Clone() - e5:SetRange(LOCATION_MZONE) - e5:SetOperation(c70479321.atkop2) - c:RegisterEffect(e5) -end -function c70479321.atkcon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if d and a:GetControler()~=d:GetControler() then - if a:IsControler(tp) then e:SetLabelObject(a) - else e:SetLabelObject(d) end - return true - else return false end -end -function c70479321.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local tc=e:GetLabelObject() - if chkc then return chkc==tc end - if chk==0 then return tc:IsOnField() and tc:IsCanBeEffectTarget(e) end - Duel.SetTargetCard(tc) -end -function c70479321.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(600) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - tc:RegisterEffect(e1) - end -end -function c70479321.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,LOCATION_MZONE)==0 -end -function c70479321.lvcon(e) - return e:GetHandler():GetMaterialCount()==0 -end -function c70479321.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c70479321.lvcon) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) -end -function c70479321.atkop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(600) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - tc:RegisterEffect(e1) - end -end +--EMドラミング・コング +function c70479321.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c70479321.atkcon) + e2:SetTarget(c70479321.atktg) + e2:SetOperation(c70479321.atkop) + c:RegisterEffect(e2) + --summon with no tribute + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(70479321,0)) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SUMMON_PROC) + e3:SetCondition(c70479321.ntcon) + c:RegisterEffect(e3) + --change level + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SUMMON_COST) + e4:SetOperation(c70479321.lvop) + c:RegisterEffect(e4) + --atk + local e5=e2:Clone() + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c70479321.atkop2) + c:RegisterEffect(e5) +end +function c70479321.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if d and a:GetControler()~=d:GetControler() then + if a:IsControler(tp) then e:SetLabelObject(a) + else e:SetLabelObject(d) end + return true + else return false end +end +function c70479321.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetLabelObject() + if chkc then return chkc==tc end + if chk==0 then return tc:IsOnField() and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) +end +function c70479321.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + end +end +function c70479321.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,LOCATION_MZONE)==0 +end +function c70479321.lvcon(e) + return e:GetHandler():GetMaterialCount()==0 +end +function c70479321.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c70479321.lvcon) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) +end +function c70479321.atkop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + end +end diff --git a/script/c70560957.lua b/script/c70560957.lua index bff76a0a..caef8958 100644 --- a/script/c70560957.lua +++ b/script/c70560957.lua @@ -1,36 +1,36 @@ ---トゥーン・ロールバック -function c70560957.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c70560957.condition) - e1:SetTarget(c70560957.target) - e1:SetOperation(c70560957.activate) - c:RegisterEffect(e1) -end -function c70560957.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c70560957.filter(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) -end -function c70560957.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c70560957.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c70560957.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c70560957.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c70560957.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--トゥーン・ロールバック +function c70560957.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c70560957.condition) + e1:SetTarget(c70560957.target) + e1:SetOperation(c70560957.activate) + c:RegisterEffect(e1) +end +function c70560957.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c70560957.filter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) +end +function c70560957.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c70560957.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c70560957.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c70560957.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c70560957.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c70583986.lua b/script/c70583986.lua index 2ea7413c..60e71ce5 100644 --- a/script/c70583986.lua +++ b/script/c70583986.lua @@ -1,46 +1,46 @@ ---氷結界の虎王ドゥローレン -function c70583986.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsAttribute,ATTRIBUTE_WATER),1) - c:EnableReviveLimit() - --to hand, atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(70583986,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c70583986.target) - e1:SetOperation(c70583986.operation) - c:RegisterEffect(e1) -end -function c70583986.filter(c) - return c:IsFaceup() and c:IsAbleToHand() -end -function c70583986.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c70583986.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c70583986.filter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c70583986.filter,tp,LOCATION_ONFIELD,0,1,12,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c70583986.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local rg=tg:Filter(Card.IsRelateToEffect,nil,e) - Duel.SendtoHand(rg,nil,REASON_EFFECT) - if c:IsRelateToEffect(e) and c:IsFaceup() then - Duel.BreakEffect() - local og=Duel.GetOperatedGroup() - local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_HAND) - if ct>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - e1:SetValue(ct*500) - c:RegisterEffect(e1) - end - end -end +--氷結界の虎王ドゥローレン +function c70583986.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsAttribute,ATTRIBUTE_WATER),1) + c:EnableReviveLimit() + --to hand, atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70583986,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c70583986.target) + e1:SetOperation(c70583986.operation) + c:RegisterEffect(e1) +end +function c70583986.filter(c) + return c:IsFaceup() and c:IsAbleToHand() +end +function c70583986.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c70583986.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c70583986.filter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c70583986.filter,tp,LOCATION_ONFIELD,0,1,12,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c70583986.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local rg=tg:Filter(Card.IsRelateToEffect,nil,e) + Duel.SendtoHand(rg,nil,REASON_EFFECT) + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.BreakEffect() + local og=Duel.GetOperatedGroup() + local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_HAND) + if ct>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e1:SetValue(ct*500) + c:RegisterEffect(e1) + end + end +end diff --git a/script/c70595331.lua b/script/c70595331.lua index d170675b..e0db6aae 100644 --- a/script/c70595331.lua +++ b/script/c70595331.lua @@ -30,10 +30,10 @@ end function c70595331.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,c70595331.filter,tp,LOCATION_GRAVE+LOCATION_HAND,LOCATION_GRAVE,1,1,nil,e,tp) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c70595331.filter),tp,LOCATION_GRAVE+LOCATION_HAND,LOCATION_GRAVE,1,1,nil,e,tp) local c=e:GetHandler() local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end if c:IsFaceup() and c:IsRelateToEffect(e) then c:SetCardTarget(tc) end end diff --git a/script/c70624184.lua b/script/c70624184.lua index 5cc8491a..32c9a3ed 100644 --- a/script/c70624184.lua +++ b/script/c70624184.lua @@ -26,7 +26,6 @@ end function c70624184.spop(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,c70624184.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c70624184.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) end diff --git a/script/c70676581.lua b/script/c70676581.lua index ec1a23b4..3cfa9153 100644 --- a/script/c70676581.lua +++ b/script/c70676581.lua @@ -54,8 +54,7 @@ function c70676581.disop(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if not g or g:GetCount()==0 then return end if g:IsExists(c70676581.disfilter,1,nil,tp) then - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(re:GetHandler(),REASON_EFFECT) end end diff --git a/script/c70780151.lua b/script/c70780151.lua index 19c86a12..540dd723 100644 --- a/script/c70780151.lua +++ b/script/c70780151.lua @@ -67,8 +67,7 @@ end function c70780151.disop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c70861343.lua b/script/c70861343.lua index b704fc04..f15642b0 100644 --- a/script/c70861343.lua +++ b/script/c70861343.lua @@ -1,52 +1,52 @@ ---忍法 変化の術 -function c70861343.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetTarget(c70861343.target) - e1:SetOperation(c70861343.operation) - c:RegisterEffect(e1) - --Destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetOperation(c70861343.desop) - c:RegisterEffect(e2) -end -function c70861343.cfilter(c,e,tp) - local lv=c:GetLevel() - return c:IsFaceup() and lv>0 and c:IsSetCard(0x2b) - and Duel.IsExistingMatchingCard(c70861343.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,lv+3,e,tp) -end -function c70861343.filter(c,lv,e,tp) - return c:IsLevelBelow(lv) and c:IsRace(RACE_BEAST+RACE_WINDBEAST+RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c70861343.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.CheckReleaseGroup(tp,c70861343.cfilter,1,nil,e,tp) end - local rg=Duel.SelectReleaseGroup(tp,c70861343.cfilter,1,1,nil,e,tp) - e:SetLabel(rg:GetFirst():GetLevel()+3) - Duel.Release(rg,REASON_COST) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c70861343.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c70861343.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e:GetLabel(),e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - c:SetCardTarget(tc) - Duel.SpecialSummonComplete() - end -end -function c70861343.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - if tc and tc:IsLocation(LOCATION_MZONE) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--忍法 変化の術 +function c70861343.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetTarget(c70861343.target) + e1:SetOperation(c70861343.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetOperation(c70861343.desop) + c:RegisterEffect(e2) +end +function c70861343.cfilter(c,e,tp) + local lv=c:GetLevel() + return c:IsFaceup() and lv>0 and c:IsSetCard(0x2b) + and Duel.IsExistingMatchingCard(c70861343.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,lv+3,e,tp) +end +function c70861343.filter(c,lv,e,tp) + return c:IsLevelBelow(lv) and c:IsRace(RACE_BEAST+RACE_WINDBEAST+RACE_INSECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c70861343.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c70861343.cfilter,1,nil,e,tp) end + local rg=Duel.SelectReleaseGroup(tp,c70861343.cfilter,1,1,nil,e,tp) + e:SetLabel(rg:GetFirst():GetLevel()+3) + Duel.Release(rg,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c70861343.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c70861343.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e:GetLabel(),e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + c:SetCardTarget(tc) + Duel.SpecialSummonComplete() + end +end +function c70861343.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c70865988.lua b/script/c70865988.lua index 34d1c69e..6e10909c 100644 --- a/script/c70865988.lua +++ b/script/c70865988.lua @@ -1,28 +1,28 @@ ---全弾発射 -function c70865988.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c70865988.target) - e1:SetOperation(c70865988.activate) - c:RegisterEffect(e1) -end -function c70865988.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 end - Duel.SetTargetPlayer(1-tp) - local dam=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)*200 - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c70865988.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - if Duel.SendtoGrave(g,REASON_EFFECT)>0 then - local og=Duel.GetOperatedGroup() - local dam=og:FilterCount(Card.IsLocation,nil,LOCATION_GRAVE)*200 - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - Duel.Damage(p,dam,REASON_EFFECT) - end -end +--全弾発射 +function c70865988.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c70865988.target) + e1:SetOperation(c70865988.activate) + c:RegisterEffect(e1) +end +function c70865988.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 end + Duel.SetTargetPlayer(1-tp) + local dam=Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)*200 + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c70865988.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if Duel.SendtoGrave(g,REASON_EFFECT)>0 then + local og=Duel.GetOperatedGroup() + local dam=og:FilterCount(Card.IsLocation,nil,LOCATION_GRAVE)*200 + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,dam,REASON_EFFECT) + end +end diff --git a/script/c70875955.lua b/script/c70875955.lua index a6a843fa..ee901bef 100644 --- a/script/c70875955.lua +++ b/script/c70875955.lua @@ -1,73 +1,73 @@ ---空中補給 -function c70875955.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c70875955.sptg1) - e1:SetOperation(c70875955.spop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetDescription(aux.Stringid(70875955,0)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetHintTiming(0,TIMING_END_PHASE) - e2:SetTarget(c70875955.sptg2) - e2:SetOperation(c70875955.spop) - e2:SetLabel(1) - c:RegisterEffect(e2) - --cost - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(70875955,2)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetCountLimit(1) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetOperation(c70875955.mtop) - c:RegisterEffect(e3) -end -function c70875955.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) - and Duel.SelectYesNo(tp,94) then - e:SetCategory(CATEGORY_SPECIAL_SUMMON) - e:SetLabel(1) - e:GetHandler():RegisterFlagEffect(70875955,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(70875955,3)) - else - e:SetCategory(0) - e:SetLabel(0) - end -end -function c70875955.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(70875955)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) - e:GetHandler():RegisterFlagEffect(70875955,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c70875955.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if e:GetLabel()==0 or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then - local token=Duel.CreateToken(tp,70875956) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) - end -end -function c70875955.rfilter(c) - return c:IsType(TYPE_TOKEN) or c:IsSetCard(0x101b) -end -function c70875955.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckReleaseGroup(tp,c70875955.rfilter,1,nil) - and Duel.SelectYesNo(tp,aux.Stringid(70875955,2)) then - local g=Duel.SelectReleaseGroup(tp,c70875955.rfilter,1,1,nil) - Duel.Release(g,REASON_RULE) - else - Duel.SendtoGrave(e:GetHandler(),REASON_RULE) - end -end +--空中補給 +function c70875955.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c70875955.sptg1) + e1:SetOperation(c70875955.spop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetDescription(aux.Stringid(70875955,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetTarget(c70875955.sptg2) + e2:SetOperation(c70875955.spop) + e2:SetLabel(1) + c:RegisterEffect(e2) + --cost + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(70875955,2)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetOperation(c70875955.mtop) + c:RegisterEffect(e3) +end +function c70875955.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + e:SetLabel(1) + e:GetHandler():RegisterFlagEffect(70875955,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(70875955,3)) + else + e:SetCategory(0) + e:SetLabel(0) + end +end +function c70875955.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(70875955)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) + e:GetHandler():RegisterFlagEffect(70875955,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c70875955.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if e:GetLabel()==0 or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then + local token=Duel.CreateToken(tp,70875956) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end +function c70875955.rfilter(c) + return c:IsType(TYPE_TOKEN) or c:IsSetCard(0x101b) +end +function c70875955.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckReleaseGroup(tp,c70875955.rfilter,1,nil) + and Duel.SelectYesNo(tp,aux.Stringid(70875955,2)) then + local g=Duel.SelectReleaseGroup(tp,c70875955.rfilter,1,1,nil) + Duel.Release(g,REASON_RULE) + else + Duel.SendtoGrave(e:GetHandler(),REASON_RULE) + end +end diff --git a/script/c70899775.lua b/script/c70899775.lua index 7418b710..316fa7d7 100644 --- a/script/c70899775.lua +++ b/script/c70899775.lua @@ -1,47 +1,47 @@ ---ピアニッシモ -function c70899775.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c70899775.condition) - e1:SetTarget(c70899775.target) - e1:SetOperation(c70899775.activate) - c:RegisterEffect(e1) -end -function c70899775.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c70899775.filter(c) - return c:IsFaceup() and c:GetFlagEffect(70899775)==0 -end -function c70899775.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c70899775.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c70899775.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c70899775.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c70899775.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsType(TYPE_MONSTER) and tc:GetFlagEffect(70899775)==0 then - tc:RegisterFlagEffect(70899775,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_BASE_ATTACK) - e1:SetValue(100) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - tc:RegisterEffect(e3) - end -end +--ピアニッシモ +function c70899775.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c70899775.condition) + e1:SetTarget(c70899775.target) + e1:SetOperation(c70899775.activate) + c:RegisterEffect(e1) +end +function c70899775.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c70899775.filter(c) + return c:IsFaceup() and c:GetFlagEffect(70899775)==0 +end +function c70899775.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c70899775.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c70899775.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c70899775.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c70899775.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsType(TYPE_MONSTER) and tc:GetFlagEffect(70899775)==0 then + tc:RegisterFlagEffect(70899775,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e3) + end +end diff --git a/script/c70902743.lua b/script/c70902743.lua index 3a9f2ae7..6ba47362 100644 --- a/script/c70902743.lua +++ b/script/c70902743.lua @@ -1,89 +1,89 @@ ---レッド・デーモンズ・ドラゴン -function c70902743.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --destroy1 - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(70902743,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLED) - e1:SetCondition(c70902743.condition1) - e1:SetTarget(c70902743.target1) - e1:SetOperation(c70902743.operation1) - c:RegisterEffect(e1) - --destroy2 - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(70902743,1)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetCondition(c70902743.condition2) - e2:SetTarget(c70902743.target2) - e2:SetOperation(c70902743.operation2) - c:RegisterEffect(e2) - if not c70902743.global_check then - c70902743.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_ATTACK_ANNOUNCE) - ge1:SetOperation(c70902743.check) - Duel.RegisterEffect(ge1,0) - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_ATTACK_DISABLED) - ge2:SetOperation(c70902743.check2) - Duel.RegisterEffect(ge2,0) - end -end -function c70902743.check(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local ct=tc:GetFlagEffectLabel(70902743) - if ct then - tc:SetFlagEffectLabel(70902743,ct+1) - else - tc:RegisterFlagEffect(70902743,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,1) - end -end -function c70902743.check2(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local ct=tc:GetFlagEffectLabel(70902743) - if ct then - tc:SetFlagEffectLabel(70902743,ct-1) - end -end -function c70902743.condition1(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget() and not Duel.GetAttackTarget():IsAttackPos() -end -function c70902743.filter1(c) - return not c:IsAttackPos() -end -function c70902743.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c70902743.filter1,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c70902743.operation1(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c70902743.filter1,tp,0,LOCATION_MZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end -function c70902743.filter2(c) - local ct=c:GetFlagEffectLabel(70902743) - return (not ct or ct==0) -end -function c70902743.condition2(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c70902743.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c70902743.filter2,tp,LOCATION_MZONE,0,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c70902743.operation2(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end - local g=Duel.GetMatchingGroup(c70902743.filter2,tp,LOCATION_MZONE,0,e:GetHandler()) - Duel.Destroy(g,REASON_EFFECT) -end +--レッド・デーモンズ・ドラゴン +function c70902743.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --destroy1 + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70902743,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c70902743.condition1) + e1:SetTarget(c70902743.target1) + e1:SetOperation(c70902743.operation1) + c:RegisterEffect(e1) + --destroy2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(70902743,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCondition(c70902743.condition2) + e2:SetTarget(c70902743.target2) + e2:SetOperation(c70902743.operation2) + c:RegisterEffect(e2) + if not c70902743.global_check then + c70902743.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ATTACK_ANNOUNCE) + ge1:SetOperation(c70902743.check) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ATTACK_DISABLED) + ge2:SetOperation(c70902743.check2) + Duel.RegisterEffect(ge2,0) + end +end +function c70902743.check(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(70902743) + if ct then + tc:SetFlagEffectLabel(70902743,ct+1) + else + tc:RegisterFlagEffect(70902743,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,1) + end +end +function c70902743.check2(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(70902743) + if ct then + tc:SetFlagEffectLabel(70902743,ct-1) + end +end +function c70902743.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget() and not Duel.GetAttackTarget():IsAttackPos() +end +function c70902743.filter1(c) + return not c:IsAttackPos() +end +function c70902743.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c70902743.filter1,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c70902743.operation1(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c70902743.filter1,tp,0,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end +function c70902743.filter2(c) + local ct=c:GetFlagEffectLabel(70902743) + return (not ct or ct==0) +end +function c70902743.condition2(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c70902743.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c70902743.filter2,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c70902743.operation2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + local g=Duel.GetMatchingGroup(c70902743.filter2,tp,LOCATION_MZONE,0,e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c70913714.lua b/script/c70913714.lua index a3413b02..d298a222 100644 --- a/script/c70913714.lua +++ b/script/c70913714.lua @@ -1,82 +1,82 @@ ---古神ハストール -function c70913714.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(70913714,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c70913714.eqcon) - e1:SetTarget(c70913714.eqtg) - e1:SetOperation(c70913714.eqop) - c:RegisterEffect(e1) -end -function c70913714.eqcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_MZONE) -end -function c70913714.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c70913714.eqlimit(e,c) - return e:GetOwner()==c -end -function c70913714.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc,true) - --Add Equip limit - local e1=Effect.CreateEffect(tc) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c70913714.eqlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_DISABLE) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_CANNOT_ATTACK) - c:RegisterEffect(e3) - --control - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(70913714,1)) - e4:SetCategory(CATEGORY_CONTROL) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c70913714.ctcon) - e4:SetTarget(c70913714.cttg) - e4:SetOperation(c70913714.ctop) - e4:SetReset(RESET_EVENT+0x1020000) - c:RegisterEffect(e4) - end -end -function c70913714.ctcon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsReason(REASON_LOST_TARGET) -end -function c70913714.cttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local ec=e:GetHandler():GetPreviousEquipTarget() - if ec:IsLocation(LOCATION_MZONE) and ec:IsControlerCanBeChanged() then - Duel.SetTargetCard(ec) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,ec,1,0,0) - end -end -function c70913714.ctop(e,tp,eg,ep,ev,re,r,rp) - local ec=Duel.GetFirstTarget() - if ec and ec:IsRelateToEffect(e) then - Duel.GetControl(ec,tp) - end -end +--古神ハストール +function c70913714.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70913714,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c70913714.eqcon) + e1:SetTarget(c70913714.eqtg) + e1:SetOperation(c70913714.eqop) + c:RegisterEffect(e1) +end +function c70913714.eqcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_MZONE) +end +function c70913714.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c70913714.eqlimit(e,c) + return e:GetOwner()==c +end +function c70913714.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc,true) + --Add Equip limit + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c70913714.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e3) + --control + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(70913714,1)) + e4:SetCategory(CATEGORY_CONTROL) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c70913714.ctcon) + e4:SetTarget(c70913714.cttg) + e4:SetOperation(c70913714.ctop) + e4:SetReset(RESET_EVENT+0x1020000) + c:RegisterEffect(e4) + end +end +function c70913714.ctcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsReason(REASON_LOST_TARGET) +end +function c70913714.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ec=e:GetHandler():GetPreviousEquipTarget() + if ec:IsLocation(LOCATION_MZONE) and ec:IsControlerCanBeChanged() then + Duel.SetTargetCard(ec) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,ec,1,0,0) + end +end +function c70913714.ctop(e,tp,eg,ep,ev,re,r,rp) + local ec=Duel.GetFirstTarget() + if ec and ec:IsRelateToEffect(e) then + Duel.GetControl(ec,tp) + end +end diff --git a/script/c7093411.lua b/script/c7093411.lua index 00c2d0d4..10531101 100644 --- a/script/c7093411.lua +++ b/script/c7093411.lua @@ -49,9 +49,9 @@ end function c7093411.operation(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) - local g=Duel.SelectMatchingCard(tp,c7093411.filter,tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c7093411.filter),tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetCode(EFFECT_CHANGE_TYPE) diff --git a/script/c70939418.lua b/script/c70939418.lua new file mode 100644 index 00000000..5cfadffa --- /dev/null +++ b/script/c70939418.lua @@ -0,0 +1,101 @@ +--SR-OMKガム +function c70939418.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(70939418,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_DAMAGE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c70939418.spcon) + e1:SetTarget(c70939418.sptg) + e1:SetOperation(c70939418.spop) + c:RegisterEffect(e1) + --synchro summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(70939418,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetHintTiming(TIMING_BATTLE_STEP_END+TIMING_BATTLE_END) + e2:SetCondition(c70939418.sccon) + e2:SetTarget(c70939418.sctg) + e2:SetOperation(c70939418.scop) + c:RegisterEffect(e2) + --deckdes + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(70939418,2)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCondition(c70939418.ddcon) + e3:SetTarget(c70939418.ddtg) + e3:SetOperation(c70939418.ddop) + c:RegisterEffect(e3) +end +function c70939418.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE + and ep==tp and bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 +end +function c70939418.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c70939418.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + c:RegisterFlagEffect(70939418,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_BATTLE,0,1) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c70939418.sccon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(70939418)~=0 +end +function c70939418.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local c=e:GetHandler() + local mg=Duel.GetMatchingGroup(Card.IsAttribute,tp,LOCATION_MZONE,0,nil,ATTRIBUTE_WIND) + return not c:IsStatus(STATUS_CHAINING) + and Duel.IsExistingMatchingCard(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,1,nil,c,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c70939418.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetControler()~=tp or not c:IsRelateToEffect(e) then return end + local mg=Duel.GetMatchingGroup(Card.IsAttribute,tp,LOCATION_MZONE,0,nil,ATTRIBUTE_WIND) + local g=Duel.GetMatchingGroup(Card.IsSynchroSummonable,tp,LOCATION_EXTRA,0,nil,c,mg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SynchroSummon(tp,sg:GetFirst(),c,mg) + end +end +function c70939418.ddcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and r==REASON_SYNCHRO +end +function c70939418.ddtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1) +end +function c70939418.ddop(e,tp,eg,ep,ev,re,r,rp) + if Duel.DiscardDeck(tp,1,REASON_EFFECT)==0 then return end + local tc=Duel.GetOperatedGroup():GetFirst() + local c=e:GetHandler() + local sync=c:GetReasonCard() + if tc and tc:IsSetCard(0x2016) and tc:IsType(TYPE_MONSTER) and tc:IsLocation(LOCATION_GRAVE) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000) + sync:RegisterEffect(e1) + end +end diff --git a/script/c70969517.lua b/script/c70969517.lua index 39dc2163..78486d35 100644 --- a/script/c70969517.lua +++ b/script/c70969517.lua @@ -35,11 +35,11 @@ end function c70969517.otfilter(c,tp) return c:IsSetCard(0x1b) and (c:IsControler(tp) or c:IsFaceup()) end -function c70969517.otcon(e,c) +function c70969517.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c70969517.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c70969517.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c70969517.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c71007216.lua b/script/c71007216.lua new file mode 100644 index 00000000..0bcec20e --- /dev/null +++ b/script/c71007216.lua @@ -0,0 +1,43 @@ +--WW-グラス・ベル +function c71007216.initial_effect(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(71007216,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,71007216) + e1:SetTarget(c71007216.target) + e1:SetOperation(c71007216.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c71007216.filter(c) + return c:IsSetCard(0xf0) and c:IsType(TYPE_MONSTER) and not c:IsCode(71007216) and c:IsAbleToHand() +end +function c71007216.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c71007216.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c71007216.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c71007216.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetTargetRange(1,0) + e1:SetTarget(c71007216.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c71007216.splimit(e,c) + return not c:IsAttribute(ATTRIBUTE_WIND) +end diff --git a/script/c71039903.lua b/script/c71039903.lua index 2213e214..e6c7f125 100644 --- a/script/c71039903.lua +++ b/script/c71039903.lua @@ -3,6 +3,7 @@ function c71039903.initial_effect(c) --to grave local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c71039903.regop) c:RegisterEffect(e1) diff --git a/script/c71060915.lua b/script/c71060915.lua index ec2d3828..f197bb46 100644 --- a/script/c71060915.lua +++ b/script/c71060915.lua @@ -25,8 +25,7 @@ function c71060915.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c71060915.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c71068247.lua b/script/c71068247.lua index a67af0f6..7a79bc28 100644 --- a/script/c71068247.lua +++ b/script/c71068247.lua @@ -7,7 +7,7 @@ function c71068247.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(71068247,0)) e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_CHAINING) diff --git a/script/c71069715.lua b/script/c71069715.lua index 56126aa9..ce71d9cf 100644 --- a/script/c71069715.lua +++ b/script/c71069715.lua @@ -1,56 +1,56 @@ ---DDリビルド -function c71069715.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_ONFIELD,0) - e2:SetTarget(c71069715.indtg) - e2:SetValue(c71069715.indval) - c:RegisterEffect(e2) - --to deck - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(71069715,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_GRAVE) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetCost(c71069715.tdcost) - e3:SetTarget(c71069715.tdtg) - e3:SetOperation(c71069715.tdop) - c:RegisterEffect(e3) -end -function c71069715.indtg(e,c) - return c:IsSetCard(0xae) -end -function c71069715.indval(e,re,rp) - return rp~=e:GetHandlerPlayer() -end -function c71069715.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c71069715.tdfilter(c) - return c:IsFaceup() and c:IsSetCard(0xaf) and c:IsAbleToDeck() -end -function c71069715.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c71069715.tdfilter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c71069715.tdfilter,tp,LOCATION_REMOVED,0,1,e:GetHandler()) - and not e:GetHandler():IsStatus(STATUS_CHAINING) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c71069715.tdfilter,tp,LOCATION_REMOVED,0,1,3,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c71069715.tdop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - end -end +--DDリビルド +function c71069715.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_ONFIELD,0) + e2:SetTarget(c71069715.indtg) + e2:SetValue(c71069715.indval) + c:RegisterEffect(e2) + --to deck + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(71069715,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_GRAVE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCost(c71069715.tdcost) + e3:SetTarget(c71069715.tdtg) + e3:SetOperation(c71069715.tdop) + c:RegisterEffect(e3) +end +function c71069715.indtg(e,c) + return c:IsSetCard(0xae) +end +function c71069715.indval(e,re,rp) + return rp~=e:GetHandlerPlayer() +end +function c71069715.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c71069715.tdfilter(c) + return c:IsFaceup() and c:IsSetCard(0xaf) and c:IsAbleToDeck() +end +function c71069715.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c71069715.tdfilter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c71069715.tdfilter,tp,LOCATION_REMOVED,0,1,e:GetHandler()) + and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c71069715.tdfilter,tp,LOCATION_REMOVED,0,1,3,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c71069715.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + end +end diff --git a/script/c71071546.lua b/script/c71071546.lua index 299ed30c..33952f92 100644 --- a/script/c71071546.lua +++ b/script/c71071546.lua @@ -1,92 +1,96 @@ ---オービタル 7 -function c71071546.initial_effect(c) - c:EnableCounterPermit(0x2c) - --counter - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(71071546,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_FLIP) - e1:SetOperation(c71071546.ctop) - c:RegisterEffect(e1) - --atkchange - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetDescription(aux.Stringid(71071546,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c71071546.atkcost) - e2:SetOperation(c71071546.atkop) - c:RegisterEffect(e2) - --salvage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(71071546,2)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c71071546.thcost) - e3:SetTarget(c71071546.thtg) - e3:SetOperation(c71071546.thop) - c:RegisterEffect(e3) -end -function c71071546.ctop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - c:AddCounter(0x2c,1) - end -end -function c71071546.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - local ct=e:GetHandler():GetCounter(0x2c) - if chk==0 then return ct>0 and e:GetHandler():IsCanRemoveCounter(tp,0x2c,ct,REASON_COST) end - e:GetHandler():RemoveCounter(tp,0x2c,ct,REASON_COST) -end -function c71071546.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(2000) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e2:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetOperation(c71071546.tgop) - e3:SetReset(RESET_EVENT+0xc6e0000) - c:RegisterEffect(e3) - end -end -function c71071546.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) -end -function c71071546.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c71071546.filter(c) - return (c:IsSetCard(0x55) or c:IsSetCard(0x7b)) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c71071546.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c71071546.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c71071546.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectTarget(tp,c71071546.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c71071546.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--オービタル 7 +function c71071546.initial_effect(c) + c:EnableCounterPermit(0x2c) + --counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(71071546,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_FLIP) + e1:SetOperation(c71071546.ctop) + c:RegisterEffect(e1) + --atkchange + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetDescription(aux.Stringid(71071546,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c71071546.atkcost) + e2:SetTarget(c71071546.atktg) + e2:SetOperation(c71071546.atkop) + c:RegisterEffect(e2) + --salvage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(71071546,2)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c71071546.thcost) + e3:SetTarget(c71071546.thtg) + e3:SetOperation(c71071546.thop) + c:RegisterEffect(e3) +end +function c71071546.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + c:AddCounter(0x2c,1) + end +end +function c71071546.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=e:GetHandler():GetCounter(0x2c) + if chk==0 then return ct>0 and e:GetHandler():IsCanRemoveCounter(tp,0x2c,ct,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x2c,ct,REASON_COST) +end +function c71071546.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttack()~=2000 end +end +function c71071546.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(2000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetOperation(c71071546.tgop) + e3:SetReset(RESET_EVENT+0xc6e0000) + c:RegisterEffect(e3) + end +end +function c71071546.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) +end +function c71071546.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c71071546.filter(c) + return (c:IsSetCard(0x55) or c:IsSetCard(0x7b)) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c71071546.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c71071546.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c71071546.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c71071546.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c71071546.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c71203602.lua b/script/c71203602.lua index f4dd2345..06e03325 100644 --- a/script/c71203602.lua +++ b/script/c71203602.lua @@ -1,33 +1,33 @@ ---イビリチュア・リヴァイアニマ -function c71203602.initial_effect(c) - c:EnableReviveLimit() - --confirm - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(71203602,0)) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetTarget(c71203602.target) - e1:SetOperation(c71203602.operation) - c:RegisterEffect(e1) -end -function c71203602.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c71203602.operation(e,tp,eg,ep,ev,re,r,rp) - local ct=Duel.Draw(tp,1,REASON_EFFECT) - if ct==0 then return end - local tc=Duel.GetOperatedGroup():GetFirst() - Duel.ConfirmCards(1-tp,tc) - Duel.ShuffleHand(tp) - if tc:IsSetCard(0x3a) and tc:IsType(TYPE_MONSTER) then - Duel.BreakEffect() - local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) - if g:GetCount()>0 then - local sg=g:RandomSelect(tp,1) - Duel.ConfirmCards(tp,sg) - end - Duel.ShuffleHand(1-tp) - end -end +--イビリチュア・リヴァイアニマ +function c71203602.initial_effect(c) + c:EnableReviveLimit() + --confirm + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(71203602,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c71203602.target) + e1:SetOperation(c71203602.operation) + c:RegisterEffect(e1) +end +function c71203602.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c71203602.operation(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.Draw(tp,1,REASON_EFFECT) + if ct==0 then return end + local tc=Duel.GetOperatedGroup():GetFirst() + Duel.ConfirmCards(1-tp,tc) + Duel.ShuffleHand(tp) + if tc:IsSetCard(0x3a) and tc:IsType(TYPE_MONSTER) then + Duel.BreakEffect() + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + if g:GetCount()>0 then + local sg=g:RandomSelect(tp,1) + Duel.ConfirmCards(tp,sg) + end + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c71209500.lua b/script/c71209500.lua index 9e0ff340..d32d1e23 100644 --- a/script/c71209500.lua +++ b/script/c71209500.lua @@ -1,47 +1,47 @@ ---アマゾネス・スカウト -function c71209500.initial_effect(c) - --effects - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(71209500,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetCost(c71209500.efcost) - e1:SetTarget(c71209500.eftg) - e1:SetOperation(c71209500.efop) - c:RegisterEffect(e1) -end -function c71209500.efcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c71209500.filter(c) - return c:IsFaceup() and c:IsSetCard(0x4) -end -function c71209500.eftg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c71209500.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end -end -function c71209500.efop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c71209500.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e1:SetValue(c71209500.efilter) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - tc=g:GetNext() - end -end -function c71209500.efilter(e,re,rp) - return re:IsActiveType(TYPE_MONSTER) +--アマゾネス・スカウト +function c71209500.initial_effect(c) + --effects + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(71209500,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetCost(c71209500.efcost) + e1:SetTarget(c71209500.eftg) + e1:SetOperation(c71209500.efop) + c:RegisterEffect(e1) +end +function c71209500.efcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c71209500.filter(c) + return c:IsFaceup() and c:IsSetCard(0x4) +end +function c71209500.eftg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c71209500.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end +end +function c71209500.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c71209500.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetValue(c71209500.efilter) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c71209500.efilter(e,re,rp) + return re:IsActiveType(TYPE_MONSTER) end \ No newline at end of file diff --git a/script/c71233859.lua b/script/c71233859.lua index dfdc380f..9098c0c6 100644 --- a/script/c71233859.lua +++ b/script/c71233859.lua @@ -1,39 +1,39 @@ ---フォトン・ブースター -function c71233859.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c71233859.target) - e1:SetOperation(c71233859.activate) - c:RegisterEffect(e1) -end -function c71233859.filter(c) - return c:IsFaceup() and not c:IsType(TYPE_TOKEN) and c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_LIGHT) -end -function c71233859.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c71233859.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c71233859.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c71233859.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c71233859.afilter(c,code) - return c:IsFaceup() and c:IsCode(code) -end -function c71233859.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(c71233859.afilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tc:GetCode()) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(2000) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--フォトン・ブースター +function c71233859.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c71233859.target) + e1:SetOperation(c71233859.activate) + c:RegisterEffect(e1) +end +function c71233859.filter(c) + return c:IsFaceup() and not c:IsType(TYPE_TOKEN) and c:IsLevelBelow(4) and c:IsAttribute(ATTRIBUTE_LIGHT) +end +function c71233859.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c71233859.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c71233859.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c71233859.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c71233859.afilter(c,code) + return c:IsFaceup() and c:IsCode(code) +end +function c71233859.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c71233859.afilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tc:GetCode()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(2000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c712559.lua b/script/c712559.lua index 10a37bed..22716617 100644 --- a/script/c712559.lua +++ b/script/c712559.lua @@ -1,61 +1,61 @@ ---アマゾネスの里 -function c712559.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x4)) - e2:SetValue(200) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(712559,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e3:SetRange(LOCATION_FZONE) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1) - e3:SetCondition(c712559.condition) - e3:SetTarget(c712559.target) - e3:SetOperation(c712559.operation) - c:RegisterEffect(e3) -end -function c712559.condition(e,tp,eg,ep,ev,re,r,rp) - local lv=0 - local tc=eg:GetFirst() - while tc do - if tc:IsReason(REASON_DESTROY) and tc:IsSetCard(0x4) and not tc:IsPreviousLocation(LOCATION_SZONE) then - local tlv=tc:GetLevel() - if tlv>lv then lv=tlv end - end - tc=eg:GetNext() - end - if lv>0 then e:SetLabel(lv) end - return lv>0 -end -function c712559.spfilter(c,e,tp,lv) - return c:IsLevelBelow(lv) and c:IsSetCard(0x4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c712559.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and not e:GetHandler():IsStatus(STATUS_CHAINING) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c712559.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,e:GetLabel()) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c712559.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c712559.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,e:GetLabel()) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--アマゾネスの里 +function c712559.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x4)) + e2:SetValue(200) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(712559,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1) + e3:SetCondition(c712559.condition) + e3:SetTarget(c712559.target) + e3:SetOperation(c712559.operation) + c:RegisterEffect(e3) +end +function c712559.condition(e,tp,eg,ep,ev,re,r,rp) + local lv=0 + local tc=eg:GetFirst() + while tc do + if tc:IsReason(REASON_DESTROY) and tc:IsSetCard(0x4) and not tc:IsPreviousLocation(LOCATION_SZONE) then + local tlv=tc:GetLevel() + if tlv>lv then lv=tlv end + end + tc=eg:GetNext() + end + if lv>0 then e:SetLabel(lv) end + return lv>0 +end +function c712559.spfilter(c,e,tp,lv) + return c:IsLevelBelow(lv) and c:IsSetCard(0x4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c712559.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c712559.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,e:GetLabel()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c712559.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c712559.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,e:GetLabel()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c71345905.lua b/script/c71345905.lua index 354df49b..55b748bf 100644 --- a/script/c71345905.lua +++ b/script/c71345905.lua @@ -1,74 +1,74 @@ ---RDM-ヌメロン・フォール -function c71345905.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c71345905.target) - e1:SetOperation(c71345905.activate) - c:RegisterEffect(e1) -end -function c71345905.filter1(c,e,tp) - local rk=c:GetRank() - return rk>1 and c:IsFaceup() and c:IsSetCard(0x107f) - and Duel.IsExistingMatchingCard(c71345905.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk) -end -function c71345905.filter2(c,e,tp,mc,rk) - return c:IsRankBelow(rk-1) and c:IsSetCard(0x107f) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c71345905.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c71345905.filter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c71345905.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c71345905.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c71345905.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c71345905.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()) - local sc=g:GetFirst() - if sc then - local mg=tc:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - --disable - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c71345905.disop) - e1:SetReset(RESET_EVENT+0x1fe0000) - sc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_BE_BATTLE_TARGET) - sc:RegisterEffect(e2) - sc:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(71345905,0)) - end -end -function c71345905.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - if bc then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - bc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - bc:RegisterEffect(e2) - end -end +--RDM-ヌメロン・フォール +function c71345905.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c71345905.target) + e1:SetOperation(c71345905.activate) + c:RegisterEffect(e1) +end +function c71345905.filter1(c,e,tp) + local rk=c:GetRank() + return rk>1 and c:IsFaceup() and c:IsSetCard(0x107f) + and Duel.IsExistingMatchingCard(c71345905.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk) +end +function c71345905.filter2(c,e,tp,mc,rk) + return c:IsRankBelow(rk-1) and c:IsSetCard(0x107f) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c71345905.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c71345905.filter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c71345905.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c71345905.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c71345905.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c71345905.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + --disable + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c71345905.disop) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_BE_BATTLE_TARGET) + sc:RegisterEffect(e2) + sc:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(71345905,0)) + end +end +function c71345905.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + bc:RegisterEffect(e2) + end +end diff --git a/script/c71408082.lua b/script/c71408082.lua index e73b610f..3f9472f8 100644 --- a/script/c71408082.lua +++ b/script/c71408082.lua @@ -1,59 +1,59 @@ ---黒竜の聖騎士 -function c71408082.initial_effect(c) - c:EnableReviveLimit() - --destroy - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_START) - e1:SetCondition(c71408082.descon) - e1:SetTarget(c71408082.destg) - e1:SetOperation(c71408082.desop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,71408082) - e2:SetCost(c71408082.spcost) - e2:SetTarget(c71408082.sptg) - e2:SetOperation(c71408082.spop) - c:RegisterEffect(e2) -end -function c71408082.descon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetAttackTarget() - return tc and tc~=c and tc:IsDefensePos() -end -function c71408082.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local tc=Duel.GetAttackTarget() - Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) -end -function c71408082.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttackTarget() - if tc:IsRelateToBattle() then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c71408082.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c71408082.spfilter(c,e,tp) - return c:IsSetCard(0x3b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c71408082.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c71408082.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) -end -function c71408082.spop(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,c71408082.spfilter,tp,LOCATION_DECK+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 c71408082.initial_effect(c) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c71408082.descon) + e1:SetTarget(c71408082.destg) + e1:SetOperation(c71408082.desop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,71408082) + e2:SetCost(c71408082.spcost) + e2:SetTarget(c71408082.sptg) + e2:SetOperation(c71408082.spop) + c:RegisterEffect(e2) +end +function c71408082.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttackTarget() + return tc and tc~=c and tc:IsDefensePos() +end +function c71408082.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=Duel.GetAttackTarget() + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) +end +function c71408082.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + if tc:IsRelateToBattle() then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c71408082.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c71408082.spfilter(c,e,tp) + return c:IsSetCard(0x3b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c71408082.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c71408082.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c71408082.spop(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,c71408082.spfilter,tp,LOCATION_DECK+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 diff --git a/script/c71411377.lua b/script/c71411377.lua index 7846164b..32826207 100644 --- a/script/c71411377.lua +++ b/script/c71411377.lua @@ -1,15 +1,15 @@ ---女王親衛隊 -function c71411377.initial_effect(c) - --at limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) - e1:SetTarget(c71411377.atlimit) - e1:SetValue(aux.imval1) - c:RegisterEffect(e1) -end -function c71411377.atlimit(e,c) - return c:IsCode(87257460,23756165,50140163) -end +--女王親衛隊 +function c71411377.initial_effect(c) + --at limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e1:SetTarget(c71411377.atlimit) + e1:SetValue(aux.imval1) + c:RegisterEffect(e1) +end +function c71411377.atlimit(e,c) + return c:IsCode(87257460,23756165,50140163) +end diff --git a/script/c71422989.lua b/script/c71422989.lua index 28580fb5..74f913c7 100644 --- a/script/c71422989.lua +++ b/script/c71422989.lua @@ -1,85 +1,85 @@ ---吸光融合 -function c71422989.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,71422989+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c71422989.cost) - e1:SetTarget(c71422989.target) - e1:SetOperation(c71422989.activate) - c:RegisterEffect(e1) - Duel.AddCustomActivityCounter(71422989,ACTIVITY_SPSUMMON,c71422989.counterfilter) -end -function c71422989.counterfilter(c) - return c:IsSetCard(0x1047) -end -function c71422989.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCustomActivityCount(71422989,tp,ACTIVITY_SPSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetTarget(c71422989.splimit) - Duel.RegisterEffect(e1,tp) -end -function c71422989.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return not c:IsSetCard(0x1047) -end -function c71422989.filter(c) - return c:IsSetCard(0x1047) and c:IsAbleToHand() -end -function c71422989.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c71422989.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c71422989.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) -end -function c71422989.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c71422989.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c71422989.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c71422989.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c71422989.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c71422989.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if (sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0)) and Duel.SelectYesNo(tp,aux.Stringid(71422989,0)) then - Duel.BreakEffect() - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end - end -end +--吸光融合 +function c71422989.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH+CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,71422989+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c71422989.cost) + e1:SetTarget(c71422989.target) + e1:SetOperation(c71422989.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(71422989,ACTIVITY_SPSUMMON,c71422989.counterfilter) +end +function c71422989.counterfilter(c) + return c:IsSetCard(0x1047) +end +function c71422989.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(71422989,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c71422989.splimit) + Duel.RegisterEffect(e1,tp) +end +function c71422989.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0x1047) +end +function c71422989.filter(c) + return c:IsSetCard(0x1047) and c:IsAbleToHand() +end +function c71422989.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c71422989.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c71422989.filter1(c,e) + return c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c71422989.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c71422989.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c71422989.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c71422989.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c71422989.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c71422989.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if (sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0)) and Duel.SelectYesNo(tp,aux.Stringid(71422989,0)) then + Duel.BreakEffect() + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end + end +end diff --git a/script/c71442223.lua b/script/c71442223.lua index edc4e97c..6f46a9e4 100644 --- a/script/c71442223.lua +++ b/script/c71442223.lua @@ -34,8 +34,7 @@ function c71442223.activate(e,tp,eg,ep,ev,re,r,rp) if tc:IsRelateToEffect(e) and tc:IsFaceup() then local tg=Group.FromCards(tc) local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) - local g=Duel.GetMatchingGroup(c71442223.spfilter2,1-tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,nil,e,1-tp,tc) - if g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c71442223.spfilter2),1-tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,nil,e,1-tp,tc) if ft>0 and g:GetCount()>0 then if Duel.IsPlayerAffectedByEffect(1-tp,59822133) then ft=1 end local sg=g:Clone() diff --git a/script/c71466592.lua b/script/c71466592.lua index e426bb5d..18c26db9 100644 --- a/script/c71466592.lua +++ b/script/c71466592.lua @@ -30,8 +30,7 @@ function c71466592.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c71466592.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c71490127.lua b/script/c71490127.lua index e9dc2eed..7fc3b418 100644 --- a/script/c71490127.lua +++ b/script/c71490127.lua @@ -2,7 +2,7 @@ function c71490127.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c71490127.target) @@ -10,27 +10,32 @@ function c71490127.initial_effect(c) c:RegisterEffect(e1) end function c71490127.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() + return c:IsOnField() and c:IsAbleToRemove() end function c71490127.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) + return c:IsOnField() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) end function c71490127.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and (not f or f(c)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) end +function c71490127.filter3(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end function c71490127.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c71490127.filter0,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil) + local mg1=Duel.GetFusionMaterial(tp):Filter(c71490127.filter0,nil) + local mg2=Duel.GetMatchingGroup(c71490127.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local res=Duel.IsExistingMatchingCard(c71490127.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) + local mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c71490127.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + res=Duel.IsExistingMatchingCard(c71490127.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) end end return res @@ -39,16 +44,18 @@ function c71490127.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c71490127.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c71490127.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c71490127.filter1,nil,e) + local mg2=Duel.GetMatchingGroup(c71490127.filter3,tp,LOCATION_GRAVE,0,nil) + mg1:Merge(mg2) local sg1=Duel.GetMatchingGroup(c71490127.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil + local mg3=nil local sg2=nil local ce=Duel.GetChainMaterial(tp) if ce~=nil then local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) + mg3=fgroup(ce,e,tp) local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c71490127.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + sg2=Duel.GetMatchingGroup(c71490127.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) end if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then local sg=sg1:Clone() @@ -63,7 +70,7 @@ function c71490127.activate(e,tp,eg,ep,ev,re,r,rp) Duel.BreakEffect() Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) local fop=ce:GetOperation() fop(ce,e,tp,tc,mat2) end diff --git a/script/c71519605.lua b/script/c71519605.lua index 66f124ea..f004410a 100644 --- a/script/c71519605.lua +++ b/script/c71519605.lua @@ -1,46 +1,46 @@ ---オシャレオン -function c71519605.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(71519605,0)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetCondition(c71519605.condition) - e1:SetTarget(c71519605.target) - e1:SetOperation(c71519605.operation) - c:RegisterEffect(e1) - --attack limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCondition(c71519605.atcon) - e2:SetValue(c71519605.atlimit) - c:RegisterEffect(e2) -end -function c71519605.atcon(e) - return e:GetHandler():IsAttackPos() -end -function c71519605.atlimit(e,c) - return c:IsFacedown() or c:GetCode()~=71519605 -end -function c71519605.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c71519605.filter(c) - return c:IsAttackBelow(500) and c:IsRace(RACE_REPTILE) and c:IsAbleToHand() -end -function c71519605.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c71519605.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c71519605.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c71519605.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--オシャレオン +function c71519605.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(71519605,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c71519605.condition) + e1:SetTarget(c71519605.target) + e1:SetOperation(c71519605.operation) + c:RegisterEffect(e1) + --attack limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c71519605.atcon) + e2:SetValue(c71519605.atlimit) + c:RegisterEffect(e2) +end +function c71519605.atcon(e) + return e:GetHandler():IsAttackPos() +end +function c71519605.atlimit(e,c) + return c:IsFacedown() or c:GetCode()~=71519605 +end +function c71519605.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c71519605.filter(c) + return c:IsAttackBelow(500) and c:IsRace(RACE_REPTILE) and c:IsAbleToHand() +end +function c71519605.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c71519605.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c71519605.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c71519605.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c71578874.lua b/script/c71578874.lua index 3db41e2c..f29abaf4 100644 --- a/script/c71578874.lua +++ b/script/c71578874.lua @@ -1,83 +1,83 @@ ---Emミラー・コンダクター -function c71578874.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk/def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c71578874.adtg) - e2:SetOperation(c71578874.adop) - c:RegisterEffect(e2) - --swap - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e3:SetHintTiming(TIMING_DAMAGE_STEP) - e3:SetCountLimit(1) - e3:SetCondition(c71578874.swcon) - e3:SetTarget(c71578874.swtg) - e3:SetOperation(c71578874.swop) - c:RegisterEffect(e3) -end -function c71578874.filter(c) - return c:IsFaceup() and c:GetAttack()~=c:GetDefense() - and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL -end -function c71578874.adtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c71578874.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c71578874.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c71578874.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c71578874.adop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local val=math.min(tc:GetAttack(),tc:GetDefense()) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(val) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - tc:RegisterEffect(e2) - end -end -function c71578874.swcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c71578874.swtg(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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,500) -end -function c71578874.swop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local atk=tc:GetAttack() - local def=tc:GetDefense() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SWAP_ATTACK_FINAL) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(def) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SWAP_DEFENSE_FINAL) - e2:SetValue(atk) - tc:RegisterEffect(e2) - Duel.BreakEffect() - Duel.Damage(tp,500,REASON_EFFECT) - end -end +--Emミラー・コンダクター +function c71578874.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk/def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c71578874.adtg) + e2:SetOperation(c71578874.adop) + c:RegisterEffect(e2) + --swap + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetHintTiming(TIMING_DAMAGE_STEP) + e3:SetCountLimit(1) + e3:SetCondition(c71578874.swcon) + e3:SetTarget(c71578874.swtg) + e3:SetOperation(c71578874.swop) + c:RegisterEffect(e3) +end +function c71578874.filter(c) + return c:IsFaceup() and c:GetAttack()~=c:GetDefense() + and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c71578874.adtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c71578874.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c71578874.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c71578874.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c71578874.adop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local val=math.min(tc:GetAttack(),tc:GetDefense()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(val) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e2) + end +end +function c71578874.swcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c71578874.swtg(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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,500) +end +function c71578874.swop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + local def=tc:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SWAP_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SWAP_DEFENSE_FINAL) + e2:SetValue(atk) + tc:RegisterEffect(e2) + Duel.BreakEffect() + Duel.Damage(tp,500,REASON_EFFECT) + end +end diff --git a/script/c71587526.lua b/script/c71587526.lua index fce1ba3a..7cfcf997 100644 --- a/script/c71587526.lua +++ b/script/c71587526.lua @@ -1,38 +1,38 @@ ---因果切断 -function c71587526.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - e1:SetCost(c71587526.cost) - e1:SetTarget(c71587526.target) - e1:SetOperation(c71587526.activate) - c:RegisterEffect(e1) -end -function c71587526.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 c71587526.filter(c) - return c:IsFaceup() and c:IsAbleToRemove() -end -function c71587526.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c71587526.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c71587526.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c71587526.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c71587526.rfilter(c,code) - return c:IsCode(code) and c:IsAbleToRemove() -end -function c71587526.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 then - local rg=Duel.GetMatchingGroup(c71587526.rfilter,tp,0,LOCATION_GRAVE,nil,tc:GetCode()) - Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) - end -end +--因果切断 +function c71587526.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetCost(c71587526.cost) + e1:SetTarget(c71587526.target) + e1:SetOperation(c71587526.activate) + c:RegisterEffect(e1) +end +function c71587526.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 c71587526.filter(c) + return c:IsFaceup() and c:IsAbleToRemove() +end +function c71587526.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c71587526.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c71587526.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c71587526.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c71587526.rfilter(c,code) + return c:IsCode(code) and c:IsAbleToRemove() +end +function c71587526.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 then + local rg=Duel.GetMatchingGroup(c71587526.rfilter,tp,0,LOCATION_GRAVE,nil,tc:GetCode()) + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c71612253.lua b/script/c71612253.lua index 41f44bf7..a6b997ac 100644 --- a/script/c71612253.lua +++ b/script/c71612253.lua @@ -9,7 +9,7 @@ function c71612253.initial_effect(c) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e1:SetHintTiming(TIMING_DAMAGE) e1:SetCountLimit(1) e1:SetCondition(c71612253.condition) diff --git a/script/c71616908.lua b/script/c71616908.lua index 405174a9..a10a3ae2 100644 --- a/script/c71616908.lua +++ b/script/c71616908.lua @@ -1,38 +1,38 @@ ---ジェムナイト・アメジス -function c71616908.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsRace,RACE_AQUA),true) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(c71616908.splimit) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(71616908,0)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCondition(c71616908.thcon) - e3:SetTarget(c71616908.thtg) - e3:SetOperation(c71616908.thop) - c:RegisterEffect(e3) -end -function c71616908.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c71616908.thcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)~=0 -end -function c71616908.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c71616908.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,nil) - Duel.SendtoHand(g,nil,REASON_EFFECT) -end +--ジェムナイト・アメジス +function c71616908.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsRace,RACE_AQUA),true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(c71616908.splimit) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(71616908,0)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c71616908.thcon) + e3:SetTarget(c71616908.thtg) + e3:SetOperation(c71616908.thop) + c:RegisterEffect(e3) +end +function c71616908.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c71616908.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c71616908.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c71616908.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + Duel.SendtoHand(g,nil,REASON_EFFECT) +end diff --git a/script/c7161742.lua b/script/c7161742.lua new file mode 100644 index 00000000..3704f499 --- /dev/null +++ b/script/c7161742.lua @@ -0,0 +1,60 @@ +--捕食植物コーディセップス +--Predaplant Cordyceps +--Script by dest +function c7161742.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7161742,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c7161742.spcon) + e1:SetCost(c7161742.spcost) + e1:SetTarget(c7161742.sptg) + e1:SetOperation(c7161742.spop) + c:RegisterEffect(e1) +end +function c7161742.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c7161742.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c7161742.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x10f3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c7161742.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c7161742.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c7161742.filter,tp,LOCATION_GRAVE,0,2,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c7161742.filter,tp,LOCATION_GRAVE,0,2,2,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c7161742.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if ft>0 and (g:GetCount()>0 or (g:GetCount()>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133))) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + if g:GetCount()>ft then g=g:Select(tp,ft,ft,nil) end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c7161742.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_SUMMON) + Duel.RegisterEffect(e2,tp) +end +function c7161742.splimit(e,c) + return not c:IsType(TYPE_FUSION) +end \ No newline at end of file diff --git a/script/c7165085.lua b/script/c7165085.lua index 95a4eb09..f636857a 100644 --- a/script/c7165085.lua +++ b/script/c7165085.lua @@ -1,80 +1,80 @@ ---おとり人形 -function c7165085.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c7165085.target) - e1:SetOperation(c7165085.activate) - c:RegisterEffect(e1) -end -function c7165085.filter(c) - return c:IsFacedown() and c:GetSequence()~=5 -end -function c7165085.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c7165085.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c7165085.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) - Duel.SelectTarget(tp,c7165085.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) -end -function c7165085.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or tc:IsFaceup() then - if c:IsRelateToEffect(e) and e:IsHasType(EFFECT_TYPE_ACTIVATE) then - c:CancelToGrave() - Duel.SendtoDeck(c,nil,2,REASON_EFFECT) - end - return - end - Duel.ConfirmCards(tp,tc) - if tc:IsType(TYPE_TRAP) then - local te=tc:GetActivateEffect() - local tep=tc:GetControler() - if not te then - Duel.Destroy(tc,REASON_EFFECT) - else - local condition=te:GetCondition() - local cost=te:GetCost() - local target=te:GetTarget() - local operation=te:GetOperation() - if te:GetCode()==EVENT_FREE_CHAIN and te:IsActivatable(tep) - and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) - and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) - and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then - Duel.ClearTargetCard() - e:SetProperty(te:GetProperty()) - Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) - Duel.ChangePosition(tc,POS_FACEUP) - if tc:GetType()==TYPE_TRAP then - tc:CancelToGrave(false) - end - tc:CreateEffectRelation(te) - if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end - if target then target(te,tep,eg,ep,ev,re,r,rp,1) end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local tg=g:GetFirst() - while tg do - tg:CreateEffectRelation(te) - tg=g:GetNext() - end - tc:SetStatus(STATUS_ACTIVATED,true) - if operation then operation(te,tep,eg,ep,ev,re,r,rp) end - tc:ReleaseEffectRelation(te) - tg=g:GetFirst() - while tg do - tg:ReleaseEffectRelation(te) - tg=g:GetNext() - end - else - Duel.Destroy(tc,REASON_EFFECT) - end - end - end - if c:IsRelateToEffect(e) and e:IsHasType(EFFECT_TYPE_ACTIVATE) then - c:CancelToGrave() - Duel.SendtoDeck(c,nil,2,REASON_EFFECT) - end -end +--おとり人形 +function c7165085.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c7165085.target) + e1:SetOperation(c7165085.activate) + c:RegisterEffect(e1) +end +function c7165085.filter(c) + return c:IsFacedown() and c:GetSequence()~=5 +end +function c7165085.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c7165085.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c7165085.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + Duel.SelectTarget(tp,c7165085.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,e:GetHandler()) +end +function c7165085.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFaceup() then + if c:IsRelateToEffect(e) and e:IsHasType(EFFECT_TYPE_ACTIVATE) then + c:CancelToGrave() + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end + return + end + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and te:IsActivatable(tep) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + tc:SetStatus(STATUS_ACTIVATED,true) + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + if c:IsRelateToEffect(e) and e:IsHasType(EFFECT_TYPE_ACTIVATE) then + c:CancelToGrave() + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + end +end diff --git a/script/c71650854.lua b/script/c71650854.lua index 25875162..42a7abd1 100644 --- a/script/c71650854.lua +++ b/script/c71650854.lua @@ -10,7 +10,7 @@ function c71650854.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE) e2:SetRange(LOCATION_FZONE) e2:SetTargetRange(LOCATION_MZONE,0) e2:SetCondition(c71650854.indcon) @@ -18,13 +18,14 @@ function c71650854.initial_effect(c) c:RegisterEffect(e2) local e3=e2:Clone() e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) e3:SetValue(c71650854.tgvalue) c:RegisterEffect(e3) - local e4=e2:Clone() + local e4=e3:Clone() e4:SetTargetRange(0,LOCATION_MZONE) e4:SetValue(c71650854.tgoval) c:RegisterEffect(e4) - local e5=e2:Clone() + local e5=e3:Clone() e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) e5:SetTargetRange(0,LOCATION_MZONE) e5:SetValue(c71650854.tgovalue) diff --git a/script/c71652522.lua b/script/c71652522.lua index f201721f..3385ff95 100644 --- a/script/c71652522.lua +++ b/script/c71652522.lua @@ -1,49 +1,49 @@ ---バトル・テレポーテーション -function c71652522.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c71652522.condition) - e1:SetTarget(c71652522.target) - e1:SetOperation(c71652522.activate) - c:RegisterEffect(e1) -end -function c71652522.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()<=PHASE_BATTLE -end -function c71652522.filter(c) - return c:IsFaceup() and c:IsRace(RACE_PSYCHO) -end -function c71652522.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.GetMatchingGroupCount(c71652522.filter,tp,LOCATION_MZONE,0,nil)==1 end - local tc=Duel.GetMatchingGroup(c71652522.filter,tp,LOCATION_MZONE,0,nil):GetFirst() - Duel.SetTargetCard(tc) -end -function c71652522.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_BATTLE) - e2:SetCountLimit(1) - e2:SetReset(RESET_PHASE+PHASE_BATTLE) - e2:SetOperation(c71652522.ctop) - e2:SetLabelObject(tc) - Duel.RegisterEffect(e2,tp) - tc:RegisterFlagEffect(71652522,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_BATTLE,0,1) - end -end -function c71652522.ctop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - if tc:GetFlagEffect(71652522)~=0 then - Duel.GetControl(tc,1-tp) - end -end +--バトル・テレポーテーション +function c71652522.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c71652522.condition) + e1:SetTarget(c71652522.target) + e1:SetOperation(c71652522.activate) + c:RegisterEffect(e1) +end +function c71652522.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c71652522.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PSYCHO) +end +function c71652522.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetMatchingGroupCount(c71652522.filter,tp,LOCATION_MZONE,0,nil)==1 end + local tc=Duel.GetMatchingGroup(c71652522.filter,tp,LOCATION_MZONE,0,nil):GetFirst() + Duel.SetTargetCard(tc) +end +function c71652522.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetCountLimit(1) + e2:SetReset(RESET_PHASE+PHASE_BATTLE) + e2:SetOperation(c71652522.ctop) + e2:SetLabelObject(tc) + Duel.RegisterEffect(e2,tp) + tc:RegisterFlagEffect(71652522,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_BATTLE,0,1) + end +end +function c71652522.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(71652522)~=0 then + Duel.GetControl(tc,1-tp) + end +end diff --git a/script/c71692913.lua b/script/c71692913.lua index b8bb63d8..1951261c 100644 --- a/script/c71692913.lua +++ b/script/c71692913.lua @@ -1,76 +1,76 @@ ---相克の魔術師 -function c71692913.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --xyz level - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c71692913.xyztg) - e2:SetOperation(c71692913.xyzop) - c:RegisterEffect(e2) - --disable - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DISABLE) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetTarget(c71692913.distg) - e3:SetOperation(c71692913.disop) - c:RegisterEffect(e3) -end -function c71692913.xyzfilter(c) - return c:IsFaceup() and c:IsType(TYPE_XYZ) -end -function c71692913.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c71692913.xyzfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c71692913.xyzfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c71692913.xyzfilter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c71692913.xyzop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_XYZ_LEVEL) - e1:SetValue(c71692913.xyzlv) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c71692913.xyzlv(e,c,rc) - return c:GetRank() -end -function c71692913.disfilter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsType(TYPE_EFFECT) and not c:IsDisabled() -end -function c71692913.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c71692913.disfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c71692913.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c71692913.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c71692913.disop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--相克の魔術師 +function c71692913.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --xyz level + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c71692913.xyztg) + e2:SetOperation(c71692913.xyzop) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DISABLE) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c71692913.distg) + e3:SetOperation(c71692913.disop) + c:RegisterEffect(e3) +end +function c71692913.xyzfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c71692913.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c71692913.xyzfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c71692913.xyzfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c71692913.xyzfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c71692913.xyzop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_XYZ_LEVEL) + e1:SetValue(c71692913.xyzlv) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c71692913.xyzlv(e,c,rc) + return c:GetRank() +end +function c71692913.disfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsType(TYPE_EFFECT) and not c:IsDisabled() +end +function c71692913.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c71692913.disfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c71692913.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c71692913.disfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c71692913.disop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c71703785.lua b/script/c71703785.lua index 2018ff11..a178bdd8 100644 --- a/script/c71703785.lua +++ b/script/c71703785.lua @@ -76,8 +76,8 @@ end function c71703785.spop2(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,c71703785.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c71703785.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c7171149.lua b/script/c7171149.lua index 6682ab49..e2a2dd22 100644 --- a/script/c7171149.lua +++ b/script/c7171149.lua @@ -1,63 +1,60 @@ ---トゥーン・アンティーク・ギアゴーレム -function c7171149.initial_effect(c) - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c7171149.atklimit) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --direct attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DIRECT_ATTACK) - e4:SetCondition(c7171149.dircon) - c:RegisterEffect(e4) - --actlimit - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e5:SetCode(EVENT_ATTACK_ANNOUNCE) - e5:SetOperation(c7171149.atkop) - c:RegisterEffect(e5) - --pierce - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e6) -end -function c7171149.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c7171149.cfilter1(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c7171149.cfilter2(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c7171149.dircon(e) - local tp=e:GetHandlerPlayer() - return Duel.IsExistingMatchingCard(c7171149.cfilter1,tp,LOCATION_ONFIELD,0,1,nil) - and not Duel.IsExistingMatchingCard(c7171149.cfilter2,tp,0,LOCATION_MZONE,1,nil) -end -function c7171149.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c7171149.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end -function c7171149.aclimit(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) -end +--トゥーン・アンティーク・ギアゴーレム +function c7171149.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c7171149.atklimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetCondition(c7171149.dircon) + c:RegisterEffect(e4) + --actlimit + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EFFECT_CANNOT_ACTIVATE) + e5:SetRange(LOCATION_MZONE) + e5:SetTargetRange(0,1) + e5:SetValue(c7171149.aclimit) + e5:SetCondition(c7171149.actcon) + c:RegisterEffect(e5) + --pierce + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e6) +end +function c7171149.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c7171149.cfilter1(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c7171149.cfilter2(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c7171149.dircon(e) + local tp=e:GetHandlerPlayer() + return Duel.IsExistingMatchingCard(c7171149.cfilter1,tp,LOCATION_ONFIELD,0,1,nil) + and not Duel.IsExistingMatchingCard(c7171149.cfilter2,tp,0,LOCATION_MZONE,1,nil) +end +function c7171149.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c7171149.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end diff --git a/script/c71782404.lua b/script/c71782404.lua index 25143e11..2411cc2d 100644 --- a/script/c71782404.lua +++ b/script/c71782404.lua @@ -1,33 +1,33 @@ ---レッドアイズ・バーン -function c71782404.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_DESTROYED) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,71782404+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c71782404.target) - e1:SetOperation(c71782404.activate) - c:RegisterEffect(e1) -end -function c71782404.cfilter(c,e,tp) - return c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsReason(REASON_EFFECT+REASON_BATTLE) - and c:IsPreviousSetCard(0x3b) and c:GetBaseAttack()>0 and c:IsCanBeEffectTarget(e) and c:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) -end -function c71782404.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return eg:IsContains(chkc) and c71782404.cfilter(chkc,e,tp) end - if chk==0 then return eg:IsExists(c71782404.cfilter,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=eg:FilterSelect(tp,c71782404.cfilter,1,1,nil,e,tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,nil,PLAYER_ALL,0) -end -function c71782404.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT,true) - Duel.Damage(tp,tc:GetBaseAttack(),REASON_EFFECT,true) - Duel.RDComplete() - end -end +--レッドアイズ・バーン +function c71782404.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,71782404+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c71782404.target) + e1:SetOperation(c71782404.activate) + c:RegisterEffect(e1) +end +function c71782404.cfilter(c,e,tp) + return c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsReason(REASON_EFFECT+REASON_BATTLE) + and c:IsPreviousSetCard(0x3b) and c:GetBaseAttack()>0 and c:IsCanBeEffectTarget(e) and c:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) +end +function c71782404.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) and c71782404.cfilter(chkc,e,tp) end + if chk==0 then return eg:IsExists(c71782404.cfilter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=eg:FilterSelect(tp,c71782404.cfilter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,nil,PLAYER_ALL,0) +end +function c71782404.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Damage(1-tp,tc:GetBaseAttack(),REASON_EFFECT,true) + Duel.Damage(tp,tc:GetBaseAttack(),REASON_EFFECT,true) + Duel.RDComplete() + end +end diff --git a/script/c71829750.lua b/script/c71829750.lua index a38ce572..628bd78d 100644 --- a/script/c71829750.lua +++ b/script/c71829750.lua @@ -1,32 +1,32 @@ ---ナーガ -function c71829750.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(71829750,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(0,EFFECT_FLAG2_NAGA) - e1:SetCode(EVENT_TO_DECK) - e1:SetCondition(c71829750.spcon) - e1:SetTarget(c71829750.sptg) - e1:SetOperation(c71829750.spop) - c:RegisterEffect(e1) -end -function c71829750.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousPosition(POS_FACEUP) - and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c71829750.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c71829750.spfilter(c,e,tp) - return c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c71829750.spop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c71829750.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--ナーガ +function c71829750.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(71829750,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(0,EFFECT_FLAG2_NAGA) + e1:SetCode(EVENT_TO_DECK) + e1:SetCondition(c71829750.spcon) + e1:SetTarget(c71829750.sptg) + e1:SetOperation(c71829750.spop) + c:RegisterEffect(e1) +end +function c71829750.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) + and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c71829750.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c71829750.spfilter(c,e,tp) + return c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c71829750.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c71829750.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c7183277.lua b/script/c7183277.lua index 8d8a6e82..7814799f 100644 --- a/script/c7183277.lua +++ b/script/c7183277.lua @@ -4,7 +4,7 @@ function c7183277.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e1:SetProperty(EFFECT_FLAG_IGNORE_RANGE) + e1:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) e1:SetRange(LOCATION_MZONE) e1:SetTarget(c7183277.etarget) e1:SetValue(1) diff --git a/script/c71870152.lua b/script/c71870152.lua index 8ed95490..08e02aaf 100644 --- a/script/c71870152.lua +++ b/script/c71870152.lua @@ -1,74 +1,74 @@ ---フォーチュンレディ・ファイリー -function c71870152.initial_effect(c) - --atk,def - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(c71870152.value) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e2) - --level up - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(71870152,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCondition(c71870152.lvcon) - e3:SetOperation(c71870152.lvop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(71870152,1)) - e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetCondition(c71870152.descon) - e4:SetTarget(c71870152.destg) - e4:SetOperation(c71870152.desop) - c:RegisterEffect(e4) -end -function c71870152.value(e,c) - return c:GetLevel()*200 -end -function c71870152.lvcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) -end -function c71870152.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c71870152.descon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsFaceup() and c:IsAttackPos() and c:GetSummonType()==SUMMON_TYPE_SPECIAL+0x8 -end -function c71870152.filter(c) - return c:IsFaceup() -end -function c71870152.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c71870152.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c71870152.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) -end -function c71870152.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc then return end - local atk=tc:GetAttack() - if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.Damage(1-tp,atk,REASON_EFFECT) - end -end +--フォーチュンレディ・ファイリー +function c71870152.initial_effect(c) + --atk,def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c71870152.value) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) + --level up + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(71870152,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c71870152.lvcon) + e3:SetOperation(c71870152.lvop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(71870152,1)) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c71870152.descon) + e4:SetTarget(c71870152.destg) + e4:SetOperation(c71870152.desop) + c:RegisterEffect(e4) +end +function c71870152.value(e,c) + return c:GetLevel()*200 +end +function c71870152.lvcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) +end +function c71870152.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c71870152.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsFaceup() and c:IsAttackPos() and c:GetSummonType()==SUMMON_TYPE_SPECIAL+0x8 +end +function c71870152.filter(c) + return c:IsFaceup() +end +function c71870152.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c71870152.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c71870152.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c71870152.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc then return end + local atk=tc:GetAttack() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end +end diff --git a/script/c71921856.lua b/script/c71921856.lua index 65d5bf17..069afd49 100644 --- a/script/c71921856.lua +++ b/script/c71921856.lua @@ -1,84 +1,84 @@ ---No.79 BK 新星のカイザー -function c71921856.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,nil,4,2) - c:EnableReviveLimit() - --material - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(71921856,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c71921856.target) - e1:SetOperation(c71921856.operation) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(c71921856.atkval) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e3:SetCondition(c71921856.spcon) - e3:SetTarget(c71921856.sptg) - e3:SetOperation(c71921856.spop) - c:RegisterEffect(e3) -end -c71921856.xyz_number=79 -function c71921856.filter(c) - return c:IsSetCard(0x84) and c:IsType(TYPE_MONSTER) -end -function c71921856.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c71921856.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil) end -end -function c71921856.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g=Duel.SelectMatchingCard(tp,c71921856.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.Overlay(c,g) - end -end -function c71921856.atkval(e,c) - return c:GetOverlayCount()*100 -end -function c71921856.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetOverlayCount() - e:SetLabel(ct) - return c:IsReason(REASON_DESTROY) and c:GetReasonPlayer()~=tp - and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp and ct>0 -end -function c71921856.spfilter(c,e,tp) - return c:IsLevelBelow(4) and c:IsSetCard(0x84) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c71921856.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c71921856.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c71921856.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - local ct=e:GetLabel() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ct>ft then ct=ft end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c71921856.spfilter,tp,LOCATION_GRAVE,0,1,ct,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) -end -function c71921856.spop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - if ft0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--No.79 BK 新星のカイザー +function c71921856.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --material + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(71921856,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c71921856.target) + e1:SetOperation(c71921856.operation) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c71921856.atkval) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCondition(c71921856.spcon) + e3:SetTarget(c71921856.sptg) + e3:SetOperation(c71921856.spop) + c:RegisterEffect(e3) +end +c71921856.xyz_number=79 +function c71921856.filter(c) + return c:IsSetCard(0x84) and c:IsType(TYPE_MONSTER) +end +function c71921856.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c71921856.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil) end +end +function c71921856.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c71921856.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.Overlay(c,g) + end +end +function c71921856.atkval(e,c) + return c:GetOverlayCount()*100 +end +function c71921856.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetOverlayCount() + e:SetLabel(ct) + return c:IsReason(REASON_DESTROY) and c:GetReasonPlayer()~=tp + and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp and ct>0 +end +function c71921856.spfilter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x84) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c71921856.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c71921856.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c71921856.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local ct=e:GetLabel() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ct>ft then ct=ft end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c71921856.spfilter,tp,LOCATION_GRAVE,0,1,ct,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c71921856.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c7194917.lua b/script/c7194917.lua index cd182493..602d70cb 100644 --- a/script/c7194917.lua +++ b/script/c7194917.lua @@ -8,6 +8,7 @@ function c7194917.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(7194917,0)) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c7194917.adcost) diff --git a/script/c7200041.lua b/script/c7200041.lua index 17a3df08..0f855ab3 100644 --- a/script/c7200041.lua +++ b/script/c7200041.lua @@ -1,47 +1,47 @@ ---メタル・シューター -function c7200041.initial_effect(c) - c:EnableCounterPermit(0x26) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(7200041,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c7200041.addct) - e1:SetOperation(c7200041.addc) - c:RegisterEffect(e1) - --attackup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(c7200041.attackup) - c:RegisterEffect(e2) - --destroy replace - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetCode(EFFECT_DESTROY_REPLACE) - e3:SetRange(LOCATION_MZONE) - e3:SetTarget(c7200041.reptg) - c:RegisterEffect(e3) -end -function c7200041.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x26) -end -function c7200041.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x26,2) - end -end -function c7200041.attackup(e,c) - return c:GetCounter(0x26)*800 -end -function c7200041.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReason(REASON_EFFECT) - and e:GetHandler():IsCanRemoveCounter(tp,0x26,1,REASON_COST) end - e:GetHandler():RemoveCounter(tp,0x26,1,REASON_EFFECT) - return true -end +--メタル・シューター +function c7200041.initial_effect(c) + c:EnableCounterPermit(0x26) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7200041,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c7200041.addct) + e1:SetOperation(c7200041.addc) + c:RegisterEffect(e1) + --attackup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c7200041.attackup) + c:RegisterEffect(e2) + --destroy replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c7200041.reptg) + c:RegisterEffect(e3) +end +function c7200041.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x26) +end +function c7200041.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x26,2) + end +end +function c7200041.attackup(e,c) + return c:GetCounter(0x26)*800 +end +function c7200041.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReason(REASON_EFFECT) + and e:GetHandler():IsCanRemoveCounter(tp,0x26,1,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x26,1,REASON_EFFECT) + return true +end diff --git a/script/c72029628.lua b/script/c72029628.lua index 55707701..a3106da7 100644 --- a/script/c72029628.lua +++ b/script/c72029628.lua @@ -2,7 +2,7 @@ function c72029628.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c72029628.target) @@ -10,10 +10,10 @@ function c72029628.initial_effect(c) c:RegisterEffect(e1) end function c72029628.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() end function c72029628.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) end function c72029628.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) @@ -68,17 +68,27 @@ function c72029628.activate(e,tp,eg,ep,ev,re,r,rp) fop(ce,e,tp,tc,mat2) end tc:CompleteProcedure() + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(72029628,RESET_EVENT+0x1fe0000,0,1,fid) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c72029628.descon) e1:SetOperation(c72029628.desop) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetCountLimit(1) - tc:RegisterEffect(e1,true) + Duel.RegisterEffect(e1,tp) end end +function c72029628.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(72029628)~=e:GetLabel() then + e:Reset() + return false + else return true end +end function c72029628.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) end diff --git a/script/c72129804.lua b/script/c72129804.lua new file mode 100644 index 00000000..0aa57bc1 --- /dev/null +++ b/script/c72129804.lua @@ -0,0 +1,69 @@ +--捕食生成 +function c72129804.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c72129804.target) + e1:SetOperation(c72129804.activate) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_GRAVE) + e2:SetTarget(c72129804.reptg) + e2:SetValue(c72129804.repval) + e2:SetOperation(c72129804.repop) + c:RegisterEffect(e2) +end +function c72129804.cfilter(c) + return c:IsSetCard(0xf3) and not c:IsPublic() +end +function c72129804.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local hg=Duel.GetMatchingGroup(c72129804.cfilter,tp,LOCATION_HAND,0,e:GetHandler()) + local ct=Duel.GetTargetCount(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,nil,0x1041,1) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsCanAddCounter(0x1041,1) end + if chk==0 then return hg:GetCount()>0 and ct>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=hg:Select(tp,1,ct,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,g:GetCount(),g:GetCount(),nil,0x1041,1) +end +function c72129804.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local tc=tg:GetFirst() + while tc do + if tc:AddCounter(0x1041,1) and tc:GetLevel()>1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c72129804.lvcon) + e1:SetValue(1) + tc:RegisterEffect(e1) + end + tc=tg:GetNext() + end +end +function c72129804.lvcon(e) + return e:GetHandler():GetCounter(0x1041)>0 +end +function c72129804.repfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x10f3) and c:IsLocation(LOCATION_MZONE) + and c:IsControler(tp) and c:IsReason(REASON_BATTLE) +end +function c72129804.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() and eg:IsExists(c72129804.repfilter,1,nil,tp) end + return Duel.SelectYesNo(tp,aux.Stringid(72129804,0)) +end +function c72129804.repval(e,c) + return c72129804.repfilter(c,e:GetHandlerPlayer()) +end +function c72129804.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c72181263.lua b/script/c72181263.lua index 902017a8..f9099d99 100644 --- a/script/c72181263.lua +++ b/script/c72181263.lua @@ -1,88 +1,88 @@ ---DDオルトロス -function c72181263.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(72181263,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_PZONE) - e1:SetCountLimit(1) - e1:SetTarget(c72181263.destg) - e1:SetOperation(c72181263.desop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(72181263,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_HAND) - e2:SetCode(EVENT_DAMAGE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetCondition(c72181263.spcon) - e2:SetTarget(c72181263.sptg) - e2:SetOperation(c72181263.spop) - c:RegisterEffect(e2) - --spsummon limit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetOperation(c72181263.regop) - c:RegisterEffect(e3) -end -function c72181263.desfilter1(c,tp,ec) - return c:IsType(TYPE_SPELL+TYPE_TRAP) - and Duel.IsExistingTarget(c72181263.desfilter2,tp,LOCATION_ONFIELD,0,1,c,ec) -end -function c72181263.desfilter2(c,ec) - return c~=ec and c:IsFaceup() and (c:IsSetCard(0xaf) or c:IsSetCard(0xae)) -end -function c72181263.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - local c=e:GetHandler() - if chk==0 then return Duel.IsExistingTarget(c72181263.desfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tp,c) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g1=Duel.SelectTarget(tp,c72181263.desfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,tp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g2=Duel.SelectTarget(tp,c72181263.desfilter2,tp,LOCATION_ONFIELD,0,1,1,g1:GetFirst(),c) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) -end -function c72181263.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - end -end -function c72181263.spcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp -end -function c72181263.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c72181263.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c72181263.regop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c72181263.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c72181263.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return not c:IsRace(RACE_FIEND) -end +--DDオルトロス +function c72181263.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(72181263,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetTarget(c72181263.destg) + e1:SetOperation(c72181263.desop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(72181263,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_DAMAGE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCondition(c72181263.spcon) + e2:SetTarget(c72181263.sptg) + e2:SetOperation(c72181263.spop) + c:RegisterEffect(e2) + --spsummon limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetOperation(c72181263.regop) + c:RegisterEffect(e3) +end +function c72181263.desfilter1(c,tp,ec) + return c:IsType(TYPE_SPELL+TYPE_TRAP) + and Duel.IsExistingTarget(c72181263.desfilter2,tp,LOCATION_ONFIELD,0,1,c,ec) +end +function c72181263.desfilter2(c,ec) + return c~=ec and c:IsFaceup() and (c:IsSetCard(0xaf) or c:IsSetCard(0xae)) +end +function c72181263.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingTarget(c72181263.desfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tp,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c72181263.desfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,tp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,c72181263.desfilter2,tp,LOCATION_ONFIELD,0,1,1,g1:GetFirst(),c) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) +end +function c72181263.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c72181263.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c72181263.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c72181263.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c72181263.regop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c72181263.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c72181263.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsRace(RACE_FIEND) +end diff --git a/script/c72192100.lua b/script/c72192100.lua index 3a09f1e7..c00daf1c 100644 --- a/script/c72192100.lua +++ b/script/c72192100.lua @@ -1,79 +1,78 @@ ---デスルークデーモン -function c72192100.initial_effect(c) - --maintain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c72192100.mtcon) - e1:SetOperation(c72192100.mtop) - c:RegisterEffect(e1) - --disable and destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c72192100.disop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetDescription(aux.Stringid(72192100,0)) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetRange(LOCATION_HAND) - e3:SetCost(c72192100.spcost) - e3:SetTarget(c72192100.sptg) - e3:SetOperation(c72192100.spop) - c:RegisterEffect(e3) -end -function c72192100.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c72192100.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -function c72192100.disop(e,tp,eg,ep,ev,re,r,rp) - if ep==tp then return end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end - local rc=re:GetHandler() - local dc=Duel.TossDice(tp,1) - if dc~=3 then return end - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then - Duel.Destroy(rc,REASON_EFFECT) - end -end -function c72192100.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c72192100.filter(c,e,tp) - return c:IsCode(35975813) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) - and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c72192100.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return eg:IsContains(chkc) and c72192100.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and eg:IsExists(c72192100.filter,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=eg:FilterSelect(tp,c72192100.filter,1,1,nil,e,tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c72192100.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--デスルークデーモン +function c72192100.initial_effect(c) + --maintain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c72192100.mtcon) + e1:SetOperation(c72192100.mtop) + c:RegisterEffect(e1) + --disable and destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c72192100.disop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(72192100,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetRange(LOCATION_HAND) + e3:SetCost(c72192100.spcost) + e3:SetTarget(c72192100.sptg) + e3:SetOperation(c72192100.spop) + c:RegisterEffect(e3) +end +function c72192100.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c72192100.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c72192100.disop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end + local rc=re:GetHandler() + local dc=Duel.TossDice(tp,1) + if dc~=3 then return end + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end +end +function c72192100.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c72192100.filter(c,e,tp) + return c:IsCode(35975813) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) + and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c72192100.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) and c72192100.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and eg:IsExists(c72192100.filter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=eg:FilterSelect(tp,c72192100.filter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c72192100.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c72204747.lua b/script/c72204747.lua index 0d564168..986d46ce 100644 --- a/script/c72204747.lua +++ b/script/c72204747.lua @@ -1,50 +1,50 @@ ---オーバー・デステニー -function c72204747.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c72204747.target) - e1:SetOperation(c72204747.activate) - c:RegisterEffect(e1) -end -function c72204747.filter1(c,e,sp) - local lv=math.floor(c:GetLevel()/2) - return lv>0 and c:IsSetCard(0xc008) - and Duel.IsExistingMatchingCard(c72204747.filter2,sp,LOCATION_DECK,0,1,nil,lv,e,sp) -end -function c72204747.filter2(c,lv,e,sp) - return c:IsLevelBelow(lv) and c:IsSetCard(0xc008) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) -end -function c72204747.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c72204747.filter1(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c72204747.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(72204747,0)) - Duel.SelectTarget(tp,c72204747.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c72204747.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if not tc or not tc:IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local cg=Duel.SelectMatchingCard(tp,c72204747.filter2,tp,LOCATION_DECK,0,1,1,nil,math.floor(tc:GetLevel()/2),e,tp) - if cg:GetCount()==0 then return end - local sc=cg:GetFirst() - Duel.SpecialSummon(cg,0,tp,tp,false,false,POS_FACEUP) - --destroy - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_EVENT+0x1fe0000) - e1:SetOperation(c72204747.des) - sc:RegisterEffect(e1) -end -function c72204747.des(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--オーバー・デステニー +function c72204747.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c72204747.target) + e1:SetOperation(c72204747.activate) + c:RegisterEffect(e1) +end +function c72204747.filter1(c,e,sp) + local lv=math.floor(c:GetLevel()/2) + return lv>0 and c:IsSetCard(0xc008) + and Duel.IsExistingMatchingCard(c72204747.filter2,sp,LOCATION_DECK,0,1,nil,lv,e,sp) +end +function c72204747.filter2(c,lv,e,sp) + return c:IsLevelBelow(lv) and c:IsSetCard(0xc008) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) +end +function c72204747.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c72204747.filter1(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c72204747.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(72204747,0)) + Duel.SelectTarget(tp,c72204747.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c72204747.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc or not tc:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local cg=Duel.SelectMatchingCard(tp,c72204747.filter2,tp,LOCATION_DECK,0,1,1,nil,math.floor(tc:GetLevel()/2),e,tp) + if cg:GetCount()==0 then return end + local sc=cg:GetFirst() + Duel.SpecialSummon(cg,0,tp,tp,false,false,POS_FACEUP) + --destroy + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_EVENT+0x1fe0000) + e1:SetOperation(c72204747.des) + sc:RegisterEffect(e1) +end +function c72204747.des(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c72258771.lua b/script/c72258771.lua index f9ffb573..c453beba 100644 --- a/script/c72258771.lua +++ b/script/c72258771.lua @@ -1,79 +1,78 @@ ---コアキメイル・ヴァラファール -function c72258771.initial_effect(c) - --cost - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c72258771.mtcon) - e1:SetOperation(c72258771.mtop) - c:RegisterEffect(e1) - --summon with 1 tribute - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(72258771,2)) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SUMMON_PROC) - e2:SetCondition(c72258771.otcon) - e2:SetOperation(c72258771.otop) - e2:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e2) - --pierce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e3) - --indes - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetValue(c72258771.efilter) - c:RegisterEffect(e4) -end -function c72258771.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c72258771.cfilter1(c) - return c:IsCode(36623431) and c:IsAbleToGraveAsCost() -end -function c72258771.mtop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - Duel.HintSelection(Group.FromCards(c)) - local g1=Duel.GetMatchingGroup(c72258771.cfilter1,tp,LOCATION_HAND,0,nil) - local select=1 - if g1:GetCount()>0 then - select=Duel.SelectOption(tp,aux.Stringid(72258771,0),aux.Stringid(72258771,1)) - else - select=Duel.SelectOption(tp,aux.Stringid(72258771,1))+1 - end - if select==0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=g1:Select(tp,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) - else - Duel.Destroy(c,REASON_COST) - end -end -function c72258771.otfilter(c,tp) - return c:IsSetCard(0x1d) and (c:IsControler(tp) or c:IsFaceup()) -end -function c72258771.otcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local mg=Duel.GetMatchingGroup(c72258771.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 -end -function c72258771.otop(e,tp,eg,ep,ev,re,r,rp,c) - local mg=Duel.GetMatchingGroup(c72258771.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - local sg=Duel.SelectTribute(tp,c,1,1,mg) - c:SetMaterial(sg) - Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) -end -function c72258771.efilter(e,re,rp) - return re:IsActiveType(TYPE_TRAP) -end +--コアキメイル・ヴァラファール +function c72258771.initial_effect(c) + --cost + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c72258771.mtcon) + e1:SetOperation(c72258771.mtop) + c:RegisterEffect(e1) + --summon with 1 tribute + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(72258771,2)) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_PROC) + e2:SetCondition(c72258771.otcon) + e2:SetOperation(c72258771.otop) + e2:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e2) + --pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c72258771.efilter) + c:RegisterEffect(e4) +end +function c72258771.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c72258771.cfilter1(c) + return c:IsCode(36623431) and c:IsAbleToGraveAsCost() +end +function c72258771.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.HintSelection(Group.FromCards(c)) + local g1=Duel.GetMatchingGroup(c72258771.cfilter1,tp,LOCATION_HAND,0,nil) + local select=1 + if g1:GetCount()>0 then + select=Duel.SelectOption(tp,aux.Stringid(72258771,0),aux.Stringid(72258771,1)) + else + select=Duel.SelectOption(tp,aux.Stringid(72258771,1))+1 + end + if select==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=g1:Select(tp,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + else + Duel.Destroy(c,REASON_COST) + end +end +function c72258771.otfilter(c,tp) + return c:IsSetCard(0x1d) and (c:IsControler(tp) or c:IsFaceup()) +end +function c72258771.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c72258771.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) +end +function c72258771.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c72258771.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local sg=Duel.SelectTribute(tp,c,1,1,mg) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c72258771.efilter(e,re,rp) + return re:IsActiveType(TYPE_TRAP) +end diff --git a/script/c72291078.lua b/script/c72291078.lua index c1a9c369..c478fc0b 100644 --- a/script/c72291078.lua +++ b/script/c72291078.lua @@ -1,72 +1,72 @@ ---幻獣機オライオン -function c72291078.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_INDESTRUCTABLE_BATTLE) - e1:SetCondition(c72291078.indcon) - e1:SetValue(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e2) - --summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(72291078,0)) - e3:SetCategory(CATEGORY_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_GRAVE) - e3:SetCost(c72291078.cost) - e3:SetTarget(c72291078.target) - e3:SetOperation(c72291078.operation) - c:RegisterEffect(e3) - --token - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(72291078,1)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_DELAY) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetCountLimit(1,72291078) - e4:SetTarget(c72291078.sptg) - e4:SetOperation(c72291078.spop) - c:RegisterEffect(e4) -end -function c72291078.indcon(e) - return Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,TYPE_TOKEN) -end -function c72291078.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c72291078.filter(c) - return c:IsSetCard(0x101b) and c:IsSummonable(true,nil) -end -function c72291078.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c72291078.filter,tp,LOCATION_HAND,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) -end -function c72291078.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) - local g=Duel.SelectMatchingCard(tp,c72291078.filter,tp,LOCATION_HAND,0,1,1,nil) - local tc=g:GetFirst() - if tc then - Duel.Summon(tp,tc,true,nil) - end -end -function c72291078.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c72291078.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then - local token=Duel.CreateToken(tp,72291079) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) - end -end +--幻獣機オライオン +function c72291078.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_INDESTRUCTABLE_BATTLE) + e1:SetCondition(c72291078.indcon) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + --summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(72291078,0)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c72291078.cost) + e3:SetTarget(c72291078.target) + e3:SetOperation(c72291078.operation) + c:RegisterEffect(e3) + --token + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(72291078,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,72291078) + e4:SetTarget(c72291078.sptg) + e4:SetOperation(c72291078.spop) + c:RegisterEffect(e4) +end +function c72291078.indcon(e) + return Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,TYPE_TOKEN) +end +function c72291078.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c72291078.filter(c) + return c:IsSetCard(0x101b) and c:IsSummonable(true,nil) +end +function c72291078.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c72291078.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c72291078.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c72291078.filter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil) + end +end +function c72291078.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c72291078.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then + local token=Duel.CreateToken(tp,72291079) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c72291412.lua b/script/c72291412.lua index e112c272..517f1bc8 100644 --- a/script/c72291412.lua +++ b/script/c72291412.lua @@ -1,75 +1,75 @@ ---DDネクロ・スライム -function c72291412.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1,72291412) - e1:SetTarget(c72291412.target) - e1:SetOperation(c72291412.operation) - c:RegisterEffect(e1) -end -function c72291412.filter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() -end -function c72291412.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) -end -function c72291412.filter2(c,e,tp,m,f,gc) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x10af) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) -end -function c72291412.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then - local mg1=Duel.GetMatchingGroup(c72291412.filter0,tp,LOCATION_GRAVE,0,c) - local res=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c72291412.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c72291412.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c72291412.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end - local mg1=Duel.GetMatchingGroup(c72291412.filter1,tp,LOCATION_GRAVE,0,c,e) - local sg1=Duel.GetMatchingGroup(c72291412.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c72291412.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) - end - if (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and sg1:GetCount()>0) or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) - tc:SetMaterial(mat1) - Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end +--DDネクロ・スライム +function c72291412.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1,72291412) + e1:SetTarget(c72291412.target) + e1:SetOperation(c72291412.operation) + c:RegisterEffect(e1) +end +function c72291412.filter0(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end +function c72291412.filter1(c,e) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c72291412.filter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x10af) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) +end +function c72291412.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetMatchingGroup(c72291412.filter0,tp,LOCATION_GRAVE,0,c) + local res=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c72291412.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c72291412.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c72291412.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end + local mg1=Duel.GetMatchingGroup(c72291412.filter1,tp,LOCATION_GRAVE,0,c,e) + local sg1=Duel.GetMatchingGroup(c72291412.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c72291412.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and sg1:GetCount()>0) or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c72332074.lua b/script/c72332074.lua new file mode 100644 index 00000000..51991816 --- /dev/null +++ b/script/c72332074.lua @@ -0,0 +1,82 @@ +--超量必殺アルファンボール +function c72332074.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(72332074,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c72332074.condition) + e1:SetTarget(c72332074.target) + e1:SetOperation(c72332074.activate) + c:RegisterEffect(e1) + --activate field spell + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(72332074,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c72332074.actcost) + e2:SetTarget(c72332074.acttg) + e2:SetOperation(c72332074.actop) + c:RegisterEffect(e2) +end +function c72332074.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x10dc) +end +function c72332074.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c72332074.cfilter,tp,LOCATION_MZONE,0,nil) + return g:GetClassCount(Card.GetCode)>=3 +end +function c72332074.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,1,nil) + and Duel.GetFieldGroupCount(tp,0,LOCATION_EXTRA)>0 and Duel.IsPlayerCanSpecialSummon(1-tp) end + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c72332074.spfilter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c72332074.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,nil) + if Duel.SendtoDeck(g,nil,2,REASON_EFFECT)~=0 + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c72332074.spfilter,1-tp,LOCATION_EXTRA,0,1,nil,e,1-tp) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(1-tp,c72332074.spfilter,1-tp,LOCATION_EXTRA,0,1,1,nil,e,1-tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,1-tp,1-tp,true,false,POS_FACEUP) + end + end +end +function c72332074.costfilter(c) + return c:IsCode(58753372) and c:IsAbleToRemoveAsCost() +end +function c72332074.actcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c72332074.costfilter,tp,LOCATION_GRAVE,0,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c72332074.costfilter,tp,LOCATION_GRAVE,0,1,1,c) + g:AddCard(c) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c72332074.actfilter(c,tp) + return c:IsCode(10424147) and c:GetActivateEffect():IsActivatable(tp) +end +function c72332074.acttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c72332074.actfilter,tp,LOCATION_DECK,0,1,nil,tp) end +end +function c72332074.actop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstMatchingCard(c72332074.actfilter,tp,LOCATION_DECK,0,nil,tp) + if tc then + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc then + Duel.SendtoGrave(fc,REASON_RULE) + Duel.BreakEffect() + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.RaiseEvent(tc,EVENT_CHAIN_SOLVED,tc:GetActivateEffect(),0,tp,tp,Duel.GetCurrentChain()) + end +end diff --git a/script/c72378329.lua b/script/c72378329.lua index 59ec2c6d..3054f555 100644 --- a/script/c72378329.lua +++ b/script/c72378329.lua @@ -1,89 +1,89 @@ ---ビーストアイズ・ペンデュラム・ドラゴン -function c72378329.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,c72378329.ffilter,aux.FilterBoolFunction(Card.IsRace,RACE_BEAST),false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c72378329.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c72378329.spcon) - e2:SetOperation(c72378329.spop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCode(EVENT_BATTLE_DESTROYING) - e3:SetCondition(c72378329.damcon) - e3:SetTarget(c72378329.damtg) - e3:SetOperation(c72378329.damop) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_MATERIAL_CHECK) - e4:SetValue(c72378329.valcheck) - e4:SetLabelObject(e3) - c:RegisterEffect(e4) -end -function c72378329.ffilter(c) - return c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) -end -function c72378329.splimit(e,se,sp,st) - return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c72378329.spfilter1(c,tp,fc) - return c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsCanBeFusionMaterial(fc) - and Duel.CheckReleaseGroup(tp,c72378329.spfilter2,1,c,fc) -end -function c72378329.spfilter2(c,fc) - return c:IsRace(RACE_BEAST) and c:IsCanBeFusionMaterial(fc) -end -function c72378329.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.CheckReleaseGroup(tp,c72378329.spfilter1,1,nil,tp,c) -end -function c72378329.spop(e,tp,eg,ep,ev,re,r,rp,c) - local g1=Duel.SelectReleaseGroup(tp,c72378329.spfilter1,1,1,nil,tp,c) - local g2=Duel.SelectReleaseGroup(tp,c72378329.spfilter2,1,1,g1:GetFirst(),c) - g1:Merge(g2) - c:SetMaterial(g1) - Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL) -end -function c72378329.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsRelateToBattle() and bc:IsType(TYPE_MONSTER) -end -function c72378329.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local dam=e:GetLabel() - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(dam) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) -end -function c72378329.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c72378329.valcheck(e,c) - local g=c:GetMaterial():Filter(Card.IsRace,nil,RACE_BEAST) - local atk=0 - if g:GetCount()>0 then - atk=g:GetFirst():GetTextAttack() - if atk<0 then atk=0 end - end - e:GetLabelObject():SetLabel(atk) -end +--ビーストアイズ・ペンデュラム・ドラゴン +function c72378329.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,c72378329.ffilter,aux.FilterBoolFunction(Card.IsRace,RACE_BEAST),false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c72378329.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c72378329.spcon) + e2:SetOperation(c72378329.spop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c72378329.damcon) + e3:SetTarget(c72378329.damtg) + e3:SetOperation(c72378329.damop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_MATERIAL_CHECK) + e4:SetValue(c72378329.valcheck) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) +end +function c72378329.ffilter(c) + return c:IsRace(RACE_DRAGON) and c:IsFusionAttribute(ATTRIBUTE_DARK) +end +function c72378329.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c72378329.spfilter1(c,tp,fc) + return c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsCanBeFusionMaterial(fc) + and Duel.CheckReleaseGroup(tp,c72378329.spfilter2,1,c,fc) +end +function c72378329.spfilter2(c,fc) + return c:IsRace(RACE_BEAST) and c:IsCanBeFusionMaterial(fc) +end +function c72378329.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.CheckReleaseGroup(tp,c72378329.spfilter1,1,nil,tp,c) +end +function c72378329.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g1=Duel.SelectReleaseGroup(tp,c72378329.spfilter1,1,1,nil,tp,c) + local g2=Duel.SelectReleaseGroup(tp,c72378329.spfilter2,1,1,g1:GetFirst(),c) + g1:Merge(g2) + c:SetMaterial(g1) + Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL) +end +function c72378329.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsType(TYPE_MONSTER) +end +function c72378329.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetLabel() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) +end +function c72378329.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c72378329.valcheck(e,c) + local g=c:GetMaterial():Filter(Card.IsRace,nil,RACE_BEAST) + local atk=0 + if g:GetCount()>0 then + atk=g:GetFirst():GetTextAttack() + if atk<0 then atk=0 end + end + e:GetLabelObject():SetLabel(atk) +end diff --git a/script/c72403299.lua b/script/c72403299.lua index b7a31b04..979b2c40 100644 --- a/script/c72403299.lua +++ b/script/c72403299.lua @@ -1,32 +1,32 @@ ---リチュア・ディバイナー -function c72403299.initial_effect(c) - --announce - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(72403299,0)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c72403299.target) - e1:SetOperation(c72403299.operation) - c:RegisterEffect(e1) -end -function c72403299.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,0) - local ac=Duel.AnnounceCard(tp) - Duel.SetTargetParam(ac) - Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) -end -function c72403299.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then return end - Duel.ConfirmDecktop(tp,1) - local g=Duel.GetDecktopGroup(tp,1) - local tc=g:GetFirst() - local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - if tc:IsCode(ac) and tc:IsAbleToHand() then - Duel.DisableShuffleCheck() - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ShuffleHand(tp) - end -end +--リチュア・ディバイナー +function c72403299.initial_effect(c) + --announce + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(72403299,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c72403299.target) + e1:SetOperation(c72403299.operation) + c:RegisterEffect(e1) +end +function c72403299.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToHand,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,0) + local ac=Duel.AnnounceCard(tp) + Duel.SetTargetParam(ac) + Duel.SetOperationInfo(0,CATEGORY_ANNOUNCE,nil,0,tp,ANNOUNCE_CARD) +end +function c72403299.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then return end + Duel.ConfirmDecktop(tp,1) + local g=Duel.GetDecktopGroup(tp,1) + local tc=g:GetFirst() + local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if tc:IsCode(ac) and tc:IsAbleToHand() then + Duel.DisableShuffleCheck() + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ShuffleHand(tp) + end +end diff --git a/script/c7241272.lua b/script/c7241272.lua index 5e6bd693..636f7f61 100644 --- a/script/c7241272.lua +++ b/script/c7241272.lua @@ -16,7 +16,7 @@ function c7241272.initial_effect(c) --special summon local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(7241272,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1) @@ -41,7 +41,7 @@ function c7241272.desop(e,tp,eg,ep,ev,re,r,rp) end end function c7241272.spfilter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return c:IsOnField() and not c:IsImmuneToEffect(e) end function c7241272.spfilter2(c,e,tp,m,f,gc) return c:IsType(TYPE_FUSION) and (not f or f(c)) @@ -50,7 +50,7 @@ end function c7241272.sptg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() if chk==0 then - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,c) + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,c) local res=Duel.IsExistingMatchingCard(c7241272.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) if not res then local ce=Duel.GetChainMaterial(tp) @@ -68,7 +68,7 @@ end function c7241272.spop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end - local mg1=Duel.GetMatchingGroup(c7241272.spfilter1,tp,LOCATION_MZONE,0,c,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c7241272.spfilter1,c,e) local sg1=Duel.GetMatchingGroup(c7241272.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) local mg2=nil local sg2=nil diff --git a/script/c72413000.lua b/script/c72413000.lua index 9a80443d..a0eebb9b 100644 --- a/script/c72413000.lua +++ b/script/c72413000.lua @@ -1,52 +1,52 @@ ---ファーニマル・ウィング -function c72413000.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1,72413000) - e1:SetCondition(c72413000.condition) - e1:SetCost(c72413000.cost) - e1:SetTarget(c72413000.target) - e1:SetOperation(c72413000.operation) - c:RegisterEffect(e1) -end -function c72413000.cfilter(c) - return c:IsFaceup() and c:IsCode(70245411) -end -function c72413000.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c72413000.cfilter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c72413000.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c72413000.filter(c) - return c:IsSetCard(0xa9) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() -end -function c72413000.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c72413000.filter(chkc) end - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsExistingTarget(c72413000.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c72413000.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c72413000.tgfilter(c) - return c:IsFaceup() and c:IsCode(70245411) and c:IsAbleToGrave() -end -function c72413000.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 - and Duel.Draw(tp,1,REASON_EFFECT)~=0 and Duel.IsExistingMatchingCard(c72413000.tgfilter,tp,LOCATION_ONFIELD,0,1,nil) - and Duel.IsPlayerCanDraw(tp,1) and Duel.SelectYesNo(tp,aux.Stringid(72413000,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c72413000.tgfilter,tp,LOCATION_ONFIELD,0,1,1,nil) - if Duel.SendtoGrave(g,REASON_EFFECT)~=0 and g:GetFirst():IsLocation(LOCATION_GRAVE) then - Duel.Draw(tp,1,REASON_EFFECT) - end - end -end +--ファーニマル・ウィング +function c72413000.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1,72413000) + e1:SetCondition(c72413000.condition) + e1:SetCost(c72413000.cost) + e1:SetTarget(c72413000.target) + e1:SetOperation(c72413000.operation) + c:RegisterEffect(e1) +end +function c72413000.cfilter(c) + return c:IsFaceup() and c:IsCode(70245411) +end +function c72413000.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c72413000.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c72413000.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c72413000.filter(c) + return c:IsSetCard(0xa9) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() +end +function c72413000.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c72413000.filter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and Duel.IsExistingTarget(c72413000.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c72413000.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c72413000.tgfilter(c) + return c:IsFaceup() and c:IsCode(70245411) and c:IsAbleToGrave() +end +function c72413000.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 + and Duel.Draw(tp,1,REASON_EFFECT)~=0 and Duel.IsExistingMatchingCard(c72413000.tgfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.IsPlayerCanDraw(tp,1) and Duel.SelectYesNo(tp,aux.Stringid(72413000,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c72413000.tgfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + if Duel.SendtoGrave(g,REASON_EFFECT)~=0 and g:GetFirst():IsLocation(LOCATION_GRAVE) then + Duel.Draw(tp,1,REASON_EFFECT) + end + end +end diff --git a/script/c72446038.lua b/script/c72446038.lua index f47c13a1..d57b05c1 100644 --- a/script/c72446038.lua +++ b/script/c72446038.lua @@ -1,4 +1,4 @@ ---合成魔術 -function c72446038.initial_effect(c) - aux.AddRitualProcGreaterCode(c,84385264) -end +--合成魔術 +function c72446038.initial_effect(c) + aux.AddRitualProcGreaterCode(c,84385264) +end diff --git a/script/c72491806.lua b/script/c72491806.lua index c56a27f7..b869dede 100644 --- a/script/c72491806.lua +++ b/script/c72491806.lua @@ -1,66 +1,66 @@ ---U.A.ファンタジスタ -function c72491806.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,72491806) - e1:SetCondition(c72491806.spcon) - e1:SetOperation(c72491806.spop) - c:RegisterEffect(e1) - --to hand and spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(72491806,0)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,72491807) - e2:SetTarget(c72491806.tstg) - e2:SetOperation(c72491806.tsop) - c:RegisterEffect(e2) -end -function c72491806.spfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(72491806) and c:IsAbleToHandAsCost() -end -function c72491806.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c72491806.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c72491806.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectMatchingCard(tp,c72491806.spfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoHand(g,nil,REASON_COST) -end -function c72491806.thfilter(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0xb2) and c:IsAbleToHand() - and Duel.IsExistingMatchingCard(c72491806.spfilter2,tp,LOCATION_HAND,0,1,nil,e,tp,c:GetCode()) -end -function c72491806.spfilter2(c,e,tp,code) - return c:IsSetCard(0xb2) and not c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c72491806.tstg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c72491806.thfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c72491806.thfilter,tp,LOCATION_MZONE,0,1,e:GetHandler(),e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c72491806.thfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler(),e,tp) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c72491806.tsop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c72491806.spfilter2,tp,LOCATION_HAND,0,1,1,nil,e,tp,tc:GetCode()) - if sg:GetCount()>0 then - Duel.BreakEffect() - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - end - end -end +--U.A.ファンタジスタ +function c72491806.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,72491806) + e1:SetCondition(c72491806.spcon) + e1:SetOperation(c72491806.spop) + c:RegisterEffect(e1) + --to hand and spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(72491806,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,72491807) + e2:SetTarget(c72491806.tstg) + e2:SetOperation(c72491806.tsop) + c:RegisterEffect(e2) +end +function c72491806.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(72491806) and c:IsAbleToHandAsCost() +end +function c72491806.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c72491806.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c72491806.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c72491806.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c72491806.thfilter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0xb2) and c:IsAbleToHand() + and Duel.IsExistingMatchingCard(c72491806.spfilter2,tp,LOCATION_HAND,0,1,nil,e,tp,c:GetCode()) +end +function c72491806.spfilter2(c,e,tp,code) + return c:IsSetCard(0xb2) and not c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c72491806.tstg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c72491806.thfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c72491806.thfilter,tp,LOCATION_MZONE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c72491806.thfilter,tp,LOCATION_MZONE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c72491806.tsop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c72491806.spfilter2,tp,LOCATION_HAND,0,1,1,nil,e,tp,tc:GetCode()) + if sg:GetCount()>0 then + Duel.BreakEffect() + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c72497366.lua b/script/c72497366.lua index a4b3b9bc..1f235c10 100644 --- a/script/c72497366.lua +++ b/script/c72497366.lua @@ -25,9 +25,9 @@ function c72497366.initial_effect(c) e3:SetValue(1) c:RegisterEffect(e3) end -function c72497366.ntcon(e,c) +function c72497366.ntcon(e,c,minc) if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + return minc==0 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 end function c72497366.nttg(e,c) return c:IsLevelAbove(5) and c:IsRace(RACE_FIEND) diff --git a/script/c72520073.lua b/script/c72520073.lua index aed677d8..7371123d 100644 --- a/script/c72520073.lua +++ b/script/c72520073.lua @@ -2,26 +2,19 @@ function c72520073.initial_effect(c) --defdown local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(72520073,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_START) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetRange(LOCATION_MZONE) e1:SetCondition(c72520073.defcon) - e1:SetOperation(c72520073.defop) + e1:SetValue(c72520073.defval) c:RegisterEffect(e1) end -function c72520073.defcon(e,tp,eg,ep,ev,re,r,rp) +function c72520073.defcon(e) local c=e:GetHandler() local bc=c:GetBattleTarget() - return c==Duel.GetAttackTarget() and bc:IsAttribute(ATTRIBUTE_LIGHT) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and c==Duel.GetAttackTarget() and bc:IsAttribute(ATTRIBUTE_LIGHT) end -function c72520073.defop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_DEFENSE) - e1:SetValue(c:GetDefense()/2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - c:RegisterEffect(e1) - end +function c72520073.defval(e,c) + return math.ceil(e:GetHandler():GetDefense()/2) end diff --git a/script/c72537897.lua b/script/c72537897.lua index aee3001c..700b4a4a 100644 --- a/script/c72537897.lua +++ b/script/c72537897.lua @@ -1,101 +1,101 @@ ---魔獣の懐柔 -function c72537897.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c72537897.condition) - e1:SetTarget(c72537897.target) - e1:SetOperation(c72537897.activate) - c:RegisterEffect(e1) -end -function c72537897.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c72537897.spfilter(c,e,tp) - return c:IsRace(RACE_BEAST) and c:IsLevelBelow(2) and c:IsType(TYPE_EFFECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c72537897.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=Duel.GetMatchingGroup(c72537897.spfilter,tp,LOCATION_DECK,0,nil,e,tp) - return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and g:GetClassCount(Card.GetCode)>=3 end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_DECK) -end -function c72537897.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c72537897.spfilter,tp,LOCATION_DECK,0,nil,e,tp) - if not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 - and g:GetClassCount(Card.GetCode)>=3 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg1=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,sg1:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg2=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,sg2:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg3=g:Select(tp,1,1,nil) - sg1:Merge(sg2) - sg1:Merge(sg3) - local fid=c:GetFieldID() - local tc=sg1:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(72537897,RESET_EVENT+0x1fe0000,0,1,fid) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - tc=sg1:GetNext() - end - sg1:KeepAlive() - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetCountLimit(1) - e3:SetLabel(fid) - e3:SetLabelObject(sg1) - e3:SetCondition(c72537897.descon) - e3:SetOperation(c72537897.desop) - Duel.RegisterEffect(e3,tp) - Duel.SpecialSummonComplete() - end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetTargetRange(1,0) - e1:SetTarget(c72537897.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - end -end -function c72537897.splimit(e,c) - return c:GetRace()~=RACE_BEAST -end -function c72537897.desfilter(c,fid) - return c:GetFlagEffectLabel(72537897)==fid -end -function c72537897.descon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c72537897.desfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c72537897.desop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c72537897.desfilter,nil,e:GetLabel()) - Duel.Destroy(tg,REASON_EFFECT) -end +--魔獣の懐柔 +function c72537897.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c72537897.condition) + e1:SetTarget(c72537897.target) + e1:SetOperation(c72537897.activate) + c:RegisterEffect(e1) +end +function c72537897.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c72537897.spfilter(c,e,tp) + return c:IsRace(RACE_BEAST) and c:IsLevelBelow(2) and c:IsType(TYPE_EFFECT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c72537897.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetMatchingGroup(c72537897.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and g:GetClassCount(Card.GetCode)>=3 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_DECK) +end +function c72537897.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c72537897.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>2 + and g:GetClassCount(Card.GetCode)>=3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,sg1:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,sg2:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg3=g:Select(tp,1,1,nil) + sg1:Merge(sg2) + sg1:Merge(sg3) + local fid=c:GetFieldID() + local tc=sg1:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(72537897,RESET_EVENT+0x1fe0000,0,1,fid) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=sg1:GetNext() + end + sg1:KeepAlive() + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCountLimit(1) + e3:SetLabel(fid) + e3:SetLabelObject(sg1) + e3:SetCondition(c72537897.descon) + e3:SetOperation(c72537897.desop) + Duel.RegisterEffect(e3,tp) + Duel.SpecialSummonComplete() + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetTargetRange(1,0) + e1:SetTarget(c72537897.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c72537897.splimit(e,c) + return c:GetRace()~=RACE_BEAST +end +function c72537897.desfilter(c,fid) + return c:GetFlagEffectLabel(72537897)==fid +end +function c72537897.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c72537897.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c72537897.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c72537897.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c72575145.lua b/script/c72575145.lua index 252c519b..3102fbd1 100644 --- a/script/c72575145.lua +++ b/script/c72575145.lua @@ -1,44 +1,13 @@ --降格処分 function c72575145.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(c72575145.target) - e1:SetOperation(c72575145.operation) - c:RegisterEffect(e1) - --Atk,def + aux.AddEquipProcedure(c,nil,c72575145.filter) + --lvl local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_LEVEL) e2:SetValue(-2) c:RegisterEffect(e2) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetValue(c72575145.eqlimit) - c:RegisterEffect(e4) -end -function c72575145.eqlimit(e,c) - return c:GetLevel()>0 end function c72575145.filter(c) - return c:IsFaceup() and c:GetLevel()>0 -end -function c72575145.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c72575145.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c72575145.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c72575145.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c72575145.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 + return c:GetLevel()>0 end diff --git a/script/c72580321.lua b/script/c72580321.lua index 4e15de30..bb346ff6 100644 --- a/script/c72580321.lua +++ b/script/c72580321.lua @@ -1,55 +1,54 @@ ---ブロック・ゴーレム -function c72580321.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(72580321,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c72580321.spcon) - e1:SetCost(c72580321.spcost) - e1:SetTarget(c72580321.sptg) - e1:SetOperation(c72580321.spop) - c:RegisterEffect(e1) -end -function c72580321.cfilter(c) - return c:GetAttribute()~=ATTRIBUTE_EARTH -end -function c72580321.spcon(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) - return g:GetCount()>0 and not g:IsExists(c72580321.cfilter,1,nil) -end -function c72580321.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c72580321.filter(c,e,tp) - return c:IsLevelBelow(4) and not c:IsCode(72580321) and c:IsRace(RACE_ROCK) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c72580321.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c72580321.filter(chkc,e,tp) end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c72580321.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c72580321.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) -end -function c72580321.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if Duel.GetLocationCount(tp,LOCATION_MZONE)0 and not g:IsExists(c72580321.cfilter,1,nil) +end +function c72580321.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c72580321.filter(c,e,tp) + return c:IsLevelBelow(4) and not c:IsCode(72580321) and c:IsRace(RACE_ROCK) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c72580321.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c72580321.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c72580321.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c72580321.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c72580321.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if Duel.GetLocationCount(tp,LOCATION_MZONE)1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + local tc=g:GetFirst() + while tc do + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c72621670.lua b/script/c72621670.lua index 702a379f..d0d88fdb 100644 --- a/script/c72621670.lua +++ b/script/c72621670.lua @@ -1,39 +1,39 @@ ---ダブルマジックアームバインド -function c72621670.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_CONTROL) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCost(c72621670.cost) - e1:SetTarget(c72621670.target) - e1:SetOperation(c72621670.activate) - c:RegisterEffect(e1) -end -function c72621670.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,nil,2,nil) end - local g=Duel.SelectReleaseGroup(tp,nil,2,2,nil) - Duel.Release(g,REASON_COST) -end -function c72621670.filter(c) - return c:IsFaceup() and c:IsAbleToChangeControler() -end -function c72621670.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE,1-tp,LOCATION_REASON_CONTROL)>=0 - and Duel.IsExistingTarget(c72621670.filter,tp,0,LOCATION_MZONE,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c72621670.filter,tp,0,LOCATION_MZONE,2,2,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,2,0,0) -end -function c72621670.tfilter(c,e) - return c:IsRelateToEffect(e) and c:IsFaceup() -end -function c72621670.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c72621670.tfilter,nil,e) - if g:GetCount()<2 then return end - local rct=1 - if Duel.GetTurnPlayer()~=tp then rct=2 end - Duel.GetControl(g,tp,PHASE_END,rct) -end +--ダブルマジックアームバインド +function c72621670.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c72621670.cost) + e1:SetTarget(c72621670.target) + e1:SetOperation(c72621670.activate) + c:RegisterEffect(e1) +end +function c72621670.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,2,nil) end + local g=Duel.SelectReleaseGroup(tp,nil,2,2,nil) + Duel.Release(g,REASON_COST) +end +function c72621670.filter(c) + return c:IsFaceup() and c:IsAbleToChangeControler() +end +function c72621670.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE,1-tp,LOCATION_REASON_CONTROL)>=0 + and Duel.IsExistingTarget(c72621670.filter,tp,0,LOCATION_MZONE,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c72621670.filter,tp,0,LOCATION_MZONE,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,2,0,0) +end +function c72621670.tfilter(c,e) + return c:IsRelateToEffect(e) and c:IsFaceup() +end +function c72621670.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c72621670.tfilter,nil,e) + if g:GetCount()<2 then return end + local rct=1 + if Duel.GetTurnPlayer()~=tp then rct=2 end + Duel.GetControl(g,tp,PHASE_END,rct) +end diff --git a/script/c72648577.lua b/script/c72648577.lua index 1e41e761..f9dc410b 100644 --- a/script/c72648577.lua +++ b/script/c72648577.lua @@ -1,47 +1,46 @@ ---DDDの人事権 -function c72648577.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c72648577.target) - e1:SetOperation(c72648577.operation) - c:RegisterEffect(e1) -end -function c72648577.filter(c) - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return false end - if c:IsLocation(LOCATION_SZONE) then - if c:GetSequence()<6 then return false end - elseif not c:IsType(TYPE_MONSTER) then return false end - return c:IsSetCard(0xaf) and c:IsAbleToDeck() -end -function c72648577.thfilter(c) - return c:IsSetCard(0xaf) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c72648577.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c72648577.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE+LOCATION_HAND,0,3,nil) end - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,3,tp,LOCATION_ONFIELD+LOCATION_GRAVE+LOCATION_HAND) -end -function c72648577.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c72648577.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE+LOCATION_HAND,0,nil) - if g:GetCount()<3 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local sg=g:Select(tp,3,3,nil) - if sg:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - local cg=sg:Filter(Card.IsLocation,nil,LOCATION_HAND) - Duel.ConfirmCards(1-tp,cg) - Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) - local dg=Duel.GetMatchingGroup(c72648577.thfilter,tp,LOCATION_DECK,0,nil) - if dg:GetCount()>1 and Duel.SelectYesNo(tp,aux.Stringid(72648577,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local tg=dg:Select(tp,2,2,nil) - Duel.SendtoHand(tg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tg) - else - if sg:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then - Duel.ShuffleDeck(tp) - end - end -end +--DDDの人事権 +function c72648577.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c72648577.target) + e1:SetOperation(c72648577.operation) + c:RegisterEffect(e1) +end +function c72648577.filter(c) + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return false end + if c:IsLocation(LOCATION_SZONE) then + if c:GetSequence()<6 then return false end + elseif not c:IsType(TYPE_MONSTER) then return false end + return c:IsSetCard(0xaf) and c:IsAbleToDeck() +end +function c72648577.thfilter(c) + return c:IsSetCard(0xaf) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c72648577.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c72648577.filter,tp,LOCATION_ONFIELD+LOCATION_GRAVE+LOCATION_HAND,0,3,nil) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,3,tp,LOCATION_ONFIELD+LOCATION_GRAVE+LOCATION_HAND) +end +function c72648577.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c72648577.filter),tp,LOCATION_ONFIELD+LOCATION_GRAVE+LOCATION_HAND,0,nil) + if g:GetCount()<3 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local sg=g:Select(tp,3,3,nil) + local cg=sg:Filter(Card.IsLocation,nil,LOCATION_HAND) + Duel.ConfirmCards(1-tp,cg) + Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) + local dg=Duel.GetMatchingGroup(c72648577.thfilter,tp,LOCATION_DECK,0,nil) + if dg:GetCount()>1 and Duel.SelectYesNo(tp,aux.Stringid(72648577,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tg=dg:Select(tp,2,2,nil) + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + else + if sg:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then + Duel.ShuffleDeck(tp) + end + end +end diff --git a/script/c7264861.lua b/script/c7264861.lua index cf11edce..8f0de628 100644 --- a/script/c7264861.lua +++ b/script/c7264861.lua @@ -2,24 +2,17 @@ function c7264861.initial_effect(c) --actlimit local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c7264861.condition) - e1:SetOperation(c7264861.operation) - c:RegisterEffect(e1) -end -function c7264861.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 -end -function c7264861.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(0,1) e1:SetValue(c7264861.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) + e1:SetCondition(c7264861.condition) + c:RegisterEffect(e1) +end +function c7264861.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 and Duel.GetAttacker()==e:GetHandler() end function c7264861.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) diff --git a/script/c72648810.lua b/script/c72648810.lua index 786b8586..64c35b76 100644 --- a/script/c72648810.lua +++ b/script/c72648810.lua @@ -18,15 +18,14 @@ function c72648810.condition(e,tp,eg,ep,ev,re,r,rp) and Duel.IsChainNegatable(ev) end function c72648810.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end + if chk==0 then return re:GetHandler():IsAbleToRemove() end Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsAbleToRemove() and re:GetHandler():IsRelateToEffect(re) then + if re:GetHandler():IsRelateToEffect(re) then Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) end end function c72648810.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Remove(eg,POS_FACEUP,REASON_EFFECT) end end diff --git a/script/c7268133.lua b/script/c7268133.lua index 85750c28..58cc5014 100644 --- a/script/c7268133.lua +++ b/script/c7268133.lua @@ -32,13 +32,14 @@ end function c7268133.spop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) + if Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SET_ATTACK_FINAL) e1:SetValue(ev) - e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetReset(RESET_EVENT+0x1ff0000) c:RegisterEffect(e1) + Duel.SpecialSummonComplete() elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then Duel.SendtoGrave(c,REASON_RULE) diff --git a/script/c72709014.lua b/script/c72709014.lua index 09b0bfb8..07bb76c8 100644 --- a/script/c72709014.lua +++ b/script/c72709014.lua @@ -1,27 +1,12 @@ --王女の試練 function c72709014.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(c72709014.target) - e1:SetOperation(c72709014.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,81383947,46128076)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(800) 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(c72709014.eqlimit) - c:RegisterEffect(e3) --equip local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -41,25 +26,6 @@ function c72709014.initial_effect(c) e5:SetOperation(c72709014.spop) c:RegisterEffect(e5) end -function c72709014.eqlimit(e,c) - return c:IsCode(81383947,46128076) -end -function c72709014.filter(c) - return c:IsFaceup() and c:IsCode(81383947,46128076) -end -function c72709014.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c72709014.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c72709014.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c72709014.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c72709014.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 c72709014.regfilter(c,ec) return c==ec and c:GetBattleTarget():IsLevelAbove(5) end diff --git a/script/c72714226.lua b/script/c72714226.lua index fa837b02..ea9f1f29 100644 --- a/script/c72714226.lua +++ b/script/c72714226.lua @@ -27,11 +27,14 @@ function c72714226.operation(e,tp,eg,ep,ev,re,r,rp) if ct<=0 then return end local g=Duel.GetMatchingGroup(c72714226.filter,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()>0 then - local tc1=g:GetFirst() + local tc1=g:GetFirst() local tc2=g:GetNext() Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) - if tc2 and ct>1 and Duel.SelectYesNo(tp,aux.Stringid(72714226,1)) then + ct=ct-1 + while tc2 and ct>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.SelectYesNo(tp,aux.Stringid(72714226,1)) then Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) + ct=ct-1 + tc2=g:GetNext() end Duel.SpecialSummonComplete() end diff --git a/script/c72714392.lua b/script/c72714392.lua index 5e2eff9a..beb2af17 100644 --- a/script/c72714392.lua +++ b/script/c72714392.lua @@ -1,61 +1,61 @@ ---BF-大旆のヴァーユ -function c72714392.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(72714392,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_GRAVE) - e1:SetTarget(c72714392.target) - e1:SetOperation(c72714392.operation) - c:RegisterEffect(e1) - --synchro limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(aux.TRUE) - c:RegisterEffect(e2) -end -function c72714392.filter(c,e,tp) - local lv=c:GetLevel() - return lv>0 and c:IsSetCard(0x33) and not c:IsType(TYPE_TUNER) and c:IsAbleToRemove() - and Duel.IsExistingMatchingCard(c72714392.exfilter,tp,LOCATION_EXTRA,0,1,nil,lv+1,e,tp) -end -function c72714392.exfilter(c,lv,e,tp) - return c:IsSetCard(0x33) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c72714392.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c72714392.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c72714392.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c72714392.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c72714392.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or not c:IsRelateToEffect(e) then return end - local rg=Group.FromCards(c,tc) - if Duel.Remove(rg,POS_FACEUP,REASON_EFFECT)==2 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c72714392.exfilter,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetLevel()+1,e,tp) - local sc=sg:GetFirst() - if sc and Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - sc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - sc:RegisterEffect(e2) - end - end -end +--BF-大旆のヴァーユ +function c72714392.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(72714392,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetTarget(c72714392.target) + e1:SetOperation(c72714392.operation) + c:RegisterEffect(e1) + --synchro limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(aux.TRUE) + c:RegisterEffect(e2) +end +function c72714392.filter(c,e,tp) + local lv=c:GetLevel() + return lv>0 and c:IsSetCard(0x33) and not c:IsType(TYPE_TUNER) and c:IsAbleToRemove() + and Duel.IsExistingMatchingCard(c72714392.exfilter,tp,LOCATION_EXTRA,0,1,nil,lv+1,e,tp) +end +function c72714392.exfilter(c,lv,e,tp) + return c:IsSetCard(0x33) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c72714392.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c72714392.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c72714392.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler(),e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c72714392.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c72714392.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or not c:IsRelateToEffect(e) then return end + local rg=Group.FromCards(c,tc) + if Duel.Remove(rg,POS_FACEUP,REASON_EFFECT)==2 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c72714392.exfilter,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetLevel()+1,e,tp) + local sc=sg:GetFirst() + if sc and Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e2) + end + end +end diff --git a/script/c72714461.lua b/script/c72714461.lua index b6871c9e..8b55c7f1 100644 --- a/script/c72714461.lua +++ b/script/c72714461.lua @@ -1,77 +1,77 @@ ---慧眼の魔術師 -function c72714461.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --pendulum set - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c72714461.pencon) - e2:SetTarget(c72714461.pentg) - e2:SetOperation(c72714461.penop) - c:RegisterEffect(e2) - --scale - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(72714461,1)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_HAND) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCost(c72714461.sccost) - e3:SetTarget(c72714461.sctg) - e3:SetOperation(c72714461.scop) - c:RegisterEffect(e3) -end -function c72714461.pencon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local sc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return sc and (sc:IsSetCard(0x98) or sc:IsSetCard(0x9f)) -end -function c72714461.penfilter(c) - return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) and not c:IsCode(72714461) and not c:IsForbidden() -end -function c72714461.pentg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDestructable() - and Duel.IsExistingMatchingCard(c72714461.penfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) -end -function c72714461.penop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) - local g=Duel.SelectMatchingCard(tp,c72714461.penfilter,tp,LOCATION_DECK,0,1,1,nil) - local tc=g:GetFirst() - if tc then - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - end - end -end -function c72714461.sccost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDiscardable() end - Duel.SendtoGrave(e:GetHandler(),REASON_DISCARD+REASON_COST) -end -function c72714461.scfilter(c) - return (c:GetSequence()==6 and c:GetLeftScale()~=c:GetOriginalLeftScale()) - or (c:GetSequence()==7 and c:GetRightScale()~=c:GetOriginalRightScale()) -end -function c72714461.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c72714461.scfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c72714461.scfilter,tp,LOCATION_SZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c72714461.scfilter,tp,LOCATION_SZONE,0,1,1,nil) -end -function c72714461.scop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LSCALE) - e1:SetValue(tc:GetOriginalLeftScale()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_CHANGE_RSCALE) - e2:SetValue(tc:GetOriginalRightScale()) - tc:RegisterEffect(e2) - end -end +--慧眼の魔術師 +function c72714461.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --pendulum set + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c72714461.pencon) + e2:SetTarget(c72714461.pentg) + e2:SetOperation(c72714461.penop) + c:RegisterEffect(e2) + --scale + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(72714461,1)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_HAND) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCost(c72714461.sccost) + e3:SetTarget(c72714461.sctg) + e3:SetOperation(c72714461.scop) + c:RegisterEffect(e3) +end +function c72714461.pencon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local sc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return sc and (sc:IsSetCard(0x98) or sc:IsSetCard(0x9f)) +end +function c72714461.penfilter(c) + return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) and not c:IsCode(72714461) and not c:IsForbidden() +end +function c72714461.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable() + and Duel.IsExistingMatchingCard(c72714461.penfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c72714461.penop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c72714461.penfilter,tp,LOCATION_DECK,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + end +end +function c72714461.sccost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_DISCARD+REASON_COST) +end +function c72714461.scfilter(c) + return (c:GetSequence()==6 and c:GetLeftScale()~=c:GetOriginalLeftScale()) + or (c:GetSequence()==7 and c:GetRightScale()~=c:GetOriginalRightScale()) +end +function c72714461.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c72714461.scfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c72714461.scfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c72714461.scfilter,tp,LOCATION_SZONE,0,1,1,nil) +end +function c72714461.scop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LSCALE) + e1:SetValue(tc:GetOriginalLeftScale()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RSCALE) + e2:SetValue(tc:GetOriginalRightScale()) + tc:RegisterEffect(e2) + end +end diff --git a/script/c7279373.lua b/script/c7279373.lua new file mode 100644 index 00000000..cf1e36d4 --- /dev/null +++ b/script/c7279373.lua @@ -0,0 +1,81 @@ +--魔界劇団-ティンクル・リトルスター +function c7279373.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetRange(LOCATION_PZONE) + e1:SetTargetRange(1,0) + e1:SetTarget(c7279373.splimit) + c:RegisterEffect(e1) + --attack thrice + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(7279373,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c7279373.atkcon) + e2:SetTarget(c7279373.atktg) + e2:SetOperation(c7279373.atkop) + c:RegisterEffect(e2) + --attack thrice + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(2) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetCondition(c7279373.indcon) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c7279373.splimit(e,c,tp,sumtp,sumpos) + return not c:IsSetCard(0x10ec) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c7279373.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c7279373.atkfilter(c) + return c:IsFaceup() and c:IsSetCard(0x10ec) +end +function c7279373.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c7279373.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c7279373.atkfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c7279373.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c7279373.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c7279373.ftarget) + e2:SetLabel(tc:GetFieldID()) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c7279373.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c7279373.indcon(e) + return Duel.GetTurnPlayer()==e:GetHandlerPlayer() +end diff --git a/script/c72881007.lua b/script/c72881007.lua index 623e4825..5bb36b86 100644 --- a/script/c72881007.lua +++ b/script/c72881007.lua @@ -45,6 +45,7 @@ function c72881007.activate(e,tp,eg,ep,ev,re,r,rp) g=Duel.GetOperatedGroup() local ct=g:FilterCount(c72881007.ctfilter,nil,1-tp) if ft>ct then ft=ct end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) g=Duel.SelectMatchingCard(tp,c72881007.filter,tp,LOCATION_GRAVE,0,ft,ft,nil,e,tp) if g:GetCount()>0 then diff --git a/script/c72926163.lua b/script/c72926163.lua index ede5bf4d..9a95fda5 100644 --- a/script/c72926163.lua +++ b/script/c72926163.lua @@ -1,62 +1,63 @@ ---E・HERO ネオス・ナイト -function c72926163.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,89943723,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),1,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_MATERIAL_CHECK) - e2:SetValue(c72926163.valcheck) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCondition(c72926163.atkcon) - e3:SetOperation(c72926163.atkop) - e3:SetLabelObject(e2) - c:RegisterEffect(e3) - --multiatk - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EXTRA_ATTACK) - e4:SetValue(1) - c:RegisterEffect(e4) - --no battle damage - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_NO_BATTLE_DAMAGE) - c:RegisterEffect(e5) -end -function c72926163.valcheck(e,c) - local g=c:GetMaterial() - local atk=0 - local tc=g:GetFirst() - if tc:IsCode(89943723) or tc:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then tc=g:GetNext() end - if not tc:IsCode(89943723) then - atk=tc:GetTextAttack()/2 - end - e:SetLabel(atk) -end -function c72926163.atkcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c72926163.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local atk=e:GetLabelObject():GetLabel() - if atk>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end +--E・HERO ネオス・ナイト +function c72926163.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,89943723,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),1,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_MATERIAL_CHECK) + e2:SetValue(c72926163.valcheck) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c72926163.atkcon) + e3:SetOperation(c72926163.atkop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --multiatk + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EXTRA_ATTACK) + e4:SetValue(1) + c:RegisterEffect(e4) + --no battle damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_NO_BATTLE_DAMAGE) + c:RegisterEffect(e5) +end +c72926163.material_setcode=0x8 +function c72926163.valcheck(e,c) + local g=c:GetMaterial() + local atk=0 + local tc=g:GetFirst() + if tc:IsCode(89943723) or tc:CheckFusionSubstitute(c) then tc=g:GetNext() end + if not tc:IsCode(89943723) then + atk=tc:GetTextAttack()/2 + end + e:SetLabel(atk) +end +function c72926163.atkcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c72926163.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local atk=e:GetLabelObject():GetLabel() + if atk>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c72932673.lua b/script/c72932673.lua index 984f0f2d..147314af 100644 --- a/script/c72932673.lua +++ b/script/c72932673.lua @@ -1,27 +1,12 @@ --アビスケイル-ミヅチ function c72932673.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(c72932673.target) - e1:SetOperation(c72932673.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x74)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(800) 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(c72932673.eqlimit) - c:RegisterEffect(e3) --negate local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -31,25 +16,6 @@ function c72932673.initial_effect(c) e4:SetOperation(c72932673.negop) c:RegisterEffect(e4) end -function c72932673.eqlimit(e,c) - return c:IsSetCard(0x74) -end -function c72932673.filter(c) - return c:IsFaceup() and c:IsSetCard(0x74) -end -function c72932673.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c72932673.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c72932673.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c72932673.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c72932673.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 c72932673.negcon(e,tp,eg,ep,ev,re,r,rp) return rp~=tp and Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)==LOCATION_SZONE and re:IsActiveType(TYPE_SPELL) and Duel.IsChainDisablable(ev) diff --git a/script/c72989439.lua b/script/c72989439.lua index c1a5e049..8851b74f 100644 --- a/script/c72989439.lua +++ b/script/c72989439.lua @@ -1,85 +1,84 @@ ---カオス・ソルジャー -開闢の使者- -function c72989439.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(72989439,0)) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c72989439.spcon) - e1:SetOperation(c72989439.spop) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(72989439,1)) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c72989439.rmcost) - e2:SetTarget(c72989439.rmtg) - e2:SetOperation(c72989439.rmop) - c:RegisterEffect(e2) - --chain attack - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(72989439,2)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLED) - e3:SetCondition(c72989439.atcon) - e3:SetOperation(c72989439.atop) - c:RegisterEffect(e3) -end -function c72989439.spfilter(c,att) - return c:IsAttribute(att) and c:IsAbleToRemoveAsCost() -end -function c72989439.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c72989439.spfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_LIGHT) - and Duel.IsExistingMatchingCard(c72989439.spfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_DARK) -end -function c72989439.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g1=Duel.SelectMatchingCard(tp,c72989439.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_LIGHT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=Duel.SelectMatchingCard(tp,c72989439.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_DARK) - g1:Merge(g2) - Duel.Remove(g1,POS_FACEUP,REASON_COST) -end -function c72989439.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetAttackAnnouncedCount()==0 end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1,true) - c:RegisterFlagEffect(72989439,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c72989439.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c72989439.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end -function c72989439.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:GetFlagEffect(72989439)==0 - and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) -end -function c72989439.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--カオス・ソルジャー -開闢の使者- +function c72989439.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(72989439,0)) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c72989439.spcon) + e1:SetOperation(c72989439.spop) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(72989439,1)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c72989439.rmcost) + e2:SetTarget(c72989439.rmtg) + e2:SetOperation(c72989439.rmop) + c:RegisterEffect(e2) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(72989439,2)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c72989439.atcon) + e3:SetOperation(c72989439.atop) + c:RegisterEffect(e3) +end +function c72989439.spfilter(c,att) + return c:IsAttribute(att) and c:IsAbleToRemoveAsCost() +end +function c72989439.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c72989439.spfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_LIGHT) + and Duel.IsExistingMatchingCard(c72989439.spfilter,tp,LOCATION_GRAVE,0,1,nil,ATTRIBUTE_DARK) +end +function c72989439.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c72989439.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_LIGHT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c72989439.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,ATTRIBUTE_DARK) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c72989439.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1,true) + c:RegisterFlagEffect(72989439,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c72989439.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c72989439.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end +function c72989439.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return Duel.GetAttacker()==c and aux.bdocon(e,tp,eg,ep,ev,re,r,rp) and c:GetFlagEffect(72989439)==0 + and c:IsChainAttackable() +end +function c72989439.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c73026394.lua b/script/c73026394.lua index 662a52a4..388105ba 100644 --- a/script/c73026394.lua +++ b/script/c73026394.lua @@ -23,8 +23,7 @@ function c73026394.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_EXTRA) end function c73026394.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then Duel.SendtoGrave(eg,REASON_EFFECT) end local g=Duel.GetMatchingGroup(c73026394.filter,tp,LOCATION_EXTRA,0,nil):RandomSelect(tp,1) diff --git a/script/c7304544.lua b/script/c7304544.lua index f382b51c..77acb39b 100644 --- a/script/c7304544.lua +++ b/script/c7304544.lua @@ -1,45 +1,45 @@ ---ナチュル・パイナポー -function c7304544.initial_effect(c) - --Change race - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_RACE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetValue(RACE_PLANT) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(7304544,0)) - e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1) - e2:SetCondition(c7304544.condition) - e2:SetTarget(c7304544.target) - e2:SetOperation(c7304544.operation) - c:RegisterEffect(e2) -end -function c7304544.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) or (c:IsCode(7304544) and c:IsFaceup()) -end -function c7304544.filter2(c) - return c:IsType(TYPE_MONSTER) and not c:IsRace(RACE_PLANT+RACE_BEAST) -end -function c7304544.condition(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() and not Duel.IsExistingMatchingCard(c7304544.filter,tp,LOCATION_ONFIELD,0,1,nil) - and not Duel.IsExistingMatchingCard(c7304544.filter2,tp,LOCATION_GRAVE,0,1,nil) -end -function c7304544.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c7304544.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) - and not Duel.IsExistingMatchingCard(c7304544.filter,tp,LOCATION_ONFIELD,0,1,nil) - and not Duel.IsExistingMatchingCard(c7304544.filter2,tp,LOCATION_GRAVE,0,1,nil) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end +--ナチュル・パイナポー +function c7304544.initial_effect(c) + --Change race + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetValue(RACE_PLANT) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(7304544,0)) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1) + e2:SetCondition(c7304544.condition) + e2:SetTarget(c7304544.target) + e2:SetOperation(c7304544.operation) + c:RegisterEffect(e2) +end +function c7304544.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) or (c:IsCode(7304544) and c:IsFaceup()) +end +function c7304544.filter2(c) + return c:IsType(TYPE_MONSTER) and not c:IsRace(RACE_PLANT+RACE_BEAST) +end +function c7304544.condition(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and not Duel.IsExistingMatchingCard(c7304544.filter,tp,LOCATION_ONFIELD,0,1,nil) + and not Duel.IsExistingMatchingCard(c7304544.filter2,tp,LOCATION_GRAVE,0,1,nil) +end +function c7304544.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c7304544.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) + and not Duel.IsExistingMatchingCard(c7304544.filter,tp,LOCATION_ONFIELD,0,1,nil) + and not Duel.IsExistingMatchingCard(c7304544.filter2,tp,LOCATION_GRAVE,0,1,nil) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c73048641.lua b/script/c73048641.lua index aa0357a3..7b6c9f47 100644 --- a/script/c73048641.lua +++ b/script/c73048641.lua @@ -1,41 +1,41 @@ ---ハーフ・シャット -function c73048641.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c73048641.condition) - e1:SetTarget(c73048641.target) - e1:SetOperation(c73048641.activate) - c:RegisterEffect(e1) -end -function c73048641.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c73048641.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c73048641.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local atk=tc:GetAttack() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(atk/2) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(1) - tc:RegisterEffect(e2) - end -end +--ハーフ・シャット +function c73048641.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c73048641.condition) + e1:SetTarget(c73048641.target) + e1:SetOperation(c73048641.activate) + c:RegisterEffect(e1) +end +function c73048641.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c73048641.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c73048641.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk/2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(1) + tc:RegisterEffect(e2) + end +end diff --git a/script/c73055622.lua b/script/c73055622.lua new file mode 100644 index 00000000..5c45800d --- /dev/null +++ b/script/c73055622.lua @@ -0,0 +1,70 @@ +--霊魂の降神 +function c73055622.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c73055622.target) + e1:SetOperation(c73055622.activate) + c:RegisterEffect(e1) +end +c73055622.fit_monster={25415052,52900000} +function c73055622.filter(c,e,tp,m1,m2,ft) + if not c:IsCode(25415052,52900000) or bit.band(c:GetType(),0x81)~=0x81 + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c) + mg:Merge(m2) + if ft>0 then + return mg:CheckWithSumGreater(Card.GetRitualLevel,c:GetLevel(),c) + else + return mg:IsExists(c73055622.mfilterf,1,nil,tp,mg,c) + end +end +function c73055622.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumGreater(Card.GetRitualLevel,rc:GetLevel(),rc) + else return false end +end +function c73055622.mfilter(c) + return c:GetLevel()>0 and c:IsType(TYPE_SPIRIT) and c:IsAbleToRemove() +end +function c73055622.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg1=Duel.GetRitualMaterial(tp) + local mg2=Duel.GetMatchingGroup(c73055622.mfilter,tp,LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return ft>-1 and Duel.IsExistingMatchingCard(c73055622.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg1,mg2,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c73055622.activate(e,tp,eg,ep,ev,re,r,rp) + local mg1=Duel.GetRitualMaterial(tp) + local mg2=Duel.GetMatchingGroup(c73055622.mfilter,tp,LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c73055622.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg1,mg2,ft) + local tc=tg:GetFirst() + if tc then + local mg=mg1:Filter(Card.IsCanBeRitualMaterial,tc,tc) + mg:Merge(mg2) + local mat=nil + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c73055622.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,tc:GetLevel(),tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c73079365.lua b/script/c73079365.lua index 8f6c96cc..441e1362 100644 --- a/script/c73079365.lua +++ b/script/c73079365.lua @@ -1,36 +1,36 @@ ---突風 -function c73079365.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c73079365.condition) - e1:SetTarget(c73079365.target) - e1:SetOperation(c73079365.activate) - c:RegisterEffect(e1) -end -function c73079365.filter(c,tp) - return c:IsType(TYPE_SPELL) and c:IsPreviousLocation(LOCATION_SZONE) and c:GetPreviousControler()==tp - and bit.band(c:GetReason(),0x41)==0x41 -end -function c73079365.condition(e,tp,eg,ep,ev,re,r,rp) - return rp==1-tp and eg:IsExists(c73079365.filter,1,nil,tp) -end -function c73079365.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c73079365.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c73079365.desfilter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c73079365.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c73079365.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c73079365.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--突風 +function c73079365.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c73079365.condition) + e1:SetTarget(c73079365.target) + e1:SetOperation(c73079365.activate) + c:RegisterEffect(e1) +end +function c73079365.filter(c,tp) + return c:IsType(TYPE_SPELL) and c:IsPreviousLocation(LOCATION_SZONE) and c:GetPreviousControler()==tp + and bit.band(c:GetReason(),0x41)==0x41 +end +function c73079365.condition(e,tp,eg,ep,ev,re,r,rp) + return rp==1-tp and eg:IsExists(c73079365.filter,1,nil,tp) +end +function c73079365.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c73079365.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c73079365.desfilter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c73079365.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c73079365.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c73079365.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c73130445.lua b/script/c73130445.lua index 5cda31c2..7c366861 100644 --- a/script/c73130445.lua +++ b/script/c73130445.lua @@ -1,58 +1,58 @@ ---EMリザードロー -function c73130445.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1,73130445) - e2:SetTarget(c73130445.destg) - e2:SetOperation(c73130445.desop) - c:RegisterEffect(e2) - --draw - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DRAW) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_DESTROYED) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,73130446) - e3:SetCondition(c73130445.drcon) - e3:SetTarget(c73130445.drtg) - e3:SetOperation(c73130445.drop) - c:RegisterEffect(e3) -end -function c73130445.destg(e,tp,eg,ep,ev,re,r,rp,chk) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) - and tc and tc:IsSetCard(0x9f) and not tc:IsCode(73130445) and e:GetHandler():IsDestructable() end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) -end -function c73130445.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then - Duel.Draw(tp,1,REASON_EFFECT) - end -end -function c73130445.cfilter(c,tp) - return c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) - and c:GetReasonPlayer()~=tp and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and c==Duel.GetAttackTarget())) -end -function c73130445.drcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c73130445.cfilter,1,nil,tp) -end -function c73130445.filter(c) - return c:IsFaceup() and c:IsSetCard(0x9f) -end -function c73130445.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - local ct=Duel.GetMatchingGroupCount(c73130445.filter,tp,LOCATION_MZONE,0,nil) - if chk==0 then return ct>0 and Duel.IsPlayerCanDraw(tp,ct) end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) -end -function c73130445.drop(e,tp,eg,ep,ev,re,r,rp) - local ct=Duel.GetMatchingGroupCount(c73130445.filter,tp,LOCATION_MZONE,0,nil) - Duel.Draw(tp,ct,REASON_EFFECT) -end +--EMリザードロー +function c73130445.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1,73130445) + e2:SetTarget(c73130445.destg) + e2:SetOperation(c73130445.desop) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_DESTROYED) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,73130446) + e3:SetCondition(c73130445.drcon) + e3:SetTarget(c73130445.drtg) + e3:SetOperation(c73130445.drop) + c:RegisterEffect(e3) +end +function c73130445.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and tc and tc:IsSetCard(0x9f) and not tc:IsCode(73130445) and e:GetHandler():IsDestructable() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c73130445.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c73130445.cfilter(c,tp) + return c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and c:GetReasonPlayer()~=tp and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and c==Duel.GetAttackTarget())) +end +function c73130445.drcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c73130445.cfilter,1,nil,tp) +end +function c73130445.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) +end +function c73130445.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c73130445.filter,tp,LOCATION_MZONE,0,nil) + if chk==0 then return ct>0 and Duel.IsPlayerCanDraw(tp,ct) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c73130445.drop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c73130445.filter,tp,LOCATION_MZONE,0,nil) + Duel.Draw(tp,ct,REASON_EFFECT) +end diff --git a/script/c73136204.lua b/script/c73136204.lua index bde46cdc..5cbc7350 100644 --- a/script/c73136204.lua +++ b/script/c73136204.lua @@ -1,78 +1,78 @@ ---森羅の渡し守 ロータス -function c73136204.initial_effect(c) - --deck - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(73136204,0)) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c73136204.target) - e1:SetOperation(c73136204.operation) - c:RegisterEffect(e1) - --todeck - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(73136204,2)) - e2:SetCategory(CATEGORY_TODECK) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c73136204.tdcon) - e2:SetTarget(c73136204.tdtg) - e2:SetOperation(c73136204.tdop) - c:RegisterEffect(e2) -end -function c73136204.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local ac=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) - return ac>0 and Duel.IsPlayerCanDiscardDeck(tp,ac) - end -end -function c73136204.operation(e,tp,eg,ep,ev,re,r,rp) - local ac=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) - if ac==0 or not Duel.IsPlayerCanDiscardDeck(tp,ac) then return end - Duel.ConfirmDecktop(tp,ac) - local g=Duel.GetDecktopGroup(tp,ac) - local sg=g:Filter(Card.IsRace,nil,RACE_PLANT) - if sg:GetCount()>0 then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REVEAL) - end - ac=ac-sg:GetCount() - if ac>0 then - Duel.SortDecktop(tp,tp,ac) - for i=1,ac do - local mg=Duel.GetDecktopGroup(tp,1) - Duel.MoveSequence(mg:GetFirst(),1) - end - end -end -function c73136204.tdcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c73136204.filter(c) - return c:IsSetCard(0x90) and not c:IsCode(73136204) and c:IsAbleToDeck() -end -function c73136204.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c73136204.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c73136204.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c73136204.filter,tp,LOCATION_GRAVE,0,1,5,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c73136204.tdop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if sg:GetCount()>0 then - Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) - local og=Duel.GetOperatedGroup() - local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK) - if ct==0 then return end - Duel.SortDecktop(tp,tp,ct) - for i=1,ct do - local mg=Duel.GetDecktopGroup(tp,1) - Duel.MoveSequence(mg:GetFirst(),1) - end - end -end +--森羅の渡し守 ロータス +function c73136204.initial_effect(c) + --deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(73136204,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c73136204.target) + e1:SetOperation(c73136204.operation) + c:RegisterEffect(e1) + --todeck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73136204,2)) + e2:SetCategory(CATEGORY_TODECK) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c73136204.tdcon) + e2:SetTarget(c73136204.tdtg) + e2:SetOperation(c73136204.tdop) + c:RegisterEffect(e2) +end +function c73136204.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local ac=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + return ac>0 and Duel.IsPlayerCanDiscardDeck(tp,ac) + end +end +function c73136204.operation(e,tp,eg,ep,ev,re,r,rp) + local ac=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD) + if ac==0 or not Duel.IsPlayerCanDiscardDeck(tp,ac) then return end + Duel.ConfirmDecktop(tp,ac) + local g=Duel.GetDecktopGroup(tp,ac) + local sg=g:Filter(Card.IsRace,nil,RACE_PLANT) + if sg:GetCount()>0 then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REVEAL) + end + ac=ac-sg:GetCount() + if ac>0 then + Duel.SortDecktop(tp,tp,ac) + for i=1,ac do + local mg=Duel.GetDecktopGroup(tp,1) + Duel.MoveSequence(mg:GetFirst(),1) + end + end +end +function c73136204.tdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c73136204.filter(c) + return c:IsSetCard(0x90) and not c:IsCode(73136204) and c:IsAbleToDeck() +end +function c73136204.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c73136204.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c73136204.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c73136204.filter,tp,LOCATION_GRAVE,0,1,5,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c73136204.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK) + if ct==0 then return end + Duel.SortDecktop(tp,tp,ct) + for i=1,ct do + local mg=Duel.GetDecktopGroup(tp,1) + Duel.MoveSequence(mg:GetFirst(),1) + end + end +end diff --git a/script/c73146473.lua b/script/c73146473.lua index 7e9b1ce3..1fbd43dc 100644 --- a/script/c73146473.lua +++ b/script/c73146473.lua @@ -1,61 +1,61 @@ ---クロス・ポーター -function c73146473.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(73146473,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c73146473.sptg) - e1:SetOperation(c73146473.spop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(73146473,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetTarget(c73146473.thtg) - e2:SetOperation(c73146473.thop) - c:RegisterEffect(e2) -end -function c73146473.filter(c,e,tp) - return c:IsSetCard(0x1f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c73146473.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingMatchingCard(c73146473.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c73146473.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) then return end - Duel.SendtoGrave(tc,REASON_EFFECT) - if not tc:IsLocation(LOCATION_GRAVE) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c73146473.filter,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 c73146473.sfilter(c) - return c:IsSetCard(0x1f) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c73146473.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c73146473.sfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c73146473.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c73146473.sfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--クロス・ポーター +function c73146473.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(73146473,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c73146473.sptg) + e1:SetOperation(c73146473.spop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73146473,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetTarget(c73146473.thtg) + e2:SetOperation(c73146473.thop) + c:RegisterEffect(e2) +end +function c73146473.filter(c,e,tp) + return c:IsSetCard(0x1f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c73146473.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c73146473.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c73146473.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + Duel.SendtoGrave(tc,REASON_EFFECT) + if not tc:IsLocation(LOCATION_GRAVE) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c73146473.filter,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 c73146473.sfilter(c) + return c:IsSetCard(0x1f) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c73146473.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c73146473.sfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c73146473.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c73146473.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c73206827.lua b/script/c73206827.lua index 928a4419..c942d92a 100644 --- a/script/c73206827.lua +++ b/script/c73206827.lua @@ -1,79 +1,79 @@ ---光の結界 -function c73206827.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --coin - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(73206827,0)) - e2:SetCategory(CATEGORY_COIN) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCondition(c73206827.coincon) - e2:SetTarget(c73206827.cointg) - e2:SetOperation(c73206827.coinop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(73206827) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x5)) - e3:SetCondition(c73206827.effectcon) - c:RegisterEffect(e3) - -- - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(73206827,1)) - e4:SetCategory(CATEGORY_RECOVER) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e4:SetRange(LOCATION_FZONE) - e4:SetCode(EVENT_BATTLE_DESTROYING) - e4:SetCondition(c73206827.reccon) - e4:SetTarget(c73206827.rectg) - e4:SetOperation(c73206827.recop) - c:RegisterEffect(e4) -end -function c73206827.coincon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c73206827.cointg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) -end -function c73206827.coinop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local res=Duel.TossCoin(tp,1) - if res==0 then - c:RegisterFlagEffect(73206828,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,2) - end -end -function c73206827.effectcon(e) - local c=e:GetHandler() - return c:GetFlagEffect(73206828)==0 or c:IsHasEffect(EFFECT_CANNOT_DISABLE) -end -function c73206827.reccon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local rc=eg:GetFirst() - return rc:IsRelateToBattle() and rc:IsSetCard(0x5) and rc:IsFaceup() and rc:IsControler(tp) - and (c:GetFlagEffect(73206828)==0 or c:IsHasEffect(EFFECT_CANNOT_DISABLE)) -end -function c73206827.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local tc=eg:GetFirst():GetBattleTarget() - local atk=tc:GetBaseAttack() - if atk<0 then atk=0 end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(atk) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,atk) -end -function c73206827.recop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end +--光の結界 +function c73206827.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --coin + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73206827,0)) + e2:SetCategory(CATEGORY_COIN) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c73206827.coincon) + e2:SetTarget(c73206827.cointg) + e2:SetOperation(c73206827.coinop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(73206827) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x5)) + e3:SetCondition(c73206827.effectcon) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(73206827,1)) + e4:SetCategory(CATEGORY_RECOVER) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(EVENT_BATTLE_DESTROYING) + e4:SetCondition(c73206827.reccon) + e4:SetTarget(c73206827.rectg) + e4:SetOperation(c73206827.recop) + c:RegisterEffect(e4) +end +function c73206827.coincon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c73206827.cointg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c73206827.coinop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local res=Duel.TossCoin(tp,1) + if res==0 then + c:RegisterFlagEffect(73206828,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,2) + end +end +function c73206827.effectcon(e) + local c=e:GetHandler() + return c:GetFlagEffect(73206828)==0 or c:IsHasEffect(EFFECT_CANNOT_DISABLE) +end +function c73206827.reccon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=eg:GetFirst() + return rc:IsRelateToBattle() and rc:IsSetCard(0x5) and rc:IsFaceup() and rc:IsControler(tp) + and (c:GetFlagEffect(73206828)==0 or c:IsHasEffect(EFFECT_CANNOT_DISABLE)) +end +function c73206827.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=eg:GetFirst():GetBattleTarget() + local atk=tc:GetBaseAttack() + if atk<0 then atk=0 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,atk) +end +function c73206827.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c73213494.lua b/script/c73213494.lua index 0cc8aed6..ca90d789 100644 --- a/script/c73213494.lua +++ b/script/c73213494.lua @@ -1,74 +1,74 @@ ---彼岸の悪鬼 ハックルスパー -function c73213494.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c73213494.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(73213494,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,73213494) - e2:SetCondition(c73213494.sscon) - e2:SetTarget(c73213494.sstg) - e2:SetOperation(c73213494.ssop) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(73213494,1)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1,73213494) - e3:SetTarget(c73213494.thtg) - e3:SetOperation(c73213494.thop) - c:RegisterEffect(e3) -end -function c73213494.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c73213494.sdcon(e) - return Duel.IsExistingMatchingCard(c73213494.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c73213494.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c73213494.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c73213494.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c73213494.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c73213494.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c73213494.thfilter(c) - return c:IsFacedown() and c:IsAbleToHand() -end -function c73213494.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c73213494.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c73213494.thfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c73213494.thfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c73213494.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFacedown() then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end +--彼岸の悪鬼 ハックルスパー +function c73213494.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c73213494.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73213494,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,73213494) + e2:SetCondition(c73213494.sscon) + e2:SetTarget(c73213494.sstg) + e2:SetOperation(c73213494.ssop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(73213494,1)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,73213494) + e3:SetTarget(c73213494.thtg) + e3:SetOperation(c73213494.thop) + c:RegisterEffect(e3) +end +function c73213494.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c73213494.sdcon(e) + return Duel.IsExistingMatchingCard(c73213494.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c73213494.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c73213494.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c73213494.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c73213494.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c73213494.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c73213494.thfilter(c) + return c:IsFacedown() and c:IsAbleToHand() +end +function c73213494.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c73213494.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c73213494.thfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c73213494.thfilter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c73213494.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFacedown() then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c73219648.lua b/script/c73219648.lua index 77c6a56c..99abc47a 100644 --- a/script/c73219648.lua +++ b/script/c73219648.lua @@ -1,54 +1,53 @@ ---ヘルポーンデーモン -function c73219648.initial_effect(c) - --maintain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c73219648.mtcon) - e1:SetOperation(c73219648.mtop) - c:RegisterEffect(e1) - --disable and destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c73219648.disop) - c:RegisterEffect(e2) - --cannot be battle target - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetValue(c73219648.atktg) - c:RegisterEffect(e3) -end -function c73219648.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c73219648.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -function c73219648.disop(e,tp,eg,ep,ev,re,r,rp) - if ep==tp then return end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end - local rc=re:GetHandler() - local dc=Duel.TossDice(tp,1) - if dc~=3 then return end - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then - Duel.Destroy(rc,REASON_EFFECT) - end -end -function c73219648.atktg(e,c) - return c:IsFaceup() and c:IsSetCard(0x45) and c:GetCode()~=73219648 -end +--ヘルポーンデーモン +function c73219648.initial_effect(c) + --maintain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c73219648.mtcon) + e1:SetOperation(c73219648.mtop) + c:RegisterEffect(e1) + --disable and destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c73219648.disop) + c:RegisterEffect(e2) + --cannot be battle target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(c73219648.atktg) + c:RegisterEffect(e3) +end +function c73219648.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c73219648.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c73219648.disop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end + local rc=re:GetHandler() + local dc=Duel.TossDice(tp,1) + if dc~=3 then return end + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end +end +function c73219648.atktg(e,c) + return c:IsFaceup() and c:IsSetCard(0x45) and c:GetCode()~=73219648 +end diff --git a/script/c73271204.lua b/script/c73271204.lua new file mode 100644 index 00000000..cb925c7a --- /dev/null +++ b/script/c73271204.lua @@ -0,0 +1,78 @@ +--札再生 +function c73271204.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(73271204,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c73271204.target) + e1:SetOperation(c73271204.activate) + c:RegisterEffect(e1) + --mill + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73271204,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c73271204.milcon) + e2:SetTarget(c73271204.miltg) + e2:SetOperation(c73271204.milop) + c:RegisterEffect(e2) +end +function c73271204.filter(c) + return c:IsSetCard(0xe6) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c73271204.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c73271204.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c73271204.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c73271204.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c73271204.spfilter(c,e,tp) + return c:IsSetCard(0xe6) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c73271204.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then + local tg=Duel.GetMatchingGroup(c73271204.spfilter,tp,LOCATION_HAND,0,nil,e,tp) + if tg:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.SelectYesNo(tp,aux.Stringid(73271204,2)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=tg:Select(tp,1,1,nil) + Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) + end + end +end +function c73271204.milcon(e,tp,eg,ep,ev,re,r,rp) + if not re then return false end + local rc=re:GetHandler() + return e:GetHandler():IsReason(REASON_EFFECT) and rc:IsSetCard(0xe6) and rc:IsType(TYPE_MONSTER) +end +function c73271204.miltg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>4 end +end +function c73271204.milfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c73271204.milop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)<5 then return end + Duel.ConfirmDecktop(tp,5) + local g=Duel.GetDecktopGroup(tp,5) + if g:GetCount()>0 then + Duel.DisableShuffleCheck() + if g:IsExists(c73271204.milfilter,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(73271204,3)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:FilterSelect(tp,c73271204.milfilter,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + Duel.ShuffleHand(tp) + g:Sub(sg) + end + Duel.SortDecktop(tp,tp,g:GetCount()) + end +end diff --git a/script/c73285669.lua b/script/c73285669.lua index e13f17f8..e51218e0 100644 --- a/script/c73285669.lua +++ b/script/c73285669.lua @@ -1,44 +1,44 @@ ---剣闘獣エセダリ -function c73285669.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x19),2,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c73285669.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c73285669.sprcon) - e2:SetOperation(c73285669.sprop) - c:RegisterEffect(e2) -end -function c73285669.splimit(e,se,sp,st) - return e:GetHandler():GetLocation()~=LOCATION_EXTRA -end -function c73285669.spfilter(c) - return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() -end -function c73285669.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c73285669.spfilter,tp,LOCATION_MZONE,0,2,nil) -end -function c73285669.sprop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,c73285669.spfilter,tp,LOCATION_MZONE,0,2,2,nil) - local tc=g:GetFirst() - while tc do - if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end - tc=g:GetNext() - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end +--剣闘獣エセダリ +function c73285669.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x19),2,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c73285669.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c73285669.sprcon) + e2:SetOperation(c73285669.sprop) + c:RegisterEffect(e2) +end +function c73285669.splimit(e,se,sp,st) + return e:GetHandler():GetLocation()~=LOCATION_EXTRA +end +function c73285669.spfilter(c) + return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() +end +function c73285669.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c73285669.spfilter,tp,LOCATION_MZONE,0,2,nil) +end +function c73285669.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c73285669.spfilter,tp,LOCATION_MZONE,0,2,2,nil) + local tc=g:GetFirst() + while tc do + if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end + tc=g:GetNext() + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end diff --git a/script/c73289035.lua b/script/c73289035.lua index 167ca3c6..59deeab4 100644 --- a/script/c73289035.lua +++ b/script/c73289035.lua @@ -8,6 +8,7 @@ function c73289035.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(73289035,0)) e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c73318863.lua b/script/c73318863.lua index 0b6a8d71..d7dd63f0 100644 --- a/script/c73318863.lua +++ b/script/c73318863.lua @@ -1,46 +1,46 @@ ---光霊使いライナ -function c73318863.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(73318863,0)) - e1:SetCategory(CATEGORY_CONTROL) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetTarget(c73318863.target) - e1:SetOperation(c73318863.operation) - c:RegisterEffect(e1) -end -function c73318863.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsControlerCanBeChanged() -end -function c73318863.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c73318863.filter(chkc) end - if chk==0 then return true end - if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c73318863.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) - end -end -function c73318863.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c73318863.filter(tc) then - c:SetCardTarget(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_CONTROL) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(tp) - e1:SetLabel(0) - e1:SetReset(RESET_EVENT+0x1fc0000) - e1:SetCondition(c73318863.ctcon) - tc:RegisterEffect(e1) - end -end -function c73318863.ctcon(e) - local c=e:GetOwner() - local h=e:GetHandler() - return h:IsAttribute(ATTRIBUTE_LIGHT) and c:IsHasCardTarget(h) -end +--光霊使いライナ +function c73318863.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(73318863,0)) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c73318863.target) + e1:SetOperation(c73318863.operation) + c:RegisterEffect(e1) +end +function c73318863.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsControlerCanBeChanged() +end +function c73318863.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c73318863.filter(chkc) end + if chk==0 then return true end + if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c73318863.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) + end +end +function c73318863.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c73318863.filter(tc) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(tp) + e1:SetLabel(0) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetCondition(c73318863.ctcon) + tc:RegisterEffect(e1) + end +end +function c73318863.ctcon(e) + local c=e:GetOwner() + local h=e:GetHandler() + return h:IsAttribute(ATTRIBUTE_LIGHT) and c:IsHasCardTarget(h) +end diff --git a/script/c73347079.lua b/script/c73347079.lua index 8788e724..662094a9 100644 --- a/script/c73347079.lua +++ b/script/c73347079.lua @@ -19,6 +19,7 @@ function c73347079.initial_effect(c) e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetCountLimit(1) e3:SetCost(c73347079.thcost) e3:SetTarget(c73347079.thtg) diff --git a/script/c73360025.lua b/script/c73360025.lua index 2976943f..451f16fc 100644 --- a/script/c73360025.lua +++ b/script/c73360025.lua @@ -1,132 +1,129 @@ ---魔神王の契約書 -function c73360025.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(73360025,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1,73360025) - e2:SetTarget(c73360025.sptg) - e2:SetOperation(c73360025.spop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c73360025.damcon) - e3:SetTarget(c73360025.damtg) - e3:SetOperation(c73360025.damop) - c:RegisterEffect(e3) -end -function c73360025.mfilter0(c) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() -end -function c73360025.mfilter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c73360025.mfilter2(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) -end -function c73360025.spfilter1(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c73360025.spfilter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and c:IsSetCard(0xaf) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c73360025.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c73360025.spfilter1,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if res then return true end - local mg2=Duel.GetMatchingGroup(c73360025.mfilter0,tp,LOCATION_GRAVE,0,nil) - mg2:Merge(mg1) - res=Duel.IsExistingMatchingCard(c73360025.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg3=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c73360025.spfilter1,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c73360025.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c73360025.mfilter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c73360025.spfilter1,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=Duel.GetMatchingGroup(c73360025.mfilter2,tp,LOCATION_GRAVE,0,nil,e) - mg2:Merge(mg1) - local sg2=Duel.GetMatchingGroup(c73360025.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,nil,chkf) - sg1:Merge(sg2) - local mg3=nil - local sg3=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg3=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg3=Duel.GetMatchingGroup(c73360025.spfilter1,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) - end - if sg1:GetCount()>0 or (sg3~=nil and sg3:GetCount()>0) then - local sg=sg1:Clone() - if sg3 then sg:Merge(sg3) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg3==nil or not sg3:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - if tc:IsSetCard(0xaf) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - tc:SetMaterial(mat1) - local mat2=mat1:Filter(Card.IsLocation,nil,LOCATION_GRAVE) - mat1:Sub(mat2) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.Remove(mat2,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat2) - Duel.SendtoGrave(mat2,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - end - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat) - end - tc:CompleteProcedure() - end -end -function c73360025.ctfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsSetCard(0xaf) -end -function c73360025.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c73360025.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) -end -function c73360025.damop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--魔神王の契約書 +function c73360025.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73360025,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,73360025) + e2:SetTarget(c73360025.sptg) + e2:SetOperation(c73360025.spop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c73360025.damcon) + e3:SetTarget(c73360025.damtg) + e3:SetOperation(c73360025.damop) + c:RegisterEffect(e3) +end +function c73360025.mfilter0(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end +function c73360025.mfilter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c73360025.mfilter2(c,e) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c73360025.spfilter1(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c73360025.spfilter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and c:IsSetCard(0xaf) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c73360025.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c73360025.spfilter1,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if res then return true end + local mg2=Duel.GetMatchingGroup(c73360025.mfilter0,tp,LOCATION_GRAVE,0,nil) + mg2:Merge(mg1) + res=Duel.IsExistingMatchingCard(c73360025.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c73360025.spfilter1,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c73360025.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c73360025.mfilter1,nil,e) + local sg1=Duel.GetMatchingGroup(c73360025.spfilter1,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=Duel.GetMatchingGroup(c73360025.mfilter2,tp,LOCATION_GRAVE,0,nil,e) + mg2:Merge(mg1) + local sg2=Duel.GetMatchingGroup(c73360025.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,nil,chkf) + sg1:Merge(sg2) + local mg3=nil + local sg3=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg3=Duel.GetMatchingGroup(c73360025.spfilter1,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,chkf) + end + if sg1:GetCount()>0 or (sg3~=nil and sg3:GetCount()>0) then + local sg=sg1:Clone() + if sg3 then sg:Merge(sg3) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg3==nil or not sg3:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + if tc:IsSetCard(0xaf) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + tc:SetMaterial(mat1) + local mat2=mat1:Filter(Card.IsLocation,nil,LOCATION_GRAVE) + mat1:Sub(mat2) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.Remove(mat2,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat2) + Duel.SendtoGrave(mat2,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + end + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat) + end + tc:CompleteProcedure() + end +end +function c73360025.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c73360025.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c73360025.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c73398797.lua b/script/c73398797.lua index 6ea45f67..c86e4342 100644 --- a/script/c73398797.lua +++ b/script/c73398797.lua @@ -1,63 +1,63 @@ ---白竜の聖騎士 -function c73398797.initial_effect(c) - c:EnableReviveLimit() - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(73398797,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_START) - e1:SetCondition(c73398797.descon) - e1:SetTarget(c73398797.destg) - e1:SetOperation(c73398797.desop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(73398797,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c73398797.spcost) - e2:SetTarget(c73398797.sptg) - e2:SetOperation(c73398797.spop) - c:RegisterEffect(e2) -end -function c73398797.descon(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - return e:GetHandler()==Duel.GetAttacker() and d and d:IsPosition(POS_FACEDOWN_DEFENSE) -end -function c73398797.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttackTarget(),1,0,0) -end -function c73398797.desop(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - if d:IsRelateToBattle() then - Duel.Destroy(d,REASON_EFFECT) - end -end -function c73398797.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c73398797.spfilter(c,e,tp) - return c:IsCode(89631139) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c73398797.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c73398797.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c73398797.spop(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,c73398797.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,89631139)) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end +--白竜の聖騎士 +function c73398797.initial_effect(c) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(73398797,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_START) + e1:SetCondition(c73398797.descon) + e1:SetTarget(c73398797.destg) + e1:SetOperation(c73398797.desop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73398797,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c73398797.spcost) + e2:SetTarget(c73398797.sptg) + e2:SetOperation(c73398797.spop) + c:RegisterEffect(e2) +end +function c73398797.descon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return e:GetHandler()==Duel.GetAttacker() and d and d:IsPosition(POS_FACEDOWN_DEFENSE) +end +function c73398797.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttackTarget(),1,0,0) +end +function c73398797.desop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d:IsRelateToBattle() then + Duel.Destroy(d,REASON_EFFECT) + end +end +function c73398797.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c73398797.spfilter(c,e,tp) + return c:IsCode(89631139) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c73398797.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c73398797.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c73398797.spop(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,c73398797.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,89631139)) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c73445448.lua b/script/c73445448.lua index e556fa5e..dffed426 100644 --- a/script/c73445448.lua +++ b/script/c73445448.lua @@ -14,7 +14,7 @@ function c73445448.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(73445448,0)) e2:SetCategory(CATEGORY_DISABLE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetHintTiming(0,0x1c0) diff --git a/script/c73468603.lua b/script/c73468603.lua new file mode 100644 index 00000000..ca46b2c4 --- /dev/null +++ b/script/c73468603.lua @@ -0,0 +1,70 @@ +--盆回し +--Festival Spinning +--Script by nekrozar +function c73468603.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c73468603.target) + e1:SetOperation(c73468603.operation) + c:RegisterEffect(e1) +end +function c73468603.filter(c) + return c:IsType(TYPE_FIELD) and c:IsSSetable() +end +function c73468603.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c73468603.filter,tp,LOCATION_DECK,0,nil) + if chk==0 then return g:GetClassCount(Card.GetCode)>1 end +end +function c73468603.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c73468603.filter,tp,LOCATION_DECK,0,nil) + if g:GetClassCount(Card.GetCode)<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(73468603,0)) + local tg1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,tg1:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(73468603,1)) + local tg2=g:Select(tp,1,1,nil) + local fc1=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc1 then + Duel.SendtoGrave(fc1,REASON_RULE) + Duel.BreakEffect() + end + Duel.SSet(tp,tg1) + local fc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if fc2 then + Duel.SendtoGrave(fc2,REASON_RULE) + Duel.BreakEffect() + end + Duel.SSet(1-tp,tg2) + tg1:GetFirst():RegisterFlagEffect(73468603,RESET_EVENT+0x1fe0000,0,1) + tg2:GetFirst():RegisterFlagEffect(73468603,RESET_EVENT+0x1fe0000,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetCondition(c73468603.con) + e1:SetValue(c73468603.actlimit) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SSET) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetCondition(c73468603.con) + e2:SetTarget(c73468603.setlimit) + Duel.RegisterEffect(e2,tp) +end +function c73468603.cfilter(c) + return c:GetSequence()==5 and c:GetFlagEffect(73468603)~=0 and c:IsFacedown() +end +function c73468603.con(e) + return Duel.IsExistingMatchingCard(c73468603.cfilter,e:GetHandlerPlayer(),LOCATION_SZONE,LOCATION_SZONE,1,nil) +end +function c73468603.actlimit(e,re,tp) + return re:IsActiveType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and not re:GetHandler():IsOnField() +end +function c73468603.setlimit(e,c,tp) + return c:IsType(TYPE_FIELD) +end diff --git a/script/c734741.lua b/script/c734741.lua index 024265f3..e102460d 100644 --- a/script/c734741.lua +++ b/script/c734741.lua @@ -1,58 +1,58 @@ ---彼岸の悪鬼 ラビキャント -function c734741.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c734741.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(734741,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,734741) - e2:SetCondition(c734741.sscon) - e2:SetTarget(c734741.sstg) - e2:SetOperation(c734741.ssop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetValue(c734741.synlimit) - c:RegisterEffect(e3) -end -function c734741.synlimit(e,c) - if not c then return false end - return not c:IsSetCard(0xb1) -end -function c734741.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c734741.sdcon(e) - return Duel.IsExistingMatchingCard(c734741.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c734741.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c734741.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c734741.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c734741.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c734741.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--彼岸の悪鬼 ラビキャント +function c734741.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c734741.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(734741,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,734741) + e2:SetCondition(c734741.sscon) + e2:SetTarget(c734741.sstg) + e2:SetOperation(c734741.ssop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetValue(c734741.synlimit) + c:RegisterEffect(e3) +end +function c734741.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0xb1) +end +function c734741.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c734741.sdcon(e) + return Duel.IsExistingMatchingCard(c734741.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c734741.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c734741.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c734741.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c734741.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c734741.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c73511233.lua b/script/c73511233.lua new file mode 100644 index 00000000..c71e16c5 --- /dev/null +++ b/script/c73511233.lua @@ -0,0 +1,133 @@ +--EMユーゴーレム +--Performapal Fugolem +--Scripted by Eerie Code +function c73511233.initial_effect(c) + aux.EnablePendulumAttribute(c) + --salvage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_PZONE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1) + e1:SetCondition(c73511233.thcon) + e1:SetTarget(c73511233.thtg) + e1:SetOperation(c73511233.thop) + c:RegisterEffect(e1) + --reg + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCondition(c73511233.effcon) + e2:SetOperation(c73511233.regop) + c:RegisterEffect(e2) + --fusion + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c73511233.spcon) + e3:SetTarget(c73511233.sptg) + e3:SetOperation(c73511233.spop) + c:RegisterEffect(e3) +end +function c73511233.thcfilter(c,tp) + return c:IsControler(tp) and bit.band(c:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c73511233.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg and eg:IsExists(c73511233.thcfilter,1,nil,tp) +end +function c73511233.thfilter(c) + return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and (c:IsSetCard(0x98) or c:IsSetCard(0x99) or c:IsSetCard(0x9f)) + and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c73511233.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c73511233.thfilter,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE+LOCATION_EXTRA) +end +function c73511233.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c73511233.thfilter),tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c73511233.effcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c73511233.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(73511233,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c73511233.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(73511233)~=0 +end +function c73511233.spfilter0(c) + return c:IsRace(RACE_DRAGON) and c:IsOnField() +end +function c73511233.spfilter1(c,e) + return c73511233.spfilter0(c) and not c:IsImmuneToEffect(e) +end +function c73511233.spfilter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) +end +function c73511233.spfilter3(c) + return c:IsCanBeFusionMaterial() and c:IsRace(RACE_DRAGON) +end +function c73511233.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetFusionMaterial(tp):Filter(c73511233.spfilter0,c) + local res=Duel.IsExistingMatchingCard(c73511233.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp):Filter(c73511233.spfilter3,nil) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c73511233.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c73511233.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) or c:IsControler(1-tp) then return end + local mg1=Duel.GetFusionMaterial(tp):Filter(c73511233.spfilter1,c,e) + local sg1=Duel.GetMatchingGroup(c73511233.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp):Filter(c73511233.spfilter3,nil) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c73511233.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c73594093.lua b/script/c73594093.lua index d79dacd9..7bd347a4 100644 --- a/script/c73594093.lua +++ b/script/c73594093.lua @@ -3,7 +3,7 @@ function c73594093.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(73594093,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c73594093.target) @@ -21,7 +21,7 @@ function c73594093.initial_effect(c) c:RegisterEffect(e2) end function c73594093.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) + return not c:IsImmuneToEffect(e) end function c73594093.filter2(c,e,tp,m,f,chkf) return c:IsType(TYPE_FUSION) and c:IsSetCard(0xe1) and (not f or f(c)) @@ -30,7 +30,7 @@ end function c73594093.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local mg1=Duel.GetFusionMaterial(tp) local res=Duel.IsExistingMatchingCard(c73594093.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) if not res then local ce=Duel.GetChainMaterial(tp) @@ -47,7 +47,7 @@ function c73594093.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c73594093.activate(e,tp,eg,ep,ev,re,r,rp) local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c73594093.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local mg1=Duel.GetFusionMaterial(tp):Filter(c73594093.filter1,nil,e) local sg1=Duel.GetMatchingGroup(c73594093.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) local mg2=nil local sg2=nil diff --git a/script/c73599290.lua b/script/c73599290.lua index af2bca4c..e7629042 100644 --- a/script/c73599290.lua +++ b/script/c73599290.lua @@ -1,26 +1,26 @@ ---ソウルドレイン -function c73599290.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c73599290.cost) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_CANNOT_ACTIVATE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(1,1) - e2:SetValue(c73599290.aclimit) - c:RegisterEffect(e2) -end -function c73599290.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 c73599290.aclimit(e,re,tp) - local loc=re:GetActivateLocation() - return (loc==LOCATION_GRAVE or loc==LOCATION_REMOVED) and re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) -end +--ソウルドレイン +function c73599290.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c73599290.cost) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(1,1) + e2:SetValue(c73599290.aclimit) + c:RegisterEffect(e2) +end +function c73599290.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 c73599290.aclimit(e,re,tp) + local loc=re:GetActivateLocation() + return (loc==LOCATION_GRAVE or loc==LOCATION_REMOVED) and re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c73616671.lua b/script/c73616671.lua index cc411afd..9c4a7a35 100644 --- a/script/c73616671.lua +++ b/script/c73616671.lua @@ -26,8 +26,8 @@ function c73616671.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c73616671.activate(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c73616671.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,2,nil) - if g:GetCount()>0 and not g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c73616671.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,2,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c73659078.lua b/script/c73659078.lua index c19a0412..528c4010 100644 --- a/script/c73659078.lua +++ b/script/c73659078.lua @@ -6,6 +6,7 @@ function c73659078.initial_effect(c) --counter local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(73659078,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c7369217.lua b/script/c7369217.lua index 24c1c29d..04ab383b 100644 --- a/script/c7369217.lua +++ b/script/c7369217.lua @@ -16,7 +16,7 @@ function c7369217.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c7369217.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c7369217.sptg) e2:SetOperation(c7369217.spop) c:RegisterEffect(e2) @@ -24,7 +24,7 @@ function c7369217.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_IMMUNE_EFFECT) - e3:SetCondition(c7369217.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetValue(c7369217.efilter) c:RegisterEffect(e3) --destroy sub @@ -32,7 +32,7 @@ function c7369217.initial_effect(c) e5:SetType(EFFECT_TYPE_EQUIP) e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e5:SetCondition(c7369217.uncon) + e5:SetCondition(aux.IsUnionState) e5:SetValue(c7369217.repval) c:RegisterEffect(e5) --eqlimit @@ -43,9 +43,7 @@ function c7369217.initial_effect(c) e6:SetValue(1) c:RegisterEffect(e6) end -function c7369217.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c7369217.old_union=true function c7369217.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -70,7 +68,7 @@ function c7369217.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c7369217.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(7369217)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c73729209.lua b/script/c73729209.lua index 19bac63c..608c2627 100644 --- a/script/c73729209.lua +++ b/script/c73729209.lua @@ -1,57 +1,57 @@ ---スキル・サクセサー -function c73729209.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(c73729209.condition) - e1:SetTarget(c73729209.target) - e1:SetOperation(c73729209.activate) - e1:SetLabel(400) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(73729209,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetHintTiming(TIMING_DAMAGE_STEP) - e2:SetCondition(c73729209.atkcon) - e2:SetCost(c73729209.atkcost) - e2:SetTarget(c73729209.target) - e2:SetOperation(c73729209.activate) - e2:SetLabel(800) - c:RegisterEffect(e2) -end -function c73729209.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c73729209.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c73729209.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(e:GetLabel()) - tc:RegisterEffect(e1) - end -end -function c73729209.atkcon(e,tp,eg,ep,ev,re,r,rp) - return aux.exccon(e) and Duel.GetTurnPlayer()==tp and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) -end -function c73729209.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end +--スキル・サクセサー +function c73729209.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(c73729209.condition) + e1:SetTarget(c73729209.target) + e1:SetOperation(c73729209.activate) + e1:SetLabel(400) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73729209,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetCondition(c73729209.atkcon) + e2:SetCost(c73729209.atkcost) + e2:SetTarget(c73729209.target) + e2:SetOperation(c73729209.activate) + e2:SetLabel(800) + c:RegisterEffect(e2) +end +function c73729209.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c73729209.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c73729209.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(e:GetLabel()) + tc:RegisterEffect(e1) + end +end +function c73729209.atkcon(e,tp,eg,ep,ev,re,r,rp) + return aux.exccon(e) and Duel.GetTurnPlayer()==tp and (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) +end +function c73729209.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end diff --git a/script/c73734821.lua b/script/c73734821.lua new file mode 100644 index 00000000..d99db534 --- /dev/null +++ b/script/c73734821.lua @@ -0,0 +1,112 @@ +--EMスカイ・マジシャン +--Performapal Sky Magician +--Scripted by Eerie Code +function c73734821.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(aux.chainreg) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73734821,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c73734821.atkcon) + e2:SetCost(c73734821.atkcost) + e2:SetOperation(c73734821.atkop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(73734821,1)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,73734821) + e3:SetTarget(c73734821.thtg) + e3:SetOperation(c73734821.thop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(73734821,3)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e4:SetCondition(c73734821.descon) + e4:SetTarget(c73734821.destg) + e4:SetOperation(c73734821.desop) + c:RegisterEffect(e4) +end +function c73734821.atkcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and rp==tp and e:GetHandler():GetFlagEffect(1)>0 +end +function c73734821.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(73734821)==0 end + e:GetHandler():RegisterFlagEffect(73734821,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c73734821.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c73734821.thfilter(c) + return c:IsFaceup() and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:IsAbleToHand() +end +function c73734821.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c73734821.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c73734821.thfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c73734821.thfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c73734821.tffilter(c,tp) + return c:IsSetCard(0x98) and c:GetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:GetActivateEffect():IsActivatable(tp) +end +function c73734821.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 then + local g=Duel.GetMatchingGroup(c73734821.tffilter,tp,LOCATION_HAND,0,nil,tp) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(73734821,2)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local sc=g:Select(tp,1,1,nil):GetFirst() + Duel.MoveToField(sc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + local te=sc:GetActivateEffect() + local tep=sc:GetControler() + local cost=te:GetCost() + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + Duel.RaiseEvent(sc,EVENT_CHAIN_SOLVED,te,0,tp,tp,Duel.GetCurrentChain()) + end + end +end +function c73734821.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) +end +function c73734821.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() end + if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c73734821.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c73752131.lua b/script/c73752131.lua index dd98f19b..ffb21a07 100644 --- a/script/c73752131.lua +++ b/script/c73752131.lua @@ -47,8 +47,8 @@ end function c73752131.spop(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,c73752131.filter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c73752131.filter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c73779005.lua b/script/c73779005.lua index 85cda5a5..23f7d790 100644 --- a/script/c73779005.lua +++ b/script/c73779005.lua @@ -1,40 +1,40 @@ ---ドラコニアの獣竜騎兵 -function c73779005.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLED) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetCondition(c73779005.thcon) - e2:SetTarget(c73779005.thtg) - e2:SetOperation(c73779005.thop) - c:RegisterEffect(e2) -end -function c73779005.thcon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if not d then return false end - if d:IsControler(tp) then a,d=d,a end - return a:IsType(TYPE_NORMAL) - and not a:IsStatus(STATUS_BATTLE_DESTROYED) and d:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c73779005.filter(c) - return c:IsType(TYPE_NORMAL) and c:IsLevelAbove(4) and c:IsAbleToHand() -end -function c73779005.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c73779005.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c73779005.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c73779005.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ドラコニアの獣竜騎兵 +function c73779005.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLED) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c73779005.thcon) + e2:SetTarget(c73779005.thtg) + e2:SetOperation(c73779005.thop) + c:RegisterEffect(e2) +end +function c73779005.thcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if d:IsControler(tp) then a,d=d,a end + return a:IsType(TYPE_NORMAL) + and not a:IsStatus(STATUS_BATTLE_DESTROYED) and d:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c73779005.filter(c) + return c:IsType(TYPE_NORMAL) and c:IsLevelAbove(4) and c:IsAbleToHand() +end +function c73779005.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c73779005.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c73779005.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c73779005.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c73783043.lua b/script/c73783043.lua index 26cdd965..8af5fc6d 100644 --- a/script/c73783043.lua +++ b/script/c73783043.lua @@ -1,41 +1,41 @@ ---レアル・ジェネクス・アクセラレーター -function c73783043.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(73783043,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetRange(LOCATION_MZONE) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_HAND) - e1:SetTarget(c73783043.sptg) - e1:SetOperation(c73783043.spop) - c:RegisterEffect(e1) -end -function c73783043.filter(c,e,tp) - return c:IsSetCard(0x2) and c:IsControler(tp) and not c:IsPublic() - and c:IsPreviousLocation(LOCATION_DECK) and c:GetPreviousControler()==tp - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c73783043.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and eg:IsExists(c73783043.filter,1,nil,e,tp) end - local g=eg:Filter(c73783043.filter,nil,e,tp) - if g:GetCount()==1 then - Duel.ConfirmCards(1-tp,g) - Duel.ShuffleHand(tp) - Duel.SetTargetCard(g) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,1,nil) - Duel.ConfirmCards(1-tp,sg) - Duel.ShuffleHand(tp) - Duel.SetTargetCard(sg) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c73783043.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--レアル・ジェネクス・アクセラレーター +function c73783043.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(73783043,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetRange(LOCATION_MZONE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_HAND) + e1:SetTarget(c73783043.sptg) + e1:SetOperation(c73783043.spop) + c:RegisterEffect(e1) +end +function c73783043.filter(c,e,tp) + return c:IsSetCard(0x2) and c:IsControler(tp) and not c:IsPublic() + and c:IsPreviousLocation(LOCATION_DECK) and c:GetPreviousControler()==tp + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c73783043.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and eg:IsExists(c73783043.filter,1,nil,e,tp) end + local g=eg:Filter(c73783043.filter,nil,e,tp) + if g:GetCount()==1 then + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + Duel.SetTargetCard(g) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.ConfirmCards(1-tp,sg) + Duel.ShuffleHand(tp) + Duel.SetTargetCard(sg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c73783043.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c73787254.lua b/script/c73787254.lua index 455dab4f..54f67204 100644 --- a/script/c73787254.lua +++ b/script/c73787254.lua @@ -1,27 +1,27 @@ ---セイバー・ヴォールト -function c73787254.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk,def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x100d)) - e2:SetValue(c73787254.val1) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(c73787254.val2) - c:RegisterEffect(e3) -end -function c73787254.val1(e,c) - return c:GetLevel()*100 -end -function c73787254.val2(e,c) - return -c:GetLevel()*100 -end +--セイバー・ヴォールト +function c73787254.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk,def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x100d)) + e2:SetValue(c73787254.val1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(c73787254.val2) + c:RegisterEffect(e3) +end +function c73787254.val1(e,c) + return c:GetLevel()*100 +end +function c73787254.val2(e,c) + return -c:GetLevel()*100 +end diff --git a/script/c73872164.lua b/script/c73872164.lua index 50d6f3f9..9521369c 100644 --- a/script/c73872164.lua +++ b/script/c73872164.lua @@ -1,45 +1,45 @@ ---お家おとりつぶし -function c73872164.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - e1:SetCost(c73872164.cost) - e1:SetTarget(c73872164.target) - e1:SetOperation(c73872164.activate) - c:RegisterEffect(e1) -end -function c73872164.cfilter(c) - return c:IsType(TYPE_SPELL) and c:IsDiscardable() -end -function c73872164.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c73872164.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end - Duel.DiscardHand(tp,c73872164.cfilter,1,1,REASON_COST+REASON_DISCARD) -end -function c73872164.filter(c) - return c:IsFaceup() -end -function c73872164.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c73872164.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c73872164.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c73872164.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c73872164.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.BreakEffect() - local code=tc:GetCode() - local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,code) - local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) - Duel.ConfirmCards(tp,hg) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end - Duel.ShuffleHand(1-tp) - end -end +--お家おとりつぶし +function c73872164.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetCost(c73872164.cost) + e1:SetTarget(c73872164.target) + e1:SetOperation(c73872164.activate) + c:RegisterEffect(e1) +end +function c73872164.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c73872164.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c73872164.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.DiscardHand(tp,c73872164.cfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c73872164.filter(c) + return c:IsFaceup() +end +function c73872164.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c73872164.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c73872164.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c73872164.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c73872164.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.BreakEffect() + local code=tc:GetCode() + local g=Duel.GetMatchingGroup(Card.IsCode,tp,0,LOCATION_HAND,nil,code) + local hg=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + Duel.ConfirmCards(tp,hg) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c73881652.lua b/script/c73881652.lua new file mode 100644 index 00000000..27f36537 --- /dev/null +++ b/script/c73881652.lua @@ -0,0 +1,82 @@ +--十二獣の方合 +function c73881652.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c73881652.target) + e1:SetOperation(c73881652.activate) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(73881652,0)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_GRAVE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(aux.exccon) + e2:SetCost(c73881652.drcost) + e2:SetTarget(c73881652.drtg) + e2:SetOperation(c73881652.drop) + c:RegisterEffect(e2) +end +function c73881652.tgfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0xf1) +end +function c73881652.matfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0xf1) +end +function c73881652.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c73881652.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c73881652.tgfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c73881652.matfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c73881652.tgfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c73881652.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=Duel.SelectMatchingCard(tp,c73881652.matfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.Overlay(tc,g) + end + end +end +function c73881652.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c73881652.drfilter(c,e) + return c:IsSetCard(0xf1) and c:IsAbleToDeck() and c:IsCanBeEffectTarget(e) +end +function c73881652.drtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local g=Duel.GetMatchingGroup(c73881652.drfilter,tp,LOCATION_GRAVE,0,e:GetHandler(),e) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and g:GetClassCount(Card.GetCode)>4 end + local sg=Group.CreateGroup() + for i=1,5 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,g1:GetFirst():GetCode()) + sg:Merge(g1) + end + Duel.SetTargetCard(sg) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,5,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c73881652.drop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=5 then return end + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + if g:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then Duel.ShuffleDeck(tp) end + local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + if ct==5 then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c73887236.lua b/script/c73887236.lua index 1409d0bb..f07a47be 100644 --- a/script/c73887236.lua +++ b/script/c73887236.lua @@ -14,7 +14,7 @@ function c73887236.initial_effect(c) e2:SetDescription(aux.Stringid(73887236,0)) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetCost(c73887236.cost) e2:SetTarget(c73887236.target) diff --git a/script/c73891874.lua b/script/c73891874.lua index f217bab7..3cdac0cb 100644 --- a/script/c73891874.lua +++ b/script/c73891874.lua @@ -1,39 +1,39 @@ ---ホワイト・ホーンズ・ドラゴン -function c73891874.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(73891874,0)) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c73891874.target) - e1:SetOperation(c73891874.operation) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c73891874.filter(c) - return c:IsType(TYPE_SPELL) and c:IsAbleToRemove() -end -function c73891874.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c73891874.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c73891874.filter,tp,0,LOCATION_GRAVE,1,5,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) -end -function c73891874.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - local ct=Duel.Remove(g,POS_FACEUP,REASON_EFFECT) - local c=e:GetHandler() - if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetValue(ct*300) - c:RegisterEffect(e1) - end -end +--ホワイト・ホーンズ・ドラゴン +function c73891874.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(73891874,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c73891874.target) + e1:SetOperation(c73891874.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c73891874.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToRemove() +end +function c73891874.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c73891874.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c73891874.filter,tp,0,LOCATION_GRAVE,1,5,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c73891874.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ct=Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local c=e:GetHandler() + if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(ct*300) + c:RegisterEffect(e1) + end +end diff --git a/script/c73899015.lua b/script/c73899015.lua index 52ba3972..a49cafb8 100644 --- a/script/c73899015.lua +++ b/script/c73899015.lua @@ -1,41 +1,41 @@ ---ヴェノム・スネーク -function c73899015.initial_effect(c) - --add counter - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(73899015,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c73899015.cost) - e1:SetTarget(c73899015.target) - e1:SetOperation(c73899015.operation) - c:RegisterEffect(e1) -end -function c73899015.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c73899015.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsCanAddCounter(0x1009,1) end - if chk==0 then return Duel.IsExistingTarget(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,nil,0x1009,1) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) - local g=Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,1,nil,0x1009,1) - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0) -end -function c73899015.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsCanAddCounter(0x1009,1) then - local atk=tc:GetAttack() - tc:AddCounter(0x1009,1) - if atk>0 and tc:GetAttack()==0 then - Duel.RaiseEvent(tc,EVENT_CUSTOM+54306223,e,0,0,0,0) - end - end -end +--ヴェノム・スネーク +function c73899015.initial_effect(c) + --add counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(73899015,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c73899015.cost) + e1:SetTarget(c73899015.target) + e1:SetOperation(c73899015.operation) + c:RegisterEffect(e1) +end +function c73899015.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c73899015.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsCanAddCounter(0x1009,1) end + if chk==0 then return Duel.IsExistingTarget(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,nil,0x1009,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) + local g=Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,1,nil,0x1009,1) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0) +end +function c73899015.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsCanAddCounter(0x1009,1) then + local atk=tc:GetAttack() + tc:AddCounter(0x1009,1) + if atk>0 and tc:GetAttack()==0 then + Duel.RaiseEvent(tc,EVENT_CUSTOM+54306223,e,0,0,0,0) + end + end +end diff --git a/script/c73906480.lua b/script/c73906480.lua index 57290d30..e45fb1bf 100644 --- a/script/c73906480.lua +++ b/script/c73906480.lua @@ -1,60 +1,60 @@ ---武神降臨 -function c73906480.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c73906480.condition) - e1:SetTarget(c73906480.target) - e1:SetOperation(c73906480.activate) - c:RegisterEffect(e1) -end -function c73906480.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 -end -function c73906480.spfilter1(c,e,tp) - return c:IsSetCard(0x88) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c73906480.spfilter2(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x88) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c73906480.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c73906480.spfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) - and Duel.IsExistingTarget(c73906480.spfilter2,tp,LOCATION_REMOVED,0,1,nil,e,tp) - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectTarget(tp,c73906480.spfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectTarget(tp,c73906480.spfilter2,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) -end -function c73906480.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()~=2 then return end - local tc=g:GetFirst() - local c=e:GetHandler() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetValue(c73906480.xyzlimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc=g:GetNext() - end - Duel.SpecialSummonComplete() -end -function c73906480.xyzlimit(e,c) - if not c then return false end - return not c:IsRace(RACE_BEAST+RACE_BEASTWARRIOR+RACE_WINDBEAST) -end +--武神降臨 +function c73906480.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c73906480.condition) + e1:SetTarget(c73906480.target) + e1:SetOperation(c73906480.activate) + c:RegisterEffect(e1) +end +function c73906480.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c73906480.spfilter1(c,e,tp) + return c:IsSetCard(0x88) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c73906480.spfilter2(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x88) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c73906480.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c73906480.spfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.IsExistingTarget(c73906480.spfilter2,tp,LOCATION_REMOVED,0,1,nil,e,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c73906480.spfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c73906480.spfilter2,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) +end +function c73906480.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()~=2 then return end + local tc=g:GetFirst() + local c=e:GetHandler() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(c73906480.xyzlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end +function c73906480.xyzlimit(e,c) + if not c then return false end + return not c:IsRace(RACE_BEAST+RACE_BEASTWARRIOR+RACE_WINDBEAST) +end diff --git a/script/c7391448.lua b/script/c7391448.lua index bc717e65..9e34f563 100644 --- a/script/c7391448.lua +++ b/script/c7391448.lua @@ -1,7 +1,7 @@ --ゴヨウ・ガーディアン function c7391448.initial_effect(c) --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH),aux.NonTuner(nil),1) c:EnableReviveLimit() --special summon local e1=Effect.CreateEffect(c) @@ -9,17 +9,11 @@ function c7391448.initial_effect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCode(EVENT_BATTLE_DESTROYING) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCondition(c7391448.spcon) + e1:SetCondition(aux.bdogcon) e1:SetTarget(c7391448.sptg) e1:SetOperation(c7391448.spop) c:RegisterEffect(e1) end -function c7391448.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - if not c:IsRelateToBattle() or c:IsFacedown() then return false end - return bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) -end function c7391448.sptg(e,tp,eg,ep,ev,re,r,rp,chk) local bc=e:GetHandler():GetBattleTarget() if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c73941492.lua b/script/c73941492.lua new file mode 100644 index 00000000..e75dcfb8 --- /dev/null +++ b/script/c73941492.lua @@ -0,0 +1,140 @@ +--調弦の魔術師 +--Tune Magician +--Script by mercury233 +--fusion limit not implemented +--xyz limit by edo9300 +--add fusion and xyz limit by MLD +function c73941492.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk&def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetRange(LOCATION_PZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetValue(c73941492.atkval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + --cannot special summon + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetRange(LOCATION_EXTRA) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.FALSE) + c:RegisterEffect(e3) + --synchro custom + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SYNCHRO_MATERIAL_CUSTOM) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTarget(c73941492.syntg) + e4:SetValue(1) + e4:SetOperation(c73941492.synop) + c:RegisterEffect(e4) + --fusion and xyz custom not implemented, or is it? + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(73941492) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e5) + --local e6=Effect.CreateEffect(c) + --spsummon success + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(73941492,0)) + e7:SetCategory(CATEGORY_SPECIAL_SUMMON) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + e7:SetCountLimit(1,73941492) + e7:SetCondition(c73941492.spcon) + e7:SetTarget(c73941492.sptg) + e7:SetOperation(c73941492.spop) + c:RegisterEffect(e7) +end +function c73941492.fuslimitfilter(c) + return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) +end +function c73941492.xyzlimitfilter(c) + return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) +end +function c73941492.xyzfil(c,xyzc,lv) + return c:IsSetCard(0x98) and c:IsXyzLevel(xyzc,lv) and c:IsType(TYPE_PENDULUM) +end +function c73941492.xyzfil2(c,tp) + return c:IsFaceup() and not c:IsType(TYPE_TOKEN) and c:GetControler()==tp or (c:IsHasEffect(EFFECT_XYZ_MATERIAL) and c:GetControler()~=tp) +end +function c73941492.xyzfil3(c) + return not c:IsCode(73941492) +end +function c73941492.tuner_filter(c) + return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) +end +function c73941492.atkfilter(c) + return c:IsFaceup() and c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) +end +function c73941492.atkval(e,c) + local g=Duel.GetMatchingGroup(c73941492.atkfilter,c:GetControler(),LOCATION_EXTRA,0,nil) + return g:GetClassCount(Card.GetCode)*100 +end +function c73941492.synfilter(c,syncard,tuner,f) + return c:IsFaceup() and c:IsNotTuner() and c:IsCanBeSynchroMaterial(syncard,tuner) and c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) and (f==nil or f(c)) +end +function c73941492.syntg(e,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + if lv<=0 then return false end + local g=Duel.GetMatchingGroup(c73941492.synfilter,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + local res=g:CheckWithSumEqual(Card.GetSynchroLevel,lv,minc,maxc,syncard) + return res +end +function c73941492.synop(e,tp,eg,ep,ev,re,r,rp,syncard,f,minc,maxc) + local c=e:GetHandler() + local lv=syncard:GetLevel()-c:GetLevel() + local g=Duel.GetMatchingGroup(c73941492.synfilter,syncard:GetControler(),LOCATION_MZONE,LOCATION_MZONE,c,syncard,c,f) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local sg=g:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,minc,maxc,syncard) + Duel.SetSynchroMaterial(sg) +end +function c73941492.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_HAND) +end +function c73941492.spfilter(c,e,tp) + return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) and not c:IsCode(73941492) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c73941492.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c73941492.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c73941492.spop(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,c73941492.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c7394770.lua b/script/c7394770.lua index a2b551f7..74269c52 100644 --- a/script/c7394770.lua +++ b/script/c7394770.lua @@ -1,133 +1,136 @@ ---ブリリアント・フュージョン -function c7394770.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,7394770+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c7394770.target) - e1:SetOperation(c7394770.activate) - c:RegisterEffect(e1) - --Destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetOperation(c7394770.desop) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c7394770.atkcon) - e3:SetCost(c7394770.atkcost) - e3:SetTarget(c7394770.atktg) - e3:SetOperation(c7394770.atkop) - c:RegisterEffect(e3) -end -function c7394770.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) -end -function c7394770.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c7394770.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_DECK,0,nil) - local res=Duel.IsExistingMatchingCard(c7394770.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c7394770.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c7394770.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c7394770.filter1,tp,LOCATION_DECK,0,nil,e) - local sg1=Duel.GetMatchingGroup(c7394770.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c7394770.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0xfe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - tc:RegisterEffect(e2) - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - e:GetHandler():SetCardTarget(tc) - end -end -function c7394770.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - if tc and tc:IsLocation(LOCATION_MZONE) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c7394770.atkcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFirstCardTarget() -end -function c7394770.cfilter(c) - return c:IsType(TYPE_SPELL) and c:IsDiscardable() -end -function c7394770.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c7394770.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c7394770.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) -end -function c7394770.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFirstCardTarget() end -end -function c7394770.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=e:GetHandler():GetFirstCardTarget() - if not tc then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(tc:GetBaseAttack()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - e2:SetValue(tc:GetBaseDefense()) - tc:RegisterEffect(e2) -end +--ブリリアント・フュージョン +function c7394770.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON+CATEGORY_DECKDES) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,7394770+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c7394770.target) + e1:SetOperation(c7394770.activate) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetOperation(c7394770.desop) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c7394770.atkcon) + e3:SetCost(c7394770.atkcost) + e3:SetTarget(c7394770.atktg) + e3:SetOperation(c7394770.atkop) + c:RegisterEffect(e3) +end +function c7394770.filter0(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave() +end +function c7394770.filter1(c,e) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) +end +function c7394770.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c7394770.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c7394770.filter0,tp,LOCATION_DECK,0,nil) + local res=Duel.IsExistingMatchingCard(c7394770.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c7394770.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c7394770.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c7394770.filter1,tp,LOCATION_DECK,0,nil,e) + local sg1=Duel.GetMatchingGroup(c7394770.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c7394770.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0xfe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + tc:RegisterEffect(e2) + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + e:GetHandler():SetCardTarget(tc) + end +end +function c7394770.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c7394770.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFirstCardTarget() +end +function c7394770.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsDiscardable() +end +function c7394770.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c7394770.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c7394770.cfilter,1,1,REASON_COST+REASON_DISCARD,nil) +end +function c7394770.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFirstCardTarget() end +end +function c7394770.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=e:GetHandler():GetFirstCardTarget() + if not tc then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(tc:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(tc:GetBaseDefense()) + tc:RegisterEffect(e2) +end diff --git a/script/c73964868.lua b/script/c73964868.lua index c43c40d7..c34d6bb2 100644 --- a/script/c73964868.lua +++ b/script/c73964868.lua @@ -7,7 +7,7 @@ function c73964868.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(73964868,0)) e1:SetCategory(CATEGORY_TOHAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c74003290.lua b/script/c74003290.lua new file mode 100644 index 00000000..27f737d8 --- /dev/null +++ b/script/c74003290.lua @@ -0,0 +1,82 @@ +--迷い風 +function c74003290.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74003290,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + 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,TIMING_DAMAGE_STEP+0x1c0) + e1:SetCondition(c74003290.condition) + e1:SetTarget(c74003290.target) + e1:SetOperation(c74003290.activate) + c:RegisterEffect(e1) + --set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(74003290,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c74003290.setcon) + e2:SetTarget(c74003290.settg) + e2:SetOperation(c74003290.setop) + c:RegisterEffect(e2) +end +function c74003290.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c74003290.filter(c) + return c:IsFaceup() and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end +function c74003290.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c74003290.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c74003290.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c74003290.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c74003290.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + tc:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SET_BASE_ATTACK) + e3:SetValue(tc:GetBaseAttack()/2) + tc:RegisterEffect(e3) + end +end +function c74003290.cfilter(c,tp) + return c:GetSummonLocation()==LOCATION_EXTRA and c:GetPreviousControler()==1-tp +end +function c74003290.setcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c74003290.cfilter,1,nil,tp) +end +function c74003290.settg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsSSetable() end + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,e:GetHandler(),1,0,0) +end +function c74003290.setop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsSSetable() then + Duel.SSet(tp,c) + Duel.ConfirmCards(1-tp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1) + end +end diff --git a/script/c74009824.lua b/script/c74009824.lua index 29e87920..4a3895b2 100644 --- a/script/c74009824.lua +++ b/script/c74009824.lua @@ -40,111 +40,92 @@ function c74009824.initial_effect(c) c:RegisterEffect(e4) end function c74009824.ffilter1(c) - return c:IsFusionSetCard(0x9d) + return (c:IsFusionSetCard(0x9d) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end -function c74009824.ffilter2(c) - return c:IsAttribute(ATTRIBUTE_WIND) or c:IsHasEffect(4904633) +function c74009824.ffilter2(c,fc) + if c:IsHasEffect(6205579) then return false end + if c:IsHasEffect(511002961) then return true end + return (c:IsFusionAttribute(ATTRIBUTE_WIND) or c:IsHasEffect(4904633)) and not c:IsHasEffect(6205579) end function c74009824.exfilter(c,g) return c:IsFaceup() and c:IsCanBeFusionMaterial() and not g:IsContains(c) end +function c74009824.check1(c,mg,sg,chkf) + local g=mg:Clone() + if sg:IsContains(c) then g:Sub(sg) end + return g:IsExists(c74009824.check2,1,c,c,chkf) +end +function c74009824.check2(c,c2,chkf) + local g=Group.FromCards(c,c2) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=g:GetFirst() + while tc do + if c74009824.ffilter1(tc) or tc:IsHasEffect(511002961) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + if c74009824.ffilter2(tc) or tc:IsHasEffect(511002961) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + tc=g:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) + else return g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) end +end function c74009824.fuscon(e,g,gc,chkf) if g==nil then return true end + local chkf=bit.band(chkf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local sg=Group.CreateGroup() + local c=e:GetHandler() local tp=e:GetHandlerPlayer() local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - local exg=Group.CreateGroup() if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then - local sg=Duel.GetMatchingGroup(c74009824.exfilter,tp,0,LOCATION_MZONE,nil,g) - exg:Merge(sg) + sg=Duel.GetMatchingGroup(c74009824.exfilter,tp,0,LOCATION_MZONE,nil,g) + mg:Merge(sg) end - if gc then return (c74009824.ffilter1(gc) and (g:IsExists(c74009824.ffilter2,1,gc) or exg:IsExists(c74009824.ffilter2,1,gc))) - or (c74009824.ffilter2(gc) and (g:IsExists(c74009824.ffilter1,1,gc) or exg:IsExists(c74009824.ffilter1,1,gc))) end - local g1=Group.CreateGroup() - local g2=Group.CreateGroup() - local g3=Group.CreateGroup() - local g4=Group.CreateGroup() - local tc=g:GetFirst() - while tc do - if c74009824.ffilter1(tc) then - g1:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g3:AddCard(tc) end - end - if c74009824.ffilter2(tc) then - g2:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g4:AddCard(tc) end - end - tc=g:GetNext() - end - local exg1=exg:Filter(c74009824.ffilter1,nil) - local exg2=exg:Filter(c74009824.ffilter2,nil) - if chkf~=PLAYER_NONE then - return (g3:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g3:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g4:IsExists(aux.FConditionFilterF2,1,nil,g1) - or g4:IsExists(aux.FConditionFilterF2,1,nil,exg1)) - else - return (g1:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g1:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g2:IsExists(aux.FConditionFilterF2,1,nil,exg1)) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return c74009824.check1(gc,mg,sg,chkf) end + return mg:IsExists(c74009824.check1,1,nil,mg,sg,chkf) end function c74009824.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local c=e:GetHandler() local exg=Group.CreateGroup() + local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local p=tp + local sfhchk=false if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then local sg=Duel.GetMatchingGroup(c74009824.exfilter,tp,0,LOCATION_MZONE,nil,eg) exg:Merge(sg) + mg:Merge(sg) + end + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end end if gc then - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c74009824.ffilter1(gc) then - sg1:Merge(eg:Filter(c74009824.ffilter2,gc)) - sg2:Merge(exg:Filter(c74009824.ffilter2,gc)) - end - if c74009824.ffilter2(gc) then - sg1:Merge(eg:Filter(c74009824.ffilter1,gc)) - sg2:Merge(exg:Filter(c74009824.ffilter1,gc)) - end - local g1=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c74009824.check2,1,1,gc,gc,chkf) + local tc1=g1:GetFirst() + if c74009824.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg1:Select(tp,1,1,nil) end + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - local sg=eg:Filter(aux.FConditionFilterF2c,nil,c74009824.ffilter1,c74009824.ffilter2) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then - g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c74009824.check1,1,1,nil,mg,exg,chkf) local tc1=g1:GetFirst() - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c74009824.ffilter1(tc1) then - sg1:Merge(sg:Filter(c74009824.ffilter2,tc1)) - sg2:Merge(exg:Filter(c74009824.ffilter2,tc1)) - end - if c74009824.ffilter2(tc1) then - sg1:Merge(sg:Filter(c74009824.ffilter1,tc1)) - sg2:Merge(exg:Filter(c74009824.ffilter1,tc1)) - end - local g2=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + if c74009824.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg1:Select(tp,1,1,nil) + mg:Sub(exg) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,c74009824.check2,1,1,tc1,tc1,chkf) + if c74009824.exfilter(g2:GetFirst(),eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) end g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end function c74009824.splimit(e,se,sp,st) diff --git a/script/c74063034.lua b/script/c74063034.lua new file mode 100644 index 00000000..75290427 --- /dev/null +++ b/script/c74063034.lua @@ -0,0 +1,136 @@ +--召喚魔術 +function c74063034.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74063034,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c74063034.sptg) + e1:SetOperation(c74063034.spop) + c:RegisterEffect(e1) + --to deck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(74063034,1)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,74063034) + e2:SetTarget(c74063034.tdtg) + e2:SetOperation(c74063034.tdop) + c:RegisterEffect(e2) +end +function c74063034.mfilter0(c) + return c:IsOnField() and c:IsAbleToRemove() +end +function c74063034.mfilter1(c,e) + return c:IsLocation(LOCATION_HAND) and not c:IsImmuneToEffect(e) +end +function c74063034.mfilter2(c,e) + return c:IsOnField() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c74063034.mfilter3(c) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() and c:IsAbleToRemove() +end +function c74063034.spfilter1(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c74063034.spfilter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0xf4) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c74063034.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg=Duel.GetFusionMaterial(tp) + local mg1=mg:Filter(Card.IsLocation,nil,LOCATION_HAND) + local res=Duel.IsExistingMatchingCard(c74063034.spfilter1,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if res then return true end + local mg2=mg:Filter(c74063034.mfilter0,nil) + local mg3=Duel.GetMatchingGroup(c74063034.mfilter3,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil) + mg2:Merge(mg1) + mg2:Merge(mg3) + res=Duel.IsExistingMatchingCard(c74063034.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg4=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c74063034.spfilter1,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg4,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c74063034.spop(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg=Duel.GetFusionMaterial(tp) + local mg1=mg:Filter(c74063034.mfilter1,nil,e) + local sg1=Duel.GetMatchingGroup(c74063034.spfilter1,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=mg:Filter(c74063034.mfilter2,nil,e) + local mg3=Duel.GetMatchingGroup(c74063034.mfilter3,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil) + mg2:Merge(mg1) + mg2:Merge(mg3) + local sg2=Duel.GetMatchingGroup(c74063034.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,nil,chkf) + sg1:Merge(sg2) + local mg4=nil + local sg3=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg4=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg3=Duel.GetMatchingGroup(c74063034.spfilter1,tp,LOCATION_EXTRA,0,nil,e,tp,mg4,mf,chkf) + end + if sg1:GetCount()>0 or (sg3~=nil and sg3:GetCount()>0) then + local sg=sg1:Clone() + if sg3 then sg:Merge(sg3) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg3==nil or not sg3:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + if tc:IsSetCard(0xf4) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + tc:SetMaterial(mat1) + local mat2=mat1:Filter(Card.IsLocation,nil,LOCATION_ONFIELD+LOCATION_GRAVE) + mat1:Sub(mat2) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.Remove(mat2,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat2) + Duel.SendtoGrave(mat2,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + end + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat=Duel.SelectFusionMaterial(tp,tc,mg4,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat) + end + tc:CompleteProcedure() + end +end +function c74063034.thfilter(c) + return c:IsFaceup() and c:IsCode(86120751) and c:IsAbleToDeck() +end +function c74063034.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c74063034.thfilter(chkc) end + if chk==0 then return e:GetHandler():IsAbleToDeck() + and Duel.IsExistingTarget(c74063034.thfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c74063034.thfilter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c74063034.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and Duel.SendtoDeck(c,nil,2,REASON_EFFECT)~=0 and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c74064212.lua b/script/c74064212.lua index 3ef8f0d6..58b66f71 100644 --- a/script/c74064212.lua +++ b/script/c74064212.lua @@ -1,61 +1,61 @@ ---ヴァイロン・プリズム -function c74064212.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(74064212,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c74064212.eqcon) - e1:SetCost(c74064212.eqcost) - e1:SetTarget(c74064212.eqtg) - e1:SetOperation(c74064212.eqop) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetCondition(c74064212.atkcon) - e2:SetValue(1000) - c:RegisterEffect(e2) -end -function c74064212.eqcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:GetPreviousLocation()==LOCATION_MZONE -end -function c74064212.eqcost(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 c74064212.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c74064212.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc) - --equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c74064212.eqlimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - end -end -function c74064212.eqlimit(e,c) - local tp=e:GetHandlerPlayer() - return c:IsControler(tp) -end -function c74064212.atkcon(e) - local ph=Duel.GetCurrentPhase() - local ec=e:GetHandler():GetEquipTarget() - return ec and (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and ec:IsRelateToBattle() -end +--ヴァイロン・プリズム +function c74064212.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74064212,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c74064212.eqcon) + e1:SetCost(c74064212.eqcost) + e1:SetTarget(c74064212.eqtg) + e1:SetOperation(c74064212.eqop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetCondition(c74064212.atkcon) + e2:SetValue(1000) + c:RegisterEffect(e2) +end +function c74064212.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetPreviousLocation()==LOCATION_MZONE +end +function c74064212.eqcost(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 c74064212.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c74064212.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + --equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c74064212.eqlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c74064212.eqlimit(e,c) + local tp=e:GetHandlerPlayer() + return c:IsControler(tp) +end +function c74064212.atkcon(e) + local ph=Duel.GetCurrentPhase() + local ec=e:GetHandler():GetEquipTarget() + return ec and (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and ec:IsRelateToBattle() +end diff --git a/script/c74069667.lua b/script/c74069667.lua index 75d21273..561e3283 100644 --- a/script/c74069667.lua +++ b/script/c74069667.lua @@ -1,115 +1,115 @@ ---DDD壊薙王アビス・ラグナロク -function c74069667.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCountLimit(1,74069667) - e2:SetCondition(c74069667.spcon1) - e2:SetTarget(c74069667.sptg1) - e2:SetOperation(c74069667.spop1) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,74069668) - e3:SetTarget(c74069667.sptg2) - e3:SetOperation(c74069667.spop2) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - --remove - local e5=Effect.CreateEffect(c) - e5:SetCategory(CATEGORY_REMOVE) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetCost(c74069667.rmcost) - e5:SetTarget(c74069667.rmtg) - e5:SetOperation(c74069667.rmop) - c:RegisterEffect(e5) -end -function c74069667.cfilter(c,tp) - return c:IsFaceup() and c:IsSetCard(0xaf) and c:GetSummonPlayer()==tp -end -function c74069667.spcon1(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c74069667.cfilter,1,nil,tp) -end -function c74069667.spfilter1(c,e,tp) - return c:IsSetCard(0xaf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c74069667.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c74069667.spfilter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c74069667.spfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c74069667.spfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) -end -function c74069667.spop1(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - Duel.Damage(tp,1000,REASON_EFFECT) - Duel.SpecialSummonComplete() - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetValue(c74069667.val) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c74069667.val(e,re,dam,r,rp,rc) - if bit.band(r,REASON_BATTLE)~=0 then - return dam/2 - else return dam end -end -function c74069667.spfilter2(c,e,tp) - return c:IsSetCard(0x10af) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c74069667.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c74069667.spfilter2(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c74069667.spfilter2,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c74069667.spfilter2,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c74069667.spop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c74069667.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,e:GetHandler(),0xaf) end - local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,e:GetHandler(),0xaf) - Duel.Release(g,REASON_COST) -end -function c74069667.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c74069667.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end +--DDD壊薙王アビス・ラグナロク +function c74069667.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCountLimit(1,74069667) + e2:SetCondition(c74069667.spcon1) + e2:SetTarget(c74069667.sptg1) + e2:SetOperation(c74069667.spop1) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,74069668) + e3:SetTarget(c74069667.sptg2) + e3:SetOperation(c74069667.spop2) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + --remove + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_REMOVE) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCost(c74069667.rmcost) + e5:SetTarget(c74069667.rmtg) + e5:SetOperation(c74069667.rmop) + c:RegisterEffect(e5) +end +function c74069667.cfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xaf) and c:GetSummonPlayer()==tp +end +function c74069667.spcon1(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c74069667.cfilter,1,nil,tp) +end +function c74069667.spfilter1(c,e,tp) + return c:IsSetCard(0xaf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c74069667.sptg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c74069667.spfilter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c74069667.spfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c74069667.spfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,1000) +end +function c74069667.spop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + Duel.Damage(tp,1000,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(c74069667.val) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c74069667.val(e,re,dam,r,rp,rc) + if bit.band(r,REASON_BATTLE)~=0 then + return dam/2 + else return dam end +end +function c74069667.spfilter2(c,e,tp) + return c:IsSetCard(0x10af) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c74069667.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c74069667.spfilter2(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c74069667.spfilter2,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c74069667.spfilter2,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c74069667.spop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c74069667.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,e:GetHandler(),0xaf) end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,e:GetHandler(),0xaf) + Duel.Release(g,REASON_COST) +end +function c74069667.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c74069667.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c7409792.lua b/script/c7409792.lua index a6926489..d29d51a6 100644 --- a/script/c7409792.lua +++ b/script/c7409792.lua @@ -20,12 +20,13 @@ function c7409792.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(7409792,0)) e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_EVENT_PLAYER) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) e3:SetCode(EVENT_CUSTOM+7409792) e3:SetTarget(c7409792.target) e3:SetOperation(c7409792.operation) c:RegisterEffect(e3) + e2:SetLabelObject(e3) end function c7409792.spcon(e,c) if c==nil then return true end @@ -33,24 +34,28 @@ function c7409792.spcon(e,c) return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end function c7409792.trigop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 then - Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+7409792,e,r,rp,1-tp,0) + local c=e:GetHandler() + if c:GetSummonType()==SUMMON_TYPE_SPECIAL+1 + and e:GetLabelObject():IsActivatable(tp) + and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c7409792.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) + and Duel.SelectEffectYesNo(1-tp,c) then + Duel.RaiseSingleEvent(c,EVENT_CUSTOM+7409792,e,r,rp,tp,0) end end function c7409792.filter(c,e,tp) return c:GetLevel()==4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c7409792.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c7409792.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c7409792.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c7409792.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c7409792.filter(chkc,e,1-tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(1-tp,c7409792.filter,1-tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,1-tp) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) end function c7409792.operation(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummon(tc,0,1-tp,1-tp,false,false,POS_FACEUP) end end diff --git a/script/c74115234.lua b/script/c74115234.lua index c6891650..9b6da60d 100644 --- a/script/c74115234.lua +++ b/script/c74115234.lua @@ -1,14 +1,6 @@ --八尺勾玉 function c74115234.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(c74115234.target) - e1:SetOperation(c74115234.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsType,TYPE_SPIRIT)) --recover local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(74115234,0)) @@ -21,13 +13,6 @@ function c74115234.initial_effect(c) e2:SetTarget(c74115234.retg) e2:SetOperation(c74115234.reop) 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(c74115234.eqlimit) - c:RegisterEffect(e3) --tohand local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(74115234,1)) @@ -39,25 +24,6 @@ function c74115234.initial_effect(c) e4:SetOperation(c74115234.retop) c:RegisterEffect(e4) end -function c74115234.eqlimit(e,c) - return c:IsType(TYPE_SPIRIT) -end -function c74115234.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SPIRIT) -end -function c74115234.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c74115234.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c74115234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c74115234.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c74115234.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 c74115234.recon(e,tp,eg,ep,ev,re,r,rp) local ec=eg:GetFirst() local bc=ec:GetBattleTarget() diff --git a/script/c74137509.lua b/script/c74137509.lua index c86c6aa2..99013505 100644 --- a/script/c74137509.lua +++ b/script/c74137509.lua @@ -1,40 +1,40 @@ ---天使のサイコロ -function c74137509.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c74137509.condition) - e1:SetTarget(c74137509.target) - e1:SetOperation(c74137509.activate) - c:RegisterEffect(e1) -end -function c74137509.condition(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetCurrentPhase()==PHASE_DAMAGE and Duel.IsDamageCalculated() then return false end - return true -end -function c74137509.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end -end -function c74137509.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) - if g:GetCount()>0 then - local d=Duel.TossDice(tp,1) - local sc=g:GetFirst() - while sc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(d*100) - sc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - sc:RegisterEffect(e2) - sc=g:GetNext() - end - end -end +--天使のサイコロ +function c74137509.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c74137509.condition) + e1:SetTarget(c74137509.target) + e1:SetOperation(c74137509.activate) + c:RegisterEffect(e1) +end +function c74137509.condition(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetCurrentPhase()==PHASE_DAMAGE and Duel.IsDamageCalculated() then return false end + return true +end +function c74137509.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c74137509.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + local d=Duel.TossDice(tp,1) + local sc=g:GetFirst() + while sc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(d*100) + sc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + sc:RegisterEffect(e2) + sc=g:GetNext() + end + end +end diff --git a/script/c74203495.lua b/script/c74203495.lua index 8a5e66b4..2378b9c2 100644 --- a/script/c74203495.lua +++ b/script/c74203495.lua @@ -1,91 +1,90 @@ ---PSYフレームギア・δ -function c74203495.initial_effect(c) - c:EnableUnsummonable() - --splimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c74203495.splimit) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(74203495,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_HAND) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetCondition(c74203495.condition) - e2:SetTarget(c74203495.target) - e2:SetOperation(c74203495.operation) - c:RegisterEffect(e2) -end -function c74203495.splimit(e,se,sp,st) - return se:IsHasType(EFFECT_TYPE_ACTIONS) -end -function c74203495.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and ep~=tp and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) - and Duel.IsChainNegatable(ev) -end -function c74203495.spfilter(c,e,tp) - return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c74203495.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) - and not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c74203495.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c74203495.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c74203495.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:FilterCount(aux.nvfilter,nil)==0 then return end - local tc=g:GetFirst() - local c=e:GetHandler() - local fid=c:GetFieldID() - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(74203495,RESET_EVENT+0x1fe0000,0,1,fid) - c:RegisterFlagEffect(74203495,RESET_EVENT+0x1fe0000,0,1,fid) - Duel.SpecialSummonComplete() - g:AddCard(c) - g:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(g) - e1:SetCondition(c74203495.rmcon) - e1:SetOperation(c74203495.rmop) - Duel.RegisterEffect(e1,tp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c74203495.rmfilter(c,fid) - return c:GetFlagEffectLabel(74203495)==fid -end -function c74203495.rmcon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c74203495.rmfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c74203495.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c74203495.rmfilter,nil,e:GetLabel()) - Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) -end +--PSYフレームギア・δ +function c74203495.initial_effect(c) + c:EnableUnsummonable() + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c74203495.splimit) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(74203495,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCondition(c74203495.condition) + e2:SetTarget(c74203495.target) + e2:SetOperation(c74203495.operation) + c:RegisterEffect(e2) +end +function c74203495.splimit(e,se,sp,st) + return se:IsHasType(EFFECT_TYPE_ACTIONS) +end +function c74203495.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and ep~=tp and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsChainNegatable(ev) +end +function c74203495.spfilter(c,e,tp) + return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c74203495.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c74203495.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c74203495.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c74203495.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local tc=g:GetFirst() + local c=e:GetHandler() + local fid=c:GetFieldID() + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(74203495,RESET_EVENT+0x1fe0000,0,1,fid) + c:RegisterFlagEffect(74203495,RESET_EVENT+0x1fe0000,0,1,fid) + Duel.SpecialSummonComplete() + g:AddCard(c) + g:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c74203495.rmcon) + e1:SetOperation(c74203495.rmop) + Duel.RegisterEffect(e1,tp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c74203495.rmfilter(c,fid) + return c:GetFlagEffectLabel(74203495)==fid +end +function c74203495.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c74203495.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c74203495.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c74203495.rmfilter,nil,e:GetLabel()) + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c74270067.lua b/script/c74270067.lua index e23b9faa..6f51465e 100644 --- a/script/c74270067.lua +++ b/script/c74270067.lua @@ -1,27 +1,27 @@ ---ピケルの魔法陣 -function c74270067.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetOperation(c74270067.operation) - c:RegisterEffect(e1) -end -function c74270067.operation(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(c74270067.damval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end -function c74270067.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 - else return val end -end +--ピケルの魔法陣 +function c74270067.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c74270067.operation) + c:RegisterEffect(e1) +end +function c74270067.operation(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(c74270067.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c74270067.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end diff --git a/script/c74294676.lua b/script/c74294676.lua index 923f4124..e4d4ff91 100644 --- a/script/c74294676.lua +++ b/script/c74294676.lua @@ -7,12 +7,12 @@ function c74294676.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(74294676,0)) e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_CHAINING) e1:SetCondition(c74294676.condition1) - e1:SetCost(c74294676.cost1) + e1:SetCost(c74294676.cost) e1:SetTarget(c74294676.target1) e1:SetOperation(c74294676.operation1) c:RegisterEffect(e1) @@ -20,11 +20,12 @@ function c74294676.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(74294676,1)) e2:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) e2:SetCode(EVENT_SUMMON) e2:SetCondition(c74294676.condition2) - e2:SetCost(c74294676.cost2) + e2:SetCost(c74294676.cost) e2:SetTarget(c74294676.target2) e2:SetOperation(c74294676.operation2) c:RegisterEffect(e2) @@ -37,7 +38,7 @@ function c74294676.condition1(e,tp,eg,ep,ev,re,r,rp) return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) end -function c74294676.cost1(e,tp,eg,ep,ev,re,r,rp,chk) +function c74294676.cost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,2,REASON_COST) end e:GetHandler():RemoveOverlayCard(tp,2,2,REASON_COST) end @@ -49,18 +50,13 @@ function c74294676.target1(e,tp,eg,ep,ev,re,r,rp,chk) end end function c74294676.operation1(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end function c74294676.condition2(e,tp,eg,ep,ev,re,r,rp) return Duel.GetCurrentChain()==0 end -function c74294676.cost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,2,REASON_COST) end - e:GetHandler():RemoveOverlayCard(tp,2,2,REASON_COST) -end function c74294676.target2(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) diff --git a/script/c74329404.lua b/script/c74329404.lua index 9fa8732c..f3a7eb5b 100644 --- a/script/c74329404.lua +++ b/script/c74329404.lua @@ -1,75 +1,74 @@ ---D-フォーメーション -function c74329404.initial_effect(c) - c:EnableCounterPermit(0x1c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_DESTROYED) - e2:SetCondition(c74329404.ctcon) - e2:SetOperation(c74329404.ctop) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(74329404,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetCondition(c74329404.thcon) - e3:SetCost(c74329404.thcost) - e3:SetTarget(c74329404.thtg) - e3:SetOperation(c74329404.thop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) -end -function c74329404.ctfilter(c,tp) - return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0xc008) -end -function c74329404.ctcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c74329404.ctfilter,1,nil,tp) -end -function c74329404.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x1c,1) -end -function c74329404.thcon(e,tp,eg,ep,ev,re,r,rp) - local ph=Duel.GetCurrentPhase() - return Duel.GetTurnPlayer()==tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) -end -function c74329404.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and e:GetHandler():GetCounter(0x1c)>=2 end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c74329404.filter1(c,e,tp) - return c:IsFaceup() and (not e or c:IsRelateToEffect(e)) - and Duel.IsExistingMatchingCard(c74329404.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,c:GetCode()) -end -function c74329404.filter2(c,code) - return c:IsCode(code) and c:IsAbleToHand() -end -function c74329404.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c74329404.filter1,1,nil,nil,tp) end - Duel.SetTargetCard(eg) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c74329404.thop(e,tp,eg,ep,ev,re,r,rp) - local g=eg:Filter(c74329404.filter1,nil,e,tp) - if g:GetCount()==0 then return end - if g:GetCount()>1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - g=g:Select(tp,1,1,nil) - end - local tc=g:GetFirst() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local ag=Duel.SelectMatchingCard(tp,c74329404.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,2,nil,tc:GetCode()) - if ag:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - Duel.SendtoHand(ag,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,ag) -end +--D-フォーメーション +function c74329404.initial_effect(c) + c:EnableCounterPermit(0x1c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c74329404.ctcon) + e2:SetOperation(c74329404.ctop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(74329404,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetCondition(c74329404.thcon) + e3:SetCost(c74329404.thcost) + e3:SetTarget(c74329404.thtg) + e3:SetOperation(c74329404.thop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c74329404.ctfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0xc008) +end +function c74329404.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c74329404.ctfilter,1,nil,tp) +end +function c74329404.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x1c,1) +end +function c74329404.thcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c74329404.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() and e:GetHandler():GetCounter(0x1c)>=2 end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c74329404.filter1(c,e,tp) + return c:IsFaceup() and (not e or c:IsRelateToEffect(e)) + and Duel.IsExistingMatchingCard(c74329404.filter2,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,c:GetCode()) +end +function c74329404.filter2(c,code) + return c:IsCode(code) and c:IsAbleToHand() +end +function c74329404.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c74329404.filter1,1,nil,nil,tp) end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c74329404.thop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c74329404.filter1,nil,e,tp) + if g:GetCount()==0 then return end + if g:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + g=g:Select(tp,1,1,nil) + end + local tc=g:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local ag=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c74329404.filter2),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,2,nil,tc:GetCode()) + Duel.SendtoHand(ag,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,ag) +end diff --git a/script/c74335036.lua b/script/c74335036.lua index 3822f5a6..2ee16071 100644 --- a/script/c74335036.lua +++ b/script/c74335036.lua @@ -1,103 +1,103 @@ ---置換融合 -function c74335036.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(74335036,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c74335036.target) - e1:SetOperation(c74335036.activate) - c:RegisterEffect(e1) - --to deck - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(74335036,1)) - e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCost(c74335036.tdcost) - e2:SetTarget(c74335036.tdtg) - e2:SetOperation(c74335036.tdop) - c:RegisterEffect(e2) -end -function c74335036.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c74335036.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c74335036.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c74335036.filter1,tp,LOCATION_MZONE,0,nil,e) - local res=Duel.IsExistingMatchingCard(c74335036.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c74335036.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c74335036.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c74335036.filter1,tp,LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c74335036.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c74335036.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end -function c74335036.tdfilter(c) - return c:IsType(TYPE_FUSION) and c:IsAbleToExtra() -end -function c74335036.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c74335036.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c74335036.tdfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c74335036.tdfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c74335036.tdfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c74335036.tdop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)~=0 then - Duel.BreakEffect() - Duel.Draw(tp,1,REASON_EFFECT) - end -end +--置換融合 +function c74335036.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74335036,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c74335036.target) + e1:SetOperation(c74335036.activate) + c:RegisterEffect(e1) + --to deck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(74335036,1)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c74335036.tdcost) + e2:SetTarget(c74335036.tdtg) + e2:SetOperation(c74335036.tdop) + c:RegisterEffect(e2) +end +function c74335036.filter1(c,e) + return c:IsOnField() and not c:IsImmuneToEffect(e) +end +function c74335036.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c74335036.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) + local res=Duel.IsExistingMatchingCard(c74335036.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c74335036.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c74335036.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c74335036.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c74335036.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c74335036.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c74335036.tdfilter(c) + return c:IsType(TYPE_FUSION) and c:IsAbleToExtra() +end +function c74335036.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c74335036.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c74335036.tdfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c74335036.tdfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c74335036.tdfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c74335036.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)~=0 then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c74364659.lua b/script/c74364659.lua index 0c8e80be..4a520875 100644 --- a/script/c74364659.lua +++ b/script/c74364659.lua @@ -1,46 +1,46 @@ ---水霊使いエリア -function c74364659.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(74364659,0)) - e1:SetCategory(CATEGORY_CONTROL) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetTarget(c74364659.target) - e1:SetOperation(c74364659.operation) - c:RegisterEffect(e1) -end -function c74364659.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:IsControlerCanBeChanged() -end -function c74364659.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c74364659.filter(chkc) end - if chk==0 then return true end - if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c74364659.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) - end -end -function c74364659.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c74364659.filter(tc) then - c:SetCardTarget(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_CONTROL) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(tp) - e1:SetLabel(0) - e1:SetReset(RESET_EVENT+0x1fc0000) - e1:SetCondition(c74364659.ctcon) - tc:RegisterEffect(e1) - end -end -function c74364659.ctcon(e) - local c=e:GetOwner() - local h=e:GetHandler() - return h:IsAttribute(ATTRIBUTE_WATER) and c:IsHasCardTarget(h) -end +--水霊使いエリア +function c74364659.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74364659,0)) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c74364659.target) + e1:SetOperation(c74364659.operation) + c:RegisterEffect(e1) +end +function c74364659.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:IsControlerCanBeChanged() +end +function c74364659.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c74364659.filter(chkc) end + if chk==0 then return true end + if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c74364659.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) + end +end +function c74364659.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c74364659.filter(tc) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(tp) + e1:SetLabel(0) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetCondition(c74364659.ctcon) + tc:RegisterEffect(e1) + end +end +function c74364659.ctcon(e) + local c=e:GetOwner() + local h=e:GetHandler() + return h:IsAttribute(ATTRIBUTE_WATER) and c:IsHasCardTarget(h) +end diff --git a/script/c74371660.lua b/script/c74371660.lua index daf6c16c..34e2135a 100644 --- a/script/c74371660.lua +++ b/script/c74371660.lua @@ -19,6 +19,7 @@ function c74371660.initial_effect(c) e2:SetCode(EVENT_FREE_CHAIN) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetHintTiming(0,0x1c0) e2:SetCost(c74371660.cost) e2:SetTarget(c74371660.target) diff --git a/script/c74393852.lua b/script/c74393852.lua new file mode 100644 index 00000000..fe1873c8 --- /dev/null +++ b/script/c74393852.lua @@ -0,0 +1,75 @@ +--十二獣ワイルドボウ +function c74393852.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,5,c74393852.ovfilter,aux.Stringid(74393852,0),5,c74393852.xyzop) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c74393852.atkval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(c74393852.defval) + c:RegisterEffect(e2) + --to grave + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(74393852,1)) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DAMAGE) + e3:SetCondition(c74393852.condition) + e3:SetTarget(c74393852.target) + e3:SetOperation(c74393852.operation) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e4) +end +function c74393852.ovfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf1) and not c:IsCode(74393852) +end +function c74393852.xyzop(e,tp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,74393852)==0 end + Duel.RegisterFlagEffect(tp,74393852,RESET_PHASE+PHASE_END,0,1) +end +function c74393852.atkfilter(c) + return c:IsSetCard(0xf1) and c:GetAttack()>=0 +end +function c74393852.atkval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c74393852.atkfilter,nil) + return g:GetSum(Card.GetAttack) +end +function c74393852.deffilter(c) + return c:IsSetCard(0xf1) and c:GetDefense()>=0 +end +function c74393852.defval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c74393852.deffilter,nil) + return g:GetSum(Card.GetDefense) +end +function c74393852.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and e:GetHandler():GetOverlayCount()>=12 +end +function c74393852.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND+LOCATION_ONFIELD) + if chk==0 then return g:GetCount()>0 end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c74393852.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND+LOCATION_ONFIELD) + Duel.SendtoGrave(g,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + if og:GetCount()>0 then + Duel.BreakEffect() + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end + end +end diff --git a/script/c74402414.lua b/script/c74402414.lua index 5a7767f6..ad1854ea 100644 --- a/script/c74402414.lua +++ b/script/c74402414.lua @@ -1,115 +1,115 @@ ---マジック・クロニクル -function c74402414.initial_effect(c) - c:EnableCounterPermit(0x25) - local g=Group.CreateGroup() - g:KeepAlive() - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c74402414.cost) - e1:SetTarget(c74402414.target) - e1:SetOperation(c74402414.activate) - e1:SetLabelObject(g) - c:RegisterEffect(e1) - --add counter - local e0=Effect.CreateEffect(c) - e0:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e0:SetCode(EVENT_CHAINING) - e0:SetRange(LOCATION_SZONE) - e0:SetOperation(aux.chainreg) - c:RegisterEffect(e0) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_CHAIN_SOLVED) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c74402414.ctop) - c:RegisterEffect(e2) - --salvage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(74402414,0)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_SZONE) - e3:SetCost(c74402414.thcost) - e3:SetTarget(c74402414.thtg) - e3:SetOperation(c74402414.thop) - e3:SetLabelObject(g) - c:RegisterEffect(e3) - --damage - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c74402414.damcon) - e4:SetOperation(c74402414.damop) - e4:SetLabelObject(g) - c:RegisterEffect(e4) -end -function c74402414.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - if chk==0 then return hg:GetCount()>0 and hg:FilterCount(Card.IsAbleToGraveAsCost,nil)==hg:GetCount() end - Duel.SendtoGrave(hg,REASON_COST) -end -function c74402414.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemove() -end -function c74402414.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c74402414.filter,tp,LOCATION_DECK,0,5,nil) end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,5,tp,LOCATION_DECK) -end -function c74402414.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(c74402414.filter,tp,LOCATION_DECK,0,nil) - if g:GetCount()<5 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local rg=g:Select(tp,5,5,nil) - Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) - local tc=rg:GetFirst() - while tc do - tc:RegisterFlagEffect(74402414,RESET_EVENT+0x1fe0000,0,0) - tc=rg:GetNext() - end - e:GetLabelObject():Clear() - e:GetLabelObject():Merge(rg) -end -function c74402414.ctop(e,tp,eg,ep,ev,re,r,rp) - if rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and e:GetHandler():GetFlagEffect(1)>0 then - e:GetHandler():AddCounter(0x25,1) - end -end -function c74402414.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x25,2,REASON_COST) end - e:GetHandler():RemoveCounter(tp,0x25,2,REASON_COST) -end -function c74402414.thfilter(c) - return c:GetFlagEffect(74402414)~=0 and c:IsAbleToHand() -end -function c74402414.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return e:GetLabelObject():IsContains(chkc) and c74402414.thfilter(chkc) end - if chk==0 then return e:GetLabelObject():IsExists(c74402414.thfilter,1,nil) end - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) - local g=e:GetLabelObject():FilterSelect(1-tp,c74402414.thfilter,1,1,nil) - e:GetLabelObject():Sub(g) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_REMOVED) -end -function c74402414.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end -function c74402414.dfilter(c) - return c:GetFlagEffect(74402414)~=0 -end -function c74402414.damcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_ACTIVATED) -end -function c74402414.damop(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetLabelObject():FilterCount(c74402414.dfilter,nil) - Duel.Damage(tp,ct*500,REASON_EFFECT) -end +--マジック・クロニクル +function c74402414.initial_effect(c) + c:EnableCounterPermit(0x25) + local g=Group.CreateGroup() + g:KeepAlive() + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c74402414.cost) + e1:SetTarget(c74402414.target) + e1:SetOperation(c74402414.activate) + e1:SetLabelObject(g) + c:RegisterEffect(e1) + --add counter + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e0:SetCode(EVENT_CHAINING) + e0:SetRange(LOCATION_SZONE) + e0:SetOperation(aux.chainreg) + c:RegisterEffect(e0) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c74402414.ctop) + c:RegisterEffect(e2) + --salvage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(74402414,0)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c74402414.thcost) + e3:SetTarget(c74402414.thtg) + e3:SetOperation(c74402414.thop) + e3:SetLabelObject(g) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c74402414.damcon) + e4:SetOperation(c74402414.damop) + e4:SetLabelObject(g) + c:RegisterEffect(e4) +end +function c74402414.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + if chk==0 then return hg:GetCount()>0 and hg:FilterCount(Card.IsAbleToGraveAsCost,nil)==hg:GetCount() end + Duel.SendtoGrave(hg,REASON_COST) +end +function c74402414.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemove() +end +function c74402414.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c74402414.filter,tp,LOCATION_DECK,0,5,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,5,tp,LOCATION_DECK) +end +function c74402414.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c74402414.filter,tp,LOCATION_DECK,0,nil) + if g:GetCount()<5 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=g:Select(tp,5,5,nil) + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) + local tc=rg:GetFirst() + while tc do + tc:RegisterFlagEffect(74402414,RESET_EVENT+0x1fe0000,0,0) + tc=rg:GetNext() + end + e:GetLabelObject():Clear() + e:GetLabelObject():Merge(rg) +end +function c74402414.ctop(e,tp,eg,ep,ev,re,r,rp) + if rp~=tp and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and e:GetHandler():GetFlagEffect(1)>0 then + e:GetHandler():AddCounter(0x25,1) + end +end +function c74402414.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanRemoveCounter(tp,0x25,2,REASON_COST) end + e:GetHandler():RemoveCounter(tp,0x25,2,REASON_COST) +end +function c74402414.thfilter(c) + return c:GetFlagEffect(74402414)~=0 and c:IsAbleToHand() +end +function c74402414.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return e:GetLabelObject():IsContains(chkc) and c74402414.thfilter(chkc) end + if chk==0 then return e:GetLabelObject():IsExists(c74402414.thfilter,1,nil) end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local g=e:GetLabelObject():FilterSelect(1-tp,c74402414.thfilter,1,1,nil) + e:GetLabelObject():Sub(g) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_REMOVED) +end +function c74402414.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c74402414.dfilter(c) + return c:GetFlagEffect(74402414)~=0 +end +function c74402414.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsStatus(STATUS_ACTIVATED) +end +function c74402414.damop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabelObject():FilterCount(c74402414.dfilter,nil) + Duel.Damage(tp,ct*500,REASON_EFFECT) +end diff --git a/script/c74416026.lua b/script/c74416026.lua index 96d44b3e..61fec47d 100644 --- a/script/c74416026.lua +++ b/script/c74416026.lua @@ -1,77 +1,76 @@ ---デストーイ・マーチ -function c74416026.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c74416026.condition) - e1:SetTarget(c74416026.target) - e1:SetOperation(c74416026.activate) - c:RegisterEffect(e1) -end -function c74416026.filter(c,tp) - return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0xad) -end -function c74416026.condition(e,tp,eg,ep,ev,re,r,rp) - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return g and g:IsExists(c74416026.filter,1,nil,tp) - and Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) -end -function c74416026.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c74416026.spfilter(c,e,tp) - return c:IsType(TYPE_FUSION) and c:IsLevelAbove(8) and c:IsSetCard(0xad) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) -end -function c74416026.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):Filter(c74416026.filter,nil,tp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)~=0 then - local tg=g:Filter(Card.IsRelateToEffect,nil,re) - local sg=Duel.GetMatchingGroup(c74416026.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) - if tg:GetCount()>0 and sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(74416026,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local tc=tg:Select(tp,1,1,nil):GetFirst() - if Duel.SendtoGrave(tc,REASON_EFFECT)==0 or not tc:IsLocation(LOCATION_GRAVE) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sc=sg:Select(tp,1,1,nil):GetFirst() - if Duel.SpecialSummonStep(sc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetLabelObject(sc) - e1:SetCondition(c74416026.rmcon) - e1:SetOperation(c74416026.rmop) - if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END then - e1:SetLabel(Duel.GetTurnCount()) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) - else - e:SetLabel(0) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) - end - Duel.RegisterEffect(e1,tp) - Duel.SpecialSummonComplete() - sc:CompleteProcedure() - sc:RegisterFlagEffect(74416026,RESET_EVENT+0x1fe0000,0,1) - end - end - end -end -function c74416026.rmcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() and tc:GetFlagEffect(74416026)~=0 -end -function c74416026.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) -end +--デストーイ・マーチ +function c74416026.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_NEGATE+CATEGORY_DESTROY+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c74416026.condition) + e1:SetTarget(c74416026.target) + e1:SetOperation(c74416026.activate) + c:RegisterEffect(e1) +end +function c74416026.filter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0xad) +end +function c74416026.condition(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return g and g:IsExists(c74416026.filter,1,nil,tp) + and Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) +end +function c74416026.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c74416026.spfilter(c,e,tp) + return c:IsType(TYPE_FUSION) and c:IsLevelAbove(8) and c:IsSetCard(0xad) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c74416026.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS):Filter(c74416026.filter,nil,tp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)~=0 then + local tg=g:Filter(Card.IsRelateToEffect,nil,re) + local sg=Duel.GetMatchingGroup(c74416026.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if tg:GetCount()>0 and sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(74416026,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tc=tg:Select(tp,1,1,nil):GetFirst() + if Duel.SendtoGrave(tc,REASON_EFFECT)==0 or not tc:IsLocation(LOCATION_GRAVE) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sc=sg:Select(tp,1,1,nil):GetFirst() + if Duel.SpecialSummonStep(sc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabelObject(sc) + e1:SetCondition(c74416026.rmcon) + e1:SetOperation(c74416026.rmop) + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_END then + e1:SetLabel(Duel.GetTurnCount()) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) + else + e:SetLabel(0) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end + Duel.RegisterEffect(e1,tp) + Duel.SpecialSummonComplete() + sc:CompleteProcedure() + sc:RegisterFlagEffect(74416026,RESET_EVENT+0x1fe0000,0,1) + end + end + end +end +function c74416026.rmcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + return Duel.GetTurnPlayer()==tp and Duel.GetTurnCount()~=e:GetLabel() and tc:GetFlagEffect(74416026)~=0 +end +function c74416026.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c74416224.lua b/script/c74416224.lua index 4c55898c..ea3f1713 100644 --- a/script/c74416224.lua +++ b/script/c74416224.lua @@ -8,7 +8,7 @@ function c74416224.initial_effect(c) e1:SetCategory(CATEGORY_DISABLE) e1:SetDescription(aux.Stringid(74416224,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c74416224.cost) diff --git a/script/c74458486.lua b/script/c74458486.lua index 6155838e..4e019030 100644 --- a/script/c74458486.lua +++ b/script/c74458486.lua @@ -1,37 +1,37 @@ ---援護射撃 -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) - local phase=Duel.GetCurrentPhase() - return phase==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+PHASE_DAMAGE_CAL) - e1:SetValue(tc:GetAttack()) - at:RegisterEffect(e1) - 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) + local phase=Duel.GetCurrentPhase() + return phase==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+PHASE_DAMAGE_CAL) + e1:SetValue(tc:GetAttack()) + at:RegisterEffect(e1) + end +end diff --git a/script/c74506079.lua b/script/c74506079.lua index 3d36c448..6edd4020 100644 --- a/script/c74506079.lua +++ b/script/c74506079.lua @@ -6,8 +6,8 @@ function c74506079.initial_effect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCode(EFFECT_FUSION_MATERIAL) - e1:SetCondition(c74506079.fscondition) - e1:SetOperation(c74506079.fsoperation) + e1:SetCondition(c74506079.fscon) + e1:SetOperation(c74506079.fsop) c:RegisterEffect(e1) --summon success local e2=Effect.CreateEffect(c) @@ -17,22 +17,74 @@ function c74506079.initial_effect(c) c:RegisterEffect(e2) end function c74506079.ffilter(c) - return c:IsFusionSetCard(0x3e) and c:IsRace(RACE_REPTILE) + if c:IsHasEffect(6205579) then return false end + return (c:IsFusionSetCard(0x3e) and c:IsRace(RACE_REPTILE)) or c:IsHasEffect(511002961) end -function c74506079.fscondition(e,g,gc) +function c74506079.check1(c,mg,chkf) + return mg:IsExists(c74506079.check2,1,c,c,chkf) +end +function c74506079.check2(c,c2,chkf) + local g=Group.FromCards(c,c2) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + local g1=g:Filter(c74506079.ffilter,nil) + if chkf~=PLAYER_NONE then + return g1:FilterCount(aux.FConditionCheckF,nil,chkf)~=0 and g1:GetCount()>=2 + else return g1:GetCount()>=2 end +end +function c74506079.fscon(e,g,gc,chkfnf) if g==nil then return true end - if gc then return false end - return g:IsExists(c74506079.ffilter,2,nil) + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return c74506079.check1(gc,mg,chkf) + end + return mg:IsExists(c74506079.check1,1,nil,mg,chkf) end -function c74506079.fsoperation(e,tp,eg,ep,ev,re,r,rp,gc) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - Duel.SetFusionMaterial(eg:FilterSelect(tp,c74506079.ffilter,2,63,nil)) +function c74506079.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) + local chkf=bit.band(chkfnf,0xff) + local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end + end + if gc then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c74506079.check2,1,1,gc,gc,chkf) + mg:Sub(g1) + while mg:IsExists(Auxiliary.FConditionFilterExtraMaterial,1,nil,mg,c74506079.ffilter) and Duel.SelectYesNo(p,93) do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,Auxiliary.FConditionFilterExtraMaterial,1,1,nil,mg,c74506079.ffilter) + g1:Merge(g2) + mg:Sub(g2) + end + if sfhchk then Duel.ShuffleHand(tp) end + Duel.SetFusionMaterial(g1) + return + end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c74506079.check1,1,1,nil,mg,chkf) + local tc1=g1:GetFirst() + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,c74506079.check2,1,1,tc1,tc1,chkf) + g1:Merge(g2) + mg:Sub(g1) + while mg:IsExists(aux.FConditionFilterExtraMaterial,1,nil,mg,c74506079.ffilter) and Duel.SelectYesNo(p,93) do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g3=mg:FilterSelect(p,aux.FConditionFilterExtraMaterial,1,1,nil,mg,c74506079.ffilter) + g1:Merge(g3) + mg:Sub(g3) + end + if sfhchk then Duel.ShuffleHand(tp) end + Duel.SetFusionMaterial(g1) end function c74506079.matcheck(e,c) local ct=c:GetMaterial():GetClassCount(Card.GetCode) if ct>0 then local ae=Effect.CreateEffect(c) - ae:SetType(EFFECT_TYPE_SINGLE) + ae:SetType(EFFECT_TYPE_SINGLE) ae:SetCode(EFFECT_SET_ATTACK) ae:SetValue(ct*500) ae:SetReset(RESET_EVENT+0xff0000) diff --git a/script/c74519184.lua b/script/c74519184.lua index 1e89430f..d4d2a11d 100644 --- a/script/c74519184.lua +++ b/script/c74519184.lua @@ -1,36 +1,36 @@ ---手札断殺 -function c74519184.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c74519184.target) - e1:SetOperation(c74519184.activate) - c:RegisterEffect(e1) -end -function c74519184.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) - if e:GetHandler():IsLocation(LOCATION_HAND) then h1=h1-1 end - local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) - return h1>1 and h2>1 and Duel.IsPlayerCanDraw(tp,2) and Duel.IsPlayerCanDraw(1-tp,2) - end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,2) -end -function c74519184.activate(e,tp,eg,ep,ev,re,r,rp) - local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) - local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) - if h1<2 or h2<2 then return end - local turnp=Duel.GetTurnPlayer() - Duel.Hint(HINT_SELECTMSG,turnp,HINTMSG_TOGRAVE) - local g1=Duel.SelectMatchingCard(turnp,aux.TRUE,turnp,LOCATION_HAND,0,2,2,nil) - Duel.ConfirmCards(1-turnp,g1) - Duel.Hint(HINT_SELECTMSG,1-turnp,HINTMSG_TOGRAVE) - local g2=Duel.SelectMatchingCard(1-turnp,aux.TRUE,1-turnp,LOCATION_HAND,0,2,2,nil) - g1:Merge(g2) - Duel.SendtoGrave(g1,REASON_EFFECT) - Duel.BreakEffect() - Duel.Draw(turnp,2,REASON_EFFECT) - Duel.Draw(1-turnp,2,REASON_EFFECT) -end +--手札断殺 +function c74519184.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c74519184.target) + e1:SetOperation(c74519184.activate) + c:RegisterEffect(e1) +end +function c74519184.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + if e:GetHandler():IsLocation(LOCATION_HAND) then h1=h1-1 end + local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + return h1>1 and h2>1 and Duel.IsPlayerCanDraw(tp,2) and Duel.IsPlayerCanDraw(1-tp,2) + end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,2) +end +function c74519184.activate(e,tp,eg,ep,ev,re,r,rp) + local h1=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + local h2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND) + if h1<2 or h2<2 then return end + local turnp=Duel.GetTurnPlayer() + Duel.Hint(HINT_SELECTMSG,turnp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(turnp,aux.TRUE,turnp,LOCATION_HAND,0,2,2,nil) + Duel.ConfirmCards(1-turnp,g1) + Duel.Hint(HINT_SELECTMSG,1-turnp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(1-turnp,aux.TRUE,1-turnp,LOCATION_HAND,0,2,2,nil) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_EFFECT) + Duel.BreakEffect() + Duel.Draw(turnp,2,REASON_EFFECT) + Duel.Draw(1-turnp,2,REASON_EFFECT) +end diff --git a/script/c7452945.lua b/script/c7452945.lua index cdccb38a..a1a51883 100644 --- a/script/c7452945.lua +++ b/script/c7452945.lua @@ -1,15 +1,7 @@ --天命の聖剣 function c7452945.initial_effect(c) c:SetUniqueOnField(1,0,7452945) - --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(c7452945.target) - e1:SetOperation(c7452945.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c7452945.eqfilter1) --cannot be destroyed local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -17,13 +9,6 @@ function c7452945.initial_effect(c) e2:SetValue(c7452945.valcon) e2:SetCountLimit(1) 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(c7452945.eqlimit) - c:RegisterEffect(e3) --equip local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(7452945,0)) @@ -37,18 +22,8 @@ function c7452945.initial_effect(c) e4:SetOperation(c7452945.operation) c:RegisterEffect(e4) end -function c7452945.eqlimit(e,c) - return c:IsRace(RACE_WARRIOR) -end function c7452945.eqfilter1(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c7452945.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c7452945.eqfilter1(chkc) end - if chk==0 then return Duel.IsExistingTarget(c7452945.eqfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c7452945.eqfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + return c:IsRace(RACE_WARRIOR) end function c7452945.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c74580251.lua b/script/c74580251.lua new file mode 100644 index 00000000..d4e7fa68 --- /dev/null +++ b/script/c74580251.lua @@ -0,0 +1,52 @@ +--セフィラの神意 +--Zefra Providence +--Scripted by Eerie Code +function c74580251.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,74580251+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c74580251.target) + e1:SetOperation(c74580251.activate) + c:RegisterEffect(e1) + --destroy replace + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_GRAVE) + e2:SetTarget(c74580251.reptg) + e2:SetValue(c74580251.repval) + e2:SetOperation(c74580251.repop) + c:RegisterEffect(e2) +end +function c74580251.filter(c) + return c:IsSetCard(0xc4) and not c:IsCode(74580251) and c:IsAbleToHand() +end +function c74580251.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c74580251.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c74580251.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c74580251.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c74580251.repfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xc4) and c:IsLocation(LOCATION_ONFIELD) + and c:IsControler(tp) and c:IsReason(REASON_EFFECT+REASON_BATTLE) +end +function c74580251.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() and aux.exccon(e) and eg:IsExists(c74580251.repfilter,1,nil,tp) end + return Duel.SelectYesNo(tp,aux.Stringid(74580251,0)) +end +function c74580251.repval(e,c) + return c74580251.repfilter(c,e:GetHandlerPlayer()) +end +function c74580251.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c74586817.lua b/script/c74586817.lua index a8f7e093..ff2bbbcf 100644 --- a/script/c74586817.lua +++ b/script/c74586817.lua @@ -1,143 +1,143 @@ ---PSYフレームロード・Ω -function c74586817.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --remove - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(74586817,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0+TIMING_MAIN_END) - e1:SetCountLimit(1) - e1:SetCondition(c74586817.rmcon) - e1:SetTarget(c74586817.rmtg) - e1:SetOperation(c74586817.rmop) - c:RegisterEffect(e1) - --to grave - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(74586817,1)) - e2:SetCategory(CATEGORY_TOGRAVE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCountLimit(1) - e2:SetCondition(c74586817.tgcon) - e2:SetTarget(c74586817.tgtg) - e2:SetOperation(c74586817.tgop) - c:RegisterEffect(e2) - --to deck - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_GRAVE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetTarget(c74586817.tdtg) - e3:SetOperation(c74586817.tdop) - c:RegisterEffect(e3) -end -function c74586817.rmcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 -end -function c74586817.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemove() - and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_HAND,1,nil) end - local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_HAND,nil) - g:AddCard(e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,2,0,0) -end -function c74586817.rmop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0) - if g:GetCount()==0 or not c:IsRelateToEffect(e) or not c:IsFaceup() then return end - local rs=g:RandomSelect(1-tp,1) - local rg=Group.FromCards(c,rs:GetFirst()) - if Duel.Remove(rg,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY)~=0 then - local fid=c:GetFieldID() - local og=Duel.GetOperatedGroup() - local oc=og:GetFirst() - while oc do - if oc:IsControler(tp) then - oc:RegisterFlagEffect(74586817,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,1,fid) - else - oc:RegisterFlagEffect(74586817,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,0,1,fid) - end - oc=og:GetNext() - end - og:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(og) - e1:SetCondition(c74586817.retcon) - e1:SetOperation(c74586817.retop) - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - Duel.RegisterEffect(e1,tp) - end -end -function c74586817.tgcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c74586817.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) end - if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(74586817,2)) - local g=Duel.SelectTarget(tp,nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) -end -function c74586817.tgop(e,tp,eg,ep,ev,re,r,rp) - local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=tg:Filter(Card.IsRelateToEffect,nil,e) - if sg:GetCount()>0 then - Duel.SendtoGrave(sg,REASON_EFFECT+REASON_RETURN) - end -end -function c74586817.retfilter(c,fid) - return c:GetFlagEffectLabel(74586817)==fid -end -function c74586817.retcon(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetTurnPlayer()~=tp then return false end - local g=e:GetLabelObject() - if not g:IsExists(c74586817.retfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c74586817.retop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local sg=g:Filter(c74586817.retfilter,nil,e:GetLabel()) - g:DeleteGroup() - local tc=sg:GetFirst() - while tc do - if tc==e:GetHandler() then - Duel.ReturnToField(tc) - else - Duel.SendtoHand(tc,tc:GetPreviousControler(),REASON_EFFECT) - end - tc=sg:GetNext() - end -end -function c74586817.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsAbleToDeck() and chkc~=e:GetHandler() end - if chk==0 then return e:GetHandler():IsAbleToExtra() - and Duel.IsExistingTarget(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,e:GetHandler()) - g:AddCard(e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,2,0,0) -end -function c74586817.tdop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then - local g=Group.FromCards(c,tc) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - end -end +--PSYフレームロード・Ω +function c74586817.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74586817,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0+TIMING_MAIN_END) + e1:SetCountLimit(1) + e1:SetCondition(c74586817.rmcon) + e1:SetTarget(c74586817.rmtg) + e1:SetOperation(c74586817.rmop) + c:RegisterEffect(e1) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(74586817,1)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetCondition(c74586817.tgcon) + e2:SetTarget(c74586817.tgtg) + e2:SetOperation(c74586817.tgop) + c:RegisterEffect(e2) + --to deck + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetTarget(c74586817.tdtg) + e3:SetOperation(c74586817.tdop) + c:RegisterEffect(e3) +end +function c74586817.rmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c74586817.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() + and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_HAND,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_HAND,nil) + g:AddCard(e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,2,0,0) +end +function c74586817.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0) + if g:GetCount()==0 or not c:IsRelateToEffect(e) or not c:IsFaceup() then return end + local rs=g:RandomSelect(1-tp,1) + local rg=Group.FromCards(c,rs:GetFirst()) + if Duel.Remove(rg,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local fid=c:GetFieldID() + local og=Duel.GetOperatedGroup() + local oc=og:GetFirst() + while oc do + if oc:IsControler(tp) then + oc:RegisterFlagEffect(74586817,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,1,fid) + else + oc:RegisterFlagEffect(74586817,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,0,1,fid) + end + oc=og:GetNext() + end + og:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(og) + e1:SetCondition(c74586817.retcon) + e1:SetOperation(c74586817.retop) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c74586817.tgcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c74586817.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(74586817,2)) + local g=Duel.SelectTarget(tp,nil,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c74586817.tgop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=tg:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_RETURN) + end +end +function c74586817.retfilter(c,fid) + return c:GetFlagEffectLabel(74586817)==fid +end +function c74586817.retcon(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return false end + local g=e:GetLabelObject() + if not g:IsExists(c74586817.retfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c74586817.retop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local sg=g:Filter(c74586817.retfilter,nil,e:GetLabel()) + g:DeleteGroup() + local tc=sg:GetFirst() + while tc do + if tc==e:GetHandler() then + Duel.ReturnToField(tc) + else + Duel.SendtoHand(tc,tc:GetPreviousControler(),REASON_EFFECT) + end + tc=sg:GetNext() + end +end +function c74586817.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsAbleToDeck() and chkc~=e:GetHandler() end + if chk==0 then return e:GetHandler():IsAbleToExtra() + and Duel.IsExistingTarget(Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,e:GetHandler()) + g:AddCard(e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,2,0,0) +end +function c74586817.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + local g=Group.FromCards(c,tc) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + end +end diff --git a/script/c74591968.lua b/script/c74591968.lua index 829d4076..c6689868 100644 --- a/script/c74591968.lua +++ b/script/c74591968.lua @@ -81,7 +81,7 @@ function c74591968.spop(e,tp,eg,ep,ev,re,r,rp) tc:CompleteProcedure() end end -function c74591968.sumcon(e,c) +function c74591968.sumcon(e,c,minc) if not c then return true end return false end diff --git a/script/c74593218.lua b/script/c74593218.lua index 0df9e785..25e50b88 100644 --- a/script/c74593218.lua +++ b/script/c74593218.lua @@ -7,7 +7,7 @@ function c74593218.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(74593218,0)) e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY+CATEGORY_ATKCHANGE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) @@ -35,8 +35,7 @@ function c74593218.negtg(e,tp,eg,ep,ev,re,r,rp,chk) end function c74593218.negop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)>0 then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)>0 then Duel.BreakEffect() if c:IsRelateToEffect(e) and c:IsFaceup() then local e1=Effect.CreateEffect(c) diff --git a/script/c74605254.lua b/script/c74605254.lua index d79e4025..6a3081d2 100644 --- a/script/c74605254.lua +++ b/script/c74605254.lua @@ -1,96 +1,96 @@ ---DD魔導賢者ガリレイ -function c74605254.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c74605254.splimit) - c:RegisterEffect(e2) - --scale change - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_PZONE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCountLimit(1) - e3:SetCondition(c74605254.sccon) - e3:SetTarget(c74605254.sctg) - e3:SetOperation(c74605254.scop) - c:RegisterEffect(e3) - --tohand - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(74605254,0)) - e4:SetCategory(CATEGORY_TOHAND) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetRange(LOCATION_HAND) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCountLimit(1,74605254) - e4:SetCost(c74605254.thcost) - e4:SetTarget(c74605254.thtg) - e4:SetOperation(c74605254.thop) - c:RegisterEffect(e4) -end -function c74605254.splimit(e,c,sump,sumtype,sumpos,targetp) - return not c:IsSetCard(0xaf) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c74605254.sccon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c74605254.filter(c,lv) - return c:IsFaceup() and not c:IsSetCard(0xaf) and c:IsLevelBelow(lv) -end -function c74605254.sctg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local scl=math.min(10,e:GetHandler():GetLeftScale()+2) - local g=Duel.GetMatchingGroup(c74605254.filter,tp,LOCATION_MZONE,0,nil,scl) - if e:GetHandler():GetLeftScale()<10 then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) - end -end -function c74605254.scop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:GetLeftScale()>=10 then return end - local scl=2 - if c:GetLeftScale()==9 then scl=1 end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LSCALE) - e1:SetValue(scl) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_RSCALE) - c:RegisterEffect(e2) - local g=Duel.GetMatchingGroup(c74605254.filter,tp,LOCATION_MZONE,0,nil,c:GetLeftScale()) - if g:GetCount()>0 then - Duel.BreakEffect() - Duel.Destroy(g,REASON_EFFECT) - end -end -function c74605254.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDiscardable() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) -end -function c74605254.thfilter(c) - return c:IsFaceup() and (c:IsSetCard(0xae) or c:IsSetCard(0xaf)) and c:IsAbleToHand() -end -function c74605254.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c74605254.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c74605254.thfilter,tp,LOCATION_ONFIELD,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c74605254.thfilter,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c74605254.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--DD魔導賢者ガリレイ +function c74605254.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c74605254.splimit) + c:RegisterEffect(e2) + --scale change + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_PZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetCondition(c74605254.sccon) + e3:SetTarget(c74605254.sctg) + e3:SetOperation(c74605254.scop) + c:RegisterEffect(e3) + --tohand + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(74605254,0)) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_HAND) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCountLimit(1,74605254) + e4:SetCost(c74605254.thcost) + e4:SetTarget(c74605254.thtg) + e4:SetOperation(c74605254.thop) + c:RegisterEffect(e4) +end +function c74605254.splimit(e,c,sump,sumtype,sumpos,targetp) + return not c:IsSetCard(0xaf) and bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c74605254.sccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c74605254.filter(c,lv) + return c:IsFaceup() and not c:IsSetCard(0xaf) and c:IsLevelBelow(lv) +end +function c74605254.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local scl=math.min(10,e:GetHandler():GetLeftScale()+2) + local g=Duel.GetMatchingGroup(c74605254.filter,tp,LOCATION_MZONE,0,nil,scl) + if e:GetHandler():GetLeftScale()<10 then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + end +end +function c74605254.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:GetLeftScale()>=10 then return end + local scl=2 + if c:GetLeftScale()==9 then scl=1 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LSCALE) + e1:SetValue(scl) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_RSCALE) + c:RegisterEffect(e2) + local g=Duel.GetMatchingGroup(c74605254.filter,tp,LOCATION_MZONE,0,nil,c:GetLeftScale()) + if g:GetCount()>0 then + Duel.BreakEffect() + Duel.Destroy(g,REASON_EFFECT) + end +end +function c74605254.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c74605254.thfilter(c) + return c:IsFaceup() and (c:IsSetCard(0xae) or c:IsSetCard(0xaf)) and c:IsAbleToHand() +end +function c74605254.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c74605254.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c74605254.thfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c74605254.thfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c74605254.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c74657662.lua b/script/c74657662.lua index e3a59f31..14468a5d 100644 --- a/script/c74657662.lua +++ b/script/c74657662.lua @@ -1,27 +1,12 @@ --ヴァイロン・マテリアル function c74657662.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(c74657662.target) - e1:SetOperation(c74657662.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x30)) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(600) 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(c74657662.eqlimit) - c:RegisterEffect(e3) --Search local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(74657662,0)) @@ -34,26 +19,6 @@ function c74657662.initial_effect(c) e4:SetOperation(c74657662.thop) c:RegisterEffect(e4) end -function c74657662.eqlimit(e,c) - return c:IsSetCard(0x30) -end -function c74657662.filter(c) - return c:IsFaceup() and c:IsSetCard(0x30) -end -function c74657662.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c74657662.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c74657662.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c74657662.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c74657662.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 c74657662.thcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) diff --git a/script/c74711057.lua b/script/c74711057.lua index 2f1f06a8..9542691d 100644 --- a/script/c74711057.lua +++ b/script/c74711057.lua @@ -1,38 +1,39 @@ ---E・HERO ジ・アース -function c74711057.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,37195861,75434695,true,true) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(74711057,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c74711057.atkcost) - e1:SetOperation(c74711057.atkop) - c:RegisterEffect(e1) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(aux.fuslimit) - c:RegisterEffect(e2) -end -function c74711057.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,e:GetHandler(),0x3008) end - local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,e:GetHandler(),0x3008) - e:SetLabel(g:GetFirst():GetAttack()) - Duel.Release(g,REASON_COST) -end -function c74711057.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end +--E・HERO ジ・アース +function c74711057.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,37195861,75434695,true,true) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74711057,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c74711057.atkcost) + e1:SetOperation(c74711057.atkop) + c:RegisterEffect(e1) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(aux.fuslimit) + c:RegisterEffect(e2) +end +c74711057.material_setcode=0x8 +function c74711057.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,e:GetHandler(),0x3008) end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,e:GetHandler(),0x3008) + e:SetLabel(g:GetFirst():GetAttack()) + Duel.Release(g,REASON_COST) +end +function c74711057.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c74717840.lua b/script/c74717840.lua index e06bab5c..a6577388 100644 --- a/script/c74717840.lua +++ b/script/c74717840.lua @@ -1,29 +1,29 @@ ---ランドオルスのヒカリゴケ -function c74717840.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c74717840.condition) - e1:SetOperation(c74717840.operation) - c:RegisterEffect(e1) -end -function c74717840.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x2a) -end -function c74717840.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c74717840.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c74717840.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c74717840.aclimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c74717840.aclimit(e,re,tp) - return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) -end +--ランドオルスのヒカリゴケ +function c74717840.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c74717840.condition) + e1:SetOperation(c74717840.operation) + c:RegisterEffect(e1) +end +function c74717840.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x2a) +end +function c74717840.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c74717840.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c74717840.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c74717840.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c74717840.aclimit(e,re,tp) + return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c7478431.lua b/script/c7478431.lua index 36244036..492e8baf 100644 --- a/script/c7478431.lua +++ b/script/c7478431.lua @@ -1,43 +1,42 @@ ---ナチュル・サンフラワー -function c7478431.initial_effect(c) - --Negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(7478431,0)) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c7478431.discon) - e1:SetCost(c7478431.discost) - e1:SetTarget(c7478431.distg) - e1:SetOperation(c7478431.disop) - c:RegisterEffect(e1) -end -function c7478431.discon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and re:IsActiveType(TYPE_MONSTER) - and Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)~=LOCATION_DECK and Duel.IsChainNegatable(ev) -end -function c7478431.cfilter(c) - return c:IsSetCard(0x2a) and not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c7478431.discost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsReleasable() and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.CheckReleaseGroup(tp,c7478431.cfilter,1,c) end - local g=Duel.SelectReleaseGroup(tp,c7478431.cfilter,1,1,c) - g:AddCard(c) - Duel.Release(g,REASON_COST) -end -function c7478431.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c7478431.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--ナチュル・サンフラワー +function c7478431.initial_effect(c) + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7478431,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c7478431.discon) + e1:SetCost(c7478431.discost) + e1:SetTarget(c7478431.distg) + e1:SetOperation(c7478431.disop) + c:RegisterEffect(e1) +end +function c7478431.discon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_MONSTER) + and Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)~=LOCATION_DECK and Duel.IsChainNegatable(ev) +end +function c7478431.cfilter(c) + return c:IsSetCard(0x2a) and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c7478431.discost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsReleasable() and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.CheckReleaseGroup(tp,c7478431.cfilter,1,c) end + local g=Duel.SelectReleaseGroup(tp,c7478431.cfilter,1,1,c) + g:AddCard(c) + Duel.Release(g,REASON_COST) +end +function c7478431.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c7478431.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c74822425.lua b/script/c74822425.lua index eb22ab6f..42856285 100644 --- a/script/c74822425.lua +++ b/script/c74822425.lua @@ -42,111 +42,92 @@ function c74822425.initial_effect(c) c:RegisterEffect(e4) end function c74822425.ffilter1(c) - return c:IsFusionSetCard(0x9d) + return (c:IsFusionSetCard(0x9d) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end -function c74822425.ffilter2(c) - return c:IsAttribute(ATTRIBUTE_EARTH) or c:IsHasEffect(4904633) +function c74822425.ffilter2(c,fc) + if c:IsHasEffect(6205579) then return false end + if c:IsHasEffect(511002961) then return true end + return c:IsFusionAttribute(ATTRIBUTE_EARTH) or c:IsHasEffect(4904633) end function c74822425.exfilter(c,g) return c:IsFaceup() and c:IsCanBeFusionMaterial() and not g:IsContains(c) end +function c74822425.check1(c,mg,sg,chkf) + local g=mg:Clone() + if sg:IsContains(c) then g:Sub(sg) end + return g:IsExists(c74822425.check2,1,c,c,chkf) +end +function c74822425.check2(c,c2,chkf) + local g=Group.FromCards(c,c2) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=g:GetFirst() + while tc do + if c74822425.ffilter1(tc) or tc:IsHasEffect(511002961) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + if c74822425.ffilter2(tc) or tc:IsHasEffect(511002961) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + tc=g:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) + else return g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) end +end function c74822425.fuscon(e,g,gc,chkf) if g==nil then return true end + local chkf=bit.band(chkf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local sg=Group.CreateGroup() + local c=e:GetHandler() local tp=e:GetHandlerPlayer() local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - local exg=Group.CreateGroup() if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then - local sg=Duel.GetMatchingGroup(c74822425.exfilter,tp,0,LOCATION_MZONE,nil,g) - exg:Merge(sg) + sg=Duel.GetMatchingGroup(c74822425.exfilter,tp,0,LOCATION_MZONE,nil,g) + mg:Merge(sg) end - if gc then return (c74822425.ffilter1(gc) and (g:IsExists(c74822425.ffilter2,1,gc) or exg:IsExists(c74822425.ffilter2,1,gc))) - or (c74822425.ffilter2(gc) and (g:IsExists(c74822425.ffilter1,1,gc) or exg:IsExists(c74822425.ffilter1,1,gc))) end - local g1=Group.CreateGroup() - local g2=Group.CreateGroup() - local g3=Group.CreateGroup() - local g4=Group.CreateGroup() - local tc=g:GetFirst() - while tc do - if c74822425.ffilter1(tc) then - g1:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g3:AddCard(tc) end - end - if c74822425.ffilter2(tc) then - g2:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g4:AddCard(tc) end - end - tc=g:GetNext() - end - local exg1=exg:Filter(c74822425.ffilter1,nil) - local exg2=exg:Filter(c74822425.ffilter2,nil) - if chkf~=PLAYER_NONE then - return (g3:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g3:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g4:IsExists(aux.FConditionFilterF2,1,nil,g1) - or g4:IsExists(aux.FConditionFilterF2,1,nil,exg1)) - else - return (g1:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g1:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g2:IsExists(aux.FConditionFilterF2,1,nil,exg1)) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return c74822425.check1(gc,mg,sg,chkf) end + return mg:IsExists(c74822425.check1,1,nil,mg,sg,chkf) end function c74822425.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local c=e:GetHandler() local exg=Group.CreateGroup() + local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local p=tp + local sfhchk=false if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then local sg=Duel.GetMatchingGroup(c74822425.exfilter,tp,0,LOCATION_MZONE,nil,eg) exg:Merge(sg) + mg:Merge(sg) + end + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end end if gc then - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c74822425.ffilter1(gc) then - sg1:Merge(eg:Filter(c74822425.ffilter2,gc)) - sg2:Merge(exg:Filter(c74822425.ffilter2,gc)) - end - if c74822425.ffilter2(gc) then - sg1:Merge(eg:Filter(c74822425.ffilter1,gc)) - sg2:Merge(exg:Filter(c74822425.ffilter1,gc)) - end - local g1=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c74822425.check2,1,1,gc,gc,chkf) + local tc1=g1:GetFirst() + if c74822425.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg1:Select(tp,1,1,nil) end + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - local sg=eg:Filter(aux.FConditionFilterF2c,nil,c74822425.ffilter1,c74822425.ffilter2) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then - g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c74822425.check1,1,1,nil,mg,exg,chkf) local tc1=g1:GetFirst() - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c74822425.ffilter1(tc1) then - sg1:Merge(sg:Filter(c74822425.ffilter2,tc1)) - sg2:Merge(exg:Filter(c74822425.ffilter2,tc1)) - end - if c74822425.ffilter2(tc1) then - sg1:Merge(sg:Filter(c74822425.ffilter1,tc1)) - sg2:Merge(exg:Filter(c74822425.ffilter1,tc1)) - end - local g2=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + if c74822425.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg1:Select(tp,1,1,nil) + mg:Sub(exg) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,c74822425.check2,1,1,tc1,tc1,chkf) + if c74822425.exfilter(g2:GetFirst(),eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) end g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end function c74822425.splimit(e,se,sp,st) diff --git a/script/c74825788.lua b/script/c74825788.lua index 12c4e3cd..c6f158c6 100644 --- a/script/c74825788.lua +++ b/script/c74825788.lua @@ -1,34 +1,34 @@ ---H-ヒートハート -function c74825788.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c74825788.target) - e1:SetOperation(c74825788.activate) - c:RegisterEffect(e1) -end -function c74825788.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c74825788.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(500) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--H-ヒートハート +function c74825788.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c74825788.target) + e1:SetOperation(c74825788.activate) + c:RegisterEffect(e1) +end +function c74825788.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c74825788.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(500) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c74839123.lua b/script/c74839123.lua index 7ae43362..c10dac5a 100644 --- a/script/c74839123.lua +++ b/script/c74839123.lua @@ -29,7 +29,7 @@ function c74839123.cfilter(c) return c:IsSetCard(0xad) and c:IsType(TYPE_FUSION) and c:IsAbleToGraveAsCost() end function c74839123.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) and Duel.IsExistingMatchingCard(c74839123.cfilter,tp,LOCATION_EXTRA,0,2,nil) end Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) diff --git a/script/c74845897.lua b/script/c74845897.lua index 9fe1e92f..b75ac2d5 100644 --- a/script/c74845897.lua +++ b/script/c74845897.lua @@ -20,7 +20,8 @@ end function c74845897.op(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local tg=Duel.GetMatchingGroup(c74845897.filter,tp,LOCATION_GRAVE,0,nil,e,tp) - if ft<=0 or (Duel.IsPlayerAffectedByEffect(tp,59822133) and tg:GetCount()>1 and ft>1) then return end + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=nil if tg:GetCount()>ft then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) diff --git a/script/c74850403.lua b/script/c74850403.lua new file mode 100644 index 00000000..a14b9b1a --- /dev/null +++ b/script/c74850403.lua @@ -0,0 +1,58 @@ +--星霜のペンデュラムグラフ +function c74850403.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Cannot target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_SPELLCASTER)) + e2:SetValue(c74850403.evalue) + c:RegisterEffect(e2) + --Search + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,74850403) + e3:SetCondition(c74850403.thcon) + e3:SetTarget(c74850403.thtg) + e3:SetOperation(c74850403.thop) + c:RegisterEffect(e3) +end +function c74850403.evalue(e,re,rp) + return re:IsActiveType(TYPE_SPELL) and rp~=e:GetHandlerPlayer() +end +function c74850403.thcfilter(c,tp) + local pl=c:GetPreviousLocation() + local ps=c:GetPreviousSequence() + return c:IsType(TYPE_PENDULUM) and c:IsPreviousSetCard(0x98) + and c:GetPreviousControler()==tp and c:IsPreviousPosition(POS_FACEUP) + and (pl==LOCATION_MZONE or (pl==LOCATION_SZONE and (ps==6 or ps==7))) +end +function c74850403.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c74850403.thcfilter,1,nil,tp) +end +function c74850403.thfilter(c) + return c:IsType(TYPE_PENDULUM) and c:IsSetCard(0x98) and c:IsAbleToHand() +end +function c74850403.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c74850403.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c74850403.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c74860293.lua b/script/c74860293.lua index 14e45860..e0af7008 100644 --- a/script/c74860293.lua +++ b/script/c74860293.lua @@ -15,7 +15,7 @@ function c74860293.initial_effect(c) e1:SetOperation(c74860293.op) c:RegisterEffect(e1) end -c74860293.material_setcode=0x17 +c74860293.material_setcode=0x1017 function c74860293.tfilter(c) return c:IsCode(63977008) or c:IsHasEffect(20932152) end diff --git a/script/c74892653.lua b/script/c74892653.lua index 043a3f46..186b9109 100644 --- a/script/c74892653.lua +++ b/script/c74892653.lua @@ -1,92 +1,92 @@ ---スターダスト・ウォリアー -function c74892653.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),1) - c:EnableReviveLimit() - --disable spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(74892653,0)) - e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_SPSUMMON) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c74892653.condition) - e1:SetCost(c74892653.cost) - e1:SetTarget(c74892653.target) - e1:SetOperation(c74892653.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(74892653,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1) - e2:SetTarget(c74892653.sptg) - e2:SetOperation(c74892653.spop) - c:RegisterEffect(e2) - --synchro summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(74892653,2)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCondition(c74892653.sccon) - e3:SetTarget(c74892653.sctg) - e3:SetOperation(c74892653.scop) - c:RegisterEffect(e3) -end -function c74892653.condition(e,tp,eg,ep,ev,re,r,rp) - return tp~=ep and Duel.GetCurrentChain()==0 -end -function c74892653.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c74892653.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) -end -function c74892653.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateSummon(eg) - Duel.Destroy(eg,REASON_EFFECT) - e:GetHandler():RegisterFlagEffect(74892653,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c74892653.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(74892653)~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c74892653.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end -function c74892653.sccon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return (c:IsReason(REASON_BATTLE) or (c:GetReasonPlayer()~=tp and c:IsReason(REASON_EFFECT))) - and c:IsPreviousPosition(POS_FACEUP) -end -function c74892653.filter(c,e,tp) - return c:IsSetCard(0x66) and c:IsLevelBelow(8) and c:IsType(TYPE_SYNCHRO) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,false,false) -end -function c74892653.sctg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c74892653.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c74892653.scop(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,c74892653.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) - tc:CompleteProcedure() - end -end +--スターダスト・ウォリアー +function c74892653.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),1) + c:EnableReviveLimit() + --disable spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74892653,0)) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_SPSUMMON) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c74892653.condition) + e1:SetCost(c74892653.cost) + e1:SetTarget(c74892653.target) + e1:SetOperation(c74892653.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(74892653,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1) + e2:SetTarget(c74892653.sptg) + e2:SetOperation(c74892653.spop) + c:RegisterEffect(e2) + --synchro summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(74892653,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c74892653.sccon) + e3:SetTarget(c74892653.sctg) + e3:SetOperation(c74892653.scop) + c:RegisterEffect(e3) +end +function c74892653.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep and Duel.GetCurrentChain()==0 +end +function c74892653.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c74892653.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c74892653.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) + e:GetHandler():RegisterFlagEffect(74892653,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c74892653.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(74892653)~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c74892653.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c74892653.sccon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (c:IsReason(REASON_BATTLE) or (c:GetReasonPlayer()~=tp and c:IsReason(REASON_EFFECT))) + and c:IsPreviousPosition(POS_FACEUP) +end +function c74892653.filter(c,e,tp) + return c:IsSetCard(0x66) and c:IsLevelBelow(8) and c:IsType(TYPE_SYNCHRO) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,false,false) +end +function c74892653.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c74892653.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c74892653.scop(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,c74892653.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c74926274.lua b/script/c74926274.lua index 12aa7476..5635601b 100644 --- a/script/c74926274.lua +++ b/script/c74926274.lua @@ -42,19 +42,28 @@ function c74926274.activate(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=Duel.SelectMatchingCard(tp,c74926274.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,lv) local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(74926274,RESET_EVENT+0x1fe0000,0,1,fid) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c74926274.descon) e1:SetOperation(c74926274.desop) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) + Duel.RegisterEffect(e1,tp) end end +function c74926274.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(74926274)~=e:GetLabel() then + e:Reset() + return false + else return true end +end function c74926274.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) end diff --git a/script/c74968065.lua b/script/c74968065.lua index c8407331..202100c6 100644 --- a/script/c74968065.lua +++ b/script/c74968065.lua @@ -1,33 +1,33 @@ ---ヘカテリス -function c74968065.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(74968065,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c74968065.cost) - e1:SetTarget(c74968065.target) - e1:SetOperation(c74968065.operation) - c:RegisterEffect(e1) -end -function c74968065.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c74968065.filter(c) - return c:IsCode(1353770) and c:IsAbleToHand() -end -function c74968065.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c74968065.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c74968065.operation(e,tp,eg,ep,ev,re,r,rp,chk) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local tg=Duel.GetFirstMatchingCard(c74968065.filter,tp,LOCATION_DECK,0,nil) - if tg then - Duel.SendtoHand(tg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tg) - end -end +--ヘカテリス +function c74968065.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(74968065,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c74968065.cost) + e1:SetTarget(c74968065.target) + e1:SetOperation(c74968065.operation) + c:RegisterEffect(e1) +end +function c74968065.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c74968065.filter(c) + return c:IsCode(1353770) and c:IsAbleToHand() +end +function c74968065.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c74968065.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c74968065.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tg=Duel.GetFirstMatchingCard(c74968065.filter,tp,LOCATION_DECK,0,nil) + if tg then + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end +end diff --git a/script/c75014062.lua b/script/c75014062.lua index 040948bf..de389c7d 100644 --- a/script/c75014062.lua +++ b/script/c75014062.lua @@ -1,36 +1,36 @@ ---魔力掌握 -function c75014062.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,75014062+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c75014062.target) - e1:SetOperation(c75014062.activate) - c:RegisterEffect(e1) -end -function c75014062.filter(c) - return c:IsFaceup() and c:IsCanAddCounter(0x1,1) -end -function c75014062.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c75014062.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c75014062.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(75014062,1)) - Duel.SelectTarget(tp,c75014062.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x1) -end -function c75014062.tfilter(c) - return c:IsCode(75014062) and c:IsAbleToHand() -end -function c75014062.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:AddCounter(0x1,1) then - local th=Duel.GetFirstMatchingCard(c75014062.tfilter,tp,LOCATION_DECK,0,nil) - if th and Duel.SelectYesNo(tp,aux.Stringid(75014062,0)) then - Duel.SendtoHand(th,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,th) - end - end -end +--魔力掌握 +function c75014062.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,75014062+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c75014062.target) + e1:SetOperation(c75014062.activate) + c:RegisterEffect(e1) +end +function c75014062.filter(c) + return c:IsFaceup() and c:IsCanAddCounter(0x1,1) +end +function c75014062.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c75014062.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c75014062.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(75014062,1)) + Duel.SelectTarget(tp,c75014062.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,1,0,0x1) +end +function c75014062.tfilter(c) + return c:IsCode(75014062) and c:IsAbleToHand() +end +function c75014062.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:AddCounter(0x1,1) then + local th=Duel.GetFirstMatchingCard(c75014062.tfilter,tp,LOCATION_DECK,0,nil) + if th and Duel.SelectYesNo(tp,aux.Stringid(75014062,0)) then + Duel.SendtoHand(th,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,th) + end + end +end diff --git a/script/c75041269.lua b/script/c75041269.lua index 44842361..4610b367 100644 --- a/script/c75041269.lua +++ b/script/c75041269.lua @@ -1,67 +1,67 @@ ---幽獄の時計塔 -function c75041269.initial_effect(c) - c:EnableCounterPermit(0x1b) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(75041269,0)) - e2:SetCategory(CATEGORY_COUNTER) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCondition(c75041269.ctcon) - e2:SetOperation(c75041269.ctop) - c:RegisterEffect(e2) - --avoid battle damage - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(1,0) - e3:SetCondition(c75041269.dcon) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(75041269,1)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c75041269.spcon) - e4:SetTarget(c75041269.sptg) - e4:SetOperation(c75041269.spop) - c:RegisterEffect(e4) -end -function c75041269.dcon(e) - return e:GetHandler():GetCounter(0x1b)>=4 -end -function c75041269.ctcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c75041269.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x1b,1) -end -function c75041269.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsLocation(LOCATION_GRAVE) and c:GetCounter(0x1b)>=4 -end -function c75041269.spfilter(c,e,tp) - return c:IsCode(40591390) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c75041269.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c75041269.spop(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,c75041269.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()~=0 then - Duel.SpecialSummon(g,1,tp,tp,false,false,POS_FACEUP) - end -end +--幽獄の時計塔 +function c75041269.initial_effect(c) + c:EnableCounterPermit(0x1b) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75041269,0)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCondition(c75041269.ctcon) + e2:SetOperation(c75041269.ctop) + c:RegisterEffect(e2) + --avoid battle damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(1,0) + e3:SetCondition(c75041269.dcon) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(75041269,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c75041269.spcon) + e4:SetTarget(c75041269.sptg) + e4:SetOperation(c75041269.spop) + c:RegisterEffect(e4) +end +function c75041269.dcon(e) + return e:GetHandler():GetCounter(0x1b)>=4 +end +function c75041269.ctcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c75041269.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x1b,1) +end +function c75041269.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsLocation(LOCATION_GRAVE) and c:GetCounter(0x1b)>=4 +end +function c75041269.spfilter(c,e,tp) + return c:IsCode(40591390) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c75041269.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c75041269.spop(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,c75041269.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,1,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c75064463.lua b/script/c75064463.lua index be27177c..e592fab1 100644 --- a/script/c75064463.lua +++ b/script/c75064463.lua @@ -1,40 +1,40 @@ ---ハーピィ・クィーン -function c75064463.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(75064463,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c75064463.cost) - e1:SetTarget(c75064463.target) - e1:SetOperation(c75064463.operation) - c:RegisterEffect(e1) - --change name - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetCode(EFFECT_CHANGE_CODE) - e2:SetRange(LOCATION_MZONE+LOCATION_GRAVE) - e2:SetValue(76812113) - c:RegisterEffect(e2) -end -function c75064463.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c75064463.filter(c) - return c:IsCode(75782277) and c:IsAbleToHand() -end -function c75064463.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c75064463.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c75064463.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tg=Duel.GetFirstMatchingCard(c75064463.filter,tp,LOCATION_DECK,0,nil) - if tg then - Duel.SendtoHand(tg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tg) - end -end +--ハーピィ・クィーン +function c75064463.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75064463,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c75064463.cost) + e1:SetTarget(c75064463.target) + e1:SetOperation(c75064463.operation) + c:RegisterEffect(e1) + --change name + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetRange(LOCATION_MZONE+LOCATION_GRAVE) + e2:SetValue(76812113) + c:RegisterEffect(e2) +end +function c75064463.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c75064463.filter(c) + return c:IsCode(75782277) and c:IsAbleToHand() +end +function c75064463.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c75064463.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c75064463.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetFirstMatchingCard(c75064463.filter,tp,LOCATION_DECK,0,nil) + if tg then + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end +end diff --git a/script/c75078585.lua b/script/c75078585.lua index 6f756b08..d294ad15 100644 --- a/script/c75078585.lua +++ b/script/c75078585.lua @@ -1,36 +1,35 @@ ---スクランブル・エッグ -function c75078585.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCondition(c75078585.condition) - e1:SetTarget(c75078585.target) - e1:SetOperation(c75078585.operation) - c:RegisterEffect(e1) -end -function c75078585.cfilter(c,tp) - return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp -end -function c75078585.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c75078585.cfilter,1,nil,tp) -end -function c75078585.filter(c,e,tp) - return c:IsCode(36472900) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and not c:IsHasEffect(EFFECT_NECRO_VALLEY) -end -function c75078585.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c75078585.filter,tp,0x13,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) -end -function c75078585.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,c75078585.filter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--スクランブル・エッグ +function c75078585.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c75078585.condition) + e1:SetTarget(c75078585.target) + e1:SetOperation(c75078585.operation) + c:RegisterEffect(e1) +end +function c75078585.cfilter(c,tp) + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c75078585.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c75078585.cfilter,1,nil,tp) +end +function c75078585.filter(c,e,tp) + return c:IsCode(36472900) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c75078585.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c75078585.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c75078585.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,aux.NecroValleyFilter(c75078585.filter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c75105429.lua b/script/c75105429.lua index 98499f4f..2bfa29fa 100644 --- a/script/c75105429.lua +++ b/script/c75105429.lua @@ -15,7 +15,8 @@ function c75105429.filter(c) end function c75105429.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c75105429.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c75105429.filter,tp,0,LOCATION_MZONE,1,nil) end + if chk==0 then return Duel.IsExistingTarget(c75105429.filter,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsPlayerCanDraw(1-tp,1) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local g=Duel.SelectTarget(tp,c75105429.filter,tp,0,LOCATION_MZONE,1,1,nil) Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) @@ -24,7 +25,6 @@ end function c75105429.operation(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.Remove(tc,0,REASON_EFFECT)~=0 then - Duel.BreakEffect() Duel.Draw(1-tp,1,REASON_EFFECT) end end diff --git a/script/c7512044.lua b/script/c7512044.lua index 7ccf2ffd..a029ebee 100644 --- a/script/c7512044.lua +++ b/script/c7512044.lua @@ -1,27 +1,27 @@ ---精神統一 -function c7512044.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,7512044+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c7512044.target) - e1:SetOperation(c7512044.activate) - c:RegisterEffect(e1) -end -function c7512044.filter(c) - return c:IsCode(7512044) and c:IsAbleToHand() -end -function c7512044.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c7512044.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c7512044.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c7512044.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--精神統一 +function c7512044.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,7512044+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c7512044.target) + e1:SetOperation(c7512044.activate) + c:RegisterEffect(e1) +end +function c7512044.filter(c) + return c:IsCode(7512044) and c:IsAbleToHand() +end +function c7512044.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c7512044.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c7512044.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c7512044.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c75141056.lua b/script/c75141056.lua index 920d7c63..c1dc0bf1 100644 --- a/script/c75141056.lua +++ b/script/c75141056.lua @@ -1,39 +1,39 @@ ---ヒーロー・マスク -function c75141056.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c75141056.target) - e1:SetOperation(c75141056.activate) - c:RegisterEffect(e1) -end -function c75141056.tgfilter(c) - return c:IsFaceup() and Duel.IsExistingMatchingCard(c75141056.cfilter,c:GetControler(),LOCATION_DECK,0,1,nil,c) -end -function c75141056.cfilter(c,tc) - return c:IsSetCard(0x3008) and not c:IsCode(tc:GetCode()) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() -end -function c75141056.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c75141056.tgfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c75141056.tgfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c75141056.tgfilter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c75141056.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c75141056.cfilter,tp,LOCATION_DECK,0,1,1,nil,tc) - if g:GetCount()>0 then - local gc=g:GetFirst() - if Duel.SendtoGrave(gc,REASON_EFFECT)~=0 and gc:IsLocation(LOCATION_GRAVE) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(gc:GetCode()) - tc:RegisterEffect(e1) - end - end -end +--ヒーロー・マスク +function c75141056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c75141056.target) + e1:SetOperation(c75141056.activate) + c:RegisterEffect(e1) +end +function c75141056.tgfilter(c) + return c:IsFaceup() and Duel.IsExistingMatchingCard(c75141056.cfilter,c:GetControler(),LOCATION_DECK,0,1,nil,c) +end +function c75141056.cfilter(c,tc) + return c:IsSetCard(0x3008) and not c:IsCode(tc:GetCode()) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c75141056.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c75141056.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c75141056.tgfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c75141056.tgfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c75141056.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c75141056.cfilter,tp,LOCATION_DECK,0,1,1,nil,tc) + if g:GetCount()>0 then + local gc=g:GetFirst() + if Duel.SendtoGrave(gc,REASON_EFFECT)~=0 and gc:IsLocation(LOCATION_GRAVE) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(gc:GetCode()) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c75162696.lua b/script/c75162696.lua index b7f84152..6cd252a6 100644 --- a/script/c75162696.lua +++ b/script/c75162696.lua @@ -1,42 +1,42 @@ ---ウィクトーリア -function c75162696.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(75162696,1)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c75162696.sptg) - e1:SetOperation(c75162696.spop) - c:RegisterEffect(e1) - --cannot be battle target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetValue(c75162696.tg) - c:RegisterEffect(e2) -end -function c75162696.tg(e,c) - return c:IsFaceup() and c~=e:GetHandler() and c:IsRace(RACE_FAIRY) -end -function c75162696.filter(c,e,tp) - return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c75162696.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c75162696.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c75162696.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c75162696.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c75162696.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsRace(RACE_DRAGON) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ウィクトーリア +function c75162696.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75162696,1)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c75162696.sptg) + e1:SetOperation(c75162696.spop) + c:RegisterEffect(e1) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(c75162696.tg) + c:RegisterEffect(e2) +end +function c75162696.tg(e,c) + return c:IsFaceup() and c~=e:GetHandler() and c:IsRace(RACE_FAIRY) +end +function c75162696.filter(c,e,tp) + return c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c75162696.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c75162696.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c75162696.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c75162696.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c75162696.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsRace(RACE_DRAGON) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c75195825.lua b/script/c75195825.lua index 016388e2..a454daec 100644 --- a/script/c75195825.lua +++ b/script/c75195825.lua @@ -1,33 +1,33 @@ ---竜剣士マスターP -function c75195825.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(75195825,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET+EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c75195825.sctg) - e2:SetOperation(c75195825.scop) - c:RegisterEffect(e2) -end -function c75195825.filter(c) - return (c:GetSequence()==6 or c:GetSequence()==7) -end -function c75195825.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and c75195825.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c75195825.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c75195825.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c75195825.scop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--竜剣士マスターP +function c75195825.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75195825,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET+EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c75195825.sctg) + e2:SetOperation(c75195825.scop) + c:RegisterEffect(e2) +end +function c75195825.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) +end +function c75195825.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c75195825.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c75195825.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c75195825.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c75195825.scop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c75198893.lua b/script/c75198893.lua index 0a7348e3..df87b4cb 100644 --- a/script/c75198893.lua +++ b/script/c75198893.lua @@ -1,65 +1,65 @@ ---スキヤナー -function c75198893.initial_effect(c) - --copy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(75198893,0)) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c75198893.target) - e1:SetOperation(c75198893.operation) - c:RegisterEffect(e1) -end -function c75198893.filter(c) - return c:IsFaceup() and c:IsType(TYPE_MONSTER) and not c:IsType(TYPE_XYZ) and not c:IsForbidden() -end -function c75198893.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(1-tp) and c75198893.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c75198893.filter,tp,0,LOCATION_REMOVED,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c75198893.filter,tp,0,LOCATION_REMOVED,1,1,nil) -end -function c75198893.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then - local code=tc:GetOriginalCode() - local ba=tc:GetBaseAttack() - local bd=tc:GetBaseDefense() - local at=tc:GetAttribute() - local lv=tc:GetLevel() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetValue(ba) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EFFECT_SET_BASE_DEFENSE) - e3:SetValue(bd) - c:RegisterEffect(e3) - local e4=e1:Clone() - e4:SetCode(EFFECT_CHANGE_ATTRIBUTE) - e4:SetValue(at) - c:RegisterEffect(e4) - local e5=e1:Clone() - e5:SetCode(EFFECT_CHANGE_LEVEL) - e5:SetValue(lv) - c:RegisterEffect(e5) - --leave redir - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e6:SetReset(RESET_EVENT+0x47e0000+RESET_PHASE+PHASE_END) - e6:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e6) - end -end +--スキヤナー +function c75198893.initial_effect(c) + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75198893,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c75198893.target) + e1:SetOperation(c75198893.operation) + c:RegisterEffect(e1) +end +function c75198893.filter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) and not c:IsType(TYPE_XYZ) and not c:IsForbidden() +end +function c75198893.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(1-tp) and c75198893.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c75198893.filter,tp,0,LOCATION_REMOVED,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c75198893.filter,tp,0,LOCATION_REMOVED,1,1,nil) +end +function c75198893.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then + local code=tc:GetOriginalCode() + local ba=tc:GetBaseAttack() + local bd=tc:GetBaseDefense() + local at=tc:GetAttribute() + local lv=tc:GetLevel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetValue(ba) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SET_BASE_DEFENSE) + e3:SetValue(bd) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e4:SetValue(at) + c:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_LEVEL) + e5:SetValue(lv) + c:RegisterEffect(e5) + --leave redir + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetReset(RESET_EVENT+0x47e0000+RESET_PHASE+PHASE_END) + e6:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e6) + end +end diff --git a/script/c75214390.lua b/script/c75214390.lua index a4fd91c2..38501299 100644 --- a/script/c75214390.lua +++ b/script/c75214390.lua @@ -1,57 +1,57 @@ ---オーバーレイ・ブースター -function c75214390.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e1:SetTargetRange(POS_FACEUP_DEFENSE,0) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,75214390) - e1:SetCondition(c75214390.spcon) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(75214390,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCondition(aux.exccon) - e2:SetCost(c75214390.atkcost) - e2:SetTarget(c75214390.atktg) - e2:SetOperation(c75214390.atkop) - c:RegisterEffect(e2) -end -function c75214390.cfilter(c) - return c:IsFaceup() and c:IsAttackAbove(2000) -end -function c75214390.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c75214390.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c75214390.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c75214390.filter(c) - return c:IsFaceup() and c:GetOverlayCount()>0 -end -function c75214390.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c75214390.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c75214390.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c75214390.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c75214390.atkop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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) - e1:SetValue(tc:GetOverlayCount()*500) - tc:RegisterEffect(e1) - end -end +--オーバーレイ・ブースター +function c75214390.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetTargetRange(POS_FACEUP_DEFENSE,0) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,75214390) + e1:SetCondition(c75214390.spcon) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75214390,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(aux.exccon) + e2:SetCost(c75214390.atkcost) + e2:SetTarget(c75214390.atktg) + e2:SetOperation(c75214390.atkop) + c:RegisterEffect(e2) +end +function c75214390.cfilter(c) + return c:IsFaceup() and c:IsAttackAbove(2000) +end +function c75214390.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c75214390.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c75214390.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c75214390.filter(c) + return c:IsFaceup() and c:GetOverlayCount()>0 +end +function c75214390.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c75214390.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c75214390.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c75214390.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c75214390.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(tc:GetOverlayCount()*500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c75249652.lua b/script/c75249652.lua index 470aa63d..c5467ec5 100644 --- a/script/c75249652.lua +++ b/script/c75249652.lua @@ -1,43 +1,43 @@ ---業炎のバリア -ファイヤー・フォース- -function c75249652.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c75249652.condition) - e1:SetTarget(c75249652.target) - e1:SetOperation(c75249652.activate) - c:RegisterEffect(e1) -end -function c75249652.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:GetFirst():IsControler(1-tp) -end -function c75249652.filter(c) - return c:IsAttackPos() -end -function c75249652.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c75249652.filter,tp,0,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(c75249652.filter,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) -end -function c75249652.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c75249652.filter,tp,0,LOCATION_MZONE,nil) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - local dg=Duel.GetOperatedGroup() - local tc=dg:GetFirst() - local atk=0 - while tc do - local tatk=tc:GetTextAttack() - if tatk>0 then atk=atk+tatk end - tc=dg:GetNext() - end - local dam=Duel.Damage(tp,atk/2,REASON_EFFECT) - if Duel.GetLP(tp)>0 and dam>0 then - Duel.BreakEffect() - Duel.Damage(1-tp,dam,REASON_EFFECT) - end - end -end +--業炎のバリア -ファイヤー・フォース- +function c75249652.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c75249652.condition) + e1:SetTarget(c75249652.target) + e1:SetOperation(c75249652.activate) + c:RegisterEffect(e1) +end +function c75249652.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(1-tp) +end +function c75249652.filter(c) + return c:IsAttackPos() +end +function c75249652.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c75249652.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c75249652.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c75249652.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c75249652.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + local dg=Duel.GetOperatedGroup() + local tc=dg:GetFirst() + local atk=0 + while tc do + local tatk=tc:GetTextAttack() + if tatk>0 then atk=atk+tatk end + tc=dg:GetNext() + end + local dam=Duel.Damage(tp,atk/2,REASON_EFFECT) + if Duel.GetLP(tp)>0 and dam>0 then + Duel.BreakEffect() + Duel.Damage(1-tp,dam,REASON_EFFECT) + end + end +end diff --git a/script/c75253697.lua b/script/c75253697.lua index f56672e5..f5e15084 100644 --- a/script/c75253697.lua +++ b/script/c75253697.lua @@ -8,7 +8,7 @@ function c75253697.initial_effect(c) e1:SetDescription(aux.Stringid(75253697,0)) e1:SetCategory(CATEGORY_DESTROY) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c75253697.descost) diff --git a/script/c75285069.lua b/script/c75285069.lua index d92abb1e..7a92e638 100644 --- a/script/c75285069.lua +++ b/script/c75285069.lua @@ -21,9 +21,9 @@ function c75285069.initial_effect(c) e2:SetOperation(c75285069.desop) c:RegisterEffect(e2) end -function c75285069.ttcon(e,c) +function c75285069.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c75285069.ttop(e,tp,eg,ep,ev,re,r,rp,c) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) diff --git a/script/c75286621.lua b/script/c75286621.lua new file mode 100644 index 00000000..e830e80d --- /dev/null +++ b/script/c75286621.lua @@ -0,0 +1,44 @@ +--召喚獣メルカバー +function c75286621.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,86120751,aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_LIGHT),1,true,true) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75286621,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCode(EVENT_CHAINING) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c75286621.negcon) + e1:SetCost(c75286621.negcost) + e1:SetTarget(c75286621.negtg) + e1:SetOperation(c75286621.negop) + c:RegisterEffect(e1) +end +function c75286621.negcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) + and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev) +end +function c75286621.cfilter(c,rtype) + return c:IsType(rtype) and c:IsAbleToGraveAsCost() +end +function c75286621.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + local rtype=bit.band(re:GetActiveType(),0x7) + if chk==0 then return Duel.IsExistingMatchingCard(c75286621.cfilter,tp,LOCATION_HAND,0,1,nil,rtype) end + Duel.DiscardHand(tp,c75286621.cfilter,1,1,REASON_COST,nil,rtype) +end +function c75286621.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return re:GetHandler():IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) + end +end +function c75286621.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Remove(eg,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c75292259.lua b/script/c75292259.lua index da34b5a1..f5aab282 100644 --- a/script/c75292259.lua +++ b/script/c75292259.lua @@ -1,19 +1,19 @@ ---ポセイドン・オオカブト -function c75292259.initial_effect(c) - --chain attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_DAMAGE_STEP_END) - e1:SetCondition(c75292259.atcon) - e1:SetOperation(c75292259.atop) - c:RegisterEffect(e1) -end -function c75292259.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c==Duel.GetAttacker() and bc and bc:IsRelateToBattle() - and bc:GetBattlePosition()==POS_FACEUP_ATTACK and c:IsChainAttackable(3) -end -function c75292259.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack(e:GetHandler():GetBattleTarget()) -end +--ポセイドン・オオカブト +function c75292259.initial_effect(c) + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c75292259.atcon) + e1:SetOperation(c75292259.atop) + c:RegisterEffect(e1) +end +function c75292259.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c==Duel.GetAttacker() and bc and bc:IsRelateToBattle() + and bc:GetBattlePosition()==POS_FACEUP_ATTACK and c:IsChainAttackable(3) +end +function c75292259.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack(e:GetHandler():GetBattleTarget()) +end diff --git a/script/c75304793.lua b/script/c75304793.lua index 5c9c0dae..a8729c65 100644 --- a/script/c75304793.lua +++ b/script/c75304793.lua @@ -1,89 +1,89 @@ ---アンプリファイヤー -function c75304793.initial_effect(c) - c:EnableCounterPermit(0x35) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_FZONE) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetCondition(c75304793.ctcon) - e2:SetOperation(c75304793.ctop) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1066)) - e3:SetValue(c75304793.atkval) - c:RegisterEffect(e3) - --counter - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_FZONE) - e4:SetCountLimit(1) - e4:SetTarget(c75304793.target) - e4:SetOperation(c75304793.operation) - c:RegisterEffect(e4) -end -function c75304793.ctcon(e,tp,eg,ep,ev,re,r,rp) - return re and re:GetHandler():IsSetCard(0x1066) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c75304793.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x35,1) -end -function c75304793.atkval(e,c) - return e:GetHandler():GetCounter(0x35)*100 -end -function c75304793.filter(c) - return c:IsFaceup() and c:IsSetCard(0x1066) -end -function c75304793.target(e,tp,eg,ep,ev,re,r,rp,chk) - local ct=Duel.GetMatchingGroupCount(c75304793.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - local b1=e:GetHandler():IsCanRemoveCounter(tp,0x35,5,REASON_COST) - local b2=e:GetHandler():IsCanRemoveCounter(tp,0x35,7,REASON_COST) - and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD+LOCATION_GRAVE,1,nil) - if chk==0 then return ct>0 and (b1 or b2) end - local op=0 - if b1 and b2 then - op=Duel.SelectOption(tp,aux.Stringid(75304793,0),aux.Stringid(75304793,1)) - elseif b1 then - op=Duel.SelectOption(tp,aux.Stringid(75304793,0)) - else - op=Duel.SelectOption(tp,aux.Stringid(75304793,1))+1 - end - e:SetLabel(op) - if op==0 then - e:SetCategory(CATEGORY_DAMAGE) - e:GetHandler():RemoveCounter(tp,0x35,5,REASON_COST) - Duel.SetTargetPlayer(1-tp) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) - else - e:SetCategory(CATEGORY_REMOVE) - e:GetHandler():RemoveCounter(tp,0x35,7,REASON_COST) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,LOCATION_ONFIELD+LOCATION_GRAVE) - end -end -function c75304793.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local ct=Duel.GetMatchingGroupCount(c75304793.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - if ct==0 then return end - if e:GetLabel()==0 then - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - Duel.Damage(p,ct*300,REASON_EFFECT) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD+LOCATION_GRAVE,1,ct,nil) - if g:GetCount()>0 then - Duel.Remove(g,POS_FACEUP,REASON_EFFECT) - end - end -end +--アンプリファイヤー +function c75304793.initial_effect(c) + c:EnableCounterPermit(0x35) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCondition(c75304793.ctcon) + e2:SetOperation(c75304793.ctop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1066)) + e3:SetValue(c75304793.atkval) + c:RegisterEffect(e3) + --counter + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetCountLimit(1) + e4:SetTarget(c75304793.target) + e4:SetOperation(c75304793.operation) + c:RegisterEffect(e4) +end +function c75304793.ctcon(e,tp,eg,ep,ev,re,r,rp) + return re and re:GetHandler():IsSetCard(0x1066) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c75304793.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x35,1) +end +function c75304793.atkval(e,c) + return e:GetHandler():GetCounter(0x35)*100 +end +function c75304793.filter(c) + return c:IsFaceup() and c:IsSetCard(0x1066) +end +function c75304793.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=Duel.GetMatchingGroupCount(c75304793.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + local b1=e:GetHandler():IsCanRemoveCounter(tp,0x35,5,REASON_COST) + local b2=e:GetHandler():IsCanRemoveCounter(tp,0x35,7,REASON_COST) + and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD+LOCATION_GRAVE,1,nil) + if chk==0 then return ct>0 and (b1 or b2) end + local op=0 + if b1 and b2 then + op=Duel.SelectOption(tp,aux.Stringid(75304793,0),aux.Stringid(75304793,1)) + elseif b1 then + op=Duel.SelectOption(tp,aux.Stringid(75304793,0)) + else + op=Duel.SelectOption(tp,aux.Stringid(75304793,1))+1 + end + e:SetLabel(op) + if op==0 then + e:SetCategory(CATEGORY_DAMAGE) + e:GetHandler():RemoveCounter(tp,0x35,5,REASON_COST) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) + else + e:SetCategory(CATEGORY_REMOVE) + e:GetHandler():RemoveCounter(tp,0x35,7,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,0,LOCATION_ONFIELD+LOCATION_GRAVE) + end +end +function c75304793.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ct=Duel.GetMatchingGroupCount(c75304793.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + if ct==0 then return end + if e:GetLabel()==0 then + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,ct*300,REASON_EFFECT) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD+LOCATION_GRAVE,1,ct,nil) + if g:GetCount()>0 then + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + end + end +end diff --git a/script/c75361204.lua b/script/c75361204.lua index 143f3f83..d0e1c192 100644 --- a/script/c75361204.lua +++ b/script/c75361204.lua @@ -1,131 +1,131 @@ ---グレイドル・スプリット -function c75361204.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCondition(c75361204.condition) - e1:SetTarget(c75361204.target) - e1:SetOperation(c75361204.operation) - c:RegisterEffect(e1) -end -function c75361204.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c75361204.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_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c75361204.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsLocation(LOCATION_SZONE) then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(tp) then - Duel.Equip(tp,c,tc) - c:CancelToGrave() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(500) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EQUIP_LIMIT) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetCountLimit(1,75361204) - e3:SetCondition(c75361204.spcon) - e3:SetCost(c75361204.spcost) - e3:SetTarget(c75361204.sptg) - e3:SetOperation(c75361204.spop) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - end -end -function c75361204.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetEquipTarget() and Duel.GetTurnPlayer()==tp - and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) -end -function c75361204.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - e:SetLabelObject(e:GetHandler():GetEquipTarget()) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c75361204.spfilter1(c,e,tp) - return c:IsSetCard(0xd1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c75361204.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) -end -function c75361204.spfilter2(c,e,tp,code) - return c:IsSetCard(0xd1) and not c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c75361204.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c75361204.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end - local ec=e:GetLabelObject() - ec:CreateEffectRelation(e) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,ec,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) -end -function c75361204.spop(e,tp,eg,ep,ev,re,r,rp) - local ec=e:GetLabelObject() - if ec:IsRelateToEffect(e) and ec:IsFaceup() and Duel.Destroy(ec,REASON_EFFECT)~=0 - and not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 then - local fid=e:GetHandler():GetFieldID() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectMatchingCard(tp,c75361204.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc1=g1:GetFirst() - if not tc1 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectMatchingCard(tp,c75361204.spfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp,tc1:GetCode()) - local tc2=g2:GetFirst() - Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) - tc1:RegisterFlagEffect(75361204,RESET_EVENT+0x1fe0000,0,1,fid) - tc2:RegisterFlagEffect(75361204,RESET_EVENT+0x1fe0000,0,1,fid) - Duel.SpecialSummonComplete() - g1:Merge(g2) - g1:KeepAlive() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(g1) - e1:SetCondition(c75361204.descon) - e1:SetOperation(c75361204.desop) - Duel.RegisterEffect(e1,tp) - end -end -function c75361204.desfilter(c,fid) - return c:GetFlagEffectLabel(75361204)==fid -end -function c75361204.descon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c75361204.desfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c75361204.desop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c75361204.desfilter,nil,e:GetLabel()) - Duel.Destroy(tg,REASON_EFFECT) -end +--グレイドル・スプリット +function c75361204.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c75361204.condition) + e1:SetTarget(c75361204.target) + e1:SetOperation(c75361204.operation) + c:RegisterEffect(e1) +end +function c75361204.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c75361204.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_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c75361204.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsControler(tp) then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCountLimit(1,75361204) + e3:SetCondition(c75361204.spcon) + e3:SetCost(c75361204.spcost) + e3:SetTarget(c75361204.sptg) + e3:SetOperation(c75361204.spop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c75361204.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget() and Duel.GetTurnPlayer()==tp + and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) +end +function c75361204.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabelObject(e:GetHandler():GetEquipTarget()) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c75361204.spfilter1(c,e,tp) + return c:IsSetCard(0xd1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c75361204.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) +end +function c75361204.spfilter2(c,e,tp,code) + return c:IsSetCard(0xd1) and not c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c75361204.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c75361204.spfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end + local ec=e:GetLabelObject() + ec:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,ec,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c75361204.spop(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetLabelObject() + if ec:IsRelateToEffect(e) and ec:IsFaceup() and Duel.Destroy(ec,REASON_EFFECT)~=0 + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 then + local fid=e:GetHandler():GetFieldID() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,c75361204.spfilter1,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc1=g1:GetFirst() + if not tc1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c75361204.spfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp,tc1:GetCode()) + local tc2=g2:GetFirst() + Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) + tc1:RegisterFlagEffect(75361204,RESET_EVENT+0x1fe0000,0,1,fid) + tc2:RegisterFlagEffect(75361204,RESET_EVENT+0x1fe0000,0,1,fid) + Duel.SpecialSummonComplete() + g1:Merge(g2) + g1:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g1) + e1:SetCondition(c75361204.descon) + e1:SetOperation(c75361204.desop) + Duel.RegisterEffect(e1,tp) + end +end +function c75361204.desfilter(c,fid) + return c:GetFlagEffectLabel(75361204)==fid +end +function c75361204.descon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c75361204.desfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c75361204.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c75361204.desfilter,nil,e:GetLabel()) + Duel.Destroy(tg,REASON_EFFECT) +end diff --git a/script/c75363626.lua b/script/c75363626.lua index eeea20b8..92f5e1d2 100644 --- a/script/c75363626.lua +++ b/script/c75363626.lua @@ -1,37 +1,37 @@ ---マドルチェ・シューバリエ -function c75363626.initial_effect(c) - --to deck - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(75363626,0)) - e1:SetCategory(CATEGORY_TODECK) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c75363626.retcon) - e1:SetTarget(c75363626.rettg) - e1:SetOperation(c75363626.retop) - c:RegisterEffect(e1) - --cannot be battle target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetValue(c75363626.atktg) - c:RegisterEffect(e2) -end -function c75363626.retcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():GetReasonPlayer()~=tp - and e:GetHandler():GetPreviousControler()==tp -end -function c75363626.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c75363626.retop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) - end -end -function c75363626.atktg(e,c) - return c:IsFaceup() and c:GetCode()~=75363626 and c:IsSetCard(0x71) -end +--マドルチェ・シューバリエ +function c75363626.initial_effect(c) + --to deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75363626,0)) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c75363626.retcon) + e1:SetTarget(c75363626.rettg) + e1:SetOperation(c75363626.retop) + c:RegisterEffect(e1) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(c75363626.atktg) + c:RegisterEffect(e2) +end +function c75363626.retcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():GetReasonPlayer()~=tp + and e:GetHandler():GetPreviousControler()==tp +end +function c75363626.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c75363626.retop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) + end +end +function c75363626.atktg(e,c) + return c:IsFaceup() and c:GetCode()~=75363626 and c:IsSetCard(0x71) +end diff --git a/script/c75367227.lua b/script/c75367227.lua index 2e6b83e3..7876272e 100644 --- a/script/c75367227.lua +++ b/script/c75367227.lua @@ -16,7 +16,7 @@ function c75367227.initial_effect(c) e2:SetCategory(CATEGORY_DESTROY) e2:SetDescription(aux.Stringid(75367227,0)) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,75367227) e2:SetCost(c75367227.descost) diff --git a/script/c75380687.lua b/script/c75380687.lua index f5387c91..f10aa653 100644 --- a/script/c75380687.lua +++ b/script/c75380687.lua @@ -1,76 +1,76 @@ ---呪符竜 -function c75380687.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,46986414,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),1,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c75380687.splimit) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(75380687,0)) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetTarget(c75380687.target) - e2:SetOperation(c75380687.operation) - c:RegisterEffect(e2) - --summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(75380687,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) - e3:SetCode(EVENT_DESTROYED) - e3:SetTarget(c75380687.sptg) - e3:SetOperation(c75380687.spop) - c:RegisterEffect(e3) -end -function c75380687.splimit(e,se,sp,st) - return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION or se:GetHandler():IsCode(1784686) -end -function c75380687.filter(c) - return c:IsType(TYPE_SPELL) and c:IsAbleToRemove() -end -function c75380687.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c75380687.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c75380687.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,120,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) -end -function c75380687.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - local ct=Duel.Remove(g,POS_FACEUP,REASON_EFFECT) - local c=e:GetHandler() - if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetValue(ct*100) - c:RegisterEffect(e1) - end -end -function c75380687.spfilter(c,e,tp) - return c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c75380687.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c75380687.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c75380687.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c75380687.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c75380687.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--呪符竜 +function c75380687.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,46986414,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),1,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c75380687.splimit) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75380687,0)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetTarget(c75380687.target) + e2:SetOperation(c75380687.operation) + c:RegisterEffect(e2) + --summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(75380687,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_DESTROYED) + e3:SetTarget(c75380687.sptg) + e3:SetOperation(c75380687.spop) + c:RegisterEffect(e3) +end +function c75380687.splimit(e,se,sp,st) + return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION or se:GetHandler():IsCode(1784686) +end +function c75380687.filter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToRemove() +end +function c75380687.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c75380687.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c75380687.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,120,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) +end +function c75380687.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ct=Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local c=e:GetHandler() + if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(ct*100) + c:RegisterEffect(e1) + end +end +function c75380687.spfilter(c,e,tp) + return c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c75380687.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c75380687.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c75380687.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c75380687.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c75380687.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c7541475.lua b/script/c7541475.lua index 49ca5df1..658c8775 100644 --- a/script/c7541475.lua +++ b/script/c7541475.lua @@ -1,25 +1,25 @@ ---カブキ・ドラゴン -function c7541475.initial_effect(c) - --position - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(7541475,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLE_CONFIRM) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c7541475.postg) - e1:SetOperation(c7541475.posop) - c:RegisterEffect(e1) -end -function c7541475.postg(e,tp,eg,ep,ev,re,r,rp,chk) - local d=Duel.GetAttackTarget() - if chk==0 then return d end - Duel.SetOperationInfo(0,CATEGORY_POSITION,d,1,0,0) -end -function c7541475.posop(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - if d:IsRelateToBattle() then - Duel.ChangePosition(d,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) - end -end +--カブキ・ドラゴン +function c7541475.initial_effect(c) + --position + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7541475,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_CONFIRM) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c7541475.postg) + e1:SetOperation(c7541475.posop) + c:RegisterEffect(e1) +end +function c7541475.postg(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk==0 then return d end + Duel.SetOperationInfo(0,CATEGORY_POSITION,d,1,0,0) +end +function c7541475.posop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d:IsRelateToBattle() then + Duel.ChangePosition(d,POS_FACEUP_DEFENSE,POS_FACEDOWN_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end +end diff --git a/script/c75425043.lua b/script/c75425043.lua index 3a71c2c5..86975894 100644 --- a/script/c75425043.lua +++ b/script/c75425043.lua @@ -1,102 +1,102 @@ ---PSYフレームギア・α -function c75425043.initial_effect(c) - c:EnableUnsummonable() - --splimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c75425043.splimit) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(75425043,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_HAND) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetCondition(c75425043.condition) - e2:SetTarget(c75425043.target) - e2:SetOperation(c75425043.operation) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c75425043.splimit(e,se,sp,st) - return se:IsHasType(EFFECT_TYPE_ACTIONS) -end -function c75425043.cfilter(c,tp) - return c:GetSummonPlayer()==tp -end -function c75425043.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and eg:IsExists(c75425043.cfilter,1,nil,1-tp) -end -function c75425043.spfilter1(c,e,tp) - return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(c75425043.thfilter,tp,LOCATION_DECK,0,1,c) -end -function c75425043.spfilter2(c,e,tp) - return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(c75425043.thfilter0,tp,LOCATION_DECK,0,1,c) -end -function c75425043.thfilter0(c) - return c:IsSetCard(0xc1) and not c:IsCode(75425043) -end -function c75425043.thfilter(c) - return c:IsSetCard(0xc1) and not c:IsCode(75425043) and c:IsAbleToHand() -end -function c75425043.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c75425043.spfilter1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c75425043.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c75425043.spfilter2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:FilterCount(aux.nvfilter,nil)==0 then return end - local tc=g:GetFirst() - local c=e:GetHandler() - local fid=c:GetFieldID() - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(75425043,RESET_EVENT+0x1fe0000,0,1,fid) - c:RegisterFlagEffect(75425043,RESET_EVENT+0x1fe0000,0,1,fid) - Duel.SpecialSummonComplete() - g:AddCard(c) - g:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(g) - e1:SetCondition(c75425043.rmcon) - e1:SetOperation(c75425043.rmop) - Duel.RegisterEffect(e1,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g2=Duel.SelectMatchingCard(tp,c75425043.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g2:GetCount()>0 then - Duel.SendtoHand(g2,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g2) - end -end -function c75425043.rmfilter(c,fid) - return c:GetFlagEffectLabel(75425043)==fid -end -function c75425043.rmcon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c75425043.rmfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c75425043.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c75425043.rmfilter,nil,e:GetLabel()) - Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) -end +--PSYフレームギア・α +function c75425043.initial_effect(c) + c:EnableUnsummonable() + --splimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c75425043.splimit) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75425043,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c75425043.condition) + e2:SetTarget(c75425043.target) + e2:SetOperation(c75425043.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c75425043.splimit(e,se,sp,st) + return se:IsHasType(EFFECT_TYPE_ACTIONS) +end +function c75425043.cfilter(c,tp) + return c:GetSummonPlayer()==tp +end +function c75425043.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and eg:IsExists(c75425043.cfilter,1,nil,1-tp) +end +function c75425043.spfilter1(c,e,tp) + return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(c75425043.thfilter,tp,LOCATION_DECK,0,1,c) +end +function c75425043.spfilter2(c,e,tp) + return c:IsCode(49036338) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(c75425043.thfilter0,tp,LOCATION_DECK,0,1,c) +end +function c75425043.thfilter0(c) + return c:IsSetCard(0xc1) and not c:IsCode(75425043) +end +function c75425043.thfilter(c) + return c:IsSetCard(0xc1) and not c:IsCode(75425043) and c:IsAbleToHand() +end +function c75425043.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c75425043.spfilter1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c75425043.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c75425043.spfilter2),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local tc=g:GetFirst() + local c=e:GetHandler() + local fid=c:GetFieldID() + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonStep(c,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(75425043,RESET_EVENT+0x1fe0000,0,1,fid) + c:RegisterFlagEffect(75425043,RESET_EVENT+0x1fe0000,0,1,fid) + Duel.SpecialSummonComplete() + g:AddCard(c) + g:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(g) + e1:SetCondition(c75425043.rmcon) + e1:SetOperation(c75425043.rmop) + Duel.RegisterEffect(e1,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g2=Duel.SelectMatchingCard(tp,c75425043.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g2:GetCount()>0 then + Duel.SendtoHand(g2,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g2) + end +end +function c75425043.rmfilter(c,fid) + return c:GetFlagEffectLabel(75425043)==fid +end +function c75425043.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c75425043.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c75425043.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c75425043.rmfilter,nil,e:GetLabel()) + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c75425320.lua b/script/c75425320.lua new file mode 100644 index 00000000..14318972 --- /dev/null +++ b/script/c75425320.lua @@ -0,0 +1,102 @@ +--真竜凰の使徒 +--Disciples of the True Dracophoenix +--Script by mercury233 +function c75425320.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75425320,0)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1,75425320) + e2:SetTarget(c75425320.drtg) + e2:SetOperation(c75425320.drop) + c:RegisterEffect(e2) + --tribute summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(75425320,1)) + e3:SetCategory(CATEGORY_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1,75425321) + e3:SetTarget(c75425320.sumtg) + e3:SetOperation(c75425320.sumop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(75425320,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCountLimit(1,75425322) + e4:SetCondition(c75425320.descon) + e4:SetTarget(c75425320.destg) + e4:SetOperation(c75425320.desop) + c:RegisterEffect(e4) +end +function c75425320.tdfilter(c) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsAbleToDeck() +end +function c75425320.drtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c75425320.tdfilter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c75425320.tdfilter,tp,LOCATION_GRAVE,0,3,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c75425320.tdfilter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c75425320.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if tg:GetCount()<=0 then return end + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + if g:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then Duel.ShuffleDeck(tp) end + local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + if ct>0 then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c75425320.sumfilter(c) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsSummonable(true,nil,1) +end +function c75425320.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c75425320.sumfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c75425320.sumop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c75425320.sumfilter,tp,LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.Summon(tp,tc,true,nil,1) + end +end +function c75425320.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) +end +function c75425320.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsType(TYPE_SPELL+TYPE_TRAP) end + if chk==0 then return Duel.IsExistingTarget(Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,TYPE_SPELL+TYPE_TRAP) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,TYPE_SPELL+TYPE_TRAP) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c75425320.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c75433814.lua b/script/c75433814.lua index 28a985b3..a6aa7b25 100644 --- a/script/c75433814.lua +++ b/script/c75433814.lua @@ -6,6 +6,7 @@ function c75433814.initial_effect(c) --counter local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(75433814,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c75434695.lua b/script/c75434695.lua index 644d5e8d..6adac86c 100644 --- a/script/c75434695.lua +++ b/script/c75434695.lua @@ -17,7 +17,7 @@ function c75434695.con(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp end function c75434695.filter(c) - return c:IsCode(24094653) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + return c:IsCode(24094653) and c:IsAbleToHand() end function c75434695.tg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(c75434695.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end @@ -25,7 +25,7 @@ function c75434695.tg(e,tp,eg,ep,ev,re,r,rp,chk) end function c75434695.op(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c75434695.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c75434695.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) diff --git a/script/c75487237.lua b/script/c75487237.lua index 5cbfaf76..42db5520 100644 --- a/script/c75487237.lua +++ b/script/c75487237.lua @@ -1,47 +1,46 @@ ---ミドル・シールド・ガードナー -function c75487237.initial_effect(c) - --turn set - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(75487237,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c75487237.target) - e1:SetOperation(c75487237.operation) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_QUICK_F) - e2:SetCode(EVENT_CHAINING) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_SET_AVAILABLE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c75487237.negcon) - e2:SetOperation(c75487237.negop) - c:RegisterEffect(e2) -end -function c75487237.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(75487237)==0 end - c:RegisterFlagEffect(75487237,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) - Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) -end -function c75487237.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) - end -end -function c75487237.negcon(e,tp,eg,ep,ev,re,r,rp) - if re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return tg:GetCount()==1 and tg:GetFirst()==e:GetHandler() and e:GetHandler():IsFacedown() - else - return false - end -end -function c75487237.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then - Duel.SendtoGrave(eg,REASON_EFFECT) - end - Duel.ChangePosition(e:GetHandler(),POS_FACEUP_DEFENSE) -end +--ミドル・シールド・ガードナー +function c75487237.initial_effect(c) + --turn set + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75487237,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c75487237.target) + e1:SetOperation(c75487237.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_F) + e2:SetCode(EVENT_CHAINING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL+EFFECT_FLAG_SET_AVAILABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c75487237.negcon) + e2:SetOperation(c75487237.negop) + c:RegisterEffect(e2) +end +function c75487237.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(75487237)==0 end + c:RegisterFlagEffect(75487237,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) +end +function c75487237.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) + end +end +function c75487237.negcon(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg:GetCount()==1 and tg:GetFirst()==e:GetHandler() and e:GetHandler():IsFacedown() + else + return false + end +end +function c75487237.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + Duel.SendtoGrave(eg,REASON_EFFECT) + end + Duel.ChangePosition(e:GetHandler(),POS_FACEUP_DEFENSE) +end diff --git a/script/c75500286.lua b/script/c75500286.lua index a2ba73cf..81dea7d3 100644 --- a/script/c75500286.lua +++ b/script/c75500286.lua @@ -1,44 +1,44 @@ ---封印の黄金櫃 -function c75500286.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c75500286.target) - e1:SetOperation(c75500286.activate) - c:RegisterEffect(e1) -end -function c75500286.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) -end -function c75500286.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,1,nil) - local tg=g:GetFirst() - if tg==nil then return end - Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) - if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_REMOVED) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - e1:SetCondition(c75500286.thcon) - e1:SetOperation(c75500286.thop) - e1:SetLabel(0) - tg:RegisterEffect(e1) -end -function c75500286.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c75500286.thop(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetLabel() - e:GetHandler():SetTurnCounter(ct+1) - if ct==1 then - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,e:GetHandler()) - else e:SetLabel(1) end -end +--封印の黄金櫃 +function c75500286.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c75500286.target) + e1:SetOperation(c75500286.activate) + c:RegisterEffect(e1) +end +function c75500286.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK) +end +function c75500286.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_DECK,0,1,1,nil) + local tg=g:GetFirst() + if tg==nil then return end + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) + if not e:IsHasType(EFFECT_TYPE_ACTIVATE) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_REMOVED) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e1:SetCondition(c75500286.thcon) + e1:SetOperation(c75500286.thop) + e1:SetLabel(0) + tg:RegisterEffect(e1) +end +function c75500286.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c75500286.thop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabel() + e:GetHandler():SetTurnCounter(ct+1) + if ct==1 then + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,e:GetHandler()) + else e:SetLabel(1) end +end diff --git a/script/c75524092.lua b/script/c75524092.lua index ec43fc25..aa64b48a 100644 --- a/script/c75524092.lua +++ b/script/c75524092.lua @@ -1,27 +1,12 @@ --ヴィシャス・クロー function c75524092.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(c75524092.target) - e1:SetOperation(c75524092.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --atkup local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(300) 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) --destroy sub local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP+EFFECT_TYPE_CONTINUOUS) @@ -36,19 +21,6 @@ function c75524092.initial_effect(c) e5:SetOperation(c75524092.thop) c:RegisterEffect(e5) end -function c75524092.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 c75524092.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 c75524092.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) local tg=e:GetHandler():GetEquipTarget() if chk==0 then return tg and tg:IsReason(REASON_BATTLE) end diff --git a/script/c75539614.lua b/script/c75539614.lua index b28d2e00..4547d489 100644 --- a/script/c75539614.lua +++ b/script/c75539614.lua @@ -1,61 +1,61 @@ ---サイコ・ブレイド -function c75539614.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:SetCountLimit(1,75539614+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c75539614.cost) - e1:SetTarget(c75539614.target) - e1:SetOperation(c75539614.operation) - c:RegisterEffect(e1) - --atk/def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(c75539614.val) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) -end -function c75539614.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,100) end - local lp=Duel.GetLP(tp) - local m=math.floor(math.min(lp,2000)/100) - local t={} - for i=1,m do - t[i]=i*100 - end - local ac=Duel.AnnounceNumber(tp,table.unpack(t)) - Duel.PayLPCost(tp,ac) - e:GetHandler():RegisterFlagEffect(75539614,RESET_EVENT+0x1fe0000,0,1,ac) -end -function c75539614.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 c75539614.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 c75539614.val(e,c) - local ct=e:GetHandler():GetFlagEffectLabel(75539614) - if not ct then return 0 end - return ct -end +--サイコ・ブレイド +function c75539614.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:SetCountLimit(1,75539614+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c75539614.cost) + e1:SetTarget(c75539614.target) + c:RegisterEffect(e1) + --atk/def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c75539614.val) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c75539614.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,100) end + local lp=Duel.GetLP(tp) + local m=math.floor(math.min(lp,2000)/100) + local t={} + for i=1,m do + t[i]=i*100 + end + local ac=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.PayLPCost(tp,ac) + e:GetHandler():RegisterFlagEffect(75539614,RESET_EVENT+0x1fe0000,0,1,ac) +end +function c75539614.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) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetReset(RESET_CHAIN) + e1:SetLabel(Duel.GetCurrentChain()) + e1:SetLabelObject(e) + e1:SetOperation(Auxiliary.EquipEquip) + Duel.RegisterEffect(e1,tp) +end +function c75539614.val(e,c) + local ct=e:GetHandler():GetFlagEffectLabel(75539614) + if not ct then return 0 end + return ct +end diff --git a/script/c75560629.lua b/script/c75560629.lua index 56071f5c..2835dcad 100644 --- a/script/c75560629.lua +++ b/script/c75560629.lua @@ -1,14 +1,6 @@ --フリント function c75560629.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(c75560629.target) - e1:SetOperation(c75560629.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c75560629.filter,c75560629.eqlimit) --atkdown local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -28,13 +20,6 @@ function c75560629.initial_effect(c) e4:SetCode(EFFECT_CANNOT_CHANGE_POSITION) e4:SetCondition(c75560629.flcon) c:RegisterEffect(e4) - --equip limit - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_EQUIP_LIMIT) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e5:SetValue(c75560629.eqlimit) - c:RegisterEffect(e5) --reequip local e6=Effect.CreateEffect(c) e6:SetDescription(aux.Stringid(75560629,0)) @@ -54,12 +39,10 @@ function c75560629.flcon(e) return tc:GetCode()~=83812099 or tc:IsDisabled() end function c75560629.eqlimit(e,c) - return c:GetCode()~=83812099 or c:IsDisabled() - or not c:GetEquipGroup():IsExists(Card.IsCode,1,e:GetHandler(),75560629) + return c:GetCode()~=83812099 or c:IsDisabled() or not c:GetEquipGroup():IsExists(Card.IsCode,1,e:GetHandler(),75560629) end function c75560629.filter(c) - return c:IsFaceup() and (c:GetCode()~=83812099 or c:IsDisabled() - or not c:GetEquipGroup():IsExists(Card.IsCode,1,nil,75560629)) + return c:IsFaceup() and (c:GetCode()~=83812099 or c:IsDisabled() or not c:GetEquipGroup():IsExists(Card.IsCode,1,nil,75560629)) end function c75560629.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) and c75560629.filter(chkc) end diff --git a/script/c75574498.lua b/script/c75574498.lua index 57dcad7d..83efe3dd 100644 --- a/script/c75574498.lua +++ b/script/c75574498.lua @@ -31,7 +31,7 @@ function c75574498.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(75574498,1)) e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e4:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e4:SetRange(LOCATION_MZONE) e4:SetCode(EVENT_TO_GRAVE) @@ -86,8 +86,8 @@ end function c75574498.spop2(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,c75574498.spfilter2,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c75574498.spfilter2),tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) end end diff --git a/script/c75620895.lua b/script/c75620895.lua index 15c83750..bef5b985 100644 --- a/script/c75620895.lua +++ b/script/c75620895.lua @@ -9,7 +9,7 @@ function c75620895.initial_effect(c) e1:SetDescription(aux.Stringid(75620895,0)) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_NO_TURN_RESET) e1:SetRange(LOCATION_MZONE) e1:SetCost(c75620895.cost) e1:SetTarget(c75620895.target) diff --git a/script/c7563579.lua b/script/c7563579.lua index c620abf8..c3b5372f 100644 --- a/script/c7563579.lua +++ b/script/c7563579.lua @@ -1,70 +1,70 @@ ---Emヒグルミ -function c7563579.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_DESTROYED) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1,7563579) - e2:SetCondition(c7563579.spcon1) - e2:SetTarget(c7563579.sptg1) - e2:SetOperation(c7563579.spop1) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_DESTROYED) - e3:SetCondition(c7563579.spcon2) - e3:SetTarget(c7563579.sptg2) - e3:SetOperation(c7563579.spop2) - c:RegisterEffect(e3) -end -function c7563579.cfilter(c,tp) - return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsSetCard(0xc6) - and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp -end -function c7563579.spcon1(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c7563579.cfilter,1,nil,tp) -end -function c7563579.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,500) -end -function c7563579.spop1(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - Duel.BreakEffect() - Duel.Damage(tp,500,REASON_EFFECT) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c7563579.spcon2(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c7563579.spfilter(c,e,tp) - return c:IsSetCard(0xc6) and not c:IsCode(7563579) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c7563579.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c7563579.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c7563579.spop2(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,c7563579.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--Emヒグルミ +function c7563579.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1,7563579) + e2:SetCondition(c7563579.spcon1) + e2:SetTarget(c7563579.sptg1) + e2:SetOperation(c7563579.spop1) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c7563579.spcon2) + e3:SetTarget(c7563579.sptg2) + e3:SetOperation(c7563579.spop2) + c:RegisterEffect(e3) +end +function c7563579.cfilter(c,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsSetCard(0xc6) + and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp +end +function c7563579.spcon1(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c7563579.cfilter,1,nil,tp) +end +function c7563579.sptg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,500) +end +function c7563579.spop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.BreakEffect() + Duel.Damage(tp,500,REASON_EFFECT) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c7563579.spcon2(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c7563579.spfilter(c,e,tp) + return c:IsSetCard(0xc6) and not c:IsCode(7563579) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c7563579.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c7563579.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c7563579.spop2(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,c7563579.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c75672051.lua b/script/c75672051.lua new file mode 100644 index 00000000..76a57993 --- /dev/null +++ b/script/c75672051.lua @@ -0,0 +1,67 @@ +--黒牙の魔術師 +function c75672051.initial_effect(c) + aux.EnablePendulumAttribute(c) + --Halve ATK + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75672051,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c75672051.atktg) + e1:SetOperation(c75672051.atkop) + c:RegisterEffect(e1) + --Special Summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(75672051,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c75672051.spcon) + e3:SetTarget(c75672051.sptg) + e3:SetOperation(c75672051.spop) + c:RegisterEffect(e3) +end +function c75672051.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and aux.nzatk(chkc) end + if chk==0 then return Duel.IsExistingTarget(aux.nzatk,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,aux.nzatk,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c75672051.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(math.floor(tc:GetAttack()/2)) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.BreakEffect() + Duel.Destroy(c,REASON_EFFECT) + end +end +function c75672051.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c75672051.spfilter(c,e,tp) + return c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c75672051.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c75672051.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c75672051.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c75672051.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c75672051.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c75675029.lua b/script/c75675029.lua index bef35bd0..bb4112f3 100644 --- a/script/c75675029.lua +++ b/script/c75675029.lua @@ -29,7 +29,6 @@ function c75675029.operation(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetMatchingGroup(c75675029.filter,tp,0,LOCATION_GRAVE,nil) local ct=Duel.Remove(g,POS_FACEUP,REASON_EFFECT) if ct~=0 then - Duel.BreakEffect() Duel.Damage(1-tp,ct*1000,REASON_EFFECT) end end diff --git a/script/c75702749.lua b/script/c75702749.lua new file mode 100644 index 00000000..f8a8c05c --- /dev/null +++ b/script/c75702749.lua @@ -0,0 +1,89 @@ +--幻煌龍の螺旋絞 +--Spiral Hold of the Mythic Radiance Dragon +--Script by dest +function c75702749.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(c75702749.target) + e1:SetOperation(c75702749.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(c75702749.eqlimit) + c:RegisterEffect(e2) + --Atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(500) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(75702749,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_DESTROYING) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1,75702749) + e4:SetCondition(c75702749.spcon) + e4:SetTarget(c75702749.sptg) + e4:SetOperation(c75702749.spop) + c:RegisterEffect(e4) +end +function c75702749.eqlimit(e,c) + return c:IsType(TYPE_NORMAL) +end +function c75702749.filter(c) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) +end +function c75702749.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c75702749.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c75702749.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c75702749.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c75702749.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 c75702749.spcon(e,tp,eg,ep,ev,re,r,rp) + local ec=e:GetHandler():GetEquipTarget() + return ec and eg:IsContains(ec) +end +function c75702749.spfilter(c,e,tp) + return c:IsCode(56649609) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c75702749.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c75702749.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c75702749.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c75702749.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Equip(tp,c,tc) + Duel.SpecialSummonComplete() + Duel.BreakEffect() + Duel.Damage(1-tp,1000,REASON_EFFECT) + end + end +end diff --git a/script/c7573135.lua b/script/c7573135.lua index 954e001e..ebfe9b4d 100644 --- a/script/c7573135.lua +++ b/script/c7573135.lua @@ -1,91 +1,96 @@ ---剣闘獣アウグストル -function c7573135.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(7573135,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c7573135.hspcon) - e1:SetTarget(c7573135.hsptg) - e1:SetOperation(c7573135.hspop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(7573135,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_BATTLE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c7573135.spcon) - e2:SetCost(c7573135.spcost) - e2:SetTarget(c7573135.sptg) - e2:SetOperation(c7573135.spop) - c:RegisterEffect(e2) -end -function c7573135.hspcon(e,tp,eg,ep,ev,re,r,rp) - local st=e:GetHandler():GetSummonType() - return st>=(SUMMON_TYPE_SPECIAL+100) and st<(SUMMON_TYPE_SPECIAL+150) -end -function c7573135.hspfilter(c,e,tp) - return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,113,tp,false,false) -end -function c7573135.hsptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c7573135.hspfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c7573135.hspop(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,c7573135.hspfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,113,tp,tp,false,false,POS_FACEUP_DEFENSE) - tc:RegisterFlagEffect(7573135,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabelObject(tc) - e1:SetCondition(c7573135.retcon) - e1:SetOperation(c7573135.retop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - end -end -function c7573135.retcon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - return tc:GetFlagEffect(7573135)>0 -end -function c7573135.retop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetLabelObject() - Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) -end -function c7573135.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetBattledGroupCount()>0 -end -function c7573135.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToDeckAsCost() end - Duel.SendtoDeck(c,nil,2,REASON_COST) -end -function c7573135.filter(c,e,tp) - return c:IsSetCard(0x19) and not c:IsCode(7573135) and c:IsCanBeSpecialSummoned(e,113,tp,false,false) -end -function c7573135.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c7573135.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c7573135.spop(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,c7573135.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,113,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) - end -end +--剣闘獣アウグストル +function c7573135.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7573135,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c7573135.hspcon) + e1:SetTarget(c7573135.hsptg) + e1:SetOperation(c7573135.hspop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(7573135,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c7573135.spcon) + e2:SetCost(c7573135.spcost) + e2:SetTarget(c7573135.sptg) + e2:SetOperation(c7573135.spop) + c:RegisterEffect(e2) +end +function c7573135.hspcon(e,tp,eg,ep,ev,re,r,rp) + local st=e:GetHandler():GetSummonType() + return st>=(SUMMON_TYPE_SPECIAL+100) and st<(SUMMON_TYPE_SPECIAL+150) +end +function c7573135.hspfilter(c,e,tp) + return c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,113,tp,false,false) +end +function c7573135.hsptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c7573135.hspfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c7573135.hspop(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,c7573135.hspfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,113,tp,tp,false,false,POS_FACEUP_DEFENSE) + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(7573135,RESET_EVENT+0x1fe0000,0,1,fid) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c7573135.retcon) + e1:SetOperation(c7573135.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c7573135.retcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(7573135)~=e:GetLabel() then + e:Reset() + return false + else return true end +end +function c7573135.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) +end +function c7573135.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 +end +function c7573135.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToDeckAsCost() end + Duel.SendtoDeck(c,nil,2,REASON_COST) +end +function c7573135.filter(c,e,tp) + return c:IsSetCard(0x19) and not c:IsCode(7573135) and c:IsCanBeSpecialSummoned(e,113,tp,false,false) +end +function c7573135.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c7573135.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c7573135.spop(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,c7573135.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,113,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + end +end diff --git a/script/c75732622.lua b/script/c75732622.lua index 155ff261..2c10c008 100644 --- a/script/c75732622.lua +++ b/script/c75732622.lua @@ -1,52 +1,52 @@ ---トーチ・ゴーレム -function c75732622.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) - e1:SetRange(LOCATION_HAND) - e1:SetTargetRange(POS_FACEUP,1) - e1:SetCondition(c75732622.spcon) - e1:SetOperation(c75732622.spop) - c:RegisterEffect(e1) - --spsummon cost - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SPSUMMON_COST) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCost(c75732622.spcost) - e2:SetOperation(c75732622.spcop) - c:RegisterEffect(e2) -end -function c75732622.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>=2 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonCount(tp,2) - and Duel.IsPlayerCanSpecialSummonMonster(tp,75732623,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) -end -function c75732622.spop(e,tp,eg,ep,ev,re,r,rp,c) - for i=1,2 do - local token=Duel.CreateToken(tp,75732623) - Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) - end - Duel.SpecialSummonComplete() -end -function c75732622.spcost(e,c,tp) - return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 -end -function c75732622.spcop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) -end +--トーチ・ゴーレム +function c75732622.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetRange(LOCATION_HAND) + e1:SetTargetRange(POS_FACEUP,1) + e1:SetCondition(c75732622.spcon) + e1:SetOperation(c75732622.spop) + c:RegisterEffect(e1) + --spsummon cost + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SPSUMMON_COST) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCost(c75732622.spcost) + e2:SetOperation(c75732622.spcop) + c:RegisterEffect(e2) +end +function c75732622.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>=2 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.IsPlayerCanSpecialSummonMonster(tp,75732623,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) +end +function c75732622.spop(e,tp,eg,ep,ev,re,r,rp,c) + for i=1,2 do + local token=Duel.CreateToken(tp,75732623) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) + end + Duel.SpecialSummonComplete() +end +function c75732622.spcost(e,c,tp) + return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 +end +function c75732622.spcop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c75779210.lua b/script/c75779210.lua index 67a48ac0..558352f4 100644 --- a/script/c75779210.lua +++ b/script/c75779210.lua @@ -8,6 +8,7 @@ function c75779210.initial_effect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e1:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) e1:SetTarget(c75779210.uttg) e1:SetValue(1) diff --git a/script/c75782277.lua b/script/c75782277.lua index 2cb7ac10..fb196704 100644 --- a/script/c75782277.lua +++ b/script/c75782277.lua @@ -1,70 +1,70 @@ ---ハーピィの狩場 -function c75782277.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --trigger - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetRange(LOCATION_FZONE) - e2:SetOperation(c75782277.check) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetDescription(aux.Stringid(75782277,0)) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_EVENT_PLAYER) - e4:SetCode(EVENT_CUSTOM+75782277) - e4:SetTarget(c75782277.target) - e4:SetOperation(c75782277.operation) - c:RegisterEffect(e4) - --atk/def - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_UPDATE_ATTACK) - e5:SetRange(LOCATION_FZONE) - e5:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_WINDBEAST)) - e5:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e5:SetValue(200) - c:RegisterEffect(e5) - local e6=e5:Clone() - e6:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e6) -end -function c75782277.check(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=eg:GetFirst() - local tp1=false local tp2=false - while tc do - if tc:IsFaceup() and tc:IsCode(76812113,12206212) then - if tc:IsControler(tp) then tp1=true else tp2=true end - end - tc=eg:GetNext() - end - if tp1 then Duel.RaiseSingleEvent(c,EVENT_CUSTOM+75782277,e,r,rp,tp,0) end - if tp2 then Duel.RaiseSingleEvent(c,EVENT_CUSTOM+75782277,e,r,rp,1-tp,0) end -end -function c75782277.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c75782277.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c75782277.filter(chkc) end - if chk==0 then return e:GetHandler():IsRelateToEffect(e) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c75782277.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c75782277.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--ハーピィの狩場 +function c75782277.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --trigger + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_FZONE) + e2:SetOperation(c75782277.check) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetDescription(aux.Stringid(75782277,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_EVENT_PLAYER) + e4:SetCode(EVENT_CUSTOM+75782277) + e4:SetTarget(c75782277.target) + e4:SetOperation(c75782277.operation) + c:RegisterEffect(e4) + --atk/def + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetRange(LOCATION_FZONE) + e5:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_WINDBEAST)) + e5:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e5:SetValue(200) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e6) +end +function c75782277.check(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=eg:GetFirst() + local tp1=false local tp2=false + while tc do + if tc:IsFaceup() and tc:IsCode(76812113,12206212) then + if tc:IsControler(tp) then tp1=true else tp2=true end + end + tc=eg:GetNext() + end + if tp1 then Duel.RaiseSingleEvent(c,EVENT_CUSTOM+75782277,e,r,rp,tp,0) end + if tp2 then Duel.RaiseSingleEvent(c,EVENT_CUSTOM+75782277,e,r,rp,1-tp,0) end +end +function c75782277.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c75782277.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c75782277.filter(chkc) end + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c75782277.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c75782277.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c75797046.lua b/script/c75797046.lua index ceca95ba..a73103da 100644 --- a/script/c75797046.lua +++ b/script/c75797046.lua @@ -8,6 +8,7 @@ function c75797046.initial_effect(c) e1:SetDescription(aux.Stringid(75797046,0)) e1:SetCategory(CATEGORY_TOHAND+CATEGORY_DAMAGE) e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCost(c75797046.retcost) e1:SetTarget(c75797046.rettg) diff --git a/script/c75833426.lua b/script/c75833426.lua index f81a7cb1..30d29e09 100644 --- a/script/c75833426.lua +++ b/script/c75833426.lua @@ -26,8 +26,7 @@ function c75833426.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c75833426.activate(e,tp,eg,ep,ev,re,r,rp) local ec=re:GetHandler() - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then ec:CancelToGrave() Duel.SendtoHand(ec,nil,REASON_EFFECT) end diff --git a/script/c75840616.lua b/script/c75840616.lua index ca22b407..8c4e82a7 100644 --- a/script/c75840616.lua +++ b/script/c75840616.lua @@ -9,6 +9,7 @@ function c75840616.initial_effect(c) e1:SetDescription(aux.Stringid(75840616,0)) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCost(c75840616.cost) e1:SetTarget(c75840616.target) diff --git a/script/c75886890.lua b/script/c75886890.lua index ac92a5dc..92a9b66e 100644 --- a/script/c75886890.lua +++ b/script/c75886890.lua @@ -1,83 +1,83 @@ ---ヴァイロン・スフィア -function c75886890.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(75886890,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c75886890.eqcon) - e1:SetCost(c75886890.eqcost) - e1:SetTarget(c75886890.eqtg) - e1:SetOperation(c75886890.eqop) - c:RegisterEffect(e1) - --equip2 - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(75886890,1)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCategory(CATEGORY_EQUIP) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_SZONE) - e2:SetCost(c75886890.eqcost2) - e2:SetTarget(c75886890.eqtg2) - e2:SetOperation(c75886890.eqop2) - c:RegisterEffect(e2) -end -function c75886890.eqcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:GetPreviousLocation()==LOCATION_MZONE -end -function c75886890.eqcost(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 c75886890.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c75886890.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Equip(tp,c,tc) - --equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c75886890.eqlimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - end -end -function c75886890.eqlimit(e,c) - local tp=e:GetHandlerPlayer() - return c:IsControler(tp) -end -function c75886890.eqcost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - e:SetLabelObject(e:GetHandler():GetEquipTarget()) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c75886890.filter2(c,ec) - return c:IsType(TYPE_EQUIP) and c:CheckEquipTarget(ec) -end -function c75886890.eqtg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local ec=e:GetHandler():GetEquipTarget() - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c75886890.filter2(chkc,ec) end - if chk==0 then return ec and Duel.IsExistingTarget(c75886890.filter2,tp,LOCATION_GRAVE,0,1,nil,ec) end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(75886890,2)) - Duel.SelectTarget(tp,c75886890.filter2,tp,LOCATION_GRAVE,0,1,1,nil,e:GetLabelObject()) - e:GetLabelObject():CreateEffectRelation(e) -end -function c75886890.eqop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local ec=e:GetLabelObject() - if tc:IsRelateToEffect(e) and ec:IsFaceup() and ec:IsRelateToEffect(e) then - Duel.Equip(tp,tc,ec) - end -end +--ヴァイロン・スフィア +function c75886890.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75886890,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c75886890.eqcon) + e1:SetCost(c75886890.eqcost) + e1:SetTarget(c75886890.eqtg) + e1:SetOperation(c75886890.eqop) + c:RegisterEffect(e1) + --equip2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75886890,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c75886890.eqcost2) + e2:SetTarget(c75886890.eqtg2) + e2:SetOperation(c75886890.eqop2) + c:RegisterEffect(e2) +end +function c75886890.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetPreviousLocation()==LOCATION_MZONE +end +function c75886890.eqcost(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 c75886890.eqtg(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.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c75886890.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Equip(tp,c,tc) + --equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(c75886890.eqlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c75886890.eqlimit(e,c) + local tp=e:GetHandlerPlayer() + return c:IsControler(tp) +end +function c75886890.eqcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabelObject(e:GetHandler():GetEquipTarget()) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c75886890.filter2(c,ec) + return c:IsType(TYPE_EQUIP) and c:CheckEquipTarget(ec) +end +function c75886890.eqtg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ec=e:GetHandler():GetEquipTarget() + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c75886890.filter2(chkc,ec) end + if chk==0 then return ec and Duel.IsExistingTarget(c75886890.filter2,tp,LOCATION_GRAVE,0,1,nil,ec) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(75886890,2)) + Duel.SelectTarget(tp,c75886890.filter2,tp,LOCATION_GRAVE,0,1,1,nil,e:GetLabelObject()) + e:GetLabelObject():CreateEffectRelation(e) +end +function c75886890.eqop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local ec=e:GetLabelObject() + if tc:IsRelateToEffect(e) and ec:IsFaceup() and ec:IsRelateToEffect(e) then + Duel.Equip(tp,tc,ec) + end +end diff --git a/script/c75902998.lua b/script/c75902998.lua index fb7ba879..60a3c5f7 100644 --- a/script/c75902998.lua +++ b/script/c75902998.lua @@ -17,12 +17,14 @@ end function c75902998.target(e,tp,eg,ep,ev,re,r,rp,chk) local at=Duel.GetAttacker() if chk==0 then return at:IsRelateToBattle() end + local dam=math.max(at:GetBaseAttack()/2,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,at,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,dam) end function c75902998.activate(e,tp,eg,ep,ev,re,r,rp) local at=Duel.GetAttacker() if at:IsRelateToBattle() and Duel.Destroy(at,REASON_EFFECT)~=0 then - local atk=at:GetTextAttack()/2 + local atk=at:GetBaseAttack()/2 if atk>0 then Duel.Damage(1-tp,atk,REASON_EFFECT) end diff --git a/script/c75923050.lua b/script/c75923050.lua index c6af63cc..fd6077e6 100644 --- a/script/c75923050.lua +++ b/script/c75923050.lua @@ -1,56 +1,56 @@ ---レアメタル・ヴァルキリー -function c75923050.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,92421852,38916461,true,true) - --atk up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(75923050,0)) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c75923050.atkcon) - e1:SetValue(1000) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(75923050,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c75923050.spcon) - e2:SetTarget(c75923050.sptg) - e2:SetOperation(c75923050.spop) - c:RegisterEffect(e2) -end -function c75923050.atkcon(e) - local ph=Duel.GetCurrentPhase() - if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) then return false end - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - return a==e:GetHandler() and d==nil -end -function c75923050.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetTurnID()~=Duel.GetTurnCount() -end -function c75923050.spfilter(c,e,tp) - return c:IsCode(1412158) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c75923050.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and e:GetHandler():IsAbleToExtra() - and Duel.IsExistingMatchingCard(c75923050.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c75923050.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.SendtoDeck(c,nil,2,REASON_EFFECT)~=0 then - local tc=Duel.GetFirstMatchingCard(c75923050.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end - end -end +--レアメタル・ヴァルキリー +function c75923050.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,92421852,38916461,true,true) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75923050,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c75923050.atkcon) + e1:SetValue(1000) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(75923050,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c75923050.spcon) + e2:SetTarget(c75923050.sptg) + e2:SetOperation(c75923050.spop) + c:RegisterEffect(e2) +end +function c75923050.atkcon(e) + local ph=Duel.GetCurrentPhase() + if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return a==e:GetHandler() and d==nil +end +function c75923050.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetTurnID()~=Duel.GetTurnCount() +end +function c75923050.spfilter(c,e,tp) + return c:IsCode(1412158) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c75923050.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and e:GetHandler():IsAbleToExtra() + and Duel.IsExistingMatchingCard(c75923050.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c75923050.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + if c:IsRelateToEffect(e) and c:IsFaceup() and Duel.SendtoDeck(c,nil,2,REASON_EFFECT)~=0 then + local tc=Duel.GetFirstMatchingCard(c75923050.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c75937826.lua b/script/c75937826.lua index 8714f53b..9dd018e5 100644 --- a/script/c75937826.lua +++ b/script/c75937826.lua @@ -1,81 +1,81 @@ ---巨大戦艦 ビッグ・コアMk-Ⅱ -function c75937826.initial_effect(c) - c:EnableCounterPermit(0x1f) - --spsummon success - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(75937826,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetTarget(c75937826.addct) - e1:SetOperation(c75937826.addc) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - c:RegisterEffect(e2) - --remove counter - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(75937826,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_DAMAGE_STEP_END) - e3:SetCondition(c75937826.rctcon) - e3:SetOperation(c75937826.rctop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(75937826,2)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_DAMAGE_STEP_END) - e4:SetCondition(c75937826.descon) - e4:SetTarget(c75937826.destg) - e4:SetOperation(c75937826.desop) - c:RegisterEffect(e4) - --summon with no tribute - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(75937826,3)) - e5:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_SUMMON_PROC) - e5:SetCondition(c75937826.ntcon) - c:RegisterEffect(e5) -end -function c75937826.addct(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) -end -function c75937826.addc(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x1f,3) - end -end -function c75937826.rctcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)~=0 -end -function c75937826.rctop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - c:RemoveCounter(tp,0x1f,1,REASON_EFFECT) - end -end -function c75937826.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1f)==0 -end -function c75937826.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) -end -function c75937826.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - Duel.Destroy(c,REASON_EFFECT) - end -end -function c75937826.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 -end +--巨大戦艦 ビッグ・コアMk-Ⅱ +function c75937826.initial_effect(c) + c:EnableCounterPermit(0x1f) + --spsummon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(75937826,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c75937826.addct) + e1:SetOperation(c75937826.addc) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --remove counter + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(75937826,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c75937826.rctcon) + e3:SetOperation(c75937826.rctop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(75937826,2)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetCondition(c75937826.descon) + e4:SetTarget(c75937826.destg) + e4:SetOperation(c75937826.desop) + c:RegisterEffect(e4) + --summon with no tribute + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(75937826,3)) + e5:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_SUMMON_PROC) + e5:SetCondition(c75937826.ntcon) + c:RegisterEffect(e5) +end +function c75937826.addct(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) +end +function c75937826.addc(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x1f,3) + end +end +function c75937826.rctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)~=0 +end +function c75937826.rctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + c:RemoveCounter(tp,0x1f,1,REASON_EFFECT) + end +end +function c75937826.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1f)==0 +end +function c75937826.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c75937826.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + Duel.Destroy(c,REASON_EFFECT) + end +end +function c75937826.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 +end diff --git a/script/c759393.lua b/script/c759393.lua index 2b0ad24f..5f6f6ad1 100644 --- a/script/c759393.lua +++ b/script/c759393.lua @@ -1,46 +1,46 @@ ---火霊使いヒータ -function c759393.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(759393,0)) - e1:SetCategory(CATEGORY_CONTROL) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetTarget(c759393.target) - e1:SetOperation(c759393.operation) - c:RegisterEffect(e1) -end -function c759393.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsControlerCanBeChanged() -end -function c759393.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c759393.filter(chkc) end - if chk==0 then return true end - if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,c759393.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) - end -end -function c759393.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c759393.filter(tc) then - c:SetCardTarget(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_CONTROL) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(tp) - e1:SetLabel(0) - e1:SetReset(RESET_EVENT+0x1fc0000) - e1:SetCondition(c759393.ctcon) - tc:RegisterEffect(e1) - end -end -function c759393.ctcon(e) - local c=e:GetOwner() - local h=e:GetHandler() - return h:IsAttribute(ATTRIBUTE_FIRE) and c:IsHasCardTarget(h) -end +--火霊使いヒータ +function c759393.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(759393,0)) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c759393.target) + e1:SetOperation(c759393.operation) + c:RegisterEffect(e1) +end +function c759393.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsControlerCanBeChanged() +end +function c759393.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c759393.filter(chkc) end + if chk==0 then return true end + if not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,c759393.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,g:GetCount(),0,0) + end +end +function c759393.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) and c759393.filter(tc) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(tp) + e1:SetLabel(0) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetCondition(c759393.ctcon) + tc:RegisterEffect(e1) + end +end +function c759393.ctcon(e) + local c=e:GetOwner() + local h=e:GetHandler() + return h:IsAttribute(ATTRIBUTE_FIRE) and c:IsHasCardTarget(h) +end diff --git a/script/c76004142.lua b/script/c76004142.lua index 4d6ba65a..51ea9922 100644 --- a/script/c76004142.lua +++ b/script/c76004142.lua @@ -1,60 +1,60 @@ ---不運の爆弾 -function c76004142.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e1) - e1:SetCountLimit(1,76004142+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c76004142.target) - e1:SetOperation(c76004142.activate) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c76004142.damcon) - e2:SetTarget(c76004142.damtg) - e2:SetOperation(c76004142.damop) - c:RegisterEffect(e2) -end -function c76004142.filter(c) - return c:IsFaceup() and c:GetAttack()>0 -end -function c76004142.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c76004142.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c76004142.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c76004142.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) -end -function c76004142.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local atk=tc:GetAttack()/2 - local val=Duel.Damage(tp,atk,REASON_EFFECT) - if val>0 and Duel.GetLP(tp)>0 then - Duel.BreakEffect() - Duel.Damage(1-tp,val,REASON_EFFECT) - end - end -end -function c76004142.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return rp~=tp and c:IsReason(REASON_DESTROY) - and c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp -end -function c76004142.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) -end -function c76004142.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--不運の爆弾 +function c76004142.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e1) + e1:SetCountLimit(1,76004142+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c76004142.target) + e1:SetOperation(c76004142.activate) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c76004142.damcon) + e2:SetTarget(c76004142.damtg) + e2:SetOperation(c76004142.damop) + c:RegisterEffect(e2) +end +function c76004142.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c76004142.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c76004142.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c76004142.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c76004142.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0) +end +function c76004142.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local atk=tc:GetAttack()/2 + local val=Duel.Damage(tp,atk,REASON_EFFECT) + if val>0 and Duel.GetLP(tp)>0 then + Duel.BreakEffect() + Duel.Damage(1-tp,val,REASON_EFFECT) + end + end +end +function c76004142.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return rp~=tp and c:IsReason(REASON_DESTROY) + and c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp +end +function c76004142.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c76004142.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c76066541.lua b/script/c76066541.lua index aa66b7f7..2ff53328 100644 --- a/script/c76066541.lua +++ b/script/c76066541.lua @@ -1,51 +1,60 @@ ---ドラゴンダウザー -function c76066541.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(76066541,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCountLimit(1,76066541) - e1:SetCondition(c76066541.condition) - e1:SetTarget(c76066541.target) - e1:SetOperation(c76066541.operation) - c:RegisterEffect(e1) -end -function c76066541.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return (c:IsReason(REASON_BATTLE) - or rp~=tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp) - and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c76066541.filter(c,e,tp) - return c:IsType(TYPE_PENDULUM) and c:IsAttribute(ATTRIBUTE_EARTH) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c76066541.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c76066541.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c76066541.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,c76066541.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetOperation(c76066541.desop) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end -function c76066541.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--ドラゴンダウザー +function c76066541.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76066541,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCountLimit(1,76066541) + e1:SetCondition(c76066541.condition) + e1:SetTarget(c76066541.target) + e1:SetOperation(c76066541.operation) + c:RegisterEffect(e1) +end +function c76066541.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (c:IsReason(REASON_BATTLE) + or rp~=tp and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp) + and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c76066541.filter(c,e,tp) + return c:IsType(TYPE_PENDULUM) and c:IsAttribute(ATTRIBUTE_EARTH) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c76066541.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c76066541.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c76066541.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,c76066541.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(76066541,RESET_EVENT+0x1fe0000,0,1,fid) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c76066541.descon) + e1:SetOperation(c76066541.desop) + Duel.RegisterEffect(e1,tp) + end +end +function c76066541.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(76066541)~=e:GetLabel() then + e:Reset() + return false + else return true end +end +function c76066541.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetLabelObject(),REASON_EFFECT) +end diff --git a/script/c76067258.lua b/script/c76067258.lua index 06cbc38b..31efd37d 100644 --- a/script/c76067258.lua +++ b/script/c76067258.lua @@ -6,7 +6,7 @@ function c76067258.initial_effect(c) --target local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(76067258,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c7617062.lua b/script/c7617062.lua index 3aaa8c22..d571bf62 100644 --- a/script/c7617062.lua +++ b/script/c7617062.lua @@ -1,73 +1,73 @@ ---ゴーストリック・ミュージアム -function c7617062.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cannot attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(c7617062.ftarget) - c:RegisterEffect(e2) - --atklimit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetValue(c7617062.bttg) - c:RegisterEffect(e3) - --direct attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_DIRECT_ATTACK) - e4:SetRange(LOCATION_FZONE) - e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e4:SetTarget(c7617062.dirtg) - c:RegisterEffect(e4) - --pos - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e5:SetRange(LOCATION_FZONE) - e5:SetCode(EVENT_BATTLE_DAMAGE) - e5:SetOperation(c7617062.regop) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e6:SetRange(LOCATION_FZONE) - e6:SetCode(EVENT_DAMAGE_STEP_END) - e6:SetCondition(c7617062.poscon) - e6:SetOperation(c7617062.posop) - e6:SetLabelObject(e5) - c:RegisterEffect(e6) -end -function c7617062.bttg(e,c) - return c:IsFacedown() -end -function c7617062.dirtg(e,c) - return not Duel.IsExistingMatchingCard(Card.IsFaceup,c:GetControler(),0,LOCATION_MZONE,1,nil) -end -function c7617062.ftarget(e,c) - return not c:IsSetCard(0x8d) -end -function c7617062.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - c:RegisterFlagEffect(7617062,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) - eg:GetFirst():RegisterFlagEffect(7617063,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) -end -function c7617062.poscon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(7617062)>0 -end -function c7617062.filter(c) - return c:GetFlagEffect(7617063)>0 -end -function c7617062.posop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c7617062.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if e:GetHandler():IsRelateToEffect(e) then - Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) - end -end +--ゴーストリック・ミュージアム +function c7617062.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c7617062.ftarget) + c:RegisterEffect(e2) + --atklimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetValue(c7617062.bttg) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e4:SetTarget(c7617062.dirtg) + c:RegisterEffect(e4) + --pos + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetRange(LOCATION_FZONE) + e5:SetCode(EVENT_BATTLE_DAMAGE) + e5:SetOperation(c7617062.regop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetRange(LOCATION_FZONE) + e6:SetCode(EVENT_DAMAGE_STEP_END) + e6:SetCondition(c7617062.poscon) + e6:SetOperation(c7617062.posop) + e6:SetLabelObject(e5) + c:RegisterEffect(e6) +end +function c7617062.bttg(e,c) + return c:IsFacedown() +end +function c7617062.dirtg(e,c) + return not Duel.IsExistingMatchingCard(Card.IsFaceup,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c7617062.ftarget(e,c) + return not c:IsSetCard(0x8d) +end +function c7617062.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(7617062,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) + eg:GetFirst():RegisterFlagEffect(7617063,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c7617062.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(7617062)>0 +end +function c7617062.filter(c) + return c:GetFlagEffect(7617063)>0 +end +function c7617062.posop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c7617062.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if e:GetHandler():IsRelateToEffect(e) then + Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c7617253.lua b/script/c7617253.lua index d29c7fef..8d6aa1d3 100644 --- a/script/c7617253.lua +++ b/script/c7617253.lua @@ -1,48 +1,48 @@ ---虹の行方 -function c7617253.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c7617253.condition) - e1:SetCost(c7617253.cost) - e1:SetTarget(c7617253.target) - e1:SetOperation(c7617253.activate) - c:RegisterEffect(e1) -end -function c7617253.condition(e,tp,eg,ep,ev,re,r,rp) - return tp~=Duel.GetTurnPlayer() -end -function c7617253.costfilter(c) - return c:IsFaceup() and c:IsSetCard(0x1034) and c:IsAbleToGraveAsCost() -end -function c7617253.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c7617253.costfilter,tp,LOCATION_SZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c7617253.costfilter,tp,LOCATION_SZONE,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c7617253.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local tg=Duel.GetAttacker() - if chkc then return chkc==tg end - if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end - Duel.SetTargetCard(tg) -end -function c7617253.filter(c) - return c:IsSetCard(0x2034) and c:IsAbleToHand() -end -function c7617253.activate(e,tp,eg,ep,ev,re,r,rp) - local tg=Duel.GetAttacker() - if not tg:IsRelateToEffect(e) or tg:IsStatus(STATUS_ATTACK_CANCELED) - or not Duel.NegateAttack() then return end - local g=Duel.GetMatchingGroup(c7617253.filter,tp,LOCATION_DECK,0,nil) - if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(7617253,0)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=g:Select(tp,1,1,nil) - Duel.BreakEffect() - Duel.SendtoHand(sg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,sg) - end -end +--虹の行方 +function c7617253.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c7617253.condition) + e1:SetCost(c7617253.cost) + e1:SetTarget(c7617253.target) + e1:SetOperation(c7617253.activate) + c:RegisterEffect(e1) +end +function c7617253.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c7617253.costfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1034) and c:IsAbleToGraveAsCost() +end +function c7617253.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c7617253.costfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c7617253.costfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c7617253.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c7617253.filter(c) + return c:IsSetCard(0x2034) and c:IsAbleToHand() +end +function c7617253.activate(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetAttacker() + if not tg:IsRelateToEffect(e) or tg:IsStatus(STATUS_ATTACK_CANCELED) + or not Duel.NegateAttack() then return end + local g=Duel.GetMatchingGroup(c7617253.filter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(7617253,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,1,1,nil) + Duel.BreakEffect() + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end diff --git a/script/c76214441.lua b/script/c76214441.lua index bd4a38c3..e87aaf26 100644 --- a/script/c76214441.lua +++ b/script/c76214441.lua @@ -34,8 +34,7 @@ function c76214441.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c76214441.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c76218313.lua b/script/c76218313.lua index e1e8a3ed..4aace10e 100644 --- a/script/c76218313.lua +++ b/script/c76218313.lua @@ -1,77 +1,85 @@ ---破壊剣-ドラゴンバスターブレード -function c76218313.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetRange(LOCATION_HAND+LOCATION_MZONE) - e1:SetTarget(c76218313.eqtg) - e1:SetOperation(c76218313.eqop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP+EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(0,1) - e2:SetTarget(c76218313.splimit) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetCountLimit(1,76218313) - e3:SetRange(LOCATION_SZONE) - e3:SetTarget(c76218313.sptg) - e3:SetOperation(c76218313.spop) - c:RegisterEffect(e3) -end -function c76218313.filter(c) - return c:IsFaceup() and c:IsCode(78193831) -end -function c76218313.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c76218313.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c76218313.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c76218313.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c76218313.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c76218313.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) -end -function c76218313.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c76218313.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c76218313.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c76218313.splimit(e,c) - return c:IsLocation(LOCATION_EXTRA) -end +--破壊剣-ドラゴンバスターブレード +function c76218313.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c76218313.eqtg) + e1:SetOperation(c76218313.eqop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(0,1) + e2:SetCondition(c76218313.effcon) + e2:SetTarget(c76218313.splimit) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1,76218313) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c76218313.spcon) + e3:SetTarget(c76218313.sptg) + e3:SetOperation(c76218313.spop) + c:RegisterEffect(e3) +end +function c76218313.filter(c) + return c:IsFaceup() and c:IsCode(78193831) +end +function c76218313.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c76218313.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c76218313.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c76218313.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c76218313.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c76218313.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) +end +function c76218313.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c76218313.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget() +end +function c76218313.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c76218313.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c76218313.effcon(e) + return e:GetHandler():GetEquipTarget() +end +function c76218313.splimit(e,c) + return c:IsLocation(LOCATION_EXTRA) +end diff --git a/script/c76224717.lua b/script/c76224717.lua index 4c36495f..121078a4 100644 --- a/script/c76224717.lua +++ b/script/c76224717.lua @@ -1,97 +1,97 @@ ---アドバンス・ゾーン -function c76224717.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --destroy/draw/salvage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(76224717,0)) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetTarget(c76224717.target) - e2:SetOperation(c76224717.operation) - c:RegisterEffect(e2) - if not c76224717.global_check then - c76224717.global_check=true - c76224717[0]=0 - c76224717[1]=0 - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SUMMON_SUCCESS) - ge1:SetOperation(c76224717.checkop) - Duel.RegisterEffect(ge1,0) - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_MSET) - ge2:SetOperation(c76224717.checkop) - Duel.RegisterEffect(ge2,0) - local ge3=Effect.CreateEffect(c) - ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge3:SetCode(EVENT_PHASE_START+PHASE_DRAW) - ge3:SetOperation(c76224717.clear) - Duel.RegisterEffect(ge3,0) - end -end -function c76224717.checkop(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - if bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE then - c76224717[ep]=c76224717[ep]+tc:GetMaterialCount() - end -end -function c76224717.clear(e,tp,eg,ep,ev,re,r,rp) - c76224717[0]=0 - c76224717[1]=0 -end -function c76224717.filter1(c) - return c:IsFacedown() -end -function c76224717.filter2(c) - return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c76224717.target(e,tp,eg,ep,ev,re,r,rp,chk) - local b1=c76224717[tp]>0 and Duel.IsExistingMatchingCard(c76224717.filter1,tp,0,LOCATION_ONFIELD,1,nil) - local b2=c76224717[tp]>1 and Duel.IsPlayerCanDraw(tp,1) - local b3=c76224717[tp]>2 and Duel.IsExistingMatchingCard(c76224717.filter2,tp,LOCATION_GRAVE,0,1,nil) - if chk==0 then return b1 or b2 or b3 end - if b1 then - local g=Duel.GetMatchingGroup(c76224717.filter1,tp,0,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - end - if b2 then - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) - end - if b3 then - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) - end -end -function c76224717.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local act=false - if c76224717[tp]>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectMatchingCard(tp,c76224717.filter1,tp,0,LOCATION_ONFIELD,1,1,nil) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - act=true - end - end - if c76224717[tp]>1 and Duel.IsPlayerCanDraw(tp,1) then - if act then Duel.BreakEffect() end - Duel.Draw(tp,1,REASON_EFFECT) - act=true - end - if c76224717[tp]>2 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c76224717.filter2,tp,LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 then - if act then Duel.BreakEffect() end - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - end -end +--アドバンス・ゾーン +function c76224717.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy/draw/salvage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(76224717,0)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c76224717.target) + e2:SetOperation(c76224717.operation) + c:RegisterEffect(e2) + if not c76224717.global_check then + c76224717.global_check=true + c76224717[0]=0 + c76224717[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c76224717.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_MSET) + ge2:SetOperation(c76224717.checkop) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge3:SetOperation(c76224717.clear) + Duel.RegisterEffect(ge3,0) + end +end +function c76224717.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if bit.band(tc:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE then + c76224717[ep]=c76224717[ep]+tc:GetMaterialCount() + end +end +function c76224717.clear(e,tp,eg,ep,ev,re,r,rp) + c76224717[0]=0 + c76224717[1]=0 +end +function c76224717.filter1(c) + return c:IsFacedown() +end +function c76224717.filter2(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c76224717.target(e,tp,eg,ep,ev,re,r,rp,chk) + local b1=c76224717[tp]>0 and Duel.IsExistingMatchingCard(c76224717.filter1,tp,0,LOCATION_ONFIELD,1,nil) + local b2=c76224717[tp]>1 and Duel.IsPlayerCanDraw(tp,1) + local b3=c76224717[tp]>2 and Duel.IsExistingMatchingCard(c76224717.filter2,tp,LOCATION_GRAVE,0,1,nil) + if chk==0 then return b1 or b2 or b3 end + if b1 then + local g=Duel.GetMatchingGroup(c76224717.filter1,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + end + if b2 then + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + end + if b3 then + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) + end +end +function c76224717.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local act=false + if c76224717[tp]>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c76224717.filter1,tp,0,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + act=true + end + end + if c76224717[tp]>1 and Duel.IsPlayerCanDraw(tp,1) then + if act then Duel.BreakEffect() end + Duel.Draw(tp,1,REASON_EFFECT) + act=true + end + if c76224717[tp]>2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c76224717.filter2,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + if act then Duel.BreakEffect() end + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c7625614.lua b/script/c7625614.lua index 928ca3e7..6da07ef3 100644 --- a/script/c7625614.lua +++ b/script/c7625614.lua @@ -1,48 +1,20 @@ ---レアゴールド・アーマー -function c7625614.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(c7625614.target) - e1:SetOperation(c7625614.operation) - c:RegisterEffect(e1) - --atk target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCondition(c7625614.atkcon) - e2:SetValue(c7625614.atktg) - c:RegisterEffect(e2) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetValue(1) - c:RegisterEffect(e4) -end -function c7625614.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 c7625614.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 c7625614.atkcon(e) - local ec=e:GetHandler():GetEquipTarget() - return ec and ec:GetControler()==e:GetHandlerPlayer() -end -function c7625614.atktg(e,c) - return c~=e:GetHandler():GetEquipTarget() -end +--レアゴールド・アーマー +function c7625614.initial_effect(c) + aux.AddEquipProcedure(c) + --atk target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c7625614.atkcon) + e2:SetValue(c7625614.atktg) + c:RegisterEffect(e2) +end +function c7625614.atkcon(e) + local ec=e:GetHandler():GetEquipTarget() + return ec and ec:GetControler()==e:GetHandlerPlayer() +end +function c7625614.atktg(e,c) + return c~=e:GetHandler():GetEquipTarget() +end diff --git a/script/c76263644.lua b/script/c76263644.lua index 283786d8..df5af4c4 100644 --- a/script/c76263644.lua +++ b/script/c76263644.lua @@ -29,6 +29,7 @@ function c76263644.initial_effect(c) e3:SetOperation(c76263644.spop) c:RegisterEffect(e3) end +c76263644.material_setcode=0x8 function c76263644.descost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 end local e1=Effect.CreateEffect(e:GetHandler()) diff --git a/script/c7634581.lua b/script/c7634581.lua index a1169fa5..56bc0fd6 100644 --- a/script/c7634581.lua +++ b/script/c7634581.lua @@ -1,59 +1,59 @@ ---オレイカルコス・シュノロス -function c7634581.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(7634581,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetCondition(c7634581.spcon) - e1:SetTarget(c7634581.sptg) - e1:SetOperation(c7634581.spop) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(c7634581.value) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(c7634581.efilter) - e3:SetValue(1) - c:RegisterEffect(e3) -end -function c7634581.value(e,c) - return Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)*1000 -end -function c7634581.efilter(e,c) - return c:IsType(TYPE_NORMAL) and c:GetLevel()==4 -end -function c7634581.cfilter(c,tp) - return bit.band(c:GetPreviousTypeOnField(),TYPE_NORMAL)~=0 and c:GetPreviousControler()==tp -end -function c7634581.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c7634581.cfilter,1,nil,tp) -end -function c7634581.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c7634581.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then - c:CompleteProcedure() - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--オレイカルコス・シュノロス +function c7634581.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7634581,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c7634581.spcon) + e1:SetTarget(c7634581.sptg) + e1:SetOperation(c7634581.spop) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c7634581.value) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c7634581.efilter) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c7634581.value(e,c) + return Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)*1000 +end +function c7634581.efilter(e,c) + return c:IsType(TYPE_NORMAL) and c:GetLevel()==4 +end +function c7634581.cfilter(c,tp) + return bit.band(c:GetPreviousTypeOnField(),TYPE_NORMAL)~=0 and c:GetPreviousControler()==tp +end +function c7634581.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c7634581.cfilter,1,nil,tp) +end +function c7634581.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c7634581.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then + c:CompleteProcedure() + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c76372778.lua b/script/c76372778.lua index f52aa26b..7aea26ee 100644 --- a/script/c76372778.lua +++ b/script/c76372778.lua @@ -8,6 +8,7 @@ function c76372778.initial_effect(c) e1:SetDescription(aux.Stringid(76372778,0)) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_BATTLED) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCondition(c76372778.condition) e1:SetCost(c76372778.cost) e1:SetOperation(c76372778.operation) diff --git a/script/c76403456.lua b/script/c76403456.lua new file mode 100644 index 00000000..e2c04128 --- /dev/null +++ b/script/c76403456.lua @@ -0,0 +1,36 @@ +--パワー・ウォール +function c76403456.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DECKDES) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c76403456.condition) + e1:SetTarget(c76403456.target) + e1:SetOperation(c76403456.activate) + c:RegisterEffect(e1) +end +function c76403456.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c76403456.target(e,tp,eg,ep,ev,re,r,rp,chk) + local val=math.ceil(Duel.GetBattleDamage(tp)/500) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,val) + and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_AVOID_BATTLE_DAMAGE) end + Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,g) +end +function c76403456.activate(e,tp,eg,ep,ev,re,r,rp) + local val=math.ceil(Duel.GetBattleDamage(tp)/500) + Duel.DiscardDeck(tp,val,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + if og:FilterCount(Card.IsLocation,nil,LOCATION_GRAVE)0 then - local spos=0 - if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then spos=spos+POS_FACEUP_ATTACK end - if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) then spos=spos+POS_FACEDOWN_DEFENSE end - if spos~=0 then Duel.SpecialSummon(tc,0,tp,tp,false,false,spos) end - end -end +--子型ペンギン +function c76442347.initial_effect(c) + --flip effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_FLIP) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetOperation(c76442347.flipop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(76442347,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c76442347.spcon) + e2:SetTarget(c76442347.sptg) + e2:SetOperation(c76442347.spop) + c:RegisterEffect(e2) +end +function c76442347.flipop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(76442347,RESET_EVENT+0x57a0000,0,0) +end +function c76442347.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(76442347)~=0 +end +function c76442347.filter(c,e,tp) + return c:IsSetCard(0x5a) and c:GetCode()~=76442347 + and (c:IsCanBeSpecialSummoned(e,0,tp,false,false) + or c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN)) +end +function c76442347.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c76442347.filter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c76442347.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler(),e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c76442347.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + local spos=0 + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then spos=spos+POS_FACEUP_ATTACK end + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) then spos=spos+POS_FACEDOWN_DEFENSE end + if spos~=0 then Duel.SpecialSummon(tc,0,tp,tp,false,false,spos) end + end +end diff --git a/script/c76442616.lua b/script/c76442616.lua index e554ca73..9d3e0850 100644 --- a/script/c76442616.lua +++ b/script/c76442616.lua @@ -1,37 +1,37 @@ ---HERO'S ボンド -function c76442616.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c76442616.condition) - e1:SetTarget(c76442616.target) - e1:SetOperation(c76442616.activate) - c:RegisterEffect(e1) -end -function c76442616.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x8) -end -function c76442616.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c76442616.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) -end -function c76442616.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c76442616.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingMatchingCard(c76442616.filter,tp,LOCATION_HAND,0,2,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) -end -function c76442616.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 then return end - local g=Duel.GetMatchingGroup(c76442616.filter,tp,LOCATION_HAND,0,nil,e,tp) - if g:GetCount()>=2 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,2,2,nil) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - end -end +--HERO'S ボンド +function c76442616.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c76442616.condition) + e1:SetTarget(c76442616.target) + e1:SetOperation(c76442616.activate) + c:RegisterEffect(e1) +end +function c76442616.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x8) +end +function c76442616.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c76442616.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) +end +function c76442616.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c76442616.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c76442616.filter,tp,LOCATION_HAND,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND) +end +function c76442616.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 then return end + local g=Duel.GetMatchingGroup(c76442616.filter,tp,LOCATION_HAND,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c76459806.lua b/script/c76459806.lua index a9cc08dd..567d7314 100644 --- a/script/c76459806.lua +++ b/script/c76459806.lua @@ -25,8 +25,8 @@ function c76459806.tg(e,tp,eg,ep,ev,re,r,rp,chk) end function c76459806.op(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c76459806.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c76459806.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c76473843.lua b/script/c76473843.lua index 095c4ea7..ee043b90 100644 --- a/script/c76473843.lua +++ b/script/c76473843.lua @@ -1,55 +1,55 @@ ---マジェスティックP -function c76473843.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk/def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xd0)) - e2:SetValue(300) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(76473843,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_FZONE) - e4:SetCountLimit(1,76473843) - e4:SetCost(c76473843.spcost) - e4:SetTarget(c76473843.sptg) - e4:SetOperation(c76473843.spop) - c:RegisterEffect(e4) -end -function c76473843.cfilter(c) - return c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_WIND) -end -function c76473843.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c76473843.cfilter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c76473843.cfilter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c76473843.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c76473843.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c76473843.spfilter(c,e,tp) - return c:IsSetCard(0xd0) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c76473843.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c76473843.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--マジェスティックP +function c76473843.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk/def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xd0)) + e2:SetValue(300) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(76473843,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetCountLimit(1,76473843) + e4:SetCost(c76473843.spcost) + e4:SetTarget(c76473843.sptg) + e4:SetOperation(c76473843.spop) + c:RegisterEffect(e4) +end +function c76473843.cfilter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsAttribute(ATTRIBUTE_WIND) +end +function c76473843.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c76473843.cfilter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c76473843.cfilter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c76473843.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c76473843.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c76473843.spfilter(c,e,tp) + return c:IsSetCard(0xd0) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c76473843.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c76473843.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c76547525.lua b/script/c76547525.lua index eecefc3b..8905310c 100644 --- a/script/c76547525.lua +++ b/script/c76547525.lua @@ -1,48 +1,48 @@ ---レッド・ワイバーン -function c76547525.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --Destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(76547525,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c76547525.descon) - e1:SetTarget(c76547525.destg) - e1:SetOperation(c76547525.desop) - c:RegisterEffect(e1) -end -function c76547525.cfilter(c,atk) - return c:IsFaceup() and c:GetAttack()>atk -end -function c76547525.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO - and Duel.IsExistingMatchingCard(c76547525.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) -end -function c76547525.desfilter(c) - return c:IsFaceup() -end -function c76547525.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c76547525.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(c76547525.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local tg=g:GetMaxGroup(Card.GetAttack) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) -end -function c76547525.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c76547525.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()>0 then - local tg=g:GetMaxGroup(Card.GetAttack) - if tg:GetCount()>1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local sg=tg:Select(tp,1,1,nil) - Duel.HintSelection(sg) - Duel.Destroy(sg,REASON_EFFECT) - else Duel.Destroy(tg,REASON_EFFECT) end - end -end +--レッド・ワイバーン +function c76547525.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --Destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76547525,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c76547525.descon) + e1:SetTarget(c76547525.destg) + e1:SetOperation(c76547525.desop) + c:RegisterEffect(e1) +end +function c76547525.cfilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk +end +function c76547525.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO + and Duel.IsExistingMatchingCard(c76547525.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) +end +function c76547525.desfilter(c) + return c:IsFaceup() +end +function c76547525.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c76547525.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c76547525.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tg=g:GetMaxGroup(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c76547525.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c76547525.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tg=g:GetMaxGroup(Card.GetAttack) + if tg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=tg:Select(tp,1,1,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + else Duel.Destroy(tg,REASON_EFFECT) end + end +end diff --git a/script/c76573247.lua b/script/c76573247.lua index 5d2087ff..caa8462d 100644 --- a/script/c76573247.lua +++ b/script/c76573247.lua @@ -1,48 +1,48 @@ ---エーリアン・ベーダー -function c76573247.initial_effect(c) - --counter - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(76573247,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c76573247.seqcon) - e1:SetOperation(c76573247.seqop) - c:RegisterEffect(e1) - --direct attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DIRECT_ATTACK) - e2:SetCondition(c76573247.dircon) - c:RegisterEffect(e2) -end -function c76573247.seqcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - return (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) - or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) -end -function c76573247.seqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsControler(1-tp) then return end - local seq=c:GetSequence() - if (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) - or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) then - local flag=0 - if seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1) then flag=bit.bor(flag,bit.lshift(0x1,seq-1)) end - if seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1) then flag=bit.bor(flag,bit.lshift(0x1,seq+1)) end - flag=bit.bxor(flag,0xff) - local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag) - local nseq=0 - if s==1 then nseq=0 - elseif s==2 then nseq=1 - elseif s==4 then nseq=2 - elseif s==8 then nseq=3 - else nseq=4 end - Duel.MoveSequence(c,nseq) - end -end -function c76573247.dircon(e) - local p=1-e:GetHandlerPlayer() - local seq=4-e:GetHandler():GetSequence() - return Duel.GetFieldCard(p,LOCATION_MZONE,seq)==nil and Duel.GetFieldCard(p,LOCATION_SZONE,seq)==nil -end +--エーリアン・ベーダー +function c76573247.initial_effect(c) + --counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76573247,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c76573247.seqcon) + e1:SetOperation(c76573247.seqop) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetCondition(c76573247.dircon) + c:RegisterEffect(e2) +end +function c76573247.seqcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + return (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) + or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) +end +function c76573247.seqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsControler(1-tp) then return end + local seq=c:GetSequence() + if (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) + or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) then + local flag=0 + if seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1) then flag=bit.bor(flag,bit.lshift(0x1,seq-1)) end + if seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1) then flag=bit.bor(flag,bit.lshift(0x1,seq+1)) end + flag=bit.bxor(flag,0xff) + local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag) + local nseq=0 + if s==1 then nseq=0 + elseif s==2 then nseq=1 + elseif s==4 then nseq=2 + elseif s==8 then nseq=3 + else nseq=4 end + Duel.MoveSequence(c,nseq) + end +end +function c76573247.dircon(e) + local p=1-e:GetHandlerPlayer() + local seq=4-e:GetHandler():GetSequence() + return Duel.GetFieldCard(p,LOCATION_MZONE,seq)==nil and Duel.GetFieldCard(p,LOCATION_SZONE,seq)==nil +end diff --git a/script/c76589815.lua b/script/c76589815.lua index d0d90c3e..c78b0c7c 100644 --- a/script/c76589815.lua +++ b/script/c76589815.lua @@ -21,6 +21,7 @@ function c76589815.initial_effect(c) e3:SetDescription(aux.Stringid(76589815,0)) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetRange(LOCATION_MZONE) e3:SetCondition(c76589815.cfcon) e3:SetCost(c76589815.cfcost) diff --git a/script/c76614340.lua b/script/c76614340.lua index b9c88ff2..79de7b9e 100644 --- a/script/c76614340.lua +++ b/script/c76614340.lua @@ -1,50 +1,50 @@ ---ジェムナイト・ルビーズ -function c76614340.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,91731841,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),1,false,false) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(c76614340.splimit) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(76614340,0)) - e3:SetCategory(CATEGORY_ATKCHANGE) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCost(c76614340.atkcost) - e3:SetOperation(c76614340.atkop) - c:RegisterEffect(e3) - --pierce - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e4) -end -function c76614340.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c76614340.costfilter(c) - return c:IsFaceup() and c:IsSetCard(0x47) -end -function c76614340.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c76614340.costfilter,1,e:GetHandler()) end - local rg=Duel.SelectReleaseGroup(tp,c76614340.costfilter,1,1,e:GetHandler()) - e:SetLabel(rg:GetFirst():GetAttack()) - Duel.Release(rg,REASON_COST) -end -function c76614340.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end +--ジェムナイト・ルビーズ +function c76614340.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,91731841,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),1,false,false) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(c76614340.splimit) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(76614340,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c76614340.atkcost) + e3:SetOperation(c76614340.atkop) + c:RegisterEffect(e3) + --pierce + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e4) +end +function c76614340.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c76614340.costfilter(c) + return c:IsFaceup() and c:IsSetCard(0x47) +end +function c76614340.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c76614340.costfilter,1,e:GetHandler()) end + local rg=Duel.SelectReleaseGroup(tp,c76614340.costfilter,1,1,e:GetHandler()) + e:SetLabel(rg:GetFirst():GetAttack()) + Duel.Release(rg,REASON_COST) +end +function c76614340.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c76647978.lua b/script/c76647978.lua new file mode 100644 index 00000000..25684b42 --- /dev/null +++ b/script/c76647978.lua @@ -0,0 +1,147 @@ +--超越融合 +--Transcendental Polymerization +--Scripted by Eerie Code +function c76647978.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76647978,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c76647978.cost) + e1:SetTarget(c76647978.target) + e1:SetOperation(c76647978.activate) + c:RegisterEffect(e1) + --Summon Materials + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(76647978,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCost(c76647978.spcost) + e2:SetTarget(c76647978.sptg) + e2:SetOperation(c76647978.spop) + c:RegisterEffect(e2) +end +function c76647978.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) end + Duel.PayLPCost(tp,2000) +end +function c76647978.filter0(c,e,tp,mg) + return mg:IsExists(c76647978.filter1,1,nil,e,tp,c) +end +function c76647978.filter1(c,e,tp,mc) + local mg=Group.FromCards(c,mc) + return Duel.IsExistingMatchingCard(c76647978.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg) +end +function c76647978.filter2(c,e,tp,mg) + return c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(mg,nil) +end +function c76647978.target(e,tp,eg,ep,ev,re,r,rp,chk) + local mg=nil + if Duel.GetFusionMaterial then + mg=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) + else + mg=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) + end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and mg:IsExists(c76647978.filter0,1,nil,e,tp,mg) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + Duel.SetChainLimit(aux.FALSE) + end +end +function c76647978.filter3(c,e,tp,mg) + return not c:IsImmuneToEffect(e) and mg:IsExists(c76647978.filter4,1,c,e,tp,c) +end +function c76647978.filter4(c,e,tp,mc) + local mg=Group.FromCards(c,mc) + return not c:IsImmuneToEffect(e) and Duel.IsExistingMatchingCard(c76647978.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg) +end +function c76647978.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return end + local mg=nil + if Duel.GetFusionMaterial then + mg=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) + else + mg=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(tp,c76647978.filter3,1,1,nil,e,tp,mg) + if g1:GetCount()==0 then return end + local tc1=g1:GetFirst() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(tp,c76647978.filter4,1,1,tc1,e,tp,tc1) + g1:Merge(g2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c76647978.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,g1) + local tc=sg:GetFirst() + tc:SetMaterial(g1) + Duel.SendtoGrave(g1,REASON_MATERIAL+REASON_FUSION+REASON_EFFECT) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(76647978,RESET_EVENT+0x1fe0000,0,1) + tc:CompleteProcedure() +end +function c76647978.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c76647978.mgfilter(c,e,tp,fusc,mg) + return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) + or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc + or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) + or not fusc:CheckFusionMaterial(mg,c) +end +function c76647978.spfilter(c,e,tp,lc) + if c:IsFaceup() and c:GetFlagEffect(76647978)~=0 then + local mg=c:GetMaterial() + return mg:GetCount()>0 and mg:GetCount()<=lc + and not mg:IsExists(c76647978.mgfilter,1,nil,e,tp,c,mg) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + else return false end +end +function c76647978.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local lc=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c76647978.spfilter(chkc,e,tp,lc) end + if chk==0 then return Duel.IsExistingTarget(c76647978.spfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e,tp,lc) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c76647978.spfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,e,tp,lc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_GRAVE) +end +function c76647978.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local mg=tc:GetMaterial() + if mg:GetCount()>0 and mg:GetCount()<=Duel.GetLocationCount(tp,LOCATION_MZONE) + and not mg:IsExists(c76647978.mgfilter,1,nil,e,tp,tc) and not Duel.IsPlayerAffectedByEffect(tp,59822133) then + local sc=mg:GetFirst() + while sc do + if Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + sc:RegisterEffect(e4,true) + end + sc=mg:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c76714458.lua b/script/c76714458.lua index 2dae2067..761e373f 100644 --- a/script/c76714458.lua +++ b/script/c76714458.lua @@ -1,31 +1,31 @@ ---痛魂の呪術 -function c76714458.initial_effect(c) - --reflect - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c76714458.condition) - e1:SetOperation(c76714458.operation) - c:RegisterEffect(e1) -end -function c76714458.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) -end -function c76714458.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_REFLECT_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetLabel(cid) - e1:SetValue(c76714458.refcon) - e1:SetReset(RESET_CHAIN) - Duel.RegisterEffect(e1,tp) -end -function c76714458.refcon(e,re,val,r,rp,rc) - local cc=Duel.GetCurrentChain() - if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end - local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) - return cid==e:GetLabel() -end +--痛魂の呪術 +function c76714458.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c76714458.condition) + e1:SetOperation(c76714458.operation) + c:RegisterEffect(e1) +end +function c76714458.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and aux.damcon1(e,tp,eg,ep,ev,re,r,rp) +end +function c76714458.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_REFLECT_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetLabel(cid) + e1:SetValue(c76714458.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c76714458.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + return cid==e:GetLabel() +end diff --git a/script/c76751255.lua b/script/c76751255.lua index f78d6403..33d20108 100644 --- a/script/c76751255.lua +++ b/script/c76751255.lua @@ -1,41 +1,41 @@ ---イグナイト・リロード -function c76751255.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:SetCountLimit(1,76751255+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c76751255.target) - e1:SetOperation(c76751255.activate) - c:RegisterEffect(e1) -end -function c76751255.filter(c) - return c:IsType(TYPE_PENDULUM) and c:IsAbleToDeck() and not c:IsPublic() -end -function c76751255.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp) - and Duel.IsExistingMatchingCard(c76751255.filter,tp,LOCATION_HAND,0,1,e:GetHandler()) end - Duel.SetTargetPlayer(tp) - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) -end -function c76751255.activate(e,tp,eg,ep,ev,re,r,rp) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(p,c76751255.filter,p,LOCATION_HAND,0,1,63,nil) - if g:GetCount()>0 then - Duel.ConfirmCards(1-p,g) - local ct=Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - Duel.ShuffleDeck(p) - Duel.BreakEffect() - Duel.Draw(p,ct+1,REASON_EFFECT) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_DRAW) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end +--イグナイト・リロード +function c76751255.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:SetCountLimit(1,76751255+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c76751255.target) + e1:SetOperation(c76751255.activate) + c:RegisterEffect(e1) +end +function c76751255.filter(c) + return c:IsType(TYPE_PENDULUM) and c:IsAbleToDeck() and not c:IsPublic() +end +function c76751255.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp) + and Duel.IsExistingMatchingCard(c76751255.filter,tp,LOCATION_HAND,0,1,e:GetHandler()) end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) +end +function c76751255.activate(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(p,c76751255.filter,p,LOCATION_HAND,0,1,63,nil) + if g:GetCount()>0 then + Duel.ConfirmCards(1-p,g) + local ct=Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(p) + Duel.BreakEffect() + Duel.Draw(p,ct+1,REASON_EFFECT) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c76754619.lua b/script/c76754619.lua index 381adc06..8e7794db 100644 --- a/script/c76754619.lua +++ b/script/c76754619.lua @@ -1,49 +1,49 @@ ---ピラミッドパワー -function c76754619.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c76754619.condition) - e1:SetTarget(c76754619.target) - e1:SetOperation(c76754619.operation) - c:RegisterEffect(e1) -end -function c76754619.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c76754619.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end - local op=Duel.SelectOption(tp,aux.Stringid(76754619,0),aux.Stringid(76754619,1)) - e:SetLabel(op) -end -function c76754619.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) - if g:GetCount()==0 then return end - if e:GetLabel()==0 then - local sc=g:GetFirst() - while sc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(200) - sc:RegisterEffect(e1) - sc=g:GetNext() - end - else - local sc=g:GetFirst() - while sc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_DEFENSE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(500) - sc:RegisterEffect(e1) - sc=g:GetNext() - end - end -end +--ピラミッドパワー +function c76754619.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c76754619.condition) + e1:SetTarget(c76754619.target) + e1:SetOperation(c76754619.operation) + c:RegisterEffect(e1) +end +function c76754619.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c76754619.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + local op=Duel.SelectOption(tp,aux.Stringid(76754619,0),aux.Stringid(76754619,1)) + e:SetLabel(op) +end +function c76754619.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + if g:GetCount()==0 then return end + if e:GetLabel()==0 then + local sc=g:GetFirst() + while sc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(200) + sc:RegisterEffect(e1) + sc=g:GetNext() + end + else + local sc=g:GetFirst() + while sc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(500) + sc:RegisterEffect(e1) + sc=g:GetNext() + end + end +end diff --git a/script/c76792184.lua b/script/c76792184.lua index e13b316b..0c20d233 100644 --- a/script/c76792184.lua +++ b/script/c76792184.lua @@ -1,4 +1,4 @@ ---カオス-黒魔術の儀式 -function c76792184.initial_effect(c) - aux.AddRitualProcGreaterCode(c,30208479) -end +--カオス-黒魔術の儀式 +function c76792184.initial_effect(c) + aux.AddRitualProcGreaterCode(c,30208479) +end diff --git a/script/c76794549.lua b/script/c76794549.lua new file mode 100644 index 00000000..3dc58af6 --- /dev/null +++ b/script/c76794549.lua @@ -0,0 +1,172 @@ +--アストログラフ・マジシャン +function c76794549.initial_effect(c) + aux.EnablePendulumAttribute(c) + --pendulum set/spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76794549,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1,76794549) + e1:SetTarget(c76794549.rptg) + e1:SetOperation(c76794549.rpop) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(76794549,3)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c76794549.spcon) + e2:SetTarget(c76794549.sptg) + e2:SetOperation(c76794549.spop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(76794549,5)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c76794549.hncost) + e3:SetTarget(c76794549.hntg) + e3:SetOperation(c76794549.hnop) + c:RegisterEffect(e3) +end +function c76794549.rpfilter(c,e,tp) + return c:IsCode(94415058) and (not c:IsForbidden() + or (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false))) +end +function c76794549.rptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c76794549.rpfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c76794549.rpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Destroy(c,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(76794549,6)) + local g=Duel.SelectMatchingCard(tp,c76794549.rpfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + local op=0 + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then + op=Duel.SelectOption(tp,aux.Stringid(76794549,1),aux.Stringid(76794549,2)) + else + op=Duel.SelectOption(tp,aux.Stringid(76794549,1)) + end + if op==0 then + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + else + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + end +end +function c76794549.spcfilter(c,tp) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) + and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c76794549.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c76794549.spcfilter,1,nil,tp) +end +function c76794549.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c76794549.thfilter1(c,tp,id) + return c:IsType(TYPE_MONSTER) and c:IsReason(REASON_DESTROY) and c:GetTurnID()==id + and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) + and Duel.IsExistingMatchingCard(c76794549.thfilter2,tp,LOCATION_DECK,0,1,nil,c:GetCode()) +end +function c76794549.thfilter2(c,code) + return c:IsCode(code) and c:IsAbleToHand() +end +function c76794549.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + local g=Duel.GetMatchingGroup(c76794549.thfilter1,tp,0x70,0x70,nil,tp,Duel.GetTurnCount()) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(76794549,4)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(76794549,7)) + local cg=g:Select(tp,1,1,nil) + Duel.HintSelection(cg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectMatchingCard(tp,c76794549.thfilter2,tp,LOCATION_DECK,0,1,1,nil,cg:GetFirst():GetCode()) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c76794549.cfilter(c) + return (c:IsSetCard(0x10f2) or c:IsSetCard(0x2073) or c:IsSetCard(0x2017) or c:IsSetCard(0x1046)) + and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c76794549.cfilter1(c,g,ft) + local mg=g:Clone() + mg:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return c:IsSetCard(0x10f2) and mg:IsExists(c76794549.cfilter2,1,nil,mg,ft) +end +function c76794549.cfilter2(c,g,ft) + local mg=g:Clone() + mg:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return c:IsSetCard(0x2073) and mg:IsExists(c76794549.cfilter3,1,nil,mg,ft) +end +function c76794549.cfilter3(c,g,ft) + local mg=g:Clone() + mg:RemoveCard(c) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return c:IsSetCard(0x2017) and mg:IsExists(c76794549.cfilter4,1,nil,ft) +end +function c76794549.cfilter4(c,ft) + if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end + return c:IsSetCard(0x1046) and ft>0 +end +function c76794549.hncost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local mg=Duel.GetMatchingGroup(c76794549.cfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,nil) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if chk==0 then return c:IsAbleToRemoveAsCost() + and mg:IsExists(c76794549.cfilter1,1,nil,mg,ft+1) end + local g=Group.FromCards(c) + ft=ft+1 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rc1=mg:FilterSelect(tp,c76794549.cfilter1,1,1,nil,mg,ft):GetFirst() + g:AddCard(rc1) + mg:RemoveCard(rc1) + if rc1:IsLocation(LOCATION_MZONE) then ft=ft+1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rc2=mg:FilterSelect(tp,c76794549.cfilter2,1,1,nil,mg,ft):GetFirst() + g:AddCard(rc2) + mg:RemoveCard(rc2) + if rc2:IsLocation(LOCATION_MZONE) then ft=ft+1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rc3=mg:FilterSelect(tp,c76794549.cfilter3,1,1,nil,mg,ft):GetFirst() + g:AddCard(rc3) + mg:RemoveCard(rc3) + if rc3:IsLocation(LOCATION_MZONE) then ft=ft+1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rc4=mg:FilterSelect(tp,c76794549.cfilter4,1,1,nil,ft):GetFirst() + g:AddCard(rc4) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c76794549.hnfilter(c,e,tp) + return c:IsCode(13331639) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c76794549.hntg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c76794549.hnfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c76794549.hnop(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,c76794549.hnfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c76806714.lua b/script/c76806714.lua index 420e5eef..5677787d 100644 --- a/script/c76806714.lua +++ b/script/c76806714.lua @@ -1,4 +1,4 @@ ---亀の誓い -function c76806714.initial_effect(c) - aux.AddRitualProcGreaterCode(c,91782219) -end +--亀の誓い +function c76806714.initial_effect(c) + aux.AddRitualProcGreaterCode(c,91782219) +end diff --git a/script/c76815942.lua b/script/c76815942.lua new file mode 100644 index 00000000..9e023172 --- /dev/null +++ b/script/c76815942.lua @@ -0,0 +1,101 @@ +--LL-インディペンデント・ナイチンゲール +--Lyrical Luscinia - Independent Nightingale +--Scripted by Eerie Code +function c76815942.initial_effect(c) + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,48608796,c76815942.ffilter,1,true,true) + --increase level + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76815942,0)) + e1:SetCategory(CATEGORY_LVCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c76815942.lvcon) + e1:SetOperation(c76815942.lvop) + c:RegisterEffect(e1) + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_MATERIAL_CHECK) + e0:SetValue(c76815942.valcheck) + e0:SetLabelObject(e1) + c:RegisterEffect(e0) + --immune + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c76815942.efilter) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c76815942.atkval) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(76815942,1)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCountLimit(1) + e4:SetTarget(c76815942.damtg) + e4:SetOperation(c76815942.damop) + c:RegisterEffect(e4) +end +function c76815942.ffilter(c) + return c:IsFusionSetCard(0xf7) or c:IsFusionCode(8491961) +end +function c76815942.matval(c) + local b + if Card.IsOriginalSetCard then + b=c:IsOriginalSetCard(0xf7) + else + b=c:IsSetCard(0xf7) + end + if (b or c:GetOriginalCode()==8491961) and c:IsType(TYPE_XYZ) then + return c:GetOverlayCount() + end + return 0 +end +function c76815942.valcheck(e,c) + local val=c:GetMaterial():GetSum(c76815942.matval) + e:GetLabelObject():SetLabel(val) +end +function c76815942.lvcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and e:GetLabel()>0 +end +function c76815942.lvop(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:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c76815942.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c76815942.atkval(e,c) + return c:GetLevel()*500 +end +function c76815942.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetHandler():GetLevel()*500) +end +function c76815942.damop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,c:GetLevel()*500,REASON_EFFECT) + end +end diff --git a/script/c76930964.lua b/script/c76930964.lua index 77abba31..c7d038a7 100644 --- a/script/c76930964.lua +++ b/script/c76930964.lua @@ -1,74 +1,74 @@ ---黄昏の忍者将軍-ゲツガ -function c76930964.initial_effect(c) - --normal summon with 1 tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(76930964,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SUMMON_PROC) - e1:SetCondition(c76930964.otcon) - e1:SetOperation(c76930964.otop) - e1:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_PROC) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,76930964) - e3:SetCondition(c76930964.spcon) - e3:SetTarget(c76930964.sptg) - e3:SetOperation(c76930964.spop) - c:RegisterEffect(e3) -end -function c76930964.otfilter(c,tp) - return c:IsSetCard(0x2b) and (c:IsControler(tp) or c:IsFaceup()) -end -function c76930964.otcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local mg=Duel.GetMatchingGroup(c76930964.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 -end -function c76930964.otop(e,tp,eg,ep,ev,re,r,rp,c) - local mg=Duel.GetMatchingGroup(c76930964.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - local sg=Duel.SelectTribute(tp,c,1,1,mg) - c:SetMaterial(sg) - Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) -end -function c76930964.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) -end -function c76930964.filter(c,e,tp) - return c:IsSetCard(0x2b) and not c:IsCode(76930964) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c76930964.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c76930964.filter(chkc,e,tp) end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c76930964.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c76930964.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) -end -function c76930964.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsDefensePos() then return end - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()==0 then return end - if g:GetCount()>ft then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,ft,ft,nil) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - else - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--黄昏の忍者将軍-ゲツガ +function c76930964.initial_effect(c) + --normal summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76930964,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c76930964.otcon) + e1:SetOperation(c76930964.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_PROC) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,76930964) + e3:SetCondition(c76930964.spcon) + e3:SetTarget(c76930964.sptg) + e3:SetOperation(c76930964.spop) + c:RegisterEffect(e3) +end +function c76930964.otfilter(c,tp) + return c:IsSetCard(0x2b) and (c:IsControler(tp) or c:IsFaceup()) +end +function c76930964.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + local mg=Duel.GetMatchingGroup(c76930964.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) +end +function c76930964.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c76930964.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) + local sg=Duel.SelectTribute(tp,c,1,1,mg) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c76930964.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) +end +function c76930964.filter(c,e,tp) + return c:IsSetCard(0x2b) and not c:IsCode(76930964) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c76930964.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c76930964.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c76930964.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c76930964.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c76930964.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsDefensePos() then return end + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 or (g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if g:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,ft,ft,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + else + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c76986005.lua b/script/c76986005.lua index 2565b885..eb7d9400 100644 --- a/script/c76986005.lua +++ b/script/c76986005.lua @@ -1,33 +1,33 @@ ---サイバー・ジラフ -function c76986005.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(76986005,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c76986005.cost) - e1:SetOperation(c76986005.operation) - c:RegisterEffect(e1) -end -function c76986005.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c76986005.operation(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(c76986005.damval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) -end -function c76986005.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 - else return val end -end +--サイバー・ジラフ +function c76986005.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(76986005,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c76986005.cost) + e1:SetOperation(c76986005.operation) + c:RegisterEffect(e1) +end +function c76986005.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c76986005.operation(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(c76986005.damval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c76986005.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end diff --git a/script/c77007920.lua b/script/c77007920.lua index 45c0edf2..f7add5ac 100644 --- a/script/c77007920.lua +++ b/script/c77007920.lua @@ -1,14 +1,6 @@ --レーザー砲機甲鎧 function c77007920.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(c77007920.target) - e1:SetOperation(c77007920.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_INSECT)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -18,30 +10,4 @@ function c77007920.initial_effect(c) local e3=e2:Clone() e3:SetCode(EFFECT_UPDATE_DEFENSE) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c77007920.eqlimit) - c:RegisterEffect(e4) -end -function c77007920.eqlimit(e,c) - return c:IsRace(RACE_INSECT) -end -function c77007920.filter(c) - return c:IsFaceup() and c:IsRace(RACE_INSECT) -end -function c77007920.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c77007920.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c77007920.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c77007920.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c77007920.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 diff --git a/script/c77027445.lua b/script/c77027445.lua index 8b3fbb09..8bb613b0 100644 --- a/script/c77027445.lua +++ b/script/c77027445.lua @@ -1,14 +1,6 @@ --ポセイドンの力 function c77027445.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(c77027445.target) - e1:SetOperation(c77027445.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_AQUA)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c77027445.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c77027445.eqlimit) - c:RegisterEffect(e4) -end -function c77027445.eqlimit(e,c) - return c:IsRace(RACE_AQUA) -end -function c77027445.filter(c) - return c:IsFaceup() and c:IsRace(RACE_AQUA) -end -function c77027445.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c77027445.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c77027445.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c77027445.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c77027445.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 diff --git a/script/c770365.lua b/script/c770365.lua index 2015ced6..1aea2be5 100644 --- a/script/c770365.lua +++ b/script/c770365.lua @@ -15,6 +15,7 @@ function c770365.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(770365,0)) e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) e2:SetCost(c770365.cost) diff --git a/script/c77084837.lua b/script/c77084837.lua index 2ef9692b..7986f751 100644 --- a/script/c77084837.lua +++ b/script/c77084837.lua @@ -1,22 +1,22 @@ ---因幡之白兎 -function c77084837.initial_effect(c) - --spirit return - aux.EnableSpiritReturn(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) - c:RegisterEffect(e1) - --attack limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DIRECT_ATTACK) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e5:SetValue(1) - c:RegisterEffect(e5) -end +--因幡之白兎 +function c77084837.initial_effect(c) + --spirit return + aux.EnableSpiritReturn(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --attack limit + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) +end diff --git a/script/c77116346.lua b/script/c77116346.lua index af954dab..7b7a0b39 100644 --- a/script/c77116346.lua +++ b/script/c77116346.lua @@ -1,61 +1,61 @@ ---ダイナミスト・チャージ -function c77116346.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,77116346+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c77116346.target) - e1:SetOperation(c77116346.activate) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_TO_DECK) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCondition(c77116346.thcon) - e2:SetTarget(c77116346.thtg) - e2:SetOperation(c77116346.thop) - c:RegisterEffect(e2) -end -function c77116346.filter(c) - return c:IsSetCard(0xd8) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c77116346.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c77116346.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c77116346.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c77116346.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c77116346.thfilter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_EXTRA) and c:IsSetCard(0xd8) - and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c77116346.thcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c77116346.thfilter,1,nil,tp) -end -function c77116346.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=eg:Filter(c77116346.thfilter,nil,tp) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c77116346.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local rg=g:Select(tp,1,1,nil) - if rg:GetCount()>0 then - Duel.SendtoHand(rg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,rg) - end -end +--ダイナミスト・チャージ +function c77116346.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,77116346+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c77116346.target) + e1:SetOperation(c77116346.activate) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_TO_DECK) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c77116346.thcon) + e2:SetTarget(c77116346.thtg) + e2:SetOperation(c77116346.thop) + c:RegisterEffect(e2) +end +function c77116346.filter(c) + return c:IsSetCard(0xd8) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c77116346.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c77116346.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c77116346.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c77116346.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c77116346.thfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_EXTRA) and c:IsSetCard(0xd8) + and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c77116346.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c77116346.thfilter,1,nil,tp) +end +function c77116346.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=eg:Filter(c77116346.thfilter,nil,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c77116346.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local rg=g:Select(tp,1,1,nil) + if rg:GetCount()>0 then + Duel.SendtoHand(rg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,rg) + end +end diff --git a/script/c77121851.lua b/script/c77121851.lua index 78464d20..569d02c1 100644 --- a/script/c77121851.lua +++ b/script/c77121851.lua @@ -3,6 +3,7 @@ function c77121851.initial_effect(c) --to grave local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c77121851.tgop) c:RegisterEffect(e1) @@ -31,14 +32,16 @@ function c77121851.costfilter(c) return c:IsRace(RACE_BEAST+RACE_BEASTWARRIOR+RACE_WINDBEAST) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsAbleToGraveAsCost() end function c77121851.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c77121851.costfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local loc=LOCATION_HAND+LOCATION_MZONE + if ft<1 then loc=LOCATION_MZONE end + if chk==0 then return ft>-1 and Duel.IsExistingMatchingCard(c77121851.costfilter,tp,loc,0,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c77121851.costfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,c77121851.costfilter,tp,loc,0,1,1,nil) Duel.SendtoGrave(g,REASON_COST) end function c77121851.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) end function c77121851.spop(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c77133792.lua b/script/c77133792.lua index 6b3a1649..88e4a105 100644 --- a/script/c77133792.lua +++ b/script/c77133792.lua @@ -47,7 +47,8 @@ function c77133792.spfilter(c,e,tp) end function c77133792.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c77133792.spfilter(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c77133792.spfilter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c77133792.spfilter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=Duel.SelectTarget(tp,c77133792.spfilter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) diff --git a/script/c77150143.lua b/script/c77150143.lua new file mode 100644 index 00000000..27151d54 --- /dev/null +++ b/script/c77150143.lua @@ -0,0 +1,38 @@ +--十二獣サラブレード +function c77150143.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(77150143,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetTarget(c77150143.drtg) + e1:SetOperation(c77150143.drop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --get effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_XMATERIAL) + e3:SetCode(EFFECT_PIERCE) + e3:SetCondition(c77150143.condition) + c:RegisterEffect(e3) +end +function c77150143.filter(c) + return c:IsSetCard(0xf1) and c:IsDiscardable(REASON_EFFECT) +end +function c77150143.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingMatchingCard(c77150143.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c77150143.drop(e,tp,eg,ep,ev,re,r,rp) + if Duel.DiscardHand(tp,c77150143.filter,1,1,REASON_EFFECT+REASON_DISCARD,nil)~=0 then + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c77150143.condition(e) + return e:GetHandler():GetOriginalRace()==RACE_BEASTWARRIOR +end diff --git a/script/c77152542.lua b/script/c77152542.lua index b829ff61..768ccb96 100644 --- a/script/c77152542.lua +++ b/script/c77152542.lua @@ -1,52 +1,52 @@ ---BF-砂塵のハルマッタン -function c77152542.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,77152542) - e1:SetCondition(c77152542.spcon) - c:RegisterEffect(e1) - --level - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetTarget(c77152542.target) - e2:SetOperation(c77152542.operation) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c77152542.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x33) and not c:IsCode(77152542) -end -function c77152542.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c77152542.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c77152542.filter(c) - return c:IsFaceup() and c:IsSetCard(0x33) and c:GetLevel()>=1 -end -function c77152542.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c77152542.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c77152542.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c77152542.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) -end -function c77152542.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(tc:GetLevel()) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end +--BF-砂塵のハルマッタン +function c77152542.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,77152542) + e1:SetCondition(c77152542.spcon) + c:RegisterEffect(e1) + --level + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c77152542.target) + e2:SetOperation(c77152542.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c77152542.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x33) and not c:IsCode(77152542) +end +function c77152542.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c77152542.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c77152542.filter(c) + return c:IsFaceup() and c:IsSetCard(0x33) and c:GetLevel()>=1 +end +function c77152542.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c77152542.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c77152542.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c77152542.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c77152542.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c77153811.lua b/script/c77153811.lua index a992887e..556bf06f 100644 --- a/script/c77153811.lua +++ b/script/c77153811.lua @@ -1,55 +1,55 @@ ---儀式魔人カースエンチャンター -function c77153811.initial_effect(c) - --ritual material - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) - e1:SetValue(1) - c:RegisterEffect(e1) - --become material - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetCondition(c77153811.condition) - e2:SetOperation(c77153811.operation) - c:RegisterEffect(e2) -end -function c77153811.condition(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_RITUAL -end -function c77153811.operation(e,tp,eg,ep,ev,re,r,rp) - local rc=eg:GetFirst() - while rc do - if rc:GetFlagEffect(77153811)==0 then - --cannot special summon - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(77153811,0)) - e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetTarget(c77153811.distg) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c77153811.disop) - e2:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e2,true) - rc:RegisterFlagEffect(77153811,RESET_EVENT+0x1fe0000,0,1) - end - rc=eg:GetNext() - end -end -function c77153811.distg(e,c) - return c:IsType(TYPE_SYNCHRO) -end -function c77153811.disop(e,tp,eg,ep,ev,re,r,rp) - if re:IsActiveType(TYPE_SYNCHRO) then - Duel.NegateEffect(ev) - end -end +--儀式魔人カースエンチャンター +function c77153811.initial_effect(c) + --ritual material + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) + e1:SetValue(1) + c:RegisterEffect(e1) + --become material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c77153811.condition) + e2:SetOperation(c77153811.operation) + c:RegisterEffect(e2) +end +function c77153811.condition(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RITUAL +end +function c77153811.operation(e,tp,eg,ep,ev,re,r,rp) + local rc=eg:GetFirst() + while rc do + if rc:GetFlagEffect(77153811)==0 then + --cannot special summon + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(77153811,0)) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c77153811.distg) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c77153811.disop) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + rc:RegisterFlagEffect(77153811,RESET_EVENT+0x1fe0000,0,1) + end + rc=eg:GetNext() + end +end +function c77153811.distg(e,c) + return c:IsType(TYPE_SYNCHRO) +end +function c77153811.disop(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_SYNCHRO) then + Duel.NegateEffect(ev) + end +end diff --git a/script/c77205367.lua b/script/c77205367.lua index a765e5a8..3b79bd39 100644 --- a/script/c77205367.lua +++ b/script/c77205367.lua @@ -21,7 +21,9 @@ function c77205367.initial_effect(c) --atk local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(77205367,0)) + e3:SetCategory(CATEGORY_ATKCHANGE) e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetCode(EVENT_ATTACK_ANNOUNCE) e3:SetRange(LOCATION_MZONE) e3:SetCondition(c77205367.atkcon) diff --git a/script/c77229910.lua b/script/c77229910.lua index 2b0c30c7..a48732f9 100644 --- a/script/c77229910.lua +++ b/script/c77229910.lua @@ -31,8 +31,7 @@ function c77229910.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c77229910.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) diff --git a/script/c77334267.lua b/script/c77334267.lua index 9c9562bd..95264178 100644 --- a/script/c77334267.lua +++ b/script/c77334267.lua @@ -8,7 +8,7 @@ function c77334267.initial_effect(c) e1:SetCategory(CATEGORY_DESTROY) e1:SetDescription(aux.Stringid(77334267,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c77334267.descost) diff --git a/script/c77411244.lua b/script/c77411244.lua index d9568a63..30e815e0 100644 --- a/script/c77411244.lua +++ b/script/c77411244.lua @@ -51,7 +51,8 @@ function c77411244.initial_effect(c) c:RegisterEffect(e6) end function c77411244.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) + local ct1,ct2=c:GetUnionCount() + return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:IsAttribute(ATTRIBUTE_LIGHT) and ct2==0 end function c77411244.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) local c=e:GetHandler() @@ -72,7 +73,7 @@ function c77411244.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c77411244.sptg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() diff --git a/script/c77414722.lua b/script/c77414722.lua index f2ec9ba9..11da899f 100644 --- a/script/c77414722.lua +++ b/script/c77414722.lua @@ -1,34 +1,33 @@ ---マジック・ジャマー -function c77414722.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c77414722.condition) - e1:SetCost(c77414722.cost) - e1:SetTarget(c77414722.target) - e1:SetOperation(c77414722.activate) - c:RegisterEffect(e1) -end -function c77414722.condition(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c77414722.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end - 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 c77414722.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c77414722.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--マジック・ジャマー +function c77414722.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c77414722.condition) + e1:SetCost(c77414722.cost) + e1:SetTarget(c77414722.target) + e1:SetOperation(c77414722.activate) + c:RegisterEffect(e1) +end +function c77414722.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c77414722.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end + 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 c77414722.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c77414722.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c77428945.lua b/script/c77428945.lua index 75934dc1..f35002e8 100644 --- a/script/c77428945.lua +++ b/script/c77428945.lua @@ -12,7 +12,7 @@ function c77428945.initial_effect(c) c:RegisterEffect(e1) end function c77428945.filter(c) - return c:IsFaceup() and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 + return c:IsFaceup() and c:IsCanTurnSet() and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 end function c77428945.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end diff --git a/script/c77454922.lua b/script/c77454922.lua index f5a40518..fa8e5912 100644 --- a/script/c77454922.lua +++ b/script/c77454922.lua @@ -1,4 +1,4 @@ ---要塞クジラの誓い -function c77454922.initial_effect(c) - aux.AddRitualProcGreaterCode(c,62337487) -end +--要塞クジラの誓い +function c77454922.initial_effect(c) + aux.AddRitualProcGreaterCode(c,62337487) +end diff --git a/script/c77462146.lua b/script/c77462146.lua index ee106211..e81c32ee 100644 --- a/script/c77462146.lua +++ b/script/c77462146.lua @@ -1,74 +1,74 @@ ---幻影騎士団シャドーベイル -function c77462146.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(c77462146.condition) - e1:SetTarget(c77462146.target) - e1:SetOperation(c77462146.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(77462146,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c77462146.spcon) - e2:SetTarget(c77462146.sptg) - e2:SetOperation(c77462146.spop) - c:RegisterEffect(e2) -end -function c77462146.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c77462146.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c77462146.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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) - e1:SetValue(300) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - end -end -function c77462146.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil -end -function c77462146.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,77462146,0x10db,0x11,4,0,300,RACE_WARRIOR,ATTRIBUTE_DARK) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c77462146.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,77462146,0x10db,0x11,4,0,300,RACE_WARRIOR,ATTRIBUTE_DARK) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) - c:AddMonsterAttributeComplete() - --redirect - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetReset(RESET_EVENT+0x47e0000) - e2:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e2,true) - Duel.SpecialSummonComplete() - end -end +--幻影騎士団シャドーベイル +function c77462146.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(c77462146.condition) + e1:SetTarget(c77462146.target) + e1:SetOperation(c77462146.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(77462146,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c77462146.spcon) + e2:SetTarget(c77462146.sptg) + e2:SetOperation(c77462146.spop) + c:RegisterEffect(e2) +end +function c77462146.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c77462146.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c77462146.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(300) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end +function c77462146.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c77462146.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,77462146,0x10db,0x11,0,300,4,RACE_WARRIOR,ATTRIBUTE_DARK) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c77462146.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,77462146,0x10db,0x11,0,300,4,RACE_WARRIOR,ATTRIBUTE_DARK) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + --redirect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetReset(RESET_EVENT+0x47e0000) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c77505534.lua b/script/c77505534.lua index dbf5974c..f63caf0d 100644 --- a/script/c77505534.lua +++ b/script/c77505534.lua @@ -2,6 +2,7 @@ function c77505534.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_POSITION) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(0,0x11e8) diff --git a/script/c77538567.lua b/script/c77538567.lua index 41a40051..94119da1 100644 --- a/script/c77538567.lua +++ b/script/c77538567.lua @@ -22,8 +22,7 @@ function c77538567.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) end function c77538567.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end Duel.Draw(1-tp,1,REASON_EFFECT) diff --git a/script/c77565204.lua b/script/c77565204.lua index 52d9ecbf..8919d60a 100644 --- a/script/c77565204.lua +++ b/script/c77565204.lua @@ -1,109 +1,124 @@ ---未来融合-フューチャー・フュージョン -function c77565204.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c77565204.target) - e1:SetOperation(c77565204.activate) - c:RegisterEffect(e1) - --Destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetOperation(c77565204.desop) - c:RegisterEffect(e2) - --Destroy2 - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetCondition(c77565204.descon2) - e3:SetOperation(c77565204.desop2) - c:RegisterEffect(e3) -end -function c77565204.filter1(c,e) - return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) -end -function c77565204.filter2(c,m) - return c:IsType(TYPE_FUSION) and c:CheckFusionMaterial(m) and not c:IsForbidden() -end -function c77565204.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local mg=Duel.GetMatchingGroup(c77565204.filter1,tp,LOCATION_DECK,0,nil,e) - return Duel.IsExistingMatchingCard(c77565204.filter2,tp,LOCATION_EXTRA,0,1,nil,mg) - end - e:GetHandler():SetTurnCounter(0) -end -function c77565204.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local mg=Duel.GetMatchingGroup(c77565204.filter1,tp,LOCATION_DECK,0,nil,e) - local sg=Duel.GetMatchingGroup(c77565204.filter2,tp,LOCATION_EXTRA,0,nil,mg) - if sg:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - Duel.ConfirmCards(1-tp,tc) - local code=tc:GetCode() - local mat=Duel.SelectFusionMaterial(tp,tc,mg) - local fg=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_EXTRA,0,nil,code) - local tc=fg:GetFirst() - while tc do - tc:SetMaterial(mat) - tc=fg:GetNext() - end - Duel.SendtoGrave(mat,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - e1:SetRange(LOCATION_SZONE) - e1:SetCondition(c77565204.proccon) - e1:SetOperation(c77565204.procop) - e1:SetLabel(code) - e1:SetLabelObject(e) - c:RegisterEffect(e1) - end -end -function c77565204.procfilter(c,code,e,tp) - return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) -end -function c77565204.proccon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c77565204.procop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetTurnCounter() - ct=ct+1 - c:SetTurnCounter(ct) - if ct==2 then - local code=e:GetLabel() - local tc=Duel.GetFirstMatchingCard(c77565204.procfilter,tp,LOCATION_EXTRA,0,nil,code,e,tp) - if not tc then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then - Duel.SendtoGrave(tc,REASON_EFFECT) - tc:CompleteProcedure() - else - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - tc:CompleteProcedure() - c:SetCardTarget(tc) - end - end -end -function c77565204.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - if tc and tc:IsLocation(LOCATION_MZONE) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c77565204.descon2(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) -end -function c77565204.desop2(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--未来融合-フューチャー・フュージョン +function c77565204.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c77565204.reg) + c:RegisterEffect(e1) + --Turn 1 + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetCondition(c77565204.tgcon) + e2:SetOperation(c77565204.tgop) + c:RegisterEffect(e2) + --Turn 2 + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetCondition(c77565204.proccon) + e3:SetOperation(c77565204.procop) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --Destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c77565204.desop) + c:RegisterEffect(e4) + --Destroy2 + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c77565204.descon2) + e5:SetOperation(c77565204.desop2) + c:RegisterEffect(e5) +end +function c77565204.reg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + c:SetTurnCounter(0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE_START+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetOperation(c77565204.ctop) + Duel.RegisterEffect(e1,tp) + c:CreateEffectRelation(e1) +end +function c77565204.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + if not c:IsRelateToEffect(e) or ct>=2 then + c:SetTurnCounter(0) + e:Reset() + return + end + if Duel.GetTurnPlayer()~=tp then return end + ct=ct+1 + c:SetTurnCounter(ct) +end +function c77565204.tgcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetTurnCounter()==1 +end +function c77565204.filter1(c,e) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() and not c:IsImmuneToEffect(e) +end +function c77565204.filter2(c,m) + return c:IsFusionSummonableCard() and c:CheckFusionMaterial(m) +end +function c77565204.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local mg=Duel.GetMatchingGroup(c77565204.filter1,tp,LOCATION_DECK,0,nil,e) + local sg=Duel.GetMatchingGroup(c77565204.filter2,tp,LOCATION_EXTRA,0,nil,mg) + if sg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + Duel.ConfirmCards(1-tp,tc) + local code=tc:GetCode() + local mat=Duel.SelectFusionMaterial(tp,tc,mg) + Duel.SendtoGrave(mat,REASON_EFFECT) + e:SetLabel(code) + end +end +function c77565204.proccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():GetTurnCounter()==2 +end +function c77565204.procfilter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c77565204.procop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local code=e:GetLabelObject():GetLabel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c77565204.procfilter,tp,LOCATION_EXTRA,0,1,1,nil,code,e,tp) + local tc=g:GetFirst() + if not tc then return end + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + c:SetCardTarget(tc) +end +function c77565204.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c77565204.descon2(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c77565204.desop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c77584012.lua b/script/c77584012.lua index b68f2141..9652c82e 100644 --- a/script/c77584012.lua +++ b/script/c77584012.lua @@ -1,64 +1,64 @@ ---擬似空間 -function c77584012.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --copy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(77584012,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetCost(c77584012.cost) - e2:SetOperation(c77584012.operation) - c:RegisterEffect(e2) -end -function c77584012.filter(c) - return c:IsType(TYPE_FIELD) and c:IsAbleToRemoveAsCost() -end -function c77584012.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(77584012)==0 - and Duel.IsExistingMatchingCard(c77584012.filter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c77584012.filter,tp,LOCATION_GRAVE,0,1,1,nil) - local code=g:GetFirst():GetOriginalCode() - e:SetLabel(code) - Duel.Remove(g,POS_FACEUP,REASON_COST) - e:GetHandler():RegisterFlagEffect(77584012,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c77584012.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local code=e:GetLabel() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - c:RegisterEffect(e1) - local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(77584012,1)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_FZONE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetLabel(cid) - e2:SetLabelObject(e1) - e2:SetOperation(c77584012.rstop) - c:RegisterEffect(e2) -end -function c77584012.rstop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local cid=e:GetLabel() - c:ResetEffect(cid,RESET_COPY) - local e1=e:GetLabelObject() - e1:Reset() - Duel.HintSelection(Group.FromCards(c)) - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end +--擬似空間 +function c77584012.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(77584012,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCost(c77584012.cost) + e2:SetOperation(c77584012.operation) + c:RegisterEffect(e2) +end +function c77584012.filter(c) + return c:IsType(TYPE_FIELD) and c:IsAbleToRemoveAsCost() +end +function c77584012.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(77584012)==0 + and Duel.IsExistingMatchingCard(c77584012.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c77584012.filter,tp,LOCATION_GRAVE,0,1,1,nil) + local code=g:GetFirst():GetOriginalCode() + e:SetLabel(code) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:GetHandler():RegisterFlagEffect(77584012,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c77584012.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local code=e:GetLabel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(77584012,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_FZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetLabel(cid) + e2:SetLabelObject(e1) + e2:SetOperation(c77584012.rstop) + c:RegisterEffect(e2) +end +function c77584012.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=e:GetLabel() + c:ResetEffect(cid,RESET_COPY) + local e1=e:GetLabelObject() + e1:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end diff --git a/script/c77625948.lua b/script/c77625948.lua index bf36a804..0b8fe16e 100644 --- a/script/c77625948.lua +++ b/script/c77625948.lua @@ -1,83 +1,83 @@ ---サイバー・ダーク・エッジ -function c77625948.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(77625948,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c77625948.eqtg) - e1:SetOperation(c77625948.eqop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DIRECT_ATTACK) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_SET_ATTACK_FINAL) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c77625948.atkcon) - e3:SetValue(c77625948.atkval) - c:RegisterEffect(e3) -end -function c77625948.filter(c) - return c:IsLevelBelow(3) and c:IsRace(RACE_DRAGON) and not c:IsForbidden() -end -function c77625948.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c77625948.filter(chkc) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c77625948.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c77625948.eqop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if atk<0 then atk=0 end - if not Duel.Equip(tp,tc,c,false) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c77625948.eqlimit) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetReset(RESET_EVENT+0x1fe0000) - e2:SetValue(atk) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetReset(RESET_EVENT+0x1fe0000) - e3:SetValue(c77625948.repval) - tc:RegisterEffect(e3) - end -end -function c77625948.eqlimit(e,c) - return e:GetOwner()==c -end -function c77625948.repval(e,re,r,rp) - return bit.band(r,REASON_BATTLE)~=0 -end -function c77625948.atkcon(e) - local tp=e:GetHandlerPlayer() - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL - and Duel.GetAttackTarget()==nil and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 - and e:GetHandler():GetEffectCount(EFFECT_DIRECT_ATTACK)==1 -end -function c77625948.atkval(e,c) - return c:GetAttack()/2 -end +--サイバー・ダーク・エッジ +function c77625948.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(77625948,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c77625948.eqtg) + e1:SetOperation(c77625948.eqop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c77625948.atkcon) + e3:SetValue(c77625948.atkval) + c:RegisterEffect(e3) +end +function c77625948.filter(c) + return c:IsLevelBelow(3) and c:IsRace(RACE_DRAGON) and not c:IsForbidden() +end +function c77625948.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c77625948.filter(chkc) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c77625948.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c77625948.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFaceup() and c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if atk<0 then atk=0 end + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c77625948.eqlimit) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_OWNER_RELATE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(c77625948.repval) + tc:RegisterEffect(e3) + end +end +function c77625948.eqlimit(e,c) + return e:GetOwner()==c +end +function c77625948.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c77625948.atkcon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL + and Duel.GetAttackTarget()==nil and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 + and e:GetHandler():GetEffectCount(EFFECT_DIRECT_ATTACK)==1 +end +function c77625948.atkval(e,c) + return c:GetAttack()/2 +end diff --git a/script/c77631175.lua b/script/c77631175.lua index a5e22fac..07d73865 100644 --- a/script/c77631175.lua +++ b/script/c77631175.lua @@ -14,7 +14,7 @@ function c77631175.initial_effect(c) --damage local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(77631175,1)) - e2:SetCategory(CATEGORY_DAMAGE) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DAMAGE) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e2:SetCode(EVENT_CUSTOM+77631175) e2:SetTarget(c77631175.target) diff --git a/script/c77693536.lua b/script/c77693536.lua index acfd0f34..b659da6d 100644 --- a/script/c77693536.lua +++ b/script/c77693536.lua @@ -39,10 +39,10 @@ function c77693536.initial_effect(c) c:RegisterEffect(e3) end function c77693536.filter1(c) - return c:IsFusionSetCard(0xe1) + return (c:IsFusionSetCard(0xe1) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end function c77693536.filter2(c) - return c:IsType(TYPE_NORMAL) + return (c:IsType(TYPE_NORMAL) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end function c77693536.fscon(e,g,gc,chkfnf) if g==nil then return true end @@ -59,18 +59,9 @@ function c77693536.fscon(e,g,gc,chkfnf) local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) if gc then if not gc:IsCanBeFusionMaterial(e:GetHandler(),true) then return false end - return (f1(gc) and mg:IsExists(f2,1,gc)) - or (f2(gc) and mg:IsExists(f1,1,gc)) end - local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false - local tc=mg:GetFirst() - while tc do - if f1(tc) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end - if f2(tc) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end - tc=mg:GetNext() + return aux.FConditionFilterF2(gc,f1,f2,mg,chkf) end - if chkf~=PLAYER_NONE then - return fs and g1:IsExists(aux.FConditionFilterF2,1,nil,g2) - else return g1:IsExists(aux.FConditionFilterF2,1,nil,g2) end + return mg:IsExists(aux.FConditionFilterF2,1,nil,f1,f2,mg,chkf) end function c77693536.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) local f1=c77693536.filter1 @@ -83,30 +74,26 @@ function c77693536.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) fc=fg:GetNext() end local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if g:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end + end if gc then - local sg=Group.CreateGroup() - if f1(gc) then sg:Merge(g:Filter(f2,gc)) end - if f2(gc) then sg:Merge(g:Filter(f1,gc)) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=sg:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,aux.FConditionFilterF2chk,1,1,gc,f1,f2,gc,chkf) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - local sg=g:Filter(aux.FConditionFilterF2c,nil,f1,f2) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then - g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,aux.FConditionFilterF2,1,1,nil,f1,f2,g,chkf) local tc1=g1:GetFirst() - sg:RemoveCard(tc1) - local b1=f1(tc1) - local b2=f2(tc1) - if b1 and not b2 then sg:Remove(aux.FConditionFilterF2r,nil,f1,f2) end - if b2 and not b1 then sg:Remove(aux.FConditionFilterF2r,nil,f2,f1) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g2=sg:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=g:FilterSelect(p,aux.FConditionFilterF2chk,1,1,tc1,f1,f2,tc1,chkf) g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end function c77693536.eqcon(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c77700347.lua b/script/c77700347.lua index 6012b5cb..c201ec8c 100644 --- a/script/c77700347.lua +++ b/script/c77700347.lua @@ -1,41 +1,41 @@ ---ネクロ・ディフェンダー -function c77700347.initial_effect(c) - -- - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(77700347,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCost(c77700347.cost) - e1:SetTarget(c77700347.target) - e1:SetOperation(c77700347.operation) - c:RegisterEffect(e1) -end -function c77700347.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c77700347.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) end - if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) -end -function c77700347.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - tc:RegisterEffect(e2) - end -end +--ネクロ・ディフェンダー +function c77700347.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(77700347,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c77700347.cost) + e1:SetTarget(c77700347.target) + e1:SetOperation(c77700347.operation) + c:RegisterEffect(e1) +end +function c77700347.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c77700347.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) +end +function c77700347.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + tc:RegisterEffect(e2) + end +end diff --git a/script/c77723643.lua b/script/c77723643.lua index 856bb13a..b35ab861 100644 --- a/script/c77723643.lua +++ b/script/c77723643.lua @@ -1,63 +1,63 @@ ---シャドール・ドラゴン -function c77723643.initial_effect(c) - --flip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(77723643,0)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,77723643) - e1:SetCost(c77723643.cost) - e1:SetTarget(c77723643.target) - e1:SetOperation(c77723643.operation) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(77723643,1)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,77723643) - e2:SetCondition(c77723643.descon) - e2:SetCost(c77723643.cost) - e2:SetTarget(c77723643.destg) - e2:SetOperation(c77723643.desop) - c:RegisterEffect(e2) -end -function c77723643.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end -function c77723643.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c77723643.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end -function c77723643.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_EFFECT) -end -function c77723643.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c77723643.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c77723643.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c77723643.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c77723643.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c77723643.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--シャドール・ドラゴン +function c77723643.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(77723643,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,77723643) + e1:SetCost(c77723643.cost) + e1:SetTarget(c77723643.target) + e1:SetOperation(c77723643.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(77723643,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,77723643) + e2:SetCondition(c77723643.descon) + e2:SetCost(c77723643.cost) + e2:SetTarget(c77723643.destg) + e2:SetOperation(c77723643.desop) + c:RegisterEffect(e2) +end +function c77723643.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c77723643.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c77723643.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c77723643.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) +end +function c77723643.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c77723643.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c77723643.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c77723643.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c77723643.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c77723643.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c77778835.lua b/script/c77778835.lua index 09ad034e..b061b3c4 100644 --- a/script/c77778835.lua +++ b/script/c77778835.lua @@ -34,7 +34,8 @@ function c77778835.operation(e,tp,eg,ep,ev,re,r,rp) if not c:IsRelateToEffect(e) then return end local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local tg=Duel.GetMatchingGroup(c77778835.filter,tp,LOCATION_GRAVE,0,nil,e,tp) - if ft<=0 or tg:GetCount()==0 or (ft>1 and tg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if ft<=0 or tg:GetCount()==0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=tg:Select(tp,ft,ft,nil) local tc=g:GetFirst() diff --git a/script/c77783947.lua b/script/c77783947.lua index 55030fe0..3e44928c 100644 --- a/script/c77783947.lua +++ b/script/c77783947.lua @@ -1,73 +1,73 @@ ---竜星の極み -function c77783947.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --must attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_MUST_ATTACK) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - c:RegisterEffect(e2) - --synchro effect - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) - e4:SetRange(LOCATION_SZONE) - e4:SetCondition(c77783947.sccon) - e4:SetCost(c77783947.sccost) - e4:SetTarget(c77783947.sctg) - e4:SetOperation(c77783947.scop) - c:RegisterEffect(e4) -end -function c77783947.sccon(e,tp,eg,ep,ev,re,r,rp) - local ph=Duel.GetCurrentPhase() - return ph==PHASE_MAIN1 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) or ph==PHASE_MAIN2 -end -function c77783947.mfilter(c) - return c:IsSetCard(0x9e) and c:IsType(TYPE_MONSTER) -end -function c77783947.mfilter2(c) - return c:IsHasEffect(EFFECT_HAND_SYNCHRO) and c:IsType(TYPE_MONSTER) -end -function c77783947.cfilter(c,syn) - local b1=true - if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then - b1=Duel.CheckTunerMaterial(syn,c,nil,c77783947.mfilter,1,99) - end - return b1 and syn:IsSynchroSummonable(c) -end -function c77783947.spfilter(c,mg) - return mg:IsExists(c77783947.cfilter,1,nil,c) -end -function c77783947.sccost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c77783947.sctg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local mg=Duel.GetMatchingGroup(c77783947.mfilter,tp,LOCATION_MZONE,0,nil) - local exg=Duel.GetMatchingGroup(c77783947.mfilter2,tp,LOCATION_MZONE,0,nil) - mg:Merge(exg) - return Duel.IsExistingMatchingCard(c77783947.spfilter,tp,LOCATION_EXTRA,0,1,nil,mg) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c77783947.scop(e,tp,eg,ep,ev,re,r,rp) - local mg=Duel.GetMatchingGroup(c77783947.mfilter,tp,LOCATION_MZONE,0,nil) - local exg=Duel.GetMatchingGroup(c77783947.mfilter2,tp,LOCATION_MZONE,0,nil) - mg:Merge(exg) - local g=Duel.GetMatchingGroup(c77783947.spfilter,tp,LOCATION_EXTRA,0,nil,mg) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local tg=mg:FilterSelect(tp,c77783947.cfilter,1,1,nil,sg:GetFirst()) - Duel.SynchroSummon(tp,sg:GetFirst(),tg:GetFirst()) - end -end +--竜星の極み +function c77783947.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --must attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_MUST_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e2) + --synchro effect + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c77783947.sccon) + e4:SetCost(c77783947.sccost) + e4:SetTarget(c77783947.sctg) + e4:SetOperation(c77783947.scop) + c:RegisterEffect(e4) +end +function c77783947.sccon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph==PHASE_MAIN1 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) or ph==PHASE_MAIN2 +end +function c77783947.mfilter(c) + return c:IsSetCard(0x9e) and c:IsType(TYPE_MONSTER) +end +function c77783947.mfilter2(c) + return c:IsHasEffect(EFFECT_HAND_SYNCHRO) and c:IsType(TYPE_MONSTER) +end +function c77783947.cfilter(c,syn) + local b1=true + if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then + b1=Duel.CheckTunerMaterial(syn,c,nil,c77783947.mfilter,1,99) + end + return b1 and syn:IsSynchroSummonable(c) +end +function c77783947.spfilter(c,mg) + return mg:IsExists(c77783947.cfilter,1,nil,c) +end +function c77783947.sccost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c77783947.sctg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetMatchingGroup(c77783947.mfilter,tp,LOCATION_MZONE,0,nil) + local exg=Duel.GetMatchingGroup(c77783947.mfilter2,tp,LOCATION_MZONE,0,nil) + mg:Merge(exg) + return Duel.IsExistingMatchingCard(c77783947.spfilter,tp,LOCATION_EXTRA,0,1,nil,mg) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c77783947.scop(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetMatchingGroup(c77783947.mfilter,tp,LOCATION_MZONE,0,nil) + local exg=Duel.GetMatchingGroup(c77783947.mfilter2,tp,LOCATION_MZONE,0,nil) + mg:Merge(exg) + local g=Duel.GetMatchingGroup(c77783947.spfilter,tp,LOCATION_EXTRA,0,nil,mg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tg=mg:FilterSelect(tp,c77783947.cfilter,1,1,nil,sg:GetFirst()) + Duel.SynchroSummon(tp,sg:GetFirst(),tg:GetFirst()) + end +end diff --git a/script/c77797992.lua b/script/c77797992.lua index e300db96..599f7f99 100644 --- a/script/c77797992.lua +++ b/script/c77797992.lua @@ -1,39 +1,40 @@ ---森の聖獣 アルパカリブ -function c77797992.initial_effect(c) - --indes1 - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetCondition(c77797992.cona) - e1:SetTarget(c77797992.targeta) - e1:SetValue(1) - c:RegisterEffect(e1) - --cannot be target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetCondition(c77797992.cond) - e2:SetTarget(c77797992.targetd) - e2:SetValue(1) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetValue(1) - c:RegisterEffect(e3) -end -function c77797992.cona(e) - return e:GetHandler():IsAttackPos() -end -function c77797992.targeta(e,c) - return c:IsPosition(POS_FACEUP_ATTACK) and c:IsRace(RACE_WINDBEAST+RACE_PLANT+RACE_INSECT) -end -function c77797992.cond(e) - return e:GetHandler():IsDefensePos() -end -function c77797992.targetd(e,c) - return c:IsPosition(POS_FACEUP_DEFENSE) and c:IsRace(RACE_WINDBEAST+RACE_PLANT+RACE_INSECT) -end +--森の聖獣 アルパカリブ +function c77797992.initial_effect(c) + --indes1 + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCondition(c77797992.cona) + e1:SetTarget(c77797992.targeta) + e1:SetValue(1) + c:RegisterEffect(e1) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCondition(c77797992.cond) + e2:SetTarget(c77797992.targetd) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c77797992.cona(e) + return e:GetHandler():IsAttackPos() +end +function c77797992.targeta(e,c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsRace(RACE_WINDBEAST+RACE_PLANT+RACE_INSECT) +end +function c77797992.cond(e) + return e:GetHandler():IsDefensePos() +end +function c77797992.targetd(e,c) + return c:IsPosition(POS_FACEUP_DEFENSE) and c:IsRace(RACE_WINDBEAST+RACE_PLANT+RACE_INSECT) +end diff --git a/script/c77799846.lua b/script/c77799846.lua index b955fa55..8481ed58 100644 --- a/script/c77799846.lua +++ b/script/c77799846.lua @@ -7,6 +7,7 @@ function c77799846.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetDescription(aux.Stringid(77799846,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) @@ -73,12 +74,11 @@ end function c77799846.spop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then - local g=Duel.GetMatchingGroup(c77799846.mfilter,tp,LOCATION_GRAVE,0,nil) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c77799846.mfilter),tp,LOCATION_GRAVE,0,nil) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(77799846,2)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) local mg=g:Select(tp,1,1,nil) - if mg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.Overlay(c,mg) end end diff --git a/script/c77826734.lua b/script/c77826734.lua index 3ca44e78..46faff77 100644 --- a/script/c77826734.lua +++ b/script/c77826734.lua @@ -1,28 +1,28 @@ ---ペンデュラム・リボーン -function c77826734.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c77826734.target) - e1:SetOperation(c77826734.activate) - c:RegisterEffect(e1) -end -function c77826734.filter(c,e,tp) - return c:IsType(TYPE_PENDULUM) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c77826734.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c77826734.filter,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_EXTRA) -end -function c77826734.activate(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,c77826734.filter,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--ペンデュラム・リボーン +function c77826734.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c77826734.target) + e1:SetOperation(c77826734.activate) + c:RegisterEffect(e1) +end +function c77826734.filter(c,e,tp) + return c:IsType(TYPE_PENDULUM) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c77826734.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c77826734.filter,tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_EXTRA) +end +function c77826734.activate(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,aux.NecroValleyFilter(c77826734.filter),tp,LOCATION_GRAVE+LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c77859858.lua b/script/c77859858.lua index 44fd7ef3..70f884ec 100644 --- a/script/c77859858.lua +++ b/script/c77859858.lua @@ -1,78 +1,78 @@ ---破滅へのクイック・ドロー -function c77859858.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --leave - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetOperation(c77859858.leave) - c:RegisterEffect(e3) - --Draw - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_PREDRAW) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetRange(LOCATION_SZONE) - e4:SetOperation(c77859858.pdraw) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(77859858,0)) - e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e5:SetCategory(CATEGORY_DRAW) - e5:SetRange(LOCATION_SZONE) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetCode(EVENT_DRAW) - e5:SetCondition(c77859858.drcon) - e5:SetTarget(c77859858.drtg) - e5:SetOperation(c77859858.drop) - e5:SetLabelObject(e4) - c:RegisterEffect(e5) - --cost - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e6:SetRange(LOCATION_SZONE) - e6:SetCode(EVENT_PHASE+PHASE_END) - e6:SetCountLimit(1) - e6:SetCondition(c77859858.costcon) - e6:SetOperation(c77859858.costop) - c:RegisterEffect(e6) -end -function c77859858.leave(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetPreviousControler()==tp and c:IsStatus(STATUS_ACTIVATED) then - Duel.Damage(tp,3000,REASON_EFFECT) - end -end -function c77859858.pdraw(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFieldGroupCount(ep,LOCATION_HAND,0)==0 then e:SetLabel(1) - else e:SetLabel(0) end -end -function c77859858.drcon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_RULE and e:GetLabelObject():GetLabel()==1 -end -function c77859858.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(ep) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,ep,1) -end -function c77859858.drop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end -function c77859858.costcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c77859858.costop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLP(tp)>=700 then - Duel.PayLPCost(tp,700) - else - Duel.SetLP(tp,0) - end -end +--破滅へのクイック・ドロー +function c77859858.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --leave + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetOperation(c77859858.leave) + c:RegisterEffect(e3) + --Draw + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PREDRAW) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetOperation(c77859858.pdraw) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(77859858,0)) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCategory(CATEGORY_DRAW) + e5:SetRange(LOCATION_SZONE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EVENT_DRAW) + e5:SetCondition(c77859858.drcon) + e5:SetTarget(c77859858.drtg) + e5:SetOperation(c77859858.drop) + e5:SetLabelObject(e4) + c:RegisterEffect(e5) + --cost + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetCountLimit(1) + e6:SetCondition(c77859858.costcon) + e6:SetOperation(c77859858.costop) + c:RegisterEffect(e6) +end +function c77859858.leave(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetPreviousControler()==tp and c:IsStatus(STATUS_ACTIVATED) then + Duel.Damage(tp,3000,REASON_EFFECT) + end +end +function c77859858.pdraw(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(ep,LOCATION_HAND,0)==0 then e:SetLabel(1) + else e:SetLabel(0) end +end +function c77859858.drcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RULE and e:GetLabelObject():GetLabel()==1 +end +function c77859858.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(ep) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,ep,1) +end +function c77859858.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end +function c77859858.costcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c77859858.costop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLP(tp)>=700 then + Duel.PayLPCost(tp,700) + else + Duel.SetLP(tp,0) + end +end diff --git a/script/c77901552.lua b/script/c77901552.lua index 422f045e..13c2574f 100644 --- a/script/c77901552.lua +++ b/script/c77901552.lua @@ -1,61 +1,61 @@ ---聖刻龍-トフェニドラゴン -function c77901552.initial_effect(c) - --spsummon from hand - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetCondition(c77901552.hspcon) - e1:SetOperation(c77901552.hspop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(77901552,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_RELEASE) - e2:SetTarget(c77901552.sptg) - e2:SetOperation(c77901552.spop) - c:RegisterEffect(e2) -end -function c77901552.hspcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 - and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 -end -function c77901552.hspop(e,tp,eg,ep,ev,re,r,rp,c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end -function c77901552.spfilter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c77901552.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) -end -function c77901552.spop(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,c77901552.spfilter,tp,0x13,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end - if tc and Duel.SpecialSummonStep(g:GetFirst(),0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - end -end +--聖刻龍-トフェニドラゴン +function c77901552.initial_effect(c) + --spsummon from hand + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetCondition(c77901552.hspcon) + e1:SetOperation(c77901552.hspop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(77901552,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_RELEASE) + e2:SetTarget(c77901552.sptg) + e2:SetOperation(c77901552.spop) + c:RegisterEffect(e2) +end +function c77901552.hspcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)~=0 +end +function c77901552.hspop(e,tp,eg,ep,ev,re,r,rp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c77901552.spfilter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c77901552.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c77901552.spop(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,aux.NecroValleyFilter(c77901552.spfilter),tp,0x13,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c77936940.lua b/script/c77936940.lua index 359965a2..fed9aa76 100644 --- a/script/c77936940.lua +++ b/script/c77936940.lua @@ -3,6 +3,7 @@ function c77936940.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c77936940.reg) c:RegisterEffect(e1) diff --git a/script/c78009994.lua b/script/c78009994.lua index 5ec402aa..78257f6f 100644 --- a/script/c78009994.lua +++ b/script/c78009994.lua @@ -1,50 +1,50 @@ ---ドラゴニック・ガード -function c78009994.initial_effect(c) - c:EnableCounterPermit(0x22) - --add counter - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c78009994.ctop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_MSET) - c:RegisterEffect(e2) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetDescription(aux.Stringid(78009994,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c78009994.spcost) - e2:SetTarget(c78009994.sptg) - e2:SetOperation(c78009994.spop) - c:RegisterEffect(e2) -end -function c78009994.ctop(e,tp,eg,ep,ev,re,r,rp) - if eg:GetFirst()~=e:GetHandler() then - e:GetHandler():AddCounter(0x22,1) - end -end -function c78009994.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - e:SetLabel(e:GetHandler():GetCounter(0x22)) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c78009994.spfilter(c,lv,e,tp) - return c:IsLevelBelow(lv) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c78009994.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c78009994.spfilter,tp,LOCATION_DECK,0,1,nil,e:GetHandler():GetCounter(0x22),e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c78009994.spop(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,c78009994.spfilter,tp,LOCATION_DECK,0,1,1,nil,e:GetLabel(),e,tp) - if g:GetCount()~=0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--ドラゴニック・ガード +function c78009994.initial_effect(c) + c:EnableCounterPermit(0x22) + --add counter + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c78009994.ctop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_MSET) + c:RegisterEffect(e2) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetDescription(aux.Stringid(78009994,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c78009994.spcost) + e2:SetTarget(c78009994.sptg) + e2:SetOperation(c78009994.spop) + c:RegisterEffect(e2) +end +function c78009994.ctop(e,tp,eg,ep,ev,re,r,rp) + if eg:GetFirst()~=e:GetHandler() then + e:GetHandler():AddCounter(0x22,1) + end +end +function c78009994.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabel(e:GetHandler():GetCounter(0x22)) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c78009994.spfilter(c,lv,e,tp) + return c:IsLevelBelow(lv) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c78009994.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c78009994.spfilter,tp,LOCATION_DECK,0,1,nil,e:GetHandler():GetCounter(0x22),e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c78009994.spop(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,c78009994.spfilter,tp,LOCATION_DECK,0,1,1,nil,e:GetLabel(),e,tp) + if g:GetCount()~=0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c78033100.lua b/script/c78033100.lua index 8b92adaa..7cbf56a5 100644 --- a/script/c78033100.lua +++ b/script/c78033100.lua @@ -1,63 +1,63 @@ ---聖刻龍-ドラゴンゲイヴ -function c78033100.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(78033100,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(c78033100.spcon) - e1:SetTarget(c78033100.sptg) - e1:SetOperation(c78033100.spop) - e1:SetLabel(0) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(78033100,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_RELEASE) - e2:SetTarget(c78033100.sptg) - e2:SetOperation(c78033100.spop) - e2:SetLabel(1) - c:RegisterEffect(e2) -end -function c78033100.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsRelateToBattle() and c:IsFaceup() and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) -end -function c78033100.spfilter1(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c78033100.spfilter2(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsSetCard(0x69) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c78033100.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) -end -function c78033100.spop(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=nil - if e:GetLabel()==0 then - g=Duel.SelectMatchingCard(tp,c78033100.spfilter1,tp,0x13,0,1,1,nil,e,tp) - else - g=Duel.SelectMatchingCard(tp,c78033100.spfilter2,tp,0x13,0,1,1,nil,e,tp) - end - local tc=g:GetFirst() - if tc and tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end - if tc and Duel.SpecialSummonStep(g:GetFirst(),0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - end -end +--聖刻龍-ドラゴンゲイヴ +function c78033100.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(78033100,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c78033100.spcon) + e1:SetTarget(c78033100.sptg) + e1:SetOperation(c78033100.spop) + e1:SetLabel(0) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(78033100,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_RELEASE) + e2:SetTarget(c78033100.sptg) + e2:SetOperation(c78033100.spop) + e2:SetLabel(1) + c:RegisterEffect(e2) +end +function c78033100.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and c:IsFaceup() and bc:IsLocation(LOCATION_GRAVE) and bc:IsReason(REASON_BATTLE) +end +function c78033100.spfilter1(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c78033100.spfilter2(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsSetCard(0x69) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c78033100.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c78033100.spop(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=nil + if e:GetLabel()==0 then + g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c78033100.spfilter1),tp,0x13,0,1,1,nil,e,tp) + else + g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c78033100.spfilter2),tp,0x13,0,1,1,nil,e,tp) + end + local tc=g:GetFirst() + if not tc then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c78082039.lua b/script/c78082039.lua index aee9cffc..0685c75b 100644 --- a/script/c78082039.lua +++ b/script/c78082039.lua @@ -1,47 +1,47 @@ ---クローザー・フォレスト -function c78082039.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_BEAST)) - e2:SetValue(c78082039.val) - c:RegisterEffect(e2) - --cannot activate - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_ACTIVATE) - e3:SetRange(LOCATION_FZONE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,1) - e3:SetValue(c78082039.efilter) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_DESTROYED) - e4:SetOperation(c78082039.desop) - c:RegisterEffect(e4) -end -function c78082039.val(e,c) - return Duel.GetMatchingGroupCount(Card.IsType,e:GetHandlerPlayer(),LOCATION_GRAVE,0,nil,TYPE_MONSTER)*100 -end -function c78082039.efilter(e,re,tp) - return re:GetHandler():IsType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c78082039.desop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,1) - e1:SetValue(c78082039.efilter) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end +--クローザー・フォレスト +function c78082039.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_BEAST)) + e2:SetValue(c78082039.val) + c:RegisterEffect(e2) + --cannot activate + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_FZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,1) + e3:SetValue(c78082039.efilter) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_DESTROYED) + e4:SetOperation(c78082039.desop) + c:RegisterEffect(e4) +end +function c78082039.val(e,c) + return Duel.GetMatchingGroupCount(Card.IsType,e:GetHandlerPlayer(),LOCATION_GRAVE,0,nil,TYPE_MONSTER)*100 +end +function c78082039.efilter(e,re,tp) + return re:GetHandler():IsType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c78082039.desop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetValue(c78082039.efilter) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c78161960.lua b/script/c78161960.lua index 926b448d..ff074159 100644 --- a/script/c78161960.lua +++ b/script/c78161960.lua @@ -1,57 +1,56 @@ ---リジェクト・リボーン -function c78161960.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c78161960.condition) - e1:SetCost(c78161960.cost) - e1:SetOperation(c78161960.activate) - c:RegisterEffect(e1) -end -function c78161960.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:GetFirst():IsControler(1-tp) and Duel.GetAttackTarget()==nil -end -function c78161960.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.RegisterFlagEffect(tp,78161960,RESET_PHASE+PHASE_BATTLE,0,1) -end -function c78161960.filter(c,e,tp) - return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c78161960.filter2,tp,LOCATION_GRAVE,0,1,c,e,tp) -end -function c78161960.filter2(c,e,tp) - return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c78161960.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFlagEffect(tp,78161960)==0 then return end - local c=e:GetHandler() - Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) - if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingMatchingCard(c78161960.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) - and Duel.SelectYesNo(tp,aux.Stringid(78161960,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectMatchingCard(tp,c78161960.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectMatchingCard(tp,c78161960.filter2,tp,LOCATION_GRAVE,0,1,1,g1:GetFirst(),e,tp) - g1:Merge(g2) - if g1:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP) - local tc=g1:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - tc=g1:GetNext() - end - end -end +--リジェクト・リボーン +function c78161960.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c78161960.condition) + e1:SetCost(c78161960.cost) + e1:SetOperation(c78161960.activate) + c:RegisterEffect(e1) +end +function c78161960.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c78161960.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.RegisterFlagEffect(tp,78161960,RESET_PHASE+PHASE_BATTLE,0,1) +end +function c78161960.filter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c78161960.filter2,tp,LOCATION_GRAVE,0,1,c,e,tp) +end +function c78161960.filter2(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c78161960.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFlagEffect(tp,78161960)==0 then return end + local c=e:GetHandler() + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c78161960.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(78161960,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c78161960.filter),tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c78161960.filter2),tp,LOCATION_GRAVE,0,1,1,g1:GetFirst(),e,tp) + g1:Merge(g2) + Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP) + local tc=g1:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g1:GetNext() + end + end +end diff --git a/script/c7817703.lua b/script/c7817703.lua index 4d04d900..fc083b2d 100644 --- a/script/c7817703.lua +++ b/script/c7817703.lua @@ -1,45 +1,19 @@ --D・パワーユニット function c7817703.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(c7817703.target) - e1:SetOperation(c7817703.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c7817703.filter,nil,nil,nil,c7817703.operation) --Atk Change local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_SET_ATTACK) e2:SetValue(c7817703.value) 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(c7817703.eqlimit) - c:RegisterEffect(e3) -end -function c7817703.eqlimit(e,c) - return c:IsSetCard(0x26) and c:GetLevel()==3 end function c7817703.filter(c) - return c:IsFaceup() and c:IsSetCard(0x26) and c:GetLevel()==3 -end -function c7817703.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c7817703.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c7817703.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c7817703.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + return c:IsSetCard(0x26) and c:GetLevel()==3 end function c7817703.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) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) diff --git a/script/c78211862.lua b/script/c78211862.lua index aeee5cd1..bedda3b2 100644 --- a/script/c78211862.lua +++ b/script/c78211862.lua @@ -1,39 +1,39 @@ ---ライジング・エナジー -function c78211862.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(c78211862.condition) - e1:SetCost(c78211862.cost) - e1:SetTarget(c78211862.target) - e1:SetOperation(c78211862.activate) - c:RegisterEffect(e1) -end -function c78211862.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c78211862.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 c78211862.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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c78211862.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(1500) - tc:RegisterEffect(e1) - end -end +--ライジング・エナジー +function c78211862.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(c78211862.condition) + e1:SetCost(c78211862.cost) + e1:SetTarget(c78211862.target) + e1:SetOperation(c78211862.activate) + c:RegisterEffect(e1) +end +function c78211862.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c78211862.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 c78211862.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c78211862.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1500) + tc:RegisterEffect(e1) + end +end diff --git a/script/c78274190.lua b/script/c78274190.lua index af741695..480d6346 100644 --- a/script/c78274190.lua +++ b/script/c78274190.lua @@ -1,79 +1,78 @@ ---超重輝将サン-5 -function c78274190.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --scale - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CHANGE_LSCALE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c78274190.sccon) - e2:SetValue(4) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_CHANGE_RSCALE) - c:RegisterEffect(e3) - --chain attack - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(78274190,0)) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_BATTLED) - e4:SetRange(LOCATION_PZONE) - e4:SetCountLimit(1) - e4:SetCondition(c78274190.cacon) - e4:SetOperation(c78274190.caop) - c:RegisterEffect(e4) - --draw - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(78274190,1)) - e5:SetCategory(CATEGORY_DRAW) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1,78274190) - e5:SetCondition(c78274190.condition) - e5:SetCost(c78274190.cost) - e5:SetTarget(c78274190.target) - e5:SetOperation(c78274190.operation) - c:RegisterEffect(e5) -end -function c78274190.sccon(e) - local tp=e:GetHandlerPlayer() - return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) -end -function c78274190.cacon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if not d then return false end - if a:IsStatus(STATUS_OPPO_BATTLE) and d:IsControler(tp) then a,d=d,a end - if a:IsSetCard(0x9a) and a:IsChainAttackable() - and not a:IsStatus(STATUS_BATTLE_DESTROYED) and d:IsStatus(STATUS_BATTLE_DESTROYED) then - e:SetLabelObject(a) - return true - else return false end -end -function c78274190.caop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=e:GetLabelObject() - if tc:IsFaceup() and tc:IsControler(tp) and tc:IsRelateToBattle() then - Duel.ChainAttack() - end -end -function c78274190.condition(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) -end -function c78274190.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x9a) end - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct>2 then ct=2 end - local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,ct,nil,0x9a) - local rct=Duel.Release(g,REASON_COST) - e:SetLabel(rct) -end -function c78274190.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel()) -end -function c78274190.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Draw(tp,e:GetLabel(),REASON_EFFECT) -end +--超重輝将サン-5 +function c78274190.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --scale + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CHANGE_LSCALE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c78274190.sccon) + e2:SetValue(4) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e3) + --chain attack + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(78274190,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLE_DESTROYING) + e4:SetRange(LOCATION_PZONE) + e4:SetCountLimit(1) + e4:SetCondition(c78274190.cacon) + e4:SetOperation(c78274190.caop) + c:RegisterEffect(e4) + --draw + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(78274190,1)) + e5:SetCategory(CATEGORY_DRAW) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1,78274190) + e5:SetCondition(c78274190.condition) + e5:SetCost(c78274190.cost) + e5:SetTarget(c78274190.target) + e5:SetOperation(c78274190.operation) + c:RegisterEffect(e5) +end +function c78274190.sccon(e) + local tp=e:GetHandlerPlayer() + return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) +end +function c78274190.cacon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if a:IsStatus(STATUS_OPPO_BATTLE) and d:IsControler(tp) then a,d=d,a end + if a:IsSetCard(0x9a) and a:IsChainAttackable() then + e:SetLabelObject(a) + return true + else return false end +end +function c78274190.caop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=e:GetLabelObject() + if tc:IsFaceup() and tc:IsControler(tp) and tc:IsRelateToBattle() then + Duel.ChainAttack() + end +end +function c78274190.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) +end +function c78274190.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,nil,0x9a) end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if ct>2 then ct=2 end + local g=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,ct,nil,0x9a) + local rct=Duel.Release(g,REASON_COST) + e:SetLabel(rct) +end +function c78274190.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,e:GetLabel()) +end +function c78274190.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(tp,e:GetLabel(),REASON_EFFECT) +end diff --git a/script/c78316184.lua b/script/c78316184.lua index 47919865..431a26b9 100644 --- a/script/c78316184.lua +++ b/script/c78316184.lua @@ -76,8 +76,7 @@ function c78316184.negtg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c78316184.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c78349103.lua b/script/c78349103.lua index 243fdcf8..06f34016 100644 --- a/script/c78349103.lua +++ b/script/c78349103.lua @@ -16,7 +16,7 @@ function c78349103.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c78349103.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c78349103.sptg) e2:SetOperation(c78349103.spop) c:RegisterEffect(e2) @@ -25,7 +25,7 @@ function c78349103.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetCondition(c78349103.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetValue(1) c:RegisterEffect(e3) --eqlimit @@ -47,9 +47,7 @@ function c78349103.initial_effect(c) e5:SetOperation(c78349103.sop) c:RegisterEffect(e5) end -function c78349103.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c78349103.old_union=true function c78349103.filter(c) return c:IsFaceup() and c:IsRace(RACE_MACHINE) and c:GetUnionCount()==0 end @@ -71,7 +69,7 @@ function c78349103.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c78349103.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(78349103)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c78371393.lua b/script/c78371393.lua index 4b149821..1624d932 100644 --- a/script/c78371393.lua +++ b/script/c78371393.lua @@ -91,8 +91,8 @@ function c78371393.sptg(e,tp,eg,ep,ev,re,r,rp,chk) end function c78371393.spop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c78371393.filter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c78371393.filter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) Duel.ShuffleDeck(tp) end diff --git a/script/c7841112.lua b/script/c7841112.lua index e51f42dd..f96af9bb 100644 --- a/script/c7841112.lua +++ b/script/c7841112.lua @@ -59,27 +59,14 @@ function c7841112.matfilter(c,syncard) return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) end function c7841112.synfilter1(c,syncard,lv,g) - if not c:IsCode(21159309) then return false end - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - local t=false - if c:IsType(TYPE_TUNER) then t=true end - local wg=g:Clone() - wg:RemoveCard(c) - return wg:IsExists(c7841112.synfilter2,1,nil,syncard,lv-tlv,wg,t) -end -function c7841112.synfilter2(c,syncard,lv,g,tuner) - if not c:IsCode(44508094) then return false end - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - if not tuner and not c:IsType(TYPE_TUNER) then return false end - return g:IsExists(c7841112.synfilter3,1,c,syncard,lv-tlv) + return c:IsCode(21159309) and g:IsExists(c7841112.synfilter2,1,c,syncard,lv,g,c) end -function c7841112.synfilter3(c,syncard,lv) - local mlv=c:GetSynchroLevel(syncard) - local lv1=bit.band(mlv,0xffff) - local lv2=bit.rshift(mlv,16) - return c:IsNotTuner() and (lv1==lv or lv2==lv) +function c7841112.synfilter2(c,syncard,lv,g,mc) + if not c:IsCode(44508094) then return false end + if c:IsType(TYPE_TUNER)==mc:IsType(TYPE_TUNER) then return false end + local mg=g:Filter(Card.IsNotTuner,nil) + Duel.SetSelectedCard(Group.FromCards(c,mc)) + return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard) end function c7841112.syncon(e,c,tuner) if c==nil then return true end @@ -100,18 +87,13 @@ function c7841112.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) m1=t1:GetFirst() g:AddCard(m1) end - lv=lv-m1:GetSynchroLevel(c) - local t=false - if m1:IsType(TYPE_TUNER) then t=true end - mg:RemoveCard(m1) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local t2=mg:FilterSelect(tp,c7841112.synfilter2,1,1,nil,c,lv,mg,t) - local m2=t2:GetFirst() - g:AddCard(m2) - lv=lv-m2:GetSynchroLevel(c) - mg:RemoveCard(m2) + local t2=mg:FilterSelect(tp,c7841112.synfilter2,1,1,m1,c,lv,mg,m1) + g:Merge(t2) + local mg2=mg:Filter(Card.IsNotTuner,nil) + Duel.SetSelectedCard(g) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local t3=mg:FilterSelect(tp,c7841112.synfilter3,1,1,nil,c,lv) + local t3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) g:Merge(t3) c:SetMaterial(g) Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) @@ -130,8 +112,7 @@ function c7841112.negtg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) end function c7841112.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then Duel.SendtoGrave(eg,REASON_EFFECT) end local g=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_ONFIELD,nil) diff --git a/script/c7841921.lua b/script/c7841921.lua index 594fc7e3..720f7f3b 100644 --- a/script/c7841921.lua +++ b/script/c7841921.lua @@ -1,61 +1,61 @@ ---疾走の暗黒騎士ガイア -function c7841921.initial_effect(c) - --summon with no tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(7841921,0)) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SUMMON_PROC) - e1:SetCondition(c7841921.ntcon) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SUMMON_COST) - e2:SetOperation(c7841921.atkop) - c:RegisterEffect(e2) - --tohand - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_RELEASE) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,7841921) - e3:SetTarget(c7841921.thtg) - e3:SetOperation(c7841921.thop) - c:RegisterEffect(e3) -end -function c7841921.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c7841921.atkcon(e) - return e:GetHandler():GetMaterialCount()==0 -end -function c7841921.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_BASE_ATTACK) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c7841921.atkcon) - e1:SetValue(1900) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) -end -function c7841921.thfilter(c) - return c:IsSetCard(0x10cf) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c7841921.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c7841921.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c7841921.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c7841921.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--疾走の暗黒騎士ガイア +function c7841921.initial_effect(c) + --summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7841921,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c7841921.ntcon) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SUMMON_COST) + e2:SetOperation(c7841921.atkop) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_RELEASE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,7841921) + e3:SetTarget(c7841921.thtg) + e3:SetOperation(c7841921.thop) + c:RegisterEffect(e3) +end +function c7841921.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c7841921.atkcon(e) + return e:GetHandler():GetMaterialCount()==0 +end +function c7841921.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c7841921.atkcon) + e1:SetValue(1900) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) +end +function c7841921.thfilter(c) + return c:IsSetCard(0x10cf) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c7841921.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c7841921.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c7841921.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c7841921.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c7845138.lua b/script/c7845138.lua index 02791dff..a2ece335 100644 --- a/script/c7845138.lua +++ b/script/c7845138.lua @@ -1,38 +1,38 @@ ---茫漠の死者 -function c7845138.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c7845138.spcon) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(7845138,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetOperation(c7845138.atkop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c7845138.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 - and Duel.GetLP(c:GetControler())<=2000 -end -function c7845138.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:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(Duel.GetLP(1-tp)/2) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end +--茫漠の死者 +function c7845138.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c7845138.spcon) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(7845138,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetOperation(c7845138.atkop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c7845138.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.GetLP(c:GetControler())<=2000 +end +function c7845138.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:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(Duel.GetLP(1-tp)/2) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c78474168.lua b/script/c78474168.lua index 419282f8..ef0771e9 100644 --- a/script/c78474168.lua +++ b/script/c78474168.lua @@ -1,78 +1,78 @@ ---ブレイクスルー・スキル -function c78474168.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetTarget(c78474168.target) - e1:SetOperation(c78474168.activate) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(78474168,0)) - e2:SetCategory(CATEGORY_DISABLE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCondition(c78474168.negcon) - e2:SetCost(c78474168.negcost) - e2:SetTarget(c78474168.target) - e2:SetOperation(c78474168.activate2) - c:RegisterEffect(e2) -end -function c78474168.filter(c) - return c:IsFaceup() and c:IsType(TYPE_EFFECT) and not c:IsDisabled() -end -function c78474168.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c78474168.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c78474168.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c78474168.filter,tp,0,LOCATION_MZONE,1,1,nil) -end -function c78474168.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsDisabled() and tc:IsControler(1-tp) then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end -function c78474168.negcon(e,tp,eg,ep,ev,re,r,rp) - return aux.exccon(e) and Duel.GetTurnPlayer()==tp -end -function c78474168.negcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c78474168.activate2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsDisabled() and tc:IsControler(1-tp) and tc:IsType(TYPE_EFFECT) then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--ブレイクスルー・スキル +function c78474168.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetTarget(c78474168.target) + e1:SetOperation(c78474168.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(78474168,0)) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c78474168.negcon) + e2:SetCost(c78474168.negcost) + e2:SetTarget(c78474168.target) + e2:SetOperation(c78474168.activate2) + c:RegisterEffect(e2) +end +function c78474168.filter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) and not c:IsDisabled() +end +function c78474168.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c78474168.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c78474168.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c78474168.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c78474168.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsDisabled() and tc:IsControler(1-tp) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c78474168.negcon(e,tp,eg,ep,ev,re,r,rp) + return aux.exccon(e) and Duel.GetTurnPlayer()==tp +end +function c78474168.negcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c78474168.activate2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsDisabled() and tc:IsControler(1-tp) and tc:IsType(TYPE_EFFECT) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c78512663.lua b/script/c78512663.lua index 1ee8c64f..ec8a29cd 100644 --- a/script/c78512663.lua +++ b/script/c78512663.lua @@ -1,141 +1,142 @@ ---E・HERO マグマ・ネオス -function c78512663.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode3(c,89943723,89621922,80344569,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c78512663.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c78512663.spcon) - e2:SetOperation(c78512663.spop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(78512663,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c78512663.retcon1) - e3:SetTarget(c78512663.rettg) - e3:SetOperation(c78512663.retop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(0) - e4:SetCondition(c78512663.retcon2) - c:RegisterEffect(e4) - --atkup - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetCode(EFFECT_UPDATE_ATTACK) - e5:SetRange(LOCATION_MZONE) - e5:SetValue(c78512663.atkval) - c:RegisterEffect(e5) - --tohand - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(78512663,1)) - e6:SetCategory(CATEGORY_TOHAND) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_CUSTOM+78512663) - e6:SetTarget(c78512663.thtg) - e6:SetOperation(c78512663.thop) - c:RegisterEffect(e6) -end -function c78512663.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) -end -function c78512663.spfilter(c,code) - return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) -end -function c78512663.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-2 then return false end - local g1=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) - local g3=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569) - if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end - if ft>0 then return true end - local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 - local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 - local f3=g3:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 - if ft==-2 then return f1+f2+f3==3 - elseif ft==-1 then return f1+f2+f3>=2 - else return f1+f2+f3>=1 end -end -function c78512663.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g1=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) - local g3=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569) - g1:Merge(g2) - g1:Merge(g3) - local g=Group.CreateGroup() - local tc=nil - for i=1,3 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - if ft<=0 then - tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() - else - tc=g1:Select(tp,1,1,nil):GetFirst() - end - g:AddCard(tc) - if tc:IsFusionCode(89943723) then - g1:Remove(Card.IsFusionCode,nil,89943723) - elseif tc:IsFusionCode(89621922) then - g1:Remove(Card.IsFusionCode,nil,89621922) - elseif tc:IsFusionCode(80344569) then - g1:Remove(Card.IsFusionCode,nil,80344569) - end - ft=ft+1 - end - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c78512663.atkval(e,c) - return Duel.GetFieldGroupCount(0,LOCATION_ONFIELD,LOCATION_ONFIELD)*400 -end -function c78512663.retcon1(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsHasEffect(42015635) -end -function c78512663.retcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsHasEffect(42015635) -end -function c78512663.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtra() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c78512663.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - Duel.SendtoDeck(c,nil,2,REASON_EFFECT) - if c:IsLocation(LOCATION_EXTRA) then - Duel.RaiseSingleEvent(c,EVENT_CUSTOM+78512663,e,0,0,0,0) - end -end -function c78512663.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c78512663.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) - Duel.SendtoHand(g,nil,REASON_EFFECT) -end +--E・HERO マグマ・ネオス +function c78512663.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,89943723,89621922,80344569,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c78512663.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c78512663.spcon) + e2:SetOperation(c78512663.spop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(78512663,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c78512663.retcon1) + e3:SetTarget(c78512663.rettg) + e3:SetOperation(c78512663.retop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(0) + e4:SetCondition(c78512663.retcon2) + c:RegisterEffect(e4) + --atkup + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c78512663.atkval) + c:RegisterEffect(e5) + --tohand + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(78512663,1)) + e6:SetCategory(CATEGORY_TOHAND) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_CUSTOM+78512663) + e6:SetTarget(c78512663.thtg) + e6:SetOperation(c78512663.thop) + c:RegisterEffect(e6) +end +c78512663.material_setcode=0x8 +function c78512663.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c78512663.spfilter(c,code) + return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) +end +function c78512663.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-2 then return false end + local g1=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) + local g3=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569) + if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + local f3=g3:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0 + if ft==-2 then return f1+f2+f3==3 + elseif ft==-1 then return f1+f2+f3>=2 + else return f1+f2+f3>=1 end +end +function c78512663.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) + local g3=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569) + g1:Merge(g2) + g1:Merge(g3) + local g=Group.CreateGroup() + local tc=nil + for i=1,3 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + if tc:IsFusionCode(89943723) then + g1:Remove(Card.IsFusionCode,nil,89943723) + elseif tc:IsFusionCode(89621922) then + g1:Remove(Card.IsFusionCode,nil,89621922) + elseif tc:IsFusionCode(80344569) then + g1:Remove(Card.IsFusionCode,nil,80344569) + end + ft=ft+1 + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c78512663.atkval(e,c) + return Duel.GetFieldGroupCount(0,LOCATION_ONFIELD,LOCATION_ONFIELD)*400 +end +function c78512663.retcon1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(42015635) +end +function c78512663.retcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasEffect(42015635) +end +function c78512663.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtra() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c78512663.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + Duel.SendtoDeck(c,nil,2,REASON_EFFECT) + if c:IsLocation(LOCATION_EXTRA) then + Duel.RaiseSingleEvent(c,EVENT_CUSTOM+78512663,e,0,0,0,0) + end +end +function c78512663.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c78512663.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SendtoHand(g,nil,REASON_EFFECT) +end diff --git a/script/c78574395.lua b/script/c78574395.lua index 87a37f24..059c3929 100644 --- a/script/c78574395.lua +++ b/script/c78574395.lua @@ -1,46 +1,46 @@ ---ワンダー・バルーン -function c78574395.initial_effect(c) - c:EnableCounterPermit(0x32) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(78574395,0)) - e2:SetCategory(CATEGORY_COUNTER) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCost(c78574395.cost) - e2:SetTarget(c78574395.target) - e2:SetOperation(c78574395.operation) - c:RegisterEffect(e2) - --atk down - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetValue(c78574395.atkval) - c:RegisterEffect(e3) -end -function c78574395.atkval(e,c) - return e:GetHandler():GetCounter(0x32)*-300 -end -function c78574395.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end - local ct=Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,60,REASON_COST) - e:SetLabel(ct) -end -function c78574395.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,e:GetLabel(),0,0x32) -end -function c78574395.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - c:AddCounter(0x32,e:GetLabel()) - end -end +--ワンダー・バルーン +function c78574395.initial_effect(c) + c:EnableCounterPermit(0x32) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(78574395,0)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCost(c78574395.cost) + e2:SetTarget(c78574395.target) + e2:SetOperation(c78574395.operation) + c:RegisterEffect(e2) + --atk down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(c78574395.atkval) + c:RegisterEffect(e3) +end +function c78574395.atkval(e,c) + return e:GetHandler():GetCounter(0x32)*-300 +end +function c78574395.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + local ct=Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,60,REASON_COST) + e:SetLabel(ct) +end +function c78574395.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,e:GetLabel(),0,0x32) +end +function c78574395.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + c:AddCounter(0x32,e:GetLabel()) + end +end diff --git a/script/c78577570.lua b/script/c78577570.lua index 790ca23a..e013829b 100644 --- a/script/c78577570.lua +++ b/script/c78577570.lua @@ -1,4 +1,4 @@ ---ガルマソードの誓い -function c78577570.initial_effect(c) - aux.AddRitualProcGreaterCode(c,90844184) -end +--ガルマソードの誓い +function c78577570.initial_effect(c) + aux.AddRitualProcGreaterCode(c,90844184) +end diff --git a/script/c78610936.lua b/script/c78610936.lua index f015e663..7bd2152e 100644 --- a/script/c78610936.lua +++ b/script/c78610936.lua @@ -1,60 +1,60 @@ ---エクシーズ・オーバーディレイ -function c78610936.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - e1:SetTarget(c78610936.target) - e1:SetOperation(c78610936.activate) - c:RegisterEffect(e1) -end -function c78610936.filter(c) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsAbleToExtra() and c:GetOverlayCount()>0 -end -function c78610936.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c78610936.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c78610936.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c78610936.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - Duel.SetChainLimit(aux.FALSE) - end -end -function c78610936.spfilter(c,e,tp) - return c:IsLocation(LOCATION_GRAVE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) -end -function c78610936.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) then return end - local mg=tc:GetOverlayGroup() - Duel.SendtoGrave(mg,REASON_EFFECT) - if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)>0 then - local g=mg:Filter(c78610936.spfilter,nil,e,tp) - local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) - if ft>0 and g:GetCount()>0 then - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - if g:GetCount()>ft then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - g=g:Select(tp,ft,ft,nil) - end - local tc=g:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) - if tc:GetLevel()>0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(-1) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end - tc=g:GetNext() - end - Duel.SpecialSummonComplete() - end - end -end +--エクシーズ・オーバーディレイ +function c78610936.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c78610936.target) + e1:SetOperation(c78610936.activate) + c:RegisterEffect(e1) +end +function c78610936.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsAbleToExtra() and c:GetOverlayCount()>0 +end +function c78610936.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c78610936.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c78610936.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c78610936.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + Duel.SetChainLimit(aux.FALSE) + end +end +function c78610936.spfilter(c,e,tp) + return c:IsLocation(LOCATION_GRAVE) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) +end +function c78610936.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local mg=tc:GetOverlayGroup() + Duel.SendtoGrave(mg,REASON_EFFECT) + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)>0 then + local g=mg:Filter(aux.NecroValleyFilter(c78610936.spfilter),nil,e,tp) + local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft>0 and g:GetCount()>0 then + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if g:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + g=g:Select(tp,ft,ft,nil) + end + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + if tc:GetLevel()>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end + end +end diff --git a/script/c7864030.lua b/script/c7864030.lua index 20deec43..eab4e70c 100644 --- a/script/c7864030.lua +++ b/script/c7864030.lua @@ -1,66 +1,66 @@ ---超重武者タイマ-2 -function c7864030.initial_effect(c) - --change battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c7864030.condition1) - e1:SetCost(c7864030.cost) - e1:SetTarget(c7864030.target1) - e1:SetOperation(c7864030.operation1) - c:RegisterEffect(e1) - --change battle target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c7864030.condition2) - e2:SetOperation(c7864030.operation2) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e3:SetValue(1) - c:RegisterEffect(e3) -end -function c7864030.condition1(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) -end -function c7864030.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c7864030.filter(c) - return c:IsFaceup() and c:IsSetCard(0x9a) -end -function c7864030.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c7864030.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c7864030.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c7864030.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c7864030.operation1(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local at=Duel.GetAttacker() - if at:IsAttackable() and not at:IsImmuneToEffect(e) and not tc:IsImmuneToEffect(e) then - Duel.CalculateDamage(at,tc) - end - end -end -function c7864030.condition2(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()~=e:GetHandler() -end -function c7864030.operation2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - local at=Duel.GetAttacker() - if at:IsAttackable() and not at:IsImmuneToEffect(e) then - Duel.CalculateDamage(at,c) - end - end -end +--超重武者タイマ-2 +function c7864030.initial_effect(c) + --change battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c7864030.condition1) + e1:SetCost(c7864030.cost) + e1:SetTarget(c7864030.target1) + e1:SetOperation(c7864030.operation1) + c:RegisterEffect(e1) + --change battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c7864030.condition2) + e2:SetOperation(c7864030.operation2) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c7864030.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) +end +function c7864030.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c7864030.filter(c) + return c:IsFaceup() and c:IsSetCard(0x9a) +end +function c7864030.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c7864030.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c7864030.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c7864030.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c7864030.operation1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local at=Duel.GetAttacker() + if at:IsAttackable() and not at:IsImmuneToEffect(e) and not tc:IsImmuneToEffect(e) then + Duel.CalculateDamage(at,tc) + end + end +end +function c7864030.condition2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()~=e:GetHandler() +end +function c7864030.operation2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local at=Duel.GetAttacker() + if at:IsAttackable() and not at:IsImmuneToEffect(e) then + Duel.CalculateDamage(at,c) + end + end +end diff --git a/script/c78651105.lua b/script/c78651105.lua index d049e827..c9693bcc 100644 --- a/script/c78651105.lua +++ b/script/c78651105.lua @@ -3,7 +3,6 @@ function c78651105.initial_effect(c) --summon & set with no tribute local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(78651105,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SUMMON_PROC) e1:SetCondition(c78651105.ntcon) @@ -15,7 +14,6 @@ function c78651105.initial_effect(c) --summon with 3 tribute local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(78651105,1)) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e3:SetType(EFFECT_TYPE_SINGLE) e3:SetCode(EFFECT_SUMMON_PROC) e3:SetCondition(c78651105.ttcon) @@ -48,9 +46,9 @@ function c78651105.ntop(e,tp,eg,ep,ev,re,r,rp,c) e1:SetValue(1900) c:RegisterEffect(e1) end -function c78651105.ttcon(e,c) +function c78651105.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetTributeCount(c)>=3 + return minc<=3 and Duel.CheckTribute(c,3) end function c78651105.ttop(e,tp,eg,ep,ev,re,r,rp,c) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) diff --git a/script/c78765160.lua b/script/c78765160.lua new file mode 100644 index 00000000..b105ca1c --- /dev/null +++ b/script/c78765160.lua @@ -0,0 +1,125 @@ +--不知火流 輪廻の陣 +function c78765160.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c78765160.target) + c:RegisterEffect(e1) + --change code + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_CHANGE_CODE) + e2:SetRange(LOCATION_SZONE) + e2:SetValue(40005099) + c:RegisterEffect(e2) + --no damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(78765160,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c78765160.damcost) + e3:SetTarget(c78765160.damtg) + e3:SetOperation(c78765160.damop) + c:RegisterEffect(e3) + --to deck + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(78765160,1)) + e4:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_SZONE) + e4:SetTarget(c78765160.tdtg) + e4:SetOperation(c78765160.tdop) + c:RegisterEffect(e4) +end +function c78765160.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c78765160.tdtg(e,tp,eg,ep,ev,re,r,rp,0,chkc) end + if chk==0 then return true end + local b1=c78765160.damcost(e,tp,eg,ep,ev,re,r,rp,0) + and c78765160.damtg(e,tp,eg,ep,ev,re,r,rp,0) + local b2=c78765160.tdtg(e,tp,eg,ep,ev,re,r,rp,0) + if (b1 or b2) and Duel.SelectYesNo(tp,94) then + local op=0 + if b1 and b2 then + op=Duel.SelectOption(tp,aux.Stringid(78765160,0),aux.Stringid(78765160,1)) + elseif b1 then + op=Duel.SelectOption(tp,aux.Stringid(78765160,0)) + else + op=Duel.SelectOption(tp,aux.Stringid(78765160,1))+1 + end + if op==0 then + c78765160.damcost(e,tp,eg,ep,ev,re,r,rp,1) + c78765160.damtg(e,tp,eg,ep,ev,re,r,rp,1) + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(c78765160.damop) + else + c78765160.tdtg(e,tp,eg,ep,ev,re,r,rp,1) + e:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c78765160.tdop) + end + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c78765160.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and c:IsAbleToRemoveAsCost() +end +function c78765160.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c78765160.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c78765160.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c78765160.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(78765160)==0 end + e:GetHandler():RegisterFlagEffect(78765160,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c78765160.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + 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(0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c78765160.tdfilter(c) + return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and c:GetDefense()==0 and c:IsAbleToDeck() +end +function c78765160.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c78765160.tdfilter(chkc) end + if chk==0 then return e:GetHandler():GetFlagEffect(78765160)==0 + and Duel.IsPlayerCanDraw(tp,1) + and Duel.IsExistingTarget(c78765160.tdfilter,tp,LOCATION_REMOVED,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c78765160.tdfilter,tp,LOCATION_REMOVED,0,2,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) + e:GetHandler():RegisterFlagEffect(78765160,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c78765160.tdop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not e:GetHandler():IsRelateToEffect(e) or not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=2 then return end + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + if g:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then Duel.ShuffleDeck(tp) end + local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + if ct==2 then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c78835747.lua b/script/c78835747.lua index d698bdb1..dac4a0eb 100644 --- a/script/c78835747.lua +++ b/script/c78835747.lua @@ -1,51 +1,51 @@ ---EMカレイドスコーピオン -function c78835747.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(c78835747.atktg) - e2:SetValue(300) - c:RegisterEffect(e2) - --attack all - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(78835747,0)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetCondition(c78835747.condition) - e3:SetTarget(c78835747.target) - e3:SetOperation(c78835747.operation) - c:RegisterEffect(e3) -end -function c78835747.atktg(e,c) - return c:IsAttribute(ATTRIBUTE_LIGHT) -end -function c78835747.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c78835747.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,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) -end -function c78835747.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_ATTACK_ALL) - e1:SetValue(c78835747.atkfilter) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c78835747.atkfilter(e,c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL -end +--EMカレイドスコーピオン +function c78835747.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c78835747.atktg) + e2:SetValue(300) + c:RegisterEffect(e2) + --attack all + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(78835747,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetCondition(c78835747.condition) + e3:SetTarget(c78835747.target) + e3:SetOperation(c78835747.operation) + c:RegisterEffect(e3) +end +function c78835747.atktg(e,c) + return c:IsAttribute(ATTRIBUTE_LIGHT) +end +function c78835747.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c78835747.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c78835747.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ATTACK_ALL) + e1:SetValue(c78835747.atkfilter) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c78835747.atkfilter(e,c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end diff --git a/script/c78872731.lua b/script/c78872731.lua new file mode 100644 index 00000000..1d2792f5 --- /dev/null +++ b/script/c78872731.lua @@ -0,0 +1,61 @@ +--十二獣モルモラット +function c78872731.initial_effect(c) + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(78872731,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c78872731.target) + e1:SetOperation(c78872731.operation) + c:RegisterEffect(e1) + --get effect + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(78872731,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_XMATERIAL+EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetCondition(c78872731.spcon) + e2:SetCost(c78872731.spcost) + e2:SetTarget(c78872731.sptg) + e2:SetOperation(c78872731.spop) + c:RegisterEffect(e2) +end +function c78872731.tgfilter(c) + return c:IsSetCard(0xf1) and c:IsAbleToGrave() +end +function c78872731.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c78872731.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c78872731.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c78872731.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c78872731.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOriginalRace()==RACE_BEASTWARRIOR +end +function c78872731.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c78872731.spfilter(c,e,tp) + return c:IsCode(78872731) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c78872731.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c78872731.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c78872731.spop(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,c78872731.spfilter,tp,LOCATION_DECK+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 diff --git a/script/c78942513.lua b/script/c78942513.lua new file mode 100644 index 00000000..cf70e7d4 --- /dev/null +++ b/script/c78942513.lua @@ -0,0 +1,71 @@ +--魂源への影劫回帰 +function c78942513.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_TOGRAVE) + 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(c78942513.condition) + e1:SetTarget(c78942513.target) + e1:SetOperation(c78942513.activate) + c:RegisterEffect(e1) +end +function c78942513.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c78942513.filter(c) + return c:IsSetCard(0x9d) and c:IsFaceup() +end +function c78942513.tgfilter(c) + return c:IsSetCard(0x9d) and c:IsAbleToGrave() +end +function c78942513.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c78942513.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c78942513.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c78942513.tgfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c78942513.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND) +end +function c78942513.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c78942513.tgfilter,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 and Duel.SendtoGrave(g,REASON_EFFECT)>0 and g:IsExists(Card.IsLocation,1,nil,LOCATION_GRAVE) then + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + local fid=c:GetFieldID() + tc:RegisterFlagEffect(78942513,RESET_EVENT+0x1fe0000,0,1,fid) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetCountLimit(1) + e3:SetLabel(fid) + e3:SetLabelObject(tc) + e3:SetCondition(c78942513.flipcon) + e3:SetOperation(c78942513.flipop) + Duel.RegisterEffect(e3,tp) + end + end +end +function c78942513.flipcon(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetFlagEffectLabel(78942513)~=e:GetLabel() then + e:Reset() + return false + else return true end +end +function c78942513.flipop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangePosition(e:GetLabelObject(),POS_FACEDOWN_DEFENSE) +end diff --git a/script/c78949372.lua b/script/c78949372.lua index 8dffbc73..e28fbfd2 100644 --- a/script/c78949372.lua +++ b/script/c78949372.lua @@ -1,91 +1,91 @@ ---マジェスペクター・スーパーセル -function c78949372.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c78949372.target) - e1:SetHintTiming(0,0x1c0) - c:RegisterEffect(e1) - --Draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(78949372,0)) - e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetTarget(c78949372.drtg) - e2:SetOperation(c78949372.drop) - c:RegisterEffect(e2) - --inactivatable - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CANNOT_INACTIVATE) - e4:SetRange(LOCATION_SZONE) - e4:SetCondition(c78949372.tgcon) - e4:SetValue(c78949372.effectfilter) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CANNOT_DISEFFECT) - e5:SetRange(LOCATION_SZONE) - e5:SetCondition(c78949372.tgcon) - e5:SetValue(c78949372.effectfilter) - c:RegisterEffect(e5) -end -function c78949372.filter(c) - return c:IsSetCard(0xd0) and c:IsAbleToDeck() -end -function c78949372.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return true end - if c78949372.drtg(e,tp,eg,ep,ev,re,r,rp,0,chkc) - and Duel.SelectYesNo(tp,94) then - e:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - e:SetOperation(c78949372.drop) - c78949372.drtg(e,tp,eg,ep,ev,re,r,rp,1,chkc) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(78949372,1)) - else - e:SetCategory(0) - e:SetProperty(0) - e:SetOperation(nil) - end -end -function c78949372.drtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c78949372.filter(chkc) end - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and e:GetHandler():GetFlagEffect(78949372)==0 - and Duel.IsExistingTarget(c78949372.filter,tp,LOCATION_GRAVE,0,5,nil) end - e:GetHandler():RegisterFlagEffect(78949372,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c78949372.filter,tp,LOCATION_GRAVE,0,5,5,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,5,0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c78949372.drop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=5 then return end - Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) - local g=Duel.GetOperatedGroup() - if g:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then Duel.ShuffleDeck(tp) end - local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) - if ct==5 then - Duel.BreakEffect() - Duel.Draw(tp,1,REASON_EFFECT) - end -end -function c78949372.tgcon(e) - local tp=e:GetHandlerPlayer() - local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) - local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) - return (tc1 and tc1:IsSetCard(0xd0)) or (tc2 and tc2:IsSetCard(0xd0)) -end -function c78949372.effectfilter(e,ct) - local p=e:GetHandlerPlayer() - local te,tp,loc=Duel.GetChainInfo(ct,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER,CHAININFO_TRIGGERING_LOCATION) - local tc=te:GetHandler() - return p==tp and bit.band(loc,LOCATION_ONFIELD)~=0 and tc:IsSetCard(0xd0) and tc~=e:GetHandler() -end +--マジェスペクター・スーパーセル +function c78949372.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c78949372.target) + e1:SetHintTiming(0,0x1c0) + c:RegisterEffect(e1) + --Draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(78949372,0)) + e2:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetTarget(c78949372.drtg) + e2:SetOperation(c78949372.drop) + c:RegisterEffect(e2) + --inactivatable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_INACTIVATE) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c78949372.tgcon) + e4:SetValue(c78949372.effectfilter) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_DISEFFECT) + e5:SetRange(LOCATION_SZONE) + e5:SetCondition(c78949372.tgcon) + e5:SetValue(c78949372.effectfilter) + c:RegisterEffect(e5) +end +function c78949372.filter(c) + return c:IsSetCard(0xd0) and c:IsAbleToDeck() +end +function c78949372.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + if c78949372.drtg(e,tp,eg,ep,ev,re,r,rp,0,chkc) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c78949372.drop) + c78949372.drtg(e,tp,eg,ep,ev,re,r,rp,1,chkc) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(78949372,1)) + else + e:SetCategory(0) + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c78949372.drtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c78949372.filter(chkc) end + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) and e:GetHandler():GetFlagEffect(78949372)==0 + and Duel.IsExistingTarget(c78949372.filter,tp,LOCATION_GRAVE,0,5,nil) end + e:GetHandler():RegisterFlagEffect(78949372,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c78949372.filter,tp,LOCATION_GRAVE,0,5,5,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,5,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c78949372.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=5 then return end + Duel.SendtoDeck(tg,nil,0,REASON_EFFECT) + local g=Duel.GetOperatedGroup() + if g:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then Duel.ShuffleDeck(tp) end + local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + if ct==5 then + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end +function c78949372.tgcon(e) + local tp=e:GetHandlerPlayer() + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + return (tc1 and tc1:IsSetCard(0xd0)) or (tc2 and tc2:IsSetCard(0xd0)) +end +function c78949372.effectfilter(e,ct) + local p=e:GetHandlerPlayer() + local te,tp,loc=Duel.GetChainInfo(ct,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER,CHAININFO_TRIGGERING_LOCATION) + local tc=te:GetHandler() + return p==tp and bit.band(loc,LOCATION_ONFIELD)~=0 and tc:IsSetCard(0xd0) and tc~=e:GetHandler() +end diff --git a/script/c79068663.lua b/script/c79068663.lua index a2759127..4761e5db 100644 --- a/script/c79068663.lua +++ b/script/c79068663.lua @@ -1,21 +1,6 @@ --ジャンク・アタック function c79068663.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(c79068663.target) - e1:SetOperation(c79068663.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) + aux.AddEquipProcedure(c) --damage local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(79068663,0)) @@ -29,19 +14,6 @@ function c79068663.initial_effect(c) e3:SetOperation(c79068663.damop) c:RegisterEffect(e3) end -function c79068663.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 c79068663.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 c79068663.damcon(e,tp,eg,ep,ev,re,r,rp) local eqc=e:GetHandler():GetEquipTarget() local des=eg:GetFirst() diff --git a/script/c79094383.lua b/script/c79094383.lua new file mode 100644 index 00000000..f507e89e --- /dev/null +++ b/script/c79094383.lua @@ -0,0 +1,55 @@ +--光波異邦臣 +function c79094383.initial_effect(c) + --material + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79094383,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE+LOCATION_HAND) + e1:SetCountLimit(1,79094383) + e1:SetTarget(c79094383.mattg) + e1:SetOperation(c79094383.matop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(79094383,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,79094383) + e2:SetTarget(c79094383.thtg) + e2:SetOperation(c79094383.thop) + c:RegisterEffect(e2) +end +function c79094383.matfilter(c) + return c:IsFaceup() and c:IsSetCard(0xe5) and c:IsType(TYPE_XYZ) +end +function c79094383.mattg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c79094383.matfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c79094383.matfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c79094383.matfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c79094383.matop(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 not tc:IsImmuneToEffect(e) then + Duel.Overlay(tc,Group.FromCards(c)) + end +end +function c79094383.thfilter(c) + return c:IsSetCard(0xe5) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c79094383.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c79094383.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c79094383.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c79094383.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c79109599.lua b/script/c79109599.lua index 79219d0e..b5f86e62 100644 --- a/script/c79109599.lua +++ b/script/c79109599.lua @@ -1,42 +1,42 @@ ---沼地の魔神王 -function c79109599.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(79109599,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c79109599.cost) - e1:SetTarget(c79109599.target) - e1:SetOperation(c79109599.operation) - c:RegisterEffect(e1) - --fusion substitute - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_FUSION_SUBSTITUTE) - e2:SetCondition(c79109599.subcon) - c:RegisterEffect(e2) -end -function c79109599.subcon(e) - return e:GetHandler():IsLocation(LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE) -end -function c79109599.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c79109599.filter(c) - return c:IsCode(24094653) and c:IsAbleToHand() -end -function c79109599.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c79109599.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c79109599.operation(e,tp,eg,ep,ev,re,r,rp,chk) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c79109599.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--沼地の魔神王 +function c79109599.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79109599,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c79109599.cost) + e1:SetTarget(c79109599.target) + e1:SetOperation(c79109599.operation) + c:RegisterEffect(e1) + --fusion substitute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_FUSION_SUBSTITUTE) + e2:SetCondition(c79109599.subcon) + c:RegisterEffect(e2) +end +function c79109599.subcon(e) + return e:GetHandler():IsLocation(LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE) +end +function c79109599.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c79109599.filter(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c79109599.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c79109599.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c79109599.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c79109599.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c79206750.lua b/script/c79206750.lua index 9222826d..c9d04922 100644 --- a/script/c79206750.lua +++ b/script/c79206750.lua @@ -1,63 +1,63 @@ ---アビスコーン -function c79206750.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(c79206750.condition) - e1:SetTarget(c79206750.target) - e1:SetOperation(c79206750.activate) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(79206750,0)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c79206750.tgcon) - e2:SetTarget(c79206750.tgtg) - e2:SetOperation(c79206750.tgop) - c:RegisterEffect(e2) -end -function c79206750.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c79206750.filter(c) - return c:IsFaceup() and c:IsSetCard(0x74) -end -function c79206750.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c79206750.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c79206750.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c79206750.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c79206750.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(1000) - tc:RegisterEffect(e1) - end -end -function c79206750.tgcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsPreviousPosition(POS_FACEDOWN) -end -function c79206750.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) -end -function c79206750.tgop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoGrave(tc,REASON_EFFECT) - end -end +--アビスコーン +function c79206750.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(c79206750.condition) + e1:SetTarget(c79206750.target) + e1:SetOperation(c79206750.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(79206750,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c79206750.tgcon) + e2:SetTarget(c79206750.tgtg) + e2:SetOperation(c79206750.tgop) + c:RegisterEffect(e2) +end +function c79206750.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c79206750.filter(c) + return c:IsFaceup() and c:IsSetCard(0x74) +end +function c79206750.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c79206750.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c79206750.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c79206750.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c79206750.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end +function c79206750.tgcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsPreviousPosition(POS_FACEDOWN) +end +function c79206750.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c79206750.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT) + end +end diff --git a/script/c7922915.lua b/script/c7922915.lua index 1e1d6e52..c4332d60 100644 --- a/script/c7922915.lua +++ b/script/c7922915.lua @@ -16,6 +16,7 @@ function c7922915.initial_effect(c) e2:SetRange(LOCATION_GRAVE) e2:SetProperty(EFFECT_FLAG_CARD_TARGET) e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,0x1c0) e2:SetCondition(c7922915.negcon) e2:SetCost(c7922915.negcost) e2:SetTarget(c7922915.negtg) @@ -54,7 +55,7 @@ function c7922915.cfilter(c) return c:IsCode(46986414) and c:IsFaceup() end function c7922915.negcon(e,tp,eg,ep,ev,re,r,rp) - return aux.exccon(e) and Duel.IsExistingMatchingCard(c7922915.cfilter,tp,LOCATION_MZONE,0,1,nil) + return aux.exccon(e) and Duel.IsExistingMatchingCard(c7922915.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end function c7922915.negcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end diff --git a/script/c79229522.lua b/script/c79229522.lua index 795727e4..2d0af451 100644 --- a/script/c79229522.lua +++ b/script/c79229522.lua @@ -1,78 +1,78 @@ ---キメラテック・フォートレス・ドラゴン -function c79229522.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,70095154,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),1,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c79229522.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c79229522.sprcon) - e2:SetOperation(c79229522.sprop) - c:RegisterEffect(e2) - --cannot be fusion material - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) - e3:SetValue(1) - c:RegisterEffect(e3) -end -function c79229522.splimit(e,se,sp,st) - return e:GetHandler():GetLocation()~=LOCATION_EXTRA -end -function c79229522.spfilter1(c,tp,ft) - if c:IsFusionCode(70095154) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial(nil,true) and (c:IsControler(tp) or c:IsFaceup()) then - if ft>0 or (c:IsControler(tp) and c:IsLocation(LOCATION_MZONE)) then - return Duel.IsExistingMatchingCard(c79229522.spfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,tp) - else - return Duel.IsExistingMatchingCard(c79229522.spfilter2,tp,LOCATION_MZONE,0,1,c,tp) - end - else return false end -end -function c79229522.spfilter2(c,tp) - return c:IsRace(RACE_MACHINE) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial() and (c:IsControler(tp) or c:IsFaceup()) -end -function c79229522.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - return ft>-1 and Duel.IsExistingMatchingCard(c79229522.spfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tp,ft) -end -function c79229522.sprop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(79229522,0)) - local g1=Duel.SelectMatchingCard(tp,c79229522.spfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,tp,ft) - local tc=g1:GetFirst() - local g=Duel.GetMatchingGroup(c79229522.spfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,tc,tp) - local g2=nil - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(79229522,1)) - if ft>0 or (tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE)) then - g2=g:Select(tp,1,10,nil) - else - g2=g:FilterSelect(tp,Card.IsControler,1,1,nil,tp) - if g:GetCount()>1 and Duel.SelectYesNo(tp,210) then - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(79229522,1)) - local g3=g:Select(tp,1,9,g2:GetFirst()) - g2:Merge(g3) - end - end - g1:Merge(g2) - Duel.SendtoGrave(g1,REASON_COST) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_BASE_ATTACK) - e1:SetReset(RESET_EVENT+0xff0000) - e1:SetValue(g1:GetCount()*1000) - c:RegisterEffect(e1) -end +--キメラテック・フォートレス・ドラゴン +function c79229522.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,70095154,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),1,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c79229522.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c79229522.sprcon) + e2:SetOperation(c79229522.sprop) + c:RegisterEffect(e2) + --cannot be fusion material + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c79229522.splimit(e,se,sp,st) + return e:GetHandler():GetLocation()~=LOCATION_EXTRA +end +function c79229522.spfilter1(c,tp,ft) + if c:IsFusionCode(70095154) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial() and (c:IsControler(tp) or c:IsFaceup()) then + if ft>0 or (c:IsControler(tp) and c:IsLocation(LOCATION_MZONE)) then + return Duel.IsExistingMatchingCard(c79229522.spfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,tp) + else + return Duel.IsExistingMatchingCard(c79229522.spfilter2,tp,LOCATION_MZONE,0,1,c,tp) + end + else return false end +end +function c79229522.spfilter2(c,tp) + return c:IsRace(RACE_MACHINE) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial() and (c:IsControler(tp) or c:IsFaceup()) +end +function c79229522.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return ft>-1 and Duel.IsExistingMatchingCard(c79229522.spfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tp,ft) +end +function c79229522.sprop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(79229522,0)) + local g1=Duel.SelectMatchingCard(tp,c79229522.spfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,tp,ft) + local tc=g1:GetFirst() + local g=Duel.GetMatchingGroup(c79229522.spfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,tc,tp) + local g2=nil + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(79229522,1)) + if ft>0 or (tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE)) then + g2=g:Select(tp,1,10,nil) + else + g2=g:FilterSelect(tp,Card.IsControler,1,1,nil,tp) + if g:GetCount()>1 and Duel.SelectYesNo(tp,210) then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(79229522,1)) + local g3=g:Select(tp,1,9,g2:GetFirst()) + g2:Merge(g3) + end + end + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetReset(RESET_EVENT+0xff0000) + e1:SetValue(g1:GetCount()*1000) + c:RegisterEffect(e1) +end diff --git a/script/c79234734.lua b/script/c79234734.lua index 2fd57e15..8c3e2ace 100644 --- a/script/c79234734.lua +++ b/script/c79234734.lua @@ -1,65 +1,65 @@ ---超戦士の魂 -function c79234734.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,79234734) - e1:SetCost(c79234734.atkcost) - e1:SetOperation(c79234734.atkop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,79234735) - e2:SetCost(c79234734.thcost) - e2:SetTarget(c79234734.thtg) - e2:SetOperation(c79234734.thop) - c:RegisterEffect(e2) -end -function c79234734.cfilter(c) - return c:IsSetCard(0x10cf) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() -end -function c79234734.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c79234734.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c79234734.cfilter,1,1,REASON_COST) -end -function c79234734.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(5405694) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_ATTACK_FINAL) - e2:SetValue(3000) - e2:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - c:RegisterEffect(e2) - end -end -function c79234734.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c79234734.thfilter(c) - return c:IsCode(6628343,32013448) and c:IsAbleToHand() -end -function c79234734.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c79234734.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c79234734.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c79234734.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--超戦士の魂 +function c79234734.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,79234734) + e1:SetCost(c79234734.atkcost) + e1:SetOperation(c79234734.atkop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,79234735) + e2:SetCost(c79234734.thcost) + e2:SetTarget(c79234734.thtg) + e2:SetOperation(c79234734.thop) + c:RegisterEffect(e2) +end +function c79234734.cfilter(c) + return c:IsSetCard(0x10cf) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c79234734.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c79234734.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c79234734.cfilter,1,1,REASON_COST) +end +function c79234734.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(5405694) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(3000) + e2:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + c:RegisterEffect(e2) + end +end +function c79234734.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c79234734.thfilter(c) + return c:IsCode(6628343,32013448) and c:IsAbleToHand() +end +function c79234734.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c79234734.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c79234734.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c79234734.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c79279397.lua b/script/c79279397.lua index 370d7fcb..b9dc7d39 100644 --- a/script/c79279397.lua +++ b/script/c79279397.lua @@ -21,6 +21,7 @@ end function c79279397.spop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetMatchingGroup(c79279397.filter,tp,LOCATION_DECK,0,nil,e,tp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end if g:GetCount()>0 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=g:Select(tp,1,ft,nil) diff --git a/script/c79306385.lua b/script/c79306385.lua index 3e38ec3d..36fde859 100644 --- a/script/c79306385.lua +++ b/script/c79306385.lua @@ -1,68 +1,68 @@ ---宣告者の神託 -function c79306385.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c79306385.target) - e1:SetOperation(c79306385.activate) - c:RegisterEffect(e1) -end -c79306385.fit_monster={48546368} -function c79306385.filter(c,e,tp,m,ft) - if not c:IsCode(48546368) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end - local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) - if ft>0 then - return mg:CheckWithSumGreater(Card.GetRitualLevel,12,c) - else - return mg:IsExists(c79306385.mfilterf,1,nil,tp,mg,c) - end -end -function c79306385.mfilterf(c,tp,mg,rc) - if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then - Duel.SetSelectedCard(c) - return mg:CheckWithSumGreater(Card.GetRitualLevel,12,rc) - else return false end -end -function c79306385.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local mg=Duel.GetRitualMaterial(tp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - return ft>-1 and Duel.IsExistingMatchingCard(c79306385.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg,ft) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - Duel.SetChainLimit(c79306385.chlimit) - end -end -function c79306385.chlimit(e,ep,tp) - return tp==ep -end -function c79306385.activate(e,tp,eg,ep,ev,re,r,rp) - local mg=Duel.GetRitualMaterial(tp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=Duel.SelectMatchingCard(tp,c79306385.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg,ft) - local tc=tg:GetFirst() - if tc then - mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) - local mat=nil - if ft>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,12,tc) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:FilterSelect(tp,c79306385.mfilterf,1,1,nil,tp,mg,tc) - Duel.SetSelectedCard(mat) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local mat2=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,12,tc) - mat:Merge(mat2) - end - tc:SetMaterial(mat) - Duel.ReleaseRitualMaterial(mat) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) - tc:CompleteProcedure() - end -end +--宣告者の神託 +function c79306385.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c79306385.target) + e1:SetOperation(c79306385.activate) + c:RegisterEffect(e1) +end +c79306385.fit_monster={48546368} +function c79306385.filter(c,e,tp,m,ft) + if not c:IsCode(48546368) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) + if ft>0 then + return mg:CheckWithSumGreater(Card.GetRitualLevel,12,c) + else + return mg:IsExists(c79306385.mfilterf,1,nil,tp,mg,c) + end +end +function c79306385.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumGreater(Card.GetRitualLevel,12,rc) + else return false end +end +function c79306385.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return ft>-1 and Duel.IsExistingMatchingCard(c79306385.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + Duel.SetChainLimit(c79306385.chlimit) + end +end +function c79306385.chlimit(e,ep,tp) + return tp==ep +end +function c79306385.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c79306385.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg,ft) + local tc=tg:GetFirst() + if tc then + mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) + local mat=nil + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,12,tc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c79306385.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumGreater(tp,Card.GetRitualLevel,12,tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c79323590.lua b/script/c79323590.lua index 4374f49c..87777279 100644 --- a/script/c79323590.lua +++ b/script/c79323590.lua @@ -1,48 +1,48 @@ ---魔力の枷 -function c79323590.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --activate cost - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_ACTIVATE_COST) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,1) - e2:SetTarget(c79323590.actarget) - e2:SetCost(c79323590.costchk) - e2:SetOperation(c79323590.costop) - c:RegisterEffect(e2) - --summon cost - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_SUMMON_COST) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_HAND,LOCATION_HAND) - e3:SetCost(c79323590.costchk) - e3:SetOperation(c79323590.costop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_SPSUMMON_COST) - c:RegisterEffect(e4) - --set cost - local e5=e3:Clone() - e5:SetCode(EFFECT_MSET_COST) - c:RegisterEffect(e5) - local e6=e3:Clone() - e6:SetCode(EFFECT_SSET_COST) - c:RegisterEffect(e6) -end -function c79323590.actarget(e,te,tp) - return te:GetHandler():IsLocation(LOCATION_HAND) -end -function c79323590.costchk(e,te_or_c,tp) - return Duel.CheckLPCost(tp,500) -end -function c79323590.costop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,79323590) - Duel.PayLPCost(tp,500) -end +--魔力の枷 +function c79323590.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --activate cost + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_ACTIVATE_COST) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetTarget(c79323590.actarget) + e2:SetCost(c79323590.costchk) + e2:SetOperation(c79323590.costop) + c:RegisterEffect(e2) + --summon cost + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SUMMON_COST) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e3:SetCost(c79323590.costchk) + e3:SetOperation(c79323590.costop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_SPSUMMON_COST) + c:RegisterEffect(e4) + --set cost + local e5=e3:Clone() + e5:SetCode(EFFECT_MSET_COST) + c:RegisterEffect(e5) + local e6=e3:Clone() + e6:SetCode(EFFECT_SSET_COST) + c:RegisterEffect(e6) +end +function c79323590.actarget(e,te,tp) + return te:GetHandler():IsLocation(LOCATION_HAND) +end +function c79323590.costchk(e,te_or_c,tp) + return Duel.CheckLPCost(tp,500) +end +function c79323590.costop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,79323590) + Duel.PayLPCost(tp,500) +end diff --git a/script/c79418928.lua b/script/c79418928.lua index f89a60e6..0429e6ab 100644 --- a/script/c79418928.lua +++ b/script/c79418928.lua @@ -21,6 +21,7 @@ function c79418928.initial_effect(c) e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetCode(EVENT_FREE_CHAIN) e3:SetRange(LOCATION_MZONE) + e3:SetHintTiming(0,TIMING_END_PHASE) e3:SetCondition(c79418928.spcon) e3:SetCost(c79418928.spcost) e3:SetTarget(c79418928.sptg) diff --git a/script/c79447365.lua b/script/c79447365.lua index 1afadf5d..11ebb0ee 100644 --- a/script/c79447365.lua +++ b/script/c79447365.lua @@ -1,55 +1,55 @@ ---トゥーン・マスク -function c79447365.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c79447365.condition) - e1:SetTarget(c79447365.target) - e1:SetOperation(c79447365.activate) - c:RegisterEffect(e1) -end -function c79447365.cfilter(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c79447365.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c79447365.cfilter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c79447365.filter(c,e,tp) - local lv=0 - if c:IsType(TYPE_XYZ) then - lv=c:GetRank() - else - lv=c:GetLevel() - end - return c:IsFaceup() and Duel.IsExistingMatchingCard(c79447365.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,lv) -end -function c79447365.spfilter(c,e,tp,lv) - return c:IsLevelBelow(lv) and c:IsType(TYPE_TOON) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c79447365.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c79447365.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c79447365.filter,tp,0,LOCATION_MZONE,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c79447365.filter,tp,0,LOCATION_MZONE,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) -end -function c79447365.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end - local lv=0 - if tc:IsType(TYPE_XYZ) then - lv=tc:GetRank() - else - lv=tc:GetLevel() - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c79447365.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp,lv) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) - end -end +--トゥーン・マスク +function c79447365.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c79447365.condition) + e1:SetTarget(c79447365.target) + e1:SetOperation(c79447365.activate) + c:RegisterEffect(e1) +end +function c79447365.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c79447365.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c79447365.cfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c79447365.filter(c,e,tp) + local lv=0 + if c:IsType(TYPE_XYZ) then + lv=c:GetRank() + else + lv=c:GetLevel() + end + return c:IsFaceup() and Duel.IsExistingMatchingCard(c79447365.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp,lv) +end +function c79447365.spfilter(c,e,tp,lv) + return c:IsLevelBelow(lv) and c:IsType(TYPE_TOON) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c79447365.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c79447365.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c79447365.filter,tp,0,LOCATION_MZONE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c79447365.filter,tp,0,LOCATION_MZONE,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c79447365.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local lv=0 + if tc:IsType(TYPE_XYZ) then + lv=tc:GetRank() + else + lv=tc:GetLevel() + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c79447365.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp,lv) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c79531196.lua b/script/c79531196.lua index 87745d89..e9c8114f 100644 --- a/script/c79531196.lua +++ b/script/c79531196.lua @@ -1,82 +1,82 @@ ---クリスタル・ローズ -function c79531196.initial_effect(c) - --to grave - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c79531196.tgtg) - e1:SetOperation(c79531196.tgop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,79531196) - e2:SetCost(c79531196.spcost) - e2:SetTarget(c79531196.sptg) - e2:SetOperation(c79531196.spop) - c:RegisterEffect(e2) -end -function c79531196.filter(c) - return (c:IsSetCard(0x1047) or c:IsSetCard(0x9b)) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() -end -function c79531196.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c79531196.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK+LOCATION_HAND) -end -function c79531196.tgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c79531196.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil) - local tc=g:GetFirst() - if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) - and c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(tc:GetCode()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(79531196,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetLabelObject(e1) - e2:SetOperation(c79531196.rstop) - c:RegisterEffect(e2) - end -end -function c79531196.rstop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=e:GetLabelObject() - e1:Reset() - Duel.HintSelection(Group.FromCards(c)) - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end -function c79531196.cfilter(c) - return c:IsType(TYPE_FUSION) and c:IsAbleToRemoveAsCost() -end -function c79531196.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c79531196.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c79531196.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c79531196.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c79531196.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--クリスタル・ローズ +function c79531196.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c79531196.tgtg) + e1:SetOperation(c79531196.tgop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,79531196) + e2:SetCost(c79531196.spcost) + e2:SetTarget(c79531196.sptg) + e2:SetOperation(c79531196.spop) + c:RegisterEffect(e2) +end +function c79531196.filter(c) + return (c:IsSetCard(0x1047) or c:IsSetCard(0x9b)) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c79531196.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c79531196.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c79531196.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c79531196.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil) + local tc=g:GetFirst() + if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) + and c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(tc:GetCode()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(79531196,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + e2:SetOperation(c79531196.rstop) + c:RegisterEffect(e2) + end +end +function c79531196.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=e:GetLabelObject() + e1:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c79531196.cfilter(c) + return c:IsType(TYPE_FUSION) and c:IsAbleToRemoveAsCost() +end +function c79531196.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c79531196.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c79531196.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c79531196.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c79531196.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c7953868.lua b/script/c7953868.lua index 02a6b432..1bbb6d1b 100644 --- a/script/c7953868.lua +++ b/script/c7953868.lua @@ -1,58 +1,58 @@ ---蒼血鬼 -function c7953868.initial_effect(c) - --to defense - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(7953868,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c7953868.potg) - e1:SetOperation(c7953868.poop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(7953868,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c7953868.spcost) - e3:SetTarget(c7953868.sptg) - e3:SetOperation(c7953868.spop) - c:RegisterEffect(e3) -end -function c7953868.potg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return e:GetHandler():IsAttackPos() end - Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) -end -function c7953868.poop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end -end -function c7953868.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,0,1,REASON_COST) end - Duel.RemoveOverlayCard(tp,1,0,1,1,REASON_COST) -end -function c7953868.filter(c,e,tp) - return c:IsRace(RACE_ZOMBIE) and c:GetLevel()==4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c7953868.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c7953868.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c7953868.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c7953868.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c7953868.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsRace(RACE_ZOMBIE) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--蒼血鬼 +function c7953868.initial_effect(c) + --to defense + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(7953868,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c7953868.potg) + e1:SetOperation(c7953868.poop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(7953868,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c7953868.spcost) + e3:SetTarget(c7953868.sptg) + e3:SetOperation(c7953868.spop) + c:RegisterEffect(e3) +end +function c7953868.potg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c7953868.poop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsAttackPos() and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c7953868.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,0,1,REASON_COST) end + Duel.RemoveOverlayCard(tp,1,0,1,1,REASON_COST) +end +function c7953868.filter(c,e,tp) + return c:IsRace(RACE_ZOMBIE) and c:GetLevel()==4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c7953868.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c7953868.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c7953868.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c7953868.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c7953868.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsRace(RACE_ZOMBIE) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c79538761.lua b/script/c79538761.lua index 3ba5cc21..5ca41a0d 100644 --- a/script/c79538761.lua +++ b/script/c79538761.lua @@ -52,13 +52,17 @@ function c79538761.initial_effect(c) e7:SetValue(1) c:RegisterEffect(e7) end +function c79538761.filter(c) + local ct1,ct2=c:GetUnionCount() + return c:IsFaceup() and ct2==0 +end function c79538761.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) local c=e:GetHandler() - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsFaceup() end + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c79538761.filter(chkc) end if chk==0 then return e:GetHandler():GetFlagEffect(79538761)==0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,c) end + and Duel.IsExistingTarget(c79538761.filter,tp,LOCATION_MZONE,0,1,c) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,c) + local g=Duel.SelectTarget(tp,c79538761.filter,tp,LOCATION_MZONE,0,1,1,c) Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) c:RegisterFlagEffect(79538761,RESET_EVENT+0x7e0000+RESET_PHASE+PHASE_END,0,1) end @@ -66,12 +70,12 @@ function c79538761.eqop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local tc=Duel.GetFirstTarget() if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - if not tc:IsRelateToEffect(e) or tc:IsFacedown() then + if not tc:IsRelateToEffect(e) or not c79538761.filter(tc) then Duel.SendtoGrave(c,REASON_EFFECT) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c79538761.sptg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() diff --git a/script/c79555535.lua b/script/c79555535.lua index c8d2d711..7c7dffea 100644 --- a/script/c79555535.lua +++ b/script/c79555535.lua @@ -1,57 +1,57 @@ ---イグニッションP -function c79555535.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk & def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetValue(300) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xc8)) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_FZONE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCountLimit(1) - e4:SetTarget(c79555535.destg) - e4:SetOperation(c79555535.desop) - c:RegisterEffect(e4) -end -function c79555535.desfilter(c) - return c:IsSetCard(0xc8) -end -function c79555535.thfilter(c) - return c:IsSetCard(0xc8) and c:IsAbleToHand() -end -function c79555535.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c79555535.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c79555535.desfilter,tp,LOCATION_ONFIELD,0,1,nil) - and Duel.IsExistingMatchingCard(c79555535.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c79555535.desfilter,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c79555535.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c79555535.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - end -end +--イグニッションP +function c79555535.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk & def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(300) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xc8)) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCountLimit(1) + e4:SetTarget(c79555535.destg) + e4:SetOperation(c79555535.desop) + c:RegisterEffect(e4) +end +function c79555535.desfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc8) +end +function c79555535.thfilter(c) + return c:IsSetCard(0xc8) and c:IsAbleToHand() +end +function c79555535.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c79555535.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c79555535.desfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.IsExistingMatchingCard(c79555535.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c79555535.desfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c79555535.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c79555535.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c79569173.lua b/script/c79569173.lua index f0dd7f84..75762cc0 100644 --- a/script/c79569173.lua +++ b/script/c79569173.lua @@ -1,89 +1,89 @@ ---大地震 -function c79569173.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c79569173.condition) - e1:SetTarget(c79569173.target) - e1:SetOperation(c79569173.activate) - c:RegisterEffect(e1) - --salvage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(79569173,0)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_CUSTOM+79569173) - e2:SetTarget(c79569173.thtg) - e2:SetOperation(c79569173.thop) - c:RegisterEffect(e2) -end -function c79569173.cfilter(c,tp) - return c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp - and c:IsReason(REASON_DESTROY) and c:IsRace(RACE_DINOSAUR) -end -function c79569173.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c79569173.cfilter,1,nil,tp) -end -function c79569173.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_SZONE)>2 end - local c=e:GetHandler() - c:SetTurnCounter(0) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_SZONE) - e1:SetCondition(c79569173.descon) - e1:SetOperation(c79569173.desop) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local dis=Duel.SelectDisableField(tp,3,0,LOCATION_SZONE,0) - e:SetLabel(dis) -end -function c79569173.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(1-tp,LOCATION_SZONE)<3 then return end - --disable field - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_SZONE) - e1:SetCode(EFFECT_DISABLE_FIELD) - e1:SetOperation(c79569173.disop) - e1:SetLabel(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1fe0000) - e:GetHandler():RegisterEffect(e1) -end -function c79569173.descon(e,tp,eg,ep,ev,re,r,rp) - return tp==Duel.GetTurnPlayer() -end -function c79569173.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetTurnCounter() - ct=ct+1 - c:SetTurnCounter(ct) - if ct==3 and Duel.Destroy(c,REASON_EFFECT)>0 then - Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+79569173,e,0,tp,tp,0) - end -end -function c79569173.disop(e,tp) - return e:GetLabel() -end -function c79569173.thfilter(c) - return c:IsRace(RACE_DINOSAUR) and c:IsAbleToHand() -end -function c79569173.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c79569173.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c79569173.thfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c79569173.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c79569173.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--大地震 +function c79569173.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c79569173.condition) + e1:SetTarget(c79569173.target) + e1:SetOperation(c79569173.activate) + c:RegisterEffect(e1) + --salvage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(79569173,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_CUSTOM+79569173) + e2:SetTarget(c79569173.thtg) + e2:SetOperation(c79569173.thop) + c:RegisterEffect(e2) +end +function c79569173.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:GetPreviousControler()==tp + and c:IsReason(REASON_DESTROY) and c:IsRace(RACE_DINOSAUR) +end +function c79569173.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c79569173.cfilter,1,nil,tp) +end +function c79569173.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_SZONE)>2 end + local c=e:GetHandler() + c:SetTurnCounter(0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_SZONE) + e1:SetCondition(c79569173.descon) + e1:SetOperation(c79569173.desop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local dis=Duel.SelectDisableField(tp,3,0,LOCATION_SZONE,0) + e:SetLabel(dis) +end +function c79569173.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_SZONE)<3 then return end + --disable field + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetOperation(c79569173.disop) + e1:SetLabel(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) +end +function c79569173.descon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() +end +function c79569173.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==3 and Duel.Destroy(c,REASON_EFFECT)>0 then + Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+79569173,e,0,tp,tp,0) + end +end +function c79569173.disop(e,tp) + return e:GetLabel() +end +function c79569173.thfilter(c) + return c:IsRace(RACE_DINOSAUR) and c:IsAbleToHand() +end +function c79569173.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c79569173.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c79569173.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c79569173.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c79569173.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c79571449.lua b/script/c79571449.lua index 61f0b750..74ac36bb 100644 --- a/script/c79571449.lua +++ b/script/c79571449.lua @@ -20,8 +20,8 @@ end function c79571449.activate(e,tp,eg,ep,ev,re,r,rp) local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) if Duel.Draw(p,d,REASON_EFFECT)==3 then - Duel.ShuffleHand(tp) + Duel.ShuffleHand(p) Duel.BreakEffect() - Duel.DiscardHand(tp,aux.TRUE,2,2,REASON_EFFECT+REASON_DISCARD) + Duel.DiscardHand(p,nil,2,2,REASON_EFFECT+REASON_DISCARD) end end diff --git a/script/c79575620.lua b/script/c79575620.lua index 04243765..073703a3 100644 --- a/script/c79575620.lua +++ b/script/c79575620.lua @@ -1,32 +1,32 @@ ---お注射天使リリー -function c79575620.initial_effect(c) - --attack up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(79575620,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetCondition(c79575620.con) - e1:SetCost(c79575620.cost) - e1:SetOperation(c79575620.op) - c:RegisterEffect(e1) -end -function c79575620.con(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:GetFlagEffect(79575620)==0 and (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) -end -function c79575620.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,2000) end - Duel.PayLPCost(tp,2000) - e:GetHandler():RegisterFlagEffect(79575620,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) -end -function c79575620.op(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(3000) - c:RegisterEffect(e1) -end +--お注射天使リリー +function c79575620.initial_effect(c) + --attack up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79575620,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c79575620.con) + e1:SetCost(c79575620.cost) + e1:SetOperation(c79575620.op) + c:RegisterEffect(e1) +end +function c79575620.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetFlagEffect(79575620)==0 and (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) +end +function c79575620.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) end + Duel.PayLPCost(tp,2000) + e:GetHandler():RegisterFlagEffect(79575620,RESET_PHASE+PHASE_DAMAGE_CAL,0,1) +end +function c79575620.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(3000) + c:RegisterEffect(e1) +end diff --git a/script/c79580323.lua b/script/c79580323.lua index 53491f0a..9a7f6dd5 100644 --- a/script/c79580323.lua +++ b/script/c79580323.lua @@ -1,75 +1,75 @@ ---剣闘獣スパルティクス -function c79580323.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(79580323,0)) - e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetTarget(c79580323.stg) - e1:SetOperation(c79580323.sop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(79580323,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_BATTLE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c79580323.spcon) - e2:SetCost(c79580323.spcost) - e2:SetTarget(c79580323.sptg) - e2:SetOperation(c79580323.spop) - c:RegisterEffect(e2) - --spsummon limit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(c79580323.splimit) - c:RegisterEffect(e3) -end -function c79580323.splimit(e,se,sp,st) - return st==(SUMMON_TYPE_SPECIAL+101) or bit.band(st,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c79580323.sfilter(c) - return c:IsSetCard(0x19) and c:IsType(TYPE_EQUIP) and c:IsAbleToHand() -end -function c79580323.stg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) -end -function c79580323.sop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c79580323.sfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c79580323.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetBattledGroupCount()>0 -end -function c79580323.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToDeckAsCost() end - Duel.SendtoDeck(c,nil,2,REASON_COST) -end -function c79580323.filter(c,e,tp) - return not c:IsCode(79580323) and c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,110,tp,false,false) -end -function c79580323.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c79580323.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c79580323.spop(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,c79580323.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,110,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) - end -end +--剣闘獣スパルティクス +function c79580323.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79580323,0)) + e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetTarget(c79580323.stg) + e1:SetOperation(c79580323.sop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(79580323,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c79580323.spcon) + e2:SetCost(c79580323.spcost) + e2:SetTarget(c79580323.sptg) + e2:SetOperation(c79580323.spop) + c:RegisterEffect(e2) + --spsummon limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(c79580323.splimit) + c:RegisterEffect(e3) +end +function c79580323.splimit(e,se,sp,st) + return st==(SUMMON_TYPE_SPECIAL+101) or bit.band(st,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c79580323.sfilter(c) + return c:IsSetCard(0x19) and c:IsType(TYPE_EQUIP) and c:IsAbleToHand() +end +function c79580323.stg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,0) +end +function c79580323.sop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c79580323.sfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c79580323.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 +end +function c79580323.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToDeckAsCost() end + Duel.SendtoDeck(c,nil,2,REASON_COST) +end +function c79580323.filter(c,e,tp) + return not c:IsCode(79580323) and c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,110,tp,false,false) +end +function c79580323.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c79580323.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c79580323.spop(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,c79580323.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,110,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + end +end diff --git a/script/c79606837.lua b/script/c79606837.lua index 6a349b4c..37071250 100644 --- a/script/c79606837.lua +++ b/script/c79606837.lua @@ -57,8 +57,7 @@ function c79606837.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c79606837.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c79636594.lua b/script/c79636594.lua index adae8f2b..9ed4a79a 100644 --- a/script/c79636594.lua +++ b/script/c79636594.lua @@ -1,41 +1,41 @@ ---ブロック・スパイダー -function c79636594.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c79636594.bttg) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(79636594,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCountLimit(1,79636594) - e2:SetTarget(c79636594.sptg) - e2:SetOperation(c79636594.spop) - c:RegisterEffect(e2) -end -function c79636594.bttg(e,c) - return c:IsFaceup() and c:IsRace(RACE_INSECT) and c~=e:GetHandler() -end -function c79636594.filter(c,e,tp) - return c:IsCode(79636594) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c79636594.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c79636594.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c79636594.spop(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,c79636594.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--ブロック・スパイダー +function c79636594.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c79636594.bttg) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(79636594,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCountLimit(1,79636594) + e2:SetTarget(c79636594.sptg) + e2:SetOperation(c79636594.spop) + c:RegisterEffect(e2) +end +function c79636594.bttg(e,c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) and c~=e:GetHandler() +end +function c79636594.filter(c,e,tp) + return c:IsCode(79636594) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c79636594.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c79636594.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c79636594.spop(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,c79636594.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c79649195.lua b/script/c79649195.lua index cb9fa467..1d8b6e6b 100644 --- a/script/c79649195.lua +++ b/script/c79649195.lua @@ -21,8 +21,7 @@ function c79649195.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c79649195.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c79757784.lua b/script/c79757784.lua index bbf7071e..996fda46 100644 --- a/script/c79757784.lua +++ b/script/c79757784.lua @@ -1,66 +1,66 @@ ---幻奏の音女タムタム -function c79757784.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCondition(c79757784.thcon) - e1:SetTarget(c79757784.thtg) - e1:SetOperation(c79757784.thop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DAMAGE+CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCondition(c79757784.damcon) - e2:SetTarget(c79757784.damtg) - e2:SetOperation(c79757784.damop) - c:RegisterEffect(e2) -end -function c79757784.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x9b) -end -function c79757784.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c79757784.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) -end -function c79757784.thfilter(c) - return c:IsCode(24094653) and c:IsAbleToHand() -end -function c79757784.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c79757784.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c79757784.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c79757784.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c79757784.damcon(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_FUSION and e:GetHandler():IsLocation(LOCATION_GRAVE) -end -function c79757784.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c79757784.cfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c79757784.cfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c79757784.cfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) -end -function c79757784.damop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-500) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - Duel.Damage(1-tp,500,REASON_EFFECT) - end -end +--幻奏の音女タムタム +function c79757784.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c79757784.thcon) + e1:SetTarget(c79757784.thtg) + e1:SetOperation(c79757784.thop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DAMAGE+CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCondition(c79757784.damcon) + e2:SetTarget(c79757784.damtg) + e2:SetOperation(c79757784.damop) + c:RegisterEffect(e2) +end +function c79757784.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9b) +end +function c79757784.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c79757784.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c79757784.thfilter(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c79757784.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c79757784.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c79757784.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c79757784.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c79757784.damcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_FUSION and e:GetHandler():IsLocation(LOCATION_GRAVE) +end +function c79757784.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c79757784.cfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c79757784.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c79757784.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c79757784.damop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c79759367.lua b/script/c79759367.lua index 7f48e9d9..4a9ccf4b 100644 --- a/script/c79759367.lua +++ b/script/c79759367.lua @@ -23,8 +23,7 @@ function c79759367.cfilter(c) return c:IsFaceup() and c:IsCode(74641045) end function c79759367.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if Duel.IsExistingMatchingCard(c79759367.cfilter,tp,LOCATION_ONFIELD,0,1,nil) + if Duel.NegateActivation(ev) and Duel.IsExistingMatchingCard(c79759367.cfilter,tp,LOCATION_ONFIELD,0,1,nil) and Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0 then local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND):RandomSelect(tp,1) Duel.SendtoDeck(g,nil,2,REASON_EFFECT) diff --git a/script/c79766336.lua b/script/c79766336.lua index f65fd1d5..5ce44844 100644 --- a/script/c79766336.lua +++ b/script/c79766336.lua @@ -1,53 +1,53 @@ ---闇よりの罠 -function c79766336.initial_effect(c) - --copy trap - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0x1e1,0x1e1) - e1:SetCondition(c79766336.condition) - e1:SetCost(c79766336.cost) - e1:SetTarget(c79766336.target) - e1:SetOperation(c79766336.operation) - c:RegisterEffect(e1) -end -function c79766336.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetLP(tp)<=3000 -end -function c79766336.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 c79766336.filter(c) - return c:GetType()==0x4 and not c:IsCode(79766336) and c:IsAbleToRemove() and c:CheckActivateEffect(false,true,false)~=nil -end -function c79766336.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then - local te=e:GetLabelObject() - local tg=te:GetTarget() - return tg and tg(e,tp,eg,ep,ev,re,r,rp,0,chkc) - end - if chk==0 then return Duel.IsExistingTarget(c79766336.filter,tp,LOCATION_GRAVE,0,1,nil) end - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c79766336.filter,tp,LOCATION_GRAVE,0,1,1,nil) - local te,ceg,cep,cev,cre,cr,crp=g:GetFirst():CheckActivateEffect(false,true,true) - Duel.ClearTargetCard() - g:GetFirst():CreateEffectRelation(e) - local tg=te:GetTarget() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - if tg then tg(e,tp,ceg,cep,cev,cre,cr,crp,1) end - te:SetLabelObject(e:GetLabelObject()) - e:SetLabelObject(te) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,0,0,0) -end -function c79766336.operation(e,tp,eg,ep,ev,re,r,rp) - local te=e:GetLabelObject() - if not te then return end - if not te:GetHandler():IsRelateToEffect(e) then return end - e:SetLabelObject(te:GetLabelObject()) - local op=te:GetOperation() - if op then op(e,tp,eg,ep,ev,re,r,rp) end - Duel.Remove(te:GetHandler(),POS_FACEUP,REASON_EFFECT) -end +--闇よりの罠 +function c79766336.initial_effect(c) + --copy trap + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0x1e1,0x1e1) + e1:SetCondition(c79766336.condition) + e1:SetCost(c79766336.cost) + e1:SetTarget(c79766336.target) + e1:SetOperation(c79766336.operation) + c:RegisterEffect(e1) +end +function c79766336.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)<=3000 +end +function c79766336.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 c79766336.filter(c) + return c:GetType()==0x4 and not c:IsCode(79766336) and c:IsAbleToRemove() and c:CheckActivateEffect(false,true,false)~=nil +end +function c79766336.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then + local te=e:GetLabelObject() + local tg=te:GetTarget() + return tg and tg(e,tp,eg,ep,ev,re,r,rp,0,chkc) + end + if chk==0 then return Duel.IsExistingTarget(c79766336.filter,tp,LOCATION_GRAVE,0,1,nil) end + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c79766336.filter,tp,LOCATION_GRAVE,0,1,1,nil) + local te,ceg,cep,cev,cre,cr,crp=g:GetFirst():CheckActivateEffect(false,true,true) + Duel.ClearTargetCard() + g:GetFirst():CreateEffectRelation(e) + local tg=te:GetTarget() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if tg then tg(e,tp,ceg,cep,cev,cre,cr,crp,1) end + te:SetLabelObject(e:GetLabelObject()) + e:SetLabelObject(te) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,0,0,0) +end +function c79766336.operation(e,tp,eg,ep,ev,re,r,rp) + local te=e:GetLabelObject() + if not te then return end + if not te:GetHandler():IsRelateToEffect(e) then return end + e:SetLabelObject(te:GetLabelObject()) + local op=te:GetOperation() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + Duel.Remove(te:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c79777187.lua b/script/c79777187.lua index b33cefc5..e19d20af 100644 --- a/script/c79777187.lua +++ b/script/c79777187.lua @@ -1,34 +1,34 @@ ---バリア・バブル -function c79777187.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --avoid battle damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(c79777187.target) - e2:SetValue(1) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_INDESTRUCTABLE_COUNT) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(c79777187.target) - e3:SetValue(c79777187.indct) - c:RegisterEffect(e3) -end -function c79777187.target(e,c) - return c:IsSetCard(0xc6) or c:IsSetCard(0x9f) -end -function c79777187.indct(e,re,r,rp) - if bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 then - return 1 - else return 0 end -end +--バリア・バブル +function c79777187.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --avoid battle damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c79777187.target) + e2:SetValue(1) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c79777187.target) + e3:SetValue(c79777187.indct) + c:RegisterEffect(e3) +end +function c79777187.target(e,c) + return c:IsSetCard(0xc6) or c:IsSetCard(0x9f) +end +function c79777187.indct(e,re,r,rp) + if bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 then + return 1 + else return 0 end +end diff --git a/script/c79796561.lua b/script/c79796561.lua index 38dd7d7d..f84604c0 100644 --- a/script/c79796561.lua +++ b/script/c79796561.lua @@ -1,46 +1,46 @@ ---シンクロ・ガンナー -function c79796561.initial_effect(c) - --remove - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(79796561,0)) - e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c79796561.target) - e1:SetOperation(c79796561.operation) - c:RegisterEffect(e1) -end -function c79796561.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemove() -end -function c79796561.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c79796561.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c79796561.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c79796561.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) -end -function c79796561.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - e1:SetLabelObject(tc) - e1:SetCountLimit(1) - e1:SetCondition(c79796561.retcon) - e1:SetOperation(c79796561.retop) - Duel.RegisterEffect(e1,tp) - Duel.Damage(1-tp,600,REASON_EFFECT) - end -end -function c79796561.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c79796561.retop(e,tp,eg,ep,ev,re,r,rp) - Duel.ReturnToField(e:GetLabelObject()) -end +--シンクロ・ガンナー +function c79796561.initial_effect(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79796561,0)) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c79796561.target) + e1:SetOperation(c79796561.operation) + c:RegisterEffect(e1) +end +function c79796561.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemove() +end +function c79796561.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c79796561.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c79796561.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c79796561.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,600) +end +function c79796561.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c79796561.retcon) + e1:SetOperation(c79796561.retop) + Duel.RegisterEffect(e1,tp) + Duel.Damage(1-tp,600,REASON_EFFECT) + end +end +function c79796561.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c79796561.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c79814787.lua b/script/c79814787.lua index 96e1ed97..fbed0df8 100644 --- a/script/c79814787.lua +++ b/script/c79814787.lua @@ -1,27 +1,27 @@ ---伝説の白石 -function c79814787.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(79814787,0)) - e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c79814787.target) - e1:SetOperation(c79814787.operation) - c:RegisterEffect(e1) -end -function c79814787.filter(c) - return c:IsCode(89631139) and c:IsAbleToHand() -end -function c79814787.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c79814787.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local tc=Duel.GetFirstMatchingCard(c79814787.filter,tp,LOCATION_DECK,0,nil) - if tc~=nil then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--伝説の白石 +function c79814787.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79814787,0)) + e1:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c79814787.target) + e1:SetOperation(c79814787.operation) + c:RegisterEffect(e1) +end +function c79814787.filter(c) + return c:IsCode(89631139) and c:IsAbleToHand() +end +function c79814787.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c79814787.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tc=Duel.GetFirstMatchingCard(c79814787.filter,tp,LOCATION_DECK,0,nil) + if tc~=nil then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c79844764.lua b/script/c79844764.lua index 3d4a265e..2c7586a3 100644 --- a/script/c79844764.lua +++ b/script/c79844764.lua @@ -5,6 +5,7 @@ function c79844764.initial_effect(c) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1,79844764+EFFECT_COUNT_CODE_OATH) + e1:SetHintTiming(0,TIMING_MAIN_END) e1:SetCost(c79844764.cost) e1:SetOperation(c79844764.activate) c:RegisterEffect(e1) diff --git a/script/c79850798.lua b/script/c79850798.lua index 4aa6037d..fb910081 100644 --- a/script/c79850798.lua +++ b/script/c79850798.lua @@ -1,86 +1,86 @@ ---爆走特急ロケット・アロー -function c79850798.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c79850798.spcon) - e1:SetOperation(c79850798.spop) - c:RegisterEffect(e1) - --cannot special summon - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_ACTIVATE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(1,0) - e3:SetValue(1) - c:RegisterEffect(e3) - --cannot set - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CANNOT_MSET) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(1,0) - e4:SetTarget(aux.TRUE) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_CANNOT_SSET) - c:RegisterEffect(e5) - local e6=e4:Clone() - e6:SetCode(EFFECT_CANNOT_TURN_SET) - c:RegisterEffect(e6) - local e7=e4:Clone() - e7:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e7:SetTarget(c79850798.sumlimit) - c:RegisterEffect(e7) - --maintain - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e8:SetCode(EVENT_PHASE+PHASE_STANDBY) - e8:SetRange(LOCATION_MZONE) - e8:SetCountLimit(1) - e8:SetCondition(c79850798.mtcon) - e8:SetOperation(c79850798.mtop) - c:RegisterEffect(e8) -end -function c79850798.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 - and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 -end -function c79850798.spop(e,tp,eg,ep,ev,re,r,rp,c) - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c79850798.sumlimit(e,c,sump,sumtype,sumpos,targetp) - return bit.band(sumpos,POS_FACEDOWN)~=0 -end -function c79850798.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c79850798.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)~=0 and Duel.SelectYesNo(tp,aux.Stringid(79850798,1)) then - Duel.SendtoGrave(Duel.GetFieldGroup(tp,LOCATION_HAND,0),REASON_COST) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--爆走特急ロケット・アロー +function c79850798.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c79850798.spcon) + e1:SetOperation(c79850798.spop) + c:RegisterEffect(e1) + --cannot special summon + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(1,0) + e3:SetValue(1) + c:RegisterEffect(e3) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_MSET) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(1,0) + e4:SetTarget(aux.TRUE) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_CANNOT_SSET) + c:RegisterEffect(e5) + local e6=e4:Clone() + e6:SetCode(EFFECT_CANNOT_TURN_SET) + c:RegisterEffect(e6) + local e7=e4:Clone() + e7:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e7:SetTarget(c79850798.sumlimit) + c:RegisterEffect(e7) + --maintain + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e8:SetCode(EVENT_PHASE+PHASE_STANDBY) + e8:SetRange(LOCATION_MZONE) + e8:SetCountLimit(1) + e8:SetCondition(c79850798.mtcon) + e8:SetOperation(c79850798.mtop) + c:RegisterEffect(e8) +end +function c79850798.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetActivityCount(tp,ACTIVITY_BATTLE_PHASE)==0 + and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c79850798.spop(e,tp,eg,ep,ev,re,r,rp,c) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c79850798.sumlimit(e,c,sump,sumtype,sumpos,targetp) + return bit.band(sumpos,POS_FACEDOWN)~=0 +end +function c79850798.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c79850798.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)~=0 and Duel.SelectYesNo(tp,aux.Stringid(79850798,1)) then + Duel.SendtoGrave(Duel.GetFieldGroup(tp,LOCATION_HAND,0),REASON_COST) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c79853073.lua b/script/c79853073.lua index fe016b66..244b7592 100644 --- a/script/c79853073.lua +++ b/script/c79853073.lua @@ -1,31 +1,31 @@ ---サイファー・スカウター -function c79853073.initial_effect(c) - --atkdef up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(79853073,0)) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetCondition(c79853073.con) - e1:SetOperation(c79853073.op) - c:RegisterEffect(e1) -end -function c79853073.con(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsRace(RACE_WARRIOR) -end -function c79853073.op(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(2000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - end -end +--サイファー・スカウター +function c79853073.initial_effect(c) + --atkdef up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79853073,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c79853073.con) + e1:SetOperation(c79853073.op) + c:RegisterEffect(e1) +end +function c79853073.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bc:IsRace(RACE_WARRIOR) +end +function c79853073.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(2000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end diff --git a/script/c79875176.lua b/script/c79875176.lua index 0488ba24..25ca62a3 100644 --- a/script/c79875176.lua +++ b/script/c79875176.lua @@ -1,81 +1,81 @@ ---トゥーン・キャノン・ソルジャー -function c79875176.initial_effect(c) - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c79875176.atklimit) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c79875176.sdescon) - e4:SetOperation(c79875176.sdesop) - c:RegisterEffect(e4) - --direct attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_DIRECT_ATTACK) - e5:SetCondition(c79875176.dircon) - c:RegisterEffect(e5) - --damage - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(79875176,0)) - e6:SetCategory(CATEGORY_DAMAGE) - e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e6:SetType(EFFECT_TYPE_IGNITION) - e6:SetRange(LOCATION_MZONE) - e6:SetCost(c79875176.damcost) - e6:SetTarget(c79875176.damtg) - e6:SetOperation(c79875176.damop) - c:RegisterEffect(e6) -end -function c79875176.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c79875176.sfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c79875176.sdescon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c79875176.sfilter,1,nil) -end -function c79875176.sdesop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c79875176.dirfilter1(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c79875176.dirfilter2(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c79875176.dircon(e) - return Duel.IsExistingMatchingCard(c79875176.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) - and not Duel.IsExistingMatchingCard(c79875176.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c79875176.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end - local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) - Duel.Release(sg,REASON_COST) -end -function c79875176.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) -end -function c79875176.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--トゥーン・キャノン・ソルジャー +function c79875176.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c79875176.atklimit) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c79875176.sdescon) + e4:SetOperation(c79875176.sdesop) + c:RegisterEffect(e4) + --direct attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DIRECT_ATTACK) + e5:SetCondition(c79875176.dircon) + c:RegisterEffect(e5) + --damage + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(79875176,0)) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetRange(LOCATION_MZONE) + e6:SetCost(c79875176.damcost) + e6:SetTarget(c79875176.damtg) + e6:SetOperation(c79875176.damop) + c:RegisterEffect(e6) +end +function c79875176.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c79875176.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c79875176.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c79875176.sfilter,1,nil) +end +function c79875176.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c79875176.dirfilter1(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c79875176.dirfilter2(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c79875176.dircon(e) + return Duel.IsExistingMatchingCard(c79875176.dirfilter1,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) + and not Duel.IsExistingMatchingCard(c79875176.dirfilter2,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c79875176.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) +end +function c79875176.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c79875176.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c799183.lua b/script/c799183.lua index d4a352d9..abf2d5b7 100644 --- a/script/c799183.lua +++ b/script/c799183.lua @@ -1,63 +1,62 @@ ---超戦士の盾 -function c799183.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c799183.condition) - e1:SetTarget(c799183.target) - e1:SetOperation(c799183.activate) - c:RegisterEffect(e1) - --set - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DISABLE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_GRAVE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCost(c799183.setcost) - e2:SetTarget(c799183.settg) - e2:SetOperation(c799183.setop) - c:RegisterEffect(e2) -end -function c799183.condition(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_MZONE,0,1,nil,0x10cf) then return false end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return g and g:IsExists(Card.IsLocation,1,nil,LOCATION_MZONE) - and Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) -end -function c799183.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c799183.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c799183.setcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x1,1,REASON_COST) end - Duel.RemoveCounter(tp,1,0,0x1,1,REASON_COST) -end -function c799183.settg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsSSetable() end - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,e:GetHandler(),1,0,0) -end -function c799183.setop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsSSetable() then - Duel.SSet(tp,c) - Duel.ConfirmCards(1-tp,c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1) - end -end +--超戦士の盾 +function c799183.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c799183.condition) + e1:SetTarget(c799183.target) + e1:SetOperation(c799183.activate) + c:RegisterEffect(e1) + --set + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCost(c799183.setcost) + e2:SetTarget(c799183.settg) + e2:SetOperation(c799183.setop) + c:RegisterEffect(e2) +end +function c799183.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_MZONE,0,1,nil,0x10cf) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return g and g:IsExists(Card.IsLocation,1,nil,LOCATION_MZONE) + and Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) +end +function c799183.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c799183.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c799183.setcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x1,1,REASON_COST) end + Duel.RemoveCounter(tp,1,0,0x1,1,REASON_COST) +end +function c799183.settg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsSSetable() end + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,e:GetHandler(),1,0,0) +end +function c799183.setop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsSSetable() then + Duel.SSet(tp,c) + Duel.ConfirmCards(1-tp,c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1) + end +end diff --git a/script/c79965360.lua b/script/c79965360.lua index d63155cc..1adbaf13 100644 --- a/script/c79965360.lua +++ b/script/c79965360.lua @@ -1,21 +1,6 @@ --アマゾネスの秘宝 function c79965360.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(c79965360.target) - e1:SetOperation(c79965360.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(c79965360.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x4)) --destroy rep local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) @@ -35,25 +20,6 @@ function c79965360.initial_effect(c) e4:SetOperation(c79965360.desop) c:RegisterEffect(e4) end -function c79965360.eqlimit(e,c) - return c:IsSetCard(0x4) -end -function c79965360.filter(c) - return c:IsFaceup() and c:IsSetCard(0x4) -end -function c79965360.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c79965360.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c79965360.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c79965360.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c79965360.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 c79965360.valcon(e,re,r,rp) return r==REASON_BATTLE end diff --git a/script/c79967395.lua b/script/c79967395.lua index d447ec62..a70d0cb1 100644 --- a/script/c79967395.lua +++ b/script/c79967395.lua @@ -1,47 +1,47 @@ ---EMウィップ・バイパー -function c79967395.initial_effect(c) - --swap - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(79967395,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetHintTiming(0,TIMING_MAIN_END) - e1:SetCountLimit(1) - e1:SetCondition(c79967395.condition) - e1:SetTarget(c79967395.target) - e1:SetOperation(c79967395.operation) - c:RegisterEffect(e1) -end -function c79967395.condition(e,tp,eg,ep,ev,re,r,rp) - local ph=Duel.GetCurrentPhase() - return ph==PHASE_MAIN1 or ph==PHASE_MAIN2 -end -function c79967395.filter(c) - return c:IsFaceup() -end -function c79967395.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c79967395.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c79967395.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c79967395.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c79967395.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local atk=tc:GetAttack() - local def=tc:GetDefense() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SWAP_ATTACK_FINAL) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(def) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SWAP_DEFENSE_FINAL) - e2:SetValue(atk) - tc:RegisterEffect(e2) - end -end +--EMウィップ・バイパー +function c79967395.initial_effect(c) + --swap + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79967395,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,TIMING_MAIN_END) + e1:SetCountLimit(1) + e1:SetCondition(c79967395.condition) + e1:SetTarget(c79967395.target) + e1:SetOperation(c79967395.operation) + c:RegisterEffect(e1) +end +function c79967395.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return ph==PHASE_MAIN1 or ph==PHASE_MAIN2 +end +function c79967395.filter(c) + return c:IsFaceup() +end +function c79967395.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c79967395.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c79967395.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c79967395.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c79967395.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local atk=tc:GetAttack() + local def=tc:GetDefense() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SWAP_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(def) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SWAP_DEFENSE_FINAL) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end +end diff --git a/script/c79997591.lua b/script/c79997591.lua index a54f5435..686e85d0 100644 --- a/script/c79997591.lua +++ b/script/c79997591.lua @@ -1,32 +1,32 @@ ---ドゥーブルパッセ -function c79997591.initial_effect(c) - --change battle target - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(79997591,0)) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c79997591.cbcon) - e1:SetTarget(c79997591.cbtg) - e1:SetOperation(c79997591.cbop) - c:RegisterEffect(e1) -end -function c79997591.cbcon(e,tp,eg,ep,ev,re,r,rp) - local bt=Duel.GetAttackTarget() - return bt and bt:IsPosition(POS_FACEUP_ATTACK) and bt:IsControler(tp) -end -function c79997591.cbtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.GetAttacker():IsHasEffect(EFFECT_CANNOT_DIRECT_ATTACK) end -end -function c79997591.cbop(e,tp,eg,ep,ev,re,r,rp) - local at=Duel.GetAttacker() - local bt=Duel.GetAttackTarget() - if not (bt:IsRelateToBattle() and bt:IsControler(tp)) then return end - if at:IsAttackable() and not at:IsStatus(STATUS_ATTACK_CANCELED) and Duel.Damage(1-tp,bt:GetAttack(),REASON_EFFECT)>0 then - Duel.ChangeAttackTarget(nil) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) - bt:RegisterEffect(e1) -end +--ドゥーブルパッセ +function c79997591.initial_effect(c) + --change battle target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79997591,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c79997591.cbcon) + e1:SetTarget(c79997591.cbtg) + e1:SetOperation(c79997591.cbop) + c:RegisterEffect(e1) +end +function c79997591.cbcon(e,tp,eg,ep,ev,re,r,rp) + local bt=Duel.GetAttackTarget() + return bt and bt:IsPosition(POS_FACEUP_ATTACK) and bt:IsControler(tp) +end +function c79997591.cbtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.GetAttacker():IsHasEffect(EFFECT_CANNOT_DIRECT_ATTACK) end +end +function c79997591.cbop(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + local bt=Duel.GetAttackTarget() + if not (bt:IsRelateToBattle() and bt:IsControler(tp)) then return end + if at:IsAttackable() and not at:IsStatus(STATUS_ATTACK_CANCELED) and Duel.Damage(1-tp,bt:GetAttack(),REASON_EFFECT)>0 then + Duel.ChangeAttackTarget(nil) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) + bt:RegisterEffect(e1) +end diff --git a/script/c800000000.lua b/script/c800000000.lua new file mode 100644 index 00000000..c1b351e6 --- /dev/null +++ b/script/c800000000.lua @@ -0,0 +1,52 @@ +-- Forceful Deal +-- scripted by: UnknownGuest +function c800000000.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c800000000.condition) + e1:SetTarget(c800000000.target) + e1:SetOperation(c800000000.activate) + e1:SetCost(c800000000.cost) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c800000000.cfilter(c,tp) + return c:GetSummonPlayer()==1-tp +end +function c800000000.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c800000000.cfilter,1,nil,tp) +end +function c800000000.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) +end + +function c800000000.confilter(c) + return c:IsType(TYPE_MONSTER) and c:IsControlerCanBeChanged() +end + +function c800000000.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c800000000.confilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_CONTROL,nil,1,1-tp,LOCATION_MZONE) +end +function c800000000.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c800000000.confilter,tp,0,LOCATION_MZONE,ft,ft,nil) + local tc=g:GetFirst() + while tc do + Duel.GetControl(tc,tp) + tc=g:GetNext() + end +end \ No newline at end of file diff --git a/script/c800000001.lua b/script/c800000001.lua new file mode 100644 index 00000000..53474017 --- /dev/null +++ b/script/c800000001.lua @@ -0,0 +1,21 @@ +-- Deep Forest +-- scripted by: UnknownGuest +function c800000001.initial_effect(c) + -- activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- cannot be attacked + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET) + e2:SetTarget(c800000001.tg) + e2:SetValue(1) + c:RegisterEffect(e2) +end +function c800000001.tg(e,c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsLevelBelow(4) +end diff --git a/script/c800000002.lua b/script/c800000002.lua new file mode 100644 index 00000000..694127ef --- /dev/null +++ b/script/c800000002.lua @@ -0,0 +1,45 @@ +-- Chameleon Colors +-- scripted by: UnknownGuest +function c800000002.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(c800000002.target) + e1:SetOperation(c800000002.operation) + c:RegisterEffect(e1) + -- direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetCondition(c800000002.condition) + 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 c800000002.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) 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 c800000002.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 c800000002.condition(e,c) + local tc=Duel.GetFieldCard(0,LOCATION_SZONE,5) + if tc and tc:IsFaceup() then return true end + tc=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return tc and tc:IsFaceup() +end \ No newline at end of file diff --git a/script/c800000004.lua b/script/c800000004.lua new file mode 100644 index 00000000..95b2a993 --- /dev/null +++ b/script/c800000004.lua @@ -0,0 +1,37 @@ +-- Blood Curse +-- scripted by: UnknownGuest +function c800000004.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c800000004.condition) + e1:SetTarget(c800000004.target) + e1:SetOperation(c800000004.operation) + c:RegisterEffect(e1) +end +function c800000004.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsType(TYPE_MONSTER) +end +function c800000004.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c800000004.cfilter,1,nil,tp) +end +function c800000004.spfilter(c,e,tp) + return c:IsSetCard(0x8e) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c800000004.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c800000004.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c800000004.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,c800000004.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c800000005.lua b/script/c800000005.lua new file mode 100644 index 00000000..e855107c --- /dev/null +++ b/script/c800000005.lua @@ -0,0 +1,34 @@ +-- Antlion +-- scripted by: UnknownGuest +function c800000005.initial_effect(c) + -- atkdown + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetCondition(c800000005.condition) + e1:SetTarget(c800000005.target) + e1:SetOperation(c800000005.operation) + c:RegisterEffect(e1) +end +function c800000005.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetAttackTarget()==e:GetHandler() and (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) +end +function c800000005.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttacker():IsCanBeEffectTarget(e) end + Duel.SetTargetCard(Duel.GetAttacker()) +end +function c800000005.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(-500) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c800000006.lua b/script/c800000006.lua new file mode 100644 index 00000000..4a4c03b4 --- /dev/null +++ b/script/c800000006.lua @@ -0,0 +1,27 @@ +-- Forced Recovery +-- scripted by: UnknownGuest +function c800000006.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c800000006.target) + e1:SetOperation(c800000006.activate) + c:RegisterEffect(e1) +end + +function c800000006.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,tg,1,0,0) +end +function c800000006.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c800000007.lua b/script/c800000007.lua new file mode 100644 index 00000000..8c36e98a --- /dev/null +++ b/script/c800000007.lua @@ -0,0 +1,41 @@ +--ギミック・パペット-ナイト・ジョーカー +function c800000007.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(800000007,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCost(c800000007.cost) + e1:SetCondition(c800000007.condition) + e1:SetTarget(c800000007.target) + e1:SetOperation(c800000007.operation) + c:RegisterEffect(e1) +end +function c800000007.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,800000007)==0 end + Duel.RegisterFlagEffect(tp,800000007,RESET_PHASE+PHASE_END,0,1) +end +function c800000007.spfilter(c,tp) + return c:IsReason(REASON_BATTLE) and c:IsPreviousLocation(LOCATION_MZONE) + and c:GetPreviousControler()==tp and c:IsSetCard(0x83) and c:IsLocation(LOCATION_GRAVE) +end +function c800000007.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c800000007.spfilter,1,nil,tp) + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c800000007.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + local tc=eg:Filter(c800000007.spfilter,nil,tp):GetFirst() + if tc==nil then return end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,tc,1,0,0) + Duel.Remove(tc,POS_FACEUP,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c800000007.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c800000009.lua b/script/c800000009.lua new file mode 100644 index 00000000..f632eb55 --- /dev/null +++ b/script/c800000009.lua @@ -0,0 +1,16 @@ +-- Agathion +-- scripted by: UnknownGuest +function c800000009.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetCondition(c800000009.con) + e1:SetOperation(c800000009.op) + c:RegisterEffect(e1) +end +function c800000009.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsDefensePos() and ep==tp +end +function c800000009.op(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,0) +end \ No newline at end of file diff --git a/script/c800000010.lua b/script/c800000010.lua new file mode 100644 index 00000000..a039407e --- /dev/null +++ b/script/c800000010.lua @@ -0,0 +1,47 @@ +-- Amulet of Affection +-- scripted by: UnknownGuest +function c800000010.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c800000010.condition) + e1:SetTarget(c800000010.target) + e1:SetOperation(c800000010.operation) + c:RegisterEffect(e1) +end +function c800000010.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c800000010.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 c800000010.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + -- Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e2:SetValue(1) + c:RegisterEffect(e2) + end +end diff --git a/script/c800000011.lua b/script/c800000011.lua new file mode 100644 index 00000000..da012aa8 --- /dev/null +++ b/script/c800000011.lua @@ -0,0 +1,27 @@ +-- All-Seeing Eye +-- scripted by: UnknownGuest +function c800000011.initial_effect(c) + -- confirm + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c800000011.target) + e1:SetOperation(c800000011.operation) + c:RegisterEffect(e1) +end +function c800000011.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and chkc:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_ONFIELD,nil) + Duel.SelectTarget(tp,Card.IsFacedown,tp,0,LOCATION_ONFIELD,g:GetCount(),g:GetCount(),nil) +end +function c800000011.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + while tc do + Duel.ConfirmCards(tp,tc) + tc=g:GetNext() + end +end diff --git a/script/c800000012.lua b/script/c800000012.lua new file mode 100644 index 00000000..fde84c74 --- /dev/null +++ b/script/c800000012.lua @@ -0,0 +1,30 @@ +-- Alpha-Wave Emission +-- scripted by: UnknownGuest +function c800000012.initial_effect(c) + -- activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c800000012.adfilter) + c:RegisterEffect(e2) + -- loses 300 ATK + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c800000012.adfilter) + e3:SetValue(-300) + c:RegisterEffect(e3) +end + +function c800000012.adfilter(e,c) + return c:IsPosition(POS_FACEUP_ATTACK) +end diff --git a/script/c800000014.lua b/script/c800000014.lua new file mode 100644 index 00000000..86f4a923 --- /dev/null +++ b/script/c800000014.lua @@ -0,0 +1,59 @@ +-- Poison Crossbow +-- scripted by: UnknownGuest +function c800000014.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(c800000014.target) + e1:SetOperation(c800000014.operation) + c:RegisterEffect(e1) + -- Equip limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetValue(1) + c:RegisterEffect(e3) + -- destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_START) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c800000014.descon) + e2:SetTarget(c800000014.destg) + e2:SetOperation(c800000014.desop) + c:RegisterEffect(e2) +end +function c800000014.filter(c) + return c:IsFaceup() +end +function c800000014.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c800000014.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c800000014.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c800000014.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c800000014.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 c800000014.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetEquipTarget()==Duel.GetAttacker() and Duel.GetAttackTarget() +end +function c800000014.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttackTarget(),1,0,0) +end +function c800000014.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + if tc:IsRelateToBattle() then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c80033124.lua b/script/c80033124.lua index 5bc5a073..e0a08957 100644 --- a/script/c80033124.lua +++ b/script/c80033124.lua @@ -2,7 +2,7 @@ function c80033124.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(c80033124.target) @@ -10,10 +10,10 @@ function c80033124.initial_effect(c) c:RegisterEffect(e1) end function c80033124.ffilter0(c) - return c:IsCode(41230939,77625948,3019642) and c:IsAbleToDeck() + return c:IsCode(41230939,77625948,3019642) and c:IsCanBeFusionMaterial() and c:IsAbleToDeck() end function c80033124.ffilter(c,e) - return c:IsCode(41230939,77625948,3019642) and c:IsAbleToDeck() + return c:IsCode(41230939,77625948,3019642) and c:IsCanBeFusionMaterial() and c:IsAbleToDeck() and not c:IsImmuneToEffect(e) end function c80033124.spfilter(c,e,tp) @@ -34,7 +34,7 @@ function c80033124.cfilter(c) return c:IsLocation(LOCATION_HAND) or (c:IsOnField() and c:IsFacedown()) end function c80033124.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c80033124.ffilter,tp,0x1e,0,nil,e) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c80033124.ffilter),tp,0x1e,0,nil,e) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if (ft<=0 and not g:IsExists(Card.IsLocation,1,nil,LOCATION_MZONE)) or not g:IsExists(Card.IsCode,1,nil,41230939) @@ -56,7 +56,6 @@ function c80033124.activate(e,tp,eg,ep,ev,re,r,rp) Duel.ConfirmCards(1-tp,cg) Duel.ShuffleHand(tp) end - if g1:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end Duel.SendtoDeck(g1,nil,2,REASON_EFFECT) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=Duel.SelectMatchingCard(tp,c80033124.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) diff --git a/script/c80117527.lua b/script/c80117527.lua index 1f454d3f..f3ac2f1f 100644 --- a/script/c80117527.lua +++ b/script/c80117527.lua @@ -8,7 +8,7 @@ function c80117527.initial_effect(c) e1:SetCategory(CATEGORY_CONTROL) e1:SetDescription(aux.Stringid(80117527,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c80117527.cost) diff --git a/script/c80159717.lua b/script/c80159717.lua index cd5af43c..c96c89ce 100644 --- a/script/c80159717.lua +++ b/script/c80159717.lua @@ -1,34 +1,34 @@ ---ドラグニティナイト-トライデント -function c80159717.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),aux.NonTuner(Card.IsRace,RACE_WINDBEAST),1) - c:EnableReviveLimit() - --extra - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(80159717,0)) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c80159717.excost) - e1:SetOperation(c80159717.exop) - c:RegisterEffect(e1) -end -function c80159717.excost(e,tp,eg,ep,ev,re,r,rp,chk) - local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_EXTRA) - if ct>3 then ct=3 end - if chk==0 then return ct>0 and Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,ct,nil) - Duel.SendtoGrave(g,REASON_COST) - e:SetLabel(g:GetCount()) -end -function c80159717.exop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) - local ct=e:GetLabel() - if g:GetCount()3 then ct=3 end + if chk==0 then return ct>0 and Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,ct,nil) + Duel.SendtoGrave(g,REASON_COST) + e:SetLabel(g:GetCount()) +end +function c80159717.exop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) + local ct=e:GetLabel() + if g:GetCount()0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c80208158.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1,true) - end -end +--異次元エスパー・スター・ロビン +function c80208158.initial_effect(c) + c:SetUniqueOnField(1,1,80208158) + --target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c80208158.atlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c80208158.tglimit) + e2:SetValue(aux.tgoval) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(80208158,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_GRAVE) + e3:SetCondition(c80208158.spcon) + e3:SetTarget(c80208158.sptg) + e3:SetOperation(c80208158.spop) + c:RegisterEffect(e3) +end +function c80208158.atlimit(e,c) + return c~=e:GetHandler() +end +function c80208158.tglimit(e,c) + return c~=e:GetHandler() +end +function c80208158.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c80208158.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c80208158.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + end +end diff --git a/script/c80230510.lua b/script/c80230510.lua index e6e14375..f97945c7 100644 --- a/script/c80230510.lua +++ b/script/c80230510.lua @@ -40,10 +40,10 @@ end function c80230510.rmfilter(c) return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() end -function c80230510.otcon(e,c) +function c80230510.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + return minc<=2 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c80230510.rmfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsExistingMatchingCard(c80230510.rmfilter,tp,0,LOCATION_GRAVE,1,nil) end diff --git a/script/c80244114.lua b/script/c80244114.lua index c4edaffa..b9923ec4 100644 --- a/script/c80244114.lua +++ b/script/c80244114.lua @@ -1,94 +1,94 @@ ---スターダスト・ファントム -function c80244114.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(80244114,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c80244114.spcon) - e1:SetTarget(c80244114.sptg) - e1:SetOperation(c80244114.spop) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(80244114,1)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCost(c80244114.indcost) - e2:SetTarget(c80244114.indtg) - e2:SetOperation(c80244114.indop) - c:RegisterEffect(e2) -end -function c80244114.spcon(e,tp,eg,ep,ev,re,r,rp) - return rp~=tp and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) -end -function c80244114.spfilter(c,e,tp) - return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c80244114.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c80244114.spfilter(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c80244114.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c80244114.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c80244114.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end -function c80244114.indcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c80244114.indfilter(c) - return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) -end -function c80244114.indtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c80244114.indfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c80244114.indfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c80244114.indfilter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c80244114.indop(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:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) - e1:SetCountLimit(1) - e1:SetValue(c80244114.valcon) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetCode(EVENT_DAMAGE_STEP_END) - e2:SetOperation(c80244114.addown) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - end -end -function c80244114.valcon(e,re,r,rp) - if bit.band(r,REASON_BATTLE)~=0 then - e:GetHandler():RegisterFlagEffect(80244114,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) - return true - else return false end -end -function c80244114.addown(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():GetFlagEffect(80244114)==0 then return end - local e1=Effect.CreateEffect(e:GetOwner()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-800) - e1:SetReset(RESET_EVENT+0x1fe0000) - e:GetHandler():RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - e:GetHandler():RegisterEffect(e2) -end +--スターダスト・ファントム +function c80244114.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80244114,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c80244114.spcon) + e1:SetTarget(c80244114.sptg) + e1:SetOperation(c80244114.spop) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(80244114,1)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c80244114.indcost) + e2:SetTarget(c80244114.indtg) + e2:SetOperation(c80244114.indop) + c:RegisterEffect(e2) +end +function c80244114.spcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c80244114.spfilter(c,e,tp) + return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c80244114.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c80244114.spfilter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c80244114.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c80244114.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c80244114.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end +function c80244114.indcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c80244114.indfilter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsType(TYPE_SYNCHRO) +end +function c80244114.indtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c80244114.indfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c80244114.indfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c80244114.indfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c80244114.indop(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:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetCountLimit(1) + e1:SetValue(c80244114.valcon) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetOperation(c80244114.addown) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end +function c80244114.valcon(e,re,r,rp) + if bit.band(r,REASON_BATTLE)~=0 then + e:GetHandler():RegisterFlagEffect(80244114,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) + return true + else return false end +end +function c80244114.addown(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(80244114)==0 then return end + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + e:GetHandler():RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e:GetHandler():RegisterEffect(e2) +end diff --git a/script/c80280737.lua b/script/c80280737.lua index 08b5800a..a009a9af 100644 --- a/script/c80280737.lua +++ b/script/c80280737.lua @@ -1,48 +1,48 @@ ---バスター・モード -function c80280737.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetCost(c80280737.cost) - e1:SetTarget(c80280737.target) - e1:SetOperation(c80280737.activate) - c:RegisterEffect(e1) -end -c80280737.list={[44508094]=61257789,[70902743]=77336644,[6021033]=1764972, - [31924889]=14553285,[23693634]=38898779,[95526884]=37169670} -function c80280737.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - return true -end -function c80280737.filter1(c,e,tp) - local code=c:GetCode() - local tcode=c80280737.list[code] - return tcode and c:IsType(TYPE_SYNCHRO) and Duel.IsExistingMatchingCard(c80280737.filter2,tp,LOCATION_DECK,0,1,nil,tcode,e,tp) -end -function c80280737.filter2(c,tcode,e,tp) - return c:IsCode(tcode) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c80280737.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if e:GetLabel()~=1 then return false end - e:SetLabel(0) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.CheckReleaseGroup(tp,c80280737.filter1,1,nil,e,tp) - end - local rg=Duel.SelectReleaseGroup(tp,c80280737.filter1,1,1,nil,e,tp) - e:SetLabel(rg:GetFirst():GetCode()) - Duel.Release(rg,REASON_COST) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c80280737.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local code=e:GetLabel() - local tcode=c80280737.list[code] - local tc=Duel.GetFirstMatchingCard(c80280737.filter2,tp,LOCATION_DECK,0,nil,tcode,e,tp) - if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP_ATTACK)>0 then - tc:CompleteProcedure() - end -end +--バスター・モード +function c80280737.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c80280737.cost) + e1:SetTarget(c80280737.target) + e1:SetOperation(c80280737.activate) + c:RegisterEffect(e1) +end +c80280737.list={[44508094]=61257789,[70902743]=77336644,[6021033]=1764972, + [31924889]=14553285,[23693634]=38898779,[95526884]=37169670} +function c80280737.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c80280737.filter1(c,e,tp) + local code=c:GetCode() + local tcode=c80280737.list[code] + return tcode and c:IsType(TYPE_SYNCHRO) and Duel.IsExistingMatchingCard(c80280737.filter2,tp,LOCATION_DECK,0,1,nil,tcode,e,tp) +end +function c80280737.filter2(c,tcode,e,tp) + return c:IsCode(tcode) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c80280737.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c80280737.filter1,1,nil,e,tp) + end + local rg=Duel.SelectReleaseGroup(tp,c80280737.filter1,1,1,nil,e,tp) + e:SetLabel(rg:GetFirst():GetCode()) + Duel.Release(rg,REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c80280737.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local code=e:GetLabel() + local tcode=c80280737.list[code] + local tc=Duel.GetFirstMatchingCard(c80280737.filter2,tp,LOCATION_DECK,0,nil,tcode,e,tp) + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP_ATTACK)>0 then + tc:CompleteProcedure() + end +end diff --git a/script/c80304126.lua b/script/c80304126.lua index 168cb372..2c0d5fa3 100644 --- a/script/c80304126.lua +++ b/script/c80304126.lua @@ -1,14 +1,14 @@ ---マジシャンズ・ヴァルキリア -function c80304126.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c80304126.tg) - c:RegisterEffect(e1) -end -function c80304126.tg(e,c) - return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) -end +--マジシャンズ・ヴァルキリア +function c80304126.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c80304126.tg) + c:RegisterEffect(e1) +end +function c80304126.tg(e,c) + return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end diff --git a/script/c80335817.lua b/script/c80335817.lua index 8fbd16f4..fd6a6aed 100644 --- a/script/c80335817.lua +++ b/script/c80335817.lua @@ -1,112 +1,121 @@ ---刻剣の魔術師 -function c80335817.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetTarget(c80335817.indtg) - e2:SetValue(c80335817.indval) - c:RegisterEffect(e2) - --double - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCondition(c80335817.atkcon) - e3:SetOperation(c80335817.atkop) - c:RegisterEffect(e3) - --Banish - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_REMOVE) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1) - e4:SetTarget(c80335817.rmtg) - e4:SetOperation(c80335817.rmop) - c:RegisterEffect(e4) -end -function c80335817.filter(c,tp) - return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsType(TYPE_PENDULUM) - and c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()==1-tp -end -function c80335817.indtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return eg:IsExists(c80335817.filter,1,nil,tp) end - return true -end -function c80335817.indval(e,c) - return c80335817.filter(c,e:GetHandlerPlayer()) -end -function c80335817.atkcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return eg:GetCount()==1 and eg:GetFirst()==c - and c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_HAND) -end -function c80335817.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:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(c:GetBaseAttack()*2) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end -function c80335817.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end - if chk==0 then return e:GetHandler():IsAbleToRemove() - and Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) - g:AddCard(e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,2,0,0) -end -function c80335817.rmop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end - local g=Group.FromCards(c,tc) - if Duel.Remove(g,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then - local og=Duel.GetOperatedGroup() - local oc=og:GetFirst() - while oc do - if oc:IsControler(tp) then - oc:RegisterFlagEffect(80335817,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,1) - else - oc:RegisterFlagEffect(80335817,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,0,1) - end - oc=og:GetNext() - end - og:KeepAlive() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - e1:SetCountLimit(1) - e1:SetLabelObject(og) - e1:SetCondition(c80335817.retcon) - e1:SetOperation(c80335817.retop) - Duel.RegisterEffect(e1,tp) - end -end -function c80335817.retfilter(c) - return c:GetFlagEffect(80335817)~=0 -end -function c80335817.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c80335817.retop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local sg=g:Filter(c80335817.retfilter,nil) - local tc=sg:GetFirst() - while tc do - Duel.ReturnToField(tc) - tc=sg:GetNext() - end -end +--刻剣の魔術師 +function c80335817.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c80335817.indtg) + e2:SetValue(c80335817.indval) + c:RegisterEffect(e2) + --double + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCondition(c80335817.atkcon) + e3:SetOperation(c80335817.atkop) + c:RegisterEffect(e3) + --Banish + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_REMOVE) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c80335817.rmtg) + e4:SetOperation(c80335817.rmop) + c:RegisterEffect(e4) +end +function c80335817.filter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsType(TYPE_PENDULUM) + and c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()==1-tp +end +function c80335817.indtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c80335817.filter,1,nil,tp) end + return true +end +function c80335817.indval(e,c) + return c80335817.filter(c,e:GetHandlerPlayer()) +end +function c80335817.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return eg:GetCount()==1 and eg:GetFirst()==c + and c:GetSummonType()==SUMMON_TYPE_PENDULUM and c:IsPreviousLocation(LOCATION_HAND) +end +function c80335817.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:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c80335817.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToRemove() end + if chk==0 then return e:GetHandler():IsAbleToRemove() + and Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) + g:AddCard(e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,2,0,0) +end +function c80335817.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end + local g=Group.FromCards(c,tc) + if Duel.Remove(g,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + local og=Duel.GetOperatedGroup() + local oc=og:GetFirst() + while oc do + if oc:IsControler(tp) then + oc:RegisterFlagEffect(80335817,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,1) + else + oc:RegisterFlagEffect(80335817,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,0,1) + end + oc=og:GetNext() + end + og:KeepAlive() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + e1:SetCountLimit(1) + e1:SetLabelObject(og) + e1:SetCondition(c80335817.retcon) + e1:SetOperation(c80335817.retop) + Duel.RegisterEffect(e1,tp) + end +end +function c80335817.retfilter(c) + return c:GetFlagEffect(80335817)~=0 +end +function c80335817.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c80335817.retop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local sg=g:Filter(c80335817.retfilter,nil) + if sg:GetCount()>1 and sg:GetClassCount(Card.GetPreviousControler)==1 then + local ft=Duel.GetLocationCount(sg:GetFirst():GetPreviousControler(),LOCATION_MZONE) + if ft==1 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(80335817,0)) + local tc=sg:Select(tp,1,1,nil):GetFirst() + Duel.ReturnToField(tc) + sg:RemoveCard(tc) + end + end + local tc=sg:GetFirst() + while tc do + Duel.ReturnToField(tc) + tc=sg:GetNext() + end +end diff --git a/script/c80367387.lua b/script/c80367387.lua index 3013c2f5..a6489819 100644 --- a/script/c80367387.lua +++ b/script/c80367387.lua @@ -1,69 +1,67 @@ ---コアキメイル・ベルグザーク -function c80367387.initial_effect(c) - --cost - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c80367387.mtcon) - e1:SetOperation(c80367387.mtop) - c:RegisterEffect(e1) - --chain attack - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(80367387,3)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLED) - e2:SetCondition(c80367387.atcon) - e2:SetOperation(c80367387.atop) - c:RegisterEffect(e2) -end -function c80367387.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c80367387.cfilter1(c) - return c:IsCode(36623431) and c:IsAbleToGraveAsCost() -end -function c80367387.cfilter2(c) - return c:IsType(TYPE_MONSTER) and c:IsRace(RACE_WARRIOR) and not c:IsPublic() -end -function c80367387.mtop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - Duel.HintSelection(Group.FromCards(c)) - local g1=Duel.GetMatchingGroup(c80367387.cfilter1,tp,LOCATION_HAND,0,nil) - local g2=Duel.GetMatchingGroup(c80367387.cfilter2,tp,LOCATION_HAND,0,nil) - local select=2 - Duel.Hint(HINT_SELECTMSG,tp,0) - if g1:GetCount()>0 and g2:GetCount()>0 then - select=Duel.SelectOption(tp,aux.Stringid(80367387,0),aux.Stringid(80367387,1),aux.Stringid(80367387,2)) - elseif g1:GetCount()>0 then - select=Duel.SelectOption(tp,aux.Stringid(80367387,0),aux.Stringid(80367387,2)) - if select==1 then select=2 end - elseif g2:GetCount()>0 then - select=Duel.SelectOption(tp,aux.Stringid(80367387,1),aux.Stringid(80367387,2))+1 - else - select=Duel.SelectOption(tp,aux.Stringid(80367387,2)) - select=2 - end - if select==0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=g1:Select(tp,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) - elseif select==1 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local g=g2:Select(tp,1,1,nil) - Duel.ConfirmCards(1-tp,g) - Duel.ShuffleHand(tp) - else - Duel.Destroy(c,REASON_COST) - end -end -function c80367387.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bc:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) -end -function c80367387.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end +--コアキメイル・ベルグザーク +function c80367387.initial_effect(c) + --cost + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c80367387.mtcon) + e1:SetOperation(c80367387.mtop) + c:RegisterEffect(e1) + --chain attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(80367387,3)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c80367387.atcon) + e2:SetOperation(c80367387.atop) + c:RegisterEffect(e2) +end +function c80367387.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c80367387.cfilter1(c) + return c:IsCode(36623431) and c:IsAbleToGraveAsCost() +end +function c80367387.cfilter2(c) + return c:IsType(TYPE_MONSTER) and c:IsRace(RACE_WARRIOR) and not c:IsPublic() +end +function c80367387.mtop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.HintSelection(Group.FromCards(c)) + local g1=Duel.GetMatchingGroup(c80367387.cfilter1,tp,LOCATION_HAND,0,nil) + local g2=Duel.GetMatchingGroup(c80367387.cfilter2,tp,LOCATION_HAND,0,nil) + local select=2 + Duel.Hint(HINT_SELECTMSG,tp,0) + if g1:GetCount()>0 and g2:GetCount()>0 then + select=Duel.SelectOption(tp,aux.Stringid(80367387,0),aux.Stringid(80367387,1),aux.Stringid(80367387,2)) + elseif g1:GetCount()>0 then + select=Duel.SelectOption(tp,aux.Stringid(80367387,0),aux.Stringid(80367387,2)) + if select==1 then select=2 end + elseif g2:GetCount()>0 then + select=Duel.SelectOption(tp,aux.Stringid(80367387,1),aux.Stringid(80367387,2))+1 + else + select=Duel.SelectOption(tp,aux.Stringid(80367387,2)) + select=2 + end + if select==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=g1:Select(tp,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + elseif select==1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=g2:Select(tp,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + else + Duel.Destroy(c,REASON_COST) + end +end +function c80367387.atcon(e,tp,eg,ep,ev,re,r,rp) + return aux.bdocon(e,tp,eg,ep,ev,re,r,rp) and e:GetHandler():IsChainAttackable() +end +function c80367387.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end diff --git a/script/c8038143.lua b/script/c8038143.lua index ab8fec8b..01e0ce37 100644 --- a/script/c8038143.lua +++ b/script/c8038143.lua @@ -1,70 +1,69 @@ ---タキオン・トランスミグレイション -function c8038143.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_TODECK) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c8038143.condition) - e1:SetTarget(c8038143.target) - e1:SetOperation(c8038143.activate) - c:RegisterEffect(e1) - --act in hand - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) - e2:SetCondition(c8038143.handcon) - c:RegisterEffect(e2) -end -function c8038143.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x107b) -end -function c8038143.condition(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsExistingMatchingCard(c8038143.cfilter,tp,LOCATION_MZONE,0,1,nil) then return false end - for i=1,ev do - local te,tgp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) - if tgp~=tp and (te:IsActiveType(TYPE_MONSTER) or te:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(i) then - return true - end - end - return false -end -function c8038143.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local ng=Group.CreateGroup() - local dg=Group.CreateGroup() - for i=1,ev do - local te,tgp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) - if tgp~=tp and (te:IsActiveType(TYPE_MONSTER) or te:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(i) then - local tc=te:GetHandler() - ng:AddCard(tc) - if tc:IsOnField() and tc:IsRelateToEffect(te) and not tc:IsHasEffect(EFFECT_CANNOT_TO_DECK) and Duel.IsPlayerCanSendtoDeck(tp,tc) then - dg:AddCard(tc) - end - end - end - Duel.SetTargetCard(dg) - Duel.SetOperationInfo(0,CATEGORY_NEGATE,ng,ng:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_TODECK,dg,dg:GetCount(),0,0) -end -function c8038143.activate(e,tp,eg,ep,ev,re,r,rp) - local dg=Group.CreateGroup() - for i=1,ev do - local te,tgp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) - if tgp~=tp and (te:IsActiveType(TYPE_MONSTER) or te:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(i) then - Duel.NegateActivation(i) - local tc=te:GetHandler() - if tc:IsRelateToEffect(e) and tc:IsRelateToEffect(te) and not tc:IsHasEffect(EFFECT_CANNOT_TO_DECK) and Duel.IsPlayerCanSendtoDeck(tp,tc) then - tc:CancelToGrave() - dg:AddCard(tc) - end - end - end - Duel.SendtoDeck(dg,nil,2,REASON_EFFECT) -end -function c8038143.filter(c) - return c:IsFaceup() and c:IsSetCard(0x307b) -end -function c8038143.handcon(e) - return Duel.IsExistingMatchingCard(c8038143.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end +--タキオン・トランスミグレイション +function c8038143.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_TODECK) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c8038143.condition) + e1:SetTarget(c8038143.target) + e1:SetOperation(c8038143.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c8038143.handcon) + c:RegisterEffect(e2) +end +function c8038143.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x107b) +end +function c8038143.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsExistingMatchingCard(c8038143.cfilter,tp,LOCATION_MZONE,0,1,nil) then return false end + for i=1,ev do + local te,tgp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) + if tgp~=tp and (te:IsActiveType(TYPE_MONSTER) or te:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(i) then + return true + end + end + return false +end +function c8038143.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ng=Group.CreateGroup() + local dg=Group.CreateGroup() + for i=1,ev do + local te,tgp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) + if tgp~=tp and (te:IsActiveType(TYPE_MONSTER) or te:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(i) then + local tc=te:GetHandler() + ng:AddCard(tc) + if tc:IsOnField() and tc:IsRelateToEffect(te) and not tc:IsHasEffect(EFFECT_CANNOT_TO_DECK) and Duel.IsPlayerCanSendtoDeck(tp,tc) then + dg:AddCard(tc) + end + end + end + Duel.SetTargetCard(dg) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,ng,ng:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_TODECK,dg,dg:GetCount(),0,0) +end +function c8038143.activate(e,tp,eg,ep,ev,re,r,rp) + local dg=Group.CreateGroup() + for i=1,ev do + local te,tgp=Duel.GetChainInfo(i,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER) + if tgp~=tp and (te:IsActiveType(TYPE_MONSTER) or te:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.NegateActivation(i) then + local tc=te:GetHandler() + if tc:IsRelateToEffect(e) and tc:IsRelateToEffect(te) and not tc:IsHasEffect(EFFECT_CANNOT_TO_DECK) and Duel.IsPlayerCanSendtoDeck(tp,tc) then + tc:CancelToGrave() + dg:AddCard(tc) + end + end + end + Duel.SendtoDeck(dg,nil,2,REASON_EFFECT) +end +function c8038143.filter(c) + return c:IsFaceup() and c:IsSetCard(0x307b) +end +function c8038143.handcon(e) + return Duel.IsExistingMatchingCard(c8038143.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c80532587.lua b/script/c80532587.lua index 4b1c621d..f52bd7bc 100644 --- a/script/c80532587.lua +++ b/script/c80532587.lua @@ -3,7 +3,7 @@ function c80532587.initial_effect(c) c:SetSPSummonOnce(80532587) --fusion material c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.FilterBoolFunction(Card.IsType,TYPE_XYZ),false) + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionType,TYPE_SYNCHRO),aux.FilterBoolFunction(Card.IsFusionType,TYPE_XYZ),false) --spsummon condition local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) diff --git a/script/c80559548.lua b/script/c80559548.lua index 607a067f..e146f0f2 100644 --- a/script/c80559548.lua +++ b/script/c80559548.lua @@ -1,52 +1,52 @@ ---SRシェイブー・メラン -function c80559548.initial_effect(c) - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c80559548.sumop) - c:RegisterEffect(e1) - --atk down - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(80559548,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c80559548.atkcon) - e2:SetTarget(c80559548.atktg) - e2:SetOperation(c80559548.atkop) - c:RegisterEffect(e2) -end -function c80559548.sumop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c80559548.atkcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) -end -function c80559548.atktg(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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c80559548.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsPosition(POS_FACEUP_ATTACK) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(-800) - tc:RegisterEffect(e1) - end - end -end +--SRシェイブー・メラン +function c80559548.initial_effect(c) + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c80559548.sumop) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(80559548,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c80559548.atkcon) + e2:SetTarget(c80559548.atktg) + e2:SetOperation(c80559548.atkop) + c:RegisterEffect(e2) +end +function c80559548.sumop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c80559548.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) +end +function c80559548.atktg(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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c80559548.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(-800) + tc:RegisterEffect(e1) + end + end +end diff --git a/script/c80566312.lua b/script/c80566312.lua index 2da6991e..0fa65ea7 100644 --- a/script/c80566312.lua +++ b/script/c80566312.lua @@ -1,27 +1,27 @@ ---祝祷の聖歌 -function c80566312.initial_effect(c) - aux.AddRitualProcGreaterCode(c,56350972) - --destroy replace - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EFFECT_DESTROY_REPLACE) - e1:SetRange(LOCATION_GRAVE) - e1:SetTarget(c80566312.reptg) - e1:SetValue(c80566312.repval) - e1:SetOperation(c80566312.repop) - c:RegisterEffect(e1) -end -function c80566312.repfilter(c,tp) - return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsType(TYPE_RITUAL) - and c:IsReason(REASON_EFFECT+REASON_BATTLE) -end -function c80566312.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemove() and eg:IsExists(c80566312.repfilter,1,nil,tp) end - return Duel.SelectYesNo(tp,aux.Stringid(80566312,0)) -end -function c80566312.repval(e,c) - return c80566312.repfilter(c,e:GetHandlerPlayer()) -end -function c80566312.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) -end +--祝祷の聖歌 +function c80566312.initial_effect(c) + aux.AddRitualProcGreaterCode(c,56350972) + --destroy replace + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EFFECT_DESTROY_REPLACE) + e1:SetRange(LOCATION_GRAVE) + e1:SetTarget(c80566312.reptg) + e1:SetValue(c80566312.repval) + e1:SetOperation(c80566312.repop) + c:RegisterEffect(e1) +end +function c80566312.repfilter(c,tp) + return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsType(TYPE_RITUAL) + and c:IsReason(REASON_EFFECT+REASON_BATTLE) +end +function c80566312.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() and eg:IsExists(c80566312.repfilter,1,nil,tp) end + return Duel.SelectYesNo(tp,aux.Stringid(80566312,0)) +end +function c80566312.repval(e,c) + return c80566312.repfilter(c,e:GetHandlerPlayer()) +end +function c80566312.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c8062132.lua b/script/c8062132.lua index 5f0ecd9e..00700293 100644 --- a/script/c8062132.lua +++ b/script/c8062132.lua @@ -1,101 +1,101 @@ ---毒蛇神ヴェノミナーガ -function c8062132.initial_effect(c) - c:EnableCounterPermit(0x11) - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c8062132.atkval) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(8062132,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLE_DESTROYED) - e3:SetCondition(c8062132.condition) - e3:SetCost(c8062132.cost) - e3:SetTarget(c8062132.target) - e3:SetOperation(c8062132.operation) - c:RegisterEffect(e3) - --unaffectable - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e4:SetValue(1) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_IMMUNE_EFFECT) - e5:SetValue(c8062132.efilter) - c:RegisterEffect(e5) - --counter - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(8062132,1)) - e6:SetCategory(CATEGORY_COUNTER) - e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_BATTLE_DAMAGE) - e6:SetCondition(c8062132.ctcon) - e6:SetOperation(c8062132.ctop) - c:RegisterEffect(e6) - --win - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e7:SetCode(EVENT_ADJUST) - e7:SetRange(LOCATION_MZONE) - e7:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) - e7:SetOperation(c8062132.winop) - c:RegisterEffect(e7) -end -function c8062132.efilter(e,te) - return te:GetOwner()~=e:GetOwner() -end -function c8062132.atkval(e,c) - return Duel.GetMatchingGroupCount(Card.IsRace,c:GetControler(),LOCATION_GRAVE,0,nil,RACE_REPTILE)*500 -end -function c8062132.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c8062132.cfilter(c) - return c:IsRace(RACE_REPTILE) and c:IsAbleToRemoveAsCost() -end -function c8062132.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c8062132.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c8062132.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c8062132.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c8062132.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,true,false,POS_FACEUP) - end -end -function c8062132.ctcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c8062132.ctop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - c:AddCounter(0x11,1) -end -function c8062132.winop(e,tp,eg,ep,ev,re,r,rp) - local WIN_REASON_VENNOMINAGA = 0x12 - local c=e:GetHandler() - if c:GetCounter(0x11)==3 then - Duel.Win(tp,WIN_REASON_VENNOMINAGA) - end -end +--毒蛇神ヴェノミナーガ +function c8062132.initial_effect(c) + c:EnableCounterPermit(0x11) + c:EnableReviveLimit() + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c8062132.atkval) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(8062132,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetCondition(c8062132.condition) + e3:SetCost(c8062132.cost) + e3:SetTarget(c8062132.target) + e3:SetOperation(c8062132.operation) + c:RegisterEffect(e3) + --unaffectable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetValue(c8062132.efilter) + c:RegisterEffect(e5) + --counter + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(8062132,1)) + e6:SetCategory(CATEGORY_COUNTER) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_BATTLE_DAMAGE) + e6:SetCondition(c8062132.ctcon) + e6:SetOperation(c8062132.ctop) + c:RegisterEffect(e6) + --win + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_ADJUST) + e7:SetRange(LOCATION_MZONE) + e7:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e7:SetOperation(c8062132.winop) + c:RegisterEffect(e7) +end +function c8062132.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c8062132.atkval(e,c) + return Duel.GetMatchingGroupCount(Card.IsRace,c:GetControler(),LOCATION_GRAVE,0,nil,RACE_REPTILE)*500 +end +function c8062132.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c8062132.cfilter(c) + return c:IsRace(RACE_REPTILE) and c:IsAbleToRemoveAsCost() +end +function c8062132.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c8062132.cfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c8062132.cfilter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c8062132.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c8062132.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,true,false,POS_FACEUP) + end +end +function c8062132.ctcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c8062132.ctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:AddCounter(0x11,1) +end +function c8062132.winop(e,tp,eg,ep,ev,re,r,rp) + local WIN_REASON_VENNOMINAGA = 0x12 + local c=e:GetHandler() + if c:GetCounter(0x11)==3 then + Duel.Win(tp,WIN_REASON_VENNOMINAGA) + end +end diff --git a/script/c80666118.lua b/script/c80666118.lua index a413df84..df00e3b6 100644 --- a/script/c80666118.lua +++ b/script/c80666118.lua @@ -1,44 +1,44 @@ ---レッド・デーモンズ・ドラゴン・スカーライト -function c80666118.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --change name - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetRange(LOCATION_MZONE+LOCATION_GRAVE) - e1:SetValue(70902743) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetTarget(c80666118.destg) - e2:SetOperation(c80666118.desop) - c:RegisterEffect(e2) -end -function c80666118.filter(c,atk) - return c:IsFaceup() and c:IsAttackBelow(atk) and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL - and c:IsType(TYPE_EFFECT) -end -function c80666118.destg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.IsExistingMatchingCard(c80666118.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,c:GetAttack()) end - local g=Duel.GetMatchingGroup(c80666118.filter,tp,LOCATION_MZONE,LOCATION_MZONE,c,c:GetAttack()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*500) -end -function c80666118.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local g=Duel.GetMatchingGroup(c80666118.filter,tp,LOCATION_MZONE,LOCATION_MZONE,c,c:GetAttack()) - local ct=Duel.Destroy(g,REASON_EFFECT) - if ct>0 then - Duel.BreakEffect() - Duel.Damage(1-tp,ct*500,REASON_EFFECT) - end -end +--レッド・デーモンズ・ドラゴン・スカーライト +function c80666118.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --change name + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetRange(LOCATION_MZONE+LOCATION_GRAVE) + e1:SetValue(70902743) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetTarget(c80666118.destg) + e2:SetOperation(c80666118.desop) + c:RegisterEffect(e2) +end +function c80666118.filter(c,atk) + return c:IsFaceup() and c:IsAttackBelow(atk) and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL + and c:IsType(TYPE_EFFECT) +end +function c80666118.destg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c80666118.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,c:GetAttack()) end + local g=Duel.GetMatchingGroup(c80666118.filter,tp,LOCATION_MZONE,LOCATION_MZONE,c,c:GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*500) +end +function c80666118.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local g=Duel.GetMatchingGroup(c80666118.filter,tp,LOCATION_MZONE,LOCATION_MZONE,c,c:GetAttack()) + local ct=Duel.Destroy(g,REASON_EFFECT) + if ct>0 then + Duel.BreakEffect() + Duel.Damage(1-tp,ct*500,REASON_EFFECT) + end +end diff --git a/script/c80678380.lua b/script/c80678380.lua index 14d03052..4c87f3ec 100644 --- a/script/c80678380.lua +++ b/script/c80678380.lua @@ -32,8 +32,7 @@ function c80678380.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c80678380.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c80696379.lua b/script/c80696379.lua index 102e2d58..38461a47 100644 --- a/script/c80696379.lua +++ b/script/c80696379.lua @@ -1,60 +1,60 @@ ---オッドアイズ・メテオバースト・ドラゴン -function c80696379.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(80696379,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCountLimit(1,80696379) - e1:SetTarget(c80696379.sptg) - e1:SetOperation(c80696379.spop) - c:RegisterEffect(e1) - --activate limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EFFECT_CANNOT_ACTIVATE) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,1) - e2:SetCondition(c80696379.condition) - e2:SetValue(c80696379.aclimit) - c:RegisterEffect(e2) -end -function c80696379.filter(c,e,tp) - return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c80696379.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c80696379.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c80696379.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c80696379.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c80696379.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end - if c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end -function c80696379.condition(e) - local ph=Duel.GetCurrentPhase() - return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE -end -function c80696379.aclimit(e,re,tp) - return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) -end +--オッドアイズ・メテオバースト・ドラゴン +function c80696379.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80696379,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCountLimit(1,80696379) + e1:SetTarget(c80696379.sptg) + e1:SetOperation(c80696379.spop) + c:RegisterEffect(e1) + --activate limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,1) + e2:SetCondition(c80696379.condition) + e2:SetValue(c80696379.aclimit) + c:RegisterEffect(e2) +end +function c80696379.filter(c,e,tp) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c80696379.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c80696379.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c80696379.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c80696379.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c80696379.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c80696379.condition(e) + local ph=Duel.GetCurrentPhase() + return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE +end +function c80696379.aclimit(e,re,tp) + return re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c80744121.lua b/script/c80744121.lua index 47edd90b..1b20f07f 100644 --- a/script/c80744121.lua +++ b/script/c80744121.lua @@ -1,46 +1,47 @@ ---D-HERO ドゥームガイ -function c80744121.initial_effect(c) - --reg - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetOperation(c80744121.regop) - c:RegisterEffect(e1) -end -function c80744121.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsReason(REASON_BATTLE) and c:IsLocation(LOCATION_GRAVE) then - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(80744121,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCondition(c80744121.spcon) - e1:SetTarget(c80744121.sptg) - e1:SetOperation(c80744121.spop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,1) - c:RegisterEffect(e1) - end -end -function c80744121.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c80744121.spfilter(c,e,tp) - return c:IsSetCard(0xc008) and c:GetCode()~=80744121 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c80744121.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c80744121.spfilter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c80744121.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c80744121.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--D-HERO ドゥームガイ +function c80744121.initial_effect(c) + --reg + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetOperation(c80744121.regop) + c:RegisterEffect(e1) +end +function c80744121.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsReason(REASON_BATTLE) and c:IsLocation(LOCATION_GRAVE) then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80744121,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCondition(c80744121.spcon) + e1:SetTarget(c80744121.sptg) + e1:SetOperation(c80744121.spop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,1) + c:RegisterEffect(e1) + end +end +function c80744121.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c80744121.spfilter(c,e,tp) + return c:IsSetCard(0xc008) and c:GetCode()~=80744121 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c80744121.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c80744121.spfilter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c80744121.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c80744121.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c80764541.lua b/script/c80764541.lua index 9258f2f8..1fc9743c 100644 --- a/script/c80764541.lua +++ b/script/c80764541.lua @@ -8,7 +8,7 @@ function c80764541.initial_effect(c) e1:SetCategory(CATEGORY_DESTROY) e1:SetDescription(aux.Stringid(80764541,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c80764541.descost) diff --git a/script/c80796456.lua b/script/c80796456.lua new file mode 100644 index 00000000..d0efc719 --- /dev/null +++ b/script/c80796456.lua @@ -0,0 +1,81 @@ +--No.70 デッドリー・シン +function c80796456.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2) + c:EnableReviveLimit() + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80796456,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c80796456.rmcost) + e1:SetTarget(c80796456.rmtg) + e1:SetOperation(c80796456.rmop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(80796456,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c80796456.atkcon) + e2:SetOperation(c80796456.atkop) + c:RegisterEffect(e2) +end +c80796456.xyz_number=70 +function c80796456.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c80796456.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c80796456.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then + tc:RegisterFlagEffect(80796456,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetLabelObject(tc) + e1:SetCountLimit(1) + e1:SetCondition(c80796456.retcon) + e1:SetOperation(c80796456.retop) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_OPPO_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c80796456.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and e:GetLabelObject():GetFlagEffect(80796456)~=0 +end +function c80796456.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end +function c80796456.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler() +end +function c80796456.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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_RANK) + e2:SetValue(3) + e2:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e2) + end +end diff --git a/script/c80802524.lua b/script/c80802524.lua index 7693653c..910819f4 100644 --- a/script/c80802524.lua +++ b/script/c80802524.lua @@ -35,8 +35,7 @@ function c80802524.activate(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local sg=g:Filter(Card.IsRelateToEffect,nil,e) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if sg:GetCount()==0 or ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if sg:GetCount()==0 or ft<=0 or (sg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end if ft0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c80831721.rfilter(c) - return c:IsCode(80831721) and c:IsAbleToRemoveAsCost() -end -function c80831721.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c80831721.rfilter,tp,LOCATION_GRAVE,0,3,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c80831721.rfilter,tp,LOCATION_GRAVE,0,3,3,nil) - Duel.Remove(g,POS_FACEUP,REASON_EFFECT) -end -function c80831721.atktg(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_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c80831721.atkop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() then - local og=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - local mg,matk=og:GetMaxGroup(Card.GetAttack) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(matk) - tc:RegisterEffect(e1) - end -end +--賢者の石-サバティエル +function c80831721.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80831721,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c80831721.condition) + e1:SetCost(c80831721.cost) + e1:SetTarget(c80831721.target) + e1:SetOperation(c80831721.operation) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(80831721,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c80831721.atkcost) + e2:SetTarget(c80831721.atktg) + e2:SetOperation(c80831721.atkop) + c:RegisterEffect(e2) +end +function c80831721.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_GRAVE,0,1,nil,0x10a4) +end +function c80831721.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.PayLPCost(tp,math.floor(Duel.GetLP(tp)/2)) +end +function c80831721.filter(c) + return c:IsSetCard(0x46) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c80831721.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c80831721.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c80831721.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c80831721.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c80831721.rfilter(c) + return c:IsCode(80831721) and c:IsAbleToRemoveAsCost() +end +function c80831721.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c80831721.rfilter,tp,LOCATION_GRAVE,0,3,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c80831721.rfilter,tp,LOCATION_GRAVE,0,3,3,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end +function c80831721.atktg(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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c80831721.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() then + local og=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local mg,matk=og:GetMaxGroup(Card.GetAttack) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(matk) + tc:RegisterEffect(e1) + end +end diff --git a/script/c80863132.lua b/script/c80863132.lua index 0d7ce66f..2c92ab1c 100644 --- a/script/c80863132.lua +++ b/script/c80863132.lua @@ -1,25 +1,25 @@ ---無効 -function c80863132.initial_effect(c) - --change effect - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c80863132.condition) - e1:SetOperation(c80863132.activate) - c:RegisterEffect(e1) -end -function c80863132.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 c80863132.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeChainOperation(ev,c80863132.repop) -end -function c80863132.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 +--無効 +function c80863132.initial_effect(c) + --change effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c80863132.condition) + e1:SetOperation(c80863132.activate) + c:RegisterEffect(e1) +end +function c80863132.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 c80863132.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeChainOperation(ev,c80863132.repop) +end +function c80863132.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 diff --git a/script/c80889750.lua b/script/c80889750.lua index 994983ac..79176500 100644 --- a/script/c80889750.lua +++ b/script/c80889750.lua @@ -1,76 +1,76 @@ ---デストーイ・サーベル・タイガー -function c80889750.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunFunRep(c,c80889750.mfilter1,c80889750.mfilter2,1,63,true) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c80889750.spcon) - e2:SetTarget(c80889750.sptg) - e2:SetOperation(c80889750.spop) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xad)) - e3:SetValue(400) - c:RegisterEffect(e3) - --indes - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetCondition(c80889750.indcon) - e4:SetOperation(c80889750.indop) - c:RegisterEffect(e4) -end -function c80889750.mfilter1(c) - return c:IsFusionSetCard(0xad) and c:IsType(TYPE_FUSION) -end -function c80889750.mfilter2(c) - return c:IsFusionSetCard(0xa9) or c:IsFusionSetCard(0xc3) -end -function c80889750.spcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c80889750.spfilter(c,e,tp) - return c:IsSetCard(0xad) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c80889750.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c80889750.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c80889750.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c80889750.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c80889750.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c80889750.indcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return bit.band(c:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and c:GetMaterialCount()>=3 -end -function c80889750.indop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetDescription(aux.Stringid(80889750,0)) - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e2:SetProperty(EFFECT_FLAG_CLIENT_HINT) - c:RegisterEffect(e2) -end +--デストーイ・サーベル・タイガー +function c80889750.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunFunRep(c,c80889750.mfilter1,c80889750.mfilter2,1,63,true) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c80889750.spcon) + e2:SetTarget(c80889750.sptg) + e2:SetOperation(c80889750.spop) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xad)) + e3:SetValue(400) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c80889750.indcon) + e4:SetOperation(c80889750.indop) + c:RegisterEffect(e4) +end +function c80889750.mfilter1(c) + return c:IsFusionSetCard(0xad) and c:IsFusionType(TYPE_FUSION) +end +function c80889750.mfilter2(c) + return c:IsFusionSetCard(0xa9) or c:IsFusionSetCard(0xc3) +end +function c80889750.spcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c80889750.spfilter(c,e,tp) + return c:IsSetCard(0xad) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c80889750.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c80889750.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c80889750.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c80889750.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c80889750.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c80889750.indcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(c:GetSummonType(),SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and c:GetMaterialCount()>=3 +end +function c80889750.indop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetDescription(aux.Stringid(80889750,0)) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetProperty(EFFECT_FLAG_CLIENT_HINT) + c:RegisterEffect(e2) +end diff --git a/script/c80896940.lua b/script/c80896940.lua index b7470071..f519539d 100644 --- a/script/c80896940.lua +++ b/script/c80896940.lua @@ -68,7 +68,6 @@ function c80896940.initial_effect(c) --pendulum local e7=Effect.CreateEffect(c) e7:SetDescription(aux.Stringid(80896940,5)) - e7:SetCategory(CATEGORY_DESTROY) e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e7:SetCode(EVENT_DESTROYED) e7:SetProperty(EFFECT_FLAG_DELAY) @@ -187,7 +186,7 @@ function c80896940.indop(e,tp,eg,ep,ev,re,r,rp) e2:SetType(EFFECT_TYPE_SINGLE) e2:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) e2:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) tc:RegisterEffect(e2) end function c80896940.atkcon(e,tp,eg,ep,ev,re,r,rp) @@ -241,7 +240,8 @@ function c80896940.lpop(e,tp,eg,ep,ev,re,r,rp) Duel.SetLP(1-tp,math.ceil(Duel.GetLP(1-tp)/2)) end function c80896940.pencon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_MZONE) + local c=e:GetHandler() + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() end function c80896940.pentg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end diff --git a/script/c80908502.lua b/script/c80908502.lua index 581775f5..cc90360a 100644 --- a/script/c80908502.lua +++ b/script/c80908502.lua @@ -1,43 +1,43 @@ ---E・HERO キャプテン・ゴールド -function c80908502.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(80908502,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c80908502.cost) - e1:SetTarget(c80908502.target) - e1:SetOperation(c80908502.operation) - c:RegisterEffect(e1) - --self destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_SELF_DESTROY) - e2:SetCondition(c80908502.descon) - c:RegisterEffect(e2) -end -function c80908502.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end - Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) -end -function c80908502.filter(c) - return c:IsCode(63035430) and c:IsAbleToHand() -end -function c80908502.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c80908502.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c80908502.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local tg=Duel.GetFirstMatchingCard(c80908502.filter,tp,LOCATION_DECK,0,nil) - if tg then - Duel.SendtoHand(tg,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tg) - end -end -function c80908502.descon(e) - return not Duel.IsEnvironment(63035430) -end +--E・HERO キャプテン・ゴールド +function c80908502.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(80908502,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c80908502.cost) + e1:SetTarget(c80908502.target) + e1:SetOperation(c80908502.operation) + c:RegisterEffect(e1) + --self destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetCondition(c80908502.descon) + c:RegisterEffect(e2) +end +function c80908502.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() and c:IsDiscardable() end + Duel.SendtoGrave(c,REASON_COST+REASON_DISCARD) +end +function c80908502.filter(c) + return c:IsCode(63035430) and c:IsAbleToHand() +end +function c80908502.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c80908502.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c80908502.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetFirstMatchingCard(c80908502.filter,tp,LOCATION_DECK,0,nil) + if tg then + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end +end +function c80908502.descon(e) + return not Duel.IsEnvironment(63035430) +end diff --git a/script/c80921533.lua b/script/c80921533.lua index 0505bdce..472bc1e5 100644 --- a/script/c80921533.lua +++ b/script/c80921533.lua @@ -1,79 +1,79 @@ ---死皇帝の陵墓 -function c80921533.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetValue(SUMMON_TYPE_NORMAL) - c:RegisterEffect(e1) - --summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(80921533,0)) - e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) - e2:SetCategory(CATEGORY_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetTarget(c80921533.target) - e2:SetOperation(c80921533.operation) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) -end -function c80921533.filter(c,se) - if not c:IsSummonableCard() then return false end - local mi,ma=c:GetTributeRequirement() - return mi>0 and (c:IsSummonable(false,se) or c:IsMSetable(false,se)) -end -function c80921533.get_targets(se,tp) - local g=Duel.GetMatchingGroup(c80921533.filter,tp,LOCATION_HAND,0,nil,se) - local minct=5 - local maxct=0 - local tc=g:GetFirst() - while tc do - local mi,ma=tc:GetTributeRequirement() - if mi>0 and mimaxct then maxct=ma end - tc=g:GetNext() - end - return minct,maxct -end -function c80921533.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local se=e:GetLabelObject() - if chk==0 then - local mi,ma=c80921533.get_targets(se,tp) - if mi==5 then return false end - return Duel.CheckLPCost(tp,mi*1000) - end - local mi,ma=c80921533.get_targets(se,tp) - local ac=0 - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(80921533,3)) - if mi==ma then ac=Duel.AnnounceNumber(tp,mi*1000) - elseif ma>=2 and Duel.CheckLPCost(tp,2000) then ac=Duel.AnnounceNumber(tp,1000,2000) - else ac=Duel.AnnounceNumber(tp,1000) end - Duel.PayLPCost(tp,ac) - e:SetLabel(ac/1000) - Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) -end -function c80921533.sfilter(c,se,ct) - if not c:IsSummonableCard() then return false end - local mi,ma=c:GetTributeRequirement() - return (mi==ct or ma==ct) and (c:IsSummonable(false,se) or c:IsMSetable(false,se)) -end -function c80921533.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local ct=e:GetLabel() - local se=e:GetLabelObject() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) - local g=Duel.SelectMatchingCard(tp,c80921533.sfilter,tp,LOCATION_HAND,0,1,1,nil,se,ct) - local tc=g:GetFirst() - if tc then - local s1=tc:IsSummonable(false,se) - local s2=tc:IsMSetable(false,se) - if (s1 and s2 and Duel.SelectPosition(tp,tc,POS_FACEUP_ATTACK+POS_FACEDOWN_DEFENSE)==POS_FACEUP_ATTACK) or not s2 then - Duel.Summon(tp,tc,false,se) - else - Duel.MSet(tp,tc,false,se) - end - end -end +--死皇帝の陵墓 +function c80921533.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetValue(SUMMON_TYPE_NORMAL) + c:RegisterEffect(e1) + --summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(80921533,0)) + e2:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e2:SetCategory(CATEGORY_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetTarget(c80921533.target) + e2:SetOperation(c80921533.operation) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) +end +function c80921533.filter(c,se) + if not c:IsSummonableCard() then return false end + local mi,ma=c:GetTributeRequirement() + return mi>0 and (c:IsSummonable(false,se) or c:IsMSetable(false,se)) +end +function c80921533.get_targets(se,tp) + local g=Duel.GetMatchingGroup(c80921533.filter,tp,LOCATION_HAND,0,nil,se) + local minct=5 + local maxct=0 + local tc=g:GetFirst() + while tc do + local mi,ma=tc:GetTributeRequirement() + if mi>0 and mimaxct then maxct=ma end + tc=g:GetNext() + end + return minct,maxct +end +function c80921533.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local se=e:GetLabelObject() + if chk==0 then + local mi,ma=c80921533.get_targets(se,tp) + if mi==5 then return false end + return Duel.CheckLPCost(tp,mi*1000) + end + local mi,ma=c80921533.get_targets(se,tp) + local ac=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(80921533,3)) + if mi==ma then ac=Duel.AnnounceNumber(tp,mi*1000) + elseif ma>=2 and Duel.CheckLPCost(tp,2000) then ac=Duel.AnnounceNumber(tp,1000,2000) + else ac=Duel.AnnounceNumber(tp,1000) end + Duel.PayLPCost(tp,ac) + e:SetLabel(ac/1000) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c80921533.sfilter(c,se,ct) + if not c:IsSummonableCard() then return false end + local mi,ma=c:GetTributeRequirement() + return (mi==ct or ma==ct) and (c:IsSummonable(false,se) or c:IsMSetable(false,se)) +end +function c80921533.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ct=e:GetLabel() + local se=e:GetLabelObject() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c80921533.sfilter,tp,LOCATION_HAND,0,1,1,nil,se,ct) + local tc=g:GetFirst() + if tc then + local s1=tc:IsSummonable(false,se) + local s2=tc:IsMSetable(false,se) + if (s1 and s2 and Duel.SelectPosition(tp,tc,POS_FACEUP_ATTACK+POS_FACEDOWN_DEFENSE)==POS_FACEUP_ATTACK) or not s2 then + Duel.Summon(tp,tc,false,se) + else + Duel.MSet(tp,tc,false,se) + end + end +end diff --git a/script/c810000001.lua b/script/c810000001.lua new file mode 100644 index 00000000..70565c21 --- /dev/null +++ b/script/c810000001.lua @@ -0,0 +1,61 @@ +-- Invincible Demise Lord +-- scripted by: UnknownGuest +function c810000001.initial_effect(c) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCountLimit(1,810000001) + e2:SetCost(c810000001.spcost) + e2:SetOperation(c810000001.regop) + c:RegisterEffect(e2) + --atk up and cannot be destroyed + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c810000001.upcon) + e3:SetOperation(c810000001.upop) + c:RegisterEffect(e3) +end +function c810000001.spop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP) +end +function c810000001.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,888000025)==0 end + Duel.RegisterFlagEffect(tp,888000025,0,0,0) +end +function c810000001.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + -- reborn + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_GRAVE) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c810000001.spop2) + c:RegisterEffect(e2) +end +function c810000001.upcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c810000001.upop(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:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(3000) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(1) + c:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c810000002.lua b/script/c810000002.lua new file mode 100644 index 00000000..d89f7b5d --- /dev/null +++ b/script/c810000002.lua @@ -0,0 +1,78 @@ +-- Dark Spell Regeneration +-- scripted by: UnknownGuest +function c810000002.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c810000002.condition) + e1:SetTarget(c810000002.target) + e1:SetOperation(c810000002.activate) + c:RegisterEffect(e1) +end +function c810000002.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c810000002.filter(c,e,tp) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then + ft=ft-1 + end + return c:IsType(TYPE_SPELL) and c:CheckActivateEffect(false,false,false)~=nil + and (ft>0 or c:IsType(TYPE_FIELD)) +end +function c810000002.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then + ft=ft-1 + end + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c810000002.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c810000002.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + Duel.SelectTarget(tp,c810000002.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp) +end +function c810000002.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and (tc:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) then + local p=tc:GetControler() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(of,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + Duel.SendtoGrave(tc,REASON_EFFECT,1-tp) + end +end diff --git a/script/c810000003.lua b/script/c810000003.lua new file mode 100644 index 00000000..9e4a162b --- /dev/null +++ b/script/c810000003.lua @@ -0,0 +1,25 @@ +-- Trap Booster +-- scripted by: UnknownGuest +function c810000003.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c810000003.cost) + e1:SetOperation(c810000003.activate) + c:RegisterEffect(e1) +end +function c810000003.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 c810000003.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e1:SetTargetRange(LOCATION_HAND,0) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c810000005.lua b/script/c810000005.lua new file mode 100644 index 00000000..591a63b4 --- /dev/null +++ b/script/c810000005.lua @@ -0,0 +1,24 @@ +-- Hero's Rule 1: Five Freedoms +-- scripted by: UnknownGuest +function c810000005.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000005.target) + e1:SetOperation(c810000005.activate) + c:RegisterEffect(e1) +end +function c810000005.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_GRAVE and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_GRAVE,LOCATION_GRAVE,5,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_GRAVE,LOCATION_GRAVE,5,5,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,5,0,0) +end +function c810000005.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c810000006.lua b/script/c810000006.lua new file mode 100644 index 00000000..afa0a938 --- /dev/null +++ b/script/c810000006.lua @@ -0,0 +1,34 @@ +-- Hope for Escape (Anime) +-- scripted by: UnknownGuest +function c810000006.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c810000006.condition) + e1:SetCost(c810000006.cost) + e1:SetTarget(c810000006.target) + e1:SetOperation(c810000006.activate) + c:RegisterEffect(e1) +end + +function c810000006.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)1 +end diff --git a/script/c810000009.lua b/script/c810000009.lua new file mode 100644 index 00000000..fdb2f712 --- /dev/null +++ b/script/c810000009.lua @@ -0,0 +1,38 @@ +-- Sneak Giant +-- scripted by: UnknownGuest +function c810000009.initial_effect(c) + -- summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000009,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c810000009.ntcon) + e1:SetTarget(c810000009.tg) + e1:SetOperation(c810000009.op) + c:RegisterEffect(e1) +end +function c810000009.filter(c,e,tp) + return c:IsLevelBelow(2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000009.ntcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and Duel.IsExistingMatchingCard(c810000009.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) +end +function c810000009.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000009.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c810000009.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c810000009.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c810000011.lua b/script/c810000011.lua new file mode 100644 index 00000000..58fa78fa --- /dev/null +++ b/script/c810000011.lua @@ -0,0 +1,51 @@ +-- Elemental HERO Bubbleman (Anime) +-- scripted by: UnknownGuest +function c810000011.initial_effect(c) + -- special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c810000011.spcon) + c:RegisterEffect(e1) + -- draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000011,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c810000011.condition) + e2:SetTarget(c810000011.target) + e2:SetOperation(c810000011.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c810000011.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_HAND,0)==1 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c810000011.filter(c) + return not c:IsStatus(STATUS_LEAVE_CONFIRMED) +end +function c810000011.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c810000011.filter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) +end +function c810000011.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c810000011.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsExistingMatchingCard(c810000011.filter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c810000012.lua b/script/c810000012.lua new file mode 100644 index 00000000..e9551eb8 --- /dev/null +++ b/script/c810000012.lua @@ -0,0 +1,83 @@ +-- Narrow Tunnel +-- scripted by: UnknownGuest +function c810000012.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- disable summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,1) + e2:SetTarget(c810000012.sumlimit) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_CANNOT_SUMMON) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + c:RegisterEffect(e4) + --destroy monster + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e8:SetCode(EVENT_MSET) + e8:SetRange(LOCATION_SZONE) + e8:SetCondition(c810000012.descon) + e8:SetOperation(c810000012.desop) + c:RegisterEffect(e8) + local e9=e8:Clone() + e9:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e9) + local e10=e8:Clone() + e10:SetCode(EVENT_SUMMON_SUCCESS) + c:RegisterEffect(e10) + local e11=e8:Clone() + e11:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e11) + --adjust + local e12=Effect.CreateEffect(c) + e12:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e12:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e12:SetCode(EVENT_ADJUST) + e12:SetRange(LOCATION_SZONE) + e12:SetCondition(c810000012.descon) + e12:SetOperation(c810000012.desop) + c:RegisterEffect(e12) +end +function c810000012.sumlimit(e,c,sump,sumtype,sumpos,targetp) + --local p=c:GetControler() + return Duel.GetActivityCount(targetp,ACTIVITY_SUMMON)>0 or Duel.GetActivityCount(targetp,ACTIVITY_FLIPSUMMON)>0 + or Duel.GetActivityCount(targetp,ACTIVITY_SPSUMMON)>0 or Duel.GetActivityCount(targetp,ACTIVITY_NORMALSUMMON)>0 +end +function c810000012.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)>=2 or Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>=2 +end +function c810000012.desop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0,nil) + if ft>1 then + local ct=ft-1 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,ct,ct,nil) + local tc=g:GetFirst() + while tc do + Duel.Destroy(tc,REASON_EFFECT) + tc=g:GetNext() + end + end + ft=Duel.GetFieldGroupCount(1-tp,LOCATION_MZONE,0,nil) + if ft>1 then + local ct=ft-1 + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(1-tp,nil,1-tp,LOCATION_MZONE,0,ct,ct,nil) + local tc=g:GetFirst() + while tc do + Duel.Destroy(tc,REASON_EFFECT) + tc=g:GetNext() + end + end +end diff --git a/script/c810000014.lua b/script/c810000014.lua new file mode 100644 index 00000000..9e6b6140 --- /dev/null +++ b/script/c810000014.lua @@ -0,0 +1,58 @@ +--The Legendary Gambler +--scripted by: UnknownGuest +function c810000014.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + --e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCode(EVENT_CHAINING) + c:RegisterEffect(e1) + --dice + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_NEGATE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TOSS_DICE_NEGATE) + e2:SetRange(LOCATION_SZONE) + --e2:SetCondition(c810000014.condition) + --e2:SetTarget(c810000014.target) + e2:SetOperation(c810000014.activate) + c:RegisterEffect(e2) +end +--[[function c810000014.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return false end + local ex=Duel.GetOperationInfo(ev,CATEGORY_DICE) + return ex and re:GetHandler():GetControler(1-tp) +end +function c810000014.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end]]-- +function c810000014.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(810000014,0)) then + Duel.Hint(HINT_CARD,0,810000014) + local cd=Duel.GetDiceResult() + if cd~=0 then + local dc=Duel.TossDice(tp,1) + --local cd=Duel.TossDice(1-tp,1) + if dc>=cd then + Duel.NegateEffect(ev) + end + end + end +end +--[[function c39454112.diceop(e,tp,eg,ep,ev,re,r,rp) + if Duel.SelectYesNo(tp,aux.Stringid(39454112,0)) then + Duel.Hint(HINT_CARD,0,39454112) + local dc={Duel.GetDiceResult()} + local ac=1 + if ev>1 then + local t={} + for i=1,ev do t[i]=i end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(39454112,1)) + ac=Duel.AnnounceNumber(tp,table.unpack(t)) + end + if dc[ac]==1 or dc[ac]==3 or dc[ac]==5 then dc[ac]=6 + else dc[ac]=1 end + Duel.SetDiceResult(table.unpack(dc)) + end +end]]-- diff --git a/script/c810000016.lua b/script/c810000016.lua new file mode 100644 index 00000000..72fe5ee1 --- /dev/null +++ b/script/c810000016.lua @@ -0,0 +1,39 @@ +-- Cut-In Shark +-- scripted by: UnknownGuest +function c810000016.initial_effect(c) + -- Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000016,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c810000016.condition) + e1:SetTarget(c810000016.target) + e1:SetOperation(c810000016.activate) + c:RegisterEffect(e1) +end +function c810000016.cfilter(e,c) + return Duel.GetAttackTarget() +end +function c810000016.condition(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsControler(tp) +end +function c810000016.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + local g=eg:Filter(c810000016.cfilter,nil) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c810000016.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 then return end + if c:IsRelateToEffect(e) then + Duel.Release(g,REASON_COST) + Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c810000017.lua b/script/c810000017.lua new file mode 100644 index 00000000..979acd7c --- /dev/null +++ b/script/c810000017.lua @@ -0,0 +1,23 @@ +-- Performapal Hammer Mammoth +-- scripted by: UnknownGuest +function c810000017.initial_effect(c) + -- atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetTarget(c810000017.target) + e1:SetOperation(c810000017.operation) + c:RegisterEffect(e1) +end +function c810000017.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c810000017.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000017.filter,tp,0,LOCATION_ONFIELD,1,nil) end + local sg=Duel.GetMatchingGroup(c810000017.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c810000017.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local sg=Duel.GetMatchingGroup(c810000017.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c810000018.lua b/script/c810000018.lua new file mode 100644 index 00000000..7fa2a356 --- /dev/null +++ b/script/c810000018.lua @@ -0,0 +1,26 @@ +-- Infernity Climber +-- scripted by: UnknownGuest +function c810000018.initial_effect(c) + -- to deck top + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_GRAVE) + e1:SetCondition(c810000018.condition) + e1:SetTarget(c810000018.target) + e1:SetOperation(c810000018.operation) + c:RegisterEffect(e1) +end +function c810000018.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c810000018.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToDeck() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c810000018.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) + end +end diff --git a/script/c810000019.lua b/script/c810000019.lua new file mode 100644 index 00000000..f66c1201 --- /dev/null +++ b/script/c810000019.lua @@ -0,0 +1,39 @@ +-- Zeus' Breath +-- scripted by: UnknownGuest +function c810000019.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c810000019.condition) + e1:SetTarget(c810000019.target) + e1:SetOperation(c810000019.activate) + c:RegisterEffect(e1) +end +function c810000019.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c810000019.dfilter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c810000019.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + local dam=Duel.GetMatchingGroupCount(c810000019.dfilter,tp,LOCATION_MZONE,0,nil) + if dam>0 then + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) + end +end +function c810000019.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsAttackable() and Duel.NegateAttack() then + local dam=Duel.GetMatchingGroupCount(c810000019.dfilter,tp,LOCATION_MZONE,0,nil) + if dam>0 then + Duel.Damage(1-tp,800,REASON_EFFECT) + end + end +end diff --git a/script/c810000020.lua b/script/c810000020.lua new file mode 100644 index 00000000..8d2597fb --- /dev/null +++ b/script/c810000020.lua @@ -0,0 +1,32 @@ +-- Extreme Pressure Power +-- scripted by: UnknownGuest +function c810000020.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000020.target) + e1:SetOperation(c810000020.activate) + c:RegisterEffect(e1) +end +function c810000020.filter(c) + return c:IsDestructable() +end +function c810000020.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:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(c810000020.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c810000020.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c810000020.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.SendtoGrave(tc,REASON_COST) + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c810000021.lua b/script/c810000021.lua new file mode 100644 index 00000000..8f7488f7 --- /dev/null +++ b/script/c810000021.lua @@ -0,0 +1,23 @@ +-- Deepest Impact +-- scripted by: UnknownGuest +function c810000021.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000021.target) + e1:SetOperation(c810000021.activate) + c:RegisterEffect(e1) +end +function c810000021.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c810000021.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(sg,REASON_EFFECT) + Duel.SetLP(tp,math.floor(Duel.GetLP(tp)/2)) + Duel.SetLP(1-tp,math.floor(Duel.GetLP(1-tp)/2)) +end diff --git a/script/c810000022.lua b/script/c810000022.lua new file mode 100644 index 00000000..2ab3689c --- /dev/null +++ b/script/c810000022.lua @@ -0,0 +1,33 @@ +-- Zeta Reticulant (Anime) +-- scripted by: UnknownGuest +function c810000022.initial_effect(c) + -- token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000022,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c810000022.condition) + e1:SetTarget(c810000022.target) + e1:SetOperation(c810000022.operation) + c:RegisterEffect(e1) +end +function c810000022.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsReason(REASON_RETURN) +end +function c810000022.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c810000022.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if ft<2 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,64382841,0,0x4011,500,300,2,RACE_FIEND,ATTRIBUTE_DARK) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,64382841) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c810000023.lua b/script/c810000023.lua new file mode 100644 index 00000000..4c3232f7 --- /dev/null +++ b/script/c810000023.lua @@ -0,0 +1,28 @@ +-- Labor Pain +-- scripted by: UnknownGuest +function c810000023.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- cost + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SUMMON_COST) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e2:SetTarget(c810000023.sumtg) + e2:SetCost(c810000023.ccost) + e2:SetOperation(c810000023.acop) + c:RegisterEffect(e2) +end +function c810000023.sumtg(e,c) + return c:IsType(TYPE_MONSTER) +end +function c810000023.ccost(e,c,tp) + return Duel.CheckLPCost(tp,1000) +end +function c810000023.acop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,1000) +end \ No newline at end of file diff --git a/script/c810000025.lua b/script/c810000025.lua new file mode 100644 index 00000000..6a1e3fb7 --- /dev/null +++ b/script/c810000025.lua @@ -0,0 +1,27 @@ +-- Twin Gunfighter +-- scripted by: UnknownGuest +function c810000025.initial_effect(c) + -- damage + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c810000025.condition) + e1:SetTarget(c810000025.target) + e1:SetOperation(c810000025.operation) + c:RegisterEffect(e1) +end +function c810000025.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler()==Duel.GetAttacker() +end +function c810000025.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local dam=e:GetHandler():GetAttack() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(dam) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,dam) +end +function c810000025.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,e:GetHandler():GetAttack(),REASON_EFFECT) +end diff --git a/script/c810000026.lua b/script/c810000026.lua new file mode 100644 index 00000000..65ec5461 --- /dev/null +++ b/script/c810000026.lua @@ -0,0 +1,29 @@ +-- Right-Hand Shark +-- scripted by: UnknownGuest +function c810000026.initial_effect(c) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(100000141,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c810000026.spcon) + e2:SetTarget(c810000026.sptg) + e2:SetOperation(c810000026.spop) + c:RegisterEffect(e2) +end +function c810000026.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c810000026.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c810000026.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c810000027.lua b/script/c810000027.lua new file mode 100644 index 00000000..7d8dc35b --- /dev/null +++ b/script/c810000027.lua @@ -0,0 +1,20 @@ +-- Depth Biter +-- scripted by: UnknownGuest +function c810000027.initial_effect(c) + -- summon with no tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000027,0)) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c810000027.ntcon) + c:RegisterEffect(e1) +end +function c810000027.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) +end +function c810000027.ntcon(e,c) + if c==nil then return true end + return c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000027.filter,c:GetControler(),0,LOCATION_MZONE,1,nil) +end diff --git a/script/c810000028.lua b/script/c810000028.lua new file mode 100644 index 00000000..8e5dfd8a --- /dev/null +++ b/script/c810000028.lua @@ -0,0 +1,35 @@ +-- Amazoness Chain Master (Anime) +-- scripted by: UnknownGuest +function c810000028.initial_effect(c) + -- get card + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000028,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c810000028.condition) + e1:SetCost(c810000028.cost) + e1:SetOperation(c810000028.operation) + c:RegisterEffect(e1) +end +function c810000028.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,0,LOCATION_HAND+LOCATION_DECK)~=0 +end +function c810000028.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 c810000028.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_DECK+LOCATION_HAND) + if g:GetCount()>0 then + Duel.ConfirmCards(tp,g) + local tg=g:Filter(Card.IsType,nil,TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP) + if tg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=tg:Select(tp,1,1,nil) + Duel.SendtoHand(sg,tp,REASON_EFFECT) + end + Duel.ShuffleHand(1-tp) + Duel.ShuffleDeck(1-tp) + end +end diff --git a/script/c810000029.lua b/script/c810000029.lua new file mode 100644 index 00000000..1dd5fbe5 --- /dev/null +++ b/script/c810000029.lua @@ -0,0 +1,30 @@ +-- Skull Kraken (Anime) +-- scripted by: UnknownGuest +function c810000029.initial_effect(c) + -- destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000029,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c810000029.destg) + e1:SetOperation(c810000029.desop) + c:RegisterEffect(e1) +end +function c810000029.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c810000029.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c810000029.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000029.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c810000029.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c810000029.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c810000030.lua b/script/c810000030.lua new file mode 100644 index 00000000..f69e943e --- /dev/null +++ b/script/c810000030.lua @@ -0,0 +1,42 @@ +-- Doppel Shark +-- scripted by: UnknownGuest +function c810000030.initial_effect(c) + -- copy name + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000030,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c810000030.copytg) + e1:SetOperation(c810000030.copyop) + c:RegisterEffect(e1) +end +function c810000030.filter(c) + return c:IsAttribute(ATTRIBUTE_WATER) +end +function c810000030.copytg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c810000030.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000030.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c810000030.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetCard(g) +end +function c810000030.copyop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and c:IsRelateToEffect(e) and c:IsFaceup() then + local code=tc:GetOriginalCode() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end +end \ No newline at end of file diff --git a/script/c810000031.lua b/script/c810000031.lua new file mode 100644 index 00000000..b62a6214 --- /dev/null +++ b/script/c810000031.lua @@ -0,0 +1,33 @@ +-- Aqua Jet (Anime) +-- scripted by: UnknownGuest +function c810000031.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000031.target) + e1:SetOperation(c810000031.activate) + c:RegisterEffect(e1) +end +function c810000031.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end +function c810000031.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c810000031.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000031.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c810000031.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c810000031.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c810000032.lua b/script/c810000032.lua new file mode 100644 index 00000000..8d658bd2 --- /dev/null +++ b/script/c810000032.lua @@ -0,0 +1,30 @@ +-- Depth Eruption +-- scripted by: UnknownGuest +function c810000032.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c810000032.condition) + e1:SetTarget(c810000032.target) + e1:SetOperation(c810000032.activate) + c:RegisterEffect(e1) +end +function c810000032.filter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsAttribute(ATTRIBUTE_WATER) +end +function c810000032.condition(e,c) + local tp=e:GetHandler():GetControler() + if c==nil then return true end + return Duel.IsExistingMatchingCard(c810000032.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c810000032.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c810000032.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c810000033.lua b/script/c810000033.lua new file mode 100644 index 00000000..11707936 --- /dev/null +++ b/script/c810000033.lua @@ -0,0 +1,37 @@ +-- Cards Descended from Creation of Ascension +-- scripted by: UnknownGuest +function c810000033.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c810000033.cost) + e1:SetTarget(c810000033.target) + e1:SetOperation(c810000033.activate) + c:RegisterEffect(e1) +end +function c810000033.costfilter(c) + return c:IsAbleToGraveAsCost() and c:IsType(TYPE_MONSTER) +end +function c810000033.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000033.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c810000033.costfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c810000033.filter(c) + return c:IsSetCard(0x95) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c810000033.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000033.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c810000033.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c810000033.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c810000034.lua b/script/c810000034.lua new file mode 100644 index 00000000..85c806d5 --- /dev/null +++ b/script/c810000034.lua @@ -0,0 +1,108 @@ +-- Multiply (Anime) +-- scripted by: UnknownGuest +function c810000034.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000034.target) + e1:SetOperation(c810000034.activate) + c:RegisterEffect(e1) +end +function c810000034.filter(c,e,tp) + if c:IsFacedown() then return false end + if c:IsCode(40640057) then + return Duel.IsPlayerCanSpecialSummonMonster(tp,40703223,0,0x4011,c:GetAttack(),c:GetDefense(),1,RACE_FIEND,ATTRIBUTE_DARK) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + elseif c:IsAttackBelow(500) then + return Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetOriginalCode(),0,c:GetType(),c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + else return false + end +end +function c810000034.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c810000034.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c810000034.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c810000034.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + if g:GetFirst():IsCode(40640057) then + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,ft,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ft,0,0) + else + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) + end +end +function c810000034.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + if tc:IsCode(40640057) then + if ft<=0 or not Duel.IsPlayerCanSpecialSummonMonster(tp,40703223,0,0x4011,tc:GetAttack(),tc:GetDefense(),1,RACE_FIEND,ATTRIBUTE_DARK) then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + for i=1,ft do + local token=Duel.CreateToken(tp,40703223) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetDefense()) + token:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UNRELEASABLE_SUM) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3,true) + end + Duel.SpecialSummonComplete() + else + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if ft<=1 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,tc:GetOriginalCode(),0,0x4011,tc:GetAttack(),tc:GetDefense(),tc:GetLevel(), + tc:GetRace(),tc:GetAttribute()) then return end + for i=1,2 do + local token=Duel.CreateToken(tp,tc:GetOriginalCode()) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,tc:GetPosition()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(tc:GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(tc:GetLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + token:RegisterEffect(e5) + local e6=Effect.CreateEffect(e:GetHandler()) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e6:SetReset(RESET_EVENT+0x1fe0000) + e6:SetCode(EFFECT_CHANGE_CODE) + e6:SetValue(tc:GetOriginalCode()) + token:RegisterEffect(e6) + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c810000035.lua b/script/c810000035.lua new file mode 100644 index 00000000..fdeaf532 --- /dev/null +++ b/script/c810000035.lua @@ -0,0 +1,112 @@ +-- One Hundred-Eyed Dragon (Anime) +-- scripted by: UnknownGuest +function c810000035.initial_effect(c) + --dark synchro summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c810000035.syncon) + e1:SetOperation(c810000035.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --copy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c810000035.operation) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(810000035,1)) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetCode(EVENT_DESTROY) + e3:SetCondition(c810000035.thcon) + e3:SetTarget(c810000035.thtg) + e3:SetOperation(c810000035.thop) + c:RegisterEffect(e3) +end +function c810000035.matfilter1(c,syncard) + return c:IsSetCard(0x301) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) +end +function c810000035.matfilter2(c,syncard) + return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) +end +function c810000035.synfilter1(c,lv,g1,g2) + local tlv=c:GetLevel() + if c:GetFlagEffect(100000147)==0 then + return g1:IsExists(c810000035.synfilter3,1,nil,lv+tlv) + else + return g1:IsExists(c810000035.synfilter3,1,nil,lv-tlv) + end +end +function c810000035.synfilter3(c,lv) + return c:GetLevel()==lv +end +function c810000035.syncon(e,c,tuner) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-1 then return false end + local g1=Duel.GetMatchingGroup(c810000035.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local g2=Duel.GetMatchingGroup(c810000035.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local lv=c:GetLevel() + return g2:IsExists(c810000035.synfilter1,1,nil,lv,g1,g2) +end +function c810000035.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) + local g=Group.CreateGroup() + local g1=Duel.GetMatchingGroup(c810000035.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local g2=Duel.GetMatchingGroup(c810000035.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + local lv=c:GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=g2:FilterSelect(tp,c810000035.synfilter1,1,1,nil,lv,g1,g2) + local mt1=m3:GetFirst() + g:AddCard(mt1) + local lv1=mt1:GetLevel() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if mt1:GetFlagEffect(100000147)==0 then + local t1=g1:FilterSelect(tp,c810000035.synfilter3,1,1,nil,lv+lv1) + g:Merge(t1) + else + local t1=g1:FilterSelect(tp,c810000035.synfilter3,1,1,nil,lv-lv1) + g:Merge(t1) + end + c:SetMaterial(g) + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(810000035,2)) + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(810000035,3)) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(810000035,4)) +end +function c810000035.filter(c) + return c:IsType(TYPE_MONSTER) +end +function c810000035.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local wg=Duel.GetMatchingGroup(c810000035.filter,c:GetControler(),LOCATION_GRAVE,0,nil) + local wbc=wg:GetFirst() + while wbc do + local code=wbc:GetOriginalCode() + if c:IsFaceup() and c:GetFlagEffect(code)==0 then + c:CopyEffect(code, RESET_EVENT+0x1fe0000+EVENT_CHAINING, 1) + c:RegisterFlagEffect(code,RESET_EVENT+0x1fe0000+EVENT_CHAINING,0,1) + end + wbc=wg:GetNext() + end +end +function c810000035.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c810000035.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c810000035.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end diff --git a/script/c810000036.lua b/script/c810000036.lua new file mode 100644 index 00000000..0723d9c8 --- /dev/null +++ b/script/c810000036.lua @@ -0,0 +1,45 @@ +-- Blaster Ogre +-- scripted by: UnknownGuest +function c810000036.initial_effect(c) + -- destroy & damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000036,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(2) + e1:SetTarget(c810000036.target) + e1:SetOperation(c810000036.operation) + c:RegisterEffect(e1) +end +function c810000036.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsDestructable() +end +function c810000036.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chck:IsControler(1-tp) and c810000036.filter(chkc) end + if chk==0 then return Duel.IsExistingMatchingCard(c810000036.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c810000036.filter,tp,0,LOCATION_MZONE,nil) + local tg=g:GetMaxGroup(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c810000036.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c810000036.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tg=g:GetMaxGroup(Card.GetAttack) + local dam=tg:GetFirst():GetAttack()/2 + if tg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=tg:Select(tp,1,1,nil) + Duel.HintSelection(sg) + local dam1=sg:GetFirst():GetAttack()/2 + if Duel.Destroy(sg,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,dam1,REASON_EFFECT) + end + else + if Duel.Destroy(tg,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,dam,REASON_EFFECT) + end + end + end +end diff --git a/script/c810000037.lua b/script/c810000037.lua new file mode 100644 index 00000000..33644356 --- /dev/null +++ b/script/c810000037.lua @@ -0,0 +1,34 @@ +-- Gatling Ogre +-- scripted by: UnknownGuest +function c810000037.initial_effect(c) + -- damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000037,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c810000037.damcost) + e1:SetTarget(c810000037.damtg) + e1:SetOperation(c810000037.damop) + c:RegisterEffect(e1) +end +function c810000037.cfilter(c) + return c:IsFacedown() and c:IsAbleToGraveAsCost() +end +function c810000037.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000037.cfilter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c810000037.cfilter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c810000037.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c810000037.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c810000038.lua b/script/c810000038.lua new file mode 100644 index 00000000..8758943a --- /dev/null +++ b/script/c810000038.lua @@ -0,0 +1,53 @@ +-- Full Armor Ogre +-- scripted by: UnknownGuest +function c810000038.initial_effect(c) + -- damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000038,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetTarget(c810000038.damtg) + e1:SetOperation(c810000038.damop) + c:RegisterEffect(e1) + -- special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000038,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c810000038.spcon) + e2:SetTarget(c810000038.sptg) + e2:SetOperation(c810000038.spop) + c:RegisterEffect(e2) +end +function c810000038.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c810000038.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c810000038.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c810000038.spfilter(c,e,tp) + return c:IsCode(511000014) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000038.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000038.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c810000038.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c810000038.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c810000039.lua b/script/c810000039.lua new file mode 100644 index 00000000..81288118 --- /dev/null +++ b/script/c810000039.lua @@ -0,0 +1,67 @@ +-- Big Cannon Ogre +-- scripted by: UnknownGuest +function c810000039.initial_effect(c) + c:EnableReviveLimit() + -- cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + -- special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c810000039.spcon) + e2:SetOperation(c810000039.spop) + c:RegisterEffect(e2) + -- double battle damage + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e3:SetOperation(c810000039.dop) + c:RegisterEffect(e3) + -- when destroyed, Special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(810000039,0)) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_DESTROYED) + e4:SetTarget(c810000039.sptg2) + e4:SetOperation(c810000039.spop2) + c:RegisterEffect(e4) +end +function c810000039.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.CheckReleaseGroup(c:GetControler(),Card.IsCode,1,nil,511000014) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_GRAVE,0,1,nil,810000038) +end +function c810000039.spop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectReleaseGroup(c:GetControler(),Card.IsCode,1,1,nil,511000014) + Duel.Release(g,REASON_COST) +end +function c810000039.dop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(1-tp,ev*2) +end +function c810000039.spfilter(c,e,tp) + return c:IsCode(810000038) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000039.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000039.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c810000039.spop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c810000039.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c810000040.lua b/script/c810000040.lua new file mode 100644 index 00000000..b78538c3 --- /dev/null +++ b/script/c810000040.lua @@ -0,0 +1,69 @@ +-- Rusted Blade - Rust Edge +-- scripted by: UnknownGuest +function c810000040.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(c810000040.target) + e1:SetOperation(c810000040.operation) + c:RegisterEffect(e1) + -- atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(800) + 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(c810000040.eqlimit) + c:RegisterEffect(e3) + -- damage + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c810000040.damcon) + e4:SetTarget(c810000040.damtg) + e4:SetOperation(c810000040.damop) + c:RegisterEffect(e4) +end +function c810000040.eqlimit(e,c) + return c:IsRace(RACE_WARRIOR) +end +function c810000040.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c810000040.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c810000040.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000040.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c810000040.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c810000040.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 c810000040.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ec=c:GetPreviousEquipTarget() + return c:IsReason(REASON_LOST_TARGET) and ec and ec:IsReason(REASON_DESTROY) +end +function c810000040.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) +end +function c810000040.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c810000042.lua b/script/c810000042.lua new file mode 100644 index 00000000..e1e69b89 --- /dev/null +++ b/script/c810000042.lua @@ -0,0 +1,110 @@ +-- Amplifier (Anime) +-- scripted by: UnknownGuest +function c810000042.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+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetTarget(c810000042.target) + e1:SetOperation(c810000042.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(c810000042.eqlimit) + c:RegisterEffect(e2) + -- immune + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e3:SetTarget(c810000042.etarget) + e3:SetValue(c810000042.efilter) + c:RegisterEffect(e3) + -- leave + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c810000042.desop) + c:RegisterEffect(e4) + -- cannot disable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_DISABLE) + c:RegisterEffect(e5) + -- Atk up 500 + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_EQUIP) + e6:SetCode(EFFECT_UPDATE_ATTACK) + e6:SetValue(500) + c:RegisterEffect(e6) + -- atk up 300 + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c810000042.atkcon) + e4:SetOperation(c810000042.atkop) + c:RegisterEffect(e4) +end +function c810000042.eqlimit(e,c) + return c:IsCode(77585513) +end +function c810000042.filter(c) + return c:IsFaceup() and c:IsCode(77585513) +end +function c810000042.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c810000042.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000042.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c810000042.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c810000042.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 c810000042.etarget(e,c) + local ec=e:GetHandler():GetEquipTarget() + return c:IsType(TYPE_TRAP) and ec and c:GetControler()==ec:GetControler() +end +function c810000042.efilter(e,re) + return re:GetHandler()==e:GetHandler():GetEquipTarget() +end +function c810000042.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c810000042.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c810000042.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(810000042)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + c:RegisterFlagEffect(810000042,RESET_EVENT+0x1fe0000,0,0) + e:SetLabelObject(e1) + e:SetLabel(2) + else + local pe=e:GetLabelObject() + local ct=e:GetLabel() + e:SetLabel(ct+1) + pe:SetValue(ct*300) + end +end diff --git a/script/c810000044.lua b/script/c810000044.lua new file mode 100644 index 00000000..00b0e135 --- /dev/null +++ b/script/c810000044.lua @@ -0,0 +1,55 @@ +-- Soul Guide +-- scripted by: UnknownGuest +--fixed by MLD +function c810000044.initial_effect(c) + -- recover + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_RECOVER+CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c810000044.cost) + e1:SetTarget(c810000044.target) + e1:SetOperation(c810000044.activate) + c:RegisterEffect(e1) +end +function c810000044.filter(c,tp) + return Duel.IsExistingMatchingCard(c810000044.filter2,tp,LOCATION_DECK,0,1,nil,c:GetCode()) +end +function c810000044.filter2(c,code) + return c:IsType(TYPE_MONSTER) and c:IsCode(code) and c:IsAbleToHand() +end +function c810000044.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + if chk==0 then return true end +end +function c810000044.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=1 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c810000044.filter,1,nil,tp) end + local tc=Duel.SelectReleaseGroup(tp,c810000044.filter,1,1,nil,tp):GetFirst() + local code=tc:GetCode() + Duel.Release(tc,REASON_COST) + Duel.SetTargetParam(code) + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c810000044.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local code=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + local rec=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(63193879,0)) + local op=Duel.SelectOption(tp,aux.Stringid(70780151,0),aux.Stringid(810000044,2)) + if op==0 then rec=tc:GetTextAttack() + else rec=tc:GetTextDefense() end + if rec<0 then rec=0 end + Duel.Recover(tp,rec,REASON_EFFECT) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c810000044.filter2,tp,LOCATION_DECK,0,1,1,nil,code) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c810000045.lua b/script/c810000045.lua new file mode 100644 index 00000000..3b2882c1 --- /dev/null +++ b/script/c810000045.lua @@ -0,0 +1,20 @@ +-- Synchron Resonator +-- scripted by: UnknownGuest +function c810000045.initial_effect(c) + -- special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c810000045.spcon) + c:RegisterEffect(e1) +end +function c810000045.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_SYNCHRO) +end +function c810000045.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000045.cfilter,c:GetControler(),0,LOCATION_MZONE,1,nil) +end diff --git a/script/c810000046.lua b/script/c810000046.lua new file mode 100644 index 00000000..414484ed --- /dev/null +++ b/script/c810000046.lua @@ -0,0 +1,66 @@ +-- Dimension Switch +-- scripted by: UnknownGuest +function c810000046.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c810000046.target) + e1:SetOperation(c810000046.operation) + c:RegisterEffect(e1) + -- special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000046,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + --e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_SZONE) + e1:SetCost(c810000046.spcost) + e1:SetCondition(c810000046.spcon) + e1:SetTarget(c810000046.sptg) + e1:SetOperation(c810000046.spop) + c:RegisterEffect(e1) +end +function c810000046.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:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c810000046.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 Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)>0 then + c:SetCardTarget(tc) + end +end +function c810000046.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c810000046.spcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc then + e:SetLabelObject(tc) + return true + end + return false +end +function c810000046.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=e:GetLabelObject() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and tc and tc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tc,1,0,0) +end +function c810000046.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,tc:GetPreviousPosition()) + end +end diff --git a/script/c810000049.lua b/script/c810000049.lua new file mode 100644 index 00000000..31e93477 --- /dev/null +++ b/script/c810000049.lua @@ -0,0 +1,54 @@ +-- Gear Changer +-- scripted by: UnknownGuest +function c810000049.initial_effect(c) + -- special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c810000049.spcon) + c:RegisterEffect(e1) + -- coin + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000049,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c810000049.lvtg) + e2:SetOperation(c810000049.lvop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) +end +function c810000049.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c810000049.filter(c) + return c:GetLevel()>0 and c:IsFaceup() +end +function c810000049.lvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and c810000049.filter(chkc) and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(c810000049.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c810000049.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c810000049.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and tc and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(tc:GetLevel()) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c810000050.lua b/script/c810000050.lua new file mode 100644 index 00000000..36406ed0 --- /dev/null +++ b/script/c810000050.lua @@ -0,0 +1,28 @@ +-- Card Breaker (Anime) +-- scripted by: UnknownGuest +function c810000050.initial_effect(c) + c:EnableReviveLimit() + -- spsummon proc + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c810000050.spcon) + e1:SetOperation(c810000050.spop) + c:RegisterEffect(e1) +end +function c810000050.spfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable() +end +function c810000050.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000050.spfilter,c:GetControler(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) +end +function c810000050.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c810000050.spfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.Destroy(g,REASON_COST) +end + diff --git a/script/c810000051.lua b/script/c810000051.lua new file mode 100644 index 00000000..5f57c034 --- /dev/null +++ b/script/c810000051.lua @@ -0,0 +1,30 @@ +-- Blackboost (Anime) +-- scripted by: UnknownGuest +function c810000051.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c810000051.condition) + e1:SetTarget(c810000051.target) + e1:SetOperation(c810000051.activate) + c:RegisterEffect(e1) +end +function c810000051.filter(c) + return c:IsFaceup() and c:IsSetCard(0x33) +end +function c810000051.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c810000051.filter,tp,LOCATION_MZONE,0,2,nil) +end +function c810000051.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c810000051.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c810000052.lua b/script/c810000052.lua new file mode 100644 index 00000000..f69fb967 --- /dev/null +++ b/script/c810000052.lua @@ -0,0 +1,33 @@ +-- Black Feather Beacon (Anime) +-- scripted by: UnknownGuest +function c810000052.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_DAMAGE) + e1:SetCondition(c810000052.condition) + e1:SetTarget(c810000052.target) + e1:SetOperation(c810000052.activate) + c:RegisterEffect(e1) +end +function c810000052.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c810000052.filter(c,e,tp) + return c:IsSetCard(0x33) and c:GetLevel()<=4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000052.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000052.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c810000052.activate(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,c810000052.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c810000054.lua b/script/c810000054.lua new file mode 100644 index 00000000..c92cab97 --- /dev/null +++ b/script/c810000054.lua @@ -0,0 +1,69 @@ +-- Black Wing +-- scripted by: UnknownGuest +function c810000054.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCost(c810000054.cost) + e1:SetCondition(c810000054.condition) + e1:SetOperation(c810000054.activate) + c:RegisterEffect(e1) + -- destroy + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetDescription(aux.Stringid(810000054,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c810000054.descost) + e2:SetTarget(c810000054.destg) + e2:SetOperation(c810000054.desop) + c:RegisterEffect(e2) +end +function c810000054.rfilter(c) + return c:IsSetCard(0x33) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c810000054.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000054.rfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c810000054.rfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c810000054.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and a:GetAttack()>=2000 +end +function c810000054.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end +function c810000054.costfilter(c) + return c:IsSetCard(0x33) and c:IsAbleToRemoveAsCost() +end +function c810000054.descost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c810000054.costfilter,tp,LOCATION_GRAVE,0,1,nil) + and c:IsAbleToRemoveAsCost() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c810000054.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + g:AddCard(c) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c810000054.desfilter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c810000054.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c810000054.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000054.desfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c810000054.desfilter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c810000054.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,tc:GetAttack(),REASON_EFFECT) + end +end diff --git a/script/c810000055.lua b/script/c810000055.lua new file mode 100644 index 00000000..cc134829 --- /dev/null +++ b/script/c810000055.lua @@ -0,0 +1,109 @@ +-- Null and Void (Anime) +-- scripted by: UnknownGuest +function c810000055.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000055,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DRAW) + e1:SetCondition(c810000055.drcon) + e1:SetTarget(c810000055.drtg) + e1:SetOperation(c810000055.drop) + c:RegisterEffect(e1) + -- Activate(summon) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000055,1)) + e2:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_ACTIVATE) + e2:SetCode(EVENT_SUMMON) + e2:SetCondition(c810000055.sumcon) + e2:SetTarget(c810000055.sumtg) + e2:SetOperation(c810000055.sumop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON) + c:RegisterEffect(e3) + -- Activate (MSET and SSET) + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOGRAVE) + e4:SetType(EFFECT_TYPE_ACTIVATE) + e4:SetCode(EVENT_MSET) + e4:SetTarget(c810000055.settg) + e4:SetOperation(c810000055.setop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_SSET) + c:RegisterEffect(e5) + -- Activate(effect) + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(810000055,2)) + e5:SetCategory(CATEGORY_NEGATE+CATEGORY_TOGRAVE) + e5:SetType(EFFECT_TYPE_ACTIVATE) + e5:SetCode(EVENT_CHAINING) + e5:SetCondition(c810000055.accon) + e5:SetTarget(c810000055.actg) + e5:SetOperation(c810000055.acop) + c:RegisterEffect(e5) +end +function c810000055.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c810000055.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1) +end +function c810000055.drop(e,tp,eg,ep,ev,re,r,rp) + local sg=eg:Filter(Card.IsRelateToEffect,nil,e):Filter(Card.IsControler,nil,1-tp) + if sg:GetCount()>0 then + Duel.SendtoGrave(sg,REASON_EFFECT) + end +end +function c810000055.sumcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and Duel.GetCurrentChain()==0 +end +function c810000055.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,eg,eg:GetCount(),0,0) +end +function c810000055.sumop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.SendtoGrave(eg,REASON_EFFECT) +end +function c810000055.setfilter(c,tp) + return c:IsFacedown() and c:GetReasonPlayer()==tp and c:IsPreviousLocation(LOCATION_HAND) +end +function c810000055.settg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local sg=eg:Filter(c810000055.setfilter,nil,1-tp) + return sg:GetCount()==1 + end + local sg1=eg:Filter(c810000055.setfilter,nil,1-tp) + Duel.SetTargetCard(sg1) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg1,sg1:GetCount(),0,0) +end +function c810000055.setop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsRelateToEffect,nil,e):Filter(Card.IsControler,nil,1-tp) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c810000055.accon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and (re:GetHandler():IsPreviousLocation(LOCATION_HAND) or Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)==LOCATION_HAND) + and Duel.IsChainNegatable(ev) +end +function c810000055.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsAbleToGrave() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,eg,1,0,0) + end +end +function c810000055.acop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.SendtoGrave(eg,REASON_EFFECT) + end +end diff --git a/script/c810000056.lua b/script/c810000056.lua new file mode 100644 index 00000000..ce8b76a2 --- /dev/null +++ b/script/c810000056.lua @@ -0,0 +1,34 @@ +-- Cards for Black Feathers (Anime) +-- scripted by: UnknownGuest +function c810000056.initial_effect(c) + -- draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000056,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_DRAW) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCost(c810000056.cost) + e1:SetTarget(c810000056.target) + e1:SetOperation(c810000056.operation) + c:RegisterEffect(e1) +end +function c810000056.cfilter(c) + return c:IsSetCard(0x33) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c810000056.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000056.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c810000056.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c810000056.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c810000056.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c810000057.lua b/script/c810000057.lua new file mode 100644 index 00000000..085156cc --- /dev/null +++ b/script/c810000057.lua @@ -0,0 +1,60 @@ +--星屑の残光 +-- scripted by: UnknownGuest +function c810000057.initial_effect(c) + -- Special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000057,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c810000057.condition) + e1:SetTarget(c810000057.target) + e1:SetOperation(c810000057.activate) + c:RegisterEffect(e1) + if not c810000057.global_check then + c810000057.global_check=true + c810000057[0]=true + c810000057[1]=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_CHAINING) + ge1:SetOperation(c810000057.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c810000057.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c810000057.filter(c,e,tp) + return c:IsCode(44508094) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c810000057.condition(e,tp,eg,ep,ev,re,r,rp,chk) + return c810000057[tp] +end +function c810000057.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c810000057.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c810000057.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c810000057.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c810000057.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,true,true,POS_FACEUP) + end +end +function c810000057.checkop(e,tp,eg,ep,ev,re,r,rp) + if re:GetHandler():IsCode(44508094) then + c810000057[re:GetHandler():GetPreviousControler()]=true + end +end +function c810000057.clear(e,tp,eg,ep,ev,re,r,rp) + c810000057[0]=false + c810000057[1]=false +end diff --git a/script/c810000058.lua b/script/c810000058.lua new file mode 100644 index 00000000..4a5f2bab --- /dev/null +++ b/script/c810000058.lua @@ -0,0 +1,43 @@ +-- Offside Trap +-- scripted by: UnknownGuest +function c810000058.initial_effect(c) + -- Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANOUNCE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c810000058.condition) + e1:SetTarget(c810000058.target) + e1:SetOperation(c810000058.activate) + c:RegisterEffect(e1) +end +function c810000058.filter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp and c:IsReason(REASON_BATTLE) + and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000058.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_SZONE,0)==1 +end +function c810000058.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) and c810000058.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and eg:IsExists(c810000058.filter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=eg:FilterSelect(tp,c810000058.filter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c810000058.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,0) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + Duel.BreakEffect() + local turnp=Duel.GetTurnPlayer() + Duel.SkipPhase(turnp,PHASE_MAIN1,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(turnp,PHASE_BATTLE,RESET_PHASE+PHASE_END,1,1) + Duel.SkipPhase(turnp,PHASE_MAIN2,RESET_PHASE+PHASE_END,1) + end +end diff --git a/script/c810000059.lua b/script/c810000059.lua new file mode 100644 index 00000000..fad39e7e --- /dev/null +++ b/script/c810000059.lua @@ -0,0 +1,20 @@ +-- Defending Sweeper +-- scripted by: UnknownGuest +function c810000059.initial_effect(c) + -- Increase Level + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c810000059.condition) + c:RegisterEffect(e1) +end +function c810000059.filter(c) + return c:IsFaceup() and c:IsCode(450000110) +end +function c810000059.condition(e) + return Duel.IsExistingMatchingCard(c810000059.filter,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.GetEnvironment()==450000110 +end diff --git a/script/c810000060.lua b/script/c810000060.lua new file mode 100644 index 00000000..3541152e --- /dev/null +++ b/script/c810000060.lua @@ -0,0 +1,66 @@ +-- Perfect Pass +-- scripted by: UnknownGuest +function c810000060.initial_effect(c) + -- target monster + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000060,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000060.target) + e1:SetOperation(c810000060.operation) + c:RegisterEffect(e1) +end +function c810000060.filter(c) + return c:IsFaceup() +end +function c810000060.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c810000060.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000060.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c810000060.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c810000060.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(810000060,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLED) + e1:SetCondition(c810000060.atkcon) + e1:SetOperation(c810000060.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c810000060.atkcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local a=Duel.GetAttacker() + if a==c then a=Duel.GetAttackTarget() end + e:SetLabelObject(a) + return a and a:IsType(TYPE_EFFECT) and a:IsRelateToBattle() +end +function c810000060.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:IsFacedown() or not tc:IsRelateToBattle() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local tc1=tc:GetDefense() + local tc2=e:GetHandler() + if tc1>tc2:GetAttack() then + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CHANGE_ATTACK) + e3:SetValue(tc2:GetAttack()*2) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc2:RegisterEffect(e1) + end +end diff --git a/script/c810000061.lua b/script/c810000061.lua new file mode 100644 index 00000000..b64ea74a --- /dev/null +++ b/script/c810000061.lua @@ -0,0 +1,31 @@ +-- Eye Contact +-- scripted by: UnknownGuest +function c810000061.initial_effect(c) + -- add to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000061,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000061.thtg) + e1:SetOperation(c810000061.thop) + c:RegisterEffect(e1) +end +function c810000061.tgfilter(c) + return c:IsCode(810000058) and c:IsAbleToHand() +end +function c810000061.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:GetControler()==tp and c810000061.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000061.tgfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c810000061.tgfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c810000061.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c810000062.lua b/script/c810000062.lua new file mode 100644 index 00000000..e206e1db --- /dev/null +++ b/script/c810000062.lua @@ -0,0 +1,26 @@ +-- Narukami Waterfall +-- scripted by: UnknownGuest +function c810000062.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_TO_GRAVE) + e2:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e2:SetTarget(c810000062.filter) + --e2:SetValue(1) + c:RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_DISCARD_HAND) + e3:SetTargetRange(1,1) + e3:SetTarget(c810000062.filter) + --e3:SetValue(1) + c:RegisterEffect(e3,tp) +end +function c810000062.filter(e,c) + return c:IsType(TYPE_MONSTER) +end diff --git a/script/c810000063.lua b/script/c810000063.lua new file mode 100644 index 00000000..990286ca --- /dev/null +++ b/script/c810000063.lua @@ -0,0 +1,24 @@ +-- Grave Arm +function c810000063.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000063.target) + e1:SetOperation(c810000063.operation) + c:RegisterEffect(e1) +end +function c810000063.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c810000063.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,Card.IsDestructable,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c810000064.lua b/script/c810000064.lua new file mode 100644 index 00000000..3dd34212 --- /dev/null +++ b/script/c810000064.lua @@ -0,0 +1,81 @@ +--Synchronic Ability +--scripted by: UnknownGuest +function c810000064.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(c810000064.target) + e1:SetOperation(c810000064.operation) + c:RegisterEffect(e1) + -- gain effects + --local e2=Effect.CreateEffect(c) + --e2:SetType(EFFECT_TYPE_EQUIP+EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + --e2:SetType(EFFECT_TYPE_EQUIP) + --e2:SetCode(EVENT_ADJUST) + --e2:SetRange(LOCATION_SZONE) + --e2:SetOperation(c810000064.gainop) + --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 c810000064.filter(c) + return c:IsFaceup() +end +function c810000064.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and c810000064.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000064.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c810000064.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c810000064.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) + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c810000064.eqop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c810000064.gainop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c:GetEquipTarget() + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ADJUST) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c810000064.eqop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) +end +function c810000064.eqfilter(c,race) + return c:IsType(TYPE_MONSTER) and c:IsRace(race) +end +function c810000064.eqop(e,tp,eg,ep,ev,re,r,rp) + --local c=e:GetHandler():GetEquipTarget() + local c=e:GetHandler() + local eqt=c:GetRace() + local wg=Duel.GetMatchingGroup(c810000064.eqfilter,c:GetControler(),LOCATION_ONFIELD,LOCATION_ONFIELD,nil,eqt) + local wbc=wg:GetFirst() + while wbc do + local code=wbc:GetOriginalCode() + if c:IsFaceup() and c:GetFlagEffect(code)==0 then + c:CopyEffect(code,RESET_EVENT+0x1fe0000+EVENT_CHAINING, 1) + c:RegisterFlagEffect(code,RESET_EVENT+0x1fe0000+EVENT_CHAINING,0,1) + end + wbc=wg:GetNext() + end +end diff --git a/script/c810000069.lua b/script/c810000069.lua new file mode 100644 index 00000000..75fb379f --- /dev/null +++ b/script/c810000069.lua @@ -0,0 +1,52 @@ +--Laminate Armor +--scripted by: UnknownGuest +function c810000069.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(c810000069.target) + e1:SetOperation(c810000069.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) + --equip effect + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(1000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e4:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e4:SetValue(c810000069.repval) + e4:SetOperation(c810000069.repop) + c:RegisterEffect(e4) +end +function c810000069.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 c810000069.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 c810000069.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end +function c810000069.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c810000070.lua b/script/c810000070.lua new file mode 100644 index 00000000..97607042 --- /dev/null +++ b/script/c810000070.lua @@ -0,0 +1,44 @@ +--Neon Laser Blaster +--scripted by: UnknownGuest +function c810000070.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(c810000070.target) + e1:SetOperation(c810000070.operation) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + c:RegisterEffect(e2) + --Pierce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e3) + --Equip limit + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EQUIP_LIMIT) + e4:SetValue(1) + c:RegisterEffect(e4) +end +function c810000070.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 c810000070.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 diff --git a/script/c810000071.lua b/script/c810000071.lua new file mode 100644 index 00000000..7d947652 --- /dev/null +++ b/script/c810000071.lua @@ -0,0 +1,34 @@ +--Owner's Seal (Anime) +--scripted by: UnknownGuest +function c810000071.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000071.target) + e1:SetOperation(c810000071.activate) + c:RegisterEffect(e1) +end +function c810000071.filter(c) + return c:GetControler()~=c:GetOwner() +end +function c810000071.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000071.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end +end +function c810000071.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) + local tc=g:GetFirst() + while tc do + if not tc:IsImmuneToEffect(e) then + tc:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetValue(tc:GetOwner()) + e1:SetReset(RESET_EVENT+0xec0000) + tc:RegisterEffect(e1) + end + tc=g:GetNext() + end +end diff --git a/script/c810000072.lua b/script/c810000072.lua new file mode 100644 index 00000000..4234d082 --- /dev/null +++ b/script/c810000072.lua @@ -0,0 +1,30 @@ +--Power Connection +--scripted by: UnknownGuest +function c810000072.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c810000072.activate) + c:RegisterEffect(e1) +end +function c810000072.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(c810000072.filter) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c810000072.vfilter(c,race) + return c:IsFaceup() and c:IsRace(race) +end +function c810000072.filter(e,c) + return Duel.GetMatchingGroupCount(c810000072.vfilter,0,LOCATION_MZONE,LOCATION_MZONE,c,c:GetRace())*500 +end diff --git a/script/c810000073.lua b/script/c810000073.lua new file mode 100644 index 00000000..0494f5ce --- /dev/null +++ b/script/c810000073.lua @@ -0,0 +1,34 @@ +--Aqua Actress - Arowana +--scripted by: UnknownGuest +function c810000073.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000073,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetCondition(c810000073.con) + e1:SetTarget(c810000073.tg) + e1:SetOperation(c810000073.op) + c:RegisterEffect(e1) +end +function c810000073.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c810000073.filter(c) + return c:IsSetCard(0x325) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c810000073.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000073.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,0,1,0,LOCATION_DECK) +end +function c810000073.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c810000073.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c810000074.lua b/script/c810000074.lua new file mode 100644 index 00000000..04cceb9c --- /dev/null +++ b/script/c810000074.lua @@ -0,0 +1,31 @@ +--Aqua Actress - Guppy +--scripted by: UnknownGuest +function c810000074.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000074,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c810000074.sptg) + e1:SetOperation(c810000074.spop) + c:RegisterEffect(e1) +end +function c810000074.filter(c,e,tp) + return c:IsSetCard(0x325) and c:IsLevelBelow(3) and c:IsType(TYPE_MONSTER) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000074.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000074.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c810000074.spop(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,c810000074.filter,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 diff --git a/script/c810000075.lua b/script/c810000075.lua new file mode 100644 index 00000000..2c4f1c5e --- /dev/null +++ b/script/c810000075.lua @@ -0,0 +1,34 @@ +--Aqua Actress - Tetra +--scripted by: UnknownGuest +function c810000075.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000075,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetCondition(c810000075.con) + e1:SetTarget(c810000075.tg) + e1:SetOperation(c810000075.op) + c:RegisterEffect(e1) +end +function c810000075.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c810000075.filter(c) + return c:IsCode(810000075) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c810000075.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000075.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,0,1,0,LOCATION_DECK) +end +function c810000075.op(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c810000075.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c810000076.lua b/script/c810000076.lua new file mode 100644 index 00000000..64338609 --- /dev/null +++ b/script/c810000076.lua @@ -0,0 +1,57 @@ +--Aqua Story - Urashima +--scripted by: UnknownGuest +function c810000076.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c810000076.cost) + e1:SetTarget(c810000076.target) + e1:SetOperation(c810000076.operation) + c:RegisterEffect(e1) +end +function c810000076.costfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x325) and c:GetLevel()<=4 and c:IsAbleToRemoveAsCost() +end +function c810000076.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000076.costfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c810000076.costfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c810000076.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c810000076.operation(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_SET_ATTACK_FINAL) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c810000076.atkop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c810000076.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(100) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c810000077.lua b/script/c810000077.lua new file mode 100644 index 00000000..c0578c4d --- /dev/null +++ b/script/c810000077.lua @@ -0,0 +1,32 @@ +--Aquarium Lighting +--scripted by: UnknownGuest +function c810000077.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + 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(c810000077.atkup) + c:RegisterEffect(e2) +end +function c810000077.atkup(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return end + c810000077.adup(a,e:GetHandler()) + c810000077.adup(d,e:GetHandler()) +end +function c810000077.adup(c,oc) + if not c:IsSetCard(0x325) then return end + local e1=Effect.CreateEffect(oc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(c:GetAttack()*2) + c:RegisterEffect(e1) +end diff --git a/script/c810000078.lua b/script/c810000078.lua new file mode 100644 index 00000000..9df2605c --- /dev/null +++ b/script/c810000078.lua @@ -0,0 +1,21 @@ +--Aquarium Set +--scripted by: UnknownGuest +function c810000078.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --boost + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c810000078.filter) + e2:SetValue(600) + c:RegisterEffect(e2) +end +function c810000078.filter(e,c) + return c:IsSetCard(0x1ca) +end diff --git a/script/c810000079.lua b/script/c810000079.lua new file mode 100644 index 00000000..562a91d7 --- /dev/null +++ b/script/c810000079.lua @@ -0,0 +1,25 @@ +--Aquarium Stage +--scripted by: UnknownGuest +function c810000079.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x325)) + e2:SetValue(c810000079.indval) + c:RegisterEffect(e2) +end +function c810000079.indval(e,c) + if not c:IsAttribute(ATTRIBUTE_WATER) then + return 1 + else + return 0 + end +end diff --git a/script/c810000080.lua b/script/c810000080.lua new file mode 100644 index 00000000..da59610e --- /dev/null +++ b/script/c810000080.lua @@ -0,0 +1,79 @@ +--Persona Shutter Layer 1 +function c810000080.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000080.target) + e1:SetOperation(c810000080.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_ONFIELD) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c810000080.descon) + e2:SetOperation(c810000080.desop) + c:RegisterEffect(e2) +end +function c810000080.filter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsFaceup() +end +function c810000080.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:GetControler()==1-tp end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c810000080.filter,tp,0,LOCATION_MZONE,1,nil,e,0,tp,false,false) end + local g=Duel.SelectTarget(tp,c810000080.filter,tp,0,LOCATION_MZONE,1,1,nil,e,0,tp,false,false) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c810000080.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc or not tc:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + c:AddMonsterAttribute(TYPE_NORMAL+TYPE_SPELL+TYPE_TRAP) + Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(tc:GetCode()) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(tc:GetBaseDefense()) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_SET_BASE_ATTACK) + e3:SetValue(tc:GetBaseAttack()) + c:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(tc:GetRace()) + c:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(tc:GetAttribute()) + c:RegisterEffect(e5) + local e6=e1:Clone() + e6:SetCode(EFFECT_REMOVE_TYPE) + e6:SetValue(TYPE_TRAP) + c:RegisterEffect(e6) + local e7=e1:Clone() + e7:SetCode(EFFECT_CHANGE_LEVEL) + e7:SetValue(tc:GetLevel()) + c:RegisterEffect(e7) + c:SetCardTarget(tc) +end +function c810000080.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c810000080.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c810000081.lua b/script/c810000081.lua new file mode 100644 index 00000000..48c93319 --- /dev/null +++ b/script/c810000081.lua @@ -0,0 +1,69 @@ +--Number 3: Cicada King +--scripted by: UnknownGuest +function c810000081.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,3,3) + c:EnableReviveLimit() + --disable + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000081,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c810000081.cost) + e1:SetCondition(c810000081.discon) + e1:SetTarget(c810000081.distg) + e1:SetOperation(c810000081.disop) + c:RegisterEffect(e1) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c810000081.indes) + c:RegisterEffect(e2) +end +c810000081.xyz_number=3 +function c810000081.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c810000081.discon(e,tp,eg,ep,ev,re,r,rp) + local tgp,loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_CONTROLER,CHAININFO_TRIGGERING_LOCATION) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainDisablable(ev) + and tgp~=tp and re:IsActiveType(TYPE_MONSTER) and loc==LOCATION_MZONE +end +function c810000081.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) +end +function c810000081.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=re:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or Duel.GetCurrentChain()~=ev+1 or c:IsStatus(STATUS_BATTLE_DESTROYED) then + return + end + if Duel.NegateEffect(ev) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(500) + c:RegisterEffect(e3) + end +end +function c810000081.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c810000082.lua b/script/c810000082.lua new file mode 100644 index 00000000..5e494542 --- /dev/null +++ b/script/c810000082.lua @@ -0,0 +1,28 @@ +--Giant Flood +--scripted by: UnknownGuest +function c810000082.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c810000082.condition) + e1:SetTarget(c810000082.target) + e1:SetOperation(c810000082.activate) + c:RegisterEffect(e1) +end +function c810000082.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c810000082.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c810000082.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000082.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,LOCATION_ONFIELD+LOCATION_HAND,1,nil) end + local sg=Duel.GetMatchingGroup(c810000082.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,LOCATION_ONFIELD+LOCATION_HAND,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,sg,sg:GetCount(),0,0) +end +function c810000082.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c810000082.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,LOCATION_ONFIELD+LOCATION_HAND,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) +end diff --git a/script/c810000083.lua b/script/c810000083.lua new file mode 100644 index 00000000..1fa81f35 --- /dev/null +++ b/script/c810000083.lua @@ -0,0 +1,50 @@ +--Dream Cicada +--scripted by: UnknownGuest +function c810000083.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c810000083.spcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --pos change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000083,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c810000083.poscon) + e2:SetTarget(c810000083.postg) + e2:SetOperation(c810000083.posop) + c:RegisterEffect(e2) +end +function c810000083.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsRace(RACE_INSECT) +end +function c810000083.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 and + Duel.IsExistingMatchingCard(c810000083.filter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c810000083.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c810000083.posfilter(c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:IsRace(RACE_INSECT) +end +function c810000083.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c810000083.posfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000083.posfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUPATTACK) + local g=Duel.SelectTarget(tp,c810000083.posfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c810000083.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c810000084.lua b/script/c810000084.lua new file mode 100644 index 00000000..65e60f66 --- /dev/null +++ b/script/c810000084.lua @@ -0,0 +1,86 @@ +--Cicada Illusion +--scripted by: UnknownGuest +function c810000084.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCondition(c810000084.condition) + e1:SetTarget(c810000084.target) + e1:SetOperation(c810000084.operation) + c:RegisterEffect(e1) + --Destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c810000084.descon) + e2:SetOperation(c810000084.desop) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetDescription(aux.Stringid(810000084,0)) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_CHANGE_POS) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c810000084.con) + e3:SetOperation(c810000084.op) + c:RegisterEffect(e3) +end +function c810000084.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c810000084.filter(c) + return c:IsPosition(POS_FACEUP_DEFENSE) and c:IsRace(RACE_INSECT) +end +function c810000084.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c810000084.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000084.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c810000084.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c810000084.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_SZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetTarget(c810000084.indtg) + e1:SetValue(1) + c:RegisterEffect(e1) + end +end +function c810000084.indtg(e,c) + return e:GetHandler():GetFirstCardTarget()==c +end +function c810000084.con(e,tp,eg,ep,ev,re,r,rp) + local tg=e:GetHandler():GetFirstCardTarget() + return tg and eg:IsContains(tg) +end +function c810000084.op(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler():GetFirstCardTarget() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(c:GetDefense()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c810000084.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsStatus(STATUS_DESTROY_CONFIRMED) then return false end + local tc=c:GetFirstCardTarget() + return tc and eg:IsContains(tc) +end +function c810000084.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c810000085.lua b/script/c810000085.lua new file mode 100644 index 00000000..31ad29e1 --- /dev/null +++ b/script/c810000085.lua @@ -0,0 +1,39 @@ +--Release Lease +--scripted by: UnknownGuest +function c810000085.initial_effect(c) + -- add + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c810000085.cost) + e1:SetCondition(c810000085.condition) + e1:SetTarget(c810000085.target) + e1:SetOperation(c810000085.activate) + c:RegisterEffect(e1) +end +function c810000085.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==1 +end +function c810000085.filter(c) + return c:GetLevel()==3 and c:IsAbleToHand() +end +function c810000085.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,nil,1,nil) + and Duel.IsExistingMatchingCard(c810000085.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + local tc=sg:GetFirst() + Duel.Release(tc,REASON_COST) +end +function c810000085.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000085.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c810000085.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c810000085.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c810000086.lua b/script/c810000086.lua new file mode 100644 index 00000000..28ebed76 --- /dev/null +++ b/script/c810000086.lua @@ -0,0 +1,33 @@ +--Lightning Board +--scripted by: UnknownGuest +function c810000086.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000086,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c810000086.cost) + e1:SetTarget(c810000086.target) + e1:SetOperation(c810000086.operation) + c:RegisterEffect(e1) +end +function c810000086.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c810000086.filter(c) + return c:GetLevel()>=6 and c:IsAbleToHand() +end +function c810000086.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000086.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c810000086.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c810000086.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c810000087.lua b/script/c810000087.lua new file mode 100644 index 00000000..2479fdc7 --- /dev/null +++ b/script/c810000087.lua @@ -0,0 +1,46 @@ +--Tribute Trade +--scripted by: UnknownGuest +--fixed by MLD +function c810000087.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c810000087.cost) + e1:SetTarget(c810000087.target) + e1:SetOperation(c810000087.activate) + c:RegisterEffect(e1) +end +function c810000087.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(100) + return true +end +function c810000087.cfilter(c,tp) + local lv=c:GetLevel() + return lv>0 and Duel.IsExistingMatchingCard(c810000087.spfilter,tp,LOCATION_DECK,0,1,nil,lv+1) +end +function c810000087.filter(c,lv) + return c:GetLevel()==lv and c:IsAbleToHand() +end +function c810000087.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=100 then return false end + e:SetLabel(0) + return Duel.CheckReleaseGroup(tp,c810000087.cfilter,1,nil,tp) + end + local rg=Duel.SelectReleaseGroup(tp,c810000087.cfilter,1,1,nil,tp) + local lv=rg:GetFirst():GetLevel() + Duel.Release(rg,REASON_COST) + Duel.SetTargetParam(lv) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c810000087.activate(e,tp,eg,ep,ev,re,r,rp) + local lv=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c810000087.filter,tp,LOCATION_DECK,0,1,1,nil,lv+1) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c810000088.lua b/script/c810000088.lua new file mode 100644 index 00000000..0866c121 --- /dev/null +++ b/script/c810000088.lua @@ -0,0 +1,24 @@ +--Pillager +--scripted by: UnknownGuest +function c810000088.initial_effect(c) + --get card + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000088,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c810000088.operation) + c:RegisterEffect(e1) +end +function c810000088.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + if g:GetCount()>0 then + Duel.ConfirmCards(tp,g) + local tg=g:Filter(Card.IsType,nil,TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP) + if tg:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=tg:Select(tp,1,1,nil) + Duel.SendtoHand(sg,tp,REASON_EFFECT) + end + Duel.ShuffleHand(1-tp) + end +end diff --git a/script/c810000089.lua b/script/c810000089.lua new file mode 100644 index 00000000..e12bb869 --- /dev/null +++ b/script/c810000089.lua @@ -0,0 +1,45 @@ +--Dragon Nails +--scripted by: UnknownGuest +function c810000089.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(c810000089.target) + e1:SetOperation(c810000089.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(600) + 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(c810000089.eqlimit) + c:RegisterEffect(e3) +end +function c810000089.eqlimit(e,c) + return c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) +end +function c810000089.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) +end +function c810000089.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c810000089.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000089.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c810000089.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c810000089.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 diff --git a/script/c810000090.lua b/script/c810000090.lua new file mode 100644 index 00000000..54cf4aff --- /dev/null +++ b/script/c810000090.lua @@ -0,0 +1,45 @@ +--Dark Spear +--scripted by: UnknownGuest +function c810000090.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(c810000090.target) + e1:SetOperation(c810000090.operation) + c:RegisterEffect(e1) + --Pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_PIERCE) + 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(c810000090.eqlimit) + c:RegisterEffect(e3) +end +c810000090.dark_magician_list=true +function c810000090.eqlimit(e,c) + return c:IsCode(46986414) +end +function c810000090.filter(c) + return c:IsFaceup() and c:IsCode(46986414) +end +function c810000090.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c810000090.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000090.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c810000090.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c810000090.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 diff --git a/script/c810000091.lua b/script/c810000091.lua new file mode 100644 index 00000000..a8ba48c6 --- /dev/null +++ b/script/c810000091.lua @@ -0,0 +1,78 @@ +--Kung Fu Nyan Nyan +--scripted by: UnknownGuest +function c810000091.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c810000091.checkop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE_START+PHASE_MAIN1) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetLabelObject(e1) + e2:SetOperation(c810000091.clear) + c:RegisterEffect(e2) + --ATK Up + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_ATKCHANGE) + e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c810000091.reccon) + e3:SetOperation(c810000091.recop) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) +end +function c810000091.checkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetAttackedCount()==0 and Duel.GetTurnPlayer()==tp then + e:SetLabel(1) + end +end +function c810000091.clear(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()==1 and Duel.GetTurnPlayer()==tp then + e:GetLabelObject():SetLabel(0) + end +end +function c810000091.reccon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return tp==Duel.GetTurnPlayer() and c:IsPosition(POS_FACEUP_ATTACK) and e:GetLabelObject():GetLabel()==1 +end +function c810000091.recop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000091,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c810000091.adcon) + e2:SetOperation(c810000091.adop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e2) +end +function c810000091.adop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-300) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c810000091.adcon(e) + return e:GetHandler():GetAttackedCount()>0 +end diff --git a/script/c810000092.lua b/script/c810000092.lua new file mode 100644 index 00000000..3b7cddc3 --- /dev/null +++ b/script/c810000092.lua @@ -0,0 +1,38 @@ +--Luminous Clouds +--scripted by: UnknownGuest +function c810000092.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c810000092.cost) + e1:SetTarget(c810000092.target) + e1:SetOperation(c810000092.activate) + c:RegisterEffect(e1) +end +function c810000092.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,24530661) + and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,810000091) end + local g1=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,24530661) + local g2=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,810000091) + g1:Merge(g2) + Duel.Release(g1,REASON_COST) +end +function c810000092.filter(c,e,tp) + return c:IsCode(810000093) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c810000092.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c810000092.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c810000092.activate(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,c810000092.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + g:GetFirst():CompleteProcedure() + end +end diff --git a/script/c810000093.lua b/script/c810000093.lua new file mode 100644 index 00000000..599b5e36 --- /dev/null +++ b/script/c810000093.lua @@ -0,0 +1,48 @@ +--Dragon Lady +--scripted by: UnknownGuest +function c810000093.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --Destroy 1 spell/trap + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c810000093.cost) + e2:SetTarget(c810000093.target) + e2:SetOperation(c810000093.activate) + c:RegisterEffect(e2) +end +function c810000093.cost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1,true) + c:RegisterFlagEffect(810000093,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c810000093.filter2(c) + return c:IsDestructable() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c810000093.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c810000093.filter2(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c810000093.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c810000093.filter2,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c810000093.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + Duel.Destroy(tc,REASON_EFFECT) +end diff --git a/script/c810000094.lua b/script/c810000094.lua new file mode 100644 index 00000000..2085259e --- /dev/null +++ b/script/c810000094.lua @@ -0,0 +1,40 @@ +--Magician's Selection +--scripted by: UnknownGuest +function c810000094.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c810000094.condition) + e1:SetTarget(c810000094.target) + e1:SetOperation(c810000094.activate) + c:RegisterEffect(e1) +end +function c810000094.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + return tc:IsControler(tp) and tc:IsFaceup() and tc:IsRace(RACE_SPELLCASTER) +end +function c810000094.filter(c) + return c:IsFaceup() and c:IsDestructable() +end +function c810000094.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000094.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c810000094.filter,tp,0,LOCATION_MZONE,nil) + local tg=g:GetMinGroup(Card.GetAttack) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c810000094.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() + local g=Duel.GetMatchingGroup(c810000094.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + local tg=g:GetMinGroup(Card.GetAttack) + if tg:GetCount()>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=tg:Select(tp,1,1,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + else Duel.Destroy(tg,REASON_EFFECT) end + end +end diff --git a/script/c810000095.lua b/script/c810000095.lua new file mode 100644 index 00000000..71194094 --- /dev/null +++ b/script/c810000095.lua @@ -0,0 +1,81 @@ +--Magical Academy +--scripted by: UnknownGuest +function c810000095.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE+TIMING_SUMMON) + e1:SetCost(c810000095.cost) + e1:SetTarget(c810000095.target) + e1:SetOperation(c810000095.activate) + c:RegisterEffect(e1) +end +function c810000095.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,2,e:GetHandler()) end + Duel.DiscardHand(tp,Card.IsDiscardable,2,2,REASON_COST) +end +function c810000095.filter(c) + return c:IsRace(RACE_SPELLCASTER) and c:IsSummonable(true,nil) +end +function c810000095.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000095.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c810000095.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local g=Duel.SelectMatchingCard(tp,c810000095.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c810000095.filter,tp,LOCATION_HAND,0,1,1,nil) + Duel.Summon(tp,g:GetFirst(),true,nil) + --[[Duel.SpecialSummonStep(tc,SUMMON_TYPE_NORMAL,tp,tp,false,false,POS_FACEUP)]]-- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(2) + e1:SetReset(RESET_EVENT+0xfe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + tc:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE) + e3:SetTarget(c810000095.distg) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + --disable effect + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_CHAIN_SOLVING) + e4:SetRange(LOCATION_MZONE) + e4:SetOperation(c810000095.disop) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + --disable effect + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_CHAINING) + e5:SetRange(LOCATION_MZONE) + e5:SetOperation(c810000095.disop) + e5:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e5) + end +end +function c810000095.distg(e,c,tp) + return c:GetCardTargetCount()>0 and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:GetControler(1-tp) +end +function c810000095.disop(e,tp,eg,ep,ev,re,r,rp) + if not re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and re:GetHandler():GetControler(1-tp) then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + Duel.NegateEffect(ev) +end diff --git a/script/c810000096.lua b/script/c810000096.lua new file mode 100644 index 00000000..67097ff7 --- /dev/null +++ b/script/c810000096.lua @@ -0,0 +1,50 @@ +--Yosen Tornado +--scripted by: UnknownGuest +function c810000096.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c810000096.cost) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_TO_HAND) + e2:SetCondition(c810000096.condition) + e2:SetTarget(c810000096.target) + e2:SetOperation(c810000096.operation) + c:RegisterEffect(e2) +end +function c810000096.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c810000096.cfilter(c,tp) + return c:IsControler(tp) and c:IsPreviousLocation(LOCATION_MZONE) and c:IsSetCard(0xb3) + and c:IsType(TYPE_MONSTER) +end +function c810000096.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c810000096.cfilter,1,nil,tp) + --local ct=eg:Filter(c810000096.cfilter,nil,tp) + --e:SetLabel(eg:GetCount()) +end +function c810000096.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() and chkc:IsControler(1-tp) end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end + local ct=eg:FilterCount(c810000096.cfilter,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local eg=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,ct,ct,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,eg,ct,0,0) +end +function c810000096.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local rg=tg:Filter(Card.IsRelateToEffect,nil,e) + --local rg=e:GetLabel() + if rg:GetCount()>0 then + Duel.SendtoHand(rg,nil,REASON_EFFECT) + end +end diff --git a/script/c810000097.lua b/script/c810000097.lua new file mode 100644 index 00000000..7c0f1879 --- /dev/null +++ b/script/c810000097.lua @@ -0,0 +1,51 @@ +--Fluffal Sheep +--scripted by: UnknownGuest +function c810000097.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_SPSUM_PARAM) + e1:SetRange(LOCATION_HAND) + e1:SetTargetRange(POS_FACEUP,0) + e1:SetCondition(c810000097.spcon) + c:RegisterEffect(e1) + --add Poly + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000097,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_NAGA) + e2:SetCode(EVENT_TO_HAND) + e2:SetCondition(c810000097.con) + e2:SetTarget(c810000097.target) + e2:SetOperation(c810000097.operation) + c:RegisterEffect(e2) +end +function c810000097.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xa9) +end +function c810000097.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000097.cfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c810000097.con(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) or c:IsPreviousLocation(LOCATION_GRAVE) +end +function c810000097.filter(c) + return c:GetCode()==24094653 and c:IsAbleToHand() +end +function c810000097.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000097.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c810000097.operation(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local tg=Duel.GetFirstMatchingCard(c810000097.filter,tp,LOCATION_DECK,0,nil) + if tg then + Duel.SendtoHand(tg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tg) + end +end \ No newline at end of file diff --git a/script/c810000098.lua b/script/c810000098.lua new file mode 100644 index 00000000..8811659e --- /dev/null +++ b/script/c810000098.lua @@ -0,0 +1,87 @@ +--Frightfur Factory(Continuous Spell) +--scripted by: UnknownGuest +--fixed by MLD +function c810000098.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000098,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_SZONE) + e2:SetCost(c810000098.cost) + e2:SetTarget(c810000098.target) + e2:SetOperation(c810000098.operation) + c:RegisterEffect(e2) +end +function c810000098.cfilter(c) + return (c:IsCode(24094653) or c:IsSetCard(0x46)) and c:IsAbleToRemoveAsCost() +end +function c810000098.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000098.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c810000098.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c810000098.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c810000098.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0xad) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c810000098.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c810000098.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c810000098.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c810000098.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c810000098.operation(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c810000098.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c810000098.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c810000098.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c810000100.lua b/script/c810000100.lua new file mode 100644 index 00000000..be987c93 --- /dev/null +++ b/script/c810000100.lua @@ -0,0 +1,50 @@ +--Blocken +--scripted by: UnknownGuest +function c810000100.initial_effect(c) + --change battle target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000100,0)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c810000100.cbcon) + e1:SetOperation(c810000100.cbop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(810000100,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c810000100.condition) + e2:SetTarget(c810000100.target) + e2:SetOperation(c810000100.operation) + c:RegisterEffect(e2) +end +function c810000100.cbcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=eg:GetFirst() + return c~=bt and bt:GetControler()==c:GetControler() +end +function c810000100.cbop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeAttackTarget(e:GetHandler()) +end +function c810000100.condition(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsLocation(LOCATION_DECK) +end +function c810000100.spfilter(c,e,tp) + return c:IsCode(810000101) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000100.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c810000100.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c810000100.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,c810000100.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c810000101.lua b/script/c810000101.lua new file mode 100644 index 00000000..cbd16408 --- /dev/null +++ b/script/c810000101.lua @@ -0,0 +1,16 @@ +--Lengard +function c810000101.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c810000101.op) + c:RegisterEffect(e1) +end +function c810000101.op(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDestructable() and ep==tp and Duel.SelectYesNo(tp,aux.Stringid(93816465,1)) + and Duel.Destroy(e:GetHandler(),REASON_EFFECT+REASON_REPLACE) then + Duel.ChangeBattleDamage(tp,0) + end +end diff --git a/script/c810000102.lua b/script/c810000102.lua new file mode 100644 index 00000000..579f85aa --- /dev/null +++ b/script/c810000102.lua @@ -0,0 +1,29 @@ +--Magnet Reverse +--scripted by: UnknownGuest +function c810000102.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c810000102.sptg) + e1:SetOperation(c810000102.spop) + c:RegisterEffect(e1) +end +function c810000102.filter(c,e,tp,id) + return (c:IsRace(RACE_MACHINE) or c:IsRace(RACE_ROCK)) and c:GetTurnID()==id and not c:IsReason(REASON_RETURN) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000102.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c810000102.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp,Duel.GetTurnCount()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c810000102.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,Duel.GetTurnCount()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c810000102.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + Duel.SpecialSummon(sg:GetFirst(),0,tp,tp,false,false,POS_FACEUP_DEFENSE) +end diff --git a/script/c810000103.lua b/script/c810000103.lua new file mode 100644 index 00000000..69c35d77 --- /dev/null +++ b/script/c810000103.lua @@ -0,0 +1,30 @@ +--Seam Reborn +--scripted by: UnknownGuest +function c810000103.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000103.sptg) + e1:SetOperation(c810000103.spop) + c:RegisterEffect(e1) +end +function c810000103.filter(c,e,tp) + return c:IsSetCard(0xa9) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000103.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c810000103.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and + Duel.IsExistingTarget(c810000103.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c810000103.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c810000103.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c810000105.lua b/script/c810000105.lua new file mode 100644 index 00000000..aea58737 --- /dev/null +++ b/script/c810000105.lua @@ -0,0 +1,33 @@ +--Edge Imp Saw +--scripted by: UnknownGuest +function c810000105.initial_effect(c) + --draw + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000105,0)) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCost(c810000105.cost) + e1:SetTarget(c810000105.target) + e1:SetOperation(c810000105.activate) + c:RegisterEffect(e1) +end +function c810000105.cfilter(c) + return c:IsSetCard(0xa9) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() +end +function c810000105.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000105.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c810000105.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c810000105.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c810000105.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c810000106.lua b/script/c810000106.lua new file mode 100644 index 00000000..03eb0cf7 --- /dev/null +++ b/script/c810000106.lua @@ -0,0 +1,71 @@ +--Frightfur Fusion +--scripted by: UnknownGuest +--fixed by MLD +function c810000106.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c810000106.target) + e1:SetOperation(c810000106.activate) + c:RegisterEffect(e1) +end +function c810000106.filter1(c,e) + return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e) +end +function c810000106.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0xad) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c810000106.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c810000106.filter1,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,e) + local res=Duel.IsExistingMatchingCard(c810000106.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c810000106.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c810000106.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c810000106.filter1,tp,LOCATION_GRAVE+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c810000106.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c810000106.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.Remove(mat1,POS_FACEUP,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c810000107.lua b/script/c810000107.lua new file mode 100644 index 00000000..fe893c02 --- /dev/null +++ b/script/c810000107.lua @@ -0,0 +1,102 @@ +--Frightfur Backup +function c810000107.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c810000107.condition) + e1:SetTarget(c810000107.target) + e1:SetOperation(c810000107.operation) + c:RegisterEffect(e1) + -- + local e2=e1:Clone() + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c810000107.condition2) + c:RegisterEffect(e2) +end +function c810000107.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=tc:GetBattleTarget() + if tc:IsControler(1-tp) then + tc=Duel.GetAttackTarget() + bc=Duel.GetAttacker() + end + if not tc or not bc or tc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then return false end + if not tc:IsSetCard(0xad) then return false end + e:SetLabelObject(tc) + if bc==Duel.GetAttackTarget() and bc:IsDefensePos() then return false end + if bc:IsPosition(POS_FACEUP_DEFENSE) and bc==Duel.GetAttacker() then + if not bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then return false end + if bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if bc:GetEffectCount(EFFECT_DEFENSE_ATTACK)==1 then + if tc:IsAttackPos() then + if bc:GetDefense()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetDefense()~=0 + else + return bc:GetDefense()>=tc:GetAttack() + end + else + return bc:GetDefense()>tc:GetDefense() + end + elseif bc:IsHasEffect(EFFECT_DEFENSE_ATTACK) then + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end + end + else + if tc:IsAttackPos() then + if bc:GetAttack()==tc:GetAttack() and not bc:IsHasEffect(EFFECT_INDESTRUCTABLE_BATTLE) then + return bc:GetAttack()~=0 + else + return bc:GetAttack()>=tc:GetAttack() + end + else + return bc:GetAttack()>tc:GetDefense() + end + end +end +function c810000107.cfilter(c,e,tp) + return c:IsOnField() and c:IsType(TYPE_MONSTER) and c:IsControler(tp) and (not e or c:IsRelateToEffect(e)) + and c:IsSetCard(0xad) +end +function c810000107.condition2(e,tp,eg,ep,ev,re,r,rp) + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + if tg==nil then return false end + local g=tg:Filter(c810000107.cfilter,nil,nil,tp) + g:KeepAlive() + e:SetLabelObject(g) + return ex and tc+g:GetCount()-tg:GetCount()==1 +end +function c810000107.target(e,tp,eg,ep,ev,re,r,rp,chk) + local g=e:GetLabelObject() + if chk==0 then return g end + Duel.SetTargetCard(g) +end +function c810000107.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetReset(RESET_CHAIN) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(800) + tc:RegisterEffect(e3) + end +end diff --git a/script/c810000109.lua b/script/c810000109.lua new file mode 100644 index 00000000..f719eb87 --- /dev/null +++ b/script/c810000109.lua @@ -0,0 +1,87 @@ +--Frightfur Mad Chimaera +--scripted by: UnknownGuest +function c810000109.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsSetCard,0xad),3,true) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000109,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCondition(c810000109.spcon) + e1:SetTarget(c810000109.sptg) + e1:SetOperation(c810000109.spop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c810000109.val) + c:RegisterEffect(e2) + --prevenet activation + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(52085072,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetHintTiming(TIMING_BATTLE_PHASE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c810000109.accon) + e3:SetOperation(c810000109.acop) + c:RegisterEffect(e3) +end +function c810000109.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not c:IsRelateToBattle() or c:IsFacedown() then return false end + return bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c810000109.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,LOCATION_GRAVE) +end +function c810000109.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + tc:RegisterFlagEffect(810000109,RESET_EVENT+0x1fe0000,0,0) + Duel.SpecialSummonComplete() + end +end +function c810000109.val(e,c) + return Duel.GetMatchingGroupCount(c810000109.atkfilter,c:GetControler(),LOCATION_MZONE,0,nil)*300 +end +function c810000109.atkfilter(c) + return c:GetFlagEffect(810000109)>0 +end +function c810000109.accon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bt=Duel.GetAttacker() + if e:GetHandler():GetFlagEffect(810000110)>0 then return end + if bt and bt==c then return not c:IsStatus(STATUS_CHAINING) end + bt=Duel.GetAttackTarget() + return bt and bt==c and not c:IsStatus(STATUS_CHAINING) +end +function c810000109.acop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(810000110,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE,0,1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(c810000109.aclimit) + e1:SetReset(RESET_PHASE+PHASE_BATTLE) + Duel.RegisterEffect(e1,tp) +end +function c810000109.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c810000110.lua b/script/c810000110.lua new file mode 100644 index 00000000..9049974e --- /dev/null +++ b/script/c810000110.lua @@ -0,0 +1,39 @@ +--Frightfur Wheel Saw Leo +--scripted by: UnknownGuest +function c810000110.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,66457138,34688023,true,true) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetDescription(aux.Stringid(810000110,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c810000110.destg) + e1:SetOperation(c810000110.desop) + c:RegisterEffect(e1) +end +function c810000110.filter(c) + return c:IsDestructable() +end +function c810000110.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c810000110.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000110.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c810000110.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack()) +end +function c810000110.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then + local atk=tc:GetAttack() + if atk<0 then atk=0 end + if Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,atk,REASON_EFFECT) + end + end +end diff --git a/script/c810000111.lua b/script/c810000111.lua new file mode 100644 index 00000000..7e558652 --- /dev/null +++ b/script/c810000111.lua @@ -0,0 +1,45 @@ +--Edge Imp Scissors +--scripted by: UnknownGuest +function c810000111.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(810000111,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c810000111.target) + e1:SetOperation(c810000111.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c810000111.thfilter(c) + return c:IsSetCard(0xa9) and c:IsAbleToHand() +end +function c810000111.spfilter(c,e,tp) + return c:IsSetCard(0xa9) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c810000111.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c810000111.thfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c810000111.thfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c810000111.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c810000111.thfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c810000111.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c810000111.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 +end diff --git a/script/c810000112.lua b/script/c810000112.lua new file mode 100644 index 00000000..baf0e797 --- /dev/null +++ b/script/c810000112.lua @@ -0,0 +1,54 @@ +--Full Moon +--scripted by: UnknownGuest +function c810000112.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(c810000112.target) + e1:SetOperation(c810000112.operation) + c:RegisterEffect(e1) +end +function c810000112.filter(c) + return c:IsFaceup() and c:IsRace(RACE_BEAST) +end +function c810000112.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c810000112.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c810000112.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c810000112.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c810000112.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsLocation(LOCATION_SZONE) then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + c:CancelToGrave() + --Atkup + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --def up + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + 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(c810000112.eqlimit) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + end +end +function c810000112.eqlimit(e,c) + return c:IsRace(RACE_BEAST) +end \ No newline at end of file diff --git a/script/c810000113.lua b/script/c810000113.lua new file mode 100644 index 00000000..d83e1b91 --- /dev/null +++ b/script/c810000113.lua @@ -0,0 +1,44 @@ +--Jelly Hole +--scripted by: UnknownGuest +function c810000113.initial_effect(c) + --negate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c810000113.discon) + e1:SetTarget(c810000113.distg) + e1:SetOperation(c810000113.disop) + c:RegisterEffect(e1) +end +function c810000113.cfilter(c,tp) + return c:GetSummonPlayer()==tp and c:IsType(TYPE_XYZ) and c:IsAttribute(ATTRIBUTE_WATER) +end +function c810000113.discon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c810000113.cfilter,1,nil,1-tp) +end +function c810000113.filter1(c) + return c:IsFaceup() and not c:IsDisabled() and (c:IsLocation(LOCATION_SZONE) or c:IsType(TYPE_EFFECT)) +end +function c810000113.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c810000113.filter1,tp,0,LOCATION_ONFIELD,1,nil) end +end +function c810000113.disop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c810000113.filter1,tp,0,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + if not tc then return end + local c=e:GetHandler() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c810000114.lua b/script/c810000114.lua new file mode 100644 index 00000000..a86bc1bb --- /dev/null +++ b/script/c810000114.lua @@ -0,0 +1,35 @@ +--Swordstalker (Anime) +--scripted by: UnknownGuest +function c810000114.initial_effect(c) + --gain atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetDescription(aux.Stringid(810000114,0)) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET+EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c810000114.lvtar) + e1:SetOperation(c810000114.lvop) + c:RegisterEffect(e1) +end +function c810000114.lvfilter(c) + return c:GetAttack()>0 +end +function c810000114.lvtar(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and chkc:IsType(TYPE_MONSTER) end + if chk==0 then return Duel.IsExistingTarget(c810000114.lvfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c810000114.lvfilter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c810000114.lvop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local c=e:GetHandler() + if tc:IsRelateToEffect(e) and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(tc:GetAttack()/4) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end diff --git a/script/c810000115.lua b/script/c810000115.lua new file mode 100644 index 00000000..da0423c4 --- /dev/null +++ b/script/c810000115.lua @@ -0,0 +1,39 @@ +--Adversity +--scripted by: UnknownGuest +function c810000115.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c810000115.condition) + e1:SetOperation(c810000115.operation) + c:RegisterEffect(e1) +end +function c810000115.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local a=Duel.GetAttacker() + local atk=a:GetAttack() + return tc:IsControler(tp) and tc:GetAttack()0 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c81003500.spfilter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) - if sg:GetCount()>0 and not sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local sg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c81003500.spfilter),tp,0,LOCATION_GRAVE,1,1,nil,e,tp) + if sg:GetCount()>0 then Duel.SpecialSummon(sg,0,tp,1-tp,false,false,POS_FACEUP) end end diff --git a/script/c81020646.lua b/script/c81020646.lua index 16422385..792533ad 100644 --- a/script/c81020646.lua +++ b/script/c81020646.lua @@ -29,8 +29,7 @@ function c81020646.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c81020646.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c8102334.lua b/script/c8102334.lua index a3d687bb..75e8e55d 100644 --- a/script/c8102334.lua +++ b/script/c8102334.lua @@ -1,48 +1,48 @@ ---ゲート・ブロッカー -function c8102334.initial_effect(c) - --disable - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_DISABLE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_SZONE) - e1:SetTarget(c8102334.distg) - c:RegisterEffect(e1) - --disable effect - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c8102334.disop) - c:RegisterEffect(e2) - --prevent counter - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_CANNOT_PLACE_COUNTER) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(0,1) - c:RegisterEffect(e3) - --target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(LOCATION_MZONE,0) - e4:SetTarget(c8102334.tglimit) - e4:SetValue(aux.tgoval) - c:RegisterEffect(e4) -end -function c8102334.distg(e,c) - return c:IsType(TYPE_FIELD) -end -function c8102334.disop(e,tp,eg,ep,ev,re,r,rp) - local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) - if tl==LOCATION_SZONE and re:IsActiveType(TYPE_FIELD) and tp~=rp then - Duel.NegateEffect(ev) - end -end -function c8102334.tglimit(e,c) - return c~=e:GetHandler() -end +--ゲート・ブロッカー +function c8102334.initial_effect(c) + --disable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DISABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_SZONE) + e1:SetTarget(c8102334.distg) + c:RegisterEffect(e1) + --disable effect + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c8102334.disop) + c:RegisterEffect(e2) + --prevent counter + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_PLACE_COUNTER) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(0,1) + c:RegisterEffect(e3) + --target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_SET_AVAILABLE) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetTarget(c8102334.tglimit) + e4:SetValue(aux.tgoval) + c:RegisterEffect(e4) +end +function c8102334.distg(e,c) + return c:IsType(TYPE_FIELD) +end +function c8102334.disop(e,tp,eg,ep,ev,re,r,rp) + local tl=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + if tl==LOCATION_SZONE and re:IsActiveType(TYPE_FIELD) and tp~=rp then + Duel.NegateEffect(ev) + end +end +function c8102334.tglimit(e,c) + return c~=e:GetHandler() +end diff --git a/script/c81035362.lua b/script/c81035362.lua index 29b64da9..c2fe6d5e 100644 --- a/script/c81035362.lua +++ b/script/c81035362.lua @@ -1,43 +1,43 @@ ---魔サイの戦士 -function c81035362.initial_effect(c) - --indes - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c81035362.indtg) - e1:SetValue(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e2) - --to grave - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(81035362,0)) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1,81035362) - e3:SetTarget(c81035362.tgtg) - e3:SetOperation(c81035362.tgop) - c:RegisterEffect(e3) -end -function c81035362.indtg(e,c) - return c:IsRace(RACE_FIEND) and not c:IsCode(81035362) -end -function c81035362.tgfilter(c) - return c:IsRace(RACE_FIEND) and not c:IsCode(81035362) and c:IsAbleToGrave() -end -function c81035362.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c81035362.tgfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c81035362.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c81035362.tgfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end +--魔サイの戦士 +function c81035362.initial_effect(c) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c81035362.indtg) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + --to grave + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(81035362,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,81035362) + e3:SetTarget(c81035362.tgtg) + e3:SetOperation(c81035362.tgop) + c:RegisterEffect(e3) +end +function c81035362.indtg(e,c) + return c:IsRace(RACE_FIEND) and not c:IsCode(81035362) +end +function c81035362.tgfilter(c) + return c:IsRace(RACE_FIEND) and not c:IsCode(81035362) and c:IsAbleToGrave() +end +function c81035362.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c81035362.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c81035362.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c81035362.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c81055000.lua b/script/c81055000.lua new file mode 100644 index 00000000..de0151ed --- /dev/null +++ b/script/c81055000.lua @@ -0,0 +1,68 @@ +--EMリターンタンタン +function c81055000.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81055000,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1,81055000) + e1:SetTarget(c81055000.thtg1) + e1:SetOperation(c81055000.thop1) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81055000,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetTarget(c81055000.thtg2) + e2:SetOperation(c81055000.thop2) + c:RegisterEffect(e2) +end +function c81055000.thfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) and c:IsAbleToHand() +end +function c81055000.thtg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c81055000.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c81055000.thfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c81055000.thfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c81055000.thop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(1,0) + e1:SetLabelObject(tc) + e1:SetValue(c81055000.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c81055000.aclimit(e,re,tp) + local tc=e:GetLabelObject() + return re:GetHandler():IsCode(tc:GetCode()) and not re:GetHandler():IsImmuneToEffect(e) +end +function c81055000.thtg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c81055000.thop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c81057455.lua b/script/c81057455.lua index 9ef23430..42767dfd 100644 --- a/script/c81057455.lua +++ b/script/c81057455.lua @@ -1,86 +1,86 @@ ---Kaiju Capture Mission -function c81057455.initial_effect(c) - c:EnableCounterPermit(0x37) - c:SetCounterLimit(0x37,3) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c81057455.target) - c:RegisterEffect(e1) - --pos - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(81057455,0)) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCondition(c81057455.poscon) - e2:SetTarget(c81057455.postg) - e2:SetOperation(c81057455.posop) - c:RegisterEffect(e2) - --draw - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(81057455,1)) - e3:SetCategory(CATEGORY_DRAW) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1,81057455) - e3:SetCondition(c81057455.drcon) - e3:SetTarget(c81057455.drtg) - e3:SetOperation(c81057455.drop) - c:RegisterEffect(e3) -end -function c81057455.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return c81057455.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end - if chk==0 then return true end - if c81057455.poscon(e,tp,eg,ep,ev,re,r,rp) - and c81057455.postg(e,tp,eg,ep,ev,re,r,rp,0) - and Duel.SelectYesNo(tp,94) then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - e:SetOperation(c81057455.posop) - c81057455.postg(e,tp,eg,ep,ev,re,r,rp,1) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) - else - e:SetProperty(0) - e:SetOperation(nil) - end -end -function c81057455.poscon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x37)<3 -end -function c81057455.filter(c) - return c:IsFaceup() and c:IsSetCard(0xd3) and c:IsCanTurnSet() -end -function c81057455.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c81057455.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c81057455.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) - and e:GetHandler():GetFlagEffect(81057455)==0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c81057455.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) - e:GetHandler():RegisterFlagEffect(81057455,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c81057455.posop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE)~=0 then - e:GetHandler():AddCounter(0x37,1) - end -end -function c81057455.drcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:GetPreviousControler()==tp and rp~=tp and c:IsReason(REASON_DESTROY) -end -function c81057455.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c81057455.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--壊獣捕獲大作戦 +function c81057455.initial_effect(c) + c:EnableCounterPermit(0x37) + c:SetCounterLimit(0x37,3) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c81057455.target) + c:RegisterEffect(e1) + --pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81057455,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c81057455.poscon) + e2:SetTarget(c81057455.postg) + e2:SetOperation(c81057455.posop) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(81057455,1)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,81057455) + e3:SetCondition(c81057455.drcon) + e3:SetTarget(c81057455.drtg) + e3:SetOperation(c81057455.drop) + c:RegisterEffect(e3) +end +function c81057455.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return c81057455.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end + if chk==0 then return true end + if c81057455.poscon(e,tp,eg,ep,ev,re,r,rp) + and c81057455.postg(e,tp,eg,ep,ev,re,r,rp,0) + and Duel.SelectYesNo(tp,94) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetOperation(c81057455.posop) + c81057455.postg(e,tp,eg,ep,ev,re,r,rp,1) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) + else + e:SetProperty(0) + e:SetOperation(nil) + end +end +function c81057455.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x37)<3 +end +function c81057455.filter(c) + return c:IsFaceup() and c:IsSetCard(0xd3) and c:IsCanTurnSet() +end +function c81057455.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c81057455.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c81057455.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) + and e:GetHandler():GetFlagEffect(81057455)==0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c81057455.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + e:GetHandler():RegisterFlagEffect(81057455,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c81057455.posop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE)~=0 then + e:GetHandler():AddCounter(0x37,1) + end +end +function c81057455.drcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:GetPreviousControler()==tp and rp==1-tp and bit.band(r,0x41)==0x41 +end +function c81057455.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c81057455.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c81066751.lua b/script/c81066751.lua index eac8ae5c..55521a01 100644 --- a/script/c81066751.lua +++ b/script/c81066751.lua @@ -26,8 +26,7 @@ function c81066751.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c81066751.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c81109178.lua b/script/c81109178.lua new file mode 100644 index 00000000..69c4119c --- /dev/null +++ b/script/c81109178.lua @@ -0,0 +1,82 @@ +--ファイヤークラッカー +--Fire Cracker +--Script by nekrozar +function c81109178.initial_effect(c) + c:EnableCounterPermit(0x142) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81109178,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,81109178) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c81109178.damcost1) + e1:SetTarget(c81109178.damtg1) + e1:SetOperation(c81109178.damop1) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c81109178.ctcon) + e2:SetOperation(c81109178.ctop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(81109178,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c81109178.damtg2) + e3:SetOperation(c81109178.damop2) + c:RegisterEffect(e3) +end +function c81109178.damcost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDiscardable() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD) +end +function c81109178.damtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c81109178.damop1(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if Duel.Damage(p,d,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_SKIP_DP) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c81109178.ctcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and bit.band(r,REASON_EFFECT)~=0 +end +function c81109178.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x142,1) +end +function c81109178.damtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=e:GetHandler():GetCounter(0x142) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct) +end +function c81109178.damop2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local c=e:GetHandler() + local ct=c:GetCounter(0x142) + if ct>0 then + c:RemoveCounter(tp,0x142,ct,REASON_EFFECT) + Duel.Damage(p,ct*300,REASON_EFFECT) + end +end diff --git a/script/c81122844.lua b/script/c81122844.lua index ad92d20f..c64098b6 100644 --- a/script/c81122844.lua +++ b/script/c81122844.lua @@ -7,6 +7,7 @@ function c81122844.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetDescription(aux.Stringid(81122844,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) @@ -19,7 +20,7 @@ function c81122844.initial_effect(c) e2:SetCategory(CATEGORY_TOHAND) e2:SetDescription(aux.Stringid(81122844,1)) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCode(EVENT_TO_GRAVE) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c81122844.thcon) diff --git a/script/c81167171.lua b/script/c81167171.lua index 652507eb..35545dc5 100644 --- a/script/c81167171.lua +++ b/script/c81167171.lua @@ -1,57 +1,57 @@ ---ヒーロースピリッツ -function c81167171.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetCondition(c81167171.condition) - e1:SetOperation(c81167171.activate) - c:RegisterEffect(e1) - if not c81167171.global_check then - c81167171.global_check=true - c81167171[0]=false - c81167171[1]=false - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_BATTLE_DESTROYED) - ge1:SetOperation(c81167171.checkop1) - Duel.RegisterEffect(ge1,0) - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) - ge2:SetOperation(c81167171.clear) - Duel.RegisterEffect(ge2,0) - end -end -function c81167171.checkop1(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - while tc do - if tc:IsPreviousSetCard(0x3008) then - c81167171[tc:GetPreviousControler()]=true - end - tc=eg:GetNext() - end -end -function c81167171.clear(e,tp,eg,ep,ev,re,r,rp) - c81167171[0]=false - c81167171[1]=false -end -function c81167171.condition(e,tp,eg,ep,ev,re,r,rp) - return c81167171[tp] and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) -end -function c81167171.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_NO_BATTLE_DAMAGE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetReset(RESET_PHASE+PHASE_BATTLE+PHASE_DAMAGE_CAL) - 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:SetValue(1) - e2:SetReset(RESET_PHASE+PHASE_BATTLE+PHASE_DAMAGE_CAL) - Duel.RegisterEffect(e2,tp) -end +--ヒーロースピリッツ +function c81167171.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCondition(c81167171.condition) + e1:SetOperation(c81167171.activate) + c:RegisterEffect(e1) + if not c81167171.global_check then + c81167171.global_check=true + c81167171[0]=false + c81167171[1]=false + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DESTROYED) + ge1:SetOperation(c81167171.checkop1) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge2:SetOperation(c81167171.clear) + Duel.RegisterEffect(ge2,0) + end +end +function c81167171.checkop1(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsPreviousSetCard(0x3008) then + c81167171[tc:GetPreviousControler()]=true + end + tc=eg:GetNext() + end +end +function c81167171.clear(e,tp,eg,ep,ev,re,r,rp) + c81167171[0]=false + c81167171[1]=false +end +function c81167171.condition(e,tp,eg,ep,ev,re,r,rp) + return c81167171[tp] and (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) +end +function c81167171.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_NO_BATTLE_DAMAGE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_BATTLE+PHASE_DAMAGE_CAL) + 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:SetValue(1) + e2:SetReset(RESET_PHASE+PHASE_BATTLE+PHASE_DAMAGE_CAL) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c811734.lua b/script/c811734.lua index b08e5a57..75019c67 100644 --- a/script/c811734.lua +++ b/script/c811734.lua @@ -1,62 +1,62 @@ ---DDDの契約変更 -function c811734.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c811734.condition) - e1:SetTarget(c811734.target) - e1:SetOperation(c811734.activate) - c:RegisterEffect(e1) -end -function c811734.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) -end -function c811734.atkfilter(c) - return c:IsSetCard(0x10af) and c:GetAttack()>0 and c:IsAbleToRemove() -end -function c811734.thfilter(c) - return c:IsLevelBelow(4) and c:IsSetCard(0xaf) and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() -end -function c811734.target(e,tp,eg,ep,ev,re,r,rp,chk) - local b1=Duel.IsExistingMatchingCard(c811734.atkfilter,tp,LOCATION_GRAVE,0,1,nil) - local b2=Duel.IsExistingMatchingCard(c811734.thfilter,tp,LOCATION_DECK,0,1,nil) - if chk==0 then return b1 or b2 end - local op=0 - if b1 and b2 then - op=Duel.SelectOption(tp,aux.Stringid(811734,0),aux.Stringid(811734,1)) - elseif b1 then - op=Duel.SelectOption(tp,aux.Stringid(811734,0)) - else op=Duel.SelectOption(tp,aux.Stringid(811734,1))+1 end - e:SetLabel(op) - if op==0 then - e:SetCategory(CATEGORY_REMOVE) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_GRAVE) - else - e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) - end -end -function c811734.activate(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c811734.atkfilter,tp,LOCATION_GRAVE,0,1,1,nil) - local atk=g:GetFirst():GetAttack() - local tc=Duel.GetAttacker() - if Duel.Remove(g,POS_FACEUP,REASON_EFFECT)~=0 and tc:IsRelateToBattle() and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-atk) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c811734.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - end -end +--DDDの契約変更 +function c811734.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c811734.condition) + e1:SetTarget(c811734.target) + e1:SetOperation(c811734.activate) + c:RegisterEffect(e1) +end +function c811734.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c811734.atkfilter(c) + return c:IsSetCard(0x10af) and c:GetAttack()>0 and c:IsAbleToRemove() +end +function c811734.thfilter(c) + return c:IsLevelBelow(4) and c:IsSetCard(0xaf) and c:IsType(TYPE_PENDULUM) and c:IsAbleToHand() +end +function c811734.target(e,tp,eg,ep,ev,re,r,rp,chk) + local b1=Duel.IsExistingMatchingCard(c811734.atkfilter,tp,LOCATION_GRAVE,0,1,nil) + local b2=Duel.IsExistingMatchingCard(c811734.thfilter,tp,LOCATION_DECK,0,1,nil) + if chk==0 then return b1 or b2 end + local op=0 + if b1 and b2 then + op=Duel.SelectOption(tp,aux.Stringid(811734,0),aux.Stringid(811734,1)) + elseif b1 then + op=Duel.SelectOption(tp,aux.Stringid(811734,0)) + else op=Duel.SelectOption(tp,aux.Stringid(811734,1))+1 end + e:SetLabel(op) + if op==0 then + e:SetCategory(CATEGORY_REMOVE) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_GRAVE) + else + e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) + end +end +function c811734.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c811734.atkfilter,tp,LOCATION_GRAVE,0,1,1,nil) + local atk=g:GetFirst():GetAttack() + local tc=Duel.GetAttacker() + if Duel.Remove(g,POS_FACEUP,REASON_EFFECT)~=0 and tc:IsRelateToBattle() and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c811734.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end diff --git a/script/c81197327.lua b/script/c81197327.lua index 02c8e084..cb49a32d 100644 --- a/script/c81197327.lua +++ b/script/c81197327.lua @@ -1,43 +1,44 @@ ---E・HERO スチーム・ヒーラー -function c81197327.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,58932615,79979666,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --recover - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(81197327,0)) - e2:SetCategory(CATEGORY_RECOVER) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(c81197327.reccon) - e2:SetTarget(c81197327.rectg) - e2:SetOperation(c81197327.recop) - c:RegisterEffect(e2) -end -function c81197327.reccon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) -end -function c81197327.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local c=e:GetHandler() - local bc=c:GetBattleTarget() - local rec=bc:GetBaseAttack() - if rec<0 then rec=0 end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(rec) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) -end -function c81197327.recop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Recover(p,d,REASON_EFFECT) -end +--E・HERO スチーム・ヒーラー +function c81197327.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,58932615,79979666,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --recover + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81197327,0)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c81197327.reccon) + e2:SetTarget(c81197327.rectg) + e2:SetOperation(c81197327.recop) + c:RegisterEffect(e2) +end +c81197327.material_setcode=0x8 +function c81197327.reccon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c81197327.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local c=e:GetHandler() + local bc=c:GetBattleTarget() + local rec=bc:GetBaseAttack() + if rec<0 then rec=0 end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(rec) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) +end +function c81197327.recop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end diff --git a/script/c81210420.lua b/script/c81210420.lua index e66ad979..06e1ec0b 100644 --- a/script/c81210420.lua +++ b/script/c81210420.lua @@ -1,106 +1,106 @@ ---マジカルシルクハット -function c81210420.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) - e1:SetCondition(c81210420.condition) - e1:SetTarget(c81210420.target) - e1:SetOperation(c81210420.activate) - c:RegisterEffect(e1) -end -function c81210420.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 c81210420.filter(c) - return not c:IsType(TYPE_TOKEN) -end -function c81210420.spfilter(c,e,tp) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetCode(),nil,0x11,0,0,0,0,0,POS_FACEDOWN) -end -function c81210420.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c81210420.filter,tp,LOCATION_MZONE,0,1,nil) - and not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingMatchingCard(c81210420.spfilter,tp,LOCATION_DECK,0,2,nil,e,tp) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) -end -function c81210420.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - local g=Duel.GetMatchingGroup(c81210420.spfilter,tp,LOCATION_DECK,0,nil,e,tp) - if g:GetCount()<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local tc=Duel.SelectMatchingCard(tp,c81210420.filter,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() - if not tc or tc:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,2,2,nil) - if tc:IsFaceup() then - if tc:IsHasEffect(EFFECT_DEVINE_LIGHT) then Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) - else - Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) - tc:ClearEffectRelation() - end - end - local tg=sg:GetFirst() - local fid=e:GetHandler():GetFieldID() - while tg do - local e1=Effect.CreateEffect(tg) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_TYPE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(TYPE_NORMAL+TYPE_MONSTER) - e1:SetReset(RESET_EVENT+0x47c0000) - tg:RegisterEffect(e1,true) - local e2=e1:Clone() - e2:SetCode(EFFECT_REMOVE_RACE) - e2:SetValue(RACE_ALL) - tg:RegisterEffect(e2,true) - local e3=e1:Clone() - e3:SetCode(EFFECT_REMOVE_ATTRIBUTE) - e3:SetValue(0xff) - tg:RegisterEffect(e3,true) - local e4=e1:Clone() - e4:SetCode(EFFECT_SET_BASE_ATTACK) - e4:SetValue(0) - tg:RegisterEffect(e4,true) - local e5=e1:Clone() - e5:SetCode(EFFECT_SET_BASE_DEFENSE) - e5:SetValue(0) - tg:RegisterEffect(e5,true) - tg:RegisterFlagEffect(81210420,RESET_EVENT+0x47c0000+RESET_PHASE+PHASE_BATTLE,0,1,fid) - tg:SetStatus(STATUS_NO_LEVEL,true) - tg=sg:GetNext() - end - Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEDOWN_DEFENSE) - Duel.ConfirmCards(1-tp,sg) - sg:AddCard(tc) - Duel.ShuffleSetCard(sg) - sg:RemoveCard(tc) - sg:KeepAlive() - local de=Effect.CreateEffect(e:GetHandler()) - de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - de:SetCode(EVENT_PHASE+PHASE_BATTLE) - de:SetReset(RESET_PHASE+PHASE_BATTLE) - de:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - de:SetCountLimit(1) - de:SetLabel(fid) - de:SetLabelObject(sg) - de:SetOperation(c81210420.desop) - Duel.RegisterEffect(de,tp) -end -function c81210420.desfilter(c,fid) - return c:GetFlagEffectLabel(81210420)==fid -end -function c81210420.desop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local fid=e:GetLabel() - local tg=g:Filter(c81210420.desfilter,nil,fid) - g:DeleteGroup() - Duel.Destroy(tg,REASON_EFFECT) - local tg2=tg:Filter(c81210420.desfilter,nil,fid) - Duel.SendtoGrave(tg2,REASON_EFFECT) -end +--マジカルシルクハット +function c81210420.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_BATTLE_START+TIMING_BATTLE_END) + e1:SetCondition(c81210420.condition) + e1:SetTarget(c81210420.target) + e1:SetOperation(c81210420.activate) + c:RegisterEffect(e1) +end +function c81210420.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 c81210420.filter(c) + return not c:IsType(TYPE_TOKEN) +end +function c81210420.spfilter(c,e,tp) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and Duel.IsPlayerCanSpecialSummonMonster(tp,c:GetCode(),nil,0x11,0,0,0,0,0,POS_FACEDOWN) +end +function c81210420.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c81210420.filter,tp,LOCATION_MZONE,0,1,nil) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c81210420.spfilter,tp,LOCATION_DECK,0,2,nil,e,tp) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c81210420.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g=Duel.GetMatchingGroup(c81210420.spfilter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local tc=Duel.SelectMatchingCard(tp,c81210420.filter,tp,LOCATION_MZONE,0,1,1,nil):GetFirst() + if not tc or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + if tc:IsFaceup() then + if tc:IsHasEffect(EFFECT_DEVINE_LIGHT) then Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + else + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + tc:ClearEffectRelation() + end + end + local tg=sg:GetFirst() + local fid=e:GetHandler():GetFieldID() + while tg do + local e1=Effect.CreateEffect(tg) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(TYPE_NORMAL+TYPE_MONSTER) + e1:SetReset(RESET_EVENT+0x47c0000) + tg:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_REMOVE_RACE) + e2:SetValue(RACE_ALL) + tg:RegisterEffect(e2,true) + local e3=e1:Clone() + e3:SetCode(EFFECT_REMOVE_ATTRIBUTE) + e3:SetValue(0xff) + tg:RegisterEffect(e3,true) + local e4=e1:Clone() + e4:SetCode(EFFECT_SET_BASE_ATTACK) + e4:SetValue(0) + tg:RegisterEffect(e4,true) + local e5=e1:Clone() + e5:SetCode(EFFECT_SET_BASE_DEFENSE) + e5:SetValue(0) + tg:RegisterEffect(e5,true) + tg:RegisterFlagEffect(81210420,RESET_EVENT+0x47c0000+RESET_PHASE+PHASE_BATTLE,0,1,fid) + tg:SetStatus(STATUS_NO_LEVEL,true) + tg=sg:GetNext() + end + Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEDOWN_DEFENSE) + Duel.ConfirmCards(1-tp,sg) + sg:AddCard(tc) + Duel.ShuffleSetCard(sg) + sg:RemoveCard(tc) + sg:KeepAlive() + local de=Effect.CreateEffect(e:GetHandler()) + de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + de:SetCode(EVENT_PHASE+PHASE_BATTLE) + de:SetReset(RESET_PHASE+PHASE_BATTLE) + de:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + de:SetCountLimit(1) + de:SetLabel(fid) + de:SetLabelObject(sg) + de:SetOperation(c81210420.desop) + Duel.RegisterEffect(de,tp) +end +function c81210420.desfilter(c,fid) + return c:GetFlagEffectLabel(81210420)==fid +end +function c81210420.desop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local fid=e:GetLabel() + local tg=g:Filter(c81210420.desfilter,nil,fid) + g:DeleteGroup() + Duel.Destroy(tg,REASON_EFFECT) + local tg2=tg:Filter(c81210420.desfilter,nil,fid) + Duel.SendtoGrave(tg2,REASON_EFFECT) +end diff --git a/script/c81231742.lua b/script/c81231742.lua index 9fe258f8..c0213fad 100644 --- a/script/c81231742.lua +++ b/script/c81231742.lua @@ -1,28 +1,28 @@ ---破邪の魔法壁 -function c81231742.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetCondition(c81231742.atkcon) - e2:SetValue(300) - c:RegisterEffect(e2) - --def - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetCondition(c81231742.defcon) - c:RegisterEffect(e3) -end -function c81231742.atkcon(e) - return Duel.GetTurnPlayer()==e:GetHandlerPlayer() -end -function c81231742.defcon(e) - return Duel.GetTurnPlayer()~=e:GetHandlerPlayer() -end +--破邪の魔法壁 +function c81231742.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetCondition(c81231742.atkcon) + e2:SetValue(300) + c:RegisterEffect(e2) + --def + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetCondition(c81231742.defcon) + c:RegisterEffect(e3) +end +function c81231742.atkcon(e) + return Duel.GetTurnPlayer()==e:GetHandlerPlayer() +end +function c81231742.defcon(e) + return Duel.GetTurnPlayer()~=e:GetHandlerPlayer() +end diff --git a/script/c81254059.lua b/script/c81254059.lua index 3ea7811b..6ef17d62 100644 --- a/script/c81254059.lua +++ b/script/c81254059.lua @@ -25,12 +25,11 @@ end function c81254059.cfilter(c,tp) return c:IsSetCard(0x3e) and c:IsRace(RACE_REPTILE) and (c:IsControler(tp) or c:IsFaceup()) end -function c81254059.otcon(e,c) +function c81254059.otcon(e,c,minc) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(c81254059.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c81254059.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c81254059.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c81269231.lua b/script/c81269231.lua new file mode 100644 index 00000000..66ba74ba --- /dev/null +++ b/script/c81269231.lua @@ -0,0 +1,91 @@ +--古代の機械合成竜 +function c81269231.initial_effect(c) + --mat check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MATERIAL_CHECK) + e1:SetValue(c81269231.valcheck) + c:RegisterEffect(e1) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c81269231.regcon) + e2:SetOperation(c81269231.regop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetValue(c81269231.aclimit) + e3:SetCondition(c81269231.actcon) + c:RegisterEffect(e3) +end +function c81269231.valcheck(e,c) + local g=c:GetMaterial() + local flag=0 + local tc=g:GetFirst() + while tc do + if tc:IsSetCard(0x7) then flag=bit.bor(flag,0x1) end + if tc:IsSetCard(0x51) then flag=bit.bor(flag,0x2) end + tc=g:GetNext() + end + e:SetLabel(flag) +end +function c81269231.regcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c81269231.regop(e,tp,eg,ep,ev,re,r,rp) + local flag=e:GetLabelObject():GetLabel() + local c=e:GetHandler() + if bit.band(flag,0x1)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81269231,0)) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c81269231.rmcon) + e1:SetTarget(c81269231.rmtg) + e1:SetOperation(c81269231.rmop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end + if bit.band(flag,0x2)~=0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ATTACK_ALL) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + end +end +function c81269231.rmcon(e,tp,eg,ep,ev,re,r,rp) + local t=nil + if ev==0 then t=Duel.GetAttackTarget() + else t=Duel.GetAttacker() end + e:SetLabelObject(t) + return t and t:IsRelateToBattle() and e:GetHandler():IsStatus(STATUS_OPPO_BATTLE) +end +function c81269231.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetLabelObject():IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetLabelObject(),1,0,0) +end +function c81269231.rmop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetLabelObject() + if bc:IsRelateToBattle() then + Duel.Remove(bc,POS_FACEUP,REASON_EFFECT) + end +end +function c81269231.aclimit(e,re,tp) + return (re:IsHasType(EFFECT_TYPE_ACTIVATE) or re:IsActiveType(TYPE_MONSTER)) and not re:GetHandler():IsImmuneToEffect(e) +end +function c81269231.actcon(e) + local tp=e:GetHandlerPlayer() + local a=Duel.GetAttacker() + return a and a:IsSetCard(0x7) and a:IsControler(tp) +end diff --git a/script/c81275020.lua b/script/c81275020.lua index 552d94c7..162d970e 100644 --- a/script/c81275020.lua +++ b/script/c81275020.lua @@ -1,45 +1,45 @@ ---SRベイゴマックス -function c81275020.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c81275020.spcon) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(81275020,0)) - e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetCountLimit(1,81275020) - e2:SetTarget(c81275020.thtg) - e2:SetOperation(c81275020.thop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c81275020.spcon(e,c) - if c==nil then return true end - return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 - and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c81275020.thfilter(c) - return c:IsSetCard(0x2016) and not c:IsCode(81275020) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c81275020.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c81275020.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c81275020.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c81275020.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--SRベイゴマックス +function c81275020.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c81275020.spcon) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81275020,0)) + e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCountLimit(1,81275020) + e2:SetTarget(c81275020.thtg) + e2:SetOperation(c81275020.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c81275020.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c81275020.thfilter(c) + return c:IsSetCard(0x2016) and not c:IsCode(81275020) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c81275020.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c81275020.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c81275020.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c81275020.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c81380218.lua b/script/c81380218.lua index 5bd63915..50ac213c 100644 --- a/script/c81380218.lua +++ b/script/c81380218.lua @@ -1,17 +1,17 @@ ---聖域の歌声 -function c81380218.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Def up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_DEFENSE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsDefensePos)) - e2:SetValue(500) - c:RegisterEffect(e2) -end +--聖域の歌声 +function c81380218.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Def up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsDefensePos)) + e2:SetValue(500) + c:RegisterEffect(e2) +end diff --git a/script/c81471108.lua b/script/c81471108.lua index c16ae6ef..e1808fec 100644 --- a/script/c81471108.lua +++ b/script/c81471108.lua @@ -1,73 +1,73 @@ ---ZW-風神雲龍剣 -function c81471108.initial_effect(c) - c:SetUniqueOnField(1,0,81471108) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(81471108,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetRange(LOCATION_HAND+LOCATION_MZONE) - e1:SetCondition(c81471108.eqcon) - e1:SetTarget(c81471108.eqtg) - e1:SetOperation(c81471108.eqop) - c:RegisterEffect(e1) - --cannot be target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetValue(aux.tgoval) - c:RegisterEffect(e2) - --destroy sub - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetValue(c81471108.repval) - c:RegisterEffect(e3) -end -function c81471108.eqcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():CheckUniqueOnField(tp) -end -function c81471108.filter(c) - return c:IsFaceup() and c:IsSetCard(0x107f) -end -function c81471108.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c81471108.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c81471108.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c81471108.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c81471108.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) or not c:CheckUniqueOnField(tp) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c81471108.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(1300) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) -end -function c81471108.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c81471108.repval(e,re,r,rp) - return bit.band(r,REASON_BATTLE)~=0 -end +--ZW-風神雲龍剣 +function c81471108.initial_effect(c) + c:SetUniqueOnField(1,0,81471108) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81471108,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetCondition(c81471108.eqcon) + e1:SetTarget(c81471108.eqtg) + e1:SetOperation(c81471108.eqop) + c:RegisterEffect(e1) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetValue(aux.tgoval) + c:RegisterEffect(e2) + --destroy sub + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e3:SetValue(c81471108.repval) + c:RegisterEffect(e3) +end +function c81471108.eqcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():CheckUniqueOnField(tp) +end +function c81471108.filter(c) + return c:IsFaceup() and c:IsSetCard(0x107f) +end +function c81471108.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c81471108.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c81471108.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c81471108.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c81471108.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) or not c:CheckUniqueOnField(tp) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c81471108.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1300) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c81471108.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c81471108.repval(e,re,r,rp) + return bit.band(r,REASON_BATTLE)~=0 +end diff --git a/script/c81481818.lua b/script/c81481818.lua new file mode 100644 index 00000000..8c999fc6 --- /dev/null +++ b/script/c81481818.lua @@ -0,0 +1,22 @@ +--パッチワーク・ファーニマル +function c81481818.initial_effect(c) + --setcode + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_ADD_SETCODE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(0xad) + c:RegisterEffect(e1) + --fusion substitute + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_FUSION_SUBSTITUTE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c81481818.subval) + c:RegisterEffect(e2) +end +function c81481818.subval(e,c) + return c:IsSetCard(0xad) +end diff --git a/script/c81524977.lua b/script/c81524977.lua index a6998a95..c7e08dca 100644 --- a/script/c81524977.lua +++ b/script/c81524977.lua @@ -1,60 +1,60 @@ ---種子弾丸 -function c81524977.initial_effect(c) - c:EnableCounterPermit(0x20) - c:SetCounterLimit(0x20,5) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetCondition(c81524977.ctcon) - e2:SetOperation(c81524977.ctop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - local e4=e2:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - --damage - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(81524977,0)) - e5:SetCategory(CATEGORY_DAMAGE) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_SZONE) - e5:SetCost(c81524977.damcost) - e5:SetTarget(c81524977.damtg) - e5:SetOperation(c81524977.damop) - c:RegisterEffect(e5) -end -function c81524977.ctfilter(c) - return c:IsFaceup() and c:IsRace(RACE_PLANT) -end -function c81524977.ctcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c81524977.ctfilter,1,nil) -end -function c81524977.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x20,1) -end -function c81524977.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - e:SetLabel(e:GetHandler():GetCounter(0x20)) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c81524977.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetCounter(0x20)>0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(e:GetLabel()*500) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()*500) -end -function c81524977.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--種子弾丸 +function c81524977.initial_effect(c) + c:EnableCounterPermit(0x20) + c:SetCounterLimit(0x20,5) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetCondition(c81524977.ctcon) + e2:SetOperation(c81524977.ctop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + --damage + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(81524977,0)) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_SZONE) + e5:SetCost(c81524977.damcost) + e5:SetTarget(c81524977.damtg) + e5:SetOperation(c81524977.damop) + c:RegisterEffect(e5) +end +function c81524977.ctfilter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c81524977.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c81524977.ctfilter,1,nil) +end +function c81524977.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x20,1) +end +function c81524977.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabel(e:GetHandler():GetCounter(0x20)) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c81524977.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetCounter(0x20)>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()*500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()*500) +end +function c81524977.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c81566151.lua b/script/c81566151.lua index 2b7c88d7..78f0faae 100644 --- a/script/c81566151.lua +++ b/script/c81566151.lua @@ -1,119 +1,120 @@ ---E・HERO フレア・ネオス -function c81566151.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,89943723,89621922,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c81566151.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c81566151.spcon) - e2:SetOperation(c81566151.spop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(81566151,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c81566151.retcon1) - e3:SetTarget(c81566151.rettg) - e3:SetOperation(c81566151.retop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(0) - e4:SetCondition(c81566151.retcon2) - c:RegisterEffect(e4) - --atkup - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetCode(EFFECT_UPDATE_ATTACK) - e5:SetRange(LOCATION_MZONE) - e5:SetValue(c81566151.atkval) - c:RegisterEffect(e5) -end -function c81566151.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) -end -function c81566151.spfilter(c,code) - return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) -end -function c81566151.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-1 then return false end - local g1=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) - if g1:GetCount()==0 or g2:GetCount()==0 then return false end - if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end - if ft>0 then return true end - local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - if ft==-1 then return f1>0 and f2>0 - else return f1>0 or f2>0 end -end -function c81566151.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g1=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) - g1:Merge(g2) - local g=Group.CreateGroup() - local tc=nil - for i=1,2 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - if ft<=0 then - tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() - ft=ft+1 - else - tc=g1:Select(tp,1,1,nil):GetFirst() - end - g:AddCard(tc) - if i==1 then - g1:Clear() - if tc:IsFusionCode(89943723) then - local sg=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,tc,89621922) - g1:Merge(sg) - end - if tc:IsFusionCode(89621922) then - local sg=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) - g1:Merge(sg) - end - end - end - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c81566151.retcon1(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsHasEffect(42015635) -end -function c81566151.retcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsHasEffect(42015635) -end -function c81566151.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtra() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c81566151.retop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) -end -function c81566151.atkval(e,c) - return Duel.GetMatchingGroupCount(Card.IsType,0,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,TYPE_SPELL+TYPE_TRAP)*400 -end +--E・HERO フレア・ネオス +function c81566151.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,89943723,89621922,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c81566151.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c81566151.spcon) + e2:SetOperation(c81566151.spop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(81566151,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c81566151.retcon1) + e3:SetTarget(c81566151.rettg) + e3:SetOperation(c81566151.retop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(0) + e4:SetCondition(c81566151.retcon2) + c:RegisterEffect(e4) + --atkup + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c81566151.atkval) + c:RegisterEffect(e5) +end +c81566151.material_setcode=0x8 +function c81566151.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c81566151.spfilter(c,code) + return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) +end +function c81566151.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local g1=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) + if g1:GetCount()==0 or g2:GetCount()==0 then return false end + if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + if ft==-1 then return f1>0 and f2>0 + else return f1>0 or f2>0 end +end +function c81566151.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) + g1:Merge(g2) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + ft=ft+1 + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + if i==1 then + g1:Clear() + if tc:IsFusionCode(89943723) then + local sg=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,tc,89621922) + g1:Merge(sg) + end + if tc:IsFusionCode(89621922) then + local sg=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) + g1:Merge(sg) + end + end + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c81566151.retcon1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(42015635) +end +function c81566151.retcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasEffect(42015635) +end +function c81566151.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtra() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c81566151.retop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end +function c81566151.atkval(e,c) + return Duel.GetMatchingGroupCount(Card.IsType,0,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,TYPE_SPELL+TYPE_TRAP)*400 +end diff --git a/script/c81571633.lua b/script/c81571633.lua index 99df6dd7..571e84ec 100644 --- a/script/c81571633.lua +++ b/script/c81571633.lua @@ -1,108 +1,108 @@ ---DDプラウド・オーガ -function c81571633.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(81571633,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetCost(c81571633.atkcost) - e2:SetTarget(c81571633.atktg) - e2:SetOperation(c81571633.atkop) - c:RegisterEffect(e2) - --scale - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetCode(EFFECT_CHANGE_LSCALE) - e3:SetRange(LOCATION_PZONE) - e3:SetCondition(c81571633.sccon) - e3:SetValue(5) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CHANGE_RSCALE) - c:RegisterEffect(e4) - --spsummon - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(81571633,1)) - e5:SetCategory(CATEGORY_SPECIAL_SUMMON) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e5:SetCode(EVENT_SUMMON_SUCCESS) - e5:SetTarget(c81571633.sptg) - e5:SetOperation(c81571633.spop) - c:RegisterEffect(e5) -end -function c81571633.atkcost(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 c81571633.atkfilter(c) - return c:IsFaceup() and c:IsSetCard(0xaf) -end -function c81571633.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c81571633.atkfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c81571633.atkfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c81571633.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c81571633.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - 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_UPDATE_ATTACK) - e1:SetValue(500) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end -function c81571633.sccon(e) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) - return not tc or not tc:IsSetCard(0xaf) -end -function c81571633.filter(c,e,tp) - return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAttribute(ATTRIBUTE_DARK) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c81571633.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c81571633.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c81571633.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c81571633.filter,tp,LOCATION_EXTRA,0,nil,e,tp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,1,nil) - local tc=sg:GetFirst() - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - Duel.SpecialSummonComplete() - end - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,0) - e3:SetTarget(c81571633.splimit) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) -end -function c81571633.splimit(e,c) - return not c:IsSetCard(0xaf) -end +--DDプラウド・オーガ +function c81571633.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81571633,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetCost(c81571633.atkcost) + e2:SetTarget(c81571633.atktg) + e2:SetOperation(c81571633.atkop) + c:RegisterEffect(e2) + --scale + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_CHANGE_LSCALE) + e3:SetRange(LOCATION_PZONE) + e3:SetCondition(c81571633.sccon) + e3:SetValue(5) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e4) + --spsummon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(81571633,1)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetCode(EVENT_SUMMON_SUCCESS) + e5:SetTarget(c81571633.sptg) + e5:SetOperation(c81571633.spop) + c:RegisterEffect(e5) +end +function c81571633.atkcost(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 c81571633.atkfilter(c) + return c:IsFaceup() and c:IsSetCard(0xaf) +end +function c81571633.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c81571633.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c81571633.atkfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c81571633.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c81571633.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + 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_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c81571633.sccon(e) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) + return not tc or not tc:IsSetCard(0xaf) +end +function c81571633.filter(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_PENDULUM) and c:IsAttribute(ATTRIBUTE_DARK) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c81571633.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c81571633.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c81571633.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c81571633.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + local tc=sg:GetFirst() + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + end + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetTarget(c81571633.splimit) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c81571633.splimit(e,c) + return not c:IsSetCard(0xaf) +end diff --git a/script/c81601517.lua b/script/c81601517.lua index 024ade19..de0bd88c 100644 --- a/script/c81601517.lua +++ b/script/c81601517.lua @@ -31,8 +31,7 @@ function c81601517.activate(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE)~=0 then Duel.BreakEffect() - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c81612598.lua b/script/c81612598.lua index 88208196..a473c16c 100644 --- a/script/c81612598.lua +++ b/script/c81612598.lua @@ -11,10 +11,10 @@ function c81612598.initial_effect(c) c:RegisterEffect(e1) end function c81612598.filter1(c) - return c:IsFusionSetCard(0xe1) + return (c:IsFusionSetCard(0xe1) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end function c81612598.filter2(c) - return c:IsAttackBelow(2500) + return (c:IsAttackBelow(2500) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end function c81612598.fscon(e,g,gc,chkfnf) if g==nil then return true end @@ -31,18 +31,9 @@ function c81612598.fscon(e,g,gc,chkfnf) local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) if gc then if not gc:IsCanBeFusionMaterial(e:GetHandler(),true) then return false end - return (f1(gc) and mg:IsExists(f2,1,gc)) - or (f2(gc) and mg:IsExists(f1,1,gc)) end - local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false - local tc=mg:GetFirst() - while tc do - if f1(tc) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end - if f2(tc) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end - tc=mg:GetNext() + return aux.FConditionFilterF2(gc,f1,f2,mg,chkf) end - if chkf~=PLAYER_NONE then - return fs and g1:IsExists(aux.FConditionFilterF2,1,nil,g2) - else return g1:IsExists(aux.FConditionFilterF2,1,nil,g2) end + return mg:IsExists(aux.FConditionFilterF2,1,nil,f1,f2,mg,chkf) end function c81612598.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) local f1=c81612598.filter1 @@ -55,29 +46,25 @@ function c81612598.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) fc=fg:GetNext() end local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler(),true) + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if g:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end + end if gc then - local sg=Group.CreateGroup() - if f1(gc) then sg:Merge(g:Filter(f2,gc)) end - if f2(gc) then sg:Merge(g:Filter(f1,gc)) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=sg:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,aux.FConditionFilterF2chk,1,1,gc,f1,f2,gc,chkf) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - local sg=g:Filter(aux.FConditionFilterF2c,nil,f1,f2) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then - g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,aux.FConditionFilterF2,1,1,nil,f1,f2,g,chkf) local tc1=g1:GetFirst() - sg:RemoveCard(tc1) - local b1=f1(tc1) - local b2=f2(tc1) - if b1 and not b2 then sg:Remove(aux.FConditionFilterF2r,nil,f1,f2) end - if b2 and not b1 then sg:Remove(aux.FConditionFilterF2r,nil,f2,f1) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g2=sg:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=g:FilterSelect(p,aux.FConditionFilterF2chk,1,1,tc1,f1,f2,tc1,chkf) g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end diff --git a/script/c81661951.lua b/script/c81661951.lua index 98e6900e..53eda82a 100644 --- a/script/c81661951.lua +++ b/script/c81661951.lua @@ -1,31 +1,31 @@ ---ドラグニティ-ミリトゥム -function c81661951.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(81661951,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c81661951.sptg) - e1:SetOperation(c81661951.spop) - c:RegisterEffect(e1) -end -function c81661951.filter(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x29) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c81661951.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_SZONE) and c81661951.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c81661951.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c81661951.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c81661951.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ドラグニティ-ミリトゥム +function c81661951.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81661951,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c81661951.sptg) + e1:SetOperation(c81661951.spop) + c:RegisterEffect(e1) +end +function c81661951.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x29) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c81661951.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_SZONE) and c81661951.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c81661951.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c81661951.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c81661951.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c81674782.lua b/script/c81674782.lua index 94924010..16c9d199 100644 --- a/script/c81674782.lua +++ b/script/c81674782.lua @@ -1,33 +1,33 @@ ---次元の裂け目 -function c81674782.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) - e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) - e2:SetRange(LOCATION_SZONE) - e2:SetTarget(c81674782.rmtarget) - e2:SetTargetRange(0xff,0xff) - e2:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(81674782) - e3:SetRange(LOCATION_SZONE) - e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e3:SetTargetRange(0xff,0xff) - e3:SetTarget(c81674782.checktg) - c:RegisterEffect(e3) -end -function c81674782.rmtarget(e,c) - return not c:IsLocation(0x80) and not c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c81674782.checktg(e,c) - return not c:IsPublic() -end +--次元の裂け目 +function c81674782.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTarget(c81674782.rmtarget) + e2:SetTargetRange(0xff,0xff) + e2:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(81674782) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetTargetRange(0xff,0xff) + e3:SetTarget(c81674782.checktg) + c:RegisterEffect(e3) +end +function c81674782.rmtarget(e,c) + return not c:IsLocation(0x80) and not c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c81674782.checktg(e,c) + return not c:IsPublic() +end diff --git a/script/c81756897.lua b/script/c81756897.lua index 21c504e8..96cc1de8 100644 --- a/script/c81756897.lua +++ b/script/c81756897.lua @@ -1,4 +1,4 @@ ---ゼラの儀式 -function c81756897.initial_effect(c) - aux.AddRitualProcGreaterCode(c,69123138) -end +--ゼラの儀式 +function c81756897.initial_effect(c) + aux.AddRitualProcGreaterCode(c,69123138) +end diff --git a/script/c81777047.lua b/script/c81777047.lua index bbda6196..3bfa4830 100644 --- a/script/c81777047.lua +++ b/script/c81777047.lua @@ -1,22 +1,22 @@ ---シャインスパーク -function c81777047.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT)) - e2:SetValue(500) - c:RegisterEffect(e2) - --Def down - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(-400) - c:RegisterEffect(e3) -end +--シャインスパーク +function c81777047.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT)) + e2:SetValue(500) + c:RegisterEffect(e2) + --Def down + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(-400) + c:RegisterEffect(e3) +end diff --git a/script/c81788994.lua b/script/c81788994.lua index 5a501f09..09bf8874 100644 --- a/script/c81788994.lua +++ b/script/c81788994.lua @@ -1,51 +1,51 @@ ---影牢の呪縛 -function c81788994.initial_effect(c) - c:EnableCounterPermit(0x16) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetRange(LOCATION_FZONE) - e2:SetCondition(c81788994.ctcon) - e2:SetOperation(c81788994.ctop) - c:RegisterEffect(e2) - --atkdown - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetCondition(c81788994.atkcon) - e3:SetValue(c81788994.atkval) - c:RegisterEffect(e3) - -- - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(81788994,0)) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_FZONE) - e4:SetCode(81788994) - c:RegisterEffect(e4) -end -function c81788994.cfilter(c) - return c:IsSetCard(0x9d) and c:IsType(TYPE_MONSTER) and c:IsReason(REASON_EFFECT) -end -function c81788994.ctcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c81788994.cfilter,1,nil) -end -function c81788994.ctop(e,tp,eg,ep,ev,re,r,rp) - local ct=eg:FilterCount(c81788994.cfilter,nil) - e:GetHandler():AddCounter(0x16,ct) -end -function c81788994.atkcon(e) - return Duel.GetTurnPlayer()~=e:GetHandlerPlayer() -end -function c81788994.atkval(e,c) - return e:GetHandler():GetCounter(0x16)*-100 -end +--影牢の呪縛 +function c81788994.initial_effect(c) + c:EnableCounterPermit(0x16) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetRange(LOCATION_FZONE) + e2:SetCondition(c81788994.ctcon) + e2:SetOperation(c81788994.ctop) + c:RegisterEffect(e2) + --atkdown + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetCondition(c81788994.atkcon) + e3:SetValue(c81788994.atkval) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(81788994,0)) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(81788994) + c:RegisterEffect(e4) +end +function c81788994.cfilter(c) + return c:IsSetCard(0x9d) and c:IsType(TYPE_MONSTER) and c:IsReason(REASON_EFFECT) +end +function c81788994.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c81788994.cfilter,1,nil) +end +function c81788994.ctop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c81788994.cfilter,nil) + e:GetHandler():AddCounter(0x16,ct) +end +function c81788994.atkcon(e) + return Duel.GetTurnPlayer()~=e:GetHandlerPlayer() +end +function c81788994.atkval(e,c) + return e:GetHandler():GetCounter(0x16)*-100 +end diff --git a/script/c81810441.lua b/script/c81810441.lua index c1d9e08b..4fe19b42 100644 --- a/script/c81810441.lua +++ b/script/c81810441.lua @@ -1,70 +1,39 @@ ---星輝士の因子 -function c81810441.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(c81810441.target) - e1:SetOperation(c81810441.operation) - c:RegisterEffect(e1) - --equip limit - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EQUIP_LIMIT) - e2:SetValue(c81810441.eqlimit) - c:RegisterEffect(e2) - --atk/def - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(500) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e4) - --immune - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_EQUIP) - e5:SetCode(EFFECT_IMMUNE_EFFECT) - e5:SetValue(c81810441.efilter) - c:RegisterEffect(e5) - --selfdes - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e6:SetCode(EFFECT_SELF_DESTROY) - e6:SetRange(LOCATION_SZONE) - e6:SetCondition(c81810441.descon) - c:RegisterEffect(e6) -end -function c81810441.filter(c) - return c:IsFaceup() and c:IsSetCard(0x9c) -end -function c81810441.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c81810441.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c81810441.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c81810441.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c81810441.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 c81810441.eqlimit(e,c) - return c:IsSetCard(0x9c) and c:GetControler()==e:GetHandler():GetControler() -end -function c81810441.efilter(e,re) - return e:GetHandlerPlayer()~=re:GetOwnerPlayer() -end -function c81810441.cfilter(c) - return c:IsFaceup() and not c:IsSetCard(0x9c) -end -function c81810441.descon(e) - return Duel.IsExistingMatchingCard(c81810441.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end +--星輝士の因子 +function c81810441.initial_effect(c) + aux.AddEquipProcedure(c,0,aux.FilterBoolFunction(Card.IsSetCard,0x9c),c81810441.eqlimit) + --atk/def + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(500) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e4) + --immune + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_IMMUNE_EFFECT) + e5:SetValue(c81810441.efilter) + c:RegisterEffect(e5) + --selfdes + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e6:SetCode(EFFECT_SELF_DESTROY) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c81810441.descon) + c:RegisterEffect(e6) +end +function c81810441.eqlimit(e,c) + return c:IsSetCard(0x9c) and c:GetControler()==e:GetHandler():GetControler() +end +function c81810441.efilter(e,re) + return e:GetHandlerPlayer()~=re:GetOwnerPlayer() +end +function c81810441.cfilter(c) + return c:IsFaceup() and not c:IsSetCard(0x9c) +end +function c81810441.descon(e) + return Duel.IsExistingMatchingCard(c81810441.cfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c81863068.lua b/script/c81863068.lua index 9375347c..74e7d3c1 100644 --- a/script/c81863068.lua +++ b/script/c81863068.lua @@ -19,6 +19,7 @@ end function c81863068.operation(e,tp,eg,ep,ev,re,r,rp) local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) if Duel.Draw(p,d,REASON_EFFECT)==0 then return end + Duel.BreakEffect() local g=Duel.GetOperatedGroup() Duel.ConfirmCards(1-p,g) local dg=g:Filter(Card.IsType,nil,TYPE_SPELL) diff --git a/script/c81907872.lua b/script/c81907872.lua index 4e9fb259..13216363 100644 --- a/script/c81907872.lua +++ b/script/c81907872.lua @@ -1,73 +1,73 @@ ---ゴーストリック・スペクター -function c81907872.initial_effect(c) - --summon limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetCondition(c81907872.sumcon) - c:RegisterEffect(e1) - --turn set - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(81907872,0)) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c81907872.postg) - e2:SetOperation(c81907872.posop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(81907872,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetRange(LOCATION_HAND) - e3:SetCondition(c81907872.spcon) - e3:SetTarget(c81907872.sptg) - e3:SetOperation(c81907872.spop) - c:RegisterEffect(e3) -end -function c81907872.sfilter(c) - return c:IsFaceup() and c:IsSetCard(0x8d) -end -function c81907872.sumcon(e) - return not Duel.IsExistingMatchingCard(c81907872.sfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c81907872.postg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(81907872)==0 end - c:RegisterFlagEffect(81907872,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) - Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) -end -function c81907872.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) - end -end -function c81907872.cfilter(c,tp) - return c:IsControler(tp) and c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) and c:GetReasonPlayer()~=tp - and c:IsSetCard(0x8d) and c:IsType(TYPE_MONSTER) and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and c==Duel.GetAttackTarget())) -end -function c81907872.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c81907872.cfilter,1,nil,tp) -end -function c81907872.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) - and Duel.IsPlayerCanDraw(tp,1) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c81907872.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE)~=0 then - Duel.ConfirmCards(1-tp,c) - Duel.Draw(tp,1,REASON_EFFECT) - elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--ゴーストリック・スペクター +function c81907872.initial_effect(c) + --summon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c81907872.sumcon) + c:RegisterEffect(e1) + --turn set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81907872,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c81907872.postg) + e2:SetOperation(c81907872.posop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(81907872,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetRange(LOCATION_HAND) + e3:SetCondition(c81907872.spcon) + e3:SetTarget(c81907872.sptg) + e3:SetOperation(c81907872.spop) + c:RegisterEffect(e3) +end +function c81907872.sfilter(c) + return c:IsFaceup() and c:IsSetCard(0x8d) +end +function c81907872.sumcon(e) + return not Duel.IsExistingMatchingCard(c81907872.sfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c81907872.postg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(81907872)==0 end + c:RegisterFlagEffect(81907872,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) +end +function c81907872.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) + end +end +function c81907872.cfilter(c,tp) + return c:IsControler(tp) and c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) and c:GetReasonPlayer()~=tp + and c:IsSetCard(0x8d) and c:IsType(TYPE_MONSTER) and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and c==Duel.GetAttackTarget())) +end +function c81907872.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c81907872.cfilter,1,nil,tp) +end +function c81907872.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c81907872.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE)~=0 then + Duel.ConfirmCards(1-tp,c) + Duel.Draw(tp,1,REASON_EFFECT) + elseif Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c81919143.lua b/script/c81919143.lua index ff8031ab..c0a4724e 100644 --- a/script/c81919143.lua +++ b/script/c81919143.lua @@ -1,44 +1,44 @@ ---ブレイン・クラッシャー -function c81919143.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(81919143,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c81919143.spcon) - e1:SetTarget(c81919143.sptg) - e1:SetOperation(c81919143.spop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetOperation(c81919143.regop) - c:RegisterEffect(e2) -end -function c81919143.regop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(81919143,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c81919143.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(81919143)~=0 -end -function c81919143.filter(c,e,tp,rc,tid) - return c:IsReason(REASON_BATTLE) and c:GetReasonCard()==rc and c:GetTurnID()==tid - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c81919143.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c81919143.filter(chkc,e,tp,e:GetHandler(),Duel.GetTurnCount()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c81919143.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp,e:GetHandler(),Duel.GetTurnCount()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c81919143.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp,e:GetHandler(),Duel.GetTurnCount()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c81919143.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ブレイン・クラッシャー +function c81919143.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81919143,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c81919143.spcon) + e1:SetTarget(c81919143.sptg) + e1:SetOperation(c81919143.spop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetOperation(c81919143.regop) + c:RegisterEffect(e2) +end +function c81919143.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(81919143,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c81919143.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(81919143)~=0 +end +function c81919143.filter(c,e,tp,rc,tid) + return c:IsReason(REASON_BATTLE) and c:GetReasonCard()==rc and c:GetTurnID()==tid + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c81919143.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c81919143.filter(chkc,e,tp,e:GetHandler(),Duel.GetTurnCount()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c81919143.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp,e:GetHandler(),Duel.GetTurnCount()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c81919143.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp,e:GetHandler(),Duel.GetTurnCount()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c81919143.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c81927732.lua b/script/c81927732.lua index 0f642c99..81e63877 100644 --- a/script/c81927732.lua +++ b/script/c81927732.lua @@ -8,6 +8,7 @@ function c81927732.initial_effect(c) e1:SetDescription(aux.Stringid(81927732,0)) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCondition(c81927732.condition) e1:SetCost(c81927732.cost) e1:SetOperation(c81927732.operation) diff --git a/script/c81933259.lua b/script/c81933259.lua index a2969fc3..81f420fd 100644 --- a/script/c81933259.lua +++ b/script/c81933259.lua @@ -1,4 +1,4 @@ ---悪魔鏡の儀式 -function c81933259.initial_effect(c) - aux.AddRitualProcGreaterCode(c,31890399) -end +--悪魔鏡の儀式 +function c81933259.initial_effect(c) + aux.AddRitualProcGreaterCode(c,31890399) +end diff --git a/script/c81954378.lua b/script/c81954378.lua index 907b27c0..b0b30b0b 100644 --- a/script/c81954378.lua +++ b/script/c81954378.lua @@ -1,21 +1,6 @@ --死神の大鎌-デスサイス function c81954378.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+EFFECT_FLAG_CANNOT_DISABLE) - e1:SetTarget(c81954378.target) - e1:SetOperation(c81954378.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(c81954378.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,18175965)) --atk local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) @@ -23,25 +8,6 @@ function c81954378.initial_effect(c) e3:SetValue(c81954378.value) c:RegisterEffect(e3) end -function c81954378.eqlimit(e,c) - return c:IsCode(18175965) -end -function c81954378.filter(c) - return c:IsFaceup() and c:IsCode(18175965) -end -function c81954378.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c81954378.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c81954378.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c81954378.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c81954378.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 c81954378.value(e,c) return Duel.GetMatchingGroupCount(Card.IsType,0,LOCATION_GRAVE,LOCATION_GRAVE,nil,TYPE_MONSTER)*500 end diff --git a/script/c8198620.lua b/script/c8198620.lua index d3b60d52..fb7ee069 100644 --- a/script/c8198620.lua +++ b/script/c8198620.lua @@ -32,7 +32,7 @@ function c8198620.initial_effect(c) c:RegisterEffect(e3) end function c8198620.splimit(e,se,sp,st) - return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION end function c8198620.attg(e,tp,eg,ep,ev,re,r,rp,chk) local bc=e:GetHandler():GetBattleTarget() diff --git a/script/c8198712.lua b/script/c8198712.lua index 0f660c55..35cf7463 100644 --- a/script/c8198712.lua +++ b/script/c8198712.lua @@ -1,4 +1,4 @@ ---エンド・オブ・ザ・ワールド -function c8198712.initial_effect(c) - aux.AddRitualProcEqual2Code2(c,72426662,46427957) -end +--エンド・オブ・ザ・ワールド +function c8198712.initial_effect(c) + aux.AddRitualProcEqual2Code2(c,72426662,46427957) +end diff --git a/script/c81992475.lua b/script/c81992475.lua index 868da5b3..1a08c3a5 100644 --- a/script/c81992475.lua +++ b/script/c81992475.lua @@ -1,79 +1,79 @@ ---彼岸の悪鬼 バルバリッチャ -function c81992475.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c81992475.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(81992475,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,81992475) - e2:SetCondition(c81992475.sscon) - e2:SetTarget(c81992475.sstg) - e2:SetOperation(c81992475.ssop) - c:RegisterEffect(e2) - --remove - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(81992475,1)) - e3:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetCountLimit(1,81992475) - e3:SetTarget(c81992475.rmtg) - e3:SetOperation(c81992475.rmop) - c:RegisterEffect(e3) -end -function c81992475.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c81992475.sdcon(e) - return Duel.IsExistingMatchingCard(c81992475.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c81992475.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c81992475.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c81992475.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c81992475.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c81992475.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c81992475.rmfilter(c) - return c:IsSetCard(0xb1) and not c:IsCode(81992475) and c:IsAbleToRemove() -end -function c81992475.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c81992475.rmfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c81992475.rmfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c81992475.rmfilter,tp,LOCATION_GRAVE,0,1,3,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*300) -end -function c81992475.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 and Duel.Remove(g,POS_FACEUP,REASON_EFFECT)~=0 then - local rg=Duel.GetOperatedGroup() - local ct=rg:FilterCount(Card.IsLocation,nil,LOCATION_REMOVED) - if ct>0 then - Duel.Damage(1-tp,ct*300,REASON_EFFECT) - end - end -end +--彼岸の悪鬼 バルバリッチャ +function c81992475.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c81992475.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81992475,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,81992475) + e2:SetCondition(c81992475.sscon) + e2:SetTarget(c81992475.sstg) + e2:SetOperation(c81992475.ssop) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(81992475,1)) + e3:SetCategory(CATEGORY_REMOVE+CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCountLimit(1,81992475) + e3:SetTarget(c81992475.rmtg) + e3:SetOperation(c81992475.rmop) + c:RegisterEffect(e3) +end +function c81992475.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c81992475.sdcon(e) + return Duel.IsExistingMatchingCard(c81992475.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c81992475.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c81992475.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c81992475.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c81992475.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c81992475.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c81992475.rmfilter(c) + return c:IsSetCard(0xb1) and not c:IsCode(81992475) and c:IsAbleToRemove() +end +function c81992475.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c81992475.rmfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c81992475.rmfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c81992475.rmfilter,tp,LOCATION_GRAVE,0,1,3,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,g:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetCount()*300) +end +function c81992475.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 and Duel.Remove(g,POS_FACEUP,REASON_EFFECT)~=0 then + local rg=Duel.GetOperatedGroup() + local ct=rg:FilterCount(Card.IsLocation,nil,LOCATION_REMOVED) + if ct>0 then + Duel.Damage(1-tp,ct*300,REASON_EFFECT) + end + end +end diff --git a/script/c81994591.lua b/script/c81994591.lua index eaef3f29..e970513a 100644 --- a/script/c81994591.lua +++ b/script/c81994591.lua @@ -1,49 +1,49 @@ ---コアキメイルの金剛核 -function c81994591.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(81994591,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c81994591.target) - e1:SetOperation(c81994591.activate) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(81994591,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCost(c81994591.indcost) - e2:SetOperation(c81994591.indop) - c:RegisterEffect(e2) -end -function c81994591.filter(c) - return c:IsSetCard(0x1d) and c:GetCode()~=81994591 and c:IsAbleToHand() -end -function c81994591.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c81994591.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c81994591.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c81994591.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c81994591.indcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c81994591.indop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1d)) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetValue(1) - Duel.RegisterEffect(e1,tp) -end +--コアキメイルの金剛核 +function c81994591.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(81994591,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c81994591.target) + e1:SetOperation(c81994591.activate) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(81994591,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c81994591.indcost) + e2:SetOperation(c81994591.indop) + c:RegisterEffect(e2) +end +function c81994591.filter(c) + return c:IsSetCard(0x1d) and c:GetCode()~=81994591 and c:IsAbleToHand() +end +function c81994591.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c81994591.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c81994591.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c81994591.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c81994591.indcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c81994591.indop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_DESTROY_SUBSTITUTE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1d)) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c82044279.lua b/script/c82044279.lua index b15c0157..ea046138 100644 --- a/script/c82044279.lua +++ b/script/c82044279.lua @@ -1,86 +1,84 @@ ---クリアウィング・シンクロ・ドラゴン -function c82044279.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(82044279,0)) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c82044279.condition) - e1:SetTarget(c82044279.target) - e1:SetOperation(c82044279.operation) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetDescription(aux.Stringid(82044279,1)) - e2:SetCondition(c82044279.condition2) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_DESTROYED) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c82044279.atkcon) - e3:SetOperation(c82044279.atkop) - c:RegisterEffect(e3) -end -function c82044279.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local rc=re:GetHandler() - local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) - return re:IsActiveType(TYPE_MONSTER) and rc~=c and rc:IsLevelAbove(5) and loc==LOCATION_MZONE - and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) -end -function c82044279.condition2(e,tp,eg,ep,ev,re,r,rp) - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if not g or g:GetCount()~=1 then return false end - local tc=g:GetFirst() - local c=e:GetHandler() - return re:IsActiveType(TYPE_MONSTER) and tc:IsFaceup() and tc:IsLevelAbove(5) and tc:IsLocation(LOCATION_MZONE) - and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) -end -function c82044279.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c82044279.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - local rc=re:GetHandler() - if rc:IsRelateToEffect(re) then - Duel.Destroy(rc,REASON_EFFECT) - end -end -function c82044279.atkcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT)~=0 and re and re:GetOwner()==e:GetHandler() - and eg:IsExists(Card.IsType,1,nil,TYPE_MONSTER) -end -function c82044279.atkop(e,tp,eg,ep,ev,re,r,rp) - local g=eg:Filter(Card.IsType,nil,TYPE_MONSTER) - local c=e:GetHandler() - local atk=0 - local tc=g:GetFirst() - while tc do - if tc:GetTextAttack()>0 then - atk=atk+tc:GetTextAttack() - end - tc=g:GetNext() - end - if atk>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end +--クリアウィング・シンクロ・ドラゴン +function c82044279.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(82044279,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c82044279.condition) + e1:SetTarget(c82044279.target) + e1:SetOperation(c82044279.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetDescription(aux.Stringid(82044279,1)) + e2:SetCondition(c82044279.condition2) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DESTROYED) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c82044279.atkcon) + e3:SetOperation(c82044279.atkop) + c:RegisterEffect(e3) +end +function c82044279.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=re:GetHandler() + local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) + return re:IsActiveType(TYPE_MONSTER) and rc~=c and rc:IsLevelAbove(5) and loc==LOCATION_MZONE + and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) +end +function c82044279.condition2(e,tp,eg,ep,ev,re,r,rp) + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + local tc=g:GetFirst() + local c=e:GetHandler() + return re:IsActiveType(TYPE_MONSTER) and tc:IsFaceup() and tc:IsLevelAbove(5) and tc:IsLocation(LOCATION_MZONE) + and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) +end +function c82044279.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c82044279.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c82044279.atkcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and re and re:GetOwner()==e:GetHandler() + and eg:IsExists(Card.IsType,1,nil,TYPE_MONSTER) +end +function c82044279.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(Card.IsType,nil,TYPE_MONSTER) + local c=e:GetHandler() + local atk=0 + local tc=g:GetFirst() + while tc do + if tc:GetTextAttack()>0 then + atk=atk+tc:GetTextAttack() + end + tc=g:GetNext() + end + if atk>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end diff --git a/script/c82052602.lua b/script/c82052602.lua index d18040dc..09aa2477 100644 --- a/script/c82052602.lua +++ b/script/c82052602.lua @@ -54,10 +54,11 @@ function c82052602.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.RegisterFlagEffect(tp,82052602,RESET_PHASE+PHASE_END,0,1) end function c82052602.activate(e,tp,eg,ep,ev,re,r,rp) - local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft1==0 then return end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c82052602.filter,tp,LOCATION_GRAVE,0,ft1,ft1,nil,Duel.GetTurnCount(),e,tp) + local g=Duel.SelectMatchingCard(tp,c82052602.filter,tp,LOCATION_GRAVE,0,ft,ft,nil,Duel.GetTurnCount(),e,tp) if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) Duel.BreakEffect() diff --git a/script/c82114013.lua b/script/c82114013.lua index 4e0cdaec..45ef7fac 100644 --- a/script/c82114013.lua +++ b/script/c82114013.lua @@ -1,32 +1,32 @@ ---ドラコニアの海竜騎兵 -function c82114013.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_DESTROYED) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1,82114013) - e2:SetTarget(c82114013.sptg) - e2:SetOperation(c82114013.spop) - c:RegisterEffect(e2) -end -function c82114013.spfilter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c82114013.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c82114013.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c82114013.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c82114013.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 c82114013.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1,82114013) + e2:SetTarget(c82114013.sptg) + e2:SetOperation(c82114013.spop) + c:RegisterEffect(e2) +end +function c82114013.spfilter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c82114013.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c82114013.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c82114013.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c82114013.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 diff --git a/script/c82260502.lua b/script/c82260502.lua index a6b6349b..7496fc63 100644 --- a/script/c82260502.lua +++ b/script/c82260502.lua @@ -1,14 +1,14 @@ ---ヒエラコスフィンクス -function c82260502.initial_effect(c) - --at limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c82260502.atlimit) - c:RegisterEffect(e1) -end -function c82260502.atlimit(e,c) - return c:IsPosition(POS_FACEDOWN_DEFENSE) -end +--ヒエラコスフィンクス +function c82260502.initial_effect(c) + --at limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c82260502.atlimit) + c:RegisterEffect(e1) +end +function c82260502.atlimit(e,c) + return c:IsPosition(POS_FACEDOWN_DEFENSE) +end diff --git a/script/c82270047.lua b/script/c82270047.lua index 2e390b71..dc7578b0 100644 --- a/script/c82270047.lua +++ b/script/c82270047.lua @@ -1,91 +1,60 @@ ---Kozmo Lightsword -function c82270047.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(c82270047.target) - e1:SetOperation(c82270047.operation) - c:RegisterEffect(e1) - --atk/def up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(500) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --extra attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_EQUIP) - e4:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) - e4:SetValue(1) - c:RegisterEffect(e4) - --pierce - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_EQUIP) - e6:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e6) - --equip limit - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetCode(EFFECT_EQUIP_LIMIT) - e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e7:SetValue(c82270047.eqlimit) - c:RegisterEffect(e7) - --tohand - local e8=Effect.CreateEffect(c) - e8:SetDescription(aux.Stringid(82270047,0)) - e8:SetCategory(CATEGORY_TOHAND) - e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e8:SetCode(EVENT_TO_GRAVE) - e8:SetProperty(EFFECT_FLAG_DELAY) - e8:SetCountLimit(1,82270047) - e8:SetCondition(c82270047.thcon) - e8:SetCost(c82270047.thcost) - e8:SetTarget(c82270047.thtg) - e8:SetOperation(c82270047.thop) - c:RegisterEffect(e8) -end -function c82270047.eqlimit(e,c) - return c:IsSetCard(0xd2) and c:IsRace(RACE_PSYCHO) -end -function c82270047.filter(c) - return c:IsFaceup() and c:IsSetCard(0xd2) and c:IsRace(RACE_PSYCHO) -end -function c82270047.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c82270047.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c82270047.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c82270047.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c82270047.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 c82270047.dircon(e) - return e:GetHandler():GetEquipTarget():GetAttackAnnouncedCount()>0 -end -function c82270047.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c82270047.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,800) end - Duel.PayLPCost(tp,800) -end -function c82270047.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c82270047.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--Kozmo Lightsword +function c82270047.initial_effect(c) + aux.AddEquipProcedure(c,nil,c82270047.filter) + --atk/def up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --extra attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_EQUIP) + e4:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e4:SetValue(1) + c:RegisterEffect(e4) + --pierce + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_EQUIP) + e6:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e6) + --tohand + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(82270047,0)) + e8:SetCategory(CATEGORY_TOHAND) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_TO_GRAVE) + e8:SetProperty(EFFECT_FLAG_DELAY) + e8:SetCountLimit(1,82270047) + e8:SetCondition(c82270047.thcon) + e8:SetCost(c82270047.thcost) + e8:SetTarget(c82270047.thtg) + e8:SetOperation(c82270047.thop) + c:RegisterEffect(e8) +end +function c82270047.filter(c) + return c:IsSetCard(0xd2) and c:IsRace(RACE_PSYCHO) +end +function c82270047.dircon(e) + return e:GetHandler():GetEquipTarget():GetAttackAnnouncedCount()>0 +end +function c82270047.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c82270047.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) +end +function c82270047.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c82270047.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c82293134.lua b/script/c82293134.lua index eebc1671..84b92ba5 100644 --- a/script/c82293134.lua +++ b/script/c82293134.lua @@ -1,53 +1,53 @@ ---紋章獣レオ -function c82293134.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(82293134,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCondition(c82293134.descon) - e1:SetTarget(c82293134.destg) - e1:SetOperation(c82293134.desop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(82293134,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCountLimit(1,82293134) - e2:SetTarget(c82293134.thtg) - e2:SetOperation(c82293134.thop) - c:RegisterEffect(e2) -end -function c82293134.descon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)~=0 - and e:GetHandler():GetTurnID()==Duel.GetTurnCount() -end -function c82293134.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 c82293134.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 c82293134.filter(c) - return c:IsSetCard(0x76) and c:GetCode()~=82293134 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c82293134.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c82293134.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c82293134.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--紋章獣レオ +function c82293134.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(82293134,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCondition(c82293134.descon) + e1:SetTarget(c82293134.destg) + e1:SetOperation(c82293134.desop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(82293134,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,82293134) + e2:SetTarget(c82293134.thtg) + e2:SetOperation(c82293134.thop) + c:RegisterEffect(e2) +end +function c82293134.descon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)~=0 + and e:GetHandler():GetTurnID()==Duel.GetTurnCount() +end +function c82293134.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 c82293134.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 c82293134.filter(c) + return c:IsSetCard(0x76) and c:GetCode()~=82293134 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c82293134.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c82293134.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c82293134.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c82308875.lua b/script/c82308875.lua index f950d255..ebe6122a 100644 --- a/script/c82308875.lua +++ b/script/c82308875.lua @@ -9,6 +9,7 @@ function c82308875.initial_effect(c) e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DRAW+CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCost(c82308875.cost) e1:SetTarget(c82308875.target) e1:SetOperation(c82308875.operation) @@ -24,7 +25,7 @@ function c82308875.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,2) end function c82308875.spfilter(c,e,tp) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c82308875.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() @@ -38,7 +39,7 @@ function c82308875.operation(e,tp,eg,ep,ev,re,r,rp) c:RegisterEffect(e1) if d1+d2==7 then local b1=Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,LOCATION_ONFIELD)>1 - local spg=Duel.GetMatchingGroup(c82308875.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,LOCATION_GRAVE,nil,e,tp) + local spg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c82308875.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,LOCATION_GRAVE,nil,e,tp) local b2=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and spg:GetCount()>0 local b3=Duel.IsPlayerCanDraw(tp,3) if not b1 and not b2 and not b3 then return end @@ -56,7 +57,6 @@ function c82308875.operation(e,tp,eg,ep,ev,re,r,rp) elseif op==1 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=spg:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) else Duel.Draw(tp,3,REASON_EFFECT) diff --git a/script/c82321037.lua b/script/c82321037.lua index 4852f1fe..9fec232a 100644 --- a/script/c82321037.lua +++ b/script/c82321037.lua @@ -24,15 +24,20 @@ end function c82321037.desfilter(c) return c:IsType(TYPE_MONSTER) and ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) or c:IsLocation(LOCATION_HAND)) end +function c82321037.locfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) +end function c82321037.sptg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_MZONE+LOCATION_HAND if ft<0 then loc=LOCATION_MZONE end - local g=Duel.GetMatchingGroup(c82321037.desfilter,tp,loc,0,c) + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,88581108) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c82321037.desfilter,tp,loc,loc2,c) if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and g:GetCount()>=2 and g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WATER) - and (ft>0 or g:IsExists(Card.IsLocation,-ft+1,nil,LOCATION_MZONE)) end + and (ft>0 or g:IsExists(c82321037.locfilter,-ft+1,nil,tp)) end Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,2,tp,loc) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) end @@ -44,12 +49,14 @@ function c82321037.spop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_MZONE+LOCATION_HAND if ft<0 then loc=LOCATION_MZONE end - local g=Duel.GetMatchingGroup(c82321037.desfilter,tp,loc,0,c) + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,88581108) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c82321037.desfilter,tp,loc,loc2,c) if g:GetCount()<2 or not g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WATER) then return end local g1=nil local g2=nil Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) if ft<1 then - g1=g:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE) + g1=g:FilterSelect(tp,c82321037.locfilter,1,1,nil,tp) else g1=g:Select(tp,1,1,nil) end @@ -96,4 +103,4 @@ function c82321037.spop2(e,tp,eg,ep,ev,re,r,rp) if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) end -end +end \ No newline at end of file diff --git a/script/c82361206.lua b/script/c82361206.lua index 03c7daa4..67c67db4 100644 --- a/script/c82361206.lua +++ b/script/c82361206.lua @@ -1,21 +1,6 @@ --霊滅独鈷杵 function c82361206.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(c82361206.target) - e1:SetOperation(c82361206.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) + aux.AddEquipProcedure(c) --remove local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(82361206,0)) @@ -29,19 +14,6 @@ function c82361206.initial_effect(c) e3:SetOperation(c82361206.rmop) c:RegisterEffect(e3) end -function c82361206.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 c82361206.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 c82361206.rmcon(e,tp,eg,ep,ev,re,r,rp) return ep~=tp and eg:GetFirst()==e:GetHandler():GetEquipTarget() end diff --git a/script/c82382815.lua b/script/c82382815.lua index 08ada070..2c4e54b8 100644 --- a/script/c82382815.lua +++ b/script/c82382815.lua @@ -52,8 +52,7 @@ function c82382815.target2(e,tp,eg,ep,ev,re,r,rp,chk) end end function c82382815.activate2(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c82404868.lua b/script/c82404868.lua index 51df9a53..ad5b84a4 100644 --- a/script/c82404868.lua +++ b/script/c82404868.lua @@ -25,8 +25,8 @@ end function c82404868.activate(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,c82404868.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c82404868.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c82419869.lua b/script/c82419869.lua index 2567c5b8..c12f6b57 100644 --- a/script/c82419869.lua +++ b/script/c82419869.lua @@ -1,4 +1,4 @@ ---U.A. Perfect Ace +--U.A.パーフェクトエース function c82419869.initial_effect(c) --special summon local e1=Effect.CreateEffect(c) @@ -55,8 +55,7 @@ function c82419869.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c82419869.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c82432018.lua b/script/c82432018.lua index a35a4cfe..53591efc 100644 --- a/script/c82432018.lua +++ b/script/c82432018.lua @@ -1,63 +1,35 @@ ---凶暴化の仮面 -function c82432018.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(c82432018.target) - e1:SetOperation(c82432018.operation) - c:RegisterEffect(e1) - --Atk,def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(1000) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_EQUIP) - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(-1000) - c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) - --cost - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e5:SetCode(EVENT_PHASE+PHASE_STANDBY) - e5:SetRange(LOCATION_SZONE) - e5:SetCountLimit(1) - e5:SetCondition(c82432018.mtcon) - e5:SetOperation(c82432018.mtop) - c:RegisterEffect(e5) -end -function c82432018.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==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 c82432018.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 c82432018.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c82432018.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,1000) and Duel.SelectYesNo(tp,aux.Stringid(82432018,0)) then - Duel.PayLPCost(tp,1000) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--凶暴化の仮面 +function c82432018.initial_effect(c) + aux.AddEquipProcedure(c) + --Atk,def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1000) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(-1000) + c:RegisterEffect(e3) + --cost + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e5:SetCode(EVENT_PHASE+PHASE_STANDBY) + e5:SetRange(LOCATION_SZONE) + e5:SetCountLimit(1) + e5:SetCondition(c82432018.mtcon) + e5:SetOperation(c82432018.mtop) + c:RegisterEffect(e5) +end +function c82432018.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c82432018.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,1000) and Duel.SelectYesNo(tp,aux.Stringid(82432018,0)) then + Duel.PayLPCost(tp,1000) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c82627406.lua b/script/c82627406.lua index 77f2edd0..ef4b1ee7 100644 --- a/script/c82627406.lua +++ b/script/c82627406.lua @@ -26,6 +26,7 @@ function c82627406.initial_effect(c) --cannot be target local e3=e2:Clone() e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetValue(aux.tgoval) c:RegisterEffect(e3) end diff --git a/script/c82633039.lua b/script/c82633039.lua index 4122ee25..a864c173 100644 --- a/script/c82633039.lua +++ b/script/c82633039.lua @@ -9,7 +9,7 @@ function c82633039.initial_effect(c) e1:SetCategory(CATEGORY_POSITION) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1,82633039) e1:SetCost(c82633039.setcost) e1:SetTarget(c82633039.settg) @@ -21,7 +21,7 @@ function c82633039.initial_effect(c) e2:SetCategory(CATEGORY_TODECK) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1,82633039) e2:SetCost(c82633039.tdcost) e2:SetTarget(c82633039.tdtg) diff --git a/script/c82670878.lua b/script/c82670878.lua index f1a63871..ad13c4d7 100644 --- a/script/c82670878.lua +++ b/script/c82670878.lua @@ -1,115 +1,115 @@ ---血涙のオーガ -function c82670878.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(82670878,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_CUSTOM+82670878) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c82670878.condition) - e1:SetTarget(c82670878.target) - e1:SetOperation(c82670878.operation) - c:RegisterEffect(e1) - --atk/def up - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(82670878,1)) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c82670878.adcon) - e2:SetOperation(c82670878.adop) - c:RegisterEffect(e2) - if not c82670878.global_check then - c82670878.global_check=true - c82670878[0]=0 - c82670878[1]=0 - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_ATTACK_ANNOUNCE) - ge1:SetOperation(c82670878.check) - Duel.RegisterEffect(ge1,0) - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_ATTACK_DISABLED) - ge2:SetOperation(c82670878.check2) - Duel.RegisterEffect(ge2,0) - local ge3=Effect.CreateEffect(c) - ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge3:SetCode(EVENT_PHASE_START+PHASE_DRAW) - ge3:SetOperation(c82670878.clear) - Duel.RegisterEffect(ge3,0) - end -end -function c82670878.check(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - if Duel.GetAttackTarget()==nil then - c82670878[1-tc:GetControler()]=c82670878[1-tc:GetControler()]+1 - if c82670878[1-tc:GetControler()]==1 then - c82670878[2]=tc - tc:RegisterFlagEffect(82670878,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - elseif c82670878[1-tc:GetControler()]==2 then - Duel.RaiseEvent(tc,EVENT_CUSTOM+82670878,e,0,0,0,0) - end - end -end -function c82670878.check2(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - if tc:GetFlagEffect(82670878)~=0 and Duel.GetAttackTarget()~=nil then - c82670878[1-tc:GetControler()]=c82670878[1-tc:GetControler()]-1 - end -end -function c82670878.clear(e,tp,eg,ep,ev,re,r,rp) - c82670878[0]=0 - c82670878[1]=0 -end -function c82670878.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==nil and c82670878[tp]==2 -end -function c82670878.target(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c82670878.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c82670878.adcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c82670878.adop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=c82670878[2] - if c:IsFaceup() and c:IsRelateToEffect(e) then - if tc and tc:GetFlagEffect(82670878) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetValue(tc:GetAttack()) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetValue(tc:GetDefense()) - c:RegisterEffect(e2) - end - --at limit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetValue(c82670878.atlimit) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e3) - end -end -function c82670878.atlimit(e,c) - return c~=e:GetHandler() -end +--血涙のオーガ +function c82670878.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(82670878,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_CUSTOM+82670878) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c82670878.condition) + e1:SetTarget(c82670878.target) + e1:SetOperation(c82670878.operation) + c:RegisterEffect(e1) + --atk/def up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(82670878,1)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c82670878.adcon) + e2:SetOperation(c82670878.adop) + c:RegisterEffect(e2) + if not c82670878.global_check then + c82670878.global_check=true + c82670878[0]=0 + c82670878[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ATTACK_ANNOUNCE) + ge1:SetOperation(c82670878.check) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ATTACK_DISABLED) + ge2:SetOperation(c82670878.check2) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_PHASE_START+PHASE_DRAW) + ge3:SetOperation(c82670878.clear) + Duel.RegisterEffect(ge3,0) + end +end +function c82670878.check(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if Duel.GetAttackTarget()==nil then + c82670878[1-tc:GetControler()]=c82670878[1-tc:GetControler()]+1 + if c82670878[1-tc:GetControler()]==1 then + c82670878[2]=tc + tc:RegisterFlagEffect(82670878,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + elseif c82670878[1-tc:GetControler()]==2 then + Duel.RaiseEvent(tc,EVENT_CUSTOM+82670878,e,0,0,0,0) + end + end +end +function c82670878.check2(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + if tc:GetFlagEffect(82670878)~=0 and Duel.GetAttackTarget()~=nil then + c82670878[1-tc:GetControler()]=c82670878[1-tc:GetControler()]-1 + end +end +function c82670878.clear(e,tp,eg,ep,ev,re,r,rp) + c82670878[0]=0 + c82670878[1]=0 +end +function c82670878.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==nil and c82670878[tp]==2 +end +function c82670878.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c82670878.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,1,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c82670878.adcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c82670878.adop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=c82670878[2] + if c:IsFaceup() and c:IsRelateToEffect(e) then + if tc and tc:GetFlagEffect(82670878) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetValue(tc:GetAttack()) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(tc:GetDefense()) + c:RegisterEffect(e2) + end + --at limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(c82670878.atlimit) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e3) + end +end +function c82670878.atlimit(e,c) + return c~=e:GetHandler() +end diff --git a/script/c82693917.lua b/script/c82693917.lua index 09b26b1f..eecf9cf3 100644 --- a/script/c82693917.lua +++ b/script/c82693917.lua @@ -1,74 +1,74 @@ ---フォーチュンレディ・ウインディー -function c82693917.initial_effect(c) - --atk,def - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(c82693917.value) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e2) - --level up - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(82693917,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCondition(c82693917.lvcon) - e3:SetOperation(c82693917.lvop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(82693917,1)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_SUMMON_SUCCESS) - e4:SetTarget(c82693917.destg) - e4:SetOperation(c82693917.desop) - c:RegisterEffect(e4) -end -function c82693917.value(e,c) - return c:GetLevel()*300 -end -function c82693917.lvcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) -end -function c82693917.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c82693917.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x31) -end -function c82693917.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c82693917.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local ct=Duel.GetMatchingGroupCount(c82693917.cfilter,tp,LOCATION_MZONE,0,nil) - local dt=Duel.GetMatchingGroupCount(c82693917.filter,tp,0,LOCATION_ONFIELD,nil) - e:SetLabel(ct) - return dt>=ct - end - local g=Duel.GetMatchingGroup(c82693917.filter,tp,0,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,e:GetLabel(),0,0) -end -function c82693917.desop(e,tp,eg,ep,ev,re,r,rp) - local ct=Duel.GetMatchingGroupCount(c82693917.cfilter,tp,LOCATION_MZONE,0,nil) - local g=Duel.GetMatchingGroup(c82693917.filter,tp,0,LOCATION_ONFIELD,nil) - if ct>g:GetCount() then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local sg=g:Select(tp,ct,ct,nil) - Duel.HintSelection(sg) - Duel.Destroy(sg,REASON_EFFECT) -end +--フォーチュンレディ・ウインディー +function c82693917.initial_effect(c) + --atk,def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c82693917.value) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) + --level up + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(82693917,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c82693917.lvcon) + e3:SetOperation(c82693917.lvop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(82693917,1)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetTarget(c82693917.destg) + e4:SetOperation(c82693917.desop) + c:RegisterEffect(e4) +end +function c82693917.value(e,c) + return c:GetLevel()*300 +end +function c82693917.lvcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) +end +function c82693917.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c82693917.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x31) +end +function c82693917.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c82693917.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local ct=Duel.GetMatchingGroupCount(c82693917.cfilter,tp,LOCATION_MZONE,0,nil) + local dt=Duel.GetMatchingGroupCount(c82693917.filter,tp,0,LOCATION_ONFIELD,nil) + e:SetLabel(ct) + return dt>=ct + end + local g=Duel.GetMatchingGroup(c82693917.filter,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,e:GetLabel(),0,0) +end +function c82693917.desop(e,tp,eg,ep,ev,re,r,rp) + local ct=Duel.GetMatchingGroupCount(c82693917.cfilter,tp,LOCATION_MZONE,0,nil) + local g=Duel.GetMatchingGroup(c82693917.filter,tp,0,LOCATION_ONFIELD,nil) + if ct>g:GetCount() then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=g:Select(tp,ct,ct,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c82697249.lua b/script/c82697249.lua index 05b92a94..f5875327 100644 --- a/script/c82697249.lua +++ b/script/c82697249.lua @@ -16,6 +16,7 @@ function c82697249.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(82697249,0)) e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) e2:SetCode(EVENT_FREE_CHAIN) diff --git a/script/c82734805.lua b/script/c82734805.lua index d0544730..62941036 100644 --- a/script/c82734805.lua +++ b/script/c82734805.lua @@ -96,141 +96,157 @@ function c82734805.op(e,tp,eg,ep,ev,re,r,rp) Duel.SendtoGrave(g1,REASON_EFFECT) end end -function c82734805.fcfilter1(c,code1,code2,g) - return c:IsFusionCode(code1,code2) and g:IsExists(Card.IsFusionSetCard,1,c,0xbb) +function c82734805.matfilter1(c,code,fc) + return c:IsFusionCode(code) or c:CheckFusionSubstitute(fc) end -function c82734805.fcfilter2(c,code,g,fc) - return (c:IsFusionCode(code) or c:CheckFusionSubstitute(fc)) and g:IsExists(Card.IsFusionSetCard,1,c,0xbb) +function c82734805.matfilter2(c) + return (c:IsFusionSetCard(0xbb) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end -function c82734805.fcfilter3(c,g,fc) - return ((c:IsFusionCode(14799437) or c:CheckFusionSubstitute(fc)) and g:IsExists(Card.IsFusionCode,1,c,23440231)) - or ((c:IsFusionCode(23440231) or c:CheckFusionSubstitute(fc)) and g:IsExists(Card.IsFusionCode,1,c,14799437)) +function c82734805.filterchk1(c,mg,matg,chkf,fc,gc1,gc2,gc3) + local tg=Group.CreateGroup() + local g=mg:Clone() + if gc1 and c~=gc1 then return false end + if not c82734805.matfilter1(c,14799437,fc) then return false end + tg:AddCard(c) + g:RemoveCard(c) + return g:IsExists(c82734805.filterchk2,1,nil,g,tg,chkf,c,fc,gc2,gc3) end -function c82734805.fcfilter4(c,code,fc) - return c:IsFusionCode(code) or c:CheckFusionSubstitute(fc) +function c82734805.filterchk2(c,mg,matg,chkf,fc,sc,gc2,gc3) + local tg=matg:Clone() + local g=mg:Clone() + if gc2 and c~=gc2 then return false end + if sc:IsHasEffect(511002961) then + if not c82734805.matfilter1(c,14799437,fc) and not c82734805.matfilter1(c,23440231,fc) then return false end + elseif sc:CheckFusionSubstitute(fc) and not sc:IsFusionCode(14799437,23440231) then + if not c:IsFusionCode(14799437,23440231) then return false end + else + if sc:CheckFusionSubstitute(fc) and sc:IsFusionCode(14799437) then + if not c:IsFusionCode(23440231) and not c:CheckFusionSubstitute(fc) then return false end + elseif sc:CheckFusionSubstitute(fc) and sc:IsFusionCode(23440231) then + if not c:IsFusionCode(14799437) and not c:CheckFusionSubstitute(fc) then return false end + elseif sc:CheckFusionSubstitute(fc) then + if c:CheckFusionSubstitute(fc) and not c:IsFusionCode(14799437,23440231) then return false end + else + if not c82734805.matfilter1(c,23440231,fc) then return false end + end + end + tg:AddCard(c) + g:RemoveCard(c) + return g:IsExists(c82734805.filterchk3,1,nil,tg,chkf,gc3) end -function c82734805.fcfilter7(c,chkf,fc) - return aux.FConditionCheckF(c,chkf) and (c:IsFusionSetCard(0xbb) or c:CheckFusionSubstitute(fc)) +function c82734805.filterchk3(c,matg,chkf,gc3) + local g=matg:Clone() + if gc3 and c~=gc3 then return false end + if not c82734805.matfilter2(c) then return false end + g:AddCard(c) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + return g:IsExists(aux.FConditionCheckF,1,nil,chkf) or chkf==PLAYER_NONE end function c82734805.fscon(e,g,gc,chkf) if g==nil then return true end + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) if gc then - local mg=g:Clone() - mg:RemoveCard(gc) - if gc:CheckFusionSubstitute(e:GetHandler()) then - return mg:IsExists(c82734805.fcfilter1,1,nil,14799437,23440231,mg) - elseif gc:IsFusionCode(14799437) then - return mg:IsExists(c82734805.fcfilter2,1,nil,23440231,mg,e:GetHandler()) - elseif gc:IsFusionCode(23440231) then - return mg:IsExists(c82734805.fcfilter2,1,nil,14799437,mg,e:GetHandler()) - elseif gc:IsFusionSetCard(0xbb) then - return mg:IsExists(c82734805.fcfilter3,1,nil,mg,e:GetHandler()) - else - return false - end - end - local b1=0 local b2=0 local b3=0 local bs=0 - local fs=false - local tc=g:GetFirst() - while tc do - if tc:CheckFusionSubstitute(e:GetHandler()) then - bs=1 if aux.FConditionCheckF(tc,chkf) then fs=true end - elseif tc:IsFusionCode(14799437) then - if b1==0 then b1=1 else b3=1 end if aux.FConditionCheckF(tc,chkf) then fs=true end - elseif tc:IsFusionCode(23440231) then - if b2==0 then b2=1 else b3=1 end if aux.FConditionCheckF(tc,chkf) then fs=true end - elseif tc:IsFusionSetCard(0xbb) then - b3=1 if aux.FConditionCheckF(tc,chkf) then fs=true end - end - tc=g:GetNext() - end - if chkf~=PLAYER_NONE then - return fs and b1+b2+b3+bs>=3 - else - return b1+b2+b3+bs>=3 + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + mg:AddCard(gc) + return mg:IsExists(c82734805.filterchk1,1,nil,mg,nil,chkf,e:GetHandler(),gc,nil,nil) + or mg:IsExists(c82734805.filterchk1,1,nil,mg,nil,chkf,e:GetHandler(),nil,gc,nil) + or mg:IsExists(c82734805.filterchk1,1,nil,mg,nil,chkf,e:GetHandler(),nil,nil,gc) end + return mg:IsExists(c82734805.filterchk1,1,nil,mg,nil,chkf,e:GetHandler()) +end +function c82734805.extramaterial(c,mg,chkf,eff) + local g=mg:Clone() + g:AddCard(c) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end + return c82734805.matfilter2(c) and (not c:IsLocation(LOCATION_DECK) or not eff or g:FilterCount(Card.IsLocation,nil,LOCATION_DECK)<=6) end function c82734805.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) - local g1=Group.CreateGroup() - if not gc and chkf~=PLAYER_NONE then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - gc=eg:FilterSelect(tp,c82734805.fcfilter7,1,1,nil,chkf,e:GetHandler()):GetFirst() - g1:AddCard(gc) + local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if g:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end end - local mg=eg:Clone() - if gc then mg:RemoveCard(gc) end - local ok=false if gc then - if gc:CheckFusionSubstitute(e:GetHandler()) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg:FilterSelect(tp,c82734805.fcfilter1,1,1,nil,14799437,23440231,mg) - g1:Merge(sg) - elseif gc:IsFusionCode(14799437) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg:FilterSelect(tp,c82734805.fcfilter2,1,1,nil,23440231,mg,e:GetHandler()) - g1:Merge(sg) - elseif gc:IsFusionCode(23440231) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg:FilterSelect(tp,c82734805.fcfilter2,1,1,nil,14799437,mg,e:GetHandler()) - g1:Merge(sg) - elseif gc:IsFusionSetCard(0xbb) then + g:AddCard(gc) + if g:IsExists(c82734805.filterchk1,1,nil,g,nil,chkf,e:GetHandler(),gc,nil,nil) then + local matg=Group.FromCards(gc) + g:Sub(matg) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,c82734805.filterchk2,1,1,nil,g,matg,chkf,e:GetHandler(),gc,nil,nil) + matg:Merge(g1) + g:Sub(g1) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=g:FilterSelect(p,c82734805.filterchk3,1,1,nil,matg,chkf) + matg:Merge(g2) + g:Sub(g2) + while g:IsExists(c82734805.extramaterial,1,nil,matg,chkf,e:GetHandler():GetFlagEffect(31444249)~=0) and Duel.SelectYesNo(p,93) do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g3=g:FilterSelect(p,c82734805.extramaterial,1,1,nil,matg,chkf,e:GetHandler():GetFlagEffect(31444249)~=0) + matg:Merge(g3) + g:Sub(g3) + end + if sfhchk then Duel.ShuffleHand(tp) end + matg:RemoveCard(gc) + Duel.SetFusionMaterial(matg) + elseif g:IsExists(c82734805.filterchk1,1,nil,g,nil,chkf,e:GetHandler(),nil,gc,nil) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg:FilterSelect(tp,c82734805.fcfilter3,1,1,nil,mg,e:GetHandler()) - g1:Merge(sg) - local tc1=sg:GetFirst() + local matg=g:FilterSelect(tp,c82734805.filterchk1,1,1,nil,g,matg,chkf,e:GetHandler(),nil,gc,nil) + matg:AddCard(gc) + g:RemoveCard(gc) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=g:FilterSelect(p,c82734805.filterchk3,1,1,nil,matg,chkf) + matg:Merge(g2) + g:Sub(g2) + while g:IsExists(c82734805.extramaterial,1,nil,matg,chkf,e:GetHandler():GetFlagEffect(31444249)~=0) and Duel.SelectYesNo(p,93) do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g3=g:FilterSelect(p,c82734805.extramaterial,1,1,nil,matg,chkf,e:GetHandler():GetFlagEffect(31444249)~=0) + matg:Merge(g3) + g:Sub(g3) + end + if sfhchk then Duel.ShuffleHand(tp) end + matg:RemoveCard(gc) + Duel.SetFusionMaterial(matg) + else Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if tc1:IsFusionCode(14799437) then - local sg=mg:FilterSelect(tp,c82734805.fcfilter4,1,1,nil,23440231,e:GetHandler()) - g1:Merge(sg) - elseif tc1:IsFusionCode(23440231) then - local sg=mg:FilterSelect(tp,c82734805.fcfilter4,1,1,nil,14799437,e:GetHandler()) - g1:Merge(sg) - else - local sg=mg:FilterSelect(tp,aux.FConditionFilter21,1,1,nil,14799437,23440231) - g1:Merge(sg) + local matg=g:FilterSelect(tp,c82734805.filterchk1,1,1,nil,g,matg,chkf,e:GetHandler(),nil,nil,gc) + g:Sub(matg) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,c82734805.filterchk2,1,1,nil,g,matg,chkf,e:GetHandler(),matg:GetFirst(),nil,gc) + matg:Merge(g1) + g:Sub(g1) + matg:AddCard(gc) + g:RemoveCard(gc) + while g:IsExists(c82734805.extramaterial,1,nil,matg,chkf,e:GetHandler():GetFlagEffect(31444249)~=0) and Duel.SelectYesNo(p,93) do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g3=g:FilterSelect(p,c82734805.extramaterial,1,1,nil,matg,chkf,e:GetHandler():GetFlagEffect(31444249)~=0) + matg:Merge(g3) + g:Sub(g3) end - ok=true + if sfhchk then Duel.ShuffleHand(tp) end + matg:RemoveCard(gc) + Duel.SetFusionMaterial(matg) end - else - local mg2=mg:Filter(aux.FConditionFilter22,nil,14799437,23440231,true,e:GetHandler()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg1=mg2:Select(tp,1,1,nil) - local tc1=sg1:GetFirst() - if not mg:IsExists(Card.IsFusionSetCard,2,tc1,0xbb) then - mg2:Remove(Card.IsFusionSetCard,nil,0xbb) - end - if tc1:CheckFusionSubstitute(e:GetHandler()) then - mg2:Remove(Card.CheckFusionSubstitute,nil,e:GetHandler()) - else mg2:Remove(Card.IsFusionCode,nil,tc1:GetCode()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg2=mg2:Select(tp,1,1,nil) - g1:Merge(sg1) - g1:Merge(sg2) - end - mg:Sub(g1) - mg=mg:Filter(Card.IsFusionSetCard,nil,0xbb) - if mg:GetCount()==0 or (ok and not Duel.SelectYesNo(tp,93)) then - Duel.SetFusionMaterial(g1) - return - end - ok=false - local dmg=mg:Filter(Card.IsLocation,nil,LOCATION_DECK) - if dmg:GetCount()>0 and e:GetHandler():GetFlagEffect(31444249)~=0 and Duel.SelectYesNo(tp,aux.Stringid(31444249,0)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=dmg:Select(tp,1,6-g1:FilterCount(Card.IsLocation,nil,LOCATION_DECK),nil) - g1:Merge(sg) - ok=true - end - if e:GetHandler():GetFlagEffect(31444249)~=0 then - mg:Remove(Card.IsLocation,nil,LOCATION_DECK) - end - if mg:GetCount()==0 or (ok and not Duel.SelectYesNo(tp,93)) then - Duel.SetFusionMaterial(g1) return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local sg=mg:Select(tp,1,99,nil) - g1:Merge(sg) - Duel.SetFusionMaterial(g1) + local matg=g:FilterSelect(tp,c82734805.filterchk1,1,1,nil,g,matg,chkf,e:GetHandler(),nil,nil,gc) + g:Sub(matg) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=g:FilterSelect(p,c82734805.filterchk2,1,1,nil,g,matg,chkf,e:GetHandler(),matg:GetFirst(),nil,gc) + matg:Merge(g1) + g:Sub(g1) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=g:FilterSelect(p,c82734805.filterchk3,1,1,nil,matg,chkf) + matg:Merge(g2) + g:Sub(g2) + while g:IsExists(c82734805.extramaterial,1,nil,matg,chkf,e:GetHandler():GetFlagEffect(31444249)~=0) and Duel.SelectYesNo(p,93) do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g3=g:FilterSelect(p,c82734805.extramaterial,1,1,nil,matg,chkf,e:GetHandler():GetFlagEffect(31444249)~=0) + matg:Merge(g3) + g:Sub(g3) + end + Duel.SetFusionMaterial(matg) return end diff --git a/script/c82744076.lua b/script/c82744076.lua index b2b354f9..19fb2ec8 100644 --- a/script/c82744076.lua +++ b/script/c82744076.lua @@ -84,8 +84,7 @@ function c82744076.negtg(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) end function c82744076.negop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsRelateToEffect(re) then Duel.SendtoGrave(eg,REASON_EFFECT) end end diff --git a/script/c82821760.lua b/script/c82821760.lua new file mode 100644 index 00000000..0558087f --- /dev/null +++ b/script/c82821760.lua @@ -0,0 +1,110 @@ +--巨大戦艦 ビッグ・コアMk-Ⅲ +--B.E.S. Big Core MK-3 +--Script by nekrozar +function c82821760.initial_effect(c) + c:EnableCounterPermit(0x1f) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SPSUM_PARAM) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetTargetRange(POS_FACEUP_DEFENSE,0) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c82821760.sprcon) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(82821760,0)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c82821760.cttg) + e2:SetOperation(c82821760.ctop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e4:SetValue(1) + c:RegisterEffect(e4) + --remove counter + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(82821760,1)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_DAMAGE_STEP_END) + e5:SetTarget(c82821760.rcttg) + e5:SetOperation(c82821760.rctop) + c:RegisterEffect(e5) + --destroy + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(82821760,2)) + e6:SetCategory(CATEGORY_DESTROY) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_DAMAGE_STEP_END) + e6:SetCondition(c82821760.descon) + e6:SetTarget(c82821760.destg) + e6:SetOperation(c82821760.desop) + c:RegisterEffect(e6) + --to deck + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(82821760,3)) + e7:SetCategory(CATEGORY_TODECK) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetRange(LOCATION_GRAVE) + e7:SetCost(c82821760.tdcost) + e7:SetTarget(c82821760.tdtg) + e7:SetOperation(c82821760.tdop) + c:RegisterEffect(e7) +end +function c82821760.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 +end +function c82821760.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,3,0,0x1f) +end +function c82821760.ctop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x1f,3) + end +end +function c82821760.rcttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if e:GetHandler():IsCanRemoveCounter(tp,0x1f,1,REASON_EFFECT) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + end +end +function c82821760.rctop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + if c:IsCanRemoveCounter(tp,0x1f,1,REASON_EFFECT) then + c:RemoveCounter(tp,0x1f,1,REASON_EFFECT) + else + Duel.Destroy(c,REASON_EFFECT) + end + end +end +function c82821760.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c82821760.tdfilter(c) + return c:IsSetCard(0x15) and c:IsAbleToDeck() +end +function c82821760.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c82821760.tdfilter,tp,LOCATION_GRAVE,0,1,nil) end + local g=Duel.GetMatchingGroup(c82821760.tdfilter,tp,LOCATION_GRAVE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c82821760.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c82821760.tdfilter,tp,LOCATION_GRAVE,0,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c8284390.lua b/script/c8284390.lua new file mode 100644 index 00000000..4a84d8cb --- /dev/null +++ b/script/c8284390.lua @@ -0,0 +1,76 @@ +--SR56プレーン +--Speedroid 5 6 Plane +--Script by nekrozar +function c8284390.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(8284390,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,8284390) + e1:SetCondition(c8284390.spcon) + e1:SetTarget(c8284390.sptg) + e1:SetOperation(c8284390.spop) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(8284390,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c8284390.atktg) + e2:SetOperation(c8284390.atkop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c8284390.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsControler,1,nil,tp) +end +function c8284390.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c8284390.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end + end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetTargetRange(1,0) + e1:SetTarget(c8284390.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c8284390.splimit(e,c,tp,sumtp,sumpos) + return not c:IsAttribute(ATTRIBUTE_WIND) +end +function c8284390.atktg(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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g,1,0,0) +end +function c8284390.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(-600) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c82878489.lua b/script/c82878489.lua index 838122db..6d916af0 100644 --- a/script/c82878489.lua +++ b/script/c82878489.lua @@ -1,44 +1,10 @@ --シャイン・キャッスル function c82878489.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(c82878489.target) - e1:SetOperation(c82878489.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT)) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(700) c:RegisterEffect(e2) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c82878489.eqlimit) - c:RegisterEffect(e4) -end -function c82878489.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_LIGHT) -end -function c82878489.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) -end -function c82878489.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c82878489.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c82878489.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c82878489.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c82878489.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 diff --git a/script/c82944432.lua b/script/c82944432.lua index b5668a42..4df1509e 100644 --- a/script/c82944432.lua +++ b/script/c82944432.lua @@ -6,7 +6,7 @@ function c82944432.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(82944432,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c82956492.lua b/script/c82956492.lua index 6821cc39..ad2b7400 100644 --- a/script/c82956492.lua +++ b/script/c82956492.lua @@ -1,18 +1,18 @@ ---DDD神託王ダルク -function c82956492.initial_effect(c) - --fustion material - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xaf),2,true) - c:EnableReviveLimit() - --damage conversion - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_REVERSE_DAMAGE) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,0) - e2:SetValue(c82956492.rev) - c:RegisterEffect(e2) -end -function c82956492.rev(e,re,r,rp,rc) - return bit.band(r,REASON_EFFECT)~=0 -end +--DDD神託王ダルク +function c82956492.initial_effect(c) + --fustion material + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xaf),2,true) + c:EnableReviveLimit() + --damage conversion + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_REVERSE_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(c82956492.rev) + c:RegisterEffect(e2) +end +function c82956492.rev(e,re,r,rp,rc) + return bit.band(r,REASON_EFFECT)~=0 +end diff --git a/script/c82962242.lua b/script/c82962242.lua index 6cde0017..3df1fd7a 100644 --- a/script/c82962242.lua +++ b/script/c82962242.lua @@ -1,112 +1,112 @@ ---ヴァンプ・オブ・ヴァンパイア -function c82962242.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(82962242,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e1:SetTarget(c82962242.eqtg) - e1:SetOperation(c82962242.eqop) - c:RegisterEffect(e1) - --equip - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(82962242,1)) - e2:SetCategory(CATEGORY_EQUIP) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e2:SetCondition(c82962242.eqcon) - e2:SetTarget(c82962242.eqtg) - e2:SetOperation(c82962242.eqop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_LEAVE_FIELD_P) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetOperation(c82962242.checkop) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(82962242,2)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetCondition(c82962242.spcon) - e4:SetTarget(c82962242.sptg) - e4:SetOperation(c82962242.spop) - c:RegisterEffect(e4) - e3:SetLabelObject(e4) -end -function c82962242.cfilter(c,tp) - return c:IsFaceup() and c:IsSetCard(0x8e) and c:IsControler(tp) -end -function c82962242.eqcon(e,tp,eg,ep,ev,re,r,rp) - return not eg:IsContains(e:GetHandler()) and eg:IsExists(c82962242.cfilter,1,nil,tp) -end -function c82962242.eqfilter(c,atk) - return c:IsFaceup() and c:GetAttack()>atk and c:IsAbleToChangeControler() -end -function c82962242.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c82962242.eqfilter(chkc,e:GetHandler():GetAttack()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c82962242.eqfilter,tp,0,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c82962242.eqfilter,tp,0,LOCATION_MZONE,1,1,nil,e:GetHandler():GetAttack()) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c82962242.eqop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or not tc:IsType(TYPE_MONSTER) then return end - if c:IsFaceup() and c:IsRelateToEffect(e) then - local atk=tc:GetTextAttack() - if tc:IsFacedown() or atk<0 then atk=0 end - if Duel.Equip(tp,tc,c)==0 then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_EQUIP) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EQUIP_LIMIT) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetValue(c82962242.eqlimit) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - tc:RegisterFlagEffect(82962242,RESET_EVENT+0x1fe0000,0,1) - else Duel.SendtoGrave(tc,REASON_EFFECT) end -end -function c82962242.eqlimit(e,c) - return e:GetOwner()==c and not c:IsDisabled() -end -function c82962242.spfilter(c) - return c:GetFlagEffect(82962242)~=0 -end -function c82962242.checkop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():GetEquipGroup():IsExists(c82962242.spfilter,1,nil) then - e:GetLabelObject():SetLabel(1) - else - e:GetLabelObject():SetLabel(0) - end -end -function c82962242.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetLabel()==1 and e:GetHandler():IsPreviousLocation(LOCATION_MZONE) -end -function c82962242.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c82962242.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end +--ヴァンプ・オブ・ヴァンパイア +function c82962242.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(82962242,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e1:SetTarget(c82962242.eqtg) + e1:SetOperation(c82962242.eqop) + c:RegisterEffect(e1) + --equip + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(82962242,1)) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCondition(c82962242.eqcon) + e2:SetTarget(c82962242.eqtg) + e2:SetOperation(c82962242.eqop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_LEAVE_FIELD_P) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c82962242.checkop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(82962242,2)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c82962242.spcon) + e4:SetTarget(c82962242.sptg) + e4:SetOperation(c82962242.spop) + c:RegisterEffect(e4) + e3:SetLabelObject(e4) +end +function c82962242.cfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x8e) and c:IsControler(tp) +end +function c82962242.eqcon(e,tp,eg,ep,ev,re,r,rp) + return not eg:IsContains(e:GetHandler()) and eg:IsExists(c82962242.cfilter,1,nil,tp) +end +function c82962242.eqfilter(c,atk) + return c:IsFaceup() and c:GetAttack()>atk and c:IsAbleToChangeControler() +end +function c82962242.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c82962242.eqfilter(chkc,e:GetHandler():GetAttack()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c82962242.eqfilter,tp,0,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c82962242.eqfilter,tp,0,LOCATION_MZONE,1,1,nil,e:GetHandler():GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c82962242.eqop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or not tc:IsType(TYPE_MONSTER) then return end + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + if tc:IsFacedown() or atk<0 then atk=0 end + if Duel.Equip(tp,tc,c)==0 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_EQUIP) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EQUIP_LIMIT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(c82962242.eqlimit) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(82962242,RESET_EVENT+0x1fe0000,0,1) + else Duel.SendtoGrave(tc,REASON_EFFECT) end +end +function c82962242.eqlimit(e,c) + return e:GetOwner()==c and not c:IsDisabled() +end +function c82962242.spfilter(c) + return c:GetFlagEffect(82962242)~=0 +end +function c82962242.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetEquipGroup():IsExists(c82962242.spfilter,1,nil) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end +function c82962242.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetLabel()==1 and e:GetHandler():IsPreviousLocation(LOCATION_MZONE) +end +function c82962242.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c82962242.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c82971335.lua b/script/c82971335.lua index 9e7c9d47..1cbbfe63 100644 --- a/script/c82971335.lua +++ b/script/c82971335.lua @@ -1,60 +1,60 @@ ---フォーチュンレディ・アーシー -function c82971335.initial_effect(c) - --atk,def - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(c82971335.value) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e2) - --level up - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(82971335,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCondition(c82971335.lvcon) - e3:SetOperation(c82971335.lvop) - c:RegisterEffect(e3) - --damage - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(82971335,1)) - e4:SetCategory(CATEGORY_DAMAGE) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetCode(EVENT_LEVEL_UP) - e4:SetTarget(c82971335.damtg) - e4:SetOperation(c82971335.damop) - c:RegisterEffect(e4) -end -function c82971335.value(e,c) - return c:GetLevel()*400 -end -function c82971335.lvcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) -end -function c82971335.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) -end -function c82971335.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(400) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) -end -function c82971335.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--フォーチュンレディ・アーシー +function c82971335.initial_effect(c) + --atk,def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(c82971335.value) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE) + c:RegisterEffect(e2) + --level up + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(82971335,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCondition(c82971335.lvcon) + e3:SetOperation(c82971335.lvop) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(82971335,1)) + e4:SetCategory(CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EVENT_LEVEL_UP) + e4:SetTarget(c82971335.damtg) + e4:SetOperation(c82971335.damop) + c:RegisterEffect(e4) +end +function c82971335.value(e,c) + return c:GetLevel()*400 +end +function c82971335.lvcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetHandler():IsLevelAbove(1) and e:GetHandler():IsLevelBelow(11) +end +function c82971335.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsLevelAbove(12) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) +end +function c82971335.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(400) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,400) +end +function c82971335.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c82994509.lua b/script/c82994509.lua index 42b7e8b5..e60855ce 100644 --- a/script/c82994509.lua +++ b/script/c82994509.lua @@ -1,42 +1,42 @@ ---ツクシー -function c82994509.initial_effect(c) - --token - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(82994509,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetCondition(c82994509.condition) - e1:SetTarget(c82994509.target) - e1:SetOperation(c82994509.operation) - c:RegisterEffect(e1) -end -function c82994509.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c82994509.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c82994509.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end - if not Duel.IsPlayerCanSpecialSummonMonster(tp,82994510,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_WIND,POS_FACEUP_DEFENSE,1-tp) then return end - local token=Duel.CreateToken(tp,82994510) - if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_LEAVE_FIELD) - e1:SetOperation(c82994509.handop) - token:RegisterEffect(e1,true) - end - Duel.SpecialSummonComplete() -end -function c82994509.handop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsReason(REASON_BATTLE) and c:GetBattleTarget():IsRace(RACE_PLANT) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - Duel.DiscardHand(c:GetPreviousControler(),nil,1,1,REASON_EFFECT) - end - e:Reset() -end +--ツクシー +function c82994509.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(82994509,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c82994509.condition) + e1:SetTarget(c82994509.target) + e1:SetOperation(c82994509.operation) + c:RegisterEffect(e1) +end +function c82994509.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c82994509.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c82994509.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,82994510,0,0x4011,0,0,1,RACE_PLANT,ATTRIBUTE_WIND,POS_FACEUP_DEFENSE,1-tp) then return end + local token=Duel.CreateToken(tp,82994510) + if Duel.SpecialSummonStep(token,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_LEAVE_FIELD) + e1:SetOperation(c82994509.handop) + token:RegisterEffect(e1,true) + end + Duel.SpecialSummonComplete() +end +function c82994509.handop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsReason(REASON_BATTLE) and c:GetBattleTarget():IsRace(RACE_PLANT) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + Duel.DiscardHand(c:GetPreviousControler(),nil,1,1,REASON_EFFECT) + end + e:Reset() +end diff --git a/script/c82999629.lua b/script/c82999629.lua index 3ecca489..034eb664 100644 --- a/script/c82999629.lua +++ b/script/c82999629.lua @@ -1,22 +1,22 @@ ---ウォーターワールド -function c82999629.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) - e2:SetValue(500) - c:RegisterEffect(e2) - --Def down - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetValue(-400) - c:RegisterEffect(e3) -end +--ウォーターワールド +function c82999629.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e2:SetValue(500) + c:RegisterEffect(e2) + --Def down + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetValue(-400) + c:RegisterEffect(e3) +end diff --git a/script/c83048208.lua b/script/c83048208.lua new file mode 100644 index 00000000..e6073e03 --- /dev/null +++ b/script/c83048208.lua @@ -0,0 +1,80 @@ +--電子光虫-LEDバグ +--Digital Bug - LED Bug +--Scripted by Eerie Code +function c83048208.initial_effect(c) + --xyzlimit + local e0=Effect.CreateEffect(c) + e0:SetType(EFFECT_TYPE_SINGLE) + e0:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e0:SetValue(c83048208.xyzlimit) + c:RegisterEffect(e0) + --Search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(83048208,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_CHANGE_POS) + e1:SetCountLimit(1) + e1:SetCondition(c83048208.thcon) + e1:SetTarget(c83048208.thtg) + e1:SetOperation(c83048208.thop) + c:RegisterEffect(e1) + --effect gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c83048208.efcon) + e2:SetOperation(c83048208.efop) + c:RegisterEffect(e2) +end +function c83048208.xyzlimit(e,c) + if not c then return false end + return not c:IsRace(RACE_INSECT) +end +function c83048208.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return not c:IsStatus(STATUS_CONTINUOUS_POS) and c:IsPosition(POS_FACEUP_DEFENSE) and c:IsPreviousPosition(POS_FACEUP_ATTACK) +end +function c83048208.thfilter(c) + return c:IsRace(RACE_INSECT) and c:GetLevel()==3 and c:IsAbleToHand() +end +function c83048208.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c83048208.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c83048208.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c83048208.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c83048208.efcon(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_XYZ +end +function c83048208.efop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(83048208,1)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) + e1:SetOperation(c83048208.drop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c83048208.drop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,83048208) + Duel.Draw(tp,1,REASON_EFFECT) +end diff --git a/script/c83104731.lua b/script/c83104731.lua index 191bd7a5..ccc8ab8e 100644 --- a/script/c83104731.lua +++ b/script/c83104731.lua @@ -13,21 +13,18 @@ function c83104731.initial_effect(c) c:RegisterEffect(e2) --actlimit local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetOperation(c83104731.atkop) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetValue(c83104731.aclimit) + e3:SetCondition(c83104731.actcon) c:RegisterEffect(e3) end -function c83104731.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c83104731.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end function c83104731.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c83104731.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end diff --git a/script/c83121692.lua b/script/c83121692.lua index 3ad46c19..e5e4a4d1 100644 --- a/script/c83121692.lua +++ b/script/c83121692.lua @@ -1,65 +1,66 @@ ---E・HERO テンペスター -function c83121692.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode3(c,21844576,20721928,79979666,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --set target - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(83121692,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCost(c83121692.cost) - e1:SetTarget(c83121692.target) - e1:SetOperation(c83121692.operation) - c:RegisterEffect(e1) -end -function c83121692.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) - Duel.SendtoGrave(g,REASON_COST) -end -function c83121692.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) end - if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) -end -function c83121692.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - if not tc:IsRelateToEffect(e) then return end - if c==tc then - tc:RegisterFlagEffect(83121692,RESET_EVENT+0x1fe0000,0,0) - else - c:SetCardTarget(tc) - end - if c:GetFlagEffect(83121693)==0 then - c:RegisterFlagEffect(83121693,RESET_EVENT+0x1fe0000,0,0) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetTarget(c83121692.indtg) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - end -end -function c83121692.indtg(e,c) - if c==e:GetHandler() then - return c:GetFlagEffect(83121692)~=0 - else - return e:GetHandler():IsHasCardTarget(c) - end -end +--E・HERO テンペスター +function c83121692.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode3(c,21844576,20721928,79979666,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --set target + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(83121692,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c83121692.cost) + e1:SetTarget(c83121692.target) + e1:SetOperation(c83121692.operation) + c:RegisterEffect(e1) +end +c83121692.material_setcode=0x8 +function c83121692.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToGraveAsCost,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.SendtoGrave(g,REASON_COST) +end +function c83121692.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,0,1,1,nil) +end +function c83121692.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + if not tc:IsRelateToEffect(e) then return end + if c==tc then + tc:RegisterFlagEffect(83121692,RESET_EVENT+0x1fe0000,0,0) + else + c:SetCardTarget(tc) + end + if c:GetFlagEffect(83121693)==0 then + c:RegisterFlagEffect(83121693,RESET_EVENT+0x1fe0000,0,0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c83121692.indtg) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + end +end +function c83121692.indtg(e,c) + if c==e:GetHandler() then + return c:GetFlagEffect(83121692)~=0 + else + return e:GetHandler():IsHasCardTarget(c) + end +end diff --git a/script/c8316565.lua b/script/c8316565.lua index 5fd4831c..048744e3 100644 --- a/script/c8316565.lua +++ b/script/c8316565.lua @@ -27,8 +27,7 @@ function c8316565.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c8316565.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c83190280.lua b/script/c83190280.lua index c58c7291..95be5938 100644 --- a/script/c83190280.lua +++ b/script/c83190280.lua @@ -40,6 +40,7 @@ function c83190280.spop(e,tp,eg,ep,ev,re,r,rp) if not c:IsRelateToEffect(e) then return end local tc=Duel.GetFirstTarget() if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local fid=c:GetFieldID() local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_DISABLE) @@ -58,12 +59,13 @@ function c83190280.spop(e,tp,eg,ep,ev,re,r,rp) e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetReset(RESET_EVENT+0x1fe0000) tc:RegisterEffect(e3) - tc:RegisterFlagEffect(83190280,RESET_EVENT+0x1fe0000,0,1) + tc:RegisterFlagEffect(83190280,RESET_EVENT+0x1fe0000,0,1,fid) local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e4:SetCode(EVENT_PHASE+PHASE_END) e4:SetCountLimit(1) e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e4:SetLabel(fid) e4:SetLabelObject(tc) e4:SetCondition(c83190280.descon) e4:SetOperation(c83190280.desop) @@ -73,7 +75,7 @@ function c83190280.spop(e,tp,eg,ep,ev,re,r,rp) end function c83190280.descon(e,tp,eg,ep,ev,re,r,rp) local tc=e:GetLabelObject() - if tc:GetFlagEffect(83190280)~=0 then + if tc:GetFlagEffectLabel(83190280)==e:GetLabel() then return true else e:Reset() diff --git a/script/c8321183.lua b/script/c8321183.lua new file mode 100644 index 00000000..595e6342 --- /dev/null +++ b/script/c8321183.lua @@ -0,0 +1,39 @@ +--霊獣の誓還 +function c8321183.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c8321183.cost) + e1:SetTarget(c8321183.target) + e1:SetOperation(c8321183.activate) + c:RegisterEffect(e1) +end +function c8321183.cfilter(c) + return c:IsSetCard(0xb5) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c8321183.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c8321183.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c8321183.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c8321183.filter(c,e,tp) + return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsSetCard(0xb5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c8321183.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and c8321183.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c8321183.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c8321183.filter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c8321183.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c83225447.lua b/script/c83225447.lua index 2eeac63a..b08d639a 100644 --- a/script/c83225447.lua +++ b/script/c83225447.lua @@ -1,14 +1,6 @@ --ドーピング function c83225447.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(c83225447.target) - e1:SetOperation(c83225447.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -26,26 +18,6 @@ function c83225447.initial_effect(c) e3:SetCondition(c83225447.atkcon) e3:SetOperation(c83225447.atkop) c:RegisterEffect(e3) - --equip limit - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_EQUIP_LIMIT) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e5:SetValue(1) - c:RegisterEffect(e5) -end -function c83225447.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 c83225447.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 c83225447.atkcon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp diff --git a/script/c83236601.lua b/script/c83236601.lua index ba544611..2011c8ff 100644 --- a/script/c83236601.lua +++ b/script/c83236601.lua @@ -1,95 +1,95 @@ ---RR-トリビュート・レイニアス -function c83236601.initial_effect(c) - --tograve - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(83236601,0)) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,83236601) - e1:SetCondition(c83236601.tgcon) - e1:SetTarget(c83236601.tgtg) - e1:SetOperation(c83236601.tgop) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetOperation(c83236601.regop) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(83236601,1)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,83236602) - e3:SetCondition(c83236601.thcon) - e3:SetTarget(c83236601.thtg) - e3:SetOperation(c83236601.thop) - c:RegisterEffect(e3) - if not c83236601.global_check then - c83236601.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SUMMON_SUCCESS) - ge1:SetLabel(83236601) - ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - ge1:SetOperation(aux.sumreg) - Duel.RegisterEffect(ge1,0) - local ge2=ge1:Clone() - ge2:SetCode(EVENT_SPSUMMON_SUCCESS) - ge2:SetLabel(83236601) - Duel.RegisterEffect(ge2,0) - end -end -function c83236601.tgcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(83236601)>0 -end -function c83236601.tgfilter(c) - return c:IsSetCard(0xba) and c:IsAbleToGrave() -end -function c83236601.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c83236601.tgfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c83236601.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c83236601.tgfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end -function c83236601.regop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(83236602,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c83236601.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(83236602)>0 and Duel.GetCurrentPhase()==PHASE_MAIN2 -end -function c83236601.filter(c) - return c:IsSetCard(0x95) and c:GetType()==TYPE_SPELL+TYPE_QUICKPLAY and c:IsAbleToHand() -end -function c83236601.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c83236601.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c83236601.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c83236601.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetTargetRange(1,0) - e1:SetTarget(c83236601.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c83236601.splimit(e,c) - return not c:IsSetCard(0xba) -end +--RR-トリビュート・レイニアス +function c83236601.initial_effect(c) + --tograve + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(83236601,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,83236601) + e1:SetCondition(c83236601.tgcon) + e1:SetTarget(c83236601.tgtg) + e1:SetOperation(c83236601.tgop) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetOperation(c83236601.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(83236601,1)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,83236602) + e3:SetCondition(c83236601.thcon) + e3:SetTarget(c83236601.thtg) + e3:SetOperation(c83236601.thop) + c:RegisterEffect(e3) + if not c83236601.global_check then + c83236601.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(83236601) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(83236601) + Duel.RegisterEffect(ge2,0) + end +end +function c83236601.tgcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(83236601)>0 +end +function c83236601.tgfilter(c) + return c:IsSetCard(0xba) and c:IsAbleToGrave() +end +function c83236601.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c83236601.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c83236601.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c83236601.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c83236601.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(83236602,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c83236601.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(83236602)>0 and Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c83236601.filter(c) + return c:IsSetCard(0x95) and c:GetType()==TYPE_SPELL+TYPE_QUICKPLAY and c:IsAbleToHand() +end +function c83236601.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c83236601.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c83236601.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c83236601.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetTargetRange(1,0) + e1:SetTarget(c83236601.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c83236601.splimit(e,c) + return not c:IsSetCard(0xba) +end diff --git a/script/c83266092.lua b/script/c83266092.lua index 4f12c3ad..0229c7d6 100644 --- a/script/c83266092.lua +++ b/script/c83266092.lua @@ -1,28 +1,28 @@ ---超古代生物の墓場 -function c83266092.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x28) - c:RegisterEffect(e1) - --cannot attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c83266092.target) - c:RegisterEffect(e2) - --cannot trigger - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_TRIGGER) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(c83266092.target) - c:RegisterEffect(e3) -end -function c83266092.target(e,c) - return c:GetLevel()>=6 and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 -end +--超古代生物の墓場 +function c83266092.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x28) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c83266092.target) + c:RegisterEffect(e2) + --cannot trigger + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_TRIGGER) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c83266092.target) + c:RegisterEffect(e3) +end +function c83266092.target(e,c) + return c:GetLevel()>=6 and bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)~=0 +end diff --git a/script/c83272895.lua b/script/c83272895.lua index 800ff52e..c7547837 100644 --- a/script/c83272895.lua +++ b/script/c83272895.lua @@ -20,7 +20,7 @@ function c83272895.efop(e,tp,eg,ep,ev,re,r,rp) e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) e1:SetCode(EFFECT_PIERCE) e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1) + rc:RegisterEffect(e1,true) if not rc:IsType(TYPE_EFFECT) then local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE) diff --git a/script/c83283063.lua b/script/c83283063.lua index 003cb5e0..f9f83648 100644 --- a/script/c83283063.lua +++ b/script/c83283063.lua @@ -1,70 +1,70 @@ ---戦神-不知火 -function c83283063.initial_effect(c) - c:SetSPSummonOnce(83283063) - --synchro summon - aux.AddSynchroProcedure(c,c83283063.synfilter,aux.NonTuner(c83283063.synfilter),1) - c:EnableReviveLimit() - -- - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(83283063,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCost(c83283063.cost) - e1:SetOperation(c83283063.operation) - c:RegisterEffect(e1) - --add to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(83283063,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c83283063.tgcon) - e2:SetTarget(c83283063.tgtg) - e2:SetOperation(c83283063.tgop) - c:RegisterEffect(e2) -end -function c83283063.synfilter(c) - return c:IsRace(RACE_ZOMBIE) -end -function c83283063.cfilter(c) - return c:IsRace(RACE_ZOMBIE) and c:GetBaseAttack()>0 and c:IsAbleToRemoveAsCost() -end -function c83283063.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c83283063.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c83283063.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) - e:SetLabel(g:GetFirst():GetBaseAttack()) -end -function c83283063.operation(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:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(e:GetLabel()) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end -function c83283063.tgcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) -end -function c83283063.filter(c) - return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and c:GetDefense()==0 -end -function c83283063.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c83283063.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c83283063.filter,tp,LOCATION_REMOVED,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,c83283063.filter,tp,LOCATION_REMOVED,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) -end -function c83283063.tgop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) - end -end +--戦神-不知火 +function c83283063.initial_effect(c) + c:SetSPSummonOnce(83283063) + --synchro summon + aux.AddSynchroProcedure(c,c83283063.synfilter,aux.NonTuner(c83283063.synfilter),1) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(83283063,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCost(c83283063.cost) + e1:SetOperation(c83283063.operation) + c:RegisterEffect(e1) + --add to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(83283063,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c83283063.tgcon) + e2:SetTarget(c83283063.tgtg) + e2:SetOperation(c83283063.tgop) + c:RegisterEffect(e2) +end +function c83283063.synfilter(c) + return c:IsRace(RACE_ZOMBIE) +end +function c83283063.cfilter(c) + return c:IsRace(RACE_ZOMBIE) and c:GetBaseAttack()>0 and c:IsAbleToRemoveAsCost() +end +function c83283063.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c83283063.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c83283063.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(g:GetFirst():GetBaseAttack()) +end +function c83283063.operation(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:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(e:GetLabel()) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c83283063.tgcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c83283063.filter(c) + return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and c:GetDefense()==0 +end +function c83283063.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and c83283063.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c83283063.filter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c83283063.filter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) +end +function c83283063.tgop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoGrave(tc,REASON_EFFECT+REASON_RETURN) + end +end diff --git a/script/c83303851.lua b/script/c83303851.lua index c5bf493d..e55dcc64 100644 --- a/script/c83303851.lua +++ b/script/c83303851.lua @@ -1,102 +1,102 @@ ---DDD極智王カオス・アポカリプス -function c83303851.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(83303851,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_PZONE) - e1:SetCost(c83303851.spcost) - e1:SetTarget(c83303851.sptg) - e1:SetOperation(c83303851.spop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(83303851,1)) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCountLimit(1,83303851) - e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e2:SetCondition(c83303851.descon) - e2:SetTarget(c83303851.destg) - e2:SetOperation(c83303851.desop) - c:RegisterEffect(e2) -end -function c83303851.cfilter(c) - return c:IsSetCard(0xaf) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c83303851.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c83303851.cfilter,tp,LOCATION_GRAVE,0,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c83303851.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c83303851.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c83303851.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c83303851.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c83303851.filter(c) - return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c83303851.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local c=e:GetHandler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local ct=-ft+1 - if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c83303851.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c83303851.filter,tp,LOCATION_ONFIELD,0,2,nil) - and ct<=2 and (ct<=0 or Duel.IsExistingTarget(c83303851.filter,tp,LOCATION_MZONE,0,ct,nil)) - and not c:IsStatus(STATUS_CHAINING) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=nil - if ct<=0 then - g=Duel.SelectTarget(tp,c83303851.filter,tp,LOCATION_ONFIELD,0,2,2,nil) - elseif ct==1 then - g=Duel.SelectTarget(tp,c83303851.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g2=Duel.SelectTarget(tp,c83303851.filter,tp,LOCATION_ONFIELD,0,1,1,g:GetFirst()) - g:Merge(g2) - else - g=Duel.SelectTarget(tp,c83303851.filter,tp,LOCATION_MZONE,0,2,2,nil) - end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c83303851.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c83303851.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)~=0 then - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end - end -end -function c83303851.splimit(e,c) - return c:GetRace()~=RACE_FIEND -end +--DDD極智王カオス・アポカリプス +function c83303851.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(83303851,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCost(c83303851.spcost) + e1:SetTarget(c83303851.sptg) + e1:SetOperation(c83303851.spop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(83303851,1)) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCountLimit(1,83303851) + e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e2:SetCondition(c83303851.descon) + e2:SetTarget(c83303851.destg) + e2:SetOperation(c83303851.desop) + c:RegisterEffect(e2) +end +function c83303851.cfilter(c) + return c:IsSetCard(0xaf) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c83303851.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c83303851.cfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c83303851.cfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c83303851.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c83303851.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c83303851.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c83303851.filter(c) + return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c83303851.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and c83303851.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c83303851.filter,tp,LOCATION_ONFIELD,0,2,nil) + and ct<=2 and (ct<=0 or Duel.IsExistingTarget(c83303851.filter,tp,LOCATION_MZONE,0,ct,nil)) + and not c:IsStatus(STATUS_CHAINING) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=nil + if ct<=0 then + g=Duel.SelectTarget(tp,c83303851.filter,tp,LOCATION_ONFIELD,0,2,2,nil) + elseif ct==1 then + g=Duel.SelectTarget(tp,c83303851.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,c83303851.filter,tp,LOCATION_ONFIELD,0,1,1,g:GetFirst()) + g:Merge(g2) + else + g=Duel.SelectTarget(tp,c83303851.filter,tp,LOCATION_MZONE,0,2,2,nil) + end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c83303851.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c83303851.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 and Duel.Destroy(g,REASON_EFFECT)~=0 then + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end + end +end +function c83303851.splimit(e,c) + return c:GetRace()~=RACE_FIEND +end diff --git a/script/c83319610.lua b/script/c83319610.lua index 9b1de020..91c876e6 100644 --- a/script/c83319610.lua +++ b/script/c83319610.lua @@ -1,115 +1,115 @@ ---発条の巻き上げ -function c83319610.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c83319610.mttg1) - e1:SetOperation(c83319610.mtop) - c:RegisterEffect(e1) - --material - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(83319610,0)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCost(c83319610.mtcost) - e2:SetTarget(c83319610.mttg2) - e2:SetOperation(c83319610.mtop) - e2:SetLabel(1) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(83319610,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetRange(LOCATION_SZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetCost(c83319610.spcost) - e3:SetTarget(c83319610.sptg) - e3:SetOperation(c83319610.spop) - c:RegisterEffect(e3) -end -function c83319610.filter1(c,e,tp) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsRace(RACE_MACHINE) - and Duel.IsExistingMatchingCard(c83319610.filter2,tp,LOCATION_HAND+LOCATION_MZONE,0,1,c,e) -end -function c83319610.filter2(c,e) - return c:IsSetCard(0x58) and c:IsType(TYPE_MONSTER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and not c:IsImmuneToEffect(e) -end -function c83319610.mttg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c83319610.filter1(chkc,e,tp) end - if chk==0 then return true end - if Duel.IsExistingTarget(c83319610.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) - and Duel.SelectYesNo(tp,aux.Stringid(83319610,2)) then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - e:GetHandler():RegisterFlagEffect(83319610,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c83319610.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - e:SetLabel(1) - else - e:SetProperty(0) - e:SetLabel(0) - end -end -function c83319610.mtcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(83319610)==0 end - e:GetHandler():RegisterFlagEffect(83319610,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c83319610.mttg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c83319610.filter1(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c83319610.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c83319610.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) -end -function c83319610.mtop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local g=Duel.SelectMatchingCard(tp,c83319610.filter2,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,tc,e) - if g:GetCount()>0 then - Duel.Overlay(tc,g) - end -end -function c83319610.spfilter1(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x58) and c:IsType(TYPE_XYZ) - and Duel.IsExistingMatchingCard(c83319610.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+1) -end -function c83319610.spfilter2(c,e,tp,mc,rk) - return c:GetRank()==rk and c:IsSetCard(0x58) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c83319610.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c83319610.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c83319610.spfilter1(chkc,e,tp) end - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c83319610.spfilter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c83319610.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c83319610.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c83319610.spfilter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) - local sc=g:GetFirst() - if sc then - local mg=tc:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end -end +--発条の巻き上げ +function c83319610.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c83319610.mttg1) + e1:SetOperation(c83319610.mtop) + c:RegisterEffect(e1) + --material + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(83319610,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCost(c83319610.mtcost) + e2:SetTarget(c83319610.mttg2) + e2:SetOperation(c83319610.mtop) + e2:SetLabel(1) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(83319610,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetCost(c83319610.spcost) + e3:SetTarget(c83319610.sptg) + e3:SetOperation(c83319610.spop) + c:RegisterEffect(e3) +end +function c83319610.filter1(c,e,tp) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsRace(RACE_MACHINE) + and Duel.IsExistingMatchingCard(c83319610.filter2,tp,LOCATION_HAND+LOCATION_MZONE,0,1,c,e) +end +function c83319610.filter2(c,e) + return c:IsSetCard(0x58) and c:IsType(TYPE_MONSTER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and not c:IsImmuneToEffect(e) +end +function c83319610.mttg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c83319610.filter1(chkc,e,tp) end + if chk==0 then return true end + if Duel.IsExistingTarget(c83319610.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) + and Duel.SelectYesNo(tp,aux.Stringid(83319610,2)) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:GetHandler():RegisterFlagEffect(83319610,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c83319610.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + e:SetLabel(1) + else + e:SetProperty(0) + e:SetLabel(0) + end +end +function c83319610.mtcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(83319610)==0 end + e:GetHandler():RegisterFlagEffect(83319610,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c83319610.mttg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c83319610.filter1(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c83319610.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c83319610.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) +end +function c83319610.mtop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local g=Duel.SelectMatchingCard(tp,c83319610.filter2,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,tc,e) + if g:GetCount()>0 then + Duel.Overlay(tc,g) + end +end +function c83319610.spfilter1(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x58) and c:IsType(TYPE_XYZ) + and Duel.IsExistingMatchingCard(c83319610.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+1) +end +function c83319610.spfilter2(c,e,tp,mc,rk) + return c:GetRank()==rk and c:IsSetCard(0x58) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c83319610.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c83319610.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c83319610.spfilter1(chkc,e,tp) end + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c83319610.spfilter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c83319610.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c83319610.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c83319610.spfilter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c8339504.lua b/script/c8339504.lua index f9d046dd..5c01a1d9 100644 --- a/script/c8339504.lua +++ b/script/c8339504.lua @@ -1,70 +1,79 @@ ---エクシーズ・シフト -function c8339504.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,8339504+EFFECT_COUNT_CODE_OATH) - e1:SetLabel(0) - e1:SetCost(c8339504.cost) - e1:SetTarget(c8339504.target) - e1:SetOperation(c8339504.activate) - c:RegisterEffect(e1) -end -function c8339504.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(100) - if chk==0 then return true end -end -function c8339504.cfilter(c,e,tp) - local rk=c:GetRank() - return rk>0 and Duel.IsExistingMatchingCard(c8339504.spfilter1,tp,LOCATION_EXTRA,0,1,nil,c,e,tp) -end -function c8339504.spfilter1(c,tc,e,tp) - return c:GetRank()==tc:GetRank() and c:IsRace(tc:GetRace()) and c:IsAttribute(tc:GetAttribute()) - and not c:IsCode(tc:GetCode()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c8339504.spfilter2(c,tc,e,tp) - return c:GetRank()==tc:GetPreviousRankOnField() and c:IsRace(tc:GetPreviousRaceOnField()) and c:IsAttribute(tc:GetPreviousAttributeOnField()) - and not c:IsCode(tc:GetPreviousCodeOnField()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c8339504.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if e:GetLabel()~=100 then return false end - e:SetLabel(0) - return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.CheckReleaseGroup(tp,c8339504.cfilter,1,nil,e,tp) - end - e:SetLabel(0) - local g=Duel.SelectReleaseGroup(tp,c8339504.cfilter,1,1,nil,e,tp) - Duel.Release(g,REASON_COST) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c8339504.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c8339504.spfilter2,tp,LOCATION_EXTRA,0,1,1,nil,tc,e,tp) - local sc=g:GetFirst() - if sc then - Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) - if c:IsRelateToEffect(e) then - c:CancelToGrave() - Duel.Overlay(sc,Group.FromCards(c)) - end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetOperation(c8339504.tgop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - sc:RegisterEffect(e1) - end -end -function c8339504.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT) -end +--エクシーズ・シフト +function c8339504.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,8339504+EFFECT_COUNT_CODE_OATH) + e1:SetLabel(0) + e1:SetCost(c8339504.cost) + e1:SetTarget(c8339504.target) + e1:SetOperation(c8339504.activate) + c:RegisterEffect(e1) +end +function c8339504.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(100) + if chk==0 then return true end +end +function c8339504.cfilter(c,e,tp) + local rk=c:GetRank() + return rk>0 and Duel.IsExistingMatchingCard(c8339504.spfilter1,tp,LOCATION_EXTRA,0,1,nil,c,e,tp) +end +function c8339504.spfilter1(c,tc,e,tp) + return c:GetRank()==tc:GetRank() and c:IsRace(tc:GetRace()) and c:IsAttribute(tc:GetAttribute()) + and not c:IsCode(tc:GetCode()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c8339504.spfilter2(c,tc,e,tp) + return c:GetRank()==tc:GetPreviousRankOnField() and c:IsRace(tc:GetPreviousRaceOnField()) and c:IsAttribute(tc:GetPreviousAttributeOnField()) + and not c:IsCode(tc:GetPreviousCodeOnField()) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c8339504.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=100 then return false end + e:SetLabel(0) + return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.CheckReleaseGroup(tp,c8339504.cfilter,1,nil,e,tp) + end + e:SetLabel(0) + local g=Duel.SelectReleaseGroup(tp,c8339504.cfilter,1,1,nil,e,tp) + Duel.Release(g,REASON_COST) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c8339504.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c8339504.spfilter2,tp,LOCATION_EXTRA,0,1,1,nil,tc,e,tp) + local sc=g:GetFirst() + if sc and Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP)~=0 then + if c:IsRelateToEffect(e) then + c:CancelToGrave() + Duel.Overlay(sc,Group.FromCards(c)) + end + local fid=c:GetFieldID() + sc:RegisterFlagEffect(8339504,RESET_EVENT+0x1fe0000,0,1,fid) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(sc) + e1:SetCondition(c8339504.tgcon) + e1:SetOperation(c8339504.tgop) + Duel.RegisterEffect(e1,tp) + end +end +function c8339504.tgcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(8339504)~=e:GetLabel() then + e:Reset() + return false + else return true end +end +function c8339504.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoGrave(e:GetLabelObject(),REASON_EFFECT) +end diff --git a/script/c83438826.lua b/script/c83438826.lua index 60578ca5..6f07205a 100644 --- a/script/c83438826.lua +++ b/script/c83438826.lua @@ -1,22 +1,7 @@ --聖剣アロンダイト function c83438826.initial_effect(c) c:SetUniqueOnField(1,0,83438826) - --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(c83438826.target) - e1:SetOperation(c83438826.operation) - c:RegisterEffect(e1) - --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(c83438826.eqlimit) - c:RegisterEffect(e3) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR)) --destroy local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(83438826,0)) @@ -41,19 +26,6 @@ function c83438826.initial_effect(c) e5:SetOperation(c83438826.operation) c:RegisterEffect(e5) end -function c83438826.eqlimit(e,c) - return c:IsRace(RACE_WARRIOR) -end -function c83438826.eqfilter1(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c83438826.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c83438826.eqfilter1(chkc) end - if chk==0 then return Duel.IsExistingTarget(c83438826.eqfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c83438826.eqfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end function c83438826.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local tc=Duel.GetFirstTarget() diff --git a/script/c83461421.lua b/script/c83461421.lua index a78c9ffd..ec812d2e 100644 --- a/script/c83461421.lua +++ b/script/c83461421.lua @@ -1,35 +1,35 @@ ---ペンデュラム・ストーム -function c83461421.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c83461421.target) - e1:SetOperation(c83461421.activate) - c:RegisterEffect(e1) -end -function c83461421.filter(c) - return (c:GetSequence()==6 or c:GetSequence()==7) -end -function c83461421.filter2(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c83461421.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c83461421.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end - local g=Duel.GetMatchingGroup(c83461421.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c83461421.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c83461421.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) - if Duel.Destroy(g,REASON_EFFECT)~=0 then - local dg=Duel.GetMatchingGroup(c83461421.filter2,tp,0,LOCATION_ONFIELD,nil) - if dg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(83461421,0)) then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local sg=dg:Select(tp,1,1,nil) - Duel.HintSelection(sg) - Duel.Destroy(sg,REASON_EFFECT) - end - end -end +--ペンデュラム・ストーム +function c83461421.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c83461421.target) + e1:SetOperation(c83461421.activate) + c:RegisterEffect(e1) +end +function c83461421.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) +end +function c83461421.filter2(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c83461421.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c83461421.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + local g=Duel.GetMatchingGroup(c83461421.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c83461421.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c83461421.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + if Duel.Destroy(g,REASON_EFFECT)~=0 then + local dg=Duel.GetMatchingGroup(c83461421.filter2,tp,0,LOCATION_ONFIELD,nil) + if dg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(83461421,0)) then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg=dg:Select(tp,1,1,nil) + Duel.HintSelection(sg) + Duel.Destroy(sg,REASON_EFFECT) + end + end +end diff --git a/script/c83531441.lua b/script/c83531441.lua index eb7188ec..76a18ebb 100644 --- a/script/c83531441.lua +++ b/script/c83531441.lua @@ -7,6 +7,7 @@ function c83531441.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(83531441,0)) e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) @@ -36,15 +37,18 @@ end function c83531441.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) and e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct==1 then - Duel.DiscardDeck(tp,1,REASON_COST) + local ct={} + for i=3,1,-1 do + if Duel.IsPlayerCanDiscardDeckAsCost(tp,i) then + table.insert(ct,i) + end + end + if #ct==1 then + Duel.DiscardDeck(tp,ct[1],REASON_COST) e:SetLabel(1) else - local ac=0 Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(83531441,2)) - if ct==2 then ac=Duel.AnnounceNumber(tp,2,1) - else ac=Duel.AnnounceNumber(tp,3,2,1) end + local ac=Duel.AnnounceNumber(tp,table.unpack(ct)) Duel.DiscardDeck(tp,ac,REASON_COST) e:SetLabel(ac) end diff --git a/script/c83546647.lua b/script/c83546647.lua index 49f74325..332358e9 100644 --- a/script/c83546647.lua +++ b/script/c83546647.lua @@ -1,74 +1,74 @@ ---無抵抗の真相 -function c83546647.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetCondition(c83546647.condition) - e1:SetCost(c83546647.cost) - e1:SetTarget(c83546647.target) - e1:SetOperation(c83546647.activate) - e1:SetLabel(1) - c:RegisterEffect(e1) -end -function c83546647.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:GetFirst():IsControler(1-tp) and ep==tp and Duel.GetAttackTarget()==nil -end -function c83546647.spfilter(c,e,tp) - return c:GetLevel()==1 and not c:IsPublic() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c83546647.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) -end -function c83546647.spfilter2(c,e,tp,code) - return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c83546647.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(0) - return true -end -function c83546647.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if e:GetLabel()~=0 then return false end - e:SetLabel(1) - return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingMatchingCard(c83546647.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local g=Duel.SelectMatchingCard(tp,c83546647.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - Duel.ConfirmCards(1-tp,g) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_PUBLIC) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_CHAIN) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVED) - e2:SetRange(LOCATION_HAND) - e2:SetOperation(c83546647.clearop) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_CHAIN) - e2:SetLabel(Duel.GetCurrentChain()) - e2:SetLabelObject(e1) - tc:RegisterEffect(e2) - Duel.SetTargetCard(g) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK) -end -function c83546647.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - local tc1=Duel.GetFirstTarget() - if not tc1:IsRelateToEffect(e) or not tc1:IsCanBeSpecialSummoned(e,0,tp,false,false) then return end - local tc2=Duel.GetFirstMatchingCard(c83546647.spfilter2,tp,LOCATION_DECK,0,nil,e,tp,tc1:GetCode()) - if tc2 then - Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonComplete() - end -end -function c83546647.clearop(e,tp,eg,ep,ev,re,r,rp) - if ev~=e:GetLabel() then return end - e:GetLabelObject():Reset() - e:Reset() -end +--無抵抗の真相 +function c83546647.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c83546647.condition) + e1:SetCost(c83546647.cost) + e1:SetTarget(c83546647.target) + e1:SetOperation(c83546647.activate) + e1:SetLabel(1) + c:RegisterEffect(e1) +end +function c83546647.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsControler(1-tp) and ep==tp and Duel.GetAttackTarget()==nil +end +function c83546647.spfilter(c,e,tp) + return c:GetLevel()==1 and not c:IsPublic() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c83546647.spfilter2,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) +end +function c83546647.spfilter2(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c83546647.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(0) + return true +end +function c83546647.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if e:GetLabel()~=0 then return false end + e:SetLabel(1) + return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingMatchingCard(c83546647.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c83546647.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + Duel.ConfirmCards(1-tp,g) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PUBLIC) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_CHAIN) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetRange(LOCATION_HAND) + e2:SetOperation(c83546647.clearop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_CHAIN) + e2:SetLabel(Duel.GetCurrentChain()) + e2:SetLabelObject(e1) + tc:RegisterEffect(e2) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK) +end +function c83546647.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local tc1=Duel.GetFirstTarget() + if not tc1:IsRelateToEffect(e) or not tc1:IsCanBeSpecialSummoned(e,0,tp,false,false) then return end + local tc2=Duel.GetFirstMatchingCard(c83546647.spfilter2,tp,LOCATION_DECK,0,nil,e,tp,tc1:GetCode()) + if tc2 then + Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonComplete() + end +end +function c83546647.clearop(e,tp,eg,ep,ev,re,r,rp) + if ev~=e:GetLabel() then return end + e:GetLabelObject():Reset() + e:Reset() +end diff --git a/script/c83584898.lua b/script/c83584898.lua index 99c36fee..d5655ff8 100644 --- a/script/c83584898.lua +++ b/script/c83584898.lua @@ -1,14 +1,6 @@ --魔界の足枷 function c83584898.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(c83584898.target) - e1:SetOperation(c83584898.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --atk,def local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -24,13 +16,6 @@ function c83584898.initial_effect(c) e4:SetType(EFFECT_TYPE_EQUIP) e4:SetCode(EFFECT_CANNOT_ATTACK) c:RegisterEffect(e4) - --equip limit - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_EQUIP_LIMIT) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e5:SetValue(1) - c:RegisterEffect(e5) --damage local e6=Effect.CreateEffect(c) e6:SetDescription(aux.Stringid(83584898,0)) @@ -44,19 +29,6 @@ function c83584898.initial_effect(c) e6:SetOperation(c83584898.damop) c:RegisterEffect(e6) end -function c83584898.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 c83584898.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 c83584898.damcon(e,tp,eg,ep,ev,re,r,rp) return tp==Duel.GetTurnPlayer() end diff --git a/script/c83629030.lua b/script/c83629030.lua index 7accb304..71581795 100644 --- a/script/c83629030.lua +++ b/script/c83629030.lua @@ -1,53 +1,53 @@ ---トゥーン・サイバー・ドラゴン -function c83629030.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c83629030.spcon) - c:RegisterEffect(e1) - --cannot attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetOperation(c83629030.atklimit) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - local e4=e2:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - --direct attack - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_DIRECT_ATTACK) - e5:SetCondition(c83629030.dircon) - c:RegisterEffect(e5) -end -function c83629030.spcon(e,c) - if c==nil then return true end - return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 - and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 - and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c83629030.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c83629030.cfilter1(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c83629030.cfilter2(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c83629030.dircon(e) - local tp=e:GetHandlerPlayer() - return Duel.IsExistingMatchingCard(c83629030.cfilter1,tp,LOCATION_ONFIELD,0,1,nil) - and not Duel.IsExistingMatchingCard(c83629030.cfilter2,tp,0,LOCATION_MZONE,1,nil) -end +--トゥーン・サイバー・ドラゴン +function c83629030.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c83629030.spcon) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetOperation(c83629030.atklimit) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + --direct attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DIRECT_ATTACK) + e5:SetCondition(c83629030.dircon) + c:RegisterEffect(e5) +end +function c83629030.spcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetFieldGroupCount(c:GetControler(),0,LOCATION_MZONE)>0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c83629030.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c83629030.cfilter1(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c83629030.cfilter2(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c83629030.dircon(e) + local tp=e:GetHandlerPlayer() + return Duel.IsExistingMatchingCard(c83629030.cfilter1,tp,LOCATION_ONFIELD,0,1,nil) + and not Duel.IsExistingMatchingCard(c83629030.cfilter2,tp,0,LOCATION_MZONE,1,nil) +end diff --git a/script/c83725008.lua b/script/c83725008.lua index 5357b487..2cbc1707 100644 --- a/script/c83725008.lua +++ b/script/c83725008.lua @@ -2,8 +2,9 @@ function c83725008.initial_effect(c) --recover&damage local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e1:SetDescription(aux.Stringid(83725008,0)) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c83743222.lua b/script/c83743222.lua index 11faebdb..66954782 100644 --- a/script/c83743222.lua +++ b/script/c83743222.lua @@ -1,73 +1,73 @@ ---女神の聖弓-アルテミス -function c83743222.initial_effect(c) - c:EnableReviveLimit() - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --equip - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_EQUIP) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetTarget(c83743222.eqtg) - e2:SetOperation(c83743222.eqop) - c:RegisterEffect(e2) -end -c83743222.material_race=RACE_WARRIOR -function c83743222.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc~=e:GetHandler() end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) -end -function c83743222.eqop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc then return end - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsLocation(LOCATION_SZONE) or c:IsFacedown() then return end - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(c83743222.eqlimit) - e1:SetLabelObject(tc) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - --negate - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCondition(c83743222.negcon) - e2:SetOperation(c83743222.negop) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) -end -function c83743222.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c83743222.negcon(e,tp,eg,ep,ev,re,r,rp) - local ph=Duel.GetCurrentPhase() - return e:GetHandler():GetEquipTarget() and (ph>PHASE_MAIN1 and phPHASE_MAIN1 and ph0 - and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetTargetCard(bc) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) -end -function c83866861.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local atk=tc:GetAttack() - if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(atk/2) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - Duel.SpecialSummonComplete() - end -end -function c83866861.atkfilter(c,p) - return c:GetOwner()==p -end -function c83866861.atkval(e,c) - local tp=c:GetControler() - return Duel.GetMatchingGroupCount(c83866861.atkfilter,tp,LOCATION_MZONE,0,nil,1-tp)*300 -end +--デストーイ・マッド・キマイラ +function c83866861.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xad),3,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --actlimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCode(EFFECT_CANNOT_ACTIVATE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,1) + e2:SetValue(c83866861.aclimit) + e2:SetCondition(c83866861.actcon) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCountLimit(1,83866861) + e3:SetCondition(c83866861.spcon) + e3:SetTarget(c83866861.sptg) + e3:SetOperation(c83866861.spop) + c:RegisterEffect(e3) + --atkup + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_UPDATE_ATTACK) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c83866861.atkval) + c:RegisterEffect(e4) +end +function c83866861.aclimit(e,re,tp) + return not re:GetHandler():IsImmuneToEffect(e) +end +function c83866861.actcon(e) + return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() +end +function c83866861.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsRelateToBattle() and c:IsFaceup() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c83866861.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) +end +function c83866861.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local atk=tc:GetAttack() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetValue(atk/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end +end +function c83866861.atkfilter(c,p) + return c:GetOwner()==p +end +function c83866861.atkval(e,c) + local tp=c:GetControler() + return Duel.GetMatchingGroupCount(c83866861.atkfilter,tp,LOCATION_MZONE,0,nil,1-tp)*300 +end diff --git a/script/c8396952.lua b/script/c8396952.lua index a49e998e..51ea7d66 100644 --- a/script/c8396952.lua +++ b/script/c8396952.lua @@ -36,9 +36,9 @@ function c8396952.arcanareg(c,coin) e1:SetCode(EVENT_CHAIN_SOLVED) e1:SetRange(LOCATION_MZONE) e1:SetOperation(c8396952.speop) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) end function c8396952.speop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c83980492.lua b/script/c83980492.lua index bc0d97a3..d7d90067 100644 --- a/script/c83980492.lua +++ b/script/c83980492.lua @@ -1,5 +1,5 @@ ---銅鑼ドラゴン -function c83980492.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) -end +--銅鑼ドラゴン +function c83980492.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) +end diff --git a/script/c84013237.lua b/script/c84013237.lua index c61c72ce..32bfcf2e 100644 --- a/script/c84013237.lua +++ b/script/c84013237.lua @@ -9,6 +9,7 @@ function c84013237.initial_effect(c) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCost(c84013237.atkcost) e1:SetOperation(c84013237.atkop) c:RegisterEffect(e1) diff --git a/script/c84025439.lua b/script/c84025439.lua index 53031aeb..5b23ac83 100644 --- a/script/c84025439.lua +++ b/script/c84025439.lua @@ -7,6 +7,7 @@ function c84025439.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(84025439,0)) e1:SetCategory(CATEGORY_TODECK) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(0,0x1e0) @@ -107,7 +108,6 @@ function c84025439.spop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g3=g:Select(tp,1,1,nil) g1:Merge(g3) - if g1:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c84058253.lua b/script/c84058253.lua index f1a5bd67..be0b094d 100644 --- a/script/c84058253.lua +++ b/script/c84058253.lua @@ -6,8 +6,8 @@ function c84058253.initial_effect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCode(EFFECT_FUSION_MATERIAL) - e1:SetCondition(c84058253.fscondition) - e1:SetOperation(c84058253.fsoperation) + e1:SetCondition(c84058253.fscon) + e1:SetOperation(c84058253.fsop) c:RegisterEffect(e1) --destroy local e2=Effect.CreateEffect(c) @@ -30,35 +30,66 @@ function c84058253.initial_effect(c) c:RegisterEffect(e3) end function c84058253.ffilter(c) - return c:IsFusionSetCard(0x1093) + return c:IsFusionSetCard(0x1093) and not c:IsHasEffect(6205579) end -function c84058253.fscondition(e,g,gc,chkf) - if g==nil then return false end - if gc then return c84058253.ffilter(gc) and g:IsExists(c84058253.ffilter,1,gc) end +function c84058253.check1(c,mg,chkf) + return mg:IsExists(c84058253.check2,1,c,c,chkf) +end +function c84058253.check2(c,c2,chkf) + local g=Group.FromCards(c,c2) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,chkf) then return false end local g1=g:Filter(c84058253.ffilter,nil) if chkf~=PLAYER_NONE then - return g1:FilterCount(Card.IsOnField,nil)~=0 and g1:GetCount()>=2 + return g1:FilterCount(aux.FConditionCheckF,nil,chkf)~=0 and g1:GetCount()>=2 else return g1:GetCount()>=2 end end -function c84058253.fsoperation(e,tp,eg,ep,ev,re,r,rp,gc,chkf) +function c84058253.fscon(e,g,gc,chkf) + if g==nil then return false end + local chkf=bit.band(chkfnf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) if gc then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=eg:FilterSelect(tp,c84058253.ffilter,1,63,gc) - Duel.SetFusionMaterial(g1) - return + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return c84058253.check1(gc,mg,chkf) end - local sg=eg:Filter(c84058253.ffilter,nil) - if chkf==PLAYER_NONE or sg:GetCount()==2 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=sg:Select(tp,2,63,nil) + return mg:IsExists(c84058253.check1,1,nil,mg,chkf) +end +function c84058253.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) + local chkf=bit.band(chkfnf,0xff) + local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local p=tp + local sfhchk=false + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end + end + if gc then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c84058253.check2,1,1,gc,gc,chkf) + mg:Sub(g1) + while mg:IsExists(Auxiliary.FConditionFilterExtraMaterial,1,nil,mg,c84058253.ffilter) and Duel.SelectYesNo(p,93) do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,Auxiliary.FConditionFilterExtraMaterial,1,1,nil,mg,c84058253.ffilter) + g1:Merge(g2) + mg:Sub(g2) + end + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g2=sg:Select(tp,1,63,g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c84058253.check1,1,1,nil,mg,chkf) + local tc1=g1:GetFirst() + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,c84058253.check2,1,1,tc1,tc1,chkf) g1:Merge(g2) + mg:Sub(g1) + while mg:IsExists(Auxiliary.FConditionFilterExtraMaterial,1,nil,mg,c84058253.ffilter) and Duel.SelectYesNo(p,93) do + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g3=mg:FilterSelect(p,Auxiliary.FConditionFilterExtraMaterial,1,1,nil,mg,c84058253.ffilter) + g1:Merge(g3) + mg:Sub(g3) + end + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end function c84058253.descon(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c84117021.lua b/script/c84117021.lua index 1dfd142d..7a9d4b88 100644 --- a/script/c84117021.lua +++ b/script/c84117021.lua @@ -1,102 +1,102 @@ ---魔力隔壁 -function c84117021.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c84117021.target) - e1:SetOperation(c84117021.activate) - c:RegisterEffect(e1) -end -function c84117021.filter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) -end -function c84117021.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local opt=0 - if Duel.IsExistingTarget(c84117021.filter,tp,LOCATION_MZONE,0,1,nil) then - opt=Duel.SelectOption(tp,aux.Stringid(84117021,0),aux.Stringid(84117021,1)) - end - Duel.SetTargetParam(opt) - if opt==0 then - e:SetProperty(0) - else - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c84117021.filter,tp,LOCATION_MZONE,0,1,1,nil) - end -end -function c84117021.activate(e,tp,eg,ep,ev,re,r,rp) - local opt=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - if opt==0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) - e1:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE) - e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_SPELLCASTER)) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) - Duel.RegisterEffect(e2,tp) - local e3=e1:Clone() - e3:SetCode(EFFECT_CANNOT_DISABLE_FLIP_SUMMON) - Duel.RegisterEffect(e3,tp) - local e4=Effect.CreateEffect(e:GetHandler()) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_SUMMON_SUCCESS) - e4:SetCondition(c84117021.sumcon) - e4:SetOperation(c84117021.sumsuc) - e4:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e4,tp) - local e5=e4:Clone() - e5:SetCode(EVENT_SPSUMMON_SUCCESS) - Duel.RegisterEffect(e5,tp) - local e6=e4:Clone() - e6:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - Duel.RegisterEffect(e6,tp) - else - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c84117021.atkop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end - end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(0,1) - e1:SetValue(0) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - end -end -function c84117021.sumcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c84117021.filter,1,nil) -end -function c84117021.sumsuc(e,tp,eg,ep,ev,re,r,rp) - Duel.SetChainLimitTillChainEnd(c84117021.efun) -end -function c84117021.efun(e,ep,tp) - return ep==tp -end -function c84117021.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(1) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end +--魔力隔壁 +function c84117021.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c84117021.target) + e1:SetOperation(c84117021.activate) + c:RegisterEffect(e1) +end +function c84117021.filter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c84117021.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local opt=0 + if Duel.IsExistingTarget(c84117021.filter,tp,LOCATION_MZONE,0,1,nil) then + opt=Duel.SelectOption(tp,aux.Stringid(84117021,0),aux.Stringid(84117021,1)) + end + Duel.SetTargetParam(opt) + if opt==0 then + e:SetProperty(0) + else + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c84117021.filter,tp,LOCATION_MZONE,0,1,1,nil) + end +end +function c84117021.activate(e,tp,eg,ep,ev,re,r,rp) + local opt=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if opt==0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_DISABLE_SUMMON) + e1:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_SPELLCASTER)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) + Duel.RegisterEffect(e2,tp) + local e3=e1:Clone() + e3:SetCode(EFFECT_CANNOT_DISABLE_FLIP_SUMMON) + Duel.RegisterEffect(e3,tp) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetCondition(c84117021.sumcon) + e4:SetOperation(c84117021.sumsuc) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) + local e5=e4:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(e5,tp) + local e6=e4:Clone() + e6:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + Duel.RegisterEffect(e6,tp) + else + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetOperation(c84117021.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(0,1) + e1:SetValue(0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end +function c84117021.sumcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c84117021.filter,1,nil) +end +function c84117021.sumsuc(e,tp,eg,ep,ev,re,r,rp) + Duel.SetChainLimitTillChainEnd(c84117021.efun) +end +function c84117021.efun(e,ep,tp) + return ep==tp +end +function c84117021.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c84124261.lua b/script/c84124261.lua index 1414f1bc..2a838cad 100644 --- a/script/c84124261.lua +++ b/script/c84124261.lua @@ -6,6 +6,7 @@ function c84124261.initial_effect(c) --disable attack local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(84124261,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_ATTACK_ANNOUNCE) diff --git a/script/c8414337.lua b/script/c8414337.lua index 81c431e6..470089b7 100644 --- a/script/c8414337.lua +++ b/script/c8414337.lua @@ -1,31 +1,31 @@ ---ガスタの風塵 -function c8414337.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c8414337.condition) - e1:SetTarget(c8414337.target) - e1:SetOperation(c8414337.activate) - c:RegisterEffect(e1) -end -function c8414337.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()<=PHASE_BATTLE -end -function c8414337.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end -end -function c8414337.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetCondition(c8414337.actcon) - e1:SetValue(1) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c8414337.actcon(e) - return Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and Duel.GetAttacker():IsSetCard(0x10) -end +--ガスタの風塵 +function c8414337.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c8414337.condition) + e1:SetTarget(c8414337.target) + e1:SetOperation(c8414337.activate) + c:RegisterEffect(e1) +end +function c8414337.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()<=PHASE_BATTLE +end +function c8414337.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end +end +function c8414337.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetCondition(c8414337.actcon) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c8414337.actcon(e) + return Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and Duel.GetAttacker():IsSetCard(0x10) +end diff --git a/script/c84171830.lua b/script/c84171830.lua index f3651c9c..a190002a 100644 --- a/script/c84171830.lua +++ b/script/c84171830.lua @@ -1,79 +1,79 @@ ---真帝王領域 -function c84171830.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cannot spsummon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetRange(LOCATION_FZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(0,1) - e2:SetCondition(c84171830.discon) - e2:SetTarget(c84171830.splimit) - c:RegisterEffect(e2) - --atk - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetCondition(c84171830.atkcon) - e3:SetTarget(c84171830.atktg) - e3:SetValue(800) - c:RegisterEffect(e3) - --lv - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(84171830,0)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_FZONE) - e4:SetCountLimit(1) - e4:SetTarget(c84171830.lvtg) - e4:SetOperation(c84171830.lvop) - c:RegisterEffect(e4) -end -function c84171830.splimit(e,c) - return c:IsLocation(LOCATION_EXTRA) -end -function c84171830.cfilter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE -end -function c84171830.discon(e) - local tp=e:GetHandlerPlayer() - return Duel.GetFieldGroupCount(tp,LOCATION_EXTRA,0)==0 - and Duel.IsExistingMatchingCard(c84171830.cfilter,tp,LOCATION_MZONE,0,1,nil) - and not Duel.IsExistingMatchingCard(c84171830.cfilter,tp,0,LOCATION_MZONE,1,nil) -end -function c84171830.atkcon(e) - local d=Duel.GetAttackTarget() - local tp=e:GetHandlerPlayer() - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and d and d:IsControler(1-tp) -end -function c84171830.atktg(e,c) - return c==Duel.GetAttacker() and bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE -end -function c84171830.filter(c) - return c:GetAttack()==2800 and c:GetDefense()==1000 -end -function c84171830.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c84171830.filter,tp,LOCATION_HAND,0,1,nil) end -end -function c84171830.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(84171830,1)) - local g=Duel.SelectMatchingCard(tp,c84171830.filter,tp,LOCATION_HAND,0,1,1,nil) - if g:GetCount()>0 then - Duel.ConfirmCards(1-tp,g) - Duel.ShuffleHand(tp) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(-2) - e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) - g:GetFirst():RegisterEffect(e1) - end -end +--真帝王領域 +function c84171830.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cannot spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetRange(LOCATION_FZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(0,1) + e2:SetCondition(c84171830.discon) + e2:SetTarget(c84171830.splimit) + c:RegisterEffect(e2) + --atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetCondition(c84171830.atkcon) + e3:SetTarget(c84171830.atktg) + e3:SetValue(800) + c:RegisterEffect(e3) + --lv + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(84171830,0)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_FZONE) + e4:SetCountLimit(1) + e4:SetTarget(c84171830.lvtg) + e4:SetOperation(c84171830.lvop) + c:RegisterEffect(e4) +end +function c84171830.splimit(e,c) + return c:IsLocation(LOCATION_EXTRA) +end +function c84171830.cfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c84171830.discon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetFieldGroupCount(tp,LOCATION_EXTRA,0)==0 + and Duel.IsExistingMatchingCard(c84171830.cfilter,tp,LOCATION_MZONE,0,1,nil) + and not Duel.IsExistingMatchingCard(c84171830.cfilter,tp,0,LOCATION_MZONE,1,nil) +end +function c84171830.atkcon(e) + local d=Duel.GetAttackTarget() + local tp=e:GetHandlerPlayer() + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and d and d:IsControler(1-tp) +end +function c84171830.atktg(e,c) + return c==Duel.GetAttacker() and bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c84171830.filter(c) + return c:GetAttack()==2800 and c:GetDefense()==1000 +end +function c84171830.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c84171830.filter,tp,LOCATION_HAND,0,1,nil) end +end +function c84171830.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(84171830,1)) + local g=Duel.SelectMatchingCard(tp,c84171830.filter,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-2) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + g:GetFirst():RegisterEffect(e1) + end +end diff --git a/script/c84224627.lua b/script/c84224627.lua index bd975fbf..abdbfd2d 100644 --- a/script/c84224627.lua +++ b/script/c84224627.lua @@ -14,7 +14,7 @@ function c84224627.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e2:SetCode(EVENT_FREE_CHAIN) e2:SetHintTiming(TIMING_DAMAGE_STEP) e2:SetCountLimit(1) diff --git a/script/c84298614.lua b/script/c84298614.lua index 434632e0..7e1d7c7e 100644 --- a/script/c84298614.lua +++ b/script/c84298614.lua @@ -1,66 +1,66 @@ ---強化蘇生 -function c84298614.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c84298614.target) - e1:SetOperation(c84298614.operation) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_LEAVE_FIELD) - e2:SetCondition(c84298614.descon) - e2:SetOperation(c84298614.desop) - c:RegisterEffect(e2) -end -function c84298614.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c84298614.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c84298614.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c84298614.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c84298614.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c84298614.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 Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - c:SetCardTarget(tc) - Duel.SpecialSummonComplete() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(100) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetCondition(c84298614.rcon) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EFFECT_UPDATE_LEVEL) - e3:SetValue(1) - tc:RegisterEffect(e3) - end -end -function c84298614.rcon(e) - return e:GetOwner():IsHasCardTarget(e:GetHandler()) and not e:GetHandler():IsImmuneToEffect(e) -end -function c84298614.descon(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) -end -function c84298614.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--強化蘇生 +function c84298614.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c84298614.target) + e1:SetOperation(c84298614.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c84298614.descon) + e2:SetOperation(c84298614.desop) + c:RegisterEffect(e2) +end +function c84298614.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c84298614.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c84298614.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c84298614.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c84298614.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c84298614.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 Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + c:SetCardTarget(tc) + Duel.SpecialSummonComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCondition(c84298614.rcon) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_UPDATE_LEVEL) + e3:SetValue(1) + tc:RegisterEffect(e3) + end +end +function c84298614.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) and not e:GetHandler():IsImmuneToEffect(e) +end +function c84298614.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + return tc and eg:IsContains(tc) and tc:IsReason(REASON_DESTROY) +end +function c84298614.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c84305651.lua b/script/c84305651.lua index 1a700291..55faf920 100644 --- a/script/c84305651.lua +++ b/script/c84305651.lua @@ -1,81 +1,81 @@ ---ゴヨウ・キング -function c84305651.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsType,TYPE_SYNCHRO),1) - c:EnableReviveLimit() - --atk up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(84305651,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c84305651.atkcon) - e1:SetOperation(c84305651.atkop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCondition(aux.bdogcon) - e2:SetTarget(c84305651.sptg) - e2:SetOperation(c84305651.spop) - c:RegisterEffect(e2) -end -function c84305651.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttackTarget()~=nil -end -function c84305651.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local ct=Duel.GetMatchingGroupCount(c84305651.filter,tp,LOCATION_MZONE,0,nil) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(ct*400) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_DAMAGE) - c:RegisterEffect(e1) - end -end -function c84305651.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsType(TYPE_SYNCHRO) -end -function c84305651.ctfilter(c) - return c:IsFaceup() and c:IsControlerCanBeChanged() -end -function c84305651.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local bc=e:GetHandler():GetBattleTarget() - local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) - local b2=Duel.IsExistingMatchingCard(c84305651.ctfilter,tp,0,LOCATION_MZONE,1,nil) - if chk==0 then return b1 or b2 end - local op=0 - if b1 and b2 then - op=Duel.SelectOption(tp,aux.Stringid(84305651,1),aux.Stringid(84305651,2)) - elseif b1 then - op=Duel.SelectOption(tp,aux.Stringid(84305651,1)) - else - op=Duel.SelectOption(tp,aux.Stringid(84305651,2))+1 - end - if op==0 then - Duel.SetTargetCard(bc) - e:SetCategory(CATEGORY_SPECIAL_SUMMON) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) - else - e:SetCategory(CATEGORY_CONTROL) - end - e:SetLabel(op) -end -function c84305651.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabel()==0 then - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectMatchingCard(tp,c84305651.ctfilter,tp,0,LOCATION_MZONE,1,1,nil) - local tc=g:GetFirst() - if tc then - Duel.GetControl(tc,tp) - end - end -end +--ゴヨウ・キング +function c84305651.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsType,TYPE_SYNCHRO),1) + c:EnableReviveLimit() + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(84305651,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c84305651.atkcon) + e1:SetOperation(c84305651.atkop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCondition(aux.bdogcon) + e2:SetTarget(c84305651.sptg) + e2:SetOperation(c84305651.spop) + c:RegisterEffect(e2) +end +function c84305651.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()~=nil +end +function c84305651.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local ct=Duel.GetMatchingGroupCount(c84305651.filter,tp,LOCATION_MZONE,0,nil) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*400) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) + end +end +function c84305651.filter(c) + return c:IsFaceup() and c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsType(TYPE_SYNCHRO) +end +function c84305651.ctfilter(c) + return c:IsFaceup() and c:IsControlerCanBeChanged() +end +function c84305651.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) + local b2=Duel.IsExistingMatchingCard(c84305651.ctfilter,tp,0,LOCATION_MZONE,1,nil) + if chk==0 then return b1 or b2 end + local op=0 + if b1 and b2 then + op=Duel.SelectOption(tp,aux.Stringid(84305651,1),aux.Stringid(84305651,2)) + elseif b1 then + op=Duel.SelectOption(tp,aux.Stringid(84305651,1)) + else + op=Duel.SelectOption(tp,aux.Stringid(84305651,2))+1 + end + if op==0 then + Duel.SetTargetCard(bc) + e:SetCategory(CATEGORY_SPECIAL_SUMMON) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) + else + e:SetCategory(CATEGORY_CONTROL) + end + e:SetLabel(op) +end +function c84305651.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,c84305651.ctfilter,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.GetControl(tc,tp) + end + end +end diff --git a/script/c84313685.lua b/script/c84313685.lua index 6c6aa98c..6fce0b5d 100644 --- a/script/c84313685.lua +++ b/script/c84313685.lua @@ -16,7 +16,7 @@ function c84313685.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c84313685.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c84313685.sptg) e2:SetOperation(c84313685.spop) c:RegisterEffect(e2) @@ -25,7 +25,7 @@ function c84313685.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetCondition(c84313685.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetValue(1) c:RegisterEffect(e3) --special summon @@ -48,9 +48,7 @@ function c84313685.initial_effect(c) e5:SetValue(c84313685.eqlimit) c:RegisterEffect(e5) end -function c84313685.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c84313685.old_union=true function c84313685.eqlimit(e,c) return c:IsSetCard(0x30) end @@ -75,7 +73,7 @@ function c84313685.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c84313685.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(84313685)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -92,7 +90,7 @@ function c84313685.spop(e,tp,eg,ep,ev,re,r,rp) end end function c84313685.gspcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and e:GetHandler():GetEquipTarget()==eg:GetFirst() + return aux.IsUnionState(e) and e:GetHandler():GetEquipTarget()==eg:GetFirst() end function c84313685.gfilter(c,e,tp) return c:IsLevelBelow(4) and c:IsSetCard(0x30) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) diff --git a/script/c84388461.lua b/script/c84388461.lua index 24f6b2a0..9ae60d03 100644 --- a/script/c84388461.lua +++ b/script/c84388461.lua @@ -1,99 +1,99 @@ ---剣聖の影霊衣-セフィラセイバー -function c84388461.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c84388461.splimit) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetDescription(aux.Stringid(84388461,1)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetCountLimit(1,84388461) - e3:SetRange(LOCATION_MZONE+LOCATION_HAND) - e3:SetCost(c84388461.cost) - e3:SetTarget(c84388461.target) - e3:SetOperation(c84388461.operation) - c:RegisterEffect(e3) -end -function c84388461.splimit(e,c,sump,sumtype,sumpos,targetp) - if c:IsSetCard(0xb4) or c:IsSetCard(0xc4) then return false end - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c84388461.filter(c,e,tp,m,ft) - if not c:IsSetCard(0xb4) or bit.band(c:GetType(),0x81)~=0x81 - or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end - local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) - if c:IsCode(21105106) then return c:ritual_custom_condition(mg,ft) end - if c.mat_filter then - mg=mg:Filter(c.mat_filter,nil) - end - if ft>0 then - return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) - else - return ft>-1 and mg:IsExists(c84388461.mfilterf,1,nil,tp,mg,c) - end -end -function c84388461.mfilterf(c,tp,mg,rc) - if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then - Duel.SetSelectedCard(c) - return mg:CheckWithSumEqual(Card.GetRitualLevel,rc:GetLevel(),0,99,rc) - else return false end -end -function c84388461.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c84388461.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local mg=Duel.GetRitualMaterial(tp) - mg:RemoveCard(e:GetHandler()) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if e:GetHandler():IsLocation(LOCATION_MZONE) then ft=ft+1 end - return Duel.IsExistingMatchingCard(c84388461.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg,ft) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c84388461.operation(e,tp,eg,ep,ev,re,r,rp) - local mg=Duel.GetRitualMaterial(tp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=Duel.SelectMatchingCard(tp,c84388461.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg,ft) - local tc=tg:GetFirst() - if tc then - mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) - if tc:IsCode(21105106) then - tc:ritual_custom_operation(mg) - local mat=tc:GetMaterial() - Duel.ReleaseRitualMaterial(mat) - else - if tc.mat_filter then - mg=mg:Filter(tc.mat_filter,nil) - end - local mat=nil - if ft>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:FilterSelect(tp,c84388461.mfilterf,1,1,nil,tp,mg,tc) - Duel.SetSelectedCard(mat) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local mat2=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),0,99,tc) - mat:Merge(mat2) - end - tc:SetMaterial(mat) - Duel.ReleaseRitualMaterial(mat) - end - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) - tc:CompleteProcedure() - end -end +--剣聖の影霊衣-セフィラセイバー +function c84388461.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c84388461.splimit) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetDescription(aux.Stringid(84388461,1)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1,84388461) + e3:SetRange(LOCATION_MZONE+LOCATION_HAND) + e3:SetCost(c84388461.cost) + e3:SetTarget(c84388461.target) + e3:SetOperation(c84388461.operation) + c:RegisterEffect(e3) +end +function c84388461.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0xb4) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c84388461.filter(c,e,tp,m,ft) + if not c:IsSetCard(0xb4) or bit.band(c:GetType(),0x81)~=0x81 + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) + if c:IsCode(21105106) then return c:ritual_custom_condition(mg,ft) end + if c.mat_filter then + mg=mg:Filter(c.mat_filter,nil) + end + if ft>0 then + return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) + else + return ft>-1 and mg:IsExists(c84388461.mfilterf,1,nil,tp,mg,c) + end +end +function c84388461.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumEqual(Card.GetRitualLevel,rc:GetLevel(),0,99,rc) + else return false end +end +function c84388461.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c84388461.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + mg:RemoveCard(e:GetHandler()) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if e:GetHandler():IsLocation(LOCATION_MZONE) then ft=ft+1 end + return Duel.IsExistingMatchingCard(c84388461.filter,tp,LOCATION_HAND,0,1,nil,e,tp,mg,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c84388461.operation(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c84388461.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,mg,ft) + local tc=tg:GetFirst() + if tc then + mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) + if tc:IsCode(21105106) then + tc:ritual_custom_operation(mg) + local mat=tc:GetMaterial() + Duel.ReleaseRitualMaterial(mat) + else + if tc.mat_filter then + mg=mg:Filter(tc.mat_filter,nil) + end + local mat=nil + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c84388461.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),0,99,tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + end + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c84389640.lua b/script/c84389640.lua index 609bbf0d..af4785c1 100644 --- a/script/c84389640.lua +++ b/script/c84389640.lua @@ -1,67 +1,67 @@ ---窮鼠の進撃 -function c84389640.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetDescription(aux.Stringid(84389640,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetHintTiming(TIMING_DAMAGE_STEP) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e2:SetCondition(c84389640.condition) - e2:SetCost(c84389640.cost) - e2:SetTarget(c84389640.target) - e2:SetOperation(c84389640.operation) - c:RegisterEffect(e2) -end -function c84389640.condition(e,tp,eg,ep,ev,re,r,rp) - local phase=Duel.GetCurrentPhase() - if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if not d then return false end - if d:IsControler(tp) then a,d=d,a end - e:SetLabelObject(d) - return a:IsFaceup() and a:IsLevelBelow(3) and a:IsType(TYPE_NORMAL) and a:IsRelateToBattle() - and d:IsFaceup() and d:IsRelateToBattle() -end -function c84389640.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(84389640)==0 and Duel.CheckLPCost(tp,100) - and e:GetLabelObject():IsAttackAbove(100) end - local lp=Duel.GetLP(tp) - local atk=e:GetLabelObject():GetAttack() - local maxc=lp>atk and atk or lp - maxc=math.floor(maxc/100)*100 - local t={} - for i=1,maxc/100 do - t[i]=i*100 - end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(84389640,1)) - local pay=Duel.AnnounceNumber(tp,table.unpack(t)) - Duel.PayLPCost(tp,pay) - e:SetLabel(-pay) - e:GetHandler():RegisterFlagEffect(84389640,RESET_PHASE+PHASE_DAMAGE,0,1) -end -function c84389640.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local tc=e:GetLabelObject() - if chkc then return chkc==tc end - if chk==0 then return tc:IsCanBeEffectTarget(e) end - Duel.SetTargetCard(tc) -end -function c84389640.operation(e,tp,eg,ep,ev,re,r,rp) - local bc=Duel.GetFirstTarget() - if not e:GetHandler():IsRelateToEffect(e) or not bc or not bc:IsRelateToEffect(e) or not bc:IsControler(1-tp) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetOwnerPlayer(tp) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(e:GetLabel()) - bc:RegisterEffect(e1) -end +--窮鼠の進撃 +function c84389640.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetDescription(aux.Stringid(84389640,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(TIMING_DAMAGE_STEP) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCondition(c84389640.condition) + e2:SetCost(c84389640.cost) + e2:SetTarget(c84389640.target) + e2:SetOperation(c84389640.operation) + c:RegisterEffect(e2) +end +function c84389640.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return false end + if d:IsControler(tp) then a,d=d,a end + e:SetLabelObject(d) + return a:IsFaceup() and a:IsLevelBelow(3) and a:IsType(TYPE_NORMAL) and a:IsRelateToBattle() + and d:IsFaceup() and d:IsRelateToBattle() +end +function c84389640.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(84389640)==0 and Duel.CheckLPCost(tp,100) + and e:GetLabelObject():IsAttackAbove(100) end + local lp=Duel.GetLP(tp) + local atk=e:GetLabelObject():GetAttack() + local maxc=lp>atk and atk or lp + maxc=math.floor(maxc/100)*100 + local t={} + for i=1,maxc/100 do + t[i]=i*100 + end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(84389640,1)) + local pay=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.PayLPCost(tp,pay) + e:SetLabel(-pay) + e:GetHandler():RegisterFlagEffect(84389640,RESET_PHASE+PHASE_DAMAGE,0,1) +end +function c84389640.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetLabelObject() + if chkc then return chkc==tc end + if chk==0 then return tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) +end +function c84389640.operation(e,tp,eg,ep,ev,re,r,rp) + local bc=Duel.GetFirstTarget() + if not e:GetHandler():IsRelateToEffect(e) or not bc or not bc:IsRelateToEffect(e) or not bc:IsControler(1-tp) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetOwnerPlayer(tp) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(e:GetLabel()) + bc:RegisterEffect(e1) +end diff --git a/script/c84401683.lua b/script/c84401683.lua index d9c1c6b7..d1b436dd 100644 --- a/script/c84401683.lua +++ b/script/c84401683.lua @@ -9,7 +9,7 @@ function c84401683.initial_effect(c) e1:SetCategory(CATEGORY_DISABLE) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c84417082.lua b/script/c84417082.lua index b04d7b22..de2f0684 100644 --- a/script/c84417082.lua +++ b/script/c84417082.lua @@ -7,6 +7,7 @@ function c84417082.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(84417082,0)) e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) @@ -18,6 +19,7 @@ function c84417082.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(84417082,1)) e2:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) diff --git a/script/c84428023.lua b/script/c84428023.lua index a4d6e971..0a69b55e 100644 --- a/script/c84428023.lua +++ b/script/c84428023.lua @@ -1,14 +1,6 @@ --エレキャッシュ function c84428023.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(c84428023.target) - e1:SetOperation(c84428023.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c84428023.filter) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,13 +12,6 @@ function c84428023.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_DISABLE) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c84428023.eqlimit) - c:RegisterEffect(e4) --atkup local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(84428023,0)) @@ -40,24 +25,8 @@ function c84428023.initial_effect(c) e4:SetOperation(c84428023.drop) c:RegisterEffect(e4) end -function c84428023.eqlimit(e,c) - return c:IsLevelBelow(3) and c:IsRace(RACE_THUNDER) -end function c84428023.filter(c) - return c:IsLevelBelow(3) and c:IsFaceup() and c:IsRace(RACE_THUNDER) -end -function c84428023.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c84428023.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c84428023.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c84428023.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c84428023.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 + return c:IsLevelBelow(3) and c:IsRace(RACE_THUNDER) end function c84428023.drcon(e,tp,eg,ep,ev,re,r,rp,chk) return ep~=tp and r==REASON_BATTLE and eg:GetFirst()==e:GetHandler():GetEquipTarget() diff --git a/script/c84442536.lua b/script/c84442536.lua index 2d015657..c6560ff2 100644 --- a/script/c84442536.lua +++ b/script/c84442536.lua @@ -49,8 +49,7 @@ function c84442536.activate(e,tp,eg,ep,ev,re,r,rp) if sel==0 then Duel.ChangeChainOperation(ev,c84442536.repop) else - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c84472026.lua b/script/c84472026.lua index 7202f5ee..03fcae52 100644 --- a/script/c84472026.lua +++ b/script/c84472026.lua @@ -1,66 +1,66 @@ ---ゴーストリック・イエティ -function c84472026.initial_effect(c) - --summon limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetCondition(c84472026.sumcon) - c:RegisterEffect(e1) - --turn set - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(84472026,0)) - e2:SetCategory(CATEGORY_POSITION) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c84472026.postg) - e2:SetOperation(c84472026.posop) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(84472026,1)) - e3:SetCategory(CATEGORY_REMOVE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e3:SetCode(EVENT_FLIP) - e3:SetTarget(c84472026.indestg) - e3:SetOperation(c84472026.indesop) - c:RegisterEffect(e3) -end -function c84472026.sfilter(c) - return c:IsFaceup() and c:IsSetCard(0x8d) -end -function c84472026.sumcon(e) - return not Duel.IsExistingMatchingCard(c84472026.sfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c84472026.postg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(84472026)==0 end - c:RegisterFlagEffect(84472026,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) - Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) -end -function c84472026.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) - end -end -function c84472026.indestg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c84472026.sfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c84472026.sfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c84472026.sfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c84472026.indesop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - tc:RegisterEffect(e2) - end -end +--ゴーストリック・イエティ +function c84472026.initial_effect(c) + --summon limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetCondition(c84472026.sumcon) + c:RegisterEffect(e1) + --turn set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(84472026,0)) + e2:SetCategory(CATEGORY_POSITION) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetTarget(c84472026.postg) + e2:SetOperation(c84472026.posop) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(84472026,1)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetCode(EVENT_FLIP) + e3:SetTarget(c84472026.indestg) + e3:SetOperation(c84472026.indesop) + c:RegisterEffect(e3) +end +function c84472026.sfilter(c) + return c:IsFaceup() and c:IsSetCard(0x8d) +end +function c84472026.sumcon(e) + return not Duel.IsExistingMatchingCard(c84472026.sfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c84472026.postg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(84472026)==0 end + c:RegisterFlagEffect(84472026,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) +end +function c84472026.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) + end +end +function c84472026.indestg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c84472026.sfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c84472026.sfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c84472026.sfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c84472026.indesop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + tc:RegisterEffect(e2) + end +end diff --git a/script/c84565800.lua b/script/c84565800.lua index 03b154dd..c764cab6 100644 --- a/script/c84565800.lua +++ b/script/c84565800.lua @@ -1,69 +1,69 @@ ---伝説の騎士 ヘルモス -function c84565800.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(84565800,0)) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e2:SetTarget(c84565800.rmtg) - e2:SetOperation(c84565800.rmop) - c:RegisterEffect(e2) - --copy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(84565800,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BE_BATTLE_TARGET) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetTarget(c84565800.cptg) - e3:SetOperation(c84565800.cpop) - c:RegisterEffect(e3) -end -function c84565800.rmfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemove() and c:IsFaceup() -end -function c84565800.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c84565800.rmfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c84565800.rmfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c84565800.rmfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c84565800.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsType(TYPE_SPELL+TYPE_TRAP) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end -function c84565800.cpfilter(c) - return c:IsType(TYPE_EFFECT) -end -function c84565800.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c84565800.cpfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c84565800.cpfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c84565800.cpfilter,tp,LOCATION_GRAVE,0,1,1,nil) -end -function c84565800.cpop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and c:IsFaceup() and c:IsRelateToEffect(e) then - local code=tc:GetCode() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetValue(code) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) - c:RegisterEffect(e1) - c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) - end -end +--伝説の騎士 ヘルモス +function c84565800.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(84565800,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetTarget(c84565800.rmtg) + e2:SetOperation(c84565800.rmop) + c:RegisterEffect(e2) + --copy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(84565800,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c84565800.cptg) + e3:SetOperation(c84565800.cpop) + c:RegisterEffect(e3) +end +function c84565800.rmfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemove() and c:IsFaceup() +end +function c84565800.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c84565800.rmfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c84565800.rmfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c84565800.rmfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c84565800.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsType(TYPE_SPELL+TYPE_TRAP) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end +function c84565800.cpfilter(c) + return c:IsType(TYPE_EFFECT) +end +function c84565800.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c84565800.cpfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c84565800.cpfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c84565800.cpfilter,tp,LOCATION_GRAVE,0,1,1,nil) +end +function c84565800.cpop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and c:IsFaceup() and c:IsRelateToEffect(e) then + local code=tc:GetCode() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) + c:RegisterEffect(e1) + c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_SELF_TURN) + end +end diff --git a/script/c8463720.lua b/script/c8463720.lua index 1a59e97d..94fd3fdb 100644 --- a/script/c8463720.lua +++ b/script/c8463720.lua @@ -1,41 +1,41 @@ ---DDD剋竜王ベオウルフ -function c8463720.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10af),aux.FilterBoolFunction(Card.IsFusionSetCard,0xaf),true) - --pierce - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_PIERCE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaf)) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(8463720,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCountLimit(1) - e2:SetCondition(c8463720.descon) - e2:SetTarget(c8463720.destg) - e2:SetOperation(c8463720.desop) - c:RegisterEffect(e2) -end -function c8463720.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c8463720.filter(c) - return c:GetSequence()<5 -end -function c8463720.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c8463720.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end - local g=Duel.GetMatchingGroup(c8463720.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c8463720.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c8463720.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end +--DDD剋竜王ベオウルフ +function c8463720.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10af),aux.FilterBoolFunction(Card.IsFusionSetCard,0xaf),true) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_PIERCE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaf)) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(8463720,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetCondition(c8463720.descon) + e2:SetTarget(c8463720.destg) + e2:SetOperation(c8463720.desop) + c:RegisterEffect(e2) +end +function c8463720.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c8463720.filter(c) + return c:GetSequence()<5 +end +function c8463720.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c8463720.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + local g=Duel.GetMatchingGroup(c8463720.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c8463720.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c8463720.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c84653834.lua b/script/c84653834.lua index af94ac29..543e51b8 100644 --- a/script/c84653834.lua +++ b/script/c84653834.lua @@ -1,51 +1,51 @@ ---超能力増幅器 -function c84653834.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c84653834.condition) - e1:SetTarget(c84653834.target) - e1:SetOperation(c84653834.activate) - c:RegisterEffect(e1) -end -function c84653834.condition(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetCurrentPhase()==PHASE_DAMAGE and Duel.IsDamageCalculated() then return false end - return true -end -function c84653834.filter(c) - return c:IsFaceup() and c:IsRace(RACE_PSYCHO) -end -function c84653834.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c84653834.filter,tp,LOCATION_MZONE,0,1,nil) end -end -function c84653834.activate(e,tp,eg,ep,ev,re,r,rp) - local sg=Duel.GetMatchingGroup(c84653834.filter,tp,LOCATION_MZONE,0,nil) - local c=e:GetHandler() - local tc=sg:GetFirst() - local atk=Duel.GetMatchingGroupCount(c84653834.filter,tp,LOCATION_REMOVED,0,nil)*300 - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(atk) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_MZONE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetCountLimit(1) - e2:SetOperation(c84653834.rmop) - tc:RegisterEffect(e2) - tc=sg:GetNext() - end -end -function c84653834.rmop(e,tp,eg,ep,ev,re,r,rp) - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) -end +--超能力増幅器 +function c84653834.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c84653834.condition) + e1:SetTarget(c84653834.target) + e1:SetOperation(c84653834.activate) + c:RegisterEffect(e1) +end +function c84653834.condition(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetCurrentPhase()==PHASE_DAMAGE and Duel.IsDamageCalculated() then return false end + return true +end +function c84653834.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PSYCHO) +end +function c84653834.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c84653834.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c84653834.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c84653834.filter,tp,LOCATION_MZONE,0,nil) + local c=e:GetHandler() + local tc=sg:GetFirst() + local atk=Duel.GetMatchingGroupCount(c84653834.filter,tp,LOCATION_REMOVED,0,nil)*300 + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetOperation(c84653834.rmop) + tc:RegisterEffect(e2) + tc=sg:GetNext() + end +end +function c84653834.rmop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c84740193.lua b/script/c84740193.lua index 26c198d7..79dc1425 100644 --- a/script/c84740193.lua +++ b/script/c84740193.lua @@ -1,14 +1,6 @@ --バスターランチャー function c84740193.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(c84740193.target) - e1:SetOperation(c84740193.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsAttackBelow,1000),c84740193.eqlimit) --Atk,def local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -16,33 +8,10 @@ function c84740193.initial_effect(c) e2:SetCondition(c84740193.atkcon) e2:SetValue(2500) c:RegisterEffect(e2) - --Equip limit - local e3=Effect.CreateEffect(c) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_EQUIP_LIMIT) - e3:SetValue(c84740193.eqlimit) - c:RegisterEffect(e3) end function c84740193.eqlimit(e,c) return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL or c:IsAttackBelow(1000) end -function c84740193.filter(c) - return c:IsFaceup() and c:IsAttackBelow(1000) -end -function c84740193.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c84740193.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c84740193.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c84740193.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c84740193.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 c84740193.atkcon(e) local ec=e:GetHandler():GetEquipTarget() if not ec:IsRelateToBattle() then return end diff --git a/script/c84747429.lua b/script/c84747429.lua index 32c3ef13..8d35a772 100644 --- a/script/c84747429.lua +++ b/script/c84747429.lua @@ -1,57 +1,57 @@ ---エアジャチ -function c84747429.initial_effect(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(84747429,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCategory(CATEGORY_DESTROY+CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c84747429.descost) - e1:SetTarget(c84747429.destg) - e1:SetOperation(c84747429.desop) - c:RegisterEffect(e1) -end -function c84747429.cfilter(c) - return c:IsRace(RACE_FISH+RACE_SEASERPENT+RACE_AQUA) and c:IsAbleToRemoveAsCost() -end -function c84747429.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c84747429.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c84747429.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c84747429.filter(c) - return c:IsFaceup() -end -function c84747429.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c84747429.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c84747429.filter,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c84747429.filter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c84747429.desop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 and c:IsRelateToEffect(e) then - Duel.BreakEffect() - if Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)==0 then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetCountLimit(1) - e1:SetLabelObject(c) - e1:SetCondition(c84747429.retcon) - e1:SetOperation(c84747429.retop) - e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) - Duel.RegisterEffect(e1,tp) - end -end -function c84747429.retcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c84747429.retop(e,tp,eg,ep,ev,re,r,rp) - Duel.ReturnToField(e:GetLabelObject()) -end +--エアジャチ +function c84747429.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(84747429,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c84747429.descost) + e1:SetTarget(c84747429.destg) + e1:SetOperation(c84747429.desop) + c:RegisterEffect(e1) +end +function c84747429.cfilter(c) + return c:IsRace(RACE_FISH+RACE_SEASERPENT+RACE_AQUA) and c:IsAbleToRemoveAsCost() +end +function c84747429.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c84747429.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c84747429.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c84747429.filter(c) + return c:IsFaceup() +end +function c84747429.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c84747429.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c84747429.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c84747429.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c84747429.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 and c:IsRelateToEffect(e) then + Duel.BreakEffect() + if Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)==0 then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetCountLimit(1) + e1:SetLabelObject(c) + e1:SetCondition(c84747429.retcon) + e1:SetOperation(c84747429.retop) + e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN) + Duel.RegisterEffect(e1,tp) + end +end +function c84747429.retcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c84747429.retop(e,tp,eg,ep,ev,re,r,rp) + Duel.ReturnToField(e:GetLabelObject()) +end diff --git a/script/c84749824.lua b/script/c84749824.lua index ff4106dd..b6eabece 100644 --- a/script/c84749824.lua +++ b/script/c84749824.lua @@ -61,8 +61,7 @@ function c84749824.target2(e,tp,eg,ep,ev,re,r,rp,chk) end end function c84749824.activate2(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c84764038.lua b/script/c84764038.lua index ef738af5..0e770542 100644 --- a/script/c84764038.lua +++ b/script/c84764038.lua @@ -1,89 +1,89 @@ ---彼岸の悪鬼 スカラマリオン -function c84764038.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c84764038.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(84764038,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,84764038) - e2:SetCondition(c84764038.sscon) - e2:SetTarget(c84764038.sstg) - e2:SetOperation(c84764038.ssop) - c:RegisterEffect(e2) - --to grave - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetOperation(c84764038.regop) - c:RegisterEffect(e3) - --search - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(84764038,1)) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_PHASE+PHASE_END) - e4:SetCountLimit(1,84764038) - e4:SetRange(LOCATION_GRAVE) - e4:SetCondition(c84764038.thcon) - e4:SetTarget(c84764038.thtg) - e4:SetOperation(c84764038.thop) - c:RegisterEffect(e4) -end -function c84764038.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c84764038.sdcon(e) - return Duel.IsExistingMatchingCard(c84764038.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c84764038.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c84764038.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c84764038.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c84764038.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c84764038.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c84764038.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - c:RegisterFlagEffect(84764038,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c84764038.thfilter(c) - return c:GetLevel()==3 and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_FIEND) - and not c:IsCode(84764038) and c:IsAbleToHand() -end -function c84764038.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(84764038)>0 -end -function c84764038.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c84764038.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c84764038.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c84764038.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--彼岸の悪鬼 スカラマリオン +function c84764038.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c84764038.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(84764038,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,84764038) + e2:SetCondition(c84764038.sscon) + e2:SetTarget(c84764038.sstg) + e2:SetOperation(c84764038.ssop) + c:RegisterEffect(e2) + --to grave + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetOperation(c84764038.regop) + c:RegisterEffect(e3) + --search + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(84764038,1)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetCountLimit(1,84764038) + e4:SetRange(LOCATION_GRAVE) + e4:SetCondition(c84764038.thcon) + e4:SetTarget(c84764038.thtg) + e4:SetOperation(c84764038.thop) + c:RegisterEffect(e4) +end +function c84764038.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c84764038.sdcon(e) + return Duel.IsExistingMatchingCard(c84764038.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c84764038.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c84764038.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c84764038.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c84764038.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c84764038.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c84764038.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(84764038,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c84764038.thfilter(c) + return c:GetLevel()==3 and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_FIEND) + and not c:IsCode(84764038) and c:IsAbleToHand() +end +function c84764038.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(84764038)>0 +end +function c84764038.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c84764038.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c84764038.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c84764038.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c84769941.lua b/script/c84769941.lua index 9ca015a5..c713d6d5 100644 --- a/script/c84769941.lua +++ b/script/c84769941.lua @@ -1,4 +1,4 @@ ---Super Anti-Kaiju War Machine Mecha-Dogoran +--対壊獣用決戦兵器スーパーメカドゴラン function c84769941.initial_effect(c) c:EnableReviveLimit() c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) @@ -56,9 +56,9 @@ function c84769941.eqop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end if c:IsFacedown() or not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c84769941.eqfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c84769941.eqfilter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if not Duel.Equip(tp,tc,c,true) then return end tc:RegisterFlagEffect(84769941,RESET_EVENT+0x1fe0000,0,0) local e1=Effect.CreateEffect(c) diff --git a/script/c847915.lua b/script/c847915.lua index c278e8f6..0f4bfec2 100644 --- a/script/c847915.lua +++ b/script/c847915.lua @@ -1,52 +1,52 @@ ---ナンバーズ・ウォール -function c847915.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c847915.actcon) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x48)) - e2:SetValue(c847915.indval) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetRange(LOCATION_SZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x48)) - e3:SetValue(1) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EVENT_DESTROYED) - e4:SetCondition(c847915.descon) - e4:SetOperation(c847915.desop) - c:RegisterEffect(e4) -end -function c847915.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x48) -end -function c847915.indval(e,c) - return not c:IsSetCard(0x48) -end -function c847915.actcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c847915.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c847915.dfilter(c,tp) - return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0x48) -end -function c847915.descon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c847915.dfilter,1,nil,tp) -end -function c847915.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--ナンバーズ・ウォール +function c847915.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c847915.actcon) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x48)) + e2:SetValue(c847915.indval) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x48)) + e3:SetValue(1) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_DESTROYED) + e4:SetCondition(c847915.descon) + e4:SetOperation(c847915.desop) + c:RegisterEffect(e4) +end +function c847915.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x48) +end +function c847915.indval(e,c) + return not c:IsSetCard(0x48) +end +function c847915.actcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c847915.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c847915.dfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0x48) +end +function c847915.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c847915.dfilter,1,nil,tp) +end +function c847915.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c84814897.lua b/script/c84814897.lua index 7bd54749..0d871222 100644 --- a/script/c84814897.lua +++ b/script/c84814897.lua @@ -16,7 +16,7 @@ function c84814897.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c84814897.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c84814897.sptg) e2:SetOperation(c84814897.spop) c:RegisterEffect(e2) @@ -25,21 +25,21 @@ function c84814897.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_UPDATE_ATTACK) e3:SetValue(900) - e3:SetCondition(c84814897.uncon) + e3:SetCondition(aux.IsUnionState) c:RegisterEffect(e3) --Def up local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP) e4:SetCode(EFFECT_UPDATE_DEFENSE) e4:SetValue(900) - e4:SetCondition(c84814897.uncon) + e4:SetCondition(aux.IsUnionState) c:RegisterEffect(e4) --direct_attack local e5=Effect.CreateEffect(c) e5:SetDescription(aux.Stringid(84814897,2)) e5:SetType(EFFECT_TYPE_IGNITION) e5:SetRange(LOCATION_SZONE) - e5:SetCondition(c84814897.uncon) + e5:SetCondition(aux.IsUnionState) e5:SetCost(c84814897.atkcost) e5:SetOperation(c84814897.atkop) c:RegisterEffect(e5) @@ -48,7 +48,7 @@ function c84814897.initial_effect(c) e6:SetType(EFFECT_TYPE_EQUIP) e6:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e6:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e6:SetCondition(c84814897.uncon) + e6:SetCondition(aux.IsUnionState) e6:SetValue(c84814897.repval) c:RegisterEffect(e6) --eqlimit @@ -59,9 +59,7 @@ function c84814897.initial_effect(c) e7:SetValue(c84814897.eqlimit) c:RegisterEffect(e7) end -function c84814897.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c84814897.old_union=true function c84814897.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -89,7 +87,7 @@ function c84814897.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c84814897.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(84814897)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c84845628.lua b/script/c84845628.lua index d67391cf..d4e9ba02 100644 --- a/script/c84845628.lua +++ b/script/c84845628.lua @@ -1,49 +1,49 @@ ---獄落鳥 -function c84845628.initial_effect(c) - --atk & def - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(c84845628.adval) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - --control - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_CONTROL) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetCost(c84845628.cost) - e3:SetTarget(c84845628.target) - e3:SetOperation(c84845628.operation) - c:RegisterEffect(e3) -end -function c84845628.adval(e,c) - local tp=c:GetControler() - return Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_TUNER)*100 -end -function c84845628.cfilter(c) - return c:IsType(TYPE_TUNER) and c:IsAbleToGraveAsCost() -end -function c84845628.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c84845628.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c84845628.cfilter,1,1,REASON_COST,nil) -end -function c84845628.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end - if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) -end -function c84845628.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.GetControl(tc,tp,PHASE_END,1) - end -end +--獄落鳥 +function c84845628.initial_effect(c) + --atk & def + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c84845628.adval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + --control + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_CONTROL) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetCost(c84845628.cost) + e3:SetTarget(c84845628.target) + e3:SetOperation(c84845628.operation) + c:RegisterEffect(e3) +end +function c84845628.adval(e,c) + local tp=c:GetControler() + return Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_TUNER)*100 +end +function c84845628.cfilter(c) + return c:IsType(TYPE_TUNER) and c:IsAbleToGraveAsCost() +end +function c84845628.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c84845628.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c84845628.cfilter,1,1,REASON_COST,nil) +end +function c84845628.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c84845628.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp,PHASE_END,1) + end +end diff --git a/script/c84877802.lua b/script/c84877802.lua index f57836dd..8a6d2b14 100644 --- a/script/c84877802.lua +++ b/script/c84877802.lua @@ -1,14 +1,6 @@ --最強の盾 function c84877802.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(c84877802.target) - e1:SetOperation(c84877802.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR)) --atk/def local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,32 +12,6 @@ function c84877802.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(c84877802.defval) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c84877802.equiplimit) - c:RegisterEffect(e4) -end -function c84877802.equiplimit(e,c) - return c:IsRace(RACE_WARRIOR) -end -function c84877802.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c84877802.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c84877802.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c84877802.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c84877802.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c84877802.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 c84877802.atkval(e,c) if c:IsDefensePos() then return 0 else return c:GetBaseDefense() end diff --git a/script/c8491961.lua b/script/c8491961.lua new file mode 100644 index 00000000..3f67c5cf --- /dev/null +++ b/script/c8491961.lua @@ -0,0 +1,89 @@ +--LL-リサイト・スターリング +function c8491961.initial_effect(c) + c:EnableReviveLimit() + aux.AddXyzProcedure(c,nil,1,2,nil,nil,5) + --ATK Up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(8491961,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c8491961.atkcon) + e1:SetTarget(c8491961.atktg) + e1:SetOperation(c8491961.atkop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c8491961.damcon) + e2:SetOperation(c8491961.damop) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(8491961,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c8491961.thcost) + e3:SetTarget(c8491961.thtg) + e3:SetOperation(c8491961.thop) + c:RegisterEffect(e3) +end +function c8491961.atkcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ + and e:GetHandler():GetOverlayCount()>0 +end +function c8491961.atktg(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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c8491961.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local oc=c:GetOverlayCount() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and oc>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300*oc) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end +function c8491961.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep==tp and c:IsRelateToBattle() and eg:GetFirst()==c:GetBattleTarget() + and bit.band(c:GetSummonType(),SUMMON_TYPE_XYZ)==SUMMON_TYPE_XYZ +end +function c8491961.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(1-ep,ev,false) +end +function c8491961.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c8491961.thfilter(c) + return c:GetLevel()==1 and c:IsRace(RACE_WINDBEAST) and c:IsAbleToHand() +end +function c8491961.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c8491961.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c8491961.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c8491961.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c84932271.lua b/script/c84932271.lua index 6f13e89d..0bcf51e0 100644 --- a/script/c84932271.lua +++ b/script/c84932271.lua @@ -1,37 +1,37 @@ ---ワーム・ジェートリクプス -function c84932271.initial_effect(c) - --flip effect - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_FLIP) - e1:SetOperation(c84932271.flipop) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(84932271,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c84932271.spcon) - e2:SetTarget(c84932271.sptg) - e2:SetOperation(c84932271.spop) - c:RegisterEffect(e2) -end -function c84932271.flipop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) then - c:RegisterFlagEffect(84932271,RESET_EVENT+0x17a0000+RESET_PHASE+PHASE_END,0,1) - end -end -function c84932271.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsReason(REASON_DESTROY) -end -function c84932271.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(84932271)~=0 end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c84932271.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--ワーム・ジェートリクプス +function c84932271.initial_effect(c) + --flip effect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_FLIP) + e1:SetOperation(c84932271.flipop) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(84932271,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c84932271.spcon) + e2:SetTarget(c84932271.sptg) + e2:SetOperation(c84932271.spop) + c:RegisterEffect(e2) +end +function c84932271.flipop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) then + c:RegisterFlagEffect(84932271,RESET_EVENT+0x17a0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c84932271.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c84932271.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(84932271)~=0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c84932271.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c84970821.lua b/script/c84970821.lua index 6f10de4a..e53751e6 100644 --- a/script/c84970821.lua +++ b/script/c84970821.lua @@ -1,28 +1,28 @@ ---暗黒の呪縛 -function c84970821.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(aux.chainreg) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetCode(EVENT_CHAIN_SOLVED) - e3:SetRange(LOCATION_SZONE) - e3:SetOperation(c84970821.damop) - c:RegisterEffect(e3) -end -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 e:GetHandler():GetFlagEffect(1)>0 then - Duel.Damage(rp,1000,REASON_EFFECT) - end -end +--暗黒の呪縛 +function c84970821.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(aux.chainreg) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetCode(EVENT_CHAIN_SOLVED) + e3:SetRange(LOCATION_SZONE) + e3:SetOperation(c84970821.damop) + c:RegisterEffect(e3) +end +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 e:GetHandler():GetFlagEffect(1)>0 then + Duel.Damage(rp,1000,REASON_EFFECT) + end +end diff --git a/script/c84988419.lua b/script/c84988419.lua index 7c001b49..a819c910 100644 --- a/script/c84988419.lua +++ b/script/c84988419.lua @@ -1,50 +1,50 @@ ---幻奏の華歌聖ブルーム・ディーヴァ -function c84988419.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x109b),aux.FilterBoolFunction(Card.IsFusionSetCard,0x9b),true) - --indes - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e2) - --avoid battle damage - local e3=e1:Clone() - e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_BATTLED) - e4:SetCondition(c84988419.condition) - e4:SetTarget(c84988419.target) - e4:SetOperation(c84988419.operation) - c:RegisterEffect(e4) -end -function c84988419.condition(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc and bit.band(bc:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL and c:GetBaseAttack()~=bc:GetBaseAttack() -end -function c84988419.target(e,tp,eg,ep,ev,re,r,rp,chk) - local bc=e:GetHandler():GetBattleTarget() - if chk==0 then return bc:IsRelateToBattle() end - local atk=math.abs(e:GetHandler():GetBaseAttack()-bc:GetBaseAttack()) - Duel.SetTargetCard(bc) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) -end -function c84988419.operation(e,tp,eg,ep,ev,re,r,rp) - local bc=Duel.GetFirstTarget() - local atk=math.abs(e:GetHandler():GetBaseAttack()-bc:GetBaseAttack()) - if bc:IsRelateToEffect(e) and bc:IsFaceup() and Duel.Damage(1-tp,atk,REASON_EFFECT)~=0 then - Duel.Destroy(bc,REASON_EFFECT) - end -end +--幻奏の華歌聖ブルーム・ディーヴァ +function c84988419.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x109b),aux.FilterBoolFunction(Card.IsFusionSetCard,0x9b),true) + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + --avoid battle damage + local e3=e1:Clone() + e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_BATTLED) + e4:SetCondition(c84988419.condition) + e4:SetTarget(c84988419.target) + e4:SetOperation(c84988419.operation) + c:RegisterEffect(e4) +end +function c84988419.condition(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc and bit.band(bc:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL and c:GetBaseAttack()~=bc:GetBaseAttack() +end +function c84988419.target(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return bc:IsRelateToBattle() end + local atk=math.abs(e:GetHandler():GetBaseAttack()-bc:GetBaseAttack()) + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) +end +function c84988419.operation(e,tp,eg,ep,ev,re,r,rp) + local bc=Duel.GetFirstTarget() + local atk=math.abs(e:GetHandler():GetBaseAttack()-bc:GetBaseAttack()) + if bc:IsRelateToEffect(e) and bc:IsFaceup() and Duel.Damage(1-tp,atk,REASON_EFFECT)~=0 then + Duel.Destroy(bc,REASON_EFFECT) + end +end diff --git a/script/c85004150.lua b/script/c85004150.lua index e9575437..c4218b6d 100644 --- a/script/c85004150.lua +++ b/script/c85004150.lua @@ -15,6 +15,7 @@ function c85004150.initial_effect(c) --destroy local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetHintTiming(0,0x1e0) diff --git a/script/c85060248.lua b/script/c85060248.lua index bfa2e43c..007cab18 100644 --- a/script/c85060248.lua +++ b/script/c85060248.lua @@ -1,34 +1,34 @@ ---メンタルプロテクター -function c85060248.initial_effect(c) - --cannot attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c85060248.atktarget) - c:RegisterEffect(e2) - --maintain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c85060248.mtcon) - e3:SetOperation(c85060248.mtop) - c:RegisterEffect(e3) -end -function c85060248.atktarget(e,c) - return not c:IsRace(RACE_PSYCHO) and c:IsAttackBelow(2000) -end -function c85060248.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c85060248.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(85060248,0)) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--メンタルプロテクター +function c85060248.initial_effect(c) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c85060248.atktarget) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c85060248.mtcon) + e3:SetOperation(c85060248.mtop) + c:RegisterEffect(e3) +end +function c85060248.atktarget(e,c) + return not c:IsRace(RACE_PSYCHO) and c:IsAttackBelow(2000) +end +function c85060248.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c85060248.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(85060248,0)) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c85080444.lua b/script/c85080444.lua index f768e4be..23c3b356 100644 --- a/script/c85080444.lua +++ b/script/c85080444.lua @@ -1,64 +1,65 @@ ---アーティファクト-アイギス -function c85080444.initial_effect(c) - --set - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MONSTER_SSET) - e1:SetValue(TYPE_SPELL) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(85080444,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c85080444.spcon) - e2:SetTarget(c85080444.sptg) - e2:SetOperation(c85080444.spop) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(85080444,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCondition(c85080444.indcon) - e3:SetOperation(c85080444.indop) - c:RegisterEffect(e3) -end -function c85080444.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) - and c:IsReason(REASON_DESTROY) and Duel.GetTurnPlayer()~=tp -end -function c85080444.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 c85080444.spop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) - end -end -function c85080444.indcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c85080444.tg(e,c) - return c:IsFaceup() and c:IsSetCard(0x97) -end -function c85080444.indop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e1:SetTarget(c85080444.tg) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetValue(aux.tgoval) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e2:SetValue(c85080444.tgvalue) - Duel.RegisterEffect(e2,tp) -end -function c85080444.tgvalue(e,re,rp) - return rp~=e:GetHandlerPlayer() -end +--アーティファクト-アイギス +function c85080444.initial_effect(c) + --set + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MONSTER_SSET) + e1:SetValue(TYPE_SPELL) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(85080444,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c85080444.spcon) + e2:SetTarget(c85080444.sptg) + e2:SetOperation(c85080444.spop) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(85080444,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCondition(c85080444.indcon) + e3:SetOperation(c85080444.indop) + c:RegisterEffect(e3) +end +function c85080444.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEDOWN) + and c:IsReason(REASON_DESTROY) and Duel.GetTurnPlayer()~=tp +end +function c85080444.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 c85080444.spop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP) + end +end +function c85080444.indcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c85080444.tg(e,c) + return c:IsFaceup() and c:IsSetCard(0x97) +end +function c85080444.indop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetTarget(c85080444.tg) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetValue(c85080444.tgvalue) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetValue(aux.tgoval) + Duel.RegisterEffect(e2,tp) +end +function c85080444.tgvalue(e,re,rp) + return rp~=e:GetHandlerPlayer() +end diff --git a/script/c85087012.lua b/script/c85087012.lua index d0757116..8d592889 100644 --- a/script/c85087012.lua +++ b/script/c85087012.lua @@ -1,64 +1,67 @@ ---カードガンナー -function c85087012.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(85087012,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c85087012.cost) - e1:SetOperation(c85087012.operation) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(85087012,1)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c85087012.drcon) - e2:SetTarget(c85087012.drtg) - e2:SetOperation(c85087012.drop) - c:RegisterEffect(e2) -end -function c85087012.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct==1 then - Duel.DiscardDeck(tp,1,REASON_COST) - e:SetLabel(1) - else - local ac=0 - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(85087012,2)) - if ct==2 then ac=Duel.AnnounceNumber(tp,2,1) - else ac=Duel.AnnounceNumber(tp,3,2,1) end - Duel.DiscardDeck(tp,ac,REASON_COST) - e:SetLabel(ac) - end -end -function c85087012.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFaceup() and c:IsRelateToEffect(e) then - local ct=e:GetLabel() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - e1:SetValue(ct*500) - c:RegisterEffect(e1) - end -end -function c85087012.drcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_DESTROY)~=0 and e:GetHandler():GetPreviousControler()==tp - and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c85087012.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c85087012.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--カードガンナー +function c85087012.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(85087012,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c85087012.cost) + e1:SetOperation(c85087012.operation) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(85087012,1)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c85087012.drcon) + e2:SetTarget(c85087012.drtg) + e2:SetOperation(c85087012.drop) + c:RegisterEffect(e2) +end +function c85087012.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end + local ct={} + for i=3,1,-1 do + if Duel.IsPlayerCanDiscardDeckAsCost(tp,i) then + table.insert(ct,i) + end + end + if #ct==1 then + Duel.DiscardDeck(tp,ct[1],REASON_COST) + e:SetLabel(1) + else + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(85087012,2)) + local ac=Duel.AnnounceNumber(tp,table.unpack(ct)) + Duel.DiscardDeck(tp,ac,REASON_COST) + e:SetLabel(ac) + end +end +function c85087012.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) then + local ct=e:GetLabel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + e1:SetValue(ct*500) + c:RegisterEffect(e1) + end +end +function c85087012.drcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_DESTROY)~=0 and e:GetHandler():GetPreviousControler()==tp + and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c85087012.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c85087012.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c85115440.lua b/script/c85115440.lua new file mode 100644 index 00000000..50492a19 --- /dev/null +++ b/script/c85115440.lua @@ -0,0 +1,71 @@ +--十二獣ブルホーン +function c85115440.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,4,2,c85115440.ovfilter,aux.Stringid(85115440,0),2,c85115440.xyzop) + c:EnableReviveLimit() + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c85115440.atkval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + e2:SetValue(c85115440.defval) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(85115440,1)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c85115440.cost) + e3:SetTarget(c85115440.target) + e3:SetOperation(c85115440.operation) + c:RegisterEffect(e3) +end +function c85115440.ovfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf1) and not c:IsCode(85115440) +end +function c85115440.xyzop(e,tp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,85115440)==0 end + Duel.RegisterFlagEffect(tp,85115440,RESET_PHASE+PHASE_END,0,1) +end +function c85115440.atkfilter(c) + return c:IsSetCard(0xf1) and c:GetAttack()>=0 +end +function c85115440.atkval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c85115440.atkfilter,nil) + return g:GetSum(Card.GetAttack) +end +function c85115440.deffilter(c) + return c:IsSetCard(0xf1) and c:GetDefense()>=0 +end +function c85115440.defval(e,c) + local g=e:GetHandler():GetOverlayGroup():Filter(c85115440.deffilter,nil) + return g:GetSum(Card.GetDefense) +end +function c85115440.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c85115440.filter(c) + return c:IsRace(RACE_BEASTWARRIOR) and c:IsSummonableCard() and c:IsAbleToHand() +end +function c85115440.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c85115440.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c85115440.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c85115440.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c85121942.lua b/script/c85121942.lua index a17d9733..c58bbb26 100644 --- a/script/c85121942.lua +++ b/script/c85121942.lua @@ -19,7 +19,7 @@ function c85121942.initial_effect(c) e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) e2:SetDescription(aux.Stringid(85121942,1)) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) e2:SetCondition(c85121942.descon) diff --git a/script/c85239662.lua b/script/c85239662.lua index 7db0dcca..c4bacd79 100644 --- a/script/c85239662.lua +++ b/script/c85239662.lua @@ -1,38 +1,38 @@ ---神秘の妖精 エルフィリア -function c85239662.initial_effect(c) - --xyz limit - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(85239662,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCost(c85239662.cost) - e2:SetOperation(c85239662.operation) - c:RegisterEffect(e2) -end -function c85239662.cfilter(c) - return c:IsAttribute(ATTRIBUTE_WIND) and not c:IsPublic() -end -function c85239662.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c85239662.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local g=Duel.SelectMatchingCard(tp,c85239662.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.ConfirmCards(1-tp,g) - e:SetLabel(g:GetFirst():GetLevel()) - Duel.ShuffleHand(tp) -end -function c85239662.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetTarget(c85239662.target) - e1:SetLabel(e:GetLabel()) - e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - e1:SetValue(1) - Duel.RegisterEffect(e1,tp) -end -function c85239662.target(e,c) - return c:GetLevel()~=e:GetLabel() -end +--神秘の妖精 エルフィリア +function c85239662.initial_effect(c) + --xyz limit + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(85239662,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c85239662.cost) + e2:SetOperation(c85239662.operation) + c:RegisterEffect(e2) +end +function c85239662.cfilter(c) + return c:IsAttribute(ATTRIBUTE_WIND) and not c:IsPublic() +end +function c85239662.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c85239662.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c85239662.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + e:SetLabel(g:GetFirst():GetLevel()) + Duel.ShuffleHand(tp) +end +function c85239662.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c85239662.target) + e1:SetLabel(e:GetLabel()) + e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + e1:SetValue(1) + Duel.RegisterEffect(e1,tp) +end +function c85239662.target(e,c) + return c:GetLevel()~=e:GetLabel() +end diff --git a/script/c85252081.lua b/script/c85252081.lua index a347c1d5..3907d0b6 100644 --- a/script/c85252081.lua +++ b/script/c85252081.lua @@ -14,7 +14,7 @@ function c85252081.initial_effect(c) e2:SetCategory(CATEGORY_DESTROY) e2:SetDescription(aux.Stringid(85252081,0)) e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e2:SetCondition(c85252081.descon1) diff --git a/script/c85255550.lua b/script/c85255550.lua index f7d8d679..b16141a7 100644 --- a/script/c85255550.lua +++ b/script/c85255550.lua @@ -4,7 +4,7 @@ function c85255550.initial_effect(c) e1:SetDescription(aux.Stringid(85255550,0)) e1:SetCategory(CATEGORY_DESTROY) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCode(EVENT_BATTLED) e1:SetCondition(c85255550.condition) e1:SetOperation(c85255550.operation) c:RegisterEffect(e1) diff --git a/script/c8529136.lua b/script/c8529136.lua index 4b3bb610..1ea25432 100644 --- a/script/c8529136.lua +++ b/script/c8529136.lua @@ -1,96 +1,96 @@ ---スクラップ・フィスト -function c8529136.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c8529136.condition) - e1:SetTarget(c8529136.target) - e1:SetOperation(c8529136.activate) - c:RegisterEffect(e1) -end -function c8529136.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()0 @@ -96,7 +94,7 @@ function c85359414.spop(e,tp,eg,ep,ev,re,r,rp) end end function c85359414.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsStatus(STATUS_UNION) and ep~=tp and eg:GetFirst()==e:GetHandler():GetEquipTarget() + return aux.IsUnionState(e) and ep~=tp and eg:GetFirst()==e:GetHandler():GetEquipTarget() end function c85359414.desfilter(c) return c:IsFacedown() diff --git a/script/c85374678.lua b/script/c85374678.lua index b095f90b..7ed15118 100644 --- a/script/c85374678.lua +++ b/script/c85374678.lua @@ -1,61 +1,61 @@ ---超量士グリーンレイヤー -function c85374678.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(85374678,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCountLimit(1,85374678) - e1:SetTarget(c85374678.sptg) - e1:SetOperation(c85374678.spop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - --draw - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(85374678,1)) - e3:SetCategory(CATEGORY_DRAW) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,85374679) - e3:SetCost(c85374678.drcost) - e3:SetTarget(c85374678.drtg) - e3:SetOperation(c85374678.drop) - c:RegisterEffect(e3) -end -function c85374678.filter(c,e,tp) - return c:IsSetCard(0xdc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c85374678.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c85374678.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c85374678.spop(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,c85374678.filter,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 c85374678.drcfilter(c) - return c:IsSetCard(0xdc) and c:IsDiscardable() -end -function c85374678.drcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c85374678.drcfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c85374678.drcfilter,1,1,REASON_DISCARD+REASON_COST) -end -function c85374678.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c85374678.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--超量士グリーンレイヤー +function c85374678.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(85374678,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCountLimit(1,85374678) + e1:SetTarget(c85374678.sptg) + e1:SetOperation(c85374678.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(85374678,1)) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,85374679) + e3:SetCost(c85374678.drcost) + e3:SetTarget(c85374678.drtg) + e3:SetOperation(c85374678.drop) + c:RegisterEffect(e3) +end +function c85374678.filter(c,e,tp) + return c:IsSetCard(0xdc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c85374678.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c85374678.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c85374678.spop(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,c85374678.filter,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 c85374678.drcfilter(c) + return c:IsSetCard(0xdc) and c:IsDiscardable() +end +function c85374678.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c85374678.drcfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c85374678.drcfilter,1,1,REASON_DISCARD+REASON_COST) +end +function c85374678.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c85374678.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c85431040.lua b/script/c85431040.lua index 98b9ab4a..49c031c8 100644 --- a/script/c85431040.lua +++ b/script/c85431040.lua @@ -1,51 +1,51 @@ ---イービル・ソーン -function c85431040.initial_effect(c) - --damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(85431040,0)) - e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c85431040.cost) - e1:SetTarget(c85431040.target) - e1:SetOperation(c85431040.operation) - c:RegisterEffect(e1) -end -function c85431040.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c85431040.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) -end -function c85431040.filter(c,e,tp) - return c:IsCode(85431040) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c85431040.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Damage(1-tp,300,REASON_EFFECT) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if ft>2 then ft=2 end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetMatchingGroup(c85431040.filter,tp,LOCATION_DECK,0,nil,e,tp) - if g:GetCount()==0 then return end - if Duel.SelectYesNo(tp,aux.Stringid(85431040,1)) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,ft,nil) - local tc=sg:GetFirst() - while tc do - 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() - end -end +--イービル・ソーン +function c85431040.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(85431040,0)) + e1:SetCategory(CATEGORY_DAMAGE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c85431040.cost) + e1:SetTarget(c85431040.target) + e1:SetOperation(c85431040.operation) + c:RegisterEffect(e1) +end +function c85431040.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c85431040.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,300) +end +function c85431040.filter(c,e,tp) + return c:IsCode(85431040) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c85431040.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,300,REASON_EFFECT) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>2 then ft=2 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetMatchingGroup(c85431040.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()==0 then return end + if Duel.SelectYesNo(tp,aux.Stringid(85431040,1)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,ft,nil) + local tc=sg:GetFirst() + while tc do + 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() + end +end diff --git a/script/c85446833.lua b/script/c85446833.lua index 169be040..1b372468 100644 --- a/script/c85446833.lua +++ b/script/c85446833.lua @@ -1,19 +1,19 @@ ---ゼロゼロック -function c85446833.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atklimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetValue(c85446833.target) - c:RegisterEffect(e2) -end -function c85446833.target(e,c) - return c:IsPosition(POS_FACEUP_ATTACK) and c:GetAttack()==0 -end +--ゼロゼロック +function c85446833.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atklimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(c85446833.target) + c:RegisterEffect(e2) +end +function c85446833.target(e,c) + return c:IsPosition(POS_FACEUP_ATTACK) and c:GetAttack()==0 +end diff --git a/script/c85507811.lua b/script/c85507811.lua index 0f878eb6..45a9b655 100644 --- a/script/c85507811.lua +++ b/script/c85507811.lua @@ -1,158 +1,159 @@ ---E・HERO グロー・ネオス -function c85507811.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,89943723,17732278,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c85507811.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c85507811.spcon) - e2:SetOperation(c85507811.spop) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(85507811,0)) - e3:SetCategory(CATEGORY_TODECK) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c85507811.retcon1) - e3:SetTarget(c85507811.rettg) - e3:SetOperation(c85507811.retop) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(0) - e4:SetCondition(c85507811.retcon2) - c:RegisterEffect(e4) - --destroy - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(85507811,1)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetCondition(c85507811.descon) - e5:SetTarget(c85507811.destg) - e5:SetOperation(c85507811.desop) - c:RegisterEffect(e5) -end -function c85507811.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) -end -function c85507811.spfilter(c,code) - return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) -end -function c85507811.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-1 then return false end - local g1=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,17732278) - if g1:GetCount()==0 or g2:GetCount()==0 then return false end - if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end - if ft>0 then return true end - local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) - if ft==-1 then return f1>0 and f2>0 - else return f1>0 or f2>0 end -end -function c85507811.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g1=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) - local g2=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,17732278) - g1:Merge(g2) - local g=Group.CreateGroup() - local tc=nil - for i=1,2 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - if ft<=0 then - tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() - ft=ft+1 - else - tc=g1:Select(tp,1,1,nil):GetFirst() - end - g:AddCard(tc) - if i==1 then - g1:Clear() - if tc:IsFusionCode(89943723) then - local sg=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,tc,17732278) - g1:Merge(sg) - end - if tc:IsFusionCode(17732278) then - local sg=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) - g1:Merge(sg) - end - end - end - local cg=g:Filter(Card.IsFacedown,nil) - if cg:GetCount()>0 then - Duel.ConfirmCards(1-tp,cg) - end - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c85507811.retcon1(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsHasEffect(42015635) -end -function c85507811.retcon2(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsHasEffect(42015635) -end -function c85507811.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtra() end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c85507811.retop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) -end -function c85507811.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 -end -function c85507811.filter(c) - return c:IsFaceup() -end -function c85507811.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c85507811.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c85507811.filter,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c85507811.filter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c85507811.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Destroy(tc,REASON_EFFECT) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - if tc:IsType(TYPE_MONSTER) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - elseif tc:IsType(TYPE_SPELL) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - else - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end - end -end +--E・HERO グロー・ネオス +function c85507811.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,89943723,17732278,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c85507811.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c85507811.spcon) + e2:SetOperation(c85507811.spop) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(85507811,0)) + e3:SetCategory(CATEGORY_TODECK) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c85507811.retcon1) + e3:SetTarget(c85507811.rettg) + e3:SetOperation(c85507811.retop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(0) + e4:SetCondition(c85507811.retcon2) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(85507811,1)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetCondition(c85507811.descon) + e5:SetTarget(c85507811.destg) + e5:SetOperation(c85507811.desop) + c:RegisterEffect(e5) +end +c85507811.material_setcode=0x8 +function c85507811.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) +end +function c85507811.spfilter(c,code) + return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) +end +function c85507811.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local g1=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,17732278) + if g1:GetCount()==0 or g2:GetCount()==0 then return false end + if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end + if ft>0 then return true end + local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE) + if ft==-1 then return f1>0 and f2>0 + else return f1>0 or f2>0 end +end +function c85507811.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g1=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) + local g2=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,17732278) + g1:Merge(g2) + local g=Group.CreateGroup() + local tc=nil + for i=1,2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ft<=0 then + tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + ft=ft+1 + else + tc=g1:Select(tp,1,1,nil):GetFirst() + end + g:AddCard(tc) + if i==1 then + g1:Clear() + if tc:IsFusionCode(89943723) then + local sg=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,tc,17732278) + g1:Merge(sg) + end + if tc:IsFusionCode(17732278) then + local sg=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723) + g1:Merge(sg) + end + end + end + local cg=g:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c85507811.retcon1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsHasEffect(42015635) +end +function c85507811.retcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsHasEffect(42015635) +end +function c85507811.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtra() end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c85507811.retop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or e:GetHandler():IsFacedown() then return end + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end +function c85507811.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 +end +function c85507811.filter(c) + return c:IsFaceup() +end +function c85507811.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c85507811.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c85507811.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c85507811.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c85507811.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Destroy(tc,REASON_EFFECT) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + if tc:IsType(TYPE_MONSTER) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + elseif tc:IsType(TYPE_SPELL) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + else + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end + end +end diff --git a/script/c85520851.lua b/script/c85520851.lua index e6e322fb..33f8f3d0 100644 --- a/script/c85520851.lua +++ b/script/c85520851.lua @@ -1,36 +1,36 @@ ---超伝導恐獣 -function c85520851.initial_effect(c) - --damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(85520851,0)) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c85520851.cost) - e1:SetTarget(c85520851.target) - e1:SetOperation(c85520851.operation) - c:RegisterEffect(e1) -end -function c85520851.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 and Duel.CheckReleaseGroup(tp,nil,1,nil) end - local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) - Duel.Release(sg,REASON_COST) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c85520851.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(1000) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) -end -function c85520851.operation(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--超伝導恐獣 +function c85520851.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(85520851,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c85520851.cost) + e1:SetTarget(c85520851.target) + e1:SetOperation(c85520851.operation) + c:RegisterEffect(e1) +end +function c85520851.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 and Duel.CheckReleaseGroup(tp,nil,1,nil) end + local sg=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(sg,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c85520851.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c85520851.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c85528209.lua b/script/c85528209.lua index 5453d293..2fb552dc 100644 --- a/script/c85528209.lua +++ b/script/c85528209.lua @@ -1,30 +1,30 @@ ---超重魔獣キュウ-B -function c85528209.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsSetCard,0x9a),1) - c:EnableReviveLimit() - --defense attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DEFENSE_ATTACK) - e2:SetValue(1) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_UPDATE_DEFENSE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c85528209.sccon) - e3:SetValue(c85528209.adval) - c:RegisterEffect(e3) -end -function c85528209.sccon(e) - return not Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) -end -function c85528209.adval(e,c) - return Duel.GetMatchingGroupCount(c85528209.ctfilter,c:GetControler(),0,LOCATION_MZONE,nil)*900 -end -function c85528209.ctfilter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL -end +--超重魔獣キュウ-B +function c85528209.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsSetCard,0x9a),1) + c:EnableReviveLimit() + --defense attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DEFENSE_ATTACK) + e2:SetValue(1) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c85528209.sccon) + e3:SetValue(c85528209.adval) + c:RegisterEffect(e3) +end +function c85528209.sccon(e) + return not Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) +end +function c85528209.adval(e,c) + return Duel.GetMatchingGroupCount(c85528209.ctfilter,c:GetControler(),0,LOCATION_MZONE,nil)*900 +end +function c85528209.ctfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_SPECIAL)==SUMMON_TYPE_SPECIAL +end diff --git a/script/c85541675.lua b/script/c85541675.lua index 829b6f5d..cd8fef14 100644 --- a/script/c85541675.lua +++ b/script/c85541675.lua @@ -1,57 +1,57 @@ ---カラクリ解体新書 -function c85541675.initial_effect(c) - c:EnableCounterPermit(0x12) - c:SetCounterLimit(0x12,2) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHANGE_POS) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c85541675.accon) - e2:SetOperation(c85541675.acop) - c:RegisterEffect(e2) - --draw - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DRAW) - e3:SetDescription(aux.Stringid(85541675,0)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_SZONE) - e3:SetCost(c85541675.drcost) - e3:SetTarget(c85541675.drtg) - e3:SetOperation(c85541675.drop) - c:RegisterEffect(e3) -end -function c85541675.cfilter(c) - local np=c:GetPosition() - local pp=c:GetPreviousPosition() - return c:IsSetCard(0x11) and ((pp==0x1 and np==0x4) or (pp==0x4 and np==0x1) or (pp==0x8 and np==0x1)) -end -function c85541675.accon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c85541675.cfilter,1,nil) -end -function c85541675.acop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x12,1) -end -function c85541675.drcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - local ct=e:GetHandler():GetCounter(0x12) - e:SetLabel(ct) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c85541675.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetCounter(0x12)>0 and Duel.IsPlayerCanDraw(tp,c:GetCounter(0x12)) end - local ct=e:GetLabel() - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(ct) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) -end -function c85541675.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--カラクリ解体新書 +function c85541675.initial_effect(c) + c:EnableCounterPermit(0x12) + c:SetCounterLimit(0x12,2) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c85541675.accon) + e2:SetOperation(c85541675.acop) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DRAW) + e3:SetDescription(aux.Stringid(85541675,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCost(c85541675.drcost) + e3:SetTarget(c85541675.drtg) + e3:SetOperation(c85541675.drop) + c:RegisterEffect(e3) +end +function c85541675.cfilter(c) + local np=c:GetPosition() + local pp=c:GetPreviousPosition() + return c:IsSetCard(0x11) and ((pp==0x1 and np==0x4) or (pp==0x4 and np==0x1) or (pp==0x8 and np==0x1)) +end +function c85541675.accon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c85541675.cfilter,1,nil) +end +function c85541675.acop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x12,1) +end +function c85541675.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + local ct=e:GetHandler():GetCounter(0x12) + e:SetLabel(ct) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c85541675.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetCounter(0x12)>0 and Duel.IsPlayerCanDraw(tp,c:GetCounter(0x12)) end + local ct=e:GetLabel() + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(ct) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) +end +function c85541675.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c8559793.lua b/script/c8559793.lua index 8750af2f..f556dde4 100644 --- a/script/c8559793.lua +++ b/script/c8559793.lua @@ -32,8 +32,8 @@ end function c8559793.operation(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c8559793.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c8559793.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) Duel.ShuffleDeck(tp) diff --git a/script/c85668449.lua b/script/c85668449.lua index c62645e7..c084098c 100644 --- a/script/c85668449.lua +++ b/script/c85668449.lua @@ -1,78 +1,78 @@ ---脳開発研究所 -function c85668449.initial_effect(c) - c:EnableCounterPermit(0x4) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --extra summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,LOCATION_HAND+LOCATION_MZONE) - e2:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_PSYCHO)) - e2:SetValue(c85668449.esop) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_FZONE) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetCondition(c85668449.ctcon) - e3:SetOperation(c85668449.ctop) - c:RegisterEffect(e3) - --lpcost replace - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(85668449,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_FZONE) - e3:SetCode(EFFECT_LPCOST_REPLACE) - e3:SetCondition(c85668449.lrcon) - e3:SetOperation(c85668449.lrop) - c:RegisterEffect(e3) - --damage - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_LEAVE_FIELD_P) - e4:SetOperation(c85668449.damp) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e5:SetCode(EVENT_LEAVE_FIELD) - e5:SetOperation(c85668449.damop) - e5:SetLabelObject(e4) - c:RegisterEffect(e5) -end -function c85668449.esop(e,c) - c:RegisterFlagEffect(85668449,RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END,0,1) -end -function c85668449.ctcon(e,tp,eg,ep,ev,re,r,rp) - return eg:GetFirst():GetFlagEffect(85668449)~=0 -end -function c85668449.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x4,1) - eg:GetFirst():ResetFlagEffect(85668449) -end -function c85668449.lrcon(e,tp,eg,ep,ev,re,r,rp) - if tp~=ep then return false end - local lp=Duel.GetLP(ep) - if lp<=ev then return false end - if not re or not re:IsHasType(0x7e0) then return false end - local rc=re:GetHandler() - return rc:IsLocation(LOCATION_MZONE) and rc:IsRace(RACE_PSYCHO) -end -function c85668449.lrop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x4,1) -end -function c85668449.damp(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetCounter(0x4) - e:SetLabel(ct) -end -function c85668449.damop(e,tp,eg,ep,ev,re,r,rp) - local ct=e:GetLabelObject():GetLabel() - if ct>0 then - Duel.Damage(tp,ct*1000,REASON_EFFECT) - end -end +--脳開発研究所 +function c85668449.initial_effect(c) + c:EnableCounterPermit(0x4) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --extra summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,LOCATION_HAND+LOCATION_MZONE) + e2:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_PSYCHO)) + e2:SetValue(c85668449.esop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetCondition(c85668449.ctcon) + e3:SetOperation(c85668449.ctop) + c:RegisterEffect(e3) + --lpcost replace + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(85668449,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EFFECT_LPCOST_REPLACE) + e3:SetCondition(c85668449.lrcon) + e3:SetOperation(c85668449.lrop) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD_P) + e4:SetOperation(c85668449.damp) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetOperation(c85668449.damop) + e5:SetLabelObject(e4) + c:RegisterEffect(e5) +end +function c85668449.esop(e,c) + c:RegisterFlagEffect(85668449,RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END,0,1) +end +function c85668449.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():GetFlagEffect(85668449)~=0 +end +function c85668449.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x4,1) + eg:GetFirst():ResetFlagEffect(85668449) +end +function c85668449.lrcon(e,tp,eg,ep,ev,re,r,rp) + if tp~=ep then return false end + local lp=Duel.GetLP(ep) + if lp0 then + Duel.Damage(tp,ct*1000,REASON_EFFECT) + end +end diff --git a/script/c85682655.lua b/script/c85682655.lua index 94ccc27c..238f735d 100644 --- a/script/c85682655.lua +++ b/script/c85682655.lua @@ -15,7 +15,7 @@ end function c85682655.target(e,tp,eg,ep,ev,re,r,rp,chk) local tc=Duel.GetAttacker() if tc==e:GetHandler() then tc=Duel.GetAttackTarget() end - if chk==0 then return tc and not tc:IsStatus(STATUS_BATTLE_DESTROYED) and tc:IsRelateToBattle() end + if chk==0 then return tc and tc:IsRelateToBattle() end Duel.SetOperationInfo(0,CATEGORY_DESTROY,tc,1,0,0) end function c85682655.operation(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c85754829.lua b/script/c85754829.lua index c051cdd1..18f0f47d 100644 --- a/script/c85754829.lua +++ b/script/c85754829.lua @@ -1,32 +1,32 @@ ---ワーム・グルス -function c85754829.initial_effect(c) - c:EnableCounterPermit(0xf) - --add counter - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_CHANGE_POS) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c85754829.accon) - e1:SetOperation(c85754829.acop) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c85754829.atkval) - c:RegisterEffect(e2) -end -function c85754829.atkval(e,c) - return c:GetCounter(0xf)*300 -end -function c85754829.cfilter(c) - return bit.band(c:GetPreviousPosition(),POS_FACEDOWN)~=0 and bit.band(c:GetPosition(),POS_FACEUP)~=0 -end -function c85754829.accon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c85754829.cfilter,1,e:GetHandler()) -end -function c85754829.acop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0xf,1) -end +--ワーム・グルス +function c85754829.initial_effect(c) + c:EnableCounterPermit(0xf) + --add counter + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHANGE_POS) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c85754829.accon) + e1:SetOperation(c85754829.acop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c85754829.atkval) + c:RegisterEffect(e2) +end +function c85754829.atkval(e,c) + return c:GetCounter(0xf)*300 +end +function c85754829.cfilter(c) + return bit.band(c:GetPreviousPosition(),POS_FACEDOWN)~=0 and bit.band(c:GetPosition(),POS_FACEUP)~=0 +end +function c85754829.accon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c85754829.cfilter,1,e:GetHandler()) +end +function c85754829.acop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0xf,1) +end diff --git a/script/c85800949.lua b/script/c85800949.lua index 92c4e38d..522b036a 100644 --- a/script/c85800949.lua +++ b/script/c85800949.lua @@ -1,68 +1,68 @@ ---伝説の騎士 クリティウス -function c85800949.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e1) - --remove - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(85800949,0)) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e2:SetTarget(c85800949.rmtg) - e2:SetOperation(c85800949.rmop) - c:RegisterEffect(e2) - --set - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(85800949,1)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BE_BATTLE_TARGET) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetTarget(c85800949.settg) - e3:SetOperation(c85800949.setop) - c:RegisterEffect(e3) -end -function c85800949.rmfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemove() and c:IsFaceup() -end -function c85800949.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c85800949.rmfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c85800949.rmfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c85800949.rmfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c85800949.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsType(TYPE_SPELL+TYPE_TRAP) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end -function c85800949.setfilter(c) - return c:IsType(TYPE_TRAP) and c:IsSSetable() -end -function c85800949.settg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c85800949.setfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c85800949.setfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) - local g=Duel.SelectTarget(tp,c85800949.setfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) -end -function c85800949.setop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsSSetable() then - Duel.SSet(tp,tc) - Duel.ConfirmCards(1-tp,tc) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end +--伝説の騎士 クリティウス +function c85800949.initial_effect(c) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e1) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(85800949,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetTarget(c85800949.rmtg) + e2:SetOperation(c85800949.rmop) + c:RegisterEffect(e2) + --set + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(85800949,1)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetTarget(c85800949.settg) + e3:SetOperation(c85800949.setop) + c:RegisterEffect(e3) +end +function c85800949.rmfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemove() and c:IsFaceup() +end +function c85800949.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c85800949.rmfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c85800949.rmfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c85800949.rmfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c85800949.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsType(TYPE_SPELL+TYPE_TRAP) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end +function c85800949.setfilter(c) + return c:IsType(TYPE_TRAP) and c:IsSSetable() +end +function c85800949.settg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c85800949.setfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c85800949.setfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local g=Duel.SelectTarget(tp,c85800949.setfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) +end +function c85800949.setop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsSSetable() then + Duel.SSet(tp,tc) + Duel.ConfirmCards(1-tp,tc) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TRAP_ACT_IN_SET_TURN) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c8581705.lua b/script/c8581705.lua index e32ba702..b2850273 100644 --- a/script/c8581705.lua +++ b/script/c8581705.lua @@ -1,75 +1,74 @@ ---インフェルノクインデーモン -function c8581705.initial_effect(c) - --maintain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c8581705.mtcon) - e1:SetOperation(c8581705.mtop) - c:RegisterEffect(e1) - --disable and destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c8581705.disop) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(8581705,0)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_MZONE) - e3:SetTarget(c8581705.atktg) - e3:SetOperation(c8581705.atkop) - c:RegisterEffect(e3) -end -function c8581705.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c8581705.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -function c8581705.disop(e,tp,eg,ep,ev,re,r,rp) - if ep==tp then return end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end - local rc=re:GetHandler() - local dc=Duel.TossDice(tp,1) - if dc~=2 and dc~=5 then return end - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then - Duel.Destroy(rc,REASON_EFFECT) - end -end -function c8581705.filter(c) - return c:IsFaceup() and c:IsSetCard(0x45) -end -function c8581705.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c8581705.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c8581705.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c8581705.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c8581705.atkop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--インフェルノクインデーモン +function c8581705.initial_effect(c) + --maintain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c8581705.mtcon) + e1:SetOperation(c8581705.mtop) + c:RegisterEffect(e1) + --disable and destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c8581705.disop) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(8581705,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c8581705.atktg) + e3:SetOperation(c8581705.atkop) + c:RegisterEffect(e3) +end +function c8581705.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c8581705.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c8581705.disop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end + local rc=re:GetHandler() + local dc=Duel.TossDice(tp,1) + if dc~=2 and dc~=5 then return end + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end +end +function c8581705.filter(c) + return c:IsFaceup() and c:IsSetCard(0x45) +end +function c8581705.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c8581705.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c8581705.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c8581705.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c8581705.atkop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c85839825.lua b/script/c85839825.lua index 6269b0b4..c0e56caa 100644 --- a/script/c85839825.lua +++ b/script/c85839825.lua @@ -1,35 +1,35 @@ ---エクシーズエナジー -function c85839825.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c85839825.cost) - e1:SetTarget(c85839825.target) - e1:SetOperation(c85839825.activate) - c:RegisterEffect(e1) -end -function c85839825.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,0,1,REASON_COST) end - Duel.Hint(HINT_SELECTMSG,tp,532) - local sg=Duel.SelectMatchingCard(tp,Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,0,1,1,nil,tp,1,REASON_COST) - sg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_COST) -end -function c85839825.filter(c) - return c:IsFaceup() -end -function c85839825.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c85839825.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c85839825.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c85839825.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c85839825.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--エクシーズエナジー +function c85839825.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c85839825.cost) + e1:SetTarget(c85839825.target) + e1:SetOperation(c85839825.activate) + c:RegisterEffect(e1) +end +function c85839825.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckRemoveOverlayCard(tp,1,0,1,REASON_COST) end + Duel.Hint(HINT_SELECTMSG,tp,532) + local sg=Duel.SelectMatchingCard(tp,Card.CheckRemoveOverlayCard,tp,LOCATION_MZONE,0,1,1,nil,tp,1,REASON_COST) + sg:GetFirst():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c85839825.filter(c) + return c:IsFaceup() +end +function c85839825.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c85839825.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c85839825.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c85839825.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c85839825.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c85854214.lua b/script/c85854214.lua index 370cbfc8..6ed1b090 100644 --- a/script/c85854214.lua +++ b/script/c85854214.lua @@ -24,8 +24,7 @@ function c85854214.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c85854214.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c85908279.lua b/script/c85908279.lua new file mode 100644 index 00000000..54810582 --- /dev/null +++ b/script/c85908279.lua @@ -0,0 +1,30 @@ +--召喚獣コキュートス +function c85908279.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,86120751,aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_WATER),1,true,true) + --cannot target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetValue(aux.tgoval) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c85908279.indval) + c:RegisterEffect(e2) + --defense attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DEFENSE_ATTACK) + c:RegisterEffect(e3) +end +function c85908279.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end diff --git a/script/c85909450.lua b/script/c85909450.lua index 8c26ed01..8ff447a9 100644 --- a/script/c85909450.lua +++ b/script/c85909450.lua @@ -1,56 +1,56 @@ ---ハーピィズペット幻竜 -function c85909450.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND),4,3) - c:EnableReviveLimit() - --direct attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetCondition(c85909450.effcon) - c:RegisterEffect(e1) - --cannot be target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetCondition(c85909450.effcon) - e2:SetValue(c85909450.atlimit) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x64)) - e3:SetCondition(c85909450.effcon) - e3:SetValue(aux.tgoval) - c:RegisterEffect(e3) - --remove material - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(85909450,0)) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_PHASE+PHASE_END) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1) - e4:SetCondition(c85909450.rmcon) - e4:SetOperation(c85909450.rmop) - c:RegisterEffect(e4) -end -function c85909450.effcon(e) - return e:GetHandler():GetOverlayCount()>0 -end -function c85909450.atlimit(e,c) - return c:IsFaceup() and c:IsSetCard(0x64) -end -function c85909450.rmcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c85909450.rmop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetOverlayCount()>0 then - c:RemoveOverlayCard(tp,1,1,REASON_EFFECT) - end -end +--ハーピィズペット幻竜 +function c85909450.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND),4,3) + c:EnableReviveLimit() + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetCondition(c85909450.effcon) + c:RegisterEffect(e1) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetCondition(c85909450.effcon) + e2:SetValue(c85909450.atlimit) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x64)) + e3:SetCondition(c85909450.effcon) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) + --remove material + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(85909450,0)) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_END) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetCondition(c85909450.rmcon) + e4:SetOperation(c85909450.rmop) + c:RegisterEffect(e4) +end +function c85909450.effcon(e) + return e:GetHandler():GetOverlayCount()>0 +end +function c85909450.atlimit(e,c) + return c:IsFaceup() and c:IsSetCard(0x64) +end +function c85909450.rmcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c85909450.rmop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetOverlayCount()>0 then + c:RemoveOverlayCard(tp,1,1,REASON_EFFECT) + end +end diff --git a/script/c85967160.lua b/script/c85967160.lua index 8fa2a957..0827ce08 100644 --- a/script/c85967160.lua +++ b/script/c85967160.lua @@ -1,47 +1,47 @@ ---アロマージ-ベルガモット -function c85967160.initial_effect(c) - --pierce - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_PIERCE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetCondition(c85967160.pccon) - e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_PLANT)) - c:RegisterEffect(e1) - --atk & def - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_RECOVER) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c85967160.adcon) - e2:SetTarget(c85967160.adtg) - e2:SetOperation(c85967160.adop) - c:RegisterEffect(e2) -end -function c85967160.pccon(e) - local tp=e:GetHandlerPlayer() - return Duel.GetLP(tp)>Duel.GetLP(1-tp) -end -function c85967160.adcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp -end -function c85967160.adtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return ep==tp and e:GetHandler():IsRelateToEffect(e) end -end -function c85967160.adop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(1000) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - end -end +--アロマージ-ベルガモット +function c85967160.initial_effect(c) + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_PIERCE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCondition(c85967160.pccon) + e1:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_PLANT)) + c:RegisterEffect(e1) + --atk & def + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_RECOVER) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c85967160.adcon) + e2:SetTarget(c85967160.adtg) + e2:SetOperation(c85967160.adop) + c:RegisterEffect(e2) +end +function c85967160.pccon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetLP(tp)>Duel.GetLP(1-tp) +end +function c85967160.adcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c85967160.adtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return ep==tp and e:GetHandler():IsRelateToEffect(e) end +end +function c85967160.adop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + end +end diff --git a/script/c85991529.lua b/script/c85991529.lua index 7f08fb5a..256c2192 100644 --- a/script/c85991529.lua +++ b/script/c85991529.lua @@ -1,4 +1,4 @@ ---Kozmo Dark Planet +--Kozmo-ダークプラネット function c85991529.initial_effect(c) c:EnableReviveLimit() --special summon condition @@ -84,8 +84,7 @@ function c85991529.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c85991529.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c86013171.lua b/script/c86013171.lua index 7cf56214..20452f9f 100644 --- a/script/c86013171.lua +++ b/script/c86013171.lua @@ -1,4 +1,4 @@ ---Kozmo Scaredy Lion +--Kozmo-パーヴィッド function c86013171.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) diff --git a/script/c86062400.lua b/script/c86062400.lua index 19081401..2f51b0d1 100644 --- a/script/c86062400.lua +++ b/script/c86062400.lua @@ -1,62 +1,62 @@ ---エクシーズ・アヴェンジャー -function c86062400.initial_effect(c) - --immune - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetValue(c86062400.efilter) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(86062400,0)) - e2:SetCategory(CATEGORY_TOGRAVE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_BATTLE_DESTROYED) - e2:SetCondition(c86062400.tgcon) - e2:SetTarget(c86062400.tgtg) - e2:SetOperation(c86062400.tgop) - c:RegisterEffect(e2) -end -function c86062400.efilter(e,te) - return te:IsActiveType(TYPE_XYZ) -end -function c86062400.tgcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) - and bc:IsFaceup() and bc:IsRelateToBattle() and bc:IsType(TYPE_XYZ) -end -function c86062400.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local rk=e:GetHandler():GetBattleTarget():GetRank() - if rk<5 then - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,1-tp,LOCATION_EXTRA) - else - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,rk,1-tp,LOCATION_EXTRA) - end -end -function c86062400.tgop(e,tp,eg,ep,ev,re,r,rp) - local bc=e:GetHandler():GetBattleTarget() - if bc:IsFaceup() and bc:IsRelateToBattle() then - local rk=bc:GetRank() - local g=nil - local tg=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,0,LOCATION_EXTRA,nil) - if tg:GetCount()==0 then return end - if rk<4 then - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) - g=tg:Select(1-tp,1,1,nil) - elseif rk==4 then - Duel.ConfirmCards(tp,tg) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - g=tg:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) - g=tg:Select(1-tp,rk,rk,nil) - end - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end - end -end +--エクシーズ・アヴェンジャー +function c86062400.initial_effect(c) + --immune + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c86062400.efilter) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(86062400,0)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c86062400.tgcon) + e2:SetTarget(c86062400.tgtg) + e2:SetOperation(c86062400.tgop) + c:RegisterEffect(e2) +end +function c86062400.efilter(e,te) + return te:IsActiveType(TYPE_XYZ) +end +function c86062400.tgcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) + and bc:IsFaceup() and bc:IsRelateToBattle() and bc:IsType(TYPE_XYZ) +end +function c86062400.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local rk=e:GetHandler():GetBattleTarget():GetRank() + if rk<5 then + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,1-tp,LOCATION_EXTRA) + else + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,rk,1-tp,LOCATION_EXTRA) + end +end +function c86062400.tgop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + if bc:IsFaceup() and bc:IsRelateToBattle() then + local rk=bc:GetRank() + local g=nil + local tg=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,0,LOCATION_EXTRA,nil) + if tg:GetCount()==0 then return end + if rk<4 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) + g=tg:Select(1-tp,1,1,nil) + elseif rk==4 then + Duel.ConfirmCards(tp,tg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + g=tg:Select(tp,1,1,nil) + else + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) + g=tg:Select(1-tp,rk,rk,nil) + end + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end + end +end diff --git a/script/c86100785.lua b/script/c86100785.lua index eef45692..9744edf4 100644 --- a/script/c86100785.lua +++ b/script/c86100785.lua @@ -4,7 +4,7 @@ function c86100785.initial_effect(c) e1:SetDescription(aux.Stringid(86100785,0)) e1:SetCategory(CATEGORY_DESTROY) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCode(EVENT_BATTLED) e1:SetCondition(c86100785.condition) e1:SetOperation(c86100785.operation) c:RegisterEffect(e1) diff --git a/script/c86120751.lua b/script/c86120751.lua new file mode 100644 index 00000000..8a1a4215 --- /dev/null +++ b/script/c86120751.lua @@ -0,0 +1,75 @@ +--召喚師アレイスター +function c86120751.initial_effect(c) + --boost + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86120751,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) + e1:SetCondition(c86120751.adcon) + e1:SetCost(c86120751.adcost) + e1:SetTarget(c86120751.adtg) + e1:SetOperation(c86120751.adop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(86120751,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c86120751.thtg) + e2:SetOperation(c86120751.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP) + c:RegisterEffect(e3) +end +function c86120751.adcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c86120751.adcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c86120751.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) +end +function c86120751.adtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c86120751.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c86120751.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c86120751.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c86120751.adop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(1000) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end +function c86120751.thfilter(c) + return c:IsCode(74063034) and c:IsAbleToHand() +end +function c86120751.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c86120751.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c86120751.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstMatchingCard(c86120751.thfilter,tp,LOCATION_DECK,0,nil) + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c86137485.lua b/script/c86137485.lua index 728d510f..3f25db0d 100644 --- a/script/c86137485.lua +++ b/script/c86137485.lua @@ -1,54 +1,54 @@ ---ヘル・ツイン・コップ -function c86137485.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_FIEND),aux.NonTuner(nil),1) - c:EnableReviveLimit() - --chain attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(86137485,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetCondition(c86137485.atcon1) - e1:SetOperation(c86137485.atop1) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(86137485,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_DESTROYING) - e2:SetCondition(c86137485.atcon2) - e2:SetOperation(c86137485.atop2) - c:RegisterEffect(e2) -end -function c86137485.atcon1(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return Duel.GetTurnPlayer()==tp and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) - and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) -end -function c86137485.atop1(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(800) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - Duel.ChainAttack() -end -function c86137485.atcon2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return Duel.GetTurnPlayer()~=tp and c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) - and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) -end -function c86137485.atop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(800) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end +--ヘル・ツイン・コップ +function c86137485.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_FIEND),aux.NonTuner(nil),1) + c:EnableReviveLimit() + --chain attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86137485,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c86137485.atcon1) + e1:SetOperation(c86137485.atop1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(86137485,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c86137485.atcon2) + e2:SetOperation(c86137485.atop2) + c:RegisterEffect(e2) +end +function c86137485.atcon1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return Duel.GetTurnPlayer()==tp and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) + and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) +end +function c86137485.atop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + Duel.ChainAttack() +end +function c86137485.atcon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return Duel.GetTurnPlayer()~=tp and c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) + and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c86137485.atop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c86157908.lua b/script/c86157908.lua index 202164e1..9591f2c3 100644 --- a/script/c86157908.lua +++ b/script/c86157908.lua @@ -19,7 +19,7 @@ function c86157908.initial_effect(c) e3:SetCategory(CATEGORY_RECOVER) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) e3:SetTarget(c86157908.target) e3:SetOperation(c86157908.operation) c:RegisterEffect(e3) @@ -45,7 +45,8 @@ function c86157908.atkop(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end local tc=Duel.GetFirstTarget() local at=Duel.GetAttacker() - if at:IsFaceup() and at:IsRelateToBattle() and tc:IsFaceup() and tc:IsRelateToEffect(e) then + if at:IsFaceup() and at:IsRelateToBattle() and at:IsAttackable() and not at:IsStatus(STATUS_ATTACK_CANCELED) + and tc:IsFaceup() and tc:IsRelateToEffect(e) then local atk=tc:GetBaseAttack() local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_SINGLE) diff --git a/script/c86174055.lua b/script/c86174055.lua index 907f1981..f35c2c92 100644 --- a/script/c86174055.lua +++ b/script/c86174055.lua @@ -1,52 +1,52 @@ ---スピッド・バード -function c86174055.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(86174055,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetCondition(c86174055.condition) - e1:SetTarget(c86174055.target) - e1:SetOperation(c86174055.operation) - c:RegisterEffect(e1) -end -function c86174055.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c86174055.filter(c,e,tp) - return c:GetLevel()==2 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c86174055.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c86174055.filter(chkc,e,tp) end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c86174055.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c86174055.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) -end -function c86174055.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) - if g:GetCount()<=ct then - local tc=g:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - tc=g:GetNext() - end - Duel.SpecialSummonComplete() - end -end +--スピッド・バード +function c86174055.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86174055,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c86174055.condition) + e1:SetTarget(c86174055.target) + e1:SetOperation(c86174055.operation) + c:RegisterEffect(e1) +end +function c86174055.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c86174055.filter(c,e,tp) + return c:GetLevel()==2 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c86174055.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c86174055.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsExistingTarget(c86174055.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c86174055.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c86174055.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + local ct=Duel.GetLocationCount(tp,LOCATION_MZONE) + if g:GetCount()<=ct then + if g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c86196216.lua b/script/c86196216.lua index f2901f44..8deaa128 100644 --- a/script/c86196216.lua +++ b/script/c86196216.lua @@ -1,63 +1,63 @@ ---RUM-デス・ダブル・フォース -function c86196216.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetHintTiming(0,TIMING_DESTROY+TIMING_END_PHASE) - e1:SetTarget(c86196216.target) - e1:SetOperation(c86196216.activate) - c:RegisterEffect(e1) - if not c86196216.globle_check then - c86196216.globle_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - ge1:SetCode(EVENT_TO_GRAVE) - ge1:SetOperation(c86196216.checkop) - Duel.RegisterEffect(ge1,0) - end -end -function c86196216.checkop(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - while tc do - if tc:IsSetCard(0xba) and tc:IsType(TYPE_XYZ) and tc:IsReason(REASON_DESTROY) and tc:IsReason(REASON_BATTLE) then - tc:RegisterFlagEffect(86196216,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - end - tc=eg:GetNext() - end -end -function c86196216.filter1(c,e,tp) - return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetFlagEffect(86196216)~=0 - and Duel.IsExistingMatchingCard(c86196216.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()*2) -end -function c86196216.filter2(c,e,tp,mc,rk) - return c:GetRank()==rk and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c86196216.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c86196216.filter1(chkc,e,tp) end - if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c86196216.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c86196216.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,tp,LOCATION_EXTRA) -end -function c86196216.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end - if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c86196216.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()*2) - local sc=g:GetFirst() - if sc then - Duel.BreakEffect() - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end -end +--RUM-デス・ダブル・フォース +function c86196216.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(0,TIMING_DESTROY+TIMING_END_PHASE) + e1:SetTarget(c86196216.target) + e1:SetOperation(c86196216.activate) + c:RegisterEffect(e1) + if not c86196216.globle_check then + c86196216.globle_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(c86196216.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c86196216.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + if tc:IsSetCard(0xba) and tc:IsType(TYPE_XYZ) and tc:IsReason(REASON_DESTROY) and tc:IsReason(REASON_BATTLE) then + tc:RegisterFlagEffect(86196216,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end + tc=eg:GetNext() + end +end +function c86196216.filter1(c,e,tp) + return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:GetFlagEffect(86196216)~=0 + and Duel.IsExistingMatchingCard(c86196216.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()*2) +end +function c86196216.filter2(c,e,tp,mc,rk) + return c:GetRank()==rk and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c86196216.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c86196216.filter1(chkc,e,tp) end + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c86196216.filter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c86196216.filter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,tp,LOCATION_EXTRA) +end +function c86196216.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) then return end + if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c86196216.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()*2) + local sc=g:GetFirst() + if sc then + Duel.BreakEffect() + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c86197239.lua b/script/c86197239.lua index cf7e67a8..11248b9a 100644 --- a/script/c86197239.lua +++ b/script/c86197239.lua @@ -1,53 +1,52 @@ ---インフェルニティ・ミラージュ -function c86197239.initial_effect(c) - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetRange(LOCATION_GRAVE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.FALSE) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(86197239,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c86197239.spcon) - e2:SetCost(c86197239.spcost) - e2:SetTarget(c86197239.sptg) - e2:SetOperation(c86197239.spop) - c:RegisterEffect(e2) -end -function c86197239.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 -end -function c86197239.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c86197239.filter(c,e,tp) - return c:IsSetCard(0xb) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c86197239.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c86197239.filter(chkc,e,tp) end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c86197239.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c86197239.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) -end -function c86197239.spop(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local sg=g:Filter(Card.IsRelateToEffect,nil,e) - if ft0 then - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - end -end +--インフェルニティ・ミラージュ +function c86197239.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_SINGLE_RANGE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(86197239,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c86197239.spcon) + e2:SetCost(c86197239.spcost) + e2:SetTarget(c86197239.sptg) + e2:SetOperation(c86197239.spop) + c:RegisterEffect(e2) +end +function c86197239.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 +end +function c86197239.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c86197239.filter(c,e,tp) + return c:IsSetCard(0xb) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c86197239.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c86197239.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c86197239.filter,tp,LOCATION_GRAVE,0,2,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c86197239.filter,tp,LOCATION_GRAVE,0,2,2,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c86197239.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if ft1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if sg:GetCount()>0 then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c86198326.lua b/script/c86198326.lua index 5d4633df..2bf43587 100644 --- a/script/c86198326.lua +++ b/script/c86198326.lua @@ -1,41 +1,12 @@ --7カード function c86198326.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(c86198326.target) - e1:SetOperation(c86198326.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(c86198326.eqlimit) - c:RegisterEffect(e2) -end -function c86198326.eqlimit(e,c) - return c:IsRace(RACE_MACHINE) -end -function c86198326.filter(c) - return c:IsFaceup() and c:IsRace(RACE_MACHINE) -end -function c86198326.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c86198326.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c86198326.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c86198326.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),nil,nil,nil,c86198326.operation) end function c86198326.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 local opt=Duel.SelectOption(tp,aux.Stringid(86198326,0),aux.Stringid(86198326,1)) - Duel.Equip(tp,c,tc) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_EQUIP) if opt==0 then diff --git a/script/c86221741.lua b/script/c86221741.lua index 31b3d9d4..3306d825 100644 --- a/script/c86221741.lua +++ b/script/c86221741.lua @@ -13,6 +13,7 @@ function c86221741.initial_effect(c) c:RegisterEffect(e1) --act limit local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCost(c86221741.cost) diff --git a/script/c86238081.lua b/script/c86238081.lua new file mode 100644 index 00000000..83f9b52b --- /dev/null +++ b/script/c86238081.lua @@ -0,0 +1,135 @@ +--覇王烈竜オッドアイズ・レイジング・ドラゴン +function c86238081.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),7,2) + c:EnableReviveLimit() + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --pendulum set + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86238081,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetTarget(c86238081.pctg) + e1:SetOperation(c86238081.pcop) + c:RegisterEffect(e1) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c86238081.regcon) + e2:SetOperation(c86238081.regop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_MATERIAL_CHECK) + e3:SetValue(c86238081.valcheck) + e3:SetLabelObject(e2) + c:RegisterEffect(e3) + --extra attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_EXTRA_ATTACK) + e4:SetValue(1) + e4:SetCondition(c86238081.effcon) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(86238081,1)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetProperty(EFFECT_FLAG2_XMDETACH) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCondition(c86238081.effcon) + e5:SetCost(c86238081.descost) + e5:SetTarget(c86238081.destg) + e5:SetOperation(c86238081.desop) + c:RegisterEffect(e5) + --pendulum + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(86238081,2)) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_DESTROYED) + e6:SetProperty(EFFECT_FLAG_DELAY) + e6:SetCondition(c86238081.pencon) + e6:SetTarget(c86238081.pentg) + e6:SetOperation(c86238081.penop) + c:RegisterEffect(e6) +end +c86238081.pendulum_level=7 +function c86238081.pcfilter(c) + return c:IsType(TYPE_PENDULUM) and not c:IsForbidden() +end +function c86238081.pctg(e,tp,eg,ep,ev,re,r,rp,chk) + local seq=e:GetHandler():GetSequence() + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) + and Duel.IsExistingMatchingCard(c86238081.pcfilter,tp,LOCATION_DECK,0,1,nil) end +end +function c86238081.pcop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local seq=e:GetHandler():GetSequence() + if not Duel.CheckLocation(tp,LOCATION_SZONE,13-seq) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) + local g=Duel.SelectMatchingCard(tp,c86238081.pcfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.MoveToField(g:GetFirst(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end +function c86238081.regcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ and e:GetLabel()==1 +end +function c86238081.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(86238081,RESET_EVENT+0x1fe0000,0,1) + c:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(86238081,3)) +end +function c86238081.effcon(e) + return e:GetHandler():GetFlagEffect(86238081)>0 +end +function c86238081.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c86238081.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)>0 end + local sg=Duel.GetFieldGroup(tp,0,LOCATION_ONFIELD) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c86238081.desop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local sg=Duel.GetFieldGroup(tp,0,LOCATION_ONFIELD) + local ct=Duel.Destroy(sg,REASON_EFFECT) + if ct>0 and c:IsFaceup() and c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(ct*200) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c86238081.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsType,1,nil,TYPE_XYZ) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end +function c86238081.pencon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() +end +function c86238081.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end +end +function c86238081.penop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end diff --git a/script/c86240887.lua b/script/c86240887.lua index b0a177ba..393dbe26 100644 --- a/script/c86240887.lua +++ b/script/c86240887.lua @@ -1,64 +1,64 @@ ---竜破壊の剣士-バスター・ブレイダー -function c86240887.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,78193831,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),1,true,true) - --cannot direct attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - c:RegisterEffect(e1) - --ATK Gain - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c86240887.val) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --spsummon condition - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EFFECT_SPSUMMON_CONDITION) - e4:SetValue(aux.fuslimit) - c:RegisterEffect(e4) - --Pos Change - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_SET_POSITION) - e5:SetRange(LOCATION_MZONE) - e5:SetTarget(c86240887.target) - e5:SetTargetRange(0,LOCATION_MZONE) - e5:SetValue(POS_FACEUP_DEFENSE) - c:RegisterEffect(e5) - --Prevent Activation - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD) - e6:SetRange(LOCATION_MZONE) - e6:SetCode(EFFECT_CANNOT_ACTIVATE) - e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e6:SetTargetRange(0,1) - e6:SetValue(c86240887.aclimit) - c:RegisterEffect(e6) - --pierce - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e7) -end -function c86240887.val(e,c) - return Duel.GetMatchingGroupCount(c86240887.filter,c:GetControler(),0,LOCATION_GRAVE+LOCATION_MZONE,nil)*1000 -end -function c86240887.filter(c) - return c:IsRace(RACE_DRAGON) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) -end -function c86240887.target(e,c) - return c:IsRace(RACE_DRAGON) -end -function c86240887.aclimit(e,re,tp) - return re:GetHandler():IsRace(RACE_DRAGON) and re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) -end +--竜破壊の剣士-バスター・ブレイダー +function c86240887.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,78193831,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),1,true,true) + --cannot direct attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e1) + --ATK Gain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c86240887.val) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --spsummon condition + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_SPSUMMON_CONDITION) + e4:SetValue(aux.fuslimit) + c:RegisterEffect(e4) + --Pos Change + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_SET_POSITION) + e5:SetRange(LOCATION_MZONE) + e5:SetTarget(c86240887.target) + e5:SetTargetRange(0,LOCATION_MZONE) + e5:SetValue(POS_FACEUP_DEFENSE) + c:RegisterEffect(e5) + --Prevent Activation + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EFFECT_CANNOT_ACTIVATE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetTargetRange(0,1) + e6:SetValue(c86240887.aclimit) + c:RegisterEffect(e6) + --pierce + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e7) +end +function c86240887.val(e,c) + return Duel.GetMatchingGroupCount(c86240887.filter,c:GetControler(),0,LOCATION_GRAVE+LOCATION_MZONE,nil)*1000 +end +function c86240887.filter(c) + return c:IsRace(RACE_DRAGON) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) +end +function c86240887.target(e,c) + return c:IsRace(RACE_DRAGON) +end +function c86240887.aclimit(e,re,tp) + return re:GetHandler():IsRace(RACE_DRAGON) and re:IsActiveType(TYPE_MONSTER) and not re:GetHandler():IsImmuneToEffect(e) +end diff --git a/script/c86274272.lua b/script/c86274272.lua index ff8e896e..5ce16a56 100644 --- a/script/c86274272.lua +++ b/script/c86274272.lua @@ -1,114 +1,114 @@ ---聖霊獣騎 アペライオ -function c86274272.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10b5),aux.FilterBoolFunction(Card.IsFusionSetCard,0x20b5),true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c86274272.sprcon) - e2:SetOperation(c86274272.sprop) - c:RegisterEffect(e2) - --immune - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetOperation(c86274272.atkop) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetHintTiming(0,TIMING_END_PHASE) - e4:SetRange(LOCATION_MZONE) - e4:SetCost(c86274272.spcost) - e4:SetTarget(c86274272.sptg) - e4:SetOperation(c86274272.spop) - c:RegisterEffect(e4) -end -function c86274272.spfilter1(c,tp) - return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() - and Duel.IsExistingMatchingCard(c86274272.spfilter2,tp,LOCATION_MZONE,0,1,c) -end -function c86274272.spfilter2(c) - return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() -end -function c86274272.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c86274272.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) -end -function c86274272.sprop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g1=Duel.SelectMatchingCard(tp,c86274272.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=Duel.SelectMatchingCard(tp,c86274272.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) - g1:Merge(g2) - c:SetMaterial(g1) - Duel.Remove(g1,POS_FACEUP,REASON_COST) -end -function c86274272.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetValue(c86274272.efilter) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) - c:RegisterEffect(e1) -end -function c86274272.efilter(e,te) - return te:GetOwner()~=e:GetOwner() -end -function c86274272.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToExtraAsCost() end - Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_COST) -end -function c86274272.filter1(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x10b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingTarget(c86274272.filter2,tp,LOCATION_REMOVED,0,1,c,e,tp) -end -function c86274272.filter2(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x20b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c86274272.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c86274272.filter1,tp,LOCATION_REMOVED,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectTarget(tp,c86274272.filter1,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectTarget(tp,c86274272.filter2,tp,LOCATION_REMOVED,0,1,1,g1:GetFirst(),e,tp) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) -end -function c86274272.spop(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()==0 then return end - if g:GetCount()<=ft then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,ft,ft,nil) - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - g:Sub(sg) - Duel.SendtoGrave(g,REASON_RULE) - end -end +--聖霊獣騎 アペライオ +function c86274272.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10b5),aux.FilterBoolFunction(Card.IsFusionSetCard,0x20b5),true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c86274272.sprcon) + e2:SetOperation(c86274272.sprop) + c:RegisterEffect(e2) + --immune + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetOperation(c86274272.atkop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetHintTiming(0,TIMING_END_PHASE) + e4:SetRange(LOCATION_MZONE) + e4:SetCost(c86274272.spcost) + e4:SetTarget(c86274272.sptg) + e4:SetOperation(c86274272.spop) + c:RegisterEffect(e4) +end +function c86274272.spfilter1(c,tp) + return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c86274272.spfilter2,tp,LOCATION_MZONE,0,1,c) +end +function c86274272.spfilter2(c) + return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() +end +function c86274272.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c86274272.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) +end +function c86274272.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c86274272.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c86274272.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) + g1:Merge(g2) + c:SetMaterial(g1) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c86274272.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c86274272.efilter) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + c:RegisterEffect(e1) +end +function c86274272.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c86274272.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToExtraAsCost() end + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_COST) +end +function c86274272.filter1(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x10b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingTarget(c86274272.filter2,tp,LOCATION_REMOVED,0,1,c,e,tp) +end +function c86274272.filter2(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x20b5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c86274272.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c86274272.filter1,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectTarget(tp,c86274272.filter1,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectTarget(tp,c86274272.filter2,tp,LOCATION_REMOVED,0,1,1,g1:GetFirst(),e,tp) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g1,2,0,0) +end +function c86274272.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 then return end + if g:GetCount()<=ft then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,ft,ft,nil) + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + g:Sub(sg) + Duel.SendtoGrave(g,REASON_RULE) + end +end diff --git a/script/c86318356.lua b/script/c86318356.lua index cb31940f..0ebe0b8d 100644 --- a/script/c86318356.lua +++ b/script/c86318356.lua @@ -1,21 +1,21 @@ ---草原 -function c86318356.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_WARRIOR+RACE_BEASTWARRIOR)) - e2:SetValue(200) - c:RegisterEffect(e2) - --Def - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end +--草原 +function c86318356.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_WARRIOR+RACE_BEASTWARRIOR)) + e2:SetValue(200) + c:RegisterEffect(e2) + --Def + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end diff --git a/script/c86321248.lua b/script/c86321248.lua index e15eb9fa..e58b0ef5 100644 --- a/script/c86321248.lua +++ b/script/c86321248.lua @@ -9,6 +9,7 @@ function c86321248.initial_effect(c) --summon success local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_SUMMON_SUCCESS) e2:SetCondition(c86321248.regcon) e2:SetOperation(c86321248.regop) @@ -40,7 +41,7 @@ function c86321248.regop(e,tp,eg,ep,ev,re,r,rp) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetValue(300) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) end if bit.band(flag,0x2)~=0 then @@ -53,7 +54,7 @@ function c86321248.regop(e,tp,eg,ep,ev,re,r,rp) e1:SetCondition(c86321248.damcon1) e1:SetTarget(c86321248.damtg1) e1:SetOperation(c86321248.damop) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) end if bit.band(flag,0x4)~=0 then @@ -64,7 +65,7 @@ function c86321248.regop(e,tp,eg,ep,ev,re,r,rp) e1:SetCode(EVENT_BATTLE_DESTROYING) e1:SetTarget(c86321248.damtg2) e1:SetOperation(c86321248.damop) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) end end diff --git a/script/c86346643.lua b/script/c86346643.lua index 46e65175..b6be83a2 100644 --- a/script/c86346643.lua +++ b/script/c86346643.lua @@ -1,99 +1,100 @@ ---レインボー・ネオス -function c86346643.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,89943723,aux.FilterBoolFunction(Card.IsFusionSetCard,0x2034),1,false,false) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --to deck - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(86346643,1)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCategory(CATEGORY_TODECK) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e2:SetCost(c86346643.tdcost1) - e2:SetTarget(c86346643.tdtg1) - e2:SetOperation(c86346643.tdop1) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(86346643,2)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetCategory(CATEGORY_TODECK) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e3:SetCost(c86346643.tdcost2) - e3:SetTarget(c86346643.tdtg2) - e3:SetOperation(c86346643.tdop2) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(86346643,3)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetCategory(CATEGORY_TODECK) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e4:SetCost(c86346643.tdcost3) - e4:SetTarget(c86346643.tdtg3) - e4:SetOperation(c86346643.tdop3) - c:RegisterEffect(e4) -end -function c86346643.cfilter1(c) - return c:IsAbleToGraveAsCost() -end -function c86346643.tdcost1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c86346643.cfilter1,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c86346643.cfilter1,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c86346643.tdtg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c86346643.tdop1(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,nil) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) -end -function c86346643.cfilter2(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGraveAsCost() -end -function c86346643.tdcost2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c86346643.cfilter2,tp,LOCATION_ONFIELD,0,1,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c86346643.cfilter2,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c86346643.filter2(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() -end -function c86346643.tdtg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c86346643.filter2,tp,0,LOCATION_ONFIELD,1,nil) end - local g=Duel.GetMatchingGroup(c86346643.filter2,tp,0,LOCATION_ONFIELD,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c86346643.tdop2(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c86346643.filter2,tp,0,LOCATION_ONFIELD,nil) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) -end -function c86346643.tdcost3(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.DiscardDeck(tp,1,REASON_COST) -end -function c86346643.tdtg3(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,1,nil) end - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) -end -function c86346643.tdop3(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,nil) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) -end +--レインボー・ネオス +function c86346643.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,89943723,aux.FilterBoolFunction(Card.IsFusionSetCard,0x2034),1,false,false) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --to deck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(86346643,1)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCategory(CATEGORY_TODECK) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCost(c86346643.tdcost1) + e2:SetTarget(c86346643.tdtg1) + e2:SetOperation(c86346643.tdop1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(86346643,2)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCategory(CATEGORY_TODECK) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e3:SetCost(c86346643.tdcost2) + e3:SetTarget(c86346643.tdtg2) + e3:SetOperation(c86346643.tdop2) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(86346643,3)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetCategory(CATEGORY_TODECK) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e4:SetCost(c86346643.tdcost3) + e4:SetTarget(c86346643.tdtg3) + e4:SetOperation(c86346643.tdop3) + c:RegisterEffect(e4) +end +c86346643.material_setcode=0x8 +function c86346643.cfilter1(c) + return c:IsAbleToGraveAsCost() +end +function c86346643.tdcost1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c86346643.cfilter1,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c86346643.cfilter1,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c86346643.tdtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c86346643.tdop1(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_MZONE,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end +function c86346643.cfilter2(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGraveAsCost() +end +function c86346643.tdcost2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c86346643.cfilter2,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c86346643.cfilter2,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c86346643.filter2(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToDeck() +end +function c86346643.tdtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c86346643.filter2,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c86346643.filter2,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c86346643.tdop2(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c86346643.filter2,tp,0,LOCATION_ONFIELD,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end +function c86346643.tdcost3(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.DiscardDeck(tp,1,REASON_COST) +end +function c86346643.tdtg3(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c86346643.tdop3(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,nil) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c86396750.lua b/script/c86396750.lua index 33d74cff..1478dbcb 100644 --- a/script/c86396750.lua +++ b/script/c86396750.lua @@ -1,45 +1,45 @@ ---精霊獣 アペライオ -function c86396750.initial_effect(c) - c:SetSPSummonOnce(86396750) - --atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(86396750,0)) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) - e1:SetCountLimit(1) - e1:SetCondition(c86396750.atkcon) - e1:SetCost(c86396750.atkcost) - e1:SetOperation(c86396750.atkop) - c:RegisterEffect(e1) -end -function c86396750.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c86396750.cfilter(c) - return c:IsSetCard(0xb5) and c:IsAbleToRemoveAsCost() -end -function c86396750.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c86396750.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c86396750.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c86396750.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c86396750.atktg) - e1:SetValue(500) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - Duel.RegisterEffect(e2,tp) -end -function c86396750.atktg(e,c) - return c:IsSetCard(0xb5) -end +--精霊獣 アペライオ +function c86396750.initial_effect(c) + c:SetSPSummonOnce(86396750) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86396750,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) + e1:SetCountLimit(1) + e1:SetCondition(c86396750.atkcon) + e1:SetCost(c86396750.atkcost) + e1:SetOperation(c86396750.atkop) + c:RegisterEffect(e1) +end +function c86396750.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c86396750.cfilter(c) + return c:IsSetCard(0xb5) and c:IsAbleToRemoveAsCost() +end +function c86396750.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c86396750.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c86396750.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c86396750.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c86396750.atktg) + e1:SetValue(500) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + Duel.RegisterEffect(e2,tp) +end +function c86396750.atktg(e,c) + return c:IsSetCard(0xb5) +end diff --git a/script/c86466163.lua b/script/c86466163.lua index d41ee574..df4be93e 100644 --- a/script/c86466163.lua +++ b/script/c86466163.lua @@ -1,36 +1,36 @@ ---星因士 カペラ -function c86466163.initial_effect(c) - Duel.EnableGlobalFlag(GLOBALFLAG_XMAT_COUNT_LIMIT) - --xyzlv - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(86466163,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCountLimit(1,86466163) - e1:SetOperation(c86466163.operation) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) -end -function c86466163.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_XYZ_LEVEL) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c86466163.xyztg) - e1:SetValue(c86466163.xyzlv) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c86466163.xyztg(e,c) - return c:IsLevelBelow(4) and c:IsSetCard(0x9c) -end -function c86466163.xyzlv(e,c,rc) - return 0x30050000+c:GetLevel() -end +--星因士 カペラ +function c86466163.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_XMAT_COUNT_LIMIT) + --xyzlv + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86466163,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,86466163) + e1:SetOperation(c86466163.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) +end +function c86466163.operation(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_XYZ_LEVEL) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c86466163.xyztg) + e1:SetValue(c86466163.xyzlv) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c86466163.xyztg(e,c) + return c:IsLevelBelow(4) and c:IsSetCard(0x9c) +end +function c86466163.xyzlv(e,c,rc) + return 0x30050000+c:GetLevel() +end diff --git a/script/c86474024.lua b/script/c86474024.lua index 058ab3f5..e192d498 100644 --- a/script/c86474024.lua +++ b/script/c86474024.lua @@ -29,8 +29,7 @@ function c86474024.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c86474024.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c86489182.lua b/script/c86489182.lua index 24ff4f99..4e3342b1 100644 --- a/script/c86489182.lua +++ b/script/c86489182.lua @@ -1,70 +1,70 @@ ---始祖神鳥シムルグ -function c86489182.initial_effect(c) - --normal monster - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EFFECT_ADD_TYPE) - e1:SetValue(TYPE_NORMAL) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_REMOVE_TYPE) - e2:SetValue(TYPE_EFFECT) - c:RegisterEffect(e2) - --decrease tribute - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_DECREASE_TRIBUTE) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(LOCATION_HAND,LOCATION_HAND) - e3:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND)) - e3:SetValue(0x10001) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_DECREASE_TRIBUTE_SET) - c:RegisterEffect(e4) - --summon success - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(86489182,0)) - e5:SetCategory(CATEGORY_TOHAND) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e5:SetCode(EVENT_SUMMON_SUCCESS) - e5:SetCondition(c86489182.condition) - e5:SetTarget(c86489182.target) - e5:SetOperation(c86489182.operation) - c:RegisterEffect(e5) - --tribute check - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_MATERIAL_CHECK) - e6:SetValue(c86489182.valcheck) - e6:SetLabelObject(e5) - c:RegisterEffect(e6) -end -function c86489182.valcheck(e,c) - local g=c:GetMaterial() - if g:FilterCount(Card.IsAttribute,nil,ATTRIBUTE_WIND)==g:GetCount() then - e:GetLabelObject():SetLabel(1) - else - e:GetLabelObject():SetLabel(0) - end -end -function c86489182.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 -end -function c86489182.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,2,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c86489182.operation(e,tp,eg,ep,ev,re,r,rp) - local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - local g=tg:Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - end -end +--始祖神鳥シムルグ +function c86489182.initial_effect(c) + --normal monster + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_NORMAL) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_REMOVE_TYPE) + e2:SetValue(TYPE_EFFECT) + c:RegisterEffect(e2) + --decrease tribute + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DECREASE_TRIBUTE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e3:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND)) + e3:SetValue(0x10001) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_DECREASE_TRIBUTE_SET) + c:RegisterEffect(e4) + --summon success + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(86489182,0)) + e5:SetCategory(CATEGORY_TOHAND) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_SUMMON_SUCCESS) + e5:SetCondition(c86489182.condition) + e5:SetTarget(c86489182.target) + e5:SetOperation(c86489182.operation) + c:RegisterEffect(e5) + --tribute check + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_MATERIAL_CHECK) + e6:SetValue(c86489182.valcheck) + e6:SetLabelObject(e5) + c:RegisterEffect(e6) +end +function c86489182.valcheck(e,c) + local g=c:GetMaterial() + if g:FilterCount(Card.IsAttribute,nil,ATTRIBUTE_WIND)==g:GetCount() then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end +function c86489182.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 +end +function c86489182.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,0,LOCATION_ONFIELD,1,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c86489182.operation(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local g=tg:Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end diff --git a/script/c86516889.lua b/script/c86516889.lua index 31dcbf18..aaf02d30 100644 --- a/script/c86516889.lua +++ b/script/c86516889.lua @@ -1,36 +1,36 @@ ---ゴーストリック・パニック -function c86516889.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1e0) - e1:SetTarget(c86516889.target) - e1:SetOperation(c86516889.activate) - c:RegisterEffect(e1) -end -function c86516889.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:IsFacedown() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) - local g=Duel.SelectTarget(tp,Card.IsFacedown,tp,LOCATION_MZONE,0,1,5,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c86516889.filter(c,e) - return c:IsFacedown() and c:IsRelateToEffect(e) -end -function c86516889.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c86516889.filter,nil,e) - Duel.ChangePosition(g,POS_FACEUP_DEFENSE) - local ct=g:FilterCount(Card.IsSetCard,nil,0x8d) - if ct>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local sg=Duel.SelectMatchingCard(tp,Card.IsCanTurnSet,tp,0,LOCATION_MZONE,1,ct,nil) - if sg:GetCount()>0 then - Duel.HintSelection(sg) - Duel.ChangePosition(sg,POS_FACEDOWN_DEFENSE) - end - end -end +--ゴーストリック・パニック +function c86516889.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c86516889.target) + e1:SetOperation(c86516889.activate) + c:RegisterEffect(e1) +end +function c86516889.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:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEDOWN) + local g=Duel.SelectTarget(tp,Card.IsFacedown,tp,LOCATION_MZONE,0,1,5,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c86516889.filter(c,e) + return c:IsFacedown() and c:IsRelateToEffect(e) +end +function c86516889.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c86516889.filter,nil,e) + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + local ct=g:FilterCount(Card.IsSetCard,nil,0x8d) + if ct>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local sg=Duel.SelectMatchingCard(tp,Card.IsCanTurnSet,tp,0,LOCATION_MZONE,1,ct,nil) + if sg:GetCount()>0 then + Duel.HintSelection(sg) + Duel.ChangePosition(sg,POS_FACEDOWN_DEFENSE) + end + end +end diff --git a/script/c86532744.lua b/script/c86532744.lua index 7f39174f..a7046662 100644 --- a/script/c86532744.lua +++ b/script/c86532744.lua @@ -8,7 +8,7 @@ function c86532744.initial_effect(c) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) e1:SetDescription(aux.Stringid(86532744,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c86532744.condition) e1:SetCost(c86532744.cost) diff --git a/script/c86559484.lua b/script/c86559484.lua index 32b02820..181dde86 100644 --- a/script/c86559484.lua +++ b/script/c86559484.lua @@ -1,68 +1,68 @@ ---X-レイ・ピアース -function c86559484.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(86559484,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,86559484) - e1:SetCost(c86559484.spcost) - e1:SetTarget(c86559484.sptg) - e1:SetOperation(c86559484.spop) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(86559484,1)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,86559485) - e2:SetCondition(c86559484.damcon) - e2:SetTarget(c86559484.damtg) - e2:SetOperation(c86559484.damop) - c:RegisterEffect(e2) -end -function c86559484.cfilter(c,rac) - return c:IsRace(rac) and c:IsAbleToRemoveAsCost() -end -function c86559484.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c86559484.cfilter,tp,LOCATION_GRAVE,0,1,nil,RACE_DRAGON) - and Duel.IsExistingMatchingCard(c86559484.cfilter,tp,LOCATION_GRAVE,0,1,nil,RACE_WYRM) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g1=Duel.SelectMatchingCard(tp,c86559484.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,RACE_DRAGON) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=Duel.SelectMatchingCard(tp,c86559484.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,RACE_WYRM) - g1:Merge(g2) - Duel.Remove(g1,POS_FACEUP,REASON_COST) -end -function c86559484.spfilter(c,e,tp) - return c:IsCode(86559484) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c86559484.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c86559484.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c86559484.spop(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,c86559484.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end -function c86559484.damcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c86559484.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) -end -function c86559484.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--X-レイ・ピアース +function c86559484.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86559484,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,86559484) + e1:SetCost(c86559484.spcost) + e1:SetTarget(c86559484.sptg) + e1:SetOperation(c86559484.spop) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(86559484,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,86559485) + e2:SetCondition(c86559484.damcon) + e2:SetTarget(c86559484.damtg) + e2:SetOperation(c86559484.damop) + c:RegisterEffect(e2) +end +function c86559484.cfilter(c,rac) + return c:IsRace(rac) and c:IsAbleToRemoveAsCost() +end +function c86559484.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c86559484.cfilter,tp,LOCATION_GRAVE,0,1,nil,RACE_DRAGON) + and Duel.IsExistingMatchingCard(c86559484.cfilter,tp,LOCATION_GRAVE,0,1,nil,RACE_WYRM) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g1=Duel.SelectMatchingCard(tp,c86559484.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,RACE_DRAGON) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=Duel.SelectMatchingCard(tp,c86559484.cfilter,tp,LOCATION_GRAVE,0,1,1,nil,RACE_WYRM) + g1:Merge(g2) + Duel.Remove(g1,POS_FACEUP,REASON_COST) +end +function c86559484.spfilter(c,e,tp) + return c:IsCode(86559484) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c86559484.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c86559484.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c86559484.spop(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,c86559484.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end +function c86559484.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c86559484.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c86559484.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c86676862.lua b/script/c86676862.lua index 685879f5..b8be6389 100644 --- a/script/c86676862.lua +++ b/script/c86676862.lua @@ -1,49 +1,50 @@ ---E-HERO マリシャス・デビル -function c86676862.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,58554959,c86676862.ffilter,1,true,true) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(c86676862.splimit) - c:RegisterEffect(e2) - --Pos Change - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_SET_POSITION) - e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetCondition(c86676862.poscon) - e3:SetValue(POS_FACEUP_ATTACK) - c:RegisterEffect(e3) - --must attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_MUST_ATTACK) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(0,LOCATION_MZONE) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_MUST_ATTACK_MONSTER) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_MUST_BE_ATTACKED) - e6:SetValue(1) - c:RegisterEffect(e6) -end -c86676862.dark_calling=true -function c86676862.splimit(e,se,sp,st) - return st==SUMMON_TYPE_FUSION+0x10 -end -function c86676862.ffilter(c) - return c:IsRace(RACE_FIEND) and c:GetLevel()>=6 -end -function c86676862.poscon(e) - local ph=Duel.GetCurrentPhase() - return Duel.GetTurnPlayer()~=e:GetHandler():GetControler() and ph>=0x8 and ph<=0x20 -end +--E-HERO マリシャス・デビル +function c86676862.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,58554959,c86676862.ffilter,1,true,true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(c86676862.splimit) + c:RegisterEffect(e2) + --Pos Change + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SET_POSITION) + e3:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetCondition(c86676862.poscon) + e3:SetValue(POS_FACEUP_ATTACK) + c:RegisterEffect(e3) + --must attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_MUST_ATTACK) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_MUST_ATTACK_MONSTER) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_MUST_BE_ATTACKED) + e6:SetValue(1) + c:RegisterEffect(e6) +end +c86676862.material_setcode=0x8 +c86676862.dark_calling=true +function c86676862.splimit(e,se,sp,st) + return st==SUMMON_TYPE_FUSION+0x10 +end +function c86676862.ffilter(c) + return c:IsRace(RACE_FIEND) and c:GetLevel()>=6 +end +function c86676862.poscon(e) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=e:GetHandler():GetControler() and ph>=0x8 and ph<=0x20 +end diff --git a/script/c86690572.lua b/script/c86690572.lua index 73478f1a..bcc981de 100644 --- a/script/c86690572.lua +++ b/script/c86690572.lua @@ -1,69 +1,68 @@ ---炎渦の胎動 -function c86690572.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c86690572.condition) - e1:SetCost(c86690572.cost) - e1:SetTarget(c86690572.target) - e1:SetOperation(c86690572.activate) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetDescription(aux.Stringid(86690572,0)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_GRAVE) - e2:SetCost(c86690572.thcost) - e2:SetTarget(c86690572.thtg) - e2:SetOperation(c86690572.thop) - c:RegisterEffect(e2) -end -function c86690572.condition(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c86690572.cfilter(c) - return c:IsSetCard(0x39) and c:IsAbleToGraveAsCost() -end -function c86690572.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c86690572.cfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c86690572.cfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c86690572.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c86690572.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c86690572.thfilter(c) - return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToRemoveAsCost() -end -function c86690572.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c86690572.thfilter,tp,LOCATION_GRAVE,0,2,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c86690572.thfilter,tp,LOCATION_GRAVE,0,2,2,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c86690572.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToHand() and not e:GetHandler():IsStatus(STATUS_CHAINING) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c86690572.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,c) - end -end +--炎渦の胎動 +function c86690572.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c86690572.condition) + e1:SetCost(c86690572.cost) + e1:SetTarget(c86690572.target) + e1:SetOperation(c86690572.activate) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetDescription(aux.Stringid(86690572,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c86690572.thcost) + e2:SetTarget(c86690572.thtg) + e2:SetOperation(c86690572.thop) + c:RegisterEffect(e2) +end +function c86690572.condition(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c86690572.cfilter(c) + return c:IsSetCard(0x39) and c:IsAbleToGraveAsCost() +end +function c86690572.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c86690572.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c86690572.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c86690572.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c86690572.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c86690572.thfilter(c) + return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToRemoveAsCost() +end +function c86690572.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c86690572.thfilter,tp,LOCATION_GRAVE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c86690572.thfilter,tp,LOCATION_GRAVE,0,2,2,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c86690572.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToHand() and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c86690572.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,c) + end +end diff --git a/script/c86742443.lua b/script/c86742443.lua index 1147b6e9..a891b62b 100644 --- a/script/c86742443.lua +++ b/script/c86742443.lua @@ -1,70 +1,70 @@ ---王宮の重税 -function c86742443.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_STANDBY_PHASE) - e1:SetCondition(c86742443.condition) - e1:SetTarget(c86742443.target) - e1:SetOperation(c86742443.operation) - c:RegisterEffect(e1) -end -function c86742443.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_STANDBY and Duel.GetTurnPlayer()~=tp -end -function c86742443.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)>0 end -end -function c86742443.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)==0 then return end - local g=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0):RandomSelect(tp,1) - local tc=g:GetFirst() - Duel.ConfirmCards(tp,tc) - Duel.ShuffleHand(1-tp) - local code=tc:GetCode() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetCondition(c86742443.damcon) - e1:SetOperation(c86742443.damop) - e1:SetLabel(0) - e1:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e1,tp) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetOperation(c86742443.damop2) - e2:SetLabelObject(e1) - e2:SetLabel(code) - e2:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e2,tp) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_CHAIN_SOLVING) - e3:SetOperation(c86742443.damop3) - e3:SetLabelObject(e1) - e3:SetLabel(code) - e3:SetReset(RESET_PHASE+PHASE_END,2) - Duel.RegisterEffect(e3,tp) -end -function c86742443.damcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and e:GetLabel()==0 -end -function c86742443.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.Damage(1-tp,1000,REASON_EFFECT) -end -function c86742443.damop2(e,tp,eg,ep,ev,re,r,rp) - if eg:GetFirst():IsCode(e:GetLabel()) then - Duel.Damage(tp,1000,REASON_EFFECT) - e:GetLabelObject():SetLabel(1) - end -end -function c86742443.damop3(e,tp,eg,ep,ev,re,r,rp) - if re:GetHandler():IsCode(e:GetLabel()) then - Duel.Damage(tp,1000,REASON_EFFECT) - e:GetLabelObject():SetLabel(1) - end -end +--王宮の重税 +function c86742443.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_STANDBY_PHASE) + e1:SetCondition(c86742443.condition) + e1:SetTarget(c86742443.target) + e1:SetOperation(c86742443.operation) + c:RegisterEffect(e1) +end +function c86742443.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_STANDBY and Duel.GetTurnPlayer()~=tp +end +function c86742443.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)>0 end +end +function c86742443.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(1-tp,LOCATION_HAND,0)==0 then return end + local g=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0):RandomSelect(tp,1) + local tc=g:GetFirst() + Duel.ConfirmCards(tp,tc) + Duel.ShuffleHand(1-tp) + local code=tc:GetCode() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c86742443.damcon) + e1:SetOperation(c86742443.damop) + e1:SetLabel(0) + e1:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e1,tp) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetOperation(c86742443.damop2) + e2:SetLabelObject(e1) + e2:SetLabel(code) + e2:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e2,tp) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_CHAIN_SOLVING) + e3:SetOperation(c86742443.damop3) + e3:SetLabelObject(e1) + e3:SetLabel(code) + e3:SetReset(RESET_PHASE+PHASE_END,2) + Duel.RegisterEffect(e3,tp) +end +function c86742443.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetLabel()==0 +end +function c86742443.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,1000,REASON_EFFECT) +end +function c86742443.damop2(e,tp,eg,ep,ev,re,r,rp) + if eg:GetFirst():IsCode(e:GetLabel()) then + Duel.Damage(tp,1000,REASON_EFFECT) + e:GetLabelObject():SetLabel(1) + end +end +function c86742443.damop3(e,tp,eg,ep,ev,re,r,rp) + if re:GetHandler():IsCode(e:GetLabel()) then + Duel.Damage(tp,1000,REASON_EFFECT) + e:GetLabelObject():SetLabel(1) + end +end diff --git a/script/c86801871.lua b/script/c86801871.lua index aac6c599..717984c0 100644 --- a/script/c86801871.lua +++ b/script/c86801871.lua @@ -1,43 +1,43 @@ ---スネークポット -function c86801871.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(86801871,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetTarget(c86801871.sptg) - e1:SetOperation(c86801871.spop) - c:RegisterEffect(e1) -end -function c86801871.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c86801871.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - if not Duel.IsPlayerCanSpecialSummonMonster(tp,86801872,0,0x4011,1200,1200,3,RACE_REPTILE,ATTRIBUTE_EARTH) then return end - local token=Duel.CreateToken(tp,86801872) - if Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetLabelObject(token) - e1:SetCondition(c86801871.damcon) - e1:SetOperation(c86801871.damop) - Duel.RegisterEffect(e1,tp) - end - Duel.SpecialSummonComplete() -end -function c86801871.damcon(e,tp,eg,ep,ev,re,r,rp) - local tok=e:GetLabelObject() - if eg:IsContains(tok) then - return true - else - if not tok:IsLocation(LOCATION_MZONE) then e:Reset() end - return false - end -end -function c86801871.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.Damage(1-tp,500,REASON_EFFECT) -end +--スネークポット +function c86801871.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86801871,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetTarget(c86801871.sptg) + e1:SetOperation(c86801871.spop) + c:RegisterEffect(e1) +end +function c86801871.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c86801871.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,86801872,0,0x4011,1200,1200,3,RACE_REPTILE,ATTRIBUTE_EARTH) then return end + local token=Duel.CreateToken(tp,86801872) + if Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetLabelObject(token) + e1:SetCondition(c86801871.damcon) + e1:SetOperation(c86801871.damop) + Duel.RegisterEffect(e1,tp) + end + Duel.SpecialSummonComplete() +end +function c86801871.damcon(e,tp,eg,ep,ev,re,r,rp) + local tok=e:GetLabelObject() + if eg:IsContains(tok) then + return true + else + if not tok:IsLocation(LOCATION_MZONE) then e:Reset() end + return false + end +end +function c86801871.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Damage(1-tp,500,REASON_EFFECT) +end diff --git a/script/c86827882.lua b/script/c86827882.lua index ab17a98e..5e7d8432 100644 --- a/script/c86827882.lua +++ b/script/c86827882.lua @@ -1,50 +1,50 @@ ---極星宝メギンギョルズ -function c86827882.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - 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(c86827882.condition) - e1:SetTarget(c86827882.target) - e1:SetOperation(c86827882.activate) - c:RegisterEffect(e1) -end -function c86827882.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c86827882.filter(c) - return c:IsFaceup() and (c:IsSetCard(0x42) or c:IsSetCard(0x4b)) -end -function c86827882.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c86827882.filter(chkc) end - local exc=nil - if Duel.GetCurrentPhase()==PHASE_DAMAGE and Duel.GetAttackTarget()==nil then exc=Duel.GetAttacker() end - if chk==0 then return Duel.IsExistingTarget(c86827882.filter,tp,LOCATION_MZONE,0,1,exc) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c86827882.filter,tp,LOCATION_MZONE,0,1,1,exc) -end -function c86827882.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(tc:GetBaseAttack()*2) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(tc:GetBaseDefense()*2) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end -end +--極星宝メギンギョルズ +function c86827882.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + 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(c86827882.condition) + e1:SetTarget(c86827882.target) + e1:SetOperation(c86827882.activate) + c:RegisterEffect(e1) +end +function c86827882.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c86827882.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x42) or c:IsSetCard(0x4b)) +end +function c86827882.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c86827882.filter(chkc) end + local exc=nil + if Duel.GetCurrentPhase()==PHASE_DAMAGE and Duel.GetAttackTarget()==nil then exc=Duel.GetAttacker() end + if chk==0 then return Duel.IsExistingTarget(c86827882.filter,tp,LOCATION_MZONE,0,1,exc) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c86827882.filter,tp,LOCATION_MZONE,0,1,1,exc) +end +function c86827882.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(tc:GetBaseAttack()*2) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(tc:GetBaseDefense()*2) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end diff --git a/script/c86848580.lua b/script/c86848580.lua index 6613b53f..47cab710 100644 --- a/script/c86848580.lua +++ b/script/c86848580.lua @@ -7,6 +7,7 @@ function c86848580.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(86848580,0)) e1:SetCategory(CATEGORY_DISABLE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c86868952.lua b/script/c86868952.lua index 5ed841b7..59bdefc0 100644 --- a/script/c86868952.lua +++ b/script/c86868952.lua @@ -1,54 +1,54 @@ ---武神器-ヤツカ -function c86868952.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(86868952,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCondition(c86868952.condition) - e1:SetCost(c86868952.cost) - e1:SetTarget(c86868952.target) - e1:SetOperation(c86868952.operation) - c:RegisterEffect(e1) -end -function c86868952.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c86868952.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c86868952.filter(c) - return c:IsFaceup() and c:IsSetCard(0x88) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) -end -function c86868952.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c86868952.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c86868952.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c86868952.filter,tp,LOCATION_MZONE,0,1,1,nil) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetProperty(EFFECT_FLAG_OATH) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c86868952.ftarget) - e1:SetLabel(g:GetFirst():GetFieldID()) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c86868952.ftarget(e,c) - return e:GetLabel()~=c:GetFieldID() -end -function c86868952.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - tc:RegisterEffect(e1) - end -end +--武神器-ヤツカ +function c86868952.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86868952,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c86868952.condition) + e1:SetCost(c86868952.cost) + e1:SetTarget(c86868952.target) + e1:SetOperation(c86868952.operation) + c:RegisterEffect(e1) +end +function c86868952.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c86868952.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c86868952.filter(c) + return c:IsFaceup() and c:IsSetCard(0x88) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) +end +function c86868952.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c86868952.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c86868952.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c86868952.filter,tp,LOCATION_MZONE,0,1,1,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c86868952.ftarget) + e1:SetLabel(g:GetFirst():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c86868952.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c86868952.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end diff --git a/script/c86871614.lua b/script/c86871614.lua index 68a6a843..1c0a33b2 100644 --- a/script/c86871614.lua +++ b/script/c86871614.lua @@ -1,77 +1,77 @@ ---クローン複製 -function c86871614.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCondition(c86871614.condition) - e1:SetTarget(c86871614.target) - e1:SetOperation(c86871614.activate) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c86871614.condition(e,tp,eg,ep,ev,re,r,rp) - local ec=eg:GetFirst() - return ep~=tp -end -function c86871614.target(e,tp,eg,ep,ev,re,r,rp,chk) - local ec=eg:GetFirst() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and - Duel.IsPlayerCanSpecialSummonMonster(tp,86871615,0,0x4011,ec:GetBaseAttack(),ec:GetBaseDefense(), - ec:GetOriginalLevel(),ec:GetOriginalRace(),ec:GetOriginalAttribute()) end - ec:CreateEffectRelation(e) - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) -end -function c86871614.activate(e,tp,eg,ep,ev,re,r,rp) - local ec=eg:GetFirst() - if not ec:IsRelateToEffect(e) or ec:IsFacedown() then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,86871615,0,0x4011,ec:GetBaseAttack(),ec:GetBaseDefense(), - ec:GetOriginalLevel(),ec:GetOriginalRace(),ec:GetOriginalAttribute()) then return end - ec:RegisterFlagEffect(86871614,RESET_EVENT+0x17a0000,0,0) - local token=Duel.CreateToken(tp,86871615) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_BASE_ATTACK) - e1:SetValue(ec:GetBaseAttack()) - e1:SetReset(RESET_EVENT+0xfe0000) - token:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_BASE_DEFENSE) - e2:SetValue(ec:GetBaseDefense()) - token:RegisterEffect(e2) - local e3=e1:Clone() - e3:SetCode(EFFECT_CHANGE_LEVEL) - e3:SetValue(ec:GetOriginalLevel()) - token:RegisterEffect(e3) - local e4=e1:Clone() - e4:SetCode(EFFECT_CHANGE_RACE) - e4:SetValue(ec:GetOriginalRace()) - token:RegisterEffect(e4) - local e5=e1:Clone() - e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) - e5:SetValue(ec:GetOriginalAttribute()) - token:RegisterEffect(e5) - Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) - local de=Effect.CreateEffect(e:GetHandler()) - de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - de:SetRange(LOCATION_MZONE) - de:SetCode(EVENT_TO_GRAVE) - de:SetCondition(c86871614.descon) - de:SetOperation(c86871614.desop) - de:SetReset(RESET_EVENT+0xfe0000) - token:RegisterEffect(de) -end -function c86871614.dfilter(c) - return c:IsReason(REASON_DESTROY) and c:GetFlagEffect(86871614)~=0 -end -function c86871614.descon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c86871614.dfilter,1,nil) -end -function c86871614.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--クローン複製 +function c86871614.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c86871614.condition) + e1:SetTarget(c86871614.target) + e1:SetOperation(c86871614.activate) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c86871614.condition(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + return ep~=tp +end +function c86871614.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ec=eg:GetFirst() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and + Duel.IsPlayerCanSpecialSummonMonster(tp,86871615,0,0x4011,ec:GetBaseAttack(),ec:GetBaseDefense(), + ec:GetOriginalLevel(),ec:GetOriginalRace(),ec:GetOriginalAttribute()) end + ec:CreateEffectRelation(e) + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c86871614.activate(e,tp,eg,ep,ev,re,r,rp) + local ec=eg:GetFirst() + if not ec:IsRelateToEffect(e) or ec:IsFacedown() then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,86871615,0,0x4011,ec:GetBaseAttack(),ec:GetBaseDefense(), + ec:GetOriginalLevel(),ec:GetOriginalRace(),ec:GetOriginalAttribute()) then return end + ec:RegisterFlagEffect(86871614,RESET_EVENT+0x17a0000,0,0) + local token=Duel.CreateToken(tp,86871615) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetValue(ec:GetBaseAttack()) + e1:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_BASE_DEFENSE) + e2:SetValue(ec:GetBaseDefense()) + token:RegisterEffect(e2) + local e3=e1:Clone() + e3:SetCode(EFFECT_CHANGE_LEVEL) + e3:SetValue(ec:GetOriginalLevel()) + token:RegisterEffect(e3) + local e4=e1:Clone() + e4:SetCode(EFFECT_CHANGE_RACE) + e4:SetValue(ec:GetOriginalRace()) + token:RegisterEffect(e4) + local e5=e1:Clone() + e5:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e5:SetValue(ec:GetOriginalAttribute()) + token:RegisterEffect(e5) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) + local de=Effect.CreateEffect(e:GetHandler()) + de:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + de:SetRange(LOCATION_MZONE) + de:SetCode(EVENT_TO_GRAVE) + de:SetCondition(c86871614.descon) + de:SetOperation(c86871614.desop) + de:SetReset(RESET_EVENT+0xfe0000) + token:RegisterEffect(de) +end +function c86871614.dfilter(c) + return c:IsReason(REASON_DESTROY) and c:GetFlagEffect(86871614)~=0 +end +function c86871614.descon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c86871614.dfilter,1,nil) +end +function c86871614.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c8692301.lua b/script/c8692301.lua index e5c807df..c1446e50 100644 --- a/script/c8692301.lua +++ b/script/c8692301.lua @@ -1,6 +1,6 @@ ---ジェムナイト・ジルコニア -function c8692301.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsRace,RACE_ROCK),true) -end +--ジェムナイト・ジルコニア +function c8692301.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsRace,RACE_ROCK),true) +end diff --git a/script/c86937530.lua b/script/c86937530.lua new file mode 100644 index 00000000..a329ed55 --- /dev/null +++ b/script/c86937530.lua @@ -0,0 +1,81 @@ +--妖精伝姫-カグヤ +--Fairy Tail – Kaguya +--Script by dest +function c86937530.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86937530,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c86937530.target) + e1:SetOperation(c86937530.operation) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(86937530,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetHintTiming(0,0x1e0) + e2:SetTarget(c86937530.thtg) + e2:SetOperation(c86937530.thop) + c:RegisterEffect(e2) +end +function c86937530.filter(c) + return c:GetAttack()==1850 and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToHand() +end +function c86937530.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c86937530.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c86937530.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c86937530.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c86937530.thfilter(c) + return c:IsFaceup() and c:IsAbleToHand() +end +function c86937530.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(c86937530.thfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c86937530.thfilter,tp,0,LOCATION_MZONE,1,1,nil) + g:AddCard(e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,2,0,0) +end +function c86937530.cfilter(c,code) + return c:IsCode(code) and c:IsAbleToGraveAsCost() +end +function c86937530.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if Duel.IsChainDisablable(0) then + local sel=1 + local g=Duel.GetMatchingGroup(c86937530.cfilter,tp,0,LOCATION_DECK+LOCATION_EXTRA,nil,tc:GetCode()) + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(86937530,2)) + if g:GetCount()>0 then + sel=Duel.SelectOption(1-tp,1213,1214) + else + sel=Duel.SelectOption(1-tp,1214)+1 + end + if sel==0 then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) + local sg=g:Select(1-tp,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT) + Duel.NegateEffect(0) + return + end + end + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then + local rg=Group.FromCards(c,tc) + Duel.SendtoHand(rg,nil,REASON_EFFECT) + end +end diff --git a/script/c86997073.lua b/script/c86997073.lua index 73a30427..7ba19428 100644 --- a/script/c86997073.lua +++ b/script/c86997073.lua @@ -1,35 +1,35 @@ ---機動要塞フォルテシモ -function c86997073.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(86997073,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_FZONE) - e1:SetTarget(c86997073.target) - e1:SetOperation(c86997073.operation) - c:RegisterEffect(e1) -end -function c86997073.filter(c,e,sp) - return c:IsSetCard(0x6013) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) -end -function c86997073.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c86997073.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c86997073.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c86997073.filter,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 c86997073.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(86997073,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_FZONE) + e1:SetTarget(c86997073.target) + e1:SetOperation(c86997073.operation) + c:RegisterEffect(e1) +end +function c86997073.filter(c,e,sp) + return c:IsSetCard(0x6013) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) +end +function c86997073.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c86997073.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c86997073.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c86997073.filter,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 diff --git a/script/c87047074.lua b/script/c87047074.lua index 910b5229..4bdf1757 100644 --- a/script/c87047074.lua +++ b/script/c87047074.lua @@ -1,27 +1,12 @@ --甲虫装機の魔弓 ゼクトアロー function c87047074.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(c87047074.target) - e1:SetOperation(c87047074.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x56)) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(500) 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(c87047074.eqlimit) - c:RegisterEffect(e3) --chain limit local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -31,26 +16,6 @@ function c87047074.initial_effect(c) e4:SetOperation(c87047074.chop) c:RegisterEffect(e4) end -function c87047074.eqlimit(e,c) - return c:IsSetCard(0x56) -end -function c87047074.filter(c) - return c:IsFaceup() and c:IsSetCard(0x56) -end -function c87047074.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c87047074.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c87047074.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c87047074.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c87047074.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 c87047074.chcon(e,tp,eg,ep,ev,re,r,rp) return re:GetHandler()==e:GetHandler():GetEquipTarget() end diff --git a/script/c87148330.lua b/script/c87148330.lua index a3dbf194..ae4ccd1b 100644 --- a/script/c87148330.lua +++ b/script/c87148330.lua @@ -3,7 +3,7 @@ function c87148330.initial_effect(c) --draw local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(87148330,0)) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_PLAYER_TARGET) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_DRAW) diff --git a/script/c87182127.lua b/script/c87182127.lua new file mode 100644 index 00000000..8cdf7e58 --- /dev/null +++ b/script/c87182127.lua @@ -0,0 +1,67 @@ +--古代の機械魔神 +function c87182127.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x7),2,true) + --immune + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(c87182127.efilter) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(87182127,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,87182127) + e2:SetTarget(c87182127.damtg) + e2:SetOperation(c87182127.damop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(87182127,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetCondition(c87182127.condition) + e3:SetTarget(c87182127.target) + e3:SetOperation(c87182127.operation) + c:RegisterEffect(e3) +end +function c87182127.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end +function c87182127.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c87182127.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c87182127.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) +end +function c87182127.filter(c,e,tp) + return c:IsSetCard(0x7) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c87182127.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c87182127.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c87182127.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,c87182127.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c8719957.lua b/script/c8719957.lua index 63f14b23..252c9e10 100644 --- a/script/c8719957.lua +++ b/script/c8719957.lua @@ -1,27 +1,12 @@ --アビスケイル-クラーケン function c8719957.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(c8719957.target) - e1:SetOperation(c8719957.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c8719957.filter) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(400) 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(c8719957.eqlimit) - c:RegisterEffect(e3) --negate local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -31,24 +16,8 @@ function c8719957.initial_effect(c) e4:SetOperation(c8719957.negop) c:RegisterEffect(e4) end -function c8719957.eqlimit(e,c) - return c:IsSetCard(0x74) -end function c8719957.filter(c) - return c:IsFaceup() and c:IsSetCard(0x74) -end -function c8719957.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c8719957.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c8719957.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c8719957.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c8719957.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 + return c:IsSetCard(0x74) end function c8719957.negcon(e,tp,eg,ep,ev,re,r,rp) return rp~=tp and Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)==LOCATION_MZONE diff --git a/script/c87210505.lua b/script/c87210505.lua index 09f95cc3..cb6ffee4 100644 --- a/script/c87210505.lua +++ b/script/c87210505.lua @@ -30,8 +30,8 @@ end function c87210505.activate(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,c87210505.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()~=0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c87210505.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) g:GetFirst():CompleteProcedure() end diff --git a/script/c87246309.lua b/script/c87246309.lua new file mode 100644 index 00000000..87ed7aa4 --- /dev/null +++ b/script/c87246309.lua @@ -0,0 +1,66 @@ +--ファーニマル・オクト +function c87246309.initial_effect(c) + --tohand + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(87246309,0)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,87246309) + e1:SetTarget(c87246309.target) + e1:SetOperation(c87246309.operation) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --tograve + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(87246309,1)) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetCountLimit(1,87246310) + e3:SetCondition(c87246309.tgcon) + e3:SetTarget(c87246309.tgtg) + e3:SetOperation(c87246309.tgop) + c:RegisterEffect(e3) +end +function c87246309.thfilter(c) + return (c:IsSetCard(0xa9) or c:IsSetCard(0xc3)) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c87246309.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c87246309.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c87246309.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c87246309.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c87246309.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c87246309.tgcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsLocation(LOCATION_GRAVE) and r==REASON_FUSION and c:GetReasonCard():IsSetCard(0xad) +end +function c87246309.tgfilter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) +end +function c87246309.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c87246309.tgfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c87246309.tgfilter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c87246309.tgfilter,tp,LOCATION_REMOVED,0,1,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c87246309.tgop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=tg:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>0 then + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_RETURN) + end +end diff --git a/script/c87288189.lua b/script/c87288189.lua index e418dec7..f002eaf4 100644 --- a/script/c87288189.lua +++ b/script/c87288189.lua @@ -34,11 +34,10 @@ end function c87288189.otfilter(c) return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE end -function c87288189.otcon(e,c) +function c87288189.otcon(e,c,minc) if c==nil then return true end local mg=Duel.GetMatchingGroup(c87288189.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - return c:GetLevel()>6 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c87288189.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c87288189.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) diff --git a/script/c87294988.lua b/script/c87294988.lua index a4037b1d..9d738222 100644 --- a/script/c87294988.lua +++ b/script/c87294988.lua @@ -1,44 +1,44 @@ ---紅姫チルビメ -function c87294988.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c87294988.bttg) - c:RegisterEffect(e1) - --summon success - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(87294988,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c87294988.spcon) - e2:SetTarget(c87294988.sptg) - e2:SetOperation(c87294988.spop) - c:RegisterEffect(e2) -end -function c87294988.bttg(e,c) - return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_PLANT) -end -function c87294988.spcon(e,tp,eg,ep,ev,re,r,rp) - return rp~=tp and e:GetHandler():GetPreviousControler()==tp -end -function c87294988.filter(c,e,tp) - return c:IsRace(RACE_PLANT) and not c:IsCode(87294988) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c87294988.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c87294988.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c87294988.spop(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,c87294988.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--紅姫チルビメ +function c87294988.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c87294988.bttg) + c:RegisterEffect(e1) + --summon success + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(87294988,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c87294988.spcon) + e2:SetTarget(c87294988.sptg) + e2:SetOperation(c87294988.spop) + c:RegisterEffect(e2) +end +function c87294988.bttg(e,c) + return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c87294988.spcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and e:GetHandler():GetPreviousControler()==tp +end +function c87294988.filter(c,e,tp) + return c:IsRace(RACE_PLANT) and not c:IsCode(87294988) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c87294988.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c87294988.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c87294988.spop(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,c87294988.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c8730435.lua b/script/c8730435.lua index 957184e1..936fcdfb 100644 --- a/script/c8730435.lua +++ b/script/c8730435.lua @@ -1,14 +1,6 @@ --剣闘獣の闘器デーモンズシールド function c8730435.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(c8730435.target) - e1:SetOperation(c8730435.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c8730435.filter) --destroy sub local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -16,13 +8,6 @@ function c8730435.initial_effect(c) e2:SetCode(EFFECT_DESTROY_SUBSTITUTE) e2:SetValue(1) 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(c8730435.eqlimit) - c:RegisterEffect(e3) --tohand local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) @@ -34,25 +19,8 @@ function c8730435.initial_effect(c) e4:SetOperation(c8730435.retop) c:RegisterEffect(e4) end -function c8730435.eqlimit(e,c) - return c:IsSetCard(0x19) -end function c8730435.filter(c) - return c:IsFaceup() and c:IsSetCard(0x19) -end -function c8730435.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c8730435.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c8730435.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c8730435.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c8730435.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 + return c:IsSetCard(0x19) end function c8730435.retcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() diff --git a/script/c87313164.lua b/script/c87313164.lua index e1fe5d4c..d395aaa1 100644 --- a/script/c87313164.lua +++ b/script/c87313164.lua @@ -31,8 +31,7 @@ function c87313164.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c87313164.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c87430998.lua b/script/c87430998.lua index 55083795..79e41f69 100644 --- a/script/c87430998.lua +++ b/script/c87430998.lua @@ -1,21 +1,21 @@ ---森 -function c87430998.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_INSECT+RACE_BEAST+RACE_PLANT+RACE_BEASTWARRIOR)) - e2:SetValue(200) - c:RegisterEffect(e2) - --Def - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end +--森 +function c87430998.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_INSECT+RACE_BEAST+RACE_PLANT+RACE_BEASTWARRIOR)) + e2:SetValue(200) + c:RegisterEffect(e2) + --Def + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end diff --git a/script/c87460579.lua b/script/c87460579.lua new file mode 100644 index 00000000..32a7ec75 --- /dev/null +++ b/script/c87460579.lua @@ -0,0 +1,117 @@ +--花札衛-五光- +function c87460579.initial_effect(c) + c:EnableReviveLimit() + --synchro summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(aux.SynCondition(nil,aux.NonTuner(nil),4,4)) + e1:SetTarget(aux.SynTarget(nil,aux.NonTuner(nil),4,4)) + e1:SetOperation(aux.SynOperation(nil,aux.NonTuner(nil),4,4)) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(87460579,0)) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c87460579.negcon) + e2:SetTarget(c87460579.negtg) + e2:SetOperation(c87460579.negop) + c:RegisterEffect(e2) + --disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c87460579.discon) + e3:SetOperation(c87460579.disop) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_BE_BATTLE_TARGET) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(87460579,1)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e5:SetCode(EVENT_LEAVE_FIELD) + e5:SetCondition(c87460579.spcon) + e5:SetTarget(c87460579.sptg) + e5:SetOperation(c87460579.spop) + c:RegisterEffect(e5) +end +function c87460579.negcon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and ep~=tp + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c87460579.negtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c87460579.negop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c87460579.cfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0xe6) and c:IsControler(tp) +end +function c87460579.discon(e,tp,eg,ep,ev,re,r,rp) + local c=Duel.GetAttackTarget() + if not c then return false end + if c:IsControler(1-tp) then c=Duel.GetAttacker() end + return c and c87460579.cfilter(c,tp) +end +function c87460579.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetAttackTarget() + if tc:IsControler(tp) then tc=Duel.GetAttacker() end + c:CreateRelation(tc,RESET_EVENT+0x1fe0000) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetCondition(c87460579.discon2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetCondition(c87460579.discon2) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + tc:RegisterEffect(e2) +end +function c87460579.discon2(e) + return e:GetOwner():IsRelateToCard(e:GetHandler()) +end +function c87460579.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (c:IsReason(REASON_BATTLE) or (c:GetReasonPlayer()~=tp and c:IsReason(REASON_EFFECT))) + and c:IsPreviousLocation(LOCATION_MZONE) and c:GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c87460579.spfilter(c,e,tp) + return c:IsSetCard(0xe6) and not c:IsCode(87460579) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c87460579.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c87460579.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c87460579.spop(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,c87460579.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c87473172.lua b/script/c87473172.lua index 57d7a3c5..1fa14956 100644 --- a/script/c87473172.lua +++ b/script/c87473172.lua @@ -1,36 +1,36 @@ ---火炎鳥 -function c87473172.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(87473172,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) - e1:SetCode(EVENT_DESTROYED) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c87473172.atkcon) - e1:SetTarget(c87473172.atktg) - e1:SetOperation(c87473172.atkop) - c:RegisterEffect(e1) -end -function c87473172.cfilter(c,tp) - return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) - and bit.band(c:GetPreviousRaceOnField(),RACE_WINDBEAST)~=0 -end -function c87473172.atkcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c87473172.cfilter,1,nil,tp) -end -function c87473172.atktg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and e:GetHandler():IsFaceup() end -end -function c87473172.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+0x1fe0000) - e1:SetValue(500) - c:RegisterEffect(e1) - end -end +--火炎鳥 +function c87473172.initial_effect(c) + --atkup + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(87473172,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_DESTROYED) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c87473172.atkcon) + e1:SetTarget(c87473172.atktg) + e1:SetOperation(c87473172.atkop) + c:RegisterEffect(e1) +end +function c87473172.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) + and bit.band(c:GetPreviousRaceOnField(),RACE_WINDBEAST)~=0 +end +function c87473172.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c87473172.cfilter,1,nil,tp) +end +function c87473172.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and e:GetHandler():IsFaceup() end +end +function c87473172.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+0x1fe0000) + e1:SetValue(500) + c:RegisterEffect(e1) + end +end diff --git a/script/c87475570.lua b/script/c87475570.lua index 8a62542c..239986df 100644 --- a/script/c87475570.lua +++ b/script/c87475570.lua @@ -1,47 +1,48 @@ ---宝玉の先導者 -function c87475570.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --cannot be target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(LOCATION_ONFIELD,0) - e2:SetTarget(c87475570.tgtg) - e2:SetValue(aux.tgoval) - c:RegisterEffect(e2) - --tohand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(87475570,0)) - e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c87475570.cost) - e3:SetTarget(c87475570.target) - e3:SetOperation(c87475570.operation) - c:RegisterEffect(e3) -end -function c87475570.tgtg(e,c) - return c:IsSetCard(0x1034) or (c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0x2034)) -end -function c87475570.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c87475570.filter(c) - return (((c:IsSetCard(0x1034) or c:IsSetCard(0x2034)) and c:IsType(TYPE_MONSTER)) - or (c:IsSetCard(0x34) and c:IsType(TYPE_SPELL+TYPE_TRAP))) and c:IsAbleToHand() -end -function c87475570.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c87475570.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c87475570.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c87475570.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--宝玉の先導者 +function c87475570.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(LOCATION_ONFIELD,0) + e2:SetTarget(c87475570.tgtg) + e2:SetValue(aux.tgoval) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(87475570,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c87475570.cost) + e3:SetTarget(c87475570.target) + e3:SetOperation(c87475570.operation) + c:RegisterEffect(e3) +end +function c87475570.tgtg(e,c) + return c:IsSetCard(0x1034) or (c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0x2034)) +end +function c87475570.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c87475570.filter(c) + return (((c:IsSetCard(0x1034) or c:IsSetCard(0x2034)) and c:IsType(TYPE_MONSTER)) + or (c:IsSetCard(0x34) and c:IsType(TYPE_SPELL+TYPE_TRAP))) and c:IsAbleToHand() +end +function c87475570.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c87475570.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c87475570.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c87475570.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c87483942.lua b/script/c87483942.lua index e1c81080..1231e95a 100644 --- a/script/c87483942.lua +++ b/script/c87483942.lua @@ -23,10 +23,11 @@ end function c87483942.spop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=Duel.SelectMatchingCard(tp,c87483942.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,ft,nil,e,tp) if g:GetCount()>0 and not g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) Duel.ConfirmCards(1-tp,g) end -end +end \ No newline at end of file diff --git a/script/c87535691.lua b/script/c87535691.lua index 10853b19..ff75f84f 100644 --- a/script/c87535691.lua +++ b/script/c87535691.lua @@ -1,35 +1,35 @@ ---超重武者ツヅ-3 -function c87535691.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(87535691,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCountLimit(1,87535691) - e1:SetCondition(c87535691.spcon) - e1:SetTarget(c87535691.sptg) - e1:SetOperation(c87535691.spop) - c:RegisterEffect(e1) -end -function c87535691.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) -end -function c87535691.spfilter(c,e,tp) - return c:IsSetCard(0x9a) and not c:IsCode(87535691) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c87535691.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c87535691.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c87535691.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c87535691.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c87535691.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--超重武者ツヅ-3 +function c87535691.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(87535691,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCountLimit(1,87535691) + e1:SetCondition(c87535691.spcon) + e1:SetTarget(c87535691.sptg) + e1:SetOperation(c87535691.spop) + c:RegisterEffect(e1) +end +function c87535691.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c87535691.spfilter(c,e,tp) + return c:IsSetCard(0x9a) and not c:IsCode(87535691) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c87535691.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c87535691.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c87535691.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c87535691.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c87535691.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c87564935.lua b/script/c87564935.lua index d163212c..6699ba97 100644 --- a/script/c87564935.lua +++ b/script/c87564935.lua @@ -16,7 +16,7 @@ function c87564935.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c87564935.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c87564935.sptg) e2:SetOperation(c87564935.spop) c:RegisterEffect(e2) @@ -24,13 +24,14 @@ function c87564935.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e3:SetCondition(c87564935.uncon) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetCondition(aux.IsUnionState) e3:SetValue(c87564935.efilter1) c:RegisterEffect(e3) local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_EQUIP) e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e4:SetCondition(c87564935.uncon) + e4:SetCondition(aux.IsUnionState) e4:SetValue(c87564935.efilter2) c:RegisterEffect(e4) --destroy sub @@ -38,7 +39,7 @@ function c87564935.initial_effect(c) e5:SetType(EFFECT_TYPE_EQUIP) e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e5:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e5:SetCondition(c87564935.uncon) + e5:SetCondition(aux.IsUnionState) e5:SetValue(c87564935.repval) c:RegisterEffect(e5) --eqlimit @@ -49,9 +50,7 @@ function c87564935.initial_effect(c) e6:SetValue(1) c:RegisterEffect(e6) end -function c87564935.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c87564935.old_union=true function c87564935.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -76,7 +75,7 @@ function c87564935.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c87564935.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(87564935)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c87588741.lua b/script/c87588741.lua index 0a48e385..f868675a 100644 --- a/script/c87588741.lua +++ b/script/c87588741.lua @@ -1,149 +1,148 @@ ---クリフォート・アクセス -function c87588741.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(1,0) - e2:SetTarget(c87588741.splimit) - c:RegisterEffect(e2) - --atk down - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_PZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetValue(-300) - c:RegisterEffect(e3) - --summon with no tribute - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(87588741,0)) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EFFECT_SUMMON_PROC) - e4:SetCondition(c87588741.ntcon) - c:RegisterEffect(e4) - --change level - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_SUMMON_COST) - e5:SetOperation(c87588741.lvop) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_SPSUMMON_COST) - e6:SetOperation(c87588741.lvop2) - c:RegisterEffect(e6) - --immune - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetCode(EFFECT_IMMUNE_EFFECT) - e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) - e7:SetRange(LOCATION_MZONE) - e7:SetCondition(c87588741.immcon) - e7:SetValue(aux.qlifilter) - c:RegisterEffect(e7) - --damage - local e8=Effect.CreateEffect(c) - e8:SetDescription(aux.Stringid(87588741,1)) - e8:SetCategory(CATEGORY_DAMAGE+CATEGORY_RECOVER) - e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e8:SetCode(EVENT_SUMMON_SUCCESS) - e8:SetCondition(c87588741.damcon) - e8:SetTarget(c87588741.damtg) - e8:SetOperation(c87588741.damop) - c:RegisterEffect(e8) - --tribute check - local e9=Effect.CreateEffect(c) - e9:SetType(EFFECT_TYPE_SINGLE) - e9:SetCode(EFFECT_MATERIAL_CHECK) - e9:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e9:SetValue(c87588741.valcheck) - e9:SetLabelObject(e8) - c:RegisterEffect(e9) -end -function c87588741.splimit(e,c) - return not c:IsSetCard(0xaa) -end -function c87588741.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c87588741.lvcon(e) - return e:GetHandler():GetMaterialCount()==0 -end -function c87588741.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c87588741.lvcon) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c87588741.lvcon) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c87588741.lvop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c87588741.immcon(e) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL -end -function c87588741.damcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 -end -function c87588741.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - local ct1=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) - local ct2=Duel.GetMatchingGroupCount(Card.IsType,tp,0,LOCATION_GRAVE,nil,TYPE_MONSTER) - local ct=ct2-ct1 - if chk==0 then return ct>0 end - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ct*300) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) -end -function c87588741.damop(e,tp,eg,ep,ev,re,r,rp) - local ct1=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) - local ct2=Duel.GetMatchingGroupCount(Card.IsType,tp,0,LOCATION_GRAVE,nil,TYPE_MONSTER) - local ct=ct2-ct1 - if ct>0 then - local val=Duel.Recover(tp,ct*300,REASON_EFFECT) - Duel.Damage(1-tp,val,REASON_EFFECT) - end -end -function c87588741.valcheck(e,c) - local g=c:GetMaterial() - if g:IsExists(Card.IsSetCard,1,nil,0xaa) then - e:GetLabelObject():SetLabel(1) - else - e:GetLabelObject():SetLabel(0) - end -end +--クリフォート・アクセス +function c87588741.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetTarget(c87588741.splimit) + c:RegisterEffect(e2) + --atk down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_PZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(-300) + c:RegisterEffect(e3) + --summon with no tribute + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(87588741,0)) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SUMMON_PROC) + e4:SetCondition(c87588741.ntcon) + c:RegisterEffect(e4) + --change level + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_SUMMON_COST) + e5:SetOperation(c87588741.lvop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SPSUMMON_COST) + e6:SetOperation(c87588741.lvop2) + c:RegisterEffect(e6) + --immune + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_IMMUNE_EFFECT) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c87588741.immcon) + e7:SetValue(aux.qlifilter) + c:RegisterEffect(e7) + --damage + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(87588741,1)) + e8:SetCategory(CATEGORY_DAMAGE+CATEGORY_RECOVER) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_SUMMON_SUCCESS) + e8:SetCondition(c87588741.damcon) + e8:SetTarget(c87588741.damtg) + e8:SetOperation(c87588741.damop) + c:RegisterEffect(e8) + --tribute check + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetCode(EFFECT_MATERIAL_CHECK) + e9:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e9:SetValue(c87588741.valcheck) + e9:SetLabelObject(e8) + c:RegisterEffect(e9) +end +function c87588741.splimit(e,c) + return not c:IsSetCard(0xaa) +end +function c87588741.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c87588741.lvcon(e) + return e:GetHandler():GetMaterialCount()==0 +end +function c87588741.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c87588741.lvcon) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c87588741.lvcon) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c87588741.lvop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c87588741.immcon(e) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL +end +function c87588741.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 +end +function c87588741.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct1=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + local ct2=Duel.GetMatchingGroupCount(Card.IsType,tp,0,LOCATION_GRAVE,nil,TYPE_MONSTER) + local ct=ct2-ct1 + if chk==0 then return ct>0 end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ct*300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) +end +function c87588741.damop(e,tp,eg,ep,ev,re,r,rp) + local ct1=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_MONSTER) + local ct2=Duel.GetMatchingGroupCount(Card.IsType,tp,0,LOCATION_GRAVE,nil,TYPE_MONSTER) + local ct=ct2-ct1 + if ct>0 then + local val=Duel.Recover(tp,ct*300,REASON_EFFECT) + Duel.Damage(1-tp,val,REASON_EFFECT) + end +end +function c87588741.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsSetCard,1,nil,0xaa) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end diff --git a/script/c87602890.lua b/script/c87602890.lua index 78523268..5b64752a 100644 --- a/script/c87602890.lua +++ b/script/c87602890.lua @@ -34,11 +34,10 @@ end function c87602890.otfilter(c) return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE end -function c87602890.otcon(e,c) +function c87602890.otcon(e,c,minc) if c==nil then return true end local mg=Duel.GetMatchingGroup(c87602890.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - return c:GetLevel()>6 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1,1,mg) end function c87602890.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c87602890.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) diff --git a/script/c87609391.lua b/script/c87609391.lua index 33a3598b..3076e2ba 100644 --- a/script/c87609391.lua +++ b/script/c87609391.lua @@ -1,92 +1,58 @@ ---ラプターズ・アルティメット・メイス -function c87609391.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(c87609391.target) - e1:SetOperation(c87609391.operation) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(1000) - 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(c87609391.eqlimit) - c:RegisterEffect(e3) - --search - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EVENT_BE_BATTLE_TARGET) - e4:SetCondition(c87609391.thcon) - e4:SetTarget(c87609391.thtg) - e4:SetOperation(c87609391.thop) - c:RegisterEffect(e4) -end -function c87609391.eqlimit(e,c) - return c:IsSetCard(0xba) -end -function c87609391.filter(c) - return c:IsFaceup() and c:IsSetCard(0xba) -end -function c87609391.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c87609391.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c87609391.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c87609391.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c87609391.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 c87609391.thcon(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - local ec=e:GetHandler():GetEquipTarget() - local at=Duel.GetAttacker() - return tc==ec and at and at:GetAttack()>ec:GetAttack() -end -function c87609391.thfilter(c) - return c:IsSetCard(0x95) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() -end -function c87609391.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c87609391.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c87609391.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c87609391.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - local c=e:GetHandler() - local tc=Duel.GetAttacker() - if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsAttackable() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e1:SetValue(1) - e1:SetCondition(c87609391.damcon) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetLabelObject(tc) - c:GetEquipTarget():RegisterEffect(e1,true) - end - end -end -function c87609391.damcon(e) - return e:GetLabelObject()==Duel.GetAttacker() -end +--ラプターズ・アルティメット・メイス +function c87609391.initial_effect(c) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0xba)) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(1000) + c:RegisterEffect(e2) + --search + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EVENT_BE_BATTLE_TARGET) + e4:SetCondition(c87609391.thcon) + e4:SetTarget(c87609391.thtg) + e4:SetOperation(c87609391.thop) + c:RegisterEffect(e4) +end +function c87609391.thcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ec=e:GetHandler():GetEquipTarget() + local at=Duel.GetAttacker() + return tc==ec and at and at:GetAttack()>ec:GetAttack() +end +function c87609391.thfilter(c) + return c:IsSetCard(0x95) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c87609391.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c87609391.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c87609391.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c87609391.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + local c=e:GetHandler() + local tc=Duel.GetAttacker() + if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsAttackable() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetValue(1) + e1:SetCondition(c87609391.damcon) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetLabelObject(tc) + c:GetEquipTarget():RegisterEffect(e1,true) + end + end +end +function c87609391.damcon(e) + return e:GetLabelObject()==Duel.GetAttacker() +end diff --git a/script/c87624166.lua b/script/c87624166.lua index b7660a02..466574c5 100644 --- a/script/c87624166.lua +++ b/script/c87624166.lua @@ -1,47 +1,47 @@ ---古の森 -function c87624166.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c87624166.target) - e1:SetOperation(c87624166.activate) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(87624166,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_PHASE+PHASE_BATTLE) - e2:SetTarget(c87624166.destg) - e2:SetOperation(c87624166.desop) - c:RegisterEffect(e2) -end -function c87624166.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) -end -function c87624166.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()>0 then - Duel.ChangePosition(g,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) - end -end -function c87624166.desfilter(c) - return c:GetAttackedCount()>0 -end -function c87624166.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c87624166.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(c87624166.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c87624166.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local g=Duel.GetMatchingGroup(c87624166.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end +--古の森 +function c87624166.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c87624166.target) + e1:SetOperation(c87624166.activate) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(87624166,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_PHASE+PHASE_BATTLE) + e2:SetTarget(c87624166.destg) + e2:SetOperation(c87624166.desop) + c:RegisterEffect(e2) +end +function c87624166.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c87624166.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(Card.IsDefensePos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.ChangePosition(g,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,true) + end +end +function c87624166.desfilter(c) + return c:GetAttackedCount()>0 +end +function c87624166.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c87624166.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c87624166.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c87624166.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c87624166.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c8763963.lua b/script/c8763963.lua index 78dff61e..0bb920a6 100644 --- a/script/c8763963.lua +++ b/script/c8763963.lua @@ -1,79 +1,79 @@ ---魔王超龍 ベエルゼウス -function c8763963.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),aux.NonTuner(nil),2) - c:EnableReviveLimit() - --indes - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e2) - --cannot attack announce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_CANNOT_ATTACK) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(c8763963.antarget) - c:RegisterEffect(e3) - --atk 0 - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_RECOVER) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_MZONE) - e4:SetCountLimit(1) - e4:SetTarget(c8763963.target) - e4:SetOperation(c8763963.operation) - c:RegisterEffect(e4) -end -function c8763963.antarget(e,c) - return c~=e:GetHandler() -end -function c8763963.filter(c) - return c:IsFaceup() and c:GetAttack()>0 -end -function c8763963.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c8763963.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c8763963.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c8763963.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,g:GetFirst():GetBaseAttack()) -end -function c8763963.dcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return ep~=tp and (c==Duel.GetAttacker() or c==Duel.GetAttackTarget()) -end -function c8763963.dop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev/2) -end -function c8763963.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:GetAttack()>0 and not tc:IsImmuneToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(0) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - Duel.Recover(tp,tc:GetBaseAttack(),REASON_EFFECT) - end - if c:IsRelateToEffect(e) then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetCondition(c8763963.dcon) - e2:SetOperation(c8763963.dop) - c:RegisterEffect(e2) - end -end +--魔王超龍 ベエルゼウス +function c8763963.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),aux.NonTuner(nil),2) + c:EnableReviveLimit() + --indes + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e2) + --cannot attack announce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_CANNOT_ATTACK) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c8763963.antarget) + c:RegisterEffect(e3) + --atk 0 + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_RECOVER) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c8763963.target) + e4:SetOperation(c8763963.operation) + c:RegisterEffect(e4) +end +function c8763963.antarget(e,c) + return c~=e:GetHandler() +end +function c8763963.filter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c8763963.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c8763963.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c8763963.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c8763963.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,g:GetFirst():GetBaseAttack()) +end +function c8763963.dcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep~=tp and (c==Duel.GetAttacker() or c==Duel.GetAttackTarget()) +end +function c8763963.dop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end +function c8763963.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:GetAttack()>0 and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + Duel.Recover(tp,tc:GetBaseAttack(),REASON_EFFECT) + end + if c:IsRelateToEffect(e) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetCondition(c8763963.dcon) + e2:SetOperation(c8763963.dop) + c:RegisterEffect(e2) + end +end diff --git a/script/c87639778.lua b/script/c87639778.lua new file mode 100644 index 00000000..b3800e8a --- /dev/null +++ b/script/c87639778.lua @@ -0,0 +1,74 @@ +--ハーピィの羽根吹雪 +function c87639778.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c87639778.condition) + e1:SetOperation(c87639778.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c87639778.handcon) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(87639778,0)) + e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DESTROYED) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCondition(c87639778.thcon) + e3:SetTarget(c87639778.thtg) + e3:SetOperation(c87639778.thop) + c:RegisterEffect(e3) +end +function c87639778.disfilter(c) + return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) and c:IsAttribute(ATTRIBUTE_WIND) +end +function c87639778.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c87639778.disfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c87639778.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_CHAIN_SOLVING) + e1:SetCondition(c87639778.discon) + e1:SetOperation(c87639778.disop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c87639778.discon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_MONSTER) and rp==1-tp +end +function c87639778.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end +function c87639778.filter(c) + return c:IsFaceup() and c:IsSetCard(0x64) +end +function c87639778.handcon(e) + return Duel.IsExistingMatchingCard(c87639778.filter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c87639778.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return rp~=tp and c:IsReason(REASON_EFFECT) + and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_SZONE) +end +function c87639778.thfilter(c) + return c:IsCode(18144506) and c:IsAbleToHand() +end +function c87639778.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c87639778.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c87639778.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c87639778.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c87769556.lua b/script/c87769556.lua new file mode 100644 index 00000000..e531d6a4 --- /dev/null +++ b/script/c87769556.lua @@ -0,0 +1,32 @@ +--魔術師の右手 +--Magician's Right Hand +--Script by nekrozar +function c87769556.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --negate + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c87769556.negcon) + e2:SetOperation(c87769556.negop) + c:RegisterEffect(e2) +end +function c87769556.cfilter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) +end +function c87769556.negcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c87769556.cfilter,tp,LOCATION_MZONE,0,1,nil) + and rp~=tp and re:IsActiveType(TYPE_SPELL) and Duel.IsChainDisablable(ev) +end +function c87769556.negop(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end +end diff --git a/script/c87772572.lua b/script/c87772572.lua index b9dd0ed3..7b8ecfe6 100644 --- a/script/c87772572.lua +++ b/script/c87772572.lua @@ -1,58 +1,58 @@ ---量子猫 -function c87772572.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c87772572.target) - e1:SetOperation(c87772572.activate) - c:RegisterEffect(e1) -end -function c87772572.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local rac=0 - local crac=1 - for irac=0,23 do - local catt=1 - for iatt=0,7 do - if Duel.IsPlayerCanSpecialSummonMonster(tp,87772572,0,0x11,0,2200,4,crac,catt) then - rac=rac+crac - break - end - catt=catt*2 - end - crac=crac*2 - end - e:SetLabel(rac) - return rac~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - end - Duel.Hint(HINT_SELECTMSG,tp,563) - local crac=Duel.AnnounceRace(tp,1,e:GetLabel()) - local att=0 - local catt=1 - for iatt=0,7 do - if Duel.IsPlayerCanSpecialSummonMonster(tp,87772572,0,0x11,0,2200,4,crac,catt) then - att=att+catt - end - catt=catt*2 - end - Duel.Hint(HINT_SELECTMSG,tp,562) - catt=Duel.AnnounceAttribute(tp,1,att) - e:SetLabel(crac) - Duel.SetTargetParam(catt) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c87772572.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local rac=e:GetLabel() - local att=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,87772572,0,0x11,0,2200,4,rac,att) then return end - c:AddMonsterAttribute(TYPE_NORMAL+TYPE_TRAP,att,rac,0,0,0) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - Duel.SpecialSummonComplete() -end +--量子猫 +function c87772572.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c87772572.target) + e1:SetOperation(c87772572.activate) + c:RegisterEffect(e1) +end +function c87772572.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local rac=0 + local crac=1 + for irac=0,23 do + local catt=1 + for iatt=0,7 do + if Duel.IsPlayerCanSpecialSummonMonster(tp,87772572,0,0x11,0,2200,4,crac,catt) then + rac=rac+crac + break + end + catt=catt*2 + end + crac=crac*2 + end + e:SetLabel(rac) + return rac~=0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + end + Duel.Hint(HINT_SELECTMSG,tp,563) + local crac=Duel.AnnounceRace(tp,1,e:GetLabel()) + local att=0 + local catt=1 + for iatt=0,7 do + if Duel.IsPlayerCanSpecialSummonMonster(tp,87772572,0,0x11,0,2200,4,crac,catt) then + att=att+catt + end + catt=catt*2 + end + Duel.Hint(HINT_SELECTMSG,tp,562) + catt=Duel.AnnounceAttribute(tp,1,att) + e:SetLabel(crac) + Duel.SetTargetParam(catt) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c87772572.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local rac=e:GetLabel() + local att=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,87772572,0,0x11,0,2200,4,rac,att) then return end + c:AddMonsterAttribute(TYPE_NORMAL+TYPE_TRAP,att,rac,0,0,0) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + Duel.SpecialSummonComplete() +end diff --git a/script/c87774234.lua b/script/c87774234.lua index 467a19ea..be02ade8 100644 --- a/script/c87774234.lua +++ b/script/c87774234.lua @@ -1,31 +1,31 @@ ---ワタポン -function c87774234.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(87774234,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_HAND) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c87774234.condition) - e1:SetTarget(c87774234.target) - e1:SetOperation(c87774234.operation) - c:RegisterEffect(e1) -end -function c87774234.condition(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_DECK) and e:GetHandler():GetPreviousControler()==tp -end -function c87774234.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c87774234.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--ワタポン +function c87774234.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(87774234,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_HAND) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c87774234.condition) + e1:SetTarget(c87774234.target) + e1:SetOperation(c87774234.operation) + c:RegisterEffect(e1) +end +function c87774234.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_DECK) and e:GetHandler():GetPreviousControler()==tp +end +function c87774234.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c87774234.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c87798440.lua b/script/c87798440.lua index 69a783ae..2557d2d2 100644 --- a/script/c87798440.lua +++ b/script/c87798440.lua @@ -16,7 +16,7 @@ function c87798440.initial_effect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c87798440.uncon) + e2:SetCondition(aux.IsUnionState) e2:SetTarget(c87798440.sptg) e2:SetOperation(c87798440.spop) c:RegisterEffect(e2) @@ -25,7 +25,7 @@ function c87798440.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetCode(EFFECT_DESTROY_SUBSTITUTE) - e3:SetCondition(c87798440.uncon) + e3:SetCondition(aux.IsUnionState) e3:SetValue(c87798440.repval) c:RegisterEffect(e3) --destroy @@ -48,9 +48,7 @@ function c87798440.initial_effect(c) e5:SetValue(c87798440.eqlimit) c:RegisterEffect(e5) end -function c87798440.uncon(e) - return e:GetHandler():IsStatus(STATUS_UNION) -end +c87798440.old_union=true function c87798440.repval(e,re,r,rp) return bit.band(r,REASON_BATTLE)~=0 end @@ -78,7 +76,7 @@ function c87798440.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c87798440.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(87798440)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 @@ -95,7 +93,7 @@ function c87798440.spop(e,tp,eg,ep,ev,re,r,rp) end end function c87798440.descon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and e:GetHandler():GetEquipTarget()==eg:GetFirst() and c87798440.uncon(e) + return ep~=tp and e:GetHandler():GetEquipTarget()==eg:GetFirst() and aux.IsUnionState(e) end function c87798440.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsOnField() end diff --git a/script/c8785161.lua b/script/c8785161.lua index 2f34cf21..2fe070a4 100644 --- a/script/c8785161.lua +++ b/script/c8785161.lua @@ -1,58 +1,58 @@ ---RR-ワイルド・ヴァルチャー -function c8785161.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c8785161.spcon) - e1:SetCost(c8785161.spcost) - e1:SetTarget(c8785161.sptg) - e1:SetOperation(c8785161.spop) - c:RegisterEffect(e1) - if not c8785161.global_check then - c8785161.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SUMMON_SUCCESS) - ge1:SetLabel(8785161) - ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - ge1:SetOperation(aux.sumreg) - Duel.RegisterEffect(ge1,0) - local ge2=ge1:Clone() - ge2:SetCode(EVENT_SPSUMMON_SUCCESS) - ge2:SetLabel(8785161) - Duel.RegisterEffect(ge2,0) - end -end -function c8785161.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(8785161)>0 -end -function c8785161.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c8785161.spfilter1(c,e,tp) - local lv=c:GetLevel() - return lv>0 and lv<6 and c:IsSetCard(0xba) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c8785161.spfilter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,c,e,tp,6-lv) -end -function c8785161.spfilter2(c,e,tp,lv) - return c:IsSetCard(0xba) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c8785161.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c8785161.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c8785161.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g1=Duel.SelectMatchingCard(tp,c8785161.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - local tc1=g1:GetFirst() - if not tc1 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectMatchingCard(tp,c8785161.spfilter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,tc1,e,tp,6-tc1:GetLevel()) - g1:Merge(g2) - Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP) -end +--RR-ワイルド・ヴァルチャー +function c8785161.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c8785161.spcon) + e1:SetCost(c8785161.spcost) + e1:SetTarget(c8785161.sptg) + e1:SetOperation(c8785161.spop) + c:RegisterEffect(e1) + if not c8785161.global_check then + c8785161.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetLabel(8785161) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(8785161) + Duel.RegisterEffect(ge2,0) + end +end +function c8785161.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(8785161)>0 +end +function c8785161.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c8785161.spfilter1(c,e,tp) + local lv=c:GetLevel() + return lv>0 and lv<6 and c:IsSetCard(0xba) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c8785161.spfilter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,c,e,tp,6-lv) +end +function c8785161.spfilter2(c,e,tp,lv) + return c:IsSetCard(0xba) and c:GetLevel()==lv and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c8785161.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c8785161.spfilter1,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c8785161.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g1=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c8785161.spfilter1),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc1=g1:GetFirst() + if not tc1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c8785161.spfilter2),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,tc1,e,tp,6-tc1:GetLevel()) + g1:Merge(g2) + Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP) +end diff --git a/script/c87880531.lua b/script/c87880531.lua index e42bc552..1c867036 100644 --- a/script/c87880531.lua +++ b/script/c87880531.lua @@ -1,72 +1,72 @@ ---拡散する波動 -function c87880531.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c87880531.condition) - e1:SetCost(c87880531.cost) - e1:SetTarget(c87880531.target) - e1:SetOperation(c87880531.activate) - c:RegisterEffect(e1) -end -function c87880531.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c87880531.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 c87880531.filter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsLevelAbove(7) -end -function c87880531.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c87880531.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c87880531.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c87880531.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c87880531.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsControler(tp) and tc:IsRelateToEffect(e) then - local ae=Effect.CreateEffect(e:GetHandler()) - ae:SetType(EFFECT_TYPE_FIELD) - ae:SetCode(EFFECT_CANNOT_ATTACK) - ae:SetTargetRange(LOCATION_MZONE,0) - ae:SetTarget(c87880531.ftarget) - ae:SetLabel(tc:GetFieldID()) - ae:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(ae,tp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_MUST_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_ATTACK_ALL) - e3:SetValue(1) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - local e4=Effect.CreateEffect(e:GetHandler()) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_BATTLED) - e4:SetOperation(c87880531.disop) - e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e4) - end -end -function c87880531.ftarget(e,c) - return e:GetLabel()~=c:GetFieldID() -end -function c87880531.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - if not bc or not bc:IsStatus(STATUS_BATTLE_DESTROYED) then return end - local e1=Effect.CreateEffect(e:GetOwner()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_TRIGGER) - e1:SetReset(RESET_EVENT+0x17a0000) - bc:RegisterEffect(e1) -end +--拡散する波動 +function c87880531.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c87880531.condition) + e1:SetCost(c87880531.cost) + e1:SetTarget(c87880531.target) + e1:SetOperation(c87880531.activate) + c:RegisterEffect(e1) +end +function c87880531.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c87880531.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 c87880531.filter(c) + return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsLevelAbove(7) +end +function c87880531.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c87880531.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c87880531.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c87880531.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c87880531.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsControler(tp) and tc:IsRelateToEffect(e) then + local ae=Effect.CreateEffect(e:GetHandler()) + ae:SetType(EFFECT_TYPE_FIELD) + ae:SetCode(EFFECT_CANNOT_ATTACK) + ae:SetTargetRange(LOCATION_MZONE,0) + ae:SetTarget(c87880531.ftarget) + ae:SetLabel(tc:GetFieldID()) + ae:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(ae,tp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_MUST_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_ATTACK_ALL) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_BATTLED) + e4:SetOperation(c87880531.disop) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + end +end +function c87880531.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c87880531.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if not bc or not bc:IsStatus(STATUS_BATTLE_DESTROYED) then return end + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x17a0000) + bc:RegisterEffect(e1) +end diff --git a/script/c87902575.lua b/script/c87902575.lua index 1625e818..c5519b3d 100644 --- a/script/c87902575.lua +++ b/script/c87902575.lua @@ -1,96 +1,96 @@ ---フューチャー・ヴィジョン -function c87902575.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c87902575.clear) - c:RegisterEffect(e1) - local ng=Group.CreateGroup() - ng:KeepAlive() - e1:SetLabelObject(ng) - --remove - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(87902575,0)) - e2:SetCategory(CATEGORY_REMOVE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetTarget(c87902575.rmtg) - e2:SetOperation(c87902575.rmop) - e2:SetLabelObject(e1) - c:RegisterEffect(e2) - --return - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(87902575,1)) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e3:SetRange(LOCATION_FZONE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetCountLimit(1) - e3:SetCondition(c87902575.retcon) - e3:SetOperation(c87902575.retop) - e3:SetLabelObject(e1) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_PHASE_START+PHASE_MAIN1) - e4:SetRange(LOCATION_FZONE) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetCountLimit(1) - e4:SetOperation(c87902575.clearop) - e4:SetLabelObject(e1) - c:RegisterEffect(e4) -end -function c87902575.clear(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:GetLabelObject():Clear() -end -function c87902575.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return eg:GetFirst():IsOnField() - and eg:GetFirst():IsCanBeEffectTarget(e) end - Duel.SetTargetCard(eg:GetFirst()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) -end -function c87902575.rmop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=eg:GetFirst() - if tc:IsRelateToEffect(e) and tc:IsLocation(LOCATION_MZONE) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY)~=0 then - tc:CreateRelation(e:GetHandler(),RESET_EVENT+0x1fe0000) - e:GetLabelObject():GetLabelObject():AddCard(tc) - end -end -function c87902575.retfilter(c,ec,tp) - return c:IsRelateToCard(ec) and c:GetPreviousControler()==tp -end -function c87902575.retcon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject():GetLabelObject() - return g:FilterCount(c87902575.retfilter,nil,e:GetHandler(),Duel.GetTurnPlayer())>0 -end -function c87902575.retop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p=Duel.GetTurnPlayer() - local lg=e:GetLabelObject():GetLabelObject() - local g=lg:Filter(c87902575.retfilter,nil,e:GetHandler(),p) - lg:Sub(g) - local ft=Duel.GetLocationCount(p,LOCATION_MZONE) - if g:GetCount()>ft then - local sg=g - Duel.Hint(HINT_SELECTMSG,p,aux.Stringid(87902575,2)) - g=g:Select(p,ft,ft,nil) - sg:Sub(g) - Duel.SendtoGrave(sg,REASON_EFFECT) - end - local tc=g:GetFirst() - while tc do - Duel.ReturnToField(tc,POS_FACEUP_ATTACK) - tc=g:GetNext() - end -end -function c87902575.clfilter(c,ec,tp) - return (not c:IsRelateToCard(ec)) or c:GetPreviousControler()==tp -end -function c87902575.clearop(e,tp,eg,ep,ev,re,r,rp) - e:GetLabelObject():GetLabelObject():Remove(c87902575.clfilter,nil,e:GetHandler(),Duel.GetTurnPlayer()) -end +--フューチャー・ヴィジョン +function c87902575.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c87902575.clear) + c:RegisterEffect(e1) + local ng=Group.CreateGroup() + ng:KeepAlive() + e1:SetLabelObject(ng) + --remove + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(87902575,0)) + e2:SetCategory(CATEGORY_REMOVE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c87902575.rmtg) + e2:SetOperation(c87902575.rmop) + e2:SetLabelObject(e1) + c:RegisterEffect(e2) + --return + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(87902575,1)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetCountLimit(1) + e3:SetCondition(c87902575.retcon) + e3:SetOperation(c87902575.retop) + e3:SetLabelObject(e1) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE_START+PHASE_MAIN1) + e4:SetRange(LOCATION_FZONE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetCountLimit(1) + e4:SetOperation(c87902575.clearop) + e4:SetLabelObject(e1) + c:RegisterEffect(e4) +end +function c87902575.clear(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetLabelObject():Clear() +end +function c87902575.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return eg:GetFirst():IsOnField() + and eg:GetFirst():IsCanBeEffectTarget(e) end + Duel.SetTargetCard(eg:GetFirst()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) +end +function c87902575.rmop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=eg:GetFirst() + if tc:IsRelateToEffect(e) and tc:IsLocation(LOCATION_MZONE) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY)~=0 then + tc:CreateRelation(e:GetHandler(),RESET_EVENT+0x1fe0000) + e:GetLabelObject():GetLabelObject():AddCard(tc) + end +end +function c87902575.retfilter(c,ec,tp) + return c:IsRelateToCard(ec) and c:GetPreviousControler()==tp +end +function c87902575.retcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject():GetLabelObject() + return g:FilterCount(c87902575.retfilter,nil,e:GetHandler(),Duel.GetTurnPlayer())>0 +end +function c87902575.retop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p=Duel.GetTurnPlayer() + local lg=e:GetLabelObject():GetLabelObject() + local g=lg:Filter(c87902575.retfilter,nil,e:GetHandler(),p) + lg:Sub(g) + local ft=Duel.GetLocationCount(p,LOCATION_MZONE) + if g:GetCount()>ft then + local sg=g + Duel.Hint(HINT_SELECTMSG,p,aux.Stringid(87902575,2)) + g=g:Select(p,ft,ft,nil) + sg:Sub(g) + Duel.SendtoGrave(sg,REASON_EFFECT) + end + local tc=g:GetFirst() + while tc do + Duel.ReturnToField(tc,POS_FACEUP_ATTACK) + tc=g:GetNext() + end +end +function c87902575.clfilter(c,ec,tp) + return (not c:IsRelateToCard(ec)) or c:GetPreviousControler()==tp +end +function c87902575.clearop(e,tp,eg,ep,ev,re,r,rp) + e:GetLabelObject():GetLabelObject():Remove(c87902575.clfilter,nil,e:GetHandler(),Duel.GetTurnPlayer()) +end diff --git a/script/c87910978.lua b/script/c87910978.lua index ca3a3adc..f5ad0a1c 100644 --- a/script/c87910978.lua +++ b/script/c87910978.lua @@ -12,11 +12,11 @@ function c87910978.initial_effect(c) c:RegisterEffect(e1) end function c87910978.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,800) - else Duel.PayLPCost(tp,800) end + if chk==0 then return Duel.CheckLPCost(tp,800) end + Duel.PayLPCost(tp,800) end function c87910978.filter(c) - return c:IsControlerCanBeChanged() and c:IsFaceup() + return c:IsControlerCanBeChanged() and c:IsFaceup() and c:IsSummonableCard() end function c87910978.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c87910978.filter(chkc) end diff --git a/script/c87911394.lua b/script/c87911394.lua index 8e8c8149..ee34ca3c 100644 --- a/script/c87911394.lua +++ b/script/c87911394.lua @@ -5,13 +5,18 @@ function c87911394.initial_effect(c) c:EnableReviveLimit() --actlimit local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c87911394.operation) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,1) + e1:SetValue(c87911394.aclimit) + e1:SetCondition(c87911394.actcon) c:RegisterEffect(e1) --destroy local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(87911394,0)) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_ATTACK_ANNOUNCE) e2:SetCondition(c87911394.atkcon) @@ -21,19 +26,12 @@ function c87911394.initial_effect(c) c:RegisterEffect(e2) end c87911394.xyz_number=39 -function c87911394.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c87911394.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end function c87911394.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c87911394.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end function c87911394.atkcon(e,tp,eg,ep,ev,re,r,rp) local at=Duel.GetAttackTarget() return at and at:IsFaceup() and e:GetHandler():GetOverlayGroup():IsExists(Card.IsSetCard,1,nil,0x107f) diff --git a/script/c87917187.lua b/script/c87917187.lua new file mode 100644 index 00000000..c1bbdd97 --- /dev/null +++ b/script/c87917187.lua @@ -0,0 +1,69 @@ +--暗黒の召喚神 +function c87917187.initial_effect(c) + --Special Summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(87917187,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,87917187) + e1:SetCost(c87917187.spcost) + e1:SetTarget(c87917187.sptg) + e1:SetOperation(c87917187.spop) + c:RegisterEffect(e1) + --Search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(87917187,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCost(c87917187.thcost) + e2:SetTarget(c87917187.thtg) + e2:SetOperation(c87917187.thop) + c:RegisterEffect(e2) +end +function c87917187.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c87917187.spfilter(c,e,tp) + return c:IsCode(6007213,32491822,69890967) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c87917187.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c87917187.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c87917187.spop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c87917187.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end +function c87917187.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c87917187.thfilter(c) + return c:IsCode(6007213,32491822,69890967) and c:IsAbleToHand() +end +function c87917187.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c87917187.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c87917187.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c87917187.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c87973893.lua b/script/c87973893.lua index 192fe7e7..8f6264ff 100644 --- a/script/c87973893.lua +++ b/script/c87973893.lua @@ -1,27 +1,12 @@ --甲虫装機の魔斧 ゼクトホーク function c87973893.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(c87973893.target) - e1:SetOperation(c87973893.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x56)) --Atk local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(1000) 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(c87973893.eqlimit) - c:RegisterEffect(e3) --actlimit local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -31,26 +16,6 @@ function c87973893.initial_effect(c) e4:SetOperation(c87973893.acop) c:RegisterEffect(e4) end -function c87973893.eqlimit(e,c) - return c:IsSetCard(0x56) -end -function c87973893.filter(c) - return c:IsFaceup() and c:IsSetCard(0x56) -end -function c87973893.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c87973893.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c87973893.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c87973893.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c87973893.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 c87973893.accon(e,tp,eg,ep,ev,re,r,rp) return eg:GetFirst()==e:GetHandler():GetEquipTarget() end diff --git a/script/c88032456.lua b/script/c88032456.lua index 17469fa8..bbe65809 100644 --- a/script/c88032456.lua +++ b/script/c88032456.lua @@ -1,54 +1,54 @@ ---コピーキャット -function c88032456.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,88032456+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c88032456.condition) - e1:SetTarget(c88032456.target) - e1:SetOperation(c88032456.activate) - c:RegisterEffect(e1) -end -function c88032456.cfilter1(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c88032456.cfilter2(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c88032456.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c88032456.cfilter1,tp,LOCATION_ONFIELD,0,1,nil) - and Duel.IsExistingMatchingCard(c88032456.cfilter2,tp,LOCATION_MZONE,0,1,nil) -end -function c88032456.filter(c,e,tp) - if c:IsType(TYPE_MONSTER) then - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - else - local ct=Duel.GetLocationCount(tp,LOCATION_SZONE) - if e:IsHasType(EFFECT_TYPE_ACTIVATE) and not e:GetHandler():IsLocation(LOCATION_SZONE) then ct=ct-1 end - return c:IsSSetable() and (c:IsType(TYPE_FIELD) or ct>0) - end -end -function c88032456.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c88032456.filter(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c88032456.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c88032456.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) - if g:GetFirst():IsType(TYPE_MONSTER) then - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) - else - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) - end -end -function c88032456.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) then return end - if tc:IsType(TYPE_MONSTER) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - elseif (tc:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) then - Duel.SSet(tp,tc) - Duel.ConfirmCards(1-tp,tc) - end -end +--コピーキャット +function c88032456.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,88032456+EFFECT_COUNT_CODE_OATH) + e1:SetCondition(c88032456.condition) + e1:SetTarget(c88032456.target) + e1:SetOperation(c88032456.activate) + c:RegisterEffect(e1) +end +function c88032456.cfilter1(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c88032456.cfilter2(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c88032456.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c88032456.cfilter1,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.IsExistingMatchingCard(c88032456.cfilter2,tp,LOCATION_MZONE,0,1,nil) +end +function c88032456.filter(c,e,tp) + if c:IsType(TYPE_MONSTER) then + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + else + local ct=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:IsHasType(EFFECT_TYPE_ACTIVATE) and not e:GetHandler():IsLocation(LOCATION_SZONE) then ct=ct-1 end + return c:IsSSetable() and (c:IsType(TYPE_FIELD) or ct>0) + end +end +function c88032456.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c88032456.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c88032456.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c88032456.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) + if g:GetFirst():IsType(TYPE_MONSTER) then + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) + else + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + end +end +function c88032456.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + if tc:IsType(TYPE_MONSTER) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + elseif (tc:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) then + Duel.SSet(tp,tc) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c88069166.lua b/script/c88069166.lua index 2e1ea948..a01d969b 100644 --- a/script/c88069166.lua +++ b/script/c88069166.lua @@ -1,68 +1,68 @@ ---オーディンの眼 -function c88069166.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --confirm - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(88069166,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c88069166.target) - e2:SetOperation(c88069166.operation) - c:RegisterEffect(e2) - --cancel target - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetOperation(c88069166.ctarget) - c:RegisterEffect(e3) -end -function c88069166.filter(c) - return c:IsFaceup() and c:IsSetCard(0x4b) -end -function c88069166.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c88069166.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c88069166.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c88069166.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetChainLimit(c88069166.chlimit) -end -function c88069166.chlimit(e,ep,tp) - return tp==ep -end -function c88069166.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc and c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then - c:SetCardTarget(tc) - e:SetLabelObject(tc) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCondition(c88069166.rcon) - tc:RegisterEffect(e1) - local g1=Duel.GetFieldGroup(tp,0,LOCATION_HAND) - local g2=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_ONFIELD,nil) - g1:Merge(g2) - Duel.ConfirmCards(tp,g1) - Duel.ShuffleHand(1-tp) - end -end -function c88069166.rcon(e) - return e:GetOwner():IsHasCardTarget(e:GetHandler()) -end -function c88069166.ctarget(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetFirstCardTarget() - if tc then e:GetHandler():CancelCardTarget(tc) end -end +--オーディンの眼 +function c88069166.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --confirm + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(88069166,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c88069166.target) + e2:SetOperation(c88069166.operation) + c:RegisterEffect(e2) + --cancel target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetOperation(c88069166.ctarget) + c:RegisterEffect(e3) +end +function c88069166.filter(c) + return c:IsFaceup() and c:IsSetCard(0x4b) +end +function c88069166.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c88069166.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c88069166.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c88069166.filter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetChainLimit(c88069166.chlimit) +end +function c88069166.chlimit(e,ep,tp) + return tp==ep +end +function c88069166.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) then + c:SetCardTarget(tc) + e:SetLabelObject(tc) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCondition(c88069166.rcon) + tc:RegisterEffect(e1) + local g1=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + local g2=Duel.GetMatchingGroup(Card.IsFacedown,tp,0,LOCATION_ONFIELD,nil) + g1:Merge(g2) + Duel.ConfirmCards(tp,g1) + Duel.ShuffleHand(1-tp) + end +end +function c88069166.rcon(e) + return e:GetOwner():IsHasCardTarget(e:GetHandler()) +end +function c88069166.ctarget(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetFirstCardTarget() + if tc then e:GetHandler():CancelCardTarget(tc) end +end diff --git a/script/c88069597.lua b/script/c88069597.lua new file mode 100644 index 00000000..d927a854 --- /dev/null +++ b/script/c88069597.lua @@ -0,0 +1,67 @@ +--プレデター・プランター +function c88069597.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --maintain + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c88069597.mtcon) + e2:SetOperation(c88069597.mtop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(88069597,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetTarget(c88069597.sptg) + e3:SetOperation(c88069597.spop) + c:RegisterEffect(e3) +end +function c88069597.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c88069597.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,800) and Duel.SelectYesNo(tp,aux.Stringid(88069597,1)) then + Duel.PayLPCost(tp,800) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c88069597.spfilter(c,e,tp) + return c:IsSetCard(0x10f3) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c88069597.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c88069597.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c88069597.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c88069597.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c88071625.lua b/script/c88071625.lua index f9c77085..99bc4c8b 100644 --- a/script/c88071625.lua +++ b/script/c88071625.lua @@ -44,14 +44,14 @@ function c88071625.initial_effect(c) e6:SetOperation(c88071625.copyop) c:RegisterEffect(e6) end -function c88071625.otcon(e,c) +function c88071625.otcon(e,c,minc) if c==nil then return true end - return c:GetLevel()>6 and Duel.GetTributeCount(c)>0 + return c:GetLevel()>6 and minc<=1 and Duel.CheckTribute(c,1) end function c88071625.otop(e,tp,eg,ep,ev,re,r,rp,c) local sg=Duel.SelectTribute(tp,c,1,1) c:SetMaterial(sg) - Duel.Release(sg, REASON_SUMMON+REASON_MATERIAL) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) end function c88071625.valcheck(e,c) local g=c:GetMaterial() diff --git a/script/c8809344.lua b/script/c8809344.lua index 37f710f4..92e8bb7b 100644 --- a/script/c8809344.lua +++ b/script/c8809344.lua @@ -61,6 +61,7 @@ function c8809344.operation(e,tp,eg,ep,ev,re,r,rp) if og:GetCount()==0 then return end Duel.SendtoGrave(og,REASON_EFFECT) Duel.Overlay(c,Group.FromCards(tc)) + if c:IsFacedown() then return end local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) diff --git a/script/c88120966.lua b/script/c88120966.lua index 8628ec27..9edc64d9 100644 --- a/script/c88120966.lua +++ b/script/c88120966.lua @@ -3,12 +3,12 @@ function c88120966.initial_effect(c) --xyz summon aux.AddXyzProcedure(c,nil,8,2) c:EnableReviveLimit() - --attack up + --destroy and damage local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) e1:SetDescription(aux.Stringid(88120966,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(2) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c88120966.condition) diff --git a/script/c88177324.lua b/script/c88177324.lua index 873ce126..eefd88c3 100644 --- a/script/c88177324.lua +++ b/script/c88177324.lua @@ -6,6 +6,7 @@ function c88177324.initial_effect(c) --negate local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(88177324,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_PHASE+PHASE_BATTLE_START) e1:SetRange(LOCATION_MZONE) diff --git a/script/c88190790.lua b/script/c88190790.lua index 6b384da8..cceb4dae 100644 --- a/script/c88190790.lua +++ b/script/c88190790.lua @@ -1,81 +1,92 @@ ---アサルト・アーマー -function c88190790.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:SetCondition(c88190790.condition) - e1:SetTarget(c88190790.target) - e1:SetOperation(c88190790.operation) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(300) - 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(c88190790.eqlimit) - c:RegisterEffect(e3) - --multi attack - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(88190790,0)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_SZONE) - e4:SetCondition(c88190790.macon) - e4:SetCost(c88190790.macost) - e4:SetOperation(c88190790.maop) - c:RegisterEffect(e4) -end -function c88190790.eqlimit(e,c) - if e:GetHandler():GetEquipTarget()==c then return true end - local g=Duel.GetFieldGroup(e:GetHandlerPlayer(),LOCATION_MZONE,0) - local tc=g:GetFirst() - return g:GetCount()==1 and tc==c and tc:IsRace(RACE_WARRIOR) -end -function c88190790.condition(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) - local tc=g:GetFirst() - e:SetLabelObject(tc) - return g:GetCount()==1 and tc:IsFaceup() and tc:IsRace(RACE_WARRIOR) -end -function c88190790.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local tc=e:GetLabelObject() - if chkc then return chkc==tc end - if chk==0 then return tc and tc:IsCanBeEffectTarget(e) end - Duel.SetTargetCard(tc) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c88190790.operation(e,tp,eg,ep,ev,re,r,rp) - local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) - local tc=Duel.GetFirstTarget() - if ct==1 and e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Equip(tp,e:GetHandler(),tc) - end -end -function c88190790.macon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c88190790.macost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToGraveAsCost() end - Duel.SetTargetCard(c:GetEquipTarget()) - Duel.SendtoGrave(c,REASON_COST) -end -function c88190790.maop(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_EXTRA_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - tc:RegisterEffect(e1) - end -end +--アサルト・アーマー +function c88190790.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:SetCondition(c88190790.condition) + e1:SetTarget(c88190790.target) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(300) + 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(c88190790.eqlimit) + c:RegisterEffect(e3) + --multi attack + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(88190790,0)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c88190790.macon) + e4:SetCost(c88190790.macost) + e4:SetOperation(c88190790.maop) + c:RegisterEffect(e4) +end +function c88190790.eqlimit(e,c) + if e:GetHandler():GetEquipTarget()==c then return true end + local g=Duel.GetFieldGroup(e:GetHandlerPlayer(),LOCATION_MZONE,0) + local tc=g:GetFirst() + return g:GetCount()==1 and tc==c and tc:IsRace(RACE_WARRIOR) +end +function c88190790.condition(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) + local tc=g:GetFirst() + e:SetLabelObject(tc) + return g:GetCount()==1 and tc:IsFaceup() and tc:IsRace(RACE_WARRIOR) +end +function c88190790.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tc=e:GetLabelObject() + if chkc then return chkc==tc end + if chk==0 then return tc and tc:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetReset(RESET_CHAIN) + e1:SetLabel(Duel.GetCurrentChain()) + e1:SetLabelObject(e) + e1:SetOperation(c88190790.operation) + Duel.RegisterEffect(e1,tp) +end +function c88190790.operation(e,tp,eg,ep,ev,re,r,rp) + if re~=e:GetLabelObject() then return end + local c=e:GetHandler() + if c:IsType(TYPE_EQUIP) and c:IsLocation(LOCATION_SZONE) and c:IsFaceup() then + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + local tc=Duel.GetChainInfo(Duel.GetCurrentChain(),CHAININFO_TARGET_CARDS):GetFirst() + if if ct==1 and tc and c:IsRelateToEffect(re) and tc:IsRelateToEffect(re) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + end + end +end +function c88190790.macon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c88190790.macost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToGraveAsCost() end + Duel.SetTargetCard(c:GetEquipTarget()) + Duel.SendtoGrave(c,REASON_COST) +end +function c88190790.maop(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_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end diff --git a/script/c88234365.lua b/script/c88234365.lua index 89cfeea0..6c2b0a71 100644 --- a/script/c88234365.lua +++ b/script/c88234365.lua @@ -17,6 +17,7 @@ function c88234365.initial_effect(c) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_MZONE) e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1,88234365) e2:SetCost(c88234365.cpcost) e2:SetTarget(c88234365.cptg) @@ -50,15 +51,12 @@ function c88234365.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) return tg and tg(e,tp,eg,ep,ev,re,r,rp,0,chkc) end if chk==0 then return Duel.IsExistingTarget(c88234365.cpfilter,tp,LOCATION_GRAVE,0,1,nil) end - e:SetProperty(EFFECT_FLAG_CARD_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) local g=Duel.SelectTarget(tp,c88234365.cpfilter,tp,LOCATION_GRAVE,0,1,1,nil) local te,ceg,cep,cev,cre,cr,crp=g:GetFirst():CheckActivateEffect(false,true,true) Duel.ClearTargetCard() g:GetFirst():CreateEffectRelation(e) local tg=te:GetTarget() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) if tg then tg(e,tp,ceg,cep,cev,cre,cr,crp,1) end te:SetLabelObject(e:GetLabelObject()) e:SetLabelObject(te) diff --git a/script/c88241506.lua b/script/c88241506.lua index 6161aa44..21fbe14f 100644 --- a/script/c88241506.lua +++ b/script/c88241506.lua @@ -35,12 +35,11 @@ function c88241506.naop(e,tp,eg,ep,ev,re,r,rp) if Duel.NegateAttack() and c:IsRelateToEffect(e) then Duel.ChangePosition(c,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local g=Duel.GetMatchingGroup(c88241506.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,nil,e,tp) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c88241506.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(88241506,2)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g1=g:Select(tp,1,1,nil) - if g1:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP) end end @@ -56,8 +55,8 @@ end function c88241506.spop(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,c88241506.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c88241506.spfilter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c88264978.lua b/script/c88264978.lua index 2b4542cd..3b6af0fa 100644 --- a/script/c88264978.lua +++ b/script/c88264978.lua @@ -44,8 +44,8 @@ end function c88264978.spop(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,c88264978.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c88264978.filter),tp,LOCATION_GRAVE+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 diff --git a/script/c88301393.lua b/script/c88301393.lua index 5de886f2..5883b6d2 100644 --- a/script/c88301393.lua +++ b/script/c88301393.lua @@ -1,118 +1,118 @@ ---インフェルノイド・アドラメレク -function c88301393.initial_effect(c) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e2:SetCondition(c88301393.spcon) - e2:SetOperation(c88301393.spop) - c:RegisterEffect(e2) - --chain attack - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(88301393,0)) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLE_DESTROYING) - e3:SetCondition(c88301393.atcon) - e3:SetOperation(c88301393.atop) - c:RegisterEffect(e3) - --remove - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(88301393,1)) - e4:SetCategory(CATEGORY_REMOVE) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCountLimit(1) - e4:SetCost(c88301393.rmcost) - e4:SetTarget(c88301393.rmtg) - e4:SetOperation(c88301393.rmop) - c:RegisterEffect(e4) -end -function c88301393.spfilter(c) - return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c88301393.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - local sum=0 - for i=0,4 do - local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) - if tc and tc:IsFaceup() and tc:IsType(TYPE_EFFECT) then - if tc:IsType(TYPE_XYZ) then sum=sum+tc:GetRank() - else sum=sum+tc:GetLevel() end - end - end - if sum>8 then return false end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-1 then return false end - if c:IsHasEffect(34822850) then - if ft>0 then - return Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c) - else - local ct=-ft+1 - return Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_MZONE,0,ct,nil) - and Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c) - end - else - return ft>0 and Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,c) - end -end -function c88301393.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - local g=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - if c:IsHasEffect(34822850) then - if ft>0 then - g=Duel.SelectMatchingCard(tp,c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,2,c) - else - local sg=Duel.GetMatchingGroup(c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) - local ct=-ft+1 - g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) - if ct<2 then - sg:Sub(g) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g2=sg:Select(tp,1,1,nil) - g:Merge(g2) - end - end - else - g=Duel.SelectMatchingCard(tp,c88301393.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,2,c) - end - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c88301393.atcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - return bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) -end -function c88301393.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChainAttack() -end -function c88301393.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsReleasable,1,nil) end - local g=Duel.SelectReleaseGroup(tp,Card.IsReleasable,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c88301393.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c88301393.rmop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) - end -end +--インフェルノイド・アドラメレク +function c88301393.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e2:SetCondition(c88301393.spcon) + e2:SetOperation(c88301393.spop) + c:RegisterEffect(e2) + --chain attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(88301393,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c88301393.atcon) + e3:SetOperation(c88301393.atop) + c:RegisterEffect(e3) + --remove + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(88301393,1)) + e4:SetCategory(CATEGORY_REMOVE) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCountLimit(1) + e4:SetCost(c88301393.rmcost) + e4:SetTarget(c88301393.rmtg) + e4:SetOperation(c88301393.rmop) + c:RegisterEffect(e4) +end +function c88301393.spfilter(c) + return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c88301393.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local sum=0 + for i=0,4 do + local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + if tc and tc:IsFaceup() and tc:IsType(TYPE_EFFECT) then + if tc:IsType(TYPE_XYZ) then sum=sum+tc:GetRank() + else sum=sum+tc:GetLevel() end + end + end + if sum>8 then return false end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + if c:IsHasEffect(34822850) then + if ft>0 then + return Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c) + else + local ct=-ft+1 + return Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_MZONE,0,ct,nil) + and Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c) + end + else + return ft>0 and Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,c) + end +end +function c88301393.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + if c:IsHasEffect(34822850) then + if ft>0 then + g=Duel.SelectMatchingCard(tp,c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,2,c) + else + local sg=Duel.GetMatchingGroup(c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) + local ct=-ft+1 + g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) + if ct<2 then + sg:Sub(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g2=sg:Select(tp,1,1,nil) + g:Merge(g2) + end + end + else + g=Duel.SelectMatchingCard(tp,c88301393.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,2,c) + end + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c88301393.atcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) +end +function c88301393.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end +function c88301393.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsReleasable,1,nil) end + local g=Duel.SelectReleaseGroup(tp,Card.IsReleasable,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c88301393.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c88301393.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c88305705.lua b/script/c88305705.lua new file mode 100644 index 00000000..67391674 --- /dev/null +++ b/script/c88305705.lua @@ -0,0 +1,91 @@ +--ブレイブアイズ・ペンデュラム・ドラゴン +function c88305705.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x10f2),aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),true) + --atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(88305705,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c88305705.atkcon) + e1:SetTarget(c88305705.atktg) + e1:SetOperation(c88305705.atkop) + c:RegisterEffect(e1) + --disable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c88305705.discon) + e2:SetOperation(c88305705.disop) + c:RegisterEffect(e2) + --remove + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(88305705,1)) + e3:SetCategory(CATEGORY_REMOVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetCondition(c88305705.rmcon) + e3:SetTarget(c88305705.rmtg) + e3:SetOperation(c88305705.rmop) + c:RegisterEffect(e3) +end +function c88305705.atkcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION +end +function c88305705.atkfilter(c) + return c:IsFaceup() and c:GetAttack()>0 +end +function c88305705.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c88305705.atkfilter,tp,0,LOCATION_MZONE,1,nil) end +end +function c88305705.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c88305705.atkfilter,tp,0,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c88305705.ftarget) + e2:SetLabel(c:GetFieldID()) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) +end +function c88305705.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end +function c88305705.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + return re:IsActiveType(TYPE_MONSTER) and re:GetHandler():GetAttack()==0 +end +function c88305705.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) +end +function c88305705.rmcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + e:SetLabelObject(bc) + return c==Duel.GetAttacker() and bc and c:IsStatus(STATUS_OPPO_BATTLE) and bc:IsOnField() and bc:IsRelateToBattle() +end +function c88305705.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetLabelObject():IsAbleToRemove() end + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetLabelObject(),1,0,0) +end +function c88305705.rmop(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetLabelObject() + if bc:IsRelateToBattle() and bc:IsControler(1-tp) then + Duel.Remove(bc,POS_FACEUP,REASON_EFFECT) + end +end diff --git a/script/c88307361.lua b/script/c88307361.lua index 1ff97eff..4b61d89b 100644 --- a/script/c88307361.lua +++ b/script/c88307361.lua @@ -39,7 +39,8 @@ end function c88307361.sumop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local tg=Duel.GetMatchingGroup(c88307361.filter,tp,LOCATION_DECK,0,nil,e,tp) - if ft<=0 or tg:GetCount()==0 or (ft>1 and tg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + if ft<=0 or tg:GetCount()==0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=tg:Select(tp,ft,ft,nil) local c=e:GetHandler() @@ -85,8 +86,7 @@ function c88307361.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c88307361.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c88358139.lua b/script/c88358139.lua index ef4a7683..3fe2c9d5 100644 --- a/script/c88358139.lua +++ b/script/c88358139.lua @@ -1,35 +1,35 @@ ---EMヘルプリンセス -function c88358139.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetRange(LOCATION_HAND) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetCondition(c88358139.spcon) - e1:SetTarget(c88358139.sptg) - e1:SetOperation(c88358139.spop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) -end -function c88358139.cfilter(c,tp) - return c:IsFaceup() and c:GetSummonPlayer()==tp and c:IsSetCard(0x9f) and not c:IsCode(88358139) -end -function c88358139.spcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c88358139.cfilter,1,nil,tp) -end -function c88358139.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c88358139.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--EMヘルプリンセス +function c88358139.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetRange(LOCATION_HAND) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCondition(c88358139.spcon) + e1:SetTarget(c88358139.sptg) + e1:SetOperation(c88358139.spop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c88358139.cfilter(c,tp) + return c:IsFaceup() and c:GetSummonPlayer()==tp and c:IsSetCard(0x9f) and not c:IsCode(88358139) +end +function c88358139.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c88358139.cfilter,1,nil,tp) +end +function c88358139.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c88358139.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c8842266.lua b/script/c8842266.lua index 34d179af..ff30e1d0 100644 --- a/script/c8842266.lua +++ b/script/c8842266.lua @@ -1,34 +1,34 @@ ---ご隠居の猛毒薬 -function c8842266.initial_effect(c) - --rec or dam - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c8842266.target) - e1:SetOperation(c8842266.operation) - c:RegisterEffect(e1) -end -function c8842266.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) - local op=Duel.SelectOption(tp,aux.Stringid(8842266,0),aux.Stringid(8842266,1)) - e:SetLabel(op) - if op==0 then - e:SetCategory(CATEGORY_RECOVER) - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1200) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1200) - else - e:SetCategory(CATEGORY_DAMAGE) - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(800) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) - end -end -function c8842266.operation(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - if e:GetLabel()==0 then - Duel.Recover(p,d,REASON_EFFECT) - else Duel.Damage(p,d,REASON_EFFECT) end -end +--ご隠居の猛毒薬 +function c8842266.initial_effect(c) + --rec or dam + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c8842266.target) + e1:SetOperation(c8842266.operation) + c:RegisterEffect(e1) +end +function c8842266.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + local op=Duel.SelectOption(tp,aux.Stringid(8842266,0),aux.Stringid(8842266,1)) + e:SetLabel(op) + if op==0 then + e:SetCategory(CATEGORY_RECOVER) + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1200) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,1200) + else + e:SetCategory(CATEGORY_DAMAGE) + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,800) + end +end +function c8842266.operation(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + if e:GetLabel()==0 then + Duel.Recover(p,d,REASON_EFFECT) + else Duel.Damage(p,d,REASON_EFFECT) end +end diff --git a/script/c88482761.lua b/script/c88482761.lua index 86ce0df0..92cddac2 100644 --- a/script/c88482761.lua +++ b/script/c88482761.lua @@ -1,94 +1,94 @@ ---ダイスロール・バトル -function c88482761.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c88482761.condition) - e1:SetTarget(c88482761.target) - e1:SetOperation(c88482761.operation) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(88482761,0)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_GRAVE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCondition(c88482761.atkcon) - e2:SetCost(c88482761.atkcost) - e2:SetTarget(c88482761.atktg) - e2:SetOperation(c88482761.atkop) - c:RegisterEffect(e2) -end -function c88482761.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c88482761.rmfilter1(c,e,tp) - return c:IsSetCard(0x2016) and c:IsAbleToRemove() - and Duel.IsExistingMatchingCard(c88482761.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetOriginalLevel()) -end -function c88482761.rmfilter2(c,lv) - return c:IsSetCard(0x2016) and c:IsType(TYPE_TUNER) and c:IsAbleToRemove() and c:GetOriginalLevel()==lv -end -function c88482761.spfilter(c,e,tp,lv) - return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c88482761.rmfilter2,tp,LOCATION_HAND,0,1,nil,c:GetLevel()-lv) -end -function c88482761.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c88482761.rmfilter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c88482761.rmfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c88482761.rmfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c88482761.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c88482761.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetOriginalLevel()) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local rg=Duel.SelectMatchingCard(tp,c88482761.rmfilter2,tp,LOCATION_HAND,0,1,1,nil,g:GetFirst():GetLevel()-tc:GetOriginalLevel()) - rg:AddCard(tc) - if Duel.Remove(rg,POS_FACEUP,REASON_EFFECT)==2 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end - end -end -function c88482761.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_BATTLE_STEP -end -function c88482761.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c88482761.atkfilter(c) - return c:IsType(TYPE_SYNCHRO) and c:IsPosition(POS_FACEUP_ATTACK) -end -function c88482761.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c88482761.atkfilter,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingTarget(c88482761.atkfilter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c88482761.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g2=Duel.SelectTarget(tp,c88482761.atkfilter,tp,0,LOCATION_MZONE,1,1,nil) - e:SetLabelObject(g2:GetFirst()) -end -function c88482761.atkop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()==2 then - local c1=g:GetFirst() - local c2=g:GetNext() - if c1~=e:GetLabelObject() then c1,c2=c2,c1 end - if c1:IsControler(1-tp) and c1:IsPosition(POS_FACEUP_ATTACK) and not c1:IsImmuneToEffect(e) - and c2:IsControler(tp) then - Duel.CalculateDamage(c1,c2,true) - end - end -end +--ダイスロール・バトル +function c88482761.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c88482761.condition) + e1:SetTarget(c88482761.target) + e1:SetOperation(c88482761.operation) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(88482761,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_GRAVE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c88482761.atkcon) + e2:SetCost(c88482761.atkcost) + e2:SetTarget(c88482761.atktg) + e2:SetOperation(c88482761.atkop) + c:RegisterEffect(e2) +end +function c88482761.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c88482761.rmfilter1(c,e,tp) + return c:IsSetCard(0x2016) and c:IsAbleToRemove() + and Duel.IsExistingMatchingCard(c88482761.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetOriginalLevel()) +end +function c88482761.rmfilter2(c,lv) + return c:IsSetCard(0x2016) and c:IsType(TYPE_TUNER) and c:IsAbleToRemove() and c:GetOriginalLevel()==lv +end +function c88482761.spfilter(c,e,tp,lv) + return c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c88482761.rmfilter2,tp,LOCATION_HAND,0,1,nil,c:GetLevel()-lv) +end +function c88482761.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c88482761.rmfilter1(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c88482761.rmfilter1,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c88482761.rmfilter1,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c88482761.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c88482761.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetOriginalLevel()) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=Duel.SelectMatchingCard(tp,c88482761.rmfilter2,tp,LOCATION_HAND,0,1,1,nil,g:GetFirst():GetLevel()-tc:GetOriginalLevel()) + rg:AddCard(tc) + if Duel.Remove(rg,POS_FACEUP,REASON_EFFECT)==2 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end +function c88482761.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_BATTLE_STEP +end +function c88482761.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c88482761.atkfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsPosition(POS_FACEUP_ATTACK) +end +function c88482761.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c88482761.atkfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingTarget(c88482761.atkfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c88482761.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g2=Duel.SelectTarget(tp,c88482761.atkfilter,tp,0,LOCATION_MZONE,1,1,nil) + e:SetLabelObject(g2:GetFirst()) +end +function c88482761.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==2 then + local c1=g:GetFirst() + local c2=g:GetNext() + if c1~=e:GetLabelObject() then c1,c2=c2,c1 end + if c1:IsControler(1-tp) and c1:IsPosition(POS_FACEUP_ATTACK) and not c1:IsImmuneToEffect(e) + and c2:IsControler(tp) then + Duel.CalculateDamage(c1,c2,true) + end + end +end diff --git a/script/c88494120.lua b/script/c88494120.lua index 3e863155..3ba53cbe 100644 --- a/script/c88494120.lua +++ b/script/c88494120.lua @@ -1,43 +1,43 @@ ---不屈の闘志 -function c88494120.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(c88494120.condition) - e1:SetTarget(c88494120.target) - e1:SetOperation(c88494120.activate) - c:RegisterEffect(e1) -end -function c88494120.condition(e,tp,eg,ep,ev,re,r,rp) - return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) - and Duel.GetMatchingGroupCount(Card.IsFaceup,tp,LOCATION_MZONE,0,nil)==1 -end -function c88494120.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 - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - if g:GetCount()==0 then return false end - local mg,atk=g:GetMinGroup(Card.GetAttack) - return atk>0 and 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 c88494120.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - if g:GetCount()==0 then return end - local mg,atk=g:GetMinGroup(Card.GetAttack) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(atk) - tc:RegisterEffect(e1) - end -end +--不屈の闘志 +function c88494120.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(c88494120.condition) + e1:SetTarget(c88494120.target) + e1:SetOperation(c88494120.activate) + c:RegisterEffect(e1) +end +function c88494120.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) + and Duel.GetMatchingGroupCount(Card.IsFaceup,tp,LOCATION_MZONE,0,nil)==1 +end +function c88494120.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 + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + if g:GetCount()==0 then return false end + local mg,atk=g:GetMinGroup(Card.GetAttack) + return atk>0 and 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 c88494120.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + if g:GetCount()==0 then return end + local mg,atk=g:GetMinGroup(Card.GetAttack) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + tc:RegisterEffect(e1) + end +end diff --git a/script/c88513608.lua b/script/c88513608.lua index 36eb0ae1..90456c80 100644 --- a/script/c88513608.lua +++ b/script/c88513608.lua @@ -1,88 +1,88 @@ ---捨て身の宝札 -function c88513608.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c88513608.condition) - e1:SetCost(c88513608.cost) - e1:SetTarget(c88513608.target) - e1:SetOperation(c88513608.activate) - c:RegisterEffect(e1) - if not c88513608.global_check then - c88513608.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_CHANGE_POS) - ge1:SetOperation(c88513608.poscheck) - Duel.RegisterEffect(ge1,0) - end -end -function c88513608.poscheck(e,tp,eg,ep,ev,re,r,rp) - if re==nil then - Duel.RegisterFlagEffect(rp,88513608,RESET_PHASE+PHASE_END,0,1) - end -end -function c88513608.check(tp) - local at1=0 - local ct=0 - for i=0,4 do - local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) - if tc and tc:IsPosition(POS_FACEUP_ATTACK) then - at1=at1+tc:GetAttack() - ct=ct+1 - end - end - if ct<2 then return false end - local at2=-1 - for i=0,4 do - local tc=Duel.GetFieldCard(1-tp,LOCATION_MZONE,i) - if tc and tc:IsFaceup() then - local atk=tc:GetAttack() - if at2<0 or atk=500 and c:GetDefense()>=500 - and Duel.IsExistingTarget(Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) -end -function c88643579.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and c:IsFaceup() and c:GetAttack()>=500 and c:GetDefense()>=500 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) - e1:SetReset(RESET_EVENT+0x1ff0000) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-500) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - if tc and tc:IsControler(1-tp) and tc:IsRelateToEffect(e) and not c:IsHasEffect(EFFECT_REVERSE_UPDATE) then - Duel.SendtoGrave(tc,REASON_EFFECT) - end - end -end +--ダークエンド・ドラゴン +function c88643579.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsAttribute,ATTRIBUTE_DARK),1) + c:EnableReviveLimit() + --send to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(88643579,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c88643579.target) + e1:SetOperation(c88643579.operation) + c:RegisterEffect(e1) +end +function c88643579.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToGrave() end + if chk==0 then return c:GetAttack()>=500 and c:GetDefense()>=500 + and Duel.IsExistingTarget(Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,Card.IsAbleToGrave,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,g:GetCount(),0,0) +end +function c88643579.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and c:IsFaceup() and c:GetAttack()>=500 and c:GetDefense()>=500 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT) + e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-500) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + if tc and tc:IsControler(1-tp) and tc:IsRelateToEffect(e) and not c:IsHasEffect(EFFECT_REVERSE_UPDATE) then + Duel.SendtoGrave(tc,REASON_EFFECT) + end + end +end diff --git a/script/c88722973.lua b/script/c88722973.lua index d3a253ab..1c2f6dfa 100644 --- a/script/c88722973.lua +++ b/script/c88722973.lua @@ -15,6 +15,7 @@ function c88722973.initial_effect(c) --spsummon local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) diff --git a/script/c88733579.lua b/script/c88733579.lua index 76ee73d4..3554b60f 100644 --- a/script/c88733579.lua +++ b/script/c88733579.lua @@ -1,25 +1,25 @@ ---穿孔虫 -function c88733579.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(88733579,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetCondition(c88733579.condition) - e1:SetOperation(c88733579.operation) - c:RegisterEffect(e1) -end -function c88733579.condition(e,tp,eg,ep,ev,re,r,rp) - return ep==1-tp -end -function c88733579.filter(c) - return c:IsCode(27911549) and c:GetPosition()~=POS_FACEUP_DEFENSE -end -function c88733579.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstMatchingCard(c88733579.filter,tp,LOCATION_DECK,0,nil) - if tc then - Duel.ShuffleDeck(tp) - Duel.MoveSequence(tc,0) - Duel.ConfirmDecktop(tp,1) - end -end +--穿孔虫 +function c88733579.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(88733579,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c88733579.condition) + e1:SetOperation(c88733579.operation) + c:RegisterEffect(e1) +end +function c88733579.condition(e,tp,eg,ep,ev,re,r,rp) + return ep==1-tp +end +function c88733579.filter(c) + return c:IsCode(27911549) and c:GetPosition()~=POS_FACEUP_DEFENSE +end +function c88733579.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstMatchingCard(c88733579.filter,tp,LOCATION_DECK,0,nil) + if tc then + Duel.ShuffleDeck(tp) + Duel.MoveSequence(tc,0) + Duel.ConfirmDecktop(tp,1) + end +end diff --git a/script/c88753985.lua b/script/c88753985.lua index 55857bed..0a449714 100644 --- a/script/c88753985.lua +++ b/script/c88753985.lua @@ -3,6 +3,7 @@ function c88753985.initial_effect(c) --register local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_BATTLE_DESTROYED) e1:SetOperation(c88753985.regop) c:RegisterEffect(e1) diff --git a/script/c88754763.lua b/script/c88754763.lua index 920deede..525c22ae 100644 --- a/script/c88754763.lua +++ b/script/c88754763.lua @@ -15,6 +15,7 @@ function c88754763.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetCategory(CATEGORY_DRAW+CATEGORY_DAMAGE) e2:SetDescription(aux.Stringid(88754763,0)) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) diff --git a/script/c88757791.lua b/script/c88757791.lua index ab17ec2c..e6cecd11 100644 --- a/script/c88757791.lua +++ b/script/c88757791.lua @@ -1,81 +1,81 @@ ---法眼の魔術師 -function c88757791.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --change scale - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(88757791,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCountLimit(1) - e2:SetTarget(c88757791.sctg) - e2:SetOperation(c88757791.scop) - c:RegisterEffect(e2) - --indes - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetOperation(c88757791.sumsuc) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(LOCATION_MZONE,0) - e4:SetCondition(c88757791.indcon) - e4:SetTarget(c88757791.indtg) - e4:SetValue(c88757791.indval) - c:RegisterEffect(e4) -end -function c88757791.cfilter(c,tp) - return c:IsType(TYPE_PENDULUM) and not c:IsPublic() - and Duel.IsExistingTarget(c88757791.scfilter,tp,LOCATION_SZONE,0,1,nil,c) -end -function c88757791.scfilter(c,pc) - return c:IsSetCard(0x98) - and ((c:GetSequence()==6 and c:GetLeftScale()~=pc:GetLeftScale()) - or (c:GetSequence()==7 and c:GetRightScale()~=pc:GetRightScale())) -end -function c88757791.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_SZONE) and c88757791.scfilter(chkc,e:GetLabelObject()) end - if chk==0 then return Duel.IsExistingMatchingCard(c88757791.cfilter,tp,LOCATION_HAND,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local cg=Duel.SelectMatchingCard(tp,c88757791.cfilter,tp,LOCATION_HAND,0,1,1,nil,tp) - Duel.ConfirmCards(1-tp,cg) - Duel.ShuffleHand(tp) - e:SetLabelObject(cg:GetFirst()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c88757791.scfilter,tp,LOCATION_SZONE,0,1,1,nil,cg:GetFirst()) -end -function c88757791.scop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - local pc=e:GetLabelObject() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LSCALE) - e1:SetValue(pc:GetLeftScale()) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_CHANGE_RSCALE) - e2:SetValue(pc:GetRightScale()) - tc:RegisterEffect(e2) - end -end -function c88757791.sumsuc(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(88757791,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) -end -function c88757791.indcon(e) - local c=e:GetHandler() - return c:GetFlagEffect(88757791)~=0 and c:GetSummonType()==SUMMON_TYPE_PENDULUM -end -function c88757791.indtg(e,c) - return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) -end -function c88757791.indval(e,re,rp) - return rp~=e:GetHandlerPlayer() -end +--法眼の魔術師 +function c88757791.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --change scale + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(88757791,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c88757791.sctg) + e2:SetOperation(c88757791.scop) + c:RegisterEffect(e2) + --indes + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetOperation(c88757791.sumsuc) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetCondition(c88757791.indcon) + e4:SetTarget(c88757791.indtg) + e4:SetValue(c88757791.indval) + c:RegisterEffect(e4) +end +function c88757791.cfilter(c,tp) + return c:IsType(TYPE_PENDULUM) and not c:IsPublic() + and Duel.IsExistingTarget(c88757791.scfilter,tp,LOCATION_SZONE,0,1,nil,c) +end +function c88757791.scfilter(c,pc) + return c:IsSetCard(0x98) + and ((c:GetSequence()==6 and c:GetLeftScale()~=pc:GetLeftScale()) + or (c:GetSequence()==7 and c:GetRightScale()~=pc:GetRightScale())) +end +function c88757791.sctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_SZONE) and c88757791.scfilter(chkc,e:GetLabelObject()) end + if chk==0 then return Duel.IsExistingMatchingCard(c88757791.cfilter,tp,LOCATION_HAND,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local cg=Duel.SelectMatchingCard(tp,c88757791.cfilter,tp,LOCATION_HAND,0,1,1,nil,tp) + Duel.ConfirmCards(1-tp,cg) + Duel.ShuffleHand(tp) + e:SetLabelObject(cg:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c88757791.scfilter,tp,LOCATION_SZONE,0,1,1,nil,cg:GetFirst()) +end +function c88757791.scop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + local pc=e:GetLabelObject() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LSCALE) + e1:SetValue(pc:GetLeftScale()) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RSCALE) + e2:SetValue(pc:GetRightScale()) + tc:RegisterEffect(e2) + end +end +function c88757791.sumsuc(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(88757791,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) +end +function c88757791.indcon(e) + local c=e:GetHandler() + return c:GetFlagEffect(88757791)~=0 and c:GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c88757791.indtg(e,c) + return c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM) +end +function c88757791.indval(e,re,rp) + return rp~=e:GetHandlerPlayer() +end diff --git a/script/c88820235.lua b/script/c88820235.lua index ee5c2092..1b99d4ec 100644 --- a/script/c88820235.lua +++ b/script/c88820235.lua @@ -1,30 +1,31 @@ ---E・HERO シャイニング・フェニックスガイ -function c88820235.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,41436536,20721928,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c88820235.atkup) - c:RegisterEffect(e3) -end -function c88820235.atkup(e,c) - return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0x3008)*300 -end +--E・HERO シャイニング・フェニックスガイ +function c88820235.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,41436536,20721928,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c88820235.atkup) + c:RegisterEffect(e3) +end +c88820235.material_setcode=0x8 +function c88820235.atkup(e,c) + return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0x3008)*300 +end diff --git a/script/c88851326.lua b/script/c88851326.lua new file mode 100644 index 00000000..6e34f9fa --- /dev/null +++ b/script/c88851326.lua @@ -0,0 +1,132 @@ +--熱き決闘者たち +function c88851326.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(88851326,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c88851326.atkcon) + e2:SetTarget(c88851326.atktg) + e2:SetOperation(c88851326.atkop) + c:RegisterEffect(e2) + --prevent set + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e3:SetCode(EFFECT_CANNOT_SSET) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c88851326.setcon1) + e3:SetTarget(c88851326.settg) + e3:SetTargetRange(1,0) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetTargetRange(0,1) + e4:SetCondition(c88851326.setcon2) + c:RegisterEffect(e4) + --prevent attack + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CANNOT_ATTACK) + e5:SetRange(LOCATION_SZONE) + e5:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e5:SetTarget(c88851326.attg) + c:RegisterEffect(e5) + --add tohand + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(88851326,1)) + e6:SetCategory(CATEGORY_TOHAND) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_PREDRAW) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c88851326.thcon) + e6:SetTarget(c88851326.thtg) + e6:SetOperation(c88851326.thop) + c:RegisterEffect(e6) + --Check for single Set + if not c88851326.global_check then + c88851326.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SSET) + ge1:SetOperation(c88851326.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c88851326.checkop(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(Card.IsPreviousLocation,1,nil,LOCATION_HAND) then + Duel.RegisterFlagEffect(rp,88851326,RESET_PHASE+PHASE_END,0,1) + end +end +function c88851326.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c88851326.atkfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c88851326.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(1-tp) and c88851326.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c88851326.atkfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c88851326.atkfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c88851326.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if Duel.NegateAttack() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c88851326.setcon1(e) + return Duel.GetFlagEffect(e:GetHandlerPlayer(),88851326)>0 +end +function c88851326.setcon2(e) + return Duel.GetFlagEffect(1-e:GetHandlerPlayer(),88851326)>0 +end +function c88851326.settg(e,c) + return c:IsLocation(LOCATION_HAND) +end +function c88851326.attg(e,c) + return c:IsStatus(STATUS_SPSUMMON_TURN) and c:GetSummonLocation()==LOCATION_EXTRA +end +function c88851326.thcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c88851326.thfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c88851326.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c88851326.thfilter,tp,LOCATION_GRAVE,0,1,nil) end + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE) +end +function c88851326.thop(e,tp,eg,ep,ev,re,r,rp) + _replace_count=_replace_count+1 + if _replace_count>_replace_max or not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c88851326.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end diff --git a/script/c88901771.lua b/script/c88901771.lua index 95a1f5f9..f706c30e 100644 --- a/script/c88901771.lua +++ b/script/c88901771.lua @@ -57,8 +57,8 @@ end function c88901771.spop(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,c88901771.filter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c88901771.filter),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c88928798.lua b/script/c88928798.lua index 19f5d440..b3c2d1a8 100644 --- a/script/c88928798.lua +++ b/script/c88928798.lua @@ -28,8 +28,7 @@ function c88928798.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c88928798.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end Duel.Damage(1-tp,500,REASON_EFFECT) diff --git a/script/c88935103.lua b/script/c88935103.lua index 1a2b14ab..de265c0e 100644 --- a/script/c88935103.lua +++ b/script/c88935103.lua @@ -1,95 +1,96 @@ ---貴竜の魔術師 -function c88935103.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --selfdes - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetCode(EFFECT_SELF_DESTROY) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c88935103.descon) - c:RegisterEffect(e2) - --synchro limit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetValue(c88935103.synlimit) - c:RegisterEffect(e3) - --todeck - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e4:SetValue(LOCATION_DECKBOT) - e4:SetCondition(c88935103.rdcon) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) - e5:SetRange(LOCATION_MZONE) - e5:SetCode(EFFECT_MATERIAL_CHECK) - e5:SetValue(c88935103.valcheck) - e5:SetLabelObject(e4) - c:RegisterEffect(e5) - --spsummon - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(88935103,1)) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetProperty(EFFECT_FLAG_CARD_TARGET) - e6:SetType(EFFECT_TYPE_IGNITION) - e6:SetRange(LOCATION_HAND+LOCATION_GRAVE) - e6:SetTarget(c88935103.sptg) - e6:SetOperation(c88935103.spop) - c:RegisterEffect(e6) -end -function c88935103.descon(e) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) - return not tc or not tc:IsSetCard(0x98) -end -function c88935103.synlimit(e,c) - if not c then return false end - return not c:IsRace(RACE_DRAGON) -end -function c88935103.rdcon(e) - return e:GetHandler():IsReason(REASON_MATERIAL) and e:GetHandler():IsReason(REASON_SYNCHRO) and e:GetLabel()==1 -end -function c88935103.sfilter(c) - return not c:IsSetCard(0x99) -end -function c88935103.valcheck(e,c) - if c:GetMaterial():IsExists(c88935103.sfilter,1,e:GetHandler()) then - e:GetLabelObject():SetLabel(1) - else - e:GetLabelObject():SetLabel(0) - end -end -function c88935103.cfilter(c) - return c:IsFaceup() and c:GetLevel()>=7 and c:IsSetCard(0x99) -end -function c88935103.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c88935103.cfilter(chkc) end - local c=e:GetHandler() - if chk==0 then return Duel.IsExistingTarget(c88935103.cfilter,tp,LOCATION_MZONE,0,1,nil) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c88935103.cfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c88935103.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) or tc:GetLevel()<4 then return end - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(-3) - tc:RegisterEffect(e1) - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--貴竜の魔術師 +function c88935103.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --selfdes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_SELF_DESTROY) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c88935103.descon) + c:RegisterEffect(e2) + --synchro limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetValue(c88935103.synlimit) + c:RegisterEffect(e3) + --todeck + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetValue(LOCATION_DECKBOT) + e4:SetCondition(c88935103.rdcon) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_MATERIAL_CHECK) + e5:SetValue(c88935103.valcheck) + e5:SetLabelObject(e4) + c:RegisterEffect(e5) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(88935103,1)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e6:SetTarget(c88935103.sptg) + e6:SetOperation(c88935103.spop) + c:RegisterEffect(e6) +end +function c88935103.descon(e) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) + return not tc or not tc:IsSetCard(0x98) +end +function c88935103.synlimit(e,c) + if not c then return false end + return not c:IsRace(RACE_DRAGON) +end +function c88935103.rdcon(e) + return e:GetHandler():IsReason(REASON_MATERIAL) and e:GetHandler():IsReason(REASON_SYNCHRO) and e:GetLabel()==1 +end +function c88935103.sfilter(c) + return not c:IsSetCard(0x99) +end +function c88935103.valcheck(e,c) + if c:GetMaterial():IsExists(c88935103.sfilter,1,e:GetHandler()) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end +function c88935103.cfilter(c) + return c:IsFaceup() and c:GetLevel()>=7 and c:IsSetCard(0x99) +end +function c88935103.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c88935103.cfilter(chkc) end + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingTarget(c88935103.cfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c88935103.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c88935103.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsImmuneToEffect(e) or tc:GetLevel()<4 then return end + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-3) + tc:RegisterEffect(e1) + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLocation(LOCATION_HAND) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c88942504.lua b/script/c88942504.lua index 481b4066..ff6bb9fc 100644 --- a/script/c88942504.lua +++ b/script/c88942504.lua @@ -6,7 +6,7 @@ function c88942504.initial_effect(c) --spsummon local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(88942504,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c88989706.lua b/script/c88989706.lua index 05541302..b06bdc8d 100644 --- a/script/c88989706.lua +++ b/script/c88989706.lua @@ -8,10 +8,13 @@ function c88989706.initial_effect(c) c:RegisterEffect(e1) --negate local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_NEGATE) + e2:SetType(EFFECT_TYPE_QUICK_F) + e2:SetCode(EVENT_CHAINING) e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_CHAIN_ACTIVATING) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e2:SetCondition(c88989706.discon) + e2:SetTarget(c88989706.distg) e2:SetOperation(c88989706.disop) c:RegisterEffect(e2) --special summon @@ -37,12 +40,19 @@ function c88989706.discon(e,tp,eg,ep,ev,re,r,rp) if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if not tg or not tg:IsContains(e:GetHandler()) then return false end - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c88989706.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end end function c88989706.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(re:GetHandler(),REASON_EFFECT) + if Duel.GetCurrentChain()~=ev+1 then return end + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) end end function c88989706.spcon(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c8903700.lua b/script/c8903700.lua index 92c1c7f5..f35751b7 100644 --- a/script/c8903700.lua +++ b/script/c8903700.lua @@ -1,39 +1,39 @@ ---儀式魔人リリーサー -function c8903700.initial_effect(c) - --ritual material - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) - e1:SetValue(1) - c:RegisterEffect(e1) - --become material - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EVENT_BE_MATERIAL) - e2:SetCondition(c8903700.condition) - e2:SetOperation(c8903700.operation) - c:RegisterEffect(e2) -end -function c8903700.condition(e,tp,eg,ep,ev,re,r,rp) - return r==REASON_RITUAL -end -function c8903700.operation(e,tp,eg,ep,ev,re,r,rp) - local rc=eg:GetFirst() - while rc do - if rc:GetFlagEffect(8903700)==0 then - --cannot special summon - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(8903700,0)) - e1:SetProperty(EFFECT_FLAG_CLIENT_HINT+EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetAbsoluteRange(ep,0,1) - rc:RegisterEffect(e1,true) - rc:RegisterFlagEffect(8903700,RESET_EVENT+0x1fe0000,0,1) - end - rc=eg:GetNext() - end -end +--儀式魔人リリーサー +function c8903700.initial_effect(c) + --ritual material + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_RITUAL_MATERIAL) + e1:SetValue(1) + c:RegisterEffect(e1) + --become material + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EVENT_BE_MATERIAL) + e2:SetCondition(c8903700.condition) + e2:SetOperation(c8903700.operation) + c:RegisterEffect(e2) +end +function c8903700.condition(e,tp,eg,ep,ev,re,r,rp) + return r==REASON_RITUAL +end +function c8903700.operation(e,tp,eg,ep,ev,re,r,rp) + local rc=eg:GetFirst() + while rc do + if rc:GetFlagEffect(8903700)==0 then + --cannot special summon + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetDescription(aux.Stringid(8903700,0)) + e1:SetProperty(EFFECT_FLAG_CLIENT_HINT+EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetAbsoluteRange(ep,0,1) + rc:RegisterEffect(e1,true) + rc:RegisterFlagEffect(8903700,RESET_EVENT+0x1fe0000,0,1) + end + rc=eg:GetNext() + end +end diff --git a/script/c89091772.lua b/script/c89091772.lua index be2897d6..dede74ba 100644 --- a/script/c89091772.lua +++ b/script/c89091772.lua @@ -1,43 +1,43 @@ ---超重武者ジシャ-Q -function c89091772.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(89091772,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c89091772.sumtg) - e1:SetOperation(c89091772.sumop) - c:RegisterEffect(e1) - --atk limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetValue(c89091772.atlimit) - c:RegisterEffect(e2) -end -function c89091772.filter(c,e,tp) - return c:IsSetCard(0x9a) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c89091772.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c89091772.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c89091772.sumop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c89091772.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()==0 then return end - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - if c:IsRelateToEffect(e) and c:IsPosition(POS_FACEUP_ATTACK) then - Duel.BreakEffect() - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end -end -function c89091772.atlimit(e,c) - return c~=e:GetHandler() -end +--超重武者ジシャ-Q +function c89091772.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89091772,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c89091772.sumtg) + e1:SetOperation(c89091772.sumop) + c:RegisterEffect(e1) + --atk limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(c89091772.atlimit) + c:RegisterEffect(e2) +end +function c89091772.filter(c,e,tp) + return c:IsSetCard(0x9a) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c89091772.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c89091772.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c89091772.sumop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c89091772.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + if c:IsRelateToEffect(e) and c:IsPosition(POS_FACEUP_ATTACK) then + Duel.BreakEffect() + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c89091772.atlimit(e,c) + return c~=e:GetHandler() +end diff --git a/script/c89113320.lua b/script/c89113320.lua index 93726f38..1b9be248 100644 --- a/script/c89113320.lua +++ b/script/c89113320.lua @@ -1,59 +1,59 @@ ---EMビッグバイトタートル -function c89113320.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --lv - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(89113320,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetTarget(c89113320.lvtg) - e2:SetOperation(c89113320.lvop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(89113320,1)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_BATTLE_DESTROYED) - e3:SetTarget(c89113320.target) - e3:SetOperation(c89113320.operation) - c:RegisterEffect(e3) -end -function c89113320.filter(c) - return (c:IsSetCard(0x9f) or c:IsSetCard(0x99)) and c:IsType(TYPE_MONSTER) -end -function c89113320.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c89113320.filter,tp,LOCATION_HAND,0,1,e:GetHandler()) end -end -function c89113320.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local g=Duel.SelectMatchingCard(tp,c89113320.filter,tp,LOCATION_HAND,0,1,1,nil) - Duel.ConfirmCards(1-tp,g) - Duel.ShuffleHand(tp) - local hg=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_HAND,0,nil,g:GetFirst():GetCode()) - local tc=hg:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(-1) - e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - tc=hg:GetNext() - end -end -function c89113320.target(e,tp,eg,ep,ev,re,r,rp,chk) - local bc=e:GetHandler():GetBattleTarget() - if chk==0 then return bc:IsRelateToBattle() end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) -end -function c89113320.operation(e,tp,eg,ep,ev,re,r,rp) - local bc=e:GetHandler():GetBattleTarget() - if bc:IsRelateToBattle() then - Duel.Destroy(bc,REASON_EFFECT) - end -end +--EMビッグバイトタートル +function c89113320.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --lv + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(89113320,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c89113320.lvtg) + e2:SetOperation(c89113320.lvop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(89113320,1)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYED) + e3:SetTarget(c89113320.target) + e3:SetOperation(c89113320.operation) + c:RegisterEffect(e3) +end +function c89113320.filter(c) + return (c:IsSetCard(0x9f) or c:IsSetCard(0x99)) and c:IsType(TYPE_MONSTER) +end +function c89113320.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c89113320.filter,tp,LOCATION_HAND,0,1,e:GetHandler()) end +end +function c89113320.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c89113320.filter,tp,LOCATION_HAND,0,1,1,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) + local hg=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_HAND,0,nil,g:GetFirst():GetCode()) + local tc=hg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(-1) + e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=hg:GetNext() + end +end +function c89113320.target(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return bc:IsRelateToBattle() end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) +end +function c89113320.operation(e,tp,eg,ep,ev,re,r,rp) + local bc=e:GetHandler():GetBattleTarget() + if bc:IsRelateToBattle() then + Duel.Destroy(bc,REASON_EFFECT) + end +end diff --git a/script/c89127526.lua b/script/c89127526.lua index 8d70b0a8..52dbc446 100644 --- a/script/c89127526.lua +++ b/script/c89127526.lua @@ -1,45 +1,45 @@ ---バリア・リゾネーター -function c89127526.initial_effect(c) - -- - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(89127526,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c89127526.cost) - e1:SetTarget(c89127526.target) - e1:SetOperation(c89127526.operation) - c:RegisterEffect(e1) -end -function c89127526.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c89127526.filter(c) - return c:IsFaceup() and c:IsType(TYPE_TUNER) -end -function c89127526.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c89127526.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c89127526.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c89127526.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c89127526.operation(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(1) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--バリア・リゾネーター +function c89127526.initial_effect(c) + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89127526,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c89127526.cost) + e1:SetTarget(c89127526.target) + e1:SetOperation(c89127526.operation) + c:RegisterEffect(e1) +end +function c89127526.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c89127526.filter(c) + return c:IsFaceup() and c:IsType(TYPE_TUNER) +end +function c89127526.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c89127526.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c89127526.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c89127526.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c89127526.operation(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c89181134.lua b/script/c89181134.lua new file mode 100644 index 00000000..beff291c --- /dev/null +++ b/script/c89181134.lua @@ -0,0 +1,99 @@ +function c89181134.initial_effect(c) + --fusattribute + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_FUSION_ATTRIBUTE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(c89181134.attrtg) + e1:SetValue(c89181134.attrval) + c:RegisterEffect(e1) + --fusion summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(89181134,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,89181134) + e2:SetTarget(c89181134.target) + e2:SetOperation(c89181134.operation) + c:RegisterEffect(e2) +end +function c89181134.attrtg(e,c) + return c:GetCounter(0x1041)>0 +end +function c89181134.attrval(e,c,rp) + if rp==e:GetHandlerPlayer() then + return ATTRIBUTE_DARK + else return c:GetAttribute() end +end +function c89181134.filter0(c) + return c:IsCanBeFusionMaterial() and c:IsFaceup() and c:GetCounter(0x1041)>0 +end +function c89181134.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c89181134.filter2(c,e,tp,m,f,gc) + return c:IsType(TYPE_FUSION) and c:IsAttribute(ATTRIBUTE_DARK) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,gc) +end +function c89181134.filter3(c,e) + return c89181134.filter0(c) and not c:IsImmuneToEffect(e) +end +function c89181134.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then + local mg1=Duel.GetFusionMaterial(tp) + mg1:RemoveCard(c) + local mg2=Duel.GetMatchingGroup(c89181134.filter0,tp,0,LOCATION_MZONE,c) + mg1:Merge(mg2) + local res=Duel.IsExistingMatchingCard(c89181134.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c89181134.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,c) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c89181134.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) or (c:IsControler(1-tp) and c:GetCounter(0x1041)<=0) then return end + local mg1=Duel.GetFusionMaterial(tp):Filter(c89181134.filter1,c,e) + local mg2=Duel.GetMatchingGroup(c89181134.filter3,tp,0,LOCATION_MZONE,c,e) + mg1:Merge(mg2) + local sg1=Duel.GetMatchingGroup(c89181134.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c) + local mg3=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg3=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c89181134.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,c) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,c) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,c) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end diff --git a/script/c89181369.lua b/script/c89181369.lua index ed47e49a..452045e2 100644 --- a/script/c89181369.lua +++ b/script/c89181369.lua @@ -1,51 +1,51 @@ ---星屑のきらめき -function c89181369.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c89181369.target) - e1:SetOperation(c89181369.activate) - c:RegisterEffect(e1) -end -function c89181369.spfilter(c,e,tp,rg) - if not c:IsType(TYPE_SYNCHRO) or not c:IsRace(RACE_DRAGON) or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) then return false end - if rg:IsContains(c) then - rg:RemoveCard(c) - result=rg:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),1,99) - rg:AddCard(c) - else - result=rg:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),1,99) - end - return result -end -function c89181369.rmfilter(c) - return c:GetLevel()>0 and c:IsAbleToRemove() -end -function c89181369.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end - local rg=Duel.GetMatchingGroup(c89181369.rmfilter,tp,LOCATION_GRAVE,0,nil) - return Duel.IsExistingTarget(c89181369.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,rg) - end - local rg=Duel.GetMatchingGroup(c89181369.rmfilter,tp,LOCATION_GRAVE,0,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c89181369.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,rg) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c89181369.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then return end - local rg=Duel.GetMatchingGroup(c89181369.rmfilter,tp,LOCATION_GRAVE,0,nil) - rg:RemoveCard(tc) - if rg:CheckWithSumEqual(Card.GetLevel,tc:GetLevel(),1,99) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local rm=rg:SelectWithSumEqual(tp,Card.GetLevel,tc:GetLevel(),1,99) - Duel.Remove(rm,POS_FACEUP,REASON_EFFECT) - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--星屑のきらめき +function c89181369.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c89181369.target) + e1:SetOperation(c89181369.activate) + c:RegisterEffect(e1) +end +function c89181369.spfilter(c,e,tp,rg) + if not c:IsType(TYPE_SYNCHRO) or not c:IsRace(RACE_DRAGON) or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) then return false end + if rg:IsContains(c) then + rg:RemoveCard(c) + result=rg:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),1,99) + rg:AddCard(c) + else + result=rg:CheckWithSumEqual(Card.GetLevel,c:GetLevel(),1,99) + end + return result +end +function c89181369.rmfilter(c) + return c:GetLevel()>0 and c:IsAbleToRemove() +end +function c89181369.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return false end + local rg=Duel.GetMatchingGroup(c89181369.rmfilter,tp,LOCATION_GRAVE,0,nil) + return Duel.IsExistingTarget(c89181369.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,rg) + end + local rg=Duel.GetMatchingGroup(c89181369.rmfilter,tp,LOCATION_GRAVE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c89181369.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,rg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c89181369.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then return end + local rg=Duel.GetMatchingGroup(c89181369.rmfilter,tp,LOCATION_GRAVE,0,nil) + rg:RemoveCard(tc) + if rg:CheckWithSumEqual(Card.GetLevel,tc:GetLevel(),1,99) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rm=rg:SelectWithSumEqual(tp,Card.GetLevel,tc:GetLevel(),1,99) + Duel.Remove(rm,POS_FACEUP,REASON_EFFECT) + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c89252157.lua b/script/c89252157.lua index 49b3df68..05b93e82 100644 --- a/script/c89252157.lua +++ b/script/c89252157.lua @@ -1,46 +1,46 @@ ---薔薇恋人 -function c89252157.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1,89252157) - e1:SetCost(c89252157.spcost) - e1:SetTarget(c89252157.sptg) - e1:SetOperation(c89252157.spop) - c:RegisterEffect(e1) -end -function c89252157.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c89252157.spfilter(c,e,tp) - return c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c89252157.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c89252157.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c89252157.spop(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,c89252157.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetValue(c89252157.efilter) - e1:SetOwnerPlayer(tp) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1,true) - Duel.SpecialSummonComplete() - end -end -function c89252157.efilter(e,re) - return e:GetOwnerPlayer()~=re:GetOwnerPlayer() and re:IsActiveType(TYPE_TRAP) -end +--薔薇恋人 +function c89252157.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1,89252157) + e1:SetCost(c89252157.spcost) + e1:SetTarget(c89252157.sptg) + e1:SetOperation(c89252157.spop) + c:RegisterEffect(e1) +end +function c89252157.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c89252157.spfilter(c,e,tp) + return c:IsRace(RACE_PLANT) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c89252157.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c89252157.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c89252157.spop(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,c89252157.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c89252157.efilter) + e1:SetOwnerPlayer(tp) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end +end +function c89252157.efilter(e,re) + return e:GetOwnerPlayer()~=re:GetOwnerPlayer() and re:IsActiveType(TYPE_TRAP) +end diff --git a/script/c89258906.lua b/script/c89258906.lua index 618d4ecb..842ce902 100644 --- a/script/c89258906.lua +++ b/script/c89258906.lua @@ -1,41 +1,41 @@ ---BF-そよ風のブリーズ -function c89258906.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(89258906,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_HAND) - e1:SetCondition(c89258906.condition) - e1:SetTarget(c89258906.target) - e1:SetOperation(c89258906.operation) - c:RegisterEffect(e1) - --synchro limit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetValue(c89258906.synlimit) - c:RegisterEffect(e2) -end -function c89258906.synlimit(e,c) - if not c then return false end - return not c:IsSetCard(0x33) -end -function c89258906.condition(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_DECK) and e:GetHandler():GetPreviousControler()==tp -end -function c89258906.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c89258906.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--BF-そよ風のブリーズ +function c89258906.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89258906,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_HAND) + e1:SetCondition(c89258906.condition) + e1:SetTarget(c89258906.target) + e1:SetOperation(c89258906.operation) + c:RegisterEffect(e1) + --synchro limit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetValue(c89258906.synlimit) + c:RegisterEffect(e2) +end +function c89258906.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x33) +end +function c89258906.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_DECK) and e:GetHandler():GetPreviousControler()==tp +end +function c89258906.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c89258906.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c89312388.lua b/script/c89312388.lua index 61cadf11..00c743c4 100644 --- a/script/c89312388.lua +++ b/script/c89312388.lua @@ -1,58 +1,58 @@ ---E・HERO プリズマー -function c89312388.initial_effect(c) - --cos - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(89312388,0)) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c89312388.coscost) - e1:SetOperation(c89312388.cosoperation) - c:RegisterEffect(e1) -end -function c89312388.filter2(c,fc) - if not c:IsAbleToGraveAsCost() then return false end - return c:IsCode(table.unpack(fc.material)) -end -function c89312388.filter1(c,tp) - return c.material and Duel.IsExistingMatchingCard(c89312388.filter2,tp,LOCATION_DECK,0,1,nil,c) -end -function c89312388.coscost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c89312388.filter1,tp,LOCATION_EXTRA,0,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) - local g=Duel.SelectMatchingCard(tp,c89312388.filter1,tp,LOCATION_EXTRA,0,1,1,nil,tp) - Duel.ConfirmCards(1-tp,g) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local cg=Duel.SelectMatchingCard(tp,c89312388.filter2,tp,LOCATION_DECK,0,1,1,nil,g:GetFirst()) - Duel.SendtoGrave(cg,REASON_COST) - e:SetLabel(cg:GetFirst():GetCode()) -end -function c89312388.cosoperation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) or c:IsFacedown() then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_CODE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(e:GetLabel()) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(89312388,1)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetLabelObject(e1) - e2:SetOperation(c89312388.rstop) - c:RegisterEffect(e2) -end -function c89312388.rstop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=e:GetLabelObject() - e1:Reset() - Duel.HintSelection(Group.FromCards(c)) - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end +--E・HERO プリズマー +function c89312388.initial_effect(c) + --cos + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89312388,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c89312388.coscost) + e1:SetOperation(c89312388.cosoperation) + c:RegisterEffect(e1) +end +function c89312388.filter2(c,fc) + if not c:IsAbleToGraveAsCost() then return false end + return c:IsCode(table.unpack(fc.material)) +end +function c89312388.filter1(c,tp) + return c.material and Duel.IsExistingMatchingCard(c89312388.filter2,tp,LOCATION_DECK,0,1,nil,c) +end +function c89312388.coscost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c89312388.filter1,tp,LOCATION_EXTRA,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) + local g=Duel.SelectMatchingCard(tp,c89312388.filter1,tp,LOCATION_EXTRA,0,1,1,nil,tp) + Duel.ConfirmCards(1-tp,g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local cg=Duel.SelectMatchingCard(tp,c89312388.filter2,tp,LOCATION_DECK,0,1,1,nil,g:GetFirst()) + Duel.SendtoGrave(cg,REASON_COST) + e:SetLabel(cg:GetFirst():GetCode()) +end +function c89312388.cosoperation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(e:GetLabel()) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(89312388,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + e2:SetOperation(c89312388.rstop) + c:RegisterEffect(e2) +end +function c89312388.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=e:GetLabelObject() + e1:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end diff --git a/script/c89326990.lua b/script/c89326990.lua index 4f7b4334..8b395627 100644 --- a/script/c89326990.lua +++ b/script/c89326990.lua @@ -1,44 +1,44 @@ ---SRオハジキッド -function c89326990.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(89326990,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c89326990.target) - e1:SetOperation(c89326990.operation) - c:RegisterEffect(e1) -end -function c89326990.filter(c,e,tp,mc) - local mg=Group.FromCards(c,mc) - return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c89326990.scfilter,tp,LOCATION_EXTRA,0,1,nil,mg) -end -function c89326990.scfilter(c,mg) - return c:IsAttribute(ATTRIBUTE_WIND) and c:IsSynchroSummonable(nil,mg) -end -function c89326990.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c89326990.filter(chkc,e,tp,e:GetHandler()) end - if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c89326990.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c89326990.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c89326990.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) or Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end - if not c:IsRelateToEffect(e) then return end - local mg=Group.FromCards(c,tc) - local g=Duel.GetMatchingGroup(c89326990.scfilter,tp,LOCATION_EXTRA,0,nil,mg) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,1,1,nil) - Duel.SynchroSummon(tp,sg:GetFirst(),nil,mg) - end -end +--SRオハジキッド +function c89326990.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89326990,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c89326990.target) + e1:SetOperation(c89326990.operation) + c:RegisterEffect(e1) +end +function c89326990.filter(c,e,tp,mc) + local mg=Group.FromCards(c,mc) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c89326990.scfilter,tp,LOCATION_EXTRA,0,1,nil,mg) +end +function c89326990.scfilter(c,mg) + return c:IsAttribute(ATTRIBUTE_WIND) and c:IsSynchroSummonable(nil,mg) +end +function c89326990.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and c89326990.filter(chkc,e,tp,e:GetHandler()) end + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c89326990.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c89326990.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c89326990.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end + if not c:IsRelateToEffect(e) then return end + local mg=Group.FromCards(c,tc) + local g=Duel.GetMatchingGroup(c89326990.scfilter,tp,LOCATION_EXTRA,0,nil,mg) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SynchroSummon(tp,sg:GetFirst(),nil,mg) + end +end diff --git a/script/c89397517.lua b/script/c89397517.lua index 2e09f1cd..db83b607 100644 --- a/script/c89397517.lua +++ b/script/c89397517.lua @@ -1,64 +1,62 @@ ---レジェンド・オブ・ハート -function c89397517.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,89397517+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c89397517.cost) - e1:SetTarget(c89397517.target) - e1:SetOperation(c89397517.activate) - c:RegisterEffect(e1) -end -function c89397517.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,2000) and Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_WARRIOR) end - Duel.PayLPCost(tp,2000) - local sg=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,RACE_WARRIOR) - Duel.Release(sg,REASON_COST) -end -function c89397517.rmfilter(c) - return c:IsSetCard(0xa1) and c:IsType(TYPE_SPELL) and c:IsAbleToRemove() -end -function c89397517.spfilter(c,e,tp) - return c:IsSetCard(0xa0) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) -end -function c89397517.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c89397517.rmfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil) - and Duel.IsExistingMatchingCard(c89397517.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,1,nil,e,tp) end - local g=Duel.GetMatchingGroup(c89397517.rmfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK) -end -function c89397517.activate(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - local rmg=Duel.GetMatchingGroup(c89397517.rmfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil) - local rmct=rmg:GetClassCount(Card.GetCode) - local spg=Duel.GetMatchingGroup(c89397517.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,nil,e,tp) - local spct=spg:GetClassCount(Card.GetCode) - local ct=math.min(3,ft,spct,rmct) - if ct==0 then return end - local g=Group.CreateGroup() - repeat - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local tc=rmg:Select(tp,1,1,nil):GetFirst() - rmg:Remove(Card.IsCode,nil,tc:GetCode()) - g:AddCard(tc) - ct=ct-1 - until ct<1 or not Duel.SelectYesNo(tp,aux.Stringid(89397517,0)) - if g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - Duel.Remove(g,POS_FACEUP,REASON_EFFECT) - ct=g:FilterCount(Card.IsLocation,nil,LOCATION_REMOVED) - while ct>0 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tc=spg:Select(tp,1,1,nil):GetFirst() - spg:Remove(Card.IsCode,nil,tc:GetCode()) - if tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end - Duel.SpecialSummonStep(tc,0,tp,tp,true,true,POS_FACEUP) - tc:CompleteProcedure() - ct=ct-1 - end - Duel.SpecialSummonComplete() -end +--レジェンド・オブ・ハート +function c89397517.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,89397517+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c89397517.cost) + e1:SetTarget(c89397517.target) + e1:SetOperation(c89397517.activate) + c:RegisterEffect(e1) +end +function c89397517.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) and Duel.CheckReleaseGroup(tp,Card.IsRace,1,nil,RACE_WARRIOR) end + Duel.PayLPCost(tp,2000) + local sg=Duel.SelectReleaseGroup(tp,Card.IsRace,1,1,nil,RACE_WARRIOR) + Duel.Release(sg,REASON_COST) +end +function c89397517.rmfilter(c) + return c:IsSetCard(0xa1) and c:IsType(TYPE_SPELL) and c:IsAbleToRemove() +end +function c89397517.spfilter(c,e,tp) + return c:IsSetCard(0xa0) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,true) +end +function c89397517.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c89397517.rmfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingMatchingCard(c89397517.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,1,nil,e,tp) end + local g=Duel.GetMatchingGroup(c89397517.rmfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK) +end +function c89397517.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + local rmg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c89397517.rmfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,nil) + local rmct=rmg:GetClassCount(Card.GetCode) + local spg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c89397517.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,nil,e,tp) + local spct=spg:GetClassCount(Card.GetCode) + local ct=math.min(3,ft,spct,rmct) + if ct==0 then return end + local g=Group.CreateGroup() + repeat + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local tc=rmg:Select(tp,1,1,nil):GetFirst() + rmg:Remove(Card.IsCode,nil,tc:GetCode()) + g:AddCard(tc) + ct=ct-1 + until ct<1 or not Duel.SelectYesNo(tp,aux.Stringid(89397517,0)) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + ct=g:FilterCount(Card.IsLocation,nil,LOCATION_REMOVED) + while ct>0 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=spg:Select(tp,1,1,nil):GetFirst() + spg:Remove(Card.IsCode,nil,tc:GetCode()) + Duel.SpecialSummonStep(tc,0,tp,tp,true,true,POS_FACEUP) + tc:CompleteProcedure() + ct=ct-1 + end + Duel.SpecialSummonComplete() +end diff --git a/script/c89474727.lua b/script/c89474727.lua index 673a410c..042a650e 100644 --- a/script/c89474727.lua +++ b/script/c89474727.lua @@ -1,77 +1,77 @@ ---真閃珖竜 スターダスト・クロニクル -function c89474727.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),1) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetValue(aux.synlimit) - c:RegisterEffect(e1) - --immune - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(89474727,0)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCost(c89474727.immcost) - e2:SetOperation(c89474727.immop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(89474727,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_DESTROYED) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCondition(c89474727.spcon) - e3:SetTarget(c89474727.sptg) - e3:SetOperation(c89474727.spop) - c:RegisterEffect(e3) -end -function c89474727.cfilter(c) - return c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemoveAsCost() -end -function c89474727.immcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c89474727.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c89474727.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c89474727.immop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsFaceup() then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_IMMUNE_EFFECT) - e1:SetValue(c89474727.efilter) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end -function c89474727.efilter(e,re) - return re:GetOwner()~=e:GetOwner() -end -function c89474727.spcon(e,tp,eg,ep,ev,re,r,rp) - return rp~=tp and e:GetHandler():GetPreviousControler()==tp -end -function c89474727.spfilter(c,e,tp) - return c:IsType(TYPE_SYNCHRO) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c89474727.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c89474727.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c89474727.spfilter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c89474727.spfilter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c89474727.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--真閃珖竜 スターダスト・クロニクル +function c89474727.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),1) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetValue(aux.synlimit) + c:RegisterEffect(e1) + --immune + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(89474727,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c89474727.immcost) + e2:SetOperation(c89474727.immop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(89474727,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_DESTROYED) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c89474727.spcon) + e3:SetTarget(c89474727.sptg) + e3:SetOperation(c89474727.spop) + c:RegisterEffect(e3) +end +function c89474727.cfilter(c) + return c:IsType(TYPE_SYNCHRO) and c:IsAbleToRemoveAsCost() +end +function c89474727.immcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c89474727.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c89474727.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c89474727.immop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_IMMUNE_EFFECT) + e1:SetValue(c89474727.efilter) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c89474727.efilter(e,re) + return re:GetOwner()~=e:GetOwner() +end +function c89474727.spcon(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and e:GetHandler():GetPreviousControler()==tp +end +function c89474727.spfilter(c,e,tp) + return c:IsType(TYPE_SYNCHRO) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c89474727.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c89474727.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c89474727.spfilter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c89474727.spfilter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c89474727.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c89493368.lua b/script/c89493368.lua index 8696cda8..ee894309 100644 --- a/script/c89493368.lua +++ b/script/c89493368.lua @@ -94,8 +94,8 @@ end function c89493368.spop(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,c89493368.spfilter,tp,0x13,0,1,1,nil,e,tp) - if g:GetCount()~=0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c89493368.spfilter),tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,true,true,POS_FACEUP) g:GetFirst():CompleteProcedure() end diff --git a/script/c89516305.lua b/script/c89516305.lua index 01ad7dcb..d9ed9490 100644 --- a/script/c89516305.lua +++ b/script/c89516305.lua @@ -7,7 +7,7 @@ function c89516305.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(89516305,0)) e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) @@ -18,7 +18,7 @@ function c89516305.initial_effect(c) --turn set local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(89516305,1)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetRange(LOCATION_MZONE) @@ -30,7 +30,7 @@ function c89516305.initial_effect(c) --atkup local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(89516305,2)) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e3:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetCode(EVENT_FREE_CHAIN) e3:SetRange(LOCATION_MZONE) diff --git a/script/c89544521.lua b/script/c89544521.lua index eeb95bad..0d2b0c04 100644 --- a/script/c89544521.lua +++ b/script/c89544521.lua @@ -1,101 +1,101 @@ ---ブンボーグ・ジェット -function c89544521.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --atk/def - 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:SetValue(c89544521.val) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(89544521,0)) - e3:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1,89544521) - e3:SetTarget(c89544521.sptg) - e3:SetOperation(c89544521.spop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(89544521,1)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCountLimit(1,89544521) - e4:SetTarget(c89544521.destg) - e4:SetOperation(c89544521.desop) - c:RegisterEffect(e4) -end -function c89544521.filter(c) - return c:IsFaceup() and c:IsSetCard(0xab) -end -function c89544521.val(e,c) - return Duel.GetMatchingGroupCount(c89544521.filter,c:GetControler(),LOCATION_ONFIELD,LOCATION_ONFIELD,nil)*500 -end -function c89544521.desfilter1(c) - return c:IsFaceup() and c:IsSetCard(0xab) -end -function c89544521.spfilter(c,e,tp) - return c:IsSetCard(0xab) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c89544521.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(e:GetLabel()) and chkc:IsControler(tp) and c89544521.desfilter1(chkc) end - if chk==0 then - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<-1 then return false end - local loc=LOCATION_ONFIELD - if ft==0 then loc=LOCATION_MZONE end - e:SetLabel(loc) - return Duel.IsExistingTarget(c89544521.desfilter1,tp,loc,0,1,nil) - and Duel.IsExistingMatchingCard(c89544521.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c89544521.desfilter1,tp,e:GetLabel(),0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c89544521.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c89544521.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end - end -end -function c89544521.desfilter2(c) - return c:IsFaceup() and c:IsSetCard(0xab) - and Duel.IsExistingTarget(c89544521.desfilter3,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) -end -function c89544521.desfilter3(c) - return c:IsFaceup() -end -function c89544521.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c89544521.desfilter2,tp,LOCATION_ONFIELD,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g1=Duel.SelectTarget(tp,c89544521.desfilter2,tp,LOCATION_ONFIELD,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g2=Duel.SelectTarget(tp,c89544521.desfilter3,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst()) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) -end -function c89544521.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - end -end +--ブンボーグ・ジェット +function c89544521.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --atk/def + 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:SetValue(c89544521.val) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(89544521,0)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1,89544521) + e3:SetTarget(c89544521.sptg) + e3:SetOperation(c89544521.spop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(89544521,1)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCountLimit(1,89544521) + e4:SetTarget(c89544521.destg) + e4:SetOperation(c89544521.desop) + c:RegisterEffect(e4) +end +function c89544521.filter(c) + return c:IsFaceup() and c:IsSetCard(0xab) +end +function c89544521.val(e,c) + return Duel.GetMatchingGroupCount(c89544521.filter,c:GetControler(),LOCATION_ONFIELD,LOCATION_ONFIELD,nil)*500 +end +function c89544521.desfilter1(c) + return c:IsFaceup() and c:IsSetCard(0xab) +end +function c89544521.spfilter(c,e,tp) + return c:IsSetCard(0xab) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c89544521.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(e:GetLabel()) and chkc:IsControler(tp) and c89544521.desfilter1(chkc) end + if chk==0 then + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<-1 then return false end + local loc=LOCATION_ONFIELD + if ft==0 then loc=LOCATION_MZONE end + e:SetLabel(loc) + return Duel.IsExistingTarget(c89544521.desfilter1,tp,loc,0,1,nil) + and Duel.IsExistingMatchingCard(c89544521.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c89544521.desfilter1,tp,e:GetLabel(),0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c89544521.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c89544521.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end +function c89544521.desfilter2(c) + return c:IsFaceup() and c:IsSetCard(0xab) + and Duel.IsExistingTarget(c89544521.desfilter3,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c) +end +function c89544521.desfilter3(c) + return c:IsFaceup() +end +function c89544521.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c89544521.desfilter2,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c89544521.desfilter2,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,c89544521.desfilter3,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst()) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) +end +function c89544521.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c89563150.lua b/script/c89563150.lua index 1df1799a..83e877f2 100644 --- a/script/c89563150.lua +++ b/script/c89563150.lua @@ -25,10 +25,13 @@ function c89563150.distg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) local g=Duel.GetMatchingGroup(c89563150.dfilter,tp,0,LOCATION_ONFIELD,nil) + g:Merge(eg) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) end function c89563150.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - local g=Duel.GetMatchingGroup(c89563150.dfilter,tp,0,LOCATION_ONFIELD,nil) - Duel.Destroy(g,REASON_EFFECT) + if Duel.NegateActivation(ev) then + local g=Duel.GetMatchingGroup(c89563150.dfilter,tp,0,LOCATION_ONFIELD,nil) + g:Merge(eg) + Duel.Destroy(g,REASON_EFFECT) + end end diff --git a/script/c89609515.lua b/script/c89609515.lua index d919c8a1..b40bdc17 100644 --- a/script/c89609515.lua +++ b/script/c89609515.lua @@ -1,27 +1,27 @@ ---ラヴァル・フロギス -function c89609515.initial_effect(c) - --to grave - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(89609515,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetOperation(c89609515.operation) - c:RegisterEffect(e1) -end -function c89609515.filter(c) - return c:IsFaceup() and c:IsSetCard(0x39) -end -function c89609515.operation(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c89609515.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(300) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end +--ラヴァル・フロギス +function c89609515.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(89609515,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetOperation(c89609515.operation) + c:RegisterEffect(e1) +end +function c89609515.filter(c) + return c:IsFaceup() and c:IsSetCard(0x39) +end +function c89609515.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c89609515.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c89642993.lua b/script/c89642993.lua index 12c634a4..a8f9a0d7 100644 --- a/script/c89642993.lua +++ b/script/c89642993.lua @@ -6,6 +6,7 @@ function c89642993.initial_effect(c) -- local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(89642993,0)) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1,89642993) diff --git a/script/c8964854.lua b/script/c8964854.lua index 0b1d6d45..e155a071 100644 --- a/script/c8964854.lua +++ b/script/c8964854.lua @@ -19,7 +19,7 @@ function c8964854.filter(c,e,tp) end function c8964854.eqfilter(c,e,tp,ec) local op=c:GetOwner() - return c:IsStatus(STATUS_UNION) and c:GetEquipTarget()==ec + return c:IsHasEffect(EFFECT_UNION_STATUS) and c:GetEquipTarget()==ec and Duel.GetLocationCount(op,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,op) end function c8964854.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) diff --git a/script/c8967776.lua b/script/c8967776.lua index 25f99c2f..49783a35 100644 --- a/script/c8967776.lua +++ b/script/c8967776.lua @@ -44,10 +44,9 @@ end function c8967776.spop(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,c8967776.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c8967776.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) local c=e:GetHandler() local tc=g:GetFirst() - if not tc or tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_DISABLE) diff --git a/script/c89774530.lua b/script/c89774530.lua index 5495aa95..b2dbd628 100644 --- a/script/c89774530.lua +++ b/script/c89774530.lua @@ -35,8 +35,8 @@ end function c89774530.spop(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,c89774530.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c89774530.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) end end diff --git a/script/c89801755.lua b/script/c89801755.lua index 5041e434..d625f015 100644 --- a/script/c89801755.lua +++ b/script/c89801755.lua @@ -23,7 +23,7 @@ function c89801755.target(e,tp,eg,ep,ev,re,r,rp,chk) e:SetLabel(att) Duel.SetTargetPlayer(1-tp) Duel.SetTargetParam(rc) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,1-tp,LOCATION_HAND+LOCATION_GRAVE) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,1-tp,LOCATION_HAND+LOCATION_DECK) end function c89801755.filter(c,rc,att) return c:IsRace(rc) and c:IsAttribute(att) and c:IsAbleToGrave() diff --git a/script/c89870349.lua b/script/c89870349.lua index a6c2a4c3..3caf1fe3 100644 --- a/script/c89870349.lua +++ b/script/c89870349.lua @@ -1,70 +1,70 @@ ---M・HERO ブラスト -function c89870349.initial_effect(c) - c:EnableReviveLimit() - --special summon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(89870349,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetTarget(c89870349.atktg) - e2:SetOperation(c89870349.atkop) - c:RegisterEffect(e2) - --to hand - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(89870349,1)) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetCost(c89870349.thcost) - e3:SetTarget(c89870349.thtg) - e3:SetOperation(c89870349.thop) - c:RegisterEffect(e3) -end -function c89870349.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c89870349.atkop(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_SET_ATTACK_FINAL) - e1:SetValue(tc:GetAttack()/2) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end -function c89870349.thcost(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 c89870349.thfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c89870349.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c89870349.thfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c89870349.thfilter,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,c89870349.thfilter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c89870349.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end +--M・HERO ブラスト +function c89870349.initial_effect(c) + c:EnableReviveLimit() + --special summon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(89870349,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetTarget(c89870349.atktg) + e2:SetOperation(c89870349.atkop) + c:RegisterEffect(e2) + --to hand + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(89870349,1)) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetCost(c89870349.thcost) + e3:SetTarget(c89870349.thtg) + e3:SetOperation(c89870349.thop) + c:RegisterEffect(e3) +end +function c89870349.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c89870349.atkop(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_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()/2) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c89870349.thcost(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 c89870349.thfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c89870349.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c89870349.thfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c89870349.thfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c89870349.thfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c89870349.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c89883517.lua b/script/c89883517.lua index e48cebca..7a32b37e 100644 --- a/script/c89883517.lua +++ b/script/c89883517.lua @@ -1,44 +1,44 @@ ---濡れ衣 -function c89883517.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,89883517+EFFECT_COUNT_CODE_OATH) - e1:SetCondition(c89883517.condition) - e1:SetTarget(c89883517.target) - e1:SetOperation(c89883517.activate) - c:RegisterEffect(e1) -end -function c89883517.condition(e,tp,eg,ep,ev,re,r,rp) - local ct1=Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD+LOCATION_HAND,0) - local ct2=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD+LOCATION_HAND) - return ct1=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) -end -function c89914395.filter(c) - return c:IsFaceup() and c:IsSetCard(0x4b) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) -end -function c89914395.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c89914395.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c89914395.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c89914395.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c89914395.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - tc:RegisterEffect(e1) - end -end +--ミョルニルの魔槌 +function c89914395.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCondition(c89914395.condition) + e1:SetTarget(c89914395.target) + e1:SetOperation(c89914395.operation) + c:RegisterEffect(e1) +end +function c89914395.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 c89914395.filter(c) + return c:IsFaceup() and c:IsSetCard(0x4b) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) +end +function c89914395.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c89914395.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c89914395.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c89914395.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c89914395.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end diff --git a/script/c89974904.lua b/script/c89974904.lua new file mode 100644 index 00000000..078da248 --- /dev/null +++ b/script/c89974904.lua @@ -0,0 +1,50 @@ +--シンクロコール +function c89974904.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c89974904.target) + e1:SetOperation(c89974904.activate) + c:RegisterEffect(e1) +end +function c89974904.cfilter(c,tc) + return c:IsRace(RACE_DRAGON+RACE_FIEND) and c:IsAttribute(ATTRIBUTE_DARK) + and c:IsSynchroSummonable(tc) +end +function c89974904.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,182,tp,false,false) + and Duel.IsExistingMatchingCard(c89974904.cfilter,tp,LOCATION_EXTRA,0,1,nil,c) +end +function c89974904.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c89974904.spfilter(chkc,e,tp) end + if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c89974904.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c89974904.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,tp,LOCATION_EXTRA) +end +function c89974904.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummonStep(tc,182,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_DISABLE_EFFECT) + tc:RegisterEffect(e2) + Duel.SpecialSummonComplete() + local g=Duel.GetMatchingGroup(c89974904.cfilter,tp,LOCATION_EXTRA,0,nil,tc) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,1,1,nil) + Duel.SynchroSummon(tp,sg:GetFirst(),tc) + end + end +end diff --git a/script/c9000988.lua b/script/c9000988.lua new file mode 100644 index 00000000..667dc64b --- /dev/null +++ b/script/c9000988.lua @@ -0,0 +1,68 @@ +--EM小判竜 +--Performapal Drago Remora +--Script by nekrozar +function c9000988.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --remove + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(9000988,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_PZONE) + e1:SetCondition(c9000988.condition) + e1:SetTarget(c9000988.target) + e1:SetOperation(c9000988.operation) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c9000988.atktg) + e2:SetValue(500) + c:RegisterEffect(e2) + --indes + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(1) + c:RegisterEffect(e3) +end +function c9000988.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c9000988.filter(c) + return c:IsFaceup() and c:IsRace(RACE_DRAGON) and c:GetSummonLocation()==LOCATION_EXTRA +end +function c9000988.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c9000988.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c9000988.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c9000988.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c9000988.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_BATTLED) + e1:SetOwnerPlayer(tp) + e1:SetCondition(c9000988.rmcon) + e1:SetOperation(c9000988.rmop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1,true) + end +end +function c9000988.rmcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + return tp==e:GetOwnerPlayer() and tc and tc:IsControler(1-tp) +end +function c9000988.rmop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetBattleTarget() + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) +end +function c9000988.atktg(e,c) + return c:IsRace(RACE_DRAGON) and c~=e:GetHandler() +end diff --git a/script/c90011152.lua b/script/c90011152.lua index e500544e..ac73f2e5 100644 --- a/script/c90011152.lua +++ b/script/c90011152.lua @@ -1,61 +1,61 @@ ---おジャマ・カントリー -function c90011152.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(90011152,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_FZONE) - e2:SetCountLimit(1) - e2:SetCost(c90011152.spcost) - e2:SetTarget(c90011152.sptg) - e2:SetOperation(c90011152.spop) - c:RegisterEffect(e2) - --swap ad - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetCondition(c90011152.atcon) - e3:SetCode(EFFECT_SWAP_BASE_AD) - c:RegisterEffect(e3) -end -function c90011152.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xf) -end -function c90011152.atcon(e) - return Duel.IsExistingMatchingCard(c90011152.cfilter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,nil) -end -function c90011152.costfilter(c) - return c:IsSetCard(0xf) and c:IsAbleToGraveAsCost() -end -function c90011152.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c90011152.costfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c90011152.costfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c90011152.filter(c,e,tp) - return c:IsSetCard(0xf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c90011152.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c90011152.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c90011152.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c90011152.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c90011152.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--おジャマ・カントリー +function c90011152.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(90011152,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_FZONE) + e2:SetCountLimit(1) + e2:SetCost(c90011152.spcost) + e2:SetTarget(c90011152.sptg) + e2:SetOperation(c90011152.spop) + c:RegisterEffect(e2) + --swap ad + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetCondition(c90011152.atcon) + e3:SetCode(EFFECT_SWAP_BASE_AD) + c:RegisterEffect(e3) +end +function c90011152.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xf) +end +function c90011152.atcon(e) + return Duel.IsExistingMatchingCard(c90011152.cfilter,e:GetHandler():GetControler(),LOCATION_MZONE,0,1,nil) +end +function c90011152.costfilter(c) + return c:IsSetCard(0xf) and c:IsAbleToGraveAsCost() +end +function c90011152.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c90011152.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c90011152.costfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c90011152.filter(c,e,tp) + return c:IsSetCard(0xf) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c90011152.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c90011152.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c90011152.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c90011152.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c90011152.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c90036274.lua b/script/c90036274.lua new file mode 100644 index 00000000..9875fad7 --- /dev/null +++ b/script/c90036274.lua @@ -0,0 +1,129 @@ +--クリアウィング・ファスト・ドラゴン +function c90036274.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsAttribute,ATTRIBUTE_WIND),1) + c:EnableReviveLimit() + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(90036274,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1,90036274) + e1:SetCost(c90036274.spcost) + e1:SetTarget(c90036274.sptg) + e1:SetOperation(c90036274.spop) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(90036274,1)) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetHintTiming(TIMING_DAMAGE_STEP,TIMING_DAMAGE_STEP+0x1c0) + e2:SetCountLimit(1,90036275) + e2:SetCondition(c90036274.discon) + e2:SetTarget(c90036274.distg) + e2:SetOperation(c90036274.disop) + c:RegisterEffect(e2) + --pendulum + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(90036274,2)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_DESTROYED) + e3:SetCondition(c90036274.pencon) + e3:SetTarget(c90036274.pentg) + e3:SetOperation(c90036274.penop) + c:RegisterEffect(e3) +end +function c90036274.cfilter1(c,tp) + return c:IsFaceup() and c:IsSetCard(0x2016) and c:IsType(TYPE_TUNER) and c:IsAbleToGraveAsCost() and c:IsLevelBelow(7) + and Duel.IsExistingMatchingCard(c90036274.cfilter2,tp,LOCATION_MZONE,0,1,c,c:GetLevel()) +end +function c90036274.cfilter2(c,lv) + return c:IsFaceup() and c:IsNotTuner() and c:GetLevel()==7-lv and c:IsAbleToGraveAsCost() +end +function c90036274.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c90036274.cfilter1,tp,LOCATION_MZONE,0,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g1=Duel.SelectMatchingCard(tp,c90036274.cfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g2=Duel.SelectMatchingCard(tp,c90036274.cfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst(),g1:GetFirst():GetLevel()) + g1:Merge(g2) + Duel.SendtoGrave(g1,REASON_COST) +end +function c90036274.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c90036274.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c90036274.discon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c90036274.disfilter(c) + return c:GetSummonLocation()==LOCATION_EXTRA and not (c:GetAttack()==0 and c:IsDisabled()) +end +function c90036274.distg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c90036274.disfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c90036274.disfilter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c90036274.disfilter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c90036274.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_EFFECT) + e3:SetValue(RESET_TURN_SET) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + if tc:IsType(TYPE_TRAPMONSTER) then + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e4) + end + end +end +function c90036274.pencon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() +end +function c90036274.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end +end +function c90036274.penop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end diff --git a/script/c90098780.lua b/script/c90098780.lua index 60fafc60..611991de 100644 --- a/script/c90098780.lua +++ b/script/c90098780.lua @@ -18,7 +18,7 @@ function c90098780.initial_effect(c) e2:SetDescription(aux.Stringid(90098780,1)) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(1) e2:SetCost(c90098780.atkcost) e2:SetTarget(c90098780.atktg) diff --git a/script/c9012916.lua b/script/c9012916.lua index 2ce2d70f..1504c8e3 100644 --- a/script/c9012916.lua +++ b/script/c9012916.lua @@ -1,75 +1,75 @@ ---ブラックフェザー・ドラゴン -function c9012916.initial_effect(c) - c:EnableCounterPermit(0x10) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --damage reduce - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(1,0) - e1:SetValue(c9012916.damval) - c:RegisterEffect(e1) - local e4=e1:Clone() - e4:SetCode(EFFECT_NO_EFFECT_DAMAGE) - c:RegisterEffect(e4) - --atkdown-c - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(c9012916.atkval) - c:RegisterEffect(e2) - --atkdown - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(9012916,0)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCost(c9012916.cost) - e3:SetTarget(c9012916.target) - e3:SetOperation(c9012916.operation) - c:RegisterEffect(e3) -end -function c9012916.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then - e:GetHandler():AddCounter(0x10,1) - return 0 - end - return val -end -function c9012916.atkval(e,c) - return c:GetCounter(0x10)*-700 -end -function c9012916.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetCounter(0x10)>0 end - local ct=e:GetHandler():GetCounter(0x10) - e:SetLabel(ct*700) - e:GetHandler():RemoveCounter(tp,0x10,ct,REASON_COST) -end -function c9012916.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(aux.nzatk,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,aux.nzatk,tp,0,LOCATION_MZONE,1,1,nil) -end -function c9012916.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local val=e:GetLabel() - local atk=tc:GetAttack() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(-val) - tc:RegisterEffect(e1) - if val>atk then Duel.Damage(1-tp,atk,REASON_EFFECT) - else Duel.Damage(1-tp,val,REASON_EFFECT) end - end -end +--ブラックフェザー・ドラゴン +function c9012916.initial_effect(c) + c:EnableCounterPermit(0x10) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --damage reduce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(1,0) + e1:SetValue(c9012916.damval) + c:RegisterEffect(e1) + local e4=e1:Clone() + e4:SetCode(EFFECT_NO_EFFECT_DAMAGE) + c:RegisterEffect(e4) + --atkdown-c + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c9012916.atkval) + c:RegisterEffect(e2) + --atkdown + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(9012916,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c9012916.cost) + e3:SetTarget(c9012916.target) + e3:SetOperation(c9012916.operation) + c:RegisterEffect(e3) +end +function c9012916.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then + e:GetHandler():AddCounter(0x10,1) + return 0 + end + return val +end +function c9012916.atkval(e,c) + return c:GetCounter(0x10)*-700 +end +function c9012916.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetCounter(0x10)>0 end + local ct=e:GetHandler():GetCounter(0x10) + e:SetLabel(ct*700) + e:GetHandler():RemoveCounter(tp,0x10,ct,REASON_COST) +end +function c9012916.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(aux.nzatk,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,aux.nzatk,tp,0,LOCATION_MZONE,1,1,nil) +end +function c9012916.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local val=e:GetLabel() + local atk=tc:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-val) + tc:RegisterEffect(e1) + if val>atk then Duel.Damage(1-tp,atk,REASON_EFFECT) + else Duel.Damage(1-tp,val,REASON_EFFECT) end + end +end diff --git a/script/c90162951.lua b/script/c90162951.lua index 3eef8088..057ff36d 100644 --- a/script/c90162951.lua +++ b/script/c90162951.lua @@ -26,6 +26,7 @@ function c90162951.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(90162951,0)) e4:SetCategory(CATEGORY_DESTROY) + e4:SetProperty(EFFECT_FLAG2_XMDETACH) e4:SetType(EFFECT_TYPE_IGNITION) e4:SetRange(LOCATION_MZONE) e4:SetCountLimit(1) diff --git a/script/c9024367.lua b/script/c9024367.lua index a4dd75cf..3b0d7cd6 100644 --- a/script/c9024367.lua +++ b/script/c9024367.lua @@ -1,61 +1,61 @@ ---ギャラクシー・ドラグーン -function c9024367.initial_effect(c) - --atklimit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetValue(c9024367.bttg) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetCondition(c9024367.atkcon) - e3:SetValue(1000) - c:RegisterEffect(e3) - --disable - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_ATTACK_ANNOUNCE) - e4:SetOperation(c9024367.disop) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EVENT_BE_BATTLE_TARGET) - c:RegisterEffect(e5) -end -function c9024367.bttg(e,c) - return c:IsFacedown() or not c:IsRace(RACE_DRAGON) -end -function c9024367.atkcon(e) - local ph=Duel.GetCurrentPhase() - local bc=e:GetHandler():GetBattleTarget() - return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and bc and bc:IsRace(RACE_DRAGON) -end -function c9024367.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local bc=c:GetBattleTarget() - if bc and bc:IsRace(RACE_DRAGON) then - c:CreateRelation(bc,RESET_EVENT+0x1fe0000) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetCondition(c9024367.discon) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - bc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetCondition(c9024367.discon) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - bc:RegisterEffect(e2) - end -end -function c9024367.discon(e) - return e:GetOwner():IsRelateToCard(e:GetHandler()) -end +--ギャラクシー・ドラグーン +function c9024367.initial_effect(c) + --atklimit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c9024367.bttg) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetCondition(c9024367.atkcon) + e3:SetValue(1000) + c:RegisterEffect(e3) + --disable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetOperation(c9024367.disop) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EVENT_BE_BATTLE_TARGET) + c:RegisterEffect(e5) +end +function c9024367.bttg(e,c) + return c:IsFacedown() or not c:IsRace(RACE_DRAGON) +end +function c9024367.atkcon(e) + local ph=Duel.GetCurrentPhase() + local bc=e:GetHandler():GetBattleTarget() + return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and bc and bc:IsRace(RACE_DRAGON) +end +function c9024367.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + if bc and bc:IsRace(RACE_DRAGON) then + c:CreateRelation(bc,RESET_EVENT+0x1fe0000) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetCondition(c9024367.discon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + bc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetCondition(c9024367.discon) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + bc:RegisterEffect(e2) + end +end +function c9024367.discon(e) + return e:GetOwner():IsRelateToCard(e:GetHandler()) +end diff --git a/script/c90243945.lua b/script/c90243945.lua new file mode 100644 index 00000000..77c749ad --- /dev/null +++ b/script/c90243945.lua @@ -0,0 +1,79 @@ +--ワイトプリンセス +function c90243945.initial_effect(c) + --change code + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(32274490) + c:RegisterEffect(e1) + --to grave + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(90243945,0)) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c90243945.tgtg) + e2:SetOperation(c90243945.tgop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --atk/def down + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(90243945,1)) + e4:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetRange(LOCATION_MZONE+LOCATION_HAND) + e4:SetCondition(c90243945.atkcon) + e4:SetCost(c90243945.atkcost) + e4:SetTarget(c90243945.atktg) + e4:SetOperation(c90243945.atkop) + c:RegisterEffect(e4) +end +function c90243945.tgfilter(c) + return c:IsCode(57473560) and c:IsAbleToGrave() +end +function c90243945.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c90243945.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c90243945.tgop(e,tp,eg,ep,ev,re,r,rp) + local tg=Duel.GetFirstMatchingCard(c90243945.tgfilter,tp,LOCATION_DECK,0,nil) + if tg then + Duel.SendtoGrave(tg,REASON_EFFECT) + end +end +function c90243945.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c90243945.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c90243945.atktg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end +end +function c90243945.atkop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local val=0 + if tc:IsType(TYPE_XYZ) then val=tc:GetRank()*-300 + else val=tc:GetLevel()*-300 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(val) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c90246973.lua b/script/c90246973.lua index 2893833b..ee274c39 100644 --- a/script/c90246973.lua +++ b/script/c90246973.lua @@ -1,21 +1,6 @@ --パワー・ピカクス function c90246973.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(c90246973.target) - e1:SetOperation(c90246973.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) + aux.AddEquipProcedure(c) --remove local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(90246973,0)) @@ -28,19 +13,6 @@ function c90246973.initial_effect(c) e3:SetOperation(c90246973.rmop) c:RegisterEffect(e3) end -function c90246973.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 c90246973.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 c90246973.rmfilter(c,lv) return c:IsLevelBelow(lv) and c:IsAbleToRemove() end diff --git a/script/c90263923.lua b/script/c90263923.lua index 56eed48e..babf7ac1 100644 --- a/script/c90263923.lua +++ b/script/c90263923.lua @@ -1,39 +1,39 @@ ---シャイニング・アブソーブ -function c90263923.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c90263923.target) - e1:SetOperation(c90263923.activate) - c:RegisterEffect(e1) -end -function c90263923.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) -end -function c90263923.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c90263923.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c90263923.filter,tp,0,LOCATION_MZONE,1,nil) - and Duel.IsExistingMatchingCard(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c90263923.filter,tp,0,LOCATION_MZONE,1,1,nil) -end -function c90263923.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local g=Duel.GetMatchingGroup(Card.IsPosition,tp,LOCATION_MZONE,0,nil,POS_FACEUP_ATTACK) - if g:GetCount()>0 and tc:IsRelateToEffect(e) and tc:IsFaceup() then - local sc=g:GetFirst() - local atk=tc:GetAttack() - while sc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(atk) - sc:RegisterEffect(e1) - sc=g:GetNext() - end - end -end +--シャイニング・アブソーブ +function c90263923.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c90263923.target) + e1:SetOperation(c90263923.activate) + c:RegisterEffect(e1) +end +function c90263923.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) +end +function c90263923.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c90263923.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c90263923.filter,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c90263923.filter,tp,0,LOCATION_MZONE,1,1,nil) +end +function c90263923.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local g=Duel.GetMatchingGroup(Card.IsPosition,tp,LOCATION_MZONE,0,nil,POS_FACEUP_ATTACK) + if g:GetCount()>0 and tc:IsRelateToEffect(e) and tc:IsFaceup() then + local sc=g:GetFirst() + local atk=tc:GetAttack() + while sc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + sc:RegisterEffect(e1) + sc=g:GetNext() + end + end +end diff --git a/script/c9030160.lua b/script/c9030160.lua new file mode 100644 index 00000000..3f9e68cd --- /dev/null +++ b/script/c9030160.lua @@ -0,0 +1,76 @@ +--常闇の契約書 +--Dark Contract with the Eternal Darkness +--Scripted by Eerie Code +function c9030160.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) + --cannot be target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCondition(c9030160.condition) + e2:SetValue(c9030160.evalue) + c:RegisterEffect(e2) + --cannot release + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_UNRELEASABLE_SUM) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetCondition(c9030160.condition) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + c:RegisterEffect(e5) + local e6=e3:Clone() + e6:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e6) + local e7=e3:Clone() + e7:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e7) + --damage + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(9030160,0)) + e8:SetCategory(CATEGORY_DAMAGE) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e8:SetCode(EVENT_PHASE+PHASE_STANDBY) + e8:SetRange(LOCATION_SZONE) + e8:SetCountLimit(1) + e8:SetCondition(c9030160.damcon) + e8:SetTarget(c9030160.damtg) + e8:SetOperation(c9030160.damop) + c:RegisterEffect(e8) +end +function c9030160.condition(e) + local tp=e:GetHandlerPlayer() + local pc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local pc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + return pc1 and pc2 and pc1:IsSetCard(0xaf) and pc2:IsSetCard(0xaf) +end +function c9030160.evalue(e,re,rp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and rp~=e:GetHandlerPlayer() +end +function c9030160.damcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c9030160.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,tp,1000) +end +function c9030160.damop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c90365482.lua b/script/c90365482.lua new file mode 100644 index 00000000..825396c1 --- /dev/null +++ b/script/c90365482.lua @@ -0,0 +1,65 @@ +--河伯 +function c90365482.initial_effect(c) + --spirit return + aux.EnableSpiritReturn(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --pos + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(90365482,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c90365482.postg) + e2:SetOperation(c90365482.posop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP) + c:RegisterEffect(e3) +end +function c90365482.postg(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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c90365482.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() and not tc:IsImmuneToEffect(e) then + local c=e:GetHandler() + local fid=c:GetFieldID() + tc:RegisterFlagEffect(90365482,RESET_EVENT+0x1fe0000,0,1,fid) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_ADD_TYPE) + e1:SetValue(TYPE_SPIRIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetLabel(fid) + e2:SetLabelObject(tc) + e2:SetCondition(c90365482.retcon) + e2:SetOperation(c90365482.retop) + Duel.RegisterEffect(e2,tp) + end +end +function c90365482.retcon(e,tp,eg,ep,ev,re,r,rp) + if not (e:GetLabelObject():GetFlagEffectLabel(90365482)==e:GetLabel()) then + e:Reset() + return false + else return true end +end +function c90365482.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SendtoHand(tc,nil,REASON_EFFECT) +end diff --git a/script/c90374791.lua b/script/c90374791.lua index 2e4d1644..de6e8af4 100644 --- a/script/c90374791.lua +++ b/script/c90374791.lua @@ -1,22 +1,6 @@ --アームド・チェンジャー function c90374791.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:SetCost(c90374791.cost) - e1:SetTarget(c90374791.target) - e1:SetOperation(c90374791.operation) - c:RegisterEffect(e1) - --Equip limit - local e2=Effect.CreateEffect(c) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EQUIP_LIMIT) - e2:SetValue(1) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,nil,nil,c90374791.cost) --salvage local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(90374791,0)) @@ -37,19 +21,6 @@ function c90374791.cost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(c90374791.cfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end Duel.DiscardHand(tp,c90374791.cfilter,1,1,REASON_COST) end -function c90374791.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 c90374791.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 c90374791.thcon(e,tp,eg,ep,ev,re,r,rp) return eg:GetFirst()==e:GetHandler():GetEquipTarget() end diff --git a/script/c90432163.lua b/script/c90432163.lua index 1e3ad058..b6ff43d4 100644 --- a/script/c90432163.lua +++ b/script/c90432163.lua @@ -1,73 +1,73 @@ ---幻影騎士団ダスティローブ -function c90432163.initial_effect(c) - --atk/def up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(90432163,0)) - e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,90432163) - e1:SetCondition(c90432163.condition) - e1:SetTarget(c90432163.target) - e1:SetOperation(c90432163.operation) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(90432163,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,90432164) - e2:SetCost(c90432163.thcost) - e2:SetTarget(c90432163.thtg) - e2:SetOperation(c90432163.thop) - c:RegisterEffect(e2) -end -function c90432163.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) -end -function c90432163.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) -end -function c90432163.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c90432163.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c90432163.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c90432163.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c90432163.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) or Duel.ChangePosition(e:GetHandler(),POS_FACEUP_DEFENSE)==0 then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(800) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - end -end -function c90432163.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c90432163.thfilter(c) - return c:IsSetCard(0x10db) and not c:IsCode(90432163) and c:IsAbleToHand() -end -function c90432163.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c90432163.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c90432163.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c90432163.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--幻影騎士団ダスティローブ +function c90432163.initial_effect(c) + --atk/def up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(90432163,0)) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,90432163) + e1:SetCondition(c90432163.condition) + e1:SetTarget(c90432163.target) + e1:SetOperation(c90432163.operation) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(90432163,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,90432164) + e2:SetCost(c90432163.thcost) + e2:SetTarget(c90432163.thtg) + e2:SetOperation(c90432163.thop) + c:RegisterEffect(e2) +end +function c90432163.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPosition(POS_FACEUP_ATTACK) +end +function c90432163.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) +end +function c90432163.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c90432163.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c90432163.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c90432163.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c90432163.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or Duel.ChangePosition(e:GetHandler(),POS_FACEUP_DEFENSE)==0 then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(800) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end +function c90432163.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c90432163.thfilter(c) + return c:IsSetCard(0x10db) and not c:IsCode(90432163) and c:IsAbleToHand() +end +function c90432163.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c90432163.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c90432163.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c90432163.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c90434657.lua b/script/c90434657.lua index 9b499d5d..3a773899 100644 --- a/script/c90434657.lua +++ b/script/c90434657.lua @@ -32,8 +32,7 @@ function c90434657.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c90434657.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c90440725.lua b/script/c90440725.lua index 68101210..2afca0c8 100644 --- a/script/c90440725.lua +++ b/script/c90440725.lua @@ -1,84 +1,84 @@ ---サイバー・シャドー・ガードナー -function c90440725.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_MAIN_END) - e1:SetCondition(c90440725.condition) - e1:SetTarget(c90440725.target) - e1:SetOperation(c90440725.activate) - c:RegisterEffect(e1) -end -function c90440725.condition(e,tp,eg,ep,ev,re,r,rp) - local ph=Duel.GetCurrentPhase() - return Duel.GetTurnPlayer()==1-tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) -end -function c90440725.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,90440725,0,0x21,-2,-2,4,RACE_MACHINE,ATTRIBUTE_EARTH) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c90440725.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - or not Duel.IsPlayerCanSpecialSummonMonster(tp,90440725,0,0x21,-2,-2,4,RACE_MACHINE,ATTRIBUTE_EARTH) then return end - c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - --cannot attack - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c90440725.atkcon) - e1:SetOperation(c90440725.atkop) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1,true) - --turn set - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(90440725,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c90440725.setcon) - e2:SetTarget(c90440725.settg) - e2:SetOperation(c90440725.setop) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2,true) - Duel.SpecialSummonComplete() -end -function c90440725.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==e:GetHandler() -end -function c90440725.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(Duel.GetAttacker():GetAttack()) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_DEFENSE_FINAL) - e1:SetValue(Duel.GetAttacker():GetDefense()) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) -end -function c90440725.setcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==1-tp -end -function c90440725.settg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsCanTurnSet() end - Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) -end -function c90440725.setop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsLocation(LOCATION_MZONE) then - Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) - end -end +--サイバー・シャドー・ガードナー +function c90440725.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_MAIN_END) + e1:SetCondition(c90440725.condition) + e1:SetTarget(c90440725.target) + e1:SetOperation(c90440725.activate) + c:RegisterEffect(e1) +end +function c90440725.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()==1-tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c90440725.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,90440725,0,0x21,-2,-2,4,RACE_MACHINE,ATTRIBUTE_EARTH) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c90440725.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,90440725,0,0x21,-2,-2,4,RACE_MACHINE,ATTRIBUTE_EARTH) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TRAP) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + --cannot attack + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c90440725.atkcon) + e1:SetOperation(c90440725.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + --turn set + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(90440725,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c90440725.setcon) + e2:SetTarget(c90440725.settg) + e2:SetOperation(c90440725.setop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() +end +function c90440725.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==e:GetHandler() +end +function c90440725.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(Duel.GetAttacker():GetAttack()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetValue(Duel.GetAttacker():GetDefense()) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c90440725.setcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==1-tp +end +function c90440725.settg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanTurnSet() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c90440725.setop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsLocation(LOCATION_MZONE) then + Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c90452877.lua b/script/c90452877.lua index 667c7ac2..39554b2b 100644 --- a/script/c90452877.lua +++ b/script/c90452877.lua @@ -1,4 +1,4 @@ ---Kozmojo +--Kozmo-エナジーアーツ function c90452877.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) diff --git a/script/c90470931.lua b/script/c90470931.lua index 0da0b46e..655c9c1e 100644 --- a/script/c90470931.lua +++ b/script/c90470931.lua @@ -1,49 +1,49 @@ ---鬼神の連撃 -function c90470931.initial_effect(c) - --multi attack - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c90470931.condition) - e1:SetCost(c90470931.cost) - e1:SetTarget(c90470931.target) - e1:SetOperation(c90470931.operation) - c:RegisterEffect(e1) -end -function c90470931.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c90470931.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - return true -end -function c90470931.filter(c,cst) - return c:IsFaceup() and c:IsType(TYPE_XYZ) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) and (not cst or c:GetOverlayCount()~=0) -end -function c90470931.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local chkcost=e:GetLabel()==1 and true or false - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c90470931.filter(chkc,chkcost) end - if chk==0 then - e:SetLabel(0) - return Duel.IsExistingTarget(c90470931.filter,tp,LOCATION_MZONE,0,1,nil,chkcost) - end - e:SetLabel(0) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local tc=Duel.SelectTarget(tp,c90470931.filter,tp,LOCATION_MZONE,0,1,1,nil,chkcost):GetFirst() - if chkcost then - tc:RemoveOverlayCard(tp,tc:GetOverlayCount(),tc:GetOverlayCount(),REASON_COST) - end -end -function c90470931.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(1) - tc:RegisterEffect(e1) - end -end +--鬼神の連撃 +function c90470931.initial_effect(c) + --multi attack + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c90470931.condition) + e1:SetCost(c90470931.cost) + e1:SetTarget(c90470931.target) + e1:SetOperation(c90470931.operation) + c:RegisterEffect(e1) +end +function c90470931.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c90470931.cost(e,tp,eg,ep,ev,re,r,rp,chk) + e:SetLabel(1) + return true +end +function c90470931.filter(c,cst) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) and (not cst or c:GetOverlayCount()~=0) +end +function c90470931.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local chkcost=e:GetLabel()==1 and true or false + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c90470931.filter(chkc,chkcost) end + if chk==0 then + e:SetLabel(0) + return Duel.IsExistingTarget(c90470931.filter,tp,LOCATION_MZONE,0,1,nil,chkcost) + end + e:SetLabel(0) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc=Duel.SelectTarget(tp,c90470931.filter,tp,LOCATION_MZONE,0,1,1,nil,chkcost):GetFirst() + if chkcost then + tc:RemoveOverlayCard(tp,tc:GetOverlayCount(),tc:GetOverlayCount(),REASON_COST) + end +end +function c90470931.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(1) + tc:RegisterEffect(e1) + end +end diff --git a/script/c90555947.lua b/script/c90555947.lua index deb97085..d91ad5e4 100644 --- a/script/c90555947.lua +++ b/script/c90555947.lua @@ -1,46 +1,45 @@ ---ナチュル・ガイアストライオ -function c90555947.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,c90555947.ffilter,2,false) - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(90555947,0)) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_CHAINING) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c90555947.discon) - e1:SetCost(c90555947.discost) - e1:SetTarget(c90555947.distg) - e1:SetOperation(c90555947.disop) - c:RegisterEffect(e1) -end -c90555947.miracle_synchro_fusion=true -function c90555947.ffilter(c) - return c:IsAttribute(ATTRIBUTE_EARTH) and c:IsType(TYPE_SYNCHRO) -end -function c90555947.discon(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return tg and tg:GetCount()==1 and tg:GetFirst():IsOnField() and Duel.IsChainNegatable(ev) -end -function c90555947.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) -end -function c90555947.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c90555947.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--ナチュル・ガイアストライオ +function c90555947.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,c90555947.ffilter,2,false) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(90555947,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_CHAINING) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c90555947.discon) + e1:SetCost(c90555947.discost) + e1:SetTarget(c90555947.distg) + e1:SetOperation(c90555947.disop) + c:RegisterEffect(e1) +end +c90555947.miracle_synchro_fusion=true +function c90555947.ffilter(c) + return c:IsFusionAttribute(ATTRIBUTE_EARTH) and c:IsFusionType(TYPE_SYNCHRO) +end +function c90555947.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:GetCount()==1 and tg:GetFirst():IsOnField() and Duel.IsChainNegatable(ev) +end +function c90555947.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsAbleToGraveAsCost,1,1,REASON_COST) +end +function c90555947.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c90555947.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c90579153.lua b/script/c90579153.lua index 2d854e79..bae9da1a 100644 --- a/script/c90579153.lua +++ b/script/c90579153.lua @@ -28,6 +28,7 @@ function c90579153.initial_effect(c) e2:SetOperation(c90579153.desop) c:RegisterEffect(e2) end +c90579153.material_setcode=0x8 function c90579153.filter(c) return c:IsSetCard(0xc008) and c:IsLevelBelow(4) and c:GetAttack()>0 end diff --git a/script/c90592429.lua b/script/c90592429.lua index 12d30cfb..830834ea 100644 --- a/script/c90592429.lua +++ b/script/c90592429.lua @@ -1,14 +1,6 @@ --ヴァイロン・フィラメント function c90592429.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(c90592429.target) - e1:SetOperation(c90592429.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x30)) --Actlimit local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -16,13 +8,6 @@ function c90592429.initial_effect(c) e2:SetCode(EVENT_ATTACK_ANNOUNCE) e2:SetOperation(c90592429.lmop) 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(c90592429.eqlimit) - c:RegisterEffect(e3) --Search local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(90592429,0)) @@ -35,26 +20,6 @@ function c90592429.initial_effect(c) e4:SetOperation(c90592429.thop) c:RegisterEffect(e4) end -function c90592429.eqlimit(e,c) - return c:IsSetCard(0x30) -end -function c90592429.filter(c) - return c:IsFaceup() and c:IsSetCard(0x30) -end -function c90592429.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c90592429.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c90592429.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c90592429.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c90592429.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 c90592429.lmop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetAttacker()~=e:GetHandler():GetEquipTarget() then return end local e1=Effect.CreateEffect(e:GetHandler()) diff --git a/script/c9059700.lua b/script/c9059700.lua index 800e1092..d4e4f3cb 100644 --- a/script/c9059700.lua +++ b/script/c9059700.lua @@ -26,8 +26,7 @@ function c9059700.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c9059700.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c90640901.lua b/script/c90640901.lua index 532045d4..7dde65ec 100644 --- a/script/c90640901.lua +++ b/script/c90640901.lua @@ -1,58 +1,55 @@ ---リバース・バスター -function c90640901.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetValue(c90640901.vala) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - c:RegisterEffect(e2) - --actlimit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_ATTACK_ANNOUNCE) - e3:SetOperation(c90640901.atkop) - c:RegisterEffect(e3) - --destroy - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(90640901,0)) - e4:SetCategory(CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_BATTLE_START) - e4:SetCondition(c90640901.descon) - e4:SetTarget(c90640901.destg) - e4:SetOperation(c90640901.desop) - c:RegisterEffect(e4) -end -function c90640901.vala(e,c) - return not c:IsFacedown() -end -function c90640901.atkop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c90640901.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end -function c90640901.aclimit(e,re,tp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c90640901.descon(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - return e:GetHandler()==Duel.GetAttacker() and d and d:IsFacedown() and d:IsDefensePos() -end -function c90640901.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttackTarget(),1,0,0) -end -function c90640901.desop(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - if d:IsRelateToBattle() then - Duel.Destroy(d,REASON_EFFECT) - end -end +--リバース・バスター +function c90640901.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetValue(c90640901.vala) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + c:RegisterEffect(e2) + --actlimit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCode(EFFECT_CANNOT_ACTIVATE) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(0,1) + e3:SetValue(c90640901.aclimit) + e3:SetCondition(c90640901.actcon) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(90640901,0)) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_BATTLE_START) + e4:SetCondition(c90640901.descon) + e4:SetTarget(c90640901.destg) + e4:SetOperation(c90640901.desop) + c:RegisterEffect(e4) +end +function c90640901.vala(e,c) + return not c:IsFacedown() +end +function c90640901.aclimit(e,re,tp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c90640901.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end +function c90640901.descon(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return e:GetHandler()==Duel.GetAttacker() and d and d:IsFacedown() and d:IsDefensePos() +end +function c90640901.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,Duel.GetAttackTarget(),1,0,0) +end +function c90640901.desop(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d:IsRelateToBattle() then + Duel.Destroy(d,REASON_EFFECT) + end +end diff --git a/script/c90660762.lua b/script/c90660762.lua index 122d0f4e..e18692bd 100644 --- a/script/c90660762.lua +++ b/script/c90660762.lua @@ -1,7 +1,7 @@ ---メテオ・ブラック・ドラゴン -function c90660762.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,74677422,64271667,true,true) -end -c90660762.material_setcode=0x3b +--メテオ・ブラック・ドラゴン +function c90660762.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,74677422,64271667,true,true) +end +c90660762.material_setcode=0x3b diff --git a/script/c90726340.lua b/script/c90726340.lua index 0744aff9..afb1d5c2 100644 --- a/script/c90726340.lua +++ b/script/c90726340.lua @@ -16,7 +16,7 @@ function c90726340.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(90726340,0)) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) diff --git a/script/c90740329.lua b/script/c90740329.lua index d37140d8..33dbd700 100644 --- a/script/c90740329.lua +++ b/script/c90740329.lua @@ -1,39 +1,39 @@ ---挑発 -function c90740329.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - 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:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_MUST_ATTACK_MONSTER) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e2,tp) - end -end +--挑発 +function c90740329.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + 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:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_MUST_ATTACK_MONSTER) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,tp) + end +end diff --git a/script/c90809975.lua b/script/c90809975.lua index ae12e321..4cc3bb9f 100644 --- a/script/c90809975.lua +++ b/script/c90809975.lua @@ -7,6 +7,7 @@ function c90809975.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(90809975,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) e1:SetCode(EVENT_PHASE+PHASE_STANDBY) e1:SetCountLimit(1) diff --git a/script/c90812044.lua b/script/c90812044.lua new file mode 100644 index 00000000..c08a88b6 --- /dev/null +++ b/script/c90812044.lua @@ -0,0 +1,74 @@ +--連鎖召喚 +function c90812044.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c90812044.target) + e1:SetOperation(c90812044.activate) + c:RegisterEffect(e1) +end +function c90812044.cfilter(c) + return c:IsType(TYPE_XYZ) and c:IsFaceup() +end +function c90812044.cfilter2(c,r) + return c:IsType(TYPE_XYZ) and c:GetRank()==r and c:IsFaceup() +end +function c90812044.filter(c,e,tp,r) + return c:IsType(TYPE_XYZ) and c:GetRank()=2 and rg:IsExists(Card.IsCanBeEffectTarget,1,nil,e) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c90812044.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,r) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local sg=rg:FilterSelect(tp,Card.IsCanBeEffectTarget,1,1,nil,e) + Duel.SetTargetCard(sg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c90812044.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local r=tc:GetRank() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c90812044.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,r) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + tc:RegisterFlagEffect(90812044,RESET_EVENT+0x1fe0000,0,1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetLabelObject(tc) + e2:SetCondition(c90812044.retcon) + e2:SetOperation(c90812044.retop) + Duel.RegisterEffect(e2,tp) + end +end +function c90812044.retcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(90812044)~=0 then + return true + else + e:Reset() + return false + end +end +function c90812044.retop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + Duel.SendtoDeck(tc,nil,2,REASON_EFFECT) +end diff --git a/script/c90846359.lua b/script/c90846359.lua index f470f0cb..9e7783c3 100644 --- a/script/c90846359.lua +++ b/script/c90846359.lua @@ -1,105 +1,105 @@ ---群雄割拠 -function c90846359.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0) - e1:SetTarget(c90846359.acttg) - c:RegisterEffect(e1) - --adjust - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetCode(EVENT_ADJUST) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c90846359.adjustop) - c:RegisterEffect(e2) - --cannot summon,spsummon,flipsummon - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_SZONE) - e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(1,1) - e4:SetTarget(c90846359.sumlimit) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetRange(LOCATION_SZONE) - e5:SetCode(EFFECT_CANNOT_SUMMON) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetTargetRange(1,1) - e5:SetTarget(c90846359.sumlimit) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD) - e6:SetRange(LOCATION_SZONE) - e6:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e6:SetTargetRange(1,1) - e6:SetTarget(c90846359.sumlimit) - c:RegisterEffect(e6) -end -c90846359[0]=0 -c90846359[1]=0 -function c90846359.acttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - c90846359[0]=0 - c90846359[1]=0 -end -function c90846359.sumlimit(e,c,sump,sumtype,sumpos,targetp) - if sumpos and bit.band(sumpos,POS_FACEDOWN)>0 then return false end - local rc=c90846359[sump] - if targetp then rc=c90846359[targetp] end - if rc==0 then return false end - return c:GetRace()~=rc -end -function c90846359.getrace(g) - local arc=0 - local tc=g:GetFirst() - while tc do - arc=bit.bor(arc,tc:GetRace()) - tc=g:GetNext() - end - return arc -end -function c90846359.rmfilter(c,rc) - return c:GetRace()==rc -end -function c90846359.adjustop(e,tp,eg,ep,ev,re,r,rp) - local phase=Duel.GetCurrentPhase() - if (phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()) or phase==PHASE_DAMAGE_CAL then return end - local g1=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) - local g2=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) - local c=e:GetHandler() - if g1:GetCount()==0 then c90846359[tp]=0 - else - local rac=c90846359.getrace(g1) - if bit.band(rac,rac-1)~=0 then - if c90846359[tp]==0 or bit.band(c90846359[tp],rac)==0 then - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(90846359,0)) - rac=Duel.AnnounceRace(tp,1,rac) - else rac=c90846359[tp] end - end - g1:Remove(c90846359.rmfilter,nil,rac) - c90846359[tp]=rac - end - if g2:GetCount()==0 then c90846359[1-tp]=0 - else - local rac=c90846359.getrace(g2) - if bit.band(rac,rac-1)~=0 then - if c90846359[1-tp]==0 or bit.band(c90846359[1-tp],rac)==0 then - Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(90846359,0)) - rac=Duel.AnnounceRace(1-tp,1,rac) - else rac=c90846359[1-tp] end - end - g2:Remove(c90846359.rmfilter,nil,rac) - c90846359[1-tp]=rac - end - g1:Merge(g2) - if g1:GetCount()>0 then - Duel.SendtoGrave(g1,REASON_RULE) - Duel.Readjust() - end -end +--群雄割拠 +function c90846359.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0) + e1:SetTarget(c90846359.acttg) + c:RegisterEffect(e1) + --adjust + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetCode(EVENT_ADJUST) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c90846359.adjustop) + c:RegisterEffect(e2) + --cannot summon,spsummon,flipsummon + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,1) + e4:SetTarget(c90846359.sumlimit) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_SUMMON) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,1) + e5:SetTarget(c90846359.sumlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_SZONE) + e6:SetCode(EFFECT_CANNOT_FLIP_SUMMON) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetTargetRange(1,1) + e6:SetTarget(c90846359.sumlimit) + c:RegisterEffect(e6) +end +c90846359[0]=0 +c90846359[1]=0 +function c90846359.acttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + c90846359[0]=0 + c90846359[1]=0 +end +function c90846359.sumlimit(e,c,sump,sumtype,sumpos,targetp) + if sumpos and bit.band(sumpos,POS_FACEDOWN)>0 then return false end + local rc=c90846359[sump] + if targetp then rc=c90846359[targetp] end + if rc==0 then return false end + return c:GetRace()~=rc +end +function c90846359.getrace(g) + local arc=0 + local tc=g:GetFirst() + while tc do + arc=bit.bor(arc,tc:GetRace()) + tc=g:GetNext() + end + return arc +end +function c90846359.rmfilter(c,rc) + return c:GetRace()==rc +end +function c90846359.adjustop(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()) or phase==PHASE_DAMAGE_CAL then return end + local g1=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local g2=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_MZONE,nil) + local c=e:GetHandler() + if g1:GetCount()==0 then c90846359[tp]=0 + else + local rac=c90846359.getrace(g1) + if bit.band(rac,rac-1)~=0 then + if c90846359[tp]==0 or bit.band(c90846359[tp],rac)==0 then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(90846359,0)) + rac=Duel.AnnounceRace(tp,1,rac) + else rac=c90846359[tp] end + end + g1:Remove(c90846359.rmfilter,nil,rac) + c90846359[tp]=rac + end + if g2:GetCount()==0 then c90846359[1-tp]=0 + else + local rac=c90846359.getrace(g2) + if bit.band(rac,rac-1)~=0 then + if c90846359[1-tp]==0 or bit.band(c90846359[1-tp],rac)==0 then + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(90846359,0)) + rac=Duel.AnnounceRace(1-tp,1,rac) + else rac=c90846359[1-tp] end + end + g2:Remove(c90846359.rmfilter,nil,rac) + c90846359[1-tp]=rac + end + g1:Merge(g2) + if g1:GetCount()>0 then + Duel.SendtoGrave(g1,REASON_RULE) + Duel.Readjust() + end +end diff --git a/script/c90885155.lua b/script/c90885155.lua index 64c9b2d2..fa5714b4 100644 --- a/script/c90885155.lua +++ b/script/c90885155.lua @@ -1,144 +1,143 @@ ---クリフォート・シェル -function c90885155.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(1,0) - e2:SetTarget(c90885155.splimit) - c:RegisterEffect(e2) - --atk down - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_PZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetTargetRange(0,LOCATION_MZONE) - e3:SetValue(-300) - c:RegisterEffect(e3) - --summon with no tribute - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(90885155,0)) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EFFECT_SUMMON_PROC) - e4:SetCondition(c90885155.ntcon) - c:RegisterEffect(e4) - --change level - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_SUMMON_COST) - e5:SetOperation(c90885155.lvop) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_SPSUMMON_COST) - e6:SetOperation(c90885155.lvop2) - c:RegisterEffect(e6) - --immune - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetCode(EFFECT_IMMUNE_EFFECT) - e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) - e7:SetRange(LOCATION_MZONE) - e7:SetCondition(c90885155.immcon) - e7:SetValue(aux.qlifilter) - c:RegisterEffect(e7) - --effect - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e8:SetCode(EVENT_SUMMON_SUCCESS) - e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e8:SetCondition(c90885155.effcon) - e8:SetOperation(c90885155.effop) - c:RegisterEffect(e8) - --tribute check - local e9=Effect.CreateEffect(c) - e9:SetType(EFFECT_TYPE_SINGLE) - e9:SetCode(EFFECT_MATERIAL_CHECK) - e9:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e9:SetValue(c90885155.valcheck) - e9:SetLabelObject(e8) - c:RegisterEffect(e9) -end -function c90885155.splimit(e,c) - return not c:IsSetCard(0xaa) -end -function c90885155.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c90885155.lvcon(e) - return e:GetHandler():GetMaterialCount()==0 -end -function c90885155.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c90885155.lvcon) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c90885155.lvcon) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c90885155.lvop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c90885155.immcon(e) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL -end -function c90885155.effcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 -end -function c90885155.effop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) -end -function c90885155.valcheck(e,c) - local g=c:GetMaterial() - if g:IsExists(Card.IsSetCard,1,nil,0xaa) then - e:GetLabelObject():SetLabel(1) - else - e:GetLabelObject():SetLabel(0) - end -end +--クリフォート・シェル +function c90885155.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetTarget(c90885155.splimit) + c:RegisterEffect(e2) + --atk down + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_PZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTargetRange(0,LOCATION_MZONE) + e3:SetValue(-300) + c:RegisterEffect(e3) + --summon with no tribute + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(90885155,0)) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SUMMON_PROC) + e4:SetCondition(c90885155.ntcon) + c:RegisterEffect(e4) + --change level + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_SUMMON_COST) + e5:SetOperation(c90885155.lvop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SPSUMMON_COST) + e6:SetOperation(c90885155.lvop2) + c:RegisterEffect(e6) + --immune + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_IMMUNE_EFFECT) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c90885155.immcon) + e7:SetValue(aux.qlifilter) + c:RegisterEffect(e7) + --effect + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_SUMMON_SUCCESS) + e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e8:SetCondition(c90885155.effcon) + e8:SetOperation(c90885155.effop) + c:RegisterEffect(e8) + --tribute check + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_SINGLE) + e9:SetCode(EFFECT_MATERIAL_CHECK) + e9:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e9:SetValue(c90885155.valcheck) + e9:SetLabelObject(e8) + c:RegisterEffect(e9) +end +function c90885155.splimit(e,c) + return not c:IsSetCard(0xaa) +end +function c90885155.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c90885155.lvcon(e) + return e:GetHandler():GetMaterialCount()==0 +end +function c90885155.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c90885155.lvcon) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c90885155.lvcon) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c90885155.lvop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c90885155.immcon(e) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL +end +function c90885155.effcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE and e:GetLabel()==1 +end +function c90885155.effop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c90885155.valcheck(e,c) + local g=c:GetMaterial() + if g:IsExists(Card.IsSetCard,1,nil,0xaa) then + e:GetLabelObject():SetLabel(1) + else + e:GetLabelObject():SetLabel(0) + end +end diff --git a/script/c90887783.lua b/script/c90887783.lua index 34bf4aad..20916528 100644 --- a/script/c90887783.lua +++ b/script/c90887783.lua @@ -1,34 +1,34 @@ ---竜の交感 -function c90887783.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c90887783.target) - e1:SetOperation(c90887783.operation) - c:RegisterEffect(e1) -end -function c90887783.filter1(c,tp) - return c:IsRace(RACE_DRAGON) and c:IsAbleToDeck() and not c:IsPublic() - and Duel.IsExistingMatchingCard(c90887783.filter2,tp,LOCATION_DECK,0,1,nil,c:GetLevel()) -end -function c90887783.filter2(c,lv) - return c:IsRace(RACE_DRAGON) and c:GetLevel()==lv and c:IsAbleToHand() -end -function c90887783.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c90887783.filter1,tp,LOCATION_HAND,0,1,nil,tp) end - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c90887783.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g1=Duel.SelectMatchingCard(tp,c90887783.filter1,tp,LOCATION_HAND,0,1,1,nil,tp) - Duel.ConfirmCards(1-tp,g1) - if g1:GetCount()==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g2=Duel.SelectMatchingCard(tp,c90887783.filter2,tp,LOCATION_DECK,0,1,1,nil,g1:GetFirst():GetLevel()) - Duel.SendtoHand(g2,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g2) - Duel.SendtoDeck(g1,nil,2,REASON_EFFECT) -end +--竜の交感 +function c90887783.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c90887783.target) + e1:SetOperation(c90887783.operation) + c:RegisterEffect(e1) +end +function c90887783.filter1(c,tp) + return c:IsRace(RACE_DRAGON) and c:IsAbleToDeck() and not c:IsPublic() + and Duel.IsExistingMatchingCard(c90887783.filter2,tp,LOCATION_DECK,0,1,nil,c:GetLevel()) +end +function c90887783.filter2(c,lv) + return c:IsRace(RACE_DRAGON) and c:GetLevel()==lv and c:IsAbleToHand() +end +function c90887783.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c90887783.filter1,tp,LOCATION_HAND,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c90887783.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g1=Duel.SelectMatchingCard(tp,c90887783.filter1,tp,LOCATION_HAND,0,1,1,nil,tp) + Duel.ConfirmCards(1-tp,g1) + if g1:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g2=Duel.SelectMatchingCard(tp,c90887783.filter2,tp,LOCATION_DECK,0,1,1,nil,g1:GetFirst():GetLevel()) + Duel.SendtoHand(g2,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g2) + Duel.SendtoDeck(g1,nil,2,REASON_EFFECT) +end diff --git a/script/c90951921.lua b/script/c90951921.lua index 728a1a4b..b13a9975 100644 --- a/script/c90951921.lua +++ b/script/c90951921.lua @@ -1,70 +1,70 @@ ---先史遺産技術 -function c90951921.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH+CATEGORY_REMOVE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,90951921+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c90951921.cost) - e1:SetTarget(c90951921.target) - e1:SetOperation(c90951921.activate) - c:RegisterEffect(e1) - Duel.AddCustomActivityCounter(90951921,ACTIVITY_SPSUMMON,c90951921.counterfilter) -end -function c90951921.counterfilter(c) - return c:IsSetCard(0x70) -end -function c90951921.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCustomActivityCount(90951921,tp,ACTIVITY_SPSUMMON)==0 end - --oath effects - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetTarget(c90951921.splimit) - Duel.RegisterEffect(e1,tp) -end -function c90951921.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return not c:IsSetCard(0x70) -end -function c90951921.filter(c) - return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x70) and c:IsAbleToRemove() -end -function c90951921.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c90951921.filter(chkc) end - if chk==0 then - if not Duel.IsPlayerCanDiscardDeck(tp,2) - or not Duel.IsExistingTarget(c90951921.filter,tp,LOCATION_GRAVE,0,1,nil) then return false end - local g=Duel.GetDecktopGroup(tp,2) - return g:FilterCount(Card.IsAbleToHand,nil)>0 - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectTarget(tp,c90951921.filter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) -end -function c90951921.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 and Duel.IsPlayerCanDiscardDeck(tp,2) then - Duel.BreakEffect() - local g=Duel.GetDecktopGroup(tp,2) - Duel.ConfirmCards(tp,g) - if g:GetCount()>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=g:FilterSelect(tp,Card.IsAbleToHand,1,1,nil) - g:Sub(sg) - if sg:GetCount()>0 then - Duel.DisableShuffleCheck() - Duel.SendtoHand(sg,nil,REASON_EFFECT) - end - if g:GetCount()>0 then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(g,REASON_EFFECT) - end - end - end -end +--先史遺産技術 +function c90951921.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH+CATEGORY_REMOVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,90951921+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c90951921.cost) + e1:SetTarget(c90951921.target) + e1:SetOperation(c90951921.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(90951921,ACTIVITY_SPSUMMON,c90951921.counterfilter) +end +function c90951921.counterfilter(c) + return c:IsSetCard(0x70) +end +function c90951921.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(90951921,tp,ACTIVITY_SPSUMMON)==0 end + --oath effects + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c90951921.splimit) + Duel.RegisterEffect(e1,tp) +end +function c90951921.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return not c:IsSetCard(0x70) +end +function c90951921.filter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x70) and c:IsAbleToRemove() +end +function c90951921.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c90951921.filter(chkc) end + if chk==0 then + if not Duel.IsPlayerCanDiscardDeck(tp,2) + or not Duel.IsExistingTarget(c90951921.filter,tp,LOCATION_GRAVE,0,1,nil) then return false end + local g=Duel.GetDecktopGroup(tp,2) + return g:FilterCount(Card.IsAbleToHand,nil)>0 + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c90951921.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c90951921.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=0 and Duel.IsPlayerCanDiscardDeck(tp,2) then + Duel.BreakEffect() + local g=Duel.GetDecktopGroup(tp,2) + Duel.ConfirmCards(tp,g) + if g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:FilterSelect(tp,Card.IsAbleToHand,1,1,nil) + g:Sub(sg) + if sg:GetCount()>0 then + Duel.DisableShuffleCheck() + Duel.SendtoHand(sg,nil,REASON_EFFECT) + end + if g:GetCount()>0 then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(g,REASON_EFFECT) + end + end + end +end diff --git a/script/c90957527.lua b/script/c90957527.lua index 2336a735..03c01f7e 100644 --- a/script/c90957527.lua +++ b/script/c90957527.lua @@ -1,130 +1,130 @@ ---剣闘獣ゲオルディアス -function c90957527.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCodeFun(c,79580323,aux.FilterBoolFunction(Card.IsFusionSetCard,0x19),1,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(c90957527.splimit) - c:RegisterEffect(e1) - --special summon rule - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(90957527,1)) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_EXTRA) - e2:SetCondition(c90957527.sprcon) - e2:SetOperation(c90957527.sprop) - c:RegisterEffect(e2) - --damage - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(90957527,0)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_BATTLE_DESTROYING) - e3:SetCondition(c90957527.damcon) - e3:SetTarget(c90957527.damtg) - e3:SetOperation(c90957527.damop) - c:RegisterEffect(e3) - --special summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(90957527,1)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_PHASE+PHASE_BATTLE) - e4:SetRange(LOCATION_MZONE) - e4:SetCondition(c90957527.spcon) - e4:SetCost(c90957527.spcost) - e4:SetTarget(c90957527.sptg) - e4:SetOperation(c90957527.spop) - c:RegisterEffect(e4) -end -function c90957527.splimit(e,se,sp,st) - return e:GetHandler():GetLocation()~=LOCATION_EXTRA -end -function c90957527.spfilter1(c,tp) - return c:IsFusionCode(79580323) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial(nil,true) - and Duel.IsExistingMatchingCard(c90957527.spfilter2,tp,LOCATION_MZONE,0,1,c) -end -function c90957527.spfilter2(c) - return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() -end -function c90957527.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c90957527.spfilter1,tp,LOCATION_ONFIELD,0,1,nil,tp) -end -function c90957527.sprop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(90957527,2)) - local g1=Duel.SelectMatchingCard(tp,c90957527.spfilter1,tp,LOCATION_ONFIELD,0,1,1,nil,tp) - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(90957527,3)) - local g2=Duel.SelectMatchingCard(tp,c90957527.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) - g1:Merge(g2) - local tc=g1:GetFirst() - while tc do - if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end - tc=g1:GetNext() - end - Duel.SendtoDeck(g1,nil,2,REASON_COST) -end -function c90957527.damcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local a=Duel.GetAttacker() - local d=Duel.GetAttackTarget() - if c==a then - e:SetLabel(d:GetDefense()) - return c:IsRelateToBattle() and d:GetLocation()==LOCATION_GRAVE and d:IsType(TYPE_MONSTER) - else - e:SetLabel(a:GetDefense()) - return c:IsRelateToBattle() and a:GetLocation()==LOCATION_GRAVE and a:IsType(TYPE_MONSTER) - end -end -function c90957527.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local d=e:GetLabel() - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(d) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,d) -end -function c90957527.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c90957527.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetBattledGroupCount()>0 -end -function c90957527.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsAbleToExtraAsCost() end - Duel.SendtoDeck(c,nil,0,REASON_COST) -end -function c90957527.filter(c,e,tp) - return not c:IsCode(79580323) and c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,121,tp,false,false) -end -function c90957527.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c90957527.filter,tp,LOCATION_DECK,0,2,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) -end -function c90957527.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end - local g=Duel.GetMatchingGroup(c90957527.filter,tp,LOCATION_DECK,0,nil,e,tp) - if g:GetCount()>=2 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,2,2,nil) - local tc=sg:GetFirst() - Duel.SpecialSummonStep(tc,121,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) - tc=sg:GetNext() - Duel.SpecialSummonStep(tc,121,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) - Duel.SpecialSummonComplete() - end -end +--剣闘獣ゲオルディアス +function c90957527.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCodeFun(c,79580323,aux.FilterBoolFunction(Card.IsFusionSetCard,0x19),1,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(c90957527.splimit) + c:RegisterEffect(e1) + --special summon rule + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(90957527,1)) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_EXTRA) + e2:SetCondition(c90957527.sprcon) + e2:SetOperation(c90957527.sprop) + c:RegisterEffect(e2) + --damage + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(90957527,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c90957527.damcon) + e3:SetTarget(c90957527.damtg) + e3:SetOperation(c90957527.damop) + c:RegisterEffect(e3) + --special summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(90957527,1)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_PHASE+PHASE_BATTLE) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c90957527.spcon) + e4:SetCost(c90957527.spcost) + e4:SetTarget(c90957527.sptg) + e4:SetOperation(c90957527.spop) + c:RegisterEffect(e4) +end +function c90957527.splimit(e,se,sp,st) + return e:GetHandler():GetLocation()~=LOCATION_EXTRA +end +function c90957527.spfilter1(c,tp) + return c:IsFusionCode(79580323) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c90957527.spfilter2,tp,LOCATION_MZONE,0,1,c) +end +function c90957527.spfilter2(c) + return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() +end +function c90957527.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c90957527.spfilter1,tp,LOCATION_ONFIELD,0,1,nil,tp) +end +function c90957527.sprop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(90957527,2)) + local g1=Duel.SelectMatchingCard(tp,c90957527.spfilter1,tp,LOCATION_ONFIELD,0,1,1,nil,tp) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(90957527,3)) + local g2=Duel.SelectMatchingCard(tp,c90957527.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) + g1:Merge(g2) + local tc=g1:GetFirst() + while tc do + if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end + tc=g1:GetNext() + end + Duel.SendtoDeck(g1,nil,2,REASON_COST) +end +function c90957527.damcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if c==a then + e:SetLabel(d:GetDefense()) + return c:IsRelateToBattle() and d:GetLocation()==LOCATION_GRAVE and d:IsType(TYPE_MONSTER) + else + e:SetLabel(a:GetDefense()) + return c:IsRelateToBattle() and a:GetLocation()==LOCATION_GRAVE and a:IsType(TYPE_MONSTER) + end +end +function c90957527.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local d=e:GetLabel() + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(d) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,d) +end +function c90957527.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c90957527.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 +end +function c90957527.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsAbleToExtraAsCost() end + Duel.SendtoDeck(c,nil,0,REASON_COST) +end +function c90957527.filter(c,e,tp) + return not c:IsCode(79580323) and c:IsSetCard(0x19) and c:IsCanBeSpecialSummoned(e,121,tp,false,false) +end +function c90957527.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c90957527.filter,tp,LOCATION_DECK,0,2,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) +end +function c90957527.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local g=Duel.GetMatchingGroup(c90957527.filter,tp,LOCATION_DECK,0,nil,e,tp) + if g:GetCount()>=2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + local tc=sg:GetFirst() + Duel.SpecialSummonStep(tc,121,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + tc=sg:GetNext() + Duel.SpecialSummonStep(tc,121,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(tc:GetOriginalCode(),RESET_EVENT+0x1ff0000,0,0) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c90960358.lua b/script/c90960358.lua index f126f62c..46eb303b 100644 --- a/script/c90960358.lua +++ b/script/c90960358.lua @@ -1,97 +1,97 @@ ---トゥーン・ブラック・マジシャン・ガール -function c90960358.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c90960358.spcon) - e2:SetOperation(c90960358.spop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetCondition(c90960358.sdescon) - e3:SetOperation(c90960358.sdesop) - c:RegisterEffect(e3) - --direct attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DIRECT_ATTACK) - e4:SetCondition(c90960358.dircon) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e5:SetCondition(c90960358.atcon) - e5:SetValue(c90960358.atlimit) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e6:SetCondition(c90960358.atcon) - c:RegisterEffect(e6) - --cannot attack - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e7:SetCode(EVENT_SUMMON_SUCCESS) - e7:SetOperation(c90960358.atklimit) - c:RegisterEffect(e7) - --atkup - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_SINGLE) - e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e8:SetCode(EFFECT_UPDATE_ATTACK) - e8:SetRange(LOCATION_MZONE) - e8:SetValue(c90960358.val) - c:RegisterEffect(e8) -end -function c90960358.cfilter(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c90960358.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.IsExistingMatchingCard(c90960358.cfilter,tp,LOCATION_ONFIELD,0,1,nil) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,nil,1,nil) -end -function c90960358.spop(e,tp,eg,ep,ev,re,r,rp,c) - local tp=c:GetControler() - local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c90960358.sfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c90960358.sdescon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c90960358.sfilter,1,nil) -end -function c90960358.sdesop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c90960358.atkfilter(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c90960358.dircon(e) - return not Duel.IsExistingMatchingCard(c90960358.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c90960358.atcon(e) - return Duel.IsExistingMatchingCard(c90960358.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c90960358.atlimit(e,c) - return not c:IsType(TYPE_TOON) or c:IsFacedown() -end -function c90960358.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c90960358.val(e,c) - return Duel.GetMatchingGroupCount(Card.IsCode,c:GetControler(),LOCATION_GRAVE,LOCATION_GRAVE,nil,46986414,30208479)*300 -end +--トゥーン・ブラック・マジシャン・ガール +function c90960358.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c90960358.spcon) + e2:SetOperation(c90960358.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c90960358.sdescon) + e3:SetOperation(c90960358.sdesop) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetCondition(c90960358.dircon) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e5:SetCondition(c90960358.atcon) + e5:SetValue(c90960358.atlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e6:SetCondition(c90960358.atcon) + c:RegisterEffect(e6) + --cannot attack + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_SUMMON_SUCCESS) + e7:SetOperation(c90960358.atklimit) + c:RegisterEffect(e7) + --atkup + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e8:SetCode(EFFECT_UPDATE_ATTACK) + e8:SetRange(LOCATION_MZONE) + e8:SetValue(c90960358.val) + c:RegisterEffect(e8) +end +function c90960358.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c90960358.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.IsExistingMatchingCard(c90960358.cfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,nil,1,nil) +end +function c90960358.spop(e,tp,eg,ep,ev,re,r,rp,c) + local tp=c:GetControler() + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c90960358.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c90960358.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c90960358.sfilter,1,nil) +end +function c90960358.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c90960358.atkfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c90960358.dircon(e) + return not Duel.IsExistingMatchingCard(c90960358.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c90960358.atcon(e) + return Duel.IsExistingMatchingCard(c90960358.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c90960358.atlimit(e,c) + return not c:IsType(TYPE_TOON) or c:IsFacedown() +end +function c90960358.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c90960358.val(e,c) + return Duel.GetMatchingGroupCount(Card.IsCode,c:GetControler(),LOCATION_GRAVE,LOCATION_GRAVE,nil,46986414,30208479)*300 +end diff --git a/script/c91034681.lua b/script/c91034681.lua new file mode 100644 index 00000000..9400d2f9 --- /dev/null +++ b/script/c91034681.lua @@ -0,0 +1,57 @@ +--デストーイ・デアデビル +function c91034681.initial_effect(c) + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xc3),aux.FilterBoolFunction(Card.IsFusionSetCard,0xa9),true) + --damage after destroying + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(91034681,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCondition(aux.bdocon) + e1:SetTarget(c91034681.damtg1) + e1:SetOperation(c91034681.damop1) + c:RegisterEffect(e1) + --damage after destruction + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(91034681,1)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1,91034681) + e2:SetCondition(c91034681.damcon2) + e2:SetTarget(c91034681.damtg2) + e2:SetOperation(c91034681.damop2) + c:RegisterEffect(e2) +end +function c91034681.damtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c91034681.damop1(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c91034681.damcon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (c:IsReason(REASON_BATTLE) or (c:GetReasonPlayer()~=tp and c:IsReason(REASON_EFFECT))) + and c:IsPreviousPosition(POS_FACEUP) +end +function c91034681.damfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0xad) +end +function c91034681.damtg2(e,tp,eg,ep,ev,re,r,rp,chk) + local gc=Duel.GetMatchingGroupCount(c91034681.damfilter,tp,LOCATION_GRAVE,0,nil) + if chk==0 then return gc>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,gc*500) +end +function c91034681.damop2(e,tp,eg,ep,ev,re,r,rp) + local gc=Duel.GetMatchingGroupCount(c91034681.damfilter,tp,LOCATION_GRAVE,0,nil) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,gc*500,REASON_EFFECT) +end diff --git a/script/c91070115.lua b/script/c91070115.lua index d6a42341..e028091e 100644 --- a/script/c91070115.lua +++ b/script/c91070115.lua @@ -1,58 +1,58 @@ ---エーリアン・テレパス -function c91070115.initial_effect(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(91070115,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c91070115.descost) - e1:SetTarget(c91070115.destg) - e1:SetOperation(c91070115.desop) - c:RegisterEffect(e1) - --atk def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCondition(c91070115.adcon) - e2:SetTarget(c91070115.adtg) - e2:SetValue(c91070115.adval) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end -function c91070115.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsCanRemoveCounter(tp,0,1,0x100e,1,REASON_COST) end - Duel.RemoveCounter(tp,0,1,0x100e,1,REASON_COST) -end -function c91070115.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c91070115.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c91070115.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c91070115.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c91070115.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c91070115.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c91070115.adcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c91070115.adtg(e,c) - local bc=c:GetBattleTarget() - return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) -end -function c91070115.adval(e,c) - return c:GetCounter(0x100e)*-300 -end +--エーリアン・テレパス +function c91070115.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(91070115,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c91070115.descost) + e1:SetTarget(c91070115.destg) + e1:SetOperation(c91070115.desop) + c:RegisterEffect(e1) + --atk def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCondition(c91070115.adcon) + e2:SetTarget(c91070115.adtg) + e2:SetValue(c91070115.adval) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end +function c91070115.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsCanRemoveCounter(tp,0,1,0x100e,1,REASON_COST) end + Duel.RemoveCounter(tp,0,1,0x100e,1,REASON_COST) +end +function c91070115.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c91070115.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c91070115.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c91070115.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c91070115.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c91070115.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c91070115.adcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() +end +function c91070115.adtg(e,c) + local bc=c:GetBattleTarget() + return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) +end +function c91070115.adval(e,c) + return c:GetCounter(0x100e)*-300 +end diff --git a/script/c91078716.lua b/script/c91078716.lua index 2a1c3784..31a8aa58 100644 --- a/script/c91078716.lua +++ b/script/c91078716.lua @@ -1,62 +1,61 @@ ---ポリノシス -function c91078716.initial_effect(c) - --Activate(summon) - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_SUMMON) - e1:SetCondition(c91078716.condition1) - e1:SetCost(c91078716.cost) - e1:SetTarget(c91078716.target1) - e1:SetOperation(c91078716.activate1) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON) - c:RegisterEffect(e2) - --Activate(effect) - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e3:SetType(EFFECT_TYPE_ACTIVATE) - e3:SetCode(EVENT_CHAINING) - e3:SetCondition(c91078716.condition2) - e3:SetCost(c91078716.cost) - e3:SetTarget(c91078716.target2) - e3:SetOperation(c91078716.activate2) - c:RegisterEffect(e3) -end -function c91078716.condition1(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentChain()==0 -end -function c91078716.filter(c) - return c:IsRace(RACE_PLANT) and not c:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c91078716.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,c91078716.filter,1,nil) end - local g=Duel.SelectReleaseGroup(tp,c91078716.filter,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c91078716.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) -end -function c91078716.activate1(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateSummon(eg) - Duel.Destroy(eg,REASON_EFFECT) -end -function c91078716.condition2(e,tp,eg,ep,ev,re,r,rp) - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c91078716.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c91078716.activate2(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--ポリノシス +function c91078716.initial_effect(c) + --Activate(summon) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SUMMON) + e1:SetCondition(c91078716.condition1) + e1:SetCost(c91078716.cost) + e1:SetTarget(c91078716.target1) + e1:SetOperation(c91078716.activate1) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON) + c:RegisterEffect(e2) + --Activate(effect) + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_ACTIVATE) + e3:SetCode(EVENT_CHAINING) + e3:SetCondition(c91078716.condition2) + e3:SetCost(c91078716.cost) + e3:SetTarget(c91078716.target2) + e3:SetOperation(c91078716.activate2) + c:RegisterEffect(e3) +end +function c91078716.condition1(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 +end +function c91078716.filter(c) + return c:IsRace(RACE_PLANT) and not c:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c91078716.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,c91078716.filter,1,nil) end + local g=Duel.SelectReleaseGroup(tp,c91078716.filter,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c91078716.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c91078716.activate1(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) +end +function c91078716.condition2(e,tp,eg,ep,ev,re,r,rp) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c91078716.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c91078716.activate2(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c9113513.lua b/script/c9113513.lua new file mode 100644 index 00000000..83be2cb9 --- /dev/null +++ b/script/c9113513.lua @@ -0,0 +1,132 @@ +--オスティナート +function c9113513.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c9113513.condition) + e1:SetTarget(c9113513.target) + e1:SetOperation(c9113513.activate) + c:RegisterEffect(e1) +end +function c9113513.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c9113513.filter1(c,e,tp,mg,f,chkf) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() + and mg:IsExists(c9113513.filter2,1,c,e,tp,c,f,chkf) +end +function c9113513.filter2(c,e,tp,mc,f,chkf) + local mg=Group.FromCards(c,mc) + return c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c9113513.ffilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg,f,chkf) +end +function c9113513.ffilter(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9b) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c9113513.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil) + local res=mg1:IsExists(c9113513.filter1,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=mg2:IsExists(c9113513.filter1,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c9113513.filter0(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c9113513.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c9113513.filter0,tp,LOCATION_HAND+LOCATION_DECK,0,nil,e) + local g1=mg1:Filter(c9113513.filter1,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local g2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + g2=mg2:Filter(c9113513.filter1,nil,e,tp,mg2,mf,chkf) + end + local tc=nil + if g2~=nil and g2:GetCount()>0 and (g1:GetCount()==0 or Duel.SelectYesNo(tp,ce:GetDescription())) then + local mf=ce:GetValue() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg1=mg2:FilterSelect(tp,c9113513.filter1,1,1,nil,e,tp,mg2,mf,chkf) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg2=mg2:FilterSelect(tp,c9113513.filter2,1,1,nil,e,tp,sg1:GetFirst(),mf,chkf) + sg1:Merge(sg2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c9113513.ffilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,sg1,mf,chkf) + tc=sg:GetFirst() + local fop=ce:GetOperation() + fop(ce,e,tp,tc,sg1) + elseif g1:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg1=mg1:FilterSelect(tp,c9113513.filter1,1,1,nil,e,tp,mg1,nil,chkf) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local sg2=mg1:FilterSelect(tp,c9113513.filter2,1,1,nil,e,tp,sg1:GetFirst(),nil,chkf) + sg1:Merge(sg2) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,c9113513.ffilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,sg1,nil,chkf) + tc=sg:GetFirst() + tc:SetMaterial(sg1) + Duel.SendtoGrave(sg1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + end + if tc then + tc:RegisterFlagEffect(9113513,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc:CompleteProcedure() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabelObject(tc) + e1:SetCondition(c9113513.descon) + e1:SetOperation(c9113513.desop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c9113513.descon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffect(9113513)~=0 then + return true + else + e:Reset() + return false + end +end +function c9113513.mgfilter(c,e,tp,fusc,mg) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) + and bit.band(c:GetReason(),0x40008)==0x40008 and c:GetReasonCard()==fusc + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and fusc:CheckFusionMaterial(mg,c) +end +function c9113513.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local mg=tc:GetMaterial() + local sumtype=tc:GetSummonType() + if Duel.Destroy(tc,REASON_EFFECT)~=0 + and bit.band(sumtype,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION and mg:GetCount()>0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>=mg:GetCount() + and mg:IsExists(aux.NecroValleyFilter(c9113513.mgfilter),mg:GetCount(),nil,e,tp,tc,mg) + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.SelectYesNo(tp,aux.Stringid(9113513,0)) then + Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c91188343.lua b/script/c91188343.lua index 37a77bb9..72ac2284 100644 --- a/script/c91188343.lua +++ b/script/c91188343.lua @@ -1,37 +1,37 @@ ---神秘の代行者 アース -function c91188343.initial_effect(c) - --search - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(91188343,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c91188343.tg) - e1:SetOperation(c91188343.op) - c:RegisterEffect(e1) -end -function c91188343.filter1(c) - return c:IsSetCard(0x44) and c:GetCode()~=91188343 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c91188343.filter2(c) - return ((c:IsSetCard(0x44) and c:GetCode()~=91188343 and c:IsType(TYPE_MONSTER)) or c:IsCode(55794644)) and c:IsAbleToHand() -end -function c91188343.tg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if not Duel.IsEnvironment(56433456) then - return Duel.IsExistingMatchingCard(c91188343.filter1,tp,LOCATION_DECK,0,1,nil) end - return Duel.IsExistingMatchingCard(c91188343.filter2,tp,LOCATION_DECK,0,1,nil) - end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c91188343.op(e,tp,eg,ep,ev,re,r,rp) - local g=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - if not Duel.IsEnvironment(56433456) then - g=Duel.SelectMatchingCard(tp,c91188343.filter1,tp,LOCATION_DECK,0,1,1,nil) - else g=Duel.SelectMatchingCard(tp,c91188343.filter2,tp,LOCATION_DECK,0,1,1,nil) end - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--神秘の代行者 アース +function c91188343.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(91188343,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c91188343.tg) + e1:SetOperation(c91188343.op) + c:RegisterEffect(e1) +end +function c91188343.filter1(c) + return c:IsSetCard(0x44) and c:GetCode()~=91188343 and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c91188343.filter2(c) + return ((c:IsSetCard(0x44) and c:GetCode()~=91188343 and c:IsType(TYPE_MONSTER)) or c:IsCode(55794644)) and c:IsAbleToHand() +end +function c91188343.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + if not Duel.IsEnvironment(56433456) then + return Duel.IsExistingMatchingCard(c91188343.filter1,tp,LOCATION_DECK,0,1,nil) end + return Duel.IsExistingMatchingCard(c91188343.filter2,tp,LOCATION_DECK,0,1,nil) + end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c91188343.op(e,tp,eg,ep,ev,re,r,rp) + local g=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + if not Duel.IsEnvironment(56433456) then + g=Duel.SelectMatchingCard(tp,c91188343.filter1,tp,LOCATION_DECK,0,1,1,nil) + else g=Duel.SelectMatchingCard(tp,c91188343.filter2,tp,LOCATION_DECK,0,1,1,nil) end + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c91258852.lua b/script/c91258852.lua new file mode 100644 index 00000000..d3c2b6cf --- /dev/null +++ b/script/c91258852.lua @@ -0,0 +1,65 @@ +--SPYRAL Master Plan +function c91258852.initial_effect(c) + --search + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(91258852,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c91258852.thtg1) + e1:SetOperation(c91258852.thop1) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(91258852,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCountLimit(1,91258852) + e2:SetCondition(c91258852.thcon2) + e2:SetTarget(c91258852.thtg2) + e2:SetOperation(c91258852.thop2) + c:RegisterEffect(e2) +end +function c91258852.thfilter1(c) + return c:IsSetCard(0x20ee) and c:IsAbleToHand() +end +function c91258852.thtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c91258852.thfilter1,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c91258852.thop1(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c91258852.thfilter1,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c91258852.thcon2(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c91258852.thfilter2(c,tp) + return c:IsCode(54631665) and c:IsAbleToHand() + and Duel.IsExistingMatchingCard(c91258852.thfilter3,tp,LOCATION_DECK,0,1,c) +end +function c91258852.thfilter3(c) + return c:IsSetCard(0xee) and c:IsType(TYPE_MONSTER) and not c:IsCode(91258852) and c:IsAbleToHand() +end +function c91258852.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c91258852.thfilter2,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c91258852.thop2(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g1=Duel.SelectMatchingCard(tp,c91258852.thfilter2,tp,LOCATION_DECK,0,1,1,nil,tp) + if g1:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g2=Duel.SelectMatchingCard(tp,c91258852.thfilter3,tp,LOCATION_DECK,0,1,1,g1:GetFirst()) + g1:Merge(g2) + Duel.SendtoHand(g1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g1) + end +end diff --git a/script/c9126351.lua b/script/c9126351.lua index d5e48bd4..ef145e75 100644 --- a/script/c9126351.lua +++ b/script/c9126351.lua @@ -1,86 +1,87 @@ ---鬼ガエル -function c9126351.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c9126351.spcon) - e1:SetOperation(c9126351.spop) - c:RegisterEffect(e1) - --send to grave - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOGRAVE) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetTarget(c9126351.target) - e2:SetOperation(c9126351.operation) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) - c:RegisterEffect(e3) - local e4=e2:Clone() - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e4) - --extra summon - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetCost(c9126351.excost) - e5:SetTarget(c9126351.extg) - e5:SetOperation(c9126351.exop) - c:RegisterEffect(e5) -end -function c9126351.spfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsAttribute(ATTRIBUTE_WATER) -end -function c9126351.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c9126351.spfilter,tp,LOCATION_HAND,0,1,c) -end -function c9126351.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) - local g=Duel.SelectMatchingCard(tp,c9126351.spfilter,tp,LOCATION_HAND,0,1,1,c) - Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) -end -function c9126351.tgfilter(c) - return c:IsLevelBelow(2) and c:IsAttribute(ATTRIBUTE_WATER) and c:IsRace(RACE_AQUA) and c:IsAbleToGrave() -end -function c9126351.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c9126351.tgfilter,tp,LOCATION_DECK+LOCATION_MZONE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK+LOCATION_MZONE) -end -function c9126351.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c9126351.tgfilter,tp,LOCATION_DECK+LOCATION_MZONE,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end -function c9126351.excost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetFlagEffect(tp,9126352)==0 and Duel.IsExistingMatchingCard(Card.IsAbleToHandAsCost,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHandAsCost,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoHand(g,nil,REASON_COST) - Duel.RegisterFlagEffect(tp,9126352,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) -end -function c9126351.extg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanSummon(tp) end -end -function c9126351.exop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetTarget(c9126351.estg) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c9126351.estg(e,c) - return c:IsSetCard(0x12) and c:GetCode()~=9126351 -end +--鬼ガエル +function c9126351.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c9126351.spcon) + e1:SetOperation(c9126351.spop) + c:RegisterEffect(e1) + --send to grave + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetTarget(c9126351.target) + e2:SetOperation(c9126351.operation) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e4) + --extra summon + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetCost(c9126351.excost) + e5:SetTarget(c9126351.extg) + e5:SetOperation(c9126351.exop) + c:RegisterEffect(e5) +end +function c9126351.spfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsAttribute(ATTRIBUTE_WATER) +end +function c9126351.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c9126351.spfilter,tp,LOCATION_HAND,0,1,c) +end +function c9126351.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,c9126351.spfilter,tp,LOCATION_HAND,0,1,1,c) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c9126351.tgfilter(c) + return c:IsLevelBelow(2) and c:IsAttribute(ATTRIBUTE_WATER) and c:IsRace(RACE_AQUA) + and (c:IsLocation(LOCATION_DECK) or c:IsFaceup()) and c:IsAbleToGrave() +end +function c9126351.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c9126351.tgfilter,tp,LOCATION_DECK+LOCATION_MZONE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK+LOCATION_MZONE) +end +function c9126351.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c9126351.tgfilter,tp,LOCATION_DECK+LOCATION_MZONE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c9126351.excost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFlagEffect(tp,9126352)==0 and Duel.IsExistingMatchingCard(Card.IsAbleToHandAsCost,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHandAsCost,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) + Duel.RegisterFlagEffect(tp,9126352,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) +end +function c9126351.extg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanSummon(tp) end +end +function c9126351.exop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetTarget(c9126351.estg) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c9126351.estg(e,c) + return c:IsSetCard(0x12) and c:GetCode()~=9126351 +end diff --git a/script/c91279700.lua b/script/c91279700.lua index 45ca3025..0925c1aa 100644 --- a/script/c91279700.lua +++ b/script/c91279700.lua @@ -16,6 +16,7 @@ function c91279700.initial_effect(c) --search local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(91279700,0)) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) diff --git a/script/c91345518.lua b/script/c91345518.lua index 24f0417c..34a1a03f 100644 --- a/script/c91345518.lua +++ b/script/c91345518.lua @@ -1,38 +1,38 @@ ---裁きの代行者 サターン -function c91345518.initial_effect(c) - --damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(91345518,0)) - e1:SetCategory(CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c91345518.damcost) - e1:SetTarget(c91345518.damtg) - e1:SetOperation(c91345518.damop) - c:RegisterEffect(e1) -end -function c91345518.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 and e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) -end -function c91345518.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLP(tp)>Duel.GetLP(1-tp) end - Duel.SetTargetPlayer(1-tp) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) -end -function c91345518.damop(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsEnvironment(56433456,tp) then return end - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local val=Duel.GetLP(1-p)-Duel.GetLP(p) - if val>0 then - Duel.Damage(p,val,REASON_EFFECT) - end -end +--裁きの代行者 サターン +function c91345518.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(91345518,0)) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c91345518.damcost) + e1:SetTarget(c91345518.damtg) + e1:SetOperation(c91345518.damop) + c:RegisterEffect(e1) +end +function c91345518.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCurrentPhase()~=PHASE_MAIN2 and e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_BP) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) +end +function c91345518.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLP(tp)>Duel.GetLP(1-tp) end + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c91345518.damop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsEnvironment(56433456,tp) then return end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local val=Duel.GetLP(1-p)-Duel.GetLP(p) + if val>0 then + Duel.Damage(p,val,REASON_EFFECT) + end +end diff --git a/script/c91420254.lua b/script/c91420254.lua index 3ba88d5b..0b3f7d32 100644 --- a/script/c91420254.lua +++ b/script/c91420254.lua @@ -1,73 +1,73 @@ ---妖仙獣 右鎌神柱 -function c91420254.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --scale change - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(91420254,0)) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetCondition(c91420254.sccon) - e2:SetOperation(c91420254.scop) - c:RegisterEffect(e2) - --to defense - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(91420254,1)) - e3:SetCategory(CATEGORY_POSITION) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetTarget(c91420254.postg) - e3:SetOperation(c91420254.posop) - c:RegisterEffect(e3) - --cannot be battle target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(0,LOCATION_MZONE) - e4:SetValue(c91420254.bttg) - c:RegisterEffect(e4) -end -function c91420254.sccon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) - return tc and tc:IsSetCard(0xb3) -end -function c91420254.scop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LSCALE) - e1:SetValue(11) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_CHANGE_RSCALE) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetTargetRange(1,0) - e3:SetTarget(c91420254.splimit) - e3:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e3,tp) -end -function c91420254.splimit(e,c) - return not c:IsSetCard(0xb3) -end -function c91420254.postg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAttackPos() end - Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) -end -function c91420254.posop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsPosition(POS_FACEUP_ATTACK) and c:IsRelateToEffect(e) then - Duel.ChangePosition(c,POS_FACEUP_DEFENSE) - end -end -function c91420254.bttg(e,c) - return c:IsFaceup() and c:IsSetCard(0xb3) and c~=e:GetHandler() -end +--妖仙獣 右鎌神柱 +function c91420254.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --scale change + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(91420254,0)) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c91420254.sccon) + e2:SetOperation(c91420254.scop) + c:RegisterEffect(e2) + --to defense + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(91420254,1)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetTarget(c91420254.postg) + e3:SetOperation(c91420254.posop) + c:RegisterEffect(e3) + --cannot be battle target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(0,LOCATION_MZONE) + e4:SetValue(c91420254.bttg) + c:RegisterEffect(e4) +end +function c91420254.sccon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) + return tc and tc:IsSetCard(0xb3) +end +function c91420254.scop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LSCALE) + e1:SetValue(11) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetTargetRange(1,0) + e3:SetTarget(c91420254.splimit) + e3:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e3,tp) +end +function c91420254.splimit(e,c) + return not c:IsSetCard(0xb3) +end +function c91420254.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAttackPos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c91420254.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsPosition(POS_FACEUP_ATTACK) and c:IsRelateToEffect(e) then + Duel.ChangePosition(c,POS_FACEUP_DEFENSE) + end +end +function c91420254.bttg(e,c) + return c:IsFaceup() and c:IsSetCard(0xb3) and c~=e:GetHandler() +end diff --git a/script/c91438994.lua b/script/c91438994.lua index c69b8b9a..54e064ae 100644 --- a/script/c91438994.lua +++ b/script/c91438994.lua @@ -1,78 +1,78 @@ ---A・ジェネクス・ベルフレイム -function c91438994.initial_effect(c) - c:EnableCounterPermit(0xa) - --add counter - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetRange(LOCATION_MZONE) - e1:SetOperation(c91438994.addc1) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_REMOVE) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c91438994.addc2) - c:RegisterEffect(e2) - --attackup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c91438994.attackup) - c:RegisterEffect(e3) - --damage - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_LEAVE_FIELD_P) - e4:SetOperation(c91438994.damp) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(91438994,0)) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e5:SetCategory(CATEGORY_DAMAGE) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetCode(EVENT_BATTLE_DESTROYED) - e5:SetCondition(c91438994.damcon) - e5:SetTarget(c91438994.damtg) - e5:SetOperation(c91438994.damop) - e5:SetLabelObject(e4) - c:RegisterEffect(e5) -end -function c91438994.filter1(c,tp) - return c:GetPreviousControler()==tp and c:GetPreviousLocation()==LOCATION_MZONE -end -function c91438994.addc1(e,tp,eg,ep,ev,re,r,rp) - if eg:IsExists(c91438994.filter1,1,nil,tp) then - e:GetHandler():AddCounter(0xa,1) - end -end -function c91438994.filter2(c,tp) - return c:GetPreviousControler()~=tp and c:GetPreviousLocation()==LOCATION_GRAVE -end -function c91438994.addc2(e,tp,eg,ep,ev,re,r,rp) - if eg:IsExists(c91438994.filter2,1,nil,tp) then - e:GetHandler():AddCounter(0xa,2) - end -end -function c91438994.attackup(e,c) - return c:GetCounter(0xa)*100 -end -function c91438994.damp(e,tp,eg,ep,ev,re,r,rp) - e:SetLabel(e:GetHandler():GetCounter(0xa)) -end -function c91438994.damcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c91438994.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - local ct=e:GetLabelObject():GetLabel() - if chk==0 then return ct~=0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(ct*300) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) -end -function c91438994.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--A・ジェネクス・ベルフレイム +function c91438994.initial_effect(c) + c:EnableCounterPermit(0xa) + --add counter + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetRange(LOCATION_MZONE) + e1:SetOperation(c91438994.addc1) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_REMOVE) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c91438994.addc2) + c:RegisterEffect(e2) + --attackup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c91438994.attackup) + c:RegisterEffect(e3) + --damage + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_LEAVE_FIELD_P) + e4:SetOperation(c91438994.damp) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(91438994,0)) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCategory(CATEGORY_DAMAGE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EVENT_BATTLE_DESTROYED) + e5:SetCondition(c91438994.damcon) + e5:SetTarget(c91438994.damtg) + e5:SetOperation(c91438994.damop) + e5:SetLabelObject(e4) + c:RegisterEffect(e5) +end +function c91438994.filter1(c,tp) + return c:GetPreviousControler()==tp and c:GetPreviousLocation()==LOCATION_MZONE +end +function c91438994.addc1(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(c91438994.filter1,1,nil,tp) then + e:GetHandler():AddCounter(0xa,1) + end +end +function c91438994.filter2(c,tp) + return c:GetPreviousControler()~=tp and c:GetPreviousLocation()==LOCATION_GRAVE +end +function c91438994.addc2(e,tp,eg,ep,ev,re,r,rp) + if eg:IsExists(c91438994.filter2,1,nil,tp) then + e:GetHandler():AddCounter(0xa,2) + end +end +function c91438994.attackup(e,c) + return c:GetCounter(0xa)*100 +end +function c91438994.damp(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(e:GetHandler():GetCounter(0xa)) +end +function c91438994.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c91438994.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=e:GetLabelObject():GetLabel() + if chk==0 then return ct~=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(ct*300) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,ct*300) +end +function c91438994.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c91499077.lua b/script/c91499077.lua index cbb1e695..23055903 100644 --- a/script/c91499077.lua +++ b/script/c91499077.lua @@ -8,7 +8,7 @@ function c91499077.initial_effect(c) e1:SetDescription(aux.Stringid(91499077,0)) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c91499077.atcon) e1:SetCost(c91499077.atcost) diff --git a/script/c91559748.lua b/script/c91559748.lua index e4e8c2e7..c8c8a73e 100644 --- a/script/c91559748.lua +++ b/script/c91559748.lua @@ -1,39 +1,39 @@ ---棘の妖精 -function c91559748.initial_effect(c) - --change position - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(91559748,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_DAMAGE_STEP_END) - e1:SetCondition(c91559748.cpcon) - e1:SetTarget(c91559748.cptg) - e1:SetOperation(c91559748.cpop) - c:RegisterEffect(e1) - --cannot be battle target - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(0,LOCATION_MZONE) - e2:SetValue(c91559748.tg) - c:RegisterEffect(e2) -end -function c91559748.tg(e,c) - return c:IsFaceup() and c:IsRace(RACE_INSECT) -end -function c91559748.cpcon(e,tp,eg,ep,ev,re,r,rp) - local t=e:GetHandler():GetBattleTarget() - e:SetLabelObject(t) - return t and t:IsRelateToBattle() -end -function c91559748.cptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetLabelObject(),1,0,0) -end -function c91559748.cpop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if g:IsRelateToBattle() and g:IsAttackPos() then - Duel.ChangePosition(g,POS_FACEUP_DEFENSE) - end -end +--棘の妖精 +function c91559748.initial_effect(c) + --change position + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(91559748,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetCondition(c91559748.cpcon) + e1:SetTarget(c91559748.cptg) + e1:SetOperation(c91559748.cpop) + c:RegisterEffect(e1) + --cannot be battle target + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(0,LOCATION_MZONE) + e2:SetValue(c91559748.tg) + c:RegisterEffect(e2) +end +function c91559748.tg(e,c) + return c:IsFaceup() and c:IsRace(RACE_INSECT) +end +function c91559748.cpcon(e,tp,eg,ep,ev,re,r,rp) + local t=e:GetHandler():GetBattleTarget() + e:SetLabelObject(t) + return t and t:IsRelateToBattle() +end +function c91559748.cptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetLabelObject(),1,0,0) +end +function c91559748.cpop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if g:IsRelateToBattle() and g:IsAttackPos() then + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c91580102.lua b/script/c91580102.lua index ee7bd3b4..12a9a8a6 100644 --- a/script/c91580102.lua +++ b/script/c91580102.lua @@ -1,14 +1,6 @@ --レプティレス・アンガー function c91580102.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(c91580102.target) - e1:SetOperation(c91580102.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk,race local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,13 +12,6 @@ function c91580102.initial_effect(c) e3:SetCode(EFFECT_CHANGE_RACE) e3:SetValue(RACE_REPTILE) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) --atkdown local e5=Effect.CreateEffect(c) e5:SetDescription(aux.Stringid(91580102,0)) @@ -39,19 +24,6 @@ function c91580102.initial_effect(c) e5:SetOperation(c91580102.atkop) c:RegisterEffect(e5) end -function c91580102.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 c91580102.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 c91580102.atkcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsReason(REASON_DESTROY) end diff --git a/script/c91584698.lua b/script/c91584698.lua index a04b3559..84127684 100644 --- a/script/c91584698.lua +++ b/script/c91584698.lua @@ -1,101 +1,101 @@ ---EMトランプ・ウィッチ -function c91584698.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetTarget(c91584698.sptg) - e2:SetOperation(c91584698.spop) - c:RegisterEffect(e2) - --tohand - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_TOHAND) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCost(c91584698.thcost) - e3:SetTarget(c91584698.thtg) - e3:SetOperation(c91584698.thop) - c:RegisterEffect(e3) -end -function c91584698.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c91584698.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c91584698.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c91584698.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c91584698.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c91584698.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c91584698.filter1,tp,LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c91584698.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c91584698.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - end -end -function c91584698.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c91584698.thfilter(c) - return c:IsCode(24094653) and c:IsAbleToHand() -end -function c91584698.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c91584698.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c91584698.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c91584698.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--EMトランプ・ウィッチ +function c91584698.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetTarget(c91584698.sptg) + e2:SetOperation(c91584698.spop) + c:RegisterEffect(e2) + --tohand + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_TOHAND) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCost(c91584698.thcost) + e3:SetTarget(c91584698.thtg) + e3:SetOperation(c91584698.thop) + c:RegisterEffect(e3) +end +function c91584698.filter1(c,e) + return c:IsOnField() and not c:IsImmuneToEffect(e) +end +function c91584698.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c91584698.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil) + local res=Duel.IsExistingMatchingCard(c91584698.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c91584698.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c91584698.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c91584698.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c91584698.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c91584698.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end +end +function c91584698.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c91584698.thfilter(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c91584698.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c91584698.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c91584698.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c91584698.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c91588074.lua b/script/c91588074.lua new file mode 100644 index 00000000..6401559a --- /dev/null +++ b/script/c91588074.lua @@ -0,0 +1,79 @@ +--創星神 tierra +function c91588074.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c91588074.spcon) + e1:SetOperation(c91588074.spop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e2) + --cannot special summon + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --to deck + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(91588074,0)) + e4:SetCategory(CATEGORY_TODECK) + e4:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetTarget(c91588074.tdtg) + e4:SetOperation(c91588074.tdop) + c:RegisterEffect(e4) +end +function c91588074.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + local g=Duel.GetMatchingGroup(Card.IsAbleToDeckOrExtraAsCost,c:GetControler(),LOCATION_HAND+LOCATION_ONFIELD,0,c) + return g:GetClassCount(Card.GetCode)>=10 and (ft>0 or g:IsExists(Card.IsLocation,ct,nil,LOCATION_MZONE)) +end +function c91588074.spop(e,tp,eg,ep,ev,re,r,rp,c) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ct=-ft+1 + local g=Duel.GetMatchingGroup(Card.IsAbleToDeckOrExtraAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD,0,c) + local rg=Group.CreateGroup() + for i=1,10 do + local tc=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + if ct>0 then + tc=g:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() + else + tc=g:Select(tp,1,1,nil):GetFirst() + end + if tc then + rg:AddCard(tc) + g:Remove(Card.IsCode,nil,tc:GetCode()) + end + ct=ct-1 + end + local cg=rg:Filter(Card.IsFacedown,nil) + if cg:GetCount()>0 then + Duel.ConfirmCards(1-tp,cg) + end + Duel.SendtoDeck(rg,nil,2,REASON_COST) +end +function c91588074.tdfilter(c) + return (c:IsLocation(0x1e) or (c:IsFaceup() and c:IsType(TYPE_PENDULUM))) and c:IsAbleToDeck() +end +function c91588074.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c91588074.tdfilter,tp,0x5e,0x5e,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) + Duel.SetChainLimit(aux.FALSE) +end +function c91588074.tdop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c91588074.tdfilter,tp,0x5e,0x5e,e:GetHandler()) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end diff --git a/script/c91595718.lua b/script/c91595718.lua index 00c0622c..6ea3d657 100644 --- a/script/c91595718.lua +++ b/script/c91595718.lua @@ -1,14 +1,6 @@ --秘術の書 function c91595718.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(c91595718.target) - e1:SetOperation(c91595718.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c91595718.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c91595718.eqlimit) - c:RegisterEffect(e4) -end -function c91595718.eqlimit(e,c) - return c:IsRace(RACE_SPELLCASTER) -end -function c91595718.filter(c) - return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) -end -function c91595718.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c91595718.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c91595718.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c91595718.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c91595718.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 diff --git a/script/c91597389.lua b/script/c91597389.lua index 07ba5165..1ca1c039 100644 --- a/script/c91597389.lua +++ b/script/c91597389.lua @@ -14,7 +14,7 @@ function c91597389.filter(c,tp) return c:IsType(TYPE_UNION) and Duel.IsExistingMatchingCard(c91597389.filter2,tp,LOCATION_MZONE,0,1,nil,c) end function c91597389.filter2(c,eqc) - return c:IsFaceup() and c:GetUnionCount()==0 and eqc:CheckEquipTarget(c) + return c:IsFaceup() and eqc:CheckEquipTarget(c) and aux.CheckUnionEquip(eqc,c) end function c91597389.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c91597389.filter(chkc,tp) end @@ -30,9 +30,9 @@ function c91597389.operation(e,tp,eg,ep,ev,re,r,rp) if tc:IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) local g=Duel.SelectMatchingCard(tp,c91597389.filter2,tp,LOCATION_MZONE,0,1,1,nil,tc) - if g:GetCount()>0 then - Duel.Equip(tp,tc,g:GetFirst()) - tc:SetStatus(STATUS_UNION,true) + local tc2=g:GetFirst() + if tc2 and aux.CheckUnionEquip(tc,tc2) and Duel.Equip(tp,tc,tc2) then + aux.SetUnionState(tc) end end end diff --git a/script/c91607976.lua b/script/c91607976.lua index d6c1d126..20493fd9 100644 --- a/script/c91607976.lua +++ b/script/c91607976.lua @@ -1,67 +1,67 @@ ---D・クロックン -function c91607976.initial_effect(c) - c:EnableCounterPermit(0x8) - --atk - 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(c91607976.cona) - e1:SetValue(c91607976.vala) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(91607976,0)) - e2:SetCategory(CATEGORY_COUNTER) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c91607976.cond1) - e2:SetOperation(c91607976.opd1) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(91607976,1)) - e3:SetCategory(CATEGORY_DAMAGE) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_MZONE) - e3:SetCondition(c91607976.cond2) - e3:SetCost(c91607976.costd2) - e3:SetTarget(c91607976.tgd2) - e3:SetOperation(c91607976.opd2) - c:RegisterEffect(e3) -end -function c91607976.cona(e) - return e:GetHandler():IsAttackPos() -end -function c91607976.vala(e,c) - return c:GetCounter(0x8)*500 -end -function c91607976.cond1(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsDisabled() and e:GetHandler():IsDefensePos() -end -function c91607976.opd1(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - e:GetHandler():AddCounter(0x8,1) - end -end -function c91607976.cond2(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsDisabled() and e:GetHandler():IsDefensePos() -end -function c91607976.costd2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - e:SetLabel(e:GetHandler():GetCounter(0x8)*1000) - Duel.Release(e:GetHandler(),REASON_COST) -end -function c91607976.tgd2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetCounter(0x8)>0 end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(e:GetLabel()) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) -end -function c91607976.opd2(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end +--D・クロックン +function c91607976.initial_effect(c) + c:EnableCounterPermit(0x8) + --atk + 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(c91607976.cona) + e1:SetValue(c91607976.vala) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(91607976,0)) + e2:SetCategory(CATEGORY_COUNTER) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c91607976.cond1) + e2:SetOperation(c91607976.opd1) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(91607976,1)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_MZONE) + e3:SetCondition(c91607976.cond2) + e3:SetCost(c91607976.costd2) + e3:SetTarget(c91607976.tgd2) + e3:SetOperation(c91607976.opd2) + c:RegisterEffect(e3) +end +function c91607976.cona(e) + return e:GetHandler():IsAttackPos() +end +function c91607976.vala(e,c) + return c:GetCounter(0x8)*500 +end +function c91607976.cond1(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsDisabled() and e:GetHandler():IsDefensePos() +end +function c91607976.opd1(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + e:GetHandler():AddCounter(0x8,1) + end +end +function c91607976.cond2(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsDisabled() and e:GetHandler():IsDefensePos() +end +function c91607976.costd2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + e:SetLabel(e:GetHandler():GetCounter(0x8)*1000) + Duel.Release(e:GetHandler(),REASON_COST) +end +function c91607976.tgd2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetCounter(0x8)>0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c91607976.opd2(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c9161357.lua b/script/c9161357.lua index ec8878fb..e17d6e56 100644 --- a/script/c9161357.lua +++ b/script/c9161357.lua @@ -18,6 +18,7 @@ function c9161357.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(9161357,1)) e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) e2:SetCost(c9161357.lpcost) diff --git a/script/c91650245.lua b/script/c91650245.lua index 15aadfc6..c67a0601 100644 --- a/script/c91650245.lua +++ b/script/c91650245.lua @@ -1,67 +1,67 @@ ---森羅の恵み -function c91650245.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c91650245.target) - e1:SetOperation(c91650245.activate) - c:RegisterEffect(e1) -end -function c91650245.filter(c,e,tp) - return c:IsAbleToDeck() and Duel.IsExistingMatchingCard(c91650245.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,c,e,tp) -end -function c91650245.spfilter(c,e,tp) - return c:IsSetCard(0x90) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c91650245.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c91650245.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c91650245.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,c91650245.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - local opt=Duel.SelectOption(tp,aux.Stringid(91650245,0),aux.Stringid(91650245,1)) - Duel.SendtoDeck(g,nil,opt,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=Duel.SelectMatchingCard(tp,c91650245.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,tc,e,tp) - local sc=sg:GetFirst() - if sc and not sc:IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetOperation(c91650245.tdop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - sc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(c91650245.efilter) - sc:RegisterEffect(e2) - end - end -end -function c91650245.tdop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsType(TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ) - or Duel.SelectOption(tp,aux.Stringid(91650245,0),aux.Stringid(91650245,1))==0 then - Duel.SendtoDeck(c,nil,0,REASON_EFFECT) - else - Duel.SendtoDeck(c,nil,1,REASON_EFFECT) - end -end -function c91650245.efilter(e,te) - return te:GetOwner()~=e:GetOwner() -end +--森羅の恵み +function c91650245.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c91650245.target) + e1:SetOperation(c91650245.activate) + c:RegisterEffect(e1) +end +function c91650245.filter(c,e,tp) + return c:IsAbleToDeck() and Duel.IsExistingMatchingCard(c91650245.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,c,e,tp) +end +function c91650245.spfilter(c,e,tp) + return c:IsSetCard(0x90) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c91650245.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c91650245.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c91650245.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c91650245.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + local opt=Duel.SelectOption(tp,aux.Stringid(91650245,0),aux.Stringid(91650245,1)) + Duel.SendtoDeck(g,nil,opt,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c91650245.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,tc,e,tp) + local sc=sg:GetFirst() + if sc then + Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetOperation(c91650245.tdop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + sc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(c91650245.efilter) + sc:RegisterEffect(e2) + end + end +end +function c91650245.tdop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsType(TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ) + or Duel.SelectOption(tp,aux.Stringid(91650245,0),aux.Stringid(91650245,1))==0 then + Duel.SendtoDeck(c,nil,0,REASON_EFFECT) + else + Duel.SendtoDeck(c,nil,1,REASON_EFFECT) + end +end +function c91650245.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end diff --git a/script/c91718579.lua b/script/c91718579.lua index a5a0082b..2863a814 100644 --- a/script/c91718579.lua +++ b/script/c91718579.lua @@ -1,87 +1,87 @@ ---ゴゴゴアリステラ&デクシア -function c91718579.initial_effect(c) - --untargetable - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetCondition(c91718579.tgcon) - e1:SetValue(c91718579.atlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x59)) - e2:SetCondition(c91718579.tgcon) - e2:SetValue(aux.tgoval) - c:RegisterEffect(e2) - --effect gain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_BE_MATERIAL) - e3:SetCondition(c91718579.effcon) - e3:SetOperation(c91718579.effop) - c:RegisterEffect(e3) -end -function c91718579.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x59) -end -function c91718579.tgcon(e) - return Duel.IsExistingMatchingCard(c91718579.cfilter,0,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) -end -function c91718579.atlimit(e,c) - return c:IsFaceup() and c:IsSetCard(0x59) -end -function c91718579.effcon(e,tp,eg,ep,ev,re,r,rp) - local mg=e:GetHandler():GetReasonCard():GetMaterial() - return r==REASON_XYZ and mg:IsExists(Card.IsSetCard,mg:GetCount(),nil,0x59) -end -function c91718579.effop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,91718579) - local c=e:GetHandler() - local rc=c:GetReasonCard() - local e1=Effect.CreateEffect(rc) - e1:SetDescription(aux.Stringid(91718579,0)) - e1:SetCategory(CATEGORY_POSITION+CATEGORY_DEFCHANGE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c91718579.poscon) - e1:SetTarget(c91718579.postg) - e1:SetOperation(c91718579.posop) - e1:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e1,true) - if not rc:IsType(TYPE_EFFECT) then - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_ADD_TYPE) - e2:SetValue(TYPE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - rc:RegisterEffect(e2,true) - end -end -function c91718579.poscon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ -end -function c91718579.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsPosition(POS_FACEUP_ATTACK) end - if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) -end -function c91718579.posop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsDefensePos() or not tc:IsRelateToEffect(e) then return end - if Duel.ChangePosition(tc,POS_FACEUP_DEFENSE)==0 then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_DEFENSE_FINAL) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(0) - tc:RegisterEffect(e1) -end +--ゴゴゴアリステラ&デクシア +function c91718579.initial_effect(c) + --untargetable + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetCondition(c91718579.tgcon) + e1:SetValue(c91718579.atlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x59)) + e2:SetCondition(c91718579.tgcon) + e2:SetValue(aux.tgoval) + c:RegisterEffect(e2) + --effect gain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_BE_MATERIAL) + e3:SetCondition(c91718579.effcon) + e3:SetOperation(c91718579.effop) + c:RegisterEffect(e3) +end +function c91718579.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x59) +end +function c91718579.tgcon(e) + return Duel.IsExistingMatchingCard(c91718579.cfilter,0,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) +end +function c91718579.atlimit(e,c) + return c:IsFaceup() and c:IsSetCard(0x59) +end +function c91718579.effcon(e,tp,eg,ep,ev,re,r,rp) + local mg=e:GetHandler():GetReasonCard():GetMaterial() + return r==REASON_XYZ and mg:IsExists(Card.IsSetCard,mg:GetCount(),nil,0x59) +end +function c91718579.effop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,91718579) + local c=e:GetHandler() + local rc=c:GetReasonCard() + local e1=Effect.CreateEffect(rc) + e1:SetDescription(aux.Stringid(91718579,0)) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_DEFCHANGE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c91718579.poscon) + e1:SetTarget(c91718579.postg) + e1:SetOperation(c91718579.posop) + e1:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e1,true) + if not rc:IsType(TYPE_EFFECT) then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetValue(TYPE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + rc:RegisterEffect(e2,true) + end +end +function c91718579.poscon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c91718579.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsExistingTarget(Card.IsPosition,tp,0,LOCATION_MZONE,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsPosition,tp,0,LOCATION_MZONE,1,1,nil,POS_FACEUP_ATTACK) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c91718579.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsDefensePos() or not tc:IsRelateToEffect(e) then return end + if Duel.ChangePosition(tc,POS_FACEUP_DEFENSE)==0 then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(0) + tc:RegisterEffect(e1) +end diff --git a/script/c91754175.lua b/script/c91754175.lua index 3f3e9f38..4fefdc91 100644 --- a/script/c91754175.lua +++ b/script/c91754175.lua @@ -1,41 +1,41 @@ ---犬タウルス -function c91754175.initial_effect(c) - --atk up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(91754175,0)) - e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c91754175.condition) - e1:SetTarget(c91754175.target) - e1:SetOperation(c91754175.operation) - c:RegisterEffect(e1) -end -function c91754175.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetBattleTarget() -end -function c91754175.tgfilter(c) - return c:IsRace(RACE_BEAST+RACE_BEASTWARRIOR+RACE_WINDBEAST) and c:IsAbleToGrave() -end -function c91754175.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c91754175.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND+LOCATION_DECK) -end -function c91754175.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c91754175.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) - local c=e:GetHandler() - local tc=g:GetFirst() - if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) - and c:IsRelateToBattle() and c:IsFaceup() then - local lv=tc:GetLevel() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(lv*100) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - c:RegisterEffect(e1) - end -end +--犬タウルス +function c91754175.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(91754175,0)) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c91754175.condition) + e1:SetTarget(c91754175.target) + e1:SetOperation(c91754175.operation) + c:RegisterEffect(e1) +end +function c91754175.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattleTarget() +end +function c91754175.tgfilter(c) + return c:IsRace(RACE_BEAST+RACE_BEASTWARRIOR+RACE_WINDBEAST) and c:IsAbleToGrave() +end +function c91754175.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c91754175.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c91754175.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c91754175.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) + local c=e:GetHandler() + local tc=g:GetFirst() + if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) + and c:IsRelateToBattle() and c:IsFaceup() then + local lv=tc:GetLevel() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(lv*100) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) + end +end diff --git a/script/c917796.lua b/script/c917796.lua index f5999855..bbdf13bf 100644 --- a/script/c917796.lua +++ b/script/c917796.lua @@ -1,33 +1,33 @@ ---ガガガタッグ -function c917796.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,917796+EFFECT_COUNT_CODE_OATH) - e1:SetTarget(c917796.target) - e1:SetOperation(c917796.activate) - c:RegisterEffect(e1) -end -function c917796.filter(c) - return c:IsFaceup() and c:IsSetCard(0x54) -end -function c917796.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c917796.filter,tp,LOCATION_MZONE,0,1,nil) end -end -function c917796.activate(e,tp,eg,ep,ev,re,r,rp) - local sg=Duel.GetMatchingGroup(c917796.filter,tp,LOCATION_MZONE,0,nil) - local atk=sg:GetCount()*500 - local c=e:GetHandler() - local tc=sg:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(atk) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,2) - tc:RegisterEffect(e1) - tc=sg:GetNext() - end -end +--ガガガタッグ +function c917796.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,917796+EFFECT_COUNT_CODE_OATH) + e1:SetTarget(c917796.target) + e1:SetOperation(c917796.activate) + c:RegisterEffect(e1) +end +function c917796.filter(c) + return c:IsFaceup() and c:IsSetCard(0x54) +end +function c917796.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c917796.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c917796.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c917796.filter,tp,LOCATION_MZONE,0,nil) + local atk=sg:GetCount()*500 + local c=e:GetHandler() + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(atk) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY,2) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end +end diff --git a/script/c91831066.lua b/script/c91831066.lua index 834d8b6e..53e5758a 100644 --- a/script/c91831066.lua +++ b/script/c91831066.lua @@ -1,83 +1,83 @@ ---水照明 -function c91831066.initial_effect(c) - c:SetUniqueOnField(1,0,91831066) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atk & def - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c91831066.atkcon) - e2:SetOperation(c91831066.atkop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCondition(c91831066.spcon) - e3:SetTarget(c91831066.sptg) - e3:SetOperation(c91831066.spop) - c:RegisterEffect(e3) -end -function c91831066.atkcon(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttacker() - local bc=Duel.GetAttackTarget() - if not bc then return false end - if bc:IsControler(1-tp) then bc=tc end - e:SetLabelObject(bc) - return bc:IsFaceup() and bc:IsSetCard(0xcd) -end -function c91831066.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=e:GetLabelObject() - if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsControler(tp) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(tc:GetAttack()*2) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE_FINAL) - e2:SetValue(tc:GetDefense()*2) - tc:RegisterEffect(e2) - end -end -function c91831066.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c91831066.spfilter(c,e,tp) - return c:IsRace(RACE_AQUA) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c91831066.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c91831066.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c91831066.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c91831066.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c91831066.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetTarget(c91831066.splimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c91831066.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return c:GetRace()~=RACE_AQUA -end +--水照明 +function c91831066.initial_effect(c) + c:SetUniqueOnField(1,0,91831066) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk & def + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c91831066.atkcon) + e2:SetOperation(c91831066.atkop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c91831066.spcon) + e3:SetTarget(c91831066.sptg) + e3:SetOperation(c91831066.spop) + c:RegisterEffect(e3) +end +function c91831066.atkcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if not bc then return false end + if bc:IsControler(1-tp) then bc=tc end + e:SetLabelObject(bc) + return bc:IsFaceup() and bc:IsSetCard(0xcd) +end +function c91831066.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=e:GetLabelObject() + if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsControler(tp) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(tc:GetAttack()*2) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE_CAL) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_DEFENSE_FINAL) + e2:SetValue(tc:GetDefense()*2) + tc:RegisterEffect(e2) + end +end +function c91831066.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c91831066.spfilter(c,e,tp) + return c:IsRace(RACE_AQUA) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c91831066.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c91831066.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c91831066.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c91831066.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c91831066.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetTarget(c91831066.splimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c91831066.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return c:GetRace()~=RACE_AQUA +end diff --git a/script/c91842653.lua b/script/c91842653.lua index ed34737c..11934dd4 100644 --- a/script/c91842653.lua +++ b/script/c91842653.lua @@ -1,99 +1,99 @@ ---トゥーン・デーモン -function c91842653.initial_effect(c) - c:EnableReviveLimit() - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c91842653.spcon) - e2:SetOperation(c91842653.spop) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_LEAVE_FIELD) - e3:SetCondition(c91842653.sdescon) - e3:SetOperation(c91842653.sdesop) - c:RegisterEffect(e3) - --direct attack - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DIRECT_ATTACK) - e4:SetCondition(c91842653.dircon) - c:RegisterEffect(e4) - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e5:SetCondition(c91842653.atcon) - e5:SetValue(c91842653.atlimit) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) - e6:SetCondition(c91842653.atcon) - c:RegisterEffect(e6) - --cannot attack - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e7:SetCode(EVENT_SPSUMMON_SUCCESS) - e7:SetOperation(c91842653.atklimit) - c:RegisterEffect(e7) - --attack cost - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_SINGLE) - e8:SetCode(EFFECT_ATTACK_COST) - e8:SetCost(c91842653.atcost) - e8:SetOperation(c91842653.atop) - c:RegisterEffect(e8) -end -function c91842653.cfilter(c) - return c:IsFaceup() and c:IsCode(15259703) -end -function c91842653.spcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.IsExistingMatchingCard(c91842653.cfilter,tp,LOCATION_ONFIELD,0,1,nil) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,nil,1,nil) -end -function c91842653.spop(e,tp,eg,ep,ev,re,r,rp,c) - local tp=c:GetControler() - local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) - Duel.Release(g,REASON_COST) -end -function c91842653.sfilter(c) - return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) -end -function c91842653.sdescon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c91842653.sfilter,1,nil) -end -function c91842653.sdesop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end -function c91842653.atkfilter(c) - return c:IsFaceup() and c:IsType(TYPE_TOON) -end -function c91842653.dircon(e) - return not Duel.IsExistingMatchingCard(c91842653.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c91842653.atcon(e) - return Duel.IsExistingMatchingCard(c91842653.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) -end -function c91842653.atlimit(e,c) - return not c:IsType(TYPE_TOON) or c:IsFacedown() -end -function c91842653.atklimit(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c91842653.atcost(e,c,tp) - return Duel.CheckLPCost(tp,500) -end -function c91842653.atop(e,tp,eg,ep,ev,re,r,rp) - Duel.PayLPCost(tp,500) -end +--トゥーン・デーモン +function c91842653.initial_effect(c) + c:EnableReviveLimit() + --special summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_SPSUMMON_PROC) + e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e2:SetRange(LOCATION_HAND) + e2:SetCondition(c91842653.spcon) + e2:SetOperation(c91842653.spop) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetCondition(c91842653.sdescon) + e3:SetOperation(c91842653.sdesop) + c:RegisterEffect(e3) + --direct attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DIRECT_ATTACK) + e4:SetCondition(c91842653.dircon) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e5:SetCondition(c91842653.atcon) + e5:SetValue(c91842653.atlimit) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_DIRECT_ATTACK) + e6:SetCondition(c91842653.atcon) + c:RegisterEffect(e6) + --cannot attack + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e7:SetCode(EVENT_SPSUMMON_SUCCESS) + e7:SetOperation(c91842653.atklimit) + c:RegisterEffect(e7) + --attack cost + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_ATTACK_COST) + e8:SetCost(c91842653.atcost) + e8:SetOperation(c91842653.atop) + c:RegisterEffect(e8) +end +function c91842653.cfilter(c) + return c:IsFaceup() and c:IsCode(15259703) +end +function c91842653.spcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.IsExistingMatchingCard(c91842653.cfilter,tp,LOCATION_ONFIELD,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.CheckReleaseGroup(tp,nil,1,nil) +end +function c91842653.spop(e,tp,eg,ep,ev,re,r,rp,c) + local tp=c:GetControler() + local g=Duel.SelectReleaseGroup(tp,nil,1,1,nil) + Duel.Release(g,REASON_COST) +end +function c91842653.sfilter(c) + return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c91842653.sdescon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c91842653.sfilter,1,nil) +end +function c91842653.sdesop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end +function c91842653.atkfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TOON) +end +function c91842653.dircon(e) + return not Duel.IsExistingMatchingCard(c91842653.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c91842653.atcon(e) + return Duel.IsExistingMatchingCard(c91842653.atkfilter,e:GetHandlerPlayer(),0,LOCATION_MZONE,1,nil) +end +function c91842653.atlimit(e,c) + return not c:IsType(TYPE_TOON) or c:IsFacedown() +end +function c91842653.atklimit(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c91842653.atcost(e,c,tp) + return Duel.CheckLPCost(tp,500) +end +function c91842653.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.PayLPCost(tp,500) +end diff --git a/script/c91895091.lua b/script/c91895091.lua index ff7d638a..1df78f7f 100644 --- a/script/c91895091.lua +++ b/script/c91895091.lua @@ -6,7 +6,7 @@ function c91895091.initial_effect(c) --actlimit local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(91895091,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) @@ -16,7 +16,7 @@ function c91895091.initial_effect(c) c:RegisterEffect(e1) --spsummon local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(91895091,0)) + e2:SetDescription(aux.Stringid(91895091,1)) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetProperty(EFFECT_FLAG_CARD_TARGET) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) diff --git a/script/c91907707.lua b/script/c91907707.lua index bf486300..13ff28ee 100644 --- a/script/c91907707.lua +++ b/script/c91907707.lua @@ -1,127 +1,126 @@ ---クリフォート・アーカイブ -function c91907707.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(1,0) - e2:SetTarget(c91907707.splimit) - c:RegisterEffect(e2) - --atk up - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_PZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetTargetRange(LOCATION_MZONE,0) - e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) - e3:SetValue(300) - c:RegisterEffect(e3) - --summon with no tribute - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(91907707,0)) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e4:SetCode(EFFECT_SUMMON_PROC) - e4:SetCondition(c91907707.ntcon) - c:RegisterEffect(e4) - --change level - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_SUMMON_COST) - e5:SetOperation(c91907707.lvop) - c:RegisterEffect(e5) - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetCode(EFFECT_SPSUMMON_COST) - e6:SetOperation(c91907707.lvop2) - c:RegisterEffect(e6) - --immune - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetCode(EFFECT_IMMUNE_EFFECT) - e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) - e7:SetRange(LOCATION_MZONE) - e7:SetCondition(c91907707.immcon) - e7:SetValue(aux.qlifilter) - c:RegisterEffect(e7) - --tohand - local e8=Effect.CreateEffect(c) - e8:SetDescription(aux.Stringid(91907707,1)) - e8:SetCategory(CATEGORY_TOHAND) - e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e8:SetCode(EVENT_RELEASE) - e8:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e8:SetTarget(c91907707.thtg) - e8:SetOperation(c91907707.thop) - c:RegisterEffect(e8) -end -function c91907707.splimit(e,c) - return not c:IsSetCard(0xaa) -end -function c91907707.ntcon(e,c,minc) - if c==nil then return true end - return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 -end -function c91907707.lvcon(e) - return e:GetHandler():GetMaterialCount()==0 -end -function c91907707.lvop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c91907707.lvcon) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c91907707.lvcon) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c91907707.lvop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetValue(4) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_SET_BASE_ATTACK) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(1800) - e2:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e2) -end -function c91907707.immcon(e) - return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL -end -function c91907707.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) -end -function c91907707.thop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end +--クリフォート・アーカイブ +function c91907707.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetTarget(c91907707.splimit) + c:RegisterEffect(e2) + --atk up + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_PZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0xaa)) + e3:SetValue(300) + c:RegisterEffect(e3) + --summon with no tribute + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(91907707,0)) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SUMMON_PROC) + e4:SetCondition(c91907707.ntcon) + c:RegisterEffect(e4) + --change level + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_SUMMON_COST) + e5:SetOperation(c91907707.lvop) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_SPSUMMON_COST) + e6:SetOperation(c91907707.lvop2) + c:RegisterEffect(e6) + --immune + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_IMMUNE_EFFECT) + e7:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE) + e7:SetRange(LOCATION_MZONE) + e7:SetCondition(c91907707.immcon) + e7:SetValue(aux.qlifilter) + c:RegisterEffect(e7) + --tohand + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(91907707,1)) + e8:SetCategory(CATEGORY_TOHAND) + e8:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e8:SetCode(EVENT_RELEASE) + e8:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e8:SetTarget(c91907707.thtg) + e8:SetOperation(c91907707.thop) + c:RegisterEffect(e8) +end +function c91907707.splimit(e,c) + return not c:IsSetCard(0xaa) +end +function c91907707.ntcon(e,c,minc) + if c==nil then return true end + return minc==0 and c:GetLevel()>4 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c91907707.lvcon(e) + return e:GetHandler():GetMaterialCount()==0 +end +function c91907707.lvop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c91907707.lvcon) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c91907707.lvcon) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c91907707.lvop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetValue(4) + e1:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_BASE_ATTACK) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(1800) + e2:SetReset(RESET_EVENT+0xff0000) + c:RegisterEffect(e2) +end +function c91907707.immcon(e) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_NORMAL)==SUMMON_TYPE_NORMAL +end +function c91907707.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c91907707.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c91985515.lua b/script/c91985515.lua index 7d9a68a9..731b86a5 100644 --- a/script/c91985515.lua +++ b/script/c91985515.lua @@ -24,8 +24,8 @@ function c91985515.target(e,tp,eg,ep,ev,re,r,rp,chk) end function c91985515.activate(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c91985515.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c91985515.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end diff --git a/script/c92001300.lua b/script/c92001300.lua index a818c6a1..01a109f0 100644 --- a/script/c92001300.lua +++ b/script/c92001300.lua @@ -37,16 +37,15 @@ function c92001300.initial_effect(c) e4:SetOperation(c92001300.sumop) e4:SetValue(SUMMON_TYPE_ADVANCE) c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_SET_PROC) - c:RegisterEffect(e5) end function c92001300.addc(e,tp,eg,ep,ev,re,r,rp) e:GetHandler():AddCounter(0xb,1) end -function c92001300.sumcon(e,c) +function c92001300.sumcon(e,c,minc) if c==nil then return e:GetHandler():IsReleasable() end local mi,ma=c:GetTributeRequirement() + if mi0 and e:GetHandler():GetCounter(0xb)>=mi and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 end function c92001300.sumop(e,tp,eg,ep,ev,re,r,rp,c) diff --git a/script/c92035412.lua b/script/c92035412.lua index 0bdf96b8..8ba9ecfe 100644 --- a/script/c92035412.lua +++ b/script/c92035412.lua @@ -1,61 +1,61 @@ ---ヴァイロン・エレメント -function c92035412.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(92035412,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_DESTROYED) - e2:SetCondition(c92035412.spcon) - e2:SetTarget(c92035412.sptg) - e2:SetOperation(c92035412.spop) - c:RegisterEffect(e2) -end -function c92035412.cfilter(c,tp) - return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0x30) - and bit.band(c:GetPreviousTypeOnField(),TYPE_EQUIP)~=0 -end -function c92035412.spcon(e,tp,eg,ep,ev,re,r,rp) - local ct=eg:FilterCount(c92035412.cfilter,nil,tp) - e:SetLabel(ct) - return ct>0 -end -function c92035412.spfilter(c,e,tp) - return c:IsSetCard(0x30) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c92035412.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c92035412.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c92035412.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if ft>e:GetLabel() then ft=e:GetLabel() end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c92035412.spfilter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) - local tc=g:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - e1:SetValue(c92035412.synlimit) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc=g:GetNext() - end - Duel.SpecialSummonComplete() -end -function c92035412.synlimit(e,c) - if not c then return false end - return not c:IsSetCard(0x30) -end +--ヴァイロン・エレメント +function c92035412.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(92035412,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c92035412.spcon) + e2:SetTarget(c92035412.sptg) + e2:SetOperation(c92035412.spop) + c:RegisterEffect(e2) +end +function c92035412.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_SZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0x30) + and bit.band(c:GetPreviousTypeOnField(),TYPE_EQUIP)~=0 +end +function c92035412.spcon(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c92035412.cfilter,nil,tp) + e:SetLabel(ct) + return ct>0 +end +function c92035412.spfilter(c,e,tp) + return c:IsSetCard(0x30) and c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c92035412.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c92035412.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c92035412.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if ft>e:GetLabel() then ft=e:GetLabel() end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c92035412.spfilter,tp,LOCATION_DECK,0,1,ft,nil,e,tp) + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e1:SetValue(c92035412.synlimit) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end +function c92035412.synlimit(e,c) + if not c then return false end + return not c:IsSetCard(0x30) +end diff --git a/script/c92039899.lua b/script/c92039899.lua index 4bfb5a2c..50d75910 100644 --- a/script/c92039899.lua +++ b/script/c92039899.lua @@ -1,41 +1,40 @@ ---デーモンの騎兵 -function c92039899.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(92039899,0)) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c92039899.spcon) - e1:SetTarget(c92039899.sptg) - e1:SetOperation(c92039899.spop) - c:RegisterEffect(e1) -end -function c92039899.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_EFFECT) and c:IsReason(REASON_DESTROY) -end -function c92039899.spfilter(c,e,tp) - return c:IsSetCard(0x45) and c:GetCode()~=92039899 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c92039899.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c92039899.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c92039899.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c92039899.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c92039899.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetDescription(aux.Stringid(92039899,0)) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_CANNOT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--デーモンの騎兵 +function c92039899.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92039899,0)) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c92039899.spcon) + e1:SetTarget(c92039899.sptg) + e1:SetOperation(c92039899.spop) + c:RegisterEffect(e1) +end +function c92039899.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_EFFECT) and c:IsReason(REASON_DESTROY) +end +function c92039899.spfilter(c,e,tp) + return c:IsSetCard(0x45) and c:GetCode()~=92039899 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c92039899.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c92039899.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c92039899.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c92039899.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c92039899.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c92053608.lua b/script/c92053608.lua index ca424ee7..5735c05e 100644 --- a/script/c92053608.lua +++ b/script/c92053608.lua @@ -1,27 +1,27 @@ ---アクアアクトレス・アロワナ -function c92053608.initial_effect(c) - --to hand - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c92053608.thtg) - e1:SetOperation(c92053608.thop) - c:RegisterEffect(e1) -end -function c92053608.filter(c) - return c:IsSetCard(0xcd) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c92053608.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c92053608.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c92053608.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c92053608.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--アクアアクトレス・アロワナ +function c92053608.initial_effect(c) + --to hand + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c92053608.thtg) + e1:SetOperation(c92053608.thop) + c:RegisterEffect(e1) +end +function c92053608.filter(c) + return c:IsSetCard(0xcd) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c92053608.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c92053608.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c92053608.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c92053608.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c92092092.lua b/script/c92092092.lua new file mode 100644 index 00000000..623be472 --- /dev/null +++ b/script/c92092092.lua @@ -0,0 +1,47 @@ +--Space Dragster +function c92092092.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetTarget(c92092092.target) + e1:SetOperation(c92092092.activate) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCondition(c92092092.indcon) + e2:SetTarget(c92092092.indtg) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) +end +function c92092092.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,92092092,0,0x21,0,1800,1,RACE_MACHINE,ATTRIBUTE_FIRE) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c92092092.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + or not Duel.IsPlayerCanSpecialSummonMonster(tp,92092092,0,0x21,0,1800,1,RACE_MACHINE,ATTRIBUTE_FIRE) then return end + c:AddMonsterAttribute(TYPE_EFFECT+TYPE_TUNER+TYPE_TRAP) + Duel.SpecialSummonStep(c,1,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + Duel.SpecialSummonComplete() +end +function c92092092.indcon(e) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c92092092.indtg(e,c) + return c~=e:GetHandler() and c:IsType(TYPE_TUNER) +end diff --git a/script/c92200612.lua b/script/c92200612.lua new file mode 100644 index 00000000..fd36a99d --- /dev/null +++ b/script/c92200612.lua @@ -0,0 +1,39 @@ +--霊魂鳥-伝鳩 +function c92200612.initial_effect(c) + --spirit return + aux.EnableSpiritReturn(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.FALSE) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(92200612,0)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCountLimit(1) + e2:SetTarget(c92200612.thtg) + e2:SetOperation(c92200612.thop) + c:RegisterEffect(e2) +end +function c92200612.cfilter(c) + return c:IsType(TYPE_SPIRIT) and c:IsAbleToHand() +end +function c92200612.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c92200612.cfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c92200612.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,c92200612.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c92200612.thop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end diff --git a/script/c92246806.lua b/script/c92246806.lua index b7aac9aa..7617836b 100644 --- a/script/c92246806.lua +++ b/script/c92246806.lua @@ -1,78 +1,78 @@ ---妖仙獣 鎌弐太刀 -function c92246806.initial_effect(c) - --summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(92246806,0)) - e1:SetCategory(CATEGORY_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c92246806.sumtg) - e1:SetOperation(c92246806.sumop) - c:RegisterEffect(e1) - --direct attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DIRECT_ATTACK) - c:RegisterEffect(e2) - --damage reduce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e3:SetCondition(c92246806.rdcon) - e3:SetOperation(c92246806.rdop) - c:RegisterEffect(e3) - --return - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e4:SetCode(EVENT_SUMMON_SUCCESS) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetOperation(c92246806.regop) - c:RegisterEffect(e4) -end -function c92246806.filter(c) - return c:IsSetCard(0xb3) and not c:IsCode(92246806) and c:IsSummonable(true,nil) -end -function c92246806.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c92246806.filter,tp,LOCATION_HAND,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) -end -function c92246806.sumop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) - local g=Duel.SelectMatchingCard(tp,c92246806.filter,tp,LOCATION_HAND,0,1,1,nil) - if g:GetCount()>0 then - Duel.Summon(tp,g:GetFirst(),true,nil) - end -end -function c92246806.rdcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return ep~=tp and Duel.GetAttackTarget()==nil - and c:GetEffectCount(EFFECT_DIRECT_ATTACK)<2 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 -end -function c92246806.rdop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev/2) -end -function c92246806.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(92246806,1)) - e1:SetCategory(CATEGORY_TOHAND) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetTarget(c92246806.rettg) - e1:SetOperation(c92246806.retop) - e1:SetReset(RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) -end -function c92246806.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c92246806.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--妖仙獣 鎌弐太刀 +function c92246806.initial_effect(c) + --summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92246806,0)) + e1:SetCategory(CATEGORY_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c92246806.sumtg) + e1:SetOperation(c92246806.sumop) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) + --damage reduce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e3:SetCondition(c92246806.rdcon) + e3:SetOperation(c92246806.rdop) + c:RegisterEffect(e3) + --return + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_SUMMON_SUCCESS) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetOperation(c92246806.regop) + c:RegisterEffect(e4) +end +function c92246806.filter(c) + return c:IsSetCard(0xb3) and not c:IsCode(92246806) and c:IsSummonable(true,nil) +end +function c92246806.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c92246806.filter,tp,LOCATION_HAND,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c92246806.sumop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c92246806.filter,tp,LOCATION_HAND,0,1,1,nil) + if g:GetCount()>0 then + Duel.Summon(tp,g:GetFirst(),true,nil) + end +end +function c92246806.rdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return ep~=tp and Duel.GetAttackTarget()==nil + and c:GetEffectCount(EFFECT_DIRECT_ATTACK)<2 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 +end +function c92246806.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end +function c92246806.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92246806,1)) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetTarget(c92246806.rettg) + e1:SetOperation(c92246806.retop) + e1:SetReset(RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end +function c92246806.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c92246806.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c92266279.lua b/script/c92266279.lua index 183a218c..624c1c6d 100644 --- a/script/c92266279.lua +++ b/script/c92266279.lua @@ -1,104 +1,104 @@ ---潤いの風 -function c92266279.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetTarget(c92266279.target) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(92266279,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetHintTiming(0,TIMING_END_PHASE) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1,92266279) - e2:SetCost(c92266279.thcost) - e2:SetTarget(c92266279.thtg) - e2:SetOperation(c92266279.thop) - c:RegisterEffect(e2) - --recover - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(92266279,2)) - e3:SetCategory(CATEGORY_RECOVER) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetHintTiming(0,TIMING_END_PHASE) - e3:SetRange(LOCATION_SZONE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCountLimit(1,92266280) - e3:SetCondition(c92266279.reccon) - e3:SetTarget(c92266279.rectg) - e3:SetOperation(c92266279.recop) - c:RegisterEffect(e3) -end -function c92266279.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local b1=c92266279.thcost(e,tp,eg,ep,ev,re,r,rp,0) and c92266279.thtg(e,tp,eg,ep,ev,re,r,rp,0) - local b2=c92266279.reccon(e,tp,eg,ep,ev,re,r,rp) and c92266279.rectg(e,tp,eg,ep,ev,re,r,rp,0) - if (b1 or b2) and Duel.SelectYesNo(tp,94) then - local opt=0 - if b1 and b2 then - opt=Duel.SelectOption(tp,aux.Stringid(92266279,1),aux.Stringid(92266279,2)) - elseif b1 then - opt=Duel.SelectOption(tp,aux.Stringid(92266279,1)) - else - opt=Duel.SelectOption(tp,aux.Stringid(92266279,2))+1 - end - if opt==0 then - e:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e:SetProperty(0) - e:SetOperation(c92266279.thop) - c92266279.thcost(e,tp,eg,ep,ev,re,r,rp,1) - c92266279.thtg(e,tp,eg,ep,ev,re,r,rp,1) - else - e:SetCategory(CATEGORY_RECOVER) - e:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e:SetOperation(c92266279.recop) - c92266279.rectg(e,tp,eg,ep,ev,re,r,rp,1) - end - else - e:SetCategory(0) - e:SetProperty(0) - e:SetOperation(nil) - end -end -function c92266279.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,1000) and Duel.GetFlagEffect(tp,92266279)==0 end - Duel.PayLPCost(tp,1000) - Duel.RegisterFlagEffect(tp,92266279,RESET_PHASE+PHASE_END,0,1) -end -function c92266279.thfilter(c) - return c:IsSetCard(0xc9) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() -end -function c92266279.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c92266279.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c92266279.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c92266279.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c92266279.reccon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetLP(tp)0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c92266279.reccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetLP(tp)c:GetLevel()*500 -end -function c9236985.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local lp=Duel.GetLP(tp) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c9236985.filter,tp,LOCATION_HAND,0,1,nil,e,tp,lp) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c9236985.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local lp=Duel.GetLP(tp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=Duel.SelectMatchingCard(tp,c9236985.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,lp) - local tc=tg:GetFirst() - if tc then - Duel.PayLPCost(tp,tc:GetLevel()*500) - tc:SetMaterial(nil) - Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) - tc:CompleteProcedure() - end -end +--リチュアの写魂鏡 +function c9236985.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c9236985.target) + e1:SetOperation(c9236985.activate) + c:RegisterEffect(e1) +end +function c9236985.filter(c,e,tp,lp) + if bit.band(c:GetType(),0x81)~=0x81 or not c:IsSetCard(0x3a) + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,true,false) then return false end + return lp>c:GetLevel()*500 +end +function c9236985.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local lp=Duel.GetLP(tp) + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c9236985.filter,tp,LOCATION_HAND,0,1,nil,e,tp,lp) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c9236985.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local lp=Duel.GetLP(tp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,c9236985.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,lp) + local tc=tg:GetFirst() + if tc then + Duel.PayLPCost(tp,tc:GetLevel()*500) + tc:SetMaterial(nil) + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP) + tc:CompleteProcedure() + end +end diff --git a/script/c92394653.lua b/script/c92394653.lua index 39698143..8eda49fe 100644 --- a/script/c92394653.lua +++ b/script/c92394653.lua @@ -1,60 +1,60 @@ ---スピリットの誘い -function c92394653.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(92394653,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_TO_HAND) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c92394653.condition) - e2:SetTarget(c92394653.target) - e2:SetOperation(c92394653.operation) - c:RegisterEffect(e2) - --maintain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c92394653.mtcon) - e3:SetOperation(c92394653.mtop) - c:RegisterEffect(e3) -end -function c92394653.filter(c,tp) - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) - and c:IsControler(tp) and c:IsType(TYPE_SPIRIT) -end -function c92394653.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c92394653.filter,1,nil,tp) -end -function c92394653.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToHand() end - if chk==0 then return e:GetHandler():IsRelateToEffect(e) end - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(1-tp,Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c92394653.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - end -end -function c92394653.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c92394653.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(92394653,1)) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end +--スピリットの誘い +function c92394653.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(92394653,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_TO_HAND) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c92394653.condition) + e2:SetTarget(c92394653.target) + e2:SetOperation(c92394653.operation) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c92394653.mtcon) + e3:SetOperation(c92394653.mtop) + c:RegisterEffect(e3) +end +function c92394653.filter(c,tp) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) + and c:IsControler(tp) and c:IsType(TYPE_SPIRIT) +end +function c92394653.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c92394653.filter,1,nil,tp) +end +function c92394653.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsAbleToHand() end + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(1-tp,Card.IsAbleToHand,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c92394653.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + end +end +function c92394653.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c92394653.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(92394653,1)) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end end \ No newline at end of file diff --git a/script/c92408984.lua b/script/c92408984.lua index 7feb98a5..3dac7f66 100644 --- a/script/c92408984.lua +++ b/script/c92408984.lua @@ -58,8 +58,7 @@ function c92408984.operation1(e,tp,eg,ep,ev,re,r,rp) if not c:IsRelateToEffect(e) then return end local ct=Duel.GetChainInfo(0,CHAININFO_CHAIN_COUNT) local tc=Duel.GetFirstTarget() - Duel.NegateEffect(ct-1) - if tc and tc:IsRelateToEffect(e) then + if Duel.NegateEffect(ct-1) and tc and tc:IsRelateToEffect(e) then Duel.Destroy(tc,REASON_EFFECT) end end @@ -85,8 +84,7 @@ end function c92408984.operation2(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsRelateToEffect(e) then return end - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c92450185.lua b/script/c92450185.lua index 30f78cd9..41650d11 100644 --- a/script/c92450185.lua +++ b/script/c92450185.lua @@ -1,27 +1,27 @@ ---リミッター・ブレイク -function c92450185.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(92450185,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c92450185.thtg) - e1:SetOperation(c92450185.thop) - c:RegisterEffect(e1) -end -function c92450185.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE) -end -function c92450185.spfilter(c,e,tp) - return c:IsCode(9365703) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c92450185.thop(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,c92450185.spfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()~=0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--リミッター・ブレイク +function c92450185.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92450185,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c92450185.thtg) + e1:SetOperation(c92450185.thop) + c:RegisterEffect(e1) +end +function c92450185.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE) +end +function c92450185.spfilter(c,e,tp) + return c:IsCode(9365703) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c92450185.thop(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,aux.NecroValleyFilter(c92450185.spfilter),tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c92512625.lua b/script/c92512625.lua index d7b9a611..b4c6ed8a 100644 --- a/script/c92512625.lua +++ b/script/c92512625.lua @@ -59,8 +59,7 @@ function c92512625.target2(e,tp,eg,ep,ev,re,r,rp,chk) end end function c92512625.activate2(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c92536468.lua b/script/c92536468.lua index 474d6f28..0458049a 100644 --- a/script/c92536468.lua +++ b/script/c92536468.lua @@ -1,75 +1,75 @@ ---DDD反骨王レオニダス -function c92536468.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --reverse damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EVENT_DAMAGE) - e2:SetCondition(c92536468.effcon) - e2:SetTarget(c92536468.revtg) - e2:SetOperation(c92536468.revop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_RECOVER) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetRange(LOCATION_HAND) - e3:SetCode(EVENT_DAMAGE) - e3:SetCondition(c92536468.effcon) - e3:SetTarget(c92536468.sptg) - e3:SetOperation(c92536468.spop) - c:RegisterEffect(e3) - --avoid damage - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetCode(EFFECT_CHANGE_DAMAGE) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(1,0) - e4:SetValue(c92536468.damval) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_NO_EFFECT_DAMAGE) - c:RegisterEffect(e5) -end -function c92536468.effcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp and bit.band(r,REASON_EFFECT)~=0 -end -function c92536468.revtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsDestructable(e) end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) -end -function c92536468.revop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.Destroy(c,REASON_EFFECT)~=0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_REVERSE_DAMAGE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,1) - e1:SetValue(c92536468.revval) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - end -end -function c92536468.revval(e,re,r,rp,rc) - return bit.band(r,REASON_EFFECT)~=0 -end -function c92536468.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ev) -end -function c92536468.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then - Duel.Recover(tp,ev,REASON_EFFECT) - end -end -function c92536468.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 end - return val -end +--DDD反骨王レオニダス +function c92536468.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --reverse damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EVENT_DAMAGE) + e2:SetCondition(c92536468.effcon) + e2:SetTarget(c92536468.revtg) + e2:SetOperation(c92536468.revop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_RECOVER) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetRange(LOCATION_HAND) + e3:SetCode(EVENT_DAMAGE) + e3:SetCondition(c92536468.effcon) + e3:SetTarget(c92536468.sptg) + e3:SetOperation(c92536468.spop) + c:RegisterEffect(e3) + --avoid damage + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetCode(EFFECT_CHANGE_DAMAGE) + e4:SetRange(LOCATION_MZONE) + e4:SetTargetRange(1,0) + e4:SetValue(c92536468.damval) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_NO_EFFECT_DAMAGE) + c:RegisterEffect(e5) +end +function c92536468.effcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp and bit.band(r,REASON_EFFECT)~=0 +end +function c92536468.revtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDestructable(e) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) +end +function c92536468.revop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Destroy(c,REASON_EFFECT)~=0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_REVERSE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetValue(c92536468.revval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c92536468.revval(e,re,r,rp,rc) + return bit.band(r,REASON_EFFECT)~=0 +end +function c92536468.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ev) +end +function c92536468.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.Recover(tp,ev,REASON_EFFECT) + end +end +function c92536468.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 end + return val +end diff --git a/script/c9260791.lua b/script/c9260791.lua index a9959269..50c6248b 100644 --- a/script/c9260791.lua +++ b/script/c9260791.lua @@ -37,8 +37,8 @@ end function c9260791.spop(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,c9260791.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c9260791.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c92609670.lua b/script/c92609670.lua index 9b630f6d..6827b8d3 100644 --- a/script/c92609670.lua +++ b/script/c92609670.lua @@ -43,8 +43,8 @@ function c92609670.spop(e,tp,eg,ep,ev,re,r,rp) if ft<1 then return end if ft>2 then ft=2 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c92609670.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,ft,nil,e,tp) - if g:GetCount()>0 and not g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c92609670.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,ft,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+92609670,e,0,tp,tp,0) end diff --git a/script/c9264485.lua b/script/c9264485.lua index fa604941..114dfe47 100644 --- a/script/c9264485.lua +++ b/script/c9264485.lua @@ -1,13 +1,13 @@ ---ホルスのしもべ -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:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,75830094,11224103,48229808)) - e1:SetValue(aux.tgoval) - c:RegisterEffect(e1) -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:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsCode,75830094,11224103,48229808)) + e1:SetValue(aux.tgoval) + c:RegisterEffect(e1) +end diff --git a/script/c92661479.lua b/script/c92661479.lua index f690bbf6..261fa9c1 100644 --- a/script/c92661479.lua +++ b/script/c92661479.lua @@ -7,6 +7,7 @@ function c92661479.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(92661479,0)) e1:SetCategory(CATEGORY_DISABLE+CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c92723496.lua b/script/c92723496.lua index cbfd175c..0896f83d 100644 --- a/script/c92723496.lua +++ b/script/c92723496.lua @@ -1,36 +1,36 @@ ---竜宮のツガイ -function c92723496.initial_effect(c) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1,92723496) - e3:SetCost(c92723496.spcost) - e3:SetTarget(c92723496.sptg) - e3:SetOperation(c92723496.spop) - c:RegisterEffect(e3) -end -function c92723496.costfilter(c) - return c:IsType(TYPE_MONSTER) and c:IsDiscardable() -end -function c92723496.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c92723496.costfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,c92723496.costfilter,1,1,REASON_COST+REASON_DISCARD) -end -function c92723496.filter(c,e,tp) - return c:IsLevelBelow(4) and c:IsRace(RACE_WYRM) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c92723496.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c92723496.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c92723496.spop(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,c92723496.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--竜宮のツガイ +function c92723496.initial_effect(c) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1,92723496) + e3:SetCost(c92723496.spcost) + e3:SetTarget(c92723496.sptg) + e3:SetOperation(c92723496.spop) + c:RegisterEffect(e3) +end +function c92723496.costfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsDiscardable() +end +function c92723496.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c92723496.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c92723496.costfilter,1,1,REASON_COST+REASON_DISCARD) +end +function c92723496.filter(c,e,tp) + return c:IsLevelBelow(4) and c:IsRace(RACE_WYRM) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c92723496.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c92723496.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c92723496.spop(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,c92723496.filter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c9272381.lua b/script/c9272381.lua index 1423e7ee..696d411f 100644 --- a/script/c9272381.lua +++ b/script/c9272381.lua @@ -36,7 +36,7 @@ function c9272381.initial_effect(c) e4:SetType(EFFECT_TYPE_QUICK_O) e4:SetCode(EVENT_CHAINING) e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e4:SetCondition(c9272381.condition) e4:SetCost(c9272381.cost) e4:SetTarget(c9272381.target) @@ -64,8 +64,7 @@ function c9272381.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c9272381.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c92746535.lua b/script/c92746535.lua index 8c14fbf8..52b79869 100644 --- a/script/c92746535.lua +++ b/script/c92746535.lua @@ -1,59 +1,59 @@ ---竜剣士ラスターP -function c92746535.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCountLimit(1) - e2:SetCondition(c92746535.thcon) - e2:SetTarget(c92746535.thtg) - e2:SetOperation(c92746535.thop) - c:RegisterEffect(e2) - --cannot be material - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) - e3:SetValue(c92746535.splimit) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) - c:RegisterEffect(e4) - local e5=e3:Clone() - e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) - c:RegisterEffect(e5) -end -function c92746535.thcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - return Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) -end -function c92746535.thfilter(c,code) - return c:IsCode(code) and c:IsAbleToHand() -end -function c92746535.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local seq=e:GetHandler():GetSequence() - local sc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - if chk==0 then return Duel.IsExistingMatchingCard(c92746535.thfilter,tp,LOCATION_DECK,0,1,nil,sc:GetOriginalCode()) end - Duel.SetTargetCard(sc) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,sc,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c92746535.thop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c92746535.thfilter,tp,LOCATION_DECK,0,1,1,nil,tc:GetOriginalCode()) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end - end -end -function c92746535.splimit(e,c) - if not c then return false end - return not c:IsSetCard(0xc7) -end +--竜剣士ラスターP +function c92746535.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c92746535.thcon) + e2:SetTarget(c92746535.thtg) + e2:SetOperation(c92746535.thop) + c:RegisterEffect(e2) + --cannot be material + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetValue(c92746535.splimit) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e5) +end +function c92746535.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + return Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) +end +function c92746535.thfilter(c,code) + return c:IsCode(code) and c:IsAbleToHand() +end +function c92746535.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local seq=e:GetHandler():GetSequence() + local sc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + if chk==0 then return Duel.IsExistingMatchingCard(c92746535.thfilter,tp,LOCATION_DECK,0,1,nil,sc:GetOriginalCode()) end + Duel.SetTargetCard(sc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sc,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c92746535.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c92746535.thfilter,tp,LOCATION_DECK,0,1,1,nil,tc:GetOriginalCode()) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end + end +end +function c92746535.splimit(e,c) + if not c then return false end + return not c:IsSetCard(0xc7) +end diff --git a/script/c92767273.lua b/script/c92767273.lua new file mode 100644 index 00000000..64d61c25 --- /dev/null +++ b/script/c92767273.lua @@ -0,0 +1,73 @@ +--EMバラクーダ +function c92767273.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92767273,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_CONFIRM) + e1:SetRange(LOCATION_PZONE) + e1:SetCountLimit(1) + e1:SetCondition(c92767273.atkcon1) + e1:SetOperation(c92767273.atkop1) + c:RegisterEffect(e1) + --atk down + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(92767273,1)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,92767273) + e2:SetCondition(c92767273.atkcon2) + e2:SetTarget(c92767273.atktg2) + e2:SetOperation(c92767273.atkop2) + c:RegisterEffect(e2) +end +function c92767273.atkcon1(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local bc=Duel.GetAttackTarget() + if not bc then return false end + if tc:IsControler(1-tp) then bc,tc=tc,bc end + e:SetLabelObject(bc) + return bc:IsFaceup() and tc:IsFaceup() and tc:IsSetCard(0x9f) and bc:GetBaseAttack()~=bc:GetAttack() +end +function c92767273.atkop1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local bc=e:GetLabelObject() + if bc:IsRelateToBattle() and bc:IsFaceup() and bc:IsControler(1-tp) then + local diff=math.abs(bc:GetBaseAttack()-bc:GetAttack()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-diff) + e1:SetReset(RESET_EVENT+0x1fe0000) + bc:RegisterEffect(e1) + end +end +function c92767273.atkcon2(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c92767273.atkfilter(c) + return c:IsFaceup() and c:IsSetCard(0x9f) and c:GetBaseAttack()~=c:GetAttack() +end +function c92767273.atktg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c92767273.atkfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c92767273.atkfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.SelectTarget(tp,c92767273.atkfilter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c92767273.atkop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local diff=math.abs(tc:GetBaseAttack()-tc:GetAttack()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(diff) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c92773018.lua b/script/c92773018.lua index e48e8890..5d7b89a8 100644 --- a/script/c92773018.lua +++ b/script/c92773018.lua @@ -1,70 +1,70 @@ ---サイバネティック・ヒドゥン・テクノロジー -function c92773018.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c92773018.target1) - e1:SetOperation(c92773018.activate) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(92773018,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetCondition(c92773018.condition) - e2:SetCost(c92773018.cost) - e2:SetTarget(c92773018.target2) - e2:SetOperation(c92773018.activate) - c:RegisterEffect(e2) -end -function c92773018.condition(e,tp,eg,ep,ev,re,r,rp) - return tp~=Duel.GetTurnPlayer() -end -function c92773018.cfilter(c) - return c:IsFaceup() and (c:IsCode(70095154) or aux.IsMaterialListCode(c,70095154)) and c:IsAbleToGraveAsCost() -end -function c92773018.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c92773018.cfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c92773018.cfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c92773018.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc==Duel.GetAttacker() end - if chk==0 then return true end - local tg=Duel.GetAttacker() - if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and tp~=Duel.GetTurnPlayer() - and Duel.IsExistingMatchingCard(c92773018.cfilter,tp,LOCATION_MZONE,0,1,nil) - and tg:IsOnField() and tg:IsCanBeEffectTarget(e) - and Duel.SelectYesNo(tp,aux.Stringid(92773018,1)) then - e:SetCategory(CATEGORY_DESTROY) - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c92773018.cfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) - Duel.SetTargetCard(tg) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) - else - e:SetCategory(0) - e:SetProperty(0) - end -end -function c92773018.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local tg=Duel.GetAttacker() - if chkc then return chkc==tg end - if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) - and tg:IsOnField() and tg:IsCanBeEffectTarget(e) end - Duel.SetTargetCard(tg) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) -end -function c92773018.activate(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--サイバネティック・ヒドゥン・テクノロジー +function c92773018.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c92773018.target1) + e1:SetOperation(c92773018.activate) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(92773018,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetCondition(c92773018.condition) + e2:SetCost(c92773018.cost) + e2:SetTarget(c92773018.target2) + e2:SetOperation(c92773018.activate) + c:RegisterEffect(e2) +end +function c92773018.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c92773018.cfilter(c) + return c:IsFaceup() and (c:IsCode(70095154) or aux.IsMaterialListCode(c,70095154)) and c:IsAbleToGraveAsCost() +end +function c92773018.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c92773018.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c92773018.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c92773018.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc==Duel.GetAttacker() end + if chk==0 then return true end + local tg=Duel.GetAttacker() + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) and tp~=Duel.GetTurnPlayer() + and Duel.IsExistingMatchingCard(c92773018.cfilter,tp,LOCATION_MZONE,0,1,nil) + and tg:IsOnField() and tg:IsCanBeEffectTarget(e) + and Duel.SelectYesNo(tp,aux.Stringid(92773018,1)) then + e:SetCategory(CATEGORY_DESTROY) + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c92773018.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) + else + e:SetCategory(0) + e:SetProperty(0) + end +end +function c92773018.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return chkc==tg end + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,tg,1,0,0) +end +function c92773018.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and tc:IsAttackable() and not tc:IsStatus(STATUS_ATTACK_CANCELED) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c92807548.lua b/script/c92807548.lua new file mode 100644 index 00000000..534791f7 --- /dev/null +++ b/script/c92807548.lua @@ -0,0 +1,31 @@ +--堕天使ユコバック +function c92807548.initial_effect(c) + --tograve + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92807548,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetCountLimit(1,92807548) + e1:SetTarget(c92807548.tgtg) + e1:SetOperation(c92807548.tgop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) +end +function c92807548.tgfilter(c) + return c:IsSetCard(0xef) and c:IsAbleToGrave() +end +function c92807548.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c92807548.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c92807548.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c92807548.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c9284723.lua b/script/c9284723.lua index 956b5f3a..127191e8 100644 --- a/script/c9284723.lua +++ b/script/c9284723.lua @@ -1,41 +1,41 @@ ---ヴェノム・ボア -function c9284723.initial_effect(c) - --add counter - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(9284723,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c9284723.cost) - e1:SetTarget(c9284723.target) - e1:SetOperation(c9284723.operation) - c:RegisterEffect(e1) -end -function c9284723.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c9284723.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsCanAddCounter(0x1009,2) end - if chk==0 then return Duel.IsExistingTarget(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,nil,0x1009,2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,1,nil,0x1009,2) - Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,2,0,0) -end -function c9284723.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsCanAddCounter(0x1009,2) then - local atk=tc:GetAttack() - tc:AddCounter(0x1009,2) - if atk>0 and tc:GetAttack()==0 then - Duel.RaiseEvent(tc,EVENT_CUSTOM+54306223,e,0,0,0,0) - end - end -end +--ヴェノム・ボア +function c9284723.initial_effect(c) + --add counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(9284723,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c9284723.cost) + e1:SetTarget(c9284723.target) + e1:SetOperation(c9284723.operation) + c:RegisterEffect(e1) +end +function c9284723.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c9284723.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsCanAddCounter(0x1009,2) end + if chk==0 then return Duel.IsExistingTarget(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,nil,0x1009,2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,1,nil,0x1009,2) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,2,0,0) +end +function c9284723.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsCanAddCounter(0x1009,2) then + local atk=tc:GetAttack() + tc:AddCounter(0x1009,2) + if atk>0 and tc:GetAttack()==0 then + Duel.RaiseEvent(tc,EVENT_CUSTOM+54306223,e,0,0,0,0) + end + end +end diff --git a/script/c92870717.lua b/script/c92870717.lua index 3f2670d8..2146baba 100644 --- a/script/c92870717.lua +++ b/script/c92870717.lua @@ -1,62 +1,62 @@ ---魔装戦士 ドラゴノックス -function c92870717.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - -- - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c92870717.descon) - e2:SetTarget(c92870717.destg) - e2:SetOperation(c92870717.desop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetCountLimit(1) - e3:SetCost(c92870717.spcost) - e3:SetTarget(c92870717.sptg) - e3:SetOperation(c92870717.spop) - c:RegisterEffect(e3) -end -function c92870717.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c92870717.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 c92870717.desop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then - Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) - end -end -function c92870717.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_DISCARD+REASON_COST,nil) -end -function c92870717.spfilter(c,e,tp) - return c:IsAttackBelow(2000) and c:IsRace(RACE_WARRIOR+RACE_SPELLCASTER) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE) -end -function c92870717.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c92870717.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c92870717.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c92870717.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c92870717.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) - Duel.ConfirmCards(1-tp,tc) - end -end +--魔装戦士 ドラゴノックス +function c92870717.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + -- + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c92870717.descon) + e2:SetTarget(c92870717.destg) + e2:SetOperation(c92870717.desop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetCost(c92870717.spcost) + e3:SetTarget(c92870717.sptg) + e3:SetOperation(c92870717.spop) + c:RegisterEffect(e3) +end +function c92870717.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c92870717.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 c92870717.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if Duel.Destroy(e:GetHandler(),REASON_EFFECT)~=0 then + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + end +end +function c92870717.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_DISCARD+REASON_COST,nil) +end +function c92870717.spfilter(c,e,tp) + return c:IsAttackBelow(2000) and c:IsRace(RACE_WARRIOR+RACE_SPELLCASTER) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE) +end +function c92870717.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c92870717.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c92870717.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c92870717.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c92870717.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c9287078.lua b/script/c9287078.lua index f65c0a22..245c60b8 100644 --- a/script/c9287078.lua +++ b/script/c9287078.lua @@ -38,12 +38,11 @@ function c9287078.activate(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) if g:GetCount()==2 and Duel.SendtoGrave(g,REASON_EFFECT)==2 and g:IsExists(Card.IsLocation,2,nil,LOCATION_GRAVE) then if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local sg=Duel.GetMatchingGroup(c9287078.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,nil,e,tp) + local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c9287078.spfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,nil,e,tp) if sg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(9287078,0)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local tg=sg:Select(tp,1,1,nil) - if tg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SpecialSummon(tg,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c92918648.lua b/script/c92918648.lua index 94dc1176..4bb6787d 100644 --- a/script/c92918648.lua +++ b/script/c92918648.lua @@ -7,6 +7,7 @@ function c92918648.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(92918648,0)) e1:SetCategory(CATEGORY_DESTROY) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c92970404.lua b/script/c92970404.lua new file mode 100644 index 00000000..41018780 --- /dev/null +++ b/script/c92970404.lua @@ -0,0 +1,77 @@ +--Subterror Behemoth Ultramafus +function c92970404.initial_effect(c) + --flip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(92970404,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCountLimit(1,92970404) + e1:SetTarget(c92970404.target) + e1:SetOperation(c92970404.operation) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(92970404,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_HAND) + e2:SetCode(EVENT_CHANGE_POS) + e2:SetCondition(c92970404.spcon) + e2:SetTarget(c92970404.sptg) + e2:SetOperation(c92970404.spop) + c:RegisterEffect(e2) + --turn set + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(92970404,2)) + e3:SetCategory(CATEGORY_POSITION) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c92970404.postg) + e3:SetOperation(c92970404.posop) + c:RegisterEffect(e3) +end +function c92970404.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c92970404.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler()) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) + end +end +function c92970404.cfilter(c,tp) + return c:IsPreviousPosition(POS_FACEUP) and c:IsFacedown() and c:IsControler(tp) +end +function c92970404.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c92970404.cfilter,1,nil,tp) + and not Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) +end +function c92970404.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c92970404.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)==0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c92970404.postg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsCanTurnSet() and c:GetFlagEffect(92970404)==0 end + c:RegisterFlagEffect(92970404,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_POSITION,c,1,0,0) +end +function c92970404.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and c:IsFaceup() then + Duel.ChangePosition(c,POS_FACEDOWN_DEFENSE) + end +end diff --git a/script/c93016201.lua b/script/c93016201.lua index 6416e8d5..9deeda3b 100644 --- a/script/c93016201.lua +++ b/script/c93016201.lua @@ -75,8 +75,7 @@ function c93016201.activate1(e,tp,eg,ep,ev,re,r,rp) local ct=Duel.GetChainInfo(0,CHAININFO_CHAIN_COUNT) local te=Duel.GetChainInfo(ct-1,CHAININFO_TRIGGERING_EFFECT) local tc=te:GetHandler() - Duel.NegateEffect(ct-1) - if tc:IsRelateToEffect(te) then + if Duel.NegateEffect(ct-1) and tc:IsRelateToEffect(te) then Duel.Destroy(tc,REASON_EFFECT) end end @@ -113,8 +112,7 @@ function c93016201.target3(e,tp,eg,ep,ev,re,r,rp,chk) end function c93016201.activate3(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c93108433.lua b/script/c93108433.lua index c5b063e4..897bb4c9 100644 --- a/script/c93108433.lua +++ b/script/c93108433.lua @@ -1,45 +1,45 @@ ---モンスター回収 -function c93108433.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c93108433.target) - e1:SetOperation(c93108433.activate) - c:RegisterEffect(e1) -end -function c93108433.mfilter(c,tp) - return c:IsAbleToDeck() and tp==c:GetOwner() -end -function c93108433.hfilter(c,tp) - return tp~=c:GetOwner() -end -function c93108433.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c93108433.mfilter(chkc,tp) end - if chk==0 then return Duel.IsPlayerCanDraw(tp) and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 - and Duel.IsExistingTarget(c93108433.mfilter,tp,LOCATION_MZONE,0,1,e:GetHandler(),tp) - and not Duel.IsExistingMatchingCard(c93108433.hfilter,tp,LOCATION_HAND,0,1,nil,tp) - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g1=Duel.SelectTarget(tp,c93108433.mfilter,tp,LOCATION_MZONE,0,1,1,nil,tp) - local g2=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - g1:Merge(g2) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,g1:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,g2:GetCount()) -end -function c93108433.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - local ct=g:GetCount() - if tc:IsRelateToEffect(e) and ct>0 then - g:AddCard(tc) - Duel.SendtoDeck(g,nil,2,REASON_EFFECT) - Duel.ShuffleDeck(tp) - if ct>0 then - Duel.BreakEffect() - Duel.Draw(tp,ct,REASON_EFFECT) - end - end -end +--モンスター回収 +function c93108433.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c93108433.target) + e1:SetOperation(c93108433.activate) + c:RegisterEffect(e1) +end +function c93108433.mfilter(c,tp) + return c:IsAbleToDeck() and tp==c:GetOwner() +end +function c93108433.hfilter(c,tp) + return tp~=c:GetOwner() +end +function c93108433.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c93108433.mfilter(chkc,tp) end + if chk==0 then return Duel.IsPlayerCanDraw(tp) and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 + and Duel.IsExistingTarget(c93108433.mfilter,tp,LOCATION_MZONE,0,1,e:GetHandler(),tp) + and not Duel.IsExistingMatchingCard(c93108433.hfilter,tp,LOCATION_HAND,0,1,nil,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g1=Duel.SelectTarget(tp,c93108433.mfilter,tp,LOCATION_MZONE,0,1,1,nil,tp) + local g2=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,g1:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,g2:GetCount()) +end +function c93108433.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local ct=g:GetCount() + if tc:IsRelateToEffect(e) and ct>0 then + g:AddCard(tc) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(tp) + if ct>0 then + Duel.BreakEffect() + Duel.Draw(tp,ct,REASON_EFFECT) + end + end +end diff --git a/script/c93124273.lua b/script/c93124273.lua index b5375f18..48b4ef66 100644 --- a/script/c93124273.lua +++ b/script/c93124273.lua @@ -1,26 +1,26 @@ ---Samurai Calvary of Reptier -function c93124273.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(93124273,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLE_START) - e2:SetTarget(c93124273.target) - e2:SetOperation(c93124273.operation) - c:RegisterEffect(e2) -end -function c93124273.target(e,tp,eg,ep,ev,re,r,rp,chk) - local d=Duel.GetAttackTarget() - if chk ==0 then return Duel.GetAttacker()==e:GetHandler() - and d and d:IsFaceup() and not d:IsType(TYPE_PENDULUM) end - Duel.SetOperationInfo(0,CATEGORY_DESTROY,d,1,0,0) -end -function c93124273.operation(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - if d:IsRelateToBattle() then - Duel.Destroy(d,REASON_EFFECT) - end -end +--レプティアの武者騎兵 +function c93124273.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(93124273,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_START) + e2:SetTarget(c93124273.target) + e2:SetOperation(c93124273.operation) + c:RegisterEffect(e2) +end +function c93124273.target(e,tp,eg,ep,ev,re,r,rp,chk) + local d=Duel.GetAttackTarget() + if chk ==0 then return Duel.GetAttacker()==e:GetHandler() + and d and d:IsFaceup() and not d:IsType(TYPE_PENDULUM) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,d,1,0,0) +end +function c93124273.operation(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + if d:IsRelateToBattle() then + Duel.Destroy(d,REASON_EFFECT) + end +end diff --git a/script/c93130021.lua b/script/c93130021.lua index 96dfef20..4632aa51 100644 --- a/script/c93130021.lua +++ b/script/c93130021.lua @@ -16,11 +16,10 @@ end function c93130021.filter(c) return c:IsFaceup() and c:IsType(TYPE_SPELL+TYPE_TRAP) end -function c93130021.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c93130021.filter(chkc) end +function c93130021.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end local c=e:GetHandler() - local t1=Duel.IsExistingTarget(c93130021.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + local t1=Duel.IsExistingMatchingCard(c93130021.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) local t2=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsPlayerCanSpecialSummonMonster(tp,93130022,0,0x4011,c:GetAttack(),c:GetDefense(),c:GetLevel(),c:GetRace(),c:GetAttribute()) Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(93130021,0)) @@ -34,27 +33,25 @@ function c93130021.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) else op=Duel.SelectOption(tp,aux.Stringid(93130021,1)) end e:SetLabel(op) if op==1 then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) e:SetCategory(CATEGORY_DESTROY) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c93130021.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + local g=Duel.GetMatchingGroup(c93130021.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) elseif op==2 then - e:SetProperty(0) e:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) else - e:SetProperty(0) e:SetCategory(CATEGORY_ATKCHANGE) end end function c93130021.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if e:GetLabel()==1 then - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c93130021.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) end elseif e:GetLabel()==2 then local atk=c:GetAttack() diff --git a/script/c93157004.lua b/script/c93157004.lua index 5cdee6b5..b069af6e 100644 --- a/script/c93157004.lua +++ b/script/c93157004.lua @@ -1,274 +1,269 @@ ---ヴァイロン・オメガ -function c93157004.initial_effect(c) - --synchro summon - c:EnableReviveLimit() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_EXTRA) - e1:SetCondition(c93157004.syncon) - e1:SetOperation(c93157004.synop) - e1:SetValue(SUMMON_TYPE_SYNCHRO) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(93157004,0)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetCondition(c93157004.descon) - e2:SetTarget(c93157004.destg) - e2:SetOperation(c93157004.desop) - c:RegisterEffect(e2) - --equip - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(93157004,1)) - e3:SetCategory(CATEGORY_EQUIP) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetTarget(c93157004.eqtg) - e3:SetOperation(c93157004.eqop) - c:RegisterEffect(e3) - --negate - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(93157004,2)) - e4:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetCode(EVENT_CHAINING) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e4:SetRange(LOCATION_MZONE) - e4:SetCondition(c93157004.discon) - e4:SetCost(c93157004.discost) - e4:SetTarget(c93157004.distg) - e4:SetOperation(c93157004.disop) - c:RegisterEffect(e4) - --double tuner - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e5:SetCode(21142671) - c:RegisterEffect(e5) -end -function c93157004.matfilter1(c,syncard) - return c:IsType(TYPE_TUNER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) -end -function c93157004.matfilter2(c,syncard) - return c:IsNotTuner() and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsSetCard(0x30) and c:IsCanBeSynchroMaterial(syncard) -end -function c93157004.synfilter1(c,syncard,lv,g1,g2,g3,g4) - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - local f1=c.tuner_filter - if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then - return g3:IsExists(c93157004.synfilter2,1,c,syncard,lv-tlv,g2,g4,f1,c) - else - return g1:IsExists(c93157004.synfilter2,1,c,syncard,lv-tlv,g2,g4,f1,c) - end -end -function c93157004.synfilter2(c,syncard,lv,g2,g4,f1,tuner1) - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - local f2=c.tuner_filter - if f1 and not f1(c) then return false end - if f2 and not f2(tuner1) then return false end - if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not c:IsLocation(LOCATION_HAND)) or c:IsHasEffect(EFFECT_HAND_SYNCHRO) then - return g4:IsExists(c93157004.synfilter3,1,nil,syncard,lv-tlv,f1,f2) - else - return g2:IsExists(c93157004.synfilter3,1,nil,syncard,lv-tlv,f1,f2) - end -end -function c93157004.synfilter3(c,syncard,lv,f1,f2) - local mlv=c:GetSynchroLevel(syncard) - local lv1=bit.band(mlv,0xffff) - local lv2=bit.rshift(mlv,16) - return (lv1==lv or lv2==lv) and (not f1 or f1(c)) and (not f2 or f2(c)) -end -function c93157004.syncon(e,c,tuner,mg) - if c==nil then return true end - local tp=c:GetControler() - if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end - local g1=nil - local g2=nil - local g3=nil - local g4=nil - if mg then - g1=mg:Filter(c93157004.matfilter1,nil,c) - g2=mg:Filter(c93157004.matfilter2,nil,c) - g3=mg:Filter(c93157004.matfilter1,nil,c) - g4=mg:Filter(c93157004.matfilter2,nil,c) - else - g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g3=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) - g4=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) - end - local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) - local lv=c:GetLevel() - if tuner then - local tlv=tuner:GetSynchroLevel(c) - if lv-tlv<=0 then return false end - local f1=tuner.tuner_filter - if not pe then - return g1:IsExists(c93157004.synfilter2,1,tuner,c,lv-tlv,g2,g4,f1,tuner) - else - return c93157004.synfilter2(pe:GetOwner(),c,lv-tlv,g2,nil,f1,tuner) - end - end - if not pe then - return g1:IsExists(c93157004.synfilter1,1,nil,c,lv,g1,g2,g3,g4) - else - return c93157004.synfilter1(pe:GetOwner(),c,lv,g1,g2,g3,g4) - end -end -function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) - local g=Group.CreateGroup() - local g1=nil - local g2=nil - local g3=nil - local g4=nil - if mg then - g1=mg:Filter(c93157004.matfilter1,nil,c) - g2=mg:Filter(c93157004.matfilter2,nil,c) - g3=mg:Filter(c93157004.matfilter1,nil,c) - g4=mg:Filter(c93157004.matfilter2,nil,c) - else - g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g3=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) - g4=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) - end - local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) - local lv=c:GetLevel() - if tuner then - g:AddCard(tuner) - local lv1=tuner:GetSynchroLevel(c) - local f1=tuner.tuner_filter - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local tuner2=nil - if not pe then - local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner,c,lv-lv1,g2,g4,f1,tuner) - tuner2=t2:GetFirst() - else - tuner2=pe:GetOwner() - Group.FromCards(tuner2):Select(tp,1,1,nil) - end - g:AddCard(tuner2) - local lv2=tuner2:GetSynchroLevel(c) - local f2=tuner2.tuner_filter - local m3=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - if tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then - m3=g4:FilterSelect(tp,c93157004.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) - else - m3=g2:FilterSelect(tp,c93157004.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) - end - g:Merge(m3) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local tuner1=nil - local hand=nil - if not pe then - local t1=g1:FilterSelect(tp,c93157004.synfilter1,1,1,nil,c,lv,g1,g2,g3,g4) - tuner1=t1:GetFirst() - else - tuner1=pe:GetOwner() - Group.FromCards(tuner1):Select(tp,1,1,nil) - end - g:AddCard(tuner1) - local lv1=tuner1:GetSynchroLevel(c) - local f1=tuner1.tuner_filter - local tuner2=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then - local t2=g3:FilterSelect(tp,c93157004.synfilter2,1,1,tuner1,c,lv-lv1,g2,g4,f1,tuner1) - tuner2=t2:GetFirst() - else - local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner1,c,lv-lv1,g2,g4,f1,tuner1) - tuner2=t2:GetFirst() - end - g:AddCard(tuner2) - local lv2=tuner2:GetSynchroLevel(c) - local f2=tuner2.tuner_filter - local m3=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not tuner2:IsLocation(LOCATION_HAND)) - or tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then - m3=g4:FilterSelect(tp,c93157004.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) - else - m3=g2:FilterSelect(tp,c93157004.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) - end - g:Merge(m3) - end - c:SetMaterial(g) - Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) -end -function c93157004.descon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c93157004.desfilter(c) - return c:IsFaceup() and bit.band(c:GetSummonType(),SUMMON_TYPE_NORMAL)~=0 -end -function c93157004.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local g=Duel.GetMatchingGroup(c93157004.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c93157004.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c93157004.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - if g:GetCount()>0 then - Duel.Destroy(g,REASON_EFFECT) - end -end -function c93157004.eqfilter(c) - return c:IsSetCard(0x30) and c:IsType(TYPE_MONSTER) and not c:IsForbidden() -end -function c93157004.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c93157004.eqfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c93157004.eqfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c93157004.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and c:IsFaceup() and c:IsRelateToEffect(e) then - if not Duel.Equip(tp,tc,c) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c93157004.eqlimit) - tc:RegisterEffect(e1) - end -end -function c93157004.eqlimit(e,c) - return e:GetOwner()==c -end -function c93157004.discon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and re:IsActiveType(TYPE_MONSTER) - and Duel.IsChainNegatable(ev) -end -function c93157004.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(Card.IsAbleToGraveAsCost,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c93157004.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c93157004.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--ヴァイロン・オメガ +function c93157004.initial_effect(c) + --synchro summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c93157004.syncon) + e1:SetOperation(c93157004.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(93157004,0)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetCondition(c93157004.descon) + e2:SetTarget(c93157004.destg) + e2:SetOperation(c93157004.desop) + c:RegisterEffect(e2) + --equip + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(93157004,1)) + e3:SetCategory(CATEGORY_EQUIP) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetTarget(c93157004.eqtg) + e3:SetOperation(c93157004.eqop) + c:RegisterEffect(e3) + --negate + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(93157004,2)) + e4:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetCode(EVENT_CHAINING) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c93157004.discon) + e4:SetCost(c93157004.discost) + e4:SetTarget(c93157004.distg) + e4:SetOperation(c93157004.disop) + c:RegisterEffect(e4) + --double tuner + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e5:SetCode(21142671) + c:RegisterEffect(e5) +end +function c93157004.matfilter1(c,syncard) + return c:IsType(TYPE_TUNER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) +end +function c93157004.matfilter2(c,syncard) + return c:IsNotTuner() and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsSetCard(0x30) and c:IsCanBeSynchroMaterial(syncard) +end +function c93157004.synfilter1(c,syncard,lv,g1,g2,g3,g4) + local f1=c.tuner_filter + if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then + return g3:IsExists(c93157004.synfilter2,1,c,syncard,lv,g2,g4,f1,c) + else + return g1:IsExists(c93157004.synfilter2,1,c,syncard,lv,g2,g4,f1,c) + end +end +function c93157004.synfilter2(c,syncard,lv,g2,g4,f1,tuner1) + if c==tuner1 then return false end + local f2=c.tuner_filter + if f1 and not f1(c) then return false end + if f2 and not f2(tuner1) then return false end + Duel.SetSelectedCard(Group.FromCards(c,tuner1)) + if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not c:IsLocation(LOCATION_HAND)) or c:IsHasEffect(EFFECT_HAND_SYNCHRO) then + local mg=g4:Filter(c93157004.synfilter3,nil,f1,f2) + return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard) + else + local mg=g2:Filter(c93157004.synfilter3,nil,f1,f2) + return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard) + end +end +function c93157004.synfilter3(c,f1,f2) + return (not f1 or f1(c)) and (not f2 or f2(c)) +end +function c93157004.syncon(e,c,tuner,mg) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end + local g1=nil + local g2=nil + local g3=nil + local g4=nil + if mg then + g1=mg:Filter(c93157004.matfilter1,nil,c) + g2=mg:Filter(c93157004.matfilter2,nil,c) + g3=g1:Clone() + g4=g2:Clone() + else + g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + g4=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + local f1=tuner.tuner_filter + if not pe then + return g1:IsExists(c93157004.synfilter2,1,tuner,c,lv,g2,g4,f1,tuner) + else + return c93157004.synfilter2(pe:GetOwner(),c,lv,g2,nil,f1,tuner) + end + end + if not pe then + return g1:IsExists(c93157004.synfilter1,1,nil,c,lv,g1,g2,g3,g4) + else + return c93157004.synfilter1(pe:GetOwner(),c,lv,g1,g2,g3,g4) + end +end +function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) + local g=Group.CreateGroup() + local g1=nil + local g2=nil + local g3=nil + local g4=nil + if mg then + g1=mg:Filter(c93157004.matfilter1,nil,c) + g2=mg:Filter(c93157004.matfilter2,nil,c) + g3=g1:Clone() + g4=g2:Clone() + else + g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + g4=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + g:AddCard(tuner) + local f1=tuner.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner2=nil + if not pe then + local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner,c,lv,g2,g4,f1,tuner) + tuner2=t2:GetFirst() + else + tuner2=pe:GetOwner() + Group.FromCards(tuner2):Select(tp,1,1,nil) + end + g:AddCard(tuner2) + local f2=tuner2.tuner_filter + local m3=nil + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then + local mg4=g4:Filter(c93157004.synfilter3,nil,f1,f2) + m3=mg4:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) + else + local mg2=g2:Filter(c93157004.synfilter3,nil,f1,f2) + m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) + end + g:Merge(m3) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner1=nil + if not pe then + local t1=g1:FilterSelect(tp,c93157004.synfilter1,1,1,nil,c,lv,g1,g2,g3,g4) + tuner1=t1:GetFirst() + else + tuner1=pe:GetOwner() + Group.FromCards(tuner1):Select(tp,1,1,nil) + end + g:AddCard(tuner1) + local f1=tuner1.tuner_filter + local tuner2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then + local t2=g3:FilterSelect(tp,c93157004.synfilter2,1,1,tuner1,c,lv,g2,g4,f1,tuner1) + tuner2=t2:GetFirst() + else + local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner1,c,lv,g2,g4,f1,tuner1) + tuner2=t2:GetFirst() + end + g:AddCard(tuner2) + local f2=tuner2.tuner_filter + local m3=nil + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not tuner2:IsLocation(LOCATION_HAND)) + or tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then + local mg4=g4:Filter(c93157004.synfilter3,nil,f1,f2) + m3=mg4:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) + else + local mg2=g2:Filter(c93157004.synfilter3,nil,f1,f2) + m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) + end + g:Merge(m3) + end + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c93157004.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c93157004.desfilter(c) + return c:IsFaceup() and bit.band(c:GetSummonType(),SUMMON_TYPE_NORMAL)~=0 +end +function c93157004.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c93157004.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c93157004.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c93157004.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c93157004.eqfilter(c) + return c:IsSetCard(0x30) and c:IsType(TYPE_MONSTER) and not c:IsForbidden() +end +function c93157004.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c93157004.eqfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c93157004.eqfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c93157004.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and c:IsFaceup() and c:IsRelateToEffect(e) then + if not Duel.Equip(tp,tc,c) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c93157004.eqlimit) + tc:RegisterEffect(e1) + end +end +function c93157004.eqlimit(e,c) + return e:GetOwner()==c +end +function c93157004.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and re:IsActiveType(TYPE_MONSTER) + and Duel.IsChainNegatable(ev) +end +function c93157004.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(Card.IsAbleToGraveAsCost,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c93157004.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c93157004.disop(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c93211810.lua b/script/c93211810.lua index 1633bc24..7eff706c 100644 --- a/script/c93211810.lua +++ b/script/c93211810.lua @@ -1,115 +1,115 @@ ---超音速波 -function c93211810.initial_effect(c) - --atkup - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c93211810.condition) - e1:SetCost(c93211810.cost) - e1:SetTarget(c93211810.target) - e1:SetOperation(c93211810.activate) - c:RegisterEffect(e1) - if not c93211810.global_check then - c93211810.global_check=true - c93211810[0]=0 - c93211810[1]=0 - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_ATTACK_ANNOUNCE) - ge1:SetOperation(c93211810.checkop) - Duel.RegisterEffect(ge1,0) - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) - ge2:SetOperation(c93211810.clear) - Duel.RegisterEffect(ge2,0) - end -end -function c93211810.checkop(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - if tc:GetFlagEffect(93211810)==0 then - c93211810[ep]=c93211810[ep]+1 - tc:RegisterFlagEffect(93211810,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - end -end -function c93211810.clear(e,tp,eg,ep,ev,re,r,rp) - c93211810[0]=0 - c93211810[1]=0 -end -function c93211810.condition(e,tp,eg,ep,ev,re,r,rp) - local ph=Duel.GetCurrentPhase() - return Duel.GetTurnPlayer()==tp and ph=2 + return Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,2,e:GetHandler()) and Duel.IsExistingMatchingCard(c93224848.filter,tp,LOCATION_ONFIELD,0,1,nil) end function c93224848.cfilter(c) diff --git a/script/c93238626.lua b/script/c93238626.lua index d62195a5..490238aa 100644 --- a/script/c93238626.lua +++ b/script/c93238626.lua @@ -1,99 +1,99 @@ ---ドン・サウザンドの玉座 -function c93238626.initial_effect(c) - c:SetUniqueOnField(1,0,93238626) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - c:RegisterEffect(e1) - --recover - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(93238626,0)) - e2:SetCategory(CATEGORY_RECOVER) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetRange(LOCATION_SZONE) - e2:SetCountLimit(1) - e2:SetCondition(c93238626.reccon) - e2:SetTarget(c93238626.rectg) - e2:SetOperation(c93238626.recop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(93238626,1)) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EVENT_BE_BATTLE_TARGET) - e3:SetCondition(c93238626.spcon) - e3:SetCost(c93238626.spcost) - e3:SetTarget(c93238626.sptg) - e3:SetOperation(c93238626.spop) - c:RegisterEffect(e3) - if not c93238626.global_check then - c93238626.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_BATTLE_DAMAGE) - ge1:SetOperation(c93238626.checkop) - Duel.RegisterEffect(ge1,0) - end -end -function c93238626.checkop(e,tp,eg,ep,ev,re,r,rp) - Duel.RegisterFlagEffect(ep,93238626,RESET_PHASE+PHASE_END,0,1) -end -function c93238626.reccon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c93238626.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local ct=Duel.GetFlagEffect(tp,93238626) - Duel.SetTargetPlayer(tp) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ct*500) -end -function c93238626.recop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local ct=Duel.GetFlagEffect(tp,93238626) - Duel.Recover(p,ct*500,REASON_EFFECT) -end -function c93238626.spcon(e,tp,eg,ep,ev,re,r,rp) - local at=Duel.GetAttackTarget() - return at:IsFaceup() and at:IsControler(tp) and at:IsSetCard(0x48) and not at:IsSetCard(0x1048) -end -function c93238626.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c93238626.filter(c,e,tp,mc,no) - return c.xyz_number==no and c:IsSetCard(0x1048) and mc:IsCanBeXyzMaterial(c) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c93238626.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local at=Duel.GetAttackTarget() - local m=_G["c"..at:GetCode()] - return m and m.xyz_number and Duel.IsExistingMatchingCard(c93238626.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,at,m.xyz_number) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c93238626.spop(e,tp,eg,ep,ev,re,r,rp) - if not Duel.NegateAttack() then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - local tc=Duel.GetAttackTarget() - local m=_G["c"..tc:GetCode()] - if tc:IsFacedown() or not tc:IsRelateToBattle() or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) or not m then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c93238626.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,m.xyz_number) - local sc=g:GetFirst() - if sc then - local mg=tc:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - sc:SetMaterial(Group.FromCards(tc)) - Duel.Overlay(sc,Group.FromCards(tc)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) - sc:CompleteProcedure() - end -end +--ドン・サウザンドの玉座 +function c93238626.initial_effect(c) + c:SetUniqueOnField(1,0,93238626) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + c:RegisterEffect(e1) + --recover + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(93238626,0)) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetCondition(c93238626.reccon) + e2:SetTarget(c93238626.rectg) + e2:SetOperation(c93238626.recop) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(93238626,1)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EVENT_BE_BATTLE_TARGET) + e3:SetCondition(c93238626.spcon) + e3:SetCost(c93238626.spcost) + e3:SetTarget(c93238626.sptg) + e3:SetOperation(c93238626.spop) + c:RegisterEffect(e3) + if not c93238626.global_check then + c93238626.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_BATTLE_DAMAGE) + ge1:SetOperation(c93238626.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c93238626.checkop(e,tp,eg,ep,ev,re,r,rp) + Duel.RegisterFlagEffect(ep,93238626,RESET_PHASE+PHASE_END,0,1) +end +function c93238626.reccon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c93238626.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ct=Duel.GetFlagEffect(tp,93238626) + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ct*500) +end +function c93238626.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local ct=Duel.GetFlagEffect(tp,93238626) + Duel.Recover(p,ct*500,REASON_EFFECT) +end +function c93238626.spcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttackTarget() + return at:IsFaceup() and at:IsControler(tp) and at:IsSetCard(0x48) and not at:IsSetCard(0x1048) +end +function c93238626.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c93238626.filter(c,e,tp,mc,no) + return c.xyz_number==no and c:IsSetCard(0x1048) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c93238626.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local at=Duel.GetAttackTarget() + local m=_G["c"..at:GetCode()] + return m and m.xyz_number and Duel.IsExistingMatchingCard(c93238626.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp,at,m.xyz_number) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c93238626.spop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.NegateAttack() then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetAttackTarget() + local m=_G["c"..tc:GetCode()] + if tc:IsFacedown() or not tc:IsRelateToBattle() or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) or not m then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c93238626.filter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,m.xyz_number) + local sc=g:GetFirst() + if sc then + local mg=tc:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(tc)) + Duel.Overlay(sc,Group.FromCards(tc)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) + sc:CompleteProcedure() + end +end diff --git a/script/c9327502.lua b/script/c9327502.lua index 5d7c5add..38f35300 100644 --- a/script/c9327502.lua +++ b/script/c9327502.lua @@ -1,32 +1,32 @@ ---E・HERO ボルテック -function c9327502.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetCondition(c9327502.condition) - e1:SetTarget(c9327502.target) - e1:SetOperation(c9327502.operation) - c:RegisterEffect(e1) -end -function c9327502.condition(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c9327502.filter(c,e,tp) - return c:IsFaceup() and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c9327502.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c9327502.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c9327502.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c9327502.filter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c9327502.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--E・HERO ボルテック +function c9327502.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c9327502.condition) + e1:SetTarget(c9327502.target) + e1:SetOperation(c9327502.operation) + c:RegisterEffect(e1) +end +function c9327502.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c9327502.filter(c,e,tp) + return c:IsFaceup() and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c9327502.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c9327502.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c9327502.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c9327502.filter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c9327502.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c93302695.lua b/script/c93302695.lua index 93699750..5f073b20 100644 --- a/script/c93302695.lua +++ b/script/c93302695.lua @@ -1,64 +1,64 @@ ---Kozmoll Wickedwitch -function c93302695.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(93302695,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,93302695) - e1:SetCost(c93302695.spcost) - e1:SetTarget(c93302695.sptg) - e1:SetOperation(c93302695.spop) - c:RegisterEffect(e1) - --indestructable - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(93302695,1)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCost(c93302695.indcost) - e2:SetOperation(c93302695.indop) - c:RegisterEffect(e2) -end -function c93302695.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c93302695.spfilter(c,e,tp) - return c:IsSetCard(0xd2) and c:IsLevelAbove(5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c93302695.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c93302695.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c93302695.spop(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,c93302695.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 c93302695.indcost(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 c93302695.indop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - c:RegisterEffect(e2) - end -end +--Kozmo-ダーク・ローズ +function c93302695.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(93302695,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,93302695) + e1:SetCost(c93302695.spcost) + e1:SetTarget(c93302695.sptg) + e1:SetOperation(c93302695.spop) + c:RegisterEffect(e1) + --indestructable + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(93302695,1)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCost(c93302695.indcost) + e2:SetOperation(c93302695.indop) + c:RegisterEffect(e2) +end +function c93302695.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c93302695.spfilter(c,e,tp) + return c:IsSetCard(0xd2) and c:IsLevelAbove(5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c93302695.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c93302695.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c93302695.spop(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,c93302695.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 c93302695.indcost(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 c93302695.indop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + c:RegisterEffect(e2) + end +end diff --git a/script/c93332803.lua b/script/c93332803.lua index fba6cfe4..8b25ce5f 100644 --- a/script/c93332803.lua +++ b/script/c93332803.lua @@ -1,4 +1,4 @@ ---Dogoran, the Mad Flame Kaiju +--怒炎壊獣ドゴラン function c93332803.initial_effect(c) c:SetUniqueOnField(1,0,20000000,LOCATION_MZONE) --special summon rule @@ -62,11 +62,11 @@ function c93332803.descost(e,tp,eg,ep,ev,re,r,rp,chk) e:GetHandler():RegisterEffect(e1) end function c93332803.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,0,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) + if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 end + local g=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) end function c93332803.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_MZONE,nil) + local g=Duel.GetFieldGroup(tp,0,LOCATION_MZONE) Duel.Destroy(g,REASON_EFFECT) end diff --git a/script/c9336190.lua b/script/c9336190.lua new file mode 100644 index 00000000..15545d3d --- /dev/null +++ b/script/c9336190.lua @@ -0,0 +1,78 @@ +--幻影騎士団ミストクロウズ +function c9336190.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c9336190.target) + e1:SetOperation(c9336190.activate) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(9336190,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c9336190.spcon) + e2:SetTarget(c9336190.sptg) + e2:SetOperation(c9336190.spop) + c:RegisterEffect(e2) +end +function c9336190.filter(c) + return c:IsFaceup() and c:IsSetCard(0x10db) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c9336190.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c9336190.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c9336190.filter,tp,LOCATION_REMOVED,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c9336190.filter,tp,LOCATION_REMOVED,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) +end +function c9336190.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end +function c9336190.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil +end +function c9336190.spfilter(c,e,tp) + return c:IsSetCard(0x10db) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsPlayerCanSpecialSummonMonster(tp,9336190,0x10db,0x11,0,0,c:GetLevel(),RACE_WARRIOR,ATTRIBUTE_DARK) +end +function c9336190.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c9336190.spfilter(chkc,e,tp) end + if chk==0 then return not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonCount(tp,2) + and Duel.IsExistingTarget(c9336190.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c9336190.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + g:AddCard(e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,2,0,0) +end +function c9336190.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsRelateToEffect(e) + and Duel.IsPlayerCanSpecialSummonMonster(tp,9336190,0x10db,0x11,0,0,tc:GetLevel(),RACE_WARRIOR,ATTRIBUTE_DARK) then + c:AddMonsterAttribute(TYPE_NORMAL,0,0,tc:GetLevel(),0,0) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetValue(LOCATION_REMOVED) + e1:SetReset(RESET_EVENT+0x47e0000) + c:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c93368494.lua b/script/c93368494.lua index 1990453b..e72b4fc8 100644 --- a/script/c93368494.lua +++ b/script/c93368494.lua @@ -1,105 +1,105 @@ ---魔妖仙獣 大刃禍是 -function c93368494.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --atk - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(93368494,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c93368494.atkcon) - e2:SetOperation(c93368494.atkop) - c:RegisterEffect(e2) - --spsummon limit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(aux.penlimit) - c:RegisterEffect(e3) - --cannot disable - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - c:RegisterEffect(e4) - --tohand - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(93368494,1)) - e5:SetCategory(CATEGORY_TOHAND) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e5:SetCode(EVENT_SUMMON_SUCCESS) - e5:SetTarget(c93368494.thtg) - e5:SetOperation(c93368494.thop) - c:RegisterEffect(e5) - local e6=e5:Clone() - e6:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e6) - --return - local e7=Effect.CreateEffect(c) - e7:SetDescription(aux.Stringid(93368494,2)) - e7:SetCategory(CATEGORY_TOHAND) - e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e7:SetRange(LOCATION_MZONE) - e7:SetCountLimit(1) - e7:SetCode(EVENT_PHASE+PHASE_END) - e7:SetCondition(c93368494.retcon) - e7:SetTarget(c93368494.rettg) - e7:SetOperation(c93368494.retop) - c:RegisterEffect(e7) - if not c93368494.global_check then - c93368494.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SPSUMMON_SUCCESS) - ge1:SetLabel(93368494) - ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - ge1:SetOperation(aux.sumreg) - Duel.RegisterEffect(ge1,0) - end -end -function c93368494.atkcon(e,tp,eg,ep,ev,re,r,rp) - local at=Duel.GetAttacker() - return at:IsControler(tp) and at:IsSetCard(0xb3) -end -function c93368494.atkop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local at=Duel.GetAttacker() - if at:IsFaceup() and at:IsRelateToBattle() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(300) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) - at:RegisterEffect(e1) - end -end -function c93368494.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end - if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,2,nil) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) -end -function c93368494.thop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - end -end -function c93368494.retcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(93368494)~=0 -end -function c93368494.rettg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) -end -function c93368494.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SendtoHand(c,nil,REASON_EFFECT) - end -end +--魔妖仙獣 大刃禍是 +function c93368494.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --atk + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(93368494,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c93368494.atkcon) + e2:SetOperation(c93368494.atkop) + c:RegisterEffect(e2) + --spsummon limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.penlimit) + c:RegisterEffect(e3) + --cannot disable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + c:RegisterEffect(e4) + --tohand + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(93368494,1)) + e5:SetCategory(CATEGORY_TOHAND) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e5:SetCode(EVENT_SUMMON_SUCCESS) + e5:SetTarget(c93368494.thtg) + e5:SetOperation(c93368494.thop) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e6) + --return + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(93368494,2)) + e7:SetCategory(CATEGORY_TOHAND) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetRange(LOCATION_MZONE) + e7:SetCountLimit(1) + e7:SetCode(EVENT_PHASE+PHASE_END) + e7:SetCondition(c93368494.retcon) + e7:SetTarget(c93368494.rettg) + e7:SetOperation(c93368494.retop) + c:RegisterEffect(e7) + if not c93368494.global_check then + c93368494.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SPSUMMON_SUCCESS) + ge1:SetLabel(93368494) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + Duel.RegisterEffect(ge1,0) + end +end +function c93368494.atkcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:IsControler(tp) and at:IsSetCard(0xb3) +end +function c93368494.atkop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local at=Duel.GetAttacker() + if at:IsFaceup() and at:IsRelateToBattle() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(300) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + at:RegisterEffect(e1) + end +end +function c93368494.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsAbleToHand() end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,2,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c93368494.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + end +end +function c93368494.retcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(93368494)~=0 +end +function c93368494.rettg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) +end +function c93368494.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SendtoHand(c,nil,REASON_EFFECT) + end +end diff --git a/script/c93379652.lua b/script/c93379652.lua index d6dcbb11..cb7de924 100644 --- a/script/c93379652.lua +++ b/script/c93379652.lua @@ -1,53 +1,53 @@ ---ジェムナイト・プリズムオーラ -function c93379652.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsRace,RACE_THUNDER),true) - --spsummon condition - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e2:SetCode(EFFECT_SPSUMMON_CONDITION) - e2:SetValue(c93379652.splimit) - c:RegisterEffect(e2) - --destroy - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(93379652,0)) - e3:SetCategory(CATEGORY_DESTROY) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCost(c93379652.cost) - e3:SetTarget(c93379652.target) - e3:SetOperation(c93379652.operation) - c:RegisterEffect(e3) -end -function c93379652.splimit(e,se,sp,st) - return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION -end -function c93379652.costfilter(c) - return c:IsSetCard(0x1047) and c:IsAbleToGraveAsCost() -end -function c93379652.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c93379652.costfilter,tp,LOCATION_HAND,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c93379652.costfilter,tp,LOCATION_HAND,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c93379652.filter(c) - return c:IsFaceup() -end -function c93379652.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c93379652.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c93379652.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c93379652.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c93379652.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--ジェムナイト・プリズムオーラ +function c93379652.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),aux.FilterBoolFunction(Card.IsRace,RACE_THUNDER),true) + --spsummon condition + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_SPSUMMON_CONDITION) + e2:SetValue(c93379652.splimit) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(93379652,0)) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCost(c93379652.cost) + e3:SetTarget(c93379652.target) + e3:SetOperation(c93379652.operation) + c:RegisterEffect(e3) +end +function c93379652.splimit(e,se,sp,st) + return not e:GetHandler():IsLocation(LOCATION_EXTRA) or bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION +end +function c93379652.costfilter(c) + return c:IsSetCard(0x1047) and c:IsAbleToGraveAsCost() +end +function c93379652.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c93379652.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c93379652.costfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c93379652.filter(c) + return c:IsFaceup() +end +function c93379652.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c93379652.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c93379652.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c93379652.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c93379652.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c93396832.lua b/script/c93396832.lua index 7446ec97..8802da7b 100644 --- a/script/c93396832.lua +++ b/script/c93396832.lua @@ -22,8 +22,7 @@ function c93396832.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c93396832.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c9342162.lua b/script/c9342162.lua index 9c72ce22..b3d4722a 100644 --- a/script/c9342162.lua +++ b/script/c9342162.lua @@ -1,72 +1,72 @@ ---彼岸の悪鬼 ハロウハウンド -function c9342162.initial_effect(c) - --self destroy - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_SELF_DESTROY) - e1:SetCondition(c9342162.sdcon) - c:RegisterEffect(e1) - --Special Summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(9342162,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_HAND) - e2:SetCountLimit(1,9342162) - e2:SetCondition(c9342162.sscon) - e2:SetTarget(c9342162.sstg) - e2:SetOperation(c9342162.ssop) - c:RegisterEffect(e2) - --to grave - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(9342162,1)) - e3:SetCategory(CATEGORY_TOGRAVE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCountLimit(1,9342162) - e3:SetTarget(c9342162.tgtg) - e3:SetOperation(c9342162.tgop) - c:RegisterEffect(e3) -end -function c9342162.sdfilter(c) - return not c:IsFaceup() or not c:IsSetCard(0xb1) -end -function c9342162.sdcon(e) - return Duel.IsExistingMatchingCard(c9342162.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end -function c9342162.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c9342162.sscon(e,tp,eg,ep,ev,re,r,rp) - return not Duel.IsExistingMatchingCard(c9342162.filter,tp,LOCATION_ONFIELD,0,1,nil) -end -function c9342162.sstg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c9342162.ssop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c9342162.tgfilter(c) - return c:IsSetCard(0xb1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGrave() -end -function c9342162.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c9342162.tgfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c9342162.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c9342162.tgfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end +--彼岸の悪鬼 ハロウハウンド +function c9342162.initial_effect(c) + --self destroy + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_SELF_DESTROY) + e1:SetCondition(c9342162.sdcon) + c:RegisterEffect(e1) + --Special Summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(9342162,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_HAND) + e2:SetCountLimit(1,9342162) + e2:SetCondition(c9342162.sscon) + e2:SetTarget(c9342162.sstg) + e2:SetOperation(c9342162.ssop) + c:RegisterEffect(e2) + --to grave + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(9342162,1)) + e3:SetCategory(CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCountLimit(1,9342162) + e3:SetTarget(c9342162.tgtg) + e3:SetOperation(c9342162.tgop) + c:RegisterEffect(e3) +end +function c9342162.sdfilter(c) + return not c:IsFaceup() or not c:IsSetCard(0xb1) +end +function c9342162.sdcon(e) + return Duel.IsExistingMatchingCard(c9342162.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end +function c9342162.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c9342162.sscon(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c9342162.filter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c9342162.sstg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c9342162.ssop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c9342162.tgfilter(c) + return c:IsSetCard(0xb1) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGrave() +end +function c9342162.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c9342162.tgfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c9342162.tgop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c9342162.tgfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c93445074.lua b/script/c93445074.lua index b5c0d625..a3fedd33 100644 --- a/script/c93445074.lua +++ b/script/c93445074.lua @@ -1,79 +1,79 @@ ---グレイドル・アリゲーター -function c93445074.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c93445074.eqcon) - e1:SetTarget(c93445074.eqtg) - e1:SetOperation(c93445074.eqop) - c:RegisterEffect(e1) -end -function c93445074.eqcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and re:IsActiveType(TYPE_TRAP))) - and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) -end -function c93445074.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) -end -function c93445074.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c93445074.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then - Duel.Equip(tp,c,tc,true) - --Add Equip limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c93445074.eqlimit) - e1:SetLabelObject(tc) - c:RegisterEffect(e1) - --control - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_SET_CONTROL) - e2:SetValue(tp) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - --Destroy - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EVENT_LEAVE_FIELD_P) - e3:SetOperation(c93445074.checkop) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetOperation(c93445074.desop) - e4:SetReset(RESET_EVENT+0x17e0000) - e4:SetLabelObject(e3) - c:RegisterEffect(e4) - end -end -function c93445074.checkop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsDisabled() then - e:SetLabel(1) - else e:SetLabel(0) end -end -function c93445074.desop(e,tp,eg,ep,ev,re,r,rp) - if e:GetLabelObject():GetLabel()~=0 then return end - local tc=e:GetHandler():GetEquipTarget() - if tc and tc:IsLocation(LOCATION_MZONE) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--グレイドル・アリゲーター +function c93445074.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c93445074.eqcon) + e1:SetTarget(c93445074.eqtg) + e1:SetOperation(c93445074.eqop) + c:RegisterEffect(e1) +end +function c93445074.eqcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and re:IsActiveType(TYPE_TRAP))) + and c:IsReason(REASON_DESTROY) and c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) +end +function c93445074.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c93445074.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c93445074.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if c:IsRelateToEffect(e) and tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsControler(1-tp) then + Duel.Equip(tp,c,tc,true) + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c93445074.eqlimit) + e1:SetLabelObject(tc) + c:RegisterEffect(e1) + --control + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_SET_CONTROL) + e2:SetValue(tp) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --Destroy + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EVENT_LEAVE_FIELD_P) + e3:SetOperation(c93445074.checkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetOperation(c93445074.desop) + e4:SetReset(RESET_EVENT+0x17e0000) + e4:SetLabelObject(e3) + c:RegisterEffect(e4) + end +end +function c93445074.checkop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsDisabled() then + e:SetLabel(1) + else e:SetLabel(0) end +end +function c93445074.desop(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabelObject():GetLabel()~=0 then return end + local tc=e:GetHandler():GetEquipTarget() + if tc and tc:IsLocation(LOCATION_MZONE) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c93483212.lua b/script/c93483212.lua index 4846982f..34d7f33e 100644 --- a/script/c93483212.lua +++ b/script/c93483212.lua @@ -14,6 +14,7 @@ function c93483212.initial_effect(c) --special summon local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c93483212.regop) c:RegisterEffect(e2) diff --git a/script/c9348522.lua b/script/c9348522.lua index c8ea72a4..867aa7d9 100644 --- a/script/c9348522.lua +++ b/script/c9348522.lua @@ -1,66 +1,66 @@ ---浮鵺城 -function c9348522.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(9348522,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c9348522.spcon) - e1:SetTarget(c9348522.sptg) - e1:SetOperation(c9348522.spop) - c:RegisterEffect(e1) - --cannot attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c9348522.limtg) - c:RegisterEffect(e2) - if not c9348522.global_check then - c9348522.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SUMMON_SUCCESS) - ge1:SetOperation(c9348522.checkop) - Duel.RegisterEffect(ge1,0) - local ge2=ge1:Clone() - ge2:SetCode(EVENT_SPSUMMON_SUCCESS) - Duel.RegisterEffect(ge2,0) - end -end -function c9348522.checkop(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - while tc do - tc:RegisterFlagEffect(9348522,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) - tc=eg:GetNext() - end -end -function c9348522.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO -end -function c9348522.spfilter(c,e,tp) - return c:GetLevel()==9 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c9348522.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c9348522.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c9348522.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c9348522.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c9348522.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c9348522.limtg(e,c) - return c:IsLevelBelow(8) and c:GetFlagEffect(9348522)~=0 -end +--浮鵺城 +function c9348522.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(9348522,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c9348522.spcon) + e1:SetTarget(c9348522.sptg) + e1:SetOperation(c9348522.spop) + c:RegisterEffect(e1) + --cannot attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c9348522.limtg) + c:RegisterEffect(e2) + if not c9348522.global_check then + c9348522.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetOperation(c9348522.checkop) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + Duel.RegisterEffect(ge2,0) + end +end +function c9348522.checkop(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + while tc do + tc:RegisterFlagEffect(9348522,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) + tc=eg:GetNext() + end +end +function c9348522.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO +end +function c9348522.spfilter(c,e,tp) + return c:GetLevel()==9 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c9348522.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c9348522.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c9348522.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c9348522.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c9348522.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c9348522.limtg(e,c) + return c:IsLevelBelow(8) and c:GetFlagEffect(9348522)~=0 +end diff --git a/script/c93568288.lua b/script/c93568288.lua index 90e3347d..773631d7 100644 --- a/script/c93568288.lua +++ b/script/c93568288.lua @@ -19,7 +19,7 @@ function c93568288.initial_effect(c) e2:SetCategory(CATEGORY_REMOVE) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e2:SetCountLimit(2,93568288) e2:SetCost(c93568288.rmcost) e2:SetTarget(c93568288.rmtg) diff --git a/script/c93599951.lua b/script/c93599951.lua index 81911f6c..d9c3b637 100644 --- a/script/c93599951.lua +++ b/script/c93599951.lua @@ -24,10 +24,12 @@ function c93599951.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) end function c93599951.activate(e,tp,eg,ep,ev,re,r,rp) local tc=e:GetLabelObject() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then + if Duel.NegateAttack() and tc:IsRelateToEffect(e) and tc:IsFaceup() then if tc:IsDefensePos() then Duel.ChangePosition(tc,POS_FACEUP_ATTACK) end - Duel.ChangeAttacker(tc) + if tc:IsAttackable() and not tc:IsImmuneToEffect(e) then + Duel.CalculateDamage(tc,Duel.GetAttackTarget()) + end end end diff --git a/script/c93600443.lua b/script/c93600443.lua index af5533f9..6aff751e 100644 --- a/script/c93600443.lua +++ b/script/c93600443.lua @@ -1,57 +1,57 @@ ---マスク・チェンジ・セカンド -function c93600443.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,93600443+EFFECT_COUNT_CODE_OATH) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCost(c93600443.cost) - e1:SetTarget(c93600443.target) - e1:SetOperation(c93600443.activate) - c:RegisterEffect(e1) -end -function c93600443.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 c93600443.filter(c,e,tp) - local lv=c:GetLevel() - local att=c:GetAttribute() - return lv>0 and c:IsFaceup() - and Duel.IsExistingMatchingCard(c93600443.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,lv,att) -end -function c93600443.spfilter(c,e,tp,lv,att) - return c:IsSetCard(0xa008) and c:GetLevel()>lv and c:IsAttribute(att) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) -end -function c93600443.chkfilter(c,tc) - local lv=tc:GetLevel() - local att=tc:GetAttribute() - return c:IsFaceup() and c:IsLevelBelow(lv) and c:IsAttribute(att) -end -function c93600443.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c93600443.chkfilter(chkc,e:GetLabelObject()) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingTarget(c93600443.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectTarget(tp,c93600443.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) - e:SetLabelObject(g:GetFirst()) -end -function c93600443.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) then return end - local att=tc:GetAttribute() - local lv=tc:GetLevel() - if Duel.SendtoGrave(tc,REASON_EFFECT)==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c93600443.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,lv,att) - if g:GetCount()>0 then - Duel.BreakEffect() - Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) - g:GetFirst():CompleteProcedure() - end -end +--マスク・チェンジ・セカンド +function c93600443.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,93600443+EFFECT_COUNT_CODE_OATH) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCost(c93600443.cost) + e1:SetTarget(c93600443.target) + e1:SetOperation(c93600443.activate) + c:RegisterEffect(e1) +end +function c93600443.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 c93600443.filter(c,e,tp) + local lv=c:GetLevel() + local att=c:GetAttribute() + return lv>0 and c:IsFaceup() + and Duel.IsExistingMatchingCard(c93600443.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,lv,att) +end +function c93600443.spfilter(c,e,tp,lv,att) + return c:IsSetCard(0xa008) and c:GetLevel()>lv and c:IsAttribute(att) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c93600443.chkfilter(c,tc) + local lv=tc:GetLevel() + local att=tc:GetAttribute() + return c:IsFaceup() and c:IsLevelBelow(lv) and c:IsAttribute(att) +end +function c93600443.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c93600443.chkfilter(chkc,e:GetLabelObject()) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(c93600443.filter,tp,LOCATION_MZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectTarget(tp,c93600443.filter,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) + e:SetLabelObject(g:GetFirst()) +end +function c93600443.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + local att=tc:GetAttribute() + local lv=tc:GetLevel() + if Duel.SendtoGrave(tc,REASON_EFFECT)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c93600443.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,lv,att) + if g:GetCount()>0 then + Duel.BreakEffect() + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + g:GetFirst():CompleteProcedure() + end +end diff --git a/script/c9365703.lua b/script/c9365703.lua index 1967c249..a0b9d3e6 100644 --- a/script/c9365703.lua +++ b/script/c9365703.lua @@ -1,38 +1,38 @@ ---スピード・ウォリアー -function c9365703.initial_effect(c) - --summon success - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetOperation(c9365703.sumop) - c:RegisterEffect(e1) - --atk up - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(9365703,0)) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCondition(c9365703.dacon) - e2:SetOperation(c9365703.daop) - c:RegisterEffect(e2) -end -function c9365703.sumop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(9365703,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) -end -function c9365703.dacon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_BATTLE_STEP and Duel.GetCurrentChain()==0 - and e:GetHandler():GetFlagEffect(9365703)~=0 -end -function c9365703.daop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetValue(c:GetBaseAttack()*2) - e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_BATTLE) - c:RegisterEffect(e1) -end +--スピード・ウォリアー +function c9365703.initial_effect(c) + --summon success + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetOperation(c9365703.sumop) + c:RegisterEffect(e1) + --atk up + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(9365703,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c9365703.dacon) + e2:SetOperation(c9365703.daop) + c:RegisterEffect(e2) +end +function c9365703.sumop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(9365703,RESET_EVENT+0x1fc0000+RESET_PHASE+PHASE_END,0,1) +end +function c9365703.dacon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_BATTLE_STEP and Duel.GetCurrentChain()==0 + and e:GetHandler():GetFlagEffect(9365703)~=0 +end +function c9365703.daop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(c:GetBaseAttack()*2) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_BATTLE) + c:RegisterEffect(e1) +end diff --git a/script/c93662626.lua b/script/c93662626.lua index 707a9241..7b0a341d 100644 --- a/script/c93662626.lua +++ b/script/c93662626.lua @@ -1,44 +1,44 @@ ---イグナイト・ウージー -function c93662626.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c93662626.thcon) - e2:SetTarget(c93662626.thtg) - e2:SetOperation(c93662626.thop) - c:RegisterEffect(e2) -end -function c93662626.thcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return pc and pc:IsSetCard(0xc8) -end -function c93662626.filter(c) - return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() -end -function c93662626.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if chk==0 then return Duel.IsExistingMatchingCard(c93662626.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - local g=Group.FromCards(c,pc) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c93662626.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if not pc then return end - local dg=Group.FromCards(c,pc) - if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c93662626.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--イグナイト・ウージー +function c93662626.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c93662626.thcon) + e2:SetTarget(c93662626.thtg) + e2:SetOperation(c93662626.thop) + c:RegisterEffect(e2) +end +function c93662626.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsSetCard(0xc8) +end +function c93662626.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c93662626.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if chk==0 then return Duel.IsExistingMatchingCard(c93662626.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c93662626.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local dg=Group.FromCards(c,pc) + if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c93662626.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c93671934.lua b/script/c93671934.lua index aa087a8b..5e455c3e 100644 --- a/script/c93671934.lua +++ b/script/c93671934.lua @@ -7,35 +7,57 @@ function c93671934.initial_effect(c) c:RegisterEffect(e1) --recover local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_SZONE) + e2:SetCategory(CATEGORY_RECOVER) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e2:SetCode(EVENT_EQUIP) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c93671934.reccon) + e2:SetTarget(c93671934.rectg) e2:SetOperation(c93671934.recop) c:RegisterEffect(e2) --damage local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_SZONE) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e3:SetCode(EVENT_LEAVE_FIELD) + e3:SetRange(LOCATION_SZONE) e3:SetCondition(c93671934.damcon) + e3:SetTarget(c93671934.damtg) e3:SetOperation(c93671934.damop) c:RegisterEffect(e3) end +function c93671934.reccon(e,tp,eg,ep,ev,re,r,rp) + e:SetLabel(eg:GetFirst():GetControler()) + return true +end +function c93671934.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,e:GetLabel(),1000) +end function c93671934.recop(e,tp,eg,ep,ev,re,r,rp) - Duel.Recover(eg:GetFirst():GetControler(),1000,REASON_EFFECT) + Duel.Recover(e:GetLabel(),1000,REASON_EFFECT) end function c93671934.filter(c) return c:GetEquipTarget()~=nil or c:IsReason(REASON_LOST_TARGET) end function c93671934.damcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c93671934.filter,1,nil) + local g=eg:Filter(c93671934.filter,nil) + if g:GetCount()==0 then return false end + local flag=0 + if g:IsExists(Card.IsControler,1,nil,0) then flag=flag+1 end + if g:IsExists(Card.IsControler,1,nil,1) then flag=flag+2 end + e:SetLabel(({0,1,PLAYER_ALL})[flag]) + return true +end +function c93671934.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,e:GetLabel(),1000) end function c93671934.damop(e,tp,eg,ep,ev,re,r,rp) - local g=eg:Filter(c93671934.filter,nil) - if g:IsExists(Card.IsControler,1,nil,tp) then + if e:GetLabel()~=1-tp then Duel.Damage(tp,1000,REASON_EFFECT,true) end - if g:IsExists(Card.IsControler,1,nil,1-tp) then + if e:GetLabel()~=tp then Duel.Damage(1-tp,1000,REASON_EFFECT,true) end Duel.RDComplete() diff --git a/script/c93713837.lua b/script/c93713837.lua index 4ccb7907..e789c865 100644 --- a/script/c93713837.lua +++ b/script/c93713837.lua @@ -8,7 +8,7 @@ function c93713837.initial_effect(c) e1:SetDescription(aux.Stringid(93713837,0)) e1:SetCategory(CATEGORY_POSITION) e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c93715853.lua b/script/c93715853.lua index 524f840b..0392b3c1 100644 --- a/script/c93715853.lua +++ b/script/c93715853.lua @@ -1,31 +1,31 @@ ---魔神アーク・マキナ -function c93715853.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetCondition(c93715853.spcon) - e1:SetTarget(c93715853.sptg) - e1:SetOperation(c93715853.spop) - c:RegisterEffect(e1) -end -function c93715853.spcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c93715853.filter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c93715853.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c93715853.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c93715853.spop(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,c93715853.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--魔神アーク・マキナ +function c93715853.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c93715853.spcon) + e1:SetTarget(c93715853.sptg) + e1:SetOperation(c93715853.spop) + c:RegisterEffect(e1) +end +function c93715853.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c93715853.filter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c93715853.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c93715853.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c93715853.spop(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,aux.NecroValleyFilter(c93715853.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c93730230.lua b/script/c93730230.lua index cd1b774b..85562545 100644 --- a/script/c93730230.lua +++ b/script/c93730230.lua @@ -8,6 +8,7 @@ function c93730230.initial_effect(c) e1:SetDescription(aux.Stringid(93730230,0)) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c93730230.cost) diff --git a/script/c9373534.lua b/script/c9373534.lua index 018e812e..a7f6183f 100644 --- a/script/c9373534.lua +++ b/script/c9373534.lua @@ -1,27 +1,12 @@ --風魔手裏剣 function c9373534.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(c9373534.target) - e1:SetOperation(c9373534.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c9373534.filter) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(700) 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(c9373534.eqlimit) - c:RegisterEffect(e3) --damage local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(9373534,0)) @@ -34,24 +19,8 @@ function c9373534.initial_effect(c) e4:SetOperation(c9373534.damop) c:RegisterEffect(e4) end -function c9373534.eqlimit(e,c) - return c:IsSetCard(0x2b) -end function c9373534.filter(c) - return c:IsFaceup() and c:IsSetCard(0x2b) -end -function c9373534.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==LOCATION_MZONE and c9373534.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c9373534.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c9373534.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c9373534.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 + return c:IsSetCard(0x2b) end function c9373534.damcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) diff --git a/script/c93749093.lua b/script/c93749093.lua index 7663f6df..12e3829b 100644 --- a/script/c93749093.lua +++ b/script/c93749093.lua @@ -30,8 +30,8 @@ function c93749093.spop(e,tp,eg,ep,ev,re,r,rp) ct=math.min(ct,Duel.GetLocationCount(tp,LOCATION_MZONE)) if ct<=0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c93749093.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,1,ct,e:GetHandler(),e,tp) - if g:GetCount()>0 and not g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c93749093.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,1,ct,e:GetHandler(),e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c93751476.lua b/script/c93751476.lua index 823c14b2..cc9f4067 100644 --- a/script/c93751476.lua +++ b/script/c93751476.lua @@ -3,12 +3,13 @@ function c93751476.initial_effect(c) --to grave local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_TO_GRAVE) e1:SetOperation(c93751476.regop) c:RegisterEffect(e1) --set local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(93751476,0)) + e2:SetDescription(aux.Stringid(93751476,1)) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetProperty(EFFECT_FLAG_DELAY) e2:SetCode(EVENT_BE_MATERIAL) diff --git a/script/c93775296.lua b/script/c93775296.lua index d971c226..a1ade880 100644 --- a/script/c93775296.lua +++ b/script/c93775296.lua @@ -1,44 +1,44 @@ ---リバース・リユース -function c93775296.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c93775296.target) - e1:SetOperation(c93775296.activate) - c:RegisterEffect(e1) -end -function c93775296.filter(c,e,tp) - return c:IsType(TYPE_FLIP) - and (c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN)) -end -function c93775296.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c93775296.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c93775296.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - local ct=Duel.GetLocationCount(1-tp,LOCATION_MZONE) - if ct>2 then ct=2 end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c93775296.filter,tp,LOCATION_GRAVE,0,1,ct,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) -end -function c93775296.activate(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) - if g:GetCount()==0 then return end - if g:GetCount()>ft then return end - local tc=g:GetFirst() - while tc do - local spos=0 - if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then spos=spos+POS_FACEUP_DEFENSE end - if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) then spos=spos+POS_FACEDOWN_DEFENSE end - if spos~=0 then Duel.SpecialSummonStep(tc,0,tp,1-tp,false,false,spos) end - tc=g:GetNext() - end - Duel.SpecialSummonComplete() -end +--リバース・リユース +function c93775296.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c93775296.target) + e1:SetOperation(c93775296.activate) + c:RegisterEffect(e1) +end +function c93775296.filter(c,e,tp) + return c:IsType(TYPE_FLIP) + and (c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN)) +end +function c93775296.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c93775296.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c93775296.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local ct=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ct>2 then ct=2 end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c93775296.filter,tp,LOCATION_GRAVE,0,1,ct,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c93775296.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()==0 then return end + if g:GetCount()>ft or (g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end + local tc=g:GetFirst() + while tc do + local spos=0 + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false) then spos=spos+POS_FACEUP_DEFENSE end + if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) then spos=spos+POS_FACEDOWN_DEFENSE end + if spos~=0 then Duel.SpecialSummonStep(tc,0,tp,1-tp,false,false,spos) end + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c93969023.lua b/script/c93969023.lua index f635fa04..782694dc 100644 --- a/script/c93969023.lua +++ b/script/c93969023.lua @@ -1,78 +1,78 @@ ---黒鋼竜 -function c93969023.initial_effect(c) - --equip - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_HAND+LOCATION_MZONE) - e1:SetTarget(c93969023.eqtg) - e1:SetOperation(c93969023.eqop) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetCondition(c93969023.thcon) - e2:SetTarget(c93969023.thtg) - e2:SetOperation(c93969023.thop) - c:RegisterEffect(e2) -end -function c93969023.filter(c) - return c:IsFaceup() and c:IsSetCard(0x3b) -end -function c93969023.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c93969023.filter(chkc) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c93969023.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c93969023.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c93969023.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end - local tc=Duel.GetFirstTarget() - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then - Duel.SendtoGrave(c,REASON_EFFECT) - return - end - Duel.Equip(tp,c,tc,true) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetLabelObject(tc) - e1:SetValue(c93969023.eqlimit) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(600) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) -end -function c93969023.eqlimit(e,c) - return c==e:GetLabelObject() -end -function c93969023.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c93969023.thfilter(c) - return c:IsSetCard(0x3b) and c:IsAbleToHand() -end -function c93969023.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c93969023.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c93969023.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c93969023.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--黒鋼竜 +function c93969023.initial_effect(c) + --equip + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_HAND+LOCATION_MZONE) + e1:SetTarget(c93969023.eqtg) + e1:SetOperation(c93969023.eqop) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetCondition(c93969023.thcon) + e2:SetTarget(c93969023.thtg) + e2:SetOperation(c93969023.thop) + c:RegisterEffect(e2) +end +function c93969023.filter(c) + return c:IsFaceup() and c:IsSetCard(0x3b) +end +function c93969023.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c93969023.filter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c93969023.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,c93969023.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c93969023.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if c:IsLocation(LOCATION_MZONE) and c:IsFacedown() then return end + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 or tc:GetControler()~=tp or tc:IsFacedown() or not tc:IsRelateToEffect(e) then + Duel.SendtoGrave(c,REASON_EFFECT) + return + end + Duel.Equip(tp,c,tc,true) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabelObject(tc) + e1:SetValue(c93969023.eqlimit) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(600) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) +end +function c93969023.eqlimit(e,c) + return c==e:GetLabelObject() +end +function c93969023.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c93969023.thfilter(c) + return c:IsSetCard(0x3b) and c:IsAbleToHand() +end +function c93969023.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c93969023.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c93969023.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c93969023.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c93983867.lua b/script/c93983867.lua index 5facba5d..64ecf5df 100644 --- a/script/c93983867.lua +++ b/script/c93983867.lua @@ -1,63 +1,63 @@ ---トリック・ボックス -function c93983867.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_CONTROL+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCondition(c93983867.condition) - e1:SetTarget(c93983867.target) - e1:SetOperation(c93983867.activate) - c:RegisterEffect(e1) -end -function c93983867.cfilter(c,tp) - return c:IsSetCard(0xc6) and c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) - and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp -end -function c93983867.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c93983867.cfilter,1,nil,tp) -end -function c93983867.spfilter(c,e,tp) - return c:IsSetCard(0xc6) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c93983867.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end - if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) - and Duel.IsExistingMatchingCard(c93983867.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) - local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) -end -function c93983867.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if not tc:IsRelateToEffect(e) then return end - if Duel.GetControl(tc,tp,PHASE_END,1)~=0 then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c93983867.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCountLimit(1) - e1:SetOperation(c93983867.retop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end - end -end -function c93983867.retop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - c:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_CONTROL) - e1:SetValue(c:GetOwner()) - e1:SetReset(RESET_EVENT+0xec0000) - c:RegisterEffect(e1) -end +--トリック・ボックス +function c93983867.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c93983867.condition) + e1:SetTarget(c93983867.target) + e1:SetOperation(c93983867.activate) + c:RegisterEffect(e1) +end +function c93983867.cfilter(c,tp) + return c:IsSetCard(0xc6) and c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) + and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c93983867.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c93983867.cfilter,1,nil,tp) +end +function c93983867.spfilter(c,e,tp) + return c:IsSetCard(0xc6) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c93983867.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) + and Duel.IsExistingMatchingCard(c93983867.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c93983867.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + if Duel.GetControl(tc,tp,PHASE_END,1)~=0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c93983867.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCountLimit(1) + e1:SetOperation(c93983867.retop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end +end +function c93983867.retop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_CONTROL) + e1:SetValue(c:GetOwner()) + e1:SetReset(RESET_EVENT+0xec0000) + c:RegisterEffect(e1) +end diff --git a/script/c94068856.lua b/script/c94068856.lua index 557eaa46..ebbce39d 100644 --- a/script/c94068856.lua +++ b/script/c94068856.lua @@ -1,30 +1,30 @@ ---タイムパッセージ -function c94068856.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c94068856.target) - e1:SetOperation(c94068856.activate) - c:RegisterEffect(e1) -end -function c94068856.filter(c) - return c:IsFaceup() and c:IsSetCard(0x31) -end -function c94068856.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c94068856.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c94068856.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c94068856.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c94068856.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(3) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) -end +--タイムパッセージ +function c94068856.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c94068856.target) + e1:SetOperation(c94068856.activate) + c:RegisterEffect(e1) +end +function c94068856.filter(c) + return c:IsFaceup() and c:IsSetCard(0x31) +end +function c94068856.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c94068856.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c94068856.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c94068856.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c94068856.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(3) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) +end diff --git a/script/c94092230.lua b/script/c94092230.lua index eb53e573..60d2487d 100644 --- a/script/c94092230.lua +++ b/script/c94092230.lua @@ -40,9 +40,9 @@ end function c94092230.tlimit(e,c) return not c:IsSetCard(0x100a) end -function c94092230.ttcon(e,c) +function c94092230.ttcon(e,c,minc) if c==nil then return true end - return Duel.GetTributeCount(c)>=3 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-3 + return minc<=3 and Duel.CheckTribute(c,3) end function c94092230.ttop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,3,3) diff --git a/script/c94096616.lua b/script/c94096616.lua index 0d0981dd..7ce288c3 100644 --- a/script/c94096616.lua +++ b/script/c94096616.lua @@ -1,40 +1,40 @@ ---武神器-オロチ -function c94096616.initial_effect(c) - --direct attack - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(94096616,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c94096616.condition) - e1:SetCost(c94096616.cost) - e1:SetTarget(c94096616.target) - e1:SetOperation(c94096616.operation) - c:RegisterEffect(e1) -end -function c94096616.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c94096616.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c94096616.filter(c) - return c:IsFaceup() and c:IsSetCard(0x88) and not c:IsHasEffect(EFFECT_DIRECT_ATTACK) -end -function c94096616.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c94096616.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c94096616.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,c94096616.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c94096616.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DIRECT_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end +--武神器-オロチ +function c94096616.initial_effect(c) + --direct attack + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(94096616,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c94096616.condition) + e1:SetCost(c94096616.cost) + e1:SetTarget(c94096616.target) + e1:SetOperation(c94096616.operation) + c:RegisterEffect(e1) +end +function c94096616.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c94096616.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c94096616.filter(c) + return c:IsFaceup() and c:IsSetCard(0x88) and not c:IsHasEffect(EFFECT_DIRECT_ATTACK) +end +function c94096616.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c94096616.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c94096616.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c94096616.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c94096616.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c9411399.lua b/script/c9411399.lua index a221cd03..e1514ca8 100644 --- a/script/c9411399.lua +++ b/script/c9411399.lua @@ -1,36 +1,36 @@ ---D-HERO ディアボリックガイ -function c9411399.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(9411399,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_GRAVE) - e1:SetCost(c9411399.cost) - e1:SetTarget(c9411399.target) - e1:SetOperation(c9411399.operation) - c:RegisterEffect(e1) -end -function c9411399.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c9411399.filter(c,e,sp) - return c:IsCode(9411399) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) -end -function c9411399.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c9411399.filter,tp,LOCATION_DECK,0,1,nil,e,tp) - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c9411399.operation(e,tp,eg,ep,ev,re,r,rp) - local sc=Duel.GetFirstMatchingCard(c9411399.filter,tp,LOCATION_DECK,0,nil,e,tp) - if sc~=nil then - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then - Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) - else - Duel.Destroy(sc,REASON_EFFECT) - end - Duel.ShuffleDeck(tp) - end -end +--D-HERO ディアボリックガイ +function c9411399.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(9411399,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_GRAVE) + e1:SetCost(c9411399.cost) + e1:SetTarget(c9411399.target) + e1:SetOperation(c9411399.operation) + c:RegisterEffect(e1) +end +function c9411399.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c9411399.filter(c,e,sp) + return c:IsCode(9411399) and c:IsCanBeSpecialSummoned(e,0,sp,false,false) +end +function c9411399.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c9411399.filter,tp,LOCATION_DECK,0,1,nil,e,tp) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c9411399.operation(e,tp,eg,ep,ev,re,r,rp) + local sc=Duel.GetFirstMatchingCard(c9411399.filter,tp,LOCATION_DECK,0,nil,e,tp) + if sc~=nil then + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP) + else + Duel.Destroy(sc,REASON_EFFECT) + end + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c94119480.lua b/script/c94119480.lua index 79be4adf..464878a3 100644 --- a/script/c94119480.lua +++ b/script/c94119480.lua @@ -8,7 +8,7 @@ function c94119480.initial_effect(c) e1:SetCategory(CATEGORY_DESTROY) e1:SetDescription(aux.Stringid(94119480,0)) e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) e1:SetCost(c94119480.cost) diff --git a/script/c94160895.lua b/script/c94160895.lua new file mode 100644 index 00000000..474de806 --- /dev/null +++ b/script/c94160895.lua @@ -0,0 +1,105 @@ +--真竜凰マリアムネ +--True Draco Mariamune, the Phoenix +--Script by nekrozar +function c94160895.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(94160895,0)) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,94160895) + e1:SetTarget(c94160895.sptg) + e1:SetOperation(c94160895.spop) + c:RegisterEffect(e1) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(94160895,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_DESTROYED) + e2:SetCountLimit(1,94160896) + e2:SetCondition(c94160895.thcon) + e2:SetTarget(c94160895.thtg) + e2:SetOperation(c94160895.thop) + c:RegisterEffect(e2) +end +function c94160895.desfilter(c) + return c:IsType(TYPE_MONSTER) and ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) or c:IsLocation(LOCATION_HAND)) +end +function c94160895.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local loc=LOCATION_MZONE+LOCATION_HAND + if ft<0 then loc=LOCATION_MZONE end + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,88581108) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c94160895.desfilter,tp,loc,loc2,c) + if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and g:GetCount()>=2 and g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WIND) + and (ft>0 or g:IsExists(Card.IsLocation,-ft+1,nil,LOCATION_MZONE)) end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,2,tp,loc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c94160895.rmfilter(c,tp) + return c:IsType(TYPE_MONSTER) and c:IsAbleToRemove(tp) +end +function c94160895.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local loc=LOCATION_MZONE+LOCATION_HAND + if ft<0 then loc=LOCATION_MZONE end + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,88581108) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c94160895.desfilter,tp,loc,loc2,c) + if g:GetCount()<2 or not g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_WIND) then return end + local g1=nil local g2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + if ft<1 then + g1=g:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE) + else + g1=g:Select(tp,1,1,nil) + end + g:RemoveCard(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + if g1:GetFirst():IsAttribute(ATTRIBUTE_WIND) then + g2=g:Select(tp,1,1,nil) + else + g2=g:FilterSelect(tp,Card.IsAttribute,1,1,nil,ATTRIBUTE_WIND) + end + g1:Merge(g2) + local rm=g1:IsExists(Card.IsAttribute,2,nil,ATTRIBUTE_WIND) + if Duel.Destroy(g1,REASON_EFFECT)==2 then + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + return + end + local rg=Duel.GetDecktopGroup(1-tp,4) + if rm and rg:GetCount()>0 and rg:FilterCount(Card.IsAbleToRemove,nil)==4 + and Duel.SelectYesNo(tp,aux.Stringid(94160895,2)) then + Duel.DisableShuffleCheck() + Duel.Remove(rg,POS_FACEUP,REASON_EFFECT) + end + end +end +function c94160895.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_EFFECT) +end +function c94160895.thfilter(c) + return c:GetAttribute()~=ATTRIBUTE_WIND and c:IsRace(RACE_WYRM) and c:IsAbleToHand() +end +function c94160895.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c94160895.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c94160895.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c94160895.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c9418534.lua b/script/c9418534.lua index 66954772..ec5895b8 100644 --- a/script/c9418534.lua +++ b/script/c9418534.lua @@ -1,50 +1,50 @@ ---人造人間-サイコ・リターナー -function c9418534.initial_effect(c) - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(9418534,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetTarget(c9418534.target) - e1:SetOperation(c9418534.operation) - c:RegisterEffect(e1) - --direct attack - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DIRECT_ATTACK) - c:RegisterEffect(e2) -end -function c9418534.filter(c,e,tp) - return c:IsCode(77585513) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c9418534.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c9418534.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c9418534.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c9418534.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c9418534.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetOwnerPlayer(tp) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCondition(c9418534.descon) - e1:SetOperation(c9418534.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) - e1:SetCountLimit(1) - tc:RegisterEffect(e1) - end -end -function c9418534.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c9418534.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--人造人間-サイコ・リターナー +function c9418534.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(9418534,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetTarget(c9418534.target) + e1:SetOperation(c9418534.operation) + c:RegisterEffect(e1) + --direct attack + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DIRECT_ATTACK) + c:RegisterEffect(e2) +end +function c9418534.filter(c,e,tp) + return c:IsCode(77585513) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c9418534.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c9418534.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c9418534.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c9418534.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c9418534.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetOwnerPlayer(tp) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCondition(c9418534.descon) + e1:SetOperation(c9418534.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,2) + e1:SetCountLimit(1) + tc:RegisterEffect(e1) + end +end +function c9418534.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c9418534.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c94212438.lua b/script/c94212438.lua index 28e17bb4..91443029 100644 --- a/script/c94212438.lua +++ b/script/c94212438.lua @@ -44,10 +44,12 @@ end function c94212438.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end if Duel.GetCurrentPhase()==PHASE_END and c94212438.plcon(e,tp,eg,ep,ev,re,r,rp) and Duel.SelectYesNo(tp,94) then + e:SetLabel(94212438) e:SetOperation(c94212438.plop) e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,65) e:GetHandler():RegisterFlagEffect(94212439,RESET_PHASE+PHASE_END,0,1) else + e:SetLabel(0) e:SetOperation(nil) end end diff --git a/script/c94220427.lua b/script/c94220427.lua index eff93893..b997dcd8 100644 --- a/script/c94220427.lua +++ b/script/c94220427.lua @@ -28,7 +28,7 @@ function c94220427.filter1(c,e,tp) and Duel.IsExistingMatchingCard(c94220427.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetCode()) end function c94220427.filter2(c,e,tp,mc,rk,code) - if c:GetOriginalCode()==6165656 and code~=48995978 then return false end + if c.rum_limit_code and code~=c.rum_limit_code then return false end return c:GetRank()==rk and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073)) and mc:IsCanBeXyzMaterial(c) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) end diff --git a/script/c94243005.lua b/script/c94243005.lua index 5e232303..28b84a13 100644 --- a/script/c94243005.lua +++ b/script/c94243005.lua @@ -1,89 +1,89 @@ ---混沌空間 -function c94243005.initial_effect(c) - c:EnableCounterPermit(0x13) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_FZONE) - e2:SetCode(EVENT_REMOVE) - e2:SetOperation(c94243005.ctop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetDescription(aux.Stringid(94243005,0)) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetCountLimit(1) - e3:SetRange(LOCATION_FZONE) - e3:SetTarget(c94243005.sptg) - e3:SetOperation(c94243005.spop) - c:RegisterEffect(e3) - --search - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_TOHAND) - e4:SetDescription(aux.Stringid(94243005,1)) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e4:SetCode(EVENT_LEAVE_FIELD) - e4:SetCondition(c94243005.thcon) - e4:SetTarget(c94243005.thtg) - e4:SetOperation(c94243005.thop) - c:RegisterEffect(e4) -end -function c94243005.ctfilter(c) - return c:IsFaceup() and c:IsType(TYPE_MONSTER) and not c:IsPreviousLocation(0x80+LOCATION_SZONE) and not c:IsType(TYPE_TOKEN) -end -function c94243005.ctop(e,tp,eg,ep,ev,re,r,rp) - local ct=eg:FilterCount(c94243005.ctfilter,nil) - if ct>0 then - e:GetHandler():AddCounter(0x13,ct) - end -end -function c94243005.spfilter(c,e,tp) - local lv=c:GetLevel() - return lv>3 and c:IsFaceup() and Duel.IsCanRemoveCounter(tp,1,0,0x13,lv,REASON_COST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c94243005.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and c94243005.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c94243005.spfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c94243005.spfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,1,nil,e,tp) - Duel.RemoveCounter(tp,1,0,0x13,g:GetFirst():GetLevel(),REASON_COST) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c94243005.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end -function c94243005.thcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetCounter(0x13) - e:SetLabel(ct) - return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp - and ct>0 and rp~=tp and bit.band(r,REASON_EFFECT)~=0 -end -function c94243005.thfilter(c,lv) - return c:IsLevelBelow(lv) and c:IsAttribute(ATTRIBUTE_LIGHT+ATTRIBUTE_DARK) and c:IsAbleToHand() -end -function c94243005.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c94243005.thfilter,tp,LOCATION_DECK,0,1,nil,e:GetLabel()) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c94243005.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c94243005.thfilter,tp,LOCATION_DECK,0,1,1,nil,e:GetLabel()) - if g:GetCount()~=0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--混沌空間 +function c94243005.initial_effect(c) + c:EnableCounterPermit(0x13) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_FZONE) + e2:SetCode(EVENT_REMOVE) + e2:SetOperation(c94243005.ctop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetDescription(aux.Stringid(94243005,0)) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetCountLimit(1) + e3:SetRange(LOCATION_FZONE) + e3:SetTarget(c94243005.sptg) + e3:SetOperation(c94243005.spop) + c:RegisterEffect(e3) + --search + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetDescription(aux.Stringid(94243005,1)) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e4:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e4:SetCode(EVENT_LEAVE_FIELD) + e4:SetCondition(c94243005.thcon) + e4:SetTarget(c94243005.thtg) + e4:SetOperation(c94243005.thop) + c:RegisterEffect(e4) +end +function c94243005.ctfilter(c) + return c:IsFaceup() and c:IsType(TYPE_MONSTER) and not c:IsPreviousLocation(0x80+LOCATION_SZONE) and not c:IsType(TYPE_TOKEN) +end +function c94243005.ctop(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:FilterCount(c94243005.ctfilter,nil) + if ct>0 then + e:GetHandler():AddCounter(0x13,ct) + end +end +function c94243005.spfilter(c,e,tp) + local lv=c:GetLevel() + return lv>3 and c:IsFaceup() and Duel.IsCanRemoveCounter(tp,1,0,0x13,lv,REASON_COST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c94243005.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and c94243005.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c94243005.spfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c94243005.spfilter,tp,LOCATION_REMOVED,LOCATION_REMOVED,1,1,nil,e,tp) + Duel.RemoveCounter(tp,1,0,0x13,g:GetFirst():GetLevel(),REASON_COST) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c94243005.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end +function c94243005.thcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetCounter(0x13) + e:SetLabel(ct) + return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()==tp + and ct>0 and rp~=tp and bit.band(r,REASON_EFFECT)~=0 +end +function c94243005.thfilter(c,lv) + return c:IsLevelBelow(lv) and c:IsAttribute(ATTRIBUTE_LIGHT+ATTRIBUTE_DARK) and c:IsAbleToHand() +end +function c94243005.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c94243005.thfilter,tp,LOCATION_DECK,0,1,nil,e:GetLabel()) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c94243005.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c94243005.thfilter,tp,LOCATION_DECK,0,1,1,nil,e:GetLabel()) + if g:GetCount()~=0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c94303232.lua b/script/c94303232.lua index 2c153d78..c674087c 100644 --- a/script/c94303232.lua +++ b/script/c94303232.lua @@ -60,6 +60,23 @@ function c94303232.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO) local g=Duel.SelectTarget(tp,nil,tp,0,LOCATION_MZONE,1,1,nil) e:SetLabelObject(g:GetFirst()) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetReset(RESET_CHAIN) + e1:SetLabel(Duel.GetCurrentChain()) + e1:SetLabelObject(e) + e1:SetOperation(c94303232.eqop) + Duel.RegisterEffect(e1,tp) +end +function c94303232.eqop(e,tp,eg,ep,ev,re,r,rp) + if re~=e:GetLabelObject() then return end + local c=e:GetHandler() + local tc=re:GetLabelObject() + if tc and c:IsRelateToEffect(re) and tc:IsRelateToEffect(re) and tc:IsFaceup() then + Duel.Equip(tp,c,tc) + end + end end function c94303232.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() @@ -68,7 +85,7 @@ function c94303232.operation(e,tp,eg,ep,ev,re,r,rp) local tc=g:GetFirst() if dc==tc then tc=g:GetNext() end if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - if Duel.Equip(tp,c,tc) and dc:IsRelateToEffect(e) then + if dc:IsRelateToEffect(e) then tc:RegisterFlagEffect(94303233,RESET_EVENT+0x1fe0000,0,1) c:SetCardTarget(dc) local e1=Effect.CreateEffect(c) diff --git a/script/c94377247.lua b/script/c94377247.lua index 24731038..0e665251 100644 --- a/script/c94377247.lua +++ b/script/c94377247.lua @@ -1,4 +1,4 @@ ---仮面魔獣の儀式 -function c94377247.initial_effect(c) - aux.AddRitualProcGreaterCode(c,49064413) -end +--仮面魔獣の儀式 +function c94377247.initial_effect(c) + aux.AddRitualProcGreaterCode(c,49064413) +end diff --git a/script/c94380860.lua b/script/c94380860.lua index 7bdc21f3..dff1fe93 100644 --- a/script/c94380860.lua +++ b/script/c94380860.lua @@ -9,7 +9,7 @@ function c94380860.initial_effect(c) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DRAW) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCost(c94380860.cost) diff --git a/script/c94415058.lua b/script/c94415058.lua index 048afb11..f1b3bff6 100644 --- a/script/c94415058.lua +++ b/script/c94415058.lua @@ -1,86 +1,86 @@ ---星読みの魔術師 -function c94415058.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --actlimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c94415058.actcon) - e2:SetOperation(c94415058.actop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_BE_BATTLE_TARGET) - c:RegisterEffect(e3) - --scale - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_CHANGE_LSCALE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_PZONE) - e4:SetCondition(c94415058.sccon) - e4:SetValue(4) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_CHANGE_RSCALE) - c:RegisterEffect(e5) - -- - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(94415058,0)) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e6:SetCode(EVENT_TO_HAND) - e6:SetRange(LOCATION_MZONE) - e6:SetCountLimit(1) - e6:SetCondition(c94415058.spcon) - e6:SetTarget(c94415058.sptg) - e6:SetOperation(c94415058.spop) - c:RegisterEffect(e6) -end -function c94415058.actcon(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttacker() - if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end - return tc and tc:IsControler(tp) and tc:IsType(TYPE_PENDULUM) -end -function c94415058.actop(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c94415058.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end -function c94415058.aclimit(e,re,tp) - return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c94415058.sccon(e) - local seq=e:GetHandler():GetSequence() - local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) - return not tc or (not tc:IsSetCard(0x98) and not tc:IsSetCard(0x99)) -end -function c94415058.spcon(e,tp,eg,ep,ev,re,r,rp) - local tc=eg:GetFirst() - e:SetLabel(tc:GetCode()) - return eg:GetCount()==1 and rp~=tp and tc:IsReason(REASON_EFFECT) - and tc:GetPreviousControler()==tp and tc:IsPreviousLocation(LOCATION_MZONE) - and tc:IsType(TYPE_PENDULUM) and tc:IsControler(tp) -end -function c94415058.filter(c,e,tp,code) - return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c94415058.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c94415058.filter,tp,LOCATION_HAND,0,1,nil,e,tp,e:GetLabel()) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c94415058.spop(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,c94415058.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,e:GetLabel()) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--星読みの魔術師 +function c94415058.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --actlimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c94415058.actcon) + e2:SetOperation(c94415058.actop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_BE_BATTLE_TARGET) + c:RegisterEffect(e3) + --scale + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_CHANGE_LSCALE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_PZONE) + e4:SetCondition(c94415058.sccon) + e4:SetValue(4) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_CHANGE_RSCALE) + c:RegisterEffect(e5) + -- + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(94415058,0)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_TO_HAND) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c94415058.spcon) + e6:SetTarget(c94415058.sptg) + e6:SetOperation(c94415058.spop) + c:RegisterEffect(e6) +end +function c94415058.actcon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end + return tc and tc:IsControler(tp) and tc:IsType(TYPE_PENDULUM) +end +function c94415058.actop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetTargetRange(0,1) + e1:SetValue(c94415058.aclimit) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c94415058.aclimit(e,re,tp) + return re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c94415058.sccon(e) + local seq=e:GetHandler():GetSequence() + local tc=Duel.GetFieldCard(e:GetHandlerPlayer(),LOCATION_SZONE,13-seq) + return not tc or (not tc:IsSetCard(0x98) and not tc:IsSetCard(0x99)) +end +function c94415058.spcon(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + e:SetLabel(tc:GetCode()) + return eg:GetCount()==1 and rp~=tp and tc:IsReason(REASON_EFFECT) + and tc:GetPreviousControler()==tp and tc:IsPreviousLocation(LOCATION_MZONE) + and tc:IsType(TYPE_PENDULUM) and tc:IsControler(tp) +end +function c94415058.filter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c94415058.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c94415058.filter,tp,LOCATION_HAND,0,1,nil,e,tp,e:GetLabel()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c94415058.spop(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,c94415058.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,e:GetLabel()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c94432298.lua b/script/c94432298.lua index 9ec1ca3e..d56d80c9 100644 --- a/script/c94432298.lua +++ b/script/c94432298.lua @@ -1,73 +1,73 @@ ---殻醒する煉獄 -function c94432298.initial_effect(c) - Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_STANDBY_PHASE,0) - e1:SetTarget(c94432298.tgtg1) - e1:SetOperation(c94432298.tgop) - c:RegisterEffect(e1) - --tograve - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOGRAVE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCountLimit(1) - e2:SetCondition(c94432298.tgcon) - e2:SetCost(c94432298.tgcost) - e2:SetTarget(c94432298.tgtg2) - e2:SetOperation(c94432298.tgop) - c:RegisterEffect(e2) - --tograve - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_SZONE) - e3:SetCode(EFFECT_SELF_TOGRAVE) - e3:SetCondition(c94432298.sdcon) - c:RegisterEffect(e3) -end -function c94432298.tgtg1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY - and Duel.IsExistingMatchingCard(c94432298.filter,tp,LOCATION_DECK,0,1,nil) - and Duel.SelectYesNo(tp,94) then - e:SetCategory(CATEGORY_TOGRAVE) - e:GetHandler():RegisterFlagEffect(94432298,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(94432298,1)) - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) - else - e:SetCategory(0) - end -end -function c94432298.tgcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c94432298.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(94432298)==0 end - e:GetHandler():RegisterFlagEffect(94432298,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c94432298.filter(c) - return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() -end -function c94432298.tgtg2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c94432298.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) -end -function c94432298.tgop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():GetFlagEffect(94432298)==0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c94432298.filter,tp,LOCATION_DECK,0,1,2,nil) - if g:GetCount()>0 then - Duel.SendtoGrave(g,REASON_EFFECT) - end -end -function c94432298.sdfilter(c) - return c:IsFacedown() or not c:IsSetCard(0xbb) -end -function c94432298.sdcon(e) - return Duel.IsExistingMatchingCard(c94432298.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) -end +--殻醒する煉獄 +function c94432298.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_SELF_TOGRAVE) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_STANDBY_PHASE,0) + e1:SetTarget(c94432298.tgtg1) + e1:SetOperation(c94432298.tgop) + c:RegisterEffect(e1) + --tograve + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetCondition(c94432298.tgcon) + e2:SetCost(c94432298.tgcost) + e2:SetTarget(c94432298.tgtg2) + e2:SetOperation(c94432298.tgop) + c:RegisterEffect(e2) + --tograve + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_SZONE) + e3:SetCode(EFFECT_SELF_TOGRAVE) + e3:SetCondition(c94432298.sdcon) + c:RegisterEffect(e3) +end +function c94432298.tgtg1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_STANDBY + and Duel.IsExistingMatchingCard(c94432298.filter,tp,LOCATION_DECK,0,1,nil) + and Duel.SelectYesNo(tp,94) then + e:SetCategory(CATEGORY_TOGRAVE) + e:GetHandler():RegisterFlagEffect(94432298,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + e:GetHandler():RegisterFlagEffect(0,RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(94432298,1)) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) + else + e:SetCategory(0) + end +end +function c94432298.tgcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c94432298.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(94432298)==0 end + e:GetHandler():RegisterFlagEffect(94432298,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c94432298.filter(c) + return c:IsSetCard(0xbb) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave() +end +function c94432298.tgtg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c94432298.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c94432298.tgop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(94432298)==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c94432298.filter,tp,LOCATION_DECK,0,1,2,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end +function c94432298.sdfilter(c) + return c:IsFacedown() or not c:IsSetCard(0xbb) +end +function c94432298.sdcon(e) + return Duel.IsExistingMatchingCard(c94432298.sdfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil) +end diff --git a/script/c94454495.lua b/script/c94454495.lua index cd762455..5fd5a7d7 100644 --- a/script/c94454495.lua +++ b/script/c94454495.lua @@ -1,66 +1,68 @@ ---Kozmo Sliprider -function c94454495.initial_effect(c) - --destroy - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetTarget(c94454495.destg) - e1:SetOperation(c94454495.desop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCondition(c94454495.spcon) - e3:SetCost(c94454495.spcost) - e3:SetTarget(c94454495.sptg) - e3:SetOperation(c94454495.spop) - c:RegisterEffect(e3) -end -function c94454495.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c94454495.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c94454495.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c94454495.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c94454495.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c94454495.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end -function c94454495.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) -end -function c94454495.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and e:GetHandler():IsLocation(LOCATION_GRAVE) end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c94454495.spfilter(c,e,tp) - return c:IsSetCard(0xd2) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c94454495.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c94454495.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c94454495.spop(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,c94454495.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--Kozmo-スリップライダー +function c94454495.initial_effect(c) + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(94454495,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetTarget(c94454495.destg) + e1:SetOperation(c94454495.desop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(94454495,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCondition(c94454495.spcon) + e3:SetCost(c94454495.spcost) + e3:SetTarget(c94454495.sptg) + e3:SetOperation(c94454495.spop) + c:RegisterEffect(e3) +end +function c94454495.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c94454495.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c94454495.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c94454495.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c94454495.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c94454495.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c94454495.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end +function c94454495.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and e:GetHandler():IsLocation(LOCATION_GRAVE) end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c94454495.spfilter(c,e,tp) + return c:IsSetCard(0xd2) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c94454495.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c94454495.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c94454495.spop(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,c94454495.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c94484482.lua b/script/c94484482.lua index a3892953..daafbd7f 100644 --- a/script/c94484482.lua +++ b/script/c94484482.lua @@ -40,16 +40,27 @@ function c94484482.activate(e,tp,eg,ep,ev,re,r,rp) local g=Duel.SelectMatchingCard(tp,c94484482.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp) local tc=g:GetFirst() if tc and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then + local fid=e:GetHandler():GetFieldID() + tc:RegisterFlagEffect(94484482,RESET_EVENT+0x1fe0000,0,1,fid) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetLabel(fid) + e1:SetLabelObject(tc) + e1:SetCondition(c94484482.retcon) e1:SetOperation(c94484482.retop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) + Duel.RegisterEffect(e1,tp) end end +function c94484482.retcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + if tc:GetFlagEffectLabel(94484482)~=e:GetLabel() then + e:Reset() + return false + else return true end +end function c94484482.retop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) + Duel.SendtoHand(e:GetLabelObject(),nil,REASON_EFFECT) end diff --git a/script/c94515289.lua b/script/c94515289.lua index eca02b3c..c49d3e8f 100644 --- a/script/c94515289.lua +++ b/script/c94515289.lua @@ -5,9 +5,13 @@ function c94515289.initial_effect(c) c:EnableReviveLimit() --actlimit local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetOperation(c94515289.operation) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,1) + e1:SetValue(c94515289.aclimit) + e1:SetCondition(c94515289.actcon) c:RegisterEffect(e1) --special summon local e2=Effect.CreateEffect(c) @@ -21,19 +25,12 @@ function c94515289.initial_effect(c) e2:SetOperation(c94515289.spop) c:RegisterEffect(e2) end -function c94515289.operation(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetTargetRange(0,1) - e1:SetValue(c94515289.aclimit) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e1,tp) -end function c94515289.aclimit(e,re,tp) return re:IsHasType(EFFECT_TYPE_ACTIVATE) end +function c94515289.actcon(e) + return Duel.GetAttacker()==e:GetHandler() +end function c94515289.spcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 diff --git a/script/c94568601.lua b/script/c94568601.lua index 8a8ed53d..d775e06a 100644 --- a/script/c94568601.lua +++ b/script/c94568601.lua @@ -51,8 +51,7 @@ function c94568601.disop(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if not g or g:GetCount()==0 then return end if g:IsContains(e:GetHandler()) then - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateEffect(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(re:GetHandler(),REASON_EFFECT) end end diff --git a/script/c94585852.lua b/script/c94585852.lua index 8a2cb9f6..40a9d050 100644 --- a/script/c94585852.lua +++ b/script/c94585852.lua @@ -1,75 +1,75 @@ ---万魔殿-悪魔の巣窟- -function c94585852.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --cost change - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_LPCOST_CHANGE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(1,1) - e2:SetValue(c94585852.costchange) - c:RegisterEffect(e2) - --search - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetRange(LOCATION_FZONE) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetOperation(c94585852.regop) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(94585852,0)) - e4:SetCategory(CATEGORY_TOHAND) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_EVENT_PLAYER+EFFECT_FLAG_DAMAGE_STEP) - e4:SetCode(EVENT_CUSTOM+94585852) - e4:SetTarget(c94585852.target) - e4:SetOperation(c94585852.operation) - c:RegisterEffect(e4) -end -function c94585852.costchange(e,re,rp,val) - if Duel.GetCurrentPhase()==PHASE_STANDBY and re and re:GetHandler():IsSetCard(0x45) and re:GetHandler():IsType(TYPE_MONSTER) then - return 0 - else - return val - end -end -function c94585852.regop(e,tp,eg,ep,ev,re,r,rp) - local lv1=0 - local lv2=0 - local tc=eg:GetFirst() - while tc do - if tc:IsReason(REASON_DESTROY) and not tc:IsReason(REASON_BATTLE) and tc:IsSetCard(0x45) then - local tlv=tc:GetLevel() - if tc:IsControler(0) then - if tlv>lv1 then lv1=tlv end - else - if tlv>lv2 then lv2=tlv end - end - end - tc=eg:GetNext() - end - if lv1>0 then Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+94585852,e,0,0,0,lv1) end - if lv2>0 then Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+94585852,e,0,1,1,lv2) end -end -function c94585852.filter(c,lv) - return c:GetLevel()0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--万魔殿-悪魔の巣窟- +function c94585852.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --cost change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_LPCOST_CHANGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(1,1) + e2:SetValue(c94585852.costchange) + c:RegisterEffect(e2) + --search + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetRange(LOCATION_FZONE) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetOperation(c94585852.regop) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(94585852,0)) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_EVENT_PLAYER+EFFECT_FLAG_DAMAGE_STEP) + e4:SetCode(EVENT_CUSTOM+94585852) + e4:SetTarget(c94585852.target) + e4:SetOperation(c94585852.operation) + c:RegisterEffect(e4) +end +function c94585852.costchange(e,re,rp,val) + if Duel.GetCurrentPhase()==PHASE_STANDBY and re and re:GetHandler():IsSetCard(0x45) and re:GetHandler():IsType(TYPE_MONSTER) then + return 0 + else + return val + end +end +function c94585852.regop(e,tp,eg,ep,ev,re,r,rp) + local lv1=0 + local lv2=0 + local tc=eg:GetFirst() + while tc do + if tc:IsReason(REASON_DESTROY) and not tc:IsReason(REASON_BATTLE) and tc:IsSetCard(0x45) then + local tlv=tc:GetLevel() + if tc:IsControler(0) then + if tlv>lv1 then lv1=tlv end + else + if tlv>lv2 then lv2=tlv end + end + end + tc=eg:GetNext() + end + if lv1>0 then Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+94585852,e,0,0,0,lv1) end + if lv2>0 then Duel.RaiseSingleEvent(e:GetHandler(),EVENT_CUSTOM+94585852,e,0,1,1,lv2) end +end +function c94585852.filter(c,lv) + return c:GetLevel()0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c94662235.lua b/script/c94662235.lua index b7838a2b..d0448b0b 100644 --- a/script/c94662235.lua +++ b/script/c94662235.lua @@ -61,9 +61,8 @@ function c94662235.target2(e,tp,eg,ep,ev,re,r,rp,chk) end end function c94662235.activate2(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) local ec=eg:GetFirst() - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Remove(ec,POS_FACEUP,REASON_EFFECT) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) diff --git a/script/c94689206.lua b/script/c94689206.lua index daddf78f..e0a6adaa 100644 --- a/script/c94689206.lua +++ b/script/c94689206.lua @@ -70,7 +70,7 @@ function c94689206.thop(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetMatchingGroup(c94689206.thfilter,tp,LOCATION_DECK,0,nil) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local sg=g:SelectWithSumEqual(tp,Card.GetLevel,8,1,3) - if sg:GetCount()>0 then + if sg and sg:GetCount()>0 then Duel.SendtoHand(sg,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,sg) end diff --git a/script/c94689635.lua b/script/c94689635.lua index 702acf9b..200e73e7 100644 --- a/script/c94689635.lua +++ b/script/c94689635.lua @@ -38,8 +38,7 @@ function c94689635.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c94689635.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c94739788.lua b/script/c94739788.lua index b40293db..7347f402 100644 --- a/script/c94739788.lua +++ b/script/c94739788.lua @@ -1,17 +1,17 @@ ---洗脳解除 -function c94739788.initial_effect(c) - Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_REMOVE_BRAINWASHING) - e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - c:RegisterEffect(e2) -end +--洗脳解除 +function c94739788.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_REMOVE_BRAINWASHING) + e2:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e2) +end diff --git a/script/c94784213.lua b/script/c94784213.lua index 404c7a04..0a3fefd2 100644 --- a/script/c94784213.lua +++ b/script/c94784213.lua @@ -1,52 +1,52 @@ ---マジェスペクター・フォックス -function c94784213.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetCountLimit(1,94784213) - e2:SetTarget(c94784213.thtg) - e2:SetOperation(c94784213.thop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --cannot target - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e4:SetValue(aux.tgoval) - c:RegisterEffect(e4) - --indes - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e5:SetRange(LOCATION_MZONE) - e5:SetValue(c94784213.indval) - c:RegisterEffect(e5) -end -function c94784213.thfilter(c) - return c:IsSetCard(0xd0) and c:IsType(TYPE_TRAP) and c:IsAbleToHand() -end -function c94784213.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c94784213.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c94784213.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c94784213.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c94784213.indval(e,re,tp) - return tp~=e:GetHandlerPlayer() -end +--マジェスペクター・フォックス +function c94784213.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCountLimit(1,94784213) + e2:SetTarget(c94784213.thtg) + e2:SetOperation(c94784213.thop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --cannot target + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetValue(aux.tgoval) + c:RegisterEffect(e4) + --indes + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e5:SetRange(LOCATION_MZONE) + e5:SetValue(c94784213.indval) + c:RegisterEffect(e5) +end +function c94784213.thfilter(c) + return c:IsSetCard(0xd0) and c:IsType(TYPE_TRAP) and c:IsAbleToHand() +end +function c94784213.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c94784213.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c94784213.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c94784213.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c94784213.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end diff --git a/script/c94793422.lua b/script/c94793422.lua index 04aaef09..07b6281e 100644 --- a/script/c94793422.lua +++ b/script/c94793422.lua @@ -1,21 +1,6 @@ --心眼の鉾 function c94793422.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(c94793422.target) - e1:SetOperation(c94793422.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) + aux.AddEquipProcedure(c) --damage change local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -25,19 +10,6 @@ function c94793422.initial_effect(c) e3:SetOperation(c94793422.damop) c:RegisterEffect(e3) end -function c94793422.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 c94793422.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 c94793422.damcon(e,tp,eg,ep,ev,re,r,rp) return eg:GetFirst()==e:GetHandler():GetEquipTarget() and ep~=tp end diff --git a/script/c94804055.lua b/script/c94804055.lua index 6e02136d..9b2ed31f 100644 --- a/script/c94804055.lua +++ b/script/c94804055.lua @@ -1,87 +1,87 @@ ---ファイヤー・ウォール -function c94804055.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c94804055.target1) - e1:SetOperation(c94804055.operation) - c:RegisterEffect(e1) - --quick - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(94804055,0)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetLabel(1) - e2:SetCondition(c94804055.condition) - e2:SetCost(c94804055.cost) - e2:SetTarget(c94804055.target2) - e2:SetOperation(c94804055.operation) - c:RegisterEffect(e2) - --maintain - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EVENT_PHASE+PHASE_STANDBY) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCondition(c94804055.mtcon) - e3:SetOperation(c94804055.mtop) - c:RegisterEffect(e3) -end -function c94804055.cfilter(c) - return c:IsRace(RACE_PYRO) and c:IsAbleToRemoveAsCost() -end -function c94804055.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return true end - if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) then - local a=Duel.GetAttacker() - if a:IsControler(1-tp) and Duel.GetAttackTarget()==nil - and Duel.IsExistingMatchingCard(c94804055.cfilter,tp,LOCATION_GRAVE,0,1,nil) - and a:IsOnField() and a:IsCanBeEffectTarget(e) and Duel.SelectYesNo(tp,aux.Stringid(94804055,1)) then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - e:SetLabel(1) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c94804055.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) - Duel.SetTargetCard(a) - end - else - e:SetProperty(0) - e:SetLabel(0) - end -end -function c94804055.operation(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - if e:GetLabel()==1 then - Duel.NegateAttack() - end -end -function c94804055.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil and not e:GetHandler():IsStatus(STATUS_CHAINING) -end -function c94804055.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c94804055.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c94804055.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c94804055.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local tg=Duel.GetAttacker() - if chkc then return false end - if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end - Duel.SetTargetCard(tg) -end -function c94804055.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c94804055.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(94804055,2)) then - Duel.PayLPCost(tp,500) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end +--ファイヤー・ウォール +function c94804055.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c94804055.target1) + e1:SetOperation(c94804055.operation) + c:RegisterEffect(e1) + --quick + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(94804055,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetLabel(1) + e2:SetCondition(c94804055.condition) + e2:SetCost(c94804055.cost) + e2:SetTarget(c94804055.target2) + e2:SetOperation(c94804055.operation) + c:RegisterEffect(e2) + --maintain + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EVENT_PHASE+PHASE_STANDBY) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c94804055.mtcon) + e3:SetOperation(c94804055.mtop) + c:RegisterEffect(e3) +end +function c94804055.cfilter(c) + return c:IsRace(RACE_PYRO) and c:IsAbleToRemoveAsCost() +end +function c94804055.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return true end + if Duel.CheckEvent(EVENT_ATTACK_ANNOUNCE) then + local a=Duel.GetAttacker() + if a:IsControler(1-tp) and Duel.GetAttackTarget()==nil + and Duel.IsExistingMatchingCard(c94804055.cfilter,tp,LOCATION_GRAVE,0,1,nil) + and a:IsOnField() and a:IsCanBeEffectTarget(e) and Duel.SelectYesNo(tp,aux.Stringid(94804055,1)) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + e:SetLabel(1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c94804055.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.SetTargetCard(a) + end + else + e:SetProperty(0) + e:SetLabel(0) + end +end +function c94804055.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + if e:GetLabel()==1 then + Duel.NegateAttack() + end +end +function c94804055.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c94804055.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c94804055.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c94804055.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c94804055.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tg=Duel.GetAttacker() + if chkc then return false end + if chk==0 then return tg:IsOnField() and tg:IsCanBeEffectTarget(e) end + Duel.SetTargetCard(tg) +end +function c94804055.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c94804055.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,500) and Duel.SelectYesNo(tp,aux.Stringid(94804055,2)) then + Duel.PayLPCost(tp,500) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end diff --git a/script/c94807487.lua b/script/c94807487.lua index 38b95891..f6a99463 100644 --- a/script/c94807487.lua +++ b/script/c94807487.lua @@ -1,87 +1,52 @@ ---ホープ剣スラッシュ -function c94807487.initial_effect(c) - c:EnableCounterPermit(0x31) - --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(c94807487.target) - e1:SetOperation(c94807487.operation) - c:RegisterEffect(e1) - --Untargetable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e2:SetValue(1) - 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(c94807487.eqlimit) - c:RegisterEffect(e3) - --counter - local e4=Effect.CreateEffect(c) - e4:SetCategory(CATEGORY_COUNTER) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e4:SetProperty(EFFECT_FLAG_DELAY) - e4:SetCode(EVENT_ATTACK_DISABLED) - e4:SetRange(LOCATION_SZONE) - e4:SetOperation(c94807487.regop) - c:RegisterEffect(e4) - --atk - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_EQUIP) - e5:SetCode(EFFECT_UPDATE_ATTACK) - e5:SetValue(c94807487.value) - c:RegisterEffect(e5) - --remove overlay replace - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(94807487,0)) - e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e6:SetCode(EFFECT_OVERLAY_REMOVE_REPLACE) - e6:SetRange(LOCATION_SZONE) - e6:SetCondition(c94807487.rcon) - e6:SetOperation(c94807487.rop) - c:RegisterEffect(e6) -end -function c94807487.eqlimit(e,c) - return c:IsSetCard(0x107f) -end -function c94807487.filter(c) - return c:IsFaceup() and c:IsSetCard(0x107f) -end -function c94807487.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c94807487.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c94807487.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c94807487.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c94807487.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 c94807487.regop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(0x31,1) -end -function c94807487.value(e,c) - return e:GetHandler():GetCounter(0x31)*500 -end -function c94807487.rcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_COST)~=0 and re:GetHandler():IsType(TYPE_XYZ) - and ep==e:GetOwnerPlayer() and e:GetHandler():GetEquipTarget()==re:GetHandler() and re:GetHandler():GetOverlayCount()>=ev-1 -end -function c94807487.rop(e,tp,eg,ep,ev,re,r,rp) - local ct=bit.band(ev,0xffff) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) - if ct>1 then - re:GetHandler():RemoveOverlayCard(tp,ct-1,ct-1,REASON_COST) - end -end +--ホープ剣スラッシュ +function c94807487.initial_effect(c) + c:EnableCounterPermit(0x31) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x107f)) + --Untargetable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetValue(1) + c:RegisterEffect(e2) + --counter + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_COUNTER) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetProperty(EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_ATTACK_DISABLED) + e4:SetRange(LOCATION_SZONE) + e4:SetOperation(c94807487.regop) + c:RegisterEffect(e4) + --atk + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_EQUIP) + e5:SetCode(EFFECT_UPDATE_ATTACK) + e5:SetValue(c94807487.value) + c:RegisterEffect(e5) + --remove overlay replace + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(94807487,0)) + e6:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e6:SetCode(EFFECT_OVERLAY_REMOVE_REPLACE) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c94807487.rcon) + e6:SetOperation(c94807487.rop) + c:RegisterEffect(e6) +end +function c94807487.regop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x31,1) +end +function c94807487.value(e,c) + return e:GetHandler():GetCounter(0x31)*500 +end +function c94807487.rcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_COST)~=0 and re:GetHandler():IsType(TYPE_XYZ) + and ep==e:GetOwnerPlayer() and e:GetHandler():GetEquipTarget()==re:GetHandler() and re:GetHandler():GetOverlayCount()>=ev-1 +end +function c94807487.rop(e,tp,eg,ep,ev,re,r,rp) + local ct=bit.band(ev,0xffff) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) + if ct>1 then + re:GetHandler():RemoveOverlayCard(tp,ct-1,ct-1,REASON_COST) + end +end diff --git a/script/c94820406.lua b/script/c94820406.lua index b6f5d357..63a5eef7 100644 --- a/script/c94820406.lua +++ b/script/c94820406.lua @@ -1,75 +1,75 @@ ---ダーク・フュージョン -function c94820406.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c94820406.target) - e1:SetOperation(c94820406.activate) - c:RegisterEffect(e1) -end -function c94820406.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c94820406.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION+0x10,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c94820406.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c94820406.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c94820406.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c94820406.activate(e,tp,eg,ep,ev,re,r,rp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c94820406.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c94820406.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c94820406.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION+0x10,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2,SUMMON_TYPE_FUSION+0x10) - end - tc:CompleteProcedure() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(aux.tgoval) - tc:RegisterEffect(e1) - end -end +--ダーク・フュージョン +function c94820406.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c94820406.target) + e1:SetOperation(c94820406.activate) + c:RegisterEffect(e1) +end +function c94820406.filter1(c,e) + return not c:IsImmuneToEffect(e) +end +function c94820406.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION+0x10,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c94820406.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp) + local res=Duel.IsExistingMatchingCard(c94820406.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c94820406.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c94820406.activate(e,tp,eg,ep,ev,re,r,rp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetFusionMaterial(tp):Filter(c94820406.filter1,nil,e) + local sg1=Duel.GetMatchingGroup(c94820406.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c94820406.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION+0x10,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2,SUMMON_TYPE_FUSION+0x10) + end + tc:CompleteProcedure() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(aux.tgoval) + tc:RegisterEffect(e1) + end +end diff --git a/script/c94853057.lua b/script/c94853057.lua index 7f8ccf1f..1974d800 100644 --- a/script/c94853057.lua +++ b/script/c94853057.lua @@ -3,7 +3,7 @@ function c94853057.initial_effect(c) --remove local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) e1:SetCode(EFFECT_TO_GRAVE_REDIRECT) e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(0xff,0xff) diff --git a/script/c9485511.lua b/script/c9485511.lua index b9255866..db65b629 100644 --- a/script/c9485511.lua +++ b/script/c9485511.lua @@ -1,66 +1,66 @@ ---U.A.カストディアン -function c9485511.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,9485511) - e1:SetCondition(c9485511.spcon) - e1:SetOperation(c9485511.spop) - c:RegisterEffect(e1) - --indes - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(9485511,0)) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCondition(c9485511.indcon) - e2:SetTarget(c9485511.indtg) - e2:SetOperation(c9485511.indop) - c:RegisterEffect(e2) -end -function c9485511.spfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(9485511) and c:IsAbleToHandAsCost() -end -function c9485511.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c9485511.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c9485511.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectMatchingCard(tp,c9485511.spfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoHand(g,nil,REASON_COST) -end -function c9485511.filter(c) - return c:IsFaceup() and c:IsSetCard(0xb2) -end -function c9485511.indcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c9485511.indtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c9485511.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c9485511.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c9485511.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c9485511.indop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCountLimit(1) - e1:SetValue(c9485511.valcon) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - end -end -function c9485511.valcon(e,re,r,rp) - return bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 -end +--U.A.カストディアン +function c9485511.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,9485511) + e1:SetCondition(c9485511.spcon) + e1:SetOperation(c9485511.spop) + c:RegisterEffect(e1) + --indes + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(9485511,0)) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCondition(c9485511.indcon) + e2:SetTarget(c9485511.indtg) + e2:SetOperation(c9485511.indop) + c:RegisterEffect(e2) +end +function c9485511.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(9485511) and c:IsAbleToHandAsCost() +end +function c9485511.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c9485511.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c9485511.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c9485511.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c9485511.filter(c) + return c:IsFaceup() and c:IsSetCard(0xb2) +end +function c9485511.indcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c9485511.indtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c9485511.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c9485511.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c9485511.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c9485511.indop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCountLimit(1) + e1:SetValue(c9485511.valcon) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end +function c9485511.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 +end diff --git a/script/c94937430.lua b/script/c94937430.lua index b1c8d159..6b68bd03 100644 --- a/script/c94937430.lua +++ b/script/c94937430.lua @@ -1,55 +1,55 @@ ---臨時収入 -function c94937430.initial_effect(c) - c:EnableCounterPermit(0x1) - c:SetCounterLimit(0x1,3) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_TO_DECK) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c94937430.acop) - c:RegisterEffect(e2) - --draw - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_DRAW) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetRange(LOCATION_SZONE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCondition(c94937430.drcon) - e3:SetCost(c94937430.drcost) - e3:SetTarget(c94937430.drtg) - e3:SetOperation(c94937430.drop) - c:RegisterEffect(e3) -end -function c94937430.cfilter(c,tp) - return c:IsLocation(LOCATION_EXTRA) and c:IsControler(tp) -end -function c94937430.acop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if eg:IsExists(c94937430.cfilter,1,nil,tp) then - c:AddCounter(0x1,1) - end -end -function c94937430.drcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetCounter(0x1)==3 -end -function c94937430.drcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c94937430.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(2) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c94937430.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--臨時収入 +function c94937430.initial_effect(c) + c:EnableCounterPermit(0x1) + c:SetCounterLimit(0x1,3) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_TO_DECK) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c94937430.acop) + c:RegisterEffect(e2) + --draw + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DRAW) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetCondition(c94937430.drcon) + e3:SetCost(c94937430.drcost) + e3:SetTarget(c94937430.drtg) + e3:SetOperation(c94937430.drop) + c:RegisterEffect(e3) +end +function c94937430.cfilter(c,tp) + return c:IsLocation(LOCATION_EXTRA) and c:IsControler(tp) +end +function c94937430.acop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if eg:IsExists(c94937430.cfilter,1,nil,tp) then + c:AddCounter(0x1,1) + end +end +function c94937430.drcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetCounter(0x1)==3 +end +function c94937430.drcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c94937430.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(2) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c94937430.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c94944637.lua b/script/c94944637.lua index 101d1d6c..ea3edd1b 100644 --- a/script/c94944637.lua +++ b/script/c94944637.lua @@ -30,10 +30,10 @@ end function c94944637.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,c94944637.filter,tp,LOCATION_GRAVE+LOCATION_HAND,LOCATION_GRAVE,1,1,nil,e,tp) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c94944637.filter),tp,LOCATION_GRAVE+LOCATION_HAND,LOCATION_GRAVE,1,1,nil,e,tp) local c=e:GetHandler() local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)==0 then return end if c:IsFaceup() and c:IsRelateToEffect(e) then c:SetCardTarget(tc) end end diff --git a/script/c94950218.lua b/script/c94950218.lua index 368af8a9..77af9664 100644 --- a/script/c94950218.lua +++ b/script/c94950218.lua @@ -1,14 +1,6 @@ --リバース・ブレイカー function c94950218.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(c94950218.target) - e1:SetOperation(c94950218.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x107f)) --destroy local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(94950218,0)) @@ -21,33 +13,6 @@ function c94950218.initial_effect(c) e2:SetTarget(c94950218.destg) e2:SetOperation(c94950218.desop) 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(c94950218.eqlimit) - c:RegisterEffect(e3) -end -function c94950218.eqlimit(e,c) - return c:IsSetCard(0x107f) -end -function c94950218.filter(c) - return c:IsFaceup() and c:IsSetCard(0x107f) -end -function c94950218.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c94950218.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c94950218.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c94950218.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c94950218.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 c94950218.descon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetAttacker()==e:GetHandler():GetEquipTarget() diff --git a/script/c94973028.lua b/script/c94973028.lua index c02a6272..ac306e3b 100644 --- a/script/c94973028.lua +++ b/script/c94973028.lua @@ -1,102 +1,102 @@ ---幻獣機コルトウィング -function c94973028.initial_effect(c) - --level - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetValue(c94973028.lvval) - 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_INDESTRUCTABLE_BATTLE) - e2:SetCondition(c94973028.indcon) - e2:SetValue(1) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e3) - --token - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(94973028,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetCode(EVENT_SPSUMMON_SUCCESS) - e4:SetCondition(c94973028.spcon) - e4:SetTarget(c94973028.sptg) - e4:SetOperation(c94973028.spop) - c:RegisterEffect(e4) - --destroy - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(94973028,1)) - e5:SetCategory(CATEGORY_DESTROY) - e5:SetType(EFFECT_TYPE_IGNITION) - e5:SetRange(LOCATION_MZONE) - e5:SetCountLimit(1) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET) - e5:SetCost(c94973028.descost) - e5:SetTarget(c94973028.destg) - e5:SetOperation(c94973028.desop) - c:RegisterEffect(e5) -end -function c94973028.lvval(e,c) - local tp=c:GetControler() - local lv=0 - for i=0,4 do - local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) - if tc and tc:IsCode(31533705) then lv=lv+tc:GetLevel() end - end - return lv -end -function c94973028.indcon(e) - return Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,TYPE_TOKEN) -end -function c94973028.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x101b) -end -function c94973028.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c94973028.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) -end -function c94973028.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) -end -function c94973028.spop(e,tp,eg,ep,ev,re,r,rp) - if not c94973028.spcon(e,tp,eg,ep,ev,re,r,rp) then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 then return end - if Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then - local token=Duel.CreateToken(tp,94973029) - Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) - token=Duel.CreateToken(tp,94973029) - Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummonComplete() - end -end -function c94973028.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsType,2,nil,TYPE_TOKEN) end - local g=Duel.SelectReleaseGroup(tp,Card.IsType,2,2,nil,TYPE_TOKEN) - Duel.Release(g,REASON_COST) -end -function c94973028.desfilter(c) - return c:IsAbleToRemove() -end -function c94973028.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and c94973028.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c94973028.desfilter,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c94973028.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) -end -function c94973028.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT,LOCATION_REMOVED) - end -end +--幻獣機コルトウィング +function c94973028.initial_effect(c) + --level + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetValue(c94973028.lvval) + 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_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c94973028.indcon) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e3) + --token + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(94973028,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_SPSUMMON_SUCCESS) + e4:SetCondition(c94973028.spcon) + e4:SetTarget(c94973028.sptg) + e4:SetOperation(c94973028.spop) + c:RegisterEffect(e4) + --destroy + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(94973028,1)) + e5:SetCategory(CATEGORY_DESTROY) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET) + e5:SetCost(c94973028.descost) + e5:SetTarget(c94973028.destg) + e5:SetOperation(c94973028.desop) + c:RegisterEffect(e5) +end +function c94973028.lvval(e,c) + local tp=c:GetControler() + local lv=0 + for i=0,4 do + local tc=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + if tc and tc:IsCode(31533705) then lv=lv+tc:GetLevel() end + end + return lv +end +function c94973028.indcon(e) + return Duel.IsExistingMatchingCard(Card.IsType,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil,TYPE_TOKEN) +end +function c94973028.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x101b) +end +function c94973028.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c94973028.cfilter,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c94973028.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c94973028.spop(e,tp,eg,ep,ev,re,r,rp) + if not c94973028.spcon(e,tp,eg,ep,ev,re,r,rp) then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 then return end + if Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then + local token=Duel.CreateToken(tp,94973029) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + token=Duel.CreateToken(tp,94973029) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummonComplete() + end +end +function c94973028.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsType,2,nil,TYPE_TOKEN) end + local g=Duel.SelectReleaseGroup(tp,Card.IsType,2,2,nil,TYPE_TOKEN) + Duel.Release(g,REASON_COST) +end +function c94973028.desfilter(c) + return c:IsAbleToRemove() +end +function c94973028.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and c94973028.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c94973028.desfilter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c94973028.desfilter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c94973028.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT,LOCATION_REMOVED) + end +end diff --git a/script/c94977269.lua b/script/c94977269.lua index 35fdc771..d732c2d3 100644 --- a/script/c94977269.lua +++ b/script/c94977269.lua @@ -47,111 +47,91 @@ function c94977269.initial_effect(c) c:RegisterEffect(e5) end function c94977269.ffilter1(c) - return c:IsFusionSetCard(0x9d) + return (c:IsFusionSetCard(0x9d) or c:IsHasEffect(511002961)) and not c:IsHasEffect(6205579) end function c94977269.ffilter2(c) - return c:IsAttribute(ATTRIBUTE_DARK) or c:IsHasEffect(4904633) + if c:IsHasEffect(6205579) then return false end + return c:IsHasEffect(511002961) or c:IsFusionAttribute(ATTRIBUTE_DARK) or c:IsHasEffect(4904633) end function c94977269.exfilter(c,g) return c:IsFaceup() and c:IsCanBeFusionMaterial() and not g:IsContains(c) end +function c94977269.check1(c,mg,sg,chkf,tp) + local g=mg:Clone() + if sg:IsContains(c) then g:Sub(sg) end + return g:IsExists(c94977269.check2,1,c,c,chkf,tp) +end +function c94977269.check2(c,c2,chkf,tp) + local g=Group.FromCards(c,c2) + if g:IsExists(aux.TuneMagFusFilter,1,nil,g,tp) then return false end + local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false + local tc=g:GetFirst() + while tc do + if c94977269.ffilter1(tc) or tc:IsHasEffect(511002961) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + if c94977269.ffilter2(tc) or tc:IsHasEffect(511002961) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end + tc=g:GetNext() + end + if chkf~=PLAYER_NONE then + return fs and g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) + else return g1:IsExists(aux.FConditionFilterF2c,1,nil,g2) end +end function c94977269.fuscon(e,g,gc,chkf) if g==nil then return true end + local chkf=bit.band(chkf,0xff) + local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local sg=Group.CreateGroup() + local c=e:GetHandler() local tp=e:GetHandlerPlayer() local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - local exg=Group.CreateGroup() if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then - local sg=Duel.GetMatchingGroup(c94977269.exfilter,tp,0,LOCATION_MZONE,nil,g) - exg:Merge(sg) + sg=Duel.GetMatchingGroup(c94977269.exfilter,tp,0,LOCATION_MZONE,nil,g) + mg:Merge(sg) end - if gc then return (c94977269.ffilter1(gc) and (g:IsExists(c94977269.ffilter2,1,gc) or exg:IsExists(c94977269.ffilter2,1,gc))) - or (c94977269.ffilter2(gc) and (g:IsExists(c94977269.ffilter1,1,gc) or exg:IsExists(c94977269.ffilter1,1,gc))) end - local g1=Group.CreateGroup() - local g2=Group.CreateGroup() - local g3=Group.CreateGroup() - local g4=Group.CreateGroup() - local tc=g:GetFirst() - while tc do - if c94977269.ffilter1(tc) then - g1:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g3:AddCard(tc) end - end - if c94977269.ffilter2(tc) then - g2:AddCard(tc) - if aux.FConditionCheckF(tc,chkf) then g4:AddCard(tc) end - end - tc=g:GetNext() - end - local exg1=exg:Filter(c94977269.ffilter1,nil) - local exg2=exg:Filter(c94977269.ffilter2,nil) - if chkf~=PLAYER_NONE then - return (g3:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g3:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g4:IsExists(aux.FConditionFilterF2,1,nil,g1) - or g4:IsExists(aux.FConditionFilterF2,1,nil,exg1)) - else - return (g1:IsExists(aux.FConditionFilterF2,1,nil,g2) - or g1:IsExists(aux.FConditionFilterF2,1,nil,exg2) - or g2:IsExists(aux.FConditionFilterF2,1,nil,exg1)) + if gc then + if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end + return c94977269.check1(gc,mg,sg,chkf,tp) end + return mg:IsExists(c94977269.check1,1,nil,mg,sg,chkf,tp) end function c94977269.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf) local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local c=e:GetHandler() local exg=Group.CreateGroup() + local mg=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler()) + local p=tp + local sfhchk=false if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then local sg=Duel.GetMatchingGroup(c94977269.exfilter,tp,0,LOCATION_MZONE,nil,eg) exg:Merge(sg) + mg:Merge(sg) + end + if Duel.IsPlayerAffectedByEffect(tp,511004008) and Duel.SelectYesNo(1-tp,65) then + p=1-tp Duel.ConfirmCards(1-tp,g) + if mg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then sfhchk=true end end if gc then - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c94977269.ffilter1(gc) then - sg1:Merge(eg:Filter(c94977269.ffilter2,gc)) - sg2:Merge(exg:Filter(c94977269.ffilter2,gc)) - end - if c94977269.ffilter2(gc) then - sg1:Merge(eg:Filter(c94977269.ffilter1,gc)) - sg2:Merge(exg:Filter(c94977269.ffilter1,gc)) - end - local g1=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c94977269.check2,1,1,gc,gc,chkf) + local tc1=g1:GetFirst() + if c94977269.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g1=sg1:Select(tp,1,1,nil) end + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) return end - local sg=eg:Filter(aux.FConditionFilterF2c,nil,c94977269.ffilter1,c94977269.ffilter2) - local g1=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - if chkf~=PLAYER_NONE then - g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - else g1=sg:Select(tp,1,1,nil) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g1=mg:FilterSelect(p,c94977269.check1,1,1,nil,mg,exg,chkf) local tc1=g1:GetFirst() - local sg1=Group.CreateGroup() - local sg2=Group.CreateGroup() - if c94977269.ffilter1(tc1) then - sg1:Merge(sg:Filter(c94977269.ffilter2,tc1)) - sg2:Merge(exg:Filter(c94977269.ffilter2,tc1)) - end - if c94977269.ffilter2(tc1) then - sg1:Merge(sg:Filter(c94977269.ffilter1,tc1)) - sg2:Merge(exg:Filter(c94977269.ffilter1,tc1)) - end - local g2=nil - if sg1:GetCount()==0 or (sg2:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0))) then + if c94977269.exfilter(tc1,eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg2:Select(tp,1,1,nil) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - g2=sg1:Select(tp,1,1,nil) + mg:Sub(exg) end + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_FMATERIAL) + local g2=mg:FilterSelect(p,c94977269.check2,1,1,tc1,tc1,chkf) + if c94977269.exfilter(g2:GetFirst(),eg) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) end g1:Merge(g2) + if sfhchk then Duel.ShuffleHand(tp) end Duel.SetFusionMaterial(g1) end function c94977269.splimit(e,se,sp,st) diff --git a/script/c94982447.lua b/script/c94982447.lua new file mode 100644 index 00000000..6d9243c0 --- /dev/null +++ b/script/c94982447.lua @@ -0,0 +1,81 @@ +--真竜騎将ドライアスⅢ世 +--Draius III, the True Dracoknight +--Script by dest +function c94982447.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(94982447,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c94982447.otcon) + e1:SetOperation(c94982447.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetCondition(c94982447.spcon) + e2:SetTarget(c94982447.sptg) + e2:SetOperation(c94982447.spop) + c:RegisterEffect(e2) + --cannot be target + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c94982447.tgtg) + e3:SetValue(aux.tgoval) + c:RegisterEffect(e3) + --indes + local e4=e3:Clone() + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetValue(c94982447.indval) + c:RegisterEffect(e4) +end +function c94982447.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsReleasable() +end +function c94982447.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c94982447.otfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c94982447.otop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=Duel.SelectMatchingCard(tp,c94982447.otfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c94982447.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousPosition(POS_FACEUP) and + bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c94982447.spfilter(c,e,tp) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c94982447.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c94982447.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c94982447.spop(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,c94982447.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end +function c94982447.tgtg(e,c) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c~=e:GetHandler() +end +function c94982447.indval(e,re,rp) + return rp~=e:GetHandlerPlayer() +end diff --git a/script/c94997874.lua b/script/c94997874.lua index e5444ce3..7d6529fb 100644 --- a/script/c94997874.lua +++ b/script/c94997874.lua @@ -1,86 +1,87 @@ ---聖占術姫タロットレイ -function c94997874.initial_effect(c) - c:EnableReviveLimit() - --position change - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(94997874,0)) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCountLimit(1,94997874) - e1:SetTarget(c94997874.postg) - e1:SetOperation(c94997874.posop) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetDescription(aux.Stringid(94997874,1)) - e2:SetTarget(c94997874.postg2) - e2:SetOperation(c94997874.posop2) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(94997874,2)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetCondition(c94997874.spcon) - e3:SetTarget(c94997874.sptg) - e3:SetOperation(c94997874.spop) - c:RegisterEffect(e3) -end -function c94997874.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFacedown() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) -end -function c94997874.posop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.ChangePosition(tc,POS_FACEUP_ATTACK) - end -end -function c94997874.posfilter(c) - return c:IsFaceup() and c:IsCanTurnSet() -end -function c94997874.postg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c94997874.posfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c94997874.posfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) - local g=Duel.SelectTarget(tp,c94997874.posfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) -end -function c94997874.posop2(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) - end -end -function c94997874.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c94997874.spfilter(c,e,tp) - return c:IsType(TYPE_FLIP) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) -end -function c94997874.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c94997874.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c94997874.spop(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,c94997874.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) - Duel.ConfirmCards(1-tp,g) - end -end +--聖占術姫タロットレイ +function c94997874.initial_effect(c) + c:EnableReviveLimit() + --position change + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(94997874,0)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,94997874) + e1:SetTarget(c94997874.postg) + e1:SetOperation(c94997874.posop) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetDescription(aux.Stringid(94997874,1)) + e2:SetTarget(c94997874.postg2) + e2:SetOperation(c94997874.posop2) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(94997874,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetCondition(c94997874.spcon) + e3:SetTarget(c94997874.sptg) + e3:SetOperation(c94997874.spop) + c:RegisterEffect(e3) +end +function c94997874.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFacedown() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c94997874.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_ATTACK) + end +end +function c94997874.posfilter(c) + return c:IsFaceup() and c:IsCanTurnSet() +end +function c94997874.postg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c94997874.posfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c94997874.posfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE) + local g=Duel.SelectTarget(tp,c94997874.posfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c94997874.posop2(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + end +end +function c94997874.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c94997874.spfilter(c,e,tp) + return c:IsType(TYPE_FLIP) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) +end +function c94997874.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c94997874.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c94997874.spop(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,aux.NecroValleyFilter(c94997874.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c95000000.lua b/script/c95000000.lua new file mode 100644 index 00000000..e372f44c --- /dev/null +++ b/script/c95000000.lua @@ -0,0 +1,361 @@ +--Boss Duel +function c95000000.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetCountLimit(1) + e1:SetCondition(c95000000.stcon) + e1:SetOperation(c95000000.stop) + c:RegisterEffect(e1) + --no summon limit + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SET_SUMMON_COUNT_LIMIT) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_REMOVED) + e3:SetTargetRange(1,0) + e3:SetValue(99) + c:RegisterEffect(e3) + --grave to hand + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetRange(LOCATION_REMOVED) + e4:SetCountLimit(1) + e4:SetOperation(c95000000.thop) + c:RegisterEffect(e4) + --cannot lose for draw + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_PLAYER_TARGET) + e5:SetCode(EFFECT_DRAW_COUNT) + e5:SetTargetRange(1,0) + e5:SetValue(c95000000.value) + e5:SetCondition(c95000000.deckcon) + e5:SetRange(LOCATION_REMOVED) + c:RegisterEffect(e5) + --rearrange + local e6=Effect.CreateEffect(c) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e6:SetCode(EVENT_PREDRAW) + e6:SetRange(LOCATION_REMOVED) + e6:SetCountLimit(1) + e6:SetCondition(c95000000.ordercon) + e6:SetOperation(c95000000.orderop) + c:RegisterEffect(e6) + local e7=e6:Clone() + e7:SetCode(EVENT_CHAIN_SOLVED) + c:RegisterEffect(e7) + local e8=Effect.CreateEffect(c) + e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetCode(EVENT_ADJUST) + e8:SetRange(LOCATION_REMOVED) + e8:SetCondition(c95000000.ordercon) + e8:SetOperation(c95000000.orderop) + c:RegisterEffect(e8) + --cannot banish + local e9=Effect.CreateEffect(c) + e9:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e9:SetCode(EVENT_REMOVE) + e9:SetRange(LOCATION_REMOVED) + e9:SetOperation(c95000000.banop) + c:RegisterEffect(e9) + --protection + local e10=Effect.CreateEffect(c) + e10:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e10:SetType(EFFECT_TYPE_SINGLE) + e10:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(e10) + local e11=e10:Clone() + e11:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(e11) + local e12=e10:Clone() + e12:SetCode(EFFECT_CANNOT_TO_DECK) + c:RegisterEffect(e12) + local e13=e10:Clone() + e13:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + c:RegisterEffect(e13) + --replace + local e14=Effect.CreateEffect(c) + e14:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e14:SetCode(EFFECT_SEND_REPLACE) + e14:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e14:SetRange(LOCATION_REMOVED) + e14:SetTarget(c95000000.reptg) + e14:SetValue(c95000000.repval) + e14:SetOperation(c95000000.repop) + c:RegisterEffect(e14) + --opponent effect + local e15=Effect.CreateEffect(c) + e15:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e15:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e15:SetCode(EVENT_ADJUST) + e15:SetRange(LOCATION_REMOVED) + e15:SetCountLimit(1) + e15:SetOperation(c95000000.effop) + c:RegisterEffect(e15) +end +function c95000000.stcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnCount()==1 +end +function c95000000.stfilter(c) + return not c:IsSetCard(0xbde) +end +function c95000000.afilter0(c) + return c.mark and c.mark==0 +end +function c95000000.afilter1(c) + return c.mark and c.mark==1 +end +function c95000000.afilter2(c) + return c.mark and c.mark==2 +end +function c95000000.afilter3(c) + return c.mark and c.mark==3 +end +function c95000000.stop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_REMOVED,0,1,nil,95000000) then + Duel.DisableShuffleCheck() + Duel.SendtoDeck(c,nil,-2,REASON_RULE) + else + local hct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + Duel.Remove(c,POS_FACEUP,REASON_RULE) + Duel.Hint(HINT_CARD,0,95000000) + local g=Duel.GetMatchingGroup(c95000000.stfilter,tp,0xff,0,c) + if g:GetCount()>0 then + Duel.SendtoDeck(g,nil,-2,REASON_RULE) + end + local hg=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoDeck(hg,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(tp) + --arrange time + local g0=Duel.GetMatchingGroup(c95000000.afilter0,tp,LOCATION_DECK,0,nil) + local g1=Duel.GetMatchingGroup(c95000000.afilter1,tp,LOCATION_DECK,0,nil) + local g2=Duel.GetMatchingGroup(c95000000.afilter2,tp,LOCATION_DECK,0,nil) + local g3=Duel.GetMatchingGroup(c95000000.afilter3,tp,LOCATION_DECK,0,nil) + local tc3=g3:GetFirst() + while tc3 do + Duel.MoveSequence(tc3,0) + tc3=g3:GetNext() + end + local tc2=g2:GetFirst() + while tc2 do + Duel.MoveSequence(tc2,0) + tc2=g2:GetNext() + end + local tc1=g1:GetFirst() + while tc1 do + Duel.MoveSequence(tc1,0) + tc1=g1:GetNext() + end + local tc0=g0:GetFirst() + while tc0 do + Duel.MoveSequence(tc0,0) + tc0=g0:GetNext() + end + Duel.Draw(tp,hct,REASON_EFFECT) + end +end +function c95000000.thop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp then return end + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE,0,nil) + if g:GetCount()>0 then + Duel.Hint(HINT_CARD,0,95000000) + Duel.SendtoHand(g,nil,REASON_RULE) + end +end +function c95000000.value(e,c) + return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_DECK,0) +end +function c95000000.deckcon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetDrawCount(tp)>Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) +end +function c95000000.ordercon(e,tp,eg,ep,ev,re,r,rp) + local ct=1 + local g=Duel.GetDecktopGroup(tp,ct) + local gn=Duel.GetDecktopGroup(tp,ct+1) + local tc1=g:GetFirst() + if not tc1 then return false end + if gn:GetCount()<2 then return false end + gn:Sub(g) + local tc2=gn:GetFirst() + local markchk=tc1.mark + while tc2 do + if markchk>tc2.mark then + return true + elseif markchk0 then + Duel.SendtoGrave(g,r+REASON_DESTROY+REASON_RETURN) + end +end +function c95000000.repfilter(c,tp) + return c:GetOwner()==tp and c:GetOriginalCode()~=95000000 and c:GetDestination()==LOCATION_REMOVED +end +function c95000000.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return eg:IsExists(c95000000.repfilter,1,nil,tp) end + local g=eg:Filter(c95000000.repfilter,nil,tp) + local tc=g:GetFirst() + while tc do + tc:SetStatus(STATUS_DESTROY_CONFIRMED,true) + tc=g:GetNext() + end + g:KeepAlive() + e:SetLabel(r) + e:SetLabelObject(g) + return true +end +function c95000000.repval(e,c) + return c95000000.repfilter(c,e:GetHandlerPlayer()) +end +function c95000000.repop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tc=g:GetFirst() + while tc do + tc:SetStatus(STATUS_DESTROY_CONFIRMED,false) + tc=g:GetNext() + end + local rs=e:GetLabel() + Duel.Destroy(g,rs+REASON_REPLACE) +end +function c95000000.effop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()==tp then return end + local a=Duel.GetFlagEffect(1-tp,951)==0 + local b=Duel.GetFlagEffect(1-tp,952)==0 + local c=Duel.GetFlagEffect(1-tp,953)==0 + if not a and not b and not c then return end + if not Duel.SelectYesNo(1-tp,aux.Stringid(95000000,0)) then return end + local op=0 + Duel.Hint(HINT_SELECTMSG,1-tp,aux.Stringid(76922029,0)) + if a and b and c then + op=Duel.SelectOption(1-tp,aux.Stringid(95000000,1),aux.Stringid(95000000,2),aux.Stringid(95000000,3)) + elseif a and b then + op=Duel.SelectOption(1-tp,aux.Stringid(95000000,1),aux.Stringid(95000000,2)) + elseif b and c then + op=Duel.SelectOption(1-tp,aux.Stringid(95000000,2),aux.Stringid(95000000,3)) + op=op+1 + elseif a and c then + op=Duel.SelectOption(1-tp,aux.Stringid(95000000,1),aux.Stringid(95000000,3)) + if op==1 then op=op+1 end + elseif a then + Duel.SelectOption(1-tp,aux.Stringid(95000000,1)) + op=0 + elseif b then + Duel.SelectOption(1-tp,aux.Stringid(95000000,2)) + op=1 + else + Duel.SelectOption(1-tp,aux.Stringid(95000000,3)) + op=2 + end + Duel.Hint(HINT_CARD,0,95000000) + if op==0 then + Duel.RegisterFlagEffect(1-tp,951,nil,0,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetCondition(c95000000.atkcon) + e1:SetValue(c95000000.atkval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,1-tp) + elseif op==1 then + Duel.RegisterFlagEffect(1-tp,952,nil,0,1) + -- + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PREDRAW) + e2:SetCondition(c95000000.con) + e2:SetOperation(c95000000.op) + e2:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e2,1-tp) + else + Duel.RegisterFlagEffect(1-tp,953,nil,0,1) + local opt=Duel.SelectOption(1-tp,aux.Stringid(95000000,4),aux.Stringid(95000000,5)) + local p=(opt==0 and 1-tp or tp) + Duel.Recover(p,4000,REASON_RULE) + end +end +function c95000000.atkcon(e) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x80 +end +function c95000000.atkval(e,c) + return c:GetAttack()*2 +end +function c95000000.con(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 + and Duel.GetDrawCount(tp)>0 +end +function c95000000.op(e,tp,eg,ep,ev,re,r,rp) + local dt=Duel.GetDrawCount(tp) + if dt~=0 then + _replace_count=0 + _replace_max=dt + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EFFECT_DRAW_COUNT) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_DRAW) + e1:SetValue(0) + Duel.RegisterEffect(e1,tp) + end + _replace_count=_replace_count+1 + if _replace_count>_replace_max then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c95000001.lua b/script/c95000001.lua new file mode 100644 index 00000000..5cacc218 --- /dev/null +++ b/script/c95000001.lua @@ -0,0 +1,59 @@ +--Darkness Outsider +function c95000001.initial_effect(c) + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --effect 1 + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_CONTROL+CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetTarget(c95000001.sptg) + e3:SetOperation(c95000001.spop) + c:RegisterEffect(e3) +end +c95000001.mark=0 +function c95000001.spfilter(c,e,tp) + return c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c95000001.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControlerCanBeChanged() and chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,LOCATION_MZONE,0,1,nil) + and Duel.GetFieldGroupCount(tp,0,LOCATION_DECK)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE,0)>-1 + and Duel.GetLocationCount(1-tp,LOCATION_MZONE,0)>0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local tc=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,LOCATION_MZONE,0,1,1,nil) + local g=Duel.GetMatchingGroup(c95000001.spfilter,tp,0,LOCATION_DECK,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,tc,1,0,0) + if g:GetCount()>0 then + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) + end +end +function c95000001.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(1-tp,LOCATION_MZONE,0)<=0 then return end + if tc:IsRelateToEffect(e) and not Duel.GetControl(tc,1-tp) then + if not tc:IsImmuneToEffect(e) and tc:IsAbleToChangeControler() then + Duel.Destroy(tc,REASON_EFFECT) + end + end + local g=Duel.GetMatchingGroup(c95000001.spfilter,tp,0,LOCATION_DECK,nil,e,tp) + if tc:GetControler()~=tp and g:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + Duel.ConfirmCards(tp,g) + local sp=g:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummon(sp,0,tp,tp,true,false,POS_FACEUP) + elseif tc:GetControler()~=tp and g:GetCount()==0 then + Duel.ConfirmCards(tp,g) + end +end diff --git a/script/c95000002.lua b/script/c95000002.lua new file mode 100644 index 00000000..54bee05d --- /dev/null +++ b/script/c95000002.lua @@ -0,0 +1,88 @@ +--Darkness Neosphere +function c95000002.initial_effect(c) + c:EnableReviveLimit() + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --effect 1 + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_ATTACK_ANNOUNCE) + e3:SetRange(LOCATION_HAND) + e3:SetTarget(c95000002.sptg) + e3:SetOperation(c95000002.spop) + c:RegisterEffect(e3) + --effect 2 + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(95000002,2)) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c95000002.lptg) + e4:SetOperation(c95000002.lpop) + c:RegisterEffect(e4) + --effect 3 + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(95000002,3)) + e5:SetCategory(CATEGORY_TOHAND) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCountLimit(1) + e5:SetTarget(c95000002.thtg) + e5:SetOperation(c95000002.thop) + c:RegisterEffect(e5) +end +c95000002.mark=0 +function c95000002.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) and Duel.GetLocationCount(tp,LOCATION_MZONE,0)>0 end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c95000002.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE,0)<=0 then return end + if e:GetHandler():IsRelateToEffect(e) then + Duel.SpecialSummon(e:GetHandler(),0,tp,tp,true,false,POS_FACEUP) + end +end +function c95000002.lptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLP(tp)~=4000 or Duel.GetLP(1-tp)~=4000 end + local op=0 + if Duel.GetLP(tp)~=4000 and Duel.GetLP(1-tp)~=4000 then + op=Duel.SelectOption(tp,aux.Stringid(95000002,0),aux.Stringid(95000002,1)) + elseif Duel.GetLP(tp)~=4000 and Duel.GetLP(1-tp)==4000 then + op=Duel.SelectOption(tp,aux.Stringid(95000002,0)) + elseif Duel.GetLP(tp)==4000 and Duel.GetLP(1-tp)~=4000 then + op=Duel.SelectOption(tp,aux.Stringid(95000002,1))+1 + end + if op==0 then + Duel.SetTargetPlayer(tp) + else + Duel.SetTargetPlayer(1-tp) + end +end +function c95000002.lpop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.SetLP(p,4000) +end +function c95000002.thfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c95000002.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95000002.thfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(c95000002.thfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c95000002.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c95000002.thfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) + Duel.SendtoHand(g,nil,REASON_EFFECT) +end diff --git a/script/c95000003.lua b/script/c95000003.lua new file mode 100644 index 00000000..a95b060b --- /dev/null +++ b/script/c95000003.lua @@ -0,0 +1,109 @@ +--Darkness +function c95000003.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000003.target) + e1:SetOperation(c95000003.activate) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetValue(c95000003.valcon) + c:RegisterEffect(e2) + --cannot be negate/disable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_CANNOT_INACTIVATE) + e3:SetRange(LOCATION_SZONE) + e3:SetTargetRange(1,0) + e3:SetValue(c95000003.efilter) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_DISEFFECT) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(1,0) + e4:SetValue(c95000003.efilter) + c:RegisterEffect(e4) + --tohand + local e5=Effect.CreateEffect(c) + e5:SetCategory(CATEGORY_TOHAND) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_FZONE) + e5:SetTarget(c95000003.thtg) + e5:SetOperation(c95000003.thop) + c:RegisterEffect(e5) +end +c95000003.mark=0 +function c95000003.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:GetSequence()<5 +end +function c95000003.setfilter(c,code) + return c:IsSSetable() and c:IsCode(code) +end +function c95000003.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>4 + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,95000004) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,95000005) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,95000006) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,95000007) + and Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,95000008) end +end +function c95000003.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=4 then return end + local g1=Duel.GetMatchingGroup(c95000003.setfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,95000004) + local g2=Duel.GetMatchingGroup(c95000003.setfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,95000005) + local g3=Duel.GetMatchingGroup(c95000003.setfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,95000006) + local g4=Duel.GetMatchingGroup(c95000003.setfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,95000007) + local g5=Duel.GetMatchingGroup(c95000003.setfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil,95000008) + if g1:GetCount()>0 and g2:GetCount()>0 and g3:GetCount()>0 and g4:GetCount()>0 and g5:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINT_SET) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINT_SET) + local sg2=g2:Select(tp,1,1,nil) + sg1:Merge(sg2) + Duel.Hint(HINT_SELECTMSG,tp,HINT_SET) + local sg3=g3:Select(tp,1,1,nil) + sg1:Merge(sg3) + Duel.Hint(HINT_SELECTMSG,tp,HINT_SET) + local sg4=g4:Select(tp,1,1,nil) + sg1:Merge(sg4) + Duel.Hint(HINT_SELECTMSG,tp,HINT_SET) + local sg5=g5:Select(tp,1,1,nil) + sg1:Merge(sg5) + local tc=sg1:GetFirst() + while tc do + Duel.SSet(tp,tc) + tc=sg1:GetNext() + end + Duel.ConfirmCards(1-tp,sg1) + end +end +function c95000003.valcon(e,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c95000003.indtg(e,c) + return c:IsFaceup() and c:GetType()==TYPE_TRAP+TYPE_CONTINUOUS +end +function c95000003.efilter(e,ct) + local te=Duel.GetChainInfo(ct,CHAININFO_TRIGGERING_EFFECT) + local tc=te:GetHandler() + return tc:GetType()==TYPE_TRAP+TYPE_CONTINUOUS +end +function c95000003.thfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c95000003.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95000003.thfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + local g=Duel.GetMatchingGroup(c95000003.thfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c95000003.thop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c95000003.thfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + Duel.SendtoHand(g,nil,REASON_EFFECT) +end diff --git a/script/c95000004.lua b/script/c95000004.lua new file mode 100644 index 00000000..7bf39b5a --- /dev/null +++ b/script/c95000004.lua @@ -0,0 +1,45 @@ +--Infinity +function c95000004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c95000004.condition) + e1:SetTarget(c95000004.target) + e1:SetOperation(c95000004.operation) + c:RegisterEffect(e1) +end +c95000004.mark=0 +function c95000004.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(95000005)>0 +end +function c95000004.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetChainLimit(c95000004.climit) +end +function c95000004.climit(e,lp,tp) + return lp==tp or not e:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c95000004.filter(c,code) + return c:GetCode()==code and c:IsFacedown() +end +function c95000004.operation(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetFirstMatchingCard(c95000004.filter,tp,LOCATION_SZONE,0,nil,95000006) + local g2=Duel.GetFirstMatchingCard(c95000004.filter,tp,LOCATION_SZONE,0,nil,95000007) + local g3=Duel.GetFirstMatchingCard(c95000004.filter,tp,LOCATION_SZONE,0,nil,95000008) + if g1 then + Duel.ChangePosition(g1,POS_FACEUP) + g1:SetStatus(STATUS_EFFECT_ENABLED,true) + g1:SetStatus(STATUS_CHAINING,true) + end + if g2 then + Duel.ChangePosition(g2,POS_FACEUP) + g2:SetStatus(STATUS_EFFECT_ENABLED,true) + g2:SetStatus(STATUS_CHAINING,true) + end + if g3 then + Duel.ChangePosition(g3,POS_FACEUP) + g3:SetStatus(STATUS_EFFECT_ENABLED,true) + g3:SetStatus(STATUS_CHAINING,true) + end +end diff --git a/script/c95000005.lua b/script/c95000005.lua new file mode 100644 index 00000000..ddf3b3b9 --- /dev/null +++ b/script/c95000005.lua @@ -0,0 +1,70 @@ +--Zero +function c95000005.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000005.target) + e1:SetOperation(c95000005.activate) + c:RegisterEffect(e1) +end +c95000005.mark=0 +function c95000005.filter(c) + return c:IsFacedown() and c:IsCode(95000004) +end +function c95000005.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingTarget(c95000005.filter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECT,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c95000005.filter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SetChainLimit(c95000005.climit) +end +function c95000005.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and e:GetHandler():IsRelateToEffect(e) then + tc:RegisterFlagEffect(95000005,RESET_PHASE+PHASE_END+RESET_EVENT+0x1fe0000,0,1) + if tc:IsCode(95000004) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.ChangePosition(tc,POS_FACEUP) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + end + end + end + end +end +function c95000005.climit(e,lp,tp) + return lp==tp or not e:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c95000006.lua b/script/c95000006.lua new file mode 100644 index 00000000..1bbf32c9 --- /dev/null +++ b/script/c95000006.lua @@ -0,0 +1,53 @@ +--Darkness 1 +function c95000006.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetCondition(c95000006.condition) + e1:SetTarget(c95000006.target) + e1:SetOperation(c95000006.operation) + c:RegisterEffect(e1) + -- + local e2=e1:Clone() + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetCondition(c95000006.condition2) + c:RegisterEffect(e2) +end +c95000006.mark=1 +function c95000006.filter(c) + return c:IsCode(95000004) and c:IsFaceup() and not c:IsStatus(STATUS_DISABLED) +end +function c95000006.condition(e,tp,eg,ep,ev,re,r,rp) + local re=re:GetHandler() + return re:IsCode(95000005) and not re:IsStatus(STATUS_DISABLED) + and Duel.IsExistingMatchingCard(c95000006.filter,tp,LOCATION_SZONE,0,1,nil) +end +function c95000006.condition2(e,tp,eg,ep,ev,re,r,rp) + local re=re:GetHandler() + return re:IsSetCard(0x26ed) and re:IsType(2004) and e:GetHandler():GetFlagEffect(95000006)>0 +end +function c95000006.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) +end +function c95000006.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local tc=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,1,nil) + e:GetHandler():RegisterFlagEffect(95000006,RESET_EVENT+0x1fe0000,0,1) + Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) +end +function c95000006.con1(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_HAND) and Duel.GetTurnCount()==1 +end +function c95000006.op1(e,tp,eg,ep,ev,re,r,rp) + Duel.DisableShuffleCheck() + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_RULE) +end diff --git a/script/c95000007.lua b/script/c95000007.lua new file mode 100644 index 00000000..01c6fb7a --- /dev/null +++ b/script/c95000007.lua @@ -0,0 +1,58 @@ +--Darkness 2 +function c95000007.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetCondition(c95000007.condition) + e1:SetTarget(c95000007.target) + e1:SetOperation(c95000007.operation) + c:RegisterEffect(e1) + -- + local e2=e1:Clone() + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetCondition(c95000007.condition2) + c:RegisterEffect(e2) +end +c95000007.mark=2 +function c95000007.filter(c) + return c:IsCode(95000004) and c:IsFaceup() and not c:IsStatus(STATUS_DISABLED) +end +function c95000007.condition(e,tp,eg,ep,ev,re,r,rp) + local re=re:GetHandler() + return re:IsCode(95000005) and not re:IsStatus(STATUS_DISABLED) + and Duel.IsExistingMatchingCard(c95000007.filter,tp,LOCATION_SZONE,0,1,nil) +end +function c95000007.condition2(e,tp,eg,ep,ev,re,r,rp) + local re=re:GetHandler() + return re:IsSetCard(0x26ed) and re:IsType(2004) and e:GetHandler():GetFlagEffect(95000007)>0 +end +function c95000007.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,g,1,0,0) +end +function c95000007.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local tc=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(4000) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:GetFirst():RegisterEffect(e1) + e:GetHandler():RegisterFlagEffect(95000007,RESET_EVENT+0x1fe0000,0,1) +end +function c95000007.con1(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_HAND) and Duel.GetTurnCount()==1 +end +function c95000007.op1(e,tp,eg,ep,ev,re,r,rp) + Duel.DisableShuffleCheck() + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_RULE) +end diff --git a/script/c95000008.lua b/script/c95000008.lua new file mode 100644 index 00000000..221d8140 --- /dev/null +++ b/script/c95000008.lua @@ -0,0 +1,53 @@ +--Darkness 1 +function c95000008.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_CHAIN_SOLVED) + e1:SetRange(LOCATION_SZONE) + e1:SetCountLimit(1) + e1:SetCondition(c95000008.condition) + e1:SetTarget(c95000008.target) + e1:SetOperation(c95000008.operation) + c:RegisterEffect(e1) + -- + local e2=e1:Clone() + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVED) + e2:SetCondition(c95000008.condition2) + c:RegisterEffect(e2) +end +c95000008.mark=3 +function c95000008.filter(c) + return c:IsCode(95000004) and c:IsFaceup() and not c:IsStatus(STATUS_DISABLED) +end +function c95000008.condition(e,tp,eg,ep,ev,re,r,rp) + local re=re:GetHandler() + return re:IsCode(95000005) and not re:IsStatus(STATUS_DISABLED) + and Duel.IsExistingMatchingCard(c95000008.filter,tp,LOCATION_SZONE,0,1,nil) +end +function c95000008.condition2(e,tp,eg,ep,ev,re,r,rp) + local re=re:GetHandler() + return re:IsSetCard(0x26ed) and re:IsType(2004) and e:GetHandler():GetFlagEffect(95000008)>0 +end +function c95000008.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetParam(2000) + Duel.SetTargetPlayer(1-tp) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,2000) +end +function c95000008.operation(e,tp,eg,ep,ev,re,r,rp) + local d,p=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM,CHAININFO_TARGET_PLAYER) + Duel.Damage(p,d,REASON_EFFECT) + e:GetHandler():RegisterFlagEffect(95000008,RESET_EVENT+0x1fe0000,0,1) +end +function c95000008.con1(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_HAND) and Duel.GetTurnCount()==1 +end +function c95000008.op1(e,tp,eg,ep,ev,re,r,rp) + Duel.DisableShuffleCheck() + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_RULE) +end diff --git a/script/c95000009.lua b/script/c95000009.lua new file mode 100644 index 00000000..3f95645e --- /dev/null +++ b/script/c95000009.lua @@ -0,0 +1,58 @@ +--Toon Gemini Elf +function c95000009.initial_effect(c) + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c95000009.dircon) + c:RegisterEffect(e3) + --handes + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(42386471,0)) + e4:SetCategory(CATEGORY_HANDES) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_BATTLE_DAMAGE) + e4:SetCondition(c95000009.condition) + e4:SetTarget(c95000009.target) + e4:SetOperation(c95000009.operation) + c:RegisterEffect(e4) +end +c95000009.mark=0 +function c95000009.dirfilter(c) + return c:IsFaceup() and c:IsCode(95000012) +end +function c95000009.dircon(e) + return Duel.IsExistingMatchingCard(c95000009.dirfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end +function c95000009.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c95000009.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1) +end +function c95000009.operation(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local g=Duel.GetFieldGroup(p,0,LOCATION_HAND) + if g:GetCount()>0 then + Duel.ConfirmCards(p,g) + Duel.Hint(HINT_SELECTMSG,p,HINTMSG_DISCARD) + local sg=g:Select(p,1,1,nil) + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_DISCARD) + Duel.ShuffleHand(1-p) + end +end diff --git a/script/c95000010.lua b/script/c95000010.lua new file mode 100644 index 00000000..bb5bd3e7 --- /dev/null +++ b/script/c95000010.lua @@ -0,0 +1,56 @@ +--Toon Masked Sorcerer +function c95000010.initial_effect(c) + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c95000010.dircon) + c:RegisterEffect(e3) + --handes + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(42386471,0)) + e4:SetCategory(CATEGORY_TOHAND) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_BATTLE_DAMAGE) + e4:SetCondition(c95000010.condition) + e4:SetTarget(c95000010.target) + e4:SetOperation(c95000010.operation) + c:RegisterEffect(e4) +end +c95000010.mark=0 +function c95000010.dirfilter(c) + return c:IsFaceup() and c:IsCode(95000012) +end +function c95000010.dircon(e) + return Duel.IsExistingMatchingCard(c95000010.dirfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end +function c95000010.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c95000010.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsAbleToHand() end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectTarget(tp,Card.IsAbleToHand,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0) +end +function c95000010.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tc:GetControler(),tc) + end +end diff --git a/script/c95000011.lua b/script/c95000011.lua new file mode 100644 index 00000000..3c0370cf --- /dev/null +++ b/script/c95000011.lua @@ -0,0 +1,28 @@ +--Toon Summoned Skull +function c95000011.initial_effect(c) + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetCondition(c95000011.dircon) + c:RegisterEffect(e3) +end +c95000011.mark=0 +function c95000011.dirfilter(c) + return c:IsFaceup() and c:IsCode(95000012) +end +function c95000011.dircon(e) + return Duel.IsExistingMatchingCard(c95000011.dirfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end diff --git a/script/c95000012.lua b/script/c95000012.lua new file mode 100644 index 00000000..b6cc4ccd --- /dev/null +++ b/script/c95000012.lua @@ -0,0 +1,20 @@ +--Toon World +function c95000012.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(1) + e2:SetValue(c95000012.valcon) + c:RegisterEffect(e2) +end +c95000012.mark=0 +function c95000012.valcon(e,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end diff --git a/script/c95000013.lua b/script/c95000013.lua new file mode 100644 index 00000000..ed49e71f --- /dev/null +++ b/script/c95000013.lua @@ -0,0 +1,39 @@ +--Comic Hand +function c95000013.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000013.target) + e1:SetOperation(c95000013.activate) + c:RegisterEffect(e1) +end +c95000013.mark=0 +function c95000013.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c95000013.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectMatchingCard(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.HintSelection(g) + if Duel.GetControl(tc,tp) then + local e1=Effect.CreateEffect(tc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DIRECT_ATTACK) + e1:SetCondition(c95000013.dircon) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end + end +end +function c95000013.dirfilter(c) + return c:IsFaceup() and c:IsCode(95000012) +end +function c95000013.dircon(e) + return Duel.IsExistingMatchingCard(c95000013.dirfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end diff --git a/script/c95000014.lua b/script/c95000014.lua new file mode 100644 index 00000000..a37a1ce0 --- /dev/null +++ b/script/c95000014.lua @@ -0,0 +1,128 @@ +--Relinquished +function c95000014.initial_effect(c) + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --cannot special summon + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --summon with 1 tribute + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e4:SetCondition(c95000014.ttcon) + e4:SetOperation(c95000014.ttop) + e4:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_LIMIT_SET_PROC) + c:RegisterEffect(e5) + --equip + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(64631466,0)) + e6:SetCategory(CATEGORY_EQUIP) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetProperty(EFFECT_FLAG_CARD_TARGET) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(2) + e6:SetTarget(c95000014.eqtg) + e6:SetOperation(c95000014.eqop) + c:RegisterEffect(e6) + --battle indestructable + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e7:SetValue(1) + c:RegisterEffect(e7) + --damage + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e8:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e8:SetOperation(c95000014.damop) + c:RegisterEffect(e8) +end +c95000014.mark=1 +function c95000014.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 and Duel.GetTributeCount(c)>=1 +end +function c95000014.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,1,1) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c95000014.eqfilter(c,tp) + return (c:IsAbleToChangeControler() or c:IsControler(tp)) and c:IsType(TYPE_MONSTER) +end +function c95000014.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE+LOCATION_GRAVE) and c95000014.eqfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c95000014.eqfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,1,e:GetHandler(),tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c95000014.eqfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,1,1,e:GetHandler(),tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c95000014.eqlimit(e,c) + return e:GetOwner()==c +end +function c95000014.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsType(TYPE_MONSTER) then + if c:IsFaceup() and c:IsRelateToEffect(e) then + local atk=tc:GetTextAttack() + local def=tc:GetTextDefense() + if tc:IsStatus(STATUS_NO_LEVEL) then + atk=tc:GetBaseAttack() + def=tc:GetBaseDefense() + end + if tc:IsFacedown() or atk<0 then atk=0 end + if tc:IsFacedown() or def<0 then def=0 end + if not Duel.Equip(tp,tc,c,false) then return end + --Add Equip limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c95000014.eqlimit) + tc:RegisterEffect(e1) + if atk>0 then + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000) + e2:SetValue(atk) + tc:RegisterEffect(e2) + end + if def>0 then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_EQUIP) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_OWNER_RELATE) + e3:SetCode(EFFECT_UPDATE_DEFENSE) + e3:SetReset(RESET_EVENT+0x1fe0000) + e3:SetValue(def) + tc:RegisterEffect(e3) + end + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c95000014.damop(e,tp,eg,ep,ev,re,r,rp) + if tp==ep then + Duel.ChangeBattleDamage(1-ep,ev,false) + end +end diff --git a/script/c95000015.lua b/script/c95000015.lua new file mode 100644 index 00000000..d314b653 --- /dev/null +++ b/script/c95000015.lua @@ -0,0 +1,76 @@ +--Doppleganger +function c95000015.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_CONTROL) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000015.target) + e1:SetOperation(c95000015.activate) + c:RegisterEffect(e1) +end +c95000015.mark=2 +function c95000015.filter(c,e,tp) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then + ft=ft-1 + end + return c:IsType(TYPE_SPELL) and c:CheckActivateEffect(false,false,false)~=nil + and (ft>0 or c:IsType(TYPE_FIELD)) +end +function c95000015.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) + if e:GetHandler():IsLocation(LOCATION_HAND) then + ft=ft-1 + end + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(1-tp) and c95000015.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c95000015.filter,tp,0,LOCATION_GRAVE,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EFFECT) + Duel.SelectTarget(tp,c95000015.filter,tp,0,LOCATION_GRAVE,1,1,nil,e,tp) +end +function c95000015.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c95000016.lua b/script/c95000016.lua new file mode 100644 index 00000000..be4e18cd --- /dev/null +++ b/script/c95000016.lua @@ -0,0 +1,28 @@ +--Toon Briefcase +function c95000016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c95000016.target) + e1:SetOperation(c95000016.activate) + c:RegisterEffect(e1) +end +c95000016.mark=3 +function c95000016.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToDeck() and chkc~=c end + if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,1,1,c) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c95000016.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,1-tp,0,REASON_EFFECT) + end +end diff --git a/script/c95000017.lua b/script/c95000017.lua new file mode 100644 index 00000000..cd1a561b --- /dev/null +++ b/script/c95000017.lua @@ -0,0 +1,64 @@ +--Numeron Calling +function c95000017.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000017.target) + e1:SetOperation(c95000017.activate) + c:RegisterEffect(e1) +end +c95000017.mark=0 +function c95000017.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,95000018,0,0x4011,2000,0,0,0,0) end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,4,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,4,0,0) +end +function c95000017.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsPlayerCanSpecialSummonMonster(tp,95000018,0,0x4011,2000,0,0,0,0) then + for i=1,4 do + local token=Duel.CreateToken(tp,95000017+i) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + token:SetStatus(STATUS_NO_LEVEL,true) + local e3=Effect.CreateEffect(token) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_DAMAGE_STEP_END) + e3:SetOperation(c95000017.atkop) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3) + end + Duel.SpecialSummonComplete() + end +end +function c95000017.filter(c,e) + return c:IsFaceup() and c:IsType(TYPE_TOKEN) and not c:IsImmuneToEffect(e) and c:IsSetCard(0x48) +end +function c95000017.atkop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c95000017.filter,tp,LOCATION_MZONE,0,nil,e) + local tc=sg:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()*2) + tc:RegisterEffect(e1) + tc=sg:GetNext() + end +end diff --git a/script/c95000018.lua b/script/c95000018.lua new file mode 100644 index 00000000..67cec3d4 --- /dev/null +++ b/script/c95000018.lua @@ -0,0 +1,10 @@ +--Number Token +function c95000018.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000019.lua b/script/c95000019.lua new file mode 100644 index 00000000..4ee531ec --- /dev/null +++ b/script/c95000019.lua @@ -0,0 +1,10 @@ +--Number Token +function c95000019.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000020.lua b/script/c95000020.lua new file mode 100644 index 00000000..faed85d0 --- /dev/null +++ b/script/c95000020.lua @@ -0,0 +1,10 @@ +--Number Token +function c95000020.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000021.lua b/script/c95000021.lua new file mode 100644 index 00000000..b1e61650 --- /dev/null +++ b/script/c95000021.lua @@ -0,0 +1,10 @@ +--Number Token +function c95000021.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000022.lua b/script/c95000022.lua new file mode 100644 index 00000000..6702ed3b --- /dev/null +++ b/script/c95000022.lua @@ -0,0 +1,81 @@ +--Number C1: Numeron Chaos Gate Shunya +function c95000022.initial_effect(c) + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --cannot special summon + local e3=Effect.CreateEffect(c) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --summon with 1 tribute + local e4=Effect.CreateEffect(c) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_LIMIT_SUMMON_PROC) + e4:SetCondition(c95000022.ttcon) + e4:SetOperation(c95000022.ttop) + e4:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_LIMIT_SET_PROC) + c:RegisterEffect(e5) + --tribute limit + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_TRIBUTE_LIMIT) + e6:SetValue(c95000022.tlimit) + c:RegisterEffect(e6) + --spsummon + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(95000022,0)) + e7:SetCategory(CATEGORY_DAMAGE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e7:SetCountLimit(1) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetRange(LOCATION_MZONE) + e7:SetCost(c95000022.damcost) + e7:SetTarget(c95000022.damtg) + e7:SetOperation(c95000022.damop) + c:RegisterEffect(e7) +end +c95000022.mark=0 +function c95000022.ttcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 and Duel.GetTributeCount(c)>=1 +end +function c95000022.ttop(e,tp,eg,ep,ev,re,r,rp,c) + local g=Duel.SelectTribute(tp,c,1,1) + c:SetMaterial(g) + Duel.Release(g,REASON_SUMMON+REASON_MATERIAL) +end +function c95000022.tlimit(e,c) + return not c:IsType(TYPE_TOKEN) or not c:IsSetCard(0x48) +end +function c95000022.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,0,e:GetHandler()) + if chk==0 then return g:GetCount()>0 and g:FilterCount(Card.IsReleasable,nil)==g:GetCount() end + local atk=g:GetSum(Card.GetAttack) + Duel.Release(g,REASON_COST) + e:SetLabel(atk) +end +function c95000022.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(e:GetLabel()) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,e:GetLabel()) +end +function c95000022.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c95000023.lua b/script/c95000023.lua new file mode 100644 index 00000000..8a012295 --- /dev/null +++ b/script/c95000023.lua @@ -0,0 +1,98 @@ +--Numeron Network +function c95000023.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetRange(LOCATION_SZONE) + e2:SetCountLimit(2) + e2:SetValue(c95000023.valcon) + c:RegisterEffect(e2) + --activate 2 + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95000023,0)) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c95000023.accon) + e3:SetCost(c95000023.accost) + e3:SetOperation(c95000023.acop) + c:RegisterEffect(e3) + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(93016201,0)) + e6:SetType(EFFECT_TYPE_QUICK_O) + e6:SetCode(EVENT_SPSUMMON) + e6:SetRange(LOCATION_SZONE) + e6:SetCondition(c95000023.accon) + e6:SetTarget(c95000023.accost) + e6:SetOperation(c95000023.acop) + c:RegisterEffect(e6) +end +c95000023.mark=0 +function c95000023.valcon(e,re,r,rp) + return bit.band(r,REASON_EFFECT)~=0 +end +function c95000023.accon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)<=1 +end +function c95000023.cfilter(c,e,tp,eg,ep,ev,re,r,rp,chain) + local te=c:GetActivateEffect() + if not te or not c:IsType(TYPE_SPELL+TYPE_TRAP) or not c:IsAbleToGraveAsCost() then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + if te:GetCode()==EVENT_CHAINING then + if chain<=0 then return false end + local te2=Duel.GetChainInfo(chain,CHAININFO_TRIGGERING_EFFECT) + local tc=te2:GetHandler() + local g=Group.FromCards(tc) + local p=tc:GetControler() + return (not condition or condition(e,tp,g,p,chain,te2,REASON_EFFECT,p)) and (not cost or cost(e,tp,g,p,chain,te2,REASON_EFFECT,p,0)) + and (not target or target(e,tp,g,p,chain,te2,REASON_EFFECT,p,0)) + elseif (te:GetCode()==EVENT_SPSUMMON and e:GetCode()==EVENT_SPSUMMON) or (e:GetCode()==EVENT_FREE_CHAIN and te:GetCode()~=EVENT_SPSUMMON) then + return (not condition or condition(e,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(e,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(e,tp,eg,ep,ev,re,r,rp,0)) + end +end +function c95000023.accost(e,tp,eg,ep,ev,re,r,rp,chk) + local chain=Duel.GetCurrentChain() + if chk==0 then return Duel.IsExistingMatchingCard(c95000023.cfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp,eg,ep,ev,re,r,rp,chain) end + chain=chain-1 + Duel.RegisterFlagEffect(tp,511001666,RESET_CHAIN,0,1) + Duel.RegisterFlagEffect(tp,95000027,RESET_CHAIN,0,1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c95000023.cfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp,eg,ep,ev,re,r,rp,chain) + Duel.SendtoGrave(g,REASON_COST) + Duel.SetTargetCard(g:GetFirst()) +end +function c95000023.acop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc then + local te=tc:GetActivateEffect() + if not te then return end + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + if te:GetCode()==EVENT_CHAINING then + local chain=Duel.GetCurrentChain()-1 + local te2=Duel.GetChainInfo(chain,CHAININFO_TRIGGERING_EFFECT) + local tc=te2:GetHandler() + local g=Group.FromCards(tc) + local p=tc:GetControler() + if co then co(e,tp,g,p,chain,te2,REASON_EFFECT,p,1) end + if tg then tg(e,tp,g,p,chain,te2,REASON_EFFECT,p,1) end + if op then op(e,tp,g,p,chain,te2,REASON_EFFECT,p) end + else + if co then co(e,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end + end +end diff --git a/script/c95000024.lua b/script/c95000024.lua new file mode 100644 index 00000000..d8a6b6e2 --- /dev/null +++ b/script/c95000024.lua @@ -0,0 +1,37 @@ +--Numeron Chaos Ritual +function c95000024.initial_effect(c) + Duel.EnableGlobalFlag(GLOBALFLAG_DELAYED_QUICKEFFECT) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c95000024.condition) + e1:SetTarget(c95000024.target) + e1:SetOperation(c95000024.activate) + c:RegisterEffect(e1) +end +c95000024.mark=0 +function c95000024.cfilter(c,tp) + return c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousControler()==tp and c:IsControler(tp) + and c:IsCode(95000022) +end +function c95000024.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c95000024.cfilter,1,nil,tp) +end +function c95000024.filter(c,e,tp) + return c:IsCode(95000025) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c95000024.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c95000024.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c95000024.activate(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,c95000024.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,true,false,POS_FACEUP) + end +end diff --git a/script/c95000025.lua b/script/c95000025.lua new file mode 100644 index 00000000..7cf8e44e --- /dev/null +++ b/script/c95000025.lua @@ -0,0 +1,86 @@ +--Number C1000: Numerronius +function c95000025.initial_effect(c) + c:EnableReviveLimit() + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(95000025,0)) + e4:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_BATTLE) + e4:SetRange(LOCATION_MZONE) + e4:SetCountLimit(1) + e4:SetTarget(c95000025.destg) + e4:SetOperation(c95000025.desop) + c:RegisterEffect(e4) + --Destroy replace + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DESTROY_REPLACE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetTarget(c95000025.desreptg) + e5:SetOperation(c95000025.desrepop) + c:RegisterEffect(e5) +end +c95000025.mark=1 +function c95000025.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c95000025.mgfilter(c,e,tp) + return not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +end +function c95000025.desop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsDestructable,tp,0,LOCATION_MZONE,nil) + local ct=Duel.Destroy(sg,REASON_EFFECT) + if ct>0 then + local dg=Duel.GetOperatedGroup() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + if not dg:IsExists(c95000025.mgfilter,1,nil,e,tp) and dg:GetCount()<=ft + and Duel.SelectYesNo(tp,aux.Stringid(95000025,1)) then + Duel.BreakEffect() + Duel.SpecialSummon(dg,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end + end +end +function c95000025.repfilter(c) + return not c:IsStatus(STATUS_DESTROY_CONFIRMED+STATUS_BATTLE_DESTROYED) +end +function c95000025.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) and c:IsOnField() and c:IsFaceup() + and Duel.IsExistingMatchingCard(c95000025.repfilter,tp,LOCATION_MZONE,0,1,c) end + if Duel.SelectYesNo(tp,aux.Stringid(95000025,2)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESREPLACE) + local g=Duel.SelectMatchingCard(tp,c95000025.repfilter,tp,LOCATION_MZONE,0,1,1,c) + e:SetLabelObject(g:GetFirst()) + Duel.HintSelection(g) + g:GetFirst():SetStatus(STATUS_DESTROY_CONFIRMED,true) + return true + else return false end +end +function c95000025.desrepop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + tc:SetStatus(STATUS_DESTROY_CONFIRMED,false) + Duel.Destroy(tc,REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c95000026.lua b/script/c95000026.lua new file mode 100644 index 00000000..b7539d8b --- /dev/null +++ b/script/c95000026.lua @@ -0,0 +1,94 @@ +--Number iC1000: Numerronius Numerronia +function c95000026.initial_effect(c) + c:EnableReviveLimit() + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95000026,0)) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CHAIN_UNIQUE) + e3:SetCode(EVENT_DESTROY) + e3:SetRange(LOCATION_HAND) + e3:SetCondition(c95000026.spcon) + e3:SetTarget(c95000026.sptg) + e3:SetOperation(c95000026.spop) + c:RegisterEffect(e3) + --spson + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetCode(EFFECT_SPSUMMON_CONDITION) + e4:SetValue(aux.FALSE) + c:RegisterEffect(e4) + -- + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e5:SetValue(1) + c:RegisterEffect(e5) + --cannot attack + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetCode(EFFECT_CANNOT_ATTACK) + c:RegisterEffect(e6) + --atk limit + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetRange(LOCATION_MZONE) + e7:SetTargetRange(0,LOCATION_MZONE) + e7:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e7:SetValue(c95000026.atlimit) + c:RegisterEffect(e7) + --win + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e8:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_DELAY) + e8:SetRange(LOCATION_MZONE) + e8:SetCode(EVENT_PHASE+PHASE_END) + e8:SetCountLimit(1) + e8:SetCondition(c95000026.wincon) + e8:SetOperation(c95000026.winop) + c:RegisterEffect(e8) +end +c95000026.mark=0 +function c95000026.cfilter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and c:IsCode(95000025) +end +function c95000026.spcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c95000026.cfilter,1,nil,tp) +end +function c95000026.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c95000026.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsLocation(LOCATION_HAND) and Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then + c:CompleteProcedure() + end +end +function c95000026.atlimit(e,c) + return c~=e:GetHandler() +end +function c95000026.wincon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetActivityCount(1-tp,ACTIVITY_ATTACK)==0 +end +function c95000026.winop(e,tp,eg,ep,ev,re,r,rp) + local WIN_REASON_NUMERRONIUS=0x52 + Duel.Win(tp,WIN_REASON_NUMERRONIUS) +end diff --git a/script/c95000027.lua b/script/c95000027.lua new file mode 100644 index 00000000..44d337c8 --- /dev/null +++ b/script/c95000027.lua @@ -0,0 +1,36 @@ +--Numeron Xyz Revision +function c95000027.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_SPSUMMON) + e1:SetCondition(c95000027.condition) + e1:SetTarget(c95000027.target) + e1:SetOperation(c95000027.activate) + c:RegisterEffect(e1) +end +c95000027.mark=2 +function c95000027.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=ep and eg:GetCount()==1 and (Duel.GetCurrentChain()==0 or (Duel.GetFlagEffect(tp,95000027)>0 and Duel.GetCurrentChain()==1)) +end +function c95000027.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp) +end +function c95000027.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,1-tp,LOCATION_DECK) +end +function c95000027.activate(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(c95000027.filter,tp,0,LOCATION_DECK,nil,e,tp) + if sg:GetCount()<=0 then return end + Duel.ConfirmCards(tp,sg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=sg:Select(tp,1,1,nil):GetFirst() + Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP) +end diff --git a/script/c95000028.lua b/script/c95000028.lua new file mode 100644 index 00000000..d1e3f6bf --- /dev/null +++ b/script/c95000028.lua @@ -0,0 +1,88 @@ +--Numeron Spell Revision +function c95000028.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c95000028.condition) + e1:SetTarget(c95000028.target) + e1:SetOperation(c95000028.activate) + c:RegisterEffect(e1) +end +c95000028.mark=3 +function c95000028.condition(e,tp,eg,ep,ev,re,r,rp) + return rp~=tp and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)<=1 and Duel.IsChainNegatable(ev) +end +function c95000028.filter(c,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return (Duel.GetLocationCount(1-tp,LOCATION_SZONE)>0 or c:IsType(TYPE_FIELD)) and c:IsType(TYPE_SPELL) + and (not condition or condition(te,1-tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,1-tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,1-tp,eg,ep,ev,re,r,rp,0)) +end +function c95000028.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c95000028.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) and Duel.Destroy(eg,REASON_EFFECT)>0 then + local sg=Duel.GetMatchingGroup(c95000028.filter,tp,0,LOCATION_DECK,nil,tp,eg,ep,ev,re,r,rp) + if sg:GetCount()<=0 then return end + Duel.ConfirmCards(tp,sg) + local g=sg:Select(tp,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local opt=0 + if te then + local con=te:GetCondition() + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + Duel.ClearTargetCard() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,1-tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,1-tp,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + Duel.BreakEffect() + if op then op(te,1-tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end + end +end diff --git a/script/c95000029.lua b/script/c95000029.lua new file mode 100644 index 00000000..84ad3e52 --- /dev/null +++ b/script/c95000029.lua @@ -0,0 +1,95 @@ +--Nonexistence +function c95000029.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetTarget(c95000029.target) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + c:RegisterEffect(e2) + --sp summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCountLimit(1) + e3:SetCondition(c95000029.spcon) + e3:SetTarget(c95000029.sptg) + e3:SetOperation(c95000029.spop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c95000029.descon) + e4:SetTarget(c95000029.destg) + e4:SetOperation(c95000029.desop) + c:RegisterEffect(e4) + --cannot disable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_DISABLE) + c:RegisterEffect(e5) +end +c95000029.mark=0 +function c95000029.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c95000029.spcon(e,tp,eg,ep,ev,re,r,rp) and c95000029.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND) + e:SetOperation(c95000029.spop) + c95000029.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c95000029.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp + and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) +end +function c95000029.spfilter(c,e,tp) + return c:IsSetCard(0x4bde) and c:IsType(TYPE_MONSTER) + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and c:GetCode()~=95000042 +end +function c95000029.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c95000029.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + and e:GetHandler():GetFlagEffect(95000029)==0 end + e:GetHandler():RegisterFlagEffect(95000029,RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c95000029.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c95000029.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) then + tc:CompleteProcedure() + end +end +function c95000029.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c95000029.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x4bde) or c:IsSetCard(0x4a) or c:IsCode(74530899)) and c:IsDestructable() +end +function c95000029.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(c95000029.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c95000029.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local sg=Duel.GetMatchingGroup(c95000029.filter,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c95000030.lua b/script/c95000030.lua new file mode 100644 index 00000000..6c94e616 --- /dev/null +++ b/script/c95000030.lua @@ -0,0 +1,134 @@ +--Michion, the Timelord +function c95000030.initial_effect(c) + c:EnableReviveLimit() + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --time token + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95000030,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c95000030.sptg) + e3:SetOperation(c95000030.spop) + c:RegisterEffect(e3) +end +c95000030.mark=0 +function c95000030.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c95000030.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,95000031,0,0x4011,0,0,0,0,0) then + for i=1,2 do + local token=Duel.CreateToken(tp,95000030+i) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(token) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3) + local e4=Effect.CreateEffect(token) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c95000030.indval) + e4:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e4) + local e5=Effect.CreateEffect(token) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e5:SetValue(1) + e5:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e5) + local e6=Effect.CreateEffect(token) + e6:SetDescription(aux.Stringid(95000025,1)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c95000030.lpcon) + e6:SetTarget(c95000030.lptg) + e6:SetOperation(c95000030.lpop) + e6:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e6) + end + if c:IsRelateToEffect(e) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c95000030.indval) + e4:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e5:SetValue(1) + e5:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(95000025,1)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c95000030.lpcon) + e6:SetTarget(c95000030.lptg) + e6:SetOperation(c95000030.lpop) + e6:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e6) + end + Duel.SpecialSummonComplete() + end +end +function c95000030.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end +function c95000030.lpcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c95000030.lptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) +end +function c95000030.lpop(e,tp,eg,ep,ev,re,r,rp) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.SetLP(p,Duel.GetLP(p)/2) +end diff --git a/script/c95000031.lua b/script/c95000031.lua new file mode 100644 index 00000000..430ffea0 --- /dev/null +++ b/script/c95000031.lua @@ -0,0 +1,10 @@ +--Timelord Token +function c95000031.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000032.lua b/script/c95000032.lua new file mode 100644 index 00000000..b79ae851 --- /dev/null +++ b/script/c95000032.lua @@ -0,0 +1,10 @@ +--Timelord Token +function c95000032.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000033.lua b/script/c95000033.lua new file mode 100644 index 00000000..89366893 --- /dev/null +++ b/script/c95000033.lua @@ -0,0 +1,135 @@ +--Gabrion, the Timelord +function c95000033.initial_effect(c) + c:EnableReviveLimit() + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --time token + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95000033,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c95000033.sptg) + e3:SetOperation(c95000033.spop) + c:RegisterEffect(e3) +end +c95000033.mark=0 +function c95000033.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c95000033.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,95000034,0,0x4011,0,0,0,0,0) then + for i=1,2 do + local token=Duel.CreateToken(tp,95000033+i) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(token) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3) + local e4=Effect.CreateEffect(token) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c95000033.indval) + e4:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e4) + local e5=Effect.CreateEffect(token) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e5:SetValue(1) + e5:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e5) + local e6=Effect.CreateEffect(token) + e6:SetDescription(aux.Stringid(95000033,1)) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c95000033.tdcon) + e6:SetTarget(c95000033.tdtg) + e6:SetOperation(c95000033.tdop) + e6:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e6) + end + if c:IsRelateToEffect(e) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c95000033.indval) + e4:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e5:SetValue(1) + e5:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(95000033,1)) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c95000033.tdcon) + e6:SetTarget(c95000033.tdtg) + e6:SetOperation(c95000033.tdop) + e6:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e6) + end + Duel.SpecialSummonComplete() + end +end +function c95000033.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end +function c95000033.tdcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c95000033.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c95000033.tdop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) +end diff --git a/script/c95000034.lua b/script/c95000034.lua new file mode 100644 index 00000000..e71fcbdb --- /dev/null +++ b/script/c95000034.lua @@ -0,0 +1,10 @@ +--Timelord Token +function c95000034.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000035.lua b/script/c95000035.lua new file mode 100644 index 00000000..77b38dec --- /dev/null +++ b/script/c95000035.lua @@ -0,0 +1,10 @@ +--Timelord Token +function c95000035.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000036.lua b/script/c95000036.lua new file mode 100644 index 00000000..40d769d2 --- /dev/null +++ b/script/c95000036.lua @@ -0,0 +1,61 @@ +--Sandaion, the Timelord +function c95000036.initial_effect(c) + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c95000036.indval) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(95000036,1)) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCategory(CATEGORY_DAMAGE) + e6:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c95000036.damcon) + e6:SetTarget(c95000036.damtg) + e6:SetOperation(c95000036.damop) + c:RegisterEffect(e6) +end +c95000036.mark=0 +function c95000036.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end +function c95000036.damcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c95000036.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(4000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,4000) +end +function c95000036.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c95000037.lua b/script/c95000037.lua new file mode 100644 index 00000000..acf47fa3 --- /dev/null +++ b/script/c95000037.lua @@ -0,0 +1,100 @@ +--Infinite Machine Ain Soph +function c95000037.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCost(c95000037.cost) + e1:SetTarget(c95000037.target) + c:RegisterEffect(e1) + --sp summon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCondition(c95000037.spcon) + e3:SetTarget(c95000037.sptg) + e3:SetOperation(c95000037.spop) + c:RegisterEffect(e3) + --destroy + local e4=Effect.CreateEffect(c) + e4:SetCategory(CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e4:SetCode(EVENT_PHASE+PHASE_STANDBY) + e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1) + e4:SetCondition(c95000037.descon) + e4:SetTarget(c95000037.destg) + e4:SetOperation(c95000037.desop) + c:RegisterEffect(e4) + --cannot disable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_DISABLE) + c:RegisterEffect(e5) +end +c95000037.mark=0 +function c95000037.cfilter(c) + return c:IsCode(95000029) and c:IsAbleToGraveAsCost() +end +function c95000037.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95000037.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c95000037.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c95000037.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if c95000037.spcon(e,tp,eg,ep,ev,re,r,rp) and c95000037.sptg(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectYesNo(tp,aux.Stringid(65872270,0)) then + e:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND) + e:SetOperation(c95000037.spop) + c95000037.sptg(e,tp,eg,ep,ev,re,r,rp,1) + else + e:SetCategory(0) + e:SetOperation(nil) + end +end +function c95000037.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp + and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) +end +function c95000037.spfilter(c,e,tp) + return c:IsSetCard(0x4bde) and c:IsType(TYPE_MONSTER) + and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and c:GetCode()~=95000042 +end +function c95000037.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c95000037.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + and e:GetHandler():GetFlagEffect(95000037)==0 end + e:GetHandler():RegisterFlagEffect(95000037,RESET_PHASE+PHASE_END,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c95000037.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c95000037.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) then + tc:CompleteProcedure() + end +end +function c95000037.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c95000037.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x4bde) or c:IsSetCard(0x4a) or c:IsCode(74530899)) and c:IsDestructable() +end +function c95000037.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(c95000037.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,sg,sg:GetCount(),0,0) +end +function c95000037.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local sg=Duel.GetMatchingGroup(c95000037.filter,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(sg,REASON_EFFECT) +end diff --git a/script/c95000038.lua b/script/c95000038.lua new file mode 100644 index 00000000..784b9591 --- /dev/null +++ b/script/c95000038.lua @@ -0,0 +1,135 @@ +--Lazion, the Timelord +function c95000038.initial_effect(c) + c:EnableReviveLimit() + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --time token + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95000038,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetTarget(c95000038.sptg) + e3:SetOperation(c95000038.spop) + c:RegisterEffect(e3) +end +c95000038.mark=1 +function c95000038.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c95000038.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and Duel.IsPlayerCanSpecialSummonMonster(tp,95000039,0,0x4011,0,0,0,0,0) then + for i=1,2 do + local token=Duel.CreateToken(tp,95000038+i) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + e2:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(token) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e3) + local e4=Effect.CreateEffect(token) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c95000038.indval) + e4:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e4) + local e5=Effect.CreateEffect(token) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e5:SetValue(1) + e5:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e5) + local e6=Effect.CreateEffect(token) + e6:SetDescription(aux.Stringid(95000038,1)) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c95000038.tdcon) + e6:SetTarget(c95000038.tdtg) + e6:SetOperation(c95000038.tdop) + e6:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e6) + end + if c:IsRelateToEffect(e) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c95000038.indval) + e4:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e4) + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e5:SetValue(1) + e5:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e5) + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(95000038,1)) + e6:SetCategory(CATEGORY_TODECK) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_BATTLE) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c95000038.tdcon) + e6:SetTarget(c95000038.tdtg) + e6:SetOperation(c95000038.tdop) + e6:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e6) + end + Duel.SpecialSummonComplete() + end +end +function c95000038.indval(e,re,tp) + return tp~=e:GetHandlerPlayer() +end +function c95000038.tdcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetBattledGroupCount()>0 or e:GetHandler():GetAttackedCount()>0 +end +function c95000038.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c95000038.tdop(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_GRAVE,nil) + Duel.SendtoDeck(sg,nil,2,REASON_EFFECT) +end diff --git a/script/c95000039.lua b/script/c95000039.lua new file mode 100644 index 00000000..350a1a63 --- /dev/null +++ b/script/c95000039.lua @@ -0,0 +1,10 @@ +--Timelord Token +function c95000039.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000040.lua b/script/c95000040.lua new file mode 100644 index 00000000..62fe0486 --- /dev/null +++ b/script/c95000040.lua @@ -0,0 +1,10 @@ +--Timelord Token +function c95000040.initial_effect(c) + c:SetStatus(STATUS_NO_LEVEL,true) + local e2=Effect.CreateEffect(c) + e2:SetCode(EFFECT_ADD_TYPE) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetValue(TYPE_NORMAL) + c:RegisterEffect(e2) +end diff --git a/script/c95000041.lua b/script/c95000041.lua new file mode 100644 index 00000000..6d56352b --- /dev/null +++ b/script/c95000041.lua @@ -0,0 +1,44 @@ +--Infinite Light +function c95000041.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCost(c95000041.cost) + e1:SetTarget(c95000041.target) + e1:SetOperation(c95000041.operation) + c:RegisterEffect(e1) + --cannot disable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_CANNOT_DISABLE) + c:RegisterEffect(e5) +end +c95000041.mark=2 +function c95000041.cfilter(c) + return c:IsCode(95000037) and c:IsAbleToGraveAsCost() +end +function c95000041.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95000041.cfilter,tp,LOCATION_ONFIELD,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c95000041.cfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c95000041.spfilter(c,e,tp) + return c:IsSetCard(0x4bde) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) +end +function c95000041.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c95000041.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) +end +function c95000041.operation(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc=Duel.SelectMatchingCard(tp,c95000041.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp):GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) then + tc:CompleteProcedure() + end +end diff --git a/script/c95000042.lua b/script/c95000042.lua new file mode 100644 index 00000000..d10b794b --- /dev/null +++ b/script/c95000042.lua @@ -0,0 +1,74 @@ +--Sephylon, the Ultimate Timelord +function c95000042.initial_effect(c) + c:EnableReviveLimit() + --no type/attribute/level + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_RACE) + e1:SetValue(0) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCode(EFFECT_CHANGE_ATTRIBUTE) + c:RegisterEffect(e2) + c:SetStatus(STATUS_NO_LEVEL,true) + --4000 atk + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(LOCATION_MZONE,0) + e3:SetTarget(c95000042.atktg) + e3:SetValue(4000) + c:RegisterEffect(e3) + --attack + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_SET_ATTACK) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetValue(c95000042.atkval) + c:RegisterEffect(e4) + --Destroy replace + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_DESTROY_REPLACE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e5:SetRange(LOCATION_MZONE) + e5:SetTarget(c95000042.desreptg) + e5:SetOperation(c95000042.desrepop) + c:RegisterEffect(e5) +end +c95000042.mark=3 +function c95000042.atktg(e,c) + return c~=e:GetHandler() and (c:IsSetCard(0x4bde) or c:IsSetCard(0x4a) or c:IsCode(74530899)) +end +function c95000042.filter(c) + return c:IsFaceup() and (c:IsSetCard(0x4bde) or c:IsSetCard(0x4a) or c:IsCode(74530899)) +end +function c95000042.atkval(e,c) + local g=Duel.GetMatchingGroup(c95000042.filter,c:GetControler(),LOCATION_MZONE,0,nil) + return g:GetSum(Card.GetAttack) +end +function c95000042.repfilter(c) + return (c:IsSetCard(0x4bde) or c:IsSetCard(0x4a) or c:IsCode(74530899)) and not c:IsStatus(STATUS_DESTROY_CONFIRMED+STATUS_BATTLE_DESTROYED) +end +function c95000042.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) and c:IsOnField() and c:IsFaceup() + and Duel.IsExistingMatchingCard(c95000042.repfilter,tp,LOCATION_MZONE,0,1,c) end + if Duel.SelectYesNo(tp,aux.Stringid(95000042,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESREPLACE) + local g=Duel.SelectMatchingCard(tp,c95000042.repfilter,tp,LOCATION_MZONE,0,1,1,c) + e:SetLabelObject(g:GetFirst()) + Duel.HintSelection(g) + g:GetFirst():SetStatus(STATUS_DESTROY_CONFIRMED,true) + return true + else return false end +end +function c95000042.desrepop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + tc:SetStatus(STATUS_DESTROY_CONFIRMED,false) + Duel.Destroy(tc,REASON_EFFECT+REASON_REPLACE) +end diff --git a/script/c95000043.lua b/script/c95000043.lua new file mode 100644 index 00000000..0f47ee4a --- /dev/null +++ b/script/c95000043.lua @@ -0,0 +1,233 @@ +--AF Acrobatic Circus +function c95000043.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000043.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000043.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000043.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000043.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000043,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000043.condition) + e8:SetTarget(c95000043.Acttarget) + e8:SetOperation(c95000043.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000043.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000043.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000043.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000043.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000043.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000043.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000043.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000043,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000043.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000043.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000043.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000043.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000043.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000043.operation(e,tp,eg,ep,ev,re,r,rp) + +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000043,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000043.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000043.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000043.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000043.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000043)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000043.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000047, +95000048, +95000143 +} +function c95000043.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000043.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000043.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000043)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000043,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000043.condition) + e1:SetTarget(c95000043.Acttarget) + e1:SetOperation(c95000043.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000043.sfilter) + fc:RegisterEffect(e4) + + fc:RegisterFlagEffect(195000043,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000044.lua b/script/c95000044.lua new file mode 100644 index 00000000..c19e2d26 --- /dev/null +++ b/script/c95000044.lua @@ -0,0 +1,29 @@ +--Action Card - Avoid +function c95000044.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetCondition(c95000044.condition) + e1:SetOperation(c95000044.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000044.handcon) + c:RegisterEffect(e2) +end +function c95000044.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()~=nil +end +function c95000044.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000044.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end + + diff --git a/script/c95000045.lua b/script/c95000045.lua new file mode 100644 index 00000000..39db0d3d --- /dev/null +++ b/script/c95000045.lua @@ -0,0 +1,65 @@ +--Action Card - Miracle +function c95000045.initial_effect(c) + + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c95000045.target) + e1:SetCondition(c95000045.condition) + e1:SetOperation(c95000045.activate) + c:RegisterEffect(e1) + + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000045.handcon) + c:RegisterEffect(e2) +end +function c95000045.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000045.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d and a +end +function c95000045.filter(c) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return c==a or c==d +end +function c95000045.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(c95000045.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c95000045.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000045.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c95000045.rdcon) + e2:SetOperation(c95000045.rdop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e2,true) + end +end +function c95000045.rdcon(e,tp,eg,ep,ev,re,r,rp) + return ep==e:GetOwnerPlayer() +end +function c95000045.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end + diff --git a/script/c95000046.lua b/script/c95000046.lua new file mode 100644 index 00000000..e241f933 --- /dev/null +++ b/script/c95000046.lua @@ -0,0 +1,40 @@ +--Action Card - Mirror Barrier +function c95000046.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetTarget(c95000046.target) + e1:SetOperation(c95000046.activate) + c:RegisterEffect(e1) + + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000046.handcon) + c:RegisterEffect(e2) +end +function c95000046.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000046.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000046.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c95000047.lua b/script/c95000047.lua new file mode 100644 index 00000000..8538233b --- /dev/null +++ b/script/c95000047.lua @@ -0,0 +1,44 @@ +--Action Card - High Dive +function c95000047.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(c95000047.condition) + e1:SetTarget(c95000047.target) + e1:SetOperation(c95000047.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000047.handcon) + c:RegisterEffect(e2) +end +function c95000047.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000047.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c95000047.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000047.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c95000048.lua b/script/c95000048.lua new file mode 100644 index 00000000..3465f854 --- /dev/null +++ b/script/c95000048.lua @@ -0,0 +1,37 @@ +--Action Card - Wonder Chance +function c95000048.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000048.target) + e1:SetOperation(c95000048.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000048.handcon) + c:RegisterEffect(e2) +end +function c95000048.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000048.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) 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,IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c95000048.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(1) + tc:RegisterEffect(e2) + end +end diff --git a/script/c95000049.lua b/script/c95000049.lua new file mode 100644 index 00000000..4ed4b776 --- /dev/null +++ b/script/c95000049.lua @@ -0,0 +1,321 @@ +--Action Field - Amazoness Village +function c95000049.initial_effect(c) + --Activate + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000049.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000049.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000049.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000049.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000049,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000049.condition) + e8:SetTarget(c95000049.Acttarget) + e8:SetOperation(c95000049.operation) + c:RegisterEffect(e8) + --Amazoness atkup + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x4)) + e9:SetCondition(c95000049.Fcond) + e9:SetValue(100) + c:RegisterEffect(e9) + --Amazoness special summon + local e10=Effect.CreateEffect(c) + e10:SetDescription(aux.Stringid(712559,0)) + e10:SetCategory(CATEGORY_SPECIAL_SUMMON) + e10:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e10:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e10:SetRange(LOCATION_SZONE) + e10:SetCode(EVENT_TO_GRAVE) + e10:SetCountLimit(1) + e10:SetCondition(c95000049.conditionSum) + e10:SetTarget(c95000049.targetSum) + e10:SetOperation(c95000049.operationSum) + c:RegisterEffect(e10) + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000049.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000049.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000049.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000049.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000049.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000049.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000049,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000049.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000049.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000049.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000049.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000049.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000049.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000049,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000049.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000049.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end + +function c95000049.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000049.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000049)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000049.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000049.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000049.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000049)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000049.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000049)==0) and (f2:GetFlagEffect(195000049)==0) +end + +tableAction = { +95000044, +95000044, +95000045, +95000046, +95000143 +} +function c95000049.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000049.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000049.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000049)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000049,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000049.condition) + e1:SetTarget(c95000049.Acttarget) + e1:SetOperation(c95000049.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000049.sfilter) + fc:RegisterEffect(e4) + -- if not fc:IsCode(712559) then + --Amazoness atkup + -- local e9=Effect.CreateEffect(c) + -- e9:SetType(EFFECT_TYPE_FIELD) + -- e9:SetCode(EFFECT_UPDATE_ATTACK) + -- e9:SetRange(LOCATION_SZONE) + -- e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + -- e9:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x4)) + -- e9:SetValue(100) + -- fc:RegisterEffect(e9) + --Amazoness special summon + -- local e10=Effect.CreateEffect(c) + -- e10:SetDescription(aux.Stringid(712559,0)) + -- e10:SetCategory(CATEGORY_SPECIAL_SUMMON) + -- e10:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + -- e10:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + -- e10:SetRange(LOCATION_SZONE) + -- e10:SetCode(EVENT_TO_GRAVE) + -- e10:SetCountLimit(1) + -- e10:SetCondition(c95000049.conditionSum) + -- e10:SetTarget(c95000049.targetSum) + -- e10:SetOperation(c95000049.operationSum) + -- fc:RegisterEffect(e10) + -- end + fc:RegisterFlagEffect(195000049,RESET_EVENT+0x1fe0000,0,1) + end +end + + +---Amazoness effect +function c95000049.conditionSum(e,tp,eg,ep,ev,re,r,rp) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + + local lv=0 + local tc=eg:GetFirst() + while tc do + if tc:IsReason(REASON_DESTROY) and tc:IsSetCard(0x4) then + local tlv=tc:GetLevel() + if tlv>lv then lv=tlv end + end + tc=eg:GetNext() + end + if lv>0 then e:SetLabel(lv) end + return lv>0 and (f1:GetFlagEffect(195000049)==0) and (f2:GetFlagEffect(195000049)==0) + +end +function c95000049.spfilter(c,e,tp,lv) + return c:IsLevelBelow(lv) and c:IsSetCard(0x4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c95000049.targetSum(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c95000049.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp,e:GetLabel()) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c95000049.operationSum(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c95000049.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,e:GetLabel()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end + diff --git a/script/c95000050.lua b/script/c95000050.lua new file mode 100644 index 00000000..7d8234a7 --- /dev/null +++ b/script/c95000050.lua @@ -0,0 +1,256 @@ +--Action Field - Acidic Downpour +function c95000050.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000050.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000050.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000050.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000050.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000050,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000050.condition) + e8:SetTarget(c95000050.Acttarget) + e8:SetOperation(c95000050.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH)) + e9:SetCondition(c95000050.Fcond) + e9:SetValue(-250) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH)) + e10:SetCondition(c95000050.Fcond) + e10:SetValue(200) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000050.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000050.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000050.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000050.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000050.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000050.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000050,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000050.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000050.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000050.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000050.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000050.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000050.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000050,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000050.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000050.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000050.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000050.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000050)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000050.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000050.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000050.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000050)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000050.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000050)==0) and (f2:GetFlagEffect(195000050)==0) +end + +tableAction = { +95000044, +95000044, +95000045, +95000046, +95000143 +} +function c95000050.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000050.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000050.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000050)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000050,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000050.condition) + e1:SetTarget(c95000050.Acttarget) + e1:SetOperation(c95000050.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000050.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000050,RESET_EVENT+0x1fe0000,0,1) + end +end + diff --git a/script/c95000051.lua b/script/c95000051.lua new file mode 100644 index 00000000..f2c9253f --- /dev/null +++ b/script/c95000051.lua @@ -0,0 +1,31 @@ +--Action Card - Mad Hurricane +function c95000051.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000051.target) + e1:SetOperation(c95000051.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000051.handcon) + c:RegisterEffect(e2) +end +function c95000051.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000051.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)>0 end + local g=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,0) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c95000051.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,0) + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) +end + + + diff --git a/script/c95000052.lua b/script/c95000052.lua new file mode 100644 index 00000000..42f855be --- /dev/null +++ b/script/c95000052.lua @@ -0,0 +1,229 @@ +--AF Bamboo Forest of the Immortals +function c95000052.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000052.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000052.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000052.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000052.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000052,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000052.condition) + e8:SetTarget(c95000052.Acttarget) + e8:SetOperation(c95000052.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000052.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000052.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000052.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000052.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000052.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000052.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000052.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000052,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000052.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000052.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000052.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000052.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000052.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000052.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000052,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000052.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000052.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000052.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000052.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000052)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000052.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000051, +95000143 +} +function c95000052.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000052.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000052.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000052)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000052,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000052.condition) + e1:SetTarget(c95000052.Acttarget) + e1:SetOperation(c95000052.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000052.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000052,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000053.lua b/script/c95000053.lua new file mode 100644 index 00000000..476ef17a --- /dev/null +++ b/script/c95000053.lua @@ -0,0 +1,219 @@ +--AF Castle of Chaos +function c95000053.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000053.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000053.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000053.ctcon2) + c:RegisterEffect(e6) + + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000053,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000053.condition) + e8:SetTarget(c95000053.Acttarget) + e8:SetOperation(c95000053.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000053.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000053.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000053.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000053.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000053.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000053.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000053.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000053,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000053.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000053.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000053.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000053.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000053.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000053.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000053,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000053.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000053.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000053.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000053.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000053)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000053.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000044, +95000044, +95000044, +95000044, +95000045, +95000045, +95000045, +95000046, +95000125, +95000126, +95000127, +95000143 +} +function c95000053.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000053.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000053.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000053)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000053,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000053.condition) + e1:SetTarget(c95000053.Acttarget) + e1:SetOperation(c95000053.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + fc:RegisterFlagEffect(195000053,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000054.lua b/script/c95000054.lua new file mode 100644 index 00000000..038f6f48 --- /dev/null +++ b/script/c95000054.lua @@ -0,0 +1,227 @@ +--AF Crystal Corridor +function c95000054.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000054.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000054.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000054.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000054.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000054,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000054.condition) + e8:SetTarget(c95000054.Acttarget) + e8:SetOperation(c95000054.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000054.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000054.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000054.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000054.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000054.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000054.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000054.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000054,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000054.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000054.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000054.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000054.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000054.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000054.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000054,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000054.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000054.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000054.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000054.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000054)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000054.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000054.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000054.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000054.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000054)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000054,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000054.condition) + e1:SetTarget(c95000054.Acttarget) + e1:SetOperation(c95000054.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000054.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000054,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000055.lua b/script/c95000055.lua new file mode 100644 index 00000000..9ff61079 --- /dev/null +++ b/script/c95000055.lua @@ -0,0 +1,228 @@ +--AF Future Metropolis Heartland +function c95000055.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000055.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000055.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000055.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000055.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000055,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000055.condition) + e8:SetTarget(c95000055.Acttarget) + e8:SetOperation(c95000055.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000055.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000055.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000055.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000055.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000055.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000055.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000055.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000055,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000055.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000055.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000055.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000055.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000055.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000055.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000055,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000055.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000055.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000055.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000055.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000055)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000055.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000046, +95000143 +} +function c95000055.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000055.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000055.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000055)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000055,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000055.condition) + e1:SetTarget(c95000055.Acttarget) + e1:SetOperation(c95000055.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000055.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000055,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000056.lua b/script/c95000056.lua new file mode 100644 index 00000000..b0ddd9c0 --- /dev/null +++ b/script/c95000056.lua @@ -0,0 +1,227 @@ +--AF infinite Bridge +function c95000056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000056.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000056.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000056.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000056.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000056,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000056.condition) + e8:SetTarget(c95000056.Acttarget) + e8:SetOperation(c95000056.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000056.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000056.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000056.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000056.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000056.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000056.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000056.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000056,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000056.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000056.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000056.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000056.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000056.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000056.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000056,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000056.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000056.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000056.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000056.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000056)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000056.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000056.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000056.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000056.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000056)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000056,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000056.condition) + e1:SetTarget(c95000056.Acttarget) + e1:SetOperation(c95000056.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000056.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000056,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000057.lua b/script/c95000057.lua new file mode 100644 index 00000000..75677eb7 --- /dev/null +++ b/script/c95000057.lua @@ -0,0 +1,227 @@ +--AF Landslide Victory Pier +function c95000057.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000057.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000057.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000057.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000057.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000057,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000057.condition) + e8:SetTarget(c95000057.Acttarget) + e8:SetOperation(c95000057.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000057.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000057.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000057.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000057.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000057.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000057.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000057.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000057,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000057.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000057.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000057.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000057.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000057.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000057.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000057,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000057.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000057.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000057.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000057.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000057)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000057.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000057.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000057.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000057.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000057)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000057,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000057.condition) + e1:SetTarget(c95000057.Acttarget) + e1:SetOperation(c95000057.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000057.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000057,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000058.lua b/script/c95000058.lua new file mode 100644 index 00000000..5db86641 --- /dev/null +++ b/script/c95000058.lua @@ -0,0 +1,228 @@ +--AF Plaine plane +function c95000058.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000058.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000058.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000058.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000058.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000058,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000058.condition) + e8:SetTarget(c95000058.Acttarget) + e8:SetOperation(c95000058.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000058.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000058.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000058.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000058.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000058.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000058.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000058.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000058,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000058.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000058.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000058.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000058.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000058.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000058.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000058,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000058.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000058.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000058.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000058.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000058)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000058.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000058.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000058.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000058.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000058)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000058,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000058.condition) + e1:SetTarget(c95000058.Acttarget) + e1:SetOperation(c95000058.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000058.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000058,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000059.lua b/script/c95000059.lua new file mode 100644 index 00000000..721966b7 --- /dev/null +++ b/script/c95000059.lua @@ -0,0 +1,228 @@ +--AF Wildest West +function c95000059.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000059.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000059.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000059.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000059.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000059,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000059.condition) + e8:SetTarget(c95000059.Acttarget) + e8:SetOperation(c95000059.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000059.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000059.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000059.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000059.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000059.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000059.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000059.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000059,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000059.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000059.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000059.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000059.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000059.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000059.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000059,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000059.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000059.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000059.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000059.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000059)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000059.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000059.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000059.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000059.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000059)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000059,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000059.condition) + e1:SetTarget(c95000059.Acttarget) + e1:SetOperation(c95000059.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000059.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000059,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000060.lua b/script/c95000060.lua new file mode 100644 index 00000000..1a36bea4 --- /dev/null +++ b/script/c95000060.lua @@ -0,0 +1,229 @@ +--AF Wildest West +function c95000060.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000060.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000060.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000060.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000060.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000060,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000060.condition) + e8:SetTarget(c95000060.Acttarget) + e8:SetOperation(c95000060.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000060.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000060.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000060.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000060.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000060.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000060.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000060.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000060,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000060.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000060.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000060.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000060.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000060.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000060.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000060,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000060.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000060.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end + +function c95000060.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000060.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000060)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000060.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000060.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000060.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000060.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000060)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000060,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000060.condition) + e1:SetTarget(c95000060.Acttarget) + e1:SetOperation(c95000060.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000060.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000060,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000061.lua b/script/c95000061.lua new file mode 100644 index 00000000..8331f217 --- /dev/null +++ b/script/c95000061.lua @@ -0,0 +1,260 @@ +--Action Field - Zombie World +function c95000061.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000061.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000061.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000061.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000061.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000061,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000061.condition) + e8:SetTarget(c95000061.Acttarget) + e8:SetOperation(c95000061.operation) + c:RegisterEffect(e8) + + + --race + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_FZONE) + e9:SetTargetRange(LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE) + e9:SetCode(EFFECT_CHANGE_RACE) + e9:SetCondition(c95000061.Fcond) + e9:SetValue(RACE_ZOMBIE) + c:RegisterEffect(e9) + --summon limit + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetRange(LOCATION_FZONE) + e10:SetCode(EFFECT_CANNOT_SUMMON) + e10:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e10:SetTargetRange(1,1) + e10:SetTarget(c95000061.sumlimit) + e10:SetCondition(c95000061.Fcond) + c:RegisterEffect(e10) + local e11=e10:Clone() + e11:SetCode(EFFECT_CANNOT_MSET) + c:RegisterEffect(e11) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000061.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000061.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000061.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000061.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000061.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000061.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000061,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000061.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000061.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000061.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000061.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000061.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000061.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000061,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000061.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000061.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000061.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000061.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000061)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000061.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000061.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000061.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000061)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000061.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000061)==0) and (f2:GetFlagEffect(195000061)==0) +end + +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000061.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000061.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000061.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000061)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000061,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000061.condition) + e1:SetTarget(c95000061.Acttarget) + e1:SetOperation(c95000061.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000061.sfilter) + fc:RegisterEffect(e4) + + fc:RegisterFlagEffect(195000061,RESET_EVENT+0x1fe0000,0,1) + end +end + diff --git a/script/c95000062.lua b/script/c95000062.lua new file mode 100644 index 00000000..3d06289c --- /dev/null +++ b/script/c95000062.lua @@ -0,0 +1,293 @@ +--AF Karakuri Showdown Castle +function c95000062.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000062.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000062.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000062.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000062.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000062,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000062.condition) + e8:SetTarget(c95000062.Acttarget) + e8:SetOperation(c95000062.operation) + c:RegisterEffect(e8) + + --pos + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(22751868,0)) + e9:SetCategory(CATEGORY_POSITION) + e9:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_SZONE) + e9:SetCode(EVENT_BE_BATTLE_TARGET) + e9:SetCondition(c95000062.poscon) + e9:SetTarget(c95000062.postg) + e9:SetOperation(c95000062.posop) + c:RegisterEffect(e9) + --special summon + local e10=Effect.CreateEffect(c) + e10:SetCategory(CATEGORY_SPECIAL_SUMMON) + e10:SetDescription(aux.Stringid(22751868,1)) + e10:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e10:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e10:SetCode(EVENT_TO_GRAVE) + e10:SetCondition(c95000062.spcon) + e10:SetTarget(c95000062.sptg) + e10:SetOperation(c95000062.spop) + c:RegisterEffect(e10) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000062.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000062.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000062.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000062.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000062.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000062.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000062.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000062,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000062.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000062.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000062.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000062.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000062.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000062.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000062,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000062.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000062.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000062.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000062.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000062)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000062.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000062.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000062.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000062.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000062)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000062,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000062.condition) + e1:SetTarget(c95000062.Acttarget) + e1:SetOperation(c95000062.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000062.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000062,RESET_EVENT+0x1fe0000,0,1) + end +end + + +function c95000062.poscon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return a:IsControler(tp) and a:IsSetCard(0x11) and d:IsFaceup() and (f1:GetFlagEffect(195000062)==0) and (f2:GetFlagEffect(195000062)==0) +end +function c95000062.postg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.GetAttackTarget():CreateEffectRelation(e) +end +function c95000062.posop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttackTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENCE,0,POS_FACEUP_ATTACK,0) + end +end +function c95000062.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return c:IsReason(REASON_DESTROY) and c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousPosition(POS_FACEUP) and (f1:GetFlagEffect(195000062)==0) and (f2:GetFlagEffect(195000062)==0) +end +function c95000062.filter(c,e,tp) + return c:IsLevelAbove(4) and c:IsSetCard(0x11) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c95000062.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c95000062.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c95000062.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c95000062.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c95000062.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c95000063.lua b/script/c95000063.lua new file mode 100644 index 00000000..f670103e --- /dev/null +++ b/script/c95000063.lua @@ -0,0 +1,296 @@ +--AF Brain Research Lab +function c95000063.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000063.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000063.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000063.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000063.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000063,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000063.condition) + e8:SetTarget(c95000063.Acttarget) + e8:SetOperation(c95000063.operation) + c:RegisterEffect(e8) + + + --extra summon + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,LOCATION_HAND+LOCATION_MZONE) + e9:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e9:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_PSYCHO)) + e9:SetCondition(c95000063.Fcond) + e9:SetValue(c95000063.esop) + c:RegisterEffect(e9) + --lpcost replace + local e10=Effect.CreateEffect(c) + e10:SetDescription(aux.Stringid(85668449,0)) + e10:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e10:SetRange(LOCATION_SZONE) + e10:SetCode(EFFECT_LPCOST_REPLACE) + e10:SetCondition(c95000063.lrcon) + e10:SetOperation(c95000063.lrop) + c:RegisterEffect(e10) + --damage + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e11:SetCode(EVENT_LEAVE_FIELD_P) + e11:SetCondition(c95000063.Fcond) + e11:SetOperation(c95000063.damp) + c:RegisterEffect(e11) + local e12=Effect.CreateEffect(c) + e12:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e12:SetCode(EVENT_LEAVE_FIELD) + e12:SetOperation(c95000063.damop) + e12:SetCondition(c95000063.Fcond) + e12:SetLabelObject(e12) + c:RegisterEffect(e12) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000063.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000063.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000063.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000063.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000063.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000063.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000063.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000063,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000063.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000063.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000063.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000063.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000063.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000063.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000063,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000063.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000063.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000063.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000063.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000063)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000063.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} + +function c95000063.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000063.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000063.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000063)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000063,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000063.condition) + e1:SetTarget(c95000063.Acttarget) + e1:SetOperation(c95000063.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000063.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000063,RESET_EVENT+0x1fe0000,0,1) + end +end +function c95000063.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000063)==0) and (f2:GetFlagEffect(195000063)==0) +end +function c95000063.esop(e,c) + e:GetHandler():AddCounter(0x3004,1) +end +function c95000063.lrcon(e,tp,eg,ep,ev,re,r,rp) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + if tp~=ep then return false end + local lp=Duel.GetLP(ep) + if lp<=ev then return false end + if not re then return false end + local rc=re:GetHandler() + return rc:IsLocation(LOCATION_MZONE) and rc:IsRace(RACE_PSYCHO) and (f1:GetFlagEffect(195000063)==0) and (f2:GetFlagEffect(195000063)==0) +end +function c95000063.lrop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x3004,1) +end +function c95000063.damp(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetCounter(0x3004) + e:SetLabel(ct) +end +function c95000063.damop(e,tp,eg,ep,ev,re,r,rp) + local ct=e:GetLabelObject():GetLabel() + if ct>0 then + Duel.Damage(tp,ct*1000,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95000064.lua b/script/c95000064.lua new file mode 100644 index 00000000..dc84f571 --- /dev/null +++ b/script/c95000064.lua @@ -0,0 +1,229 @@ +--AF Sweet Island +function c95000064.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000064.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000064.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000064.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000064.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000064,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000064.condition) + e8:SetTarget(c95000064.Acttarget) + e8:SetOperation(c95000064.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000064.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000064.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000064.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000064.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000064.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000064.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000064.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000064,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000064.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000064.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000064.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000064.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000064.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000064.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000064,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000064.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000064.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end +end +end +function c95000064.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000064.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000064)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000064.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000065, +95000066, +95000067, +95000143 +} +function c95000064.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000064.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000064.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000064)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000064,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000064.condition) + e1:SetTarget(c95000064.Acttarget) + e1:SetOperation(c95000064.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000064.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000064,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000065.lua b/script/c95000065.lua new file mode 100644 index 00000000..337390f1 --- /dev/null +++ b/script/c95000065.lua @@ -0,0 +1,37 @@ +--Action Card - Candy Shower +function c95000065.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000065.target) + e1:SetOperation(c95000065.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000065.handcon) + c:RegisterEffect(e2) +end +function c95000065.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000065.filter(c) + return c:IsPosition(POS_FACEUP_ATTACK) +end +function c95000065.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c95000065.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c95000065.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c95000065.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c95000065.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsPosition(POS_FACEUP_ATTACK) then + Duel.ChangePosition(tc,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c95000066.lua b/script/c95000066.lua new file mode 100644 index 00000000..7c3b748f --- /dev/null +++ b/script/c95000066.lua @@ -0,0 +1,51 @@ +--Action Card - Candy Coat +function c95000066.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000066.target) + e1:SetOperation(c95000066.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000066.handcon) + c:RegisterEffect(e2) +end +function c95000066.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000066.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,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 c95000066.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc: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_IMMUNE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(c95000066.efilter) + tc:RegisterEffect(e2) + end +end +function c95000066.efilter(e,te) + return te:IsActiveType(TYPE_SPELL+TYPE_TRAP) and te:GetOwnerPlayer()~=e:GetHandlerPlayer() +end + diff --git a/script/c95000067.lua b/script/c95000067.lua new file mode 100644 index 00000000..b1e1a091 --- /dev/null +++ b/script/c95000067.lua @@ -0,0 +1,40 @@ +--Action Card - Nanana +function c95000067.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c95000067.target) + e1:SetOperation(c95000067.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000067.handcon) + c:RegisterEffect(e2) +end +function c95000067.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000067.filter(c) + return c:IsFaceup() +end +function c95000067.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c95000067.filter(chkc) 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 c95000067.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(700) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end +end diff --git a/script/c95000068.lua b/script/c95000068.lua new file mode 100644 index 00000000..af7bbf56 --- /dev/null +++ b/script/c95000068.lua @@ -0,0 +1,49 @@ +--Action Card - Cosmic Arrow +function c95000068.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_HAND) + e1:SetCountLimit(1) + e1:SetCondition(c95000068.condition) + e1:SetTarget(c95000068.target) + e1:SetOperation(c95000068.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000068.handcon) + c:RegisterEffect(e2) +end +function c95000068.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000068.dfilter(c) + return c:IsType(TYPE_SPELL) +end +function c95000068.filter(c,e,tp) + return c:IsControler(tp) and (not c:IsReason(REASON_DRAW)) and (not e or c:IsRelateToEffect(e)) +end +function c95000068.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c95000068.filter,1,nil,nil,1-tp) +end +function c95000068.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetCard(eg) + Duel.SetOperationInfo(0,CATEGORY_TODECK,eg,1,0,0) + Duel.SetChainLimit(c95000068.climit) +end +function c95000068.activate(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c95000068.filter,nil,e,1-tp) + if g:GetCount()==0 then return end + Duel.ConfirmCards(1-ep,g) + local dg=g:Filter(c95000068.dfilter,nil) + Duel.Destroy(dg,REASON_EFFECT) + Duel.ShuffleHand(ep) +end +function c95000068.climit(e,lp,tp) + return lp==tp or not e:IsHasType(EFFECT_TYPE_ACTIVATE) +end diff --git a/script/c95000069.lua b/script/c95000069.lua new file mode 100644 index 00000000..71a60c8c --- /dev/null +++ b/script/c95000069.lua @@ -0,0 +1,44 @@ +--Action Card - Twinkle Comet +function c95000069.initial_effect(c) +--Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c95000069.condition) + e1:SetTarget(c95000069.target) + e1:SetOperation(c95000069.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000069.handcon) + c:RegisterEffect(e2) +end +function c95000069.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000069.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c95000069.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000069.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + Duel.Damage(1-tp,500,REASON_EFFECT) + end +end diff --git a/script/c95000070.lua b/script/c95000070.lua new file mode 100644 index 00000000..ce34d9be --- /dev/null +++ b/script/c95000070.lua @@ -0,0 +1,230 @@ +--AF Cosmo Sanctuary +function c95000070.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000070.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000070.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000070.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000070.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000070,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000070.condition) + e8:SetTarget(c95000070.Acttarget) + e8:SetOperation(c95000070.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000070.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000070.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000070.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000070.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000070.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000070.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000070.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000070,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000070.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000070.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000070.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000070.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000070.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000070.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000070,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000070.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000070.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000070.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000070.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000070)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000070.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000068, +95000069, +95000143 +} +function c95000070.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000070.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000070.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000070)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000070,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000070.condition) + e1:SetTarget(c95000070.Acttarget) + e1:SetOperation(c95000070.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000070.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000070,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000071.lua b/script/c95000071.lua new file mode 100644 index 00000000..50f91fe1 --- /dev/null +++ b/script/c95000071.lua @@ -0,0 +1,28 @@ +--Action Card - Jump Shot +function c95000071.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000071.target) + e1:SetOperation(c95000071.activate) + c:RegisterEffect(e1) +end +function c95000071.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==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) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c95000071.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-400) + tc:RegisterEffect(e1) + end +end + diff --git a/script/c95000072.lua b/script/c95000072.lua new file mode 100644 index 00000000..30e9ab59 --- /dev/null +++ b/script/c95000072.lua @@ -0,0 +1,28 @@ +--Action Card - Break Shot +function c95000072.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000072.target) + e1:SetOperation(c95000072.activate) + c:RegisterEffect(e1) +end +function c95000072.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:GetLocation()==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) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c95000072.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-900) + tc:RegisterEffect(e1) + end +end + diff --git a/script/c95000073.lua b/script/c95000073.lua new file mode 100644 index 00000000..5175c27c --- /dev/null +++ b/script/c95000073.lua @@ -0,0 +1,402 @@ +--AF Prison Tower of Darkville +function c95000073.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000073.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000073.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000073.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000073.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000073,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000073.condition) + e8:SetTarget(c95000073.Acttarget) + e8:SetOperation(c95000073.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000073.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000073.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000073.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000073.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000073.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000073.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000073.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000073,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000073.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000073.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000073.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000073.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000073.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000073.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==3 or dc==4 or dc==6 then +e:GetHandler():RegisterFlagEffect(95000073,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then + if not Duel.IsExistingMatchingCard(c95000073.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + --- check action Trap + if (e:GetLabel()==95000071 or e:GetLabel()==95000072) then + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + Duel.MoveToField(token,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + if not Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) then + Duel.SendtoGrave(token,nil,REASON_RULE) end + local tc=token + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + + else + ---Action Spell + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SendtoHand(token,nil,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + end +end + if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000073.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + --- check action Trap + if (e:GetLabel()==95000071 or e:GetLabel()==95000072) then + local token=Duel.CreateToken(1-tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.MoveToField(token,1-tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + if not Duel.IsExistingTarget(Card.IsFaceup,1-tp,LOCATION_MZONE,0,1,nil) then + Duel.SendtoGrave(token,nil,REASON_RULE) end + local tc=token + Duel.ConfirmCards(1-tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + + else + ---Action Spell + local token=Duel.CreateToken(1-tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SendtoHand(token,1-tp,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + end +end + +else +if not Duel.IsExistingMatchingCard(c95000073.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + --- check action Trap + if (e:GetLabel()==95000071 or e:GetLabel()==95000072) then + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + Duel.MoveToField(token,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + if not Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) then + Duel.SendtoGrave(token,nil,REASON_RULE) end + local tc=token + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + + else + ---Action Spell + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SendtoHand(token,nil,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + end +end + +function c95000073.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000073.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000073)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000073.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000071, +95000072, +95000143 +} +function c95000073.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000073.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000073.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000073)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000073,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000073.condition) + e1:SetTarget(c95000073.Acttarget) + e1:SetOperation(c95000073.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000073.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000073,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000074.lua b/script/c95000074.lua new file mode 100644 index 00000000..39487d5d --- /dev/null +++ b/script/c95000074.lua @@ -0,0 +1,259 @@ +--Action Field - Forest +function c95000074.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000074.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000074.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000074.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000074.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000074,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000074.condition) + e8:SetTarget(c95000074.Acttarget) + e8:SetOperation(c95000074.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(c95000074.tg) + e9:SetCondition(c95000074.Fcond) + e9:SetValue(100) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(c95000074.tg) + e10:SetCondition(c95000074.Fcond) + e10:SetValue(100) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000074.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000074.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000074.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000074.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000074.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000074.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000074,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000074.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000074.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000074.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000074.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000074.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000074.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000074,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000074.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000074.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000074.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000074.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000074)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000074.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000074.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000074.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000074)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000074.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000074)==0) and (f2:GetFlagEffect(195000074)==0) +end + +tableAction = { +95000044, +95000044, +95000045, +95000046, +95000143 +} +function c95000074.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000074.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000074.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000074)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000074,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000074.condition) + e1:SetTarget(c95000074.Acttarget) + e1:SetOperation(c95000074.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000074.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000074,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000074.tg(e,c) + return c:IsRace(RACE_INSECT+RACE_BEAST+RACE_PLANT+RACE_BEASTWARRIOR) +end \ No newline at end of file diff --git a/script/c95000075.lua b/script/c95000075.lua new file mode 100644 index 00000000..22c43937 --- /dev/null +++ b/script/c95000075.lua @@ -0,0 +1,259 @@ +--Action Field - Mountain +function c95000075.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000075.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000075.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000075.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000075.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000075,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000075.condition) + e8:SetTarget(c95000075.Acttarget) + e8:SetOperation(c95000075.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(c95000075.tg) + e9:SetCondition(c95000075.Fcond) + e9:SetValue(100) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(c95000075.tg) + e10:SetCondition(c95000075.Fcond) + e10:SetValue(100) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000075.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000075.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000075.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000075.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000075.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000075.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000075,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000075.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000075.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000075.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000075.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000075.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000075.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000075,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000075.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000075.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000075.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000075.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000075)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000075.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000075.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000075.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000075)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000075.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000075)==0) and (f2:GetFlagEffect(195000075)==0) +end + +tableAction = { +95000044, +95000044, +95000045, +95000046, +95000143 +} +function c95000075.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000075.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000075.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000075)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000075,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000075.condition) + e1:SetTarget(c95000075.Acttarget) + e1:SetOperation(c95000075.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000075.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000075,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000075.tg(e,c) + return c:IsRace(RACE_DRAGON+RACE_WINDBEAST+RACE_THUNDER) +end \ No newline at end of file diff --git a/script/c95000076.lua b/script/c95000076.lua new file mode 100644 index 00000000..81eafd60 --- /dev/null +++ b/script/c95000076.lua @@ -0,0 +1,258 @@ +--Action Field - Sogen +function c95000076.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000076.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000076.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000076.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000076.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000076,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000076.condition) + e8:SetTarget(c95000076.Acttarget) + e8:SetOperation(c95000076.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(c95000076.tg) + e9:SetCondition(c95000076.Fcond) + e9:SetValue(100) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(c95000076.tg) + e10:SetCondition(c95000076.Fcond) + e10:SetValue(100) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000076.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000076.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000076.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000076.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000076.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000076.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000076,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000076.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000076.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000076.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000076.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000076.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000076.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000076,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000076.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000076.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000076.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000076.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000076)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000076.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000076.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000076.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000076)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000076.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000076)==0) and (f2:GetFlagEffect(195000076)==0) +end + +tableAction = { +95000044, +95000044, +95000045, +95000046, +95000143 +} +function c95000076.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000076.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000076.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000076)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000076,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000076.condition) + e1:SetTarget(c95000076.Acttarget) + e1:SetOperation(c95000076.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000076.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000076,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000076.tg(e,c) + return c:IsRace(RACE_WARRIOR+RACE_BEASTWARRIOR) +end \ No newline at end of file diff --git a/script/c95000077.lua b/script/c95000077.lua new file mode 100644 index 00000000..194c9294 --- /dev/null +++ b/script/c95000077.lua @@ -0,0 +1,259 @@ +--Action Field - umi +function c95000077.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000077.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000077.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000077.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000077.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000077,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000077.condition) + e8:SetTarget(c95000077.Acttarget) + e8:SetOperation(c95000077.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetCondition(c95000077.Fcond) + e9:SetValue(c95000077.val) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetCondition(c95000077.Fcond) + e10:SetValue(c95000077.val) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000077.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000077.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000077.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000077.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000077.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000077.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000077,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000077.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000077.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000077.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000077.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000077.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000077.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000077,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000077.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000077.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000077.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000077.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000077)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000077.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000077.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000077.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000077)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000077.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000077)==0) and (f2:GetFlagEffect(195000077)==0) +end + +tableAction = { +95000044, +95000044, +95000045, +95000046, +95000143 +} +function c95000077.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000077.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000077.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000077)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000077,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000077.condition) + e1:SetTarget(c95000077.Acttarget) + e1:SetOperation(c95000077.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000077.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000077,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000077.val(e,c) + local r=c:GetRace() + if bit.band(r,RACE_FISH+RACE_SEASERPENT+RACE_THUNDER+RACE_AQUA)>0 then return 200 + elseif bit.band(r,RACE_MACHINE+RACE_PYRO)>0 then return -200 + else return 0 end +end \ No newline at end of file diff --git a/script/c95000078.lua b/script/c95000078.lua new file mode 100644 index 00000000..f9326561 --- /dev/null +++ b/script/c95000078.lua @@ -0,0 +1,254 @@ +--Action Field - Wasteland +function c95000078.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000078.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000078.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000078.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000078.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000078,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000078.condition) + e8:SetTarget(c95000078.Acttarget) + e8:SetOperation(c95000078.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR+RACE_ZOMBIE+RACE_ROCK)) + e9:SetCondition(c95000078.Fcond) + e9:SetValue(100) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR+RACE_ZOMBIE+RACE_ROCK)) + e10:SetCondition(c95000078.Fcond) + e10:SetValue(100) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000078.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000078.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000078.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000078.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000078.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000078.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000078,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000078.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000078.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000078.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000078.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000078.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000078.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000078,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000078.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000078.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000078.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000078.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000078)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000078.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000078.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000078.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000078)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000078.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000078)==0) and (f2:GetFlagEffect(195000078)==0) +end + +tableAction = { +95000044, +95000044, +95000045, +95000046, +95000143 +} +function c95000078.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000078.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000078.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000078)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000078,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000078.condition) + e1:SetTarget(c95000078.Acttarget) + e1:SetOperation(c95000078.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000078.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000078,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000079.lua b/script/c95000079.lua new file mode 100644 index 00000000..6caa374b --- /dev/null +++ b/script/c95000079.lua @@ -0,0 +1,255 @@ +--Action Field - Gaia Power +function c95000079.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000079.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000079.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000079.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000079.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000079,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000079.condition) + e8:SetTarget(c95000079.Acttarget) + e8:SetOperation(c95000079.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH)) + e9:SetCondition(c95000079.Fcond) + e9:SetValue(250) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH)) + e10:SetCondition(c95000079.Fcond) + e10:SetValue(-200) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000079.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000079.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000079.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000079.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000079.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000079.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000079,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000079.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000079.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000079.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000079.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000079.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000079.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000079,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000079.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000079.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000079.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000079.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000079)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000079.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000079.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000079.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000079)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000079.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000079)==0) and (f2:GetFlagEffect(195000079)==0) +end + +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000079.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000079.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000079.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000079)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000079,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000079.condition) + e1:SetTarget(c95000079.Acttarget) + e1:SetOperation(c95000079.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000079.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000079,RESET_EVENT+0x1fe0000,0,1) + end +end + diff --git a/script/c95000080.lua b/script/c95000080.lua new file mode 100644 index 00000000..b54e6f52 --- /dev/null +++ b/script/c95000080.lua @@ -0,0 +1,262 @@ +--Action Field - Yami +function c95000080.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000080.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000080.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000080.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000080.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000080,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000080.condition) + e8:SetTarget(c95000080.Acttarget) + e8:SetOperation(c95000080.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetCondition(c95000080.Fcond) + e9:SetValue(c95000080.val) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetCondition(c95000080.Fcond) + e10:SetValue(c95000080.val) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000080.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000080.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000080.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000080.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000080.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000080.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000080,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000080.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000080.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000080.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end + + +function c95000080.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000080.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000080.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000080,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000080.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000080.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end + +function c95000080.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000080.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000080)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000080.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000080.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000080.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000080)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000080.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000080)==0) and (f2:GetFlagEffect(195000080)==0) +end + +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000080.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000080.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000080.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000080)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000080,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000080.condition) + e1:SetTarget(c95000080.Acttarget) + e1:SetOperation(c95000080.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000080.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000080,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000080.val(e,c) + local r=c:GetRace() + if bit.band(r,RACE_FIEND+RACE_SPELLCASTER)>0 then return 100 + elseif bit.band(r,RACE_FAIRY)>0 then return -100 + else return 0 end +end \ No newline at end of file diff --git a/script/c95000081.lua b/script/c95000081.lua new file mode 100644 index 00000000..a037f339 --- /dev/null +++ b/script/c95000081.lua @@ -0,0 +1,254 @@ +--Action Field - Mystic Plasma Zone +function c95000081.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000081.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000081.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000081.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000081.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000081,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000081.condition) + e8:SetTarget(c95000081.Acttarget) + e8:SetOperation(c95000081.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK)) + e9:SetCondition(c95000081.Fcond) + e9:SetValue(250) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK)) + e10:SetCondition(c95000081.Fcond) + e10:SetValue(-200) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000081.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000081.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000081.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000081.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000081.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000081.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000081,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000081.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000081.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000081.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000081.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000081.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000081.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000081,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000081.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000081.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000081.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000081.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000081)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000081.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000081.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000081.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000081)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000081.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000081)==0) and (f2:GetFlagEffect(195000081)==0) +end + +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000081.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000081.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000081.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000081)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000081,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000081.condition) + e1:SetTarget(c95000081.Acttarget) + e1:SetOperation(c95000081.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000081.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000081,RESET_EVENT+0x1fe0000,0,1) + end +end + diff --git a/script/c95000082.lua b/script/c95000082.lua new file mode 100644 index 00000000..eea17bdd --- /dev/null +++ b/script/c95000082.lua @@ -0,0 +1,253 @@ +--Action Field - Rising Air Current +function c95000082.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000082.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000082.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000082.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000082.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000082,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000082.condition) + e8:SetTarget(c95000082.Acttarget) + e8:SetOperation(c95000082.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND)) + e9:SetCondition(c95000082.Fcond) + e9:SetValue(250) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND)) + e10:SetCondition(c95000082.Fcond) + e10:SetValue(-200) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000082.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000082.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000082.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000082.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000082.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000082.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000082,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000082.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000082.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end +function c95000082.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000082.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000082.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000082.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000082,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000082.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000082.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000082.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000082.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000082)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000082.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000082.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000082.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000082)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000082.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000082)==0) and (f2:GetFlagEffect(195000082)==0) +end + +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000082.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000082.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000082.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000082)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000082,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000082.condition) + e1:SetTarget(c95000082.Acttarget) + e1:SetOperation(c95000082.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000082.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000082,RESET_EVENT+0x1fe0000,0,1) + end +end + diff --git a/script/c95000083.lua b/script/c95000083.lua new file mode 100644 index 00000000..a036046b --- /dev/null +++ b/script/c95000083.lua @@ -0,0 +1,255 @@ +--Action Field - Umiruka +function c95000083.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000083.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000083.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000083.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000083.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000083,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000083.condition) + e8:SetTarget(c95000083.Acttarget) + e8:SetOperation(c95000083.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e9:SetCondition(c95000083.Fcond) + e9:SetValue(250) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e10:SetCondition(c95000083.Fcond) + e10:SetValue(-200) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000083.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000083.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000083.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000083.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000083.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000083.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000083,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000083.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000083.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000083.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000083.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000083.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000083.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000083,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000083.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000083.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000083.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000083.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000083)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000083.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000083.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000083.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000083)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000083.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000083)==0) and (f2:GetFlagEffect(195000083)==0) +end + +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000083.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000083.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000083.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000083)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000083,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000083.condition) + e1:SetTarget(c95000083.Acttarget) + e1:SetOperation(c95000083.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000083.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000083,RESET_EVENT+0x1fe0000,0,1) + end +end + diff --git a/script/c95000084.lua b/script/c95000084.lua new file mode 100644 index 00000000..b239455f --- /dev/null +++ b/script/c95000084.lua @@ -0,0 +1,257 @@ +--Action Field - Jurassic World +function c95000084.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000084.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000084.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000084.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000084.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000084,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000084.condition) + e8:SetTarget(c95000084.Acttarget) + e8:SetOperation(c95000084.operation) + c:RegisterEffect(e8) + + --Atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR)) + e9:SetCondition(c95000084.Fcond) + e9:SetValue(150) + c:RegisterEffect(e9) + --Def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_DINOSAUR)) + e10:SetCondition(c95000084.Fcond) + e10:SetValue(150) + c:RegisterEffect(e10) + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000084.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000084.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000084.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000084.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000084.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000084.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000084,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000084.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000084.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000084.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000084.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000084.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000084.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000084,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000084.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000084.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000084.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000084.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000084)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000084.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000084.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000084.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000084)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000084.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000084)==0) and (f2:GetFlagEffect(195000084)==0) +end + +tableAction = { +95000044, +95000044, +95000045, +95000046, +95000143 +} +function c95000084.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000084.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000084.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000084)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000084,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000084.condition) + e1:SetTarget(c95000084.Acttarget) + e1:SetOperation(c95000084.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000084.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + + fc:RegisterFlagEffect(195000084,RESET_EVENT+0x1fe0000,0,1) + end +end + diff --git a/script/c95000085.lua b/script/c95000085.lua new file mode 100644 index 00000000..6e3ab4d6 --- /dev/null +++ b/script/c95000085.lua @@ -0,0 +1,409 @@ +--AF Prison Tower of Darkville +function c95000085.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000085.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000085.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000085.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000085.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000085,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000085.condition) + e8:SetTarget(c95000085.Acttarget) + e8:SetOperation(c95000085.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000085.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000085.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000085.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000085.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000085.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000085.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000085.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000085,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000085.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000085.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000085.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000085.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000085.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000085.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==3 or dc==4 or dc==6 then +e:GetHandler():RegisterFlagEffect(95000085,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then + if not Duel.IsExistingMatchingCard(c95000085.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + --- check action Trap + if (e:GetLabel()==95000086 or e:GetLabel()==95000087 or e:GetLabel()==95000088 or e:GetLabel()==95000089 or e:GetLabel()==95000090 or e:GetLabel()==95000091 or e:GetLabel()==95000092 or e:GetLabel()==95000093) then + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + Duel.MoveToField(token,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + if not Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) then + Duel.SendtoGrave(token,nil,REASON_RULE) end + local tc=token + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + + else + ---Action Spell + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SendtoHand(token,nil,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + end +end + if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000085.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + --- check action Trap + if (e:GetLabel()==95000086 or e:GetLabel()==95000087 or e:GetLabel()==95000088 or e:GetLabel()==95000089 or e:GetLabel()==95000090 or e:GetLabel()==95000091 or e:GetLabel()==95000092 or e:GetLabel()==95000093) then + local token=Duel.CreateToken(1-tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.MoveToField(token,1-tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + if not Duel.IsExistingTarget(Card.IsFaceup,1-tp,LOCATION_MZONE,0,1,nil) then + Duel.SendtoGrave(token,nil,REASON_RULE) end + local tc=token + Duel.ConfirmCards(1-tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + + else + ---Action Spell + local token=Duel.CreateToken(1-tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SendtoHand(token,1-tp,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + end +end + +else +if not Duel.IsExistingMatchingCard(c95000085.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + --- check action Trap + if (e:GetLabel()==95000086 or e:GetLabel()==95000087 or e:GetLabel()==95000088 or e:GetLabel()==95000089 or e:GetLabel()==95000090 or e:GetLabel()==95000091 or e:GetLabel()==95000092 or e:GetLabel()==95000093) then + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + Duel.MoveToField(token,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + if not Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) then + Duel.SendtoGrave(token,nil,REASON_RULE) end + local tc=token + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + + else + ---Action Spell + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SendtoHand(token,nil,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + end +end + +function c95000085.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000085.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000085)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000085.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000086, +95000087, +95000088, +95000089, +95000090, +95000091, +95000092, +95000093, +95000143 +} +function c95000085.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000085.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000085.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000085)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000085,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000085.condition) + e1:SetTarget(c95000085.Acttarget) + e1:SetOperation(c95000085.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000085.sfilter) + fc:RegisterEffect(e4) + + fc:RegisterFlagEffect(195000085,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000086.lua b/script/c95000086.lua new file mode 100644 index 00000000..ce7100d9 --- /dev/null +++ b/script/c95000086.lua @@ -0,0 +1,26 @@ +--Action Card - Quiz - 100 of Mathematics +function c95000086.initial_effect(c) + --Activate/Answer + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000086.target) + e1:SetOperation(c95000086.activate) + c:RegisterEffect(e1) +end +function c95000086.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local op=Duel.SelectOption(tp,aux.Stringid(95000086,0),aux.Stringid(95000086,1),aux.Stringid(95000086,2),aux.Stringid(95000086,3)) + e:SetLabel(op) +end +function c95000086.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Damage(tp,100,REASON_EFFECT) + elseif e:GetLabel()==1 then + Duel.Recover(tp,100,REASON_EFFECT) + elseif e:GetLabel()==2 then + Duel.Damage(tp,100,REASON_EFFECT) + elseif e:GetLabel()==3 then + Duel.Damage(tp,100,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95000087.lua b/script/c95000087.lua new file mode 100644 index 00000000..00f82bf9 --- /dev/null +++ b/script/c95000087.lua @@ -0,0 +1,30 @@ +--Action Card - Quiz - 100 of Science +function c95000087.initial_effect(c) + --Activate/Answer + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000087.target) + e1:SetOperation(c95000087.activate) + c:RegisterEffect(e1) +end +function c95000087.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local op=Duel.SelectOption(tp,aux.Stringid(95000087,0),aux.Stringid(95000087,1)) + e:SetLabel(op) +end +function c95000087.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + Duel.Recover(tp,100,REASON_EFFECT) + elseif e:GetLabel()==1 then + Duel.Damage(tp,100,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95000088.lua b/script/c95000088.lua new file mode 100644 index 00000000..3664dfc5 --- /dev/null +++ b/script/c95000088.lua @@ -0,0 +1,22 @@ +--Action Card - Quiz - 1000 of Riddle +function c95000088.initial_effect(c) + --Activate/Answer + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000088.target) + e1:SetOperation(c95000088.activate) + c:RegisterEffect(e1) +end +function c95000088.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local op=Duel.SelectOption(tp,aux.Stringid(95000088,0),aux.Stringid(95000088,1)) + e:SetLabel(op) +end +function c95000088.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Damage(tp,1000,REASON_EFFECT) + elseif e:GetLabel()==1 then + Duel.Recover(tp,1000,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95000089.lua b/script/c95000089.lua new file mode 100644 index 00000000..f5ef5f49 --- /dev/null +++ b/script/c95000089.lua @@ -0,0 +1,26 @@ +--Action Card - Quiz - 200 of Mathematics +function c95000089.initial_effect(c) + --Activate/Answer + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000089.target) + e1:SetOperation(c95000089.activate) + c:RegisterEffect(e1) +end +function c95000089.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local op=Duel.SelectOption(tp,aux.Stringid(95000089,0),aux.Stringid(95000089,1),aux.Stringid(95000089,2),aux.Stringid(95000089,3)) + e:SetLabel(op) +end +function c95000089.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Damage(tp,200,REASON_EFFECT) + elseif e:GetLabel()==1 then + Duel.Damage(tp,200,REASON_EFFECT) + elseif e:GetLabel()==2 then + Duel.Damage(tp,200,REASON_EFFECT) + elseif e:GetLabel()==3 then + Duel.Recover(tp,200,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95000090.lua b/script/c95000090.lua new file mode 100644 index 00000000..85bfa683 --- /dev/null +++ b/script/c95000090.lua @@ -0,0 +1,26 @@ +--Action Card - Quiz - 300 of Riddle +function c95000090.initial_effect(c) + --Activate/Answer + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000090.target) + e1:SetOperation(c95000090.activate) + c:RegisterEffect(e1) +end +function c95000090.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local op=Duel.SelectOption(tp,aux.Stringid(95000090,0),aux.Stringid(95000090,1),aux.Stringid(95000090,2),aux.Stringid(95000090,3)) + e:SetLabel(op) +end +function c95000090.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Damage(tp,300,REASON_EFFECT) + elseif e:GetLabel()==1 then + Duel.Damage(tp,300,REASON_EFFECT) + elseif e:GetLabel()==2 then + Duel.Recover(tp,300,REASON_EFFECT) + elseif e:GetLabel()==3 then + Duel.Damage(tp,300,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95000091.lua b/script/c95000091.lua new file mode 100644 index 00000000..22345105 --- /dev/null +++ b/script/c95000091.lua @@ -0,0 +1,26 @@ +--Action Card - Quiz - 300 of Science +function c95000091.initial_effect(c) + --Activate/Answer + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000091.target) + e1:SetOperation(c95000091.activate) + c:RegisterEffect(e1) +end +function c95000091.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local op=Duel.SelectOption(tp,aux.Stringid(95000091,0),aux.Stringid(95000091,1),aux.Stringid(95000091,2),aux.Stringid(95000091,3)) + e:SetLabel(op) +end +function c95000091.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Damage(tp,300,REASON_EFFECT) + elseif e:GetLabel()==1 then + Duel.Recover(tp,300,REASON_EFFECT) + elseif e:GetLabel()==2 then + Duel.Damage(tp,300,REASON_EFFECT) + elseif e:GetLabel()==3 then + Duel.Damage(tp,300,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95000092.lua b/script/c95000092.lua new file mode 100644 index 00000000..bf4db35e --- /dev/null +++ b/script/c95000092.lua @@ -0,0 +1,26 @@ +--Action Card - Quiz - 500 of Riddle +function c95000092.initial_effect(c) + --Activate/Answer + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000092.target) + e1:SetOperation(c95000092.activate) + c:RegisterEffect(e1) +end +function c95000092.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local op=Duel.SelectOption(tp,aux.Stringid(95000092,0),aux.Stringid(95000092,1),aux.Stringid(95000092,2),aux.Stringid(95000092,3)) + e:SetLabel(op) +end +function c95000092.activate(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + Duel.Recover(tp,500,REASON_EFFECT) + elseif e:GetLabel()==1 then + Duel.Damage(tp,500,REASON_EFFECT) + elseif e:GetLabel()==2 then + Duel.Damage(tp,500,REASON_EFFECT) + elseif e:GetLabel()==3 then + Duel.Damage(tp,500,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95000093.lua b/script/c95000093.lua new file mode 100644 index 00000000..4a401798 --- /dev/null +++ b/script/c95000093.lua @@ -0,0 +1,24 @@ +--Action Card - Quiz - 5000 of Mathematics +function c95000093.initial_effect(c) + --Activate/Answer + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_COIN+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000093.target) + e1:SetOperation(c95000093.activate) + c:RegisterEffect(e1) +end +function c95000093.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,1) +end +function c95000093.activate(e,tp,eg,ep,ev,re,r,rp) + local coin=Duel.SelectOption(tp,60,61) + local res=Duel.TossCoin(tp,1) + if coin~=res then + Duel.Recover(tp,5000,REASON_EFFECT) + else + Duel.Damage(tp,5000,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95000094.lua b/script/c95000094.lua new file mode 100644 index 00000000..66900724 --- /dev/null +++ b/script/c95000094.lua @@ -0,0 +1,245 @@ +--AF Cross Over Accel +function c95000094.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000094.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000094.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000094.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000094.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000094,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000094.condition) + e8:SetTarget(c95000094.Acttarget) + e8:SetOperation(c95000094.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000094.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000094.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000094.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000094.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000094.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000094.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000094.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000094,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000094.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000094.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000094.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000094.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000094.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000094.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000094,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000094.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000094.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end + +function c95000094.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000094.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000094)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000094.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000044, +95000044, +95000044, +95000044, +95000044, +95000044, +95000045, +95000045, +95000045, +95000046, +95000095, +95000096, +95000097, +95000097, +95000098, +95000099, +95000099, +95000100, +95000143 +} +function c95000094.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000094.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000094.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000094)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000094,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000094.condition) + e1:SetTarget(c95000094.Acttarget) + e1:SetOperation(c95000094.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000094.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000094,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000095.lua b/script/c95000095.lua new file mode 100644 index 00000000..ad6bb570 --- /dev/null +++ b/script/c95000095.lua @@ -0,0 +1,40 @@ +--Action Card - No Action +function c95000095.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c95000095.condition) + e1:SetTarget(c95000095.target) + e1:SetOperation(c95000095.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000095.handcon) + c:RegisterEffect(e2) +end +function c95000095.condition(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and re:IsActiveType(TYPE_SPELL) and re:GetHandler():IsSetCard(0xac1) and Duel.IsChainNegatable(ev) +end +function c95000095.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c95000095.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end + +function c95000095.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + + diff --git a/script/c95000096.lua b/script/c95000096.lua new file mode 100644 index 00000000..6057b652 --- /dev/null +++ b/script/c95000096.lua @@ -0,0 +1,36 @@ +--Action Card - Battle Lock +function c95000096.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(c95000096.condition) + e1:SetOperation(c95000096.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000096.handcon) + c:RegisterEffect(e2) +end +function c95000096.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return tp~=Duel.GetTurnPlayer() and bit.band(ph,PHASE_MAIN2+PHASE_END)==0 +end +function c95000096.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 + +function c95000096.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + + diff --git a/script/c95000097.lua b/script/c95000097.lua new file mode 100644 index 00000000..622fc0f0 --- /dev/null +++ b/script/c95000097.lua @@ -0,0 +1,39 @@ +--Action Card - Flight +function c95000097.initial_effect(c) +--atk + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetTarget(c95000097.target) + e1:SetOperation(c95000097.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000097.handcon) + c:RegisterEffect(e2) +end +function c95000097.target(e,tp,eg,ep,ev,re,r,rp,chk) + local at=eg:GetFirst() + local a=Duel.GetAttacker() + if chk==0 then return at:IsOnField() and at:IsFaceup() and a:IsOnField() end + at:CreateEffectRelation(e) +end +function c95000097.operation(e,tp,eg,ep,ev,re,r,rp) + local at=eg:GetFirst() + if not at:IsRelateToEffect(e) or at:IsFacedown() then return end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + at:RegisterEffect(e1) +end + +function c95000097.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + + diff --git a/script/c95000098.lua b/script/c95000098.lua new file mode 100644 index 00000000..14be6615 --- /dev/null +++ b/script/c95000098.lua @@ -0,0 +1,56 @@ +--Action Card - Stand Up +function c95000098.initial_effect(c) +--reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c95000098.condition) + e1:SetOperation(c95000098.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000098.handcon) + c:RegisterEffect(e2) +end +function c95000098.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 and Duel.GetTurnPlayer()~=tp +end +function c95000098.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(c95000098.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) + local sk=Duel.GetTurnPlayer() + Duel.BreakEffect() + Duel.SkipPhase(sk,PHASE_DRAW,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(sk,PHASE_STANDBY,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(sk,PHASE_MAIN1,RESET_PHASE+PHASE_END,1) + Duel.SkipPhase(sk,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + Duel.SkipPhase(sk,PHASE_MAIN2,RESET_PHASE+PHASE_MAIN2,1) + Duel.SkipPhase(sk,PHASE_END,RESET_PHASE+PHASE_END,1) +end +function c95000098.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(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 + +function c95000098.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + + diff --git a/script/c95000099.lua b/script/c95000099.lua new file mode 100644 index 00000000..5c3f0dd7 --- /dev/null +++ b/script/c95000099.lua @@ -0,0 +1,50 @@ +--Action Card - Overpass +function c95000099.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_CAL) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCondition(c95000099.condition) + e1:SetOperation(c95000099.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000099.handcon) + c:RegisterEffect(e2) +end +function c95000099.condition(e,tp,eg,ep,ev,re,r,rp) + local phase=Duel.GetCurrentPhase() + if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + return d~=nil and a:IsRelateToBattle() and d:IsRelateToBattle() +end +function c95000099.activate(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + local aatk=a:GetAttack() + local datk=d:GetAttack() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetValue(datk) + a:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_ATTACK_FINAL) + e2:SetValue(aatk) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + d:RegisterEffect(e2) +end + +function c95000099.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + + diff --git a/script/c95000100.lua b/script/c95000100.lua new file mode 100644 index 00000000..cc981fae --- /dev/null +++ b/script/c95000100.lua @@ -0,0 +1,50 @@ +--Action Card - Underworld Evasion +function c95000100.initial_effect(c) + --token + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000100,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c95000100.condition) + e1:SetTarget(c95000100.sptg) + e1:SetOperation(c95000100.spop) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000100.handcon) + c:RegisterEffect(e2) +end +function c95000100.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()~=nil and Duel.GetTurnPlayer()~=tp +end +function c95000100.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0) +end +function c95000100.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + if not Duel.IsPlayerCanSpecialSummonMonster(tp,95000101,0,0x4011,0,0,1,RACE_FIEND,ATTRIBUTE_DARK) then return end + local token=Duel.CreateToken(tp,95000101) + Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP_ATTACK) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCountLimit(1) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetOperation(c95000100.atkop) + e1:SetReset(RESET_EVENT+0x1fe0000) + token:RegisterEffect(e1,true) +end + +function c95000100.atkop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end + +function c95000100.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000102.lua b/script/c95000102.lua new file mode 100644 index 00000000..980c5866 --- /dev/null +++ b/script/c95000102.lua @@ -0,0 +1,81 @@ +--Speed World Neo +function c95000102.initial_effect(c) + --Activate / Speed World 2 + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE_START+PHASE_DRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000102.op) + c:RegisterEffect(e1) + --untargetable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetValue(aux.tgval) + c:RegisterEffect(e2) + --unaffectable + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_SZONE) + e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e4:SetValue(1) + c:RegisterEffect(e4) + local e5=e4:Clone() + e5:SetCode(EFFECT_IMMUNE_EFFECT) + c:RegisterEffect(e5) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e7:SetRange(LOCATION_SZONE) + e7:SetTargetRange(1,1) + e7:SetTarget(c95000102.aclimit2) + c:RegisterEffect(e7) + --cannot activate + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_FIELD) + e8:SetCode(EFFECT_CANNOT_ACTIVATE) + e8:SetRange(LOCATION_SZONE) + e8:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e8:SetTargetRange(1,1) + e8:SetValue(c95000102.efilter) + c:RegisterEffect(e8) +end +function c95000102.efilter(e,re,tp) + return re:GetHandler():IsType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c95000102.filter(c) + return c:GetCode()~=95000102 +end + +function c95000102.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5)if Duel.GetMatchingGroup(c95000102.filter,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()>39 + and tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000102,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + else + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_RULE) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end \ No newline at end of file diff --git a/script/c95000103.lua b/script/c95000103.lua new file mode 100644 index 00000000..49db1663 --- /dev/null +++ b/script/c95000103.lua @@ -0,0 +1,259 @@ +--Action Field - a Legendary ocean +function c95000103.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000103.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000103.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000103.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000103.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000103,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000103.condition) + e8:SetTarget(c95000103.Acttarget) + e8:SetOperation(c95000103.operation) + c:RegisterEffect(e8) + + + --level + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_LEVEL) + e9:SetRange(LOCATION_FZONE) + e9:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,LOCATION_HAND+LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e9:SetCondition(c95000103.Fcond) + e9:SetValue(-1) + c:RegisterEffect(e9) + --Atk + local e10=e9:Clone() + e10:SetCode(EFFECT_UPDATE_ATTACK) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetValue(100) + c:RegisterEffect(e10) + --Def + local e11=e10:Clone() + e11:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e11) + + + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000103.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000103.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000103.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000103.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000103.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000103.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000103,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000103.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000103.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000103.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000103.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000103.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000103.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000103,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000103.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000103.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000103.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000103.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000103)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000103.cfilter(c) + return c:IsSetCard(0xac1) +end +function c95000103.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000103.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000103)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000103.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000103)==0) and (f2:GetFlagEffect(195000103)==0) +end + +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000103.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000103.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000103.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000103)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000103,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000103.condition) + e1:SetTarget(c95000103.Acttarget) + e1:SetOperation(c95000103.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000103.sfilter) + fc:RegisterEffect(e4) + + fc:RegisterFlagEffect(195000103,RESET_EVENT+0x1fe0000,0,1) + end +end + diff --git a/script/c95000104.lua b/script/c95000104.lua new file mode 100644 index 00000000..c1778196 --- /dev/null +++ b/script/c95000104.lua @@ -0,0 +1,313 @@ +--AF Maldoche Chateau +function c95000104.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000104.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000104.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000104.ctcon2) + c:RegisterEffect(e6) + + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000104,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000104.condition) + e8:SetTarget(c95000104.Acttarget) + e8:SetOperation(c95000104.operation) + c:RegisterEffect(e8) + + --atkup + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x71)) + e9:SetCondition(c95000104.Fcond) + e9:SetValue(250) + c:RegisterEffect(e9) + local e10=e9:Clone() + e10:SetCode(EFFECT_UPDATE_DEFENCE) + c:RegisterEffect(e10) + --destroy + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e11:SetRange(LOCATION_SZONE) + e11:SetCode(EFFECT_SEND_REPLACE) + e11:SetTarget(c95000104.reptg) + e11:SetValue(c95000104.repval) + c:RegisterEffect(e11) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000104.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000104.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000104.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000104.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000104.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000104.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000104.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000104,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000104.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000104.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000104.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000104.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000104.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000104.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000104,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000104.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000104.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000104.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000104.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000104)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000104.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000104.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000104.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000104.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000104)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000104,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000104.condition) + e1:SetTarget(c95000104.Acttarget) + e1:SetOperation(c95000104.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000104.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000104,RESET_EVENT+0x1fe0000,0,1) + end +end +function c95000104.tdfilter(c) + return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x71) and c:IsAbleToDeck() +end +function c95000104.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c95000104.tdfilter,tp,LOCATION_GRAVE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) +end +function c95000104.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c95000104.tdfilter,tp,LOCATION_GRAVE,0,nil) + if g:GetCount()>0 then + Duel.SendtoDeck(g,nil,2,REASON_EFFECT) + end +end +function c95000104.repfilter(c,tp) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and c:GetDestination()==LOCATION_DECK and c:IsType(TYPE_MONSTER) + and c:IsAbleToHand() +end +function c95000104.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return bit.band(r,REASON_EFFECT)~=0 and re and re:IsActiveType(TYPE_MONSTER) + and re:GetHandler():IsSetCard(0x71) and eg:IsExists(c95000104.repfilter,1,nil,tp) end + if Duel.SelectYesNo(tp,aux.Stringid(95000104,0)) then + local g=eg:Filter(c95000104.repfilter,nil,tp) + local ct=g:GetCount() + if ct>1 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + g=g:Select(tp,1,ct,nil) + end + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_TO_DECK_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(LOCATION_HAND) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(95000104,RESET_EVENT+0x1de0000+RESET_PHASE+PHASE_END,0,1) + tc=g:GetNext() + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e1:SetCode(EVENT_TO_HAND) + e1:SetCountLimit(1) + e1:SetCondition(c95000104.thcon) + e1:SetOperation(c95000104.thop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + return true + else return false end +end +function c95000104.repval(e,c) + return false +end +function c95000104.thfilter(c) + return c:GetFlagEffect(95000104)~=0 +end +function c95000104.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c95000104.thfilter,1,nil) +end +function c95000104.thop(e,tp,eg,ep,ev,re,r,rp) + local g=eg:Filter(c95000104.thfilter,nil) + Duel.ConfirmCards(1-tp,g) + Duel.ShuffleHand(tp) +end +function c95000104.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000104)==0) and (f2:GetFlagEffect(195000104)==0) +end + diff --git a/script/c95000105.lua b/script/c95000105.lua new file mode 100644 index 00000000..26d2ea4c --- /dev/null +++ b/script/c95000105.lua @@ -0,0 +1,289 @@ +--Action Field - Shrine of Mist Valley +function c95000105.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000105.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000105.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000105.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000105.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000043,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000105.condition) + e8:SetTarget(c95000105.Acttarget) + e8:SetOperation(c95000105.operation) + c:RegisterEffect(e8) + --special summon + local e9=Effect.CreateEffect(c) + e9:SetCategory(CATEGORY_SPECIAL_SUMMON) + e9:SetDescription(aux.Stringid(95000105,0)) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e9:SetRange(LOCATION_SZONE) + e9:SetCode(EVENT_TO_GRAVE) + e9:SetCountLimit(1) + e9:SetCondition(c95000105.Fcond2) + e9:SetTarget(c95000105.target) + e9:SetOperation(c95000105.operation) + c:RegisterEffect(e9) + + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000105.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + +end +function c95000105.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000105.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000105.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000105.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000105.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000105.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000043,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000105.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000105.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000105.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000105.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000105.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000105.operation(e,tp,eg,ep,ev,re,r,rp) + +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000043,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000105.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000105.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000105.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000105.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000043)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000105.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000047, +95000048, +95000143 +} +function c95000105.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000105.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000105.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000043)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000043,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000105.condition) + e1:SetTarget(c95000105.Acttarget) + e1:SetOperation(c95000105.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000105.sfilter) + fc:RegisterEffect(e4) + + fc:RegisterFlagEffect(195000043,RESET_EVENT+0x1fe0000,0,1) + end +end + + +function c95000105.cfilter(c,tp) + return bit.band(c:GetReason(),0x41)==0x41 and c:IsControler(tp) and c:IsAttribute(ATTRIBUTE_WIND) +end +function c95000105.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000105)==0) and (f2:GetFlagEffect(195000105)==0) +end +function c95000105.Fcond2(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c95000105.cfilter,1,nil,tp) +end +function c95000105.spfilter(c,e,tp) + return c:IsLevelBelow(3) and c:IsAttribute(ATTRIBUTE_WIND) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c95000105.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and not e:GetHandler():IsStatus(STATUS_CHAINING) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c95000105.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c95000105.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c95000105.spfilter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c95000106.lua b/script/c95000106.lua new file mode 100644 index 00000000..968adec8 --- /dev/null +++ b/script/c95000106.lua @@ -0,0 +1,282 @@ +--AF Vampire Kingdom +function c95000106.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000106.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000106.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000106.ctcon2) + c:RegisterEffect(e6) + + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000106,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000106.condition) + e8:SetTarget(c95000106.Acttarget) + e8:SetOperation(c95000106.operation) + c:RegisterEffect(e8) + + +--atk + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_SZONE) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_ZOMBIE)) + e9:SetCondition(c95000106.atkcon) + e9:SetValue(250) + c:RegisterEffect(e9) + --destroy + local e10=Effect.CreateEffect(c) + e10:SetDescription(aux.Stringid(62188962,0)) + e10:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e10:SetProperty(EFFECT_FLAG_CARD_TARGET) + e10:SetCode(EVENT_TO_GRAVE) + e10:SetRange(LOCATION_SZONE) + e10:SetCountLimit(1) + e10:SetCondition(c95000106.descon) + e10:SetTarget(c95000106.destg) + e10:SetOperation(c95000106.desop) + c:RegisterEffect(e10) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000106.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000106.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000106.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000106.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000106.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000106.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000106.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000106,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000106.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000106.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000106.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000106.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000106.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000106.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000106,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000106.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000106.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000106.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000106.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000106)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000106.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000106.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000106.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000106.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000106)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000106,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000106.condition) + e1:SetTarget(c95000106.Acttarget) + e1:SetOperation(c95000106.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000106.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000106,RESET_EVENT+0x1fe0000,0,1) + end +end +function c95000106.atkcon(e) +local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and (f1:GetFlagEffect(95000106)==0) and (f2:GetFlagEffect(95000106)==0) +end +function c95000106.cfilter(c,tp) + return c:IsPreviousLocation(LOCATION_DECK) and c:GetPreviousControler()==tp +end +function c95000106.descon(e,tp,eg,ep,ev,re,r,rp) +local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return eg:IsExists(c95000106.cfilter,1,nil,1-tp) and (f1:GetFlagEffect(95000106)==0) and (f2:GetFlagEffect(95000106)==0) +end +function c95000106.tgfilter(c) + return c:IsSetCard(0x8e) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToGrave() +end +function c95000106.filter(c) + return c:IsDestructable() +end +function c95000106.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c95000106.filter(chkc) end + if chk==0 then return e:GetHandler():IsRelateToEffect(e) and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c95000106.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_HAND+LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c95000106.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c95000106.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end + end +end diff --git a/script/c95000107.lua b/script/c95000107.lua new file mode 100644 index 00000000..b804f09a --- /dev/null +++ b/script/c95000107.lua @@ -0,0 +1,284 @@ +--AF Xyz Territory +function c95000107.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000107.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000107.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000107.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000107.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000043,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000107.condition) + e8:SetTarget(c95000107.Acttarget) + e8:SetOperation(c95000107.operation) + c:RegisterEffect(e8) + +--ad up + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e9:SetCode(EVENT_DAMAGE_CALCULATING) + e9:SetRange(LOCATION_SZONE) + e9:SetOperation(c95000107.atkup) + e9:SetCondition(c95000107.Fcond) + c:RegisterEffect(e9) + --Destroy replace + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e10:SetCode(EFFECT_DESTROY_REPLACE) + e10:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e10:SetRange(LOCATION_SZONE) + e10:SetTarget(c95000107.desreptg) + e10:SetCondition(c95000107.Fcond) + c:RegisterEffect(e10) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000107.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000107.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000107.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000107.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000107.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000107.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000107.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000043,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000107.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000107.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000107.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000107.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000107.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000107.operation(e,tp,eg,ep,ev,re,r,rp) + +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000043,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000107.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000107.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000107.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000107.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000043)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000107.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000047, +95000048, +95000143 +} +function c95000107.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000107.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000107.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000043)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000043,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000107.condition) + e1:SetTarget(c95000107.Acttarget) + e1:SetOperation(c95000107.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000107.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + + fc:RegisterFlagEffect(195000043,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000107.atkup(e,tp,eg,ep,ev,re,r,rp,chk) + local a=Duel.GetAttacker() + local d=Duel.GetAttackTarget() + if not d then return end + c95000107.adup(a,e:GetHandler()) + c95000107.adup(d,e:GetHandler()) +end +function c95000107.adup(c,oc) + if not c:IsType(TYPE_XYZ) then return end + local e1=Effect.CreateEffect(oc) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_PHASE+RESET_DAMAGE_CAL) + e1:SetValue(c:GetRank()*100) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENCE) + c:RegisterEffect(e2) +end +function c95000107.desreptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsReason(REASON_RULE) + and Duel.CheckRemoveOverlayCard(tp,1,0,1,REASON_EFFECT) end + if Duel.SelectYesNo(tp,aux.Stringid(4545854,0)) then + Duel.RemoveOverlayCard(tp,1,0,1,1,REASON_EFFECT) + return true + else return false end +end +function c95000107.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(195000107)==0) and (f2:GetFlagEffect(195000107)==0) +end diff --git a/script/c95000108.lua b/script/c95000108.lua new file mode 100644 index 00000000..61daba1e --- /dev/null +++ b/script/c95000108.lua @@ -0,0 +1,290 @@ +--Action Field - Ghostrick Museum +function c95000108.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000108.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000108.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000108.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000108.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000043,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000108.condition) + e8:SetTarget(c95000108.Acttarget) + e8:SetOperation(c95000108.operation) + c:RegisterEffect(e8) + --cannot attack + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_CANNOT_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,0) + e9:SetTarget(c95000108.ftarget) + c:RegisterEffect(e9) + --atklimit + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e10:SetRange(LOCATION_FZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetValue(c95000108.bttg) + c:RegisterEffect(e10) + --direct attack + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_FIELD) + e11:SetCode(EFFECT_DIRECT_ATTACK) + e11:SetRange(LOCATION_SZONE) + e11:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e11:SetTarget(c95000108.dirtg) + c:RegisterEffect(e11) + --pos + local e12=Effect.CreateEffect(c) + e12:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e12:SetRange(LOCATION_SZONE) + e12:SetCode(EVENT_BATTLE_DAMAGE) + e12:SetOperation(c95000108.operation) + c:RegisterEffect(e12) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000108.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + +end +function c95000108.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000108.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000108.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000108.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000108.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000108.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000043,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000108.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000108.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000108.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000108.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000108.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000108.operation(e,tp,eg,ep,ev,re,r,rp) + +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000043,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000108.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000108.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000108.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000108.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000043)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000108.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000047, +95000048, +95000143 +} +function c95000108.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000108.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000108.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000043)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000043,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000108.condition) + e1:SetTarget(c95000108.Acttarget) + e1:SetOperation(c95000108.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000108.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + + fc:RegisterFlagEffect(195000043,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000108.bttg(e,c) + return c:IsFacedown() +end +function c95000108.dirtg(e,c) + return not Duel.IsExistingMatchingCard(Card.IsFaceup,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c95000108.ftarget(e,c) + return not c:IsSetCard(0x8d) +end +function c95000108.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=eg:GetFirst() + if tc:IsRelateToBattle() and tc:IsFaceup() and tc:IsCanTurnSet() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_DAMAGE_STEP_END) + e1:SetOperation(c95000108.posop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE) + tc:RegisterEffect(e1) + end +end +function c95000108.posop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangePosition(e:GetHandler(),POS_FACEDOWN_DEFENSE) +end diff --git a/script/c95000109.lua b/script/c95000109.lua new file mode 100644 index 00000000..f336454c --- /dev/null +++ b/script/c95000109.lua @@ -0,0 +1,282 @@ +--AF Harpies' Hunting Ground +function c95000109.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000109.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000109.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000109.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000109.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000109,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000109.condition) + e8:SetTarget(c95000109.Acttarget) + e8:SetOperation(c95000109.operation) + c:RegisterEffect(e8) + + +--Activate + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(3701074,0)) + e9:SetCategory(CATEGORY_DESTROY) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e9:SetRange(LOCATION_SZONE) + e9:SetCode(EVENT_SUMMON_SUCCESS) + e9:SetCondition(c95000109.sumcondition) + e9:SetTarget(c95000109.target) + e9:SetOperation(c95000109.activate) + c:RegisterEffect(e9) + + --atk/def + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_ATTACK) + e10:SetRange(LOCATION_SZONE) + e10:SetCondition(c95000109.Fcond) + e10:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_WINDBEAST)) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetValue(100) + c:RegisterEffect(e10) + local e11=e10:Clone() + e11:SetCode(EFFECT_UPDATE_DEFENCE) + c:RegisterEffect(e11) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000109.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000109.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000109.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000109.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000109.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000109.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000109.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000109,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000109.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000109.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000109.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000109.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000109.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000109.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000109,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000109.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000109.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000109.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000109.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000109)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000109.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000109.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000109.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000109.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000109)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000109,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000109.condition) + e1:SetTarget(c95000109.Acttarget) + e1:SetOperation(c95000109.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000109.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000109,RESET_EVENT+0x1fe0000,0,1) + end +end +function c95000109.cfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x64) and c:IsControler(tp) +end +function c95000109.sumcondition(e,tp,eg,ep,ev,re,r,rp) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return eg:IsExists(c95000109.cfilter,1,nil,tp) and (f1:GetFlagEffect(95000109)==0) and (f2:GetFlagEffect(95000109)==0) +end +function c95000109.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsDestructable() end + if chk==0 then return Duel.IsExistingTarget(Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsDestructable,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c95000109.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end +function c95000109.Fcond(e) + local f1=Duel.GetFieldCard(0,LOCATION_SZONE,5) + local f2=Duel.GetFieldCard(1,LOCATION_SZONE,5) + return (f1:GetFlagEffect(95000109)==0) and (f2:GetFlagEffect(95000109)==0) +end \ No newline at end of file diff --git a/script/c95000110.lua b/script/c95000110.lua new file mode 100644 index 00000000..5d34789f --- /dev/null +++ b/script/c95000110.lua @@ -0,0 +1,228 @@ +--AF Wonder Quartet +function c95000110.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000110.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000110.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000110.ctcon2) + c:RegisterEffect(e6) + + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000110,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000110.condition) + e8:SetTarget(c95000110.Acttarget) + e8:SetOperation(c95000110.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000110.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000110.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000110.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000110.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000110.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000110.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000110.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000110,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000110.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000110.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000110.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000110.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000110.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000110.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000110,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000110.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000110.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000110.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000110.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000110)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000110.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000111, +95000111, +95000111, +95000111, +95000112, +95000113, +95000113, +95000114, +95000115, +95000143 +} +function c95000110.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000110.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000110.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000110)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000110,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000110.condition) + e1:SetTarget(c95000110.Acttarget) + e1:SetOperation(c95000110.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000110.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000110,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000111.lua b/script/c95000111.lua new file mode 100644 index 00000000..7e29491a --- /dev/null +++ b/script/c95000111.lua @@ -0,0 +1,33 @@ +--Action Card - Flame Ball +function c95000111.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000111.damtg) + e1:SetOperation(c95000111.damop) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000111.handcon) + c:RegisterEffect(e2) +end + +function c95000111.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(200) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,200) +end +function c95000111.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end + +function c95000111.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000112.lua b/script/c95000112.lua new file mode 100644 index 00000000..09bcbcc2 --- /dev/null +++ b/script/c95000112.lua @@ -0,0 +1,51 @@ +--Action Card - Flame Guard +function c95000112.initial_effect(c) + --reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c95000112.condition) + e1:SetOperation(c95000112.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000112.handcon) + c:RegisterEffect(e2) +end + +function c95000112.condition(e,tp,eg,ep,ev,re,r,rp) + if re:IsActiveType(TYPE_SPELL+TYPE_TRAP) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + 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) + if not ex then return false end + if cp~=PLAYER_ALL then return Duel.IsPlayerAffectedByEffect(cp,EFFECT_REVERSE_RECOVER) + else return Duel.IsPlayerAffectedByEffect(0,EFFECT_REVERSE_RECOVER) + or Duel.IsPlayerAffectedByEffect(1,EFFECT_REVERSE_RECOVER) + end +end +function c95000112.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(c95000112.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c95000112.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(r,REASON_EFFECT)==0 then return end + local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) + if cid==e:GetLabel() then return 0 + else return val end +end + +function c95000112.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000113.lua b/script/c95000113.lua new file mode 100644 index 00000000..5e59ccf4 --- /dev/null +++ b/script/c95000113.lua @@ -0,0 +1,76 @@ +--Action Card - Flame Power +function c95000113.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c95000113.condition) + e1:SetTarget(c95000113.target) + e1:SetOperation(c95000113.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000113.handcon) + c:RegisterEffect(e2) +end + +function c95000113.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c95000113.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c95000113.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_UPDATE_ATTACK) + e1:SetValue(400) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetDescription(aux.Stringid(95000113,0)) + e3:SetCategory(CATEGORY_DAMAGE) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCondition(c95000113.damcon) + e3:SetTarget(c95000113.damtg) + e3:SetOperation(c95000113.damop) + e3:SetReset(RESET_PHASE+PHASE_END) + e3:SetLabelObject(tc) + Duel.RegisterEffect(e3,tp) + tc:RegisterFlagEffect(95000113,RESET_EVENT+0x1020000+RESET_PHASE+PHASE_END,0,1) + end +end +function c95000113.damcon(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetLabelObject() + local bc=tc:GetBattleTarget() + return eg:IsContains(tc) and tc:GetFlagEffect(95000113)~=0 and bit.band(bc:GetBattlePosition(),POS_DEFENSE)~=0 + and bc:IsReason(REASON_BATTLE) +end +function c95000113.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local def=e:GetLabelObject():GetBattleTarget():GetDefense() + if def<0 then def=0 end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(def) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,def) +end +function c95000113.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end + + +function c95000113.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000114.lua b/script/c95000114.lua new file mode 100644 index 00000000..3d8a9742 --- /dev/null +++ b/script/c95000114.lua @@ -0,0 +1,45 @@ +--Action Card - Flame Power +function c95000114.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c95000114.condition) + e1:SetTarget(c95000114.target) + e1:SetOperation(c95000114.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000114.handcon) + c:RegisterEffect(e2) +end + +function c95000114.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c95000114.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c95000114.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c95000114.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(-400) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) +end +end + +function c95000114.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000115.lua b/script/c95000115.lua new file mode 100644 index 00000000..6dfec2a1 --- /dev/null +++ b/script/c95000115.lua @@ -0,0 +1,27 @@ +--Action Card - Blind Blizzard +function c95000115.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_START,TIMING_BATTLE_START) + e1:SetCondition(c95000115.condition) + e1:SetOperation(c95000115.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000115.handcon) + c:RegisterEffect(e2) +end +function c95000115.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) +end +function c95000115.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end + +function c95000115.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000116.lua b/script/c95000116.lua new file mode 100644 index 00000000..36fcdc99 --- /dev/null +++ b/script/c95000116.lua @@ -0,0 +1,230 @@ +--AF Maiami Stadium +function c95000116.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000116.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000116.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000116.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000116.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000116,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000116.condition) + e8:SetTarget(c95000116.Acttarget) + e8:SetOperation(c95000116.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000116.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000116.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000116.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000116.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000116.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000116.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000116.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000116,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000116.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000116.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000116.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000116.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000116.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000116.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000116,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000116.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000116.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000116.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000116.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000116)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000116.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000117, +95000118, +95000119, +95000143 +} +function c95000116.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000116.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000116.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000116)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000116,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000116.condition) + e1:SetTarget(c95000116.Acttarget) + e1:SetOperation(c95000116.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000116.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000116,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000117.lua b/script/c95000117.lua new file mode 100644 index 00000000..7233db2b --- /dev/null +++ b/script/c95000117.lua @@ -0,0 +1,44 @@ +--Action Card - eam Performapal's Bonds +function c95000117.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000117.sptg) + e1:SetOperation(c95000117.spop) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000117.handcon) + c:RegisterEffect(e2) +end +function c95000117.filter(c,e,tp) + return c:IsSetCard(0x9f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c95000117.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and chkc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c95000117.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c95000117.filter,tp,LOCATION_GRAVE,0,1,ft,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,g:GetCount(),0,0) +end +function c95000117.spop(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local sg=g:Filter(Card.IsRelateToEffect,nil,e) + if sg:GetCount()>ft then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + sg=sg:Select(tp,ft,ft,nil) + end + local ct=Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) +end + +function c95000117.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000118.lua b/script/c95000118.lua new file mode 100644 index 00000000..d79adea3 --- /dev/null +++ b/script/c95000118.lua @@ -0,0 +1,40 @@ +--Action Card - Rocket Spike +function c95000118.initial_effect(c) + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000118.target) + e1:SetOperation(c95000118.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000118.handcon) + c:RegisterEffect(e2) +end +function c95000118.filter(c,e,tp) + return c:IsFaceup() and c:IsDestructable() +end +function c95000118.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c95000118.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c95000118.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c95000118.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,1000) +end +function c95000118.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + if Duel.Destroy(tc,REASON_EFFECT)>0 then + Duel.Damage(1-tp,1000,REASON_EFFECT) + end + end +end +function c95000118.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000119.lua b/script/c95000119.lua new file mode 100644 index 00000000..230c4606 --- /dev/null +++ b/script/c95000119.lua @@ -0,0 +1,40 @@ +--Action Card - High-Speed Dribble +function c95000119.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000119.target) + e1:SetOperation(c95000119.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000119.handcon) + c:RegisterEffect(e2) +end + +function c95000119.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) + end +end +function c95000119.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + if g:GetCount()==0 then return end + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(600) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end + +function c95000119.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000120.lua b/script/c95000120.lua new file mode 100644 index 00000000..8ef3b41b --- /dev/null +++ b/script/c95000120.lua @@ -0,0 +1,234 @@ +--AF Amuse World +function c95000120.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000120.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000120.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000120.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000120.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000120,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000120.condition) + e8:SetTarget(c95000120.Acttarget) + e8:SetOperation(c95000120.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000120.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000120.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000120.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000120.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000120.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000120.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000120.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000120,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000120.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000120.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000120.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000120.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000120.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000120.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000120,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000120.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000120.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000120.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000120.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000120)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000120.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000069, +95000072, +95000121, +95000122, +95000123, +95000124, +95000143 +} +function c95000120.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000120.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000120.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000120)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000120,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000120.condition) + e1:SetTarget(c95000120.Acttarget) + e1:SetOperation(c95000120.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000120.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000120,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000121.lua b/script/c95000121.lua new file mode 100644 index 00000000..db0c001e --- /dev/null +++ b/script/c95000121.lua @@ -0,0 +1,44 @@ +--Action Card - Double Bull +function c95000121.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DEFCHANGE) + 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(c95000121.condition) + e1:SetTarget(c95000121.target) + e1:SetOperation(c95000121.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000121.handcon) + c:RegisterEffect(e2) +end +function c95000121.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000121.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c95000121.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000121.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_DEFENSE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(-1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c95000122.lua b/script/c95000122.lua new file mode 100644 index 00000000..0ba89694 --- /dev/null +++ b/script/c95000122.lua @@ -0,0 +1,44 @@ +--Action Card - Great Wing +function c95000122.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(c95000122.condition) + e1:SetTarget(c95000122.target) + e1:SetOperation(c95000122.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000122.handcon) + c:RegisterEffect(e2) +end +function c95000122.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000122.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c95000122.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000122.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c95000123.lua b/script/c95000123.lua new file mode 100644 index 00000000..a49d3022 --- /dev/null +++ b/script/c95000123.lua @@ -0,0 +1,33 @@ +--Action Card - Shot Bomb +function c95000123.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000123.damtg) + e1:SetOperation(c95000123.damop) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000123.handcon) + c:RegisterEffect(e2) +end + +function c95000123.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(1000) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c95000123.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end + +function c95000123.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000124.lua b/script/c95000124.lua new file mode 100644 index 00000000..bbe8d95f --- /dev/null +++ b/script/c95000124.lua @@ -0,0 +1,46 @@ +--Action Card - Guard Change +function c95000124.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) + 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(c95000124.condition) + e1:SetTarget(c95000124.target) + e1:SetOperation(c95000124.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000124.handcon) + c:RegisterEffect(e2) +end + +function c95000124.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end + +function c95000124.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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000124.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_DEFENSE_FINAL) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(tc:GetAttack()) + tc:RegisterEffect(e1) + end +end + +function c95000124.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000125.lua b/script/c95000125.lua new file mode 100644 index 00000000..c3fb5704 --- /dev/null +++ b/script/c95000125.lua @@ -0,0 +1,48 @@ +--Action Card - Nightmare Prey +function c95000125.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c95000125.condition) + e1:SetTarget(c95000125.target) + e1:SetOperation(c95000125.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000125.handcon) + c:RegisterEffect(e2) +end +function c95000125.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000125.condition(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return tc:GetPreviousControler()==tp and bit.band(tc:GetBattlePosition(),POS_FACEUP)~=0 + and bc:IsRelateToBattle() and bc:IsControler(1-tp) +end +function c95000125.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local bc=Duel.GetAttacker() + local bct=Duel.GetAttackTarget() + if chk==0 then return bc:IsCanBeEffectTarget(e) and bc:IsDestructable() or bct:IsDestructable() end + if bc:IsLocation(LOCATION_MZONE) then + Duel.SetTargetCard(bc) + else + Duel.SetTargetCard(bct) + end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,bc,1,0,0) + +end +function c95000125.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.Destroy(tc,REASON_EFFECT)~=0 then + Duel.Damage(1-tp,700,REASON_EFFECT) + end +end + diff --git a/script/c95000126.lua b/script/c95000126.lua new file mode 100644 index 00000000..e8d9ec17 --- /dev/null +++ b/script/c95000126.lua @@ -0,0 +1,39 @@ +--Action Card - Illusion Trick +function c95000126.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c95000126.condition) + e1:SetTarget(c95000126.target) + e1:SetOperation(c95000126.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000126.handcon) + c:RegisterEffect(e2) +end +function c95000126.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000126.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==nil +end +function c95000126.spfilter(c,e,tp) + return c:IsSetCard(0x9f) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c95000126.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c95000126.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c95000126.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,c95000126.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_ATTACK) + end +end \ No newline at end of file diff --git a/script/c95000127.lua b/script/c95000127.lua new file mode 100644 index 00000000..6363cf2a --- /dev/null +++ b/script/c95000127.lua @@ -0,0 +1,43 @@ +--Action Card - Wings of Dimension +function c95000127.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000127.target) + e1:SetOperation(c95000127.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000127.handcon) + c:RegisterEffect(e2) +end +function c95000127.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000127.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 c95000127.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCountLimit(1) + e1:SetValue(c95000127.valcon) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c95000127.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 +end \ No newline at end of file diff --git a/script/c95000128.lua b/script/c95000128.lua new file mode 100644 index 00000000..3634102d --- /dev/null +++ b/script/c95000128.lua @@ -0,0 +1,232 @@ +--AF MAgical Broadway +function c95000128.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000128.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000128.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000128.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000128.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000128,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000128.condition) + e8:SetTarget(c95000128.Acttarget) + e8:SetOperation(c95000128.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000128.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000128.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000128.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000128.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000128.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000128.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000128.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000128,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000128.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000128.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000128.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000128.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000128.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000128.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000128,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000128.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000128.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end + +function c95000128.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000128.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000128)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000128.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000129, +95000130, +95000130, +95000143 +} +function c95000128.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000128.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000128.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000128)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000128,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000128.condition) + e1:SetTarget(c95000128.Acttarget) + e1:SetOperation(c95000128.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000128.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000128,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000129.lua b/script/c95000129.lua new file mode 100644 index 00000000..500ea784 --- /dev/null +++ b/script/c95000129.lua @@ -0,0 +1,59 @@ +--Action Card - Illusion Fire +function c95000129.initial_effect(c) + --multi atk + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c95000129.condition) + e1:SetTarget(c95000129.target) + e1:SetOperation(c95000129.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000129.handcon) + c:RegisterEffect(e2) +end +function c95000129.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000129.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c95000129.filter(c) + return c:IsFaceup() +end +function c95000129.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK) + e1:SetProperty(EFFECT_FLAG_OATH) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c95000129.ftarget) + e1:SetLabel(g:GetFirst():GetFieldID()) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95000129.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + if ct>1 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetValue(ct-1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + end + end +end +function c95000129.ftarget(e,c) + return e:GetLabel()~=c:GetFieldID() +end \ No newline at end of file diff --git a/script/c95000130.lua b/script/c95000130.lua new file mode 100644 index 00000000..2f500c89 --- /dev/null +++ b/script/c95000130.lua @@ -0,0 +1,59 @@ +--Action Card - Illusion Dance +function c95000130.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000130.target) + e1:SetOperation(c95000130.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000130.handcon) + c:RegisterEffect(e2) +end +function c95000130.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000130.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c95000130.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c95000130.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(79491903,1)) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetRange(LOCATION_MZONE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetTarget(c95000130.postg2) + e1:SetOperation(c95000130.posop2) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + end +end + +function c95000130.postg2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsDefensePos() end + Duel.SetOperationInfo(0,CATEGORY_POSITION,e:GetHandler(),1,0,0) +end +function c95000130.posop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFaceup() and c:IsRelateToEffect(e) and c:IsDefensePos() then + Duel.ChangePosition(c,0,0,POS_FACEUP_ATTACK,0) + end +end \ No newline at end of file diff --git a/script/c95000131.lua b/script/c95000131.lua new file mode 100644 index 00000000..490f9e72 --- /dev/null +++ b/script/c95000131.lua @@ -0,0 +1,33 @@ +--Action Card - Damaga Vanish +function c95000131.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCondition(c95000131.con) + e1:SetOperation(c95000131.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000131.handcon) + c:RegisterEffect(e2) +end +function c95000131.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000131.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetBattleDamage(tp)>0 +end +function c95000131.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_PRE_BATTLE_DAMAGE) + e1:SetOperation(c95000131.damop) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e1,tp) +end +function c95000131.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end \ No newline at end of file diff --git a/script/c95000132.lua b/script/c95000132.lua new file mode 100644 index 00000000..8baabf2d --- /dev/null +++ b/script/c95000132.lua @@ -0,0 +1,47 @@ +--Action Card - Battle Change +function c95000132.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c95000132.condition) + e1:SetOperation(c95000132.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000132.handcon) + c:RegisterEffect(e2) +end +function c95000132.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000132.actcondition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_BATTLE +end +function c95000132.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(c95000132.condition) + e1:SetOperation(c95000132.operation) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95000132.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() and Duel.GetAttacker():GetFlagEffect(95000132)==0 +end +function c95000132.operation(e,tp,eg,ep,ev,re,r,rp) + local ats=eg:GetFirst():GetAttackableTarget() + local at=Duel.GetAttackTarget() + if ats:GetCount()==0 or (at and ats:GetCount()==1) then return end + if Duel.SelectYesNo(tp,aux.Stringid(95000132,0)) then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(95000132,1)) + local g=ats:Select(tp,1,1,at) + Duel.Hint(HINT_CARD,0,95000132) + Duel.HintSelection(g) + Duel.ChangeAttackTarget(g:GetFirst()) + Duel.GetAttacker():RegisterFlagEffect(95000132,RESET_EVENT+0x1fe0000,0,1) + end +end \ No newline at end of file diff --git a/script/c95000133.lua b/script/c95000133.lua new file mode 100644 index 00000000..92ea76d6 --- /dev/null +++ b/script/c95000133.lua @@ -0,0 +1,236 @@ +--AF Action Kitchen +function c95000133.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000133.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000133.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000133.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000133.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000133,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000133.condition) + e8:SetTarget(c95000133.Acttarget) + e8:SetOperation(c95000133.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000133.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000133.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000133.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000133.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000133.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000133.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000133.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000133,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000133.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000133.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000133.aclimit(e,re) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and re:GetHandler():IsType(TYPE_FIELD) +end +function c95000133.aclimit2(e,c) + return c:IsType(TYPE_FIELD) +end +function c95000133.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000133.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000133.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000133,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000133.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000133.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000133.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000133.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000133)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000133.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000134, +95000135, +95000136, +95000137, +95000138, +95000139, +95000143 +} +function c95000133.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000133.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000133.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000133)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000133,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000133.condition) + e1:SetTarget(c95000133.Acttarget) + e1:SetOperation(c95000133.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000133.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000133,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000134.lua b/script/c95000134.lua new file mode 100644 index 00000000..8528a078 --- /dev/null +++ b/script/c95000134.lua @@ -0,0 +1,38 @@ +--Action Card - Damaga Vanish +function c95000134.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c95000134.condition) + e1:SetOperation(c95000134.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000134.handcon) + c:RegisterEffect(e2) +end +function c95000134.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000134.actcondition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_BATTLE +end +function c95000134.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(c95000134.condition) + e1:SetOperation(c95000134.operation) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95000134.condition(e,tp,eg,ep,ev,re,r,rp) + return tp~=Duel.GetTurnPlayer() +end +function c95000134.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,95000134) + Duel.NegateAttack() +end \ No newline at end of file diff --git a/script/c95000135.lua b/script/c95000135.lua new file mode 100644 index 00000000..fe5f3c8f --- /dev/null +++ b/script/c95000135.lua @@ -0,0 +1,48 @@ +--Action Card - Damaga Vanish +function c95000135.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000135.target) + e1:SetOperation(c95000135.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000135.handcon) + c:RegisterEffect(e2) +end +function c95000135.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000135.thfilter(c) + return c:IsAbleToHand() +end +function c95000135.spfilter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLevelBelow(4) +end +function c95000135.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c95000135.thfilter(chkc) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c95000135.thfilter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(c95000135.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectTarget(tp,c95000135.tgfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c95000135.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c95000135.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 +end \ No newline at end of file diff --git a/script/c95000136.lua b/script/c95000136.lua new file mode 100644 index 00000000..240d4a9f --- /dev/null +++ b/script/c95000136.lua @@ -0,0 +1,31 @@ +--Action Card - Energy Biscuits +function c95000136.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000136.tg) + e1:SetOperation(c95000136.op) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000136.handcon) + c:RegisterEffect(e2) +end +function c95000136.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000136.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,500) +end +function c95000136.op(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end \ No newline at end of file diff --git a/script/c95000137.lua b/script/c95000137.lua new file mode 100644 index 00000000..32caa8f4 --- /dev/null +++ b/script/c95000137.lua @@ -0,0 +1,44 @@ +--Action Card - Spicy Spice +function c95000137.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(c95000137.condition) + e1:SetTarget(c95000137.target) + e1:SetOperation(c95000137.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000137.handcon) + c:RegisterEffect(e2) +end +function c95000137.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000137.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c95000137.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_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000137.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c95000138.lua b/script/c95000138.lua new file mode 100644 index 00000000..d6271247 --- /dev/null +++ b/script/c95000138.lua @@ -0,0 +1,73 @@ +--Action Card - High Dive +function c95000138.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_DISABLED) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c95000138.target) + e1:SetOperation(c95000138.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000138.handcon) + c:RegisterEffect(e2) +end +function c95000138.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000138.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 c95000138.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(94770493)==0 then + tc:RegisterFlagEffect(94770493,RESET_EVENT+0x1fe0000+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+0x1fe0000+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(c95000138.atkop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c95000138.atkop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetOwner()) + e1:SetDescription(aux.Stringid(19221310,1)) + 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(c95000138.destg) + e1:SetOperation(c95000138.desop) + e:GetHandler():RegisterEffect(e1) +end +function c95000138.filter(c) + return c:IsAttackPos() and c:IsDestructable() +end +function c95000138.destg(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return Duel.IsExistingMatchingCard(c95000138.filter,tp,0,LOCATION_MZONE,1,nil) end + local g=Duel.GetMatchingGroup(c95000138.filter,tp,0,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c95000138.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c95000138.filter,tp,0,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c95000139.lua b/script/c95000139.lua new file mode 100644 index 00000000..9737a83d --- /dev/null +++ b/script/c95000139.lua @@ -0,0 +1,47 @@ +--Action Card - Victory Topping +function c95000139.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000139.target) + e1:SetOperation(c95000139.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000139.handcon) + c:RegisterEffect(e2) +end +function c95000139.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000139.filter(c) + return c:IsFaceup() +end + +function c95000139.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,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) +end +function c95000139.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(600) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + if Duel.IsExistingTarget(Card.IsDefensePos,tp,0,LOCATION_MZONE,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(95000139,0)) then + local g=Duel.SelectTarget(tp,Card.IsDefensePos,tp,0,LOCATION_MZONE,1,1,nil) + local tg=g:GetFirst() + Duel.ChangePosition(tg,0,0,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK) + end + end +end diff --git a/script/c95000140.lua b/script/c95000140.lua new file mode 100644 index 00000000..bdb6cc11 --- /dev/null +++ b/script/c95000140.lua @@ -0,0 +1,228 @@ +--AF Mr. Sun's Canyon +function c95000140.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000140.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000140.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000140.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000140.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000140,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000140.condition) + e8:SetTarget(c95000140.Acttarget) + e8:SetOperation(c95000140.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000140.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000140.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000140.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000140.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000140.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000140.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000140.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000140,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000140.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000140.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000140.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000140.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000140.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000140.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000140,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000140.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000140.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000140.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000140.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000140)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000140.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000141, +95000143 +} +function c95000140.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000140.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000140.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000140)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000140,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000140.condition) + e1:SetTarget(c95000140.Acttarget) + e1:SetOperation(c95000140.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000140.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000140,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000141.lua b/script/c95000141.lua new file mode 100644 index 00000000..be11c645 --- /dev/null +++ b/script/c95000141.lua @@ -0,0 +1,50 @@ +--Action Card - Sunshine Smile +function c95000141.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000141.target) + e1:SetCondition(c95000141.atkcon) + e1:SetOperation(c95000141.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000141.handcon) + c:RegisterEffect(e2) +end +function c95000141.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000141.filter(c) + return c:IsFaceup() +end +function c95000141.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(c95000141.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c95000141.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000141.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_BATTLE) + e1:SetCondition(c95000141.atkcon) + e1:SetValue(400) + tc:RegisterEffect(e1) + end +end +function c95000141.atkcon(e) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 +end + diff --git a/script/c95000142.lua b/script/c95000142.lua new file mode 100644 index 00000000..97db7209 --- /dev/null +++ b/script/c95000142.lua @@ -0,0 +1,230 @@ +--AF Ruined Castle of the Sunset +function c95000142.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000142.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000142.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000142.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000142.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000142,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000142.condition) + e8:SetTarget(c95000142.Acttarget) + e8:SetOperation(c95000142.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000142.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000142.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000142.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000142.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000142.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000142.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000142.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000142,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000142.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000142.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000142.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000142.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000142.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000142.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000142,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000142.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000142.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000142.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000142.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000142)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000142.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143, +95000144, +95000145 +} +function c95000142.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000142.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000142.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000142)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000142,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000142.condition) + e1:SetTarget(c95000142.Acttarget) + e1:SetOperation(c95000142.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000142.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000142,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000143.lua b/script/c95000143.lua new file mode 100644 index 00000000..cb4e4411 --- /dev/null +++ b/script/c95000143.lua @@ -0,0 +1,27 @@ +--Action Card - Blind Blizzard +function c95000143.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_START,TIMING_BATTLE_START) + e1:SetCondition(c95000143.condition) + e1:SetOperation(c95000143.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000143.handcon) + c:RegisterEffect(e2) +end +function c95000143.condition(e,tp,eg,ep,ev,re,r,rp) + return (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) +end +function c95000143.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) +end + +function c95000143.handcon(e) + return tp~=Duel.GetTurnPlayer() +end \ No newline at end of file diff --git a/script/c95000144.lua b/script/c95000144.lua new file mode 100644 index 00000000..d1b6d0f5 --- /dev/null +++ b/script/c95000144.lua @@ -0,0 +1,40 @@ +--Action Card - Great Fire Cannon +function c95000144.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c95000144.condition) + e1:SetTarget(c95000144.target) + e1:SetOperation(c95000144.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000144.handcon) + c:RegisterEffect(e2) +end +function c95000144.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000144.condition(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local bc=tc:GetBattleTarget() + return eg:GetCount()==1 and tc:IsControler(tp) + and bc:IsReason(REASON_BATTLE) +end +function c95000144.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + local atk=eg:GetFirst():GetBattleTarget():GetAttack() + if atk<0 then atk=0 end + Duel.SetTargetParam(atk) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,atk) +end +function c95000144.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end diff --git a/script/c95000145.lua b/script/c95000145.lua new file mode 100644 index 00000000..8f473e2a --- /dev/null +++ b/script/c95000145.lua @@ -0,0 +1,52 @@ +--Action Card - Invisibility +function c95000145.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000145.target) + e1:SetOperation(c95000145.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000145.handcon) + c:RegisterEffect(e2) +end +function c95000145.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000145.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,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 c95000145.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e1:SetValue(aux.tgval) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc: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_IMMUNE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(c95000145.efilter) + tc:RegisterEffect(e2) + end +end +function c95000145.efilter(e,te) + return te:GetOwner()~=e:GetOwner() +end + diff --git a/script/c95000146.lua b/script/c95000146.lua new file mode 100644 index 00000000..bfa6021e --- /dev/null +++ b/script/c95000146.lua @@ -0,0 +1,231 @@ +--AF Sword Graveyard +function c95000146.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000146.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000146.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000146.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000146.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000146,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000146.condition) + e8:SetTarget(c95000146.Acttarget) + e8:SetOperation(c95000146.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000146.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000146.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000146.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000146.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000146.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000146.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000146.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000146,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000146.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000146.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + + +function c95000146.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000146.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000146.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000146.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000146,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000146.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000146.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000146.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000146.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000146)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000146.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +-- 95000147, +95000148, +95000143 +} +function c95000146.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000146.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000146.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000146)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000146,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000146.condition) + e1:SetTarget(c95000146.Acttarget) + e1:SetOperation(c95000146.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000146.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000146,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000148.lua b/script/c95000148.lua new file mode 100644 index 00000000..ffe08245 --- /dev/null +++ b/script/c95000148.lua @@ -0,0 +1,50 @@ +--Action Card - Extreme Sword +function c95000148.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000148.target) + e1:SetCondition(c95000148.atkcon) + e1:SetOperation(c95000148.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000148.handcon) + c:RegisterEffect(e2) +end +function c95000148.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + +function c95000148.filter(c) + return c:IsFaceup() +end +function c95000148.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,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000148.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(tc) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCondition(c95000148.atkcon) + e1:SetValue(1000) + tc:RegisterEffect(e1) + end +end +function c95000148.atkcon(e) + local ph=Duel.GetCurrentPhase() + return ph>=0x08 and ph<=0x20 +end + diff --git a/script/c95000149.lua b/script/c95000149.lua new file mode 100644 index 00000000..8a2a9387 --- /dev/null +++ b/script/c95000149.lua @@ -0,0 +1,403 @@ +--AF Fortune Teller +function c95000149.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000149.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000149.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000149.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000149.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000149,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000149.condition) + e8:SetTarget(c95000149.Acttarget) + e8:SetOperation(c95000149.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000149.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000149.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000149.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000149.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000149.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000149.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000149.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000149,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000149.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000149.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + + +function c95000149.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000149.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000149.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000149.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==3 or dc==4 or dc==6 then +e:GetHandler():RegisterFlagEffect(95000149,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then + if not Duel.IsExistingMatchingCard(c95000149.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + --- check action Trap + if (e:GetLabel()==95000150 or e:GetLabel()==95000072) then + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + Duel.MoveToField(token,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + if not Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) then + Duel.SendtoGrave(token,nil,REASON_RULE) end + local tc=token + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + + else + ---Action Spell + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SendtoHand(token,nil,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + end +end + if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000149.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + --- check action Trap + if (e:GetLabel()==95000150 or e:GetLabel()==95000072) then + local token=Duel.CreateToken(1-tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.MoveToField(token,1-tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + if not Duel.IsExistingTarget(Card.IsFaceup,1-tp,LOCATION_MZONE,0,1,nil) then + Duel.SendtoGrave(token,nil,REASON_RULE) end + local tc=token + Duel.ConfirmCards(1-tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + + else + ---Action Spell + local token=Duel.CreateToken(1-tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SendtoHand(token,1-tp,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + end +end + +else +if not Duel.IsExistingMatchingCard(c95000149.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + --- check action Trap + if (e:GetLabel()==95000150 or e:GetLabel()==95000072) then + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + Duel.MoveToField(token,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + if not Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) then + Duel.SendtoGrave(token,nil,REASON_RULE) end + local tc=token + Duel.ConfirmCards(tp,tc) + if tc:IsType(TYPE_TRAP) then + local te=tc:GetActivateEffect() + local tep=tc:GetControler() + if not te then + Duel.Destroy(tc,REASON_EFFECT) + else + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + local operation=te:GetOperation() + if te:GetCode()==EVENT_FREE_CHAIN and not tc:IsStatus(STATUS_SET_TURN) + and (not condition or condition(te,tep,eg,ep,ev,re,r,rp)) + and (not cost or cost(te,tep,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tep,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetProperty(te:GetProperty()) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + Duel.ChangePosition(tc,POS_FACEUP) + if tc:GetType()==TYPE_TRAP then + tc:CancelToGrave(false) + end + tc:CreateEffectRelation(te) + if cost then cost(te,tep,eg,ep,ev,re,r,rp,1) end + if target then target(te,tep,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + local tg=g:GetFirst() + while tg do + tg:CreateEffectRelation(te) + tg=g:GetNext() + end + if operation then operation(te,tep,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + tg=g:GetFirst() + while tg do + tg:ReleaseEffectRelation(te) + tg=g:GetNext() + end + else + Duel.Destroy(tc,REASON_EFFECT) + end + end + end + + else + ---Action Spell + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SendtoHand(token,nil,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + end +end + +function c95000149.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000149.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000149)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000149.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000150, +-- 95000151, +95000143 +} +function c95000149.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000149.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000149.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000149)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000149,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000149.condition) + e1:SetTarget(c95000149.Acttarget) + e1:SetOperation(c95000149.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000149.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000149,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000150.lua b/script/c95000150.lua new file mode 100644 index 00000000..5298e125 --- /dev/null +++ b/script/c95000150.lua @@ -0,0 +1,21 @@ +--Action Card - Great Misfortune +function c95000150.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000150.target) + e1:SetOperation(c95000150.activate) + c:RegisterEffect(e1) +end +function c95000150.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(800) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,tp,800) +end +function c95000150.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end + diff --git a/script/c95000152.lua b/script/c95000152.lua new file mode 100644 index 00000000..c73c1b29 --- /dev/null +++ b/script/c95000152.lua @@ -0,0 +1,232 @@ +--AF Cross Over +function c95000152.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000152.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000152.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000152.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000152.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000152,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000152.condition) + e8:SetTarget(c95000152.Acttarget) + e8:SetOperation(c95000152.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000152.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000152.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000152.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000152.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000152.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000152.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000152.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000152,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000152.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000152.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000152.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000152.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000152.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000152.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000152,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000152.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000152.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000152.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000152.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000152)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000152.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +-- 95000153, +95000154, +-- 95000155, +-- 95000156, +95000157, +95000143 +} +function c95000152.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000152.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000152.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000152)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000152,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000152.condition) + e1:SetTarget(c95000152.Acttarget) + e1:SetOperation(c95000152.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000152.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000152,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000154.lua b/script/c95000154.lua new file mode 100644 index 00000000..43b246c3 --- /dev/null +++ b/script/c95000154.lua @@ -0,0 +1,57 @@ +--Action Card - Guard Cover +function c95000154.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95000154.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000154.handcon) + c:RegisterEffect(e2) +end +function c95000154.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000154.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c95000154.condition2) + e1:SetTarget(c95000154.target2) + e1:SetOperation(c95000154.activate2) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95000154.condition2(e,tp,eg,ep,ev,re,r,rp) + if rp==tp or not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not g or g:GetCount()~=1 then return false end + local tc=g:GetFirst() + e:SetLabelObject(tc) + return tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE) +end +function c95000154.filter2(c,re,rp,tf,ceg,cep,cev,cre,cr,crp) + return tf(re,rp,ceg,cep,cev,cre,cr,crp,0,c) +end +function c95000154.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tf=re:GetTarget() + local res,ceg,cep,cev,cre,cr,crp=Duel.CheckEvent(re:GetCode(),true) + if chkc then return chkc~=e:GetLabelObject() and chkc:IsControler(tp) and tf(re,rp,ceg,cep,cev,cre,cr,crp,0,chkc) end + if chk==0 then return Duel.IsExistingTarget(c95000154.filter2,tp,LOCATION_ONFIELD,0,1,e:GetLabelObject(),re,rp,tf,ceg,cep,cev,cre,cr,crp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,c95000154.filter2,tp,LOCATION_ONFIELD,0,1,1,e:GetLabelObject(),re,rp,tf,ceg,cep,cev,cre,cr,crp) +end +function c95000154.activate2(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g:GetFirst():IsRelateToEffect(e) then + if Duel.SelectYesNo(tp,aux.Stringid(95000154,0)) then + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(95000154,1)) + Duel.ChangeTargetCard(ev,g) + end + end +end diff --git a/script/c95000155.lua b/script/c95000155.lua new file mode 100644 index 00000000..45f882ef --- /dev/null +++ b/script/c95000155.lua @@ -0,0 +1,71 @@ +--Action Card - Heat up Sound +function c95000155.initial_effect(c) + --negation prevention + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000155,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95000155.activate1) + c:RegisterEffect(e1) + --destroy prevention + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95000155,1)) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetOperation(c95000155.activate2) + c:RegisterEffect(e2) + --act in hand + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e3:SetCondition(c95000155.handcon) + c:RegisterEffect(e3) +end +function c95000155.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000155.activate1(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_CHAINING) + e1:SetCondition(c95000155.condition1) + e1:SetTarget(c95000155.target) + e1:SetOperation(c95000155.operation) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95000155.condition1(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_SPELL) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_NEGATE) + return ex and tg~=nil and tc+tg:FilterCount(c95000155.cfilter,nil)-tg:GetCount()>0 +end +function c95000155.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) +end + +function c95000155.activate2(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_CHAINING) + e1:SetCondition(c95000155.condition2) + e1:SetTarget(c95000155.target) + e1:SetOperation(c95000155.operation) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95000155.condition2(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_SPELL) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(c95000155.cfilter,nil)-tg:GetCount()>0 +end +function c95000155.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end +function c95000155.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) +end + diff --git a/script/c95000156.lua b/script/c95000156.lua new file mode 100644 index 00000000..10b742c6 --- /dev/null +++ b/script/c95000156.lua @@ -0,0 +1,67 @@ +--Action Card - Ilumination +function c95000156.initial_effect(c) + --damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000156,0)) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95000156.activate1) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95000156,1)) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetOperation(c95000156.activate2) + c:RegisterEffect(e2) + --act in hand + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e3:SetCondition(c95000156.handcon) + c:RegisterEffect(e3) +end +function c95000156.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000156.activate1(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_CHAINING) + e1:SetCondition(c95000156.condition1) + e1:SetTarget(c95000156.target) + e1:SetOperation(c95000156.operation) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95000156.condition1(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_MONSTER) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DISABLE_SUMMON) + return ex and tg~=nil and tc+tg:FilterCount(c95000156.cfilter,nil)-tg:GetCount()>0 +end +function c95000156.activate2(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_CHAINING) + e1:SetCondition(c95000156.condition2) + e1:SetTarget(c95000156.target) + e1:SetOperation(c95000156.operation) + e1:SetCountLimit(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95000156.condition2(e,tp,eg,ep,ev,re,r,rp) + if tp==ep or not Duel.IsChainNegatable(ev) then return false end + if not re:IsActiveType(TYPE_MONSTER) and not re:IsHasType(EFFECT_TYPE_ACTIVATE) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(c95000156.cfilter,nil)-tg:GetCount()>0 +end +function c95000156.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) +end +function c95000156.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateActivation(ev) +end + diff --git a/script/c95000157.lua b/script/c95000157.lua new file mode 100644 index 00000000..2bb6bef8 --- /dev/null +++ b/script/c95000157.lua @@ -0,0 +1,38 @@ +--Action Card - Zero Penalty +function c95000157.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000157.target) + e1:SetOperation(c95000157.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000157.handcon) + c:RegisterEffect(e2) +end +function c95000157.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000157.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,0,LOCATION_MZONE,1,1,nil) +end +function c95000157.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsFaceup() and tc:IsRelateToEffect(e) and not tc:IsImmuneToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c95000158.lua b/script/c95000158.lua new file mode 100644 index 00000000..8bfd5729 --- /dev/null +++ b/script/c95000158.lua @@ -0,0 +1,246 @@ +--Action Field - Canyon +function c95000158.initial_effect(c) +--Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000158.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000158.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000158.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000158.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000158,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000158.condition) + e8:SetTarget(c95000158.Acttarget) + e8:SetOperation(c95000158.operation) + c:RegisterEffect(e8) + --damage amp + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e9:SetRange(LOCATION_SZONE) + e9:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e9:SetCondition(c95000158.dcon) + e9:SetOperation(c95000158.dop) + c:RegisterEffect(e9) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000158.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + +end +function c95000158.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000158.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000158.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000158.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000158.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000158.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000158,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000158.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000158.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000158.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000158.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000158.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000158.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000158,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000158.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000158.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000158.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000158.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000158)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000158.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000158.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000158.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000158.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000158)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000158,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000158.condition) + e1:SetTarget(c95000158.Acttarget) + e1:SetOperation(c95000158.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000158.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000158,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000158.IRLcondition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c95000158.dcon(e,tp,eg,ep,ev,re,r,rp) + return eg:GetFirst():IsDefencePos() and eg:GetFirst():IsRace(RACE_ROCK) and Duel.GetTurnPlayer()==tp +end +function c95000158.dop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev*2) +end diff --git a/script/c95000160.lua b/script/c95000160.lua new file mode 100644 index 00000000..4ca9d48f --- /dev/null +++ b/script/c95000160.lua @@ -0,0 +1,270 @@ +--Action Field - Closed Forest +function c95000160.initial_effect(c) +--Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000160.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000160.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000160.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000166.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000160,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000160.condition) + e8:SetTarget(c95000160.Acttarget) + e8:SetOperation(c95000160.operation) + c:RegisterEffect(e8) + -- IRL EFFECT + --atkup + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,0) + e9:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_BEAST)) + e9:SetValue(c95000160.val) + c:RegisterEffect(e9) + --cannot activate + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_CANNOT_ACTIVATE) + e10:SetRange(LOCATION_SZONE) + e10:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e10:SetTargetRange(1,1) + e10:SetValue(c95000160.efilter) + c:RegisterEffect(e10) + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e11:SetCode(EVENT_DESTROYED) + e11:SetOperation(c95000160.desop) + c:RegisterEffect(e11) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000160.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + +end +function c95000160.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000160.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000160.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000160.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000160.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000160.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000160,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000160.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000160.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end +function c95000166.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000160.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000160.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000160.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000160,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000160.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000160.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000160.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000160.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000160)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000160.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000160.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000160.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000160.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000160)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000160,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000160.condition) + e1:SetTarget(c95000160.Acttarget) + e1:SetOperation(c95000160.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000166.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000160,RESET_EVENT+0x1fe0000,0,1) + end +end + + +function c95000160.val(e,c) + return Duel.GetMatchingGroupCount(Card.IsType,e:GetHandlerPlayer(),LOCATION_GRAVE,0,nil,TYPE_MONSTER)*100 +end +function c95000160.efilter(e,re,tp) + return re:GetHandler():IsType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c95000160.desop(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetValue(c95000160.efilter) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end \ No newline at end of file diff --git a/script/c95000161.lua b/script/c95000161.lua new file mode 100644 index 00000000..adde20c5 --- /dev/null +++ b/script/c95000161.lua @@ -0,0 +1,282 @@ +--Action Field - Dragon Ravine +function c95000161.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000161.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000161.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000161.ctcon2) + c:RegisterEffect(e6) + + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000161,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000161.condition) + e8:SetTarget(c95000161.Acttarget) + e8:SetOperation(c95000161.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000161.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + + --search + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e6:SetDescription(aux.Stringid(62265044,1)) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetRange(LOCATION_SZONE) + e6:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e6:SetCost(c95000161.cost) + e6:SetTarget(c95000161.target1) + e6:SetOperation(c95000161.operation1) + c:RegisterEffect(e6) + local e7=Effect.CreateEffect(c) + e7:SetCategory(CATEGORY_TOGRAVE) + e7:SetDescription(aux.Stringid(62265044,2)) + e7:SetType(EFFECT_TYPE_IGNITION) + e7:SetRange(LOCATION_SZONE) + e7:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e7:SetCost(c95000161.cost) + e7:SetTarget(c95000161.target2) + e7:SetOperation(c95000161.operation2) + c:RegisterEffect(e7) +end +function c95000161.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000161.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000161.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000161.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000161.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000161.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000161,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000161.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000161.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000161.aclimit(e,re) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and re:GetHandler():IsType(TYPE_FIELD) +end +function c95000161.aclimit2(e,c) + return c:IsType(TYPE_FIELD) +end +function c95000161.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000161.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000161.operation(e,tp,eg,ep,ev,re,r,rp) +if Duel.SelectYesNo(1-tp,aux.Stringid(95000161,0)) then +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000161,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000161.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000161.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +end +function c95000161.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000161.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000161)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000161.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000161.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000161.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000161.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(95000161)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000161,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000161.condition) + e1:SetTarget(c95000161.Acttarget) + e1:SetOperation(c95000161.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + fc:RegisterFlagEffect(95000161,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000161.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) +end +function c95000161.filter1(c) + return c:IsLevelBelow(4) and c:IsSetCard(0x29) and c:IsAbleToHand() +end +function c95000161.filter2(c) + return c:IsRace(RACE_DRAGON) and c:IsAbleToGrave() +end +function c95000161.target1(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95000161.filter1,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c95000161.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95000161.filter2,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK) +end +function c95000161.operation1(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c95000161.filter1,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c95000161.operation2(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c95000161.filter2,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end + diff --git a/script/c95000162.lua b/script/c95000162.lua new file mode 100644 index 00000000..0bc51c7d --- /dev/null +++ b/script/c95000162.lua @@ -0,0 +1,282 @@ +--Action Field - Geartown +function c95000162.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000162.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000162.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000162.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000166.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000162,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000162.condition) + e8:SetTarget(c95000162.Acttarget) + e8:SetOperation(c95000162.operation) + c:RegisterEffect(e8) + --decrease tribute + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_DECREASE_TRIBUTE) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_HAND,LOCATION_HAND) + e9:SetCondition(c95000162.IRLcondition) + e9:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x7)) + e9:SetValue(0x1) + c:RegisterEffect(e9) + --special summon + local e10=Effect.CreateEffect(c) + e10:SetCategory(CATEGORY_SPECIAL_SUMMON) + e10:SetDescription(aux.Stringid(37694547,0)) + e10:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e10:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e10:SetCode(EVENT_TO_GRAVE) + e10:SetCondition(c95000162.spcon) + e10:SetTarget(c95000162.sptg) + e10:SetOperation(c95000162.spop) + c:RegisterEffect(e10) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000162.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + + + +end +function c95000162.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000162.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000162.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000162.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000162.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000162.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000162,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000162.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000162.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000162.aclimit(e,re) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and re:GetHandler():IsType(TYPE_FIELD) +end +function c95000166.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end + + +-- Add Action Card +function c95000162.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000162.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000162,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000162.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000162.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000162.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000162.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000162)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000162.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000162.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000162.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000162.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000162)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000162,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000162.condition) + e1:SetTarget(c95000162.Acttarget) + e1:SetOperation(c95000162.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000166.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000162,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000162.IRLcondition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c95000162.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c95000162.filter(c,e,tp) + return c:IsSetCard(0x7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and (not c:IsLocation(LOCATION_GRAVE) or not c:IsHasEffect(EFFECT_NECRO_VALLEY)) +end +function c95000162.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c95000162.filter,tp,0x13,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0x13) +end +function c95000162.spop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c95000162.filter,tp,0x13,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + Duel.ShuffleDeck(tp) + end +end diff --git a/script/c95000163.lua b/script/c95000163.lua new file mode 100644 index 00000000..8052fd11 --- /dev/null +++ b/script/c95000163.lua @@ -0,0 +1,314 @@ +--Action Field - Mausoleum of the Emperor +function c95000163.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000163.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000163.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000163.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000166.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000163,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000163.condition) + e8:SetTarget(c95000163.Acttarget) + e8:SetOperation(c95000163.operation) + c:RegisterEffect(e8) + --Activate + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_ACTIVATE) + e9:SetCode(EVENT_FREE_CHAIN) + e9:SetValue(SUMMON_TYPE_NORMAL) + c:RegisterEffect(e9) + --summon + local e10=Effect.CreateEffect(c) + e10:SetDescription(aux.Stringid(80921533,0)) + e10:SetProperty(EFFECT_FLAG_BOTH_SIDE) + e10:SetCategory(CATEGORY_SUMMON) + e10:SetType(EFFECT_TYPE_IGNITION) + e10:SetRange(LOCATION_SZONE) + e10:SetTarget(c95000163.target) + e10:SetCondition(c95000163.IRLcondition) + e10:SetOperation(c95000163.operation) + e10:SetLabelObject(e9) + c:RegisterEffect(e10) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000163.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + +end +function c95000163.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000163.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000163.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000163.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000163.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000163.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000163,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000163.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000163.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000163.aclimit(e,re) + return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and re:GetHandler():IsType(TYPE_FIELD) +end +function c95000163.aclimit2(e,c) + return c:IsType(TYPE_FIELD) +end +function c95000163.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000163.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000163.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000163,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000163.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000163.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000163.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000163.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000163)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000163.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} + +function c95000163.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000163.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000163.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000166)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000166,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000163.condition) + e1:SetTarget(c95000163.Acttarget) + e1:SetOperation(c95000163.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000166.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000166,RESET_EVENT+0x1fe0000,0,1) + end +end +function c95000163.IRLcondition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c95000163.filter(c,se) + if not c:IsSummonableCard() then return false end + local mi,ma=c:GetTributeRequirement() + return mi>0 and (c:IsSummonable(false,se) or c:IsMSetable(false,se)) +end +function c95000163.get_targets(se,tp) + local g=Duel.GetMatchingGroup(c95000163.filter,tp,LOCATION_HAND,0,nil,se) + local minct=5 + local maxct=0 + local tc=g:GetFirst() + while tc do + local mi,ma=tc:GetTributeRequirement() + if mi>0 and mimaxct then maxct=ma end + tc=g:GetNext() + end + return minct,maxct +end +function c95000163.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local se=e:GetLabelObject() + if chk==0 then + local mi,ma=c95000163.get_targets(se,tp) + if mi==5 then return false end + return Duel.CheckLPCost(tp,mi*1000) + end + local mi,ma=c95000163.get_targets(se,tp) + local ac=0 + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(80921533,3)) + if mi==ma then ac=Duel.AnnounceNumber(tp,mi*1000) + elseif ma>=2 and Duel.CheckLPCost(tp,2000) then ac=Duel.AnnounceNumber(tp,1000,2000) + else ac=Duel.AnnounceNumber(tp,1000) end + Duel.PayLPCost(tp,ac) + e:SetLabel(ac/1000) + Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0) +end +function c95000163.sfilter(c,se,ct) + if not c:IsSummonableCard() then return false end + local mi,ma=c:GetTributeRequirement() + return (mi==ct or ma==ct) and (c:IsSummonable(false,se) or c:IsMSetable(false,se)) +end +function c95000163.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local ct=e:GetLabel() + local se=e:GetLabelObject() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON) + local g=Duel.SelectMatchingCard(tp,c95000163.sfilter,tp,LOCATION_HAND,0,1,1,nil,se,ct) + local tc=g:GetFirst() + if tc then + local s1=tc:IsSummonable(false,se) + local s2=tc:IsMSetable(false,se) + if (s1 and s2 and Duel.SelectPosition(tp,tc,POS_FACEUP_ATTACK+POS_FACEDOWN_DEFENCE)==POS_FACEUP_ATTACK) or not s2 then + Duel.Summon(tp,tc,false,se) + else + Duel.MSet(tp,tc,false,se) + end + end +end + diff --git a/script/c95000164.lua b/script/c95000164.lua new file mode 100644 index 00000000..6b7fbeb3 --- /dev/null +++ b/script/c95000164.lua @@ -0,0 +1,300 @@ +--Action Field - Morphtronic Map +function c95000164.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000164.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000164.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000164.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000166.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000164,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000164.condition) + e8:SetTarget(c95000164.Acttarget) + e8:SetOperation(c95000164.operation) + c:RegisterEffect(e8) + --add counter + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e9:SetCode(EVENT_CHANGE_POS) + e9:SetRange(LOCATION_SZONE) + e9:SetCondition(c95000164.accon) + e9:SetOperation(c95000164.acop) + c:RegisterEffect(e9) + --atkup + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_ATTACK) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x26)) + e10:SetValue(c95000164.atkval) + c:RegisterEffect(e10) + --special summon + local e11=Effect.CreateEffect(c) + e11:SetCategory(CATEGORY_SPECIAL_SUMMON) + e11:SetDescription(aux.Stringid(56074358,0)) + e11:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e11:SetProperty(EFFECT_FLAG_CARD_TARGET) + e11:SetCode(EVENT_TO_GRAVE) + e11:SetCondition(c95000164.spcon) + e11:SetTarget(c95000164.sptg) + e11:SetOperation(c95000164.spop) + c:RegisterEffect(e11) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000164.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + +end +function c95000164.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000164.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000164.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000164.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000164.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000164.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000164,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000164.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000164.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000166.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000164.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000164.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000164.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000164,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000164.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000164.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000164.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000164.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000164)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000164.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000164.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000164.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000164.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000164)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000164,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000164.condition) + e1:SetTarget(c95000164.Acttarget) + e1:SetOperation(c95000164.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000166.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000164,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000164.atkval(e,c) + return e:GetHandler():GetCounter(0x8)*150 +end +function c95000164.cfilter(c) + local np=c:GetPosition() + local pp=c:GetPreviousPosition() + return not c:IsStatus(STATUS_CONTINUOUS_POS) and ((np<3 and pp>3) or (pp<3 and np>3)) +end +function c95000164.accon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c95000164.cfilter,1,nil) +end +function c95000164.acop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(0x8,1) +end +function c95000164.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_DESTROY) and bit.band(c:GetPreviousLocation(),LOCATION_ONFIELD)~=0 +end +function c95000164.filter(c,e,tp) + return c:IsSetCard(0x26) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c95000164.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c95000164.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c95000164.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c95000164.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c95000164.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end + diff --git a/script/c95000165.lua b/script/c95000165.lua new file mode 100644 index 00000000..be472976 --- /dev/null +++ b/script/c95000165.lua @@ -0,0 +1,309 @@ +--Action Field - Pandemonium +function c95000165.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000165.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000165.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000165.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000166.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000165,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000165.condition) + e8:SetTarget(c95000165.Acttarget) + e8:SetOperation(c95000165.operation) + c:RegisterEffect(e8) + --cost change + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_LPCOST_CHANGE) + e9:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e9:SetRange(LOCATION_FZONE) + e9:SetTargetRange(1,1) + e9:SetCondition(c95000165.costchange) + c:RegisterEffect(e9) + --search + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e10:SetRange(LOCATION_FZONE) + e10:SetCode(EVENT_TO_GRAVE) + e10:SetOperation(c95000165.regop) + e10:SetCondition(c95000165.IRLcondition) + c:RegisterEffect(e10) + local e11=Effect.CreateEffect(c) + e11:SetDescription(aux.Stringid(94585852,0)) + e11:SetCategory(CATEGORY_TOHAND) + e11:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e11:SetProperty(EFFECT_FLAG_EVENT_PLAYER+EFFECT_FLAG_DAMAGE_STEP) + e11:SetCode(95000165) + e11:SetTarget(c95000165.target) + e11:SetCondition(c95000165.IRLcondition) + e11:SetOperation(c95000165.operation) + c:RegisterEffect(e11) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000165.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + +end +function c95000165.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000165.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000165.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000165.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000165.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000165.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000165,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000165.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000165.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000166.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000165.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000165.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000165.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000165,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000165.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000165.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000165.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000165.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000165)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000165.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000165.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000165.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000165.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000165)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000165,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000165.condition) + e1:SetTarget(c95000165.Acttarget) + e1:SetOperation(c95000165.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000166.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000165,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000165.IRLcondition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c95000165.costchange(e,re,rp,val) + if Duel.GetCurrentPhase()==PHASE_STANDBY and re and re:GetHandler():IsSetCard(0x45) and re:GetHandler():IsType(TYPE_MONSTER) then + return 0 + else + return val + end +end +function c95000165.regop(e,tp,eg,ep,ev,re,r,rp) + local lv1=0 + local lv2=0 + local tc=eg:GetFirst() + while tc do + if tc:IsReason(REASON_DESTROY) and not tc:IsReason(REASON_BATTLE) and tc:IsSetCard(0x45) then + local tlv=tc:GetLevel() + if tc:IsControler(0) then + if tlv>lv1 then lv1=tlv end + else + if tlv>lv2 then lv2=tlv end + end + end + tc=eg:GetNext() + end + if lv1>0 then Duel.RaiseSingleEvent(e:GetHandler(),94585852,e,0,0,0,lv1) end + if lv2>0 then Duel.RaiseSingleEvent(e:GetHandler(),94585852,e,0,1,1,lv2) end +end +function c95000165.filter(c,lv) + return c:GetLevel()0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end + diff --git a/script/c95000166.lua b/script/c95000166.lua new file mode 100644 index 00000000..aded0c10 --- /dev/null +++ b/script/c95000166.lua @@ -0,0 +1,334 @@ +--Action Field - Savage Colosseum +function c95000166.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000166.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000166.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000166.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000166.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000166,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000166.condition) + e8:SetTarget(c95000166.Acttarget) + e8:SetOperation(c95000166.operation) + c:RegisterEffect(e8) + --to defence + local e9=Effect.CreateEffect(c) + e9:SetDescription(aux.Stringid(32391631,0)) + e9:SetCategory(CATEGORY_RECOVER) + e9:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e9:SetCode(EVENT_DAMAGE_STEP_END) + e9:SetRange(LOCATION_SZONE) + e9:SetTarget(c95000166.rectg) + e9:SetCondition(c95000166.IRLcondition) + e9:SetOperation(c95000166.recop) + c:RegisterEffect(e9) + --must attack + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_MUST_ATTACK) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + c:RegisterEffect(e10) + local e11=Effect.CreateEffect(c) + e11:SetType(EFFECT_TYPE_FIELD) + e11:SetCode(EFFECT_CANNOT_EP) + e11:SetRange(LOCATION_SZONE) + e11:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e11:SetTargetRange(1,1) + e11:SetCondition(c95000166.becon) + c:RegisterEffect(e11) + --destroy + local e12=Effect.CreateEffect(c) + e12:SetDescription(aux.Stringid(32391631,1)) + e12:SetCategory(CATEGORY_DESTROY) + e12:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e12:SetRange(LOCATION_SZONE) + e12:SetCountLimit(1) + e12:SetCode(EVENT_PHASE+PHASE_END) + e12:SetTarget(c95000166.destg) + e12:SetCondition(c95000166.IRLcondition) + e12:SetOperation(c95000166.desop) + c:RegisterEffect(e12) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000166.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + + if not c95000166.global_check then + c95000166.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_ATTACK_ANNOUNCE) + ge1:SetOperation(c95000166.check) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ATTACK_DISABLED) + ge2:SetOperation(c95000166.check2) + Duel.RegisterEffect(ge2,0) + end +end +function c95000166.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000166.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000166.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000166.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000166.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000166.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000166,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000166.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000166.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000166.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000166.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000166.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000166.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000166,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000166.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000166.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000166.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000166.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000166)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000166.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000166.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000166.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000166.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000166)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000166,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000166.condition) + e1:SetTarget(c95000166.Acttarget) + e1:SetOperation(c95000166.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000166.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000166,RESET_EVENT+0x1fe0000,0,1) + end +end + +function c95000166.IRLcondition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c95000166.check(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(32391631) + if ct then + tc:SetFlagEffectLabel(32391631,ct+1) + else + tc:RegisterFlagEffect(32391631,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,1) + end +end +function c95000166.check2(e,tp,eg,ep,ev,re,r,rp) + local tc=eg:GetFirst() + local ct=tc:GetFlagEffectLabel(32391631) + if ct then + tc:SetFlagEffectLabel(32391631,ct-1) + end +end +function c95000166.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(Duel.GetTurnPlayer()) + Duel.SetTargetParam(300) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,Duel.GetTurnPlayer(),300) +end +function c95000166.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) or not Duel.GetAttacker():IsRelateToBattle() then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Recover(p,d,REASON_EFFECT) +end +function c95000166.becon(e) + return Duel.GetTurnPlayer()==tp and Duel.IsExistingMatchingCard(Card.IsAttackable,Duel.GetTurnPlayer(),LOCATION_MZONE,0,1,nil) +end +function c95000166.desfilter(c) + local ct=c:GetFlagEffectLabel(32391631) + return c:IsPosition(POS_FACEUP_ATTACK) and (not ct or ct==0) and c:IsDestructable() +end +function c95000166.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c95000166.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c95000166.desop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c95000166.desfilter,Duel.GetTurnPlayer(),LOCATION_MZONE,0,e:GetHandler()) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c95000167.lua b/script/c95000167.lua new file mode 100644 index 00000000..4ac25a14 --- /dev/null +++ b/script/c95000167.lua @@ -0,0 +1,283 @@ +--Action Field - The Gates of Dark World +function c95000167.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000167.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000167.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000167.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000167.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000167,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000167.condition) + e8:SetTarget(c95000167.Acttarget) + e8:SetOperation(c95000167.operation) + c:RegisterEffect(e8) + --atkup + local e9=Effect.CreateEffect(c) + e9:SetType(EFFECT_TYPE_FIELD) + e9:SetCode(EFFECT_UPDATE_ATTACK) + e9:SetRange(LOCATION_SZONE) + e9:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e9:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FIEND)) + e9:SetValue(150) + c:RegisterEffect(e9) + --defup + local e10=Effect.CreateEffect(c) + e10:SetType(EFFECT_TYPE_FIELD) + e10:SetCode(EFFECT_UPDATE_DEFENCE) + e10:SetRange(LOCATION_SZONE) + e10:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e10:SetTarget(aux.TargetBoolFunction(Card.IsRace,RACE_FIEND)) + e10:SetValue(150) + c:RegisterEffect(e10) + --discard & draw + local e11=Effect.CreateEffect(c) + e11:SetCategory(CATEGORY_HANDES+CATEGORY_DRAW) + e11:SetDescription(aux.Stringid(33017655,1)) + e11:SetType(EFFECT_TYPE_IGNITION) + e11:SetRange(LOCATION_SZONE) + e11:SetCountLimit(1) + e11:SetCost(c95000167.cost) + e11:SetTarget(c95000167.target) + e11:SetOperation(c95000167.operation) + c:RegisterEffect(e11) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000167.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) + + +end +function c95000167.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000167.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000167.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000167.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000167.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000167.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000167,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000167.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000167.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end +function c95000167.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000167.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000167.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000167.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000167,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000167.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000167.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end +end +function c95000167.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000167.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000167)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000167.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +function c95000167.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000167.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000167.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000167)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000167,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000167.condition) + e1:SetTarget(c95000167.Acttarget) + e1:SetOperation(c95000167.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000167.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000167,RESET_EVENT+0x1fe0000,0,1) + end +end + + +function c95000167.costfilter(c) + return c:IsRace(RACE_FIEND) and c:IsAbleToRemoveAsCost() +end +function c95000167.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95000167.costfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c95000167.costfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c95000167.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_HAND,0,1,nil,RACE_FIEND) + and Duel.IsPlayerCanDraw(tp,1) end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,tp,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c95000167.operation(e,tp,eg,ep,ev,re,r,rp,chk) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local g=Duel.SelectMatchingCard(tp,Card.IsRace,tp,LOCATION_HAND,0,1,1,nil,RACE_FIEND) + if g:GetCount()>0 then + Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + end +end diff --git a/script/c95000168.lua b/script/c95000168.lua new file mode 100644 index 00000000..60870be7 --- /dev/null +++ b/script/c95000168.lua @@ -0,0 +1,179 @@ +--Action Field - ???? +function c95000168.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(0xff) + e1:SetOperation(c95000168.op) + c:RegisterEffect(e1) + --unaffectable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_IMMUNE_EFFECT) + e3:SetValue(c95000168.ctcon2) + c:RegisterEffect(e3) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e4:SetRange(LOCATION_SZONE) + e4:SetTargetRange(1,1) + e4:SetTarget(c95000168.aclimit2) + c:RegisterEffect(e4) + --~ Add Action Card + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(95000043,0)) + e5:SetType(EFFECT_TYPE_QUICK_O) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EVENT_FREE_CHAIN) + e5:SetCondition(c95000168.condition) + e5:SetTarget(c95000168.Acttarget) + e5:SetOperation(c95000168.operation) + c:RegisterEffect(e5) + --cannot change zone + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + eb:SetRange(LOCATION_SZONE) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000168.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +function c95000168.aclimit2(e,c) + return c:IsType(TYPE_FIELD) +end +function c95000168.tgn(e,c) + return c==e:GetHandler() +end +function c95000168.op(e,tp,eg,ep,ev,re,r,rp,chk) +local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000043,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + else + local WIN_REASON_ACTION_FIELD=0x55 + Duel.Win(1-tp,WIN_REASON_ACTION_FIELD) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end +-- Add Action Card +function c95000168.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +math.randomseed( tc:getcode() ) +end +i = math.random(20) +ac=math.random(1,tableAction_size) +e:SetLabel(tableAction[ac]) +end +function c95000168.operation(e,tp,eg,ep,ev,re,r,rp) +if Duel.SelectYesNo(1-tp,aux.Stringid(95000043,0)) then +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==3 or dc==4 or dc==6 then +e:GetHandler():RegisterFlagEffect(95000043,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000168.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_QUICKPLAY) + token:RegisterEffect(e1) + Duel.SendtoHand(token,nil,REASON_EFFECT) + Duel.SpecialSummonComplete() +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000168.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,1-tp,1-tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_QUICKPLAY) + token:RegisterEffect(e1) + Duel.SendtoHand(token,1-tp,REASON_EFFECT) + Duel.SpecialSummonComplete() + end + +end + +else +if not Duel.IsExistingMatchingCard(c95000168.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel(),nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_QUICKPLAY) + token:RegisterEffect(e1) + Duel.SendtoHand(token,nil,REASON_EFFECT) + Duel.SpecialSummonComplete() +end +end +end +function c95000168.aclimit2(e,c) + return c:IsType(TYPE_FIELD) +end +function c95000168.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000168.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) and e:GetHandler():GetFlagEffect(95000043)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000168.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143 +} +tableAction_size=4 \ No newline at end of file diff --git a/script/c95000169.lua b/script/c95000169.lua new file mode 100644 index 00000000..9fb8d867 --- /dev/null +++ b/script/c95000169.lua @@ -0,0 +1,35 @@ +--Action Card - Balloon Carnival +function c95000169.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_PHASE) + e1:SetOperation(c95000169.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000169.handcon) + c:RegisterEffect(e2) +end + +function c95000169.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000169.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,1) + e1:SetValue(c95000169.damval) + e1:SetReset(RESET_PHASE+PHASE_END,1) + Duel.RegisterEffect(e1,tp) +end +function c95000169.damval(e,re,val,r,rp,rc) + return val/2 +end + diff --git a/script/c95000170.lua b/script/c95000170.lua new file mode 100644 index 00000000..8861bed5 --- /dev/null +++ b/script/c95000170.lua @@ -0,0 +1,39 @@ +--Action Card - Jumping Through the Fire Ring +function c95000170.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000170.target) + e1:SetOperation(c95000170.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000170.handcon) + c:RegisterEffect(e2) +end + +function c95000170.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000170.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end +end +function c95000170.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil) + local ct=Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end + diff --git a/script/c95000171.lua b/script/c95000171.lua new file mode 100644 index 00000000..ec2bcc6e --- /dev/null +++ b/script/c95000171.lua @@ -0,0 +1,39 @@ +--Action Card - Knife Throw +function c95000171.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000171.target) + e1:SetOperation(c95000171.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000171.handcon) + c:RegisterEffect(e2) +end + +function c95000171.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000171.filter(c) + return (c:GetSequence()==6 or c:GetSequence()==7) and c:IsDestructable() +end +function c95000171.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and c95000171.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c95000171.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c95000171.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c95000171.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end + diff --git a/script/c95000172.lua b/script/c95000172.lua new file mode 100644 index 00000000..6b9ae0da --- /dev/null +++ b/script/c95000172.lua @@ -0,0 +1,231 @@ +--AF Circus Tent +function c95000172.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000172.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000172.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000172.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000172.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000172,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000172.condition) + e8:SetTarget(c95000172.Acttarget) + e8:SetOperation(c95000172.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000172.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000172.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000172.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000172.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000172.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000172.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000172.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000172,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000172.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000172.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000172.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000172.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000172.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000172.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000172,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000172.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000172.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000172.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000172.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000172)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000172.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143, +95000169, +95000170, +95000171 +} +function c95000172.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000172.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000172.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000172)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000172,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000172.condition) + e1:SetTarget(c95000172.Acttarget) + e1:SetOperation(c95000172.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetTarget(c95000172.sfilter) + e4:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000172,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000173.lua b/script/c95000173.lua new file mode 100644 index 00000000..37272046 --- /dev/null +++ b/script/c95000173.lua @@ -0,0 +1,83 @@ +--Action Card - Gravity Turn +function c95000173.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95000173.target) + e1:SetOperation(c95000173.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000173.handcon) + c:RegisterEffect(e2) +end +function c95000173.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000173.filter(c) + return c:IsFaceup() +end +function c95000173.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c95000173.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c95000173.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c95000173.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c95000173.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c95000173.atcon1) + e1:SetOperation(c95000173.atop1) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetDescription(aux.Stringid(86137485,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLE_DESTROYING) + e2:SetCondition(c95000173.atcon2) + e2:SetOperation(c95000173.atop2) + tc:RegisterEffect(e2) + end +end +function c95000173.atcon1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return Duel.GetTurnPlayer()==tp and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) + and c:IsChainAttackable() and c:IsStatus(STATUS_OPPO_BATTLE) +end +function c95000173.atop1(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + Duel.ChainAttack() +end +function c95000173.atcon2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local bc=c:GetBattleTarget() + return Duel.GetTurnPlayer()~=tp and c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) + and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) +end +function c95000173.atop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) or c:IsFacedown() then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(100) + e1:SetReset(RESET_EVENT+0x1ff0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) +end diff --git a/script/c95000174.lua b/script/c95000174.lua new file mode 100644 index 00000000..2b3901a1 --- /dev/null +++ b/script/c95000174.lua @@ -0,0 +1,40 @@ +--Action Card - Space Debris +function c95000174.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DAMAGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetTarget(c95000174.target) + e1:SetOperation(c95000174.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000174.handcon) + c:RegisterEffect(e2) +end +function c95000174.handcon(e) + return tp~=Duel.GetTurnPlayer() +end +function c95000174.filter(c,e,tp) + return c:GetPreviousControler()==1-tp and c:IsPreviousLocation(LOCATION_MZONE) + and (c:IsReason(REASON_EFFECT) or (c:IsReason(REASON_BATTLE) and Duel.GetAttacker():IsControler(1-tp))) + and c:GetBaseDefense()>0 and c:IsCanBeEffectTarget(e) and c:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) +end +function c95000174.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) and c95000174.filter(chkc,e,tp) end + if chk==0 then return eg:IsExists(c95000174.filter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=eg:FilterSelect(tp,c95000174.filter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,0) +end +function c95000174.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Damage(1-tp,tc:GetBaseDefense(),REASON_EFFECT) + end +end diff --git a/script/c95000175.lua b/script/c95000175.lua new file mode 100644 index 00000000..1b485ecb --- /dev/null +++ b/script/c95000175.lua @@ -0,0 +1,230 @@ +--AF Weightless Outer Space +function c95000175.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_HAND+LOCATION_DECK) + e1:SetOperation(c95000175.op) + c:RegisterEffect(e1) + --redirect + local e2=Effect.CreateEffect(c) + e2:SetCode(EVENT_LEAVE_FIELD) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetOperation(c95000175.repop) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_SZONE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95000175.ctcon2) + c:RegisterEffect(e6) + --cannot set + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_FIELD) + e7:SetCode(EFFECT_CANNOT_SSET) + e7:SetRange(LOCATION_SZONE) + e7:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e7:SetTargetRange(1,0) + e7:SetTarget(c95000175.sfilter) + c:RegisterEffect(e7) + -- Add Action Card + local e8=Effect.CreateEffect(c) + e8:SetDescription(aux.Stringid(95000175,0)) + e8:SetType(EFFECT_TYPE_QUICK_O) + e8:SetRange(LOCATION_SZONE) + e8:SetCode(EVENT_FREE_CHAIN) + e8:SetCondition(c95000175.condition) + e8:SetTarget(c95000175.Acttarget) + e8:SetOperation(c95000175.operation) + c:RegisterEffect(e8) + + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_FIELD) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_SZONE) + eb:SetTargetRange(LOCATION_SZONE,0) + eb:SetTarget(c95000175.tgn) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95000175.ctcon2(e,re) + return re:GetHandler()~=e:GetHandler() +end +--speed Duel Filter +function c95000175.SDfilter(c) + return c:GetCode()==511004001 +end +--vanilla mode filter +function c95000175.Vfilter(c) + return c:GetCode()==511004002 +end +function c95000175.op(e,tp,eg,ep,ev,re,r,rp,chk) + local tc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + + --check if number of card >20 if speed duel or >40 if other duel + if Duel.IsExistingMatchingCard(c95000175.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) and Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,nil):GetCount()<20 then + Duel.Win(1-tp,0x55) + end + if Duel.GetMatchingGroup(nil,tp,LOCATION_HAND+LOCATION_DECK,0,e:GetHandler()):GetCount()<40 and not Duel.IsExistingMatchingCard(c95000175.SDfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + Duel.Win(1-tp,0x55) + end + + --move to field + if tc==nil then + Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if tc2==nil then + local token=Duel.CreateToken(tp,95000175,nil,nil,nil,nil,nil,nil) + Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fc0000) + e1:SetValue(TYPE_SPELL+TYPE_FIELD) + token:RegisterEffect(e1) + Duel.MoveToField(token,tp,1-tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.SpecialSummonComplete() + end + -- add ability Yell when Vanilla mode activated + -- if Duel.IsExistingMatchingCard(c95000175.Vfilter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_REMOVED,0,1,nil) then + -- c95000175.tableAction.push(95000200) + -- end + else + Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_EFFECT) + end + if e:GetHandler():GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end + +function c95000175.sfilter(e,c,tp) + return c:IsType(TYPE_FIELD) +end +function c95000175.tgn(e,c) + return c==e:GetHandler() +end + + +-- Add Action Card +function c95000175.Acttarget(e,tp,eg,ep,ev,re,r,rp,chk) +if chk==0 then return true end +Duel.Hint(HINT_SELECTMSG,tp,564) +local seed=0 +if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then +local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE+LOCATION_REMOVED+LOCATION_HAND+LOCATION_SZONE,0,nil) +seed = g:GetFirst():GetCode() +else +local g=Duel.GetDecktopGroup(tp,1) +local tc=g:GetFirst() +seed=tc:GetCode() +end + +math.randomseed( seed ) + +ac=math.random(1,#tableAction) +e:SetLabel(tableAction[ac]) +end +function c95000175.operation(e,tp,eg,ep,ev,re,r,rp) +local dc=Duel.TossDice(tp,1) +if dc==2 or dc==4 or dc==6 then + +Duel.RegisterFlagEffect(tp,95000175,RESET_PHASE+PHASE_END,0,1) +end +if dc==1 or dc==2 then +if not Duel.IsExistingMatchingCard(c95000175.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) +end +end + +if dc==5 or dc==6 then + if not Duel.IsExistingMatchingCard(c95000175.cfilter,1-tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) then + local token=Duel.CreateToken(1-tp,e:GetLabel()) + Duel.SendtoHand(token,nil,REASON_EFFECT) + end + +end + +end +function c95000175.condition(e,tp,eg,ep,ev,re,r,rp) + return not Duel.IsExistingMatchingCard(c95000175.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) + and Duel.GetFlagEffect(e:GetHandlerPlayer(),95000175)==0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) +end +function c95000175.cfilter(c) + return c:IsSetCard(0xac1) +end +tableAction = { +95000044, +95000045, +95000046, +95000143, +95000173, +95000174 +} +function c95000175.repop(e) + local c=e:GetHandler() + if c:GetFlagEffect(900000007)==0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_END) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetLabelObject(c) + e1:SetOperation(c95000175.returnop) + Duel.RegisterEffect(e1,0) + c:RegisterFlagEffect(900000007,0,0,1) + end + Duel.SendtoDeck(c,nil,-2,REASON_RULE) +end +function c95000175.returnop(e) + local c=e:GetLabelObject() + local tp=c:GetControler() + local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if not fc then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end + if fc and fc:GetFlagEffect(195000175)==0 then + --action card get + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95000175,0)) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_SZONE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCondition(c95000175.condition) + e1:SetTarget(c95000175.Acttarget) + e1:SetOperation(c95000175.operation) + e1:SetReset(RESET_EVENT+0x1fe0000) + fc:RegisterEffect(e1) + --cannot set + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_CANNOT_SSET) + e4:SetRange(LOCATION_SZONE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e4:SetTargetRange(1,0) + e4:SetReset(RESET_EVENT+0x1fe0000) + e4:SetTarget(c95000175.sfilter) + fc:RegisterEffect(e4) + fc:RegisterFlagEffect(195000175,RESET_EVENT+0x1fe0000,0,1) + end +end diff --git a/script/c95000176.lua b/script/c95000176.lua new file mode 100644 index 00000000..ea7ff92a --- /dev/null +++ b/script/c95000176.lua @@ -0,0 +1,48 @@ +--Action Card - Acceleration +function c95000176.initial_effect(c) +--reflect + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c95000176.condition) + e1:SetOperation(c95000176.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + e2:SetCondition(c95000176.handcon) + c:RegisterEffect(e2) +end +function c95000176.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 c95000176.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(c95000176.refcon) + e1:SetReset(RESET_CHAIN) + Duel.RegisterEffect(e1,tp) +end +function c95000176.refcon(e,re,val,r,rp,rc) + local cc=Duel.GetCurrentChain() + local cc=Duel.GetCurrentChain() + if cc==0 or bit.band(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 + +function c95000176.handcon(e) + return tp~=Duel.GetTurnPlayer() +end + + diff --git a/script/c95000177.lua b/script/c95000177.lua new file mode 100644 index 00000000..52709f36 --- /dev/null +++ b/script/c95000177.lua @@ -0,0 +1,92 @@ +--Action Card - Encore +function c95000177.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c95000177.condition) + e1:SetTarget(c95000177.target) + e1:SetOperation(c95000177.operation) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_QP_ACT_IN_NTPHAND) + c:RegisterEffect(e2) +end +function c95000177.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c95000177.filter(c) + return c:IsSetCard(0xac1) and c:IsType(TYPE_SPELL) and c:CheckActivateEffect(false,false,false)~=nil and not c:IsType(TYPE_FIELD) +end +function c95000177.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local b1=Duel.IsExistingMatchingCard(c95000177.filter,tp,LOCATION_GRAVE,0,1,nil,tp) + local op=0 + if b1 then + op=Duel.SelectOption(tp,aux.Stringid(95000177,0),aux.Stringid(95000177,1)) + else + op=Duel.SelectOption(tp,aux.Stringid(95000177,1))+1 + end + if op==0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectTarget(tp,c95000177.filter,tp,0,LOCATION_GRAVE,1,1,nil) + else + Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) + end + e:SetLabel(op) +end +function c95000177.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetLabel()==0 then + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) then return end + if c:IsRelateToEffect(e) and not tc:IsType(TYPE_EQUIP+TYPE_CONTINUOUS) then + local tpe=tc:GetType() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + end + if c:IsRelateToEffect(e) and tc:IsType(TYPE_EQUIP+TYPE_CONTINUOUS) then + local tpe=tc:GetType() + local code=tc:GetOriginalCode() + c:CopyEffect(code,nil,1) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_TYPE) + e1:SetValue(tpe) + e1:SetReset(RESET_EVENT+0x1fc0000) + c:RegisterEffect(e1) + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if tg then tg(e,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + if op then op(e,tp,eg,ep,ev,re,r,rp) end + c:CancelToGrave() + end + else + if e:GetHandler():IsRelateToEffect(e) then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + end + end +end diff --git a/script/c95004025.lua b/script/c95004025.lua new file mode 100644 index 00000000..a0b1f527 --- /dev/null +++ b/script/c95004025.lua @@ -0,0 +1,60 @@ +--真竜導士マジェスティM +--True Draco Majesty Maiden, the Mage +--Script by nekrozar +function c95004025.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95004025,0)) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c95004025.otcon) + e1:SetOperation(c95004025.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95004025,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCondition(c95004025.thcon) + e2:SetTarget(c95004025.thtg) + e2:SetOperation(c95004025.thop) + c:RegisterEffect(e2) +end +function c95004025.otfilter(c) + return c:IsType(TYPE_CONTINUOUS) and c:IsReleasable() +end +function c95004025.otcon(e,c,minc) + if c==nil then return true end + local tp=c:GetControler() + return c:GetLevel()>4 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c95004025.otfilter,tp,LOCATION_ONFIELD,0,1,nil) +end +function c95004025.otop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local sg=Duel.SelectMatchingCard(tp,c95004025.otfilter,tp,LOCATION_ONFIELD,0,1,1,nil) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c95004025.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE and rp~=tp +end +function c95004025.thfilter(c) + return (c:IsSetCard(0xf9) or c:IsCode(30539496,34079868,82321037,87765315,96746083)) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c95004025.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95004025.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c95004025.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c95004025.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c95113856.lua b/script/c95113856.lua index 8d9147ce..c3176cd4 100644 --- a/script/c95113856.lua +++ b/script/c95113856.lua @@ -7,6 +7,7 @@ function c95113856.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(95113856,0)) e1:SetCategory(CATEGORY_REMOVE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c95169481.lua b/script/c95169481.lua index a4981586..bde688d6 100644 --- a/script/c95169481.lua +++ b/script/c95169481.lua @@ -7,7 +7,7 @@ function c95169481.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(95169481,0)) e1:SetCategory(CATEGORY_DESTROY) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c95178994.lua b/script/c95178994.lua index 632bdddf..47bc4569 100644 --- a/script/c95178994.lua +++ b/script/c95178994.lua @@ -26,12 +26,18 @@ function c95178994.operation(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) Duel.Damage(1-tp,500,REASON_EFFECT) if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=Duel.GetMatchingGroup(c95178994.filter,tp,LOCATION_DECK,0,nil,e,tp) if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(95178994,1)) then Duel.BreakEffect() - Duel.SpecialSummonStep(g:GetFirst(),0,tp,tp,false,false,POS_FACEUP_ATTACK) - if ft>1 and g:GetCount()>1 and Duel.SelectYesNo(tp,aux.Stringid(95178994,1)) then - Duel.SpecialSummonStep(g:GetNext(),0,tp,tp,false,false,POS_FACEUP_ATTACK) + local gc=g:GetFirst() + Duel.SpecialSummonStep(gc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + ft=ft-1 + gc=g:GetNext() + while ft>0 and gc and not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.SelectYesNo(tp,aux.Stringid(95178994,1)) do + Duel.SpecialSummonStep(gc,0,tp,tp,false,false,POS_FACEUP_ATTACK) + ft=ft-1 + gc=g:GetNext() end Duel.SpecialSummonComplete() end diff --git a/script/c95200000.lua b/script/c95200000.lua new file mode 100644 index 00000000..2afd3f25 --- /dev/null +++ b/script/c95200000.lua @@ -0,0 +1,117 @@ +--Command Duel +function c95200000.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PREDRAW) + e1:SetRange(0x5f) + e1:SetOperation(c95200000.op) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_ADJUST) + e2:SetCountLimit(1) + e2:SetOperation(c95200000.start) + e2:SetRange(LOCATION_REMOVED) + c:RegisterEffect(e2) + --unaffectable + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) + e5:SetRange(LOCATION_REMOVED) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetValue(1) + c:RegisterEffect(e5) + local e6=e5:Clone() + e6:SetCode(EFFECT_IMMUNE_EFFECT) + e6:SetValue(c95200000.ctcon2) + c:RegisterEffect(e6) + -- + local eb=Effect.CreateEffect(c) + eb:SetType(EFFECT_TYPE_SINGLE) + eb:SetCode(EFFECT_CANNOT_TO_DECK) + eb:SetRange(LOCATION_REMOVED) + c:RegisterEffect(eb) + local ec=eb:Clone() + ec:SetCode(EFFECT_CANNOT_TO_HAND) + c:RegisterEffect(ec) + local ed=eb:Clone() + ed:SetCode(EFFECT_CANNOT_TO_GRAVE) + c:RegisterEffect(ed) + local ee=eb:Clone() + ee:SetCode(EFFECT_CANNOT_REMOVE) + c:RegisterEffect(ee) +end +function c95200000.ctcon2(e,re) + return re:GetOwner()~=e:GetOwner() +end +function c95200000.op(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_REMOVED,0,1,nil,95200000) then + Duel.DisableShuffleCheck() + Duel.SendtoDeck(c,nil,-2,REASON_RULE) + else + Duel.Remove(c,POS_FACEUP,REASON_RULE) + Duel.Hint(HINT_CARD,0,95200000) + end + if c:GetPreviousLocation()==LOCATION_HAND then + Duel.Draw(tp,1,REASON_RULE) + end +end +function c95200000.start(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,95200000) + local ac=math.random(1,c95200000.commct) + local code=c95200000.command[ac] + local p=Duel.GetTurnPlayer() + if Duel.GetLocationCount(p,LOCATION_SZONE)<=0 then return end + local tc=Duel.CreateToken(p,code) + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if of then Duel.Destroy(of,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveToField(tc,p,p,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + Duel.Hint(HINT_MESSAGE,tp,aux.Stringid(95200000,0)) + Duel.Hint(HINT_MESSAGE,1-tp,aux.Stringid(95200000,0)) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + Duel.SendtoDeck(tc,nil,-2,REASON_RULE) +end +c95200000.command = { + 95200001,95200002,95200003,95200004,95200005,95200006,95200007,95200008,95200009, + 95200010,95200011,95200012,95200013,95200014,95200015,95200016,95200017,95200018, + 95200019,95200020,95200021,95200022,95200023,95200024,95200025,95200101,95200102} +c95200000.commct=27 diff --git a/script/c95200001.lua b/script/c95200001.lua new file mode 100644 index 00000000..848a9356 --- /dev/null +++ b/script/c95200001.lua @@ -0,0 +1,29 @@ +--Commande Duel 1 +function c95200001.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200001.target) + e1:SetOperation(c95200001.activate) + c:RegisterEffect(e1) +end +function c95200001.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,PLAYER_ALL,LOCATION_DECK) +end +function c95200001.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_DECK,0,nil) + local g2=Duel.GetMatchingGroup(Card.IsAbleToHand,1-tp,LOCATION_DECK,0,nil) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local sg2=g2:Select(1-tp,1,1,nil) + Duel.ConfirmCards(1-tp,sg1) + Duel.ConfirmCards(tp,sg2) + sg1:Merge(sg2) + Duel.SendtoHand(sg1,nil,REASON_EFFECT) + end +end diff --git a/script/c95200002.lua b/script/c95200002.lua new file mode 100644 index 00000000..08e40022 --- /dev/null +++ b/script/c95200002.lua @@ -0,0 +1,27 @@ +--おろかな埋葬 +function c95200002.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200002.target) + e1:SetOperation(c95200002.activate) + c:RegisterEffect(e1) +end +function c95200002.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,PLAYER_ALL,LOCATION_DECK) +end +function c95200002.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(Card.IsAbleToGrave,tp,LOCATION_DECK,0,nil) + local g2=Duel.GetMatchingGroup(Card.IsAbleToGrave,1-tp,LOCATION_DECK,0,nil) + if g1:GetCount()>0 and g2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TOGRAVE) + local sg2=g2:Select(1-tp,1,1,nil) + sg1:Merge(sg2) + Duel.SendtoGrave(sg1,nil,REASON_EFFECT) + end +end diff --git a/script/c95200003.lua b/script/c95200003.lua new file mode 100644 index 00000000..a7341d27 --- /dev/null +++ b/script/c95200003.lua @@ -0,0 +1,30 @@ +--Commande Duel 3 +function c95200003.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95200003.activate) + c:RegisterEffect(e1) +end +function c95200003.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetDecktopGroup(tp,1) + local g2=Duel.GetDecktopGroup(1-tp,1) + if g1:GetCount()<=0 or g2:GetCount()<=0 then return end + Duel.ConfirmDecktop(tp,1) + Duel.ConfirmDecktop(1-tp,1) + local tc=g1:GetFirst() + if tc:IsType(TYPE_MONSTER) and tc:IsAbleToHand() then + Duel.DisableShuffleCheck() + Duel.SendtoHand(g1,nil,REASON_EFFECT) + Duel.ShuffleHand(tp) + end + tc=g2:GetFirst() + if tc:IsType(TYPE_MONSTER) and tc:IsAbleToHand() then + Duel.DisableShuffleCheck() + Duel.SendtoHand(g2,nil,REASON_EFFECT) + Duel.ShuffleHand(1-tp) + end +end + + \ No newline at end of file diff --git a/script/c95200004.lua b/script/c95200004.lua new file mode 100644 index 00000000..cf6b9fd9 --- /dev/null +++ b/script/c95200004.lua @@ -0,0 +1,28 @@ +--墓穴の道連れ +function c95200004.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200004.target) + e1:SetOperation(c95200004.activate) + c:RegisterEffect(e1) +end +function c95200004.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,PLAYER_ALL,1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c95200004.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local g2=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + local sg1=g1:RandomSelect(1-tp,1) + local sg2=g2:RandomSelect(tp,1) + sg1:Merge(sg2) + Duel.SendtoGrave(sg1,REASON_DISCARD+REASON_EFFECT) + Duel.BreakEffect() + Duel.Draw(tp,1,REASON_EFFECT) + Duel.Draw(1-tp,1,REASON_EFFECT) +end diff --git a/script/c95200005.lua b/script/c95200005.lua new file mode 100644 index 00000000..08affef7 --- /dev/null +++ b/script/c95200005.lua @@ -0,0 +1,27 @@ +--Commande Duel 5 +function c95200005.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200005.target) + e1:SetOperation(c95200005.activate) + c:RegisterEffect(e1) +end +function c95200005.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,PLAYER_ALL,LOCATION_GRAVE) +end +function c95200005.activate(e,tp,eg,ep,ev,re,r,rp) + local tc1=Duel.GetFieldCard(tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(tp,LOCATION_GRAVE,0)-1) + local tc2=Duel.GetFieldCard(1-tp,LOCATION_GRAVE,Duel.GetFieldGroupCount(1-tp,LOCATION_GRAVE,0)-1) + if tc1 and tc1:IsAbleToHand() and tc2 and tc2:IsAbleToHand() then + local g=Group.CreateGroup() + g:AddCard(tc1) + g:AddCard(tc2) + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc1) + Duel.ConfirmCards(tp,tc2) + end +end diff --git a/script/c95200006.lua b/script/c95200006.lua new file mode 100644 index 00000000..29c3fef3 --- /dev/null +++ b/script/c95200006.lua @@ -0,0 +1,30 @@ +--エクスチェンジ +function c95200006.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200006.target) + e1:SetOperation(c95200006.activate) + c:RegisterEffect(e1) +end +function c95200006.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,PLAYER_ALL,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,2) +end +function c95200006.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local g2=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_TODECK) + local sg2=g2:Select(1-tp,1,1,nil) + sg1:Merge(sg2) + Duel.SendtoDeck(sg1,nil,1,REASON_EFFECT) + Duel.BreakEffect() + Duel.Draw(tp,2,REASON_EFFECT) + Duel.Draw(1-tp,2,REASON_EFFECT) +end diff --git a/script/c95200007.lua b/script/c95200007.lua new file mode 100644 index 00000000..7d91f97b --- /dev/null +++ b/script/c95200007.lua @@ -0,0 +1,26 @@ +--Commande Duel 7 +function c95200007.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95200007.activate) + c:RegisterEffect(e1) +end +function c95200007.filter(c) + return c:IsType(TYPE_TRAP) and c:IsSSetable() +end +function c95200007.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c95200007.filter,tp,LOCATION_DECK,0,nil) + local g2=Duel.GetMatchingGroup(c95200007.filter,1-tp,LOCATION_DECK,0,nil) + if g1:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(60082869,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) + local sg1=g1:Select(tp,1,1,nil) + Duel.SSet(tp,sg1:GetFirst()) + end + if g2:GetCount()>0 and Duel.GetLocationCount(1-tp,LOCATION_SZONE)>0 and Duel.SelectYesNo(1-tp,aux.Stringid(60082869,0)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SET) + local sg2=g2:Select(1-tp,1,1,nil) + Duel.SSet(1-tp,sg2:GetFirst()) + end +end diff --git a/script/c95200008.lua b/script/c95200008.lua new file mode 100644 index 00000000..f5ce6c23 --- /dev/null +++ b/script/c95200008.lua @@ -0,0 +1,34 @@ +--暗黒界の雷 +function c95200008.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200008.target) + e1:SetOperation(c95200008.activate) + c:RegisterEffect(e1) +end +function c95200008.filter(c) + return c:IsDestructable() and c:IsFacedown() +end +function c95200008.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,1,0,0) +end +function c95200008.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c95200008.filter,tp,0,LOCATION_ONFIELD,nil) + local g2=Duel.GetMatchingGroup(c95200008.filter,1-tp,0,LOCATION_ONFIELD,nil) + local g=Group.CreateGroup() + if g1:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(8041569,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local sg1=g1:Select(tp,1,1,nil) + g:Merge(sg1) + end + if g2:GetCount()>0 and Duel.SelectYesNo(1-tp,aux.Stringid(8041569,0)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_DESTROY) + local sg2=g2:Select(1-tp,1,1,nil) + g:Merge(sg2) + end + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c95200009.lua b/script/c95200009.lua new file mode 100644 index 00000000..8de0267b --- /dev/null +++ b/script/c95200009.lua @@ -0,0 +1,43 @@ +--Commande Duel 9 +function c95200009.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_HANDES+CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200009.target) + e1:SetOperation(c95200009.activate) + c:RegisterEffect(e1) +end +function c95200009.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,PLAYER_ALL,1) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,PLAYER_ALL,LOCATION_GRAVE) +end +function c95200009.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local g2=Duel.GetFieldGroup(1-tp,LOCATION_HAND,0) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD) + local sg1=g1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_DISCARD) + local sg2=g2:Select(1-tp,1,1,nil) + sg1:Merge(sg2) + Duel.SendtoGrave(sg1,REASON_EFFECT+REASON_DISCARD) + local hg1=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_GRAVE,0,nil) + local hg2=Duel.GetMatchingGroup(Card.IsAbleToHand,1-tp,LOCATION_GRAVE,0,nil) + if hg1:GetCount()>0 and hg2:GetCount()>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local hsg1=hg1:Select(tp,1,1,nil) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local hsg2=hg2:Select(1-tp,1,1,nil) + Duel.ConfirmCards(1-tp,hsg1) + Duel.ConfirmCards(tp,hsg2) + local g=Group.CreateGroup() + g:Merge(hsg1) + g:Merge(hsg2) + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,hsg1) + Duel.ConfirmCards(tp,hsg2) + end +end diff --git a/script/c95200010.lua b/script/c95200010.lua new file mode 100644 index 00000000..d6f358f8 --- /dev/null +++ b/script/c95200010.lua @@ -0,0 +1,28 @@ +--Commande Duel 10 +function c95200010.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200010.target) + e1:SetOperation(c95200010.activate) + c:RegisterEffect(e1) +end +function c95200010.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,PLAYER_ALL,LOCATION_HAND) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c95200010.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + local g2=Duel.GetFieldGroup(tp,0,LOCATION_HAND) + if g1:GetCount()==0 or g2:GetCount()==0 then return end + Duel.SendtoDeck(g1,nil,2,REASON_EFFECT) + Duel.SendtoDeck(g2,nil,2,REASON_EFFECT) + Duel.ShuffleDeck(tp) + Duel.ShuffleDeck(1-tp) + Duel.BreakEffect() + Duel.Draw(tp,g1:GetCount(),REASON_EFFECT) + Duel.Draw(1-tp,g2:GetCount(),REASON_EFFECT) +end diff --git a/script/c95200011.lua b/script/c95200011.lua new file mode 100644 index 00000000..5e4c6e39 --- /dev/null +++ b/script/c95200011.lua @@ -0,0 +1,60 @@ +--Commande duel 11 +function c95200011.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200011.target) + e1:SetOperation(c95200011.operation) + c:RegisterEffect(e1) +end +function c95200011.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,PLAYER_ALL,2000) +end +function c95200011.operation(e,tp,eg,ep,ev,re,r,rp) + + while winnerTp<1 or winnerOp<1 do + -- your Rock (1) Paper (2) Scissor (3) + local choiceTp=Duel.SelectOption(tp,aux.Stringid(95200011,0),aux.Stringid(95200011,1),aux.Stringid(95200011,2)) + + -- opponent Rock (1) Paper (2) Scissor (3) + local choiceOp=Duel.SelectOption(1-tp,aux.Stringid(95200011,0),aux.Stringid(95200011,1),aux.Stringid(95200011,2)) + + if choiceTp==1 then + -- you=Rock op=Paper + if choiceOp==2 then + winnerOp=1 + end + -- you=Rock op=Scissor + if choiceOp==3 then + winnerTp=1 + end + end + if choiceTp==2 then + -- you=Paper op=Rock + if choiceOp==1 then + winnerTp=1 + end + -- you=Paper op=Scissor + if choiceOp==3 then + winnerOp=1 + end + end + if choiceTp==3 then + -- you=Scissor op=Rock + if choiceOp==1 then + winnerOp=1 + end + -- you=Scissor op=Paper + if choiceOp==2 then + winnerTp=1 + end + end + if choiceTp==1 then + Duel.Recover(tp,2000,REASON_EFFECT) + else + Duel.Recover(1-tp,2000,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95200012.lua b/script/c95200012.lua new file mode 100644 index 00000000..adcf1bef --- /dev/null +++ b/script/c95200012.lua @@ -0,0 +1,69 @@ +--Commande duel 12 +function c95200012.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200012.target) + e1:SetOperation(c95200012.operation) + c:RegisterEffect(e1) +end +function c95200012.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,PLAYER_ALL,2000) +end +function c95200012.operation(e,tp,eg,ep,ev,re,r,rp) + while winnerTp<1 or winnerOp<1 do + -- your Rock (1) Paper (2) Scissor (3) + local choiceTp=Duel.SelectOption(tp,aux.Stringid(95200012,0),aux.Stringid(95200012,1),aux.Stringid(95200012,2)) + + -- opponent Rock (1) Paper (2) Scissor (3) + local choiceOp=Duel.SelectOption(1-tp,aux.Stringid(95200012,0),aux.Stringid(95200012,1),aux.Stringid(95200012,2)) + + if choiceTp==1 then + -- you=Rock op=Paper + if choiceOp==2 then + winnerOp=1 + end + -- you=Rock op=Scissor + if choiceOp==3 then + winnerTp=1 + end + end + if choiceTp==2 then + -- you=Paper op=Rock + if choiceOp==1 then + winnerTp=1 + end + -- you=Paper op=Scissor + if choiceOp==3 then + winnerOp=1 + end + end + if choiceTp==3 then + -- you=Scissor op=Rock + if choiceOp==1 then + winnerOp=1 + end + -- you=Scissor op=Paper + if choiceOp==2 then + winnerTp=1 + end + end + if choiceTp==1 then + if not Duel.IsExistingTarget(c45894482.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) then return end + local g=Duel.SelectTarget(tp,c45894482.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end + else + if not Duel.IsExistingTarget(c45894482.filter,1-tp,LOCATION_GRAVE,0,1,nil,e,tp) then return end + local g=Duel.SelectTarget(1-tp,c45894482.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,1-tp,1-tp,false,false,POS_FACEUP) + end + end +end \ No newline at end of file diff --git a/script/c95200013.lua b/script/c95200013.lua new file mode 100644 index 00000000..acf27a86 --- /dev/null +++ b/script/c95200013.lua @@ -0,0 +1,60 @@ +--Commande duel 13 +function c95200013.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200013.target) + e1:SetOperation(c95200013.operation) + c:RegisterEffect(e1) +end +function c95200013.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) +end +function c95200013.operation(e,tp,eg,ep,ev,re,r,rp) + + while winnerTp<1 or winnerOp<1 do + -- your Rock (1) Paper (2) Scissor (3) + local choiceTp=Duel.SelectOption(tp,aux.Stringid(95200013,0),aux.Stringid(95200013,1),aux.Stringid(95200013,2)) + + -- opponent Rock (1) Paper (2) Scissor (3) + local choiceOp=Duel.SelectOption(1-tp,aux.Stringid(95200013,0),aux.Stringid(95200013,1),aux.Stringid(95200013,2)) + + if choiceTp==1 then + -- you=Rock op=Paper + if choiceOp==2 then + winnerOp=1 + end + -- you=Rock op=Scissor + if choiceOp==3 then + winnerTp=1 + end + end + if choiceTp==2 then + -- you=Paper op=Rock + if choiceOp==1 then + winnerTp=1 + end + -- you=Paper op=Scissor + if choiceOp==3 then + winnerOp=1 + end + end + if choiceTp==3 then + -- you=Scissor op=Rock + if choiceOp==1 then + winnerOp=1 + end + -- you=Scissor op=Paper + if choiceOp==2 then + winnerTp=1 + end + end + if choiceTp==1 then + Duel.Draw(tp,1,REASON_EFFECT) + else + Duel.Draw(1-tp,1,REASON_EFFECT) + end +end \ No newline at end of file diff --git a/script/c95200014.lua b/script/c95200014.lua new file mode 100644 index 00000000..091d67a4 --- /dev/null +++ b/script/c95200014.lua @@ -0,0 +1,29 @@ +--Commande Duel 14 +function c95200014.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200014.target) + e1:SetOperation(c95200014.activate) + c:RegisterEffect(e1) +end +function c95200014.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,g:GetCount(),0,0) +end +function c95200014.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsCanTurnSet,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEDOWN_DEFENSE) + end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_CHANGE_POSITION) + e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c95200015.lua b/script/c95200015.lua new file mode 100644 index 00000000..8accb009 --- /dev/null +++ b/script/c95200015.lua @@ -0,0 +1,35 @@ +--Commande Duel 15 +function c95200015.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200015.tg) + e1:SetOperation(c95200015.op) + c:RegisterEffect(e1) +end +function c95200015.tg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if Duel.GetLP(tp)Duel.GetLP(1-tp) then + Duel.SetTargetPlayer(1-tp) + end + Duel.SetTargetParam(2000) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,2000) +end +function c95200015.op(e,tp,eg,ep,ev,re,r,rp) + local p=PLAYER_ALL + if Duel.GetLP(tp)Duel.GetLP(1-tp) then + p=1-tp + end + local d=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM) + if p~=PLAYER_ALL then + Duel.Recover(p,d,REASON_EFFECT) + end +end diff --git a/script/c95200016.lua b/script/c95200016.lua new file mode 100644 index 00000000..d59477f5 --- /dev/null +++ b/script/c95200016.lua @@ -0,0 +1,22 @@ +--Commande Duel 16 +function c95200016.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95200016.activate) + c:RegisterEffect(e1) +end +function c95200016.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SET_BASE_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER+ATTRIBUTE_FIRE)) + e1:SetValue(c95200016.atkval) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95200016.atkval(e,c) + return c:GetBaseAttack()*2 +end diff --git a/script/c95200017.lua b/script/c95200017.lua new file mode 100644 index 00000000..c6d0dd0a --- /dev/null +++ b/script/c95200017.lua @@ -0,0 +1,43 @@ +--Commande Duel 17 +function c95200017.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95200017.activate) + c:RegisterEffect(e1) +end +function c95200017.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_ADJUST) + e1:SetOperation(c95200017.operation) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95200017.filter(c) + return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER+ATTRIBUTE_EARTH) and c:GetFlagEffect(95200017)==0 +end +function c95200017.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c95200017.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local atk=tc:GetAttack() + local def=tc:GetDefense() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(def) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_SET_DEFENSE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(atk) + tc:RegisterEffect(e2) + tc:RegisterFlagEffect(95200017,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + tc=g:GetNext() + end +end diff --git a/script/c95200018.lua b/script/c95200018.lua new file mode 100644 index 00000000..009c358b --- /dev/null +++ b/script/c95200018.lua @@ -0,0 +1,19 @@ +--Commande Duel 18 +function c95200018.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95200018.activate) + c:RegisterEffect(e1) +end +function c95200018.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_FIRE+ATTRIBUTE_WIND)) + e1:SetValue(1) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c95200019.lua b/script/c95200019.lua new file mode 100644 index 00000000..b0d29370 --- /dev/null +++ b/script/c95200019.lua @@ -0,0 +1,18 @@ +--Commande Duel 19 +function c95200019.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95200019.activate) + c:RegisterEffect(e1) +end +function c95200019.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_INDESTRUCTABLE) + e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e1:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WIND+ATTRIBUTE_EARTH)) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end diff --git a/script/c95200020.lua b/script/c95200020.lua new file mode 100644 index 00000000..bcdd01b6 --- /dev/null +++ b/script/c95200020.lua @@ -0,0 +1,22 @@ +--Commande Duel 20 +function c95200020.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95200020.activate) + c:RegisterEffect(e1) +end +function c95200020.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetProperty(EFFECT_FLAG_IGNORE_RANGE) + e1:SetTargetRange(1,1) + e1:SetTarget(c95200020.actfilter) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c95200020.actfilter(e,c) + return c:IsAttribute(ATTRIBUTE_LIGHT+ATTRIBUTE_DARK) +end diff --git a/script/c95200021.lua b/script/c95200021.lua new file mode 100644 index 00000000..0b820a6e --- /dev/null +++ b/script/c95200021.lua @@ -0,0 +1,23 @@ +--Commande Duel 21 +function c95200021.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95200021.activate) + c:RegisterEffect(e1) +end +function c95200021.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetValue(0) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end diff --git a/script/c95200022.lua b/script/c95200022.lua new file mode 100644 index 00000000..9e04de7e --- /dev/null +++ b/script/c95200022.lua @@ -0,0 +1,15 @@ +--Commande Duel 22 +function c95200022.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c95200022.activate) + c:RegisterEffect(e1) +end +function c95200022.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetOverlayGroup(tp,1,1) + if g:GetCount()~=0 then + Duel.SendtoGrave(g,REASON_EFFECT) + end +end diff --git a/script/c95200023.lua b/script/c95200023.lua new file mode 100644 index 00000000..1496fd9a --- /dev/null +++ b/script/c95200023.lua @@ -0,0 +1,23 @@ +--Commande Duel 23 +function c95200023.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200023.target) + e1:SetOperation(c95200023.activate) + c:RegisterEffect(e1) +end +function c95200023.filter(c) + return c:IsFaceup() and c:GetLevel()==4 and c:IsAbleToHand() +end +function c95200023.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local g=Duel.GetMatchingGroup(c95200023.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0) +end +function c95200023.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c95200023.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.SendtoHand(g,nil,REASON_EFFECT) +end diff --git a/script/c95200024.lua b/script/c95200024.lua new file mode 100644 index 00000000..66399dab --- /dev/null +++ b/script/c95200024.lua @@ -0,0 +1,71 @@ +--Commande duel 25 +function c95200024.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_COIN) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200024.target) + e1:SetOperation(c95200024.operation) + c:RegisterEffect(e1) +end +function c95200024.filter(c) + return c:IsFaceup() and c:GetLevel()>0 +end +function c95200024.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,PLAYER_ALL,1) +end +function c95200024.operation(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c95200024.filter,tp,LOCATION_MZONE,0,nil) + local g2=Duel.GetMatchingGroup(c95200024.filter,1-tp,LOCATION_MZONE,0,nil) + local ct1=g1:GetCount() + local ct2=g2:GetCount() + if ct1==0 and ct2==0 then return end + local op1 + local op2 + if ct1>0 then + op1=Duel.SelectYesNo(tp,aux.Stringid(95200024,0)) + end + if ct2>0 then + op2=Duel.SelectYesNo(1-tp,aux.Stringid(95200024,0)) + end + --true=wearing, false=not wearing + local res=Duel.TossCoin(tp,1) + local check + if res==1 then + check=true + else + check=false + end + if ct1>0 then + if ((op1 and check) or (not op1 and not check)) and Duel.SelectYesNo(tp,aux.Stringid(95200024,1)) then + local lv=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12) + local tc=g1:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g1:GetNext() + end + end + end + if ct2>0 then + if ((op2 and check) or (not op2 and not check)) and Duel.SelectYesNo(1-tp,aux.Stringid(95200024,1)) then + local lv=Duel.AnnounceNumber(1-tp,1,2,3,4,5,6,7,8,9,10,11,12) + local tc=g2:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(lv) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g2:GetNext() + end + end + end +end diff --git a/script/c95200025.lua b/script/c95200025.lua new file mode 100644 index 00000000..1d18b997 --- /dev/null +++ b/script/c95200025.lua @@ -0,0 +1,33 @@ +--Commande duel 25 +function c95200025.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_COIN+CATEGORY_RECOVER) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200025.target) + e1:SetOperation(c95200025.operation) + c:RegisterEffect(e1) +end +function c95200025.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,PLAYER_ALL,1) +end +function c95200025.operation(e,tp,eg,ep,ev,re,r,rp) + local op1=Duel.SelectYesNo(tp,aux.Stringid(95200025,0)) + local op2=Duel.SelectYesNo(1-tp,aux.Stringid(95200025,0)) + --true=wearing, false=not wearing + local res=Duel.TossCoin(tp,1) + local check + if res==1 then + check=true + else + check=false + end + if (op1 and check) or (not op1 and not check) then + Duel.Recover(tp,800,REASON_EFFECT) + end + if ((op2 and check) or (not op2 and not check)) then + Duel.Recover(1-tp,800,REASON_EFFECT) + end +end diff --git a/script/c95200101.lua b/script/c95200101.lua new file mode 100644 index 00000000..c4e266c9 --- /dev/null +++ b/script/c95200101.lua @@ -0,0 +1,33 @@ +--Commande Duel JP001 +function c95200101.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200101.target) + e1:SetOperation(c95200101.activate) + c:RegisterEffect(e1) +end +function c95200101.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,true,false) and c.illegal and c:IsType(TYPE_MONSTER) +end +function c95200101.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,PLAYER_ALL,LOCATION_DECK+LOCATION_EXTRA) +end +function c95200101.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c95200101.filter,tp,LOCATION_DECK+LOCATION_EXTRA,0,nil,e,tp) + local g2=Duel.GetMatchingGroup(c95200101.filter,1-tp,LOCATION_DECK+LOCATION_EXTRA,0,nil,e,tp) + if g1:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(102380,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + Duel.SpecialSummonStep(sg1:GetFirst(),0,tp,tp,true,false,POS_FACEUP) + end + if g2:GetCount()>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and Duel.SelectYesNo(1-tp,aux.Stringid(102380,0)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(1-tp,1,1,nil) + Duel.SpecialSummonStep(sg2:GetFirst(),0,1-tp,1-tp,true,false,POS_FACEUP) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c95200102.lua b/script/c95200102.lua new file mode 100644 index 00000000..63d83fec --- /dev/null +++ b/script/c95200102.lua @@ -0,0 +1,37 @@ +--Commande Duel JP002 +function c95200102.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_DRAW+CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c95200102.target) + e1:SetOperation(c95200102.activate) + c:RegisterEffect(e1) +end +function c95200102.filter(c,e,tp) + return c:IsCanBeSpecialSummoned(e,0,tp,true,false) and c.illegal and c:IsType(TYPE_MONSTER) +end +function c95200102.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,PLAYER_ALL,LOCATION_DECK+LOCATION_EXTRA) +end +function c95200102.activate(e,tp,eg,ep,ev,re,r,rp) + local g1=Duel.GetMatchingGroup(c95200102.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + local g2=Duel.GetMatchingGroup(c95200102.filter,1-tp,LOCATION_EXTRA,0,nil,e,tp) + if g1:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.SelectYesNo(tp,aux.Stringid(102380,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g1:Select(tp,1,1,nil) + if Duel.SpecialSummonStep(sg1:GetFirst(),0,tp,tp,true,false,POS_FACEUP) then + Duel.Draw(tp,1,REASON_EFFECT) + end + end + if g2:GetCount()>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and Duel.SelectYesNo(1-tp,aux.Stringid(102380,0)) then + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON) + local sg2=g2:Select(1-tp,1,1,nil) + if Duel.SpecialSummonStep(sg2:GetFirst(),0,1-tp,1-tp,true,false,POS_FACEUP) then + Duel.Draw(1-tp,1,REASON_EFFECT) + end + end + Duel.SpecialSummonComplete() +end diff --git a/script/c95220856.lua b/script/c95220856.lua index ea4b45b1..2b5551ef 100644 --- a/script/c95220856.lua +++ b/script/c95220856.lua @@ -1,19 +1,19 @@ ---怨霊の湿地帯 -function c95220856.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --attack res - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_ATTACK) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetTarget(c95220856.target) - c:RegisterEffect(e2) -end -function c95220856.target(e,c) - return c:IsStatus(STATUS_SUMMON_TURN+STATUS_FLIP_SUMMON_TURN+STATUS_SPSUMMON_TURN) -end +--怨霊の湿地帯 +function c95220856.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --attack res + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetTarget(c95220856.target) + c:RegisterEffect(e2) +end +function c95220856.target(e,c) + return c:IsStatus(STATUS_SUMMON_TURN+STATUS_FLIP_SUMMON_TURN+STATUS_SPSUMMON_TURN) +end diff --git a/script/c95239444.lua b/script/c95239444.lua index 97a0fab4..ec42c75a 100644 --- a/script/c95239444.lua +++ b/script/c95239444.lua @@ -16,6 +16,7 @@ function c95239444.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(95239444,1)) e2:SetCategory(CATEGORY_TOGRAVE) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) diff --git a/script/c95254840.lua b/script/c95254840.lua index b6159125..6034e23d 100644 --- a/script/c95254840.lua +++ b/script/c95254840.lua @@ -1,36 +1,37 @@ ---ドタキャン -function c95254840.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c95254840.condition) - e1:SetTarget(c95254840.target) - e1:SetOperation(c95254840.activate) - c:RegisterEffect(e1) -end -function c95254840.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():IsControler(1-tp) -end -function c95254840.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,LOCATION_MZONE,0,1,nil) end -end -function c95254840.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,LOCATION_MZONE,0,nil) - if g:GetCount()>0 then - Duel.ChangePosition(g,POS_FACEUP_DEFENSE) - end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_TO_GRAVE_REDIRECT) - e1:SetTargetRange(LOCATION_MZONE,0) - e1:SetTarget(c95254840.rmtg) - e1:SetValue(LOCATION_HAND) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) - end -end -function c95254840.rmtg(e,c) - return c:IsSetCard(0x9f) and c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) -end +--ドタキャン +function c95254840.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c95254840.condition) + e1:SetTarget(c95254840.target) + e1:SetOperation(c95254840.activate) + c:RegisterEffect(e1) +end +function c95254840.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():IsControler(1-tp) +end +function c95254840.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAttackPos,tp,LOCATION_MZONE,0,1,nil) end +end +function c95254840.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsAttackPos,tp,LOCATION_MZONE,0,nil) + if g:GetCount()>0 then + Duel.ChangePosition(g,POS_FACEUP_DEFENSE) + end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_TO_GRAVE_REDIRECT) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetTargetRange(LOCATION_MZONE,0) + e1:SetTarget(c95254840.rmtg) + e1:SetValue(LOCATION_HAND) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) + end +end +function c95254840.rmtg(e,c) + return c:IsSetCard(0x9f) and c:IsReason(REASON_DESTROY) and c:IsReason(REASON_BATTLE+REASON_EFFECT) +end diff --git a/script/c95286165.lua b/script/c95286165.lua index ed26710e..4faf6084 100644 --- a/script/c95286165.lua +++ b/script/c95286165.lua @@ -20,23 +20,23 @@ function c95286165.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) local g=Duel.SelectTarget(tp,c95286165.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) end -function c95286165.mgfilter(c,e,tp,fusc) - return not c:IsControler(tp) or not c:IsLocation(LOCATION_GRAVE) - or bit.band(c:GetReason(),0x40008)~=0x40008 or c:GetReasonCard()~=fusc - or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsHasEffect(EFFECT_NECRO_VALLEY) +function c95286165.mgfilter(c,e,tp,fusc,mg) + return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) + and bit.band(c:GetReason(),0x40008)==0x40008 and c:GetReasonCard()==fusc + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and fusc:CheckFusionMaterial(mg,c) end function c95286165.activate(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if not (tc:IsRelateToEffect(e) and tc:IsFaceup()) then return end local mg=tc:GetMaterial() - local sumable=true + local ct=mg:GetCount() local sumtype=tc:GetSummonType() - if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)==0 or bit.band(sumtype,SUMMON_TYPE_FUSION)~=SUMMON_TYPE_FUSION or mg:GetCount()==0 - or mg:GetCount()>Duel.GetLocationCount(tp,LOCATION_MZONE) - or mg:IsExists(c95286165.mgfilter,1,nil,e,tp,tc) then - sumable=false - end - if sumable and Duel.SelectYesNo(tp,aux.Stringid(95286165,0)) then + if Duel.SendtoDeck(tc,nil,0,REASON_EFFECT)~=0 and bit.band(sumtype,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION + and ct>0 and ct<=Duel.GetLocationCount(tp,LOCATION_MZONE) + and mg:FilterCount(aux.NecroValleyFilter(c95286165.mgfilter),nil,e,tp,tc,mg)==ct + and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.SelectYesNo(tp,aux.Stringid(95286165,0)) then Duel.BreakEffect() Duel.SpecialSummon(mg,0,tp,tp,false,false,POS_FACEUP) end diff --git a/script/c95291684.lua b/script/c95291684.lua index f97d4871..82d9d713 100644 --- a/script/c95291684.lua +++ b/script/c95291684.lua @@ -1,85 +1,85 @@ ---異次元の一角戦士 -function c95291684.initial_effect(c) - c:EnableReviveLimit() - --special summon rule - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c95291684.sprcon) - e1:SetValue(1) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(95291684,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCondition(c95291684.spcon) - e2:SetTarget(c95291684.sptg) - e2:SetOperation(c95291684.spop) - c:RegisterEffect(e2) - --cannot normal summon - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_SPSUMMON_COST) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCost(c95291684.spcost) - e3:SetOperation(c95291684.spcop) - c:RegisterEffect(e3) -end -function c95291684.cfilter(c) - return c:IsFaceup() and c:IsType(TYPE_TUNER) -end -function c95291684.sprcon(e,c) - if c==nil then return true end - local tp=c:GetControler() - return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c95291684.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c95291684.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 -end -function c95291684.spfilter(c,e,tp) - return c:IsFaceup() and c:IsLevelBelow(3) and not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c95291684.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c95291684.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c95291684.spfilter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c95291684.spfilter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c95291684.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - end -end -function c95291684.spcost(e,c,tp) - return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 -end -function c95291684.spcop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) -end +--異次元の一角戦士 +function c95291684.initial_effect(c) + c:EnableReviveLimit() + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c95291684.sprcon) + e1:SetValue(1) + c:RegisterEffect(e1) + --special summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95291684,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCondition(c95291684.spcon) + e2:SetTarget(c95291684.sptg) + e2:SetOperation(c95291684.spop) + c:RegisterEffect(e2) + --cannot normal summon + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SPSUMMON_COST) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCost(c95291684.spcost) + e3:SetOperation(c95291684.spcop) + c:RegisterEffect(e3) +end +function c95291684.cfilter(c) + return c:IsFaceup() and c:IsType(TYPE_TUNER) +end +function c95291684.sprcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c95291684.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c95291684.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 +end +function c95291684.spfilter(c,e,tp) + return c:IsFaceup() and c:IsLevelBelow(3) and not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c95291684.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c95291684.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c95291684.spfilter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c95291684.spfilter,tp,LOCATION_REMOVED,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c95291684.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + end +end +function c95291684.spcost(e,c,tp) + return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 +end +function c95291684.spcop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end diff --git a/script/c95395761.lua b/script/c95395761.lua index a0b43331..1be2a670 100644 --- a/script/c95395761.lua +++ b/script/c95395761.lua @@ -47,9 +47,9 @@ function c95395761.eqop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end if c:IsFacedown() or not c:IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectMatchingCard(tp,c95395761.filter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c95395761.filter),tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil) local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then + if tc then if not Duel.Equip(tp,tc,c,true) then return end local e1=Effect.CreateEffect(c) e1:SetProperty(EFFECT_FLAG_COPY_INHERIT+EFFECT_FLAG_OWNER_RELATE) diff --git a/script/c95401059.lua b/script/c95401059.lua index 44b214fb..b21cafc7 100644 --- a/script/c95401059.lua +++ b/script/c95401059.lua @@ -1,54 +1,54 @@ ---オルシャドール-セフィラルーツ -function c95401059.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) - e2:SetTargetRange(1,0) - e2:SetTarget(c95401059.splimit) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - e3:SetCountLimit(1,95401059) - e3:SetCondition(c95401059.condition1) - e3:SetTarget(c95401059.target) - e3:SetOperation(c95401059.operation) - c:RegisterEffect(e3) - local e4=e3:Clone() - e4:SetCode(EVENT_TO_GRAVE) - e4:SetCondition(aux.TRUE) - c:RegisterEffect(e4) -end -function c95401059.splimit(e,c,sump,sumtype,sumpos,targetp) - if c:IsSetCard(0x9d) or c:IsSetCard(0xc4) then return false end - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c95401059.condition1(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM -end -function c95401059.filter(c,e,tp) - return (c:GetSequence()==6 or c:GetSequence()==7) - and c:IsSetCard(0xc4) and not c:IsCode(95401059) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c95401059.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c95401059.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c95401059.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c95401059.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c95401059.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--オルシャドール-セフィラルーツ +function c95401059.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetTargetRange(1,0) + e2:SetTarget(c95401059.splimit) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + e3:SetCountLimit(1,95401059) + e3:SetCondition(c95401059.condition1) + e3:SetTarget(c95401059.target) + e3:SetOperation(c95401059.operation) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(aux.TRUE) + c:RegisterEffect(e4) +end +function c95401059.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0x9d) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c95401059.condition1(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c95401059.filter(c,e,tp) + return (c:GetSequence()==6 or c:GetSequence()==7) + and c:IsSetCard(0xc4) and not c:IsCode(95401059) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c95401059.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_SZONE) and chkc:IsControler(tp) and c95401059.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c95401059.filter,tp,LOCATION_SZONE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c95401059.filter,tp,LOCATION_SZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c95401059.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c95403418.lua b/script/c95403418.lua index 0823ee2e..f442e7e3 100644 --- a/script/c95403418.lua +++ b/script/c95403418.lua @@ -1,79 +1,79 @@ ---スターダストン -function c95403418.initial_effect(c) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - c:RegisterEffect(e1) - --special summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_SPSUMMON_PROC) - e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e2:SetRange(LOCATION_HAND) - e2:SetCondition(c95403418.spcon) - e2:SetOperation(c95403418.spop) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetCode(EFFECT_CANNOT_ACTIVATE) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(0,1) - e3:SetValue(c95403418.aclimit) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetCode(EFFECT_CANNOT_FLIP_SUMMON) - e4:SetRange(LOCATION_MZONE) - e4:SetTargetRange(0,1) - c:RegisterEffect(e4) - local e5=e4:Clone() - e5:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - c:RegisterEffect(e5) - --self destroy - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e6:SetRange(LOCATION_MZONE) - e6:SetCode(EFFECT_SELF_DESTROY) - e6:SetCondition(c95403418.descon) - c:RegisterEffect(e6) -end -function c95403418.aclimit(e,re,tp) - local rc=re:GetHandler() - return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rc:IsLocation(LOCATION_SZONE) and rc:IsFacedown() -end -function c95403418.filter(c) - return c:IsFaceup() and c:IsSetCard(0x80) and c:IsAbleToGraveAsCost() -end -function c95403418.spcon(e,c) - if c==nil then return true end - local ft=Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE) - if ft<=0 then ft=-ft+1 else ft=1 end - return Duel.IsExistingMatchingCard(c95403418.filter,c:GetControler(),LOCATION_MZONE,0,ft,nil) -end -function c95403418.spop(e,tp,eg,ep,ev,re,r,rp,c) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then ft=-ft+1 else ft=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c95403418.filter,tp,LOCATION_MZONE,0,ft,5,nil) - local ct=Duel.SendtoGrave(g,REASON_COST) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK) - e1:SetValue(ct*1000) - e1:SetReset(RESET_EVENT+0xff0000) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_DEFENSE) - c:RegisterEffect(e2) -end -function c95403418.descon(e) - local tp=e:GetHandlerPlayer() - return Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--ワンハンドレッド・アイ・ドラゴン +function c95453143.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_DARK),aux.NonTuner(Card.IsRace,RACE_FIEND),1) + c:EnableReviveLimit() + --copy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95453143,0)) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c95453143.cost) + e1:SetOperation(c95453143.operation) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95453143,1)) + e2:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_SINGLE) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c95453143.thcon) + e2:SetTarget(c95453143.thtg) + e2:SetOperation(c95453143.thop) + c:RegisterEffect(e2) +end +function c95453143.filter(c) + return c:IsLevelBelow(6) and c:IsType(TYPE_EFFECT) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToRemoveAsCost() +end +function c95453143.cost(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c95453143.filter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c95453143.filter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + e:SetLabel(g:GetFirst():GetOriginalCode()) +end +function c95453143.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local code=e:GetLabel() + if c:IsRelateToEffect(e) and c:IsFaceup() then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCode(EFFECT_CHANGE_CODE) + e1:SetValue(code) + c:RegisterEffect(e1) + local cid=c:CopyEffect(code,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95453143,2)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e2:SetCountLimit(1) + e2:SetRange(LOCATION_MZONE) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetLabelObject(e1) + e2:SetLabel(cid) + e2:SetOperation(c95453143.rstop) + c:RegisterEffect(e2) + end +end +function c95453143.rstop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local cid=e:GetLabel() + c:ResetEffect(cid,RESET_COPY) + local e1=e:GetLabelObject() + e1:Reset() + Duel.HintSelection(Group.FromCards(c)) + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) +end +function c95453143.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_DESTROY) +end +function c95453143.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c95453143.thfilter(c) + return c:IsSetCard(0x21) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c95453143.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c95453143.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c95466842.lua b/script/c95466842.lua index 4bf15fa0..bd3c7f4b 100644 --- a/script/c95466842.lua +++ b/script/c95466842.lua @@ -1,23 +1,23 @@ ---水精鱗-アビスラング -function c95466842.initial_effect(c) - --at limit - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c95466842.atlimit) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) - e2:SetValue(300) - c:RegisterEffect(e2) -end -function c95466842.atlimit(e,c) - return c~=e:GetHandler() and c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) -end +--水精鱗-アビスラング +function c95466842.initial_effect(c) + --at limit + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c95466842.atlimit) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetTarget(aux.TargetBoolFunction(Card.IsAttribute,ATTRIBUTE_WATER)) + e2:SetValue(300) + c:RegisterEffect(e2) +end +function c95466842.atlimit(e,c) + return c~=e:GetHandler() and c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) +end diff --git a/script/c95486586.lua b/script/c95486586.lua index 1d70e67e..82977185 100644 --- a/script/c95486586.lua +++ b/script/c95486586.lua @@ -42,6 +42,7 @@ function c95486586.initial_effect(c) e4:SetOperation(c95486586.spop) c:RegisterEffect(e4) end +c95486586.material_setcode=0x8 function c95486586.atkop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsRelateToEffect(e) and c:IsFaceup() then diff --git a/script/c95500396.lua b/script/c95500396.lua index b5f6a2d0..1832af85 100644 --- a/script/c95500396.lua +++ b/script/c95500396.lua @@ -76,7 +76,7 @@ function c95500396.spfilter(c,e,tp) return c:IsSetCard(0x9a) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c95500396.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 and Duel.IsExistingMatchingCard(c95500396.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) end diff --git a/script/c95507060.lua b/script/c95507060.lua index a3d20831..7ac9823d 100644 --- a/script/c95507060.lua +++ b/script/c95507060.lua @@ -1,54 +1,54 @@ ---狂植物の氾濫 -function c95507060.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_DAMAGE_STEP) - e1:SetCondition(c95507060.condition) - e1:SetTarget(c95507060.target) - e1:SetOperation(c95507060.activate) - c:RegisterEffect(e1) -end -function c95507060.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c95507060.filter(c) - return c:IsFaceup() and c:IsRace(RACE_PLANT) -end -function c95507060.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c95507060.filter,tp,LOCATION_MZONE,0,1,nil) - and Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_GRAVE,0,1,nil,RACE_PLANT) end -end -function c95507060.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c95507060.filter,tp,LOCATION_MZONE,0,nil) - local atk=Duel.GetMatchingGroupCount(Card.IsRace,tp,LOCATION_GRAVE,0,nil,RACE_PLANT)*300 - local c=e:GetHandler() - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetValue(atk) - tc:RegisterEffect(e1) - tc=g:GetNext() - end - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PHASE+PHASE_END) - e2:SetReset(RESET_PHASE+PHASE_END) - e2:SetCountLimit(1) - e2:SetCondition(c95507060.descon) - e2:SetOperation(c95507060.desop) - Duel.RegisterEffect(e2,tp) -end -function c95507060.descon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c95507060.filter,tp,LOCATION_MZONE,0,1,nil) -end -function c95507060.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c95507060.filter,tp,LOCATION_MZONE,0,nil) - Duel.Destroy(g,REASON_EFFECT) -end +--狂植物の氾濫 +function c95507060.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_DAMAGE_STEP) + e1:SetCondition(c95507060.condition) + e1:SetTarget(c95507060.target) + e1:SetOperation(c95507060.activate) + c:RegisterEffect(e1) +end +function c95507060.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c95507060.filter(c) + return c:IsFaceup() and c:IsRace(RACE_PLANT) +end +function c95507060.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95507060.filter,tp,LOCATION_MZONE,0,1,nil) + and Duel.IsExistingMatchingCard(Card.IsRace,tp,LOCATION_GRAVE,0,1,nil,RACE_PLANT) end +end +function c95507060.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c95507060.filter,tp,LOCATION_MZONE,0,nil) + local atk=Duel.GetMatchingGroupCount(Card.IsRace,tp,LOCATION_GRAVE,0,nil,RACE_PLANT)*300 + local c=e:GetHandler() + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetValue(atk) + tc:RegisterEffect(e1) + tc=g:GetNext() + end + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PHASE+PHASE_END) + e2:SetReset(RESET_PHASE+PHASE_END) + e2:SetCountLimit(1) + e2:SetCondition(c95507060.descon) + e2:SetOperation(c95507060.desop) + Duel.RegisterEffect(e2,tp) +end +function c95507060.descon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c95507060.filter,tp,LOCATION_MZONE,0,1,nil) +end +function c95507060.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c95507060.filter,tp,LOCATION_MZONE,0,nil) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c95515060.lua b/script/c95515060.lua index 91b9ad0e..09cedd4f 100644 --- a/script/c95515060.lua +++ b/script/c95515060.lua @@ -1,27 +1,12 @@ --静寂のロッド-ケースト function c95515060.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(c95515060.target) - e1:SetOperation(c95515060.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Def local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_DEFENSE) e2:SetValue(500) 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) --disable local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD) @@ -46,19 +31,6 @@ function c95515060.initial_effect(c) e6:SetTarget(c95515060.distg) c:RegisterEffect(e6) end -function c95515060.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 c95515060.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 c95515060.distg(e,c) local ec=e:GetHandler() if c==ec or c:GetCardTargetCount()==0 then return false end diff --git a/script/c9553721.lua b/script/c9553721.lua new file mode 100644 index 00000000..6603538f --- /dev/null +++ b/script/c9553721.lua @@ -0,0 +1,57 @@ +--霊魂の拠所 +function c9553721.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_SPIRIT)) + e2:SetValue(500) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --search + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(9553721,0)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_TO_HAND) + e4:SetRange(LOCATION_SZONE) + e4:SetCountLimit(1,9553721) + e4:SetCondition(c9553721.thcon) + e4:SetTarget(c9553721.thtg) + e4:SetOperation(c9553721.thop) + c:RegisterEffect(e4) +end +function c9553721.cfilter(c,tp) + return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE) + and bit.band(c:GetPreviousAttributeOnField(),ATTRIBUTE_WIND)~=0 + and c:IsPreviousPosition(POS_FACEUP) and c:IsControler(tp) +end +function c9553721.thcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c9553721.cfilter,1,nil,tp) +end +function c9553721.thfilter(c) + return (c:IsType(TYPE_SPIRIT) or c:GetType()==0x82) and c:IsAbleToHand() +end +function c9553721.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c9553721.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c9553721.thop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c9553721.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c95638658.lua b/script/c95638658.lua index a0c8d89b..5fe8ce78 100644 --- a/script/c95638658.lua +++ b/script/c95638658.lua @@ -1,14 +1,6 @@ --流星の弓-シール function c95638658.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(c95638658.target) - e1:SetOperation(c95638658.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk down local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,24 +12,4 @@ function c95638658.initial_effect(c) e3:SetType(EFFECT_TYPE_EQUIP) e3:SetCode(EFFECT_DIRECT_ATTACK) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) -end -function c95638658.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:GetLocation()==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 c95638658.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 diff --git a/script/c95676943.lua b/script/c95676943.lua index 41fd2fbe..f9edf733 100644 --- a/script/c95676943.lua +++ b/script/c95676943.lua @@ -1,40 +1,44 @@ ---Extinction on Schedule -function c95676943.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(c95676943.condition) - e1:SetCost(c95676943.cost) - e1:SetOperation(c95676943.activate) - c:RegisterEffect(e1) -end -function c95676943.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 -end -function c95676943.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,2000) end - Duel.PayLPCost(tp,2000) -end -function c95676943.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - c:SetTurnCounter(0) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_BATTLE) - e1:SetCountLimit(1) - e1:SetOperation(c95676943.tgop) - e1:SetReset(RESET_PHASE+PHASE_BATTLE,3) - Duel.RegisterEffect(e1,tp) -end -function c95676943.tgop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetTurnCounter() - ct=ct+1 - c:SetTurnCounter(ct) - if ct==3 then - local g=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) - Duel.SendtoGrave(g,REASON_RULE) - end -end +--Extinction on Schedule +function c95676943.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(c95676943.condition) + e1:SetCost(c95676943.cost) + e1:SetTarget(c95676943.target) + e1:SetOperation(c95676943.activate) + c:RegisterEffect(e1) +end +function c95676943.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 +end +function c95676943.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,2000) end + Duel.PayLPCost(tp,2000) +end +function c95676943.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end +end +function c95676943.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:SetTurnCounter(0) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetCountLimit(1) + e1:SetOperation(c95676943.tgop) + e1:SetReset(RESET_PHASE+PHASE_BATTLE,3) + Duel.RegisterEffect(e1,tp) +end +function c95676943.tgop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetTurnCounter() + ct=ct+1 + c:SetTurnCounter(ct) + if ct==3 then + local g=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) + Duel.SendtoGrave(g,REASON_RULE) + end +end diff --git a/script/c95701283.lua b/script/c95701283.lua index 276e9ef8..71d60b06 100644 --- a/script/c95701283.lua +++ b/script/c95701283.lua @@ -18,7 +18,10 @@ function c95701283.initial_effect(c) end function c95701283.otcon(e,c) if c==nil then return true end - return c:GetLevel()>6 and Duel.GetTributeCount(c)>0 + local oppo=0 + if Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 then oppo=LOCATION_MZONE end + local mg=Duel.GetMatchingGroup(nil,c:GetControler(),LOCATION_MZONE,oppo,nil) + return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 end function c95701283.otop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.SelectTribute(tp,c,1,1) diff --git a/script/c95735217.lua b/script/c95735217.lua new file mode 100644 index 00000000..b0ddb00b --- /dev/null +++ b/script/c95735217.lua @@ -0,0 +1,77 @@ +--古代の機械巨人-アルティメット・パウンド +--Ancient Gear Golem - Ultimate Pound +--Script by nekrozar +function c95735217.initial_effect(c) + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) + --extra attack + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(95735217,0)) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_BATTLE_DESTROYING) + e3:SetCountLimit(2) + e3:SetCondition(c95735217.atcon) + e3:SetCost(c95735217.atcost) + e3:SetOperation(c95735217.atop) + c:RegisterEffect(e3) + --to hand + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(95735217,1)) + e4:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_DELAY) + e4:SetCode(EVENT_DESTROYED) + e4:SetCondition(c95735217.thcon) + e4:SetTarget(c95735217.thtg) + e4:SetOperation(c95735217.thop) + c:RegisterEffect(e3) +end +function c95735217.atcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker()==e:GetHandler() and aux.bdcon(e,tp,eg,ep,ev,re,r,rp) +end +function c95735217.costfilter(c) + return c:IsRace(RACE_MACHINE) and c:IsDiscardable() +end +function c95735217.atcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95735217.costfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,c95735217.costfilter,1,1,REASON_DISCARD+REASON_COST) +end +function c95735217.atop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChainAttack() +end +function c95735217.thcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c95735217.thfilter1(c) + return c:IsCode(24094653) and c:IsAbleToHand() +end +function c95735217.thfilter2(c) + return c:IsSetCard(0x7) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand() +end +function c95735217.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95735217.thfilter1,tp,LOCATION_DECK,0,1,nil) + and Duel.IsExistingMatchingCard(c95735217.thfilter2,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,2,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c95735217.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g1=Duel.SelectMatchingCard(tp,c95735217.thfilter1,tp,LOCATION_DECK,0,1,1,nil) + if g1:GetCount()>0 then + Duel.SendtoHand(g1,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g1) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g2=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c95735217.thfilter2),tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + if g2:GetCount()>0 then + Duel.SendtoHand(g2,nil,REASON_EFFECT) + end + end +end \ No newline at end of file diff --git a/script/c95750695.lua b/script/c95750695.lua index d5dba66e..67ae636c 100644 --- a/script/c95750695.lua +++ b/script/c95750695.lua @@ -1,75 +1,40 @@ ---スーペルヴィス -function c95750695.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(c95750695.target) - e1:SetOperation(c95750695.operation) - c:RegisterEffect(e1) - --duel status - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_DUAL_STATUS) - 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(c95750695.eqlimit) - c:RegisterEffect(e3) - --spsummon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(95750695,0)) - e4:SetCategory(CATEGORY_SPECIAL_SUMMON) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCode(EVENT_TO_GRAVE) - e4:SetCondition(c95750695.spcon) - e4:SetTarget(c95750695.sptg) - e4:SetOperation(c95750695.spop) - c:RegisterEffect(e4) -end -function c95750695.eqlimit(e,c) - return c:IsType(TYPE_DUAL) -end -function c95750695.filter(c) - return c:IsFaceup() and c:IsType(TYPE_DUAL) -end -function c95750695.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c95750695.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c95750695.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c95750695.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c95750695.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 c95750695.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousPosition(POS_FACEUP) - and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c95750695.spfilter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c95750695.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c95750695.spfilter(chkc,e,tp) end - if chk==0 then return true end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c95750695.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c95750695.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--スーペルヴィス +function c95750695.initial_effect(c) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsType,TYPE_DUAL)) + --duel status + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_DUAL_STATUS) + c:RegisterEffect(e2) + --spsummon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(95750695,0)) + e4:SetCategory(CATEGORY_SPECIAL_SUMMON) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_TO_GRAVE) + e4:SetCondition(c95750695.spcon) + e4:SetTarget(c95750695.sptg) + e4:SetOperation(c95750695.spop) + c:RegisterEffect(e4) +end +function c95750695.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousPosition(POS_FACEUP) + and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c95750695.spfilter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c95750695.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c95750695.spfilter(chkc,e,tp) end + if chk==0 then return true end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c95750695.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c95750695.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c95784434.lua b/script/c95784434.lua index 3f229b5a..0bc2b3db 100644 --- a/script/c95784434.lua +++ b/script/c95784434.lua @@ -1,21 +1,6 @@ --モルティング・エスケープ function c95784434.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(c95784434.target) - e1:SetOperation(c95784434.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(c95784434.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_REPTILE)) -- local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_EQUIP) @@ -33,25 +18,6 @@ function c95784434.initial_effect(c) e4:SetOperation(c95784434.adop) c:RegisterEffect(e4) end -function c95784434.eqlimit(e,c) - return c:IsRace(RACE_REPTILE) -end -function c95784434.filter(c) - return c:IsFaceup() and c:IsRace(RACE_REPTILE) -end -function c95784434.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c95784434.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c95784434.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c95784434.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c95784434.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 c95784434.valcon(e,re,r,rp) if bit.band(r,REASON_BATTLE)~=0 then e:GetHandler():RegisterFlagEffect(95784434,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_DAMAGE,0,1) diff --git a/script/c95816395.lua b/script/c95816395.lua index 710fc53d..92f3723b 100644 --- a/script/c95816395.lua +++ b/script/c95816395.lua @@ -1,44 +1,45 @@ ---どぐう -function c95816395.initial_effect(c) - --to grave - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetOperation(c95816395.regop) - c:RegisterEffect(e1) -end -function c95816395.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if rp~=tp and c:IsReason(REASON_EFFECT) then - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(95816395,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_GRAVE) - e1:SetTarget(c95816395.thtg) - e1:SetOperation(c95816395.thop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - end -end -function c95816395.cfilter(c,lv) - return c:GetLevel()==lv -end -function c95816395.filter(c,tp) - return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() - and not Duel.IsExistingMatchingCard(c95816395.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,c:GetLevel()) -end -function c95816395.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c95816395.filter,tp,LOCATION_DECK,0,1,nil,tp) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c95816395.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c95816395.filter,tp,LOCATION_DECK,0,1,1,nil,tp) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--どぐう +function c95816395.initial_effect(c) + --to grave + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetOperation(c95816395.regop) + c:RegisterEffect(e1) +end +function c95816395.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if rp~=tp and c:IsReason(REASON_EFFECT) then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95816395,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_GRAVE) + e1:SetTarget(c95816395.thtg) + e1:SetOperation(c95816395.thop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end +end +function c95816395.cfilter(c,lv) + return c:GetLevel()==lv +end +function c95816395.filter(c,tp) + return c:IsType(TYPE_MONSTER) and c:IsAbleToHand() + and not Duel.IsExistingMatchingCard(c95816395.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil,c:GetLevel()) +end +function c95816395.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c95816395.filter,tp,LOCATION_DECK,0,1,nil,tp) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c95816395.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c95816395.filter,tp,LOCATION_DECK,0,1,1,nil,tp) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c95833645.lua b/script/c95833645.lua index ec7b9551..30414a8a 100644 --- a/script/c95833645.lua +++ b/script/c95833645.lua @@ -6,6 +6,7 @@ function c95833645.initial_effect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetCountLimit(1,95833645) e1:SetCost(c95833645.cost) e1:SetTarget(c95833645.target) e1:SetOperation(c95833645.operation) diff --git a/script/c95943058.lua b/script/c95943058.lua index b9f8cc1b..deaab1c9 100644 --- a/script/c95943058.lua +++ b/script/c95943058.lua @@ -1,76 +1,73 @@ ---E-HERO ヘル・ゲイナー -function c95943058.initial_effect(c) - --extra atk - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(95943058,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c95943058.condition) - e1:SetCost(c95943058.cost) - e1:SetTarget(c95943058.target) - e1:SetOperation(c95943058.operation) - c:RegisterEffect(e1) -end -function c95943058.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsAbleToEnterBP() -end -function c95943058.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c95943058.filter(c) - return c:IsFaceup() and c:IsRace(RACE_FIEND) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) -end -function c95943058.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c95943058.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c95943058.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c95943058.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) -end -function c95943058.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - --extra atk - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_EXTRA_ATTACK) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(1) - tc:RegisterEffect(e1) - end - --sp summon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(95943058,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetRange(LOCATION_REMOVED) - e2:SetCode(EVENT_PHASE+PHASE_STANDBY) - e2:SetCountLimit(1) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) - e2:SetCondition(c95943058.spcon) - e2:SetTarget(c95943058.sptg) - e2:SetOperation(c95943058.spop) - e2:SetLabel(0) - c:RegisterEffect(e2) -end -function c95943058.spcon(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetTurnPlayer()~=tp then return end - local ct=e:GetLabel() - e:SetLabel(ct+1) - return ct==1 -end -function c95943058.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 c95943058.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--E-HERO ヘル・ゲイナー +function c95943058.initial_effect(c) + --extra atk + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95943058,0)) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c95943058.condition) + e1:SetCost(c95943058.cost) + e1:SetTarget(c95943058.target) + e1:SetOperation(c95943058.operation) + c:RegisterEffect(e1) +end +function c95943058.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsAbleToEnterBP() +end +function c95943058.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c95943058.filter(c) + return c:IsFaceup() and c:IsRace(RACE_FIEND) and not c:IsHasEffect(EFFECT_EXTRA_ATTACK) +end +function c95943058.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c95943058.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c95943058.filter,tp,LOCATION_MZONE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c95943058.filter,tp,LOCATION_MZONE,0,1,1,e:GetHandler()) +end +function c95943058.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --extra atk + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_EXTRA_ATTACK) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(1) + tc:RegisterEffect(e1) + end + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(95943058,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetRange(LOCATION_REMOVED) + e2:SetCode(EVENT_PHASE+PHASE_STANDBY) + e2:SetCountLimit(1) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2) + e2:SetCondition(c95943058.spcon) + e2:SetTarget(c95943058.sptg) + e2:SetOperation(c95943058.spop) + e2:SetLabel(Duel.GetTurnCount(tp)+2) + c:RegisterEffect(e2) +end +function c95943058.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and e:GetLabel()==Duel.GetTurnCount(tp) +end +function c95943058.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 c95943058.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_ATTACK)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c95992081.lua b/script/c95992081.lua index 30d58071..8cd3469a 100644 --- a/script/c95992081.lua +++ b/script/c95992081.lua @@ -7,7 +7,7 @@ function c95992081.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetDescription(aux.Stringid(95992081,0)) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetProperty(EFFECT_FLAG2_XMDETACH+EFFECT_FLAG_CARD_TARGET) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetCountLimit(1) e1:SetRange(LOCATION_MZONE) diff --git a/script/c96015976.lua b/script/c96015976.lua index 88eed0f0..da75e7a8 100644 --- a/script/c96015976.lua +++ b/script/c96015976.lua @@ -1,60 +1,60 @@ ---再転 -function c96015976.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c96015976.target1) - e1:SetOperation(c96015976.operation) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(96015976,0)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_SZONE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetCost(c96015976.cost) - e2:SetTarget(c96015976.target2) - e2:SetOperation(c96015976.operation) - c:RegisterEffect(e2) -end -function c96015976.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c96015976.filter(chkc) end - if chk==0 then return true end - if Duel.IsExistingTarget(c96015976.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) and Duel.SelectYesNo(tp,94) then - e:SetProperty(EFFECT_FLAG_CARD_TARGET) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c96015976.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - e:GetHandler():RegisterFlagEffect(96015976,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - else - e:SetProperty(0) - end -end -function c96015976.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetFlagEffect(96015976)==0 end - e:GetHandler():RegisterFlagEffect(96015976,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) -end -function c96015976.filter(c) - local lv=c:GetLevel() - return c:IsFaceup() and lv~=0 and lv~=c:GetOriginalLevel() -end -function c96015976.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c96015976.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c96015976.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c96015976.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c96015976.operation(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():GetFlagEffect(96015976)==0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local dc=Duel.TossDice(tp,1) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_CHANGE_LEVEL) - e1:SetValue(dc) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - end -end +--再転 +function c96015976.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c96015976.target1) + e1:SetOperation(c96015976.operation) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(96015976,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetCost(c96015976.cost) + e2:SetTarget(c96015976.target2) + e2:SetOperation(c96015976.operation) + c:RegisterEffect(e2) +end +function c96015976.target1(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c96015976.filter(chkc) end + if chk==0 then return true end + if Duel.IsExistingTarget(c96015976.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) and Duel.SelectYesNo(tp,94) then + e:SetProperty(EFFECT_FLAG_CARD_TARGET) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c96015976.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + e:GetHandler():RegisterFlagEffect(96015976,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + else + e:SetProperty(0) + end +end +function c96015976.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetFlagEffect(96015976)==0 end + e:GetHandler():RegisterFlagEffect(96015976,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) +end +function c96015976.filter(c) + local lv=c:GetLevel() + return c:IsFaceup() and lv~=0 and lv~=c:GetOriginalLevel() +end +function c96015976.target2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and c96015976.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c96015976.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c96015976.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c96015976.operation(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():GetFlagEffect(96015976)==0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local dc=Duel.TossDice(tp,1) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CHANGE_LEVEL) + e1:SetValue(dc) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end diff --git a/script/c9603356.lua b/script/c9603356.lua index 31df2047..803006ec 100644 --- a/script/c9603356.lua +++ b/script/c9603356.lua @@ -1,57 +1,56 @@ ---シャドウナイトデーモン -function c9603356.initial_effect(c) - --maintain - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EVENT_PHASE+PHASE_STANDBY) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c9603356.mtcon) - e1:SetOperation(c9603356.mtop) - c:RegisterEffect(e1) - --disable and destroy - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAIN_SOLVING) - e2:SetRange(LOCATION_MZONE) - e2:SetOperation(c9603356.disop) - c:RegisterEffect(e2) - --damage reduce - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e3:SetCondition(c9603356.rdcon) - e3:SetOperation(c9603356.rdop) - c:RegisterEffect(e3) -end -function c9603356.mtcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp -end -function c9603356.mtop(e,tp,eg,ep,ev,re,r,rp) - if Duel.CheckLPCost(tp,900) then - Duel.PayLPCost(tp,900) - else - Duel.Destroy(e:GetHandler(),REASON_COST) - end -end -function c9603356.disop(e,tp,eg,ep,ev,re,r,rp) - if ep==tp then return end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end - local rc=re:GetHandler() - local dc=Duel.TossDice(tp,1) - if dc~=3 then return end - Duel.NegateEffect(ev) - if rc:IsRelateToEffect(re) then - Duel.Destroy(rc,REASON_EFFECT) - end -end -function c9603356.rdcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp and e:GetHandler()==Duel.GetAttacker() -end -function c9603356.rdop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev/2) -end +--シャドウナイトデーモン +function c9603356.initial_effect(c) + --maintain + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EVENT_PHASE+PHASE_STANDBY) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c9603356.mtcon) + e1:SetOperation(c9603356.mtop) + c:RegisterEffect(e1) + --disable and destroy + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAIN_SOLVING) + e2:SetRange(LOCATION_MZONE) + e2:SetOperation(c9603356.disop) + c:RegisterEffect(e2) + --damage reduce + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e3:SetCondition(c9603356.rdcon) + e3:SetOperation(c9603356.rdop) + c:RegisterEffect(e3) +end +function c9603356.mtcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp +end +function c9603356.mtop(e,tp,eg,ep,ev,re,r,rp) + if Duel.CheckLPCost(tp,900) then + Duel.PayLPCost(tp,900) + else + Duel.Destroy(e:GetHandler(),REASON_COST) + end +end +function c9603356.disop(e,tp,eg,ep,ev,re,r,rp) + if ep==tp then return end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + if not tg or not tg:IsContains(e:GetHandler()) or not Duel.IsChainDisablable(ev) then return false end + local rc=re:GetHandler() + local dc=Duel.TossDice(tp,1) + if dc~=3 then return end + if Duel.NegateEffect(ev) and rc:IsRelateToEffect(re) then + Duel.Destroy(rc,REASON_EFFECT) + end +end +function c9603356.rdcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp and e:GetHandler()==Duel.GetAttacker() +end +function c9603356.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end diff --git a/script/c96073342.lua b/script/c96073342.lua new file mode 100644 index 00000000..8170e5d1 --- /dev/null +++ b/script/c96073342.lua @@ -0,0 +1,49 @@ +--セフィラの星戦 +--Celestial Crusade of the Zefra +--Scripted by Eerie Code +function c96073342.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1,96073342+EFFECT_COUNT_CODE_OATH) + e1:SetHintTiming(0,0x1e0) + e1:SetTarget(c96073342.target) + e1:SetOperation(c96073342.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c96073342.handcon) + c:RegisterEffect(e2) +end +function c96073342.filter(c) + return c:IsFaceup() and c:IsSetCard(0xc4) +end +function c96073342.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingTarget(c96073342.filter,tp,LOCATION_ONFIELD,0,1,c) + and Duel.IsExistingTarget(nil,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c96073342.filter,tp,LOCATION_ONFIELD,0,1,1,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,nil,tp,0,LOCATION_ONFIELD,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) +end +function c96073342.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end +function c96073342.handcon(e) + local tp=e:GetHandlerPlayer() + local tc1=Duel.GetFieldCard(tp,LOCATION_SZONE,6) + local tc2=Duel.GetFieldCard(tp,LOCATION_SZONE,7) + return tc1 and tc1:IsSetCard(0xc4) and tc2 and tc2:IsSetCard(0xc4) +end diff --git a/script/c96142517.lua b/script/c96142517.lua index 5d9e5468..c5b1d60f 100644 --- a/script/c96142517.lua +++ b/script/c96142517.lua @@ -34,24 +34,24 @@ end function c96142517.filter2(c,e,rk) return c:IsType(TYPE_XYZ) and c:GetRank()==rk and c:IsCanBeEffectTarget(e) end -function c96142517.filter3(c) - return c:IsType(TYPE_XYZ) and c:GetRank()==8 and c:IsCode(48995978) +function c96142517.filter3(c,e,rk,code) + return c:IsType(TYPE_XYZ) and c:GetRank()==rk and c:IsCode(code) end function c96142517.spfilter(c,e,tp,rk) - if c:GetOriginalCode()==6165656 then - local g1=Duel.GetMatchingGroup(c96142517.filter2,tp,LOCATION_GRAVE,0,nil,e,8) - local g2=Duel.GetMatchingGroup(c96142517.filter2,tp,0,LOCATION_GRAVE,nil,e,8) - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and g1:GetCount()>0 and g2:GetCount()>0 - and (g1:IsExists(Card.IsCode,1,nil,48995978) or g2:IsExists(Card.IsCode,1,nil,48995978)) + if c.rum_limit_code then + local g1=Duel.GetMatchingGroup(c96142517.filter2,tp,LOCATION_GRAVE,0,nil,e,rk-1) + local g2=Duel.GetMatchingGroup(c96142517.filter2,tp,0,LOCATION_GRAVE,nil,e,rk-1) + return (c:IsSetCard(0x1048) or c:IsSetCard(0x1073)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and g1:GetCount()>0 and g2:GetCount()>0 + and (g1:IsExists(Card.IsCode,1,nil,c.rum_limit_code) or g2:IsExists(Card.IsCode,1,nil,c.rum_limit_code)) else return c:GetRank()==rk and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end end function c96142517.spfilter2(c,e,tp,rk,g) - if c:GetOriginalCode()==6165656 then - return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and g:IsExists(Card.IsCode,1,nil,48995978) + if c.rum_limit_code then + return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073)) and g:IsExists(Card.IsCode,1,nil,c.rum_limit_code) else - return c:GetRank()==rk and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + return c:GetRank()==rk and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end end function c96142517.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) @@ -74,10 +74,11 @@ function c96142517.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) g1:Merge(sg) end local xg=Duel.GetMatchingGroup(c96142517.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp,9) - if rk==8 and xg:GetClassCount(Card.GetOriginalCode)==1 and xg:GetFirst():GetOriginalCode()==6165656 - and not g1:IsExists(Card.IsCode,1,nil,48995978) then + local xt=xg:GetFirst() + if rk and xg:GetClassCount(Card.GetOriginalCode)==1 and xt.rum_limit_code + and not g1:IsExists(Card.IsCode,1,nil,xt.rum_limit_code) then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local ng=Duel.SelectTarget(tp,c96142517.filter3,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil) + local ng=Duel.SelectTarget(tp,c96142517.filter3,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,rk,xt.rum_limit_code) g1:Merge(ng) end Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,g1,g1:GetCount(),0,0) diff --git a/script/c96157835.lua b/script/c96157835.lua new file mode 100644 index 00000000..b23c216b --- /dev/null +++ b/script/c96157835.lua @@ -0,0 +1,84 @@ +--RR-アーセナル・ファルコン +--Raidraptor - Arsenal Falcon +--Scripted by Eerie Code +function c96157835.initial_effect(c) + aux.AddXyzProcedure(c,nil,7,2) + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(96157835,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c96157835.spcost) + e1:SetTarget(c96157835.sptg) + e1:SetOperation(c96157835.spop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK) + e2:SetValue(c96157835.atkval) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(96157835,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetCondition(c96157835.xcon) + e3:SetTarget(c96157835.xtg) + e3:SetOperation(c96157835.xop) + c:RegisterEffect(e3) +end + +function c96157835.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c96157835.spfil(c,e,tp) + return c:GetLevel()==4 and c:IsRace(RACE_WINDBEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c96157835.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c96157835.spfil,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c96157835.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c96157835.spfil,tp,LOCATION_DECK,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end + +function c96157835.atkval(e,c) + local ct=c:GetOverlayGroup():FilterCount(Card.IsSetCard,nil,0xba) + return math.max(0,ct-1) +end + +function c96157835.xcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetOverlayGroup():FilterCount(Card.IsSetCard,nil,0xba)>0 +end +function c96157835.xfil(c,e,tp) + return c:IsSetCard(0xba) and c:IsType(TYPE_XYZ) and not c:IsCode(96157835) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c96157835.xtg(e,tp,eg,ep,ev,re,r,rp,chk) + local g=Duel.GetMatchingGroup(c96157835.xfil,tp,LOCATION_EXTRA,0,nil,e,tp) + if chk==0 then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and g:GetCount()>0 + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,tp,LOCATION_EXTRA) +end +function c96157835.xop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c96157835.xfil,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local c=e:GetHandler() + local tc=g:GetFirst() + if tc and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 and c:IsRelateToEffect(e) then + Duel.Overlay(tc,Group.FromCards(c)) + end +end diff --git a/script/c96216229.lua b/script/c96216229.lua index 7294ae83..49211d2c 100644 --- a/script/c96216229.lua +++ b/script/c96216229.lua @@ -26,8 +26,7 @@ function c96216229.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c96216229.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c96218085.lua b/script/c96218085.lua index 46cd9a6a..3dc49483 100644 --- a/script/c96218085.lua +++ b/script/c96218085.lua @@ -1,51 +1,51 @@ ---中央突破 -function c96218085.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c96218085.condition) - e1:SetTarget(c96218085.target) - e1:SetOperation(c96218085.activate) - c:RegisterEffect(e1) -end -function c96218085.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()0 then - Duel.Destroy(g,REASON_EFFECT) - end -end +--竜星因士-セフィラツバーン +function c96223501.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetTarget(c96223501.splimit) + c:RegisterEffect(e2) + --destroy + local e3=Effect.CreateEffect(c) + e3:SetCategory(CATEGORY_DESTROY) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetCountLimit(1,96223501) + e3:SetTarget(c96223501.target) + e3:SetOperation(c96223501.operation) + c:RegisterEffect(e3) + local e4=e3:Clone() + e4:SetCode(EVENT_FLIP_SUMMON_SUCCESS) + c:RegisterEffect(e4) + local e5=e3:Clone() + e5:SetCode(EVENT_SPSUMMON_SUCCESS) + e5:SetCondition(c96223501.condition) + c:RegisterEffect(e5) +end +function c96223501.splimit(e,c,sump,sumtype,sumpos,targetp) + if c:IsSetCard(0x9c) or c:IsSetCard(0xc4) then return false end + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c96223501.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_PENDULUM +end +function c96223501.filter1(c) + return ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) + or (c:IsLocation(LOCATION_SZONE) and (c:GetSequence()==6 or c:GetSequence()==7))) + and (c:IsSetCard(0x9c) or c:IsSetCard(0xc4)) +end +function c96223501.filter2(c) + return c:IsFaceup() +end +function c96223501.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c96223501.filter1,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) + and Duel.IsExistingTarget(c96223501.filter2,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g1=Duel.SelectTarget(tp,c96223501.filter1,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g2=Duel.SelectTarget(tp,c96223501.filter2,tp,0,LOCATION_ONFIELD,1,1,nil) + g1:Merge(g2) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,2,0,0) +end +function c96223501.operation(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()>0 then + Duel.Destroy(g,REASON_EFFECT) + end +end diff --git a/script/c96227613.lua b/script/c96227613.lua new file mode 100644 index 00000000..f0a12210 --- /dev/null +++ b/script/c96227613.lua @@ -0,0 +1,155 @@ +--覇王門零 +--Supreme King Gate Zero +--Scripted by Eerie Code +function c96227613.initial_effect(c) + aux.EnablePendulumAttribute(c) + --avoid damage + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetRange(LOCATION_PZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_AVAILABLE_BD) + e1:SetTargetRange(1,0) + e1:SetCondition(c96227613.ndcon) + e1:SetValue(0) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(96227613,0)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCountLimit(1) + e2:SetCondition(c96227613.thcon) + e2:SetTarget(c96227613.thtg) + e2:SetOperation(c96227613.thop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(96227613,1)) + e3:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_MZONE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCountLimit(1) + e3:SetTarget(c96227613.sptg) + e3:SetOperation(c96227613.spop) + c:RegisterEffect(e3) + --pendulum + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(96227613,2)) + e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e6:SetCode(EVENT_DESTROYED) + e6:SetProperty(EFFECT_FLAG_DELAY) + e6:SetCondition(c96227613.pencon) + e6:SetTarget(c96227613.pentg) + e6:SetOperation(c96227613.penop) + c:RegisterEffect(e6) +end +function c96227613.ndcfilter(c) + return c:IsFaceup() and c:IsCode(13331639) +end +function c96227613.ndcon(e) + return Duel.IsExistingMatchingCard(c96227613.ndcfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,1,nil) +end +function c96227613.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsCode(22211622) +end +function c96227613.thfilter(c) + return c:IsType(TYPE_SPELL) and c:IsSetCard(0x46) and c:IsAbleToHand() +end +function c96227613.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c96227613.thfilter,tp,LOCATION_DECK,0,1,nil) end + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c96227613.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local g=Group.FromCards(c,pc) + if Duel.Destroy(g,REASON_EFFECT)==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=Duel.SelectMatchingCard(tp,c96227613.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if sg:GetCount()>0 then + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end + end +end +function c96227613.spfilter(c,e,tp) + return c:IsType(TYPE_FUSION+TYPE_SYNCHRO) and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c96227613.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc:IsFaceup() and chkc~=c end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,c) + and Duel.IsExistingMatchingCard(c96227613.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_ONFIELD,0,1,1,c) + g:AddCard(c) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c96227613.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) then return end + local dg=Group.FromCards(c,tc) + if Duel.Destroy(dg,REASON_EFFECT)==2 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c96227613.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + if g:GetCount()==0 then return end + local sc=g:GetFirst() + if Duel.SpecialSummonStep(sc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + sc:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_SET_DEFENSE_FINAL) + sc:RegisterEffect(e4,true) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + e5:SetValue(1) + sc:RegisterEffect(e5,true) + local e6=e5:Clone() + e6:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + sc:RegisterEffect(e6,true) + end + Duel.SpecialSummonComplete() + end +end +function c96227613.pencon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup() +end +function c96227613.pentg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLocation(tp,LOCATION_SZONE,6) or Duel.CheckLocation(tp,LOCATION_SZONE,7) end +end +function c96227613.penop(e,tp,eg,ep,ev,re,r,rp) + if not Duel.CheckLocation(tp,LOCATION_SZONE,6) and not Duel.CheckLocation(tp,LOCATION_SZONE,7) then return false end + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + end +end diff --git a/script/c96300057.lua b/script/c96300057.lua index 55c8ac52..f8e42c61 100644 --- a/script/c96300057.lua +++ b/script/c96300057.lua @@ -53,7 +53,8 @@ function c96300057.eqlimit(e,c) return c:IsCode(51638941) or e:GetHandler():GetEquipTarget()==c end function c96300057.filter(c) - return c:IsFaceup() and c:IsCode(51638941) + local ct1,ct2=c:GetUnionCount() + return c:IsFaceup() and c:IsCode(51638941) and ct2==0 end function c96300057.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c96300057.filter(chkc) end @@ -73,7 +74,7 @@ function c96300057.eqop(e,tp,eg,ep,ev,re,r,rp) return end if not Duel.Equip(tp,c,tc,false) then return end - c:SetStatus(STATUS_UNION,true) + aux.SetUnionState(c) end function c96300057.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():GetFlagEffect(96300057)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 diff --git a/script/c96345188.lua b/script/c96345188.lua index d7c66fa6..e5c19026 100644 --- a/script/c96345188.lua +++ b/script/c96345188.lua @@ -1,82 +1,82 @@ ---RR-ミミクリー・レイニアス -function c96345188.initial_effect(c) - --level - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCondition(c96345188.lvcon) - e1:SetTarget(c96345188.lvtg) - e1:SetOperation(c96345188.lvop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,96345188) - e2:SetCondition(c96345188.thcon) - e2:SetCost(c96345188.thcost) - e2:SetTarget(c96345188.thtg) - e2:SetOperation(c96345188.thop) - c:RegisterEffect(e2) - if not c96345188.global_check then - c96345188.global_check=true - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_SUMMON_SUCCESS) - ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - ge1:SetOperation(aux.sumreg) - ge1:SetLabel(96345188) - Duel.RegisterEffect(ge1,0) - local ge2=ge1:Clone() - ge2:SetCode(EVENT_SPSUMMON_SUCCESS) - ge2:SetLabel(96345188) - Duel.RegisterEffect(ge2,0) - end -end -function c96345188.lvcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(96345188)>0 -end -function c96345188.filter(c) - return c:IsFaceup() and c:GetLevel()>0 and c:IsSetCard(0xba) -end -function c96345188.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c96345188.filter,tp,LOCATION_MZONE,0,1,nil) end -end -function c96345188.lvop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c96345188.filter,tp,LOCATION_MZONE,0,nil) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_LEVEL) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - tc=g:GetNext() - end -end -function c96345188.thcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetTurnID()==Duel.GetTurnCount() and not e:GetHandler():IsReason(REASON_RETURN) -end -function c96345188.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c96345188.thfilter(c) - return c:IsSetCard(0xba) and not c:IsCode(96345188) and c:IsAbleToHand() -end -function c96345188.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c96345188.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c96345188.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c96345188.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--RR-ミミクリー・レイニアス +function c96345188.initial_effect(c) + --level + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCondition(c96345188.lvcon) + e1:SetTarget(c96345188.lvtg) + e1:SetOperation(c96345188.lvop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,96345188) + e2:SetCondition(c96345188.thcon) + e2:SetCost(c96345188.thcost) + e2:SetTarget(c96345188.thtg) + e2:SetOperation(c96345188.thop) + c:RegisterEffect(e2) + if not c96345188.global_check then + c96345188.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_SUMMON_SUCCESS) + ge1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + ge1:SetOperation(aux.sumreg) + ge1:SetLabel(96345188) + Duel.RegisterEffect(ge1,0) + local ge2=ge1:Clone() + ge2:SetCode(EVENT_SPSUMMON_SUCCESS) + ge2:SetLabel(96345188) + Duel.RegisterEffect(ge2,0) + end +end +function c96345188.lvcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(96345188)>0 +end +function c96345188.filter(c) + return c:IsFaceup() and c:GetLevel()>0 and c:IsSetCard(0xba) +end +function c96345188.lvtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c96345188.filter,tp,LOCATION_MZONE,0,1,nil) end +end +function c96345188.lvop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c96345188.filter,tp,LOCATION_MZONE,0,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_LEVEL) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + tc=g:GetNext() + end +end +function c96345188.thcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetTurnID()==Duel.GetTurnCount() and not e:GetHandler():IsReason(REASON_RETURN) +end +function c96345188.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c96345188.thfilter(c) + return c:IsSetCard(0xba) and not c:IsCode(96345188) and c:IsAbleToHand() +end +function c96345188.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c96345188.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c96345188.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c96345188.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c96363153.lua b/script/c96363153.lua index c58d0d8d..a15b4d5e 100644 --- a/script/c96363153.lua +++ b/script/c96363153.lua @@ -10,7 +10,7 @@ function c96363153.initial_effect(c) c:RegisterEffect(e1) end function c96363153.filter(c) - return c:IsSetCard(0x17) and c:IsType(TYPE_TUNER) and c:IsAbleToHand() + return c:IsSetCard(0x1017) and c:IsType(TYPE_TUNER) and c:IsAbleToHand() end function c96363153.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) diff --git a/script/c9637706.lua b/script/c9637706.lua index 89f98c1e..71ec9f63 100644 --- a/script/c9637706.lua +++ b/script/c9637706.lua @@ -1,18 +1,18 @@ ---デス・ウォンバット -function c9637706.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CHANGE_DAMAGE) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,0) - e1:SetValue(c9637706.damval) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) - c:RegisterEffect(e2) -end -function c9637706.damval(e,re,val,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 then return 0 - else return val end -end +--デス・ウォンバット +function c9637706.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CHANGE_DAMAGE) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,0) + e1:SetValue(c9637706.damval) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_NO_EFFECT_DAMAGE) + c:RegisterEffect(e2) +end +function c9637706.damval(e,re,val,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end diff --git a/script/c96381979.lua b/script/c96381979.lua index 587cb768..b1466b5a 100644 --- a/script/c96381979.lua +++ b/script/c96381979.lua @@ -16,6 +16,7 @@ function c96381979.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(96381979,1)) e2:SetCategory(CATEGORY_DISABLE) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) diff --git a/script/c96383838.lua b/script/c96383838.lua index deb072b7..afe872fb 100644 --- a/script/c96383838.lua +++ b/script/c96383838.lua @@ -29,9 +29,8 @@ function c96383838.activate(e,tp,eg,ep,ev,re,r,rp) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local sg=g:Filter(c96383838.rfilter,nil,e,tp) - if sg:GetCount()==0 then return end + if sg:GetCount()==0 or (sg:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) if sg:GetCount()>ft then sg=sg:Select(tp,ft,ft,nil) end Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) diff --git a/script/c96420087.lua b/script/c96420087.lua index eaeb7b0e..2c6f45ac 100644 --- a/script/c96420087.lua +++ b/script/c96420087.lua @@ -1,4 +1,4 @@ ---闇の支配者との契約 -function c96420087.initial_effect(c) - aux.AddRitualProcGreaterCode(c,97642679) -end +--闇の支配者との契約 +function c96420087.initial_effect(c) + aux.AddRitualProcGreaterCode(c,97642679) +end diff --git a/script/c96457619.lua b/script/c96457619.lua index 6216a4c0..1a866690 100644 --- a/script/c96457619.lua +++ b/script/c96457619.lua @@ -10,6 +10,7 @@ function c96457619.initial_effect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e2:SetRange(LOCATION_SZONE) + e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) e2:SetTarget(c96457619.etarget) e2:SetValue(1) diff --git a/script/c96458440.lua b/script/c96458440.lua index d8ae152a..6308577f 100644 --- a/script/c96458440.lua +++ b/script/c96458440.lua @@ -1,21 +1,6 @@ --伝説の黒帯 function c96458440.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(c96458440.target) - e1:SetOperation(c96458440.operation) - c:RegisterEffect(e1) - --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(c96458440.eqlimit) - c:RegisterEffect(e3) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,8508055,3810071,49814180)) --damage local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(96458440,0)) @@ -29,25 +14,6 @@ function c96458440.initial_effect(c) e4:SetOperation(c96458440.damop) c:RegisterEffect(e4) end -function c96458440.eqlimit(e,c) - return c:IsCode(8508055,3810071,49814180) -end -function c96458440.filter(c) - return c:IsFaceup() and c:IsCode(8508055,3810071,49814180) -end -function c96458440.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c96458440.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c96458440.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c96458440.filter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c96458440.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 c96458440.damcon(e,tp,eg,ep,ev,re,r,rp) local ec=eg:GetFirst() local bc=ec:GetBattleTarget() diff --git a/script/c96470883.lua b/script/c96470883.lua index cd62b500..c0bfa287 100644 --- a/script/c96470883.lua +++ b/script/c96470883.lua @@ -29,9 +29,10 @@ end function c96470883.otcon(e,c) if c==nil then return true end local tp=c:GetControler() - local mg=Duel.GetMatchingGroup(c96470883.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) - return c:GetLevel()>6 and Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 + local oppo=0 + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then oppo=LOCATION_MZONE end + local mg=Duel.GetMatchingGroup(c96470883.otfilter,tp,LOCATION_MZONE,oppo,nil,tp) + return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 end function c96470883.otop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(c96470883.otfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,tp) diff --git a/script/c96471335.lua b/script/c96471335.lua index b4f298a8..4ba8e2fe 100644 --- a/script/c96471335.lua +++ b/script/c96471335.lua @@ -7,6 +7,7 @@ function c96471335.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(96471335,1)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) diff --git a/script/c96570609.lua b/script/c96570609.lua index 0a842caf..a8aec928 100644 --- a/script/c96570609.lua +++ b/script/c96570609.lua @@ -1,137 +1,138 @@ ---天帝アイテール -function c96570609.initial_effect(c) - --summon with 1 tribute - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(96570609,0)) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SUMMON_PROC) - e1:SetCondition(c96570609.otcon) - e1:SetOperation(c96570609.otop) - e1:SetValue(SUMMON_TYPE_ADVANCE) - c:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_SET_PROC) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(96570609,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_SUMMON_SUCCESS) - e3:SetProperty(EFFECT_FLAG_DELAY) - e3:SetCondition(c96570609.spcon) - e3:SetTarget(c96570609.sptg) - e3:SetOperation(c96570609.spop) - c:RegisterEffect(e3) - --summon - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(96570609,2)) - e4:SetCategory(CATEGORY_SUMMON) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetRange(LOCATION_HAND) - e4:SetCode(EVENT_FREE_CHAIN) - e4:SetHintTiming(0,0x1c0+TIMING_MAIN_END) - e4:SetCondition(c96570609.sumcon) - e4:SetCost(c96570609.sumcost) - e4:SetTarget(c96570609.sumtg) - e4:SetOperation(c96570609.sumop) - c:RegisterEffect(e4) -end -function c96570609.otfilter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE -end -function c96570609.otcon(e,c) - if c==nil then return true end - local mg=Duel.GetMatchingGroup(c96570609.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - return c:GetLevel()>6 and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.GetTributeCount(c,mg)>0 -end -function c96570609.otop(e,tp,eg,ep,ev,re,r,rp,c) - local mg=Duel.GetMatchingGroup(c96570609.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) - local sg=Duel.SelectTribute(tp,c,1,1,mg) - c:SetMaterial(sg) - Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) -end -function c96570609.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE -end -function c96570609.tgfilter(c) - return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGrave() -end -function c96570609.spfilter(c,e,tp) - return c:IsAttackAbove(2400) and c:GetDefense()==1000 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c96570609.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=Duel.GetMatchingGroup(c96570609.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil) - return g:GetClassCount(Card.GetCode)>1 - and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c96570609.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) - end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,tp,LOCATION_DECK) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c96570609.spop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c96570609.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil) - if g:GetClassCount(Card.GetCode)<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local tg1=g:Select(tp,1,1,nil) - g:Remove(Card.IsCode,nil,tg1:GetFirst():GetCode()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local tg2=g:Select(tp,1,1,nil) - tg1:Merge(tg2) - if Duel.SendtoGrave(tg1,REASON_EFFECT)~=0 and tg1:IsExists(Card.IsLocation,2,nil,LOCATION_GRAVE) then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c96570609.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetOperation(c96570609.thop) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - end - end -end -function c96570609.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) -end -function c96570609.sumcon(e,tp,eg,ep,ev,re,r,rp) - local ph=Duel.GetCurrentPhase() - return Duel.GetTurnPlayer()~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) -end -function c96570609.cfilter(c) - return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemoveAsCost() -end -function c96570609.sumcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.IsExistingMatchingCard(c96570609.cfilter,tp,LOCATION_GRAVE,0,1,nil) - and c:GetFlagEffect(96570609)==0 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c96570609.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) - c:RegisterFlagEffect(96570609,RESET_CHAIN,0,1) -end -function c96570609.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsSummonable(true,nil,1) or c:IsMSetable(true,nil,1) end - Duel.SetOperationInfo(0,CATEGORY_SUMMON,c,1,0,0) -end -function c96570609.sumop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local pos=0 - if c:IsSummonable(true,nil,1) then pos=pos+POS_FACEUP_ATTACK end - if c:IsMSetable(true,nil,1) then pos=pos+POS_FACEDOWN_DEFENSE end - if pos==0 then return end - if Duel.SelectPosition(tp,c,pos)==POS_FACEUP_ATTACK then - Duel.Summon(tp,c,true,nil,1) - else - Duel.MSet(tp,c,true,nil,1) - end -end +--天帝アイテール +function c96570609.initial_effect(c) + --summon with 1 tribute + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(96570609,0)) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SUMMON_PROC) + e1:SetCondition(c96570609.otcon) + e1:SetOperation(c96570609.otop) + e1:SetValue(SUMMON_TYPE_ADVANCE) + c:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_SET_PROC) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(96570609,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOGRAVE) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_SUMMON_SUCCESS) + e3:SetProperty(EFFECT_FLAG_DELAY) + e3:SetCondition(c96570609.spcon) + e3:SetTarget(c96570609.sptg) + e3:SetOperation(c96570609.spop) + c:RegisterEffect(e3) + --summon + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(96570609,2)) + e4:SetCategory(CATEGORY_SUMMON) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_HAND) + e4:SetCode(EVENT_FREE_CHAIN) + e4:SetHintTiming(0,0x1c0+TIMING_MAIN_END) + e4:SetCondition(c96570609.sumcon) + e4:SetCost(c96570609.sumcost) + e4:SetTarget(c96570609.sumtg) + e4:SetOperation(c96570609.sumop) + c:RegisterEffect(e4) +end +function c96570609.otfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_ADVANCE)==SUMMON_TYPE_ADVANCE +end +function c96570609.otcon(e,c) + if c==nil then return true end + local oppo=0 + if Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 then oppo=LOCATION_MZONE end + local mg=Duel.GetMatchingGroup(c96570609.otfilter,c:GetControler(),LOCATION_MZONE,oppo,nil) + return c:GetLevel()>6 and Duel.GetTributeCount(c,mg)>0 +end +function c96570609.otop(e,tp,eg,ep,ev,re,r,rp,c) + local mg=Duel.GetMatchingGroup(c96570609.otfilter,0,LOCATION_MZONE,LOCATION_MZONE,nil) + local sg=Duel.SelectTribute(tp,c,1,1,mg) + c:SetMaterial(sg) + Duel.Release(sg,REASON_SUMMON+REASON_MATERIAL) +end +function c96570609.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_ADVANCE +end +function c96570609.tgfilter(c) + return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToGrave() +end +function c96570609.spfilter(c,e,tp) + return c:IsAttackAbove(2400) and c:GetDefense()==1000 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c96570609.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetMatchingGroup(c96570609.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil) + return g:GetClassCount(Card.GetCode)>1 + and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c96570609.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) + end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,tp,LOCATION_DECK) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c96570609.spop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c96570609.tgfilter,tp,LOCATION_HAND+LOCATION_DECK,0,nil) + if g:GetClassCount(Card.GetCode)<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tg1=g:Select(tp,1,1,nil) + g:Remove(Card.IsCode,nil,tg1:GetFirst():GetCode()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local tg2=g:Select(tp,1,1,nil) + tg1:Merge(tg2) + if Duel.SendtoGrave(tg1,REASON_EFFECT)~=0 and tg1:IsExists(Card.IsLocation,2,nil,LOCATION_GRAVE) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c96570609.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetOperation(c96570609.thop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + end + end +end +function c96570609.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) +end +function c96570609.sumcon(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c96570609.cfilter(c) + return c:IsSetCard(0xbe) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToRemoveAsCost() +end +function c96570609.sumcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c96570609.cfilter,tp,LOCATION_GRAVE,0,1,nil) + and c:GetFlagEffect(96570609)==0 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c96570609.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + c:RegisterFlagEffect(96570609,RESET_CHAIN,0,1) +end +function c96570609.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsSummonable(true,nil,1) or c:IsMSetable(true,nil,1) end + Duel.SetOperationInfo(0,CATEGORY_SUMMON,c,1,0,0) +end +function c96570609.sumop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pos=0 + if c:IsSummonable(true,nil,1) then pos=pos+POS_FACEUP_ATTACK end + if c:IsMSetable(true,nil,1) then pos=pos+POS_FACEDOWN_DEFENSE end + if pos==0 then return end + if Duel.SelectPosition(tp,c,pos)==POS_FACEUP_ATTACK then + Duel.Summon(tp,c,true,nil,1) + else + Duel.MSet(tp,c,true,nil,1) + end +end diff --git a/script/c96592102.lua b/script/c96592102.lua index b8382625..37ea795e 100644 --- a/script/c96592102.lua +++ b/script/c96592102.lua @@ -17,6 +17,7 @@ function c96592102.initial_effect(c) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(96592102,1)) e2:SetCategory(CATEGORY_DESTROY) + e2:SetProperty(EFFECT_FLAG2_XMDETACH) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_BATTLE_DESTROYING) e2:SetCondition(aux.bdocon) diff --git a/script/c96598015.lua b/script/c96598015.lua index 4d4e31a4..e6870573 100644 --- a/script/c96598015.lua +++ b/script/c96598015.lua @@ -1,55 +1,54 @@ ---金満な壺 -function c96598015.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,96598015+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c96598015.cost) - e1:SetTarget(c96598015.target) - e1:SetOperation(c96598015.activate) - c:RegisterEffect(e1) - Duel.AddCustomActivityCounter(96598015,ACTIVITY_SPSUMMON,c96598015.counterfilter) -end -function c96598015.counterfilter(c) - return bit.band(c:GetSummonType(),SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c96598015.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetCustomActivityCount(96598015,tp,ACTIVITY_SPSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetTarget(c96598015.splimit) - Duel.RegisterEffect(e1,tp) -end -function c96598015.splimit(e,c,sump,sumtype,sumpos,targetp,se) - return bit.band(sumtype,SUMMON_TYPE_PENDULUM)~=SUMMON_TYPE_PENDULUM -end -function c96598015.filter(c) - return c:IsType(TYPE_PENDULUM) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsAbleToDeck() -end -function c96598015.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,2) - and Duel.IsExistingMatchingCard(c96598015.filter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,3,nil) end - Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,3,0,0) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) -end -function c96598015.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c96598015.filter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,nil) - if g:GetCount()<3 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local sg=g:Select(tp,3,3,nil) - if sg:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end - Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) - local og=Duel.GetOperatedGroup() - if og:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then Duel.ShuffleDeck(tp) end - local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) - if ct==3 then - Duel.BreakEffect() - Duel.Draw(tp,2,REASON_EFFECT) - end -end +--金満な壺 +function c96598015.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,96598015+EFFECT_COUNT_CODE_OATH) + e1:SetCost(c96598015.cost) + e1:SetTarget(c96598015.target) + e1:SetOperation(c96598015.activate) + c:RegisterEffect(e1) + Duel.AddCustomActivityCounter(96598015,ACTIVITY_SPSUMMON,c96598015.counterfilter) +end +function c96598015.counterfilter(c) + return bit.band(c:GetSummonType(),SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c96598015.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetCustomActivityCount(96598015,tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetTarget(c96598015.splimit) + Duel.RegisterEffect(e1,tp) +end +function c96598015.splimit(e,c,sump,sumtype,sumpos,targetp,se) + return bit.band(sumtype,SUMMON_TYPE_PENDULUM)~=SUMMON_TYPE_PENDULUM +end +function c96598015.filter(c) + return c:IsType(TYPE_PENDULUM) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsAbleToDeck() +end +function c96598015.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,2) + and Duel.IsExistingMatchingCard(c96598015.filter,tp,LOCATION_EXTRA+LOCATION_GRAVE,0,3,nil) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,3,0,0) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) +end +function c96598015.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c96598015.filter),tp,LOCATION_EXTRA+LOCATION_GRAVE,0,nil) + if g:GetCount()<3 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local sg=g:Select(tp,3,3,nil) + Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) + local og=Duel.GetOperatedGroup() + if og:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then Duel.ShuffleDeck(tp) end + local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA) + if ct==3 then + Duel.BreakEffect() + Duel.Draw(tp,2,REASON_EFFECT) + end +end diff --git a/script/c96606246.lua b/script/c96606246.lua index 8176518e..267b4cbd 100644 --- a/script/c96606246.lua +++ b/script/c96606246.lua @@ -21,8 +21,8 @@ end function c96606246.spop(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,c96606246.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c96606246.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c96622984.lua b/script/c96622984.lua index bbd8d121..9112dc77 100644 --- a/script/c96622984.lua +++ b/script/c96622984.lua @@ -22,7 +22,7 @@ function c96622984.initial_effect(c) c:RegisterEffect(e2) end function c96622984.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsCanAddCounter(0x1041,1) end + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsCanAddCounter(0x1041,1) end if chk==0 then return Duel.IsExistingTarget(Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,nil,0x1041,1) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) Duel.SelectTarget(tp,Card.IsCanAddCounter,tp,0,LOCATION_MZONE,1,1,nil,0x1041,1) diff --git a/script/c9666558.lua b/script/c9666558.lua index 90d7f88a..218f9c8f 100644 --- a/script/c9666558.lua +++ b/script/c9666558.lua @@ -1,14 +1,14 @@ ---ゴーレム・ドラゴン -function c9666558.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c9666558.tg) - c:RegisterEffect(e1) -end -function c9666558.tg(e,c) - return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_DRAGON) -end +--ゴーレム・ドラゴン +function c9666558.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c9666558.tg) + c:RegisterEffect(e1) +end +function c9666558.tg(e,c) + return c~=e:GetHandler() and c:IsFaceup() and c:IsRace(RACE_DRAGON) +end diff --git a/script/c96682430.lua b/script/c96682430.lua index bd274a63..b617e6f4 100644 --- a/script/c96682430.lua +++ b/script/c96682430.lua @@ -1,30 +1,30 @@ ---水精鱗-アビスヒルデ -function c96682430.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(96682430,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCountLimit(1,96682430) - e1:SetTarget(c96682430.target) - e1:SetOperation(c96682430.operation) - c:RegisterEffect(e1) -end -function c96682430.filter(c,e,tp) - return c:IsSetCard(0x74) and c:GetCode()~=96682430 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c96682430.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c96682430.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c96682430.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,c96682430.filter,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 c96682430.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(96682430,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCountLimit(1,96682430) + e1:SetTarget(c96682430.target) + e1:SetOperation(c96682430.operation) + c:RegisterEffect(e1) +end +function c96682430.filter(c,e,tp) + return c:IsSetCard(0x74) and c:GetCode()~=96682430 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c96682430.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c96682430.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c96682430.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,c96682430.filter,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 diff --git a/script/c96729612.lua b/script/c96729612.lua index 4a8b546a..37daaa2f 100644 --- a/script/c96729612.lua +++ b/script/c96729612.lua @@ -25,12 +25,11 @@ function c96729612.activate(e,tp,eg,ep,ev,re,r,rp) if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) - local mg=Duel.GetMatchingGroup(c96729612.filter2,tp,LOCATION_GRAVE,0,nil) + local mg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c96729612.filter2),tp,LOCATION_GRAVE,0,nil) if mg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(96729612,0)) then Duel.BreakEffect() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local sg=mg:Select(tp,1,1,nil) - if sg:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then return end Duel.SendtoHand(sg,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,sg) end diff --git a/script/c96746083.lua b/script/c96746083.lua index 67554d68..b3b5092c 100644 --- a/script/c96746083.lua +++ b/script/c96746083.lua @@ -24,15 +24,20 @@ end function c96746083.desfilter(c) return c:IsType(TYPE_MONSTER) and ((c:IsLocation(LOCATION_MZONE) and c:IsFaceup()) or c:IsLocation(LOCATION_HAND)) end +function c96746083.locfilter(c,tp) + return c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) +end function c96746083.sptg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_MZONE+LOCATION_HAND if ft<0 then loc=LOCATION_MZONE end - local g=Duel.GetMatchingGroup(c96746083.desfilter,tp,loc,0,c) + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,88581108) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c96746083.desfilter,tp,loc,loc2,c) if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and g:GetCount()>=2 and g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_FIRE) - and (ft>0 or g:IsExists(Card.IsLocation,-ft+1,nil,LOCATION_MZONE)) end + and (ft>0 or g:IsExists(c96746083.locfilter,-ft+1,nil,tp)) end Duel.SetOperationInfo(0,CATEGORY_DESTROY,nil,2,tp,loc) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) end @@ -44,12 +49,14 @@ function c96746083.spop(e,tp,eg,ep,ev,re,r,rp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_MZONE+LOCATION_HAND if ft<0 then loc=LOCATION_MZONE end - local g=Duel.GetMatchingGroup(c96746083.desfilter,tp,loc,0,c) + local loc2=0 + if Duel.IsPlayerAffectedByEffect(tp,88581108) then loc2=LOCATION_MZONE end + local g=Duel.GetMatchingGroup(c96746083.desfilter,tp,loc,loc2,c) if g:GetCount()<2 or not g:IsExists(Card.IsAttribute,1,nil,ATTRIBUTE_FIRE) then return end local g1=nil local g2=nil Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) if ft<1 then - g1=g:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE) + g1=g:FilterSelect(tp,c96746083.locfilter,1,1,nil,tp) else g1=g:Select(tp,1,1,nil) end @@ -95,4 +102,4 @@ function c96746083.thop(e,tp,eg,ep,ev,re,r,rp) Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end -end +end \ No newline at end of file diff --git a/script/c96765646.lua b/script/c96765646.lua index 2c199a31..d08c3764 100644 --- a/script/c96765646.lua +++ b/script/c96765646.lua @@ -1,41 +1,41 @@ ---思い出のブランコ -function c96765646.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c96765646.target) - e1:SetOperation(c96765646.activate) - c:RegisterEffect(e1) -end -function c96765646.filter(c,e,tp) - return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c96765646.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c96765646.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c96765646.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c96765646.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c96765646.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetOperation(c96765646.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - tc:RegisterEffect(e1,true) - end -end -function c96765646.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Destroy(e:GetHandler(),REASON_EFFECT) -end +--思い出のブランコ +function c96765646.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c96765646.target) + e1:SetOperation(c96765646.activate) + c:RegisterEffect(e1) +end +function c96765646.filter(c,e,tp) + return c:IsType(TYPE_NORMAL) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c96765646.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c96765646.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c96765646.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c96765646.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c96765646.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetOperation(c96765646.desop) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + tc:RegisterEffect(e1,true) + end +end +function c96765646.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Destroy(e:GetHandler(),REASON_EFFECT) +end diff --git a/script/c96789758.lua b/script/c96789758.lua index fb53cf71..2add49f2 100644 --- a/script/c96789758.lua +++ b/script/c96789758.lua @@ -1,44 +1,44 @@ ---アロマージ-ジャスミン -function c96789758.initial_effect(c) - --extra summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) - e1:SetCondition(c96789758.excon) - e1:SetTarget(c96789758.extg) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_RECOVER) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetCountLimit(1) - e2:SetCondition(c96789758.drcon) - e2:SetTarget(c96789758.drtg) - e2:SetOperation(c96789758.drop) - c:RegisterEffect(e2) -end -function c96789758.excon(e) - local tp=e:GetHandlerPlayer() - return Duel.GetLP(tp)>Duel.GetLP(1-tp) -end -function c96789758.extg(e,c) - return c:IsRace(RACE_PLANT) and not c:IsCode(96789758) -end -function c96789758.drcon(e,tp,eg,ep,ev,re,r,rp) - return ep==tp -end -function c96789758.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return ep==tp and e:GetHandler():IsRelateToEffect(e) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c96789758.drop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TRIGGERING_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Draw(p,d,REASON_EFFECT) -end +--アロマージ-ジャスミン +function c96789758.initial_effect(c) + --extra summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_EXTRA_SUMMON_COUNT) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(LOCATION_HAND+LOCATION_MZONE,0) + e1:SetCondition(c96789758.excon) + e1:SetTarget(c96789758.extg) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetCode(EVENT_RECOVER) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetCountLimit(1) + e2:SetCondition(c96789758.drcon) + e2:SetTarget(c96789758.drtg) + e2:SetOperation(c96789758.drop) + c:RegisterEffect(e2) +end +function c96789758.excon(e) + local tp=e:GetHandlerPlayer() + return Duel.GetLP(tp)>Duel.GetLP(1-tp) +end +function c96789758.extg(e,c) + return c:IsRace(RACE_PLANT) and not c:IsCode(96789758) +end +function c96789758.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep==tp +end +function c96789758.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return ep==tp and e:GetHandler():IsRelateToEffect(e) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c96789758.drop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TRIGGERING_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Draw(p,d,REASON_EFFECT) +end diff --git a/script/c96802306.lua b/script/c96802306.lua index d140c10b..40d91358 100644 --- a/script/c96802306.lua +++ b/script/c96802306.lua @@ -1,44 +1,44 @@ ---イグナイト・キャリバー -function c96802306.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c96802306.thcon) - e2:SetTarget(c96802306.thtg) - e2:SetOperation(c96802306.thop) - c:RegisterEffect(e2) -end -function c96802306.thcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return pc and pc:IsSetCard(0xc8) -end -function c96802306.filter(c) - return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() -end -function c96802306.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if chk==0 then return Duel.IsExistingMatchingCard(c96802306.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - local g=Group.FromCards(c,pc) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c96802306.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if not pc then return end - local dg=Group.FromCards(c,pc) - if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c96802306.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--イグナイト・キャリバー +function c96802306.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c96802306.thcon) + e2:SetTarget(c96802306.thtg) + e2:SetOperation(c96802306.thop) + c:RegisterEffect(e2) +end +function c96802306.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsSetCard(0xc8) +end +function c96802306.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c96802306.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if chk==0 then return Duel.IsExistingMatchingCard(c96802306.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c96802306.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local dg=Group.FromCards(c,pc) + if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c96802306.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c96857854.lua b/script/c96857854.lua new file mode 100644 index 00000000..4afe614d --- /dev/null +++ b/script/c96857854.lua @@ -0,0 +1,131 @@ +--ダイヤモンドダストン +--Diamond Duston +--Script by dest +function c96857854.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCountLimit(1) + e1:SetCondition(c96857854.condition) + e1:SetTarget(c96857854.target) + e1:SetOperation(c96857854.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(96857854,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1) + e2:SetHintTiming(0,TIMING_END_PHASE) + e2:SetCost(c96857854.spcost) + e2:SetTarget(c96857854.sptg) + e2:SetOperation(c96857854.spop) + c:RegisterEffect(e2) +end +function c96857854.cfilter(c) + return c:IsReason(REASON_BATTLE+REASON_EFFECT) and c:IsPreviousLocation(LOCATION_ONFIELD) +end +function c96857854.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c96857854.cfilter,1,nil) +end +function c96857854.filter(c,e,tp) + return c:IsSetCard(0x80) and (c:IsCanBeSpecialSummoned(e,0,tp,false,false) + or c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp)) +end +function c96857854.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ct=eg:GetCount() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)+Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if chk==0 then return (not Duel.IsPlayerAffectedByEffect(tp,59822133) or ct==1) and ft>=ct + and Duel.IsExistingMatchingCard(c96857854.filter,tp,LOCATION_DECK+LOCATION_HAND,0,ct,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,tp,LOCATION_DECK+LOCATION_HAND) +end +function c96857854.operation(e,tp,eg,ep,ev,re,r,rp) + local ct=eg:GetCount() + if Duel.IsPlayerAffectedByEffect(tp,59822133) and ct>1 then return end + local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) + local ft2=Duel.GetLocationCount(1-tp,LOCATION_MZONE) + if ft1<=0 and ft2<=0 then return end + if ft1+ft2g:GetCount() then return end + if ft2>ct then ft2=ct end + local ct2=ct-ft1 + local tc=nil + if ft2>0 and (ct2>0 or Duel.SelectYesNo(tp,aux.Stringid(96857854,0))) then + if ct2<=0 then ct2=1 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg1=g:FilterSelect(tp,Card.IsCanBeSpecialSummoned,ct2,ft2,nil,e,0,tp,false,false,POS_FACEUP,1-tp) + tc=sg1:GetFirst() + g:Sub(sg1) + ct=ct-sg1:GetCount() + while tc do + Duel.SpecialSummonStep(tc,0,tp,1-tp,false,false,POS_FACEUP) + tc=sg1:GetNext() + end + end + if ct>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg2=g:Select(tp,ct,ct,nil) + tc=sg2:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc=sg2:GetNext() + end + end + Duel.SpecialSummonComplete() +end +function c96857854.spfilter(c) + return c:IsSetCard(0x80) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c96857854.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c96857854.spfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c96857854.spfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c96857854.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,96857854,0,0x11,0,1000,1,RACE_FIEND,ATTRIBUTE_DARK,POS_FACEUP_DEFENSE,1-tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c96857854.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(1-tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) + and Duel.IsPlayerCanSpecialSummonMonster(tp,96857854,0,0x11,0,1000,1,RACE_FIEND,ATTRIBUTE_DARK,POS_FACEUP_DEFENSE,1-tp) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,1-tp,true,false,POS_FACEUP_DEFENSE) + c:AddMonsterAttributeComplete() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_UNRELEASABLE_SUM) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1,true) + local e2=e1:Clone() + e2:SetCode(EFFECT_UNRELEASABLE_NONSUM) + c:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL) + e3:SetValue(1) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3,true) + local e4=e3:Clone() + e4:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL) + c:RegisterEffect(e4,true) + local e5=e3:Clone() + e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL) + c:RegisterEffect(e5,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c96864105.lua b/script/c96864105.lua index db3538e8..c743962d 100644 --- a/script/c96864105.lua +++ b/script/c96864105.lua @@ -8,6 +8,7 @@ function c96864105.initial_effect(c) e1:SetDescription(aux.Stringid(96864105,0)) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) e1:SetRange(LOCATION_MZONE) e1:SetCondition(c96864105.atkcon) diff --git a/script/c96864811.lua b/script/c96864811.lua index 829516f8..74834a4c 100644 --- a/script/c96864811.lua +++ b/script/c96864811.lua @@ -4,10 +4,9 @@ function c96864811.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_ATKCHANGE) e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetHintTiming(TIMING_DAMAGE_STEP) e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER) + e1:SetHintTiming(TIMING_DAMAGE_STEP,TIMINGS_CHECK_MONSTER+TIMING_DAMAGE_STEP) e1:SetCondition(c96864811.condition) e1:SetTarget(c96864811.target) e1:SetOperation(c96864811.activate) diff --git a/script/c96875080.lua b/script/c96875080.lua index 7df18f4b..68f706b6 100644 --- a/script/c96875080.lua +++ b/script/c96875080.lua @@ -1,39 +1,39 @@ ---大気圏外射撃 -function c96875080.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,TIMING_END_PHASE) - e1:SetCost(c96875080.cost) - e1:SetTarget(c96875080.target) - e1:SetOperation(c96875080.activate) - c:RegisterEffect(e1) -end -function c96875080.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0xc) and c:IsAbleToGraveAsCost() -end -function c96875080.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c96875080.cfilter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c96875080.cfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c96875080.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c96875080.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c96875080.filter(chkc) and chkc~=e:GetHandler() end - if chk==0 then return Duel.IsExistingTarget(c96875080.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c96875080.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c96875080.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--大気圏外射撃 +function c96875080.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,TIMING_END_PHASE) + e1:SetCost(c96875080.cost) + e1:SetTarget(c96875080.target) + e1:SetOperation(c96875080.activate) + c:RegisterEffect(e1) +end +function c96875080.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0xc) and c:IsAbleToGraveAsCost() +end +function c96875080.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c96875080.cfilter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c96875080.cfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c96875080.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c96875080.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c96875080.filter(chkc) and chkc~=e:GetHandler() end + if chk==0 then return Duel.IsExistingTarget(c96875080.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c96875080.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c96875080.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c97007933.lua b/script/c97007933.lua index 96296e2c..759be915 100644 --- a/script/c97007933.lua +++ b/script/c97007933.lua @@ -1,81 +1,81 @@ ---HSR魔剣ダーマ -function c97007933.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --pierce - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(97007933,0)) - e2:SetCategory(CATEGORY_DAMAGE) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,97007933) - e2:SetCost(c97007933.damcost) - e2:SetTarget(c97007933.damtg) - e2:SetOperation(c97007933.damop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(97007933,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetRange(LOCATION_GRAVE) - e3:SetCountLimit(1,97007934) - e3:SetCondition(c97007933.spcon) - e3:SetCost(c97007933.spcost) - e3:SetTarget(c97007933.sptg) - e3:SetOperation(c97007933.spop) - c:RegisterEffect(e3) -end -function c97007933.cfilter(c) - return c:IsRace(RACE_MACHINE) and c:IsAbleToRemoveAsCost() -end -function c97007933.damcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c97007933.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c97007933.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c97007933.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) -end -function c97007933.damop(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.Damage(p,d,REASON_EFFECT) -end -function c97007933.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 -end -function c97007933.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SUMMON) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - Duel.RegisterEffect(e1,tp) - local e2=e1:Clone() - e2:SetCode(EFFECT_CANNOT_MSET) - Duel.RegisterEffect(e2,tp) -end -function c97007933.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c97007933.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) then - Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) - end -end +--HSR魔剣ダーマ +function c97007933.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --pierce + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(97007933,0)) + e2:SetCategory(CATEGORY_DAMAGE) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,97007933) + e2:SetCost(c97007933.damcost) + e2:SetTarget(c97007933.damtg) + e2:SetOperation(c97007933.damop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(97007933,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetCountLimit(1,97007934) + e3:SetCondition(c97007933.spcon) + e3:SetCost(c97007933.spcost) + e3:SetTarget(c97007933.sptg) + e3:SetOperation(c97007933.spop) + c:RegisterEffect(e3) +end +function c97007933.cfilter(c) + return c:IsRace(RACE_MACHINE) and c:IsAbleToRemoveAsCost() +end +function c97007933.damcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c97007933.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c97007933.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c97007933.damtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(1-tp) + Duel.SetTargetParam(500) + Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) +end +function c97007933.damop(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.Damage(p,d,REASON_EFFECT) +end +function c97007933.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_ONFIELD,0)==0 +end +function c97007933.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_NORMALSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SUMMON) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + Duel.RegisterEffect(e1,tp) + local e2=e1:Clone() + e2:SetCode(EFFECT_CANNOT_MSET) + Duel.RegisterEffect(e2,tp) +end +function c97007933.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c97007933.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) then + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c97024987.lua b/script/c97024987.lua index a48d0a7d..c5c7eb4e 100644 --- a/script/c97024987.lua +++ b/script/c97024987.lua @@ -1,44 +1,44 @@ ---イグナイト・ドラグノフ -function c97024987.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --tohand - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_PZONE) - e2:SetCondition(c97024987.thcon) - e2:SetTarget(c97024987.thtg) - e2:SetOperation(c97024987.thop) - c:RegisterEffect(e2) -end -function c97024987.thcon(e,tp,eg,ep,ev,re,r,rp) - local seq=e:GetHandler():GetSequence() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) - return pc and pc:IsSetCard(0xc8) -end -function c97024987.filter(c) - return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() -end -function c97024987.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if chk==0 then return Duel.IsExistingMatchingCard(c97024987.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end - local g=Group.FromCards(c,pc) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c97024987.thop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) - if not pc then return end - local dg=Group.FromCards(c,pc) - if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c97024987.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--イグナイト・ドラグノフ +function c97024987.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --tohand + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_PZONE) + e2:SetCondition(c97024987.thcon) + e2:SetTarget(c97024987.thtg) + e2:SetOperation(c97024987.thop) + c:RegisterEffect(e2) +end +function c97024987.thcon(e,tp,eg,ep,ev,re,r,rp) + local seq=e:GetHandler():GetSequence() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-seq) + return pc and pc:IsSetCard(0xc8) +end +function c97024987.filter(c) + return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToHand() +end +function c97024987.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if chk==0 then return Duel.IsExistingMatchingCard(c97024987.filter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end + local g=Group.FromCards(c,pc) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c97024987.thop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local pc=Duel.GetFieldCard(tp,LOCATION_SZONE,13-c:GetSequence()) + if not pc then return end + local dg=Group.FromCards(c,pc) + if Duel.Destroy(dg,REASON_EFFECT)~=2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c97024987.filter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c97093037.lua b/script/c97093037.lua index 437787cc..e92b5e33 100644 --- a/script/c97093037.lua +++ b/script/c97093037.lua @@ -1,33 +1,33 @@ ---創世者の化身 -function c97093037.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(97093037,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c97093037.spcost) - e1:SetTarget(c97093037.sptg) - e1:SetOperation(c97093037.spop) - c:RegisterEffect(e1) -end -function c97093037.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c97093037.filter(c,e,tp) - return c:IsCode(61505339) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c97093037.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c97093037.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c97093037.spop(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,c97093037.filter,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 c97093037.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(97093037,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c97093037.spcost) + e1:SetTarget(c97093037.sptg) + e1:SetOperation(c97093037.spop) + c:RegisterEffect(e1) +end +function c97093037.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c97093037.filter(c,e,tp) + return c:IsCode(61505339) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c97093037.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c97093037.filter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c97093037.spop(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,c97093037.filter,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 diff --git a/script/c97120394.lua b/script/c97120394.lua index b32ebf4d..f36ff84b 100644 --- a/script/c97120394.lua +++ b/script/c97120394.lua @@ -1,34 +1,34 @@ ---封魔の矢 -function c97120394.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(TIMING_BATTLE_START) - e1:SetCondition(c97120394.condition) - e1:SetTarget(c97120394.target) - e1:SetOperation(c97120394.activate) - c:RegisterEffect(e1) -end -function c97120394.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()==PHASE_BATTLE_START -end -function c97120394.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - if e:IsHasType(EFFECT_TYPE_ACTIVATE) then - Duel.SetChainLimit(aux.FALSE) - end -end -function c97120394.activate(e,tp,eg,ep,ev,re,r,rp) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTargetRange(1,1) - e1:SetValue(c97120394.aclimit) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c97120394.aclimit(e,re,tp) - return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) -end +--封魔の矢 +function c97120394.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(TIMING_BATTLE_START) + e1:SetCondition(c97120394.condition) + e1:SetTarget(c97120394.target) + e1:SetOperation(c97120394.activate) + c:RegisterEffect(e1) +end +function c97120394.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()==PHASE_BATTLE_START +end +function c97120394.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + Duel.SetChainLimit(aux.FALSE) + end +end +function c97120394.activate(e,tp,eg,ep,ev,re,r,rp) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTargetRange(1,1) + e1:SetValue(c97120394.aclimit) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c97120394.aclimit(e,re,tp) + return re:IsActiveType(TYPE_SPELL+TYPE_TRAP) +end diff --git a/script/c97151365.lua b/script/c97151365.lua index 66a9ca12..82580f5c 100644 --- a/script/c97151365.lua +++ b/script/c97151365.lua @@ -1,57 +1,57 @@ ---スターゲート -function c97151365.initial_effect(c) - c:EnableCounterPermit(0x1e) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --Add counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - e2:SetCode(EVENT_DAMAGE_STEP_END) - e2:SetRange(LOCATION_SZONE) - e2:SetOperation(c97151365.ctop) - c:RegisterEffect(e2) - --spsummon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(97151365,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_QUICK_O) - e3:SetCode(EVENT_FREE_CHAIN) - e3:SetRange(LOCATION_SZONE) - e3:SetCondition(c97151365.spcon) - e3:SetCost(c97151365.spcost) - e3:SetTarget(c97151365.sptg) - e3:SetOperation(c97151365.spop) - c:RegisterEffect(e3) -end -function c97151365.ctop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetTurnPlayer()~=tp or Duel.GetAttackTarget()~=nil then - e:GetHandler():AddCounter(0x1e,1) - end -end -function c97151365.spcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()==tp and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) -end -function c97151365.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - e:SetLabel(e:GetHandler():GetCounter(0x1e)) - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c97151365.filter(c,e,tp,lv) - return c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c97151365.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c97151365.filter,tp,LOCATION_HAND,0,1,nil,e,tp,e:GetHandler():GetCounter(0x1e)) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) -end -function c97151365.spop(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,c97151365.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,e:GetLabel()) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--スターゲート +function c97151365.initial_effect(c) + c:EnableCounterPermit(0x1e) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --Add counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EVENT_DAMAGE_STEP_END) + e2:SetRange(LOCATION_SZONE) + e2:SetOperation(c97151365.ctop) + c:RegisterEffect(e2) + --spsummon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(97151365,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetRange(LOCATION_SZONE) + e3:SetCondition(c97151365.spcon) + e3:SetCost(c97151365.spcost) + e3:SetTarget(c97151365.sptg) + e3:SetOperation(c97151365.spop) + c:RegisterEffect(e3) +end +function c97151365.ctop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetTurnPlayer()~=tp or Duel.GetAttackTarget()~=nil then + e:GetHandler():AddCounter(0x1e,1) + end +end +function c97151365.spcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()==tp and (Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2) +end +function c97151365.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + e:SetLabel(e:GetHandler():GetCounter(0x1e)) + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c97151365.filter(c,e,tp,lv) + return c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c97151365.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c97151365.filter,tp,LOCATION_HAND,0,1,nil,e,tp,e:GetHandler():GetCounter(0x1e)) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c97151365.spop(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,c97151365.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp,e:GetLabel()) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c97168905.lua b/script/c97168905.lua index 2fc2f6df..c3a63e70 100644 --- a/script/c97168905.lua +++ b/script/c97168905.lua @@ -1,48 +1,48 @@ ---奇跡の軌跡 -function c97168905.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW+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(c97168905.condition) - e1:SetTarget(c97168905.target) - e1:SetOperation(c97168905.activate) - c:RegisterEffect(e1) -end -function c97168905.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c97168905.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:IsPosition(POS_FACEUP_ATTACK) end - if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) - and Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_ATTACK) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) -end -function c97168905.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.Draw(1-tp,1,REASON_EFFECT) - local tc=Duel.GetFirstTarget() - if 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+PHASE_END) - e1:SetValue(1000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e2:SetValue(1) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_NO_BATTLE_DAMAGE) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end -end +--奇跡の軌跡 +function c97168905.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW+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(c97168905.condition) + e1:SetTarget(c97168905.target) + e1:SetOperation(c97168905.activate) + c:RegisterEffect(e1) +end +function c97168905.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c97168905.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:IsPosition(POS_FACEUP_ATTACK) end + if chk==0 then return Duel.IsPlayerCanDraw(1-tp,1) + and Duel.IsExistingTarget(Card.IsPosition,tp,LOCATION_MZONE,0,1,nil,POS_FACEUP_ATTACK) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,Card.IsPosition,tp,LOCATION_MZONE,0,1,1,nil,POS_FACEUP_ATTACK) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,1-tp,1) +end +function c97168905.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.Draw(1-tp,1,REASON_EFFECT) + local tc=Duel.GetFirstTarget() + if 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+PHASE_END) + e1:SetValue(1000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_EXTRA_ATTACK_MONSTER) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e2:SetValue(1) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_NO_BATTLE_DAMAGE) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end +end diff --git a/script/c97170107.lua b/script/c97170107.lua index 903f9275..921d1dcc 100644 --- a/script/c97170107.lua +++ b/script/c97170107.lua @@ -7,6 +7,7 @@ function c97170107.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(97170107,0)) e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetProperty(EFFECT_FLAG2_XMDETACH) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetRange(LOCATION_MZONE) diff --git a/script/c97211663.lua b/script/c97211663.lua index aac11914..0a257f4a 100644 --- a/script/c97211663.lua +++ b/script/c97211663.lua @@ -1,115 +1,115 @@ ---影霊衣の反魂術 -function c97211663.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCountLimit(1,97211663) - e1:SetTarget(c97211663.target) - e1:SetOperation(c97211663.activate) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c97211663.thcon) - e2:SetCost(c97211663.thcost) - e2:SetTarget(c97211663.thtg) - e2:SetOperation(c97211663.thop) - c:RegisterEffect(e2) -end -function c97211663.filter(c,e,tp,m,ft) - if not c:IsSetCard(0xb4) or bit.band(c:GetType(),0x81)~=0x81 - or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end - local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) - if c:IsCode(21105106) then return c:ritual_custom_condition(mg,ft) end - if c.mat_filter then - mg=mg:Filter(c.mat_filter,nil) - end - if ft>0 then - return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) - else - return ft>-1 and mg:IsExists(c97211663.mfilterf,1,nil,tp,mg,c) - end -end -function c97211663.mfilterf(c,tp,mg,rc) - if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then - Duel.SetSelectedCard(c) - return mg:CheckWithSumEqual(Card.GetRitualLevel,rc:GetLevel(),0,99,rc) - else return false end -end -function c97211663.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local mg=Duel.GetRitualMaterial(tp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - return Duel.IsExistingMatchingCard(c97211663.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp,mg,ft) - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c97211663.activate(e,tp,eg,ep,ev,re,r,rp) - local mg=Duel.GetRitualMaterial(tp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=Duel.SelectMatchingCard(tp,c97211663.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp,mg,ft) - local tc=tg:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then - mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) - if tc:IsCode(21105106) then - tc:ritual_custom_operation(mg) - local mat=tc:GetMaterial() - Duel.ReleaseRitualMaterial(mat) - else - if tc.mat_filter then - mg=mg:Filter(tc.mat_filter,nil) - end - local mat=nil - if ft>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - mat=mg:FilterSelect(tp,c97211663.mfilterf,1,1,nil,tp,mg,tc) - Duel.SetSelectedCard(mat) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local mat2=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),0,99,tc) - mat:Merge(mat2) - end - tc:SetMaterial(mat) - Duel.ReleaseRitualMaterial(mat) - end - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) - tc:CompleteProcedure() - end -end -function c97211663.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c97211663.cfilter(c) - return c:IsSetCard(0xb4) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() -end -function c97211663.thcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() - and Duel.IsExistingMatchingCard(c97211663.cfilter,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c97211663.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) - g:AddCard(e:GetHandler()) - Duel.Remove(g,POS_FACEUP,REASON_COST) -end -function c97211663.thfilter(c) - return c:IsSetCard(0xb4) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() -end -function c97211663.thtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c97211663.thfilter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c97211663.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c97211663.thfilter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--影霊衣の反魂術 +function c97211663.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCountLimit(1,97211663) + e1:SetTarget(c97211663.target) + e1:SetOperation(c97211663.activate) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c97211663.thcon) + e2:SetCost(c97211663.thcost) + e2:SetTarget(c97211663.thtg) + e2:SetOperation(c97211663.thop) + c:RegisterEffect(e2) +end +function c97211663.filter(c,e,tp,m,ft) + if not c:IsSetCard(0xb4) or bit.band(c:GetType(),0x81)~=0x81 + or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end + local mg=m:Filter(Card.IsCanBeRitualMaterial,c,c) + if c:IsCode(21105106) then return c:ritual_custom_condition(mg,ft) end + if c.mat_filter then + mg=mg:Filter(c.mat_filter,nil) + end + if ft>0 then + return mg:CheckWithSumEqual(Card.GetRitualLevel,c:GetLevel(),1,99,c) + else + return ft>-1 and mg:IsExists(c97211663.mfilterf,1,nil,tp,mg,c) + end +end +function c97211663.mfilterf(c,tp,mg,rc) + if c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) then + Duel.SetSelectedCard(c) + return mg:CheckWithSumEqual(Card.GetRitualLevel,rc:GetLevel(),0,99,rc) + else return false end +end +function c97211663.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local mg=Duel.GetRitualMaterial(tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + return Duel.IsExistingMatchingCard(c97211663.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp,mg,ft) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c97211663.activate(e,tp,eg,ep,ev,re,r,rp) + local mg=Duel.GetRitualMaterial(tp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c97211663.filter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp,mg,ft) + local tc=tg:GetFirst() + if tc then + mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) + if tc:IsCode(21105106) then + tc:ritual_custom_operation(mg) + local mat=tc:GetMaterial() + Duel.ReleaseRitualMaterial(mat) + else + if tc.mat_filter then + mg=mg:Filter(tc.mat_filter,nil) + end + local mat=nil + if ft>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),1,99,tc) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + mat=mg:FilterSelect(tp,c97211663.mfilterf,1,1,nil,tp,mg,tc) + Duel.SetSelectedCard(mat) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local mat2=mg:SelectWithSumEqual(tp,Card.GetRitualLevel,tc:GetLevel(),0,99,tc) + mat:Merge(mat2) + end + tc:SetMaterial(mat) + Duel.ReleaseRitualMaterial(mat) + end + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) + tc:CompleteProcedure() + end +end +function c97211663.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c97211663.cfilter(c) + return c:IsSetCard(0xb4) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c97211663.thcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() + and Duel.IsExistingMatchingCard(c97211663.cfilter,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c97211663.cfilter,tp,LOCATION_GRAVE,0,1,1,nil) + g:AddCard(e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c97211663.thfilter(c) + return c:IsSetCard(0xb4) and c:IsType(TYPE_SPELL) and c:IsAbleToHand() +end +function c97211663.thtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c97211663.thfilter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c97211663.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c97211663.thfilter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c97219708.lua b/script/c97219708.lua index 30acfb73..e86f1011 100644 --- a/script/c97219708.lua +++ b/script/c97219708.lua @@ -1,104 +1,104 @@ ---RR-ラスト・ストリクス -function c97219708.initial_effect(c) - --recover - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(97219708,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_RECOVER) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c97219708.reccon) - e1:SetTarget(c97219708.rectg) - e1:SetOperation(c97219708.recop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(97219708,1)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1,97219708) - e2:SetCost(c97219708.spcost) - e2:SetTarget(c97219708.sptg) - e2:SetOperation(c97219708.spop) - c:RegisterEffect(e2) -end -function c97219708.reccon(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetAttacker() - local at=Duel.GetAttackTarget() - return (tc:IsControler(tp) and tc:IsSetCard(0xba)) or (at and at:IsControler(tp) and at:IsSetCard(0xba)) -end -function c97219708.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and not e:GetHandler():IsStatus(STATUS_CHAINING) and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) - and Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) end - local ct=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,TYPE_SPELL+TYPE_TRAP) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ct*100) -end -function c97219708.recop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then - local ct=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,TYPE_SPELL+TYPE_TRAP) - if ct>0 then - Duel.BreakEffect() - Duel.Recover(tp,ct*100,REASON_EFFECT) - end - elseif c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c97219708.spfilter(c,e,tp) - return c:IsType(TYPE_XYZ) and c:IsSetCard(0xba) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c97219708.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsReleasable() end - Duel.Release(e:GetHandler(),REASON_COST) -end -function c97219708.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c97219708.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c97219708.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c97219708.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EVENT_PHASE+PHASE_END) - e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e3:SetRange(LOCATION_MZONE) - e3:SetCountLimit(1) - e3:SetOperation(c97219708.tdop) - e3:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e3) - Duel.SpecialSummonComplete() - end - end - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(0,1) - e4:SetValue(1) - e4:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e4,tp) -end -function c97219708.tdop(e,tp,eg,ep,ev,re,r,rp) - Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) -end +--RR-ラスト・ストリクス +function c97219708.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(97219708,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c97219708.reccon) + e1:SetTarget(c97219708.rectg) + e1:SetOperation(c97219708.recop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(97219708,1)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,97219708) + e2:SetCost(c97219708.spcost) + e2:SetTarget(c97219708.sptg) + e2:SetOperation(c97219708.spop) + c:RegisterEffect(e2) +end +function c97219708.reccon(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetAttacker() + local at=Duel.GetAttackTarget() + return (tc:IsControler(tp) and tc:IsSetCard(0xba)) or (at and at:IsControler(tp) and at:IsSetCard(0xba)) +end +function c97219708.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and not e:GetHandler():IsStatus(STATUS_CHAINING) and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP) end + local ct=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,TYPE_SPELL+TYPE_TRAP) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,ct*100) +end +function c97219708.recop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + local ct=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil,TYPE_SPELL+TYPE_TRAP) + if ct>0 then + Duel.BreakEffect() + Duel.Recover(tp,ct*100,REASON_EFFECT) + end + elseif c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c97219708.spfilter(c,e,tp) + return c:IsType(TYPE_XYZ) and c:IsSetCard(0xba) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c97219708.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsReleasable() end + Duel.Release(e:GetHandler(),REASON_COST) +end +function c97219708.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c97219708.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c97219708.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c97219708.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EVENT_PHASE+PHASE_END) + e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e3:SetRange(LOCATION_MZONE) + e3:SetCountLimit(1) + e3:SetOperation(c97219708.tdop) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + Duel.SpecialSummonComplete() + end + end + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_AVOID_BATTLE_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(0,1) + e4:SetValue(1) + e4:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e4,tp) +end +function c97219708.tdop(e,tp,eg,ep,ev,re,r,rp) + Duel.SendtoDeck(e:GetHandler(),nil,2,REASON_EFFECT) +end diff --git a/script/c97268402.lua b/script/c97268402.lua index a3ae310d..0b4a9cd0 100644 --- a/script/c97268402.lua +++ b/script/c97268402.lua @@ -1,53 +1,53 @@ ---エフェクト・ヴェーラー -function c97268402.initial_effect(c) - --disable - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(97268402,0)) - e1:SetCategory(CATEGORY_DISABLE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetHintTiming(0,0x1c0+TIMING_MAIN_END) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c97268402.condition) - e1:SetCost(c97268402.cost) - e1:SetTarget(c97268402.target) - e1:SetOperation(c97268402.operation) - c:RegisterEffect(e1) -end -function c97268402.condition(e,tp,eg,ep,ev,re,r,rp) - local ph=Duel.GetCurrentPhase() - return Duel.GetTurnPlayer()~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) -end -function c97268402.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c97268402.filter(c) - return c:IsFaceup() and not c:IsDisabled() and c:IsType(TYPE_EFFECT) -end -function c97268402.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c97268402.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c97268402.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c97268402.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c97268402.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:IsType(TYPE_MONSTER) and not tc:IsDisabled() and tc:IsControler(1-tp) then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--エフェクト・ヴェーラー +function c97268402.initial_effect(c) + --disable + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(97268402,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetHintTiming(0,0x1c0+TIMING_MAIN_END) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c97268402.condition) + e1:SetCost(c97268402.cost) + e1:SetTarget(c97268402.target) + e1:SetOperation(c97268402.operation) + c:RegisterEffect(e1) +end +function c97268402.condition(e,tp,eg,ep,ev,re,r,rp) + local ph=Duel.GetCurrentPhase() + return Duel.GetTurnPlayer()~=tp and (ph==PHASE_MAIN1 or ph==PHASE_MAIN2) +end +function c97268402.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c97268402.filter(c) + return c:IsFaceup() and not c:IsDisabled() and c:IsType(TYPE_EFFECT) +end +function c97268402.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and c97268402.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c97268402.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c97268402.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c97268402.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:IsType(TYPE_MONSTER) and not tc:IsDisabled() and tc:IsControler(1-tp) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c97362768.lua b/script/c97362768.lua index 88c7ed4c..588fc0a6 100644 --- a/script/c97362768.lua +++ b/script/c97362768.lua @@ -1,21 +1,6 @@ --スパークガン function c97362768.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(c97362768.target) - e1:SetOperation(c97362768.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(c97362768.eqlimit) - c:RegisterEffect(e2) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsCode,20721928)) --pos local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(97362768,0)) @@ -28,26 +13,6 @@ function c97362768.initial_effect(c) c:RegisterEffect(e3) e1:SetLabelObject(e3) end -function c97362768.eqlimit(e,c) - return c:IsCode(20721928) -end -function c97362768.filter(c) - return c:IsFaceup() and c:IsCode(20721928) -end -function c97362768.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c97362768.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c97362768.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c97362768.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c97362768.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) - e:GetLabelObject():SetLabel(0) - end -end function c97362768.postg(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 @@ -56,12 +21,17 @@ function c97362768.postg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) end function c97362768.posop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() local tc=Duel.GetFirstTarget() - if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,0,POS_FACEUP_ATTACK,0) - local ct=e:GetLabel() - ct=ct+1 - e:SetLabel(ct) - if ct==3 then Duel.Destroy(e:GetHandler(),REASON_EFFECT) end + if c:GetFlagEffect(97362768)==0 then + c:RegisterFlagEffect(97362768,RESET_EVENT+0x1fe0000,0,1,1) + else + local ct=c:GetFlagEffectLabel(97362768) + ct=ct+1 + if ct==3 then Duel.Destroy(c,REASON_EFFECT) + else c:SetFlagEffectLabel(97362768,ct) end + end end end diff --git a/script/c97403510.lua b/script/c97403510.lua index 7f7006d7..8396f9d6 100644 --- a/script/c97403510.lua +++ b/script/c97403510.lua @@ -18,6 +18,7 @@ function c97403510.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(97403510,0)) e3:SetCategory(CATEGORY_REMOVE) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e3:SetCode(EVENT_PHASE+PHASE_END) e3:SetRange(LOCATION_MZONE) diff --git a/script/c97452817.lua b/script/c97452817.lua index ae436398..04ceb959 100644 --- a/script/c97452817.lua +++ b/script/c97452817.lua @@ -41,7 +41,7 @@ function c97452817.arcanareg(c,coin) e1:SetCondition(c97452817.spcon) e1:SetTarget(c97452817.sptg) e1:SetOperation(c97452817.spop) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) -- local e2=Effect.CreateEffect(c) @@ -55,9 +55,9 @@ function c97452817.arcanareg(c,coin) e2:SetCondition(c97452817.ctcon) e2:SetTarget(c97452817.cttg) e2:SetOperation(c97452817.ctop) - e2:SetReset(RESET_EVENT+0x1ff0000) + e2:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e2) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) end function c97452817.spcon(e,tp,eg,ep,ev,re,r,rp) return ep==tp and e:GetHandler():GetFlagEffectLabel(36690018)==1 diff --git a/script/c97466438.lua b/script/c97466438.lua index ba8a1115..84bb2b73 100644 --- a/script/c97466438.lua +++ b/script/c97466438.lua @@ -1,74 +1,74 @@ ---ヨコシマウマ -function c97466438.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c,false) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(1160) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetRange(LOCATION_HAND) - e1:SetCost(c97466438.reg) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(97466438,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_SUMMON_SUCCESS) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e2:SetTarget(c97466438.ztg) - e2:SetOperation(c97466438.zop2) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_SPSUMMON_SUCCESS) - c:RegisterEffect(e3) - --disable zone - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(97466438,1)) - e4:SetType(EFFECT_TYPE_IGNITION) - e4:SetRange(LOCATION_PZONE) - e4:SetCountLimit(1) - e4:SetCondition(c97466438.zcon) - e4:SetTarget(c97466438.ztg) - e4:SetOperation(c97466438.zop) - c:RegisterEffect(e4) -end -function c97466438.reg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - e:GetHandler():RegisterFlagEffect(97466438,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) -end -function c97466438.zcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(97466438)~=0 -end -function c97466438.ztg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)+Duel.GetLocationCount(1-tp,LOCATION_MZONE) - +Duel.GetLocationCount(tp,LOCATION_SZONE)+Duel.GetLocationCount(1-tp,LOCATION_SZONE)>0 end - local dis=Duel.SelectDisableField(tp,1,LOCATION_MZONE+LOCATION_SZONE,LOCATION_MZONE+LOCATION_SZONE,0) - e:SetLabel(dis) -end -function c97466438.zop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_PZONE) - e1:SetCode(EFFECT_DISABLE_FIELD) - e1:SetOperation(c97466438.disop) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetLabel(e:GetLabel()) - c:RegisterEffect(e1) -end -function c97466438.zop2(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EFFECT_DISABLE_FIELD) - e1:SetOperation(c97466438.disop) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetLabel(e:GetLabel()) - c:RegisterEffect(e1) -end -function c97466438.disop(e,tp) - return e:GetLabel() -end +--ヨコシマウマ +function c97466438.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c,false) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetDescription(1160) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetRange(LOCATION_HAND) + e1:SetCost(c97466438.reg) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(97466438,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e2:SetTarget(c97466438.ztg) + e2:SetOperation(c97466438.zop2) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e3) + --disable zone + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(97466438,1)) + e4:SetType(EFFECT_TYPE_IGNITION) + e4:SetRange(LOCATION_PZONE) + e4:SetCountLimit(1) + e4:SetCondition(c97466438.zcon) + e4:SetTarget(c97466438.ztg) + e4:SetOperation(c97466438.zop) + c:RegisterEffect(e4) +end +function c97466438.reg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + e:GetHandler():RegisterFlagEffect(97466438,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) +end +function c97466438.zcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(97466438)~=0 +end +function c97466438.ztg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)+Duel.GetLocationCount(1-tp,LOCATION_MZONE) + +Duel.GetLocationCount(tp,LOCATION_SZONE)+Duel.GetLocationCount(1-tp,LOCATION_SZONE)>0 end + local dis=Duel.SelectDisableField(tp,1,LOCATION_MZONE+LOCATION_SZONE,LOCATION_MZONE+LOCATION_SZONE,0) + e:SetLabel(dis) +end +function c97466438.zop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_PZONE) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetOperation(c97466438.disop) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabel(e:GetLabel()) + c:RegisterEffect(e1) +end +function c97466438.zop2(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EFFECT_DISABLE_FIELD) + e1:SetOperation(c97466438.disop) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetLabel(e:GetLabel()) + c:RegisterEffect(e1) +end +function c97466438.disop(e,tp) + return e:GetLabel() +end diff --git a/script/c97489701.lua b/script/c97489701.lua index c96e2902..2852b678 100644 --- a/script/c97489701.lua +++ b/script/c97489701.lua @@ -1,228 +1,221 @@ ---スカーレッド・ノヴァ・ドラゴン -function c97489701.initial_effect(c) - --synchro summon - c:EnableReviveLimit() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetRange(LOCATION_EXTRA) - e1:SetCondition(c97489701.syncon) - e1:SetOperation(c97489701.synop) - e1:SetValue(SUMMON_TYPE_SYNCHRO) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(c97489701.atkval) - c:RegisterEffect(e2) - --indestructable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e3:SetValue(c97489701.indval) - c:RegisterEffect(e3) - --negate attack - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(97489701,0)) - e4:SetCategory(CATEGORY_REMOVE) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetProperty(EFFECT_FLAG_CARD_TARGET) - e4:SetCode(EVENT_ATTACK_ANNOUNCE) - e4:SetRange(LOCATION_MZONE) - e4:SetCondition(c97489701.nacon) - e4:SetTarget(c97489701.natg) - e4:SetOperation(c97489701.naop) - c:RegisterEffect(e4) - --special summon - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(97489701,1)) - e5:SetCategory(CATEGORY_SPECIAL_SUMMON) - e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e5:SetCode(EVENT_PHASE+PHASE_END) - e5:SetRange(LOCATION_REMOVED) - e5:SetCountLimit(1) - e5:SetCondition(c97489701.spcon) - e5:SetTarget(c97489701.sptg) - e5:SetOperation(c97489701.spop) - c:RegisterEffect(e5) - --double tuner - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_SINGLE) - e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e6:SetCode(21142671) - c:RegisterEffect(e6) -end -function c97489701.matfilter1(c,syncard) - return c:IsType(TYPE_TUNER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) -end -function c97489701.matfilter2(c,syncard) - return c:IsFaceup() and c:IsCode(70902743) and c:IsCanBeSynchroMaterial(syncard) -end -function c97489701.synfilter1(c,syncard,lv,g1,g2,g3) - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - local f1=c.tuner_filter - if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then - return g3:IsExists(c97489701.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) - else - return g1:IsExists(c97489701.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) - end -end -function c97489701.synfilter2(c,syncard,lv,g2,f1,tuner1) - local tlv=c:GetSynchroLevel(syncard) - if lv-tlv<=0 then return false end - local f2=c.tuner_filter - if f1 and not f1(c) then return false end - if f2 and not f2(tuner1) then return false end - return g2:IsExists(c97489701.synfilter3,1,nil,syncard,lv-tlv,f1,f2) -end -function c97489701.synfilter3(c,syncard,lv,f1,f2) - local mlv=c:GetSynchroLevel(syncard) - local lv1=bit.band(mlv,0xffff) - local lv2=bit.rshift(mlv,16) - return (lv1==lv or lv2==lv) and (not f1 or f1(c)) and (not f2 or f2(c)) -end -function c97489701.syncon(e,c,tuner,mg) - if c==nil then return true end - local tp=c:GetControler() - if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end - local g1=nil - local g2=nil - local g3=nil - if mg then - g1=mg:Filter(c97489701.matfilter1,nil,c) - g2=mg:Filter(c97489701.matfilter2,nil,c) - g3=mg:Filter(c97489701.matfilter1,nil,c) - else - g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g3=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) - end - local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) - local lv=c:GetLevel() - if tuner then - local tlv=tuner:GetSynchroLevel(c) - if lv-tlv<=0 then return false end - local f1=tuner.tuner_filter - if not pe then - return g1:IsExists(c97489701.synfilter2,1,tuner,c,lv-tlv,g2,f1,tuner) - else - return c97489701.synfilter2(pe:GetOwner(),c,lv-tlv,g2,f1,tuner) - end - end - if not pe then - return g1:IsExists(c97489701.synfilter1,1,nil,c,lv,g1,g2,g3) - else - return c97489701.synfilter1(pe:GetOwner(),c,lv,g1,g2) - end -end -function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) - local g=Group.CreateGroup() - local g1=nil - local g2=nil - local g3=nil - if mg then - g1=mg:Filter(c97489701.matfilter1,nil,c) - g2=mg:Filter(c97489701.matfilter2,nil,c) - g3=mg:Filter(c97489701.matfilter1,nil,c) - else - g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) - g3=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) - end - local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) - local lv=c:GetLevel() - if tuner then - g:AddCard(tuner) - local lv1=tuner:GetSynchroLevel(c) - local f1=tuner.tuner_filter - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local tuner2=nil - if not pe then - local t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner,c,lv-lv1,g2,f1,tuner) - tuner2=t2:GetFirst() - else - tuner2=pe:GetOwner() - Group.FromCards(tuner2):Select(tp,1,1,nil) - end - g:AddCard(tuner2) - local lv2=tuner2:GetSynchroLevel(c) - local f2=tuner2.tuner_filter - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local m3=g2:FilterSelect(tp,c97489701.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) - g:Merge(m3) - else - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local tuner1=nil - if not pe then - local t1=g1:FilterSelect(tp,c97489701.synfilter1,1,1,nil,c,lv,g1,g2,g3) - tuner1=t1:GetFirst() - else - tuner1=pe:GetOwner() - Group.FromCards(tuner1):Select(tp,1,1,nil) - end - g:AddCard(tuner1) - local lv1=tuner1:GetSynchroLevel(c) - local f1=tuner1.tuner_filter - local t2=nil - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then - t2=g3:FilterSelect(tp,c97489701.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) - else - t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) - end - local tuner2=t2:GetFirst() - g:AddCard(tuner2) - local lv2=tuner2:GetSynchroLevel(c) - local f2=tuner2.tuner_filter - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) - local m3=g2:FilterSelect(tp,c97489701.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) - g:Merge(m3) - end - c:SetMaterial(g) - Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) -end -function c97489701.atkval(e,c) - return Duel.GetMatchingGroupCount(Card.IsType,c:GetControler(),LOCATION_GRAVE,0,nil,TYPE_TUNER)*500 -end -function c97489701.indval(e,re,tp) - return e:GetHandler():GetControler()~=tp -end -function c97489701.nacon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttacker():GetControler()~=tp -end -function c97489701.natg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc==Duel.GetAttacker() end - if chk==0 then return e:GetHandler():IsAbleToRemove() and Duel.GetAttacker():IsCanBeEffectTarget(e) - and not e:GetHandler():IsStatus(STATUS_CHAINING) end - Duel.SetTargetCard(Duel.GetAttacker()) - Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) -end -function c97489701.naop(e,tp,eg,ep,ev,re,r,rp,chk) - Duel.NegateAttack() - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.Remove(c,POS_FACEUP,REASON_EFFECT)~=0 then - c:RegisterFlagEffect(97489701,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) - end -end -function c97489701.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(97489701)~=0 -end -function c97489701.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 c97489701.spop(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end +--スカーレッド・ノヴァ・ドラゴン +function c97489701.initial_effect(c) + --synchro summon + c:EnableReviveLimit() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetRange(LOCATION_EXTRA) + e1:SetCondition(c97489701.syncon) + e1:SetOperation(c97489701.synop) + e1:SetValue(SUMMON_TYPE_SYNCHRO) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(c97489701.atkval) + c:RegisterEffect(e2) + --indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e3:SetValue(c97489701.indval) + c:RegisterEffect(e3) + --negate attack + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(97489701,0)) + e4:SetCategory(CATEGORY_REMOVE) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetProperty(EFFECT_FLAG_CARD_TARGET) + e4:SetCode(EVENT_ATTACK_ANNOUNCE) + e4:SetRange(LOCATION_MZONE) + e4:SetCondition(c97489701.nacon) + e4:SetTarget(c97489701.natg) + e4:SetOperation(c97489701.naop) + c:RegisterEffect(e4) + --special summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(97489701,1)) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_PHASE+PHASE_END) + e5:SetRange(LOCATION_REMOVED) + e5:SetCountLimit(1) + e5:SetCondition(c97489701.spcon) + e5:SetTarget(c97489701.sptg) + e5:SetOperation(c97489701.spop) + c:RegisterEffect(e5) + --double tuner + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_SINGLE) + e6:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e6:SetCode(21142671) + c:RegisterEffect(e6) +end +function c97489701.matfilter1(c,syncard) + return c:IsType(TYPE_TUNER) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsCanBeSynchroMaterial(syncard) +end +function c97489701.matfilter2(c,syncard) + return c:IsFaceup() and c:IsCode(70902743) and c:IsCanBeSynchroMaterial(syncard) +end +function c97489701.synfilter1(c,syncard,lv,g1,g2,g3) + local f1=c.tuner_filter + if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then + return g3:IsExists(c97489701.synfilter2,1,c,syncard,lv,g2,f1,c) + else + return g1:IsExists(c97489701.synfilter2,1,c,syncard,lv,g2,f1,c) + end +end +function c97489701.synfilter2(c,syncard,lv,g2,f1,tuner1) + local f2=c.tuner_filter + if f1 and not f1(c) then return false end + if f2 and not f2(tuner1) then return false end + local mg=g2:Filter(c97489701.synfilter3,nil,f1,f2) + Duel.SetSelectedCard(Group.FromCards(c,tuner1)) + return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard) +end +function c97489701.synfilter3(c,f1,f2) + return (not f1 or f1(c)) and (not f2 or f2(c)) +end +function c97489701.syncon(e,c,tuner,mg) + if c==nil then return true end + local tp=c:GetControler() + if Duel.GetLocationCount(tp,LOCATION_MZONE)<-2 then return false end + local g1=nil + local g2=nil + local g3=nil + if mg then + g1=mg:Filter(c97489701.matfilter1,nil,c) + g2=mg:Filter(c97489701.matfilter2,nil,c) + g3=g1:Clone() + else + g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + local f1=tuner.tuner_filter + if not pe then + return g1:IsExists(c97489701.synfilter2,1,tuner,c,lv,g2,f1,tuner) + else + return c97489701.synfilter2(pe:GetOwner(),c,lv,g2,f1,tuner) + end + end + if not pe then + return g1:IsExists(c97489701.synfilter1,1,nil,c,lv,g1,g2,g3) + else + return c97489701.synfilter1(pe:GetOwner(),c,lv,g1,g2,g3) + end +end +function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) + local g=Group.CreateGroup() + local g1=nil + local g2=nil + local g3=nil + if mg then + g1=mg:Filter(c97489701.matfilter1,nil,c) + g2=mg:Filter(c97489701.matfilter2,nil,c) + g3=g1:Clone() + else + g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) + g3=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE+LOCATION_HAND,LOCATION_MZONE,nil,c) + end + local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) + local lv=c:GetLevel() + if tuner then + g:AddCard(tuner) + local f1=tuner.tuner_filter + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner2=nil + if not pe then + local t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner,c,lv,g2,f1,tuner) + tuner2=t2:GetFirst() + else + tuner2=pe:GetOwner() + Group.FromCards(tuner2):Select(tp,1,1,nil) + end + g:AddCard(tuner2) + local f2=tuner2.tuner_filter + local mg2=g2:Filter(c97489701.synfilter3,nil,f1,f2) + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) + g:Merge(m3) + else + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local tuner1=nil + if not pe then + local t1=g1:FilterSelect(tp,c97489701.synfilter1,1,1,nil,c,lv,g1,g2,g3) + tuner1=t1:GetFirst() + else + tuner1=pe:GetOwner() + Group.FromCards(tuner1):Select(tp,1,1,nil) + end + g:AddCard(tuner1) + local f1=tuner1.tuner_filter + local t2=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then + t2=g3:FilterSelect(tp,c97489701.synfilter2,1,1,tuner1,c,lv,g2,f1,tuner1) + else + t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner1,c,lv,g2,f1,tuner1) + end + local tuner2=t2:GetFirst() + g:AddCard(tuner2) + local f2=tuner2.tuner_filter + local mg2=g2:Filter(c97489701.synfilter3,nil,f1,f2) + Duel.SetSelectedCard(g) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) + local m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c) + g:Merge(m3) + end + c:SetMaterial(g) + Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) +end +function c97489701.atkval(e,c) + return Duel.GetMatchingGroupCount(Card.IsType,c:GetControler(),LOCATION_GRAVE,0,nil,TYPE_TUNER)*500 +end +function c97489701.indval(e,re,tp) + return e:GetHandler():GetControler()~=tp +end +function c97489701.nacon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttacker():GetControler()~=tp +end +function c97489701.natg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc==Duel.GetAttacker() end + if chk==0 then return e:GetHandler():IsAbleToRemove() and Duel.GetAttacker():IsCanBeEffectTarget(e) + and not e:GetHandler():IsStatus(STATUS_CHAINING) end + Duel.SetTargetCard(Duel.GetAttacker()) + Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0) +end +function c97489701.naop(e,tp,eg,ep,ev,re,r,rp,chk) + Duel.NegateAttack() + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.Remove(c,POS_FACEUP,REASON_EFFECT)~=0 then + c:RegisterFlagEffect(97489701,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) + end +end +function c97489701.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(97489701)~=0 +end +function c97489701.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 c97489701.spop(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end diff --git a/script/c975299.lua b/script/c975299.lua new file mode 100644 index 00000000..52446000 --- /dev/null +++ b/script/c975299.lua @@ -0,0 +1,119 @@ +--巨大要塞ゼロス +--Great Fortress Zelos +--Scripted by Eerie Code +function c975299.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetOperation(c975299.activate) + c:RegisterEffect(e1) + --atk/def up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x15)) + e2:SetValue(500) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --indes + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e4:SetRange(LOCATION_FZONE) + e4:SetTargetRange(LOCATION_MZONE,0) + e4:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x15)) + e4:SetValue(c975299.indval) + c:RegisterEffect(e4) + --cannot be target + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) + e5:SetRange(LOCATION_FZONE) + e5:SetTargetRange(LOCATION_MZONE,0) + e5:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x15)) + e5:SetValue(aux.tgoval) + c:RegisterEffect(e5) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(975299,1)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_IGNITION) + e6:SetRange(LOCATION_FZONE) + e6:SetCountLimit(1) + e6:SetTarget(c975299.sptg) + e6:SetOperation(c975299.spop) + c:RegisterEffect(e6) + --counter + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(975299,2)) + e7:SetCategory(CATEGORY_COUNTER) + e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_SUMMON_SUCCESS) + e7:SetRange(LOCATION_FZONE) + e7:SetCondition(c975299.ctcon) + e7:SetTarget(c975299.cttg) + e7:SetOperation(c975299.ctop) + c:RegisterEffect(e7) + local e8=e7:Clone() + e8:SetCode(EVENT_SPSUMMON_SUCCESS) + c:RegisterEffect(e8) +end +function c975299.thfilter(c) + return c:IsCode(66947414) and c:IsAbleToHand() +end +function c975299.activate(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=Duel.GetMatchingGroup(c975299.thfilter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(975299,0)) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,1,1,nil) + Duel.SendtoHand(sg,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,sg) + end +end +function c975299.indval(e,re,rp) + return rp~=e:GetHandlerPlayer() +end +function c975299.spfilter(c,e,tp) + return c:IsSetCard(0x15) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c975299.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c975299.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND) +end +function c975299.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c975299.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 c975299.ctfilter(c,tp) + return c:IsFaceup() and c:IsSetCard(0x15) and c:IsControler(tp) +end +function c975299.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg and eg:IsExists(c975299.ctfilter,1,nil,tp) +end +function c975299.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local ec=eg:FilterCount(c975299.ctfilter,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_COUNTER,nil,ec,0,0x1f) +end +function c975299.ctop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local g=eg:Filter(c975299.ctfilter,nil,tp) + local tc=g:GetFirst() + while tc do + tc:AddCounter(0x1f,1) + tc=g:GetNext() + end +end diff --git a/script/c9753964.lua b/script/c9753964.lua index 886bb2c9..b49c9b73 100644 --- a/script/c9753964.lua +++ b/script/c9753964.lua @@ -1,89 +1,89 @@ ---琰魔竜 レッド・デーモン・アビス -function c9753964.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure2(c,nil,aux.NonTuner(c9753964.sfilter)) - c:EnableReviveLimit() - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(9753964,0)) - e1:SetCategory(CATEGORY_DISABLE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetHintTiming(0,0x1c0) - e1:SetCountLimit(1,9753964) - e1:SetTarget(c9753964.target) - e1:SetOperation(c9753964.operation) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(9753964,1)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_BATTLE_DAMAGE) - e2:SetCountLimit(1,9753965) - e2:SetCondition(c9753964.spcon) - e2:SetTarget(c9753964.sptg) - e2:SetOperation(c9753964.spop) - c:RegisterEffect(e2) -end -function c9753964.sfilter(c) - return c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsType(TYPE_SYNCHRO) -end -function c9753964.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and aux.disfilter1(chkc) end - if chk==0 then return Duel.IsExistingTarget(aux.disfilter1,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,aux.disfilter1,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c9753964.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then - Duel.NegateRelatedChain(tc,RESET_TURN_SET) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetValue(RESET_TURN_SET) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - if tc:IsType(TYPE_TRAPMONSTER) then - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) - e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e3) - end - end -end -function c9753964.spcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c9753964.spfilter(c,e,tp) - return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c9753964.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c9753964.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c9753964.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c9753964.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c9753964.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--琰魔竜 レッド・デーモン・アビス +function c9753964.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure2(c,nil,aux.NonTuner(c9753964.sfilter)) + c:EnableReviveLimit() + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(9753964,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetHintTiming(0,0x1c0) + e1:SetCountLimit(1,9753964) + e1:SetTarget(c9753964.target) + e1:SetOperation(c9753964.operation) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(9753964,1)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCountLimit(1,9753965) + e2:SetCondition(c9753964.spcon) + e2:SetTarget(c9753964.sptg) + e2:SetOperation(c9753964.spop) + c:RegisterEffect(e2) +end +function c9753964.sfilter(c) + return c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsType(TYPE_SYNCHRO) +end +function c9753964.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(1-tp) and chkc:IsOnField() and aux.disfilter1(chkc) end + if chk==0 then return Duel.IsExistingTarget(aux.disfilter1,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,aux.disfilter1,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c9753964.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if ((tc:IsFaceup() and not tc:IsDisabled()) or tc:IsType(TYPE_TRAPMONSTER)) and tc:IsRelateToEffect(e) then + Duel.NegateRelatedChain(tc,RESET_TURN_SET) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetValue(RESET_TURN_SET) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + end +end +function c9753964.spcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c9753964.spfilter(c,e,tp) + return c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c9753964.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c9753964.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c9753964.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c9753964.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c9753964.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c97574404.lua b/script/c97574404.lua index 8cdeadbf..6d16c330 100644 --- a/script/c97574404.lua +++ b/script/c97574404.lua @@ -36,7 +36,7 @@ function c97574404.arcanareg(c,coin) e1:SetCode(EFFECT_DOUBLE_TRIBUTE) e1:SetCondition(c97574404.dtcon) e1:SetValue(c97574404.dtval) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) -- local e2=Effect.CreateEffect(c) @@ -47,12 +47,12 @@ function c97574404.arcanareg(c,coin) e2:SetTargetRange(1,1) e2:SetCondition(c97574404.sumcon) e2:SetTarget(c97574404.sumtg) - e2:SetReset(RESET_EVENT+0x1ff0000) + e2:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e2) local e3=e2:Clone() e3:SetCode(EFFECT_CANNOT_MSET) c:RegisterEffect(e3) - c:RegisterFlagEffect(36690018,RESET_EVENT+0x1ff0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) + c:RegisterFlagEffect(36690018,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) end function c97574404.dtcon(e) return e:GetHandler():GetFlagEffectLabel(36690018)==1 diff --git a/script/c97588916.lua b/script/c97588916.lua index 00d13674..dd6cc433 100644 --- a/script/c97588916.lua +++ b/script/c97588916.lua @@ -1,48 +1,48 @@ ---ブンボーグ007 -function c97588916.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --splimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetRange(LOCATION_PZONE) - e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) - e2:SetTargetRange(1,0) - e2:SetCondition(c97588916.splimcon) - e2:SetTarget(c97588916.splimit) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetRange(LOCATION_MZONE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetValue(c97588916.value) - c:RegisterEffect(e3) - --pierce - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_SINGLE) - e5:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e5) - -- - local e6=Effect.CreateEffect(c) - e6:SetType(EFFECT_TYPE_FIELD) - e6:SetRange(LOCATION_MZONE) - e6:SetTargetRange(0,LOCATION_MZONE) - e6:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e6:SetValue(c97588916.atlimit) - c:RegisterEffect(e6) -end -function c97588916.splimcon(e) - return not e:GetHandler():IsForbidden() -end -function c97588916.splimit(e,c,tp,sumtp,sumpos) - return not c:IsSetCard(0xab) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM -end -function c97588916.value(e,c) - return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0xab)*500 -end -function c97588916.atlimit(e,c) - return c:IsFaceup() and c:IsSetCard(0xab) and c~=e:GetHandler() -end +--ブンボーグ007 +function c97588916.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --splimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetRange(LOCATION_PZONE) + e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE) + e2:SetTargetRange(1,0) + e2:SetCondition(c97588916.splimcon) + e2:SetTarget(c97588916.splimit) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetRange(LOCATION_MZONE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetValue(c97588916.value) + c:RegisterEffect(e3) + --pierce + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_SINGLE) + e5:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e5) + -- + local e6=Effect.CreateEffect(c) + e6:SetType(EFFECT_TYPE_FIELD) + e6:SetRange(LOCATION_MZONE) + e6:SetTargetRange(0,LOCATION_MZONE) + e6:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e6:SetValue(c97588916.atlimit) + c:RegisterEffect(e6) +end +function c97588916.splimcon(e) + return not e:GetHandler():IsForbidden() +end +function c97588916.splimit(e,c,tp,sumtp,sumpos) + return not c:IsSetCard(0xab) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM +end +function c97588916.value(e,c) + return Duel.GetMatchingGroupCount(Card.IsSetCard,c:GetControler(),LOCATION_GRAVE,0,nil,0xab)*500 +end +function c97588916.atlimit(e,c) + return c:IsFaceup() and c:IsSetCard(0xab) and c~=e:GetHandler() +end diff --git a/script/c97687912.lua b/script/c97687912.lua index a4b7cc4b..260f3a8c 100644 --- a/script/c97687912.lua +++ b/script/c97687912.lua @@ -1,38 +1,9 @@ --メテオ・ストライク function c97687912.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(c97687912.target) - e1:SetOperation(c97687912.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Pierce local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_PIERCE) 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 c97687912.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) - e:SetLabelObject(nil) -end -function c97687912.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 diff --git a/script/c97792247.lua b/script/c97792247.lua index b099f60a..c20756b4 100644 --- a/script/c97792247.lua +++ b/script/c97792247.lua @@ -1,44 +1,44 @@ ---スターダスト・アサルト・ウォリアー -function c97792247.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(97792247,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCountLimit(1,97792247) - e1:SetCondition(c97792247.spcon) - e1:SetTarget(c97792247.sptg) - e1:SetOperation(c97792247.spop) - c:RegisterEffect(e1) - --pierce - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_PIERCE) - c:RegisterEffect(e2) -end -function c97792247.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO - and not Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,e:GetHandler()) -end -function c97792247.spfilter(c,e,tp) - return c:IsSetCard(0x43) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c97792247.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c97792247.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c97792247.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c97792247.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c97792247.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--スターダスト・アサルト・ウォリアー +function c97792247.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(97792247,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCountLimit(1,97792247) + e1:SetCondition(c97792247.spcon) + e1:SetTarget(c97792247.sptg) + e1:SetOperation(c97792247.spop) + c:RegisterEffect(e1) + --pierce + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_PIERCE) + c:RegisterEffect(e2) +end +function c97792247.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO + and not Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,1,e:GetHandler()) +end +function c97792247.spfilter(c,e,tp) + return c:IsSetCard(0x43) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c97792247.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c97792247.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c97792247.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c97792247.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c97792247.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c97795930.lua b/script/c97795930.lua new file mode 100644 index 00000000..d6d36a70 --- /dev/null +++ b/script/c97795930.lua @@ -0,0 +1,86 @@ +--幻煌龍の天渦 +--Celestial Whirlpool of the Mythic Radiance Dragon +--Script by nekrozar +function c97795930.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c97795930.target) + e1:SetOperation(c97795930.activate) + c:RegisterEffect(e1) + --act in hand + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) + e2:SetCondition(c97795930.handcon) + c:RegisterEffect(e2) + --destroy replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetRange(LOCATION_GRAVE) + e3:SetTarget(c97795930.reptg) + e3:SetValue(c97795930.repval) + e3:SetOperation(c97795930.repop) + c:RegisterEffect(e3) +end +function c97795930.filter(c) + return c:IsFaceup() and c:IsCode(56649609) +end +function c97795930.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c97795930.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c97795930.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c97795930.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c97795930.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetCondition(c97795930.wincon) + e1:SetOperation(c97795930.winop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end +function c97795930.winfilter(c) + return c:IsSetCard(0xfa) and c:IsType(TYPE_EQUIP) +end +function c97795930.wincon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=c:GetEquipGroup():Filter(c97795930.winfilter,nil) + return aux.bdocon(e,tp,eg,ep,ev,re,r,rp) and g:GetClassCount(Card.GetCode)>2 and c:GetBattleTarget():IsType(TYPE_EFFECT) +end +function c97795930.winop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + c:RegisterFlagEffect(97795930,RESET_EVENT+0x1fe0000,0,0) + if c:GetFlagEffect(97795930)>2 then + local WIN_REASON_CELESTIAL_WHIRLPOOL=0x1c + Duel.Win(tp,WIN_REASON_CELESTIAL_WHIRLPOOL) + end +end +function c97795930.cfilter(c) + return c:IsFaceup() and c:IsCode(22702055) +end +function c97795930.handcon(e) + return Duel.IsExistingMatchingCard(c97795930.filter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(22702055) +end +function c97795930.repfilter(c,tp) + return c:IsFaceup() and c:IsType(TYPE_NORMAL) and c:IsLocation(LOCATION_MZONE) + and c:IsControler(tp) and c:IsReason(REASON_EFFECT+REASON_BATTLE) +end +function c97795930.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() and eg:IsExists(c97795930.repfilter,1,nil,tp) end + return Duel.SelectYesNo(tp,aux.Stringid(97795930,0)) +end +function c97795930.repval(e,c) + return c97795930.repfilter(c,e:GetHandlerPlayer()) +end +function c97795930.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c97811903.lua b/script/c97811903.lua index 58baea2e..af484d3a 100644 --- a/script/c97811903.lua +++ b/script/c97811903.lua @@ -1,44 +1,44 @@ ---クリアー・バイス・ドラゴン -function c97811903.initial_effect(c) - --atk - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c97811903.atkcon) - e1:SetValue(c97811903.atkval) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_DESTROY_REPLACE) - e2:SetTarget(c97811903.reptg) - c:RegisterEffect(e2) - -- - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetRange(LOCATION_MZONE) - e3:SetTargetRange(1,0) - e3:SetCode(97811903) - c:RegisterEffect(e3) -end -function c97811903.atkcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL - and e:GetHandler()==Duel.GetAttacker() and Duel.GetAttackTarget() -end -function c97811903.atkval(e,c) - return Duel.GetAttackTarget():GetAttack()*2 -end -function c97811903.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return not c:IsReason(REASON_REPLACE) and c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp - and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 end - if Duel.SelectYesNo(tp,aux.Stringid(97811903,0)) then - Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) - return true - else return false end -end +--クリアー・バイス・ドラゴン +function c97811903.initial_effect(c) + --atk + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e1:SetRange(LOCATION_MZONE) + e1:SetCondition(c97811903.atkcon) + e1:SetValue(c97811903.atkval) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_DESTROY_REPLACE) + e2:SetTarget(c97811903.reptg) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_MZONE) + e3:SetTargetRange(1,0) + e3:SetCode(97811903) + c:RegisterEffect(e3) +end +function c97811903.atkcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL + and e:GetHandler()==Duel.GetAttacker() and Duel.GetAttackTarget() +end +function c97811903.atkval(e,c) + return Duel.GetAttackTarget():GetAttack()*2 +end +function c97811903.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return not c:IsReason(REASON_REPLACE) and c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp + and Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 end + if Duel.SelectYesNo(tp,aux.Stringid(97811903,0)) then + Duel.DiscardHand(tp,nil,1,1,REASON_EFFECT+REASON_DISCARD) + return true + else return false end +end diff --git a/script/c97836203.lua b/script/c97836203.lua index 3d4b37bd..479329c8 100644 --- a/script/c97836203.lua +++ b/script/c97836203.lua @@ -1,78 +1,78 @@ ---TG ハルバード・キャノン -function c97836203.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),2) - c:EnableReviveLimit() - --cannot special summon - local e1=Effect.CreateEffect(c) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.synlimit) - c:RegisterEffect(e1) - --Negate summon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) - e2:SetDescription(aux.Stringid(97836203,0)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EVENT_SUMMON) - e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) - e2:SetCondition(c97836203.discon) - e2:SetTarget(c97836203.distg) - e2:SetOperation(c97836203.disop) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetDescription(aux.Stringid(97836203,1)) - e3:SetCode(EVENT_FLIP_SUMMON) - c:RegisterEffect(e3) - local e4=e2:Clone() - e4:SetDescription(aux.Stringid(97836203,2)) - e4:SetCode(EVENT_SPSUMMON) - c:RegisterEffect(e4) - --Special Summon - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(97836203,3)) - e5:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e5:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e5:SetCategory(CATEGORY_SPECIAL_SUMMON) - e5:SetCode(EVENT_TO_GRAVE) - e5:SetCondition(c97836203.spcon) - e5:SetTarget(c97836203.sptg) - e5:SetOperation(c97836203.spop) - c:RegisterEffect(e5) -end -function c97836203.discon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentChain()==0 -end -function c97836203.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) -end -function c97836203.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) then return end - Duel.NegateSummon(eg) - Duel.Destroy(eg,REASON_EFFECT) -end -function c97836203.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end -function c97836203.filter(c,e,tp) - return c:IsSetCard(0x27) and c:IsCanBeSpecialSummoned(e,0,tp,false,true) -end -function c97836203.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c97836203.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c97836203.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c97836203.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c97836203.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,true,POS_FACEUP) - end -end +--TG ハルバード・キャノン +function c97836203.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsType,TYPE_SYNCHRO),aux.NonTuner(Card.IsType,TYPE_SYNCHRO),2) + c:EnableReviveLimit() + --cannot special summon + local e1=Effect.CreateEffect(c) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.synlimit) + c:RegisterEffect(e1) + --Negate summon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_DISABLE_SUMMON+CATEGORY_DESTROY) + e2:SetDescription(aux.Stringid(97836203,0)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EVENT_SUMMON) + e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) + e2:SetCondition(c97836203.discon) + e2:SetTarget(c97836203.distg) + e2:SetOperation(c97836203.disop) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetDescription(aux.Stringid(97836203,1)) + e3:SetCode(EVENT_FLIP_SUMMON) + c:RegisterEffect(e3) + local e4=e2:Clone() + e4:SetDescription(aux.Stringid(97836203,2)) + e4:SetCode(EVENT_SPSUMMON) + c:RegisterEffect(e4) + --Special Summon + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(97836203,3)) + e5:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e5:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e5:SetCategory(CATEGORY_SPECIAL_SUMMON) + e5:SetCode(EVENT_TO_GRAVE) + e5:SetCondition(c97836203.spcon) + e5:SetTarget(c97836203.sptg) + e5:SetOperation(c97836203.spop) + c:RegisterEffect(e5) +end +function c97836203.discon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentChain()==0 +end +function c97836203.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE_SUMMON,eg,eg:GetCount(),0,0) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) +end +function c97836203.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) then return end + Duel.NegateSummon(eg) + Duel.Destroy(eg,REASON_EFFECT) +end +function c97836203.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) +end +function c97836203.filter(c,e,tp) + return c:IsSetCard(0x27) and c:IsCanBeSpecialSummoned(e,0,tp,false,true) +end +function c97836203.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c97836203.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c97836203.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c97836203.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c97836203.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,true,POS_FACEUP) + end +end diff --git a/script/c9786492.lua b/script/c9786492.lua index 7bfe60f4..d9a02193 100644 --- a/script/c9786492.lua +++ b/script/c9786492.lua @@ -1,4 +1,4 @@ ---白竜降臨 -function c9786492.initial_effect(c) - aux.AddRitualProcGreaterCode(c,73398797) -end +--白竜降臨 +function c9786492.initial_effect(c) + aux.AddRitualProcGreaterCode(c,73398797) +end diff --git a/script/c9791914.lua b/script/c9791914.lua index a652ca4a..5fa68878 100644 --- a/script/c9791914.lua +++ b/script/c9791914.lua @@ -9,6 +9,7 @@ function c9791914.initial_effect(c) --spsummon local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetCode(EVENT_TO_GRAVE) e2:SetOperation(c9791914.regop) c:RegisterEffect(e2) diff --git a/script/c97949165.lua b/script/c97949165.lua new file mode 100644 index 00000000..70a03dd3 --- /dev/null +++ b/script/c97949165.lua @@ -0,0 +1,48 @@ +--LL-ターコイズ・ワーブラー +--Lyrical Luscinia - Turquoise Warbler +--Scripted by Eerie Code +function c97949165.initial_effect(c) + --special summon (self) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c97949165.hspcon) + c:RegisterEffect(e1) + --special summon (LL) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(97949165,0)) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetProperty(EFFECT_FLAG_DELAY) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCountLimit(1,97949165) + e2:SetCondition(c97949165.spcon) + e2:SetTarget(c97949165.sptg) + e2:SetOperation(c97949165.spop) + c:RegisterEffect(e2) +end +function c97949165.hspcon(e,c) + if c==nil then return true end + return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_MZONE,0)==0 + and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 +end +function c97949165.spfilter(c,e,tp) + return (c:IsSetCard(0xf7) or c:IsCode(8491961)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c97949165.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_HAND) +end +function c97949165.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c97949165.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c97949165.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c97949165.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end \ No newline at end of file diff --git a/script/c97997309.lua b/script/c97997309.lua index 567600ed..ffd24fef 100644 --- a/script/c97997309.lua +++ b/script/c97997309.lua @@ -41,6 +41,7 @@ function c97997309.initial_effect(c) e3:SetLabel(3) c:RegisterEffect(e3) end +c97997309.check=false function c97997309.cfilter(c) return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) end @@ -51,18 +52,23 @@ function c97997309.condition(e,tp,eg,ep,ev,re,r,rp) return Duel.IsExistingMatchingCard(c97997309.cfilter,tp,LOCATION_MZONE,0,1,nil) end function c97997309.cost(e,tp,eg,ep,ev,re,r,rp,chk) - local ct=e:GetLabel() - if chk==0 then return Duel.IsExistingMatchingCard(c97997309.rfilter,tp,LOCATION_GRAVE,0,ct,nil) end - Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c97997309.rfilter,tp,LOCATION_GRAVE,0,ct,ct,nil) - Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + c97997309.check=true + if chk==0 then return true end end function c97997309.filter1(c) return c:IsFacedown() and c:IsAbleToHand() end function c97997309.target1(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c97997309.filter1,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end + local ct=e:GetLabel() + if chk==0 then + if not c97997309.check then return false end + c97997309.check=false + return Duel.IsExistingMatchingCard(c97997309.rfilter,tp,LOCATION_GRAVE,0,ct,nil) + and Duel.IsExistingMatchingCard(c97997309.filter1,tp,LOCATION_SZONE,LOCATION_SZONE,1,e:GetHandler()) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c97997309.rfilter,tp,LOCATION_GRAVE,0,ct,ct,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) local g=Duel.GetMatchingGroup(c97997309.filter1,tp,LOCATION_SZONE,LOCATION_SZONE,e:GetHandler()) Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) end @@ -78,7 +84,16 @@ function c97997309.filter2(c) return not c:IsPosition(POS_FACEUP_ATTACK) or c:IsCanTurnSet() end function c97997309.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c97997309.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local ct=e:GetLabel() + if chk==0 then + if not c97997309.check then return false end + c97997309.check=false + return Duel.IsExistingMatchingCard(c97997309.rfilter,tp,LOCATION_GRAVE,0,ct,nil) + and Duel.IsExistingMatchingCard(c97997309.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c97997309.rfilter,tp,LOCATION_GRAVE,0,ct,ct,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) local g=Duel.GetMatchingGroup(c97997309.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil) Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) end @@ -96,17 +111,23 @@ function c97997309.activate2(e,tp,eg,ep,ev,re,r,rp) end end end -function c97997309.filter3(c) - return c:IsAbleToRemove() -end function c97997309.target3(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c97997309.filter3,tp,0,LOCATION_ONFIELD,1,nil) end - local g=Duel.GetMatchingGroup(c97997309.filter3,tp,0,LOCATION_ONFIELD,nil) + local ct=e:GetLabel() + if chk==0 then + if not c97997309.check then return false end + c97997309.check=false + return Duel.IsExistingMatchingCard(c97997309.rfilter,tp,LOCATION_GRAVE,0,ct,nil) + and Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c97997309.rfilter,tp,LOCATION_GRAVE,0,ct,ct,nil) + Duel.Remove(g,POS_FACEUP,REASON_EFFECT) + local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,nil) Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) end function c97997309.activate3(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,c97997309.filter3,tp,0,LOCATION_ONFIELD,1,1,nil) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,1,nil) if g:GetCount()>0 then Duel.HintSelection(g) Duel.Remove(g,POS_FACEUP,REASON_EFFECT) diff --git a/script/c98076754.lua b/script/c98076754.lua index 8b8dce28..bc426301 100644 --- a/script/c98076754.lua +++ b/script/c98076754.lua @@ -33,7 +33,7 @@ function c98076754.initial_effect(c) local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD) e4:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) - e4:SetProperty(EFFECT_FLAG_SET_AVAILABLE) + e4:SetProperty(EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_IGNORE_IMMUNE) e4:SetRange(LOCATION_SZONE) e4:SetTargetRange(LOCATION_MZONE,0) e4:SetCondition(c98076754.effcon) @@ -76,11 +76,10 @@ function c98076754.tdcost(e,tp,eg,ep,ev,re,r,rp,chk) end function c98076754.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE,1,nil) end - local g=Duel.GetMatchingGroup(c98076754.filter,tp,0,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE,nil) + local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE,nil) Duel.SetOperationInfo(0,CATEGORY_TODECK,g,g:GetCount(),0,0) end function c98076754.tdop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE,nil) - if g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then return end + local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(Card.IsAbleToDeck),tp,0,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_GRAVE,nil) Duel.SendtoDeck(g,nil,2,REASON_EFFECT) end diff --git a/script/c98143165.lua b/script/c98143165.lua index b4cf3102..c8237088 100644 --- a/script/c98143165.lua +++ b/script/c98143165.lua @@ -1,14 +1,6 @@ --シンクロ・ヒーロー function c98143165.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(c98143165.target) - e1:SetOperation(c98143165.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,c98143165.filter) --atk&lv local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -20,30 +12,7 @@ function c98143165.initial_effect(c) e3:SetCode(EFFECT_UPDATE_LEVEL) e3:SetValue(1) c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetValue(c98143165.eqlimit) - c:RegisterEffect(e4) -end -function c98143165.eqlimit(e,c) - return c:GetLevel()>0 end function c98143165.filter(c) - return c:IsFaceup() and c:GetLevel()>0 -end -function c98143165.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c98143165.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c98143165.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c98143165.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c98143165.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 + return c:GetLevel()>0 end diff --git a/script/c98153934.lua b/script/c98153934.lua index 31641d83..8cd91502 100644 --- a/script/c98153934.lua +++ b/script/c98153934.lua @@ -1,67 +1,67 @@ ---幻影死槍 -function c98153934.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --damage - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c98153934.regcon) - e2:SetOperation(c98153934.regop) - c:RegisterEffect(e2) - --destroy replace - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e3:SetCode(EFFECT_DESTROY_REPLACE) - e3:SetRange(LOCATION_GRAVE) - e3:SetTarget(c98153934.reptg) - e3:SetValue(c98153934.repval) - e3:SetOperation(c98153934.repop) - c:RegisterEffect(e3) -end -function c98153934.filter(c) - return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0x10db) -end -function c98153934.regcon(e,tp,eg,ep,ev,re,r,rp) - if not re or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return g and g:IsExists(c98153934.filter,1,nil) and tp~=rp -end -function c98153934.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_CHAIN_SOLVING) - e1:SetRange(LOCATION_SZONE) - e1:SetProperty(EFFECT_FLAG_DELAY) - e1:SetLabelObject(re) - e1:SetReset(RESET_EVENT+0x1fc0000+RESET_CHAIN) - e1:SetCondition(c98153934.damcon) - e1:SetOperation(c98153934.damop) - c:RegisterEffect(e1) -end -function c98153934.damcon(e,tp,eg,ep,ev,re,r,rp) - return re==e:GetLabelObject() -end -function c98153934.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_CARD,0,98153934) - Duel.Damage(1-tp,500,REASON_EFFECT) -end -function c98153934.repfilter(c,tp) - return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) and c:IsAttribute(ATTRIBUTE_DARK) - and (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp)) -end -function c98153934.reptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemove() and eg:IsExists(c98153934.repfilter,1,nil,tp) end - return Duel.SelectYesNo(tp,aux.Stringid(98153934,0)) -end -function c98153934.repval(e,c) - return c98153934.repfilter(c,e:GetHandlerPlayer()) -end -function c98153934.repop(e,tp,eg,ep,ev,re,r,rp) - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) -end +--幻影死槍 +function c98153934.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --damage + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c98153934.regcon) + e2:SetOperation(c98153934.regop) + c:RegisterEffect(e2) + --destroy replace + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetCode(EFFECT_DESTROY_REPLACE) + e3:SetRange(LOCATION_GRAVE) + e3:SetTarget(c98153934.reptg) + e3:SetValue(c98153934.repval) + e3:SetOperation(c98153934.repop) + c:RegisterEffect(e3) +end +function c98153934.filter(c) + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsSetCard(0x10db) +end +function c98153934.regcon(e,tp,eg,ep,ev,re,r,rp) + if not re or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return g and g:IsExists(c98153934.filter,1,nil) and tp~=rp +end +function c98153934.regop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_CHAIN_SOLVING) + e1:SetRange(LOCATION_SZONE) + e1:SetProperty(EFFECT_FLAG_DELAY) + e1:SetLabelObject(re) + e1:SetReset(RESET_EVENT+0x1fc0000+RESET_CHAIN) + e1:SetCondition(c98153934.damcon) + e1:SetOperation(c98153934.damop) + c:RegisterEffect(e1) +end +function c98153934.damcon(e,tp,eg,ep,ev,re,r,rp) + return re==e:GetLabelObject() +end +function c98153934.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_CARD,0,98153934) + Duel.Damage(1-tp,500,REASON_EFFECT) +end +function c98153934.repfilter(c,tp) + return c:IsFaceup() and c:IsLocation(LOCATION_MZONE) and c:IsControler(tp) and c:IsAttribute(ATTRIBUTE_DARK) + and (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp)) +end +function c98153934.reptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemove() and eg:IsExists(c98153934.repfilter,1,nil,tp) end + return Duel.SelectYesNo(tp,aux.Stringid(98153934,0)) +end +function c98153934.repval(e,c) + return c98153934.repfilter(c,e:GetHandlerPlayer()) +end +function c98153934.repop(e,tp,eg,ep,ev,re,r,rp) + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c981540.lua b/script/c981540.lua index f7b4d8df..6a14a040 100644 --- a/script/c981540.lua +++ b/script/c981540.lua @@ -1,42 +1,42 @@ ---ハーフ・アンブレイク -function c981540.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c981540.target) - e1:SetOperation(c981540.activate) - c:RegisterEffect(e1) -end -function c981540.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) end - if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) -end -function c981540.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e1:SetValue(1) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e2:SetCondition(c981540.rdcon) - e2:SetOperation(c981540.rdop) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end -function c981540.rdcon(e,tp,eg,ep,ev,re,r,rp) - return ep==e:GetOwnerPlayer() -end -function c981540.rdop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev/2) -end +--ハーフ・アンブレイク +function c981540.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c981540.target) + e1:SetOperation(c981540.activate) + c:RegisterEffect(e1) +end +function c981540.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) end + if chk==0 then return Duel.IsExistingTarget(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + Duel.SelectTarget(tp,nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c981540.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e1:SetValue(1) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetCondition(c981540.rdcon) + e2:SetOperation(c981540.rdop) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c981540.rdcon(e,tp,eg,ep,ev,re,r,rp) + return ep==e:GetOwnerPlayer() +end +function c981540.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end diff --git a/script/c98229575.lua b/script/c98229575.lua index 81531233..f5869daf 100644 --- a/script/c98229575.lua +++ b/script/c98229575.lua @@ -1,57 +1,57 @@ ---U.A.フィールドゼネラル -function c98229575.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) - e1:SetRange(LOCATION_HAND) - e1:SetCountLimit(1,98229575) - e1:SetCondition(c98229575.spcon) - e1:SetOperation(c98229575.spop) - c:RegisterEffect(e1) - --atk - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_ATKCHANGE) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_ATTACK_ANNOUNCE) - e2:SetRange(LOCATION_MZONE) - e2:SetCondition(c98229575.atkcon) - e2:SetOperation(c98229575.atkop) - c:RegisterEffect(e2) -end -function c98229575.spfilter(c) - return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(98229575) and c:IsAbleToHandAsCost() -end -function c98229575.spcon(e,c) - if c==nil then return true end - return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c98229575.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) -end -function c98229575.spop(e,tp,eg,ep,ev,re,r,rp,c) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) - local g=Duel.SelectMatchingCard(tp,c98229575.spfilter,tp,LOCATION_MZONE,0,1,1,nil) - Duel.SendtoHand(g,nil,REASON_COST) -end -function c98229575.atkcon(e,tp,eg,ep,ev,re,r,rp) - local at=Duel.GetAttacker() - return at:IsSetCard(0xb2) and at:IsControler(tp) and at~=e:GetHandler() and e:GetHandler():IsAttackAbove(800) -end -function c98229575.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local at=Duel.GetAttacker() - if c:IsFaceup() and c:IsRelateToEffect(e) and c:IsAttackAbove(800) then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetValue(-800) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - if at:IsFaceup() and at:IsRelateToBattle() then - local e2=e1:Clone() - e2:SetValue(800) - at:RegisterEffect(e2) - end - end -end +--U.A.フィールドゼネラル +function c98229575.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetRange(LOCATION_HAND) + e1:SetCountLimit(1,98229575) + e1:SetCondition(c98229575.spcon) + e1:SetOperation(c98229575.spop) + c:RegisterEffect(e1) + --atk + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_ATTACK_ANNOUNCE) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c98229575.atkcon) + e2:SetOperation(c98229575.atkop) + c:RegisterEffect(e2) +end +function c98229575.spfilter(c) + return c:IsFaceup() and c:IsSetCard(0xb2) and not c:IsCode(98229575) and c:IsAbleToHandAsCost() +end +function c98229575.spcon(e,c) + if c==nil then return true end + return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c98229575.spfilter,c:GetControler(),LOCATION_MZONE,0,1,nil) +end +function c98229575.spop(e,tp,eg,ep,ev,re,r,rp,c) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND) + local g=Duel.SelectMatchingCard(tp,c98229575.spfilter,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SendtoHand(g,nil,REASON_COST) +end +function c98229575.atkcon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + return at:IsSetCard(0xb2) and at:IsControler(tp) and at~=e:GetHandler() and e:GetHandler():IsAttackAbove(800) +end +function c98229575.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local at=Duel.GetAttacker() + if c:IsFaceup() and c:IsRelateToEffect(e) and c:IsAttackAbove(800) then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetValue(-800) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + if at:IsFaceup() and at:IsRelateToBattle() then + local e2=e1:Clone() + e2:SetValue(800) + at:RegisterEffect(e2) + end + end +end diff --git a/script/c98239899.lua b/script/c98239899.lua index d26cf502..a78bb095 100644 --- a/script/c98239899.lua +++ b/script/c98239899.lua @@ -24,21 +24,18 @@ end function c98239899.condition(e,tp,eg,ep,ev,re,r,rp) return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() end -function c98239899.filter(c) - return c:IsFaceup() -end function c98239899.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c98239899.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c98239899.filter,tp,LOCATION_MZONE,0,1,nil) end + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c98239899.filter,tp,LOCATION_MZONE,0,1,1,nil) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil) Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) end function c98239899.operation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsLocation(LOCATION_SZONE) then return end local tc=Duel.GetFirstTarget() - if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + if c:IsRelateToEffect(e) and tc and tc:IsRelateToEffect(e) and tc:IsFaceup() then Duel.Equip(tp,c,tc) c:CancelToGrave() --Atkup diff --git a/script/c98252586.lua b/script/c98252586.lua index 098c75b7..105beeb6 100644 --- a/script/c98252586.lua +++ b/script/c98252586.lua @@ -1,14 +1,6 @@ --フォロー・ウィンド function c98252586.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(c98252586.target) - e1:SetOperation(c98252586.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsRace,RACE_WINDBEAST)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c98252586.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(300) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c98252586.eqlimit) - c:RegisterEffect(e4) -end -function c98252586.eqlimit(e,c) - return c:IsRace(RACE_WINDBEAST) -end -function c98252586.filter(c) - return c:IsFaceup() and c:IsRace(RACE_WINDBEAST) -end -function c98252586.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c98252586.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c98252586.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c98252586.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c98252586.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 diff --git a/script/c98263709.lua b/script/c98263709.lua index c021dbc6..3931511f 100644 --- a/script/c98263709.lua +++ b/script/c98263709.lua @@ -1,76 +1,75 @@ ---銀河魔鏡士 -function c98263709.initial_effect(c) - --recover - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(98263709,0)) - e1:SetCategory(CATEGORY_RECOVER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetTarget(c98263709.rectg) - e1:SetOperation(c98263709.recop) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_FLIP) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetOperation(c98263709.flipop) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(98263709,1)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e3:SetCode(EVENT_TO_GRAVE) - e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e3:SetCondition(c98263709.spcon) - e3:SetTarget(c98263709.sptg) - e3:SetOperation(c98263709.spop) - c:RegisterEffect(e3) -end -function c98263709.filter(c) - return c:IsSetCard(0x7b) and c:IsType(TYPE_MONSTER) -end -function c98263709.rectg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local val=Duel.GetMatchingGroupCount(c98263709.filter,tp,LOCATION_GRAVE,0,nil)*500 - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(val) - Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,val) -end -function c98263709.recop(e,tp,eg,ep,ev,re,r,rp) - local val=Duel.GetMatchingGroupCount(c98263709.filter,tp,LOCATION_GRAVE,0,nil)*500 - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - Duel.Recover(p,val,REASON_EFFECT) -end -function c98263709.flipop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():RegisterFlagEffect(98263709,RESET_EVENT+0x57a0000,0,0) -end -function c98263709.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetFlagEffect(98263709)~=0 and e:GetHandler():IsReason(REASON_DESTROY) -end -function c98263709.spfilter(c,e,tp) - return c:IsSetCard(0x7b) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) - and not c:IsHasEffect(EFFECT_NECRO_VALLEY) -end -function c98263709.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c98263709.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) -end -function c98263709.spop(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,c98263709.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) - local tc=g:GetFirst() - if tc:IsHasEffect(EFFECT_NECRO_VALLEY) then return end - if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - tc:RegisterEffect(e1,true) - Duel.SpecialSummonComplete() - end -end +--銀河魔鏡士 +function c98263709.initial_effect(c) + --recover + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98263709,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetTarget(c98263709.rectg) + e1:SetOperation(c98263709.recop) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_FLIP) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetOperation(c98263709.flipop) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(98263709,1)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e3:SetCode(EVENT_TO_GRAVE) + e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e3:SetCondition(c98263709.spcon) + e3:SetTarget(c98263709.sptg) + e3:SetOperation(c98263709.spop) + c:RegisterEffect(e3) +end +function c98263709.filter(c) + return c:IsSetCard(0x7b) and c:IsType(TYPE_MONSTER) +end +function c98263709.rectg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local val=Duel.GetMatchingGroupCount(c98263709.filter,tp,LOCATION_GRAVE,0,nil)*500 + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(val) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,val) +end +function c98263709.recop(e,tp,eg,ep,ev,re,r,rp) + local val=Duel.GetMatchingGroupCount(c98263709.filter,tp,LOCATION_GRAVE,0,nil)*500 + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Recover(p,val,REASON_EFFECT) +end +function c98263709.flipop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():RegisterFlagEffect(98263709,RESET_EVENT+0x57a0000,0,0) +end +function c98263709.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetFlagEffect(98263709)~=0 and e:GetHandler():IsReason(REASON_DESTROY) +end +function c98263709.spfilter(c,e,tp) + return c:IsSetCard(0x7b) and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN) +end +function c98263709.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c98263709.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) +end +function c98263709.spop(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,aux.NecroValleyFilter(c98263709.spfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if not tc then return end + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c98280324.lua b/script/c98280324.lua index 6a2d3668..64e4c4a1 100644 --- a/script/c98280324.lua +++ b/script/c98280324.lua @@ -47,8 +47,8 @@ end function c98280324.spop(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,c98280324.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c98280324.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c98301564.lua b/script/c98301564.lua index b4fb5f28..ae97418b 100644 --- a/script/c98301564.lua +++ b/script/c98301564.lua @@ -1,59 +1,59 @@ ---解放のアリアドネ -function c98301564.initial_effect(c) - --pendulum summon - aux.EnablePendulumAttribute(c) - --Cost Change - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_LPCOST_CHANGE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetRange(LOCATION_PZONE) - e2:SetTargetRange(1,0) - e2:SetValue(c98301564.costchange) - c:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_DISCARD_COST_CHANGE) - e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e3:SetRange(LOCATION_PZONE) - e3:SetTargetRange(1,0) - c:RegisterEffect(e3) - --search - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_DESTROYED) - e4:SetProperty(EFFECT_FLAG_DELAY) - e4:SetCondition(c98301564.regcon) - e4:SetTarget(c98301564.regtg) - e4:SetOperation(c98301564.regop) - c:RegisterEffect(e4) -end -function c98301564.costchange(e,re,rp,val) - if re and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsType(TYPE_TRAP) and re:GetHandler():IsType(TYPE_COUNTER) then - return 0 - else - return val - end -end -function c98301564.regcon(e,tp,eg,ep,ev,re,r,rp) - return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 -end -function c98301564.cfilter(c) - return c:IsType(TYPE_TRAP) and c:IsType(TYPE_COUNTER) and c:IsAbleToHand() -end -function c98301564.regtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsLocation(LOCATION_DECK) - and Duel.IsExistingMatchingCard(c98301564.cfilter,tp,LOCATION_DECK,0,3,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) -end -function c98301564.regop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c98301564.cfilter,tp,LOCATION_DECK,0,nil) - if g:GetCount()>=3 then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local sg=g:Select(tp,3,3,nil) - Duel.ConfirmCards(1-tp,sg) - Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) - local tg=sg:Select(1-tp,1,1,nil) - Duel.SendtoHand(tg,nil,REASON_EFFECT) - end -end +--解放のアリアドネ +function c98301564.initial_effect(c) + --pendulum summon + aux.EnablePendulumAttribute(c) + --Cost Change + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_LPCOST_CHANGE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_PZONE) + e2:SetTargetRange(1,0) + e2:SetValue(c98301564.costchange) + c:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DISCARD_COST_CHANGE) + e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e3:SetRange(LOCATION_PZONE) + e3:SetTargetRange(1,0) + c:RegisterEffect(e3) + --search + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DESTROYED) + e4:SetProperty(EFFECT_FLAG_DELAY) + e4:SetCondition(c98301564.regcon) + e4:SetTarget(c98301564.regtg) + e4:SetOperation(c98301564.regop) + c:RegisterEffect(e4) +end +function c98301564.costchange(e,re,rp,val) + if re and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:GetHandler():IsType(TYPE_TRAP) and re:GetHandler():IsType(TYPE_COUNTER) then + return 0 + else + return val + end +end +function c98301564.regcon(e,tp,eg,ep,ev,re,r,rp) + return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 +end +function c98301564.cfilter(c) + return c:IsType(TYPE_TRAP) and c:IsType(TYPE_COUNTER) and c:IsAbleToHand() +end +function c98301564.regtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsLocation(LOCATION_DECK) + and Duel.IsExistingMatchingCard(c98301564.cfilter,tp,LOCATION_DECK,0,3,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) +end +function c98301564.regop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c98301564.cfilter,tp,LOCATION_DECK,0,nil) + if g:GetCount()>=3 then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local sg=g:Select(tp,3,3,nil) + Duel.ConfirmCards(1-tp,sg) + Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND) + local tg=sg:Select(1-tp,1,1,nil) + Duel.SendtoHand(tg,nil,REASON_EFFECT) + end +end diff --git a/script/c9837195.lua b/script/c9837195.lua index 8f65ac2d..4b5bb57e 100644 --- a/script/c9837195.lua +++ b/script/c9837195.lua @@ -1,51 +1,51 @@ ---ガスタの神官 ムスト -function c9837195.initial_effect(c) - --disable - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(9837195,0)) - e1:SetCategory(CATEGORY_DISABLE) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c9837195.target) - e1:SetOperation(c9837195.operation) - c:RegisterEffect(e1) -end -function c9837195.filter1(c) - return c:IsSetCard(0x10) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() -end -function c9837195.filter2(c) - return c:IsFaceup() and c:IsType(TYPE_EFFECT) -end -function c9837195.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return false end - if chk==0 then return Duel.IsExistingTarget(c9837195.filter1,tp,LOCATION_GRAVE,0,1,nil) - and Duel.IsExistingTarget(c9837195.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g1=Duel.SelectTarget(tp,c9837195.filter1,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g2=Duel.SelectTarget(tp,c9837195.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,1,0,0) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g2,1,0,0) -end -function c9837195.operation(e,tp,eg,ep,ev,re,r,rp) - local ex,g1=Duel.GetOperationInfo(0,CATEGORY_TODECK) - local ex,g2=Duel.GetOperationInfo(0,CATEGORY_DISABLE) - if g1:GetFirst():IsRelateToEffect(e) then - Duel.SendtoDeck(g1,nil,2,REASON_EFFECT) - end - local tc=g2:GetFirst() - if tc:IsFaceup() and tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end +--ガスタの神官 ムスト +function c9837195.initial_effect(c) + --disable + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(9837195,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c9837195.target) + e1:SetOperation(c9837195.operation) + c:RegisterEffect(e1) +end +function c9837195.filter1(c) + return c:IsSetCard(0x10) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck() +end +function c9837195.filter2(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c9837195.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c9837195.filter1,tp,LOCATION_GRAVE,0,1,nil) + and Duel.IsExistingTarget(c9837195.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g1=Duel.SelectTarget(tp,c9837195.filter1,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g2=Duel.SelectTarget(tp,c9837195.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g1,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g2,1,0,0) +end +function c9837195.operation(e,tp,eg,ep,ev,re,r,rp) + local ex,g1=Duel.GetOperationInfo(0,CATEGORY_TODECK) + local ex,g2=Duel.GetOperationInfo(0,CATEGORY_DISABLE) + if g1:GetFirst():IsRelateToEffect(e) then + Duel.SendtoDeck(g1,nil,2,REASON_EFFECT) + end + local tc=g2:GetFirst() + if tc:IsFaceup() and tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end diff --git a/script/c98374133.lua b/script/c98374133.lua index 4c17cc27..d94d12a3 100644 --- a/script/c98374133.lua +++ b/script/c98374133.lua @@ -1,14 +1,6 @@ --覚醒 function c98374133.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(c98374133.target) - e1:SetOperation(c98374133.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_EARTH)) --atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) @@ -21,30 +13,4 @@ function c98374133.initial_effect(c) e3:SetCode(EFFECT_UPDATE_DEFENSE) e3:SetValue(-200) c:RegisterEffect(e3) - --equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(c98374133.eqlimit) - c:RegisterEffect(e4) -end -function c98374133.eqlimit(e,c) - return c:IsAttribute(ATTRIBUTE_EARTH) -end -function c98374133.filter(c) - return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_EARTH) -end -function c98374133.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c98374133.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c98374133.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c98374133.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c98374133.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 diff --git a/script/c983995.lua b/script/c983995.lua index 648cf5aa..f720e673 100644 --- a/script/c983995.lua +++ b/script/c983995.lua @@ -34,7 +34,7 @@ function c983995.target(e,tp,eg,ep,ev,re,r,rp,chk) Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,1-tp,LOCATION_ONFIELD+LOCATION_HAND) end function c983995.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) + if not Duel.NegateEffect(ev) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.SelectMatchingCard(tp,nil,tp,0,LOCATION_ONFIELD+LOCATION_HAND,1,1,nil) if g:GetCount()~=0 then diff --git a/script/c98414735.lua b/script/c98414735.lua index ec106060..42aa0f4e 100644 --- a/script/c98414735.lua +++ b/script/c98414735.lua @@ -1,77 +1,77 @@ ---버제스토마 카나디아 -function c98414735.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetHintTiming(TIMING_BATTLE_PHASE,0x1c0+TIMING_BATTLE_PHASE) - e1:SetTarget(c98414735.target) - e1:SetOperation(c98414735.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_CHAINING) - e2:SetRange(LOCATION_GRAVE) - e2:SetCondition(c98414735.spcon) - e2:SetTarget(c98414735.sptg) - e2:SetOperation(c98414735.spop) - c:RegisterEffect(e2) -end -function c98414735.filter(c) - return c:IsFaceup() and c:IsCanTurnSet() -end -function c98414735.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c98414735.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c98414735.filter,tp,0,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - local g=Duel.SelectTarget(tp,c98414735.filter,tp,0,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) -end -function c98414735.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) - end -end -function c98414735.spcon(e,tp,eg,ep,ev,re,r,rp) - return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) -end -function c98414735.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:GetFlagEffect(98414735)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,98414735,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end - c:RegisterFlagEffect(98414735,RESET_CHAIN,0,1) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c98414735.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,98414735,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then - c:AddMonsterAttribute(TYPE_NORMAL) - Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) - c:AddMonsterAttributeComplete() - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_IMMUNE_EFFECT) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c98414735.efilter) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetReset(RESET_EVENT+0x47e0000) - e3:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e3,true) - Duel.SpecialSummonComplete() - end -end -function c98414735.efilter(e,re) - return re:IsActiveType(TYPE_MONSTER) -end +--バージェストマ・カナディア +function c98414735.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetHintTiming(TIMING_BATTLE_PHASE,0x1c0+TIMING_BATTLE_PHASE) + e1:SetTarget(c98414735.target) + e1:SetOperation(c98414735.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_CHAINING) + e2:SetRange(LOCATION_GRAVE) + e2:SetCondition(c98414735.spcon) + e2:SetTarget(c98414735.sptg) + e2:SetOperation(c98414735.spop) + c:RegisterEffect(e2) +end +function c98414735.filter(c) + return c:IsFaceup() and c:IsCanTurnSet() +end +function c98414735.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c98414735.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c98414735.filter,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + local g=Duel.SelectTarget(tp,c98414735.filter,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0) +end +function c98414735.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.ChangePosition(tc,POS_FACEDOWN_DEFENSE) + end +end +function c98414735.spcon(e,tp,eg,ep,ev,re,r,rp) + return re:IsActiveType(TYPE_TRAP) and re:IsHasType(EFFECT_TYPE_ACTIVATE) +end +function c98414735.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:GetFlagEffect(98414735)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsPlayerCanSpecialSummonMonster(tp,98414735,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) end + c:RegisterFlagEffect(98414735,RESET_CHAIN,0,1) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c98414735.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.IsPlayerCanSpecialSummonMonster(tp,98414735,0xd4,0x11,1200,0,2,RACE_AQUA,ATTRIBUTE_WATER) then + c:AddMonsterAttribute(TYPE_NORMAL) + Duel.SpecialSummonStep(c,0,tp,tp,true,false,POS_FACEUP) + c:AddMonsterAttributeComplete() + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_IMMUNE_EFFECT) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c98414735.efilter) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetReset(RESET_EVENT+0x47e0000) + e3:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e3,true) + Duel.SpecialSummonComplete() + end +end +function c98414735.efilter(e,re) + return re:IsActiveType(TYPE_MONSTER) +end diff --git a/script/c98427577.lua b/script/c98427577.lua index 00d08dbd..3b8d74a7 100644 --- a/script/c98427577.lua +++ b/script/c98427577.lua @@ -22,7 +22,7 @@ end function c98427577.activate(e,tp,eg,ep,ev,re,r,rp) Duel.NegateAttack() local c=e:GetHandler() - if c:IsRelateToEffect(e) and c:IsCanTurnSet() then + if c:IsRelateToEffect(e) and c:IsCanTurnSet() and e:IsHasType(EFFECT_TYPE_ACTIVATE) then Duel.BreakEffect() c:CancelToGrave() Duel.ChangePosition(c,POS_FACEDOWN) diff --git a/script/c98431356.lua b/script/c98431356.lua index b71b81fd..6558c78f 100644 --- a/script/c98431356.lua +++ b/script/c98431356.lua @@ -1,88 +1,88 @@ ---幻影翼 -function c98431356.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(c98431356.condition) - e1:SetTarget(c98431356.target) - e1:SetOperation(c98431356.activate) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(98431356,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,98431356) - e2:SetCost(c98431356.spcost) - e2:SetTarget(c98431356.sptg) - e2:SetOperation(c98431356.spop) - c:RegisterEffect(e2) -end -function c98431356.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() -end -function c98431356.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_FACEUP) - local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) -end -function c98431356.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(500) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) - e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e2:SetCountLimit(1) - e2:SetValue(c98431356.valcon) - e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e2) - end -end -function c98431356.valcon(e,re,r,rp) - return bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 -end -function c98431356.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c98431356.spfilter(c,e,tp) - return c:IsSetCard(0x10db) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c98431356.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c98431356.spfilter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c98431356.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c98431356.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c98431356.spop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - tc:RegisterEffect(e1,true) - end -end +--幻影翼 +function c98431356.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(c98431356.condition) + e1:SetTarget(c98431356.target) + e1:SetOperation(c98431356.activate) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(98431356,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,98431356) + e2:SetCost(c98431356.spcost) + e2:SetTarget(c98431356.sptg) + e2:SetOperation(c98431356.spop) + c:RegisterEffect(e2) +end +function c98431356.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() +end +function c98431356.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_FACEUP) + local g=Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0) +end +function c98431356.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(500) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e2:SetCountLimit(1) + e2:SetValue(c98431356.valcon) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + end +end +function c98431356.valcon(e,re,r,rp) + return bit.band(r,REASON_BATTLE+REASON_EFFECT)~=0 +end +function c98431356.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c98431356.spfilter(c,e,tp) + return c:IsSetCard(0x10db) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c98431356.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c98431356.spfilter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c98431356.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c98431356.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c98431356.spop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + end +end diff --git a/script/c98434877.lua b/script/c98434877.lua index bf642fa1..5c2a1b80 100644 --- a/script/c98434877.lua +++ b/script/c98434877.lua @@ -1,34 +1,34 @@ ---水魔神-スーガ -function c98434877.initial_effect(c) - --atkdown - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(98434877,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - e1:SetCountLimit(1) - e1:SetCondition(c98434877.condition) - e1:SetTarget(c98434877.target) - e1:SetOperation(c98434877.operation) - c:RegisterEffect(e1) -end -function c98434877.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==e:GetHandler() -end -function c98434877.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetAttacker():IsCanBeEffectTarget(e) end - Duel.SetTargetCard(Duel.GetAttacker()) -end -function c98434877.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_SET_ATTACK_FINAL) - e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) - e1:SetValue(0) - tc:RegisterEffect(e1) - end -end +--水魔神-スーガ +function c98434877.initial_effect(c) + --atkdown + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98434877,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e1:SetCountLimit(1) + e1:SetCondition(c98434877.condition) + e1:SetTarget(c98434877.target) + e1:SetOperation(c98434877.operation) + c:RegisterEffect(e1) +end +function c98434877.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp and Duel.GetAttackTarget()==e:GetHandler() +end +function c98434877.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetAttacker():IsCanBeEffectTarget(e) end + Duel.SetTargetCard(Duel.GetAttacker()) +end +function c98434877.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_SET_ATTACK_FINAL) + e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) + e1:SetValue(0) + tc:RegisterEffect(e1) + end +end diff --git a/script/c98446407.lua b/script/c98446407.lua index 17f530c7..a1564539 100644 --- a/script/c98446407.lua +++ b/script/c98446407.lua @@ -1,37 +1,37 @@ ---ネフティスの導き手 -function c98446407.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(98446407,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCost(c98446407.spcost) - e1:SetTarget(c98446407.sptg) - e1:SetOperation(c98446407.spop) - c:RegisterEffect(e1) -end -function c98446407.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:IsReleasable() and Duel.CheckReleaseGroup(tp,nil,1,c) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) - local rg=Duel.SelectReleaseGroup(tp,nil,1,1,c) - rg:AddCard(c) - Duel.Release(rg,REASON_COST) -end -function c98446407.filter(c,e,tp) - return c:IsCode(61441708) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c98446407.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c98446407.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) -end -function c98446407.spop(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,c98446407.filter,tp,LOCATION_DECK+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 c98446407.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98446407,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c98446407.spcost) + e1:SetTarget(c98446407.sptg) + e1:SetOperation(c98446407.spop) + c:RegisterEffect(e1) +end +function c98446407.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return c:IsReleasable() and Duel.CheckReleaseGroup(tp,nil,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + local rg=Duel.SelectReleaseGroup(tp,nil,1,1,c) + rg:AddCard(c) + Duel.Release(rg,REASON_COST) +end +function c98446407.filter(c,e,tp) + return c:IsCode(61441708) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c98446407.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 + and Duel.IsExistingMatchingCard(c98446407.filter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND) +end +function c98446407.spop(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,c98446407.filter,tp,LOCATION_DECK+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 diff --git a/script/c9845733.lua b/script/c9845733.lua index 69e6e0bc..129095b1 100644 --- a/script/c9845733.lua +++ b/script/c9845733.lua @@ -1,4 +1,4 @@ ---覚醒の証 -function c9845733.initial_effect(c) - aux.AddRitualProcGreaterCode(c,10789972) -end +--覚醒の証 +function c9845733.initial_effect(c) + aux.AddRitualProcGreaterCode(c,10789972) +end diff --git a/script/c98495314.lua b/script/c98495314.lua index 78592980..41726848 100644 --- a/script/c98495314.lua +++ b/script/c98495314.lua @@ -1,59 +1,31 @@ ---執念の剣 -function c98495314.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(c98495314.target) - e1:SetOperation(c98495314.operation) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(500) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) - --Equip limit - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_EQUIP_LIMIT) - e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e4:SetValue(1) - c:RegisterEffect(e4) - --to deck - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(98495314,0)) - e5:SetCategory(CATEGORY_TODECK) - e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e5:SetCode(EVENT_TO_GRAVE) - e5:SetTarget(c98495314.tdtg) - e5:SetOperation(c98495314.tdop) - c:RegisterEffect(e5) -end -function c98495314.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 c98495314.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 c98495314.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsRelateToEffect(e) end - Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) -end -function c98495314.tdop(e,tp,eg,ep,ev,re,r,rp) - if e:GetHandler():IsRelateToEffect(e) then - Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) - end -end +--執念の剣 +function c98495314.initial_effect(c) + aux.AddEquipProcedure(c) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) + --to deck + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(98495314,0)) + e5:SetCategory(CATEGORY_TODECK) + e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e5:SetCode(EVENT_TO_GRAVE) + e5:SetTarget(c98495314.tdtg) + e5:SetOperation(c98495314.tdop) + c:RegisterEffect(e5) +end +function c98495314.tdtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsRelateToEffect(e) end + Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) +end +function c98495314.tdop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsRelateToEffect(e) then + Duel.SendtoDeck(e:GetHandler(),nil,0,REASON_EFFECT) + end +end diff --git a/script/c98502113.lua b/script/c98502113.lua index 205b7a57..e973f582 100644 --- a/script/c98502113.lua +++ b/script/c98502113.lua @@ -1,63 +1,62 @@ ---超魔導剣士-ブラック・パラディン -function c98502113.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,46986414,78193831,true,true) - --negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(98502113,0)) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c98502113.discon) - e1:SetCost(c98502113.discost) - e1:SetTarget(c98502113.distg) - e1:SetOperation(c98502113.disop) - c:RegisterEffect(e1) - --atkup - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_MZONE) - e2:SetValue(c98502113.val) - c:RegisterEffect(e2) - --spsummon condition - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(aux.fuslimit) - c:RegisterEffect(e3) -end -function c98502113.val(e,c) - return Duel.GetMatchingGroupCount(c98502113.filter,0,0x14,0x14,nil)*500 -end -function c98502113.filter(c) - return c:IsRace(RACE_DRAGON) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) -end -function c98502113.discon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) - and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c98502113.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end - Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD,nil) -end -function c98502113.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c98502113.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--超魔導剣士-ブラック・パラディン +function c98502113.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,46986414,78193831,true,true) + --negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98502113,0)) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c98502113.discon) + e1:SetCost(c98502113.discost) + e1:SetTarget(c98502113.distg) + e1:SetOperation(c98502113.disop) + c:RegisterEffect(e1) + --atkup + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetValue(c98502113.val) + c:RegisterEffect(e2) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.fuslimit) + c:RegisterEffect(e3) +end +function c98502113.val(e,c) + return Duel.GetMatchingGroupCount(c98502113.filter,0,0x14,0x14,nil)*500 +end +function c98502113.filter(c) + return c:IsRace(RACE_DRAGON) and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) +end +function c98502113.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) + and re:IsActiveType(TYPE_SPELL) and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c98502113.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end + Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD,nil) +end +function c98502113.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c98502113.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c9852718.lua b/script/c9852718.lua new file mode 100644 index 00000000..67fab2eb --- /dev/null +++ b/script/c9852718.lua @@ -0,0 +1,43 @@ +--決別 +--Farewell +--Scripted by Eerie Code +function c9852718.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c9852718.condition) + e1:SetCost(c9852718.cost) + e1:SetOperation(c9852718.activate) + c:RegisterEffect(e1) +end +function c9852718.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 c9852718.cfilter(c) + return c:IsType(TYPE_SPELL) and c:IsAbleToGraveAsCost() +end +function c9852718.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c9852718.cfilter,tp,LOCATION_HAND,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c9852718.cfilter,tp,LOCATION_HAND,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c9852718.activate(e,tp,eg,ep,ev,re,r,rp) + Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1) + local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end diff --git a/script/c98637386.lua b/script/c98637386.lua index abf8a5d0..5a064b5a 100644 --- a/script/c98637386.lua +++ b/script/c98637386.lua @@ -1,42 +1,42 @@ ---ゴヨウ・プレデター -function c98637386.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) - c:EnableReviveLimit() - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(98637386,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_BATTLE_DESTROYING) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCountLimit(1,98637386) - e1:SetCondition(aux.bdogcon) - e1:SetTarget(c98637386.sptg) - e1:SetOperation(c98637386.spop) - c:RegisterEffect(e1) -end -function c98637386.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local bc=e:GetHandler():GetBattleTarget() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetTargetCard(bc) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) -end -function c98637386.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e1:SetOperation(c98637386.rdop) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - Duel.SpecialSummonComplete() - end - end -end -function c98637386.rdop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(ep,ev/2) -end +--ゴヨウ・プレデター +function c98637386.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) + c:EnableReviveLimit() + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98637386,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DESTROYING) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCountLimit(1,98637386) + e1:SetCondition(aux.bdogcon) + e1:SetTarget(c98637386.sptg) + e1:SetOperation(c98637386.spop) + c:RegisterEffect(e1) +end +function c98637386.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local bc=e:GetHandler():GetBattleTarget() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and bc:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetTargetCard(bc) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,bc,1,0,0) +end +function c98637386.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e1:SetOperation(c98637386.rdop) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end + end +end +function c98637386.rdop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(ep,ev/2) +end diff --git a/script/c98719226.lua b/script/c98719226.lua index f046d387..cb6ff2d4 100644 --- a/script/c98719226.lua +++ b/script/c98719226.lua @@ -1,44 +1,44 @@ ---エーリアン・ウォリアー -function c98719226.initial_effect(c) - --counter - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(98719226,0)) - e1:SetCategory(CATEGORY_COUNTER) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_BATTLE_DESTROYED) - e1:SetCondition(c98719226.ctcon) - e1:SetOperation(c98719226.ctop) - c:RegisterEffect(e1) - --atk def - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetCondition(c98719226.adcon) - e2:SetTarget(c98719226.adtg) - e2:SetValue(c98719226.adval) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_UPDATE_DEFENSE) - c:RegisterEffect(e3) -end -function c98719226.ctcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c98719226.ctop(e,tp,eg,ep,ev,re,r,rp) - local tc=e:GetHandler():GetReasonCard() - if tc:IsFaceup() and tc:IsRelateToBattle() then - tc:AddCounter(0x100e,2) - end -end -function c98719226.adcon(e) - return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() -end -function c98719226.adtg(e,c) - local bc=c:GetBattleTarget() - return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) -end -function c98719226.adval(e,c) - return c:GetCounter(0x100e)*-300 -end +--エーリアン・ウォリアー +function c98719226.initial_effect(c) + --counter + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98719226,0)) + e1:SetCategory(CATEGORY_COUNTER) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_BATTLE_DESTROYED) + e1:SetCondition(c98719226.ctcon) + e1:SetOperation(c98719226.ctop) + c:RegisterEffect(e1) + --atk def + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetCondition(c98719226.adcon) + e2:SetTarget(c98719226.adtg) + e2:SetValue(c98719226.adval) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_UPDATE_DEFENSE) + c:RegisterEffect(e3) +end +function c98719226.ctcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c98719226.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=e:GetHandler():GetReasonCard() + if tc:IsFaceup() and tc:IsRelateToBattle() then + tc:AddCounter(0x100e,2) + end +end +function c98719226.adcon(e) + return Duel.GetCurrentPhase()==PHASE_DAMAGE_CAL and Duel.GetAttackTarget() +end +function c98719226.adtg(e,c) + local bc=c:GetBattleTarget() + return bc and c:GetCounter(0x100e)~=0 and bc:IsSetCard(0xc) +end +function c98719226.adval(e,c) + return c:GetCounter(0x100e)*-300 +end diff --git a/script/c98780137.lua b/script/c98780137.lua index dc32096a..66839538 100644 --- a/script/c98780137.lua +++ b/script/c98780137.lua @@ -1,31 +1,31 @@ ---マリスボラス・ナイフ -function c98780137.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(98780137,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c98780137.target) - e1:SetOperation(c98780137.operation) - c:RegisterEffect(e1) -end -function c98780137.filter(c,e,tp) - return c:GetCode()~=98780137 and c:IsSetCard(0x8b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c98780137.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c98780137.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c98780137.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c98780137.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c98780137.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--マリスボラス・ナイフ +function c98780137.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98780137,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c98780137.target) + e1:SetOperation(c98780137.operation) + c:RegisterEffect(e1) +end +function c98780137.filter(c,e,tp) + return c:GetCode()~=98780137 and c:IsSetCard(0x8b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c98780137.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c98780137.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c98780137.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c98780137.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c98780137.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c98827725.lua b/script/c98827725.lua index 74677e86..d210bdaa 100644 --- a/script/c98827725.lua +++ b/script/c98827725.lua @@ -6,7 +6,6 @@ function c98827725.initial_effect(c) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1,98827725+EFFECT_COUNT_CODE_OATH) - e1:SetCost(c98827725.cost) e1:SetTarget(c98827725.target) e1:SetOperation(c98827725.activate) c:RegisterEffect(e1) @@ -18,17 +17,9 @@ function c98827725.initial_effect(c) e2:SetCondition(c98827725.actcon) c:RegisterEffect(e2) end -function c98827725.cost(e,tp,eg,ep,ev,re,r,rp,chk) - e:SetLabel(1) - return true -end function c98827725.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - if e:GetLabel()==0 then return false end - e:SetLabel(0) - return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsPlayerCanSpecialSummonMonster(tp,98827725,0x10db,0x11,4,0,300,RACE_WARRIOR,ATTRIBUTE_DARK) end - e:SetLabel(0) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:IsHasType(EFFECT_TYPE_ACTIVATE) + and Duel.IsPlayerCanSpecialSummonMonster(tp,98827725,0x10db,0x11,4,0,300,RACE_WARRIOR,ATTRIBUTE_DARK) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) end function c98827725.activate(e,tp,eg,ep,ev,re,r,rp) diff --git a/script/c98867329.lua b/script/c98867329.lua index e21b2f6a..5a2a7564 100644 --- a/script/c98867329.lua +++ b/script/c98867329.lua @@ -1,27 +1,12 @@ --災いの装備品 function c98867329.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(c98867329.target) - e1:SetOperation(c98867329.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c) --Atk up local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_EQUIP) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(c98867329.atkval) 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) --equip local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(98867329,0)) @@ -37,19 +22,6 @@ end function c98867329.atkval(e,c) return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_MZONE,0)*-600 end -function c98867329.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 c98867329.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 c98867329.eqcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end diff --git a/script/c98884569.lua b/script/c98884569.lua index b6d246e3..4f3898f8 100644 --- a/script/c98884569.lua +++ b/script/c98884569.lua @@ -1,33 +1,33 @@ ---ブルーローズ・ドラゴン -function c98884569.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(98884569,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c98884569.condition) - e1:SetTarget(c98884569.target) - e1:SetOperation(c98884569.operation) - c:RegisterEffect(e1) -end -function c98884569.condition(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) -end -function c98884569.filter(c,e,tp) - return (c:IsRace(RACE_PLANT) or c:IsCode(73580471)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c98884569.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c98884569.filter(chkc,e,tp) end - if chk==0 then return Duel.IsExistingTarget(c98884569.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c98884569.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c98884569.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--ブルーローズ・ドラゴン +function c98884569.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(98884569,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c98884569.condition) + e1:SetTarget(c98884569.target) + e1:SetOperation(c98884569.operation) + c:RegisterEffect(e1) +end +function c98884569.condition(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsReason(REASON_DESTROY) +end +function c98884569.filter(c,e,tp) + return (c:IsRace(RACE_PLANT) or c:IsCode(73580471)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c98884569.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c98884569.filter(chkc,e,tp) end + if chk==0 then return Duel.IsExistingTarget(c98884569.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c98884569.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c98884569.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c98905.lua b/script/c98905.lua new file mode 100644 index 00000000..ab08d3c0 --- /dev/null +++ b/script/c98905.lua @@ -0,0 +1,64 @@ +--光波分光 +function c98905.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c98905.target) + e1:SetOperation(c98905.activate) + c:RegisterEffect(e1) + if not c98905.global_check then + c98905.global_check=true + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_TO_GRAVE) + ge1:SetOperation(c98905.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c98905.cfilter(c,tp) + return c:IsSetCard(0xe5) and c:IsType(TYPE_XYZ) and c:IsControler(tp) and c:GetOverlayCount()>0 +end +function c98905.checkop(e,tp,eg,ep,ev,re,r,rp) + if not eg then return end + local sg=eg:Filter(c98905.cfilter,nil,tp) + local tc=sg:GetFirst() + while tc do + tc:RegisterFlagEffect(98905,RESET_EVENT+0x1fe0000-RESET_TOGRAVE,0,1) + tc=sg:GetNext() + end +end +function c98905.filter(c,e,tp) + return c:GetFlagEffect(98905)~=0 and c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp) + and (c:IsReason(REASON_BATTLE) or c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()~=tp) + and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) + and Duel.IsExistingMatchingCard(c98905.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetCode()) +end +function c98905.spfilter(c,e,tp,cd) + return c:IsType(TYPE_XYZ) and c:IsCode(cd) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c98905.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return eg:IsContains(chkc) and c98905.filter(chkc,e,tp) end + if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 + and eg:IsExists(c98905.filter,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=eg:FilterSelect(tp,c98905.filter,1,1,nil,e,tp) + Duel.SetTargetCard(g) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c98905.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c98905.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetCode()) + if g:GetCount()>0 then + g:AddCard(tc) + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c98918572.lua b/script/c98918572.lua new file mode 100644 index 00000000..55fbf243 --- /dev/null +++ b/script/c98918572.lua @@ -0,0 +1,70 @@ +--十二獣の相剋 +--Zoodiac Xiangke +--Scripted by Eerie Code +function c98918572.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --remove overlay replace + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(98918572,0)) + e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_OVERLAY_REMOVE_REPLACE) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1,98918572) + e2:SetCondition(c98918572.rcon) + e2:SetOperation(c98918572.rop) + c:RegisterEffect(e2) + --attach + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_QUICK_O) + e3:SetCode(EVENT_FREE_CHAIN) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_GRAVE) + e3:SetCost(c98918572.xyzcost) + e3:SetTarget(c98918572.xyztg) + e3:SetOperation(c98918572.xyzop) + c:RegisterEffect(e3) +end +function c98918572.rfilter(c,oc) + return c:IsFaceup() and c:IsType(TYPE_XYZ) + and c:CheckRemoveOverlayCard(tp,oc,REASON_COST) +end +function c98918572.rcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return bit.band(r,REASON_COST)~=0 and re:IsHasType(0x7e0) + and re:IsActiveType(TYPE_XYZ) and ep==e:GetOwnerPlayer() and rc:IsSetCard(0xf1) + and Duel.IsExistingMatchingCard(c98918572.rfilter,tp,LOCATION_MZONE,0,1,rc,ev) +end +function c98918572.rop(e,tp,eg,ep,ev,re,r,rp) + local ct=bit.band(ev,0xffff) + local rc=re:GetHandler() + local tc=Duel.SelectMatchingCard(tp,c98918572.rfilter,tp,LOCATION_MZONE,0,1,1,rc,ct) + tc:RemoveOverlayCard(tp,ct,ct,REASON_COST) +end +function c98918572.xyzcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c98918572.xyzfilter(c) + return c:IsFaceup() and c:IsType(TYPE_XYZ) and c:IsSetCard(0xf1) +end +function c98918572.xyztg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return false end + if chk==0 then return Duel.IsExistingTarget(c98918572.xyzfilter,tp,LOCATION_MZONE,0,2,nil) end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(98918572,1)) + local g1=Duel.SelectTarget(tp,c98918572.xyzfilter,tp,LOCATION_MZONE,0,1,1,nil) + e:SetLabelObject(g1:GetFirst()) + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(98918572,2)) + local g2=Duel.SelectTarget(tp,c98918572.xyzfilter,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) +end +function c98918572.xyzop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) + if g:GetCount()~=2 or not e:GetHandler():IsRelateToEffect(e) then return end + local tc=g:GetFirst() + local xc=g:GetNext() + if xc==e:GetLabelObject() then tc,xc=xc,tc end + Duel.Overlay(tc,Group.FromCards(xc)) +end \ No newline at end of file diff --git a/script/c98927491.lua b/script/c98927491.lua index 286cdb61..e45edcf0 100644 --- a/script/c98927491.lua +++ b/script/c98927491.lua @@ -1,43 +1,43 @@ ---レスキューキューロイド -function c98927491.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,24311595,36378213,true,true) - --spsummon condition - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e1:SetCode(EFFECT_SPSUMMON_CONDITION) - e1:SetValue(aux.fuslimit) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(98927491,0)) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetRange(LOCATION_MZONE) - e2:SetCountLimit(1) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_BATTLE_DESTROYED) - e2:SetTarget(c98927491.target) - e2:SetOperation(c98927491.activate) - c:RegisterEffect(e2) -end -function c98927491.filter(c,e,tp) - return c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c98927491.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=eg:Filter(c98927491.filter,nil,e,tp) - e:SetLabelObject(g:GetFirst()) - return g:GetCount()~=0 - end - Duel.SetTargetCard(e:GetLabelObject()) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetLabelObject(),1,0,0) -end -function c98927491.activate(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - end -end +--レスキューキューロイド +function c98927491.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,24311595,36378213,true,true) + --spsummon condition + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e1:SetCode(EFFECT_SPSUMMON_CONDITION) + e1:SetValue(aux.fuslimit) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(98927491,0)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetTarget(c98927491.target) + e2:SetOperation(c98927491.activate) + c:RegisterEffect(e2) +end +function c98927491.filter(c,e,tp) + return c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE) and c:GetPreviousControler()==tp + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c98927491.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=eg:Filter(c98927491.filter,nil,e,tp) + e:SetLabelObject(g:GetFirst()) + return g:GetCount()~=0 + end + Duel.SetTargetCard(e:GetLabelObject()) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetLabelObject(),1,0,0) +end +function c98927491.activate(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + end +end diff --git a/script/c98931003.lua b/script/c98931003.lua index 66fe336d..7ee52c8e 100644 --- a/script/c98931003.lua +++ b/script/c98931003.lua @@ -1,34 +1,34 @@ ---ナナナ -function c98931003.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c98931003.target) - e1:SetOperation(c98931003.operation) - c:RegisterEffect(e1) -end -function c98931003.filter(c) - return c:IsFaceup() and (c:GetLevel()==7 or c:GetRank()==7) -end -function c98931003.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c98931003.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c98931003.filter,tp,LOCATION_MZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) - Duel.SelectTarget(tp,c98931003.filter,tp,LOCATION_MZONE,0,1,1,nil) -end -function c98931003.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) and tc:IsFaceup() then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_UPDATE_ATTACK) - e1:SetValue(700) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - tc:RegisterEffect(e1) - local e2=e1:Clone() - e2:SetCode(EFFECT_UPDATE_DEFENSE) - tc:RegisterEffect(e2) - end -end +--ナナナ +function c98931003.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c98931003.target) + e1:SetOperation(c98931003.operation) + c:RegisterEffect(e1) +end +function c98931003.filter(c) + return c:IsFaceup() and (c:GetLevel()==7 or c:GetRank()==7) +end +function c98931003.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c98931003.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c98931003.filter,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) + Duel.SelectTarget(tp,c98931003.filter,tp,LOCATION_MZONE,0,1,1,nil) +end +function c98931003.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) and tc:IsFaceup() then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UPDATE_ATTACK) + e1:SetValue(700) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=e1:Clone() + e2:SetCode(EFFECT_UPDATE_DEFENSE) + tc:RegisterEffect(e2) + end +end diff --git a/script/c98956134.lua b/script/c98956134.lua index 7f0d0a05..2db9e27d 100644 --- a/script/c98956134.lua +++ b/script/c98956134.lua @@ -1,36 +1,35 @@ ---デストラクション・ジャマー -function c98956134.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c98956134.condition) - e1:SetCost(c98956134.cost) - e1:SetTarget(c98956134.target) - e1:SetOperation(c98956134.activate) - c:RegisterEffect(e1) -end -function c98956134.condition(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsChainNegatable(ev) then return false end - local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) - return ex and tg~=nil and tc+tg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)-tg:GetCount()>0 -end -function c98956134.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end - 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 c98956134.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c98956134.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--デストラクション・ジャマー +function c98956134.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_CHAINING) + e1:SetCondition(c98956134.condition) + e1:SetCost(c98956134.cost) + e1:SetTarget(c98956134.target) + e1:SetOperation(c98956134.activate) + c:RegisterEffect(e1) +end +function c98956134.condition(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsChainNegatable(ev) then return false end + local ex,tg,tc=Duel.GetOperationInfo(ev,CATEGORY_DESTROY) + return ex and tg~=nil and tc+tg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)-tg:GetCount()>0 +end +function c98956134.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.IsPlayerAffectedByEffect(tp,EFFECT_DISCARD_COST_CHANGE) then return true end + 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 c98956134.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c98956134.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c99000151.lua b/script/c99000151.lua index 1156ab04..24c17fdf 100644 --- a/script/c99000151.lua +++ b/script/c99000151.lua @@ -1,32 +1,32 @@ ---死の花-ネクロ・フルール -function c99000151.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(99000151,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetCondition(c99000151.condition) - e1:SetTarget(c99000151.target) - e1:SetOperation(c99000151.operation) - c:RegisterEffect(e1) -end -function c99000151.condition(e,tp,eg,ep,ev,re,r,rp) - return bit.band(e:GetHandler():GetReason(),0x41)==0x41 -end -function c99000151.filter(c,e,tp) - return c:IsCode(36405256) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c99000151.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c99000151.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) -end -function c99000151.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end - local tc=Duel.GetFirstMatchingCard(c99000151.filter,tp,LOCATION_DECK,0,nil,e,tp) - if tc then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--死の花-ネクロ・フルール +function c99000151.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99000151,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetCondition(c99000151.condition) + e1:SetTarget(c99000151.target) + e1:SetOperation(c99000151.operation) + c:RegisterEffect(e1) +end +function c99000151.condition(e,tp,eg,ep,ev,re,r,rp) + return bit.band(e:GetHandler():GetReason(),0x41)==0x41 +end +function c99000151.filter(c,e,tp) + return c:IsCode(36405256) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c99000151.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c99000151.filter,tp,LOCATION_DECK,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) +end +function c99000151.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end + local tc=Duel.GetFirstMatchingCard(c99000151.filter,tp,LOCATION_DECK,0,nil,e,tp) + if tc then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c99002135.lua b/script/c99002135.lua index a6204381..1714428e 100644 --- a/script/c99002135.lua +++ b/script/c99002135.lua @@ -30,8 +30,8 @@ end function c99002135.activate(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,c99002135.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()~=0 and not g:GetFirst():IsHasEffect(EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c99002135.spfilter),tp,LOCATION_GRAVE+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 diff --git a/script/c99013397.lua b/script/c99013397.lua index bac7b067..b752d6a7 100644 --- a/script/c99013397.lua +++ b/script/c99013397.lua @@ -1,14 +1,6 @@ --剣闘獣の闘器ハルバード function c99013397.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(c99013397.target) - e1:SetOperation(c99013397.operation) - c:RegisterEffect(e1) + aux.AddEquipProcedure(c,nil,aux.FilterBoolFunction(Card.IsSetCard,0x19)) --destroy local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) @@ -21,13 +13,6 @@ function c99013397.initial_effect(c) e2:SetTarget(c99013397.destg) e2:SetOperation(c99013397.desop) 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(c99013397.eqlimit) - c:RegisterEffect(e3) --tohand local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) @@ -39,26 +24,6 @@ function c99013397.initial_effect(c) e4:SetOperation(c99013397.retop) c:RegisterEffect(e4) end -function c99013397.eqlimit(e,c) - return c:IsSetCard(0x19) -end -function c99013397.filter(c) - return c:IsFaceup() and c:IsSetCard(0x19) -end -function c99013397.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and c99013397.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c99013397.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,c99013397.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c99013397.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 c99013397.descon(e,tp,eg,ep,ev,re,r,rp) local eqc=e:GetHandler():GetEquipTarget() return eqc==Duel.GetAttacker() diff --git a/script/c99177923.lua b/script/c99177923.lua index 40dcd659..261f836d 100644 --- a/script/c99177923.lua +++ b/script/c99177923.lua @@ -1,68 +1,68 @@ ---インフェルニティ・デーモン -function c99177923.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(99177923,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_DRAW) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetRange(LOCATION_HAND) - e1:SetCondition(c99177923.spcon) - e1:SetCost(c99177923.spcost) - e1:SetTarget(c99177923.sptg) - e1:SetOperation(c99177923.spop) - c:RegisterEffect(e1) - --search - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(99177923,1)) - e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetCode(EVENT_SPSUMMON_SUCCESS) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCondition(c99177923.srcon) - e2:SetTarget(c99177923.srtg) - e2:SetOperation(c99177923.srop) - c:RegisterEffect(e2) -end -function c99177923.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) - return ev==ct and eg:IsContains(c) -end -function c99177923.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return not e:GetHandler():IsPublic() end -end -function c99177923.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) -end -function c99177923.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsRelateToEffect(e) then return end - if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then - Duel.SendtoGrave(c,REASON_RULE) - end -end -function c99177923.srcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 -end -function c99177923.filter(c) - return c:IsSetCard(0xb) and c:IsAbleToHand() -end -function c99177923.srtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c99177923.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c99177923.srop(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c99177923.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end +--インフェルニティ・デーモン +function c99177923.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99177923,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DRAW) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetRange(LOCATION_HAND) + e1:SetCondition(c99177923.spcon) + e1:SetCost(c99177923.spcost) + e1:SetTarget(c99177923.sptg) + e1:SetOperation(c99177923.spop) + c:RegisterEffect(e1) + --search + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99177923,1)) + e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetCode(EVENT_SPSUMMON_SUCCESS) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCondition(c99177923.srcon) + e2:SetTarget(c99177923.srtg) + e2:SetOperation(c99177923.srop) + c:RegisterEffect(e2) +end +function c99177923.spcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0) + return ev==ct and eg:IsContains(c) +end +function c99177923.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return not e:GetHandler():IsPublic() end +end +function c99177923.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) +end +function c99177923.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsRelateToEffect(e) then return end + if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)==0 and Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) then + Duel.SendtoGrave(c,REASON_RULE) + end +end +function c99177923.srcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)==0 +end +function c99177923.filter(c) + return c:IsSetCard(0xb) and c:IsAbleToHand() +end +function c99177923.srtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c99177923.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c99177923.srop(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>0 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c99177923.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end diff --git a/script/c99188141.lua b/script/c99188141.lua index 25167930..f00732c3 100644 --- a/script/c99188141.lua +++ b/script/c99188141.lua @@ -24,8 +24,7 @@ function c99188141.target(e,tp,eg,ep,ev,re,r,rp,chk) end end function c99188141.activate(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Remove(re:GetHandler(),POS_FACEUP,REASON_EFFECT) end end diff --git a/script/c99267150.lua b/script/c99267150.lua index 38fdccb9..0c2d1343 100644 --- a/script/c99267150.lua +++ b/script/c99267150.lua @@ -1,58 +1,58 @@ ---F・G・D -function c99267150.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),5,true) - --battle indestructable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetValue(c99267150.batfilter) - c:RegisterEffect(e2) - --spsummon condition - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) - e3:SetCode(EFFECT_SPSUMMON_CONDITION) - e3:SetValue(aux.fuslimit) - c:RegisterEffect(e3) -end -function c99267150.batfilter(e,c) - return c:IsAttribute(0x2f) -end -function c99267150.check_fusion_material_48144509(m,chkf) - local g1=m:Filter(Card.IsRace,nil,RACE_DRAGON) - if chkf~=PLAYER_NONE and not g1:IsExists(Card.IsOnField,1,nil) then return false end - local ct1=g1:GetCount() - local ct2=g1:FilterCount(Card.IsLocation,nil,LOCATION_EXTRA) - return (ct1-ct2)+math.min(ct2,2)>=5 -end -function c99267150.select_fusion_material_48144509(tp,m,chkf) - local cc=5 - local mg1=m:Filter(Card.IsRace,nil,RACE_DRAGON) - local mg2=mg1:Filter(Card.IsLocation,nil,LOCATION_EXTRA) - local sg=Group.CreateGroup() - if mg2:GetCount()>2 then - mg1:Sub(mg2) - if mg1:GetCount()<5 or Duel.SelectYesNo(tp,aux.Stringid(48144509,0)) then - local minc=1 - if mg1:GetCount()<4 then minc=2 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g=mg2:Select(tp,minc,2,nil) - sg:Merge(g) - cc=cc-g:GetCount() - end - end - if chkf~=PLAYER_NONE and mg1:GetCount()>cc then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g=mg1:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) - mg1:Sub(g) - sg:Merge(g) - cc=cc-1 - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) - local g=mg1:Select(tp,cc,cc,nil) - sg:Merge(g) - Duel.SetFusionMaterial(sg) - return sg -end +--F・G・D +function c99267150.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),5,true) + --battle indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetValue(c99267150.batfilter) + c:RegisterEffect(e2) + --spsummon condition + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) + e3:SetCode(EFFECT_SPSUMMON_CONDITION) + e3:SetValue(aux.fuslimit) + c:RegisterEffect(e3) +end +function c99267150.batfilter(e,c) + return c:IsAttribute(0x2f) +end +function c99267150.check_fusion_material_48144509(m,chkf) + local g1=m:Filter(Card.IsRace,nil,RACE_DRAGON) + if chkf~=PLAYER_NONE and not g1:IsExists(Card.IsOnField,1,nil) then return false end + local ct1=g1:GetCount() + local ct2=g1:FilterCount(Card.IsLocation,nil,LOCATION_EXTRA) + return (ct1-ct2)+math.min(ct2,2)>=5 +end +function c99267150.select_fusion_material_48144509(tp,m,chkf) + local cc=5 + local mg1=m:Filter(Card.IsRace,nil,RACE_DRAGON) + local mg2=mg1:Filter(Card.IsLocation,nil,LOCATION_EXTRA) + local sg=Group.CreateGroup() + if mg2:GetCount()>2 then + mg1:Sub(mg2) + if mg1:GetCount()<5 or Duel.SelectYesNo(tp,aux.Stringid(48144509,0)) then + local minc=1 + if mg1:GetCount()<4 then minc=2 end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g=mg2:Select(tp,minc,2,nil) + sg:Merge(g) + cc=cc-g:GetCount() + end + end + if chkf~=PLAYER_NONE and mg1:GetCount()>cc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g=mg1:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) + mg1:Sub(g) + sg:Merge(g) + cc=cc-1 + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) + local g=mg1:Select(tp,cc,cc,nil) + sg:Merge(g) + Duel.SetFusionMaterial(sg) + return sg +end diff --git a/script/c99315585.lua b/script/c99315585.lua index 7f07f41d..fc7d6b87 100644 --- a/script/c99315585.lua +++ b/script/c99315585.lua @@ -1,71 +1,71 @@ ---幻影騎士団クラックヘルム -function c99315585.initial_effect(c) - --atk up - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(99315585,0)) - e1:SetCategory(CATEGORY_ATKCHANGE) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e1:SetCode(EVENT_TO_GRAVE) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1,99315585) - e1:SetCondition(c99315585.atkcon) - e1:SetOperation(c99315585.atkop) - c:RegisterEffect(e1) - --to hand - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(99315585,1)) - e2:SetCategory(CATEGORY_TOHAND) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetRange(LOCATION_GRAVE) - e2:SetCountLimit(1,99315586) - e2:SetCost(c99315585.regcost) - e2:SetOperation(c99315585.regop) - c:RegisterEffect(e2) -end -function c99315585.tgfilter(c,tp) - return c:IsControler(tp) and (c:IsSetCard(0x10db) or c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP)) -end -function c99315585.atkcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c99315585.tgfilter,1,nil,tp) -end -function c99315585.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:SetValue(500) - e1:SetReset(RESET_EVENT+0x1ff0000) - c:RegisterEffect(e1) - end -end -function c99315585.regcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end - Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) -end -function c99315585.regop(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_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetCondition(c99315585.thcon) - e1:SetOperation(c99315585.thop) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c99315585.thfilter(c) - return (c:IsSetCard(0x10db) or (c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP))) and c:IsAbleToHand() -end -function c99315585.thcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c99315585.thfilter,tp,LOCATION_GRAVE,0,1,nil) -end -function c99315585.thop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c99315585.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) - local tc=g:GetFirst() - if tc and not tc:IsHasEffect(EFFECT_NECRO_VALLEY) then - Duel.SendtoHand(tc,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,tc) - end -end +--幻影騎士団クラックヘルム +function c99315585.initial_effect(c) + --atk up + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99315585,0)) + e1:SetCategory(CATEGORY_ATKCHANGE) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e1:SetCode(EVENT_TO_GRAVE) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1,99315585) + e1:SetCondition(c99315585.atkcon) + e1:SetOperation(c99315585.atkop) + c:RegisterEffect(e1) + --to hand + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99315585,1)) + e2:SetCategory(CATEGORY_TOHAND) + e2:SetType(EFFECT_TYPE_IGNITION) + e2:SetRange(LOCATION_GRAVE) + e2:SetCountLimit(1,99315586) + e2:SetCost(c99315585.regcost) + e2:SetOperation(c99315585.regop) + c:RegisterEffect(e2) +end +function c99315585.tgfilter(c,tp) + return c:IsControler(tp) and (c:IsSetCard(0x10db) or c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP)) +end +function c99315585.atkcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c99315585.tgfilter,1,nil,tp) +end +function c99315585.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:SetValue(500) + e1:SetReset(RESET_EVENT+0x1ff0000) + c:RegisterEffect(e1) + end +end +function c99315585.regcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end + Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) +end +function c99315585.regop(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_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetCondition(c99315585.thcon) + e1:SetOperation(c99315585.thop) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c99315585.thfilter(c) + return (c:IsSetCard(0x10db) or (c:IsSetCard(0xdb) and c:IsType(TYPE_SPELL+TYPE_TRAP))) and c:IsAbleToHand() +end +function c99315585.thcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c99315585.thfilter,tp,LOCATION_GRAVE,0,1,nil) +end +function c99315585.thop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c99315585.thfilter),tp,LOCATION_GRAVE,0,1,1,nil) + local tc=g:GetFirst() + if tc then + Duel.SendtoHand(tc,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,tc) + end +end diff --git a/script/c99330325.lua b/script/c99330325.lua index adbce69c..abfcf05d 100644 --- a/script/c99330325.lua +++ b/script/c99330325.lua @@ -1,4 +1,4 @@ ---Interrupted Kaiju Slumber +--妨げられた壊獣の眠り function c99330325.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) @@ -22,6 +22,15 @@ function c99330325.initial_effect(c) e2:SetOperation(c99330325.thop) c:RegisterEffect(e2) end +function c99330325.chkfilter1(c,e,tp) + return c:IsSetCard(0xd3) and c:IsType(TYPE_MONSTER) and + not c:IsHasEffect(EFFECT_REVIVE_LIMIT) and Duel.IsPlayerCanSpecialSummon(tp,0,POS_FACEUP,tp,c) + and Duel.IsExistingMatchingCard(c99330325.chkfilter2,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) +end +function c99330325.chkfilter2(c,e,tp,cd) + return c:IsSetCard(0xd3) and c:IsType(TYPE_MONSTER) and not c:IsCode(cd) + and not c:IsHasEffect(EFFECT_REVIVE_LIMIT) and Duel.IsPlayerCanSpecialSummon(tp,0,POS_FACEUP,1-tp,c) +end function c99330325.filter1(c,e,tp) return c:IsSetCard(0xd3) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingMatchingCard(c99330325.filter2,tp,LOCATION_DECK,0,1,nil,e,tp,c:GetCode()) @@ -32,14 +41,14 @@ function c99330325.filter2(c,e,tp,cd) end function c99330325.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) - and Duel.IsExistingMatchingCard(c99330325.filter1,tp,LOCATION_DECK,0,1,nil,e,tp) end - local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c99330325.chkfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end + local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK) end function c99330325.activate(e,tp,eg,ep,ev,re,r,rp) - local dg=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + local dg=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) if Duel.Destroy(dg,REASON_EFFECT)==0 then return end local sg=Duel.GetMatchingGroup(c99330325.filter1,tp,LOCATION_DECK,0,nil,e,tp) if sg:GetCount()>0 and not Duel.IsPlayerAffectedByEffect(tp,59822133) @@ -86,4 +95,4 @@ function c99330325.thop(e,tp,eg,ep,ev,re,r,rp) Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end -end +end \ No newline at end of file diff --git a/script/c99342953.lua b/script/c99342953.lua index efa2e012..b373cef6 100644 --- a/script/c99342953.lua +++ b/script/c99342953.lua @@ -1,58 +1,58 @@ ---古代遺跡コードA -function c99342953.initial_effect(c) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --counter - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_DESTROYED) - e2:SetCondition(c99342953.ctcon) - e2:SetOperation(c99342953.ctop) - c:RegisterEffect(e2) - --special summon - local e3=Effect.CreateEffect(c) - e3:SetDescription(aux.Stringid(99342953,0)) - e3:SetCategory(CATEGORY_SPECIAL_SUMMON) - e3:SetType(EFFECT_TYPE_IGNITION) - e3:SetProperty(EFFECT_FLAG_CARD_TARGET) - e3:SetRange(LOCATION_SZONE) - e3:SetCountLimit(1) - e3:SetCost(c99342953.spcost) - e3:SetTarget(c99342953.sptg) - e3:SetOperation(c99342953.spop) - c:RegisterEffect(e3) -end -function c99342953.ctfilter(c) - return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0xc) -end -function c99342953.ctcon(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c99342953.ctfilter,1,nil) -end -function c99342953.ctop(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():AddCounter(COUNTER_NEED_ENABLE+0x100e,1) -end -function c99342953.spcost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsCanRemoveCounter(tp,1,1,0x100e,2,REASON_COST) end - Duel.RemoveCounter(tp,1,1,0x100e,2,REASON_COST) -end -function c99342953.filter(c,e,tp) - return c:IsSetCard(0xc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c99342953.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c99342953.filter(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingTarget(c99342953.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectTarget(tp,c99342953.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) -end -function c99342953.spop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--古代遺跡コードA +function c99342953.initial_effect(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --counter + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_DESTROYED) + e2:SetCondition(c99342953.ctcon) + e2:SetOperation(c99342953.ctop) + c:RegisterEffect(e2) + --special summon + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(99342953,0)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetRange(LOCATION_SZONE) + e3:SetCountLimit(1) + e3:SetCost(c99342953.spcost) + e3:SetTarget(c99342953.sptg) + e3:SetOperation(c99342953.spop) + c:RegisterEffect(e3) +end +function c99342953.ctfilter(c) + return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP) and c:IsPreviousSetCard(0xc) +end +function c99342953.ctcon(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c99342953.ctfilter,1,nil) +end +function c99342953.ctop(e,tp,eg,ep,ev,re,r,rp) + e:GetHandler():AddCounter(COUNTER_NEED_ENABLE+0x100e,1) +end +function c99342953.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsCanRemoveCounter(tp,1,1,0x100e,2,REASON_COST) end + Duel.RemoveCounter(tp,1,1,0x100e,2,REASON_COST) +end +function c99342953.filter(c,e,tp) + return c:IsSetCard(0xc) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c99342953.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c99342953.filter(chkc,e,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingTarget(c99342953.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectTarget(tp,c99342953.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) +end +function c99342953.spop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c99348756.lua b/script/c99348756.lua index a40a6ca4..c55ab341 100644 --- a/script/c99348756.lua +++ b/script/c99348756.lua @@ -1,56 +1,56 @@ ---バルキリー・ナイト -function c99348756.initial_effect(c) - --cannot be battle target - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetTargetRange(0,LOCATION_MZONE) - e1:SetValue(c99348756.atktg) - c:RegisterEffect(e1) - --spsummon - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(99348756,0)) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET) - e2:SetCode(EVENT_BATTLE_DESTROYED) - e2:SetCondition(c99348756.spcon) - e2:SetTarget(c99348756.sptg) - e2:SetOperation(c99348756.spop) - c:RegisterEffect(e2) -end -function c99348756.atktg(e,c) - return c:GetCode()~=99348756 and c:IsFaceup() and c:IsRace(RACE_WARRIOR) -end -function c99348756.spcon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) -end -function c99348756.rmfilter(c,e,tp,g) - return c:IsAbleToRemoveAsCost() and g:IsExists(c99348756.spfilter,1,c,e,tp) -end -function c99348756.spfilter(c,e,tp) - return c:IsCanBeEffectTarget(e) and c:IsLevelAbove(5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c99348756.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c99348756.spfilter(chkc,e,tp) end - local g=Duel.GetMatchingGroup(Card.IsRace,tp,LOCATION_GRAVE,0,e:GetHandler(),RACE_WARRIOR) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsAbleToRemoveAsCost() - and g:IsExists(c99348756.rmfilter,1,nil,e,tp,g) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local rg=g:FilterSelect(tp,c99348756.rmfilter,1,1,nil,e,tp,g) - g:Sub(rg) - rg:AddCard(e:GetHandler()) - Duel.Remove(rg,POS_FACEUP,REASON_COST) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:FilterSelect(tp,c99348756.spfilter,1,1,nil,e,tp) - Duel.SetTargetCard(sg) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,sg,1,0,0) -end -function c99348756.spop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) - end -end +--バルキリー・ナイト +function c99348756.initial_effect(c) + --cannot be battle target + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetTargetRange(0,LOCATION_MZONE) + e1:SetValue(c99348756.atktg) + c:RegisterEffect(e1) + --spsummon + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99348756,0)) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET) + e2:SetCode(EVENT_BATTLE_DESTROYED) + e2:SetCondition(c99348756.spcon) + e2:SetTarget(c99348756.sptg) + e2:SetOperation(c99348756.spop) + c:RegisterEffect(e2) +end +function c99348756.atktg(e,c) + return c:GetCode()~=99348756 and c:IsFaceup() and c:IsRace(RACE_WARRIOR) +end +function c99348756.spcon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_BATTLE) +end +function c99348756.rmfilter(c,e,tp,g) + return c:IsAbleToRemoveAsCost() and g:IsExists(c99348756.spfilter,1,c,e,tp) +end +function c99348756.spfilter(c,e,tp) + return c:IsCanBeEffectTarget(e) and c:IsLevelAbove(5) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c99348756.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c99348756.spfilter(chkc,e,tp) end + local g=Duel.GetMatchingGroup(Card.IsRace,tp,LOCATION_GRAVE,0,e:GetHandler(),RACE_WARRIOR) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsAbleToRemoveAsCost() + and g:IsExists(c99348756.rmfilter,1,nil,e,tp,g) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local rg=g:FilterSelect(tp,c99348756.rmfilter,1,1,nil,e,tp,g) + g:Sub(rg) + rg:AddCard(e:GetHandler()) + Duel.Remove(rg,POS_FACEUP,REASON_COST) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:FilterSelect(tp,c99348756.spfilter,1,1,nil,e,tp) + Duel.SetTargetCard(sg) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,sg,1,0,0) +end +function c99348756.spop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c99357565.lua b/script/c99357565.lua index b115a660..25e89916 100644 --- a/script/c99357565.lua +++ b/script/c99357565.lua @@ -37,8 +37,9 @@ function c99357565.scop(e,tp,eg,ep,ev,re,r,rp) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_ADD_SETCODE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetValue(0xc008) - e1:SetReset(RESET_EVENT+0x1ff0000) + e1:SetReset(RESET_EVENT+0x1fe0000) c:RegisterEffect(e1) end end @@ -65,8 +66,8 @@ function c99357565.spop(e,tp,eg,ep,ev,re,r,rp,chk) if ft>=ct then if ft>1 and ct>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c99357565.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,ct,ct,nil,e,tp) - if g:GetCount()>0 and not g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then + local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c99357565.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE+LOCATION_DECK,0,ct,ct,nil,e,tp) + if g:GetCount()>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end diff --git a/script/c99365553.lua b/script/c99365553.lua index 6e71da8a..cd1a6225 100644 --- a/script/c99365553.lua +++ b/script/c99365553.lua @@ -52,6 +52,7 @@ function c99365553.spfilter2(c,att) end function c99365553.spcon2(e,c) if c==nil then return true end + if c:IsHasEffect(EFFECT_NECRO_VALLEY) then return false end local tp=c:GetControler() return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c99365553.spfilter2,tp,LOCATION_HAND,0,1,nil,ATTRIBUTE_LIGHT) diff --git a/script/c99423156.lua b/script/c99423156.lua index 2534fb94..301cd0d8 100644 --- a/script/c99423156.lua +++ b/script/c99423156.lua @@ -1,61 +1,63 @@ ---不知火の宮司 -function c99423156.initial_effect(c) - --special summon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(99423156,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_SUMMON_SUCCESS) - e1:SetTarget(c99423156.sumtg) - e1:SetOperation(c99423156.sumop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(99423156,1)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_REMOVE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e2:SetCountLimit(1,99423156) - e2:SetTarget(c99423156.target) - e2:SetOperation(c99423156.operation) - c:RegisterEffect(e2) -end -function c99423156.spfilter(c,e,tp) - return c:IsSetCard(0xd9) and not c:IsCode(99423156) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c99423156.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c99423156.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) -end -function c99423156.sumop(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,c99423156.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) - if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0 then - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - g:GetFirst():RegisterEffect(e1,true) - end -end -function c99423156.filter(c) - return c:IsFaceup() -end -function c99423156.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c99423156.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c99423156.filter,tp,0,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c99423156.filter,tp,0,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c99423156.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--不知火の宮司 +function c99423156.initial_effect(c) + --special summon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99423156,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_SUMMON_SUCCESS) + e1:SetTarget(c99423156.sumtg) + e1:SetOperation(c99423156.sumop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99423156,1)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_REMOVE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCountLimit(1,99423156) + e2:SetTarget(c99423156.target) + e2:SetOperation(c99423156.operation) + c:RegisterEffect(e2) +end +function c99423156.spfilter(c,e,tp) + return c:IsSetCard(0xd9) and not c:IsCode(99423156) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c99423156.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c99423156.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) +end +function c99423156.sumop(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,aux.NecroValleyFilter(c99423156.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) + local tc=g:GetFirst() + if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + tc:RegisterEffect(e1,true) + Duel.SpecialSummonComplete() + end +end +function c99423156.filter(c) + return c:IsFaceup() +end +function c99423156.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and c99423156.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c99423156.filter,tp,0,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c99423156.filter,tp,0,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c99423156.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c99427357.lua b/script/c99427357.lua new file mode 100644 index 00000000..e71fce40 --- /dev/null +++ b/script/c99427357.lua @@ -0,0 +1,92 @@ +--サイバー・エンジェル-那沙帝弥 +--Cyber Angel Nasateiya +--Scripted by Eerie Code +function c99427357.initial_effect(c) + c:EnableReviveLimit() + -- + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99427357,0)) + e1:SetCategory(CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CARD_TARGET) + e1:SetCountLimit(1) + e1:SetTarget(c99427357.rctg) + e1:SetOperation(c99427357.rcop) + c:RegisterEffect(e1) + --negate attack + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99427357,1)) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BE_BATTLE_TARGET) + e2:SetRange(LOCATION_MZONE) + e2:SetCondition(c99427357.condition) + e2:SetOperation(c99427357.operation) + c:RegisterEffect(e2) + -- + local e3=Effect.CreateEffect(c) + e3:SetDescription(aux.Stringid(99427357,2)) + e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_CONTROL) + e3:SetType(EFFECT_TYPE_IGNITION) + e3:SetRange(LOCATION_GRAVE) + e3:SetProperty(EFFECT_FLAG_CARD_TARGET) + e3:SetCost(c99427357.spcost) + e3:SetTarget(c99427357.sptg) + e3:SetOperation(c99427357.spop) + c:RegisterEffect(e3) +end + +function c99427357.rcfil(c) + return c:IsFaceup() +end +function c99427357.rctg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c99427357.rcfil(chkc) end + if chk==0 then return Duel.IsExistingTarget(c99427357.rcfil,tp,LOCATION_MZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c99427357.rcfil,tp,LOCATION_MZONE,0,1,1,nil) + Duel.SetTargetPlayer(tp) + local atk=math.floor(g:GetFirst():GetAttack()/2) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,atk) +end +function c99427357.rcop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if not tc:IsRelateToEffect(e) or tc:IsFacedown() then return end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local atk=math.floor(tc:GetAttack()/2) + Duel.Recover(p,atk,REASON_EFFECT) +end + +function c99427357.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + return d and d:IsControler(tp) and d:IsFaceup() and d:IsType(TYPE_RITUAL) +end +function c99427357.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateAttack() +end + +function c99427357.spcfil(c) + return c:IsSetCard(0x2093) and c:IsAbleToRemoveAsCost() +end +function c99427357.spcost(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.IsExistingMatchingCard(c99427357.spcfil,tp,LOCATION_GRAVE,0,1,c) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c99427357.spcfil,tp,LOCATION_GRAVE,0,1,1,c) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c99427357.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local c=e:GetHandler() + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsControlerCanBeChanged() end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.IsExistingTarget(Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL) + local g=Duel.SelectTarget(tp,Card.IsControlerCanBeChanged,tp,0,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0) +end +function c99427357.spop(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 Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + Duel.GetControl(tc,tp) + end +end diff --git a/script/c99429730.lua b/script/c99429730.lua index a75d9999..ae835510 100644 --- a/script/c99429730.lua +++ b/script/c99429730.lua @@ -1,72 +1,72 @@ ---森羅の番人 オーク -function c99429730.initial_effect(c) - --deck - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(99429730,0)) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c99429730.target) - e1:SetOperation(c99429730.operation) - c:RegisterEffect(e1) - --to deck - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(99429730,2)) - e2:SetCategory(CATEGORY_TODECK) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c99429730.tdcon) - e2:SetTarget(c99429730.tdtg) - e2:SetOperation(c99429730.tdop) - c:RegisterEffect(e2) -end -function c99429730.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c99429730.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct==0 then return end - if ct>3 then ct=3 end - local t={} - for i=1,ct do t[i]=i end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(99429730,1)) - local ac=Duel.AnnounceNumber(tp,table.unpack(t)) - Duel.ConfirmDecktop(tp,ac) - local g=Duel.GetDecktopGroup(tp,ac) - local sg=g:Filter(Card.IsRace,nil,RACE_PLANT) - if sg:GetCount()>0 then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REVEAL) - end - ac=ac-sg:GetCount() - if ac>0 then - Duel.SortDecktop(tp,tp,ac) - for i=1,ac do - local mg=Duel.GetDecktopGroup(tp,1) - Duel.MoveSequence(mg:GetFirst(),1) - end - end -end -function c99429730.tdcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c99429730.filter(c) - return c:IsRace(RACE_PLANT) and c:IsAbleToDeck() -end -function c99429730.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c99429730.filter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c99429730.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectTarget(tp,c99429730.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) - Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) -end -function c99429730.tdop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.SendtoDeck(tc,nil,0,REASON_EFFECT) - end -end +--森羅の番人 オーク +function c99429730.initial_effect(c) + --deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99429730,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c99429730.target) + e1:SetOperation(c99429730.operation) + c:RegisterEffect(e1) + --to deck + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99429730,2)) + e2:SetCategory(CATEGORY_TODECK) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c99429730.tdcon) + e2:SetTarget(c99429730.tdtg) + e2:SetOperation(c99429730.tdop) + c:RegisterEffect(e2) +end +function c99429730.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c99429730.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if ct==0 then return end + if ct>3 then ct=3 end + local t={} + for i=1,ct do t[i]=i end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(99429730,1)) + local ac=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.ConfirmDecktop(tp,ac) + local g=Duel.GetDecktopGroup(tp,ac) + local sg=g:Filter(Card.IsRace,nil,RACE_PLANT) + if sg:GetCount()>0 then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REVEAL) + end + ac=ac-sg:GetCount() + if ac>0 then + Duel.SortDecktop(tp,tp,ac) + for i=1,ac do + local mg=Duel.GetDecktopGroup(tp,1) + Duel.MoveSequence(mg:GetFirst(),1) + end + end +end +function c99429730.tdcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c99429730.filter(c) + return c:IsRace(RACE_PLANT) and c:IsAbleToDeck() +end +function c99429730.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c99429730.filter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c99429730.filter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectTarget(tp,c99429730.filter,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) +end +function c99429730.tdop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.SendtoDeck(tc,nil,0,REASON_EFFECT) + end +end diff --git a/script/c99469936.lua b/script/c99469936.lua index 94a15ec9..56e8d501 100644 --- a/script/c99469936.lua +++ b/script/c99469936.lua @@ -23,6 +23,7 @@ function c99469936.initial_effect(c) local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(99469936,2)) e3:SetCategory(CATEGORY_DISABLE) + e3:SetProperty(EFFECT_FLAG2_XMDETACH) e3:SetType(EFFECT_TYPE_IGNITION) e3:SetCountLimit(1) e3:SetRange(LOCATION_MZONE) diff --git a/script/c99517131.lua b/script/c99517131.lua index ac7f47c9..87421b0a 100644 --- a/script/c99517131.lua +++ b/script/c99517131.lua @@ -1,28 +1,28 @@ ---生命力吸収魔術 -function c99517131.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION+CATEGORY_RECOVER) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c99517131.target) - e1:SetOperation(c99517131.activate) - c:RegisterEffect(e1) -end -function c99517131.filter(c) - return c:IsFaceup() and c:IsType(TYPE_EFFECT) -end -function c99517131.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local rec=Duel.GetMatchingGroupCount(c99517131.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*400 - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(rec) - if rec>0 then Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) end -end -function c99517131.activate(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.ChangePosition(g,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE,true) - local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) - local rec=Duel.GetMatchingGroupCount(c99517131.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*400 - Duel.Recover(p,rec,REASON_EFFECT) -end +--生命力吸収魔術 +function c99517131.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION+CATEGORY_RECOVER) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c99517131.target) + e1:SetOperation(c99517131.activate) + c:RegisterEffect(e1) +end +function c99517131.filter(c) + return c:IsFaceup() and c:IsType(TYPE_EFFECT) +end +function c99517131.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + local rec=Duel.GetMatchingGroupCount(c99517131.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*400 + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(rec) + if rec>0 then Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,rec) end +end +function c99517131.activate(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + Duel.ChangePosition(g,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_DEFENSE,POS_FACEUP_DEFENSE,true) + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + local rec=Duel.GetMatchingGroupCount(c99517131.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)*400 + Duel.Recover(p,rec,REASON_EFFECT) +end diff --git a/script/c99597615.lua b/script/c99597615.lua index 2bcd8f40..bbc12587 100644 --- a/script/c99597615.lua +++ b/script/c99597615.lua @@ -1,5 +1,6 @@ --悪魔のくちづけ function c99597615.initial_effect(c) + aux.AddEquipProcedure(c) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_EQUIP) @@ -15,13 +16,6 @@ function c99597615.initial_effect(c) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(700) 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) --to deck local e4=Effect.CreateEffect(c) e4:SetDescription(aux.Stringid(99597615,0)) @@ -35,19 +29,6 @@ function c99597615.initial_effect(c) e4:SetOperation(c99597615.tdop) c:RegisterEffect(e4) end -function c99597615.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 c99597615.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 c99597615.tdcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) end diff --git a/script/c99641328.lua b/script/c99641328.lua index a31f0b65..0c2415d3 100644 --- a/script/c99641328.lua +++ b/script/c99641328.lua @@ -1,72 +1,72 @@ ---森羅の影胞子 ストール -function c99641328.initial_effect(c) - --deck - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(99641328,0)) - e1:SetCategory(CATEGORY_TOGRAVE) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e1:SetCode(EVENT_FLIP) - e1:SetTarget(c99641328.target) - e1:SetOperation(c99641328.operation) - c:RegisterEffect(e1) - --destroy - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(99641328,2)) - e2:SetCategory(CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c99641328.descon) - e2:SetTarget(c99641328.destg) - e2:SetOperation(c99641328.desop) - c:RegisterEffect(e2) -end -function c99641328.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end -end -function c99641328.operation(e,tp,eg,ep,ev,re,r,rp) - if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end - local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) - if ct==0 then return end - if ct>5 then ct=5 end - local t={} - for i=1,ct do t[i]=i end - Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(99641328,1)) - local ac=Duel.AnnounceNumber(tp,table.unpack(t)) - Duel.ConfirmDecktop(tp,ac) - local g=Duel.GetDecktopGroup(tp,ac) - local sg=g:Filter(Card.IsRace,nil,RACE_PLANT) - if sg:GetCount()>0 then - Duel.DisableShuffleCheck() - Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REVEAL) - end - ac=ac-sg:GetCount() - if ac>0 then - Duel.SortDecktop(tp,tp,ac) - for i=1,ac do - local mg=Duel.GetDecktopGroup(tp,1) - Duel.MoveSequence(mg:GetFirst(),1) - end - end -end -function c99641328.descon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) -end -function c99641328.desfilter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) -end -function c99641328.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsOnField() and c99641328.desfilter(chkc) end - if chk==0 then return Duel.IsExistingTarget(c99641328.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectTarget(tp,c99641328.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c99641328.desop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - Duel.Destroy(tc,REASON_EFFECT) - end -end +--森羅の影胞子 ストール +function c99641328.initial_effect(c) + --deck + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99641328,0)) + e1:SetCategory(CATEGORY_TOGRAVE) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e1:SetCode(EVENT_FLIP) + e1:SetTarget(c99641328.target) + e1:SetOperation(c99641328.operation) + c:RegisterEffect(e1) + --destroy + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99641328,2)) + e2:SetCategory(CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY) + e2:SetCode(EVENT_TO_GRAVE) + e2:SetCondition(c99641328.descon) + e2:SetTarget(c99641328.destg) + e2:SetOperation(c99641328.desop) + c:RegisterEffect(e2) +end +function c99641328.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end +end +function c99641328.operation(e,tp,eg,ep,ev,re,r,rp) + if not Duel.IsPlayerCanDiscardDeck(tp,1) then return end + local ct=Duel.GetFieldGroupCount(tp,LOCATION_DECK,0) + if ct==0 then return end + if ct>5 then ct=5 end + local t={} + for i=1,ct do t[i]=i end + Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(99641328,1)) + local ac=Duel.AnnounceNumber(tp,table.unpack(t)) + Duel.ConfirmDecktop(tp,ac) + local g=Duel.GetDecktopGroup(tp,ac) + local sg=g:Filter(Card.IsRace,nil,RACE_PLANT) + if sg:GetCount()>0 then + Duel.DisableShuffleCheck() + Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REVEAL) + end + ac=ac-sg:GetCount() + if ac>0 then + Duel.SortDecktop(tp,tp,ac) + for i=1,ac do + local mg=Duel.GetDecktopGroup(tp,1) + Duel.MoveSequence(mg:GetFirst(),1) + end + end +end +function c99641328.descon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsPreviousLocation(LOCATION_DECK) and c:IsReason(REASON_REVEAL) +end +function c99641328.desfilter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) +end +function c99641328.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsOnField() and c99641328.desfilter(chkc) end + if chk==0 then return Duel.IsExistingTarget(c99641328.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectTarget(tp,c99641328.desfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c99641328.desop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc:IsRelateToEffect(e) then + Duel.Destroy(tc,REASON_EFFECT) + end +end diff --git a/script/c99733359.lua b/script/c99733359.lua index ee968ce2..a8cdb436 100644 --- a/script/c99733359.lua +++ b/script/c99733359.lua @@ -1,49 +1,49 @@ ---盾航戦車ステゴサイバー -function c99733359.initial_effect(c) - --no damage - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(99733359,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_GRAVE) - e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) - e1:SetCountLimit(1,99733359) - e1:SetCondition(c99733359.condition) - e1:SetCost(c99733359.cost) - e1:SetTarget(c99733359.target) - e1:SetOperation(c99733359.operation) - c:RegisterEffect(e1) -end -function c99733359.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetTurnPlayer()~=tp -end -function c99733359.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 c99733359.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) -end -function c99733359.operation(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e1:SetReset(RESET_EVENT+0x47e0000) - e1:SetValue(LOCATION_REMOVED) - c:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e2:SetOperation(c99733359.damop) - e2:SetReset(RESET_PHASE+PHASE_DAMAGE) - Duel.RegisterEffect(e2,tp) - end -end -function c99733359.damop(e,tp,eg,ep,ev,re,r,rp) - Duel.ChangeBattleDamage(tp,0) -end +--盾航戦車ステゴサイバー +function c99733359.initial_effect(c) + --no damage + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(99733359,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_QUICK_O) + e1:SetRange(LOCATION_GRAVE) + e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) + e1:SetCountLimit(1,99733359) + e1:SetCondition(c99733359.condition) + e1:SetCost(c99733359.cost) + e1:SetTarget(c99733359.target) + e1:SetOperation(c99733359.operation) + c:RegisterEffect(e1) +end +function c99733359.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetTurnPlayer()~=tp +end +function c99733359.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 c99733359.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) +end +function c99733359.operation(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)>0 then + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x47e0000) + e1:SetValue(LOCATION_REMOVED) + c:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetOperation(c99733359.damop) + e2:SetReset(RESET_PHASE+PHASE_DAMAGE) + Duel.RegisterEffect(e2,tp) + end +end +function c99733359.damop(e,tp,eg,ep,ev,re,r,rp) + Duel.ChangeBattleDamage(tp,0) +end diff --git a/script/c99788587.lua b/script/c99788587.lua index 6c170cf4..4c234a4e 100644 --- a/script/c99788587.lua +++ b/script/c99788587.lua @@ -20,7 +20,7 @@ function c99788587.condition(e,tp,eg,ep,ev,re,r,rp) and Duel.GetFieldCard(1-tp,LOCATION_SZONE,4-seq) end function c99788587.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return true end + if chk==0 then return e:IsHasType(EFFECT_TYPE_ACTIVATE) end local seq=e:GetHandler():GetSequence() local g=Group.CreateGroup() g:AddCard(Duel.GetFieldCard(tp,LOCATION_MZONE,seq)) diff --git a/script/c99795159.lua b/script/c99795159.lua index 927fd14e..772211f8 100644 --- a/script/c99795159.lua +++ b/script/c99795159.lua @@ -1,41 +1,41 @@ ---ゴーストリック・ハウス -function c99795159.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --atklimit - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) - e2:SetRange(LOCATION_FZONE) - e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e2:SetValue(aux.TargetBoolFunction(Card.IsFacedown)) - c:RegisterEffect(e2) - --direct attack - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_FIELD) - e3:SetCode(EFFECT_DIRECT_ATTACK) - e3:SetRange(LOCATION_FZONE) - e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) - e3:SetTarget(c99795159.dirtg) - c:RegisterEffect(e3) - -- - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD) - e4:SetRange(LOCATION_FZONE) - e4:SetCode(EFFECT_CHANGE_DAMAGE) - e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e4:SetTargetRange(1,1) - e4:SetValue(c99795159.val) - c:RegisterEffect(e4) -end -function c99795159.dirtg(e,c) - return not Duel.IsExistingMatchingCard(Card.IsFaceup,c:GetControler(),0,LOCATION_MZONE,1,nil) -end -function c99795159.val(e,re,dam,r,rp,rc) - if bit.band(r,REASON_EFFECT)~=0 or (rc and not rc:IsSetCard(0x8d)) then - return dam/2 - else return dam end -end +--ゴーストリック・ハウス +function c99795159.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --atklimit + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET) + e2:SetRange(LOCATION_FZONE) + e2:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e2:SetValue(aux.TargetBoolFunction(Card.IsFacedown)) + c:RegisterEffect(e2) + --direct attack + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetRange(LOCATION_FZONE) + e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) + e3:SetTarget(c99795159.dirtg) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD) + e4:SetRange(LOCATION_FZONE) + e4:SetCode(EFFECT_CHANGE_DAMAGE) + e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e4:SetTargetRange(1,1) + e4:SetValue(c99795159.val) + c:RegisterEffect(e4) +end +function c99795159.dirtg(e,c) + return not Duel.IsExistingMatchingCard(Card.IsFaceup,c:GetControler(),0,LOCATION_MZONE,1,nil) +end +function c99795159.val(e,re,dam,r,rp,rc) + if bit.band(r,REASON_EFFECT)~=0 or (rc and not rc:IsSetCard(0x8d)) then + return dam/2 + else return dam end +end diff --git a/script/c99902789.lua b/script/c99902789.lua index 76dec6de..7a4d6e65 100644 --- a/script/c99902789.lua +++ b/script/c99902789.lua @@ -29,8 +29,7 @@ function c99902789.distg(e,tp,eg,ep,ev,re,r,rp,chk) end end function c99902789.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then Duel.Destroy(eg,REASON_EFFECT) end end diff --git a/script/c99913726.lua b/script/c99913726.lua new file mode 100644 index 00000000..d55da35b --- /dev/null +++ b/script/c99913726.lua @@ -0,0 +1,82 @@ +--捕食植物ドロソフィルム・ヒドラ +--Predator Plant Drosophyllum Hydra +--Scripted by Eerie Code +function c99913726.initial_effect(c) + --special summon rule + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_SPSUMMON_PROC) + e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) + e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetCountLimit(1,99913726) + e1:SetCondition(c99913726.hspcon) + e1:SetOperation(c99913726.hspop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99913726,0)) + e2:SetCategory(CATEGORY_ATKCHANGE) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_CARD_TARGET) + e2:SetRange(LOCATION_MZONE+LOCATION_GRAVE) + e2:SetCountLimit(1,99913726+1) + e2:SetCost(c99913726.atkcost) + e2:SetTarget(c99913726.atktg) + e2:SetOperation(c99913726.atkop) + c:RegisterEffect(e2) +end + +function c99913726.hspfilter(c) + return c:GetCounter(0x1041)>0 and c:IsReleasable() +end +function c99913726.hspcon(e,c) + if c==nil then return true end + local tp=c:GetControler() + local g=Duel.GetMatchingGroup(c99913726.hspfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) + if g:GetCount()==0 then return false end + if g:IsExists(Card.IsControler,1,nil,tp) then + return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + else + return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + end +end +function c99913726.hspop(e,tp,eg,ep,ev,re,r,rp,c) + local tp=c:GetControler() + local lc=Duel.GetLocationCount(tp,LOCATION_MZONE) + local g=nil + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) + if lc<0 then + g=Duel.SelectMatchingCard(tp,c99913726.hspfilter,tp,LOCATION_MZONE,0,1,1,nil) + else + g=Duel.SelectMatchingCard(tp,c99913726.hspfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + end + Duel.Release(g,REASON_COST) +end + +function c99913726.atkcfil(c) + return c:IsSetCard(0x10f3) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() +end +function c99913726.atkcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c99913726.atkcfil,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,c99913726.atkcfil,tp,LOCATION_GRAVE,0,1,1,e:GetHandler()) + Duel.Remove(g,POS_FACEUP,REASON_COST) +end +function c99913726.atktg(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_TARGET) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) +end +function c99913726.atkop(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_UPDATE_ATTACK) + e1:SetValue(-500) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + end +end \ No newline at end of file diff --git a/script/c99916754.lua b/script/c99916754.lua index 5ed98d0b..95f18594 100644 --- a/script/c99916754.lua +++ b/script/c99916754.lua @@ -1,47 +1,46 @@ ---ナチュル・エクストリオ -function c99916754.initial_effect(c) - --fusion material - c:EnableReviveLimit() - aux.AddFusionProcCode2(c,33198837,2956282,false,false) - --negate - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(99916754,0)) - e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e2:SetCode(EVENT_CHAINING) - e2:SetCondition(c99916754.discon) - e2:SetCost(c99916754.discost) - e2:SetTarget(c99916754.distg) - e2:SetOperation(c99916754.disop) - c:RegisterEffect(e2) -end -c99916754.miracle_synchro_fusion=true -function c99916754.discon(e,tp,eg,ep,ev,re,r,rp) - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) - and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) -end -function c99916754.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) - and Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_GRAVE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) - local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,LOCATION_GRAVE,0,1,1,nil) - Duel.Remove(g,POS_FACEUP,REASON_COST) - Duel.DiscardDeck(tp,1,REASON_COST) -end -function c99916754.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c99916754.disop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end - Duel.NegateActivation(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end +--ナチュル・エクストリオ +function c99916754.initial_effect(c) + --fusion material + c:EnableReviveLimit() + aux.AddFusionProcCode2(c,33198837,2956282,false,false) + --negate + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(99916754,0)) + e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e2:SetCode(EVENT_CHAINING) + e2:SetCondition(c99916754.discon) + e2:SetCost(c99916754.discost) + e2:SetTarget(c99916754.distg) + e2:SetOperation(c99916754.disop) + c:RegisterEffect(e2) +end +c99916754.miracle_synchro_fusion=true +function c99916754.discon(e,tp,eg,ep,ev,re,r,rp) + return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) + and re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev) +end +function c99916754.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDiscardDeckAsCost(tp,1) + and Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_GRAVE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) + local g=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,LOCATION_GRAVE,0,1,1,nil) + Duel.Remove(g,POS_FACEUP,REASON_COST) + Duel.DiscardDeck(tp,1,REASON_COST) +end +function c99916754.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c99916754.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if not c:IsFaceup() or not c:IsRelateToEffect(e) then return end + if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end diff --git a/script/c9995766.lua b/script/c9995766.lua index 65c21209..d7f0354d 100644 --- a/script/c9995766.lua +++ b/script/c9995766.lua @@ -1,24 +1,24 @@ ---宮廷のしきたり -function c9995766.initial_effect(c) - c:SetUniqueOnField(1,0,9995766) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --indestructable - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - e2:SetRange(LOCATION_SZONE) - e2:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) - e2:SetTarget(c9995766.infilter) - e2:SetValue(1) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - c:RegisterEffect(e3) -end -function c9995766.infilter(e,c) - return bit.band(c:GetType(),0x20004)==0x20004 and c:GetCode()~=9995766 -end +--宮廷のしきたり +function c9995766.initial_effect(c) + c:SetUniqueOnField(1,0,9995766) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --indestructable + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + e2:SetRange(LOCATION_SZONE) + e2:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) + e2:SetTarget(c9995766.infilter) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + c:RegisterEffect(e3) +end +function c9995766.infilter(e,c) + return bit.band(c:GetType(),0x20004)==0x20004 and c:GetCode()~=9995766 +end diff --git a/script/constant.lua b/script/constant.lua index eafff6db..61b3c43e 100644 --- a/script/constant.lua +++ b/script/constant.lua @@ -1,717 +1,765 @@ ---Card id -MIN_ID =1000 --4 digit, by DataManager::GetDesc() -MAX_ID =268435455 --9 digit, by DataManager::GetDesc() ---Locations 区域 -LOCATION_DECK =0x01 --卡组 -LOCATION_HAND =0x02 --手牌 -LOCATION_MZONE =0x04 --怪兽区 -LOCATION_SZONE =0x08 --魔陷区 -LOCATION_GRAVE =0x10 --墓地 -LOCATION_REMOVED =0x20 --除外区 -LOCATION_EXTRA =0x40 --额外 -LOCATION_OVERLAY =0x80 --超量素材 -LOCATION_ONFIELD =0x0c --场上(怪兽+魔陷) ---Locations (for redirect) 若在重定向类效果中指定LOCATION_DECK则为弹回卡组顶部 -LOCATION_DECKBOT =0x10001 --弹回卡组底部 -LOCATION_DECKSHF =0x20001 --弹回卡组并洗牌 ---Locations (for SetRange) -LOCATION_FZONE =0x100 --场地区 -LOCATION_PZONE =0x200 --灵摆区 ---Positions 表示形式 -POS_FACEUP_ATTACK =0x1 --表侧攻击 -POS_FACEDOWN_ATTACK =0x2 --里侧攻击 -POS_FACEUP_DEFENSE =0x4 --表侧守备 -POS_FACEDOWN_DEFENSE =0x8 --里侧守备 -POS_FACEUP =0x5 --正面表示 -POS_FACEDOWN =0xa --背面表示 -POS_ATTACK =0x3 --攻击表示 -POS_DEFENSE =0xc --守备表示 -NO_FLIP_EFFECT =0x10000--不发动反转效果 ---Types 卡片类型 -TYPE_MONSTER =0x1 --怪兽卡 -TYPE_SPELL =0x2 --魔法卡 -TYPE_TRAP =0x4 --陷阱卡 -TYPE_NORMAL =0x10 --通常怪兽 -TYPE_EFFECT =0x20 --效果 -TYPE_FUSION =0x40 --融合 -TYPE_RITUAL =0x80 --仪式 -TYPE_TRAPMONSTER =0x100 --陷阱怪兽 -TYPE_SPIRIT =0x200 --灵魂 -TYPE_UNION =0x400 --同盟 -TYPE_DUAL =0x800 --二重 -TYPE_TUNER =0x1000 --调整 -TYPE_SYNCHRO =0x2000 --同调 -TYPE_TOKEN =0x4000 --衍生物 -TYPE_QUICKPLAY =0x10000 --速攻 -TYPE_CONTINUOUS =0x20000 --永续 -TYPE_EQUIP =0x40000 --装备 -TYPE_FIELD =0x80000 --场地 -TYPE_COUNTER =0x100000 --反击 -TYPE_FLIP =0x200000 --翻转 -TYPE_TOON =0x400000 --卡通 -TYPE_XYZ =0x800000 --超量 -TYPE_PENDULUM =0x1000000 --灵摆 ---Attributes 属性 -ATTRIBUTE_EARTH =0x01 --地 -ATTRIBUTE_WATER =0x02 --水 -ATTRIBUTE_FIRE =0x04 --炎 -ATTRIBUTE_WIND =0x08 --风 -ATTRIBUTE_LIGHT =0x10 --光 -ATTRIBUTE_DARK =0x20 --暗 -ATTRIBUTE_DEVINE =0x40 --神 ---Races 种族 -RACE_ALL =0xffffff --全种族 -RACE_WARRIOR =0x1 --战士 -RACE_SPELLCASTER =0x2 --魔法师 -RACE_FAIRY =0x4 --天使 -RACE_FIEND =0x8 --恶魔 -RACE_ZOMBIE =0x10 --不死 -RACE_MACHINE =0x20 --机械 -RACE_AQUA =0x40 --水 -RACE_PYRO =0x80 --炎 -RACE_ROCK =0x100 --岩石 -RACE_WINDBEAST =0x200 --鸟兽 -RACE_PLANT =0x400 --植物 -RACE_INSECT =0x800 --昆虫 -RACE_THUNDER =0x1000 --雷 -RACE_DRAGON =0x2000 --龙 -RACE_BEAST =0x4000 --兽 -RACE_BEASTWARRIOR =0x8000 --兽战士 -RACE_DINOSAUR =0x10000 --恐龙 -RACE_FISH =0x20000 --鱼 -RACE_SEASERPENT =0x40000 --海龙 -RACE_REPTILE =0x80000 --爬虫 -RACE_PSYCHO =0x100000 --念动力 -RACE_DEVINE =0x200000 --幻神兽 -RACE_CREATORGOD =0x400000 --创造神 -RACE_WYRM =0x800000 --幻龙 ---Reason 卡片到当前位置的原因 -REASON_DESTROY =0x1 --破坏 -REASON_RELEASE =0x2 --解放 -REASON_TEMPORARY =0x4 --暂时 -REASON_MATERIAL =0x8 --作为融合/同调/超量素材或用於儀式/升級召喚 -REASON_SUMMON =0x10 --召唤 -REASON_BATTLE =0x20 --战斗破坏 -REASON_EFFECT =0x40 --效果 -REASON_COST =0x80 --用於代價或無法支付代價而破壞 -REASON_ADJUST =0x100 --调整(御前试合) -REASON_LOST_TARGET =0x200 --失去装备对象(被破坏)/失去叠放对象(不是被破坏) -REASON_RULE =0x400 --规则 -REASON_SPSUMMON =0x800 --特殊召唤 -REASON_DISSUMMON =0x1000 --召唤失败 -REASON_FLIP =0x2000 --翻转 -REASON_DISCARD =0x4000 --丢弃 -REASON_RDAMAGE =0x8000 --回復轉換後的傷害 -REASON_RRECOVER =0x10000 --傷害轉換後的回復 -REASON_RETURN =0x20000 --回到墓地 -REASON_FUSION =0x40000 --用於融合召喚 -REASON_SYNCHRO =0x80000 --用於同调召喚 -REASON_RITUAL =0x100000 --用於仪式召喚 -REASON_XYZ =0x200000 --用於超量召喚 -REASON_REPLACE =0x1000000 --代替 -REASON_DRAW =0x2000000 --抽卡 -REASON_REDIRECT =0x4000000 --改变去向(大宇宙,带菌等) -REASON_REVEAL =0x8000000 --翻开卡组(森罗) ---Location Reason -LOCATION_REASON_TOFIELD =0x1 --Duel.GetLocationCount()預設值,凱薩競技場 -LOCATION_REASON_CONTROL =0x2 --Card.IsControlerCanBeChanged()使用 ---Summon Type --召唤类型 -SUMMON_TYPE_NORMAL =0x10000000 --通常召唤(EFFECT_SUMMON_PROC,EFFECT_SET_PROC 可用Value修改數值) -SUMMON_TYPE_ADVANCE =0x11000000 --上级召唤 -SUMMON_TYPE_DUAL =0x12000000 --再度召唤(二重) -SUMMON_TYPE_FLIP =0x20000000 --翻转召唤 -SUMMON_TYPE_SPECIAL =0x40000000 --特殊召唤(EFFECT_SPSUMMON_PROC,EFFECT_SPSUMMON_PROC_G 可用Value修改數值) -SUMMON_TYPE_FUSION =0x43000000 --融合召唤 -SUMMON_TYPE_RITUAL =0x45000000 --仪式召唤 -SUMMON_TYPE_SYNCHRO =0x46000000 --同调召唤 -SUMMON_TYPE_XYZ =0x49000000 --超量召唤 -SUMMON_TYPE_PENDULUM =0x4a000000 --灵摆召唤 ---Status --卡片当前状态 -STATUS_DISABLED =0x0001 --效果被无效 -STATUS_TO_ENABLE =0x0002 --将变成有效 -STATUS_TO_DISABLE =0x0004 --将变成无效 -STATUS_PROC_COMPLETE =0x0008 --完成正规召唤(解除苏生限制) -STATUS_SET_TURN =0x0010 --在本回合覆盖 -STATUS_NO_LEVEL =0x0020 --无等级 -STATUS_BATTLE_RESULT =0x0040 --傷害計算結果預計要破壞的怪獸 -STATUS_SPSUMMON_STEP =0x0080 --效果特召處理中 -STATUS_FORM_CHANGED =0x0100 --改变过表示形式 -STATUS_SUMMONING =0x0200 --召唤中 -STATUS_EFFECT_ENABLED =0x0400 --卡片準備就緒(不在移動、召喚、連鎖中) -STATUS_SUMMON_TURN =0x0800 --在本回合召喚/SET -STATUS_DESTROY_CONFIRMED =0x1000 --破坏确定 -STATUS_LEAVE_CONFIRMED =0x2000 --連鎖處理完後送去墓地的魔法陷阱 -STATUS_BATTLE_DESTROYED =0x4000 --战斗破坏确定後尚未移動 -STATUS_COPYING_EFFECT =0x8000 --复制效果 -STATUS_CHAINING =0x10000 --正在連鎖串中 -STATUS_SUMMON_DISABLED =0x20000 --召唤无效後尚未移動 -STATUS_ACTIVATE_DISABLED =0x40000 --发动无效後尚未移動 -STATUS_EFFECT_REPLACED =0x80000 --效果被替代(红莲霸权) -STATUS_UNION =0x100000 --同盟 -STATUS_ATTACK_CANCELED =0x200000 --若其為攻擊者,則攻擊中止 -STATUS_INITIALIZING =0x400000 --初始化.. -STATUS_ACTIVATED =0x800000 --魔法陷阱卡发动過 -STATUS_JUST_POS =0x1000000 --已改變表示形式(用於STATUS_CONTINUOUS_POS判定) -STATUS_CONTINUOUS_POS =0x2000000 --改變後再次設定成其他表示形式 -STATUS_FORBIDDEN =0x4000000 --不能play -STATUS_ACT_FROM_HAND =0x8000000 --從手牌发动 -STATUS_OPPO_BATTLE =0x10000000 --和對手的怪兽戰鬥 -STATUS_FLIP_SUMMON_TURN =0x20000000 --在本回合反转召唤 -STATUS_SPSUMMON_TURN =0x40000000 --在本回合特殊召唤 ---Assume -ASSUME_CODE =1 -ASSUME_TYPE =2 -ASSUME_LEVEL =3 -ASSUME_RANK =4 -ASSUME_ATTRIBUTE =5 -ASSUME_RACE =6 -ASSUME_ATTACK =7 -ASSUME_DEFENSE =8 ---Counter --指示物 -COUNTER_WITHOUT_PERMIT =0x1000 --可以放置在非特定對象的指示物 -COUNTER_NEED_ENABLE =0x2000 --在卡片本身放置上述指示物的標記(卡片守衛) ---Phase --阶段 -PHASE_DRAW =0x01 --抽卡阶段 -PHASE_STANDBY =0x02 --准备阶段 -PHASE_MAIN1 =0x04 --主要阶段1 -PHASE_BATTLE_START =0x08 --战斗阶段开始 -PHASE_BATTLE_STEP =0x10 --战斗步驟 -PHASE_DAMAGE =0x20 --伤害步驟 -PHASE_DAMAGE_CAL =0x40 --伤害计算时 -PHASE_BATTLE =0x80 --战斗阶段結束 -PHASE_MAIN2 =0x100 --主要阶段2 -PHASE_END =0x200 --结束阶段 ---Player --玩家 -PLAYER_NONE =2 --2个玩家都不是 -PLAYER_ALL =3 --2个玩家都是 ---Chain info --连锁信息 -CHAININFO_CHAIN_COUNT =0x01 --连锁数 -CHAININFO_TRIGGERING_EFFECT =0x02 --连锁的效果 -CHAININFO_TRIGGERING_PLAYER =0x04 --连锁的玩家 -CHAININFO_TRIGGERING_CONTROLER =0x08 --连锁的卡的控制者 -CHAININFO_TRIGGERING_LOCATION =0x10 --连锁的位置 -CHAININFO_TRIGGERING_SEQUENCE =0x20 --连锁的位置的编号(指怪兽和魔陷区的格子) -CHAININFO_TARGET_CARDS =0x40 --连锁的效果的对象(以下3个需要在target函数里设置) -CHAININFO_TARGET_PLAYER =0x80 --连锁的效果的对象(玩家) -CHAININFO_TARGET_PARAM =0x100 --连锁的效果的参数值 -CHAININFO_DISABLE_REASON =0x200 --无效的原因 -CHAININFO_DISABLE_PLAYER =0x400 --无效的玩家 -CHAININFO_CHAIN_ID =0x800 --连锁ID -CHAININFO_TYPE =0x1000 --连锁类型 -CHAININFO_EXTTYPE =0x2000 --连锁额外类型 ---========== Reset ========== --重置条件(注意:重置条件可以多个相加) -RESET_SELF_TURN =0x10000000 --自己回合的階段重置 -RESET_OPPO_TURN =0x20000000 --对方回合的階段重置 -RESET_PHASE =0x40000000 --阶段结束重置(一般和上面那些阶段配合使用) -RESET_CHAIN =0x80000000 --连锁结束重置 -RESET_EVENT =0x1000 --指定的條件下重置(一般和下面这些事件配合使用) -RESET_CARD =0x2000 --重置Owner為指定卡片的效果 -RESET_CODE =0x4000 --重置指定Code的single效果(不含EFFECT_FLAG_SINGLE_RANGE) -RESET_COPY =0x8000 --重置以复制取得的效果 -RESET_DISABLE =0x00010000 --效果无效重置(只適用於owner==handler的效果) -RESET_TURN_SET =0x00020000 --变里侧重置 -RESET_TOGRAVE =0x00040000 --去墓地重置(以下皆為事件觸發前重置) -RESET_REMOVE =0x00080000 --除外重置 -RESET_TEMP_REMOVE =0x00100000 --暂时除外重置 -RESET_TOHAND =0x00200000 --回手牌或加入手牌重置 -RESET_TODECK =0x00400000 --回卡组重置 -RESET_LEAVE =0x00800000 --从场上移到其他位置/超量叠放重置 -RESET_TOFIELD =0x01000000 --到场上重置(move_to_field()) -RESET_CONTROL =0x02000000 --控制者变更重置 -RESET_OVERLAY =0x04000000 --超量叠放重置 -RESET_MSCHANGE =0x08000000 --从怪兽区到魔法区,或者从魔法区到怪兽区(move_to_field()、寶玉獸) ---========== Types ========== --效果类型(定义效果触发类型,和codes一起使用) -EFFECT_TYPE_SINGLE =0x0001 --自己状态变化时触发 -EFFECT_TYPE_FIELD =0x0002 --场上所有卡状态变化时触发 -EFFECT_TYPE_EQUIP =0x0004 --装备效果 -EFFECT_TYPE_ACTIONS =0x0008 --触发型,以下類型會自動添加此屬性(对峙的G) -EFFECT_TYPE_ACTIVATE =0x0010 --魔陷发动 -EFFECT_TYPE_FLIP =0x0020 --翻转效果 -EFFECT_TYPE_IGNITION =0x0040 --起动效果 -EFFECT_TYPE_TRIGGER_O =0x0080 --诱发选发效果 -EFFECT_TYPE_QUICK_O =0x0100 --诱发即时效果 -EFFECT_TYPE_TRIGGER_F =0x0200 --诱发必发效果 -EFFECT_TYPE_QUICK_F =0x0400 --诱发即时必发效果(熊猫龙等) -EFFECT_TYPE_CONTINUOUS =0x0800 --由事件觸發的輔助用效果/永續效果 ---========== Flags ========== --效果的特殊性质 -EFFECT_FLAG_INITIAL =0x0001 --可以发动的 -EFFECT_FLAG_FUNC_VALUE =0x0002 --此效果的Value属性是函数 -EFFECT_FLAG_COUNT_LIMIT =0x0004 --发动次数限制 -EFFECT_FLAG_FIELD_ONLY =0x0008 --此效果是注册给全局环境的 -EFFECT_FLAG_CARD_TARGET =0x0010 --取对象效果 -EFFECT_FLAG_IGNORE_RANGE =0x0020 --影响所有区域的卡(禁止令 大宇宙 王宫的铁壁) -EFFECT_FLAG_ABSOLUTE_TARGET =0x0040 --Target Range不会因为控制权的改变而改变 -EFFECT_FLAG_IGNORE_IMMUNE =0x0080 --无视效果免疫 -EFFECT_FLAG_SET_AVAILABLE =0x0100 --影响场上里侧的卡/裡側狀態可發動 -EFFECT_FLAG_CANNOT_NEGATE =0x0200 --含有"此效果不會被無效"的敘述 -EFFECT_FLAG_CANNOT_DISABLE =0x0400 --不会被无效 -EFFECT_FLAG_PLAYER_TARGET =0x0800 --以玩家为对象 -EFFECT_FLAG_BOTH_SIDE =0x1000 --双方都能使用(部分场地,弹压) -EFFECT_FLAG_COPY_INHERIT =0x2000 --若由复制的效果產生則继承其Reset属性 -EFFECT_FLAG_DAMAGE_STEP =0x4000 --可以在伤害步骤发动 -EFFECT_FLAG_DAMAGE_CAL =0x8000 --可以在伤害计算时发动 -EFFECT_FLAG_DELAY =0x10000 --場合型誘發效果、用於永續效果的EFFECT_TYPE_CONTINUOUS、神之化身/恐惧之源的攻击力变化最后计算 -EFFECT_FLAG_SINGLE_RANGE =0x20000 --只对自己有效 -EFFECT_FLAG_UNCOPYABLE =0x40000 --不能复制(效果外文本) -EFFECT_FLAG_OATH =0x80000 --誓约效果 -EFFECT_FLAG_SPSUM_PARAM =0x100000 --指定召喚/规则特殊召唤的位置和表示形式(熔岩魔神) -EFFECT_FLAG_REPEAT =0x200000 --神之化身的攻击力重复计算 -EFFECT_FLAG_NO_TURN_RESET =0x400000 --发条等“这张卡在场上只能发动一次”的效果 -EFFECT_FLAG_EVENT_PLAYER =0x800000 --视为对方玩家的效果(动作?) -EFFECT_FLAG_OWNER_RELATE =0x1000000 --持續成為對象 -EFFECT_FLAG_AVAILABLE_BD =0x2000000 --战斗破坏确定时效果也适用(纳祭之魔 地狱战士) -EFFECT_FLAG_CLIENT_HINT =0x4000000 --客户端提示 -EFFECT_FLAG_CHAIN_UNIQUE =0x8000000 --同一组连锁只能发动一次 -EFFECT_FLAG_NAGA =0x10000000 --N/A -EFFECT_FLAG_COF =0x20000000 --N/A -EFFECT_FLAG_CVAL_CHECK =0x40000000 --以卡为COST的诱发效果需要使用 -EFFECT_FLAG_IMMEDIATELY_APPLY =0x80000000 --卡在发动时效果就立即适用(卡通王國) - -EFFECT_FLAG2_NAGA =0x0001 --特殊情况时发动不会被无效(神卡纳迦的特殊处理) -EFFECT_FLAG2_COF =0x0002 --通常魔法卡在MP1以外发动(邪恶的仪式的特殊处理) ---========== Codes ========== --对永续性效果表示效果类型(EFFECT开头),对诱发型效果表示触发效果的事件/时点(EVENT开头) -EFFECT_IMMUNE_EFFECT =1 --效果免疫 -EFFECT_DISABLE =2 --效果无效(技能抽取) -EFFECT_CANNOT_DISABLE =3 --效果不能被无效 -EFFECT_SET_CONTROL =4 --设置控制权 -EFFECT_CANNOT_CHANGE_CONTROL =5 --不能改变控制权 -EFFECT_CANNOT_ACTIVATE =6 --玩家不能发动效果 -EFFECT_CANNOT_TRIGGER =7 --卡不能发动效果 -EFFECT_DISABLE_EFFECT =8 --效果无效(聖杯) -EFFECT_DISABLE_CHAIN =9 --在連鎖串中無效(processor.cpp) -EFFECT_DISABLE_TRAPMONSTER =10 --陷阱怪兽无效 -EFFECT_CANNOT_INACTIVATE =12 --发动不能被无效 -EFFECT_CANNOT_DISEFFECT =13 --效果處理時不能被无效 -EFFECT_CANNOT_CHANGE_POSITION =14 --不能改变表示形式 -EFFECT_TRAP_ACT_IN_HAND =15 --陷阱可以从手牌发动 -EFFECT_TRAP_ACT_IN_SET_TURN =16 --陷阱可以在盖放的回合发动 -EFFECT_REMAIN_FIELD =17 --X回合内留在场上(光之护封剑等) -EFFECT_MONSTER_SSET =18 --怪兽可以在魔陷区放置 -EFFECT_CANNOT_SUMMON =20 --不能召唤怪兽 -EFFECT_CANNOT_FLIP_SUMMON =21 --不能翻转召唤怪兽 -EFFECT_CANNOT_SPECIAL_SUMMON =22 --不能特殊召唤怪兽 -EFFECT_CANNOT_MSET =23 --不能覆盖怪兽 -EFFECT_CANNOT_SSET =24 --不能覆盖魔陷 -EFFECT_CANNOT_DRAW =25 --不能抽卡 -EFFECT_CANNOT_DISABLE_SUMMON =26 --召唤不会无效 -EFFECT_CANNOT_DISABLE_SPSUMMON =27 --特殊召唤不会无效 -EFFECT_SET_SUMMON_COUNT_LIMIT =28 --限制每回合放置怪兽次数 -EFFECT_EXTRA_SUMMON_COUNT =29 --增加召唤(通常召唤)次数 -EFFECT_SPSUMMON_CONDITION =30 --特殊召唤条件 -EFFECT_REVIVE_LIMIT =31 --有苏生限制的怪獸 -EFFECT_SUMMON_PROC =32 --召唤规则效果 -EFFECT_LIMIT_SUMMON_PROC =33 --召唤规则限制 -EFFECT_SPSUMMON_PROC =34 --特殊召唤规则 -EFFECT_EXTRA_SET_COUNT =35 --增加盖放(通常召唤)次数 -EFFECT_SET_PROC =36 --放置(通常召唤)规则 -EFFECT_LIMIT_SET_PROC =37 --放置(通常召唤)规则限制 -EFFECT_DEVINE_LIGHT =38 --神圣光辉(魔术礼帽) -EFFECT_CANNOT_DISABLE_FLIP_SUMMON =39 --翻转召唤不会无效 -EFFECT_INDESTRUCTABLE =40 --不会被破坏 -EFFECT_INDESTRUCTABLE_EFFECT =41 --不会被效果破坏 -EFFECT_INDESTRUCTABLE_BATTLE =42 --不会被战斗破坏 -EFFECT_UNRELEASABLE_SUM =43 --不能做上级召唤的祭品 -EFFECT_UNRELEASABLE_NONSUM =44 --不能做上级召唤以外的祭品 -EFFECT_DESTROY_SUBSTITUTE =45 --必選的代替破壞(此卡被破壞時用其他卡代替) -EFFECT_CANNOT_RELEASE =46 --不能进行解放行为 -EFFECT_INDESTRUCTABLE_COUNT =47 --一回合几次不会被破坏 -EFFECT_UNRELEASABLE_EFFECT =48 --不能被解放 -EFFECT_DESTROY_REPLACE =50 --可選的代替破壞(將破壞改成其他動作) -EFFECT_RELEASE_REPLACE =51 --代替解放 -EFFECT_SEND_REPLACE =52 --可以不送去XX而送去OO(甜点城堡等) -EFFECT_CANNOT_DISCARD_HAND =55 --不能丢弃手牌 -EFFECT_CANNOT_DISCARD_DECK =56 --不能把卡组的卡送去墓地 -EFFECT_CANNOT_USE_AS_COST =57 --不能作为COST使用 -EFFECT_CANNOT_PLACE_COUNTER =58 --不能放置counter - -EFFECT_LEAVE_FIELD_REDIRECT =60 --离场时重新指定去向 -EFFECT_TO_HAND_REDIRECT =61 --回手牌时重新指定去向 -EFFECT_TO_DECK_REDIRECT =62 --回卡组时重新指定去向 -EFFECT_TO_GRAVE_REDIRECT =63 --去墓地时重新指定去向 -EFFECT_REMOVE_REDIRECT =64 --除外时重新指定去向 -EFFECT_CANNOT_TO_HAND =65 --不能加入手牌 -EFFECT_CANNOT_TO_DECK =66 --不能回卡组 -EFFECT_CANNOT_REMOVE =67 --不能除外 -EFFECT_CANNOT_TO_GRAVE =68 --不能去墓地 -EFFECT_CANNOT_TURN_SET =69 --不能变里侧 -EFFECT_CANNOT_BE_BATTLE_TARGET =70 --不能成为攻击对象 -EFFECT_CANNOT_BE_EFFECT_TARGET =71 --不能成为效果对象 -EFFECT_IGNORE_BATTLE_TARGET =72 --不能成为攻击对象-鶸型(传说的渔人) -EFFECT_CANNOT_DIRECT_ATTACK =73 --不能直接攻击 -EFFECT_DIRECT_ATTACK =74 --可以直接攻击 -EFFECT_DUAL_STATUS =75 --二重状态 -EFFECT_EQUIP_LIMIT =76 --装备对象限制 -EFFECT_DUAL_SUMMONABLE =77 --可以再度召唤 -EFFECT_REVERSE_DAMAGE =80 --伤害变回复 -EFFECT_REVERSE_RECOVER =81 --回复变伤害 -EFFECT_CHANGE_DAMAGE =82 --改变伤害数值 -EFFECT_REFLECT_DAMAGE =83 --反射伤害 -EFFECT_CANNOT_ATTACK =85 --不能攻击 -EFFECT_CANNOT_ATTACK_ANNOUNCE =86 --不能攻击宣言 -EFFECT_CANNOT_CHANGE_POS_E =87 --不会被卡的效果变成守备表示(攻击性云魔物) -EFFECT_ACTIVATE_COST =90 --发动代价(魔力之枷) -EFFECT_SUMMON_COST =91 --召唤代价 -EFFECT_SPSUMMON_COST =92 --特殊召唤代价(暴君龙) -EFFECT_FLIPSUMMON_COST =93 --翻转召唤代价 -EFFECT_MSET_COST =94 --怪兽放置代价 -EFFECT_SSET_COST =95 --魔陷放置代价 -EFFECT_ATTACK_COST =96 --攻击代价(霞之谷猎鹰) - -EFFECT_UPDATE_ATTACK =100 --改变攻击力(攻击力增加/减少) -EFFECT_SET_ATTACK =101 --设置攻击力(永續型效果、攻擊力變成X特殊召喚) -EFFECT_SET_ATTACK_FINAL =102 --设置最终攻击力(所有入連鎖的改變攻擊力) -EFFECT_SET_BASE_ATTACK =103 --设置原本攻击力 -EFFECT_UPDATE_DEFENSE =104 --改变防御力 -EFFECT_SET_DEFENSE =105 --设置防御力 -EFFECT_SET_DEFENSE_FINAL =106 --设置最终防御力 -EFFECT_SET_BASE_DEFENSE =107 --设置原本防御力 -EFFECT_REVERSE_UPDATE =108 --倒置改变攻击力、防御力(天邪鬼) -EFFECT_SWAP_AD =109 --交换攻防(超級漏洞人) -EFFECT_SWAP_BASE_AD =110 --交换原本攻防 -EFFECT_SWAP_ATTACK_FINAL =111 --設定最終攻擊力(用於交換攻防) -EFFECT_SWAP_DEFENSE_FINAL =112 --設定最終防禦力(用於交換攻防) -EFFECT_ADD_CODE =113 --增加卡名 -EFFECT_CHANGE_CODE =114 --改变卡名 -EFFECT_ADD_TYPE =115 --增加卡片种类(types) -EFFECT_REMOVE_TYPE =116 --删除卡片种类 -EFFECT_CHANGE_TYPE =117 --改变卡片种类 -EFFECT_ADD_RACE =120 --增加种族 -EFFECT_REMOVE_RACE =121 --删除种族 -EFFECT_CHANGE_RACE =122 --改变种族 -EFFECT_ADD_ATTRIBUTE =125 --增加属性 -EFFECT_REMOVE_ATTRIBUTE =126 --删除属性 -EFFECT_CHANGE_ATTRIBUTE =127 --改变属性 -EFFECT_UPDATE_LEVEL =130 --改变等级 -EFFECT_CHANGE_LEVEL =131 --设置等级 -EFFECT_UPDATE_RANK =132 --改变阶级 -EFFECT_CHANGE_RANK =133 --设置阶级 -EFFECT_UPDATE_LSCALE =134 --改变左刻度 -EFFECT_CHANGE_LSCALE =135 --设置左刻度 -EFFECT_UPDATE_RSCALE =136 --改变右刻度 -EFFECT_CHANGE_RSCALE =137 --设置右刻度 -EFFECT_SET_POSITION =140 --設定表示形式 -EFFECT_SELF_DESTROY =141 --不入連鎖的破壞(罪系列等) -EFFECT_SELF_TOGRAVE =142 --不入連鎖的送墓 -EFFECT_DOUBLE_TRIBUTE =150 --可以作为2个祭品 -EFFECT_DECREASE_TRIBUTE =151 --减少祭品 -EFFECT_DECREASE_TRIBUTE_SET =152 --减少放置怪兽的祭品 -EFFECT_EXTRA_RELEASE =153 --代替解放(灵魂交错) -EFFECT_TRIBUTE_LIMIT =154 --祭品限制 -EFFECT_EXTRA_RELEASE_SUM =155 --代替召唤解放(帝王的烈旋) -EFFECT_TRIPLE_TRIBUTE =156 -EFFECT_PUBLIC =160 --公开手牌 -EFFECT_COUNTER_PERMIT =0x10000--允许放置指示物类型 -EFFECT_COUNTER_LIMIT =0x20000--允许放置指示物数量 -EFFECT_RCOUNTER_REPLACE =0x30000--代替取除指示物 -EFFECT_LPCOST_CHANGE =170 --改变生命值代价數值 -EFFECT_LPCOST_REPLACE =171 --以其他動作代替生命值代价 -EFFECT_SKIP_DP =180 --跳过抽卡阶段 -EFFECT_SKIP_SP =181 --跳过准备阶段 -EFFECT_SKIP_M1 =182 --跳过主要阶段1 -EFFECT_SKIP_BP =183 --跳过战斗阶段 -EFFECT_SKIP_M2 =184 --跳过主要阶段2 -EFFECT_CANNOT_BP =185 --不能进入战斗阶段 -EFFECT_CANNOT_M2 =186 --不能进入主要阶段2 -EFFECT_CANNOT_EP =187 --不能进入结束阶段 -EFFECT_SKIP_TURN =188 --跳过整个回合 -EFFECT_DEFENSE_ATTACK =190 --可以守备表示攻击 -EFFECT_MUST_ATTACK =191 --必须攻击 -EFFECT_FIRST_ATTACK =192 --必须第一个攻击 -EFFECT_ATTACK_ALL =193 --可以攻击所有怪兽 -EFFECT_EXTRA_ATTACK =194 --增加攻击次数 -EFFECT_MUST_BE_ATTACKED =195 --必须攻击此卡 -EFFECT_ONLY_BE_ATTACKED =196 --只能攻击此卡 -EFFECT_ATTACK_DISABLED =197 --攻击無效(Duel.NegateAttack()) -EFFECT_NO_BATTLE_DAMAGE =200 --不会给对方造成战斗伤害 -EFFECT_AVOID_BATTLE_DAMAGE =201 --不会对自己造成战斗伤害 -EFFECT_REFLECT_BATTLE_DAMAGE =202 --反弹战斗伤害 -EFFECT_PIERCE =203 --贯穿伤害 -EFFECT_BATTLE_DESTROY_REDIRECT =204 --战斗破坏时重新指定去向 -EFFECT_BATTLE_DAMAGE_TO_EFFECT =205 --战斗伤害视为效果伤害 -EFFECT_TOSS_COIN_REPLACE =220 --重新抛硬币 -EFFECT_TOSS_DICE_REPLACE =221 --重新掷骰子 -EFFECT_FUSION_MATERIAL =230 --指定融合素材的條件 -EFFECT_CHAIN_MATERIAL =231 --玩家受到連鎖物質的效果影響 -EFFECT_SYNCHRO_MATERIAL =232 --可以当作同调素材 -EFFECT_XYZ_MATERIAL =233 --可以当作超量素材 -EFFECT_FUSION_SUBSTITUTE =234 --代替融合素材 -EFFECT_CANNOT_BE_FUSION_MATERIAL =235--不能做融合素材 -EFFECT_CANNOT_BE_SYNCHRO_MATERIAL =236--不能做同调素材 -EFFECT_SYNCHRO_MATERIAL_CUSTOM =237--同调素材限制 -EFFECT_CANNOT_BE_XYZ_MATERIAL =238--不能做超量素材 -EFFECT_SYNCHRO_LEVEL =240--做同调素材时的等级 -EFFECT_RITUAL_LEVEL =241--做仪式祭品时的等级 -EFFECT_XYZ_LEVEL =242--做超量素材时的等级 -EFFECT_EXTRA_RITUAL_MATERIAL =243--在墓地当做仪式祭品 -EFFECT_NONTUNER =244--同时当作调整以外的怪兽(幻影王 幽骑) -EFFECT_OVERLAY_REMOVE_REPLACE =245--代替去除超量素材 -EFFECT_SCRAP_CHIMERA =246--废铁奇美拉 -EFFECT_PRE_MONSTER =250 --可存取怪獸的各項數值 -EFFECT_MATERIAL_CHECK =251 --检查素材 -EFFECT_DISABLE_FIELD =260 --无效区域(扰乱王等) -EFFECT_USE_EXTRA_MZONE =261 --怪兽区域封锁 -EFFECT_USE_EXTRA_SZONE =262 --魔法区域封锁 -EFFECT_MAX_MZONE =263 --怪獸区格數上限 -EFFECT_MAX_SZONE =264 --魔陷区格數上限 -EFFECT_HAND_LIMIT =270 --手牌数量限制 -EFFECT_DRAW_COUNT =271 --抽卡阶段的抽卡数 -EFFECT_SPIRIT_DONOT_RETURN =280 --灵魂怪兽不返回手牌 -EFFECT_SPIRIT_MAYNOT_RETURN =281 --灵魂怪兽可以不返回手牌 -EFFECT_CHANGE_ENVIRONMENT =290 --改变场地 -EFFECT_NECRO_VALLEY =291 --王家长眠之谷 -EFFECT_FORBIDDEN =292 --禁止令 -EFFECT_NECRO_VALLEY_IM =293 --不受「王家长眠之谷」的影响 -EFFECT_REVERSE_DECK =294 --翻转卡组 -EFFECT_REMOVE_BRAINWASHING =295 --洗脑解除 -EFFECT_BP_TWICE =296 --2次战斗阶段 -EFFECT_UNIQUE_CHECK =297 --場上只能存在1張(Card.SetUniqueOnField()) -EFFECT_MATCH_KILL =300 --Match胜利(胜利龙) -EFFECT_SYNCHRO_CHECK =310 --基因组斗士 -EFFECT_QP_ACT_IN_NTPHAND =311 --对方回合从自己手卡发动(失乐的圣女) -EFFECT_MUST_BE_SMATERIAL =312 --必须作为同调素材(波动龙 声子龙) -EFFECT_TO_GRAVE_REDIRECT_CB =313 --重新指定去向(寶玉獸) -EFFECT_CHANGE_LEVEL_FINAL =314 --設定最終等級(銀河女王之光) -EFFECT_CHANGE_RANK_FINAL =315 --設定最終階級 -EFFECT_SPSUMMON_PROC_G =320 --P召唤规则 -EFFECT_SPSUMMON_COUNT_LIMIT =330 --特殊召唤次数限制 -EFFECT_LEFT_SPSUMMON_COUNT =331 --剩餘召喚次數(召喚限制網) -EFFECT_CANNOT_SELECT_BATTLE_TARGET =332 --對手不能選擇為攻擊對象 -EFFECT_CANNOT_SELECT_EFFECT_TARGET =333 --對手不能選擇為效果對象 -EFFECT_ADD_SETCODE =334 --规则上视为「XX」字段 -EFFECT_NO_EFFECT_DAMAGE =335 --玩家已受到"效果傷害變成0"的效果影響 -EFFECT_UNSUMMONABLE_CARD =336 --不能通常召唤的怪獸 -EFFECT_DISABLE_CHAIN_FIELD =337 --連鎖串中場上發動的效果無效(Duel.NegateRelatedChain()) -EFFECT_DISCARD_COST_CHANGE =338 --反制陷阱捨棄手牌的代價改變(解放之阿里阿德涅) -EFFECT_HAND_SYNCHRO =339 --用手牌的怪獸當作同步素材 -EFFECT_ADD_FUSION_CODE =340 --作为融合素材时可以当作某一卡名(融合识别) -EFFECT_ADD_FUSION_SETCODE =341 --作为融合素材时可以当作某一字段(魔玩具改造) -EFFECT_RISE_TO_FULL_HEIGHT =342 --仁王立 -EFFECT_ONLY_ATTACK_MONSTER =343 --只能攻擊X -EFFECT_MUST_ATTACK_MONSTER =344 --若攻擊則必須攻擊X -EFFECT_PATRICIAN_OF_DARKNESS =345 --由對手選擇攻擊對象(黑暗貴族) -EFFECT_EXTRA_ATTACK_MONSTER =346 --對怪獸攻擊X次 - ---下面是诱发效果的诱发事件、时点 (如果是TYPE_SINGLE则自己发生以下事件后触发,如果TYPE_FIELD则场上任何卡发生以下事件都触发) -EVENT_STARTUP =1000 --游戏开始时 -EVENT_FLIP =1001 --翻转时 -EVENT_FREE_CHAIN =1002 --自由时点(强脱等,还有昴星团等诱发即时效果) -EVENT_DESTROY =1010 --被破坏时(移動前) -EVENT_REMOVE =1011 --除外时 -EVENT_TO_HAND =1012 --加入手牌时 -EVENT_TO_DECK =1013 --回卡组时 -EVENT_TO_GRAVE =1014 --进墓地时(不含REASON_RETURN) -EVENT_LEAVE_FIELD =1015 --离场时 -EVENT_CHANGE_POS =1016 --表示形式变更时 -EVENT_RELEASE =1017 --解放时 -EVENT_DISCARD =1018 --丢弃手牌时 -EVENT_LEAVE_FIELD_P =1019 --永久离场时 -EVENT_CHAIN_SOLVING =1020 --连锁处理开始时(EVENT_CHAIN_ACTIVATING之後) -EVENT_CHAIN_ACTIVATING =1021 --连锁处理准备中 -EVENT_CHAIN_SOLVED =1022 --连锁处理结束时 -EVENT_CHAIN_ACTIVATED =1023 --N/A -EVENT_CHAIN_NEGATED =1024 --连锁发动无效时(EVENT_CHAIN_ACTIVATING之後) -EVENT_CHAIN_DISABLED =1025 --连锁效果无效时 -EVENT_CHAIN_END =1026 --连锁串结束时 -EVENT_CHAINING =1027 --效果发动时 -EVENT_BECOME_TARGET =1028 --成为效果对象时 -EVENT_DESTROYED =1029 --被破坏时 -EVENT_ADJUST =1040 --adjust_all()调整後(御前试合) -EVENT_SUMMON_SUCCESS =1100 --通常召唤成功时 -EVENT_FLIP_SUMMON_SUCCESS =1101 --翻转召唤成功时 -EVENT_SPSUMMON_SUCCESS =1102 --特殊召唤成功时 -EVENT_SUMMON =1103 --召唤时(怪兽还没上场、神宣等时点) -EVENT_FLIP_SUMMON =1104 --翻转召唤时 -EVENT_SPSUMMON =1105 --特殊召唤时 -EVENT_MSET =1106 --放置怪兽时 -EVENT_SSET =1107 --放置魔陷时 -EVENT_BE_MATERIAL =1108 --作为融合/仪式同调/超量素材时 -EVENT_BE_PRE_MATERIAL =1109 --将要作为融合/仪式同调/超量素材时 -EVENT_DRAW =1110 --抽卡 -EVENT_DAMAGE =1111 --造成战斗/效果伤害时 -EVENT_RECOVER =1112 --回复生命值时 -EVENT_PREDRAW =1113 --抽卡前 -EVENT_CONTROL_CHANGED =1120 --控制权变更 -EVENT_EQUIP =1121 --装备卡装备时 -EVENT_ATTACK_ANNOUNCE =1130 --攻击宣言时 -EVENT_BE_BATTLE_TARGET =1131 --被选为攻击对象时 -EVENT_BATTLE_START =1132 --伤害步骤开始时(反转前) -EVENT_BATTLE_CONFIRM =1133 --伤害计算前(反转後) -EVENT_PRE_DAMAGE_CALCULATE =1134 --伤害计算时(羽斬) -EVENT_DAMAGE_CALCULATING =1135 --N/A -EVENT_PRE_BATTLE_DAMAGE =1136 --即将产生战斗伤害(只能使用EFFECT_TYPE_CONTINUOUS) -EVENT_BATTLE_END =1137 --N/A -EVENT_BATTLED =1138 --伤害计算后(异女、同反转效果时点) -EVENT_BATTLE_DESTROYING =1139 --战斗破坏送去墓地时(BF-苍炎之修罗) -EVENT_BATTLE_DESTROYED =1140 --战斗破坏送去墓地时(杀人番茄等) -EVENT_DAMAGE_STEP_END =1141 --伤害步骤结束时 -EVENT_ATTACK_DISABLED =1142 --攻击无效时(翻倍机会) -EVENT_BATTLE_DAMAGE =1143 --造成战斗伤害时 -EVENT_TOSS_DICE =1150 --掷骰子时 -EVENT_TOSS_COIN =1151 --抛硬币时 -EVENT_TOSS_COIN_NEGATE =1152 --抛硬币被无效时 -EVENT_TOSS_DICE_NEGATE =1153 --掷骰子被无效时 -EVENT_LEVEL_UP =1200 --等级上升时 -EVENT_PAY_LPCOST =1201 --支付生命值时 -EVENT_DETACH_MATERIAL =1202 --去除超量素材时 -EVENT_RETURN_TO_GRAVE =1203 --回到墓地时 -EVENT_TURN_END =1210 --回合结束时 -EVENT_PHASE =0x1000 --阶段结束时 -EVENT_PHASE_START =0x2000 --阶段开始时 -EVENT_ADD_COUNTER =0x10000--增加指示物时 -EVENT_REMOVE_COUNTER =0x20000--去除指示物时 -EVENT_CUSTOM =0x10000000 --自訂事件 ---Categorys 效果分类(表示这个效果将要发生什么事,OperationInfo设置了效果分类才能触发针对这一类型发动的卡,如破坏->星尘龙 -CATEGORY_DESTROY =0x1 --破坏效果 -CATEGORY_RELEASE =0x2 --解放效果 -CATEGORY_REMOVE =0x4 --除外效果 -CATEGORY_TOHAND =0x8 --加入手牌效果 -CATEGORY_TODECK =0x10 --回卡组效果 -CATEGORY_TOGRAVE =0x20 --送去墓地效果 -CATEGORY_DECKDES =0x40 --卡组破坏效果 -CATEGORY_HANDES =0x80 --手牌破坏效果 -CATEGORY_SUMMON =0x100 --含召唤的效果 -CATEGORY_SPECIAL_SUMMON =0x200 --含特殊召唤的效果 -CATEGORY_TOKEN =0x400 --含衍生物效果 -CATEGORY_FLIP =0x800 --含翻转效果 -CATEGORY_POSITION =0x1000 --改变表示形式效果 -CATEGORY_CONTROL =0x2000 --改变控制权效果 -CATEGORY_DISABLE =0x4000 --使效果无效效果 -CATEGORY_DISABLE_SUMMON =0x8000 --无效召唤效果 -CATEGORY_DRAW =0x10000 --抽卡效果 -CATEGORY_SEARCH =0x20000 --检索卡组效果 -CATEGORY_EQUIP =0x40000 --装备效果 -CATEGORY_DAMAGE =0x80000 --伤害效果 -CATEGORY_RECOVER =0x100000 --回复效果 -CATEGORY_ATKCHANGE =0x200000 --改变攻击效果 -CATEGORY_DEFCHANGE =0x400000 --改变防御效果 -CATEGORY_COUNTER =0x800000 --指示物效果 -CATEGORY_COIN =0x1000000 --硬币效果 -CATEGORY_DICE =0x2000000 --骰子效果 -CATEGORY_LEAVE_GRAVE =0x4000000 --离开墓地效果 -CATEGORY_LVCHANGE =0x8000000 --改变等级效果 -CATEGORY_NEGATE =0x10000000 --使发动无效效果 -CATEGORY_ANNOUNCE =0x20000000 --發動時宣言卡名的效果 ---Hint -HINT_EVENT =1 -HINT_MESSAGE =2 -HINT_SELECTMSG =3 -HINT_OPSELECTED =4 -HINT_EFFECT =5 -HINT_RACE =6 -HINT_ATTRIB =7 -HINT_CODE =8 -HINT_NUMBER =9 -HINT_CARD =10 ---Card Hint -CHINT_TURN =1 -CHINT_CARD =2 -CHINT_RACE =3 -CHINT_ATTRIBUTE =4 -CHINT_NUMBER =5 -CHINT_DESC =6 ---Hint Message --提示消息,显示在窗口的上面 -HINTMSG_RELEASE =500 --请选择要解放的卡 -HINTMSG_DISCARD =501 --请选择要丢弃的手牌 -HINTMSG_DESTROY =502 --请选择要破坏的卡 -HINTMSG_REMOVE =503 --请选择要除外的卡 -HINTMSG_TOGRAVE =504 --请选择要送去墓地的卡 -HINTMSG_RTOHAND =505 --请选择要返回手牌的卡 -HINTMSG_ATOHAND =506 --请选择要加入手牌的卡 -HINTMSG_TODECK =507 --请选择要返回卡组的卡 -HINTMSG_SUMMON =508 --请选择要召唤的卡 -HINTMSG_SPSUMMON =509 --请选择要特殊召唤的卡 -HINTMSG_SET =510 --请选择要盖放的卡 -HINTMSG_FMATERIAL =511 --请选择融合召唤的素材 -HINTMSG_SMATERIAL =512 --请选择同调召唤的素材 -HINTMSG_XMATERIAL =513 --请选择超量召唤的素材 -HINTMSG_FACEUP =514 --请选择表侧表示的卡 -HINTMSG_FACEDOWN =515 --请选择里侧表示的卡 -HINTMSG_ATTACK =516 --请选择攻击表示的怪兽 -HINTMSG_DEFENSE =517 --请选择守备表示的怪兽 -HINTMSG_EQUIP =518 --请选择要装备的卡 -HINTMSG_REMOVEXYZ =519 --请选择要取除的超量素材 -HINTMSG_CONTROL =520 --请选择要改变控制权的怪兽 -HINTMSG_DESREPLACE =521 --请选择要代替破坏的卡 -HINTMSG_FACEUPATTACK =522 --请选择表侧攻击表示的怪兽 -HINTMSG_FACEUPDEFENSE =523 --请选择表侧守备表示的怪兽 -HINTMSG_FACEDOWNATTACK =524 --请选择里侧攻击表示的怪兽 -HINTMSG_FACEDOWNDEFENSE =525 --请选择里侧守备表示的怪兽 -HINTMSG_CONFIRM =526 --请选择给对方确认的卡 -HINTMSG_TOFIELD =527 --请选择要放置到场上的卡 -HINTMSG_POSCHANGE =528 --请选择要改变表示形式的怪兽 -HINTMSG_SELF =529 --请选择自己的卡 -HINTMSG_OPPO =530 --请选择对方的卡 -HINTMSG_EFFECT =550 --请选择要发动的效果 -HINTMSG_TARGET =551 --请选择效果的对象 -HINTMSG_COIN =552 --请选择硬币的正反面 -HINTMSG_DICE =553 --请选择骰子的结果 -HINTMSG_CARDTYPE =554 --请选择一个种类 ---Timing --提示时点,可以给freechain卡片增加自动提示时点 -TIMING_DRAW_PHASE =0x1 --抽卡阶段时点 -TIMING_STANDBY_PHASE =0x2 --准备阶段时点 -TIMING_MAIN_END =0x4 --主要阶段结束时点 -TIMING_BATTLE_START =0x8 --战斗阶段开始时点 -TIMING_BATTLE_END =0x10 --战斗阶段结束时点 -TIMING_END_PHASE =0x20 --结束阶段时点 -TIMING_SUMMON =0x40 --召唤时点 -TIMING_SPSUMMON =0x80 --特殊召唤时点 -TIMING_FLIPSUMMON =0x100 --翻转召唤时点 -TIMING_MSET =0x200 --放置怪兽时点 -TIMING_SSET =0x400 --放置魔陷时点 -TIMING_POS_CHANGE =0x800 --表示形式变更时点 -TIMING_ATTACK =0x1000 --攻击宣言时点 -TIMING_DAMAGE_STEP =0x2000 --伤害步骤时点 -TIMING_DAMAGE_CAL =0x4000 --伤害计算时点 -TIMING_CHAIN_END =0x8000 --连锁结束时点 -TIMING_DRAW =0x10000 --抽卡时点(不是抽卡阶段 -TIMING_DAMAGE =0x20000 --造成伤害时点 -TIMING_RECOVER =0x40000 --回复时点 -TIMING_DESTROY =0x80000 --破坏时点 -TIMING_REMOVE =0x100000 --除外时点 -TIMING_TOHAND =0x200000 --加入手牌时点(检索、回收等) -TIMING_TODECK =0x400000 --回卡组时点 -TIMING_TOGRAVE =0x800000 --进墓地时点 -TIMING_BATTLE_PHASE =0x1000000 --战斗阶段时点 -TIMING_EQUIP =0x2000000 --装备时点 -TIMING_BATTLE_STEP_END =0x4000000 --戰鬥步驟結束時 -----组合时点 -TIMINGS_CHECK_MONSTER =0x1c0 -- 怪兽正面上场 -TIMINGS_CHECK_MONSTER_E =0x1e0 -- 怪兽正面上场 + EP ---Global flag --特殊标记 -GLOBALFLAG_DECK_REVERSE_CHECK =0x1 --卡组翻转标记 -GLOBALFLAG_BRAINWASHING_CHECK =0x2 --洗脑解除标记 -GLOBALFLAG_SCRAP_CHIMERA =0x4 --废铁奇美拉标记 -GLOBALFLAG_DELAYED_QUICKEFFECT =0x8 --N/A -GLOBALFLAG_DETACH_EVENT =0x10 --EVENT_DETACH_MATERIAL -GLOBALFLAG_MUST_BE_SMATERIAL =0x20 --必须作为同调素材(波动龙 声子龙) -GLOBALFLAG_SPSUMMON_COUNT =0x40 --玩家的特殊召唤次数限制 -GLOBALFLAG_XMAT_COUNT_LIMIT =0x80 --超量素材数量限制标记(光天使 天座) -GLOBALFLAG_SELF_TOGRAVE =0x100 --不入連鎖的送墓檢查(EFFECT_SELF_TOGRAVE) -GLOBALFLAG_SPSUMMON_ONCE =0x200 --1回合只能特殊召喚1次(Card.SetSPSummonOnce()) ---count_code -EFFECT_COUNT_CODE_OATH =0x10000000 --发动次数限制(誓约次数, 发动被无效不计数) -EFFECT_COUNT_CODE_DUEL =0x20000000 --决斗中使用次数 -EFFECT_COUNT_CODE_SINGLE =0x1 --同一张卡的多个效果公共使用次数 ---特殊选项 -DUEL_TEST_MODE =0x01 --测试模式(目前暫無) -DUEL_ATTACK_FIRST_TURN =0x02 --第一回合可以攻击(用于残局) -DUEL_NO_CHAIN_HINT =0x04 --N/A -DUEL_OBSOLETE_RULING =0x08 --使用舊規則 -DUEL_PSEUDO_SHUFFLE =0x10 --不洗牌 -DUEL_TAG_MODE =0x20 --双打PP -DUEL_SIMPLE_AI =0x40 --AI(用于残局) ---Activity counter ---global: 1-6 (binary: 5,6) ---custom: 1-5,7 (binary: 1-5) -ACTIVITY_SUMMON =1 -- -ACTIVITY_NORMALSUMMON =2 -- -ACTIVITY_SPSUMMON =3 -- -ACTIVITY_FLIPSUMMON =4 -- -ACTIVITY_ATTACK =5 -- -ACTIVITY_BATTLE_PHASE =6 -- not available in custom counter -ACTIVITY_CHAIN =7 -- only available in custom counter ---announce type(宣言类型,CATEGORY_ANNOUNCE的OperationInfo的target_param) -ANNOUNCE_CARD =0x7 --宣言卡片 ---cards with double names -CARD_MARINE_DOLPHIN =78734254 --海洋海豚 -CARD_TWINKLE_MOSS =13857930 --光輝苔蘚 +--min/max value +MIN_ID =1000 --4 digit, by DataManager::GetDesc() +MAX_ID =999999999 --9 digit, by DataManager::GetDesc() +MAX_COUNTER =65535 --max number for adding/removing counters, by card::add_counter(), field::remove_counter() +--Locations 区域 +LOCATION_DECK =0x01 --卡组 +LOCATION_HAND =0x02 --手牌 +LOCATION_MZONE =0x04 --怪兽区 +LOCATION_SZONE =0x08 --魔陷区 +LOCATION_GRAVE =0x10 --墓地 +LOCATION_REMOVED =0x20 --除外区 +LOCATION_EXTRA =0x40 --额外 +LOCATION_OVERLAY =0x80 --超量素材 +LOCATION_ONFIELD =0x0c --场上(怪兽+魔陷) +--Locations (for redirect) 若在重定向类效果中指定LOCATION_DECK则为弹回卡组顶部 +LOCATION_DECKBOT =0x10001 --弹回卡组底部 +LOCATION_DECKSHF =0x20001 --弹回卡组并洗牌 +--Locations (for SetRange) +LOCATION_FZONE =0x100 --场地区 +LOCATION_PZONE =0x200 --灵摆区 +--Positions 表示形式 +POS_FACEUP_ATTACK =0x1 --表侧攻击 +POS_FACEDOWN_ATTACK =0x2 --里侧攻击 +POS_FACEUP_DEFENSE =0x4 --表侧守备 +POS_FACEDOWN_DEFENSE =0x8 --里侧守备 +POS_FACEUP =0x5 --正面表示 +POS_FACEDOWN =0xa --背面表示 +POS_ATTACK =0x3 --攻击表示 +POS_DEFENSE =0xc --守备表示 +NO_FLIP_EFFECT =0x10000--不发动反转效果 +--Types 卡片类型 +TYPE_MONSTER =0x1 --怪兽卡 +TYPE_SPELL =0x2 --魔法卡 +TYPE_TRAP =0x4 --陷阱卡 +TYPE_NORMAL =0x10 --通常怪兽 +TYPE_EFFECT =0x20 --效果 +TYPE_FUSION =0x40 --融合 +TYPE_RITUAL =0x80 --仪式 +TYPE_TRAPMONSTER =0x100 --陷阱怪兽 +TYPE_SPIRIT =0x200 --灵魂 +TYPE_UNION =0x400 --同盟 +TYPE_DUAL =0x800 --二重 +TYPE_TUNER =0x1000 --调整 +TYPE_SYNCHRO =0x2000 --同调 +TYPE_TOKEN =0x4000 --衍生物 +TYPE_QUICKPLAY =0x10000 --速攻 +TYPE_CONTINUOUS =0x20000 --永续 +TYPE_EQUIP =0x40000 --装备 +TYPE_FIELD =0x80000 --场地 +TYPE_COUNTER =0x100000 --反击 +TYPE_FLIP =0x200000 --翻转 +TYPE_TOON =0x400000 --卡通 +TYPE_XYZ =0x800000 --超量 +TYPE_PENDULUM =0x1000000 --灵摆 +--Attributes 属性 +ATTRIBUTE_EARTH =0x01 --地 +ATTRIBUTE_WATER =0x02 --水 +ATTRIBUTE_FIRE =0x04 --炎 +ATTRIBUTE_WIND =0x08 --风 +ATTRIBUTE_LIGHT =0x10 --光 +ATTRIBUTE_DARK =0x20 --暗 +ATTRIBUTE_DEVINE =0x40 --神 +--Races 种族 +RACE_ALL =0xffffff --全种族 +RACE_WARRIOR =0x1 --战士 +RACE_SPELLCASTER =0x2 --魔法师 +RACE_FAIRY =0x4 --天使 +RACE_FIEND =0x8 --恶魔 +RACE_ZOMBIE =0x10 --不死 +RACE_MACHINE =0x20 --机械 +RACE_AQUA =0x40 --水 +RACE_PYRO =0x80 --炎 +RACE_ROCK =0x100 --岩石 +RACE_WINDBEAST =0x200 --鸟兽 +RACE_PLANT =0x400 --植物 +RACE_INSECT =0x800 --昆虫 +RACE_THUNDER =0x1000 --雷 +RACE_DRAGON =0x2000 --龙 +RACE_BEAST =0x4000 --兽 +RACE_BEASTWARRIOR =0x8000 --兽战士 +RACE_DINOSAUR =0x10000 --恐龙 +RACE_FISH =0x20000 --鱼 +RACE_SEASERPENT =0x40000 --海龙 +RACE_REPTILE =0x80000 --爬虫 +RACE_PSYCHO =0x100000 --念动力 +RACE_DEVINE =0x200000 --幻神兽 +RACE_CREATORGOD =0x400000 --创造神 +RACE_WYRM =0x800000 --幻龙 +--Reason 卡片到当前位置的原因 +REASON_DESTROY =0x1 --破坏 +REASON_RELEASE =0x2 --解放 +REASON_TEMPORARY =0x4 --暂时 +REASON_MATERIAL =0x8 --作为融合/同调/超量素材或用於儀式/升級召喚 +REASON_SUMMON =0x10 --召唤 +REASON_BATTLE =0x20 --战斗破坏 +REASON_EFFECT =0x40 --效果 +REASON_COST =0x80 --用於代價或無法支付代價而破壞 +REASON_ADJUST =0x100 --调整(御前试合) +REASON_LOST_TARGET =0x200 --失去装备对象(被破坏)/失去叠放对象(不是被破坏) +REASON_RULE =0x400 --规则 +REASON_SPSUMMON =0x800 --特殊召唤 +REASON_DISSUMMON =0x1000 --召唤失败 +REASON_FLIP =0x2000 --翻转 +REASON_DISCARD =0x4000 --丢弃 +REASON_RDAMAGE =0x8000 --回復轉換後的傷害 +REASON_RRECOVER =0x10000 --傷害轉換後的回復 +REASON_RETURN =0x20000 --回到墓地 +REASON_FUSION =0x40000 --用於融合召喚 +REASON_SYNCHRO =0x80000 --用於同调召喚 +REASON_RITUAL =0x100000 --用於仪式召喚 +REASON_XYZ =0x200000 --用於超量召喚 +REASON_REPLACE =0x1000000 --代替 +REASON_DRAW =0x2000000 --抽卡 +REASON_REDIRECT =0x4000000 --改变去向(大宇宙,带菌等) +REASON_REVEAL =0x8000000 --翻开卡组(森罗) +--Location Reason +LOCATION_REASON_TOFIELD =0x1 --Duel.GetLocationCount()預設值,凱薩競技場 +LOCATION_REASON_CONTROL =0x2 --Card.IsControlerCanBeChanged()使用 +--Summon Type --召唤类型 +SUMMON_TYPE_NORMAL =0x10000000 --通常召唤(EFFECT_SUMMON_PROC,EFFECT_SET_PROC 可用Value修改數值) +SUMMON_TYPE_ADVANCE =0x11000000 --上级召唤 +SUMMON_TYPE_DUAL =0x12000000 --再度召唤(二重) +SUMMON_TYPE_FLIP =0x20000000 --翻转召唤 +SUMMON_TYPE_SPECIAL =0x40000000 --特殊召唤(EFFECT_SPSUMMON_PROC,EFFECT_SPSUMMON_PROC_G 可用Value修改數值) +SUMMON_TYPE_FUSION =0x43000000 --融合召唤 +SUMMON_TYPE_RITUAL =0x45000000 --仪式召唤 +SUMMON_TYPE_SYNCHRO =0x46000000 --同调召唤 +SUMMON_TYPE_XYZ =0x49000000 --超量召唤 +SUMMON_TYPE_PENDULUM =0x4a000000 --灵摆召唤 +--Status --卡片当前状态 +STATUS_DISABLED =0x0001 --效果被无效 +STATUS_TO_ENABLE =0x0002 --将变成有效 +STATUS_TO_DISABLE =0x0004 --将变成无效 +STATUS_PROC_COMPLETE =0x0008 --完成正规召唤(解除苏生限制) +STATUS_SET_TURN =0x0010 --在本回合覆盖 +STATUS_NO_LEVEL =0x0020 --无等级 +STATUS_BATTLE_RESULT =0x0040 --傷害計算結果預計要破壞的怪獸 +STATUS_SPSUMMON_STEP =0x0080 --效果特召處理中 +STATUS_FORM_CHANGED =0x0100 --改变过表示形式 +STATUS_SUMMONING =0x0200 --召唤中 +STATUS_EFFECT_ENABLED =0x0400 --卡片準備就緒(不在移動、召喚、魔法陷阱發動中) +STATUS_SUMMON_TURN =0x0800 --在本回合召喚/SET +STATUS_DESTROY_CONFIRMED =0x1000 --破坏确定 +STATUS_LEAVE_CONFIRMED =0x2000 --連鎖處理完後送去墓地的魔法陷阱 +STATUS_BATTLE_DESTROYED =0x4000 --战斗破坏确定後尚未移動 +STATUS_COPYING_EFFECT =0x8000 --复制效果 +STATUS_CHAINING =0x10000 --正在連鎖串中 +STATUS_SUMMON_DISABLED =0x20000 --召唤无效後尚未移動 +STATUS_ACTIVATE_DISABLED =0x40000 --发动无效後尚未移動 +STATUS_EFFECT_REPLACED =0x80000 --效果被替代(红莲霸权) +STATUS_UNION =0x100000 --N/A +STATUS_ATTACK_CANCELED =0x200000 --若其為攻擊者,則攻擊中止 +STATUS_INITIALIZING =0x400000 --初始化.. +STATUS_ACTIVATED =0x800000 --魔法陷阱卡发动過 +STATUS_JUST_POS =0x1000000 --已改變表示形式(用於STATUS_CONTINUOUS_POS判定) +STATUS_CONTINUOUS_POS =0x2000000 --改變後再次設定成其他表示形式 +STATUS_FORBIDDEN =0x4000000 --不能play +STATUS_ACT_FROM_HAND =0x8000000 --從手牌发动 +STATUS_OPPO_BATTLE =0x10000000 --和對手的怪兽戰鬥 +STATUS_FLIP_SUMMON_TURN =0x20000000 --在本回合反转召唤 +STATUS_SPSUMMON_TURN =0x40000000 --在本回合特殊召唤 +--Assume +ASSUME_CODE =1 +ASSUME_TYPE =2 +ASSUME_LEVEL =3 +ASSUME_RANK =4 +ASSUME_ATTRIBUTE =5 +ASSUME_RACE =6 +ASSUME_ATTACK =7 +ASSUME_DEFENSE =8 +--Counter --指示物 +COUNTER_WITHOUT_PERMIT =0x1000 --可以放置在非特定對象的指示物 +COUNTER_NEED_ENABLE =0x2000 --在卡片本身放置上述指示物的標記(卡片守衛) +--Phase --阶段 +PHASE_DRAW =0x01 --抽卡阶段 +PHASE_STANDBY =0x02 --准备阶段 +PHASE_MAIN1 =0x04 --主要阶段1 +PHASE_BATTLE_START =0x08 --战斗阶段开始 +PHASE_BATTLE_STEP =0x10 --战斗步驟 +PHASE_DAMAGE =0x20 --伤害步驟 +PHASE_DAMAGE_CAL =0x40 --伤害计算时 +PHASE_BATTLE =0x80 --战斗阶段結束 +PHASE_MAIN2 =0x100 --主要阶段2 +PHASE_END =0x200 --结束阶段 +--Player --玩家 +PLAYER_NONE =2 --2个玩家都不是 +PLAYER_ALL =3 --2个玩家都是 +--Chain info --连锁信息 +CHAININFO_CHAIN_COUNT =0x01 --连锁数 +CHAININFO_TRIGGERING_EFFECT =0x02 --连锁的效果 +CHAININFO_TRIGGERING_PLAYER =0x04 --连锁的玩家 +CHAININFO_TRIGGERING_CONTROLER =0x08 --连锁的卡的控制者 +CHAININFO_TRIGGERING_LOCATION =0x10 --连锁的位置 +CHAININFO_TRIGGERING_SEQUENCE =0x20 --连锁的位置的编号(指怪兽和魔陷区的格子) +CHAININFO_TARGET_CARDS =0x40 --连锁的效果的对象(以下3个需要在target函数里设置) +CHAININFO_TARGET_PLAYER =0x80 --连锁的效果的对象(玩家) +CHAININFO_TARGET_PARAM =0x100 --连锁的效果的参数值 +CHAININFO_DISABLE_REASON =0x200 --无效的原因 +CHAININFO_DISABLE_PLAYER =0x400 --无效的玩家 +CHAININFO_CHAIN_ID =0x800 --连锁ID +CHAININFO_TYPE =0x1000 --连锁类型 +CHAININFO_EXTTYPE =0x2000 --连锁额外类型 +--========== Reset ========== --重置条件(注意:重置条件可以多个相加) +RESET_SELF_TURN =0x10000000 --自己回合的階段重置 +RESET_OPPO_TURN =0x20000000 --对方回合的階段重置 +RESET_PHASE =0x40000000 --阶段结束重置(一般和上面那些阶段配合使用) +RESET_CHAIN =0x80000000 --连锁结束重置 +RESET_EVENT =0x1000 --指定的條件下重置(一般和下面这些事件配合使用) +RESET_CARD =0x2000 --重置Owner為指定卡片的效果 +RESET_CODE =0x4000 --重置指定Code的single效果(不含EFFECT_FLAG_SINGLE_RANGE) +RESET_COPY =0x8000 --重置以复制取得的效果 +RESET_DISABLE =0x00010000 --效果无效重置(只適用於owner==handler的效果) +RESET_TURN_SET =0x00020000 --变里侧重置 +RESET_TOGRAVE =0x00040000 --去墓地重置(以下皆為事件觸發前重置) +RESET_REMOVE =0x00080000 --除外重置 +RESET_TEMP_REMOVE =0x00100000 --暂时除外重置 +RESET_TOHAND =0x00200000 --回手牌或加入手牌重置 +RESET_TODECK =0x00400000 --回卡组重置 +RESET_LEAVE =0x00800000 --从场上移到其他位置/超量叠放重置 +RESET_TOFIELD =0x01000000 --到场上重置(move_to_field()) +RESET_CONTROL =0x02000000 --控制者变更重置 +RESET_OVERLAY =0x04000000 --超量叠放重置 +RESET_MSCHANGE =0x08000000 --从怪兽区到魔法区,或者从魔法区到怪兽区(move_to_field()、寶玉獸) +--========== Types ========== --效果类型(定义效果触发类型,和codes一起使用) +EFFECT_TYPE_SINGLE =0x0001 --自己状态变化时触发 +EFFECT_TYPE_FIELD =0x0002 --场上所有卡状态变化时触发 +EFFECT_TYPE_EQUIP =0x0004 --装备效果 +EFFECT_TYPE_ACTIONS =0x0008 --触发型,以下類型會自動添加此屬性(对峙的G) +EFFECT_TYPE_ACTIVATE =0x0010 --魔陷发动 +EFFECT_TYPE_FLIP =0x0020 --翻转效果 +EFFECT_TYPE_IGNITION =0x0040 --起动效果 +EFFECT_TYPE_TRIGGER_O =0x0080 --诱发选发效果 +EFFECT_TYPE_QUICK_O =0x0100 --诱发即时效果 +EFFECT_TYPE_TRIGGER_F =0x0200 --诱发必发效果 +EFFECT_TYPE_QUICK_F =0x0400 --诱发即时必发效果(熊猫龙等) +EFFECT_TYPE_CONTINUOUS =0x0800 --由事件觸發的輔助用效果/永續效果 +EFFECT_TYPE_XMATERIAL =0x1000 -- +--========== Flags ========== --效果的特殊性质 +EFFECT_FLAG_INITIAL =0x0001 --可以发动的 +EFFECT_FLAG_FUNC_VALUE =0x0002 --此效果的Value属性是函数 +EFFECT_FLAG_COUNT_LIMIT =0x0004 --发动次数限制 +EFFECT_FLAG_FIELD_ONLY =0x0008 --此效果是注册给全局环境的 +EFFECT_FLAG_CARD_TARGET =0x0010 --取对象效果 +EFFECT_FLAG_IGNORE_RANGE =0x0020 --影响所有区域的卡(禁止令 大宇宙 王宫的铁壁) +EFFECT_FLAG_ABSOLUTE_TARGET =0x0040 --Target Range不会因为控制权的改变而改变 +EFFECT_FLAG_IGNORE_IMMUNE =0x0080 --无视效果免疫 +EFFECT_FLAG_SET_AVAILABLE =0x0100 --影响场上里侧的卡/裡側狀態可發動 +EFFECT_FLAG_CANNOT_NEGATE =0x0200 --含有"此效果不會被無效"的敘述 +EFFECT_FLAG_CANNOT_DISABLE =0x0400 --不会被无效 +EFFECT_FLAG_PLAYER_TARGET =0x0800 --以玩家为对象 +EFFECT_FLAG_BOTH_SIDE =0x1000 --双方都能使用(部分场地,弹压) +EFFECT_FLAG_COPY_INHERIT =0x2000 --若由复制的效果產生則继承其Reset属性 +EFFECT_FLAG_DAMAGE_STEP =0x4000 --可以在伤害步骤发动 +EFFECT_FLAG_DAMAGE_CAL =0x8000 --可以在伤害计算时发动 +EFFECT_FLAG_DELAY =0x10000 --場合型誘發效果、用於永續效果的EFFECT_TYPE_CONTINUOUS、神之化身/恐惧之源的攻击力变化最后计算 +EFFECT_FLAG_SINGLE_RANGE =0x20000 --只对自己有效 +EFFECT_FLAG_UNCOPYABLE =0x40000 --不能复制(效果外文本) +EFFECT_FLAG_OATH =0x80000 --誓约效果 +EFFECT_FLAG_SPSUM_PARAM =0x100000 --指定召喚/规则特殊召唤的位置和表示形式(熔岩魔神) +EFFECT_FLAG_REPEAT =0x200000 --神之化身的攻击力重复计算 +EFFECT_FLAG_NO_TURN_RESET =0x400000 --发条等“这张卡在场上只能发动一次”的效果 +EFFECT_FLAG_EVENT_PLAYER =0x800000 --视为对方玩家的效果(动作?) +EFFECT_FLAG_OWNER_RELATE =0x1000000 --持續成為對象 +EFFECT_FLAG_AVAILABLE_BD =0x2000000 --战斗破坏确定时效果也适用(纳祭之魔 地狱战士) +EFFECT_FLAG_CLIENT_HINT =0x4000000 --客户端提示 +EFFECT_FLAG_CHAIN_UNIQUE =0x8000000 --同一组连锁只能发动一次 +EFFECT_FLAG_NAGA =0x10000000 --N/A +EFFECT_FLAG_COF =0x20000000 --N/A +EFFECT_FLAG_CVAL_CHECK =0x40000000 --以卡为COST的诱发效果需要使用 +EFFECT_FLAG_IMMEDIATELY_APPLY =0x80000000 --卡在发动时效果就立即适用(卡通王國) +--EFFECT_FLAG_XMDETACH =0x100000000 --Effect That Activates by Detaching Xyz Materials as cost + +EFFECT_FLAG2_NAGA =0x0001 --特殊情况时发动不会被无效(神卡纳迦的特殊处理) +EFFECT_FLAG2_COF =0x0002 --通常魔法卡在MP1以外发动(邪恶的仪式的特殊处理) +EFFECT_FLAG2_XMDETACH =0x0004 --Effect That Activates by Detaching Xyz Materials as cost +--========== Codes ========== --对永续性效果表示效果类型(EFFECT开头),对诱发型效果表示触发效果的事件/时点(EVENT开头) +EFFECT_IMMUNE_EFFECT =1 --效果免疫 +EFFECT_DISABLE =2 --效果无效(技能抽取) +EFFECT_CANNOT_DISABLE =3 --效果不能被无效 +EFFECT_SET_CONTROL =4 --设置控制权 +EFFECT_CANNOT_CHANGE_CONTROL =5 --不能改变控制权 +EFFECT_CANNOT_ACTIVATE =6 --玩家不能发动效果 +EFFECT_CANNOT_TRIGGER =7 --卡不能发动效果 +EFFECT_DISABLE_EFFECT =8 --效果无效(聖杯) +EFFECT_DISABLE_CHAIN =9 --在連鎖串中無效(processor.cpp) +EFFECT_DISABLE_TRAPMONSTER =10 --陷阱怪兽无效 +EFFECT_CANNOT_INACTIVATE =12 --发动不能被无效 +EFFECT_CANNOT_DISEFFECT =13 --效果處理時不能被无效 +EFFECT_CANNOT_CHANGE_POSITION =14 --不能改变表示形式 +EFFECT_TRAP_ACT_IN_HAND =15 --陷阱可以从手牌发动 +EFFECT_TRAP_ACT_IN_SET_TURN =16 --陷阱可以在盖放的回合发动 +EFFECT_REMAIN_FIELD =17 --X回合内留在场上(光之护封剑等) +EFFECT_MONSTER_SSET =18 --怪兽可以在魔陷区放置 +EFFECT_CANNOT_SUMMON =20 --不能召唤怪兽 +EFFECT_CANNOT_FLIP_SUMMON =21 --不能翻转召唤怪兽 +EFFECT_CANNOT_SPECIAL_SUMMON =22 --不能特殊召唤怪兽 +EFFECT_CANNOT_MSET =23 --不能覆盖怪兽 +EFFECT_CANNOT_SSET =24 --不能覆盖魔陷 +EFFECT_CANNOT_DRAW =25 --不能抽卡 +EFFECT_CANNOT_DISABLE_SUMMON =26 --召唤不会无效 +EFFECT_CANNOT_DISABLE_SPSUMMON =27 --特殊召唤不会无效 +EFFECT_SET_SUMMON_COUNT_LIMIT =28 --限制每回合放置怪兽次数 +EFFECT_EXTRA_SUMMON_COUNT =29 --增加召唤(通常召唤)次数 +EFFECT_SPSUMMON_CONDITION =30 --特殊召唤条件 +EFFECT_REVIVE_LIMIT =31 --有苏生限制的怪獸 +EFFECT_SUMMON_PROC =32 --召唤规则效果 +EFFECT_LIMIT_SUMMON_PROC =33 --召唤规则限制 +EFFECT_SPSUMMON_PROC =34 --特殊召唤规则 +EFFECT_EXTRA_SET_COUNT =35 --增加盖放(通常召唤)次数 +EFFECT_SET_PROC =36 --放置(通常召唤)规则 +EFFECT_LIMIT_SET_PROC =37 --放置(通常召唤)规则限制 +EFFECT_DEVINE_LIGHT =38 --神圣光辉(魔术礼帽) +EFFECT_CANNOT_DISABLE_FLIP_SUMMON =39 --翻转召唤不会无效 +EFFECT_INDESTRUCTABLE =40 --不会被破坏 +EFFECT_INDESTRUCTABLE_EFFECT =41 --不会被效果破坏 +EFFECT_INDESTRUCTABLE_BATTLE =42 --不会被战斗破坏 +EFFECT_UNRELEASABLE_SUM =43 --不能做上级召唤的祭品 +EFFECT_UNRELEASABLE_NONSUM =44 --不能做上级召唤以外的祭品 +EFFECT_DESTROY_SUBSTITUTE =45 --必選的代替破壞(此卡被破壞時用其他卡代替) +EFFECT_CANNOT_RELEASE =46 --不能进行解放行为 +EFFECT_INDESTRUCTABLE_COUNT =47 --一回合几次不会被破坏 +EFFECT_UNRELEASABLE_EFFECT =48 --不能被解放 +EFFECT_DESTROY_REPLACE =50 --可選的代替破壞(將破壞改成其他動作) +EFFECT_RELEASE_REPLACE =51 --代替解放 +EFFECT_SEND_REPLACE =52 --可以不送去XX而送去OO(甜点城堡等) +EFFECT_CANNOT_DISCARD_HAND =55 --不能丢弃手牌 +EFFECT_CANNOT_DISCARD_DECK =56 --不能把卡组的卡送去墓地 +EFFECT_CANNOT_USE_AS_COST =57 --不能作为COST使用 +EFFECT_CANNOT_PLACE_COUNTER =58 --不能放置counter + +EFFECT_LEAVE_FIELD_REDIRECT =60 --离场时重新指定去向 +EFFECT_TO_HAND_REDIRECT =61 --回手牌时重新指定去向 +EFFECT_TO_DECK_REDIRECT =62 --回卡组时重新指定去向 +EFFECT_TO_GRAVE_REDIRECT =63 --去墓地时重新指定去向 +EFFECT_REMOVE_REDIRECT =64 --除外时重新指定去向 +EFFECT_CANNOT_TO_HAND =65 --不能加入手牌 +EFFECT_CANNOT_TO_DECK =66 --不能回卡组 +EFFECT_CANNOT_REMOVE =67 --不能除外 +EFFECT_CANNOT_TO_GRAVE =68 --不能去墓地 +EFFECT_CANNOT_TURN_SET =69 --不能变里侧 +EFFECT_CANNOT_BE_BATTLE_TARGET =70 --不能成为攻击对象 +EFFECT_CANNOT_BE_EFFECT_TARGET =71 --不能成为效果对象 +EFFECT_IGNORE_BATTLE_TARGET =72 --不能成为攻击对象-鶸型(传说的渔人) +EFFECT_CANNOT_DIRECT_ATTACK =73 --不能直接攻击 +EFFECT_DIRECT_ATTACK =74 --可以直接攻击 +EFFECT_DUAL_STATUS =75 --二重状态 +EFFECT_EQUIP_LIMIT =76 --装备对象限制 +EFFECT_DUAL_SUMMONABLE =77 --可以再度召唤 +EFFECT_REVERSE_DAMAGE =80 --伤害变回复 +EFFECT_REVERSE_RECOVER =81 --回复变伤害 +EFFECT_CHANGE_DAMAGE =82 --改变伤害数值 +EFFECT_REFLECT_DAMAGE =83 --反射伤害 +EFFECT_CANNOT_ATTACK =85 --不能攻击 +EFFECT_CANNOT_ATTACK_ANNOUNCE =86 --不能攻击宣言 +EFFECT_CANNOT_CHANGE_POS_E =87 --不会被卡的效果变成守备表示(攻击性云魔物) +EFFECT_ACTIVATE_COST =90 --发动代价(魔力之枷) +EFFECT_SUMMON_COST =91 --召唤代价 +EFFECT_SPSUMMON_COST =92 --特殊召唤代价(暴君龙) +EFFECT_FLIPSUMMON_COST =93 --翻转召唤代价 +EFFECT_MSET_COST =94 --怪兽放置代价 +EFFECT_SSET_COST =95 --魔陷放置代价 +EFFECT_ATTACK_COST =96 --攻击代价(霞之谷猎鹰) + +EFFECT_UPDATE_ATTACK =100 --改变攻击力(攻击力增加/减少) +EFFECT_SET_ATTACK =101 --设置攻击力(永續型效果、攻擊力變成X特殊召喚) +EFFECT_SET_ATTACK_FINAL =102 --设置最终攻击力(所有入連鎖的改變攻擊力) +EFFECT_SET_BASE_ATTACK =103 --设置原本攻击力 +EFFECT_UPDATE_DEFENSE =104 --改变防御力 +EFFECT_SET_DEFENSE =105 --设置防御力 +EFFECT_SET_DEFENSE_FINAL =106 --设置最终防御力 +EFFECT_SET_BASE_DEFENSE =107 --设置原本防御力 +EFFECT_REVERSE_UPDATE =108 --倒置改变攻击力、防御力(天邪鬼) +EFFECT_SWAP_AD =109 --交换攻防(超級漏洞人) +EFFECT_SWAP_BASE_AD =110 --交换原本攻防 +EFFECT_SWAP_ATTACK_FINAL =111 --設定最終攻擊力(用於交換攻防) +EFFECT_SWAP_DEFENSE_FINAL =112 --設定最終防禦力(用於交換攻防) +EFFECT_ADD_CODE =113 --增加卡名 +EFFECT_CHANGE_CODE =114 --改变卡名 +EFFECT_ADD_TYPE =115 --增加卡片种类(types) +EFFECT_REMOVE_TYPE =116 --删除卡片种类 +EFFECT_CHANGE_TYPE =117 --改变卡片种类 +EFFECT_ADD_RACE =120 --增加种族 +EFFECT_REMOVE_RACE =121 --删除种族 +EFFECT_CHANGE_RACE =122 --改变种族 +EFFECT_ADD_ATTRIBUTE =125 --增加属性 +EFFECT_REMOVE_ATTRIBUTE =126 --删除属性 +EFFECT_CHANGE_ATTRIBUTE =127 --改变属性 +EFFECT_UPDATE_LEVEL =130 --改变等级 +EFFECT_CHANGE_LEVEL =131 --设置等级 +EFFECT_UPDATE_RANK =132 --改变阶级 +EFFECT_CHANGE_RANK =133 --设置阶级 +EFFECT_UPDATE_LSCALE =134 --改变左刻度 +EFFECT_CHANGE_LSCALE =135 --设置左刻度 +EFFECT_UPDATE_RSCALE =136 --改变右刻度 +EFFECT_CHANGE_RSCALE =137 --设置右刻度 +EFFECT_SET_POSITION =140 --設定表示形式 +EFFECT_SELF_DESTROY =141 --不入連鎖的破壞(罪系列等) +EFFECT_SELF_TOGRAVE =142 --不入連鎖的送墓 +EFFECT_DOUBLE_TRIBUTE =150 --可以作为2个祭品 +EFFECT_DECREASE_TRIBUTE =151 --减少祭品 +EFFECT_DECREASE_TRIBUTE_SET =152 --减少放置怪兽的祭品 +EFFECT_EXTRA_RELEASE =153 --必須使用的代替解放(灵魂交错) +EFFECT_TRIBUTE_LIMIT =154 --祭品限制 +EFFECT_EXTRA_RELEASE_SUM =155 --代替召唤解放(帝王的烈旋) +EFFECT_TRIPLE_TRIBUTE =156 +EFFECT_PUBLIC =160 --公开手牌 +EFFECT_COUNTER_PERMIT =0x10000--允许放置指示物类型 +EFFECT_COUNTER_LIMIT =0x20000--允许放置指示物数量 +EFFECT_RCOUNTER_REPLACE =0x30000--代替取除指示物 +EFFECT_LPCOST_CHANGE =170 --改变生命值代价數值 +EFFECT_LPCOST_REPLACE =171 --以其他動作代替生命值代价 +EFFECT_SKIP_DP =180 --跳过抽卡阶段 +EFFECT_SKIP_SP =181 --跳过准备阶段 +EFFECT_SKIP_M1 =182 --跳过主要阶段1 +EFFECT_SKIP_BP =183 --跳过战斗阶段 +EFFECT_SKIP_M2 =184 --跳过主要阶段2 +EFFECT_CANNOT_BP =185 --不能进入战斗阶段 +EFFECT_CANNOT_M2 =186 --不能进入主要阶段2 +EFFECT_CANNOT_EP =187 --不能进入结束阶段 +EFFECT_SKIP_TURN =188 --跳过整个回合 +EFFECT_DEFENSE_ATTACK =190 --可以守备表示攻击 +EFFECT_MUST_ATTACK =191 --必须攻击 +EFFECT_FIRST_ATTACK =192 --必须第一个攻击 +EFFECT_ATTACK_ALL =193 --可以攻击所有怪兽 +EFFECT_EXTRA_ATTACK =194 --增加攻击次数 +EFFECT_MUST_BE_ATTACKED =195 --必须攻击此卡 +EFFECT_ONLY_BE_ATTACKED =196 --只能攻击此卡 +EFFECT_ATTACK_DISABLED =197 --攻击無效(Duel.NegateAttack()專用) +EFFECT_NO_BATTLE_DAMAGE =200 --不会给对方造成战斗伤害 +EFFECT_AVOID_BATTLE_DAMAGE =201 --不会对自己造成战斗伤害 +EFFECT_REFLECT_BATTLE_DAMAGE =202 --反弹战斗伤害 +EFFECT_PIERCE =203 --贯穿伤害 +EFFECT_BATTLE_DESTROY_REDIRECT =204 --战斗破坏时重新指定去向 +EFFECT_BATTLE_DAMAGE_TO_EFFECT =205 --战斗伤害视为效果伤害 +EFFECT_TOSS_COIN_REPLACE =220 --重新抛硬币 +EFFECT_TOSS_DICE_REPLACE =221 --重新掷骰子 +EFFECT_FUSION_MATERIAL =230 --指定融合素材的條件 +EFFECT_CHAIN_MATERIAL =231 --玩家受到連鎖物質的效果影響 +EFFECT_SYNCHRO_MATERIAL =232 --可以当作同调素材 +EFFECT_XYZ_MATERIAL =233 --可以当作超量素材 +EFFECT_FUSION_SUBSTITUTE =234 --代替融合素材 +EFFECT_CANNOT_BE_FUSION_MATERIAL =235--不能做融合素材 +EFFECT_CANNOT_BE_SYNCHRO_MATERIAL =236--不能做同调素材 +EFFECT_SYNCHRO_MATERIAL_CUSTOM =237--同调素材限制 +EFFECT_CANNOT_BE_XYZ_MATERIAL =238--不能做超量素材 +EFFECT_SYNCHRO_LEVEL =240--做同调素材时的等级 +EFFECT_RITUAL_LEVEL =241--做仪式祭品时的等级 +EFFECT_XYZ_LEVEL =242--做超量素材时的等级 +EFFECT_EXTRA_RITUAL_MATERIAL =243--在墓地当做仪式祭品 +EFFECT_NONTUNER =244--同时当作调整以外的怪兽(幻影王 幽骑) +EFFECT_OVERLAY_REMOVE_REPLACE =245--代替去除超量素材 +EFFECT_SCRAP_CHIMERA =246--废铁奇美拉 +EFFECT_TUNE_MAGICIAN_X =247-- +EFFECT_PRE_MONSTER =250 --可存取怪獸的各項數值(Card.AddMonsterAttribute()專用) +EFFECT_MATERIAL_CHECK =251 --检查素材 +EFFECT_DISABLE_FIELD =260 --无效区域(扰乱王等) +EFFECT_USE_EXTRA_MZONE =261 --怪兽区域封锁 +EFFECT_USE_EXTRA_SZONE =262 --魔法区域封锁 +EFFECT_MAX_MZONE =263 --怪獸区格數上限 +EFFECT_MAX_SZONE =264 --魔陷区格數上限 +EFFECT_HAND_LIMIT =270 --手牌数量限制 +EFFECT_DRAW_COUNT =271 --抽卡阶段的抽卡数 +EFFECT_SPIRIT_DONOT_RETURN =280 --灵魂怪兽不返回手牌 +EFFECT_SPIRIT_MAYNOT_RETURN =281 --灵魂怪兽可以不返回手牌 +EFFECT_CHANGE_ENVIRONMENT =290 --改变场地 +EFFECT_NECRO_VALLEY =291 --王家长眠之谷 +EFFECT_FORBIDDEN =292 --不能Play(禁止令) +EFFECT_NECRO_VALLEY_IM =293 --不受「王家长眠之谷」的影响 +EFFECT_REVERSE_DECK =294 --翻转卡组 +EFFECT_REMOVE_BRAINWASHING =295 --洗脑解除 +EFFECT_BP_TWICE =296 --2次战斗阶段 +EFFECT_UNIQUE_CHECK =297 --場上只能存在1張(Card.SetUniqueOnField()專用) +EFFECT_MATCH_KILL =300 --Match胜利(胜利龙) +EFFECT_SYNCHRO_CHECK =310 --基因组斗士 +EFFECT_QP_ACT_IN_NTPHAND =311 --对方回合从自己手卡发动(失乐的圣女) +EFFECT_MUST_BE_SMATERIAL =312 --必须作为同调素材(波动龙 声子龙) +EFFECT_TO_GRAVE_REDIRECT_CB =313 --重新指定去向(寶玉獸) +EFFECT_CHANGE_LEVEL_FINAL =314 --設定最終等級(銀河女王之光) +EFFECT_CHANGE_RANK_FINAL =315 --設定最終階級 +EFFECT_SPSUMMON_PROC_G =320 --P召唤规则 +EFFECT_SPSUMMON_COUNT_LIMIT =330 --特殊召唤次数限制 +EFFECT_LEFT_SPSUMMON_COUNT =331 --剩餘召喚次數(召喚限制網) +EFFECT_CANNOT_SELECT_BATTLE_TARGET =332 --對手不能選擇為攻擊對象 +EFFECT_CANNOT_SELECT_EFFECT_TARGET =333 --對手不能選擇為效果對象 +EFFECT_ADD_SETCODE =334 --视为「XX」字段的效果 +EFFECT_NO_EFFECT_DAMAGE =335 --玩家已受到"效果傷害變成0"的效果影響 +EFFECT_UNSUMMONABLE_CARD =336 --不能通常召唤的怪獸 +EFFECT_DISABLE_CHAIN_FIELD =337 --N/A +EFFECT_DISCARD_COST_CHANGE =338 --反制陷阱捨棄手牌的代價改變(解放之阿里阿德涅) +EFFECT_HAND_SYNCHRO =339 --用手牌的怪獸當作同步素材 +EFFECT_ADD_FUSION_CODE =340 --作为融合素材时可以当作某一卡名(融合识别) +EFFECT_ADD_FUSION_SETCODE =341 --作为融合素材时可以当作某一字段(魔玩具改造) +EFFECT_RISE_TO_FULL_HEIGHT =342 --仁王立 +EFFECT_ONLY_ATTACK_MONSTER =343 --只能攻擊X +EFFECT_MUST_ATTACK_MONSTER =344 --若攻擊則必須攻擊X +EFFECT_PATRICIAN_OF_DARKNESS =345 --由對手選擇攻擊對象(黑暗貴族) +EFFECT_EXTRA_ATTACK_MONSTER =346 --對怪獸攻擊X次 +EFFECT_UNION_STATUS =347 --同盟状态 +EFFECT_OLDUNION_STATUS =348 --旧同盟状态 +EFFECT_ADD_FUSION_ATTRIBUTE =349 --reserve +EFFECT_REMOVE_FUSION_ATTRIBUTE =350 --reserve +EFFECT_CHANGE_FUSION_ATTRIBUTE =351 --用作融合素材时的属性 +EFFECT_EXTRA_FUSION_MATERIAL =352 -- +EFFECT_CANNOT_LOSE_DECK =400 +EFFECT_CANNOT_LOSE_LP =401 +EFFECT_CANNOT_LOSE_EFFECT =402 +EFFECT_BP_FIRST_TURN =403 +EFFECT_UNSTOPPABLE_ATTACK =404 +EFFECT_ALLOW_NEGATIVE =405 +EFFECT_SELF_ATTACK =406 +EFFECT_BECOME_QUICK =407 +EFFECT_LEVEL_RANK =408 +EFFECT_RANK_LEVEL =409 +EFFECT_LEVEL_RANK_S =410 +EFFECT_RANK_LEVEL_S =411 + +--下面是诱发效果的诱发事件、时点 (如果是TYPE_SINGLE则自己发生以下事件后触发,如果TYPE_FIELD则场上任何卡发生以下事件都触发) +EVENT_STARTUP =1000 --游戏开始时 +EVENT_FLIP =1001 --翻转时 +EVENT_FREE_CHAIN =1002 --自由时点(强脱等,还有昴星团等诱发即时效果) +EVENT_DESTROY =1010 --確定被破壞的卡片移動前 +EVENT_REMOVE =1011 --除外时 +EVENT_TO_HAND =1012 --加入手牌时 +EVENT_TO_DECK =1013 --回卡组时 +EVENT_TO_GRAVE =1014 --送去墓地时(不含REASON_RETURN) +EVENT_LEAVE_FIELD =1015 --离场时 +EVENT_CHANGE_POS =1016 --表示形式变更时 +EVENT_RELEASE =1017 --解放时 +EVENT_DISCARD =1018 --丢弃手牌时 +EVENT_LEAVE_FIELD_P =1019 --永久离场时 +EVENT_CHAIN_SOLVING =1020 --连锁处理开始时(EVENT_CHAIN_ACTIVATING之後) +EVENT_CHAIN_ACTIVATING =1021 --连锁处理准备中 +EVENT_CHAIN_SOLVED =1022 --连锁处理结束时 +EVENT_CHAIN_ACTIVATED =1023 --N/A +EVENT_CHAIN_NEGATED =1024 --连锁发动无效时(EVENT_CHAIN_ACTIVATING之後) +EVENT_CHAIN_DISABLED =1025 --连锁效果无效时 +EVENT_CHAIN_END =1026 --连锁串结束时 +EVENT_CHAINING =1027 --效果发动时 +EVENT_BECOME_TARGET =1028 --成为效果对象时 +EVENT_DESTROYED =1029 --被破坏时 +EVENT_ADJUST =1040 --adjust_all()调整後(御前试合) +EVENT_SUMMON_SUCCESS =1100 --通常召唤成功时 +EVENT_FLIP_SUMMON_SUCCESS =1101 --翻转召唤成功时 +EVENT_SPSUMMON_SUCCESS =1102 --特殊召唤成功时 +EVENT_SUMMON =1103 --召唤之际(怪兽还没上场、神宣等时点) +EVENT_FLIP_SUMMON =1104 --翻转召唤之际 +EVENT_SPSUMMON =1105 --特殊召唤之际 +EVENT_MSET =1106 --放置怪兽时 +EVENT_SSET =1107 --放置魔陷时 +EVENT_BE_MATERIAL =1108 --作为融合/仪式同调/超量素材时 +EVENT_BE_PRE_MATERIAL =1109 --将要作为融合/仪式同调/超量素材时 +EVENT_DRAW =1110 --抽卡时 +EVENT_DAMAGE =1111 --造成战斗/效果伤害时 +EVENT_RECOVER =1112 --回复生命值时 +EVENT_PREDRAW =1113 --抽卡阶段通常抽卡前 +EVENT_CONTROL_CHANGED =1120 --控制权变更 +EVENT_EQUIP =1121 --装备卡装备时 +EVENT_ATTACK_ANNOUNCE =1130 --攻击宣言时 +EVENT_BE_BATTLE_TARGET =1131 --被选为攻击对象时 +EVENT_BATTLE_START =1132 --伤害步骤开始时(反转前) +EVENT_BATTLE_CONFIRM =1133 --伤害计算前(反转後) +EVENT_PRE_DAMAGE_CALCULATE =1134 --伤害计算时(羽斬) +EVENT_DAMAGE_CALCULATING =1135 --N/A +EVENT_PRE_BATTLE_DAMAGE =1136 --即将产生战斗伤害(只能使用EFFECT_TYPE_CONTINUOUS) +EVENT_BATTLE_END =1137 --N/A +EVENT_BATTLED =1138 --伤害计算后(异女、同反转效果时点) +EVENT_BATTLE_DESTROYING =1139 --以战斗破坏怪兽送去墓地时(BF-苍炎之修罗) +EVENT_BATTLE_DESTROYED =1140 --被战斗破坏送去墓地时(杀人番茄等) +EVENT_DAMAGE_STEP_END =1141 --伤害步骤结束时 +EVENT_ATTACK_DISABLED =1142 --攻击无效时(翻倍机会) +EVENT_BATTLE_DAMAGE =1143 --造成战斗伤害时 +EVENT_TOSS_DICE =1150 --掷骰子的结果产生后 +EVENT_TOSS_COIN =1151 --抛硬币的结果产生后 +EVENT_TOSS_COIN_NEGATE =1152 --重新抛硬币 +EVENT_TOSS_DICE_NEGATE =1153 --重新掷骰子 +EVENT_LEVEL_UP =1200 --等级上升时 +EVENT_PAY_LPCOST =1201 --支付生命值时 +EVENT_DETACH_MATERIAL =1202 --去除超量素材时 +EVENT_RETURN_TO_GRAVE =1203 --回到墓地时 +EVENT_TURN_END =1210 --回合结束时 +EVENT_PHASE =0x1000 --阶段结束时 +EVENT_PHASE_START =0x2000 --阶段开始时 +EVENT_ADD_COUNTER =0x10000 --增加指示物时 +EVENT_REMOVE_COUNTER =0x20000 --去除指示物时(A指示物),Card.RemoveCounter()必須手動觸發此事件 +EVENT_CUSTOM =0x10000000 --自訂事件 +--Categorys 效果分类(表示这个效果将要发生什么事,OperationInfo设置了效果分类才能触发针对这一类型发动的卡,如破坏->星尘龙 +CATEGORY_DESTROY =0x1 --破坏效果 +CATEGORY_RELEASE =0x2 --解放效果 +CATEGORY_REMOVE =0x4 --除外效果 +CATEGORY_TOHAND =0x8 --加入手牌效果 +CATEGORY_TODECK =0x10 --回卡组效果 +CATEGORY_TOGRAVE =0x20 --送去墓地效果 +CATEGORY_DECKDES =0x40 --卡组破坏效果 +CATEGORY_HANDES =0x80 --手牌破坏效果 +CATEGORY_SUMMON =0x100 --含召唤的效果 +CATEGORY_SPECIAL_SUMMON =0x200 --含特殊召唤的效果 +CATEGORY_TOKEN =0x400 --含衍生物效果 +CATEGORY_FLIP =0x800 --含翻转效果 +CATEGORY_POSITION =0x1000 --改变表示形式效果 +CATEGORY_CONTROL =0x2000 --改变控制权效果 +CATEGORY_DISABLE =0x4000 --使效果无效效果 +CATEGORY_DISABLE_SUMMON =0x8000 --无效召唤效果 +CATEGORY_DRAW =0x10000 --抽卡效果 +CATEGORY_SEARCH =0x20000 --检索卡组效果 +CATEGORY_EQUIP =0x40000 --装备效果 +CATEGORY_DAMAGE =0x80000 --伤害效果 +CATEGORY_RECOVER =0x100000 --回复效果 +CATEGORY_ATKCHANGE =0x200000 --改变攻击效果 +CATEGORY_DEFCHANGE =0x400000 --改变防御效果 +CATEGORY_COUNTER =0x800000 --指示物效果 +CATEGORY_COIN =0x1000000 --硬币效果 +CATEGORY_DICE =0x2000000 --骰子效果 +CATEGORY_LEAVE_GRAVE =0x4000000 --离开墓地效果 +CATEGORY_LVCHANGE =0x8000000 --改变等级效果 +CATEGORY_NEGATE =0x10000000 --使发动无效效果 +CATEGORY_ANNOUNCE =0x20000000 --發動時宣言卡名的效果 +CATEGORY_FUSION_SUMMON =0x40000000 +--Hint +HINT_EVENT =1 +HINT_MESSAGE =2 +HINT_SELECTMSG =3 +HINT_OPSELECTED =4 +HINT_EFFECT =5 +HINT_RACE =6 +HINT_ATTRIB =7 +HINT_CODE =8 +HINT_NUMBER =9 +HINT_CARD =10 +--Card Hint +CHINT_TURN =1 +CHINT_CARD =2 +CHINT_RACE =3 +CHINT_ATTRIBUTE =4 +CHINT_NUMBER =5 +CHINT_DESC =6 +--Opcode +OPCODE_ADD =0x40000000 +OPCODE_SUB =0x40000001 +OPCODE_MUL =0x40000002 +OPCODE_DIV =0x40000003 +OPCODE_AND =0x40000004 +OPCODE_OR =0x40000005 +OPCODE_NEG =0x40000006 +OPCODE_NOT =0x40000007 +OPCODE_ISCODE =0x40000100 +OPCODE_ISSETCARD =0x40000101 +OPCODE_ISTYPE =0x40000102 +OPCODE_ISRACE =0x40000103 +OPCODE_ISATTRIBUTE =0x40000104 +--Hint Message --提示消息,显示在窗口的上面 +HINTMSG_RELEASE =500 --请选择要解放的卡 +HINTMSG_DISCARD =501 --请选择要丢弃的手牌 +HINTMSG_DESTROY =502 --请选择要破坏的卡 +HINTMSG_REMOVE =503 --请选择要除外的卡 +HINTMSG_TOGRAVE =504 --请选择要送去墓地的卡 +HINTMSG_RTOHAND =505 --请选择要返回手牌的卡 +HINTMSG_ATOHAND =506 --请选择要加入手牌的卡 +HINTMSG_TODECK =507 --请选择要返回卡组的卡 +HINTMSG_SUMMON =508 --请选择要召唤的卡 +HINTMSG_SPSUMMON =509 --请选择要特殊召唤的卡 +HINTMSG_SET =510 --请选择要盖放的卡 +HINTMSG_FMATERIAL =511 --请选择融合召唤的素材 +HINTMSG_SMATERIAL =512 --请选择同调召唤的素材 +HINTMSG_XMATERIAL =513 --请选择超量召唤的素材 +HINTMSG_FACEUP =514 --请选择表侧表示的卡 +HINTMSG_FACEDOWN =515 --请选择里侧表示的卡 +HINTMSG_ATTACK =516 --请选择攻击表示的怪兽 +HINTMSG_DEFENSE =517 --请选择守备表示的怪兽 +HINTMSG_EQUIP =518 --请选择要装备的卡 +HINTMSG_REMOVEXYZ =519 --请选择要取除的超量素材 +HINTMSG_CONTROL =520 --请选择要改变控制权的怪兽 +HINTMSG_DESREPLACE =521 --请选择要代替破坏的卡 +HINTMSG_FACEUPATTACK =522 --请选择表侧攻击表示的怪兽 +HINTMSG_FACEUPDEFENSE =523 --请选择表侧守备表示的怪兽 +HINTMSG_FACEDOWNATTACK =524 --请选择里侧攻击表示的怪兽 +HINTMSG_FACEDOWNDEFENSE =525 --请选择里侧守备表示的怪兽 +HINTMSG_CONFIRM =526 --请选择给对方确认的卡 +HINTMSG_TOFIELD =527 --请选择要放置到场上的卡 +HINTMSG_POSCHANGE =528 --请选择要改变表示形式的怪兽 +HINTMSG_SELF =529 --请选择自己的卡 +HINTMSG_OPPO =530 --请选择对方的卡 +HINTMSG_EFFECT =550 --请选择要发动的效果 +HINTMSG_TARGET =551 --请选择效果的对象 +HINTMSG_COIN =552 --请选择硬币的正反面 +HINTMSG_DICE =553 --请选择骰子的结果 +HINTMSG_CARDTYPE =554 --请选择一个种类 +--Timing --提示时点,可以给freechain卡片增加自动提示时点 +TIMING_DRAW_PHASE =0x1 --抽卡阶段时点 +TIMING_STANDBY_PHASE =0x2 --准备阶段时点 +TIMING_MAIN_END =0x4 --主要阶段结束时点 +TIMING_BATTLE_START =0x8 --战斗阶段开始时点 +TIMING_BATTLE_END =0x10 --战斗阶段结束时点 +TIMING_END_PHASE =0x20 --结束阶段时点 +TIMING_SUMMON =0x40 --召唤时点 +TIMING_SPSUMMON =0x80 --特殊召唤时点 +TIMING_FLIPSUMMON =0x100 --翻转召唤时点 +TIMING_MSET =0x200 --放置怪兽时点 +TIMING_SSET =0x400 --放置魔陷时点 +TIMING_POS_CHANGE =0x800 --表示形式变更时点 +TIMING_ATTACK =0x1000 --攻击宣言时点 +TIMING_DAMAGE_STEP =0x2000 --伤害步骤时点 +TIMING_DAMAGE_CAL =0x4000 --伤害计算时点 +TIMING_CHAIN_END =0x8000 --连锁结束时点 +TIMING_DRAW =0x10000 --抽卡时点(不是抽卡阶段 +TIMING_DAMAGE =0x20000 --造成伤害时点 +TIMING_RECOVER =0x40000 --回复时点 +TIMING_DESTROY =0x80000 --破坏时点 +TIMING_REMOVE =0x100000 --除外时点 +TIMING_TOHAND =0x200000 --加入手牌时点(检索、回收等) +TIMING_TODECK =0x400000 --回卡组时点 +TIMING_TOGRAVE =0x800000 --进墓地时点 +TIMING_BATTLE_PHASE =0x1000000 --战斗阶段时点 +TIMING_EQUIP =0x2000000 --装备时点 +TIMING_BATTLE_STEP_END =0x4000000 --戰鬥步驟結束時 +----组合时点 +TIMINGS_CHECK_MONSTER =0x1c0 -- 怪兽正面上场 +TIMINGS_CHECK_MONSTER_E =0x1e0 -- 怪兽正面上场 + EP +--Global flag --特殊标记 +GLOBALFLAG_DECK_REVERSE_CHECK =0x1 --卡组翻转标记 +GLOBALFLAG_BRAINWASHING_CHECK =0x2 --洗脑解除标记 +GLOBALFLAG_SCRAP_CHIMERA =0x4 --废铁奇美拉标记 +GLOBALFLAG_DELAYED_QUICKEFFECT =0x8 --N/A +GLOBALFLAG_DETACH_EVENT =0x10 --EVENT_DETACH_MATERIAL +GLOBALFLAG_MUST_BE_SMATERIAL =0x20 --必须作为同调素材(波动龙 声子龙) +GLOBALFLAG_SPSUMMON_COUNT =0x40 --玩家的特殊召唤次数限制 +GLOBALFLAG_XMAT_COUNT_LIMIT =0x80 --超量素材数量限制标记(光天使 天座) +GLOBALFLAG_SELF_TOGRAVE =0x100 --不入連鎖的送墓檢查(EFFECT_SELF_TOGRAVE) +GLOBALFLAG_SPSUMMON_ONCE =0x200 --1回合只能特殊召喚1次(Card.SetSPSummonOnce()) +GLOBALFLAG_TUNE_MAGICIAN =0x400 -- +--count_code +EFFECT_COUNT_CODE_OATH =0x10000000 --发动次数限制(誓约次数, 发动被无效不计数) +EFFECT_COUNT_CODE_DUEL =0x20000000 --决斗中使用次数 +EFFECT_COUNT_CODE_SINGLE =0x1 --同一张卡的多个效果公共使用次数 +--特殊选项 +DUEL_TEST_MODE =0x01 --测试模式(目前暫無) +DUEL_ATTACK_FIRST_TURN =0x02 --第一回合可以攻击(用于残局) +DUEL_NO_CHAIN_HINT =0x04 --N/A +DUEL_OBSOLETE_RULING =0x08 --使用舊規則 +DUEL_PSEUDO_SHUFFLE =0x10 --不洗牌 +DUEL_TAG_MODE =0x20 --双打PP +DUEL_SIMPLE_AI =0x40 --AI(用于残局) +--Activity counter +--global: 1-6 (binary: 5,6) +--custom: 1-5,7 (binary: 1-5) +ACTIVITY_SUMMON =1 -- +ACTIVITY_NORMALSUMMON =2 -- +ACTIVITY_SPSUMMON =3 -- +ACTIVITY_FLIPSUMMON =4 -- +ACTIVITY_ATTACK =5 -- +ACTIVITY_BATTLE_PHASE =6 -- not available in custom counter +ACTIVITY_CHAIN =7 -- only available in custom counter +--announce type(宣言类型,CATEGORY_ANNOUNCE的OperationInfo的target_param) +ANNOUNCE_CARD =0x7 --宣言卡片 +ANNOUNCE_CARD_FILTER =0x8 -- +--cards with double names +CARD_MARINE_DOLPHIN =78734254 --海洋海豚 +CARD_TWINKLE_MOSS =13857930 --光輝苔蘚 + +--New constants as of 1.033.A +CARD_BLUEEYES_SPIRIT =59822133 --青眼の精霊龍 +CARD_POLYMERIZATION =24094653 --融合 +CARD_SUMMON_GATE =29724053 --サモン・ゲート + +POS_FACEUP_DEFENCE=POS_FACEUP_DEFENSE +POS_FACEDOWN_DEFENCE=POS_FACEDOWN_DEFENSE diff --git a/script/utility.lua b/script/utility.lua index c733becf..bd9f560d 100644 --- a/script/utility.lua +++ b/script/utility.lua @@ -136,6 +136,28 @@ function Auxiliary.SpiritReturnOperation(e,tp,eg,ep,ev,re,r,rp) Duel.SendtoHand(c,nil,REASON_EFFECT) end end +function Auxiliary.IsUnionState(effect) + local c=effect:GetHandler() + return c:IsHasEffect(EFFECT_UNION_STATUS) +end +function Auxiliary.SetUnionState(c) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_UNION_STATUS) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + if c.old_union then + local e2=e1:Clone() + e2:SetCode(EFFECT_OLDUNION_STATUS) + c:RegisterEffect(e2) + end +end +function Auxiliary.CheckUnionEquip(uc,tc) + ct1,ct2=tc:GetUnionCount() + if uc.old_union then return ct1==0 + else return ct2==0 end +end function Auxiliary.TargetEqualFunction(f,value,a,b,c) return function(effect,target) return f(target,a,b,c)==value @@ -228,97 +250,358 @@ function Auxiliary.AddSynchroProcedure2(c,f1,f2) e1:SetValue(SUMMON_TYPE_SYNCHRO) c:RegisterEffect(e1) end -function Auxiliary.XyzAlterFilter(c,alterf,xyzc) - return alterf(c) and c:IsCanBeXyzMaterial(xyzc) +function Auxiliary.TuneMagFilter2(c,f,tp) + return not f(c,nil,tp) +end +function Auxiliary.XyzAlterFilter(c,alterf,xyzc,tp) + return alterf(c) and c:IsCanBeXyzMaterial(xyzc) and (c:IsControler(tp) or c:IsHasEffect(EFFECT_XYZ_MATERIAL)) end --Xyz monster, lv k*n -function Auxiliary.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op) +function Auxiliary.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op,mustbemat) + --mustbemat for Startime Magician + if not maxct then maxct=ct end + if c.xyz_filter==nil then + local code=c:GetOriginalCode() + local mt=_G["c" .. code] + mt.xyz_filter=function(mc,ignoretoken) return mc and (not f or f(mc)) and mc:IsXyzLevel(c,lv) and (not mc:IsType(TYPE_TOKEN) or ignoretoken) end + mt.minxyzct=ct + mt.maxxyzct=maxct + end + local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) + e1:SetDescription(1073) e1:SetCode(EFFECT_SPSUMMON_PROC) - e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetRange(LOCATION_EXTRA) - if not maxct then maxct=ct end - if alterf then - e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op)) - e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op)) - e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op)) - else - e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct)) - e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct)) - e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct)) - end + e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct,mustbemat)) + e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct,mustbemat)) + e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct,mustbemat)) e1:SetValue(SUMMON_TYPE_XYZ) c:RegisterEffect(e1) + if alterf then + local e2=e1:Clone() + e2:SetDescription(desc) + e2:SetCondition(Auxiliary.XyzCondition2(alterf,op)) + e2:SetTarget(Auxiliary.XyzTarget2(alterf,op)) + e2:SetOperation(Auxiliary.XyzOperation2(alterf,op)) + c:RegisterEffect(e2) + end + if not xyztemp then + xyztemp=true + xyztempg0=Group.CreateGroup() + xyztempg0:KeepAlive() + xyztempg1=Group.CreateGroup() + xyztempg1:KeepAlive() + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + e3:SetCode(EVENT_ADJUST) + e3:SetCountLimit(1) + e3:SetOperation(Auxiliary.XyzMatGenerate) + Duel.RegisterEffect(e3,0) + end +end +function Auxiliary.XyzMatGenerate(e,tp,eg,ep,ev,re,r,rp) + for i=1,15 do + local tck=Duel.CreateToken(0,419) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_XYZ_LEVEL) + e1:SetValue(i) + tck:RegisterEffect(e1) + xyztempg0:AddCard(tck) + end + for i=1,15 do + local tck=Duel.CreateToken(1,419) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_XYZ_LEVEL) + e1:SetValue(i) + tck:RegisterEffect(e1) + xyztempg1:AddCard(tck) + end end --Xyz Summon(normal) -function Auxiliary.XyzCondition(f,lv,minc,maxc) +function Auxiliary.XyzM12(c,f,lv,xyz,xg,mustbemat,tp) + return Auxiliary.XyzMatFilter(c,f,lv,xyz,tp) or Auxiliary.XyzSubMatFilter(c,rk,xyz,xg,mustbemat) +end +function Auxiliary.XyzMatFilter(c,f,lv,xyz,tp) + return c:IsFaceup() and (not f or f(c)) and c:IsXyzLevel(xyz,lv) and c:IsCanBeXyzMaterial(xyz) + and (c:IsControler(tp) or c:IsHasEffect(EFFECT_XYZ_MATERIAL)) +end +function Auxiliary.XyzSubMatFilter(c,f,lv,xyz,xg,mustbemat) + if c:IsLocation(LOCATION_GRAVE) then + --Graveyard Material + return c:IsHasEffect(511002793) and (not f or f(c)) and c:IsXyzLevel(xyz,lv) and c:IsCanBeXyzMaterial(xyz) + else + --Solid Overlay-type OR Orichalcum Chain (minus material) + if mustbemat then return false end + return (c:GetFlagEffect(511000189)==lv and xg:IsExists(Auxiliary.XyzSubFilterChk,1,nil,f,lv,xyz)) or c:IsHasEffect(511002116) + end +end +function Auxiliary.XyzSubFilterChk(c,f,lv,xyz) + return (not f or f(c)) and c:IsXyzLevel(xyz,lv) +end +function Auxiliary.XyzFilterChk(c,mg,xyz,tp,minc,maxc,matg,ct,nodoub,notrip,sg,min,matct,mustbemat) + local tg + local g=mg:Clone() + if matg==nil or matg:GetCount()==0 then tg=Group.CreateGroup() else tg=matg:Clone() end + g:RemoveCard(c) + tg:AddCard(c) + local tsg=false + if sg then + tsg=sg:Clone() + tsg:RemoveCard(c) + end + local gg=tg:Filter(Auxiliary.ValidXyzMaterial,nil) + if gg:IsExists(Auxiliary.TuneMagXyzFilter,1,nil,gg,tp) then return false end + local ctc=ct+1 + local matct2=matct + if not c:IsHasEffect(511002116) and min then + matct2=matct+1 + end + if min and matct2>min then return false end + if (not min or matct2==min) and ctc>=minc and ctc<=maxc then return true end + if ctc>maxc then return false end + local res2=false + local res3=false + --Extra Equip Material + local eqg=c:GetEquipGroup():Filter(Card.IsHasEffect,nil,511001175) + if not sg and not mustbemat then + g:Merge(eqg) + end + local isDouble=false + --Double Material + if not mustbemat and not nodoub and c:IsHasEffect(511001225) and (not c.xyzlimit2 or c.xyzlimit2(xyz)) then + if ctc+1<=maxc then + isDouble=true + res2=true + end + if (not min or matct2==min) and ctc+1>=minc and ctc+1<=maxc then return true end + end + --Triple Material + if not mustbemat and not notrip and c:IsHasEffect(511003001) and (not c.xyzlimit3 or c.xyzlimit3(xyz)) then + if ctc+2<=maxc then + res3=true + end + if (not min or matct2==min) and ctc+2>=minc and ctc+2<=maxc then return true end + end + return g:IsExists(Auxiliary.XyzFilterChk,1,nil,g,xyz,tp,minc,maxc,tg,ctc,false,false,tsg,min,matct2,mustbemat) + or (res2 and g:IsExists(Auxiliary.XyzFilterChk,1,nil,g,xyz,tp,minc,maxc,tg,ctc+1,false,false,tsg,min,matct2,mustbemat)) + or (res3 and g:IsExists(Auxiliary.XyzFilterChk,1,nil,g,xyz,tp,minc,maxc,tg,ctc+2,false,false,tsg,min,matct2,mustbemat)) +end +function Auxiliary.ValidXyzMaterial(c) + return not c:IsHasEffect(511001175) and not c:IsHasEffect(511002116) +end +function Auxiliary.TuneMagXyzFilter(c,g,tp) + return c:IsHasEffect(73941492) and c.xyzlimitfilter and g:IsExists(Auxiliary.TuneMagFilter2,1,c,c.xyzlimitfilter,tp) +end +function Auxiliary.ExtraXyzMaterial(c,g,tp,ct,max) + local gg=g:Filter(Auxiliary.ValidXyzMaterial,nil) + gg:AddCard(c) + if gg:IsExists(Auxiliary.TuneMagXyzFilter,1,nil,gg,tp) then return false end + return ct+1<=max +end +function Auxiliary.XyzCondition(f,lv,minc,maxc,mustbemat) --og: use special material return function(e,c,og,min,max) if c==nil then return true end if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end + local tp=c:GetControler() + local xg=nil + if tp==0 then + xg=xyztempg0 + else + xg=xyztempg1 + end + if xg:GetCount()==0 then return false end local ft=Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE) local ct=-ft - local minc=minc - local maxc=maxc - if min then - if min>minc then minc=min end - if maxmaxc then return false end - end - return ctminc then minc=min end - if max=minc then return false end + local minchk=min + if c:GetFlagEffect(999)~=0 then minchk=nil end + return mg:IsExists(Auxiliary.XyzFilterChk,1,nil,mg,c,tp,minc,maxc,nil,0,false,false,sg,minchk,0,mustbemat) end end -function Auxiliary.XyzOperation(f,lv,minc,maxc) - return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) +function Auxiliary.XyzTarget(f,lv,minc,maxc,mustbemat) + return function(e,tp,eg,ep,ev,re,r,rp,chk,c,og,min,max) if og and not min then - local sg=Group.CreateGroup() - local tc=og:GetFirst() - while tc do - local sg1=tc:GetOverlayGroup() - sg:Merge(sg1) - tc=og:GetNext() + if not og:IsExists(Auxiliary.XyzFilterChk,1,nil,og,c,tp,minc,maxc,nil,0,false,false,og,og:GetCount(),0,mustbemat) then + local matg=Group.CreateGroup() + local mg=og:Clone() + if not mustbemat then + local mg2=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_ONFIELD,0,nil,511002116) + mg:Merge(mg2) + end + local ct=og:GetCount() + tog=og:Clone() + local tc=tog:GetFirst() + local matct=0 + local ct=0 + while tc do + local isDouble=false + if not mustbemat and tc:IsHasEffect(511001225) and (not tc.xyzlimit2 or tc.xyzlimit2(c)) and ct+1minc then minc=min end + if maxminc then minc=min end - if maxmaxc then return false end - end - return ctminc then minc=min end - if max